<?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>121934</bug_id>
          
          <creation_ts>2013-09-25 18:43:00 -0700</creation_ts>
          <short_desc>Pass a JSC::VM&amp; to JS bindings object creation functions, rather than a JSC::ExecState*</short_desc>
          <delta_ts>2013-09-26 12:07:45 -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>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Sam Weinig">sam</reporter>
          <assigned_to name="Sam Weinig">sam</assigned_to>
          <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>webkit-ews</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>933306</commentid>
    <comment_count>0</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2013-09-25 18:43:00 -0700</bug_when>
    <thetext>Pass a JSC::VM&amp; to JS bindings object creation functions, rather than a JSC::ExecState*</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>933308</commentid>
    <comment_count>1</comment_count>
      <attachid>212650</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2013-09-25 18:47:10 -0700</bug_when>
    <thetext>Created attachment 212650
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>933309</commentid>
    <comment_count>2</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2013-09-25 18:47:33 -0700</bug_when>
    <thetext>This will probably take a few tries, so first let&apos;s let the bots at it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>933310</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-09-25 18:49:35 -0700</bug_when>
    <thetext>Attachment 212650 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCore/WebCore.exp.in&apos;, u&apos;Source/WebCore/bindings/js/JSDOMBinding.h&apos;, u&apos;Source/WebCore/bindings/js/JSDOMGlobalObject.h&apos;, u&apos;Source/WebCore/bindings/js/JSDOMWindowCustom.cpp&apos;, u&apos;Source/WebCore/bindings/js/JSDocumentCustom.cpp&apos;, u&apos;Source/WebCore/bindings/js/JSImageConstructor.cpp&apos;, u&apos;Source/WebCore/bindings/js/JSImageConstructor.h&apos;, u&apos;Source/WebCore/bindings/js/ScriptWrappable.h&apos;, u&apos;Source/WebCore/bindings/js/ScriptWrappableInlines.h&apos;, u&apos;Source/WebCore/bindings/scripts/CodeGeneratorJS.pm&apos;, u&apos;Source/WebCore/bridge/c/CRuntimeObject.cpp&apos;, u&apos;Source/WebCore/bridge/c/CRuntimeObject.h&apos;, u&apos;Source/WebCore/bridge/c/c_instance.cpp&apos;, u&apos;Source/WebCore/bridge/jsc/BridgeJSC.cpp&apos;, u&apos;Source/WebCore/bridge/objc/ObjCRuntimeObject.h&apos;, u&apos;Source/WebCore/bridge/objc/ObjCRuntimeObject.mm&apos;, u&apos;Source/WebCore/bridge/objc/objc_instance.mm&apos;, u&apos;Source/WebCore/bridge/objc/objc_runtime.h&apos;, u&apos;Source/WebCore/bridge/runtime_array.h&apos;, u&apos;Source/WebCore/bridge/runtime_method.h&apos;, u&apos;Source/WebCore/bridge/runtime_object.cpp&apos;, u&apos;Source/WebCore/bridge/runtime_object.h&apos;, u&apos;Source/WebKit/mac/ChangeLog&apos;, u&apos;Source/WebKit/mac/Plugins/Hosted/ProxyInstance.mm&apos;, u&apos;Source/WebKit/mac/Plugins/Hosted/ProxyRuntimeObject.h&apos;, u&apos;Source/WebKit/mac/Plugins/Hosted/ProxyRuntimeObject.mm&apos;]&quot; exit_code: 1
Source/WebCore/bridge/c/CRuntimeObject.h:35:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Total errors found: 1 in 27 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>933315</commentid>
    <comment_count>4</comment_count>
      <attachid>212650</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-09-25 18:57:24 -0700</bug_when>
    <thetext>Comment on attachment 212650
Patch

Attachment 212650 did not pass qt-ews (qt):
Output: http://webkit-queues.appspot.com/results/2230095</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>933316</commentid>
    <comment_count>5</comment_count>
      <attachid>212650</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-09-25 18:58:41 -0700</bug_when>
    <thetext>Comment on attachment 212650
Patch

Attachment 212650 did not pass qt-wk2-ews (qt-wk2):
Output: http://webkit-queues.appspot.com/results/2202081</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>933325</commentid>
    <comment_count>6</comment_count>
      <attachid>212653</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2013-09-25 19:20:19 -0700</bug_when>
    <thetext>Created attachment 212653
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>933326</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-09-25 19:21:52 -0700</bug_when>
    <thetext>Attachment 212653 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCore/WebCore.exp.in&apos;, u&apos;Source/WebCore/bindings/js/JSDOMBinding.h&apos;, u&apos;Source/WebCore/bindings/js/JSDOMGlobalObject.h&apos;, u&apos;Source/WebCore/bindings/js/JSDOMWindowCustom.cpp&apos;, u&apos;Source/WebCore/bindings/js/JSDocumentCustom.cpp&apos;, u&apos;Source/WebCore/bindings/js/JSImageConstructor.cpp&apos;, u&apos;Source/WebCore/bindings/js/JSImageConstructor.h&apos;, u&apos;Source/WebCore/bindings/js/ScriptWrappable.h&apos;, u&apos;Source/WebCore/bindings/js/ScriptWrappableInlines.h&apos;, u&apos;Source/WebCore/bindings/scripts/CodeGeneratorJS.pm&apos;, u&apos;Source/WebCore/bridge/c/CRuntimeObject.cpp&apos;, u&apos;Source/WebCore/bridge/c/CRuntimeObject.h&apos;, u&apos;Source/WebCore/bridge/c/c_instance.cpp&apos;, u&apos;Source/WebCore/bridge/jsc/BridgeJSC.cpp&apos;, u&apos;Source/WebCore/bridge/objc/ObjCRuntimeObject.h&apos;, u&apos;Source/WebCore/bridge/objc/ObjCRuntimeObject.mm&apos;, u&apos;Source/WebCore/bridge/objc/objc_instance.mm&apos;, u&apos;Source/WebCore/bridge/objc/objc_runtime.h&apos;, u&apos;Source/WebCore/bridge/qt/qt_instance.cpp&apos;, u&apos;Source/WebCore/bridge/runtime_array.h&apos;, u&apos;Source/WebCore/bridge/runtime_method.h&apos;, u&apos;Source/WebCore/bridge/runtime_object.cpp&apos;, u&apos;Source/WebCore/bridge/runtime_object.h&apos;, u&apos;Source/WebKit/mac/ChangeLog&apos;, u&apos;Source/WebKit/mac/Plugins/Hosted/ProxyInstance.mm&apos;, u&apos;Source/WebKit/mac/Plugins/Hosted/ProxyRuntimeObject.h&apos;, u&apos;Source/WebKit/mac/Plugins/Hosted/ProxyRuntimeObject.mm&apos;]&quot; exit_code: 1
Source/WebCore/bridge/c/CRuntimeObject.h:35:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Total errors found: 1 in 28 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>933327</commentid>
    <comment_count>8</comment_count>
      <attachid>212653</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-09-25 19:32:18 -0700</bug_when>
    <thetext>Comment on attachment 212653
Patch

Attachment 212653 did not pass qt-ews (qt):
Output: http://webkit-queues.appspot.com/results/2165116</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>933328</commentid>
    <comment_count>9</comment_count>
      <attachid>212653</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-09-25 19:33:46 -0700</bug_when>
    <thetext>Comment on attachment 212653
Patch

Attachment 212653 did not pass qt-wk2-ews (qt-wk2):
Output: http://webkit-queues.appspot.com/results/2209115</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>933330</commentid>
    <comment_count>10</comment_count>
      <attachid>212655</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2013-09-25 19:43:58 -0700</bug_when>
    <thetext>Created attachment 212655
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>933331</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-09-25 19:45:10 -0700</bug_when>
    <thetext>Attachment 212655 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCore/WebCore.exp.in&apos;, u&apos;Source/WebCore/bindings/js/JSDOMBinding.h&apos;, u&apos;Source/WebCore/bindings/js/JSDOMGlobalObject.h&apos;, u&apos;Source/WebCore/bindings/js/JSDOMWindowCustom.cpp&apos;, u&apos;Source/WebCore/bindings/js/JSDocumentCustom.cpp&apos;, u&apos;Source/WebCore/bindings/js/JSImageConstructor.cpp&apos;, u&apos;Source/WebCore/bindings/js/JSImageConstructor.h&apos;, u&apos;Source/WebCore/bindings/js/ScriptWrappable.h&apos;, u&apos;Source/WebCore/bindings/js/ScriptWrappableInlines.h&apos;, u&apos;Source/WebCore/bindings/scripts/CodeGeneratorJS.pm&apos;, u&apos;Source/WebCore/bridge/c/CRuntimeObject.cpp&apos;, u&apos;Source/WebCore/bridge/c/CRuntimeObject.h&apos;, u&apos;Source/WebCore/bridge/c/c_instance.cpp&apos;, u&apos;Source/WebCore/bridge/jsc/BridgeJSC.cpp&apos;, u&apos;Source/WebCore/bridge/objc/ObjCRuntimeObject.h&apos;, u&apos;Source/WebCore/bridge/objc/ObjCRuntimeObject.mm&apos;, u&apos;Source/WebCore/bridge/objc/objc_instance.mm&apos;, u&apos;Source/WebCore/bridge/objc/objc_runtime.h&apos;, u&apos;Source/WebCore/bridge/qt/qt_instance.cpp&apos;, u&apos;Source/WebCore/bridge/runtime_array.h&apos;, u&apos;Source/WebCore/bridge/runtime_method.h&apos;, u&apos;Source/WebCore/bridge/runtime_object.cpp&apos;, u&apos;Source/WebCore/bridge/runtime_object.h&apos;, u&apos;Source/WebKit/mac/ChangeLog&apos;, u&apos;Source/WebKit/mac/Plugins/Hosted/ProxyInstance.mm&apos;, u&apos;Source/WebKit/mac/Plugins/Hosted/ProxyRuntimeObject.h&apos;, u&apos;Source/WebKit/mac/Plugins/Hosted/ProxyRuntimeObject.mm&apos;]&quot; exit_code: 1
Source/WebCore/bridge/c/CRuntimeObject.h:35:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Total errors found: 1 in 28 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>933333</commentid>
    <comment_count>12</comment_count>
      <attachid>212655</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2013-09-25 20:13:17 -0700</bug_when>
    <thetext>Comment on attachment 212655
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>933629</commentid>
    <comment_count>13</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2013-09-26 12:07:45 -0700</bug_when>
    <thetext>Committed r156485: &lt;http://trac.webkit.org/changeset/156485&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>212650</attachid>
            <date>2013-09-25 18:47:10 -0700</date>
            <delta_ts>2013-09-25 19:20:11 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-121934-20130925184709.patch</filename>
            <type>text/plain</type>
            <size>43367</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE1NjQ0MCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDY3IEBACisyMDEzLTA5LTI1ICBTYW0gV2Vp
bmlnICA8c2FtQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUGFzcyBhIEpTQzo6Vk0mIHRvIEpTIGJp
bmRpbmdzIG9iamVjdCBjcmVhdGlvbiBmdW5jdGlvbnMsIHJhdGhlciB0aGFuIGEgSlNDOjpFeGVj
U3RhdGUqCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
MjE5MzQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBS
ZWR1Y2UgdW5uZWNlc3NhcnkgbG9hZHMgYnkgcGFzc2luZyB0aGUgSlNDOjpWTSB0byBvYmplY3Qg
Y3JlYXRpb24vYWNjZXNzIGZ1bmN0aW9ucworICAgICAgICB0aGF0IGRvbid0IG5lZWQgdGhlIEV4
ZWNTdGF0ZS4KKworICAgICAgICAqIFdlYkNvcmUuZXhwLmluOgorICAgICAgICAqIGJpbmRpbmdz
L2pzL0pTRE9NQmluZGluZy5oOgorICAgICAgICAoV2ViQ29yZTo6Z2V0RE9NU3RydWN0dXJlKToK
KyAgICAgICAgKFdlYkNvcmU6OmRlcHJlY2F0ZWRHZXRET01TdHJ1Y3R1cmUpOgorICAgICAgICAo
V2ViQ29yZTo6Z2V0RE9NUHJvdG90eXBlKToKKyAgICAgICAgKFdlYkNvcmU6OnNldElubGluZUNh
Y2hlZFdyYXBwZXIpOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlV3JhcHBlcik6CisgICAgICAg
ICogYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuaDoKKyAgICAgICAgKFdlYkNvcmU6Omdl
dERPTUNvbnN0cnVjdG9yKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3Rv
bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVdpbmRvdzo6aW1hZ2UpOgorICAgICAgICAq
IGJpbmRpbmdzL2pzL0pTRG9jdW1lbnRDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNE
b2N1bWVudDo6bG9jYXRpb24pOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTSW1hZ2VDb25zdHJ1
Y3Rvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0ltYWdlQ29uc3RydWN0b3I6OmZpbmlzaENy
ZWF0aW9uKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0ltYWdlQ29uc3RydWN0b3IuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OkpTSW1hZ2VDb25zdHJ1Y3Rvcjo6Y3JlYXRlKToKKyAgICAgICAgKiBi
aW5kaW5ncy9qcy9TY3JpcHRXcmFwcGFibGUuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3Jp
cHRXcmFwcGFibGVJbmxpbmVzLmg6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRXcmFwcGFibGU6
OnNldFdyYXBwZXIpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpT
LnBtOgorICAgICAgICAoR2VuZXJhdGVIZWFkZXIpOgorICAgICAgICAoR2VuZXJhdGVJbXBsZW1l
bnRhdGlvbik6CisgICAgICAgIChHZW5lcmF0ZUNvbnN0cnVjdG9yRGVjbGFyYXRpb24pOgorICAg
ICAgICAoR2VuZXJhdGVDb25zdHJ1Y3RvckhlbHBlck1ldGhvZHMpOgorICAgICAgICAqIGJyaWRn
ZS9jL0NSdW50aW1lT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6OkNSdW50aW1l
T2JqZWN0OjpDUnVudGltZU9iamVjdCk6CisgICAgICAgIChKU0M6OkJpbmRpbmdzOjpDUnVudGlt
ZU9iamVjdDo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAqIGJyaWRnZS9jL0NSdW50aW1lT2Jq
ZWN0Lmg6CisgICAgICAgIChKU0M6OkJpbmRpbmdzOjpDUnVudGltZU9iamVjdDo6Y3JlYXRlKToK
KyAgICAgICAgKiBicmlkZ2UvYy9jX2luc3RhbmNlLmNwcDoKKyAgICAgICAgKEpTQzo6QmluZGlu
Z3M6OkNJbnN0YW5jZTo6bmV3UnVudGltZU9iamVjdCk6CisgICAgICAgICogYnJpZGdlL2pzYy9C
cmlkZ2VKU0MuY3BwOgorICAgICAgICAoSlNDOjpCaW5kaW5nczo6SW5zdGFuY2U6Om5ld1J1bnRp
bWVPYmplY3QpOgorICAgICAgICAqIGJyaWRnZS9vYmpjL09iakNSdW50aW1lT2JqZWN0Lmg6Cisg
ICAgICAgIChKU0M6OkJpbmRpbmdzOjpPYmpDUnVudGltZU9iamVjdDo6Y3JlYXRlKToKKyAgICAg
ICAgKiBicmlkZ2Uvb2JqYy9PYmpDUnVudGltZU9iamVjdC5tbToKKyAgICAgICAgKEpTQzo6Qmlu
ZGluZ3M6Ok9iakNSdW50aW1lT2JqZWN0OjpPYmpDUnVudGltZU9iamVjdCk6CisgICAgICAgIChK
U0M6OkJpbmRpbmdzOjpPYmpDUnVudGltZU9iamVjdDo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAg
ICAqIGJyaWRnZS9vYmpjL29iamNfaW5zdGFuY2UubW06CisgICAgICAgIChPYmpjSW5zdGFuY2U6
Om5ld1J1bnRpbWVPYmplY3QpOgorICAgICAgICAqIGJyaWRnZS9vYmpjL29iamNfcnVudGltZS5o
OgorICAgICAgICAoSlNDOjpCaW5kaW5nczo6T2JqY0ZhbGxiYWNrT2JqZWN0SW1wOjpjcmVhdGVQ
cm90b3R5cGUpOgorICAgICAgICAqIGJyaWRnZS9ydW50aW1lX2FycmF5Lmg6CisgICAgICAgIChK
U0M6OlJ1bnRpbWVBcnJheTo6Y3JlYXRlUHJvdG90eXBlKToKKyAgICAgICAgKiBicmlkZ2UvcnVu
dGltZV9tZXRob2QuaDoKKyAgICAgICAgKEpTQzo6UnVudGltZU1ldGhvZDo6Y3JlYXRlUHJvdG90
eXBlKToKKyAgICAgICAgKiBicmlkZ2UvcnVudGltZV9vYmplY3QuY3BwOgorICAgICAgICAoSlND
OjpCaW5kaW5nczo6UnVudGltZU9iamVjdDo6UnVudGltZU9iamVjdCk6CisgICAgICAgIChKU0M6
OkJpbmRpbmdzOjpSdW50aW1lT2JqZWN0OjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgICogYnJp
ZGdlL3J1bnRpbWVfb2JqZWN0Lmg6CisgICAgICAgIChKU0M6OkJpbmRpbmdzOjpSdW50aW1lT2Jq
ZWN0OjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpCaW5kaW5nczo6UnVudGltZU9iamVjdDo6Y3Jl
YXRlUHJvdG90eXBlKToKKwogMjAxMy0wOS0yNSAgQ29tbWl0IFF1ZXVlICA8Y29tbWl0LXF1ZXVl
QHdlYmtpdC5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjE1NjQzMi4K
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCShyZXZpc2lvbiAxNTY0NDApCisrKyBTb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLmV4cC5pbgkod29ya2luZyBjb3B5KQpAQCAtMjY1NywxNCArMjY1NywxNCBA
QCBfX1pOM0pTQzhCaW5kaW5nczEwUm9vdE9iamVjdEQxRXYKIF9fWk4zSlNDOEJpbmRpbmdzMTNS
dW50aW1lT2JqZWN0MTFnZXRDYWxsRGF0YUVQTlNfNkpTQ2VsbEVSTlNfOENhbGxEYXRhRQogX19a
TjNKU0M4QmluZGluZ3MxM1J1bnRpbWVPYmplY3QxMmRlZmF1bHRWYWx1ZUVQS05TXzhKU09iamVj
dEVQTlNfOUV4ZWNTdGF0ZUVOU18yMlByZWZlcnJlZFByaW1pdGl2ZVR5cGVFCiBfX1pOM0pTQzhC
aW5kaW5nczEzUnVudGltZU9iamVjdDE0ZGVsZXRlUHJvcGVydHlFUE5TXzZKU0NlbGxFUE5TXzlF
eGVjU3RhdGVFTlNfMTJQcm9wZXJ0eU5hbWVFCi1fX1pOM0pTQzhCaW5kaW5nczEzUnVudGltZU9i
amVjdDE0ZmluaXNoQ3JlYXRpb25FUE5TXzE0SlNHbG9iYWxPYmplY3RFCitfX1pOM0pTQzhCaW5k
aW5nczEzUnVudGltZU9iamVjdDE0ZmluaXNoQ3JlYXRpb25FUk5TXzJWTUUKIF9fWk4zSlNDOEJp
bmRpbmdzMTNSdW50aW1lT2JqZWN0MTZnZXRDb25zdHJ1Y3REYXRhRVBOU182SlNDZWxsRVJOU18x
M0NvbnN0cnVjdERhdGFFCiBfX1pOM0pTQzhCaW5kaW5nczEzUnVudGltZU9iamVjdDE4Z2V0T3du
UHJvcGVydHlTbG90RVBOU184SlNPYmplY3RFUE5TXzlFeGVjU3RhdGVFTlNfMTJQcm9wZXJ0eU5h
bWVFUk5TXzEyUHJvcGVydHlTbG90RQogX19aTjNKU0M4QmluZGluZ3MxM1J1bnRpbWVPYmplY3Qx
OWdldE93blByb3BlcnR5TmFtZXNFUE5TXzhKU09iamVjdEVQTlNfOUV4ZWNTdGF0ZUVSTlNfMTdQ
cm9wZXJ0eU5hbWVBcnJheUVOU18xNUVudW1lcmF0aW9uTW9kZUUKIF9fWk4zSlNDOEJpbmRpbmdz
MTNSdW50aW1lT2JqZWN0M3B1dEVQTlNfNkpTQ2VsbEVQTlNfOUV4ZWNTdGF0ZUVOU18xMlByb3Bl
cnR5TmFtZUVOU183SlNWYWx1ZUVSTlNfMTVQdXRQcm9wZXJ0eVNsb3RFCiBfX1pOM0pTQzhCaW5k
aW5nczEzUnVudGltZU9iamVjdDZzX2luZm9FCiBfX1pOM0pTQzhCaW5kaW5nczEzUnVudGltZU9i
amVjdDdkZXN0cm95RVBOU182SlNDZWxsRQotX19aTjNKU0M4QmluZGluZ3MxM1J1bnRpbWVPYmpl
Y3RDMkVQTlNfOUV4ZWNTdGF0ZUVQTlNfMTRKU0dsb2JhbE9iamVjdEVQTlNfOVN0cnVjdHVyZUVO
M1dURjEwUGFzc1JlZlB0cklOUzBfOEluc3RhbmNlRUVFCitfX1pOM0pTQzhCaW5kaW5nczEzUnVu
dGltZU9iamVjdEMyRVJOU18yVk1FUE5TXzlTdHJ1Y3R1cmVFTjNXVEYxMFBhc3NSZWZQdHJJTlMw
XzhJbnN0YW5jZUVFRQogX19aTjNKU0M4QmluZGluZ3M4SW5zdGFuY2UxOWNyZWF0ZVJ1bnRpbWVP
YmplY3RFUE5TXzlFeGVjU3RhdGVFCiBfX1pOM0pTQzhCaW5kaW5nczhJbnN0YW5jZUMyRU4zV1RG
MTBQYXNzUmVmUHRySU5TMF8xMFJvb3RPYmplY3RFRUUKIF9fWk4zSlNDOEJpbmRpbmdzOEluc3Rh
bmNlRDJFdgpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmgJ
KHJldmlzaW9uIDE1NjQ0MCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmlu
ZGluZy5oCSh3b3JraW5nIGNvcHkpCkBAIC05NCwyMiArOTQsMjIgQEAgY2xhc3MgRE9NU3RyaW5n
TGlzdDsKICAgICAgICAgcmV0dXJuIEpTQzo6anNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZXhl
Yy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKTsKICAgICB9CiAKLSAgICB0ZW1wbGF0ZTxjbGFzcyBX
cmFwcGVyQ2xhc3M+IGlubGluZSBKU0M6OlN0cnVjdHVyZSogZ2V0RE9NU3RydWN0dXJlKEpTQzo6
RXhlY1N0YXRlKiBleGVjLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQorICAgIHRl
bXBsYXRlPGNsYXNzIFdyYXBwZXJDbGFzcz4gaW5saW5lIEpTQzo6U3RydWN0dXJlKiBnZXRET01T
dHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiAg
ICAgewogICAgICAgICBpZiAoSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGdldENhY2hlZERP
TVN0cnVjdHVyZShnbG9iYWxPYmplY3QsIFdyYXBwZXJDbGFzczo6aW5mbygpKSkKICAgICAgICAg
ICAgIHJldHVybiBzdHJ1Y3R1cmU7Ci0gICAgICAgIHJldHVybiBjYWNoZURPTVN0cnVjdHVyZShn
bG9iYWxPYmplY3QsIFdyYXBwZXJDbGFzczo6Y3JlYXRlU3RydWN0dXJlKGV4ZWMtPnZtKCksIGds
b2JhbE9iamVjdCwgV3JhcHBlckNsYXNzOjpjcmVhdGVQcm90b3R5cGUoZXhlYywgZ2xvYmFsT2Jq
ZWN0KSksIFdyYXBwZXJDbGFzczo6aW5mbygpKTsKKyAgICAgICAgcmV0dXJuIGNhY2hlRE9NU3Ry
dWN0dXJlKGdsb2JhbE9iamVjdCwgV3JhcHBlckNsYXNzOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIGds
b2JhbE9iamVjdCwgV3JhcHBlckNsYXNzOjpjcmVhdGVQcm90b3R5cGUodm0sIGdsb2JhbE9iamVj
dCkpLCBXcmFwcGVyQ2xhc3M6OmluZm8oKSk7CiAgICAgfQogCiAgICAgdGVtcGxhdGU8Y2xhc3Mg
V3JhcHBlckNsYXNzPiBpbmxpbmUgSlNDOjpTdHJ1Y3R1cmUqIGRlcHJlY2F0ZWRHZXRET01TdHJ1
Y3R1cmUoSlNDOjpFeGVjU3RhdGUqIGV4ZWMpCiAgICAgewogICAgICAgICAvLyBGSVhNRTogVGhp
cyBmdW5jdGlvbiBpcyB3cm9uZy4gIEl0IHVzZXMgdGhlIHdyb25nIGdsb2JhbCBvYmplY3QgZm9y
IGNyZWF0aW5nIHRoZSBwcm90b3R5cGUgc3RydWN0dXJlLgotICAgICAgICByZXR1cm4gZ2V0RE9N
U3RydWN0dXJlPFdyYXBwZXJDbGFzcz4oZXhlYywgZGVwcmVjYXRlZEdsb2JhbE9iamVjdEZvclBy
b3RvdHlwZShleGVjKSk7CisgICAgICAgIHJldHVybiBnZXRET01TdHJ1Y3R1cmU8V3JhcHBlckNs
YXNzPihleGVjLT52bSgpLCBkZXByZWNhdGVkR2xvYmFsT2JqZWN0Rm9yUHJvdG90eXBlKGV4ZWMp
KTsKICAgICB9CiAKLSAgICB0ZW1wbGF0ZTxjbGFzcyBXcmFwcGVyQ2xhc3M+IGlubGluZSBKU0M6
OkpTT2JqZWN0KiBnZXRET01Qcm90b3R5cGUoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIEpTQzo6SlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKKyAgICB0ZW1wbGF0ZTxjbGFzcyBXcmFwcGVyQ2xh
c3M+IGlubGluZSBKU0M6OkpTT2JqZWN0KiBnZXRET01Qcm90b3R5cGUoSlNDOjpWTSYgdm0sIEpT
Qzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKICAgICB7Ci0gICAgICAgIHJldHVybiBK
U0M6OmpzQ2FzdDxKU0M6OkpTT2JqZWN0Kj4oYXNPYmplY3QoZ2V0RE9NU3RydWN0dXJlPFdyYXBw
ZXJDbGFzcz4oZXhlYywgSlNDOjpqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmpl
Y3QpKS0+c3RvcmVkUHJvdG90eXBlKCkpKTsKKyAgICAgICAgcmV0dXJuIEpTQzo6anNDYXN0PEpT
Qzo6SlNPYmplY3QqPihhc09iamVjdChnZXRET01TdHJ1Y3R1cmU8V3JhcHBlckNsYXNzPih2bSwg
SlNDOjpqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QpKS0+c3RvcmVkUHJv
dG90eXBlKCkpKTsKICAgICB9CiAKICAgICBpbmxpbmUgSlNDOjpXZWFrSGFuZGxlT3duZXIqIHdy
YXBwZXJPd25lcihET01XcmFwcGVyV29ybGQqIHdvcmxkLCBKU0M6OkFycmF5QnVmZmVyKikKQEAg
LTE0NCw3ICsxNDQsNyBAQCBjbGFzcyBET01TdHJpbmdMaXN0OwogICAgIHsKICAgICAgICAgaWYg
KCF3b3JsZC0+aXNOb3JtYWwoKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAg
ZG9tT2JqZWN0LT5zZXRXcmFwcGVyKCp3b3JsZC0+dm0oKSwgd3JhcHBlciwgd3JhcHBlck93bmVy
LCBjb250ZXh0KTsKKyAgICAgICAgZG9tT2JqZWN0LT5zZXRXcmFwcGVyKHdyYXBwZXIsIHdyYXBw
ZXJPd25lciwgY29udGV4dCk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIApAQCAtMjAx
LDcgKzIwMSw3IEBAIGNsYXNzIERPTVN0cmluZ0xpc3Q7CiAgICAgewogICAgICAgICBBU1NFUlQo
bm9kZSk7CiAgICAgICAgIEFTU0VSVCghZ2V0Q2FjaGVkV3JhcHBlcihjdXJyZW50V29ybGQoZXhl
YyksIG5vZGUpKTsKLSAgICAgICAgV3JhcHBlckNsYXNzKiB3cmFwcGVyID0gV3JhcHBlckNsYXNz
OjpjcmVhdGUoZ2V0RE9NU3RydWN0dXJlPFdyYXBwZXJDbGFzcz4oZXhlYywgZ2xvYmFsT2JqZWN0
KSwgZ2xvYmFsT2JqZWN0LCBub2RlKTsKKyAgICAgICAgV3JhcHBlckNsYXNzKiB3cmFwcGVyID0g
V3JhcHBlckNsYXNzOjpjcmVhdGUoZ2V0RE9NU3RydWN0dXJlPFdyYXBwZXJDbGFzcz4oZXhlYy0+
dm0oKSwgZ2xvYmFsT2JqZWN0KSwgZ2xvYmFsT2JqZWN0LCBub2RlKTsKICAgICAgICAgLy8gRklY
TUU6IFRoZSBlbnRpcmUgZnVuY3Rpb24gY2FuIGJlIHJlbW92ZWQsIG9uY2Ugd2UgZml4IGNhY2hp
bmcuCiAgICAgICAgIC8vIFRoaXMgZnVuY3Rpb24gaXMgYSBvbmUtb2ZmIGhhY2sgdG8gbWFrZSBO
b2RlcyBjYWNoZSBpbiB0aGUgcmlnaHQgZ2xvYmFsIG9iamVjdC4KICAgICAgICAgY2FjaGVXcmFw
cGVyKGN1cnJlbnRXb3JsZChleGVjKSwgbm9kZSwgd3JhcHBlcik7CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmgJKHJldmlzaW9uIDE1NjQ0
MCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmgJKHdv
cmtpbmcgY29weSkKQEAgLTg2LDE0ICs4NiwxNCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAg
fTsKIAogICAgIHRlbXBsYXRlPGNsYXNzIENvbnN0cnVjdG9yQ2xhc3M+Ci0gICAgaW5saW5lIEpT
Qzo6SlNPYmplY3QqIGdldERPTUNvbnN0cnVjdG9yKEpTQzo6RXhlY1N0YXRlKiBleGVjLCBjb25z
dCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQorICAgIGlubGluZSBKU0M6OkpTT2Jq
ZWN0KiBnZXRET01Db25zdHJ1Y3RvcihKU0M6OlZNJiB2bSwgY29uc3QgSlNET01HbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCkKICAgICB7CiAgICAgICAgIGlmIChKU0M6OkpTT2JqZWN0KiBjb25z
dHJ1Y3RvciA9IGNvbnN0X2Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QpLT5j
b25zdHJ1Y3RvcnMoKS5nZXQoQ29uc3RydWN0b3JDbGFzczo6aW5mbygpKS5nZXQoKSkKICAgICAg
ICAgICAgIHJldHVybiBjb25zdHJ1Y3RvcjsKLSAgICAgICAgSlNDOjpKU09iamVjdCogY29uc3Ry
dWN0b3IgPSBDb25zdHJ1Y3RvckNsYXNzOjpjcmVhdGUoZXhlYywgQ29uc3RydWN0b3JDbGFzczo6
Y3JlYXRlU3RydWN0dXJlKGV4ZWMtPnZtKCksIGNvbnN0X2Nhc3Q8SlNET01HbG9iYWxPYmplY3Qq
PihnbG9iYWxPYmplY3QpLCBnbG9iYWxPYmplY3QtPm9iamVjdFByb3RvdHlwZSgpKSwgY29uc3Rf
Y2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCkpOworICAgICAgICBKU0M6OkpT
T2JqZWN0KiBjb25zdHJ1Y3RvciA9IENvbnN0cnVjdG9yQ2xhc3M6OmNyZWF0ZSh2bSwgQ29uc3Ry
dWN0b3JDbGFzczo6Y3JlYXRlU3RydWN0dXJlKHZtLCBjb25zdF9jYXN0PEpTRE9NR2xvYmFsT2Jq
ZWN0Kj4oZ2xvYmFsT2JqZWN0KSwgZ2xvYmFsT2JqZWN0LT5vYmplY3RQcm90b3R5cGUoKSksIGNv
bnN0X2Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QpKTsKICAgICAgICAgQVNT
RVJUKCFjb25zdF9jYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KS0+Y29uc3Ry
dWN0b3JzKCkuY29udGFpbnMoQ29uc3RydWN0b3JDbGFzczo6aW5mbygpKSk7CiAgICAgICAgIEpT
Qzo6V3JpdGVCYXJyaWVyPEpTQzo6SlNPYmplY3Q+IHRlbXA7Ci0gICAgICAgIGNvbnN0X2Nhc3Q8
SlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QpLT5jb25zdHJ1Y3RvcnMoKS5hZGQoQ29u
c3RydWN0b3JDbGFzczo6aW5mbygpLCB0ZW1wKS5pdGVyYXRvci0+dmFsdWUuc2V0KGV4ZWMtPnZt
KCksIGdsb2JhbE9iamVjdCwgY29uc3RydWN0b3IpOworICAgICAgICBjb25zdF9jYXN0PEpTRE9N
R2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KS0+Y29uc3RydWN0b3JzKCkuYWRkKENvbnN0cnVj
dG9yQ2xhc3M6OmluZm8oKSwgdGVtcCkuaXRlcmF0b3ItPnZhbHVlLnNldCh2bSwgZ2xvYmFsT2Jq
ZWN0LCBjb25zdHJ1Y3Rvcik7CiAgICAgICAgIHJldHVybiBjb25zdHJ1Y3RvcjsKICAgICB9CiAK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3Rv
bS5jcHAJKHJldmlzaW9uIDE1NjQ0MCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
RE9NV2luZG93Q3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDU0LDcgKzQ1NCw3IEBAIEpT
VmFsdWUgSlNET01XaW5kb3c6OmV2ZW50KEV4ZWNTdGF0ZSogZXgKIAogSlNWYWx1ZSBKU0RPTVdp
bmRvdzo6aW1hZ2UoRXhlY1N0YXRlKiBleGVjKSBjb25zdAogewotICAgIHJldHVybiBnZXRET01D
b25zdHJ1Y3RvcjxKU0ltYWdlQ29uc3RydWN0b3I+KGV4ZWMsIHRoaXMpOworICAgIHJldHVybiBn
ZXRET01Db25zdHJ1Y3RvcjxKU0ltYWdlQ29uc3RydWN0b3I+KGV4ZWMtPnZtKCksIHRoaXMpOwog
fQogCiAvLyBDdXN0b20gZnVuY3Rpb25zCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0RvY3VtZW50Q3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0RvY3VtZW50Q3VzdG9tLmNwcAkocmV2aXNpb24gMTU2NDQwKQorKysgU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNEb2N1bWVudEN1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTU5LDcgKzU5LDcgQEAgSlNWYWx1ZSBKU0RvY3VtZW50Ojpsb2NhdGlvbihFeGVjU3RhdGUq
IAogICAgIGlmIChKU09iamVjdCogd3JhcHBlciA9IGdldENhY2hlZFdyYXBwZXIoY3VycmVudFdv
cmxkKGV4ZWMpLCBsb2NhdGlvbikpCiAgICAgICAgIHJldHVybiB3cmFwcGVyOwogCi0gICAgSlNM
b2NhdGlvbioganNMb2NhdGlvbiA9IEpTTG9jYXRpb246OmNyZWF0ZShnZXRET01TdHJ1Y3R1cmU8
SlNMb2NhdGlvbj4oZXhlYywgZ2xvYmFsT2JqZWN0KCkpLCBnbG9iYWxPYmplY3QoKSwgbG9jYXRp
b24pOworICAgIEpTTG9jYXRpb24qIGpzTG9jYXRpb24gPSBKU0xvY2F0aW9uOjpjcmVhdGUoZ2V0
RE9NU3RydWN0dXJlPEpTTG9jYXRpb24+KGV4ZWMtPnZtKCksIGdsb2JhbE9iamVjdCgpKSwgZ2xv
YmFsT2JqZWN0KCksIGxvY2F0aW9uKTsKICAgICBjYWNoZVdyYXBwZXIoY3VycmVudFdvcmxkKGV4
ZWMpLCBsb2NhdGlvbiwganNMb2NhdGlvbik7CiAgICAgcmV0dXJuIGpzTG9jYXRpb247CiB9Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0ltYWdlQ29uc3RydWN0b3IuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSW1hZ2VDb25zdHJ1Y3Rv
ci5jcHAJKHJldmlzaW9uIDE1NjQ0MCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
SW1hZ2VDb25zdHJ1Y3Rvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM5LDExICszOSwxMSBAQCBK
U0ltYWdlQ29uc3RydWN0b3I6OkpTSW1hZ2VDb25zdHJ1Y3RvcihTCiB7CiB9CiAKLXZvaWQgSlNJ
bWFnZUNvbnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlvbihFeGVjU3RhdGUqIGV4ZWMsIEpTRE9NR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCit2b2lkIEpTSW1hZ2VDb25zdHJ1Y3Rvcjo6ZmluaXNo
Q3JlYXRpb24oVk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogewogICAg
IEJhc2U6OmZpbmlzaENyZWF0aW9uKGdsb2JhbE9iamVjdCk7CiAgICAgQVNTRVJUKGluaGVyaXRz
KGluZm8oKSkpOwotICAgIHB1dERpcmVjdChleGVjLT52bSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVz
KCkucHJvdG90eXBlLCBKU0hUTUxJbWFnZUVsZW1lbnRQcm90b3R5cGU6OnNlbGYoZXhlYywgZ2xv
YmFsT2JqZWN0KSwgTm9uZSk7CisgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5w
cm90b3R5cGUsIEpTSFRNTEltYWdlRWxlbWVudFByb3RvdHlwZTo6c2VsZih2bSwgZ2xvYmFsT2Jq
ZWN0KSwgTm9uZSk7CiB9CiAKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNv
bnN0cnVjdEltYWdlKEV4ZWNTdGF0ZSogZXhlYykKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTSW1hZ2VDb25zdHJ1Y3Rvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTSW1hZ2VDb25zdHJ1Y3Rvci5oCShyZXZpc2lvbiAxNTY0NDApCisrKyBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0ltYWdlQ29uc3RydWN0b3IuaAkod29ya2luZyBj
b3B5KQpAQCAtMzAsMTAgKzMwLDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBwdWJsaWM6
CiAgICAgICAgIHR5cGVkZWYgRE9NQ29uc3RydWN0b3JXaXRoRG9jdW1lbnQgQmFzZTsKIAotICAg
ICAgICBzdGF0aWMgSlNJbWFnZUNvbnN0cnVjdG9yKiBjcmVhdGUoSlNDOjpFeGVjU3RhdGUqIGV4
ZWMsIEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QpCisgICAgICAgIHN0YXRpYyBKU0ltYWdlQ29uc3RydWN0b3IqIGNyZWF0ZShKU0M6OlZN
JiB2bSwgSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCkKICAgICAgICAgewotICAgICAgICAgICAgSlNJbWFnZUNvbnN0cnVjdG9yKiBjb25z
dHJ1Y3RvciA9IG5ldyAoTm90TnVsbCwgSlNDOjphbGxvY2F0ZUNlbGw8SlNJbWFnZUNvbnN0cnVj
dG9yPigqZXhlYy0+aGVhcCgpKSkgSlNJbWFnZUNvbnN0cnVjdG9yKHN0cnVjdHVyZSwgZ2xvYmFs
T2JqZWN0KTsKLSAgICAgICAgICAgIGNvbnN0cnVjdG9yLT5maW5pc2hDcmVhdGlvbihleGVjLCBn
bG9iYWxPYmplY3QpOworICAgICAgICAgICAgSlNJbWFnZUNvbnN0cnVjdG9yKiBjb25zdHJ1Y3Rv
ciA9IG5ldyAoTm90TnVsbCwgSlNDOjphbGxvY2F0ZUNlbGw8SlNJbWFnZUNvbnN0cnVjdG9yPih2
bS5oZWFwKSkgSlNJbWFnZUNvbnN0cnVjdG9yKHN0cnVjdHVyZSwgZ2xvYmFsT2JqZWN0KTsKKyAg
ICAgICAgICAgIGNvbnN0cnVjdG9yLT5maW5pc2hDcmVhdGlvbih2bSwgZ2xvYmFsT2JqZWN0KTsK
ICAgICAgICAgICAgIHJldHVybiBjb25zdHJ1Y3RvcjsKICAgICAgICAgfQogCkBAIC00Niw3ICs0
Niw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIEpTSW1h
Z2VDb25zdHJ1Y3RvcihKU0M6OlN0cnVjdHVyZSosIEpTRE9NR2xvYmFsT2JqZWN0Kik7Ci0gICAg
ICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oSlNDOjpFeGVjU3RhdGUqLCBKU0RPTUdsb2JhbE9iamVj
dCopOworICAgICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKEpTQzo6Vk0mLCBKU0RPTUdsb2JhbE9i
amVjdCopOwogICAgICAgICBzdGF0aWMgSlNDOjpDb25zdHJ1Y3RUeXBlIGdldENvbnN0cnVjdERh
dGEoSlNDOjpKU0NlbGwqLCBKU0M6OkNvbnN0cnVjdERhdGEmKTsKICAgICB9OwogCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRXcmFwcGFibGUuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRXcmFwcGFibGUuaAkocmV2aXNpb24g
MTU2NDQwKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0V3JhcHBhYmxlLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTM1LDcgKzM1LDYgQEAKICNpbmNsdWRlIDxoZWFwL1dlYWsuaD4K
IAogbmFtZXNwYWNlIEpTQyB7Ci1jbGFzcyBWTTsKIGNsYXNzIFdlYWtIYW5kbGVPd25lcjsKIH0K
IApAQCAtNDYsNyArNDUsNyBAQCBjbGFzcyBKU0RPTVdyYXBwZXI7CiBjbGFzcyBTY3JpcHRXcmFw
cGFibGUgewogcHVibGljOgogICAgIEpTRE9NV3JhcHBlciogd3JhcHBlcigpIGNvbnN0OwotICAg
IHZvaWQgc2V0V3JhcHBlcihKU0M6OlZNJiwgSlNET01XcmFwcGVyKiwgSlNDOjpXZWFrSGFuZGxl
T3duZXIqLCB2b2lkKik7CisgICAgdm9pZCBzZXRXcmFwcGVyKEpTRE9NV3JhcHBlciosIEpTQzo6
V2Vha0hhbmRsZU93bmVyKiwgdm9pZCopOwogICAgIHZvaWQgY2xlYXJXcmFwcGVyKEpTRE9NV3Jh
cHBlciopOwogCiBwcml2YXRlOgpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2Ny
aXB0V3JhcHBhYmxlSW5saW5lcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL1NjcmlwdFdyYXBwYWJsZUlubGluZXMuaAkocmV2aXNpb24gMTU2NDQwKQorKysgU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0V3JhcHBhYmxlSW5saW5lcy5oCSh3b3JraW5n
IGNvcHkpCkBAIC00Myw3ICs0Myw3IEBAIGlubGluZSBKU0RPTVdyYXBwZXIqIFNjcmlwdFdyYXBw
YWJsZTo6d3IKICAgICByZXR1cm4gbV93cmFwcGVyLmdldCgpOwogfQogCi1pbmxpbmUgdm9pZCBT
Y3JpcHRXcmFwcGFibGU6OnNldFdyYXBwZXIoSlNDOjpWTSYsIEpTRE9NV3JhcHBlciogd3JhcHBl
ciwgSlNDOjpXZWFrSGFuZGxlT3duZXIqIHdyYXBwZXJPd25lciwgdm9pZCogY29udGV4dCkKK2lu
bGluZSB2b2lkIFNjcmlwdFdyYXBwYWJsZTo6c2V0V3JhcHBlcihKU0RPTVdyYXBwZXIqIHdyYXBw
ZXIsIEpTQzo6V2Vha0hhbmRsZU93bmVyKiB3cmFwcGVyT3duZXIsIHZvaWQqIGNvbnRleHQpCiB7
CiAgICAgQVNTRVJUKCFtX3dyYXBwZXIpOwogICAgIG1fd3JhcHBlciA9IEpTQzo6UGFzc1dlYWs8
SlNET01XcmFwcGVyPih3cmFwcGVyLCB3cmFwcGVyT3duZXIsIGNvbnRleHQpOwpJbmRleDogU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0J
KHJldmlzaW9uIDE1NjQ0MCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29k
ZUdlbmVyYXRvckpTLnBtCSh3b3JraW5nIGNvcHkpCkBAIC02NzEsNyArNjcxLDcgQEAgc3ViIEdl
bmVyYXRlSGVhZGVyCiAgICAgfQogCiAgICAgIyBQcm90b3R5cGUKLSAgICBwdXNoKEBoZWFkZXJD
b250ZW50LCAiICAgIHN0YXRpYyBKU0M6OkpTT2JqZWN0KiBjcmVhdGVQcm90b3R5cGUoSlNDOjpF
eGVjU3RhdGUqLCBKU0M6OkpTR2xvYmFsT2JqZWN0Kik7XG4iKSB1bmxlc3MgSXNET01HbG9iYWxP
YmplY3QoJGludGVyZmFjZSk7CisgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICBzdGF0aWMg
SlNDOjpKU09iamVjdCogY3JlYXRlUHJvdG90eXBlKEpTQzo6Vk0mLCBKU0M6OkpTR2xvYmFsT2Jq
ZWN0Kik7XG4iKSB1bmxlc3MgSXNET01HbG9iYWxPYmplY3QoJGludGVyZmFjZSk7CiAKICAgICAk
aGVhZGVyVHJhaWxpbmdJbmNsdWRlc3siJHtjbGFzc05hbWV9Q3VzdG9tLmgifSA9IDEgaWYgJGlu
dGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkpTQ3VzdG9tSGVhZGVyIn07CiAKQEAgLTc4
NSw4ICs3ODUsOCBAQCBzdWIgR2VuZXJhdGVIZWFkZXIKIAogICAgICMgQ29uc3RydWN0b3Igb2Jq
ZWN0IGdldHRlcgogICAgIHVubGVzcyAoJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57
Ik5vSW50ZXJmYWNlT2JqZWN0In0pIHsKLSAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAg
ICBzdGF0aWMgSlNDOjpKU1ZhbHVlIGdldENvbnN0cnVjdG9yKEpTQzo6RXhlY1N0YXRlKiwgSlND
OjpKU0dsb2JhbE9iamVjdCopO1xuIik7Ci0gICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIg
ICAgc3RhdGljIEpTQzo6SlNWYWx1ZSBnZXROYW1lZENvbnN0cnVjdG9yKEpTQzo6RXhlY1N0YXRl
KiwgSlNDOjpKU0dsb2JhbE9iamVjdCopO1xuIikgaWYgJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRy
aWJ1dGVzLT57Ik5hbWVkQ29uc3RydWN0b3IifTsKKyAgICAgICAgcHVzaChAaGVhZGVyQ29udGVu
dCwgIiAgICBzdGF0aWMgSlNDOjpKU1ZhbHVlIGdldENvbnN0cnVjdG9yKEpTQzo6Vk0mLCBKU0M6
OkpTR2xvYmFsT2JqZWN0Kik7XG4iKTsKKyAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAg
ICBzdGF0aWMgSlNDOjpKU1ZhbHVlIGdldE5hbWVkQ29uc3RydWN0b3IoSlNDOjpWTSYsIEpTQzo6
SlNHbG9iYWxPYmplY3QqKTtcbiIpIGlmICRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+
eyJOYW1lZENvbnN0cnVjdG9yIn07CiAgICAgfQogCiAgICAgbXkgJG51bUN1c3RvbUZ1bmN0aW9u
cyA9IDA7CkBAIC05NzEsNyArOTcxLDcgQEAgc3ViIEdlbmVyYXRlSGVhZGVyCiAgICAgcHVzaChA
aGVhZGVyQ29udGVudCwgInB1YmxpYzpcbiIpOwogICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIg
ICAgdHlwZWRlZiBKU0M6OkpTTm9uRmluYWxPYmplY3QgQmFzZTtcbiIpOwogICAgIHVubGVzcyAo
SXNET01HbG9iYWxPYmplY3QoJGludGVyZmFjZSkpIHsKLSAgICAgICAgcHVzaChAaGVhZGVyQ29u
dGVudCwgIiAgICBzdGF0aWMgSlNDOjpKU09iamVjdCogc2VsZihKU0M6OkV4ZWNTdGF0ZSosIEpT
Qzo6SlNHbG9iYWxPYmplY3QqKTtcbiIpOworICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAi
ICAgIHN0YXRpYyBKU0M6OkpTT2JqZWN0KiBzZWxmKEpTQzo6Vk0mLCBKU0M6OkpTR2xvYmFsT2Jq
ZWN0Kik7XG4iKTsKICAgICB9CiAKICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIHN0YXRp
YyAke2NsYXNzTmFtZX1Qcm90b3R5cGUqIGNyZWF0ZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlKVxuIik7CkBA
IC0xNjQ5LDkgKzE2NDksOSBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICAgICBw
dXNoKEBpbXBsQ29udGVudCwgImNvbnN0IENsYXNzSW5mbyAke2NsYXNzTmFtZX1Qcm90b3R5cGU6
OnNfaW5mbyA9IHsgXCIke3Zpc2libGVJbnRlcmZhY2VOYW1lfVByb3RvdHlwZVwiLCAmQmFzZTo6
c19pbmZvLCAmJHtjbGFzc05hbWV9UHJvdG90eXBlVGFibGUsIDAsIENSRUFURV9NRVRIT0RfVEFC
TEUoJHtjbGFzc05hbWV9UHJvdG90eXBlKSB9O1xuXG4iKTsKICAgICB9CiAgICAgdW5sZXNzIChJ
c0RPTUdsb2JhbE9iamVjdCgkaW50ZXJmYWNlKSkgewotICAgICAgICBwdXNoKEBpbXBsQ29udGVu
dCwgIkpTT2JqZWN0KiAke2NsYXNzTmFtZX1Qcm90b3R5cGU6OnNlbGYoRXhlY1N0YXRlKiBleGVj
LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KVxuIik7CisgICAgICAgIHB1c2goQGltcGxD
b250ZW50LCAiSlNPYmplY3QqICR7Y2xhc3NOYW1lfVByb3RvdHlwZTo6c2VsZihWTSYgdm0sIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpXG4iKTsKICAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsICJ7XG4iKTsKLSAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgcmV0dXJuIGdldERP
TVByb3RvdHlwZTwke2NsYXNzTmFtZX0+KGV4ZWMsIGdsb2JhbE9iamVjdCk7XG4iKTsKKyAgICAg
ICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgcmV0dXJuIGdldERPTVByb3RvdHlwZTwke2NsYXNz
TmFtZX0+KHZtLCBnbG9iYWxPYmplY3QpO1xuIik7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50
LCAifVxuXG4iKTsKICAgICB9CiAKQEAgLTE3NDQsMTMgKzE3NDQsMTMgQEAgc3ViIEdlbmVyYXRl
SW1wbGVtZW50YXRpb24KICAgICB9CiAKICAgICB1bmxlc3MgKElzRE9NR2xvYmFsT2JqZWN0KCRp
bnRlcmZhY2UpKSB7Ci0gICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiSlNPYmplY3QqICR7Y2xh
c3NOYW1lfTo6Y3JlYXRlUHJvdG90eXBlKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdClcbiIpOworICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIkpTT2JqZWN0
KiAke2NsYXNzTmFtZX06OmNyZWF0ZVByb3RvdHlwZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QpXG4iKTsKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ7XG4iKTsKICAg
ICAgICAgaWYgKCRoYXNQYXJlbnQgJiYgJHBhcmVudENsYXNzTmFtZSBuZSAiSlNDOjpET01Ob2Rl
RmlsdGVyIikgewotICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgcmV0dXJuICR7
Y2xhc3NOYW1lfVByb3RvdHlwZTo6Y3JlYXRlKGV4ZWMtPnZtKCksIGdsb2JhbE9iamVjdCwgJHtj
bGFzc05hbWV9UHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUoZXhlYy0+dm0oKSwgZ2xvYmFsT2Jq
ZWN0LCAke3BhcmVudENsYXNzTmFtZX1Qcm90b3R5cGU6OnNlbGYoZXhlYywgZ2xvYmFsT2JqZWN0
KSkpO1xuIik7CisgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICByZXR1cm4gJHtj
bGFzc05hbWV9UHJvdG90eXBlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgJHtjbGFzc05hbWV9
UHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIGdsb2JhbE9iamVjdCwgJHtwYXJlbnRDbGFz
c05hbWV9UHJvdG90eXBlOjpzZWxmKHZtLCBnbG9iYWxPYmplY3QpKSk7XG4iKTsKICAgICAgICAg
fSBlbHNlIHsKICAgICAgICAgICAgIG15ICRwcm90b3R5cGUgPSAkaW50ZXJmYWNlLT5pc0V4Y2Vw
dGlvbiA/ICJlcnJvclByb3RvdHlwZSIgOiAib2JqZWN0UHJvdG90eXBlIjsKLSAgICAgICAgICAg
IHB1c2goQGltcGxDb250ZW50LCAiICAgIHJldHVybiAke2NsYXNzTmFtZX1Qcm90b3R5cGU6OmNy
ZWF0ZShleGVjLT52bSgpLCBnbG9iYWxPYmplY3QsICR7Y2xhc3NOYW1lfVByb3RvdHlwZTo6Y3Jl
YXRlU3RydWN0dXJlKGdsb2JhbE9iamVjdC0+dm0oKSwgZ2xvYmFsT2JqZWN0LCBnbG9iYWxPYmpl
Y3QtPiR7cHJvdG90eXBlfSgpKSk7XG4iKTsKKyAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50
LCAiICAgIHJldHVybiAke2NsYXNzTmFtZX1Qcm90b3R5cGU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2Jq
ZWN0LCAke2NsYXNzTmFtZX1Qcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgZ2xvYmFsT2Jq
ZWN0LCBnbG9iYWxPYmplY3QtPiR7cHJvdG90eXBlfSgpKSk7XG4iKTsKICAgICAgICAgfQogICAg
ICAgICBwdXNoKEBpbXBsQ29udGVudCwgIn1cblxuIik7CiAgICAgfQpAQCAtMTkzNywxMCArMTkz
NywxMCBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICAgICAgICAgICAgICAgICBp
ZiAoJGludGVyZmFjZU5hbWUgZXEgIkRPTVdpbmRvdyIpIHsKICAgICAgICAgICAgICAgICAgICAg
ICAgIG15ICRuYW1lZCA9ICgkY29uc3RydWN0b3JUeXBlID1+IC9OYW1lZCQvKSA/ICJOYW1lZCIg
OiAiIjsKICAgICAgICAgICAgICAgICAgICAgICAgICRjb25zdHJ1Y3RvclR5cGUgPX4gcy9OYW1l
ZCQvLzsKLSAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHJl
dHVybiBKUyIgLiAkY29uc3RydWN0b3JUeXBlIC4gIjo6Z2V0JHtuYW1lZH1Db25zdHJ1Y3Rvcihl
eGVjLCBjYXN0ZWRUaGlzKTtcbiIpOworICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1w
bENvbnRlbnQsICIgICAgcmV0dXJuIEpTIiAuICRjb25zdHJ1Y3RvclR5cGUgLiAiOjpnZXQke25h
bWVkfUNvbnN0cnVjdG9yKGV4ZWMtPnZtKCksIGNhc3RlZFRoaXMpO1xuIik7CiAgICAgICAgICAg
ICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgIEFkZFRvSW1wbEluY2x1
ZGVzKCJKUyIgLiAkY29uc3RydWN0b3JUeXBlIC4gIi5oIiwgJGF0dHJpYnV0ZS0+c2lnbmF0dXJl
LT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ29uZGl0aW9uYWwifSk7Ci0gICAgICAgICAgICAgICAg
ICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHJldHVybiBKUyIgLiAkY29uc3RydWN0b3JU
eXBlIC4gIjo6Z2V0Q29uc3RydWN0b3IoZXhlYywgY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCkp
O1xuIik7CisgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHJl
dHVybiBKUyIgLiAkY29uc3RydWN0b3JUeXBlIC4gIjo6Z2V0Q29uc3RydWN0b3IoZXhlYy0+dm0o
KSwgY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCkpO1xuIik7CiAgICAgICAgICAgICAgICAgICAg
IH0KICAgICAgICAgICAgICAgICB9IGVsc2lmICghJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRl
bmRlZEF0dHJpYnV0ZXMtPnsiR2V0dGVyUmFpc2VzRXhjZXB0aW9uIn0pIHsKICAgICAgICAgICAg
ICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgVU5VU0VEX1BBUkFNKGV4ZWMpO1xuIikg
aWYgISRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkNhbGxXaXRo
In07CkBAIC0yMDQ3LDcgKzIwNDcsNyBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAg
ICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgcmV0dXJuIGpzVW5k
ZWZpbmVkKCk7XG4iKTsKICAgICAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgICAgICBwdXNo
KEBpbXBsQ29udGVudCwgIiAgICByZXR1cm4gJHtjbGFzc05hbWV9OjpnZXRDb25zdHJ1Y3Rvcihl
eGVjLCBkb21PYmplY3QtPmdsb2JhbE9iamVjdCgpKTtcbiIpOworICAgICAgICAgICAgICAgIHB1
c2goQGltcGxDb250ZW50LCAiICAgIHJldHVybiAke2NsYXNzTmFtZX06OmdldENvbnN0cnVjdG9y
KGV4ZWMtPnZtKCksIGRvbU9iamVjdC0+Z2xvYmFsT2JqZWN0KCkpO1xuIik7CiAgICAgICAgICAg
ICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ9XG5cbiIpOwogICAgICAgICAgICAgfQogICAgICAg
ICB9CkBAIC0yMzEyLDEyICsyMzEyLDEyIEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAg
ICAgfQogCiAgICAgaWYgKCEkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiTm9JbnRl
cmZhY2VPYmplY3QifSkgewotICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIkpTVmFsdWUgJHtj
bGFzc05hbWV9OjpnZXRDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QpXG57XG4iKTsKLSAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAg
cmV0dXJuIGdldERPTUNvbnN0cnVjdG9yPCR7Y2xhc3NOYW1lfUNvbnN0cnVjdG9yPihleGVjLCBq
c0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QpKTtcbiIpOworICAgICAgICBw
dXNoKEBpbXBsQ29udGVudCwgIkpTVmFsdWUgJHtjbGFzc05hbWV9OjpnZXRDb25zdHJ1Y3RvcihW
TSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpXG57XG4iKTsKKyAgICAgICAgcHVz
aChAaW1wbENvbnRlbnQsICIgICAgcmV0dXJuIGdldERPTUNvbnN0cnVjdG9yPCR7Y2xhc3NOYW1l
fUNvbnN0cnVjdG9yPih2bSwganNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0
KSk7XG4iKTsKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ9XG5cbiIpOwogICAgICAgICBp
ZiAoJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Ik5hbWVkQ29uc3RydWN0b3IifSkg
ewotICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJKU1ZhbHVlICR7Y2xhc3NOYW1lfTo6
Z2V0TmFtZWRDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QpXG57XG4iKTsKLSAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHJl
dHVybiBnZXRET01Db25zdHJ1Y3Rvcjwke2NsYXNzTmFtZX1OYW1lZENvbnN0cnVjdG9yPihleGVj
LCBqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QpKTtcbiIpOworICAgICAg
ICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJKU1ZhbHVlICR7Y2xhc3NOYW1lfTo6Z2V0TmFtZWRD
b25zdHJ1Y3RvcihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpXG57XG4iKTsK
KyAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHJldHVybiBnZXRET01Db25zdHJ1
Y3Rvcjwke2NsYXNzTmFtZX1OYW1lZENvbnN0cnVjdG9yPih2bSwganNDYXN0PEpTRE9NR2xvYmFs
T2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KSk7XG4iKTsKICAgICAgICAgICAgIHB1c2goQGltcGxDb250
ZW50LCAifVxuXG4iKTsKICAgICAgICAgfQogICAgIH0KQEAgLTM3NDksMTQgKzM3NDksMTQgQEAg
c3ViIEdlbmVyYXRlQ29uc3RydWN0b3JEZWNsYXJhdGlvbgogICAgIHB1c2goQCRvdXRwdXRBcnJh
eSwgImNsYXNzICR7Y29uc3RydWN0b3JDbGFzc05hbWV9IDogcHVibGljIERPTUNvbnN0cnVjdG9y
T2JqZWN0IHtcbiIpOwogICAgIHB1c2goQCRvdXRwdXRBcnJheSwgInByaXZhdGU6XG4iKTsKICAg
ICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgJHtjb25zdHJ1Y3RvckNsYXNzTmFtZX0oSlNDOjpT
dHJ1Y3R1cmUqLCBKU0RPTUdsb2JhbE9iamVjdCopO1xuIik7Ci0gICAgcHVzaChAJG91dHB1dEFy
cmF5LCAiICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oSlNDOjpFeGVjU3RhdGUqLCBKU0RPTUdsb2Jh
bE9iamVjdCopO1xuXG4iKTsKKyAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgdm9pZCBmaW5p
c2hDcmVhdGlvbihKU0M6OlZNJiwgSlNET01HbG9iYWxPYmplY3QqKTtcblxuIik7CiAKICAgICBw
dXNoKEAkb3V0cHV0QXJyYXksICJwdWJsaWM6XG4iKTsKICAgICBwdXNoKEAkb3V0cHV0QXJyYXks
ICIgICAgdHlwZWRlZiBET01Db25zdHJ1Y3Rvck9iamVjdCBCYXNlO1xuIik7Ci0gICAgcHVzaChA
JG91dHB1dEFycmF5LCAiICAgIHN0YXRpYyAkY29uc3RydWN0b3JDbGFzc05hbWUqIGNyZWF0ZShK
U0M6OkV4ZWNTdGF0ZSogZXhlYywgSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01HbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdClcbiIpOworICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAg
ICBzdGF0aWMgJGNvbnN0cnVjdG9yQ2xhc3NOYW1lKiBjcmVhdGUoSlNDOjpWTSYgdm0sIEpTQzo6
U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpXG4i
KTsKICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAge1xuIik7Ci0gICAgcHVzaChAJG91dHB1
dEFycmF5LCAiICAgICAgICAkY29uc3RydWN0b3JDbGFzc05hbWUqIHB0ciA9IG5ldyAoTm90TnVs
bCwgSlNDOjphbGxvY2F0ZUNlbGw8JGNvbnN0cnVjdG9yQ2xhc3NOYW1lPigqZXhlYy0+aGVhcCgp
KSkgJGNvbnN0cnVjdG9yQ2xhc3NOYW1lKHN0cnVjdHVyZSwgZ2xvYmFsT2JqZWN0KTtcbiIpOwot
ICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICAgICAgcHRyLT5maW5pc2hDcmVhdGlvbihleGVj
LCBnbG9iYWxPYmplY3QpO1xuIik7CisgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgICAgICAk
Y29uc3RydWN0b3JDbGFzc05hbWUqIHB0ciA9IG5ldyAoTm90TnVsbCwgSlNDOjphbGxvY2F0ZUNl
bGw8JGNvbnN0cnVjdG9yQ2xhc3NOYW1lPih2bS5oZWFwKSkgJGNvbnN0cnVjdG9yQ2xhc3NOYW1l
KHN0cnVjdHVyZSwgZ2xvYmFsT2JqZWN0KTtcbiIpOworICAgIHB1c2goQCRvdXRwdXRBcnJheSwg
IiAgICAgICAgcHRyLT5maW5pc2hDcmVhdGlvbih2bSwgZ2xvYmFsT2JqZWN0KTtcbiIpOwogICAg
IHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICAgICAgcmV0dXJuIHB0cjtcbiIpOwogICAgIHB1c2go
QCRvdXRwdXRBcnJheSwgIiAgICB9XG5cbiIpOwogCkBAIC0zODAxLDEwICszODAxLDEwIEBAIGNs
YXNzIEpTJHtpbnRlcmZhY2VOYW1lfU5hbWVkQ29uc3RydWN0b3IKIHB1YmxpYzoKICAgICB0eXBl
ZGVmIERPTUNvbnN0cnVjdG9yV2l0aERvY3VtZW50IEJhc2U7CiAKLSAgICBzdGF0aWMgSlMke2lu
dGVyZmFjZU5hbWV9TmFtZWRDb25zdHJ1Y3RvciogY3JlYXRlKEpTQzo6RXhlY1N0YXRlKiBleGVj
LCBKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0KQorICAgIHN0YXRpYyBKUyR7aW50ZXJmYWNlTmFtZX1OYW1lZENvbnN0cnVjdG9yKiBjcmVh
dGUoSlNDOjpWTSYgdm0sIEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTRE9NR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QpCiAgICAgewotICAgICAgICBKUyR7aW50ZXJmYWNlTmFtZX1OYW1l
ZENvbnN0cnVjdG9yKiBjb25zdHJ1Y3RvciA9IG5ldyAoTm90TnVsbCwgSlNDOjphbGxvY2F0ZUNl
bGw8SlMke2ludGVyZmFjZU5hbWV9TmFtZWRDb25zdHJ1Y3Rvcj4oKmV4ZWMtPmhlYXAoKSkpIEpT
JHtpbnRlcmZhY2VOYW1lfU5hbWVkQ29uc3RydWN0b3Ioc3RydWN0dXJlLCBnbG9iYWxPYmplY3Qp
OwotICAgICAgICBjb25zdHJ1Y3Rvci0+ZmluaXNoQ3JlYXRpb24oZXhlYywgZ2xvYmFsT2JqZWN0
KTsKKyAgICAgICAgSlMke2ludGVyZmFjZU5hbWV9TmFtZWRDb25zdHJ1Y3RvciogY29uc3RydWN0
b3IgPSBuZXcgKE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxsPEpTJHtpbnRlcmZhY2VOYW1lfU5h
bWVkQ29uc3RydWN0b3I+KHZtLmhlYXApKSBKUyR7aW50ZXJmYWNlTmFtZX1OYW1lZENvbnN0cnVj
dG9yKHN0cnVjdHVyZSwgZ2xvYmFsT2JqZWN0KTsKKyAgICAgICAgY29uc3RydWN0b3ItPmZpbmlz
aENyZWF0aW9uKHZtLCBnbG9iYWxPYmplY3QpOwogICAgICAgICByZXR1cm4gY29uc3RydWN0b3I7
CiAgICAgfQogCkBAIC0zODE5LDcgKzM4MTksNyBAQCBwcml2YXRlOgogICAgIEpTJHtpbnRlcmZh
Y2VOYW1lfU5hbWVkQ29uc3RydWN0b3IoSlNDOjpTdHJ1Y3R1cmUqLCBKU0RPTUdsb2JhbE9iamVj
dCopOwogICAgIHN0YXRpYyBKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3Ry
dWN0SlMke2ludGVyZmFjZU5hbWV9KEpTQzo6RXhlY1N0YXRlKik7CiAgICAgc3RhdGljIEpTQzo6
Q29uc3RydWN0VHlwZSBnZXRDb25zdHJ1Y3REYXRhKEpTQzo6SlNDZWxsKiwgSlNDOjpDb25zdHJ1
Y3REYXRhJik7Ci0gICAgdm9pZCBmaW5pc2hDcmVhdGlvbihKU0M6OkV4ZWNTdGF0ZSosIEpTRE9N
R2xvYmFsT2JqZWN0Kik7CisgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihKU0M6OlZNJiwgSlNET01H
bG9iYWxPYmplY3QqKTsKIH07CiAKIEVORApAQCAtNDA4OSwyMiArNDA4OSwyMiBAQCBzdWIgR2Vu
ZXJhdGVDb25zdHJ1Y3RvckhlbHBlck1ldGhvZHMKICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5
LCAie1xufVxuXG4iKTsKICAgICB9CiAKLSAgICBwdXNoKEAkb3V0cHV0QXJyYXksICJ2b2lkICR7
Y29uc3RydWN0b3JDbGFzc05hbWV9OjpmaW5pc2hDcmVhdGlvbihFeGVjU3RhdGUqIGV4ZWMsIEpT
RE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpXG4iKTsKKyAgICBwdXNoKEAkb3V0cHV0QXJy
YXksICJ2b2lkICR7Y29uc3RydWN0b3JDbGFzc05hbWV9OjpmaW5pc2hDcmVhdGlvbihWTSYgdm0s
IEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpXG4iKTsKICAgICBwdXNoKEAkb3V0cHV0
QXJyYXksICJ7XG4iKTsKICAgICBpZiAoSXNET01HbG9iYWxPYmplY3QoJGludGVyZmFjZSkpIHsK
LSAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKGV4
ZWMtPnZtKCkpO1xuIik7CisgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBCYXNlOjpm
aW5pc2hDcmVhdGlvbih2bSk7XG4iKTsKICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAg
IEFTU0VSVChpbmhlcml0cyhpbmZvKCkpKTtcbiIpOwotICAgICAgICBwdXNoKEAkb3V0cHV0QXJy
YXksICIgICAgcHV0RGlyZWN0KGV4ZWMtPnZtKCksIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5wcm90
b3R5cGUsIGdsb2JhbE9iamVjdC0+cHJvdG90eXBlKCksIERvbnREZWxldGUgfCBSZWFkT25seSk7
XG4iKTsKKyAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIHB1dERpcmVjdCh2bSwgdm0u
cHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBnbG9iYWxPYmplY3QtPnByb3RvdHlwZSgpLCBEb250
RGVsZXRlIHwgUmVhZE9ubHkpO1xuIik7CiAgICAgfSBlbHNpZiAoJGdlbmVyYXRpbmdOYW1lZENv
bnN0cnVjdG9yKSB7CiAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBCYXNlOjpmaW5p
c2hDcmVhdGlvbihnbG9iYWxPYmplY3QpO1xuIik7CiAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJh
eSwgIiAgICBBU1NFUlQoaW5oZXJpdHMoaW5mbygpKSk7XG4iKTsKLSAgICAgICAgcHVzaChAJG91
dHB1dEFycmF5LCAiICAgIHB1dERpcmVjdChleGVjLT52bSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVz
KCkucHJvdG90eXBlLCAke2NsYXNzTmFtZX1Qcm90b3R5cGU6OnNlbGYoZXhlYywgZ2xvYmFsT2Jq
ZWN0KSwgTm9uZSk7XG4iKTsKKyAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIHB1dERp
cmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCAke2NsYXNzTmFtZX1Qcm90b3R5
cGU6OnNlbGYodm0sIGdsb2JhbE9iamVjdCksIE5vbmUpO1xuIik7CiAgICAgfSBlbHNlIHsKLSAg
ICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKGV4ZWMt
PnZtKCkpO1xuIik7CisgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBCYXNlOjpmaW5p
c2hDcmVhdGlvbih2bSk7XG4iKTsKICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIEFT
U0VSVChpbmhlcml0cyhpbmZvKCkpKTtcbiIpOwotICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXks
ICIgICAgcHV0RGlyZWN0KGV4ZWMtPnZtKCksIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5wcm90b3R5
cGUsICR7cHJvdG9DbGFzc05hbWV9OjpzZWxmKGV4ZWMsIGdsb2JhbE9iamVjdCksIERvbnREZWxl
dGUgfCBSZWFkT25seSk7XG4iKTsKKyAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIHB1
dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCAke3Byb3RvQ2xhc3NOYW1l
fTo6c2VsZih2bSwgZ2xvYmFsT2JqZWN0KSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KTtcbiIpOwog
ICAgIH0KLSAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgcHV0RGlyZWN0KGV4ZWMtPnZtKCks
IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5sZW5ndGgsIGpzTnVtYmVyKCR7bGVhc3RDb25zdHJ1Y3Rv
ckxlbmd0aH0pLCBSZWFkT25seSB8IERvbnREZWxldGUgfCBEb250RW51bSk7XG4iKSBpZiBkZWZp
bmVkICRsZWFzdENvbnN0cnVjdG9yTGVuZ3RoOworICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAg
ICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aCwganNOdW1iZXIoJHtsZWFz
dENvbnN0cnVjdG9yTGVuZ3RofSksIFJlYWRPbmx5IHwgRG9udERlbGV0ZSB8IERvbnRFbnVtKTtc
biIpIGlmIGRlZmluZWQgJGxlYXN0Q29uc3RydWN0b3JMZW5ndGg7CiAgICAgcHVzaChAJG91dHB1
dEFycmF5LCAifVxuXG4iKTsKIAogICAgIGlmICghJGdlbmVyYXRpbmdOYW1lZENvbnN0cnVjdG9y
KSB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9hcnJheS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX2FycmF5LmgJKHJldmlzaW9uIDE1
NjQ0MCkKKysrIFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX2FycmF5LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTY3LDcgKzY3LDcgQEAgcHVibGljOgogCiAgICAgREVDTEFSRV9JTkZPOwogCi0g
ICAgc3RhdGljIEFycmF5UHJvdG90eXBlKiBjcmVhdGVQcm90b3R5cGUoRXhlY1N0YXRlKiwgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKKyAgICBzdGF0aWMgQXJyYXlQcm90b3R5cGUqIGNy
ZWF0ZVByb3RvdHlwZShWTSYsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiAgICAgewog
ICAgICAgICByZXR1cm4gZ2xvYmFsT2JqZWN0LT5hcnJheVByb3RvdHlwZSgpOwogICAgIH0KSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX21ldGhvZC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX21ldGhvZC5oCShyZXZpc2lvbiAxNTY0NDAp
CisrKyBTb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9tZXRob2QuaAkod29ya2luZyBjb3B5
KQpAQCAtNDgsNyArNDgsNyBAQCBwdWJsaWM6CiAKICAgICBERUNMQVJFX0lORk87CiAKLSAgICBz
dGF0aWMgRnVuY3Rpb25Qcm90b3R5cGUqIGNyZWF0ZVByb3RvdHlwZShFeGVjU3RhdGUqLCBKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQorICAgIHN0YXRpYyBGdW5jdGlvblByb3RvdHlwZSog
Y3JlYXRlUHJvdG90eXBlKFZNJiwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKICAgICB7
CiAgICAgICAgIHJldHVybiBnbG9iYWxPYmplY3QtPmZ1bmN0aW9uUHJvdG90eXBlKCk7CiAgICAg
fQpJbmRleDogU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfb2JqZWN0LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9vYmplY3QuY3BwCShyZXZpc2lv
biAxNTY0NDApCisrKyBTb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9vYmplY3QuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0zNywxNSArMzcsMTUgQEAgbmFtZXNwYWNlIEJpbmRpbmdzIHsKIAog
Y29uc3QgQ2xhc3NJbmZvIFJ1bnRpbWVPYmplY3Q6OnNfaW5mbyA9IHsgIlJ1bnRpbWVPYmplY3Qi
LCAmQmFzZTo6c19pbmZvLCAwLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKFJ1bnRpbWVPYmplY3Qp
IH07CiAKLVJ1bnRpbWVPYmplY3Q6OlJ1bnRpbWVPYmplY3QoRXhlY1N0YXRlKiwgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFBhc3NSZWZQdHI8SW5z
dGFuY2U+IGluc3RhbmNlKQotICAgIDogSlNEZXN0cnVjdGlibGVPYmplY3QoZ2xvYmFsT2JqZWN0
LT52bSgpLCBzdHJ1Y3R1cmUpCitSdW50aW1lT2JqZWN0OjpSdW50aW1lT2JqZWN0KFZNJiB2bSwg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFBhc3NSZWZQdHI8SW5zdGFuY2U+IGluc3RhbmNlKQorICAg
IDogSlNEZXN0cnVjdGlibGVPYmplY3Qodm0sIHN0cnVjdHVyZSkKICAgICAsIG1faW5zdGFuY2Uo
aW5zdGFuY2UpCiB7CiB9CiAKLXZvaWQgUnVudGltZU9iamVjdDo6ZmluaXNoQ3JlYXRpb24oSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKK3ZvaWQgUnVudGltZU9iamVjdDo6ZmluaXNoQ3Jl
YXRpb24oVk0mIHZtKQogewotICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKGdsb2JhbE9iamVjdC0+
dm0oKSk7CisgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOwogICAgIEFTU0VSVChpbmhlcml0
cyhpbmZvKCkpKTsKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfb2Jq
ZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfb2JqZWN0
LmgJKHJldmlzaW9uIDE1NjQ0MCkKKysrIFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX29i
amVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNiwxMCArMzYsMTAgQEAgY2xhc3MgUnVudGltZU9i
amVjdCA6IHB1YmxpYyBKU0Rlc3RydWN0aQogcHVibGljOgogICAgIHR5cGVkZWYgSlNEZXN0cnVj
dGlibGVPYmplY3QgQmFzZTsKIAotICAgIHN0YXRpYyBSdW50aW1lT2JqZWN0KiBjcmVhdGUoRXhl
Y1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSwgUGFzc1JlZlB0cjxJbnN0YW5jZT4gaW5zdGFuY2UpCisgICAgc3RhdGljIFJ1bnRp
bWVPYmplY3QqIGNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBQYXNzUmVmUHRy
PEluc3RhbmNlPiBpbnN0YW5jZSkKICAgICB7Ci0gICAgICAgIFJ1bnRpbWVPYmplY3QqIG9iamVj
dCA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPFJ1bnRpbWVPYmplY3Q+KCpleGVjLT5oZWFw
KCkpKSBSdW50aW1lT2JqZWN0KGV4ZWMsIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBpbnN0YW5j
ZSk7Ci0gICAgICAgIG9iamVjdC0+ZmluaXNoQ3JlYXRpb24oZ2xvYmFsT2JqZWN0KTsKKyAgICAg
ICAgUnVudGltZU9iamVjdCogb2JqZWN0ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8UnVu
dGltZU9iamVjdD4odm0uaGVhcCkpIFJ1bnRpbWVPYmplY3Qodm0sIHN0cnVjdHVyZSwgaW5zdGFu
Y2UpOworICAgICAgICBvYmplY3QtPmZpbmlzaENyZWF0aW9uKHZtKTsKICAgICAgICAgcmV0dXJu
IG9iamVjdDsKICAgICB9CiAKQEAgLTYyLDcgKzYyLDcgQEAgcHVibGljOgogCiAgICAgREVDTEFS
RV9JTkZPOwogCi0gICAgc3RhdGljIE9iamVjdFByb3RvdHlwZSogY3JlYXRlUHJvdG90eXBlKEV4
ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCisgICAgc3RhdGljIE9iamVj
dFByb3RvdHlwZSogY3JlYXRlUHJvdG90eXBlKFZNJiwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCkKICAgICB7CiAgICAgICAgIHJldHVybiBnbG9iYWxPYmplY3QtPm9iamVjdFByb3RvdHlw
ZSgpOwogICAgIH0KQEAgLTczLDggKzczLDggQEAgcHVibGljOgogICAgIH0KIAogcHJvdGVjdGVk
OgotICAgIFJ1bnRpbWVPYmplY3QoRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1
cmUqLCBQYXNzUmVmUHRyPEluc3RhbmNlPik7Ci0gICAgdm9pZCBmaW5pc2hDcmVhdGlvbihKU0ds
b2JhbE9iamVjdCopOworICAgIFJ1bnRpbWVPYmplY3QoVk0mLCBTdHJ1Y3R1cmUqLCBQYXNzUmVm
UHRyPEluc3RhbmNlPik7CisgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYpOwogICAgIHN0YXRp
YyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IE92ZXJyaWRlc0dldE93blByb3BlcnR5
U2xvdCB8IE92ZXJyaWRlc0dldFByb3BlcnR5TmFtZXMgfCBCYXNlOjpTdHJ1Y3R1cmVGbGFnczsK
IAogcHJpdmF0ZToKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9jL0NSdW50aW1lT2JqZWN0
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9icmlkZ2UvYy9DUnVudGltZU9iamVj
dC5jcHAJKHJldmlzaW9uIDE1NjQ0MCkKKysrIFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9jL0NSdW50
aW1lT2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzcsMTQgKzM3LDE0IEBAIG5hbWVzcGFj
ZSBCaW5kaW5ncyB7CiAKIGNvbnN0IENsYXNzSW5mbyBDUnVudGltZU9iamVjdDo6c19pbmZvID0g
eyAiQ1J1bnRpbWVPYmplY3QiLCAmUnVudGltZU9iamVjdDo6c19pbmZvLCAwLCAwLCBDUkVBVEVf
TUVUSE9EX1RBQkxFKENSdW50aW1lT2JqZWN0KSB9OwogCi1DUnVudGltZU9iamVjdDo6Q1J1bnRp
bWVPYmplY3QoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUGFzc1JlZlB0cjxDSW5zdGFuY2U+IGluc3RhbmNlKQotICAg
IDogUnVudGltZU9iamVjdChleGVjLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgaW5zdGFuY2Up
CitDUnVudGltZU9iamVjdDo6Q1J1bnRpbWVPYmplY3QoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSwgUGFzc1JlZlB0cjxDSW5zdGFuY2U+IGluc3RhbmNlKQorICAgIDogUnVudGltZU9iamVj
dCh2bSwgc3RydWN0dXJlLCBpbnN0YW5jZSkKIHsKIH0KIAotdm9pZCBDUnVudGltZU9iamVjdDo6
ZmluaXNoQ3JlYXRpb24oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKK3ZvaWQgQ1J1bnRp
bWVPYmplY3Q6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKIHsKLSAgICBCYXNlOjpmaW5pc2hDcmVh
dGlvbihnbG9iYWxPYmplY3QpOworICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKICAgICBB
U1NFUlQoaW5oZXJpdHMoaW5mbygpKSk7CiB9CiAKQEAgLTUzLDcgKzUzLDYgQEAgQ0luc3RhbmNl
KiBDUnVudGltZU9iamVjdDo6Z2V0SW50ZXJuYWxDSQogICAgIHJldHVybiBzdGF0aWNfY2FzdDxD
SW5zdGFuY2UqPihnZXRJbnRlcm5hbEluc3RhbmNlKCkpOwogfQogCi0KIH0KIH0KIApJbmRleDog
U291cmNlL1dlYkNvcmUvYnJpZGdlL2MvQ1J1bnRpbWVPYmplY3QuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9icmlkZ2UvYy9DUnVudGltZU9iamVjdC5oCShyZXZpc2lvbiAxNTY0NDAp
CisrKyBTb3VyY2UvV2ViQ29yZS9icmlkZ2UvYy9DUnVudGltZU9iamVjdC5oCSh3b3JraW5nIGNv
cHkpCkBAIC0zMSw2ICszMSwxMCBAQAogI2luY2x1ZGUgIkpTRE9NQmluZGluZy5oIgogI2luY2x1
ZGUgInJ1bnRpbWVfb2JqZWN0LmgiCiAKK25hbWVzcGFjZSBXZWJDb3JlIHsKKyAgICBjbGFzcyBK
U0RPTUdsb2JhbE9iamVjdDsKK30KKwogbmFtZXNwYWNlIEpTQyB7CiBuYW1lc3BhY2UgQmluZGlu
Z3MgewogCkBAIC00MCwxMyArNDQsMTAgQEAgY2xhc3MgQ1J1bnRpbWVPYmplY3QgOiBwdWJsaWMg
UnVudGltZU9iagogcHVibGljOgogICAgIHR5cGVkZWYgUnVudGltZU9iamVjdCBCYXNlOwogCi0g
ICAgc3RhdGljIENSdW50aW1lT2JqZWN0KiBjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQYXNzUmVmUHRyPENJbnN0YW5jZT4gaW5zdGFuY2UpCisg
ICAgc3RhdGljIENSdW50aW1lT2JqZWN0KiBjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSwgUGFzc1JlZlB0cjxDSW5zdGFuY2U+IGluc3RhbmNlKQogICAgIHsKLSAgICAgICAgLy8g
RklYTUU6IGRlcHJlY2F0ZWRHZXRET01TdHJ1Y3R1cmUgdXNlcyB0aGUgcHJvdG90eXBlIG9mZiBv
ZiB0aGUgd3JvbmcgZ2xvYmFsIG9iamVjdAotICAgICAgICAvLyBXZSBuZWVkIHRvIHBhc3MgaW4g
dGhlIHJpZ2h0IGdsb2JhbCBvYmplY3QgZm9yICJpIi4KLSAgICAgICAgU3RydWN0dXJlKiBkb21T
dHJ1Y3R1cmUgPSBXZWJDb3JlOjpkZXByZWNhdGVkR2V0RE9NU3RydWN0dXJlPENSdW50aW1lT2Jq
ZWN0PihleGVjKTsKLSAgICAgICAgQ1J1bnRpbWVPYmplY3QqIG9iamVjdCA9IG5ldyAoTm90TnVs
bCwgYWxsb2NhdGVDZWxsPENSdW50aW1lT2JqZWN0PigqZXhlYy0+aGVhcCgpKSkgQ1J1bnRpbWVP
YmplY3QoZXhlYywgZ2xvYmFsT2JqZWN0LCBkb21TdHJ1Y3R1cmUsIGluc3RhbmNlKTsKLSAgICAg
ICAgb2JqZWN0LT5maW5pc2hDcmVhdGlvbihnbG9iYWxPYmplY3QpOworICAgICAgICBDUnVudGlt
ZU9iamVjdCogb2JqZWN0ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8Q1J1bnRpbWVPYmpl
Y3Q+KHZtLmhlYXApKSBDUnVudGltZU9iamVjdCh2bSwgc3RydWN0dXJlLCBpbnN0YW5jZSk7Cisg
ICAgICAgIG9iamVjdC0+ZmluaXNoQ3JlYXRpb24odm0pOwogICAgICAgICByZXR1cm4gb2JqZWN0
OwogICAgIH0KIApAQCAtNjAsOCArNjEsOCBAQCBwdWJsaWM6CiAgICAgfQogCiBwcml2YXRlOgot
ICAgIENSdW50aW1lT2JqZWN0KEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJl
KiwgUGFzc1JlZlB0cjxDSW5zdGFuY2U+KTsKLSAgICB2b2lkIGZpbmlzaENyZWF0aW9uKEpTR2xv
YmFsT2JqZWN0Kik7CisgICAgQ1J1bnRpbWVPYmplY3QoVk0mLCBTdHJ1Y3R1cmUqLCBQYXNzUmVm
UHRyPENJbnN0YW5jZT4pOworICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mKTsKIH07CiAKIH0K
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9jL2NfaW5zdGFuY2UuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9jL2NfaW5zdGFuY2UuY3BwCShyZXZpc2lvbiAxNTY0
NDApCisrKyBTb3VyY2UvV2ViQ29yZS9icmlkZ2UvYy9jX2luc3RhbmNlLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtOTIsNyArOTIsOCBAQCBDSW5zdGFuY2U6On5DSW5zdGFuY2UoKQogCiBSdW50aW1l
T2JqZWN0KiBDSW5zdGFuY2U6Om5ld1J1bnRpbWVPYmplY3QoRXhlY1N0YXRlKiBleGVjKQogewot
ICAgIHJldHVybiBDUnVudGltZU9iamVjdDo6Y3JlYXRlKGV4ZWMsIGV4ZWMtPmxleGljYWxHbG9i
YWxPYmplY3QoKSwgdGhpcyk7CisgICAgLy8gRklYTUU6IGRlcHJlY2F0ZWRHZXRET01TdHJ1Y3R1
cmUgdXNlcyB0aGUgcHJvdG90eXBlIG9mZiBvZiB0aGUgd3JvbmcgZ2xvYmFsIG9iamVjdC4KKyAg
ICByZXR1cm4gQ1J1bnRpbWVPYmplY3Q6OmNyZWF0ZShleGVjLT52bSgpLCBXZWJDb3JlOjpkZXBy
ZWNhdGVkR2V0RE9NU3RydWN0dXJlPENSdW50aW1lT2JqZWN0PihleGVjKSwgdGhpcyk7CiB9CiAK
IENsYXNzICpDSW5zdGFuY2U6OmdldENsYXNzKCkgY29uc3QKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2JyaWRnZS9qc2MvQnJpZGdlSlNDLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9i
cmlkZ2UvanNjL0JyaWRnZUpTQy5jcHAJKHJldmlzaW9uIDE1NjQ0MCkKKysrIFNvdXJjZS9XZWJD
b3JlL2JyaWRnZS9qc2MvQnJpZGdlSlNDLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTEsOSArOTEs
OCBAQCBSdW50aW1lT2JqZWN0KiBJbnN0YW5jZTo6bmV3UnVudGltZU9iamVjCiB7CiAgICAgSlNM
b2NrSG9sZGVyIGxvY2soZXhlYyk7CiAKLSAgICAvLyBGSVhNRTogZGVwcmVjYXRlZEdldERPTVN0
cnVjdHVyZSB1c2VzIHRoZSBwcm90b3R5cGUgb2ZmIG9mIHRoZSB3cm9uZyBnbG9iYWwgb2JqZWN0
Ci0gICAgLy8gV2UgbmVlZCB0byBwYXNzIGluIHRoZSByaWdodCBnbG9iYWwgb2JqZWN0IGZvciAi
aSIuCi0gICAgcmV0dXJuIFJ1bnRpbWVPYmplY3Q6OmNyZWF0ZShleGVjLCBleGVjLT5sZXhpY2Fs
R2xvYmFsT2JqZWN0KCksIFdlYkNvcmU6OmRlcHJlY2F0ZWRHZXRET01TdHJ1Y3R1cmU8UnVudGlt
ZU9iamVjdD4oZXhlYyksIHRoaXMpOworICAgIC8vIEZJWE1FOiBkZXByZWNhdGVkR2V0RE9NU3Ry
dWN0dXJlIHVzZXMgdGhlIHByb3RvdHlwZSBvZmYgb2YgdGhlIHdyb25nIGdsb2JhbCBvYmplY3Qu
CisgICAgcmV0dXJuIFJ1bnRpbWVPYmplY3Q6OmNyZWF0ZShleGVjLT52bSgpLCBXZWJDb3JlOjpk
ZXByZWNhdGVkR2V0RE9NU3RydWN0dXJlPFJ1bnRpbWVPYmplY3Q+KGV4ZWMpLCB0aGlzKTsKIH0K
IAogdm9pZCBJbnN0YW5jZTo6d2lsbEludmFsaWRhdGVSdW50aW1lT2JqZWN0KCkKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL09iakNSdW50aW1lT2JqZWN0LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvT2JqQ1J1bnRpbWVPYmplY3QuaAkocmV2aXNp
b24gMTU2NDQwKQorKysgU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvT2JqQ1J1bnRpbWVPYmpl
Y3QuaAkod29ya2luZyBjb3B5KQpAQCAtMzcsMTMgKzM3LDEwIEBAIGNsYXNzIE9iakNSdW50aW1l
T2JqZWN0IDogcHVibGljIFJ1bnRpbWUKIHB1YmxpYzoKICAgICB0eXBlZGVmIFJ1bnRpbWVPYmpl
Y3QgQmFzZTsKIAotICAgIHN0YXRpYyBPYmpDUnVudGltZU9iamVjdCogY3JlYXRlKEV4ZWNTdGF0
ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUGFzc1JlZlB0cjxPYmpjSW5z
dGFuY2U+IGluc3QpCisgICAgc3RhdGljIE9iakNSdW50aW1lT2JqZWN0KiBjcmVhdGUoVk0mIHZt
LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUGFzc1JlZlB0cjxPYmpjSW5zdGFuY2U+IGluc3QpCiAg
ICAgewotICAgICAgICAvLyBGSVhNRTogZGVwcmVjYXRlZEdldERPTVN0cnVjdHVyZSB1c2VzIHRo
ZSBwcm90b3R5cGUgb2ZmIG9mIHRoZSB3cm9uZyBnbG9iYWwgb2JqZWN0Ci0gICAgICAgIC8vIFdl
IG5lZWQgdG8gcGFzcyBpbiB0aGUgcmlnaHQgZ2xvYmFsIG9iamVjdCBmb3IgImkiLgotICAgICAg
ICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IFdlYkNvcmU6OmRlcHJlY2F0ZWRHZXRET01TdHJ1Y3R1
cmU8T2JqQ1J1bnRpbWVPYmplY3Q+KGV4ZWMpOwotICAgICAgICBPYmpDUnVudGltZU9iamVjdCog
b2JqZWN0ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8T2JqQ1J1bnRpbWVPYmplY3Q+KCpl
eGVjLT5oZWFwKCkpKSBPYmpDUnVudGltZU9iamVjdChleGVjLCBnbG9iYWxPYmplY3QsIGluc3Qs
IHN0cnVjdHVyZSk7Ci0gICAgICAgIG9iamVjdC0+ZmluaXNoQ3JlYXRpb24oZ2xvYmFsT2JqZWN0
KTsKKyAgICAgICAgT2JqQ1J1bnRpbWVPYmplY3QqIG9iamVjdCA9IG5ldyAoTm90TnVsbCwgYWxs
b2NhdGVDZWxsPE9iakNSdW50aW1lT2JqZWN0Pih2bS5oZWFwKSkgT2JqQ1J1bnRpbWVPYmplY3Qo
dm0sIHN0cnVjdHVyZSwgaW5zdCk7CisgICAgICAgIG9iamVjdC0+ZmluaXNoQ3JlYXRpb24odm0p
OwogICAgICAgICByZXR1cm4gb2JqZWN0OwogICAgIH0KIApAQCAtNTcsOCArNTQsOCBAQCBwdWJs
aWM6CiAgICAgfQogCiBwcml2YXRlOgotICAgIE9iakNSdW50aW1lT2JqZWN0KEV4ZWNTdGF0ZSos
IEpTR2xvYmFsT2JqZWN0KiwgUGFzc1JlZlB0cjxPYmpjSW5zdGFuY2U+LCBTdHJ1Y3R1cmUqKTsK
LSAgICB2b2lkIGZpbmlzaENyZWF0aW9uKEpTR2xvYmFsT2JqZWN0Kik7CisgICAgT2JqQ1J1bnRp
bWVPYmplY3QoVk0mLCBTdHJ1Y3R1cmUqLCBQYXNzUmVmUHRyPE9iamNJbnN0YW5jZT4pOworICAg
IHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mKTsKIH07CiAKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2JyaWRnZS9vYmpjL09iakNSdW50aW1lT2JqZWN0Lm1tCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2JyaWRnZS9vYmpjL09iakNSdW50aW1lT2JqZWN0Lm1tCShyZXZpc2lvbiAxNTY0NDAp
CisrKyBTb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9PYmpDUnVudGltZU9iamVjdC5tbQkod29y
a2luZyBjb3B5KQpAQCAtMzUsMTQgKzM1LDE0IEBAIG5hbWVzcGFjZSBCaW5kaW5ncyB7CiAKIGNv
bnN0IENsYXNzSW5mbyBPYmpDUnVudGltZU9iamVjdDo6c19pbmZvID0geyAiT2JqQ1J1bnRpbWVP
YmplY3QiLCAmUnVudGltZU9iamVjdDo6c19pbmZvLCAwLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxF
KE9iakNSdW50aW1lT2JqZWN0KSB9OwogCi1PYmpDUnVudGltZU9iamVjdDo6T2JqQ1J1bnRpbWVP
YmplY3QoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQYXNz
UmVmUHRyPE9iamNJbnN0YW5jZT4gaW5zdGFuY2UsIFN0cnVjdHVyZSogc3RydWN0dXJlKQotICAg
IDogUnVudGltZU9iamVjdChleGVjLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgaW5zdGFuY2Up
CitPYmpDUnVudGltZU9iamVjdDo6T2JqQ1J1bnRpbWVPYmplY3QoVk0mIHZtLCBTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSwgUGFzc1JlZlB0cjxPYmpjSW5zdGFuY2U+IGluc3RhbmNlKQorICAgIDogUnVu
dGltZU9iamVjdCh2bSwgc3RydWN0dXJlLCBpbnN0YW5jZSkKIHsKIH0KIAotdm9pZCBPYmpDUnVu
dGltZU9iamVjdDo6ZmluaXNoQ3JlYXRpb24oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkK
K3ZvaWQgT2JqQ1J1bnRpbWVPYmplY3Q6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKIHsKLSAgICBC
YXNlOjpmaW5pc2hDcmVhdGlvbihnbG9iYWxPYmplY3QpOworICAgIEJhc2U6OmZpbmlzaENyZWF0
aW9uKHZtKTsKICAgICBBU1NFUlQoaW5oZXJpdHMoJnNfaW5mbykpOwogfQogCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX2luc3RhbmNlLm1tCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfaW5zdGFuY2UubW0JKHJldmlzaW9uIDE1NjQ0
MCkKKysrIFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfaW5zdGFuY2UubW0JKHdvcmtp
bmcgY29weSkKQEAgLTcyLDcgKzcyLDggQEAgc3RhdGljIE5TTWFwVGFibGUgKmNyZWF0ZUluc3Rh
bmNlV3JhcHBlcgogCiBSdW50aW1lT2JqZWN0KiBPYmpjSW5zdGFuY2U6Om5ld1J1bnRpbWVPYmpl
Y3QoRXhlY1N0YXRlKiBleGVjKQogewotICAgIHJldHVybiBPYmpDUnVudGltZU9iamVjdDo6Y3Jl
YXRlKGV4ZWMsIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSwgdGhpcyk7CisgICAgLy8gRklY
TUU6IGRlcHJlY2F0ZWRHZXRET01TdHJ1Y3R1cmUgdXNlcyB0aGUgcHJvdG90eXBlIG9mZiBvZiB0
aGUgd3JvbmcgZ2xvYmFsIG9iamVjdC4KKyAgICByZXR1cm4gT2JqQ1J1bnRpbWVPYmplY3Q6OmNy
ZWF0ZShleGVjLT52bSgpLCBXZWJDb3JlOjpkZXByZWNhdGVkR2V0RE9NU3RydWN0dXJlPE9iakNS
dW50aW1lT2JqZWN0PihleGVjKSwgdGhpcyk7CiB9CiAKIHZvaWQgT2JqY0luc3RhbmNlOjpzZXRH
bG9iYWxFeGNlcHRpb24oTlNTdHJpbmcqIGV4Y2VwdGlvbiwgSlNHbG9iYWxPYmplY3QqIGV4Y2Vw
dGlvbkVudmlyb25tZW50KQpJbmRleDogU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19y
dW50aW1lLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19y
dW50aW1lLmgJKHJldmlzaW9uIDE1NjQ0MCkKKysrIFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpj
L29iamNfcnVudGltZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDcsNyArMTA3LDcgQEAgcHVibGlj
OgogCiAgICAgY29uc3QgU3RyaW5nJiBwcm9wZXJ0eU5hbWUoKSBjb25zdCB7IHJldHVybiBtX2l0
ZW07IH0KIAotICAgIHN0YXRpYyBPYmplY3RQcm90b3R5cGUqIGNyZWF0ZVByb3RvdHlwZShFeGVj
U3RhdGUqLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQorICAgIHN0YXRpYyBPYmplY3RQ
cm90b3R5cGUqIGNyZWF0ZVByb3RvdHlwZShWTSYsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QpCiAgICAgewogICAgICAgICByZXR1cm4gZ2xvYmFsT2JqZWN0LT5vYmplY3RQcm90b3R5cGUo
KTsKICAgICB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxNTY0NDApCisrKyBTb3Vy
Y2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxOCBAQAor
MjAxMy0wOS0yNSAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQub3JnPgorCisgICAgICAgIFBhc3Mg
YSBKU0M6OlZNJiB0byBKUyBiaW5kaW5ncyBvYmplY3QgY3JlYXRpb24gZnVuY3Rpb25zLCByYXRo
ZXIgdGhhbiBhIEpTQzo6RXhlY1N0YXRlKgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTIxOTM0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBQbHVnaW5zL0hvc3RlZC9Qcm94eUluc3RhbmNlLm1tOgorICAg
ICAgICAoV2ViS2l0OjpQcm94eUluc3RhbmNlOjpuZXdSdW50aW1lT2JqZWN0KToKKyAgICAgICAg
KiBQbHVnaW5zL0hvc3RlZC9Qcm94eVJ1bnRpbWVPYmplY3QuaDoKKyAgICAgICAgKFdlYktpdDo6
UHJveHlSdW50aW1lT2JqZWN0OjpjcmVhdGUpOgorICAgICAgICAqIFBsdWdpbnMvSG9zdGVkL1By
b3h5UnVudGltZU9iamVjdC5tbToKKyAgICAgICAgKFdlYktpdDo6UHJveHlSdW50aW1lT2JqZWN0
OjpQcm94eVJ1bnRpbWVPYmplY3QpOgorICAgICAgICAoV2ViS2l0OjpQcm94eVJ1bnRpbWVPYmpl
Y3Q6OmZpbmlzaENyZWF0aW9uKToKKwogMjAxMy0wOS0yNSAgQ29tbWl0IFF1ZXVlICA8Y29tbWl0
LXF1ZXVlQHdlYmtpdC5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjE1
NjQzMi4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvSG9zdGVkL1Byb3h5SW5zdGFu
Y2UubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9Ib3N0ZWQvUHJv
eHlJbnN0YW5jZS5tbQkocmV2aXNpb24gMTU2NDQwKQorKysgU291cmNlL1dlYktpdC9tYWMvUGx1
Z2lucy9Ib3N0ZWQvUHJveHlJbnN0YW5jZS5tbQkod29ya2luZyBjb3B5KQpAQCAtMTMzLDcgKzEz
Myw4IEBAIFByb3h5SW5zdGFuY2U6On5Qcm94eUluc3RhbmNlKCkKICAgICAKIFJ1bnRpbWVPYmpl
Y3QqIFByb3h5SW5zdGFuY2U6Om5ld1J1bnRpbWVPYmplY3QoRXhlY1N0YXRlKiBleGVjKQogewot
ICAgIHJldHVybiBQcm94eVJ1bnRpbWVPYmplY3Q6OmNyZWF0ZShleGVjLCBleGVjLT5sZXhpY2Fs
R2xvYmFsT2JqZWN0KCksIHRoaXMpOworICAgIC8vIEZJWE1FOiBkZXByZWNhdGVkR2V0RE9NU3Ry
dWN0dXJlIHVzZXMgdGhlIHByb3RvdHlwZSBvZmYgb2YgdGhlIHdyb25nIGdsb2JhbCBvYmplY3Qu
CisgICAgcmV0dXJuIFByb3h5UnVudGltZU9iamVjdDo6Y3JlYXRlKGV4ZWMtPnZtKCksIFdlYkNv
cmU6OmRlcHJlY2F0ZWRHZXRET01TdHJ1Y3R1cmU8UHJveHlSdW50aW1lT2JqZWN0PihleGVjKSwg
dGhpcyk7CiB9CiAKIEpTQzo6QmluZGluZ3M6OkNsYXNzKiBQcm94eUluc3RhbmNlOjpnZXRDbGFz
cygpIGNvbnN0CkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL0hvc3RlZC9Qcm94eVJ1
bnRpbWVPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL0hv
c3RlZC9Qcm94eVJ1bnRpbWVPYmplY3QuaAkocmV2aXNpb24gMTU2NDQwKQorKysgU291cmNlL1dl
YktpdC9tYWMvUGx1Z2lucy9Ib3N0ZWQvUHJveHlSdW50aW1lT2JqZWN0LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTM5LDEzICszOSwxMCBAQCBjbGFzcyBQcm94eVJ1bnRpbWVPYmplY3QgOiBwdWJsaWMg
SlNDOjpCCiBwdWJsaWM6CiAgICAgdHlwZWRlZiBKU0M6OkJpbmRpbmdzOjpSdW50aW1lT2JqZWN0
IEJhc2U7CiAKLSAgICBzdGF0aWMgUHJveHlSdW50aW1lT2JqZWN0KiBjcmVhdGUoSlNDOjpFeGVj
U3RhdGUqIGV4ZWMsIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUGFzc1JlZlB0
cjxQcm94eUluc3RhbmNlPiBpbnN0YW5jZSkKKyAgICBzdGF0aWMgUHJveHlSdW50aW1lT2JqZWN0
KiBjcmVhdGUoSlNDOjpWTSYgdm0sIEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFBhc3NSZWZQ
dHI8UHJveHlJbnN0YW5jZT4gaW5zdGFuY2UpCiAgICAgewotICAgICAgICAvLyBGSVhNRTogZGVw
cmVjYXRlZEdldERPTVN0cnVjdHVyZSB1c2VzIHRoZSBwcm90b3R5cGUgb2ZmIG9mIHRoZSB3cm9u
ZyBnbG9iYWwgb2JqZWN0LgotICAgICAgICAvLyBleGVjLT52bSgpIGlzIGFsc28gbGlrZWx5IHdy
b25nLgotICAgICAgICBKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlID0gV2ViQ29yZTo6ZGVwcmVj
YXRlZEdldERPTVN0cnVjdHVyZTxQcm94eVJ1bnRpbWVPYmplY3Q+KGV4ZWMpOwotICAgICAgICBQ
cm94eVJ1bnRpbWVPYmplY3QqIG9iamVjdCA9IG5ldyAoSlNDOjphbGxvY2F0ZUNlbGw8UHJveHlS
dW50aW1lT2JqZWN0PigqZXhlYy0+aGVhcCgpKSkgUHJveHlSdW50aW1lT2JqZWN0KGV4ZWMsIGds
b2JhbE9iamVjdCwgc3RydWN0dXJlLCBpbnN0YW5jZSk7Ci0gICAgICAgIG9iamVjdC0+ZmluaXNo
Q3JlYXRpb24oZ2xvYmFsT2JqZWN0KTsKKyAgICAgICAgUHJveHlSdW50aW1lT2JqZWN0KiBvYmpl
Y3QgPSBuZXcgKEpTQzo6YWxsb2NhdGVDZWxsPFByb3h5UnVudGltZU9iamVjdD4odm0uaGVhcCkp
IFByb3h5UnVudGltZU9iamVjdCh2bSwgc3RydWN0dXJlLCBpbnN0YW5jZSk7CisgICAgICAgIG9i
amVjdC0+ZmluaXNoQ3JlYXRpb24odm0pOwogICAgICAgICByZXR1cm4gb2JqZWN0OwogICAgIH0K
IApAQCAtNTcsOSArNTQsMTAgQEAgcHVibGljOgogICAgIH0KIAogICAgIERFQ0xBUkVfSU5GTzsK
KwogcHJpdmF0ZToKLSAgICBQcm94eVJ1bnRpbWVPYmplY3QoSlNDOjpFeGVjU3RhdGUqLCBKU0M6
OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpTdHJ1Y3R1cmUqLCBQYXNzUmVmUHRyPFByb3h5SW5zdGFu
Y2U+KTsKLSAgICB2b2lkIGZpbmlzaENyZWF0aW9uKEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKKyAg
ICBQcm94eVJ1bnRpbWVPYmplY3QoSlNDOjpWTSYsIEpTQzo6U3RydWN0dXJlKiwgUGFzc1JlZlB0
cjxQcm94eUluc3RhbmNlPik7CisgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihKU0M6OlZNJik7CiB9
OwogCiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL0hvc3RlZC9Qcm94eVJ1bnRp
bWVPYmplY3QubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9Ib3N0
ZWQvUHJveHlSdW50aW1lT2JqZWN0Lm1tCShyZXZpc2lvbiAxNTY0NDApCisrKyBTb3VyY2UvV2Vi
S2l0L21hYy9QbHVnaW5zL0hvc3RlZC9Qcm94eVJ1bnRpbWVPYmplY3QubW0JKHdvcmtpbmcgY29w
eSkKQEAgLTM2LDE0ICszNiwxNCBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY29uc3QgQ2xhc3NJ
bmZvIFByb3h5UnVudGltZU9iamVjdDo6c19pbmZvID0geyAiUHJveHlSdW50aW1lT2JqZWN0Iiwg
JlJ1bnRpbWVPYmplY3Q6OnNfaW5mbywgMCwgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShQcm94eVJ1
bnRpbWVPYmplY3QpIH07CiAKLVByb3h5UnVudGltZU9iamVjdDo6UHJveHlSdW50aW1lT2JqZWN0
KEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJl
KiBzdHJ1Y3R1cmUsIFBhc3NSZWZQdHI8UHJveHlJbnN0YW5jZT4gaW5zdGFuY2UpCi0gICAgOiBS
dW50aW1lT2JqZWN0KGV4ZWMsIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBpbnN0YW5jZSkKK1By
b3h5UnVudGltZU9iamVjdDo6UHJveHlSdW50aW1lT2JqZWN0KFZNJiB2bSwgU3RydWN0dXJlKiBz
dHJ1Y3R1cmUsIFBhc3NSZWZQdHI8UHJveHlJbnN0YW5jZT4gaW5zdGFuY2UpCisgICAgOiBSdW50
aW1lT2JqZWN0KHZtLCBzdHJ1Y3R1cmUsIGluc3RhbmNlKQogewogfQogCi12b2lkIFByb3h5UnVu
dGltZU9iamVjdDo6ZmluaXNoQ3JlYXRpb24oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkK
K3ZvaWQgUHJveHlSdW50aW1lT2JqZWN0OjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCiB7Ci0gICAg
QmFzZTo6ZmluaXNoQ3JlYXRpb24oZ2xvYmFsT2JqZWN0KTsKKyAgICBCYXNlOjpmaW5pc2hDcmVh
dGlvbih2bSk7CiAgICAgQVNTRVJUKGluaGVyaXRzKCZzX2luZm8pKTsKIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>212653</attachid>
            <date>2013-09-25 19:20:19 -0700</date>
            <delta_ts>2013-09-25 19:43:55 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-121934-20130925192016.patch</filename>
            <type>text/plain</type>
            <size>45643</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE1NjQ0MCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDY3IEBACisyMDEzLTA5LTI1ICBTYW0gV2Vp
bmlnICA8c2FtQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUGFzcyBhIEpTQzo6Vk0mIHRvIEpTIGJp
bmRpbmdzIG9iamVjdCBjcmVhdGlvbiBmdW5jdGlvbnMsIHJhdGhlciB0aGFuIGEgSlNDOjpFeGVj
U3RhdGUqCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
MjE5MzQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBS
ZWR1Y2UgdW5uZWNlc3NhcnkgbG9hZHMgYnkgcGFzc2luZyB0aGUgSlNDOjpWTSB0byBvYmplY3Qg
Y3JlYXRpb24vYWNjZXNzIGZ1bmN0aW9ucworICAgICAgICB0aGF0IGRvbid0IG5lZWQgdGhlIEV4
ZWNTdGF0ZS4KKworICAgICAgICAqIFdlYkNvcmUuZXhwLmluOgorICAgICAgICAqIGJpbmRpbmdz
L2pzL0pTRE9NQmluZGluZy5oOgorICAgICAgICAoV2ViQ29yZTo6Z2V0RE9NU3RydWN0dXJlKToK
KyAgICAgICAgKFdlYkNvcmU6OmRlcHJlY2F0ZWRHZXRET01TdHJ1Y3R1cmUpOgorICAgICAgICAo
V2ViQ29yZTo6Z2V0RE9NUHJvdG90eXBlKToKKyAgICAgICAgKFdlYkNvcmU6OnNldElubGluZUNh
Y2hlZFdyYXBwZXIpOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlV3JhcHBlcik6CisgICAgICAg
ICogYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuaDoKKyAgICAgICAgKFdlYkNvcmU6Omdl
dERPTUNvbnN0cnVjdG9yKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3Rv
bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVdpbmRvdzo6aW1hZ2UpOgorICAgICAgICAq
IGJpbmRpbmdzL2pzL0pTRG9jdW1lbnRDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNE
b2N1bWVudDo6bG9jYXRpb24pOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTSW1hZ2VDb25zdHJ1
Y3Rvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0ltYWdlQ29uc3RydWN0b3I6OmZpbmlzaENy
ZWF0aW9uKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0ltYWdlQ29uc3RydWN0b3IuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OkpTSW1hZ2VDb25zdHJ1Y3Rvcjo6Y3JlYXRlKToKKyAgICAgICAgKiBi
aW5kaW5ncy9qcy9TY3JpcHRXcmFwcGFibGUuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3Jp
cHRXcmFwcGFibGVJbmxpbmVzLmg6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRXcmFwcGFibGU6
OnNldFdyYXBwZXIpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpT
LnBtOgorICAgICAgICAoR2VuZXJhdGVIZWFkZXIpOgorICAgICAgICAoR2VuZXJhdGVJbXBsZW1l
bnRhdGlvbik6CisgICAgICAgIChHZW5lcmF0ZUNvbnN0cnVjdG9yRGVjbGFyYXRpb24pOgorICAg
ICAgICAoR2VuZXJhdGVDb25zdHJ1Y3RvckhlbHBlck1ldGhvZHMpOgorICAgICAgICAqIGJyaWRn
ZS9jL0NSdW50aW1lT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6OkNSdW50aW1l
T2JqZWN0OjpDUnVudGltZU9iamVjdCk6CisgICAgICAgIChKU0M6OkJpbmRpbmdzOjpDUnVudGlt
ZU9iamVjdDo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAqIGJyaWRnZS9jL0NSdW50aW1lT2Jq
ZWN0Lmg6CisgICAgICAgIChKU0M6OkJpbmRpbmdzOjpDUnVudGltZU9iamVjdDo6Y3JlYXRlKToK
KyAgICAgICAgKiBicmlkZ2UvYy9jX2luc3RhbmNlLmNwcDoKKyAgICAgICAgKEpTQzo6QmluZGlu
Z3M6OkNJbnN0YW5jZTo6bmV3UnVudGltZU9iamVjdCk6CisgICAgICAgICogYnJpZGdlL2pzYy9C
cmlkZ2VKU0MuY3BwOgorICAgICAgICAoSlNDOjpCaW5kaW5nczo6SW5zdGFuY2U6Om5ld1J1bnRp
bWVPYmplY3QpOgorICAgICAgICAqIGJyaWRnZS9vYmpjL09iakNSdW50aW1lT2JqZWN0Lmg6Cisg
ICAgICAgIChKU0M6OkJpbmRpbmdzOjpPYmpDUnVudGltZU9iamVjdDo6Y3JlYXRlKToKKyAgICAg
ICAgKiBicmlkZ2Uvb2JqYy9PYmpDUnVudGltZU9iamVjdC5tbToKKyAgICAgICAgKEpTQzo6Qmlu
ZGluZ3M6Ok9iakNSdW50aW1lT2JqZWN0OjpPYmpDUnVudGltZU9iamVjdCk6CisgICAgICAgIChK
U0M6OkJpbmRpbmdzOjpPYmpDUnVudGltZU9iamVjdDo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAg
ICAqIGJyaWRnZS9vYmpjL29iamNfaW5zdGFuY2UubW06CisgICAgICAgIChPYmpjSW5zdGFuY2U6
Om5ld1J1bnRpbWVPYmplY3QpOgorICAgICAgICAqIGJyaWRnZS9vYmpjL29iamNfcnVudGltZS5o
OgorICAgICAgICAoSlNDOjpCaW5kaW5nczo6T2JqY0ZhbGxiYWNrT2JqZWN0SW1wOjpjcmVhdGVQ
cm90b3R5cGUpOgorICAgICAgICAqIGJyaWRnZS9ydW50aW1lX2FycmF5Lmg6CisgICAgICAgIChK
U0M6OlJ1bnRpbWVBcnJheTo6Y3JlYXRlUHJvdG90eXBlKToKKyAgICAgICAgKiBicmlkZ2UvcnVu
dGltZV9tZXRob2QuaDoKKyAgICAgICAgKEpTQzo6UnVudGltZU1ldGhvZDo6Y3JlYXRlUHJvdG90
eXBlKToKKyAgICAgICAgKiBicmlkZ2UvcnVudGltZV9vYmplY3QuY3BwOgorICAgICAgICAoSlND
OjpCaW5kaW5nczo6UnVudGltZU9iamVjdDo6UnVudGltZU9iamVjdCk6CisgICAgICAgIChKU0M6
OkJpbmRpbmdzOjpSdW50aW1lT2JqZWN0OjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgICogYnJp
ZGdlL3J1bnRpbWVfb2JqZWN0Lmg6CisgICAgICAgIChKU0M6OkJpbmRpbmdzOjpSdW50aW1lT2Jq
ZWN0OjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpCaW5kaW5nczo6UnVudGltZU9iamVjdDo6Y3Jl
YXRlUHJvdG90eXBlKToKKwogMjAxMy0wOS0yNSAgQ29tbWl0IFF1ZXVlICA8Y29tbWl0LXF1ZXVl
QHdlYmtpdC5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjE1NjQzMi4K
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCShyZXZpc2lvbiAxNTY0NDApCisrKyBTb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLmV4cC5pbgkod29ya2luZyBjb3B5KQpAQCAtMjY1NywxNCArMjY1NywxNCBA
QCBfX1pOM0pTQzhCaW5kaW5nczEwUm9vdE9iamVjdEQxRXYKIF9fWk4zSlNDOEJpbmRpbmdzMTNS
dW50aW1lT2JqZWN0MTFnZXRDYWxsRGF0YUVQTlNfNkpTQ2VsbEVSTlNfOENhbGxEYXRhRQogX19a
TjNKU0M4QmluZGluZ3MxM1J1bnRpbWVPYmplY3QxMmRlZmF1bHRWYWx1ZUVQS05TXzhKU09iamVj
dEVQTlNfOUV4ZWNTdGF0ZUVOU18yMlByZWZlcnJlZFByaW1pdGl2ZVR5cGVFCiBfX1pOM0pTQzhC
aW5kaW5nczEzUnVudGltZU9iamVjdDE0ZGVsZXRlUHJvcGVydHlFUE5TXzZKU0NlbGxFUE5TXzlF
eGVjU3RhdGVFTlNfMTJQcm9wZXJ0eU5hbWVFCi1fX1pOM0pTQzhCaW5kaW5nczEzUnVudGltZU9i
amVjdDE0ZmluaXNoQ3JlYXRpb25FUE5TXzE0SlNHbG9iYWxPYmplY3RFCitfX1pOM0pTQzhCaW5k
aW5nczEzUnVudGltZU9iamVjdDE0ZmluaXNoQ3JlYXRpb25FUk5TXzJWTUUKIF9fWk4zSlNDOEJp
bmRpbmdzMTNSdW50aW1lT2JqZWN0MTZnZXRDb25zdHJ1Y3REYXRhRVBOU182SlNDZWxsRVJOU18x
M0NvbnN0cnVjdERhdGFFCiBfX1pOM0pTQzhCaW5kaW5nczEzUnVudGltZU9iamVjdDE4Z2V0T3du
UHJvcGVydHlTbG90RVBOU184SlNPYmplY3RFUE5TXzlFeGVjU3RhdGVFTlNfMTJQcm9wZXJ0eU5h
bWVFUk5TXzEyUHJvcGVydHlTbG90RQogX19aTjNKU0M4QmluZGluZ3MxM1J1bnRpbWVPYmplY3Qx
OWdldE93blByb3BlcnR5TmFtZXNFUE5TXzhKU09iamVjdEVQTlNfOUV4ZWNTdGF0ZUVSTlNfMTdQ
cm9wZXJ0eU5hbWVBcnJheUVOU18xNUVudW1lcmF0aW9uTW9kZUUKIF9fWk4zSlNDOEJpbmRpbmdz
MTNSdW50aW1lT2JqZWN0M3B1dEVQTlNfNkpTQ2VsbEVQTlNfOUV4ZWNTdGF0ZUVOU18xMlByb3Bl
cnR5TmFtZUVOU183SlNWYWx1ZUVSTlNfMTVQdXRQcm9wZXJ0eVNsb3RFCiBfX1pOM0pTQzhCaW5k
aW5nczEzUnVudGltZU9iamVjdDZzX2luZm9FCiBfX1pOM0pTQzhCaW5kaW5nczEzUnVudGltZU9i
amVjdDdkZXN0cm95RVBOU182SlNDZWxsRQotX19aTjNKU0M4QmluZGluZ3MxM1J1bnRpbWVPYmpl
Y3RDMkVQTlNfOUV4ZWNTdGF0ZUVQTlNfMTRKU0dsb2JhbE9iamVjdEVQTlNfOVN0cnVjdHVyZUVO
M1dURjEwUGFzc1JlZlB0cklOUzBfOEluc3RhbmNlRUVFCitfX1pOM0pTQzhCaW5kaW5nczEzUnVu
dGltZU9iamVjdEMyRVJOU18yVk1FUE5TXzlTdHJ1Y3R1cmVFTjNXVEYxMFBhc3NSZWZQdHJJTlMw
XzhJbnN0YW5jZUVFRQogX19aTjNKU0M4QmluZGluZ3M4SW5zdGFuY2UxOWNyZWF0ZVJ1bnRpbWVP
YmplY3RFUE5TXzlFeGVjU3RhdGVFCiBfX1pOM0pTQzhCaW5kaW5nczhJbnN0YW5jZUMyRU4zV1RG
MTBQYXNzUmVmUHRySU5TMF8xMFJvb3RPYmplY3RFRUUKIF9fWk4zSlNDOEJpbmRpbmdzOEluc3Rh
bmNlRDJFdgpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmgJ
KHJldmlzaW9uIDE1NjQ0MCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmlu
ZGluZy5oCSh3b3JraW5nIGNvcHkpCkBAIC05NCwyMiArOTQsMjIgQEAgY2xhc3MgRE9NU3RyaW5n
TGlzdDsKICAgICAgICAgcmV0dXJuIEpTQzo6anNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZXhl
Yy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKTsKICAgICB9CiAKLSAgICB0ZW1wbGF0ZTxjbGFzcyBX
cmFwcGVyQ2xhc3M+IGlubGluZSBKU0M6OlN0cnVjdHVyZSogZ2V0RE9NU3RydWN0dXJlKEpTQzo6
RXhlY1N0YXRlKiBleGVjLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQorICAgIHRl
bXBsYXRlPGNsYXNzIFdyYXBwZXJDbGFzcz4gaW5saW5lIEpTQzo6U3RydWN0dXJlKiBnZXRET01T
dHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiAg
ICAgewogICAgICAgICBpZiAoSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGdldENhY2hlZERP
TVN0cnVjdHVyZShnbG9iYWxPYmplY3QsIFdyYXBwZXJDbGFzczo6aW5mbygpKSkKICAgICAgICAg
ICAgIHJldHVybiBzdHJ1Y3R1cmU7Ci0gICAgICAgIHJldHVybiBjYWNoZURPTVN0cnVjdHVyZShn
bG9iYWxPYmplY3QsIFdyYXBwZXJDbGFzczo6Y3JlYXRlU3RydWN0dXJlKGV4ZWMtPnZtKCksIGds
b2JhbE9iamVjdCwgV3JhcHBlckNsYXNzOjpjcmVhdGVQcm90b3R5cGUoZXhlYywgZ2xvYmFsT2Jq
ZWN0KSksIFdyYXBwZXJDbGFzczo6aW5mbygpKTsKKyAgICAgICAgcmV0dXJuIGNhY2hlRE9NU3Ry
dWN0dXJlKGdsb2JhbE9iamVjdCwgV3JhcHBlckNsYXNzOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIGds
b2JhbE9iamVjdCwgV3JhcHBlckNsYXNzOjpjcmVhdGVQcm90b3R5cGUodm0sIGdsb2JhbE9iamVj
dCkpLCBXcmFwcGVyQ2xhc3M6OmluZm8oKSk7CiAgICAgfQogCiAgICAgdGVtcGxhdGU8Y2xhc3Mg
V3JhcHBlckNsYXNzPiBpbmxpbmUgSlNDOjpTdHJ1Y3R1cmUqIGRlcHJlY2F0ZWRHZXRET01TdHJ1
Y3R1cmUoSlNDOjpFeGVjU3RhdGUqIGV4ZWMpCiAgICAgewogICAgICAgICAvLyBGSVhNRTogVGhp
cyBmdW5jdGlvbiBpcyB3cm9uZy4gIEl0IHVzZXMgdGhlIHdyb25nIGdsb2JhbCBvYmplY3QgZm9y
IGNyZWF0aW5nIHRoZSBwcm90b3R5cGUgc3RydWN0dXJlLgotICAgICAgICByZXR1cm4gZ2V0RE9N
U3RydWN0dXJlPFdyYXBwZXJDbGFzcz4oZXhlYywgZGVwcmVjYXRlZEdsb2JhbE9iamVjdEZvclBy
b3RvdHlwZShleGVjKSk7CisgICAgICAgIHJldHVybiBnZXRET01TdHJ1Y3R1cmU8V3JhcHBlckNs
YXNzPihleGVjLT52bSgpLCBkZXByZWNhdGVkR2xvYmFsT2JqZWN0Rm9yUHJvdG90eXBlKGV4ZWMp
KTsKICAgICB9CiAKLSAgICB0ZW1wbGF0ZTxjbGFzcyBXcmFwcGVyQ2xhc3M+IGlubGluZSBKU0M6
OkpTT2JqZWN0KiBnZXRET01Qcm90b3R5cGUoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIEpTQzo6SlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKKyAgICB0ZW1wbGF0ZTxjbGFzcyBXcmFwcGVyQ2xh
c3M+IGlubGluZSBKU0M6OkpTT2JqZWN0KiBnZXRET01Qcm90b3R5cGUoSlNDOjpWTSYgdm0sIEpT
Qzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKICAgICB7Ci0gICAgICAgIHJldHVybiBK
U0M6OmpzQ2FzdDxKU0M6OkpTT2JqZWN0Kj4oYXNPYmplY3QoZ2V0RE9NU3RydWN0dXJlPFdyYXBw
ZXJDbGFzcz4oZXhlYywgSlNDOjpqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmpl
Y3QpKS0+c3RvcmVkUHJvdG90eXBlKCkpKTsKKyAgICAgICAgcmV0dXJuIEpTQzo6anNDYXN0PEpT
Qzo6SlNPYmplY3QqPihhc09iamVjdChnZXRET01TdHJ1Y3R1cmU8V3JhcHBlckNsYXNzPih2bSwg
SlNDOjpqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QpKS0+c3RvcmVkUHJv
dG90eXBlKCkpKTsKICAgICB9CiAKICAgICBpbmxpbmUgSlNDOjpXZWFrSGFuZGxlT3duZXIqIHdy
YXBwZXJPd25lcihET01XcmFwcGVyV29ybGQqIHdvcmxkLCBKU0M6OkFycmF5QnVmZmVyKikKQEAg
LTE0NCw3ICsxNDQsNyBAQCBjbGFzcyBET01TdHJpbmdMaXN0OwogICAgIHsKICAgICAgICAgaWYg
KCF3b3JsZC0+aXNOb3JtYWwoKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAg
ZG9tT2JqZWN0LT5zZXRXcmFwcGVyKCp3b3JsZC0+dm0oKSwgd3JhcHBlciwgd3JhcHBlck93bmVy
LCBjb250ZXh0KTsKKyAgICAgICAgZG9tT2JqZWN0LT5zZXRXcmFwcGVyKHdyYXBwZXIsIHdyYXBw
ZXJPd25lciwgY29udGV4dCk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIApAQCAtMjAx
LDcgKzIwMSw3IEBAIGNsYXNzIERPTVN0cmluZ0xpc3Q7CiAgICAgewogICAgICAgICBBU1NFUlQo
bm9kZSk7CiAgICAgICAgIEFTU0VSVCghZ2V0Q2FjaGVkV3JhcHBlcihjdXJyZW50V29ybGQoZXhl
YyksIG5vZGUpKTsKLSAgICAgICAgV3JhcHBlckNsYXNzKiB3cmFwcGVyID0gV3JhcHBlckNsYXNz
OjpjcmVhdGUoZ2V0RE9NU3RydWN0dXJlPFdyYXBwZXJDbGFzcz4oZXhlYywgZ2xvYmFsT2JqZWN0
KSwgZ2xvYmFsT2JqZWN0LCBub2RlKTsKKyAgICAgICAgV3JhcHBlckNsYXNzKiB3cmFwcGVyID0g
V3JhcHBlckNsYXNzOjpjcmVhdGUoZ2V0RE9NU3RydWN0dXJlPFdyYXBwZXJDbGFzcz4oZXhlYy0+
dm0oKSwgZ2xvYmFsT2JqZWN0KSwgZ2xvYmFsT2JqZWN0LCBub2RlKTsKICAgICAgICAgLy8gRklY
TUU6IFRoZSBlbnRpcmUgZnVuY3Rpb24gY2FuIGJlIHJlbW92ZWQsIG9uY2Ugd2UgZml4IGNhY2hp
bmcuCiAgICAgICAgIC8vIFRoaXMgZnVuY3Rpb24gaXMgYSBvbmUtb2ZmIGhhY2sgdG8gbWFrZSBO
b2RlcyBjYWNoZSBpbiB0aGUgcmlnaHQgZ2xvYmFsIG9iamVjdC4KICAgICAgICAgY2FjaGVXcmFw
cGVyKGN1cnJlbnRXb3JsZChleGVjKSwgbm9kZSwgd3JhcHBlcik7CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmgJKHJldmlzaW9uIDE1NjQ0
MCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmgJKHdv
cmtpbmcgY29weSkKQEAgLTg2LDE0ICs4NiwxNCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAg
fTsKIAogICAgIHRlbXBsYXRlPGNsYXNzIENvbnN0cnVjdG9yQ2xhc3M+Ci0gICAgaW5saW5lIEpT
Qzo6SlNPYmplY3QqIGdldERPTUNvbnN0cnVjdG9yKEpTQzo6RXhlY1N0YXRlKiBleGVjLCBjb25z
dCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQorICAgIGlubGluZSBKU0M6OkpTT2Jq
ZWN0KiBnZXRET01Db25zdHJ1Y3RvcihKU0M6OlZNJiB2bSwgY29uc3QgSlNET01HbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCkKICAgICB7CiAgICAgICAgIGlmIChKU0M6OkpTT2JqZWN0KiBjb25z
dHJ1Y3RvciA9IGNvbnN0X2Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QpLT5j
b25zdHJ1Y3RvcnMoKS5nZXQoQ29uc3RydWN0b3JDbGFzczo6aW5mbygpKS5nZXQoKSkKICAgICAg
ICAgICAgIHJldHVybiBjb25zdHJ1Y3RvcjsKLSAgICAgICAgSlNDOjpKU09iamVjdCogY29uc3Ry
dWN0b3IgPSBDb25zdHJ1Y3RvckNsYXNzOjpjcmVhdGUoZXhlYywgQ29uc3RydWN0b3JDbGFzczo6
Y3JlYXRlU3RydWN0dXJlKGV4ZWMtPnZtKCksIGNvbnN0X2Nhc3Q8SlNET01HbG9iYWxPYmplY3Qq
PihnbG9iYWxPYmplY3QpLCBnbG9iYWxPYmplY3QtPm9iamVjdFByb3RvdHlwZSgpKSwgY29uc3Rf
Y2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCkpOworICAgICAgICBKU0M6OkpT
T2JqZWN0KiBjb25zdHJ1Y3RvciA9IENvbnN0cnVjdG9yQ2xhc3M6OmNyZWF0ZSh2bSwgQ29uc3Ry
dWN0b3JDbGFzczo6Y3JlYXRlU3RydWN0dXJlKHZtLCBjb25zdF9jYXN0PEpTRE9NR2xvYmFsT2Jq
ZWN0Kj4oZ2xvYmFsT2JqZWN0KSwgZ2xvYmFsT2JqZWN0LT5vYmplY3RQcm90b3R5cGUoKSksIGNv
bnN0X2Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QpKTsKICAgICAgICAgQVNT
RVJUKCFjb25zdF9jYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KS0+Y29uc3Ry
dWN0b3JzKCkuY29udGFpbnMoQ29uc3RydWN0b3JDbGFzczo6aW5mbygpKSk7CiAgICAgICAgIEpT
Qzo6V3JpdGVCYXJyaWVyPEpTQzo6SlNPYmplY3Q+IHRlbXA7Ci0gICAgICAgIGNvbnN0X2Nhc3Q8
SlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QpLT5jb25zdHJ1Y3RvcnMoKS5hZGQoQ29u
c3RydWN0b3JDbGFzczo6aW5mbygpLCB0ZW1wKS5pdGVyYXRvci0+dmFsdWUuc2V0KGV4ZWMtPnZt
KCksIGdsb2JhbE9iamVjdCwgY29uc3RydWN0b3IpOworICAgICAgICBjb25zdF9jYXN0PEpTRE9N
R2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KS0+Y29uc3RydWN0b3JzKCkuYWRkKENvbnN0cnVj
dG9yQ2xhc3M6OmluZm8oKSwgdGVtcCkuaXRlcmF0b3ItPnZhbHVlLnNldCh2bSwgZ2xvYmFsT2Jq
ZWN0LCBjb25zdHJ1Y3Rvcik7CiAgICAgICAgIHJldHVybiBjb25zdHJ1Y3RvcjsKICAgICB9CiAK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3Rv
bS5jcHAJKHJldmlzaW9uIDE1NjQ0MCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
RE9NV2luZG93Q3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDU0LDcgKzQ1NCw3IEBAIEpT
VmFsdWUgSlNET01XaW5kb3c6OmV2ZW50KEV4ZWNTdGF0ZSogZXgKIAogSlNWYWx1ZSBKU0RPTVdp
bmRvdzo6aW1hZ2UoRXhlY1N0YXRlKiBleGVjKSBjb25zdAogewotICAgIHJldHVybiBnZXRET01D
b25zdHJ1Y3RvcjxKU0ltYWdlQ29uc3RydWN0b3I+KGV4ZWMsIHRoaXMpOworICAgIHJldHVybiBn
ZXRET01Db25zdHJ1Y3RvcjxKU0ltYWdlQ29uc3RydWN0b3I+KGV4ZWMtPnZtKCksIHRoaXMpOwog
fQogCiAvLyBDdXN0b20gZnVuY3Rpb25zCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0RvY3VtZW50Q3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0RvY3VtZW50Q3VzdG9tLmNwcAkocmV2aXNpb24gMTU2NDQwKQorKysgU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNEb2N1bWVudEN1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTU5LDcgKzU5LDcgQEAgSlNWYWx1ZSBKU0RvY3VtZW50Ojpsb2NhdGlvbihFeGVjU3RhdGUq
IAogICAgIGlmIChKU09iamVjdCogd3JhcHBlciA9IGdldENhY2hlZFdyYXBwZXIoY3VycmVudFdv
cmxkKGV4ZWMpLCBsb2NhdGlvbikpCiAgICAgICAgIHJldHVybiB3cmFwcGVyOwogCi0gICAgSlNM
b2NhdGlvbioganNMb2NhdGlvbiA9IEpTTG9jYXRpb246OmNyZWF0ZShnZXRET01TdHJ1Y3R1cmU8
SlNMb2NhdGlvbj4oZXhlYywgZ2xvYmFsT2JqZWN0KCkpLCBnbG9iYWxPYmplY3QoKSwgbG9jYXRp
b24pOworICAgIEpTTG9jYXRpb24qIGpzTG9jYXRpb24gPSBKU0xvY2F0aW9uOjpjcmVhdGUoZ2V0
RE9NU3RydWN0dXJlPEpTTG9jYXRpb24+KGV4ZWMtPnZtKCksIGdsb2JhbE9iamVjdCgpKSwgZ2xv
YmFsT2JqZWN0KCksIGxvY2F0aW9uKTsKICAgICBjYWNoZVdyYXBwZXIoY3VycmVudFdvcmxkKGV4
ZWMpLCBsb2NhdGlvbiwganNMb2NhdGlvbik7CiAgICAgcmV0dXJuIGpzTG9jYXRpb247CiB9Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0ltYWdlQ29uc3RydWN0b3IuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSW1hZ2VDb25zdHJ1Y3Rv
ci5jcHAJKHJldmlzaW9uIDE1NjQ0MCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
SW1hZ2VDb25zdHJ1Y3Rvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM5LDExICszOSwxMSBAQCBK
U0ltYWdlQ29uc3RydWN0b3I6OkpTSW1hZ2VDb25zdHJ1Y3RvcihTCiB7CiB9CiAKLXZvaWQgSlNJ
bWFnZUNvbnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlvbihFeGVjU3RhdGUqIGV4ZWMsIEpTRE9NR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCit2b2lkIEpTSW1hZ2VDb25zdHJ1Y3Rvcjo6ZmluaXNo
Q3JlYXRpb24oVk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogewogICAg
IEJhc2U6OmZpbmlzaENyZWF0aW9uKGdsb2JhbE9iamVjdCk7CiAgICAgQVNTRVJUKGluaGVyaXRz
KGluZm8oKSkpOwotICAgIHB1dERpcmVjdChleGVjLT52bSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVz
KCkucHJvdG90eXBlLCBKU0hUTUxJbWFnZUVsZW1lbnRQcm90b3R5cGU6OnNlbGYoZXhlYywgZ2xv
YmFsT2JqZWN0KSwgTm9uZSk7CisgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5w
cm90b3R5cGUsIEpTSFRNTEltYWdlRWxlbWVudFByb3RvdHlwZTo6c2VsZih2bSwgZ2xvYmFsT2Jq
ZWN0KSwgTm9uZSk7CiB9CiAKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNv
bnN0cnVjdEltYWdlKEV4ZWNTdGF0ZSogZXhlYykKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTSW1hZ2VDb25zdHJ1Y3Rvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTSW1hZ2VDb25zdHJ1Y3Rvci5oCShyZXZpc2lvbiAxNTY0NDApCisrKyBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0ltYWdlQ29uc3RydWN0b3IuaAkod29ya2luZyBj
b3B5KQpAQCAtMzAsMTAgKzMwLDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBwdWJsaWM6
CiAgICAgICAgIHR5cGVkZWYgRE9NQ29uc3RydWN0b3JXaXRoRG9jdW1lbnQgQmFzZTsKIAotICAg
ICAgICBzdGF0aWMgSlNJbWFnZUNvbnN0cnVjdG9yKiBjcmVhdGUoSlNDOjpFeGVjU3RhdGUqIGV4
ZWMsIEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QpCisgICAgICAgIHN0YXRpYyBKU0ltYWdlQ29uc3RydWN0b3IqIGNyZWF0ZShKU0M6OlZN
JiB2bSwgSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCkKICAgICAgICAgewotICAgICAgICAgICAgSlNJbWFnZUNvbnN0cnVjdG9yKiBjb25z
dHJ1Y3RvciA9IG5ldyAoTm90TnVsbCwgSlNDOjphbGxvY2F0ZUNlbGw8SlNJbWFnZUNvbnN0cnVj
dG9yPigqZXhlYy0+aGVhcCgpKSkgSlNJbWFnZUNvbnN0cnVjdG9yKHN0cnVjdHVyZSwgZ2xvYmFs
T2JqZWN0KTsKLSAgICAgICAgICAgIGNvbnN0cnVjdG9yLT5maW5pc2hDcmVhdGlvbihleGVjLCBn
bG9iYWxPYmplY3QpOworICAgICAgICAgICAgSlNJbWFnZUNvbnN0cnVjdG9yKiBjb25zdHJ1Y3Rv
ciA9IG5ldyAoTm90TnVsbCwgSlNDOjphbGxvY2F0ZUNlbGw8SlNJbWFnZUNvbnN0cnVjdG9yPih2
bS5oZWFwKSkgSlNJbWFnZUNvbnN0cnVjdG9yKHN0cnVjdHVyZSwgZ2xvYmFsT2JqZWN0KTsKKyAg
ICAgICAgICAgIGNvbnN0cnVjdG9yLT5maW5pc2hDcmVhdGlvbih2bSwgZ2xvYmFsT2JqZWN0KTsK
ICAgICAgICAgICAgIHJldHVybiBjb25zdHJ1Y3RvcjsKICAgICAgICAgfQogCkBAIC00Niw3ICs0
Niw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIEpTSW1h
Z2VDb25zdHJ1Y3RvcihKU0M6OlN0cnVjdHVyZSosIEpTRE9NR2xvYmFsT2JqZWN0Kik7Ci0gICAg
ICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oSlNDOjpFeGVjU3RhdGUqLCBKU0RPTUdsb2JhbE9iamVj
dCopOworICAgICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKEpTQzo6Vk0mLCBKU0RPTUdsb2JhbE9i
amVjdCopOwogICAgICAgICBzdGF0aWMgSlNDOjpDb25zdHJ1Y3RUeXBlIGdldENvbnN0cnVjdERh
dGEoSlNDOjpKU0NlbGwqLCBKU0M6OkNvbnN0cnVjdERhdGEmKTsKICAgICB9OwogCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRXcmFwcGFibGUuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRXcmFwcGFibGUuaAkocmV2aXNpb24g
MTU2NDQwKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0V3JhcHBhYmxlLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTM1LDcgKzM1LDYgQEAKICNpbmNsdWRlIDxoZWFwL1dlYWsuaD4K
IAogbmFtZXNwYWNlIEpTQyB7Ci1jbGFzcyBWTTsKIGNsYXNzIFdlYWtIYW5kbGVPd25lcjsKIH0K
IApAQCAtNDYsNyArNDUsNyBAQCBjbGFzcyBKU0RPTVdyYXBwZXI7CiBjbGFzcyBTY3JpcHRXcmFw
cGFibGUgewogcHVibGljOgogICAgIEpTRE9NV3JhcHBlciogd3JhcHBlcigpIGNvbnN0OwotICAg
IHZvaWQgc2V0V3JhcHBlcihKU0M6OlZNJiwgSlNET01XcmFwcGVyKiwgSlNDOjpXZWFrSGFuZGxl
T3duZXIqLCB2b2lkKik7CisgICAgdm9pZCBzZXRXcmFwcGVyKEpTRE9NV3JhcHBlciosIEpTQzo6
V2Vha0hhbmRsZU93bmVyKiwgdm9pZCopOwogICAgIHZvaWQgY2xlYXJXcmFwcGVyKEpTRE9NV3Jh
cHBlciopOwogCiBwcml2YXRlOgpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2Ny
aXB0V3JhcHBhYmxlSW5saW5lcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL1NjcmlwdFdyYXBwYWJsZUlubGluZXMuaAkocmV2aXNpb24gMTU2NDQwKQorKysgU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0V3JhcHBhYmxlSW5saW5lcy5oCSh3b3JraW5n
IGNvcHkpCkBAIC00Myw3ICs0Myw3IEBAIGlubGluZSBKU0RPTVdyYXBwZXIqIFNjcmlwdFdyYXBw
YWJsZTo6d3IKICAgICByZXR1cm4gbV93cmFwcGVyLmdldCgpOwogfQogCi1pbmxpbmUgdm9pZCBT
Y3JpcHRXcmFwcGFibGU6OnNldFdyYXBwZXIoSlNDOjpWTSYsIEpTRE9NV3JhcHBlciogd3JhcHBl
ciwgSlNDOjpXZWFrSGFuZGxlT3duZXIqIHdyYXBwZXJPd25lciwgdm9pZCogY29udGV4dCkKK2lu
bGluZSB2b2lkIFNjcmlwdFdyYXBwYWJsZTo6c2V0V3JhcHBlcihKU0RPTVdyYXBwZXIqIHdyYXBw
ZXIsIEpTQzo6V2Vha0hhbmRsZU93bmVyKiB3cmFwcGVyT3duZXIsIHZvaWQqIGNvbnRleHQpCiB7
CiAgICAgQVNTRVJUKCFtX3dyYXBwZXIpOwogICAgIG1fd3JhcHBlciA9IEpTQzo6UGFzc1dlYWs8
SlNET01XcmFwcGVyPih3cmFwcGVyLCB3cmFwcGVyT3duZXIsIGNvbnRleHQpOwpJbmRleDogU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0J
KHJldmlzaW9uIDE1NjQ0MCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29k
ZUdlbmVyYXRvckpTLnBtCSh3b3JraW5nIGNvcHkpCkBAIC02NzEsNyArNjcxLDcgQEAgc3ViIEdl
bmVyYXRlSGVhZGVyCiAgICAgfQogCiAgICAgIyBQcm90b3R5cGUKLSAgICBwdXNoKEBoZWFkZXJD
b250ZW50LCAiICAgIHN0YXRpYyBKU0M6OkpTT2JqZWN0KiBjcmVhdGVQcm90b3R5cGUoSlNDOjpF
eGVjU3RhdGUqLCBKU0M6OkpTR2xvYmFsT2JqZWN0Kik7XG4iKSB1bmxlc3MgSXNET01HbG9iYWxP
YmplY3QoJGludGVyZmFjZSk7CisgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICBzdGF0aWMg
SlNDOjpKU09iamVjdCogY3JlYXRlUHJvdG90eXBlKEpTQzo6Vk0mLCBKU0M6OkpTR2xvYmFsT2Jq
ZWN0Kik7XG4iKSB1bmxlc3MgSXNET01HbG9iYWxPYmplY3QoJGludGVyZmFjZSk7CiAKICAgICAk
aGVhZGVyVHJhaWxpbmdJbmNsdWRlc3siJHtjbGFzc05hbWV9Q3VzdG9tLmgifSA9IDEgaWYgJGlu
dGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkpTQ3VzdG9tSGVhZGVyIn07CiAKQEAgLTc4
NSw4ICs3ODUsOCBAQCBzdWIgR2VuZXJhdGVIZWFkZXIKIAogICAgICMgQ29uc3RydWN0b3Igb2Jq
ZWN0IGdldHRlcgogICAgIHVubGVzcyAoJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57
Ik5vSW50ZXJmYWNlT2JqZWN0In0pIHsKLSAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAg
ICBzdGF0aWMgSlNDOjpKU1ZhbHVlIGdldENvbnN0cnVjdG9yKEpTQzo6RXhlY1N0YXRlKiwgSlND
OjpKU0dsb2JhbE9iamVjdCopO1xuIik7Ci0gICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIg
ICAgc3RhdGljIEpTQzo6SlNWYWx1ZSBnZXROYW1lZENvbnN0cnVjdG9yKEpTQzo6RXhlY1N0YXRl
KiwgSlNDOjpKU0dsb2JhbE9iamVjdCopO1xuIikgaWYgJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRy
aWJ1dGVzLT57Ik5hbWVkQ29uc3RydWN0b3IifTsKKyAgICAgICAgcHVzaChAaGVhZGVyQ29udGVu
dCwgIiAgICBzdGF0aWMgSlNDOjpKU1ZhbHVlIGdldENvbnN0cnVjdG9yKEpTQzo6Vk0mLCBKU0M6
OkpTR2xvYmFsT2JqZWN0Kik7XG4iKTsKKyAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAg
ICBzdGF0aWMgSlNDOjpKU1ZhbHVlIGdldE5hbWVkQ29uc3RydWN0b3IoSlNDOjpWTSYsIEpTQzo6
SlNHbG9iYWxPYmplY3QqKTtcbiIpIGlmICRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+
eyJOYW1lZENvbnN0cnVjdG9yIn07CiAgICAgfQogCiAgICAgbXkgJG51bUN1c3RvbUZ1bmN0aW9u
cyA9IDA7CkBAIC05NzEsNyArOTcxLDcgQEAgc3ViIEdlbmVyYXRlSGVhZGVyCiAgICAgcHVzaChA
aGVhZGVyQ29udGVudCwgInB1YmxpYzpcbiIpOwogICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIg
ICAgdHlwZWRlZiBKU0M6OkpTTm9uRmluYWxPYmplY3QgQmFzZTtcbiIpOwogICAgIHVubGVzcyAo
SXNET01HbG9iYWxPYmplY3QoJGludGVyZmFjZSkpIHsKLSAgICAgICAgcHVzaChAaGVhZGVyQ29u
dGVudCwgIiAgICBzdGF0aWMgSlNDOjpKU09iamVjdCogc2VsZihKU0M6OkV4ZWNTdGF0ZSosIEpT
Qzo6SlNHbG9iYWxPYmplY3QqKTtcbiIpOworICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAi
ICAgIHN0YXRpYyBKU0M6OkpTT2JqZWN0KiBzZWxmKEpTQzo6Vk0mLCBKU0M6OkpTR2xvYmFsT2Jq
ZWN0Kik7XG4iKTsKICAgICB9CiAKICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIHN0YXRp
YyAke2NsYXNzTmFtZX1Qcm90b3R5cGUqIGNyZWF0ZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlKVxuIik7CkBA
IC0xNjQ5LDkgKzE2NDksOSBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICAgICBw
dXNoKEBpbXBsQ29udGVudCwgImNvbnN0IENsYXNzSW5mbyAke2NsYXNzTmFtZX1Qcm90b3R5cGU6
OnNfaW5mbyA9IHsgXCIke3Zpc2libGVJbnRlcmZhY2VOYW1lfVByb3RvdHlwZVwiLCAmQmFzZTo6
c19pbmZvLCAmJHtjbGFzc05hbWV9UHJvdG90eXBlVGFibGUsIDAsIENSRUFURV9NRVRIT0RfVEFC
TEUoJHtjbGFzc05hbWV9UHJvdG90eXBlKSB9O1xuXG4iKTsKICAgICB9CiAgICAgdW5sZXNzIChJ
c0RPTUdsb2JhbE9iamVjdCgkaW50ZXJmYWNlKSkgewotICAgICAgICBwdXNoKEBpbXBsQ29udGVu
dCwgIkpTT2JqZWN0KiAke2NsYXNzTmFtZX1Qcm90b3R5cGU6OnNlbGYoRXhlY1N0YXRlKiBleGVj
LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KVxuIik7CisgICAgICAgIHB1c2goQGltcGxD
b250ZW50LCAiSlNPYmplY3QqICR7Y2xhc3NOYW1lfVByb3RvdHlwZTo6c2VsZihWTSYgdm0sIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpXG4iKTsKICAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsICJ7XG4iKTsKLSAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgcmV0dXJuIGdldERP
TVByb3RvdHlwZTwke2NsYXNzTmFtZX0+KGV4ZWMsIGdsb2JhbE9iamVjdCk7XG4iKTsKKyAgICAg
ICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgcmV0dXJuIGdldERPTVByb3RvdHlwZTwke2NsYXNz
TmFtZX0+KHZtLCBnbG9iYWxPYmplY3QpO1xuIik7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50
LCAifVxuXG4iKTsKICAgICB9CiAKQEAgLTE3NDQsMTMgKzE3NDQsMTMgQEAgc3ViIEdlbmVyYXRl
SW1wbGVtZW50YXRpb24KICAgICB9CiAKICAgICB1bmxlc3MgKElzRE9NR2xvYmFsT2JqZWN0KCRp
bnRlcmZhY2UpKSB7Ci0gICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiSlNPYmplY3QqICR7Y2xh
c3NOYW1lfTo6Y3JlYXRlUHJvdG90eXBlKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdClcbiIpOworICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIkpTT2JqZWN0
KiAke2NsYXNzTmFtZX06OmNyZWF0ZVByb3RvdHlwZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QpXG4iKTsKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ7XG4iKTsKICAg
ICAgICAgaWYgKCRoYXNQYXJlbnQgJiYgJHBhcmVudENsYXNzTmFtZSBuZSAiSlNDOjpET01Ob2Rl
RmlsdGVyIikgewotICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgcmV0dXJuICR7
Y2xhc3NOYW1lfVByb3RvdHlwZTo6Y3JlYXRlKGV4ZWMtPnZtKCksIGdsb2JhbE9iamVjdCwgJHtj
bGFzc05hbWV9UHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUoZXhlYy0+dm0oKSwgZ2xvYmFsT2Jq
ZWN0LCAke3BhcmVudENsYXNzTmFtZX1Qcm90b3R5cGU6OnNlbGYoZXhlYywgZ2xvYmFsT2JqZWN0
KSkpO1xuIik7CisgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICByZXR1cm4gJHtj
bGFzc05hbWV9UHJvdG90eXBlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgJHtjbGFzc05hbWV9
UHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIGdsb2JhbE9iamVjdCwgJHtwYXJlbnRDbGFz
c05hbWV9UHJvdG90eXBlOjpzZWxmKHZtLCBnbG9iYWxPYmplY3QpKSk7XG4iKTsKICAgICAgICAg
fSBlbHNlIHsKICAgICAgICAgICAgIG15ICRwcm90b3R5cGUgPSAkaW50ZXJmYWNlLT5pc0V4Y2Vw
dGlvbiA/ICJlcnJvclByb3RvdHlwZSIgOiAib2JqZWN0UHJvdG90eXBlIjsKLSAgICAgICAgICAg
IHB1c2goQGltcGxDb250ZW50LCAiICAgIHJldHVybiAke2NsYXNzTmFtZX1Qcm90b3R5cGU6OmNy
ZWF0ZShleGVjLT52bSgpLCBnbG9iYWxPYmplY3QsICR7Y2xhc3NOYW1lfVByb3RvdHlwZTo6Y3Jl
YXRlU3RydWN0dXJlKGdsb2JhbE9iamVjdC0+dm0oKSwgZ2xvYmFsT2JqZWN0LCBnbG9iYWxPYmpl
Y3QtPiR7cHJvdG90eXBlfSgpKSk7XG4iKTsKKyAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50
LCAiICAgIHJldHVybiAke2NsYXNzTmFtZX1Qcm90b3R5cGU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2Jq
ZWN0LCAke2NsYXNzTmFtZX1Qcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgZ2xvYmFsT2Jq
ZWN0LCBnbG9iYWxPYmplY3QtPiR7cHJvdG90eXBlfSgpKSk7XG4iKTsKICAgICAgICAgfQogICAg
ICAgICBwdXNoKEBpbXBsQ29udGVudCwgIn1cblxuIik7CiAgICAgfQpAQCAtMTkzNywxMCArMTkz
NywxMCBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICAgICAgICAgICAgICAgICBp
ZiAoJGludGVyZmFjZU5hbWUgZXEgIkRPTVdpbmRvdyIpIHsKICAgICAgICAgICAgICAgICAgICAg
ICAgIG15ICRuYW1lZCA9ICgkY29uc3RydWN0b3JUeXBlID1+IC9OYW1lZCQvKSA/ICJOYW1lZCIg
OiAiIjsKICAgICAgICAgICAgICAgICAgICAgICAgICRjb25zdHJ1Y3RvclR5cGUgPX4gcy9OYW1l
ZCQvLzsKLSAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHJl
dHVybiBKUyIgLiAkY29uc3RydWN0b3JUeXBlIC4gIjo6Z2V0JHtuYW1lZH1Db25zdHJ1Y3Rvcihl
eGVjLCBjYXN0ZWRUaGlzKTtcbiIpOworICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1w
bENvbnRlbnQsICIgICAgcmV0dXJuIEpTIiAuICRjb25zdHJ1Y3RvclR5cGUgLiAiOjpnZXQke25h
bWVkfUNvbnN0cnVjdG9yKGV4ZWMtPnZtKCksIGNhc3RlZFRoaXMpO1xuIik7CiAgICAgICAgICAg
ICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgIEFkZFRvSW1wbEluY2x1
ZGVzKCJKUyIgLiAkY29uc3RydWN0b3JUeXBlIC4gIi5oIiwgJGF0dHJpYnV0ZS0+c2lnbmF0dXJl
LT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ29uZGl0aW9uYWwifSk7Ci0gICAgICAgICAgICAgICAg
ICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHJldHVybiBKUyIgLiAkY29uc3RydWN0b3JU
eXBlIC4gIjo6Z2V0Q29uc3RydWN0b3IoZXhlYywgY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCkp
O1xuIik7CisgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHJl
dHVybiBKUyIgLiAkY29uc3RydWN0b3JUeXBlIC4gIjo6Z2V0Q29uc3RydWN0b3IoZXhlYy0+dm0o
KSwgY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCkpO1xuIik7CiAgICAgICAgICAgICAgICAgICAg
IH0KICAgICAgICAgICAgICAgICB9IGVsc2lmICghJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRl
bmRlZEF0dHJpYnV0ZXMtPnsiR2V0dGVyUmFpc2VzRXhjZXB0aW9uIn0pIHsKICAgICAgICAgICAg
ICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgVU5VU0VEX1BBUkFNKGV4ZWMpO1xuIikg
aWYgISRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkNhbGxXaXRo
In07CkBAIC0yMDQ3LDcgKzIwNDcsNyBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAg
ICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgcmV0dXJuIGpzVW5k
ZWZpbmVkKCk7XG4iKTsKICAgICAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgICAgICBwdXNo
KEBpbXBsQ29udGVudCwgIiAgICByZXR1cm4gJHtjbGFzc05hbWV9OjpnZXRDb25zdHJ1Y3Rvcihl
eGVjLCBkb21PYmplY3QtPmdsb2JhbE9iamVjdCgpKTtcbiIpOworICAgICAgICAgICAgICAgIHB1
c2goQGltcGxDb250ZW50LCAiICAgIHJldHVybiAke2NsYXNzTmFtZX06OmdldENvbnN0cnVjdG9y
KGV4ZWMtPnZtKCksIGRvbU9iamVjdC0+Z2xvYmFsT2JqZWN0KCkpO1xuIik7CiAgICAgICAgICAg
ICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ9XG5cbiIpOwogICAgICAgICAgICAgfQogICAgICAg
ICB9CkBAIC0yMzEyLDEyICsyMzEyLDEyIEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAg
ICAgfQogCiAgICAgaWYgKCEkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiTm9JbnRl
cmZhY2VPYmplY3QifSkgewotICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIkpTVmFsdWUgJHtj
bGFzc05hbWV9OjpnZXRDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QpXG57XG4iKTsKLSAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAg
cmV0dXJuIGdldERPTUNvbnN0cnVjdG9yPCR7Y2xhc3NOYW1lfUNvbnN0cnVjdG9yPihleGVjLCBq
c0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QpKTtcbiIpOworICAgICAgICBw
dXNoKEBpbXBsQ29udGVudCwgIkpTVmFsdWUgJHtjbGFzc05hbWV9OjpnZXRDb25zdHJ1Y3RvcihW
TSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpXG57XG4iKTsKKyAgICAgICAgcHVz
aChAaW1wbENvbnRlbnQsICIgICAgcmV0dXJuIGdldERPTUNvbnN0cnVjdG9yPCR7Y2xhc3NOYW1l
fUNvbnN0cnVjdG9yPih2bSwganNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0
KSk7XG4iKTsKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ9XG5cbiIpOwogICAgICAgICBp
ZiAoJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Ik5hbWVkQ29uc3RydWN0b3IifSkg
ewotICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJKU1ZhbHVlICR7Y2xhc3NOYW1lfTo6
Z2V0TmFtZWRDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QpXG57XG4iKTsKLSAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHJl
dHVybiBnZXRET01Db25zdHJ1Y3Rvcjwke2NsYXNzTmFtZX1OYW1lZENvbnN0cnVjdG9yPihleGVj
LCBqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QpKTtcbiIpOworICAgICAg
ICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJKU1ZhbHVlICR7Y2xhc3NOYW1lfTo6Z2V0TmFtZWRD
b25zdHJ1Y3RvcihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpXG57XG4iKTsK
KyAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHJldHVybiBnZXRET01Db25zdHJ1
Y3Rvcjwke2NsYXNzTmFtZX1OYW1lZENvbnN0cnVjdG9yPih2bSwganNDYXN0PEpTRE9NR2xvYmFs
T2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KSk7XG4iKTsKICAgICAgICAgICAgIHB1c2goQGltcGxDb250
ZW50LCAifVxuXG4iKTsKICAgICAgICAgfQogICAgIH0KQEAgLTM3NDksMTQgKzM3NDksMTQgQEAg
c3ViIEdlbmVyYXRlQ29uc3RydWN0b3JEZWNsYXJhdGlvbgogICAgIHB1c2goQCRvdXRwdXRBcnJh
eSwgImNsYXNzICR7Y29uc3RydWN0b3JDbGFzc05hbWV9IDogcHVibGljIERPTUNvbnN0cnVjdG9y
T2JqZWN0IHtcbiIpOwogICAgIHB1c2goQCRvdXRwdXRBcnJheSwgInByaXZhdGU6XG4iKTsKICAg
ICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgJHtjb25zdHJ1Y3RvckNsYXNzTmFtZX0oSlNDOjpT
dHJ1Y3R1cmUqLCBKU0RPTUdsb2JhbE9iamVjdCopO1xuIik7Ci0gICAgcHVzaChAJG91dHB1dEFy
cmF5LCAiICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oSlNDOjpFeGVjU3RhdGUqLCBKU0RPTUdsb2Jh
bE9iamVjdCopO1xuXG4iKTsKKyAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgdm9pZCBmaW5p
c2hDcmVhdGlvbihKU0M6OlZNJiwgSlNET01HbG9iYWxPYmplY3QqKTtcblxuIik7CiAKICAgICBw
dXNoKEAkb3V0cHV0QXJyYXksICJwdWJsaWM6XG4iKTsKICAgICBwdXNoKEAkb3V0cHV0QXJyYXks
ICIgICAgdHlwZWRlZiBET01Db25zdHJ1Y3Rvck9iamVjdCBCYXNlO1xuIik7Ci0gICAgcHVzaChA
JG91dHB1dEFycmF5LCAiICAgIHN0YXRpYyAkY29uc3RydWN0b3JDbGFzc05hbWUqIGNyZWF0ZShK
U0M6OkV4ZWNTdGF0ZSogZXhlYywgSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01HbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdClcbiIpOworICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAg
ICBzdGF0aWMgJGNvbnN0cnVjdG9yQ2xhc3NOYW1lKiBjcmVhdGUoSlNDOjpWTSYgdm0sIEpTQzo6
U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpXG4i
KTsKICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAge1xuIik7Ci0gICAgcHVzaChAJG91dHB1
dEFycmF5LCAiICAgICAgICAkY29uc3RydWN0b3JDbGFzc05hbWUqIHB0ciA9IG5ldyAoTm90TnVs
bCwgSlNDOjphbGxvY2F0ZUNlbGw8JGNvbnN0cnVjdG9yQ2xhc3NOYW1lPigqZXhlYy0+aGVhcCgp
KSkgJGNvbnN0cnVjdG9yQ2xhc3NOYW1lKHN0cnVjdHVyZSwgZ2xvYmFsT2JqZWN0KTtcbiIpOwot
ICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICAgICAgcHRyLT5maW5pc2hDcmVhdGlvbihleGVj
LCBnbG9iYWxPYmplY3QpO1xuIik7CisgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgICAgICAk
Y29uc3RydWN0b3JDbGFzc05hbWUqIHB0ciA9IG5ldyAoTm90TnVsbCwgSlNDOjphbGxvY2F0ZUNl
bGw8JGNvbnN0cnVjdG9yQ2xhc3NOYW1lPih2bS5oZWFwKSkgJGNvbnN0cnVjdG9yQ2xhc3NOYW1l
KHN0cnVjdHVyZSwgZ2xvYmFsT2JqZWN0KTtcbiIpOworICAgIHB1c2goQCRvdXRwdXRBcnJheSwg
IiAgICAgICAgcHRyLT5maW5pc2hDcmVhdGlvbih2bSwgZ2xvYmFsT2JqZWN0KTtcbiIpOwogICAg
IHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICAgICAgcmV0dXJuIHB0cjtcbiIpOwogICAgIHB1c2go
QCRvdXRwdXRBcnJheSwgIiAgICB9XG5cbiIpOwogCkBAIC0zODAxLDEwICszODAxLDEwIEBAIGNs
YXNzIEpTJHtpbnRlcmZhY2VOYW1lfU5hbWVkQ29uc3RydWN0b3IKIHB1YmxpYzoKICAgICB0eXBl
ZGVmIERPTUNvbnN0cnVjdG9yV2l0aERvY3VtZW50IEJhc2U7CiAKLSAgICBzdGF0aWMgSlMke2lu
dGVyZmFjZU5hbWV9TmFtZWRDb25zdHJ1Y3RvciogY3JlYXRlKEpTQzo6RXhlY1N0YXRlKiBleGVj
LCBKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0KQorICAgIHN0YXRpYyBKUyR7aW50ZXJmYWNlTmFtZX1OYW1lZENvbnN0cnVjdG9yKiBjcmVh
dGUoSlNDOjpWTSYgdm0sIEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTRE9NR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QpCiAgICAgewotICAgICAgICBKUyR7aW50ZXJmYWNlTmFtZX1OYW1l
ZENvbnN0cnVjdG9yKiBjb25zdHJ1Y3RvciA9IG5ldyAoTm90TnVsbCwgSlNDOjphbGxvY2F0ZUNl
bGw8SlMke2ludGVyZmFjZU5hbWV9TmFtZWRDb25zdHJ1Y3Rvcj4oKmV4ZWMtPmhlYXAoKSkpIEpT
JHtpbnRlcmZhY2VOYW1lfU5hbWVkQ29uc3RydWN0b3Ioc3RydWN0dXJlLCBnbG9iYWxPYmplY3Qp
OwotICAgICAgICBjb25zdHJ1Y3Rvci0+ZmluaXNoQ3JlYXRpb24oZXhlYywgZ2xvYmFsT2JqZWN0
KTsKKyAgICAgICAgSlMke2ludGVyZmFjZU5hbWV9TmFtZWRDb25zdHJ1Y3RvciogY29uc3RydWN0
b3IgPSBuZXcgKE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxsPEpTJHtpbnRlcmZhY2VOYW1lfU5h
bWVkQ29uc3RydWN0b3I+KHZtLmhlYXApKSBKUyR7aW50ZXJmYWNlTmFtZX1OYW1lZENvbnN0cnVj
dG9yKHN0cnVjdHVyZSwgZ2xvYmFsT2JqZWN0KTsKKyAgICAgICAgY29uc3RydWN0b3ItPmZpbmlz
aENyZWF0aW9uKHZtLCBnbG9iYWxPYmplY3QpOwogICAgICAgICByZXR1cm4gY29uc3RydWN0b3I7
CiAgICAgfQogCkBAIC0zODE5LDcgKzM4MTksNyBAQCBwcml2YXRlOgogICAgIEpTJHtpbnRlcmZh
Y2VOYW1lfU5hbWVkQ29uc3RydWN0b3IoSlNDOjpTdHJ1Y3R1cmUqLCBKU0RPTUdsb2JhbE9iamVj
dCopOwogICAgIHN0YXRpYyBKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3Ry
dWN0SlMke2ludGVyZmFjZU5hbWV9KEpTQzo6RXhlY1N0YXRlKik7CiAgICAgc3RhdGljIEpTQzo6
Q29uc3RydWN0VHlwZSBnZXRDb25zdHJ1Y3REYXRhKEpTQzo6SlNDZWxsKiwgSlNDOjpDb25zdHJ1
Y3REYXRhJik7Ci0gICAgdm9pZCBmaW5pc2hDcmVhdGlvbihKU0M6OkV4ZWNTdGF0ZSosIEpTRE9N
R2xvYmFsT2JqZWN0Kik7CisgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihKU0M6OlZNJiwgSlNET01H
bG9iYWxPYmplY3QqKTsKIH07CiAKIEVORApAQCAtNDA4OSwyMiArNDA4OSwyMiBAQCBzdWIgR2Vu
ZXJhdGVDb25zdHJ1Y3RvckhlbHBlck1ldGhvZHMKICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5
LCAie1xufVxuXG4iKTsKICAgICB9CiAKLSAgICBwdXNoKEAkb3V0cHV0QXJyYXksICJ2b2lkICR7
Y29uc3RydWN0b3JDbGFzc05hbWV9OjpmaW5pc2hDcmVhdGlvbihFeGVjU3RhdGUqIGV4ZWMsIEpT
RE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpXG4iKTsKKyAgICBwdXNoKEAkb3V0cHV0QXJy
YXksICJ2b2lkICR7Y29uc3RydWN0b3JDbGFzc05hbWV9OjpmaW5pc2hDcmVhdGlvbihWTSYgdm0s
IEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpXG4iKTsKICAgICBwdXNoKEAkb3V0cHV0
QXJyYXksICJ7XG4iKTsKICAgICBpZiAoSXNET01HbG9iYWxPYmplY3QoJGludGVyZmFjZSkpIHsK
LSAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKGV4
ZWMtPnZtKCkpO1xuIik7CisgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBCYXNlOjpm
aW5pc2hDcmVhdGlvbih2bSk7XG4iKTsKICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAg
IEFTU0VSVChpbmhlcml0cyhpbmZvKCkpKTtcbiIpOwotICAgICAgICBwdXNoKEAkb3V0cHV0QXJy
YXksICIgICAgcHV0RGlyZWN0KGV4ZWMtPnZtKCksIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5wcm90
b3R5cGUsIGdsb2JhbE9iamVjdC0+cHJvdG90eXBlKCksIERvbnREZWxldGUgfCBSZWFkT25seSk7
XG4iKTsKKyAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIHB1dERpcmVjdCh2bSwgdm0u
cHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBnbG9iYWxPYmplY3QtPnByb3RvdHlwZSgpLCBEb250
RGVsZXRlIHwgUmVhZE9ubHkpO1xuIik7CiAgICAgfSBlbHNpZiAoJGdlbmVyYXRpbmdOYW1lZENv
bnN0cnVjdG9yKSB7CiAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBCYXNlOjpmaW5p
c2hDcmVhdGlvbihnbG9iYWxPYmplY3QpO1xuIik7CiAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJh
eSwgIiAgICBBU1NFUlQoaW5oZXJpdHMoaW5mbygpKSk7XG4iKTsKLSAgICAgICAgcHVzaChAJG91
dHB1dEFycmF5LCAiICAgIHB1dERpcmVjdChleGVjLT52bSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVz
KCkucHJvdG90eXBlLCAke2NsYXNzTmFtZX1Qcm90b3R5cGU6OnNlbGYoZXhlYywgZ2xvYmFsT2Jq
ZWN0KSwgTm9uZSk7XG4iKTsKKyAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIHB1dERp
cmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCAke2NsYXNzTmFtZX1Qcm90b3R5
cGU6OnNlbGYodm0sIGdsb2JhbE9iamVjdCksIE5vbmUpO1xuIik7CiAgICAgfSBlbHNlIHsKLSAg
ICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKGV4ZWMt
PnZtKCkpO1xuIik7CisgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBCYXNlOjpmaW5p
c2hDcmVhdGlvbih2bSk7XG4iKTsKICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIEFT
U0VSVChpbmhlcml0cyhpbmZvKCkpKTtcbiIpOwotICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXks
ICIgICAgcHV0RGlyZWN0KGV4ZWMtPnZtKCksIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5wcm90b3R5
cGUsICR7cHJvdG9DbGFzc05hbWV9OjpzZWxmKGV4ZWMsIGdsb2JhbE9iamVjdCksIERvbnREZWxl
dGUgfCBSZWFkT25seSk7XG4iKTsKKyAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIHB1
dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCAke3Byb3RvQ2xhc3NOYW1l
fTo6c2VsZih2bSwgZ2xvYmFsT2JqZWN0KSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KTtcbiIpOwog
ICAgIH0KLSAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgcHV0RGlyZWN0KGV4ZWMtPnZtKCks
IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5sZW5ndGgsIGpzTnVtYmVyKCR7bGVhc3RDb25zdHJ1Y3Rv
ckxlbmd0aH0pLCBSZWFkT25seSB8IERvbnREZWxldGUgfCBEb250RW51bSk7XG4iKSBpZiBkZWZp
bmVkICRsZWFzdENvbnN0cnVjdG9yTGVuZ3RoOworICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAg
ICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aCwganNOdW1iZXIoJHtsZWFz
dENvbnN0cnVjdG9yTGVuZ3RofSksIFJlYWRPbmx5IHwgRG9udERlbGV0ZSB8IERvbnRFbnVtKTtc
biIpIGlmIGRlZmluZWQgJGxlYXN0Q29uc3RydWN0b3JMZW5ndGg7CiAgICAgcHVzaChAJG91dHB1
dEFycmF5LCAifVxuXG4iKTsKIAogICAgIGlmICghJGdlbmVyYXRpbmdOYW1lZENvbnN0cnVjdG9y
KSB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9hcnJheS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX2FycmF5LmgJKHJldmlzaW9uIDE1
NjQ0MCkKKysrIFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX2FycmF5LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTY3LDcgKzY3LDcgQEAgcHVibGljOgogCiAgICAgREVDTEFSRV9JTkZPOwogCi0g
ICAgc3RhdGljIEFycmF5UHJvdG90eXBlKiBjcmVhdGVQcm90b3R5cGUoRXhlY1N0YXRlKiwgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKKyAgICBzdGF0aWMgQXJyYXlQcm90b3R5cGUqIGNy
ZWF0ZVByb3RvdHlwZShWTSYsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiAgICAgewog
ICAgICAgICByZXR1cm4gZ2xvYmFsT2JqZWN0LT5hcnJheVByb3RvdHlwZSgpOwogICAgIH0KSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX21ldGhvZC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX21ldGhvZC5oCShyZXZpc2lvbiAxNTY0NDAp
CisrKyBTb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9tZXRob2QuaAkod29ya2luZyBjb3B5
KQpAQCAtNDgsNyArNDgsNyBAQCBwdWJsaWM6CiAKICAgICBERUNMQVJFX0lORk87CiAKLSAgICBz
dGF0aWMgRnVuY3Rpb25Qcm90b3R5cGUqIGNyZWF0ZVByb3RvdHlwZShFeGVjU3RhdGUqLCBKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQorICAgIHN0YXRpYyBGdW5jdGlvblByb3RvdHlwZSog
Y3JlYXRlUHJvdG90eXBlKFZNJiwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKICAgICB7
CiAgICAgICAgIHJldHVybiBnbG9iYWxPYmplY3QtPmZ1bmN0aW9uUHJvdG90eXBlKCk7CiAgICAg
fQpJbmRleDogU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfb2JqZWN0LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9vYmplY3QuY3BwCShyZXZpc2lv
biAxNTY0NDApCisrKyBTb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9vYmplY3QuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0zNywxNSArMzcsMTUgQEAgbmFtZXNwYWNlIEJpbmRpbmdzIHsKIAog
Y29uc3QgQ2xhc3NJbmZvIFJ1bnRpbWVPYmplY3Q6OnNfaW5mbyA9IHsgIlJ1bnRpbWVPYmplY3Qi
LCAmQmFzZTo6c19pbmZvLCAwLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKFJ1bnRpbWVPYmplY3Qp
IH07CiAKLVJ1bnRpbWVPYmplY3Q6OlJ1bnRpbWVPYmplY3QoRXhlY1N0YXRlKiwgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFBhc3NSZWZQdHI8SW5z
dGFuY2U+IGluc3RhbmNlKQotICAgIDogSlNEZXN0cnVjdGlibGVPYmplY3QoZ2xvYmFsT2JqZWN0
LT52bSgpLCBzdHJ1Y3R1cmUpCitSdW50aW1lT2JqZWN0OjpSdW50aW1lT2JqZWN0KFZNJiB2bSwg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFBhc3NSZWZQdHI8SW5zdGFuY2U+IGluc3RhbmNlKQorICAg
IDogSlNEZXN0cnVjdGlibGVPYmplY3Qodm0sIHN0cnVjdHVyZSkKICAgICAsIG1faW5zdGFuY2Uo
aW5zdGFuY2UpCiB7CiB9CiAKLXZvaWQgUnVudGltZU9iamVjdDo6ZmluaXNoQ3JlYXRpb24oSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKK3ZvaWQgUnVudGltZU9iamVjdDo6ZmluaXNoQ3Jl
YXRpb24oVk0mIHZtKQogewotICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKGdsb2JhbE9iamVjdC0+
dm0oKSk7CisgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOwogICAgIEFTU0VSVChpbmhlcml0
cyhpbmZvKCkpKTsKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfb2Jq
ZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfb2JqZWN0
LmgJKHJldmlzaW9uIDE1NjQ0MCkKKysrIFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX29i
amVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNiwxMCArMzYsMTAgQEAgY2xhc3MgUnVudGltZU9i
amVjdCA6IHB1YmxpYyBKU0Rlc3RydWN0aQogcHVibGljOgogICAgIHR5cGVkZWYgSlNEZXN0cnVj
dGlibGVPYmplY3QgQmFzZTsKIAotICAgIHN0YXRpYyBSdW50aW1lT2JqZWN0KiBjcmVhdGUoRXhl
Y1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSwgUGFzc1JlZlB0cjxJbnN0YW5jZT4gaW5zdGFuY2UpCisgICAgc3RhdGljIFJ1bnRp
bWVPYmplY3QqIGNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBQYXNzUmVmUHRy
PEluc3RhbmNlPiBpbnN0YW5jZSkKICAgICB7Ci0gICAgICAgIFJ1bnRpbWVPYmplY3QqIG9iamVj
dCA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPFJ1bnRpbWVPYmplY3Q+KCpleGVjLT5oZWFw
KCkpKSBSdW50aW1lT2JqZWN0KGV4ZWMsIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBpbnN0YW5j
ZSk7Ci0gICAgICAgIG9iamVjdC0+ZmluaXNoQ3JlYXRpb24oZ2xvYmFsT2JqZWN0KTsKKyAgICAg
ICAgUnVudGltZU9iamVjdCogb2JqZWN0ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8UnVu
dGltZU9iamVjdD4odm0uaGVhcCkpIFJ1bnRpbWVPYmplY3Qodm0sIHN0cnVjdHVyZSwgaW5zdGFu
Y2UpOworICAgICAgICBvYmplY3QtPmZpbmlzaENyZWF0aW9uKHZtKTsKICAgICAgICAgcmV0dXJu
IG9iamVjdDsKICAgICB9CiAKQEAgLTYyLDcgKzYyLDcgQEAgcHVibGljOgogCiAgICAgREVDTEFS
RV9JTkZPOwogCi0gICAgc3RhdGljIE9iamVjdFByb3RvdHlwZSogY3JlYXRlUHJvdG90eXBlKEV4
ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCisgICAgc3RhdGljIE9iamVj
dFByb3RvdHlwZSogY3JlYXRlUHJvdG90eXBlKFZNJiwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCkKICAgICB7CiAgICAgICAgIHJldHVybiBnbG9iYWxPYmplY3QtPm9iamVjdFByb3RvdHlw
ZSgpOwogICAgIH0KQEAgLTczLDggKzczLDggQEAgcHVibGljOgogICAgIH0KIAogcHJvdGVjdGVk
OgotICAgIFJ1bnRpbWVPYmplY3QoRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1
cmUqLCBQYXNzUmVmUHRyPEluc3RhbmNlPik7Ci0gICAgdm9pZCBmaW5pc2hDcmVhdGlvbihKU0ds
b2JhbE9iamVjdCopOworICAgIFJ1bnRpbWVPYmplY3QoVk0mLCBTdHJ1Y3R1cmUqLCBQYXNzUmVm
UHRyPEluc3RhbmNlPik7CisgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYpOwogICAgIHN0YXRp
YyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IE92ZXJyaWRlc0dldE93blByb3BlcnR5
U2xvdCB8IE92ZXJyaWRlc0dldFByb3BlcnR5TmFtZXMgfCBCYXNlOjpTdHJ1Y3R1cmVGbGFnczsK
IAogcHJpdmF0ZToKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9jL0NSdW50aW1lT2JqZWN0
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9icmlkZ2UvYy9DUnVudGltZU9iamVj
dC5jcHAJKHJldmlzaW9uIDE1NjQ0MCkKKysrIFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9jL0NSdW50
aW1lT2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzcsMTQgKzM3LDE0IEBAIG5hbWVzcGFj
ZSBCaW5kaW5ncyB7CiAKIGNvbnN0IENsYXNzSW5mbyBDUnVudGltZU9iamVjdDo6c19pbmZvID0g
eyAiQ1J1bnRpbWVPYmplY3QiLCAmUnVudGltZU9iamVjdDo6c19pbmZvLCAwLCAwLCBDUkVBVEVf
TUVUSE9EX1RBQkxFKENSdW50aW1lT2JqZWN0KSB9OwogCi1DUnVudGltZU9iamVjdDo6Q1J1bnRp
bWVPYmplY3QoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUGFzc1JlZlB0cjxDSW5zdGFuY2U+IGluc3RhbmNlKQotICAg
IDogUnVudGltZU9iamVjdChleGVjLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgaW5zdGFuY2Up
CitDUnVudGltZU9iamVjdDo6Q1J1bnRpbWVPYmplY3QoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSwgUGFzc1JlZlB0cjxDSW5zdGFuY2U+IGluc3RhbmNlKQorICAgIDogUnVudGltZU9iamVj
dCh2bSwgc3RydWN0dXJlLCBpbnN0YW5jZSkKIHsKIH0KIAotdm9pZCBDUnVudGltZU9iamVjdDo6
ZmluaXNoQ3JlYXRpb24oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKK3ZvaWQgQ1J1bnRp
bWVPYmplY3Q6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKIHsKLSAgICBCYXNlOjpmaW5pc2hDcmVh
dGlvbihnbG9iYWxPYmplY3QpOworICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKICAgICBB
U1NFUlQoaW5oZXJpdHMoaW5mbygpKSk7CiB9CiAKQEAgLTUzLDcgKzUzLDYgQEAgQ0luc3RhbmNl
KiBDUnVudGltZU9iamVjdDo6Z2V0SW50ZXJuYWxDSQogICAgIHJldHVybiBzdGF0aWNfY2FzdDxD
SW5zdGFuY2UqPihnZXRJbnRlcm5hbEluc3RhbmNlKCkpOwogfQogCi0KIH0KIH0KIApJbmRleDog
U291cmNlL1dlYkNvcmUvYnJpZGdlL2MvQ1J1bnRpbWVPYmplY3QuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9icmlkZ2UvYy9DUnVudGltZU9iamVjdC5oCShyZXZpc2lvbiAxNTY0NDAp
CisrKyBTb3VyY2UvV2ViQ29yZS9icmlkZ2UvYy9DUnVudGltZU9iamVjdC5oCSh3b3JraW5nIGNv
cHkpCkBAIC0zMSw2ICszMSwxMCBAQAogI2luY2x1ZGUgIkpTRE9NQmluZGluZy5oIgogI2luY2x1
ZGUgInJ1bnRpbWVfb2JqZWN0LmgiCiAKK25hbWVzcGFjZSBXZWJDb3JlIHsKKyAgICBjbGFzcyBK
U0RPTUdsb2JhbE9iamVjdDsKK30KKwogbmFtZXNwYWNlIEpTQyB7CiBuYW1lc3BhY2UgQmluZGlu
Z3MgewogCkBAIC00MCwxMyArNDQsMTAgQEAgY2xhc3MgQ1J1bnRpbWVPYmplY3QgOiBwdWJsaWMg
UnVudGltZU9iagogcHVibGljOgogICAgIHR5cGVkZWYgUnVudGltZU9iamVjdCBCYXNlOwogCi0g
ICAgc3RhdGljIENSdW50aW1lT2JqZWN0KiBjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQYXNzUmVmUHRyPENJbnN0YW5jZT4gaW5zdGFuY2UpCisg
ICAgc3RhdGljIENSdW50aW1lT2JqZWN0KiBjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSwgUGFzc1JlZlB0cjxDSW5zdGFuY2U+IGluc3RhbmNlKQogICAgIHsKLSAgICAgICAgLy8g
RklYTUU6IGRlcHJlY2F0ZWRHZXRET01TdHJ1Y3R1cmUgdXNlcyB0aGUgcHJvdG90eXBlIG9mZiBv
ZiB0aGUgd3JvbmcgZ2xvYmFsIG9iamVjdAotICAgICAgICAvLyBXZSBuZWVkIHRvIHBhc3MgaW4g
dGhlIHJpZ2h0IGdsb2JhbCBvYmplY3QgZm9yICJpIi4KLSAgICAgICAgU3RydWN0dXJlKiBkb21T
dHJ1Y3R1cmUgPSBXZWJDb3JlOjpkZXByZWNhdGVkR2V0RE9NU3RydWN0dXJlPENSdW50aW1lT2Jq
ZWN0PihleGVjKTsKLSAgICAgICAgQ1J1bnRpbWVPYmplY3QqIG9iamVjdCA9IG5ldyAoTm90TnVs
bCwgYWxsb2NhdGVDZWxsPENSdW50aW1lT2JqZWN0PigqZXhlYy0+aGVhcCgpKSkgQ1J1bnRpbWVP
YmplY3QoZXhlYywgZ2xvYmFsT2JqZWN0LCBkb21TdHJ1Y3R1cmUsIGluc3RhbmNlKTsKLSAgICAg
ICAgb2JqZWN0LT5maW5pc2hDcmVhdGlvbihnbG9iYWxPYmplY3QpOworICAgICAgICBDUnVudGlt
ZU9iamVjdCogb2JqZWN0ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8Q1J1bnRpbWVPYmpl
Y3Q+KHZtLmhlYXApKSBDUnVudGltZU9iamVjdCh2bSwgc3RydWN0dXJlLCBpbnN0YW5jZSk7Cisg
ICAgICAgIG9iamVjdC0+ZmluaXNoQ3JlYXRpb24odm0pOwogICAgICAgICByZXR1cm4gb2JqZWN0
OwogICAgIH0KIApAQCAtNjAsOCArNjEsOCBAQCBwdWJsaWM6CiAgICAgfQogCiBwcml2YXRlOgot
ICAgIENSdW50aW1lT2JqZWN0KEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJl
KiwgUGFzc1JlZlB0cjxDSW5zdGFuY2U+KTsKLSAgICB2b2lkIGZpbmlzaENyZWF0aW9uKEpTR2xv
YmFsT2JqZWN0Kik7CisgICAgQ1J1bnRpbWVPYmplY3QoVk0mLCBTdHJ1Y3R1cmUqLCBQYXNzUmVm
UHRyPENJbnN0YW5jZT4pOworICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mKTsKIH07CiAKIH0K
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9jL2NfaW5zdGFuY2UuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9jL2NfaW5zdGFuY2UuY3BwCShyZXZpc2lvbiAxNTY0
NDApCisrKyBTb3VyY2UvV2ViQ29yZS9icmlkZ2UvYy9jX2luc3RhbmNlLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtOTIsNyArOTIsOCBAQCBDSW5zdGFuY2U6On5DSW5zdGFuY2UoKQogCiBSdW50aW1l
T2JqZWN0KiBDSW5zdGFuY2U6Om5ld1J1bnRpbWVPYmplY3QoRXhlY1N0YXRlKiBleGVjKQogewot
ICAgIHJldHVybiBDUnVudGltZU9iamVjdDo6Y3JlYXRlKGV4ZWMsIGV4ZWMtPmxleGljYWxHbG9i
YWxPYmplY3QoKSwgdGhpcyk7CisgICAgLy8gRklYTUU6IGRlcHJlY2F0ZWRHZXRET01TdHJ1Y3R1
cmUgdXNlcyB0aGUgcHJvdG90eXBlIG9mZiBvZiB0aGUgd3JvbmcgZ2xvYmFsIG9iamVjdC4KKyAg
ICByZXR1cm4gQ1J1bnRpbWVPYmplY3Q6OmNyZWF0ZShleGVjLT52bSgpLCBXZWJDb3JlOjpkZXBy
ZWNhdGVkR2V0RE9NU3RydWN0dXJlPENSdW50aW1lT2JqZWN0PihleGVjKSwgdGhpcyk7CiB9CiAK
IENsYXNzICpDSW5zdGFuY2U6OmdldENsYXNzKCkgY29uc3QKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2JyaWRnZS9qc2MvQnJpZGdlSlNDLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9i
cmlkZ2UvanNjL0JyaWRnZUpTQy5jcHAJKHJldmlzaW9uIDE1NjQ0MCkKKysrIFNvdXJjZS9XZWJD
b3JlL2JyaWRnZS9qc2MvQnJpZGdlSlNDLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTEsOSArOTEs
OCBAQCBSdW50aW1lT2JqZWN0KiBJbnN0YW5jZTo6bmV3UnVudGltZU9iamVjCiB7CiAgICAgSlNM
b2NrSG9sZGVyIGxvY2soZXhlYyk7CiAKLSAgICAvLyBGSVhNRTogZGVwcmVjYXRlZEdldERPTVN0
cnVjdHVyZSB1c2VzIHRoZSBwcm90b3R5cGUgb2ZmIG9mIHRoZSB3cm9uZyBnbG9iYWwgb2JqZWN0
Ci0gICAgLy8gV2UgbmVlZCB0byBwYXNzIGluIHRoZSByaWdodCBnbG9iYWwgb2JqZWN0IGZvciAi
aSIuCi0gICAgcmV0dXJuIFJ1bnRpbWVPYmplY3Q6OmNyZWF0ZShleGVjLCBleGVjLT5sZXhpY2Fs
R2xvYmFsT2JqZWN0KCksIFdlYkNvcmU6OmRlcHJlY2F0ZWRHZXRET01TdHJ1Y3R1cmU8UnVudGlt
ZU9iamVjdD4oZXhlYyksIHRoaXMpOworICAgIC8vIEZJWE1FOiBkZXByZWNhdGVkR2V0RE9NU3Ry
dWN0dXJlIHVzZXMgdGhlIHByb3RvdHlwZSBvZmYgb2YgdGhlIHdyb25nIGdsb2JhbCBvYmplY3Qu
CisgICAgcmV0dXJuIFJ1bnRpbWVPYmplY3Q6OmNyZWF0ZShleGVjLT52bSgpLCBXZWJDb3JlOjpk
ZXByZWNhdGVkR2V0RE9NU3RydWN0dXJlPFJ1bnRpbWVPYmplY3Q+KGV4ZWMpLCB0aGlzKTsKIH0K
IAogdm9pZCBJbnN0YW5jZTo6d2lsbEludmFsaWRhdGVSdW50aW1lT2JqZWN0KCkKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL09iakNSdW50aW1lT2JqZWN0LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvT2JqQ1J1bnRpbWVPYmplY3QuaAkocmV2aXNp
b24gMTU2NDQwKQorKysgU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvT2JqQ1J1bnRpbWVPYmpl
Y3QuaAkod29ya2luZyBjb3B5KQpAQCAtMzcsMTMgKzM3LDEwIEBAIGNsYXNzIE9iakNSdW50aW1l
T2JqZWN0IDogcHVibGljIFJ1bnRpbWUKIHB1YmxpYzoKICAgICB0eXBlZGVmIFJ1bnRpbWVPYmpl
Y3QgQmFzZTsKIAotICAgIHN0YXRpYyBPYmpDUnVudGltZU9iamVjdCogY3JlYXRlKEV4ZWNTdGF0
ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUGFzc1JlZlB0cjxPYmpjSW5z
dGFuY2U+IGluc3QpCisgICAgc3RhdGljIE9iakNSdW50aW1lT2JqZWN0KiBjcmVhdGUoVk0mIHZt
LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUGFzc1JlZlB0cjxPYmpjSW5zdGFuY2U+IGluc3QpCiAg
ICAgewotICAgICAgICAvLyBGSVhNRTogZGVwcmVjYXRlZEdldERPTVN0cnVjdHVyZSB1c2VzIHRo
ZSBwcm90b3R5cGUgb2ZmIG9mIHRoZSB3cm9uZyBnbG9iYWwgb2JqZWN0Ci0gICAgICAgIC8vIFdl
IG5lZWQgdG8gcGFzcyBpbiB0aGUgcmlnaHQgZ2xvYmFsIG9iamVjdCBmb3IgImkiLgotICAgICAg
ICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IFdlYkNvcmU6OmRlcHJlY2F0ZWRHZXRET01TdHJ1Y3R1
cmU8T2JqQ1J1bnRpbWVPYmplY3Q+KGV4ZWMpOwotICAgICAgICBPYmpDUnVudGltZU9iamVjdCog
b2JqZWN0ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8T2JqQ1J1bnRpbWVPYmplY3Q+KCpl
eGVjLT5oZWFwKCkpKSBPYmpDUnVudGltZU9iamVjdChleGVjLCBnbG9iYWxPYmplY3QsIGluc3Qs
IHN0cnVjdHVyZSk7Ci0gICAgICAgIG9iamVjdC0+ZmluaXNoQ3JlYXRpb24oZ2xvYmFsT2JqZWN0
KTsKKyAgICAgICAgT2JqQ1J1bnRpbWVPYmplY3QqIG9iamVjdCA9IG5ldyAoTm90TnVsbCwgYWxs
b2NhdGVDZWxsPE9iakNSdW50aW1lT2JqZWN0Pih2bS5oZWFwKSkgT2JqQ1J1bnRpbWVPYmplY3Qo
dm0sIHN0cnVjdHVyZSwgaW5zdCk7CisgICAgICAgIG9iamVjdC0+ZmluaXNoQ3JlYXRpb24odm0p
OwogICAgICAgICByZXR1cm4gb2JqZWN0OwogICAgIH0KIApAQCAtNTcsOCArNTQsOCBAQCBwdWJs
aWM6CiAgICAgfQogCiBwcml2YXRlOgotICAgIE9iakNSdW50aW1lT2JqZWN0KEV4ZWNTdGF0ZSos
IEpTR2xvYmFsT2JqZWN0KiwgUGFzc1JlZlB0cjxPYmpjSW5zdGFuY2U+LCBTdHJ1Y3R1cmUqKTsK
LSAgICB2b2lkIGZpbmlzaENyZWF0aW9uKEpTR2xvYmFsT2JqZWN0Kik7CisgICAgT2JqQ1J1bnRp
bWVPYmplY3QoVk0mLCBTdHJ1Y3R1cmUqLCBQYXNzUmVmUHRyPE9iamNJbnN0YW5jZT4pOworICAg
IHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mKTsKIH07CiAKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2JyaWRnZS9vYmpjL09iakNSdW50aW1lT2JqZWN0Lm1tCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2JyaWRnZS9vYmpjL09iakNSdW50aW1lT2JqZWN0Lm1tCShyZXZpc2lvbiAxNTY0NDAp
CisrKyBTb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9PYmpDUnVudGltZU9iamVjdC5tbQkod29y
a2luZyBjb3B5KQpAQCAtMzUsMTQgKzM1LDE0IEBAIG5hbWVzcGFjZSBCaW5kaW5ncyB7CiAKIGNv
bnN0IENsYXNzSW5mbyBPYmpDUnVudGltZU9iamVjdDo6c19pbmZvID0geyAiT2JqQ1J1bnRpbWVP
YmplY3QiLCAmUnVudGltZU9iamVjdDo6c19pbmZvLCAwLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxF
KE9iakNSdW50aW1lT2JqZWN0KSB9OwogCi1PYmpDUnVudGltZU9iamVjdDo6T2JqQ1J1bnRpbWVP
YmplY3QoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQYXNz
UmVmUHRyPE9iamNJbnN0YW5jZT4gaW5zdGFuY2UsIFN0cnVjdHVyZSogc3RydWN0dXJlKQotICAg
IDogUnVudGltZU9iamVjdChleGVjLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgaW5zdGFuY2Up
CitPYmpDUnVudGltZU9iamVjdDo6T2JqQ1J1bnRpbWVPYmplY3QoVk0mIHZtLCBTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSwgUGFzc1JlZlB0cjxPYmpjSW5zdGFuY2U+IGluc3RhbmNlKQorICAgIDogUnVu
dGltZU9iamVjdCh2bSwgc3RydWN0dXJlLCBpbnN0YW5jZSkKIHsKIH0KIAotdm9pZCBPYmpDUnVu
dGltZU9iamVjdDo6ZmluaXNoQ3JlYXRpb24oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkK
K3ZvaWQgT2JqQ1J1bnRpbWVPYmplY3Q6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKIHsKLSAgICBC
YXNlOjpmaW5pc2hDcmVhdGlvbihnbG9iYWxPYmplY3QpOworICAgIEJhc2U6OmZpbmlzaENyZWF0
aW9uKHZtKTsKICAgICBBU1NFUlQoaW5oZXJpdHMoJnNfaW5mbykpOwogfQogCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX2luc3RhbmNlLm1tCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfaW5zdGFuY2UubW0JKHJldmlzaW9uIDE1NjQ0
MCkKKysrIFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfaW5zdGFuY2UubW0JKHdvcmtp
bmcgY29weSkKQEAgLTcyLDcgKzcyLDggQEAgc3RhdGljIE5TTWFwVGFibGUgKmNyZWF0ZUluc3Rh
bmNlV3JhcHBlcgogCiBSdW50aW1lT2JqZWN0KiBPYmpjSW5zdGFuY2U6Om5ld1J1bnRpbWVPYmpl
Y3QoRXhlY1N0YXRlKiBleGVjKQogewotICAgIHJldHVybiBPYmpDUnVudGltZU9iamVjdDo6Y3Jl
YXRlKGV4ZWMsIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSwgdGhpcyk7CisgICAgLy8gRklY
TUU6IGRlcHJlY2F0ZWRHZXRET01TdHJ1Y3R1cmUgdXNlcyB0aGUgcHJvdG90eXBlIG9mZiBvZiB0
aGUgd3JvbmcgZ2xvYmFsIG9iamVjdC4KKyAgICByZXR1cm4gT2JqQ1J1bnRpbWVPYmplY3Q6OmNy
ZWF0ZShleGVjLT52bSgpLCBXZWJDb3JlOjpkZXByZWNhdGVkR2V0RE9NU3RydWN0dXJlPE9iakNS
dW50aW1lT2JqZWN0PihleGVjKSwgdGhpcyk7CiB9CiAKIHZvaWQgT2JqY0luc3RhbmNlOjpzZXRH
bG9iYWxFeGNlcHRpb24oTlNTdHJpbmcqIGV4Y2VwdGlvbiwgSlNHbG9iYWxPYmplY3QqIGV4Y2Vw
dGlvbkVudmlyb25tZW50KQpJbmRleDogU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19y
dW50aW1lLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19y
dW50aW1lLmgJKHJldmlzaW9uIDE1NjQ0MCkKKysrIFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpj
L29iamNfcnVudGltZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDcsNyArMTA3LDcgQEAgcHVibGlj
OgogCiAgICAgY29uc3QgU3RyaW5nJiBwcm9wZXJ0eU5hbWUoKSBjb25zdCB7IHJldHVybiBtX2l0
ZW07IH0KIAotICAgIHN0YXRpYyBPYmplY3RQcm90b3R5cGUqIGNyZWF0ZVByb3RvdHlwZShFeGVj
U3RhdGUqLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQorICAgIHN0YXRpYyBPYmplY3RQ
cm90b3R5cGUqIGNyZWF0ZVByb3RvdHlwZShWTSYsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QpCiAgICAgewogICAgICAgICByZXR1cm4gZ2xvYmFsT2JqZWN0LT5vYmplY3RQcm90b3R5cGUo
KTsKICAgICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9icmlkZ2UvcXQvcXRfaW5zdGFuY2UuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9xdC9xdF9pbnN0YW5jZS5jcHAJ
KHJldmlzaW9uIDE1NjQ0MCkKKysrIFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9xdC9xdF9pbnN0YW5j
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUwLDExICs1MCwxMCBAQCBjbGFzcyBRdFJ1bnRpbWVP
YmplY3QgOiBwdWJsaWMgUnVudGltZU9iCiBwdWJsaWM6CiAgICAgdHlwZWRlZiBSdW50aW1lT2Jq
ZWN0IEJhc2U7CiAKLSAgICBzdGF0aWMgUXRSdW50aW1lT2JqZWN0KiBjcmVhdGUoRXhlY1N0YXRl
KiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQYXNzUmVmUHRyPEluc3RhbmNl
PiBpbnN0YW5jZSkKKyAgICBzdGF0aWMgUXRSdW50aW1lT2JqZWN0KiBjcmVhdGUoVk0mIHZtLCBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUGFzc1JlZlB0cjxJbnN0YW5jZT4gaW5zdGFuY2UpCiAgICAg
ewotICAgICAgICBTdHJ1Y3R1cmUqIGRvbVN0cnVjdHVyZSA9IFdlYkNvcmU6OmRlcHJlY2F0ZWRH
ZXRET01TdHJ1Y3R1cmU8UXRSdW50aW1lT2JqZWN0PihleGVjKTsKLSAgICAgICAgUXRSdW50aW1l
T2JqZWN0KiBvYmplY3QgPSBuZXcgKGFsbG9jYXRlQ2VsbDxRdFJ1bnRpbWVPYmplY3Q+KCpleGVj
LT5oZWFwKCkpKSBRdFJ1bnRpbWVPYmplY3QoZXhlYywgZ2xvYmFsT2JqZWN0LCBkb21TdHJ1Y3R1
cmUsIGluc3RhbmNlKTsKLSAgICAgICAgb2JqZWN0LT5maW5pc2hDcmVhdGlvbihnbG9iYWxPYmpl
Y3QpOworICAgICAgICBRdFJ1bnRpbWVPYmplY3QqIG9iamVjdCA9IG5ldyAoYWxsb2NhdGVDZWxs
PFF0UnVudGltZU9iamVjdD4odm0uaGVhcCkpIFF0UnVudGltZU9iamVjdCh2bSwgc3RydWN0dXJl
LCBpbnN0YW5jZSk7CisgICAgICAgIG9iamVjdC0+ZmluaXNoQ3JlYXRpb24odm0pOwogICAgICAg
ICByZXR1cm4gb2JqZWN0OwogICAgIH0KICAgICAKQEAgLTY5LDEzICs2OCwxMyBAQCBwcm90ZWN0
ZWQ6CiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gUnVudGltZU9i
amVjdDo6U3RydWN0dXJlRmxhZ3MgfCBPdmVycmlkZXNWaXNpdENoaWxkcmVuOwogCiBwcml2YXRl
OgotICAgIFF0UnVudGltZU9iamVjdChFeGVjU3RhdGUqLCBKU0dsb2JhbE9iamVjdCosIFN0cnVj
dHVyZSosIFBhc3NSZWZQdHI8SW5zdGFuY2U+KTsKKyAgICBRdFJ1bnRpbWVPYmplY3QoVk0mLCBT
dHJ1Y3R1cmUqLCBQYXNzUmVmUHRyPEluc3RhbmNlPik7CiB9OwogCiBjb25zdCBDbGFzc0luZm8g
UXRSdW50aW1lT2JqZWN0OjpzX2luZm8gPSB7ICJRdFJ1bnRpbWVPYmplY3QiLCAmUnVudGltZU9i
amVjdDo6c19pbmZvLCAwLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKFF0UnVudGltZU9iamVjdCkg
fTsKIAotUXRSdW50aW1lT2JqZWN0OjpRdFJ1bnRpbWVPYmplY3QoRXhlY1N0YXRlKiBleGVjLCBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUGFzc1Jl
ZlB0cjxJbnN0YW5jZT4gaW5zdGFuY2UpCi0gICAgOiBSdW50aW1lT2JqZWN0KGV4ZWMsIGdsb2Jh
bE9iamVjdCwgc3RydWN0dXJlLCBpbnN0YW5jZSkKK1F0UnVudGltZU9iamVjdDo6UXRSdW50aW1l
T2JqZWN0KFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFBhc3NSZWZQdHI8SW5zdGFuY2U+
IGluc3RhbmNlKQorICAgIDogUnVudGltZU9iamVjdCh2bSwgc3RydWN0dXJlLCBpbnN0YW5jZSkK
IHsKIH0KIApAQCAtMTcyLDcgKzE3MSw5IEBAIFJ1bnRpbWVPYmplY3QqIFF0SW5zdGFuY2U6Om5l
d1J1bnRpbWVPYmoKICAgICBKU0xvY2tIb2xkZXIgbG9jayhleGVjKTsKICAgICBxRGVsZXRlQWxs
KG1fbWV0aG9kcyk7CiAgICAgbV9tZXRob2RzLmNsZWFyKCk7Ci0gICAgcmV0dXJuIFF0UnVudGlt
ZU9iamVjdDo6Y3JlYXRlKGV4ZWMsIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSwgdGhpcyk7
CisKKyAgICAvLyBGSVhNRTogZGVwcmVjYXRlZEdldERPTVN0cnVjdHVyZSB1c2VzIHRoZSBwcm90
b3R5cGUgb2ZmIG9mIHRoZSB3cm9uZyBnbG9iYWwgb2JqZWN0LgorICAgIHJldHVybiBRdFJ1bnRp
bWVPYmplY3Q6OmNyZWF0ZShleGVjLCBXZWJDb3JlOjpkZXByZWNhdGVkR2V0RE9NU3RydWN0dXJl
PFF0UnVudGltZU9iamVjdD4oZXhlYyksIHRoaXMpOwogfQogCiB2b2lkIFF0SW5zdGFuY2U6OmJl
Z2luKCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cJKHJldmlzaW9uIDE1NjQ0MCkKKysrIFNvdXJjZS9X
ZWJLaXQvbWFjL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE4IEBACisyMDEz
LTA5LTI1ICBTYW0gV2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUGFzcyBhIEpT
Qzo6Vk0mIHRvIEpTIGJpbmRpbmdzIG9iamVjdCBjcmVhdGlvbiBmdW5jdGlvbnMsIHJhdGhlciB0
aGFuIGEgSlNDOjpFeGVjU3RhdGUqCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xMjE5MzQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIFBsdWdpbnMvSG9zdGVkL1Byb3h5SW5zdGFuY2UubW06CisgICAgICAg
IChXZWJLaXQ6OlByb3h5SW5zdGFuY2U6Om5ld1J1bnRpbWVPYmplY3QpOgorICAgICAgICAqIFBs
dWdpbnMvSG9zdGVkL1Byb3h5UnVudGltZU9iamVjdC5oOgorICAgICAgICAoV2ViS2l0OjpQcm94
eVJ1bnRpbWVPYmplY3Q6OmNyZWF0ZSk6CisgICAgICAgICogUGx1Z2lucy9Ib3N0ZWQvUHJveHlS
dW50aW1lT2JqZWN0Lm1tOgorICAgICAgICAoV2ViS2l0OjpQcm94eVJ1bnRpbWVPYmplY3Q6OlBy
b3h5UnVudGltZU9iamVjdCk6CisgICAgICAgIChXZWJLaXQ6OlByb3h5UnVudGltZU9iamVjdDo6
ZmluaXNoQ3JlYXRpb24pOgorCiAyMDEzLTA5LTI1ICBDb21taXQgUXVldWUgIDxjb21taXQtcXVl
dWVAd2Via2l0Lm9yZz4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMTU2NDMy
LgpJbmRleDogU291cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9Ib3N0ZWQvUHJveHlJbnN0YW5jZS5t
bQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL0hvc3RlZC9Qcm94eUlu
c3RhbmNlLm1tCShyZXZpc2lvbiAxNTY0NDApCisrKyBTb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5z
L0hvc3RlZC9Qcm94eUluc3RhbmNlLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xMzMsNyArMTMzLDgg
QEAgUHJveHlJbnN0YW5jZTo6flByb3h5SW5zdGFuY2UoKQogICAgIAogUnVudGltZU9iamVjdCog
UHJveHlJbnN0YW5jZTo6bmV3UnVudGltZU9iamVjdChFeGVjU3RhdGUqIGV4ZWMpCiB7Ci0gICAg
cmV0dXJuIFByb3h5UnVudGltZU9iamVjdDo6Y3JlYXRlKGV4ZWMsIGV4ZWMtPmxleGljYWxHbG9i
YWxPYmplY3QoKSwgdGhpcyk7CisgICAgLy8gRklYTUU6IGRlcHJlY2F0ZWRHZXRET01TdHJ1Y3R1
cmUgdXNlcyB0aGUgcHJvdG90eXBlIG9mZiBvZiB0aGUgd3JvbmcgZ2xvYmFsIG9iamVjdC4KKyAg
ICByZXR1cm4gUHJveHlSdW50aW1lT2JqZWN0OjpjcmVhdGUoZXhlYy0+dm0oKSwgV2ViQ29yZTo6
ZGVwcmVjYXRlZEdldERPTVN0cnVjdHVyZTxQcm94eVJ1bnRpbWVPYmplY3Q+KGV4ZWMpLCB0aGlz
KTsKIH0KIAogSlNDOjpCaW5kaW5nczo6Q2xhc3MqIFByb3h5SW5zdGFuY2U6OmdldENsYXNzKCkg
Y29uc3QKSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvSG9zdGVkL1Byb3h5UnVudGlt
ZU9iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvSG9zdGVk
L1Byb3h5UnVudGltZU9iamVjdC5oCShyZXZpc2lvbiAxNTY0NDApCisrKyBTb3VyY2UvV2ViS2l0
L21hYy9QbHVnaW5zL0hvc3RlZC9Qcm94eVJ1bnRpbWVPYmplY3QuaAkod29ya2luZyBjb3B5KQpA
QCAtMzksMTMgKzM5LDEwIEBAIGNsYXNzIFByb3h5UnVudGltZU9iamVjdCA6IHB1YmxpYyBKU0M6
OkIKIHB1YmxpYzoKICAgICB0eXBlZGVmIEpTQzo6QmluZGluZ3M6OlJ1bnRpbWVPYmplY3QgQmFz
ZTsKIAotICAgIHN0YXRpYyBQcm94eVJ1bnRpbWVPYmplY3QqIGNyZWF0ZShKU0M6OkV4ZWNTdGF0
ZSogZXhlYywgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQYXNzUmVmUHRyPFBy
b3h5SW5zdGFuY2U+IGluc3RhbmNlKQorICAgIHN0YXRpYyBQcm94eVJ1bnRpbWVPYmplY3QqIGNy
ZWF0ZShKU0M6OlZNJiB2bSwgSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUGFzc1JlZlB0cjxQ
cm94eUluc3RhbmNlPiBpbnN0YW5jZSkKICAgICB7Ci0gICAgICAgIC8vIEZJWE1FOiBkZXByZWNh
dGVkR2V0RE9NU3RydWN0dXJlIHVzZXMgdGhlIHByb3RvdHlwZSBvZmYgb2YgdGhlIHdyb25nIGds
b2JhbCBvYmplY3QuCi0gICAgICAgIC8vIGV4ZWMtPnZtKCkgaXMgYWxzbyBsaWtlbHkgd3Jvbmcu
Ci0gICAgICAgIEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBXZWJDb3JlOjpkZXByZWNhdGVk
R2V0RE9NU3RydWN0dXJlPFByb3h5UnVudGltZU9iamVjdD4oZXhlYyk7Ci0gICAgICAgIFByb3h5
UnVudGltZU9iamVjdCogb2JqZWN0ID0gbmV3IChKU0M6OmFsbG9jYXRlQ2VsbDxQcm94eVJ1bnRp
bWVPYmplY3Q+KCpleGVjLT5oZWFwKCkpKSBQcm94eVJ1bnRpbWVPYmplY3QoZXhlYywgZ2xvYmFs
T2JqZWN0LCBzdHJ1Y3R1cmUsIGluc3RhbmNlKTsKLSAgICAgICAgb2JqZWN0LT5maW5pc2hDcmVh
dGlvbihnbG9iYWxPYmplY3QpOworICAgICAgICBQcm94eVJ1bnRpbWVPYmplY3QqIG9iamVjdCA9
IG5ldyAoSlNDOjphbGxvY2F0ZUNlbGw8UHJveHlSdW50aW1lT2JqZWN0Pih2bS5oZWFwKSkgUHJv
eHlSdW50aW1lT2JqZWN0KHZtLCBzdHJ1Y3R1cmUsIGluc3RhbmNlKTsKKyAgICAgICAgb2JqZWN0
LT5maW5pc2hDcmVhdGlvbih2bSk7CiAgICAgICAgIHJldHVybiBvYmplY3Q7CiAgICAgfQogCkBA
IC01Nyw5ICs1NCwxMCBAQCBwdWJsaWM6CiAgICAgfQogCiAgICAgREVDTEFSRV9JTkZPOworCiBw
cml2YXRlOgotICAgIFByb3h5UnVudGltZU9iamVjdChKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNH
bG9iYWxPYmplY3QqLCBKU0M6OlN0cnVjdHVyZSosIFBhc3NSZWZQdHI8UHJveHlJbnN0YW5jZT4p
OwotICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oSlNDOjpKU0dsb2JhbE9iamVjdCopOworICAgIFBy
b3h5UnVudGltZU9iamVjdChKU0M6OlZNJiwgSlNDOjpTdHJ1Y3R1cmUqLCBQYXNzUmVmUHRyPFBy
b3h5SW5zdGFuY2U+KTsKKyAgICB2b2lkIGZpbmlzaENyZWF0aW9uKEpTQzo6Vk0mKTsKIH07CiAK
IH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvSG9zdGVkL1Byb3h5UnVudGltZU9i
amVjdC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL0hvc3RlZC9Q
cm94eVJ1bnRpbWVPYmplY3QubW0JKHJldmlzaW9uIDE1NjQ0MCkKKysrIFNvdXJjZS9XZWJLaXQv
bWFjL1BsdWdpbnMvSG9zdGVkL1Byb3h5UnVudGltZU9iamVjdC5tbQkod29ya2luZyBjb3B5KQpA
QCAtMzYsMTQgKzM2LDE0IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjb25zdCBDbGFzc0luZm8g
UHJveHlSdW50aW1lT2JqZWN0OjpzX2luZm8gPSB7ICJQcm94eVJ1bnRpbWVPYmplY3QiLCAmUnVu
dGltZU9iamVjdDo6c19pbmZvLCAwLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKFByb3h5UnVudGlt
ZU9iamVjdCkgfTsKIAotUHJveHlSdW50aW1lT2JqZWN0OjpQcm94eVJ1bnRpbWVPYmplY3QoRXhl
Y1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSwgUGFzc1JlZlB0cjxQcm94eUluc3RhbmNlPiBpbnN0YW5jZSkKLSAgICA6IFJ1bnRp
bWVPYmplY3QoZXhlYywgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIGluc3RhbmNlKQorUHJveHlS
dW50aW1lT2JqZWN0OjpQcm94eVJ1bnRpbWVPYmplY3QoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSwgUGFzc1JlZlB0cjxQcm94eUluc3RhbmNlPiBpbnN0YW5jZSkKKyAgICA6IFJ1bnRpbWVP
YmplY3Qodm0sIHN0cnVjdHVyZSwgaW5zdGFuY2UpCiB7CiB9CiAKLXZvaWQgUHJveHlSdW50aW1l
T2JqZWN0OjpmaW5pc2hDcmVhdGlvbihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQordm9p
ZCBQcm94eVJ1bnRpbWVPYmplY3Q6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKIHsKLSAgICBCYXNl
OjpmaW5pc2hDcmVhdGlvbihnbG9iYWxPYmplY3QpOworICAgIEJhc2U6OmZpbmlzaENyZWF0aW9u
KHZtKTsKICAgICBBU1NFUlQoaW5oZXJpdHMoJnNfaW5mbykpOwogfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>212655</attachid>
            <date>2013-09-25 19:43:58 -0700</date>
            <delta_ts>2013-09-25 20:13:17 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-121934-20130925194357.patch</filename>
            <type>text/plain</type>
            <size>45649</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE1NjQ0MCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDY3IEBACisyMDEzLTA5LTI1ICBTYW0gV2Vp
bmlnICA8c2FtQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUGFzcyBhIEpTQzo6Vk0mIHRvIEpTIGJp
bmRpbmdzIG9iamVjdCBjcmVhdGlvbiBmdW5jdGlvbnMsIHJhdGhlciB0aGFuIGEgSlNDOjpFeGVj
U3RhdGUqCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
MjE5MzQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBS
ZWR1Y2UgdW5uZWNlc3NhcnkgbG9hZHMgYnkgcGFzc2luZyB0aGUgSlNDOjpWTSB0byBvYmplY3Qg
Y3JlYXRpb24vYWNjZXNzIGZ1bmN0aW9ucworICAgICAgICB0aGF0IGRvbid0IG5lZWQgdGhlIEV4
ZWNTdGF0ZS4KKworICAgICAgICAqIFdlYkNvcmUuZXhwLmluOgorICAgICAgICAqIGJpbmRpbmdz
L2pzL0pTRE9NQmluZGluZy5oOgorICAgICAgICAoV2ViQ29yZTo6Z2V0RE9NU3RydWN0dXJlKToK
KyAgICAgICAgKFdlYkNvcmU6OmRlcHJlY2F0ZWRHZXRET01TdHJ1Y3R1cmUpOgorICAgICAgICAo
V2ViQ29yZTo6Z2V0RE9NUHJvdG90eXBlKToKKyAgICAgICAgKFdlYkNvcmU6OnNldElubGluZUNh
Y2hlZFdyYXBwZXIpOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlV3JhcHBlcik6CisgICAgICAg
ICogYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuaDoKKyAgICAgICAgKFdlYkNvcmU6Omdl
dERPTUNvbnN0cnVjdG9yKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3Rv
bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVdpbmRvdzo6aW1hZ2UpOgorICAgICAgICAq
IGJpbmRpbmdzL2pzL0pTRG9jdW1lbnRDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNE
b2N1bWVudDo6bG9jYXRpb24pOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTSW1hZ2VDb25zdHJ1
Y3Rvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0ltYWdlQ29uc3RydWN0b3I6OmZpbmlzaENy
ZWF0aW9uKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0ltYWdlQ29uc3RydWN0b3IuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OkpTSW1hZ2VDb25zdHJ1Y3Rvcjo6Y3JlYXRlKToKKyAgICAgICAgKiBi
aW5kaW5ncy9qcy9TY3JpcHRXcmFwcGFibGUuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3Jp
cHRXcmFwcGFibGVJbmxpbmVzLmg6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRXcmFwcGFibGU6
OnNldFdyYXBwZXIpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpT
LnBtOgorICAgICAgICAoR2VuZXJhdGVIZWFkZXIpOgorICAgICAgICAoR2VuZXJhdGVJbXBsZW1l
bnRhdGlvbik6CisgICAgICAgIChHZW5lcmF0ZUNvbnN0cnVjdG9yRGVjbGFyYXRpb24pOgorICAg
ICAgICAoR2VuZXJhdGVDb25zdHJ1Y3RvckhlbHBlck1ldGhvZHMpOgorICAgICAgICAqIGJyaWRn
ZS9jL0NSdW50aW1lT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6OkNSdW50aW1l
T2JqZWN0OjpDUnVudGltZU9iamVjdCk6CisgICAgICAgIChKU0M6OkJpbmRpbmdzOjpDUnVudGlt
ZU9iamVjdDo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAqIGJyaWRnZS9jL0NSdW50aW1lT2Jq
ZWN0Lmg6CisgICAgICAgIChKU0M6OkJpbmRpbmdzOjpDUnVudGltZU9iamVjdDo6Y3JlYXRlKToK
KyAgICAgICAgKiBicmlkZ2UvYy9jX2luc3RhbmNlLmNwcDoKKyAgICAgICAgKEpTQzo6QmluZGlu
Z3M6OkNJbnN0YW5jZTo6bmV3UnVudGltZU9iamVjdCk6CisgICAgICAgICogYnJpZGdlL2pzYy9C
cmlkZ2VKU0MuY3BwOgorICAgICAgICAoSlNDOjpCaW5kaW5nczo6SW5zdGFuY2U6Om5ld1J1bnRp
bWVPYmplY3QpOgorICAgICAgICAqIGJyaWRnZS9vYmpjL09iakNSdW50aW1lT2JqZWN0Lmg6Cisg
ICAgICAgIChKU0M6OkJpbmRpbmdzOjpPYmpDUnVudGltZU9iamVjdDo6Y3JlYXRlKToKKyAgICAg
ICAgKiBicmlkZ2Uvb2JqYy9PYmpDUnVudGltZU9iamVjdC5tbToKKyAgICAgICAgKEpTQzo6Qmlu
ZGluZ3M6Ok9iakNSdW50aW1lT2JqZWN0OjpPYmpDUnVudGltZU9iamVjdCk6CisgICAgICAgIChK
U0M6OkJpbmRpbmdzOjpPYmpDUnVudGltZU9iamVjdDo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAg
ICAqIGJyaWRnZS9vYmpjL29iamNfaW5zdGFuY2UubW06CisgICAgICAgIChPYmpjSW5zdGFuY2U6
Om5ld1J1bnRpbWVPYmplY3QpOgorICAgICAgICAqIGJyaWRnZS9vYmpjL29iamNfcnVudGltZS5o
OgorICAgICAgICAoSlNDOjpCaW5kaW5nczo6T2JqY0ZhbGxiYWNrT2JqZWN0SW1wOjpjcmVhdGVQ
cm90b3R5cGUpOgorICAgICAgICAqIGJyaWRnZS9ydW50aW1lX2FycmF5Lmg6CisgICAgICAgIChK
U0M6OlJ1bnRpbWVBcnJheTo6Y3JlYXRlUHJvdG90eXBlKToKKyAgICAgICAgKiBicmlkZ2UvcnVu
dGltZV9tZXRob2QuaDoKKyAgICAgICAgKEpTQzo6UnVudGltZU1ldGhvZDo6Y3JlYXRlUHJvdG90
eXBlKToKKyAgICAgICAgKiBicmlkZ2UvcnVudGltZV9vYmplY3QuY3BwOgorICAgICAgICAoSlND
OjpCaW5kaW5nczo6UnVudGltZU9iamVjdDo6UnVudGltZU9iamVjdCk6CisgICAgICAgIChKU0M6
OkJpbmRpbmdzOjpSdW50aW1lT2JqZWN0OjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgICogYnJp
ZGdlL3J1bnRpbWVfb2JqZWN0Lmg6CisgICAgICAgIChKU0M6OkJpbmRpbmdzOjpSdW50aW1lT2Jq
ZWN0OjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpCaW5kaW5nczo6UnVudGltZU9iamVjdDo6Y3Jl
YXRlUHJvdG90eXBlKToKKwogMjAxMy0wOS0yNSAgQ29tbWl0IFF1ZXVlICA8Y29tbWl0LXF1ZXVl
QHdlYmtpdC5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjE1NjQzMi4K
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCShyZXZpc2lvbiAxNTY0NDApCisrKyBTb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLmV4cC5pbgkod29ya2luZyBjb3B5KQpAQCAtMjY1NywxNCArMjY1NywxNCBA
QCBfX1pOM0pTQzhCaW5kaW5nczEwUm9vdE9iamVjdEQxRXYKIF9fWk4zSlNDOEJpbmRpbmdzMTNS
dW50aW1lT2JqZWN0MTFnZXRDYWxsRGF0YUVQTlNfNkpTQ2VsbEVSTlNfOENhbGxEYXRhRQogX19a
TjNKU0M4QmluZGluZ3MxM1J1bnRpbWVPYmplY3QxMmRlZmF1bHRWYWx1ZUVQS05TXzhKU09iamVj
dEVQTlNfOUV4ZWNTdGF0ZUVOU18yMlByZWZlcnJlZFByaW1pdGl2ZVR5cGVFCiBfX1pOM0pTQzhC
aW5kaW5nczEzUnVudGltZU9iamVjdDE0ZGVsZXRlUHJvcGVydHlFUE5TXzZKU0NlbGxFUE5TXzlF
eGVjU3RhdGVFTlNfMTJQcm9wZXJ0eU5hbWVFCi1fX1pOM0pTQzhCaW5kaW5nczEzUnVudGltZU9i
amVjdDE0ZmluaXNoQ3JlYXRpb25FUE5TXzE0SlNHbG9iYWxPYmplY3RFCitfX1pOM0pTQzhCaW5k
aW5nczEzUnVudGltZU9iamVjdDE0ZmluaXNoQ3JlYXRpb25FUk5TXzJWTUUKIF9fWk4zSlNDOEJp
bmRpbmdzMTNSdW50aW1lT2JqZWN0MTZnZXRDb25zdHJ1Y3REYXRhRVBOU182SlNDZWxsRVJOU18x
M0NvbnN0cnVjdERhdGFFCiBfX1pOM0pTQzhCaW5kaW5nczEzUnVudGltZU9iamVjdDE4Z2V0T3du
UHJvcGVydHlTbG90RVBOU184SlNPYmplY3RFUE5TXzlFeGVjU3RhdGVFTlNfMTJQcm9wZXJ0eU5h
bWVFUk5TXzEyUHJvcGVydHlTbG90RQogX19aTjNKU0M4QmluZGluZ3MxM1J1bnRpbWVPYmplY3Qx
OWdldE93blByb3BlcnR5TmFtZXNFUE5TXzhKU09iamVjdEVQTlNfOUV4ZWNTdGF0ZUVSTlNfMTdQ
cm9wZXJ0eU5hbWVBcnJheUVOU18xNUVudW1lcmF0aW9uTW9kZUUKIF9fWk4zSlNDOEJpbmRpbmdz
MTNSdW50aW1lT2JqZWN0M3B1dEVQTlNfNkpTQ2VsbEVQTlNfOUV4ZWNTdGF0ZUVOU18xMlByb3Bl
cnR5TmFtZUVOU183SlNWYWx1ZUVSTlNfMTVQdXRQcm9wZXJ0eVNsb3RFCiBfX1pOM0pTQzhCaW5k
aW5nczEzUnVudGltZU9iamVjdDZzX2luZm9FCiBfX1pOM0pTQzhCaW5kaW5nczEzUnVudGltZU9i
amVjdDdkZXN0cm95RVBOU182SlNDZWxsRQotX19aTjNKU0M4QmluZGluZ3MxM1J1bnRpbWVPYmpl
Y3RDMkVQTlNfOUV4ZWNTdGF0ZUVQTlNfMTRKU0dsb2JhbE9iamVjdEVQTlNfOVN0cnVjdHVyZUVO
M1dURjEwUGFzc1JlZlB0cklOUzBfOEluc3RhbmNlRUVFCitfX1pOM0pTQzhCaW5kaW5nczEzUnVu
dGltZU9iamVjdEMyRVJOU18yVk1FUE5TXzlTdHJ1Y3R1cmVFTjNXVEYxMFBhc3NSZWZQdHJJTlMw
XzhJbnN0YW5jZUVFRQogX19aTjNKU0M4QmluZGluZ3M4SW5zdGFuY2UxOWNyZWF0ZVJ1bnRpbWVP
YmplY3RFUE5TXzlFeGVjU3RhdGVFCiBfX1pOM0pTQzhCaW5kaW5nczhJbnN0YW5jZUMyRU4zV1RG
MTBQYXNzUmVmUHRySU5TMF8xMFJvb3RPYmplY3RFRUUKIF9fWk4zSlNDOEJpbmRpbmdzOEluc3Rh
bmNlRDJFdgpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmgJ
KHJldmlzaW9uIDE1NjQ0MCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmlu
ZGluZy5oCSh3b3JraW5nIGNvcHkpCkBAIC05NCwyMiArOTQsMjIgQEAgY2xhc3MgRE9NU3RyaW5n
TGlzdDsKICAgICAgICAgcmV0dXJuIEpTQzo6anNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZXhl
Yy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKTsKICAgICB9CiAKLSAgICB0ZW1wbGF0ZTxjbGFzcyBX
cmFwcGVyQ2xhc3M+IGlubGluZSBKU0M6OlN0cnVjdHVyZSogZ2V0RE9NU3RydWN0dXJlKEpTQzo6
RXhlY1N0YXRlKiBleGVjLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQorICAgIHRl
bXBsYXRlPGNsYXNzIFdyYXBwZXJDbGFzcz4gaW5saW5lIEpTQzo6U3RydWN0dXJlKiBnZXRET01T
dHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiAg
ICAgewogICAgICAgICBpZiAoSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGdldENhY2hlZERP
TVN0cnVjdHVyZShnbG9iYWxPYmplY3QsIFdyYXBwZXJDbGFzczo6aW5mbygpKSkKICAgICAgICAg
ICAgIHJldHVybiBzdHJ1Y3R1cmU7Ci0gICAgICAgIHJldHVybiBjYWNoZURPTVN0cnVjdHVyZShn
bG9iYWxPYmplY3QsIFdyYXBwZXJDbGFzczo6Y3JlYXRlU3RydWN0dXJlKGV4ZWMtPnZtKCksIGds
b2JhbE9iamVjdCwgV3JhcHBlckNsYXNzOjpjcmVhdGVQcm90b3R5cGUoZXhlYywgZ2xvYmFsT2Jq
ZWN0KSksIFdyYXBwZXJDbGFzczo6aW5mbygpKTsKKyAgICAgICAgcmV0dXJuIGNhY2hlRE9NU3Ry
dWN0dXJlKGdsb2JhbE9iamVjdCwgV3JhcHBlckNsYXNzOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIGds
b2JhbE9iamVjdCwgV3JhcHBlckNsYXNzOjpjcmVhdGVQcm90b3R5cGUodm0sIGdsb2JhbE9iamVj
dCkpLCBXcmFwcGVyQ2xhc3M6OmluZm8oKSk7CiAgICAgfQogCiAgICAgdGVtcGxhdGU8Y2xhc3Mg
V3JhcHBlckNsYXNzPiBpbmxpbmUgSlNDOjpTdHJ1Y3R1cmUqIGRlcHJlY2F0ZWRHZXRET01TdHJ1
Y3R1cmUoSlNDOjpFeGVjU3RhdGUqIGV4ZWMpCiAgICAgewogICAgICAgICAvLyBGSVhNRTogVGhp
cyBmdW5jdGlvbiBpcyB3cm9uZy4gIEl0IHVzZXMgdGhlIHdyb25nIGdsb2JhbCBvYmplY3QgZm9y
IGNyZWF0aW5nIHRoZSBwcm90b3R5cGUgc3RydWN0dXJlLgotICAgICAgICByZXR1cm4gZ2V0RE9N
U3RydWN0dXJlPFdyYXBwZXJDbGFzcz4oZXhlYywgZGVwcmVjYXRlZEdsb2JhbE9iamVjdEZvclBy
b3RvdHlwZShleGVjKSk7CisgICAgICAgIHJldHVybiBnZXRET01TdHJ1Y3R1cmU8V3JhcHBlckNs
YXNzPihleGVjLT52bSgpLCBkZXByZWNhdGVkR2xvYmFsT2JqZWN0Rm9yUHJvdG90eXBlKGV4ZWMp
KTsKICAgICB9CiAKLSAgICB0ZW1wbGF0ZTxjbGFzcyBXcmFwcGVyQ2xhc3M+IGlubGluZSBKU0M6
OkpTT2JqZWN0KiBnZXRET01Qcm90b3R5cGUoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIEpTQzo6SlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKKyAgICB0ZW1wbGF0ZTxjbGFzcyBXcmFwcGVyQ2xh
c3M+IGlubGluZSBKU0M6OkpTT2JqZWN0KiBnZXRET01Qcm90b3R5cGUoSlNDOjpWTSYgdm0sIEpT
Qzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKICAgICB7Ci0gICAgICAgIHJldHVybiBK
U0M6OmpzQ2FzdDxKU0M6OkpTT2JqZWN0Kj4oYXNPYmplY3QoZ2V0RE9NU3RydWN0dXJlPFdyYXBw
ZXJDbGFzcz4oZXhlYywgSlNDOjpqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmpl
Y3QpKS0+c3RvcmVkUHJvdG90eXBlKCkpKTsKKyAgICAgICAgcmV0dXJuIEpTQzo6anNDYXN0PEpT
Qzo6SlNPYmplY3QqPihhc09iamVjdChnZXRET01TdHJ1Y3R1cmU8V3JhcHBlckNsYXNzPih2bSwg
SlNDOjpqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QpKS0+c3RvcmVkUHJv
dG90eXBlKCkpKTsKICAgICB9CiAKICAgICBpbmxpbmUgSlNDOjpXZWFrSGFuZGxlT3duZXIqIHdy
YXBwZXJPd25lcihET01XcmFwcGVyV29ybGQqIHdvcmxkLCBKU0M6OkFycmF5QnVmZmVyKikKQEAg
LTE0NCw3ICsxNDQsNyBAQCBjbGFzcyBET01TdHJpbmdMaXN0OwogICAgIHsKICAgICAgICAgaWYg
KCF3b3JsZC0+aXNOb3JtYWwoKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAg
ZG9tT2JqZWN0LT5zZXRXcmFwcGVyKCp3b3JsZC0+dm0oKSwgd3JhcHBlciwgd3JhcHBlck93bmVy
LCBjb250ZXh0KTsKKyAgICAgICAgZG9tT2JqZWN0LT5zZXRXcmFwcGVyKHdyYXBwZXIsIHdyYXBw
ZXJPd25lciwgY29udGV4dCk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIApAQCAtMjAx
LDcgKzIwMSw3IEBAIGNsYXNzIERPTVN0cmluZ0xpc3Q7CiAgICAgewogICAgICAgICBBU1NFUlQo
bm9kZSk7CiAgICAgICAgIEFTU0VSVCghZ2V0Q2FjaGVkV3JhcHBlcihjdXJyZW50V29ybGQoZXhl
YyksIG5vZGUpKTsKLSAgICAgICAgV3JhcHBlckNsYXNzKiB3cmFwcGVyID0gV3JhcHBlckNsYXNz
OjpjcmVhdGUoZ2V0RE9NU3RydWN0dXJlPFdyYXBwZXJDbGFzcz4oZXhlYywgZ2xvYmFsT2JqZWN0
KSwgZ2xvYmFsT2JqZWN0LCBub2RlKTsKKyAgICAgICAgV3JhcHBlckNsYXNzKiB3cmFwcGVyID0g
V3JhcHBlckNsYXNzOjpjcmVhdGUoZ2V0RE9NU3RydWN0dXJlPFdyYXBwZXJDbGFzcz4oZXhlYy0+
dm0oKSwgZ2xvYmFsT2JqZWN0KSwgZ2xvYmFsT2JqZWN0LCBub2RlKTsKICAgICAgICAgLy8gRklY
TUU6IFRoZSBlbnRpcmUgZnVuY3Rpb24gY2FuIGJlIHJlbW92ZWQsIG9uY2Ugd2UgZml4IGNhY2hp
bmcuCiAgICAgICAgIC8vIFRoaXMgZnVuY3Rpb24gaXMgYSBvbmUtb2ZmIGhhY2sgdG8gbWFrZSBO
b2RlcyBjYWNoZSBpbiB0aGUgcmlnaHQgZ2xvYmFsIG9iamVjdC4KICAgICAgICAgY2FjaGVXcmFw
cGVyKGN1cnJlbnRXb3JsZChleGVjKSwgbm9kZSwgd3JhcHBlcik7CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmgJKHJldmlzaW9uIDE1NjQ0
MCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmgJKHdv
cmtpbmcgY29weSkKQEAgLTg2LDE0ICs4NiwxNCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAg
fTsKIAogICAgIHRlbXBsYXRlPGNsYXNzIENvbnN0cnVjdG9yQ2xhc3M+Ci0gICAgaW5saW5lIEpT
Qzo6SlNPYmplY3QqIGdldERPTUNvbnN0cnVjdG9yKEpTQzo6RXhlY1N0YXRlKiBleGVjLCBjb25z
dCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQorICAgIGlubGluZSBKU0M6OkpTT2Jq
ZWN0KiBnZXRET01Db25zdHJ1Y3RvcihKU0M6OlZNJiB2bSwgY29uc3QgSlNET01HbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCkKICAgICB7CiAgICAgICAgIGlmIChKU0M6OkpTT2JqZWN0KiBjb25z
dHJ1Y3RvciA9IGNvbnN0X2Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QpLT5j
b25zdHJ1Y3RvcnMoKS5nZXQoQ29uc3RydWN0b3JDbGFzczo6aW5mbygpKS5nZXQoKSkKICAgICAg
ICAgICAgIHJldHVybiBjb25zdHJ1Y3RvcjsKLSAgICAgICAgSlNDOjpKU09iamVjdCogY29uc3Ry
dWN0b3IgPSBDb25zdHJ1Y3RvckNsYXNzOjpjcmVhdGUoZXhlYywgQ29uc3RydWN0b3JDbGFzczo6
Y3JlYXRlU3RydWN0dXJlKGV4ZWMtPnZtKCksIGNvbnN0X2Nhc3Q8SlNET01HbG9iYWxPYmplY3Qq
PihnbG9iYWxPYmplY3QpLCBnbG9iYWxPYmplY3QtPm9iamVjdFByb3RvdHlwZSgpKSwgY29uc3Rf
Y2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCkpOworICAgICAgICBKU0M6OkpT
T2JqZWN0KiBjb25zdHJ1Y3RvciA9IENvbnN0cnVjdG9yQ2xhc3M6OmNyZWF0ZSh2bSwgQ29uc3Ry
dWN0b3JDbGFzczo6Y3JlYXRlU3RydWN0dXJlKHZtLCBjb25zdF9jYXN0PEpTRE9NR2xvYmFsT2Jq
ZWN0Kj4oZ2xvYmFsT2JqZWN0KSwgZ2xvYmFsT2JqZWN0LT5vYmplY3RQcm90b3R5cGUoKSksIGNv
bnN0X2Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QpKTsKICAgICAgICAgQVNT
RVJUKCFjb25zdF9jYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KS0+Y29uc3Ry
dWN0b3JzKCkuY29udGFpbnMoQ29uc3RydWN0b3JDbGFzczo6aW5mbygpKSk7CiAgICAgICAgIEpT
Qzo6V3JpdGVCYXJyaWVyPEpTQzo6SlNPYmplY3Q+IHRlbXA7Ci0gICAgICAgIGNvbnN0X2Nhc3Q8
SlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QpLT5jb25zdHJ1Y3RvcnMoKS5hZGQoQ29u
c3RydWN0b3JDbGFzczo6aW5mbygpLCB0ZW1wKS5pdGVyYXRvci0+dmFsdWUuc2V0KGV4ZWMtPnZt
KCksIGdsb2JhbE9iamVjdCwgY29uc3RydWN0b3IpOworICAgICAgICBjb25zdF9jYXN0PEpTRE9N
R2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KS0+Y29uc3RydWN0b3JzKCkuYWRkKENvbnN0cnVj
dG9yQ2xhc3M6OmluZm8oKSwgdGVtcCkuaXRlcmF0b3ItPnZhbHVlLnNldCh2bSwgZ2xvYmFsT2Jq
ZWN0LCBjb25zdHJ1Y3Rvcik7CiAgICAgICAgIHJldHVybiBjb25zdHJ1Y3RvcjsKICAgICB9CiAK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3Rv
bS5jcHAJKHJldmlzaW9uIDE1NjQ0MCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
RE9NV2luZG93Q3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDU0LDcgKzQ1NCw3IEBAIEpT
VmFsdWUgSlNET01XaW5kb3c6OmV2ZW50KEV4ZWNTdGF0ZSogZXgKIAogSlNWYWx1ZSBKU0RPTVdp
bmRvdzo6aW1hZ2UoRXhlY1N0YXRlKiBleGVjKSBjb25zdAogewotICAgIHJldHVybiBnZXRET01D
b25zdHJ1Y3RvcjxKU0ltYWdlQ29uc3RydWN0b3I+KGV4ZWMsIHRoaXMpOworICAgIHJldHVybiBn
ZXRET01Db25zdHJ1Y3RvcjxKU0ltYWdlQ29uc3RydWN0b3I+KGV4ZWMtPnZtKCksIHRoaXMpOwog
fQogCiAvLyBDdXN0b20gZnVuY3Rpb25zCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0RvY3VtZW50Q3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0RvY3VtZW50Q3VzdG9tLmNwcAkocmV2aXNpb24gMTU2NDQwKQorKysgU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNEb2N1bWVudEN1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTU5LDcgKzU5LDcgQEAgSlNWYWx1ZSBKU0RvY3VtZW50Ojpsb2NhdGlvbihFeGVjU3RhdGUq
IAogICAgIGlmIChKU09iamVjdCogd3JhcHBlciA9IGdldENhY2hlZFdyYXBwZXIoY3VycmVudFdv
cmxkKGV4ZWMpLCBsb2NhdGlvbikpCiAgICAgICAgIHJldHVybiB3cmFwcGVyOwogCi0gICAgSlNM
b2NhdGlvbioganNMb2NhdGlvbiA9IEpTTG9jYXRpb246OmNyZWF0ZShnZXRET01TdHJ1Y3R1cmU8
SlNMb2NhdGlvbj4oZXhlYywgZ2xvYmFsT2JqZWN0KCkpLCBnbG9iYWxPYmplY3QoKSwgbG9jYXRp
b24pOworICAgIEpTTG9jYXRpb24qIGpzTG9jYXRpb24gPSBKU0xvY2F0aW9uOjpjcmVhdGUoZ2V0
RE9NU3RydWN0dXJlPEpTTG9jYXRpb24+KGV4ZWMtPnZtKCksIGdsb2JhbE9iamVjdCgpKSwgZ2xv
YmFsT2JqZWN0KCksIGxvY2F0aW9uKTsKICAgICBjYWNoZVdyYXBwZXIoY3VycmVudFdvcmxkKGV4
ZWMpLCBsb2NhdGlvbiwganNMb2NhdGlvbik7CiAgICAgcmV0dXJuIGpzTG9jYXRpb247CiB9Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0ltYWdlQ29uc3RydWN0b3IuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSW1hZ2VDb25zdHJ1Y3Rv
ci5jcHAJKHJldmlzaW9uIDE1NjQ0MCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
SW1hZ2VDb25zdHJ1Y3Rvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM5LDExICszOSwxMSBAQCBK
U0ltYWdlQ29uc3RydWN0b3I6OkpTSW1hZ2VDb25zdHJ1Y3RvcihTCiB7CiB9CiAKLXZvaWQgSlNJ
bWFnZUNvbnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlvbihFeGVjU3RhdGUqIGV4ZWMsIEpTRE9NR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCit2b2lkIEpTSW1hZ2VDb25zdHJ1Y3Rvcjo6ZmluaXNo
Q3JlYXRpb24oVk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogewogICAg
IEJhc2U6OmZpbmlzaENyZWF0aW9uKGdsb2JhbE9iamVjdCk7CiAgICAgQVNTRVJUKGluaGVyaXRz
KGluZm8oKSkpOwotICAgIHB1dERpcmVjdChleGVjLT52bSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVz
KCkucHJvdG90eXBlLCBKU0hUTUxJbWFnZUVsZW1lbnRQcm90b3R5cGU6OnNlbGYoZXhlYywgZ2xv
YmFsT2JqZWN0KSwgTm9uZSk7CisgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5w
cm90b3R5cGUsIEpTSFRNTEltYWdlRWxlbWVudFByb3RvdHlwZTo6c2VsZih2bSwgZ2xvYmFsT2Jq
ZWN0KSwgTm9uZSk7CiB9CiAKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNv
bnN0cnVjdEltYWdlKEV4ZWNTdGF0ZSogZXhlYykKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTSW1hZ2VDb25zdHJ1Y3Rvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTSW1hZ2VDb25zdHJ1Y3Rvci5oCShyZXZpc2lvbiAxNTY0NDApCisrKyBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0ltYWdlQ29uc3RydWN0b3IuaAkod29ya2luZyBj
b3B5KQpAQCAtMzAsMTAgKzMwLDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBwdWJsaWM6
CiAgICAgICAgIHR5cGVkZWYgRE9NQ29uc3RydWN0b3JXaXRoRG9jdW1lbnQgQmFzZTsKIAotICAg
ICAgICBzdGF0aWMgSlNJbWFnZUNvbnN0cnVjdG9yKiBjcmVhdGUoSlNDOjpFeGVjU3RhdGUqIGV4
ZWMsIEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QpCisgICAgICAgIHN0YXRpYyBKU0ltYWdlQ29uc3RydWN0b3IqIGNyZWF0ZShKU0M6OlZN
JiB2bSwgSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCkKICAgICAgICAgewotICAgICAgICAgICAgSlNJbWFnZUNvbnN0cnVjdG9yKiBjb25z
dHJ1Y3RvciA9IG5ldyAoTm90TnVsbCwgSlNDOjphbGxvY2F0ZUNlbGw8SlNJbWFnZUNvbnN0cnVj
dG9yPigqZXhlYy0+aGVhcCgpKSkgSlNJbWFnZUNvbnN0cnVjdG9yKHN0cnVjdHVyZSwgZ2xvYmFs
T2JqZWN0KTsKLSAgICAgICAgICAgIGNvbnN0cnVjdG9yLT5maW5pc2hDcmVhdGlvbihleGVjLCBn
bG9iYWxPYmplY3QpOworICAgICAgICAgICAgSlNJbWFnZUNvbnN0cnVjdG9yKiBjb25zdHJ1Y3Rv
ciA9IG5ldyAoTm90TnVsbCwgSlNDOjphbGxvY2F0ZUNlbGw8SlNJbWFnZUNvbnN0cnVjdG9yPih2
bS5oZWFwKSkgSlNJbWFnZUNvbnN0cnVjdG9yKHN0cnVjdHVyZSwgZ2xvYmFsT2JqZWN0KTsKKyAg
ICAgICAgICAgIGNvbnN0cnVjdG9yLT5maW5pc2hDcmVhdGlvbih2bSwgZ2xvYmFsT2JqZWN0KTsK
ICAgICAgICAgICAgIHJldHVybiBjb25zdHJ1Y3RvcjsKICAgICAgICAgfQogCkBAIC00Niw3ICs0
Niw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIEpTSW1h
Z2VDb25zdHJ1Y3RvcihKU0M6OlN0cnVjdHVyZSosIEpTRE9NR2xvYmFsT2JqZWN0Kik7Ci0gICAg
ICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oSlNDOjpFeGVjU3RhdGUqLCBKU0RPTUdsb2JhbE9iamVj
dCopOworICAgICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKEpTQzo6Vk0mLCBKU0RPTUdsb2JhbE9i
amVjdCopOwogICAgICAgICBzdGF0aWMgSlNDOjpDb25zdHJ1Y3RUeXBlIGdldENvbnN0cnVjdERh
dGEoSlNDOjpKU0NlbGwqLCBKU0M6OkNvbnN0cnVjdERhdGEmKTsKICAgICB9OwogCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRXcmFwcGFibGUuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRXcmFwcGFibGUuaAkocmV2aXNpb24g
MTU2NDQwKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0V3JhcHBhYmxlLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTM1LDcgKzM1LDYgQEAKICNpbmNsdWRlIDxoZWFwL1dlYWsuaD4K
IAogbmFtZXNwYWNlIEpTQyB7Ci1jbGFzcyBWTTsKIGNsYXNzIFdlYWtIYW5kbGVPd25lcjsKIH0K
IApAQCAtNDYsNyArNDUsNyBAQCBjbGFzcyBKU0RPTVdyYXBwZXI7CiBjbGFzcyBTY3JpcHRXcmFw
cGFibGUgewogcHVibGljOgogICAgIEpTRE9NV3JhcHBlciogd3JhcHBlcigpIGNvbnN0OwotICAg
IHZvaWQgc2V0V3JhcHBlcihKU0M6OlZNJiwgSlNET01XcmFwcGVyKiwgSlNDOjpXZWFrSGFuZGxl
T3duZXIqLCB2b2lkKik7CisgICAgdm9pZCBzZXRXcmFwcGVyKEpTRE9NV3JhcHBlciosIEpTQzo6
V2Vha0hhbmRsZU93bmVyKiwgdm9pZCopOwogICAgIHZvaWQgY2xlYXJXcmFwcGVyKEpTRE9NV3Jh
cHBlciopOwogCiBwcml2YXRlOgpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2Ny
aXB0V3JhcHBhYmxlSW5saW5lcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL1NjcmlwdFdyYXBwYWJsZUlubGluZXMuaAkocmV2aXNpb24gMTU2NDQwKQorKysgU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0V3JhcHBhYmxlSW5saW5lcy5oCSh3b3JraW5n
IGNvcHkpCkBAIC00Myw3ICs0Myw3IEBAIGlubGluZSBKU0RPTVdyYXBwZXIqIFNjcmlwdFdyYXBw
YWJsZTo6d3IKICAgICByZXR1cm4gbV93cmFwcGVyLmdldCgpOwogfQogCi1pbmxpbmUgdm9pZCBT
Y3JpcHRXcmFwcGFibGU6OnNldFdyYXBwZXIoSlNDOjpWTSYsIEpTRE9NV3JhcHBlciogd3JhcHBl
ciwgSlNDOjpXZWFrSGFuZGxlT3duZXIqIHdyYXBwZXJPd25lciwgdm9pZCogY29udGV4dCkKK2lu
bGluZSB2b2lkIFNjcmlwdFdyYXBwYWJsZTo6c2V0V3JhcHBlcihKU0RPTVdyYXBwZXIqIHdyYXBw
ZXIsIEpTQzo6V2Vha0hhbmRsZU93bmVyKiB3cmFwcGVyT3duZXIsIHZvaWQqIGNvbnRleHQpCiB7
CiAgICAgQVNTRVJUKCFtX3dyYXBwZXIpOwogICAgIG1fd3JhcHBlciA9IEpTQzo6UGFzc1dlYWs8
SlNET01XcmFwcGVyPih3cmFwcGVyLCB3cmFwcGVyT3duZXIsIGNvbnRleHQpOwpJbmRleDogU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0J
KHJldmlzaW9uIDE1NjQ0MCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29k
ZUdlbmVyYXRvckpTLnBtCSh3b3JraW5nIGNvcHkpCkBAIC02NzEsNyArNjcxLDcgQEAgc3ViIEdl
bmVyYXRlSGVhZGVyCiAgICAgfQogCiAgICAgIyBQcm90b3R5cGUKLSAgICBwdXNoKEBoZWFkZXJD
b250ZW50LCAiICAgIHN0YXRpYyBKU0M6OkpTT2JqZWN0KiBjcmVhdGVQcm90b3R5cGUoSlNDOjpF
eGVjU3RhdGUqLCBKU0M6OkpTR2xvYmFsT2JqZWN0Kik7XG4iKSB1bmxlc3MgSXNET01HbG9iYWxP
YmplY3QoJGludGVyZmFjZSk7CisgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICBzdGF0aWMg
SlNDOjpKU09iamVjdCogY3JlYXRlUHJvdG90eXBlKEpTQzo6Vk0mLCBKU0M6OkpTR2xvYmFsT2Jq
ZWN0Kik7XG4iKSB1bmxlc3MgSXNET01HbG9iYWxPYmplY3QoJGludGVyZmFjZSk7CiAKICAgICAk
aGVhZGVyVHJhaWxpbmdJbmNsdWRlc3siJHtjbGFzc05hbWV9Q3VzdG9tLmgifSA9IDEgaWYgJGlu
dGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkpTQ3VzdG9tSGVhZGVyIn07CiAKQEAgLTc4
NSw4ICs3ODUsOCBAQCBzdWIgR2VuZXJhdGVIZWFkZXIKIAogICAgICMgQ29uc3RydWN0b3Igb2Jq
ZWN0IGdldHRlcgogICAgIHVubGVzcyAoJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57
Ik5vSW50ZXJmYWNlT2JqZWN0In0pIHsKLSAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAg
ICBzdGF0aWMgSlNDOjpKU1ZhbHVlIGdldENvbnN0cnVjdG9yKEpTQzo6RXhlY1N0YXRlKiwgSlND
OjpKU0dsb2JhbE9iamVjdCopO1xuIik7Ci0gICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIg
ICAgc3RhdGljIEpTQzo6SlNWYWx1ZSBnZXROYW1lZENvbnN0cnVjdG9yKEpTQzo6RXhlY1N0YXRl
KiwgSlNDOjpKU0dsb2JhbE9iamVjdCopO1xuIikgaWYgJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRy
aWJ1dGVzLT57Ik5hbWVkQ29uc3RydWN0b3IifTsKKyAgICAgICAgcHVzaChAaGVhZGVyQ29udGVu
dCwgIiAgICBzdGF0aWMgSlNDOjpKU1ZhbHVlIGdldENvbnN0cnVjdG9yKEpTQzo6Vk0mLCBKU0M6
OkpTR2xvYmFsT2JqZWN0Kik7XG4iKTsKKyAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAg
ICBzdGF0aWMgSlNDOjpKU1ZhbHVlIGdldE5hbWVkQ29uc3RydWN0b3IoSlNDOjpWTSYsIEpTQzo6
SlNHbG9iYWxPYmplY3QqKTtcbiIpIGlmICRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+
eyJOYW1lZENvbnN0cnVjdG9yIn07CiAgICAgfQogCiAgICAgbXkgJG51bUN1c3RvbUZ1bmN0aW9u
cyA9IDA7CkBAIC05NzEsNyArOTcxLDcgQEAgc3ViIEdlbmVyYXRlSGVhZGVyCiAgICAgcHVzaChA
aGVhZGVyQ29udGVudCwgInB1YmxpYzpcbiIpOwogICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIg
ICAgdHlwZWRlZiBKU0M6OkpTTm9uRmluYWxPYmplY3QgQmFzZTtcbiIpOwogICAgIHVubGVzcyAo
SXNET01HbG9iYWxPYmplY3QoJGludGVyZmFjZSkpIHsKLSAgICAgICAgcHVzaChAaGVhZGVyQ29u
dGVudCwgIiAgICBzdGF0aWMgSlNDOjpKU09iamVjdCogc2VsZihKU0M6OkV4ZWNTdGF0ZSosIEpT
Qzo6SlNHbG9iYWxPYmplY3QqKTtcbiIpOworICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAi
ICAgIHN0YXRpYyBKU0M6OkpTT2JqZWN0KiBzZWxmKEpTQzo6Vk0mLCBKU0M6OkpTR2xvYmFsT2Jq
ZWN0Kik7XG4iKTsKICAgICB9CiAKICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIHN0YXRp
YyAke2NsYXNzTmFtZX1Qcm90b3R5cGUqIGNyZWF0ZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlKVxuIik7CkBA
IC0xNjQ5LDkgKzE2NDksOSBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICAgICBw
dXNoKEBpbXBsQ29udGVudCwgImNvbnN0IENsYXNzSW5mbyAke2NsYXNzTmFtZX1Qcm90b3R5cGU6
OnNfaW5mbyA9IHsgXCIke3Zpc2libGVJbnRlcmZhY2VOYW1lfVByb3RvdHlwZVwiLCAmQmFzZTo6
c19pbmZvLCAmJHtjbGFzc05hbWV9UHJvdG90eXBlVGFibGUsIDAsIENSRUFURV9NRVRIT0RfVEFC
TEUoJHtjbGFzc05hbWV9UHJvdG90eXBlKSB9O1xuXG4iKTsKICAgICB9CiAgICAgdW5sZXNzIChJ
c0RPTUdsb2JhbE9iamVjdCgkaW50ZXJmYWNlKSkgewotICAgICAgICBwdXNoKEBpbXBsQ29udGVu
dCwgIkpTT2JqZWN0KiAke2NsYXNzTmFtZX1Qcm90b3R5cGU6OnNlbGYoRXhlY1N0YXRlKiBleGVj
LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KVxuIik7CisgICAgICAgIHB1c2goQGltcGxD
b250ZW50LCAiSlNPYmplY3QqICR7Y2xhc3NOYW1lfVByb3RvdHlwZTo6c2VsZihWTSYgdm0sIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpXG4iKTsKICAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsICJ7XG4iKTsKLSAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgcmV0dXJuIGdldERP
TVByb3RvdHlwZTwke2NsYXNzTmFtZX0+KGV4ZWMsIGdsb2JhbE9iamVjdCk7XG4iKTsKKyAgICAg
ICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgcmV0dXJuIGdldERPTVByb3RvdHlwZTwke2NsYXNz
TmFtZX0+KHZtLCBnbG9iYWxPYmplY3QpO1xuIik7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50
LCAifVxuXG4iKTsKICAgICB9CiAKQEAgLTE3NDQsMTMgKzE3NDQsMTMgQEAgc3ViIEdlbmVyYXRl
SW1wbGVtZW50YXRpb24KICAgICB9CiAKICAgICB1bmxlc3MgKElzRE9NR2xvYmFsT2JqZWN0KCRp
bnRlcmZhY2UpKSB7Ci0gICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiSlNPYmplY3QqICR7Y2xh
c3NOYW1lfTo6Y3JlYXRlUHJvdG90eXBlKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdClcbiIpOworICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIkpTT2JqZWN0
KiAke2NsYXNzTmFtZX06OmNyZWF0ZVByb3RvdHlwZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QpXG4iKTsKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ7XG4iKTsKICAg
ICAgICAgaWYgKCRoYXNQYXJlbnQgJiYgJHBhcmVudENsYXNzTmFtZSBuZSAiSlNDOjpET01Ob2Rl
RmlsdGVyIikgewotICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgcmV0dXJuICR7
Y2xhc3NOYW1lfVByb3RvdHlwZTo6Y3JlYXRlKGV4ZWMtPnZtKCksIGdsb2JhbE9iamVjdCwgJHtj
bGFzc05hbWV9UHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUoZXhlYy0+dm0oKSwgZ2xvYmFsT2Jq
ZWN0LCAke3BhcmVudENsYXNzTmFtZX1Qcm90b3R5cGU6OnNlbGYoZXhlYywgZ2xvYmFsT2JqZWN0
KSkpO1xuIik7CisgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICByZXR1cm4gJHtj
bGFzc05hbWV9UHJvdG90eXBlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgJHtjbGFzc05hbWV9
UHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIGdsb2JhbE9iamVjdCwgJHtwYXJlbnRDbGFz
c05hbWV9UHJvdG90eXBlOjpzZWxmKHZtLCBnbG9iYWxPYmplY3QpKSk7XG4iKTsKICAgICAgICAg
fSBlbHNlIHsKICAgICAgICAgICAgIG15ICRwcm90b3R5cGUgPSAkaW50ZXJmYWNlLT5pc0V4Y2Vw
dGlvbiA/ICJlcnJvclByb3RvdHlwZSIgOiAib2JqZWN0UHJvdG90eXBlIjsKLSAgICAgICAgICAg
IHB1c2goQGltcGxDb250ZW50LCAiICAgIHJldHVybiAke2NsYXNzTmFtZX1Qcm90b3R5cGU6OmNy
ZWF0ZShleGVjLT52bSgpLCBnbG9iYWxPYmplY3QsICR7Y2xhc3NOYW1lfVByb3RvdHlwZTo6Y3Jl
YXRlU3RydWN0dXJlKGdsb2JhbE9iamVjdC0+dm0oKSwgZ2xvYmFsT2JqZWN0LCBnbG9iYWxPYmpl
Y3QtPiR7cHJvdG90eXBlfSgpKSk7XG4iKTsKKyAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50
LCAiICAgIHJldHVybiAke2NsYXNzTmFtZX1Qcm90b3R5cGU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2Jq
ZWN0LCAke2NsYXNzTmFtZX1Qcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgZ2xvYmFsT2Jq
ZWN0LCBnbG9iYWxPYmplY3QtPiR7cHJvdG90eXBlfSgpKSk7XG4iKTsKICAgICAgICAgfQogICAg
ICAgICBwdXNoKEBpbXBsQ29udGVudCwgIn1cblxuIik7CiAgICAgfQpAQCAtMTkzNywxMCArMTkz
NywxMCBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICAgICAgICAgICAgICAgICBp
ZiAoJGludGVyZmFjZU5hbWUgZXEgIkRPTVdpbmRvdyIpIHsKICAgICAgICAgICAgICAgICAgICAg
ICAgIG15ICRuYW1lZCA9ICgkY29uc3RydWN0b3JUeXBlID1+IC9OYW1lZCQvKSA/ICJOYW1lZCIg
OiAiIjsKICAgICAgICAgICAgICAgICAgICAgICAgICRjb25zdHJ1Y3RvclR5cGUgPX4gcy9OYW1l
ZCQvLzsKLSAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHJl
dHVybiBKUyIgLiAkY29uc3RydWN0b3JUeXBlIC4gIjo6Z2V0JHtuYW1lZH1Db25zdHJ1Y3Rvcihl
eGVjLCBjYXN0ZWRUaGlzKTtcbiIpOworICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1w
bENvbnRlbnQsICIgICAgcmV0dXJuIEpTIiAuICRjb25zdHJ1Y3RvclR5cGUgLiAiOjpnZXQke25h
bWVkfUNvbnN0cnVjdG9yKGV4ZWMtPnZtKCksIGNhc3RlZFRoaXMpO1xuIik7CiAgICAgICAgICAg
ICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgIEFkZFRvSW1wbEluY2x1
ZGVzKCJKUyIgLiAkY29uc3RydWN0b3JUeXBlIC4gIi5oIiwgJGF0dHJpYnV0ZS0+c2lnbmF0dXJl
LT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ29uZGl0aW9uYWwifSk7Ci0gICAgICAgICAgICAgICAg
ICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHJldHVybiBKUyIgLiAkY29uc3RydWN0b3JU
eXBlIC4gIjo6Z2V0Q29uc3RydWN0b3IoZXhlYywgY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCkp
O1xuIik7CisgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHJl
dHVybiBKUyIgLiAkY29uc3RydWN0b3JUeXBlIC4gIjo6Z2V0Q29uc3RydWN0b3IoZXhlYy0+dm0o
KSwgY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCkpO1xuIik7CiAgICAgICAgICAgICAgICAgICAg
IH0KICAgICAgICAgICAgICAgICB9IGVsc2lmICghJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRl
bmRlZEF0dHJpYnV0ZXMtPnsiR2V0dGVyUmFpc2VzRXhjZXB0aW9uIn0pIHsKICAgICAgICAgICAg
ICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgVU5VU0VEX1BBUkFNKGV4ZWMpO1xuIikg
aWYgISRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkNhbGxXaXRo
In07CkBAIC0yMDQ3LDcgKzIwNDcsNyBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAg
ICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgcmV0dXJuIGpzVW5k
ZWZpbmVkKCk7XG4iKTsKICAgICAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgICAgICBwdXNo
KEBpbXBsQ29udGVudCwgIiAgICByZXR1cm4gJHtjbGFzc05hbWV9OjpnZXRDb25zdHJ1Y3Rvcihl
eGVjLCBkb21PYmplY3QtPmdsb2JhbE9iamVjdCgpKTtcbiIpOworICAgICAgICAgICAgICAgIHB1
c2goQGltcGxDb250ZW50LCAiICAgIHJldHVybiAke2NsYXNzTmFtZX06OmdldENvbnN0cnVjdG9y
KGV4ZWMtPnZtKCksIGRvbU9iamVjdC0+Z2xvYmFsT2JqZWN0KCkpO1xuIik7CiAgICAgICAgICAg
ICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ9XG5cbiIpOwogICAgICAgICAgICAgfQogICAgICAg
ICB9CkBAIC0yMzEyLDEyICsyMzEyLDEyIEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAg
ICAgfQogCiAgICAgaWYgKCEkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiTm9JbnRl
cmZhY2VPYmplY3QifSkgewotICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIkpTVmFsdWUgJHtj
bGFzc05hbWV9OjpnZXRDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QpXG57XG4iKTsKLSAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAg
cmV0dXJuIGdldERPTUNvbnN0cnVjdG9yPCR7Y2xhc3NOYW1lfUNvbnN0cnVjdG9yPihleGVjLCBq
c0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QpKTtcbiIpOworICAgICAgICBw
dXNoKEBpbXBsQ29udGVudCwgIkpTVmFsdWUgJHtjbGFzc05hbWV9OjpnZXRDb25zdHJ1Y3RvcihW
TSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpXG57XG4iKTsKKyAgICAgICAgcHVz
aChAaW1wbENvbnRlbnQsICIgICAgcmV0dXJuIGdldERPTUNvbnN0cnVjdG9yPCR7Y2xhc3NOYW1l
fUNvbnN0cnVjdG9yPih2bSwganNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0
KSk7XG4iKTsKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ9XG5cbiIpOwogICAgICAgICBp
ZiAoJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Ik5hbWVkQ29uc3RydWN0b3IifSkg
ewotICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJKU1ZhbHVlICR7Y2xhc3NOYW1lfTo6
Z2V0TmFtZWRDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QpXG57XG4iKTsKLSAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHJl
dHVybiBnZXRET01Db25zdHJ1Y3Rvcjwke2NsYXNzTmFtZX1OYW1lZENvbnN0cnVjdG9yPihleGVj
LCBqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QpKTtcbiIpOworICAgICAg
ICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJKU1ZhbHVlICR7Y2xhc3NOYW1lfTo6Z2V0TmFtZWRD
b25zdHJ1Y3RvcihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpXG57XG4iKTsK
KyAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHJldHVybiBnZXRET01Db25zdHJ1
Y3Rvcjwke2NsYXNzTmFtZX1OYW1lZENvbnN0cnVjdG9yPih2bSwganNDYXN0PEpTRE9NR2xvYmFs
T2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KSk7XG4iKTsKICAgICAgICAgICAgIHB1c2goQGltcGxDb250
ZW50LCAifVxuXG4iKTsKICAgICAgICAgfQogICAgIH0KQEAgLTM3NDksMTQgKzM3NDksMTQgQEAg
c3ViIEdlbmVyYXRlQ29uc3RydWN0b3JEZWNsYXJhdGlvbgogICAgIHB1c2goQCRvdXRwdXRBcnJh
eSwgImNsYXNzICR7Y29uc3RydWN0b3JDbGFzc05hbWV9IDogcHVibGljIERPTUNvbnN0cnVjdG9y
T2JqZWN0IHtcbiIpOwogICAgIHB1c2goQCRvdXRwdXRBcnJheSwgInByaXZhdGU6XG4iKTsKICAg
ICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgJHtjb25zdHJ1Y3RvckNsYXNzTmFtZX0oSlNDOjpT
dHJ1Y3R1cmUqLCBKU0RPTUdsb2JhbE9iamVjdCopO1xuIik7Ci0gICAgcHVzaChAJG91dHB1dEFy
cmF5LCAiICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oSlNDOjpFeGVjU3RhdGUqLCBKU0RPTUdsb2Jh
bE9iamVjdCopO1xuXG4iKTsKKyAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgdm9pZCBmaW5p
c2hDcmVhdGlvbihKU0M6OlZNJiwgSlNET01HbG9iYWxPYmplY3QqKTtcblxuIik7CiAKICAgICBw
dXNoKEAkb3V0cHV0QXJyYXksICJwdWJsaWM6XG4iKTsKICAgICBwdXNoKEAkb3V0cHV0QXJyYXks
ICIgICAgdHlwZWRlZiBET01Db25zdHJ1Y3Rvck9iamVjdCBCYXNlO1xuIik7Ci0gICAgcHVzaChA
JG91dHB1dEFycmF5LCAiICAgIHN0YXRpYyAkY29uc3RydWN0b3JDbGFzc05hbWUqIGNyZWF0ZShK
U0M6OkV4ZWNTdGF0ZSogZXhlYywgSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01HbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdClcbiIpOworICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAg
ICBzdGF0aWMgJGNvbnN0cnVjdG9yQ2xhc3NOYW1lKiBjcmVhdGUoSlNDOjpWTSYgdm0sIEpTQzo6
U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpXG4i
KTsKICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAge1xuIik7Ci0gICAgcHVzaChAJG91dHB1
dEFycmF5LCAiICAgICAgICAkY29uc3RydWN0b3JDbGFzc05hbWUqIHB0ciA9IG5ldyAoTm90TnVs
bCwgSlNDOjphbGxvY2F0ZUNlbGw8JGNvbnN0cnVjdG9yQ2xhc3NOYW1lPigqZXhlYy0+aGVhcCgp
KSkgJGNvbnN0cnVjdG9yQ2xhc3NOYW1lKHN0cnVjdHVyZSwgZ2xvYmFsT2JqZWN0KTtcbiIpOwot
ICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICAgICAgcHRyLT5maW5pc2hDcmVhdGlvbihleGVj
LCBnbG9iYWxPYmplY3QpO1xuIik7CisgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgICAgICAk
Y29uc3RydWN0b3JDbGFzc05hbWUqIHB0ciA9IG5ldyAoTm90TnVsbCwgSlNDOjphbGxvY2F0ZUNl
bGw8JGNvbnN0cnVjdG9yQ2xhc3NOYW1lPih2bS5oZWFwKSkgJGNvbnN0cnVjdG9yQ2xhc3NOYW1l
KHN0cnVjdHVyZSwgZ2xvYmFsT2JqZWN0KTtcbiIpOworICAgIHB1c2goQCRvdXRwdXRBcnJheSwg
IiAgICAgICAgcHRyLT5maW5pc2hDcmVhdGlvbih2bSwgZ2xvYmFsT2JqZWN0KTtcbiIpOwogICAg
IHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICAgICAgcmV0dXJuIHB0cjtcbiIpOwogICAgIHB1c2go
QCRvdXRwdXRBcnJheSwgIiAgICB9XG5cbiIpOwogCkBAIC0zODAxLDEwICszODAxLDEwIEBAIGNs
YXNzIEpTJHtpbnRlcmZhY2VOYW1lfU5hbWVkQ29uc3RydWN0b3IKIHB1YmxpYzoKICAgICB0eXBl
ZGVmIERPTUNvbnN0cnVjdG9yV2l0aERvY3VtZW50IEJhc2U7CiAKLSAgICBzdGF0aWMgSlMke2lu
dGVyZmFjZU5hbWV9TmFtZWRDb25zdHJ1Y3RvciogY3JlYXRlKEpTQzo6RXhlY1N0YXRlKiBleGVj
LCBKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0KQorICAgIHN0YXRpYyBKUyR7aW50ZXJmYWNlTmFtZX1OYW1lZENvbnN0cnVjdG9yKiBjcmVh
dGUoSlNDOjpWTSYgdm0sIEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTRE9NR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QpCiAgICAgewotICAgICAgICBKUyR7aW50ZXJmYWNlTmFtZX1OYW1l
ZENvbnN0cnVjdG9yKiBjb25zdHJ1Y3RvciA9IG5ldyAoTm90TnVsbCwgSlNDOjphbGxvY2F0ZUNl
bGw8SlMke2ludGVyZmFjZU5hbWV9TmFtZWRDb25zdHJ1Y3Rvcj4oKmV4ZWMtPmhlYXAoKSkpIEpT
JHtpbnRlcmZhY2VOYW1lfU5hbWVkQ29uc3RydWN0b3Ioc3RydWN0dXJlLCBnbG9iYWxPYmplY3Qp
OwotICAgICAgICBjb25zdHJ1Y3Rvci0+ZmluaXNoQ3JlYXRpb24oZXhlYywgZ2xvYmFsT2JqZWN0
KTsKKyAgICAgICAgSlMke2ludGVyZmFjZU5hbWV9TmFtZWRDb25zdHJ1Y3RvciogY29uc3RydWN0
b3IgPSBuZXcgKE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxsPEpTJHtpbnRlcmZhY2VOYW1lfU5h
bWVkQ29uc3RydWN0b3I+KHZtLmhlYXApKSBKUyR7aW50ZXJmYWNlTmFtZX1OYW1lZENvbnN0cnVj
dG9yKHN0cnVjdHVyZSwgZ2xvYmFsT2JqZWN0KTsKKyAgICAgICAgY29uc3RydWN0b3ItPmZpbmlz
aENyZWF0aW9uKHZtLCBnbG9iYWxPYmplY3QpOwogICAgICAgICByZXR1cm4gY29uc3RydWN0b3I7
CiAgICAgfQogCkBAIC0zODE5LDcgKzM4MTksNyBAQCBwcml2YXRlOgogICAgIEpTJHtpbnRlcmZh
Y2VOYW1lfU5hbWVkQ29uc3RydWN0b3IoSlNDOjpTdHJ1Y3R1cmUqLCBKU0RPTUdsb2JhbE9iamVj
dCopOwogICAgIHN0YXRpYyBKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3Ry
dWN0SlMke2ludGVyZmFjZU5hbWV9KEpTQzo6RXhlY1N0YXRlKik7CiAgICAgc3RhdGljIEpTQzo6
Q29uc3RydWN0VHlwZSBnZXRDb25zdHJ1Y3REYXRhKEpTQzo6SlNDZWxsKiwgSlNDOjpDb25zdHJ1
Y3REYXRhJik7Ci0gICAgdm9pZCBmaW5pc2hDcmVhdGlvbihKU0M6OkV4ZWNTdGF0ZSosIEpTRE9N
R2xvYmFsT2JqZWN0Kik7CisgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihKU0M6OlZNJiwgSlNET01H
bG9iYWxPYmplY3QqKTsKIH07CiAKIEVORApAQCAtNDA4OSwyMiArNDA4OSwyMiBAQCBzdWIgR2Vu
ZXJhdGVDb25zdHJ1Y3RvckhlbHBlck1ldGhvZHMKICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5
LCAie1xufVxuXG4iKTsKICAgICB9CiAKLSAgICBwdXNoKEAkb3V0cHV0QXJyYXksICJ2b2lkICR7
Y29uc3RydWN0b3JDbGFzc05hbWV9OjpmaW5pc2hDcmVhdGlvbihFeGVjU3RhdGUqIGV4ZWMsIEpT
RE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpXG4iKTsKKyAgICBwdXNoKEAkb3V0cHV0QXJy
YXksICJ2b2lkICR7Y29uc3RydWN0b3JDbGFzc05hbWV9OjpmaW5pc2hDcmVhdGlvbihWTSYgdm0s
IEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpXG4iKTsKICAgICBwdXNoKEAkb3V0cHV0
QXJyYXksICJ7XG4iKTsKICAgICBpZiAoSXNET01HbG9iYWxPYmplY3QoJGludGVyZmFjZSkpIHsK
LSAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKGV4
ZWMtPnZtKCkpO1xuIik7CisgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBCYXNlOjpm
aW5pc2hDcmVhdGlvbih2bSk7XG4iKTsKICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAg
IEFTU0VSVChpbmhlcml0cyhpbmZvKCkpKTtcbiIpOwotICAgICAgICBwdXNoKEAkb3V0cHV0QXJy
YXksICIgICAgcHV0RGlyZWN0KGV4ZWMtPnZtKCksIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5wcm90
b3R5cGUsIGdsb2JhbE9iamVjdC0+cHJvdG90eXBlKCksIERvbnREZWxldGUgfCBSZWFkT25seSk7
XG4iKTsKKyAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIHB1dERpcmVjdCh2bSwgdm0u
cHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBnbG9iYWxPYmplY3QtPnByb3RvdHlwZSgpLCBEb250
RGVsZXRlIHwgUmVhZE9ubHkpO1xuIik7CiAgICAgfSBlbHNpZiAoJGdlbmVyYXRpbmdOYW1lZENv
bnN0cnVjdG9yKSB7CiAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBCYXNlOjpmaW5p
c2hDcmVhdGlvbihnbG9iYWxPYmplY3QpO1xuIik7CiAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJh
eSwgIiAgICBBU1NFUlQoaW5oZXJpdHMoaW5mbygpKSk7XG4iKTsKLSAgICAgICAgcHVzaChAJG91
dHB1dEFycmF5LCAiICAgIHB1dERpcmVjdChleGVjLT52bSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVz
KCkucHJvdG90eXBlLCAke2NsYXNzTmFtZX1Qcm90b3R5cGU6OnNlbGYoZXhlYywgZ2xvYmFsT2Jq
ZWN0KSwgTm9uZSk7XG4iKTsKKyAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIHB1dERp
cmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCAke2NsYXNzTmFtZX1Qcm90b3R5
cGU6OnNlbGYodm0sIGdsb2JhbE9iamVjdCksIE5vbmUpO1xuIik7CiAgICAgfSBlbHNlIHsKLSAg
ICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKGV4ZWMt
PnZtKCkpO1xuIik7CisgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBCYXNlOjpmaW5p
c2hDcmVhdGlvbih2bSk7XG4iKTsKICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIEFT
U0VSVChpbmhlcml0cyhpbmZvKCkpKTtcbiIpOwotICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXks
ICIgICAgcHV0RGlyZWN0KGV4ZWMtPnZtKCksIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5wcm90b3R5
cGUsICR7cHJvdG9DbGFzc05hbWV9OjpzZWxmKGV4ZWMsIGdsb2JhbE9iamVjdCksIERvbnREZWxl
dGUgfCBSZWFkT25seSk7XG4iKTsKKyAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIHB1
dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCAke3Byb3RvQ2xhc3NOYW1l
fTo6c2VsZih2bSwgZ2xvYmFsT2JqZWN0KSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KTtcbiIpOwog
ICAgIH0KLSAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgcHV0RGlyZWN0KGV4ZWMtPnZtKCks
IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5sZW5ndGgsIGpzTnVtYmVyKCR7bGVhc3RDb25zdHJ1Y3Rv
ckxlbmd0aH0pLCBSZWFkT25seSB8IERvbnREZWxldGUgfCBEb250RW51bSk7XG4iKSBpZiBkZWZp
bmVkICRsZWFzdENvbnN0cnVjdG9yTGVuZ3RoOworICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAg
ICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aCwganNOdW1iZXIoJHtsZWFz
dENvbnN0cnVjdG9yTGVuZ3RofSksIFJlYWRPbmx5IHwgRG9udERlbGV0ZSB8IERvbnRFbnVtKTtc
biIpIGlmIGRlZmluZWQgJGxlYXN0Q29uc3RydWN0b3JMZW5ndGg7CiAgICAgcHVzaChAJG91dHB1
dEFycmF5LCAifVxuXG4iKTsKIAogICAgIGlmICghJGdlbmVyYXRpbmdOYW1lZENvbnN0cnVjdG9y
KSB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9hcnJheS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX2FycmF5LmgJKHJldmlzaW9uIDE1
NjQ0MCkKKysrIFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX2FycmF5LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTY3LDcgKzY3LDcgQEAgcHVibGljOgogCiAgICAgREVDTEFSRV9JTkZPOwogCi0g
ICAgc3RhdGljIEFycmF5UHJvdG90eXBlKiBjcmVhdGVQcm90b3R5cGUoRXhlY1N0YXRlKiwgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKKyAgICBzdGF0aWMgQXJyYXlQcm90b3R5cGUqIGNy
ZWF0ZVByb3RvdHlwZShWTSYsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiAgICAgewog
ICAgICAgICByZXR1cm4gZ2xvYmFsT2JqZWN0LT5hcnJheVByb3RvdHlwZSgpOwogICAgIH0KSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX21ldGhvZC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX21ldGhvZC5oCShyZXZpc2lvbiAxNTY0NDAp
CisrKyBTb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9tZXRob2QuaAkod29ya2luZyBjb3B5
KQpAQCAtNDgsNyArNDgsNyBAQCBwdWJsaWM6CiAKICAgICBERUNMQVJFX0lORk87CiAKLSAgICBz
dGF0aWMgRnVuY3Rpb25Qcm90b3R5cGUqIGNyZWF0ZVByb3RvdHlwZShFeGVjU3RhdGUqLCBKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQorICAgIHN0YXRpYyBGdW5jdGlvblByb3RvdHlwZSog
Y3JlYXRlUHJvdG90eXBlKFZNJiwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKICAgICB7
CiAgICAgICAgIHJldHVybiBnbG9iYWxPYmplY3QtPmZ1bmN0aW9uUHJvdG90eXBlKCk7CiAgICAg
fQpJbmRleDogU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfb2JqZWN0LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9vYmplY3QuY3BwCShyZXZpc2lv
biAxNTY0NDApCisrKyBTb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9vYmplY3QuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0zNywxNSArMzcsMTUgQEAgbmFtZXNwYWNlIEJpbmRpbmdzIHsKIAog
Y29uc3QgQ2xhc3NJbmZvIFJ1bnRpbWVPYmplY3Q6OnNfaW5mbyA9IHsgIlJ1bnRpbWVPYmplY3Qi
LCAmQmFzZTo6c19pbmZvLCAwLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKFJ1bnRpbWVPYmplY3Qp
IH07CiAKLVJ1bnRpbWVPYmplY3Q6OlJ1bnRpbWVPYmplY3QoRXhlY1N0YXRlKiwgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFBhc3NSZWZQdHI8SW5z
dGFuY2U+IGluc3RhbmNlKQotICAgIDogSlNEZXN0cnVjdGlibGVPYmplY3QoZ2xvYmFsT2JqZWN0
LT52bSgpLCBzdHJ1Y3R1cmUpCitSdW50aW1lT2JqZWN0OjpSdW50aW1lT2JqZWN0KFZNJiB2bSwg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFBhc3NSZWZQdHI8SW5zdGFuY2U+IGluc3RhbmNlKQorICAg
IDogSlNEZXN0cnVjdGlibGVPYmplY3Qodm0sIHN0cnVjdHVyZSkKICAgICAsIG1faW5zdGFuY2Uo
aW5zdGFuY2UpCiB7CiB9CiAKLXZvaWQgUnVudGltZU9iamVjdDo6ZmluaXNoQ3JlYXRpb24oSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKK3ZvaWQgUnVudGltZU9iamVjdDo6ZmluaXNoQ3Jl
YXRpb24oVk0mIHZtKQogewotICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKGdsb2JhbE9iamVjdC0+
dm0oKSk7CisgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOwogICAgIEFTU0VSVChpbmhlcml0
cyhpbmZvKCkpKTsKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfb2Jq
ZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfb2JqZWN0
LmgJKHJldmlzaW9uIDE1NjQ0MCkKKysrIFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX29i
amVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNiwxMCArMzYsMTAgQEAgY2xhc3MgUnVudGltZU9i
amVjdCA6IHB1YmxpYyBKU0Rlc3RydWN0aQogcHVibGljOgogICAgIHR5cGVkZWYgSlNEZXN0cnVj
dGlibGVPYmplY3QgQmFzZTsKIAotICAgIHN0YXRpYyBSdW50aW1lT2JqZWN0KiBjcmVhdGUoRXhl
Y1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSwgUGFzc1JlZlB0cjxJbnN0YW5jZT4gaW5zdGFuY2UpCisgICAgc3RhdGljIFJ1bnRp
bWVPYmplY3QqIGNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBQYXNzUmVmUHRy
PEluc3RhbmNlPiBpbnN0YW5jZSkKICAgICB7Ci0gICAgICAgIFJ1bnRpbWVPYmplY3QqIG9iamVj
dCA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPFJ1bnRpbWVPYmplY3Q+KCpleGVjLT5oZWFw
KCkpKSBSdW50aW1lT2JqZWN0KGV4ZWMsIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBpbnN0YW5j
ZSk7Ci0gICAgICAgIG9iamVjdC0+ZmluaXNoQ3JlYXRpb24oZ2xvYmFsT2JqZWN0KTsKKyAgICAg
ICAgUnVudGltZU9iamVjdCogb2JqZWN0ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8UnVu
dGltZU9iamVjdD4odm0uaGVhcCkpIFJ1bnRpbWVPYmplY3Qodm0sIHN0cnVjdHVyZSwgaW5zdGFu
Y2UpOworICAgICAgICBvYmplY3QtPmZpbmlzaENyZWF0aW9uKHZtKTsKICAgICAgICAgcmV0dXJu
IG9iamVjdDsKICAgICB9CiAKQEAgLTYyLDcgKzYyLDcgQEAgcHVibGljOgogCiAgICAgREVDTEFS
RV9JTkZPOwogCi0gICAgc3RhdGljIE9iamVjdFByb3RvdHlwZSogY3JlYXRlUHJvdG90eXBlKEV4
ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCisgICAgc3RhdGljIE9iamVj
dFByb3RvdHlwZSogY3JlYXRlUHJvdG90eXBlKFZNJiwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCkKICAgICB7CiAgICAgICAgIHJldHVybiBnbG9iYWxPYmplY3QtPm9iamVjdFByb3RvdHlw
ZSgpOwogICAgIH0KQEAgLTczLDggKzczLDggQEAgcHVibGljOgogICAgIH0KIAogcHJvdGVjdGVk
OgotICAgIFJ1bnRpbWVPYmplY3QoRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1
cmUqLCBQYXNzUmVmUHRyPEluc3RhbmNlPik7Ci0gICAgdm9pZCBmaW5pc2hDcmVhdGlvbihKU0ds
b2JhbE9iamVjdCopOworICAgIFJ1bnRpbWVPYmplY3QoVk0mLCBTdHJ1Y3R1cmUqLCBQYXNzUmVm
UHRyPEluc3RhbmNlPik7CisgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYpOwogICAgIHN0YXRp
YyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IE92ZXJyaWRlc0dldE93blByb3BlcnR5
U2xvdCB8IE92ZXJyaWRlc0dldFByb3BlcnR5TmFtZXMgfCBCYXNlOjpTdHJ1Y3R1cmVGbGFnczsK
IAogcHJpdmF0ZToKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9jL0NSdW50aW1lT2JqZWN0
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9icmlkZ2UvYy9DUnVudGltZU9iamVj
dC5jcHAJKHJldmlzaW9uIDE1NjQ0MCkKKysrIFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9jL0NSdW50
aW1lT2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzcsMTQgKzM3LDE0IEBAIG5hbWVzcGFj
ZSBCaW5kaW5ncyB7CiAKIGNvbnN0IENsYXNzSW5mbyBDUnVudGltZU9iamVjdDo6c19pbmZvID0g
eyAiQ1J1bnRpbWVPYmplY3QiLCAmUnVudGltZU9iamVjdDo6c19pbmZvLCAwLCAwLCBDUkVBVEVf
TUVUSE9EX1RBQkxFKENSdW50aW1lT2JqZWN0KSB9OwogCi1DUnVudGltZU9iamVjdDo6Q1J1bnRp
bWVPYmplY3QoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUGFzc1JlZlB0cjxDSW5zdGFuY2U+IGluc3RhbmNlKQotICAg
IDogUnVudGltZU9iamVjdChleGVjLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgaW5zdGFuY2Up
CitDUnVudGltZU9iamVjdDo6Q1J1bnRpbWVPYmplY3QoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSwgUGFzc1JlZlB0cjxDSW5zdGFuY2U+IGluc3RhbmNlKQorICAgIDogUnVudGltZU9iamVj
dCh2bSwgc3RydWN0dXJlLCBpbnN0YW5jZSkKIHsKIH0KIAotdm9pZCBDUnVudGltZU9iamVjdDo6
ZmluaXNoQ3JlYXRpb24oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKK3ZvaWQgQ1J1bnRp
bWVPYmplY3Q6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKIHsKLSAgICBCYXNlOjpmaW5pc2hDcmVh
dGlvbihnbG9iYWxPYmplY3QpOworICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKICAgICBB
U1NFUlQoaW5oZXJpdHMoaW5mbygpKSk7CiB9CiAKQEAgLTUzLDcgKzUzLDYgQEAgQ0luc3RhbmNl
KiBDUnVudGltZU9iamVjdDo6Z2V0SW50ZXJuYWxDSQogICAgIHJldHVybiBzdGF0aWNfY2FzdDxD
SW5zdGFuY2UqPihnZXRJbnRlcm5hbEluc3RhbmNlKCkpOwogfQogCi0KIH0KIH0KIApJbmRleDog
U291cmNlL1dlYkNvcmUvYnJpZGdlL2MvQ1J1bnRpbWVPYmplY3QuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9icmlkZ2UvYy9DUnVudGltZU9iamVjdC5oCShyZXZpc2lvbiAxNTY0NDAp
CisrKyBTb3VyY2UvV2ViQ29yZS9icmlkZ2UvYy9DUnVudGltZU9iamVjdC5oCSh3b3JraW5nIGNv
cHkpCkBAIC0zMSw2ICszMSwxMCBAQAogI2luY2x1ZGUgIkpTRE9NQmluZGluZy5oIgogI2luY2x1
ZGUgInJ1bnRpbWVfb2JqZWN0LmgiCiAKK25hbWVzcGFjZSBXZWJDb3JlIHsKKyAgICBjbGFzcyBK
U0RPTUdsb2JhbE9iamVjdDsKK30KKwogbmFtZXNwYWNlIEpTQyB7CiBuYW1lc3BhY2UgQmluZGlu
Z3MgewogCkBAIC00MCwxMyArNDQsMTAgQEAgY2xhc3MgQ1J1bnRpbWVPYmplY3QgOiBwdWJsaWMg
UnVudGltZU9iagogcHVibGljOgogICAgIHR5cGVkZWYgUnVudGltZU9iamVjdCBCYXNlOwogCi0g
ICAgc3RhdGljIENSdW50aW1lT2JqZWN0KiBjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQYXNzUmVmUHRyPENJbnN0YW5jZT4gaW5zdGFuY2UpCisg
ICAgc3RhdGljIENSdW50aW1lT2JqZWN0KiBjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSwgUGFzc1JlZlB0cjxDSW5zdGFuY2U+IGluc3RhbmNlKQogICAgIHsKLSAgICAgICAgLy8g
RklYTUU6IGRlcHJlY2F0ZWRHZXRET01TdHJ1Y3R1cmUgdXNlcyB0aGUgcHJvdG90eXBlIG9mZiBv
ZiB0aGUgd3JvbmcgZ2xvYmFsIG9iamVjdAotICAgICAgICAvLyBXZSBuZWVkIHRvIHBhc3MgaW4g
dGhlIHJpZ2h0IGdsb2JhbCBvYmplY3QgZm9yICJpIi4KLSAgICAgICAgU3RydWN0dXJlKiBkb21T
dHJ1Y3R1cmUgPSBXZWJDb3JlOjpkZXByZWNhdGVkR2V0RE9NU3RydWN0dXJlPENSdW50aW1lT2Jq
ZWN0PihleGVjKTsKLSAgICAgICAgQ1J1bnRpbWVPYmplY3QqIG9iamVjdCA9IG5ldyAoTm90TnVs
bCwgYWxsb2NhdGVDZWxsPENSdW50aW1lT2JqZWN0PigqZXhlYy0+aGVhcCgpKSkgQ1J1bnRpbWVP
YmplY3QoZXhlYywgZ2xvYmFsT2JqZWN0LCBkb21TdHJ1Y3R1cmUsIGluc3RhbmNlKTsKLSAgICAg
ICAgb2JqZWN0LT5maW5pc2hDcmVhdGlvbihnbG9iYWxPYmplY3QpOworICAgICAgICBDUnVudGlt
ZU9iamVjdCogb2JqZWN0ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8Q1J1bnRpbWVPYmpl
Y3Q+KHZtLmhlYXApKSBDUnVudGltZU9iamVjdCh2bSwgc3RydWN0dXJlLCBpbnN0YW5jZSk7Cisg
ICAgICAgIG9iamVjdC0+ZmluaXNoQ3JlYXRpb24odm0pOwogICAgICAgICByZXR1cm4gb2JqZWN0
OwogICAgIH0KIApAQCAtNjAsOCArNjEsOCBAQCBwdWJsaWM6CiAgICAgfQogCiBwcml2YXRlOgot
ICAgIENSdW50aW1lT2JqZWN0KEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJl
KiwgUGFzc1JlZlB0cjxDSW5zdGFuY2U+KTsKLSAgICB2b2lkIGZpbmlzaENyZWF0aW9uKEpTR2xv
YmFsT2JqZWN0Kik7CisgICAgQ1J1bnRpbWVPYmplY3QoVk0mLCBTdHJ1Y3R1cmUqLCBQYXNzUmVm
UHRyPENJbnN0YW5jZT4pOworICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mKTsKIH07CiAKIH0K
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9jL2NfaW5zdGFuY2UuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9jL2NfaW5zdGFuY2UuY3BwCShyZXZpc2lvbiAxNTY0
NDApCisrKyBTb3VyY2UvV2ViQ29yZS9icmlkZ2UvYy9jX2luc3RhbmNlLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtOTIsNyArOTIsOCBAQCBDSW5zdGFuY2U6On5DSW5zdGFuY2UoKQogCiBSdW50aW1l
T2JqZWN0KiBDSW5zdGFuY2U6Om5ld1J1bnRpbWVPYmplY3QoRXhlY1N0YXRlKiBleGVjKQogewot
ICAgIHJldHVybiBDUnVudGltZU9iamVjdDo6Y3JlYXRlKGV4ZWMsIGV4ZWMtPmxleGljYWxHbG9i
YWxPYmplY3QoKSwgdGhpcyk7CisgICAgLy8gRklYTUU6IGRlcHJlY2F0ZWRHZXRET01TdHJ1Y3R1
cmUgdXNlcyB0aGUgcHJvdG90eXBlIG9mZiBvZiB0aGUgd3JvbmcgZ2xvYmFsIG9iamVjdC4KKyAg
ICByZXR1cm4gQ1J1bnRpbWVPYmplY3Q6OmNyZWF0ZShleGVjLT52bSgpLCBXZWJDb3JlOjpkZXBy
ZWNhdGVkR2V0RE9NU3RydWN0dXJlPENSdW50aW1lT2JqZWN0PihleGVjKSwgdGhpcyk7CiB9CiAK
IENsYXNzICpDSW5zdGFuY2U6OmdldENsYXNzKCkgY29uc3QKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2JyaWRnZS9qc2MvQnJpZGdlSlNDLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9i
cmlkZ2UvanNjL0JyaWRnZUpTQy5jcHAJKHJldmlzaW9uIDE1NjQ0MCkKKysrIFNvdXJjZS9XZWJD
b3JlL2JyaWRnZS9qc2MvQnJpZGdlSlNDLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTEsOSArOTEs
OCBAQCBSdW50aW1lT2JqZWN0KiBJbnN0YW5jZTo6bmV3UnVudGltZU9iamVjCiB7CiAgICAgSlNM
b2NrSG9sZGVyIGxvY2soZXhlYyk7CiAKLSAgICAvLyBGSVhNRTogZGVwcmVjYXRlZEdldERPTVN0
cnVjdHVyZSB1c2VzIHRoZSBwcm90b3R5cGUgb2ZmIG9mIHRoZSB3cm9uZyBnbG9iYWwgb2JqZWN0
Ci0gICAgLy8gV2UgbmVlZCB0byBwYXNzIGluIHRoZSByaWdodCBnbG9iYWwgb2JqZWN0IGZvciAi
aSIuCi0gICAgcmV0dXJuIFJ1bnRpbWVPYmplY3Q6OmNyZWF0ZShleGVjLCBleGVjLT5sZXhpY2Fs
R2xvYmFsT2JqZWN0KCksIFdlYkNvcmU6OmRlcHJlY2F0ZWRHZXRET01TdHJ1Y3R1cmU8UnVudGlt
ZU9iamVjdD4oZXhlYyksIHRoaXMpOworICAgIC8vIEZJWE1FOiBkZXByZWNhdGVkR2V0RE9NU3Ry
dWN0dXJlIHVzZXMgdGhlIHByb3RvdHlwZSBvZmYgb2YgdGhlIHdyb25nIGdsb2JhbCBvYmplY3Qu
CisgICAgcmV0dXJuIFJ1bnRpbWVPYmplY3Q6OmNyZWF0ZShleGVjLT52bSgpLCBXZWJDb3JlOjpk
ZXByZWNhdGVkR2V0RE9NU3RydWN0dXJlPFJ1bnRpbWVPYmplY3Q+KGV4ZWMpLCB0aGlzKTsKIH0K
IAogdm9pZCBJbnN0YW5jZTo6d2lsbEludmFsaWRhdGVSdW50aW1lT2JqZWN0KCkKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL09iakNSdW50aW1lT2JqZWN0LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvT2JqQ1J1bnRpbWVPYmplY3QuaAkocmV2aXNp
b24gMTU2NDQwKQorKysgU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvT2JqQ1J1bnRpbWVPYmpl
Y3QuaAkod29ya2luZyBjb3B5KQpAQCAtMzcsMTMgKzM3LDEwIEBAIGNsYXNzIE9iakNSdW50aW1l
T2JqZWN0IDogcHVibGljIFJ1bnRpbWUKIHB1YmxpYzoKICAgICB0eXBlZGVmIFJ1bnRpbWVPYmpl
Y3QgQmFzZTsKIAotICAgIHN0YXRpYyBPYmpDUnVudGltZU9iamVjdCogY3JlYXRlKEV4ZWNTdGF0
ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUGFzc1JlZlB0cjxPYmpjSW5z
dGFuY2U+IGluc3QpCisgICAgc3RhdGljIE9iakNSdW50aW1lT2JqZWN0KiBjcmVhdGUoVk0mIHZt
LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUGFzc1JlZlB0cjxPYmpjSW5zdGFuY2U+IGluc3QpCiAg
ICAgewotICAgICAgICAvLyBGSVhNRTogZGVwcmVjYXRlZEdldERPTVN0cnVjdHVyZSB1c2VzIHRo
ZSBwcm90b3R5cGUgb2ZmIG9mIHRoZSB3cm9uZyBnbG9iYWwgb2JqZWN0Ci0gICAgICAgIC8vIFdl
IG5lZWQgdG8gcGFzcyBpbiB0aGUgcmlnaHQgZ2xvYmFsIG9iamVjdCBmb3IgImkiLgotICAgICAg
ICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IFdlYkNvcmU6OmRlcHJlY2F0ZWRHZXRET01TdHJ1Y3R1
cmU8T2JqQ1J1bnRpbWVPYmplY3Q+KGV4ZWMpOwotICAgICAgICBPYmpDUnVudGltZU9iamVjdCog
b2JqZWN0ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8T2JqQ1J1bnRpbWVPYmplY3Q+KCpl
eGVjLT5oZWFwKCkpKSBPYmpDUnVudGltZU9iamVjdChleGVjLCBnbG9iYWxPYmplY3QsIGluc3Qs
IHN0cnVjdHVyZSk7Ci0gICAgICAgIG9iamVjdC0+ZmluaXNoQ3JlYXRpb24oZ2xvYmFsT2JqZWN0
KTsKKyAgICAgICAgT2JqQ1J1bnRpbWVPYmplY3QqIG9iamVjdCA9IG5ldyAoTm90TnVsbCwgYWxs
b2NhdGVDZWxsPE9iakNSdW50aW1lT2JqZWN0Pih2bS5oZWFwKSkgT2JqQ1J1bnRpbWVPYmplY3Qo
dm0sIHN0cnVjdHVyZSwgaW5zdCk7CisgICAgICAgIG9iamVjdC0+ZmluaXNoQ3JlYXRpb24odm0p
OwogICAgICAgICByZXR1cm4gb2JqZWN0OwogICAgIH0KIApAQCAtNTcsOCArNTQsOCBAQCBwdWJs
aWM6CiAgICAgfQogCiBwcml2YXRlOgotICAgIE9iakNSdW50aW1lT2JqZWN0KEV4ZWNTdGF0ZSos
IEpTR2xvYmFsT2JqZWN0KiwgUGFzc1JlZlB0cjxPYmpjSW5zdGFuY2U+LCBTdHJ1Y3R1cmUqKTsK
LSAgICB2b2lkIGZpbmlzaENyZWF0aW9uKEpTR2xvYmFsT2JqZWN0Kik7CisgICAgT2JqQ1J1bnRp
bWVPYmplY3QoVk0mLCBTdHJ1Y3R1cmUqLCBQYXNzUmVmUHRyPE9iamNJbnN0YW5jZT4pOworICAg
IHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mKTsKIH07CiAKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2JyaWRnZS9vYmpjL09iakNSdW50aW1lT2JqZWN0Lm1tCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2JyaWRnZS9vYmpjL09iakNSdW50aW1lT2JqZWN0Lm1tCShyZXZpc2lvbiAxNTY0NDAp
CisrKyBTb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9PYmpDUnVudGltZU9iamVjdC5tbQkod29y
a2luZyBjb3B5KQpAQCAtMzUsMTQgKzM1LDE0IEBAIG5hbWVzcGFjZSBCaW5kaW5ncyB7CiAKIGNv
bnN0IENsYXNzSW5mbyBPYmpDUnVudGltZU9iamVjdDo6c19pbmZvID0geyAiT2JqQ1J1bnRpbWVP
YmplY3QiLCAmUnVudGltZU9iamVjdDo6c19pbmZvLCAwLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxF
KE9iakNSdW50aW1lT2JqZWN0KSB9OwogCi1PYmpDUnVudGltZU9iamVjdDo6T2JqQ1J1bnRpbWVP
YmplY3QoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQYXNz
UmVmUHRyPE9iamNJbnN0YW5jZT4gaW5zdGFuY2UsIFN0cnVjdHVyZSogc3RydWN0dXJlKQotICAg
IDogUnVudGltZU9iamVjdChleGVjLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgaW5zdGFuY2Up
CitPYmpDUnVudGltZU9iamVjdDo6T2JqQ1J1bnRpbWVPYmplY3QoVk0mIHZtLCBTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSwgUGFzc1JlZlB0cjxPYmpjSW5zdGFuY2U+IGluc3RhbmNlKQorICAgIDogUnVu
dGltZU9iamVjdCh2bSwgc3RydWN0dXJlLCBpbnN0YW5jZSkKIHsKIH0KIAotdm9pZCBPYmpDUnVu
dGltZU9iamVjdDo6ZmluaXNoQ3JlYXRpb24oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkK
K3ZvaWQgT2JqQ1J1bnRpbWVPYmplY3Q6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKIHsKLSAgICBC
YXNlOjpmaW5pc2hDcmVhdGlvbihnbG9iYWxPYmplY3QpOworICAgIEJhc2U6OmZpbmlzaENyZWF0
aW9uKHZtKTsKICAgICBBU1NFUlQoaW5oZXJpdHMoJnNfaW5mbykpOwogfQogCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX2luc3RhbmNlLm1tCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfaW5zdGFuY2UubW0JKHJldmlzaW9uIDE1NjQ0
MCkKKysrIFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfaW5zdGFuY2UubW0JKHdvcmtp
bmcgY29weSkKQEAgLTcyLDcgKzcyLDggQEAgc3RhdGljIE5TTWFwVGFibGUgKmNyZWF0ZUluc3Rh
bmNlV3JhcHBlcgogCiBSdW50aW1lT2JqZWN0KiBPYmpjSW5zdGFuY2U6Om5ld1J1bnRpbWVPYmpl
Y3QoRXhlY1N0YXRlKiBleGVjKQogewotICAgIHJldHVybiBPYmpDUnVudGltZU9iamVjdDo6Y3Jl
YXRlKGV4ZWMsIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSwgdGhpcyk7CisgICAgLy8gRklY
TUU6IGRlcHJlY2F0ZWRHZXRET01TdHJ1Y3R1cmUgdXNlcyB0aGUgcHJvdG90eXBlIG9mZiBvZiB0
aGUgd3JvbmcgZ2xvYmFsIG9iamVjdC4KKyAgICByZXR1cm4gT2JqQ1J1bnRpbWVPYmplY3Q6OmNy
ZWF0ZShleGVjLT52bSgpLCBXZWJDb3JlOjpkZXByZWNhdGVkR2V0RE9NU3RydWN0dXJlPE9iakNS
dW50aW1lT2JqZWN0PihleGVjKSwgdGhpcyk7CiB9CiAKIHZvaWQgT2JqY0luc3RhbmNlOjpzZXRH
bG9iYWxFeGNlcHRpb24oTlNTdHJpbmcqIGV4Y2VwdGlvbiwgSlNHbG9iYWxPYmplY3QqIGV4Y2Vw
dGlvbkVudmlyb25tZW50KQpJbmRleDogU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19y
dW50aW1lLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19y
dW50aW1lLmgJKHJldmlzaW9uIDE1NjQ0MCkKKysrIFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpj
L29iamNfcnVudGltZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDcsNyArMTA3LDcgQEAgcHVibGlj
OgogCiAgICAgY29uc3QgU3RyaW5nJiBwcm9wZXJ0eU5hbWUoKSBjb25zdCB7IHJldHVybiBtX2l0
ZW07IH0KIAotICAgIHN0YXRpYyBPYmplY3RQcm90b3R5cGUqIGNyZWF0ZVByb3RvdHlwZShFeGVj
U3RhdGUqLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQorICAgIHN0YXRpYyBPYmplY3RQ
cm90b3R5cGUqIGNyZWF0ZVByb3RvdHlwZShWTSYsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QpCiAgICAgewogICAgICAgICByZXR1cm4gZ2xvYmFsT2JqZWN0LT5vYmplY3RQcm90b3R5cGUo
KTsKICAgICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9icmlkZ2UvcXQvcXRfaW5zdGFuY2UuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9xdC9xdF9pbnN0YW5jZS5jcHAJ
KHJldmlzaW9uIDE1NjQ0MCkKKysrIFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9xdC9xdF9pbnN0YW5j
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUwLDExICs1MCwxMCBAQCBjbGFzcyBRdFJ1bnRpbWVP
YmplY3QgOiBwdWJsaWMgUnVudGltZU9iCiBwdWJsaWM6CiAgICAgdHlwZWRlZiBSdW50aW1lT2Jq
ZWN0IEJhc2U7CiAKLSAgICBzdGF0aWMgUXRSdW50aW1lT2JqZWN0KiBjcmVhdGUoRXhlY1N0YXRl
KiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQYXNzUmVmUHRyPEluc3RhbmNl
PiBpbnN0YW5jZSkKKyAgICBzdGF0aWMgUXRSdW50aW1lT2JqZWN0KiBjcmVhdGUoVk0mIHZtLCBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUGFzc1JlZlB0cjxJbnN0YW5jZT4gaW5zdGFuY2UpCiAgICAg
ewotICAgICAgICBTdHJ1Y3R1cmUqIGRvbVN0cnVjdHVyZSA9IFdlYkNvcmU6OmRlcHJlY2F0ZWRH
ZXRET01TdHJ1Y3R1cmU8UXRSdW50aW1lT2JqZWN0PihleGVjKTsKLSAgICAgICAgUXRSdW50aW1l
T2JqZWN0KiBvYmplY3QgPSBuZXcgKGFsbG9jYXRlQ2VsbDxRdFJ1bnRpbWVPYmplY3Q+KCpleGVj
LT5oZWFwKCkpKSBRdFJ1bnRpbWVPYmplY3QoZXhlYywgZ2xvYmFsT2JqZWN0LCBkb21TdHJ1Y3R1
cmUsIGluc3RhbmNlKTsKLSAgICAgICAgb2JqZWN0LT5maW5pc2hDcmVhdGlvbihnbG9iYWxPYmpl
Y3QpOworICAgICAgICBRdFJ1bnRpbWVPYmplY3QqIG9iamVjdCA9IG5ldyAoYWxsb2NhdGVDZWxs
PFF0UnVudGltZU9iamVjdD4odm0uaGVhcCkpIFF0UnVudGltZU9iamVjdCh2bSwgc3RydWN0dXJl
LCBpbnN0YW5jZSk7CisgICAgICAgIG9iamVjdC0+ZmluaXNoQ3JlYXRpb24odm0pOwogICAgICAg
ICByZXR1cm4gb2JqZWN0OwogICAgIH0KICAgICAKQEAgLTY5LDEzICs2OCwxMyBAQCBwcm90ZWN0
ZWQ6CiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gUnVudGltZU9i
amVjdDo6U3RydWN0dXJlRmxhZ3MgfCBPdmVycmlkZXNWaXNpdENoaWxkcmVuOwogCiBwcml2YXRl
OgotICAgIFF0UnVudGltZU9iamVjdChFeGVjU3RhdGUqLCBKU0dsb2JhbE9iamVjdCosIFN0cnVj
dHVyZSosIFBhc3NSZWZQdHI8SW5zdGFuY2U+KTsKKyAgICBRdFJ1bnRpbWVPYmplY3QoVk0mLCBT
dHJ1Y3R1cmUqLCBQYXNzUmVmUHRyPEluc3RhbmNlPik7CiB9OwogCiBjb25zdCBDbGFzc0luZm8g
UXRSdW50aW1lT2JqZWN0OjpzX2luZm8gPSB7ICJRdFJ1bnRpbWVPYmplY3QiLCAmUnVudGltZU9i
amVjdDo6c19pbmZvLCAwLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKFF0UnVudGltZU9iamVjdCkg
fTsKIAotUXRSdW50aW1lT2JqZWN0OjpRdFJ1bnRpbWVPYmplY3QoRXhlY1N0YXRlKiBleGVjLCBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUGFzc1Jl
ZlB0cjxJbnN0YW5jZT4gaW5zdGFuY2UpCi0gICAgOiBSdW50aW1lT2JqZWN0KGV4ZWMsIGdsb2Jh
bE9iamVjdCwgc3RydWN0dXJlLCBpbnN0YW5jZSkKK1F0UnVudGltZU9iamVjdDo6UXRSdW50aW1l
T2JqZWN0KFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFBhc3NSZWZQdHI8SW5zdGFuY2U+
IGluc3RhbmNlKQorICAgIDogUnVudGltZU9iamVjdCh2bSwgc3RydWN0dXJlLCBpbnN0YW5jZSkK
IHsKIH0KIApAQCAtMTcyLDcgKzE3MSw5IEBAIFJ1bnRpbWVPYmplY3QqIFF0SW5zdGFuY2U6Om5l
d1J1bnRpbWVPYmoKICAgICBKU0xvY2tIb2xkZXIgbG9jayhleGVjKTsKICAgICBxRGVsZXRlQWxs
KG1fbWV0aG9kcyk7CiAgICAgbV9tZXRob2RzLmNsZWFyKCk7Ci0gICAgcmV0dXJuIFF0UnVudGlt
ZU9iamVjdDo6Y3JlYXRlKGV4ZWMsIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSwgdGhpcyk7
CisKKyAgICAvLyBGSVhNRTogZGVwcmVjYXRlZEdldERPTVN0cnVjdHVyZSB1c2VzIHRoZSBwcm90
b3R5cGUgb2ZmIG9mIHRoZSB3cm9uZyBnbG9iYWwgb2JqZWN0LgorICAgIHJldHVybiBRdFJ1bnRp
bWVPYmplY3Q6OmNyZWF0ZShleGVjLT52bSgpLCBXZWJDb3JlOjpkZXByZWNhdGVkR2V0RE9NU3Ry
dWN0dXJlPFF0UnVudGltZU9iamVjdD4oZXhlYyksIHRoaXMpOwogfQogCiB2b2lkIFF0SW5zdGFu
Y2U6OmJlZ2luKCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cJKHJldmlzaW9uIDE1NjQ0MCkKKysrIFNv
dXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE4IEBA
CisyMDEzLTA5LTI1ICBTYW0gV2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUGFz
cyBhIEpTQzo6Vk0mIHRvIEpTIGJpbmRpbmdzIG9iamVjdCBjcmVhdGlvbiBmdW5jdGlvbnMsIHJh
dGhlciB0aGFuIGEgSlNDOjpFeGVjU3RhdGUqCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xMjE5MzQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAqIFBsdWdpbnMvSG9zdGVkL1Byb3h5SW5zdGFuY2UubW06Cisg
ICAgICAgIChXZWJLaXQ6OlByb3h5SW5zdGFuY2U6Om5ld1J1bnRpbWVPYmplY3QpOgorICAgICAg
ICAqIFBsdWdpbnMvSG9zdGVkL1Byb3h5UnVudGltZU9iamVjdC5oOgorICAgICAgICAoV2ViS2l0
OjpQcm94eVJ1bnRpbWVPYmplY3Q6OmNyZWF0ZSk6CisgICAgICAgICogUGx1Z2lucy9Ib3N0ZWQv
UHJveHlSdW50aW1lT2JqZWN0Lm1tOgorICAgICAgICAoV2ViS2l0OjpQcm94eVJ1bnRpbWVPYmpl
Y3Q6OlByb3h5UnVudGltZU9iamVjdCk6CisgICAgICAgIChXZWJLaXQ6OlByb3h5UnVudGltZU9i
amVjdDo6ZmluaXNoQ3JlYXRpb24pOgorCiAyMDEzLTA5LTI1ICBDb21taXQgUXVldWUgIDxjb21t
aXQtcXVldWVAd2Via2l0Lm9yZz4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCBy
MTU2NDMyLgpJbmRleDogU291cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9Ib3N0ZWQvUHJveHlJbnN0
YW5jZS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL0hvc3RlZC9Q
cm94eUluc3RhbmNlLm1tCShyZXZpc2lvbiAxNTY0NDApCisrKyBTb3VyY2UvV2ViS2l0L21hYy9Q
bHVnaW5zL0hvc3RlZC9Qcm94eUluc3RhbmNlLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xMzMsNyAr
MTMzLDggQEAgUHJveHlJbnN0YW5jZTo6flByb3h5SW5zdGFuY2UoKQogICAgIAogUnVudGltZU9i
amVjdCogUHJveHlJbnN0YW5jZTo6bmV3UnVudGltZU9iamVjdChFeGVjU3RhdGUqIGV4ZWMpCiB7
Ci0gICAgcmV0dXJuIFByb3h5UnVudGltZU9iamVjdDo6Y3JlYXRlKGV4ZWMsIGV4ZWMtPmxleGlj
YWxHbG9iYWxPYmplY3QoKSwgdGhpcyk7CisgICAgLy8gRklYTUU6IGRlcHJlY2F0ZWRHZXRET01T
dHJ1Y3R1cmUgdXNlcyB0aGUgcHJvdG90eXBlIG9mZiBvZiB0aGUgd3JvbmcgZ2xvYmFsIG9iamVj
dC4KKyAgICByZXR1cm4gUHJveHlSdW50aW1lT2JqZWN0OjpjcmVhdGUoZXhlYy0+dm0oKSwgV2Vi
Q29yZTo6ZGVwcmVjYXRlZEdldERPTVN0cnVjdHVyZTxQcm94eVJ1bnRpbWVPYmplY3Q+KGV4ZWMp
LCB0aGlzKTsKIH0KIAogSlNDOjpCaW5kaW5nczo6Q2xhc3MqIFByb3h5SW5zdGFuY2U6OmdldENs
YXNzKCkgY29uc3QKSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvSG9zdGVkL1Byb3h5
UnVudGltZU9iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMv
SG9zdGVkL1Byb3h5UnVudGltZU9iamVjdC5oCShyZXZpc2lvbiAxNTY0NDApCisrKyBTb3VyY2Uv
V2ViS2l0L21hYy9QbHVnaW5zL0hvc3RlZC9Qcm94eVJ1bnRpbWVPYmplY3QuaAkod29ya2luZyBj
b3B5KQpAQCAtMzksMTMgKzM5LDEwIEBAIGNsYXNzIFByb3h5UnVudGltZU9iamVjdCA6IHB1Ymxp
YyBKU0M6OkIKIHB1YmxpYzoKICAgICB0eXBlZGVmIEpTQzo6QmluZGluZ3M6OlJ1bnRpbWVPYmpl
Y3QgQmFzZTsKIAotICAgIHN0YXRpYyBQcm94eVJ1bnRpbWVPYmplY3QqIGNyZWF0ZShKU0M6OkV4
ZWNTdGF0ZSogZXhlYywgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQYXNzUmVm
UHRyPFByb3h5SW5zdGFuY2U+IGluc3RhbmNlKQorICAgIHN0YXRpYyBQcm94eVJ1bnRpbWVPYmpl
Y3QqIGNyZWF0ZShKU0M6OlZNJiB2bSwgSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUGFzc1Jl
ZlB0cjxQcm94eUluc3RhbmNlPiBpbnN0YW5jZSkKICAgICB7Ci0gICAgICAgIC8vIEZJWE1FOiBk
ZXByZWNhdGVkR2V0RE9NU3RydWN0dXJlIHVzZXMgdGhlIHByb3RvdHlwZSBvZmYgb2YgdGhlIHdy
b25nIGdsb2JhbCBvYmplY3QuCi0gICAgICAgIC8vIGV4ZWMtPnZtKCkgaXMgYWxzbyBsaWtlbHkg
d3JvbmcuCi0gICAgICAgIEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBXZWJDb3JlOjpkZXBy
ZWNhdGVkR2V0RE9NU3RydWN0dXJlPFByb3h5UnVudGltZU9iamVjdD4oZXhlYyk7Ci0gICAgICAg
IFByb3h5UnVudGltZU9iamVjdCogb2JqZWN0ID0gbmV3IChKU0M6OmFsbG9jYXRlQ2VsbDxQcm94
eVJ1bnRpbWVPYmplY3Q+KCpleGVjLT5oZWFwKCkpKSBQcm94eVJ1bnRpbWVPYmplY3QoZXhlYywg
Z2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIGluc3RhbmNlKTsKLSAgICAgICAgb2JqZWN0LT5maW5p
c2hDcmVhdGlvbihnbG9iYWxPYmplY3QpOworICAgICAgICBQcm94eVJ1bnRpbWVPYmplY3QqIG9i
amVjdCA9IG5ldyAoSlNDOjphbGxvY2F0ZUNlbGw8UHJveHlSdW50aW1lT2JqZWN0Pih2bS5oZWFw
KSkgUHJveHlSdW50aW1lT2JqZWN0KHZtLCBzdHJ1Y3R1cmUsIGluc3RhbmNlKTsKKyAgICAgICAg
b2JqZWN0LT5maW5pc2hDcmVhdGlvbih2bSk7CiAgICAgICAgIHJldHVybiBvYmplY3Q7CiAgICAg
fQogCkBAIC01Nyw5ICs1NCwxMCBAQCBwdWJsaWM6CiAgICAgfQogCiAgICAgREVDTEFSRV9JTkZP
OworCiBwcml2YXRlOgotICAgIFByb3h5UnVudGltZU9iamVjdChKU0M6OkV4ZWNTdGF0ZSosIEpT
Qzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OlN0cnVjdHVyZSosIFBhc3NSZWZQdHI8UHJveHlJbnN0
YW5jZT4pOwotICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oSlNDOjpKU0dsb2JhbE9iamVjdCopOwor
ICAgIFByb3h5UnVudGltZU9iamVjdChKU0M6OlZNJiwgSlNDOjpTdHJ1Y3R1cmUqLCBQYXNzUmVm
UHRyPFByb3h5SW5zdGFuY2U+KTsKKyAgICB2b2lkIGZpbmlzaENyZWF0aW9uKEpTQzo6Vk0mKTsK
IH07CiAKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvSG9zdGVkL1Byb3h5UnVu
dGltZU9iamVjdC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL0hv
c3RlZC9Qcm94eVJ1bnRpbWVPYmplY3QubW0JKHJldmlzaW9uIDE1NjQ0MCkKKysrIFNvdXJjZS9X
ZWJLaXQvbWFjL1BsdWdpbnMvSG9zdGVkL1Byb3h5UnVudGltZU9iamVjdC5tbQkod29ya2luZyBj
b3B5KQpAQCAtMzYsMTQgKzM2LDE0IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjb25zdCBDbGFz
c0luZm8gUHJveHlSdW50aW1lT2JqZWN0OjpzX2luZm8gPSB7ICJQcm94eVJ1bnRpbWVPYmplY3Qi
LCAmUnVudGltZU9iamVjdDo6c19pbmZvLCAwLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKFByb3h5
UnVudGltZU9iamVjdCkgfTsKIAotUHJveHlSdW50aW1lT2JqZWN0OjpQcm94eVJ1bnRpbWVPYmpl
Y3QoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSwgUGFzc1JlZlB0cjxQcm94eUluc3RhbmNlPiBpbnN0YW5jZSkKLSAgICA6
IFJ1bnRpbWVPYmplY3QoZXhlYywgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIGluc3RhbmNlKQor
UHJveHlSdW50aW1lT2JqZWN0OjpQcm94eVJ1bnRpbWVPYmplY3QoVk0mIHZtLCBTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSwgUGFzc1JlZlB0cjxQcm94eUluc3RhbmNlPiBpbnN0YW5jZSkKKyAgICA6IFJ1
bnRpbWVPYmplY3Qodm0sIHN0cnVjdHVyZSwgaW5zdGFuY2UpCiB7CiB9CiAKLXZvaWQgUHJveHlS
dW50aW1lT2JqZWN0OjpmaW5pc2hDcmVhdGlvbihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
KQordm9pZCBQcm94eVJ1bnRpbWVPYmplY3Q6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKIHsKLSAg
ICBCYXNlOjpmaW5pc2hDcmVhdGlvbihnbG9iYWxPYmplY3QpOworICAgIEJhc2U6OmZpbmlzaENy
ZWF0aW9uKHZtKTsKICAgICBBU1NFUlQoaW5oZXJpdHMoJnNfaW5mbykpOwogfQogCg==
</data>
<flag name="review"
          id="234906"
          type_id="1"
          status="+"
          setter="ggaren"
    />
          </attachment>
      

    </bug>

</bugzilla>