<?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>184721</bug_id>
          
          <creation_ts>2018-04-17 17:31:06 -0700</creation_ts>
          <short_desc>The InternalFunction hierarchy should be in IsoSubspaces</short_desc>
          <delta_ts>2018-04-19 12:34:27 -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>JavaScriptCore</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Filip Pizlo">fpizlo</reporter>
          <assigned_to name="Filip Pizlo">fpizlo</assigned_to>
          <cc>ews-watchlist</cc>
    
    <cc>saam</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1415386</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2018-04-17 17:31:06 -0700</bug_when>
    <thetext>With the caveat that subclasses of InternalFunction that don&apos;t add new fields may as well share the same IsoSubspace as InternalFunction, since I can&apos;t see a security downside of doing so. They will dynamically figure out what to do based on state in JSCell, JSObject, JSDestructibleObject, and InternalFunction.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1415387</commentid>
    <comment_count>1</comment_count>
      <attachid>338169</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2018-04-17 17:34:02 -0700</bug_when>
    <thetext>Created attachment 338169
possibly the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1415389</commentid>
    <comment_count>2</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-04-17 17:37:12 -0700</bug_when>
    <thetext>Attachment 338169 did not pass style-queue:


ERROR: Source/WebKit/WebProcess/Plugins/Netscape/JSNPMethod.cpp:66:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/bindings/js/WebCoreJSClientData.cpp:38:  Bad include order. Mixing system and custom headers.  [build/include_order] [4]
ERROR: Source/WebKit/WebProcess/Plugins/Netscape/JSNPObject.cpp:534:  More than one command on the same line  [whitespace/newline] [4]
Total errors found: 3 in 31 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1415395</commentid>
    <comment_count>3</comment_count>
      <attachid>338171</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2018-04-17 17:42:52 -0700</bug_when>
    <thetext>Created attachment 338171
maybe the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1415398</commentid>
    <comment_count>4</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-04-17 17:44:20 -0700</bug_when>
    <thetext>Attachment 338171 did not pass style-queue:


ERROR: Source/WebKit/WebProcess/Plugins/Netscape/JSNPMethod.cpp:66:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/bindings/js/WebCoreJSClientData.cpp:38:  Bad include order. Mixing system and custom headers.  [build/include_order] [4]
ERROR: Source/WebKit/WebProcess/Plugins/Netscape/JSNPObject.cpp:534:  More than one command on the same line  [whitespace/newline] [4]
WARNING: File exempt from style guide. Skipping: &quot;Source/JavaScriptCore/API/glib/JSCCallbackFunction.h&quot;
ERROR: Source/JavaScriptCore/API/glib/JSCCallbackFunction.cpp:212:  More than one command on the same line  [whitespace/newline] [4]
Total errors found: 4 in 33 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1415423</commentid>
    <comment_count>5</comment_count>
      <attachid>338180</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2018-04-17 18:46:15 -0700</bug_when>
    <thetext>Created attachment 338180
maybe the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1415426</commentid>
    <comment_count>6</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-04-17 18:48:07 -0700</bug_when>
    <thetext>Attachment 338180 did not pass style-queue:


ERROR: Source/WebKit/WebProcess/Plugins/Netscape/JSNPMethod.cpp:66:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/bindings/js/WebCoreJSClientData.cpp:38:  Bad include order. Mixing system and custom headers.  [build/include_order] [4]
ERROR: Source/WebKit/WebProcess/Plugins/Netscape/JSNPObject.cpp:534:  More than one command on the same line  [whitespace/newline] [4]
WARNING: File exempt from style guide. Skipping: &quot;Source/JavaScriptCore/API/glib/JSCCallbackFunction.h&quot;
ERROR: Source/JavaScriptCore/API/glib/JSCCallbackFunction.cpp:212:  More than one command on the same line  [whitespace/newline] [4]
Total errors found: 4 in 33 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1415427</commentid>
    <comment_count>7</comment_count>
      <attachid>338181</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2018-04-17 19:02:34 -0700</bug_when>
    <thetext>Created attachment 338181
maybe the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1415428</commentid>
    <comment_count>8</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-04-17 19:05:39 -0700</bug_when>
    <thetext>Attachment 338181 did not pass style-queue:


ERROR: Source/WebKit/WebProcess/Plugins/Netscape/JSNPMethod.cpp:66:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/bindings/js/WebCoreJSClientData.cpp:38:  Bad include order. Mixing system and custom headers.  [build/include_order] [4]
ERROR: Source/WebKit/WebProcess/Plugins/Netscape/JSNPObject.cpp:534:  More than one command on the same line  [whitespace/newline] [4]
WARNING: File exempt from style guide. Skipping: &quot;Source/JavaScriptCore/API/glib/JSCCallbackFunction.h&quot;
ERROR: Source/JavaScriptCore/API/glib/JSCCallbackFunction.cpp:212:  More than one command on the same line  [whitespace/newline] [4]
Total errors found: 4 in 33 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1415431</commentid>
    <comment_count>9</comment_count>
      <attachid>338183</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2018-04-17 19:22:03 -0700</bug_when>
    <thetext>Created attachment 338183
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1415432</commentid>
    <comment_count>10</comment_count>
      <attachid>338184</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2018-04-17 19:24:47 -0700</bug_when>
    <thetext>Created attachment 338184
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1415434</commentid>
    <comment_count>11</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-04-17 19:26:10 -0700</bug_when>
    <thetext>Attachment 338184 did not pass style-queue:


ERROR: Source/WebKit/WebProcess/Plugins/Netscape/JSNPMethod.cpp:66:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/bindings/js/WebCoreJSClientData.cpp:38:  Bad include order. Mixing system and custom headers.  [build/include_order] [4]
ERROR: Source/WebKit/WebProcess/Plugins/Netscape/JSNPObject.cpp:534:  More than one command on the same line  [whitespace/newline] [4]
WARNING: File exempt from style guide. Skipping: &quot;Source/JavaScriptCore/API/glib/JSCCallbackFunction.h&quot;
ERROR: Source/JavaScriptCore/API/glib/JSCCallbackFunction.cpp:212:  More than one command on the same line  [whitespace/newline] [4]
Total errors found: 4 in 33 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1415441</commentid>
    <comment_count>12</comment_count>
      <attachid>338188</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2018-04-17 19:52:02 -0700</bug_when>
    <thetext>Created attachment 338188
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1415442</commentid>
    <comment_count>13</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-04-17 19:54:05 -0700</bug_when>
    <thetext>Attachment 338188 did not pass style-queue:


ERROR: Source/WebKit/WebProcess/Plugins/Netscape/JSNPMethod.cpp:66:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/bindings/js/WebCoreJSClientData.cpp:38:  Bad include order. Mixing system and custom headers.  [build/include_order] [4]
ERROR: Source/WebKit/WebProcess/Plugins/Netscape/JSNPObject.cpp:534:  More than one command on the same line  [whitespace/newline] [4]
WARNING: File exempt from style guide. Skipping: &quot;Source/JavaScriptCore/API/glib/JSCCallbackFunction.h&quot;
ERROR: Source/JavaScriptCore/API/glib/JSCCallbackFunction.cpp:212:  More than one command on the same line  [whitespace/newline] [4]
Total errors found: 4 in 33 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1415445</commentid>
    <comment_count>14</comment_count>
      <attachid>338189</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2018-04-17 20:01:02 -0700</bug_when>
    <thetext>Created attachment 338189
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1415447</commentid>
    <comment_count>15</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-04-17 20:04:50 -0700</bug_when>
    <thetext>Attachment 338189 did not pass style-queue:


ERROR: Source/WebKit/WebProcess/Plugins/Netscape/JSNPMethod.cpp:66:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/bindings/js/WebCoreJSClientData.cpp:38:  Bad include order. Mixing system and custom headers.  [build/include_order] [4]
ERROR: Source/WebKit/WebProcess/Plugins/Netscape/JSNPObject.cpp:534:  More than one command on the same line  [whitespace/newline] [4]
WARNING: File exempt from style guide. Skipping: &quot;Source/JavaScriptCore/API/glib/JSCCallbackFunction.h&quot;
ERROR: Source/JavaScriptCore/API/glib/JSCCallbackFunction.cpp:35:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/JavaScriptCore/API/glib/JSCCallbackFunction.cpp:213:  More than one command on the same line  [whitespace/newline] [4]
Total errors found: 5 in 33 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1415748</commentid>
    <comment_count>16</comment_count>
      <attachid>338189</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2018-04-18 15:10:17 -0700</bug_when>
    <thetext>Comment on attachment 338189
the patch

View in context: https://bugs.webkit.org/attachment.cgi?id=338189&amp;action=review

&gt; Source/JavaScriptCore/heap/IsoSubspacePerVM.cpp:65
&gt; +    if (result) {

style nit: I feel result.isNewEntry is easier to read than this (I just had to look up that AddResult has operator bool that returns newEntry).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1415998</commentid>
    <comment_count>17</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2018-04-19 11:15:30 -0700</bug_when>
    <thetext>(In reply to Saam Barati from comment #16)
&gt; Comment on attachment 338189 [details]
&gt; the patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=338189&amp;action=review
&gt; 
&gt; &gt; Source/JavaScriptCore/heap/IsoSubspacePerVM.cpp:65
&gt; &gt; +    if (result) {
&gt; 
&gt; style nit: I feel result.isNewEntry is easier to read than this (I just had
&gt; to look up that AddResult has operator bool that returns newEntry).

Makes sense, will change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1415999</commentid>
    <comment_count>18</comment_count>
      <attachid>338345</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2018-04-19 11:17:39 -0700</bug_when>
    <thetext>Created attachment 338345
patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1416000</commentid>
    <comment_count>19</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-04-19 11:20:02 -0700</bug_when>
    <thetext>Attachment 338345 did not pass style-queue:


ERROR: Source/WebKit/WebProcess/Plugins/Netscape/JSNPMethod.cpp:66:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/bindings/js/WebCoreJSClientData.cpp:38:  Bad include order. Mixing system and custom headers.  [build/include_order] [4]
ERROR: Source/WebKit/WebProcess/Plugins/Netscape/JSNPObject.cpp:534:  More than one command on the same line  [whitespace/newline] [4]
WARNING: File exempt from style guide. Skipping: &quot;Source/JavaScriptCore/API/glib/JSCCallbackFunction.h&quot;
ERROR: Source/JavaScriptCore/API/glib/JSCCallbackFunction.cpp:35:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/JavaScriptCore/API/glib/JSCCallbackFunction.cpp:213:  More than one command on the same line  [whitespace/newline] [4]
Total errors found: 5 in 33 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1416021</commentid>
    <comment_count>20</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2018-04-19 12:33:21 -0700</bug_when>
    <thetext>Landed in https://trac.webkit.org/changeset/230813/webkit</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1416024</commentid>
    <comment_count>21</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-04-19 12:34:27 -0700</bug_when>
    <thetext>&lt;rdar://problem/39572914&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>338169</attachid>
            <date>2018-04-17 17:34:02 -0700</date>
            <delta_ts>2018-04-17 17:42:52 -0700</delta_ts>
            <desc>possibly the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>46294</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjMwNzQxKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ2IEBA
CisyMDE4LTA0LTE3ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
VGhlIEludGVybmFsRnVuY3Rpb24gaGllcmFyY2h5IHNob3VsZCBiZSBpbiBJc29TdWJzcGFjZXMK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4NDcyMQor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAgICAKKyAgICAgICAg
VGhpcyBtb3ZlcyBJbnRlcm5hbEZ1bmN0aW9uIGludG8gYSBJc29TdWJzcGFjZS4gSXQgYWxzbyBt
b3ZlcyBhbGwgc3ViY2xhc3NlcyBpbnRvIElzb1N1YnNwYWNlcywKKyAgICAgICAgYnV0IHN1YmNs
YXNzZXMgdGhhdCBhcmUgdGhlIHNhbWUgc2l6ZSBhcyBJbnRlcm5hbEZ1bmN0aW9uIHNoYXJlIGl0
cyBzdWJzcGFjZS4gSSBkaWQgdGhpcworICAgICAgICBiZWNhdXNlIHRoZSBzdWJjbGFzc2VzIGFw
cGVhciB0byBqdXN0IG92ZXJyaWRlIG1ldGhvZHMsIHdoaWNoIGFyZSBjYWxsZWQgZHluYW1pY2Fs
bHkgdmlhIHRoZQorICAgICAgICBzdHJ1Y3R1cmUgb3IgY2xhc3Mgb2YgdGhlIG9iamVjdC4gU28s
IEkgZG9uJ3Qgc2VlIGEgdHlwZSBjb25mdXNpb24gcmlzayBpZiBVQUYgaXMgdXNlZCB0bworICAg
ICAgICBhbGxvY2F0ZSBvbmUga2luZCBvZiBJbnRlcm5hbEZ1bmN0aW9uIG92ZXIgYW5vdGhlci4K
KworICAgICAgICAqIEFQSS9KU0Jhc2UuaDoKKyAgICAgICAgKiBBUEkvSlNDYWxsYmFja0Z1bmN0
aW9uLmg6CisgICAgICAgICogQVBJL09iakNDYWxsYmFja0Z1bmN0aW9uLmg6CisgICAgICAgIChK
U0M6Ok9iakNDYWxsYmFja0Z1bmN0aW9uOjpzdWJzcGFjZUZvcik6CisgICAgICAgICogQ01ha2VM
aXN0cy50eHQ6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvajoKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBoZWFwL0lzb1N1YnNwYWNl
UGVyVk0uY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6SXNvU3Vic3BhY2VQZXJWTTo6QXV0b3Jl
bW92aW5nSXNvU3Vic3BhY2U6OkF1dG9yZW1vdmluZ0lzb1N1YnNwYWNlKToKKyAgICAgICAgKEpT
Qzo6SXNvU3Vic3BhY2VQZXJWTTo6QXV0b3JlbW92aW5nSXNvU3Vic3BhY2U6On5BdXRvcmVtb3Zp
bmdJc29TdWJzcGFjZSk6CisgICAgICAgIChKU0M6Oklzb1N1YnNwYWNlUGVyVk06Oklzb1N1YnNw
YWNlUGVyVk0pOgorICAgICAgICAoSlNDOjpJc29TdWJzcGFjZVBlclZNOjp+SXNvU3Vic3BhY2VQ
ZXJWTSk6CisgICAgICAgIChKU0M6Oklzb1N1YnNwYWNlUGVyVk06OmZvclZNKToKKyAgICAgICAg
KiBoZWFwL0lzb1N1YnNwYWNlUGVyVk0uaDogQWRkZWQuCisgICAgICAgIChKU0M6Oklzb1N1YnNw
YWNlUGVyVk06OlN1YnNwYWNlUGFyYW1ldGVyczo6U3Vic3BhY2VQYXJhbWV0ZXJzKToKKyAgICAg
ICAgKiBydW50aW1lL0Vycm9yLmg6CisgICAgICAgICogcnVudGltZS9FcnJvckNvbnN0cnVjdG9y
Lmg6CisgICAgICAgICogcnVudGltZS9JbnRlcm5hbEZ1bmN0aW9uLmg6CisgICAgICAgIChKU0M6
OkludGVybmFsRnVuY3Rpb246OnN1YnNwYWNlRm9yKToKKyAgICAgICAgKiBydW50aW1lL0ludGxD
b2xsYXRvckNvbnN0cnVjdG9yLmg6CisgICAgICAgICogcnVudGltZS9JbnRsRGF0ZVRpbWVGb3Jt
YXRDb25zdHJ1Y3Rvci5oOgorICAgICAgICAqIHJ1bnRpbWUvSW50bE51bWJlckZvcm1hdENvbnN0
cnVjdG9yLmg6CisgICAgICAgICogcnVudGltZS9KU0FycmF5QnVmZmVyQ29uc3RydWN0b3IuaDoK
KyAgICAgICAgKiBydW50aW1lL05hdGl2ZUVycm9yQ29uc3RydWN0b3IuaDoKKyAgICAgICAgKiBy
dW50aW1lL1Byb3h5UmV2b2tlLmg6CisgICAgICAgICogcnVudGltZS9SZWdFeHBDb25zdHJ1Y3Rv
ci5oOgorICAgICAgICAqIHJ1bnRpbWUvVk0uY3BwOgorICAgICAgICAoSlNDOjpWTTo6Vk0pOgor
ICAgICAgICAqIHJ1bnRpbWUvVk0uaDoKKwogMjAxOC0wNC0xNyAgQ29tbWl0IFF1ZXVlICA8Y29t
bWl0LXF1ZXVlQHdlYmtpdC5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQg
cjIzMDY5NywgcjIzMDcyMCwgYW5kIHIyMzA3MjQuCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ01ha2VMaXN0cy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0NN
YWtlTGlzdHMudHh0CShyZXZpc2lvbiAyMzA3MjMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Q01ha2VMaXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTUzMSw2ICs1MzEsNyBAQCBzZXQoSmF2
YVNjcmlwdENvcmVfUFJJVkFURV9GUkFNRVdPUktfSEVBCiAgICAgaGVhcC9JbmNyZW1lbnRhbFN3
ZWVwZXIuaAogICAgIGhlYXAvSXNvQ2VsbFNldC5oCiAgICAgaGVhcC9Jc29TdWJzcGFjZS5oCisg
ICAgaGVhcC9Jc29TdWJzcGFjZVBlclZNLmgKICAgICBoZWFwL0xhcmdlQWxsb2NhdGlvbi5oCiAg
ICAgaGVhcC9MaXN0YWJsZUhhbmRsZXIuaAogICAgIGhlYXAvTG9jYWxBbGxvY2F0b3IuaApJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0Cj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dAkocmV2aXNpb24gMjMwNzIzKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC01MDIsNiArNTAy
LDcgQEAgaGVhcC9JbmNyZW1lbnRhbFN3ZWVwZXIuY3BwCiBoZWFwL0lzb0FsaWduZWRNZW1vcnlB
bGxvY2F0b3IuY3BwCiBoZWFwL0lzb0NlbGxTZXQuY3BwCiBoZWFwL0lzb1N1YnNwYWNlLmNwcAor
aGVhcC9Jc29TdWJzcGFjZVBlclZNLmNwcAogaGVhcC9KSVRTdHViUm91dGluZVNldC5jcHAKIGhl
YXAvTGFyZ2VBbGxvY2F0aW9uLmNwcAogaGVhcC9Mb2NhbEFsbG9jYXRvci5jcHAKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNCYXNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL0FQSS9KU0Jhc2UuaAkocmV2aXNpb24gMjMwNzIzKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL0FQSS9KU0Jhc2UuaAkod29ya2luZyBjb3B5KQpAQCAtMTQzLDcgKzE0Myw3
IEBAIEpTX0VYUE9SVCB2b2lkIEpTR2FyYmFnZUNvbGxlY3QoSlNDb250ZXgKIH0KICNlbmRpZgog
Ci0vKiBFbmFibGUgdGhlIE9iamVjdGl2ZS1DIEFQSSBmb3IgcGxhdGZvcm1zIHdpdGggYSBtb2Rl
cm4gcnVudGltZS4gKi8KKy8qIEVuYWJsZSB0aGUgT2JqZWN0aXZlLUMgQVBJIGZvciBwbGF0Zm9y
bXMgd2l0aCBhIG1vZGVybiBydW50aW1lLiBOT1RFOiBUaGlzIGlzIGR1cGxpY2F0ZWQgaW4gVk0u
aC4gKi8KICNpZiAhZGVmaW5lZChKU0NfT0JKQ19BUElfRU5BQkxFRCkKICNpZiAoZGVmaW5lZChf
X2NsYW5nX18pICYmIGRlZmluZWQoX19BUFBMRV9fKSAmJiAoKGRlZmluZWQoX19NQUNfT1NfWF9W
RVJTSU9OX01JTl9SRVFVSVJFRCkgJiYgIWRlZmluZWQoX19pMzg2X18pKSB8fCAoZGVmaW5lZChU
QVJHRVRfT1NfSVBIT05FKSAmJiBUQVJHRVRfT1NfSVBIT05FKSkpCiAjZGVmaW5lIEpTQ19PQkpD
X0FQSV9FTkFCTEVEIDEKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFj
a0Z1bmN0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0Nh
bGxiYWNrRnVuY3Rpb24uaAkocmV2aXNpb24gMjMwNzIzKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL0FQSS9KU0NhbGxiYWNrRnVuY3Rpb24uaAkod29ya2luZyBjb3B5KQpAQCAtMzcsNiArMzcs
MTIgQEAgY2xhc3MgSlNDYWxsYmFja0Z1bmN0aW9uIGZpbmFsIDogcHVibGljIAogcHVibGljOgog
ICAgIHR5cGVkZWYgSW50ZXJuYWxGdW5jdGlvbiBCYXNlOwogCisgICAgdGVtcGxhdGU8dHlwZW5h
bWUgQ2VsbFR5cGU+CisgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0p
CisgICAgeworICAgICAgICByZXR1cm4gJnZtLmNhbGxiYWNrRnVuY3Rpb25TcGFjZTsKKyAgICB9
CisKICAgICBzdGF0aWMgSlNDYWxsYmFja0Z1bmN0aW9uKiBjcmVhdGUoVk0mLCBKU0dsb2JhbE9i
amVjdCosIEpTT2JqZWN0Q2FsbEFzRnVuY3Rpb25DYWxsYmFjaywgY29uc3QgU3RyaW5nJiBuYW1l
KTsKIAogICAgIERFQ0xBUkVfSU5GTzsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkv
T2JqQ0NhbGxiYWNrRnVuY3Rpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvQVBJL09iakNDYWxsYmFja0Z1bmN0aW9uLmgJKHJldmlzaW9uIDIzMDcyMykKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9BUEkvT2JqQ0NhbGxiYWNrRnVuY3Rpb24uaAkod29ya2luZyBjb3B5
KQpAQCAtNDgsNiArNDgsMTIgQEAgY2xhc3MgT2JqQ0NhbGxiYWNrRnVuY3Rpb24gOiBwdWJsaWMg
SW50ZQogcHVibGljOgogICAgIHR5cGVkZWYgSW50ZXJuYWxGdW5jdGlvbiBCYXNlOwogCisgICAg
dGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGU+CisgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJz
cGFjZUZvcihWTSYgdm0pCisgICAgeworICAgICAgICByZXR1cm4gJnZtLm9iakNDYWxsYmFja0Z1
bmN0aW9uU3BhY2U7CisgICAgfQorCiAgICAgc3RhdGljIE9iakNDYWxsYmFja0Z1bmN0aW9uKiBj
cmVhdGUoVk0mLCBKU0dsb2JhbE9iamVjdCosIGNvbnN0IFN0cmluZyYgbmFtZSwgc3RkOjp1bmlx
dWVfcHRyPE9iakNDYWxsYmFja0Z1bmN0aW9uSW1wbD4pOwogICAgIHN0YXRpYyB2b2lkIGRlc3Ry
b3koSlNDZWxsKik7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lv
biAyMzA3MjMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMzQzLDYgKzM0Myw3IEBACiAJ
CTBGNUNGOTg0MUU5RDUzNzcwMEMxODY5MiAvKiBBaXJMb3dlclN0YWNrQXJncy5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY1Q0Y5ODMxRTlENTM3NTAw
QzE4NjkyIC8qIEFpckxvd2VyU3RhY2tBcmdzLmggKi87IH07CiAJCTBGNUNGOTg5MUU5RUQ2NTIw
MEMxODY5MiAvKiBBaXJTdGFja0FsbG9jYXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNUNGOTg3MUU5RUQ2NEUwMEMxODY5MiAvKiBBaXJTdGFj
a0FsbG9jYXRpb24uaCAqLzsgfTsKIAkJMEY1RTBGRDgyMDdDNzI3MzAwOTdGMERFIC8qIERGR0Fi
c3RyYWN0SW50ZXJwcmV0ZXJDbG9iYmVyU3RhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNUUwRkQ2MjA3QzcyNzEwMDk3RjBERSAvKiBERkdBYnN0
cmFjdEludGVycHJldGVyQ2xvYmJlclN0YXRlLmggKi87IH07CisJCTBGNUUwRkU3MjA4NkFENDgw
MDk3RjBERSAvKiBJc29TdWJzcGFjZVBlclZNLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwRjVFMEZFNTIwODZBRDQ2MDA5N0YwREUgLyogSXNvU3Vic3Bh
Y2VQZXJWTS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCTBGNUVGOTFGMTY4NzhGN0QwMDNFNUMyNSAvKiBKSVRUaHVua3MuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNUVGOTFDMTY4NzhGNzgwMDNFNUMy
NSAvKiBKSVRUaHVua3MuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQkwRjVGMDhDRjE0NkM3NjMzMDAwNDcyQTkgLyogVW5jb25kaXRpb25hbEZpbmFs
aXplci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY1
RjA4Q0UxNDZDNzYyRjAwMDQ3MkE5IC8qIFVuY29uZGl0aW9uYWxGaW5hbGl6ZXIuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjYwRkU5MDFGRkMz
NzAyMDAwMzMyMEEgLyogRXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY2MEZFOEUxRkZDMzZGRDAwMDMzMjBB
IC8qIEV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMjM1MCw2ICsyMzUxLDggQEAKIAkJMEY1RDA4NUMx
QjhDRjk5RDAwMTE0M0I0IC8qIERGR05vZGVPcmlnaW4uY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBuYW1lID0gREZHTm9kZU9yaWdpbi5jcHA7IHBhdGggPSBkZmcvREZHTm9kZU9y
aWdpbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNUUwRkQ2MjA3QzcyNzEw
MDk3RjBERSAvKiBERkdBYnN0cmFjdEludGVycHJldGVyQ2xvYmJlclN0YXRlLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERGR0Fic3RyYWN0SW50ZXJwcmV0ZXJDbG9iYmVyU3Rh
dGUuaDsgcGF0aCA9IGRmZy9ERkdBYnN0cmFjdEludGVycHJldGVyQ2xvYmJlclN0YXRlLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNUUwRkQ3MjA3QzcyNzEwMDk3RjBERSAvKiBE
RkdBYnN0cmFjdEludGVycHJldGVyQ2xvYmJlclN0YXRlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgbmFtZSA9IERGR0Fic3RyYWN0SW50ZXJwcmV0ZXJDbG9iYmVyU3RhdGUuY3Bw
OyBwYXRoID0gZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJDbG9iYmVyU3RhdGUuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjVFMEZFNTIwODZBRDQ2MDA5N0YwREUgLyogSXNv
U3Vic3BhY2VQZXJWTS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJc29TdWJz
cGFjZVBlclZNLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGNUUwRkU2MjA4NkFE
NDcwMDk3RjBERSAvKiBJc29TdWJzcGFjZVBlclZNLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IElzb1N1YnNwYWNlUGVyVk0uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkwRjVFRjkxQjE2ODc4Rjc4MDAzRTVDMjUgLyogSklUVGh1bmtzLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpJVFRodW5rcy5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNUVGOTFDMTY4NzhGNzgwMDNFNUMyNSAvKiBKSVRUaHVu
a3MuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSklUVGh1bmtzLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNUYwOENFMTQ2Qzc2MkYwMDA0NzJBOSAvKiBVbmNv
bmRpdGlvbmFsRmluYWxpemVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFVu
Y29uZGl0aW9uYWxGaW5hbGl6ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTU2
OTUsNiArNTY5OCw4IEBACiAJCQkJMEZCNDY3N0IxRkREQTZEODAwM0ZDQjA5IC8qIElzb0NlbGxT
ZXRJbmxpbmVzLmggKi8sCiAJCQkJMEZEQ0UxMkMxRkFGQjRERTAwNkYzOTAxIC8qIElzb1N1YnNw
YWNlLmNwcCAqLywKIAkJCQkwRkRDRTEyQjFGQUZCNERFMDA2RjM5MDEgLyogSXNvU3Vic3BhY2Uu
aCAqLywKKwkJCQkwRjVFMEZFNjIwODZBRDQ3MDA5N0YwREUgLyogSXNvU3Vic3BhY2VQZXJWTS5j
cHAgKi8sCisJCQkJMEY1RTBGRTUyMDg2QUQ0NjAwOTdGMERFIC8qIElzb1N1YnNwYWNlUGVyVk0u
aCAqLywKIAkJCQkwRjc2NkQyOTE1QThDQzM0MDA4RjM2M0UgLyogSklUU3R1YlJvdXRpbmVTZXQu
Y3BwICovLAogCQkJCTBGNzY2RDJBMTVBOENDMzQwMDhGMzYzRSAvKiBKSVRTdHViUm91dGluZVNl
dC5oICovLAogCQkJCTBGMDcwQTQ1MUQ1NDNBODkwMDZFNzIzMiAvKiBMYXJnZUFsbG9jYXRpb24u
Y3BwICovLApAQCAtOTQ5MSw2ICs5NDk2LDcgQEAKIAkJCQk1M0Y4RDIwMDFFODM4N0Q0MDBEMjEx
MTYgLyogV2FzbUJCUVBsYW5JbmxpbmVzLmggaW4gSGVhZGVycyAqLywKIAkJCQlBRDRCMURGQTFE
RjI0NEUyMDA3MUFFMzIgLyogV2FzbUJpbmRpbmcuaCBpbiBIZWFkZXJzICovLAogCQkJCTUyNUMw
RERBMUU5MzU4NDcwMDIxODRDRCAvKiBXYXNtQ2FsbGVlLmggaW4gSGVhZGVycyAqLywKKwkJCQkw
RjVFMEZFNzIwODZBRDQ4MDA5N0YwREUgLyogSXNvU3Vic3BhY2VQZXJWTS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJNTNGRDA0RDQxRDdBQjI5MTAwMzI4N0QzIC8qIFdhc21DYWxsaW5nQ29udmVudGlv
bi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTI2QUM0QjcxRTk3N0M1RDAwMzUwMEUxIC8qIFdhc21D
b2RlQmxvY2suaCBpbiBIZWFkZXJzICovLAogCQkJCUFENDEyQjM0MUU3QjJFOUUwMDhBRjE1NyAv
KiBXYXNtQ29udGV4dC5oIGluIEhlYWRlcnMgKi8sCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9Jc29TdWJzcGFjZVBlclZNLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaGVhcC9Jc29TdWJzcGFjZVBlclZNLmNwcAkobm9uZXhpc3RlbnQpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Jc29TdWJzcGFjZVBlclZNLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMCwwICsxLDczIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
IAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJJc29TdWJzcGFjZVBlclZN
LmgiCisKKyNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjbGFz
cyBJc29TdWJzcGFjZVBlclZNOjpBdXRvcmVtb3ZpbmdJc29TdWJzcGFjZSA6IHB1YmxpYyBJc29T
dWJzcGFjZSB7CitwdWJsaWM6CisgICAgQXV0b3JlbW92aW5nSXNvU3Vic3BhY2UoSXNvU3Vic3Bh
Y2VQZXJWTSYgcGVyVk0sIENTdHJpbmcgbmFtZSwgSGVhcCYgaGVhcCwgSGVhcENlbGxUeXBlKiBo
ZWFwQ2VsbFR5cGUsIHNpemVfdCBzaXplKQorICAgICAgICA6IElzb1N1YnNwYWNlKG5hbWUsIGhl
YXAsIGhlYXBDZWxsVHlwZSwgc2l6ZSkKKyAgICAgICAgLCBtX3BlclZNKHBlclZNKQorICAgIHsK
KyAgICB9CisgICAgCisgICAgfkF1dG9yZW1vdmluZ0lzb1N1YnNwYWNlKCkKKyAgICB7CisgICAg
ICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9wZXJWTS5tX2xvY2spOworICAgICAgICBtX3Bl
clZNLm1fc3Vic3BhY2VQZXJWTS5yZW1vdmUoc3BhY2UoKS5oZWFwKCktPnZtKCkpOworICAgIH0K
KworcHJpdmF0ZToKKyAgICBJc29TdWJzcGFjZVBlclZNJiBtX3BlclZNOworfTsKKworSXNvU3Vi
c3BhY2VQZXJWTTo6SXNvU3Vic3BhY2VQZXJWTShGdW5jdGlvbjxTdWJzcGFjZVBhcmFtZXRlcnMo
Vk0mKT4gc3Vic3BhY2VQYXJhbWV0ZXJzKQorICAgIDogbV9zdWJzcGFjZVBhcmFtZXRlcnMoV1RG
TW92ZShzdWJzcGFjZVBhcmFtZXRlcnMpKQoreworfQorCitJc29TdWJzcGFjZVBlclZNOjp+SXNv
U3Vic3BhY2VQZXJWTSgpCit7CisgICAgVU5SRUFDSEFCTEVfRk9SX1BMQVRGT1JNKCk7Cit9CisK
K0lzb1N1YnNwYWNlJiBJc29TdWJzcGFjZVBlclZNOjpmb3JWTShWTSYgdm0pCit7CisgICAgYXV0
byBsb2NrZXIgPSBob2xkTG9jayhtX2xvY2spOworICAgIGF1dG8gcmVzdWx0ID0gbV9zdWJzcGFj
ZVBlclZNLmFkZCgmdm0sIG51bGxwdHIpOworICAgIGlmIChyZXN1bHQpIHsKKyAgICAgICAgU3Vi
c3BhY2VQYXJhbWV0ZXJzIHBhcmFtcyA9IG1fc3Vic3BhY2VQYXJhbWV0ZXJzKHZtKTsKKyAgICAg
ICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IG5ldyBBdXRvcmVtb3ZpbmdJc29TdWJzcGFjZSgq
dGhpcywgcGFyYW1zLm5hbWUsIHZtLmhlYXAsIHBhcmFtcy5oZWFwQ2VsbFR5cGUsIHBhcmFtcy5z
aXplKTsKKyAgICB9CisgICAgcmV0dXJuICpyZXN1bHQuaXRlcmF0b3ItPnZhbHVlOworfQorCit9
IC8vIG5hbWVzcGFjZSBKU0MKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSXNv
U3Vic3BhY2VQZXJWTS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L0lzb1N1YnNwYWNlUGVyVk0uaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9Jc29TdWJzcGFjZVBlclZNLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw3MyBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
KyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjcHJhZ21h
IG9uY2UKKworI2luY2x1ZGUgIklzb1N1YnNwYWNlLmgiCisjaW5jbHVkZSA8d3RmL0Z1bmN0aW9u
Lmg+CisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvTG9jay5oPgorCitu
YW1lc3BhY2UgSlNDIHsKKworLy8gVGhpcyBpcyBhbiBhcHByb3ByaWF0ZSB3YXkgdG8gc3Rhc2gg
SXNvU3Vic3BhY2VzIGZvciByYXJlbHktdXNlZCBjbGFzc2VzIG9yIGNsYXNzZXMgdGhhdCBhcmUg
bW9zdGx5CisvLyBzdXJlIHRvIGJlIG1haW4tdGhyZWFkLW9ubHkuIEJ1dCBpZiBhIGNsYXNzIHR5
cGljYWxseSBnZXRzIGluc3RhbnRpYXRlZCBmcm9tIG11bHRpcGxlIHRocmVhZHMgYXQKKy8vIG9u
Y2UsIHRoZW4gdGhpcyBpcyBub3QgZ3JlYXQsIGJlY2F1c2UgY29uY3VycmVudCBhbGxvY2F0aW9u
cyB3aWxsIHByb2JhYmx5IGNvbnRlbmQgb24gdGhpcyB0aGluZydzCisvLyBsb2NrLgorY2xhc3Mg
SXNvU3Vic3BhY2VQZXJWTSB7CitwdWJsaWM6CisgICAgc3RydWN0IFN1YnNwYWNlUGFyYW1ldGVy
cyB7CisgICAgICAgIFN1YnNwYWNlUGFyYW1ldGVycygpIHsgfQorICAgICAgICAKKyAgICAgICAg
U3Vic3BhY2VQYXJhbWV0ZXJzKENTdHJpbmcgbmFtZSwgSGVhcENlbGxUeXBlKiBoZWFwQ2VsbFR5
cGUsIHNpemVfdCBzaXplKQorICAgICAgICAgICAgOiBuYW1lKFdURk1vdmUobmFtZSkpCisgICAg
ICAgICAgICAsIGhlYXBDZWxsVHlwZShoZWFwQ2VsbFR5cGUpCisgICAgICAgICAgICAsIHNpemUo
c2l6ZSkKKyAgICAgICAgeworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBDU3RyaW5nIG5h
bWU7CisgICAgICAgIEhlYXBDZWxsVHlwZSogaGVhcENlbGxUeXBlIHsgbnVsbHB0ciB9OworICAg
ICAgICBzaXplX3Qgc2l6ZSB7IDAgfTsKKyAgICB9OworICAgIAorICAgIEpTX0VYUE9SVF9QUklW
QVRFIElzb1N1YnNwYWNlUGVyVk0oRnVuY3Rpb248U3Vic3BhY2VQYXJhbWV0ZXJzKFZNJik+KTsK
KyAgICBKU19FWFBPUlRfUFJJVkFURSB+SXNvU3Vic3BhY2VQZXJWTSgpOworICAgIAorICAgIEpT
X0VYUE9SVF9QUklWQVRFIElzb1N1YnNwYWNlJiBmb3JWTShWTSYpOworCitwcml2YXRlOgorICAg
IGNsYXNzIEF1dG9yZW1vdmluZ0lzb1N1YnNwYWNlOworICAgIGZyaWVuZCBjbGFzcyBBdXRvcmVt
b3ZpbmdJc29TdWJzcGFjZTsKKworICAgIExvY2sgbV9sb2NrOworICAgIEhhc2hNYXA8Vk0qLCBJ
c29TdWJzcGFjZSo+IG1fc3Vic3BhY2VQZXJWTTsKKyAgICBGdW5jdGlvbjxTdWJzcGFjZVBhcmFt
ZXRlcnMoVk0mKT4gbV9zdWJzcGFjZVBhcmFtZXRlcnM7Cit9OworCisjZGVmaW5lIElTT19TVUJT
UEFDRV9QQVJBTUVURVJTKGhlYXBDZWxsVHlwZSwgdHlwZSkgSXNvU3Vic3BhY2VQZXJWTTo6U3Vi
c3BhY2VQYXJhbWV0ZXJzKCJJc29sYXRlZCAiICN0eXBlICIgU3BhY2UiLCAoaGVhcENlbGxUeXBl
KSwgc2l6ZW9mKHR5cGUpKQorCit9IC8vIG5hbWVzcGFjZSBKU0MKKwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9FcnJvci5oCShyZXZpc2lvbiAyMzA3MjMpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9FcnJvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMTUsNiArMTE1
LDEyIEBAIHByaXZhdGU6CiAKIHB1YmxpYzoKICAgICB0eXBlZGVmIEludGVybmFsRnVuY3Rpb24g
QmFzZTsKKyAgICAKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZT4KKyAgICBzdGF0aWMg
SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKKyAgICB7CisgICAgICAgIHJldHVybiAm
dm0uc3RyaWN0TW9kZVR5cGVFcnJvckZ1bmN0aW9uU3BhY2U7CisgICAgfQogCiAgICAgc3RhdGlj
IFN0cmljdE1vZGVUeXBlRXJyb3JGdW5jdGlvbiogY3JlYXRlKFZNJiB2bSwgU3RydWN0dXJlKiBz
dHJ1Y3R1cmUsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKICAgICB7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9FcnJvckNvbnN0cnVjdG9yLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JDb25zdHJ1Y3Rvci5oCShyZXZpc2lvbiAy
MzA3MjMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvckNvbnN0cnVjdG9y
LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw2IEBACiAvKgogICogIENvcHlyaWdodCAoQykg
MTk5OS0yMDAwIEhhcnJpIFBvcnRlbiAocG9ydGVuQGtkZS5vcmcpCi0gKiAgQ29weXJpZ2h0IChD
KSAyMDA4LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogIENvcHlyaWdo
dCAoQykgMjAwOC0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiAg
VGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFu
ZC9vcgogICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2Vu
ZXJhbCBQdWJsaWMKQEAgLTMxLDYgKzMxLDEyIEBAIGNsYXNzIEVycm9yQ29uc3RydWN0b3IgZmlu
YWwgOiBwdWJsaWMgSW4KIHB1YmxpYzoKICAgICB0eXBlZGVmIEludGVybmFsRnVuY3Rpb24gQmFz
ZTsKIAorICAgIHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlPgorICAgIHN0YXRpYyBJc29TdWJz
cGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQorICAgIHsKKyAgICAgICAgcmV0dXJuICZ2bS5lcnJv
ckNvbnN0cnVjdG9yU3BhY2U7CisgICAgfQorCiAgICAgc3RhdGljIEVycm9yQ29uc3RydWN0b3Iq
IGNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBFcnJvclByb3RvdHlwZSogZXJy
b3JQcm90b3R5cGUsIEdldHRlclNldHRlciopCiAgICAgewogICAgICAgICBFcnJvckNvbnN0cnVj
dG9yKiBjb25zdHJ1Y3RvciA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEVycm9yQ29uc3Ry
dWN0b3I+KHZtLmhlYXApKSBFcnJvckNvbnN0cnVjdG9yKHZtLCBzdHJ1Y3R1cmUpOwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50ZXJuYWxGdW5jdGlvbi5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGVybmFsRnVuY3Rpb24uaAko
cmV2aXNpb24gMjMwNzIzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50ZXJu
YWxGdW5jdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw2ICszOCwxMyBAQCBwdWJsaWM6CiAg
ICAgdHlwZWRlZiBKU0Rlc3RydWN0aWJsZU9iamVjdCBCYXNlOwogICAgIHN0YXRpYyBjb25zdCB1
bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgSW1wbGVtZW50
c0hhc0luc3RhbmNlIHwgSW1wbGVtZW50c0RlZmF1bHRIYXNJbnN0YW5jZSB8IFR5cGVPZlNob3Vs
ZENhbGxHZXRDYWxsRGF0YTsKIAorICAgIHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlPgorICAg
IHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQorICAgIHsKKyAgICAgICAg
c3RhdGljX2Fzc2VydChzaXplb2YoQ2VsbFR5cGUpID09IHNpemVvZihJbnRlcm5hbEZ1bmN0aW9u
KSwgIkludGVybmFsRnVuY3Rpb24gc3ViY2xhc3NlcyB0aGF0IGFkZCBmaWVsZHMgbmVlZCB0byBv
dmVycmlkZSBzdWJzcGFjZUZvcjw+KCkiKTsKKyAgICAgICAgcmV0dXJuICZ2bS5pbnRlcm5hbEZ1
bmN0aW9uU3BhY2U7CisgICAgfQorCiAgICAgREVDTEFSRV9FWFBPUlRfSU5GTzsKIAogICAgIEpT
X0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZp
c2l0b3ImKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxDb2xsYXRv
ckNvbnN0cnVjdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSW50bENvbGxhdG9yQ29uc3RydWN0b3IuaAkocmV2aXNpb24gMjMwNzIzKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bENvbGxhdG9yQ29uc3RydWN0b3IuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQW5keSBW
YW5XYWdvbmVyICh0aGV0YWxlY3JhZnRlckBnbWFpbC5jb20pCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCkBAIC0zOSw2ICs0MCwxMiBAQCBwdWJsaWM6CiAgICAgdHlwZWRlZiBJbnRlcm5h
bEZ1bmN0aW9uIEJhc2U7CiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdz
ID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBIYXNTdGF0aWNQcm9wZXJ0eVRhYmxlOwogCisgICAg
dGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGU+CisgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJz
cGFjZUZvcihWTSYgdm0pCisgICAgeworICAgICAgICByZXR1cm4gJnZtLmludGxDb2xsYXRvckNv
bnN0cnVjdG9yU3BhY2U7CisgICAgfQorCiAgICAgc3RhdGljIEludGxDb2xsYXRvckNvbnN0cnVj
dG9yKiBjcmVhdGUoVk0mLCBTdHJ1Y3R1cmUqLCBJbnRsQ29sbGF0b3JQcm90b3R5cGUqLCBTdHJ1
Y3R1cmUqKTsKICAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mLCBKU0ds
b2JhbE9iamVjdCosIEpTVmFsdWUpOwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9JbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvci5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yLmgJ
KHJldmlzaW9uIDIzMDcyMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxE
YXRlVGltZUZvcm1hdENvbnN0cnVjdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw2IEBA
CiAvKgogICogQ29weXJpZ2h0IChDKSAyMDE1IEFuZHkgVmFuV2Fnb25lciAodGhldGFsZWNyYWZ0
ZXJAZ21haWwuY29tKQorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzksNiArNDAs
MTIgQEAgcHVibGljOgogICAgIHR5cGVkZWYgSW50ZXJuYWxGdW5jdGlvbiBCYXNlOwogICAgIHN0
YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdz
IHwgSGFzU3RhdGljUHJvcGVydHlUYWJsZTsKIAorICAgIHRlbXBsYXRlPHR5cGVuYW1lIENlbGxU
eXBlPgorICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQorICAgIHsK
KyAgICAgICAgcmV0dXJuICZ2bS5pbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3RvclNwYWNlOwor
ICAgIH0KKwogICAgIHN0YXRpYyBJbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3RvciogY3JlYXRl
KFZNJiwgU3RydWN0dXJlKiwgSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlKiwgU3RydWN0dXJl
Kik7CiAgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiwgSlNHbG9iYWxP
YmplY3QqLCBKU1ZhbHVlKTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yLmgJKHJldmlzaW9u
IDIzMDcyMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3Jt
YXRDb25zdHJ1Y3Rvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENv
cHlyaWdodCAoQykgMjAxNSBBbmR5IFZhbldhZ29uZXIgKHRoZXRhbGVjcmFmdGVyQGdtYWlsLmNv
bSkKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM5LDYgKzQwLDEyIEBAIHB1Ymxp
YzoKICAgICB0eXBlZGVmIEludGVybmFsRnVuY3Rpb24gQmFzZTsKICAgICBzdGF0aWMgY29uc3Qg
dW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IEhhc1N0YXRp
Y1Byb3BlcnR5VGFibGU7CiAKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZT4KKyAgICBz
dGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKKyAgICB7CisgICAgICAgIHJl
dHVybiAmdm0uaW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yU3BhY2U7CisgICAgfQorCiAgICAg
c3RhdGljIEludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3RvciogY3JlYXRlKFZNJiwgU3RydWN0dXJl
KiwgSW50bE51bWJlckZvcm1hdFByb3RvdHlwZSosIFN0cnVjdHVyZSopOwogICAgIHN0YXRpYyBT
dHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSk7
CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJDb25z
dHJ1Y3Rvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
QXJyYXlCdWZmZXJDb25zdHJ1Y3Rvci5oCShyZXZpc2lvbiAyMzA3MjMpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyQ29uc3RydWN0b3IuaAkod29ya2luZyBj
b3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTYgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMTgg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCkBAIC0zNyw2ICszNywxMiBAQCBjbGFzcyBKU0FycmF5QnVmZmVyQ29uc3RydWN0b3Ig
ZmluYWwgOiBwCiBwdWJsaWM6CiAgICAgdHlwZWRlZiBJbnRlcm5hbEZ1bmN0aW9uIEJhc2U7CiAK
KyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZT4KKyAgICBzdGF0aWMgSXNvU3Vic3BhY2Uq
IHN1YnNwYWNlRm9yKFZNJiB2bSkKKyAgICB7CisgICAgICAgIHJldHVybiAmdm0uYXJyYXlCdWZm
ZXJDb25zdHJ1Y3RvclNwYWNlOworICAgIH0KKwogcHJvdGVjdGVkOgogICAgIEpTQXJyYXlCdWZm
ZXJDb25zdHJ1Y3RvcihWTSYsIFN0cnVjdHVyZSosIEFycmF5QnVmZmVyU2hhcmluZ01vZGUpOwog
ICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mLCBKU0FycmF5QnVmZmVyUHJvdG90eXBlKiwgR2V0
dGVyU2V0dGVyKiBzcGVjaWVzU3ltYm9sKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL05hdGl2ZUVycm9yQ29uc3RydWN0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9OYXRpdmVFcnJvckNvbnN0cnVjdG9yLmgJKHJldmlzaW9uIDIz
MDcyMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05hdGl2ZUVycm9yQ29uc3Ry
dWN0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtMSw2ICsxLDYgQEAKIC8qCiAgKiAgQ29weXJpZ2h0
IChDKSAxOTk5LTIwMDAgSGFycmkgUG9ydGVuIChwb3J0ZW5Aa2RlLm9yZykKLSAqICBDb3B5cmln
aHQgKEMpIDIwMDggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogIENvcHlyaWdo
dCAoQykgMjAwOC0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiAg
VGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFu
ZC9vcgogICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2Vu
ZXJhbCBQdWJsaWMKQEAgLTMzLDYgKzMzLDEyIEBAIGNsYXNzIE5hdGl2ZUVycm9yQ29uc3RydWN0
b3IgZmluYWwgOiBwdWIKIHB1YmxpYzoKICAgICB0eXBlZGVmIEludGVybmFsRnVuY3Rpb24gQmFz
ZTsKIAorICAgIHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlPgorICAgIHN0YXRpYyBJc29TdWJz
cGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQorICAgIHsKKyAgICAgICAgcmV0dXJuICZ2bS5uYXRp
dmVFcnJvckNvbnN0cnVjdG9yU3BhY2U7CisgICAgfQorCiAgICAgc3RhdGljIE5hdGl2ZUVycm9y
Q29uc3RydWN0b3IqIGNyZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IFN0cnVjdHVyZSogc3RydWN0dXJlLCBTdHJ1Y3R1cmUqIHByb3RvdHlwZVN0cnVjdHVyZSwgY29u
c3QgU3RyaW5nJiBuYW1lKQogICAgIHsKICAgICAgICAgTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvciog
Y29uc3RydWN0b3IgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxOYXRpdmVFcnJvckNvbnN0
cnVjdG9yPih2bS5oZWFwKSkgTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvcih2bSwgc3RydWN0dXJlKTsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3h5UmV2b2tlLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJveHlSZXZva2UuaAkocmV2
aXNpb24gMjMwNzIzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJveHlSZXZv
a2UuaAkod29ya2luZyBjb3B5KQpAQCAtMzYsNiArMzYsMTIgQEAgcHVibGljOgogICAgIHR5cGVk
ZWYgSW50ZXJuYWxGdW5jdGlvbiBCYXNlOwogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1
Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzOwogCisgICAgdGVtcGxhdGU8dHlwZW5h
bWUgQ2VsbFR5cGU+CisgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0p
CisgICAgeworICAgICAgICByZXR1cm4gJnZtLnByb3h5UmV2b2tlU3BhY2U7CisgICAgfQorCiAg
ICAgc3RhdGljIFByb3h5UmV2b2tlKiBjcmVhdGUoVk0mLCBTdHJ1Y3R1cmUqLCBQcm94eU9iamVj
dCopOwogCiAgICAgREVDTEFSRV9JTkZPOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvUmVnRXhwQ29uc3RydWN0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9SZWdFeHBDb25zdHJ1Y3Rvci5oCShyZXZpc2lvbiAyMzA3MjMpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBDb25zdHJ1Y3Rvci5oCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDYgKzEsNiBAQAogLyoKICAqICBDb3B5cmlnaHQgKEMpIDE5OTktMjAwMCBI
YXJyaSBQb3J0ZW4gKHBvcnRlbkBrZGUub3JnKQotICogIENvcHlyaWdodCAoQykgMjAwMywgMjAw
Ny0yMDA4LCAyMDE2IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqICBDb3B5cmln
aHQgKEMpIDIwMDMtMjAxOCBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgKgogICog
IFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBh
bmQvb3IKICAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdl
bmVyYWwgUHVibGljCkBAIC0zNSw2ICszNSwxMiBAQCBwdWJsaWM6CiAgICAgdHlwZWRlZiBJbnRl
cm5hbEZ1bmN0aW9uIEJhc2U7CiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZs
YWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBIYXNTdGF0aWNQcm9wZXJ0eVRhYmxlOwogCisg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGU+CisgICAgc3RhdGljIElzb1N1YnNwYWNlKiBz
dWJzcGFjZUZvcihWTSYgdm0pCisgICAgeworICAgICAgICByZXR1cm4gJnZtLnJlZ0V4cENvbnN0
cnVjdG9yU3BhY2U7CisgICAgfQorCiAgICAgc3RhdGljIFJlZ0V4cENvbnN0cnVjdG9yKiBjcmVh
dGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUmVnRXhwUHJvdG90eXBlKiByZWdFeHBQ
cm90b3R5cGUsIEdldHRlclNldHRlciogc3BlY2llcykKICAgICB7CiAgICAgICAgIFJlZ0V4cENv
bnN0cnVjdG9yKiBjb25zdHJ1Y3RvciA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPFJlZ0V4
cENvbnN0cnVjdG9yPih2bS5oZWFwKSkgUmVnRXhwQ29uc3RydWN0b3Iodm0sIHN0cnVjdHVyZSwg
cmVnRXhwUHJvdG90eXBlKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZN
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAJ
KHJldmlzaW9uIDIzMDcyMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNDEsNiArNDEsOCBAQAogI2luY2x1ZGUgIkRGR1dvcmtsaXN0
LmgiCiAjaW5jbHVkZSAiRGlyZWN0RXZhbEV4ZWN1dGFibGUuaCIKICNpbmNsdWRlICJEaXNhc3Nl
bWJsZXIuaCIKKyNpbmNsdWRlICJFcnJvci5oIgorI2luY2x1ZGUgIkVycm9yQ29uc3RydWN0b3Iu
aCIKICNpbmNsdWRlICJFcnJvckluc3RhbmNlLmgiCiAjaW5jbHVkZSAiRXZhbENvZGVCbG9jay5o
IgogI2luY2x1ZGUgIkV4Y2VwdGlvbi5oIgpAQCAtNjQsMTQgKzY2LDE5IEBACiAjaW5jbHVkZSAi
SW5mZXJyZWRUeXBlVGFibGUuaCIKICNpbmNsdWRlICJJbmZlcnJlZFZhbHVlLmgiCiAjaW5jbHVk
ZSAiSW50ZXJwcmV0ZXIuaCIKKyNpbmNsdWRlICJJbnRsQ29sbGF0b3JDb25zdHJ1Y3Rvci5oIgor
I2luY2x1ZGUgIkludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yLmgiCisjaW5jbHVkZSAiSW50
bE51bWJlckZvcm1hdENvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAiSklUQ29kZS5oIgogI2luY2x1
ZGUgIkpJVFdvcmtsaXN0LmgiCiAjaW5jbHVkZSAiSlNBUElWYWx1ZVdyYXBwZXIuaCIKICNpbmNs
dWRlICJKU0FycmF5LmgiCisjaW5jbHVkZSAiSlNBcnJheUJ1ZmZlckNvbnN0cnVjdG9yLmgiCiAj
aW5jbHVkZSAiSlNBc3luY0Z1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNCaWdJbnQuaCIKICNpbmNs
dWRlICJKU0JvdW5kRnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCisjaW5jbHVk
ZSAiSlNDYWxsYmFja0Z1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNDdXN0b21HZXR0ZXJTZXR0ZXJG
dW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTRGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmgi
CiAjaW5jbHVkZSAiSlNGaXhlZEFycmF5LmgiCkBAIC0xMDMsMTYgKzExMCwyMCBAQAogI2luY2x1
ZGUgIk1pbmltdW1SZXNlcnZlZFpvbmVTaXplLmgiCiAjaW5jbHVkZSAiTW9kdWxlUHJvZ3JhbUNv
ZGVCbG9jay5oIgogI2luY2x1ZGUgIk1vZHVsZVByb2dyYW1FeGVjdXRhYmxlLmgiCisjaW5jbHVk
ZSAiTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUgIk5hdGl2ZUV4ZWN1dGFibGUu
aCIKICNpbmNsdWRlICJOYXRpdmVTdGRGdW5jdGlvbkNlbGwuaCIKICNpbmNsdWRlICJOb2Rlcy5o
IgorI2luY2x1ZGUgIk9iakNDYWxsYmFja0Z1bmN0aW9uLmgiCiAjaW5jbHVkZSAiUGFyc2VyLmgi
CiAjaW5jbHVkZSAiUHJvZmlsZXJEYXRhYmFzZS5oIgogI2luY2x1ZGUgIlByb2dyYW1Db2RlQmxv
Y2suaCIKICNpbmNsdWRlICJQcm9ncmFtRXhlY3V0YWJsZS5oIgogI2luY2x1ZGUgIlByb21pc2VE
ZWZlcnJlZFRpbWVyLmgiCiAjaW5jbHVkZSAiUHJvcGVydHlNYXBIYXNoVGFibGUuaCIKKyNpbmNs
dWRlICJQcm94eVJldm9rZS5oIgogI2luY2x1ZGUgIlJlZ0V4cENhY2hlLmgiCisjaW5jbHVkZSAi
UmVnRXhwQ29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJSZWdFeHBPYmplY3QuaCIKICNpbmNsdWRl
ICJSZWdpc3RlckF0T2Zmc2V0TGlzdC5oIgogI2luY2x1ZGUgIlJ1bnRpbWVUeXBlLmgiCkBAIC0y
NTQsMTEgKzI2NSwxNCBAQCBWTTo6Vk0oVk1UeXBlIHZtVHlwZSwgSGVhcFR5cGUgaGVhcFR5cGUp
CiAgICAgLCBkZXN0cnVjdGlibGVPYmplY3RTcGFjZSgiSlNEZXN0cnVjdGlibGVPYmplY3QiLCBo
ZWFwLCBkZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuZ2V0KCksIGZhc3RNYWxsb2NBbGxv
Y2F0b3IuZ2V0KCkpCiAgICAgLCBlYWdlcmx5U3dlcHREZXN0cnVjdGlibGVPYmplY3RTcGFjZSgi
RWFnZXJseSBTd2VwdCBKU0Rlc3RydWN0aWJsZU9iamVjdCIsIGhlYXAsIGRlc3RydWN0aWJsZU9i
amVjdEhlYXBDZWxsVHlwZS5nZXQoKSwgZmFzdE1hbGxvY0FsbG9jYXRvci5nZXQoKSkKICAgICAs
IHNlZ21lbnRlZFZhcmlhYmxlT2JqZWN0U3BhY2UoIkpTU2VnbWVudGVkVmFyaWFibGVPYmplY3RT
cGFjZSIsIGhlYXAsIHNlZ21lbnRlZFZhcmlhYmxlT2JqZWN0SGVhcENlbGxUeXBlLmdldCgpLCBm
YXN0TWFsbG9jQWxsb2NhdG9yLmdldCgpKQorICAgICwgYXJyYXlCdWZmZXJDb25zdHJ1Y3RvclNw
YWNlIElTT19TVUJTUEFDRV9JTklUKGhlYXAsIGRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlw
ZS5nZXQoKSwgSlNBcnJheUJ1ZmZlckNvbnN0cnVjdG9yKQogICAgICwgYXN5bmNGdW5jdGlvblNw
YWNlIElTT19TVUJTUEFDRV9JTklUKGhlYXAsIGNlbGxKU1ZhbHVlT09CSGVhcENlbGxUeXBlLmdl
dCgpLCBKU0FzeW5jRnVuY3Rpb24pCiAgICAgLCBhc3luY0dlbmVyYXRvckZ1bmN0aW9uU3BhY2Ug
SVNPX1NVQlNQQUNFX0lOSVQoaGVhcCwgY2VsbEpTVmFsdWVPT0JIZWFwQ2VsbFR5cGUuZ2V0KCks
IEpTQXN5bmNHZW5lcmF0b3JGdW5jdGlvbikKICAgICAsIGJvdW5kRnVuY3Rpb25TcGFjZSBJU09f
U1VCU1BBQ0VfSU5JVChoZWFwLCBjZWxsSlNWYWx1ZU9PQkhlYXBDZWxsVHlwZS5nZXQoKSwgSlNC
b3VuZEZ1bmN0aW9uKQorICAgICwgY2FsbGJhY2tGdW5jdGlvblNwYWNlIElTT19TVUJTUEFDRV9J
TklUKGhlYXAsIGRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNDYWxsYmFj
a0Z1bmN0aW9uKQogICAgICwgY3VzdG9tR2V0dGVyU2V0dGVyRnVuY3Rpb25TcGFjZSBJU09fU1VC
U1BBQ0VfSU5JVChoZWFwLCBjZWxsSlNWYWx1ZU9PQkhlYXBDZWxsVHlwZS5nZXQoKSwgSlNDdXN0
b21HZXR0ZXJTZXR0ZXJGdW5jdGlvbikKICAgICAsIGRpcmVjdEV2YWxFeGVjdXRhYmxlU3BhY2Ug
SVNPX1NVQlNQQUNFX0lOSVQoaGVhcCwgZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZS5nZXQo
KSwgRGlyZWN0RXZhbEV4ZWN1dGFibGUpCisgICAgLCBlcnJvckNvbnN0cnVjdG9yU3BhY2UgSVNP
X1NVQlNQQUNFX0lOSVQoaGVhcCwgZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmdldCgp
LCBFcnJvckNvbnN0cnVjdG9yKQogICAgICwgZXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZVNwYWNl
IElTT19TVUJTUEFDRV9JTklUKGhlYXAsIGNlbGxEYW5nZXJvdXNCaXRzSGVhcENlbGxUeXBlLmdl
dCgpLCBFeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlKQogICAgICwgZnVuY3Rpb25FeGVjdXRhYmxl
U3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoaGVhcCwgZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlw
ZS5nZXQoKSwgRnVuY3Rpb25FeGVjdXRhYmxlKQogICAgICwgZnVuY3Rpb25TcGFjZSBJU09fU1VC
U1BBQ0VfSU5JVChoZWFwLCBjZWxsSlNWYWx1ZU9PQkhlYXBDZWxsVHlwZS5nZXQoKSwgSlNGdW5j
dGlvbikKQEAgLTI2NiwxMSArMjgwLDI0IEBAIFZNOjpWTShWTVR5cGUgdm1UeXBlLCBIZWFwVHlw
ZSBoZWFwVHlwZSkKICAgICAsIGluZGlyZWN0RXZhbEV4ZWN1dGFibGVTcGFjZSBJU09fU1VCU1BB
Q0VfSU5JVChoZWFwLCBkZXN0cnVjdGlibGVDZWxsSGVhcENlbGxUeXBlLmdldCgpLCBJbmRpcmVj
dEV2YWxFeGVjdXRhYmxlKQogICAgICwgaW5mZXJyZWRUeXBlU3BhY2UgSVNPX1NVQlNQQUNFX0lO
SVQoaGVhcCwgZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgSW5mZXJyZWRUeXBl
KQogICAgICwgaW5mZXJyZWRWYWx1ZVNwYWNlIElTT19TVUJTUEFDRV9JTklUKGhlYXAsIGRlc3Ry
dWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIEluZmVycmVkVmFsdWUpCisgICAgLCBpbnRl
cm5hbEZ1bmN0aW9uU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoaGVhcCwgZGVzdHJ1Y3RpYmxlT2Jq
ZWN0SGVhcENlbGxUeXBlLmdldCgpLCBJbnRlcm5hbEZ1bmN0aW9uKQorI2lmIEVOQUJMRShJTlRM
KQorICAgICwgaW50bENvbGxhdG9yQ29uc3RydWN0b3JTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVCho
ZWFwLCBkZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuZ2V0KCksIEludGxDb2xsYXRvckNv
bnN0cnVjdG9yKQorICAgICwgaW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3JTcGFjZSBJU09f
U1VCU1BBQ0VfSU5JVChoZWFwLCBkZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuZ2V0KCks
IEludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yKQorICAgICwgaW50bE51bWJlckZvcm1hdENv
bnN0cnVjdG9yU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoaGVhcCwgZGVzdHJ1Y3RpYmxlT2JqZWN0
SGVhcENlbGxUeXBlLmdldCgpLCBJbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3IpCisjZW5kaWYK
ICAgICAsIG1vZHVsZVByb2dyYW1FeGVjdXRhYmxlU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoaGVh
cCwgZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgTW9kdWxlUHJvZ3JhbUV4ZWN1
dGFibGUpCisgICAgLCBuYXRpdmVFcnJvckNvbnN0cnVjdG9yU3BhY2UgSVNPX1NVQlNQQUNFX0lO
SVQoaGVhcCwgZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmdldCgpLCBOYXRpdmVFcnJv
ckNvbnN0cnVjdG9yKQogICAgICwgbmF0aXZlRXhlY3V0YWJsZVNwYWNlIElTT19TVUJTUEFDRV9J
TklUKGhlYXAsIGRlc3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIE5hdGl2ZUV4ZWN1
dGFibGUpCiAgICAgLCBuYXRpdmVTdGRGdW5jdGlvblNwYWNlIElTT19TVUJTUEFDRV9JTklUKGhl
YXAsIGNlbGxKU1ZhbHVlT09CSGVhcENlbGxUeXBlLmdldCgpLCBKU05hdGl2ZVN0ZEZ1bmN0aW9u
KQorI2lmIEpTQ19PQkpDX0FQSV9FTkFCTEVECisgICAgLCBvYmpDQ2FsbGJhY2tGdW5jdGlvblNw
YWNlIElTT19TVUJTUEFDRV9JTklUKGhlYXAsIGRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlw
ZS5nZXQoKSwgT2JqQ0NhbGxiYWNrRnVuY3Rpb24pCisjZW5kaWYKICAgICAsIHByb2dyYW1FeGVj
dXRhYmxlU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoaGVhcCwgZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBD
ZWxsVHlwZS5nZXQoKSwgUHJvZ3JhbUV4ZWN1dGFibGUpCiAgICAgLCBwcm9wZXJ0eVRhYmxlU3Bh
Y2UgSVNPX1NVQlNQQUNFX0lOSVQoaGVhcCwgZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZS5n
ZXQoKSwgUHJvcGVydHlUYWJsZSkKKyAgICAsIHByb3h5UmV2b2tlU3BhY2UgSVNPX1NVQlNQQUNF
X0lOSVQoaGVhcCwgZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmdldCgpLCBQcm94eVJl
dm9rZSkKKyAgICAsIHJlZ0V4cENvbnN0cnVjdG9yU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoaGVh
cCwgZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmdldCgpLCBSZWdFeHBDb25zdHJ1Y3Rv
cikKKyAgICAsIHN0cmljdE1vZGVUeXBlRXJyb3JGdW5jdGlvblNwYWNlIElTT19TVUJTUEFDRV9J
TklUKGhlYXAsIGRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5nZXQoKSwgU3RyaWN0TW9k
ZVR5cGVFcnJvckZ1bmN0aW9uKQogICAgICwgc3RydWN0dXJlUmFyZURhdGFTcGFjZSBJU09fU1VC
U1BBQ0VfSU5JVChoZWFwLCBkZXN0cnVjdGlibGVDZWxsSGVhcENlbGxUeXBlLmdldCgpLCBTdHJ1
Y3R1cmVSYXJlRGF0YSkKICAgICAsIHN0cnVjdHVyZVNwYWNlIElTT19TVUJTUEFDRV9JTklUKGhl
YXAsIGRlc3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIFN0cnVjdHVyZSkKICAgICAs
IHdlYWtTZXRTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVChoZWFwLCBkZXN0cnVjdGlibGVPYmplY3RI
ZWFwQ2VsbFR5cGUuZ2V0KCksIEpTV2Vha1NldCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1ZNLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvVk0uaAkocmV2aXNpb24gMjMwNzIzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvVk0uaAkod29ya2luZyBjb3B5KQpAQCAtODAsNiArODAsMTYgQEAKICNpbmNsdWRlIDx3dGYv
U3RhY2tUcmFjZS5oPgogI2VuZGlmCiAKKy8vIEVuYWJsZSB0aGUgT2JqZWN0aXZlLUMgQVBJIGZv
ciBwbGF0Zm9ybXMgd2l0aCBhIG1vZGVybiBydW50aW1lLiBUaGlzIGhhcyB0byBtYXRjaCBleGFj
dGx5IHdoYXQgd2UKKy8vIGhhdmUgaW4gSlNCYXNlLmguCisjaWYgIWRlZmluZWQoSlNDX09CSkNf
QVBJX0VOQUJMRUQpCisjaWYgKGRlZmluZWQoX19jbGFuZ19fKSAmJiBkZWZpbmVkKF9fQVBQTEVf
XykgJiYgKChkZWZpbmVkKF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQpICYmICFkZWZp
bmVkKF9faTM4Nl9fKSkgfHwgKGRlZmluZWQoVEFSR0VUX09TX0lQSE9ORSkgJiYgVEFSR0VUX09T
X0lQSE9ORSkpKQorI2RlZmluZSBKU0NfT0JKQ19BUElfRU5BQkxFRCAxCisjZWxzZQorI2RlZmlu
ZSBKU0NfT0JKQ19BUElfRU5BQkxFRCAwCisjZW5kaWYKKyNlbmRpZgorCiBuYW1lc3BhY2UgV1RG
IHsKIGNsYXNzIFNpbXBsZVN0YXRzOwogfSAvLyBuYW1lc3BhY2UgV1RGCkBAIC0zMzcsMTEgKzM0
NywxNCBAQCBwdWJsaWM6CiAgICAgQ29tcGxldGVTdWJzcGFjZSBlYWdlcmx5U3dlcHREZXN0cnVj
dGlibGVPYmplY3RTcGFjZTsKICAgICBDb21wbGV0ZVN1YnNwYWNlIHNlZ21lbnRlZFZhcmlhYmxl
T2JqZWN0U3BhY2U7CiAgICAgCisgICAgSXNvU3Vic3BhY2UgYXJyYXlCdWZmZXJDb25zdHJ1Y3Rv
clNwYWNlOwogICAgIElzb1N1YnNwYWNlIGFzeW5jRnVuY3Rpb25TcGFjZTsKICAgICBJc29TdWJz
cGFjZSBhc3luY0dlbmVyYXRvckZ1bmN0aW9uU3BhY2U7CiAgICAgSXNvU3Vic3BhY2UgYm91bmRG
dW5jdGlvblNwYWNlOworICAgIElzb1N1YnNwYWNlIGNhbGxiYWNrRnVuY3Rpb25TcGFjZTsKICAg
ICBJc29TdWJzcGFjZSBjdXN0b21HZXR0ZXJTZXR0ZXJGdW5jdGlvblNwYWNlOwogICAgIElzb1N1
YnNwYWNlIGRpcmVjdEV2YWxFeGVjdXRhYmxlU3BhY2U7CisgICAgSXNvU3Vic3BhY2UgZXJyb3JD
b25zdHJ1Y3RvclNwYWNlOwogICAgIElzb1N1YnNwYWNlIGV4ZWN1dGFibGVUb0NvZGVCbG9ja0Vk
Z2VTcGFjZTsKICAgICBJc29TdWJzcGFjZSBmdW5jdGlvbkV4ZWN1dGFibGVTcGFjZTsKICAgICBJ
c29TdWJzcGFjZSBmdW5jdGlvblNwYWNlOwpAQCAtMzQ5LDExICszNjIsMjQgQEAgcHVibGljOgog
ICAgIElzb1N1YnNwYWNlIGluZGlyZWN0RXZhbEV4ZWN1dGFibGVTcGFjZTsKICAgICBJc29TdWJz
cGFjZSBpbmZlcnJlZFR5cGVTcGFjZTsKICAgICBJc29TdWJzcGFjZSBpbmZlcnJlZFZhbHVlU3Bh
Y2U7CisgICAgSXNvU3Vic3BhY2UgaW50ZXJuYWxGdW5jdGlvblNwYWNlOworI2lmIEVOQUJMRShJ
TlRMKQorICAgIElzb1N1YnNwYWNlIGludGxDb2xsYXRvckNvbnN0cnVjdG9yU3BhY2U7CisgICAg
SXNvU3Vic3BhY2UgaW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3JTcGFjZTsKKyAgICBJc29T
dWJzcGFjZSBpbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3JTcGFjZTsKKyNlbmRpZgogICAgIElz
b1N1YnNwYWNlIG1vZHVsZVByb2dyYW1FeGVjdXRhYmxlU3BhY2U7CisgICAgSXNvU3Vic3BhY2Ug
bmF0aXZlRXJyb3JDb25zdHJ1Y3RvclNwYWNlOwogICAgIElzb1N1YnNwYWNlIG5hdGl2ZUV4ZWN1
dGFibGVTcGFjZTsKICAgICBJc29TdWJzcGFjZSBuYXRpdmVTdGRGdW5jdGlvblNwYWNlOworI2lm
IEpTQ19PQkpDX0FQSV9FTkFCTEVECisgICAgSXNvU3Vic3BhY2Ugb2JqQ0NhbGxiYWNrRnVuY3Rp
b25TcGFjZTsKKyNlbmRpZgogICAgIElzb1N1YnNwYWNlIHByb2dyYW1FeGVjdXRhYmxlU3BhY2U7
CiAgICAgSXNvU3Vic3BhY2UgcHJvcGVydHlUYWJsZVNwYWNlOworICAgIElzb1N1YnNwYWNlIHBy
b3h5UmV2b2tlU3BhY2U7CisgICAgSXNvU3Vic3BhY2UgcmVnRXhwQ29uc3RydWN0b3JTcGFjZTsK
KyAgICBJc29TdWJzcGFjZSBzdHJpY3RNb2RlVHlwZUVycm9yRnVuY3Rpb25TcGFjZTsKICAgICBJ
c29TdWJzcGFjZSBzdHJ1Y3R1cmVSYXJlRGF0YVNwYWNlOwogICAgIElzb1N1YnNwYWNlIHN0cnVj
dHVyZVNwYWNlOwogICAgIElzb1N1YnNwYWNlIHdlYWtTZXRTcGFjZTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJ
KHJldmlzaW9uIDIzMDcyMykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkod29ya2luZyBj
b3B5KQpAQCAtMSwzICsxLDIwIEBACisyMDE4LTA0LTE3ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0Bh
cHBsZS5jb20+CisKKyAgICAgICAgVGhlIEludGVybmFsRnVuY3Rpb24gaGllcmFyY2h5IHNob3Vs
ZCBiZSBpbiBJc29TdWJzcGFjZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE4NDcyMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyBiZWNhdXNlIG5vIG5ldyBiZWhhdmlvci4KKworICAg
ICAgICAqIGJpbmRpbmdzL2pzL1dlYkNvcmVKU0NsaWVudERhdGEuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SlNWTUNsaWVudERhdGE6OkpTVk1DbGllbnREYXRhKToKKyAgICAgICAgKiBiaW5kaW5n
cy9qcy9XZWJDb3JlSlNDbGllbnREYXRhLmg6CisgICAgICAgIChXZWJDb3JlOjpKU1ZNQ2xpZW50
RGF0YTo6cnVudGltZU1ldGhvZFNwYWNlKToKKyAgICAgICAgKiBicmlkZ2UvcnVudGltZV9tZXRo
b2QuY3BwOgorICAgICAgICAoSlNDOjpSdW50aW1lTWV0aG9kOjpzdWJzcGFjZUZvckltcGwpOgor
ICAgICAgICAqIGJyaWRnZS9ydW50aW1lX21ldGhvZC5oOgorCiAyMDE4LTA0LTE3ICBDaHJpcyBE
dW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgUkVHUkVTU0lPTiAocjIyOTgzMSk6
IENNRC1jbGlja2luZyBhbiBpQ2xvdWQgd2ViIGFwcCBsaW5rIHVuZXhwZWN0ZWRseSBvcGVucyB0
aGF0IGxpbmsgaW4gYSBuZXcgdGFiIGFuZCB0aGUgY3VycmVudCB0YWIKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL1dlYkNvcmVKU0NsaWVudERhdGEuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dlYkNvcmVKU0NsaWVudERhdGEuY3BwCShyZXZp
c2lvbiAyMzA3MjMpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9XZWJDb3JlSlNDbGll
bnREYXRhLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzUsNiArMzUsNyBAQAogI2luY2x1ZGUgPEph
dmFTY3JpcHRDb3JlL01hcmtpbmdDb25zdHJhaW50Lmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENv
cmUvU3Vic3BhY2VJbmxpbmVzLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvVk0uaD4KKyNp
bmNsdWRlICJydW50aW1lX21ldGhvZC5oIgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTQzLDYgKzQ0LDcgQEAgdXNpbmcgbmFtZXNwYWNlIEpT
QzsKIEpTVk1DbGllbnREYXRhOjpKU1ZNQ2xpZW50RGF0YShWTSYgdm0pCiAgICAgOiBtX2J1aWx0
aW5GdW5jdGlvbnModm0pCiAgICAgLCBtX2J1aWx0aW5OYW1lcygmdm0pCisgICAgLCBtX3J1bnRp
bWVNZXRob2RTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVP
YmplY3RIZWFwQ2VsbFR5cGUuZ2V0KCksIFJ1bnRpbWVNZXRob2QpCiAgICAgLCBtX291dHB1dENv
bnN0cmFpbnRTcGFjZSgiV2ViQ29yZSBXcmFwcGVyIHcvIE91dHB1dCBDb25zdHJhaW50Iiwgdm0u
aGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmdldCgpLCB2bS5mYXN0TWFs
bG9jQWxsb2NhdG9yLmdldCgpKQogICAgICwgbV9nbG9iYWxPYmplY3RPdXRwdXRDb25zdHJhaW50
U3BhY2UoIldlYkNvcmUgR2xvYmFsIE9iamVjdCB3LyBPdXRwdXQgQ29uc3RyYWludCIsIHZtLmhl
YXAsIHZtLnNlZ21lbnRlZFZhcmlhYmxlT2JqZWN0SGVhcENlbGxUeXBlLmdldCgpLCB2bS5mYXN0
TWFsbG9jQWxsb2NhdG9yLmdldCgpKQogewpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvV2ViQ29yZUpTQ2xpZW50RGF0YS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL1dlYkNvcmVKU0NsaWVudERhdGEuaAkocmV2aXNpb24gMjMwNzIzKQorKysgU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV2ViQ29yZUpTQ2xpZW50RGF0YS5oCSh3b3JraW5nIGNv
cHkpCkBAIC01OSw2ICs1OSw4IEBAIHB1YmxpYzoKICAgICBXZWJDb3JlQnVpbHRpbk5hbWVzJiBi
dWlsdGluTmFtZXMoKSB7IHJldHVybiBtX2J1aWx0aW5OYW1lczsgfQogICAgIEpTQnVpbHRpbkZ1
bmN0aW9ucyYgYnVpbHRpbkZ1bmN0aW9ucygpIHsgcmV0dXJuIG1fYnVpbHRpbkZ1bmN0aW9uczsg
fQogICAgIAorICAgIEpTQzo6SXNvU3Vic3BhY2UmIHJ1bnRpbWVNZXRob2RTcGFjZSgpIHsgcmV0
dXJuIG1fcnVudGltZU1ldGhvZFNwYWNlOyB9CisgICAgCiAgICAgSlNDOjpDb21wbGV0ZVN1YnNw
YWNlJiBvdXRwdXRDb25zdHJhaW50U3BhY2UoKSB7IHJldHVybiBtX291dHB1dENvbnN0cmFpbnRT
cGFjZTsgfQogICAgIEpTQzo6Q29tcGxldGVTdWJzcGFjZSYgZ2xvYmFsT2JqZWN0T3V0cHV0Q29u
c3RyYWludFNwYWNlKCkgeyByZXR1cm4gbV9nbG9iYWxPYmplY3RPdXRwdXRDb25zdHJhaW50U3Bh
Y2U7IH0KICAgICAKQEAgLTc2LDYgKzc4LDggQEAgcHJpdmF0ZToKICAgICBKU0J1aWx0aW5GdW5j
dGlvbnMgbV9idWlsdGluRnVuY3Rpb25zOwogICAgIFdlYkNvcmVCdWlsdGluTmFtZXMgbV9idWls
dGluTmFtZXM7CiAgICAgCisgICAgSlNDOjpJc29TdWJzcGFjZSBtX3J1bnRpbWVNZXRob2RTcGFj
ZTsKKyAgICAKICAgICBKU0M6OkNvbXBsZXRlU3Vic3BhY2UgbV9vdXRwdXRDb25zdHJhaW50U3Bh
Y2U7CiAgICAgSlNDOjpDb21wbGV0ZVN1YnNwYWNlIG1fZ2xvYmFsT2JqZWN0T3V0cHV0Q29uc3Ry
YWludFNwYWNlOwogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX21ldGhv
ZC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfbWV0aG9k
LmNwcAkocmV2aXNpb24gMjMwNzIzKQorKysgU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVf
bWV0aG9kLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMDMsIDIwMDgsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDAzLTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5j
bHVkZSAiSlNET01CaW5kaW5nLmgiCiAjaW5jbHVkZSAiSlNIVE1MRWxlbWVudC5oIgogI2luY2x1
ZGUgIkpTUGx1Z2luRWxlbWVudEZ1bmN0aW9ucy5oIgorI2luY2x1ZGUgIldlYkNvcmVKU0NsaWVu
dERhdGEuaCIKICNpbmNsdWRlICJydW50aW1lX29iamVjdC5oIgogI2luY2x1ZGUgPEphdmFTY3Jp
cHRDb3JlL0Vycm9yLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRnVuY3Rpb25Qcm90b3R5
cGUuaD4KQEAgLTc5LDYgKzgwLDExIEBAIGJvb2wgUnVudGltZU1ldGhvZDo6Z2V0T3duUHJvcGVy
dHlTbG90KEoKICAgICByZXR1cm4gSW50ZXJuYWxGdW5jdGlvbjo6Z2V0T3duUHJvcGVydHlTbG90
KHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgc2xvdCk7CiB9CiAKK0lzb1N1YnNwYWNl
KiBSdW50aW1lTWV0aG9kOjpzdWJzcGFjZUZvckltcGwoVk0mIHZtKQoreworICAgIHJldHVybiAm
c3RhdGljX2Nhc3Q8SlNWTUNsaWVudERhdGEqPih2bS5jbGllbnREYXRhKS0+cnVudGltZU1ldGhv
ZFNwYWNlKCk7Cit9CisKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxS
dW50aW1lTWV0aG9kKEV4ZWNTdGF0ZSogZXhlYykKIHsKICAgICBWTSYgdm0gPSBleGVjLT52bSgp
OwpJbmRleDogU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfbWV0aG9kLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfbWV0aG9kLmgJKHJldmlzaW9uIDIz
MDcyMykKKysrIFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX21ldGhvZC5oCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwMywgMjAwOCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDMtMjAx
OCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKQEAgLTM3LDYgKzM3LDEzIEBAIHB1YmxpYzoKICAgICB0eXBlZGVmIEludGVybmFs
RnVuY3Rpb24gQmFzZTsKICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3Mg
PSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IE92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCB8IFR5
cGVPZlNob3VsZENhbGxHZXRDYWxsRGF0YTsKIAorICAgIHRlbXBsYXRlPHR5cGVuYW1lIENlbGxU
eXBlPgorICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQorICAgIHsK
KyAgICAgICAgc3RhdGljX2Fzc2VydChzaXplb2YoQ2VsbFR5cGUpID09IHNpemVvZihSdW50aW1l
TWV0aG9kKSwgIlJ1bnRpbWVNZXRob2Qgc3ViY2xhc3NlcyB0aGF0IGFkZCBmaWVsZHMgbmVlZCB0
byBvdmVycmlkZSBzdWJzcGFjZUZvcjw+KCkiKTsKKyAgICAgICAgcmV0dXJuIHN1YnNwYWNlRm9y
SW1wbCh2bSk7CisgICAgfQorICAgIAogICAgIHN0YXRpYyBSdW50aW1lTWV0aG9kKiBjcmVhdGUo
RXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUsIGNvbnN0IFN0cmluZyYgbmFtZSwgQmluZGluZ3M6Ok1ldGhvZCogbWV0aG9kKQogICAg
IHsKICAgICAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwpAQCAtNjgsNiArNzUsOCBA
QCBwcm90ZWN0ZWQ6CiBwcml2YXRlOgogICAgIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBsZW5ndGhH
ZXR0ZXIoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUsIFByb3BlcnR5TmFtZSk7CiAKKyAgICBz
dGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9ySW1wbChWTSYpOworCiAgICAgQmluZGluZ3M6
Ok1ldGhvZCogbV9tZXRob2Q7CiB9OwogCkluZGV4OiBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwkocmV2aXNpb24gMjMwNzIzKQor
KysgU291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyMyBA
QAorMjAxOC0wNC0xNyAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAg
IFRoZSBJbnRlcm5hbEZ1bmN0aW9uIGhpZXJhcmNoeSBzaG91bGQgYmUgaW4gSXNvU3Vic3BhY2Vz
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODQ3MjEK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYlBy
b2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9KU05QTWV0aG9kLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
SlNOUE1ldGhvZDo6c3Vic3BhY2VGb3JJbXBsKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdp
bnMvTmV0c2NhcGUvSlNOUE1ldGhvZC5oOgorICAgICAgICAoV2ViS2l0OjpKU05QTWV0aG9kOjpj
cmVhdGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpKU05QTWV0aG9kOjpucElkZW50aWZp
ZXIgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpKU05QTWV0aG9kOjpjcmVhdGVT
dHJ1Y3R1cmUpOiBEZWxldGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2Fw
ZS9KU05QT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYktpdDo6SlNOUE9iamVjdDo6c3Vic3BhY2VG
b3JJbXBsKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvSlNOUE9iamVj
dC5oOgorICAgICAgICAoV2ViS2l0OjpKU05QT2JqZWN0OjpjcmVhdGUpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViS2l0OjpKU05QT2JqZWN0OjpucE9iamVjdCBjb25zdCk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJLaXQ6OkpTTlBPYmplY3Q6OmNyZWF0ZVN0cnVjdHVyZSk6IERlbGV0ZWQuCisKIDIw
MTgtMDQtMTcgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBSRUdS
RVNTSU9OIChyMjI5ODMxKTogQ01ELWNsaWNraW5nIGFuIGlDbG91ZCB3ZWIgYXBwIGxpbmsgdW5l
eHBlY3RlZGx5IG9wZW5zIHRoYXQgbGluayBpbiBhIG5ldyB0YWIgYW5kIHRoZSBjdXJyZW50IHRh
YgpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvSlNOUE1l
dGhvZC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMv
TmV0c2NhcGUvSlNOUE1ldGhvZC5jcHAJKHJldmlzaW9uIDIzMDcyMykKKysrIFNvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL0pTTlBNZXRob2QuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCwgMjAxNiBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAxOCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKQEAgLTMxLDYgKzMxLDggQEAKICNpbmNsdWRlICJKU05QT2JqZWN0LmgiCiAjaW5jbHVk
ZSA8SmF2YVNjcmlwdENvcmUvRXJyb3IuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9GdW5j
dGlvblByb3RvdHlwZS5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0lzb1N1YnNwYWNlUGVy
Vk0uaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0Rlc3RydWN0aWJsZU9iamVjdEhlYXBD
ZWxsVHlwZS5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTR2xvYmFsT2JqZWN0Lmg+CiAj
aW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNPYmplY3QuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0pT
SFRNTEVsZW1lbnQuaD4KQEAgLTU5LDYgKzYxLDEyIEBAIHZvaWQgSlNOUE1ldGhvZDo6ZmluaXNo
Q3JlYXRpb24oVk0mIHZtLCAKICAgICBBU1NFUlQoaW5oZXJpdHModm0sIGluZm8oKSkpOwogfQog
CitJc29TdWJzcGFjZSogSlNOUE1ldGhvZDo6c3Vic3BhY2VGb3JJbXBsKFZNJiB2bSkKK3sKKyAg
ICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SXNvU3Vic3BhY2VQZXJWTT4gcGVyVk0oW10gKFZNJiB2
bSkgeyByZXR1cm4gSVNPX1NVQlNQQUNFX1BBUkFNRVRFUlModm0uZGVzdHJ1Y3RpYmxlT2JqZWN0
SGVhcENlbGxUeXBlLmdldCgpLCBKU05QTWV0aG9kKTsgfSk7CisgICAgcmV0dXJuICZwZXJWTS5n
ZXQoKS5mb3JWTSh2bSk7Cit9CisKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGNhbGxNZXRob2QoRXhlY1N0YXRlKiBleGVjKQogewogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7
CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9KU05QTWV0
aG9kLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0
c2NhcGUvSlNOUE1ldGhvZC5oCShyZXZpc2lvbiAyMzA3MjMpCisrKyBTb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9KU05QTWV0aG9kLmgJKHdvcmtpbmcgY29weSkKQEAg
LTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMC0yMDE4IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzcs
MTAgKzM3LDE2IEBAIHR5cGVkZWYgdm9pZCogTlBJZGVudGlmaWVyOwogbmFtZXNwYWNlIFdlYktp
dCB7CiAKIC8vIEEgSlNPYmplY3QgdGhhdCB3cmFwcyBhbiBOUE1ldGhvZC4KLWNsYXNzIEpTTlBN
ZXRob2QgOiBwdWJsaWMgSlNDOjpJbnRlcm5hbEZ1bmN0aW9uIHsKK2NsYXNzIEpTTlBNZXRob2Qg
ZmluYWwgOiBwdWJsaWMgSlNDOjpJbnRlcm5hbEZ1bmN0aW9uIHsKIHB1YmxpYzoKICAgICB0eXBl
ZGVmIEpTQzo6SW50ZXJuYWxGdW5jdGlvbiBCYXNlOwogCisgICAgdGVtcGxhdGU8dHlwZW5hbWUg
Q2VsbFR5cGU+CisgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6
Vk0mIHZtKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHN1YnNwYWNlRm9ySW1wbCh2bSk7CisgICAg
fQorCiAgICAgc3RhdGljIEpTTlBNZXRob2QqIGNyZWF0ZShKU0M6OkV4ZWNTdGF0ZSogZXhlYywg
SlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBTdHJpbmcmIG5hbWUsIE5Q
SWRlbnRpZmllciBucElkZW50KQogICAgIHsKICAgICAgICAgSlNDOjpWTSYgdm0gPSBnbG9iYWxP
YmplY3QtPnZtKCk7CkBAIC01Nyw3ICs2Myw5IEBAIHB1YmxpYzoKIHByb3RlY3RlZDoKICAgICB2
b2lkIGZpbmlzaENyZWF0aW9uKEpTQzo6Vk0mLCBjb25zdCBTdHJpbmcmIG5hbWUpOwogCi1wcml2
YXRlOiAgICAKK3ByaXZhdGU6CisgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNl
Rm9ySW1wbChKU0M6OlZNJik7CisgICAgCiAgICAgSlNOUE1ldGhvZChKU0M6OkpTR2xvYmFsT2Jq
ZWN0KiwgSlNDOjpTdHJ1Y3R1cmUqLCBOUElkZW50aWZpZXIpOwogCiAgICAgc3RhdGljIEpTQzo6
U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL0pTTlBPYmplY3QuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL0pTTlBPYmpl
Y3QuY3BwCShyZXZpc2lvbiAyMzA3MjMpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1
Z2lucy9OZXRzY2FwZS9KU05QT2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUg
QEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEwLTIwMTggQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zNSw2ICsz
NSw4IEBACiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvQXV4aWxpYXJ5QmFycmllcklubGluZXMu
aD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9FcnJvci5oPgogI2luY2x1ZGUgPEphdmFTY3Jp
cHRDb3JlL0lkZW50aWZpZXJJbmxpbmVzLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSXNv
U3Vic3BhY2VQZXJWTS5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTRGVzdHJ1Y3RpYmxl
T2JqZWN0SGVhcENlbGxUeXBlLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNHbG9iYWxP
YmplY3QuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0xvY2suaD4KICNpbmNsdWRlIDxK
YXZhU2NyaXB0Q29yZS9PYmplY3RQcm90b3R5cGUuaD4KQEAgLTUyNyw2ICs1MjksMTIgQEAgSlNP
YmplY3QqIEpTTlBPYmplY3Q6OnRocm93SW52YWxpZEFjY2VzcwogICAgIHJldHVybiB0aHJvd0V4
Y2VwdGlvbihleGVjLCBzY29wZSwgY3JlYXRlUmVmZXJlbmNlRXJyb3IoZXhlYywgIlRyeWluZyB0
byBhY2Nlc3Mgb2JqZWN0IGZyb20gZGVzdHJveWVkIHBsdWctaW4uIikpOwogfQogCitJc29TdWJz
cGFjZSogSlNOUE9iamVjdDo6c3Vic3BhY2VGb3JJbXBsKFZNJiB2bSkKK3sKKyAgICBzdGF0aWMg
TmV2ZXJEZXN0cm95ZWQ8SXNvU3Vic3BhY2VQZXJWTT4gcGVyVk0oW10gKFZNJiB2bSkgeyByZXR1
cm4gSVNPX1NVQlNQQUNFX1BBUkFNRVRFUlModm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxU
eXBlLmdldCgpLCBKU05QT2JqZWN0KTsgfSk7CisgICAgcmV0dXJuICZwZXJWTS5nZXQoKS5mb3JW
TSh2bSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAjZW5kaWYgLy8gRU5BQkxFKE5F
VFNDQVBFX1BMVUdJTl9BUEkpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lu
cy9OZXRzY2FwZS9KU05QT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvSlNOUE9iamVjdC5oCShyZXZpc2lvbiAyMzA3MjMpCisr
KyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9KU05QT2JqZWN0LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEw
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMC0y
MDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwpAQCAtNDEsMTEgKzQxLDE3IEBAIGNsYXNzIE5QUnVudGltZU9iamVjdE1hcDsK
ICAgICAKIC8vIEpTTlBPYmplY3QgaXMgYSBKU09iamVjdCB0aGF0IHdyYXBzIGFuIE5QT2JqZWN0
LgogCi1jbGFzcyBKU05QT2JqZWN0IDogcHVibGljIEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3Qg
eworY2xhc3MgSlNOUE9iamVjdCBmaW5hbCA6IHB1YmxpYyBKU0M6OkpTRGVzdHJ1Y3RpYmxlT2Jq
ZWN0IHsKIHB1YmxpYzoKICAgICB0eXBlZGVmIEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QgQmFz
ZTsKICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1
Y3R1cmVGbGFncyB8IEpTQzo6T3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90IHwgSlNDOjpPdmVy
cmlkZXNHZXRQcm9wZXJ0eU5hbWVzIHwgSlNDOjpUeXBlT2ZTaG91bGRDYWxsR2V0Q2FsbERhdGE7
CiAKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZT4KKyAgICBzdGF0aWMgSlNDOjpJc29T
dWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCisgICAgeworICAgICAgICByZXR1cm4g
c3Vic3BhY2VGb3JJbXBsKHZtKTsKKyAgICB9CisKICAgICBzdGF0aWMgSlNOUE9iamVjdCogY3Jl
YXRlKEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgTlBSdW50aW1lT2JqZWN0TWFw
KiBvYmplY3RNYXAsIE5QT2JqZWN0KiBucE9iamVjdCkKICAgICB7CiAgICAgICAgIEpTQzo6U3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUgPSBjcmVhdGVTdHJ1Y3R1cmUoZ2xvYmFsT2JqZWN0LT52bSgpLCBn
bG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdC0+b2JqZWN0UHJvdG90eXBlKCkpOwpAQCAtNzQsNiAr
ODAsOCBAQCBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihKU0M6OkpTR2xvYmFs
T2JqZWN0Kik7CiAKIHByaXZhdGU6CisgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNw
YWNlRm9ySW1wbChKU0M6OlZNJik7CisgICAgCiAgICAgSlNOUE9iamVjdChKU0M6OkpTR2xvYmFs
T2JqZWN0KiwgSlNDOjpTdHJ1Y3R1cmUqLCBOUFJ1bnRpbWVPYmplY3RNYXAqLCBOUE9iamVjdCop
OwogICAgIAogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6
Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBw
cm90b3R5cGUpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>338171</attachid>
            <date>2018-04-17 17:42:52 -0700</date>
            <delta_ts>2018-04-17 18:46:15 -0700</delta_ts>
            <desc>maybe the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>48180</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjMwNzQxKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ2IEBA
CisyMDE4LTA0LTE3ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
VGhlIEludGVybmFsRnVuY3Rpb24gaGllcmFyY2h5IHNob3VsZCBiZSBpbiBJc29TdWJzcGFjZXMK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4NDcyMQor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAgICAKKyAgICAgICAg
VGhpcyBtb3ZlcyBJbnRlcm5hbEZ1bmN0aW9uIGludG8gYSBJc29TdWJzcGFjZS4gSXQgYWxzbyBt
b3ZlcyBhbGwgc3ViY2xhc3NlcyBpbnRvIElzb1N1YnNwYWNlcywKKyAgICAgICAgYnV0IHN1YmNs
YXNzZXMgdGhhdCBhcmUgdGhlIHNhbWUgc2l6ZSBhcyBJbnRlcm5hbEZ1bmN0aW9uIHNoYXJlIGl0
cyBzdWJzcGFjZS4gSSBkaWQgdGhpcworICAgICAgICBiZWNhdXNlIHRoZSBzdWJjbGFzc2VzIGFw
cGVhciB0byBqdXN0IG92ZXJyaWRlIG1ldGhvZHMsIHdoaWNoIGFyZSBjYWxsZWQgZHluYW1pY2Fs
bHkgdmlhIHRoZQorICAgICAgICBzdHJ1Y3R1cmUgb3IgY2xhc3Mgb2YgdGhlIG9iamVjdC4gU28s
IEkgZG9uJ3Qgc2VlIGEgdHlwZSBjb25mdXNpb24gcmlzayBpZiBVQUYgaXMgdXNlZCB0bworICAg
ICAgICBhbGxvY2F0ZSBvbmUga2luZCBvZiBJbnRlcm5hbEZ1bmN0aW9uIG92ZXIgYW5vdGhlci4K
KworICAgICAgICAqIEFQSS9KU0Jhc2UuaDoKKyAgICAgICAgKiBBUEkvSlNDYWxsYmFja0Z1bmN0
aW9uLmg6CisgICAgICAgICogQVBJL09iakNDYWxsYmFja0Z1bmN0aW9uLmg6CisgICAgICAgIChK
U0M6Ok9iakNDYWxsYmFja0Z1bmN0aW9uOjpzdWJzcGFjZUZvcik6CisgICAgICAgICogQ01ha2VM
aXN0cy50eHQ6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvajoKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBoZWFwL0lzb1N1YnNwYWNl
UGVyVk0uY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6SXNvU3Vic3BhY2VQZXJWTTo6QXV0b3Jl
bW92aW5nSXNvU3Vic3BhY2U6OkF1dG9yZW1vdmluZ0lzb1N1YnNwYWNlKToKKyAgICAgICAgKEpT
Qzo6SXNvU3Vic3BhY2VQZXJWTTo6QXV0b3JlbW92aW5nSXNvU3Vic3BhY2U6On5BdXRvcmVtb3Zp
bmdJc29TdWJzcGFjZSk6CisgICAgICAgIChKU0M6Oklzb1N1YnNwYWNlUGVyVk06Oklzb1N1YnNw
YWNlUGVyVk0pOgorICAgICAgICAoSlNDOjpJc29TdWJzcGFjZVBlclZNOjp+SXNvU3Vic3BhY2VQ
ZXJWTSk6CisgICAgICAgIChKU0M6Oklzb1N1YnNwYWNlUGVyVk06OmZvclZNKToKKyAgICAgICAg
KiBoZWFwL0lzb1N1YnNwYWNlUGVyVk0uaDogQWRkZWQuCisgICAgICAgIChKU0M6Oklzb1N1YnNw
YWNlUGVyVk06OlN1YnNwYWNlUGFyYW1ldGVyczo6U3Vic3BhY2VQYXJhbWV0ZXJzKToKKyAgICAg
ICAgKiBydW50aW1lL0Vycm9yLmg6CisgICAgICAgICogcnVudGltZS9FcnJvckNvbnN0cnVjdG9y
Lmg6CisgICAgICAgICogcnVudGltZS9JbnRlcm5hbEZ1bmN0aW9uLmg6CisgICAgICAgIChKU0M6
OkludGVybmFsRnVuY3Rpb246OnN1YnNwYWNlRm9yKToKKyAgICAgICAgKiBydW50aW1lL0ludGxD
b2xsYXRvckNvbnN0cnVjdG9yLmg6CisgICAgICAgICogcnVudGltZS9JbnRsRGF0ZVRpbWVGb3Jt
YXRDb25zdHJ1Y3Rvci5oOgorICAgICAgICAqIHJ1bnRpbWUvSW50bE51bWJlckZvcm1hdENvbnN0
cnVjdG9yLmg6CisgICAgICAgICogcnVudGltZS9KU0FycmF5QnVmZmVyQ29uc3RydWN0b3IuaDoK
KyAgICAgICAgKiBydW50aW1lL05hdGl2ZUVycm9yQ29uc3RydWN0b3IuaDoKKyAgICAgICAgKiBy
dW50aW1lL1Byb3h5UmV2b2tlLmg6CisgICAgICAgICogcnVudGltZS9SZWdFeHBDb25zdHJ1Y3Rv
ci5oOgorICAgICAgICAqIHJ1bnRpbWUvVk0uY3BwOgorICAgICAgICAoSlNDOjpWTTo6Vk0pOgor
ICAgICAgICAqIHJ1bnRpbWUvVk0uaDoKKwogMjAxOC0wNC0xNyAgQ29tbWl0IFF1ZXVlICA8Y29t
bWl0LXF1ZXVlQHdlYmtpdC5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQg
cjIzMDY5NywgcjIzMDcyMCwgYW5kIHIyMzA3MjQuCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ01ha2VMaXN0cy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0NN
YWtlTGlzdHMudHh0CShyZXZpc2lvbiAyMzA3MjMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Q01ha2VMaXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTUzMSw2ICs1MzEsNyBAQCBzZXQoSmF2
YVNjcmlwdENvcmVfUFJJVkFURV9GUkFNRVdPUktfSEVBCiAgICAgaGVhcC9JbmNyZW1lbnRhbFN3
ZWVwZXIuaAogICAgIGhlYXAvSXNvQ2VsbFNldC5oCiAgICAgaGVhcC9Jc29TdWJzcGFjZS5oCisg
ICAgaGVhcC9Jc29TdWJzcGFjZVBlclZNLmgKICAgICBoZWFwL0xhcmdlQWxsb2NhdGlvbi5oCiAg
ICAgaGVhcC9MaXN0YWJsZUhhbmRsZXIuaAogICAgIGhlYXAvTG9jYWxBbGxvY2F0b3IuaApJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0Cj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dAkocmV2aXNpb24gMjMwNzIzKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC01MDIsNiArNTAy
LDcgQEAgaGVhcC9JbmNyZW1lbnRhbFN3ZWVwZXIuY3BwCiBoZWFwL0lzb0FsaWduZWRNZW1vcnlB
bGxvY2F0b3IuY3BwCiBoZWFwL0lzb0NlbGxTZXQuY3BwCiBoZWFwL0lzb1N1YnNwYWNlLmNwcAor
aGVhcC9Jc29TdWJzcGFjZVBlclZNLmNwcAogaGVhcC9KSVRTdHViUm91dGluZVNldC5jcHAKIGhl
YXAvTGFyZ2VBbGxvY2F0aW9uLmNwcAogaGVhcC9Mb2NhbEFsbG9jYXRvci5jcHAKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNCYXNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL0FQSS9KU0Jhc2UuaAkocmV2aXNpb24gMjMwNzIzKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL0FQSS9KU0Jhc2UuaAkod29ya2luZyBjb3B5KQpAQCAtMTQzLDcgKzE0Myw3
IEBAIEpTX0VYUE9SVCB2b2lkIEpTR2FyYmFnZUNvbGxlY3QoSlNDb250ZXgKIH0KICNlbmRpZgog
Ci0vKiBFbmFibGUgdGhlIE9iamVjdGl2ZS1DIEFQSSBmb3IgcGxhdGZvcm1zIHdpdGggYSBtb2Rl
cm4gcnVudGltZS4gKi8KKy8qIEVuYWJsZSB0aGUgT2JqZWN0aXZlLUMgQVBJIGZvciBwbGF0Zm9y
bXMgd2l0aCBhIG1vZGVybiBydW50aW1lLiBOT1RFOiBUaGlzIGlzIGR1cGxpY2F0ZWQgaW4gVk0u
aC4gKi8KICNpZiAhZGVmaW5lZChKU0NfT0JKQ19BUElfRU5BQkxFRCkKICNpZiAoZGVmaW5lZChf
X2NsYW5nX18pICYmIGRlZmluZWQoX19BUFBMRV9fKSAmJiAoKGRlZmluZWQoX19NQUNfT1NfWF9W
RVJTSU9OX01JTl9SRVFVSVJFRCkgJiYgIWRlZmluZWQoX19pMzg2X18pKSB8fCAoZGVmaW5lZChU
QVJHRVRfT1NfSVBIT05FKSAmJiBUQVJHRVRfT1NfSVBIT05FKSkpCiAjZGVmaW5lIEpTQ19PQkpD
X0FQSV9FTkFCTEVEIDEKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFj
a0Z1bmN0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0Nh
bGxiYWNrRnVuY3Rpb24uaAkocmV2aXNpb24gMjMwNzIzKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL0FQSS9KU0NhbGxiYWNrRnVuY3Rpb24uaAkod29ya2luZyBjb3B5KQpAQCAtMzcsNiArMzcs
MTIgQEAgY2xhc3MgSlNDYWxsYmFja0Z1bmN0aW9uIGZpbmFsIDogcHVibGljIAogcHVibGljOgog
ICAgIHR5cGVkZWYgSW50ZXJuYWxGdW5jdGlvbiBCYXNlOwogCisgICAgdGVtcGxhdGU8dHlwZW5h
bWUgQ2VsbFR5cGU+CisgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0p
CisgICAgeworICAgICAgICByZXR1cm4gJnZtLmNhbGxiYWNrRnVuY3Rpb25TcGFjZTsKKyAgICB9
CisKICAgICBzdGF0aWMgSlNDYWxsYmFja0Z1bmN0aW9uKiBjcmVhdGUoVk0mLCBKU0dsb2JhbE9i
amVjdCosIEpTT2JqZWN0Q2FsbEFzRnVuY3Rpb25DYWxsYmFjaywgY29uc3QgU3RyaW5nJiBuYW1l
KTsKIAogICAgIERFQ0xBUkVfSU5GTzsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkv
T2JqQ0NhbGxiYWNrRnVuY3Rpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvQVBJL09iakNDYWxsYmFja0Z1bmN0aW9uLmgJKHJldmlzaW9uIDIzMDcyMykKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9BUEkvT2JqQ0NhbGxiYWNrRnVuY3Rpb24uaAkod29ya2luZyBjb3B5
KQpAQCAtNDgsNiArNDgsMTIgQEAgY2xhc3MgT2JqQ0NhbGxiYWNrRnVuY3Rpb24gOiBwdWJsaWMg
SW50ZQogcHVibGljOgogICAgIHR5cGVkZWYgSW50ZXJuYWxGdW5jdGlvbiBCYXNlOwogCisgICAg
dGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGU+CisgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJz
cGFjZUZvcihWTSYgdm0pCisgICAgeworICAgICAgICByZXR1cm4gJnZtLm9iakNDYWxsYmFja0Z1
bmN0aW9uU3BhY2U7CisgICAgfQorCiAgICAgc3RhdGljIE9iakNDYWxsYmFja0Z1bmN0aW9uKiBj
cmVhdGUoVk0mLCBKU0dsb2JhbE9iamVjdCosIGNvbnN0IFN0cmluZyYgbmFtZSwgc3RkOjp1bmlx
dWVfcHRyPE9iakNDYWxsYmFja0Z1bmN0aW9uSW1wbD4pOwogICAgIHN0YXRpYyB2b2lkIGRlc3Ry
b3koSlNDZWxsKik7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvZ2xpYi9KU0ND
YWxsYmFja0Z1bmN0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
QVBJL2dsaWIvSlNDQ2FsbGJhY2tGdW5jdGlvbi5jcHAJKHJldmlzaW9uIDIzMDcyMykKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvZ2xpYi9KU0NDYWxsYmFja0Z1bmN0aW9uLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMjksNiArMjksNyBAQAogCiAjaW5jbHVkZSAiQVBJQ2FsbGJhY2tGdW5j
dGlvbi5oIgogI2luY2x1ZGUgIkFQSUNhc3QuaCIKKyNpbmNsdWRlICJJc29TdWJzcGFjZVBlclZN
LmgiCiAjaW5jbHVkZSAiSlNDQ2xhc3NQcml2YXRlLmgiCiAjaW5jbHVkZSAiSlNDQ29udGV4dFBy
aXZhdGUuaCIKICNpbmNsdWRlICJKU0NFeGNlcHRpb25Qcml2YXRlLmgiCkBAIC0yMDYsNCArMjA3
LDEwIEBAIHZvaWQgSlNDQ2FsbGJhY2tGdW5jdGlvbjo6ZGVzdHJveShKU0NlbGwKICAgICBzdGF0
aWNfY2FzdDxKU0NDYWxsYmFja0Z1bmN0aW9uKj4oY2VsbCktPkpTQ0NhbGxiYWNrRnVuY3Rpb246
On5KU0NDYWxsYmFja0Z1bmN0aW9uKCk7CiB9CiAKK0lzb1N1YnNwYWNlKiBKU0NDYWxsYmFja0Z1
bmN0aW9uOjpzdWJzcGFjZUZvcihWTSYgdm0pCit7CisgICAgTmV2ZXJEZXN0cm95ZWQ8SXNvU3Vi
c3BhY2VQZXJWTT4gcGVyVk0oW10gKFZNJiB2bSkgeyByZXR1cm4gSVNPX1NVQlNQQUNFX1BBUkFN
RVRFUlModm0uZGVzdHJ1Y3RpYmVPYmplY3RIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTQ0NhbGxiYWNr
RnVuY3Rpb24pOyB9KTsKKyAgICByZXR1cm4gcGVyVk0uZ2V0KCkuZm9yVk0odm0pOworfQorCiB9
IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvZ2xpYi9K
U0NDYWxsYmFja0Z1bmN0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L0FQSS9nbGliL0pTQ0NhbGxiYWNrRnVuY3Rpb24uaAkocmV2aXNpb24gMjMwNzIzKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9nbGliL0pTQ0NhbGxiYWNrRnVuY3Rpb24uaAkod29ya2lu
ZyBjb3B5KQpAQCAtNDAsNiArNDAsMTIgQEAgY2xhc3MgSlNDQ2FsbGJhY2tGdW5jdGlvbiA6IHB1
YmxpYyBJbnRlcgogcHVibGljOgogICAgIHR5cGVkZWYgSW50ZXJuYWxGdW5jdGlvbiBCYXNlOwog
CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGU+CisgICAgc3RhdGljIElzb1N1YnNwYWNl
KiBzdWJzcGFjZUZvcihWTSYgdm0pCisgICAgeworICAgICAgICByZXR1cm4gc3Vic3BhY2VGb3JJ
bXBsKCk7CisgICAgfQorCiAgICAgZW51bSBjbGFzcyBUeXBlIHsKICAgICAgICAgRnVuY3Rpb24s
CiAgICAgICAgIE1ldGhvZCwKQEAgLTYxLDYgKzY3LDggQEAgcHVibGljOgogICAgIEpTT2JqZWN0
UmVmIGNvbnN0cnVjdChKU0NvbnRleHRSZWYsIHNpemVfdCBhcmd1bWVudENvdW50LCBjb25zdCBK
U1ZhbHVlUmVmIGFyZ3VtZW50c1tdLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pOwogCiBwcml2YXRl
OgorICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3JJbXBsKFZNJik7CisgICAgCiAg
ICAgSlNDQ2FsbGJhY2tGdW5jdGlvbihWTSYsIFN0cnVjdHVyZSosIFR5cGUsIEpTQ0NsYXNzKiwg
R1JlZlB0cjxHQ2xvc3VyZT4mJiwgR1R5cGUsIFZlY3RvcjxHVHlwZT4mJik7CiAKICAgICBKU09i
amVjdENhbGxBc0Z1bmN0aW9uQ2FsbGJhY2sgZnVuY3Rpb25DYWxsYmFjaygpIHsgcmV0dXJuIG1f
ZnVuY3Rpb25DYWxsYmFjazsgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3Jp
cHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJl
dmlzaW9uIDIzMDcyMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0zNDMsNiArMzQzLDcg
QEAKIAkJMEY1Q0Y5ODQxRTlENTM3NzAwQzE4NjkyIC8qIEFpckxvd2VyU3RhY2tBcmdzLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjVDRjk4MzFFOUQ1
Mzc1MDBDMTg2OTIgLyogQWlyTG93ZXJTdGFja0FyZ3MuaCAqLzsgfTsKIAkJMEY1Q0Y5ODkxRTlF
RDY1MjAwQzE4NjkyIC8qIEFpclN0YWNrQWxsb2NhdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY1Q0Y5ODcxRTlFRDY0RTAwQzE4NjkyIC8qIEFp
clN0YWNrQWxsb2NhdGlvbi5oICovOyB9OwogCQkwRjVFMEZEODIwN0M3MjczMDA5N0YwREUgLyog
REZHQWJzdHJhY3RJbnRlcnByZXRlckNsb2JiZXJTdGF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY1RTBGRDYyMDdDNzI3MTAwOTdGMERFIC8qIERG
R0Fic3RyYWN0SW50ZXJwcmV0ZXJDbG9iYmVyU3RhdGUuaCAqLzsgfTsKKwkJMEY1RTBGRTcyMDg2
QUQ0ODAwOTdGMERFIC8qIElzb1N1YnNwYWNlUGVyVk0uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNUUwRkU1MjA4NkFENDYwMDk3RjBERSAvKiBJc29T
dWJzcGFjZVBlclZNLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJMEY1RUY5MUYxNjg3OEY3RDAwM0U1QzI1IC8qIEpJVFRodW5rcy5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY1RUY5MUMxNjg3OEY3ODAw
M0U1QzI1IC8qIEpJVFRodW5rcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCTBGNUYwOENGMTQ2Qzc2MzMwMDA0NzJBOSAvKiBVbmNvbmRpdGlvbmFs
RmluYWxpemVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAwRjVGMDhDRTE0NkM3NjJGMDAwNDcyQTkgLyogVW5jb25kaXRpb25hbEZpbmFsaXplci5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGNjBGRTkw
MUZGQzM3MDIwMDAzMzIwQSAvKiBFeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjYwRkU4RTFGRkMzNkZEMDAw
MzMyMEEgLyogRXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZS5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0yMzUwLDYgKzIzNTEsOCBAQAogCQkwRjVE
MDg1QzFCOENGOTlEMDAxMTQzQjQgLyogREZHTm9kZU9yaWdpbi5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBERkdOb2RlT3JpZ2luLmNwcDsgcGF0aCA9IGRmZy9ERkdO
b2RlT3JpZ2luLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY1RTBGRDYyMDdD
NzI3MTAwOTdGMERFIC8qIERGR0Fic3RyYWN0SW50ZXJwcmV0ZXJDbG9iYmVyU3RhdGUuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHQWJzdHJhY3RJbnRlcnByZXRlckNsb2Ji
ZXJTdGF0ZS5oOyBwYXRoID0gZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJDbG9iYmVyU3RhdGUu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY1RTBGRDcyMDdDNzI3MTAwOTdGMERF
IC8qIERGR0Fic3RyYWN0SW50ZXJwcmV0ZXJDbG9iYmVyU3RhdGUuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gREZHQWJzdHJhY3RJbnRlcnByZXRlckNsb2JiZXJTdGF0
ZS5jcHA7IHBhdGggPSBkZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlckNsb2JiZXJTdGF0ZS5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGNUUwRkU1MjA4NkFENDYwMDk3RjBERSAv
KiBJc29TdWJzcGFjZVBlclZNLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IElz
b1N1YnNwYWNlUGVyVk0uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY1RTBGRTYy
MDg2QUQ0NzAwOTdGMERFIC8qIElzb1N1YnNwYWNlUGVyVk0uY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gSXNvU3Vic3BhY2VQZXJWTS5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTBGNUVGOTFCMTY4NzhGNzgwMDNFNUMyNSAvKiBKSVRUaHVua3MuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSklUVGh1bmtzLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY1RUY5MUMxNjg3OEY3ODAwM0U1QzI1IC8qIEpJ
VFRodW5rcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKSVRUaHVua3MuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY1RjA4Q0UxNDZDNzYyRjAwMDQ3MkE5IC8q
IFVuY29uZGl0aW9uYWxGaW5hbGl6ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gVW5jb25kaXRpb25hbEZpbmFsaXplci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpA
QCAtNTY5NSw2ICs1Njk4LDggQEAKIAkJCQkwRkI0Njc3QjFGRERBNkQ4MDAzRkNCMDkgLyogSXNv
Q2VsbFNldElubGluZXMuaCAqLywKIAkJCQkwRkRDRTEyQzFGQUZCNERFMDA2RjM5MDEgLyogSXNv
U3Vic3BhY2UuY3BwICovLAogCQkJCTBGRENFMTJCMUZBRkI0REUwMDZGMzkwMSAvKiBJc29TdWJz
cGFjZS5oICovLAorCQkJCTBGNUUwRkU2MjA4NkFENDcwMDk3RjBERSAvKiBJc29TdWJzcGFjZVBl
clZNLmNwcCAqLywKKwkJCQkwRjVFMEZFNTIwODZBRDQ2MDA5N0YwREUgLyogSXNvU3Vic3BhY2VQ
ZXJWTS5oICovLAogCQkJCTBGNzY2RDI5MTVBOENDMzQwMDhGMzYzRSAvKiBKSVRTdHViUm91dGlu
ZVNldC5jcHAgKi8sCiAJCQkJMEY3NjZEMkExNUE4Q0MzNDAwOEYzNjNFIC8qIEpJVFN0dWJSb3V0
aW5lU2V0LmggKi8sCiAJCQkJMEYwNzBBNDUxRDU0M0E4OTAwNkU3MjMyIC8qIExhcmdlQWxsb2Nh
dGlvbi5jcHAgKi8sCkBAIC05NDkxLDYgKzk0OTYsNyBAQAogCQkJCTUzRjhEMjAwMUU4Mzg3RDQw
MEQyMTExNiAvKiBXYXNtQkJRUGxhbklubGluZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUFENEIx
REZBMURGMjQ0RTIwMDcxQUUzMiAvKiBXYXNtQmluZGluZy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
NTI1QzBEREExRTkzNTg0NzAwMjE4NENEIC8qIFdhc21DYWxsZWUuaCBpbiBIZWFkZXJzICovLAor
CQkJCTBGNUUwRkU3MjA4NkFENDgwMDk3RjBERSAvKiBJc29TdWJzcGFjZVBlclZNLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk1M0ZEMDRENDFEN0FCMjkxMDAzMjg3RDMgLyogV2FzbUNhbGxpbmdDb252
ZW50aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MjZBQzRCNzFFOTc3QzVEMDAzNTAwRTEgLyog
V2FzbUNvZGVCbG9jay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQUQ0MTJCMzQxRTdCMkU5RTAwOEFG
MTU3IC8qIFdhc21Db250ZXh0LmggaW4gSGVhZGVycyAqLywKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL0lzb1N1YnNwYWNlUGVyVk0uY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL0lzb1N1YnNwYWNlUGVyVk0uY3BwCShub25leGlzdGVudCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0lzb1N1YnNwYWNlUGVyVk0uY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0wLDAgKzEsNzMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
KyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIklzb1N1YnNwYWNl
UGVyVk0uaCIKKworI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKKworbmFtZXNwYWNlIEpTQyB7CisK
K2NsYXNzIElzb1N1YnNwYWNlUGVyVk06OkF1dG9yZW1vdmluZ0lzb1N1YnNwYWNlIDogcHVibGlj
IElzb1N1YnNwYWNlIHsKK3B1YmxpYzoKKyAgICBBdXRvcmVtb3ZpbmdJc29TdWJzcGFjZShJc29T
dWJzcGFjZVBlclZNJiBwZXJWTSwgQ1N0cmluZyBuYW1lLCBIZWFwJiBoZWFwLCBIZWFwQ2VsbFR5
cGUqIGhlYXBDZWxsVHlwZSwgc2l6ZV90IHNpemUpCisgICAgICAgIDogSXNvU3Vic3BhY2UobmFt
ZSwgaGVhcCwgaGVhcENlbGxUeXBlLCBzaXplKQorICAgICAgICAsIG1fcGVyVk0ocGVyVk0pCisg
ICAgeworICAgIH0KKyAgICAKKyAgICB+QXV0b3JlbW92aW5nSXNvU3Vic3BhY2UoKQorICAgIHsK
KyAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX3BlclZNLm1fbG9jayk7CisgICAgICAg
IG1fcGVyVk0ubV9zdWJzcGFjZVBlclZNLnJlbW92ZShzcGFjZSgpLmhlYXAoKS0+dm0oKSk7Cisg
ICAgfQorCitwcml2YXRlOgorICAgIElzb1N1YnNwYWNlUGVyVk0mIG1fcGVyVk07Cit9OworCitJ
c29TdWJzcGFjZVBlclZNOjpJc29TdWJzcGFjZVBlclZNKEZ1bmN0aW9uPFN1YnNwYWNlUGFyYW1l
dGVycyhWTSYpPiBzdWJzcGFjZVBhcmFtZXRlcnMpCisgICAgOiBtX3N1YnNwYWNlUGFyYW1ldGVy
cyhXVEZNb3ZlKHN1YnNwYWNlUGFyYW1ldGVycykpCit7Cit9CisKK0lzb1N1YnNwYWNlUGVyVk06
On5Jc29TdWJzcGFjZVBlclZNKCkKK3sKKyAgICBVTlJFQUNIQUJMRV9GT1JfUExBVEZPUk0oKTsK
K30KKworSXNvU3Vic3BhY2UmIElzb1N1YnNwYWNlUGVyVk06OmZvclZNKFZNJiB2bSkKK3sKKyAg
ICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fbG9jayk7CisgICAgYXV0byByZXN1bHQgPSBtX3N1
YnNwYWNlUGVyVk0uYWRkKCZ2bSwgbnVsbHB0cik7CisgICAgaWYgKHJlc3VsdCkgeworICAgICAg
ICBTdWJzcGFjZVBhcmFtZXRlcnMgcGFyYW1zID0gbV9zdWJzcGFjZVBhcmFtZXRlcnModm0pOwor
ICAgICAgICByZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gbmV3IEF1dG9yZW1vdmluZ0lzb1N1YnNw
YWNlKCp0aGlzLCBwYXJhbXMubmFtZSwgdm0uaGVhcCwgcGFyYW1zLmhlYXBDZWxsVHlwZSwgcGFy
YW1zLnNpemUpOworICAgIH0KKyAgICByZXR1cm4gKnJlc3VsdC5pdGVyYXRvci0+dmFsdWU7Cit9
CisKK30gLy8gbmFtZXNwYWNlIEpTQworCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVh
cC9Jc29TdWJzcGFjZVBlclZNLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvSXNvU3Vic3BhY2VQZXJWTS5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL0lzb1N1YnNwYWNlUGVyVk0uaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsx
LDczIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
CisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNw
cmFnbWEgb25jZQorCisjaW5jbHVkZSAiSXNvU3Vic3BhY2UuaCIKKyNpbmNsdWRlIDx3dGYvRnVu
Y3Rpb24uaD4KKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9Mb2NrLmg+
CisKK25hbWVzcGFjZSBKU0MgeworCisvLyBUaGlzIGlzIGFuIGFwcHJvcHJpYXRlIHdheSB0byBz
dGFzaCBJc29TdWJzcGFjZXMgZm9yIHJhcmVseS11c2VkIGNsYXNzZXMgb3IgY2xhc3NlcyB0aGF0
IGFyZSBtb3N0bHkKKy8vIHN1cmUgdG8gYmUgbWFpbi10aHJlYWQtb25seS4gQnV0IGlmIGEgY2xh
c3MgdHlwaWNhbGx5IGdldHMgaW5zdGFudGlhdGVkIGZyb20gbXVsdGlwbGUgdGhyZWFkcyBhdAor
Ly8gb25jZSwgdGhlbiB0aGlzIGlzIG5vdCBncmVhdCwgYmVjYXVzZSBjb25jdXJyZW50IGFsbG9j
YXRpb25zIHdpbGwgcHJvYmFibHkgY29udGVuZCBvbiB0aGlzIHRoaW5nJ3MKKy8vIGxvY2suCitj
bGFzcyBJc29TdWJzcGFjZVBlclZNIHsKK3B1YmxpYzoKKyAgICBzdHJ1Y3QgU3Vic3BhY2VQYXJh
bWV0ZXJzIHsKKyAgICAgICAgU3Vic3BhY2VQYXJhbWV0ZXJzKCkgeyB9CisgICAgICAgIAorICAg
ICAgICBTdWJzcGFjZVBhcmFtZXRlcnMoQ1N0cmluZyBuYW1lLCBIZWFwQ2VsbFR5cGUqIGhlYXBD
ZWxsVHlwZSwgc2l6ZV90IHNpemUpCisgICAgICAgICAgICA6IG5hbWUoV1RGTW92ZShuYW1lKSkK
KyAgICAgICAgICAgICwgaGVhcENlbGxUeXBlKGhlYXBDZWxsVHlwZSkKKyAgICAgICAgICAgICwg
c2l6ZShzaXplKQorICAgICAgICB7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIENTdHJp
bmcgbmFtZTsKKyAgICAgICAgSGVhcENlbGxUeXBlKiBoZWFwQ2VsbFR5cGUgeyBudWxscHRyIH07
CisgICAgICAgIHNpemVfdCBzaXplIHsgMCB9OworICAgIH07CisgICAgCisgICAgSlNfRVhQT1JU
X1BSSVZBVEUgSXNvU3Vic3BhY2VQZXJWTShGdW5jdGlvbjxTdWJzcGFjZVBhcmFtZXRlcnMoVk0m
KT4pOworICAgIEpTX0VYUE9SVF9QUklWQVRFIH5Jc29TdWJzcGFjZVBlclZNKCk7CisgICAgCisg
ICAgSlNfRVhQT1JUX1BSSVZBVEUgSXNvU3Vic3BhY2UmIGZvclZNKFZNJik7CisKK3ByaXZhdGU6
CisgICAgY2xhc3MgQXV0b3JlbW92aW5nSXNvU3Vic3BhY2U7CisgICAgZnJpZW5kIGNsYXNzIEF1
dG9yZW1vdmluZ0lzb1N1YnNwYWNlOworCisgICAgTG9jayBtX2xvY2s7CisgICAgSGFzaE1hcDxW
TSosIElzb1N1YnNwYWNlKj4gbV9zdWJzcGFjZVBlclZNOworICAgIEZ1bmN0aW9uPFN1YnNwYWNl
UGFyYW1ldGVycyhWTSYpPiBtX3N1YnNwYWNlUGFyYW1ldGVyczsKK307CisKKyNkZWZpbmUgSVNP
X1NVQlNQQUNFX1BBUkFNRVRFUlMoaGVhcENlbGxUeXBlLCB0eXBlKSBJc29TdWJzcGFjZVBlclZN
OjpTdWJzcGFjZVBhcmFtZXRlcnMoIklzb2xhdGVkICIgI3R5cGUgIiBTcGFjZSIsIChoZWFwQ2Vs
bFR5cGUpLCBzaXplb2YodHlwZSkpCisKK30gLy8gbmFtZXNwYWNlIEpTQworCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvci5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yLmgJKHJldmlzaW9uIDIzMDcyMykKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTExNSw2
ICsxMTUsMTIgQEAgcHJpdmF0ZToKIAogcHVibGljOgogICAgIHR5cGVkZWYgSW50ZXJuYWxGdW5j
dGlvbiBCYXNlOworICAgIAorICAgIHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlPgorICAgIHN0
YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQorICAgIHsKKyAgICAgICAgcmV0
dXJuICZ2bS5zdHJpY3RNb2RlVHlwZUVycm9yRnVuY3Rpb25TcGFjZTsKKyAgICB9CiAKICAgICBz
dGF0aWMgU3RyaWN0TW9kZVR5cGVFcnJvckZ1bmN0aW9uKiBjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKQogICAgIHsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yQ29uc3RydWN0b3IuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvckNvbnN0cnVjdG9yLmgJKHJldmlz
aW9uIDIzMDcyMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yQ29uc3Ry
dWN0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtMSw2ICsxLDYgQEAKIC8qCiAgKiAgQ29weXJpZ2h0
IChDKSAxOTk5LTIwMDAgSGFycmkgUG9ydGVuIChwb3J0ZW5Aa2RlLm9yZykKLSAqICBDb3B5cmln
aHQgKEMpIDIwMDgtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAgQ29w
eXJpZ2h0IChDKSAyMDA4LTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUg
aXQgYW5kL29yCiAgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3Nl
ciBHZW5lcmFsIFB1YmxpYwpAQCAtMzEsNiArMzEsMTIgQEAgY2xhc3MgRXJyb3JDb25zdHJ1Y3Rv
ciBmaW5hbCA6IHB1YmxpYyBJbgogcHVibGljOgogICAgIHR5cGVkZWYgSW50ZXJuYWxGdW5jdGlv
biBCYXNlOwogCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGU+CisgICAgc3RhdGljIElz
b1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCisgICAgeworICAgICAgICByZXR1cm4gJnZt
LmVycm9yQ29uc3RydWN0b3JTcGFjZTsKKyAgICB9CisKICAgICBzdGF0aWMgRXJyb3JDb25zdHJ1
Y3RvciogY3JlYXRlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEVycm9yUHJvdG90eXBl
KiBlcnJvclByb3RvdHlwZSwgR2V0dGVyU2V0dGVyKikKICAgICB7CiAgICAgICAgIEVycm9yQ29u
c3RydWN0b3IqIGNvbnN0cnVjdG9yID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8RXJyb3JD
b25zdHJ1Y3Rvcj4odm0uaGVhcCkpIEVycm9yQ29uc3RydWN0b3Iodm0sIHN0cnVjdHVyZSk7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRlcm5hbEZ1bmN0aW9uLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50ZXJuYWxGdW5jdGlv
bi5oCShyZXZpc2lvbiAyMzA3MjMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9J
bnRlcm5hbEZ1bmN0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTM4LDYgKzM4LDEzIEBAIHB1Ymxp
YzoKICAgICB0eXBlZGVmIEpTRGVzdHJ1Y3RpYmxlT2JqZWN0IEJhc2U7CiAgICAgc3RhdGljIGNv
bnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBJbXBs
ZW1lbnRzSGFzSW5zdGFuY2UgfCBJbXBsZW1lbnRzRGVmYXVsdEhhc0luc3RhbmNlIHwgVHlwZU9m
U2hvdWxkQ2FsbEdldENhbGxEYXRhOwogCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGU+
CisgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCisgICAgeworICAg
ICAgICBzdGF0aWNfYXNzZXJ0KHNpemVvZihDZWxsVHlwZSkgPT0gc2l6ZW9mKEludGVybmFsRnVu
Y3Rpb24pLCAiSW50ZXJuYWxGdW5jdGlvbiBzdWJjbGFzc2VzIHRoYXQgYWRkIGZpZWxkcyBuZWVk
IHRvIG92ZXJyaWRlIHN1YnNwYWNlRm9yPD4oKSIpOworICAgICAgICByZXR1cm4gJnZtLmludGVy
bmFsRnVuY3Rpb25TcGFjZTsKKyAgICB9CisKICAgICBERUNMQVJFX0VYUE9SVF9JTkZPOwogCiAg
ICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBT
bG90VmlzaXRvciYpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bENv
bGxhdG9yQ29uc3RydWN0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9JbnRsQ29sbGF0b3JDb25zdHJ1Y3Rvci5oCShyZXZpc2lvbiAyMzA3MjMpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsQ29sbGF0b3JDb25zdHJ1Y3Rvci5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxNSBB
bmR5IFZhbldhZ29uZXIgKHRoZXRhbGVjcmFmdGVyQGdtYWlsLmNvbSkKKyAqIENvcHlyaWdodCAo
QykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKQEAgLTM5LDYgKzQwLDEyIEBAIHB1YmxpYzoKICAgICB0eXBlZGVmIElu
dGVybmFsRnVuY3Rpb24gQmFzZTsKICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJl
RmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IEhhc1N0YXRpY1Byb3BlcnR5VGFibGU7CiAK
KyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZT4KKyAgICBzdGF0aWMgSXNvU3Vic3BhY2Uq
IHN1YnNwYWNlRm9yKFZNJiB2bSkKKyAgICB7CisgICAgICAgIHJldHVybiAmdm0uaW50bENvbGxh
dG9yQ29uc3RydWN0b3JTcGFjZTsKKyAgICB9CisKICAgICBzdGF0aWMgSW50bENvbGxhdG9yQ29u
c3RydWN0b3IqIGNyZWF0ZShWTSYsIFN0cnVjdHVyZSosIEludGxDb2xsYXRvclByb3RvdHlwZSos
IFN0cnVjdHVyZSopOwogICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYs
IEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSk7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0
b3IuaAkocmV2aXNpb24gMjMwNzIzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsx
LDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQW5keSBWYW5XYWdvbmVyICh0aGV0YWxl
Y3JhZnRlckBnbWFpbC5jb20pCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zOSw2
ICs0MCwxMiBAQCBwdWJsaWM6CiAgICAgdHlwZWRlZiBJbnRlcm5hbEZ1bmN0aW9uIEJhc2U7CiAg
ICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJl
RmxhZ3MgfCBIYXNTdGF0aWNQcm9wZXJ0eVRhYmxlOwogCisgICAgdGVtcGxhdGU8dHlwZW5hbWUg
Q2VsbFR5cGU+CisgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCisg
ICAgeworICAgICAgICByZXR1cm4gJnZtLmludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yU3Bh
Y2U7CisgICAgfQorCiAgICAgc3RhdGljIEludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yKiBj
cmVhdGUoVk0mLCBTdHJ1Y3R1cmUqLCBJbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUqLCBTdHJ1
Y3R1cmUqKTsKICAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mLCBKU0ds
b2JhbE9iamVjdCosIEpTVmFsdWUpOwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9JbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3IuaAkocmV2
aXNpb24gMjMwNzIzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJl
ckZvcm1hdENvbnN0cnVjdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw2IEBACiAvKgog
ICogQ29weXJpZ2h0IChDKSAyMDE1IEFuZHkgVmFuV2Fnb25lciAodGhldGFsZWNyYWZ0ZXJAZ21h
aWwuY29tKQorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzksNiArNDAsMTIgQEAg
cHVibGljOgogICAgIHR5cGVkZWYgSW50ZXJuYWxGdW5jdGlvbiBCYXNlOwogICAgIHN0YXRpYyBj
b25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgSGFz
U3RhdGljUHJvcGVydHlUYWJsZTsKIAorICAgIHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlPgor
ICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQorICAgIHsKKyAgICAg
ICAgcmV0dXJuICZ2bS5pbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3JTcGFjZTsKKyAgICB9CisK
ICAgICBzdGF0aWMgSW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yKiBjcmVhdGUoVk0mLCBTdHJ1
Y3R1cmUqLCBJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlKiwgU3RydWN0dXJlKik7CiAgICAgc3Rh
dGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBKU1Zh
bHVlKTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZl
ckNvbnN0cnVjdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNBcnJheUJ1ZmZlckNvbnN0cnVjdG9yLmgJKHJldmlzaW9uIDIzMDcyMykKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJDb25zdHJ1Y3Rvci5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMywgMjAx
NiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMt
MjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKQEAgLTM3LDYgKzM3LDEyIEBAIGNsYXNzIEpTQXJyYXlCdWZmZXJDb25zdHJ1
Y3RvciBmaW5hbCA6IHAKIHB1YmxpYzoKICAgICB0eXBlZGVmIEludGVybmFsRnVuY3Rpb24gQmFz
ZTsKIAorICAgIHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlPgorICAgIHN0YXRpYyBJc29TdWJz
cGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQorICAgIHsKKyAgICAgICAgcmV0dXJuICZ2bS5hcnJh
eUJ1ZmZlckNvbnN0cnVjdG9yU3BhY2U7CisgICAgfQorCiBwcm90ZWN0ZWQ6CiAgICAgSlNBcnJh
eUJ1ZmZlckNvbnN0cnVjdG9yKFZNJiwgU3RydWN0dXJlKiwgQXJyYXlCdWZmZXJTaGFyaW5nTW9k
ZSk7CiAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYsIEpTQXJyYXlCdWZmZXJQcm90b3R5cGUq
LCBHZXR0ZXJTZXR0ZXIqIHNwZWNpZXNTeW1ib2wpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvci5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05hdGl2ZUVycm9yQ29uc3RydWN0b3IuaAkocmV2aXNp
b24gMjMwNzIzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZlRXJyb3JD
b25zdHJ1Y3Rvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEsNiBAQAogLyoKICAqICBDb3B5
cmlnaHQgKEMpIDE5OTktMjAwMCBIYXJyaSBQb3J0ZW4gKHBvcnRlbkBrZGUub3JnKQotICogIENv
cHlyaWdodCAoQykgMjAwOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAgQ29w
eXJpZ2h0IChDKSAyMDA4LTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUg
aXQgYW5kL29yCiAgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3Nl
ciBHZW5lcmFsIFB1YmxpYwpAQCAtMzMsNiArMzMsMTIgQEAgY2xhc3MgTmF0aXZlRXJyb3JDb25z
dHJ1Y3RvciBmaW5hbCA6IHB1YgogcHVibGljOgogICAgIHR5cGVkZWYgSW50ZXJuYWxGdW5jdGlv
biBCYXNlOwogCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGU+CisgICAgc3RhdGljIElz
b1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCisgICAgeworICAgICAgICByZXR1cm4gJnZt
Lm5hdGl2ZUVycm9yQ29uc3RydWN0b3JTcGFjZTsKKyAgICB9CisKICAgICBzdGF0aWMgTmF0aXZl
RXJyb3JDb25zdHJ1Y3RvciogY3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFN0cnVjdHVyZSogcHJvdG90eXBlU3RydWN0dXJl
LCBjb25zdCBTdHJpbmcmIG5hbWUpCiAgICAgewogICAgICAgICBOYXRpdmVFcnJvckNvbnN0cnVj
dG9yKiBjb25zdHJ1Y3RvciA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPE5hdGl2ZUVycm9y
Q29uc3RydWN0b3I+KHZtLmhlYXApKSBOYXRpdmVFcnJvckNvbnN0cnVjdG9yKHZtLCBzdHJ1Y3R1
cmUpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJveHlSZXZva2UuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm94eVJldm9rZS5o
CShyZXZpc2lvbiAyMzA3MjMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm94
eVJldm9rZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw2ICszNiwxMiBAQCBwdWJsaWM6CiAgICAg
dHlwZWRlZiBJbnRlcm5hbEZ1bmN0aW9uIEJhc2U7CiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVk
IFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3M7CiAKKyAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBDZWxsVHlwZT4KKyAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZN
JiB2bSkKKyAgICB7CisgICAgICAgIHJldHVybiAmdm0ucHJveHlSZXZva2VTcGFjZTsKKyAgICB9
CisKICAgICBzdGF0aWMgUHJveHlSZXZva2UqIGNyZWF0ZShWTSYsIFN0cnVjdHVyZSosIFByb3h5
T2JqZWN0Kik7CiAKICAgICBERUNMQVJFX0lORk87CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9SZWdFeHBDb25zdHJ1Y3Rvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cENvbnN0cnVjdG9yLmgJKHJldmlzaW9uIDIzMDcyMykK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cENvbnN0cnVjdG9yLmgJKHdv
cmtpbmcgY29weSkKQEAgLTEsNiArMSw2IEBACiAvKgogICogIENvcHlyaWdodCAoQykgMTk5OS0y
MDAwIEhhcnJpIFBvcnRlbiAocG9ydGVuQGtkZS5vcmcpCi0gKiAgQ29weXJpZ2h0IChDKSAyMDAz
LCAyMDA3LTIwMDgsIDIwMTYgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICogIENv
cHlyaWdodCAoQykgMjAwMy0yMDE4IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAq
CiAgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRl
IGl0IGFuZC9vcgogICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNz
ZXIgR2VuZXJhbCBQdWJsaWMKQEAgLTM1LDYgKzM1LDEyIEBAIHB1YmxpYzoKICAgICB0eXBlZGVm
IEludGVybmFsRnVuY3Rpb24gQmFzZTsKICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0
dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IEhhc1N0YXRpY1Byb3BlcnR5VGFibGU7
CiAKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZT4KKyAgICBzdGF0aWMgSXNvU3Vic3Bh
Y2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKKyAgICB7CisgICAgICAgIHJldHVybiAmdm0ucmVnRXhw
Q29uc3RydWN0b3JTcGFjZTsKKyAgICB9CisKICAgICBzdGF0aWMgUmVnRXhwQ29uc3RydWN0b3Iq
IGNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBSZWdFeHBQcm90b3R5cGUqIHJl
Z0V4cFByb3RvdHlwZSwgR2V0dGVyU2V0dGVyKiBzcGVjaWVzKQogICAgIHsKICAgICAgICAgUmVn
RXhwQ29uc3RydWN0b3IqIGNvbnN0cnVjdG9yID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8
UmVnRXhwQ29uc3RydWN0b3I+KHZtLmhlYXApKSBSZWdFeHBDb25zdHJ1Y3Rvcih2bSwgc3RydWN0
dXJlLCByZWdFeHBQcm90b3R5cGUpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvVk0uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZN
LmNwcAkocmV2aXNpb24gMjMwNzIzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Vk0uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MSw2ICs0MSw4IEBACiAjaW5jbHVkZSAiREZHV29y
a2xpc3QuaCIKICNpbmNsdWRlICJEaXJlY3RFdmFsRXhlY3V0YWJsZS5oIgogI2luY2x1ZGUgIkRp
c2Fzc2VtYmxlci5oIgorI2luY2x1ZGUgIkVycm9yLmgiCisjaW5jbHVkZSAiRXJyb3JDb25zdHJ1
Y3Rvci5oIgogI2luY2x1ZGUgIkVycm9ySW5zdGFuY2UuaCIKICNpbmNsdWRlICJFdmFsQ29kZUJs
b2NrLmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uLmgiCkBAIC02NCwxNCArNjYsMTkgQEAKICNpbmNs
dWRlICJJbmZlcnJlZFR5cGVUYWJsZS5oIgogI2luY2x1ZGUgIkluZmVycmVkVmFsdWUuaCIKICNp
bmNsdWRlICJJbnRlcnByZXRlci5oIgorI2luY2x1ZGUgIkludGxDb2xsYXRvckNvbnN0cnVjdG9y
LmgiCisjaW5jbHVkZSAiSW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3IuaCIKKyNpbmNsdWRl
ICJJbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJKSVRDb2RlLmgiCiAj
aW5jbHVkZSAiSklUV29ya2xpc3QuaCIKICNpbmNsdWRlICJKU0FQSVZhbHVlV3JhcHBlci5oIgog
I2luY2x1ZGUgIkpTQXJyYXkuaCIKKyNpbmNsdWRlICJKU0FycmF5QnVmZmVyQ29uc3RydWN0b3Iu
aCIKICNpbmNsdWRlICJKU0FzeW5jRnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU0JpZ0ludC5oIgog
I2luY2x1ZGUgIkpTQm91bmRGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKKyNp
bmNsdWRlICJKU0NhbGxiYWNrRnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU0N1c3RvbUdldHRlclNl
dHRlckZ1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNEZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5
cGUuaCIKICNpbmNsdWRlICJKU0ZpeGVkQXJyYXkuaCIKQEAgLTEwMywxNiArMTEwLDIwIEBACiAj
aW5jbHVkZSAiTWluaW11bVJlc2VydmVkWm9uZVNpemUuaCIKICNpbmNsdWRlICJNb2R1bGVQcm9n
cmFtQ29kZUJsb2NrLmgiCiAjaW5jbHVkZSAiTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUuaCIKKyNp
bmNsdWRlICJOYXRpdmVFcnJvckNvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAiTmF0aXZlRXhlY3V0
YWJsZS5oIgogI2luY2x1ZGUgIk5hdGl2ZVN0ZEZ1bmN0aW9uQ2VsbC5oIgogI2luY2x1ZGUgIk5v
ZGVzLmgiCisjaW5jbHVkZSAiT2JqQ0NhbGxiYWNrRnVuY3Rpb24uaCIKICNpbmNsdWRlICJQYXJz
ZXIuaCIKICNpbmNsdWRlICJQcm9maWxlckRhdGFiYXNlLmgiCiAjaW5jbHVkZSAiUHJvZ3JhbUNv
ZGVCbG9jay5oIgogI2luY2x1ZGUgIlByb2dyYW1FeGVjdXRhYmxlLmgiCiAjaW5jbHVkZSAiUHJv
bWlzZURlZmVycmVkVGltZXIuaCIKICNpbmNsdWRlICJQcm9wZXJ0eU1hcEhhc2hUYWJsZS5oIgor
I2luY2x1ZGUgIlByb3h5UmV2b2tlLmgiCiAjaW5jbHVkZSAiUmVnRXhwQ2FjaGUuaCIKKyNpbmNs
dWRlICJSZWdFeHBDb25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUgIlJlZ0V4cE9iamVjdC5oIgogI2lu
Y2x1ZGUgIlJlZ2lzdGVyQXRPZmZzZXRMaXN0LmgiCiAjaW5jbHVkZSAiUnVudGltZVR5cGUuaCIK
QEAgLTI1NCwxMSArMjY1LDE0IEBAIFZNOjpWTShWTVR5cGUgdm1UeXBlLCBIZWFwVHlwZSBoZWFw
VHlwZSkKICAgICAsIGRlc3RydWN0aWJsZU9iamVjdFNwYWNlKCJKU0Rlc3RydWN0aWJsZU9iamVj
dCIsIGhlYXAsIGRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5nZXQoKSwgZmFzdE1hbGxv
Y0FsbG9jYXRvci5nZXQoKSkKICAgICAsIGVhZ2VybHlTd2VwdERlc3RydWN0aWJsZU9iamVjdFNw
YWNlKCJFYWdlcmx5IFN3ZXB0IEpTRGVzdHJ1Y3RpYmxlT2JqZWN0IiwgaGVhcCwgZGVzdHJ1Y3Rp
YmxlT2JqZWN0SGVhcENlbGxUeXBlLmdldCgpLCBmYXN0TWFsbG9jQWxsb2NhdG9yLmdldCgpKQog
ICAgICwgc2VnbWVudGVkVmFyaWFibGVPYmplY3RTcGFjZSgiSlNTZWdtZW50ZWRWYXJpYWJsZU9i
amVjdFNwYWNlIiwgaGVhcCwgc2VnbWVudGVkVmFyaWFibGVPYmplY3RIZWFwQ2VsbFR5cGUuZ2V0
KCksIGZhc3RNYWxsb2NBbGxvY2F0b3IuZ2V0KCkpCisgICAgLCBhcnJheUJ1ZmZlckNvbnN0cnVj
dG9yU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoaGVhcCwgZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENl
bGxUeXBlLmdldCgpLCBKU0FycmF5QnVmZmVyQ29uc3RydWN0b3IpCiAgICAgLCBhc3luY0Z1bmN0
aW9uU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoaGVhcCwgY2VsbEpTVmFsdWVPT0JIZWFwQ2VsbFR5
cGUuZ2V0KCksIEpTQXN5bmNGdW5jdGlvbikKICAgICAsIGFzeW5jR2VuZXJhdG9yRnVuY3Rpb25T
cGFjZSBJU09fU1VCU1BBQ0VfSU5JVChoZWFwLCBjZWxsSlNWYWx1ZU9PQkhlYXBDZWxsVHlwZS5n
ZXQoKSwgSlNBc3luY0dlbmVyYXRvckZ1bmN0aW9uKQogICAgICwgYm91bmRGdW5jdGlvblNwYWNl
IElTT19TVUJTUEFDRV9JTklUKGhlYXAsIGNlbGxKU1ZhbHVlT09CSGVhcENlbGxUeXBlLmdldCgp
LCBKU0JvdW5kRnVuY3Rpb24pCisgICAgLCBjYWxsYmFja0Z1bmN0aW9uU3BhY2UgSVNPX1NVQlNQ
QUNFX0lOSVQoaGVhcCwgZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmdldCgpLCBKU0Nh
bGxiYWNrRnVuY3Rpb24pCiAgICAgLCBjdXN0b21HZXR0ZXJTZXR0ZXJGdW5jdGlvblNwYWNlIElT
T19TVUJTUEFDRV9JTklUKGhlYXAsIGNlbGxKU1ZhbHVlT09CSGVhcENlbGxUeXBlLmdldCgpLCBK
U0N1c3RvbUdldHRlclNldHRlckZ1bmN0aW9uKQogICAgICwgZGlyZWN0RXZhbEV4ZWN1dGFibGVT
cGFjZSBJU09fU1VCU1BBQ0VfSU5JVChoZWFwLCBkZXN0cnVjdGlibGVDZWxsSGVhcENlbGxUeXBl
LmdldCgpLCBEaXJlY3RFdmFsRXhlY3V0YWJsZSkKKyAgICAsIGVycm9yQ29uc3RydWN0b3JTcGFj
ZSBJU09fU1VCU1BBQ0VfSU5JVChoZWFwLCBkZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUu
Z2V0KCksIEVycm9yQ29uc3RydWN0b3IpCiAgICAgLCBleGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdl
U3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoaGVhcCwgY2VsbERhbmdlcm91c0JpdHNIZWFwQ2VsbFR5
cGUuZ2V0KCksIEV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2UpCiAgICAgLCBmdW5jdGlvbkV4ZWN1
dGFibGVTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVChoZWFwLCBkZXN0cnVjdGlibGVDZWxsSGVhcENl
bGxUeXBlLmdldCgpLCBGdW5jdGlvbkV4ZWN1dGFibGUpCiAgICAgLCBmdW5jdGlvblNwYWNlIElT
T19TVUJTUEFDRV9JTklUKGhlYXAsIGNlbGxKU1ZhbHVlT09CSGVhcENlbGxUeXBlLmdldCgpLCBK
U0Z1bmN0aW9uKQpAQCAtMjY2LDExICsyODAsMjQgQEAgVk06OlZNKFZNVHlwZSB2bVR5cGUsIEhl
YXBUeXBlIGhlYXBUeXBlKQogICAgICwgaW5kaXJlY3RFdmFsRXhlY3V0YWJsZVNwYWNlIElTT19T
VUJTUEFDRV9JTklUKGhlYXAsIGRlc3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIElu
ZGlyZWN0RXZhbEV4ZWN1dGFibGUpCiAgICAgLCBpbmZlcnJlZFR5cGVTcGFjZSBJU09fU1VCU1BB
Q0VfSU5JVChoZWFwLCBkZXN0cnVjdGlibGVDZWxsSGVhcENlbGxUeXBlLmdldCgpLCBJbmZlcnJl
ZFR5cGUpCiAgICAgLCBpbmZlcnJlZFZhbHVlU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoaGVhcCwg
ZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgSW5mZXJyZWRWYWx1ZSkKKyAgICAs
IGludGVybmFsRnVuY3Rpb25TcGFjZSBJU09fU1VCU1BBQ0VfSU5JVChoZWFwLCBkZXN0cnVjdGli
bGVPYmplY3RIZWFwQ2VsbFR5cGUuZ2V0KCksIEludGVybmFsRnVuY3Rpb24pCisjaWYgRU5BQkxF
KElOVEwpCisgICAgLCBpbnRsQ29sbGF0b3JDb25zdHJ1Y3RvclNwYWNlIElTT19TVUJTUEFDRV9J
TklUKGhlYXAsIGRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5nZXQoKSwgSW50bENvbGxh
dG9yQ29uc3RydWN0b3IpCisgICAgLCBpbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3RvclNwYWNl
IElTT19TVUJTUEFDRV9JTklUKGhlYXAsIGRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5n
ZXQoKSwgSW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3IpCisgICAgLCBpbnRsTnVtYmVyRm9y
bWF0Q29uc3RydWN0b3JTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVChoZWFwLCBkZXN0cnVjdGlibGVP
YmplY3RIZWFwQ2VsbFR5cGUuZ2V0KCksIEludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3RvcikKKyNl
bmRpZgogICAgICwgbW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGVTcGFjZSBJU09fU1VCU1BBQ0VfSU5J
VChoZWFwLCBkZXN0cnVjdGlibGVDZWxsSGVhcENlbGxUeXBlLmdldCgpLCBNb2R1bGVQcm9ncmFt
RXhlY3V0YWJsZSkKKyAgICAsIG5hdGl2ZUVycm9yQ29uc3RydWN0b3JTcGFjZSBJU09fU1VCU1BB
Q0VfSU5JVChoZWFwLCBkZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuZ2V0KCksIE5hdGl2
ZUVycm9yQ29uc3RydWN0b3IpCiAgICAgLCBuYXRpdmVFeGVjdXRhYmxlU3BhY2UgSVNPX1NVQlNQ
QUNFX0lOSVQoaGVhcCwgZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgTmF0aXZl
RXhlY3V0YWJsZSkKICAgICAsIG5hdGl2ZVN0ZEZ1bmN0aW9uU3BhY2UgSVNPX1NVQlNQQUNFX0lO
SVQoaGVhcCwgY2VsbEpTVmFsdWVPT0JIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTTmF0aXZlU3RkRnVu
Y3Rpb24pCisjaWYgSlNDX09CSkNfQVBJX0VOQUJMRUQKKyAgICAsIG9iakNDYWxsYmFja0Z1bmN0
aW9uU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoaGVhcCwgZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENl
bGxUeXBlLmdldCgpLCBPYmpDQ2FsbGJhY2tGdW5jdGlvbikKKyNlbmRpZgogICAgICwgcHJvZ3Jh
bUV4ZWN1dGFibGVTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVChoZWFwLCBkZXN0cnVjdGlibGVDZWxs
SGVhcENlbGxUeXBlLmdldCgpLCBQcm9ncmFtRXhlY3V0YWJsZSkKICAgICAsIHByb3BlcnR5VGFi
bGVTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVChoZWFwLCBkZXN0cnVjdGlibGVDZWxsSGVhcENlbGxU
eXBlLmdldCgpLCBQcm9wZXJ0eVRhYmxlKQorICAgICwgcHJveHlSZXZva2VTcGFjZSBJU09fU1VC
U1BBQ0VfSU5JVChoZWFwLCBkZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuZ2V0KCksIFBy
b3h5UmV2b2tlKQorICAgICwgcmVnRXhwQ29uc3RydWN0b3JTcGFjZSBJU09fU1VCU1BBQ0VfSU5J
VChoZWFwLCBkZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuZ2V0KCksIFJlZ0V4cENvbnN0
cnVjdG9yKQorICAgICwgc3RyaWN0TW9kZVR5cGVFcnJvckZ1bmN0aW9uU3BhY2UgSVNPX1NVQlNQ
QUNFX0lOSVQoaGVhcCwgZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmdldCgpLCBTdHJp
Y3RNb2RlVHlwZUVycm9yRnVuY3Rpb24pCiAgICAgLCBzdHJ1Y3R1cmVSYXJlRGF0YVNwYWNlIElT
T19TVUJTUEFDRV9JTklUKGhlYXAsIGRlc3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCks
IFN0cnVjdHVyZVJhcmVEYXRhKQogICAgICwgc3RydWN0dXJlU3BhY2UgSVNPX1NVQlNQQUNFX0lO
SVQoaGVhcCwgZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgU3RydWN0dXJlKQog
ICAgICwgd2Vha1NldFNwYWNlIElTT19TVUJTUEFDRV9JTklUKGhlYXAsIGRlc3RydWN0aWJsZU9i
amVjdEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNXZWFrU2V0KQpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvVk0uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9WTS5oCShyZXZpc2lvbiAyMzA3MjMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9WTS5oCSh3b3JraW5nIGNvcHkpCkBAIC04MCw2ICs4MCwxNiBAQAogI2luY2x1ZGUg
PHd0Zi9TdGFja1RyYWNlLmg+CiAjZW5kaWYKIAorLy8gRW5hYmxlIHRoZSBPYmplY3RpdmUtQyBB
UEkgZm9yIHBsYXRmb3JtcyB3aXRoIGEgbW9kZXJuIHJ1bnRpbWUuIFRoaXMgaGFzIHRvIG1hdGNo
IGV4YWN0bHkgd2hhdCB3ZQorLy8gaGF2ZSBpbiBKU0Jhc2UuaC4KKyNpZiAhZGVmaW5lZChKU0Nf
T0JKQ19BUElfRU5BQkxFRCkKKyNpZiAoZGVmaW5lZChfX2NsYW5nX18pICYmIGRlZmluZWQoX19B
UFBMRV9fKSAmJiAoKGRlZmluZWQoX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCkgJiYg
IWRlZmluZWQoX19pMzg2X18pKSB8fCAoZGVmaW5lZChUQVJHRVRfT1NfSVBIT05FKSAmJiBUQVJH
RVRfT1NfSVBIT05FKSkpCisjZGVmaW5lIEpTQ19PQkpDX0FQSV9FTkFCTEVEIDEKKyNlbHNlCisj
ZGVmaW5lIEpTQ19PQkpDX0FQSV9FTkFCTEVEIDAKKyNlbmRpZgorI2VuZGlmCisKIG5hbWVzcGFj
ZSBXVEYgewogY2xhc3MgU2ltcGxlU3RhdHM7CiB9IC8vIG5hbWVzcGFjZSBXVEYKQEAgLTMzNywx
MSArMzQ3LDE0IEBAIHB1YmxpYzoKICAgICBDb21wbGV0ZVN1YnNwYWNlIGVhZ2VybHlTd2VwdERl
c3RydWN0aWJsZU9iamVjdFNwYWNlOwogICAgIENvbXBsZXRlU3Vic3BhY2Ugc2VnbWVudGVkVmFy
aWFibGVPYmplY3RTcGFjZTsKICAgICAKKyAgICBJc29TdWJzcGFjZSBhcnJheUJ1ZmZlckNvbnN0
cnVjdG9yU3BhY2U7CiAgICAgSXNvU3Vic3BhY2UgYXN5bmNGdW5jdGlvblNwYWNlOwogICAgIElz
b1N1YnNwYWNlIGFzeW5jR2VuZXJhdG9yRnVuY3Rpb25TcGFjZTsKICAgICBJc29TdWJzcGFjZSBi
b3VuZEZ1bmN0aW9uU3BhY2U7CisgICAgSXNvU3Vic3BhY2UgY2FsbGJhY2tGdW5jdGlvblNwYWNl
OwogICAgIElzb1N1YnNwYWNlIGN1c3RvbUdldHRlclNldHRlckZ1bmN0aW9uU3BhY2U7CiAgICAg
SXNvU3Vic3BhY2UgZGlyZWN0RXZhbEV4ZWN1dGFibGVTcGFjZTsKKyAgICBJc29TdWJzcGFjZSBl
cnJvckNvbnN0cnVjdG9yU3BhY2U7CiAgICAgSXNvU3Vic3BhY2UgZXhlY3V0YWJsZVRvQ29kZUJs
b2NrRWRnZVNwYWNlOwogICAgIElzb1N1YnNwYWNlIGZ1bmN0aW9uRXhlY3V0YWJsZVNwYWNlOwog
ICAgIElzb1N1YnNwYWNlIGZ1bmN0aW9uU3BhY2U7CkBAIC0zNDksMTEgKzM2MiwyNCBAQCBwdWJs
aWM6CiAgICAgSXNvU3Vic3BhY2UgaW5kaXJlY3RFdmFsRXhlY3V0YWJsZVNwYWNlOwogICAgIElz
b1N1YnNwYWNlIGluZmVycmVkVHlwZVNwYWNlOwogICAgIElzb1N1YnNwYWNlIGluZmVycmVkVmFs
dWVTcGFjZTsKKyAgICBJc29TdWJzcGFjZSBpbnRlcm5hbEZ1bmN0aW9uU3BhY2U7CisjaWYgRU5B
QkxFKElOVEwpCisgICAgSXNvU3Vic3BhY2UgaW50bENvbGxhdG9yQ29uc3RydWN0b3JTcGFjZTsK
KyAgICBJc29TdWJzcGFjZSBpbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3RvclNwYWNlOworICAg
IElzb1N1YnNwYWNlIGludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3RvclNwYWNlOworI2VuZGlmCiAg
ICAgSXNvU3Vic3BhY2UgbW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGVTcGFjZTsKKyAgICBJc29TdWJz
cGFjZSBuYXRpdmVFcnJvckNvbnN0cnVjdG9yU3BhY2U7CiAgICAgSXNvU3Vic3BhY2UgbmF0aXZl
RXhlY3V0YWJsZVNwYWNlOwogICAgIElzb1N1YnNwYWNlIG5hdGl2ZVN0ZEZ1bmN0aW9uU3BhY2U7
CisjaWYgSlNDX09CSkNfQVBJX0VOQUJMRUQKKyAgICBJc29TdWJzcGFjZSBvYmpDQ2FsbGJhY2tG
dW5jdGlvblNwYWNlOworI2VuZGlmCiAgICAgSXNvU3Vic3BhY2UgcHJvZ3JhbUV4ZWN1dGFibGVT
cGFjZTsKICAgICBJc29TdWJzcGFjZSBwcm9wZXJ0eVRhYmxlU3BhY2U7CisgICAgSXNvU3Vic3Bh
Y2UgcHJveHlSZXZva2VTcGFjZTsKKyAgICBJc29TdWJzcGFjZSByZWdFeHBDb25zdHJ1Y3RvclNw
YWNlOworICAgIElzb1N1YnNwYWNlIHN0cmljdE1vZGVUeXBlRXJyb3JGdW5jdGlvblNwYWNlOwog
ICAgIElzb1N1YnNwYWNlIHN0cnVjdHVyZVJhcmVEYXRhU3BhY2U7CiAgICAgSXNvU3Vic3BhY2Ug
c3RydWN0dXJlU3BhY2U7CiAgICAgSXNvU3Vic3BhY2Ugd2Vha1NldFNwYWNlOwpJbmRleDogU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkocmV2aXNpb24gMjMwNzIzKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTgtMDQtMTcgIEZpbGlwIFBpemxvICA8ZnBp
emxvQGFwcGxlLmNvbT4KKworICAgICAgICBUaGUgSW50ZXJuYWxGdW5jdGlvbiBoaWVyYXJjaHkg
c2hvdWxkIGJlIGluIElzb1N1YnNwYWNlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTg0NzIxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIGJlY2F1c2Ugbm8gbmV3IGJlaGF2aW9yLgor
CisgICAgICAgICogYmluZGluZ3MvanMvV2ViQ29yZUpTQ2xpZW50RGF0YS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpKU1ZNQ2xpZW50RGF0YTo6SlNWTUNsaWVudERhdGEpOgorICAgICAgICAqIGJp
bmRpbmdzL2pzL1dlYkNvcmVKU0NsaWVudERhdGEuaDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVk1D
bGllbnREYXRhOjpydW50aW1lTWV0aG9kU3BhY2UpOgorICAgICAgICAqIGJyaWRnZS9ydW50aW1l
X21ldGhvZC5jcHA6CisgICAgICAgIChKU0M6OlJ1bnRpbWVNZXRob2Q6OnN1YnNwYWNlRm9ySW1w
bCk6CisgICAgICAgICogYnJpZGdlL3J1bnRpbWVfbWV0aG9kLmg6CisKIDIwMTgtMDQtMTcgIENo
cmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBSRUdSRVNTSU9OIChyMjI5
ODMxKTogQ01ELWNsaWNraW5nIGFuIGlDbG91ZCB3ZWIgYXBwIGxpbmsgdW5leHBlY3RlZGx5IG9w
ZW5zIHRoYXQgbGluayBpbiBhIG5ldyB0YWIgYW5kIHRoZSBjdXJyZW50IHRhYgpJbmRleDogU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV2ViQ29yZUpTQ2xpZW50RGF0YS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV2ViQ29yZUpTQ2xpZW50RGF0YS5jcHAJ
KHJldmlzaW9uIDIzMDcyMykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dlYkNvcmVK
U0NsaWVudERhdGEuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw2ICszNSw3IEBACiAjaW5jbHVk
ZSA8SmF2YVNjcmlwdENvcmUvTWFya2luZ0NvbnN0cmFpbnQuaD4KICNpbmNsdWRlIDxKYXZhU2Ny
aXB0Q29yZS9TdWJzcGFjZUlubGluZXMuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9WTS5o
PgorI2luY2x1ZGUgInJ1bnRpbWVfbWV0aG9kLmgiCiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQu
aD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNDMsNiArNDQsNyBAQCB1c2luZyBuYW1lc3Bh
Y2UgSlNDOwogSlNWTUNsaWVudERhdGE6OkpTVk1DbGllbnREYXRhKFZNJiB2bSkKICAgICA6IG1f
YnVpbHRpbkZ1bmN0aW9ucyh2bSkKICAgICAsIG1fYnVpbHRpbk5hbWVzKCZ2bSkKKyAgICAsIG1f
cnVudGltZU1ldGhvZFNwYWNlIElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0
aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5nZXQoKSwgUnVudGltZU1ldGhvZCkKICAgICAsIG1fb3V0
cHV0Q29uc3RyYWludFNwYWNlKCJXZWJDb3JlIFdyYXBwZXIgdy8gT3V0cHV0IENvbnN0cmFpbnQi
LCB2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuZ2V0KCksIHZtLmZh
c3RNYWxsb2NBbGxvY2F0b3IuZ2V0KCkpCiAgICAgLCBtX2dsb2JhbE9iamVjdE91dHB1dENvbnN0
cmFpbnRTcGFjZSgiV2ViQ29yZSBHbG9iYWwgT2JqZWN0IHcvIE91dHB1dCBDb25zdHJhaW50Iiwg
dm0uaGVhcCwgdm0uc2VnbWVudGVkVmFyaWFibGVPYmplY3RIZWFwQ2VsbFR5cGUuZ2V0KCksIHZt
LmZhc3RNYWxsb2NBbGxvY2F0b3IuZ2V0KCkpCiB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9XZWJDb3JlSlNDbGllbnREYXRhLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvV2ViQ29yZUpTQ2xpZW50RGF0YS5oCShyZXZpc2lvbiAyMzA3MjMpCisr
KyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9XZWJDb3JlSlNDbGllbnREYXRhLmgJKHdvcmtp
bmcgY29weSkKQEAgLTU5LDYgKzU5LDggQEAgcHVibGljOgogICAgIFdlYkNvcmVCdWlsdGluTmFt
ZXMmIGJ1aWx0aW5OYW1lcygpIHsgcmV0dXJuIG1fYnVpbHRpbk5hbWVzOyB9CiAgICAgSlNCdWls
dGluRnVuY3Rpb25zJiBidWlsdGluRnVuY3Rpb25zKCkgeyByZXR1cm4gbV9idWlsdGluRnVuY3Rp
b25zOyB9CiAgICAgCisgICAgSlNDOjpJc29TdWJzcGFjZSYgcnVudGltZU1ldGhvZFNwYWNlKCkg
eyByZXR1cm4gbV9ydW50aW1lTWV0aG9kU3BhY2U7IH0KKyAgICAKICAgICBKU0M6OkNvbXBsZXRl
U3Vic3BhY2UmIG91dHB1dENvbnN0cmFpbnRTcGFjZSgpIHsgcmV0dXJuIG1fb3V0cHV0Q29uc3Ry
YWludFNwYWNlOyB9CiAgICAgSlNDOjpDb21wbGV0ZVN1YnNwYWNlJiBnbG9iYWxPYmplY3RPdXRw
dXRDb25zdHJhaW50U3BhY2UoKSB7IHJldHVybiBtX2dsb2JhbE9iamVjdE91dHB1dENvbnN0cmFp
bnRTcGFjZTsgfQogICAgIApAQCAtNzYsNiArNzgsOCBAQCBwcml2YXRlOgogICAgIEpTQnVpbHRp
bkZ1bmN0aW9ucyBtX2J1aWx0aW5GdW5jdGlvbnM7CiAgICAgV2ViQ29yZUJ1aWx0aW5OYW1lcyBt
X2J1aWx0aW5OYW1lczsKICAgICAKKyAgICBKU0M6Oklzb1N1YnNwYWNlIG1fcnVudGltZU1ldGhv
ZFNwYWNlOworICAgIAogICAgIEpTQzo6Q29tcGxldGVTdWJzcGFjZSBtX291dHB1dENvbnN0cmFp
bnRTcGFjZTsKICAgICBKU0M6OkNvbXBsZXRlU3Vic3BhY2UgbV9nbG9iYWxPYmplY3RPdXRwdXRD
b25zdHJhaW50U3BhY2U7CiB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVf
bWV0aG9kLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9t
ZXRob2QuY3BwCShyZXZpc2lvbiAyMzA3MjMpCisrKyBTb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVu
dGltZV9tZXRob2QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENv
cHlyaWdodCAoQykgMjAwMywgMjAwOCwgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDMtMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI5LDYgKzI5LDcgQEAK
ICNpbmNsdWRlICJKU0RPTUJpbmRpbmcuaCIKICNpbmNsdWRlICJKU0hUTUxFbGVtZW50LmgiCiAj
aW5jbHVkZSAiSlNQbHVnaW5FbGVtZW50RnVuY3Rpb25zLmgiCisjaW5jbHVkZSAiV2ViQ29yZUpT
Q2xpZW50RGF0YS5oIgogI2luY2x1ZGUgInJ1bnRpbWVfb2JqZWN0LmgiCiAjaW5jbHVkZSA8SmF2
YVNjcmlwdENvcmUvRXJyb3IuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9GdW5jdGlvblBy
b3RvdHlwZS5oPgpAQCAtNzksNiArODAsMTEgQEAgYm9vbCBSdW50aW1lTWV0aG9kOjpnZXRPd25Q
cm9wZXJ0eVNsb3QoSgogICAgIHJldHVybiBJbnRlcm5hbEZ1bmN0aW9uOjpnZXRPd25Qcm9wZXJ0
eVNsb3QodGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCBzbG90KTsKIH0KIAorSXNvU3Vi
c3BhY2UqIFJ1bnRpbWVNZXRob2Q6OnN1YnNwYWNlRm9ySW1wbChWTSYgdm0pCit7CisgICAgcmV0
dXJuICZzdGF0aWNfY2FzdDxKU1ZNQ2xpZW50RGF0YSo+KHZtLmNsaWVudERhdGEpLT5ydW50aW1l
TWV0aG9kU3BhY2UoKTsKK30KKwogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
Y2FsbFJ1bnRpbWVNZXRob2QoRXhlY1N0YXRlKiBleGVjKQogewogICAgIFZNJiB2bSA9IGV4ZWMt
PnZtKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9tZXRob2QuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9tZXRob2QuaAkocmV2aXNp
b24gMjMwNzIzKQorKysgU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfbWV0aG9kLmgJKHdv
cmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDAzLCAy
MDA4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAw
My0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
ICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwpAQCAtMzcsNiArMzcsMTMgQEAgcHVibGljOgogICAgIHR5cGVkZWYgSW50
ZXJuYWxGdW5jdGlvbiBCYXNlOwogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVG
bGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgT3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90
IHwgVHlwZU9mU2hvdWxkQ2FsbEdldENhbGxEYXRhOwogCisgICAgdGVtcGxhdGU8dHlwZW5hbWUg
Q2VsbFR5cGU+CisgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCisg
ICAgeworICAgICAgICBzdGF0aWNfYXNzZXJ0KHNpemVvZihDZWxsVHlwZSkgPT0gc2l6ZW9mKFJ1
bnRpbWVNZXRob2QpLCAiUnVudGltZU1ldGhvZCBzdWJjbGFzc2VzIHRoYXQgYWRkIGZpZWxkcyBu
ZWVkIHRvIG92ZXJyaWRlIHN1YnNwYWNlRm9yPD4oKSIpOworICAgICAgICByZXR1cm4gc3Vic3Bh
Y2VGb3JJbXBsKHZtKTsKKyAgICB9CisgICAgCiAgICAgc3RhdGljIFJ1bnRpbWVNZXRob2QqIGNy
ZWF0ZShFeGVjU3RhdGUqLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSwgY29uc3QgU3RyaW5nJiBuYW1lLCBCaW5kaW5nczo6TWV0aG9kKiBtZXRob2Qp
CiAgICAgewogICAgICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CkBAIC02OCw2ICs3
NSw4IEBAIHByb3RlY3RlZDoKIHByaXZhdGU6CiAgICAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIGxl
bmd0aEdldHRlcihFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSwgUHJvcGVydHlOYW1lKTsKIAor
ICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3JJbXBsKFZNJik7CisKICAgICBCaW5k
aW5nczo6TWV0aG9kKiBtX21ldGhvZDsKIH07CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMzA3
MjMpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsx
LDIzIEBACisyMDE4LTA0LTE3ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAg
ICAgICAgVGhlIEludGVybmFsRnVuY3Rpb24gaGllcmFyY2h5IHNob3VsZCBiZSBpbiBJc29TdWJz
cGFjZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4
NDcyMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
V2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL0pTTlBNZXRob2QuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpKU05QTWV0aG9kOjpzdWJzcGFjZUZvckltcGwpOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
UGx1Z2lucy9OZXRzY2FwZS9KU05QTWV0aG9kLmg6CisgICAgICAgIChXZWJLaXQ6OkpTTlBNZXRo
b2Q6OmNyZWF0ZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OkpTTlBNZXRob2Q6Om5wSWRl
bnRpZmllciBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OkpTTlBNZXRob2Q6OmNy
ZWF0ZVN0cnVjdHVyZSk6IERlbGV0ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL05l
dHNjYXBlL0pTTlBPYmplY3QuY3BwOgorICAgICAgICAoV2ViS2l0OjpKU05QT2JqZWN0OjpzdWJz
cGFjZUZvckltcGwpOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9KU05Q
T2JqZWN0Lmg6CisgICAgICAgIChXZWJLaXQ6OkpTTlBPYmplY3Q6OmNyZWF0ZSk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJLaXQ6OkpTTlBPYmplY3Q6Om5wT2JqZWN0IGNvbnN0KTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYktpdDo6SlNOUE9iamVjdDo6Y3JlYXRlU3RydWN0dXJlKTogRGVsZXRlZC4K
KwogMjAxOC0wNC0xNyAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAg
IFJFR1JFU1NJT04gKHIyMjk4MzEpOiBDTUQtY2xpY2tpbmcgYW4gaUNsb3VkIHdlYiBhcHAgbGlu
ayB1bmV4cGVjdGVkbHkgb3BlbnMgdGhhdCBsaW5rIGluIGEgbmV3IHRhYiBhbmQgdGhlIGN1cnJl
bnQgdGFiCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9K
U05QTWV0aG9kLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1
Z2lucy9OZXRzY2FwZS9KU05QTWV0aG9kLmNwcAkocmV2aXNpb24gMjMwNzIzKQorKysgU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvSlNOUE1ldGhvZC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEwLCAyMDE2
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMC0y
MDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwpAQCAtMzEsNiArMzEsOCBAQAogI2luY2x1ZGUgIkpTTlBPYmplY3QuaCIKICNp
bmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9FcnJvci5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3Jl
L0Z1bmN0aW9uUHJvdG90eXBlLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSXNvU3Vic3Bh
Y2VQZXJWTS5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTRGVzdHJ1Y3RpYmxlT2JqZWN0
SGVhcENlbGxUeXBlLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNHbG9iYWxPYmplY3Qu
aD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU09iamVjdC5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvSlNIVE1MRWxlbWVudC5oPgpAQCAtNTksNiArNjEsMTIgQEAgdm9pZCBKU05QTWV0aG9kOjpm
aW5pc2hDcmVhdGlvbihWTSYgdm0sIAogICAgIEFTU0VSVChpbmhlcml0cyh2bSwgaW5mbygpKSk7
CiB9CiAKK0lzb1N1YnNwYWNlKiBKU05QTWV0aG9kOjpzdWJzcGFjZUZvckltcGwoVk0mIHZtKQor
eworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxJc29TdWJzcGFjZVBlclZNPiBwZXJWTShbXSAo
Vk0mIHZtKSB7IHJldHVybiBJU09fU1VCU1BBQ0VfUEFSQU1FVEVSUyh2bS5kZXN0cnVjdGlibGVP
YmplY3RIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTTlBNZXRob2QpOyB9KTsKKyAgICByZXR1cm4gJnBl
clZNLmdldCgpLmZvclZNKHZtKTsKK30KKwogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgY2FsbE1ldGhvZChFeGVjU3RhdGUqIGV4ZWMpCiB7CiAgICAgVk0mIHZtID0gZXhlYy0+
dm0oKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL0pT
TlBNZXRob2QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lu
cy9OZXRzY2FwZS9KU05QTWV0aG9kLmgJKHJldmlzaW9uIDIzMDcyMykKKysrIFNvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL0pTTlBNZXRob2QuaAkod29ya2luZyBjb3B5
KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEwLTIwMTggQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBA
IC0zNywxMCArMzcsMTYgQEAgdHlwZWRlZiB2b2lkKiBOUElkZW50aWZpZXI7CiBuYW1lc3BhY2Ug
V2ViS2l0IHsKIAogLy8gQSBKU09iamVjdCB0aGF0IHdyYXBzIGFuIE5QTWV0aG9kLgotY2xhc3Mg
SlNOUE1ldGhvZCA6IHB1YmxpYyBKU0M6OkludGVybmFsRnVuY3Rpb24geworY2xhc3MgSlNOUE1l
dGhvZCBmaW5hbCA6IHB1YmxpYyBKU0M6OkludGVybmFsRnVuY3Rpb24gewogcHVibGljOgogICAg
IHR5cGVkZWYgSlNDOjpJbnRlcm5hbEZ1bmN0aW9uIEJhc2U7CiAKKyAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBDZWxsVHlwZT4KKyAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3Io
SlNDOjpWTSYgdm0pCisgICAgeworICAgICAgICByZXR1cm4gc3Vic3BhY2VGb3JJbXBsKHZtKTsK
KyAgICB9CisKICAgICBzdGF0aWMgSlNOUE1ldGhvZCogY3JlYXRlKEpTQzo6RXhlY1N0YXRlKiBl
eGVjLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IFN0cmluZyYgbmFt
ZSwgTlBJZGVudGlmaWVyIG5wSWRlbnQpCiAgICAgewogICAgICAgICBKU0M6OlZNJiB2bSA9IGds
b2JhbE9iamVjdC0+dm0oKTsKQEAgLTU3LDcgKzYzLDkgQEAgcHVibGljOgogcHJvdGVjdGVkOgog
ICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oSlNDOjpWTSYsIGNvbnN0IFN0cmluZyYgbmFtZSk7CiAK
LXByaXZhdGU6ICAgIAorcHJpdmF0ZToKKyAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vi
c3BhY2VGb3JJbXBsKEpTQzo6Vk0mKTsKKyAgICAKICAgICBKU05QTWV0aG9kKEpTQzo6SlNHbG9i
YWxPYmplY3QqLCBKU0M6OlN0cnVjdHVyZSosIE5QSWRlbnRpZmllcik7CiAKICAgICBzdGF0aWMg
SlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQpJbmRleDogU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvSlNOUE9iamVjdC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvSlNO
UE9iamVjdC5jcHAJKHJldmlzaW9uIDIzMDcyMykKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9QbHVnaW5zL05ldHNjYXBlL0pTTlBPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUg
KzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCwgMjAxNiBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAxOCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM1
LDYgKzM1LDggQEAKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9BdXhpbGlhcnlCYXJyaWVySW5s
aW5lcy5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Vycm9yLmg+CiAjaW5jbHVkZSA8SmF2
YVNjcmlwdENvcmUvSWRlbnRpZmllcklubGluZXMuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29y
ZS9Jc29TdWJzcGFjZVBlclZNLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNEZXN0cnVj
dGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0ds
b2JhbE9iamVjdC5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTTG9jay5oPgogI2luY2x1
ZGUgPEphdmFTY3JpcHRDb3JlL09iamVjdFByb3RvdHlwZS5oPgpAQCAtNTI3LDYgKzUyOSwxMiBA
QCBKU09iamVjdCogSlNOUE9iamVjdDo6dGhyb3dJbnZhbGlkQWNjZXNzCiAgICAgcmV0dXJuIHRo
cm93RXhjZXB0aW9uKGV4ZWMsIHNjb3BlLCBjcmVhdGVSZWZlcmVuY2VFcnJvcihleGVjLCAiVHJ5
aW5nIHRvIGFjY2VzcyBvYmplY3QgZnJvbSBkZXN0cm95ZWQgcGx1Zy1pbi4iKSk7CiB9CiAKK0lz
b1N1YnNwYWNlKiBKU05QT2JqZWN0OjpzdWJzcGFjZUZvckltcGwoVk0mIHZtKQoreworICAgIHN0
YXRpYyBOZXZlckRlc3Ryb3llZDxJc29TdWJzcGFjZVBlclZNPiBwZXJWTShbXSAoVk0mIHZtKSB7
IHJldHVybiBJU09fU1VCU1BBQ0VfUEFSQU1FVEVSUyh2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFw
Q2VsbFR5cGUuZ2V0KCksIEpTTlBPYmplY3QpOyB9KTsKKyAgICByZXR1cm4gJnBlclZNLmdldCgp
LmZvclZNKHZtKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICNlbmRpZiAvLyBFTkFC
TEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Q
bHVnaW5zL05ldHNjYXBlL0pTTlBPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9KU05QT2JqZWN0LmgJKHJldmlzaW9uIDIzMDcy
MykKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL0pTTlBPYmpl
Y3QuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDEwLTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCkBAIC00MSwxMSArNDEsMTcgQEAgY2xhc3MgTlBSdW50aW1lT2JqZWN0
TWFwOwogICAgIAogLy8gSlNOUE9iamVjdCBpcyBhIEpTT2JqZWN0IHRoYXQgd3JhcHMgYW4gTlBP
YmplY3QuCiAKLWNsYXNzIEpTTlBPYmplY3QgOiBwdWJsaWMgSlNDOjpKU0Rlc3RydWN0aWJsZU9i
amVjdCB7CitjbGFzcyBKU05QT2JqZWN0IGZpbmFsIDogcHVibGljIEpTQzo6SlNEZXN0cnVjdGli
bGVPYmplY3QgewogcHVibGljOgogICAgIHR5cGVkZWYgSlNDOjpKU0Rlc3RydWN0aWJsZU9iamVj
dCBCYXNlOwogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6
OlN0cnVjdHVyZUZsYWdzIHwgSlNDOjpPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QgfCBKU0M6
Ok92ZXJyaWRlc0dldFByb3BlcnR5TmFtZXMgfCBKU0M6OlR5cGVPZlNob3VsZENhbGxHZXRDYWxs
RGF0YTsKIAorICAgIHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlPgorICAgIHN0YXRpYyBKU0M6
Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKKyAgICB7CisgICAgICAgIHJl
dHVybiBzdWJzcGFjZUZvckltcGwodm0pOworICAgIH0KKwogICAgIHN0YXRpYyBKU05QT2JqZWN0
KiBjcmVhdGUoSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBOUFJ1bnRpbWVPYmpl
Y3RNYXAqIG9iamVjdE1hcCwgTlBPYmplY3QqIG5wT2JqZWN0KQogICAgIHsKICAgICAgICAgSlND
OjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGNyZWF0ZVN0cnVjdHVyZShnbG9iYWxPYmplY3QtPnZt
KCksIGdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LT5vYmplY3RQcm90b3R5cGUoKSk7CkBAIC03
NCw2ICs4MCw4IEBAIHByb3RlY3RlZDoKICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKEpTQzo6SlNH
bG9iYWxPYmplY3QqKTsKIAogcHJpdmF0ZToKKyAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSog
c3Vic3BhY2VGb3JJbXBsKEpTQzo6Vk0mKTsKKyAgICAKICAgICBKU05QT2JqZWN0KEpTQzo6SlNH
bG9iYWxPYmplY3QqLCBKU0M6OlN0cnVjdHVyZSosIE5QUnVudGltZU9iamVjdE1hcCosIE5QT2Jq
ZWN0Kik7CiAgICAgCiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUo
SlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1Zh
bHVlIHByb3RvdHlwZSkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>338180</attachid>
            <date>2018-04-17 18:46:15 -0700</date>
            <delta_ts>2018-04-17 19:02:34 -0700</delta_ts>
            <desc>maybe the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>48182</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjMwNzQxKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ2IEBA
CisyMDE4LTA0LTE3ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
VGhlIEludGVybmFsRnVuY3Rpb24gaGllcmFyY2h5IHNob3VsZCBiZSBpbiBJc29TdWJzcGFjZXMK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4NDcyMQor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAgICAKKyAgICAgICAg
VGhpcyBtb3ZlcyBJbnRlcm5hbEZ1bmN0aW9uIGludG8gYSBJc29TdWJzcGFjZS4gSXQgYWxzbyBt
b3ZlcyBhbGwgc3ViY2xhc3NlcyBpbnRvIElzb1N1YnNwYWNlcywKKyAgICAgICAgYnV0IHN1YmNs
YXNzZXMgdGhhdCBhcmUgdGhlIHNhbWUgc2l6ZSBhcyBJbnRlcm5hbEZ1bmN0aW9uIHNoYXJlIGl0
cyBzdWJzcGFjZS4gSSBkaWQgdGhpcworICAgICAgICBiZWNhdXNlIHRoZSBzdWJjbGFzc2VzIGFw
cGVhciB0byBqdXN0IG92ZXJyaWRlIG1ldGhvZHMsIHdoaWNoIGFyZSBjYWxsZWQgZHluYW1pY2Fs
bHkgdmlhIHRoZQorICAgICAgICBzdHJ1Y3R1cmUgb3IgY2xhc3Mgb2YgdGhlIG9iamVjdC4gU28s
IEkgZG9uJ3Qgc2VlIGEgdHlwZSBjb25mdXNpb24gcmlzayBpZiBVQUYgaXMgdXNlZCB0bworICAg
ICAgICBhbGxvY2F0ZSBvbmUga2luZCBvZiBJbnRlcm5hbEZ1bmN0aW9uIG92ZXIgYW5vdGhlci4K
KworICAgICAgICAqIEFQSS9KU0Jhc2UuaDoKKyAgICAgICAgKiBBUEkvSlNDYWxsYmFja0Z1bmN0
aW9uLmg6CisgICAgICAgICogQVBJL09iakNDYWxsYmFja0Z1bmN0aW9uLmg6CisgICAgICAgIChK
U0M6Ok9iakNDYWxsYmFja0Z1bmN0aW9uOjpzdWJzcGFjZUZvcik6CisgICAgICAgICogQ01ha2VM
aXN0cy50eHQ6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvajoKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBoZWFwL0lzb1N1YnNwYWNl
UGVyVk0uY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6SXNvU3Vic3BhY2VQZXJWTTo6QXV0b3Jl
bW92aW5nSXNvU3Vic3BhY2U6OkF1dG9yZW1vdmluZ0lzb1N1YnNwYWNlKToKKyAgICAgICAgKEpT
Qzo6SXNvU3Vic3BhY2VQZXJWTTo6QXV0b3JlbW92aW5nSXNvU3Vic3BhY2U6On5BdXRvcmVtb3Zp
bmdJc29TdWJzcGFjZSk6CisgICAgICAgIChKU0M6Oklzb1N1YnNwYWNlUGVyVk06Oklzb1N1YnNw
YWNlUGVyVk0pOgorICAgICAgICAoSlNDOjpJc29TdWJzcGFjZVBlclZNOjp+SXNvU3Vic3BhY2VQ
ZXJWTSk6CisgICAgICAgIChKU0M6Oklzb1N1YnNwYWNlUGVyVk06OmZvclZNKToKKyAgICAgICAg
KiBoZWFwL0lzb1N1YnNwYWNlUGVyVk0uaDogQWRkZWQuCisgICAgICAgIChKU0M6Oklzb1N1YnNw
YWNlUGVyVk06OlN1YnNwYWNlUGFyYW1ldGVyczo6U3Vic3BhY2VQYXJhbWV0ZXJzKToKKyAgICAg
ICAgKiBydW50aW1lL0Vycm9yLmg6CisgICAgICAgICogcnVudGltZS9FcnJvckNvbnN0cnVjdG9y
Lmg6CisgICAgICAgICogcnVudGltZS9JbnRlcm5hbEZ1bmN0aW9uLmg6CisgICAgICAgIChKU0M6
OkludGVybmFsRnVuY3Rpb246OnN1YnNwYWNlRm9yKToKKyAgICAgICAgKiBydW50aW1lL0ludGxD
b2xsYXRvckNvbnN0cnVjdG9yLmg6CisgICAgICAgICogcnVudGltZS9JbnRsRGF0ZVRpbWVGb3Jt
YXRDb25zdHJ1Y3Rvci5oOgorICAgICAgICAqIHJ1bnRpbWUvSW50bE51bWJlckZvcm1hdENvbnN0
cnVjdG9yLmg6CisgICAgICAgICogcnVudGltZS9KU0FycmF5QnVmZmVyQ29uc3RydWN0b3IuaDoK
KyAgICAgICAgKiBydW50aW1lL05hdGl2ZUVycm9yQ29uc3RydWN0b3IuaDoKKyAgICAgICAgKiBy
dW50aW1lL1Byb3h5UmV2b2tlLmg6CisgICAgICAgICogcnVudGltZS9SZWdFeHBDb25zdHJ1Y3Rv
ci5oOgorICAgICAgICAqIHJ1bnRpbWUvVk0uY3BwOgorICAgICAgICAoSlNDOjpWTTo6Vk0pOgor
ICAgICAgICAqIHJ1bnRpbWUvVk0uaDoKKwogMjAxOC0wNC0xNyAgQ29tbWl0IFF1ZXVlICA8Y29t
bWl0LXF1ZXVlQHdlYmtpdC5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQg
cjIzMDY5NywgcjIzMDcyMCwgYW5kIHIyMzA3MjQuCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ01ha2VMaXN0cy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0NN
YWtlTGlzdHMudHh0CShyZXZpc2lvbiAyMzA3MjMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Q01ha2VMaXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTUzMSw2ICs1MzEsNyBAQCBzZXQoSmF2
YVNjcmlwdENvcmVfUFJJVkFURV9GUkFNRVdPUktfSEVBCiAgICAgaGVhcC9JbmNyZW1lbnRhbFN3
ZWVwZXIuaAogICAgIGhlYXAvSXNvQ2VsbFNldC5oCiAgICAgaGVhcC9Jc29TdWJzcGFjZS5oCisg
ICAgaGVhcC9Jc29TdWJzcGFjZVBlclZNLmgKICAgICBoZWFwL0xhcmdlQWxsb2NhdGlvbi5oCiAg
ICAgaGVhcC9MaXN0YWJsZUhhbmRsZXIuaAogICAgIGhlYXAvTG9jYWxBbGxvY2F0b3IuaApJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0Cj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dAkocmV2aXNpb24gMjMwNzIzKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC01MDIsNiArNTAy
LDcgQEAgaGVhcC9JbmNyZW1lbnRhbFN3ZWVwZXIuY3BwCiBoZWFwL0lzb0FsaWduZWRNZW1vcnlB
bGxvY2F0b3IuY3BwCiBoZWFwL0lzb0NlbGxTZXQuY3BwCiBoZWFwL0lzb1N1YnNwYWNlLmNwcAor
aGVhcC9Jc29TdWJzcGFjZVBlclZNLmNwcAogaGVhcC9KSVRTdHViUm91dGluZVNldC5jcHAKIGhl
YXAvTGFyZ2VBbGxvY2F0aW9uLmNwcAogaGVhcC9Mb2NhbEFsbG9jYXRvci5jcHAKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNCYXNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL0FQSS9KU0Jhc2UuaAkocmV2aXNpb24gMjMwNzIzKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL0FQSS9KU0Jhc2UuaAkod29ya2luZyBjb3B5KQpAQCAtMTQzLDcgKzE0Myw3
IEBAIEpTX0VYUE9SVCB2b2lkIEpTR2FyYmFnZUNvbGxlY3QoSlNDb250ZXgKIH0KICNlbmRpZgog
Ci0vKiBFbmFibGUgdGhlIE9iamVjdGl2ZS1DIEFQSSBmb3IgcGxhdGZvcm1zIHdpdGggYSBtb2Rl
cm4gcnVudGltZS4gKi8KKy8qIEVuYWJsZSB0aGUgT2JqZWN0aXZlLUMgQVBJIGZvciBwbGF0Zm9y
bXMgd2l0aCBhIG1vZGVybiBydW50aW1lLiBOT1RFOiBUaGlzIGlzIGR1cGxpY2F0ZWQgaW4gVk0u
aC4gKi8KICNpZiAhZGVmaW5lZChKU0NfT0JKQ19BUElfRU5BQkxFRCkKICNpZiAoZGVmaW5lZChf
X2NsYW5nX18pICYmIGRlZmluZWQoX19BUFBMRV9fKSAmJiAoKGRlZmluZWQoX19NQUNfT1NfWF9W
RVJTSU9OX01JTl9SRVFVSVJFRCkgJiYgIWRlZmluZWQoX19pMzg2X18pKSB8fCAoZGVmaW5lZChU
QVJHRVRfT1NfSVBIT05FKSAmJiBUQVJHRVRfT1NfSVBIT05FKSkpCiAjZGVmaW5lIEpTQ19PQkpD
X0FQSV9FTkFCTEVEIDEKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFj
a0Z1bmN0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0Nh
bGxiYWNrRnVuY3Rpb24uaAkocmV2aXNpb24gMjMwNzIzKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL0FQSS9KU0NhbGxiYWNrRnVuY3Rpb24uaAkod29ya2luZyBjb3B5KQpAQCAtMzcsNiArMzcs
MTIgQEAgY2xhc3MgSlNDYWxsYmFja0Z1bmN0aW9uIGZpbmFsIDogcHVibGljIAogcHVibGljOgog
ICAgIHR5cGVkZWYgSW50ZXJuYWxGdW5jdGlvbiBCYXNlOwogCisgICAgdGVtcGxhdGU8dHlwZW5h
bWUgQ2VsbFR5cGU+CisgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0p
CisgICAgeworICAgICAgICByZXR1cm4gJnZtLmNhbGxiYWNrRnVuY3Rpb25TcGFjZTsKKyAgICB9
CisKICAgICBzdGF0aWMgSlNDYWxsYmFja0Z1bmN0aW9uKiBjcmVhdGUoVk0mLCBKU0dsb2JhbE9i
amVjdCosIEpTT2JqZWN0Q2FsbEFzRnVuY3Rpb25DYWxsYmFjaywgY29uc3QgU3RyaW5nJiBuYW1l
KTsKIAogICAgIERFQ0xBUkVfSU5GTzsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkv
T2JqQ0NhbGxiYWNrRnVuY3Rpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvQVBJL09iakNDYWxsYmFja0Z1bmN0aW9uLmgJKHJldmlzaW9uIDIzMDcyMykKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9BUEkvT2JqQ0NhbGxiYWNrRnVuY3Rpb24uaAkod29ya2luZyBjb3B5
KQpAQCAtNDgsNiArNDgsMTIgQEAgY2xhc3MgT2JqQ0NhbGxiYWNrRnVuY3Rpb24gOiBwdWJsaWMg
SW50ZQogcHVibGljOgogICAgIHR5cGVkZWYgSW50ZXJuYWxGdW5jdGlvbiBCYXNlOwogCisgICAg
dGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGU+CisgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJz
cGFjZUZvcihWTSYgdm0pCisgICAgeworICAgICAgICByZXR1cm4gJnZtLm9iakNDYWxsYmFja0Z1
bmN0aW9uU3BhY2U7CisgICAgfQorCiAgICAgc3RhdGljIE9iakNDYWxsYmFja0Z1bmN0aW9uKiBj
cmVhdGUoVk0mLCBKU0dsb2JhbE9iamVjdCosIGNvbnN0IFN0cmluZyYgbmFtZSwgc3RkOjp1bmlx
dWVfcHRyPE9iakNDYWxsYmFja0Z1bmN0aW9uSW1wbD4pOwogICAgIHN0YXRpYyB2b2lkIGRlc3Ry
b3koSlNDZWxsKik7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvZ2xpYi9KU0ND
YWxsYmFja0Z1bmN0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
QVBJL2dsaWIvSlNDQ2FsbGJhY2tGdW5jdGlvbi5jcHAJKHJldmlzaW9uIDIzMDcyMykKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvZ2xpYi9KU0NDYWxsYmFja0Z1bmN0aW9uLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMjksNiArMjksNyBAQAogCiAjaW5jbHVkZSAiQVBJQ2FsbGJhY2tGdW5j
dGlvbi5oIgogI2luY2x1ZGUgIkFQSUNhc3QuaCIKKyNpbmNsdWRlICJJc29TdWJzcGFjZVBlclZN
LmgiCiAjaW5jbHVkZSAiSlNDQ2xhc3NQcml2YXRlLmgiCiAjaW5jbHVkZSAiSlNDQ29udGV4dFBy
aXZhdGUuaCIKICNpbmNsdWRlICJKU0NFeGNlcHRpb25Qcml2YXRlLmgiCkBAIC0yMDYsNCArMjA3
LDEwIEBAIHZvaWQgSlNDQ2FsbGJhY2tGdW5jdGlvbjo6ZGVzdHJveShKU0NlbGwKICAgICBzdGF0
aWNfY2FzdDxKU0NDYWxsYmFja0Z1bmN0aW9uKj4oY2VsbCktPkpTQ0NhbGxiYWNrRnVuY3Rpb246
On5KU0NDYWxsYmFja0Z1bmN0aW9uKCk7CiB9CiAKK0lzb1N1YnNwYWNlKiBKU0NDYWxsYmFja0Z1
bmN0aW9uOjpzdWJzcGFjZUZvcihWTSYgdm0pCit7CisgICAgTmV2ZXJEZXN0cm95ZWQ8SXNvU3Vi
c3BhY2VQZXJWTT4gcGVyVk0oW10gKFZNJiB2bSkgeyByZXR1cm4gSVNPX1NVQlNQQUNFX1BBUkFN
RVRFUlModm0uZGVzdHJ1Y3RpYmVPYmplY3RIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTQ0NhbGxiYWNr
RnVuY3Rpb24pOyB9KTsKKyAgICByZXR1cm4gcGVyVk0uZ2V0KCkuZm9yVk0odm0pOworfQorCiB9
IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvZ2xpYi9K
U0NDYWxsYmFja0Z1bmN0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L0FQSS9nbGliL0pTQ0NhbGxiYWNrRnVuY3Rpb24uaAkocmV2aXNpb24gMjMwNzIzKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9nbGliL0pTQ0NhbGxiYWNrRnVuY3Rpb24uaAkod29ya2lu
ZyBjb3B5KQpAQCAtNDAsNiArNDAsMTIgQEAgY2xhc3MgSlNDQ2FsbGJhY2tGdW5jdGlvbiA6IHB1
YmxpYyBJbnRlcgogcHVibGljOgogICAgIHR5cGVkZWYgSW50ZXJuYWxGdW5jdGlvbiBCYXNlOwog
CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGU+CisgICAgc3RhdGljIElzb1N1YnNwYWNl
KiBzdWJzcGFjZUZvcihWTSYgdm0pCisgICAgeworICAgICAgICByZXR1cm4gc3Vic3BhY2VGb3JJ
bXBsKHZtKTsKKyAgICB9CisKICAgICBlbnVtIGNsYXNzIFR5cGUgewogICAgICAgICBGdW5jdGlv
biwKICAgICAgICAgTWV0aG9kLApAQCAtNjEsNiArNjcsOCBAQCBwdWJsaWM6CiAgICAgSlNPYmpl
Y3RSZWYgY29uc3RydWN0KEpTQ29udGV4dFJlZiwgc2l6ZV90IGFyZ3VtZW50Q291bnQsIGNvbnN0
IEpTVmFsdWVSZWYgYXJndW1lbnRzW10sIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbik7CiAKIHByaXZh
dGU6CisgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvckltcGwoVk0mKTsKKyAgICAK
ICAgICBKU0NDYWxsYmFja0Z1bmN0aW9uKFZNJiwgU3RydWN0dXJlKiwgVHlwZSwgSlNDQ2xhc3Mq
LCBHUmVmUHRyPEdDbG9zdXJlPiYmLCBHVHlwZSwgVmVjdG9yPEdUeXBlPiYmKTsKIAogICAgIEpT
T2JqZWN0Q2FsbEFzRnVuY3Rpb25DYWxsYmFjayBmdW5jdGlvbkNhbGxiYWNrKCkgeyByZXR1cm4g
bV9mdW5jdGlvbkNhbGxiYWNrOyB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNj
cmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagko
cmV2aXNpb24gMjMwNzIzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTM0Myw2ICszNDMs
NyBAQAogCQkwRjVDRjk4NDFFOUQ1Mzc3MDBDMTg2OTIgLyogQWlyTG93ZXJTdGFja0FyZ3MuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNUNGOTgzMUU5
RDUzNzUwMEMxODY5MiAvKiBBaXJMb3dlclN0YWNrQXJncy5oICovOyB9OwogCQkwRjVDRjk4OTFF
OUVENjUyMDBDMTg2OTIgLyogQWlyU3RhY2tBbGxvY2F0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjVDRjk4NzFFOUVENjRFMDBDMTg2OTIgLyog
QWlyU3RhY2tBbGxvY2F0aW9uLmggKi87IH07CiAJCTBGNUUwRkQ4MjA3QzcyNzMwMDk3RjBERSAv
KiBERkdBYnN0cmFjdEludGVycHJldGVyQ2xvYmJlclN0YXRlLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjVFMEZENjIwN0M3MjcxMDA5N0YwREUgLyog
REZHQWJzdHJhY3RJbnRlcnByZXRlckNsb2JiZXJTdGF0ZS5oICovOyB9OworCQkwRjVFMEZFNzIw
ODZBRDQ4MDA5N0YwREUgLyogSXNvU3Vic3BhY2VQZXJWTS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY1RTBGRTUyMDg2QUQ0NjAwOTdGMERFIC8qIElz
b1N1YnNwYWNlUGVyVk0uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQkwRjVFRjkxRjE2ODc4RjdEMDAzRTVDMjUgLyogSklUVGh1bmtzLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjVFRjkxQzE2ODc4Rjc4
MDAzRTVDMjUgLyogSklUVGh1bmtzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJMEY1RjA4Q0YxNDZDNzYzMzAwMDQ3MkE5IC8qIFVuY29uZGl0aW9u
YWxGaW5hbGl6ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDBGNUYwOENFMTQ2Qzc2MkYwMDA0NzJBOSAvKiBVbmNvbmRpdGlvbmFsRmluYWxpemVyLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEY2MEZF
OTAxRkZDMzcwMjAwMDMzMjBBIC8qIEV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2UuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNjBGRThFMUZGQzM2RkQw
MDAzMzIwQSAvKiBFeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTIzNTAsNiArMjM1MSw4IEBACiAJCTBG
NUQwODVDMUI4Q0Y5OUQwMDExNDNCNCAvKiBERkdOb2RlT3JpZ2luLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERGR05vZGVPcmlnaW4uY3BwOyBwYXRoID0gZGZnL0RG
R05vZGVPcmlnaW4uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjVFMEZENjIw
N0M3MjcxMDA5N0YwREUgLyogREZHQWJzdHJhY3RJbnRlcnByZXRlckNsb2JiZXJTdGF0ZS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBERkdBYnN0cmFjdEludGVycHJldGVyQ2xv
YmJlclN0YXRlLmg7IHBhdGggPSBkZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlckNsb2JiZXJTdGF0
ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjVFMEZENzIwN0M3MjcxMDA5N0Yw
REUgLyogREZHQWJzdHJhY3RJbnRlcnByZXRlckNsb2JiZXJTdGF0ZS5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBERkdBYnN0cmFjdEludGVycHJldGVyQ2xvYmJlclN0
YXRlLmNwcDsgcGF0aCA9IGRmZy9ERkdBYnN0cmFjdEludGVycHJldGVyQ2xvYmJlclN0YXRlLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY1RTBGRTUyMDg2QUQ0NjAwOTdGMERF
IC8qIElzb1N1YnNwYWNlUGVyVk0uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
SXNvU3Vic3BhY2VQZXJWTS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjVFMEZF
NjIwODZBRDQ3MDA5N0YwREUgLyogSXNvU3Vic3BhY2VQZXJWTS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJc29TdWJzcGFjZVBlclZNLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMEY1RUY5MUIxNjg3OEY3ODAwM0U1QzI1IC8qIEpJVFRodW5rcy5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKSVRUaHVua3MuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjVFRjkxQzE2ODc4Rjc4MDAzRTVDMjUgLyog
SklUVGh1bmtzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpJVFRodW5rcy5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjVGMDhDRTE0NkM3NjJGMDAwNDcyQTkg
LyogVW5jb25kaXRpb25hbEZpbmFsaXplci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBVbmNvbmRpdGlvbmFsRmluYWxpemVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC01Njk1LDYgKzU2OTgsOCBAQAogCQkJCTBGQjQ2NzdCMUZEREE2RDgwMDNGQ0IwOSAvKiBJ
c29DZWxsU2V0SW5saW5lcy5oICovLAogCQkJCTBGRENFMTJDMUZBRkI0REUwMDZGMzkwMSAvKiBJ
c29TdWJzcGFjZS5jcHAgKi8sCiAJCQkJMEZEQ0UxMkIxRkFGQjRERTAwNkYzOTAxIC8qIElzb1N1
YnNwYWNlLmggKi8sCisJCQkJMEY1RTBGRTYyMDg2QUQ0NzAwOTdGMERFIC8qIElzb1N1YnNwYWNl
UGVyVk0uY3BwICovLAorCQkJCTBGNUUwRkU1MjA4NkFENDYwMDk3RjBERSAvKiBJc29TdWJzcGFj
ZVBlclZNLmggKi8sCiAJCQkJMEY3NjZEMjkxNUE4Q0MzNDAwOEYzNjNFIC8qIEpJVFN0dWJSb3V0
aW5lU2V0LmNwcCAqLywKIAkJCQkwRjc2NkQyQTE1QThDQzM0MDA4RjM2M0UgLyogSklUU3R1YlJv
dXRpbmVTZXQuaCAqLywKIAkJCQkwRjA3MEE0NTFENTQzQTg5MDA2RTcyMzIgLyogTGFyZ2VBbGxv
Y2F0aW9uLmNwcCAqLywKQEAgLTk0OTEsNiArOTQ5Niw3IEBACiAJCQkJNTNGOEQyMDAxRTgzODdE
NDAwRDIxMTE2IC8qIFdhc21CQlFQbGFuSW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQUQ0
QjFERkExREYyNDRFMjAwNzFBRTMyIC8qIFdhc21CaW5kaW5nLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk1MjVDMEREQTFFOTM1ODQ3MDAyMTg0Q0QgLyogV2FzbUNhbGxlZS5oIGluIEhlYWRlcnMgKi8s
CisJCQkJMEY1RTBGRTcyMDg2QUQ0ODAwOTdGMERFIC8qIElzb1N1YnNwYWNlUGVyVk0uaCBpbiBI
ZWFkZXJzICovLAogCQkJCTUzRkQwNEQ0MUQ3QUIyOTEwMDMyODdEMyAvKiBXYXNtQ2FsbGluZ0Nv
bnZlbnRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTUyNkFDNEI3MUU5NzdDNUQwMDM1MDBFMSAv
KiBXYXNtQ29kZUJsb2NrLmggaW4gSGVhZGVycyAqLywKIAkJCQlBRDQxMkIzNDFFN0IyRTlFMDA4
QUYxNTcgLyogV2FzbUNvbnRleHQuaCBpbiBIZWFkZXJzICovLApJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvSXNvU3Vic3BhY2VQZXJWTS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvSXNvU3Vic3BhY2VQZXJWTS5jcHAJKG5vbmV4aXN0ZW50KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSXNvU3Vic3BhY2VQZXJWTS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTAsMCArMSw3MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSXNvU3Vic3Bh
Y2VQZXJWTS5oIgorCisjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgorCituYW1lc3BhY2UgSlNDIHsK
KworY2xhc3MgSXNvU3Vic3BhY2VQZXJWTTo6QXV0b3JlbW92aW5nSXNvU3Vic3BhY2UgOiBwdWJs
aWMgSXNvU3Vic3BhY2UgeworcHVibGljOgorICAgIEF1dG9yZW1vdmluZ0lzb1N1YnNwYWNlKElz
b1N1YnNwYWNlUGVyVk0mIHBlclZNLCBDU3RyaW5nIG5hbWUsIEhlYXAmIGhlYXAsIEhlYXBDZWxs
VHlwZSogaGVhcENlbGxUeXBlLCBzaXplX3Qgc2l6ZSkKKyAgICAgICAgOiBJc29TdWJzcGFjZShu
YW1lLCBoZWFwLCBoZWFwQ2VsbFR5cGUsIHNpemUpCisgICAgICAgICwgbV9wZXJWTShwZXJWTSkK
KyAgICB7CisgICAgfQorICAgIAorICAgIH5BdXRvcmVtb3ZpbmdJc29TdWJzcGFjZSgpCisgICAg
eworICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fcGVyVk0ubV9sb2NrKTsKKyAgICAg
ICAgbV9wZXJWTS5tX3N1YnNwYWNlUGVyVk0ucmVtb3ZlKHNwYWNlKCkuaGVhcCgpLT52bSgpKTsK
KyAgICB9CisKK3ByaXZhdGU6CisgICAgSXNvU3Vic3BhY2VQZXJWTSYgbV9wZXJWTTsKK307CisK
K0lzb1N1YnNwYWNlUGVyVk06Oklzb1N1YnNwYWNlUGVyVk0oRnVuY3Rpb248U3Vic3BhY2VQYXJh
bWV0ZXJzKFZNJik+IHN1YnNwYWNlUGFyYW1ldGVycykKKyAgICA6IG1fc3Vic3BhY2VQYXJhbWV0
ZXJzKFdURk1vdmUoc3Vic3BhY2VQYXJhbWV0ZXJzKSkKK3sKK30KKworSXNvU3Vic3BhY2VQZXJW
TTo6fklzb1N1YnNwYWNlUGVyVk0oKQoreworICAgIFVOUkVBQ0hBQkxFX0ZPUl9QTEFURk9STSgp
OworfQorCitJc29TdWJzcGFjZSYgSXNvU3Vic3BhY2VQZXJWTTo6Zm9yVk0oVk0mIHZtKQorewor
ICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9sb2NrKTsKKyAgICBhdXRvIHJlc3VsdCA9IG1f
c3Vic3BhY2VQZXJWTS5hZGQoJnZtLCBudWxscHRyKTsKKyAgICBpZiAocmVzdWx0KSB7CisgICAg
ICAgIFN1YnNwYWNlUGFyYW1ldGVycyBwYXJhbXMgPSBtX3N1YnNwYWNlUGFyYW1ldGVycyh2bSk7
CisgICAgICAgIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBuZXcgQXV0b3JlbW92aW5nSXNvU3Vi
c3BhY2UoKnRoaXMsIHBhcmFtcy5uYW1lLCB2bS5oZWFwLCBwYXJhbXMuaGVhcENlbGxUeXBlLCBw
YXJhbXMuc2l6ZSk7CisgICAgfQorICAgIHJldHVybiAqcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZTsK
K30KKworfSAvLyBuYW1lc3BhY2UgSlNDCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL0lzb1N1YnNwYWNlUGVyVk0uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9Jc29TdWJzcGFjZVBlclZNLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvSXNvU3Vic3BhY2VQZXJWTS5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAg
KzEsNzMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKwor
I3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJJc29TdWJzcGFjZS5oIgorI2luY2x1ZGUgPHd0Zi9G
dW5jdGlvbi5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL0xvY2su
aD4KKworbmFtZXNwYWNlIEpTQyB7CisKKy8vIFRoaXMgaXMgYW4gYXBwcm9wcmlhdGUgd2F5IHRv
IHN0YXNoIElzb1N1YnNwYWNlcyBmb3IgcmFyZWx5LXVzZWQgY2xhc3NlcyBvciBjbGFzc2VzIHRo
YXQgYXJlIG1vc3RseQorLy8gc3VyZSB0byBiZSBtYWluLXRocmVhZC1vbmx5LiBCdXQgaWYgYSBj
bGFzcyB0eXBpY2FsbHkgZ2V0cyBpbnN0YW50aWF0ZWQgZnJvbSBtdWx0aXBsZSB0aHJlYWRzIGF0
CisvLyBvbmNlLCB0aGVuIHRoaXMgaXMgbm90IGdyZWF0LCBiZWNhdXNlIGNvbmN1cnJlbnQgYWxs
b2NhdGlvbnMgd2lsbCBwcm9iYWJseSBjb250ZW5kIG9uIHRoaXMgdGhpbmcncworLy8gbG9jay4K
K2NsYXNzIElzb1N1YnNwYWNlUGVyVk0geworcHVibGljOgorICAgIHN0cnVjdCBTdWJzcGFjZVBh
cmFtZXRlcnMgeworICAgICAgICBTdWJzcGFjZVBhcmFtZXRlcnMoKSB7IH0KKyAgICAgICAgCisg
ICAgICAgIFN1YnNwYWNlUGFyYW1ldGVycyhDU3RyaW5nIG5hbWUsIEhlYXBDZWxsVHlwZSogaGVh
cENlbGxUeXBlLCBzaXplX3Qgc2l6ZSkKKyAgICAgICAgICAgIDogbmFtZShXVEZNb3ZlKG5hbWUp
KQorICAgICAgICAgICAgLCBoZWFwQ2VsbFR5cGUoaGVhcENlbGxUeXBlKQorICAgICAgICAgICAg
LCBzaXplKHNpemUpCisgICAgICAgIHsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgQ1N0
cmluZyBuYW1lOworICAgICAgICBIZWFwQ2VsbFR5cGUqIGhlYXBDZWxsVHlwZSB7IG51bGxwdHIg
fTsKKyAgICAgICAgc2l6ZV90IHNpemUgeyAwIH07CisgICAgfTsKKyAgICAKKyAgICBKU19FWFBP
UlRfUFJJVkFURSBJc29TdWJzcGFjZVBlclZNKEZ1bmN0aW9uPFN1YnNwYWNlUGFyYW1ldGVycyhW
TSYpPik7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgfklzb1N1YnNwYWNlUGVyVk0oKTsKKyAgICAK
KyAgICBKU19FWFBPUlRfUFJJVkFURSBJc29TdWJzcGFjZSYgZm9yVk0oVk0mKTsKKworcHJpdmF0
ZToKKyAgICBjbGFzcyBBdXRvcmVtb3ZpbmdJc29TdWJzcGFjZTsKKyAgICBmcmllbmQgY2xhc3Mg
QXV0b3JlbW92aW5nSXNvU3Vic3BhY2U7CisKKyAgICBMb2NrIG1fbG9jazsKKyAgICBIYXNoTWFw
PFZNKiwgSXNvU3Vic3BhY2UqPiBtX3N1YnNwYWNlUGVyVk07CisgICAgRnVuY3Rpb248U3Vic3Bh
Y2VQYXJhbWV0ZXJzKFZNJik+IG1fc3Vic3BhY2VQYXJhbWV0ZXJzOworfTsKKworI2RlZmluZSBJ
U09fU1VCU1BBQ0VfUEFSQU1FVEVSUyhoZWFwQ2VsbFR5cGUsIHR5cGUpIElzb1N1YnNwYWNlUGVy
Vk06OlN1YnNwYWNlUGFyYW1ldGVycygiSXNvbGF0ZWQgIiAjdHlwZSAiIFNwYWNlIiwgKGhlYXBD
ZWxsVHlwZSksIHNpemVvZih0eXBlKSkKKworfSAvLyBuYW1lc3BhY2UgSlNDCisKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3IuaAkocmV2aXNpb24gMjMwNzIzKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3IuaAkod29ya2luZyBjb3B5KQpAQCAtMTE1
LDYgKzExNSwxMiBAQCBwcml2YXRlOgogCiBwdWJsaWM6CiAgICAgdHlwZWRlZiBJbnRlcm5hbEZ1
bmN0aW9uIEJhc2U7CisgICAgCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGU+CisgICAg
c3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCisgICAgeworICAgICAgICBy
ZXR1cm4gJnZtLnN0cmljdE1vZGVUeXBlRXJyb3JGdW5jdGlvblNwYWNlOworICAgIH0KIAogICAg
IHN0YXRpYyBTdHJpY3RNb2RlVHlwZUVycm9yRnVuY3Rpb24qIGNyZWF0ZShWTSYgdm0sIFN0cnVj
dHVyZSogc3RydWN0dXJlLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCiAgICAgewpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JDb25zdHJ1Y3Rvci5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yQ29uc3RydWN0b3IuaAkocmV2
aXNpb24gMjMwNzIzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JDb25z
dHJ1Y3Rvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEsNiBAQAogLyoKICAqICBDb3B5cmln
aHQgKEMpIDE5OTktMjAwMCBIYXJyaSBQb3J0ZW4gKHBvcnRlbkBrZGUub3JnKQotICogIENvcHly
aWdodCAoQykgMjAwOC0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqICBD
b3B5cmlnaHQgKEMpIDIwMDgtMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KgogICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0
ZSBpdCBhbmQvb3IKICAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVz
c2VyIEdlbmVyYWwgUHVibGljCkBAIC0zMSw2ICszMSwxMiBAQCBjbGFzcyBFcnJvckNvbnN0cnVj
dG9yIGZpbmFsIDogcHVibGljIEluCiBwdWJsaWM6CiAgICAgdHlwZWRlZiBJbnRlcm5hbEZ1bmN0
aW9uIEJhc2U7CiAKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZT4KKyAgICBzdGF0aWMg
SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKKyAgICB7CisgICAgICAgIHJldHVybiAm
dm0uZXJyb3JDb25zdHJ1Y3RvclNwYWNlOworICAgIH0KKwogICAgIHN0YXRpYyBFcnJvckNvbnN0
cnVjdG9yKiBjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgRXJyb3JQcm90b3R5
cGUqIGVycm9yUHJvdG90eXBlLCBHZXR0ZXJTZXR0ZXIqKQogICAgIHsKICAgICAgICAgRXJyb3JD
b25zdHJ1Y3RvciogY29uc3RydWN0b3IgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxFcnJv
ckNvbnN0cnVjdG9yPih2bS5oZWFwKSkgRXJyb3JDb25zdHJ1Y3Rvcih2bSwgc3RydWN0dXJlKTsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGVybmFsRnVuY3Rpb24uaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRlcm5hbEZ1bmN0
aW9uLmgJKHJldmlzaW9uIDIzMDcyMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0ludGVybmFsRnVuY3Rpb24uaAkod29ya2luZyBjb3B5KQpAQCAtMzgsNiArMzgsMTMgQEAgcHVi
bGljOgogICAgIHR5cGVkZWYgSlNEZXN0cnVjdGlibGVPYmplY3QgQmFzZTsKICAgICBzdGF0aWMg
Y29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IElt
cGxlbWVudHNIYXNJbnN0YW5jZSB8IEltcGxlbWVudHNEZWZhdWx0SGFzSW5zdGFuY2UgfCBUeXBl
T2ZTaG91bGRDYWxsR2V0Q2FsbERhdGE7CiAKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlw
ZT4KKyAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKKyAgICB7Cisg
ICAgICAgIHN0YXRpY19hc3NlcnQoc2l6ZW9mKENlbGxUeXBlKSA9PSBzaXplb2YoSW50ZXJuYWxG
dW5jdGlvbiksICJJbnRlcm5hbEZ1bmN0aW9uIHN1YmNsYXNzZXMgdGhhdCBhZGQgZmllbGRzIG5l
ZWQgdG8gb3ZlcnJpZGUgc3Vic3BhY2VGb3I8PigpIik7CisgICAgICAgIHJldHVybiAmdm0uaW50
ZXJuYWxGdW5jdGlvblNwYWNlOworICAgIH0KKwogICAgIERFQ0xBUkVfRVhQT1JUX0lORk87CiAK
ICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCos
IFNsb3RWaXNpdG9yJik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRs
Q29sbGF0b3JDb25zdHJ1Y3Rvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0ludGxDb2xsYXRvckNvbnN0cnVjdG9yLmgJKHJldmlzaW9uIDIzMDcyMykKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxDb2xsYXRvckNvbnN0cnVjdG9yLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDE1
IEFuZHkgVmFuV2Fnb25lciAodGhldGFsZWNyYWZ0ZXJAZ21haWwuY29tKQorICogQ29weXJpZ2h0
IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwpAQCAtMzksNiArNDAsMTIgQEAgcHVibGljOgogICAgIHR5cGVkZWYg
SW50ZXJuYWxGdW5jdGlvbiBCYXNlOwogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1
cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgSGFzU3RhdGljUHJvcGVydHlUYWJsZTsK
IAorICAgIHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlPgorICAgIHN0YXRpYyBJc29TdWJzcGFj
ZSogc3Vic3BhY2VGb3IoVk0mIHZtKQorICAgIHsKKyAgICAgICAgcmV0dXJuICZ2bS5pbnRsQ29s
bGF0b3JDb25zdHJ1Y3RvclNwYWNlOworICAgIH0KKwogICAgIHN0YXRpYyBJbnRsQ29sbGF0b3JD
b25zdHJ1Y3RvciogY3JlYXRlKFZNJiwgU3RydWN0dXJlKiwgSW50bENvbGxhdG9yUHJvdG90eXBl
KiwgU3RydWN0dXJlKik7CiAgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZN
JiwgSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlKTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3IuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1
Y3Rvci5oCShyZXZpc2lvbiAyMzA3MjMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9JbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUg
KzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxNSBBbmR5IFZhbldhZ29uZXIgKHRoZXRh
bGVjcmFmdGVyQGdtYWlsLmNvbSkKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM5
LDYgKzQwLDEyIEBAIHB1YmxpYzoKICAgICB0eXBlZGVmIEludGVybmFsRnVuY3Rpb24gQmFzZTsK
ICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1
cmVGbGFncyB8IEhhc1N0YXRpY1Byb3BlcnR5VGFibGU7CiAKKyAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBDZWxsVHlwZT4KKyAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkK
KyAgICB7CisgICAgICAgIHJldHVybiAmdm0uaW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3JT
cGFjZTsKKyAgICB9CisKICAgICBzdGF0aWMgSW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3Iq
IGNyZWF0ZShWTSYsIFN0cnVjdHVyZSosIEludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZSosIFN0
cnVjdHVyZSopOwogICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYsIEpT
R2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSk7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0ludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rvci5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rvci5oCShy
ZXZpc2lvbiAyMzA3MjMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVt
YmVyRm9ybWF0Q29uc3RydWN0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDYgQEAKIC8q
CiAgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQW5keSBWYW5XYWdvbmVyICh0aGV0YWxlY3JhZnRlckBn
bWFpbC5jb20pCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zOSw2ICs0MCwxMiBA
QCBwdWJsaWM6CiAgICAgdHlwZWRlZiBJbnRlcm5hbEZ1bmN0aW9uIEJhc2U7CiAgICAgc3RhdGlj
IGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBI
YXNTdGF0aWNQcm9wZXJ0eVRhYmxlOwogCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGU+
CisgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCisgICAgeworICAg
ICAgICByZXR1cm4gJnZtLmludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3RvclNwYWNlOworICAgIH0K
KwogICAgIHN0YXRpYyBJbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3IqIGNyZWF0ZShWTSYsIFN0
cnVjdHVyZSosIEludGxOdW1iZXJGb3JtYXRQcm90b3R5cGUqLCBTdHJ1Y3R1cmUqKTsKICAgICBz
dGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mLCBKU0dsb2JhbE9iamVjdCosIEpT
VmFsdWUpOwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVm
ZmVyQ29uc3RydWN0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0FycmF5QnVmZmVyQ29uc3RydWN0b3IuaAkocmV2aXNpb24gMjMwNzIzKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlckNvbnN0cnVjdG9yLmgJKHdv
cmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzLCAy
MDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAx
My0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
ICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwpAQCAtMzcsNiArMzcsMTIgQEAgY2xhc3MgSlNBcnJheUJ1ZmZlckNvbnN0
cnVjdG9yIGZpbmFsIDogcAogcHVibGljOgogICAgIHR5cGVkZWYgSW50ZXJuYWxGdW5jdGlvbiBC
YXNlOwogCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGU+CisgICAgc3RhdGljIElzb1N1
YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCisgICAgeworICAgICAgICByZXR1cm4gJnZtLmFy
cmF5QnVmZmVyQ29uc3RydWN0b3JTcGFjZTsKKyAgICB9CisKIHByb3RlY3RlZDoKICAgICBKU0Fy
cmF5QnVmZmVyQ29uc3RydWN0b3IoVk0mLCBTdHJ1Y3R1cmUqLCBBcnJheUJ1ZmZlclNoYXJpbmdN
b2RlKTsKICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiwgSlNBcnJheUJ1ZmZlclByb3RvdHlw
ZSosIEdldHRlclNldHRlciogc3BlY2llc1N5bWJvbCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9OYXRpdmVFcnJvckNvbnN0cnVjdG9yLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvci5oCShyZXZp
c2lvbiAyMzA3MjMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OYXRpdmVFcnJv
ckNvbnN0cnVjdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw2IEBACiAvKgogICogIENv
cHlyaWdodCAoQykgMTk5OS0yMDAwIEhhcnJpIFBvcnRlbiAocG9ydGVuQGtkZS5vcmcpCi0gKiAg
Q29weXJpZ2h0IChDKSAyMDA4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqICBD
b3B5cmlnaHQgKEMpIDIwMDgtMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KgogICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0
ZSBpdCBhbmQvb3IKICAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVz
c2VyIEdlbmVyYWwgUHVibGljCkBAIC0zMyw2ICszMywxMiBAQCBjbGFzcyBOYXRpdmVFcnJvckNv
bnN0cnVjdG9yIGZpbmFsIDogcHViCiBwdWJsaWM6CiAgICAgdHlwZWRlZiBJbnRlcm5hbEZ1bmN0
aW9uIEJhc2U7CiAKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZT4KKyAgICBzdGF0aWMg
SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKKyAgICB7CisgICAgICAgIHJldHVybiAm
dm0ubmF0aXZlRXJyb3JDb25zdHJ1Y3RvclNwYWNlOworICAgIH0KKwogICAgIHN0YXRpYyBOYXRp
dmVFcnJvckNvbnN0cnVjdG9yKiBjcmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgU3RydWN0dXJlKiBwcm90b3R5cGVTdHJ1Y3R1
cmUsIGNvbnN0IFN0cmluZyYgbmFtZSkKICAgICB7CiAgICAgICAgIE5hdGl2ZUVycm9yQ29uc3Ry
dWN0b3IqIGNvbnN0cnVjdG9yID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8TmF0aXZlRXJy
b3JDb25zdHJ1Y3Rvcj4odm0uaGVhcCkpIE5hdGl2ZUVycm9yQ29uc3RydWN0b3Iodm0sIHN0cnVj
dHVyZSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm94eVJldm9rZS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3h5UmV2b2tl
LmgJKHJldmlzaW9uIDIzMDcyMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1By
b3h5UmV2b2tlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM2LDYgKzM2LDEyIEBAIHB1YmxpYzoKICAg
ICB0eXBlZGVmIEludGVybmFsRnVuY3Rpb24gQmFzZTsKICAgICBzdGF0aWMgY29uc3QgdW5zaWdu
ZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFnczsKIAorICAgIHRlbXBsYXRl
PHR5cGVuYW1lIENlbGxUeXBlPgorICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3Io
Vk0mIHZtKQorICAgIHsKKyAgICAgICAgcmV0dXJuICZ2bS5wcm94eVJldm9rZVNwYWNlOworICAg
IH0KKwogICAgIHN0YXRpYyBQcm94eVJldm9rZSogY3JlYXRlKFZNJiwgU3RydWN0dXJlKiwgUHJv
eHlPYmplY3QqKTsKIAogICAgIERFQ0xBUkVfSU5GTzsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1JlZ0V4cENvbnN0cnVjdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwQ29uc3RydWN0b3IuaAkocmV2aXNpb24gMjMwNzIz
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwQ29uc3RydWN0b3IuaAko
d29ya2luZyBjb3B5KQpAQCAtMSw2ICsxLDYgQEAKIC8qCiAgKiAgQ29weXJpZ2h0IChDKSAxOTk5
LTIwMDAgSGFycmkgUG9ydGVuIChwb3J0ZW5Aa2RlLm9yZykKLSAqICBDb3B5cmlnaHQgKEMpIDIw
MDMsIDIwMDctMjAwOCwgMjAxNiBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKiAg
Q29weXJpZ2h0IChDKSAyMDAzLTIwMTggQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgog
ICoKICAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1
dGUgaXQgYW5kL29yCiAgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExl
c3NlciBHZW5lcmFsIFB1YmxpYwpAQCAtMzUsNiArMzUsMTIgQEAgcHVibGljOgogICAgIHR5cGVk
ZWYgSW50ZXJuYWxGdW5jdGlvbiBCYXNlOwogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1
Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgSGFzU3RhdGljUHJvcGVydHlUYWJs
ZTsKIAorICAgIHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlPgorICAgIHN0YXRpYyBJc29TdWJz
cGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQorICAgIHsKKyAgICAgICAgcmV0dXJuICZ2bS5yZWdF
eHBDb25zdHJ1Y3RvclNwYWNlOworICAgIH0KKwogICAgIHN0YXRpYyBSZWdFeHBDb25zdHJ1Y3Rv
ciogY3JlYXRlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFJlZ0V4cFByb3RvdHlwZSog
cmVnRXhwUHJvdG90eXBlLCBHZXR0ZXJTZXR0ZXIqIHNwZWNpZXMpCiAgICAgewogICAgICAgICBS
ZWdFeHBDb25zdHJ1Y3RvciogY29uc3RydWN0b3IgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2Vs
bDxSZWdFeHBDb25zdHJ1Y3Rvcj4odm0uaGVhcCkpIFJlZ0V4cENvbnN0cnVjdG9yKHZtLCBzdHJ1
Y3R1cmUsIHJlZ0V4cFByb3RvdHlwZSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9WTS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Vk0uY3BwCShyZXZpc2lvbiAyMzA3MjMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9WTS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQxLDYgKzQxLDggQEAKICNpbmNsdWRlICJERkdX
b3JrbGlzdC5oIgogI2luY2x1ZGUgIkRpcmVjdEV2YWxFeGVjdXRhYmxlLmgiCiAjaW5jbHVkZSAi
RGlzYXNzZW1ibGVyLmgiCisjaW5jbHVkZSAiRXJyb3IuaCIKKyNpbmNsdWRlICJFcnJvckNvbnN0
cnVjdG9yLmgiCiAjaW5jbHVkZSAiRXJyb3JJbnN0YW5jZS5oIgogI2luY2x1ZGUgIkV2YWxDb2Rl
QmxvY2suaCIKICNpbmNsdWRlICJFeGNlcHRpb24uaCIKQEAgLTY0LDE0ICs2NiwxOSBAQAogI2lu
Y2x1ZGUgIkluZmVycmVkVHlwZVRhYmxlLmgiCiAjaW5jbHVkZSAiSW5mZXJyZWRWYWx1ZS5oIgog
I2luY2x1ZGUgIkludGVycHJldGVyLmgiCisjaW5jbHVkZSAiSW50bENvbGxhdG9yQ29uc3RydWN0
b3IuaCIKKyNpbmNsdWRlICJJbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvci5oIgorI2luY2x1
ZGUgIkludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUgIkpJVENvZGUuaCIK
ICNpbmNsdWRlICJKSVRXb3JrbGlzdC5oIgogI2luY2x1ZGUgIkpTQVBJVmFsdWVXcmFwcGVyLmgi
CiAjaW5jbHVkZSAiSlNBcnJheS5oIgorI2luY2x1ZGUgIkpTQXJyYXlCdWZmZXJDb25zdHJ1Y3Rv
ci5oIgogI2luY2x1ZGUgIkpTQXN5bmNGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTQmlnSW50Lmgi
CiAjaW5jbHVkZSAiSlNCb3VuZEZ1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgor
I2luY2x1ZGUgIkpTQ2FsbGJhY2tGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTQ3VzdG9tR2V0dGVy
U2V0dGVyRnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU0Rlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxs
VHlwZS5oIgogI2luY2x1ZGUgIkpTRml4ZWRBcnJheS5oIgpAQCAtMTAzLDE2ICsxMTAsMjAgQEAK
ICNpbmNsdWRlICJNaW5pbXVtUmVzZXJ2ZWRab25lU2l6ZS5oIgogI2luY2x1ZGUgIk1vZHVsZVBy
b2dyYW1Db2RlQmxvY2suaCIKICNpbmNsdWRlICJNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZS5oIgor
I2luY2x1ZGUgIk5hdGl2ZUVycm9yQ29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJOYXRpdmVFeGVj
dXRhYmxlLmgiCiAjaW5jbHVkZSAiTmF0aXZlU3RkRnVuY3Rpb25DZWxsLmgiCiAjaW5jbHVkZSAi
Tm9kZXMuaCIKKyNpbmNsdWRlICJPYmpDQ2FsbGJhY2tGdW5jdGlvbi5oIgogI2luY2x1ZGUgIlBh
cnNlci5oIgogI2luY2x1ZGUgIlByb2ZpbGVyRGF0YWJhc2UuaCIKICNpbmNsdWRlICJQcm9ncmFt
Q29kZUJsb2NrLmgiCiAjaW5jbHVkZSAiUHJvZ3JhbUV4ZWN1dGFibGUuaCIKICNpbmNsdWRlICJQ
cm9taXNlRGVmZXJyZWRUaW1lci5oIgogI2luY2x1ZGUgIlByb3BlcnR5TWFwSGFzaFRhYmxlLmgi
CisjaW5jbHVkZSAiUHJveHlSZXZva2UuaCIKICNpbmNsdWRlICJSZWdFeHBDYWNoZS5oIgorI2lu
Y2x1ZGUgIlJlZ0V4cENvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAiUmVnRXhwT2JqZWN0LmgiCiAj
aW5jbHVkZSAiUmVnaXN0ZXJBdE9mZnNldExpc3QuaCIKICNpbmNsdWRlICJSdW50aW1lVHlwZS5o
IgpAQCAtMjU0LDExICsyNjUsMTQgQEAgVk06OlZNKFZNVHlwZSB2bVR5cGUsIEhlYXBUeXBlIGhl
YXBUeXBlKQogICAgICwgZGVzdHJ1Y3RpYmxlT2JqZWN0U3BhY2UoIkpTRGVzdHJ1Y3RpYmxlT2Jq
ZWN0IiwgaGVhcCwgZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmdldCgpLCBmYXN0TWFs
bG9jQWxsb2NhdG9yLmdldCgpKQogICAgICwgZWFnZXJseVN3ZXB0RGVzdHJ1Y3RpYmxlT2JqZWN0
U3BhY2UoIkVhZ2VybHkgU3dlcHQgSlNEZXN0cnVjdGlibGVPYmplY3QiLCBoZWFwLCBkZXN0cnVj
dGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuZ2V0KCksIGZhc3RNYWxsb2NBbGxvY2F0b3IuZ2V0KCkp
CiAgICAgLCBzZWdtZW50ZWRWYXJpYWJsZU9iamVjdFNwYWNlKCJKU1NlZ21lbnRlZFZhcmlhYmxl
T2JqZWN0U3BhY2UiLCBoZWFwLCBzZWdtZW50ZWRWYXJpYWJsZU9iamVjdEhlYXBDZWxsVHlwZS5n
ZXQoKSwgZmFzdE1hbGxvY0FsbG9jYXRvci5nZXQoKSkKKyAgICAsIGFycmF5QnVmZmVyQ29uc3Ry
dWN0b3JTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVChoZWFwLCBkZXN0cnVjdGlibGVPYmplY3RIZWFw
Q2VsbFR5cGUuZ2V0KCksIEpTQXJyYXlCdWZmZXJDb25zdHJ1Y3RvcikKICAgICAsIGFzeW5jRnVu
Y3Rpb25TcGFjZSBJU09fU1VCU1BBQ0VfSU5JVChoZWFwLCBjZWxsSlNWYWx1ZU9PQkhlYXBDZWxs
VHlwZS5nZXQoKSwgSlNBc3luY0Z1bmN0aW9uKQogICAgICwgYXN5bmNHZW5lcmF0b3JGdW5jdGlv
blNwYWNlIElTT19TVUJTUEFDRV9JTklUKGhlYXAsIGNlbGxKU1ZhbHVlT09CSGVhcENlbGxUeXBl
LmdldCgpLCBKU0FzeW5jR2VuZXJhdG9yRnVuY3Rpb24pCiAgICAgLCBib3VuZEZ1bmN0aW9uU3Bh
Y2UgSVNPX1NVQlNQQUNFX0lOSVQoaGVhcCwgY2VsbEpTVmFsdWVPT0JIZWFwQ2VsbFR5cGUuZ2V0
KCksIEpTQm91bmRGdW5jdGlvbikKKyAgICAsIGNhbGxiYWNrRnVuY3Rpb25TcGFjZSBJU09fU1VC
U1BBQ0VfSU5JVChoZWFwLCBkZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuZ2V0KCksIEpT
Q2FsbGJhY2tGdW5jdGlvbikKICAgICAsIGN1c3RvbUdldHRlclNldHRlckZ1bmN0aW9uU3BhY2Ug
SVNPX1NVQlNQQUNFX0lOSVQoaGVhcCwgY2VsbEpTVmFsdWVPT0JIZWFwQ2VsbFR5cGUuZ2V0KCks
IEpTQ3VzdG9tR2V0dGVyU2V0dGVyRnVuY3Rpb24pCiAgICAgLCBkaXJlY3RFdmFsRXhlY3V0YWJs
ZVNwYWNlIElTT19TVUJTUEFDRV9JTklUKGhlYXAsIGRlc3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5
cGUuZ2V0KCksIERpcmVjdEV2YWxFeGVjdXRhYmxlKQorICAgICwgZXJyb3JDb25zdHJ1Y3RvclNw
YWNlIElTT19TVUJTUEFDRV9JTklUKGhlYXAsIGRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlw
ZS5nZXQoKSwgRXJyb3JDb25zdHJ1Y3RvcikKICAgICAsIGV4ZWN1dGFibGVUb0NvZGVCbG9ja0Vk
Z2VTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVChoZWFwLCBjZWxsRGFuZ2Vyb3VzQml0c0hlYXBDZWxs
VHlwZS5nZXQoKSwgRXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZSkKICAgICAsIGZ1bmN0aW9uRXhl
Y3V0YWJsZVNwYWNlIElTT19TVUJTUEFDRV9JTklUKGhlYXAsIGRlc3RydWN0aWJsZUNlbGxIZWFw
Q2VsbFR5cGUuZ2V0KCksIEZ1bmN0aW9uRXhlY3V0YWJsZSkKICAgICAsIGZ1bmN0aW9uU3BhY2Ug
SVNPX1NVQlNQQUNFX0lOSVQoaGVhcCwgY2VsbEpTVmFsdWVPT0JIZWFwQ2VsbFR5cGUuZ2V0KCks
IEpTRnVuY3Rpb24pCkBAIC0yNjYsMTEgKzI4MCwyNCBAQCBWTTo6Vk0oVk1UeXBlIHZtVHlwZSwg
SGVhcFR5cGUgaGVhcFR5cGUpCiAgICAgLCBpbmRpcmVjdEV2YWxFeGVjdXRhYmxlU3BhY2UgSVNP
X1NVQlNQQUNFX0lOSVQoaGVhcCwgZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwg
SW5kaXJlY3RFdmFsRXhlY3V0YWJsZSkKICAgICAsIGluZmVycmVkVHlwZVNwYWNlIElTT19TVUJT
UEFDRV9JTklUKGhlYXAsIGRlc3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIEluZmVy
cmVkVHlwZSkKICAgICAsIGluZmVycmVkVmFsdWVTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVChoZWFw
LCBkZXN0cnVjdGlibGVDZWxsSGVhcENlbGxUeXBlLmdldCgpLCBJbmZlcnJlZFZhbHVlKQorICAg
ICwgaW50ZXJuYWxGdW5jdGlvblNwYWNlIElTT19TVUJTUEFDRV9JTklUKGhlYXAsIGRlc3RydWN0
aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5nZXQoKSwgSW50ZXJuYWxGdW5jdGlvbikKKyNpZiBFTkFC
TEUoSU5UTCkKKyAgICAsIGludGxDb2xsYXRvckNvbnN0cnVjdG9yU3BhY2UgSVNPX1NVQlNQQUNF
X0lOSVQoaGVhcCwgZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmdldCgpLCBJbnRsQ29s
bGF0b3JDb25zdHJ1Y3RvcikKKyAgICAsIGludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yU3Bh
Y2UgSVNPX1NVQlNQQUNFX0lOSVQoaGVhcCwgZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBl
LmdldCgpLCBJbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3RvcikKKyAgICAsIGludGxOdW1iZXJG
b3JtYXRDb25zdHJ1Y3RvclNwYWNlIElTT19TVUJTUEFDRV9JTklUKGhlYXAsIGRlc3RydWN0aWJs
ZU9iamVjdEhlYXBDZWxsVHlwZS5nZXQoKSwgSW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yKQor
I2VuZGlmCiAgICAgLCBtb2R1bGVQcm9ncmFtRXhlY3V0YWJsZVNwYWNlIElTT19TVUJTUEFDRV9J
TklUKGhlYXAsIGRlc3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIE1vZHVsZVByb2dy
YW1FeGVjdXRhYmxlKQorICAgICwgbmF0aXZlRXJyb3JDb25zdHJ1Y3RvclNwYWNlIElTT19TVUJT
UEFDRV9JTklUKGhlYXAsIGRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5nZXQoKSwgTmF0
aXZlRXJyb3JDb25zdHJ1Y3RvcikKICAgICAsIG5hdGl2ZUV4ZWN1dGFibGVTcGFjZSBJU09fU1VC
U1BBQ0VfSU5JVChoZWFwLCBkZXN0cnVjdGlibGVDZWxsSGVhcENlbGxUeXBlLmdldCgpLCBOYXRp
dmVFeGVjdXRhYmxlKQogICAgICwgbmF0aXZlU3RkRnVuY3Rpb25TcGFjZSBJU09fU1VCU1BBQ0Vf
SU5JVChoZWFwLCBjZWxsSlNWYWx1ZU9PQkhlYXBDZWxsVHlwZS5nZXQoKSwgSlNOYXRpdmVTdGRG
dW5jdGlvbikKKyNpZiBKU0NfT0JKQ19BUElfRU5BQkxFRAorICAgICwgb2JqQ0NhbGxiYWNrRnVu
Y3Rpb25TcGFjZSBJU09fU1VCU1BBQ0VfSU5JVChoZWFwLCBkZXN0cnVjdGlibGVPYmplY3RIZWFw
Q2VsbFR5cGUuZ2V0KCksIE9iakNDYWxsYmFja0Z1bmN0aW9uKQorI2VuZGlmCiAgICAgLCBwcm9n
cmFtRXhlY3V0YWJsZVNwYWNlIElTT19TVUJTUEFDRV9JTklUKGhlYXAsIGRlc3RydWN0aWJsZUNl
bGxIZWFwQ2VsbFR5cGUuZ2V0KCksIFByb2dyYW1FeGVjdXRhYmxlKQogICAgICwgcHJvcGVydHlU
YWJsZVNwYWNlIElTT19TVUJTUEFDRV9JTklUKGhlYXAsIGRlc3RydWN0aWJsZUNlbGxIZWFwQ2Vs
bFR5cGUuZ2V0KCksIFByb3BlcnR5VGFibGUpCisgICAgLCBwcm94eVJldm9rZVNwYWNlIElTT19T
VUJTUEFDRV9JTklUKGhlYXAsIGRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5nZXQoKSwg
UHJveHlSZXZva2UpCisgICAgLCByZWdFeHBDb25zdHJ1Y3RvclNwYWNlIElTT19TVUJTUEFDRV9J
TklUKGhlYXAsIGRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5nZXQoKSwgUmVnRXhwQ29u
c3RydWN0b3IpCisgICAgLCBzdHJpY3RNb2RlVHlwZUVycm9yRnVuY3Rpb25TcGFjZSBJU09fU1VC
U1BBQ0VfSU5JVChoZWFwLCBkZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuZ2V0KCksIFN0
cmljdE1vZGVUeXBlRXJyb3JGdW5jdGlvbikKICAgICAsIHN0cnVjdHVyZVJhcmVEYXRhU3BhY2Ug
SVNPX1NVQlNQQUNFX0lOSVQoaGVhcCwgZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZS5nZXQo
KSwgU3RydWN0dXJlUmFyZURhdGEpCiAgICAgLCBzdHJ1Y3R1cmVTcGFjZSBJU09fU1VCU1BBQ0Vf
SU5JVChoZWFwLCBkZXN0cnVjdGlibGVDZWxsSGVhcENlbGxUeXBlLmdldCgpLCBTdHJ1Y3R1cmUp
CiAgICAgLCB3ZWFrU2V0U3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoaGVhcCwgZGVzdHJ1Y3RpYmxl
T2JqZWN0SGVhcENlbGxUeXBlLmdldCgpLCBKU1dlYWtTZXQpCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9WTS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1ZNLmgJKHJldmlzaW9uIDIzMDcyMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1ZNLmgJKHdvcmtpbmcgY29weSkKQEAgLTgwLDYgKzgwLDE2IEBACiAjaW5jbHVk
ZSA8d3RmL1N0YWNrVHJhY2UuaD4KICNlbmRpZgogCisvLyBFbmFibGUgdGhlIE9iamVjdGl2ZS1D
IEFQSSBmb3IgcGxhdGZvcm1zIHdpdGggYSBtb2Rlcm4gcnVudGltZS4gVGhpcyBoYXMgdG8gbWF0
Y2ggZXhhY3RseSB3aGF0IHdlCisvLyBoYXZlIGluIEpTQmFzZS5oLgorI2lmICFkZWZpbmVkKEpT
Q19PQkpDX0FQSV9FTkFCTEVEKQorI2lmIChkZWZpbmVkKF9fY2xhbmdfXykgJiYgZGVmaW5lZChf
X0FQUExFX18pICYmICgoZGVmaW5lZChfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEKSAm
JiAhZGVmaW5lZChfX2kzODZfXykpIHx8IChkZWZpbmVkKFRBUkdFVF9PU19JUEhPTkUpICYmIFRB
UkdFVF9PU19JUEhPTkUpKSkKKyNkZWZpbmUgSlNDX09CSkNfQVBJX0VOQUJMRUQgMQorI2Vsc2UK
KyNkZWZpbmUgSlNDX09CSkNfQVBJX0VOQUJMRUQgMAorI2VuZGlmCisjZW5kaWYKKwogbmFtZXNw
YWNlIFdURiB7CiBjbGFzcyBTaW1wbGVTdGF0czsKIH0gLy8gbmFtZXNwYWNlIFdURgpAQCAtMzM3
LDExICszNDcsMTQgQEAgcHVibGljOgogICAgIENvbXBsZXRlU3Vic3BhY2UgZWFnZXJseVN3ZXB0
RGVzdHJ1Y3RpYmxlT2JqZWN0U3BhY2U7CiAgICAgQ29tcGxldGVTdWJzcGFjZSBzZWdtZW50ZWRW
YXJpYWJsZU9iamVjdFNwYWNlOwogICAgIAorICAgIElzb1N1YnNwYWNlIGFycmF5QnVmZmVyQ29u
c3RydWN0b3JTcGFjZTsKICAgICBJc29TdWJzcGFjZSBhc3luY0Z1bmN0aW9uU3BhY2U7CiAgICAg
SXNvU3Vic3BhY2UgYXN5bmNHZW5lcmF0b3JGdW5jdGlvblNwYWNlOwogICAgIElzb1N1YnNwYWNl
IGJvdW5kRnVuY3Rpb25TcGFjZTsKKyAgICBJc29TdWJzcGFjZSBjYWxsYmFja0Z1bmN0aW9uU3Bh
Y2U7CiAgICAgSXNvU3Vic3BhY2UgY3VzdG9tR2V0dGVyU2V0dGVyRnVuY3Rpb25TcGFjZTsKICAg
ICBJc29TdWJzcGFjZSBkaXJlY3RFdmFsRXhlY3V0YWJsZVNwYWNlOworICAgIElzb1N1YnNwYWNl
IGVycm9yQ29uc3RydWN0b3JTcGFjZTsKICAgICBJc29TdWJzcGFjZSBleGVjdXRhYmxlVG9Db2Rl
QmxvY2tFZGdlU3BhY2U7CiAgICAgSXNvU3Vic3BhY2UgZnVuY3Rpb25FeGVjdXRhYmxlU3BhY2U7
CiAgICAgSXNvU3Vic3BhY2UgZnVuY3Rpb25TcGFjZTsKQEAgLTM0OSwxMSArMzYyLDI0IEBAIHB1
YmxpYzoKICAgICBJc29TdWJzcGFjZSBpbmRpcmVjdEV2YWxFeGVjdXRhYmxlU3BhY2U7CiAgICAg
SXNvU3Vic3BhY2UgaW5mZXJyZWRUeXBlU3BhY2U7CiAgICAgSXNvU3Vic3BhY2UgaW5mZXJyZWRW
YWx1ZVNwYWNlOworICAgIElzb1N1YnNwYWNlIGludGVybmFsRnVuY3Rpb25TcGFjZTsKKyNpZiBF
TkFCTEUoSU5UTCkKKyAgICBJc29TdWJzcGFjZSBpbnRsQ29sbGF0b3JDb25zdHJ1Y3RvclNwYWNl
OworICAgIElzb1N1YnNwYWNlIGludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yU3BhY2U7Cisg
ICAgSXNvU3Vic3BhY2UgaW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yU3BhY2U7CisjZW5kaWYK
ICAgICBJc29TdWJzcGFjZSBtb2R1bGVQcm9ncmFtRXhlY3V0YWJsZVNwYWNlOworICAgIElzb1N1
YnNwYWNlIG5hdGl2ZUVycm9yQ29uc3RydWN0b3JTcGFjZTsKICAgICBJc29TdWJzcGFjZSBuYXRp
dmVFeGVjdXRhYmxlU3BhY2U7CiAgICAgSXNvU3Vic3BhY2UgbmF0aXZlU3RkRnVuY3Rpb25TcGFj
ZTsKKyNpZiBKU0NfT0JKQ19BUElfRU5BQkxFRAorICAgIElzb1N1YnNwYWNlIG9iakNDYWxsYmFj
a0Z1bmN0aW9uU3BhY2U7CisjZW5kaWYKICAgICBJc29TdWJzcGFjZSBwcm9ncmFtRXhlY3V0YWJs
ZVNwYWNlOwogICAgIElzb1N1YnNwYWNlIHByb3BlcnR5VGFibGVTcGFjZTsKKyAgICBJc29TdWJz
cGFjZSBwcm94eVJldm9rZVNwYWNlOworICAgIElzb1N1YnNwYWNlIHJlZ0V4cENvbnN0cnVjdG9y
U3BhY2U7CisgICAgSXNvU3Vic3BhY2Ugc3RyaWN0TW9kZVR5cGVFcnJvckZ1bmN0aW9uU3BhY2U7
CiAgICAgSXNvU3Vic3BhY2Ugc3RydWN0dXJlUmFyZURhdGFTcGFjZTsKICAgICBJc29TdWJzcGFj
ZSBzdHJ1Y3R1cmVTcGFjZTsKICAgICBJc29TdWJzcGFjZSB3ZWFrU2V0U3BhY2U7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyMzA3MjMpCisrKyBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHdv
cmtpbmcgY29weSkKQEAgLTEsMyArMSwyMCBAQAorMjAxOC0wNC0xNyAgRmlsaXAgUGl6bG8gIDxm
cGl6bG9AYXBwbGUuY29tPgorCisgICAgICAgIFRoZSBJbnRlcm5hbEZ1bmN0aW9uIGhpZXJhcmNo
eSBzaG91bGQgYmUgaW4gSXNvU3Vic3BhY2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xODQ3MjEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdHMgYmVjYXVzZSBubyBuZXcgYmVoYXZpb3Iu
CisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9XZWJDb3JlSlNDbGllbnREYXRhLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkpTVk1DbGllbnREYXRhOjpKU1ZNQ2xpZW50RGF0YSk6CisgICAgICAgICog
YmluZGluZ3MvanMvV2ViQ29yZUpTQ2xpZW50RGF0YS5oOgorICAgICAgICAoV2ViQ29yZTo6SlNW
TUNsaWVudERhdGE6OnJ1bnRpbWVNZXRob2RTcGFjZSk6CisgICAgICAgICogYnJpZGdlL3J1bnRp
bWVfbWV0aG9kLmNwcDoKKyAgICAgICAgKEpTQzo6UnVudGltZU1ldGhvZDo6c3Vic3BhY2VGb3JJ
bXBsKToKKyAgICAgICAgKiBicmlkZ2UvcnVudGltZV9tZXRob2QuaDoKKwogMjAxOC0wNC0xNyAg
Q2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFJFR1JFU1NJT04gKHIy
Mjk4MzEpOiBDTUQtY2xpY2tpbmcgYW4gaUNsb3VkIHdlYiBhcHAgbGluayB1bmV4cGVjdGVkbHkg
b3BlbnMgdGhhdCBsaW5rIGluIGEgbmV3IHRhYiBhbmQgdGhlIGN1cnJlbnQgdGFiCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9XZWJDb3JlSlNDbGllbnREYXRhLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9XZWJDb3JlSlNDbGllbnREYXRhLmNw
cAkocmV2aXNpb24gMjMwNzIzKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV2ViQ29y
ZUpTQ2xpZW50RGF0YS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM1LDYgKzM1LDcgQEAKICNpbmNs
dWRlIDxKYXZhU2NyaXB0Q29yZS9NYXJraW5nQ29uc3RyYWludC5oPgogI2luY2x1ZGUgPEphdmFT
Y3JpcHRDb3JlL1N1YnNwYWNlSW5saW5lcy5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1ZN
Lmg+CisjaW5jbHVkZSAicnVudGltZV9tZXRob2QuaCIKICNpbmNsdWRlIDx3dGYvTWFpblRocmVh
ZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC00Myw2ICs0NCw3IEBAIHVzaW5nIG5hbWVz
cGFjZSBKU0M7CiBKU1ZNQ2xpZW50RGF0YTo6SlNWTUNsaWVudERhdGEoVk0mIHZtKQogICAgIDog
bV9idWlsdGluRnVuY3Rpb25zKHZtKQogICAgICwgbV9idWlsdGluTmFtZXMoJnZtKQorICAgICwg
bV9ydW50aW1lTWV0aG9kU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1
Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmdldCgpLCBSdW50aW1lTWV0aG9kKQogICAgICwgbV9v
dXRwdXRDb25zdHJhaW50U3BhY2UoIldlYkNvcmUgV3JhcHBlciB3LyBPdXRwdXQgQ29uc3RyYWlu
dCIsIHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5nZXQoKSwgdm0u
ZmFzdE1hbGxvY0FsbG9jYXRvci5nZXQoKSkKICAgICAsIG1fZ2xvYmFsT2JqZWN0T3V0cHV0Q29u
c3RyYWludFNwYWNlKCJXZWJDb3JlIEdsb2JhbCBPYmplY3Qgdy8gT3V0cHV0IENvbnN0cmFpbnQi
LCB2bS5oZWFwLCB2bS5zZWdtZW50ZWRWYXJpYWJsZU9iamVjdEhlYXBDZWxsVHlwZS5nZXQoKSwg
dm0uZmFzdE1hbGxvY0FsbG9jYXRvci5nZXQoKSkKIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL1dlYkNvcmVKU0NsaWVudERhdGEuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9XZWJDb3JlSlNDbGllbnREYXRhLmgJKHJldmlzaW9uIDIzMDcyMykK
KysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dlYkNvcmVKU0NsaWVudERhdGEuaAkod29y
a2luZyBjb3B5KQpAQCAtNTksNiArNTksOCBAQCBwdWJsaWM6CiAgICAgV2ViQ29yZUJ1aWx0aW5O
YW1lcyYgYnVpbHRpbk5hbWVzKCkgeyByZXR1cm4gbV9idWlsdGluTmFtZXM7IH0KICAgICBKU0J1
aWx0aW5GdW5jdGlvbnMmIGJ1aWx0aW5GdW5jdGlvbnMoKSB7IHJldHVybiBtX2J1aWx0aW5GdW5j
dGlvbnM7IH0KICAgICAKKyAgICBKU0M6Oklzb1N1YnNwYWNlJiBydW50aW1lTWV0aG9kU3BhY2Uo
KSB7IHJldHVybiBtX3J1bnRpbWVNZXRob2RTcGFjZTsgfQorICAgIAogICAgIEpTQzo6Q29tcGxl
dGVTdWJzcGFjZSYgb3V0cHV0Q29uc3RyYWludFNwYWNlKCkgeyByZXR1cm4gbV9vdXRwdXRDb25z
dHJhaW50U3BhY2U7IH0KICAgICBKU0M6OkNvbXBsZXRlU3Vic3BhY2UmIGdsb2JhbE9iamVjdE91
dHB1dENvbnN0cmFpbnRTcGFjZSgpIHsgcmV0dXJuIG1fZ2xvYmFsT2JqZWN0T3V0cHV0Q29uc3Ry
YWludFNwYWNlOyB9CiAgICAgCkBAIC03Niw2ICs3OCw4IEBAIHByaXZhdGU6CiAgICAgSlNCdWls
dGluRnVuY3Rpb25zIG1fYnVpbHRpbkZ1bmN0aW9uczsKICAgICBXZWJDb3JlQnVpbHRpbk5hbWVz
IG1fYnVpbHRpbk5hbWVzOwogICAgIAorICAgIEpTQzo6SXNvU3Vic3BhY2UgbV9ydW50aW1lTWV0
aG9kU3BhY2U7CisgICAgCiAgICAgSlNDOjpDb21wbGV0ZVN1YnNwYWNlIG1fb3V0cHV0Q29uc3Ry
YWludFNwYWNlOwogICAgIEpTQzo6Q29tcGxldGVTdWJzcGFjZSBtX2dsb2JhbE9iamVjdE91dHB1
dENvbnN0cmFpbnRTcGFjZTsKIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGlt
ZV9tZXRob2QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1l
X21ldGhvZC5jcHAJKHJldmlzaW9uIDIzMDcyMykKKysrIFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9y
dW50aW1lX21ldGhvZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICog
Q29weXJpZ2h0IChDKSAyMDAzLCAyMDA4LCAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwMy0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjksNiArMjksNyBA
QAogI2luY2x1ZGUgIkpTRE9NQmluZGluZy5oIgogI2luY2x1ZGUgIkpTSFRNTEVsZW1lbnQuaCIK
ICNpbmNsdWRlICJKU1BsdWdpbkVsZW1lbnRGdW5jdGlvbnMuaCIKKyNpbmNsdWRlICJXZWJDb3Jl
SlNDbGllbnREYXRhLmgiCiAjaW5jbHVkZSAicnVudGltZV9vYmplY3QuaCIKICNpbmNsdWRlIDxK
YXZhU2NyaXB0Q29yZS9FcnJvci5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Z1bmN0aW9u
UHJvdG90eXBlLmg+CkBAIC03OSw2ICs4MCwxMSBAQCBib29sIFJ1bnRpbWVNZXRob2Q6OmdldE93
blByb3BlcnR5U2xvdChKCiAgICAgcmV0dXJuIEludGVybmFsRnVuY3Rpb246OmdldE93blByb3Bl
cnR5U2xvdCh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogfQogCitJc29T
dWJzcGFjZSogUnVudGltZU1ldGhvZDo6c3Vic3BhY2VGb3JJbXBsKFZNJiB2bSkKK3sKKyAgICBy
ZXR1cm4gJnN0YXRpY19jYXN0PEpTVk1DbGllbnREYXRhKj4odm0uY2xpZW50RGF0YSktPnJ1bnRp
bWVNZXRob2RTcGFjZSgpOworfQorCiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBjYWxsUnVudGltZU1ldGhvZChFeGVjU3RhdGUqIGV4ZWMpCiB7CiAgICAgVk0mIHZtID0gZXhl
Yy0+dm0oKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX21ldGhvZC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX21ldGhvZC5oCShyZXZp
c2lvbiAyMzA3MjMpCisrKyBTb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9tZXRob2QuaAko
d29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDMs
IDIwMDggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDAzLTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCkBAIC0zNyw2ICszNywxMyBAQCBwdWJsaWM6CiAgICAgdHlwZWRlZiBJ
bnRlcm5hbEZ1bmN0aW9uIEJhc2U7CiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVy
ZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNs
b3QgfCBUeXBlT2ZTaG91bGRDYWxsR2V0Q2FsbERhdGE7CiAKKyAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBDZWxsVHlwZT4KKyAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkK
KyAgICB7CisgICAgICAgIHN0YXRpY19hc3NlcnQoc2l6ZW9mKENlbGxUeXBlKSA9PSBzaXplb2Yo
UnVudGltZU1ldGhvZCksICJSdW50aW1lTWV0aG9kIHN1YmNsYXNzZXMgdGhhdCBhZGQgZmllbGRz
IG5lZWQgdG8gb3ZlcnJpZGUgc3Vic3BhY2VGb3I8PigpIik7CisgICAgICAgIHJldHVybiBzdWJz
cGFjZUZvckltcGwodm0pOworICAgIH0KKyAgICAKICAgICBzdGF0aWMgUnVudGltZU1ldGhvZCog
Y3JlYXRlKEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVy
ZSogc3RydWN0dXJlLCBjb25zdCBTdHJpbmcmIG5hbWUsIEJpbmRpbmdzOjpNZXRob2QqIG1ldGhv
ZCkKICAgICB7CiAgICAgICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKQEAgLTY4LDYg
Kzc1LDggQEAgcHJvdGVjdGVkOgogcHJpdmF0ZToKICAgICBzdGF0aWMgRW5jb2RlZEpTVmFsdWUg
bGVuZ3RoR2V0dGVyKEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlLCBQcm9wZXJ0eU5hbWUpOwog
CisgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvckltcGwoVk0mKTsKKwogICAgIEJp
bmRpbmdzOjpNZXRob2QqIG1fbWV0aG9kOwogfTsKIApJbmRleDogU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHJldmlzaW9uIDIz
MDcyMykKKysrIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMg
KzEsMjMgQEAKKzIwMTgtMDQtMTcgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KKwor
ICAgICAgICBUaGUgSW50ZXJuYWxGdW5jdGlvbiBoaWVyYXJjaHkgc2hvdWxkIGJlIGluIElzb1N1
YnNwYWNlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTg0NzIxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvSlNOUE1ldGhvZC5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OkpTTlBNZXRob2Q6OnN1YnNwYWNlRm9ySW1wbCk6CisgICAgICAgICogV2ViUHJvY2Vz
cy9QbHVnaW5zL05ldHNjYXBlL0pTTlBNZXRob2QuaDoKKyAgICAgICAgKFdlYktpdDo6SlNOUE1l
dGhvZDo6Y3JlYXRlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6SlNOUE1ldGhvZDo6bnBJ
ZGVudGlmaWVyIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6SlNOUE1ldGhvZDo6
Y3JlYXRlU3RydWN0dXJlKTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMv
TmV0c2NhcGUvSlNOUE9iamVjdC5jcHA6CisgICAgICAgIChXZWJLaXQ6OkpTTlBPYmplY3Q6OnN1
YnNwYWNlRm9ySW1wbCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL0pT
TlBPYmplY3QuaDoKKyAgICAgICAgKFdlYktpdDo6SlNOUE9iamVjdDo6Y3JlYXRlKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYktpdDo6SlNOUE9iamVjdDo6bnBPYmplY3QgY29uc3QpOiBEZWxldGVk
LgorICAgICAgICAoV2ViS2l0OjpKU05QT2JqZWN0OjpjcmVhdGVTdHJ1Y3R1cmUpOiBEZWxldGVk
LgorCiAyMDE4LTA0LTE3ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAg
ICAgUkVHUkVTU0lPTiAocjIyOTgzMSk6IENNRC1jbGlja2luZyBhbiBpQ2xvdWQgd2ViIGFwcCBs
aW5rIHVuZXhwZWN0ZWRseSBvcGVucyB0aGF0IGxpbmsgaW4gYSBuZXcgdGFiIGFuZCB0aGUgY3Vy
cmVudCB0YWIKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBl
L0pTTlBNZXRob2QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Q
bHVnaW5zL05ldHNjYXBlL0pTTlBNZXRob2QuY3BwCShyZXZpc2lvbiAyMzA3MjMpCisrKyBTb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9KU05QTWV0aG9kLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAsIDIw
MTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEw
LTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAog
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCkBAIC0zMSw2ICszMSw4IEBACiAjaW5jbHVkZSAiSlNOUE9iamVjdC5oIgog
I2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Vycm9yLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENv
cmUvRnVuY3Rpb25Qcm90b3R5cGUuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9Jc29TdWJz
cGFjZVBlclZNLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNEZXN0cnVjdGlibGVPYmpl
Y3RIZWFwQ2VsbFR5cGUuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0dsb2JhbE9iamVj
dC5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTT2JqZWN0Lmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9KU0hUTUxFbGVtZW50Lmg+CkBAIC01OSw2ICs2MSwxMiBAQCB2b2lkIEpTTlBNZXRob2Q6
OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgCiAgICAgQVNTRVJUKGluaGVyaXRzKHZtLCBpbmZvKCkp
KTsKIH0KIAorSXNvU3Vic3BhY2UqIEpTTlBNZXRob2Q6OnN1YnNwYWNlRm9ySW1wbChWTSYgdm0p
Cit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPElzb1N1YnNwYWNlUGVyVk0+IHBlclZNKFtd
IChWTSYgdm0pIHsgcmV0dXJuIElTT19TVUJTUEFDRV9QQVJBTUVURVJTKHZtLmRlc3RydWN0aWJs
ZU9iamVjdEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNOUE1ldGhvZCk7IH0pOworICAgIHJldHVybiAm
cGVyVk0uZ2V0KCkuZm9yVk0odm0pOworfQorCiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBjYWxsTWV0aG9kKEV4ZWNTdGF0ZSogZXhlYykKIHsKICAgICBWTSYgdm0gPSBleGVj
LT52bSgpOwpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUv
SlNOUE1ldGhvZC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVn
aW5zL05ldHNjYXBlL0pTTlBNZXRob2QuaAkocmV2aXNpb24gMjMwNzIzKQorKysgU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvSlNOUE1ldGhvZC5oCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAxOCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
QEAgLTM3LDEwICszNywxNiBAQCB0eXBlZGVmIHZvaWQqIE5QSWRlbnRpZmllcjsKIG5hbWVzcGFj
ZSBXZWJLaXQgewogCiAvLyBBIEpTT2JqZWN0IHRoYXQgd3JhcHMgYW4gTlBNZXRob2QuCi1jbGFz
cyBKU05QTWV0aG9kIDogcHVibGljIEpTQzo6SW50ZXJuYWxGdW5jdGlvbiB7CitjbGFzcyBKU05Q
TWV0aG9kIGZpbmFsIDogcHVibGljIEpTQzo6SW50ZXJuYWxGdW5jdGlvbiB7CiBwdWJsaWM6CiAg
ICAgdHlwZWRlZiBKU0M6OkludGVybmFsRnVuY3Rpb24gQmFzZTsKIAorICAgIHRlbXBsYXRlPHR5
cGVuYW1lIENlbGxUeXBlPgorICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZv
cihKU0M6OlZNJiB2bSkKKyAgICB7CisgICAgICAgIHJldHVybiBzdWJzcGFjZUZvckltcGwodm0p
OworICAgIH0KKwogICAgIHN0YXRpYyBKU05QTWV0aG9kKiBjcmVhdGUoSlNDOjpFeGVjU3RhdGUq
IGV4ZWMsIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgU3RyaW5nJiBu
YW1lLCBOUElkZW50aWZpZXIgbnBJZGVudCkKICAgICB7CiAgICAgICAgIEpTQzo6Vk0mIHZtID0g
Z2xvYmFsT2JqZWN0LT52bSgpOwpAQCAtNTcsNyArNjMsOSBAQCBwdWJsaWM6CiBwcm90ZWN0ZWQ6
CiAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihKU0M6OlZNJiwgY29uc3QgU3RyaW5nJiBuYW1lKTsK
IAotcHJpdmF0ZTogICAgCitwcml2YXRlOgorICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBz
dWJzcGFjZUZvckltcGwoSlNDOjpWTSYpOworICAgIAogICAgIEpTTlBNZXRob2QoSlNDOjpKU0ds
b2JhbE9iamVjdCosIEpTQzo6U3RydWN0dXJlKiwgTlBJZGVudGlmaWVyKTsKIAogICAgIHN0YXRp
YyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCkluZGV4OiBT
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9KU05QT2JqZWN0LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9K
U05QT2JqZWN0LmNwcAkocmV2aXNpb24gMjMwNzIzKQorKysgU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1BsdWdpbnMvTmV0c2NhcGUvSlNOUE9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEs
NSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEwLCAyMDE2IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMC0yMDE4IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAt
MzUsNiArMzUsOCBAQAogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0F1eGlsaWFyeUJhcnJpZXJJ
bmxpbmVzLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRXJyb3IuaD4KICNpbmNsdWRlIDxK
YXZhU2NyaXB0Q29yZS9JZGVudGlmaWVySW5saW5lcy5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRD
b3JlL0lzb1N1YnNwYWNlUGVyVk0uaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0Rlc3Ry
dWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pT
R2xvYmFsT2JqZWN0Lmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNMb2NrLmg+CiAjaW5j
bHVkZSA8SmF2YVNjcmlwdENvcmUvT2JqZWN0UHJvdG90eXBlLmg+CkBAIC01MjcsNiArNTI5LDEy
IEBAIEpTT2JqZWN0KiBKU05QT2JqZWN0Ojp0aHJvd0ludmFsaWRBY2Nlc3MKICAgICByZXR1cm4g
dGhyb3dFeGNlcHRpb24oZXhlYywgc2NvcGUsIGNyZWF0ZVJlZmVyZW5jZUVycm9yKGV4ZWMsICJU
cnlpbmcgdG8gYWNjZXNzIG9iamVjdCBmcm9tIGRlc3Ryb3llZCBwbHVnLWluLiIpKTsKIH0KIAor
SXNvU3Vic3BhY2UqIEpTTlBPYmplY3Q6OnN1YnNwYWNlRm9ySW1wbChWTSYgdm0pCit7CisgICAg
c3RhdGljIE5ldmVyRGVzdHJveWVkPElzb1N1YnNwYWNlUGVyVk0+IHBlclZNKFtdIChWTSYgdm0p
IHsgcmV0dXJuIElTT19TVUJTUEFDRV9QQVJBTUVURVJTKHZtLmRlc3RydWN0aWJsZU9iamVjdEhl
YXBDZWxsVHlwZS5nZXQoKSwgSlNOUE9iamVjdCk7IH0pOworICAgIHJldHVybiAmcGVyVk0uZ2V0
KCkuZm9yVk0odm0pOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI2VuZGlmIC8vIEVO
QUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1BsdWdpbnMvTmV0c2NhcGUvSlNOUE9iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL0pTTlBPYmplY3QuaAkocmV2aXNpb24gMjMw
NzIzKQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvSlNOUE9i
amVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTAtMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKQEAgLTQxLDExICs0MSwxNyBAQCBjbGFzcyBOUFJ1bnRpbWVPYmpl
Y3RNYXA7CiAgICAgCiAvLyBKU05QT2JqZWN0IGlzIGEgSlNPYmplY3QgdGhhdCB3cmFwcyBhbiBO
UE9iamVjdC4KIAotY2xhc3MgSlNOUE9iamVjdCA6IHB1YmxpYyBKU0M6OkpTRGVzdHJ1Y3RpYmxl
T2JqZWN0IHsKK2NsYXNzIEpTTlBPYmplY3QgZmluYWwgOiBwdWJsaWMgSlNDOjpKU0Rlc3RydWN0
aWJsZU9iamVjdCB7CiBwdWJsaWM6CiAgICAgdHlwZWRlZiBKU0M6OkpTRGVzdHJ1Y3RpYmxlT2Jq
ZWN0IEJhc2U7CiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFz
ZTo6U3RydWN0dXJlRmxhZ3MgfCBKU0M6Ok92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCB8IEpT
Qzo6T3ZlcnJpZGVzR2V0UHJvcGVydHlOYW1lcyB8IEpTQzo6VHlwZU9mU2hvdWxkQ2FsbEdldENh
bGxEYXRhOwogCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGU+CisgICAgc3RhdGljIEpT
Qzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQorICAgIHsKKyAgICAgICAg
cmV0dXJuIHN1YnNwYWNlRm9ySW1wbCh2bSk7CisgICAgfQorCiAgICAgc3RhdGljIEpTTlBPYmpl
Y3QqIGNyZWF0ZShKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIE5QUnVudGltZU9i
amVjdE1hcCogb2JqZWN0TWFwLCBOUE9iamVjdCogbnBPYmplY3QpCiAgICAgewogICAgICAgICBK
U0M6OlN0cnVjdHVyZSogc3RydWN0dXJlID0gY3JlYXRlU3RydWN0dXJlKGdsb2JhbE9iamVjdC0+
dm0oKSwgZ2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QtPm9iamVjdFByb3RvdHlwZSgpKTsKQEAg
LTc0LDYgKzgwLDggQEAgcHJvdGVjdGVkOgogICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oSlNDOjpK
U0dsb2JhbE9iamVjdCopOwogCiBwcml2YXRlOgorICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNl
KiBzdWJzcGFjZUZvckltcGwoSlNDOjpWTSYpOworICAgIAogICAgIEpTTlBPYmplY3QoSlNDOjpK
U0dsb2JhbE9iamVjdCosIEpTQzo6U3RydWN0dXJlKiwgTlBSdW50aW1lT2JqZWN0TWFwKiwgTlBP
YmplY3QqKTsKICAgICAKICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVy
ZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpT
VmFsdWUgcHJvdG90eXBlKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>338181</attachid>
            <date>2018-04-17 19:02:34 -0700</date>
            <delta_ts>2018-04-17 19:22:03 -0700</delta_ts>
            <desc>maybe the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>48186</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjMwNzQxKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ2IEBA
CisyMDE4LTA0LTE3ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
VGhlIEludGVybmFsRnVuY3Rpb24gaGllcmFyY2h5IHNob3VsZCBiZSBpbiBJc29TdWJzcGFjZXMK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4NDcyMQor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAgICAKKyAgICAgICAg
VGhpcyBtb3ZlcyBJbnRlcm5hbEZ1bmN0aW9uIGludG8gYSBJc29TdWJzcGFjZS4gSXQgYWxzbyBt
b3ZlcyBhbGwgc3ViY2xhc3NlcyBpbnRvIElzb1N1YnNwYWNlcywKKyAgICAgICAgYnV0IHN1YmNs
YXNzZXMgdGhhdCBhcmUgdGhlIHNhbWUgc2l6ZSBhcyBJbnRlcm5hbEZ1bmN0aW9uIHNoYXJlIGl0
cyBzdWJzcGFjZS4gSSBkaWQgdGhpcworICAgICAgICBiZWNhdXNlIHRoZSBzdWJjbGFzc2VzIGFw
cGVhciB0byBqdXN0IG92ZXJyaWRlIG1ldGhvZHMsIHdoaWNoIGFyZSBjYWxsZWQgZHluYW1pY2Fs
bHkgdmlhIHRoZQorICAgICAgICBzdHJ1Y3R1cmUgb3IgY2xhc3Mgb2YgdGhlIG9iamVjdC4gU28s
IEkgZG9uJ3Qgc2VlIGEgdHlwZSBjb25mdXNpb24gcmlzayBpZiBVQUYgaXMgdXNlZCB0bworICAg
ICAgICBhbGxvY2F0ZSBvbmUga2luZCBvZiBJbnRlcm5hbEZ1bmN0aW9uIG92ZXIgYW5vdGhlci4K
KworICAgICAgICAqIEFQSS9KU0Jhc2UuaDoKKyAgICAgICAgKiBBUEkvSlNDYWxsYmFja0Z1bmN0
aW9uLmg6CisgICAgICAgICogQVBJL09iakNDYWxsYmFja0Z1bmN0aW9uLmg6CisgICAgICAgIChK
U0M6Ok9iakNDYWxsYmFja0Z1bmN0aW9uOjpzdWJzcGFjZUZvcik6CisgICAgICAgICogQ01ha2VM
aXN0cy50eHQ6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvajoKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBoZWFwL0lzb1N1YnNwYWNl
UGVyVk0uY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6SXNvU3Vic3BhY2VQZXJWTTo6QXV0b3Jl
bW92aW5nSXNvU3Vic3BhY2U6OkF1dG9yZW1vdmluZ0lzb1N1YnNwYWNlKToKKyAgICAgICAgKEpT
Qzo6SXNvU3Vic3BhY2VQZXJWTTo6QXV0b3JlbW92aW5nSXNvU3Vic3BhY2U6On5BdXRvcmVtb3Zp
bmdJc29TdWJzcGFjZSk6CisgICAgICAgIChKU0M6Oklzb1N1YnNwYWNlUGVyVk06Oklzb1N1YnNw
YWNlUGVyVk0pOgorICAgICAgICAoSlNDOjpJc29TdWJzcGFjZVBlclZNOjp+SXNvU3Vic3BhY2VQ
ZXJWTSk6CisgICAgICAgIChKU0M6Oklzb1N1YnNwYWNlUGVyVk06OmZvclZNKToKKyAgICAgICAg
KiBoZWFwL0lzb1N1YnNwYWNlUGVyVk0uaDogQWRkZWQuCisgICAgICAgIChKU0M6Oklzb1N1YnNw
YWNlUGVyVk06OlN1YnNwYWNlUGFyYW1ldGVyczo6U3Vic3BhY2VQYXJhbWV0ZXJzKToKKyAgICAg
ICAgKiBydW50aW1lL0Vycm9yLmg6CisgICAgICAgICogcnVudGltZS9FcnJvckNvbnN0cnVjdG9y
Lmg6CisgICAgICAgICogcnVudGltZS9JbnRlcm5hbEZ1bmN0aW9uLmg6CisgICAgICAgIChKU0M6
OkludGVybmFsRnVuY3Rpb246OnN1YnNwYWNlRm9yKToKKyAgICAgICAgKiBydW50aW1lL0ludGxD
b2xsYXRvckNvbnN0cnVjdG9yLmg6CisgICAgICAgICogcnVudGltZS9JbnRsRGF0ZVRpbWVGb3Jt
YXRDb25zdHJ1Y3Rvci5oOgorICAgICAgICAqIHJ1bnRpbWUvSW50bE51bWJlckZvcm1hdENvbnN0
cnVjdG9yLmg6CisgICAgICAgICogcnVudGltZS9KU0FycmF5QnVmZmVyQ29uc3RydWN0b3IuaDoK
KyAgICAgICAgKiBydW50aW1lL05hdGl2ZUVycm9yQ29uc3RydWN0b3IuaDoKKyAgICAgICAgKiBy
dW50aW1lL1Byb3h5UmV2b2tlLmg6CisgICAgICAgICogcnVudGltZS9SZWdFeHBDb25zdHJ1Y3Rv
ci5oOgorICAgICAgICAqIHJ1bnRpbWUvVk0uY3BwOgorICAgICAgICAoSlNDOjpWTTo6Vk0pOgor
ICAgICAgICAqIHJ1bnRpbWUvVk0uaDoKKwogMjAxOC0wNC0xNyAgQ29tbWl0IFF1ZXVlICA8Y29t
bWl0LXF1ZXVlQHdlYmtpdC5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQg
cjIzMDY5NywgcjIzMDcyMCwgYW5kIHIyMzA3MjQuCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ01ha2VMaXN0cy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0NN
YWtlTGlzdHMudHh0CShyZXZpc2lvbiAyMzA3MjMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Q01ha2VMaXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTUzMSw2ICs1MzEsNyBAQCBzZXQoSmF2
YVNjcmlwdENvcmVfUFJJVkFURV9GUkFNRVdPUktfSEVBCiAgICAgaGVhcC9JbmNyZW1lbnRhbFN3
ZWVwZXIuaAogICAgIGhlYXAvSXNvQ2VsbFNldC5oCiAgICAgaGVhcC9Jc29TdWJzcGFjZS5oCisg
ICAgaGVhcC9Jc29TdWJzcGFjZVBlclZNLmgKICAgICBoZWFwL0xhcmdlQWxsb2NhdGlvbi5oCiAg
ICAgaGVhcC9MaXN0YWJsZUhhbmRsZXIuaAogICAgIGhlYXAvTG9jYWxBbGxvY2F0b3IuaApJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0Cj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dAkocmV2aXNpb24gMjMwNzIzKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC01MDIsNiArNTAy
LDcgQEAgaGVhcC9JbmNyZW1lbnRhbFN3ZWVwZXIuY3BwCiBoZWFwL0lzb0FsaWduZWRNZW1vcnlB
bGxvY2F0b3IuY3BwCiBoZWFwL0lzb0NlbGxTZXQuY3BwCiBoZWFwL0lzb1N1YnNwYWNlLmNwcAor
aGVhcC9Jc29TdWJzcGFjZVBlclZNLmNwcAogaGVhcC9KSVRTdHViUm91dGluZVNldC5jcHAKIGhl
YXAvTGFyZ2VBbGxvY2F0aW9uLmNwcAogaGVhcC9Mb2NhbEFsbG9jYXRvci5jcHAKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNCYXNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL0FQSS9KU0Jhc2UuaAkocmV2aXNpb24gMjMwNzIzKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL0FQSS9KU0Jhc2UuaAkod29ya2luZyBjb3B5KQpAQCAtMTQzLDcgKzE0Myw3
IEBAIEpTX0VYUE9SVCB2b2lkIEpTR2FyYmFnZUNvbGxlY3QoSlNDb250ZXgKIH0KICNlbmRpZgog
Ci0vKiBFbmFibGUgdGhlIE9iamVjdGl2ZS1DIEFQSSBmb3IgcGxhdGZvcm1zIHdpdGggYSBtb2Rl
cm4gcnVudGltZS4gKi8KKy8qIEVuYWJsZSB0aGUgT2JqZWN0aXZlLUMgQVBJIGZvciBwbGF0Zm9y
bXMgd2l0aCBhIG1vZGVybiBydW50aW1lLiBOT1RFOiBUaGlzIGlzIGR1cGxpY2F0ZWQgaW4gVk0u
aC4gKi8KICNpZiAhZGVmaW5lZChKU0NfT0JKQ19BUElfRU5BQkxFRCkKICNpZiAoZGVmaW5lZChf
X2NsYW5nX18pICYmIGRlZmluZWQoX19BUFBMRV9fKSAmJiAoKGRlZmluZWQoX19NQUNfT1NfWF9W
RVJTSU9OX01JTl9SRVFVSVJFRCkgJiYgIWRlZmluZWQoX19pMzg2X18pKSB8fCAoZGVmaW5lZChU
QVJHRVRfT1NfSVBIT05FKSAmJiBUQVJHRVRfT1NfSVBIT05FKSkpCiAjZGVmaW5lIEpTQ19PQkpD
X0FQSV9FTkFCTEVEIDEKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFj
a0Z1bmN0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0Nh
bGxiYWNrRnVuY3Rpb24uaAkocmV2aXNpb24gMjMwNzIzKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL0FQSS9KU0NhbGxiYWNrRnVuY3Rpb24uaAkod29ya2luZyBjb3B5KQpAQCAtMzcsNiArMzcs
MTIgQEAgY2xhc3MgSlNDYWxsYmFja0Z1bmN0aW9uIGZpbmFsIDogcHVibGljIAogcHVibGljOgog
ICAgIHR5cGVkZWYgSW50ZXJuYWxGdW5jdGlvbiBCYXNlOwogCisgICAgdGVtcGxhdGU8dHlwZW5h
bWUgQ2VsbFR5cGU+CisgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0p
CisgICAgeworICAgICAgICByZXR1cm4gJnZtLmNhbGxiYWNrRnVuY3Rpb25TcGFjZTsKKyAgICB9
CisKICAgICBzdGF0aWMgSlNDYWxsYmFja0Z1bmN0aW9uKiBjcmVhdGUoVk0mLCBKU0dsb2JhbE9i
amVjdCosIEpTT2JqZWN0Q2FsbEFzRnVuY3Rpb25DYWxsYmFjaywgY29uc3QgU3RyaW5nJiBuYW1l
KTsKIAogICAgIERFQ0xBUkVfSU5GTzsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkv
T2JqQ0NhbGxiYWNrRnVuY3Rpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvQVBJL09iakNDYWxsYmFja0Z1bmN0aW9uLmgJKHJldmlzaW9uIDIzMDcyMykKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9BUEkvT2JqQ0NhbGxiYWNrRnVuY3Rpb24uaAkod29ya2luZyBjb3B5
KQpAQCAtNDgsNiArNDgsMTIgQEAgY2xhc3MgT2JqQ0NhbGxiYWNrRnVuY3Rpb24gOiBwdWJsaWMg
SW50ZQogcHVibGljOgogICAgIHR5cGVkZWYgSW50ZXJuYWxGdW5jdGlvbiBCYXNlOwogCisgICAg
dGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGU+CisgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJz
cGFjZUZvcihWTSYgdm0pCisgICAgeworICAgICAgICByZXR1cm4gJnZtLm9iakNDYWxsYmFja0Z1
bmN0aW9uU3BhY2U7CisgICAgfQorCiAgICAgc3RhdGljIE9iakNDYWxsYmFja0Z1bmN0aW9uKiBj
cmVhdGUoVk0mLCBKU0dsb2JhbE9iamVjdCosIGNvbnN0IFN0cmluZyYgbmFtZSwgc3RkOjp1bmlx
dWVfcHRyPE9iakNDYWxsYmFja0Z1bmN0aW9uSW1wbD4pOwogICAgIHN0YXRpYyB2b2lkIGRlc3Ry
b3koSlNDZWxsKik7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvZ2xpYi9KU0ND
YWxsYmFja0Z1bmN0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
QVBJL2dsaWIvSlNDQ2FsbGJhY2tGdW5jdGlvbi5jcHAJKHJldmlzaW9uIDIzMDcyMykKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvZ2xpYi9KU0NDYWxsYmFja0Z1bmN0aW9uLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMjksNiArMjksNyBAQAogCiAjaW5jbHVkZSAiQVBJQ2FsbGJhY2tGdW5j
dGlvbi5oIgogI2luY2x1ZGUgIkFQSUNhc3QuaCIKKyNpbmNsdWRlICJJc29TdWJzcGFjZVBlclZN
LmgiCiAjaW5jbHVkZSAiSlNDQ2xhc3NQcml2YXRlLmgiCiAjaW5jbHVkZSAiSlNDQ29udGV4dFBy
aXZhdGUuaCIKICNpbmNsdWRlICJKU0NFeGNlcHRpb25Qcml2YXRlLmgiCkBAIC0yMDYsNCArMjA3
LDEwIEBAIHZvaWQgSlNDQ2FsbGJhY2tGdW5jdGlvbjo6ZGVzdHJveShKU0NlbGwKICAgICBzdGF0
aWNfY2FzdDxKU0NDYWxsYmFja0Z1bmN0aW9uKj4oY2VsbCktPkpTQ0NhbGxiYWNrRnVuY3Rpb246
On5KU0NDYWxsYmFja0Z1bmN0aW9uKCk7CiB9CiAKK0lzb1N1YnNwYWNlKiBKU0NDYWxsYmFja0Z1
bmN0aW9uOjpzdWJzcGFjZUZvckltcGwoVk0mIHZtKQoreworICAgIE5ldmVyRGVzdHJveWVkPElz
b1N1YnNwYWNlUGVyVk0+IHBlclZNKFtdIChWTSYgdm0pIHsgcmV0dXJuIElTT19TVUJTUEFDRV9Q
QVJBTUVURVJTKHZtLmRlc3RydWN0aWJlT2JqZWN0SGVhcENlbGxUeXBlLmdldCgpLCBKU0NDYWxs
YmFja0Z1bmN0aW9uKTsgfSk7CisgICAgcmV0dXJuIHBlclZNLmdldCgpLmZvclZNKHZtKTsKK30K
KwogfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL2ds
aWIvSlNDQ2FsbGJhY2tGdW5jdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9BUEkvZ2xpYi9KU0NDYWxsYmFja0Z1bmN0aW9uLmgJKHJldmlzaW9uIDIzMDcyMykKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvZ2xpYi9KU0NDYWxsYmFja0Z1bmN0aW9uLmgJKHdv
cmtpbmcgY29weSkKQEAgLTQwLDYgKzQwLDEyIEBAIGNsYXNzIEpTQ0NhbGxiYWNrRnVuY3Rpb24g
OiBwdWJsaWMgSW50ZXIKIHB1YmxpYzoKICAgICB0eXBlZGVmIEludGVybmFsRnVuY3Rpb24gQmFz
ZTsKIAorICAgIHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlPgorICAgIHN0YXRpYyBJc29TdWJz
cGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHN1YnNwYWNl
Rm9ySW1wbCh2bSk7CisgICAgfQorCiAgICAgZW51bSBjbGFzcyBUeXBlIHsKICAgICAgICAgRnVu
Y3Rpb24sCiAgICAgICAgIE1ldGhvZCwKQEAgLTYxLDYgKzY3LDggQEAgcHVibGljOgogICAgIEpT
T2JqZWN0UmVmIGNvbnN0cnVjdChKU0NvbnRleHRSZWYsIHNpemVfdCBhcmd1bWVudENvdW50LCBj
b25zdCBKU1ZhbHVlUmVmIGFyZ3VtZW50c1tdLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pOwogCiBw
cml2YXRlOgorICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3JJbXBsKFZNJik7Cisg
ICAgCiAgICAgSlNDQ2FsbGJhY2tGdW5jdGlvbihWTSYsIFN0cnVjdHVyZSosIFR5cGUsIEpTQ0Ns
YXNzKiwgR1JlZlB0cjxHQ2xvc3VyZT4mJiwgR1R5cGUsIFZlY3RvcjxHVHlwZT4mJik7CiAKICAg
ICBKU09iamVjdENhbGxBc0Z1bmN0aW9uQ2FsbGJhY2sgZnVuY3Rpb25DYWxsYmFjaygpIHsgcmV0
dXJuIG1fZnVuY3Rpb25DYWxsYmFjazsgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oJKHJldmlzaW9uIDIzMDcyMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0zNDMsNiAr
MzQzLDcgQEAKIAkJMEY1Q0Y5ODQxRTlENTM3NzAwQzE4NjkyIC8qIEFpckxvd2VyU3RhY2tBcmdz
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjVDRjk4
MzFFOUQ1Mzc1MDBDMTg2OTIgLyogQWlyTG93ZXJTdGFja0FyZ3MuaCAqLzsgfTsKIAkJMEY1Q0Y5
ODkxRTlFRDY1MjAwQzE4NjkyIC8qIEFpclN0YWNrQWxsb2NhdGlvbi5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY1Q0Y5ODcxRTlFRDY0RTAwQzE4Njky
IC8qIEFpclN0YWNrQWxsb2NhdGlvbi5oICovOyB9OwogCQkwRjVFMEZEODIwN0M3MjczMDA5N0Yw
REUgLyogREZHQWJzdHJhY3RJbnRlcnByZXRlckNsb2JiZXJTdGF0ZS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY1RTBGRDYyMDdDNzI3MTAwOTdGMERF
IC8qIERGR0Fic3RyYWN0SW50ZXJwcmV0ZXJDbG9iYmVyU3RhdGUuaCAqLzsgfTsKKwkJMEY1RTBG
RTcyMDg2QUQ0ODAwOTdGMERFIC8qIElzb1N1YnNwYWNlUGVyVk0uaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNUUwRkU1MjA4NkFENDYwMDk3RjBERSAv
KiBJc29TdWJzcGFjZVBlclZNLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJMEY1RUY5MUYxNjg3OEY3RDAwM0U1QzI1IC8qIEpJVFRodW5rcy5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY1RUY5MUMxNjg3
OEY3ODAwM0U1QzI1IC8qIEpJVFRodW5rcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCTBGNUYwOENGMTQ2Qzc2MzMwMDA0NzJBOSAvKiBVbmNvbmRp
dGlvbmFsRmluYWxpemVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAwRjVGMDhDRTE0NkM3NjJGMDAwNDcyQTkgLyogVW5jb25kaXRpb25hbEZpbmFsaXpl
ci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBG
NjBGRTkwMUZGQzM3MDIwMDAzMzIwQSAvKiBFeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjYwRkU4RTFGRkMz
NkZEMDAwMzMyMEEgLyogRXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZS5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0yMzUwLDYgKzIzNTEsOCBAQAog
CQkwRjVEMDg1QzFCOENGOTlEMDAxMTQzQjQgLyogREZHTm9kZU9yaWdpbi5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBERkdOb2RlT3JpZ2luLmNwcDsgcGF0aCA9IGRm
Zy9ERkdOb2RlT3JpZ2luLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY1RTBG
RDYyMDdDNzI3MTAwOTdGMERFIC8qIERGR0Fic3RyYWN0SW50ZXJwcmV0ZXJDbG9iYmVyU3RhdGUu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHQWJzdHJhY3RJbnRlcnByZXRl
ckNsb2JiZXJTdGF0ZS5oOyBwYXRoID0gZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJDbG9iYmVy
U3RhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY1RTBGRDcyMDdDNzI3MTAw
OTdGMERFIC8qIERGR0Fic3RyYWN0SW50ZXJwcmV0ZXJDbG9iYmVyU3RhdGUuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gREZHQWJzdHJhY3RJbnRlcnByZXRlckNsb2Ji
ZXJTdGF0ZS5jcHA7IHBhdGggPSBkZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlckNsb2JiZXJTdGF0
ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGNUUwRkU1MjA4NkFENDYwMDk3
RjBERSAvKiBJc29TdWJzcGFjZVBlclZNLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IElzb1N1YnNwYWNlUGVyVk0uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY1
RTBGRTYyMDg2QUQ0NzAwOTdGMERFIC8qIElzb1N1YnNwYWNlUGVyVk0uY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSXNvU3Vic3BhY2VQZXJWTS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNUVGOTFCMTY4NzhGNzgwMDNFNUMyNSAvKiBKSVRUaHVu
a3MuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSklUVGh1bmtzLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY1RUY5MUMxNjg3OEY3ODAwM0U1QzI1
IC8qIEpJVFRodW5rcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKSVRUaHVu
a3MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY1RjA4Q0UxNDZDNzYyRjAwMDQ3
MkE5IC8qIFVuY29uZGl0aW9uYWxGaW5hbGl6ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gVW5jb25kaXRpb25hbEZpbmFsaXplci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwpAQCAtNTY5NSw2ICs1Njk4LDggQEAKIAkJCQkwRkI0Njc3QjFGRERBNkQ4MDAzRkNCMDkg
LyogSXNvQ2VsbFNldElubGluZXMuaCAqLywKIAkJCQkwRkRDRTEyQzFGQUZCNERFMDA2RjM5MDEg
LyogSXNvU3Vic3BhY2UuY3BwICovLAogCQkJCTBGRENFMTJCMUZBRkI0REUwMDZGMzkwMSAvKiBJ
c29TdWJzcGFjZS5oICovLAorCQkJCTBGNUUwRkU2MjA4NkFENDcwMDk3RjBERSAvKiBJc29TdWJz
cGFjZVBlclZNLmNwcCAqLywKKwkJCQkwRjVFMEZFNTIwODZBRDQ2MDA5N0YwREUgLyogSXNvU3Vi
c3BhY2VQZXJWTS5oICovLAogCQkJCTBGNzY2RDI5MTVBOENDMzQwMDhGMzYzRSAvKiBKSVRTdHVi
Um91dGluZVNldC5jcHAgKi8sCiAJCQkJMEY3NjZEMkExNUE4Q0MzNDAwOEYzNjNFIC8qIEpJVFN0
dWJSb3V0aW5lU2V0LmggKi8sCiAJCQkJMEYwNzBBNDUxRDU0M0E4OTAwNkU3MjMyIC8qIExhcmdl
QWxsb2NhdGlvbi5jcHAgKi8sCkBAIC05NDkxLDYgKzk0OTYsNyBAQAogCQkJCTUzRjhEMjAwMUU4
Mzg3RDQwMEQyMTExNiAvKiBXYXNtQkJRUGxhbklubGluZXMuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUFENEIxREZBMURGMjQ0RTIwMDcxQUUzMiAvKiBXYXNtQmluZGluZy5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJNTI1QzBEREExRTkzNTg0NzAwMjE4NENEIC8qIFdhc21DYWxsZWUuaCBpbiBIZWFkZXJz
ICovLAorCQkJCTBGNUUwRkU3MjA4NkFENDgwMDk3RjBERSAvKiBJc29TdWJzcGFjZVBlclZNLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk1M0ZEMDRENDFEN0FCMjkxMDAzMjg3RDMgLyogV2FzbUNhbGxp
bmdDb252ZW50aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MjZBQzRCNzFFOTc3QzVEMDAzNTAw
RTEgLyogV2FzbUNvZGVCbG9jay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQUQ0MTJCMzQxRTdCMkU5
RTAwOEFGMTU3IC8qIFdhc21Db250ZXh0LmggaW4gSGVhZGVycyAqLywKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL0lzb1N1YnNwYWNlUGVyVk0uY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0lzb1N1YnNwYWNlUGVyVk0uY3BwCShub25leGlzdGVu
dCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0lzb1N1YnNwYWNlUGVyVk0uY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNzMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTgg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIklzb1N1
YnNwYWNlUGVyVk0uaCIKKworI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKKworbmFtZXNwYWNlIEpT
QyB7CisKK2NsYXNzIElzb1N1YnNwYWNlUGVyVk06OkF1dG9yZW1vdmluZ0lzb1N1YnNwYWNlIDog
cHVibGljIElzb1N1YnNwYWNlIHsKK3B1YmxpYzoKKyAgICBBdXRvcmVtb3ZpbmdJc29TdWJzcGFj
ZShJc29TdWJzcGFjZVBlclZNJiBwZXJWTSwgQ1N0cmluZyBuYW1lLCBIZWFwJiBoZWFwLCBIZWFw
Q2VsbFR5cGUqIGhlYXBDZWxsVHlwZSwgc2l6ZV90IHNpemUpCisgICAgICAgIDogSXNvU3Vic3Bh
Y2UobmFtZSwgaGVhcCwgaGVhcENlbGxUeXBlLCBzaXplKQorICAgICAgICAsIG1fcGVyVk0ocGVy
Vk0pCisgICAgeworICAgIH0KKyAgICAKKyAgICB+QXV0b3JlbW92aW5nSXNvU3Vic3BhY2UoKQor
ICAgIHsKKyAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX3BlclZNLm1fbG9jayk7Cisg
ICAgICAgIG1fcGVyVk0ubV9zdWJzcGFjZVBlclZNLnJlbW92ZShzcGFjZSgpLmhlYXAoKS0+dm0o
KSk7CisgICAgfQorCitwcml2YXRlOgorICAgIElzb1N1YnNwYWNlUGVyVk0mIG1fcGVyVk07Cit9
OworCitJc29TdWJzcGFjZVBlclZNOjpJc29TdWJzcGFjZVBlclZNKEZ1bmN0aW9uPFN1YnNwYWNl
UGFyYW1ldGVycyhWTSYpPiBzdWJzcGFjZVBhcmFtZXRlcnMpCisgICAgOiBtX3N1YnNwYWNlUGFy
YW1ldGVycyhXVEZNb3ZlKHN1YnNwYWNlUGFyYW1ldGVycykpCit7Cit9CisKK0lzb1N1YnNwYWNl
UGVyVk06On5Jc29TdWJzcGFjZVBlclZNKCkKK3sKKyAgICBVTlJFQUNIQUJMRV9GT1JfUExBVEZP
Uk0oKTsKK30KKworSXNvU3Vic3BhY2UmIElzb1N1YnNwYWNlUGVyVk06OmZvclZNKFZNJiB2bSkK
K3sKKyAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fbG9jayk7CisgICAgYXV0byByZXN1bHQg
PSBtX3N1YnNwYWNlUGVyVk0uYWRkKCZ2bSwgbnVsbHB0cik7CisgICAgaWYgKHJlc3VsdCkgewor
ICAgICAgICBTdWJzcGFjZVBhcmFtZXRlcnMgcGFyYW1zID0gbV9zdWJzcGFjZVBhcmFtZXRlcnMo
dm0pOworICAgICAgICByZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gbmV3IEF1dG9yZW1vdmluZ0lz
b1N1YnNwYWNlKCp0aGlzLCBwYXJhbXMubmFtZSwgdm0uaGVhcCwgcGFyYW1zLmhlYXBDZWxsVHlw
ZSwgcGFyYW1zLnNpemUpOworICAgIH0KKyAgICByZXR1cm4gKnJlc3VsdC5pdGVyYXRvci0+dmFs
dWU7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQworCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9Jc29TdWJzcGFjZVBlclZNLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvSXNvU3Vic3BhY2VQZXJWTS5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL0lzb1N1YnNwYWNlUGVyVk0uaAkod29ya2luZyBjb3B5KQpAQCAt
MCwwICsxLDczIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICov
CisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiSXNvU3Vic3BhY2UuaCIKKyNpbmNsdWRlIDx3
dGYvRnVuY3Rpb24uaD4KKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9M
b2NrLmg+CisKK25hbWVzcGFjZSBKU0MgeworCisvLyBUaGlzIGlzIGFuIGFwcHJvcHJpYXRlIHdh
eSB0byBzdGFzaCBJc29TdWJzcGFjZXMgZm9yIHJhcmVseS11c2VkIGNsYXNzZXMgb3IgY2xhc3Nl
cyB0aGF0IGFyZSBtb3N0bHkKKy8vIHN1cmUgdG8gYmUgbWFpbi10aHJlYWQtb25seS4gQnV0IGlm
IGEgY2xhc3MgdHlwaWNhbGx5IGdldHMgaW5zdGFudGlhdGVkIGZyb20gbXVsdGlwbGUgdGhyZWFk
cyBhdAorLy8gb25jZSwgdGhlbiB0aGlzIGlzIG5vdCBncmVhdCwgYmVjYXVzZSBjb25jdXJyZW50
IGFsbG9jYXRpb25zIHdpbGwgcHJvYmFibHkgY29udGVuZCBvbiB0aGlzIHRoaW5nJ3MKKy8vIGxv
Y2suCitjbGFzcyBJc29TdWJzcGFjZVBlclZNIHsKK3B1YmxpYzoKKyAgICBzdHJ1Y3QgU3Vic3Bh
Y2VQYXJhbWV0ZXJzIHsKKyAgICAgICAgU3Vic3BhY2VQYXJhbWV0ZXJzKCkgeyB9CisgICAgICAg
IAorICAgICAgICBTdWJzcGFjZVBhcmFtZXRlcnMoQ1N0cmluZyBuYW1lLCBIZWFwQ2VsbFR5cGUq
IGhlYXBDZWxsVHlwZSwgc2l6ZV90IHNpemUpCisgICAgICAgICAgICA6IG5hbWUoV1RGTW92ZShu
YW1lKSkKKyAgICAgICAgICAgICwgaGVhcENlbGxUeXBlKGhlYXBDZWxsVHlwZSkKKyAgICAgICAg
ICAgICwgc2l6ZShzaXplKQorICAgICAgICB7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAg
IENTdHJpbmcgbmFtZTsKKyAgICAgICAgSGVhcENlbGxUeXBlKiBoZWFwQ2VsbFR5cGUgeyBudWxs
cHRyIH07CisgICAgICAgIHNpemVfdCBzaXplIHsgMCB9OworICAgIH07CisgICAgCisgICAgSlNf
RVhQT1JUX1BSSVZBVEUgSXNvU3Vic3BhY2VQZXJWTShGdW5jdGlvbjxTdWJzcGFjZVBhcmFtZXRl
cnMoVk0mKT4pOworICAgIEpTX0VYUE9SVF9QUklWQVRFIH5Jc29TdWJzcGFjZVBlclZNKCk7Cisg
ICAgCisgICAgSlNfRVhQT1JUX1BSSVZBVEUgSXNvU3Vic3BhY2UmIGZvclZNKFZNJik7CisKK3By
aXZhdGU6CisgICAgY2xhc3MgQXV0b3JlbW92aW5nSXNvU3Vic3BhY2U7CisgICAgZnJpZW5kIGNs
YXNzIEF1dG9yZW1vdmluZ0lzb1N1YnNwYWNlOworCisgICAgTG9jayBtX2xvY2s7CisgICAgSGFz
aE1hcDxWTSosIElzb1N1YnNwYWNlKj4gbV9zdWJzcGFjZVBlclZNOworICAgIEZ1bmN0aW9uPFN1
YnNwYWNlUGFyYW1ldGVycyhWTSYpPiBtX3N1YnNwYWNlUGFyYW1ldGVyczsKK307CisKKyNkZWZp
bmUgSVNPX1NVQlNQQUNFX1BBUkFNRVRFUlMoaGVhcENlbGxUeXBlLCB0eXBlKSBJc29TdWJzcGFj
ZVBlclZNOjpTdWJzcGFjZVBhcmFtZXRlcnMoIklzb2xhdGVkICIgI3R5cGUgIiBTcGFjZSIsICho
ZWFwQ2VsbFR5cGUpLCBzaXplb2YodHlwZSkpCisKK30gLy8gbmFtZXNwYWNlIEpTQworCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvci5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yLmgJKHJldmlzaW9uIDIzMDcyMykKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yLmgJKHdvcmtpbmcgY29weSkKQEAg
LTExNSw2ICsxMTUsMTIgQEAgcHJpdmF0ZToKIAogcHVibGljOgogICAgIHR5cGVkZWYgSW50ZXJu
YWxGdW5jdGlvbiBCYXNlOworICAgIAorICAgIHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlPgor
ICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQorICAgIHsKKyAgICAg
ICAgcmV0dXJuICZ2bS5zdHJpY3RNb2RlVHlwZUVycm9yRnVuY3Rpb25TcGFjZTsKKyAgICB9CiAK
ICAgICBzdGF0aWMgU3RyaWN0TW9kZVR5cGVFcnJvckZ1bmN0aW9uKiBjcmVhdGUoVk0mIHZtLCBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKQogICAgIHsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yQ29uc3RydWN0b3IuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvckNvbnN0cnVjdG9yLmgJ
KHJldmlzaW9uIDIzMDcyMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9y
Q29uc3RydWN0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtMSw2ICsxLDYgQEAKIC8qCiAgKiAgQ29w
eXJpZ2h0IChDKSAxOTk5LTIwMDAgSGFycmkgUG9ydGVuIChwb3J0ZW5Aa2RlLm9yZykKLSAqICBD
b3B5cmlnaHQgKEMpIDIwMDgtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiAgQ29weXJpZ2h0IChDKSAyMDA4LTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICoKICAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3Ry
aWJ1dGUgaXQgYW5kL29yCiAgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V
IExlc3NlciBHZW5lcmFsIFB1YmxpYwpAQCAtMzEsNiArMzEsMTIgQEAgY2xhc3MgRXJyb3JDb25z
dHJ1Y3RvciBmaW5hbCA6IHB1YmxpYyBJbgogcHVibGljOgogICAgIHR5cGVkZWYgSW50ZXJuYWxG
dW5jdGlvbiBCYXNlOwogCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGU+CisgICAgc3Rh
dGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCisgICAgeworICAgICAgICByZXR1
cm4gJnZtLmVycm9yQ29uc3RydWN0b3JTcGFjZTsKKyAgICB9CisKICAgICBzdGF0aWMgRXJyb3JD
b25zdHJ1Y3RvciogY3JlYXRlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEVycm9yUHJv
dG90eXBlKiBlcnJvclByb3RvdHlwZSwgR2V0dGVyU2V0dGVyKikKICAgICB7CiAgICAgICAgIEVy
cm9yQ29uc3RydWN0b3IqIGNvbnN0cnVjdG9yID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8
RXJyb3JDb25zdHJ1Y3Rvcj4odm0uaGVhcCkpIEVycm9yQ29uc3RydWN0b3Iodm0sIHN0cnVjdHVy
ZSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRlcm5hbEZ1bmN0aW9u
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50ZXJuYWxG
dW5jdGlvbi5oCShyZXZpc2lvbiAyMzA3MjMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9JbnRlcm5hbEZ1bmN0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTM4LDYgKzM4LDEzIEBA
IHB1YmxpYzoKICAgICB0eXBlZGVmIEpTRGVzdHJ1Y3RpYmxlT2JqZWN0IEJhc2U7CiAgICAgc3Rh
dGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3Mg
fCBJbXBsZW1lbnRzSGFzSW5zdGFuY2UgfCBJbXBsZW1lbnRzRGVmYXVsdEhhc0luc3RhbmNlIHwg
VHlwZU9mU2hvdWxkQ2FsbEdldENhbGxEYXRhOwogCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2Vs
bFR5cGU+CisgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCisgICAg
eworICAgICAgICBzdGF0aWNfYXNzZXJ0KHNpemVvZihDZWxsVHlwZSkgPT0gc2l6ZW9mKEludGVy
bmFsRnVuY3Rpb24pLCAiSW50ZXJuYWxGdW5jdGlvbiBzdWJjbGFzc2VzIHRoYXQgYWRkIGZpZWxk
cyBuZWVkIHRvIG92ZXJyaWRlIHN1YnNwYWNlRm9yPD4oKSIpOworICAgICAgICByZXR1cm4gJnZt
LmludGVybmFsRnVuY3Rpb25TcGFjZTsKKyAgICB9CisKICAgICBERUNMQVJFX0VYUE9SVF9JTkZP
OwogCiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0Nl
bGwqLCBTbG90VmlzaXRvciYpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SW50bENvbGxhdG9yQ29uc3RydWN0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9JbnRsQ29sbGF0b3JDb25zdHJ1Y3Rvci5oCShyZXZpc2lvbiAyMzA3MjMp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsQ29sbGF0b3JDb25zdHJ1Y3Rv
ci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykg
MjAxNSBBbmR5IFZhbldhZ29uZXIgKHRoZXRhbGVjcmFmdGVyQGdtYWlsLmNvbSkKKyAqIENvcHly
aWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM5LDYgKzQwLDEyIEBAIHB1YmxpYzoKICAgICB0eXBl
ZGVmIEludGVybmFsRnVuY3Rpb24gQmFzZTsKICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3Ry
dWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IEhhc1N0YXRpY1Byb3BlcnR5VGFi
bGU7CiAKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZT4KKyAgICBzdGF0aWMgSXNvU3Vi
c3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKKyAgICB7CisgICAgICAgIHJldHVybiAmdm0uaW50
bENvbGxhdG9yQ29uc3RydWN0b3JTcGFjZTsKKyAgICB9CisKICAgICBzdGF0aWMgSW50bENvbGxh
dG9yQ29uc3RydWN0b3IqIGNyZWF0ZShWTSYsIFN0cnVjdHVyZSosIEludGxDb2xsYXRvclByb3Rv
dHlwZSosIFN0cnVjdHVyZSopOwogICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVy
ZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSk7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0Q29u
c3RydWN0b3IuaAkocmV2aXNpb24gMjMwNzIzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3IuaAkod29ya2luZyBjb3B5KQpAQCAt
MSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQW5keSBWYW5XYWdvbmVyICh0
aGV0YWxlY3JhZnRlckBnbWFpbC5jb20pCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBA
IC0zOSw2ICs0MCwxMiBAQCBwdWJsaWM6CiAgICAgdHlwZWRlZiBJbnRlcm5hbEZ1bmN0aW9uIEJh
c2U7CiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3Ry
dWN0dXJlRmxhZ3MgfCBIYXNTdGF0aWNQcm9wZXJ0eVRhYmxlOwogCisgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgQ2VsbFR5cGU+CisgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYg
dm0pCisgICAgeworICAgICAgICByZXR1cm4gJnZtLmludGxEYXRlVGltZUZvcm1hdENvbnN0cnVj
dG9yU3BhY2U7CisgICAgfQorCiAgICAgc3RhdGljIEludGxEYXRlVGltZUZvcm1hdENvbnN0cnVj
dG9yKiBjcmVhdGUoVk0mLCBTdHJ1Y3R1cmUqLCBJbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUq
LCBTdHJ1Y3R1cmUqKTsKICAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0m
LCBKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUpOwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3IuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3Iu
aAkocmV2aXNpb24gMjMwNzIzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50
bE51bWJlckZvcm1hdENvbnN0cnVjdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw2IEBA
CiAvKgogICogQ29weXJpZ2h0IChDKSAyMDE1IEFuZHkgVmFuV2Fnb25lciAodGhldGFsZWNyYWZ0
ZXJAZ21haWwuY29tKQorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzksNiArNDAs
MTIgQEAgcHVibGljOgogICAgIHR5cGVkZWYgSW50ZXJuYWxGdW5jdGlvbiBCYXNlOwogICAgIHN0
YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdz
IHwgSGFzU3RhdGljUHJvcGVydHlUYWJsZTsKIAorICAgIHRlbXBsYXRlPHR5cGVuYW1lIENlbGxU
eXBlPgorICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQorICAgIHsK
KyAgICAgICAgcmV0dXJuICZ2bS5pbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3JTcGFjZTsKKyAg
ICB9CisKICAgICBzdGF0aWMgSW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yKiBjcmVhdGUoVk0m
LCBTdHJ1Y3R1cmUqLCBJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlKiwgU3RydWN0dXJlKik7CiAg
ICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiwgSlNHbG9iYWxPYmplY3Qq
LCBKU1ZhbHVlKTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJh
eUJ1ZmZlckNvbnN0cnVjdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNBcnJheUJ1ZmZlckNvbnN0cnVjdG9yLmgJKHJldmlzaW9uIDIzMDcyMykKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJDb25zdHJ1Y3Rvci5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
MywgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTMtMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKQEAgLTM3LDYgKzM3LDEyIEBAIGNsYXNzIEpTQXJyYXlCdWZmZXJD
b25zdHJ1Y3RvciBmaW5hbCA6IHAKIHB1YmxpYzoKICAgICB0eXBlZGVmIEludGVybmFsRnVuY3Rp
b24gQmFzZTsKIAorICAgIHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlPgorICAgIHN0YXRpYyBJ
c29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQorICAgIHsKKyAgICAgICAgcmV0dXJuICZ2
bS5hcnJheUJ1ZmZlckNvbnN0cnVjdG9yU3BhY2U7CisgICAgfQorCiBwcm90ZWN0ZWQ6CiAgICAg
SlNBcnJheUJ1ZmZlckNvbnN0cnVjdG9yKFZNJiwgU3RydWN0dXJlKiwgQXJyYXlCdWZmZXJTaGFy
aW5nTW9kZSk7CiAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYsIEpTQXJyYXlCdWZmZXJQcm90
b3R5cGUqLCBHZXR0ZXJTZXR0ZXIqIHNwZWNpZXNTeW1ib2wpOwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvci5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05hdGl2ZUVycm9yQ29uc3RydWN0b3IuaAko
cmV2aXNpb24gMjMwNzIzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZl
RXJyb3JDb25zdHJ1Y3Rvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEsNiBAQAogLyoKICAq
ICBDb3B5cmlnaHQgKEMpIDE5OTktMjAwMCBIYXJyaSBQb3J0ZW4gKHBvcnRlbkBrZGUub3JnKQot
ICogIENvcHlyaWdodCAoQykgMjAwOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiAgQ29weXJpZ2h0IChDKSAyMDA4LTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICoKICAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3Ry
aWJ1dGUgaXQgYW5kL29yCiAgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V
IExlc3NlciBHZW5lcmFsIFB1YmxpYwpAQCAtMzMsNiArMzMsMTIgQEAgY2xhc3MgTmF0aXZlRXJy
b3JDb25zdHJ1Y3RvciBmaW5hbCA6IHB1YgogcHVibGljOgogICAgIHR5cGVkZWYgSW50ZXJuYWxG
dW5jdGlvbiBCYXNlOwogCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGU+CisgICAgc3Rh
dGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCisgICAgeworICAgICAgICByZXR1
cm4gJnZtLm5hdGl2ZUVycm9yQ29uc3RydWN0b3JTcGFjZTsKKyAgICB9CisKICAgICBzdGF0aWMg
TmF0aXZlRXJyb3JDb25zdHJ1Y3RvciogY3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFN0cnVjdHVyZSogcHJvdG90eXBlU3Ry
dWN0dXJlLCBjb25zdCBTdHJpbmcmIG5hbWUpCiAgICAgewogICAgICAgICBOYXRpdmVFcnJvckNv
bnN0cnVjdG9yKiBjb25zdHJ1Y3RvciA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPE5hdGl2
ZUVycm9yQ29uc3RydWN0b3I+KHZtLmhlYXApKSBOYXRpdmVFcnJvckNvbnN0cnVjdG9yKHZtLCBz
dHJ1Y3R1cmUpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJveHlSZXZv
a2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm94eVJl
dm9rZS5oCShyZXZpc2lvbiAyMzA3MjMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Qcm94eVJldm9rZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw2ICszNiwxMiBAQCBwdWJsaWM6
CiAgICAgdHlwZWRlZiBJbnRlcm5hbEZ1bmN0aW9uIEJhc2U7CiAgICAgc3RhdGljIGNvbnN0IHVu
c2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3M7CiAKKyAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBDZWxsVHlwZT4KKyAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNl
Rm9yKFZNJiB2bSkKKyAgICB7CisgICAgICAgIHJldHVybiAmdm0ucHJveHlSZXZva2VTcGFjZTsK
KyAgICB9CisKICAgICBzdGF0aWMgUHJveHlSZXZva2UqIGNyZWF0ZShWTSYsIFN0cnVjdHVyZSos
IFByb3h5T2JqZWN0Kik7CiAKICAgICBERUNMQVJFX0lORk87CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9SZWdFeHBDb25zdHJ1Y3Rvci5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cENvbnN0cnVjdG9yLmgJKHJldmlzaW9uIDIz
MDcyMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cENvbnN0cnVjdG9y
LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw2IEBACiAvKgogICogIENvcHlyaWdodCAoQykg
MTk5OS0yMDAwIEhhcnJpIFBvcnRlbiAocG9ydGVuQGtkZS5vcmcpCi0gKiAgQ29weXJpZ2h0IChD
KSAyMDAzLCAyMDA3LTIwMDgsIDIwMTYgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgor
ICogIENvcHlyaWdodCAoQykgMjAwMy0yMDE4IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZl
ZC4KICAqCiAgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0
cmlidXRlIGl0IGFuZC9vcgogICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO
VSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKQEAgLTM1LDYgKzM1LDEyIEBAIHB1YmxpYzoKICAgICB0
eXBlZGVmIEludGVybmFsRnVuY3Rpb24gQmFzZTsKICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQg
U3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IEhhc1N0YXRpY1Byb3BlcnR5
VGFibGU7CiAKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZT4KKyAgICBzdGF0aWMgSXNv
U3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKKyAgICB7CisgICAgICAgIHJldHVybiAmdm0u
cmVnRXhwQ29uc3RydWN0b3JTcGFjZTsKKyAgICB9CisKICAgICBzdGF0aWMgUmVnRXhwQ29uc3Ry
dWN0b3IqIGNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBSZWdFeHBQcm90b3R5
cGUqIHJlZ0V4cFByb3RvdHlwZSwgR2V0dGVyU2V0dGVyKiBzcGVjaWVzKQogICAgIHsKICAgICAg
ICAgUmVnRXhwQ29uc3RydWN0b3IqIGNvbnN0cnVjdG9yID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0
ZUNlbGw8UmVnRXhwQ29uc3RydWN0b3I+KHZtLmhlYXApKSBSZWdFeHBDb25zdHJ1Y3Rvcih2bSwg
c3RydWN0dXJlLCByZWdFeHBQcm90b3R5cGUpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvVk0uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1ZNLmNwcAkocmV2aXNpb24gMjMwNzIzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvVk0uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MSw2ICs0MSw4IEBACiAjaW5jbHVkZSAi
REZHV29ya2xpc3QuaCIKICNpbmNsdWRlICJEaXJlY3RFdmFsRXhlY3V0YWJsZS5oIgogI2luY2x1
ZGUgIkRpc2Fzc2VtYmxlci5oIgorI2luY2x1ZGUgIkVycm9yLmgiCisjaW5jbHVkZSAiRXJyb3JD
b25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUgIkVycm9ySW5zdGFuY2UuaCIKICNpbmNsdWRlICJFdmFs
Q29kZUJsb2NrLmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uLmgiCkBAIC02NCwxNCArNjYsMTkgQEAK
ICNpbmNsdWRlICJJbmZlcnJlZFR5cGVUYWJsZS5oIgogI2luY2x1ZGUgIkluZmVycmVkVmFsdWUu
aCIKICNpbmNsdWRlICJJbnRlcnByZXRlci5oIgorI2luY2x1ZGUgIkludGxDb2xsYXRvckNvbnN0
cnVjdG9yLmgiCisjaW5jbHVkZSAiSW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3IuaCIKKyNp
bmNsdWRlICJJbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJKSVRDb2Rl
LmgiCiAjaW5jbHVkZSAiSklUV29ya2xpc3QuaCIKICNpbmNsdWRlICJKU0FQSVZhbHVlV3JhcHBl
ci5oIgogI2luY2x1ZGUgIkpTQXJyYXkuaCIKKyNpbmNsdWRlICJKU0FycmF5QnVmZmVyQ29uc3Ry
dWN0b3IuaCIKICNpbmNsdWRlICJKU0FzeW5jRnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU0JpZ0lu
dC5oIgogI2luY2x1ZGUgIkpTQm91bmRGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMu
aCIKKyNpbmNsdWRlICJKU0NhbGxiYWNrRnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU0N1c3RvbUdl
dHRlclNldHRlckZ1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNEZXN0cnVjdGlibGVPYmplY3RIZWFw
Q2VsbFR5cGUuaCIKICNpbmNsdWRlICJKU0ZpeGVkQXJyYXkuaCIKQEAgLTEwMywxNiArMTEwLDIw
IEBACiAjaW5jbHVkZSAiTWluaW11bVJlc2VydmVkWm9uZVNpemUuaCIKICNpbmNsdWRlICJNb2R1
bGVQcm9ncmFtQ29kZUJsb2NrLmgiCiAjaW5jbHVkZSAiTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUu
aCIKKyNpbmNsdWRlICJOYXRpdmVFcnJvckNvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAiTmF0aXZl
RXhlY3V0YWJsZS5oIgogI2luY2x1ZGUgIk5hdGl2ZVN0ZEZ1bmN0aW9uQ2VsbC5oIgogI2luY2x1
ZGUgIk5vZGVzLmgiCisjaW5jbHVkZSAiT2JqQ0NhbGxiYWNrRnVuY3Rpb24uaCIKICNpbmNsdWRl
ICJQYXJzZXIuaCIKICNpbmNsdWRlICJQcm9maWxlckRhdGFiYXNlLmgiCiAjaW5jbHVkZSAiUHJv
Z3JhbUNvZGVCbG9jay5oIgogI2luY2x1ZGUgIlByb2dyYW1FeGVjdXRhYmxlLmgiCiAjaW5jbHVk
ZSAiUHJvbWlzZURlZmVycmVkVGltZXIuaCIKICNpbmNsdWRlICJQcm9wZXJ0eU1hcEhhc2hUYWJs
ZS5oIgorI2luY2x1ZGUgIlByb3h5UmV2b2tlLmgiCiAjaW5jbHVkZSAiUmVnRXhwQ2FjaGUuaCIK
KyNpbmNsdWRlICJSZWdFeHBDb25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUgIlJlZ0V4cE9iamVjdC5o
IgogI2luY2x1ZGUgIlJlZ2lzdGVyQXRPZmZzZXRMaXN0LmgiCiAjaW5jbHVkZSAiUnVudGltZVR5
cGUuaCIKQEAgLTI1NCwxMSArMjY1LDE0IEBAIFZNOjpWTShWTVR5cGUgdm1UeXBlLCBIZWFwVHlw
ZSBoZWFwVHlwZSkKICAgICAsIGRlc3RydWN0aWJsZU9iamVjdFNwYWNlKCJKU0Rlc3RydWN0aWJs
ZU9iamVjdCIsIGhlYXAsIGRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5nZXQoKSwgZmFz
dE1hbGxvY0FsbG9jYXRvci5nZXQoKSkKICAgICAsIGVhZ2VybHlTd2VwdERlc3RydWN0aWJsZU9i
amVjdFNwYWNlKCJFYWdlcmx5IFN3ZXB0IEpTRGVzdHJ1Y3RpYmxlT2JqZWN0IiwgaGVhcCwgZGVz
dHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmdldCgpLCBmYXN0TWFsbG9jQWxsb2NhdG9yLmdl
dCgpKQogICAgICwgc2VnbWVudGVkVmFyaWFibGVPYmplY3RTcGFjZSgiSlNTZWdtZW50ZWRWYXJp
YWJsZU9iamVjdFNwYWNlIiwgaGVhcCwgc2VnbWVudGVkVmFyaWFibGVPYmplY3RIZWFwQ2VsbFR5
cGUuZ2V0KCksIGZhc3RNYWxsb2NBbGxvY2F0b3IuZ2V0KCkpCisgICAgLCBhcnJheUJ1ZmZlckNv
bnN0cnVjdG9yU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoaGVhcCwgZGVzdHJ1Y3RpYmxlT2JqZWN0
SGVhcENlbGxUeXBlLmdldCgpLCBKU0FycmF5QnVmZmVyQ29uc3RydWN0b3IpCiAgICAgLCBhc3lu
Y0Z1bmN0aW9uU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoaGVhcCwgY2VsbEpTVmFsdWVPT0JIZWFw
Q2VsbFR5cGUuZ2V0KCksIEpTQXN5bmNGdW5jdGlvbikKICAgICAsIGFzeW5jR2VuZXJhdG9yRnVu
Y3Rpb25TcGFjZSBJU09fU1VCU1BBQ0VfSU5JVChoZWFwLCBjZWxsSlNWYWx1ZU9PQkhlYXBDZWxs
VHlwZS5nZXQoKSwgSlNBc3luY0dlbmVyYXRvckZ1bmN0aW9uKQogICAgICwgYm91bmRGdW5jdGlv
blNwYWNlIElTT19TVUJTUEFDRV9JTklUKGhlYXAsIGNlbGxKU1ZhbHVlT09CSGVhcENlbGxUeXBl
LmdldCgpLCBKU0JvdW5kRnVuY3Rpb24pCisgICAgLCBjYWxsYmFja0Z1bmN0aW9uU3BhY2UgSVNP
X1NVQlNQQUNFX0lOSVQoaGVhcCwgZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmdldCgp
LCBKU0NhbGxiYWNrRnVuY3Rpb24pCiAgICAgLCBjdXN0b21HZXR0ZXJTZXR0ZXJGdW5jdGlvblNw
YWNlIElTT19TVUJTUEFDRV9JTklUKGhlYXAsIGNlbGxKU1ZhbHVlT09CSGVhcENlbGxUeXBlLmdl
dCgpLCBKU0N1c3RvbUdldHRlclNldHRlckZ1bmN0aW9uKQogICAgICwgZGlyZWN0RXZhbEV4ZWN1
dGFibGVTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVChoZWFwLCBkZXN0cnVjdGlibGVDZWxsSGVhcENl
bGxUeXBlLmdldCgpLCBEaXJlY3RFdmFsRXhlY3V0YWJsZSkKKyAgICAsIGVycm9yQ29uc3RydWN0
b3JTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVChoZWFwLCBkZXN0cnVjdGlibGVPYmplY3RIZWFwQ2Vs
bFR5cGUuZ2V0KCksIEVycm9yQ29uc3RydWN0b3IpCiAgICAgLCBleGVjdXRhYmxlVG9Db2RlQmxv
Y2tFZGdlU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoaGVhcCwgY2VsbERhbmdlcm91c0JpdHNIZWFw
Q2VsbFR5cGUuZ2V0KCksIEV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2UpCiAgICAgLCBmdW5jdGlv
bkV4ZWN1dGFibGVTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVChoZWFwLCBkZXN0cnVjdGlibGVDZWxs
SGVhcENlbGxUeXBlLmdldCgpLCBGdW5jdGlvbkV4ZWN1dGFibGUpCiAgICAgLCBmdW5jdGlvblNw
YWNlIElTT19TVUJTUEFDRV9JTklUKGhlYXAsIGNlbGxKU1ZhbHVlT09CSGVhcENlbGxUeXBlLmdl
dCgpLCBKU0Z1bmN0aW9uKQpAQCAtMjY2LDExICsyODAsMjQgQEAgVk06OlZNKFZNVHlwZSB2bVR5
cGUsIEhlYXBUeXBlIGhlYXBUeXBlKQogICAgICwgaW5kaXJlY3RFdmFsRXhlY3V0YWJsZVNwYWNl
IElTT19TVUJTUEFDRV9JTklUKGhlYXAsIGRlc3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUuZ2V0
KCksIEluZGlyZWN0RXZhbEV4ZWN1dGFibGUpCiAgICAgLCBpbmZlcnJlZFR5cGVTcGFjZSBJU09f
U1VCU1BBQ0VfSU5JVChoZWFwLCBkZXN0cnVjdGlibGVDZWxsSGVhcENlbGxUeXBlLmdldCgpLCBJ
bmZlcnJlZFR5cGUpCiAgICAgLCBpbmZlcnJlZFZhbHVlU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQo
aGVhcCwgZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgSW5mZXJyZWRWYWx1ZSkK
KyAgICAsIGludGVybmFsRnVuY3Rpb25TcGFjZSBJU09fU1VCU1BBQ0VfSU5JVChoZWFwLCBkZXN0
cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuZ2V0KCksIEludGVybmFsRnVuY3Rpb24pCisjaWYg
RU5BQkxFKElOVEwpCisgICAgLCBpbnRsQ29sbGF0b3JDb25zdHJ1Y3RvclNwYWNlIElTT19TVUJT
UEFDRV9JTklUKGhlYXAsIGRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5nZXQoKSwgSW50
bENvbGxhdG9yQ29uc3RydWN0b3IpCisgICAgLCBpbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rv
clNwYWNlIElTT19TVUJTUEFDRV9JTklUKGhlYXAsIGRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxs
VHlwZS5nZXQoKSwgSW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3IpCisgICAgLCBpbnRsTnVt
YmVyRm9ybWF0Q29uc3RydWN0b3JTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVChoZWFwLCBkZXN0cnVj
dGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuZ2V0KCksIEludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rv
cikKKyNlbmRpZgogICAgICwgbW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGVTcGFjZSBJU09fU1VCU1BB
Q0VfSU5JVChoZWFwLCBkZXN0cnVjdGlibGVDZWxsSGVhcENlbGxUeXBlLmdldCgpLCBNb2R1bGVQ
cm9ncmFtRXhlY3V0YWJsZSkKKyAgICAsIG5hdGl2ZUVycm9yQ29uc3RydWN0b3JTcGFjZSBJU09f
U1VCU1BBQ0VfSU5JVChoZWFwLCBkZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuZ2V0KCks
IE5hdGl2ZUVycm9yQ29uc3RydWN0b3IpCiAgICAgLCBuYXRpdmVFeGVjdXRhYmxlU3BhY2UgSVNP
X1NVQlNQQUNFX0lOSVQoaGVhcCwgZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwg
TmF0aXZlRXhlY3V0YWJsZSkKICAgICAsIG5hdGl2ZVN0ZEZ1bmN0aW9uU3BhY2UgSVNPX1NVQlNQ
QUNFX0lOSVQoaGVhcCwgY2VsbEpTVmFsdWVPT0JIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTTmF0aXZl
U3RkRnVuY3Rpb24pCisjaWYgSlNDX09CSkNfQVBJX0VOQUJMRUQKKyAgICAsIG9iakNDYWxsYmFj
a0Z1bmN0aW9uU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoaGVhcCwgZGVzdHJ1Y3RpYmxlT2JqZWN0
SGVhcENlbGxUeXBlLmdldCgpLCBPYmpDQ2FsbGJhY2tGdW5jdGlvbikKKyNlbmRpZgogICAgICwg
cHJvZ3JhbUV4ZWN1dGFibGVTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVChoZWFwLCBkZXN0cnVjdGli
bGVDZWxsSGVhcENlbGxUeXBlLmdldCgpLCBQcm9ncmFtRXhlY3V0YWJsZSkKICAgICAsIHByb3Bl
cnR5VGFibGVTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVChoZWFwLCBkZXN0cnVjdGlibGVDZWxsSGVh
cENlbGxUeXBlLmdldCgpLCBQcm9wZXJ0eVRhYmxlKQorICAgICwgcHJveHlSZXZva2VTcGFjZSBJ
U09fU1VCU1BBQ0VfSU5JVChoZWFwLCBkZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuZ2V0
KCksIFByb3h5UmV2b2tlKQorICAgICwgcmVnRXhwQ29uc3RydWN0b3JTcGFjZSBJU09fU1VCU1BB
Q0VfSU5JVChoZWFwLCBkZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuZ2V0KCksIFJlZ0V4
cENvbnN0cnVjdG9yKQorICAgICwgc3RyaWN0TW9kZVR5cGVFcnJvckZ1bmN0aW9uU3BhY2UgSVNP
X1NVQlNQQUNFX0lOSVQoaGVhcCwgZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmdldCgp
LCBTdHJpY3RNb2RlVHlwZUVycm9yRnVuY3Rpb24pCiAgICAgLCBzdHJ1Y3R1cmVSYXJlRGF0YVNw
YWNlIElTT19TVUJTUEFDRV9JTklUKGhlYXAsIGRlc3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUu
Z2V0KCksIFN0cnVjdHVyZVJhcmVEYXRhKQogICAgICwgc3RydWN0dXJlU3BhY2UgSVNPX1NVQlNQ
QUNFX0lOSVQoaGVhcCwgZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgU3RydWN0
dXJlKQogICAgICwgd2Vha1NldFNwYWNlIElTT19TVUJTUEFDRV9JTklUKGhlYXAsIGRlc3RydWN0
aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNXZWFrU2V0KQpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9WTS5oCShyZXZpc2lvbiAyMzA3MjMpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9WTS5oCSh3b3JraW5nIGNvcHkpCkBAIC04MCw2ICs4MCwxNiBAQAogI2lu
Y2x1ZGUgPHd0Zi9TdGFja1RyYWNlLmg+CiAjZW5kaWYKIAorLy8gRW5hYmxlIHRoZSBPYmplY3Rp
dmUtQyBBUEkgZm9yIHBsYXRmb3JtcyB3aXRoIGEgbW9kZXJuIHJ1bnRpbWUuIFRoaXMgaGFzIHRv
IG1hdGNoIGV4YWN0bHkgd2hhdCB3ZQorLy8gaGF2ZSBpbiBKU0Jhc2UuaC4KKyNpZiAhZGVmaW5l
ZChKU0NfT0JKQ19BUElfRU5BQkxFRCkKKyNpZiAoZGVmaW5lZChfX2NsYW5nX18pICYmIGRlZmlu
ZWQoX19BUFBMRV9fKSAmJiAoKGRlZmluZWQoX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJF
RCkgJiYgIWRlZmluZWQoX19pMzg2X18pKSB8fCAoZGVmaW5lZChUQVJHRVRfT1NfSVBIT05FKSAm
JiBUQVJHRVRfT1NfSVBIT05FKSkpCisjZGVmaW5lIEpTQ19PQkpDX0FQSV9FTkFCTEVEIDEKKyNl
bHNlCisjZGVmaW5lIEpTQ19PQkpDX0FQSV9FTkFCTEVEIDAKKyNlbmRpZgorI2VuZGlmCisKIG5h
bWVzcGFjZSBXVEYgewogY2xhc3MgU2ltcGxlU3RhdHM7CiB9IC8vIG5hbWVzcGFjZSBXVEYKQEAg
LTMzNywxMSArMzQ3LDE0IEBAIHB1YmxpYzoKICAgICBDb21wbGV0ZVN1YnNwYWNlIGVhZ2VybHlT
d2VwdERlc3RydWN0aWJsZU9iamVjdFNwYWNlOwogICAgIENvbXBsZXRlU3Vic3BhY2Ugc2VnbWVu
dGVkVmFyaWFibGVPYmplY3RTcGFjZTsKICAgICAKKyAgICBJc29TdWJzcGFjZSBhcnJheUJ1ZmZl
ckNvbnN0cnVjdG9yU3BhY2U7CiAgICAgSXNvU3Vic3BhY2UgYXN5bmNGdW5jdGlvblNwYWNlOwog
ICAgIElzb1N1YnNwYWNlIGFzeW5jR2VuZXJhdG9yRnVuY3Rpb25TcGFjZTsKICAgICBJc29TdWJz
cGFjZSBib3VuZEZ1bmN0aW9uU3BhY2U7CisgICAgSXNvU3Vic3BhY2UgY2FsbGJhY2tGdW5jdGlv
blNwYWNlOwogICAgIElzb1N1YnNwYWNlIGN1c3RvbUdldHRlclNldHRlckZ1bmN0aW9uU3BhY2U7
CiAgICAgSXNvU3Vic3BhY2UgZGlyZWN0RXZhbEV4ZWN1dGFibGVTcGFjZTsKKyAgICBJc29TdWJz
cGFjZSBlcnJvckNvbnN0cnVjdG9yU3BhY2U7CiAgICAgSXNvU3Vic3BhY2UgZXhlY3V0YWJsZVRv
Q29kZUJsb2NrRWRnZVNwYWNlOwogICAgIElzb1N1YnNwYWNlIGZ1bmN0aW9uRXhlY3V0YWJsZVNw
YWNlOwogICAgIElzb1N1YnNwYWNlIGZ1bmN0aW9uU3BhY2U7CkBAIC0zNDksMTEgKzM2MiwyNCBA
QCBwdWJsaWM6CiAgICAgSXNvU3Vic3BhY2UgaW5kaXJlY3RFdmFsRXhlY3V0YWJsZVNwYWNlOwog
ICAgIElzb1N1YnNwYWNlIGluZmVycmVkVHlwZVNwYWNlOwogICAgIElzb1N1YnNwYWNlIGluZmVy
cmVkVmFsdWVTcGFjZTsKKyAgICBJc29TdWJzcGFjZSBpbnRlcm5hbEZ1bmN0aW9uU3BhY2U7Cisj
aWYgRU5BQkxFKElOVEwpCisgICAgSXNvU3Vic3BhY2UgaW50bENvbGxhdG9yQ29uc3RydWN0b3JT
cGFjZTsKKyAgICBJc29TdWJzcGFjZSBpbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3RvclNwYWNl
OworICAgIElzb1N1YnNwYWNlIGludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3RvclNwYWNlOworI2Vu
ZGlmCiAgICAgSXNvU3Vic3BhY2UgbW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGVTcGFjZTsKKyAgICBJ
c29TdWJzcGFjZSBuYXRpdmVFcnJvckNvbnN0cnVjdG9yU3BhY2U7CiAgICAgSXNvU3Vic3BhY2Ug
bmF0aXZlRXhlY3V0YWJsZVNwYWNlOwogICAgIElzb1N1YnNwYWNlIG5hdGl2ZVN0ZEZ1bmN0aW9u
U3BhY2U7CisjaWYgSlNDX09CSkNfQVBJX0VOQUJMRUQKKyAgICBJc29TdWJzcGFjZSBvYmpDQ2Fs
bGJhY2tGdW5jdGlvblNwYWNlOworI2VuZGlmCiAgICAgSXNvU3Vic3BhY2UgcHJvZ3JhbUV4ZWN1
dGFibGVTcGFjZTsKICAgICBJc29TdWJzcGFjZSBwcm9wZXJ0eVRhYmxlU3BhY2U7CisgICAgSXNv
U3Vic3BhY2UgcHJveHlSZXZva2VTcGFjZTsKKyAgICBJc29TdWJzcGFjZSByZWdFeHBDb25zdHJ1
Y3RvclNwYWNlOworICAgIElzb1N1YnNwYWNlIHN0cmljdE1vZGVUeXBlRXJyb3JGdW5jdGlvblNw
YWNlOwogICAgIElzb1N1YnNwYWNlIHN0cnVjdHVyZVJhcmVEYXRhU3BhY2U7CiAgICAgSXNvU3Vi
c3BhY2Ugc3RydWN0dXJlU3BhY2U7CiAgICAgSXNvU3Vic3BhY2Ugd2Vha1NldFNwYWNlOwpJbmRl
eDogU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZwkocmV2aXNpb24gMjMwNzIzKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTgtMDQtMTcgIEZpbGlwIFBpemxv
ICA8ZnBpemxvQGFwcGxlLmNvbT4KKworICAgICAgICBUaGUgSW50ZXJuYWxGdW5jdGlvbiBoaWVy
YXJjaHkgc2hvdWxkIGJlIGluIElzb1N1YnNwYWNlcworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg0NzIxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIGJlY2F1c2Ugbm8gbmV3IGJlaGF2
aW9yLgorCisgICAgICAgICogYmluZGluZ3MvanMvV2ViQ29yZUpTQ2xpZW50RGF0YS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpKU1ZNQ2xpZW50RGF0YTo6SlNWTUNsaWVudERhdGEpOgorICAgICAg
ICAqIGJpbmRpbmdzL2pzL1dlYkNvcmVKU0NsaWVudERhdGEuaDoKKyAgICAgICAgKFdlYkNvcmU6
OkpTVk1DbGllbnREYXRhOjpydW50aW1lTWV0aG9kU3BhY2UpOgorICAgICAgICAqIGJyaWRnZS9y
dW50aW1lX21ldGhvZC5jcHA6CisgICAgICAgIChKU0M6OlJ1bnRpbWVNZXRob2Q6OnN1YnNwYWNl
Rm9ySW1wbCk6CisgICAgICAgICogYnJpZGdlL3J1bnRpbWVfbWV0aG9kLmg6CisKIDIwMTgtMDQt
MTcgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBSRUdSRVNTSU9O
IChyMjI5ODMxKTogQ01ELWNsaWNraW5nIGFuIGlDbG91ZCB3ZWIgYXBwIGxpbmsgdW5leHBlY3Rl
ZGx5IG9wZW5zIHRoYXQgbGluayBpbiBhIG5ldyB0YWIgYW5kIHRoZSBjdXJyZW50IHRhYgpJbmRl
eDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV2ViQ29yZUpTQ2xpZW50RGF0YS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV2ViQ29yZUpTQ2xpZW50RGF0
YS5jcHAJKHJldmlzaW9uIDIzMDcyMykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dl
YkNvcmVKU0NsaWVudERhdGEuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw2ICszNSw3IEBACiAj
aW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvTWFya2luZ0NvbnN0cmFpbnQuaD4KICNpbmNsdWRlIDxK
YXZhU2NyaXB0Q29yZS9TdWJzcGFjZUlubGluZXMuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29y
ZS9WTS5oPgorI2luY2x1ZGUgInJ1bnRpbWVfbWV0aG9kLmgiCiAjaW5jbHVkZSA8d3RmL01haW5U
aHJlYWQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNDMsNiArNDQsNyBAQCB1c2luZyBu
YW1lc3BhY2UgSlNDOwogSlNWTUNsaWVudERhdGE6OkpTVk1DbGllbnREYXRhKFZNJiB2bSkKICAg
ICA6IG1fYnVpbHRpbkZ1bmN0aW9ucyh2bSkKICAgICAsIG1fYnVpbHRpbk5hbWVzKCZ2bSkKKyAg
ICAsIG1fcnVudGltZU1ldGhvZFNwYWNlIElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRl
c3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5nZXQoKSwgUnVudGltZU1ldGhvZCkKICAgICAs
IG1fb3V0cHV0Q29uc3RyYWludFNwYWNlKCJXZWJDb3JlIFdyYXBwZXIgdy8gT3V0cHV0IENvbnN0
cmFpbnQiLCB2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuZ2V0KCks
IHZtLmZhc3RNYWxsb2NBbGxvY2F0b3IuZ2V0KCkpCiAgICAgLCBtX2dsb2JhbE9iamVjdE91dHB1
dENvbnN0cmFpbnRTcGFjZSgiV2ViQ29yZSBHbG9iYWwgT2JqZWN0IHcvIE91dHB1dCBDb25zdHJh
aW50Iiwgdm0uaGVhcCwgdm0uc2VnbWVudGVkVmFyaWFibGVPYmplY3RIZWFwQ2VsbFR5cGUuZ2V0
KCksIHZtLmZhc3RNYWxsb2NBbGxvY2F0b3IuZ2V0KCkpCiB7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9XZWJDb3JlSlNDbGllbnREYXRhLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvV2ViQ29yZUpTQ2xpZW50RGF0YS5oCShyZXZpc2lvbiAyMzA3
MjMpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9XZWJDb3JlSlNDbGllbnREYXRhLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTU5LDYgKzU5LDggQEAgcHVibGljOgogICAgIFdlYkNvcmVCdWls
dGluTmFtZXMmIGJ1aWx0aW5OYW1lcygpIHsgcmV0dXJuIG1fYnVpbHRpbk5hbWVzOyB9CiAgICAg
SlNCdWlsdGluRnVuY3Rpb25zJiBidWlsdGluRnVuY3Rpb25zKCkgeyByZXR1cm4gbV9idWlsdGlu
RnVuY3Rpb25zOyB9CiAgICAgCisgICAgSlNDOjpJc29TdWJzcGFjZSYgcnVudGltZU1ldGhvZFNw
YWNlKCkgeyByZXR1cm4gbV9ydW50aW1lTWV0aG9kU3BhY2U7IH0KKyAgICAKICAgICBKU0M6OkNv
bXBsZXRlU3Vic3BhY2UmIG91dHB1dENvbnN0cmFpbnRTcGFjZSgpIHsgcmV0dXJuIG1fb3V0cHV0
Q29uc3RyYWludFNwYWNlOyB9CiAgICAgSlNDOjpDb21wbGV0ZVN1YnNwYWNlJiBnbG9iYWxPYmpl
Y3RPdXRwdXRDb25zdHJhaW50U3BhY2UoKSB7IHJldHVybiBtX2dsb2JhbE9iamVjdE91dHB1dENv
bnN0cmFpbnRTcGFjZTsgfQogICAgIApAQCAtNzYsNiArNzgsOCBAQCBwcml2YXRlOgogICAgIEpT
QnVpbHRpbkZ1bmN0aW9ucyBtX2J1aWx0aW5GdW5jdGlvbnM7CiAgICAgV2ViQ29yZUJ1aWx0aW5O
YW1lcyBtX2J1aWx0aW5OYW1lczsKICAgICAKKyAgICBKU0M6Oklzb1N1YnNwYWNlIG1fcnVudGlt
ZU1ldGhvZFNwYWNlOworICAgIAogICAgIEpTQzo6Q29tcGxldGVTdWJzcGFjZSBtX291dHB1dENv
bnN0cmFpbnRTcGFjZTsKICAgICBKU0M6OkNvbXBsZXRlU3Vic3BhY2UgbV9nbG9iYWxPYmplY3RP
dXRwdXRDb25zdHJhaW50U3BhY2U7CiB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1
bnRpbWVfbWV0aG9kLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVu
dGltZV9tZXRob2QuY3BwCShyZXZpc2lvbiAyMzA3MjMpCisrKyBTb3VyY2UvV2ViQ29yZS9icmlk
Z2UvcnVudGltZV9tZXRob2QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoK
LSAqIENvcHlyaWdodCAoQykgMjAwMywgMjAwOCwgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDMtMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI5LDYgKzI5
LDcgQEAKICNpbmNsdWRlICJKU0RPTUJpbmRpbmcuaCIKICNpbmNsdWRlICJKU0hUTUxFbGVtZW50
LmgiCiAjaW5jbHVkZSAiSlNQbHVnaW5FbGVtZW50RnVuY3Rpb25zLmgiCisjaW5jbHVkZSAiV2Vi
Q29yZUpTQ2xpZW50RGF0YS5oIgogI2luY2x1ZGUgInJ1bnRpbWVfb2JqZWN0LmgiCiAjaW5jbHVk
ZSA8SmF2YVNjcmlwdENvcmUvRXJyb3IuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9GdW5j
dGlvblByb3RvdHlwZS5oPgpAQCAtNzksNiArODAsMTEgQEAgYm9vbCBSdW50aW1lTWV0aG9kOjpn
ZXRPd25Qcm9wZXJ0eVNsb3QoSgogICAgIHJldHVybiBJbnRlcm5hbEZ1bmN0aW9uOjpnZXRPd25Q
cm9wZXJ0eVNsb3QodGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCBzbG90KTsKIH0KIAor
SXNvU3Vic3BhY2UqIFJ1bnRpbWVNZXRob2Q6OnN1YnNwYWNlRm9ySW1wbChWTSYgdm0pCit7Cisg
ICAgcmV0dXJuICZzdGF0aWNfY2FzdDxKU1ZNQ2xpZW50RGF0YSo+KHZtLmNsaWVudERhdGEpLT5y
dW50aW1lTWV0aG9kU3BhY2UoKTsKK30KKwogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgY2FsbFJ1bnRpbWVNZXRob2QoRXhlY1N0YXRlKiBleGVjKQogewogICAgIFZNJiB2bSA9
IGV4ZWMtPnZtKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9tZXRob2Qu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9tZXRob2QuaAko
cmV2aXNpb24gMjMwNzIzKQorKysgU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfbWV0aG9k
LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAy
MDAzLCAyMDA4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAwMy0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzcsNiArMzcsMTMgQEAgcHVibGljOgogICAgIHR5cGVk
ZWYgSW50ZXJuYWxGdW5jdGlvbiBCYXNlOwogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1
Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgT3ZlcnJpZGVzR2V0T3duUHJvcGVy
dHlTbG90IHwgVHlwZU9mU2hvdWxkQ2FsbEdldENhbGxEYXRhOwogCisgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgQ2VsbFR5cGU+CisgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYg
dm0pCisgICAgeworICAgICAgICBzdGF0aWNfYXNzZXJ0KHNpemVvZihDZWxsVHlwZSkgPT0gc2l6
ZW9mKFJ1bnRpbWVNZXRob2QpLCAiUnVudGltZU1ldGhvZCBzdWJjbGFzc2VzIHRoYXQgYWRkIGZp
ZWxkcyBuZWVkIHRvIG92ZXJyaWRlIHN1YnNwYWNlRm9yPD4oKSIpOworICAgICAgICByZXR1cm4g
c3Vic3BhY2VGb3JJbXBsKHZtKTsKKyAgICB9CisgICAgCiAgICAgc3RhdGljIFJ1bnRpbWVNZXRo
b2QqIGNyZWF0ZShFeGVjU3RhdGUqLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSwgY29uc3QgU3RyaW5nJiBuYW1lLCBCaW5kaW5nczo6TWV0aG9kKiBt
ZXRob2QpCiAgICAgewogICAgICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CkBAIC02
OCw2ICs3NSw4IEBAIHByb3RlY3RlZDoKIHByaXZhdGU6CiAgICAgc3RhdGljIEVuY29kZWRKU1Zh
bHVlIGxlbmd0aEdldHRlcihFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSwgUHJvcGVydHlOYW1l
KTsKIAorICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3JJbXBsKFZNJik7CisKICAg
ICBCaW5kaW5nczo6TWV0aG9kKiBtX21ldGhvZDsKIH07CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQv
Q2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCShyZXZpc2lv
biAyMzA3MjMpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAt
MSwzICsxLDIzIEBACisyMDE4LTA0LTE3ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+
CisKKyAgICAgICAgVGhlIEludGVybmFsRnVuY3Rpb24gaGllcmFyY2h5IHNob3VsZCBiZSBpbiBJ
c29TdWJzcGFjZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE4NDcyMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL0pTTlBNZXRob2QuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpKU05QTWV0aG9kOjpzdWJzcGFjZUZvckltcGwpOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9KU05QTWV0aG9kLmg6CisgICAgICAgIChXZWJLaXQ6OkpT
TlBNZXRob2Q6OmNyZWF0ZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OkpTTlBNZXRob2Q6
Om5wSWRlbnRpZmllciBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OkpTTlBNZXRo
b2Q6OmNyZWF0ZVN0cnVjdHVyZSk6IERlbGV0ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVn
aW5zL05ldHNjYXBlL0pTTlBPYmplY3QuY3BwOgorICAgICAgICAoV2ViS2l0OjpKU05QT2JqZWN0
OjpzdWJzcGFjZUZvckltcGwpOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2Fw
ZS9KU05QT2JqZWN0Lmg6CisgICAgICAgIChXZWJLaXQ6OkpTTlBPYmplY3Q6OmNyZWF0ZSk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OkpTTlBPYmplY3Q6Om5wT2JqZWN0IGNvbnN0KTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYktpdDo6SlNOUE9iamVjdDo6Y3JlYXRlU3RydWN0dXJlKTogRGVs
ZXRlZC4KKwogMjAxOC0wNC0xNyAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAg
ICAgICAgIFJFR1JFU1NJT04gKHIyMjk4MzEpOiBDTUQtY2xpY2tpbmcgYW4gaUNsb3VkIHdlYiBh
cHAgbGluayB1bmV4cGVjdGVkbHkgb3BlbnMgdGhhdCBsaW5rIGluIGEgbmV3IHRhYiBhbmQgdGhl
IGN1cnJlbnQgdGFiCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRz
Y2FwZS9KU05QTWV0aG9kLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvUGx1Z2lucy9OZXRzY2FwZS9KU05QTWV0aG9kLmNwcAkocmV2aXNpb24gMjMwNzIzKQorKysg
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvSlNOUE1ldGhvZC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEw
LCAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAxMC0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwpAQCAtMzEsNiArMzEsOCBAQAogI2luY2x1ZGUgIkpTTlBPYmplY3Qu
aCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9FcnJvci5oPgogI2luY2x1ZGUgPEphdmFTY3Jp
cHRDb3JlL0Z1bmN0aW9uUHJvdG90eXBlLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSXNv
U3Vic3BhY2VQZXJWTS5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTRGVzdHJ1Y3RpYmxl
T2JqZWN0SGVhcENlbGxUeXBlLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNHbG9iYWxP
YmplY3QuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU09iamVjdC5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvSlNIVE1MRWxlbWVudC5oPgpAQCAtNTksNiArNjEsMTIgQEAgdm9pZCBKU05QTWV0
aG9kOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIAogICAgIEFTU0VSVChpbmhlcml0cyh2bSwgaW5m
bygpKSk7CiB9CiAKK0lzb1N1YnNwYWNlKiBKU05QTWV0aG9kOjpzdWJzcGFjZUZvckltcGwoVk0m
IHZtKQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxJc29TdWJzcGFjZVBlclZNPiBwZXJW
TShbXSAoVk0mIHZtKSB7IHJldHVybiBJU09fU1VCU1BBQ0VfUEFSQU1FVEVSUyh2bS5kZXN0cnVj
dGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTTlBNZXRob2QpOyB9KTsKKyAgICByZXR1
cm4gJnBlclZNLmdldCgpLmZvclZNKHZtKTsKK30KKwogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgY2FsbE1ldGhvZChFeGVjU3RhdGUqIGV4ZWMpCiB7CiAgICAgVk0mIHZtID0g
ZXhlYy0+dm0oKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNj
YXBlL0pTTlBNZXRob2QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
UGx1Z2lucy9OZXRzY2FwZS9KU05QTWV0aG9kLmgJKHJldmlzaW9uIDIzMDcyMykKKysrIFNvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL0pTTlBNZXRob2QuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEwLTIwMTggQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCkBAIC0zNywxMCArMzcsMTYgQEAgdHlwZWRlZiB2b2lkKiBOUElkZW50aWZpZXI7CiBuYW1l
c3BhY2UgV2ViS2l0IHsKIAogLy8gQSBKU09iamVjdCB0aGF0IHdyYXBzIGFuIE5QTWV0aG9kLgot
Y2xhc3MgSlNOUE1ldGhvZCA6IHB1YmxpYyBKU0M6OkludGVybmFsRnVuY3Rpb24geworY2xhc3Mg
SlNOUE1ldGhvZCBmaW5hbCA6IHB1YmxpYyBKU0M6OkludGVybmFsRnVuY3Rpb24gewogcHVibGlj
OgogICAgIHR5cGVkZWYgSlNDOjpJbnRlcm5hbEZ1bmN0aW9uIEJhc2U7CiAKKyAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBDZWxsVHlwZT4KKyAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3Bh
Y2VGb3IoSlNDOjpWTSYgdm0pCisgICAgeworICAgICAgICByZXR1cm4gc3Vic3BhY2VGb3JJbXBs
KHZtKTsKKyAgICB9CisKICAgICBzdGF0aWMgSlNOUE1ldGhvZCogY3JlYXRlKEpTQzo6RXhlY1N0
YXRlKiBleGVjLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IFN0cmlu
ZyYgbmFtZSwgTlBJZGVudGlmaWVyIG5wSWRlbnQpCiAgICAgewogICAgICAgICBKU0M6OlZNJiB2
bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKQEAgLTU3LDcgKzYzLDkgQEAgcHVibGljOgogcHJvdGVj
dGVkOgogICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oSlNDOjpWTSYsIGNvbnN0IFN0cmluZyYgbmFt
ZSk7CiAKLXByaXZhdGU6ICAgIAorcHJpdmF0ZToKKyAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFj
ZSogc3Vic3BhY2VGb3JJbXBsKEpTQzo6Vk0mKTsKKyAgICAKICAgICBKU05QTWV0aG9kKEpTQzo6
SlNHbG9iYWxPYmplY3QqLCBKU0M6OlN0cnVjdHVyZSosIE5QSWRlbnRpZmllcik7CiAKICAgICBz
dGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQpJbmRl
eDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvSlNOUE9iamVjdC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2Nh
cGUvSlNOUE9iamVjdC5jcHAJKHJldmlzaW9uIDIzMDcyMykKKysrIFNvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL0pTTlBPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCwgMjAxNiBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAxOCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
QEAgLTM1LDYgKzM1LDggQEAKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9BdXhpbGlhcnlCYXJy
aWVySW5saW5lcy5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Vycm9yLmg+CiAjaW5jbHVk
ZSA8SmF2YVNjcmlwdENvcmUvSWRlbnRpZmllcklubGluZXMuaD4KKyNpbmNsdWRlIDxKYXZhU2Ny
aXB0Q29yZS9Jc29TdWJzcGFjZVBlclZNLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNE
ZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29y
ZS9KU0dsb2JhbE9iamVjdC5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTTG9jay5oPgog
I2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL09iamVjdFByb3RvdHlwZS5oPgpAQCAtNTI3LDYgKzUy
OSwxMiBAQCBKU09iamVjdCogSlNOUE9iamVjdDo6dGhyb3dJbnZhbGlkQWNjZXNzCiAgICAgcmV0
dXJuIHRocm93RXhjZXB0aW9uKGV4ZWMsIHNjb3BlLCBjcmVhdGVSZWZlcmVuY2VFcnJvcihleGVj
LCAiVHJ5aW5nIHRvIGFjY2VzcyBvYmplY3QgZnJvbSBkZXN0cm95ZWQgcGx1Zy1pbi4iKSk7CiB9
CiAKK0lzb1N1YnNwYWNlKiBKU05QT2JqZWN0OjpzdWJzcGFjZUZvckltcGwoVk0mIHZtKQorewor
ICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxJc29TdWJzcGFjZVBlclZNPiBwZXJWTShbXSAoVk0m
IHZtKSB7IHJldHVybiBJU09fU1VCU1BBQ0VfUEFSQU1FVEVSUyh2bS5kZXN0cnVjdGlibGVPYmpl
Y3RIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTTlBPYmplY3QpOyB9KTsKKyAgICByZXR1cm4gJnBlclZN
LmdldCgpLmZvclZNKHZtKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICNlbmRpZiAv
LyBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9QbHVnaW5zL05ldHNjYXBlL0pTTlBPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9KU05QT2JqZWN0LmgJKHJldmlzaW9u
IDIzMDcyMykKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL0pT
TlBPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDEwLTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00MSwxMSArNDEsMTcgQEAgY2xhc3MgTlBSdW50aW1l
T2JqZWN0TWFwOwogICAgIAogLy8gSlNOUE9iamVjdCBpcyBhIEpTT2JqZWN0IHRoYXQgd3JhcHMg
YW4gTlBPYmplY3QuCiAKLWNsYXNzIEpTTlBPYmplY3QgOiBwdWJsaWMgSlNDOjpKU0Rlc3RydWN0
aWJsZU9iamVjdCB7CitjbGFzcyBKU05QT2JqZWN0IGZpbmFsIDogcHVibGljIEpTQzo6SlNEZXN0
cnVjdGlibGVPYmplY3QgewogcHVibGljOgogICAgIHR5cGVkZWYgSlNDOjpKU0Rlc3RydWN0aWJs
ZU9iamVjdCBCYXNlOwogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9
IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgSlNDOjpPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3Qg
fCBKU0M6Ok92ZXJyaWRlc0dldFByb3BlcnR5TmFtZXMgfCBKU0M6OlR5cGVPZlNob3VsZENhbGxH
ZXRDYWxsRGF0YTsKIAorICAgIHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlPgorICAgIHN0YXRp
YyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKKyAgICB7CisgICAg
ICAgIHJldHVybiBzdWJzcGFjZUZvckltcGwodm0pOworICAgIH0KKwogICAgIHN0YXRpYyBKU05Q
T2JqZWN0KiBjcmVhdGUoSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBOUFJ1bnRp
bWVPYmplY3RNYXAqIG9iamVjdE1hcCwgTlBPYmplY3QqIG5wT2JqZWN0KQogICAgIHsKICAgICAg
ICAgSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGNyZWF0ZVN0cnVjdHVyZShnbG9iYWxPYmpl
Y3QtPnZtKCksIGdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LT5vYmplY3RQcm90b3R5cGUoKSk7
CkBAIC03NCw2ICs4MCw4IEBAIHByb3RlY3RlZDoKICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKEpT
Qzo6SlNHbG9iYWxPYmplY3QqKTsKIAogcHJpdmF0ZToKKyAgICBzdGF0aWMgSlNDOjpJc29TdWJz
cGFjZSogc3Vic3BhY2VGb3JJbXBsKEpTQzo6Vk0mKTsKKyAgICAKICAgICBKU05QT2JqZWN0KEpT
Qzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OlN0cnVjdHVyZSosIE5QUnVudGltZU9iamVjdE1hcCos
IE5QT2JqZWN0Kik7CiAgICAgCiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1
Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlND
OjpKU1ZhbHVlIHByb3RvdHlwZSkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>338183</attachid>
            <date>2018-04-17 19:22:03 -0700</date>
            <delta_ts>2018-04-17 19:24:47 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>48561</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjMwNzQxKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ2IEBA
CisyMDE4LTA0LTE3ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
VGhlIEludGVybmFsRnVuY3Rpb24gaGllcmFyY2h5IHNob3VsZCBiZSBpbiBJc29TdWJzcGFjZXMK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4NDcyMQor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAgICAKKyAgICAgICAg
VGhpcyBtb3ZlcyBJbnRlcm5hbEZ1bmN0aW9uIGludG8gYSBJc29TdWJzcGFjZS4gSXQgYWxzbyBt
b3ZlcyBhbGwgc3ViY2xhc3NlcyBpbnRvIElzb1N1YnNwYWNlcywKKyAgICAgICAgYnV0IHN1YmNs
YXNzZXMgdGhhdCBhcmUgdGhlIHNhbWUgc2l6ZSBhcyBJbnRlcm5hbEZ1bmN0aW9uIHNoYXJlIGl0
cyBzdWJzcGFjZS4gSSBkaWQgdGhpcworICAgICAgICBiZWNhdXNlIHRoZSBzdWJjbGFzc2VzIGFw
cGVhciB0byBqdXN0IG92ZXJyaWRlIG1ldGhvZHMsIHdoaWNoIGFyZSBjYWxsZWQgZHluYW1pY2Fs
bHkgdmlhIHRoZQorICAgICAgICBzdHJ1Y3R1cmUgb3IgY2xhc3Mgb2YgdGhlIG9iamVjdC4gU28s
IEkgZG9uJ3Qgc2VlIGEgdHlwZSBjb25mdXNpb24gcmlzayBpZiBVQUYgaXMgdXNlZCB0bworICAg
ICAgICBhbGxvY2F0ZSBvbmUga2luZCBvZiBJbnRlcm5hbEZ1bmN0aW9uIG92ZXIgYW5vdGhlci4K
KworICAgICAgICAqIEFQSS9KU0Jhc2UuaDoKKyAgICAgICAgKiBBUEkvSlNDYWxsYmFja0Z1bmN0
aW9uLmg6CisgICAgICAgICogQVBJL09iakNDYWxsYmFja0Z1bmN0aW9uLmg6CisgICAgICAgIChK
U0M6Ok9iakNDYWxsYmFja0Z1bmN0aW9uOjpzdWJzcGFjZUZvcik6CisgICAgICAgICogQ01ha2VM
aXN0cy50eHQ6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvajoKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBoZWFwL0lzb1N1YnNwYWNl
UGVyVk0uY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6SXNvU3Vic3BhY2VQZXJWTTo6QXV0b3Jl
bW92aW5nSXNvU3Vic3BhY2U6OkF1dG9yZW1vdmluZ0lzb1N1YnNwYWNlKToKKyAgICAgICAgKEpT
Qzo6SXNvU3Vic3BhY2VQZXJWTTo6QXV0b3JlbW92aW5nSXNvU3Vic3BhY2U6On5BdXRvcmVtb3Zp
bmdJc29TdWJzcGFjZSk6CisgICAgICAgIChKU0M6Oklzb1N1YnNwYWNlUGVyVk06Oklzb1N1YnNw
YWNlUGVyVk0pOgorICAgICAgICAoSlNDOjpJc29TdWJzcGFjZVBlclZNOjp+SXNvU3Vic3BhY2VQ
ZXJWTSk6CisgICAgICAgIChKU0M6Oklzb1N1YnNwYWNlUGVyVk06OmZvclZNKToKKyAgICAgICAg
KiBoZWFwL0lzb1N1YnNwYWNlUGVyVk0uaDogQWRkZWQuCisgICAgICAgIChKU0M6Oklzb1N1YnNw
YWNlUGVyVk06OlN1YnNwYWNlUGFyYW1ldGVyczo6U3Vic3BhY2VQYXJhbWV0ZXJzKToKKyAgICAg
ICAgKiBydW50aW1lL0Vycm9yLmg6CisgICAgICAgICogcnVudGltZS9FcnJvckNvbnN0cnVjdG9y
Lmg6CisgICAgICAgICogcnVudGltZS9JbnRlcm5hbEZ1bmN0aW9uLmg6CisgICAgICAgIChKU0M6
OkludGVybmFsRnVuY3Rpb246OnN1YnNwYWNlRm9yKToKKyAgICAgICAgKiBydW50aW1lL0ludGxD
b2xsYXRvckNvbnN0cnVjdG9yLmg6CisgICAgICAgICogcnVudGltZS9JbnRsRGF0ZVRpbWVGb3Jt
YXRDb25zdHJ1Y3Rvci5oOgorICAgICAgICAqIHJ1bnRpbWUvSW50bE51bWJlckZvcm1hdENvbnN0
cnVjdG9yLmg6CisgICAgICAgICogcnVudGltZS9KU0FycmF5QnVmZmVyQ29uc3RydWN0b3IuaDoK
KyAgICAgICAgKiBydW50aW1lL05hdGl2ZUVycm9yQ29uc3RydWN0b3IuaDoKKyAgICAgICAgKiBy
dW50aW1lL1Byb3h5UmV2b2tlLmg6CisgICAgICAgICogcnVudGltZS9SZWdFeHBDb25zdHJ1Y3Rv
ci5oOgorICAgICAgICAqIHJ1bnRpbWUvVk0uY3BwOgorICAgICAgICAoSlNDOjpWTTo6Vk0pOgor
ICAgICAgICAqIHJ1bnRpbWUvVk0uaDoKKwogMjAxOC0wNC0xNyAgQ29tbWl0IFF1ZXVlICA8Y29t
bWl0LXF1ZXVlQHdlYmtpdC5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQg
cjIzMDY5NywgcjIzMDcyMCwgYW5kIHIyMzA3MjQuCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ01ha2VMaXN0cy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0NN
YWtlTGlzdHMudHh0CShyZXZpc2lvbiAyMzA3MjMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Q01ha2VMaXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTUzMSw2ICs1MzEsNyBAQCBzZXQoSmF2
YVNjcmlwdENvcmVfUFJJVkFURV9GUkFNRVdPUktfSEVBCiAgICAgaGVhcC9JbmNyZW1lbnRhbFN3
ZWVwZXIuaAogICAgIGhlYXAvSXNvQ2VsbFNldC5oCiAgICAgaGVhcC9Jc29TdWJzcGFjZS5oCisg
ICAgaGVhcC9Jc29TdWJzcGFjZVBlclZNLmgKICAgICBoZWFwL0xhcmdlQWxsb2NhdGlvbi5oCiAg
ICAgaGVhcC9MaXN0YWJsZUhhbmRsZXIuaAogICAgIGhlYXAvTG9jYWxBbGxvY2F0b3IuaApJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0Cj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dAkocmV2aXNpb24gMjMwNzIzKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC01MDIsNiArNTAy
LDcgQEAgaGVhcC9JbmNyZW1lbnRhbFN3ZWVwZXIuY3BwCiBoZWFwL0lzb0FsaWduZWRNZW1vcnlB
bGxvY2F0b3IuY3BwCiBoZWFwL0lzb0NlbGxTZXQuY3BwCiBoZWFwL0lzb1N1YnNwYWNlLmNwcAor
aGVhcC9Jc29TdWJzcGFjZVBlclZNLmNwcAogaGVhcC9KSVRTdHViUm91dGluZVNldC5jcHAKIGhl
YXAvTGFyZ2VBbGxvY2F0aW9uLmNwcAogaGVhcC9Mb2NhbEFsbG9jYXRvci5jcHAKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNCYXNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL0FQSS9KU0Jhc2UuaAkocmV2aXNpb24gMjMwNzIzKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL0FQSS9KU0Jhc2UuaAkod29ya2luZyBjb3B5KQpAQCAtMTQzLDcgKzE0Myw3
IEBAIEpTX0VYUE9SVCB2b2lkIEpTR2FyYmFnZUNvbGxlY3QoSlNDb250ZXgKIH0KICNlbmRpZgog
Ci0vKiBFbmFibGUgdGhlIE9iamVjdGl2ZS1DIEFQSSBmb3IgcGxhdGZvcm1zIHdpdGggYSBtb2Rl
cm4gcnVudGltZS4gKi8KKy8qIEVuYWJsZSB0aGUgT2JqZWN0aXZlLUMgQVBJIGZvciBwbGF0Zm9y
bXMgd2l0aCBhIG1vZGVybiBydW50aW1lLiBOT1RFOiBUaGlzIGlzIGR1cGxpY2F0ZWQgaW4gVk0u
aC4gKi8KICNpZiAhZGVmaW5lZChKU0NfT0JKQ19BUElfRU5BQkxFRCkKICNpZiAoZGVmaW5lZChf
X2NsYW5nX18pICYmIGRlZmluZWQoX19BUFBMRV9fKSAmJiAoKGRlZmluZWQoX19NQUNfT1NfWF9W
RVJTSU9OX01JTl9SRVFVSVJFRCkgJiYgIWRlZmluZWQoX19pMzg2X18pKSB8fCAoZGVmaW5lZChU
QVJHRVRfT1NfSVBIT05FKSAmJiBUQVJHRVRfT1NfSVBIT05FKSkpCiAjZGVmaW5lIEpTQ19PQkpD
X0FQSV9FTkFCTEVEIDEKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFj
a0Z1bmN0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0Nh
bGxiYWNrRnVuY3Rpb24uaAkocmV2aXNpb24gMjMwNzIzKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL0FQSS9KU0NhbGxiYWNrRnVuY3Rpb24uaAkod29ya2luZyBjb3B5KQpAQCAtMzcsNiArMzcs
MTIgQEAgY2xhc3MgSlNDYWxsYmFja0Z1bmN0aW9uIGZpbmFsIDogcHVibGljIAogcHVibGljOgog
ICAgIHR5cGVkZWYgSW50ZXJuYWxGdW5jdGlvbiBCYXNlOwogCisgICAgdGVtcGxhdGU8dHlwZW5h
bWUgQ2VsbFR5cGU+CisgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0p
CisgICAgeworICAgICAgICByZXR1cm4gJnZtLmNhbGxiYWNrRnVuY3Rpb25TcGFjZTsKKyAgICB9
CisKICAgICBzdGF0aWMgSlNDYWxsYmFja0Z1bmN0aW9uKiBjcmVhdGUoVk0mLCBKU0dsb2JhbE9i
amVjdCosIEpTT2JqZWN0Q2FsbEFzRnVuY3Rpb25DYWxsYmFjaywgY29uc3QgU3RyaW5nJiBuYW1l
KTsKIAogICAgIERFQ0xBUkVfSU5GTzsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkv
T2JqQ0NhbGxiYWNrRnVuY3Rpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvQVBJL09iakNDYWxsYmFja0Z1bmN0aW9uLmgJKHJldmlzaW9uIDIzMDcyMykKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9BUEkvT2JqQ0NhbGxiYWNrRnVuY3Rpb24uaAkod29ya2luZyBjb3B5
KQpAQCAtNDgsNiArNDgsMTIgQEAgY2xhc3MgT2JqQ0NhbGxiYWNrRnVuY3Rpb24gOiBwdWJsaWMg
SW50ZQogcHVibGljOgogICAgIHR5cGVkZWYgSW50ZXJuYWxGdW5jdGlvbiBCYXNlOwogCisgICAg
dGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGU+CisgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJz
cGFjZUZvcihWTSYgdm0pCisgICAgeworICAgICAgICByZXR1cm4gJnZtLm9iakNDYWxsYmFja0Z1
bmN0aW9uU3BhY2U7CisgICAgfQorCiAgICAgc3RhdGljIE9iakNDYWxsYmFja0Z1bmN0aW9uKiBj
cmVhdGUoVk0mLCBKU0dsb2JhbE9iamVjdCosIGNvbnN0IFN0cmluZyYgbmFtZSwgc3RkOjp1bmlx
dWVfcHRyPE9iakNDYWxsYmFja0Z1bmN0aW9uSW1wbD4pOwogICAgIHN0YXRpYyB2b2lkIGRlc3Ry
b3koSlNDZWxsKik7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvZ2xpYi9KU0ND
YWxsYmFja0Z1bmN0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
QVBJL2dsaWIvSlNDQ2FsbGJhY2tGdW5jdGlvbi5jcHAJKHJldmlzaW9uIDIzMDcyMykKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvZ2xpYi9KU0NDYWxsYmFja0Z1bmN0aW9uLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMSw2ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTggSWdh
bGlhIFMuTC4KLSAqIENvcHlyaWdodCAoQykgMjAwNiwgMjAwOCwgMjAxNiBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYtMjAxOCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAg
LTI5LDYgKzI5LDcgQEAKIAogI2luY2x1ZGUgIkFQSUNhbGxiYWNrRnVuY3Rpb24uaCIKICNpbmNs
dWRlICJBUElDYXN0LmgiCisjaW5jbHVkZSAiSXNvU3Vic3BhY2VQZXJWTS5oIgogI2luY2x1ZGUg
IkpTQ0NsYXNzUHJpdmF0ZS5oIgogI2luY2x1ZGUgIkpTQ0NvbnRleHRQcml2YXRlLmgiCiAjaW5j
bHVkZSAiSlNDRXhjZXB0aW9uUHJpdmF0ZS5oIgpAQCAtMjA2LDQgKzIwNywxMCBAQCB2b2lkIEpT
Q0NhbGxiYWNrRnVuY3Rpb246OmRlc3Ryb3koSlNDZWxsCiAgICAgc3RhdGljX2Nhc3Q8SlNDQ2Fs
bGJhY2tGdW5jdGlvbio+KGNlbGwpLT5KU0NDYWxsYmFja0Z1bmN0aW9uOjp+SlNDQ2FsbGJhY2tG
dW5jdGlvbigpOwogfQogCitJc29TdWJzcGFjZSogSlNDQ2FsbGJhY2tGdW5jdGlvbjo6c3Vic3Bh
Y2VGb3JJbXBsKFZNJiB2bSkKK3sKKyAgICBOZXZlckRlc3Ryb3llZDxJc29TdWJzcGFjZVBlclZN
PiBwZXJWTShbXSAoVk0mIHZtKSAtPiBJc29TdWJzcGFjZVBlclZNOjpTdWJzcGFjZVBhcmFtZXRl
cnMgeyByZXR1cm4gSVNPX1NVQlNQQUNFX1BBUkFNRVRFUlModm0uZGVzdHJ1Y3RpYmVPYmplY3RI
ZWFwQ2VsbFR5cGUuZ2V0KCksIEpTQ0NhbGxiYWNrRnVuY3Rpb24pOyB9KTsKKyAgICByZXR1cm4g
cGVyVk0uZ2V0KCkuZm9yVk0odm0pOworfQorCiB9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvZ2xpYi9KU0NDYWxsYmFja0Z1bmN0aW9uLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9nbGliL0pTQ0NhbGxiYWNrRnVuY3Rp
b24uaAkocmV2aXNpb24gMjMwNzIzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9nbGli
L0pTQ0NhbGxiYWNrRnVuY3Rpb24uaAkod29ya2luZyBjb3B5KQpAQCAtNDAsNiArNDAsMTIgQEAg
Y2xhc3MgSlNDQ2FsbGJhY2tGdW5jdGlvbiA6IHB1YmxpYyBJbnRlcgogcHVibGljOgogICAgIHR5
cGVkZWYgSW50ZXJuYWxGdW5jdGlvbiBCYXNlOwogCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2Vs
bFR5cGU+CisgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCisgICAg
eworICAgICAgICByZXR1cm4gc3Vic3BhY2VGb3JJbXBsKHZtKTsKKyAgICB9CisKICAgICBlbnVt
IGNsYXNzIFR5cGUgewogICAgICAgICBGdW5jdGlvbiwKICAgICAgICAgTWV0aG9kLApAQCAtNjEs
NiArNjcsOCBAQCBwdWJsaWM6CiAgICAgSlNPYmplY3RSZWYgY29uc3RydWN0KEpTQ29udGV4dFJl
Ziwgc2l6ZV90IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10sIEpT
VmFsdWVSZWYqIGV4Y2VwdGlvbik7CiAKIHByaXZhdGU6CisgICAgc3RhdGljIElzb1N1YnNwYWNl
KiBzdWJzcGFjZUZvckltcGwoVk0mKTsKKyAgICAKICAgICBKU0NDYWxsYmFja0Z1bmN0aW9uKFZN
JiwgU3RydWN0dXJlKiwgVHlwZSwgSlNDQ2xhc3MqLCBHUmVmUHRyPEdDbG9zdXJlPiYmLCBHVHlw
ZSwgVmVjdG9yPEdUeXBlPiYmKTsKIAogICAgIEpTT2JqZWN0Q2FsbEFzRnVuY3Rpb25DYWxsYmFj
ayBmdW5jdGlvbkNhbGxiYWNrKCkgeyByZXR1cm4gbV9mdW5jdGlvbkNhbGxiYWNrOyB9CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjMwNzIzKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJ
KHdvcmtpbmcgY29weSkKQEAgLTM0Myw2ICszNDMsNyBAQAogCQkwRjVDRjk4NDFFOUQ1Mzc3MDBD
MTg2OTIgLyogQWlyTG93ZXJTdGFja0FyZ3MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDBGNUNGOTgzMUU5RDUzNzUwMEMxODY5MiAvKiBBaXJMb3dlclN0
YWNrQXJncy5oICovOyB9OwogCQkwRjVDRjk4OTFFOUVENjUyMDBDMTg2OTIgLyogQWlyU3RhY2tB
bGxvY2F0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAwRjVDRjk4NzFFOUVENjRFMDBDMTg2OTIgLyogQWlyU3RhY2tBbGxvY2F0aW9uLmggKi87IH07
CiAJCTBGNUUwRkQ4MjA3QzcyNzMwMDk3RjBERSAvKiBERkdBYnN0cmFjdEludGVycHJldGVyQ2xv
YmJlclN0YXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAwRjVFMEZENjIwN0M3MjcxMDA5N0YwREUgLyogREZHQWJzdHJhY3RJbnRlcnByZXRlckNsb2Ji
ZXJTdGF0ZS5oICovOyB9OworCQkwRjVFMEZFNzIwODZBRDQ4MDA5N0YwREUgLyogSXNvU3Vic3Bh
Y2VQZXJWTS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MEY1RTBGRTUyMDg2QUQ0NjAwOTdGMERFIC8qIElzb1N1YnNwYWNlUGVyVk0uaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjVFRjkxRjE2ODc4RjdE
MDAzRTVDMjUgLyogSklUVGh1bmtzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAwRjVFRjkxQzE2ODc4Rjc4MDAzRTVDMjUgLyogSklUVGh1bmtzLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEY1RjA4Q0Yx
NDZDNzYzMzAwMDQ3MkE5IC8qIFVuY29uZGl0aW9uYWxGaW5hbGl6ZXIuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNUYwOENFMTQ2Qzc2MkYwMDA0NzJB
OSAvKiBVbmNvbmRpdGlvbmFsRmluYWxpemVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEY2MEZFOTAxRkZDMzcwMjAwMDMzMjBBIC8qIEV4ZWN1
dGFibGVUb0NvZGVCbG9ja0VkZ2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDBGNjBGRThFMUZGQzM2RkQwMDAzMzIwQSAvKiBFeGVjdXRhYmxlVG9Db2Rl
QmxvY2tFZGdlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKQEAgLTIzNTAsNiArMjM1MSw4IEBACiAJCTBGNUQwODVDMUI4Q0Y5OUQwMDExNDNCNCAvKiBE
RkdOb2RlT3JpZ2luLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERG
R05vZGVPcmlnaW4uY3BwOyBwYXRoID0gZGZnL0RGR05vZGVPcmlnaW4uY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkwRjVFMEZENjIwN0M3MjcxMDA5N0YwREUgLyogREZHQWJzdHJh
Y3RJbnRlcnByZXRlckNsb2JiZXJTdGF0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5h
bWUgPSBERkdBYnN0cmFjdEludGVycHJldGVyQ2xvYmJlclN0YXRlLmg7IHBhdGggPSBkZmcvREZH
QWJzdHJhY3RJbnRlcnByZXRlckNsb2JiZXJTdGF0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkwRjVFMEZENzIwN0M3MjcxMDA5N0YwREUgLyogREZHQWJzdHJhY3RJbnRlcnByZXRl
ckNsb2JiZXJTdGF0ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBE
RkdBYnN0cmFjdEludGVycHJldGVyQ2xvYmJlclN0YXRlLmNwcDsgcGF0aCA9IGRmZy9ERkdBYnN0
cmFjdEludGVycHJldGVyQ2xvYmJlclN0YXRlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJMEY1RTBGRTUyMDg2QUQ0NjAwOTdGMERFIC8qIElzb1N1YnNwYWNlUGVyVk0uaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSXNvU3Vic3BhY2VQZXJWTS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQkwRjVFMEZFNjIwODZBRDQ3MDA5N0YwREUgLyogSXNvU3Vi
c3BhY2VQZXJWTS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJc29T
dWJzcGFjZVBlclZNLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY1RUY5MUIx
Njg3OEY3ODAwM0U1QzI1IC8qIEpJVFRodW5rcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBKSVRUaHVua3MuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkwRjVFRjkxQzE2ODc4Rjc4MDAzRTVDMjUgLyogSklUVGh1bmtzLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEpJVFRodW5rcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkwRjVGMDhDRTE0NkM3NjJGMDAwNDcyQTkgLyogVW5jb25kaXRpb25hbEZpbmFsaXplci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBVbmNvbmRpdGlvbmFsRmluYWxpemVy
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC01Njk1LDYgKzU2OTgsOCBAQAogCQkJ
CTBGQjQ2NzdCMUZEREE2RDgwMDNGQ0IwOSAvKiBJc29DZWxsU2V0SW5saW5lcy5oICovLAogCQkJ
CTBGRENFMTJDMUZBRkI0REUwMDZGMzkwMSAvKiBJc29TdWJzcGFjZS5jcHAgKi8sCiAJCQkJMEZE
Q0UxMkIxRkFGQjRERTAwNkYzOTAxIC8qIElzb1N1YnNwYWNlLmggKi8sCisJCQkJMEY1RTBGRTYy
MDg2QUQ0NzAwOTdGMERFIC8qIElzb1N1YnNwYWNlUGVyVk0uY3BwICovLAorCQkJCTBGNUUwRkU1
MjA4NkFENDYwMDk3RjBERSAvKiBJc29TdWJzcGFjZVBlclZNLmggKi8sCiAJCQkJMEY3NjZEMjkx
NUE4Q0MzNDAwOEYzNjNFIC8qIEpJVFN0dWJSb3V0aW5lU2V0LmNwcCAqLywKIAkJCQkwRjc2NkQy
QTE1QThDQzM0MDA4RjM2M0UgLyogSklUU3R1YlJvdXRpbmVTZXQuaCAqLywKIAkJCQkwRjA3MEE0
NTFENTQzQTg5MDA2RTcyMzIgLyogTGFyZ2VBbGxvY2F0aW9uLmNwcCAqLywKQEAgLTk0OTEsNiAr
OTQ5Niw3IEBACiAJCQkJNTNGOEQyMDAxRTgzODdENDAwRDIxMTE2IC8qIFdhc21CQlFQbGFuSW5s
aW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQUQ0QjFERkExREYyNDRFMjAwNzFBRTMyIC8qIFdh
c21CaW5kaW5nLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MjVDMEREQTFFOTM1ODQ3MDAyMTg0Q0Qg
LyogV2FzbUNhbGxlZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEY1RTBGRTcyMDg2QUQ0ODAwOTdG
MERFIC8qIElzb1N1YnNwYWNlUGVyVk0uaCBpbiBIZWFkZXJzICovLAogCQkJCTUzRkQwNEQ0MUQ3
QUIyOTEwMDMyODdEMyAvKiBXYXNtQ2FsbGluZ0NvbnZlbnRpb24uaCBpbiBIZWFkZXJzICovLAog
CQkJCTUyNkFDNEI3MUU5NzdDNUQwMDM1MDBFMSAvKiBXYXNtQ29kZUJsb2NrLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlBRDQxMkIzNDFFN0IyRTlFMDA4QUYxNTcgLyogV2FzbUNvbnRleHQuaCBpbiBI
ZWFkZXJzICovLApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSXNvU3Vic3BhY2VQ
ZXJWTS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSXNvU3Vi
c3BhY2VQZXJWTS5jcHAJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hl
YXAvSXNvU3Vic3BhY2VQZXJWTS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw3MyBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisjaW5jbHVkZSAiSXNvU3Vic3BhY2VQZXJWTS5oIgorCisjaW5jbHVkZSAiSlND
SW5saW5lcy5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgSXNvU3Vic3BhY2VQZXJWTTo6
QXV0b3JlbW92aW5nSXNvU3Vic3BhY2UgOiBwdWJsaWMgSXNvU3Vic3BhY2UgeworcHVibGljOgor
ICAgIEF1dG9yZW1vdmluZ0lzb1N1YnNwYWNlKElzb1N1YnNwYWNlUGVyVk0mIHBlclZNLCBDU3Ry
aW5nIG5hbWUsIEhlYXAmIGhlYXAsIEhlYXBDZWxsVHlwZSogaGVhcENlbGxUeXBlLCBzaXplX3Qg
c2l6ZSkKKyAgICAgICAgOiBJc29TdWJzcGFjZShuYW1lLCBoZWFwLCBoZWFwQ2VsbFR5cGUsIHNp
emUpCisgICAgICAgICwgbV9wZXJWTShwZXJWTSkKKyAgICB7CisgICAgfQorICAgIAorICAgIH5B
dXRvcmVtb3ZpbmdJc29TdWJzcGFjZSgpCisgICAgeworICAgICAgICBhdXRvIGxvY2tlciA9IGhv
bGRMb2NrKG1fcGVyVk0ubV9sb2NrKTsKKyAgICAgICAgbV9wZXJWTS5tX3N1YnNwYWNlUGVyVk0u
cmVtb3ZlKHNwYWNlKCkuaGVhcCgpLT52bSgpKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgSXNv
U3Vic3BhY2VQZXJWTSYgbV9wZXJWTTsKK307CisKK0lzb1N1YnNwYWNlUGVyVk06Oklzb1N1YnNw
YWNlUGVyVk0oRnVuY3Rpb248U3Vic3BhY2VQYXJhbWV0ZXJzKFZNJik+IHN1YnNwYWNlUGFyYW1l
dGVycykKKyAgICA6IG1fc3Vic3BhY2VQYXJhbWV0ZXJzKFdURk1vdmUoc3Vic3BhY2VQYXJhbWV0
ZXJzKSkKK3sKK30KKworSXNvU3Vic3BhY2VQZXJWTTo6fklzb1N1YnNwYWNlUGVyVk0oKQorewor
ICAgIFVOUkVBQ0hBQkxFX0ZPUl9QTEFURk9STSgpOworfQorCitJc29TdWJzcGFjZSYgSXNvU3Vi
c3BhY2VQZXJWTTo6Zm9yVk0oVk0mIHZtKQoreworICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2so
bV9sb2NrKTsKKyAgICBhdXRvIHJlc3VsdCA9IG1fc3Vic3BhY2VQZXJWTS5hZGQoJnZtLCBudWxs
cHRyKTsKKyAgICBpZiAocmVzdWx0KSB7CisgICAgICAgIFN1YnNwYWNlUGFyYW1ldGVycyBwYXJh
bXMgPSBtX3N1YnNwYWNlUGFyYW1ldGVycyh2bSk7CisgICAgICAgIHJlc3VsdC5pdGVyYXRvci0+
dmFsdWUgPSBuZXcgQXV0b3JlbW92aW5nSXNvU3Vic3BhY2UoKnRoaXMsIHBhcmFtcy5uYW1lLCB2
bS5oZWFwLCBwYXJhbXMuaGVhcENlbGxUeXBlLCBwYXJhbXMuc2l6ZSk7CisgICAgfQorICAgIHJl
dHVybiAqcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCisK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0lzb1N1YnNwYWNlUGVyVk0uaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Jc29TdWJzcGFjZVBlclZNLmgJ
KG5vbmV4aXN0ZW50KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSXNvU3Vic3BhY2VQ
ZXJWTS5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNzMgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJJ
c29TdWJzcGFjZS5oIgorI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbi5oPgorI2luY2x1ZGUgPHd0Zi9I
YXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL0xvY2suaD4KKworbmFtZXNwYWNlIEpTQyB7CisKKy8v
IFRoaXMgaXMgYW4gYXBwcm9wcmlhdGUgd2F5IHRvIHN0YXNoIElzb1N1YnNwYWNlcyBmb3IgcmFy
ZWx5LXVzZWQgY2xhc3NlcyBvciBjbGFzc2VzIHRoYXQgYXJlIG1vc3RseQorLy8gc3VyZSB0byBi
ZSBtYWluLXRocmVhZC1vbmx5LiBCdXQgaWYgYSBjbGFzcyB0eXBpY2FsbHkgZ2V0cyBpbnN0YW50
aWF0ZWQgZnJvbSBtdWx0aXBsZSB0aHJlYWRzIGF0CisvLyBvbmNlLCB0aGVuIHRoaXMgaXMgbm90
IGdyZWF0LCBiZWNhdXNlIGNvbmN1cnJlbnQgYWxsb2NhdGlvbnMgd2lsbCBwcm9iYWJseSBjb250
ZW5kIG9uIHRoaXMgdGhpbmcncworLy8gbG9jay4KK2NsYXNzIElzb1N1YnNwYWNlUGVyVk0gewor
cHVibGljOgorICAgIHN0cnVjdCBTdWJzcGFjZVBhcmFtZXRlcnMgeworICAgICAgICBTdWJzcGFj
ZVBhcmFtZXRlcnMoKSB7IH0KKyAgICAgICAgCisgICAgICAgIFN1YnNwYWNlUGFyYW1ldGVycyhD
U3RyaW5nIG5hbWUsIEhlYXBDZWxsVHlwZSogaGVhcENlbGxUeXBlLCBzaXplX3Qgc2l6ZSkKKyAg
ICAgICAgICAgIDogbmFtZShXVEZNb3ZlKG5hbWUpKQorICAgICAgICAgICAgLCBoZWFwQ2VsbFR5
cGUoaGVhcENlbGxUeXBlKQorICAgICAgICAgICAgLCBzaXplKHNpemUpCisgICAgICAgIHsKKyAg
ICAgICAgfQorICAgICAgICAKKyAgICAgICAgQ1N0cmluZyBuYW1lOworICAgICAgICBIZWFwQ2Vs
bFR5cGUqIGhlYXBDZWxsVHlwZSB7IG51bGxwdHIgfTsKKyAgICAgICAgc2l6ZV90IHNpemUgeyAw
IH07CisgICAgfTsKKyAgICAKKyAgICBKU19FWFBPUlRfUFJJVkFURSBJc29TdWJzcGFjZVBlclZN
KEZ1bmN0aW9uPFN1YnNwYWNlUGFyYW1ldGVycyhWTSYpPik7CisgICAgSlNfRVhQT1JUX1BSSVZB
VEUgfklzb1N1YnNwYWNlUGVyVk0oKTsKKyAgICAKKyAgICBKU19FWFBPUlRfUFJJVkFURSBJc29T
dWJzcGFjZSYgZm9yVk0oVk0mKTsKKworcHJpdmF0ZToKKyAgICBjbGFzcyBBdXRvcmVtb3ZpbmdJ
c29TdWJzcGFjZTsKKyAgICBmcmllbmQgY2xhc3MgQXV0b3JlbW92aW5nSXNvU3Vic3BhY2U7CisK
KyAgICBMb2NrIG1fbG9jazsKKyAgICBIYXNoTWFwPFZNKiwgSXNvU3Vic3BhY2UqPiBtX3N1YnNw
YWNlUGVyVk07CisgICAgRnVuY3Rpb248U3Vic3BhY2VQYXJhbWV0ZXJzKFZNJik+IG1fc3Vic3Bh
Y2VQYXJhbWV0ZXJzOworfTsKKworI2RlZmluZSBJU09fU1VCU1BBQ0VfUEFSQU1FVEVSUyhoZWFw
Q2VsbFR5cGUsIHR5cGUpIDo6SlNDOjpJc29TdWJzcGFjZVBlclZNOjpTdWJzcGFjZVBhcmFtZXRl
cnMoIklzb2xhdGVkICIgI3R5cGUgIiBTcGFjZSIsIChoZWFwQ2VsbFR5cGUpLCBzaXplb2YodHlw
ZSkpCisKK30gLy8gbmFtZXNwYWNlIEpTQworCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9FcnJvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0Vycm9yLmgJKHJldmlzaW9uIDIzMDcyMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0Vycm9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTExNSw2ICsxMTUsMTIgQEAgcHJpdmF0
ZToKIAogcHVibGljOgogICAgIHR5cGVkZWYgSW50ZXJuYWxGdW5jdGlvbiBCYXNlOworICAgIAor
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlPgorICAgIHN0YXRpYyBJc29TdWJzcGFjZSog
c3Vic3BhY2VGb3IoVk0mIHZtKQorICAgIHsKKyAgICAgICAgcmV0dXJuICZ2bS5zdHJpY3RNb2Rl
VHlwZUVycm9yRnVuY3Rpb25TcGFjZTsKKyAgICB9CiAKICAgICBzdGF0aWMgU3RyaWN0TW9kZVR5
cGVFcnJvckZ1bmN0aW9uKiBjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgY29u
c3QgU3RyaW5nJiBtZXNzYWdlKQogICAgIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0Vycm9yQ29uc3RydWN0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9FcnJvckNvbnN0cnVjdG9yLmgJKHJldmlzaW9uIDIzMDcyMykKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yQ29uc3RydWN0b3IuaAkod29ya2luZyBj
b3B5KQpAQCAtMSw2ICsxLDYgQEAKIC8qCiAgKiAgQ29weXJpZ2h0IChDKSAxOTk5LTIwMDAgSGFy
cmkgUG9ydGVuIChwb3J0ZW5Aa2RlLm9yZykKLSAqICBDb3B5cmlnaHQgKEMpIDIwMDgtMjAxNyBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAgQ29weXJpZ2h0IChDKSAyMDA4LTIw
MTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqICBUaGlzIGxpYnJhcnkg
aXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiAgbW9k
aWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwpA
QCAtMzEsNiArMzEsMTIgQEAgY2xhc3MgRXJyb3JDb25zdHJ1Y3RvciBmaW5hbCA6IHB1YmxpYyBJ
bgogcHVibGljOgogICAgIHR5cGVkZWYgSW50ZXJuYWxGdW5jdGlvbiBCYXNlOwogCisgICAgdGVt
cGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGU+CisgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFj
ZUZvcihWTSYgdm0pCisgICAgeworICAgICAgICByZXR1cm4gJnZtLmVycm9yQ29uc3RydWN0b3JT
cGFjZTsKKyAgICB9CisKICAgICBzdGF0aWMgRXJyb3JDb25zdHJ1Y3RvciogY3JlYXRlKFZNJiB2
bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEVycm9yUHJvdG90eXBlKiBlcnJvclByb3RvdHlwZSwg
R2V0dGVyU2V0dGVyKikKICAgICB7CiAgICAgICAgIEVycm9yQ29uc3RydWN0b3IqIGNvbnN0cnVj
dG9yID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8RXJyb3JDb25zdHJ1Y3Rvcj4odm0uaGVh
cCkpIEVycm9yQ29uc3RydWN0b3Iodm0sIHN0cnVjdHVyZSk7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9JbnRlcm5hbEZ1bmN0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50ZXJuYWxGdW5jdGlvbi5oCShyZXZpc2lvbiAyMzA3
MjMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRlcm5hbEZ1bmN0aW9uLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTM4LDYgKzM4LDEzIEBAIHB1YmxpYzoKICAgICB0eXBlZGVmIEpT
RGVzdHJ1Y3RpYmxlT2JqZWN0IEJhc2U7CiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVj
dHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBJbXBsZW1lbnRzSGFzSW5zdGFuY2Ug
fCBJbXBsZW1lbnRzRGVmYXVsdEhhc0luc3RhbmNlIHwgVHlwZU9mU2hvdWxkQ2FsbEdldENhbGxE
YXRhOwogCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGU+CisgICAgc3RhdGljIElzb1N1
YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCisgICAgeworICAgICAgICBzdGF0aWNfYXNzZXJ0
KHNpemVvZihDZWxsVHlwZSkgPT0gc2l6ZW9mKEludGVybmFsRnVuY3Rpb24pLCAiSW50ZXJuYWxG
dW5jdGlvbiBzdWJjbGFzc2VzIHRoYXQgYWRkIGZpZWxkcyBuZWVkIHRvIG92ZXJyaWRlIHN1YnNw
YWNlRm9yPD4oKSIpOworICAgICAgICByZXR1cm4gJnZtLmludGVybmFsRnVuY3Rpb25TcGFjZTsK
KyAgICB9CisKICAgICBERUNMQVJFX0VYUE9SVF9JTkZPOwogCiAgICAgSlNfRVhQT1JUX1BSSVZB
VEUgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYpOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bENvbGxhdG9yQ29uc3RydWN0b3Iu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsQ29sbGF0
b3JDb25zdHJ1Y3Rvci5oCShyZXZpc2lvbiAyMzA3MjMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9JbnRsQ29sbGF0b3JDb25zdHJ1Y3Rvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxNSBBbmR5IFZhbldhZ29uZXIgKHRo
ZXRhbGVjcmFmdGVyQGdtYWlsLmNvbSkKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAg
LTM5LDYgKzQwLDEyIEBAIHB1YmxpYzoKICAgICB0eXBlZGVmIEludGVybmFsRnVuY3Rpb24gQmFz
ZTsKICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1
Y3R1cmVGbGFncyB8IEhhc1N0YXRpY1Byb3BlcnR5VGFibGU7CiAKKyAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBDZWxsVHlwZT4KKyAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2
bSkKKyAgICB7CisgICAgICAgIHJldHVybiAmdm0uaW50bENvbGxhdG9yQ29uc3RydWN0b3JTcGFj
ZTsKKyAgICB9CisKICAgICBzdGF0aWMgSW50bENvbGxhdG9yQ29uc3RydWN0b3IqIGNyZWF0ZShW
TSYsIFN0cnVjdHVyZSosIEludGxDb2xsYXRvclByb3RvdHlwZSosIFN0cnVjdHVyZSopOwogICAg
IHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYsIEpTR2xvYmFsT2JqZWN0Kiwg
SlNWYWx1ZSk7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxEYXRl
VGltZUZvcm1hdENvbnN0cnVjdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3IuaAkocmV2aXNpb24gMjMw
NzIzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0
Q29uc3RydWN0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5
cmlnaHQgKEMpIDIwMTUgQW5keSBWYW5XYWdvbmVyICh0aGV0YWxlY3JhZnRlckBnbWFpbC5jb20p
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zOSw2ICs0MCwxMiBAQCBwdWJsaWM6
CiAgICAgdHlwZWRlZiBJbnRlcm5hbEZ1bmN0aW9uIEJhc2U7CiAgICAgc3RhdGljIGNvbnN0IHVu
c2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBIYXNTdGF0aWNQ
cm9wZXJ0eVRhYmxlOwogCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGU+CisgICAgc3Rh
dGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCisgICAgeworICAgICAgICByZXR1
cm4gJnZtLmludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yU3BhY2U7CisgICAgfQorCiAgICAg
c3RhdGljIEludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yKiBjcmVhdGUoVk0mLCBTdHJ1Y3R1
cmUqLCBJbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUqLCBTdHJ1Y3R1cmUqKTsKICAgICBzdGF0
aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mLCBKU0dsb2JhbE9iamVjdCosIEpTVmFs
dWUpOwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9y
bWF0Q29uc3RydWN0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9JbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3IuaAkocmV2aXNpb24gMjMwNzIzKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9y
LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAy
MDE1IEFuZHkgVmFuV2Fnb25lciAodGhldGFsZWNyYWZ0ZXJAZ21haWwuY29tKQorICogQ29weXJp
Z2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzksNiArNDAsMTIgQEAgcHVibGljOgogICAgIHR5cGVk
ZWYgSW50ZXJuYWxGdW5jdGlvbiBCYXNlOwogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1
Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgSGFzU3RhdGljUHJvcGVydHlUYWJs
ZTsKIAorICAgIHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlPgorICAgIHN0YXRpYyBJc29TdWJz
cGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQorICAgIHsKKyAgICAgICAgcmV0dXJuICZ2bS5pbnRs
TnVtYmVyRm9ybWF0Q29uc3RydWN0b3JTcGFjZTsKKyAgICB9CisKICAgICBzdGF0aWMgSW50bE51
bWJlckZvcm1hdENvbnN0cnVjdG9yKiBjcmVhdGUoVk0mLCBTdHJ1Y3R1cmUqLCBJbnRsTnVtYmVy
Rm9ybWF0UHJvdG90eXBlKiwgU3RydWN0dXJlKik7CiAgICAgc3RhdGljIFN0cnVjdHVyZSogY3Jl
YXRlU3RydWN0dXJlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlKTsKIApJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlckNvbnN0cnVjdG9yLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlckNv
bnN0cnVjdG9yLmgJKHJldmlzaW9uIDIzMDcyMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTQXJyYXlCdWZmZXJDb25zdHJ1Y3Rvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUg
KzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNiBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAxOCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM3
LDYgKzM3LDEyIEBAIGNsYXNzIEpTQXJyYXlCdWZmZXJDb25zdHJ1Y3RvciBmaW5hbCA6IHAKIHB1
YmxpYzoKICAgICB0eXBlZGVmIEludGVybmFsRnVuY3Rpb24gQmFzZTsKIAorICAgIHRlbXBsYXRl
PHR5cGVuYW1lIENlbGxUeXBlPgorICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3Io
Vk0mIHZtKQorICAgIHsKKyAgICAgICAgcmV0dXJuICZ2bS5hcnJheUJ1ZmZlckNvbnN0cnVjdG9y
U3BhY2U7CisgICAgfQorCiBwcm90ZWN0ZWQ6CiAgICAgSlNBcnJheUJ1ZmZlckNvbnN0cnVjdG9y
KFZNJiwgU3RydWN0dXJlKiwgQXJyYXlCdWZmZXJTaGFyaW5nTW9kZSk7CiAgICAgdm9pZCBmaW5p
c2hDcmVhdGlvbihWTSYsIEpTQXJyYXlCdWZmZXJQcm90b3R5cGUqLCBHZXR0ZXJTZXR0ZXIqIHNw
ZWNpZXNTeW1ib2wpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZl
RXJyb3JDb25zdHJ1Y3Rvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL05hdGl2ZUVycm9yQ29uc3RydWN0b3IuaAkocmV2aXNpb24gMjMwNzIzKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvci5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDYgKzEsNiBAQAogLyoKICAqICBDb3B5cmlnaHQgKEMpIDE5OTktMjAw
MCBIYXJyaSBQb3J0ZW4gKHBvcnRlbkBrZGUub3JnKQotICogIENvcHlyaWdodCAoQykgMjAwOCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAgQ29weXJpZ2h0IChDKSAyMDA4LTIw
MTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqICBUaGlzIGxpYnJhcnkg
aXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiAgbW9k
aWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwpA
QCAtMzMsNiArMzMsMTIgQEAgY2xhc3MgTmF0aXZlRXJyb3JDb25zdHJ1Y3RvciBmaW5hbCA6IHB1
YgogcHVibGljOgogICAgIHR5cGVkZWYgSW50ZXJuYWxGdW5jdGlvbiBCYXNlOwogCisgICAgdGVt
cGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGU+CisgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFj
ZUZvcihWTSYgdm0pCisgICAgeworICAgICAgICByZXR1cm4gJnZtLm5hdGl2ZUVycm9yQ29uc3Ry
dWN0b3JTcGFjZTsKKyAgICB9CisKICAgICBzdGF0aWMgTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvciog
Y3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBz
dHJ1Y3R1cmUsIFN0cnVjdHVyZSogcHJvdG90eXBlU3RydWN0dXJlLCBjb25zdCBTdHJpbmcmIG5h
bWUpCiAgICAgewogICAgICAgICBOYXRpdmVFcnJvckNvbnN0cnVjdG9yKiBjb25zdHJ1Y3RvciA9
IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPE5hdGl2ZUVycm9yQ29uc3RydWN0b3I+KHZtLmhl
YXApKSBOYXRpdmVFcnJvckNvbnN0cnVjdG9yKHZtLCBzdHJ1Y3R1cmUpOwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJveHlSZXZva2UuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm94eVJldm9rZS5oCShyZXZpc2lvbiAyMzA3MjMp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm94eVJldm9rZS5oCSh3b3JraW5n
IGNvcHkpCkBAIC0zNiw2ICszNiwxMiBAQCBwdWJsaWM6CiAgICAgdHlwZWRlZiBJbnRlcm5hbEZ1
bmN0aW9uIEJhc2U7CiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0g
QmFzZTo6U3RydWN0dXJlRmxhZ3M7CiAKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZT4K
KyAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKKyAgICB7CisgICAg
ICAgIHJldHVybiAmdm0ucHJveHlSZXZva2VTcGFjZTsKKyAgICB9CisKICAgICBzdGF0aWMgUHJv
eHlSZXZva2UqIGNyZWF0ZShWTSYsIFN0cnVjdHVyZSosIFByb3h5T2JqZWN0Kik7CiAKICAgICBE
RUNMQVJFX0lORk87CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBD
b25zdHJ1Y3Rvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1JlZ0V4cENvbnN0cnVjdG9yLmgJKHJldmlzaW9uIDIzMDcyMykKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1JlZ0V4cENvbnN0cnVjdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTEs
NiArMSw2IEBACiAvKgogICogIENvcHlyaWdodCAoQykgMTk5OS0yMDAwIEhhcnJpIFBvcnRlbiAo
cG9ydGVuQGtkZS5vcmcpCi0gKiAgQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA3LTIwMDgsIDIwMTYg
QXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICogIENvcHlyaWdodCAoQykgMjAwMy0y
MDE4IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAqCiAgKiAgVGhpcyBsaWJyYXJ5
IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogIG1v
ZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMK
QEAgLTM1LDYgKzM1LDEyIEBAIHB1YmxpYzoKICAgICB0eXBlZGVmIEludGVybmFsRnVuY3Rpb24g
QmFzZTsKICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpT
dHJ1Y3R1cmVGbGFncyB8IEhhc1N0YXRpY1Byb3BlcnR5VGFibGU7CiAKKyAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBDZWxsVHlwZT4KKyAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZN
JiB2bSkKKyAgICB7CisgICAgICAgIHJldHVybiAmdm0ucmVnRXhwQ29uc3RydWN0b3JTcGFjZTsK
KyAgICB9CisKICAgICBzdGF0aWMgUmVnRXhwQ29uc3RydWN0b3IqIGNyZWF0ZShWTSYgdm0sIFN0
cnVjdHVyZSogc3RydWN0dXJlLCBSZWdFeHBQcm90b3R5cGUqIHJlZ0V4cFByb3RvdHlwZSwgR2V0
dGVyU2V0dGVyKiBzcGVjaWVzKQogICAgIHsKICAgICAgICAgUmVnRXhwQ29uc3RydWN0b3IqIGNv
bnN0cnVjdG9yID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8UmVnRXhwQ29uc3RydWN0b3I+
KHZtLmhlYXApKSBSZWdFeHBDb25zdHJ1Y3Rvcih2bSwgc3RydWN0dXJlLCByZWdFeHBQcm90b3R5
cGUpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAkocmV2aXNpb24gMjMw
NzIzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC00MSw2ICs0MSw4IEBACiAjaW5jbHVkZSAiREZHV29ya2xpc3QuaCIKICNpbmNsdWRl
ICJEaXJlY3RFdmFsRXhlY3V0YWJsZS5oIgogI2luY2x1ZGUgIkRpc2Fzc2VtYmxlci5oIgorI2lu
Y2x1ZGUgIkVycm9yLmgiCisjaW5jbHVkZSAiRXJyb3JDb25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUg
IkVycm9ySW5zdGFuY2UuaCIKICNpbmNsdWRlICJFdmFsQ29kZUJsb2NrLmgiCiAjaW5jbHVkZSAi
RXhjZXB0aW9uLmgiCkBAIC02NCwxNCArNjYsMTkgQEAKICNpbmNsdWRlICJJbmZlcnJlZFR5cGVU
YWJsZS5oIgogI2luY2x1ZGUgIkluZmVycmVkVmFsdWUuaCIKICNpbmNsdWRlICJJbnRlcnByZXRl
ci5oIgorI2luY2x1ZGUgIkludGxDb2xsYXRvckNvbnN0cnVjdG9yLmgiCisjaW5jbHVkZSAiSW50
bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3IuaCIKKyNpbmNsdWRlICJJbnRsTnVtYmVyRm9ybWF0
Q29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJKSVRDb2RlLmgiCiAjaW5jbHVkZSAiSklUV29ya2xp
c3QuaCIKICNpbmNsdWRlICJKU0FQSVZhbHVlV3JhcHBlci5oIgogI2luY2x1ZGUgIkpTQXJyYXku
aCIKKyNpbmNsdWRlICJKU0FycmF5QnVmZmVyQ29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJKU0Fz
eW5jRnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU0JpZ0ludC5oIgogI2luY2x1ZGUgIkpTQm91bmRG
dW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKKyNpbmNsdWRlICJKU0NhbGxiYWNr
RnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU0N1c3RvbUdldHRlclNldHRlckZ1bmN0aW9uLmgiCiAj
aW5jbHVkZSAiSlNEZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuaCIKICNpbmNsdWRlICJK
U0ZpeGVkQXJyYXkuaCIKQEAgLTEwMywxNiArMTEwLDIwIEBACiAjaW5jbHVkZSAiTWluaW11bVJl
c2VydmVkWm9uZVNpemUuaCIKICNpbmNsdWRlICJNb2R1bGVQcm9ncmFtQ29kZUJsb2NrLmgiCiAj
aW5jbHVkZSAiTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUuaCIKKyNpbmNsdWRlICJOYXRpdmVFcnJv
ckNvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAiTmF0aXZlRXhlY3V0YWJsZS5oIgogI2luY2x1ZGUg
Ik5hdGl2ZVN0ZEZ1bmN0aW9uQ2VsbC5oIgogI2luY2x1ZGUgIk5vZGVzLmgiCisjaW5jbHVkZSAi
T2JqQ0NhbGxiYWNrRnVuY3Rpb24uaCIKICNpbmNsdWRlICJQYXJzZXIuaCIKICNpbmNsdWRlICJQ
cm9maWxlckRhdGFiYXNlLmgiCiAjaW5jbHVkZSAiUHJvZ3JhbUNvZGVCbG9jay5oIgogI2luY2x1
ZGUgIlByb2dyYW1FeGVjdXRhYmxlLmgiCiAjaW5jbHVkZSAiUHJvbWlzZURlZmVycmVkVGltZXIu
aCIKICNpbmNsdWRlICJQcm9wZXJ0eU1hcEhhc2hUYWJsZS5oIgorI2luY2x1ZGUgIlByb3h5UmV2
b2tlLmgiCiAjaW5jbHVkZSAiUmVnRXhwQ2FjaGUuaCIKKyNpbmNsdWRlICJSZWdFeHBDb25zdHJ1
Y3Rvci5oIgogI2luY2x1ZGUgIlJlZ0V4cE9iamVjdC5oIgogI2luY2x1ZGUgIlJlZ2lzdGVyQXRP
ZmZzZXRMaXN0LmgiCiAjaW5jbHVkZSAiUnVudGltZVR5cGUuaCIKQEAgLTI1NCwxMSArMjY1LDE0
IEBAIFZNOjpWTShWTVR5cGUgdm1UeXBlLCBIZWFwVHlwZSBoZWFwVHlwZSkKICAgICAsIGRlc3Ry
dWN0aWJsZU9iamVjdFNwYWNlKCJKU0Rlc3RydWN0aWJsZU9iamVjdCIsIGhlYXAsIGRlc3RydWN0
aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5nZXQoKSwgZmFzdE1hbGxvY0FsbG9jYXRvci5nZXQoKSkK
ICAgICAsIGVhZ2VybHlTd2VwdERlc3RydWN0aWJsZU9iamVjdFNwYWNlKCJFYWdlcmx5IFN3ZXB0
IEpTRGVzdHJ1Y3RpYmxlT2JqZWN0IiwgaGVhcCwgZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxU
eXBlLmdldCgpLCBmYXN0TWFsbG9jQWxsb2NhdG9yLmdldCgpKQogICAgICwgc2VnbWVudGVkVmFy
aWFibGVPYmplY3RTcGFjZSgiSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdFNwYWNlIiwgaGVhcCwg
c2VnbWVudGVkVmFyaWFibGVPYmplY3RIZWFwQ2VsbFR5cGUuZ2V0KCksIGZhc3RNYWxsb2NBbGxv
Y2F0b3IuZ2V0KCkpCisgICAgLCBhcnJheUJ1ZmZlckNvbnN0cnVjdG9yU3BhY2UgSVNPX1NVQlNQ
QUNFX0lOSVQoaGVhcCwgZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmdldCgpLCBKU0Fy
cmF5QnVmZmVyQ29uc3RydWN0b3IpCiAgICAgLCBhc3luY0Z1bmN0aW9uU3BhY2UgSVNPX1NVQlNQ
QUNFX0lOSVQoaGVhcCwgY2VsbEpTVmFsdWVPT0JIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTQXN5bmNG
dW5jdGlvbikKICAgICAsIGFzeW5jR2VuZXJhdG9yRnVuY3Rpb25TcGFjZSBJU09fU1VCU1BBQ0Vf
SU5JVChoZWFwLCBjZWxsSlNWYWx1ZU9PQkhlYXBDZWxsVHlwZS5nZXQoKSwgSlNBc3luY0dlbmVy
YXRvckZ1bmN0aW9uKQogICAgICwgYm91bmRGdW5jdGlvblNwYWNlIElTT19TVUJTUEFDRV9JTklU
KGhlYXAsIGNlbGxKU1ZhbHVlT09CSGVhcENlbGxUeXBlLmdldCgpLCBKU0JvdW5kRnVuY3Rpb24p
CisgICAgLCBjYWxsYmFja0Z1bmN0aW9uU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoaGVhcCwgZGVz
dHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmdldCgpLCBKU0NhbGxiYWNrRnVuY3Rpb24pCiAg
ICAgLCBjdXN0b21HZXR0ZXJTZXR0ZXJGdW5jdGlvblNwYWNlIElTT19TVUJTUEFDRV9JTklUKGhl
YXAsIGNlbGxKU1ZhbHVlT09CSGVhcENlbGxUeXBlLmdldCgpLCBKU0N1c3RvbUdldHRlclNldHRl
ckZ1bmN0aW9uKQogICAgICwgZGlyZWN0RXZhbEV4ZWN1dGFibGVTcGFjZSBJU09fU1VCU1BBQ0Vf
SU5JVChoZWFwLCBkZXN0cnVjdGlibGVDZWxsSGVhcENlbGxUeXBlLmdldCgpLCBEaXJlY3RFdmFs
RXhlY3V0YWJsZSkKKyAgICAsIGVycm9yQ29uc3RydWN0b3JTcGFjZSBJU09fU1VCU1BBQ0VfSU5J
VChoZWFwLCBkZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuZ2V0KCksIEVycm9yQ29uc3Ry
dWN0b3IpCiAgICAgLCBleGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlU3BhY2UgSVNPX1NVQlNQQUNF
X0lOSVQoaGVhcCwgY2VsbERhbmdlcm91c0JpdHNIZWFwQ2VsbFR5cGUuZ2V0KCksIEV4ZWN1dGFi
bGVUb0NvZGVCbG9ja0VkZ2UpCiAgICAgLCBmdW5jdGlvbkV4ZWN1dGFibGVTcGFjZSBJU09fU1VC
U1BBQ0VfSU5JVChoZWFwLCBkZXN0cnVjdGlibGVDZWxsSGVhcENlbGxUeXBlLmdldCgpLCBGdW5j
dGlvbkV4ZWN1dGFibGUpCiAgICAgLCBmdW5jdGlvblNwYWNlIElTT19TVUJTUEFDRV9JTklUKGhl
YXAsIGNlbGxKU1ZhbHVlT09CSGVhcENlbGxUeXBlLmdldCgpLCBKU0Z1bmN0aW9uKQpAQCAtMjY2
LDExICsyODAsMjQgQEAgVk06OlZNKFZNVHlwZSB2bVR5cGUsIEhlYXBUeXBlIGhlYXBUeXBlKQog
ICAgICwgaW5kaXJlY3RFdmFsRXhlY3V0YWJsZVNwYWNlIElTT19TVUJTUEFDRV9JTklUKGhlYXAs
IGRlc3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIEluZGlyZWN0RXZhbEV4ZWN1dGFi
bGUpCiAgICAgLCBpbmZlcnJlZFR5cGVTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVChoZWFwLCBkZXN0
cnVjdGlibGVDZWxsSGVhcENlbGxUeXBlLmdldCgpLCBJbmZlcnJlZFR5cGUpCiAgICAgLCBpbmZl
cnJlZFZhbHVlU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoaGVhcCwgZGVzdHJ1Y3RpYmxlQ2VsbEhl
YXBDZWxsVHlwZS5nZXQoKSwgSW5mZXJyZWRWYWx1ZSkKKyAgICAsIGludGVybmFsRnVuY3Rpb25T
cGFjZSBJU09fU1VCU1BBQ0VfSU5JVChoZWFwLCBkZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5
cGUuZ2V0KCksIEludGVybmFsRnVuY3Rpb24pCisjaWYgRU5BQkxFKElOVEwpCisgICAgLCBpbnRs
Q29sbGF0b3JDb25zdHJ1Y3RvclNwYWNlIElTT19TVUJTUEFDRV9JTklUKGhlYXAsIGRlc3RydWN0
aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5nZXQoKSwgSW50bENvbGxhdG9yQ29uc3RydWN0b3IpCisg
ICAgLCBpbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3RvclNwYWNlIElTT19TVUJTUEFDRV9JTklU
KGhlYXAsIGRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5nZXQoKSwgSW50bERhdGVUaW1l
Rm9ybWF0Q29uc3RydWN0b3IpCisgICAgLCBpbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3JTcGFj
ZSBJU09fU1VCU1BBQ0VfSU5JVChoZWFwLCBkZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUu
Z2V0KCksIEludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3RvcikKKyNlbmRpZgogICAgICwgbW9kdWxl
UHJvZ3JhbUV4ZWN1dGFibGVTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVChoZWFwLCBkZXN0cnVjdGli
bGVDZWxsSGVhcENlbGxUeXBlLmdldCgpLCBNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZSkKKyAgICAs
IG5hdGl2ZUVycm9yQ29uc3RydWN0b3JTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVChoZWFwLCBkZXN0
cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuZ2V0KCksIE5hdGl2ZUVycm9yQ29uc3RydWN0b3Ip
CiAgICAgLCBuYXRpdmVFeGVjdXRhYmxlU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoaGVhcCwgZGVz
dHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgTmF0aXZlRXhlY3V0YWJsZSkKICAgICAs
IG5hdGl2ZVN0ZEZ1bmN0aW9uU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoaGVhcCwgY2VsbEpTVmFs
dWVPT0JIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTTmF0aXZlU3RkRnVuY3Rpb24pCisjaWYgSlNDX09C
SkNfQVBJX0VOQUJMRUQKKyAgICAsIG9iakNDYWxsYmFja0Z1bmN0aW9uU3BhY2UgSVNPX1NVQlNQ
QUNFX0lOSVQoaGVhcCwgZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmdldCgpLCBPYmpD
Q2FsbGJhY2tGdW5jdGlvbikKKyNlbmRpZgogICAgICwgcHJvZ3JhbUV4ZWN1dGFibGVTcGFjZSBJ
U09fU1VCU1BBQ0VfSU5JVChoZWFwLCBkZXN0cnVjdGlibGVDZWxsSGVhcENlbGxUeXBlLmdldCgp
LCBQcm9ncmFtRXhlY3V0YWJsZSkKICAgICAsIHByb3BlcnR5VGFibGVTcGFjZSBJU09fU1VCU1BB
Q0VfSU5JVChoZWFwLCBkZXN0cnVjdGlibGVDZWxsSGVhcENlbGxUeXBlLmdldCgpLCBQcm9wZXJ0
eVRhYmxlKQorICAgICwgcHJveHlSZXZva2VTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVChoZWFwLCBk
ZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuZ2V0KCksIFByb3h5UmV2b2tlKQorICAgICwg
cmVnRXhwQ29uc3RydWN0b3JTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVChoZWFwLCBkZXN0cnVjdGli
bGVPYmplY3RIZWFwQ2VsbFR5cGUuZ2V0KCksIFJlZ0V4cENvbnN0cnVjdG9yKQorICAgICwgc3Ry
aWN0TW9kZVR5cGVFcnJvckZ1bmN0aW9uU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoaGVhcCwgZGVz
dHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmdldCgpLCBTdHJpY3RNb2RlVHlwZUVycm9yRnVu
Y3Rpb24pCiAgICAgLCBzdHJ1Y3R1cmVSYXJlRGF0YVNwYWNlIElTT19TVUJTUEFDRV9JTklUKGhl
YXAsIGRlc3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIFN0cnVjdHVyZVJhcmVEYXRh
KQogICAgICwgc3RydWN0dXJlU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoaGVhcCwgZGVzdHJ1Y3Rp
YmxlQ2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgU3RydWN0dXJlKQogICAgICwgd2Vha1NldFNwYWNl
IElTT19TVUJTUEFDRV9JTklUKGhlYXAsIGRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5n
ZXQoKSwgSlNXZWFrU2V0KQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0u
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCShyZXZp
c2lvbiAyMzA3MjMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC04MCw2ICs4MCwxNiBAQAogI2luY2x1ZGUgPHd0Zi9TdGFja1RyYWNlLmg+
CiAjZW5kaWYKIAorLy8gRW5hYmxlIHRoZSBPYmplY3RpdmUtQyBBUEkgZm9yIHBsYXRmb3JtcyB3
aXRoIGEgbW9kZXJuIHJ1bnRpbWUuIFRoaXMgaGFzIHRvIG1hdGNoIGV4YWN0bHkgd2hhdCB3ZQor
Ly8gaGF2ZSBpbiBKU0Jhc2UuaC4KKyNpZiAhZGVmaW5lZChKU0NfT0JKQ19BUElfRU5BQkxFRCkK
KyNpZiAoZGVmaW5lZChfX2NsYW5nX18pICYmIGRlZmluZWQoX19BUFBMRV9fKSAmJiAoKGRlZmlu
ZWQoX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCkgJiYgIWRlZmluZWQoX19pMzg2X18p
KSB8fCAoZGVmaW5lZChUQVJHRVRfT1NfSVBIT05FKSAmJiBUQVJHRVRfT1NfSVBIT05FKSkpCisj
ZGVmaW5lIEpTQ19PQkpDX0FQSV9FTkFCTEVEIDEKKyNlbHNlCisjZGVmaW5lIEpTQ19PQkpDX0FQ
SV9FTkFCTEVEIDAKKyNlbmRpZgorI2VuZGlmCisKIG5hbWVzcGFjZSBXVEYgewogY2xhc3MgU2lt
cGxlU3RhdHM7CiB9IC8vIG5hbWVzcGFjZSBXVEYKQEAgLTMzNywxMSArMzQ3LDE0IEBAIHB1Ymxp
YzoKICAgICBDb21wbGV0ZVN1YnNwYWNlIGVhZ2VybHlTd2VwdERlc3RydWN0aWJsZU9iamVjdFNw
YWNlOwogICAgIENvbXBsZXRlU3Vic3BhY2Ugc2VnbWVudGVkVmFyaWFibGVPYmplY3RTcGFjZTsK
ICAgICAKKyAgICBJc29TdWJzcGFjZSBhcnJheUJ1ZmZlckNvbnN0cnVjdG9yU3BhY2U7CiAgICAg
SXNvU3Vic3BhY2UgYXN5bmNGdW5jdGlvblNwYWNlOwogICAgIElzb1N1YnNwYWNlIGFzeW5jR2Vu
ZXJhdG9yRnVuY3Rpb25TcGFjZTsKICAgICBJc29TdWJzcGFjZSBib3VuZEZ1bmN0aW9uU3BhY2U7
CisgICAgSXNvU3Vic3BhY2UgY2FsbGJhY2tGdW5jdGlvblNwYWNlOwogICAgIElzb1N1YnNwYWNl
IGN1c3RvbUdldHRlclNldHRlckZ1bmN0aW9uU3BhY2U7CiAgICAgSXNvU3Vic3BhY2UgZGlyZWN0
RXZhbEV4ZWN1dGFibGVTcGFjZTsKKyAgICBJc29TdWJzcGFjZSBlcnJvckNvbnN0cnVjdG9yU3Bh
Y2U7CiAgICAgSXNvU3Vic3BhY2UgZXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZVNwYWNlOwogICAg
IElzb1N1YnNwYWNlIGZ1bmN0aW9uRXhlY3V0YWJsZVNwYWNlOwogICAgIElzb1N1YnNwYWNlIGZ1
bmN0aW9uU3BhY2U7CkBAIC0zNDksMTEgKzM2MiwyNCBAQCBwdWJsaWM6CiAgICAgSXNvU3Vic3Bh
Y2UgaW5kaXJlY3RFdmFsRXhlY3V0YWJsZVNwYWNlOwogICAgIElzb1N1YnNwYWNlIGluZmVycmVk
VHlwZVNwYWNlOwogICAgIElzb1N1YnNwYWNlIGluZmVycmVkVmFsdWVTcGFjZTsKKyAgICBJc29T
dWJzcGFjZSBpbnRlcm5hbEZ1bmN0aW9uU3BhY2U7CisjaWYgRU5BQkxFKElOVEwpCisgICAgSXNv
U3Vic3BhY2UgaW50bENvbGxhdG9yQ29uc3RydWN0b3JTcGFjZTsKKyAgICBJc29TdWJzcGFjZSBp
bnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3RvclNwYWNlOworICAgIElzb1N1YnNwYWNlIGludGxO
dW1iZXJGb3JtYXRDb25zdHJ1Y3RvclNwYWNlOworI2VuZGlmCiAgICAgSXNvU3Vic3BhY2UgbW9k
dWxlUHJvZ3JhbUV4ZWN1dGFibGVTcGFjZTsKKyAgICBJc29TdWJzcGFjZSBuYXRpdmVFcnJvckNv
bnN0cnVjdG9yU3BhY2U7CiAgICAgSXNvU3Vic3BhY2UgbmF0aXZlRXhlY3V0YWJsZVNwYWNlOwog
ICAgIElzb1N1YnNwYWNlIG5hdGl2ZVN0ZEZ1bmN0aW9uU3BhY2U7CisjaWYgSlNDX09CSkNfQVBJ
X0VOQUJMRUQKKyAgICBJc29TdWJzcGFjZSBvYmpDQ2FsbGJhY2tGdW5jdGlvblNwYWNlOworI2Vu
ZGlmCiAgICAgSXNvU3Vic3BhY2UgcHJvZ3JhbUV4ZWN1dGFibGVTcGFjZTsKICAgICBJc29TdWJz
cGFjZSBwcm9wZXJ0eVRhYmxlU3BhY2U7CisgICAgSXNvU3Vic3BhY2UgcHJveHlSZXZva2VTcGFj
ZTsKKyAgICBJc29TdWJzcGFjZSByZWdFeHBDb25zdHJ1Y3RvclNwYWNlOworICAgIElzb1N1YnNw
YWNlIHN0cmljdE1vZGVUeXBlRXJyb3JGdW5jdGlvblNwYWNlOwogICAgIElzb1N1YnNwYWNlIHN0
cnVjdHVyZVJhcmVEYXRhU3BhY2U7CiAgICAgSXNvU3Vic3BhY2Ugc3RydWN0dXJlU3BhY2U7CiAg
ICAgSXNvU3Vic3BhY2Ugd2Vha1NldFNwYWNlOwpJbmRleDogU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjMw
NzIzKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMg
KzEsMjAgQEAKKzIwMTgtMDQtMTcgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KKwor
ICAgICAgICBUaGUgSW50ZXJuYWxGdW5jdGlvbiBoaWVyYXJjaHkgc2hvdWxkIGJlIGluIElzb1N1
YnNwYWNlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTg0NzIxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
Tm8gbmV3IHRlc3RzIGJlY2F1c2Ugbm8gbmV3IGJlaGF2aW9yLgorCisgICAgICAgICogYmluZGlu
Z3MvanMvV2ViQ29yZUpTQ2xpZW50RGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1ZNQ2xp
ZW50RGF0YTo6SlNWTUNsaWVudERhdGEpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1dlYkNvcmVK
U0NsaWVudERhdGEuaDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVk1DbGllbnREYXRhOjpydW50aW1l
TWV0aG9kU3BhY2UpOgorICAgICAgICAqIGJyaWRnZS9ydW50aW1lX21ldGhvZC5jcHA6CisgICAg
ICAgIChKU0M6OlJ1bnRpbWVNZXRob2Q6OnN1YnNwYWNlRm9ySW1wbCk6CisgICAgICAgICogYnJp
ZGdlL3J1bnRpbWVfbWV0aG9kLmg6CisKIDIwMTgtMDQtMTcgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KIAogICAgICAgICBSRUdSRVNTSU9OIChyMjI5ODMxKTogQ01ELWNsaWNraW5n
IGFuIGlDbG91ZCB3ZWIgYXBwIGxpbmsgdW5leHBlY3RlZGx5IG9wZW5zIHRoYXQgbGluayBpbiBh
IG5ldyB0YWIgYW5kIHRoZSBjdXJyZW50IHRhYgpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvV2ViQ29yZUpTQ2xpZW50RGF0YS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvV2ViQ29yZUpTQ2xpZW50RGF0YS5jcHAJKHJldmlzaW9uIDIzMDcyMykK
KysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dlYkNvcmVKU0NsaWVudERhdGEuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0zNSw2ICszNSw3IEBACiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUv
TWFya2luZ0NvbnN0cmFpbnQuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TdWJzcGFjZUlu
bGluZXMuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9WTS5oPgorI2luY2x1ZGUgInJ1bnRp
bWVfbWV0aG9kLmgiCiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KIAogbmFtZXNwYWNlIFdl
YkNvcmUgewpAQCAtNDMsNiArNDQsNyBAQCB1c2luZyBuYW1lc3BhY2UgSlNDOwogSlNWTUNsaWVu
dERhdGE6OkpTVk1DbGllbnREYXRhKFZNJiB2bSkKICAgICA6IG1fYnVpbHRpbkZ1bmN0aW9ucyh2
bSkKICAgICAsIG1fYnVpbHRpbk5hbWVzKCZ2bSkKKyAgICAsIG1fcnVudGltZU1ldGhvZFNwYWNl
IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxs
VHlwZS5nZXQoKSwgUnVudGltZU1ldGhvZCkKICAgICAsIG1fb3V0cHV0Q29uc3RyYWludFNwYWNl
KCJXZWJDb3JlIFdyYXBwZXIgdy8gT3V0cHV0IENvbnN0cmFpbnQiLCB2bS5oZWFwLCB2bS5kZXN0
cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuZ2V0KCksIHZtLmZhc3RNYWxsb2NBbGxvY2F0b3Iu
Z2V0KCkpCiAgICAgLCBtX2dsb2JhbE9iamVjdE91dHB1dENvbnN0cmFpbnRTcGFjZSgiV2ViQ29y
ZSBHbG9iYWwgT2JqZWN0IHcvIE91dHB1dCBDb25zdHJhaW50Iiwgdm0uaGVhcCwgdm0uc2VnbWVu
dGVkVmFyaWFibGVPYmplY3RIZWFwQ2VsbFR5cGUuZ2V0KCksIHZtLmZhc3RNYWxsb2NBbGxvY2F0
b3IuZ2V0KCkpCiB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9XZWJDb3JlSlND
bGllbnREYXRhLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV2Vi
Q29yZUpTQ2xpZW50RGF0YS5oCShyZXZpc2lvbiAyMzA3MjMpCisrKyBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9XZWJDb3JlSlNDbGllbnREYXRhLmgJKHdvcmtpbmcgY29weSkKQEAgLTU5LDYg
KzU5LDggQEAgcHVibGljOgogICAgIFdlYkNvcmVCdWlsdGluTmFtZXMmIGJ1aWx0aW5OYW1lcygp
IHsgcmV0dXJuIG1fYnVpbHRpbk5hbWVzOyB9CiAgICAgSlNCdWlsdGluRnVuY3Rpb25zJiBidWls
dGluRnVuY3Rpb25zKCkgeyByZXR1cm4gbV9idWlsdGluRnVuY3Rpb25zOyB9CiAgICAgCisgICAg
SlNDOjpJc29TdWJzcGFjZSYgcnVudGltZU1ldGhvZFNwYWNlKCkgeyByZXR1cm4gbV9ydW50aW1l
TWV0aG9kU3BhY2U7IH0KKyAgICAKICAgICBKU0M6OkNvbXBsZXRlU3Vic3BhY2UmIG91dHB1dENv
bnN0cmFpbnRTcGFjZSgpIHsgcmV0dXJuIG1fb3V0cHV0Q29uc3RyYWludFNwYWNlOyB9CiAgICAg
SlNDOjpDb21wbGV0ZVN1YnNwYWNlJiBnbG9iYWxPYmplY3RPdXRwdXRDb25zdHJhaW50U3BhY2Uo
KSB7IHJldHVybiBtX2dsb2JhbE9iamVjdE91dHB1dENvbnN0cmFpbnRTcGFjZTsgfQogICAgIApA
QCAtNzYsNiArNzgsOCBAQCBwcml2YXRlOgogICAgIEpTQnVpbHRpbkZ1bmN0aW9ucyBtX2J1aWx0
aW5GdW5jdGlvbnM7CiAgICAgV2ViQ29yZUJ1aWx0aW5OYW1lcyBtX2J1aWx0aW5OYW1lczsKICAg
ICAKKyAgICBKU0M6Oklzb1N1YnNwYWNlIG1fcnVudGltZU1ldGhvZFNwYWNlOworICAgIAogICAg
IEpTQzo6Q29tcGxldGVTdWJzcGFjZSBtX291dHB1dENvbnN0cmFpbnRTcGFjZTsKICAgICBKU0M6
OkNvbXBsZXRlU3Vic3BhY2UgbV9nbG9iYWxPYmplY3RPdXRwdXRDb25zdHJhaW50U3BhY2U7CiB9
OwpJbmRleDogU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfbWV0aG9kLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9tZXRob2QuY3BwCShyZXZpc2lv
biAyMzA3MjMpCisrKyBTb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9tZXRob2QuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwMywg
MjAwOCwgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMDMtMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJKU0RPTUJp
bmRpbmcuaCIKICNpbmNsdWRlICJKU0hUTUxFbGVtZW50LmgiCiAjaW5jbHVkZSAiSlNQbHVnaW5F
bGVtZW50RnVuY3Rpb25zLmgiCisjaW5jbHVkZSAiV2ViQ29yZUpTQ2xpZW50RGF0YS5oIgogI2lu
Y2x1ZGUgInJ1bnRpbWVfb2JqZWN0LmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRXJyb3Iu
aD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9GdW5jdGlvblByb3RvdHlwZS5oPgpAQCAtNzks
NiArODAsMTEgQEAgYm9vbCBSdW50aW1lTWV0aG9kOjpnZXRPd25Qcm9wZXJ0eVNsb3QoSgogICAg
IHJldHVybiBJbnRlcm5hbEZ1bmN0aW9uOjpnZXRPd25Qcm9wZXJ0eVNsb3QodGhpc09iamVjdCwg
ZXhlYywgcHJvcGVydHlOYW1lLCBzbG90KTsKIH0KIAorSXNvU3Vic3BhY2UqIFJ1bnRpbWVNZXRo
b2Q6OnN1YnNwYWNlRm9ySW1wbChWTSYgdm0pCit7CisgICAgcmV0dXJuICZzdGF0aWNfY2FzdDxK
U1ZNQ2xpZW50RGF0YSo+KHZtLmNsaWVudERhdGEpLT5ydW50aW1lTWV0aG9kU3BhY2UoKTsKK30K
Kwogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbFJ1bnRpbWVNZXRob2Qo
RXhlY1N0YXRlKiBleGVjKQogewogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9tZXRob2QuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9icmlkZ2UvcnVudGltZV9tZXRob2QuaAkocmV2aXNpb24gMjMwNzIzKQorKysgU291
cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfbWV0aG9kLmgJKHdvcmtpbmcgY29weSkKQEAgLTEs
NSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA4IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwMy0yMDE4IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAt
MzcsNiArMzcsMTMgQEAgcHVibGljOgogICAgIHR5cGVkZWYgSW50ZXJuYWxGdW5jdGlvbiBCYXNl
OwogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVj
dHVyZUZsYWdzIHwgT3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90IHwgVHlwZU9mU2hvdWxkQ2Fs
bEdldENhbGxEYXRhOwogCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGU+CisgICAgc3Rh
dGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCisgICAgeworICAgICAgICBzdGF0
aWNfYXNzZXJ0KHNpemVvZihDZWxsVHlwZSkgPT0gc2l6ZW9mKFJ1bnRpbWVNZXRob2QpLCAiUnVu
dGltZU1ldGhvZCBzdWJjbGFzc2VzIHRoYXQgYWRkIGZpZWxkcyBuZWVkIHRvIG92ZXJyaWRlIHN1
YnNwYWNlRm9yPD4oKSIpOworICAgICAgICByZXR1cm4gc3Vic3BhY2VGb3JJbXBsKHZtKTsKKyAg
ICB9CisgICAgCiAgICAgc3RhdGljIFJ1bnRpbWVNZXRob2QqIGNyZWF0ZShFeGVjU3RhdGUqLCBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgY29uc3Qg
U3RyaW5nJiBuYW1lLCBCaW5kaW5nczo6TWV0aG9kKiBtZXRob2QpCiAgICAgewogICAgICAgICBW
TSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CkBAIC02OCw2ICs3NSw4IEBAIHByb3RlY3RlZDoK
IHByaXZhdGU6CiAgICAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIGxlbmd0aEdldHRlcihFeGVjU3Rh
dGUqLCBFbmNvZGVkSlNWYWx1ZSwgUHJvcGVydHlOYW1lKTsKIAorICAgIHN0YXRpYyBJc29TdWJz
cGFjZSogc3Vic3BhY2VGb3JJbXBsKFZNJik7CisKICAgICBCaW5kaW5nczo6TWV0aG9kKiBtX21l
dGhvZDsKIH07CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMzA3MjMpCisrKyBTb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIzIEBACisyMDE4LTA0LTE3
ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAgVGhlIEludGVybmFs
RnVuY3Rpb24gaGllcmFyY2h5IHNob3VsZCBiZSBpbiBJc29TdWJzcGFjZXMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4NDcyMQorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5z
L05ldHNjYXBlL0pTTlBNZXRob2QuY3BwOgorICAgICAgICAoV2ViS2l0OjpKU05QTWV0aG9kOjpz
dWJzcGFjZUZvckltcGwpOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9K
U05QTWV0aG9kLmg6CisgICAgICAgIChXZWJLaXQ6OkpTTlBNZXRob2Q6OmNyZWF0ZSk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJLaXQ6OkpTTlBNZXRob2Q6Om5wSWRlbnRpZmllciBjb25zdCk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OkpTTlBNZXRob2Q6OmNyZWF0ZVN0cnVjdHVyZSk6IERl
bGV0ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL0pTTlBPYmplY3Qu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpKU05QT2JqZWN0OjpzdWJzcGFjZUZvckltcGwpOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9KU05QT2JqZWN0Lmg6CisgICAgICAg
IChXZWJLaXQ6OkpTTlBPYmplY3Q6OmNyZWF0ZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6
OkpTTlBPYmplY3Q6Om5wT2JqZWN0IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6
SlNOUE9iamVjdDo6Y3JlYXRlU3RydWN0dXJlKTogRGVsZXRlZC4KKwogMjAxOC0wNC0xNyAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFJFR1JFU1NJT04gKHIyMjk4
MzEpOiBDTUQtY2xpY2tpbmcgYW4gaUNsb3VkIHdlYiBhcHAgbGluayB1bmV4cGVjdGVkbHkgb3Bl
bnMgdGhhdCBsaW5rIGluIGEgbmV3IHRhYiBhbmQgdGhlIGN1cnJlbnQgdGFiCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9KU05QTWV0aG9kLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9KU05Q
TWV0aG9kLmNwcAkocmV2aXNpb24gMjMwNzIzKQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1BsdWdpbnMvTmV0c2NhcGUvSlNOUE1ldGhvZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSAr
MSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEwLCAyMDE2IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMC0yMDE4IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzEs
NiArMzEsOCBAQAogI2luY2x1ZGUgIkpTTlBPYmplY3QuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0
Q29yZS9FcnJvci5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Z1bmN0aW9uUHJvdG90eXBl
Lmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSXNvU3Vic3BhY2VQZXJWTS5oPgorI2luY2x1
ZGUgPEphdmFTY3JpcHRDb3JlL0pTRGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmg+CiAj
aW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNHbG9iYWxPYmplY3QuaD4KICNpbmNsdWRlIDxKYXZh
U2NyaXB0Q29yZS9KU09iamVjdC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSlNIVE1MRWxlbWVudC5o
PgpAQCAtNTksNiArNjEsMTIgQEAgdm9pZCBKU05QTWV0aG9kOjpmaW5pc2hDcmVhdGlvbihWTSYg
dm0sIAogICAgIEFTU0VSVChpbmhlcml0cyh2bSwgaW5mbygpKSk7CiB9CiAKK0lzb1N1YnNwYWNl
KiBKU05QTWV0aG9kOjpzdWJzcGFjZUZvckltcGwoVk0mIHZtKQoreworICAgIHN0YXRpYyBOZXZl
ckRlc3Ryb3llZDxJc29TdWJzcGFjZVBlclZNPiBwZXJWTShbXSAoVk0mIHZtKSB7IHJldHVybiBJ
U09fU1VCU1BBQ0VfUEFSQU1FVEVSUyh2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUu
Z2V0KCksIEpTTlBNZXRob2QpOyB9KTsKKyAgICByZXR1cm4gJnBlclZNLmdldCgpLmZvclZNKHZt
KTsKK30KKwogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbE1ldGhvZChF
eGVjU3RhdGUqIGV4ZWMpCiB7CiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL0pTTlBNZXRob2QuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9KU05QTWV0
aG9kLmgJKHJldmlzaW9uIDIzMDcyMykKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVn
aW5zL05ldHNjYXBlL0pTTlBNZXRob2QuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAK
IC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDEwLTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zNywxMCArMzcsMTYgQEAg
dHlwZWRlZiB2b2lkKiBOUElkZW50aWZpZXI7CiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogLy8gQSBK
U09iamVjdCB0aGF0IHdyYXBzIGFuIE5QTWV0aG9kLgotY2xhc3MgSlNOUE1ldGhvZCA6IHB1Ymxp
YyBKU0M6OkludGVybmFsRnVuY3Rpb24geworY2xhc3MgSlNOUE1ldGhvZCBmaW5hbCA6IHB1Ymxp
YyBKU0M6OkludGVybmFsRnVuY3Rpb24gewogcHVibGljOgogICAgIHR5cGVkZWYgSlNDOjpJbnRl
cm5hbEZ1bmN0aW9uIEJhc2U7CiAKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZT4KKyAg
ICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCisgICAg
eworICAgICAgICByZXR1cm4gc3Vic3BhY2VGb3JJbXBsKHZtKTsKKyAgICB9CisKICAgICBzdGF0
aWMgSlNOUE1ldGhvZCogY3JlYXRlKEpTQzo6RXhlY1N0YXRlKiBleGVjLCBKU0M6OkpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IFN0cmluZyYgbmFtZSwgTlBJZGVudGlmaWVyIG5w
SWRlbnQpCiAgICAgewogICAgICAgICBKU0M6OlZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsK
QEAgLTU3LDcgKzYzLDkgQEAgcHVibGljOgogcHJvdGVjdGVkOgogICAgIHZvaWQgZmluaXNoQ3Jl
YXRpb24oSlNDOjpWTSYsIGNvbnN0IFN0cmluZyYgbmFtZSk7CiAKLXByaXZhdGU6ICAgIAorcHJp
dmF0ZToKKyAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3JJbXBsKEpTQzo6
Vk0mKTsKKyAgICAKICAgICBKU05QTWV0aG9kKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OlN0
cnVjdHVyZSosIE5QSWRlbnRpZmllcik7CiAKICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNy
ZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1BsdWdpbnMvTmV0c2NhcGUvSlNOUE9iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvSlNOUE9iamVjdC5jcHAJKHJldmlz
aW9uIDIzMDcyMykKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBl
L0pTTlBPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxMCwgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM1LDYgKzM1LDggQEAKICNpbmNs
dWRlIDxKYXZhU2NyaXB0Q29yZS9BdXhpbGlhcnlCYXJyaWVySW5saW5lcy5oPgogI2luY2x1ZGUg
PEphdmFTY3JpcHRDb3JlL0Vycm9yLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSWRlbnRp
ZmllcklubGluZXMuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9Jc29TdWJzcGFjZVBlclZN
Lmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNEZXN0cnVjdGlibGVPYmplY3RIZWFwQ2Vs
bFR5cGUuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0dsb2JhbE9iamVjdC5oPgogI2lu
Y2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTTG9jay5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3Jl
L09iamVjdFByb3RvdHlwZS5oPgpAQCAtNTI3LDYgKzUyOSwxMiBAQCBKU09iamVjdCogSlNOUE9i
amVjdDo6dGhyb3dJbnZhbGlkQWNjZXNzCiAgICAgcmV0dXJuIHRocm93RXhjZXB0aW9uKGV4ZWMs
IHNjb3BlLCBjcmVhdGVSZWZlcmVuY2VFcnJvcihleGVjLCAiVHJ5aW5nIHRvIGFjY2VzcyBvYmpl
Y3QgZnJvbSBkZXN0cm95ZWQgcGx1Zy1pbi4iKSk7CiB9CiAKK0lzb1N1YnNwYWNlKiBKU05QT2Jq
ZWN0OjpzdWJzcGFjZUZvckltcGwoVk0mIHZtKQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3ll
ZDxJc29TdWJzcGFjZVBlclZNPiBwZXJWTShbXSAoVk0mIHZtKSB7IHJldHVybiBJU09fU1VCU1BB
Q0VfUEFSQU1FVEVSUyh2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuZ2V0KCksIEpT
TlBPYmplY3QpOyB9KTsKKyAgICByZXR1cm4gJnBlclZNLmdldCgpLmZvclZNKHZtKTsKK30KKwog
fSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICNlbmRpZiAvLyBFTkFCTEUoTkVUU0NBUEVfUExVR0lO
X0FQSSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL0pT
TlBPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lu
cy9OZXRzY2FwZS9KU05QT2JqZWN0LmgJKHJldmlzaW9uIDIzMDcyMykKKysrIFNvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL0pTTlBPYmplY3QuaAkod29ya2luZyBjb3B5
KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEwLTIwMTggQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBA
IC00MSwxMSArNDEsMTcgQEAgY2xhc3MgTlBSdW50aW1lT2JqZWN0TWFwOwogICAgIAogLy8gSlNO
UE9iamVjdCBpcyBhIEpTT2JqZWN0IHRoYXQgd3JhcHMgYW4gTlBPYmplY3QuCiAKLWNsYXNzIEpT
TlBPYmplY3QgOiBwdWJsaWMgSlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCB7CitjbGFzcyBKU05Q
T2JqZWN0IGZpbmFsIDogcHVibGljIEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QgewogcHVibGlj
OgogICAgIHR5cGVkZWYgSlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCBCYXNlOwogICAgIHN0YXRp
YyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwg
SlNDOjpPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QgfCBKU0M6Ok92ZXJyaWRlc0dldFByb3Bl
cnR5TmFtZXMgfCBKU0M6OlR5cGVPZlNob3VsZENhbGxHZXRDYWxsRGF0YTsKIAorICAgIHRlbXBs
YXRlPHR5cGVuYW1lIENlbGxUeXBlPgorICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJz
cGFjZUZvcihKU0M6OlZNJiB2bSkKKyAgICB7CisgICAgICAgIHJldHVybiBzdWJzcGFjZUZvcklt
cGwodm0pOworICAgIH0KKwogICAgIHN0YXRpYyBKU05QT2JqZWN0KiBjcmVhdGUoSlNDOjpKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBOUFJ1bnRpbWVPYmplY3RNYXAqIG9iamVjdE1hcCwg
TlBPYmplY3QqIG5wT2JqZWN0KQogICAgIHsKICAgICAgICAgSlNDOjpTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSA9IGNyZWF0ZVN0cnVjdHVyZShnbG9iYWxPYmplY3QtPnZtKCksIGdsb2JhbE9iamVjdCwg
Z2xvYmFsT2JqZWN0LT5vYmplY3RQcm90b3R5cGUoKSk7CkBAIC03NCw2ICs4MCw4IEBAIHByb3Rl
Y3RlZDoKICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKIAog
cHJpdmF0ZToKKyAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3JJbXBsKEpT
Qzo6Vk0mKTsKKyAgICAKICAgICBKU05QT2JqZWN0KEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6
OlN0cnVjdHVyZSosIE5QUnVudGltZU9iamVjdE1hcCosIE5QT2JqZWN0Kik7CiAgICAgCiAgICAg
c3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>338184</attachid>
            <date>2018-04-17 19:24:47 -0700</date>
            <delta_ts>2018-04-17 19:52:02 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>48562</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjMwNzQxKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ2IEBA
CisyMDE4LTA0LTE3ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
VGhlIEludGVybmFsRnVuY3Rpb24gaGllcmFyY2h5IHNob3VsZCBiZSBpbiBJc29TdWJzcGFjZXMK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4NDcyMQor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAgICAKKyAgICAgICAg
VGhpcyBtb3ZlcyBJbnRlcm5hbEZ1bmN0aW9uIGludG8gYSBJc29TdWJzcGFjZS4gSXQgYWxzbyBt
b3ZlcyBhbGwgc3ViY2xhc3NlcyBpbnRvIElzb1N1YnNwYWNlcywKKyAgICAgICAgYnV0IHN1YmNs
YXNzZXMgdGhhdCBhcmUgdGhlIHNhbWUgc2l6ZSBhcyBJbnRlcm5hbEZ1bmN0aW9uIHNoYXJlIGl0
cyBzdWJzcGFjZS4gSSBkaWQgdGhpcworICAgICAgICBiZWNhdXNlIHRoZSBzdWJjbGFzc2VzIGFw
cGVhciB0byBqdXN0IG92ZXJyaWRlIG1ldGhvZHMsIHdoaWNoIGFyZSBjYWxsZWQgZHluYW1pY2Fs
bHkgdmlhIHRoZQorICAgICAgICBzdHJ1Y3R1cmUgb3IgY2xhc3Mgb2YgdGhlIG9iamVjdC4gU28s
IEkgZG9uJ3Qgc2VlIGEgdHlwZSBjb25mdXNpb24gcmlzayBpZiBVQUYgaXMgdXNlZCB0bworICAg
ICAgICBhbGxvY2F0ZSBvbmUga2luZCBvZiBJbnRlcm5hbEZ1bmN0aW9uIG92ZXIgYW5vdGhlci4K
KworICAgICAgICAqIEFQSS9KU0Jhc2UuaDoKKyAgICAgICAgKiBBUEkvSlNDYWxsYmFja0Z1bmN0
aW9uLmg6CisgICAgICAgICogQVBJL09iakNDYWxsYmFja0Z1bmN0aW9uLmg6CisgICAgICAgIChK
U0M6Ok9iakNDYWxsYmFja0Z1bmN0aW9uOjpzdWJzcGFjZUZvcik6CisgICAgICAgICogQ01ha2VM
aXN0cy50eHQ6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvajoKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBoZWFwL0lzb1N1YnNwYWNl
UGVyVk0uY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6SXNvU3Vic3BhY2VQZXJWTTo6QXV0b3Jl
bW92aW5nSXNvU3Vic3BhY2U6OkF1dG9yZW1vdmluZ0lzb1N1YnNwYWNlKToKKyAgICAgICAgKEpT
Qzo6SXNvU3Vic3BhY2VQZXJWTTo6QXV0b3JlbW92aW5nSXNvU3Vic3BhY2U6On5BdXRvcmVtb3Zp
bmdJc29TdWJzcGFjZSk6CisgICAgICAgIChKU0M6Oklzb1N1YnNwYWNlUGVyVk06Oklzb1N1YnNw
YWNlUGVyVk0pOgorICAgICAgICAoSlNDOjpJc29TdWJzcGFjZVBlclZNOjp+SXNvU3Vic3BhY2VQ
ZXJWTSk6CisgICAgICAgIChKU0M6Oklzb1N1YnNwYWNlUGVyVk06OmZvclZNKToKKyAgICAgICAg
KiBoZWFwL0lzb1N1YnNwYWNlUGVyVk0uaDogQWRkZWQuCisgICAgICAgIChKU0M6Oklzb1N1YnNw
YWNlUGVyVk06OlN1YnNwYWNlUGFyYW1ldGVyczo6U3Vic3BhY2VQYXJhbWV0ZXJzKToKKyAgICAg
ICAgKiBydW50aW1lL0Vycm9yLmg6CisgICAgICAgICogcnVudGltZS9FcnJvckNvbnN0cnVjdG9y
Lmg6CisgICAgICAgICogcnVudGltZS9JbnRlcm5hbEZ1bmN0aW9uLmg6CisgICAgICAgIChKU0M6
OkludGVybmFsRnVuY3Rpb246OnN1YnNwYWNlRm9yKToKKyAgICAgICAgKiBydW50aW1lL0ludGxD
b2xsYXRvckNvbnN0cnVjdG9yLmg6CisgICAgICAgICogcnVudGltZS9JbnRsRGF0ZVRpbWVGb3Jt
YXRDb25zdHJ1Y3Rvci5oOgorICAgICAgICAqIHJ1bnRpbWUvSW50bE51bWJlckZvcm1hdENvbnN0
cnVjdG9yLmg6CisgICAgICAgICogcnVudGltZS9KU0FycmF5QnVmZmVyQ29uc3RydWN0b3IuaDoK
KyAgICAgICAgKiBydW50aW1lL05hdGl2ZUVycm9yQ29uc3RydWN0b3IuaDoKKyAgICAgICAgKiBy
dW50aW1lL1Byb3h5UmV2b2tlLmg6CisgICAgICAgICogcnVudGltZS9SZWdFeHBDb25zdHJ1Y3Rv
ci5oOgorICAgICAgICAqIHJ1bnRpbWUvVk0uY3BwOgorICAgICAgICAoSlNDOjpWTTo6Vk0pOgor
ICAgICAgICAqIHJ1bnRpbWUvVk0uaDoKKwogMjAxOC0wNC0xNyAgQ29tbWl0IFF1ZXVlICA8Y29t
bWl0LXF1ZXVlQHdlYmtpdC5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQg
cjIzMDY5NywgcjIzMDcyMCwgYW5kIHIyMzA3MjQuCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ01ha2VMaXN0cy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0NN
YWtlTGlzdHMudHh0CShyZXZpc2lvbiAyMzA3MjMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Q01ha2VMaXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTUzMSw2ICs1MzEsNyBAQCBzZXQoSmF2
YVNjcmlwdENvcmVfUFJJVkFURV9GUkFNRVdPUktfSEVBCiAgICAgaGVhcC9JbmNyZW1lbnRhbFN3
ZWVwZXIuaAogICAgIGhlYXAvSXNvQ2VsbFNldC5oCiAgICAgaGVhcC9Jc29TdWJzcGFjZS5oCisg
ICAgaGVhcC9Jc29TdWJzcGFjZVBlclZNLmgKICAgICBoZWFwL0xhcmdlQWxsb2NhdGlvbi5oCiAg
ICAgaGVhcC9MaXN0YWJsZUhhbmRsZXIuaAogICAgIGhlYXAvTG9jYWxBbGxvY2F0b3IuaApJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0Cj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dAkocmV2aXNpb24gMjMwNzIzKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC01MDIsNiArNTAy
LDcgQEAgaGVhcC9JbmNyZW1lbnRhbFN3ZWVwZXIuY3BwCiBoZWFwL0lzb0FsaWduZWRNZW1vcnlB
bGxvY2F0b3IuY3BwCiBoZWFwL0lzb0NlbGxTZXQuY3BwCiBoZWFwL0lzb1N1YnNwYWNlLmNwcAor
aGVhcC9Jc29TdWJzcGFjZVBlclZNLmNwcAogaGVhcC9KSVRTdHViUm91dGluZVNldC5jcHAKIGhl
YXAvTGFyZ2VBbGxvY2F0aW9uLmNwcAogaGVhcC9Mb2NhbEFsbG9jYXRvci5jcHAKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNCYXNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL0FQSS9KU0Jhc2UuaAkocmV2aXNpb24gMjMwNzIzKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL0FQSS9KU0Jhc2UuaAkod29ya2luZyBjb3B5KQpAQCAtMTQzLDcgKzE0Myw3
IEBAIEpTX0VYUE9SVCB2b2lkIEpTR2FyYmFnZUNvbGxlY3QoSlNDb250ZXgKIH0KICNlbmRpZgog
Ci0vKiBFbmFibGUgdGhlIE9iamVjdGl2ZS1DIEFQSSBmb3IgcGxhdGZvcm1zIHdpdGggYSBtb2Rl
cm4gcnVudGltZS4gKi8KKy8qIEVuYWJsZSB0aGUgT2JqZWN0aXZlLUMgQVBJIGZvciBwbGF0Zm9y
bXMgd2l0aCBhIG1vZGVybiBydW50aW1lLiBOT1RFOiBUaGlzIGlzIGR1cGxpY2F0ZWQgaW4gVk0u
aC4gKi8KICNpZiAhZGVmaW5lZChKU0NfT0JKQ19BUElfRU5BQkxFRCkKICNpZiAoZGVmaW5lZChf
X2NsYW5nX18pICYmIGRlZmluZWQoX19BUFBMRV9fKSAmJiAoKGRlZmluZWQoX19NQUNfT1NfWF9W
RVJTSU9OX01JTl9SRVFVSVJFRCkgJiYgIWRlZmluZWQoX19pMzg2X18pKSB8fCAoZGVmaW5lZChU
QVJHRVRfT1NfSVBIT05FKSAmJiBUQVJHRVRfT1NfSVBIT05FKSkpCiAjZGVmaW5lIEpTQ19PQkpD
X0FQSV9FTkFCTEVEIDEKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFj
a0Z1bmN0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0Nh
bGxiYWNrRnVuY3Rpb24uaAkocmV2aXNpb24gMjMwNzIzKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL0FQSS9KU0NhbGxiYWNrRnVuY3Rpb24uaAkod29ya2luZyBjb3B5KQpAQCAtMzcsNiArMzcs
MTIgQEAgY2xhc3MgSlNDYWxsYmFja0Z1bmN0aW9uIGZpbmFsIDogcHVibGljIAogcHVibGljOgog
ICAgIHR5cGVkZWYgSW50ZXJuYWxGdW5jdGlvbiBCYXNlOwogCisgICAgdGVtcGxhdGU8dHlwZW5h
bWUgQ2VsbFR5cGU+CisgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0p
CisgICAgeworICAgICAgICByZXR1cm4gJnZtLmNhbGxiYWNrRnVuY3Rpb25TcGFjZTsKKyAgICB9
CisKICAgICBzdGF0aWMgSlNDYWxsYmFja0Z1bmN0aW9uKiBjcmVhdGUoVk0mLCBKU0dsb2JhbE9i
amVjdCosIEpTT2JqZWN0Q2FsbEFzRnVuY3Rpb25DYWxsYmFjaywgY29uc3QgU3RyaW5nJiBuYW1l
KTsKIAogICAgIERFQ0xBUkVfSU5GTzsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkv
T2JqQ0NhbGxiYWNrRnVuY3Rpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvQVBJL09iakNDYWxsYmFja0Z1bmN0aW9uLmgJKHJldmlzaW9uIDIzMDcyMykKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9BUEkvT2JqQ0NhbGxiYWNrRnVuY3Rpb24uaAkod29ya2luZyBjb3B5
KQpAQCAtNDgsNiArNDgsMTIgQEAgY2xhc3MgT2JqQ0NhbGxiYWNrRnVuY3Rpb24gOiBwdWJsaWMg
SW50ZQogcHVibGljOgogICAgIHR5cGVkZWYgSW50ZXJuYWxGdW5jdGlvbiBCYXNlOwogCisgICAg
dGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGU+CisgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJz
cGFjZUZvcihWTSYgdm0pCisgICAgeworICAgICAgICByZXR1cm4gJnZtLm9iakNDYWxsYmFja0Z1
bmN0aW9uU3BhY2U7CisgICAgfQorCiAgICAgc3RhdGljIE9iakNDYWxsYmFja0Z1bmN0aW9uKiBj
cmVhdGUoVk0mLCBKU0dsb2JhbE9iamVjdCosIGNvbnN0IFN0cmluZyYgbmFtZSwgc3RkOjp1bmlx
dWVfcHRyPE9iakNDYWxsYmFja0Z1bmN0aW9uSW1wbD4pOwogICAgIHN0YXRpYyB2b2lkIGRlc3Ry
b3koSlNDZWxsKik7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvZ2xpYi9KU0ND
YWxsYmFja0Z1bmN0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
QVBJL2dsaWIvSlNDQ2FsbGJhY2tGdW5jdGlvbi5jcHAJKHJldmlzaW9uIDIzMDcyMykKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvZ2xpYi9KU0NDYWxsYmFja0Z1bmN0aW9uLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMSw2ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTggSWdh
bGlhIFMuTC4KLSAqIENvcHlyaWdodCAoQykgMjAwNiwgMjAwOCwgMjAxNiBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYtMjAxOCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAg
LTI5LDYgKzI5LDcgQEAKIAogI2luY2x1ZGUgIkFQSUNhbGxiYWNrRnVuY3Rpb24uaCIKICNpbmNs
dWRlICJBUElDYXN0LmgiCisjaW5jbHVkZSAiSXNvU3Vic3BhY2VQZXJWTS5oIgogI2luY2x1ZGUg
IkpTQ0NsYXNzUHJpdmF0ZS5oIgogI2luY2x1ZGUgIkpTQ0NvbnRleHRQcml2YXRlLmgiCiAjaW5j
bHVkZSAiSlNDRXhjZXB0aW9uUHJpdmF0ZS5oIgpAQCAtMjA2LDQgKzIwNywxMCBAQCB2b2lkIEpT
Q0NhbGxiYWNrRnVuY3Rpb246OmRlc3Ryb3koSlNDZWxsCiAgICAgc3RhdGljX2Nhc3Q8SlNDQ2Fs
bGJhY2tGdW5jdGlvbio+KGNlbGwpLT5KU0NDYWxsYmFja0Z1bmN0aW9uOjp+SlNDQ2FsbGJhY2tG
dW5jdGlvbigpOwogfQogCitJc29TdWJzcGFjZSogSlNDQ2FsbGJhY2tGdW5jdGlvbjo6c3Vic3Bh
Y2VGb3JJbXBsKFZNJiB2bSkKK3sKKyAgICBOZXZlckRlc3Ryb3llZDxJc29TdWJzcGFjZVBlclZN
PiBwZXJWTShbXSAoVk0mIHZtKSAtPiBJc29TdWJzcGFjZVBlclZNOjpTdWJzcGFjZVBhcmFtZXRl
cnMgeyByZXR1cm4gSVNPX1NVQlNQQUNFX1BBUkFNRVRFUlModm0uZGVzdHJ1Y3RpYmxlT2JqZWN0
SGVhcENlbGxUeXBlLmdldCgpLCBKU0NDYWxsYmFja0Z1bmN0aW9uKTsgfSk7CisgICAgcmV0dXJu
IHBlclZNLmdldCgpLmZvclZNKHZtKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL2dsaWIvSlNDQ2FsbGJhY2tGdW5jdGlvbi5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvZ2xpYi9KU0NDYWxsYmFja0Z1bmN0
aW9uLmgJKHJldmlzaW9uIDIzMDcyMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvZ2xp
Yi9KU0NDYWxsYmFja0Z1bmN0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTQwLDYgKzQwLDEyIEBA
IGNsYXNzIEpTQ0NhbGxiYWNrRnVuY3Rpb24gOiBwdWJsaWMgSW50ZXIKIHB1YmxpYzoKICAgICB0
eXBlZGVmIEludGVybmFsRnVuY3Rpb24gQmFzZTsKIAorICAgIHRlbXBsYXRlPHR5cGVuYW1lIENl
bGxUeXBlPgorICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQorICAg
IHsKKyAgICAgICAgcmV0dXJuIHN1YnNwYWNlRm9ySW1wbCh2bSk7CisgICAgfQorCiAgICAgZW51
bSBjbGFzcyBUeXBlIHsKICAgICAgICAgRnVuY3Rpb24sCiAgICAgICAgIE1ldGhvZCwKQEAgLTYx
LDYgKzY3LDggQEAgcHVibGljOgogICAgIEpTT2JqZWN0UmVmIGNvbnN0cnVjdChKU0NvbnRleHRS
ZWYsIHNpemVfdCBhcmd1bWVudENvdW50LCBjb25zdCBKU1ZhbHVlUmVmIGFyZ3VtZW50c1tdLCBK
U1ZhbHVlUmVmKiBleGNlcHRpb24pOwogCiBwcml2YXRlOgorICAgIHN0YXRpYyBJc29TdWJzcGFj
ZSogc3Vic3BhY2VGb3JJbXBsKFZNJik7CisgICAgCiAgICAgSlNDQ2FsbGJhY2tGdW5jdGlvbihW
TSYsIFN0cnVjdHVyZSosIFR5cGUsIEpTQ0NsYXNzKiwgR1JlZlB0cjxHQ2xvc3VyZT4mJiwgR1R5
cGUsIFZlY3RvcjxHVHlwZT4mJik7CiAKICAgICBKU09iamVjdENhbGxBc0Z1bmN0aW9uQ2FsbGJh
Y2sgZnVuY3Rpb25DYWxsYmFjaygpIHsgcmV0dXJuIG1fZnVuY3Rpb25DYWxsYmFjazsgfQpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDIzMDcyMykKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CSh3b3JraW5nIGNvcHkpCkBAIC0zNDMsNiArMzQzLDcgQEAKIAkJMEY1Q0Y5ODQxRTlENTM3NzAw
QzE4NjkyIC8qIEFpckxvd2VyU3RhY2tBcmdzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwRjVDRjk4MzFFOUQ1Mzc1MDBDMTg2OTIgLyogQWlyTG93ZXJT
dGFja0FyZ3MuaCAqLzsgfTsKIAkJMEY1Q0Y5ODkxRTlFRDY1MjAwQzE4NjkyIC8qIEFpclN0YWNr
QWxsb2NhdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMEY1Q0Y5ODcxRTlFRDY0RTAwQzE4NjkyIC8qIEFpclN0YWNrQWxsb2NhdGlvbi5oICovOyB9
OwogCQkwRjVFMEZEODIwN0M3MjczMDA5N0YwREUgLyogREZHQWJzdHJhY3RJbnRlcnByZXRlckNs
b2JiZXJTdGF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMEY1RTBGRDYyMDdDNzI3MTAwOTdGMERFIC8qIERGR0Fic3RyYWN0SW50ZXJwcmV0ZXJDbG9i
YmVyU3RhdGUuaCAqLzsgfTsKKwkJMEY1RTBGRTcyMDg2QUQ0ODAwOTdGMERFIC8qIElzb1N1YnNw
YWNlUGVyVk0uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDBGNUUwRkU1MjA4NkFENDYwMDk3RjBERSAvKiBJc29TdWJzcGFjZVBlclZNLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEY1RUY5MUYxNjg3OEY3
RDAwM0U1QzI1IC8qIEpJVFRodW5rcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMEY1RUY5MUMxNjg3OEY3ODAwM0U1QzI1IC8qIEpJVFRodW5rcy5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGNUYwOENG
MTQ2Qzc2MzMwMDA0NzJBOSAvKiBVbmNvbmRpdGlvbmFsRmluYWxpemVyLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjVGMDhDRTE0NkM3NjJGMDAwNDcy
QTkgLyogVW5jb25kaXRpb25hbEZpbmFsaXplci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGNjBGRTkwMUZGQzM3MDIwMDAzMzIwQSAvKiBFeGVj
dXRhYmxlVG9Db2RlQmxvY2tFZGdlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAwRjYwRkU4RTFGRkMzNkZEMDAwMzMyMEEgLyogRXhlY3V0YWJsZVRvQ29k
ZUJsb2NrRWRnZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CkBAIC0yMzUwLDYgKzIzNTEsOCBAQAogCQkwRjVEMDg1QzFCOENGOTlEMDAxMTQzQjQgLyog
REZHTm9kZU9yaWdpbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBE
RkdOb2RlT3JpZ2luLmNwcDsgcGF0aCA9IGRmZy9ERkdOb2RlT3JpZ2luLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY1RTBGRDYyMDdDNzI3MTAwOTdGMERFIC8qIERGR0Fic3Ry
YWN0SW50ZXJwcmV0ZXJDbG9iYmVyU3RhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBu
YW1lID0gREZHQWJzdHJhY3RJbnRlcnByZXRlckNsb2JiZXJTdGF0ZS5oOyBwYXRoID0gZGZnL0RG
R0Fic3RyYWN0SW50ZXJwcmV0ZXJDbG9iYmVyU3RhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMEY1RTBGRDcyMDdDNzI3MTAwOTdGMERFIC8qIERGR0Fic3RyYWN0SW50ZXJwcmV0
ZXJDbG9iYmVyU3RhdGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0g
REZHQWJzdHJhY3RJbnRlcnByZXRlckNsb2JiZXJTdGF0ZS5jcHA7IHBhdGggPSBkZmcvREZHQWJz
dHJhY3RJbnRlcnByZXRlckNsb2JiZXJTdGF0ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTBGNUUwRkU1MjA4NkFENDYwMDk3RjBERSAvKiBJc29TdWJzcGFjZVBlclZNLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IElzb1N1YnNwYWNlUGVyVk0uaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY1RTBGRTYyMDg2QUQ0NzAwOTdGMERFIC8qIElzb1N1
YnNwYWNlUGVyVk0uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSXNv
U3Vic3BhY2VQZXJWTS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNUVGOTFC
MTY4NzhGNzgwMDNFNUMyNSAvKiBKSVRUaHVua3MuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gSklUVGh1bmtzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMEY1RUY5MUMxNjg3OEY3ODAwM0U1QzI1IC8qIEpJVFRodW5rcy5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBKSVRUaHVua3MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMEY1RjA4Q0UxNDZDNzYyRjAwMDQ3MkE5IC8qIFVuY29uZGl0aW9uYWxGaW5hbGl6ZXIu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVW5jb25kaXRpb25hbEZpbmFsaXpl
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNTY5NSw2ICs1Njk4LDggQEAKIAkJ
CQkwRkI0Njc3QjFGRERBNkQ4MDAzRkNCMDkgLyogSXNvQ2VsbFNldElubGluZXMuaCAqLywKIAkJ
CQkwRkRDRTEyQzFGQUZCNERFMDA2RjM5MDEgLyogSXNvU3Vic3BhY2UuY3BwICovLAogCQkJCTBG
RENFMTJCMUZBRkI0REUwMDZGMzkwMSAvKiBJc29TdWJzcGFjZS5oICovLAorCQkJCTBGNUUwRkU2
MjA4NkFENDcwMDk3RjBERSAvKiBJc29TdWJzcGFjZVBlclZNLmNwcCAqLywKKwkJCQkwRjVFMEZF
NTIwODZBRDQ2MDA5N0YwREUgLyogSXNvU3Vic3BhY2VQZXJWTS5oICovLAogCQkJCTBGNzY2RDI5
MTVBOENDMzQwMDhGMzYzRSAvKiBKSVRTdHViUm91dGluZVNldC5jcHAgKi8sCiAJCQkJMEY3NjZE
MkExNUE4Q0MzNDAwOEYzNjNFIC8qIEpJVFN0dWJSb3V0aW5lU2V0LmggKi8sCiAJCQkJMEYwNzBB
NDUxRDU0M0E4OTAwNkU3MjMyIC8qIExhcmdlQWxsb2NhdGlvbi5jcHAgKi8sCkBAIC05NDkxLDYg
Kzk0OTYsNyBAQAogCQkJCTUzRjhEMjAwMUU4Mzg3RDQwMEQyMTExNiAvKiBXYXNtQkJRUGxhbklu
bGluZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUFENEIxREZBMURGMjQ0RTIwMDcxQUUzMiAvKiBX
YXNtQmluZGluZy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTI1QzBEREExRTkzNTg0NzAwMjE4NENE
IC8qIFdhc21DYWxsZWUuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGNUUwRkU3MjA4NkFENDgwMDk3
RjBERSAvKiBJc29TdWJzcGFjZVBlclZNLmggaW4gSGVhZGVycyAqLywKIAkJCQk1M0ZEMDRENDFE
N0FCMjkxMDAzMjg3RDMgLyogV2FzbUNhbGxpbmdDb252ZW50aW9uLmggaW4gSGVhZGVycyAqLywK
IAkJCQk1MjZBQzRCNzFFOTc3QzVEMDAzNTAwRTEgLyogV2FzbUNvZGVCbG9jay5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQUQ0MTJCMzQxRTdCMkU5RTAwOEFGMTU3IC8qIFdhc21Db250ZXh0LmggaW4g
SGVhZGVycyAqLywKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0lzb1N1YnNwYWNl
UGVyVk0uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0lzb1N1
YnNwYWNlUGVyVk0uY3BwCShub25leGlzdGVudCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL0lzb1N1YnNwYWNlUGVyVk0uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNzMgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisg
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorI2luY2x1ZGUgIklzb1N1YnNwYWNlUGVyVk0uaCIKKworI2luY2x1ZGUgIkpT
Q0lubGluZXMuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIElzb1N1YnNwYWNlUGVyVk06
OkF1dG9yZW1vdmluZ0lzb1N1YnNwYWNlIDogcHVibGljIElzb1N1YnNwYWNlIHsKK3B1YmxpYzoK
KyAgICBBdXRvcmVtb3ZpbmdJc29TdWJzcGFjZShJc29TdWJzcGFjZVBlclZNJiBwZXJWTSwgQ1N0
cmluZyBuYW1lLCBIZWFwJiBoZWFwLCBIZWFwQ2VsbFR5cGUqIGhlYXBDZWxsVHlwZSwgc2l6ZV90
IHNpemUpCisgICAgICAgIDogSXNvU3Vic3BhY2UobmFtZSwgaGVhcCwgaGVhcENlbGxUeXBlLCBz
aXplKQorICAgICAgICAsIG1fcGVyVk0ocGVyVk0pCisgICAgeworICAgIH0KKyAgICAKKyAgICB+
QXV0b3JlbW92aW5nSXNvU3Vic3BhY2UoKQorICAgIHsKKyAgICAgICAgYXV0byBsb2NrZXIgPSBo
b2xkTG9jayhtX3BlclZNLm1fbG9jayk7CisgICAgICAgIG1fcGVyVk0ubV9zdWJzcGFjZVBlclZN
LnJlbW92ZShzcGFjZSgpLmhlYXAoKS0+dm0oKSk7CisgICAgfQorCitwcml2YXRlOgorICAgIElz
b1N1YnNwYWNlUGVyVk0mIG1fcGVyVk07Cit9OworCitJc29TdWJzcGFjZVBlclZNOjpJc29TdWJz
cGFjZVBlclZNKEZ1bmN0aW9uPFN1YnNwYWNlUGFyYW1ldGVycyhWTSYpPiBzdWJzcGFjZVBhcmFt
ZXRlcnMpCisgICAgOiBtX3N1YnNwYWNlUGFyYW1ldGVycyhXVEZNb3ZlKHN1YnNwYWNlUGFyYW1l
dGVycykpCit7Cit9CisKK0lzb1N1YnNwYWNlUGVyVk06On5Jc29TdWJzcGFjZVBlclZNKCkKK3sK
KyAgICBVTlJFQUNIQUJMRV9GT1JfUExBVEZPUk0oKTsKK30KKworSXNvU3Vic3BhY2UmIElzb1N1
YnNwYWNlUGVyVk06OmZvclZNKFZNJiB2bSkKK3sKKyAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2Nr
KG1fbG9jayk7CisgICAgYXV0byByZXN1bHQgPSBtX3N1YnNwYWNlUGVyVk0uYWRkKCZ2bSwgbnVs
bHB0cik7CisgICAgaWYgKHJlc3VsdCkgeworICAgICAgICBTdWJzcGFjZVBhcmFtZXRlcnMgcGFy
YW1zID0gbV9zdWJzcGFjZVBhcmFtZXRlcnModm0pOworICAgICAgICByZXN1bHQuaXRlcmF0b3It
PnZhbHVlID0gbmV3IEF1dG9yZW1vdmluZ0lzb1N1YnNwYWNlKCp0aGlzLCBwYXJhbXMubmFtZSwg
dm0uaGVhcCwgcGFyYW1zLmhlYXBDZWxsVHlwZSwgcGFyYW1zLnNpemUpOworICAgIH0KKyAgICBy
ZXR1cm4gKnJlc3VsdC5pdGVyYXRvci0+dmFsdWU7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQwor
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Jc29TdWJzcGFjZVBlclZNLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSXNvU3Vic3BhY2VQZXJWTS5o
CShub25leGlzdGVudCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0lzb1N1YnNwYWNl
UGVyVk0uaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDczIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAi
SXNvU3Vic3BhY2UuaCIKKyNpbmNsdWRlIDx3dGYvRnVuY3Rpb24uaD4KKyNpbmNsdWRlIDx3dGYv
SGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9Mb2NrLmg+CisKK25hbWVzcGFjZSBKU0MgeworCisv
LyBUaGlzIGlzIGFuIGFwcHJvcHJpYXRlIHdheSB0byBzdGFzaCBJc29TdWJzcGFjZXMgZm9yIHJh
cmVseS11c2VkIGNsYXNzZXMgb3IgY2xhc3NlcyB0aGF0IGFyZSBtb3N0bHkKKy8vIHN1cmUgdG8g
YmUgbWFpbi10aHJlYWQtb25seS4gQnV0IGlmIGEgY2xhc3MgdHlwaWNhbGx5IGdldHMgaW5zdGFu
dGlhdGVkIGZyb20gbXVsdGlwbGUgdGhyZWFkcyBhdAorLy8gb25jZSwgdGhlbiB0aGlzIGlzIG5v
dCBncmVhdCwgYmVjYXVzZSBjb25jdXJyZW50IGFsbG9jYXRpb25zIHdpbGwgcHJvYmFibHkgY29u
dGVuZCBvbiB0aGlzIHRoaW5nJ3MKKy8vIGxvY2suCitjbGFzcyBJc29TdWJzcGFjZVBlclZNIHsK
K3B1YmxpYzoKKyAgICBzdHJ1Y3QgU3Vic3BhY2VQYXJhbWV0ZXJzIHsKKyAgICAgICAgU3Vic3Bh
Y2VQYXJhbWV0ZXJzKCkgeyB9CisgICAgICAgIAorICAgICAgICBTdWJzcGFjZVBhcmFtZXRlcnMo
Q1N0cmluZyBuYW1lLCBIZWFwQ2VsbFR5cGUqIGhlYXBDZWxsVHlwZSwgc2l6ZV90IHNpemUpCisg
ICAgICAgICAgICA6IG5hbWUoV1RGTW92ZShuYW1lKSkKKyAgICAgICAgICAgICwgaGVhcENlbGxU
eXBlKGhlYXBDZWxsVHlwZSkKKyAgICAgICAgICAgICwgc2l6ZShzaXplKQorICAgICAgICB7Cisg
ICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIENTdHJpbmcgbmFtZTsKKyAgICAgICAgSGVhcENl
bGxUeXBlKiBoZWFwQ2VsbFR5cGUgeyBudWxscHRyIH07CisgICAgICAgIHNpemVfdCBzaXplIHsg
MCB9OworICAgIH07CisgICAgCisgICAgSlNfRVhQT1JUX1BSSVZBVEUgSXNvU3Vic3BhY2VQZXJW
TShGdW5jdGlvbjxTdWJzcGFjZVBhcmFtZXRlcnMoVk0mKT4pOworICAgIEpTX0VYUE9SVF9QUklW
QVRFIH5Jc29TdWJzcGFjZVBlclZNKCk7CisgICAgCisgICAgSlNfRVhQT1JUX1BSSVZBVEUgSXNv
U3Vic3BhY2UmIGZvclZNKFZNJik7CisKK3ByaXZhdGU6CisgICAgY2xhc3MgQXV0b3JlbW92aW5n
SXNvU3Vic3BhY2U7CisgICAgZnJpZW5kIGNsYXNzIEF1dG9yZW1vdmluZ0lzb1N1YnNwYWNlOwor
CisgICAgTG9jayBtX2xvY2s7CisgICAgSGFzaE1hcDxWTSosIElzb1N1YnNwYWNlKj4gbV9zdWJz
cGFjZVBlclZNOworICAgIEZ1bmN0aW9uPFN1YnNwYWNlUGFyYW1ldGVycyhWTSYpPiBtX3N1YnNw
YWNlUGFyYW1ldGVyczsKK307CisKKyNkZWZpbmUgSVNPX1NVQlNQQUNFX1BBUkFNRVRFUlMoaGVh
cENlbGxUeXBlLCB0eXBlKSA6OkpTQzo6SXNvU3Vic3BhY2VQZXJWTTo6U3Vic3BhY2VQYXJhbWV0
ZXJzKCJJc29sYXRlZCAiICN0eXBlICIgU3BhY2UiLCAoaGVhcENlbGxUeXBlKSwgc2l6ZW9mKHR5
cGUpKQorCit9IC8vIG5hbWVzcGFjZSBKU0MKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvRXJyb3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9FcnJvci5oCShyZXZpc2lvbiAyMzA3MjMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9FcnJvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMTUsNiArMTE1LDEyIEBAIHByaXZh
dGU6CiAKIHB1YmxpYzoKICAgICB0eXBlZGVmIEludGVybmFsRnVuY3Rpb24gQmFzZTsKKyAgICAK
KyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZT4KKyAgICBzdGF0aWMgSXNvU3Vic3BhY2Uq
IHN1YnNwYWNlRm9yKFZNJiB2bSkKKyAgICB7CisgICAgICAgIHJldHVybiAmdm0uc3RyaWN0TW9k
ZVR5cGVFcnJvckZ1bmN0aW9uU3BhY2U7CisgICAgfQogCiAgICAgc3RhdGljIFN0cmljdE1vZGVU
eXBlRXJyb3JGdW5jdGlvbiogY3JlYXRlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGNv
bnN0IFN0cmluZyYgbWVzc2FnZSkKICAgICB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9FcnJvckNvbnN0cnVjdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvRXJyb3JDb25zdHJ1Y3Rvci5oCShyZXZpc2lvbiAyMzA3MjMpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvckNvbnN0cnVjdG9yLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTEsNiArMSw2IEBACiAvKgogICogIENvcHlyaWdodCAoQykgMTk5OS0yMDAwIEhh
cnJpIFBvcnRlbiAocG9ydGVuQGtkZS5vcmcpCi0gKiAgQ29weXJpZ2h0IChDKSAyMDA4LTIwMTcg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogIENvcHlyaWdodCAoQykgMjAwOC0y
MDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiAgVGhpcyBsaWJyYXJ5
IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogIG1v
ZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMK
QEAgLTMxLDYgKzMxLDEyIEBAIGNsYXNzIEVycm9yQ29uc3RydWN0b3IgZmluYWwgOiBwdWJsaWMg
SW4KIHB1YmxpYzoKICAgICB0eXBlZGVmIEludGVybmFsRnVuY3Rpb24gQmFzZTsKIAorICAgIHRl
bXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlPgorICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3Bh
Y2VGb3IoVk0mIHZtKQorICAgIHsKKyAgICAgICAgcmV0dXJuICZ2bS5lcnJvckNvbnN0cnVjdG9y
U3BhY2U7CisgICAgfQorCiAgICAgc3RhdGljIEVycm9yQ29uc3RydWN0b3IqIGNyZWF0ZShWTSYg
dm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBFcnJvclByb3RvdHlwZSogZXJyb3JQcm90b3R5cGUs
IEdldHRlclNldHRlciopCiAgICAgewogICAgICAgICBFcnJvckNvbnN0cnVjdG9yKiBjb25zdHJ1
Y3RvciA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEVycm9yQ29uc3RydWN0b3I+KHZtLmhl
YXApKSBFcnJvckNvbnN0cnVjdG9yKHZtLCBzdHJ1Y3R1cmUpOwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSW50ZXJuYWxGdW5jdGlvbi5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGVybmFsRnVuY3Rpb24uaAkocmV2aXNpb24gMjMw
NzIzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50ZXJuYWxGdW5jdGlvbi5o
CSh3b3JraW5nIGNvcHkpCkBAIC0zOCw2ICszOCwxMyBAQCBwdWJsaWM6CiAgICAgdHlwZWRlZiBK
U0Rlc3RydWN0aWJsZU9iamVjdCBCYXNlOwogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1
Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgSW1wbGVtZW50c0hhc0luc3RhbmNl
IHwgSW1wbGVtZW50c0RlZmF1bHRIYXNJbnN0YW5jZSB8IFR5cGVPZlNob3VsZENhbGxHZXRDYWxs
RGF0YTsKIAorICAgIHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlPgorICAgIHN0YXRpYyBJc29T
dWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQorICAgIHsKKyAgICAgICAgc3RhdGljX2Fzc2Vy
dChzaXplb2YoQ2VsbFR5cGUpID09IHNpemVvZihJbnRlcm5hbEZ1bmN0aW9uKSwgIkludGVybmFs
RnVuY3Rpb24gc3ViY2xhc3NlcyB0aGF0IGFkZCBmaWVsZHMgbmVlZCB0byBvdmVycmlkZSBzdWJz
cGFjZUZvcjw+KCkiKTsKKyAgICAgICAgcmV0dXJuICZ2bS5pbnRlcm5hbEZ1bmN0aW9uU3BhY2U7
CisgICAgfQorCiAgICAgREVDTEFSRV9FWFBPUlRfSU5GTzsKIAogICAgIEpTX0VYUE9SVF9QUklW
QVRFIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxDb2xsYXRvckNvbnN0cnVjdG9y
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bENvbGxh
dG9yQ29uc3RydWN0b3IuaAkocmV2aXNpb24gMjMwNzIzKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSW50bENvbGxhdG9yQ29uc3RydWN0b3IuaAkod29ya2luZyBjb3B5KQpAQCAt
MSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQW5keSBWYW5XYWdvbmVyICh0
aGV0YWxlY3JhZnRlckBnbWFpbC5jb20pCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBA
IC0zOSw2ICs0MCwxMiBAQCBwdWJsaWM6CiAgICAgdHlwZWRlZiBJbnRlcm5hbEZ1bmN0aW9uIEJh
c2U7CiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3Ry
dWN0dXJlRmxhZ3MgfCBIYXNTdGF0aWNQcm9wZXJ0eVRhYmxlOwogCisgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgQ2VsbFR5cGU+CisgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYg
dm0pCisgICAgeworICAgICAgICByZXR1cm4gJnZtLmludGxDb2xsYXRvckNvbnN0cnVjdG9yU3Bh
Y2U7CisgICAgfQorCiAgICAgc3RhdGljIEludGxDb2xsYXRvckNvbnN0cnVjdG9yKiBjcmVhdGUo
Vk0mLCBTdHJ1Y3R1cmUqLCBJbnRsQ29sbGF0b3JQcm90b3R5cGUqLCBTdHJ1Y3R1cmUqKTsKICAg
ICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mLCBKU0dsb2JhbE9iamVjdCos
IEpTVmFsdWUpOwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGF0
ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yLmgJKHJldmlzaW9uIDIz
MDcyMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxEYXRlVGltZUZvcm1h
dENvbnN0cnVjdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw2IEBACiAvKgogICogQ29w
eXJpZ2h0IChDKSAyMDE1IEFuZHkgVmFuV2Fnb25lciAodGhldGFsZWNyYWZ0ZXJAZ21haWwuY29t
KQorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzksNiArNDAsMTIgQEAgcHVibGlj
OgogICAgIHR5cGVkZWYgSW50ZXJuYWxGdW5jdGlvbiBCYXNlOwogICAgIHN0YXRpYyBjb25zdCB1
bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgSGFzU3RhdGlj
UHJvcGVydHlUYWJsZTsKIAorICAgIHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlPgorICAgIHN0
YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQorICAgIHsKKyAgICAgICAgcmV0
dXJuICZ2bS5pbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3RvclNwYWNlOworICAgIH0KKwogICAg
IHN0YXRpYyBJbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3RvciogY3JlYXRlKFZNJiwgU3RydWN0
dXJlKiwgSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlKiwgU3RydWN0dXJlKik7CiAgICAgc3Rh
dGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBKU1Zh
bHVlKTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZv
cm1hdENvbnN0cnVjdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yLmgJKHJldmlzaW9uIDIzMDcyMykKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rv
ci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykg
MjAxNSBBbmR5IFZhbldhZ29uZXIgKHRoZXRhbGVjcmFmdGVyQGdtYWlsLmNvbSkKKyAqIENvcHly
aWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM5LDYgKzQwLDEyIEBAIHB1YmxpYzoKICAgICB0eXBl
ZGVmIEludGVybmFsRnVuY3Rpb24gQmFzZTsKICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3Ry
dWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IEhhc1N0YXRpY1Byb3BlcnR5VGFi
bGU7CiAKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZT4KKyAgICBzdGF0aWMgSXNvU3Vi
c3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKKyAgICB7CisgICAgICAgIHJldHVybiAmdm0uaW50
bE51bWJlckZvcm1hdENvbnN0cnVjdG9yU3BhY2U7CisgICAgfQorCiAgICAgc3RhdGljIEludGxO
dW1iZXJGb3JtYXRDb25zdHJ1Y3RvciogY3JlYXRlKFZNJiwgU3RydWN0dXJlKiwgSW50bE51bWJl
ckZvcm1hdFByb3RvdHlwZSosIFN0cnVjdHVyZSopOwogICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNy
ZWF0ZVN0cnVjdHVyZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSk7CiAKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJDb25zdHJ1Y3Rvci5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJD
b25zdHJ1Y3Rvci5oCShyZXZpc2lvbiAyMzA3MjMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0FycmF5QnVmZmVyQ29uc3RydWN0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1
ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTYgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMTggQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0z
Nyw2ICszNywxMiBAQCBjbGFzcyBKU0FycmF5QnVmZmVyQ29uc3RydWN0b3IgZmluYWwgOiBwCiBw
dWJsaWM6CiAgICAgdHlwZWRlZiBJbnRlcm5hbEZ1bmN0aW9uIEJhc2U7CiAKKyAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBDZWxsVHlwZT4KKyAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9y
KFZNJiB2bSkKKyAgICB7CisgICAgICAgIHJldHVybiAmdm0uYXJyYXlCdWZmZXJDb25zdHJ1Y3Rv
clNwYWNlOworICAgIH0KKwogcHJvdGVjdGVkOgogICAgIEpTQXJyYXlCdWZmZXJDb25zdHJ1Y3Rv
cihWTSYsIFN0cnVjdHVyZSosIEFycmF5QnVmZmVyU2hhcmluZ01vZGUpOwogICAgIHZvaWQgZmlu
aXNoQ3JlYXRpb24oVk0mLCBKU0FycmF5QnVmZmVyUHJvdG90eXBlKiwgR2V0dGVyU2V0dGVyKiBz
cGVjaWVzU3ltYm9sKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05hdGl2
ZUVycm9yQ29uc3RydWN0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9OYXRpdmVFcnJvckNvbnN0cnVjdG9yLmgJKHJldmlzaW9uIDIzMDcyMykKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05hdGl2ZUVycm9yQ29uc3RydWN0b3IuaAkod29y
a2luZyBjb3B5KQpAQCAtMSw2ICsxLDYgQEAKIC8qCiAgKiAgQ29weXJpZ2h0IChDKSAxOTk5LTIw
MDAgSGFycmkgUG9ydGVuIChwb3J0ZW5Aa2RlLm9yZykKLSAqICBDb3B5cmlnaHQgKEMpIDIwMDgg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogIENvcHlyaWdodCAoQykgMjAwOC0y
MDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiAgVGhpcyBsaWJyYXJ5
IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogIG1v
ZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMK
QEAgLTMzLDYgKzMzLDEyIEBAIGNsYXNzIE5hdGl2ZUVycm9yQ29uc3RydWN0b3IgZmluYWwgOiBw
dWIKIHB1YmxpYzoKICAgICB0eXBlZGVmIEludGVybmFsRnVuY3Rpb24gQmFzZTsKIAorICAgIHRl
bXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlPgorICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3Bh
Y2VGb3IoVk0mIHZtKQorICAgIHsKKyAgICAgICAgcmV0dXJuICZ2bS5uYXRpdmVFcnJvckNvbnN0
cnVjdG9yU3BhY2U7CisgICAgfQorCiAgICAgc3RhdGljIE5hdGl2ZUVycm9yQ29uc3RydWN0b3Iq
IGNyZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSog
c3RydWN0dXJlLCBTdHJ1Y3R1cmUqIHByb3RvdHlwZVN0cnVjdHVyZSwgY29uc3QgU3RyaW5nJiBu
YW1lKQogICAgIHsKICAgICAgICAgTmF0aXZlRXJyb3JDb25zdHJ1Y3RvciogY29uc3RydWN0b3Ig
PSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxOYXRpdmVFcnJvckNvbnN0cnVjdG9yPih2bS5o
ZWFwKSkgTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvcih2bSwgc3RydWN0dXJlKTsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3h5UmV2b2tlLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJveHlSZXZva2UuaAkocmV2aXNpb24gMjMwNzIz
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJveHlSZXZva2UuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMzYsNiArMzYsMTIgQEAgcHVibGljOgogICAgIHR5cGVkZWYgSW50ZXJuYWxG
dW5jdGlvbiBCYXNlOwogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9
IEJhc2U6OlN0cnVjdHVyZUZsYWdzOwogCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGU+
CisgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCisgICAgeworICAg
ICAgICByZXR1cm4gJnZtLnByb3h5UmV2b2tlU3BhY2U7CisgICAgfQorCiAgICAgc3RhdGljIFBy
b3h5UmV2b2tlKiBjcmVhdGUoVk0mLCBTdHJ1Y3R1cmUqLCBQcm94eU9iamVjdCopOwogCiAgICAg
REVDTEFSRV9JTkZPOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhw
Q29uc3RydWN0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9SZWdFeHBDb25zdHJ1Y3Rvci5oCShyZXZpc2lvbiAyMzA3MjMpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9SZWdFeHBDb25zdHJ1Y3Rvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDYgKzEsNiBAQAogLyoKICAqICBDb3B5cmlnaHQgKEMpIDE5OTktMjAwMCBIYXJyaSBQb3J0ZW4g
KHBvcnRlbkBrZGUub3JnKQotICogIENvcHlyaWdodCAoQykgMjAwMywgMjAwNy0yMDA4LCAyMDE2
IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqICBDb3B5cmlnaHQgKEMpIDIwMDMt
MjAxOCBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgKgogICogIFRoaXMgbGlicmFy
eSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqICBt
b2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGlj
CkBAIC0zNSw2ICszNSwxMiBAQCBwdWJsaWM6CiAgICAgdHlwZWRlZiBJbnRlcm5hbEZ1bmN0aW9u
IEJhc2U7CiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6
U3RydWN0dXJlRmxhZ3MgfCBIYXNTdGF0aWNQcm9wZXJ0eVRhYmxlOwogCisgICAgdGVtcGxhdGU8
dHlwZW5hbWUgQ2VsbFR5cGU+CisgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihW
TSYgdm0pCisgICAgeworICAgICAgICByZXR1cm4gJnZtLnJlZ0V4cENvbnN0cnVjdG9yU3BhY2U7
CisgICAgfQorCiAgICAgc3RhdGljIFJlZ0V4cENvbnN0cnVjdG9yKiBjcmVhdGUoVk0mIHZtLCBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUmVnRXhwUHJvdG90eXBlKiByZWdFeHBQcm90b3R5cGUsIEdl
dHRlclNldHRlciogc3BlY2llcykKICAgICB7CiAgICAgICAgIFJlZ0V4cENvbnN0cnVjdG9yKiBj
b25zdHJ1Y3RvciA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPFJlZ0V4cENvbnN0cnVjdG9y
Pih2bS5oZWFwKSkgUmVnRXhwQ29uc3RydWN0b3Iodm0sIHN0cnVjdHVyZSwgcmVnRXhwUHJvdG90
eXBlKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAJKHJldmlzaW9uIDIz
MDcyMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNDEsNiArNDEsOCBAQAogI2luY2x1ZGUgIkRGR1dvcmtsaXN0LmgiCiAjaW5jbHVk
ZSAiRGlyZWN0RXZhbEV4ZWN1dGFibGUuaCIKICNpbmNsdWRlICJEaXNhc3NlbWJsZXIuaCIKKyNp
bmNsdWRlICJFcnJvci5oIgorI2luY2x1ZGUgIkVycm9yQ29uc3RydWN0b3IuaCIKICNpbmNsdWRl
ICJFcnJvckluc3RhbmNlLmgiCiAjaW5jbHVkZSAiRXZhbENvZGVCbG9jay5oIgogI2luY2x1ZGUg
IkV4Y2VwdGlvbi5oIgpAQCAtNjQsMTQgKzY2LDE5IEBACiAjaW5jbHVkZSAiSW5mZXJyZWRUeXBl
VGFibGUuaCIKICNpbmNsdWRlICJJbmZlcnJlZFZhbHVlLmgiCiAjaW5jbHVkZSAiSW50ZXJwcmV0
ZXIuaCIKKyNpbmNsdWRlICJJbnRsQ29sbGF0b3JDb25zdHJ1Y3Rvci5oIgorI2luY2x1ZGUgIklu
dGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yLmgiCisjaW5jbHVkZSAiSW50bE51bWJlckZvcm1h
dENvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAiSklUQ29kZS5oIgogI2luY2x1ZGUgIkpJVFdvcmts
aXN0LmgiCiAjaW5jbHVkZSAiSlNBUElWYWx1ZVdyYXBwZXIuaCIKICNpbmNsdWRlICJKU0FycmF5
LmgiCisjaW5jbHVkZSAiSlNBcnJheUJ1ZmZlckNvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAiSlNB
c3luY0Z1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNCaWdJbnQuaCIKICNpbmNsdWRlICJKU0JvdW5k
RnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCisjaW5jbHVkZSAiSlNDYWxsYmFj
a0Z1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNDdXN0b21HZXR0ZXJTZXR0ZXJGdW5jdGlvbi5oIgog
I2luY2x1ZGUgIkpTRGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmgiCiAjaW5jbHVkZSAi
SlNGaXhlZEFycmF5LmgiCkBAIC0xMDMsMTYgKzExMCwyMCBAQAogI2luY2x1ZGUgIk1pbmltdW1S
ZXNlcnZlZFpvbmVTaXplLmgiCiAjaW5jbHVkZSAiTW9kdWxlUHJvZ3JhbUNvZGVCbG9jay5oIgog
I2luY2x1ZGUgIk1vZHVsZVByb2dyYW1FeGVjdXRhYmxlLmgiCisjaW5jbHVkZSAiTmF0aXZlRXJy
b3JDb25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUgIk5hdGl2ZUV4ZWN1dGFibGUuaCIKICNpbmNsdWRl
ICJOYXRpdmVTdGRGdW5jdGlvbkNlbGwuaCIKICNpbmNsdWRlICJOb2Rlcy5oIgorI2luY2x1ZGUg
Ik9iakNDYWxsYmFja0Z1bmN0aW9uLmgiCiAjaW5jbHVkZSAiUGFyc2VyLmgiCiAjaW5jbHVkZSAi
UHJvZmlsZXJEYXRhYmFzZS5oIgogI2luY2x1ZGUgIlByb2dyYW1Db2RlQmxvY2suaCIKICNpbmNs
dWRlICJQcm9ncmFtRXhlY3V0YWJsZS5oIgogI2luY2x1ZGUgIlByb21pc2VEZWZlcnJlZFRpbWVy
LmgiCiAjaW5jbHVkZSAiUHJvcGVydHlNYXBIYXNoVGFibGUuaCIKKyNpbmNsdWRlICJQcm94eVJl
dm9rZS5oIgogI2luY2x1ZGUgIlJlZ0V4cENhY2hlLmgiCisjaW5jbHVkZSAiUmVnRXhwQ29uc3Ry
dWN0b3IuaCIKICNpbmNsdWRlICJSZWdFeHBPYmplY3QuaCIKICNpbmNsdWRlICJSZWdpc3RlckF0
T2Zmc2V0TGlzdC5oIgogI2luY2x1ZGUgIlJ1bnRpbWVUeXBlLmgiCkBAIC0yNTQsMTEgKzI2NSwx
NCBAQCBWTTo6Vk0oVk1UeXBlIHZtVHlwZSwgSGVhcFR5cGUgaGVhcFR5cGUpCiAgICAgLCBkZXN0
cnVjdGlibGVPYmplY3RTcGFjZSgiSlNEZXN0cnVjdGlibGVPYmplY3QiLCBoZWFwLCBkZXN0cnVj
dGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuZ2V0KCksIGZhc3RNYWxsb2NBbGxvY2F0b3IuZ2V0KCkp
CiAgICAgLCBlYWdlcmx5U3dlcHREZXN0cnVjdGlibGVPYmplY3RTcGFjZSgiRWFnZXJseSBTd2Vw
dCBKU0Rlc3RydWN0aWJsZU9iamVjdCIsIGhlYXAsIGRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxs
VHlwZS5nZXQoKSwgZmFzdE1hbGxvY0FsbG9jYXRvci5nZXQoKSkKICAgICAsIHNlZ21lbnRlZFZh
cmlhYmxlT2JqZWN0U3BhY2UoIkpTU2VnbWVudGVkVmFyaWFibGVPYmplY3RTcGFjZSIsIGhlYXAs
IHNlZ21lbnRlZFZhcmlhYmxlT2JqZWN0SGVhcENlbGxUeXBlLmdldCgpLCBmYXN0TWFsbG9jQWxs
b2NhdG9yLmdldCgpKQorICAgICwgYXJyYXlCdWZmZXJDb25zdHJ1Y3RvclNwYWNlIElTT19TVUJT
UEFDRV9JTklUKGhlYXAsIGRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNB
cnJheUJ1ZmZlckNvbnN0cnVjdG9yKQogICAgICwgYXN5bmNGdW5jdGlvblNwYWNlIElTT19TVUJT
UEFDRV9JTklUKGhlYXAsIGNlbGxKU1ZhbHVlT09CSGVhcENlbGxUeXBlLmdldCgpLCBKU0FzeW5j
RnVuY3Rpb24pCiAgICAgLCBhc3luY0dlbmVyYXRvckZ1bmN0aW9uU3BhY2UgSVNPX1NVQlNQQUNF
X0lOSVQoaGVhcCwgY2VsbEpTVmFsdWVPT0JIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTQXN5bmNHZW5l
cmF0b3JGdW5jdGlvbikKICAgICAsIGJvdW5kRnVuY3Rpb25TcGFjZSBJU09fU1VCU1BBQ0VfSU5J
VChoZWFwLCBjZWxsSlNWYWx1ZU9PQkhlYXBDZWxsVHlwZS5nZXQoKSwgSlNCb3VuZEZ1bmN0aW9u
KQorICAgICwgY2FsbGJhY2tGdW5jdGlvblNwYWNlIElTT19TVUJTUEFDRV9JTklUKGhlYXAsIGRl
c3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNDYWxsYmFja0Z1bmN0aW9uKQog
ICAgICwgY3VzdG9tR2V0dGVyU2V0dGVyRnVuY3Rpb25TcGFjZSBJU09fU1VCU1BBQ0VfSU5JVCho
ZWFwLCBjZWxsSlNWYWx1ZU9PQkhlYXBDZWxsVHlwZS5nZXQoKSwgSlNDdXN0b21HZXR0ZXJTZXR0
ZXJGdW5jdGlvbikKICAgICAsIGRpcmVjdEV2YWxFeGVjdXRhYmxlU3BhY2UgSVNPX1NVQlNQQUNF
X0lOSVQoaGVhcCwgZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgRGlyZWN0RXZh
bEV4ZWN1dGFibGUpCisgICAgLCBlcnJvckNvbnN0cnVjdG9yU3BhY2UgSVNPX1NVQlNQQUNFX0lO
SVQoaGVhcCwgZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmdldCgpLCBFcnJvckNvbnN0
cnVjdG9yKQogICAgICwgZXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZVNwYWNlIElTT19TVUJTUEFD
RV9JTklUKGhlYXAsIGNlbGxEYW5nZXJvdXNCaXRzSGVhcENlbGxUeXBlLmdldCgpLCBFeGVjdXRh
YmxlVG9Db2RlQmxvY2tFZGdlKQogICAgICwgZnVuY3Rpb25FeGVjdXRhYmxlU3BhY2UgSVNPX1NV
QlNQQUNFX0lOSVQoaGVhcCwgZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgRnVu
Y3Rpb25FeGVjdXRhYmxlKQogICAgICwgZnVuY3Rpb25TcGFjZSBJU09fU1VCU1BBQ0VfSU5JVCho
ZWFwLCBjZWxsSlNWYWx1ZU9PQkhlYXBDZWxsVHlwZS5nZXQoKSwgSlNGdW5jdGlvbikKQEAgLTI2
NiwxMSArMjgwLDI0IEBAIFZNOjpWTShWTVR5cGUgdm1UeXBlLCBIZWFwVHlwZSBoZWFwVHlwZSkK
ICAgICAsIGluZGlyZWN0RXZhbEV4ZWN1dGFibGVTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVChoZWFw
LCBkZXN0cnVjdGlibGVDZWxsSGVhcENlbGxUeXBlLmdldCgpLCBJbmRpcmVjdEV2YWxFeGVjdXRh
YmxlKQogICAgICwgaW5mZXJyZWRUeXBlU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoaGVhcCwgZGVz
dHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgSW5mZXJyZWRUeXBlKQogICAgICwgaW5m
ZXJyZWRWYWx1ZVNwYWNlIElTT19TVUJTUEFDRV9JTklUKGhlYXAsIGRlc3RydWN0aWJsZUNlbGxI
ZWFwQ2VsbFR5cGUuZ2V0KCksIEluZmVycmVkVmFsdWUpCisgICAgLCBpbnRlcm5hbEZ1bmN0aW9u
U3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoaGVhcCwgZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxU
eXBlLmdldCgpLCBJbnRlcm5hbEZ1bmN0aW9uKQorI2lmIEVOQUJMRShJTlRMKQorICAgICwgaW50
bENvbGxhdG9yQ29uc3RydWN0b3JTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVChoZWFwLCBkZXN0cnVj
dGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuZ2V0KCksIEludGxDb2xsYXRvckNvbnN0cnVjdG9yKQor
ICAgICwgaW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3JTcGFjZSBJU09fU1VCU1BBQ0VfSU5J
VChoZWFwLCBkZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuZ2V0KCksIEludGxEYXRlVGlt
ZUZvcm1hdENvbnN0cnVjdG9yKQorICAgICwgaW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yU3Bh
Y2UgSVNPX1NVQlNQQUNFX0lOSVQoaGVhcCwgZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBl
LmdldCgpLCBJbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3IpCisjZW5kaWYKICAgICAsIG1vZHVs
ZVByb2dyYW1FeGVjdXRhYmxlU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoaGVhcCwgZGVzdHJ1Y3Rp
YmxlQ2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUpCisgICAg
LCBuYXRpdmVFcnJvckNvbnN0cnVjdG9yU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoaGVhcCwgZGVz
dHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmdldCgpLCBOYXRpdmVFcnJvckNvbnN0cnVjdG9y
KQogICAgICwgbmF0aXZlRXhlY3V0YWJsZVNwYWNlIElTT19TVUJTUEFDRV9JTklUKGhlYXAsIGRl
c3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIE5hdGl2ZUV4ZWN1dGFibGUpCiAgICAg
LCBuYXRpdmVTdGRGdW5jdGlvblNwYWNlIElTT19TVUJTUEFDRV9JTklUKGhlYXAsIGNlbGxKU1Zh
bHVlT09CSGVhcENlbGxUeXBlLmdldCgpLCBKU05hdGl2ZVN0ZEZ1bmN0aW9uKQorI2lmIEpTQ19P
QkpDX0FQSV9FTkFCTEVECisgICAgLCBvYmpDQ2FsbGJhY2tGdW5jdGlvblNwYWNlIElTT19TVUJT
UEFDRV9JTklUKGhlYXAsIGRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5nZXQoKSwgT2Jq
Q0NhbGxiYWNrRnVuY3Rpb24pCisjZW5kaWYKICAgICAsIHByb2dyYW1FeGVjdXRhYmxlU3BhY2Ug
SVNPX1NVQlNQQUNFX0lOSVQoaGVhcCwgZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZS5nZXQo
KSwgUHJvZ3JhbUV4ZWN1dGFibGUpCiAgICAgLCBwcm9wZXJ0eVRhYmxlU3BhY2UgSVNPX1NVQlNQ
QUNFX0lOSVQoaGVhcCwgZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgUHJvcGVy
dHlUYWJsZSkKKyAgICAsIHByb3h5UmV2b2tlU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoaGVhcCwg
ZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmdldCgpLCBQcm94eVJldm9rZSkKKyAgICAs
IHJlZ0V4cENvbnN0cnVjdG9yU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoaGVhcCwgZGVzdHJ1Y3Rp
YmxlT2JqZWN0SGVhcENlbGxUeXBlLmdldCgpLCBSZWdFeHBDb25zdHJ1Y3RvcikKKyAgICAsIHN0
cmljdE1vZGVUeXBlRXJyb3JGdW5jdGlvblNwYWNlIElTT19TVUJTUEFDRV9JTklUKGhlYXAsIGRl
c3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5nZXQoKSwgU3RyaWN0TW9kZVR5cGVFcnJvckZ1
bmN0aW9uKQogICAgICwgc3RydWN0dXJlUmFyZURhdGFTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVCho
ZWFwLCBkZXN0cnVjdGlibGVDZWxsSGVhcENlbGxUeXBlLmdldCgpLCBTdHJ1Y3R1cmVSYXJlRGF0
YSkKICAgICAsIHN0cnVjdHVyZVNwYWNlIElTT19TVUJTUEFDRV9JTklUKGhlYXAsIGRlc3RydWN0
aWJsZUNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIFN0cnVjdHVyZSkKICAgICAsIHdlYWtTZXRTcGFj
ZSBJU09fU1VCU1BBQ0VfSU5JVChoZWFwLCBkZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUu
Z2V0KCksIEpTV2Vha1NldCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZN
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAkocmV2
aXNpb24gMjMwNzIzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAkod29y
a2luZyBjb3B5KQpAQCAtODAsNiArODAsMTYgQEAKICNpbmNsdWRlIDx3dGYvU3RhY2tUcmFjZS5o
PgogI2VuZGlmCiAKKy8vIEVuYWJsZSB0aGUgT2JqZWN0aXZlLUMgQVBJIGZvciBwbGF0Zm9ybXMg
d2l0aCBhIG1vZGVybiBydW50aW1lLiBUaGlzIGhhcyB0byBtYXRjaCBleGFjdGx5IHdoYXQgd2UK
Ky8vIGhhdmUgaW4gSlNCYXNlLmguCisjaWYgIWRlZmluZWQoSlNDX09CSkNfQVBJX0VOQUJMRUQp
CisjaWYgKGRlZmluZWQoX19jbGFuZ19fKSAmJiBkZWZpbmVkKF9fQVBQTEVfXykgJiYgKChkZWZp
bmVkKF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQpICYmICFkZWZpbmVkKF9faTM4Nl9f
KSkgfHwgKGRlZmluZWQoVEFSR0VUX09TX0lQSE9ORSkgJiYgVEFSR0VUX09TX0lQSE9ORSkpKQor
I2RlZmluZSBKU0NfT0JKQ19BUElfRU5BQkxFRCAxCisjZWxzZQorI2RlZmluZSBKU0NfT0JKQ19B
UElfRU5BQkxFRCAwCisjZW5kaWYKKyNlbmRpZgorCiBuYW1lc3BhY2UgV1RGIHsKIGNsYXNzIFNp
bXBsZVN0YXRzOwogfSAvLyBuYW1lc3BhY2UgV1RGCkBAIC0zMzcsMTEgKzM0NywxNCBAQCBwdWJs
aWM6CiAgICAgQ29tcGxldGVTdWJzcGFjZSBlYWdlcmx5U3dlcHREZXN0cnVjdGlibGVPYmplY3RT
cGFjZTsKICAgICBDb21wbGV0ZVN1YnNwYWNlIHNlZ21lbnRlZFZhcmlhYmxlT2JqZWN0U3BhY2U7
CiAgICAgCisgICAgSXNvU3Vic3BhY2UgYXJyYXlCdWZmZXJDb25zdHJ1Y3RvclNwYWNlOwogICAg
IElzb1N1YnNwYWNlIGFzeW5jRnVuY3Rpb25TcGFjZTsKICAgICBJc29TdWJzcGFjZSBhc3luY0dl
bmVyYXRvckZ1bmN0aW9uU3BhY2U7CiAgICAgSXNvU3Vic3BhY2UgYm91bmRGdW5jdGlvblNwYWNl
OworICAgIElzb1N1YnNwYWNlIGNhbGxiYWNrRnVuY3Rpb25TcGFjZTsKICAgICBJc29TdWJzcGFj
ZSBjdXN0b21HZXR0ZXJTZXR0ZXJGdW5jdGlvblNwYWNlOwogICAgIElzb1N1YnNwYWNlIGRpcmVj
dEV2YWxFeGVjdXRhYmxlU3BhY2U7CisgICAgSXNvU3Vic3BhY2UgZXJyb3JDb25zdHJ1Y3RvclNw
YWNlOwogICAgIElzb1N1YnNwYWNlIGV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2VTcGFjZTsKICAg
ICBJc29TdWJzcGFjZSBmdW5jdGlvbkV4ZWN1dGFibGVTcGFjZTsKICAgICBJc29TdWJzcGFjZSBm
dW5jdGlvblNwYWNlOwpAQCAtMzQ5LDExICszNjIsMjQgQEAgcHVibGljOgogICAgIElzb1N1YnNw
YWNlIGluZGlyZWN0RXZhbEV4ZWN1dGFibGVTcGFjZTsKICAgICBJc29TdWJzcGFjZSBpbmZlcnJl
ZFR5cGVTcGFjZTsKICAgICBJc29TdWJzcGFjZSBpbmZlcnJlZFZhbHVlU3BhY2U7CisgICAgSXNv
U3Vic3BhY2UgaW50ZXJuYWxGdW5jdGlvblNwYWNlOworI2lmIEVOQUJMRShJTlRMKQorICAgIElz
b1N1YnNwYWNlIGludGxDb2xsYXRvckNvbnN0cnVjdG9yU3BhY2U7CisgICAgSXNvU3Vic3BhY2Ug
aW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3JTcGFjZTsKKyAgICBJc29TdWJzcGFjZSBpbnRs
TnVtYmVyRm9ybWF0Q29uc3RydWN0b3JTcGFjZTsKKyNlbmRpZgogICAgIElzb1N1YnNwYWNlIG1v
ZHVsZVByb2dyYW1FeGVjdXRhYmxlU3BhY2U7CisgICAgSXNvU3Vic3BhY2UgbmF0aXZlRXJyb3JD
b25zdHJ1Y3RvclNwYWNlOwogICAgIElzb1N1YnNwYWNlIG5hdGl2ZUV4ZWN1dGFibGVTcGFjZTsK
ICAgICBJc29TdWJzcGFjZSBuYXRpdmVTdGRGdW5jdGlvblNwYWNlOworI2lmIEpTQ19PQkpDX0FQ
SV9FTkFCTEVECisgICAgSXNvU3Vic3BhY2Ugb2JqQ0NhbGxiYWNrRnVuY3Rpb25TcGFjZTsKKyNl
bmRpZgogICAgIElzb1N1YnNwYWNlIHByb2dyYW1FeGVjdXRhYmxlU3BhY2U7CiAgICAgSXNvU3Vi
c3BhY2UgcHJvcGVydHlUYWJsZVNwYWNlOworICAgIElzb1N1YnNwYWNlIHByb3h5UmV2b2tlU3Bh
Y2U7CisgICAgSXNvU3Vic3BhY2UgcmVnRXhwQ29uc3RydWN0b3JTcGFjZTsKKyAgICBJc29TdWJz
cGFjZSBzdHJpY3RNb2RlVHlwZUVycm9yRnVuY3Rpb25TcGFjZTsKICAgICBJc29TdWJzcGFjZSBz
dHJ1Y3R1cmVSYXJlRGF0YVNwYWNlOwogICAgIElzb1N1YnNwYWNlIHN0cnVjdHVyZVNwYWNlOwog
ICAgIElzb1N1YnNwYWNlIHdlYWtTZXRTcGFjZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIz
MDcyMykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDIwIEBACisyMDE4LTA0LTE3ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisK
KyAgICAgICAgVGhlIEludGVybmFsRnVuY3Rpb24gaGllcmFyY2h5IHNob3VsZCBiZSBpbiBJc29T
dWJzcGFjZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE4NDcyMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IE5vIG5ldyB0ZXN0cyBiZWNhdXNlIG5vIG5ldyBiZWhhdmlvci4KKworICAgICAgICAqIGJpbmRp
bmdzL2pzL1dlYkNvcmVKU0NsaWVudERhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNWTUNs
aWVudERhdGE6OkpTVk1DbGllbnREYXRhKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9XZWJDb3Jl
SlNDbGllbnREYXRhLmg6CisgICAgICAgIChXZWJDb3JlOjpKU1ZNQ2xpZW50RGF0YTo6cnVudGlt
ZU1ldGhvZFNwYWNlKToKKyAgICAgICAgKiBicmlkZ2UvcnVudGltZV9tZXRob2QuY3BwOgorICAg
ICAgICAoSlNDOjpSdW50aW1lTWV0aG9kOjpzdWJzcGFjZUZvckltcGwpOgorICAgICAgICAqIGJy
aWRnZS9ydW50aW1lX21ldGhvZC5oOgorCiAyMDE4LTA0LTE3ICBDaHJpcyBEdW1leiAgPGNkdW1l
ekBhcHBsZS5jb20+CiAKICAgICAgICAgUkVHUkVTU0lPTiAocjIyOTgzMSk6IENNRC1jbGlja2lu
ZyBhbiBpQ2xvdWQgd2ViIGFwcCBsaW5rIHVuZXhwZWN0ZWRseSBvcGVucyB0aGF0IGxpbmsgaW4g
YSBuZXcgdGFiIGFuZCB0aGUgY3VycmVudCB0YWIKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL1dlYkNvcmVKU0NsaWVudERhdGEuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL1dlYkNvcmVKU0NsaWVudERhdGEuY3BwCShyZXZpc2lvbiAyMzA3MjMp
CisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9XZWJDb3JlSlNDbGllbnREYXRhLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMzUsNiArMzUsNyBAQAogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3Jl
L01hcmtpbmdDb25zdHJhaW50Lmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvU3Vic3BhY2VJ
bmxpbmVzLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvVk0uaD4KKyNpbmNsdWRlICJydW50
aW1lX21ldGhvZC5oIgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKQEAgLTQzLDYgKzQ0LDcgQEAgdXNpbmcgbmFtZXNwYWNlIEpTQzsKIEpTVk1DbGll
bnREYXRhOjpKU1ZNQ2xpZW50RGF0YShWTSYgdm0pCiAgICAgOiBtX2J1aWx0aW5GdW5jdGlvbnMo
dm0pCiAgICAgLCBtX2J1aWx0aW5OYW1lcygmdm0pCisgICAgLCBtX3J1bnRpbWVNZXRob2RTcGFj
ZSBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2Vs
bFR5cGUuZ2V0KCksIFJ1bnRpbWVNZXRob2QpCiAgICAgLCBtX291dHB1dENvbnN0cmFpbnRTcGFj
ZSgiV2ViQ29yZSBXcmFwcGVyIHcvIE91dHB1dCBDb25zdHJhaW50Iiwgdm0uaGVhcCwgdm0uZGVz
dHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmdldCgpLCB2bS5mYXN0TWFsbG9jQWxsb2NhdG9y
LmdldCgpKQogICAgICwgbV9nbG9iYWxPYmplY3RPdXRwdXRDb25zdHJhaW50U3BhY2UoIldlYkNv
cmUgR2xvYmFsIE9iamVjdCB3LyBPdXRwdXQgQ29uc3RyYWludCIsIHZtLmhlYXAsIHZtLnNlZ21l
bnRlZFZhcmlhYmxlT2JqZWN0SGVhcENlbGxUeXBlLmdldCgpLCB2bS5mYXN0TWFsbG9jQWxsb2Nh
dG9yLmdldCgpKQogewpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV2ViQ29yZUpT
Q2xpZW50RGF0YS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dl
YkNvcmVKU0NsaWVudERhdGEuaAkocmV2aXNpb24gMjMwNzIzKQorKysgU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvV2ViQ29yZUpTQ2xpZW50RGF0YS5oCSh3b3JraW5nIGNvcHkpCkBAIC01OSw2
ICs1OSw4IEBAIHB1YmxpYzoKICAgICBXZWJDb3JlQnVpbHRpbk5hbWVzJiBidWlsdGluTmFtZXMo
KSB7IHJldHVybiBtX2J1aWx0aW5OYW1lczsgfQogICAgIEpTQnVpbHRpbkZ1bmN0aW9ucyYgYnVp
bHRpbkZ1bmN0aW9ucygpIHsgcmV0dXJuIG1fYnVpbHRpbkZ1bmN0aW9uczsgfQogICAgIAorICAg
IEpTQzo6SXNvU3Vic3BhY2UmIHJ1bnRpbWVNZXRob2RTcGFjZSgpIHsgcmV0dXJuIG1fcnVudGlt
ZU1ldGhvZFNwYWNlOyB9CisgICAgCiAgICAgSlNDOjpDb21wbGV0ZVN1YnNwYWNlJiBvdXRwdXRD
b25zdHJhaW50U3BhY2UoKSB7IHJldHVybiBtX291dHB1dENvbnN0cmFpbnRTcGFjZTsgfQogICAg
IEpTQzo6Q29tcGxldGVTdWJzcGFjZSYgZ2xvYmFsT2JqZWN0T3V0cHV0Q29uc3RyYWludFNwYWNl
KCkgeyByZXR1cm4gbV9nbG9iYWxPYmplY3RPdXRwdXRDb25zdHJhaW50U3BhY2U7IH0KICAgICAK
QEAgLTc2LDYgKzc4LDggQEAgcHJpdmF0ZToKICAgICBKU0J1aWx0aW5GdW5jdGlvbnMgbV9idWls
dGluRnVuY3Rpb25zOwogICAgIFdlYkNvcmVCdWlsdGluTmFtZXMgbV9idWlsdGluTmFtZXM7CiAg
ICAgCisgICAgSlNDOjpJc29TdWJzcGFjZSBtX3J1bnRpbWVNZXRob2RTcGFjZTsKKyAgICAKICAg
ICBKU0M6OkNvbXBsZXRlU3Vic3BhY2UgbV9vdXRwdXRDb25zdHJhaW50U3BhY2U7CiAgICAgSlND
OjpDb21wbGV0ZVN1YnNwYWNlIG1fZ2xvYmFsT2JqZWN0T3V0cHV0Q29uc3RyYWludFNwYWNlOwog
fTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX21ldGhvZC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfbWV0aG9kLmNwcAkocmV2aXNp
b24gMjMwNzIzKQorKysgU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfbWV0aG9kLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDMs
IDIwMDgsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDAzLTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiSlNET01C
aW5kaW5nLmgiCiAjaW5jbHVkZSAiSlNIVE1MRWxlbWVudC5oIgogI2luY2x1ZGUgIkpTUGx1Z2lu
RWxlbWVudEZ1bmN0aW9ucy5oIgorI2luY2x1ZGUgIldlYkNvcmVKU0NsaWVudERhdGEuaCIKICNp
bmNsdWRlICJydW50aW1lX29iamVjdC5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Vycm9y
Lmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRnVuY3Rpb25Qcm90b3R5cGUuaD4KQEAgLTc5
LDYgKzgwLDExIEBAIGJvb2wgUnVudGltZU1ldGhvZDo6Z2V0T3duUHJvcGVydHlTbG90KEoKICAg
ICByZXR1cm4gSW50ZXJuYWxGdW5jdGlvbjo6Z2V0T3duUHJvcGVydHlTbG90KHRoaXNPYmplY3Qs
IGV4ZWMsIHByb3BlcnR5TmFtZSwgc2xvdCk7CiB9CiAKK0lzb1N1YnNwYWNlKiBSdW50aW1lTWV0
aG9kOjpzdWJzcGFjZUZvckltcGwoVk0mIHZtKQoreworICAgIHJldHVybiAmc3RhdGljX2Nhc3Q8
SlNWTUNsaWVudERhdGEqPih2bS5jbGllbnREYXRhKS0+cnVudGltZU1ldGhvZFNwYWNlKCk7Cit9
CisKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxSdW50aW1lTWV0aG9k
KEV4ZWNTdGF0ZSogZXhlYykKIHsKICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwpJbmRleDogU291
cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfbWV0aG9kLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfbWV0aG9kLmgJKHJldmlzaW9uIDIzMDcyMykKKysrIFNv
dXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX21ldGhvZC5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwMywgMjAwOCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDMtMjAxOCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAg
LTM3LDYgKzM3LDEzIEBAIHB1YmxpYzoKICAgICB0eXBlZGVmIEludGVybmFsRnVuY3Rpb24gQmFz
ZTsKICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1
Y3R1cmVGbGFncyB8IE92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCB8IFR5cGVPZlNob3VsZENh
bGxHZXRDYWxsRGF0YTsKIAorICAgIHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlPgorICAgIHN0
YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQorICAgIHsKKyAgICAgICAgc3Rh
dGljX2Fzc2VydChzaXplb2YoQ2VsbFR5cGUpID09IHNpemVvZihSdW50aW1lTWV0aG9kKSwgIlJ1
bnRpbWVNZXRob2Qgc3ViY2xhc3NlcyB0aGF0IGFkZCBmaWVsZHMgbmVlZCB0byBvdmVycmlkZSBz
dWJzcGFjZUZvcjw+KCkiKTsKKyAgICAgICAgcmV0dXJuIHN1YnNwYWNlRm9ySW1wbCh2bSk7Cisg
ICAgfQorICAgIAogICAgIHN0YXRpYyBSdW50aW1lTWV0aG9kKiBjcmVhdGUoRXhlY1N0YXRlKiwg
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0
IFN0cmluZyYgbmFtZSwgQmluZGluZ3M6Ok1ldGhvZCogbWV0aG9kKQogICAgIHsKICAgICAgICAg
Vk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwpAQCAtNjgsNiArNzUsOCBAQCBwcm90ZWN0ZWQ6
CiBwcml2YXRlOgogICAgIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBsZW5ndGhHZXR0ZXIoRXhlY1N0
YXRlKiwgRW5jb2RlZEpTVmFsdWUsIFByb3BlcnR5TmFtZSk7CiAKKyAgICBzdGF0aWMgSXNvU3Vi
c3BhY2UqIHN1YnNwYWNlRm9ySW1wbChWTSYpOworCiAgICAgQmluZGluZ3M6Ok1ldGhvZCogbV9t
ZXRob2Q7CiB9OwogCkluZGV4OiBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwkocmV2aXNpb24gMjMwNzIzKQorKysgU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyMyBAQAorMjAxOC0wNC0x
NyAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAgIFRoZSBJbnRlcm5h
bEZ1bmN0aW9uIGhpZXJhcmNoeSBzaG91bGQgYmUgaW4gSXNvU3Vic3BhY2VzCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODQ3MjEKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lu
cy9OZXRzY2FwZS9KU05QTWV0aG9kLmNwcDoKKyAgICAgICAgKFdlYktpdDo6SlNOUE1ldGhvZDo6
c3Vic3BhY2VGb3JJbXBsKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUv
SlNOUE1ldGhvZC5oOgorICAgICAgICAoV2ViS2l0OjpKU05QTWV0aG9kOjpjcmVhdGUpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViS2l0OjpKU05QTWV0aG9kOjpucElkZW50aWZpZXIgY29uc3QpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpKU05QTWV0aG9kOjpjcmVhdGVTdHJ1Y3R1cmUpOiBE
ZWxldGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9KU05QT2JqZWN0
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6SlNOUE9iamVjdDo6c3Vic3BhY2VGb3JJbXBsKToKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvSlNOUE9iamVjdC5oOgorICAgICAg
ICAoV2ViS2l0OjpKU05QT2JqZWN0OjpjcmVhdGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0
OjpKU05QT2JqZWN0OjpucE9iamVjdCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6
OkpTTlBPYmplY3Q6OmNyZWF0ZVN0cnVjdHVyZSk6IERlbGV0ZWQuCisKIDIwMTgtMDQtMTcgIENo
cmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBSRUdSRVNTSU9OIChyMjI5
ODMxKTogQ01ELWNsaWNraW5nIGFuIGlDbG91ZCB3ZWIgYXBwIGxpbmsgdW5leHBlY3RlZGx5IG9w
ZW5zIHRoYXQgbGluayBpbiBhIG5ldyB0YWIgYW5kIHRoZSBjdXJyZW50IHRhYgpJbmRleDogU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvSlNOUE1ldGhvZC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvSlNO
UE1ldGhvZC5jcHAJKHJldmlzaW9uIDIzMDcyMykKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9QbHVnaW5zL05ldHNjYXBlL0pTTlBNZXRob2QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUg
KzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCwgMjAxNiBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAxOCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMx
LDYgKzMxLDggQEAKICNpbmNsdWRlICJKU05QT2JqZWN0LmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlw
dENvcmUvRXJyb3IuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9GdW5jdGlvblByb3RvdHlw
ZS5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0lzb1N1YnNwYWNlUGVyVk0uaD4KKyNpbmNs
dWRlIDxKYXZhU2NyaXB0Q29yZS9KU0Rlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5oPgog
I2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTR2xvYmFsT2JqZWN0Lmg+CiAjaW5jbHVkZSA8SmF2
YVNjcmlwdENvcmUvSlNPYmplY3QuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0pTSFRNTEVsZW1lbnQu
aD4KQEAgLTU5LDYgKzYxLDEyIEBAIHZvaWQgSlNOUE1ldGhvZDo6ZmluaXNoQ3JlYXRpb24oVk0m
IHZtLCAKICAgICBBU1NFUlQoaW5oZXJpdHModm0sIGluZm8oKSkpOwogfQogCitJc29TdWJzcGFj
ZSogSlNOUE1ldGhvZDo6c3Vic3BhY2VGb3JJbXBsKFZNJiB2bSkKK3sKKyAgICBzdGF0aWMgTmV2
ZXJEZXN0cm95ZWQ8SXNvU3Vic3BhY2VQZXJWTT4gcGVyVk0oW10gKFZNJiB2bSkgeyByZXR1cm4g
SVNPX1NVQlNQQUNFX1BBUkFNRVRFUlModm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBl
LmdldCgpLCBKU05QTWV0aG9kKTsgfSk7CisgICAgcmV0dXJuICZwZXJWTS5nZXQoKS5mb3JWTSh2
bSk7Cit9CisKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxNZXRob2Qo
RXhlY1N0YXRlKiBleGVjKQogewogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9KU05QTWV0aG9kLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvSlNOUE1l
dGhvZC5oCShyZXZpc2lvbiAyMzA3MjMpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1
Z2lucy9OZXRzY2FwZS9KU05QTWV0aG9kLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBA
CiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMC0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzcsMTAgKzM3LDE2IEBA
IHR5cGVkZWYgdm9pZCogTlBJZGVudGlmaWVyOwogbmFtZXNwYWNlIFdlYktpdCB7CiAKIC8vIEEg
SlNPYmplY3QgdGhhdCB3cmFwcyBhbiBOUE1ldGhvZC4KLWNsYXNzIEpTTlBNZXRob2QgOiBwdWJs
aWMgSlNDOjpJbnRlcm5hbEZ1bmN0aW9uIHsKK2NsYXNzIEpTTlBNZXRob2QgZmluYWwgOiBwdWJs
aWMgSlNDOjpJbnRlcm5hbEZ1bmN0aW9uIHsKIHB1YmxpYzoKICAgICB0eXBlZGVmIEpTQzo6SW50
ZXJuYWxGdW5jdGlvbiBCYXNlOwogCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGU+Cisg
ICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQorICAg
IHsKKyAgICAgICAgcmV0dXJuIHN1YnNwYWNlRm9ySW1wbCh2bSk7CisgICAgfQorCiAgICAgc3Rh
dGljIEpTTlBNZXRob2QqIGNyZWF0ZShKU0M6OkV4ZWNTdGF0ZSogZXhlYywgSlNDOjpKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBTdHJpbmcmIG5hbWUsIE5QSWRlbnRpZmllciBu
cElkZW50KQogICAgIHsKICAgICAgICAgSlNDOjpWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7
CkBAIC01Nyw3ICs2Myw5IEBAIHB1YmxpYzoKIHByb3RlY3RlZDoKICAgICB2b2lkIGZpbmlzaENy
ZWF0aW9uKEpTQzo6Vk0mLCBjb25zdCBTdHJpbmcmIG5hbWUpOwogCi1wcml2YXRlOiAgICAKK3By
aXZhdGU6CisgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9ySW1wbChKU0M6
OlZNJik7CisgICAgCiAgICAgSlNOUE1ldGhvZChKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpT
dHJ1Y3R1cmUqLCBOUElkZW50aWZpZXIpOwogCiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBj
cmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9QbHVnaW5zL05ldHNjYXBlL0pTTlBPYmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL0pTTlBPYmplY3QuY3BwCShyZXZp
c2lvbiAyMzA3MjMpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2Fw
ZS9KU05QT2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTAsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDEwLTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zNSw2ICszNSw4IEBACiAjaW5j
bHVkZSA8SmF2YVNjcmlwdENvcmUvQXV4aWxpYXJ5QmFycmllcklubGluZXMuaD4KICNpbmNsdWRl
IDxKYXZhU2NyaXB0Q29yZS9FcnJvci5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0lkZW50
aWZpZXJJbmxpbmVzLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSXNvU3Vic3BhY2VQZXJW
TS5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTRGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENl
bGxUeXBlLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNHbG9iYWxPYmplY3QuaD4KICNp
bmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0xvY2suaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29y
ZS9PYmplY3RQcm90b3R5cGUuaD4KQEAgLTUyNyw2ICs1MjksMTIgQEAgSlNPYmplY3QqIEpTTlBP
YmplY3Q6OnRocm93SW52YWxpZEFjY2VzcwogICAgIHJldHVybiB0aHJvd0V4Y2VwdGlvbihleGVj
LCBzY29wZSwgY3JlYXRlUmVmZXJlbmNlRXJyb3IoZXhlYywgIlRyeWluZyB0byBhY2Nlc3Mgb2Jq
ZWN0IGZyb20gZGVzdHJveWVkIHBsdWctaW4uIikpOwogfQogCitJc29TdWJzcGFjZSogSlNOUE9i
amVjdDo6c3Vic3BhY2VGb3JJbXBsKFZNJiB2bSkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95
ZWQ8SXNvU3Vic3BhY2VQZXJWTT4gcGVyVk0oW10gKFZNJiB2bSkgeyByZXR1cm4gSVNPX1NVQlNQ
QUNFX1BBUkFNRVRFUlModm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmdldCgpLCBK
U05QT2JqZWN0KTsgfSk7CisgICAgcmV0dXJuICZwZXJWTS5nZXQoKS5mb3JWTSh2bSk7Cit9CisK
IH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAjZW5kaWYgLy8gRU5BQkxFKE5FVFNDQVBFX1BMVUdJ
Tl9BUEkpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9K
U05QT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdp
bnMvTmV0c2NhcGUvSlNOUE9iamVjdC5oCShyZXZpc2lvbiAyMzA3MjMpCisrKyBTb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9KU05QT2JqZWN0LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMC0yMDE4IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpA
QCAtNDEsMTEgKzQxLDE3IEBAIGNsYXNzIE5QUnVudGltZU9iamVjdE1hcDsKICAgICAKIC8vIEpT
TlBPYmplY3QgaXMgYSBKU09iamVjdCB0aGF0IHdyYXBzIGFuIE5QT2JqZWN0LgogCi1jbGFzcyBK
U05QT2JqZWN0IDogcHVibGljIEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QgeworY2xhc3MgSlNO
UE9iamVjdCBmaW5hbCA6IHB1YmxpYyBKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0IHsKIHB1Ymxp
YzoKICAgICB0eXBlZGVmIEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QgQmFzZTsKICAgICBzdGF0
aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8
IEpTQzo6T3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90IHwgSlNDOjpPdmVycmlkZXNHZXRQcm9w
ZXJ0eU5hbWVzIHwgSlNDOjpUeXBlT2ZTaG91bGRDYWxsR2V0Q2FsbERhdGE7CiAKKyAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBDZWxsVHlwZT4KKyAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vi
c3BhY2VGb3IoSlNDOjpWTSYgdm0pCisgICAgeworICAgICAgICByZXR1cm4gc3Vic3BhY2VGb3JJ
bXBsKHZtKTsKKyAgICB9CisKICAgICBzdGF0aWMgSlNOUE9iamVjdCogY3JlYXRlKEpTQzo6SlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgTlBSdW50aW1lT2JqZWN0TWFwKiBvYmplY3RNYXAs
IE5QT2JqZWN0KiBucE9iamVjdCkKICAgICB7CiAgICAgICAgIEpTQzo6U3RydWN0dXJlKiBzdHJ1
Y3R1cmUgPSBjcmVhdGVTdHJ1Y3R1cmUoZ2xvYmFsT2JqZWN0LT52bSgpLCBnbG9iYWxPYmplY3Qs
IGdsb2JhbE9iamVjdC0+b2JqZWN0UHJvdG90eXBlKCkpOwpAQCAtNzQsNiArODAsOCBAQCBwcm90
ZWN0ZWQ6CiAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihKU0M6OkpTR2xvYmFsT2JqZWN0Kik7CiAK
IHByaXZhdGU6CisgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9ySW1wbChK
U0M6OlZNJik7CisgICAgCiAgICAgSlNOUE9iamVjdChKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlND
OjpTdHJ1Y3R1cmUqLCBOUFJ1bnRpbWVPYmplY3RNYXAqLCBOUE9iamVjdCopOwogICAgIAogICAg
IHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6
OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>338188</attachid>
            <date>2018-04-17 19:52:02 -0700</date>
            <delta_ts>2018-04-17 20:01:02 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>48563</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjMwNzQxKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ2IEBA
CisyMDE4LTA0LTE3ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
VGhlIEludGVybmFsRnVuY3Rpb24gaGllcmFyY2h5IHNob3VsZCBiZSBpbiBJc29TdWJzcGFjZXMK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4NDcyMQor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAgICAKKyAgICAgICAg
VGhpcyBtb3ZlcyBJbnRlcm5hbEZ1bmN0aW9uIGludG8gYSBJc29TdWJzcGFjZS4gSXQgYWxzbyBt
b3ZlcyBhbGwgc3ViY2xhc3NlcyBpbnRvIElzb1N1YnNwYWNlcywKKyAgICAgICAgYnV0IHN1YmNs
YXNzZXMgdGhhdCBhcmUgdGhlIHNhbWUgc2l6ZSBhcyBJbnRlcm5hbEZ1bmN0aW9uIHNoYXJlIGl0
cyBzdWJzcGFjZS4gSSBkaWQgdGhpcworICAgICAgICBiZWNhdXNlIHRoZSBzdWJjbGFzc2VzIGFw
cGVhciB0byBqdXN0IG92ZXJyaWRlIG1ldGhvZHMsIHdoaWNoIGFyZSBjYWxsZWQgZHluYW1pY2Fs
bHkgdmlhIHRoZQorICAgICAgICBzdHJ1Y3R1cmUgb3IgY2xhc3Mgb2YgdGhlIG9iamVjdC4gU28s
IEkgZG9uJ3Qgc2VlIGEgdHlwZSBjb25mdXNpb24gcmlzayBpZiBVQUYgaXMgdXNlZCB0bworICAg
ICAgICBhbGxvY2F0ZSBvbmUga2luZCBvZiBJbnRlcm5hbEZ1bmN0aW9uIG92ZXIgYW5vdGhlci4K
KworICAgICAgICAqIEFQSS9KU0Jhc2UuaDoKKyAgICAgICAgKiBBUEkvSlNDYWxsYmFja0Z1bmN0
aW9uLmg6CisgICAgICAgICogQVBJL09iakNDYWxsYmFja0Z1bmN0aW9uLmg6CisgICAgICAgIChK
U0M6Ok9iakNDYWxsYmFja0Z1bmN0aW9uOjpzdWJzcGFjZUZvcik6CisgICAgICAgICogQ01ha2VM
aXN0cy50eHQ6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvajoKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBoZWFwL0lzb1N1YnNwYWNl
UGVyVk0uY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6SXNvU3Vic3BhY2VQZXJWTTo6QXV0b3Jl
bW92aW5nSXNvU3Vic3BhY2U6OkF1dG9yZW1vdmluZ0lzb1N1YnNwYWNlKToKKyAgICAgICAgKEpT
Qzo6SXNvU3Vic3BhY2VQZXJWTTo6QXV0b3JlbW92aW5nSXNvU3Vic3BhY2U6On5BdXRvcmVtb3Zp
bmdJc29TdWJzcGFjZSk6CisgICAgICAgIChKU0M6Oklzb1N1YnNwYWNlUGVyVk06Oklzb1N1YnNw
YWNlUGVyVk0pOgorICAgICAgICAoSlNDOjpJc29TdWJzcGFjZVBlclZNOjp+SXNvU3Vic3BhY2VQ
ZXJWTSk6CisgICAgICAgIChKU0M6Oklzb1N1YnNwYWNlUGVyVk06OmZvclZNKToKKyAgICAgICAg
KiBoZWFwL0lzb1N1YnNwYWNlUGVyVk0uaDogQWRkZWQuCisgICAgICAgIChKU0M6Oklzb1N1YnNw
YWNlUGVyVk06OlN1YnNwYWNlUGFyYW1ldGVyczo6U3Vic3BhY2VQYXJhbWV0ZXJzKToKKyAgICAg
ICAgKiBydW50aW1lL0Vycm9yLmg6CisgICAgICAgICogcnVudGltZS9FcnJvckNvbnN0cnVjdG9y
Lmg6CisgICAgICAgICogcnVudGltZS9JbnRlcm5hbEZ1bmN0aW9uLmg6CisgICAgICAgIChKU0M6
OkludGVybmFsRnVuY3Rpb246OnN1YnNwYWNlRm9yKToKKyAgICAgICAgKiBydW50aW1lL0ludGxD
b2xsYXRvckNvbnN0cnVjdG9yLmg6CisgICAgICAgICogcnVudGltZS9JbnRsRGF0ZVRpbWVGb3Jt
YXRDb25zdHJ1Y3Rvci5oOgorICAgICAgICAqIHJ1bnRpbWUvSW50bE51bWJlckZvcm1hdENvbnN0
cnVjdG9yLmg6CisgICAgICAgICogcnVudGltZS9KU0FycmF5QnVmZmVyQ29uc3RydWN0b3IuaDoK
KyAgICAgICAgKiBydW50aW1lL05hdGl2ZUVycm9yQ29uc3RydWN0b3IuaDoKKyAgICAgICAgKiBy
dW50aW1lL1Byb3h5UmV2b2tlLmg6CisgICAgICAgICogcnVudGltZS9SZWdFeHBDb25zdHJ1Y3Rv
ci5oOgorICAgICAgICAqIHJ1bnRpbWUvVk0uY3BwOgorICAgICAgICAoSlNDOjpWTTo6Vk0pOgor
ICAgICAgICAqIHJ1bnRpbWUvVk0uaDoKKwogMjAxOC0wNC0xNyAgQ29tbWl0IFF1ZXVlICA8Y29t
bWl0LXF1ZXVlQHdlYmtpdC5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQg
cjIzMDY5NywgcjIzMDcyMCwgYW5kIHIyMzA3MjQuCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ01ha2VMaXN0cy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0NN
YWtlTGlzdHMudHh0CShyZXZpc2lvbiAyMzA3MjMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Q01ha2VMaXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTUzMSw2ICs1MzEsNyBAQCBzZXQoSmF2
YVNjcmlwdENvcmVfUFJJVkFURV9GUkFNRVdPUktfSEVBCiAgICAgaGVhcC9JbmNyZW1lbnRhbFN3
ZWVwZXIuaAogICAgIGhlYXAvSXNvQ2VsbFNldC5oCiAgICAgaGVhcC9Jc29TdWJzcGFjZS5oCisg
ICAgaGVhcC9Jc29TdWJzcGFjZVBlclZNLmgKICAgICBoZWFwL0xhcmdlQWxsb2NhdGlvbi5oCiAg
ICAgaGVhcC9MaXN0YWJsZUhhbmRsZXIuaAogICAgIGhlYXAvTG9jYWxBbGxvY2F0b3IuaApJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0Cj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dAkocmV2aXNpb24gMjMwNzIzKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC01MDIsNiArNTAy
LDcgQEAgaGVhcC9JbmNyZW1lbnRhbFN3ZWVwZXIuY3BwCiBoZWFwL0lzb0FsaWduZWRNZW1vcnlB
bGxvY2F0b3IuY3BwCiBoZWFwL0lzb0NlbGxTZXQuY3BwCiBoZWFwL0lzb1N1YnNwYWNlLmNwcAor
aGVhcC9Jc29TdWJzcGFjZVBlclZNLmNwcAogaGVhcC9KSVRTdHViUm91dGluZVNldC5jcHAKIGhl
YXAvTGFyZ2VBbGxvY2F0aW9uLmNwcAogaGVhcC9Mb2NhbEFsbG9jYXRvci5jcHAKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNCYXNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL0FQSS9KU0Jhc2UuaAkocmV2aXNpb24gMjMwNzIzKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL0FQSS9KU0Jhc2UuaAkod29ya2luZyBjb3B5KQpAQCAtMTQzLDcgKzE0Myw3
IEBAIEpTX0VYUE9SVCB2b2lkIEpTR2FyYmFnZUNvbGxlY3QoSlNDb250ZXgKIH0KICNlbmRpZgog
Ci0vKiBFbmFibGUgdGhlIE9iamVjdGl2ZS1DIEFQSSBmb3IgcGxhdGZvcm1zIHdpdGggYSBtb2Rl
cm4gcnVudGltZS4gKi8KKy8qIEVuYWJsZSB0aGUgT2JqZWN0aXZlLUMgQVBJIGZvciBwbGF0Zm9y
bXMgd2l0aCBhIG1vZGVybiBydW50aW1lLiBOT1RFOiBUaGlzIGlzIGR1cGxpY2F0ZWQgaW4gVk0u
aC4gKi8KICNpZiAhZGVmaW5lZChKU0NfT0JKQ19BUElfRU5BQkxFRCkKICNpZiAoZGVmaW5lZChf
X2NsYW5nX18pICYmIGRlZmluZWQoX19BUFBMRV9fKSAmJiAoKGRlZmluZWQoX19NQUNfT1NfWF9W
RVJTSU9OX01JTl9SRVFVSVJFRCkgJiYgIWRlZmluZWQoX19pMzg2X18pKSB8fCAoZGVmaW5lZChU
QVJHRVRfT1NfSVBIT05FKSAmJiBUQVJHRVRfT1NfSVBIT05FKSkpCiAjZGVmaW5lIEpTQ19PQkpD
X0FQSV9FTkFCTEVEIDEKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFj
a0Z1bmN0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0Nh
bGxiYWNrRnVuY3Rpb24uaAkocmV2aXNpb24gMjMwNzIzKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL0FQSS9KU0NhbGxiYWNrRnVuY3Rpb24uaAkod29ya2luZyBjb3B5KQpAQCAtMzcsNiArMzcs
MTIgQEAgY2xhc3MgSlNDYWxsYmFja0Z1bmN0aW9uIGZpbmFsIDogcHVibGljIAogcHVibGljOgog
ICAgIHR5cGVkZWYgSW50ZXJuYWxGdW5jdGlvbiBCYXNlOwogCisgICAgdGVtcGxhdGU8dHlwZW5h
bWUgQ2VsbFR5cGU+CisgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0p
CisgICAgeworICAgICAgICByZXR1cm4gJnZtLmNhbGxiYWNrRnVuY3Rpb25TcGFjZTsKKyAgICB9
CisKICAgICBzdGF0aWMgSlNDYWxsYmFja0Z1bmN0aW9uKiBjcmVhdGUoVk0mLCBKU0dsb2JhbE9i
amVjdCosIEpTT2JqZWN0Q2FsbEFzRnVuY3Rpb25DYWxsYmFjaywgY29uc3QgU3RyaW5nJiBuYW1l
KTsKIAogICAgIERFQ0xBUkVfSU5GTzsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkv
T2JqQ0NhbGxiYWNrRnVuY3Rpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvQVBJL09iakNDYWxsYmFja0Z1bmN0aW9uLmgJKHJldmlzaW9uIDIzMDcyMykKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9BUEkvT2JqQ0NhbGxiYWNrRnVuY3Rpb24uaAkod29ya2luZyBjb3B5
KQpAQCAtNDgsNiArNDgsMTIgQEAgY2xhc3MgT2JqQ0NhbGxiYWNrRnVuY3Rpb24gOiBwdWJsaWMg
SW50ZQogcHVibGljOgogICAgIHR5cGVkZWYgSW50ZXJuYWxGdW5jdGlvbiBCYXNlOwogCisgICAg
dGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGU+CisgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJz
cGFjZUZvcihWTSYgdm0pCisgICAgeworICAgICAgICByZXR1cm4gJnZtLm9iakNDYWxsYmFja0Z1
bmN0aW9uU3BhY2U7CisgICAgfQorCiAgICAgc3RhdGljIE9iakNDYWxsYmFja0Z1bmN0aW9uKiBj
cmVhdGUoVk0mLCBKU0dsb2JhbE9iamVjdCosIGNvbnN0IFN0cmluZyYgbmFtZSwgc3RkOjp1bmlx
dWVfcHRyPE9iakNDYWxsYmFja0Z1bmN0aW9uSW1wbD4pOwogICAgIHN0YXRpYyB2b2lkIGRlc3Ry
b3koSlNDZWxsKik7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvZ2xpYi9KU0ND
YWxsYmFja0Z1bmN0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
QVBJL2dsaWIvSlNDQ2FsbGJhY2tGdW5jdGlvbi5jcHAJKHJldmlzaW9uIDIzMDcyMykKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvZ2xpYi9KU0NDYWxsYmFja0Z1bmN0aW9uLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMSw2ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTggSWdh
bGlhIFMuTC4KLSAqIENvcHlyaWdodCAoQykgMjAwNiwgMjAwOCwgMjAxNiBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYtMjAxOCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAg
LTI5LDYgKzI5LDcgQEAKIAogI2luY2x1ZGUgIkFQSUNhbGxiYWNrRnVuY3Rpb24uaCIKICNpbmNs
dWRlICJBUElDYXN0LmgiCisjaW5jbHVkZSAiSXNvU3Vic3BhY2VQZXJWTS5oIgogI2luY2x1ZGUg
IkpTQ0NsYXNzUHJpdmF0ZS5oIgogI2luY2x1ZGUgIkpTQ0NvbnRleHRQcml2YXRlLmgiCiAjaW5j
bHVkZSAiSlNDRXhjZXB0aW9uUHJpdmF0ZS5oIgpAQCAtMjA2LDQgKzIwNywxMCBAQCB2b2lkIEpT
Q0NhbGxiYWNrRnVuY3Rpb246OmRlc3Ryb3koSlNDZWxsCiAgICAgc3RhdGljX2Nhc3Q8SlNDQ2Fs
bGJhY2tGdW5jdGlvbio+KGNlbGwpLT5KU0NDYWxsYmFja0Z1bmN0aW9uOjp+SlNDQ2FsbGJhY2tG
dW5jdGlvbigpOwogfQogCitJc29TdWJzcGFjZSogSlNDQ2FsbGJhY2tGdW5jdGlvbjo6c3Vic3Bh
Y2VGb3JJbXBsKFZNJiB2bSkKK3sKKyAgICBOZXZlckRlc3Ryb3llZDxJc29TdWJzcGFjZVBlclZN
PiBwZXJWTShbXSAoVk0mIHZtKSAtPiBJc29TdWJzcGFjZVBlclZNOjpTdWJzcGFjZVBhcmFtZXRl
cnMgeyByZXR1cm4gSVNPX1NVQlNQQUNFX1BBUkFNRVRFUlModm0uZGVzdHJ1Y3RpYmxlT2JqZWN0
SGVhcENlbGxUeXBlLmdldCgpLCBKU0NDYWxsYmFja0Z1bmN0aW9uKTsgfSk7CisgICAgcmV0dXJu
ICZwZXJWTS5nZXQoKS5mb3JWTSh2bSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9nbGliL0pTQ0NhbGxiYWNrRnVuY3Rpb24uaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL2dsaWIvSlNDQ2FsbGJhY2tGdW5j
dGlvbi5oCShyZXZpc2lvbiAyMzA3MjMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL2ds
aWIvSlNDQ2FsbGJhY2tGdW5jdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC00MCw2ICs0MCwxMiBA
QCBjbGFzcyBKU0NDYWxsYmFja0Z1bmN0aW9uIDogcHVibGljIEludGVyCiBwdWJsaWM6CiAgICAg
dHlwZWRlZiBJbnRlcm5hbEZ1bmN0aW9uIEJhc2U7CiAKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBD
ZWxsVHlwZT4KKyAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKKyAg
ICB7CisgICAgICAgIHJldHVybiBzdWJzcGFjZUZvckltcGwodm0pOworICAgIH0KKwogICAgIGVu
dW0gY2xhc3MgVHlwZSB7CiAgICAgICAgIEZ1bmN0aW9uLAogICAgICAgICBNZXRob2QsCkBAIC02
MSw2ICs2Nyw4IEBAIHB1YmxpYzoKICAgICBKU09iamVjdFJlZiBjb25zdHJ1Y3QoSlNDb250ZXh0
UmVmLCBzaXplX3QgYXJndW1lbnRDb3VudCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNbXSwg
SlNWYWx1ZVJlZiogZXhjZXB0aW9uKTsKIAogcHJpdmF0ZToKKyAgICBzdGF0aWMgSXNvU3Vic3Bh
Y2UqIHN1YnNwYWNlRm9ySW1wbChWTSYpOworICAgIAogICAgIEpTQ0NhbGxiYWNrRnVuY3Rpb24o
Vk0mLCBTdHJ1Y3R1cmUqLCBUeXBlLCBKU0NDbGFzcyosIEdSZWZQdHI8R0Nsb3N1cmU+JiYsIEdU
eXBlLCBWZWN0b3I8R1R5cGU+JiYpOwogCiAgICAgSlNPYmplY3RDYWxsQXNGdW5jdGlvbkNhbGxi
YWNrIGZ1bmN0aW9uQ2FsbGJhY2soKSB7IHJldHVybiBtX2Z1bmN0aW9uQ2FsbGJhY2s7IH0KSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAyMzA3MjMpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agkod29ya2luZyBjb3B5KQpAQCAtMzQzLDYgKzM0Myw3IEBACiAJCTBGNUNGOTg0MUU5RDUzNzcw
MEMxODY5MiAvKiBBaXJMb3dlclN0YWNrQXJncy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMEY1Q0Y5ODMxRTlENTM3NTAwQzE4NjkyIC8qIEFpckxvd2Vy
U3RhY2tBcmdzLmggKi87IH07CiAJCTBGNUNGOTg5MUU5RUQ2NTIwMEMxODY5MiAvKiBBaXJTdGFj
a0FsbG9jYXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDBGNUNGOTg3MUU5RUQ2NEUwMEMxODY5MiAvKiBBaXJTdGFja0FsbG9jYXRpb24uaCAqLzsg
fTsKIAkJMEY1RTBGRDgyMDdDNzI3MzAwOTdGMERFIC8qIERGR0Fic3RyYWN0SW50ZXJwcmV0ZXJD
bG9iYmVyU3RhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDBGNUUwRkQ2MjA3QzcyNzEwMDk3RjBERSAvKiBERkdBYnN0cmFjdEludGVycHJldGVyQ2xv
YmJlclN0YXRlLmggKi87IH07CisJCTBGNUUwRkU3MjA4NkFENDgwMDk3RjBERSAvKiBJc29TdWJz
cGFjZVBlclZNLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAwRjVFMEZFNTIwODZBRDQ2MDA5N0YwREUgLyogSXNvU3Vic3BhY2VQZXJWTS5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGNUVGOTFGMTY4NzhG
N0QwMDNFNUMyNSAvKiBKSVRUaHVua3MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDBGNUVGOTFDMTY4NzhGNzgwMDNFNUMyNSAvKiBKSVRUaHVua3MuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjVGMDhD
RjE0NkM3NjMzMDAwNDcyQTkgLyogVW5jb25kaXRpb25hbEZpbmFsaXplci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY1RjA4Q0UxNDZDNzYyRjAwMDQ3
MkE5IC8qIFVuY29uZGl0aW9uYWxGaW5hbGl6ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjYwRkU5MDFGRkMzNzAyMDAwMzMyMEEgLyogRXhl
Y3V0YWJsZVRvQ29kZUJsb2NrRWRnZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMEY2MEZFOEUxRkZDMzZGRDAwMDMzMjBBIC8qIEV4ZWN1dGFibGVUb0Nv
ZGVCbG9ja0VkZ2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwpAQCAtMjM1MCw2ICsyMzUxLDggQEAKIAkJMEY1RDA4NUMxQjhDRjk5RDAwMTE0M0I0IC8q
IERGR05vZGVPcmlnaW4uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0g
REZHTm9kZU9yaWdpbi5jcHA7IHBhdGggPSBkZmcvREZHTm9kZU9yaWdpbi5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNUUwRkQ2MjA3QzcyNzEwMDk3RjBERSAvKiBERkdBYnN0
cmFjdEludGVycHJldGVyQ2xvYmJlclN0YXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
bmFtZSA9IERGR0Fic3RyYWN0SW50ZXJwcmV0ZXJDbG9iYmVyU3RhdGUuaDsgcGF0aCA9IGRmZy9E
RkdBYnN0cmFjdEludGVycHJldGVyQ2xvYmJlclN0YXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTBGNUUwRkQ3MjA3QzcyNzEwMDk3RjBERSAvKiBERkdBYnN0cmFjdEludGVycHJl
dGVyQ2xvYmJlclN0YXRlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9
IERGR0Fic3RyYWN0SW50ZXJwcmV0ZXJDbG9iYmVyU3RhdGUuY3BwOyBwYXRoID0gZGZnL0RGR0Fi
c3RyYWN0SW50ZXJwcmV0ZXJDbG9iYmVyU3RhdGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQkwRjVFMEZFNTIwODZBRDQ2MDA5N0YwREUgLyogSXNvU3Vic3BhY2VQZXJWTS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJc29TdWJzcGFjZVBlclZNLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGNUUwRkU2MjA4NkFENDcwMDk3RjBERSAvKiBJc29T
dWJzcGFjZVBlclZNLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IElz
b1N1YnNwYWNlUGVyVk0uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjVFRjkx
QjE2ODc4Rjc4MDAzRTVDMjUgLyogSklUVGh1bmtzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEpJVFRodW5rcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTBGNUVGOTFDMTY4NzhGNzgwMDNFNUMyNSAvKiBKSVRUaHVua3MuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gSklUVGh1bmtzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTBGNUYwOENFMTQ2Qzc2MkYwMDA0NzJBOSAvKiBVbmNvbmRpdGlvbmFsRmluYWxpemVy
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFVuY29uZGl0aW9uYWxGaW5hbGl6
ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTU2OTUsNiArNTY5OCw4IEBACiAJ
CQkJMEZCNDY3N0IxRkREQTZEODAwM0ZDQjA5IC8qIElzb0NlbGxTZXRJbmxpbmVzLmggKi8sCiAJ
CQkJMEZEQ0UxMkMxRkFGQjRERTAwNkYzOTAxIC8qIElzb1N1YnNwYWNlLmNwcCAqLywKIAkJCQkw
RkRDRTEyQjFGQUZCNERFMDA2RjM5MDEgLyogSXNvU3Vic3BhY2UuaCAqLywKKwkJCQkwRjVFMEZF
NjIwODZBRDQ3MDA5N0YwREUgLyogSXNvU3Vic3BhY2VQZXJWTS5jcHAgKi8sCisJCQkJMEY1RTBG
RTUyMDg2QUQ0NjAwOTdGMERFIC8qIElzb1N1YnNwYWNlUGVyVk0uaCAqLywKIAkJCQkwRjc2NkQy
OTE1QThDQzM0MDA4RjM2M0UgLyogSklUU3R1YlJvdXRpbmVTZXQuY3BwICovLAogCQkJCTBGNzY2
RDJBMTVBOENDMzQwMDhGMzYzRSAvKiBKSVRTdHViUm91dGluZVNldC5oICovLAogCQkJCTBGMDcw
QTQ1MUQ1NDNBODkwMDZFNzIzMiAvKiBMYXJnZUFsbG9jYXRpb24uY3BwICovLApAQCAtOTQ5MSw2
ICs5NDk2LDcgQEAKIAkJCQk1M0Y4RDIwMDFFODM4N0Q0MDBEMjExMTYgLyogV2FzbUJCUVBsYW5J
bmxpbmVzLmggaW4gSGVhZGVycyAqLywKIAkJCQlBRDRCMURGQTFERjI0NEUyMDA3MUFFMzIgLyog
V2FzbUJpbmRpbmcuaCBpbiBIZWFkZXJzICovLAogCQkJCTUyNUMwRERBMUU5MzU4NDcwMDIxODRD
RCAvKiBXYXNtQ2FsbGVlLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjVFMEZFNzIwODZBRDQ4MDA5
N0YwREUgLyogSXNvU3Vic3BhY2VQZXJWTS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTNGRDA0RDQx
RDdBQjI5MTAwMzI4N0QzIC8qIFdhc21DYWxsaW5nQ29udmVudGlvbi5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJNTI2QUM0QjcxRTk3N0M1RDAwMzUwMEUxIC8qIFdhc21Db2RlQmxvY2suaCBpbiBIZWFk
ZXJzICovLAogCQkJCUFENDEyQjM0MUU3QjJFOUUwMDhBRjE1NyAvKiBXYXNtQ29udGV4dC5oIGlu
IEhlYWRlcnMgKi8sCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Jc29TdWJzcGFj
ZVBlclZNLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Jc29T
dWJzcGFjZVBlclZNLmNwcAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9Jc29TdWJzcGFjZVBlclZNLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDczIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQor
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKyNpbmNsdWRlICJJc29TdWJzcGFjZVBlclZNLmgiCisKKyNpbmNsdWRlICJK
U0NJbmxpbmVzLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBJc29TdWJzcGFjZVBlclZN
OjpBdXRvcmVtb3ZpbmdJc29TdWJzcGFjZSA6IHB1YmxpYyBJc29TdWJzcGFjZSB7CitwdWJsaWM6
CisgICAgQXV0b3JlbW92aW5nSXNvU3Vic3BhY2UoSXNvU3Vic3BhY2VQZXJWTSYgcGVyVk0sIENT
dHJpbmcgbmFtZSwgSGVhcCYgaGVhcCwgSGVhcENlbGxUeXBlKiBoZWFwQ2VsbFR5cGUsIHNpemVf
dCBzaXplKQorICAgICAgICA6IElzb1N1YnNwYWNlKG5hbWUsIGhlYXAsIGhlYXBDZWxsVHlwZSwg
c2l6ZSkKKyAgICAgICAgLCBtX3BlclZNKHBlclZNKQorICAgIHsKKyAgICB9CisgICAgCisgICAg
fkF1dG9yZW1vdmluZ0lzb1N1YnNwYWNlKCkKKyAgICB7CisgICAgICAgIGF1dG8gbG9ja2VyID0g
aG9sZExvY2sobV9wZXJWTS5tX2xvY2spOworICAgICAgICBtX3BlclZNLm1fc3Vic3BhY2VQZXJW
TS5yZW1vdmUoc3BhY2UoKS5oZWFwKCktPnZtKCkpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBJ
c29TdWJzcGFjZVBlclZNJiBtX3BlclZNOworfTsKKworSXNvU3Vic3BhY2VQZXJWTTo6SXNvU3Vi
c3BhY2VQZXJWTShGdW5jdGlvbjxTdWJzcGFjZVBhcmFtZXRlcnMoVk0mKT4gc3Vic3BhY2VQYXJh
bWV0ZXJzKQorICAgIDogbV9zdWJzcGFjZVBhcmFtZXRlcnMoV1RGTW92ZShzdWJzcGFjZVBhcmFt
ZXRlcnMpKQoreworfQorCitJc29TdWJzcGFjZVBlclZNOjp+SXNvU3Vic3BhY2VQZXJWTSgpCit7
CisgICAgVU5SRUFDSEFCTEVfRk9SX1BMQVRGT1JNKCk7Cit9CisKK0lzb1N1YnNwYWNlJiBJc29T
dWJzcGFjZVBlclZNOjpmb3JWTShWTSYgdm0pCit7CisgICAgYXV0byBsb2NrZXIgPSBob2xkTG9j
ayhtX2xvY2spOworICAgIGF1dG8gcmVzdWx0ID0gbV9zdWJzcGFjZVBlclZNLmFkZCgmdm0sIG51
bGxwdHIpOworICAgIGlmIChyZXN1bHQpIHsKKyAgICAgICAgU3Vic3BhY2VQYXJhbWV0ZXJzIHBh
cmFtcyA9IG1fc3Vic3BhY2VQYXJhbWV0ZXJzKHZtKTsKKyAgICAgICAgcmVzdWx0Lml0ZXJhdG9y
LT52YWx1ZSA9IG5ldyBBdXRvcmVtb3ZpbmdJc29TdWJzcGFjZSgqdGhpcywgcGFyYW1zLm5hbWUs
IHZtLmhlYXAsIHBhcmFtcy5oZWFwQ2VsbFR5cGUsIHBhcmFtcy5zaXplKTsKKyAgICB9CisgICAg
cmV0dXJuICpyZXN1bHQuaXRlcmF0b3ItPnZhbHVlOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MK
KwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSXNvU3Vic3BhY2VQZXJWTS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0lzb1N1YnNwYWNlUGVyVk0u
aAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Jc29TdWJzcGFj
ZVBlclZNLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw3MyBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUg
Iklzb1N1YnNwYWNlLmgiCisjaW5jbHVkZSA8d3RmL0Z1bmN0aW9uLmg+CisjaW5jbHVkZSA8d3Rm
L0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvTG9jay5oPgorCituYW1lc3BhY2UgSlNDIHsKKwor
Ly8gVGhpcyBpcyBhbiBhcHByb3ByaWF0ZSB3YXkgdG8gc3Rhc2ggSXNvU3Vic3BhY2VzIGZvciBy
YXJlbHktdXNlZCBjbGFzc2VzIG9yIGNsYXNzZXMgdGhhdCBhcmUgbW9zdGx5CisvLyBzdXJlIHRv
IGJlIG1haW4tdGhyZWFkLW9ubHkuIEJ1dCBpZiBhIGNsYXNzIHR5cGljYWxseSBnZXRzIGluc3Rh
bnRpYXRlZCBmcm9tIG11bHRpcGxlIHRocmVhZHMgYXQKKy8vIG9uY2UsIHRoZW4gdGhpcyBpcyBu
b3QgZ3JlYXQsIGJlY2F1c2UgY29uY3VycmVudCBhbGxvY2F0aW9ucyB3aWxsIHByb2JhYmx5IGNv
bnRlbmQgb24gdGhpcyB0aGluZydzCisvLyBsb2NrLgorY2xhc3MgSXNvU3Vic3BhY2VQZXJWTSB7
CitwdWJsaWM6CisgICAgc3RydWN0IFN1YnNwYWNlUGFyYW1ldGVycyB7CisgICAgICAgIFN1YnNw
YWNlUGFyYW1ldGVycygpIHsgfQorICAgICAgICAKKyAgICAgICAgU3Vic3BhY2VQYXJhbWV0ZXJz
KENTdHJpbmcgbmFtZSwgSGVhcENlbGxUeXBlKiBoZWFwQ2VsbFR5cGUsIHNpemVfdCBzaXplKQor
ICAgICAgICAgICAgOiBuYW1lKFdURk1vdmUobmFtZSkpCisgICAgICAgICAgICAsIGhlYXBDZWxs
VHlwZShoZWFwQ2VsbFR5cGUpCisgICAgICAgICAgICAsIHNpemUoc2l6ZSkKKyAgICAgICAgewor
ICAgICAgICB9CisgICAgICAgIAorICAgICAgICBDU3RyaW5nIG5hbWU7CisgICAgICAgIEhlYXBD
ZWxsVHlwZSogaGVhcENlbGxUeXBlIHsgbnVsbHB0ciB9OworICAgICAgICBzaXplX3Qgc2l6ZSB7
IDAgfTsKKyAgICB9OworICAgIAorICAgIEpTX0VYUE9SVF9QUklWQVRFIElzb1N1YnNwYWNlUGVy
Vk0oRnVuY3Rpb248U3Vic3BhY2VQYXJhbWV0ZXJzKFZNJik+KTsKKyAgICBKU19FWFBPUlRfUFJJ
VkFURSB+SXNvU3Vic3BhY2VQZXJWTSgpOworICAgIAorICAgIEpTX0VYUE9SVF9QUklWQVRFIElz
b1N1YnNwYWNlJiBmb3JWTShWTSYpOworCitwcml2YXRlOgorICAgIGNsYXNzIEF1dG9yZW1vdmlu
Z0lzb1N1YnNwYWNlOworICAgIGZyaWVuZCBjbGFzcyBBdXRvcmVtb3ZpbmdJc29TdWJzcGFjZTsK
KworICAgIExvY2sgbV9sb2NrOworICAgIEhhc2hNYXA8Vk0qLCBJc29TdWJzcGFjZSo+IG1fc3Vi
c3BhY2VQZXJWTTsKKyAgICBGdW5jdGlvbjxTdWJzcGFjZVBhcmFtZXRlcnMoVk0mKT4gbV9zdWJz
cGFjZVBhcmFtZXRlcnM7Cit9OworCisjZGVmaW5lIElTT19TVUJTUEFDRV9QQVJBTUVURVJTKGhl
YXBDZWxsVHlwZSwgdHlwZSkgOjpKU0M6Oklzb1N1YnNwYWNlUGVyVk06OlN1YnNwYWNlUGFyYW1l
dGVycygiSXNvbGF0ZWQgIiAjdHlwZSAiIFNwYWNlIiwgKGhlYXBDZWxsVHlwZSksIHNpemVvZih0
eXBlKSkKKworfSAvLyBuYW1lc3BhY2UgSlNDCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0Vycm9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvRXJyb3IuaAkocmV2aXNpb24gMjMwNzIzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvRXJyb3IuaAkod29ya2luZyBjb3B5KQpAQCAtMTE1LDYgKzExNSwxMiBAQCBwcml2
YXRlOgogCiBwdWJsaWM6CiAgICAgdHlwZWRlZiBJbnRlcm5hbEZ1bmN0aW9uIEJhc2U7CisgICAg
CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGU+CisgICAgc3RhdGljIElzb1N1YnNwYWNl
KiBzdWJzcGFjZUZvcihWTSYgdm0pCisgICAgeworICAgICAgICByZXR1cm4gJnZtLnN0cmljdE1v
ZGVUeXBlRXJyb3JGdW5jdGlvblNwYWNlOworICAgIH0KIAogICAgIHN0YXRpYyBTdHJpY3RNb2Rl
VHlwZUVycm9yRnVuY3Rpb24qIGNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBj
b25zdCBTdHJpbmcmIG1lc3NhZ2UpCiAgICAgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvRXJyb3JDb25zdHJ1Y3Rvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0Vycm9yQ29uc3RydWN0b3IuaAkocmV2aXNpb24gMjMwNzIzKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JDb25zdHJ1Y3Rvci5oCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDYgKzEsNiBAQAogLyoKICAqICBDb3B5cmlnaHQgKEMpIDE5OTktMjAwMCBI
YXJyaSBQb3J0ZW4gKHBvcnRlbkBrZGUub3JnKQotICogIENvcHlyaWdodCAoQykgMjAwOC0yMDE3
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqICBDb3B5cmlnaHQgKEMpIDIwMDgt
MjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogIFRoaXMgbGlicmFy
eSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqICBt
b2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGlj
CkBAIC0zMSw2ICszMSwxMiBAQCBjbGFzcyBFcnJvckNvbnN0cnVjdG9yIGZpbmFsIDogcHVibGlj
IEluCiBwdWJsaWM6CiAgICAgdHlwZWRlZiBJbnRlcm5hbEZ1bmN0aW9uIEJhc2U7CiAKKyAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZT4KKyAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNw
YWNlRm9yKFZNJiB2bSkKKyAgICB7CisgICAgICAgIHJldHVybiAmdm0uZXJyb3JDb25zdHJ1Y3Rv
clNwYWNlOworICAgIH0KKwogICAgIHN0YXRpYyBFcnJvckNvbnN0cnVjdG9yKiBjcmVhdGUoVk0m
IHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgRXJyb3JQcm90b3R5cGUqIGVycm9yUHJvdG90eXBl
LCBHZXR0ZXJTZXR0ZXIqKQogICAgIHsKICAgICAgICAgRXJyb3JDb25zdHJ1Y3RvciogY29uc3Ry
dWN0b3IgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxFcnJvckNvbnN0cnVjdG9yPih2bS5o
ZWFwKSkgRXJyb3JDb25zdHJ1Y3Rvcih2bSwgc3RydWN0dXJlKTsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0ludGVybmFsRnVuY3Rpb24uaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRlcm5hbEZ1bmN0aW9uLmgJKHJldmlzaW9uIDIz
MDcyMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGVybmFsRnVuY3Rpb24u
aAkod29ya2luZyBjb3B5KQpAQCAtMzgsNiArMzgsMTMgQEAgcHVibGljOgogICAgIHR5cGVkZWYg
SlNEZXN0cnVjdGlibGVPYmplY3QgQmFzZTsKICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3Ry
dWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IEltcGxlbWVudHNIYXNJbnN0YW5j
ZSB8IEltcGxlbWVudHNEZWZhdWx0SGFzSW5zdGFuY2UgfCBUeXBlT2ZTaG91bGRDYWxsR2V0Q2Fs
bERhdGE7CiAKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZT4KKyAgICBzdGF0aWMgSXNv
U3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKKyAgICB7CisgICAgICAgIHN0YXRpY19hc3Nl
cnQoc2l6ZW9mKENlbGxUeXBlKSA9PSBzaXplb2YoSW50ZXJuYWxGdW5jdGlvbiksICJJbnRlcm5h
bEZ1bmN0aW9uIHN1YmNsYXNzZXMgdGhhdCBhZGQgZmllbGRzIG5lZWQgdG8gb3ZlcnJpZGUgc3Vi
c3BhY2VGb3I8PigpIik7CisgICAgICAgIHJldHVybiAmdm0uaW50ZXJuYWxGdW5jdGlvblNwYWNl
OworICAgIH0KKwogICAgIERFQ0xBUkVfRVhQT1JUX0lORk87CiAKICAgICBKU19FWFBPUlRfUFJJ
VkFURSBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsQ29sbGF0b3JDb25zdHJ1Y3Rv
ci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxDb2xs
YXRvckNvbnN0cnVjdG9yLmgJKHJldmlzaW9uIDIzMDcyMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0ludGxDb2xsYXRvckNvbnN0cnVjdG9yLmgJKHdvcmtpbmcgY29weSkKQEAg
LTEsNSArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDE1IEFuZHkgVmFuV2Fnb25lciAo
dGhldGFsZWNyYWZ0ZXJAZ21haWwuY29tKQorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpA
QCAtMzksNiArNDAsMTIgQEAgcHVibGljOgogICAgIHR5cGVkZWYgSW50ZXJuYWxGdW5jdGlvbiBC
YXNlOwogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0
cnVjdHVyZUZsYWdzIHwgSGFzU3RhdGljUHJvcGVydHlUYWJsZTsKIAorICAgIHRlbXBsYXRlPHR5
cGVuYW1lIENlbGxUeXBlPgorICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0m
IHZtKQorICAgIHsKKyAgICAgICAgcmV0dXJuICZ2bS5pbnRsQ29sbGF0b3JDb25zdHJ1Y3RvclNw
YWNlOworICAgIH0KKwogICAgIHN0YXRpYyBJbnRsQ29sbGF0b3JDb25zdHJ1Y3RvciogY3JlYXRl
KFZNJiwgU3RydWN0dXJlKiwgSW50bENvbGxhdG9yUHJvdG90eXBlKiwgU3RydWN0dXJlKik7CiAg
ICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiwgSlNHbG9iYWxPYmplY3Qq
LCBKU1ZhbHVlKTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERh
dGVUaW1lRm9ybWF0Q29uc3RydWN0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvci5oCShyZXZpc2lvbiAy
MzA3MjMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGF0ZVRpbWVGb3Jt
YXRDb25zdHJ1Y3Rvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENv
cHlyaWdodCAoQykgMjAxNSBBbmR5IFZhbldhZ29uZXIgKHRoZXRhbGVjcmFmdGVyQGdtYWlsLmNv
bSkKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM5LDYgKzQwLDEyIEBAIHB1Ymxp
YzoKICAgICB0eXBlZGVmIEludGVybmFsRnVuY3Rpb24gQmFzZTsKICAgICBzdGF0aWMgY29uc3Qg
dW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IEhhc1N0YXRp
Y1Byb3BlcnR5VGFibGU7CiAKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZT4KKyAgICBz
dGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKKyAgICB7CisgICAgICAgIHJl
dHVybiAmdm0uaW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3JTcGFjZTsKKyAgICB9CisKICAg
ICBzdGF0aWMgSW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3IqIGNyZWF0ZShWTSYsIFN0cnVj
dHVyZSosIEludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZSosIFN0cnVjdHVyZSopOwogICAgIHN0
YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgSlNW
YWx1ZSk7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJG
b3JtYXRDb25zdHJ1Y3Rvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0ludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rvci5oCShyZXZpc2lvbiAyMzA3MjMpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0
b3IuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMp
IDIwMTUgQW5keSBWYW5XYWdvbmVyICh0aGV0YWxlY3JhZnRlckBnbWFpbC5jb20pCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zOSw2ICs0MCwxMiBAQCBwdWJsaWM6CiAgICAgdHlw
ZWRlZiBJbnRlcm5hbEZ1bmN0aW9uIEJhc2U7CiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0
cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBIYXNTdGF0aWNQcm9wZXJ0eVRh
YmxlOwogCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGU+CisgICAgc3RhdGljIElzb1N1
YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCisgICAgeworICAgICAgICByZXR1cm4gJnZtLmlu
dGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3RvclNwYWNlOworICAgIH0KKwogICAgIHN0YXRpYyBJbnRs
TnVtYmVyRm9ybWF0Q29uc3RydWN0b3IqIGNyZWF0ZShWTSYsIFN0cnVjdHVyZSosIEludGxOdW1i
ZXJGb3JtYXRQcm90b3R5cGUqLCBTdHJ1Y3R1cmUqKTsKICAgICBzdGF0aWMgU3RydWN0dXJlKiBj
cmVhdGVTdHJ1Y3R1cmUoVk0mLCBKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUpOwogCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyQ29uc3RydWN0b3IuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVy
Q29uc3RydWN0b3IuaAkocmV2aXNpb24gMjMwNzIzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNBcnJheUJ1ZmZlckNvbnN0cnVjdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTEs
NSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE2IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMy0yMDE4IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAt
MzcsNiArMzcsMTIgQEAgY2xhc3MgSlNBcnJheUJ1ZmZlckNvbnN0cnVjdG9yIGZpbmFsIDogcAog
cHVibGljOgogICAgIHR5cGVkZWYgSW50ZXJuYWxGdW5jdGlvbiBCYXNlOwogCisgICAgdGVtcGxh
dGU8dHlwZW5hbWUgQ2VsbFR5cGU+CisgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZv
cihWTSYgdm0pCisgICAgeworICAgICAgICByZXR1cm4gJnZtLmFycmF5QnVmZmVyQ29uc3RydWN0
b3JTcGFjZTsKKyAgICB9CisKIHByb3RlY3RlZDoKICAgICBKU0FycmF5QnVmZmVyQ29uc3RydWN0
b3IoVk0mLCBTdHJ1Y3R1cmUqLCBBcnJheUJ1ZmZlclNoYXJpbmdNb2RlKTsKICAgICB2b2lkIGZp
bmlzaENyZWF0aW9uKFZNJiwgSlNBcnJheUJ1ZmZlclByb3RvdHlwZSosIEdldHRlclNldHRlciog
c3BlY2llc1N5bWJvbCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OYXRp
dmVFcnJvckNvbnN0cnVjdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvci5oCShyZXZpc2lvbiAyMzA3MjMpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OYXRpdmVFcnJvckNvbnN0cnVjdG9yLmgJKHdv
cmtpbmcgY29weSkKQEAgLTEsNiArMSw2IEBACiAvKgogICogIENvcHlyaWdodCAoQykgMTk5OS0y
MDAwIEhhcnJpIFBvcnRlbiAocG9ydGVuQGtkZS5vcmcpCi0gKiAgQ29weXJpZ2h0IChDKSAyMDA4
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqICBDb3B5cmlnaHQgKEMpIDIwMDgt
MjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogIFRoaXMgbGlicmFy
eSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqICBt
b2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGlj
CkBAIC0zMyw2ICszMywxMiBAQCBjbGFzcyBOYXRpdmVFcnJvckNvbnN0cnVjdG9yIGZpbmFsIDog
cHViCiBwdWJsaWM6CiAgICAgdHlwZWRlZiBJbnRlcm5hbEZ1bmN0aW9uIEJhc2U7CiAKKyAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZT4KKyAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNw
YWNlRm9yKFZNJiB2bSkKKyAgICB7CisgICAgICAgIHJldHVybiAmdm0ubmF0aXZlRXJyb3JDb25z
dHJ1Y3RvclNwYWNlOworICAgIH0KKwogICAgIHN0YXRpYyBOYXRpdmVFcnJvckNvbnN0cnVjdG9y
KiBjcmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSwgU3RydWN0dXJlKiBwcm90b3R5cGVTdHJ1Y3R1cmUsIGNvbnN0IFN0cmluZyYg
bmFtZSkKICAgICB7CiAgICAgICAgIE5hdGl2ZUVycm9yQ29uc3RydWN0b3IqIGNvbnN0cnVjdG9y
ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8TmF0aXZlRXJyb3JDb25zdHJ1Y3Rvcj4odm0u
aGVhcCkpIE5hdGl2ZUVycm9yQ29uc3RydWN0b3Iodm0sIHN0cnVjdHVyZSk7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm94eVJldm9rZS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3h5UmV2b2tlLmgJKHJldmlzaW9uIDIzMDcy
MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3h5UmV2b2tlLmgJKHdvcmtp
bmcgY29weSkKQEAgLTM2LDYgKzM2LDEyIEBAIHB1YmxpYzoKICAgICB0eXBlZGVmIEludGVybmFs
RnVuY3Rpb24gQmFzZTsKICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3Mg
PSBCYXNlOjpTdHJ1Y3R1cmVGbGFnczsKIAorICAgIHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBl
PgorICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuICZ2bS5wcm94eVJldm9rZVNwYWNlOworICAgIH0KKwogICAgIHN0YXRpYyBQ
cm94eVJldm9rZSogY3JlYXRlKFZNJiwgU3RydWN0dXJlKiwgUHJveHlPYmplY3QqKTsKIAogICAg
IERFQ0xBUkVfSU5GTzsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4
cENvbnN0cnVjdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvUmVnRXhwQ29uc3RydWN0b3IuaAkocmV2aXNpb24gMjMwNzIzKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwQ29uc3RydWN0b3IuaAkod29ya2luZyBjb3B5KQpAQCAt
MSw2ICsxLDYgQEAKIC8qCiAgKiAgQ29weXJpZ2h0IChDKSAxOTk5LTIwMDAgSGFycmkgUG9ydGVu
IChwb3J0ZW5Aa2RlLm9yZykKLSAqICBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDctMjAwOCwgMjAx
NiBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKiAgQ29weXJpZ2h0IChDKSAyMDAz
LTIwMTggQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgogICoKICAqICBUaGlzIGxpYnJh
cnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiAg
bW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1Ymxp
YwpAQCAtMzUsNiArMzUsMTIgQEAgcHVibGljOgogICAgIHR5cGVkZWYgSW50ZXJuYWxGdW5jdGlv
biBCYXNlOwogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6
OlN0cnVjdHVyZUZsYWdzIHwgSGFzU3RhdGljUHJvcGVydHlUYWJsZTsKIAorICAgIHRlbXBsYXRl
PHR5cGVuYW1lIENlbGxUeXBlPgorICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3Io
Vk0mIHZtKQorICAgIHsKKyAgICAgICAgcmV0dXJuICZ2bS5yZWdFeHBDb25zdHJ1Y3RvclNwYWNl
OworICAgIH0KKwogICAgIHN0YXRpYyBSZWdFeHBDb25zdHJ1Y3RvciogY3JlYXRlKFZNJiB2bSwg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFJlZ0V4cFByb3RvdHlwZSogcmVnRXhwUHJvdG90eXBlLCBH
ZXR0ZXJTZXR0ZXIqIHNwZWNpZXMpCiAgICAgewogICAgICAgICBSZWdFeHBDb25zdHJ1Y3Rvciog
Y29uc3RydWN0b3IgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxSZWdFeHBDb25zdHJ1Y3Rv
cj4odm0uaGVhcCkpIFJlZ0V4cENvbnN0cnVjdG9yKHZtLCBzdHJ1Y3R1cmUsIHJlZ0V4cFByb3Rv
dHlwZSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCShyZXZpc2lvbiAy
MzA3MjMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTQxLDYgKzQxLDggQEAKICNpbmNsdWRlICJERkdXb3JrbGlzdC5oIgogI2luY2x1
ZGUgIkRpcmVjdEV2YWxFeGVjdXRhYmxlLmgiCiAjaW5jbHVkZSAiRGlzYXNzZW1ibGVyLmgiCisj
aW5jbHVkZSAiRXJyb3IuaCIKKyNpbmNsdWRlICJFcnJvckNvbnN0cnVjdG9yLmgiCiAjaW5jbHVk
ZSAiRXJyb3JJbnN0YW5jZS5oIgogI2luY2x1ZGUgIkV2YWxDb2RlQmxvY2suaCIKICNpbmNsdWRl
ICJFeGNlcHRpb24uaCIKQEAgLTY0LDE0ICs2NiwxOSBAQAogI2luY2x1ZGUgIkluZmVycmVkVHlw
ZVRhYmxlLmgiCiAjaW5jbHVkZSAiSW5mZXJyZWRWYWx1ZS5oIgogI2luY2x1ZGUgIkludGVycHJl
dGVyLmgiCisjaW5jbHVkZSAiSW50bENvbGxhdG9yQ29uc3RydWN0b3IuaCIKKyNpbmNsdWRlICJJ
bnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvci5oIgorI2luY2x1ZGUgIkludGxOdW1iZXJGb3Jt
YXRDb25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUgIkpJVENvZGUuaCIKICNpbmNsdWRlICJKSVRXb3Jr
bGlzdC5oIgogI2luY2x1ZGUgIkpTQVBJVmFsdWVXcmFwcGVyLmgiCiAjaW5jbHVkZSAiSlNBcnJh
eS5oIgorI2luY2x1ZGUgIkpTQXJyYXlCdWZmZXJDb25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUgIkpT
QXN5bmNGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTQmlnSW50LmgiCiAjaW5jbHVkZSAiSlNCb3Vu
ZEZ1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgorI2luY2x1ZGUgIkpTQ2FsbGJh
Y2tGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTQ3VzdG9tR2V0dGVyU2V0dGVyRnVuY3Rpb24uaCIK
ICNpbmNsdWRlICJKU0Rlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5oIgogI2luY2x1ZGUg
IkpTRml4ZWRBcnJheS5oIgpAQCAtMTAzLDE2ICsxMTAsMjAgQEAKICNpbmNsdWRlICJNaW5pbXVt
UmVzZXJ2ZWRab25lU2l6ZS5oIgogI2luY2x1ZGUgIk1vZHVsZVByb2dyYW1Db2RlQmxvY2suaCIK
ICNpbmNsdWRlICJNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZS5oIgorI2luY2x1ZGUgIk5hdGl2ZUVy
cm9yQ29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJOYXRpdmVFeGVjdXRhYmxlLmgiCiAjaW5jbHVk
ZSAiTmF0aXZlU3RkRnVuY3Rpb25DZWxsLmgiCiAjaW5jbHVkZSAiTm9kZXMuaCIKKyNpbmNsdWRl
ICJPYmpDQ2FsbGJhY2tGdW5jdGlvbi5oIgogI2luY2x1ZGUgIlBhcnNlci5oIgogI2luY2x1ZGUg
IlByb2ZpbGVyRGF0YWJhc2UuaCIKICNpbmNsdWRlICJQcm9ncmFtQ29kZUJsb2NrLmgiCiAjaW5j
bHVkZSAiUHJvZ3JhbUV4ZWN1dGFibGUuaCIKICNpbmNsdWRlICJQcm9taXNlRGVmZXJyZWRUaW1l
ci5oIgogI2luY2x1ZGUgIlByb3BlcnR5TWFwSGFzaFRhYmxlLmgiCisjaW5jbHVkZSAiUHJveHlS
ZXZva2UuaCIKICNpbmNsdWRlICJSZWdFeHBDYWNoZS5oIgorI2luY2x1ZGUgIlJlZ0V4cENvbnN0
cnVjdG9yLmgiCiAjaW5jbHVkZSAiUmVnRXhwT2JqZWN0LmgiCiAjaW5jbHVkZSAiUmVnaXN0ZXJB
dE9mZnNldExpc3QuaCIKICNpbmNsdWRlICJSdW50aW1lVHlwZS5oIgpAQCAtMjU0LDExICsyNjUs
MTQgQEAgVk06OlZNKFZNVHlwZSB2bVR5cGUsIEhlYXBUeXBlIGhlYXBUeXBlKQogICAgICwgZGVz
dHJ1Y3RpYmxlT2JqZWN0U3BhY2UoIkpTRGVzdHJ1Y3RpYmxlT2JqZWN0IiwgaGVhcCwgZGVzdHJ1
Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmdldCgpLCBmYXN0TWFsbG9jQWxsb2NhdG9yLmdldCgp
KQogICAgICwgZWFnZXJseVN3ZXB0RGVzdHJ1Y3RpYmxlT2JqZWN0U3BhY2UoIkVhZ2VybHkgU3dl
cHQgSlNEZXN0cnVjdGlibGVPYmplY3QiLCBoZWFwLCBkZXN0cnVjdGlibGVPYmplY3RIZWFwQ2Vs
bFR5cGUuZ2V0KCksIGZhc3RNYWxsb2NBbGxvY2F0b3IuZ2V0KCkpCiAgICAgLCBzZWdtZW50ZWRW
YXJpYWJsZU9iamVjdFNwYWNlKCJKU1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0U3BhY2UiLCBoZWFw
LCBzZWdtZW50ZWRWYXJpYWJsZU9iamVjdEhlYXBDZWxsVHlwZS5nZXQoKSwgZmFzdE1hbGxvY0Fs
bG9jYXRvci5nZXQoKSkKKyAgICAsIGFycmF5QnVmZmVyQ29uc3RydWN0b3JTcGFjZSBJU09fU1VC
U1BBQ0VfSU5JVChoZWFwLCBkZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuZ2V0KCksIEpT
QXJyYXlCdWZmZXJDb25zdHJ1Y3RvcikKICAgICAsIGFzeW5jRnVuY3Rpb25TcGFjZSBJU09fU1VC
U1BBQ0VfSU5JVChoZWFwLCBjZWxsSlNWYWx1ZU9PQkhlYXBDZWxsVHlwZS5nZXQoKSwgSlNBc3lu
Y0Z1bmN0aW9uKQogICAgICwgYXN5bmNHZW5lcmF0b3JGdW5jdGlvblNwYWNlIElTT19TVUJTUEFD
RV9JTklUKGhlYXAsIGNlbGxKU1ZhbHVlT09CSGVhcENlbGxUeXBlLmdldCgpLCBKU0FzeW5jR2Vu
ZXJhdG9yRnVuY3Rpb24pCiAgICAgLCBib3VuZEZ1bmN0aW9uU3BhY2UgSVNPX1NVQlNQQUNFX0lO
SVQoaGVhcCwgY2VsbEpTVmFsdWVPT0JIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTQm91bmRGdW5jdGlv
bikKKyAgICAsIGNhbGxiYWNrRnVuY3Rpb25TcGFjZSBJU09fU1VCU1BBQ0VfSU5JVChoZWFwLCBk
ZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTQ2FsbGJhY2tGdW5jdGlvbikK
ICAgICAsIGN1c3RvbUdldHRlclNldHRlckZ1bmN0aW9uU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQo
aGVhcCwgY2VsbEpTVmFsdWVPT0JIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTQ3VzdG9tR2V0dGVyU2V0
dGVyRnVuY3Rpb24pCiAgICAgLCBkaXJlY3RFdmFsRXhlY3V0YWJsZVNwYWNlIElTT19TVUJTUEFD
RV9JTklUKGhlYXAsIGRlc3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIERpcmVjdEV2
YWxFeGVjdXRhYmxlKQorICAgICwgZXJyb3JDb25zdHJ1Y3RvclNwYWNlIElTT19TVUJTUEFDRV9J
TklUKGhlYXAsIGRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5nZXQoKSwgRXJyb3JDb25z
dHJ1Y3RvcikKICAgICAsIGV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2VTcGFjZSBJU09fU1VCU1BB
Q0VfSU5JVChoZWFwLCBjZWxsRGFuZ2Vyb3VzQml0c0hlYXBDZWxsVHlwZS5nZXQoKSwgRXhlY3V0
YWJsZVRvQ29kZUJsb2NrRWRnZSkKICAgICAsIGZ1bmN0aW9uRXhlY3V0YWJsZVNwYWNlIElTT19T
VUJTUEFDRV9JTklUKGhlYXAsIGRlc3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIEZ1
bmN0aW9uRXhlY3V0YWJsZSkKICAgICAsIGZ1bmN0aW9uU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQo
aGVhcCwgY2VsbEpTVmFsdWVPT0JIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTRnVuY3Rpb24pCkBAIC0y
NjYsMTEgKzI4MCwyNCBAQCBWTTo6Vk0oVk1UeXBlIHZtVHlwZSwgSGVhcFR5cGUgaGVhcFR5cGUp
CiAgICAgLCBpbmRpcmVjdEV2YWxFeGVjdXRhYmxlU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoaGVh
cCwgZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgSW5kaXJlY3RFdmFsRXhlY3V0
YWJsZSkKICAgICAsIGluZmVycmVkVHlwZVNwYWNlIElTT19TVUJTUEFDRV9JTklUKGhlYXAsIGRl
c3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIEluZmVycmVkVHlwZSkKICAgICAsIGlu
ZmVycmVkVmFsdWVTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVChoZWFwLCBkZXN0cnVjdGlibGVDZWxs
SGVhcENlbGxUeXBlLmdldCgpLCBJbmZlcnJlZFZhbHVlKQorICAgICwgaW50ZXJuYWxGdW5jdGlv
blNwYWNlIElTT19TVUJTUEFDRV9JTklUKGhlYXAsIGRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxs
VHlwZS5nZXQoKSwgSW50ZXJuYWxGdW5jdGlvbikKKyNpZiBFTkFCTEUoSU5UTCkKKyAgICAsIGlu
dGxDb2xsYXRvckNvbnN0cnVjdG9yU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoaGVhcCwgZGVzdHJ1
Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmdldCgpLCBJbnRsQ29sbGF0b3JDb25zdHJ1Y3RvcikK
KyAgICAsIGludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yU3BhY2UgSVNPX1NVQlNQQUNFX0lO
SVQoaGVhcCwgZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmdldCgpLCBJbnRsRGF0ZVRp
bWVGb3JtYXRDb25zdHJ1Y3RvcikKKyAgICAsIGludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3RvclNw
YWNlIElTT19TVUJTUEFDRV9JTklUKGhlYXAsIGRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlw
ZS5nZXQoKSwgSW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yKQorI2VuZGlmCiAgICAgLCBtb2R1
bGVQcm9ncmFtRXhlY3V0YWJsZVNwYWNlIElTT19TVUJTUEFDRV9JTklUKGhlYXAsIGRlc3RydWN0
aWJsZUNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlKQorICAg
ICwgbmF0aXZlRXJyb3JDb25zdHJ1Y3RvclNwYWNlIElTT19TVUJTUEFDRV9JTklUKGhlYXAsIGRl
c3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5nZXQoKSwgTmF0aXZlRXJyb3JDb25zdHJ1Y3Rv
cikKICAgICAsIG5hdGl2ZUV4ZWN1dGFibGVTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVChoZWFwLCBk
ZXN0cnVjdGlibGVDZWxsSGVhcENlbGxUeXBlLmdldCgpLCBOYXRpdmVFeGVjdXRhYmxlKQogICAg
ICwgbmF0aXZlU3RkRnVuY3Rpb25TcGFjZSBJU09fU1VCU1BBQ0VfSU5JVChoZWFwLCBjZWxsSlNW
YWx1ZU9PQkhlYXBDZWxsVHlwZS5nZXQoKSwgSlNOYXRpdmVTdGRGdW5jdGlvbikKKyNpZiBKU0Nf
T0JKQ19BUElfRU5BQkxFRAorICAgICwgb2JqQ0NhbGxiYWNrRnVuY3Rpb25TcGFjZSBJU09fU1VC
U1BBQ0VfSU5JVChoZWFwLCBkZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuZ2V0KCksIE9i
akNDYWxsYmFja0Z1bmN0aW9uKQorI2VuZGlmCiAgICAgLCBwcm9ncmFtRXhlY3V0YWJsZVNwYWNl
IElTT19TVUJTUEFDRV9JTklUKGhlYXAsIGRlc3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUuZ2V0
KCksIFByb2dyYW1FeGVjdXRhYmxlKQogICAgICwgcHJvcGVydHlUYWJsZVNwYWNlIElTT19TVUJT
UEFDRV9JTklUKGhlYXAsIGRlc3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIFByb3Bl
cnR5VGFibGUpCisgICAgLCBwcm94eVJldm9rZVNwYWNlIElTT19TVUJTUEFDRV9JTklUKGhlYXAs
IGRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5nZXQoKSwgUHJveHlSZXZva2UpCisgICAg
LCByZWdFeHBDb25zdHJ1Y3RvclNwYWNlIElTT19TVUJTUEFDRV9JTklUKGhlYXAsIGRlc3RydWN0
aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5nZXQoKSwgUmVnRXhwQ29uc3RydWN0b3IpCisgICAgLCBz
dHJpY3RNb2RlVHlwZUVycm9yRnVuY3Rpb25TcGFjZSBJU09fU1VCU1BBQ0VfSU5JVChoZWFwLCBk
ZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuZ2V0KCksIFN0cmljdE1vZGVUeXBlRXJyb3JG
dW5jdGlvbikKICAgICAsIHN0cnVjdHVyZVJhcmVEYXRhU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQo
aGVhcCwgZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgU3RydWN0dXJlUmFyZURh
dGEpCiAgICAgLCBzdHJ1Y3R1cmVTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVChoZWFwLCBkZXN0cnVj
dGlibGVDZWxsSGVhcENlbGxUeXBlLmdldCgpLCBTdHJ1Y3R1cmUpCiAgICAgLCB3ZWFrU2V0U3Bh
Y2UgSVNPX1NVQlNQQUNFX0lOSVQoaGVhcCwgZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBl
LmdldCgpLCBKU1dlYWtTZXQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9W
TS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgJKHJl
dmlzaW9uIDIzMDcyMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgJKHdv
cmtpbmcgY29weSkKQEAgLTgwLDYgKzgwLDE2IEBACiAjaW5jbHVkZSA8d3RmL1N0YWNrVHJhY2Uu
aD4KICNlbmRpZgogCisvLyBFbmFibGUgdGhlIE9iamVjdGl2ZS1DIEFQSSBmb3IgcGxhdGZvcm1z
IHdpdGggYSBtb2Rlcm4gcnVudGltZS4gVGhpcyBoYXMgdG8gbWF0Y2ggZXhhY3RseSB3aGF0IHdl
CisvLyBoYXZlIGluIEpTQmFzZS5oLgorI2lmICFkZWZpbmVkKEpTQ19PQkpDX0FQSV9FTkFCTEVE
KQorI2lmIChkZWZpbmVkKF9fY2xhbmdfXykgJiYgZGVmaW5lZChfX0FQUExFX18pICYmICgoZGVm
aW5lZChfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEKSAmJiAhZGVmaW5lZChfX2kzODZf
XykpIHx8IChkZWZpbmVkKFRBUkdFVF9PU19JUEhPTkUpICYmIFRBUkdFVF9PU19JUEhPTkUpKSkK
KyNkZWZpbmUgSlNDX09CSkNfQVBJX0VOQUJMRUQgMQorI2Vsc2UKKyNkZWZpbmUgSlNDX09CSkNf
QVBJX0VOQUJMRUQgMAorI2VuZGlmCisjZW5kaWYKKwogbmFtZXNwYWNlIFdURiB7CiBjbGFzcyBT
aW1wbGVTdGF0czsKIH0gLy8gbmFtZXNwYWNlIFdURgpAQCAtMzM3LDExICszNDcsMTQgQEAgcHVi
bGljOgogICAgIENvbXBsZXRlU3Vic3BhY2UgZWFnZXJseVN3ZXB0RGVzdHJ1Y3RpYmxlT2JqZWN0
U3BhY2U7CiAgICAgQ29tcGxldGVTdWJzcGFjZSBzZWdtZW50ZWRWYXJpYWJsZU9iamVjdFNwYWNl
OwogICAgIAorICAgIElzb1N1YnNwYWNlIGFycmF5QnVmZmVyQ29uc3RydWN0b3JTcGFjZTsKICAg
ICBJc29TdWJzcGFjZSBhc3luY0Z1bmN0aW9uU3BhY2U7CiAgICAgSXNvU3Vic3BhY2UgYXN5bmNH
ZW5lcmF0b3JGdW5jdGlvblNwYWNlOwogICAgIElzb1N1YnNwYWNlIGJvdW5kRnVuY3Rpb25TcGFj
ZTsKKyAgICBJc29TdWJzcGFjZSBjYWxsYmFja0Z1bmN0aW9uU3BhY2U7CiAgICAgSXNvU3Vic3Bh
Y2UgY3VzdG9tR2V0dGVyU2V0dGVyRnVuY3Rpb25TcGFjZTsKICAgICBJc29TdWJzcGFjZSBkaXJl
Y3RFdmFsRXhlY3V0YWJsZVNwYWNlOworICAgIElzb1N1YnNwYWNlIGVycm9yQ29uc3RydWN0b3JT
cGFjZTsKICAgICBJc29TdWJzcGFjZSBleGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlU3BhY2U7CiAg
ICAgSXNvU3Vic3BhY2UgZnVuY3Rpb25FeGVjdXRhYmxlU3BhY2U7CiAgICAgSXNvU3Vic3BhY2Ug
ZnVuY3Rpb25TcGFjZTsKQEAgLTM0OSwxMSArMzYyLDI0IEBAIHB1YmxpYzoKICAgICBJc29TdWJz
cGFjZSBpbmRpcmVjdEV2YWxFeGVjdXRhYmxlU3BhY2U7CiAgICAgSXNvU3Vic3BhY2UgaW5mZXJy
ZWRUeXBlU3BhY2U7CiAgICAgSXNvU3Vic3BhY2UgaW5mZXJyZWRWYWx1ZVNwYWNlOworICAgIElz
b1N1YnNwYWNlIGludGVybmFsRnVuY3Rpb25TcGFjZTsKKyNpZiBFTkFCTEUoSU5UTCkKKyAgICBJ
c29TdWJzcGFjZSBpbnRsQ29sbGF0b3JDb25zdHJ1Y3RvclNwYWNlOworICAgIElzb1N1YnNwYWNl
IGludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yU3BhY2U7CisgICAgSXNvU3Vic3BhY2UgaW50
bE51bWJlckZvcm1hdENvbnN0cnVjdG9yU3BhY2U7CisjZW5kaWYKICAgICBJc29TdWJzcGFjZSBt
b2R1bGVQcm9ncmFtRXhlY3V0YWJsZVNwYWNlOworICAgIElzb1N1YnNwYWNlIG5hdGl2ZUVycm9y
Q29uc3RydWN0b3JTcGFjZTsKICAgICBJc29TdWJzcGFjZSBuYXRpdmVFeGVjdXRhYmxlU3BhY2U7
CiAgICAgSXNvU3Vic3BhY2UgbmF0aXZlU3RkRnVuY3Rpb25TcGFjZTsKKyNpZiBKU0NfT0JKQ19B
UElfRU5BQkxFRAorICAgIElzb1N1YnNwYWNlIG9iakNDYWxsYmFja0Z1bmN0aW9uU3BhY2U7Cisj
ZW5kaWYKICAgICBJc29TdWJzcGFjZSBwcm9ncmFtRXhlY3V0YWJsZVNwYWNlOwogICAgIElzb1N1
YnNwYWNlIHByb3BlcnR5VGFibGVTcGFjZTsKKyAgICBJc29TdWJzcGFjZSBwcm94eVJldm9rZVNw
YWNlOworICAgIElzb1N1YnNwYWNlIHJlZ0V4cENvbnN0cnVjdG9yU3BhY2U7CisgICAgSXNvU3Vi
c3BhY2Ugc3RyaWN0TW9kZVR5cGVFcnJvckZ1bmN0aW9uU3BhY2U7CiAgICAgSXNvU3Vic3BhY2Ug
c3RydWN0dXJlUmFyZURhdGFTcGFjZTsKICAgICBJc29TdWJzcGFjZSBzdHJ1Y3R1cmVTcGFjZTsK
ICAgICBJc29TdWJzcGFjZSB3ZWFrU2V0U3BhY2U7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCShyZXZpc2lvbiAy
MzA3MjMpCisrKyBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEs
MyArMSwyMCBAQAorMjAxOC0wNC0xNyAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgor
CisgICAgICAgIFRoZSBJbnRlcm5hbEZ1bmN0aW9uIGhpZXJhcmNoeSBzaG91bGQgYmUgaW4gSXNv
U3Vic3BhY2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xODQ3MjEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBObyBuZXcgdGVzdHMgYmVjYXVzZSBubyBuZXcgYmVoYXZpb3IuCisKKyAgICAgICAgKiBiaW5k
aW5ncy9qcy9XZWJDb3JlSlNDbGllbnREYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVk1D
bGllbnREYXRhOjpKU1ZNQ2xpZW50RGF0YSk6CisgICAgICAgICogYmluZGluZ3MvanMvV2ViQ29y
ZUpTQ2xpZW50RGF0YS5oOgorICAgICAgICAoV2ViQ29yZTo6SlNWTUNsaWVudERhdGE6OnJ1bnRp
bWVNZXRob2RTcGFjZSk6CisgICAgICAgICogYnJpZGdlL3J1bnRpbWVfbWV0aG9kLmNwcDoKKyAg
ICAgICAgKEpTQzo6UnVudGltZU1ldGhvZDo6c3Vic3BhY2VGb3JJbXBsKToKKyAgICAgICAgKiBi
cmlkZ2UvcnVudGltZV9tZXRob2QuaDoKKwogMjAxOC0wNC0xNyAgQ2hyaXMgRHVtZXogIDxjZHVt
ZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFJFR1JFU1NJT04gKHIyMjk4MzEpOiBDTUQtY2xpY2tp
bmcgYW4gaUNsb3VkIHdlYiBhcHAgbGluayB1bmV4cGVjdGVkbHkgb3BlbnMgdGhhdCBsaW5rIGlu
IGEgbmV3IHRhYiBhbmQgdGhlIGN1cnJlbnQgdGFiCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9XZWJDb3JlSlNDbGllbnREYXRhLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9XZWJDb3JlSlNDbGllbnREYXRhLmNwcAkocmV2aXNpb24gMjMwNzIz
KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV2ViQ29yZUpTQ2xpZW50RGF0YS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTM1LDYgKzM1LDcgQEAKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29y
ZS9NYXJraW5nQ29uc3RyYWludC5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1N1YnNwYWNl
SW5saW5lcy5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1ZNLmg+CisjaW5jbHVkZSAicnVu
dGltZV9tZXRob2QuaCIKICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CkBAIC00Myw2ICs0NCw3IEBAIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiBKU1ZNQ2xp
ZW50RGF0YTo6SlNWTUNsaWVudERhdGEoVk0mIHZtKQogICAgIDogbV9idWlsdGluRnVuY3Rpb25z
KHZtKQogICAgICwgbV9idWlsdGluTmFtZXMoJnZtKQorICAgICwgbV9ydW50aW1lTWV0aG9kU3Bh
Y2UgSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENl
bGxUeXBlLmdldCgpLCBSdW50aW1lTWV0aG9kKQogICAgICwgbV9vdXRwdXRDb25zdHJhaW50U3Bh
Y2UoIldlYkNvcmUgV3JhcHBlciB3LyBPdXRwdXQgQ29uc3RyYWludCIsIHZtLmhlYXAsIHZtLmRl
c3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5nZXQoKSwgdm0uZmFzdE1hbGxvY0FsbG9jYXRv
ci5nZXQoKSkKICAgICAsIG1fZ2xvYmFsT2JqZWN0T3V0cHV0Q29uc3RyYWludFNwYWNlKCJXZWJD
b3JlIEdsb2JhbCBPYmplY3Qgdy8gT3V0cHV0IENvbnN0cmFpbnQiLCB2bS5oZWFwLCB2bS5zZWdt
ZW50ZWRWYXJpYWJsZU9iamVjdEhlYXBDZWxsVHlwZS5nZXQoKSwgdm0uZmFzdE1hbGxvY0FsbG9j
YXRvci5nZXQoKSkKIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dlYkNvcmVK
U0NsaWVudERhdGEuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9X
ZWJDb3JlSlNDbGllbnREYXRhLmgJKHJldmlzaW9uIDIzMDcyMykKKysrIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL1dlYkNvcmVKU0NsaWVudERhdGEuaAkod29ya2luZyBjb3B5KQpAQCAtNTks
NiArNTksOCBAQCBwdWJsaWM6CiAgICAgV2ViQ29yZUJ1aWx0aW5OYW1lcyYgYnVpbHRpbk5hbWVz
KCkgeyByZXR1cm4gbV9idWlsdGluTmFtZXM7IH0KICAgICBKU0J1aWx0aW5GdW5jdGlvbnMmIGJ1
aWx0aW5GdW5jdGlvbnMoKSB7IHJldHVybiBtX2J1aWx0aW5GdW5jdGlvbnM7IH0KICAgICAKKyAg
ICBKU0M6Oklzb1N1YnNwYWNlJiBydW50aW1lTWV0aG9kU3BhY2UoKSB7IHJldHVybiBtX3J1bnRp
bWVNZXRob2RTcGFjZTsgfQorICAgIAogICAgIEpTQzo6Q29tcGxldGVTdWJzcGFjZSYgb3V0cHV0
Q29uc3RyYWludFNwYWNlKCkgeyByZXR1cm4gbV9vdXRwdXRDb25zdHJhaW50U3BhY2U7IH0KICAg
ICBKU0M6OkNvbXBsZXRlU3Vic3BhY2UmIGdsb2JhbE9iamVjdE91dHB1dENvbnN0cmFpbnRTcGFj
ZSgpIHsgcmV0dXJuIG1fZ2xvYmFsT2JqZWN0T3V0cHV0Q29uc3RyYWludFNwYWNlOyB9CiAgICAg
CkBAIC03Niw2ICs3OCw4IEBAIHByaXZhdGU6CiAgICAgSlNCdWlsdGluRnVuY3Rpb25zIG1fYnVp
bHRpbkZ1bmN0aW9uczsKICAgICBXZWJDb3JlQnVpbHRpbk5hbWVzIG1fYnVpbHRpbk5hbWVzOwog
ICAgIAorICAgIEpTQzo6SXNvU3Vic3BhY2UgbV9ydW50aW1lTWV0aG9kU3BhY2U7CisgICAgCiAg
ICAgSlNDOjpDb21wbGV0ZVN1YnNwYWNlIG1fb3V0cHV0Q29uc3RyYWludFNwYWNlOwogICAgIEpT
Qzo6Q29tcGxldGVTdWJzcGFjZSBtX2dsb2JhbE9iamVjdE91dHB1dENvbnN0cmFpbnRTcGFjZTsK
IH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9tZXRob2QuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX21ldGhvZC5jcHAJKHJldmlz
aW9uIDIzMDcyMykKKysrIFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX21ldGhvZC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDAz
LCAyMDA4LCAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAwMy0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgIkpTRE9N
QmluZGluZy5oIgogI2luY2x1ZGUgIkpTSFRNTEVsZW1lbnQuaCIKICNpbmNsdWRlICJKU1BsdWdp
bkVsZW1lbnRGdW5jdGlvbnMuaCIKKyNpbmNsdWRlICJXZWJDb3JlSlNDbGllbnREYXRhLmgiCiAj
aW5jbHVkZSAicnVudGltZV9vYmplY3QuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9FcnJv
ci5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Z1bmN0aW9uUHJvdG90eXBlLmg+CkBAIC03
OSw2ICs4MCwxMSBAQCBib29sIFJ1bnRpbWVNZXRob2Q6OmdldE93blByb3BlcnR5U2xvdChKCiAg
ICAgcmV0dXJuIEludGVybmFsRnVuY3Rpb246OmdldE93blByb3BlcnR5U2xvdCh0aGlzT2JqZWN0
LCBleGVjLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogfQogCitJc29TdWJzcGFjZSogUnVudGltZU1l
dGhvZDo6c3Vic3BhY2VGb3JJbXBsKFZNJiB2bSkKK3sKKyAgICByZXR1cm4gJnN0YXRpY19jYXN0
PEpTVk1DbGllbnREYXRhKj4odm0uY2xpZW50RGF0YSktPnJ1bnRpbWVNZXRob2RTcGFjZSgpOwor
fQorCiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsUnVudGltZU1ldGhv
ZChFeGVjU3RhdGUqIGV4ZWMpCiB7CiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX21ldGhvZC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX21ldGhvZC5oCShyZXZpc2lvbiAyMzA3MjMpCisrKyBT
b3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9tZXRob2QuaAkod29ya2luZyBjb3B5KQpAQCAt
MSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDggQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDAzLTIwMTggQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBA
IC0zNyw2ICszNywxMyBAQCBwdWJsaWM6CiAgICAgdHlwZWRlZiBJbnRlcm5hbEZ1bmN0aW9uIEJh
c2U7CiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3Ry
dWN0dXJlRmxhZ3MgfCBPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QgfCBUeXBlT2ZTaG91bGRD
YWxsR2V0Q2FsbERhdGE7CiAKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZT4KKyAgICBz
dGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKKyAgICB7CisgICAgICAgIHN0
YXRpY19hc3NlcnQoc2l6ZW9mKENlbGxUeXBlKSA9PSBzaXplb2YoUnVudGltZU1ldGhvZCksICJS
dW50aW1lTWV0aG9kIHN1YmNsYXNzZXMgdGhhdCBhZGQgZmllbGRzIG5lZWQgdG8gb3ZlcnJpZGUg
c3Vic3BhY2VGb3I8PigpIik7CisgICAgICAgIHJldHVybiBzdWJzcGFjZUZvckltcGwodm0pOwor
ICAgIH0KKyAgICAKICAgICBzdGF0aWMgUnVudGltZU1ldGhvZCogY3JlYXRlKEV4ZWNTdGF0ZSos
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBjb25z
dCBTdHJpbmcmIG5hbWUsIEJpbmRpbmdzOjpNZXRob2QqIG1ldGhvZCkKICAgICB7CiAgICAgICAg
IFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKQEAgLTY4LDYgKzc1LDggQEAgcHJvdGVjdGVk
OgogcHJpdmF0ZToKICAgICBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgbGVuZ3RoR2V0dGVyKEV4ZWNT
dGF0ZSosIEVuY29kZWRKU1ZhbHVlLCBQcm9wZXJ0eU5hbWUpOwogCisgICAgc3RhdGljIElzb1N1
YnNwYWNlKiBzdWJzcGFjZUZvckltcGwoVk0mKTsKKwogICAgIEJpbmRpbmdzOjpNZXRob2QqIG1f
bWV0aG9kOwogfTsKIApJbmRleDogU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHJldmlzaW9uIDIzMDcyMykKKysrIFNvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjMgQEAKKzIwMTgtMDQt
MTcgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KKworICAgICAgICBUaGUgSW50ZXJu
YWxGdW5jdGlvbiBoaWVyYXJjaHkgc2hvdWxkIGJlIGluIElzb1N1YnNwYWNlcworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg0NzIxCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdp
bnMvTmV0c2NhcGUvSlNOUE1ldGhvZC5jcHA6CisgICAgICAgIChXZWJLaXQ6OkpTTlBNZXRob2Q6
OnN1YnNwYWNlRm9ySW1wbCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBl
L0pTTlBNZXRob2QuaDoKKyAgICAgICAgKFdlYktpdDo6SlNOUE1ldGhvZDo6Y3JlYXRlKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYktpdDo6SlNOUE1ldGhvZDo6bnBJZGVudGlmaWVyIGNvbnN0KTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6SlNOUE1ldGhvZDo6Y3JlYXRlU3RydWN0dXJlKTog
RGVsZXRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvSlNOUE9iamVj
dC5jcHA6CisgICAgICAgIChXZWJLaXQ6OkpTTlBPYmplY3Q6OnN1YnNwYWNlRm9ySW1wbCk6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL0pTTlBPYmplY3QuaDoKKyAgICAg
ICAgKFdlYktpdDo6SlNOUE9iamVjdDo6Y3JlYXRlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktp
dDo6SlNOUE9iamVjdDo6bnBPYmplY3QgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0
OjpKU05QT2JqZWN0OjpjcmVhdGVTdHJ1Y3R1cmUpOiBEZWxldGVkLgorCiAyMDE4LTA0LTE3ICBD
aHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgUkVHUkVTU0lPTiAocjIy
OTgzMSk6IENNRC1jbGlja2luZyBhbiBpQ2xvdWQgd2ViIGFwcCBsaW5rIHVuZXhwZWN0ZWRseSBv
cGVucyB0aGF0IGxpbmsgaW4gYSBuZXcgdGFiIGFuZCB0aGUgY3VycmVudCB0YWIKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL0pTTlBNZXRob2QuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL0pT
TlBNZXRob2QuY3BwCShyZXZpc2lvbiAyMzA3MjMpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvUGx1Z2lucy9OZXRzY2FwZS9KU05QTWV0aG9kLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1
ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAsIDIwMTYgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEwLTIwMTggQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0z
MSw2ICszMSw4IEBACiAjaW5jbHVkZSAiSlNOUE9iamVjdC5oIgogI2luY2x1ZGUgPEphdmFTY3Jp
cHRDb3JlL0Vycm9yLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRnVuY3Rpb25Qcm90b3R5
cGUuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9Jc29TdWJzcGFjZVBlclZNLmg+CisjaW5j
bHVkZSA8SmF2YVNjcmlwdENvcmUvSlNEZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuaD4K
ICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0dsb2JhbE9iamVjdC5oPgogI2luY2x1ZGUgPEph
dmFTY3JpcHRDb3JlL0pTT2JqZWN0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9KU0hUTUxFbGVtZW50
Lmg+CkBAIC01OSw2ICs2MSwxMiBAQCB2b2lkIEpTTlBNZXRob2Q6OmZpbmlzaENyZWF0aW9uKFZN
JiB2bSwgCiAgICAgQVNTRVJUKGluaGVyaXRzKHZtLCBpbmZvKCkpKTsKIH0KIAorSXNvU3Vic3Bh
Y2UqIEpTTlBNZXRob2Q6OnN1YnNwYWNlRm9ySW1wbChWTSYgdm0pCit7CisgICAgc3RhdGljIE5l
dmVyRGVzdHJveWVkPElzb1N1YnNwYWNlUGVyVk0+IHBlclZNKFtdIChWTSYgdm0pIHsgcmV0dXJu
IElTT19TVUJTUEFDRV9QQVJBTUVURVJTKHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlw
ZS5nZXQoKSwgSlNOUE1ldGhvZCk7IH0pOworICAgIHJldHVybiAmcGVyVk0uZ2V0KCkuZm9yVk0o
dm0pOworfQorCiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsTWV0aG9k
KEV4ZWNTdGF0ZSogZXhlYykKIHsKICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwpJbmRleDogU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvSlNOUE1ldGhvZC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL0pTTlBN
ZXRob2QuaAkocmV2aXNpb24gMjMwNzIzKQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1Bs
dWdpbnMvTmV0c2NhcGUvSlNOUE1ldGhvZC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBA
QAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM3LDEwICszNywxNiBA
QCB0eXBlZGVmIHZvaWQqIE5QSWRlbnRpZmllcjsKIG5hbWVzcGFjZSBXZWJLaXQgewogCiAvLyBB
IEpTT2JqZWN0IHRoYXQgd3JhcHMgYW4gTlBNZXRob2QuCi1jbGFzcyBKU05QTWV0aG9kIDogcHVi
bGljIEpTQzo6SW50ZXJuYWxGdW5jdGlvbiB7CitjbGFzcyBKU05QTWV0aG9kIGZpbmFsIDogcHVi
bGljIEpTQzo6SW50ZXJuYWxGdW5jdGlvbiB7CiBwdWJsaWM6CiAgICAgdHlwZWRlZiBKU0M6Oklu
dGVybmFsRnVuY3Rpb24gQmFzZTsKIAorICAgIHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlPgor
ICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKKyAg
ICB7CisgICAgICAgIHJldHVybiBzdWJzcGFjZUZvckltcGwodm0pOworICAgIH0KKwogICAgIHN0
YXRpYyBKU05QTWV0aG9kKiBjcmVhdGUoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIEpTQzo6SlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgU3RyaW5nJiBuYW1lLCBOUElkZW50aWZpZXIg
bnBJZGVudCkKICAgICB7CiAgICAgICAgIEpTQzo6Vk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgp
OwpAQCAtNTcsNyArNjMsOSBAQCBwdWJsaWM6CiBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBmaW5pc2hD
cmVhdGlvbihKU0M6OlZNJiwgY29uc3QgU3RyaW5nJiBuYW1lKTsKIAotcHJpdmF0ZTogICAgCitw
cml2YXRlOgorICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvckltcGwoSlND
OjpWTSYpOworICAgIAogICAgIEpTTlBNZXRob2QoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6
U3RydWN0dXJlKiwgTlBJZGVudGlmaWVyKTsKIAogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSog
Y3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9KU05QT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9KU05QT2JqZWN0LmNwcAkocmV2
aXNpb24gMjMwNzIzKQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2Nh
cGUvSlNOUE9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICog
Q29weXJpZ2h0IChDKSAyMDEwLCAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAxMC0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzUsNiArMzUsOCBAQAogI2lu
Y2x1ZGUgPEphdmFTY3JpcHRDb3JlL0F1eGlsaWFyeUJhcnJpZXJJbmxpbmVzLmg+CiAjaW5jbHVk
ZSA8SmF2YVNjcmlwdENvcmUvRXJyb3IuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9JZGVu
dGlmaWVySW5saW5lcy5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0lzb1N1YnNwYWNlUGVy
Vk0uaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0Rlc3RydWN0aWJsZU9iamVjdEhlYXBD
ZWxsVHlwZS5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTR2xvYmFsT2JqZWN0Lmg+CiAj
aW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNMb2NrLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENv
cmUvT2JqZWN0UHJvdG90eXBlLmg+CkBAIC01MjcsNiArNTI5LDEyIEBAIEpTT2JqZWN0KiBKU05Q
T2JqZWN0Ojp0aHJvd0ludmFsaWRBY2Nlc3MKICAgICByZXR1cm4gdGhyb3dFeGNlcHRpb24oZXhl
Yywgc2NvcGUsIGNyZWF0ZVJlZmVyZW5jZUVycm9yKGV4ZWMsICJUcnlpbmcgdG8gYWNjZXNzIG9i
amVjdCBmcm9tIGRlc3Ryb3llZCBwbHVnLWluLiIpKTsKIH0KIAorSXNvU3Vic3BhY2UqIEpTTlBP
YmplY3Q6OnN1YnNwYWNlRm9ySW1wbChWTSYgdm0pCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJv
eWVkPElzb1N1YnNwYWNlUGVyVk0+IHBlclZNKFtdIChWTSYgdm0pIHsgcmV0dXJuIElTT19TVUJT
UEFDRV9QQVJBTUVURVJTKHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5nZXQoKSwg
SlNOUE9iamVjdCk7IH0pOworICAgIHJldHVybiAmcGVyVk0uZ2V0KCkuZm9yVk0odm0pOworfQor
CiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI2VuZGlmIC8vIEVOQUJMRShORVRTQ0FQRV9QTFVH
SU5fQVBJKQpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUv
SlNOUE9iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVn
aW5zL05ldHNjYXBlL0pTTlBPYmplY3QuaAkocmV2aXNpb24gMjMwNzIzKQorKysgU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvSlNOUE9iamVjdC5oCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAxOCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
QEAgLTQxLDExICs0MSwxNyBAQCBjbGFzcyBOUFJ1bnRpbWVPYmplY3RNYXA7CiAgICAgCiAvLyBK
U05QT2JqZWN0IGlzIGEgSlNPYmplY3QgdGhhdCB3cmFwcyBhbiBOUE9iamVjdC4KIAotY2xhc3Mg
SlNOUE9iamVjdCA6IHB1YmxpYyBKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0IHsKK2NsYXNzIEpT
TlBPYmplY3QgZmluYWwgOiBwdWJsaWMgSlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCB7CiBwdWJs
aWM6CiAgICAgdHlwZWRlZiBKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0IEJhc2U7CiAgICAgc3Rh
dGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3Mg
fCBKU0M6Ok92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCB8IEpTQzo6T3ZlcnJpZGVzR2V0UHJv
cGVydHlOYW1lcyB8IEpTQzo6VHlwZU9mU2hvdWxkQ2FsbEdldENhbGxEYXRhOwogCisgICAgdGVt
cGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGU+CisgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1
YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHN1YnNwYWNlRm9y
SW1wbCh2bSk7CisgICAgfQorCiAgICAgc3RhdGljIEpTTlBPYmplY3QqIGNyZWF0ZShKU0M6OkpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIE5QUnVudGltZU9iamVjdE1hcCogb2JqZWN0TWFw
LCBOUE9iamVjdCogbnBPYmplY3QpCiAgICAgewogICAgICAgICBKU0M6OlN0cnVjdHVyZSogc3Ry
dWN0dXJlID0gY3JlYXRlU3RydWN0dXJlKGdsb2JhbE9iamVjdC0+dm0oKSwgZ2xvYmFsT2JqZWN0
LCBnbG9iYWxPYmplY3QtPm9iamVjdFByb3RvdHlwZSgpKTsKQEAgLTc0LDYgKzgwLDggQEAgcHJv
dGVjdGVkOgogICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oSlNDOjpKU0dsb2JhbE9iamVjdCopOwog
CiBwcml2YXRlOgorICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvckltcGwo
SlNDOjpWTSYpOworICAgIAogICAgIEpTTlBPYmplY3QoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpT
Qzo6U3RydWN0dXJlKiwgTlBSdW50aW1lT2JqZWN0TWFwKiwgTlBPYmplY3QqKTsKICAgICAKICAg
ICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlND
OjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>338189</attachid>
            <date>2018-04-17 20:01:02 -0700</date>
            <delta_ts>2018-04-19 11:17:39 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>48661</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjMwNzQxKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ2IEBA
CisyMDE4LTA0LTE3ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
VGhlIEludGVybmFsRnVuY3Rpb24gaGllcmFyY2h5IHNob3VsZCBiZSBpbiBJc29TdWJzcGFjZXMK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4NDcyMQor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAgICAKKyAgICAgICAg
VGhpcyBtb3ZlcyBJbnRlcm5hbEZ1bmN0aW9uIGludG8gYSBJc29TdWJzcGFjZS4gSXQgYWxzbyBt
b3ZlcyBhbGwgc3ViY2xhc3NlcyBpbnRvIElzb1N1YnNwYWNlcywKKyAgICAgICAgYnV0IHN1YmNs
YXNzZXMgdGhhdCBhcmUgdGhlIHNhbWUgc2l6ZSBhcyBJbnRlcm5hbEZ1bmN0aW9uIHNoYXJlIGl0
cyBzdWJzcGFjZS4gSSBkaWQgdGhpcworICAgICAgICBiZWNhdXNlIHRoZSBzdWJjbGFzc2VzIGFw
cGVhciB0byBqdXN0IG92ZXJyaWRlIG1ldGhvZHMsIHdoaWNoIGFyZSBjYWxsZWQgZHluYW1pY2Fs
bHkgdmlhIHRoZQorICAgICAgICBzdHJ1Y3R1cmUgb3IgY2xhc3Mgb2YgdGhlIG9iamVjdC4gU28s
IEkgZG9uJ3Qgc2VlIGEgdHlwZSBjb25mdXNpb24gcmlzayBpZiBVQUYgaXMgdXNlZCB0bworICAg
ICAgICBhbGxvY2F0ZSBvbmUga2luZCBvZiBJbnRlcm5hbEZ1bmN0aW9uIG92ZXIgYW5vdGhlci4K
KworICAgICAgICAqIEFQSS9KU0Jhc2UuaDoKKyAgICAgICAgKiBBUEkvSlNDYWxsYmFja0Z1bmN0
aW9uLmg6CisgICAgICAgICogQVBJL09iakNDYWxsYmFja0Z1bmN0aW9uLmg6CisgICAgICAgIChK
U0M6Ok9iakNDYWxsYmFja0Z1bmN0aW9uOjpzdWJzcGFjZUZvcik6CisgICAgICAgICogQ01ha2VM
aXN0cy50eHQ6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvajoKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBoZWFwL0lzb1N1YnNwYWNl
UGVyVk0uY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6SXNvU3Vic3BhY2VQZXJWTTo6QXV0b3Jl
bW92aW5nSXNvU3Vic3BhY2U6OkF1dG9yZW1vdmluZ0lzb1N1YnNwYWNlKToKKyAgICAgICAgKEpT
Qzo6SXNvU3Vic3BhY2VQZXJWTTo6QXV0b3JlbW92aW5nSXNvU3Vic3BhY2U6On5BdXRvcmVtb3Zp
bmdJc29TdWJzcGFjZSk6CisgICAgICAgIChKU0M6Oklzb1N1YnNwYWNlUGVyVk06Oklzb1N1YnNw
YWNlUGVyVk0pOgorICAgICAgICAoSlNDOjpJc29TdWJzcGFjZVBlclZNOjp+SXNvU3Vic3BhY2VQ
ZXJWTSk6CisgICAgICAgIChKU0M6Oklzb1N1YnNwYWNlUGVyVk06OmZvclZNKToKKyAgICAgICAg
KiBoZWFwL0lzb1N1YnNwYWNlUGVyVk0uaDogQWRkZWQuCisgICAgICAgIChKU0M6Oklzb1N1YnNw
YWNlUGVyVk06OlN1YnNwYWNlUGFyYW1ldGVyczo6U3Vic3BhY2VQYXJhbWV0ZXJzKToKKyAgICAg
ICAgKiBydW50aW1lL0Vycm9yLmg6CisgICAgICAgICogcnVudGltZS9FcnJvckNvbnN0cnVjdG9y
Lmg6CisgICAgICAgICogcnVudGltZS9JbnRlcm5hbEZ1bmN0aW9uLmg6CisgICAgICAgIChKU0M6
OkludGVybmFsRnVuY3Rpb246OnN1YnNwYWNlRm9yKToKKyAgICAgICAgKiBydW50aW1lL0ludGxD
b2xsYXRvckNvbnN0cnVjdG9yLmg6CisgICAgICAgICogcnVudGltZS9JbnRsRGF0ZVRpbWVGb3Jt
YXRDb25zdHJ1Y3Rvci5oOgorICAgICAgICAqIHJ1bnRpbWUvSW50bE51bWJlckZvcm1hdENvbnN0
cnVjdG9yLmg6CisgICAgICAgICogcnVudGltZS9KU0FycmF5QnVmZmVyQ29uc3RydWN0b3IuaDoK
KyAgICAgICAgKiBydW50aW1lL05hdGl2ZUVycm9yQ29uc3RydWN0b3IuaDoKKyAgICAgICAgKiBy
dW50aW1lL1Byb3h5UmV2b2tlLmg6CisgICAgICAgICogcnVudGltZS9SZWdFeHBDb25zdHJ1Y3Rv
ci5oOgorICAgICAgICAqIHJ1bnRpbWUvVk0uY3BwOgorICAgICAgICAoSlNDOjpWTTo6Vk0pOgor
ICAgICAgICAqIHJ1bnRpbWUvVk0uaDoKKwogMjAxOC0wNC0xNyAgQ29tbWl0IFF1ZXVlICA8Y29t
bWl0LXF1ZXVlQHdlYmtpdC5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQg
cjIzMDY5NywgcjIzMDcyMCwgYW5kIHIyMzA3MjQuCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ01ha2VMaXN0cy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0NN
YWtlTGlzdHMudHh0CShyZXZpc2lvbiAyMzA3MjMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Q01ha2VMaXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTUzMSw2ICs1MzEsNyBAQCBzZXQoSmF2
YVNjcmlwdENvcmVfUFJJVkFURV9GUkFNRVdPUktfSEVBCiAgICAgaGVhcC9JbmNyZW1lbnRhbFN3
ZWVwZXIuaAogICAgIGhlYXAvSXNvQ2VsbFNldC5oCiAgICAgaGVhcC9Jc29TdWJzcGFjZS5oCisg
ICAgaGVhcC9Jc29TdWJzcGFjZVBlclZNLmgKICAgICBoZWFwL0xhcmdlQWxsb2NhdGlvbi5oCiAg
ICAgaGVhcC9MaXN0YWJsZUhhbmRsZXIuaAogICAgIGhlYXAvTG9jYWxBbGxvY2F0b3IuaApJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0Cj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dAkocmV2aXNpb24gMjMwNzIzKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC01MDIsNiArNTAy
LDcgQEAgaGVhcC9JbmNyZW1lbnRhbFN3ZWVwZXIuY3BwCiBoZWFwL0lzb0FsaWduZWRNZW1vcnlB
bGxvY2F0b3IuY3BwCiBoZWFwL0lzb0NlbGxTZXQuY3BwCiBoZWFwL0lzb1N1YnNwYWNlLmNwcAor
aGVhcC9Jc29TdWJzcGFjZVBlclZNLmNwcAogaGVhcC9KSVRTdHViUm91dGluZVNldC5jcHAKIGhl
YXAvTGFyZ2VBbGxvY2F0aW9uLmNwcAogaGVhcC9Mb2NhbEFsbG9jYXRvci5jcHAKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNCYXNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL0FQSS9KU0Jhc2UuaAkocmV2aXNpb24gMjMwNzIzKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL0FQSS9KU0Jhc2UuaAkod29ya2luZyBjb3B5KQpAQCAtMTQzLDcgKzE0Myw3
IEBAIEpTX0VYUE9SVCB2b2lkIEpTR2FyYmFnZUNvbGxlY3QoSlNDb250ZXgKIH0KICNlbmRpZgog
Ci0vKiBFbmFibGUgdGhlIE9iamVjdGl2ZS1DIEFQSSBmb3IgcGxhdGZvcm1zIHdpdGggYSBtb2Rl
cm4gcnVudGltZS4gKi8KKy8qIEVuYWJsZSB0aGUgT2JqZWN0aXZlLUMgQVBJIGZvciBwbGF0Zm9y
bXMgd2l0aCBhIG1vZGVybiBydW50aW1lLiBOT1RFOiBUaGlzIGlzIGR1cGxpY2F0ZWQgaW4gVk0u
aC4gKi8KICNpZiAhZGVmaW5lZChKU0NfT0JKQ19BUElfRU5BQkxFRCkKICNpZiAoZGVmaW5lZChf
X2NsYW5nX18pICYmIGRlZmluZWQoX19BUFBMRV9fKSAmJiAoKGRlZmluZWQoX19NQUNfT1NfWF9W
RVJTSU9OX01JTl9SRVFVSVJFRCkgJiYgIWRlZmluZWQoX19pMzg2X18pKSB8fCAoZGVmaW5lZChU
QVJHRVRfT1NfSVBIT05FKSAmJiBUQVJHRVRfT1NfSVBIT05FKSkpCiAjZGVmaW5lIEpTQ19PQkpD
X0FQSV9FTkFCTEVEIDEKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFj
a0Z1bmN0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0Nh
bGxiYWNrRnVuY3Rpb24uaAkocmV2aXNpb24gMjMwNzIzKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL0FQSS9KU0NhbGxiYWNrRnVuY3Rpb24uaAkod29ya2luZyBjb3B5KQpAQCAtMzcsNiArMzcs
MTIgQEAgY2xhc3MgSlNDYWxsYmFja0Z1bmN0aW9uIGZpbmFsIDogcHVibGljIAogcHVibGljOgog
ICAgIHR5cGVkZWYgSW50ZXJuYWxGdW5jdGlvbiBCYXNlOwogCisgICAgdGVtcGxhdGU8dHlwZW5h
bWUgQ2VsbFR5cGU+CisgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0p
CisgICAgeworICAgICAgICByZXR1cm4gJnZtLmNhbGxiYWNrRnVuY3Rpb25TcGFjZTsKKyAgICB9
CisKICAgICBzdGF0aWMgSlNDYWxsYmFja0Z1bmN0aW9uKiBjcmVhdGUoVk0mLCBKU0dsb2JhbE9i
amVjdCosIEpTT2JqZWN0Q2FsbEFzRnVuY3Rpb25DYWxsYmFjaywgY29uc3QgU3RyaW5nJiBuYW1l
KTsKIAogICAgIERFQ0xBUkVfSU5GTzsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkv
T2JqQ0NhbGxiYWNrRnVuY3Rpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvQVBJL09iakNDYWxsYmFja0Z1bmN0aW9uLmgJKHJldmlzaW9uIDIzMDcyMykKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9BUEkvT2JqQ0NhbGxiYWNrRnVuY3Rpb24uaAkod29ya2luZyBjb3B5
KQpAQCAtNDgsNiArNDgsMTIgQEAgY2xhc3MgT2JqQ0NhbGxiYWNrRnVuY3Rpb24gOiBwdWJsaWMg
SW50ZQogcHVibGljOgogICAgIHR5cGVkZWYgSW50ZXJuYWxGdW5jdGlvbiBCYXNlOwogCisgICAg
dGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGU+CisgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJz
cGFjZUZvcihWTSYgdm0pCisgICAgeworICAgICAgICByZXR1cm4gJnZtLm9iakNDYWxsYmFja0Z1
bmN0aW9uU3BhY2U7CisgICAgfQorCiAgICAgc3RhdGljIE9iakNDYWxsYmFja0Z1bmN0aW9uKiBj
cmVhdGUoVk0mLCBKU0dsb2JhbE9iamVjdCosIGNvbnN0IFN0cmluZyYgbmFtZSwgc3RkOjp1bmlx
dWVfcHRyPE9iakNDYWxsYmFja0Z1bmN0aW9uSW1wbD4pOwogICAgIHN0YXRpYyB2b2lkIGRlc3Ry
b3koSlNDZWxsKik7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvZ2xpYi9KU0ND
YWxsYmFja0Z1bmN0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
QVBJL2dsaWIvSlNDQ2FsbGJhY2tGdW5jdGlvbi5jcHAJKHJldmlzaW9uIDIzMDcyMykKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvZ2xpYi9KU0NDYWxsYmFja0Z1bmN0aW9uLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMSw2ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTggSWdh
bGlhIFMuTC4KLSAqIENvcHlyaWdodCAoQykgMjAwNiwgMjAwOCwgMjAxNiBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYtMjAxOCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAg
LTI5LDggKzI5LDEwIEBACiAKICNpbmNsdWRlICJBUElDYWxsYmFja0Z1bmN0aW9uLmgiCiAjaW5j
bHVkZSAiQVBJQ2FzdC5oIgorI2luY2x1ZGUgIklzb1N1YnNwYWNlUGVyVk0uaCIKICNpbmNsdWRl
ICJKU0NDbGFzc1ByaXZhdGUuaCIKICNpbmNsdWRlICJKU0NDb250ZXh0UHJpdmF0ZS5oIgorI2lu
Y2x1ZGUgIkpTRGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmgiCiAjaW5jbHVkZSAiSlND
RXhjZXB0aW9uUHJpdmF0ZS5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKICNpbmNsdWRlICJK
U0Z1bmN0aW9uLmgiCkBAIC0yMDYsNCArMjA4LDEwIEBAIHZvaWQgSlNDQ2FsbGJhY2tGdW5jdGlv
bjo6ZGVzdHJveShKU0NlbGwKICAgICBzdGF0aWNfY2FzdDxKU0NDYWxsYmFja0Z1bmN0aW9uKj4o
Y2VsbCktPkpTQ0NhbGxiYWNrRnVuY3Rpb246On5KU0NDYWxsYmFja0Z1bmN0aW9uKCk7CiB9CiAK
K0lzb1N1YnNwYWNlKiBKU0NDYWxsYmFja0Z1bmN0aW9uOjpzdWJzcGFjZUZvckltcGwoVk0mIHZt
KQoreworICAgIE5ldmVyRGVzdHJveWVkPElzb1N1YnNwYWNlUGVyVk0+IHBlclZNKFtdIChWTSYg
dm0pIC0+IElzb1N1YnNwYWNlUGVyVk06OlN1YnNwYWNlUGFyYW1ldGVycyB7IHJldHVybiBJU09f
U1VCU1BBQ0VfUEFSQU1FVEVSUyh2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuZ2V0
KCksIEpTQ0NhbGxiYWNrRnVuY3Rpb24pOyB9KTsKKyAgICByZXR1cm4gJnBlclZNLmdldCgpLmZv
clZNKHZtKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvQVBJL2dsaWIvSlNDQ2FsbGJhY2tGdW5jdGlvbi5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9BUEkvZ2xpYi9KU0NDYWxsYmFja0Z1bmN0aW9uLmgJKHJldmlzaW9u
IDIzMDcyMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvZ2xpYi9KU0NDYWxsYmFja0Z1
bmN0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTQwLDYgKzQwLDEyIEBAIGNsYXNzIEpTQ0NhbGxi
YWNrRnVuY3Rpb24gOiBwdWJsaWMgSW50ZXIKIHB1YmxpYzoKICAgICB0eXBlZGVmIEludGVybmFs
RnVuY3Rpb24gQmFzZTsKIAorICAgIHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlPgorICAgIHN0
YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQorICAgIHsKKyAgICAgICAgcmV0
dXJuIHN1YnNwYWNlRm9ySW1wbCh2bSk7CisgICAgfQorCiAgICAgZW51bSBjbGFzcyBUeXBlIHsK
ICAgICAgICAgRnVuY3Rpb24sCiAgICAgICAgIE1ldGhvZCwKQEAgLTYxLDYgKzY3LDggQEAgcHVi
bGljOgogICAgIEpTT2JqZWN0UmVmIGNvbnN0cnVjdChKU0NvbnRleHRSZWYsIHNpemVfdCBhcmd1
bWVudENvdW50LCBjb25zdCBKU1ZhbHVlUmVmIGFyZ3VtZW50c1tdLCBKU1ZhbHVlUmVmKiBleGNl
cHRpb24pOwogCiBwcml2YXRlOgorICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3JJ
bXBsKFZNJik7CisgICAgCiAgICAgSlNDQ2FsbGJhY2tGdW5jdGlvbihWTSYsIFN0cnVjdHVyZSos
IFR5cGUsIEpTQ0NsYXNzKiwgR1JlZlB0cjxHQ2xvc3VyZT4mJiwgR1R5cGUsIFZlY3RvcjxHVHlw
ZT4mJik7CiAKICAgICBKU09iamVjdENhbGxBc0Z1bmN0aW9uQ2FsbGJhY2sgZnVuY3Rpb25DYWxs
YmFjaygpIHsgcmV0dXJuIG1fZnVuY3Rpb25DYWxsYmFjazsgfQpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDIzMDcyMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkp
CkBAIC0zNDMsNiArMzQzLDcgQEAKIAkJMEY1Q0Y5ODQxRTlENTM3NzAwQzE4NjkyIC8qIEFpckxv
d2VyU3RhY2tBcmdzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAwRjVDRjk4MzFFOUQ1Mzc1MDBDMTg2OTIgLyogQWlyTG93ZXJTdGFja0FyZ3MuaCAqLzsg
fTsKIAkJMEY1Q0Y5ODkxRTlFRDY1MjAwQzE4NjkyIC8qIEFpclN0YWNrQWxsb2NhdGlvbi5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY1Q0Y5ODcxRTlF
RDY0RTAwQzE4NjkyIC8qIEFpclN0YWNrQWxsb2NhdGlvbi5oICovOyB9OwogCQkwRjVFMEZEODIw
N0M3MjczMDA5N0YwREUgLyogREZHQWJzdHJhY3RJbnRlcnByZXRlckNsb2JiZXJTdGF0ZS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY1RTBGRDYyMDdD
NzI3MTAwOTdGMERFIC8qIERGR0Fic3RyYWN0SW50ZXJwcmV0ZXJDbG9iYmVyU3RhdGUuaCAqLzsg
fTsKKwkJMEY1RTBGRTcyMDg2QUQ0ODAwOTdGMERFIC8qIElzb1N1YnNwYWNlUGVyVk0uaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNUUwRkU1MjA4NkFE
NDYwMDk3RjBERSAvKiBJc29TdWJzcGFjZVBlclZNLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEY1RUY5MUYxNjg3OEY3RDAwM0U1QzI1IC8qIEpJ
VFRodW5rcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MEY1RUY5MUMxNjg3OEY3ODAwM0U1QzI1IC8qIEpJVFRodW5rcy5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGNUYwOENGMTQ2Qzc2MzMwMDA0NzJB
OSAvKiBVbmNvbmRpdGlvbmFsRmluYWxpemVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwRjVGMDhDRTE0NkM3NjJGMDAwNDcyQTkgLyogVW5jb25kaXRp
b25hbEZpbmFsaXplci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTBGNjBGRTkwMUZGQzM3MDIwMDAzMzIwQSAvKiBFeGVjdXRhYmxlVG9Db2RlQmxv
Y2tFZGdlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
RjYwRkU4RTFGRkMzNkZEMDAwMzMyMEEgLyogRXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZS5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0yMzUwLDYg
KzIzNTEsOCBAQAogCQkwRjVEMDg1QzFCOENGOTlEMDAxMTQzQjQgLyogREZHTm9kZU9yaWdpbi5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBERkdOb2RlT3JpZ2luLmNw
cDsgcGF0aCA9IGRmZy9ERkdOb2RlT3JpZ2luLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMEY1RTBGRDYyMDdDNzI3MTAwOTdGMERFIC8qIERGR0Fic3RyYWN0SW50ZXJwcmV0ZXJD
bG9iYmVyU3RhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHQWJzdHJh
Y3RJbnRlcnByZXRlckNsb2JiZXJTdGF0ZS5oOyBwYXRoID0gZGZnL0RGR0Fic3RyYWN0SW50ZXJw
cmV0ZXJDbG9iYmVyU3RhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY1RTBG
RDcyMDdDNzI3MTAwOTdGMERFIC8qIERGR0Fic3RyYWN0SW50ZXJwcmV0ZXJDbG9iYmVyU3RhdGUu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gREZHQWJzdHJhY3RJbnRl
cnByZXRlckNsb2JiZXJTdGF0ZS5jcHA7IHBhdGggPSBkZmcvREZHQWJzdHJhY3RJbnRlcnByZXRl
ckNsb2JiZXJTdGF0ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGNUUwRkU1
MjA4NkFENDYwMDk3RjBERSAvKiBJc29TdWJzcGFjZVBlclZNLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IElzb1N1YnNwYWNlUGVyVk0uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJMEY1RTBGRTYyMDg2QUQ0NzAwOTdGMERFIC8qIElzb1N1YnNwYWNlUGVyVk0uY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSXNvU3Vic3BhY2VQZXJWTS5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNUVGOTFCMTY4NzhGNzgwMDNFNUMy
NSAvKiBKSVRUaHVua3MuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
SklUVGh1bmtzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY1RUY5MUMxNjg3
OEY3ODAwM0U1QzI1IC8qIEpJVFRodW5rcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBKSVRUaHVua3MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY1RjA4Q0Ux
NDZDNzYyRjAwMDQ3MkE5IC8qIFVuY29uZGl0aW9uYWxGaW5hbGl6ZXIuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gVW5jb25kaXRpb25hbEZpbmFsaXplci5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtNTY5NSw2ICs1Njk4LDggQEAKIAkJCQkwRkI0Njc3QjFGRERB
NkQ4MDAzRkNCMDkgLyogSXNvQ2VsbFNldElubGluZXMuaCAqLywKIAkJCQkwRkRDRTEyQzFGQUZC
NERFMDA2RjM5MDEgLyogSXNvU3Vic3BhY2UuY3BwICovLAogCQkJCTBGRENFMTJCMUZBRkI0REUw
MDZGMzkwMSAvKiBJc29TdWJzcGFjZS5oICovLAorCQkJCTBGNUUwRkU2MjA4NkFENDcwMDk3RjBE
RSAvKiBJc29TdWJzcGFjZVBlclZNLmNwcCAqLywKKwkJCQkwRjVFMEZFNTIwODZBRDQ2MDA5N0Yw
REUgLyogSXNvU3Vic3BhY2VQZXJWTS5oICovLAogCQkJCTBGNzY2RDI5MTVBOENDMzQwMDhGMzYz
RSAvKiBKSVRTdHViUm91dGluZVNldC5jcHAgKi8sCiAJCQkJMEY3NjZEMkExNUE4Q0MzNDAwOEYz
NjNFIC8qIEpJVFN0dWJSb3V0aW5lU2V0LmggKi8sCiAJCQkJMEYwNzBBNDUxRDU0M0E4OTAwNkU3
MjMyIC8qIExhcmdlQWxsb2NhdGlvbi5jcHAgKi8sCkBAIC05NDkxLDYgKzk0OTYsNyBAQAogCQkJ
CTUzRjhEMjAwMUU4Mzg3RDQwMEQyMTExNiAvKiBXYXNtQkJRUGxhbklubGluZXMuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUFENEIxREZBMURGMjQ0RTIwMDcxQUUzMiAvKiBXYXNtQmluZGluZy5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJNTI1QzBEREExRTkzNTg0NzAwMjE4NENEIC8qIFdhc21DYWxsZWUu
aCBpbiBIZWFkZXJzICovLAorCQkJCTBGNUUwRkU3MjA4NkFENDgwMDk3RjBERSAvKiBJc29TdWJz
cGFjZVBlclZNLmggaW4gSGVhZGVycyAqLywKIAkJCQk1M0ZEMDRENDFEN0FCMjkxMDAzMjg3RDMg
LyogV2FzbUNhbGxpbmdDb252ZW50aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MjZBQzRCNzFF
OTc3QzVEMDAzNTAwRTEgLyogV2FzbUNvZGVCbG9jay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQUQ0
MTJCMzQxRTdCMkU5RTAwOEFGMTU3IC8qIFdhc21Db250ZXh0LmggaW4gSGVhZGVycyAqLywKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0lzb1N1YnNwYWNlUGVyVk0uY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0lzb1N1YnNwYWNlUGVyVk0uY3Bw
CShub25leGlzdGVudCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0lzb1N1YnNwYWNl
UGVyVk0uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNzMgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgIklzb1N1YnNwYWNlUGVyVk0uaCIKKworI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKKwor
bmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIElzb1N1YnNwYWNlUGVyVk06OkF1dG9yZW1vdmluZ0lz
b1N1YnNwYWNlIDogcHVibGljIElzb1N1YnNwYWNlIHsKK3B1YmxpYzoKKyAgICBBdXRvcmVtb3Zp
bmdJc29TdWJzcGFjZShJc29TdWJzcGFjZVBlclZNJiBwZXJWTSwgQ1N0cmluZyBuYW1lLCBIZWFw
JiBoZWFwLCBIZWFwQ2VsbFR5cGUqIGhlYXBDZWxsVHlwZSwgc2l6ZV90IHNpemUpCisgICAgICAg
IDogSXNvU3Vic3BhY2UobmFtZSwgaGVhcCwgaGVhcENlbGxUeXBlLCBzaXplKQorICAgICAgICAs
IG1fcGVyVk0ocGVyVk0pCisgICAgeworICAgIH0KKyAgICAKKyAgICB+QXV0b3JlbW92aW5nSXNv
U3Vic3BhY2UoKQorICAgIHsKKyAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX3BlclZN
Lm1fbG9jayk7CisgICAgICAgIG1fcGVyVk0ubV9zdWJzcGFjZVBlclZNLnJlbW92ZShzcGFjZSgp
LmhlYXAoKS0+dm0oKSk7CisgICAgfQorCitwcml2YXRlOgorICAgIElzb1N1YnNwYWNlUGVyVk0m
IG1fcGVyVk07Cit9OworCitJc29TdWJzcGFjZVBlclZNOjpJc29TdWJzcGFjZVBlclZNKEZ1bmN0
aW9uPFN1YnNwYWNlUGFyYW1ldGVycyhWTSYpPiBzdWJzcGFjZVBhcmFtZXRlcnMpCisgICAgOiBt
X3N1YnNwYWNlUGFyYW1ldGVycyhXVEZNb3ZlKHN1YnNwYWNlUGFyYW1ldGVycykpCit7Cit9CisK
K0lzb1N1YnNwYWNlUGVyVk06On5Jc29TdWJzcGFjZVBlclZNKCkKK3sKKyAgICBVTlJFQUNIQUJM
RV9GT1JfUExBVEZPUk0oKTsKK30KKworSXNvU3Vic3BhY2UmIElzb1N1YnNwYWNlUGVyVk06OmZv
clZNKFZNJiB2bSkKK3sKKyAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fbG9jayk7CisgICAg
YXV0byByZXN1bHQgPSBtX3N1YnNwYWNlUGVyVk0uYWRkKCZ2bSwgbnVsbHB0cik7CisgICAgaWYg
KHJlc3VsdCkgeworICAgICAgICBTdWJzcGFjZVBhcmFtZXRlcnMgcGFyYW1zID0gbV9zdWJzcGFj
ZVBhcmFtZXRlcnModm0pOworICAgICAgICByZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gbmV3IEF1
dG9yZW1vdmluZ0lzb1N1YnNwYWNlKCp0aGlzLCBwYXJhbXMubmFtZSwgdm0uaGVhcCwgcGFyYW1z
LmhlYXBDZWxsVHlwZSwgcGFyYW1zLnNpemUpOworICAgIH0KKyAgICByZXR1cm4gKnJlc3VsdC5p
dGVyYXRvci0+dmFsdWU7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQworCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaGVhcC9Jc29TdWJzcGFjZVBlclZNLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSXNvU3Vic3BhY2VQZXJWTS5oCShub25leGlzdGVudCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0lzb1N1YnNwYWNlUGVyVk0uaAkod29ya2lu
ZyBjb3B5KQpAQCAtMCwwICsxLDczIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
CisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuIAorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiSXNvU3Vic3BhY2UuaCIK
KyNpbmNsdWRlIDx3dGYvRnVuY3Rpb24uaD4KKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorI2lu
Y2x1ZGUgPHd0Zi9Mb2NrLmg+CisKK25hbWVzcGFjZSBKU0MgeworCisvLyBUaGlzIGlzIGFuIGFw
cHJvcHJpYXRlIHdheSB0byBzdGFzaCBJc29TdWJzcGFjZXMgZm9yIHJhcmVseS11c2VkIGNsYXNz
ZXMgb3IgY2xhc3NlcyB0aGF0IGFyZSBtb3N0bHkKKy8vIHN1cmUgdG8gYmUgbWFpbi10aHJlYWQt
b25seS4gQnV0IGlmIGEgY2xhc3MgdHlwaWNhbGx5IGdldHMgaW5zdGFudGlhdGVkIGZyb20gbXVs
dGlwbGUgdGhyZWFkcyBhdAorLy8gb25jZSwgdGhlbiB0aGlzIGlzIG5vdCBncmVhdCwgYmVjYXVz
ZSBjb25jdXJyZW50IGFsbG9jYXRpb25zIHdpbGwgcHJvYmFibHkgY29udGVuZCBvbiB0aGlzIHRo
aW5nJ3MKKy8vIGxvY2suCitjbGFzcyBJc29TdWJzcGFjZVBlclZNIHsKK3B1YmxpYzoKKyAgICBz
dHJ1Y3QgU3Vic3BhY2VQYXJhbWV0ZXJzIHsKKyAgICAgICAgU3Vic3BhY2VQYXJhbWV0ZXJzKCkg
eyB9CisgICAgICAgIAorICAgICAgICBTdWJzcGFjZVBhcmFtZXRlcnMoQ1N0cmluZyBuYW1lLCBI
ZWFwQ2VsbFR5cGUqIGhlYXBDZWxsVHlwZSwgc2l6ZV90IHNpemUpCisgICAgICAgICAgICA6IG5h
bWUoV1RGTW92ZShuYW1lKSkKKyAgICAgICAgICAgICwgaGVhcENlbGxUeXBlKGhlYXBDZWxsVHlw
ZSkKKyAgICAgICAgICAgICwgc2l6ZShzaXplKQorICAgICAgICB7CisgICAgICAgIH0KKyAgICAg
ICAgCisgICAgICAgIENTdHJpbmcgbmFtZTsKKyAgICAgICAgSGVhcENlbGxUeXBlKiBoZWFwQ2Vs
bFR5cGUgeyBudWxscHRyIH07CisgICAgICAgIHNpemVfdCBzaXplIHsgMCB9OworICAgIH07Cisg
ICAgCisgICAgSlNfRVhQT1JUX1BSSVZBVEUgSXNvU3Vic3BhY2VQZXJWTShGdW5jdGlvbjxTdWJz
cGFjZVBhcmFtZXRlcnMoVk0mKT4pOworICAgIEpTX0VYUE9SVF9QUklWQVRFIH5Jc29TdWJzcGFj
ZVBlclZNKCk7CisgICAgCisgICAgSlNfRVhQT1JUX1BSSVZBVEUgSXNvU3Vic3BhY2UmIGZvclZN
KFZNJik7CisKK3ByaXZhdGU6CisgICAgY2xhc3MgQXV0b3JlbW92aW5nSXNvU3Vic3BhY2U7Cisg
ICAgZnJpZW5kIGNsYXNzIEF1dG9yZW1vdmluZ0lzb1N1YnNwYWNlOworCisgICAgTG9jayBtX2xv
Y2s7CisgICAgSGFzaE1hcDxWTSosIElzb1N1YnNwYWNlKj4gbV9zdWJzcGFjZVBlclZNOworICAg
IEZ1bmN0aW9uPFN1YnNwYWNlUGFyYW1ldGVycyhWTSYpPiBtX3N1YnNwYWNlUGFyYW1ldGVyczsK
K307CisKKyNkZWZpbmUgSVNPX1NVQlNQQUNFX1BBUkFNRVRFUlMoaGVhcENlbGxUeXBlLCB0eXBl
KSA6OkpTQzo6SXNvU3Vic3BhY2VQZXJWTTo6U3Vic3BhY2VQYXJhbWV0ZXJzKCJJc29sYXRlZCAi
ICN0eXBlICIgU3BhY2UiLCAoaGVhcENlbGxUeXBlKSwgc2l6ZW9mKHR5cGUpKQorCit9IC8vIG5h
bWVzcGFjZSBKU0MKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3Iu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvci5oCShy
ZXZpc2lvbiAyMzA3MjMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvci5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xMTUsNiArMTE1LDEyIEBAIHByaXZhdGU6CiAKIHB1YmxpYzoK
ICAgICB0eXBlZGVmIEludGVybmFsRnVuY3Rpb24gQmFzZTsKKyAgICAKKyAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBDZWxsVHlwZT4KKyAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZN
JiB2bSkKKyAgICB7CisgICAgICAgIHJldHVybiAmdm0uc3RyaWN0TW9kZVR5cGVFcnJvckZ1bmN0
aW9uU3BhY2U7CisgICAgfQogCiAgICAgc3RhdGljIFN0cmljdE1vZGVUeXBlRXJyb3JGdW5jdGlv
biogY3JlYXRlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IFN0cmluZyYgbWVz
c2FnZSkKICAgICB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvckNv
bnN0cnVjdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
RXJyb3JDb25zdHJ1Y3Rvci5oCShyZXZpc2lvbiAyMzA3MjMpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9FcnJvckNvbnN0cnVjdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNiAr
MSw2IEBACiAvKgogICogIENvcHlyaWdodCAoQykgMTk5OS0yMDAwIEhhcnJpIFBvcnRlbiAocG9y
dGVuQGtkZS5vcmcpCi0gKiAgQ29weXJpZ2h0IChDKSAyMDA4LTIwMTcgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogIENvcHlyaWdodCAoQykgMjAwOC0yMDE4IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdh
cmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogIG1vZGlmeSBpdCB1bmRlciB0
aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKQEAgLTMxLDYgKzMxLDEy
IEBAIGNsYXNzIEVycm9yQ29uc3RydWN0b3IgZmluYWwgOiBwdWJsaWMgSW4KIHB1YmxpYzoKICAg
ICB0eXBlZGVmIEludGVybmFsRnVuY3Rpb24gQmFzZTsKIAorICAgIHRlbXBsYXRlPHR5cGVuYW1l
IENlbGxUeXBlPgorICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQor
ICAgIHsKKyAgICAgICAgcmV0dXJuICZ2bS5lcnJvckNvbnN0cnVjdG9yU3BhY2U7CisgICAgfQor
CiAgICAgc3RhdGljIEVycm9yQ29uc3RydWN0b3IqIGNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSog
c3RydWN0dXJlLCBFcnJvclByb3RvdHlwZSogZXJyb3JQcm90b3R5cGUsIEdldHRlclNldHRlciop
CiAgICAgewogICAgICAgICBFcnJvckNvbnN0cnVjdG9yKiBjb25zdHJ1Y3RvciA9IG5ldyAoTm90
TnVsbCwgYWxsb2NhdGVDZWxsPEVycm9yQ29uc3RydWN0b3I+KHZtLmhlYXApKSBFcnJvckNvbnN0
cnVjdG9yKHZtLCBzdHJ1Y3R1cmUpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSW50ZXJuYWxGdW5jdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0ludGVybmFsRnVuY3Rpb24uaAkocmV2aXNpb24gMjMwNzIzKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50ZXJuYWxGdW5jdGlvbi5oCSh3b3JraW5nIGNvcHkp
CkBAIC0zOCw2ICszOCwxMyBAQCBwdWJsaWM6CiAgICAgdHlwZWRlZiBKU0Rlc3RydWN0aWJsZU9i
amVjdCBCYXNlOwogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJh
c2U6OlN0cnVjdHVyZUZsYWdzIHwgSW1wbGVtZW50c0hhc0luc3RhbmNlIHwgSW1wbGVtZW50c0Rl
ZmF1bHRIYXNJbnN0YW5jZSB8IFR5cGVPZlNob3VsZENhbGxHZXRDYWxsRGF0YTsKIAorICAgIHRl
bXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlPgorICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3Bh
Y2VGb3IoVk0mIHZtKQorICAgIHsKKyAgICAgICAgc3RhdGljX2Fzc2VydChzaXplb2YoQ2VsbFR5
cGUpID09IHNpemVvZihJbnRlcm5hbEZ1bmN0aW9uKSwgIkludGVybmFsRnVuY3Rpb24gc3ViY2xh
c3NlcyB0aGF0IGFkZCBmaWVsZHMgbmVlZCB0byBvdmVycmlkZSBzdWJzcGFjZUZvcjw+KCkiKTsK
KyAgICAgICAgcmV0dXJuICZ2bS5pbnRlcm5hbEZ1bmN0aW9uU3BhY2U7CisgICAgfQorCiAgICAg
REVDTEFSRV9FWFBPUlRfSU5GTzsKIAogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lk
IHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0ludGxDb2xsYXRvckNvbnN0cnVjdG9yLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bENvbGxhdG9yQ29uc3RydWN0b3Iu
aAkocmV2aXNpb24gMjMwNzIzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50
bENvbGxhdG9yQ29uc3RydWN0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDYgQEAKIC8q
CiAgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQW5keSBWYW5XYWdvbmVyICh0aGV0YWxlY3JhZnRlckBn
bWFpbC5jb20pCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zOSw2ICs0MCwxMiBA
QCBwdWJsaWM6CiAgICAgdHlwZWRlZiBJbnRlcm5hbEZ1bmN0aW9uIEJhc2U7CiAgICAgc3RhdGlj
IGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBI
YXNTdGF0aWNQcm9wZXJ0eVRhYmxlOwogCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGU+
CisgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCisgICAgeworICAg
ICAgICByZXR1cm4gJnZtLmludGxDb2xsYXRvckNvbnN0cnVjdG9yU3BhY2U7CisgICAgfQorCiAg
ICAgc3RhdGljIEludGxDb2xsYXRvckNvbnN0cnVjdG9yKiBjcmVhdGUoVk0mLCBTdHJ1Y3R1cmUq
LCBJbnRsQ29sbGF0b3JQcm90b3R5cGUqLCBTdHJ1Y3R1cmUqKTsKICAgICBzdGF0aWMgU3RydWN0
dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mLCBKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUpOwogCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXRDb25z
dHJ1Y3Rvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lu
dGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yLmgJKHJldmlzaW9uIDIzMDcyMykKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDE1
IEFuZHkgVmFuV2Fnb25lciAodGhldGFsZWNyYWZ0ZXJAZ21haWwuY29tKQorICogQ29weXJpZ2h0
IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwpAQCAtMzksNiArNDAsMTIgQEAgcHVibGljOgogICAgIHR5cGVkZWYg
SW50ZXJuYWxGdW5jdGlvbiBCYXNlOwogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1
cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgSGFzU3RhdGljUHJvcGVydHlUYWJsZTsK
IAorICAgIHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlPgorICAgIHN0YXRpYyBJc29TdWJzcGFj
ZSogc3Vic3BhY2VGb3IoVk0mIHZtKQorICAgIHsKKyAgICAgICAgcmV0dXJuICZ2bS5pbnRsRGF0
ZVRpbWVGb3JtYXRDb25zdHJ1Y3RvclNwYWNlOworICAgIH0KKwogICAgIHN0YXRpYyBJbnRsRGF0
ZVRpbWVGb3JtYXRDb25zdHJ1Y3RvciogY3JlYXRlKFZNJiwgU3RydWN0dXJlKiwgSW50bERhdGVU
aW1lRm9ybWF0UHJvdG90eXBlKiwgU3RydWN0dXJlKik7CiAgICAgc3RhdGljIFN0cnVjdHVyZSog
Y3JlYXRlU3RydWN0dXJlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlKTsKIApJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9y
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJl
ckZvcm1hdENvbnN0cnVjdG9yLmgJKHJldmlzaW9uIDIzMDcyMykKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rvci5oCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxNSBBbmR5IFZhbldh
Z29uZXIgKHRoZXRhbGVjcmFmdGVyQGdtYWlsLmNvbSkKKyAqIENvcHlyaWdodCAoQykgMjAxOCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKQEAgLTM5LDYgKzQwLDEyIEBAIHB1YmxpYzoKICAgICB0eXBlZGVmIEludGVybmFsRnVu
Y3Rpb24gQmFzZTsKICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBC
YXNlOjpTdHJ1Y3R1cmVGbGFncyB8IEhhc1N0YXRpY1Byb3BlcnR5VGFibGU7CiAKKyAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBDZWxsVHlwZT4KKyAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNl
Rm9yKFZNJiB2bSkKKyAgICB7CisgICAgICAgIHJldHVybiAmdm0uaW50bE51bWJlckZvcm1hdENv
bnN0cnVjdG9yU3BhY2U7CisgICAgfQorCiAgICAgc3RhdGljIEludGxOdW1iZXJGb3JtYXRDb25z
dHJ1Y3RvciogY3JlYXRlKFZNJiwgU3RydWN0dXJlKiwgSW50bE51bWJlckZvcm1hdFByb3RvdHlw
ZSosIFN0cnVjdHVyZSopOwogICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShW
TSYsIEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSk7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJDb25zdHJ1Y3Rvci5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJDb25zdHJ1Y3Rvci5oCShy
ZXZpc2lvbiAyMzA3MjMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5
QnVmZmVyQ29uc3RydWN0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zNyw2ICszNywxMiBAQCBj
bGFzcyBKU0FycmF5QnVmZmVyQ29uc3RydWN0b3IgZmluYWwgOiBwCiBwdWJsaWM6CiAgICAgdHlw
ZWRlZiBJbnRlcm5hbEZ1bmN0aW9uIEJhc2U7CiAKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxs
VHlwZT4KKyAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKKyAgICB7
CisgICAgICAgIHJldHVybiAmdm0uYXJyYXlCdWZmZXJDb25zdHJ1Y3RvclNwYWNlOworICAgIH0K
KwogcHJvdGVjdGVkOgogICAgIEpTQXJyYXlCdWZmZXJDb25zdHJ1Y3RvcihWTSYsIFN0cnVjdHVy
ZSosIEFycmF5QnVmZmVyU2hhcmluZ01vZGUpOwogICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0m
LCBKU0FycmF5QnVmZmVyUHJvdG90eXBlKiwgR2V0dGVyU2V0dGVyKiBzcGVjaWVzU3ltYm9sKTsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05hdGl2ZUVycm9yQ29uc3RydWN0
b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OYXRpdmVF
cnJvckNvbnN0cnVjdG9yLmgJKHJldmlzaW9uIDIzMDcyMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL05hdGl2ZUVycm9yQ29uc3RydWN0b3IuaAkod29ya2luZyBjb3B5KQpAQCAt
MSw2ICsxLDYgQEAKIC8qCiAgKiAgQ29weXJpZ2h0IChDKSAxOTk5LTIwMDAgSGFycmkgUG9ydGVu
IChwb3J0ZW5Aa2RlLm9yZykKLSAqICBDb3B5cmlnaHQgKEMpIDIwMDggQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogIENvcHlyaWdodCAoQykgMjAwOC0yMDE4IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdh
cmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogIG1vZGlmeSBpdCB1bmRlciB0
aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKQEAgLTMzLDYgKzMzLDEy
IEBAIGNsYXNzIE5hdGl2ZUVycm9yQ29uc3RydWN0b3IgZmluYWwgOiBwdWIKIHB1YmxpYzoKICAg
ICB0eXBlZGVmIEludGVybmFsRnVuY3Rpb24gQmFzZTsKIAorICAgIHRlbXBsYXRlPHR5cGVuYW1l
IENlbGxUeXBlPgorICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQor
ICAgIHsKKyAgICAgICAgcmV0dXJuICZ2bS5uYXRpdmVFcnJvckNvbnN0cnVjdG9yU3BhY2U7Cisg
ICAgfQorCiAgICAgc3RhdGljIE5hdGl2ZUVycm9yQ29uc3RydWN0b3IqIGNyZWF0ZShWTSYgdm0s
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBTdHJ1
Y3R1cmUqIHByb3RvdHlwZVN0cnVjdHVyZSwgY29uc3QgU3RyaW5nJiBuYW1lKQogICAgIHsKICAg
ICAgICAgTmF0aXZlRXJyb3JDb25zdHJ1Y3RvciogY29uc3RydWN0b3IgPSBuZXcgKE5vdE51bGws
IGFsbG9jYXRlQ2VsbDxOYXRpdmVFcnJvckNvbnN0cnVjdG9yPih2bS5oZWFwKSkgTmF0aXZlRXJy
b3JDb25zdHJ1Y3Rvcih2bSwgc3RydWN0dXJlKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1Byb3h5UmV2b2tlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvUHJveHlSZXZva2UuaAkocmV2aXNpb24gMjMwNzIzKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJveHlSZXZva2UuaAkod29ya2luZyBjb3B5KQpAQCAtMzYs
NiArMzYsMTIgQEAgcHVibGljOgogICAgIHR5cGVkZWYgSW50ZXJuYWxGdW5jdGlvbiBCYXNlOwog
ICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVy
ZUZsYWdzOwogCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGU+CisgICAgc3RhdGljIElz
b1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCisgICAgeworICAgICAgICByZXR1cm4gJnZt
LnByb3h5UmV2b2tlU3BhY2U7CisgICAgfQorCiAgICAgc3RhdGljIFByb3h5UmV2b2tlKiBjcmVh
dGUoVk0mLCBTdHJ1Y3R1cmUqLCBQcm94eU9iamVjdCopOwogCiAgICAgREVDTEFSRV9JTkZPOwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwQ29uc3RydWN0b3IuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBDb25zdHJ1
Y3Rvci5oCShyZXZpc2lvbiAyMzA3MjMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9SZWdFeHBDb25zdHJ1Y3Rvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEsNiBAQAogLyoK
ICAqICBDb3B5cmlnaHQgKEMpIDE5OTktMjAwMCBIYXJyaSBQb3J0ZW4gKHBvcnRlbkBrZGUub3Jn
KQotICogIENvcHlyaWdodCAoQykgMjAwMywgMjAwNy0yMDA4LCAyMDE2IEFwcGxlIEluYy4gQWxs
IFJpZ2h0cyBSZXNlcnZlZC4KKyAqICBDb3B5cmlnaHQgKEMpIDIwMDMtMjAxOCBBcHBsZSBJbmMu
IEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgKgogICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3
YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqICBtb2RpZnkgaXQgdW5kZXIg
dGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCkBAIC0zNSw2ICszNSwx
MiBAQCBwdWJsaWM6CiAgICAgdHlwZWRlZiBJbnRlcm5hbEZ1bmN0aW9uIEJhc2U7CiAgICAgc3Rh
dGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3Mg
fCBIYXNTdGF0aWNQcm9wZXJ0eVRhYmxlOwogCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5
cGU+CisgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCisgICAgewor
ICAgICAgICByZXR1cm4gJnZtLnJlZ0V4cENvbnN0cnVjdG9yU3BhY2U7CisgICAgfQorCiAgICAg
c3RhdGljIFJlZ0V4cENvbnN0cnVjdG9yKiBjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSwgUmVnRXhwUHJvdG90eXBlKiByZWdFeHBQcm90b3R5cGUsIEdldHRlclNldHRlciogc3Bl
Y2llcykKICAgICB7CiAgICAgICAgIFJlZ0V4cENvbnN0cnVjdG9yKiBjb25zdHJ1Y3RvciA9IG5l
dyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPFJlZ0V4cENvbnN0cnVjdG9yPih2bS5oZWFwKSkgUmVn
RXhwQ29uc3RydWN0b3Iodm0sIHN0cnVjdHVyZSwgcmVnRXhwUHJvdG90eXBlKTsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAJKHJldmlzaW9uIDIzMDcyMykKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDEsNiAr
NDEsOCBAQAogI2luY2x1ZGUgIkRGR1dvcmtsaXN0LmgiCiAjaW5jbHVkZSAiRGlyZWN0RXZhbEV4
ZWN1dGFibGUuaCIKICNpbmNsdWRlICJEaXNhc3NlbWJsZXIuaCIKKyNpbmNsdWRlICJFcnJvci5o
IgorI2luY2x1ZGUgIkVycm9yQ29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJFcnJvckluc3RhbmNl
LmgiCiAjaW5jbHVkZSAiRXZhbENvZGVCbG9jay5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbi5oIgpA
QCAtNjQsMTQgKzY2LDE5IEBACiAjaW5jbHVkZSAiSW5mZXJyZWRUeXBlVGFibGUuaCIKICNpbmNs
dWRlICJJbmZlcnJlZFZhbHVlLmgiCiAjaW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIKKyNpbmNsdWRl
ICJJbnRsQ29sbGF0b3JDb25zdHJ1Y3Rvci5oIgorI2luY2x1ZGUgIkludGxEYXRlVGltZUZvcm1h
dENvbnN0cnVjdG9yLmgiCisjaW5jbHVkZSAiSW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yLmgi
CiAjaW5jbHVkZSAiSklUQ29kZS5oIgogI2luY2x1ZGUgIkpJVFdvcmtsaXN0LmgiCiAjaW5jbHVk
ZSAiSlNBUElWYWx1ZVdyYXBwZXIuaCIKICNpbmNsdWRlICJKU0FycmF5LmgiCisjaW5jbHVkZSAi
SlNBcnJheUJ1ZmZlckNvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAiSlNBc3luY0Z1bmN0aW9uLmgi
CiAjaW5jbHVkZSAiSlNCaWdJbnQuaCIKICNpbmNsdWRlICJKU0JvdW5kRnVuY3Rpb24uaCIKICNp
bmNsdWRlICJKU0NJbmxpbmVzLmgiCisjaW5jbHVkZSAiSlNDYWxsYmFja0Z1bmN0aW9uLmgiCiAj
aW5jbHVkZSAiSlNDdXN0b21HZXR0ZXJTZXR0ZXJGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTRGVz
dHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmgiCiAjaW5jbHVkZSAiSlNGaXhlZEFycmF5Lmgi
CkBAIC0xMDMsMTYgKzExMCwyMCBAQAogI2luY2x1ZGUgIk1pbmltdW1SZXNlcnZlZFpvbmVTaXpl
LmgiCiAjaW5jbHVkZSAiTW9kdWxlUHJvZ3JhbUNvZGVCbG9jay5oIgogI2luY2x1ZGUgIk1vZHVs
ZVByb2dyYW1FeGVjdXRhYmxlLmgiCisjaW5jbHVkZSAiTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvci5o
IgogI2luY2x1ZGUgIk5hdGl2ZUV4ZWN1dGFibGUuaCIKICNpbmNsdWRlICJOYXRpdmVTdGRGdW5j
dGlvbkNlbGwuaCIKICNpbmNsdWRlICJOb2Rlcy5oIgorI2luY2x1ZGUgIk9iakNDYWxsYmFja0Z1
bmN0aW9uLmgiCiAjaW5jbHVkZSAiUGFyc2VyLmgiCiAjaW5jbHVkZSAiUHJvZmlsZXJEYXRhYmFz
ZS5oIgogI2luY2x1ZGUgIlByb2dyYW1Db2RlQmxvY2suaCIKICNpbmNsdWRlICJQcm9ncmFtRXhl
Y3V0YWJsZS5oIgogI2luY2x1ZGUgIlByb21pc2VEZWZlcnJlZFRpbWVyLmgiCiAjaW5jbHVkZSAi
UHJvcGVydHlNYXBIYXNoVGFibGUuaCIKKyNpbmNsdWRlICJQcm94eVJldm9rZS5oIgogI2luY2x1
ZGUgIlJlZ0V4cENhY2hlLmgiCisjaW5jbHVkZSAiUmVnRXhwQ29uc3RydWN0b3IuaCIKICNpbmNs
dWRlICJSZWdFeHBPYmplY3QuaCIKICNpbmNsdWRlICJSZWdpc3RlckF0T2Zmc2V0TGlzdC5oIgog
I2luY2x1ZGUgIlJ1bnRpbWVUeXBlLmgiCkBAIC0yNTQsMTEgKzI2NSwxNCBAQCBWTTo6Vk0oVk1U
eXBlIHZtVHlwZSwgSGVhcFR5cGUgaGVhcFR5cGUpCiAgICAgLCBkZXN0cnVjdGlibGVPYmplY3RT
cGFjZSgiSlNEZXN0cnVjdGlibGVPYmplY3QiLCBoZWFwLCBkZXN0cnVjdGlibGVPYmplY3RIZWFw
Q2VsbFR5cGUuZ2V0KCksIGZhc3RNYWxsb2NBbGxvY2F0b3IuZ2V0KCkpCiAgICAgLCBlYWdlcmx5
U3dlcHREZXN0cnVjdGlibGVPYmplY3RTcGFjZSgiRWFnZXJseSBTd2VwdCBKU0Rlc3RydWN0aWJs
ZU9iamVjdCIsIGhlYXAsIGRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5nZXQoKSwgZmFz
dE1hbGxvY0FsbG9jYXRvci5nZXQoKSkKICAgICAsIHNlZ21lbnRlZFZhcmlhYmxlT2JqZWN0U3Bh
Y2UoIkpTU2VnbWVudGVkVmFyaWFibGVPYmplY3RTcGFjZSIsIGhlYXAsIHNlZ21lbnRlZFZhcmlh
YmxlT2JqZWN0SGVhcENlbGxUeXBlLmdldCgpLCBmYXN0TWFsbG9jQWxsb2NhdG9yLmdldCgpKQor
ICAgICwgYXJyYXlCdWZmZXJDb25zdHJ1Y3RvclNwYWNlIElTT19TVUJTUEFDRV9JTklUKGhlYXAs
IGRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNBcnJheUJ1ZmZlckNvbnN0
cnVjdG9yKQogICAgICwgYXN5bmNGdW5jdGlvblNwYWNlIElTT19TVUJTUEFDRV9JTklUKGhlYXAs
IGNlbGxKU1ZhbHVlT09CSGVhcENlbGxUeXBlLmdldCgpLCBKU0FzeW5jRnVuY3Rpb24pCiAgICAg
LCBhc3luY0dlbmVyYXRvckZ1bmN0aW9uU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoaGVhcCwgY2Vs
bEpTVmFsdWVPT0JIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTQXN5bmNHZW5lcmF0b3JGdW5jdGlvbikK
ICAgICAsIGJvdW5kRnVuY3Rpb25TcGFjZSBJU09fU1VCU1BBQ0VfSU5JVChoZWFwLCBjZWxsSlNW
YWx1ZU9PQkhlYXBDZWxsVHlwZS5nZXQoKSwgSlNCb3VuZEZ1bmN0aW9uKQorICAgICwgY2FsbGJh
Y2tGdW5jdGlvblNwYWNlIElTT19TVUJTUEFDRV9JTklUKGhlYXAsIGRlc3RydWN0aWJsZU9iamVj
dEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNDYWxsYmFja0Z1bmN0aW9uKQogICAgICwgY3VzdG9tR2V0
dGVyU2V0dGVyRnVuY3Rpb25TcGFjZSBJU09fU1VCU1BBQ0VfSU5JVChoZWFwLCBjZWxsSlNWYWx1
ZU9PQkhlYXBDZWxsVHlwZS5nZXQoKSwgSlNDdXN0b21HZXR0ZXJTZXR0ZXJGdW5jdGlvbikKICAg
ICAsIGRpcmVjdEV2YWxFeGVjdXRhYmxlU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoaGVhcCwgZGVz
dHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgRGlyZWN0RXZhbEV4ZWN1dGFibGUpCisg
ICAgLCBlcnJvckNvbnN0cnVjdG9yU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoaGVhcCwgZGVzdHJ1
Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmdldCgpLCBFcnJvckNvbnN0cnVjdG9yKQogICAgICwg
ZXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZVNwYWNlIElTT19TVUJTUEFDRV9JTklUKGhlYXAsIGNl
bGxEYW5nZXJvdXNCaXRzSGVhcENlbGxUeXBlLmdldCgpLCBFeGVjdXRhYmxlVG9Db2RlQmxvY2tF
ZGdlKQogICAgICwgZnVuY3Rpb25FeGVjdXRhYmxlU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoaGVh
cCwgZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgRnVuY3Rpb25FeGVjdXRhYmxl
KQogICAgICwgZnVuY3Rpb25TcGFjZSBJU09fU1VCU1BBQ0VfSU5JVChoZWFwLCBjZWxsSlNWYWx1
ZU9PQkhlYXBDZWxsVHlwZS5nZXQoKSwgSlNGdW5jdGlvbikKQEAgLTI2NiwxMSArMjgwLDI0IEBA
IFZNOjpWTShWTVR5cGUgdm1UeXBlLCBIZWFwVHlwZSBoZWFwVHlwZSkKICAgICAsIGluZGlyZWN0
RXZhbEV4ZWN1dGFibGVTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVChoZWFwLCBkZXN0cnVjdGlibGVD
ZWxsSGVhcENlbGxUeXBlLmdldCgpLCBJbmRpcmVjdEV2YWxFeGVjdXRhYmxlKQogICAgICwgaW5m
ZXJyZWRUeXBlU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoaGVhcCwgZGVzdHJ1Y3RpYmxlQ2VsbEhl
YXBDZWxsVHlwZS5nZXQoKSwgSW5mZXJyZWRUeXBlKQogICAgICwgaW5mZXJyZWRWYWx1ZVNwYWNl
IElTT19TVUJTUEFDRV9JTklUKGhlYXAsIGRlc3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUuZ2V0
KCksIEluZmVycmVkVmFsdWUpCisgICAgLCBpbnRlcm5hbEZ1bmN0aW9uU3BhY2UgSVNPX1NVQlNQ
QUNFX0lOSVQoaGVhcCwgZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmdldCgpLCBJbnRl
cm5hbEZ1bmN0aW9uKQorI2lmIEVOQUJMRShJTlRMKQorICAgICwgaW50bENvbGxhdG9yQ29uc3Ry
dWN0b3JTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVChoZWFwLCBkZXN0cnVjdGlibGVPYmplY3RIZWFw
Q2VsbFR5cGUuZ2V0KCksIEludGxDb2xsYXRvckNvbnN0cnVjdG9yKQorICAgICwgaW50bERhdGVU
aW1lRm9ybWF0Q29uc3RydWN0b3JTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVChoZWFwLCBkZXN0cnVj
dGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuZ2V0KCksIEludGxEYXRlVGltZUZvcm1hdENvbnN0cnVj
dG9yKQorICAgICwgaW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yU3BhY2UgSVNPX1NVQlNQQUNF
X0lOSVQoaGVhcCwgZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmdldCgpLCBJbnRsTnVt
YmVyRm9ybWF0Q29uc3RydWN0b3IpCisjZW5kaWYKICAgICAsIG1vZHVsZVByb2dyYW1FeGVjdXRh
YmxlU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoaGVhcCwgZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxs
VHlwZS5nZXQoKSwgTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUpCisgICAgLCBuYXRpdmVFcnJvckNv
bnN0cnVjdG9yU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoaGVhcCwgZGVzdHJ1Y3RpYmxlT2JqZWN0
SGVhcENlbGxUeXBlLmdldCgpLCBOYXRpdmVFcnJvckNvbnN0cnVjdG9yKQogICAgICwgbmF0aXZl
RXhlY3V0YWJsZVNwYWNlIElTT19TVUJTUEFDRV9JTklUKGhlYXAsIGRlc3RydWN0aWJsZUNlbGxI
ZWFwQ2VsbFR5cGUuZ2V0KCksIE5hdGl2ZUV4ZWN1dGFibGUpCiAgICAgLCBuYXRpdmVTdGRGdW5j
dGlvblNwYWNlIElTT19TVUJTUEFDRV9JTklUKGhlYXAsIGNlbGxKU1ZhbHVlT09CSGVhcENlbGxU
eXBlLmdldCgpLCBKU05hdGl2ZVN0ZEZ1bmN0aW9uKQorI2lmIEpTQ19PQkpDX0FQSV9FTkFCTEVE
CisgICAgLCBvYmpDQ2FsbGJhY2tGdW5jdGlvblNwYWNlIElTT19TVUJTUEFDRV9JTklUKGhlYXAs
IGRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5nZXQoKSwgT2JqQ0NhbGxiYWNrRnVuY3Rp
b24pCisjZW5kaWYKICAgICAsIHByb2dyYW1FeGVjdXRhYmxlU3BhY2UgSVNPX1NVQlNQQUNFX0lO
SVQoaGVhcCwgZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgUHJvZ3JhbUV4ZWN1
dGFibGUpCiAgICAgLCBwcm9wZXJ0eVRhYmxlU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoaGVhcCwg
ZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgUHJvcGVydHlUYWJsZSkKKyAgICAs
IHByb3h5UmV2b2tlU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoaGVhcCwgZGVzdHJ1Y3RpYmxlT2Jq
ZWN0SGVhcENlbGxUeXBlLmdldCgpLCBQcm94eVJldm9rZSkKKyAgICAsIHJlZ0V4cENvbnN0cnVj
dG9yU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoaGVhcCwgZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENl
bGxUeXBlLmdldCgpLCBSZWdFeHBDb25zdHJ1Y3RvcikKKyAgICAsIHN0cmljdE1vZGVUeXBlRXJy
b3JGdW5jdGlvblNwYWNlIElTT19TVUJTUEFDRV9JTklUKGhlYXAsIGRlc3RydWN0aWJsZU9iamVj
dEhlYXBDZWxsVHlwZS5nZXQoKSwgU3RyaWN0TW9kZVR5cGVFcnJvckZ1bmN0aW9uKQogICAgICwg
c3RydWN0dXJlUmFyZURhdGFTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVChoZWFwLCBkZXN0cnVjdGli
bGVDZWxsSGVhcENlbGxUeXBlLmdldCgpLCBTdHJ1Y3R1cmVSYXJlRGF0YSkKICAgICAsIHN0cnVj
dHVyZVNwYWNlIElTT19TVUJTUEFDRV9JTklUKGhlYXAsIGRlc3RydWN0aWJsZUNlbGxIZWFwQ2Vs
bFR5cGUuZ2V0KCksIFN0cnVjdHVyZSkKICAgICAsIHdlYWtTZXRTcGFjZSBJU09fU1VCU1BBQ0Vf
SU5JVChoZWFwLCBkZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTV2Vha1Nl
dCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAkocmV2aXNpb24gMjMwNzIzKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAkod29ya2luZyBjb3B5KQpAQCAt
ODAsNiArODAsMTYgQEAKICNpbmNsdWRlIDx3dGYvU3RhY2tUcmFjZS5oPgogI2VuZGlmCiAKKy8v
IEVuYWJsZSB0aGUgT2JqZWN0aXZlLUMgQVBJIGZvciBwbGF0Zm9ybXMgd2l0aCBhIG1vZGVybiBy
dW50aW1lLiBUaGlzIGhhcyB0byBtYXRjaCBleGFjdGx5IHdoYXQgd2UKKy8vIGhhdmUgaW4gSlNC
YXNlLmguCisjaWYgIWRlZmluZWQoSlNDX09CSkNfQVBJX0VOQUJMRUQpCisjaWYgKGRlZmluZWQo
X19jbGFuZ19fKSAmJiBkZWZpbmVkKF9fQVBQTEVfXykgJiYgKChkZWZpbmVkKF9fTUFDX09TX1hf
VkVSU0lPTl9NSU5fUkVRVUlSRUQpICYmICFkZWZpbmVkKF9faTM4Nl9fKSkgfHwgKGRlZmluZWQo
VEFSR0VUX09TX0lQSE9ORSkgJiYgVEFSR0VUX09TX0lQSE9ORSkpKQorI2RlZmluZSBKU0NfT0JK
Q19BUElfRU5BQkxFRCAxCisjZWxzZQorI2RlZmluZSBKU0NfT0JKQ19BUElfRU5BQkxFRCAwCisj
ZW5kaWYKKyNlbmRpZgorCiBuYW1lc3BhY2UgV1RGIHsKIGNsYXNzIFNpbXBsZVN0YXRzOwogfSAv
LyBuYW1lc3BhY2UgV1RGCkBAIC0zMzcsMTEgKzM0NywxNCBAQCBwdWJsaWM6CiAgICAgQ29tcGxl
dGVTdWJzcGFjZSBlYWdlcmx5U3dlcHREZXN0cnVjdGlibGVPYmplY3RTcGFjZTsKICAgICBDb21w
bGV0ZVN1YnNwYWNlIHNlZ21lbnRlZFZhcmlhYmxlT2JqZWN0U3BhY2U7CiAgICAgCisgICAgSXNv
U3Vic3BhY2UgYXJyYXlCdWZmZXJDb25zdHJ1Y3RvclNwYWNlOwogICAgIElzb1N1YnNwYWNlIGFz
eW5jRnVuY3Rpb25TcGFjZTsKICAgICBJc29TdWJzcGFjZSBhc3luY0dlbmVyYXRvckZ1bmN0aW9u
U3BhY2U7CiAgICAgSXNvU3Vic3BhY2UgYm91bmRGdW5jdGlvblNwYWNlOworICAgIElzb1N1YnNw
YWNlIGNhbGxiYWNrRnVuY3Rpb25TcGFjZTsKICAgICBJc29TdWJzcGFjZSBjdXN0b21HZXR0ZXJT
ZXR0ZXJGdW5jdGlvblNwYWNlOwogICAgIElzb1N1YnNwYWNlIGRpcmVjdEV2YWxFeGVjdXRhYmxl
U3BhY2U7CisgICAgSXNvU3Vic3BhY2UgZXJyb3JDb25zdHJ1Y3RvclNwYWNlOwogICAgIElzb1N1
YnNwYWNlIGV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2VTcGFjZTsKICAgICBJc29TdWJzcGFjZSBm
dW5jdGlvbkV4ZWN1dGFibGVTcGFjZTsKICAgICBJc29TdWJzcGFjZSBmdW5jdGlvblNwYWNlOwpA
QCAtMzQ5LDExICszNjIsMjQgQEAgcHVibGljOgogICAgIElzb1N1YnNwYWNlIGluZGlyZWN0RXZh
bEV4ZWN1dGFibGVTcGFjZTsKICAgICBJc29TdWJzcGFjZSBpbmZlcnJlZFR5cGVTcGFjZTsKICAg
ICBJc29TdWJzcGFjZSBpbmZlcnJlZFZhbHVlU3BhY2U7CisgICAgSXNvU3Vic3BhY2UgaW50ZXJu
YWxGdW5jdGlvblNwYWNlOworI2lmIEVOQUJMRShJTlRMKQorICAgIElzb1N1YnNwYWNlIGludGxD
b2xsYXRvckNvbnN0cnVjdG9yU3BhY2U7CisgICAgSXNvU3Vic3BhY2UgaW50bERhdGVUaW1lRm9y
bWF0Q29uc3RydWN0b3JTcGFjZTsKKyAgICBJc29TdWJzcGFjZSBpbnRsTnVtYmVyRm9ybWF0Q29u
c3RydWN0b3JTcGFjZTsKKyNlbmRpZgogICAgIElzb1N1YnNwYWNlIG1vZHVsZVByb2dyYW1FeGVj
dXRhYmxlU3BhY2U7CisgICAgSXNvU3Vic3BhY2UgbmF0aXZlRXJyb3JDb25zdHJ1Y3RvclNwYWNl
OwogICAgIElzb1N1YnNwYWNlIG5hdGl2ZUV4ZWN1dGFibGVTcGFjZTsKICAgICBJc29TdWJzcGFj
ZSBuYXRpdmVTdGRGdW5jdGlvblNwYWNlOworI2lmIEpTQ19PQkpDX0FQSV9FTkFCTEVECisgICAg
SXNvU3Vic3BhY2Ugb2JqQ0NhbGxiYWNrRnVuY3Rpb25TcGFjZTsKKyNlbmRpZgogICAgIElzb1N1
YnNwYWNlIHByb2dyYW1FeGVjdXRhYmxlU3BhY2U7CiAgICAgSXNvU3Vic3BhY2UgcHJvcGVydHlU
YWJsZVNwYWNlOworICAgIElzb1N1YnNwYWNlIHByb3h5UmV2b2tlU3BhY2U7CisgICAgSXNvU3Vi
c3BhY2UgcmVnRXhwQ29uc3RydWN0b3JTcGFjZTsKKyAgICBJc29TdWJzcGFjZSBzdHJpY3RNb2Rl
VHlwZUVycm9yRnVuY3Rpb25TcGFjZTsKICAgICBJc29TdWJzcGFjZSBzdHJ1Y3R1cmVSYXJlRGF0
YVNwYWNlOwogICAgIElzb1N1YnNwYWNlIHN0cnVjdHVyZVNwYWNlOwogICAgIElzb1N1YnNwYWNl
IHdlYWtTZXRTcGFjZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIzMDcyMykKKysrIFNvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIwIEBACisyMDE4
LTA0LTE3ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAgVGhlIElu
dGVybmFsRnVuY3Rpb24gaGllcmFyY2h5IHNob3VsZCBiZSBpbiBJc29TdWJzcGFjZXMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4NDcyMQorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyBi
ZWNhdXNlIG5vIG5ldyBiZWhhdmlvci4KKworICAgICAgICAqIGJpbmRpbmdzL2pzL1dlYkNvcmVK
U0NsaWVudERhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNWTUNsaWVudERhdGE6OkpTVk1D
bGllbnREYXRhKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9XZWJDb3JlSlNDbGllbnREYXRhLmg6
CisgICAgICAgIChXZWJDb3JlOjpKU1ZNQ2xpZW50RGF0YTo6cnVudGltZU1ldGhvZFNwYWNlKToK
KyAgICAgICAgKiBicmlkZ2UvcnVudGltZV9tZXRob2QuY3BwOgorICAgICAgICAoSlNDOjpSdW50
aW1lTWV0aG9kOjpzdWJzcGFjZUZvckltcGwpOgorICAgICAgICAqIGJyaWRnZS9ydW50aW1lX21l
dGhvZC5oOgorCiAyMDE4LTA0LTE3ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAK
ICAgICAgICAgUkVHUkVTU0lPTiAocjIyOTgzMSk6IENNRC1jbGlja2luZyBhbiBpQ2xvdWQgd2Vi
IGFwcCBsaW5rIHVuZXhwZWN0ZWRseSBvcGVucyB0aGF0IGxpbmsgaW4gYSBuZXcgdGFiIGFuZCB0
aGUgY3VycmVudCB0YWIKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dlYkNvcmVK
U0NsaWVudERhdGEuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L1dlYkNvcmVKU0NsaWVudERhdGEuY3BwCShyZXZpc2lvbiAyMzA3MjMpCisrKyBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9XZWJDb3JlSlNDbGllbnREYXRhLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMzUsNiArMzUsNyBAQAogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL01hcmtpbmdDb25zdHJh
aW50Lmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvU3Vic3BhY2VJbmxpbmVzLmg+CiAjaW5j
bHVkZSA8SmF2YVNjcmlwdENvcmUvVk0uaD4KKyNpbmNsdWRlICJydW50aW1lX21ldGhvZC5oIgog
I2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTQz
LDYgKzQ0LDcgQEAgdXNpbmcgbmFtZXNwYWNlIEpTQzsKIEpTVk1DbGllbnREYXRhOjpKU1ZNQ2xp
ZW50RGF0YShWTSYgdm0pCiAgICAgOiBtX2J1aWx0aW5GdW5jdGlvbnModm0pCiAgICAgLCBtX2J1
aWx0aW5OYW1lcygmdm0pCisgICAgLCBtX3J1bnRpbWVNZXRob2RTcGFjZSBJU09fU1VCU1BBQ0Vf
SU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuZ2V0KCksIFJ1
bnRpbWVNZXRob2QpCiAgICAgLCBtX291dHB1dENvbnN0cmFpbnRTcGFjZSgiV2ViQ29yZSBXcmFw
cGVyIHcvIE91dHB1dCBDb25zdHJhaW50Iiwgdm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0
SGVhcENlbGxUeXBlLmdldCgpLCB2bS5mYXN0TWFsbG9jQWxsb2NhdG9yLmdldCgpKQogICAgICwg
bV9nbG9iYWxPYmplY3RPdXRwdXRDb25zdHJhaW50U3BhY2UoIldlYkNvcmUgR2xvYmFsIE9iamVj
dCB3LyBPdXRwdXQgQ29uc3RyYWludCIsIHZtLmhlYXAsIHZtLnNlZ21lbnRlZFZhcmlhYmxlT2Jq
ZWN0SGVhcENlbGxUeXBlLmdldCgpLCB2bS5mYXN0TWFsbG9jQWxsb2NhdG9yLmdldCgpKQogewpJ
bmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV2ViQ29yZUpTQ2xpZW50RGF0YS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dlYkNvcmVKU0NsaWVudERh
dGEuaAkocmV2aXNpb24gMjMwNzIzKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV2Vi
Q29yZUpTQ2xpZW50RGF0YS5oCSh3b3JraW5nIGNvcHkpCkBAIC01OSw2ICs1OSw4IEBAIHB1Ymxp
YzoKICAgICBXZWJDb3JlQnVpbHRpbk5hbWVzJiBidWlsdGluTmFtZXMoKSB7IHJldHVybiBtX2J1
aWx0aW5OYW1lczsgfQogICAgIEpTQnVpbHRpbkZ1bmN0aW9ucyYgYnVpbHRpbkZ1bmN0aW9ucygp
IHsgcmV0dXJuIG1fYnVpbHRpbkZ1bmN0aW9uczsgfQogICAgIAorICAgIEpTQzo6SXNvU3Vic3Bh
Y2UmIHJ1bnRpbWVNZXRob2RTcGFjZSgpIHsgcmV0dXJuIG1fcnVudGltZU1ldGhvZFNwYWNlOyB9
CisgICAgCiAgICAgSlNDOjpDb21wbGV0ZVN1YnNwYWNlJiBvdXRwdXRDb25zdHJhaW50U3BhY2Uo
KSB7IHJldHVybiBtX291dHB1dENvbnN0cmFpbnRTcGFjZTsgfQogICAgIEpTQzo6Q29tcGxldGVT
dWJzcGFjZSYgZ2xvYmFsT2JqZWN0T3V0cHV0Q29uc3RyYWludFNwYWNlKCkgeyByZXR1cm4gbV9n
bG9iYWxPYmplY3RPdXRwdXRDb25zdHJhaW50U3BhY2U7IH0KICAgICAKQEAgLTc2LDYgKzc4LDgg
QEAgcHJpdmF0ZToKICAgICBKU0J1aWx0aW5GdW5jdGlvbnMgbV9idWlsdGluRnVuY3Rpb25zOwog
ICAgIFdlYkNvcmVCdWlsdGluTmFtZXMgbV9idWlsdGluTmFtZXM7CiAgICAgCisgICAgSlNDOjpJ
c29TdWJzcGFjZSBtX3J1bnRpbWVNZXRob2RTcGFjZTsKKyAgICAKICAgICBKU0M6OkNvbXBsZXRl
U3Vic3BhY2UgbV9vdXRwdXRDb25zdHJhaW50U3BhY2U7CiAgICAgSlNDOjpDb21wbGV0ZVN1YnNw
YWNlIG1fZ2xvYmFsT2JqZWN0T3V0cHV0Q29uc3RyYWludFNwYWNlOwogfTsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX21ldGhvZC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfbWV0aG9kLmNwcAkocmV2aXNpb24gMjMwNzIzKQorKysg
U291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfbWV0aG9kLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDgsIDIwMTYgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDAzLTIwMTgg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiSlNET01CaW5kaW5nLmgiCiAjaW5j
bHVkZSAiSlNIVE1MRWxlbWVudC5oIgogI2luY2x1ZGUgIkpTUGx1Z2luRWxlbWVudEZ1bmN0aW9u
cy5oIgorI2luY2x1ZGUgIldlYkNvcmVKU0NsaWVudERhdGEuaCIKICNpbmNsdWRlICJydW50aW1l
X29iamVjdC5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Vycm9yLmg+CiAjaW5jbHVkZSA8
SmF2YVNjcmlwdENvcmUvRnVuY3Rpb25Qcm90b3R5cGUuaD4KQEAgLTc5LDYgKzgwLDExIEBAIGJv
b2wgUnVudGltZU1ldGhvZDo6Z2V0T3duUHJvcGVydHlTbG90KEoKICAgICByZXR1cm4gSW50ZXJu
YWxGdW5jdGlvbjo6Z2V0T3duUHJvcGVydHlTbG90KHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5
TmFtZSwgc2xvdCk7CiB9CiAKK0lzb1N1YnNwYWNlKiBSdW50aW1lTWV0aG9kOjpzdWJzcGFjZUZv
ckltcGwoVk0mIHZtKQoreworICAgIHJldHVybiAmc3RhdGljX2Nhc3Q8SlNWTUNsaWVudERhdGEq
Pih2bS5jbGllbnREYXRhKS0+cnVudGltZU1ldGhvZFNwYWNlKCk7Cit9CisKIHN0YXRpYyBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxSdW50aW1lTWV0aG9kKEV4ZWNTdGF0ZSogZXhl
YykKIHsKICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwpJbmRleDogU291cmNlL1dlYkNvcmUvYnJp
ZGdlL3J1bnRpbWVfbWV0aG9kLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYnJpZGdl
L3J1bnRpbWVfbWV0aG9kLmgJKHJldmlzaW9uIDIzMDcyMykKKysrIFNvdXJjZS9XZWJDb3JlL2Jy
aWRnZS9ydW50aW1lX21ldGhvZC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoK
LSAqIENvcHlyaWdodCAoQykgMjAwMywgMjAwOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDMtMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM3LDYgKzM3LDEzIEBA
IHB1YmxpYzoKICAgICB0eXBlZGVmIEludGVybmFsRnVuY3Rpb24gQmFzZTsKICAgICBzdGF0aWMg
Y29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IE92
ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCB8IFR5cGVPZlNob3VsZENhbGxHZXRDYWxsRGF0YTsK
IAorICAgIHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlPgorICAgIHN0YXRpYyBJc29TdWJzcGFj
ZSogc3Vic3BhY2VGb3IoVk0mIHZtKQorICAgIHsKKyAgICAgICAgc3RhdGljX2Fzc2VydChzaXpl
b2YoQ2VsbFR5cGUpID09IHNpemVvZihSdW50aW1lTWV0aG9kKSwgIlJ1bnRpbWVNZXRob2Qgc3Vi
Y2xhc3NlcyB0aGF0IGFkZCBmaWVsZHMgbmVlZCB0byBvdmVycmlkZSBzdWJzcGFjZUZvcjw+KCki
KTsKKyAgICAgICAgcmV0dXJuIHN1YnNwYWNlRm9ySW1wbCh2bSk7CisgICAgfQorICAgIAogICAg
IHN0YXRpYyBSdW50aW1lTWV0aG9kKiBjcmVhdGUoRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IFN0cmluZyYgbmFtZSwg
QmluZGluZ3M6Ok1ldGhvZCogbWV0aG9kKQogICAgIHsKICAgICAgICAgVk0mIHZtID0gZ2xvYmFs
T2JqZWN0LT52bSgpOwpAQCAtNjgsNiArNzUsOCBAQCBwcm90ZWN0ZWQ6CiBwcml2YXRlOgogICAg
IHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBsZW5ndGhHZXR0ZXIoRXhlY1N0YXRlKiwgRW5jb2RlZEpT
VmFsdWUsIFByb3BlcnR5TmFtZSk7CiAKKyAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNl
Rm9ySW1wbChWTSYpOworCiAgICAgQmluZGluZ3M6Ok1ldGhvZCogbV9tZXRob2Q7CiB9OwogCklu
ZGV4OiBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZwkocmV2aXNpb24gMjMwNzIzKQorKysgU291cmNlL1dlYktpdC9DaGFuZ2VMb2cJ
KHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyMyBAQAorMjAxOC0wNC0xNyAgRmlsaXAgUGl6bG8g
IDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAgIFRoZSBJbnRlcm5hbEZ1bmN0aW9uIGhpZXJh
cmNoeSBzaG91bGQgYmUgaW4gSXNvU3Vic3BhY2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODQ3MjEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9KU05Q
TWV0aG9kLmNwcDoKKyAgICAgICAgKFdlYktpdDo6SlNOUE1ldGhvZDo6c3Vic3BhY2VGb3JJbXBs
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvSlNOUE1ldGhvZC5oOgor
ICAgICAgICAoV2ViS2l0OjpKU05QTWV0aG9kOjpjcmVhdGUpOiBEZWxldGVkLgorICAgICAgICAo
V2ViS2l0OjpKU05QTWV0aG9kOjpucElkZW50aWZpZXIgY29uc3QpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViS2l0OjpKU05QTWV0aG9kOjpjcmVhdGVTdHJ1Y3R1cmUpOiBEZWxldGVkLgorICAgICAg
ICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9KU05QT2JqZWN0LmNwcDoKKyAgICAgICAg
KFdlYktpdDo6SlNOUE9iamVjdDo6c3Vic3BhY2VGb3JJbXBsKToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1BsdWdpbnMvTmV0c2NhcGUvSlNOUE9iamVjdC5oOgorICAgICAgICAoV2ViS2l0OjpKU05Q
T2JqZWN0OjpjcmVhdGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpKU05QT2JqZWN0Ojpu
cE9iamVjdCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OkpTTlBPYmplY3Q6OmNy
ZWF0ZVN0cnVjdHVyZSk6IERlbGV0ZWQuCisKIDIwMTgtMDQtMTcgIENocmlzIER1bWV6ICA8Y2R1
bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBSRUdSRVNTSU9OIChyMjI5ODMxKTogQ01ELWNsaWNr
aW5nIGFuIGlDbG91ZCB3ZWIgYXBwIGxpbmsgdW5leHBlY3RlZGx5IG9wZW5zIHRoYXQgbGluayBp
biBhIG5ldyB0YWIgYW5kIHRoZSBjdXJyZW50IHRhYgpJbmRleDogU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvSlNOUE1ldGhvZC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvSlNOUE1ldGhvZC5jcHAJKHJl
dmlzaW9uIDIzMDcyMykKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNj
YXBlL0pTTlBNZXRob2QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxMCwgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMxLDYgKzMxLDggQEAKICNp
bmNsdWRlICJKU05QT2JqZWN0LmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRXJyb3IuaD4K
ICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9GdW5jdGlvblByb3RvdHlwZS5oPgorI2luY2x1ZGUg
PEphdmFTY3JpcHRDb3JlL0lzb1N1YnNwYWNlUGVyVk0uaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0
Q29yZS9KU0Rlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5oPgogI2luY2x1ZGUgPEphdmFT
Y3JpcHRDb3JlL0pTR2xvYmFsT2JqZWN0Lmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNP
YmplY3QuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0pTSFRNTEVsZW1lbnQuaD4KQEAgLTU5LDYgKzYx
LDEyIEBAIHZvaWQgSlNOUE1ldGhvZDo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCAKICAgICBBU1NF
UlQoaW5oZXJpdHModm0sIGluZm8oKSkpOwogfQogCitJc29TdWJzcGFjZSogSlNOUE1ldGhvZDo6
c3Vic3BhY2VGb3JJbXBsKFZNJiB2bSkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SXNv
U3Vic3BhY2VQZXJWTT4gcGVyVk0oW10gKFZNJiB2bSkgeyByZXR1cm4gSVNPX1NVQlNQQUNFX1BB
UkFNRVRFUlModm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmdldCgpLCBKU05QTWV0
aG9kKTsgfSk7CisgICAgcmV0dXJuICZwZXJWTS5nZXQoKS5mb3JWTSh2bSk7Cit9CisKIHN0YXRp
YyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxNZXRob2QoRXhlY1N0YXRlKiBleGVj
KQogewogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9KU05QTWV0aG9kLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvSlNOUE1ldGhvZC5oCShyZXZpc2lv
biAyMzA3MjMpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9K
U05QTWV0aG9kLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJp
Z2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAxMC0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzcsMTAgKzM3LDE2IEBAIHR5cGVkZWYgdm9pZCog
TlBJZGVudGlmaWVyOwogbmFtZXNwYWNlIFdlYktpdCB7CiAKIC8vIEEgSlNPYmplY3QgdGhhdCB3
cmFwcyBhbiBOUE1ldGhvZC4KLWNsYXNzIEpTTlBNZXRob2QgOiBwdWJsaWMgSlNDOjpJbnRlcm5h
bEZ1bmN0aW9uIHsKK2NsYXNzIEpTTlBNZXRob2QgZmluYWwgOiBwdWJsaWMgSlNDOjpJbnRlcm5h
bEZ1bmN0aW9uIHsKIHB1YmxpYzoKICAgICB0eXBlZGVmIEpTQzo6SW50ZXJuYWxGdW5jdGlvbiBC
YXNlOwogCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGU+CisgICAgc3RhdGljIEpTQzo6
SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQorICAgIHsKKyAgICAgICAgcmV0
dXJuIHN1YnNwYWNlRm9ySW1wbCh2bSk7CisgICAgfQorCiAgICAgc3RhdGljIEpTTlBNZXRob2Qq
IGNyZWF0ZShKU0M6OkV4ZWNTdGF0ZSogZXhlYywgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBjb25zdCBTdHJpbmcmIG5hbWUsIE5QSWRlbnRpZmllciBucElkZW50KQogICAgIHsK
ICAgICAgICAgSlNDOjpWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CkBAIC01Nyw3ICs2Myw5
IEBAIHB1YmxpYzoKIHByb3RlY3RlZDoKICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKEpTQzo6Vk0m
LCBjb25zdCBTdHJpbmcmIG5hbWUpOwogCi1wcml2YXRlOiAgICAKK3ByaXZhdGU6CisgICAgc3Rh
dGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9ySW1wbChKU0M6OlZNJik7CisgICAgCiAg
ICAgSlNOUE1ldGhvZChKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpTdHJ1Y3R1cmUqLCBOUElk
ZW50aWZpZXIpOwogCiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUo
SlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1Zh
bHVlIHByb3RvdHlwZSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05l
dHNjYXBlL0pTTlBPYmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9QbHVnaW5zL05ldHNjYXBlL0pTTlBPYmplY3QuY3BwCShyZXZpc2lvbiAyMzA3MjMpCisr
KyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9KU05QT2JqZWN0LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTAsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDEwLTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCkBAIC0zNSw2ICszNSw4IEBACiAjaW5jbHVkZSA8SmF2YVNjcmlw
dENvcmUvQXV4aWxpYXJ5QmFycmllcklubGluZXMuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29y
ZS9FcnJvci5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0lkZW50aWZpZXJJbmxpbmVzLmg+
CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSXNvU3Vic3BhY2VQZXJWTS5oPgorI2luY2x1ZGUg
PEphdmFTY3JpcHRDb3JlL0pTRGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmg+CiAjaW5j
bHVkZSA8SmF2YVNjcmlwdENvcmUvSlNHbG9iYWxPYmplY3QuaD4KICNpbmNsdWRlIDxKYXZhU2Ny
aXB0Q29yZS9KU0xvY2suaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9PYmplY3RQcm90b3R5
cGUuaD4KQEAgLTUyNyw2ICs1MjksMTIgQEAgSlNPYmplY3QqIEpTTlBPYmplY3Q6OnRocm93SW52
YWxpZEFjY2VzcwogICAgIHJldHVybiB0aHJvd0V4Y2VwdGlvbihleGVjLCBzY29wZSwgY3JlYXRl
UmVmZXJlbmNlRXJyb3IoZXhlYywgIlRyeWluZyB0byBhY2Nlc3Mgb2JqZWN0IGZyb20gZGVzdHJv
eWVkIHBsdWctaW4uIikpOwogfQogCitJc29TdWJzcGFjZSogSlNOUE9iamVjdDo6c3Vic3BhY2VG
b3JJbXBsKFZNJiB2bSkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SXNvU3Vic3BhY2VQ
ZXJWTT4gcGVyVk0oW10gKFZNJiB2bSkgeyByZXR1cm4gSVNPX1NVQlNQQUNFX1BBUkFNRVRFUlMo
dm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmdldCgpLCBKU05QT2JqZWN0KTsgfSk7
CisgICAgcmV0dXJuICZwZXJWTS5nZXQoKS5mb3JWTSh2bSk7Cit9CisKIH0gLy8gbmFtZXNwYWNl
IFdlYktpdAogCiAjZW5kaWYgLy8gRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCkluZGV4OiBT
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9KU05QT2JqZWN0LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvSlNO
UE9iamVjdC5oCShyZXZpc2lvbiAyMzA3MjMpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
UGx1Z2lucy9OZXRzY2FwZS9KU05QT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1
IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMC0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDEsMTEgKzQxLDE3
IEBAIGNsYXNzIE5QUnVudGltZU9iamVjdE1hcDsKICAgICAKIC8vIEpTTlBPYmplY3QgaXMgYSBK
U09iamVjdCB0aGF0IHdyYXBzIGFuIE5QT2JqZWN0LgogCi1jbGFzcyBKU05QT2JqZWN0IDogcHVi
bGljIEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QgeworY2xhc3MgSlNOUE9iamVjdCBmaW5hbCA6
IHB1YmxpYyBKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0IHsKIHB1YmxpYzoKICAgICB0eXBlZGVm
IEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QgQmFzZTsKICAgICBzdGF0aWMgY29uc3QgdW5zaWdu
ZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IEpTQzo6T3ZlcnJpZGVz
R2V0T3duUHJvcGVydHlTbG90IHwgSlNDOjpPdmVycmlkZXNHZXRQcm9wZXJ0eU5hbWVzIHwgSlND
OjpUeXBlT2ZTaG91bGRDYWxsR2V0Q2FsbERhdGE7CiAKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBD
ZWxsVHlwZT4KKyAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpW
TSYgdm0pCisgICAgeworICAgICAgICByZXR1cm4gc3Vic3BhY2VGb3JJbXBsKHZtKTsKKyAgICB9
CisKICAgICBzdGF0aWMgSlNOUE9iamVjdCogY3JlYXRlKEpTQzo6SlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgTlBSdW50aW1lT2JqZWN0TWFwKiBvYmplY3RNYXAsIE5QT2JqZWN0KiBucE9i
amVjdCkKICAgICB7CiAgICAgICAgIEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBjcmVhdGVT
dHJ1Y3R1cmUoZ2xvYmFsT2JqZWN0LT52bSgpLCBnbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdC0+
b2JqZWN0UHJvdG90eXBlKCkpOwpAQCAtNzQsNiArODAsOCBAQCBwcm90ZWN0ZWQ6CiAgICAgdm9p
ZCBmaW5pc2hDcmVhdGlvbihKU0M6OkpTR2xvYmFsT2JqZWN0Kik7CiAKIHByaXZhdGU6CisgICAg
c3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9ySW1wbChKU0M6OlZNJik7CisgICAg
CiAgICAgSlNOUE9iamVjdChKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpTdHJ1Y3R1cmUqLCBO
UFJ1bnRpbWVPYmplY3RNYXAqLCBOUE9iamVjdCopOwogICAgIAogICAgIHN0YXRpYyBKU0M6OlN0
cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCg==
</data>
<flag name="review"
          id="356492"
          type_id="1"
          status="+"
          setter="saam"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>338345</attachid>
            <date>2018-04-19 11:17:39 -0700</date>
            <delta_ts>2018-04-19 11:17:39 -0700</delta_ts>
            <desc>patch for landing</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>48533</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjMwODEwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ2IEBA
CisyMDE4LTA0LTE3ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
VGhlIEludGVybmFsRnVuY3Rpb24gaGllcmFyY2h5IHNob3VsZCBiZSBpbiBJc29TdWJzcGFjZXMK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4NDcyMQor
CisgICAgICAgIFJldmlld2VkIGJ5IFNhYW0gQmFyYXRpLgorICAgICAgICAKKyAgICAgICAgVGhp
cyBtb3ZlcyBJbnRlcm5hbEZ1bmN0aW9uIGludG8gYSBJc29TdWJzcGFjZS4gSXQgYWxzbyBtb3Zl
cyBhbGwgc3ViY2xhc3NlcyBpbnRvIElzb1N1YnNwYWNlcywKKyAgICAgICAgYnV0IHN1YmNsYXNz
ZXMgdGhhdCBhcmUgdGhlIHNhbWUgc2l6ZSBhcyBJbnRlcm5hbEZ1bmN0aW9uIHNoYXJlIGl0cyBz
dWJzcGFjZS4gSSBkaWQgdGhpcworICAgICAgICBiZWNhdXNlIHRoZSBzdWJjbGFzc2VzIGFwcGVh
ciB0byBqdXN0IG92ZXJyaWRlIG1ldGhvZHMsIHdoaWNoIGFyZSBjYWxsZWQgZHluYW1pY2FsbHkg
dmlhIHRoZQorICAgICAgICBzdHJ1Y3R1cmUgb3IgY2xhc3Mgb2YgdGhlIG9iamVjdC4gU28sIEkg
ZG9uJ3Qgc2VlIGEgdHlwZSBjb25mdXNpb24gcmlzayBpZiBVQUYgaXMgdXNlZCB0bworICAgICAg
ICBhbGxvY2F0ZSBvbmUga2luZCBvZiBJbnRlcm5hbEZ1bmN0aW9uIG92ZXIgYW5vdGhlci4KKwor
ICAgICAgICAqIEFQSS9KU0Jhc2UuaDoKKyAgICAgICAgKiBBUEkvSlNDYWxsYmFja0Z1bmN0aW9u
Lmg6CisgICAgICAgICogQVBJL09iakNDYWxsYmFja0Z1bmN0aW9uLmg6CisgICAgICAgIChKU0M6
Ok9iakNDYWxsYmFja0Z1bmN0aW9uOjpzdWJzcGFjZUZvcik6CisgICAgICAgICogQ01ha2VMaXN0
cy50eHQ6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
ajoKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBoZWFwL0lzb1N1YnNwYWNlUGVy
Vk0uY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6SXNvU3Vic3BhY2VQZXJWTTo6QXV0b3JlbW92
aW5nSXNvU3Vic3BhY2U6OkF1dG9yZW1vdmluZ0lzb1N1YnNwYWNlKToKKyAgICAgICAgKEpTQzo6
SXNvU3Vic3BhY2VQZXJWTTo6QXV0b3JlbW92aW5nSXNvU3Vic3BhY2U6On5BdXRvcmVtb3ZpbmdJ
c29TdWJzcGFjZSk6CisgICAgICAgIChKU0M6Oklzb1N1YnNwYWNlUGVyVk06Oklzb1N1YnNwYWNl
UGVyVk0pOgorICAgICAgICAoSlNDOjpJc29TdWJzcGFjZVBlclZNOjp+SXNvU3Vic3BhY2VQZXJW
TSk6CisgICAgICAgIChKU0M6Oklzb1N1YnNwYWNlUGVyVk06OmZvclZNKToKKyAgICAgICAgKiBo
ZWFwL0lzb1N1YnNwYWNlUGVyVk0uaDogQWRkZWQuCisgICAgICAgIChKU0M6Oklzb1N1YnNwYWNl
UGVyVk06OlN1YnNwYWNlUGFyYW1ldGVyczo6U3Vic3BhY2VQYXJhbWV0ZXJzKToKKyAgICAgICAg
KiBydW50aW1lL0Vycm9yLmg6CisgICAgICAgICogcnVudGltZS9FcnJvckNvbnN0cnVjdG9yLmg6
CisgICAgICAgICogcnVudGltZS9JbnRlcm5hbEZ1bmN0aW9uLmg6CisgICAgICAgIChKU0M6Oklu
dGVybmFsRnVuY3Rpb246OnN1YnNwYWNlRm9yKToKKyAgICAgICAgKiBydW50aW1lL0ludGxDb2xs
YXRvckNvbnN0cnVjdG9yLmg6CisgICAgICAgICogcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXRD
b25zdHJ1Y3Rvci5oOgorICAgICAgICAqIHJ1bnRpbWUvSW50bE51bWJlckZvcm1hdENvbnN0cnVj
dG9yLmg6CisgICAgICAgICogcnVudGltZS9KU0FycmF5QnVmZmVyQ29uc3RydWN0b3IuaDoKKyAg
ICAgICAgKiBydW50aW1lL05hdGl2ZUVycm9yQ29uc3RydWN0b3IuaDoKKyAgICAgICAgKiBydW50
aW1lL1Byb3h5UmV2b2tlLmg6CisgICAgICAgICogcnVudGltZS9SZWdFeHBDb25zdHJ1Y3Rvci5o
OgorICAgICAgICAqIHJ1bnRpbWUvVk0uY3BwOgorICAgICAgICAoSlNDOjpWTTo6Vk0pOgorICAg
ICAgICAqIHJ1bnRpbWUvVk0uaDoKKwogMjAxOC0wNC0xOSAgWXVzdWtlIFN1enVraSAgPHV0YXRh
bmUudGVhQGdtYWlsLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCBGaXgganNjIHNoZWxsCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiAyMzA4MTApCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAg
LTUzMSw2ICs1MzEsNyBAQCBzZXQoSmF2YVNjcmlwdENvcmVfUFJJVkFURV9GUkFNRVdPUktfSEVB
CiAgICAgaGVhcC9JbmNyZW1lbnRhbFN3ZWVwZXIuaAogICAgIGhlYXAvSXNvQ2VsbFNldC5oCiAg
ICAgaGVhcC9Jc29TdWJzcGFjZS5oCisgICAgaGVhcC9Jc29TdWJzcGFjZVBlclZNLmgKICAgICBo
ZWFwL0xhcmdlQWxsb2NhdGlvbi5oCiAgICAgaGVhcC9MaXN0YWJsZUhhbmRsZXIuaAogICAgIGhl
YXAvTG9jYWxBbGxvY2F0b3IuaApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMu
dHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dAkocmV2
aXNpb24gMjMwODEwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0CSh3b3Jr
aW5nIGNvcHkpCkBAIC01MDIsNiArNTAyLDcgQEAgaGVhcC9JbmNyZW1lbnRhbFN3ZWVwZXIuY3Bw
CiBoZWFwL0lzb0FsaWduZWRNZW1vcnlBbGxvY2F0b3IuY3BwCiBoZWFwL0lzb0NlbGxTZXQuY3Bw
CiBoZWFwL0lzb1N1YnNwYWNlLmNwcAoraGVhcC9Jc29TdWJzcGFjZVBlclZNLmNwcAogaGVhcC9K
SVRTdHViUm91dGluZVNldC5jcHAKIGhlYXAvTGFyZ2VBbGxvY2F0aW9uLmNwcAogaGVhcC9Mb2Nh
bEFsbG9jYXRvci5jcHAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNCYXNlLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0Jhc2UuaAkocmV2aXNp
b24gMjMwODEwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0Jhc2UuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMTQzLDcgKzE0Myw3IEBAIEpTX0VYUE9SVCB2b2lkIEpTR2FyYmFnZUNvbGxl
Y3QoSlNDb250ZXgKIH0KICNlbmRpZgogCi0vKiBFbmFibGUgdGhlIE9iamVjdGl2ZS1DIEFQSSBm
b3IgcGxhdGZvcm1zIHdpdGggYSBtb2Rlcm4gcnVudGltZS4gKi8KKy8qIEVuYWJsZSB0aGUgT2Jq
ZWN0aXZlLUMgQVBJIGZvciBwbGF0Zm9ybXMgd2l0aCBhIG1vZGVybiBydW50aW1lLiBOT1RFOiBU
aGlzIGlzIGR1cGxpY2F0ZWQgaW4gVk0uaC4gKi8KICNpZiAhZGVmaW5lZChKU0NfT0JKQ19BUElf
RU5BQkxFRCkKICNpZiAoZGVmaW5lZChfX2NsYW5nX18pICYmIGRlZmluZWQoX19BUFBMRV9fKSAm
JiAoKGRlZmluZWQoX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCkgJiYgIWRlZmluZWQo
X19pMzg2X18pKSB8fCAoZGVmaW5lZChUQVJHRVRfT1NfSVBIT05FKSAmJiBUQVJHRVRfT1NfSVBI
T05FKSkpCiAjZGVmaW5lIEpTQ19PQkpDX0FQSV9FTkFCTEVEIDEKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja0Z1bmN0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrRnVuY3Rpb24uaAkocmV2aXNpb24gMjMwODEw
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrRnVuY3Rpb24uaAkod29y
a2luZyBjb3B5KQpAQCAtMzcsNiArMzcsMTIgQEAgY2xhc3MgSlNDYWxsYmFja0Z1bmN0aW9uIGZp
bmFsIDogcHVibGljIAogcHVibGljOgogICAgIHR5cGVkZWYgSW50ZXJuYWxGdW5jdGlvbiBCYXNl
OwogCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGU+CisgICAgc3RhdGljIElzb1N1YnNw
YWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCisgICAgeworICAgICAgICByZXR1cm4gJnZtLmNhbGxi
YWNrRnVuY3Rpb25TcGFjZTsKKyAgICB9CisKICAgICBzdGF0aWMgSlNDYWxsYmFja0Z1bmN0aW9u
KiBjcmVhdGUoVk0mLCBKU0dsb2JhbE9iamVjdCosIEpTT2JqZWN0Q2FsbEFzRnVuY3Rpb25DYWxs
YmFjaywgY29uc3QgU3RyaW5nJiBuYW1lKTsKIAogICAgIERFQ0xBUkVfSU5GTzsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvT2JqQ0NhbGxiYWNrRnVuY3Rpb24uaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL09iakNDYWxsYmFja0Z1bmN0aW9uLmgJKHJl
dmlzaW9uIDIzMDgxMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvT2JqQ0NhbGxiYWNr
RnVuY3Rpb24uaAkod29ya2luZyBjb3B5KQpAQCAtNDgsNiArNDgsMTIgQEAgY2xhc3MgT2JqQ0Nh
bGxiYWNrRnVuY3Rpb24gOiBwdWJsaWMgSW50ZQogcHVibGljOgogICAgIHR5cGVkZWYgSW50ZXJu
YWxGdW5jdGlvbiBCYXNlOwogCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGU+CisgICAg
c3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCisgICAgeworICAgICAgICBy
ZXR1cm4gJnZtLm9iakNDYWxsYmFja0Z1bmN0aW9uU3BhY2U7CisgICAgfQorCiAgICAgc3RhdGlj
IE9iakNDYWxsYmFja0Z1bmN0aW9uKiBjcmVhdGUoVk0mLCBKU0dsb2JhbE9iamVjdCosIGNvbnN0
IFN0cmluZyYgbmFtZSwgc3RkOjp1bmlxdWVfcHRyPE9iakNDYWxsYmFja0Z1bmN0aW9uSW1wbD4p
OwogICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDZWxsKik7CiAKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9BUEkvZ2xpYi9KU0NDYWxsYmFja0Z1bmN0aW9uLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL2dsaWIvSlNDQ2FsbGJhY2tGdW5jdGlvbi5jcHAJ
KHJldmlzaW9uIDIzMDgxMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvZ2xpYi9KU0ND
YWxsYmFja0Z1bmN0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw2ICsxLDYgQEAKIC8qCiAg
KiBDb3B5cmlnaHQgKEMpIDIwMTggSWdhbGlhIFMuTC4KLSAqIENvcHlyaWdodCAoQykgMjAwNiwg
MjAwOCwgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMDYtMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI5LDggKzI5LDEwIEBACiAKICNpbmNsdWRlICJBUElD
YWxsYmFja0Z1bmN0aW9uLmgiCiAjaW5jbHVkZSAiQVBJQ2FzdC5oIgorI2luY2x1ZGUgIklzb1N1
YnNwYWNlUGVyVk0uaCIKICNpbmNsdWRlICJKU0NDbGFzc1ByaXZhdGUuaCIKICNpbmNsdWRlICJK
U0NDb250ZXh0UHJpdmF0ZS5oIgorI2luY2x1ZGUgIkpTRGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENl
bGxUeXBlLmgiCiAjaW5jbHVkZSAiSlNDRXhjZXB0aW9uUHJpdmF0ZS5oIgogI2luY2x1ZGUgIkpT
Q0lubGluZXMuaCIKICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCkBAIC0yMDYsNCArMjA4LDEwIEBA
IHZvaWQgSlNDQ2FsbGJhY2tGdW5jdGlvbjo6ZGVzdHJveShKU0NlbGwKICAgICBzdGF0aWNfY2Fz
dDxKU0NDYWxsYmFja0Z1bmN0aW9uKj4oY2VsbCktPkpTQ0NhbGxiYWNrRnVuY3Rpb246On5KU0ND
YWxsYmFja0Z1bmN0aW9uKCk7CiB9CiAKK0lzb1N1YnNwYWNlKiBKU0NDYWxsYmFja0Z1bmN0aW9u
OjpzdWJzcGFjZUZvckltcGwoVk0mIHZtKQoreworICAgIE5ldmVyRGVzdHJveWVkPElzb1N1YnNw
YWNlUGVyVk0+IHBlclZNKFtdIChWTSYgdm0pIC0+IElzb1N1YnNwYWNlUGVyVk06OlN1YnNwYWNl
UGFyYW1ldGVycyB7IHJldHVybiBJU09fU1VCU1BBQ0VfUEFSQU1FVEVSUyh2bS5kZXN0cnVjdGli
bGVPYmplY3RIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTQ0NhbGxiYWNrRnVuY3Rpb24pOyB9KTsKKyAg
ICByZXR1cm4gJnBlclZNLmdldCgpLmZvclZNKHZtKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgSlND
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL2dsaWIvSlNDQ2FsbGJhY2tGdW5jdGlv
bi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvZ2xpYi9KU0NDYWxs
YmFja0Z1bmN0aW9uLmgJKHJldmlzaW9uIDIzMDgxMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9BUEkvZ2xpYi9KU0NDYWxsYmFja0Z1bmN0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTQwLDYg
KzQwLDEyIEBAIGNsYXNzIEpTQ0NhbGxiYWNrRnVuY3Rpb24gOiBwdWJsaWMgSW50ZXIKIHB1Ymxp
YzoKICAgICB0eXBlZGVmIEludGVybmFsRnVuY3Rpb24gQmFzZTsKIAorICAgIHRlbXBsYXRlPHR5
cGVuYW1lIENlbGxUeXBlPgorICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0m
IHZtKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHN1YnNwYWNlRm9ySW1wbCh2bSk7CisgICAgfQor
CiAgICAgZW51bSBjbGFzcyBUeXBlIHsKICAgICAgICAgRnVuY3Rpb24sCiAgICAgICAgIE1ldGhv
ZCwKQEAgLTYxLDYgKzY3LDggQEAgcHVibGljOgogICAgIEpTT2JqZWN0UmVmIGNvbnN0cnVjdChK
U0NvbnRleHRSZWYsIHNpemVfdCBhcmd1bWVudENvdW50LCBjb25zdCBKU1ZhbHVlUmVmIGFyZ3Vt
ZW50c1tdLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pOwogCiBwcml2YXRlOgorICAgIHN0YXRpYyBJ
c29TdWJzcGFjZSogc3Vic3BhY2VGb3JJbXBsKFZNJik7CisgICAgCiAgICAgSlNDQ2FsbGJhY2tG
dW5jdGlvbihWTSYsIFN0cnVjdHVyZSosIFR5cGUsIEpTQ0NsYXNzKiwgR1JlZlB0cjxHQ2xvc3Vy
ZT4mJiwgR1R5cGUsIFZlY3RvcjxHVHlwZT4mJik7CiAKICAgICBKU09iamVjdENhbGxBc0Z1bmN0
aW9uQ2FsbGJhY2sgZnVuY3Rpb25DYWxsYmFjaygpIHsgcmV0dXJuIG1fZnVuY3Rpb25DYWxsYmFj
azsgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDIzMDgxMCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0zNDMsNiArMzQzLDcgQEAKIAkJMEY1Q0Y5ODQx
RTlENTM3NzAwQzE4NjkyIC8qIEFpckxvd2VyU3RhY2tBcmdzLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjVDRjk4MzFFOUQ1Mzc1MDBDMTg2OTIgLyog
QWlyTG93ZXJTdGFja0FyZ3MuaCAqLzsgfTsKIAkJMEY1Q0Y5ODkxRTlFRDY1MjAwQzE4NjkyIC8q
IEFpclN0YWNrQWxsb2NhdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMEY1Q0Y5ODcxRTlFRDY0RTAwQzE4NjkyIC8qIEFpclN0YWNrQWxsb2NhdGlv
bi5oICovOyB9OwogCQkwRjVFMEZEODIwN0M3MjczMDA5N0YwREUgLyogREZHQWJzdHJhY3RJbnRl
cnByZXRlckNsb2JiZXJTdGF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMEY1RTBGRDYyMDdDNzI3MTAwOTdGMERFIC8qIERGR0Fic3RyYWN0SW50ZXJw
cmV0ZXJDbG9iYmVyU3RhdGUuaCAqLzsgfTsKKwkJMEY1RTBGRTcyMDg2QUQ0ODAwOTdGMERFIC8q
IElzb1N1YnNwYWNlUGVyVk0uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDBGNUUwRkU1MjA4NkFENDYwMDk3RjBERSAvKiBJc29TdWJzcGFjZVBlclZNLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEY1RUY5
MUYxNjg3OEY3RDAwM0U1QzI1IC8qIEpJVFRodW5rcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY1RUY5MUMxNjg3OEY3ODAwM0U1QzI1IC8qIEpJVFRo
dW5rcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CTBGNUYwOENGMTQ2Qzc2MzMwMDA0NzJBOSAvKiBVbmNvbmRpdGlvbmFsRmluYWxpemVyLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjVGMDhDRTE0NkM3
NjJGMDAwNDcyQTkgLyogVW5jb25kaXRpb25hbEZpbmFsaXplci5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGNjBGRTkwMUZGQzM3MDIwMDAzMzIw
QSAvKiBFeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjYwRkU4RTFGRkMzNkZEMDAwMzMyMEEgLyogRXhlY3V0
YWJsZVRvQ29kZUJsb2NrRWRnZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CkBAIC0yMzUwLDYgKzIzNTEsOCBAQAogCQkwRjVEMDg1QzFCOENGOTlEMDAx
MTQzQjQgLyogREZHTm9kZU9yaWdpbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IG5hbWUgPSBERkdOb2RlT3JpZ2luLmNwcDsgcGF0aCA9IGRmZy9ERkdOb2RlT3JpZ2luLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY1RTBGRDYyMDdDNzI3MTAwOTdGMERFIC8q
IERGR0Fic3RyYWN0SW50ZXJwcmV0ZXJDbG9iYmVyU3RhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBuYW1lID0gREZHQWJzdHJhY3RJbnRlcnByZXRlckNsb2JiZXJTdGF0ZS5oOyBwYXRo
ID0gZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJDbG9iYmVyU3RhdGUuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMEY1RTBGRDcyMDdDNzI3MTAwOTdGMERFIC8qIERGR0Fic3RyYWN0
SW50ZXJwcmV0ZXJDbG9iYmVyU3RhdGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBuYW1lID0gREZHQWJzdHJhY3RJbnRlcnByZXRlckNsb2JiZXJTdGF0ZS5jcHA7IHBhdGggPSBk
ZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlckNsb2JiZXJTdGF0ZS5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTBGNUUwRkU1MjA4NkFENDYwMDk3RjBERSAvKiBJc29TdWJzcGFjZVBl
clZNLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IElzb1N1YnNwYWNlUGVyVk0u
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY1RTBGRTYyMDg2QUQ0NzAwOTdGMERF
IC8qIElzb1N1YnNwYWNlUGVyVk0uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gSXNvU3Vic3BhY2VQZXJWTS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTBGNUVGOTFCMTY4NzhGNzgwMDNFNUMyNSAvKiBKSVRUaHVua3MuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSklUVGh1bmtzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMEY1RUY5MUMxNjg3OEY3ODAwM0U1QzI1IC8qIEpJVFRodW5rcy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKSVRUaHVua3MuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMEY1RjA4Q0UxNDZDNzYyRjAwMDQ3MkE5IC8qIFVuY29uZGl0aW9uYWxG
aW5hbGl6ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVW5jb25kaXRpb25h
bEZpbmFsaXplci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNTY5NSw2ICs1Njk4
LDggQEAKIAkJCQkwRkI0Njc3QjFGRERBNkQ4MDAzRkNCMDkgLyogSXNvQ2VsbFNldElubGluZXMu
aCAqLywKIAkJCQkwRkRDRTEyQzFGQUZCNERFMDA2RjM5MDEgLyogSXNvU3Vic3BhY2UuY3BwICov
LAogCQkJCTBGRENFMTJCMUZBRkI0REUwMDZGMzkwMSAvKiBJc29TdWJzcGFjZS5oICovLAorCQkJ
CTBGNUUwRkU2MjA4NkFENDcwMDk3RjBERSAvKiBJc29TdWJzcGFjZVBlclZNLmNwcCAqLywKKwkJ
CQkwRjVFMEZFNTIwODZBRDQ2MDA5N0YwREUgLyogSXNvU3Vic3BhY2VQZXJWTS5oICovLAogCQkJ
CTBGNzY2RDI5MTVBOENDMzQwMDhGMzYzRSAvKiBKSVRTdHViUm91dGluZVNldC5jcHAgKi8sCiAJ
CQkJMEY3NjZEMkExNUE4Q0MzNDAwOEYzNjNFIC8qIEpJVFN0dWJSb3V0aW5lU2V0LmggKi8sCiAJ
CQkJMEYwNzBBNDUxRDU0M0E4OTAwNkU3MjMyIC8qIExhcmdlQWxsb2NhdGlvbi5jcHAgKi8sCkBA
IC05NDkxLDYgKzk0OTYsNyBAQAogCQkJCTUzRjhEMjAwMUU4Mzg3RDQwMEQyMTExNiAvKiBXYXNt
QkJRUGxhbklubGluZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUFENEIxREZBMURGMjQ0RTIwMDcx
QUUzMiAvKiBXYXNtQmluZGluZy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTI1QzBEREExRTkzNTg0
NzAwMjE4NENEIC8qIFdhc21DYWxsZWUuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGNUUwRkU3MjA4
NkFENDgwMDk3RjBERSAvKiBJc29TdWJzcGFjZVBlclZNLmggaW4gSGVhZGVycyAqLywKIAkJCQk1
M0ZEMDRENDFEN0FCMjkxMDAzMjg3RDMgLyogV2FzbUNhbGxpbmdDb252ZW50aW9uLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk1MjZBQzRCNzFFOTc3QzVEMDAzNTAwRTEgLyogV2FzbUNvZGVCbG9jay5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQUQ0MTJCMzQxRTdCMkU5RTAwOEFGMTU3IC8qIFdhc21Db250
ZXh0LmggaW4gSGVhZGVycyAqLywKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0lz
b1N1YnNwYWNlUGVyVk0uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL0lzb1N1YnNwYWNlUGVyVk0uY3BwCShub25leGlzdGVudCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL0lzb1N1YnNwYWNlUGVyVk0uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAg
KzEsNzMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIklzb1N1YnNwYWNlUGVyVk0uaCIKKworI2lu
Y2x1ZGUgIkpTQ0lubGluZXMuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIElzb1N1YnNw
YWNlUGVyVk06OkF1dG9yZW1vdmluZ0lzb1N1YnNwYWNlIDogcHVibGljIElzb1N1YnNwYWNlIHsK
K3B1YmxpYzoKKyAgICBBdXRvcmVtb3ZpbmdJc29TdWJzcGFjZShJc29TdWJzcGFjZVBlclZNJiBw
ZXJWTSwgQ1N0cmluZyBuYW1lLCBIZWFwJiBoZWFwLCBIZWFwQ2VsbFR5cGUqIGhlYXBDZWxsVHlw
ZSwgc2l6ZV90IHNpemUpCisgICAgICAgIDogSXNvU3Vic3BhY2UobmFtZSwgaGVhcCwgaGVhcENl
bGxUeXBlLCBzaXplKQorICAgICAgICAsIG1fcGVyVk0ocGVyVk0pCisgICAgeworICAgIH0KKyAg
ICAKKyAgICB+QXV0b3JlbW92aW5nSXNvU3Vic3BhY2UoKQorICAgIHsKKyAgICAgICAgYXV0byBs
b2NrZXIgPSBob2xkTG9jayhtX3BlclZNLm1fbG9jayk7CisgICAgICAgIG1fcGVyVk0ubV9zdWJz
cGFjZVBlclZNLnJlbW92ZShzcGFjZSgpLmhlYXAoKS0+dm0oKSk7CisgICAgfQorCitwcml2YXRl
OgorICAgIElzb1N1YnNwYWNlUGVyVk0mIG1fcGVyVk07Cit9OworCitJc29TdWJzcGFjZVBlclZN
OjpJc29TdWJzcGFjZVBlclZNKEZ1bmN0aW9uPFN1YnNwYWNlUGFyYW1ldGVycyhWTSYpPiBzdWJz
cGFjZVBhcmFtZXRlcnMpCisgICAgOiBtX3N1YnNwYWNlUGFyYW1ldGVycyhXVEZNb3ZlKHN1YnNw
YWNlUGFyYW1ldGVycykpCit7Cit9CisKK0lzb1N1YnNwYWNlUGVyVk06On5Jc29TdWJzcGFjZVBl
clZNKCkKK3sKKyAgICBVTlJFQUNIQUJMRV9GT1JfUExBVEZPUk0oKTsKK30KKworSXNvU3Vic3Bh
Y2UmIElzb1N1YnNwYWNlUGVyVk06OmZvclZNKFZNJiB2bSkKK3sKKyAgICBhdXRvIGxvY2tlciA9
IGhvbGRMb2NrKG1fbG9jayk7CisgICAgYXV0byByZXN1bHQgPSBtX3N1YnNwYWNlUGVyVk0uYWRk
KCZ2bSwgbnVsbHB0cik7CisgICAgaWYgKHJlc3VsdC5pc05ld0VudHJ5KSB7CisgICAgICAgIFN1
YnNwYWNlUGFyYW1ldGVycyBwYXJhbXMgPSBtX3N1YnNwYWNlUGFyYW1ldGVycyh2bSk7CisgICAg
ICAgIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBuZXcgQXV0b3JlbW92aW5nSXNvU3Vic3BhY2Uo
KnRoaXMsIHBhcmFtcy5uYW1lLCB2bS5oZWFwLCBwYXJhbXMuaGVhcENlbGxUeXBlLCBwYXJhbXMu
c2l6ZSk7CisgICAgfQorICAgIHJldHVybiAqcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZTsKK30KKwor
fSAvLyBuYW1lc3BhY2UgSlNDCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0lz
b1N1YnNwYWNlUGVyVk0uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVh
cC9Jc29TdWJzcGFjZVBlclZNLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2hlYXAvSXNvU3Vic3BhY2VQZXJWTS5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNzMg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
CisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI3ByYWdt
YSBvbmNlCisKKyNpbmNsdWRlICJJc29TdWJzcGFjZS5oIgorI2luY2x1ZGUgPHd0Zi9GdW5jdGlv
bi5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL0xvY2suaD4KKwor
bmFtZXNwYWNlIEpTQyB7CisKKy8vIFRoaXMgaXMgYW4gYXBwcm9wcmlhdGUgd2F5IHRvIHN0YXNo
IElzb1N1YnNwYWNlcyBmb3IgcmFyZWx5LXVzZWQgY2xhc3NlcyBvciBjbGFzc2VzIHRoYXQgYXJl
IG1vc3RseQorLy8gc3VyZSB0byBiZSBtYWluLXRocmVhZC1vbmx5LiBCdXQgaWYgYSBjbGFzcyB0
eXBpY2FsbHkgZ2V0cyBpbnN0YW50aWF0ZWQgZnJvbSBtdWx0aXBsZSB0aHJlYWRzIGF0CisvLyBv
bmNlLCB0aGVuIHRoaXMgaXMgbm90IGdyZWF0LCBiZWNhdXNlIGNvbmN1cnJlbnQgYWxsb2NhdGlv
bnMgd2lsbCBwcm9iYWJseSBjb250ZW5kIG9uIHRoaXMgdGhpbmcncworLy8gbG9jay4KK2NsYXNz
IElzb1N1YnNwYWNlUGVyVk0geworcHVibGljOgorICAgIHN0cnVjdCBTdWJzcGFjZVBhcmFtZXRl
cnMgeworICAgICAgICBTdWJzcGFjZVBhcmFtZXRlcnMoKSB7IH0KKyAgICAgICAgCisgICAgICAg
IFN1YnNwYWNlUGFyYW1ldGVycyhDU3RyaW5nIG5hbWUsIEhlYXBDZWxsVHlwZSogaGVhcENlbGxU
eXBlLCBzaXplX3Qgc2l6ZSkKKyAgICAgICAgICAgIDogbmFtZShXVEZNb3ZlKG5hbWUpKQorICAg
ICAgICAgICAgLCBoZWFwQ2VsbFR5cGUoaGVhcENlbGxUeXBlKQorICAgICAgICAgICAgLCBzaXpl
KHNpemUpCisgICAgICAgIHsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgQ1N0cmluZyBu
YW1lOworICAgICAgICBIZWFwQ2VsbFR5cGUqIGhlYXBDZWxsVHlwZSB7IG51bGxwdHIgfTsKKyAg
ICAgICAgc2l6ZV90IHNpemUgeyAwIH07CisgICAgfTsKKyAgICAKKyAgICBKU19FWFBPUlRfUFJJ
VkFURSBJc29TdWJzcGFjZVBlclZNKEZ1bmN0aW9uPFN1YnNwYWNlUGFyYW1ldGVycyhWTSYpPik7
CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgfklzb1N1YnNwYWNlUGVyVk0oKTsKKyAgICAKKyAgICBK
U19FWFBPUlRfUFJJVkFURSBJc29TdWJzcGFjZSYgZm9yVk0oVk0mKTsKKworcHJpdmF0ZToKKyAg
ICBjbGFzcyBBdXRvcmVtb3ZpbmdJc29TdWJzcGFjZTsKKyAgICBmcmllbmQgY2xhc3MgQXV0b3Jl
bW92aW5nSXNvU3Vic3BhY2U7CisKKyAgICBMb2NrIG1fbG9jazsKKyAgICBIYXNoTWFwPFZNKiwg
SXNvU3Vic3BhY2UqPiBtX3N1YnNwYWNlUGVyVk07CisgICAgRnVuY3Rpb248U3Vic3BhY2VQYXJh
bWV0ZXJzKFZNJik+IG1fc3Vic3BhY2VQYXJhbWV0ZXJzOworfTsKKworI2RlZmluZSBJU09fU1VC
U1BBQ0VfUEFSQU1FVEVSUyhoZWFwQ2VsbFR5cGUsIHR5cGUpIDo6SlNDOjpJc29TdWJzcGFjZVBl
clZNOjpTdWJzcGFjZVBhcmFtZXRlcnMoIklzb2xhdGVkICIgI3R5cGUgIiBTcGFjZSIsIChoZWFw
Q2VsbFR5cGUpLCBzaXplb2YodHlwZSkpCisKK30gLy8gbmFtZXNwYWNlIEpTQworCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvci5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yLmgJKHJldmlzaW9uIDIzMDgxMCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTEx
NSw2ICsxMTUsMTIgQEAgcHJpdmF0ZToKIAogcHVibGljOgogICAgIHR5cGVkZWYgSW50ZXJuYWxG
dW5jdGlvbiBCYXNlOworICAgIAorICAgIHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlPgorICAg
IHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQorICAgIHsKKyAgICAgICAg
cmV0dXJuICZ2bS5zdHJpY3RNb2RlVHlwZUVycm9yRnVuY3Rpb25TcGFjZTsKKyAgICB9CiAKICAg
ICBzdGF0aWMgU3RyaWN0TW9kZVR5cGVFcnJvckZ1bmN0aW9uKiBjcmVhdGUoVk0mIHZtLCBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKQogICAgIHsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yQ29uc3RydWN0b3IuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvckNvbnN0cnVjdG9yLmgJKHJl
dmlzaW9uIDIzMDgxMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yQ29u
c3RydWN0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtMSw2ICsxLDYgQEAKIC8qCiAgKiAgQ29weXJp
Z2h0IChDKSAxOTk5LTIwMDAgSGFycmkgUG9ydGVuIChwb3J0ZW5Aa2RlLm9yZykKLSAqICBDb3B5
cmlnaHQgKEMpIDIwMDgtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAg
Q29weXJpZ2h0IChDKSAyMDA4LTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICoKICAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1
dGUgaXQgYW5kL29yCiAgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExl
c3NlciBHZW5lcmFsIFB1YmxpYwpAQCAtMzEsNiArMzEsMTIgQEAgY2xhc3MgRXJyb3JDb25zdHJ1
Y3RvciBmaW5hbCA6IHB1YmxpYyBJbgogcHVibGljOgogICAgIHR5cGVkZWYgSW50ZXJuYWxGdW5j
dGlvbiBCYXNlOwogCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGU+CisgICAgc3RhdGlj
IElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCisgICAgeworICAgICAgICByZXR1cm4g
JnZtLmVycm9yQ29uc3RydWN0b3JTcGFjZTsKKyAgICB9CisKICAgICBzdGF0aWMgRXJyb3JDb25z
dHJ1Y3RvciogY3JlYXRlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEVycm9yUHJvdG90
eXBlKiBlcnJvclByb3RvdHlwZSwgR2V0dGVyU2V0dGVyKikKICAgICB7CiAgICAgICAgIEVycm9y
Q29uc3RydWN0b3IqIGNvbnN0cnVjdG9yID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8RXJy
b3JDb25zdHJ1Y3Rvcj4odm0uaGVhcCkpIEVycm9yQ29uc3RydWN0b3Iodm0sIHN0cnVjdHVyZSk7
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRlcm5hbEZ1bmN0aW9uLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50ZXJuYWxGdW5j
dGlvbi5oCShyZXZpc2lvbiAyMzA4MTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9JbnRlcm5hbEZ1bmN0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTM4LDYgKzM4LDEzIEBAIHB1
YmxpYzoKICAgICB0eXBlZGVmIEpTRGVzdHJ1Y3RpYmxlT2JqZWN0IEJhc2U7CiAgICAgc3RhdGlj
IGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBJ
bXBsZW1lbnRzSGFzSW5zdGFuY2UgfCBJbXBsZW1lbnRzRGVmYXVsdEhhc0luc3RhbmNlIHwgVHlw
ZU9mU2hvdWxkQ2FsbEdldENhbGxEYXRhOwogCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5
cGU+CisgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCisgICAgewor
ICAgICAgICBzdGF0aWNfYXNzZXJ0KHNpemVvZihDZWxsVHlwZSkgPT0gc2l6ZW9mKEludGVybmFs
RnVuY3Rpb24pLCAiSW50ZXJuYWxGdW5jdGlvbiBzdWJjbGFzc2VzIHRoYXQgYWRkIGZpZWxkcyBu
ZWVkIHRvIG92ZXJyaWRlIHN1YnNwYWNlRm9yPD4oKSIpOworICAgICAgICByZXR1cm4gJnZtLmlu
dGVybmFsRnVuY3Rpb25TcGFjZTsKKyAgICB9CisKICAgICBERUNMQVJFX0VYUE9SVF9JTkZPOwog
CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwq
LCBTbG90VmlzaXRvciYpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50
bENvbGxhdG9yQ29uc3RydWN0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9JbnRsQ29sbGF0b3JDb25zdHJ1Y3Rvci5oCShyZXZpc2lvbiAyMzA4MTApCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsQ29sbGF0b3JDb25zdHJ1Y3Rvci5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAx
NSBBbmR5IFZhbldhZ29uZXIgKHRoZXRhbGVjcmFmdGVyQGdtYWlsLmNvbSkKKyAqIENvcHlyaWdo
dCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKQEAgLTM5LDYgKzQwLDEyIEBAIHB1YmxpYzoKICAgICB0eXBlZGVm
IEludGVybmFsRnVuY3Rpb24gQmFzZTsKICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0
dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IEhhc1N0YXRpY1Byb3BlcnR5VGFibGU7
CiAKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZT4KKyAgICBzdGF0aWMgSXNvU3Vic3Bh
Y2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKKyAgICB7CisgICAgICAgIHJldHVybiAmdm0uaW50bENv
bGxhdG9yQ29uc3RydWN0b3JTcGFjZTsKKyAgICB9CisKICAgICBzdGF0aWMgSW50bENvbGxhdG9y
Q29uc3RydWN0b3IqIGNyZWF0ZShWTSYsIFN0cnVjdHVyZSosIEludGxDb2xsYXRvclByb3RvdHlw
ZSosIFN0cnVjdHVyZSopOwogICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShW
TSYsIEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSk7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0Q29uc3Ry
dWN0b3IuaAkocmV2aXNpb24gMjMwODEwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1
ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQW5keSBWYW5XYWdvbmVyICh0aGV0
YWxlY3JhZnRlckBnbWFpbC5jb20pCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0z
OSw2ICs0MCwxMiBAQCBwdWJsaWM6CiAgICAgdHlwZWRlZiBJbnRlcm5hbEZ1bmN0aW9uIEJhc2U7
CiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0
dXJlRmxhZ3MgfCBIYXNTdGF0aWNQcm9wZXJ0eVRhYmxlOwogCisgICAgdGVtcGxhdGU8dHlwZW5h
bWUgQ2VsbFR5cGU+CisgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0p
CisgICAgeworICAgICAgICByZXR1cm4gJnZtLmludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9y
U3BhY2U7CisgICAgfQorCiAgICAgc3RhdGljIEludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9y
KiBjcmVhdGUoVk0mLCBTdHJ1Y3R1cmUqLCBJbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUqLCBT
dHJ1Y3R1cmUqKTsKICAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mLCBK
U0dsb2JhbE9iamVjdCosIEpTVmFsdWUpOwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9JbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3IuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3IuaAko
cmV2aXNpb24gMjMwODEwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51
bWJlckZvcm1hdENvbnN0cnVjdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw2IEBACiAv
KgogICogQ29weXJpZ2h0IChDKSAyMDE1IEFuZHkgVmFuV2Fnb25lciAodGhldGFsZWNyYWZ0ZXJA
Z21haWwuY29tKQorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzksNiArNDAsMTIg
QEAgcHVibGljOgogICAgIHR5cGVkZWYgSW50ZXJuYWxGdW5jdGlvbiBCYXNlOwogICAgIHN0YXRp
YyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwg
SGFzU3RhdGljUHJvcGVydHlUYWJsZTsKIAorICAgIHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBl
PgorICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuICZ2bS5pbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3JTcGFjZTsKKyAgICB9
CisKICAgICBzdGF0aWMgSW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yKiBjcmVhdGUoVk0mLCBT
dHJ1Y3R1cmUqLCBJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlKiwgU3RydWN0dXJlKik7CiAgICAg
c3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBK
U1ZhbHVlKTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1
ZmZlckNvbnN0cnVjdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNBcnJheUJ1ZmZlckNvbnN0cnVjdG9yLmgJKHJldmlzaW9uIDIzMDgxMCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJDb25zdHJ1Y3Rvci5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMywg
MjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTMtMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKQEAgLTM3LDYgKzM3LDEyIEBAIGNsYXNzIEpTQXJyYXlCdWZmZXJDb25z
dHJ1Y3RvciBmaW5hbCA6IHAKIHB1YmxpYzoKICAgICB0eXBlZGVmIEludGVybmFsRnVuY3Rpb24g
QmFzZTsKIAorICAgIHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlPgorICAgIHN0YXRpYyBJc29T
dWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQorICAgIHsKKyAgICAgICAgcmV0dXJuICZ2bS5h
cnJheUJ1ZmZlckNvbnN0cnVjdG9yU3BhY2U7CisgICAgfQorCiBwcm90ZWN0ZWQ6CiAgICAgSlNB
cnJheUJ1ZmZlckNvbnN0cnVjdG9yKFZNJiwgU3RydWN0dXJlKiwgQXJyYXlCdWZmZXJTaGFyaW5n
TW9kZSk7CiAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYsIEpTQXJyYXlCdWZmZXJQcm90b3R5
cGUqLCBHZXR0ZXJTZXR0ZXIqIHNwZWNpZXNTeW1ib2wpOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvci5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05hdGl2ZUVycm9yQ29uc3RydWN0b3IuaAkocmV2
aXNpb24gMjMwODEwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZlRXJy
b3JDb25zdHJ1Y3Rvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEsNiBAQAogLyoKICAqICBD
b3B5cmlnaHQgKEMpIDE5OTktMjAwMCBIYXJyaSBQb3J0ZW4gKHBvcnRlbkBrZGUub3JnKQotICog
IENvcHlyaWdodCAoQykgMjAwOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAg
Q29weXJpZ2h0IChDKSAyMDA4LTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICoKICAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1
dGUgaXQgYW5kL29yCiAgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExl
c3NlciBHZW5lcmFsIFB1YmxpYwpAQCAtMzMsNiArMzMsMTIgQEAgY2xhc3MgTmF0aXZlRXJyb3JD
b25zdHJ1Y3RvciBmaW5hbCA6IHB1YgogcHVibGljOgogICAgIHR5cGVkZWYgSW50ZXJuYWxGdW5j
dGlvbiBCYXNlOwogCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGU+CisgICAgc3RhdGlj
IElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCisgICAgeworICAgICAgICByZXR1cm4g
JnZtLm5hdGl2ZUVycm9yQ29uc3RydWN0b3JTcGFjZTsKKyAgICB9CisKICAgICBzdGF0aWMgTmF0
aXZlRXJyb3JDb25zdHJ1Y3RvciogY3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFN0cnVjdHVyZSogcHJvdG90eXBlU3RydWN0
dXJlLCBjb25zdCBTdHJpbmcmIG5hbWUpCiAgICAgewogICAgICAgICBOYXRpdmVFcnJvckNvbnN0
cnVjdG9yKiBjb25zdHJ1Y3RvciA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPE5hdGl2ZUVy
cm9yQ29uc3RydWN0b3I+KHZtLmhlYXApKSBOYXRpdmVFcnJvckNvbnN0cnVjdG9yKHZtLCBzdHJ1
Y3R1cmUpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJveHlSZXZva2Uu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm94eVJldm9r
ZS5oCShyZXZpc2lvbiAyMzA4MTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Q
cm94eVJldm9rZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw2ICszNiwxMiBAQCBwdWJsaWM6CiAg
ICAgdHlwZWRlZiBJbnRlcm5hbEZ1bmN0aW9uIEJhc2U7CiAgICAgc3RhdGljIGNvbnN0IHVuc2ln
bmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3M7CiAKKyAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBDZWxsVHlwZT4KKyAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9y
KFZNJiB2bSkKKyAgICB7CisgICAgICAgIHJldHVybiAmdm0ucHJveHlSZXZva2VTcGFjZTsKKyAg
ICB9CisKICAgICBzdGF0aWMgUHJveHlSZXZva2UqIGNyZWF0ZShWTSYsIFN0cnVjdHVyZSosIFBy
b3h5T2JqZWN0Kik7CiAKICAgICBERUNMQVJFX0lORk87CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9SZWdFeHBDb25zdHJ1Y3Rvci5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cENvbnN0cnVjdG9yLmgJKHJldmlzaW9uIDIzMDgx
MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cENvbnN0cnVjdG9yLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw2IEBACiAvKgogICogIENvcHlyaWdodCAoQykgMTk5
OS0yMDAwIEhhcnJpIFBvcnRlbiAocG9ydGVuQGtkZS5vcmcpCi0gKiAgQ29weXJpZ2h0IChDKSAy
MDAzLCAyMDA3LTIwMDgsIDIwMTYgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICog
IENvcHlyaWdodCAoQykgMjAwMy0yMDE4IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4K
ICAqCiAgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmli
dXRlIGl0IGFuZC9vcgogICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBM
ZXNzZXIgR2VuZXJhbCBQdWJsaWMKQEAgLTM1LDYgKzM1LDEyIEBAIHB1YmxpYzoKICAgICB0eXBl
ZGVmIEludGVybmFsRnVuY3Rpb24gQmFzZTsKICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3Ry
dWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IEhhc1N0YXRpY1Byb3BlcnR5VGFi
bGU7CiAKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZT4KKyAgICBzdGF0aWMgSXNvU3Vi
c3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKKyAgICB7CisgICAgICAgIHJldHVybiAmdm0ucmVn
RXhwQ29uc3RydWN0b3JTcGFjZTsKKyAgICB9CisKICAgICBzdGF0aWMgUmVnRXhwQ29uc3RydWN0
b3IqIGNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBSZWdFeHBQcm90b3R5cGUq
IHJlZ0V4cFByb3RvdHlwZSwgR2V0dGVyU2V0dGVyKiBzcGVjaWVzKQogICAgIHsKICAgICAgICAg
UmVnRXhwQ29uc3RydWN0b3IqIGNvbnN0cnVjdG9yID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNl
bGw8UmVnRXhwQ29uc3RydWN0b3I+KHZtLmhlYXApKSBSZWdFeHBDb25zdHJ1Y3Rvcih2bSwgc3Ry
dWN0dXJlLCByZWdFeHBQcm90b3R5cGUpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvVk0uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1ZNLmNwcAkocmV2aXNpb24gMjMwODEwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvVk0uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MSw2ICs0MSw4IEBACiAjaW5jbHVkZSAiREZH
V29ya2xpc3QuaCIKICNpbmNsdWRlICJEaXJlY3RFdmFsRXhlY3V0YWJsZS5oIgogI2luY2x1ZGUg
IkRpc2Fzc2VtYmxlci5oIgorI2luY2x1ZGUgIkVycm9yLmgiCisjaW5jbHVkZSAiRXJyb3JDb25z
dHJ1Y3Rvci5oIgogI2luY2x1ZGUgIkVycm9ySW5zdGFuY2UuaCIKICNpbmNsdWRlICJFdmFsQ29k
ZUJsb2NrLmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uLmgiCkBAIC02NCwxNCArNjYsMTkgQEAKICNp
bmNsdWRlICJJbmZlcnJlZFR5cGVUYWJsZS5oIgogI2luY2x1ZGUgIkluZmVycmVkVmFsdWUuaCIK
ICNpbmNsdWRlICJJbnRlcnByZXRlci5oIgorI2luY2x1ZGUgIkludGxDb2xsYXRvckNvbnN0cnVj
dG9yLmgiCisjaW5jbHVkZSAiSW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3IuaCIKKyNpbmNs
dWRlICJJbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJKSVRDb2RlLmgi
CiAjaW5jbHVkZSAiSklUV29ya2xpc3QuaCIKICNpbmNsdWRlICJKU0FQSVZhbHVlV3JhcHBlci5o
IgogI2luY2x1ZGUgIkpTQXJyYXkuaCIKKyNpbmNsdWRlICJKU0FycmF5QnVmZmVyQ29uc3RydWN0
b3IuaCIKICNpbmNsdWRlICJKU0FzeW5jRnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU0JpZ0ludC5o
IgogI2luY2x1ZGUgIkpTQm91bmRGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIK
KyNpbmNsdWRlICJKU0NhbGxiYWNrRnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU0N1c3RvbUdldHRl
clNldHRlckZ1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNEZXN0cnVjdGlibGVPYmplY3RIZWFwQ2Vs
bFR5cGUuaCIKICNpbmNsdWRlICJKU0ZpeGVkQXJyYXkuaCIKQEAgLTEwMywxNiArMTEwLDIwIEBA
CiAjaW5jbHVkZSAiTWluaW11bVJlc2VydmVkWm9uZVNpemUuaCIKICNpbmNsdWRlICJNb2R1bGVQ
cm9ncmFtQ29kZUJsb2NrLmgiCiAjaW5jbHVkZSAiTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUuaCIK
KyNpbmNsdWRlICJOYXRpdmVFcnJvckNvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAiTmF0aXZlRXhl
Y3V0YWJsZS5oIgogI2luY2x1ZGUgIk5hdGl2ZVN0ZEZ1bmN0aW9uQ2VsbC5oIgogI2luY2x1ZGUg
Ik5vZGVzLmgiCisjaW5jbHVkZSAiT2JqQ0NhbGxiYWNrRnVuY3Rpb24uaCIKICNpbmNsdWRlICJQ
YXJzZXIuaCIKICNpbmNsdWRlICJQcm9maWxlckRhdGFiYXNlLmgiCiAjaW5jbHVkZSAiUHJvZ3Jh
bUNvZGVCbG9jay5oIgogI2luY2x1ZGUgIlByb2dyYW1FeGVjdXRhYmxlLmgiCiAjaW5jbHVkZSAi
UHJvbWlzZURlZmVycmVkVGltZXIuaCIKICNpbmNsdWRlICJQcm9wZXJ0eU1hcEhhc2hUYWJsZS5o
IgorI2luY2x1ZGUgIlByb3h5UmV2b2tlLmgiCiAjaW5jbHVkZSAiUmVnRXhwQ2FjaGUuaCIKKyNp
bmNsdWRlICJSZWdFeHBDb25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUgIlJlZ0V4cE9iamVjdC5oIgog
I2luY2x1ZGUgIlJlZ2lzdGVyQXRPZmZzZXRMaXN0LmgiCiAjaW5jbHVkZSAiUnVudGltZVR5cGUu
aCIKQEAgLTI1NCwxMSArMjY1LDE0IEBAIFZNOjpWTShWTVR5cGUgdm1UeXBlLCBIZWFwVHlwZSBo
ZWFwVHlwZSkKICAgICAsIGRlc3RydWN0aWJsZU9iamVjdFNwYWNlKCJKU0Rlc3RydWN0aWJsZU9i
amVjdCIsIGhlYXAsIGRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5nZXQoKSwgZmFzdE1h
bGxvY0FsbG9jYXRvci5nZXQoKSkKICAgICAsIGVhZ2VybHlTd2VwdERlc3RydWN0aWJsZU9iamVj
dFNwYWNlKCJFYWdlcmx5IFN3ZXB0IEpTRGVzdHJ1Y3RpYmxlT2JqZWN0IiwgaGVhcCwgZGVzdHJ1
Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmdldCgpLCBmYXN0TWFsbG9jQWxsb2NhdG9yLmdldCgp
KQogICAgICwgc2VnbWVudGVkVmFyaWFibGVPYmplY3RTcGFjZSgiSlNTZWdtZW50ZWRWYXJpYWJs
ZU9iamVjdFNwYWNlIiwgaGVhcCwgc2VnbWVudGVkVmFyaWFibGVPYmplY3RIZWFwQ2VsbFR5cGUu
Z2V0KCksIGZhc3RNYWxsb2NBbGxvY2F0b3IuZ2V0KCkpCisgICAgLCBhcnJheUJ1ZmZlckNvbnN0
cnVjdG9yU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoaGVhcCwgZGVzdHJ1Y3RpYmxlT2JqZWN0SGVh
cENlbGxUeXBlLmdldCgpLCBKU0FycmF5QnVmZmVyQ29uc3RydWN0b3IpCiAgICAgLCBhc3luY0Z1
bmN0aW9uU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoaGVhcCwgY2VsbEpTVmFsdWVPT0JIZWFwQ2Vs
bFR5cGUuZ2V0KCksIEpTQXN5bmNGdW5jdGlvbikKICAgICAsIGFzeW5jR2VuZXJhdG9yRnVuY3Rp
b25TcGFjZSBJU09fU1VCU1BBQ0VfSU5JVChoZWFwLCBjZWxsSlNWYWx1ZU9PQkhlYXBDZWxsVHlw
ZS5nZXQoKSwgSlNBc3luY0dlbmVyYXRvckZ1bmN0aW9uKQogICAgICwgYm91bmRGdW5jdGlvblNw
YWNlIElTT19TVUJTUEFDRV9JTklUKGhlYXAsIGNlbGxKU1ZhbHVlT09CSGVhcENlbGxUeXBlLmdl
dCgpLCBKU0JvdW5kRnVuY3Rpb24pCisgICAgLCBjYWxsYmFja0Z1bmN0aW9uU3BhY2UgSVNPX1NV
QlNQQUNFX0lOSVQoaGVhcCwgZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmdldCgpLCBK
U0NhbGxiYWNrRnVuY3Rpb24pCiAgICAgLCBjdXN0b21HZXR0ZXJTZXR0ZXJGdW5jdGlvblNwYWNl
IElTT19TVUJTUEFDRV9JTklUKGhlYXAsIGNlbGxKU1ZhbHVlT09CSGVhcENlbGxUeXBlLmdldCgp
LCBKU0N1c3RvbUdldHRlclNldHRlckZ1bmN0aW9uKQogICAgICwgZGlyZWN0RXZhbEV4ZWN1dGFi
bGVTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVChoZWFwLCBkZXN0cnVjdGlibGVDZWxsSGVhcENlbGxU
eXBlLmdldCgpLCBEaXJlY3RFdmFsRXhlY3V0YWJsZSkKKyAgICAsIGVycm9yQ29uc3RydWN0b3JT
cGFjZSBJU09fU1VCU1BBQ0VfSU5JVChoZWFwLCBkZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5
cGUuZ2V0KCksIEVycm9yQ29uc3RydWN0b3IpCiAgICAgLCBleGVjdXRhYmxlVG9Db2RlQmxvY2tF
ZGdlU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoaGVhcCwgY2VsbERhbmdlcm91c0JpdHNIZWFwQ2Vs
bFR5cGUuZ2V0KCksIEV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2UpCiAgICAgLCBmdW5jdGlvbkV4
ZWN1dGFibGVTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVChoZWFwLCBkZXN0cnVjdGlibGVDZWxsSGVh
cENlbGxUeXBlLmdldCgpLCBGdW5jdGlvbkV4ZWN1dGFibGUpCiAgICAgLCBmdW5jdGlvblNwYWNl
IElTT19TVUJTUEFDRV9JTklUKGhlYXAsIGNlbGxKU1ZhbHVlT09CSGVhcENlbGxUeXBlLmdldCgp
LCBKU0Z1bmN0aW9uKQpAQCAtMjY2LDExICsyODAsMjQgQEAgVk06OlZNKFZNVHlwZSB2bVR5cGUs
IEhlYXBUeXBlIGhlYXBUeXBlKQogICAgICwgaW5kaXJlY3RFdmFsRXhlY3V0YWJsZVNwYWNlIElT
T19TVUJTUEFDRV9JTklUKGhlYXAsIGRlc3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCks
IEluZGlyZWN0RXZhbEV4ZWN1dGFibGUpCiAgICAgLCBpbmZlcnJlZFR5cGVTcGFjZSBJU09fU1VC
U1BBQ0VfSU5JVChoZWFwLCBkZXN0cnVjdGlibGVDZWxsSGVhcENlbGxUeXBlLmdldCgpLCBJbmZl
cnJlZFR5cGUpCiAgICAgLCBpbmZlcnJlZFZhbHVlU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoaGVh
cCwgZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgSW5mZXJyZWRWYWx1ZSkKKyAg
ICAsIGludGVybmFsRnVuY3Rpb25TcGFjZSBJU09fU1VCU1BBQ0VfSU5JVChoZWFwLCBkZXN0cnVj
dGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuZ2V0KCksIEludGVybmFsRnVuY3Rpb24pCisjaWYgRU5B
QkxFKElOVEwpCisgICAgLCBpbnRsQ29sbGF0b3JDb25zdHJ1Y3RvclNwYWNlIElTT19TVUJTUEFD
RV9JTklUKGhlYXAsIGRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5nZXQoKSwgSW50bENv
bGxhdG9yQ29uc3RydWN0b3IpCisgICAgLCBpbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3RvclNw
YWNlIElTT19TVUJTUEFDRV9JTklUKGhlYXAsIGRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlw
ZS5nZXQoKSwgSW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3IpCisgICAgLCBpbnRsTnVtYmVy
Rm9ybWF0Q29uc3RydWN0b3JTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVChoZWFwLCBkZXN0cnVjdGli
bGVPYmplY3RIZWFwQ2VsbFR5cGUuZ2V0KCksIEludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3RvcikK
KyNlbmRpZgogICAgICwgbW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGVTcGFjZSBJU09fU1VCU1BBQ0Vf
SU5JVChoZWFwLCBkZXN0cnVjdGlibGVDZWxsSGVhcENlbGxUeXBlLmdldCgpLCBNb2R1bGVQcm9n
cmFtRXhlY3V0YWJsZSkKKyAgICAsIG5hdGl2ZUVycm9yQ29uc3RydWN0b3JTcGFjZSBJU09fU1VC
U1BBQ0VfSU5JVChoZWFwLCBkZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuZ2V0KCksIE5h
dGl2ZUVycm9yQ29uc3RydWN0b3IpCiAgICAgLCBuYXRpdmVFeGVjdXRhYmxlU3BhY2UgSVNPX1NV
QlNQQUNFX0lOSVQoaGVhcCwgZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgTmF0
aXZlRXhlY3V0YWJsZSkKICAgICAsIG5hdGl2ZVN0ZEZ1bmN0aW9uU3BhY2UgSVNPX1NVQlNQQUNF
X0lOSVQoaGVhcCwgY2VsbEpTVmFsdWVPT0JIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTTmF0aXZlU3Rk
RnVuY3Rpb24pCisjaWYgSlNDX09CSkNfQVBJX0VOQUJMRUQKKyAgICAsIG9iakNDYWxsYmFja0Z1
bmN0aW9uU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoaGVhcCwgZGVzdHJ1Y3RpYmxlT2JqZWN0SGVh
cENlbGxUeXBlLmdldCgpLCBPYmpDQ2FsbGJhY2tGdW5jdGlvbikKKyNlbmRpZgogICAgICwgcHJv
Z3JhbUV4ZWN1dGFibGVTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVChoZWFwLCBkZXN0cnVjdGlibGVD
ZWxsSGVhcENlbGxUeXBlLmdldCgpLCBQcm9ncmFtRXhlY3V0YWJsZSkKICAgICAsIHByb3BlcnR5
VGFibGVTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVChoZWFwLCBkZXN0cnVjdGlibGVDZWxsSGVhcENl
bGxUeXBlLmdldCgpLCBQcm9wZXJ0eVRhYmxlKQorICAgICwgcHJveHlSZXZva2VTcGFjZSBJU09f
U1VCU1BBQ0VfSU5JVChoZWFwLCBkZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuZ2V0KCks
IFByb3h5UmV2b2tlKQorICAgICwgcmVnRXhwQ29uc3RydWN0b3JTcGFjZSBJU09fU1VCU1BBQ0Vf
SU5JVChoZWFwLCBkZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuZ2V0KCksIFJlZ0V4cENv
bnN0cnVjdG9yKQorICAgICwgc3RyaWN0TW9kZVR5cGVFcnJvckZ1bmN0aW9uU3BhY2UgSVNPX1NV
QlNQQUNFX0lOSVQoaGVhcCwgZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmdldCgpLCBT
dHJpY3RNb2RlVHlwZUVycm9yRnVuY3Rpb24pCiAgICAgLCBzdHJ1Y3R1cmVSYXJlRGF0YVNwYWNl
IElTT19TVUJTUEFDRV9JTklUKGhlYXAsIGRlc3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUuZ2V0
KCksIFN0cnVjdHVyZVJhcmVEYXRhKQogICAgICwgc3RydWN0dXJlU3BhY2UgSVNPX1NVQlNQQUNF
X0lOSVQoaGVhcCwgZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgU3RydWN0dXJl
KQogICAgICwgd2Vha1NldFNwYWNlIElTT19TVUJTUEFDRV9JTklUKGhlYXAsIGRlc3RydWN0aWJs
ZU9iamVjdEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNXZWFrU2V0KQpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvVk0uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9WTS5oCShyZXZpc2lvbiAyMzA4MTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9WTS5oCSh3b3JraW5nIGNvcHkpCkBAIC04MCw2ICs4MCwxNiBAQAogI2luY2x1
ZGUgPHd0Zi9TdGFja1RyYWNlLmg+CiAjZW5kaWYKIAorLy8gRW5hYmxlIHRoZSBPYmplY3RpdmUt
QyBBUEkgZm9yIHBsYXRmb3JtcyB3aXRoIGEgbW9kZXJuIHJ1bnRpbWUuIFRoaXMgaGFzIHRvIG1h
dGNoIGV4YWN0bHkgd2hhdCB3ZQorLy8gaGF2ZSBpbiBKU0Jhc2UuaC4KKyNpZiAhZGVmaW5lZChK
U0NfT0JKQ19BUElfRU5BQkxFRCkKKyNpZiAoZGVmaW5lZChfX2NsYW5nX18pICYmIGRlZmluZWQo
X19BUFBMRV9fKSAmJiAoKGRlZmluZWQoX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCkg
JiYgIWRlZmluZWQoX19pMzg2X18pKSB8fCAoZGVmaW5lZChUQVJHRVRfT1NfSVBIT05FKSAmJiBU
QVJHRVRfT1NfSVBIT05FKSkpCisjZGVmaW5lIEpTQ19PQkpDX0FQSV9FTkFCTEVEIDEKKyNlbHNl
CisjZGVmaW5lIEpTQ19PQkpDX0FQSV9FTkFCTEVEIDAKKyNlbmRpZgorI2VuZGlmCisKIG5hbWVz
cGFjZSBXVEYgewogY2xhc3MgU2ltcGxlU3RhdHM7CiB9IC8vIG5hbWVzcGFjZSBXVEYKQEAgLTMz
NywxMSArMzQ3LDE0IEBAIHB1YmxpYzoKICAgICBDb21wbGV0ZVN1YnNwYWNlIGVhZ2VybHlTd2Vw
dERlc3RydWN0aWJsZU9iamVjdFNwYWNlOwogICAgIENvbXBsZXRlU3Vic3BhY2Ugc2VnbWVudGVk
VmFyaWFibGVPYmplY3RTcGFjZTsKICAgICAKKyAgICBJc29TdWJzcGFjZSBhcnJheUJ1ZmZlckNv
bnN0cnVjdG9yU3BhY2U7CiAgICAgSXNvU3Vic3BhY2UgYXN5bmNGdW5jdGlvblNwYWNlOwogICAg
IElzb1N1YnNwYWNlIGFzeW5jR2VuZXJhdG9yRnVuY3Rpb25TcGFjZTsKICAgICBJc29TdWJzcGFj
ZSBib3VuZEZ1bmN0aW9uU3BhY2U7CisgICAgSXNvU3Vic3BhY2UgY2FsbGJhY2tGdW5jdGlvblNw
YWNlOwogICAgIElzb1N1YnNwYWNlIGN1c3RvbUdldHRlclNldHRlckZ1bmN0aW9uU3BhY2U7CiAg
ICAgSXNvU3Vic3BhY2UgZGlyZWN0RXZhbEV4ZWN1dGFibGVTcGFjZTsKKyAgICBJc29TdWJzcGFj
ZSBlcnJvckNvbnN0cnVjdG9yU3BhY2U7CiAgICAgSXNvU3Vic3BhY2UgZXhlY3V0YWJsZVRvQ29k
ZUJsb2NrRWRnZVNwYWNlOwogICAgIElzb1N1YnNwYWNlIGZ1bmN0aW9uRXhlY3V0YWJsZVNwYWNl
OwogICAgIElzb1N1YnNwYWNlIGZ1bmN0aW9uU3BhY2U7CkBAIC0zNDksMTEgKzM2MiwyNCBAQCBw
dWJsaWM6CiAgICAgSXNvU3Vic3BhY2UgaW5kaXJlY3RFdmFsRXhlY3V0YWJsZVNwYWNlOwogICAg
IElzb1N1YnNwYWNlIGluZmVycmVkVHlwZVNwYWNlOwogICAgIElzb1N1YnNwYWNlIGluZmVycmVk
VmFsdWVTcGFjZTsKKyAgICBJc29TdWJzcGFjZSBpbnRlcm5hbEZ1bmN0aW9uU3BhY2U7CisjaWYg
RU5BQkxFKElOVEwpCisgICAgSXNvU3Vic3BhY2UgaW50bENvbGxhdG9yQ29uc3RydWN0b3JTcGFj
ZTsKKyAgICBJc29TdWJzcGFjZSBpbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3RvclNwYWNlOwor
ICAgIElzb1N1YnNwYWNlIGludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3RvclNwYWNlOworI2VuZGlm
CiAgICAgSXNvU3Vic3BhY2UgbW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGVTcGFjZTsKKyAgICBJc29T
dWJzcGFjZSBuYXRpdmVFcnJvckNvbnN0cnVjdG9yU3BhY2U7CiAgICAgSXNvU3Vic3BhY2UgbmF0
aXZlRXhlY3V0YWJsZVNwYWNlOwogICAgIElzb1N1YnNwYWNlIG5hdGl2ZVN0ZEZ1bmN0aW9uU3Bh
Y2U7CisjaWYgSlNDX09CSkNfQVBJX0VOQUJMRUQKKyAgICBJc29TdWJzcGFjZSBvYmpDQ2FsbGJh
Y2tGdW5jdGlvblNwYWNlOworI2VuZGlmCiAgICAgSXNvU3Vic3BhY2UgcHJvZ3JhbUV4ZWN1dGFi
bGVTcGFjZTsKICAgICBJc29TdWJzcGFjZSBwcm9wZXJ0eVRhYmxlU3BhY2U7CisgICAgSXNvU3Vi
c3BhY2UgcHJveHlSZXZva2VTcGFjZTsKKyAgICBJc29TdWJzcGFjZSByZWdFeHBDb25zdHJ1Y3Rv
clNwYWNlOworICAgIElzb1N1YnNwYWNlIHN0cmljdE1vZGVUeXBlRXJyb3JGdW5jdGlvblNwYWNl
OwogICAgIElzb1N1YnNwYWNlIHN0cnVjdHVyZVJhcmVEYXRhU3BhY2U7CiAgICAgSXNvU3Vic3Bh
Y2Ugc3RydWN0dXJlU3BhY2U7CiAgICAgSXNvU3Vic3BhY2Ugd2Vha1NldFNwYWNlOwpJbmRleDog
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwkocmV2aXNpb24gMjMwODEwKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTgtMDQtMTcgIEZpbGlwIFBpemxvICA8
ZnBpemxvQGFwcGxlLmNvbT4KKworICAgICAgICBUaGUgSW50ZXJuYWxGdW5jdGlvbiBoaWVyYXJj
aHkgc2hvdWxkIGJlIGluIElzb1N1YnNwYWNlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg0NzIxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2FhbSBC
YXJhdGkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIGJlY2F1c2Ugbm8gbmV3IGJlaGF2aW9yLgor
CisgICAgICAgICogYmluZGluZ3MvanMvV2ViQ29yZUpTQ2xpZW50RGF0YS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpKU1ZNQ2xpZW50RGF0YTo6SlNWTUNsaWVudERhdGEpOgorICAgICAgICAqIGJp
bmRpbmdzL2pzL1dlYkNvcmVKU0NsaWVudERhdGEuaDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVk1D
bGllbnREYXRhOjpydW50aW1lTWV0aG9kU3BhY2UpOgorICAgICAgICAqIGJyaWRnZS9ydW50aW1l
X21ldGhvZC5jcHA6CisgICAgICAgIChKU0M6OlJ1bnRpbWVNZXRob2Q6OnN1YnNwYWNlRm9ySW1w
bCk6CisgICAgICAgICogYnJpZGdlL3J1bnRpbWVfbWV0aG9kLmg6CisKIDIwMTgtMDQtMTkgIE5h
biBXYW5nICA8bl93YW5nQGFwcGxlLmNvbT4KIAogICAgICAgICBBWDogQU9NOiByZXNwZWN0IHRo
ZSBhY2Nlc3NpYmlsaXR5IHNldHRpbmcgZm9yIGRpc3BhdGNoaW5nIHRoZSBhY2Nlc3NpYmxlIGV2
ZW50cwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV2ViQ29yZUpTQ2xpZW50RGF0
YS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV2ViQ29yZUpT
Q2xpZW50RGF0YS5jcHAJKHJldmlzaW9uIDIzMDgxMCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL1dlYkNvcmVKU0NsaWVudERhdGEuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw2ICsz
NSw3IEBACiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvTWFya2luZ0NvbnN0cmFpbnQuaD4KICNp
bmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TdWJzcGFjZUlubGluZXMuaD4KICNpbmNsdWRlIDxKYXZh
U2NyaXB0Q29yZS9WTS5oPgorI2luY2x1ZGUgInJ1bnRpbWVfbWV0aG9kLmgiCiAjaW5jbHVkZSA8
d3RmL01haW5UaHJlYWQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNDMsNiArNDQsNyBA
QCB1c2luZyBuYW1lc3BhY2UgSlNDOwogSlNWTUNsaWVudERhdGE6OkpTVk1DbGllbnREYXRhKFZN
JiB2bSkKICAgICA6IG1fYnVpbHRpbkZ1bmN0aW9ucyh2bSkKICAgICAsIG1fYnVpbHRpbk5hbWVz
KCZ2bSkKKyAgICAsIG1fcnVudGltZU1ldGhvZFNwYWNlIElTT19TVUJTUEFDRV9JTklUKHZtLmhl
YXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5nZXQoKSwgUnVudGltZU1ldGhv
ZCkKICAgICAsIG1fb3V0cHV0Q29uc3RyYWludFNwYWNlKCJXZWJDb3JlIFdyYXBwZXIgdy8gT3V0
cHV0IENvbnN0cmFpbnQiLCB2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5
cGUuZ2V0KCksIHZtLmZhc3RNYWxsb2NBbGxvY2F0b3IuZ2V0KCkpCiAgICAgLCBtX2dsb2JhbE9i
amVjdE91dHB1dENvbnN0cmFpbnRTcGFjZSgiV2ViQ29yZSBHbG9iYWwgT2JqZWN0IHcvIE91dHB1
dCBDb25zdHJhaW50Iiwgdm0uaGVhcCwgdm0uc2VnbWVudGVkVmFyaWFibGVPYmplY3RIZWFwQ2Vs
bFR5cGUuZ2V0KCksIHZtLmZhc3RNYWxsb2NBbGxvY2F0b3IuZ2V0KCkpCiB7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9XZWJDb3JlSlNDbGllbnREYXRhLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV2ViQ29yZUpTQ2xpZW50RGF0YS5oCShyZXZp
c2lvbiAyMzA4MTApCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9XZWJDb3JlSlNDbGll
bnREYXRhLmgJKHdvcmtpbmcgY29weSkKQEAgLTU5LDYgKzU5LDggQEAgcHVibGljOgogICAgIFdl
YkNvcmVCdWlsdGluTmFtZXMmIGJ1aWx0aW5OYW1lcygpIHsgcmV0dXJuIG1fYnVpbHRpbk5hbWVz
OyB9CiAgICAgSlNCdWlsdGluRnVuY3Rpb25zJiBidWlsdGluRnVuY3Rpb25zKCkgeyByZXR1cm4g
bV9idWlsdGluRnVuY3Rpb25zOyB9CiAgICAgCisgICAgSlNDOjpJc29TdWJzcGFjZSYgcnVudGlt
ZU1ldGhvZFNwYWNlKCkgeyByZXR1cm4gbV9ydW50aW1lTWV0aG9kU3BhY2U7IH0KKyAgICAKICAg
ICBKU0M6OkNvbXBsZXRlU3Vic3BhY2UmIG91dHB1dENvbnN0cmFpbnRTcGFjZSgpIHsgcmV0dXJu
IG1fb3V0cHV0Q29uc3RyYWludFNwYWNlOyB9CiAgICAgSlNDOjpDb21wbGV0ZVN1YnNwYWNlJiBn
bG9iYWxPYmplY3RPdXRwdXRDb25zdHJhaW50U3BhY2UoKSB7IHJldHVybiBtX2dsb2JhbE9iamVj
dE91dHB1dENvbnN0cmFpbnRTcGFjZTsgfQogICAgIApAQCAtNzYsNiArNzgsOCBAQCBwcml2YXRl
OgogICAgIEpTQnVpbHRpbkZ1bmN0aW9ucyBtX2J1aWx0aW5GdW5jdGlvbnM7CiAgICAgV2ViQ29y
ZUJ1aWx0aW5OYW1lcyBtX2J1aWx0aW5OYW1lczsKICAgICAKKyAgICBKU0M6Oklzb1N1YnNwYWNl
IG1fcnVudGltZU1ldGhvZFNwYWNlOworICAgIAogICAgIEpTQzo6Q29tcGxldGVTdWJzcGFjZSBt
X291dHB1dENvbnN0cmFpbnRTcGFjZTsKICAgICBKU0M6OkNvbXBsZXRlU3Vic3BhY2UgbV9nbG9i
YWxPYmplY3RPdXRwdXRDb25zdHJhaW50U3BhY2U7CiB9OwpJbmRleDogU291cmNlL1dlYkNvcmUv
YnJpZGdlL3J1bnRpbWVfbWV0aG9kLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9i
cmlkZ2UvcnVudGltZV9tZXRob2QuY3BwCShyZXZpc2lvbiAyMzA4MTApCisrKyBTb3VyY2UvV2Vi
Q29yZS9icmlkZ2UvcnVudGltZV9tZXRob2QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEs
NSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwMywgMjAwOCwgMjAxNiBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDMtMjAxOCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAg
LTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJKU0RPTUJpbmRpbmcuaCIKICNpbmNsdWRlICJKU0hU
TUxFbGVtZW50LmgiCiAjaW5jbHVkZSAiSlNQbHVnaW5FbGVtZW50RnVuY3Rpb25zLmgiCisjaW5j
bHVkZSAiV2ViQ29yZUpTQ2xpZW50RGF0YS5oIgogI2luY2x1ZGUgInJ1bnRpbWVfb2JqZWN0Lmgi
CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRXJyb3IuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0
Q29yZS9GdW5jdGlvblByb3RvdHlwZS5oPgpAQCAtNzksNiArODAsMTEgQEAgYm9vbCBSdW50aW1l
TWV0aG9kOjpnZXRPd25Qcm9wZXJ0eVNsb3QoSgogICAgIHJldHVybiBJbnRlcm5hbEZ1bmN0aW9u
OjpnZXRPd25Qcm9wZXJ0eVNsb3QodGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCBzbG90
KTsKIH0KIAorSXNvU3Vic3BhY2UqIFJ1bnRpbWVNZXRob2Q6OnN1YnNwYWNlRm9ySW1wbChWTSYg
dm0pCit7CisgICAgcmV0dXJuICZzdGF0aWNfY2FzdDxKU1ZNQ2xpZW50RGF0YSo+KHZtLmNsaWVu
dERhdGEpLT5ydW50aW1lTWV0aG9kU3BhY2UoKTsKK30KKwogc3RhdGljIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgY2FsbFJ1bnRpbWVNZXRob2QoRXhlY1N0YXRlKiBleGVjKQogewogICAg
IFZNJiB2bSA9IGV4ZWMtPnZtKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGlt
ZV9tZXRob2QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9t
ZXRob2QuaAkocmV2aXNpb24gMjMwODEwKQorKysgU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRp
bWVfbWV0aG9kLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJp
Z2h0IChDKSAyMDAzLCAyMDA4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAwMy0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
CiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzcsNiArMzcsMTMgQEAgcHVibGljOgog
ICAgIHR5cGVkZWYgSW50ZXJuYWxGdW5jdGlvbiBCYXNlOwogICAgIHN0YXRpYyBjb25zdCB1bnNp
Z25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgT3ZlcnJpZGVzR2V0
T3duUHJvcGVydHlTbG90IHwgVHlwZU9mU2hvdWxkQ2FsbEdldENhbGxEYXRhOwogCisgICAgdGVt
cGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGU+CisgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFj
ZUZvcihWTSYgdm0pCisgICAgeworICAgICAgICBzdGF0aWNfYXNzZXJ0KHNpemVvZihDZWxsVHlw
ZSkgPT0gc2l6ZW9mKFJ1bnRpbWVNZXRob2QpLCAiUnVudGltZU1ldGhvZCBzdWJjbGFzc2VzIHRo
YXQgYWRkIGZpZWxkcyBuZWVkIHRvIG92ZXJyaWRlIHN1YnNwYWNlRm9yPD4oKSIpOworICAgICAg
ICByZXR1cm4gc3Vic3BhY2VGb3JJbXBsKHZtKTsKKyAgICB9CisgICAgCiAgICAgc3RhdGljIFJ1
bnRpbWVNZXRob2QqIGNyZWF0ZShFeGVjU3RhdGUqLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgY29uc3QgU3RyaW5nJiBuYW1lLCBCaW5kaW5nczo6
TWV0aG9kKiBtZXRob2QpCiAgICAgewogICAgICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZt
KCk7CkBAIC02OCw2ICs3NSw4IEBAIHByb3RlY3RlZDoKIHByaXZhdGU6CiAgICAgc3RhdGljIEVu
Y29kZWRKU1ZhbHVlIGxlbmd0aEdldHRlcihFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSwgUHJv
cGVydHlOYW1lKTsKIAorICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3JJbXBsKFZN
Jik7CisKICAgICBCaW5kaW5nczo6TWV0aG9kKiBtX21ldGhvZDsKIH07CiAKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyMzA4MTApCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwkod29ya2luZyBj
b3B5KQpAQCAtMSwzICsxLDIzIEBACisyMDE4LTA0LTE3ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0Bh
cHBsZS5jb20+CisKKyAgICAgICAgVGhlIEludGVybmFsRnVuY3Rpb24gaGllcmFyY2h5IHNob3Vs
ZCBiZSBpbiBJc29TdWJzcGFjZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE4NDcyMQorCisgICAgICAgIFJldmlld2VkIGJ5IFNhYW0gQmFyYXRpLgor
CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL0pTTlBNZXRob2QuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpKU05QTWV0aG9kOjpzdWJzcGFjZUZvckltcGwpOgorICAgICAgICAq
IFdlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9KU05QTWV0aG9kLmg6CisgICAgICAgIChXZWJL
aXQ6OkpTTlBNZXRob2Q6OmNyZWF0ZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OkpTTlBN
ZXRob2Q6Om5wSWRlbnRpZmllciBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OkpT
TlBNZXRob2Q6OmNyZWF0ZVN0cnVjdHVyZSk6IERlbGV0ZWQuCisgICAgICAgICogV2ViUHJvY2Vz
cy9QbHVnaW5zL05ldHNjYXBlL0pTTlBPYmplY3QuY3BwOgorICAgICAgICAoV2ViS2l0OjpKU05Q
T2JqZWN0OjpzdWJzcGFjZUZvckltcGwpOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9O
ZXRzY2FwZS9KU05QT2JqZWN0Lmg6CisgICAgICAgIChXZWJLaXQ6OkpTTlBPYmplY3Q6OmNyZWF0
ZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OkpTTlBPYmplY3Q6Om5wT2JqZWN0IGNvbnN0
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6SlNOUE9iamVjdDo6Y3JlYXRlU3RydWN0dXJl
KTogRGVsZXRlZC4KKwogMjAxOC0wNC0xOSAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5j
b20+CiAKICAgICAgICAgTmV0d29ya1Byb2Nlc3Mgc2hvdWxkIHVzZSBDU1AvY29udGVudCBibG9j
a2VycyBmb3Igc3luYyBYSFIKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5z
L05ldHNjYXBlL0pTTlBNZXRob2QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL0pTTlBNZXRob2QuY3BwCShyZXZpc2lvbiAyMzA4MTAp
CisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9KU05QTWV0aG9k
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTAsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDEwLTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zMSw2ICszMSw4IEBACiAjaW5jbHVkZSAiSlNOUE9i
amVjdC5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Vycm9yLmg+CiAjaW5jbHVkZSA8SmF2
YVNjcmlwdENvcmUvRnVuY3Rpb25Qcm90b3R5cGUuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29y
ZS9Jc29TdWJzcGFjZVBlclZNLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNEZXN0cnVj
dGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0ds
b2JhbE9iamVjdC5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTT2JqZWN0Lmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9KU0hUTUxFbGVtZW50Lmg+CkBAIC01OSw2ICs2MSwxMiBAQCB2b2lkIEpT
TlBNZXRob2Q6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgCiAgICAgQVNTRVJUKGluaGVyaXRzKHZt
LCBpbmZvKCkpKTsKIH0KIAorSXNvU3Vic3BhY2UqIEpTTlBNZXRob2Q6OnN1YnNwYWNlRm9ySW1w
bChWTSYgdm0pCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPElzb1N1YnNwYWNlUGVyVk0+
IHBlclZNKFtdIChWTSYgdm0pIHsgcmV0dXJuIElTT19TVUJTUEFDRV9QQVJBTUVURVJTKHZtLmRl
c3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNOUE1ldGhvZCk7IH0pOworICAg
IHJldHVybiAmcGVyVk0uZ2V0KCkuZm9yVk0odm0pOworfQorCiBzdGF0aWMgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBjYWxsTWV0aG9kKEV4ZWNTdGF0ZSogZXhlYykKIHsKICAgICBWTSYg
dm0gPSBleGVjLT52bSgpOwpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMv
TmV0c2NhcGUvSlNOUE1ldGhvZC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9QbHVnaW5zL05ldHNjYXBlL0pTTlBNZXRob2QuaAkocmV2aXNpb24gMjMwODEwKQorKysg
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvSlNOUE1ldGhvZC5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAx
OCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKQEAgLTM3LDEwICszNywxNiBAQCB0eXBlZGVmIHZvaWQqIE5QSWRlbnRpZmllcjsK
IG5hbWVzcGFjZSBXZWJLaXQgewogCiAvLyBBIEpTT2JqZWN0IHRoYXQgd3JhcHMgYW4gTlBNZXRo
b2QuCi1jbGFzcyBKU05QTWV0aG9kIDogcHVibGljIEpTQzo6SW50ZXJuYWxGdW5jdGlvbiB7Citj
bGFzcyBKU05QTWV0aG9kIGZpbmFsIDogcHVibGljIEpTQzo6SW50ZXJuYWxGdW5jdGlvbiB7CiBw
dWJsaWM6CiAgICAgdHlwZWRlZiBKU0M6OkludGVybmFsRnVuY3Rpb24gQmFzZTsKIAorICAgIHRl
bXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlPgorICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBz
dWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKKyAgICB7CisgICAgICAgIHJldHVybiBzdWJzcGFjZUZv
ckltcGwodm0pOworICAgIH0KKwogICAgIHN0YXRpYyBKU05QTWV0aG9kKiBjcmVhdGUoSlNDOjpF
eGVjU3RhdGUqIGV4ZWMsIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3Qg
U3RyaW5nJiBuYW1lLCBOUElkZW50aWZpZXIgbnBJZGVudCkKICAgICB7CiAgICAgICAgIEpTQzo6
Vk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwpAQCAtNTcsNyArNjMsOSBAQCBwdWJsaWM6CiBw
cm90ZWN0ZWQ6CiAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihKU0M6OlZNJiwgY29uc3QgU3RyaW5n
JiBuYW1lKTsKIAotcHJpdmF0ZTogICAgCitwcml2YXRlOgorICAgIHN0YXRpYyBKU0M6Oklzb1N1
YnNwYWNlKiBzdWJzcGFjZUZvckltcGwoSlNDOjpWTSYpOworICAgIAogICAgIEpTTlBNZXRob2Qo
SlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6U3RydWN0dXJlKiwgTlBJZGVudGlmaWVyKTsKIAog
ICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBK
U0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUp
CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9KU05QT2Jq
ZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9O
ZXRzY2FwZS9KU05QT2JqZWN0LmNwcAkocmV2aXNpb24gMjMwODEwKQorKysgU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvSlNOUE9iamVjdC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEwLCAyMDE2IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMC0yMDE4IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwpAQCAtMzUsNiArMzUsOCBAQAogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0F1eGlsaWFy
eUJhcnJpZXJJbmxpbmVzLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRXJyb3IuaD4KICNp
bmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9JZGVudGlmaWVySW5saW5lcy5oPgorI2luY2x1ZGUgPEph
dmFTY3JpcHRDb3JlL0lzb1N1YnNwYWNlUGVyVk0uaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29y
ZS9KU0Rlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5oPgogI2luY2x1ZGUgPEphdmFTY3Jp
cHRDb3JlL0pTR2xvYmFsT2JqZWN0Lmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNMb2Nr
Lmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvT2JqZWN0UHJvdG90eXBlLmg+CkBAIC01Mjcs
NiArNTI5LDEyIEBAIEpTT2JqZWN0KiBKU05QT2JqZWN0Ojp0aHJvd0ludmFsaWRBY2Nlc3MKICAg
ICByZXR1cm4gdGhyb3dFeGNlcHRpb24oZXhlYywgc2NvcGUsIGNyZWF0ZVJlZmVyZW5jZUVycm9y
KGV4ZWMsICJUcnlpbmcgdG8gYWNjZXNzIG9iamVjdCBmcm9tIGRlc3Ryb3llZCBwbHVnLWluLiIp
KTsKIH0KIAorSXNvU3Vic3BhY2UqIEpTTlBPYmplY3Q6OnN1YnNwYWNlRm9ySW1wbChWTSYgdm0p
Cit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPElzb1N1YnNwYWNlUGVyVk0+IHBlclZNKFtd
IChWTSYgdm0pIHsgcmV0dXJuIElTT19TVUJTUEFDRV9QQVJBTUVURVJTKHZtLmRlc3RydWN0aWJs
ZU9iamVjdEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNOUE9iamVjdCk7IH0pOworICAgIHJldHVybiAm
cGVyVk0uZ2V0KCkuZm9yVk0odm0pOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI2Vu
ZGlmIC8vIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQpJbmRleDogU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvSlNOUE9iamVjdC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL0pTTlBPYmplY3QuaAkocmV2
aXNpb24gMjMwODEwKQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2Nh
cGUvSlNOUE9iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTAtMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgog
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQxLDExICs0MSwxNyBAQCBjbGFzcyBOUFJ1
bnRpbWVPYmplY3RNYXA7CiAgICAgCiAvLyBKU05QT2JqZWN0IGlzIGEgSlNPYmplY3QgdGhhdCB3
cmFwcyBhbiBOUE9iamVjdC4KIAotY2xhc3MgSlNOUE9iamVjdCA6IHB1YmxpYyBKU0M6OkpTRGVz
dHJ1Y3RpYmxlT2JqZWN0IHsKK2NsYXNzIEpTTlBPYmplY3QgZmluYWwgOiBwdWJsaWMgSlNDOjpK
U0Rlc3RydWN0aWJsZU9iamVjdCB7CiBwdWJsaWM6CiAgICAgdHlwZWRlZiBKU0M6OkpTRGVzdHJ1
Y3RpYmxlT2JqZWN0IEJhc2U7CiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZs
YWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBKU0M6Ok92ZXJyaWRlc0dldE93blByb3BlcnR5
U2xvdCB8IEpTQzo6T3ZlcnJpZGVzR2V0UHJvcGVydHlOYW1lcyB8IEpTQzo6VHlwZU9mU2hvdWxk
Q2FsbEdldENhbGxEYXRhOwogCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGU+CisgICAg
c3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQorICAgIHsK
KyAgICAgICAgcmV0dXJuIHN1YnNwYWNlRm9ySW1wbCh2bSk7CisgICAgfQorCiAgICAgc3RhdGlj
IEpTTlBPYmplY3QqIGNyZWF0ZShKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIE5Q
UnVudGltZU9iamVjdE1hcCogb2JqZWN0TWFwLCBOUE9iamVjdCogbnBPYmplY3QpCiAgICAgewog
ICAgICAgICBKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlID0gY3JlYXRlU3RydWN0dXJlKGdsb2Jh
bE9iamVjdC0+dm0oKSwgZ2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QtPm9iamVjdFByb3RvdHlw
ZSgpKTsKQEAgLTc0LDYgKzgwLDggQEAgcHJvdGVjdGVkOgogICAgIHZvaWQgZmluaXNoQ3JlYXRp
b24oSlNDOjpKU0dsb2JhbE9iamVjdCopOwogCiBwcml2YXRlOgorICAgIHN0YXRpYyBKU0M6Oklz
b1N1YnNwYWNlKiBzdWJzcGFjZUZvckltcGwoSlNDOjpWTSYpOworICAgIAogICAgIEpTTlBPYmpl
Y3QoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6U3RydWN0dXJlKiwgTlBSdW50aW1lT2JqZWN0
TWFwKiwgTlBPYmplY3QqKTsKICAgICAKICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0
ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>