<?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>162980</bug_id>
          
          <creation_ts>2016-10-05 10:56:54 -0700</creation_ts>
          <short_desc>[DOMJIT] Add DOMJIT::Signature</short_desc>
          <delta_ts>2016-11-02 21:24:30 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>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>
          <dependson>163226</dependson>
    
    <dependson>163657</dependson>
    
    <dependson>163900</dependson>
    
    <dependson>164199</dependson>
          <blocked>162544</blocked>
    
    <blocked>164356</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Yusuke Suzuki">ysuzuki</reporter>
          <assigned_to name="Yusuke Suzuki">ysuzuki</assigned_to>
          <cc>achristensen</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>fpizlo</cc>
    
    <cc>saam</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1236716</commentid>
    <comment_count>0</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-10-05 10:56:54 -0700</bug_when>
    <thetext>We should have two type of DOMJIT functionality.

1. DOMJIT::GetterSetter based inlining system

We can define all the DOMJIT operations in DOMJIT::Patchpoint. It is great since we have a chance to inline it completely!
While it&apos;s quite good for performance, ASM is typically written by hand.
I explored the way to generate ASM automatically from IDL compiler, but the accessors we can do so is still limited.

For example, even in Node::firstChild, it has special check path for ContainerNode, while nextSibling, parentNode, and previousSibling do not have such a path.
And this fact is not exposed in IDL.

We manually write ASM in this case. It has scalability &amp; complexity (But CSS Selector JIT already does the similar things for parentNode, siblings) problem.
So we will write this for super hot accessors. Like parentNode, firstChild etc.

2. DOMJIT::Signature based type checking elimination

On the other hand, this can be applied to many bindings automatically.
We support DOMJIT::Signature. That is the way to express DOM function&apos;s signature to DFG/FTL.
DFG / FTL recognizes and emit Checks instead of binding code. And in the middle of code, we will invoke the thin binding code that does not have any checks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1236717</commentid>
    <comment_count>1</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-10-05 10:59:33 -0700</bug_when>
    <thetext>Second one can be later extended to support DOM Binding interpreter.
It emits byte code instead of C++ native code. And it will be executed by DOM Binding interpreter.
While it does not pose any perf benefit (or it may cause some regression), it reduces amount of memory used for DOM binding native code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1238997</commentid>
    <comment_count>2</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-10-11 14:06:07 -0700</bug_when>
    <thetext>And we have a chance to annotate clobber information of methods.
And it allows DFG to hoist / eliminate the operation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1245981</commentid>
    <comment_count>3</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-10-28 22:52:30 -0700</bug_when>
    <thetext>Start working on this. Since we already have DOMJIT::Effect, this should be easy!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1245999</commentid>
    <comment_count>4</comment_count>
      <attachid>293285</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-10-29 00:33:46 -0700</bug_when>
    <thetext>Created attachment 293285
Patch

WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1246836</commentid>
    <comment_count>5</comment_count>
      <attachid>293533</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-11-01 00:19:53 -0700</bug_when>
    <thetext>Created attachment 293533
Patch

WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1247085</commentid>
    <comment_count>6</comment_count>
      <attachid>293605</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-11-01 15:33:04 -0700</bug_when>
    <thetext>Created attachment 293605
Patch

WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1247228</commentid>
    <comment_count>7</comment_count>
      <attachid>293640</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-11-01 22:51:45 -0700</bug_when>
    <thetext>Created attachment 293640
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1247229</commentid>
    <comment_count>8</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-11-01 22:53:16 -0700</bug_when>
    <thetext>PFR</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1247230</commentid>
    <comment_count>9</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-11-01 22:53:30 -0700</bug_when>
    <thetext>Oops, rebasing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1247231</commentid>
    <comment_count>10</comment_count>
      <attachid>293641</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-11-01 22:59:01 -0700</bug_when>
    <thetext>Created attachment 293641
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1247232</commentid>
    <comment_count>11</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-11-01 22:59:25 -0700</bug_when>
    <thetext>OK, rebasing is done. Ready for reviews!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1247233</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-11-01 23:00:30 -0700</bug_when>
    <thetext>Attachment 293641 did not pass style-queue:


ERROR: Source/WebCore/domjit/DOMJITIDLType.h:36:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/domjit/DOMJITIDLType.h:37:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/domjit/DOMJITIDLType.h:38:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/domjit/DOMJITIDLType.h:39:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/domjit/DOMJITIDLType.h:40:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/domjit/DOMJITIDLType.h:41:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/domjit/DOMJITIDLType.h:42:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/runtime/NativeExecutable.h:42:  The parameter name &quot;function&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/runtime/NativeExecutable.h:87:  The parameter name &quot;function&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebCore/domjit/DOMJITIDLTypeFilter.h:35:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/domjit/DOMJITIDLTypeFilter.h:36:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/domjit/DOMJITIDLTypeFilter.h:37:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/domjit/DOMJITIDLTypeFilter.h:38:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/domjit/DOMJITIDLTypeFilter.h:39:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/domjit/DOMJITIDLTypeFilter.h:40:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/domjit/DOMJITIDLTypeFilter.h:41:  More than one command on the same line  [whitespace/newline] [4]
Total errors found: 16 in 69 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>1247234</commentid>
    <comment_count>13</comment_count>
      <attachid>293642</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-11-01 23:41:02 -0700</bug_when>
    <thetext>Created attachment 293642
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1247236</commentid>
    <comment_count>14</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-11-01 23:44:32 -0700</bug_when>
    <thetext>Attachment 293642 did not pass style-queue:


ERROR: Source/WebCore/domjit/DOMJITIDLType.h:36:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/domjit/DOMJITIDLType.h:37:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/domjit/DOMJITIDLType.h:38:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/domjit/DOMJITIDLType.h:39:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/domjit/DOMJITIDLType.h:40:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/domjit/DOMJITIDLType.h:41:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/domjit/DOMJITIDLType.h:42:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/runtime/NativeExecutable.h:42:  The parameter name &quot;function&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/runtime/NativeExecutable.h:87:  The parameter name &quot;function&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebCore/domjit/DOMJITIDLTypeFilter.h:35:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/domjit/DOMJITIDLTypeFilter.h:36:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/domjit/DOMJITIDLTypeFilter.h:37:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/domjit/DOMJITIDLTypeFilter.h:38:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/domjit/DOMJITIDLTypeFilter.h:39:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/domjit/DOMJITIDLTypeFilter.h:40:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/domjit/DOMJITIDLTypeFilter.h:41:  More than one command on the same line  [whitespace/newline] [4]
Total errors found: 16 in 69 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>1247237</commentid>
    <comment_count>15</comment_count>
      <attachid>293644</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-11-01 23:50:54 -0700</bug_when>
    <thetext>Created attachment 293644
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1247238</commentid>
    <comment_count>16</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-11-01 23:52:57 -0700</bug_when>
    <thetext>Attachment 293644 did not pass style-queue:


ERROR: Source/WebCore/domjit/DOMJITIDLType.h:36:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/domjit/DOMJITIDLType.h:37:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/domjit/DOMJITIDLType.h:38:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/domjit/DOMJITIDLType.h:39:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/domjit/DOMJITIDLType.h:40:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/domjit/DOMJITIDLType.h:41:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/domjit/DOMJITIDLType.h:42:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/runtime/NativeExecutable.h:42:  The parameter name &quot;function&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/runtime/NativeExecutable.h:87:  The parameter name &quot;function&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebCore/domjit/DOMJITIDLTypeFilter.h:35:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/domjit/DOMJITIDLTypeFilter.h:36:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/domjit/DOMJITIDLTypeFilter.h:37:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/domjit/DOMJITIDLTypeFilter.h:38:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/domjit/DOMJITIDLTypeFilter.h:39:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/domjit/DOMJITIDLTypeFilter.h:40:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/domjit/DOMJITIDLTypeFilter.h:41:  More than one command on the same line  [whitespace/newline] [4]
Total errors found: 16 in 69 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>1247248</commentid>
    <comment_count>17</comment_count>
      <attachid>293647</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-11-02 00:37:25 -0700</bug_when>
    <thetext>Created attachment 293647
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1247249</commentid>
    <comment_count>18</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-11-02 00:38:46 -0700</bug_when>
    <thetext>Attempt to fix internal compiler error in GCC...............</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1247250</commentid>
    <comment_count>19</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-11-02 00:39:32 -0700</bug_when>
    <thetext>Attachment 293647 did not pass style-queue:


ERROR: Source/WebCore/domjit/DOMJITIDLType.h:36:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/domjit/DOMJITIDLType.h:37:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/domjit/DOMJITIDLType.h:38:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/domjit/DOMJITIDLType.h:39:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/domjit/DOMJITIDLType.h:40:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/domjit/DOMJITIDLType.h:41:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/domjit/DOMJITIDLType.h:42:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/runtime/NativeExecutable.h:42:  The parameter name &quot;function&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/runtime/NativeExecutable.h:87:  The parameter name &quot;function&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebCore/domjit/DOMJITIDLTypeFilter.h:35:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/domjit/DOMJITIDLTypeFilter.h:36:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/domjit/DOMJITIDLTypeFilter.h:37:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/domjit/DOMJITIDLTypeFilter.h:38:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/domjit/DOMJITIDLTypeFilter.h:39:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/domjit/DOMJITIDLTypeFilter.h:40:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/domjit/DOMJITIDLTypeFilter.h:41:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/domjit/DOMJITIDLTypeFilter.h:48:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/domjit/DOMJITIDLTypeFilter.h:49:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/domjit/DOMJITIDLTypeFilter.h:50:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/domjit/DOMJITIDLTypeFilter.h:51:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/domjit/DOMJITIDLTypeFilter.h:52:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/domjit/DOMJITIDLTypeFilter.h:53:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/domjit/DOMJITIDLTypeFilter.h:54:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/domjit/DOMJITIDLTypeFilter.h:55:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/domjit/DOMJITIDLTypeFilter.h:56:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/domjit/DOMJITIDLTypeFilter.h:57:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/domjit/DOMJITIDLTypeFilter.h:58:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/domjit/DOMJITIDLTypeFilter.h:59:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/domjit/DOMJITIDLTypeFilter.h:60:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/domjit/DOMJITIDLTypeFilter.h:61:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/domjit/DOMJITIDLTypeFilter.h:62:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/domjit/DOMJITIDLTypeFilter.h:63:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/domjit/DOMJITIDLTypeFilter.h:64:  More than one command on the same line  [whitespace/newline] [4]
Total errors found: 33 in 69 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>1247310</commentid>
    <comment_count>20</comment_count>
      <attachid>293647</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2016-11-02 07:35:26 -0700</bug_when>
    <thetext>Comment on attachment 293647
Patch

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

&gt; Source/JavaScriptCore/ChangeLog:28
&gt; +        LICM in Dromaeo dom-attr test. In the Dromaeo dom-attr getAttribute test, we can see 32x improvement. (134974.8 v.s. 4203.4)

Amazing!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1247405</commentid>
    <comment_count>21</comment_count>
      <attachid>293680</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-11-02 11:29:42 -0700</bug_when>
    <thetext>Created attachment 293680
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1247406</commentid>
    <comment_count>22</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-11-02 11:32:21 -0700</bug_when>
    <thetext>Attachment 293680 did not pass style-queue:


ERROR: Source/WebCore/domjit/DOMJITIDLType.h:36:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/domjit/DOMJITIDLType.h:37:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/domjit/DOMJITIDLType.h:38:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/domjit/DOMJITIDLType.h:39:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/domjit/DOMJITIDLType.h:40:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/domjit/DOMJITIDLType.h:41:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/domjit/DOMJITIDLType.h:42:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/runtime/NativeExecutable.h:42:  The parameter name &quot;function&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/runtime/NativeExecutable.h:87:  The parameter name &quot;function&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebCore/domjit/DOMJITIDLTypeFilter.h:35:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/domjit/DOMJITIDLTypeFilter.h:36:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/domjit/DOMJITIDLTypeFilter.h:37:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/domjit/DOMJITIDLTypeFilter.h:38:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/domjit/DOMJITIDLTypeFilter.h:39:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/domjit/DOMJITIDLTypeFilter.h:40:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/domjit/DOMJITIDLTypeFilter.h:41:  More than one command on the same line  [whitespace/newline] [4]
Total errors found: 16 in 69 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>1247410</commentid>
    <comment_count>23</comment_count>
      <attachid>293681</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-11-02 11:35:27 -0700</bug_when>
    <thetext>Created attachment 293681
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1247411</commentid>
    <comment_count>24</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-11-02 11:37:47 -0700</bug_when>
    <thetext>Attachment 293681 did not pass style-queue:


ERROR: Source/WebCore/domjit/DOMJITIDLType.h:36:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/domjit/DOMJITIDLType.h:37:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/domjit/DOMJITIDLType.h:38:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/domjit/DOMJITIDLType.h:39:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/domjit/DOMJITIDLType.h:40:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/domjit/DOMJITIDLType.h:41:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/domjit/DOMJITIDLType.h:42:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/runtime/NativeExecutable.h:42:  The parameter name &quot;function&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/runtime/NativeExecutable.h:87:  The parameter name &quot;function&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebCore/domjit/DOMJITIDLTypeFilter.h:35:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/domjit/DOMJITIDLTypeFilter.h:36:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/domjit/DOMJITIDLTypeFilter.h:37:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/domjit/DOMJITIDLTypeFilter.h:38:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/domjit/DOMJITIDLTypeFilter.h:39:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/domjit/DOMJITIDLTypeFilter.h:40:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/domjit/DOMJITIDLTypeFilter.h:41:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/domjit/DOMJITIDLTypeFilter.h:48:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/domjit/DOMJITIDLTypeFilter.h:49:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/domjit/DOMJITIDLTypeFilter.h:50:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/domjit/DOMJITIDLTypeFilter.h:51:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/domjit/DOMJITIDLTypeFilter.h:52:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/domjit/DOMJITIDLTypeFilter.h:53:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/domjit/DOMJITIDLTypeFilter.h:54:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/domjit/DOMJITIDLTypeFilter.h:55:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/domjit/DOMJITIDLTypeFilter.h:56:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/domjit/DOMJITIDLTypeFilter.h:57:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/domjit/DOMJITIDLTypeFilter.h:58:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/domjit/DOMJITIDLTypeFilter.h:59:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/domjit/DOMJITIDLTypeFilter.h:60:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/domjit/DOMJITIDLTypeFilter.h:61:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/domjit/DOMJITIDLTypeFilter.h:62:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/domjit/DOMJITIDLTypeFilter.h:63:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/domjit/DOMJITIDLTypeFilter.h:64:  More than one command on the same line  [whitespace/newline] [4]
Total errors found: 33 in 69 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>1247412</commentid>
    <comment_count>25</comment_count>
      <attachid>293682</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-11-02 11:41:34 -0700</bug_when>
    <thetext>Created attachment 293682
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1247413</commentid>
    <comment_count>26</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-11-02 11:43:16 -0700</bug_when>
    <thetext>Attachment 293682 did not pass style-queue:


ERROR: Source/WebCore/domjit/DOMJITIDLType.h:36:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/domjit/DOMJITIDLType.h:37:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/domjit/DOMJITIDLType.h:38:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/domjit/DOMJITIDLType.h:39:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/domjit/DOMJITIDLType.h:40:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/domjit/DOMJITIDLType.h:41:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/domjit/DOMJITIDLType.h:42:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/runtime/NativeExecutable.h:42:  The parameter name &quot;function&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/runtime/NativeExecutable.h:87:  The parameter name &quot;function&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebCore/domjit/DOMJITIDLTypeFilter.h:35:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/domjit/DOMJITIDLTypeFilter.h:36:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/domjit/DOMJITIDLTypeFilter.h:37:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/domjit/DOMJITIDLTypeFilter.h:38:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/domjit/DOMJITIDLTypeFilter.h:39:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/domjit/DOMJITIDLTypeFilter.h:40:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/domjit/DOMJITIDLTypeFilter.h:41:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/domjit/DOMJITIDLTypeFilter.h:48:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/domjit/DOMJITIDLTypeFilter.h:49:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/domjit/DOMJITIDLTypeFilter.h:50:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/domjit/DOMJITIDLTypeFilter.h:51:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/domjit/DOMJITIDLTypeFilter.h:52:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/domjit/DOMJITIDLTypeFilter.h:53:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/domjit/DOMJITIDLTypeFilter.h:54:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/domjit/DOMJITIDLTypeFilter.h:55:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/domjit/DOMJITIDLTypeFilter.h:56:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/domjit/DOMJITIDLTypeFilter.h:57:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/domjit/DOMJITIDLTypeFilter.h:58:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/domjit/DOMJITIDLTypeFilter.h:59:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/domjit/DOMJITIDLTypeFilter.h:60:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/domjit/DOMJITIDLTypeFilter.h:61:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/domjit/DOMJITIDLTypeFilter.h:62:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/domjit/DOMJITIDLTypeFilter.h:63:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/domjit/DOMJITIDLTypeFilter.h:64:  More than one command on the same line  [whitespace/newline] [4]
Total errors found: 33 in 69 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>1247416</commentid>
    <comment_count>27</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-11-02 11:55:59 -0700</bug_when>
    <thetext>(In reply to comment #20)
&gt; Comment on attachment 293647 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=293647&amp;action=review
&gt; 
&gt; &gt; Source/JavaScriptCore/ChangeLog:28
&gt; &gt; +        LICM in Dromaeo dom-attr test. In the Dromaeo dom-attr getAttribute test, we can see 32x improvement. (134974.8 v.s. 4203.4)
&gt; 
&gt; Amazing!

Yay! It paves the way to annotate C++ functions with effects.
I think eventually we can extend this mechanism to the C++ functions that is not related to DOM. Like String.prototype.xxx functions in JSC.
It sometimes successfully annotates the function with like &quot;It does not modify the heap!&quot;. And it gives us a chance to perform CSE, LICM, and other great DFG optimizations!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1247436</commentid>
    <comment_count>28</comment_count>
      <attachid>293688</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-11-02 13:07:11 -0700</bug_when>
    <thetext>Created attachment 293688
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1247439</commentid>
    <comment_count>29</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-11-02 13:09:58 -0700</bug_when>
    <thetext>Attachment 293688 did not pass style-queue:


ERROR: Source/WebCore/domjit/DOMJITIDLType.h:36:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/domjit/DOMJITIDLType.h:37:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/domjit/DOMJITIDLType.h:38:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/domjit/DOMJITIDLType.h:39:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/domjit/DOMJITIDLType.h:40:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/domjit/DOMJITIDLType.h:41:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/domjit/DOMJITIDLType.h:42:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/runtime/NativeExecutable.h:42:  The parameter name &quot;function&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/runtime/NativeExecutable.h:87:  The parameter name &quot;function&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebCore/domjit/DOMJITIDLTypeFilter.h:35:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/domjit/DOMJITIDLTypeFilter.h:36:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/domjit/DOMJITIDLTypeFilter.h:37:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/domjit/DOMJITIDLTypeFilter.h:38:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/domjit/DOMJITIDLTypeFilter.h:39:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/domjit/DOMJITIDLTypeFilter.h:40:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/domjit/DOMJITIDLTypeFilter.h:41:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/domjit/DOMJITIDLTypeFilter.h:48:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/domjit/DOMJITIDLTypeFilter.h:49:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/domjit/DOMJITIDLTypeFilter.h:50:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/domjit/DOMJITIDLTypeFilter.h:51:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/domjit/DOMJITIDLTypeFilter.h:52:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/domjit/DOMJITIDLTypeFilter.h:53:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/domjit/DOMJITIDLTypeFilter.h:54:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/domjit/DOMJITIDLTypeFilter.h:55:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/domjit/DOMJITIDLTypeFilter.h:56:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/domjit/DOMJITIDLTypeFilter.h:57:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/domjit/DOMJITIDLTypeFilter.h:58:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/domjit/DOMJITIDLTypeFilter.h:59:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/domjit/DOMJITIDLTypeFilter.h:60:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/domjit/DOMJITIDLTypeFilter.h:61:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/domjit/DOMJITIDLTypeFilter.h:62:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/domjit/DOMJITIDLTypeFilter.h:63:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/domjit/DOMJITIDLTypeFilter.h:64:  More than one command on the same line  [whitespace/newline] [4]
Total errors found: 33 in 69 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>1247440</commentid>
    <comment_count>30</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-11-02 13:11:21 -0700</bug_when>
    <thetext>Attempt to fix Windows build!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1247477</commentid>
    <comment_count>31</comment_count>
      <attachid>293688</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-11-02 14:18:42 -0700</bug_when>
    <thetext>Comment on attachment 293688
Patch

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

&gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:7338
&gt; +    silentSpillAllRegisters(resultRegs);
&gt; +    int argumentCountIncludingThis = signature-&gt;argumentCount + 1;
&gt; +    switch (argumentCountIncludingThis) {
&gt; +    case 1:
&gt; +        callOperation(reinterpret_cast&lt;J_JITOperation_EP&gt;(signature-&gt;unsafeFunction), extractResult(resultRegs), regs[0]);
&gt; +        break;
&gt; +    case 2:
&gt; +        callOperation(reinterpret_cast&lt;J_JITOperation_EPP&gt;(signature-&gt;unsafeFunction), extractResult(resultRegs), regs[0], regs[1]);
&gt; +        break;
&gt; +    case 3:
&gt; +        callOperation(reinterpret_cast&lt;J_JITOperation_EPPP&gt;(signature-&gt;unsafeFunction), extractResult(resultRegs), regs[0], regs[1], regs[2]);
&gt; +        break;
&gt; +    default:
&gt; +        RELEASE_ASSERT_NOT_REACHED();
&gt; +        break;
&gt; +    }
&gt; +
&gt; +    silentFillAllRegisters(resultRegs);

I&apos;ll use flushRegisters() instead later.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1247524</commentid>
    <comment_count>32</comment_count>
      <attachid>293688</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-11-02 15:46:04 -0700</bug_when>
    <thetext>Comment on attachment 293688
Patch

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

r=me
Patch looks reasonable to me. It may be worth pinging review from somebody who knows the IDL generator on that part of the patch since I&apos;m not familiar with that code.

&gt; Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp:2620
&gt; +    if (argumentCountIncludingThis != static_cast&lt;int&gt;(1 + signature-&gt;argumentCount))

Can you also add a check for the maximum number of arguments we currently support, since the code in the rest of the DFG doesn&apos;t handle arbitrary number of arguments.
Maybe also with a FIXME if we ever plan to extend the number of arguments.

&gt; Source/JavaScriptCore/dfg/DFGFixupPhase.cpp:2703
&gt; +                    case SpecBoolean:

Can you also add an assert that we don&apos;t reach the default case.

&gt; Source/JavaScriptCore/dfg/DFGNode.cpp:230
&gt; +    for (unsigned i = 1, iz = numChildren(); i &lt; iz; ++i)

You don&apos;t need iz here, I&apos;d just make the loop i &lt; numChildren().
Also, this function should ASSERT or RELEASE_ASSERT that numChildren() &lt;= 4.

&gt; Source/JavaScriptCore/dfg/DFGNode.h:2392
&gt; +        // Note that this does not include TailCall thingy intentionally.

thingy =&gt; node types

&gt; Source/JavaScriptCore/dfg/DFGNode.h:2393
&gt; +        // CallDOM thingy are always converted from Call.

thingy are =&gt; node type is

&gt; Source/JavaScriptCore/dfg/DFGPredictionPropagationPhase.cpp:714
&gt; +        case CallDOM: {

Why would this ever be in the IR at this point? I would put it with the asserts saying it shouldn&apos;t be in the IR.

&gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:7270
&gt; +    Vector&lt;Variant&lt;SpeculateCellOperand, SpeculateInt32Operand, SpeculateBooleanOperand&gt;&gt; operands;
&gt; +    Vector&lt;GPRReg&gt; regs;

Nit: I&apos;d give tese an inline capacity of 3 or 4 or whatever the max number of arguments for now are.

&gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:7321
&gt; +    silentSpillAllRegisters(resultRegs);

This should just be a flushRegisters() since you&apos;ll never have a non-call path.

&gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:7338
&gt; +    silentFillAllRegisters(resultRegs);

and then you can remove this.

&gt; Source/JavaScriptCore/domjit/DOMJITHeapRange.h:88
&gt; +        static_assert(begin &lt;= end, &quot;begin &lt;= end is the invariant of this HeapRange.&quot;);

I thought begin must be strictly less than end? Or is that only if we&apos;re not none()?
If so, maybe this can be stricter:
(begin &lt; end) || (begin == UINT16_MAX &amp;&amp; end == UINT16_MAX)

&gt; Source/JavaScriptCore/domjit/DOMJITSignature.h:35
&gt; +// Eventually, we should extend this. But possibly, 2 or 3 can cover typical use cases.

I would open a FIXME for this.

&gt; Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:9134
&gt; +        int argumentCountIncludingThis = signature-&gt;argumentCount + 1;

nit: should be unsigned integer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1247548</commentid>
    <comment_count>33</comment_count>
      <attachid>293688</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-11-02 16:22:12 -0700</bug_when>
    <thetext>Comment on attachment 293688
Patch

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

Thanks, I&apos;ll update the patch wit your comment. And request IDL review.

&gt;&gt; Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp:2620
&gt;&gt; +    if (argumentCountIncludingThis != static_cast&lt;int&gt;(1 + signature-&gt;argumentCount))
&gt; 
&gt; Can you also add a check for the maximum number of arguments we currently support, since the code in the rest of the DFG doesn&apos;t handle arbitrary number of arguments.
&gt; Maybe also with a FIXME if we ever plan to extend the number of arguments.

Added assertion here.
And FIXME exists on DOMJIT::Signature. But we also add the FIXME here.

&gt;&gt; Source/JavaScriptCore/dfg/DFGFixupPhase.cpp:2703
&gt;&gt; +                    case SpecBoolean:
&gt; 
&gt; Can you also add an assert that we don&apos;t reach the default case.

Sure! Added.

&gt;&gt; Source/JavaScriptCore/dfg/DFGNode.cpp:230
&gt;&gt; +    for (unsigned i = 1, iz = numChildren(); i &lt; iz; ++i)
&gt; 
&gt; You don&apos;t need iz here, I&apos;d just make the loop i &lt; numChildren().
&gt; Also, this function should ASSERT or RELEASE_ASSERT that numChildren() &lt;= 4.

Fixed.

&gt;&gt; Source/JavaScriptCore/dfg/DFGNode.h:2392
&gt;&gt; +        // Note that this does not include TailCall thingy intentionally.
&gt; 
&gt; thingy =&gt; node types

Fixed.

&gt;&gt; Source/JavaScriptCore/dfg/DFGNode.h:2393
&gt;&gt; +        // CallDOM thingy are always converted from Call.
&gt; 
&gt; thingy are =&gt; node type is

Fixed.

&gt;&gt; Source/JavaScriptCore/dfg/DFGPredictionPropagationPhase.cpp:714
&gt;&gt; +        case CallDOM: {
&gt; 
&gt; Why would this ever be in the IR at this point? I would put it with the asserts saying it shouldn&apos;t be in the IR.

Oops, right. It is not necessary. Dropped.
Add CallDOM to the DFG_CRASH clause.

&gt;&gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:7270
&gt;&gt; +    Vector&lt;GPRReg&gt; regs;
&gt; 
&gt; Nit: I&apos;d give tese an inline capacity of 3 or 4 or whatever the max number of arguments for now are.

Sounds nice. Fixed.

&gt;&gt;&gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:7338
&gt;&gt;&gt; +    silentFillAllRegisters(resultRegs);
&gt;&gt; 
&gt;&gt; I&apos;ll use flushRegisters() instead later.
&gt; 
&gt; and then you can remove this.

Yeah, right. Dropped.

&gt;&gt; Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:9134
&gt;&gt; +        int argumentCountIncludingThis = signature-&gt;argumentCount + 1;
&gt; 
&gt; nit: should be unsigned integer.

Fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1247549</commentid>
    <comment_count>34</comment_count>
      <attachid>293688</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-11-02 16:23:32 -0700</bug_when>
    <thetext>Comment on attachment 293688
Patch

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

&gt;&gt; Source/JavaScriptCore/domjit/DOMJITHeapRange.h:88
&gt;&gt; +        static_assert(begin &lt;= end, &quot;begin &lt;= end is the invariant of this HeapRange.&quot;);
&gt; 
&gt; I thought begin must be strictly less than end? Or is that only if we&apos;re not none()?
&gt; If so, maybe this can be stricter:
&gt; (begin &lt; end) || (begin == UINT16_MAX &amp;&amp; end == UINT16_MAX)

Yeah, right. I&apos;ll make this assertion stricter.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1247551</commentid>
    <comment_count>35</comment_count>
      <attachid>293688</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-11-02 16:24:23 -0700</bug_when>
    <thetext>Comment on attachment 293688
Patch

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

&gt;&gt; Source/JavaScriptCore/domjit/DOMJITSignature.h:35
&gt;&gt; +// Eventually, we should extend this. But possibly, 2 or 3 can cover typical use cases.
&gt; 
&gt; I would open a FIXME for this.

Yeah, opened. https://bugs.webkit.org/show_bug.cgi?id=164346</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1247571</commentid>
    <comment_count>36</comment_count>
      <attachid>293717</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-11-02 16:55:48 -0700</bug_when>
    <thetext>Created attachment 293717
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1247590</commentid>
    <comment_count>37</comment_count>
      <attachid>293724</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-11-02 17:30:50 -0700</bug_when>
    <thetext>Created attachment 293724
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1247594</commentid>
    <comment_count>38</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-11-02 17:34:25 -0700</bug_when>
    <thetext>Attachment 293724 did not pass style-queue:


ERROR: Source/WebCore/domjit/DOMJITIDLType.h:36:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/domjit/DOMJITIDLType.h:37:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/domjit/DOMJITIDLType.h:38:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/domjit/DOMJITIDLType.h:39:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/domjit/DOMJITIDLType.h:40:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/domjit/DOMJITIDLType.h:41:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/domjit/DOMJITIDLType.h:42:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/runtime/NativeExecutable.h:42:  The parameter name &quot;function&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/runtime/NativeExecutable.h:87:  The parameter name &quot;function&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebCore/domjit/DOMJITIDLTypeFilter.h:35:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/domjit/DOMJITIDLTypeFilter.h:36:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/domjit/DOMJITIDLTypeFilter.h:37:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/domjit/DOMJITIDLTypeFilter.h:38:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/domjit/DOMJITIDLTypeFilter.h:39:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/domjit/DOMJITIDLTypeFilter.h:40:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/domjit/DOMJITIDLTypeFilter.h:41:  More than one command on the same line  [whitespace/newline] [4]
Total errors found: 16 in 69 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>1247607</commentid>
    <comment_count>39</comment_count>
      <attachid>293728</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-11-02 17:56:38 -0700</bug_when>
    <thetext>Created attachment 293728
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1247608</commentid>
    <comment_count>40</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-11-02 17:59:07 -0700</bug_when>
    <thetext>Attachment 293728 did not pass style-queue:


ERROR: Source/WebCore/domjit/DOMJITIDLType.h:36:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/domjit/DOMJITIDLType.h:37:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/domjit/DOMJITIDLType.h:38:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/domjit/DOMJITIDLType.h:39:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/domjit/DOMJITIDLType.h:40:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/domjit/DOMJITIDLType.h:41:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/domjit/DOMJITIDLType.h:42:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/runtime/NativeExecutable.h:42:  The parameter name &quot;function&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/runtime/NativeExecutable.h:87:  The parameter name &quot;function&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebCore/domjit/DOMJITIDLTypeFilter.h:35:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/domjit/DOMJITIDLTypeFilter.h:36:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/domjit/DOMJITIDLTypeFilter.h:37:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/domjit/DOMJITIDLTypeFilter.h:38:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/domjit/DOMJITIDLTypeFilter.h:39:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/domjit/DOMJITIDLTypeFilter.h:40:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/domjit/DOMJITIDLTypeFilter.h:41:  More than one command on the same line  [whitespace/newline] [4]
Total errors found: 16 in 69 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>1247609</commentid>
    <comment_count>41</comment_count>
      <attachid>293728</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-11-02 17:59:30 -0700</bug_when>
    <thetext>Comment on attachment 293728
Patch

Oops, rebasing is performed on to the incorrect branch. Fixing...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1247620</commentid>
    <comment_count>42</comment_count>
      <attachid>293733</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-11-02 18:45:17 -0700</bug_when>
    <thetext>Created attachment 293733
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1247621</commentid>
    <comment_count>43</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-11-02 18:47:15 -0700</bug_when>
    <thetext>Attachment 293733 did not pass style-queue:


ERROR: Source/WebCore/domjit/DOMJITIDLType.h:36:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/domjit/DOMJITIDLType.h:37:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/domjit/DOMJITIDLType.h:38:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/domjit/DOMJITIDLType.h:39:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/domjit/DOMJITIDLType.h:40:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/domjit/DOMJITIDLType.h:41:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/domjit/DOMJITIDLType.h:42:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/runtime/NativeExecutable.h:42:  The parameter name &quot;function&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/runtime/NativeExecutable.h:87:  The parameter name &quot;function&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebCore/domjit/DOMJITIDLTypeFilter.h:35:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/domjit/DOMJITIDLTypeFilter.h:36:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/domjit/DOMJITIDLTypeFilter.h:37:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/domjit/DOMJITIDLTypeFilter.h:38:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/domjit/DOMJITIDLTypeFilter.h:39:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/domjit/DOMJITIDLTypeFilter.h:40:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/domjit/DOMJITIDLTypeFilter.h:41:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/domjit/DOMJITIDLTypeFilter.h:48:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/domjit/DOMJITIDLTypeFilter.h:49:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/domjit/DOMJITIDLTypeFilter.h:50:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/domjit/DOMJITIDLTypeFilter.h:51:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/domjit/DOMJITIDLTypeFilter.h:52:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/domjit/DOMJITIDLTypeFilter.h:53:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/domjit/DOMJITIDLTypeFilter.h:54:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/domjit/DOMJITIDLTypeFilter.h:55:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/domjit/DOMJITIDLTypeFilter.h:56:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/domjit/DOMJITIDLTypeFilter.h:57:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/domjit/DOMJITIDLTypeFilter.h:58:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/domjit/DOMJITIDLTypeFilter.h:59:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/domjit/DOMJITIDLTypeFilter.h:60:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/domjit/DOMJITIDLTypeFilter.h:61:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/domjit/DOMJITIDLTypeFilter.h:62:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/domjit/DOMJITIDLTypeFilter.h:63:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/domjit/DOMJITIDLTypeFilter.h:64:  More than one command on the same line  [whitespace/newline] [4]
Total errors found: 33 in 69 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>1247622</commentid>
    <comment_count>44</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-11-02 18:51:44 -0700</bug_when>
    <thetext>OK. I would like to request reviews for IDL code generator part. Could you review this, Chris, Alex, or Sam?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1247631</commentid>
    <comment_count>45</comment_count>
      <attachid>293738</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-11-02 20:09:44 -0700</bug_when>
    <thetext>Created attachment 293738
Patch

Small fix for IDL when Atomic string ones are required as an argument</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1247633</commentid>
    <comment_count>46</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-11-02 20:13:23 -0700</bug_when>
    <thetext>Attachment 293738 did not pass style-queue:


ERROR: Source/WebCore/domjit/DOMJITIDLType.h:36:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/domjit/DOMJITIDLType.h:37:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/domjit/DOMJITIDLType.h:38:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/domjit/DOMJITIDLType.h:39:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/domjit/DOMJITIDLType.h:40:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/domjit/DOMJITIDLType.h:41:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/domjit/DOMJITIDLType.h:42:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/runtime/NativeExecutable.h:42:  The parameter name &quot;function&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/runtime/NativeExecutable.h:87:  The parameter name &quot;function&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebCore/domjit/DOMJITIDLTypeFilter.h:35:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/domjit/DOMJITIDLTypeFilter.h:36:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/domjit/DOMJITIDLTypeFilter.h:37:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/domjit/DOMJITIDLTypeFilter.h:38:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/domjit/DOMJITIDLTypeFilter.h:39:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/domjit/DOMJITIDLTypeFilter.h:40:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/domjit/DOMJITIDLTypeFilter.h:41:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/domjit/DOMJITIDLTypeFilter.h:48:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/domjit/DOMJITIDLTypeFilter.h:49:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/domjit/DOMJITIDLTypeFilter.h:50:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/domjit/DOMJITIDLTypeFilter.h:51:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/domjit/DOMJITIDLTypeFilter.h:52:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/domjit/DOMJITIDLTypeFilter.h:53:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/domjit/DOMJITIDLTypeFilter.h:54:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/domjit/DOMJITIDLTypeFilter.h:55:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/domjit/DOMJITIDLTypeFilter.h:56:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/domjit/DOMJITIDLTypeFilter.h:57:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/domjit/DOMJITIDLTypeFilter.h:58:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/domjit/DOMJITIDLTypeFilter.h:59:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/domjit/DOMJITIDLTypeFilter.h:60:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/domjit/DOMJITIDLTypeFilter.h:61:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/domjit/DOMJITIDLTypeFilter.h:62:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/domjit/DOMJITIDLTypeFilter.h:63:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/domjit/DOMJITIDLTypeFilter.h:64:  More than one command on the same line  [whitespace/newline] [4]
Total errors found: 33 in 69 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>1247634</commentid>
    <comment_count>47</comment_count>
      <attachid>293738</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2016-11-02 20:16:21 -0700</bug_when>
    <thetext>Comment on attachment 293738
Patch

r=me on the IDL parts.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1247636</commentid>
    <comment_count>48</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-11-02 20:23:55 -0700</bug_when>
    <thetext>Committed r208320: &lt;http://trac.webkit.org/changeset/208320&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1247640</commentid>
    <comment_count>49</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-11-02 20:34:49 -0700</bug_when>
    <thetext>Will fix CLoop build soon.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1247648</commentid>
    <comment_count>50</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-11-02 21:24:30 -0700</bug_when>
    <thetext>Committed r208323: &lt;http://trac.webkit.org/changeset/208323&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>293285</attachid>
            <date>2016-10-29 00:33:46 -0700</date>
            <delta_ts>2016-11-01 00:19:51 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-162980-20161029162954.patch</filename>
            <type>text/plain</type>
            <size>9693</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA4MDkyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAz
Y2M1M2IzMWFlYmJkNjAyNmEzNmRjMTZmNmVjMTE0ZTI0NTg2ZTQxLi44YjhkZTc1YzFhNjViYWUw
NTVjOGZkZTA5ODI0YWFiYmYxYjA2ZTMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMyBAQAorMjAxNi0xMC0yOSAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBbRE9NSklUXSBBZGQgRE9NSklUOjpTaWduYXR1cmUKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2Mjk4MAorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogZG9taml0L0RPTUpJVFNp
Z25hdHVyZS5oOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6RE9NSklUOjpTaWduYXR1cmU6OlNpZ25h
dHVyZSk6CisgICAgICAgIChKU0M6OkRPTUpJVDo6U2lnbmF0dXJlOjptX2FyZ3VtZW50Q291bnQp
OgorICAgICAgICAoSlNDOjpET01KSVQ6OlNpZ25hdHVyZTo6Y2xhc3NJbmZvKToKKyAgICAgICAg
KEpTQzo6RE9NSklUOjpTaWduYXR1cmU6OmVmZmVjdCk6CisgICAgICAgIChKU0M6OkRPTUpJVDo6
U2lnbmF0dXJlOjpyZXN1bHQpOgorICAgICAgICAoSlNDOjpET01KSVQ6OlNpZ25hdHVyZTo6YXJn
dW1lbnRzKToKKyAgICAgICAgKEpTQzo6RE9NSklUOjpTaWduYXR1cmU6OmFyZ3VtZW50Q291bnQp
OgorICAgICAgICAqIHJ1bnRpbWUvTG9va3VwLmg6CisgICAgICAgIChKU0M6Okhhc2hUYWJsZVZh
bHVlOjpmdW5jdGlvbkxlbmd0aCk6CisgICAgICAgIChKU0M6Okhhc2hUYWJsZVZhbHVlOjpkb21K
SVRTaWduYXR1cmUpOgorICAgICAgICAqIHJ1bnRpbWUvUHJvcGVydHlTbG90Lmg6CisKIDIwMTYt
MTAtMjggIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CiAKICAgICAgICAg
W0RPTUpJVF0gSW5jbHVkZSBpZGVudGlmaWVyIG5hbWUgaW4gQ2FsbERPTUdldHRlciB0byBkdW1w
IGl0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKaW5kZXggMDdkYzlkZDRlNzM2M2M1NWZkMTcwOThkNDRiYTUxZDgzNGM0NDcx
Zi4uODU4MDJkYmJmNGRlNjVkYjczOGQ0NDU2MDhlYWMyYjJjZTNhZmY1MSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDE3IEBACisyMDE2LTEwLTI5ICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFA
Z21haWwuY29tPgorCisgICAgICAgIFtET01KSVRdIEFkZCBET01KSVQ6OlNpZ25hdHVyZQorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYyOTgwCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3Rz
IChPT1BTISkuCisKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5w
bToKKyAgICAgICAgKENvbXB1dGVGdW5jdGlvblNwZWNpYWwpOgorICAgICAgICAqIGJpbmRpbmdz
L3NjcmlwdHMvSURMQXR0cmlidXRlcy50eHQ6CisgICAgICAgICogZG9tL0VsZW1lbnQuaWRsOgor
CiAyMDE2LTEwLTI4ICBKZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgogCiAgICAgICAg
IFdlYkF1ZGlvIGRvZXMgbm90IHJlc3VtZSB3aGVuIG1vdmluZyBmcm9tIGJhY2tncm91bmQgdG8g
Zm9yZWdyb3VuZCB0YWIuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZG9taml0
L0RPTUpJVFNpZ25hdHVyZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RvbWppdC9ET01KSVRT
aWduYXR1cmUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kNWY1YzFkOWIzOGM3MGRiN2M4ZmVlMjU2NjgyZjQ4MzJm
NzdmNmViCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RvbWppdC9E
T01KSVRTaWduYXR1cmUuaApAQCAtMCwwICsxLDY1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJDbGFzc0lu
Zm8uaCIKKyNpbmNsdWRlICJET01KSVRFZmZlY3QuaCIKKyNpbmNsdWRlICJTcGVjdWxhdGVkVHlw
ZS5oIgorCisjaWYgRU5BQkxFKEpJVCkKKworbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBET01K
SVQgeworCisjZGVmaW5lIEpTQ19ET01KSVRfU0lHTkFUVVJFX01BWF9BUkdVTUVOVFMgMworCitj
bGFzcyBTaWduYXR1cmUgeworcHVibGljOgorICAgIHRlbXBsYXRlPHR5cGVuYW1lLi4uIEFyZ3Vt
ZW50cz4KKyAgICBjb25zdGV4cHIgU2lnbmF0dXJlKGNvbnN0IENsYXNzSW5mbyogY2xhc3NJbmZv
LCBFZmZlY3QgZWZmZWN0LCBTcGVjdWxhdGVkVHlwZSByZXN1bHQsIEFyZ3VtZW50cy4uLiBhcmd1
bWVudHMpCisgICAgICAgIDogbV9yZXN1bHQocmVzdWx0KQorICAgICAgICAsIG1fZWZmZWN0KGVm
ZmVjdCkKKyAgICAgICAgLCBtX2FyZ3VtZW50cyB7c3RhdGljX2Nhc3Q8U3BlY3VsYXRlZFR5cGU+
KGFyZ3VtZW50cykuLi59CisgICAgICAgICwgbV9hcmd1bWVudENvdW50KHNpemVvZi4uLihhcmd1
bWVudHMpKQorICAgIHsKKyAgICB9CisKKyAgICBjb25zdGV4cHIgY29uc3QgQ2xhc3NJbmZvKiBj
bGFzc0luZm8oKSBjb25zdCB7IHJldHVybiBtX2NsYXNzSW5mbzsgfQorICAgIGNvbnN0ZXhwciBF
ZmZlY3QgZWZmZWN0KCkgY29uc3QgeyByZXR1cm4gbV9lZmZlY3Q7IH0KKyAgICBjb25zdGV4cHIg
U3BlY3VsYXRlZFR5cGUgcmVzdWx0KCkgY29uc3QgeyByZXR1cm4gbV9yZXN1bHQ7IH0KKyAgICBj
b25zdGV4cHIgY29uc3QgU3BlY3VsYXRlZFR5cGUqIGFyZ3VtZW50cygpIGNvbnN0IHsgcmV0dXJu
IG1fYXJndW1lbnRzOyB9CisgICAgY29uc3RleHByIHVuc2lnbmVkIGFyZ3VtZW50Q291bnQoKSBj
b25zdCB7IHJldHVybiBtX2FyZ3VtZW50Q291bnQ7IH0KKworcHJpdmF0ZToKKyAgICBjb25zdCBD
bGFzc0luZm8qIG1fY2xhc3NJbmZvOworICAgIEVmZmVjdCBtX2VmZmVjdDsKKyAgICBTcGVjdWxh
dGVkVHlwZSBtX3Jlc3VsdDsKKyAgICBTcGVjdWxhdGVkVHlwZSBtX2FyZ3VtZW50c1tKU0NfRE9N
SklUX1NJR05BVFVSRV9NQVhfQVJHVU1FTlRTXTsKKyAgICB1bnNpZ25lZCBtX2FyZ3VtZW50Q291
bnQ7Cit9OworCit9IH0KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Mb29rdXAuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0xvb2t1
cC5oCmluZGV4IGUyZDE3OTUzODhlNzY1MmJkOGYxYjRiNmRhY2JiMmNiY2U5Y2Q0NGYuLjVlNmYw
NzE2MmM0OGIzOGY0M2EyY2NkMmUzZGJiMmVhNzQ3ODMyYzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0xvb2t1cC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0xvb2t1cC5oCkBAIC03NSwxMiArNzUsMTkgQEAgc3RydWN0IEhhc2hUYWJsZVZh
bHVlIHsKICAgICBJbnRyaW5zaWMgaW50cmluc2ljKCkgY29uc3QgeyBBU1NFUlQobV9hdHRyaWJ1
dGVzICYgRnVuY3Rpb24pOyByZXR1cm4gbV9pbnRyaW5zaWM7IH0KICAgICBCdWlsdGluR2VuZXJh
dG9yIGJ1aWx0aW5HZW5lcmF0b3IoKSBjb25zdCB7IEFTU0VSVChtX2F0dHJpYnV0ZXMgJiBCdWls
dGluKTsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8QnVpbHRpbkdlbmVyYXRvcj4obV92YWx1ZXMu
dmFsdWUxKTsgfQogICAgIE5hdGl2ZUZ1bmN0aW9uIGZ1bmN0aW9uKCkgY29uc3QgeyBBU1NFUlQo
bV9hdHRyaWJ1dGVzICYgRnVuY3Rpb24pOyByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxOYXRpdmVG
dW5jdGlvbj4obV92YWx1ZXMudmFsdWUxKTsgfQotICAgIHVuc2lnbmVkIGNoYXIgZnVuY3Rpb25M
ZW5ndGgoKSBjb25zdCB7IEFTU0VSVChtX2F0dHJpYnV0ZXMgJiBGdW5jdGlvbik7IHJldHVybiBz
dGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPihtX3ZhbHVlcy52YWx1ZTIpOyB9CisgICAgdW5zaWdu
ZWQgY2hhciBmdW5jdGlvbkxlbmd0aCgpIGNvbnN0CisgICAgeworICAgICAgICBBU1NFUlQobV9h
dHRyaWJ1dGVzICYgRnVuY3Rpb24pOworICAgICAgICBpZiAobV9hdHRyaWJ1dGVzICYgRE9NSklU
RnVuY3Rpb24pCisgICAgICAgICAgICByZXR1cm4gZG9tSklURnVuY3Rpb24oKS0+YXJndW1lbnRD
b3VudCgpOworICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4obV92YWx1
ZXMudmFsdWUyKTsKKyAgICB9CiAKICAgICBHZXRGdW5jdGlvbiBwcm9wZXJ0eUdldHRlcigpIGNv
bnN0IHsgQVNTRVJUKCEobV9hdHRyaWJ1dGVzICYgQnVpbHRpbk9yRnVuY3Rpb25PckFjY2Vzc29y
T3JMYXp5UHJvcGVydHlPckNvbnN0YW50KSk7IHJldHVybiByZWludGVycHJldF9jYXN0PEdldEZ1
bmN0aW9uPihtX3ZhbHVlcy52YWx1ZTEpOyB9CiAgICAgUHV0RnVuY3Rpb24gcHJvcGVydHlQdXR0
ZXIoKSBjb25zdCB7IEFTU0VSVCghKG1fYXR0cmlidXRlcyAmIEJ1aWx0aW5PckZ1bmN0aW9uT3JB
Y2Nlc3Nvck9yTGF6eVByb3BlcnR5T3JDb25zdGFudCkpOyByZXR1cm4gcmVpbnRlcnByZXRfY2Fz
dDxQdXRGdW5jdGlvbj4obV92YWx1ZXMudmFsdWUyKTsgfQogCiAgICAgRE9NSklUOjpHZXR0ZXJT
ZXR0ZXIqIGRvbUpJVCgpIGNvbnN0IHsgQVNTRVJUKG1fYXR0cmlidXRlcyAmIERPTUpJVEF0dHJp
YnV0ZSk7IHJldHVybiByZWludGVycHJldF9jYXN0PERPTUpJVEdldHRlclNldHRlckdlbmVyYXRv
cj4obV92YWx1ZXMudmFsdWUxKSgpOyB9CisgICAgY29uc3QgRE9NSklUOjpTaWduYXR1cmUqIGRv
bUpJVFNpZ25hdHVyZSgpIGNvbnN0IHsgQVNTRVJUKG1fYXR0cmlidXRlcyAmIERPTUpJVEZ1bmN0
aW9uKTsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgRE9NSklUOjpTaWduYXR1cmUqPiht
X3ZhbHVlcy52YWx1ZTIpOyB9CiAKICAgICBOYXRpdmVGdW5jdGlvbiBhY2Nlc3NvckdldHRlcigp
IGNvbnN0IHsgQVNTRVJUKG1fYXR0cmlidXRlcyAmIEFjY2Vzc29yKTsgcmV0dXJuIHJlaW50ZXJw
cmV0X2Nhc3Q8TmF0aXZlRnVuY3Rpb24+KG1fdmFsdWVzLnZhbHVlMSk7IH0KICAgICBOYXRpdmVG
dW5jdGlvbiBhY2Nlc3NvclNldHRlcigpIGNvbnN0IHsgQVNTRVJUKG1fYXR0cmlidXRlcyAmIEFj
Y2Vzc29yKTsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8TmF0aXZlRnVuY3Rpb24+KG1fdmFsdWVz
LnZhbHVlMik7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1By
b3BlcnR5U2xvdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlTbG90
LmgKaW5kZXggOWRlMTUxYTU2YWEyNzU2Y2ZkMGM2MDAzNjY4MjY2YjE5Zjk5MzJkZC4uMzg3ZTMx
YjQwZTVhZWJmMmYzNWY2Y2EyNzJlMzgzYzA1ZDNmNDUyZCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlTbG90LmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvUHJvcGVydHlTbG90LmgKQEAgLTUxLDYgKzUxLDcgQEAgZW51bSBBdHRy
aWJ1dGUgewogICAgIENsYXNzU3RydWN0dXJlICAgID0gMSA8PCAxMiwgLy8gcHJvcGVydHkgaXMg
YSBsYXp5IGNsYXNzIHN0cnVjdHVyZSAtIG9ubHkgdXNlZCBieSBzdGF0aWMgaGFzaHRhYmxlcwog
ICAgIFByb3BlcnR5Q2FsbGJhY2sgID0gMSA8PCAxMywgLy8gcHJvcGVydHkgdGhhdCBpcyBhIGxh
enkgcHJvcGVydHkgY2FsbGJhY2sgLSBvbmx5IHVzZWQgYnkgc3RhdGljIGhhc2h0YWJsZXMKICAg
ICBET01KSVRBdHRyaWJ1dGUgICA9IDEgPDwgMTQsIC8vIHByb3BlcnR5IGlzIGEgRE9NIEpJVCBh
dHRyaWJ1dGUgLSBvbmx5IHVzZWQgYnkgc3RhdGljIGhhc2h0YWJsZXMKKyAgICBET01KSVRGdW5j
dGlvbiAgICA9IDEgPDwgMTUsIC8vIHByb3BlcnR5IGlzIGEgRE9NIEpJVCBmdW5jdGlvbiAtIG9u
bHkgdXNlZCBieSBzdGF0aWMgaGFzaHRhYmxlcwogICAgIEJ1aWx0aW5PckZ1bmN0aW9uID0gQnVp
bHRpbiB8IEZ1bmN0aW9uLCAvLyBoZWxwZXIgb25seSB1c2VkIGJ5IHN0YXRpYyBoYXNodGFibGVz
CiAgICAgQnVpbHRpbk9yRnVuY3Rpb25PckxhenlQcm9wZXJ0eSA9IEJ1aWx0aW4gfCBGdW5jdGlv
biB8IENlbGxQcm9wZXJ0eSB8IENsYXNzU3RydWN0dXJlIHwgUHJvcGVydHlDYWxsYmFjaywgLy8g
aGVscGVyIG9ubHkgdXNlZCBieSBzdGF0aWMgaGFzaHRhYmxlcwogICAgIEJ1aWx0aW5PckZ1bmN0
aW9uT3JBY2Nlc3Nvck9yTGF6eVByb3BlcnR5ID0gQnVpbHRpbiB8IEZ1bmN0aW9uIHwgQWNjZXNz
b3IgfCBDZWxsUHJvcGVydHkgfCBDbGFzc1N0cnVjdHVyZSB8IFByb3BlcnR5Q2FsbGJhY2ssIC8v
IGhlbHBlciBvbmx5IHVzZWQgYnkgc3RhdGljIGhhc2h0YWJsZXMKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KaW5kZXggNGM5YTdmMDVl
MDQyOGU0MzI1N2M5NTdiZTYwNWU2N2EzYmVlODJjMi4uMDc3N2EzODg5OGVkNmY2Nzg5ODg1YjE3
MTBhOTc4ZThlZjNkZDliMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KQEAgLTYxMzAsNiArNjEzMCw5IEBAIHN1YiBDb21wdXRl
RnVuY3Rpb25TcGVjaWFsCiAgICAgZWxzZSB7CiAgICAgICAgIHB1c2goQHNwZWNpYWxzLCAiSlND
OjpGdW5jdGlvbiIpOwogICAgIH0KKyAgICBpZiAoJGZ1bmN0aW9uLT5zaWduYXR1cmUtPmV4dGVu
ZGVkQXR0cmlidXRlcy0+eyJET01KSVQifSkgeworICAgICAgICBwdXNoKEBzcGVjaWFscywgIkRP
TUpJVEZ1bmN0aW9uIikgaWYgJGNvZGVHZW5lcmF0b3ItPkV4dGVuZGVkQXR0cmlidXRlQ29udGFp
bnMoJGZ1bmN0aW9uLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0RPTUpJVH0sICJT
aWduYXR1cmUiKTsKKyAgICB9CiAgICAgcmV0dXJuIChAc3BlY2lhbHMgPiAwKSA/IGpvaW4oIiB8
ICIsIEBzcGVjaWFscykgOiAiMCI7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvSURMQXR0cmlidXRlcy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL0lETEF0dHJpYnV0ZXMudHh0CmluZGV4IGEyZTc1NDE1OTFjZTNmNTc2ZTdhN2Qy
ZDZkMmZjNjJkZGRmYTA0MWMuLjE0NmMyYmNjOGUwZjM3NmQ1ZGNjNTQzNTM5MDgzMzU5YzcyZGJl
NjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvSURMQXR0cmli
dXRlcy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9JRExBdHRyaWJ1
dGVzLnR4dApAQCAtNTIsNyArNTIsNyBAQCBDdXN0b21QdXRGdW5jdGlvbgogQ3VzdG9tU2V0UHJv
dG90eXBlCiBDdXN0b21TZXR0ZXIKIEN1c3RvbVRvSlNPYmplY3QKLURPTUpJVAorRE9NSklUPXxT
aWduYXR1cmUKIERvTm90Q2hlY2tDb25zdGFudHMKIERvTm90Q2hlY2tTZWN1cml0eQogRG9Ob3RD
aGVja1NlY3VyaXR5T25HZXR0ZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVt
ZW50LmlkbCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmlkbAppbmRleCAzOGI2MDZhNDAx
ZWZlMmZiNGIyMmY0ZDM4YmFkYzEzY2U0ZTY4ZGU0Li44Y2VhYjAwNWM1ODlhZTcyMjE2YmQ2ODQw
NGVjZTQyZDE0M2M3ODQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5p
ZGwKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaWRsCkBAIC0yNiw3ICsyNiw3IEBA
CiBdIGludGVyZmFjZSBFbGVtZW50IDogTm9kZSB7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIERP
TVN0cmluZz8gdGFnTmFtZTsKIAotICAgIERPTVN0cmluZz8gZ2V0QXR0cmlidXRlKERPTVN0cmlu
ZyBuYW1lKTsKKyAgICBbRE9NSklUPVNpZ25hdHVyZV0gRE9NU3RyaW5nPyBnZXRBdHRyaWJ1dGUo
RE9NU3RyaW5nIG5hbWUpOwogCiAgICAgW0NFUmVhY3Rpb25zLCBNYXlUaHJvd0xlZ2FjeUV4Y2Vw
dGlvbl0gdm9pZCBzZXRBdHRyaWJ1dGUoRE9NU3RyaW5nIG5hbWUsIERPTVN0cmluZyB2YWx1ZSk7
CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>293533</attachid>
            <date>2016-11-01 00:19:53 -0700</date>
            <delta_ts>2016-11-01 15:33:01 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-162980-20161101001557.patch</filename>
            <type>text/plain</type>
            <size>129224</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA4MTM3CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBl
ZjMwNGVjYmQ0YjQ0NzNlZjEwYWY3NmNkYTMwODQ3MmVjN2Q3MGQwLi4wOTY1YzU4NTJkODM5YWQ5
OWQ4ZTJmMTYxODAzMjBkNTMxZjZiZjQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw4MSBAQAorMjAxNi0xMS0wMSAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBbRE9NSklUXSBBZGQgRE9NSklUOjpTaWduYXR1cmUKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2Mjk4MAorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogSmF2YVNjcmlwdENvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBieXRlY29kZS9DYWxsVmFyaWFu
dC5oOgorICAgICAgICAoSlNDOjpDYWxsVmFyaWFudDo6ZnVuY3Rpb25FeGVjdXRhYmxlKToKKyAg
ICAgICAgKEpTQzo6Q2FsbFZhcmlhbnQ6Om5hdGl2ZUV4ZWN1dGFibGUpOgorICAgICAgICAoSlND
OjpDYWxsVmFyaWFudDo6c2lnbmF0dXJlRm9yKToKKyAgICAgICAgKiBkZmcvREZHQWJzdHJhY3RJ
bnRlcnByZXRlcklubGluZXMuaDoKKyAgICAgICAgKEpTQzo6REZHOjpBYnN0cmFjdEludGVycHJl
dGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHMpOgorICAgICAgICAqIGRmZy9E
RkdCeXRlQ29kZVBhcnNlci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6
OmF0dGVtcHRUb0lubGluZUNhbGwpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2Vy
OjpoYW5kbGVET01KSVRDYWxsKToKKyAgICAgICAgKiBkZmcvREZHQ2xvYmJlcml6ZS5oOgorICAg
ICAgICAoSlNDOjpERkc6OmNsb2JiZXJpemUpOgorICAgICAgICAqIGRmZy9ERkdEb2VzR0MuY3Bw
OgorICAgICAgICAoSlNDOjpERkc6OmRvZXNHQyk6CisgICAgICAgICogZGZnL0RGR0ZpeHVwUGhh
c2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkZpeHVwUGhhc2U6OmZpeHVwTm9kZSk6CisgICAg
ICAgICogZGZnL0RGR05vZGUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpoYXNIZWFwUHJl
ZGljdGlvbik6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6aGFzU2lnbmF0dXJlKToKKyAgICAg
ICAgKEpTQzo6REZHOjpOb2RlOjpzaWduYXR1cmUpOgorICAgICAgICAqIGRmZy9ERkdOb2RlVHlw
ZS5oOgorICAgICAgICAqIGRmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHA6Cisg
ICAgICAgICogZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpzYWZl
VG9FeGVjdXRlKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwOgorICAgICAg
ICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlQ2FsbERPTSk6CisgICAgICAgICog
ZGZnL0RGR1NwZWN1bGF0aXZlSklULmg6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVK
SVQ6OmNhbGxPcGVyYXRpb24pOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0
LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6CisgICAg
ICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNw
ZWN1bGF0aXZlSklUOjpjb21waWxlKToKKyAgICAgICAgKiBkb21qaXQvRE9NSklURWZmZWN0Lmg6
CisgICAgICAgIChKU0M6OkRPTUpJVDo6RWZmZWN0OjpFZmZlY3QpOgorICAgICAgICAoSlNDOjpE
T01KSVQ6OkVmZmVjdDo6Zm9yV3JpdGUpOgorICAgICAgICAoSlNDOjpET01KSVQ6OkVmZmVjdDo6
Zm9yUmVhZCk6CisgICAgICAgIChKU0M6OkRPTUpJVDo6RWZmZWN0Ojpmb3JSZWFkV3JpdGUpOgor
ICAgICAgICAoSlNDOjpET01KSVQ6OkVmZmVjdDo6Zm9yUHVyZSk6CisgICAgICAgIChKU0M6OkRP
TUpJVDo6RWZmZWN0Ojpmb3JEZWYpOgorICAgICAgICAoSlNDOjpET01KSVQ6OkVmZmVjdDo6bXVz
dEdlbmVyYXRlKToKKyAgICAgICAgKiBkb21qaXQvRE9NSklUSGVhcFJhbmdlLmg6CisgICAgICAg
IChKU0M6OkRPTUpJVDo6SGVhcFJhbmdlOjpvcGVyYXRvcj09KToKKyAgICAgICAgKEpTQzo6RE9N
SklUOjpIZWFwUmFuZ2U6Om9wZXJhdG9yIT0pOgorICAgICAgICAqIGRvbWppdC9ET01KSVRTaWdu
YXR1cmUuaDogQ29waWVkIGZyb20gU291cmNlL0phdmFTY3JpcHRDb3JlL2RvbWppdC9ET01KSVRF
ZmZlY3QuaC4KKyAgICAgICAgKEpTQzo6RE9NSklUOjpTaWduYXR1cmU6OlNpZ25hdHVyZSk6Cisg
ICAgICAgIChKU0M6OkRPTUpJVDo6U2lnbmF0dXJlOjphcmd1bWVudENvdW50KToKKyAgICAgICAg
KEpTQzo6RE9NSklUOjpTaWduYXR1cmU6OmNoZWNrRE9NKToKKyAgICAgICAgKiBqaXQvSklUT3Bl
cmF0aW9ucy5oOgorICAgICAgICAqIGppdC9KSVRUaHVua3MuY3BwOgorICAgICAgICAoSlNDOjpK
SVRUaHVua3M6Omhvc3RGdW5jdGlvblN0dWIpOgorICAgICAgICAqIGppdC9KSVRUaHVua3MuaDoK
KyAgICAgICAgKiBydW50aW1lL0pTQm91bmRGdW5jdGlvbi5jcHA6CisgICAgICAgIChKU0M6OkpT
Qm91bmRGdW5jdGlvbjo6Y3JlYXRlKToKKyAgICAgICAgKiBydW50aW1lL0pTQ2VsbC5oOgorICAg
ICAgICAqIHJ1bnRpbWUvSlNGdW5jdGlvbi5jcHA6CisgICAgICAgIChKU0M6OkpTRnVuY3Rpb246
OmNyZWF0ZSk6CisgICAgICAgICogcnVudGltZS9KU0Z1bmN0aW9uLmg6CisgICAgICAgICogcnVu
dGltZS9KU05hdGl2ZVN0ZEZ1bmN0aW9uLmNwcDoKKyAgICAgICAgKEpTQzo6SlNOYXRpdmVTdGRG
dW5jdGlvbjo6Y3JlYXRlKToKKyAgICAgICAgKiBydW50aW1lL0xvb2t1cC5oOgorICAgICAgICAo
SlNDOjpIYXNoVGFibGVWYWx1ZTo6ZnVuY3Rpb25MZW5ndGgpOgorICAgICAgICAoSlNDOjpIYXNo
VGFibGVWYWx1ZTo6c2lnbmF0dXJlKToKKyAgICAgICAgKiBydW50aW1lL05hdGl2ZUV4ZWN1dGFi
bGUuY3BwOgorICAgICAgICAoSlNDOjpOYXRpdmVFeGVjdXRhYmxlOjpjcmVhdGUpOgorICAgICAg
ICAoSlNDOjpOYXRpdmVFeGVjdXRhYmxlOjpOYXRpdmVFeGVjdXRhYmxlKToKKyAgICAgICAgKiBy
dW50aW1lL05hdGl2ZUV4ZWN1dGFibGUuaDoKKyAgICAgICAgKiBydW50aW1lL1Byb3BlcnR5U2xv
dC5oOgorICAgICAgICAqIHJ1bnRpbWUvVk0uY3BwOgorICAgICAgICAoSlNDOjpWTTo6Z2V0SG9z
dEZ1bmN0aW9uKToKKyAgICAgICAgKiBydW50aW1lL1ZNLmg6CisKIDIwMTYtMTAtMjkgIFl1c3Vr
ZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CiAKICAgICAgICAgW0pTQ10gSlNPTi5z
dHJpbmdpZnkgc2hvdWxkIGhhbmRsZSBQcm94eSB3aGljaCBpcyBub24gSlNBcnJheSBidXQgaXNB
cnJheSBpcyB0cnVlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2ExMWNjOGMzOGQ4Yzk4MGI2ZDhmZjc4MTkwMzc2
Mzk3MTU4NTNiNS4uYTZiNzBhMWQ5YmUxYjFhNmVlNWE0NzkxYWFlYTNlZjNlYmJhNjFkYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwpAQCAtMSwzICsxLDc0IEBACisyMDE2LTExLTAxICBZdXN1a2UgU3V6dWtpICA8dXRh
dGFuZS50ZWFAZ21haWwuY29tPgorCisgICAgICAgIFtET01KSVRdIEFkZCBET01KSVQ6OlNpZ25h
dHVyZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYy
OTgwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8g
bmV3IHRlc3RzIChPT1BTISkuCisKKyAgICAgICAgKiBGb3J3YXJkaW5nSGVhZGVycy9ieXRlY29k
ZS9TcGVjdWxhdGVkVHlwZS5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZG9t
aml0L0RPTUpJVEVmZmVjdC5oLgorICAgICAgICAqIEZvcndhcmRpbmdIZWFkZXJzL2RvbWppdC9E
T01KSVRTaWduYXR1cmUuaDogQ29waWVkIGZyb20gU291cmNlL0phdmFTY3JpcHRDb3JlL2RvbWpp
dC9ET01KSVRFZmZlY3QuaC4KKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2o6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuaDoKKyAgICAg
ICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbToKKyAgICAgICAgKEdlbmVy
YXRlSGVhZGVyKToKKyAgICAgICAgKEdlbmVyYXRlUHJvcGVydGllc0hhc2hUYWJsZSk6CisgICAg
ICAgIChHZXRVbnNhZmVBcmd1bWVudFR5cGUpOgorICAgICAgICAoR2V0QXJndW1lbnRUeXBlRmls
dGVyKToKKyAgICAgICAgKEdldFJlc3VsdFR5cGVGaWx0ZXIpOgorICAgICAgICAoR2VuZXJhdGVJ
bXBsZW1lbnRhdGlvbik6CisgICAgICAgIChVbnNhZmVUb05hdGl2ZSk6CisgICAgICAgIChHZW5l
cmF0ZUhhc2hUYWJsZVZhbHVlQXJyYXkpOgorICAgICAgICAoQ29tcHV0ZUZ1bmN0aW9uU3BlY2lh
bCk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9JRExBdHRyaWJ1dGVzLnR4dDoKKyAgICAg
ICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RE9NSklULmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkJpbmRpbmdDYWxsZXI8SlNUZXN0RE9NSklUPjo6Y2FzdEZvck9wZXJhdGlvbik6
CisgICAgICAgIChXZWJDb3JlOjpUZXN0RE9NSklUQW55QXR0ckRPTUpJVDo6VGVzdERPTUpJVEFu
eUF0dHJET01KSVQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdERPTUpJVEJvb2xlYW5BdHRyRE9N
SklUOjpUZXN0RE9NSklUQm9vbGVhbkF0dHJET01KSVQpOgorICAgICAgICAoV2ViQ29yZTo6VGVz
dERPTUpJVEJ5dGVBdHRyRE9NSklUOjpUZXN0RE9NSklUQnl0ZUF0dHJET01KSVQpOgorICAgICAg
ICAoV2ViQ29yZTo6VGVzdERPTUpJVE9jdGV0QXR0ckRPTUpJVDo6VGVzdERPTUpJVE9jdGV0QXR0
ckRPTUpJVCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0RE9NSklUU2hvcnRBdHRyRE9NSklUOjpU
ZXN0RE9NSklUU2hvcnRBdHRyRE9NSklUKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RET01KSVRV
bnNpZ25lZFNob3J0QXR0ckRPTUpJVDo6VGVzdERPTUpJVFVuc2lnbmVkU2hvcnRBdHRyRE9NSklU
KToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RET01KSVRMb25nQXR0ckRPTUpJVDo6VGVzdERPTUpJ
VExvbmdBdHRyRE9NSklUKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RET01KSVRVbnNpZ25lZExv
bmdBdHRyRE9NSklUOjpUZXN0RE9NSklUVW5zaWduZWRMb25nQXR0ckRPTUpJVCk6CisgICAgICAg
IChXZWJDb3JlOjpUZXN0RE9NSklUTG9uZ0xvbmdBdHRyRE9NSklUOjpUZXN0RE9NSklUTG9uZ0xv
bmdBdHRyRE9NSklUKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RET01KSVRVbnNpZ25lZExvbmdM
b25nQXR0ckRPTUpJVDo6VGVzdERPTUpJVFVuc2lnbmVkTG9uZ0xvbmdBdHRyRE9NSklUKToKKyAg
ICAgICAgKFdlYkNvcmU6OlRlc3RET01KSVRGbG9hdEF0dHJET01KSVQ6OlRlc3RET01KSVRGbG9h
dEF0dHJET01KSVQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdERPTUpJVFVucmVzdHJpY3RlZEZs
b2F0QXR0ckRPTUpJVDo6VGVzdERPTUpJVFVucmVzdHJpY3RlZEZsb2F0QXR0ckRPTUpJVCk6Cisg
ICAgICAgIChXZWJDb3JlOjpUZXN0RE9NSklURG91YmxlQXR0ckRPTUpJVDo6VGVzdERPTUpJVERv
dWJsZUF0dHJET01KSVQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdERPTUpJVFVucmVzdHJpY3Rl
ZERvdWJsZUF0dHJET01KSVQ6OlRlc3RET01KSVRVbnJlc3RyaWN0ZWREb3VibGVBdHRyRE9NSklU
KToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RET01KSVREb21TdHJpbmdBdHRyRE9NSklUOjpUZXN0
RE9NSklURG9tU3RyaW5nQXR0ckRPTUpJVCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0RE9NSklU
Qnl0ZVN0cmluZ0F0dHJET01KSVQ6OlRlc3RET01KSVRCeXRlU3RyaW5nQXR0ckRPTUpJVCk6Cisg
ICAgICAgIChXZWJDb3JlOjpUZXN0RE9NSklUVXN2U3RyaW5nQXR0ckRPTUpJVDo6VGVzdERPTUpJ
VFVzdlN0cmluZ0F0dHJET01KSVQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdERPTUpJVE5vZGVB
dHRyRE9NSklUOjpUZXN0RE9NSklUTm9kZUF0dHJET01KSVQpOgorICAgICAgICAoV2ViQ29yZTo6
VGVzdERPTUpJVEJvb2xlYW5OdWxsYWJsZUF0dHJET01KSVQ6OlRlc3RET01KSVRCb29sZWFuTnVs
bGFibGVBdHRyRE9NSklUKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RET01KSVRCeXRlTnVsbGFi
bGVBdHRyRE9NSklUOjpUZXN0RE9NSklUQnl0ZU51bGxhYmxlQXR0ckRPTUpJVCk6CisgICAgICAg
IChXZWJDb3JlOjpUZXN0RE9NSklUT2N0ZXROdWxsYWJsZUF0dHJET01KSVQ6OlRlc3RET01KSVRP
Y3RldE51bGxhYmxlQXR0ckRPTUpJVCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0RE9NSklUU2hv
cnROdWxsYWJsZUF0dHJET01KSVQ6OlRlc3RET01KSVRTaG9ydE51bGxhYmxlQXR0ckRPTUpJVCk6
CisgICAgICAgIChXZWJDb3JlOjpUZXN0RE9NSklUVW5zaWduZWRTaG9ydE51bGxhYmxlQXR0ckRP
TUpJVDo6VGVzdERPTUpJVFVuc2lnbmVkU2hvcnROdWxsYWJsZUF0dHJET01KSVQpOgorICAgICAg
ICAoV2ViQ29yZTo6VGVzdERPTUpJVExvbmdOdWxsYWJsZUF0dHJET01KSVQ6OlRlc3RET01KSVRM
b25nTnVsbGFibGVBdHRyRE9NSklUKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RET01KSVRVbnNp
Z25lZExvbmdOdWxsYWJsZUF0dHJET01KSVQ6OlRlc3RET01KSVRVbnNpZ25lZExvbmdOdWxsYWJs
ZUF0dHJET01KSVQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdERPTUpJVExvbmdMb25nTnVsbGFi
bGVBdHRyRE9NSklUOjpUZXN0RE9NSklUTG9uZ0xvbmdOdWxsYWJsZUF0dHJET01KSVQpOgorICAg
ICAgICAoV2ViQ29yZTo6VGVzdERPTUpJVFVuc2lnbmVkTG9uZ0xvbmdOdWxsYWJsZUF0dHJET01K
SVQ6OlRlc3RET01KSVRVbnNpZ25lZExvbmdMb25nTnVsbGFibGVBdHRyRE9NSklUKToKKyAgICAg
ICAgKFdlYkNvcmU6OlRlc3RET01KSVRGbG9hdE51bGxhYmxlQXR0ckRPTUpJVDo6VGVzdERPTUpJ
VEZsb2F0TnVsbGFibGVBdHRyRE9NSklUKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RET01KSVRV
bnJlc3RyaWN0ZWRGbG9hdE51bGxhYmxlQXR0ckRPTUpJVDo6VGVzdERPTUpJVFVucmVzdHJpY3Rl
ZEZsb2F0TnVsbGFibGVBdHRyRE9NSklUKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RET01KSVRE
b3VibGVOdWxsYWJsZUF0dHJET01KSVQ6OlRlc3RET01KSVREb3VibGVOdWxsYWJsZUF0dHJET01K
SVQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdERPTUpJVFVucmVzdHJpY3RlZERvdWJsZU51bGxh
YmxlQXR0ckRPTUpJVDo6VGVzdERPTUpJVFVucmVzdHJpY3RlZERvdWJsZU51bGxhYmxlQXR0ckRP
TUpJVCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0RE9NSklURG9tU3RyaW5nTnVsbGFibGVBdHRy
RE9NSklUOjpUZXN0RE9NSklURG9tU3RyaW5nTnVsbGFibGVBdHRyRE9NSklUKToKKyAgICAgICAg
KFdlYkNvcmU6OlRlc3RET01KSVRCeXRlU3RyaW5nTnVsbGFibGVBdHRyRE9NSklUOjpUZXN0RE9N
SklUQnl0ZVN0cmluZ051bGxhYmxlQXR0ckRPTUpJVCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0
RE9NSklUVXN2U3RyaW5nTnVsbGFibGVBdHRyRE9NSklUOjpUZXN0RE9NSklUVXN2U3RyaW5nTnVs
bGFibGVBdHRyRE9NSklUKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RET01KSVROb2RlTnVsbGFi
bGVBdHRyRE9NSklUOjpUZXN0RE9NSklUTm9kZU51bGxhYmxlQXR0ckRPTUpJVCk6CisgICAgICAg
IChXZWJDb3JlOjpqc1Rlc3RET01KSVRQcm90b3R5cGVGdW5jdGlvbkdldEF0dHJpYnV0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpqc1Rlc3RET01KSVRQcm90b3R5cGVGdW5jdGlvbkdldEF0dHJpYnV0
ZUNhbGxlcik6CisgICAgICAgIChXZWJDb3JlOjp1bnNhZmVKc1Rlc3RET01KSVRQcm90b3R5cGVG
dW5jdGlvbkdldEF0dHJpYnV0ZSk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rl
c3RET01KSVQuaWRsOgorICAgICAgICAqIGRvbS9FbGVtZW50LmlkbDoKKyAgICAgICAgKiBkb21q
aXQvRE9NSklUSURMQ29udmVydC5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRPTUpJVDo6
RGlyZWN0Q29udmVydGVyPElETERPTVN0cmluZz46OmRpcmVjdENvbnZlcnQ8U3RyaW5nQ29udmVy
c2lvbkNvbmZpZ3VyYXRpb246Ok5vcm1hbD4pOgorICAgICAgICAqIGRvbWppdC9ET01KSVRJRExU
eXBlLmg6IEFkZGVkLgorICAgICAgICAqIGRvbWppdC9ET01KSVRJRExUeXBlRmlsdGVyLmg6IEFk
ZGVkLgorCiAyMDE2LTEwLTMwICBCcmVudCBGdWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgog
CiAgICAgICAgIFVucmV2aWV3ZWQgZml4OiBDb3JyZWN0IENoYW5nZUxvZyBhZnRlciBteSBiYWQg
bWVyZ2UuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDQzNTViZGIyNWI4NjJjMjc0
N2E0MmQ5YTA4ZTgxNzY1YTMzY2RkNGEuLjQ5NDEwMjE3MjBlZjljZjg5ZTc4MTY2YTNkM2Q0Yzg1
ZTgzMzBmNzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9K
YXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMjU5LDEzICsxMjU5
LDEzIEBACiAJCTUzRkEyQUUzMUNGMzgwMzkwMDIyNzExRCAvKiBMTEludFByb3RvdHlwZUxvYWRB
ZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNTNGQTJBRTIxQ0YzODAzOTAwMjI3MTFEIC8qIExMSW50UHJv
dG90eXBlTG9hZEFkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludC5jcHAgKi87IH07CiAJCTUzRkQw
NEQzMUQ3QUIyNzcwMDMyODdEMyAvKiBXYXNtQ2FsbGluZ0NvbnZlbnRpb24uY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTNGRDA0RDExRDdBQjE4NzAw
MzI4N0QzIC8qIFdhc21DYWxsaW5nQ29udmVudGlvbi5jcHAgKi87IH07CiAJCTUzRkQwNEQ0MUQ3
QUIyOTEwMDMyODdEMyAvKiBXYXNtQ2FsbGluZ0NvbnZlbnRpb24uaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzRkQwNEQyMUQ3QUIxODcwMDMyODdEMyAv
KiBXYXNtQ2FsbGluZ0NvbnZlbnRpb24uaCAqLzsgfTsKLQkJNUM0RThFOTYxREJFQkU2MjAwMzZG
MUZDIC8qIEpTT05QYXJzZVRlc3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNUM0RThFOTQxREJFQkRBMjAwMzZGMUZDIC8qIEpTT05QYXJzZVRlc3Qu
Y3BwICovOyB9OwogCQk1QjcwQ0ZERTFEQjY5RTY2MDBFQzIzRjkgLyogSlNBc3luY0Z1bmN0aW9u
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1QjcwQ0ZE
ODFEQjY5RTVDMDBFQzIzRjkgLyogSlNBc3luY0Z1bmN0aW9uLmggKi87IH07CiAJCTVCNzBDRkRG
MURCNjlFNjYwMEVDMjNGOSAvKiBKU0FzeW5jRnVuY3Rpb24uY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUI3MENGRDkxREI2OUU1QzAwRUMyM0Y5IC8q
IEpTQXN5bmNGdW5jdGlvbi5jcHAgKi87IH07CiAJCTVCNzBDRkUwMURCNjlFNjYwMEVDMjNGOSAv
KiBBc3luY0Z1bmN0aW9uUHJvdG90eXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA1QjcwQ0ZEQTFEQjY5RTVDMDBFQzIzRjkgLyogQXN5bmNGdW5jdGlv
blByb3RvdHlwZS5oICovOyB9OwogCQk1QjcwQ0ZFMTFEQjY5RTY2MDBFQzIzRjkgLyogQXN5bmNG
dW5jdGlvblByb3RvdHlwZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1QjcwQ0ZEQjFEQjY5RTVDMDBFQzIzRjkgLyogQXN5bmNGdW5jdGlvblByb3Rv
dHlwZS5jcHAgKi87IH07CiAJCTVCNzBDRkUyMURCNjlFNjYwMEVDMjNGOSAvKiBBc3luY0Z1bmN0
aW9uQ29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDVCNzBDRkRDMURCNjlFNUMwMEVDMjNGOSAvKiBBc3luY0Z1bmN0aW9uQ29uc3RydWN0
b3IuaCAqLzsgfTsKIAkJNUI3MENGRTMxREI2OUU2NjAwRUMyM0Y5IC8qIEFzeW5jRnVuY3Rpb25D
b25zdHJ1Y3Rvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1QjcwQ0ZERDFEQjY5RTVDMDBFQzIzRjkgLyogQXN5bmNGdW5jdGlvbkNvbnN0cnVjdG9y
LmNwcCAqLzsgfTsKKwkJNUM0RThFOTYxREJFQkU2MjAwMzZGMUZDIC8qIEpTT05QYXJzZVRlc3Qu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUM0RThF
OTQxREJFQkRBMjAwMzZGMUZDIC8qIEpTT05QYXJzZVRlc3QuY3BwICovOyB9OwogCQk1RDVEOEFE
MTBFMEQwRUJFMDBGOUM2OTIgLyogbGliZWRpdC5keWxpYiBpbiBGcmFtZXdvcmtzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVENUQ4QUQwMEUwRDBFQkUwMEY5QzY5MiAvKiBs
aWJlZGl0LmR5bGliICovOyB9OwogCQk1REJCMTUxQjEzMUQwQjMxMDA1NkFEMzYgLyogdGVzdGFw
aS5qcyBpbiBDb3B5IFN1cHBvcnQgU2NyaXB0ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDE0RDg1Nzc0MEE0Njk2QzgwMDMyMTQ2QyAvKiB0ZXN0YXBpLmpzICovOyB9OwogCQk1
REJCMTUyNTEzMUQwQkQ3MDA1NkFEMzYgLyogbWluaWRvbS5qcyBpbiBDb3B5IFN1cHBvcnQgU2Ny
aXB0ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0MTIxMTBEMEE0ODc4ODcw
MDQ4MDI1NSAvKiBtaW5pZG9tLmpzICovOyB9OwpAQCAtMjE3OCw2ICsyMTc4LDcgQEAKIAkJRTMz
RjUwODUxQjg0MzdBMDAwNDEzODU2IC8qIEpTSW50ZXJuYWxQcm9taXNlRGVmZXJyZWQuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzM0Y1MDgzMUI4NDM3
QTAwMDQxMzg1NiAvKiBKU0ludGVybmFsUHJvbWlzZURlZmVycmVkLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTMzRjUwODcxQjg0NDlFRjAwNDEz
ODU2IC8qIEpTSW50ZXJuYWxQcm9taXNlQ29uc3RydWN0b3IubHV0LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzNGNTA4NjFCODQ0OUVGMDA0MTM4NTYg
LyogSlNJbnRlcm5hbFByb21pc2VDb25zdHJ1Y3Rvci5sdXQuaCAqLzsgfTsKIAkJRTM0RURCRjcx
REI1RkZDOTAwREM4N0E1IC8qIEZyYW1lVHJhY2Vycy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM0RURCRjYxREI1RkZDMTAwREM4N0E1IC8qIEZyYW1l
VHJhY2Vycy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CisJCUUzNTA3MDhBMURDNDlCQkYwMDg5QkNENiAvKiBET01KSVRTaWduYXR1cmUuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzNTA3MDg5MURDNDlCQjYw
MDg5QkNENiAvKiBET01KSVRTaWduYXR1cmUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQlFMzU0NjIyQjFCNjA2NUQxMDA1NDUzODYgLyogQ29uc3Ry
dWN0QWJpbGl0eS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRTM1NDYyMkExQjYwNjVEMTAwNTQ1Mzg2IC8qIENvbnN0cnVjdEFiaWxpdHkuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFMzU1NUI4QTFEQUUw
M0E1MDBGMzY5MjEgLyogRE9NSklUQ2FsbERPTUdldHRlclBhdGNocG9pbnQuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzNTU1Qjg5MURBRTAzQTIwMEYz
NjkyMSAvKiBET01KSVRDYWxsRE9NR2V0dGVyUGF0Y2hwb2ludC5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUUzNTVGMzUyMUI3REM4NTMwMEM1MERD
NSAvKiBNb2R1bGVMb2FkZXJQcm90b3R5cGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRTM1NUYzNTAxQjdEQzg1MzAwQzUwREM1IC8qIE1vZHVsZUxv
YWRlclByb3RvdHlwZS5jcHAgKi87IH07CkBAIC0zNTg4LDggKzM1ODksNiBAQAogCQk1M0ZBMkFF
MjFDRjM4MDM5MDAyMjcxMUQgLyogTExJbnRQcm90b3R5cGVMb2FkQWRhcHRpdmVTdHJ1Y3R1cmVX
YXRjaHBvaW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IExMSW50
UHJvdG90eXBlTG9hZEFkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludC5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTUzRkQwNEQxMUQ3QUIxODcwMDMyODdEMyAvKiBXYXNtQ2FsbGlu
Z0NvbnZlbnRpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2Fz
bUNhbGxpbmdDb252ZW50aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTNG
RDA0RDIxRDdBQjE4NzAwMzI4N0QzIC8qIFdhc21DYWxsaW5nQ29udmVudGlvbi5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXYXNtQ2FsbGluZ0NvbnZlbnRpb24uaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNUM0RThFOTQxREJFQkRBMjAwMzZGMUZDIC8qIEpTT05Q
YXJzZVRlc3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gSlNPTlBh
cnNlVGVzdC5jcHA7IHBhdGggPSBBUEkvdGVzdHMvSlNPTlBhcnNlVGVzdC5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTVDNEU4RTk1MURCRUJEQTIwMDM2RjFGQyAvKiBKU09OUGFy
c2VUZXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEpTT05QYXJzZVRlc3Qu
aDsgcGF0aCA9IEFQSS90ZXN0cy9KU09OUGFyc2VUZXN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTVCNzBDRkQ4MURCNjlFNUMwMEVDMjNGOSAvKiBKU0FzeW5jRnVuY3Rpb24uaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNBc3luY0Z1bmN0aW9uLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVCNzBDRkQ5MURCNjlFNUMwMEVDMjNGOSAvKiBKU0Fz
eW5jRnVuY3Rpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNB
c3luY0Z1bmN0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUI3MENGREEx
REI2OUU1QzAwRUMyM0Y5IC8qIEFzeW5jRnVuY3Rpb25Qcm90b3R5cGUuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gQXN5bmNGdW5jdGlvblByb3RvdHlwZS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtMzU5Nyw2ICszNTk2LDggQEAKIAkJNUI3MENGREMxREI2OUU1
QzAwRUMyM0Y5IC8qIEFzeW5jRnVuY3Rpb25Db25zdHJ1Y3Rvci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBBc3luY0Z1bmN0aW9uQ29uc3RydWN0b3IuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNUI3MENGREQxREI2OUU1QzAwRUMyM0Y5IC8qIEFzeW5jRnVuY3Rp
b25Db25zdHJ1Y3Rvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBB
c3luY0Z1bmN0aW9uQ29uc3RydWN0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk1QjgyNDMwNDFEQjdBQTQ5MDBFQTYzODQgLyogQXN5bmNGdW5jdGlvblByb3RvdHlwZS5qcyAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuamF2YXNjcmlwdDsgcGF0aCA9IEFzeW5jRnVuY3Rpb25Qcm90
b3R5cGUuanM7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTVDNEU4RTk0MURCRUJEQTIw
MDM2RjFGQyAvKiBKU09OUGFyc2VUZXN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgbmFtZSA9IEpTT05QYXJzZVRlc3QuY3BwOyBwYXRoID0gQVBJL3Rlc3RzL0pTT05QYXJzZVRl
c3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1QzRFOEU5NTFEQkVCREEyMDAz
NkYxRkMgLyogSlNPTlBhcnNlVGVzdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUg
PSBKU09OUGFyc2VUZXN0Lmg7IHBhdGggPSBBUEkvdGVzdHMvSlNPTlBhcnNlVGVzdC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1RDVEOEFEMDBFMEQwRUJFMDBGOUM2OTIgLyogbGli
ZWRpdC5keWxpYiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9ICJjb21waWxlZC5tYWNoLW8uZHlsaWIiOyBuYW1lID0gbGliZWRpdC5keWxpYjsgcGF0aCA9
IC91c3IvbGliL2xpYmVkaXQuZHlsaWI7IHNvdXJjZVRyZWUgPSAiPGFic29sdXRlPiI7IH07CiAJ
CTVEQUZENkNCMTQ2QjY4NjMwMEZCRUZCNCAvKiBKU0MueGNjb25maWcgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnhjY29uZmlnOyBwYXRoID0g
SlNDLnhjY29uZmlnOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1RERERjQ0NjE0RkVF
NzIyMDBCNEZCNEQgLyogTExJbnREZXNpcmVkT2Zmc2V0cy5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IG5hbWUgPSBMTEludERlc2lyZWRPZmZzZXRzLmg7IHBhdGggPSBMTEludE9mZnNldHMv
TExJbnREZXNpcmVkT2Zmc2V0cy5oOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9
OwpAQCAtNDU3NCw2ICs0NTc1LDcgQEAKIAkJRTMzRjUwODYxQjg0NDlFRjAwNDEzODU2IC8qIEpT
SW50ZXJuYWxQcm9taXNlQ29uc3RydWN0b3IubHV0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEpTSW50ZXJuYWxQcm9taXNlQ29uc3RydWN0b3IubHV0Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUUzM0Y1MDg4MUI4NDRBMUEwMDQxMzg1NiAvKiBJbnRlcm5hbFBy
b21pc2VDb25zdHJ1Y3Rvci5qcyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuamF2YXNjcmlwdDsgcGF0
aCA9IEludGVybmFsUHJvbWlzZUNvbnN0cnVjdG9yLmpzOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlFMzRFREJGNjFEQjVGRkMxMDBEQzg3QTUgLyogRnJhbWVUcmFjZXJzLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZyYW1lVHJhY2Vycy5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQlFMzUwNzA4OTFEQzQ5QkI2MDA4OUJDRDYgLyogRE9NSklUU2lnbmF0
dXJlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERPTUpJVFNpZ25hdHVyZS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzU0NjIyQTFCNjA2NUQxMDA1NDUzODYg
LyogQ29uc3RydWN0QWJpbGl0eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBD
b25zdHJ1Y3RBYmlsaXR5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzNTU1Qjg5
MURBRTAzQTIwMEYzNjkyMSAvKiBET01KSVRDYWxsRE9NR2V0dGVyUGF0Y2hwb2ludC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBET01KSVRDYWxsRE9NR2V0dGVyUGF0Y2hwb2lu
dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzU1RjM1MDFCN0RDODUzMDBDNTBE
QzUgLyogTW9kdWxlTG9hZGVyUHJvdG90eXBlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IE1vZHVsZUxvYWRlclByb3RvdHlwZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CkBAIC03NDg1LDYgKzc0ODcsNyBAQAogCQkJCUUzN0FEODNBMURBNDkyODAwMEYz
RDQxMiAvKiBET01KSVRQYXRjaHBvaW50UGFyYW1zLmggKi8sCiAJCQkJRTM3QUQ4M0IxREE0OTI4
MDAwRjNENDEyIC8qIERPTUpJVFJlZy5oICovLAogCQkJCUUzQ0IxRTI0MURBNzU0MEEwMEZBMUU1
NiAvKiBET01KSVRTbG93UGF0aENhbGxzLmggKi8sCisJCQkJRTM1MDcwODkxREM0OUJCNjAwODlC
Q0Q2IC8qIERPTUpJVFNpZ25hdHVyZS5oICovLAogCQkJCUUzRkZDODUyMURBRDdEMTAwMERFQTUz
RSAvKiBET01KSVRWYWx1ZS5oICovLAogCQkJKTsKIAkJCXBhdGggPSBkb21qaXQ7CkBAIC04NDA0
LDYgKzg0MDcsNyBAQAogCQkJCTQzQUIyNkM2MUMxQTUzNTkwMEQ4MkFFNiAvKiBCM01hdGhFeHRy
YXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUFEMkZDQkYzMURCNThEQUQwMEIzRTczNiAvKiBXZWJB
c3NlbWJseUluc3RhbmNlUHJvdG90eXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzE4QzQyOTBF
MTZGNUNEMDBCMzQ0NjAgLyogSlNTdHJpbmdSZWZDRi5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTM1
MDcwOEExREM0OUJCRjAwODlCQ0Q2IC8qIERPTUpJVFNpZ25hdHVyZS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMUEyOEQ0QTgxNzdCNzFDODAwMDdGQTNDIC8qIEpTU3RyaW5nUmVmUHJpdmF0ZS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMEY5MTlEMEQxNTdFRTBBMjAwNEE0RTdEIC8qIEpTU3ltYm9sVGFi
bGVPYmplY3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTcwRUNBNjA2MUFGREJFQTIwMDQ0OTczOSAv
KiBKU1RlbXBsYXRlUmVnaXN0cnlLZXkuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxWYXJpYW50LmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQ2FsbFZhcmlhbnQuaAppbmRleCBkZTY4ODAwNmVmMWE5OWU5ZGQ2
MGIwMWE2ZTAxNzdjYjk4ZWM3YjUxLi5jNDBjNjE3YzM3OTgwZDA4YmFjZDYxZGE1ZjZiOWU2NzFh
YjI0N2JhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbFZh
cmlhbnQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbFZhcmlhbnQu
aApAQCAtMjYsNiArMjYsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJGdW5jdGlvbkV4
ZWN1dGFibGUuaCIKKyNpbmNsdWRlICJOYXRpdmVFeGVjdXRhYmxlLmgiCiAjaW5jbHVkZSAiSlND
ZWxsLmgiCiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgogCkBAIC0xMjAsNiArMTIxLDIwIEBAIGNs
YXNzIENhbGxWYXJpYW50IHsKICAgICAgICAgICAgIHJldHVybiBqc0R5bmFtaWNDYXN0PEZ1bmN0
aW9uRXhlY3V0YWJsZSo+KGV4ZWN1dGFibGUpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAg
ICB9CisKKyAgICBOYXRpdmVFeGVjdXRhYmxlKiBuYXRpdmVFeGVjdXRhYmxlKCkgY29uc3QKKyAg
ICB7CisgICAgICAgIGlmIChFeGVjdXRhYmxlQmFzZSogZXhlY3V0YWJsZSA9IHRoaXMtPmV4ZWN1
dGFibGUoKSkKKyAgICAgICAgICAgIHJldHVybiBqc0R5bmFtaWNDYXN0PE5hdGl2ZUV4ZWN1dGFi
bGUqPihleGVjdXRhYmxlKTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorCisgICAg
Y29uc3QgRE9NSklUOjpTaWduYXR1cmUqIHNpZ25hdHVyZUZvcihDb2RlU3BlY2lhbGl6YXRpb25L
aW5kIGtpbmQpIGNvbnN0CisgICAgeworICAgICAgICBpZiAoTmF0aXZlRXhlY3V0YWJsZSogbmF0
aXZlRXhlY3V0YWJsZSA9IHRoaXMtPm5hdGl2ZUV4ZWN1dGFibGUoKSkKKyAgICAgICAgICAgIHJl
dHVybiBuYXRpdmVFeGVjdXRhYmxlLT5zaWduYXR1cmVGb3Ioa2luZCk7CisgICAgICAgIHJldHVy
biBudWxscHRyOworICAgIH0KICAgICAKICAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mIG91dCkg
Y29uc3Q7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fi
c3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKaW5kZXggMWQxZjMwODlhZTkwZDQ1NWRhMGEx
M2VlMzBmYjkyMDJkYTgxNGI3OS4uMmU1NjM1NzljMGMxZWFkOGRlNDI4ZTNkYTBlZWExZDExMmM3
MDc2MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdElu
dGVycHJldGVySW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJz
dHJhY3RJbnRlcnByZXRlcklubGluZXMuaApAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgIkFy
cmF5Q29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJERkdBYnN0cmFjdEludGVycHJldGVyLmgiCiAj
aW5jbHVkZSAiRE9NSklUR2V0dGVyU2V0dGVyLmgiCisjaW5jbHVkZSAiRE9NSklUU2lnbmF0dXJl
LmgiCiAjaW5jbHVkZSAiR2V0QnlJZFN0YXR1cy5oIgogI2luY2x1ZGUgIkdldHRlclNldHRlci5o
IgogI2luY2x1ZGUgIkhhc2hNYXBJbXBsLmgiCkBAIC0yMzAxLDYgKzIzMDIsMTMgQEAgYm9vbCBB
YnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHModW5z
aWduZWQgY2xvYmJlckxpbWkKICAgICAgICAgZm9yTm9kZShub2RlKS5zZXRUeXBlKG1fZ3JhcGgs
IGNhbGxET01HZXR0ZXJEYXRhLT5kb21KSVQtPnJlc3VsdFR5cGUoKSk7CiAgICAgICAgIGJyZWFr
OwogICAgIH0KKyAgICBjYXNlIENhbGxET006IHsKKyAgICAgICAgY29uc3QgRE9NSklUOjpTaWdu
YXR1cmUqIHNpZ25hdHVyZSA9IG5vZGUtPnNpZ25hdHVyZSgpOworICAgICAgICBpZiAoc2lnbmF0
dXJlLT5lZmZlY3Qud3JpdGVzKQorICAgICAgICAgICAgY2xvYmJlcldvcmxkKG5vZGUtPm9yaWdp
bi5zZW1hbnRpYywgY2xvYmJlckxpbWl0KTsKKyAgICAgICAgZm9yTm9kZShub2RlKS5zZXRUeXBl
KG1fZ3JhcGgsIHNpZ25hdHVyZS0+cmVzdWx0KTsKKyAgICAgICAgYnJlYWs7CisgICAgfQogICAg
IGNhc2UgQ2hlY2tBcnJheTogewogICAgICAgICBpZiAobm9kZS0+YXJyYXlNb2RlKCkuYWxyZWFk
eUNoZWNrZWQobV9ncmFwaCwgbm9kZSwgZm9yTm9kZShub2RlLT5jaGlsZDEoKSkpKSB7CiAgICAg
ICAgICAgICBtX3N0YXRlLnNldEZvdW5kQ29uc3RhbnRzKHRydWUpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAppbmRleCAzNWRjMDc4NmE4OTM3
ODVmNzBmN2IzMmMwY2Y3YmNkZGU5YTdlZGQ5Li44YjljYTk3ZDdjYmFkMWMwMDRlNjNiNzRkM2Fl
ZjE1ZDM1MzA3MzUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5
dGVDb2RlUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVD
b2RlUGFyc2VyLmNwcApAQCAtMjEyLDYgKzIxMiw4IEBAIGNsYXNzIEJ5dGVDb2RlUGFyc2VyIHsK
ICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGVja3NGdW5jdG9yPgogICAgIGJvb2wgaGFuZGxlSW50
cmluc2ljQ2FsbChOb2RlKiBjYWxsZWUsIGludCByZXN1bHRPcGVyYW5kLCBJbnRyaW5zaWMsIGlu
dCByZWdpc3Rlck9mZnNldCwgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBTcGVjdWxh
dGVkVHlwZSBwcmVkaWN0aW9uLCBjb25zdCBDaGVja3NGdW5jdG9yJiBpbnNlcnRDaGVja3MpOwog
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoZWNrc0Z1bmN0b3I+CisgICAgYm9vbCBoYW5kbGVET01K
SVRDYWxsKE5vZGUqIGNhbGxlZSwgaW50IHJlc3VsdE9wZXJhbmQsIGNvbnN0IERPTUpJVDo6U2ln
bmF0dXJlKiwgaW50IHJlZ2lzdGVyT2Zmc2V0LCBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1Ro
aXMsIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24sIGNvbnN0IENoZWNrc0Z1bmN0b3ImIGluc2Vy
dENoZWNrcyk7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hlY2tzRnVuY3Rvcj4KICAgICBib29s
IGhhbmRsZUludHJpbnNpY0dldHRlcihpbnQgcmVzdWx0T3BlcmFuZCwgY29uc3QgR2V0QnlJZFZh
cmlhbnQmIGludHJpbnNpY1ZhcmlhbnQsIE5vZGUqIHRoaXNOb2RlLCBjb25zdCBDaGVja3NGdW5j
dG9yJiBpbnNlcnRDaGVja3MpOwogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoZWNrc0Z1bmN0b3I+
CiAgICAgYm9vbCBoYW5kbGVUeXBlZEFycmF5Q29uc3RydWN0b3IoaW50IHJlc3VsdE9wZXJhbmQs
IEludGVybmFsRnVuY3Rpb24qLCBpbnQgcmVnaXN0ZXJPZmZzZXQsIGludCBhcmd1bWVudENvdW50
SW5jbHVkaW5nVGhpcywgVHlwZWRBcnJheVR5cGUsIGNvbnN0IENoZWNrc0Z1bmN0b3ImIGluc2Vy
dENoZWNrcyk7CkBAIC0xNzI1LDYgKzE3MjcsMTcgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6YXR0
ZW1wdFRvSW5saW5lQ2FsbChOb2RlKiBjYWxsVGFyZ2V0Tm9kZSwgaW50IHJlc3VsdE9wZXJhbmQK
ICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKCFkaWRJbnNlcnRDaGVja3MpOwogICAgICAgICAg
ICAgLy8gV2UgbWlnaHQgc3RpbGwgdHJ5IHRvIGlubGluZSB0aGUgSW50cmluc2ljIGJlY2F1c2Ug
aXQgbWlnaHQgYmUgYSBidWlsdGluIEpTIGZ1bmN0aW9uLgogICAgICAgICB9CisKKyAgICAgICAg
aWYgKGNvbnN0IERPTUpJVDo6U2lnbmF0dXJlKiBzaWduYXR1cmUgPSBjYWxsZWUuc2lnbmF0dXJl
Rm9yKHNwZWNpYWxpemF0aW9uS2luZCkpIHsKKyAgICAgICAgICAgIGlmIChoYW5kbGVET01KSVRD
YWxsKGNhbGxUYXJnZXROb2RlLCByZXN1bHRPcGVyYW5kLCBzaWduYXR1cmUsIHJlZ2lzdGVyT2Zm
c2V0LCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgcHJlZGljdGlvbiwgaW5zZXJ0Q2hlY2tz
V2l0aEFjY291bnRpbmcpKSB7CisgICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoZGlkSW5z
ZXJ0Q2hlY2tzKTsKKyAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKFBoYW50b20sIGNhbGxUYXJn
ZXROb2RlKTsKKyAgICAgICAgICAgICAgICBlbWl0QXJndW1lbnRQaGFudG9tcyhyZWdpc3Rlck9m
ZnNldCwgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpOworICAgICAgICAgICAgICAgIGlubGlu
aW5nQmFsYW5jZS0tOworICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAg
fQorICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoIWRpZEluc2VydENoZWNrcyk7CisgICAgICAg
IH0KICAgICB9CiAgICAgCiAgICAgdW5zaWduZWQgbXlJbmxpbmluZ0Nvc3QgPSBpbmxpbmluZ0Nv
c3QoY2FsbGVlLCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgSW5saW5lQ2FsbEZyYW1lOjpj
YWxsTW9kZUZvcihraW5kKSk7CkBAIC0yNjAwLDYgKzI2MTMsMzYgQEAgYm9vbCBCeXRlQ29kZVBh
cnNlcjo6aGFuZGxlSW50cmluc2ljQ2FsbChOb2RlKiBjYWxsZWUsIGludCByZXN1bHRPcGVyYW5k
LCBJbnRyaW4KIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgQ2hlY2tzRnVuY3Rvcj4KK2Jvb2wgQnl0
ZUNvZGVQYXJzZXI6OmhhbmRsZURPTUpJVENhbGwoTm9kZSosIGludCByZXN1bHRPcGVyYW5kLCBj
b25zdCBET01KSVQ6OlNpZ25hdHVyZSogc2lnbmF0dXJlLCBpbnQgcmVnaXN0ZXJPZmZzZXQsIGlu
dCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbiwg
Y29uc3QgQ2hlY2tzRnVuY3RvciYgaW5zZXJ0Q2hlY2tzKQoreworICAgIGlmIChhcmd1bWVudENv
dW50SW5jbHVkaW5nVGhpcyAhPSBzdGF0aWNfY2FzdDxpbnQ+KDEgKyBzaWduYXR1cmUtPmFyZ3Vt
ZW50Q291bnQpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKG1faW5saW5lU3RhY2tU
b3AtPm1fZXhpdFByb2ZpbGUuaGFzRXhpdFNpdGUobV9jdXJyZW50SW5kZXgsIEJhZFR5cGUpKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpbnNlcnRDaGVja3MoKTsKKworICAgIGNvbnN0
IGludCBtYXhBcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyA9IDEgKyBKU0NfRE9NSklUX1NJR05B
VFVSRV9NQVhfQVJHVU1FTlRTOworICAgIHN0YXRpY19hc3NlcnQobWF4QXJndW1lbnRDb3VudElu
Y2x1ZGluZ1RoaXMgPD0gMywgIkRPTUpJVCBDYWxsRE9NIGN1cnJlbnRseSBvbmx5IHN1cHBvcnRz
IHVwIHRvIDIgKCsgdGhpcykgYXJndW1lbnRzLiIpOworICAgIEVkZ2UgZWRnZXNbbWF4QXJndW1l
bnRDb3VudEluY2x1ZGluZ1RoaXNdOworCisgICAgTm9kZSogdGhpc05vZGUgPSBnZXQodmlydHVh
bFJlZ2lzdGVyRm9yQXJndW1lbnQoMCwgcmVnaXN0ZXJPZmZzZXQpKTsKKyAgICBSZWY8RE9NSklU
OjpQYXRjaHBvaW50PiBjaGVja0RPTVBhdGNocG9pbnQgPSBzaWduYXR1cmUtPmNoZWNrRE9NKCk7
CisgICAgbV9ncmFwaC5tX2RvbUpJVFBhdGNocG9pbnRzLmFwcGVuZChjaGVja0RPTVBhdGNocG9p
bnQucHRyKCkpOworICAgIGFkZFRvR3JhcGgoQ2hlY2tET00sIE9wSW5mbyhjaGVja0RPTVBhdGNo
cG9pbnQucHRyKCkpLCBPcEluZm8oc2lnbmF0dXJlLT5jbGFzc0luZm8pLCB0aGlzTm9kZSk7Cisg
ICAgZWRnZXNbMF0gPSBFZGdlKHRoaXNOb2RlKTsKKworICAgIGZvciAoaW50IGkgPSAxOyBpIDwg
YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXM7ICsraSkKKyAgICAgICAgZWRnZXNbaV0gPSBFZGdl
KGdldCh2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudChpLCByZWdpc3Rlck9mZnNldCkpKTsKKyAg
ICBOb2RlKiBjYWxsRE9NID0gYWRkVG9HcmFwaChDYWxsRE9NLCBPcEluZm8oc2lnbmF0dXJlKSwg
T3BJbmZvKHByZWRpY3Rpb24pLCBlZGdlc1swXSwgZWRnZXNbMV0sIGVkZ2VzWzJdKTsKKyAgICBp
ZiAoIXNpZ25hdHVyZS0+ZWZmZWN0Lm11c3RHZW5lcmF0ZSgpKQorICAgICAgICBjYWxsRE9NLT5j
bGVhckZsYWdzKE5vZGVNdXN0R2VuZXJhdGUpOworICAgIHNldChWaXJ0dWFsUmVnaXN0ZXIocmVz
dWx0T3BlcmFuZCksIGNhbGxET00pOworICAgIHJldHVybiB0cnVlOworfQorCisKK3RlbXBsYXRl
PHR5cGVuYW1lIENoZWNrc0Z1bmN0b3I+CiBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbnRy
aW5zaWNHZXR0ZXIoaW50IHJlc3VsdE9wZXJhbmQsIGNvbnN0IEdldEJ5SWRWYXJpYW50JiB2YXJp
YW50LCBOb2RlKiB0aGlzTm9kZSwgY29uc3QgQ2hlY2tzRnVuY3RvciYgaW5zZXJ0Q2hlY2tzKQog
ewogICAgIHN3aXRjaCAodmFyaWFudC5pbnRyaW5zaWMoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0Nsb2JiZXJpemUuaAppbmRleCA1YTMyOTRkMDUxYzM3ODdmYzBjZTE4YjA5N2Uz
NDQ1OWQwNzlkNDJkLi40YWEyNjViOGNjYWIxYmRjZTRlMzEzMGExNmFmNDhiNmE1NDhlYTkyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaApAQCAtMzQsNiArMzQs
NyBAQAogI2luY2x1ZGUgIkRGR0xhenlOb2RlLmgiCiAjaW5jbHVkZSAiREZHUHVyZVZhbHVlLmgi
CiAjaW5jbHVkZSAiRE9NSklUQ2FsbERPTUdldHRlclBhdGNocG9pbnQuaCIKKyNpbmNsdWRlICJE
T01KSVRTaWduYXR1cmUuaCIKIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogCkBA
IC05NTIsMjAgKzk1MywzOCBAQCB2b2lkIGNsb2JiZXJpemUoR3JhcGgmIGdyYXBoLCBOb2RlKiBu
b2RlLCBjb25zdCBSZWFkRnVuY3RvciYgcmVhZCwgY29uc3QgV3JpdGVGdQogICAgICAgICAgICAg
ZWxzZQogICAgICAgICAgICAgICAgIHdyaXRlKEFic3RyYWN0SGVhcChET01TdGF0ZSwgZWZmZWN0
LndyaXRlcy5yYXdSZXByZXNlbnRhdGlvbigpKSk7CiAgICAgICAgIH0KLSAgICAgICAgaWYgKGVm
ZmVjdC5kZWYpIHsKLSAgICAgICAgICAgIERPTUpJVDo6SGVhcFJhbmdlIHJhbmdlID0gZWZmZWN0
LmRlZi52YWx1ZSgpOworICAgICAgICBpZiAoZWZmZWN0LmRlZiAhPSBET01KSVQ6OkhlYXBSYW5n
ZTo6dG9wKCkpIHsKKyAgICAgICAgICAgIERPTUpJVDo6SGVhcFJhbmdlIHJhbmdlID0gZWZmZWN0
LmRlZjsKICAgICAgICAgICAgIGlmIChyYW5nZSA9PSBET01KSVQ6OkhlYXBSYW5nZTo6bm9uZSgp
KQogICAgICAgICAgICAgICAgIGRlZihQdXJlVmFsdWUobm9kZSwgbm9kZS0+Y2FsbERPTUdldHRl
ckRhdGEoKS0+ZG9tSklUKSk7CiAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAv
LyBEZWYgd2l0aCBoZWFwIGxvY2F0aW9uLiBXZSBkbyBub3QgaW5jbHVkZSAiR2xvYmFsT2JqZWN0
IiBmb3IgdGhhdCBzaW5jZSB0aGlzIGluZm9ybWF0aW9uIGlzIGluY2x1ZGVkIGluIHRoZSBiYXNl
IG5vZGUuCi0gICAgICAgICAgICAgICAgLy8gRklYTUU6IFdoZW4gc3VwcG9ydGluZyB0aGUgb3Ro
ZXIgbm9kZXMgbGlrZSBnZXRFbGVtZW50QnlJZCgic3RyaW5nIiksIHdlIHNob3VsZCBpbmNsdWRl
IHRoZSBiYXNlIGFuZCB0aGUgaWQgc3RyaW5nLgotICAgICAgICAgICAgICAgIC8vIEN1cnJlbnRs
eSwgd2Ugb25seSBzZWUgdGhlIERPTUpJVCBnZXR0ZXIgaGVyZS4gU28ganVzdCBpbmNsdWRpbmcg
ImJhc2UiIGlzIG9rLgorICAgICAgICAgICAgICAgIC8vIFdlIG9ubHkgc2VlIHRoZSBET01KSVQg
Z2V0dGVyIGhlcmUuIFNvIGp1c3QgaW5jbHVkaW5nICJiYXNlIiBpcyBvay4KICAgICAgICAgICAg
ICAgICBkZWYoSGVhcExvY2F0aW9uKERPTVN0YXRlTG9jLCBBYnN0cmFjdEhlYXAoRE9NU3RhdGUs
IHJhbmdlLnJhd1JlcHJlc2VudGF0aW9uKCkpLCBub2RlLT5jaGlsZDEoKSksIExhenlOb2RlKG5v
ZGUpKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICByZXR1cm47CiAgICAgfQog
CisgICAgY2FzZSBDYWxsRE9NOiB7CisgICAgICAgIGNvbnN0IERPTUpJVDo6U2lnbmF0dXJlKiBz
aWduYXR1cmUgPSBub2RlLT5zaWduYXR1cmUoKTsKKyAgICAgICAgRE9NSklUOjpFZmZlY3QgZWZm
ZWN0ID0gc2lnbmF0dXJlLT5lZmZlY3Q7CisgICAgICAgIGlmIChlZmZlY3QucmVhZHMpIHsKKyAg
ICAgICAgICAgIGlmIChlZmZlY3QucmVhZHMgPT0gRE9NSklUOjpIZWFwUmFuZ2U6OnRvcCgpKQor
ICAgICAgICAgICAgICAgIHJlYWQoV29ybGQpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAg
ICAgICAgIHJlYWQoQWJzdHJhY3RIZWFwKERPTVN0YXRlLCBlZmZlY3QucmVhZHMucmF3UmVwcmVz
ZW50YXRpb24oKSkpOworICAgICAgICB9CisgICAgICAgIGlmIChlZmZlY3Qud3JpdGVzKSB7Cisg
ICAgICAgICAgICBpZiAoZWZmZWN0LndyaXRlcyA9PSBET01KSVQ6OkhlYXBSYW5nZTo6dG9wKCkp
CisgICAgICAgICAgICAgICAgd3JpdGUoSGVhcCk7CisgICAgICAgICAgICBlbHNlCisgICAgICAg
ICAgICAgICAgd3JpdGUoQWJzdHJhY3RIZWFwKERPTVN0YXRlLCBlZmZlY3Qud3JpdGVzLnJhd1Jl
cHJlc2VudGF0aW9uKCkpKTsKKyAgICAgICAgfQorICAgICAgICBBU1NFUlRfV0lUSF9NRVNTQUdF
KGVmZmVjdC5kZWYgPT0gRE9NSklUOjpIZWFwUmFuZ2U6OnRvcCgpLCAiQ3VycmVudGx5LCB3ZSBk
byBub3QgYWNjZXB0IGFueSBkZWYgZm9yIENhbGxET00uIik7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisKICAgICBjYXNlIEFycmF5aWZ5OgogICAgIGNhc2UgQXJyYXlpZnlUb1N0cnVjdHVyZToK
ICAgICAgICAgcmVhZChKU0NlbGxfc3RydWN0dXJlSUQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdEb2VzR0MuY3BwCmluZGV4IGNiNDhlNWMzZmUzMzEyMzJmZGUyMDQ1MTFiZjVjODY1OWNm
MzcwODEuLjdkNGRkZmIwYmNkZjNjYmJlMjY1MzkwNTQ0MDg4MmY5NWUyNmM3MjMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAKQEAgLTMwMCw2ICszMDAsNyBAQCBib29s
IGRvZXNHQyhHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUpCiAgICAgY2FzZSBDcmVhdGVSZXN0Ogog
ICAgIGNhc2UgVG9Mb3dlckNhc2U6CiAgICAgY2FzZSBDYWxsRE9NR2V0dGVyOgorICAgIGNhc2Ug
Q2FsbERPTToKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIAogICAgIGNhc2UgTXVsdGlQ
dXRCeU9mZnNldDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4
dXBQaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3Bw
CmluZGV4IDc4ZmUwZTlkZmU3N2VhZGU1ZWJmMmE4ODMyYzlmNjVkZDg5M2M4M2UuLmVjZDM2ODY4
ZGY3N2JjMjY4MTFiMDQxZDM2ZmU5MmI0MmMzYTNmZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcApAQCAtMTcxOSw2ICsxNzE5LDMyIEBAIGNsYXNzIEZp
eHVwUGhhc2UgOiBwdWJsaWMgUGhhc2UgewogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0K
IAorICAgICAgICBjYXNlIENhbGxET006IHsKKyAgICAgICAgICAgIGNvbnN0IERPTUpJVDo6U2ln
bmF0dXJlKiBzaWduYXR1cmUgPSBub2RlLT5zaWduYXR1cmUoKTsKKyAgICAgICAgICAgIGF1dG8g
Zml4dXAgPSBbJl0oRWRnZSYgZWRnZSwgaW50IGFyZ3VtZW50SW5kZXgpIHsKKyAgICAgICAgICAg
ICAgICBpZiAoIWVkZ2UpCisgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAg
ICAgICBzd2l0Y2ggKHNpZ25hdHVyZS0+YXJndW1lbnRzW2FyZ3VtZW50SW5kZXhdKSB7CisgICAg
ICAgICAgICAgICAgY2FzZSBTcGVjU3RyaW5nOgorICAgICAgICAgICAgICAgICAgICBmaXhFZGdl
PFN0cmluZ1VzZT4oZWRnZSk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg
ICAgICAgIGNhc2UgU3BlY0ludDMyT25seToKKyAgICAgICAgICAgICAgICAgICAgZml4RWRnZTxJ
bnQzMlVzZT4oZWRnZSk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg
ICAgIGNhc2UgU3BlY0Jvb2xlYW46CisgICAgICAgICAgICAgICAgICAgIGZpeEVkZ2U8Qm9vbGVh
blVzZT4oZWRnZSk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAg
IGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVE
KCk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIH07CisgICAgICAgICAgICBmaXhFZGdlPENlbGxVc2U+KG5vZGUtPmNoaWxkMSgpKTsg
Ly8gRE9NLgorICAgICAgICAgICAgZml4dXAobm9kZS0+Y2hpbGQyKCksIDApOworICAgICAgICAg
ICAgZml4dXAobm9kZS0+Y2hpbGQzKCksIDEpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IH0KKwogI2lmICFBU1NFUlRfRElTQUJMRUQKICAgICAgICAgLy8gSGF2ZSB0aGVzZSBuby1vcCBj
YXNlcyBoZXJlIHRvIGVuc3VyZSB0aGF0IG5vYm9keSBmb3JnZXRzIHRvIGFkZCBoYW5kbGVycyBm
b3IgbmV3IG9wY29kZXMuCiAgICAgICAgIGNhc2UgU2V0QXJndW1lbnQ6CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHTm9kZS5oCmluZGV4IGE2N2IyOTNjZTg3NDUyNzNiZDMzMzgxZjM4MzNhNTAzYjQy
YzYwNDcuLmY4NmFhMTU4MWVhYmM5NWE0NjIyNDkyN2IzZTg2MTIwYmEyMjg2OTQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCkBAIC02Miw2ICs2Miw3IEBAIG5hbWVzcGFjZSBET01K
SVQgewogY2xhc3MgR2V0dGVyU2V0dGVyOwogY2xhc3MgUGF0Y2hwb2ludDsKIGNsYXNzIENhbGxE
T01HZXR0ZXJQYXRjaHBvaW50OworY2xhc3MgU2lnbmF0dXJlOwogfQogCiBuYW1lc3BhY2UgUHJv
ZmlsZXIgewpAQCAtMTQ2Myw2ICsxNDY0LDcgQEAgc3RydWN0IE5vZGUgewogICAgICAgICBjYXNl
IFRvTnVtYmVyOgogICAgICAgICBjYXNlIExvYWRGcm9tSlNNYXBCdWNrZXQ6CiAgICAgICAgIGNh
c2UgQ2FsbERPTUdldHRlcjoKKyAgICAgICAgY2FzZSBDYWxsRE9NOgogICAgICAgICAgICAgcmV0
dXJuIHRydWU7CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CkBA
IC0yMzY2LDYgKzIzNjgsMTYgQEAgc3RydWN0IE5vZGUgewogICAgICAgICByZXR1cm4gbV9vcElu
Zm8yLmFzPGNvbnN0IENsYXNzSW5mbyo+KCk7CiAgICAgfQogCisgICAgYm9vbCBoYXNTaWduYXR1
cmUoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG9wKCkgPT0gQ2FsbERPTTsKKyAgICB9
CisKKyAgICBjb25zdCBET01KSVQ6OlNpZ25hdHVyZSogc2lnbmF0dXJlKCkKKyAgICB7CisgICAg
ICAgIHJldHVybiBtX29wSW5mbzIuYXM8Y29uc3QgRE9NSklUOjpTaWduYXR1cmUqPigpOworICAg
IH0KKwogICAgIE5vZGUqIHJlcGxhY2VtZW50KCkgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVy
biBtX21pc2MucmVwbGFjZW1lbnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR05vZGVUeXBlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBl
LmgKaW5kZXggY2QyNGE0NDMwYTk2YjRjNzg5OWMxMWMzYTNkOTk4ZjBiOTcyODMyZi4uYmVmNWY0
ZDA5MTk4YjViZmVkMTk3NjcwNWE5YzYwNGZkZDkwMmU3YSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHTm9kZVR5cGUuaApAQCAtNDA2LDYgKzQwNiw3IEBAIG5hbWVzcGFjZSBKU0MgeyBu
YW1lc3BhY2UgREZHIHsKICAgICAvKiBOb2RlcyBmb3IgRE9NIEpJVCAqL1wKICAgICBtYWNybyhD
aGVja0RPTSwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKENhbGxET01HZXR0ZXIsIE5v
ZGVSZXN1bHRKUyB8IE5vZGVNdXN0R2VuZXJhdGUpIFwKKyAgICBtYWNybyhDYWxsRE9NLCBOb2Rl
UmVzdWx0SlMgfCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAKIC8vIFRoaXMgZW51bSBnZW5lcmF0ZXMg
YSBtb25vdG9uaWNhbGx5IGluY3JlYXNpbmcgaWQgZm9yIGFsbCBOb2RlIHR5cGVzLAogLy8gYW5k
IGlzIHVzZWQgYnkgdGhlIHN1YnNlcXVlbnQgZW51bSB0byBmaWxsIG91dCB0aGUgaWQgKGFzIGFj
Y2Vzc2VkIHZpYSB0aGUgTm9kZUlkTWFzaykuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCmluZGV4IDM5
N2U5OTkzYjkyZTk2Y2YyZTlkNTFlM2JkMjg5ZjMwZjgzMzlkNzIuLjA5M2M5Mzc5NjhhMDdmMjRk
NDdhZmJmNjhmYmZjOTNlNWQ5MGYzZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCkBAIC03MTAs
NyArNzEwLDggQEAgY2xhc3MgUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UgOiBwdWJsaWMgUGhh
c2UgewogICAgICAgICBjYXNlIEdldEZyb21Bcmd1bWVudHM6CiAgICAgICAgIGNhc2UgTG9hZEZy
b21KU01hcEJ1Y2tldDoKICAgICAgICAgY2FzZSBUb051bWJlcjoKLSAgICAgICAgY2FzZSBDYWxs
RE9NR2V0dGVyOiB7CisgICAgICAgIGNhc2UgQ2FsbERPTUdldHRlcjoKKyAgICAgICAgY2FzZSBD
YWxsRE9NOiB7CiAgICAgICAgICAgICBzZXRQcmVkaWN0aW9uKG1fY3VycmVudE5vZGUtPmdldEhl
YXBQcmVkaWN0aW9uKCkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgKaW5kZXggMGEyZWNkODAwNmIy
ZDYzMjg4MDA4MTQyZjU4ZGVjMWU0Yzc1N2YyYy4uNWJjODBhOTNlZDVhNDU0NDY4NzJmNmIyNTc3
MTFlN2RkZmE5NjJmYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
YWZlVG9FeGVjdXRlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9F
eGVjdXRlLmgKQEAgLTIyMCw2ICsyMjAsNyBAQCBib29sIHNhZmVUb0V4ZWN1dGUoQWJzdHJhY3RT
dGF0ZVR5cGUmIHN0YXRlLCBHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUpCiAgICAgY2FzZSBHZXRF
eGVjdXRhYmxlOgogICAgIGNhc2UgR2V0QnV0dGVyZmx5OgogICAgIGNhc2UgQ2FsbERPTUdldHRl
cjoKKyAgICBjYXNlIENhbGxET006CiAgICAgY2FzZSBDaGVja0RPTToKICAgICBjYXNlIENoZWNr
QXJyYXk6CiAgICAgY2FzZSBBcnJheWlmeToKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKaW5kZXggN2I1N2IxODkyOTM3MDYxMGI3M2EwMGNlNWM1
MDlkMzFjZmI1NTYxZi4uMGJhZDg0OTdhY2U3ODA0ZDc1YTM5ZjI5NjMxYjlhODg1ODJhZjQ0NCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAK
QEAgLTcyNTksNiArNzI1OSw4MSBAQCBzdGF0aWMgdm9pZCBhbGxvY2F0ZVRlbXBvcmFyeVJlZ2lz
dGVyc0ZvclBhdGNocG9pbnQoU3BlY3VsYXRpdmVKSVQqIGppdCwgVmVjdG9yPAogICAgIH0KIH0K
IAordm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUNhbGxET00oTm9kZSogbm9kZSkKK3sKKyAg
ICBjb25zdCBET01KSVQ6OlNpZ25hdHVyZSogc2lnbmF0dXJlID0gbm9kZS0+c2lnbmF0dXJlKCk7
CisKKyAgICBWZWN0b3I8VmFyaWFudDxTcGVjdWxhdGVDZWxsT3BlcmFuZCwgU3BlY3VsYXRlSW50
MzJPcGVyYW5kLCBTcGVjdWxhdGVCb29sZWFuT3BlcmFuZD4+IG9wZXJhbmRzOworICAgIFZlY3Rv
cjxHUFJSZWc+IHJlZ3M7CisKKyAgICBhdXRvIGFwcGVuZENlbGwgPSBbJl0oRWRnZSYgZWRnZSkg
eworICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBvcGVyYW5kKHRoaXMsIGVkZ2UpOworICAg
ICAgICByZWdzLmFwcGVuZChvcGVyYW5kLmdwcigpKTsKKyAgICAgICAgb3BlcmFuZHMuYXBwZW5k
KFdURk1vdmUob3BlcmFuZCkpOworICAgIH07CisKKyAgICBhdXRvIGFwcGVuZFN0cmluZyA9IFsm
XShFZGdlJiBlZGdlKSB7CisgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIG9wZXJhbmQodGhp
cywgZWRnZSk7CisgICAgICAgIEdQUlJlZyBncHIgPSBvcGVyYW5kLmdwcigpOworICAgICAgICBy
ZWdzLmFwcGVuZChncHIpOworICAgICAgICBzcGVjdWxhdGVTdHJpbmcoZWRnZSwgZ3ByKTsKKyAg
ICAgICAgb3BlcmFuZHMuYXBwZW5kKFdURk1vdmUob3BlcmFuZCkpOworICAgIH07CisKKyAgICBh
dXRvIGFwcGVuZEludDMyID0gWyZdKEVkZ2UmIGVkZ2UpIHsKKyAgICAgICAgU3BlY3VsYXRlSW50
MzJPcGVyYW5kIG9wZXJhbmQodGhpcywgZWRnZSk7CisgICAgICAgIHJlZ3MuYXBwZW5kKG9wZXJh
bmQuZ3ByKCkpOworICAgICAgICBvcGVyYW5kcy5hcHBlbmQoV1RGTW92ZShvcGVyYW5kKSk7Cisg
ICAgfTsKKworICAgIGF1dG8gYXBwZW5kQm9vbGVhbiA9IFsmXShFZGdlJiBlZGdlKSB7CisgICAg
ICAgIFNwZWN1bGF0ZUJvb2xlYW5PcGVyYW5kIG9wZXJhbmQodGhpcywgZWRnZSk7CisgICAgICAg
IHJlZ3MuYXBwZW5kKG9wZXJhbmQuZ3ByKCkpOworICAgICAgICBvcGVyYW5kcy5hcHBlbmQoV1RG
TW92ZShvcGVyYW5kKSk7CisgICAgfTsKKworICAgIHVuc2lnbmVkIGkgPSAwOworICAgIERGR19O
T0RFX0RPX1RPX0NISUxEUkVOKG1faml0LmdyYXBoKCksIG5vZGUsIFsmXShOb2RlKiwgRWRnZSBl
ZGdlKSB7CisgICAgICAgIGlmIChpID09IDApCisgICAgICAgICAgICBhcHBlbmRDZWxsKGVkZ2Up
OworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHN3aXRjaCAoc2lnbmF0dXJlLT5hcmd1bWVu
dHNbaSAtIDFdKSB7CisgICAgICAgICAgICBjYXNlIFNwZWNTdHJpbmc6CisgICAgICAgICAgICAg
ICAgYXBwZW5kU3RyaW5nKGVkZ2UpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg
ICAgY2FzZSBTcGVjSW50MzJPbmx5OgorICAgICAgICAgICAgICAgIGFwcGVuZEludDMyKGVkZ2Up
OworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBTcGVjQm9vbGVhbjoK
KyAgICAgICAgICAgICAgICBhcHBlbmRCb29sZWFuKGVkZ2UpOworICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgICsraTsKKyAgICB9KTsKKwor
ICAgIEpTVmFsdWVSZWdzVGVtcG9yYXJ5IHJlc3VsdCh0aGlzKTsKKyAgICBKU1ZhbHVlUmVncyBy
ZXN1bHRSZWdzID0gcmVzdWx0LnJlZ3MoKTsKKworICAgIGludCBhcmd1bWVudENvdW50SW5jbHVk
aW5nVGhpcyA9IHNpZ25hdHVyZS0+YXJndW1lbnRDb3VudCArIDE7CisgICAgc3dpdGNoIChhcmd1
bWVudENvdW50SW5jbHVkaW5nVGhpcykgeworICAgIGNhc2UgMToKKyAgICAgICAgY2FsbE9wZXJh
dGlvbihyZWludGVycHJldF9jYXN0PEpfSklUT3BlcmF0aW9uX0VQPihzaWduYXR1cmUtPnVuc2Fm
ZUZ1bmN0aW9uKSwgZXh0cmFjdFJlc3VsdChyZXN1bHRSZWdzKSwgcmVnc1swXSk7CisgICAgICAg
IGJyZWFrOworICAgIGNhc2UgMjoKKyAgICAgICAgY2FsbE9wZXJhdGlvbihyZWludGVycHJldF9j
YXN0PEpfSklUT3BlcmF0aW9uX0VQUD4oc2lnbmF0dXJlLT51bnNhZmVGdW5jdGlvbiksIGV4dHJh
Y3RSZXN1bHQocmVzdWx0UmVncyksIHJlZ3NbMF0sIHJlZ3NbMV0pOworICAgICAgICBicmVhazsK
KyAgICBjYXNlIDM6CisgICAgICAgIGNhbGxPcGVyYXRpb24ocmVpbnRlcnByZXRfY2FzdDxKX0pJ
VE9wZXJhdGlvbl9FUFBQPihzaWduYXR1cmUtPnVuc2FmZUZ1bmN0aW9uKSwgZXh0cmFjdFJlc3Vs
dChyZXN1bHRSZWdzKSwgcmVnc1swXSwgcmVnc1sxXSwgcmVnc1syXSk7CisgICAgICAgIGJyZWFr
OworICAgIGRlZmF1bHQ6CisgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Cisg
ICAgICAgIGJyZWFrOworICAgIH0KKworICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0UmVncywgbm9k
ZSk7Cit9CisKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVDYWxsRE9NR2V0dGVyKE5vZGUq
IG5vZGUpCiB7CiAgICAgRE9NSklUOjpDYWxsRE9NR2V0dGVyUGF0Y2hwb2ludCogcGF0Y2hwb2lu
dCA9IG5vZGUtPmNhbGxET01HZXR0ZXJEYXRhKCktPnBhdGNocG9pbnQ7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKaW5kZXggNTY1MzhhMjk0NmU0MDMw
MGYwNTBmMzM1NTJhNzNjY2E3NTljZWFjYS4uNzk2YThhMzVlNmQzMDU3ZmFhYmVhMDc5YTAyMDNk
NWQ0OTlhOTViMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVj
dWxhdGl2ZUpJVC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRp
dmVKSVQuaApAQCAtMTY1MSw2ICsxNjUxLDExIEBAIGNsYXNzIFNwZWN1bGF0aXZlSklUIHsKICAg
ICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIpOwogICAg
ICAgICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CiAgICAg
fQorICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9KSVRPcGVyYXRpb25fRVBQ
UCBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJnMiwgR1BS
UmVnIGFyZzMpCisgICAgeworICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3Rh
dGUoYXJnMSwgYXJnMiwgYXJnMyk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0
KG9wZXJhdGlvbiwgcmVzdWx0KTsKKyAgICB9CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9w
ZXJhdGlvbihKX0pJVE9wZXJhdGlvbl9FR1Agb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBHUFJS
ZWcgYXJnMSwgR1BSUmVnIGFyZzIpCiAgICAgewogICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50
c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMik7CkBAIC0xOTE1LDYgKzE5MjAsMTYgQEAgY2xhc3Mg
U3BlY3VsYXRpdmVKSVQgewogICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3Rh
dGUoYXJnMSwgVHJ1c3RlZEltbVB0cihwb2ludGVyKSk7CiAgICAgICAgIHJldHVybiBhcHBlbmRD
YWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0LnBheWxvYWRHUFIoKSwgcmVzdWx0LnRhZ0dQ
UigpKTsKICAgICB9CisgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihKX0pJVE9w
ZXJhdGlvbl9FUFAgb3BlcmF0aW9uLCBKU1ZhbHVlUmVncyByZXN1bHQsIEdQUlJlZyBhcmcxLCBH
UFJSZWcgYXJnMikKKyAgICB7CisgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNT
dGF0ZShhcmcxLCBhcmcyKTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3Bl
cmF0aW9uLCByZXN1bHQucGF5bG9hZEdQUigpLCByZXN1bHQudGFnR1BSKCkpOworICAgIH0KKyAg
ICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpfSklUT3BlcmF0aW9uX0VQUFAgb3Bl
cmF0aW9uLCBKU1ZhbHVlUmVncyByZXN1bHQsIEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJnMiwgR1BS
UmVnIGFyZzMpCisgICAgeworICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3Rh
dGUoYXJnMSwgYXJnMiwgYXJnMyk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0
KG9wZXJhdGlvbiwgcmVzdWx0LnBheWxvYWRHUFIoKSwgcmVzdWx0LnRhZ0dQUigpKTsKKyAgICB9
CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihKX0pJVE9wZXJhdGlvbl9FR1Ag
b3BlcmF0aW9uLCBKU1ZhbHVlUmVncyByZXN1bHQsIEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJnMikK
ICAgICB7CiAgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBh
cmcyKTsKQEAgLTI1NjIsNiArMjU3Nyw3IEBAIGNsYXNzIFNwZWN1bGF0aXZlSklUIHsKICAgICB2
b2lkIGNvbXBpbGVSZWFsbG9jYXRlUHJvcGVydHlTdG9yYWdlKE5vZGUqKTsKICAgICB2b2lkIGNv
bXBpbGVHZXRCdXR0ZXJmbHkoTm9kZSopOwogICAgIHZvaWQgY29tcGlsZUNhbGxET01HZXR0ZXIo
Tm9kZSopOworICAgIHZvaWQgY29tcGlsZUNhbGxET00oTm9kZSopOwogICAgIHZvaWQgY29tcGls
ZUNoZWNrRE9NKE5vZGUqKTsKICAgICAKICNpZiBVU0UoSlNWQUxVRTMyXzY0KQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKaW5k
ZXggOGY3MmIxZThkYjYxZDdmMzNlMzAzZDNiNzNkNWIzZjUyYmVjZThmOC4uYWI1OGQ3YzMwYjEy
M2FkNTczODZlMDBiYzQ1NzZjN2M4ZmQ1MGRhYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCkBAIC01NTYxLDYgKzU1NjEs
MTAgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBi
cmVhazsKICAgICB9CiAKKyAgICBjYXNlIENhbGxET006CisgICAgICAgIGNvbXBpbGVDYWxsRE9N
KG5vZGUpOworICAgICAgICBicmVhazsKKwogICAgIGNhc2UgQ2FsbERPTUdldHRlcjoKICAgICAg
ICAgY29tcGlsZUNhbGxET01HZXR0ZXIobm9kZSk7CiAgICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKaW5kZXggZjg5
YzFlNjk3NTY5YjMyOGMxYjJkZDQyNWRlMzVlNGY0MmEzNzQ4Ni4uMTEyNjkwODIxZDM4MzI1YjE0
ZGEwMzkxOWI2NzIxY2ZlODgzY2RkMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCkBAIC01NjkzLDYgKzU2OTMsMTAgQEAgdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBjb21waWxlTWF0ZXJp
YWxpemVOZXdPYmplY3Qobm9kZSk7CiAgICAgICAgIGJyZWFrOwogCisgICAgY2FzZSBDYWxsRE9N
OgorICAgICAgICBjb21waWxlQ2FsbERPTShub2RlKTsKKyAgICAgICAgYnJlYWs7CisKICAgICBj
YXNlIENhbGxET01HZXR0ZXI6CiAgICAgICAgIGNvbXBpbGVDYWxsRE9NR2V0dGVyKG5vZGUpOwog
ICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kb21qaXQv
RE9NSklURWZmZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZG9taml0L0RPTUpJVEVmZmVj
dC5oCmluZGV4IDU5ZTMwMGMzOTI2MTA0N2ExMTIyOTBkYTg2YjRmYTE2OGQ5YzYzMDYuLjYxY2Yz
YjcxYWJiY2UzMWU0NTEzNmFmMjg2YzZjN2FmMjM2NjhhNmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kb21qaXQvRE9NSklURWZmZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RvbWppdC9ET01KSVRFZmZlY3QuaApAQCAtMjgsNTYgKzI4LDYyIEBACiAjaW5jbHVk
ZSAiRE9NSklUSGVhcFJhbmdlLmgiCiAjaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CiAKLSNpZiBF
TkFCTEUoSklUKQotCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERPTUpJVCB7CiAKLXN0cnVj
dCBFZmZlY3QgeworY2xhc3MgRWZmZWN0IHsKK3B1YmxpYzoKICAgICBIZWFwUmFuZ2UgcmVhZHMg
eyBIZWFwUmFuZ2U6OnRvcCgpIH07CiAgICAgSGVhcFJhbmdlIHdyaXRlcyB7IEhlYXBSYW5nZTo6
dG9wKCkgfTsKLSAgICBPcHRpb25hbDxIZWFwUmFuZ2U+IGRlZjsKKyAgICBIZWFwUmFuZ2UgZGVm
IHsgSGVhcFJhbmdlOjp0b3AoKSB9OworCisgICAgY29uc3RleHByIEVmZmVjdCgpID0gZGVmYXVs
dDsKKyAgICBjb25zdGV4cHIgRWZmZWN0KEhlYXBSYW5nZSByZWFkcywgSGVhcFJhbmdlIHdyaXRl
cykKKyAgICAgICAgOiByZWFkcyhyZWFkcykKKyAgICAgICAgLCB3cml0ZXMod3JpdGVzKQorICAg
IHsKKyAgICB9CisKKyAgICBjb25zdGV4cHIgRWZmZWN0KEhlYXBSYW5nZSByZWFkcywgSGVhcFJh
bmdlIHdyaXRlcywgSGVhcFJhbmdlIGRlZikKKyAgICAgICAgOiByZWFkcyhyZWFkcykKKyAgICAg
ICAgLCB3cml0ZXMod3JpdGVzKQorICAgICAgICAsIGRlZihkZWYpCisgICAgeworICAgIH0KIAot
ICAgIHN0YXRpYyBFZmZlY3QgZm9yUmVhZFdyaXRlKEhlYXBSYW5nZSByZWFkUmFuZ2UsIEhlYXBS
YW5nZSB3cml0ZVJhbmdlKQorICAgIGNvbnN0ZXhwciBzdGF0aWMgRWZmZWN0IGZvcldyaXRlKEhl
YXBSYW5nZSB3cml0ZVJhbmdlKQogICAgIHsKLSAgICAgICAgRWZmZWN0IGVmZmVjdDsKLSAgICAg
ICAgZWZmZWN0LnJlYWRzID0gcmVhZFJhbmdlOwotICAgICAgICBlZmZlY3Qud3JpdGVzID0gd3Jp
dGVSYW5nZTsKLSAgICAgICAgcmV0dXJuIGVmZmVjdDsKKyAgICAgICAgcmV0dXJuIEVmZmVjdChI
ZWFwUmFuZ2U6Om5vbmUoKSwgd3JpdGVSYW5nZSk7CiAgICAgfQogCi0gICAgc3RhdGljIEVmZmVj
dCBmb3JQdXJlKCkKKyAgICBjb25zdGV4cHIgc3RhdGljIEVmZmVjdCBmb3JSZWFkKEhlYXBSYW5n
ZSByZWFkUmFuZ2UpCiAgICAgewotICAgICAgICBFZmZlY3QgZWZmZWN0OwotICAgICAgICBlZmZl
Y3QucmVhZHMgPSBIZWFwUmFuZ2U6Om5vbmUoKTsKLSAgICAgICAgZWZmZWN0LndyaXRlcyA9IEhl
YXBSYW5nZTo6bm9uZSgpOwotICAgICAgICBlZmZlY3QuZGVmID0gSGVhcFJhbmdlOjpub25lKCk7
Ci0gICAgICAgIHJldHVybiBlZmZlY3Q7CisgICAgICAgIHJldHVybiBFZmZlY3QocmVhZFJhbmdl
LCBIZWFwUmFuZ2U6Om5vbmUoKSk7CiAgICAgfQogCi0gICAgc3RhdGljIEVmZmVjdCBmb3JEZWYo
SGVhcFJhbmdlIGRlZikKKyAgICBjb25zdGV4cHIgc3RhdGljIEVmZmVjdCBmb3JSZWFkV3JpdGUo
SGVhcFJhbmdlIHJlYWRSYW5nZSwgSGVhcFJhbmdlIHdyaXRlUmFuZ2UpCiAgICAgewotICAgICAg
ICBFZmZlY3QgZWZmZWN0OwotICAgICAgICBlZmZlY3QucmVhZHMgPSBkZWY7Ci0gICAgICAgIGVm
ZmVjdC53cml0ZXMgPSBIZWFwUmFuZ2U6Om5vbmUoKTsKLSAgICAgICAgZWZmZWN0LmRlZiA9IGRl
ZjsKLSAgICAgICAgcmV0dXJuIGVmZmVjdDsKKyAgICAgICAgcmV0dXJuIEVmZmVjdChyZWFkUmFu
Z2UsIHdyaXRlUmFuZ2UpOwogICAgIH0KIAotICAgIHN0YXRpYyBFZmZlY3QgZm9yRGVmKEhlYXBS
YW5nZSBkZWYsIEhlYXBSYW5nZSByZWFkUmFuZ2UsIEhlYXBSYW5nZSB3cml0ZVJhbmdlKQorICAg
IGNvbnN0ZXhwciBzdGF0aWMgRWZmZWN0IGZvclB1cmUoKQogICAgIHsKLSAgICAgICAgRWZmZWN0
IGVmZmVjdDsKLSAgICAgICAgZWZmZWN0LnJlYWRzID0gcmVhZFJhbmdlOwotICAgICAgICBlZmZl
Y3Qud3JpdGVzID0gd3JpdGVSYW5nZTsKLSAgICAgICAgZWZmZWN0LmRlZiA9IGRlZjsKLSAgICAg
ICAgcmV0dXJuIGVmZmVjdDsKKyAgICAgICAgcmV0dXJuIEVmZmVjdChIZWFwUmFuZ2U6Om5vbmUo
KSwgSGVhcFJhbmdlOjpub25lKCksIEhlYXBSYW5nZTo6bm9uZSgpKTsKICAgICB9CiAKLSAgICBi
b29sIG11c3RHZW5lcmF0ZSgpIGNvbnN0CisgICAgY29uc3RleHByIHN0YXRpYyBFZmZlY3QgZm9y
RGVmKEhlYXBSYW5nZSBkZWYpCisgICAgeworICAgICAgICByZXR1cm4gRWZmZWN0KGRlZiwgSGVh
cFJhbmdlOjpub25lKCksIGRlZik7CisgICAgfQorCisgICAgY29uc3RleHByIHN0YXRpYyBFZmZl
Y3QgZm9yRGVmKEhlYXBSYW5nZSBkZWYsIEhlYXBSYW5nZSByZWFkUmFuZ2UsIEhlYXBSYW5nZSB3
cml0ZVJhbmdlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIEVmZmVjdChyZWFkUmFuZ2UsIHdyaXRl
UmFuZ2UsIGRlZik7CisgICAgfQorCisgICAgY29uc3RleHByIGJvb2wgbXVzdEdlbmVyYXRlKCkg
Y29uc3QKICAgICB7CiAgICAgICAgIHJldHVybiAhIXdyaXRlczsKICAgICB9CiB9OwogCiB9IH0K
LQotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZG9taml0L0RPTUpJ
VEhlYXBSYW5nZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RvbWppdC9ET01KSVRIZWFwUmFu
Z2UuaAppbmRleCBmYjkzOTk5ZmY3ODVjMDZmN2RhY2Q2ZGE5YzhkNmUwYTk1Njc4Njc0Li5jMmYw
YjMwNTY0ZWMyNjA4OTM1N2FjYmU3ZTYxZWE2ZGZlZmRmMTRiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZG9taml0L0RPTUpJVEhlYXBSYW5nZS5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kb21qaXQvRE9NSklUSGVhcFJhbmdlLmgKQEAgLTI4LDggKzI4LDYgQEAKICNp
bmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi9QcmludFN0cmVhbS5oPgog
Ci0jaWYgRU5BQkxFKEpJVCkKLQogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBET01KSVQgewog
CiBjbGFzcyBIZWFwUmFuZ2UgewpAQCAtODMsMTEgKzgxLDE2IEBAIGNsYXNzIEhlYXBSYW5nZSB7
CiAgICAgICAgIHJldHVybiBtX2JlZ2luICE9IG1fZW5kOwogICAgIH0KIAotICAgIGJvb2wgb3Bl
cmF0b3I9PShjb25zdCBIZWFwUmFuZ2UmIG90aGVyKSBjb25zdAorICAgIGNvbnN0ZXhwciBib29s
IG9wZXJhdG9yPT0oY29uc3QgSGVhcFJhbmdlJiBvdGhlcikgY29uc3QKICAgICB7CiAgICAgICAg
IHJldHVybiBtX2JlZ2luID09IG90aGVyLm1fYmVnaW4gJiYgbV9lbmQgPT0gb3RoZXIubV9lbmQ7
CiAgICAgfQogCisgICAgY29uc3RleHByIGJvb2wgb3BlcmF0b3IhPShjb25zdCBIZWFwUmFuZ2Um
IG90aGVyKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuICFvcGVyYXRvcj09KG90aGVyKTsK
KyAgICB9CisKICAgICBzdGF0aWMgY29uc3RleHByIEhlYXBSYW5nZSB0b3AoKSB7IHJldHVybiBm
cm9tQ29uc3RhbnQ8MCwgVUlOVDE2X01BWD4oKTsgfQogICAgIHN0YXRpYyBjb25zdGV4cHIgSGVh
cFJhbmdlIG5vbmUoKSB7IHJldHVybiBmcm9tQ29uc3RhbnQ8VUlOVDE2X01BWCwgVUlOVDE2X01B
WD4oKTsgfSAvLyBFbXB0eSByYW5nZS4KIApAQCAtMTI3LDUgKzEzMCwzIEBAIGNsYXNzIEhlYXBS
YW5nZSB7CiB9OwogCiB9IH0KLQotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZG9taml0L0RPTUpJVFNpZ25hdHVyZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rv
bWppdC9ET01KSVRTaWduYXR1cmUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zN2Q2MGVkN2YzZWFmMDYzZDliMGM5
ZDg5ZWQ2MzQ4N2M0Y2JiNWEzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RvbWppdC9ET01KSVRTaWduYXR1cmUuaApAQCAtMCwwICsxLDcwIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNs
dWRlICJDbGFzc0luZm8uaCIKKyNpbmNsdWRlICJET01KSVRFZmZlY3QuaCIKKyNpbmNsdWRlICJT
cGVjdWxhdGVkVHlwZS5oIgorCituYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERPTUpJVCB7CisK
Ky8vIEN1cnJlbnRseSwgd2Ugb25seSBzdXBwb3J0IGZ1bmN0aW9ucyB3aGljaCBhcmd1bWVudHMg
dXAgdG8gMi4KKy8vIEV2ZW50dWFsbHksIHdlIHNob3VsZCBleHRlbmQgdGhpcy4gQnV0IHBvc3Np
Ymx5LCAyIG9yIDMgY2FuIGNvdmVyIHR5cGljYWwgdXNlIGNhc2VzLgorI2RlZmluZSBKU0NfRE9N
SklUX1NJR05BVFVSRV9NQVhfQVJHVU1FTlRTIDIKKworY2xhc3MgUGF0Y2hwb2ludDsKKwordHlw
ZWRlZiBSZWY8UGF0Y2hwb2ludD4gQ2hlY2tET01HZW5lcmF0b3JGdW5jdGlvbih2b2lkKTsKKwor
Y2xhc3MgU2lnbmF0dXJlIHsKK3B1YmxpYzoKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBBcmd1
bWVudHM+CisgICAgY29uc3RleHByIFNpZ25hdHVyZSh1aW50cHRyX3QgdW5zYWZlRnVuY3Rpb24s
IENoZWNrRE9NR2VuZXJhdG9yRnVuY3Rpb24qIGNoZWNrRE9NR2VuZXJhdG9yRnVuY3Rpb24sIGNv
bnN0IENsYXNzSW5mbyogY2xhc3NJbmZvLCBFZmZlY3QgZWZmZWN0LCBTcGVjdWxhdGVkVHlwZSBy
ZXN1bHQsIEFyZ3VtZW50cy4uLiBhcmd1bWVudHMpCisgICAgICAgIDogdW5zYWZlRnVuY3Rpb24o
dW5zYWZlRnVuY3Rpb24pCisgICAgICAgICwgY2hlY2tET01HZW5lcmF0b3JGdW5jdGlvbihjaGVj
a0RPTUdlbmVyYXRvckZ1bmN0aW9uKQorICAgICAgICAsIGNsYXNzSW5mbyhjbGFzc0luZm8pCisg
ICAgICAgICwgZWZmZWN0KGVmZmVjdCkKKyAgICAgICAgLCByZXN1bHQocmVzdWx0KQorICAgICAg
ICAsIGFyZ3VtZW50cyB7c3RhdGljX2Nhc3Q8U3BlY3VsYXRlZFR5cGU+KGFyZ3VtZW50cykuLi59
CisgICAgICAgICwgYXJndW1lbnRDb3VudChzaXplb2YuLi4oYXJndW1lbnRzKSkKKyAgICB7Cisg
ICAgfQorCisgICAgUmVmPFBhdGNocG9pbnQ+IGNoZWNrRE9NKCkgY29uc3QKKyAgICB7CisgICAg
ICAgIHJldHVybiBjaGVja0RPTUdlbmVyYXRvckZ1bmN0aW9uKCk7CisgICAgfQorCisgICAgdWlu
dHB0cl90IHVuc2FmZUZ1bmN0aW9uOworICAgIENoZWNrRE9NR2VuZXJhdG9yRnVuY3Rpb24qIGNo
ZWNrRE9NR2VuZXJhdG9yRnVuY3Rpb247CisgICAgY29uc3QgQ2xhc3NJbmZvKiBjb25zdCBjbGFz
c0luZm87CisgICAgY29uc3QgRWZmZWN0IGVmZmVjdDsKKyAgICBjb25zdCBTcGVjdWxhdGVkVHlw
ZSByZXN1bHQ7CisgICAgY29uc3QgU3BlY3VsYXRlZFR5cGUgYXJndW1lbnRzW0pTQ19ET01KSVRf
U0lHTkFUVVJFX01BWF9BUkdVTUVOVFNdOworICAgIGNvbnN0IHVuc2lnbmVkIGFyZ3VtZW50Q291
bnQ7Cit9OworCit9IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
T3BlcmF0aW9ucy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmgK
aW5kZXggOGY2YzY5NzFhNmJlZTlmMWZiNmZjMzY4ZGU1YTJjYjg0NzY0NGE2OC4uMjBiNzFmNDUy
Y2U0NGI1Y2M1NmNjNzFjMmQ3NmIxN2I1ODhmZTY2NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRPcGVyYXRpb25zLmgKQEAgLTE1OCw2ICsxNTgsNyBAQCB0eXBlZGVmIEVuY29kZWRK
U1ZhbHVlIChKSVRfT1BFUkFUSU9OICpKX0pJVE9wZXJhdGlvbl9FSlApKEV4ZWNTdGF0ZSosIEVu
Y29kZWRKUwogdHlwZWRlZiBFbmNvZGVkSlNWYWx1ZSAoSklUX09QRVJBVElPTiAqSl9KSVRPcGVy
YXRpb25fRUdQKShFeGVjU3RhdGUqLCBKU0dsb2JhbE9iamVjdCosIHZvaWQqKTsKIHR5cGVkZWYg
RW5jb2RlZEpTVmFsdWUgKEpJVF9PUEVSQVRJT04gKkpfSklUT3BlcmF0aW9uX0VQKShFeGVjU3Rh
dGUqLCB2b2lkKik7CiB0eXBlZGVmIEVuY29kZWRKU1ZhbHVlIChKSVRfT1BFUkFUSU9OICpKX0pJ
VE9wZXJhdGlvbl9FUFApKEV4ZWNTdGF0ZSosIHZvaWQqLCB2b2lkKik7Cit0eXBlZGVmIEVuY29k
ZWRKU1ZhbHVlIChKSVRfT1BFUkFUSU9OICpKX0pJVE9wZXJhdGlvbl9FUFBQKShFeGVjU3RhdGUq
LCB2b2lkKiwgdm9pZCosIHZvaWQqKTsKIHR5cGVkZWYgRW5jb2RlZEpTVmFsdWUgKEpJVF9PUEVS
QVRJT04gKkpfSklUT3BlcmF0aW9uX0VQUykoRXhlY1N0YXRlKiwgdm9pZCosIHNpemVfdCk7CiB0
eXBlZGVmIEVuY29kZWRKU1ZhbHVlIChKSVRfT1BFUkFUSU9OICpKX0pJVE9wZXJhdGlvbl9FUGMp
KEV4ZWNTdGF0ZSosIEluc3RydWN0aW9uKik7CiB0eXBlZGVmIEVuY29kZWRKU1ZhbHVlIChKSVRf
T1BFUkFUSU9OICpKX0pJVE9wZXJhdGlvbl9FSnNjQykoRXhlY1N0YXRlKiwgSlNTY29wZSosIEpT
Q2VsbCopOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRUaHVua3Mu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRUaHVua3MuY3BwCmluZGV4IGJmMGE3
ZjkwOTE5YTViNmQwYmVlZDkyOGFiZGFmNzEwYzlkYzlkMGIuLjQwYzEyY2VjOTRlMDFhMDg0MDRm
N2I2ZDk2NzIxZjEwNTFmNDgzMTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUVGh1bmtzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFRodW5r
cy5jcHAKQEAgLTkwLDEwICs5MCwxMCBAQCB2b2lkIEpJVFRodW5rczo6ZmluYWxpemUoSGFuZGxl
PFVua25vd24+IGhhbmRsZSwgdm9pZCopCiAKIE5hdGl2ZUV4ZWN1dGFibGUqIEpJVFRodW5rczo6
aG9zdEZ1bmN0aW9uU3R1YihWTSogdm0sIE5hdGl2ZUZ1bmN0aW9uIGZ1bmN0aW9uLCBOYXRpdmVG
dW5jdGlvbiBjb25zdHJ1Y3RvciwgY29uc3QgU3RyaW5nJiBuYW1lKQogewotICAgIHJldHVybiBo
b3N0RnVuY3Rpb25TdHViKHZtLCBmdW5jdGlvbiwgY29uc3RydWN0b3IsIG51bGxwdHIsIE5vSW50
cmluc2ljLCBuYW1lKTsKKyAgICByZXR1cm4gaG9zdEZ1bmN0aW9uU3R1Yih2bSwgZnVuY3Rpb24s
IGNvbnN0cnVjdG9yLCBudWxscHRyLCBOb0ludHJpbnNpYywgbnVsbHB0ciwgbmFtZSk7CiB9CiAK
LU5hdGl2ZUV4ZWN1dGFibGUqIEpJVFRodW5rczo6aG9zdEZ1bmN0aW9uU3R1YihWTSogdm0sIE5h
dGl2ZUZ1bmN0aW9uIGZ1bmN0aW9uLCBOYXRpdmVGdW5jdGlvbiBjb25zdHJ1Y3RvciwgVGh1bmtH
ZW5lcmF0b3IgZ2VuZXJhdG9yLCBJbnRyaW5zaWMgaW50cmluc2ljLCBjb25zdCBTdHJpbmcmIG5h
bWUpCitOYXRpdmVFeGVjdXRhYmxlKiBKSVRUaHVua3M6Omhvc3RGdW5jdGlvblN0dWIoVk0qIHZt
LCBOYXRpdmVGdW5jdGlvbiBmdW5jdGlvbiwgTmF0aXZlRnVuY3Rpb24gY29uc3RydWN0b3IsIFRo
dW5rR2VuZXJhdG9yIGdlbmVyYXRvciwgSW50cmluc2ljIGludHJpbnNpYywgY29uc3QgRE9NSklU
OjpTaWduYXR1cmUqIHNpZ25hdHVyZSwgY29uc3QgU3RyaW5nJiBuYW1lKQogewogICAgIEFTU0VS
VCghaXNDb21waWxhdGlvblRocmVhZCgpKTsgICAgCiAgICAgQVNTRVJUKHZtLT5jYW5Vc2VKSVQo
KSk7CkBAIC0xMTAsMTQgKzExMCwxNCBAQCBOYXRpdmVFeGVjdXRhYmxlKiBKSVRUaHVua3M6Omhv
c3RGdW5jdGlvblN0dWIoVk0qIHZtLCBOYXRpdmVGdW5jdGlvbiBmdW5jdGlvbiwgTgogICAgIAog
ICAgIFJlZlB0cjxKSVRDb2RlPiBmb3JDb25zdHJ1Y3QgPSBhZG9wdFJlZihuZXcgTmF0aXZlSklU
Q29kZShNYWNyb0Fzc2VtYmxlckNvZGVSZWY6OmNyZWF0ZVNlbGZNYW5hZ2VkQ29kZVJlZihjdGlO
YXRpdmVDb25zdHJ1Y3Qodm0pKSwgSklUQ29kZTo6SG9zdENhbGxUaHVuaykpOwogICAgIAotICAg
IE5hdGl2ZUV4ZWN1dGFibGUqIG5hdGl2ZUV4ZWN1dGFibGUgPSBOYXRpdmVFeGVjdXRhYmxlOjpj
cmVhdGUoKnZtLCBmb3JDYWxsLCBmdW5jdGlvbiwgZm9yQ29uc3RydWN0LCBjb25zdHJ1Y3Rvciwg
aW50cmluc2ljLCBuYW1lKTsKKyAgICBOYXRpdmVFeGVjdXRhYmxlKiBuYXRpdmVFeGVjdXRhYmxl
ID0gTmF0aXZlRXhlY3V0YWJsZTo6Y3JlYXRlKCp2bSwgZm9yQ2FsbCwgZnVuY3Rpb24sIGZvckNv
bnN0cnVjdCwgY29uc3RydWN0b3IsIGludHJpbnNpYywgc2lnbmF0dXJlLCBuYW1lKTsKICAgICB3
ZWFrQWRkKCptX2hvc3RGdW5jdGlvblN0dWJNYXAsIHN0ZDo6bWFrZV90dXBsZShmdW5jdGlvbiwg
Y29uc3RydWN0b3IsIG5hbWUpLCBXZWFrPE5hdGl2ZUV4ZWN1dGFibGU+KG5hdGl2ZUV4ZWN1dGFi
bGUsIHRoaXMpKTsKICAgICByZXR1cm4gbmF0aXZlRXhlY3V0YWJsZTsKIH0KIAogTmF0aXZlRXhl
Y3V0YWJsZSogSklUVGh1bmtzOjpob3N0RnVuY3Rpb25TdHViKFZNKiB2bSwgTmF0aXZlRnVuY3Rp
b24gZnVuY3Rpb24sIFRodW5rR2VuZXJhdG9yIGdlbmVyYXRvciwgSW50cmluc2ljIGludHJpbnNp
YywgY29uc3QgU3RyaW5nJiBuYW1lKQogewotICAgIHJldHVybiBob3N0RnVuY3Rpb25TdHViKHZt
LCBmdW5jdGlvbiwgY2FsbEhvc3RGdW5jdGlvbkFzQ29uc3RydWN0b3IsIGdlbmVyYXRvciwgaW50
cmluc2ljLCBuYW1lKTsKKyAgICByZXR1cm4gaG9zdEZ1bmN0aW9uU3R1Yih2bSwgZnVuY3Rpb24s
IGNhbGxIb3N0RnVuY3Rpb25Bc0NvbnN0cnVjdG9yLCBnZW5lcmF0b3IsIGludHJpbnNpYywgbnVs
bHB0ciwgbmFtZSk7CiB9CiAKIHZvaWQgSklUVGh1bmtzOjpjbGVhckhvc3RGdW5jdGlvblN0dWJz
KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUVGh1bmtzLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFRodW5rcy5oCmluZGV4IDNmOGZlODAzZjk4NzEw
ZjY5MjM1MjdiYzhmNjU1MGY0ZWRkMWM3YWUuLmFkZGNmMjMwYzM0NWQ0MjcxYjYzN2YwOGI5NGM0
MTZhM2VkMTgyYTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUVGh1
bmtzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRUaHVua3MuaApAQCAtMzks
NiArMzksOSBAQAogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KIAogbmFtZXNwYWNl
IEpTQyB7CituYW1lc3BhY2UgRE9NSklUIHsKK2NsYXNzIFNpZ25hdHVyZTsKK30KIAogY2xhc3Mg
Vk07CiBjbGFzcyBOYXRpdmVFeGVjdXRhYmxlOwpAQCAtNTcsNyArNjAsNyBAQCBjbGFzcyBKSVRU
aHVua3MgZmluYWwgOiBwcml2YXRlIFdlYWtIYW5kbGVPd25lciB7CiAgICAgTWFjcm9Bc3NlbWJs
ZXJDb2RlUmVmIGN0aVN0dWIoVk0qLCBUaHVua0dlbmVyYXRvcik7CiAKICAgICBOYXRpdmVFeGVj
dXRhYmxlKiBob3N0RnVuY3Rpb25TdHViKFZNKiwgTmF0aXZlRnVuY3Rpb24sIE5hdGl2ZUZ1bmN0
aW9uIGNvbnN0cnVjdG9yLCBjb25zdCBTdHJpbmcmIG5hbWUpOwotICAgIE5hdGl2ZUV4ZWN1dGFi
bGUqIGhvc3RGdW5jdGlvblN0dWIoVk0qLCBOYXRpdmVGdW5jdGlvbiwgTmF0aXZlRnVuY3Rpb24g
Y29uc3RydWN0b3IsIFRodW5rR2VuZXJhdG9yLCBJbnRyaW5zaWMsIGNvbnN0IFN0cmluZyYgbmFt
ZSk7CisgICAgTmF0aXZlRXhlY3V0YWJsZSogaG9zdEZ1bmN0aW9uU3R1YihWTSosIE5hdGl2ZUZ1
bmN0aW9uLCBOYXRpdmVGdW5jdGlvbiBjb25zdHJ1Y3RvciwgVGh1bmtHZW5lcmF0b3IsIEludHJp
bnNpYywgY29uc3QgRE9NSklUOjpTaWduYXR1cmUqLCBjb25zdCBTdHJpbmcmIG5hbWUpOwogICAg
IE5hdGl2ZUV4ZWN1dGFibGUqIGhvc3RGdW5jdGlvblN0dWIoVk0qLCBOYXRpdmVGdW5jdGlvbiwg
VGh1bmtHZW5lcmF0b3IsIEludHJpbnNpYywgY29uc3QgU3RyaW5nJiBuYW1lKTsKIAogICAgIHZv
aWQgY2xlYXJIb3N0RnVuY3Rpb25TdHVicygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNCb3VuZEZ1bmN0aW9uLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTQm91bmRGdW5jdGlvbi5jcHAKaW5kZXggMjZmOTlkNjUzYWExNDRiMjQwNGRk
Nzk1OTQzMjkzZGU5NmI3MzRjNS4uYzRjZTQzZTdkNTYwYjg3MzYzYzQ4ZDk1MGEwOWFkNzlkMDUy
NDk3YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCb3VuZEZ1
bmN0aW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0JvdW5kRnVu
Y3Rpb24uY3BwCkBAIC0xNjgsNyArMTY4LDcgQEAgSlNCb3VuZEZ1bmN0aW9uKiBKU0JvdW5kRnVu
Y3Rpb246OmNyZWF0ZShWTSYgdm0sIEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QKICAg
ICBOYXRpdmVFeGVjdXRhYmxlKiBleGVjdXRhYmxlID0gdm0uZ2V0SG9zdEZ1bmN0aW9uKAogICAg
ICAgICBzbG93Q2FzZSA/IGJvdW5kRnVuY3Rpb25DYWxsIDogYm91bmRUaGlzTm9BcmdzRnVuY3Rp
b25DYWxsLAogICAgICAgICBzbG93Q2FzZSA/IE5vSW50cmluc2ljIDogQm91bmRUaGlzTm9Bcmdz
RnVuY3Rpb25DYWxsSW50cmluc2ljLAotICAgICAgICBjYW5Db25zdHJ1Y3QgPyAoc2xvd0Nhc2Ug
PyBib3VuZEZ1bmN0aW9uQ29uc3RydWN0IDogYm91bmRUaGlzTm9BcmdzRnVuY3Rpb25Db25zdHJ1
Y3QpIDogY2FsbEhvc3RGdW5jdGlvbkFzQ29uc3RydWN0b3IsCisgICAgICAgIGNhbkNvbnN0cnVj
dCA/IChzbG93Q2FzZSA/IGJvdW5kRnVuY3Rpb25Db25zdHJ1Y3QgOiBib3VuZFRoaXNOb0FyZ3NG
dW5jdGlvbkNvbnN0cnVjdCkgOiBjYWxsSG9zdEZ1bmN0aW9uQXNDb25zdHJ1Y3RvciwgbnVsbHB0
ciwKICAgICAgICAgbmFtZSk7CiAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBnZXRCb3VuZEZ1
bmN0aW9uU3RydWN0dXJlKHZtLCBleGVjLCBnbG9iYWxPYmplY3QsIHRhcmdldEZ1bmN0aW9uKTsK
ICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBudWxscHRyKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNDZWxsLmgKaW5kZXggYzQwZjNlMjE5ODQxZmI0Njg5NjM1Mjg0YjA0MjI0
N2FmZDUyM2MzNi4uNGVmYmY5MDc3OGNjNTcxYmJkYjgyODcxYTUxZmE0NGY4NTZhZTk4YiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmgKQEAgLTU2LDE3ICs1NiwxNyBAQCB0
ZW1wbGF0ZTx0eXBlbmFtZSBUPiB2b2lkKiBhbGxvY2F0ZUNlbGwoSGVhcCYsIHNpemVfdCk7CiB0
ZW1wbGF0ZTx0eXBlbmFtZSBUPiB2b2lkKiBhbGxvY2F0ZUNlbGwoSGVhcCYsIEdDRGVmZXJyYWxD
b250ZXh0Kik7CiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiB2b2lkKiBhbGxvY2F0ZUNlbGwoSGVhcCYs
IEdDRGVmZXJyYWxDb250ZXh0Kiwgc2l6ZV90KTsKIAotI2RlZmluZSBERUNMQVJFX0VYUE9SVF9J
TkZPICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIHBy
b3RlY3RlZDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgXAotICAgICAgICBzdGF0aWMgSlNfRVhQT1JUREFUQSBjb25zdCA6OkpTQzo6Q2xh
c3NJbmZvIHNfaW5mbzsgICAgICAgICAgICAgXAotICAgIHB1YmxpYzogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBz
dGF0aWMgY29uc3QgOjpKU0M6OkNsYXNzSW5mbyogaW5mbygpIHsgcmV0dXJuICZzX2luZm87IH0K
LQotI2RlZmluZSBERUNMQVJFX0lORk8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgXAotICAgIHByb3RlY3RlZDogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBzdGF0aWMgY29u
c3QgOjpKU0M6OkNsYXNzSW5mbyBzX2luZm87ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAot
ICAgIHB1YmxpYzogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgXAotICAgICAgICBzdGF0aWMgY29uc3QgOjpKU0M6OkNsYXNzSW5mbyog
aW5mbygpIHsgcmV0dXJuICZzX2luZm87IH0KKyNkZWZpbmUgREVDTEFSRV9FWFBPUlRfSU5GTyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIHBy
b3RlY3RlZDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBcCisgICAgICAgIHN0YXRpYyBKU19FWFBPUlREQVRBIGNvbnN0IDo6SlND
OjpDbGFzc0luZm8gc19pbmZvOyAgICAgICAgICAgICAgICAgIFwKKyAgICBwdWJsaWM6ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgXAorICAgICAgICBzdGF0aWMgY29uc3RleHByIGNvbnN0IDo6SlNDOjpDbGFzc0luZm8qIGlu
Zm8oKSB7IHJldHVybiAmc19pbmZvOyB9CisKKyNkZWZpbmUgREVDTEFSRV9JTkZPICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIHBy
b3RlY3RlZDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBcCisgICAgICAgIHN0YXRpYyBjb25zdCA6OkpTQzo6Q2xhc3NJbmZvIHNf
aW5mbzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBwdWJsaWM6ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgXAorICAgICAgICBzdGF0aWMgY29uc3RleHByIGNvbnN0IDo6SlNDOjpDbGFzc0luZm8qIGlu
Zm8oKSB7IHJldHVybiAmc19pbmZvOyB9CiAKIGNsYXNzIEpTQ2VsbCA6IHB1YmxpYyBIZWFwQ2Vs
bCB7CiAgICAgZnJpZW5kIGNsYXNzIEpTVmFsdWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTRnVuY3Rpb24uY3BwCmluZGV4IDg1ODRiYzI5N2FmNzIzZjU4Mjk4MTU2ZTJlMmIw
YTg4YWU3MThmYjQuLmEzMTg0MmI2NTkwOTNlZWQ0ODMyZjBjMjI1NDdmZmI0NDljNDRjZDkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uY3BwCkBAIC04NCw5
ICs4NCw5IEBAIEpTRnVuY3Rpb24qIEpTRnVuY3Rpb246OmNyZWF0ZShWTSYgdm0sIFdlYkFzc2Vt
Ymx5RXhlY3V0YWJsZSogZXhlY3V0YWJsZSwgSlNTY29wCiB9CiAjZW5kaWYKIAotSlNGdW5jdGlv
biogSlNGdW5jdGlvbjo6Y3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgaW50IGxlbmd0aCwgY29uc3QgU3RyaW5nJiBuYW1lLCBOYXRpdmVGdW5jdGlvbiBuYXRpdmVG
dW5jdGlvbiwgSW50cmluc2ljIGludHJpbnNpYywgTmF0aXZlRnVuY3Rpb24gbmF0aXZlQ29uc3Ry
dWN0b3IpCitKU0Z1bmN0aW9uKiBKU0Z1bmN0aW9uOjpjcmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBpbnQgbGVuZ3RoLCBjb25zdCBTdHJpbmcmIG5hbWUsIE5hdGl2
ZUZ1bmN0aW9uIG5hdGl2ZUZ1bmN0aW9uLCBJbnRyaW5zaWMgaW50cmluc2ljLCBOYXRpdmVGdW5j
dGlvbiBuYXRpdmVDb25zdHJ1Y3RvciwgY29uc3QgRE9NSklUOjpTaWduYXR1cmUqIHNpZ25hdHVy
ZSkKIHsKLSAgICBOYXRpdmVFeGVjdXRhYmxlKiBleGVjdXRhYmxlID0gdm0uZ2V0SG9zdEZ1bmN0
aW9uKG5hdGl2ZUZ1bmN0aW9uLCBpbnRyaW5zaWMsIG5hdGl2ZUNvbnN0cnVjdG9yLCBuYW1lKTsK
KyAgICBOYXRpdmVFeGVjdXRhYmxlKiBleGVjdXRhYmxlID0gdm0uZ2V0SG9zdEZ1bmN0aW9uKG5h
dGl2ZUZ1bmN0aW9uLCBpbnRyaW5zaWMsIG5hdGl2ZUNvbnN0cnVjdG9yLCBzaWduYXR1cmUsIG5h
bWUpOwogICAgIEpTRnVuY3Rpb24qIGZ1bmN0aW9uID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNl
bGw8SlNGdW5jdGlvbj4odm0uaGVhcCkpIEpTRnVuY3Rpb24odm0sIGdsb2JhbE9iamVjdCwgZ2xv
YmFsT2JqZWN0LT5mdW5jdGlvblN0cnVjdHVyZSgpKTsKICAgICAvLyBDYW4ndCBkbyB0aGlzIGR1
cmluZyBpbml0aWFsaXphdGlvbiBiZWNhdXNlIGdldEhvc3RGdW5jdGlvbiBtaWdodCBkbyBhIEdD
IGFsbG9jYXRpb24uCiAgICAgZnVuY3Rpb24tPmZpbmlzaENyZWF0aW9uKHZtLCBleGVjdXRhYmxl
LCBsZW5ndGgsIG5hbWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNGdW5jdGlvbi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlv
bi5oCmluZGV4IDhkZjAzYTE0YTY3ZGFlOTMwNGMwZDU1NDk0Zjk1YTg3N2Y5NzgxZTYuLjQzMDIz
ZmRiMjcxODhjODk0YmIyNWNjZWYzMDBhZDk3OGJjZDk4NDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmgKQEAgLTQ2LDYgKzQ2LDExIEBAIGNsYXNzIFNwZWN1
bGF0aXZlSklUOwogY2xhc3MgSklUQ29tcGlsZXI7CiB9CiAKK25hbWVzcGFjZSBET01KSVQgewor
Y2xhc3MgU2lnbmF0dXJlOworfQorCisKIEpTX0VYUE9SVF9QUklWQVRFIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgY2FsbEhvc3RGdW5jdGlvbkFzQ29uc3RydWN0b3IoRXhlY1N0YXRlKik7
CiAKIEpTX0VYUE9SVF9QUklWQVRFIFN0cmluZyBnZXRDYWxjdWxhdGVkRGlzcGxheU5hbWUoVk0m
LCBKU09iamVjdCopOwpAQCAtNjcsNyArNzIsNyBAQCBjbGFzcyBKU0Z1bmN0aW9uIDogcHVibGlj
IEpTQ2FsbGVlIHsKICAgICAgICAgcmV0dXJuIHNpemVvZihKU0Z1bmN0aW9uKTsKICAgICB9CiAK
LSAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgSlNGdW5jdGlvbiogY3JlYXRlKFZNJiwgSlNH
bG9iYWxPYmplY3QqLCBpbnQgbGVuZ3RoLCBjb25zdCBTdHJpbmcmIG5hbWUsIE5hdGl2ZUZ1bmN0
aW9uLCBJbnRyaW5zaWMgPSBOb0ludHJpbnNpYywgTmF0aXZlRnVuY3Rpb24gbmF0aXZlQ29uc3Ry
dWN0b3IgPSBjYWxsSG9zdEZ1bmN0aW9uQXNDb25zdHJ1Y3Rvcik7CisgICAgSlNfRVhQT1JUX1BS
SVZBVEUgc3RhdGljIEpTRnVuY3Rpb24qIGNyZWF0ZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgaW50
IGxlbmd0aCwgY29uc3QgU3RyaW5nJiBuYW1lLCBOYXRpdmVGdW5jdGlvbiwgSW50cmluc2ljID0g
Tm9JbnRyaW5zaWMsIE5hdGl2ZUZ1bmN0aW9uIG5hdGl2ZUNvbnN0cnVjdG9yID0gY2FsbEhvc3RG
dW5jdGlvbkFzQ29uc3RydWN0b3IsIGNvbnN0IERPTUpJVDo6U2lnbmF0dXJlKiBzaWduYXR1cmUg
PSBudWxscHRyKTsKICAgICAKICAgICBzdGF0aWMgSlNGdW5jdGlvbiogY3JlYXRlV2l0aEludmFs
aWRhdGVkUmVhbGxvY2F0aW9uV2F0Y2hwb2ludChWTSYsIEZ1bmN0aW9uRXhlY3V0YWJsZSosIEpT
U2NvcGUqKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNO
YXRpdmVTdGRGdW5jdGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU05h
dGl2ZVN0ZEZ1bmN0aW9uLmNwcAppbmRleCA2ZGQ4NDlmMmVhZmJlYmRkNzA3ZWU1NzM4MDA4MmRl
NTQ4OTMyMGExLi5jMTI2NWIxZjA2YTkwYTA3NDQxZDdhYzVjNjA4ODMwYTFlZmE0ZjAyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU05hdGl2ZVN0ZEZ1bmN0aW9u
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU05hdGl2ZVN0ZEZ1bmN0
aW9uLmNwcApAQCAtNjYsNyArNjYsNyBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBydW5TdGRGdW5jdGlvbihFeGVjU3RhdGUqIHN0YXRlKQogCiBKU05hdGl2ZVN0ZEZ1bmN0
aW9uKiBKU05hdGl2ZVN0ZEZ1bmN0aW9uOjpjcmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBpbnQgbGVuZ3RoLCBjb25zdCBTdHJpbmcmIG5hbWUsIE5hdGl2ZVN0ZEZ1
bmN0aW9uJiYgbmF0aXZlU3RkRnVuY3Rpb24sIEludHJpbnNpYyBpbnRyaW5zaWMsIE5hdGl2ZUZ1
bmN0aW9uIG5hdGl2ZUNvbnN0cnVjdG9yKQogewotICAgIE5hdGl2ZUV4ZWN1dGFibGUqIGV4ZWN1
dGFibGUgPSB2bS5nZXRIb3N0RnVuY3Rpb24ocnVuU3RkRnVuY3Rpb24sIGludHJpbnNpYywgbmF0
aXZlQ29uc3RydWN0b3IsIG5hbWUpOworICAgIE5hdGl2ZUV4ZWN1dGFibGUqIGV4ZWN1dGFibGUg
PSB2bS5nZXRIb3N0RnVuY3Rpb24ocnVuU3RkRnVuY3Rpb24sIGludHJpbnNpYywgbmF0aXZlQ29u
c3RydWN0b3IsIG51bGxwdHIsIG5hbWUpOwogICAgIE5hdGl2ZVN0ZEZ1bmN0aW9uQ2VsbCogZnVu
Y3Rpb25DZWxsID0gTmF0aXZlU3RkRnVuY3Rpb25DZWxsOjpjcmVhdGUodm0sIFdURk1vdmUobmF0
aXZlU3RkRnVuY3Rpb24pKTsKICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGdsb2JhbE9iamVj
dC0+bmF0aXZlU3RkRnVuY3Rpb25TdHJ1Y3R1cmUoKTsKICAgICBKU05hdGl2ZVN0ZEZ1bmN0aW9u
KiBmdW5jdGlvbiA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTTmF0aXZlU3RkRnVuY3Rp
b24+KHZtLmhlYXApKSBKU05hdGl2ZVN0ZEZ1bmN0aW9uKHZtLCBnbG9iYWxPYmplY3QsIHN0cnVj
dHVyZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Mb29rdXAu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0xvb2t1cC5oCmluZGV4IGUyZDE3OTUz
ODhlNzY1MmJkOGYxYjRiNmRhY2JiMmNiY2U5Y2Q0NGYuLjVkZWYxMmE5ZTdiOWUyNGM5MGRjYTA0
OTZlNTIyZDBkNjMwOGJhOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0xvb2t1cC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0xvb2t1cC5o
CkBAIC0yNCw2ICsyNCw3IEBACiAjaW5jbHVkZSAiQ2FsbEZyYW1lLmgiCiAjaW5jbHVkZSAiQ3Vz
dG9tR2V0dGVyU2V0dGVyLmgiCiAjaW5jbHVkZSAiRE9NSklUR2V0dGVyU2V0dGVyLmgiCisjaW5j
bHVkZSAiRE9NSklUU2lnbmF0dXJlLmgiCiAjaW5jbHVkZSAiSWRlbnRpZmllci5oIgogI2luY2x1
ZGUgIklkZW50aWZpZXJJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSW50cmluc2ljLmgiCkBAIC03NSwx
MiArNzYsMTkgQEAgc3RydWN0IEhhc2hUYWJsZVZhbHVlIHsKICAgICBJbnRyaW5zaWMgaW50cmlu
c2ljKCkgY29uc3QgeyBBU1NFUlQobV9hdHRyaWJ1dGVzICYgRnVuY3Rpb24pOyByZXR1cm4gbV9p
bnRyaW5zaWM7IH0KICAgICBCdWlsdGluR2VuZXJhdG9yIGJ1aWx0aW5HZW5lcmF0b3IoKSBjb25z
dCB7IEFTU0VSVChtX2F0dHJpYnV0ZXMgJiBCdWlsdGluKTsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nh
c3Q8QnVpbHRpbkdlbmVyYXRvcj4obV92YWx1ZXMudmFsdWUxKTsgfQogICAgIE5hdGl2ZUZ1bmN0
aW9uIGZ1bmN0aW9uKCkgY29uc3QgeyBBU1NFUlQobV9hdHRyaWJ1dGVzICYgRnVuY3Rpb24pOyBy
ZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxOYXRpdmVGdW5jdGlvbj4obV92YWx1ZXMudmFsdWUxKTsg
fQotICAgIHVuc2lnbmVkIGNoYXIgZnVuY3Rpb25MZW5ndGgoKSBjb25zdCB7IEFTU0VSVChtX2F0
dHJpYnV0ZXMgJiBGdW5jdGlvbik7IHJldHVybiBzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPiht
X3ZhbHVlcy52YWx1ZTIpOyB9CisgICAgdW5zaWduZWQgY2hhciBmdW5jdGlvbkxlbmd0aCgpIGNv
bnN0CisgICAgeworICAgICAgICBBU1NFUlQobV9hdHRyaWJ1dGVzICYgRnVuY3Rpb24pOworICAg
ICAgICBpZiAobV9hdHRyaWJ1dGVzICYgRE9NSklURnVuY3Rpb24pCisgICAgICAgICAgICByZXR1
cm4gc2lnbmF0dXJlKCktPmFyZ3VtZW50Q291bnQ7CisgICAgICAgIHJldHVybiBzdGF0aWNfY2Fz
dDx1bnNpZ25lZCBjaGFyPihtX3ZhbHVlcy52YWx1ZTIpOworICAgIH0KIAogICAgIEdldEZ1bmN0
aW9uIHByb3BlcnR5R2V0dGVyKCkgY29uc3QgeyBBU1NFUlQoIShtX2F0dHJpYnV0ZXMgJiBCdWls
dGluT3JGdW5jdGlvbk9yQWNjZXNzb3JPckxhenlQcm9wZXJ0eU9yQ29uc3RhbnQpKTsgcmV0dXJu
IHJlaW50ZXJwcmV0X2Nhc3Q8R2V0RnVuY3Rpb24+KG1fdmFsdWVzLnZhbHVlMSk7IH0KICAgICBQ
dXRGdW5jdGlvbiBwcm9wZXJ0eVB1dHRlcigpIGNvbnN0IHsgQVNTRVJUKCEobV9hdHRyaWJ1dGVz
ICYgQnVpbHRpbk9yRnVuY3Rpb25PckFjY2Vzc29yT3JMYXp5UHJvcGVydHlPckNvbnN0YW50KSk7
IHJldHVybiByZWludGVycHJldF9jYXN0PFB1dEZ1bmN0aW9uPihtX3ZhbHVlcy52YWx1ZTIpOyB9
CiAKICAgICBET01KSVQ6OkdldHRlclNldHRlciogZG9tSklUKCkgY29uc3QgeyBBU1NFUlQobV9h
dHRyaWJ1dGVzICYgRE9NSklUQXR0cmlidXRlKTsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8RE9N
SklUR2V0dGVyU2V0dGVyR2VuZXJhdG9yPihtX3ZhbHVlcy52YWx1ZTEpKCk7IH0KKyAgICBjb25z
dCBET01KSVQ6OlNpZ25hdHVyZSogc2lnbmF0dXJlKCkgY29uc3QgeyBBU1NFUlQobV9hdHRyaWJ1
dGVzICYgRE9NSklURnVuY3Rpb24pOyByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBET01K
SVQ6OlNpZ25hdHVyZSo+KG1fdmFsdWVzLnZhbHVlMik7IH0KIAogICAgIE5hdGl2ZUZ1bmN0aW9u
IGFjY2Vzc29yR2V0dGVyKCkgY29uc3QgeyBBU1NFUlQobV9hdHRyaWJ1dGVzICYgQWNjZXNzb3Ip
OyByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxOYXRpdmVGdW5jdGlvbj4obV92YWx1ZXMudmFsdWUx
KTsgfQogICAgIE5hdGl2ZUZ1bmN0aW9uIGFjY2Vzc29yU2V0dGVyKCkgY29uc3QgeyBBU1NFUlQo
bV9hdHRyaWJ1dGVzICYgQWNjZXNzb3IpOyByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxOYXRpdmVG
dW5jdGlvbj4obV92YWx1ZXMudmFsdWUyKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvTmF0aXZlRXhlY3V0YWJsZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9OYXRpdmVFeGVjdXRhYmxlLmNwcAppbmRleCAxYzJiZWM1OGI3ZGI4OThiODEx
OGIyOTcxMGIyZDc0MjY5M2JiMjFkLi5iN2RhZDJhNDYyZGRkZmMyMjc2MmZkNWNkN2NmNmE0NjFj
ZGQxOGY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OYXRpdmVF
eGVjdXRhYmxlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OYXRpdmVF
eGVjdXRhYmxlLmNwcApAQCAtNDAsMTAgKzQwLDEwIEBAIG5hbWVzcGFjZSBKU0MgewogCiBjb25z
dCBDbGFzc0luZm8gTmF0aXZlRXhlY3V0YWJsZTo6c19pbmZvID0geyAiTmF0aXZlRXhlY3V0YWJs
ZSIsICZFeGVjdXRhYmxlQmFzZTo6c19pbmZvLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKE5hdGl2
ZUV4ZWN1dGFibGUpIH07CiAKLU5hdGl2ZUV4ZWN1dGFibGUqIE5hdGl2ZUV4ZWN1dGFibGU6OmNy
ZWF0ZShWTSYgdm0sIFBhc3NSZWZQdHI8SklUQ29kZT4gY2FsbFRodW5rLCBOYXRpdmVGdW5jdGlv
biBmdW5jdGlvbiwgUGFzc1JlZlB0cjxKSVRDb2RlPiBjb25zdHJ1Y3RUaHVuaywgTmF0aXZlRnVu
Y3Rpb24gY29uc3RydWN0b3IsIEludHJpbnNpYyBpbnRyaW5zaWMsIGNvbnN0IFN0cmluZyYgbmFt
ZSkKK05hdGl2ZUV4ZWN1dGFibGUqIE5hdGl2ZUV4ZWN1dGFibGU6OmNyZWF0ZShWTSYgdm0sIFBh
c3NSZWZQdHI8SklUQ29kZT4gY2FsbFRodW5rLCBOYXRpdmVGdW5jdGlvbiBmdW5jdGlvbiwgUGFz
c1JlZlB0cjxKSVRDb2RlPiBjb25zdHJ1Y3RUaHVuaywgTmF0aXZlRnVuY3Rpb24gY29uc3RydWN0
b3IsIEludHJpbnNpYyBpbnRyaW5zaWMsIGNvbnN0IERPTUpJVDo6U2lnbmF0dXJlKiBzaWduYXR1
cmUsIGNvbnN0IFN0cmluZyYgbmFtZSkKIHsKICAgICBOYXRpdmVFeGVjdXRhYmxlKiBleGVjdXRh
YmxlOwotICAgIGV4ZWN1dGFibGUgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxOYXRpdmVF
eGVjdXRhYmxlPih2bS5oZWFwKSkgTmF0aXZlRXhlY3V0YWJsZSh2bSwgZnVuY3Rpb24sIGNvbnN0
cnVjdG9yLCBpbnRyaW5zaWMpOworICAgIGV4ZWN1dGFibGUgPSBuZXcgKE5vdE51bGwsIGFsbG9j
YXRlQ2VsbDxOYXRpdmVFeGVjdXRhYmxlPih2bS5oZWFwKSkgTmF0aXZlRXhlY3V0YWJsZSh2bSwg
ZnVuY3Rpb24sIGNvbnN0cnVjdG9yLCBpbnRyaW5zaWMsIHNpZ25hdHVyZSk7CiAgICAgZXhlY3V0
YWJsZS0+ZmluaXNoQ3JlYXRpb24odm0sIGNhbGxUaHVuaywgY29uc3RydWN0VGh1bmssIG5hbWUp
OwogICAgIHJldHVybiBleGVjdXRhYmxlOwogfQpAQCAtNjgsMTAgKzY4LDExIEBAIHZvaWQgTmF0
aXZlRXhlY3V0YWJsZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBQYXNzUmVmUHRyPEpJVENvZGU+
IGNhbGxUaHVuaywgUGFzCiAgICAgbV9uYW1lID0gbmFtZTsKIH0KIAotTmF0aXZlRXhlY3V0YWJs
ZTo6TmF0aXZlRXhlY3V0YWJsZShWTSYgdm0sIE5hdGl2ZUZ1bmN0aW9uIGZ1bmN0aW9uLCBOYXRp
dmVGdW5jdGlvbiBjb25zdHJ1Y3RvciwgSW50cmluc2ljIGludHJpbnNpYykKK05hdGl2ZUV4ZWN1
dGFibGU6Ok5hdGl2ZUV4ZWN1dGFibGUoVk0mIHZtLCBOYXRpdmVGdW5jdGlvbiBmdW5jdGlvbiwg
TmF0aXZlRnVuY3Rpb24gY29uc3RydWN0b3IsIEludHJpbnNpYyBpbnRyaW5zaWMsIGNvbnN0IERP
TUpJVDo6U2lnbmF0dXJlKiBzaWduYXR1cmUpCiAgICAgOiBFeGVjdXRhYmxlQmFzZSh2bSwgdm0u
bmF0aXZlRXhlY3V0YWJsZVN0cnVjdHVyZS5nZXQoKSwgTlVNX1BBUkFNRVRFUlNfSVNfSE9TVCwg
aW50cmluc2ljKQogICAgICwgbV9mdW5jdGlvbihmdW5jdGlvbikKICAgICAsIG1fY29uc3RydWN0
b3IoY29uc3RydWN0b3IpCisgICAgLCBtX3NpZ25hdHVyZShzaWduYXR1cmUpCiB7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05hdGl2ZUV4ZWN1dGFibGUu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05hdGl2ZUV4ZWN1dGFibGUuaAppbmRl
eCA1YmYyZTEwNmRiMzBhNWI4Yzk3OGM4OTZhNmFkOThjYTJjNzU3NDE0Li43YjU1OGQxNDU4NGQ0
MjIwMzk3ZWNkNzlhOWVjOWNlY2YzNmY1MDkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9OYXRpdmVFeGVjdXRhYmxlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvTmF0aXZlRXhlY3V0YWJsZS5oCkBAIC0yOCw2ICsyOCw5IEBACiAjaW5jbHVk
ZSAiRXhlY3V0YWJsZUJhc2UuaCIKIAogbmFtZXNwYWNlIEpTQyB7CituYW1lc3BhY2UgRE9NSklU
IHsKK2NsYXNzIFNpZ25hdHVyZTsKK30KIAogY2xhc3MgTmF0aXZlRXhlY3V0YWJsZSBmaW5hbCA6
IHB1YmxpYyBFeGVjdXRhYmxlQmFzZSB7CiAgICAgZnJpZW5kIGNsYXNzIEpJVDsKQEAgLTM2LDcg
KzM5LDcgQEAgY2xhc3MgTmF0aXZlRXhlY3V0YWJsZSBmaW5hbCA6IHB1YmxpYyBFeGVjdXRhYmxl
QmFzZSB7CiAgICAgdHlwZWRlZiBFeGVjdXRhYmxlQmFzZSBCYXNlOwogICAgIHN0YXRpYyBjb25z
dCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgU3RydWN0
dXJlSXNJbW1vcnRhbDsKIAotICAgIHN0YXRpYyBOYXRpdmVFeGVjdXRhYmxlKiBjcmVhdGUoVk0m
IHZtLCBQYXNzUmVmUHRyPEpJVENvZGU+IGNhbGxUaHVuaywgTmF0aXZlRnVuY3Rpb24gZnVuY3Rp
b24sIFBhc3NSZWZQdHI8SklUQ29kZT4gY29uc3RydWN0VGh1bmssIE5hdGl2ZUZ1bmN0aW9uIGNv
bnN0cnVjdG9yLCBJbnRyaW5zaWMgaW50cmluc2ljLCBjb25zdCBTdHJpbmcmIG5hbWUpOworICAg
IHN0YXRpYyBOYXRpdmVFeGVjdXRhYmxlKiBjcmVhdGUoVk0mIHZtLCBQYXNzUmVmUHRyPEpJVENv
ZGU+IGNhbGxUaHVuaywgTmF0aXZlRnVuY3Rpb24gZnVuY3Rpb24sIFBhc3NSZWZQdHI8SklUQ29k
ZT4gY29uc3RydWN0VGh1bmssIE5hdGl2ZUZ1bmN0aW9uIGNvbnN0cnVjdG9yLCBJbnRyaW5zaWMg
aW50cmluc2ljLCBjb25zdCBET01KSVQ6OlNpZ25hdHVyZSogc2lnbmF0dXJlLCBjb25zdCBTdHJp
bmcmIG5hbWUpOwogCiAgICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0NlbGwqKTsKIApAQCAtNjYs
NiArNjksMTQgQEAgY2xhc3MgTmF0aXZlRXhlY3V0YWJsZSBmaW5hbCA6IHB1YmxpYyBFeGVjdXRh
YmxlQmFzZSB7CiAgICAgREVDTEFSRV9JTkZPOwogCiAgICAgY29uc3QgU3RyaW5nJiBuYW1lKCkg
Y29uc3QgeyByZXR1cm4gbV9uYW1lOyB9CisgICAgY29uc3QgRE9NSklUOjpTaWduYXR1cmUqIHNp
Z25hdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2lnbmF0dXJlOyB9CisKKyAgICBjb25zdCBET01K
SVQ6OlNpZ25hdHVyZSogc2lnbmF0dXJlRm9yKENvZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCkg
Y29uc3QKKyAgICB7CisgICAgICAgIGlmIChpc0NhbGwoa2luZCkpCisgICAgICAgICAgICByZXR1
cm4gc2lnbmF0dXJlKCk7CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KIAogcHJvdGVj
dGVkOgogICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mLCBQYXNzUmVmUHRyPEpJVENvZGU+IGNh
bGxUaHVuaywgUGFzc1JlZlB0cjxKSVRDb2RlPiBjb25zdHJ1Y3RUaHVuaywgY29uc3QgU3RyaW5n
JiBuYW1lKTsKQEAgLTczLDEwICs4NCwxMSBAQCBjbGFzcyBOYXRpdmVFeGVjdXRhYmxlIGZpbmFs
IDogcHVibGljIEV4ZWN1dGFibGVCYXNlIHsKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIEV4
ZWN1dGFibGVCYXNlOwogCi0gICAgTmF0aXZlRXhlY3V0YWJsZShWTSYsIE5hdGl2ZUZ1bmN0aW9u
IGZ1bmN0aW9uLCBOYXRpdmVGdW5jdGlvbiBjb25zdHJ1Y3RvciwgSW50cmluc2ljKTsKKyAgICBO
YXRpdmVFeGVjdXRhYmxlKFZNJiwgTmF0aXZlRnVuY3Rpb24gZnVuY3Rpb24sIE5hdGl2ZUZ1bmN0
aW9uIGNvbnN0cnVjdG9yLCBJbnRyaW5zaWMsIGNvbnN0IERPTUpJVDo6U2lnbmF0dXJlKik7CiAK
ICAgICBOYXRpdmVGdW5jdGlvbiBtX2Z1bmN0aW9uOwogICAgIE5hdGl2ZUZ1bmN0aW9uIG1fY29u
c3RydWN0b3I7CisgICAgY29uc3QgRE9NSklUOjpTaWduYXR1cmUqIG1fc2lnbmF0dXJlOwogCiAg
ICAgU3RyaW5nIG1fbmFtZTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Qcm9wZXJ0eVNsb3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1By
b3BlcnR5U2xvdC5oCmluZGV4IDlkZTE1MWE1NmFhMjc1NmNmZDBjNjAwMzY2ODI2NmIxOWY5OTMy
ZGQuLjM4N2UzMWI0MGU1YWViZjJmMzVmNmNhMjcyZTM4M2MwNWQzZjQ1MmQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5U2xvdC5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5U2xvdC5oCkBAIC01MSw2ICs1MSw3IEBA
IGVudW0gQXR0cmlidXRlIHsKICAgICBDbGFzc1N0cnVjdHVyZSAgICA9IDEgPDwgMTIsIC8vIHBy
b3BlcnR5IGlzIGEgbGF6eSBjbGFzcyBzdHJ1Y3R1cmUgLSBvbmx5IHVzZWQgYnkgc3RhdGljIGhh
c2h0YWJsZXMKICAgICBQcm9wZXJ0eUNhbGxiYWNrICA9IDEgPDwgMTMsIC8vIHByb3BlcnR5IHRo
YXQgaXMgYSBsYXp5IHByb3BlcnR5IGNhbGxiYWNrIC0gb25seSB1c2VkIGJ5IHN0YXRpYyBoYXNo
dGFibGVzCiAgICAgRE9NSklUQXR0cmlidXRlICAgPSAxIDw8IDE0LCAvLyBwcm9wZXJ0eSBpcyBh
IERPTSBKSVQgYXR0cmlidXRlIC0gb25seSB1c2VkIGJ5IHN0YXRpYyBoYXNodGFibGVzCisgICAg
RE9NSklURnVuY3Rpb24gICAgPSAxIDw8IDE1LCAvLyBwcm9wZXJ0eSBpcyBhIERPTSBKSVQgZnVu
Y3Rpb24gLSBvbmx5IHVzZWQgYnkgc3RhdGljIGhhc2h0YWJsZXMKICAgICBCdWlsdGluT3JGdW5j
dGlvbiA9IEJ1aWx0aW4gfCBGdW5jdGlvbiwgLy8gaGVscGVyIG9ubHkgdXNlZCBieSBzdGF0aWMg
aGFzaHRhYmxlcwogICAgIEJ1aWx0aW5PckZ1bmN0aW9uT3JMYXp5UHJvcGVydHkgPSBCdWlsdGlu
IHwgRnVuY3Rpb24gfCBDZWxsUHJvcGVydHkgfCBDbGFzc1N0cnVjdHVyZSB8IFByb3BlcnR5Q2Fs
bGJhY2ssIC8vIGhlbHBlciBvbmx5IHVzZWQgYnkgc3RhdGljIGhhc2h0YWJsZXMKICAgICBCdWls
dGluT3JGdW5jdGlvbk9yQWNjZXNzb3JPckxhenlQcm9wZXJ0eSA9IEJ1aWx0aW4gfCBGdW5jdGlv
biB8IEFjY2Vzc29yIHwgQ2VsbFByb3BlcnR5IHwgQ2xhc3NTdHJ1Y3R1cmUgfCBQcm9wZXJ0eUNh
bGxiYWNrLCAvLyBoZWxwZXIgb25seSB1c2VkIGJ5IHN0YXRpYyBoYXNodGFibGVzCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9WTS5jcHAKaW5kZXggODEyMzljNWI5MjRiNGVjYzhlNmQ3MGJjODA3
N2U4MzhhZjFlMWQ2MS4uZjkyNzM0NzM0YWNlZWM0MWE0NTgzNjA5NTRiMDdkOGZhYzEyNWJiZiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcApAQCAtNTExLDE3ICs1MTEsMTcgQEAg
c3RhdGljIFRodW5rR2VuZXJhdG9yIHRodW5rR2VuZXJhdG9yRm9ySW50cmluc2ljKEludHJpbnNp
YyBpbnRyaW5zaWMpCiAKIE5hdGl2ZUV4ZWN1dGFibGUqIFZNOjpnZXRIb3N0RnVuY3Rpb24oTmF0
aXZlRnVuY3Rpb24gZnVuY3Rpb24sIE5hdGl2ZUZ1bmN0aW9uIGNvbnN0cnVjdG9yLCBjb25zdCBT
dHJpbmcmIG5hbWUpCiB7Ci0gICAgcmV0dXJuIGdldEhvc3RGdW5jdGlvbihmdW5jdGlvbiwgTm9J
bnRyaW5zaWMsIGNvbnN0cnVjdG9yLCBuYW1lKTsKKyAgICByZXR1cm4gZ2V0SG9zdEZ1bmN0aW9u
KGZ1bmN0aW9uLCBOb0ludHJpbnNpYywgY29uc3RydWN0b3IsIG51bGxwdHIsIG5hbWUpOwogfQog
Ci1OYXRpdmVFeGVjdXRhYmxlKiBWTTo6Z2V0SG9zdEZ1bmN0aW9uKE5hdGl2ZUZ1bmN0aW9uIGZ1
bmN0aW9uLCBJbnRyaW5zaWMgaW50cmluc2ljLCBOYXRpdmVGdW5jdGlvbiBjb25zdHJ1Y3Rvciwg
Y29uc3QgU3RyaW5nJiBuYW1lKQorTmF0aXZlRXhlY3V0YWJsZSogVk06OmdldEhvc3RGdW5jdGlv
bihOYXRpdmVGdW5jdGlvbiBmdW5jdGlvbiwgSW50cmluc2ljIGludHJpbnNpYywgTmF0aXZlRnVu
Y3Rpb24gY29uc3RydWN0b3IsIGNvbnN0IERPTUpJVDo6U2lnbmF0dXJlKiBzaWduYXR1cmUsIGNv
bnN0IFN0cmluZyYgbmFtZSkKIHsKICNpZiBFTkFCTEUoSklUKQogICAgIGlmIChjYW5Vc2VKSVQo
KSkgewogICAgICAgICByZXR1cm4gaml0U3R1YnMtPmhvc3RGdW5jdGlvblN0dWIoCiAgICAgICAg
ICAgICB0aGlzLCBmdW5jdGlvbiwgY29uc3RydWN0b3IsCiAgICAgICAgICAgICBpbnRyaW5zaWMg
IT0gTm9JbnRyaW5zaWMgPyB0aHVua0dlbmVyYXRvckZvckludHJpbnNpYyhpbnRyaW5zaWMpIDog
MCwKLSAgICAgICAgICAgIGludHJpbnNpYywgbmFtZSk7CisgICAgICAgICAgICBpbnRyaW5zaWMs
IHNpZ25hdHVyZSwgbmFtZSk7CiAgICAgfQogI2Vsc2UgLy8gRU5BQkxFKEpJVCkKICAgICBVTlVT
RURfUEFSQU0oaW50cmluc2ljKTsKQEAgLTUyOSw3ICs1MjksNyBAQCBOYXRpdmVFeGVjdXRhYmxl
KiBWTTo6Z2V0SG9zdEZ1bmN0aW9uKE5hdGl2ZUZ1bmN0aW9uIGZ1bmN0aW9uLCBJbnRyaW5zaWMg
aW50cmlucwogICAgIHJldHVybiBOYXRpdmVFeGVjdXRhYmxlOjpjcmVhdGUoKnRoaXMsCiAgICAg
ICAgIGFkb3B0UmVmKG5ldyBOYXRpdmVKSVRDb2RlKE1hY3JvQXNzZW1ibGVyQ29kZVJlZjo6Y3Jl
YXRlTExJbnRDb2RlUmVmKGxsaW50X25hdGl2ZV9jYWxsX3RyYW1wb2xpbmUpLCBKSVRDb2RlOjpI
b3N0Q2FsbFRodW5rKSksIGZ1bmN0aW9uLAogICAgICAgICBhZG9wdFJlZihuZXcgTmF0aXZlSklU
Q29kZShNYWNyb0Fzc2VtYmxlckNvZGVSZWY6OmNyZWF0ZUxMSW50Q29kZVJlZihsbGludF9uYXRp
dmVfY29uc3RydWN0X3RyYW1wb2xpbmUpLCBKSVRDb2RlOjpIb3N0Q2FsbFRodW5rKSksIGNvbnN0
cnVjdG9yLAotICAgICAgICBOb0ludHJpbnNpYywgbmFtZSk7CisgICAgICAgIE5vSW50cmluc2lj
LCBzaWduYXR1cmUsIG5hbWUpOwogfQogCiBWTTo6Q2xpZW50RGF0YTo6fkNsaWVudERhdGEoKQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKaW5kZXggYTk3ZjE4MTAyNDdkOTBjMDBhNDg2YjMz
NTRiNjVmNjUyMTBlNTljZC4uYTM2MmY3M2FjOTNkYWMzOTY2MTJhYmYzMWVmMjFjYzI2MmJkNDQ3
YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCkBAIC00MjksNyArNDI5LDcgQEAgY2xh
c3MgVk0gOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8Vk0+IHsKICAgICBzdGQ6OnVuaXF1
ZV9wdHI8RlRMOjpUaHVua3M+IGZ0bFRodW5rczsKICNlbmRpZgogICAgIE5hdGl2ZUV4ZWN1dGFi
bGUqIGdldEhvc3RGdW5jdGlvbihOYXRpdmVGdW5jdGlvbiwgTmF0aXZlRnVuY3Rpb24gY29uc3Ry
dWN0b3IsIGNvbnN0IFN0cmluZyYgbmFtZSk7Ci0gICAgTmF0aXZlRXhlY3V0YWJsZSogZ2V0SG9z
dEZ1bmN0aW9uKE5hdGl2ZUZ1bmN0aW9uLCBJbnRyaW5zaWMgaW50cmluc2ljLCBOYXRpdmVGdW5j
dGlvbiBjb25zdHJ1Y3RvciwgY29uc3QgU3RyaW5nJiBuYW1lKTsKKyAgICBOYXRpdmVFeGVjdXRh
YmxlKiBnZXRIb3N0RnVuY3Rpb24oTmF0aXZlRnVuY3Rpb24sIEludHJpbnNpYyBpbnRyaW5zaWMs
IE5hdGl2ZUZ1bmN0aW9uIGNvbnN0cnVjdG9yLCBjb25zdCBET01KSVQ6OlNpZ25hdHVyZSosIGNv
bnN0IFN0cmluZyYgbmFtZSk7CiAKICAgICBzdGF0aWMgcHRyZGlmZl90IGV4Y2VwdGlvbk9mZnNl
dCgpCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMv
Ynl0ZWNvZGUvU3BlY3VsYXRlZFR5cGUuaCBiL1NvdXJjZS9XZWJDb3JlL0ZvcndhcmRpbmdIZWFk
ZXJzL2J5dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDk0NjZmNGYwMGI4MDdk
ZmVkYTBmYzgyMDg1NDZiNzE4NDRmMDk5ZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL0ZvcndhcmRpbmdIZWFkZXJzL2J5dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmgKQEAgLTAsMCAr
MSwyOSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
Zm5kZWYgV2ViQ29yZV9GV0RfU3BlY3VsYXRlZFR5cGVfaAorI2RlZmluZSBXZWJDb3JlX0ZXRF9T
cGVjdWxhdGVkVHlwZV9oCisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvU3BlY3VsYXRlZFR5cGUu
aD4KKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMv
ZG9taml0L0RPTUpJVFNpZ25hdHVyZS5oIGIvU291cmNlL1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRl
cnMvZG9taml0L0RPTUpJVFNpZ25hdHVyZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjcyMDAyN2Y2ZTA4ZTM4MzBl
MzUxYjFjOWNkMzJmMjAzMTI5ZDJiNWQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Gb3J3YXJkaW5nSGVhZGVycy9kb21qaXQvRE9NSklUU2lnbmF0dXJlLmgKQEAgLTAsMCArMSwy
OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgor
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5k
ZWYgV2ViQ29yZV9GV0RfRE9NSklUU2lnbmF0dXJlX2gKKyNkZWZpbmUgV2ViQ29yZV9GV0RfRE9N
SklUU2lnbmF0dXJlX2gKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9ET01KSVRTaWduYXR1cmUu
aD4KKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCmluZGV4IGNlZmFiMWQxZTFlY2NiZWVmZGU2NTM3NjUzOTY5NDVhZjdkOWFmZTIu
LmJjZjkyNTVkYmU5ZWM5MDhhYTZmMjRlYTIxNzNjMzk4NWQzMTU0NGMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTYyMDMsMTIg
KzYyMDMsMTUgQEAKIAkJRTMxNTBFQTcxREE3MjE5MzAwMTk0MDEyIC8qIERPTUpJVEhlbHBlcnMu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzMTUwRUE1
MURBNzIxOEQwMDE5NDAxMiAvKiBET01KSVRIZWxwZXJzLmggKi87IH07CiAJCUUzMTgwMzlEMURD
NDAwOTkwMDk5MzJDMiAvKiBKU0R5bmFtaWNEb3duY2FzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTNBNTg3MkUxREMzRjUyNjAwRjYwN0E2IC8qIEpT
RHluYW1pY0Rvd25jYXN0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJRTM1NjVCN0IxREMyRDZDOTAwMjE3REJEIC8qIEpTRXZlbnRDdXN0b20uaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzNEVFNDlGMURD
MkQ1NzUwMEVBQTlEMyAvKiBKU0V2ZW50Q3VzdG9tLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJRTM1ODAyQjYxREM4NDM1RDAwQTk3NzNDIC8qIERP
TUpJVElETFR5cGVGaWx0ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEUzNTgwMkI1MURDODQzNTgwMEE5NzczQyAvKiBET01KSVRJRExUeXBlRmlsdGVy
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTM1
Q0ExNEQxREJDM0EzRjAwRjgzNTE2IC8qIERPTUpJVEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM1Q0ExNEIx
REJDM0EzQzAwRjgzNTE2IC8qIERPTUpJVEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuY3BwICovOyB9
OwogCQlFMzVDQTE0RTFEQkMzQTQyMDBGODM1MTYgLyogRE9NSklUQWJzdHJhY3RIZWFwUmVwb3Np
dG9yeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM1
Q0ExNEMxREJDM0EzQzAwRjgzNTE2IC8qIERPTUpJVEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaCAq
LzsgfTsKIAkJRTM3N0ZFNEQxREFERTE2NTAwQ0REMDI1IC8qIE5vZGVDb25zdGFudHMuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzRDA0OTkzMURBREMw
NDUwMDcxOEYzQyAvKiBOb2RlQ29uc3RhbnRzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTM4ODM4OTgxQkFEMTQ1RjAwRDYyRUUzIC8qIFNjcmlw
dE1vZHVsZUxvYWRlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBFMzg4Mzg5NDFCQUQxNDVGMDBENjJFRTMgLyogU2NyaXB0TW9kdWxlTG9hZGVyLmNw
cCAqLzsgfTsKIAkJRTM4ODM4OTkxQkFEMTQ1RjAwRDYyRUUzIC8qIFNjcmlwdE1vZHVsZUxvYWRl
ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM4ODM4
OTUxQkFEMTQ1RjAwRDYyRUUzIC8qIFNjcmlwdE1vZHVsZUxvYWRlci5oICovOyB9OwogCQlFMzk4
RkMyNDFEQzMyQTIwMDAzQzQ2ODQgLyogRE9NSklUSGVscGVycy5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzk4RkMyMzFEQzMyQTFCMDAzQzQ2ODQg
LyogRE9NSklUSGVscGVycy5jcHAgKi87IH07CisJCUUzQTc3NjY3MURDODVEMjgwMEI2OTBEOCAv
KiBET01KSVRJRExDb252ZXJ0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBFM0E3NzY2NTFEQzg1RDIyMDBCNjkwRDggLyogRE9NSklUSURMQ29udmVydC5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUUzQTc3
NjY4MURDODVEMjgwMEI2OTBEOCAvKiBET01KSVRJRExUeXBlLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFM0E3NzY2NjFEQzg1RDIyMDBCNjkwRDggLyog
RE9NSklUSURMVHlwZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCUUzQjJGMEVCMUQ3RjRDOUQwMEIwQzlEMSAvKiBMb2FkYWJsZUNsYXNzaWNTY3Jp
cHQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTNC
MkYwRTMxRDdGMzVFQzAwQjBDOUQxIC8qIExvYWRhYmxlQ2xhc3NpY1NjcmlwdC5jcHAgKi87IH07
CiAJCUUzQjJGMEVDMUQ3RjRDQTEwMEIwQzlEMSAvKiBMb2FkYWJsZVNjcmlwdC5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFM0IyRjBFOTFEN0YzRDND
MDBCMEM5RDEgLyogTG9hZGFibGVTY3JpcHQuY3BwICovOyB9OwogCQlFM0IyRjBFRDFEN0Y0Q0Ez
MDBCMEM5RDEgLyogTG9hZGFibGVTY3JpcHQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEUzQjJGMEU3MUQ3RjM1RUMwMEIwQzlEMSAvKiBMb2FkYWJsZVNj
cmlwdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBA
IC0xNDAzOSwxMiArMTQwNDIsMTUgQEAKIAkJRTFGRjhGNkIxODBEQjVCRTAwMTMyNjc0IC8qIENy
eXB0b0FsZ29yaXRobVJlZ2lzdHJ5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IENyeXB0b0FsZ29yaXRobVJlZ2lzdHJ5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUUzMTUwRUE1MURBNzIxOEQwMDE5NDAxMiAvKiBET01KSVRIZWxwZXJzLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERPTUpJVEhlbHBlcnMuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJRTM0RUU0OUYxREMyRDU3NTAwRUFBOUQzIC8qIEpTRXZlbnRDdXN0b20uaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNFdmVudEN1c3RvbS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQlFMzU4MDJCNTFEQzg0MzU4MDBBOTc3M0MgLyogRE9NSklU
SURMVHlwZUZpbHRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBET01KSVRJ
RExUeXBlRmlsdGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzNUNBMTRCMURC
QzNBM0MwMEY4MzUxNiAvKiBET01KSVRBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERPTUpJVEFic3RyYWN0SGVhcFJlcG9zaXRv
cnkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzVDQTE0QzFEQkMzQTNDMDBG
ODM1MTYgLyogRE9NSklUQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBET01KSVRBYnN0cmFjdEhlYXBSZXBvc2l0b3J5Lmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzODgzODk0MUJBRDE0NUYwMEQ2MkVFMyAvKiBTY3JpcHRN
b2R1bGVMb2FkZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2Ny
aXB0TW9kdWxlTG9hZGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM4ODM4
OTUxQkFEMTQ1RjAwRDYyRUUzIC8qIFNjcmlwdE1vZHVsZUxvYWRlci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBTY3JpcHRNb2R1bGVMb2FkZXIuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJRTM5OEZDMjMxREMzMkExQjAwM0M0Njg0IC8qIERPTUpJVEhlbHBlcnMu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRE9NSklUSGVscGVycy5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzQTU4NzJFMURDM0Y1MjYwMEY2MDdB
NiAvKiBKU0R5bmFtaWNEb3duY2FzdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBKU0R5bmFtaWNEb3duY2FzdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFM0E3
NzY2NTFEQzg1RDIyMDBCNjkwRDggLyogRE9NSklUSURMQ29udmVydC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBET01KSVRJRExDb252ZXJ0Lmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCUUzQTc3NjY2MURDODVEMjIwMEI2OTBEOCAvKiBET01KSVRJRExUeXBlLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERPTUpJVElETFR5cGUuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTNBRkE5NjQxREE2RTkwODAwMjg2MUJEIC8qIEpTTm9k
ZURPTUpJVC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU05vZGVE
T01KSVQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFM0IyRjBFMzFEN0YzNUVD
MDBCMEM5RDEgLyogTG9hZGFibGVDbGFzc2ljU2NyaXB0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IExvYWRhYmxlQ2xhc3NpY1NjcmlwdC5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUUzQjJGMEU0MUQ3RjM1RUMwMEIwQzlEMSAvKiBMb2FkYWJsZUNs
YXNzaWNTY3JpcHQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTG9hZGFibGVD
bGFzc2ljU2NyaXB0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMjgzNiw2ICsy
Mjg0Miw5IEBACiAJCQkJRTNDOTlBMDgxREMzRDQxNzAwNzk0QUQzIC8qIERPTUpJVENoZWNrRE9N
LmggKi8sCiAJCQkJRTM5OEZDMjMxREMzMkExQjAwM0M0Njg0IC8qIERPTUpJVEhlbHBlcnMuY3Bw
ICovLAogCQkJCUUzMTUwRUE1MURBNzIxOEQwMDE5NDAxMiAvKiBET01KSVRIZWxwZXJzLmggKi8s
CisJCQkJRTNBNzc2NjUxREM4NUQyMjAwQjY5MEQ4IC8qIERPTUpJVElETENvbnZlcnQuaCAqLywK
KwkJCQlFM0E3NzY2NjFEQzg1RDIyMDBCNjkwRDggLyogRE9NSklUSURMVHlwZS5oICovLAorCQkJ
CUUzNTgwMkI1MURDODQzNTgwMEE5NzczQyAvKiBET01KSVRJRExUeXBlRmlsdGVyLmggKi8sCiAJ
CQkJRTNCN0MwNjIxREMzNDE1QTAwMUZCMEI4IC8qIEpTRG9jdW1lbnRET01KSVQuY3BwICovLAog
CQkJCUUzQUZBOTY0MURBNkU5MDgwMDI4NjFCRCAvKiBKU05vZGVET01KSVQuY3BwICovLAogCQkJ
KTsKQEAgLTI1Njk5LDYgKzI1NzA4LDcgQEAKIAkJCQk0NjBDQkYzNjFENEJDRDBFMDA5MkU4OEUg
LyogSlNET01XaW5kb3dQcm9wZXJ0aWVzLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQ0JGQjUzRDBE
Q0QyOUNGMDAxOUIzRTUgLyogSlNET01XaW5kb3dTaGVsbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
NjVFMEU5NDQxMTMzQzg5RjAwQjRDQjEwIC8qIEpTRE9NV3JhcHBlci5oIGluIEhlYWRlcnMgKi8s
CisJCQkJRTNBNzc2NjcxREM4NUQyODAwQjY5MEQ4IC8qIERPTUpJVElETENvbnZlcnQuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUZENzg2OEJBMTM2Qjk5OTIwMEQ0MDNERiAvKiBKU0R5bmFtaWNzQ29t
cHJlc3Nvck5vZGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTY1REYzMUZBMDlEMUNDNjAwMDBCRTMy
NSAvKiBKU0VsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUFERUM3OEY4MThFRTUzMDgwMDEz
MTVDMiAvKiBKU0VsZW1lbnRDdXN0b20uaCBpbiBIZWFkZXJzICovLApAQCAtMjcyNjIsNiArMjcy
NzIsNyBAQAogCQkJCTA4NTI1RTYzMTI3OEMwMDEwMEE4NDc3OCAvKiBTVkdBbmltYXRlZFN0YXRp
Y1Byb3BlcnR5VGVhck9mZi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDg0REI1OUIxMjgwMDhDQzAw
MkE2RDY0IC8qIFNWR0FuaW1hdGVkU3RyaW5nLmggaW4gSGVhZGVycyAqLywKIAkJCQkwODI1MDkz
OTEyOEJENEQ4MDBFMkVEOEUgLyogU1ZHQW5pbWF0ZWRUcmFuc2Zvcm1MaXN0LmggaW4gSGVhZGVy
cyAqLywKKwkJCQlFM0E3NzY2ODFEQzg1RDI4MDBCNjkwRDggLyogRE9NSklUSURMVHlwZS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMDg1QTE1OTMxMjg5QThERDAwMjcxMEUzIC8qIFNWR0FuaW1hdGVk
VHJhbnNmb3JtTGlzdFByb3BlcnR5VGVhck9mZi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDM5RDMz
NDMxM0E2OTExQzAwQzIwRjRGIC8qIFNWR0FuaW1hdGVkVHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJNDM5RDMzNDQxM0E2OTExQzAwQzIwRjRGIC8qIFNWR0FuaW1hdGVkVHlwZUFuaW1hdG9yLmgg
aW4gSGVhZGVycyAqLywKQEAgLTI3ODAzLDYgKzI3ODE0LDcgQEAKIAkJCQk5N0FBQkQyMzE0RkEw
OUQ1MDA3NDU3QUUgLyogV2ViU29ja2V0RXh0ZW5zaW9uRGlzcGF0Y2hlci5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJNEE1QTJBREMxNjFFN0UwMDAwNTg4OUREIC8qIFdlYlNvY2tldEV4dGVuc2lvblBh
cnNlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTdBQUJEMjQxNEZBMDlENTAwNzQ1N0FFIC8qIFdl
YlNvY2tldEV4dGVuc2lvblByb2Nlc3Nvci5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTM1ODAyQjYx
REM4NDM1RDAwQTk3NzNDIC8qIERPTUpJVElETFR5cGVGaWx0ZXIuaCBpbiBIZWFkZXJzICovLAog
CQkJCTk3QUFCRDI1MTRGQTA5RDUwMDc0NTdBRSAvKiBXZWJTb2NrZXRGcmFtZS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJOTdBQUJEMjcxNEZBMDlENTAwNzQ1N0FFIC8qIFdlYlNvY2tldEhhbmRzaGFr
ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzFERUE0NTYxQjM5RjREOTAwRjc3MTc4IC8qIFdlYlN5
c3RlbUJhY2tkcm9wTGF5ZXIuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuaCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmgKaW5kZXggYTAxYmY1NjhjNWZlMzAxM2NjMTk0
OTlkNTJhMjhlYmMxYTc4Yzk0ZS4uYjY4ZjQ3MzMyMTg0MTQ1YWQyZjY5NWU2ZmE1MDIyZjNlZThi
YjJkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxP
YmplY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVj
dC5oCkBAIC04Miw3ICs4Miw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBwdWJsaWM6CiAg
ICAgICAgIH5KU0RPTUdsb2JhbE9iamVjdCgpOwogCi0gICAgICAgIHN0YXRpYyBjb25zdCBKU0M6
OkNsYXNzSW5mbyogaW5mbygpIHsgcmV0dXJuICZzX2luZm87IH0KKyAgICAgICAgc3RhdGljIGNv
bnN0ZXhwciBjb25zdCBKU0M6OkNsYXNzSW5mbyogaW5mbygpIHsgcmV0dXJuICZzX2luZm87IH0K
IAogICAgICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZN
JiB2bSwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICAgICAgewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0gYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQppbmRleCAyMWUwZGM2
ZDU1MzU5YzRmYmNlMTRiZmNkM2M2OWYxOTBjZWE4ZGNlLi42NjdjMGE2OGVmZmJlZDIzZjdmMDJi
OWViMjUxYWVkM2JlNjI0ZDgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQpAQCAtMTQzNSw3ICsxNDM1LDcgQEAgc3ViIEdlbmVy
YXRlSGVhZGVyCiAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICJwcm90ZWN0ZWQ6XG4iKTsK
ICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICBzdGF0aWMgY29uc3QgSlNDOjpDbGFz
c0luZm8gc19pbmZvO1xuIik7CiAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICJwdWJsaWM6
XG4iKTsKLSAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICBzdGF0aWMgY29uc3QgSlND
OjpDbGFzc0luZm8qIGluZm8oKSB7IHJldHVybiAmc19pbmZvOyB9XG5cbiIpOworICAgICAgICBw
dXNoKEBoZWFkZXJDb250ZW50LCAiICAgIHN0YXRpYyBjb25zdGV4cHIgY29uc3QgSlNDOjpDbGFz
c0luZm8qIGluZm8oKSB7IHJldHVybiAmc19pbmZvOyB9XG5cbiIpOwogICAgIH0gZWxzZSB7CiAg
ICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICJcbiIpOwogICAgICAgICBwdXNoKEBoZWFkZXJD
b250ZW50LCAiICAgIERFQ0xBUkVfSU5GTztcblxuIik7CkBAIC0xODg5LDcgKzE4ODksMTEgQEAg
c3ViIEdlbmVyYXRlUHJvcGVydGllc0hhc2hUYWJsZQogICAgICAgICAjIEZJWE1FOiBSZW1vdmUg
dGhpcyBvbmNlIHdlIGNhbiBnZXQgcmlkIG9mIHRoZSBxdWlyayBpbnRyb2R1Y2VkIGluIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjM5NjcuCiAgICAgICAgICRmdW5j
dGlvbkxlbmd0aCA9IDMgaWYgJGludGVyZmFjZU5hbWUgZXEgIkV2ZW50IiBhbmQgJGZ1bmN0aW9u
LT5uYW1lIGVxICJpbml0RXZlbnQiOwogCi0gICAgICAgIHB1c2goQCRoYXNoVmFsdWUyLCAkZnVu
Y3Rpb25MZW5ndGgpOworICAgICAgICBpZiAoJGZ1bmN0aW9uLT5leHRlbmRlZEF0dHJpYnV0ZXMt
PnsiRE9NSklUIn0pIHsKKyAgICAgICAgICAgIHB1c2goQCRoYXNoVmFsdWUyLCAiJkRPTUpJVFNp
Z25hdHVyZUZvciIgLiAkaW50ZXJmYWNlLT50eXBlLT5uYW1lIC4gJGNvZGVHZW5lcmF0b3ItPldL
X3VjZmlyc3QoJGZ1bmN0aW9uLT5uYW1lKSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAg
ICBwdXNoKEAkaGFzaFZhbHVlMiwgJGZ1bmN0aW9uTGVuZ3RoKTsKKyAgICAgICAgfQogCiAgICAg
ICAgIHB1c2goQCRoYXNoU3BlY2lhbHMsIENvbXB1dGVGdW5jdGlvblNwZWNpYWwoJGludGVyZmFj
ZSwgJGZ1bmN0aW9uKSk7CiAKQEAgLTI1MDUsMzkgKzI1MDksMjggQEAgc3ViIGFkZFVuc2NvcGFi
bGVQcm9wZXJ0aWVzCiAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgcHV0RGlyZWN0V2l0aG91
dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPnVuc2NvcGFibGVzU3ltYm9sLCAmdW5z
Y29wYWJsZXMsIERvbnRFbnVtIHwgUmVhZE9ubHkpO1xuIik7CiB9CiAKLXN1YiBHZXRSZXN1bHRU
eXBlRmlsdGVyCitzdWIgR2V0VW5zYWZlQXJndW1lbnRUeXBlCiB7Ci0gICAgbXkgKCR0eXBlKSA9
IEBfOworICAgIG15ICgkaW50ZXJmYWNlLCAkdHlwZSkgPSBAXzsKIAotICAgIG15ICVUeXBlRmls
dGVycyA9ICgKLSAgICAgICAgImFueSIgPT4gIlNwZWNIZWFwVG9wIiwKLSAgICAgICAgImJvb2xl
YW4iID0+ICJTcGVjQm9vbGVhbiIsCi0gICAgICAgICJieXRlIiA9PiAiU3BlY0ludDMyT25seSIs
Ci0gICAgICAgICJvY3RldCIgPT4gIlNwZWNJbnQzMk9ubHkiLAotICAgICAgICAic2hvcnQiID0+
ICJTcGVjSW50MzJPbmx5IiwKLSAgICAgICAgInVuc2lnbmVkIHNob3J0IiA9PiAiU3BlY0ludDMy
T25seSIsCi0gICAgICAgICJsb25nIiA9PiAiU3BlY0ludDMyT25seSIsCi0gICAgICAgICJ1bnNp
Z25lZCBsb25nIiA9PiAiU3BlY0J5dGVjb2RlTnVtYmVyIiwKLSAgICAgICAgImxvbmcgbG9uZyIg
PT4gIlNwZWNCeXRlY29kZU51bWJlciIsCi0gICAgICAgICJ1bnNpZ25lZCBsb25nIGxvbmciID0+
ICJTcGVjQnl0ZWNvZGVOdW1iZXIiLAotICAgICAgICAiZmxvYXQiID0+ICJTcGVjQnl0ZWNvZGVO
dW1iZXIiLAotICAgICAgICAidW5yZXN0cmljdGVkIGZsb2F0IiA9PiAiU3BlY0J5dGVjb2RlTnVt
YmVyIiwKLSAgICAgICAgImRvdWJsZSIgPT4gIlNwZWNCeXRlY29kZU51bWJlciIsCi0gICAgICAg
ICJ1bnJlc3RyaWN0ZWQgZG91YmxlIiA9PiAiU3BlY0J5dGVjb2RlTnVtYmVyIiwKLSAgICAgICAg
IkRPTVN0cmluZyIgPT4gIlNwZWNTdHJpbmciLAotICAgICAgICAiQnl0ZVN0cmluZyIgPT4gIlNw
ZWNTdHJpbmciLAotICAgICAgICAiVVNWU3RyaW5nIiA9PiAiU3BlY1N0cmluZyIsCi0gICAgKTsK
KyAgICBteSAkSURMVHlwZSA9IEdldElETFR5cGUoJGludGVyZmFjZSwgJHR5cGUpOworICAgIHJl
dHVybiAiRE9NSklUOjpJRExKU0FyZ3VtZW50VHlwZTwke0lETFR5cGV9PiI7Cit9CiAKLSAgICBp
ZiAoZXhpc3RzICRUeXBlRmlsdGVyc3skdHlwZS0+bmFtZX0pIHsKLSAgICAgICAgbXkgJHJlc3Vs
dFR5cGUgPSAiSlNDOjokVHlwZUZpbHRlcnN7JHR5cGUtPm5hbWV9IjsKLSAgICAgICAgaWYgKCR0
eXBlLT5pc051bGxhYmxlKSB7Ci0gICAgICAgICAgICBkaWUgIlwiYW55XCIgdHlwZSBtdXN0IG5v
dCBiZWNvbWUgbnVsbGFibGUuIiBpZiAkdHlwZS0+bmFtZSBlcSAiYW55IjsKLSAgICAgICAgICAg
ICRyZXN1bHRUeXBlID0gIigkcmVzdWx0VHlwZSB8IEpTQzo6U3BlY090aGVyKSI7Ci0gICAgICAg
IH0KLSAgICAgICAgcmV0dXJuICRyZXN1bHRUeXBlOwotICAgIH0KLSAgICByZXR1cm4gIlNwZWNI
ZWFwVG9wIjsKK3N1YiBHZXRBcmd1bWVudFR5cGVGaWx0ZXIKK3sKKyAgICBteSAoJGludGVyZmFj
ZSwgJHR5cGUpID0gQF87CisKKyAgICBteSAkSURMVHlwZSA9IEdldElETFR5cGUoJGludGVyZmFj
ZSwgJHR5cGUpOworICAgIHJldHVybiAiRE9NSklUOjpJRExBcmd1bWVudFR5cGVGaWx0ZXI8JHtJ
RExUeXBlfT4iOworfQorCitzdWIgR2V0UmVzdWx0VHlwZUZpbHRlcgoreworICAgIG15ICgkaW50
ZXJmYWNlLCAkdHlwZSkgPSBAXzsKKworICAgIG15ICRJRExUeXBlID0gR2V0SURMVHlwZSgkaW50
ZXJmYWNlLCAkdHlwZSk7CisgICAgcmV0dXJuICJET01KSVQ6OklETFJlc3VsdFR5cGVGaWx0ZXI8
JHtJRExUeXBlfT4iOwogfQogCiBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgpAQCAtMjYwOCw2
ICsyNjAxLDE3IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgICAgICBwdXNo
KEBpbXBsQ29udGVudCwgIiNpZiAke2NvbmRpdGlvbmFsU3RyaW5nfVxuIikgaWYgJGNvbmRpdGlv
bmFsU3RyaW5nOwogICAgICAgICAgICAgbXkgJGZ1bmN0aW9uTmFtZSA9IEdldEZ1bmN0aW9uTmFt
ZSgkaW50ZXJmYWNlLCAkY2xhc3NOYW1lLCAkZnVuY3Rpb24pOwogICAgICAgICAgICAgcHVzaChA
aW1wbENvbnRlbnQsICJKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgJHtmdW5jdGlv
bk5hbWV9KEpTQzo6RXhlY1N0YXRlKik7XG4iKTsKKyAgICAgICAgICAgIGlmICgkY29kZUdlbmVy
YXRvci0+RXh0ZW5kZWRBdHRyaWJ1dGVDb250YWlucygkZnVuY3Rpb24tPmV4dGVuZGVkQXR0cmli
dXRlcy0+e0RPTUpJVH0sICJTaWduYXR1cmUiKSkgeworICAgICAgICAgICAgICAgICRpbXBsSW5j
bHVkZXN7IkRPTUpJVElETFR5cGUuaCJ9ID0gMTsKKyAgICAgICAgICAgICAgICBteSAkdW5zYWZl
RnVuY3Rpb25OYW1lID0gInVuc2FmZSIgLiAkY29kZUdlbmVyYXRvci0+V0tfdWNmaXJzdCgkZnVu
Y3Rpb25OYW1lKTsKKyAgICAgICAgICAgICAgICBteSAkZnVuY3Rpb25TaWduYXR1cmUgPSAiSlND
OjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMICR7dW5zYWZlRnVuY3Rpb25OYW1lfShKU0M6
OkV4ZWNTdGF0ZSosICRjbGFzc05hbWUqIjsKKyAgICAgICAgICAgICAgICBmb3JlYWNoIG15ICRh
cmd1bWVudCAoQHskZnVuY3Rpb24tPmFyZ3VtZW50c30pIHsKKyAgICAgICAgICAgICAgICAgICAg
bXkgJHR5cGUgPSAkYXJndW1lbnQtPnR5cGU7CisgICAgICAgICAgICAgICAgICAgIG15ICRhcmd1
bWVudFR5cGUgPSBHZXRVbnNhZmVBcmd1bWVudFR5cGUoJGludGVyZmFjZSwgJHR5cGUpOworICAg
ICAgICAgICAgICAgICAgICAkZnVuY3Rpb25TaWduYXR1cmUgLj0gIiwgJHthcmd1bWVudFR5cGV9
IjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQs
ICRmdW5jdGlvblNpZ25hdHVyZSAuICIpO1xuIik7CisgICAgICAgICAgICB9CiAgICAgICAgICAg
ICBwdXNoKEBpbXBsQ29udGVudCwgIiNlbmRpZlxuIikgaWYgJGNvbmRpdGlvbmFsU3RyaW5nOwog
ICAgICAgICB9CiAKQEAgLTI2NDQsNiArMjY0OCwzNSBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRh
dGlvbgogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIlxuIik7CiAgICAgfQogCisgICAgaWYg
KCRudW1GdW5jdGlvbnMgPiAwKSB7CisgICAgICAgICMgR2VuZXJhdGUgRE9NSklUOjpTaWduYXR1
cmUgdmFyaWFibGVzLgorICAgICAgICBmb3JlYWNoIG15ICRmdW5jdGlvbiAoQGZ1bmN0aW9ucykg
eworICAgICAgICAgICAgbmV4dCB1bmxlc3MgJGNvZGVHZW5lcmF0b3ItPkV4dGVuZGVkQXR0cmli
dXRlQ29udGFpbnMoJGZ1bmN0aW9uLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntET01KSVR9LCAiU2ln
bmF0dXJlIik7CisgICAgICAgICAgICAkaW1wbEluY2x1ZGVzeyJET01KSVRJRExUeXBlRmlsdGVy
LmgifSA9IDE7CisgICAgICAgICAgICAkaW1wbEluY2x1ZGVzeyJET01KSVRDaGVja0RPTS5oIn0g
PSAxOworCisgICAgICAgICAgICBteSAkaXNPdmVybG9hZGVkID0gJGZ1bmN0aW9uLT57b3Zlcmxv
YWRzfSAmJiBAeyRmdW5jdGlvbi0+e292ZXJsb2Fkc319ID4gMTsKKyAgICAgICAgICAgIGRpZSAi
b3ZlcmxvYWRzIGlzIG5vdCBzdXBwb3J0ZWQgaW4gRE9NSklUIiBpZiAkaXNPdmVybG9hZGVkOwor
CisgICAgICAgICAgICBteSAkaW50ZXJmYWNlTmFtZSA9ICRpbnRlcmZhY2UtPnR5cGUtPm5hbWU7
CisgICAgICAgICAgICBteSAkZnVuY3Rpb25OYW1lID0gR2V0RnVuY3Rpb25OYW1lKCRpbnRlcmZh
Y2UsICRjbGFzc05hbWUsICRmdW5jdGlvbik7CisgICAgICAgICAgICBteSAkdW5zYWZlRnVuY3Rp
b25OYW1lID0gInVuc2FmZSIgLiAkY29kZUdlbmVyYXRvci0+V0tfdWNmaXJzdCgkZnVuY3Rpb25O
YW1lKTsKKyAgICAgICAgICAgIG15ICRkb21KSVRTaWduYXR1cmVOYW1lID0gIkRPTUpJVFNpZ25h
dHVyZUZvciIgLiAkaW50ZXJmYWNlLT50eXBlLT5uYW1lIC4gJGNvZGVHZW5lcmF0b3ItPldLX3Vj
Zmlyc3QoJGZ1bmN0aW9uLT5uYW1lKTsKKyAgICAgICAgICAgIG15ICRjbGFzc0luZm8gPSAiSlMi
IC4gJGludGVyZmFjZS0+dHlwZS0+bmFtZSAuICI6OmluZm8oKSI7CisgICAgICAgICAgICBteSAk
cmVzdWx0VHlwZSA9IEdldFJlc3VsdFR5cGVGaWx0ZXIoJGludGVyZmFjZSwgJGZ1bmN0aW9uLT50
eXBlKTsKKyAgICAgICAgICAgIG15ICRkb21KSVRTaWduYXR1cmUgPSAic3RhdGljIGNvbnN0IEpT
Qzo6RE9NSklUOjpTaWduYXR1cmUgJHtkb21KSVRTaWduYXR1cmVOYW1lfSgodWludHB0cl90KSR7
dW5zYWZlRnVuY3Rpb25OYW1lfSwgRE9NSklUOjpjaGVja0RPTTwkaW50ZXJmYWNlTmFtZT4sICRj
bGFzc0luZm8sIEpTQzo6RE9NSklUOjpFZmZlY3Q6OmZvclJlYWQoSlNDOjpET01KSVQ6OkhlYXBS
YW5nZTo6dG9wKCkpLCAke3Jlc3VsdFR5cGV9IjsKKyAgICAgICAgICAgIGZvcmVhY2ggbXkgJGFy
Z3VtZW50IChAeyRmdW5jdGlvbi0+YXJndW1lbnRzfSkgeworICAgICAgICAgICAgICAgIG15ICR0
eXBlID0gJGFyZ3VtZW50LT50eXBlOworICAgICAgICAgICAgICAgIG15ICRhcmd1bWVudFR5cGUg
PSBHZXRBcmd1bWVudFR5cGVGaWx0ZXIoJGludGVyZmFjZSwgJHR5cGUpOworICAgICAgICAgICAg
ICAgICRkb21KSVRTaWduYXR1cmUgLj0gIiwgJHthcmd1bWVudFR5cGV9IjsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIG15ICRjb25kaXRpb25hbFN0cmluZyA9ICRjb2RlR2VuZXJhdG9yLT5H
ZW5lcmF0ZUNvbmRpdGlvbmFsU3RyaW5nKCRmdW5jdGlvbik7CisgICAgICAgICAgICBwdXNoKEBp
bXBsQ29udGVudCwgIiNpZiAke2NvbmRpdGlvbmFsU3RyaW5nfVxuIikgaWYgJGNvbmRpdGlvbmFs
U3RyaW5nOworICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICRkb21KSVRTaWduYXR1cmUg
LiAiKTtcbiIpOworICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIjZW5kaWZcbiIpIGlm
ICRjb25kaXRpb25hbFN0cmluZzsKKyAgICAgICAgfQorICAgIH0KKwogICAgIEdlbmVyYXRlUHJv
dG90eXBlRGVjbGFyYXRpb24oXEBpbXBsQ29udGVudCwgJGNsYXNzTmFtZSwgJGludGVyZmFjZSkg
aWYgIUhlYWRlck5lZWRzUHJvdG90eXBlRGVjbGFyYXRpb24oJGludGVyZmFjZSk7CiAKICAgICBH
ZW5lcmF0ZUNvbnN0cnVjdG9yRGVjbGFyYXRpb24oXEBpbXBsQ29udGVudCwgJGNsYXNzTmFtZSwg
JGludGVyZmFjZSkgaWYgTmVlZHNDb25zdHJ1Y3RvclByb3BlcnR5KCRpbnRlcmZhY2UpOwpAQCAt
Mjc0MCw3ICsyNzczLDExIEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgICAg
ICBwdXNoKEBoYXNoVmFsdWUxLCAkZnVuY3Rpb25OYW1lKTsKIAogICAgICAgICAgICAgbXkgJGZ1
bmN0aW9uTGVuZ3RoID0gR2V0RnVuY3Rpb25MZW5ndGgoJGZ1bmN0aW9uKTsKLSAgICAgICAgICAg
IHB1c2goQGhhc2hWYWx1ZTIsICRmdW5jdGlvbkxlbmd0aCk7CisgICAgICAgICAgICBpZiAoJGNv
ZGVHZW5lcmF0b3ItPkV4dGVuZGVkQXR0cmlidXRlQ29udGFpbnMoJGZ1bmN0aW9uLT5leHRlbmRl
ZEF0dHJpYnV0ZXMtPntET01KSVR9LCAiU2lnbmF0dXJlIikpIHsKKyAgICAgICAgICAgICAgICBw
dXNoKEBoYXNoVmFsdWUyLCAiRE9NSklURnVuY3Rpb25Gb3IiIC4gJGludGVyZmFjZS0+dHlwZS0+
bmFtZSAuICRjb2RlR2VuZXJhdG9yLT5XS191Y2ZpcnN0KCRmdW5jdGlvbi0+bmFtZSkpOworICAg
ICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBwdXNoKEBoYXNoVmFsdWUyLCAkZnVu
Y3Rpb25MZW5ndGgpOworICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBwdXNoKEBoYXNoU3Bl
Y2lhbHMsIENvbXB1dGVGdW5jdGlvblNwZWNpYWwoJGludGVyZmFjZSwgJGZ1bmN0aW9uKSk7CiAK
QEAgLTMzMDcsMTMgKzMzNDQsMTQgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KIAogICAg
ICAgICAgICAgaWYgKCRhdHRyaWJ1dGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJET01KSVQifSkg
ewogICAgICAgICAgICAgICAgICRpbXBsSW5jbHVkZXN7Ijx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4i
fSA9IDE7CisgICAgICAgICAgICAgICAgJGltcGxJbmNsdWRlc3siRE9NSklUSURMVHlwZUZpbHRl
ci5oIn0gPSAxOwogICAgICAgICAgICAgICAgIG15ICRpbnRlcmZhY2VOYW1lID0gJGludGVyZmFj
ZS0+dHlwZS0+bmFtZTsKICAgICAgICAgICAgICAgICBteSAkYXR0cmlidXRlTmFtZSA9ICRhdHRy
aWJ1dGUtPm5hbWU7CiAgICAgICAgICAgICAgICAgbXkgJGdlbmVyYXRvck5hbWUgPSAkaW50ZXJm
YWNlTmFtZSAuICRjb2RlR2VuZXJhdG9yLT5XS191Y2ZpcnN0KCRhdHRyaWJ1dGUtPm5hbWUpOwog
ICAgICAgICAgICAgICAgIG15ICRkb21KSVRDbGFzc05hbWUgPSAkZ2VuZXJhdG9yTmFtZSAuICJE
T01KSVQiOwogICAgICAgICAgICAgICAgIG15ICRnZXR0ZXIgPSBHZXRBdHRyaWJ1dGVHZXR0ZXJO
YW1lKCRpbnRlcmZhY2UsICRnZW5lcmF0b3JOYW1lLCAkYXR0cmlidXRlKTsKICAgICAgICAgICAg
ICAgICBteSAkc2V0dGVyID0gSXNSZWFkb25seSgkYXR0cmlidXRlKSA/ICJudWxscHRyIiA6IEdl
dEF0dHJpYnV0ZVNldHRlck5hbWUoJGludGVyZmFjZSwgJGdlbmVyYXRvck5hbWUsICRhdHRyaWJ1
dGUpOwotICAgICAgICAgICAgICAgIG15ICRyZXN1bHRUeXBlID0gR2V0UmVzdWx0VHlwZUZpbHRl
cigkYXR0cmlidXRlLT50eXBlKTsKKyAgICAgICAgICAgICAgICBteSAkcmVzdWx0VHlwZSA9IEdl
dFJlc3VsdFR5cGVGaWx0ZXIoJGludGVyZmFjZSwgJGF0dHJpYnV0ZS0+dHlwZSk7CiAgICAgICAg
ICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIkZG9tSklUQ2xhc3NOYW1lOjokZG9tSklUQ2xh
c3NOYW1lKClcbiIpOwogICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIDog
SlNDOjpET01KSVQ6OkdldHRlclNldHRlcigkZ2V0dGVyLCAkc2V0dGVyLCAke2NsYXNzTmFtZX06
OmluZm8oKSwgJHJlc3VsdFR5cGUpXG4iKTsKICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29u
dGVudCwgIntcbiIpOwpAQCAtMzY5Miw2ICszNzMwLDcgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50
YXRpb24KIAogICAgICAgICAgICAgbXkgJGlzQ3VzdG9tID0gSGFzQ3VzdG9tTWV0aG9kKCRmdW5j
dGlvbi0+ZXh0ZW5kZWRBdHRyaWJ1dGVzKTsKICAgICAgICAgICAgIG15ICRpc092ZXJsb2FkZWQg
PSAkZnVuY3Rpb24tPntvdmVybG9hZHN9ICYmIEB7JGZ1bmN0aW9uLT57b3ZlcmxvYWRzfX0gPiAx
OworICAgICAgICAgICAgbXkgJGlzRE9NSklUID0gJGNvZGVHZW5lcmF0b3ItPkV4dGVuZGVkQXR0
cmlidXRlQ29udGFpbnMoJGZ1bmN0aW9uLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntET01KSVR9LCAi
U2lnbmF0dXJlIik7CiAKICAgICAgICAgICAgIG15ICRtYXlUaHJvd0xlZ2FjeUV4Y2VwdGlvbiA9
ICRmdW5jdGlvbi0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57TWF5VGhyb3dMZWdhY3lFeGNlcHRpb259
OwogCkBAIC0zODMyLDYgKzM4NzEsNzggQEAgRU5ECiAgICAgICAgICAgICB9CiAKICAgICAgICAg
ICAgIHB1c2goQGltcGxDb250ZW50LCAifVxuXG4iKTsKKworICAgICAgICAgICAgaWYgKCRpc0RP
TUpJVCkgeworICAgICAgICAgICAgICAgICRpbXBsSW5jbHVkZXN7IjxpbnRlcnByZXRlci9GcmFt
ZVRyYWNlcnMuaD4ifSA9IDE7CisgICAgICAgICAgICAgICAgbXkgJHVuc2FmZUZ1bmN0aW9uTmFt
ZSA9ICJ1bnNhZmUiIC4gJGNvZGVHZW5lcmF0b3ItPldLX3VjZmlyc3QoJGZ1bmN0aW9uTmFtZSk7
CisgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJKU0M6OkVuY29kZWRKU1ZhbHVl
ICR7dW5zYWZlRnVuY3Rpb25OYW1lfShKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsICRjbGFzc05hbWUq
IGNhc3RlZFRoaXMiKTsKKyAgICAgICAgICAgICAgICBmb3JlYWNoIG15ICRhcmd1bWVudCAoQHsk
ZnVuY3Rpb24tPmFyZ3VtZW50c30pIHsKKyAgICAgICAgICAgICAgICAgICAgbXkgJHR5cGUgPSAk
YXJndW1lbnQtPnR5cGU7CisgICAgICAgICAgICAgICAgICAgIG15ICRhcmd1bWVudFR5cGUgPSBH
ZXRVbnNhZmVBcmd1bWVudFR5cGUoJGludGVyZmFjZSwgJHR5cGUpOworICAgICAgICAgICAgICAg
ICAgICBteSAkbmFtZSA9ICRhcmd1bWVudC0+bmFtZTsKKyAgICAgICAgICAgICAgICAgICAgbXkg
JGVuY29kZWROYW1lID0gImVuY29kZWQiIC4gJGNvZGVHZW5lcmF0b3ItPldLX3VjZmlyc3QoJG5h
bWUpOworICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiwgJHthcmd1bWVu
dFR5cGV9ICR7ZW5jb2RlZE5hbWV9Iik7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
ICAgIHB1c2goQGltcGxDb250ZW50LCAiKVxuIik7CisgICAgICAgICAgICAgICAgcHVzaChAaW1w
bENvbnRlbnQsICJ7XG4iKTsKKyAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAg
ICBVTlVTRURfUEFSQU0oc3RhdGUpO1xuIik7CisgICAgICAgICAgICAgICAgcHVzaChAaW1wbENv
bnRlbnQsICIgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7XG4iKTsKKyAgICAgICAgICAgICAgICBw
dXNoKEBpbXBsQ29udGVudCwgIiAgICBKU0M6Ok5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIo
JnZtLCBzdGF0ZSk7XG4iKTsKKyAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAg
ICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTtcbiIpOworICAgICAg
ICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlz
LT53cmFwcGVkKCk7XG4iKTsKKyAgICAgICAgICAgICAgICBteSBAYXJndW1lbnRzOworICAgICAg
ICAgICAgICAgIG15ICRpbXBsRnVuY3Rpb25OYW1lOworICAgICAgICAgICAgICAgIG15ICRpbXBs
ZW1lbnRlZEJ5ID0gJGZ1bmN0aW9uLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntJbXBsZW1lbnRlZEJ5
fTsKKworICAgICAgICAgICAgICAgIGlmICgkaW1wbGVtZW50ZWRCeSkgeworICAgICAgICAgICAg
ICAgICAgICBBZGRUb0ltcGxJbmNsdWRlcygiJHtpbXBsZW1lbnRlZEJ5fS5oIiwgJGZ1bmN0aW9u
LT5leHRlbmRlZEF0dHJpYnV0ZXMtPntDb25kaXRpb25hbH0pOworICAgICAgICAgICAgICAgICAg
ICB1bnNoaWZ0KEBhcmd1bWVudHMsICJpbXBsIikgaWYgISRmdW5jdGlvbi0+aXNTdGF0aWM7Cisg
ICAgICAgICAgICAgICAgICAgICRpbXBsRnVuY3Rpb25OYW1lID0gIldlYkNvcmU6OiR7aW1wbGVt
ZW50ZWRCeX06OiR7ZnVuY3Rpb25JbXBsZW1lbnRhdGlvbk5hbWV9IjsKKyAgICAgICAgICAgICAg
ICB9IGVsc2lmICgkZnVuY3Rpb24tPmlzU3RhdGljKSB7CisgICAgICAgICAgICAgICAgICAgICRp
bXBsRnVuY3Rpb25OYW1lID0gIiR7aW50ZXJmYWNlTmFtZX06OiR7ZnVuY3Rpb25JbXBsZW1lbnRh
dGlvbk5hbWV9IjsKKyAgICAgICAgICAgICAgICB9IGVsc2lmICgkc3ZnUHJvcGVydHlPckxpc3RQ
cm9wZXJ0eVR5cGUgYW5kICEkc3ZnTGlzdFByb3BlcnR5VHlwZSkgeworICAgICAgICAgICAgICAg
ICAgICAkaW1wbEZ1bmN0aW9uTmFtZSA9ICJwb2RJbXBsLiR7ZnVuY3Rpb25JbXBsZW1lbnRhdGlv
bk5hbWV9IjsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAk
aW1wbEZ1bmN0aW9uTmFtZSA9ICJpbXBsLiR7ZnVuY3Rpb25JbXBsZW1lbnRhdGlvbk5hbWV9IjsK
KyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBteSAkYXJndW1lbnRJbmRleCA9
IDA7CisgICAgICAgICAgICAgICAgZm9yZWFjaCBteSAkYXJndW1lbnQgKEB7JGZ1bmN0aW9uLT5h
cmd1bWVudHN9KSB7CisgICAgICAgICAgICAgICAgICAgIG15ICR2YWx1ZSA9ICIiOworICAgICAg
ICAgICAgICAgICAgICBteSAkdHlwZSA9ICRhcmd1bWVudC0+dHlwZTsKKyAgICAgICAgICAgICAg
ICAgICAgbXkgJG5hbWUgPSAkYXJndW1lbnQtPm5hbWU7CisgICAgICAgICAgICAgICAgICAgIG15
ICRlbmNvZGVkTmFtZSA9ICJlbmNvZGVkIiAuICRjb2RlR2VuZXJhdG9yLT5XS191Y2ZpcnN0KCRu
YW1lKTsKKyAgICAgICAgICAgICAgICAgICAgbXkgJG5hdGl2ZVR5cGUgPSBHZXROYXRpdmVUeXBl
KCRpbnRlcmZhY2UsICRhcmd1bWVudC0+dHlwZSk7CisgICAgICAgICAgICAgICAgICAgIG15ICRz
aG91bGRQYXNzQnlSZWZlcmVuY2UgPSBTaG91bGRQYXNzV3JhcHBlckJ5UmVmZXJlbmNlKCRhcmd1
bWVudCwgJGludGVyZmFjZSk7CisKKyAgICAgICAgICAgICAgICAgICAgaWYgKCEkc2hvdWxkUGFz
c0J5UmVmZXJlbmNlICYmICgkY29kZUdlbmVyYXRvci0+SXNXcmFwcGVyVHlwZSgkdHlwZSkgfHwg
JGNvZGVHZW5lcmF0b3ItPklzVHlwZWRBcnJheVR5cGUoJHR5cGUpKSkgeworICAgICAgICAgICAg
ICAgICAgICAgICAgJGltcGxJbmNsdWRlc3siPHJ1bnRpbWUvRXJyb3IuaD4ifSA9IDE7CisgICAg
ICAgICAgICAgICAgICAgICAgICBteSAoJG5hdGl2ZVZhbHVlLCAkbWF5VGhyb3dFeGNlcHRpb24p
ID0gVW5zYWZlVG9OYXRpdmUoJGludGVyZmFjZSwgJGFyZ3VtZW50LCAkZW5jb2RlZE5hbWUsICRm
dW5jdGlvbi0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Q29uZGl0aW9uYWx9KTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICRuYXRpdmVUeXBlICRuYW1lID0g
bnVsbHB0cjtcbiIpOworICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQs
ICIgICAgJG5hbWUgPSAkbmF0aXZlVmFsdWU7XG4iKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
IHB1c2goQGltcGxDb250ZW50LCAiICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwg
ZW5jb2RlZEpTVmFsdWUoKSk7XG4iKSBpZiAkbWF5VGhyb3dFeGNlcHRpb247CisgICAgICAgICAg
ICAgICAgICAgICAgICAkdmFsdWUgPSAiV1RGTW92ZSgkbmFtZSkiOworICAgICAgICAgICAgICAg
ICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgbXkgKCRuYXRpdmVWYWx1ZSwg
JG1heVRocm93RXhjZXB0aW9uKSA9IFVuc2FmZVRvTmF0aXZlKCRpbnRlcmZhY2UsICRhcmd1bWVu
dCwgJGVuY29kZWROYW1lLCAkZnVuY3Rpb24tPmV4dGVuZGVkQXR0cmlidXRlcy0+e0NvbmRpdGlv
bmFsfSk7CisgICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBh
dXRvICRuYW1lID0gJHtuYXRpdmVWYWx1ZX07XG4iKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICR2YWx1ZSA9ICJXVEZNb3ZlKCRuYW1lKSI7CisgICAgICAgICAgICAgICAgICAgICAgICBwdXNo
KEBpbXBsQ29udGVudCwgIiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29k
ZWRKU1ZhbHVlKCkpO1xuIikgaWYgJG1heVRocm93RXhjZXB0aW9uOworICAgICAgICAgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgaWYgKCRzaG91bGRQYXNzQnlSZWZlcmVuY2Up
IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICR2YWx1ZSA9ICIqJG5hbWUiOworICAgICAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIHB1c2goQGFyZ3VtZW50cywgJHZhbHVl
KTsKKyAgICAgICAgICAgICAgICAgICAgJGFyZ3VtZW50SW5kZXgrKzsKKyAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICAgICAgbXkgJGZ1bmN0aW9uU3RyaW5nID0gIiRpbXBsRnVuY3Rpb25O
YW1lKCIgLiBqb2luKCIsICIsIEBhcmd1bWVudHMpIC4gIikiOworICAgICAgICAgICAgICAgICRm
dW5jdGlvblN0cmluZyA9ICJwcm9wYWdhdGVFeGNlcHRpb24oKnN0YXRlLCB0aHJvd1Njb3BlLCAk
ZnVuY3Rpb25TdHJpbmcpIiBpZiBOZWVkc0V4cGxpY2l0UHJvcGFnYXRlRXhjZXB0aW9uQ2FsbCgk
ZnVuY3Rpb24pOworICAgICAgICAgICAgICAgIG15ICR0aGlzT2JqZWN0ID0gImNhc3RlZFRoaXMi
OworICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIEpTVmFsdWUgcmVzdWx0
ID0gIiAuIE5hdGl2ZVRvSlNWYWx1ZVVzaW5nUG9pbnRlcnMoJGZ1bmN0aW9uLCAxLCAkaW50ZXJm
YWNlLCAkZnVuY3Rpb25TdHJpbmcsICR0aGlzT2JqZWN0KSAuICI7XG4iKTsKKyAgICAgICAgICAg
ICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3Vs
dCk7XG4iKTsKKyAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIn1cblxuIik7Cisg
ICAgICAgICAgICB9CisKICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiI2VuZGlmXG5c
biIpIGlmICRjb25kaXRpb25hbDsKIAogICAgICAgICAgICAgIyBHZW5lcmF0ZSBhIGZ1bmN0aW9u
IGRpc3BhdGNoaW5nIGNhbGwgdG8gdGhlIHJlc3Qgb2YgdGhlIG92ZXJsb2Fkcy4KQEAgLTUzMjMs
NiArNTQzNCw0MyBAQCBzdWIgSlNWYWx1ZVRvTmF0aXZlCiAgICAgcmV0dXJuICgiSlMiIC4gJHR5
cGUtPm5hbWUgLiAiOjp0b1dyYXBwZWQoJHZhbHVlKSIsIDApOwogfQogCitzdWIgVW5zYWZlVG9O
YXRpdmUKK3sKKyAgICBteSAoJGludGVyZmFjZSwgJGNvbnRleHQsICR2YWx1ZSwgJGNvbmRpdGlv
bmFsLCAkc3RhdGVQb2ludGVyLCAkc3RhdGVSZWZlcmVuY2UsICR0aGlzT2JqZWN0UmVmZXJlbmNl
KSA9IEBfOworCisgICAgYXNzZXJ0KCJJbnZhbGlkIGNvbnRleHQgdHlwZSIpIGlmICFJc1ZhbGlk
Q29udGV4dEZvckpTVmFsdWVUb05hdGl2ZSgkY29udGV4dCk7CisKKyAgICBteSAkdHlwZSA9ICRj
b250ZXh0LT50eXBlOworCisgICAgIyBGSVhNRTogUmVtb3ZlIHRoZXNlIDMgdmFyaWFibGVzIHdo
ZW4gYWxsIEpTVmFsdWVUb05hdGl2ZSB1c2UgcmVmZXJlbmNlcy4KKyAgICAkc3RhdGVQb2ludGVy
ID0gInN0YXRlIiB1bmxlc3MgJHN0YXRlUG9pbnRlcjsKKyAgICAkc3RhdGVSZWZlcmVuY2UgPSAi
KnN0YXRlIiB1bmxlc3MgJHN0YXRlUmVmZXJlbmNlOworICAgICR0aGlzT2JqZWN0UmVmZXJlbmNl
ID0gIipjYXN0ZWRUaGlzIiB1bmxlc3MgJHRoaXNPYmplY3RSZWZlcmVuY2U7CisKKyAgICBpZiAo
SlNWYWx1ZVRvTmF0aXZlSXNIYW5kbGVkQnlET01Db252ZXJ0KCR0eXBlLCAkY29udGV4dCkpIHsK
KyAgICAgICAgQWRkVG9JbXBsSW5jbHVkZXMoIkRPTUpJVElETENvbnZlcnQuaCIpOworICAgICAg
ICBBZGRUb0ltcGxJbmNsdWRlc0ZvcklETFR5cGUoJHR5cGUsICRjb25kaXRpb25hbCk7CisKKyAg
ICAgICAgbXkgJElETFR5cGUgPSBHZXRJRExUeXBlKCRpbnRlcmZhY2UsICR0eXBlKTsKKworICAg
ICAgICBteSBAY29udmVyc2lvbkFyZ3VtZW50cyA9ICgpOworICAgICAgICBwdXNoKEBjb252ZXJz
aW9uQXJndW1lbnRzLCAiJHN0YXRlUmVmZXJlbmNlIik7CisgICAgICAgIHB1c2goQGNvbnZlcnNp
b25Bcmd1bWVudHMsICIkdmFsdWUiKTsKKworICAgICAgICBteSBAY29udmVyc2lvblN0YXRpY0Fy
Z3VtZW50cyA9ICgpOworICAgICAgICBwdXNoKEBjb252ZXJzaW9uU3RhdGljQXJndW1lbnRzLCBH
ZXRJbnRlZ2VyQ29udmVyc2lvbkNvbmZpZ3VyYXRpb24oJGNvbnRleHQpKSBpZiAkY29kZUdlbmVy
YXRvci0+SXNJbnRlZ2VyVHlwZSgkdHlwZSk7CisgICAgICAgIHB1c2goQGNvbnZlcnNpb25TdGF0
aWNBcmd1bWVudHMsIEdldFN0cmluZ0NvbnZlcnNpb25Db25maWd1cmF0aW9uKCRjb250ZXh0KSkg
aWYgJGNvZGVHZW5lcmF0b3ItPklzU3RyaW5nVHlwZSgkdHlwZSk7CisKKyAgICAgICAgaWYgKHNj
YWxhcihAY29udmVyc2lvblN0YXRpY0FyZ3VtZW50cykgPiAwKSB7CisgICAgICAgICAgICByZXR1
cm4gKCJET01KSVQ6OkRpcmVjdENvbnZlcnRlcjwkSURMVHlwZT46OmRpcmVjdENvbnZlcnQ8IiAu
IGpvaW4oIiwgIiwgQGNvbnZlcnNpb25TdGF0aWNBcmd1bWVudHMpIC4gIj4oIiAuIGpvaW4oIiwg
IiwgQGNvbnZlcnNpb25Bcmd1bWVudHMpIC4gIikiLCAxKTsKKyAgICAgICAgfQorICAgICAgICBy
ZXR1cm4gKCJET01KSVQ6OkRpcmVjdENvbnZlcnRlcjwkSURMVHlwZT46OmRpcmVjdENvbnZlcnQo
IiAuIGpvaW4oIiwgIiwgQGNvbnZlcnNpb25Bcmd1bWVudHMpIC4gIikiLCAxKTsKKyAgICB9CisK
KyAgICAjIEZJWE1FOiBFeHRlbmQgbW9yZS4KKyAgICBkaWUgIk9ubHkgRE9NQ29udmVydCBzdXBw
b3J0ZWQgb25lIGlzIG5vdyBzdXBwb3J0ZWQgaW4gRE9NSklUIHVuc2FmZS4iOworfQorCiBzdWIg
TmF0aXZlVG9KU1ZhbHVlSXNIYW5kbGVkQnlET01Db252ZXJ0CiB7CiAgICAgbXkgKCR0eXBlKSA9
IEBfOwpAQCAtNTUyOSw3ICs1Njc3LDEwIEBAIHN1YiBHZW5lcmF0ZUhhc2hUYWJsZVZhbHVlQXJy
YXkKICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiI2lmICR7Y29uZGl0aW9uYWxTdHJp
bmd9XG4iKTsKICAgICAgICAgfQogCi0gICAgICAgIGlmICgiQCRzcGVjaWFsc1skaV0iID1+IG0v
RnVuY3Rpb24vKSB7CisgICAgICAgIGlmICgiQCRzcGVjaWFsc1skaV0iID1+IG0vRE9NSklURnVu
Y3Rpb24vKSB7CisgICAgICAgICAgICAkZmlyc3RUYXJnZXRUeXBlID0gInN0YXRpY19jYXN0PE5h
dGl2ZUZ1bmN0aW9uPiI7CisgICAgICAgICAgICAkc2Vjb25kVGFyZ2V0VHlwZSA9ICJzdGF0aWNf
Y2FzdDxjb25zdCBKU0M6OkRPTUpJVDo6U2lnbmF0dXJlKj4iOworICAgICAgICB9IGVsc2lmICgi
QCRzcGVjaWFsc1skaV0iID1+IG0vRnVuY3Rpb24vKSB7CiAgICAgICAgICAgICAkZmlyc3RUYXJn
ZXRUeXBlID0gInN0YXRpY19jYXN0PE5hdGl2ZUZ1bmN0aW9uPiI7CiAgICAgICAgIH0gZWxzaWYg
KCJAJHNwZWNpYWxzWyRpXSIgPX4gbS9CdWlsdGluLykgewogICAgICAgICAgICAgJGZpcnN0VGFy
Z2V0VHlwZSA9ICJzdGF0aWNfY2FzdDxCdWlsdGluR2VuZXJhdG9yPiI7CkBAIC02MTI3LDYgKzYy
NzgsOSBAQCBzdWIgQ29tcHV0ZUZ1bmN0aW9uU3BlY2lhbAogICAgIGVsc2UgewogICAgICAgICBw
dXNoKEBzcGVjaWFscywgIkpTQzo6RnVuY3Rpb24iKTsKICAgICB9CisgICAgaWYgKCRmdW5jdGlv
bi0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkRPTUpJVCJ9KSB7CisgICAgICAgIHB1c2goQHNwZWNp
YWxzLCAiRE9NSklURnVuY3Rpb24iKSBpZiAkY29kZUdlbmVyYXRvci0+RXh0ZW5kZWRBdHRyaWJ1
dGVDb250YWlucygkZnVuY3Rpb24tPmV4dGVuZGVkQXR0cmlidXRlcy0+e0RPTUpJVH0sICJTaWdu
YXR1cmUiKTsKKyAgICB9CiAgICAgcmV0dXJuIChAc3BlY2lhbHMgPiAwKSA/IGpvaW4oIiB8ICIs
IEBzcGVjaWFscykgOiAiMCI7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvSURMQXR0cmlidXRlcy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL0lETEF0dHJpYnV0ZXMudHh0CmluZGV4IGEyZTc1NDE1OTFjZTNmNTc2ZTdhN2QyZDZk
MmZjNjJkZGRmYTA0MWMuLjE0NmMyYmNjOGUwZjM3NmQ1ZGNjNTQzNTM5MDgzMzU5YzcyZGJlNjMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvSURMQXR0cmlidXRl
cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9JRExBdHRyaWJ1dGVz
LnR4dApAQCAtNTIsNyArNTIsNyBAQCBDdXN0b21QdXRGdW5jdGlvbgogQ3VzdG9tU2V0UHJvdG90
eXBlCiBDdXN0b21TZXR0ZXIKIEN1c3RvbVRvSlNPYmplY3QKLURPTUpJVAorRE9NSklUPXxTaWdu
YXR1cmUKIERvTm90Q2hlY2tDb25zdGFudHMKIERvTm90Q2hlY2tTZWN1cml0eQogRG9Ob3RDaGVj
a1NlY3VyaXR5T25HZXR0ZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RET01KSVQuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdERPTUpJVC5jcHAKaW5kZXggMjQ4OGRmMjZiZGI1MmI1MGNk
NjdkNjBjY2E1NjViMjY1MzY3ZTRjZi4uNDFmYjUyNTNjMzFkNjk2Mzk5NThiYTBiN2RmN2IxNzI5
NzBjZjRkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdERPTUpJVC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdERPTUpJVC5jcHAKQEAgLTIxLDEwICsyMSwxNyBAQAogI2luY2x1ZGUg
ImNvbmZpZy5oIgogI2luY2x1ZGUgIkpTVGVzdERPTUpJVC5oIgogCisjaW5jbHVkZSAiRE9NSklU
Q2hlY2tET00uaCIKKyNpbmNsdWRlICJET01KSVRJRExDb252ZXJ0LmgiCisjaW5jbHVkZSAiRE9N
SklUSURMVHlwZS5oIgorI2luY2x1ZGUgIkRPTUpJVElETFR5cGVGaWx0ZXIuaCIKKyNpbmNsdWRl
ICJFeGNlcHRpb25Db2RlLmgiCiAjaW5jbHVkZSAiSlNCeXRlU3RyaW5nLmgiCiAjaW5jbHVkZSAi
SlNET01CaW5kaW5nLmgiCiAjaW5jbHVkZSAiSlNET01Db25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUg
IkpTRE9NQ29udmVydC5oIgorI2luY2x1ZGUgPGludGVycHJldGVyL0ZyYW1lVHJhY2Vycy5oPgor
I2luY2x1ZGUgPHJ1bnRpbWUvRXJyb3IuaD4KICNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+CiAjaW5j
bHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAKQEAgLTMyLDYgKzM5LDExIEBAIHVzaW5nIG5h
bWVzcGFjZSBKU0M7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorLy8gRnVuY3Rpb25zCisKK0pT
Qzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RET01KSVRQcm90b3R5cGVGdW5j
dGlvbkdldEF0dHJpYnV0ZShKU0M6OkV4ZWNTdGF0ZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIHVuc2FmZUpzVGVzdERPTUpJVFByb3RvdHlwZUZ1bmN0aW9uR2V0QXR0cmli
dXRlKEpTQzo6RXhlY1N0YXRlKiwgRE9NSklUOjpJRExKU0FyZ3VtZW50VHlwZTxJRExET01TdHJp
bmc+KTsKKwogLy8gQXR0cmlidXRlcwogCiBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdERPTUpJ
VEFueUF0dHIoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3Bl
cnR5TmFtZSk7CkBAIC03Miw2ICs4NCw3IEBAIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0RE9N
SklUTm9kZU51bGxhYmxlQXR0cihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTCiBKU0M6
OkVuY29kZWRKU1ZhbHVlIGpzVGVzdERPTUpJVENvbnN0cnVjdG9yKEpTQzo6RXhlY1N0YXRlKiwg
SlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwogYm9vbCBzZXRKU1Rlc3RE
T01KSVRDb25zdHJ1Y3RvcihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpT
Qzo6RW5jb2RlZEpTVmFsdWUpOwogCitzdGF0aWMgY29uc3QgSlNDOjpET01KSVQ6OlNpZ25hdHVy
ZSBET01KSVRTaWduYXR1cmVGb3JUZXN0RE9NSklUR2V0QXR0cmlidXRlKCh1aW50cHRyX3QpdW5z
YWZlSnNUZXN0RE9NSklUUHJvdG90eXBlRnVuY3Rpb25HZXRBdHRyaWJ1dGUsIERPTUpJVDo6Y2hl
Y2tET008VGVzdERPTUpJVD4sICZKU1Rlc3RET01KSVQ6OnNfaW5mbywgSlNDOjpET01KSVQ6OkVm
ZmVjdDo6Zm9yUmVhZChKU0M6OkRPTUpJVDo6SGVhcFJhbmdlOjp0b3AoKSksIERPTUpJVDo6SURM
UmVzdWx0VHlwZUZpbHRlcjxJRExOdWxsYWJsZTxJRExET01TdHJpbmc+PiwgRE9NSklUOjpJRExB
cmd1bWVudFR5cGVGaWx0ZXI8SURMRE9NU3RyaW5nPik7CiBjbGFzcyBKU1Rlc3RET01KSVRQcm90
b3R5cGUgOiBwdWJsaWMgSlNDOjpKU05vbkZpbmFsT2JqZWN0IHsKIHB1YmxpYzoKICAgICB1c2lu
ZyBCYXNlID0gSlNDOjpKU05vbkZpbmFsT2JqZWN0OwpAQCAtMTUzLDYgKzE2Niw3IEBAIHN0YXRp
YyBjb25zdCBIYXNoVGFibGVWYWx1ZSBKU1Rlc3RET01KSVRQcm90b3R5cGVUYWJsZVZhbHVlc1td
ID0KICAgICB7ICJieXRlU3RyaW5nTnVsbGFibGVBdHRyIiwgUmVhZE9ubHkgfCBDdXN0b21BY2Nl
c3NvciB8IERPTUpJVEF0dHJpYnV0ZSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19j
YXN0PERPTUpJVEdldHRlclNldHRlckdlbmVyYXRvcj4oZG9tSklUR2V0dGVyU2V0dGVyRm9yVGVz
dERPTUpJVEJ5dGVTdHJpbmdOdWxsYWJsZUF0dHIpLCAoaW50cHRyX3QpICgwKSB9IH0sCiAgICAg
eyAidXN2U3RyaW5nTnVsbGFibGVBdHRyIiwgUmVhZE9ubHkgfCBDdXN0b21BY2Nlc3NvciB8IERP
TUpJVEF0dHJpYnV0ZSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PERPTUpJ
VEdldHRlclNldHRlckdlbmVyYXRvcj4oZG9tSklUR2V0dGVyU2V0dGVyRm9yVGVzdERPTUpJVFVz
dlN0cmluZ051bGxhYmxlQXR0ciksIChpbnRwdHJfdCkgKDApIH0gfSwKICAgICB7ICJub2RlTnVs
bGFibGVBdHRyIiwgUmVhZE9ubHkgfCBDdXN0b21BY2Nlc3NvciB8IERPTUpJVEF0dHJpYnV0ZSwg
Tm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PERPTUpJVEdldHRlclNldHRlckdl
bmVyYXRvcj4oZG9tSklUR2V0dGVyU2V0dGVyRm9yVGVzdERPTUpJVE5vZGVOdWxsYWJsZUF0dHIp
LCAoaW50cHRyX3QpICgwKSB9IH0sCisgICAgeyAiZ2V0QXR0cmlidXRlIiwgSlNDOjpGdW5jdGlv
biB8IERPTUpJVEZ1bmN0aW9uLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8
TmF0aXZlRnVuY3Rpb24+KGpzVGVzdERPTUpJVFByb3RvdHlwZUZ1bmN0aW9uR2V0QXR0cmlidXRl
KSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxjb25zdCBET01KSVQ6OlNpZ25hdHVyZSo+KERPTUpJ
VFNpZ25hdHVyZUZvclRlc3RET01KSVRHZXRBdHRyaWJ1dGUpIH0gfSwKIH07CiAKIGNvbnN0IENs
YXNzSW5mbyBKU1Rlc3RET01KSVRQcm90b3R5cGU6OnNfaW5mbyA9IHsgIlRlc3RET01KSVRQcm90
b3R5cGUiLCAmQmFzZTo6c19pbmZvLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdERPTUpJ
VFByb3RvdHlwZSkgfTsKQEAgLTE4NSw2ICsxOTksMTEgQEAgdGVtcGxhdGU8PiBpbmxpbmUgSlNU
ZXN0RE9NSklUKiBCaW5kaW5nQ2FsbGVyPEpTVGVzdERPTUpJVD46OmNhc3RGb3JBdHRyaWJ1dGUo
RXgKICAgICByZXR1cm4ganNEeW5hbWljRG93bmNhc3Q8SlNUZXN0RE9NSklUKj4oSlNWYWx1ZTo6
ZGVjb2RlKHRoaXNWYWx1ZSkpOwogfQogCit0ZW1wbGF0ZTw+IGlubGluZSBKU1Rlc3RET01KSVQq
IEJpbmRpbmdDYWxsZXI8SlNUZXN0RE9NSklUPjo6Y2FzdEZvck9wZXJhdGlvbihFeGVjU3RhdGUm
IHN0YXRlKQoreworICAgIHJldHVybiBqc0R5bmFtaWNEb3duY2FzdDxKU1Rlc3RET01KSVQqPihz
dGF0ZS50aGlzVmFsdWUoKSk7Cit9CisKIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RET01K
SVRBbnlBdHRyR2V0dGVyKEV4ZWNTdGF0ZSYsIEpTVGVzdERPTUpJVCYsIFRocm93U2NvcGUmIHRo
cm93U2NvcGUpOwogCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RET01KSVRBbnlBdHRyKEV4ZWNTdGF0
ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQpAQCAtMjAy
LDcgKzIyMSw3IEBAIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RET01KSVRBbnlBdHRyR2V0
dGVyKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVGVzdERPTUpJVCYKIH0KIAogVGVzdERPTUpJVEFueUF0
dHJET01KSVQ6OlRlc3RET01KSVRBbnlBdHRyRE9NSklUKCkKLSAgICA6IEpTQzo6RE9NSklUOjpH
ZXR0ZXJTZXR0ZXIoanNUZXN0RE9NSklUQW55QXR0ciwgbnVsbHB0ciwgSlNUZXN0RE9NSklUOjpp
bmZvKCksIEpTQzo6U3BlY0hlYXBUb3ApCisgICAgOiBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVy
KGpzVGVzdERPTUpJVEFueUF0dHIsIG51bGxwdHIsIEpTVGVzdERPTUpJVDo6aW5mbygpLCBET01K
SVQ6OklETFJlc3VsdFR5cGVGaWx0ZXI8SURMQW55PikKIHsKIH0KIApAQCAtMjI5LDcgKzI0OCw3
IEBAIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RET01KSVRCb29sZWFuQXR0ckdldHRlcihF
eGVjU3RhdGUmIHN0YXRlLCBKU1Rlc3RET01KCiB9CiAKIFRlc3RET01KSVRCb29sZWFuQXR0ckRP
TUpJVDo6VGVzdERPTUpJVEJvb2xlYW5BdHRyRE9NSklUKCkKLSAgICA6IEpTQzo6RE9NSklUOjpH
ZXR0ZXJTZXR0ZXIoanNUZXN0RE9NSklUQm9vbGVhbkF0dHIsIG51bGxwdHIsIEpTVGVzdERPTUpJ
VDo6aW5mbygpLCBKU0M6OlNwZWNCb29sZWFuKQorICAgIDogSlNDOjpET01KSVQ6OkdldHRlclNl
dHRlcihqc1Rlc3RET01KSVRCb29sZWFuQXR0ciwgbnVsbHB0ciwgSlNUZXN0RE9NSklUOjppbmZv
KCksIERPTUpJVDo6SURMUmVzdWx0VHlwZUZpbHRlcjxJRExCb29sZWFuPikKIHsKIH0KIApAQCAt
MjU2LDcgKzI3NSw3IEBAIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RET01KSVRCeXRlQXR0
ckdldHRlcihFeGVjU3RhdGUmIHN0YXRlLCBKU1Rlc3RET01KSVQmCiB9CiAKIFRlc3RET01KSVRC
eXRlQXR0ckRPTUpJVDo6VGVzdERPTUpJVEJ5dGVBdHRyRE9NSklUKCkKLSAgICA6IEpTQzo6RE9N
SklUOjpHZXR0ZXJTZXR0ZXIoanNUZXN0RE9NSklUQnl0ZUF0dHIsIG51bGxwdHIsIEpTVGVzdERP
TUpJVDo6aW5mbygpLCBKU0M6OlNwZWNJbnQzMk9ubHkpCisgICAgOiBKU0M6OkRPTUpJVDo6R2V0
dGVyU2V0dGVyKGpzVGVzdERPTUpJVEJ5dGVBdHRyLCBudWxscHRyLCBKU1Rlc3RET01KSVQ6Omlu
Zm8oKSwgRE9NSklUOjpJRExSZXN1bHRUeXBlRmlsdGVyPElETEJ5dGU+KQogewogfQogCkBAIC0y
ODMsNyArMzAyLDcgQEAgc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdERPTUpJVE9jdGV0QXR0
ckdldHRlcihFeGVjU3RhdGUmIHN0YXRlLCBKU1Rlc3RET01KSVQKIH0KIAogVGVzdERPTUpJVE9j
dGV0QXR0ckRPTUpJVDo6VGVzdERPTUpJVE9jdGV0QXR0ckRPTUpJVCgpCi0gICAgOiBKU0M6OkRP
TUpJVDo6R2V0dGVyU2V0dGVyKGpzVGVzdERPTUpJVE9jdGV0QXR0ciwgbnVsbHB0ciwgSlNUZXN0
RE9NSklUOjppbmZvKCksIEpTQzo6U3BlY0ludDMyT25seSkKKyAgICA6IEpTQzo6RE9NSklUOjpH
ZXR0ZXJTZXR0ZXIoanNUZXN0RE9NSklUT2N0ZXRBdHRyLCBudWxscHRyLCBKU1Rlc3RET01KSVQ6
OmluZm8oKSwgRE9NSklUOjpJRExSZXN1bHRUeXBlRmlsdGVyPElETE9jdGV0PikKIHsKIH0KIApA
QCAtMzEwLDcgKzMyOSw3IEBAIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RET01KSVRTaG9y
dEF0dHJHZXR0ZXIoRXhlY1N0YXRlJiBzdGF0ZSwgSlNUZXN0RE9NSklUCiB9CiAKIFRlc3RET01K
SVRTaG9ydEF0dHJET01KSVQ6OlRlc3RET01KSVRTaG9ydEF0dHJET01KSVQoKQotICAgIDogSlND
OjpET01KSVQ6OkdldHRlclNldHRlcihqc1Rlc3RET01KSVRTaG9ydEF0dHIsIG51bGxwdHIsIEpT
VGVzdERPTUpJVDo6aW5mbygpLCBKU0M6OlNwZWNJbnQzMk9ubHkpCisgICAgOiBKU0M6OkRPTUpJ
VDo6R2V0dGVyU2V0dGVyKGpzVGVzdERPTUpJVFNob3J0QXR0ciwgbnVsbHB0ciwgSlNUZXN0RE9N
SklUOjppbmZvKCksIERPTUpJVDo6SURMUmVzdWx0VHlwZUZpbHRlcjxJRExTaG9ydD4pCiB7CiB9
CiAKQEAgLTMzNyw3ICszNTYsNyBAQCBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0RE9NSklU
VW5zaWduZWRTaG9ydEF0dHJHZXR0ZXIoRXhlY1N0YXRlJiBzdGF0ZSwgSlNUZQogfQogCiBUZXN0
RE9NSklUVW5zaWduZWRTaG9ydEF0dHJET01KSVQ6OlRlc3RET01KSVRVbnNpZ25lZFNob3J0QXR0
ckRPTUpJVCgpCi0gICAgOiBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVyKGpzVGVzdERPTUpJVFVu
c2lnbmVkU2hvcnRBdHRyLCBudWxscHRyLCBKU1Rlc3RET01KSVQ6OmluZm8oKSwgSlNDOjpTcGVj
SW50MzJPbmx5KQorICAgIDogSlNDOjpET01KSVQ6OkdldHRlclNldHRlcihqc1Rlc3RET01KSVRV
bnNpZ25lZFNob3J0QXR0ciwgbnVsbHB0ciwgSlNUZXN0RE9NSklUOjppbmZvKCksIERPTUpJVDo6
SURMUmVzdWx0VHlwZUZpbHRlcjxJRExVbnNpZ25lZFNob3J0PikKIHsKIH0KIApAQCAtMzY0LDcg
KzM4Myw3IEBAIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RET01KSVRMb25nQXR0ckdldHRl
cihFeGVjU3RhdGUmIHN0YXRlLCBKU1Rlc3RET01KSVQmCiB9CiAKIFRlc3RET01KSVRMb25nQXR0
ckRPTUpJVDo6VGVzdERPTUpJVExvbmdBdHRyRE9NSklUKCkKLSAgICA6IEpTQzo6RE9NSklUOjpH
ZXR0ZXJTZXR0ZXIoanNUZXN0RE9NSklUTG9uZ0F0dHIsIG51bGxwdHIsIEpTVGVzdERPTUpJVDo6
aW5mbygpLCBKU0M6OlNwZWNJbnQzMk9ubHkpCisgICAgOiBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0
dGVyKGpzVGVzdERPTUpJVExvbmdBdHRyLCBudWxscHRyLCBKU1Rlc3RET01KSVQ6OmluZm8oKSwg
RE9NSklUOjpJRExSZXN1bHRUeXBlRmlsdGVyPElETExvbmc+KQogewogfQogCkBAIC0zOTEsNyAr
NDEwLDcgQEAgc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdERPTUpJVFVuc2lnbmVkTG9uZ0F0
dHJHZXR0ZXIoRXhlY1N0YXRlJiBzdGF0ZSwgSlNUZXMKIH0KIAogVGVzdERPTUpJVFVuc2lnbmVk
TG9uZ0F0dHJET01KSVQ6OlRlc3RET01KSVRVbnNpZ25lZExvbmdBdHRyRE9NSklUKCkKLSAgICA6
IEpTQzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIoanNUZXN0RE9NSklUVW5zaWduZWRMb25nQXR0ciwg
bnVsbHB0ciwgSlNUZXN0RE9NSklUOjppbmZvKCksIEpTQzo6U3BlY0J5dGVjb2RlTnVtYmVyKQor
ICAgIDogSlNDOjpET01KSVQ6OkdldHRlclNldHRlcihqc1Rlc3RET01KSVRVbnNpZ25lZExvbmdB
dHRyLCBudWxscHRyLCBKU1Rlc3RET01KSVQ6OmluZm8oKSwgRE9NSklUOjpJRExSZXN1bHRUeXBl
RmlsdGVyPElETFVuc2lnbmVkTG9uZz4pCiB7CiB9CiAKQEAgLTQxOCw3ICs0MzcsNyBAQCBzdGF0
aWMgaW5saW5lIEpTVmFsdWUganNUZXN0RE9NSklUTG9uZ0xvbmdBdHRyR2V0dGVyKEV4ZWNTdGF0
ZSYgc3RhdGUsIEpTVGVzdERPTQogfQogCiBUZXN0RE9NSklUTG9uZ0xvbmdBdHRyRE9NSklUOjpU
ZXN0RE9NSklUTG9uZ0xvbmdBdHRyRE9NSklUKCkKLSAgICA6IEpTQzo6RE9NSklUOjpHZXR0ZXJT
ZXR0ZXIoanNUZXN0RE9NSklUTG9uZ0xvbmdBdHRyLCBudWxscHRyLCBKU1Rlc3RET01KSVQ6Omlu
Zm8oKSwgSlNDOjpTcGVjQnl0ZWNvZGVOdW1iZXIpCisgICAgOiBKU0M6OkRPTUpJVDo6R2V0dGVy
U2V0dGVyKGpzVGVzdERPTUpJVExvbmdMb25nQXR0ciwgbnVsbHB0ciwgSlNUZXN0RE9NSklUOjpp
bmZvKCksIERPTUpJVDo6SURMUmVzdWx0VHlwZUZpbHRlcjxJRExMb25nTG9uZz4pCiB7CiB9CiAK
QEAgLTQ0NSw3ICs0NjQsNyBAQCBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0RE9NSklUVW5z
aWduZWRMb25nTG9uZ0F0dHJHZXR0ZXIoRXhlY1N0YXRlJiBzdGF0ZSwgSgogfQogCiBUZXN0RE9N
SklUVW5zaWduZWRMb25nTG9uZ0F0dHJET01KSVQ6OlRlc3RET01KSVRVbnNpZ25lZExvbmdMb25n
QXR0ckRPTUpJVCgpCi0gICAgOiBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVyKGpzVGVzdERPTUpJ
VFVuc2lnbmVkTG9uZ0xvbmdBdHRyLCBudWxscHRyLCBKU1Rlc3RET01KSVQ6OmluZm8oKSwgSlND
OjpTcGVjQnl0ZWNvZGVOdW1iZXIpCisgICAgOiBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVyKGpz
VGVzdERPTUpJVFVuc2lnbmVkTG9uZ0xvbmdBdHRyLCBudWxscHRyLCBKU1Rlc3RET01KSVQ6Omlu
Zm8oKSwgRE9NSklUOjpJRExSZXN1bHRUeXBlRmlsdGVyPElETFVuc2lnbmVkTG9uZ0xvbmc+KQog
ewogfQogCkBAIC00NzIsNyArNDkxLDcgQEAgc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdERP
TUpJVEZsb2F0QXR0ckdldHRlcihFeGVjU3RhdGUmIHN0YXRlLCBKU1Rlc3RET01KSVQKIH0KIAog
VGVzdERPTUpJVEZsb2F0QXR0ckRPTUpJVDo6VGVzdERPTUpJVEZsb2F0QXR0ckRPTUpJVCgpCi0g
ICAgOiBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVyKGpzVGVzdERPTUpJVEZsb2F0QXR0ciwgbnVs
bHB0ciwgSlNUZXN0RE9NSklUOjppbmZvKCksIEpTQzo6U3BlY0J5dGVjb2RlTnVtYmVyKQorICAg
IDogSlNDOjpET01KSVQ6OkdldHRlclNldHRlcihqc1Rlc3RET01KSVRGbG9hdEF0dHIsIG51bGxw
dHIsIEpTVGVzdERPTUpJVDo6aW5mbygpLCBET01KSVQ6OklETFJlc3VsdFR5cGVGaWx0ZXI8SURM
RmxvYXQ+KQogewogfQogCkBAIC00OTksNyArNTE4LDcgQEAgc3RhdGljIGlubGluZSBKU1ZhbHVl
IGpzVGVzdERPTUpJVFVucmVzdHJpY3RlZEZsb2F0QXR0ckdldHRlcihFeGVjU3RhdGUmIHN0YXRl
LAogfQogCiBUZXN0RE9NSklUVW5yZXN0cmljdGVkRmxvYXRBdHRyRE9NSklUOjpUZXN0RE9NSklU
VW5yZXN0cmljdGVkRmxvYXRBdHRyRE9NSklUKCkKLSAgICA6IEpTQzo6RE9NSklUOjpHZXR0ZXJT
ZXR0ZXIoanNUZXN0RE9NSklUVW5yZXN0cmljdGVkRmxvYXRBdHRyLCBudWxscHRyLCBKU1Rlc3RE
T01KSVQ6OmluZm8oKSwgSlNDOjpTcGVjQnl0ZWNvZGVOdW1iZXIpCisgICAgOiBKU0M6OkRPTUpJ
VDo6R2V0dGVyU2V0dGVyKGpzVGVzdERPTUpJVFVucmVzdHJpY3RlZEZsb2F0QXR0ciwgbnVsbHB0
ciwgSlNUZXN0RE9NSklUOjppbmZvKCksIERPTUpJVDo6SURMUmVzdWx0VHlwZUZpbHRlcjxJRExV
bnJlc3RyaWN0ZWRGbG9hdD4pCiB7CiB9CiAKQEAgLTUyNiw3ICs1NDUsNyBAQCBzdGF0aWMgaW5s
aW5lIEpTVmFsdWUganNUZXN0RE9NSklURG91YmxlQXR0ckdldHRlcihFeGVjU3RhdGUmIHN0YXRl
LCBKU1Rlc3RET01KSQogfQogCiBUZXN0RE9NSklURG91YmxlQXR0ckRPTUpJVDo6VGVzdERPTUpJ
VERvdWJsZUF0dHJET01KSVQoKQotICAgIDogSlNDOjpET01KSVQ6OkdldHRlclNldHRlcihqc1Rl
c3RET01KSVREb3VibGVBdHRyLCBudWxscHRyLCBKU1Rlc3RET01KSVQ6OmluZm8oKSwgSlNDOjpT
cGVjQnl0ZWNvZGVOdW1iZXIpCisgICAgOiBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVyKGpzVGVz
dERPTUpJVERvdWJsZUF0dHIsIG51bGxwdHIsIEpTVGVzdERPTUpJVDo6aW5mbygpLCBET01KSVQ6
OklETFJlc3VsdFR5cGVGaWx0ZXI8SURMRG91YmxlPikKIHsKIH0KIApAQCAtNTUzLDcgKzU3Miw3
IEBAIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RET01KSVRVbnJlc3RyaWN0ZWREb3VibGVB
dHRyR2V0dGVyKEV4ZWNTdGF0ZSYgc3RhdGUsCiB9CiAKIFRlc3RET01KSVRVbnJlc3RyaWN0ZWRE
b3VibGVBdHRyRE9NSklUOjpUZXN0RE9NSklUVW5yZXN0cmljdGVkRG91YmxlQXR0ckRPTUpJVCgp
Ci0gICAgOiBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVyKGpzVGVzdERPTUpJVFVucmVzdHJpY3Rl
ZERvdWJsZUF0dHIsIG51bGxwdHIsIEpTVGVzdERPTUpJVDo6aW5mbygpLCBKU0M6OlNwZWNCeXRl
Y29kZU51bWJlcikKKyAgICA6IEpTQzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIoanNUZXN0RE9NSklU
VW5yZXN0cmljdGVkRG91YmxlQXR0ciwgbnVsbHB0ciwgSlNUZXN0RE9NSklUOjppbmZvKCksIERP
TUpJVDo6SURMUmVzdWx0VHlwZUZpbHRlcjxJRExVbnJlc3RyaWN0ZWREb3VibGU+KQogewogfQog
CkBAIC01ODAsNyArNTk5LDcgQEAgc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdERPTUpJVERv
bVN0cmluZ0F0dHJHZXR0ZXIoRXhlY1N0YXRlJiBzdGF0ZSwgSlNUZXN0RE8KIH0KIAogVGVzdERP
TUpJVERvbVN0cmluZ0F0dHJET01KSVQ6OlRlc3RET01KSVREb21TdHJpbmdBdHRyRE9NSklUKCkK
LSAgICA6IEpTQzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIoanNUZXN0RE9NSklURG9tU3RyaW5nQXR0
ciwgbnVsbHB0ciwgSlNUZXN0RE9NSklUOjppbmZvKCksIEpTQzo6U3BlY1N0cmluZykKKyAgICA6
IEpTQzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIoanNUZXN0RE9NSklURG9tU3RyaW5nQXR0ciwgbnVs
bHB0ciwgSlNUZXN0RE9NSklUOjppbmZvKCksIERPTUpJVDo6SURMUmVzdWx0VHlwZUZpbHRlcjxJ
RExET01TdHJpbmc+KQogewogfQogCkBAIC02MDcsNyArNjI2LDcgQEAgc3RhdGljIGlubGluZSBK
U1ZhbHVlIGpzVGVzdERPTUpJVEJ5dGVTdHJpbmdBdHRyR2V0dGVyKEV4ZWNTdGF0ZSYgc3RhdGUs
IEpTVGVzdEQKIH0KIAogVGVzdERPTUpJVEJ5dGVTdHJpbmdBdHRyRE9NSklUOjpUZXN0RE9NSklU
Qnl0ZVN0cmluZ0F0dHJET01KSVQoKQotICAgIDogSlNDOjpET01KSVQ6OkdldHRlclNldHRlcihq
c1Rlc3RET01KSVRCeXRlU3RyaW5nQXR0ciwgbnVsbHB0ciwgSlNUZXN0RE9NSklUOjppbmZvKCks
IEpTQzo6U3BlY1N0cmluZykKKyAgICA6IEpTQzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIoanNUZXN0
RE9NSklUQnl0ZVN0cmluZ0F0dHIsIG51bGxwdHIsIEpTVGVzdERPTUpJVDo6aW5mbygpLCBET01K
SVQ6OklETFJlc3VsdFR5cGVGaWx0ZXI8SURMQnl0ZVN0cmluZz4pCiB7CiB9CiAKQEAgLTYzNCw3
ICs2NTMsNyBAQCBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0RE9NSklUVXN2U3RyaW5nQXR0
ckdldHRlcihFeGVjU3RhdGUmIHN0YXRlLCBKU1Rlc3RETwogfQogCiBUZXN0RE9NSklUVXN2U3Ry
aW5nQXR0ckRPTUpJVDo6VGVzdERPTUpJVFVzdlN0cmluZ0F0dHJET01KSVQoKQotICAgIDogSlND
OjpET01KSVQ6OkdldHRlclNldHRlcihqc1Rlc3RET01KSVRVc3ZTdHJpbmdBdHRyLCBudWxscHRy
LCBKU1Rlc3RET01KSVQ6OmluZm8oKSwgSlNDOjpTcGVjU3RyaW5nKQorICAgIDogSlNDOjpET01K
SVQ6OkdldHRlclNldHRlcihqc1Rlc3RET01KSVRVc3ZTdHJpbmdBdHRyLCBudWxscHRyLCBKU1Rl
c3RET01KSVQ6OmluZm8oKSwgRE9NSklUOjpJRExSZXN1bHRUeXBlRmlsdGVyPElETFVTVlN0cmlu
Zz4pCiB7CiB9CiAKQEAgLTY2MSw3ICs2ODAsNyBAQCBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNU
ZXN0RE9NSklUTm9kZUF0dHJHZXR0ZXIoRXhlY1N0YXRlJiBzdGF0ZSwgSlNUZXN0RE9NSklUJgog
fQogCiBUZXN0RE9NSklUTm9kZUF0dHJET01KSVQ6OlRlc3RET01KSVROb2RlQXR0ckRPTUpJVCgp
Ci0gICAgOiBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVyKGpzVGVzdERPTUpJVE5vZGVBdHRyLCBu
dWxscHRyLCBKU1Rlc3RET01KSVQ6OmluZm8oKSwgU3BlY0hlYXBUb3ApCisgICAgOiBKU0M6OkRP
TUpJVDo6R2V0dGVyU2V0dGVyKGpzVGVzdERPTUpJVE5vZGVBdHRyLCBudWxscHRyLCBKU1Rlc3RE
T01KSVQ6OmluZm8oKSwgRE9NSklUOjpJRExSZXN1bHRUeXBlRmlsdGVyPElETEludGVyZmFjZTxO
b2RlPj4pCiB7CiB9CiAKQEAgLTY4OCw3ICs3MDcsNyBAQCBzdGF0aWMgaW5saW5lIEpTVmFsdWUg
anNUZXN0RE9NSklUQm9vbGVhbk51bGxhYmxlQXR0ckdldHRlcihFeGVjU3RhdGUmIHN0YXRlLCBK
UwogfQogCiBUZXN0RE9NSklUQm9vbGVhbk51bGxhYmxlQXR0ckRPTUpJVDo6VGVzdERPTUpJVEJv
b2xlYW5OdWxsYWJsZUF0dHJET01KSVQoKQotICAgIDogSlNDOjpET01KSVQ6OkdldHRlclNldHRl
cihqc1Rlc3RET01KSVRCb29sZWFuTnVsbGFibGVBdHRyLCBudWxscHRyLCBKU1Rlc3RET01KSVQ6
OmluZm8oKSwgKEpTQzo6U3BlY0Jvb2xlYW4gfCBKU0M6OlNwZWNPdGhlcikpCisgICAgOiBKU0M6
OkRPTUpJVDo6R2V0dGVyU2V0dGVyKGpzVGVzdERPTUpJVEJvb2xlYW5OdWxsYWJsZUF0dHIsIG51
bGxwdHIsIEpTVGVzdERPTUpJVDo6aW5mbygpLCBET01KSVQ6OklETFJlc3VsdFR5cGVGaWx0ZXI8
SURMTnVsbGFibGU8SURMQm9vbGVhbj4+KQogewogfQogCkBAIC03MTUsNyArNzM0LDcgQEAgc3Rh
dGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdERPTUpJVEJ5dGVOdWxsYWJsZUF0dHJHZXR0ZXIoRXhl
Y1N0YXRlJiBzdGF0ZSwgSlNUZXMKIH0KIAogVGVzdERPTUpJVEJ5dGVOdWxsYWJsZUF0dHJET01K
SVQ6OlRlc3RET01KSVRCeXRlTnVsbGFibGVBdHRyRE9NSklUKCkKLSAgICA6IEpTQzo6RE9NSklU
OjpHZXR0ZXJTZXR0ZXIoanNUZXN0RE9NSklUQnl0ZU51bGxhYmxlQXR0ciwgbnVsbHB0ciwgSlNU
ZXN0RE9NSklUOjppbmZvKCksIChKU0M6OlNwZWNJbnQzMk9ubHkgfCBKU0M6OlNwZWNPdGhlcikp
CisgICAgOiBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVyKGpzVGVzdERPTUpJVEJ5dGVOdWxsYWJs
ZUF0dHIsIG51bGxwdHIsIEpTVGVzdERPTUpJVDo6aW5mbygpLCBET01KSVQ6OklETFJlc3VsdFR5
cGVGaWx0ZXI8SURMTnVsbGFibGU8SURMQnl0ZT4+KQogewogfQogCkBAIC03NDIsNyArNzYxLDcg
QEAgc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdERPTUpJVE9jdGV0TnVsbGFibGVBdHRyR2V0
dGVyKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVGUKIH0KIAogVGVzdERPTUpJVE9jdGV0TnVsbGFibGVB
dHRyRE9NSklUOjpUZXN0RE9NSklUT2N0ZXROdWxsYWJsZUF0dHJET01KSVQoKQotICAgIDogSlND
OjpET01KSVQ6OkdldHRlclNldHRlcihqc1Rlc3RET01KSVRPY3RldE51bGxhYmxlQXR0ciwgbnVs
bHB0ciwgSlNUZXN0RE9NSklUOjppbmZvKCksIChKU0M6OlNwZWNJbnQzMk9ubHkgfCBKU0M6OlNw
ZWNPdGhlcikpCisgICAgOiBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVyKGpzVGVzdERPTUpJVE9j
dGV0TnVsbGFibGVBdHRyLCBudWxscHRyLCBKU1Rlc3RET01KSVQ6OmluZm8oKSwgRE9NSklUOjpJ
RExSZXN1bHRUeXBlRmlsdGVyPElETE51bGxhYmxlPElETE9jdGV0Pj4pCiB7CiB9CiAKQEAgLTc2
OSw3ICs3ODgsNyBAQCBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0RE9NSklUU2hvcnROdWxs
YWJsZUF0dHJHZXR0ZXIoRXhlY1N0YXRlJiBzdGF0ZSwgSlNUZQogfQogCiBUZXN0RE9NSklUU2hv
cnROdWxsYWJsZUF0dHJET01KSVQ6OlRlc3RET01KSVRTaG9ydE51bGxhYmxlQXR0ckRPTUpJVCgp
Ci0gICAgOiBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVyKGpzVGVzdERPTUpJVFNob3J0TnVsbGFi
bGVBdHRyLCBudWxscHRyLCBKU1Rlc3RET01KSVQ6OmluZm8oKSwgKEpTQzo6U3BlY0ludDMyT25s
eSB8IEpTQzo6U3BlY090aGVyKSkKKyAgICA6IEpTQzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIoanNU
ZXN0RE9NSklUU2hvcnROdWxsYWJsZUF0dHIsIG51bGxwdHIsIEpTVGVzdERPTUpJVDo6aW5mbygp
LCBET01KSVQ6OklETFJlc3VsdFR5cGVGaWx0ZXI8SURMTnVsbGFibGU8SURMU2hvcnQ+PikKIHsK
IH0KIApAQCAtNzk2LDcgKzgxNSw3IEBAIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RET01K
SVRVbnNpZ25lZFNob3J0TnVsbGFibGVBdHRyR2V0dGVyKEV4ZWNTdGF0ZSYgc3RhCiB9CiAKIFRl
c3RET01KSVRVbnNpZ25lZFNob3J0TnVsbGFibGVBdHRyRE9NSklUOjpUZXN0RE9NSklUVW5zaWdu
ZWRTaG9ydE51bGxhYmxlQXR0ckRPTUpJVCgpCi0gICAgOiBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0
dGVyKGpzVGVzdERPTUpJVFVuc2lnbmVkU2hvcnROdWxsYWJsZUF0dHIsIG51bGxwdHIsIEpTVGVz
dERPTUpJVDo6aW5mbygpLCAoSlNDOjpTcGVjSW50MzJPbmx5IHwgSlNDOjpTcGVjT3RoZXIpKQor
ICAgIDogSlNDOjpET01KSVQ6OkdldHRlclNldHRlcihqc1Rlc3RET01KSVRVbnNpZ25lZFNob3J0
TnVsbGFibGVBdHRyLCBudWxscHRyLCBKU1Rlc3RET01KSVQ6OmluZm8oKSwgRE9NSklUOjpJRExS
ZXN1bHRUeXBlRmlsdGVyPElETE51bGxhYmxlPElETFVuc2lnbmVkU2hvcnQ+PikKIHsKIH0KIApA
QCAtODIzLDcgKzg0Miw3IEBAIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RET01KSVRMb25n
TnVsbGFibGVBdHRyR2V0dGVyKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVGVzCiB9CiAKIFRlc3RET01K
SVRMb25nTnVsbGFibGVBdHRyRE9NSklUOjpUZXN0RE9NSklUTG9uZ051bGxhYmxlQXR0ckRPTUpJ
VCgpCi0gICAgOiBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVyKGpzVGVzdERPTUpJVExvbmdOdWxs
YWJsZUF0dHIsIG51bGxwdHIsIEpTVGVzdERPTUpJVDo6aW5mbygpLCAoSlNDOjpTcGVjSW50MzJP
bmx5IHwgSlNDOjpTcGVjT3RoZXIpKQorICAgIDogSlNDOjpET01KSVQ6OkdldHRlclNldHRlcihq
c1Rlc3RET01KSVRMb25nTnVsbGFibGVBdHRyLCBudWxscHRyLCBKU1Rlc3RET01KSVQ6OmluZm8o
KSwgRE9NSklUOjpJRExSZXN1bHRUeXBlRmlsdGVyPElETE51bGxhYmxlPElETExvbmc+PikKIHsK
IH0KIApAQCAtODUwLDcgKzg2OSw3IEBAIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RET01K
SVRVbnNpZ25lZExvbmdOdWxsYWJsZUF0dHJHZXR0ZXIoRXhlY1N0YXRlJiBzdGF0CiB9CiAKIFRl
c3RET01KSVRVbnNpZ25lZExvbmdOdWxsYWJsZUF0dHJET01KSVQ6OlRlc3RET01KSVRVbnNpZ25l
ZExvbmdOdWxsYWJsZUF0dHJET01KSVQoKQotICAgIDogSlNDOjpET01KSVQ6OkdldHRlclNldHRl
cihqc1Rlc3RET01KSVRVbnNpZ25lZExvbmdOdWxsYWJsZUF0dHIsIG51bGxwdHIsIEpTVGVzdERP
TUpJVDo6aW5mbygpLCAoSlNDOjpTcGVjQnl0ZWNvZGVOdW1iZXIgfCBKU0M6OlNwZWNPdGhlcikp
CisgICAgOiBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVyKGpzVGVzdERPTUpJVFVuc2lnbmVkTG9u
Z051bGxhYmxlQXR0ciwgbnVsbHB0ciwgSlNUZXN0RE9NSklUOjppbmZvKCksIERPTUpJVDo6SURM
UmVzdWx0VHlwZUZpbHRlcjxJRExOdWxsYWJsZTxJRExVbnNpZ25lZExvbmc+PikKIHsKIH0KIApA
QCAtODc3LDcgKzg5Niw3IEBAIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RET01KSVRMb25n
TG9uZ051bGxhYmxlQXR0ckdldHRlcihFeGVjU3RhdGUmIHN0YXRlLCBKCiB9CiAKIFRlc3RET01K
SVRMb25nTG9uZ051bGxhYmxlQXR0ckRPTUpJVDo6VGVzdERPTUpJVExvbmdMb25nTnVsbGFibGVB
dHRyRE9NSklUKCkKLSAgICA6IEpTQzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIoanNUZXN0RE9NSklU
TG9uZ0xvbmdOdWxsYWJsZUF0dHIsIG51bGxwdHIsIEpTVGVzdERPTUpJVDo6aW5mbygpLCAoSlND
OjpTcGVjQnl0ZWNvZGVOdW1iZXIgfCBKU0M6OlNwZWNPdGhlcikpCisgICAgOiBKU0M6OkRPTUpJ
VDo6R2V0dGVyU2V0dGVyKGpzVGVzdERPTUpJVExvbmdMb25nTnVsbGFibGVBdHRyLCBudWxscHRy
LCBKU1Rlc3RET01KSVQ6OmluZm8oKSwgRE9NSklUOjpJRExSZXN1bHRUeXBlRmlsdGVyPElETE51
bGxhYmxlPElETExvbmdMb25nPj4pCiB7CiB9CiAKQEAgLTkwNCw3ICs5MjMsNyBAQCBzdGF0aWMg
aW5saW5lIEpTVmFsdWUganNUZXN0RE9NSklUVW5zaWduZWRMb25nTG9uZ051bGxhYmxlQXR0ckdl
dHRlcihFeGVjU3RhdGUmCiB9CiAKIFRlc3RET01KSVRVbnNpZ25lZExvbmdMb25nTnVsbGFibGVB
dHRyRE9NSklUOjpUZXN0RE9NSklUVW5zaWduZWRMb25nTG9uZ051bGxhYmxlQXR0ckRPTUpJVCgp
Ci0gICAgOiBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVyKGpzVGVzdERPTUpJVFVuc2lnbmVkTG9u
Z0xvbmdOdWxsYWJsZUF0dHIsIG51bGxwdHIsIEpTVGVzdERPTUpJVDo6aW5mbygpLCAoSlNDOjpT
cGVjQnl0ZWNvZGVOdW1iZXIgfCBKU0M6OlNwZWNPdGhlcikpCisgICAgOiBKU0M6OkRPTUpJVDo6
R2V0dGVyU2V0dGVyKGpzVGVzdERPTUpJVFVuc2lnbmVkTG9uZ0xvbmdOdWxsYWJsZUF0dHIsIG51
bGxwdHIsIEpTVGVzdERPTUpJVDo6aW5mbygpLCBET01KSVQ6OklETFJlc3VsdFR5cGVGaWx0ZXI8
SURMTnVsbGFibGU8SURMVW5zaWduZWRMb25nTG9uZz4+KQogewogfQogCkBAIC05MzEsNyArOTUw
LDcgQEAgc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdERPTUpJVEZsb2F0TnVsbGFibGVBdHRy
R2V0dGVyKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVGUKIH0KIAogVGVzdERPTUpJVEZsb2F0TnVsbGFi
bGVBdHRyRE9NSklUOjpUZXN0RE9NSklURmxvYXROdWxsYWJsZUF0dHJET01KSVQoKQotICAgIDog
SlNDOjpET01KSVQ6OkdldHRlclNldHRlcihqc1Rlc3RET01KSVRGbG9hdE51bGxhYmxlQXR0ciwg
bnVsbHB0ciwgSlNUZXN0RE9NSklUOjppbmZvKCksIChKU0M6OlNwZWNCeXRlY29kZU51bWJlciB8
IEpTQzo6U3BlY090aGVyKSkKKyAgICA6IEpTQzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIoanNUZXN0
RE9NSklURmxvYXROdWxsYWJsZUF0dHIsIG51bGxwdHIsIEpTVGVzdERPTUpJVDo6aW5mbygpLCBE
T01KSVQ6OklETFJlc3VsdFR5cGVGaWx0ZXI8SURMTnVsbGFibGU8SURMRmxvYXQ+PikKIHsKIH0K
IApAQCAtOTU4LDcgKzk3Nyw3IEBAIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RET01KSVRV
bnJlc3RyaWN0ZWRGbG9hdE51bGxhYmxlQXR0ckdldHRlcihFeGVjU3RhdGUmCiB9CiAKIFRlc3RE
T01KSVRVbnJlc3RyaWN0ZWRGbG9hdE51bGxhYmxlQXR0ckRPTUpJVDo6VGVzdERPTUpJVFVucmVz
dHJpY3RlZEZsb2F0TnVsbGFibGVBdHRyRE9NSklUKCkKLSAgICA6IEpTQzo6RE9NSklUOjpHZXR0
ZXJTZXR0ZXIoanNUZXN0RE9NSklUVW5yZXN0cmljdGVkRmxvYXROdWxsYWJsZUF0dHIsIG51bGxw
dHIsIEpTVGVzdERPTUpJVDo6aW5mbygpLCAoSlNDOjpTcGVjQnl0ZWNvZGVOdW1iZXIgfCBKU0M6
OlNwZWNPdGhlcikpCisgICAgOiBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVyKGpzVGVzdERPTUpJ
VFVucmVzdHJpY3RlZEZsb2F0TnVsbGFibGVBdHRyLCBudWxscHRyLCBKU1Rlc3RET01KSVQ6Omlu
Zm8oKSwgRE9NSklUOjpJRExSZXN1bHRUeXBlRmlsdGVyPElETE51bGxhYmxlPElETFVucmVzdHJp
Y3RlZEZsb2F0Pj4pCiB7CiB9CiAKQEAgLTk4NSw3ICsxMDA0LDcgQEAgc3RhdGljIGlubGluZSBK
U1ZhbHVlIGpzVGVzdERPTUpJVERvdWJsZU51bGxhYmxlQXR0ckdldHRlcihFeGVjU3RhdGUmIHN0
YXRlLCBKU1QKIH0KIAogVGVzdERPTUpJVERvdWJsZU51bGxhYmxlQXR0ckRPTUpJVDo6VGVzdERP
TUpJVERvdWJsZU51bGxhYmxlQXR0ckRPTUpJVCgpCi0gICAgOiBKU0M6OkRPTUpJVDo6R2V0dGVy
U2V0dGVyKGpzVGVzdERPTUpJVERvdWJsZU51bGxhYmxlQXR0ciwgbnVsbHB0ciwgSlNUZXN0RE9N
SklUOjppbmZvKCksIChKU0M6OlNwZWNCeXRlY29kZU51bWJlciB8IEpTQzo6U3BlY090aGVyKSkK
KyAgICA6IEpTQzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIoanNUZXN0RE9NSklURG91YmxlTnVsbGFi
bGVBdHRyLCBudWxscHRyLCBKU1Rlc3RET01KSVQ6OmluZm8oKSwgRE9NSklUOjpJRExSZXN1bHRU
eXBlRmlsdGVyPElETE51bGxhYmxlPElETERvdWJsZT4+KQogewogfQogCkBAIC0xMDEyLDcgKzEw
MzEsNyBAQCBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0RE9NSklUVW5yZXN0cmljdGVkRG91
YmxlTnVsbGFibGVBdHRyR2V0dGVyKEV4ZWNTdGF0ZQogfQogCiBUZXN0RE9NSklUVW5yZXN0cmlj
dGVkRG91YmxlTnVsbGFibGVBdHRyRE9NSklUOjpUZXN0RE9NSklUVW5yZXN0cmljdGVkRG91Ymxl
TnVsbGFibGVBdHRyRE9NSklUKCkKLSAgICA6IEpTQzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIoanNU
ZXN0RE9NSklUVW5yZXN0cmljdGVkRG91YmxlTnVsbGFibGVBdHRyLCBudWxscHRyLCBKU1Rlc3RE
T01KSVQ6OmluZm8oKSwgKEpTQzo6U3BlY0J5dGVjb2RlTnVtYmVyIHwgSlNDOjpTcGVjT3RoZXIp
KQorICAgIDogSlNDOjpET01KSVQ6OkdldHRlclNldHRlcihqc1Rlc3RET01KSVRVbnJlc3RyaWN0
ZWREb3VibGVOdWxsYWJsZUF0dHIsIG51bGxwdHIsIEpTVGVzdERPTUpJVDo6aW5mbygpLCBET01K
SVQ6OklETFJlc3VsdFR5cGVGaWx0ZXI8SURMTnVsbGFibGU8SURMVW5yZXN0cmljdGVkRG91Ymxl
Pj4pCiB7CiB9CiAKQEAgLTEwMzksNyArMTA1OCw3IEBAIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBq
c1Rlc3RET01KSVREb21TdHJpbmdOdWxsYWJsZUF0dHJHZXR0ZXIoRXhlY1N0YXRlJiBzdGF0ZSwK
IH0KIAogVGVzdERPTUpJVERvbVN0cmluZ051bGxhYmxlQXR0ckRPTUpJVDo6VGVzdERPTUpJVERv
bVN0cmluZ051bGxhYmxlQXR0ckRPTUpJVCgpCi0gICAgOiBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0
dGVyKGpzVGVzdERPTUpJVERvbVN0cmluZ051bGxhYmxlQXR0ciwgbnVsbHB0ciwgSlNUZXN0RE9N
SklUOjppbmZvKCksIChKU0M6OlNwZWNTdHJpbmcgfCBKU0M6OlNwZWNPdGhlcikpCisgICAgOiBK
U0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVyKGpzVGVzdERPTUpJVERvbVN0cmluZ051bGxhYmxlQXR0
ciwgbnVsbHB0ciwgSlNUZXN0RE9NSklUOjppbmZvKCksIERPTUpJVDo6SURMUmVzdWx0VHlwZUZp
bHRlcjxJRExOdWxsYWJsZTxJRExET01TdHJpbmc+PikKIHsKIH0KIApAQCAtMTA2Niw3ICsxMDg1
LDcgQEAgc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdERPTUpJVEJ5dGVTdHJpbmdOdWxsYWJs
ZUF0dHJHZXR0ZXIoRXhlY1N0YXRlJiBzdGF0ZSwKIH0KIAogVGVzdERPTUpJVEJ5dGVTdHJpbmdO
dWxsYWJsZUF0dHJET01KSVQ6OlRlc3RET01KSVRCeXRlU3RyaW5nTnVsbGFibGVBdHRyRE9NSklU
KCkKLSAgICA6IEpTQzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIoanNUZXN0RE9NSklUQnl0ZVN0cmlu
Z051bGxhYmxlQXR0ciwgbnVsbHB0ciwgSlNUZXN0RE9NSklUOjppbmZvKCksIChKU0M6OlNwZWNT
dHJpbmcgfCBKU0M6OlNwZWNPdGhlcikpCisgICAgOiBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVy
KGpzVGVzdERPTUpJVEJ5dGVTdHJpbmdOdWxsYWJsZUF0dHIsIG51bGxwdHIsIEpTVGVzdERPTUpJ
VDo6aW5mbygpLCBET01KSVQ6OklETFJlc3VsdFR5cGVGaWx0ZXI8SURMTnVsbGFibGU8SURMQnl0
ZVN0cmluZz4+KQogewogfQogCkBAIC0xMDkzLDcgKzExMTIsNyBAQCBzdGF0aWMgaW5saW5lIEpT
VmFsdWUganNUZXN0RE9NSklUVXN2U3RyaW5nTnVsbGFibGVBdHRyR2V0dGVyKEV4ZWNTdGF0ZSYg
c3RhdGUsCiB9CiAKIFRlc3RET01KSVRVc3ZTdHJpbmdOdWxsYWJsZUF0dHJET01KSVQ6OlRlc3RE
T01KSVRVc3ZTdHJpbmdOdWxsYWJsZUF0dHJET01KSVQoKQotICAgIDogSlNDOjpET01KSVQ6Okdl
dHRlclNldHRlcihqc1Rlc3RET01KSVRVc3ZTdHJpbmdOdWxsYWJsZUF0dHIsIG51bGxwdHIsIEpT
VGVzdERPTUpJVDo6aW5mbygpLCAoSlNDOjpTcGVjU3RyaW5nIHwgSlNDOjpTcGVjT3RoZXIpKQor
ICAgIDogSlNDOjpET01KSVQ6OkdldHRlclNldHRlcihqc1Rlc3RET01KSVRVc3ZTdHJpbmdOdWxs
YWJsZUF0dHIsIG51bGxwdHIsIEpTVGVzdERPTUpJVDo6aW5mbygpLCBET01KSVQ6OklETFJlc3Vs
dFR5cGVGaWx0ZXI8SURMTnVsbGFibGU8SURMVVNWU3RyaW5nPj4pCiB7CiB9CiAKQEAgLTExMjAs
NyArMTEzOSw3IEBAIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RET01KSVROb2RlTnVsbGFi
bGVBdHRyR2V0dGVyKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVGVzCiB9CiAKIFRlc3RET01KSVROb2Rl
TnVsbGFibGVBdHRyRE9NSklUOjpUZXN0RE9NSklUTm9kZU51bGxhYmxlQXR0ckRPTUpJVCgpCi0g
ICAgOiBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVyKGpzVGVzdERPTUpJVE5vZGVOdWxsYWJsZUF0
dHIsIG51bGxwdHIsIEpTVGVzdERPTUpJVDo6aW5mbygpLCBTcGVjSGVhcFRvcCkKKyAgICA6IEpT
Qzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIoanNUZXN0RE9NSklUTm9kZU51bGxhYmxlQXR0ciwgbnVs
bHB0ciwgSlNUZXN0RE9NSklUOjppbmZvKCksIERPTUpJVDo6SURMUmVzdWx0VHlwZUZpbHRlcjxJ
RExOdWxsYWJsZTxJRExJbnRlcmZhY2U8Tm9kZT4+PikKIHsKIH0KIApAQCAtMTE1OSw2ICsxMTc4
LDM5IEBAIEpTVmFsdWUgSlNUZXN0RE9NSklUOjpnZXRDb25zdHJ1Y3RvcihWTSYgdm0sIGNvbnN0
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiAgICAgcmV0dXJuIGdldERPTUNvbnN0cnVj
dG9yPEpTVGVzdERPTUpJVENvbnN0cnVjdG9yPih2bSwgKmpzQ2FzdDxjb25zdCBKU0RPTUdsb2Jh
bE9iamVjdCo+KGdsb2JhbE9iamVjdCkpOwogfQogCitzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2Rl
ZEpTVmFsdWUganNUZXN0RE9NSklUUHJvdG90eXBlRnVuY3Rpb25HZXRBdHRyaWJ1dGVDYWxsZXIo
SlNDOjpFeGVjU3RhdGUqLCBKU1Rlc3RET01KSVQqLCBKU0M6OlRocm93U2NvcGUmKTsKKworRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RET01KSVRQcm90b3R5cGVGdW5jdGlvbkdl
dEF0dHJpYnV0ZShFeGVjU3RhdGUqIHN0YXRlKQoreworICAgIHJldHVybiBCaW5kaW5nQ2FsbGVy
PEpTVGVzdERPTUpJVD46OmNhbGxPcGVyYXRpb248anNUZXN0RE9NSklUUHJvdG90eXBlRnVuY3Rp
b25HZXRBdHRyaWJ1dGVDYWxsZXI+KHN0YXRlLCAiZ2V0QXR0cmlidXRlIik7Cit9CisKK3N0YXRp
YyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RET01KSVRQcm90b3R5cGVGdW5jdGlv
bkdldEF0dHJpYnV0ZUNhbGxlcihKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIEpTVGVzdERPTUpJVCog
Y2FzdGVkVGhpcywgSlNDOjpUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQoreworICAgIFVOVVNFRF9Q
QVJBTShzdGF0ZSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOworICAgIGF1dG8mIGlt
cGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CisgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5hcmd1
bWVudENvdW50KCkgPCAxKSkKKyAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgdGhy
b3dTY29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKKyAgICBhdXRv
IG5hbWUgPSBjb252ZXJ0PElETERPTVN0cmluZz4oKnN0YXRlLCBzdGF0ZS0+dW5jaGVja2VkQXJn
dW1lbnQoMCksIFN0cmluZ0NvbnZlcnNpb25Db25maWd1cmF0aW9uOjpOb3JtYWwpOworICAgIFJF
VFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CisgICAgSlNW
YWx1ZSByZXN1bHQgPSB0b0pTPElETE51bGxhYmxlPElETERPTVN0cmluZz4+KCpzdGF0ZSwgaW1w
bC5nZXRBdHRyaWJ1dGUoV1RGTW92ZShuYW1lKSkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUocmVzdWx0KTsKK30KKworSlNDOjpFbmNvZGVkSlNWYWx1ZSB1bnNhZmVKc1Rlc3RET01KSVRQ
cm90b3R5cGVGdW5jdGlvbkdldEF0dHJpYnV0ZShFeGVjU3RhdGUqIHN0YXRlLCBKU1Rlc3RET01K
SVQqIGNhc3RlZFRoaXMsIERPTUpJVDo6SURMQXJndW1lbnRUeXBlRmlsdGVyPElETERPTVN0cmlu
Zz4gZW5jb2RlZE5hbWUpCit7CisgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKKyAgICBWTSYgdm0g
PSBzdGF0ZS0+dm0oKTsKKyAgICBKU0M6Ok5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIoJnZt
LCBleGVjKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
KyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOworICAgIGF1dG8gbmFtZSA9
IERPTUpJVDo6RGlyZWN0Q29udmVydGVyPElETERPTVN0cmluZz46OmRpcmVjdENvbnZlcnQ8U3Ry
aW5nQ29udmVyc2lvbkNvbmZpZ3VyYXRpb246Ok5vcm1hbD4oKnN0YXRlLCBlbmNvZGVkTmFtZSk7
CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsK
KyAgICBKU1ZhbHVlIHJlc3VsdCA9IHRvSlM8SURMTnVsbGFibGU8SURMRE9NU3RyaW5nPj4oKnN0
YXRlLCBpbXBsLmdldEF0dHJpYnV0ZShXVEZNb3ZlKG5hbWUpKSk7CisgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShyZXN1bHQpOworfQorCiB2b2lkIEpTVGVzdERPTUpJVDo6dmlzaXRDaGlsZHJl
bihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogewogICAgIGF1dG8qIHRoaXNP
YmplY3QgPSBqc0Nhc3Q8SlNUZXN0RE9NSklUKj4oY2VsbCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdERPTUpJVC5pZGwgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdERPTUpJVC5pZGwKaW5kZXggYmU3ZWQwNGZm
NjNkZTY4NmJjODc2NDgyODJiNmFhZjY0YzI3NzNlNy4uYTUzMTQ4OGRjODFjMWI4NzdmMGVlM2Y5
NGY4YWFiMzhhYTY5NDM5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L1Rlc3RET01KSVQuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9UZXN0RE9NSklULmlkbApAQCAtNjMsNCArNjMsNiBAQCBpbnRlcmZhY2UgVGVz
dERPTUpJVCA6IE5vZGUgewogICAgIFtET01KSVRdIHJlYWRvbmx5IGF0dHJpYnV0ZSBCeXRlU3Ry
aW5nPyBieXRlU3RyaW5nTnVsbGFibGVBdHRyOwogICAgIFtET01KSVRdIHJlYWRvbmx5IGF0dHJp
YnV0ZSBVU1ZTdHJpbmc/IHVzdlN0cmluZ051bGxhYmxlQXR0cjsKICAgICBbRE9NSklUXSByZWFk
b25seSBhdHRyaWJ1dGUgTm9kZT8gbm9kZU51bGxhYmxlQXR0cjsKKworICAgIFtET01KSVQ9U2ln
bmF0dXJlXSBET01TdHJpbmc/IGdldEF0dHJpYnV0ZShET01TdHJpbmcgbmFtZSk7CiB9OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaWRsIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0VsZW1lbnQuaWRsCmluZGV4IGU0MmQyZDRkODFmMmNiYzI1YmI2MTdhOGY2ZDMwMjZhZjVi
Yzg0ZTguLmJmY2MyYWEzNjQ2Nzk3OWUwMmQ1NzAyNzcxMDU1MmY2YmZlNjY3MmQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vRWxlbWVudC5pZGwKQEAgLTI2LDE3ICsyNiwxNyBAQAogXSBpbnRlcmZhY2UgRWxlbWVudCA6
IE5vZGUgewogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmc/IHRhZ05hbWU7CiAKLSAg
ICBET01TdHJpbmc/IGdldEF0dHJpYnV0ZShET01TdHJpbmcgbmFtZSk7CisgICAgW0RPTUpJVD1T
aWduYXR1cmVdIERPTVN0cmluZz8gZ2V0QXR0cmlidXRlKERPTVN0cmluZyBuYW1lKTsKIAogICAg
IFtDRVJlYWN0aW9ucywgTWF5VGhyb3dFeGNlcHRpb25dIHZvaWQgc2V0QXR0cmlidXRlKERPTVN0
cmluZyBuYW1lLCBET01TdHJpbmcgdmFsdWUpOwogCiAgICAgW0NFUmVhY3Rpb25zXSB2b2lkIHJl
bW92ZUF0dHJpYnV0ZShET01TdHJpbmcgbmFtZSk7Ci0gICAgQXR0cj8gZ2V0QXR0cmlidXRlTm9k
ZShET01TdHJpbmcgbmFtZSk7CisgICAgW0RPTUpJVD1TaWduYXR1cmVdIEF0dHI/IGdldEF0dHJp
YnV0ZU5vZGUoRE9NU3RyaW5nIG5hbWUpOwogCiAgICAgW0NFUmVhY3Rpb25zLCBNYXlUaHJvd0V4
Y2VwdGlvbl0gQXR0cj8gc2V0QXR0cmlidXRlTm9kZShBdHRyIG5ld0F0dHIpOwogICAgIFtDRVJl
YWN0aW9ucywgTWF5VGhyb3dFeGNlcHRpb25dIEF0dHIgcmVtb3ZlQXR0cmlidXRlTm9kZShBdHRy
IG9sZEF0dHIpOwogCi0gICAgSFRNTENvbGxlY3Rpb24gZ2V0RWxlbWVudHNCeVRhZ05hbWUoRE9N
U3RyaW5nIG5hbWUpOworICAgIFtET01KSVQ9U2lnbmF0dXJlXSBIVE1MQ29sbGVjdGlvbiBnZXRF
bGVtZW50c0J5VGFnTmFtZShET01TdHJpbmcgbmFtZSk7CiAKICAgICByZWFkb25seSBhdHRyaWJ1
dGUgTmFtZWROb2RlTWFwIGF0dHJpYnV0ZXM7CiAgICAgYm9vbGVhbiBoYXNBdHRyaWJ1dGVzKCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb21qaXQvRE9NSklUSURMQ29udmVydC5oIGIv
U291cmNlL1dlYkNvcmUvZG9taml0L0RPTUpJVElETENvbnZlcnQuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41ZTAw
YWJmY2NiODc2ZGVhMTgzMmYxYzIwYWVlM2VkNzhiMTM2ODQ5Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYkNvcmUvZG9taml0L0RPTUpJVElETENvbnZlcnQuaApAQCAtMCwwICsxLDQ5IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJJRExUeXBlcy5oIgorI2lu
Y2x1ZGUgPGJ5dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmg+CisjaW5jbHVkZSA8ZG9taml0L0RPTUpJ
VFNpZ25hdHVyZS5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7IG5hbWVzcGFjZSBET01KSVQgewor
Cit0ZW1wbGF0ZTx0eXBlbmFtZSBJRExUeXBlPgorc3RydWN0IERpcmVjdENvbnZlcnRlcjsKKwor
dGVtcGxhdGU8Pgorc3RydWN0IERpcmVjdENvbnZlcnRlcjxJRExET01TdHJpbmc+IHsKKyAgICB0
ZW1wbGF0ZTxTdHJpbmdDb252ZXJzaW9uQ29uZmlndXJhdGlvbj4KKyAgICBzdGF0aWMgU3RyaW5n
IGRpcmVjdENvbnZlcnQoSlNDOjpFeGVjU3RhdGUmLCBKU0M6OkpTU3RyaW5nKik7Cit9OworCit0
ZW1wbGF0ZTw+CitpbmxpbmUgU3RyaW5nIERpcmVjdENvbnZlcnRlcjxJRExET01TdHJpbmc+Ojpk
aXJlY3RDb252ZXJ0PFN0cmluZ0NvbnZlcnNpb25Db25maWd1cmF0aW9uOjpOb3JtYWw+KEpTQzo6
RXhlY1N0YXRlJiBzdGF0ZSwgSlNDOjpKU1N0cmluZyogc3RyaW5nKQoreworICAgIHJldHVybiBz
dHJpbmctPnZhbHVlKCZzdGF0ZSk7Cit9CisKK30gfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZG9taml0L0RPTUpJVElETFR5cGUuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbWppdC9ET01KSVRJ
RExUeXBlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNjg5MWZiYzUwZWY0YzJkNzY1NGQ4ZTVkMmJjOGRlYWU5NzZk
ZjFhYwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbWppdC9ET01KSVRJRExU
eXBlLmgKQEAgLTAsMCArMSw0NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5j
bHVkZSAiSURMVHlwZXMuaCIKKyNpbmNsdWRlIDxieXRlY29kZS9TcGVjdWxhdGVkVHlwZS5oPgor
CituYW1lc3BhY2UgV2ViQ29yZSB7IG5hbWVzcGFjZSBET01KSVQgeworCit0ZW1wbGF0ZTx0eXBl
bmFtZSBJRExUeXBlPgorc3RydWN0IElETEpTQXJndW1lbnRUeXBlU2VsZWN0OworCit0ZW1wbGF0
ZTw+IHN0cnVjdCBJRExKU0FyZ3VtZW50VHlwZVNlbGVjdDxJRExCb29sZWFuPiB7IHR5cGVkZWYg
Ym9vbCB0eXBlOyB9OwordGVtcGxhdGU8PiBzdHJ1Y3QgSURMSlNBcmd1bWVudFR5cGVTZWxlY3Q8
SURMQnl0ZT4geyB0eXBlZGVmIGludDMyX3QgdHlwZTsgfTsKK3RlbXBsYXRlPD4gc3RydWN0IElE
TEpTQXJndW1lbnRUeXBlU2VsZWN0PElETE9jdGV0PiB7IHR5cGVkZWYgaW50MzJfdCB0eXBlOyB9
OwordGVtcGxhdGU8PiBzdHJ1Y3QgSURMSlNBcmd1bWVudFR5cGVTZWxlY3Q8SURMU2hvcnQ+IHsg
dHlwZWRlZiBpbnQzMl90IHR5cGU7IH07Cit0ZW1wbGF0ZTw+IHN0cnVjdCBJRExKU0FyZ3VtZW50
VHlwZVNlbGVjdDxJRExVbnNpZ25lZFNob3J0PiB7IHR5cGVkZWYgaW50MzJfdCB0eXBlOyB9Owor
dGVtcGxhdGU8PiBzdHJ1Y3QgSURMSlNBcmd1bWVudFR5cGVTZWxlY3Q8SURMTG9uZz4geyB0eXBl
ZGVmIGludDMyX3QgdHlwZTsgfTsKK3RlbXBsYXRlPD4gc3RydWN0IElETEpTQXJndW1lbnRUeXBl
U2VsZWN0PElETERPTVN0cmluZz4geyB0eXBlZGVmIEpTQzo6SlNTdHJpbmcqIHR5cGU7IH07CisK
K3RlbXBsYXRlPHR5cGVuYW1lIElETFR5cGU+Cit1c2luZyBJRExKU0FyZ3VtZW50VHlwZSA9IHR5
cGVuYW1lIElETEpTQXJndW1lbnRUeXBlU2VsZWN0PElETFR5cGU+Ojp0eXBlOworCit9IH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbWppdC9ET01KSVRJRExUeXBlRmlsdGVyLmggYi9T
b3VyY2UvV2ViQ29yZS9kb21qaXQvRE9NSklUSURMVHlwZUZpbHRlci5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhh
ZjYzNmRlOWI2ZmU0MWMzNmM3NzA4NzAyNDZlODdhYmZmYjc4MDIKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9kb21qaXQvRE9NSklUSURMVHlwZUZpbHRlci5oCkBAIC0wLDAgKzEs
NzAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPGJ5dGVjb2RlL1Nw
ZWN1bGF0ZWRUeXBlLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsgbmFtZXNwYWNlIERPTUpJVCB7
CisKK3RlbXBsYXRlPHR5cGVuYW1lIElETFR5cGU+CitzdHJ1Y3QgSURMQXJndW1lbnRUeXBlRmls
dGVyU2VsZWN0OworCit0ZW1wbGF0ZTw+IHN0cnVjdCBJRExBcmd1bWVudFR5cGVGaWx0ZXJTZWxl
Y3Q8SURMQm9vbGVhbj4geyBzdGF0aWMgY29uc3RleHByIEpTQzo6U3BlY3VsYXRlZFR5cGUgdmFs
dWUgPSBKU0M6OlNwZWNCb29sZWFuOyB9OwordGVtcGxhdGU8PiBzdHJ1Y3QgSURMQXJndW1lbnRU
eXBlRmlsdGVyU2VsZWN0PElETEJ5dGU+IHsgc3RhdGljIGNvbnN0ZXhwciBKU0M6OlNwZWN1bGF0
ZWRUeXBlIHZhbHVlID0gSlNDOjpTcGVjSW50MzJPbmx5OyB9OwordGVtcGxhdGU8PiBzdHJ1Y3Qg
SURMQXJndW1lbnRUeXBlRmlsdGVyU2VsZWN0PElETE9jdGV0PiB7IHN0YXRpYyBjb25zdGV4cHIg
SlNDOjpTcGVjdWxhdGVkVHlwZSB2YWx1ZSA9IEpTQzo6U3BlY0ludDMyT25seTsgfTsKK3RlbXBs
YXRlPD4gc3RydWN0IElETEFyZ3VtZW50VHlwZUZpbHRlclNlbGVjdDxJRExTaG9ydD4geyBzdGF0
aWMgY29uc3RleHByIEpTQzo6U3BlY3VsYXRlZFR5cGUgdmFsdWUgPSBKU0M6OlNwZWNJbnQzMk9u
bHk7IH07Cit0ZW1wbGF0ZTw+IHN0cnVjdCBJRExBcmd1bWVudFR5cGVGaWx0ZXJTZWxlY3Q8SURM
VW5zaWduZWRTaG9ydD4geyBzdGF0aWMgY29uc3RleHByIEpTQzo6U3BlY3VsYXRlZFR5cGUgdmFs
dWUgPSBKU0M6OlNwZWNJbnQzMk9ubHk7IH07Cit0ZW1wbGF0ZTw+IHN0cnVjdCBJRExBcmd1bWVu
dFR5cGVGaWx0ZXJTZWxlY3Q8SURMTG9uZz4geyBzdGF0aWMgY29uc3RleHByIEpTQzo6U3BlY3Vs
YXRlZFR5cGUgdmFsdWUgPSBKU0M6OlNwZWNJbnQzMk9ubHk7IH07Cit0ZW1wbGF0ZTw+IHN0cnVj
dCBJRExBcmd1bWVudFR5cGVGaWx0ZXJTZWxlY3Q8SURMRE9NU3RyaW5nPiB7IHN0YXRpYyBjb25z
dGV4cHIgSlNDOjpTcGVjdWxhdGVkVHlwZSB2YWx1ZSA9IEpTQzo6U3BlY1N0cmluZzsgfTsKKwor
dGVtcGxhdGU8dHlwZW5hbWUgSURMVHlwZT4KK2NvbnN0ZXhwciBKU0M6OlNwZWN1bGF0ZWRUeXBl
IElETEFyZ3VtZW50VHlwZUZpbHRlciA9IElETEFyZ3VtZW50VHlwZUZpbHRlclNlbGVjdDxJRExU
eXBlPjo6dmFsdWU7CisKK3RlbXBsYXRlPHR5cGVuYW1lIElETFR5cGU+Citjb25zdGV4cHIgSlND
OjpTcGVjdWxhdGVkVHlwZSBJRExSZXN1bHRUeXBlRmlsdGVyID0gSlNDOjpTcGVjSGVhcFRvcDsK
KwordGVtcGxhdGU8PiBjb25zdGV4cHIgSlNDOjpTcGVjdWxhdGVkVHlwZSBJRExSZXN1bHRUeXBl
RmlsdGVyPElETEFueT4gPSBKU0M6OlNwZWNIZWFwVG9wOwordGVtcGxhdGU8PiBjb25zdGV4cHIg
SlNDOjpTcGVjdWxhdGVkVHlwZSBJRExSZXN1bHRUeXBlRmlsdGVyPElETEJvb2xlYW4+ID0gSlND
OjpTcGVjQm9vbGVhbjsKK3RlbXBsYXRlPD4gY29uc3RleHByIEpTQzo6U3BlY3VsYXRlZFR5cGUg
SURMUmVzdWx0VHlwZUZpbHRlcjxJRExCeXRlPiA9IEpTQzo6U3BlY0ludDMyT25seTsKK3RlbXBs
YXRlPD4gY29uc3RleHByIEpTQzo6U3BlY3VsYXRlZFR5cGUgSURMUmVzdWx0VHlwZUZpbHRlcjxJ
RExPY3RldD4gPSBKU0M6OlNwZWNJbnQzMk9ubHk7Cit0ZW1wbGF0ZTw+IGNvbnN0ZXhwciBKU0M6
OlNwZWN1bGF0ZWRUeXBlIElETFJlc3VsdFR5cGVGaWx0ZXI8SURMU2hvcnQ+ID0gSlNDOjpTcGVj
SW50MzJPbmx5OwordGVtcGxhdGU8PiBjb25zdGV4cHIgSlNDOjpTcGVjdWxhdGVkVHlwZSBJRExS
ZXN1bHRUeXBlRmlsdGVyPElETFVuc2lnbmVkU2hvcnQ+ID0gSlNDOjpTcGVjSW50MzJPbmx5Owor
dGVtcGxhdGU8PiBjb25zdGV4cHIgSlNDOjpTcGVjdWxhdGVkVHlwZSBJRExSZXN1bHRUeXBlRmls
dGVyPElETExvbmc+ID0gSlNDOjpTcGVjSW50MzJPbmx5OwordGVtcGxhdGU8PiBjb25zdGV4cHIg
SlNDOjpTcGVjdWxhdGVkVHlwZSBJRExSZXN1bHRUeXBlRmlsdGVyPElETFVuc2lnbmVkTG9uZz4g
PSBKU0M6OlNwZWNCeXRlY29kZU51bWJlcjsKK3RlbXBsYXRlPD4gY29uc3RleHByIEpTQzo6U3Bl
Y3VsYXRlZFR5cGUgSURMUmVzdWx0VHlwZUZpbHRlcjxJRExMb25nTG9uZz4gPSBKU0M6OlNwZWNC
eXRlY29kZU51bWJlcjsKK3RlbXBsYXRlPD4gY29uc3RleHByIEpTQzo6U3BlY3VsYXRlZFR5cGUg
SURMUmVzdWx0VHlwZUZpbHRlcjxJRExVbnNpZ25lZExvbmdMb25nPiA9IEpTQzo6U3BlY0J5dGVj
b2RlTnVtYmVyOwordGVtcGxhdGU8PiBjb25zdGV4cHIgSlNDOjpTcGVjdWxhdGVkVHlwZSBJRExS
ZXN1bHRUeXBlRmlsdGVyPElETEZsb2F0PiA9IEpTQzo6U3BlY0J5dGVjb2RlTnVtYmVyOwordGVt
cGxhdGU8PiBjb25zdGV4cHIgSlNDOjpTcGVjdWxhdGVkVHlwZSBJRExSZXN1bHRUeXBlRmlsdGVy
PElETFVucmVzdHJpY3RlZEZsb2F0PiA9IEpTQzo6U3BlY0J5dGVjb2RlTnVtYmVyOwordGVtcGxh
dGU8PiBjb25zdGV4cHIgSlNDOjpTcGVjdWxhdGVkVHlwZSBJRExSZXN1bHRUeXBlRmlsdGVyPElE
TERvdWJsZT4gPSBKU0M6OlNwZWNCeXRlY29kZU51bWJlcjsKK3RlbXBsYXRlPD4gY29uc3RleHBy
IEpTQzo6U3BlY3VsYXRlZFR5cGUgSURMUmVzdWx0VHlwZUZpbHRlcjxJRExVbnJlc3RyaWN0ZWRE
b3VibGU+ID0gSlNDOjpTcGVjQnl0ZWNvZGVOdW1iZXI7Cit0ZW1wbGF0ZTw+IGNvbnN0ZXhwciBK
U0M6OlNwZWN1bGF0ZWRUeXBlIElETFJlc3VsdFR5cGVGaWx0ZXI8SURMRE9NU3RyaW5nPiA9IEpT
Qzo6U3BlY1N0cmluZzsKK3RlbXBsYXRlPD4gY29uc3RleHByIEpTQzo6U3BlY3VsYXRlZFR5cGUg
SURMUmVzdWx0VHlwZUZpbHRlcjxJRExCeXRlU3RyaW5nPiA9IEpTQzo6U3BlY1N0cmluZzsKK3Rl
bXBsYXRlPD4gY29uc3RleHByIEpTQzo6U3BlY3VsYXRlZFR5cGUgSURMUmVzdWx0VHlwZUZpbHRl
cjxJRExVU1ZTdHJpbmc+ID0gSlNDOjpTcGVjU3RyaW5nOworCit0ZW1wbGF0ZTx0eXBlbmFtZSBU
PgorY29uc3RleHByIEpTQzo6U3BlY3VsYXRlZFR5cGUgSURMUmVzdWx0VHlwZUZpbHRlcjxJRExO
dWxsYWJsZTxUPj4gPSBKU0M6OlNwZWNPdGhlciB8IElETFJlc3VsdFR5cGVGaWx0ZXI8VD47CisK
K30gfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>293605</attachid>
            <date>2016-11-01 15:33:04 -0700</date>
            <delta_ts>2016-11-01 22:51:42 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-162980-20161101152906.patch</filename>
            <type>text/plain</type>
            <size>160283</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA4MTM3CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBl
ZjMwNGVjYmQ0YjQ0NzNlZjEwYWY3NmNkYTMwODQ3MmVjN2Q3MGQwLi5iNTM3MGM3NWJkYmRiNWZm
OTgzMDA3MjAzYjE0ZjA1YzZiMTE0MjhiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw5MiBAQAorMjAxNi0xMS0wMSAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBbRE9NSklUXSBBZGQgRE9NSklUOjpTaWduYXR1cmUKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2Mjk4MAorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogSmF2YVNjcmlwdENvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBieXRlY29kZS9DYWxsVmFyaWFu
dC5oOgorICAgICAgICAoSlNDOjpDYWxsVmFyaWFudDo6ZnVuY3Rpb25FeGVjdXRhYmxlKToKKyAg
ICAgICAgKEpTQzo6Q2FsbFZhcmlhbnQ6Om5hdGl2ZUV4ZWN1dGFibGUpOgorICAgICAgICAoSlND
OjpDYWxsVmFyaWFudDo6c2lnbmF0dXJlRm9yKToKKyAgICAgICAgKiBkZmcvREZHQWJzdHJhY3RJ
bnRlcnByZXRlcklubGluZXMuaDoKKyAgICAgICAgKEpTQzo6REZHOjpBYnN0cmFjdEludGVycHJl
dGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHMpOgorICAgICAgICAqIGRmZy9E
RkdCeXRlQ29kZVBhcnNlci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6
OmF0dGVtcHRUb0lubGluZUNhbGwpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2Vy
OjpoYW5kbGVET01KSVRDYWxsKToKKyAgICAgICAgKiBkZmcvREZHQ2xvYmJlcml6ZS5oOgorICAg
ICAgICAoSlNDOjpERkc6OmNsb2JiZXJpemUpOgorICAgICAgICAqIGRmZy9ERkdEb2VzR0MuY3Bw
OgorICAgICAgICAoSlNDOjpERkc6OmRvZXNHQyk6CisgICAgICAgICogZGZnL0RGR0ZpeHVwUGhh
c2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkZpeHVwUGhhc2U6OmZpeHVwTm9kZSk6CisgICAg
ICAgICogZGZnL0RGR05vZGUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpoYXNIZWFwUHJl
ZGljdGlvbik6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6aGFzU2lnbmF0dXJlKToKKyAgICAg
ICAgKEpTQzo6REZHOjpOb2RlOjpzaWduYXR1cmUpOgorICAgICAgICAqIGRmZy9ERkdOb2RlVHlw
ZS5oOgorICAgICAgICAqIGRmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHA6Cisg
ICAgICAgICogZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpzYWZl
VG9FeGVjdXRlKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwOgorICAgICAg
ICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlQ2FsbERPTSk6CisgICAgICAgICog
ZGZnL0RGR1NwZWN1bGF0aXZlSklULmg6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVK
SVQ6OmNhbGxPcGVyYXRpb24pOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0
LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6CisgICAg
ICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNw
ZWN1bGF0aXZlSklUOjpjb21waWxlKToKKyAgICAgICAgKiBkb21qaXQvRE9NSklURWZmZWN0Lmg6
CisgICAgICAgIChKU0M6OkRPTUpJVDo6RWZmZWN0OjpFZmZlY3QpOgorICAgICAgICAoSlNDOjpE
T01KSVQ6OkVmZmVjdDo6Zm9yV3JpdGUpOgorICAgICAgICAoSlNDOjpET01KSVQ6OkVmZmVjdDo6
Zm9yUmVhZCk6CisgICAgICAgIChKU0M6OkRPTUpJVDo6RWZmZWN0Ojpmb3JSZWFkV3JpdGUpOgor
ICAgICAgICAoSlNDOjpET01KSVQ6OkVmZmVjdDo6Zm9yUHVyZSk6CisgICAgICAgIChKU0M6OkRP
TUpJVDo6RWZmZWN0Ojpmb3JEZWYpOgorICAgICAgICAoSlNDOjpET01KSVQ6OkVmZmVjdDo6bXVz
dEdlbmVyYXRlKToKKyAgICAgICAgKiBkb21qaXQvRE9NSklUSGVhcFJhbmdlLmg6CisgICAgICAg
IChKU0M6OkRPTUpJVDo6SGVhcFJhbmdlOjpmcm9tUmF3KToKKyAgICAgICAgKEpTQzo6RE9NSklU
OjpIZWFwUmFuZ2U6Om9wZXJhdG9yPT0pOgorICAgICAgICAoSlNDOjpET01KSVQ6OkhlYXBSYW5n
ZTo6b3BlcmF0b3IhPSk6CisgICAgICAgIChKU0M6OkRPTUpJVDo6SGVhcFJhbmdlOjpmcm9tQ29u
c3RhbnQpOgorICAgICAgICAqIGRvbWppdC9ET01KSVRTaWduYXR1cmUuaDogQ29waWVkIGZyb20g
U291cmNlL0phdmFTY3JpcHRDb3JlL2RvbWppdC9ET01KSVRFZmZlY3QuaC4KKyAgICAgICAgKEpT
Qzo6RE9NSklUOjpTaWduYXR1cmU6OlNpZ25hdHVyZSk6CisgICAgICAgIChKU0M6OkRPTUpJVDo6
U2lnbmF0dXJlOjphcmd1bWVudENvdW50KToKKyAgICAgICAgKEpTQzo6RE9NSklUOjpTaWduYXR1
cmU6OmNoZWNrRE9NKToKKyAgICAgICAgKiBmdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcDoKKyAgICAg
ICAgKEpTQzo6RlRMOjpjYW5Db21waWxlKToKKyAgICAgICAgKiBmdGwvRlRMTG93ZXJERkdUb0Iz
LmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZU5vZGUp
OgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlQ2FsbERPTSk6
CisgICAgICAgICogaml0L0pJVE9wZXJhdGlvbnMuaDoKKyAgICAgICAgKiBqaXQvSklUVGh1bmtz
LmNwcDoKKyAgICAgICAgKEpTQzo6SklUVGh1bmtzOjpob3N0RnVuY3Rpb25TdHViKToKKyAgICAg
ICAgKiBqaXQvSklUVGh1bmtzLmg6CisgICAgICAgICogcnVudGltZS9KU0JvdW5kRnVuY3Rpb24u
Y3BwOgorICAgICAgICAoSlNDOjpKU0JvdW5kRnVuY3Rpb246OmNyZWF0ZSk6CisgICAgICAgICog
cnVudGltZS9KU0NlbGwuaDoKKyAgICAgICAgKiBydW50aW1lL0pTRnVuY3Rpb24uY3BwOgorICAg
ICAgICAoSlNDOjpKU0Z1bmN0aW9uOjpjcmVhdGUpOgorICAgICAgICAqIHJ1bnRpbWUvSlNGdW5j
dGlvbi5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNOYXRpdmVTdGRGdW5jdGlvbi5jcHA6CisgICAg
ICAgIChKU0M6OkpTTmF0aXZlU3RkRnVuY3Rpb246OmNyZWF0ZSk6CisgICAgICAgICogcnVudGlt
ZS9KU09iamVjdC5jcHA6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpwdXREaXJlY3ROYXRpdmVG
dW5jdGlvbik6CisgICAgICAgICogcnVudGltZS9KU09iamVjdC5oOgorICAgICAgICAqIHJ1bnRp
bWUvTG9va3VwLmg6CisgICAgICAgIChKU0M6Okhhc2hUYWJsZVZhbHVlOjpmdW5jdGlvbkxlbmd0
aCk6CisgICAgICAgIChKU0M6Okhhc2hUYWJsZVZhbHVlOjpzaWduYXR1cmUpOgorICAgICAgICAo
SlNDOjpyZWlmeVN0YXRpY1Byb3BlcnR5KToKKyAgICAgICAgKiBydW50aW1lL05hdGl2ZUV4ZWN1
dGFibGUuY3BwOgorICAgICAgICAoSlNDOjpOYXRpdmVFeGVjdXRhYmxlOjpjcmVhdGUpOgorICAg
ICAgICAoSlNDOjpOYXRpdmVFeGVjdXRhYmxlOjpOYXRpdmVFeGVjdXRhYmxlKToKKyAgICAgICAg
KiBydW50aW1lL05hdGl2ZUV4ZWN1dGFibGUuaDoKKyAgICAgICAgKiBydW50aW1lL1Byb3BlcnR5
U2xvdC5oOgorICAgICAgICAqIHJ1bnRpbWUvVk0uY3BwOgorICAgICAgICAoSlNDOjpWTTo6Z2V0
SG9zdEZ1bmN0aW9uKToKKyAgICAgICAgKiBydW50aW1lL1ZNLmg6CisKIDIwMTYtMTAtMjkgIFl1
c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CiAKICAgICAgICAgW0pTQ10gSlNP
Ti5zdHJpbmdpZnkgc2hvdWxkIGhhbmRsZSBQcm94eSB3aGljaCBpcyBub24gSlNBcnJheSBidXQg
aXNBcnJheSBpcyB0cnVlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2ExMWNjOGMzOGQ4Yzk4MGI2ZDhmZjc4MTkw
Mzc2Mzk3MTU4NTNiNS4uZjk3NGU5OWM3MmE0NGM0NjA1YTRlMWIyM2M5Mjk2MGEzNjZiMmM0MCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDg3IEBACisyMDE2LTExLTAxICBZdXN1a2UgU3V6dWtpICA8
dXRhdGFuZS50ZWFAZ21haWwuY29tPgorCisgICAgICAgIFtET01KSVRdIEFkZCBET01KSVQ6OlNp
Z25hdHVyZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTYyOTgwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
Tm8gbmV3IHRlc3RzIChPT1BTISkuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAg
ICAgKiBEZXJpdmVkU291cmNlcy5tYWtlOgorICAgICAgICAqIEZvcndhcmRpbmdIZWFkZXJzL2J5
dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmg6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9kb21q
aXQvRE9NSklUQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5oLgorICAgICAgICAqIEZvcndhcmRpbmdI
ZWFkZXJzL2RvbWppdC9ET01KSVRTaWduYXR1cmUuaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJD
b3JlL2RvbWppdC9ET01KSVRBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmNwcC4KKyAgICAgICAgKiBX
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogYmluZGluZ3MvanMv
SlNET01HbG9iYWxPYmplY3QuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5l
cmF0b3JKUy5wbToKKyAgICAgICAgKEdlbmVyYXRlSGVhZGVyKToKKyAgICAgICAgKEdlbmVyYXRl
UHJvcGVydGllc0hhc2hUYWJsZSk6CisgICAgICAgIChHZXRVbnNhZmVBcmd1bWVudFR5cGUpOgor
ICAgICAgICAoR2V0QXJndW1lbnRUeXBlRmlsdGVyKToKKyAgICAgICAgKEdldFJlc3VsdFR5cGVG
aWx0ZXIpOgorICAgICAgICAoR2VuZXJhdGVJbXBsZW1lbnRhdGlvbik6CisgICAgICAgIChVbnNh
ZmVUb05hdGl2ZSk6CisgICAgICAgIChHZW5lcmF0ZUhhc2hUYWJsZVZhbHVlQXJyYXkpOgorICAg
ICAgICAoQ29tcHV0ZUZ1bmN0aW9uU3BlY2lhbCk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0
cy9JRExBdHRyaWJ1dGVzLnR4dDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0RE9NSklULmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJpbmRpbmdDYWxsZXI8SlNUZXN0
RE9NSklUPjo6Y2FzdEZvck9wZXJhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpUZXN0RE9NSklU
QW55QXR0ckRPTUpJVDo6VGVzdERPTUpJVEFueUF0dHJET01KSVQpOgorICAgICAgICAoV2ViQ29y
ZTo6VGVzdERPTUpJVEJvb2xlYW5BdHRyRE9NSklUOjpUZXN0RE9NSklUQm9vbGVhbkF0dHJET01K
SVQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdERPTUpJVEJ5dGVBdHRyRE9NSklUOjpUZXN0RE9N
SklUQnl0ZUF0dHJET01KSVQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdERPTUpJVE9jdGV0QXR0
ckRPTUpJVDo6VGVzdERPTUpJVE9jdGV0QXR0ckRPTUpJVCk6CisgICAgICAgIChXZWJDb3JlOjpU
ZXN0RE9NSklUU2hvcnRBdHRyRE9NSklUOjpUZXN0RE9NSklUU2hvcnRBdHRyRE9NSklUKToKKyAg
ICAgICAgKFdlYkNvcmU6OlRlc3RET01KSVRVbnNpZ25lZFNob3J0QXR0ckRPTUpJVDo6VGVzdERP
TUpJVFVuc2lnbmVkU2hvcnRBdHRyRE9NSklUKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RET01K
SVRMb25nQXR0ckRPTUpJVDo6VGVzdERPTUpJVExvbmdBdHRyRE9NSklUKToKKyAgICAgICAgKFdl
YkNvcmU6OlRlc3RET01KSVRVbnNpZ25lZExvbmdBdHRyRE9NSklUOjpUZXN0RE9NSklUVW5zaWdu
ZWRMb25nQXR0ckRPTUpJVCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0RE9NSklUTG9uZ0xvbmdB
dHRyRE9NSklUOjpUZXN0RE9NSklUTG9uZ0xvbmdBdHRyRE9NSklUKToKKyAgICAgICAgKFdlYkNv
cmU6OlRlc3RET01KSVRVbnNpZ25lZExvbmdMb25nQXR0ckRPTUpJVDo6VGVzdERPTUpJVFVuc2ln
bmVkTG9uZ0xvbmdBdHRyRE9NSklUKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RET01KSVRGbG9h
dEF0dHJET01KSVQ6OlRlc3RET01KSVRGbG9hdEF0dHJET01KSVQpOgorICAgICAgICAoV2ViQ29y
ZTo6VGVzdERPTUpJVFVucmVzdHJpY3RlZEZsb2F0QXR0ckRPTUpJVDo6VGVzdERPTUpJVFVucmVz
dHJpY3RlZEZsb2F0QXR0ckRPTUpJVCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0RE9NSklURG91
YmxlQXR0ckRPTUpJVDo6VGVzdERPTUpJVERvdWJsZUF0dHJET01KSVQpOgorICAgICAgICAoV2Vi
Q29yZTo6VGVzdERPTUpJVFVucmVzdHJpY3RlZERvdWJsZUF0dHJET01KSVQ6OlRlc3RET01KSVRV
bnJlc3RyaWN0ZWREb3VibGVBdHRyRE9NSklUKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RET01K
SVREb21TdHJpbmdBdHRyRE9NSklUOjpUZXN0RE9NSklURG9tU3RyaW5nQXR0ckRPTUpJVCk6Cisg
ICAgICAgIChXZWJDb3JlOjpUZXN0RE9NSklUQnl0ZVN0cmluZ0F0dHJET01KSVQ6OlRlc3RET01K
SVRCeXRlU3RyaW5nQXR0ckRPTUpJVCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0RE9NSklUVXN2
U3RyaW5nQXR0ckRPTUpJVDo6VGVzdERPTUpJVFVzdlN0cmluZ0F0dHJET01KSVQpOgorICAgICAg
ICAoV2ViQ29yZTo6VGVzdERPTUpJVE5vZGVBdHRyRE9NSklUOjpUZXN0RE9NSklUTm9kZUF0dHJE
T01KSVQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdERPTUpJVEJvb2xlYW5OdWxsYWJsZUF0dHJE
T01KSVQ6OlRlc3RET01KSVRCb29sZWFuTnVsbGFibGVBdHRyRE9NSklUKToKKyAgICAgICAgKFdl
YkNvcmU6OlRlc3RET01KSVRCeXRlTnVsbGFibGVBdHRyRE9NSklUOjpUZXN0RE9NSklUQnl0ZU51
bGxhYmxlQXR0ckRPTUpJVCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0RE9NSklUT2N0ZXROdWxs
YWJsZUF0dHJET01KSVQ6OlRlc3RET01KSVRPY3RldE51bGxhYmxlQXR0ckRPTUpJVCk6CisgICAg
ICAgIChXZWJDb3JlOjpUZXN0RE9NSklUU2hvcnROdWxsYWJsZUF0dHJET01KSVQ6OlRlc3RET01K
SVRTaG9ydE51bGxhYmxlQXR0ckRPTUpJVCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0RE9NSklU
VW5zaWduZWRTaG9ydE51bGxhYmxlQXR0ckRPTUpJVDo6VGVzdERPTUpJVFVuc2lnbmVkU2hvcnRO
dWxsYWJsZUF0dHJET01KSVQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdERPTUpJVExvbmdOdWxs
YWJsZUF0dHJET01KSVQ6OlRlc3RET01KSVRMb25nTnVsbGFibGVBdHRyRE9NSklUKToKKyAgICAg
ICAgKFdlYkNvcmU6OlRlc3RET01KSVRVbnNpZ25lZExvbmdOdWxsYWJsZUF0dHJET01KSVQ6OlRl
c3RET01KSVRVbnNpZ25lZExvbmdOdWxsYWJsZUF0dHJET01KSVQpOgorICAgICAgICAoV2ViQ29y
ZTo6VGVzdERPTUpJVExvbmdMb25nTnVsbGFibGVBdHRyRE9NSklUOjpUZXN0RE9NSklUTG9uZ0xv
bmdOdWxsYWJsZUF0dHJET01KSVQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdERPTUpJVFVuc2ln
bmVkTG9uZ0xvbmdOdWxsYWJsZUF0dHJET01KSVQ6OlRlc3RET01KSVRVbnNpZ25lZExvbmdMb25n
TnVsbGFibGVBdHRyRE9NSklUKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RET01KSVRGbG9hdE51
bGxhYmxlQXR0ckRPTUpJVDo6VGVzdERPTUpJVEZsb2F0TnVsbGFibGVBdHRyRE9NSklUKToKKyAg
ICAgICAgKFdlYkNvcmU6OlRlc3RET01KSVRVbnJlc3RyaWN0ZWRGbG9hdE51bGxhYmxlQXR0ckRP
TUpJVDo6VGVzdERPTUpJVFVucmVzdHJpY3RlZEZsb2F0TnVsbGFibGVBdHRyRE9NSklUKToKKyAg
ICAgICAgKFdlYkNvcmU6OlRlc3RET01KSVREb3VibGVOdWxsYWJsZUF0dHJET01KSVQ6OlRlc3RE
T01KSVREb3VibGVOdWxsYWJsZUF0dHJET01KSVQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdERP
TUpJVFVucmVzdHJpY3RlZERvdWJsZU51bGxhYmxlQXR0ckRPTUpJVDo6VGVzdERPTUpJVFVucmVz
dHJpY3RlZERvdWJsZU51bGxhYmxlQXR0ckRPTUpJVCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0
RE9NSklURG9tU3RyaW5nTnVsbGFibGVBdHRyRE9NSklUOjpUZXN0RE9NSklURG9tU3RyaW5nTnVs
bGFibGVBdHRyRE9NSklUKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RET01KSVRCeXRlU3RyaW5n
TnVsbGFibGVBdHRyRE9NSklUOjpUZXN0RE9NSklUQnl0ZVN0cmluZ051bGxhYmxlQXR0ckRPTUpJ
VCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0RE9NSklUVXN2U3RyaW5nTnVsbGFibGVBdHRyRE9N
SklUOjpUZXN0RE9NSklUVXN2U3RyaW5nTnVsbGFibGVBdHRyRE9NSklUKToKKyAgICAgICAgKFdl
YkNvcmU6OlRlc3RET01KSVROb2RlTnVsbGFibGVBdHRyRE9NSklUOjpUZXN0RE9NSklUTm9kZU51
bGxhYmxlQXR0ckRPTUpJVCk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RET01KSVRQcm90b3R5
cGVGdW5jdGlvbkdldEF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RET01KSVRQ
cm90b3R5cGVGdW5jdGlvbkdldEF0dHJpYnV0ZUNhbGxlcik6CisgICAgICAgIChXZWJDb3JlOjp1
bnNhZmVKc1Rlc3RET01KSVRQcm90b3R5cGVGdW5jdGlvbkdldEF0dHJpYnV0ZSk6CisgICAgICAg
ICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RET01KSVQuaWRsOgorICAgICAgICAqIGRvbS9F
bGVtZW50LmlkbDoKKyAgICAgICAgKiBkb21qaXQvRE9NSklUQWJzdHJhY3RIZWFwUmVwb3NpdG9y
eS55YW1sOiBBZGRlZC4KKyAgICAgICAgKiBkb21qaXQvRE9NSklUSURMQ29udmVydC5oOiBBZGRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OkRPTUpJVDo6RGlyZWN0Q29udmVydGVyPElETERPTVN0cmlu
Zz46OmRpcmVjdENvbnZlcnQ8U3RyaW5nQ29udmVyc2lvbkNvbmZpZ3VyYXRpb246Ok5vcm1hbD4p
OgorICAgICAgICAqIGRvbWppdC9ET01KSVRJRExUeXBlLmg6IEFkZGVkLgorICAgICAgICAqIGRv
bWppdC9ET01KSVRJRExUeXBlRmlsdGVyLmg6IEFkZGVkLgorICAgICAgICAqIGRvbWppdC9KU0Rv
Y3VtZW50RE9NSklULmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50RG9jdW1lbnRFbGVt
ZW50RE9NSklUOjpjYWxsRE9NR2V0dGVyKToKKyAgICAgICAgKiBkb21qaXQvSlNOb2RlRE9NSklU
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVGaXJzdENoaWxkRE9NSklUOjpjYWxsRE9NR2V0
dGVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVMYXN0Q2hpbGRET01KSVQ6OmNhbGxET01HZXR0
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZU5leHRTaWJsaW5nRE9NSklUOjpjYWxsRE9NR2V0
dGVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVQcmV2aW91c1NpYmxpbmdET01KSVQ6OmNhbGxE
T01HZXR0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZVBhcmVudE5vZGVET01KSVQ6OmNhbGxE
T01HZXR0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZU93bmVyRG9jdW1lbnRET01KSVQ6OmNh
bGxET01HZXR0ZXIpOgorICAgICAgICAqIGRvbWppdC9nZW5lcmF0ZS1hYnN0cmFjdC1oZWFwLnJi
OiBBZGRlZC4KKwogMjAxNi0xMC0zMCAgQnJlbnQgRnVsZ2hhbSAgPGJmdWxnaGFtQGFwcGxlLmNv
bT4KIAogICAgICAgICBVbnJldmlld2VkIGZpeDogQ29ycmVjdCBDaGFuZ2VMb2cgYWZ0ZXIgbXkg
YmFkIG1lcmdlLgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2
YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA0MzU1YmRiMjViODYy
YzI3NDdhNDJkOWEwOGU4MTc2NWEzM2NkZDRhLi40OTQxMDIxNzIwZWY5Y2Y4OWU3ODE2NmEzZDNk
NGM4NWU4MzMwZjc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlw
dENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTI1OSwxMyAr
MTI1OSwxMyBAQAogCQk1M0ZBMkFFMzFDRjM4MDM5MDAyMjcxMUQgLyogTExJbnRQcm90b3R5cGVM
b2FkQWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzRkEyQUUyMUNGMzgwMzkwMDIyNzExRCAvKiBMTElu
dFByb3RvdHlwZUxvYWRBZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQuY3BwICovOyB9OwogCQk1
M0ZEMDREMzFEN0FCMjc3MDAzMjg3RDMgLyogV2FzbUNhbGxpbmdDb252ZW50aW9uLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzRkQwNEQxMUQ3QUIx
ODcwMDMyODdEMyAvKiBXYXNtQ2FsbGluZ0NvbnZlbnRpb24uY3BwICovOyB9OwogCQk1M0ZEMDRE
NDFEN0FCMjkxMDAzMjg3RDMgLyogV2FzbUNhbGxpbmdDb252ZW50aW9uLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1M0ZEMDREMjFEN0FCMTg3MDAzMjg3
RDMgLyogV2FzbUNhbGxpbmdDb252ZW50aW9uLmggKi87IH07Ci0JCTVDNEU4RTk2MURCRUJFNjIw
MDM2RjFGQyAvKiBKU09OUGFyc2VUZXN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDVDNEU4RTk0MURCRUJEQTIwMDM2RjFGQyAvKiBKU09OUGFyc2VU
ZXN0LmNwcCAqLzsgfTsKIAkJNUI3MENGREUxREI2OUU2NjAwRUMyM0Y5IC8qIEpTQXN5bmNGdW5j
dGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUI3
MENGRDgxREI2OUU1QzAwRUMyM0Y5IC8qIEpTQXN5bmNGdW5jdGlvbi5oICovOyB9OwogCQk1Qjcw
Q0ZERjFEQjY5RTY2MDBFQzIzRjkgLyogSlNBc3luY0Z1bmN0aW9uLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVCNzBDRkQ5MURCNjlFNUMwMEVDMjNG
OSAvKiBKU0FzeW5jRnVuY3Rpb24uY3BwICovOyB9OwogCQk1QjcwQ0ZFMDFEQjY5RTY2MDBFQzIz
RjkgLyogQXN5bmNGdW5jdGlvblByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNUI3MENGREExREI2OUU1QzAwRUMyM0Y5IC8qIEFzeW5jRnVu
Y3Rpb25Qcm90b3R5cGUuaCAqLzsgfTsKIAkJNUI3MENGRTExREI2OUU2NjAwRUMyM0Y5IC8qIEFz
eW5jRnVuY3Rpb25Qcm90b3R5cGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNUI3MENGREIxREI2OUU1QzAwRUMyM0Y5IC8qIEFzeW5jRnVuY3Rpb25Q
cm90b3R5cGUuY3BwICovOyB9OwogCQk1QjcwQ0ZFMjFEQjY5RTY2MDBFQzIzRjkgLyogQXN5bmNG
dW5jdGlvbkNvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1QjcwQ0ZEQzFEQjY5RTVDMDBFQzIzRjkgLyogQXN5bmNGdW5jdGlvbkNvbnN0
cnVjdG9yLmggKi87IH07CiAJCTVCNzBDRkUzMURCNjlFNjYwMEVDMjNGOSAvKiBBc3luY0Z1bmN0
aW9uQ29uc3RydWN0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNUI3MENGREQxREI2OUU1QzAwRUMyM0Y5IC8qIEFzeW5jRnVuY3Rpb25Db25zdHJ1
Y3Rvci5jcHAgKi87IH07CisJCTVDNEU4RTk2MURCRUJFNjIwMDM2RjFGQyAvKiBKU09OUGFyc2VU
ZXN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVD
NEU4RTk0MURCRUJEQTIwMDM2RjFGQyAvKiBKU09OUGFyc2VUZXN0LmNwcCAqLzsgfTsKIAkJNUQ1
RDhBRDEwRTBEMEVCRTAwRjlDNjkyIC8qIGxpYmVkaXQuZHlsaWIgaW4gRnJhbWV3b3JrcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1RDVEOEFEMDBFMEQwRUJFMDBGOUM2OTIg
LyogbGliZWRpdC5keWxpYiAqLzsgfTsKIAkJNURCQjE1MUIxMzFEMEIzMTAwNTZBRDM2IC8qIHRl
c3RhcGkuanMgaW4gQ29weSBTdXBwb3J0IFNjcmlwdCAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAxNEQ4NTc3NDBBNDY5NkM4MDAzMjE0NkMgLyogdGVzdGFwaS5qcyAqLzsgfTsK
IAkJNURCQjE1MjUxMzFEMEJENzAwNTZBRDM2IC8qIG1pbmlkb20uanMgaW4gQ29weSBTdXBwb3J0
IFNjcmlwdCAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNDEyMTEwRDBBNDg3
ODg3MDA0ODAyNTUgLyogbWluaWRvbS5qcyAqLzsgfTsKQEAgLTIxNzgsNiArMjE3OCw3IEBACiAJ
CUUzM0Y1MDg1MUI4NDM3QTAwMDQxMzg1NiAvKiBKU0ludGVybmFsUHJvbWlzZURlZmVycmVkLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzNGNTA4MzFC
ODQzN0EwMDA0MTM4NTYgLyogSlNJbnRlcm5hbFByb21pc2VEZWZlcnJlZC5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUUzM0Y1MDg3MUI4NDQ5RUYw
MDQxMzg1NiAvKiBKU0ludGVybmFsUHJvbWlzZUNvbnN0cnVjdG9yLmx1dC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTMzRjUwODYxQjg0NDlFRjAwNDEz
ODU2IC8qIEpTSW50ZXJuYWxQcm9taXNlQ29uc3RydWN0b3IubHV0LmggKi87IH07CiAJCUUzNEVE
QkY3MURCNUZGQzkwMERDODdBNSAvKiBGcmFtZVRyYWNlcnMuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzNEVEQkY2MURCNUZGQzEwMERDODdBNSAvKiBG
cmFtZVRyYWNlcnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OworCQlFMzUwNzA4QTFEQzQ5QkJGMDA4OUJDRDYgLyogRE9NSklUU2lnbmF0dXJlLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzUwNzA4OTFEQzQ5
QkI2MDA4OUJDRDYgLyogRE9NSklUU2lnbmF0dXJlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTM1NDYyMkIxQjYwNjVEMTAwNTQ1Mzg2IC8qIENv
bnN0cnVjdEFiaWxpdHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEUzNTQ2MjJBMUI2MDY1RDEwMDU0NTM4NiAvKiBDb25zdHJ1Y3RBYmlsaXR5LmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTM1NTVCOEEx
REFFMDNBNTAwRjM2OTIxIC8qIERPTUpJVENhbGxET01HZXR0ZXJQYXRjaHBvaW50LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzU1NUI4OTFEQUUwM0Ey
MDBGMzY5MjEgLyogRE9NSklUQ2FsbERPTUdldHRlclBhdGNocG9pbnQuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFMzU1RjM1MjFCN0RDODUzMDBD
NTBEQzUgLyogTW9kdWxlTG9hZGVyUHJvdG90eXBlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzNTVGMzUwMUI3REM4NTMwMEM1MERDNSAvKiBNb2R1
bGVMb2FkZXJQcm90b3R5cGUuY3BwICovOyB9OwpAQCAtMzU4OCw4ICszNTg5LDYgQEAKIAkJNTNG
QTJBRTIxQ0YzODAzOTAwMjI3MTFEIC8qIExMSW50UHJvdG90eXBlTG9hZEFkYXB0aXZlU3RydWN0
dXJlV2F0Y2hwb2ludC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBM
TEludFByb3RvdHlwZUxvYWRBZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk1M0ZEMDREMTFEN0FCMTg3MDAzMjg3RDMgLyogV2FzbUNh
bGxpbmdDb252ZW50aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFdhc21DYWxsaW5nQ29udmVudGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTUzRkQwNEQyMUQ3QUIxODcwMDMyODdEMyAvKiBXYXNtQ2FsbGluZ0NvbnZlbnRpb24uaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2FzbUNhbGxpbmdDb252ZW50aW9uLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTVDNEU4RTk0MURCRUJEQTIwMDM2RjFGQyAvKiBK
U09OUGFyc2VUZXN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEpT
T05QYXJzZVRlc3QuY3BwOyBwYXRoID0gQVBJL3Rlc3RzL0pTT05QYXJzZVRlc3QuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk1QzRFOEU5NTFEQkVCREEyMDAzNkYxRkMgLyogSlNP
TlBhcnNlVGVzdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBKU09OUGFyc2VU
ZXN0Lmg7IHBhdGggPSBBUEkvdGVzdHMvSlNPTlBhcnNlVGVzdC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk1QjcwQ0ZEODFEQjY5RTVDMDBFQzIzRjkgLyogSlNBc3luY0Z1bmN0aW9u
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTQXN5bmNGdW5jdGlvbi5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1QjcwQ0ZEOTFEQjY5RTVDMDBFQzIzRjkgLyog
SlNBc3luY0Z1bmN0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEpTQXN5bmNGdW5jdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVCNzBD
RkRBMURCNjlFNUMwMEVDMjNGOSAvKiBBc3luY0Z1bmN0aW9uUHJvdG90eXBlLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFzeW5jRnVuY3Rpb25Qcm90b3R5cGUuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTM1OTcsNiArMzU5Niw4IEBACiAJCTVCNzBDRkRDMURC
NjlFNUMwMEVDMjNGOSAvKiBBc3luY0Z1bmN0aW9uQ29uc3RydWN0b3IuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gQXN5bmNGdW5jdGlvbkNvbnN0cnVjdG9yLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVCNzBDRkREMURCNjlFNUMwMEVDMjNGOSAvKiBBc3luY0Z1
bmN0aW9uQ29uc3RydWN0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gQXN5bmNGdW5jdGlvbkNvbnN0cnVjdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNUI4MjQzMDQxREI3QUE0OTAwRUE2Mzg0IC8qIEFzeW5jRnVuY3Rpb25Qcm90b3R5cGUu
anMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmphdmFzY3JpcHQ7IHBhdGggPSBBc3luY0Z1bmN0aW9u
UHJvdG90eXBlLmpzOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1QzRFOEU5NDFEQkVC
REEyMDAzNkYxRkMgLyogSlNPTlBhcnNlVGVzdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IG5hbWUgPSBKU09OUGFyc2VUZXN0LmNwcDsgcGF0aCA9IEFQSS90ZXN0cy9KU09OUGFy
c2VUZXN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNUM0RThFOTUxREJFQkRB
MjAwMzZGMUZDIC8qIEpTT05QYXJzZVRlc3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBu
YW1lID0gSlNPTlBhcnNlVGVzdC5oOyBwYXRoID0gQVBJL3Rlc3RzL0pTT05QYXJzZVRlc3QuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUQ1RDhBRDAwRTBEMEVCRTAwRjlDNjkyIC8q
IGxpYmVkaXQuZHlsaWIgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSAiY29tcGlsZWQubWFjaC1vLmR5bGliIjsgbmFtZSA9IGxpYmVkaXQuZHlsaWI7IHBh
dGggPSAvdXNyL2xpYi9saWJlZGl0LmR5bGliOyBzb3VyY2VUcmVlID0gIjxhYnNvbHV0ZT4iOyB9
OwogCQk1REFGRDZDQjE0NkI2ODYzMDBGQkVGQjQgLyogSlNDLnhjY29uZmlnICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC54Y2NvbmZpZzsgcGF0
aCA9IEpTQy54Y2NvbmZpZzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUREREY0NDYx
NEZFRTcyMjAwQjRGQjREIC8qIExMSW50RGVzaXJlZE9mZnNldHMuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBuYW1lID0gTExJbnREZXNpcmVkT2Zmc2V0cy5oOyBwYXRoID0gTExJbnRPZmZz
ZXRzL0xMSW50RGVzaXJlZE9mZnNldHMuaDsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJ
UjsgfTsKQEAgLTQ1NzQsNiArNDU3NSw3IEBACiAJCUUzM0Y1MDg2MUI4NDQ5RUYwMDQxMzg1NiAv
KiBKU0ludGVybmFsUHJvbWlzZUNvbnN0cnVjdG9yLmx1dC5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBKU0ludGVybmFsUHJvbWlzZUNvbnN0cnVjdG9yLmx1dC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlFMzNGNTA4ODFCODQ0QTFBMDA0MTM4NTYgLyogSW50ZXJu
YWxQcm9taXNlQ29uc3RydWN0b3IuanMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmphdmFzY3JpcHQ7
IHBhdGggPSBJbnRlcm5hbFByb21pc2VDb25zdHJ1Y3Rvci5qczsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJRTM0RURCRjYxREI1RkZDMTAwREM4N0E1IC8qIEZyYW1lVHJhY2Vycy5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGcmFtZVRyYWNlcnMuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTM1MDcwODkxREM0OUJCNjAwODlCQ0Q2IC8qIERPTUpJVFNp
Z25hdHVyZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBET01KSVRTaWduYXR1
cmUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM1NDYyMkExQjYwNjVEMTAwNTQ1
Mzg2IC8qIENvbnN0cnVjdEFiaWxpdHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gQ29uc3RydWN0QWJpbGl0eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzU1
NUI4OTFEQUUwM0EyMDBGMzY5MjEgLyogRE9NSklUQ2FsbERPTUdldHRlclBhdGNocG9pbnQuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRE9NSklUQ2FsbERPTUdldHRlclBhdGNo
cG9pbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM1NUYzNTAxQjdEQzg1MzAw
QzUwREM1IC8qIE1vZHVsZUxvYWRlclByb3RvdHlwZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBNb2R1bGVMb2FkZXJQcm90b3R5cGUuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtNzQ4NSw2ICs3NDg3LDcgQEAKIAkJCQlFMzdBRDgzQTFEQTQ5Mjgw
MDBGM0Q0MTIgLyogRE9NSklUUGF0Y2hwb2ludFBhcmFtcy5oICovLAogCQkJCUUzN0FEODNCMURB
NDkyODAwMEYzRDQxMiAvKiBET01KSVRSZWcuaCAqLywKIAkJCQlFM0NCMUUyNDFEQTc1NDBBMDBG
QTFFNTYgLyogRE9NSklUU2xvd1BhdGhDYWxscy5oICovLAorCQkJCUUzNTA3MDg5MURDNDlCQjYw
MDg5QkNENiAvKiBET01KSVRTaWduYXR1cmUuaCAqLywKIAkJCQlFM0ZGQzg1MjFEQUQ3RDEwMDBE
RUE1M0UgLyogRE9NSklUVmFsdWUuaCAqLywKIAkJCSk7CiAJCQlwYXRoID0gZG9taml0OwpAQCAt
ODQwNCw2ICs4NDA3LDcgQEAKIAkJCQk0M0FCMjZDNjFDMUE1MzU5MDBEODJBRTYgLyogQjNNYXRo
RXh0cmFzLmggaW4gSGVhZGVycyAqLywKIAkJCQlBRDJGQ0JGMzFEQjU4REFEMDBCM0U3MzYgLyog
V2ViQXNzZW1ibHlJbnN0YW5jZVByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxOEM0
MjkwRTE2RjVDRDAwQjM0NDYwIC8qIEpTU3RyaW5nUmVmQ0YuaCBpbiBIZWFkZXJzICovLAorCQkJ
CUUzNTA3MDhBMURDNDlCQkYwMDg5QkNENiAvKiBET01KSVRTaWduYXR1cmUuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTFBMjhENEE4MTc3QjcxQzgwMDA3RkEzQyAvKiBKU1N0cmluZ1JlZlByaXZhdGUu
aCBpbiBIZWFkZXJzICovLAogCQkJCTBGOTE5RDBEMTU3RUUwQTIwMDRBNEU3RCAvKiBKU1N5bWJv
bFRhYmxlT2JqZWN0LmggaW4gSGVhZGVycyAqLywKIAkJCQk3MEVDQTYwNjFBRkRCRUEyMDA0NDk3
MzkgLyogSlNUZW1wbGF0ZVJlZ2lzdHJ5S2V5LmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsVmFyaWFudC5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxWYXJpYW50LmgKaW5kZXggZGU2ODgwMDZlZjFhOTll
OWRkNjBiMDFhNmUwMTc3Y2I5OGVjN2I1MS4uY2IyODhjNjBiN2E0ZjEzOGJhZjIxNDI4NDllMTM5
MWE4ZDExMWJhNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0Nh
bGxWYXJpYW50LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxWYXJp
YW50LmgKQEAgLTI4LDYgKzI4LDcgQEAKICNpbmNsdWRlICJGdW5jdGlvbkV4ZWN1dGFibGUuaCIK
ICNpbmNsdWRlICJKU0NlbGwuaCIKICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCisjaW5jbHVkZSAi
TmF0aXZlRXhlY3V0YWJsZS5oIgogCiBuYW1lc3BhY2UgSlNDIHsKIApAQCAtMTIwLDYgKzEyMSwy
MCBAQCBjbGFzcyBDYWxsVmFyaWFudCB7CiAgICAgICAgICAgICByZXR1cm4ganNEeW5hbWljQ2Fz
dDxGdW5jdGlvbkV4ZWN1dGFibGUqPihleGVjdXRhYmxlKTsKICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CiAgICAgfQorCisgICAgTmF0aXZlRXhlY3V0YWJsZSogbmF0aXZlRXhlY3V0YWJsZSgpIGNv
bnN0CisgICAgeworICAgICAgICBpZiAoRXhlY3V0YWJsZUJhc2UqIGV4ZWN1dGFibGUgPSB0aGlz
LT5leGVjdXRhYmxlKCkpCisgICAgICAgICAgICByZXR1cm4ganNEeW5hbWljQ2FzdDxOYXRpdmVF
eGVjdXRhYmxlKj4oZXhlY3V0YWJsZSk7CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0K
KworICAgIGNvbnN0IERPTUpJVDo6U2lnbmF0dXJlKiBzaWduYXR1cmVGb3IoQ29kZVNwZWNpYWxp
emF0aW9uS2luZCBraW5kKSBjb25zdAorICAgIHsKKyAgICAgICAgaWYgKE5hdGl2ZUV4ZWN1dGFi
bGUqIG5hdGl2ZUV4ZWN1dGFibGUgPSB0aGlzLT5uYXRpdmVFeGVjdXRhYmxlKCkpCisgICAgICAg
ICAgICByZXR1cm4gbmF0aXZlRXhlY3V0YWJsZS0+c2lnbmF0dXJlRm9yKGtpbmQpOworICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CiAgICAgCiAgICAgdm9pZCBkdW1wKFByaW50U3RyZWFt
JiBvdXQpIGNvbnN0OwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCmluZGV4IDFkMWYzMDg5YWU5MGQ0
NTVkYTBhMTNlZTMwZmI5MjAyZGE4MTRiNzkuLjJlNTYzNTc5YzBjMWVhZDhkZTQyOGUzZGEwZWVh
MWQxMTJjNzA3NjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJz
dHJhY3RJbnRlcnByZXRlcklubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNs
dWRlICJBcnJheUNvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAiREZHQWJzdHJhY3RJbnRlcnByZXRl
ci5oIgogI2luY2x1ZGUgIkRPTUpJVEdldHRlclNldHRlci5oIgorI2luY2x1ZGUgIkRPTUpJVFNp
Z25hdHVyZS5oIgogI2luY2x1ZGUgIkdldEJ5SWRTdGF0dXMuaCIKICNpbmNsdWRlICJHZXR0ZXJT
ZXR0ZXIuaCIKICNpbmNsdWRlICJIYXNoTWFwSW1wbC5oIgpAQCAtMjMwMSw2ICsyMzAyLDEzIEBA
IGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZl
Y3RzKHVuc2lnbmVkIGNsb2JiZXJMaW1pCiAgICAgICAgIGZvck5vZGUobm9kZSkuc2V0VHlwZSht
X2dyYXBoLCBjYWxsRE9NR2V0dGVyRGF0YS0+ZG9tSklULT5yZXN1bHRUeXBlKCkpOwogICAgICAg
ICBicmVhazsKICAgICB9CisgICAgY2FzZSBDYWxsRE9NOiB7CisgICAgICAgIGNvbnN0IERPTUpJ
VDo6U2lnbmF0dXJlKiBzaWduYXR1cmUgPSBub2RlLT5zaWduYXR1cmUoKTsKKyAgICAgICAgaWYg
KHNpZ25hdHVyZS0+ZWZmZWN0LndyaXRlcykKKyAgICAgICAgICAgIGNsb2JiZXJXb3JsZChub2Rl
LT5vcmlnaW4uc2VtYW50aWMsIGNsb2JiZXJMaW1pdCk7CisgICAgICAgIGZvck5vZGUobm9kZSku
c2V0VHlwZShtX2dyYXBoLCBzaWduYXR1cmUtPnJlc3VsdCk7CisgICAgICAgIGJyZWFrOworICAg
IH0KICAgICBjYXNlIENoZWNrQXJyYXk6IHsKICAgICAgICAgaWYgKG5vZGUtPmFycmF5TW9kZSgp
LmFscmVhZHlDaGVja2VkKG1fZ3JhcGgsIG5vZGUsIGZvck5vZGUobm9kZS0+Y2hpbGQxKCkpKSkg
ewogICAgICAgICAgICAgbV9zdGF0ZS5zZXRGb3VuZENvbnN0YW50cyh0cnVlKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKaW5kZXggMzVkYzA3
ODZhODkzNzg1ZjcwZjdiMzJjMGNmN2JjZGRlOWE3ZWRkOS4uOGI5Y2E5N2Q3Y2JhZDFjMDA0ZTYz
Yjc0ZDNhZWYxNWQzNTMwNzM1MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdCeXRlQ29kZVBhcnNlci5jcHAKQEAgLTIxMiw2ICsyMTIsOCBAQCBjbGFzcyBCeXRlQ29kZVBh
cnNlciB7CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hlY2tzRnVuY3Rvcj4KICAgICBib29sIGhh
bmRsZUludHJpbnNpY0NhbGwoTm9kZSogY2FsbGVlLCBpbnQgcmVzdWx0T3BlcmFuZCwgSW50cmlu
c2ljLCBpbnQgcmVnaXN0ZXJPZmZzZXQsIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywg
U3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbiwgY29uc3QgQ2hlY2tzRnVuY3RvciYgaW5zZXJ0Q2hl
Y2tzKTsKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGVja3NGdW5jdG9yPgorICAgIGJvb2wgaGFu
ZGxlRE9NSklUQ2FsbChOb2RlKiBjYWxsZWUsIGludCByZXN1bHRPcGVyYW5kLCBjb25zdCBET01K
SVQ6OlNpZ25hdHVyZSosIGludCByZWdpc3Rlck9mZnNldCwgaW50IGFyZ3VtZW50Q291bnRJbmNs
dWRpbmdUaGlzLCBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uLCBjb25zdCBDaGVja3NGdW5jdG9y
JiBpbnNlcnRDaGVja3MpOworICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoZWNrc0Z1bmN0b3I+CiAg
ICAgYm9vbCBoYW5kbGVJbnRyaW5zaWNHZXR0ZXIoaW50IHJlc3VsdE9wZXJhbmQsIGNvbnN0IEdl
dEJ5SWRWYXJpYW50JiBpbnRyaW5zaWNWYXJpYW50LCBOb2RlKiB0aGlzTm9kZSwgY29uc3QgQ2hl
Y2tzRnVuY3RvciYgaW5zZXJ0Q2hlY2tzKTsKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGVja3NG
dW5jdG9yPgogICAgIGJvb2wgaGFuZGxlVHlwZWRBcnJheUNvbnN0cnVjdG9yKGludCByZXN1bHRP
cGVyYW5kLCBJbnRlcm5hbEZ1bmN0aW9uKiwgaW50IHJlZ2lzdGVyT2Zmc2V0LCBpbnQgYXJndW1l
bnRDb3VudEluY2x1ZGluZ1RoaXMsIFR5cGVkQXJyYXlUeXBlLCBjb25zdCBDaGVja3NGdW5jdG9y
JiBpbnNlcnRDaGVja3MpOwpAQCAtMTcyNSw2ICsxNzI3LDE3IEBAIGJvb2wgQnl0ZUNvZGVQYXJz
ZXI6OmF0dGVtcHRUb0lubGluZUNhbGwoTm9kZSogY2FsbFRhcmdldE5vZGUsIGludCByZXN1bHRP
cGVyYW5kCiAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVCghZGlkSW5zZXJ0Q2hlY2tzKTsKICAg
ICAgICAgICAgIC8vIFdlIG1pZ2h0IHN0aWxsIHRyeSB0byBpbmxpbmUgdGhlIEludHJpbnNpYyBi
ZWNhdXNlIGl0IG1pZ2h0IGJlIGEgYnVpbHRpbiBKUyBmdW5jdGlvbi4KICAgICAgICAgfQorCisg
ICAgICAgIGlmIChjb25zdCBET01KSVQ6OlNpZ25hdHVyZSogc2lnbmF0dXJlID0gY2FsbGVlLnNp
Z25hdHVyZUZvcihzcGVjaWFsaXphdGlvbktpbmQpKSB7CisgICAgICAgICAgICBpZiAoaGFuZGxl
RE9NSklUQ2FsbChjYWxsVGFyZ2V0Tm9kZSwgcmVzdWx0T3BlcmFuZCwgc2lnbmF0dXJlLCByZWdp
c3Rlck9mZnNldCwgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIHByZWRpY3Rpb24sIGluc2Vy
dENoZWNrc1dpdGhBY2NvdW50aW5nKSkgeworICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJU
KGRpZEluc2VydENoZWNrcyk7CisgICAgICAgICAgICAgICAgYWRkVG9HcmFwaChQaGFudG9tLCBj
YWxsVGFyZ2V0Tm9kZSk7CisgICAgICAgICAgICAgICAgZW1pdEFyZ3VtZW50UGhhbnRvbXMocmVn
aXN0ZXJPZmZzZXQsIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKTsKKyAgICAgICAgICAgICAg
ICBpbmxpbmluZ0JhbGFuY2UtLTsKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKCFkaWRJbnNlcnRDaGVja3MpOwor
ICAgICAgICB9CiAgICAgfQogICAgIAogICAgIHVuc2lnbmVkIG15SW5saW5pbmdDb3N0ID0gaW5s
aW5pbmdDb3N0KGNhbGxlZSwgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIElubGluZUNhbGxG
cmFtZTo6Y2FsbE1vZGVGb3Ioa2luZCkpOwpAQCAtMjYwMCw2ICsyNjEzLDM2IEBAIGJvb2wgQnl0
ZUNvZGVQYXJzZXI6OmhhbmRsZUludHJpbnNpY0NhbGwoTm9kZSogY2FsbGVlLCBpbnQgcmVzdWx0
T3BlcmFuZCwgSW50cmluCiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIENoZWNrc0Z1bmN0b3I+Citi
b29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVET01KSVRDYWxsKE5vZGUqLCBpbnQgcmVzdWx0T3Bl
cmFuZCwgY29uc3QgRE9NSklUOjpTaWduYXR1cmUqIHNpZ25hdHVyZSwgaW50IHJlZ2lzdGVyT2Zm
c2V0LCBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIFNwZWN1bGF0ZWRUeXBlIHByZWRp
Y3Rpb24sIGNvbnN0IENoZWNrc0Z1bmN0b3ImIGluc2VydENoZWNrcykKK3sKKyAgICBpZiAoYXJn
dW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgIT0gc3RhdGljX2Nhc3Q8aW50PigxICsgc2lnbmF0dXJl
LT5hcmd1bWVudENvdW50KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmIChtX2lubGlu
ZVN0YWNrVG9wLT5tX2V4aXRQcm9maWxlLmhhc0V4aXRTaXRlKG1fY3VycmVudEluZGV4LCBCYWRU
eXBlKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaW5zZXJ0Q2hlY2tzKCk7CisKKyAg
ICBjb25zdCBpbnQgbWF4QXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgPSAxICsgSlNDX0RPTUpJ
VF9TSUdOQVRVUkVfTUFYX0FSR1VNRU5UUzsKKyAgICBzdGF0aWNfYXNzZXJ0KG1heEFyZ3VtZW50
Q291bnRJbmNsdWRpbmdUaGlzIDw9IDMsICJET01KSVQgQ2FsbERPTSBjdXJyZW50bHkgb25seSBz
dXBwb3J0cyB1cCB0byAyICgrIHRoaXMpIGFyZ3VtZW50cy4iKTsKKyAgICBFZGdlIGVkZ2VzW21h
eEFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzXTsKKworICAgIE5vZGUqIHRoaXNOb2RlID0gZ2V0
KHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50KDAsIHJlZ2lzdGVyT2Zmc2V0KSk7CisgICAgUmVm
PERPTUpJVDo6UGF0Y2hwb2ludD4gY2hlY2tET01QYXRjaHBvaW50ID0gc2lnbmF0dXJlLT5jaGVj
a0RPTSgpOworICAgIG1fZ3JhcGgubV9kb21KSVRQYXRjaHBvaW50cy5hcHBlbmQoY2hlY2tET01Q
YXRjaHBvaW50LnB0cigpKTsKKyAgICBhZGRUb0dyYXBoKENoZWNrRE9NLCBPcEluZm8oY2hlY2tE
T01QYXRjaHBvaW50LnB0cigpKSwgT3BJbmZvKHNpZ25hdHVyZS0+Y2xhc3NJbmZvKSwgdGhpc05v
ZGUpOworICAgIGVkZ2VzWzBdID0gRWRnZSh0aGlzTm9kZSk7CisKKyAgICBmb3IgKGludCBpID0g
MTsgaSA8IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzOyArK2kpCisgICAgICAgIGVkZ2VzW2ld
ID0gRWRnZShnZXQodmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnQoaSwgcmVnaXN0ZXJPZmZzZXQp
KSk7CisgICAgTm9kZSogY2FsbERPTSA9IGFkZFRvR3JhcGgoQ2FsbERPTSwgT3BJbmZvKHNpZ25h
dHVyZSksIE9wSW5mbyhwcmVkaWN0aW9uKSwgZWRnZXNbMF0sIGVkZ2VzWzFdLCBlZGdlc1syXSk7
CisgICAgaWYgKCFzaWduYXR1cmUtPmVmZmVjdC5tdXN0R2VuZXJhdGUoKSkKKyAgICAgICAgY2Fs
bERPTS0+Y2xlYXJGbGFncyhOb2RlTXVzdEdlbmVyYXRlKTsKKyAgICBzZXQoVmlydHVhbFJlZ2lz
dGVyKHJlc3VsdE9wZXJhbmQpLCBjYWxsRE9NKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworCit0
ZW1wbGF0ZTx0eXBlbmFtZSBDaGVja3NGdW5jdG9yPgogYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFu
ZGxlSW50cmluc2ljR2V0dGVyKGludCByZXN1bHRPcGVyYW5kLCBjb25zdCBHZXRCeUlkVmFyaWFu
dCYgdmFyaWFudCwgTm9kZSogdGhpc05vZGUsIGNvbnN0IENoZWNrc0Z1bmN0b3ImIGluc2VydENo
ZWNrcykKIHsKICAgICBzd2l0Y2ggKHZhcmlhbnQuaW50cmluc2ljKCkpIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgKaW5kZXggNWEzMjk0ZDA1MWMzNzg3ZmMwY2Ux
OGIwOTdlMzQ0NTlkMDc5ZDQyZC4uNGFhMjY1YjhjY2FiMWJkY2U0ZTMxMzBhMTZhZjQ4YjZhNTQ4
ZWE5MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXpl
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgKQEAgLTM0
LDYgKzM0LDcgQEAKICNpbmNsdWRlICJERkdMYXp5Tm9kZS5oIgogI2luY2x1ZGUgIkRGR1B1cmVW
YWx1ZS5oIgogI2luY2x1ZGUgIkRPTUpJVENhbGxET01HZXR0ZXJQYXRjaHBvaW50LmgiCisjaW5j
bHVkZSAiRE9NSklUU2lnbmF0dXJlLmgiCiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZH
IHsKIApAQCAtOTUyLDIwICs5NTMsMzggQEAgdm9pZCBjbG9iYmVyaXplKEdyYXBoJiBncmFwaCwg
Tm9kZSogbm9kZSwgY29uc3QgUmVhZEZ1bmN0b3ImIHJlYWQsIGNvbnN0IFdyaXRlRnUKICAgICAg
ICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICB3cml0ZShBYnN0cmFjdEhlYXAoRE9NU3RhdGUs
IGVmZmVjdC53cml0ZXMucmF3UmVwcmVzZW50YXRpb24oKSkpOwogICAgICAgICB9Ci0gICAgICAg
IGlmIChlZmZlY3QuZGVmKSB7Ci0gICAgICAgICAgICBET01KSVQ6OkhlYXBSYW5nZSByYW5nZSA9
IGVmZmVjdC5kZWYudmFsdWUoKTsKKyAgICAgICAgaWYgKGVmZmVjdC5kZWYgIT0gRE9NSklUOjpI
ZWFwUmFuZ2U6OnRvcCgpKSB7CisgICAgICAgICAgICBET01KSVQ6OkhlYXBSYW5nZSByYW5nZSA9
IGVmZmVjdC5kZWY7CiAgICAgICAgICAgICBpZiAocmFuZ2UgPT0gRE9NSklUOjpIZWFwUmFuZ2U6
Om5vbmUoKSkKICAgICAgICAgICAgICAgICBkZWYoUHVyZVZhbHVlKG5vZGUsIG5vZGUtPmNhbGxE
T01HZXR0ZXJEYXRhKCktPmRvbUpJVCkpOwogICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAg
ICAgICAgLy8gRGVmIHdpdGggaGVhcCBsb2NhdGlvbi4gV2UgZG8gbm90IGluY2x1ZGUgIkdsb2Jh
bE9iamVjdCIgZm9yIHRoYXQgc2luY2UgdGhpcyBpbmZvcm1hdGlvbiBpcyBpbmNsdWRlZCBpbiB0
aGUgYmFzZSBub2RlLgotICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBXaGVuIHN1cHBvcnRpbmcg
dGhlIG90aGVyIG5vZGVzIGxpa2UgZ2V0RWxlbWVudEJ5SWQoInN0cmluZyIpLCB3ZSBzaG91bGQg
aW5jbHVkZSB0aGUgYmFzZSBhbmQgdGhlIGlkIHN0cmluZy4KLSAgICAgICAgICAgICAgICAvLyBD
dXJyZW50bHksIHdlIG9ubHkgc2VlIHRoZSBET01KSVQgZ2V0dGVyIGhlcmUuIFNvIGp1c3QgaW5j
bHVkaW5nICJiYXNlIiBpcyBvay4KKyAgICAgICAgICAgICAgICAvLyBXZSBvbmx5IHNlZSB0aGUg
RE9NSklUIGdldHRlciBoZXJlLiBTbyBqdXN0IGluY2x1ZGluZyAiYmFzZSIgaXMgb2suCiAgICAg
ICAgICAgICAgICAgZGVmKEhlYXBMb2NhdGlvbihET01TdGF0ZUxvYywgQWJzdHJhY3RIZWFwKERP
TVN0YXRlLCByYW5nZS5yYXdSZXByZXNlbnRhdGlvbigpKSwgbm9kZS0+Y2hpbGQxKCkpLCBMYXp5
Tm9kZShub2RlKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIAorICAgIGNhc2UgQ2FsbERPTTogeworICAgICAgICBjb25zdCBET01KSVQ6OlNpZ25h
dHVyZSogc2lnbmF0dXJlID0gbm9kZS0+c2lnbmF0dXJlKCk7CisgICAgICAgIERPTUpJVDo6RWZm
ZWN0IGVmZmVjdCA9IHNpZ25hdHVyZS0+ZWZmZWN0OworICAgICAgICBpZiAoZWZmZWN0LnJlYWRz
KSB7CisgICAgICAgICAgICBpZiAoZWZmZWN0LnJlYWRzID09IERPTUpJVDo6SGVhcFJhbmdlOjp0
b3AoKSkKKyAgICAgICAgICAgICAgICByZWFkKFdvcmxkKTsKKyAgICAgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgICAgICByZWFkKEFic3RyYWN0SGVhcChET01TdGF0ZSwgZWZmZWN0LnJlYWRzLnJh
d1JlcHJlc2VudGF0aW9uKCkpKTsKKyAgICAgICAgfQorICAgICAgICBpZiAoZWZmZWN0LndyaXRl
cykgeworICAgICAgICAgICAgaWYgKGVmZmVjdC53cml0ZXMgPT0gRE9NSklUOjpIZWFwUmFuZ2U6
OnRvcCgpKQorICAgICAgICAgICAgICAgIHdyaXRlKEhlYXApOworICAgICAgICAgICAgZWxzZQor
ICAgICAgICAgICAgICAgIHdyaXRlKEFic3RyYWN0SGVhcChET01TdGF0ZSwgZWZmZWN0LndyaXRl
cy5yYXdSZXByZXNlbnRhdGlvbigpKSk7CisgICAgICAgIH0KKyAgICAgICAgQVNTRVJUX1dJVEhf
TUVTU0FHRShlZmZlY3QuZGVmID09IERPTUpJVDo6SGVhcFJhbmdlOjp0b3AoKSwgIkN1cnJlbnRs
eSwgd2UgZG8gbm90IGFjY2VwdCBhbnkgZGVmIGZvciBDYWxsRE9NLiIpOworICAgICAgICByZXR1
cm47CisgICAgfQorCiAgICAgY2FzZSBBcnJheWlmeToKICAgICBjYXNlIEFycmF5aWZ5VG9TdHJ1
Y3R1cmU6CiAgICAgICAgIHJlYWQoSlNDZWxsX3N0cnVjdHVyZUlEKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHRG9lc0dDLmNwcAppbmRleCBjYjQ4ZTVjM2ZlMzMxMjMyZmRlMjA0NTExYmY1
Yzg2NTljZjM3MDgxLi43ZDRkZGZiMGJjZGYzY2JiZTI2NTM5MDU0NDA4ODJmOTVlMjZjNzIzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCkBAIC0zMDAsNiArMzAwLDcg
QEAgYm9vbCBkb2VzR0MoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlKQogICAgIGNhc2UgQ3JlYXRl
UmVzdDoKICAgICBjYXNlIFRvTG93ZXJDYXNlOgogICAgIGNhc2UgQ2FsbERPTUdldHRlcjoKKyAg
ICBjYXNlIENhbGxET006CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAKICAgICBjYXNl
IE11bHRpUHV0QnlPZmZzZXQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0ZpeHVwUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBo
YXNlLmNwcAppbmRleCA3OGZlMGU5ZGZlNzdlYWRlNWViZjJhODgzMmM5ZjY1ZGQ4OTNjODNlLi5l
Y2QzNjg2OGRmNzdiYzI2ODExYjA0MWQzNmZlOTJiNDJjM2EzZmQ0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKQEAgLTE3MTksNiArMTcxOSwzMiBAQCBj
bGFzcyBGaXh1cFBoYXNlIDogcHVibGljIFBoYXNlIHsKICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICB9CiAKKyAgICAgICAgY2FzZSBDYWxsRE9NOiB7CisgICAgICAgICAgICBjb25zdCBET01K
SVQ6OlNpZ25hdHVyZSogc2lnbmF0dXJlID0gbm9kZS0+c2lnbmF0dXJlKCk7CisgICAgICAgICAg
ICBhdXRvIGZpeHVwID0gWyZdKEVkZ2UmIGVkZ2UsIGludCBhcmd1bWVudEluZGV4KSB7CisgICAg
ICAgICAgICAgICAgaWYgKCFlZGdlKQorICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgICAgICAgICAgc3dpdGNoIChzaWduYXR1cmUtPmFyZ3VtZW50c1thcmd1bWVudEluZGV4XSkg
eworICAgICAgICAgICAgICAgIGNhc2UgU3BlY1N0cmluZzoKKyAgICAgICAgICAgICAgICAgICAg
Zml4RWRnZTxTdHJpbmdVc2U+KGVkZ2UpOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgICAgICAgICBjYXNlIFNwZWNJbnQzMk9ubHk6CisgICAgICAgICAgICAgICAgICAgIGZp
eEVkZ2U8SW50MzJVc2U+KGVkZ2UpOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgICAgICBjYXNlIFNwZWNCb29sZWFuOgorICAgICAgICAgICAgICAgICAgICBmaXhFZGdl
PEJvb2xlYW5Vc2U+KGVkZ2UpOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1Rf
UkVBQ0hFRCgpOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICB9OworICAgICAgICAgICAgZml4RWRnZTxDZWxsVXNlPihub2RlLT5jaGls
ZDEoKSk7IC8vIERPTS4KKyAgICAgICAgICAgIGZpeHVwKG5vZGUtPmNoaWxkMigpLCAwKTsKKyAg
ICAgICAgICAgIGZpeHVwKG5vZGUtPmNoaWxkMygpLCAxKTsKKyAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICB9CisKICNpZiAhQVNTRVJUX0RJU0FCTEVECiAgICAgICAgIC8vIEhhdmUgdGhlc2Ug
bm8tb3AgY2FzZXMgaGVyZSB0byBlbnN1cmUgdGhhdCBub2JvZHkgZm9yZ2V0cyB0byBhZGQgaGFu
ZGxlcnMgZm9yIG5ldyBvcGNvZGVzLgogICAgICAgICBjYXNlIFNldEFyZ3VtZW50OgpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR05vZGUuaAppbmRleCBhNjdiMjkzY2U4NzQ1MjczYmQzMzM4MWYzODMz
YTUwM2I0MmM2MDQ3Li5mZGQ5MWFmMzUwYWQ1NjRjZmQ3ZDY5M2M4MzRkMjc0NmYxNDg4MzI5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaApAQCAtNjIsNiArNjIsNyBAQCBuYW1lc3Bh
Y2UgRE9NSklUIHsKIGNsYXNzIEdldHRlclNldHRlcjsKIGNsYXNzIFBhdGNocG9pbnQ7CiBjbGFz
cyBDYWxsRE9NR2V0dGVyUGF0Y2hwb2ludDsKK2NsYXNzIFNpZ25hdHVyZTsKIH0KIAogbmFtZXNw
YWNlIFByb2ZpbGVyIHsKQEAgLTE0NjMsNiArMTQ2NCw3IEBAIHN0cnVjdCBOb2RlIHsKICAgICAg
ICAgY2FzZSBUb051bWJlcjoKICAgICAgICAgY2FzZSBMb2FkRnJvbUpTTWFwQnVja2V0OgogICAg
ICAgICBjYXNlIENhbGxET01HZXR0ZXI6CisgICAgICAgIGNhc2UgQ2FsbERPTToKICAgICAgICAg
ICAgIHJldHVybiB0cnVlOwogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwpAQCAtMjM2Niw2ICsyMzY4LDE2IEBAIHN0cnVjdCBOb2RlIHsKICAgICAgICAgcmV0dXJu
IG1fb3BJbmZvMi5hczxjb25zdCBDbGFzc0luZm8qPigpOwogICAgIH0KIAorICAgIGJvb2wgaGFz
U2lnbmF0dXJlKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBvcCgpID09IENhbGxET007
CisgICAgfQorCisgICAgY29uc3QgRE9NSklUOjpTaWduYXR1cmUqIHNpZ25hdHVyZSgpCisgICAg
eworICAgICAgICByZXR1cm4gbV9vcEluZm8uYXM8Y29uc3QgRE9NSklUOjpTaWduYXR1cmUqPigp
OworICAgIH0KKwogICAgIE5vZGUqIHJlcGxhY2VtZW50KCkgY29uc3QKICAgICB7CiAgICAgICAg
IHJldHVybiBtX21pc2MucmVwbGFjZW1lbnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR05vZGVUeXBlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05v
ZGVUeXBlLmgKaW5kZXggY2QyNGE0NDMwYTk2YjRjNzg5OWMxMWMzYTNkOTk4ZjBiOTcyODMyZi4u
YmVmNWY0ZDA5MTk4YjViZmVkMTk3NjcwNWE5YzYwNGZkZDkwMmU3YSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaApAQCAtNDA2LDYgKzQwNiw3IEBAIG5hbWVzcGFjZSBK
U0MgeyBuYW1lc3BhY2UgREZHIHsKICAgICAvKiBOb2RlcyBmb3IgRE9NIEpJVCAqL1wKICAgICBt
YWNybyhDaGVja0RPTSwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKENhbGxET01HZXR0
ZXIsIE5vZGVSZXN1bHRKUyB8IE5vZGVNdXN0R2VuZXJhdGUpIFwKKyAgICBtYWNybyhDYWxsRE9N
LCBOb2RlUmVzdWx0SlMgfCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAKIC8vIFRoaXMgZW51bSBnZW5l
cmF0ZXMgYSBtb25vdG9uaWNhbGx5IGluY3JlYXNpbmcgaWQgZm9yIGFsbCBOb2RlIHR5cGVzLAog
Ly8gYW5kIGlzIHVzZWQgYnkgdGhlIHN1YnNlcXVlbnQgZW51bSB0byBmaWxsIG91dCB0aGUgaWQg
KGFzIGFjY2Vzc2VkIHZpYSB0aGUgTm9kZUlkTWFzaykuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCmlu
ZGV4IDM5N2U5OTkzYjkyZTk2Y2YyZTlkNTFlM2JkMjg5ZjMwZjgzMzlkNzIuLjA5M2M5Mzc5Njhh
MDdmMjRkNDdhZmJmNjhmYmZjOTNlNWQ5MGYzZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCkBA
IC03MTAsNyArNzEwLDggQEAgY2xhc3MgUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UgOiBwdWJs
aWMgUGhhc2UgewogICAgICAgICBjYXNlIEdldEZyb21Bcmd1bWVudHM6CiAgICAgICAgIGNhc2Ug
TG9hZEZyb21KU01hcEJ1Y2tldDoKICAgICAgICAgY2FzZSBUb051bWJlcjoKLSAgICAgICAgY2Fz
ZSBDYWxsRE9NR2V0dGVyOiB7CisgICAgICAgIGNhc2UgQ2FsbERPTUdldHRlcjoKKyAgICAgICAg
Y2FzZSBDYWxsRE9NOiB7CiAgICAgICAgICAgICBzZXRQcmVkaWN0aW9uKG1fY3VycmVudE5vZGUt
PmdldEhlYXBQcmVkaWN0aW9uKCkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgKaW5kZXggMGEyZWNk
ODAwNmIyZDYzMjg4MDA4MTQyZjU4ZGVjMWU0Yzc1N2YyYy4uNWJjODBhOTNlZDVhNDU0NDY4NzJm
NmIyNTc3MTFlN2RkZmE5NjJmYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTYWZlVG9FeGVjdXRlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
YWZlVG9FeGVjdXRlLmgKQEAgLTIyMCw2ICsyMjAsNyBAQCBib29sIHNhZmVUb0V4ZWN1dGUoQWJz
dHJhY3RTdGF0ZVR5cGUmIHN0YXRlLCBHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUpCiAgICAgY2Fz
ZSBHZXRFeGVjdXRhYmxlOgogICAgIGNhc2UgR2V0QnV0dGVyZmx5OgogICAgIGNhc2UgQ2FsbERP
TUdldHRlcjoKKyAgICBjYXNlIENhbGxET006CiAgICAgY2FzZSBDaGVja0RPTToKICAgICBjYXNl
IENoZWNrQXJyYXk6CiAgICAgY2FzZSBBcnJheWlmeToKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKaW5kZXggN2I1N2IxODkyOTM3MDYxMGI3M2Ew
MGNlNWM1MDlkMzFjZmI1NTYxZi4uNDNiMTRmNjRiMGZlNzU5MzEyNjcyYmFiYzJlZTA1ZTE3OWJi
NmE2MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2
ZUpJVC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJ
VC5jcHAKQEAgLTcyNTksNiArNzI1OSw4NCBAQCBzdGF0aWMgdm9pZCBhbGxvY2F0ZVRlbXBvcmFy
eVJlZ2lzdGVyc0ZvclBhdGNocG9pbnQoU3BlY3VsYXRpdmVKSVQqIGppdCwgVmVjdG9yPAogICAg
IH0KIH0KIAordm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUNhbGxET00oTm9kZSogbm9kZSkK
K3sKKyAgICBjb25zdCBET01KSVQ6OlNpZ25hdHVyZSogc2lnbmF0dXJlID0gbm9kZS0+c2lnbmF0
dXJlKCk7CisKKyAgICBWZWN0b3I8VmFyaWFudDxTcGVjdWxhdGVDZWxsT3BlcmFuZCwgU3BlY3Vs
YXRlSW50MzJPcGVyYW5kLCBTcGVjdWxhdGVCb29sZWFuT3BlcmFuZD4+IG9wZXJhbmRzOworICAg
IFZlY3RvcjxHUFJSZWc+IHJlZ3M7CisKKyAgICBhdXRvIGFwcGVuZENlbGwgPSBbJl0oRWRnZSYg
ZWRnZSkgeworICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBvcGVyYW5kKHRoaXMsIGVkZ2Up
OworICAgICAgICByZWdzLmFwcGVuZChvcGVyYW5kLmdwcigpKTsKKyAgICAgICAgb3BlcmFuZHMu
YXBwZW5kKFdURk1vdmUob3BlcmFuZCkpOworICAgIH07CisKKyAgICBhdXRvIGFwcGVuZFN0cmlu
ZyA9IFsmXShFZGdlJiBlZGdlKSB7CisgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIG9wZXJh
bmQodGhpcywgZWRnZSk7CisgICAgICAgIEdQUlJlZyBncHIgPSBvcGVyYW5kLmdwcigpOworICAg
ICAgICByZWdzLmFwcGVuZChncHIpOworICAgICAgICBzcGVjdWxhdGVTdHJpbmcoZWRnZSwgZ3By
KTsKKyAgICAgICAgb3BlcmFuZHMuYXBwZW5kKFdURk1vdmUob3BlcmFuZCkpOworICAgIH07CisK
KyAgICBhdXRvIGFwcGVuZEludDMyID0gWyZdKEVkZ2UmIGVkZ2UpIHsKKyAgICAgICAgU3BlY3Vs
YXRlSW50MzJPcGVyYW5kIG9wZXJhbmQodGhpcywgZWRnZSk7CisgICAgICAgIHJlZ3MuYXBwZW5k
KG9wZXJhbmQuZ3ByKCkpOworICAgICAgICBvcGVyYW5kcy5hcHBlbmQoV1RGTW92ZShvcGVyYW5k
KSk7CisgICAgfTsKKworICAgIGF1dG8gYXBwZW5kQm9vbGVhbiA9IFsmXShFZGdlJiBlZGdlKSB7
CisgICAgICAgIFNwZWN1bGF0ZUJvb2xlYW5PcGVyYW5kIG9wZXJhbmQodGhpcywgZWRnZSk7Cisg
ICAgICAgIHJlZ3MuYXBwZW5kKG9wZXJhbmQuZ3ByKCkpOworICAgICAgICBvcGVyYW5kcy5hcHBl
bmQoV1RGTW92ZShvcGVyYW5kKSk7CisgICAgfTsKKworICAgIHVuc2lnbmVkIGkgPSAwOworICAg
IERGR19OT0RFX0RPX1RPX0NISUxEUkVOKG1faml0LmdyYXBoKCksIG5vZGUsIFsmXShOb2RlKiwg
RWRnZSBlZGdlKSB7CisgICAgICAgIGlmICghaSkKKyAgICAgICAgICAgIGFwcGVuZENlbGwoZWRn
ZSk7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgc3dpdGNoIChzaWduYXR1cmUtPmFyZ3Vt
ZW50c1tpIC0gMV0pIHsKKyAgICAgICAgICAgIGNhc2UgU3BlY1N0cmluZzoKKyAgICAgICAgICAg
ICAgICBhcHBlbmRTdHJpbmcoZWRnZSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgICBjYXNlIFNwZWNJbnQzMk9ubHk6CisgICAgICAgICAgICAgICAgYXBwZW5kSW50MzIoZWRn
ZSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIFNwZWNCb29sZWFu
OgorICAgICAgICAgICAgICAgIGFwcGVuZEJvb2xlYW4oZWRnZSk7CisgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgKytpOworICAgIH0pOwor
CisgICAgSlNWYWx1ZVJlZ3NUZW1wb3JhcnkgcmVzdWx0KHRoaXMpOworICAgIEpTVmFsdWVSZWdz
IHJlc3VsdFJlZ3MgPSByZXN1bHQucmVncygpOworCisgICAgc2lsZW50U3BpbGxBbGxSZWdpc3Rl
cnMocmVzdWx0UmVncyk7CisgICAgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzID0gc2ln
bmF0dXJlLT5hcmd1bWVudENvdW50ICsgMTsKKyAgICBzd2l0Y2ggKGFyZ3VtZW50Q291bnRJbmNs
dWRpbmdUaGlzKSB7CisgICAgY2FzZSAxOgorICAgICAgICBjYWxsT3BlcmF0aW9uKHJlaW50ZXJw
cmV0X2Nhc3Q8Sl9KSVRPcGVyYXRpb25fRVA+KHNpZ25hdHVyZS0+dW5zYWZlRnVuY3Rpb24pLCBl
eHRyYWN0UmVzdWx0KHJlc3VsdFJlZ3MpLCByZWdzWzBdKTsKKyAgICAgICAgYnJlYWs7CisgICAg
Y2FzZSAyOgorICAgICAgICBjYWxsT3BlcmF0aW9uKHJlaW50ZXJwcmV0X2Nhc3Q8Sl9KSVRPcGVy
YXRpb25fRVBQPihzaWduYXR1cmUtPnVuc2FmZUZ1bmN0aW9uKSwgZXh0cmFjdFJlc3VsdChyZXN1
bHRSZWdzKSwgcmVnc1swXSwgcmVnc1sxXSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgMzoK
KyAgICAgICAgY2FsbE9wZXJhdGlvbihyZWludGVycHJldF9jYXN0PEpfSklUT3BlcmF0aW9uX0VQ
UFA+KHNpZ25hdHVyZS0+dW5zYWZlRnVuY3Rpb24pLCBleHRyYWN0UmVzdWx0KHJlc3VsdFJlZ3Mp
LCByZWdzWzBdLCByZWdzWzFdLCByZWdzWzJdKTsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVs
dDoKKyAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgYnJlYWs7
CisgICAgfQorCisgICAgc2lsZW50RmlsbEFsbFJlZ2lzdGVycyhyZXN1bHRSZWdzKTsKKyAgICBt
X2ppdC5leGNlcHRpb25DaGVjaygpOworICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0UmVncywgbm9k
ZSk7Cit9CisKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVDYWxsRE9NR2V0dGVyKE5vZGUq
IG5vZGUpCiB7CiAgICAgRE9NSklUOjpDYWxsRE9NR2V0dGVyUGF0Y2hwb2ludCogcGF0Y2hwb2lu
dCA9IG5vZGUtPmNhbGxET01HZXR0ZXJEYXRhKCktPnBhdGNocG9pbnQ7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKaW5kZXggNTY1MzhhMjk0NmU0MDMw
MGYwNTBmMzM1NTJhNzNjY2E3NTljZWFjYS4uNzk2YThhMzVlNmQzMDU3ZmFhYmVhMDc5YTAyMDNk
NWQ0OTlhOTViMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVj
dWxhdGl2ZUpJVC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRp
dmVKSVQuaApAQCAtMTY1MSw2ICsxNjUxLDExIEBAIGNsYXNzIFNwZWN1bGF0aXZlSklUIHsKICAg
ICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIpOwogICAg
ICAgICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CiAgICAg
fQorICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9KSVRPcGVyYXRpb25fRVBQ
UCBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJnMiwgR1BS
UmVnIGFyZzMpCisgICAgeworICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3Rh
dGUoYXJnMSwgYXJnMiwgYXJnMyk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0
KG9wZXJhdGlvbiwgcmVzdWx0KTsKKyAgICB9CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9w
ZXJhdGlvbihKX0pJVE9wZXJhdGlvbl9FR1Agb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBHUFJS
ZWcgYXJnMSwgR1BSUmVnIGFyZzIpCiAgICAgewogICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50
c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMik7CkBAIC0xOTE1LDYgKzE5MjAsMTYgQEAgY2xhc3Mg
U3BlY3VsYXRpdmVKSVQgewogICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3Rh
dGUoYXJnMSwgVHJ1c3RlZEltbVB0cihwb2ludGVyKSk7CiAgICAgICAgIHJldHVybiBhcHBlbmRD
YWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0LnBheWxvYWRHUFIoKSwgcmVzdWx0LnRhZ0dQ
UigpKTsKICAgICB9CisgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihKX0pJVE9w
ZXJhdGlvbl9FUFAgb3BlcmF0aW9uLCBKU1ZhbHVlUmVncyByZXN1bHQsIEdQUlJlZyBhcmcxLCBH
UFJSZWcgYXJnMikKKyAgICB7CisgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNT
dGF0ZShhcmcxLCBhcmcyKTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3Bl
cmF0aW9uLCByZXN1bHQucGF5bG9hZEdQUigpLCByZXN1bHQudGFnR1BSKCkpOworICAgIH0KKyAg
ICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpfSklUT3BlcmF0aW9uX0VQUFAgb3Bl
cmF0aW9uLCBKU1ZhbHVlUmVncyByZXN1bHQsIEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJnMiwgR1BS
UmVnIGFyZzMpCisgICAgeworICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3Rh
dGUoYXJnMSwgYXJnMiwgYXJnMyk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0
KG9wZXJhdGlvbiwgcmVzdWx0LnBheWxvYWRHUFIoKSwgcmVzdWx0LnRhZ0dQUigpKTsKKyAgICB9
CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihKX0pJVE9wZXJhdGlvbl9FR1Ag
b3BlcmF0aW9uLCBKU1ZhbHVlUmVncyByZXN1bHQsIEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJnMikK
ICAgICB7CiAgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBh
cmcyKTsKQEAgLTI1NjIsNiArMjU3Nyw3IEBAIGNsYXNzIFNwZWN1bGF0aXZlSklUIHsKICAgICB2
b2lkIGNvbXBpbGVSZWFsbG9jYXRlUHJvcGVydHlTdG9yYWdlKE5vZGUqKTsKICAgICB2b2lkIGNv
bXBpbGVHZXRCdXR0ZXJmbHkoTm9kZSopOwogICAgIHZvaWQgY29tcGlsZUNhbGxET01HZXR0ZXIo
Tm9kZSopOworICAgIHZvaWQgY29tcGlsZUNhbGxET00oTm9kZSopOwogICAgIHZvaWQgY29tcGls
ZUNoZWNrRE9NKE5vZGUqKTsKICAgICAKICNpZiBVU0UoSlNWQUxVRTMyXzY0KQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKaW5k
ZXggOGY3MmIxZThkYjYxZDdmMzNlMzAzZDNiNzNkNWIzZjUyYmVjZThmOC4uYWI1OGQ3YzMwYjEy
M2FkNTczODZlMDBiYzQ1NzZjN2M4ZmQ1MGRhYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCkBAIC01NTYxLDYgKzU1NjEs
MTAgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBi
cmVhazsKICAgICB9CiAKKyAgICBjYXNlIENhbGxET006CisgICAgICAgIGNvbXBpbGVDYWxsRE9N
KG5vZGUpOworICAgICAgICBicmVhazsKKwogICAgIGNhc2UgQ2FsbERPTUdldHRlcjoKICAgICAg
ICAgY29tcGlsZUNhbGxET01HZXR0ZXIobm9kZSk7CiAgICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKaW5kZXggZjg5
YzFlNjk3NTY5YjMyOGMxYjJkZDQyNWRlMzVlNGY0MmEzNzQ4Ni4uMTEyNjkwODIxZDM4MzI1YjE0
ZGEwMzkxOWI2NzIxY2ZlODgzY2RkMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCkBAIC01NjkzLDYgKzU2OTMsMTAgQEAgdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBjb21waWxlTWF0ZXJp
YWxpemVOZXdPYmplY3Qobm9kZSk7CiAgICAgICAgIGJyZWFrOwogCisgICAgY2FzZSBDYWxsRE9N
OgorICAgICAgICBjb21waWxlQ2FsbERPTShub2RlKTsKKyAgICAgICAgYnJlYWs7CisKICAgICBj
YXNlIENhbGxET01HZXR0ZXI6CiAgICAgICAgIGNvbXBpbGVDYWxsRE9NR2V0dGVyKG5vZGUpOwog
ICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kb21qaXQv
RE9NSklURWZmZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZG9taml0L0RPTUpJVEVmZmVj
dC5oCmluZGV4IDU5ZTMwMGMzOTI2MTA0N2ExMTIyOTBkYTg2YjRmYTE2OGQ5YzYzMDYuLjYxY2Yz
YjcxYWJiY2UzMWU0NTEzNmFmMjg2YzZjN2FmMjM2NjhhNmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kb21qaXQvRE9NSklURWZmZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RvbWppdC9ET01KSVRFZmZlY3QuaApAQCAtMjgsNTYgKzI4LDYyIEBACiAjaW5jbHVk
ZSAiRE9NSklUSGVhcFJhbmdlLmgiCiAjaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CiAKLSNpZiBF
TkFCTEUoSklUKQotCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERPTUpJVCB7CiAKLXN0cnVj
dCBFZmZlY3QgeworY2xhc3MgRWZmZWN0IHsKK3B1YmxpYzoKICAgICBIZWFwUmFuZ2UgcmVhZHMg
eyBIZWFwUmFuZ2U6OnRvcCgpIH07CiAgICAgSGVhcFJhbmdlIHdyaXRlcyB7IEhlYXBSYW5nZTo6
dG9wKCkgfTsKLSAgICBPcHRpb25hbDxIZWFwUmFuZ2U+IGRlZjsKKyAgICBIZWFwUmFuZ2UgZGVm
IHsgSGVhcFJhbmdlOjp0b3AoKSB9OworCisgICAgY29uc3RleHByIEVmZmVjdCgpID0gZGVmYXVs
dDsKKyAgICBjb25zdGV4cHIgRWZmZWN0KEhlYXBSYW5nZSByZWFkcywgSGVhcFJhbmdlIHdyaXRl
cykKKyAgICAgICAgOiByZWFkcyhyZWFkcykKKyAgICAgICAgLCB3cml0ZXMod3JpdGVzKQorICAg
IHsKKyAgICB9CisKKyAgICBjb25zdGV4cHIgRWZmZWN0KEhlYXBSYW5nZSByZWFkcywgSGVhcFJh
bmdlIHdyaXRlcywgSGVhcFJhbmdlIGRlZikKKyAgICAgICAgOiByZWFkcyhyZWFkcykKKyAgICAg
ICAgLCB3cml0ZXMod3JpdGVzKQorICAgICAgICAsIGRlZihkZWYpCisgICAgeworICAgIH0KIAot
ICAgIHN0YXRpYyBFZmZlY3QgZm9yUmVhZFdyaXRlKEhlYXBSYW5nZSByZWFkUmFuZ2UsIEhlYXBS
YW5nZSB3cml0ZVJhbmdlKQorICAgIGNvbnN0ZXhwciBzdGF0aWMgRWZmZWN0IGZvcldyaXRlKEhl
YXBSYW5nZSB3cml0ZVJhbmdlKQogICAgIHsKLSAgICAgICAgRWZmZWN0IGVmZmVjdDsKLSAgICAg
ICAgZWZmZWN0LnJlYWRzID0gcmVhZFJhbmdlOwotICAgICAgICBlZmZlY3Qud3JpdGVzID0gd3Jp
dGVSYW5nZTsKLSAgICAgICAgcmV0dXJuIGVmZmVjdDsKKyAgICAgICAgcmV0dXJuIEVmZmVjdChI
ZWFwUmFuZ2U6Om5vbmUoKSwgd3JpdGVSYW5nZSk7CiAgICAgfQogCi0gICAgc3RhdGljIEVmZmVj
dCBmb3JQdXJlKCkKKyAgICBjb25zdGV4cHIgc3RhdGljIEVmZmVjdCBmb3JSZWFkKEhlYXBSYW5n
ZSByZWFkUmFuZ2UpCiAgICAgewotICAgICAgICBFZmZlY3QgZWZmZWN0OwotICAgICAgICBlZmZl
Y3QucmVhZHMgPSBIZWFwUmFuZ2U6Om5vbmUoKTsKLSAgICAgICAgZWZmZWN0LndyaXRlcyA9IEhl
YXBSYW5nZTo6bm9uZSgpOwotICAgICAgICBlZmZlY3QuZGVmID0gSGVhcFJhbmdlOjpub25lKCk7
Ci0gICAgICAgIHJldHVybiBlZmZlY3Q7CisgICAgICAgIHJldHVybiBFZmZlY3QocmVhZFJhbmdl
LCBIZWFwUmFuZ2U6Om5vbmUoKSk7CiAgICAgfQogCi0gICAgc3RhdGljIEVmZmVjdCBmb3JEZWYo
SGVhcFJhbmdlIGRlZikKKyAgICBjb25zdGV4cHIgc3RhdGljIEVmZmVjdCBmb3JSZWFkV3JpdGUo
SGVhcFJhbmdlIHJlYWRSYW5nZSwgSGVhcFJhbmdlIHdyaXRlUmFuZ2UpCiAgICAgewotICAgICAg
ICBFZmZlY3QgZWZmZWN0OwotICAgICAgICBlZmZlY3QucmVhZHMgPSBkZWY7Ci0gICAgICAgIGVm
ZmVjdC53cml0ZXMgPSBIZWFwUmFuZ2U6Om5vbmUoKTsKLSAgICAgICAgZWZmZWN0LmRlZiA9IGRl
ZjsKLSAgICAgICAgcmV0dXJuIGVmZmVjdDsKKyAgICAgICAgcmV0dXJuIEVmZmVjdChyZWFkUmFu
Z2UsIHdyaXRlUmFuZ2UpOwogICAgIH0KIAotICAgIHN0YXRpYyBFZmZlY3QgZm9yRGVmKEhlYXBS
YW5nZSBkZWYsIEhlYXBSYW5nZSByZWFkUmFuZ2UsIEhlYXBSYW5nZSB3cml0ZVJhbmdlKQorICAg
IGNvbnN0ZXhwciBzdGF0aWMgRWZmZWN0IGZvclB1cmUoKQogICAgIHsKLSAgICAgICAgRWZmZWN0
IGVmZmVjdDsKLSAgICAgICAgZWZmZWN0LnJlYWRzID0gcmVhZFJhbmdlOwotICAgICAgICBlZmZl
Y3Qud3JpdGVzID0gd3JpdGVSYW5nZTsKLSAgICAgICAgZWZmZWN0LmRlZiA9IGRlZjsKLSAgICAg
ICAgcmV0dXJuIGVmZmVjdDsKKyAgICAgICAgcmV0dXJuIEVmZmVjdChIZWFwUmFuZ2U6Om5vbmUo
KSwgSGVhcFJhbmdlOjpub25lKCksIEhlYXBSYW5nZTo6bm9uZSgpKTsKICAgICB9CiAKLSAgICBi
b29sIG11c3RHZW5lcmF0ZSgpIGNvbnN0CisgICAgY29uc3RleHByIHN0YXRpYyBFZmZlY3QgZm9y
RGVmKEhlYXBSYW5nZSBkZWYpCisgICAgeworICAgICAgICByZXR1cm4gRWZmZWN0KGRlZiwgSGVh
cFJhbmdlOjpub25lKCksIGRlZik7CisgICAgfQorCisgICAgY29uc3RleHByIHN0YXRpYyBFZmZl
Y3QgZm9yRGVmKEhlYXBSYW5nZSBkZWYsIEhlYXBSYW5nZSByZWFkUmFuZ2UsIEhlYXBSYW5nZSB3
cml0ZVJhbmdlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIEVmZmVjdChyZWFkUmFuZ2UsIHdyaXRl
UmFuZ2UsIGRlZik7CisgICAgfQorCisgICAgY29uc3RleHByIGJvb2wgbXVzdEdlbmVyYXRlKCkg
Y29uc3QKICAgICB7CiAgICAgICAgIHJldHVybiAhIXdyaXRlczsKICAgICB9CiB9OwogCiB9IH0K
LQotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZG9taml0L0RPTUpJ
VEhlYXBSYW5nZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RvbWppdC9ET01KSVRIZWFwUmFu
Z2UuaAppbmRleCBmYjkzOTk5ZmY3ODVjMDZmN2RhY2Q2ZGE5YzhkNmUwYTk1Njc4Njc0Li5mYzMy
MDZlODkwM2RkMTVhNDQwN2UxMmIzN2E2MTU2YzU5ZmUxMTM4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZG9taml0L0RPTUpJVEhlYXBSYW5nZS5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kb21qaXQvRE9NSklUSGVhcFJhbmdlLmgKQEAgLTI4LDggKzI4LDYgQEAKICNp
bmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi9QcmludFN0cmVhbS5oPgog
Ci0jaWYgRU5BQkxFKEpJVCkKLQogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBET01KSVQgewog
CiBjbGFzcyBIZWFwUmFuZ2UgewpAQCAtNDcsNyArNDUsNiBAQCBjbGFzcyBIZWFwUmFuZ2Ugewog
ICAgICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKGJlZ2luIDw9IGVuZCwgImJlZ2luIDw9IGVuZCBp
cyB0aGUgaW52YXJpYW50IG9mIHRoaXMgSGVhcFJhbmdlLiIpOwogICAgIH0KIAotcHJpdmF0ZToK
ICAgICBlbnVtIENvbnN0RXhwclRhZyB7IENvbnN0RXhwciB9OwogICAgIGNvbnN0ZXhwciBIZWFw
UmFuZ2UoQ29uc3RFeHByVGFnLCB1aW50MTZfdCBiZWdpbiwgdWludDE2X3QgZW5kKQogICAgICAg
ICA6IG1fYmVnaW4oYmVnaW4pCkBAIC01NSwyMSArNTIsMTMgQEAgY2xhc3MgSGVhcFJhbmdlIHsK
ICAgICB7CiAgICAgfQogCi0gICAgdGVtcGxhdGU8dWludDE2X3QgYmVnaW4sIHVpbnQxNl90IGVu
ZD4KLSAgICBzdGF0aWMgY29uc3RleHByIEhlYXBSYW5nZSBmcm9tQ29uc3RhbnQoKQotICAgIHsK
LSAgICAgICAgc3RhdGljX2Fzc2VydChiZWdpbiA8PSBlbmQsICJiZWdpbiA8PSBlbmQgaXMgdGhl
IGludmFyaWFudCBvZiB0aGlzIEhlYXBSYW5nZS4iKTsKLSAgICAgICAgcmV0dXJuIEhlYXBSYW5n
ZShDb25zdEV4cHIsIGJlZ2luLCBlbmQpOwotICAgIH0KLQotcHVibGljOgogICAgIGVudW0gUmF3
UmVwcmVzZW50YXRpb25UYWcgeyBSYXdSZXByZXNlbnRhdGlvbiB9OwogICAgIGV4cGxpY2l0IGNv
bnN0ZXhwciBIZWFwUmFuZ2UoUmF3UmVwcmVzZW50YXRpb25UYWcsIHVpbnQzMl90IHZhbHVlKQog
ICAgICAgICA6IG1fcmF3KHZhbHVlKQogICAgIHsKICAgICB9CiAKLSAgICBzdGF0aWMgSGVhcFJh
bmdlIGZyb21SYXcodWludDMyX3QgdmFsdWUpCisgICAgY29uc3RleHByIHN0YXRpYyBIZWFwUmFu
Z2UgZnJvbVJhdyh1aW50MzJfdCB2YWx1ZSkKICAgICB7CiAgICAgICAgIHJldHVybiBIZWFwUmFu
Z2UoUmF3UmVwcmVzZW50YXRpb24sIHZhbHVlKTsKICAgICB9CkBAIC04MywxMSArNzIsMjMgQEAg
Y2xhc3MgSGVhcFJhbmdlIHsKICAgICAgICAgcmV0dXJuIG1fYmVnaW4gIT0gbV9lbmQ7CiAgICAg
fQogCi0gICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEhlYXBSYW5nZSYgb3RoZXIpIGNvbnN0Cisg
ICAgY29uc3RleHByIGJvb2wgb3BlcmF0b3I9PShjb25zdCBIZWFwUmFuZ2UmIG90aGVyKSBjb25z
dAogICAgIHsKICAgICAgICAgcmV0dXJuIG1fYmVnaW4gPT0gb3RoZXIubV9iZWdpbiAmJiBtX2Vu
ZCA9PSBvdGhlci5tX2VuZDsKICAgICB9CiAKKyAgICBjb25zdGV4cHIgYm9vbCBvcGVyYXRvciE9
KGNvbnN0IEhlYXBSYW5nZSYgb3RoZXIpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gIW9w
ZXJhdG9yPT0ob3RoZXIpOworICAgIH0KKworICAgIHRlbXBsYXRlPHVpbnQxNl90IGJlZ2luLCB1
aW50MTZfdCBlbmQ+CisgICAgc3RhdGljIGNvbnN0ZXhwciBIZWFwUmFuZ2UgZnJvbUNvbnN0YW50
KCkKKyAgICB7CisgICAgICAgIHN0YXRpY19hc3NlcnQoYmVnaW4gPD0gZW5kLCAiYmVnaW4gPD0g
ZW5kIGlzIHRoZSBpbnZhcmlhbnQgb2YgdGhpcyBIZWFwUmFuZ2UuIik7CisgICAgICAgIHJldHVy
biBIZWFwUmFuZ2UoQ29uc3RFeHByLCBiZWdpbiwgZW5kKTsKKyAgICB9CisKICAgICBzdGF0aWMg
Y29uc3RleHByIEhlYXBSYW5nZSB0b3AoKSB7IHJldHVybiBmcm9tQ29uc3RhbnQ8MCwgVUlOVDE2
X01BWD4oKTsgfQogICAgIHN0YXRpYyBjb25zdGV4cHIgSGVhcFJhbmdlIG5vbmUoKSB7IHJldHVy
biBmcm9tQ29uc3RhbnQ8VUlOVDE2X01BWCwgVUlOVDE2X01BWD4oKTsgfSAvLyBFbXB0eSByYW5n
ZS4KIApAQCAtMTI3LDUgKzEyOCwzIEBAIGNsYXNzIEhlYXBSYW5nZSB7CiB9OwogCiB9IH0KLQot
I2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZG9taml0L0RPTUpJVFNp
Z25hdHVyZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RvbWppdC9ET01KSVRTaWduYXR1cmUu
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4zN2Q2MGVkN2YzZWFmMDYzZDliMGM5ZDg5ZWQ2MzQ4N2M0Y2JiNWEzCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RvbWppdC9ET01KSVRTaWdu
YXR1cmUuaApAQCAtMCwwICsxLDcwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
CisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJDbGFzc0luZm8uaCIKKyNp
bmNsdWRlICJET01KSVRFZmZlY3QuaCIKKyNpbmNsdWRlICJTcGVjdWxhdGVkVHlwZS5oIgorCitu
YW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERPTUpJVCB7CisKKy8vIEN1cnJlbnRseSwgd2Ugb25s
eSBzdXBwb3J0IGZ1bmN0aW9ucyB3aGljaCBhcmd1bWVudHMgdXAgdG8gMi4KKy8vIEV2ZW50dWFs
bHksIHdlIHNob3VsZCBleHRlbmQgdGhpcy4gQnV0IHBvc3NpYmx5LCAyIG9yIDMgY2FuIGNvdmVy
IHR5cGljYWwgdXNlIGNhc2VzLgorI2RlZmluZSBKU0NfRE9NSklUX1NJR05BVFVSRV9NQVhfQVJH
VU1FTlRTIDIKKworY2xhc3MgUGF0Y2hwb2ludDsKKwordHlwZWRlZiBSZWY8UGF0Y2hwb2ludD4g
Q2hlY2tET01HZW5lcmF0b3JGdW5jdGlvbih2b2lkKTsKKworY2xhc3MgU2lnbmF0dXJlIHsKK3B1
YmxpYzoKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBBcmd1bWVudHM+CisgICAgY29uc3RleHBy
IFNpZ25hdHVyZSh1aW50cHRyX3QgdW5zYWZlRnVuY3Rpb24sIENoZWNrRE9NR2VuZXJhdG9yRnVu
Y3Rpb24qIGNoZWNrRE9NR2VuZXJhdG9yRnVuY3Rpb24sIGNvbnN0IENsYXNzSW5mbyogY2xhc3NJ
bmZvLCBFZmZlY3QgZWZmZWN0LCBTcGVjdWxhdGVkVHlwZSByZXN1bHQsIEFyZ3VtZW50cy4uLiBh
cmd1bWVudHMpCisgICAgICAgIDogdW5zYWZlRnVuY3Rpb24odW5zYWZlRnVuY3Rpb24pCisgICAg
ICAgICwgY2hlY2tET01HZW5lcmF0b3JGdW5jdGlvbihjaGVja0RPTUdlbmVyYXRvckZ1bmN0aW9u
KQorICAgICAgICAsIGNsYXNzSW5mbyhjbGFzc0luZm8pCisgICAgICAgICwgZWZmZWN0KGVmZmVj
dCkKKyAgICAgICAgLCByZXN1bHQocmVzdWx0KQorICAgICAgICAsIGFyZ3VtZW50cyB7c3RhdGlj
X2Nhc3Q8U3BlY3VsYXRlZFR5cGU+KGFyZ3VtZW50cykuLi59CisgICAgICAgICwgYXJndW1lbnRD
b3VudChzaXplb2YuLi4oYXJndW1lbnRzKSkKKyAgICB7CisgICAgfQorCisgICAgUmVmPFBhdGNo
cG9pbnQ+IGNoZWNrRE9NKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBjaGVja0RPTUdl
bmVyYXRvckZ1bmN0aW9uKCk7CisgICAgfQorCisgICAgdWludHB0cl90IHVuc2FmZUZ1bmN0aW9u
OworICAgIENoZWNrRE9NR2VuZXJhdG9yRnVuY3Rpb24qIGNoZWNrRE9NR2VuZXJhdG9yRnVuY3Rp
b247CisgICAgY29uc3QgQ2xhc3NJbmZvKiBjb25zdCBjbGFzc0luZm87CisgICAgY29uc3QgRWZm
ZWN0IGVmZmVjdDsKKyAgICBjb25zdCBTcGVjdWxhdGVkVHlwZSByZXN1bHQ7CisgICAgY29uc3Qg
U3BlY3VsYXRlZFR5cGUgYXJndW1lbnRzW0pTQ19ET01KSVRfU0lHTkFUVVJFX01BWF9BUkdVTUVO
VFNdOworICAgIGNvbnN0IHVuc2lnbmVkIGFyZ3VtZW50Q291bnQ7Cit9OworCit9IH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcAppbmRleCAzYWYxY2I3
NDQ5NDY2MjY1MzZhYWI5Y2EyMWRlYTdiMWUzNzQ3YjY4Li40YTg1Nzc1MzI2YmZmZGZmOTgyOTkz
Yzc5NjQzNWExOTY1MmNhMzA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRs
L0ZUTENhcGFiaWxpdGllcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExD
YXBhYmlsaXRpZXMuY3BwCkBAIC0yNzIsNiArMjcyLDcgQEAgaW5saW5lIENhcGFiaWxpdHlMZXZl
bCBjYW5Db21waWxlKE5vZGUqIG5vZGUpCiAgICAgY2FzZSBEZWZpbmVBY2Nlc3NvclByb3BlcnR5
OgogICAgIGNhc2UgVG9Mb3dlckNhc2U6CiAgICAgY2FzZSBDaGVja0RPTToKKyAgICBjYXNlIENh
bGxET006CiAgICAgY2FzZSBDYWxsRE9NR2V0dGVyOgogICAgICAgICAvLyBUaGVzZSBhcmUgT0su
CiAgICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9G
VExMb3dlckRGR1RvQjMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRG
R1RvQjMuY3BwCmluZGV4IDNmMDlkY2ZkNjAyOGEwMmQ4MzcxZTcyNTUzNmFjZDE2MTVlYjkwZmQu
LmFjZjUzYzk1NmZlM2YwYTUzM2VkNDc2MDYyYzU3ODViMjE1MGY0Y2QgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKQEAgLTEwNjAsNiArMTA2MCw5
IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAgICAgICAgIGNhc2UgQ2hlY2tET006CiAgICAgICAg
ICAgICBjb21waWxlQ2hlY2tET00oKTsKICAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNl
IENhbGxET006CisgICAgICAgICAgICBjb21waWxlQ2FsbERPTSgpOworICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIGNhc2UgQ2FsbERPTUdldHRlcjoKICAgICAgICAgICAgIGNvbXBpbGVDYWxs
RE9NR2V0dGVyKCk7CiAgICAgICAgICAgICBicmVhazsKQEAgLTkwNjksNiArOTA3Miw2OCBAQCBj
bGFzcyBMb3dlckRGR1RvQjMgewogICAgICAgICBwYXRjaHBvaW50LT5lZmZlY3RzID0gRWZmZWN0
czo6Zm9yQ2hlY2soKTsKICAgICB9CiAKKyAgICB2b2lkIGNvbXBpbGVDYWxsRE9NKCkKKyAgICB7
CisgICAgICAgIGNvbnN0IERPTUpJVDo6U2lnbmF0dXJlKiBzaWduYXR1cmUgPSBtX25vZGUtPnNp
Z25hdHVyZSgpOworCisgICAgICAgIFZlY3RvcjxMVmFsdWU+IG9wZXJhbmRzOworCisgICAgICAg
IGF1dG8gYXBwZW5kQ2VsbCA9IFsmXShFZGdlJiBlZGdlKSB7CisgICAgICAgICAgICBvcGVyYW5k
cy5hcHBlbmQobG93Q2VsbChlZGdlKSk7CisgICAgICAgIH07CisKKyAgICAgICAgYXV0byBhcHBl
bmRTdHJpbmcgPSBbJl0oRWRnZSYgZWRnZSkgeworICAgICAgICAgICAgb3BlcmFuZHMuYXBwZW5k
KGxvd1N0cmluZyhlZGdlKSk7CisgICAgICAgIH07CisKKyAgICAgICAgYXV0byBhcHBlbmRJbnQz
MiA9IFsmXShFZGdlJiBlZGdlKSB7CisgICAgICAgICAgICBvcGVyYW5kcy5hcHBlbmQobG93SW50
MzIoZWRnZSkpOworICAgICAgICB9OworCisgICAgICAgIGF1dG8gYXBwZW5kQm9vbGVhbiA9IFsm
XShFZGdlJiBlZGdlKSB7CisgICAgICAgICAgICBvcGVyYW5kcy5hcHBlbmQobG93Qm9vbGVhbihl
ZGdlKSk7CisgICAgICAgIH07CisKKyAgICAgICAgdW5zaWduZWQgaSA9IDA7CisgICAgICAgIERG
R19OT0RFX0RPX1RPX0NISUxEUkVOKG1fZ3JhcGgsIG1fbm9kZSwgWyZdKE5vZGUqLCBFZGdlIGVk
Z2UpIHsKKyAgICAgICAgICAgIGlmICghaSkKKyAgICAgICAgICAgICAgICBhcHBlbmRDZWxsKGVk
Z2UpOworICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgc3dpdGNoIChzaWduYXR1
cmUtPmFyZ3VtZW50c1tpIC0gMV0pIHsKKyAgICAgICAgICAgICAgICBjYXNlIFNwZWNTdHJpbmc6
CisgICAgICAgICAgICAgICAgICAgIGFwcGVuZFN0cmluZyhlZGdlKTsKKyAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSBTcGVjSW50MzJPbmx5OgorICAgICAg
ICAgICAgICAgICAgICBhcHBlbmRJbnQzMihlZGdlKTsKKyAgICAgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICAgICAgY2FzZSBTcGVjQm9vbGVhbjoKKyAgICAgICAgICAgICAgICAg
ICAgYXBwZW5kQm9vbGVhbihlZGdlKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgKytpOworICAgICAgICB9
KTsKKworICAgICAgICBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgPSBzaWduYXR1cmUt
PmFyZ3VtZW50Q291bnQgKyAxOworICAgICAgICBMVmFsdWUgcmVzdWx0OworICAgICAgICBzd2l0
Y2ggKGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKSB7CisgICAgICAgIGNhc2UgMToKKyAgICAg
ICAgICAgIHJlc3VsdCA9IHZtQ2FsbChJbnQ2NCwgbV9vdXQub3BlcmF0aW9uKHJlaW50ZXJwcmV0
X2Nhc3Q8Sl9KSVRPcGVyYXRpb25fRVA+KHNpZ25hdHVyZS0+dW5zYWZlRnVuY3Rpb24pKSwgbV9j
YWxsRnJhbWUsIG9wZXJhbmRzWzBdKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNl
IDI6CisgICAgICAgICAgICByZXN1bHQgPSB2bUNhbGwoSW50NjQsIG1fb3V0Lm9wZXJhdGlvbihy
ZWludGVycHJldF9jYXN0PEpfSklUT3BlcmF0aW9uX0VQUD4oc2lnbmF0dXJlLT51bnNhZmVGdW5j
dGlvbikpLCBtX2NhbGxGcmFtZSwgb3BlcmFuZHNbMF0sIG9wZXJhbmRzWzFdKTsKKyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICBjYXNlIDM6CisgICAgICAgICAgICByZXN1bHQgPSB2bUNhbGwo
SW50NjQsIG1fb3V0Lm9wZXJhdGlvbihyZWludGVycHJldF9jYXN0PEpfSklUT3BlcmF0aW9uX0VQ
UFA+KHNpZ25hdHVyZS0+dW5zYWZlRnVuY3Rpb24pKSwgbV9jYWxsRnJhbWUsIG9wZXJhbmRzWzBd
LCBvcGVyYW5kc1sxXSwgb3BlcmFuZHNbMl0pOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IGRlZmF1bHQ6CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAgICBzZXRKU1ZhbHVlKHJlc3VsdCk7
CisgICAgfQorCiAgICAgdm9pZCBjb21waWxlQ2FsbERPTUdldHRlcigpCiAgICAgewogICAgICAg
ICBET01KSVQ6OkNhbGxET01HZXR0ZXJQYXRjaHBvaW50KiBkb21KSVQgPSBtX25vZGUtPmNhbGxE
T01HZXR0ZXJEYXRhKCktPnBhdGNocG9pbnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
T3BlcmF0aW9ucy5oCmluZGV4IDhmNmM2OTcxYTZiZWU5ZjFmYjZmYzM2OGRlNWEyY2I4NDc2NDRh
NjguLjIwYjcxZjQ1MmNlNDRiNWNjNTZjYzcxYzJkNzZiMTdiNTg4ZmU2NjUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCkBAIC0xNTgsNiArMTU4LDcgQEAgdHlw
ZWRlZiBFbmNvZGVkSlNWYWx1ZSAoSklUX09QRVJBVElPTiAqSl9KSVRPcGVyYXRpb25fRUpQKShF
eGVjU3RhdGUqLCBFbmNvZGVkSlMKIHR5cGVkZWYgRW5jb2RlZEpTVmFsdWUgKEpJVF9PUEVSQVRJ
T04gKkpfSklUT3BlcmF0aW9uX0VHUCkoRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqLCB2b2lk
Kik7CiB0eXBlZGVmIEVuY29kZWRKU1ZhbHVlIChKSVRfT1BFUkFUSU9OICpKX0pJVE9wZXJhdGlv
bl9FUCkoRXhlY1N0YXRlKiwgdm9pZCopOwogdHlwZWRlZiBFbmNvZGVkSlNWYWx1ZSAoSklUX09Q
RVJBVElPTiAqSl9KSVRPcGVyYXRpb25fRVBQKShFeGVjU3RhdGUqLCB2b2lkKiwgdm9pZCopOwor
dHlwZWRlZiBFbmNvZGVkSlNWYWx1ZSAoSklUX09QRVJBVElPTiAqSl9KSVRPcGVyYXRpb25fRVBQ
UCkoRXhlY1N0YXRlKiwgdm9pZCosIHZvaWQqLCB2b2lkKik7CiB0eXBlZGVmIEVuY29kZWRKU1Zh
bHVlIChKSVRfT1BFUkFUSU9OICpKX0pJVE9wZXJhdGlvbl9FUFMpKEV4ZWNTdGF0ZSosIHZvaWQq
LCBzaXplX3QpOwogdHlwZWRlZiBFbmNvZGVkSlNWYWx1ZSAoSklUX09QRVJBVElPTiAqSl9KSVRP
cGVyYXRpb25fRVBjKShFeGVjU3RhdGUqLCBJbnN0cnVjdGlvbiopOwogdHlwZWRlZiBFbmNvZGVk
SlNWYWx1ZSAoSklUX09QRVJBVElPTiAqSl9KSVRPcGVyYXRpb25fRUpzY0MpKEV4ZWNTdGF0ZSos
IEpTU2NvcGUqLCBKU0NlbGwqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUVGh1bmtzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUVGh1bmtzLmNw
cAppbmRleCBiZjBhN2Y5MDkxOWE1YjZkMGJlZWQ5MjhhYmRhZjcxMGM5ZGM5ZDBiLi40MGMxMmNl
Yzk0ZTAxYTA4NDA0ZjdiNmQ5NjcyMWYxMDUxZjQ4MzE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVFRodW5rcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRUaHVua3MuY3BwCkBAIC05MCwxMCArOTAsMTAgQEAgdm9pZCBKSVRUaHVua3M6OmZp
bmFsaXplKEhhbmRsZTxVbmtub3duPiBoYW5kbGUsIHZvaWQqKQogCiBOYXRpdmVFeGVjdXRhYmxl
KiBKSVRUaHVua3M6Omhvc3RGdW5jdGlvblN0dWIoVk0qIHZtLCBOYXRpdmVGdW5jdGlvbiBmdW5j
dGlvbiwgTmF0aXZlRnVuY3Rpb24gY29uc3RydWN0b3IsIGNvbnN0IFN0cmluZyYgbmFtZSkKIHsK
LSAgICByZXR1cm4gaG9zdEZ1bmN0aW9uU3R1Yih2bSwgZnVuY3Rpb24sIGNvbnN0cnVjdG9yLCBu
dWxscHRyLCBOb0ludHJpbnNpYywgbmFtZSk7CisgICAgcmV0dXJuIGhvc3RGdW5jdGlvblN0dWIo
dm0sIGZ1bmN0aW9uLCBjb25zdHJ1Y3RvciwgbnVsbHB0ciwgTm9JbnRyaW5zaWMsIG51bGxwdHIs
IG5hbWUpOwogfQogCi1OYXRpdmVFeGVjdXRhYmxlKiBKSVRUaHVua3M6Omhvc3RGdW5jdGlvblN0
dWIoVk0qIHZtLCBOYXRpdmVGdW5jdGlvbiBmdW5jdGlvbiwgTmF0aXZlRnVuY3Rpb24gY29uc3Ry
dWN0b3IsIFRodW5rR2VuZXJhdG9yIGdlbmVyYXRvciwgSW50cmluc2ljIGludHJpbnNpYywgY29u
c3QgU3RyaW5nJiBuYW1lKQorTmF0aXZlRXhlY3V0YWJsZSogSklUVGh1bmtzOjpob3N0RnVuY3Rp
b25TdHViKFZNKiB2bSwgTmF0aXZlRnVuY3Rpb24gZnVuY3Rpb24sIE5hdGl2ZUZ1bmN0aW9uIGNv
bnN0cnVjdG9yLCBUaHVua0dlbmVyYXRvciBnZW5lcmF0b3IsIEludHJpbnNpYyBpbnRyaW5zaWMs
IGNvbnN0IERPTUpJVDo6U2lnbmF0dXJlKiBzaWduYXR1cmUsIGNvbnN0IFN0cmluZyYgbmFtZSkK
IHsKICAgICBBU1NFUlQoIWlzQ29tcGlsYXRpb25UaHJlYWQoKSk7ICAgIAogICAgIEFTU0VSVCh2
bS0+Y2FuVXNlSklUKCkpOwpAQCAtMTEwLDE0ICsxMTAsMTQgQEAgTmF0aXZlRXhlY3V0YWJsZSog
SklUVGh1bmtzOjpob3N0RnVuY3Rpb25TdHViKFZNKiB2bSwgTmF0aXZlRnVuY3Rpb24gZnVuY3Rp
b24sIE4KICAgICAKICAgICBSZWZQdHI8SklUQ29kZT4gZm9yQ29uc3RydWN0ID0gYWRvcHRSZWYo
bmV3IE5hdGl2ZUpJVENvZGUoTWFjcm9Bc3NlbWJsZXJDb2RlUmVmOjpjcmVhdGVTZWxmTWFuYWdl
ZENvZGVSZWYoY3RpTmF0aXZlQ29uc3RydWN0KHZtKSksIEpJVENvZGU6Okhvc3RDYWxsVGh1bmsp
KTsKICAgICAKLSAgICBOYXRpdmVFeGVjdXRhYmxlKiBuYXRpdmVFeGVjdXRhYmxlID0gTmF0aXZl
RXhlY3V0YWJsZTo6Y3JlYXRlKCp2bSwgZm9yQ2FsbCwgZnVuY3Rpb24sIGZvckNvbnN0cnVjdCwg
Y29uc3RydWN0b3IsIGludHJpbnNpYywgbmFtZSk7CisgICAgTmF0aXZlRXhlY3V0YWJsZSogbmF0
aXZlRXhlY3V0YWJsZSA9IE5hdGl2ZUV4ZWN1dGFibGU6OmNyZWF0ZSgqdm0sIGZvckNhbGwsIGZ1
bmN0aW9uLCBmb3JDb25zdHJ1Y3QsIGNvbnN0cnVjdG9yLCBpbnRyaW5zaWMsIHNpZ25hdHVyZSwg
bmFtZSk7CiAgICAgd2Vha0FkZCgqbV9ob3N0RnVuY3Rpb25TdHViTWFwLCBzdGQ6Om1ha2VfdHVw
bGUoZnVuY3Rpb24sIGNvbnN0cnVjdG9yLCBuYW1lKSwgV2VhazxOYXRpdmVFeGVjdXRhYmxlPihu
YXRpdmVFeGVjdXRhYmxlLCB0aGlzKSk7CiAgICAgcmV0dXJuIG5hdGl2ZUV4ZWN1dGFibGU7CiB9
CiAKIE5hdGl2ZUV4ZWN1dGFibGUqIEpJVFRodW5rczo6aG9zdEZ1bmN0aW9uU3R1YihWTSogdm0s
IE5hdGl2ZUZ1bmN0aW9uIGZ1bmN0aW9uLCBUaHVua0dlbmVyYXRvciBnZW5lcmF0b3IsIEludHJp
bnNpYyBpbnRyaW5zaWMsIGNvbnN0IFN0cmluZyYgbmFtZSkKIHsKLSAgICByZXR1cm4gaG9zdEZ1
bmN0aW9uU3R1Yih2bSwgZnVuY3Rpb24sIGNhbGxIb3N0RnVuY3Rpb25Bc0NvbnN0cnVjdG9yLCBn
ZW5lcmF0b3IsIGludHJpbnNpYywgbmFtZSk7CisgICAgcmV0dXJuIGhvc3RGdW5jdGlvblN0dWIo
dm0sIGZ1bmN0aW9uLCBjYWxsSG9zdEZ1bmN0aW9uQXNDb25zdHJ1Y3RvciwgZ2VuZXJhdG9yLCBp
bnRyaW5zaWMsIG51bGxwdHIsIG5hbWUpOwogfQogCiB2b2lkIEpJVFRodW5rczo6Y2xlYXJIb3N0
RnVuY3Rpb25TdHVicygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VFRodW5rcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRUaHVua3MuaAppbmRleCAz
ZjhmZTgwM2Y5ODcxMGY2OTIzNTI3YmM4ZjY1NTBmNGVkZDFjN2FlLi5hZGRjZjIzMGMzNDVkNDI3
MWI2MzdmMDhiOTRjNDE2YTNlZDE4MmE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVFRodW5rcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUVGh1
bmtzLmgKQEAgLTM5LDYgKzM5LDkgQEAKICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+
CiAKIG5hbWVzcGFjZSBKU0MgeworbmFtZXNwYWNlIERPTUpJVCB7CitjbGFzcyBTaWduYXR1cmU7
Cit9CiAKIGNsYXNzIFZNOwogY2xhc3MgTmF0aXZlRXhlY3V0YWJsZTsKQEAgLTU3LDcgKzYwLDcg
QEAgY2xhc3MgSklUVGh1bmtzIGZpbmFsIDogcHJpdmF0ZSBXZWFrSGFuZGxlT3duZXIgewogICAg
IE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBjdGlTdHViKFZNKiwgVGh1bmtHZW5lcmF0b3IpOwogCiAg
ICAgTmF0aXZlRXhlY3V0YWJsZSogaG9zdEZ1bmN0aW9uU3R1YihWTSosIE5hdGl2ZUZ1bmN0aW9u
LCBOYXRpdmVGdW5jdGlvbiBjb25zdHJ1Y3RvciwgY29uc3QgU3RyaW5nJiBuYW1lKTsKLSAgICBO
YXRpdmVFeGVjdXRhYmxlKiBob3N0RnVuY3Rpb25TdHViKFZNKiwgTmF0aXZlRnVuY3Rpb24sIE5h
dGl2ZUZ1bmN0aW9uIGNvbnN0cnVjdG9yLCBUaHVua0dlbmVyYXRvciwgSW50cmluc2ljLCBjb25z
dCBTdHJpbmcmIG5hbWUpOworICAgIE5hdGl2ZUV4ZWN1dGFibGUqIGhvc3RGdW5jdGlvblN0dWIo
Vk0qLCBOYXRpdmVGdW5jdGlvbiwgTmF0aXZlRnVuY3Rpb24gY29uc3RydWN0b3IsIFRodW5rR2Vu
ZXJhdG9yLCBJbnRyaW5zaWMsIGNvbnN0IERPTUpJVDo6U2lnbmF0dXJlKiwgY29uc3QgU3RyaW5n
JiBuYW1lKTsKICAgICBOYXRpdmVFeGVjdXRhYmxlKiBob3N0RnVuY3Rpb25TdHViKFZNKiwgTmF0
aXZlRnVuY3Rpb24sIFRodW5rR2VuZXJhdG9yLCBJbnRyaW5zaWMsIGNvbnN0IFN0cmluZyYgbmFt
ZSk7CiAKICAgICB2b2lkIGNsZWFySG9zdEZ1bmN0aW9uU3R1YnMoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQm91bmRGdW5jdGlvbi5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0JvdW5kRnVuY3Rpb24uY3BwCmluZGV4IDI2Zjk5ZDY1
M2FhMTQ0YjI0MDRkZDc5NTk0MzI5M2RlOTZiNzM0YzUuLmM0Y2U0M2U3ZDU2MGI4NzM2M2M0OGQ5
NTBhMDlhZDc5ZDA1MjQ5N2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTQm91bmRGdW5jdGlvbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNCb3VuZEZ1bmN0aW9uLmNwcApAQCAtMTY4LDcgKzE2OCw3IEBAIEpTQm91bmRGdW5jdGlv
biogSlNCb3VuZEZ1bmN0aW9uOjpjcmVhdGUoVk0mIHZtLCBFeGVjU3RhdGUqIGV4ZWMsIEpTR2xv
YmFsT2JqZWN0CiAgICAgTmF0aXZlRXhlY3V0YWJsZSogZXhlY3V0YWJsZSA9IHZtLmdldEhvc3RG
dW5jdGlvbigKICAgICAgICAgc2xvd0Nhc2UgPyBib3VuZEZ1bmN0aW9uQ2FsbCA6IGJvdW5kVGhp
c05vQXJnc0Z1bmN0aW9uQ2FsbCwKICAgICAgICAgc2xvd0Nhc2UgPyBOb0ludHJpbnNpYyA6IEJv
dW5kVGhpc05vQXJnc0Z1bmN0aW9uQ2FsbEludHJpbnNpYywKLSAgICAgICAgY2FuQ29uc3RydWN0
ID8gKHNsb3dDYXNlID8gYm91bmRGdW5jdGlvbkNvbnN0cnVjdCA6IGJvdW5kVGhpc05vQXJnc0Z1
bmN0aW9uQ29uc3RydWN0KSA6IGNhbGxIb3N0RnVuY3Rpb25Bc0NvbnN0cnVjdG9yLAorICAgICAg
ICBjYW5Db25zdHJ1Y3QgPyAoc2xvd0Nhc2UgPyBib3VuZEZ1bmN0aW9uQ29uc3RydWN0IDogYm91
bmRUaGlzTm9BcmdzRnVuY3Rpb25Db25zdHJ1Y3QpIDogY2FsbEhvc3RGdW5jdGlvbkFzQ29uc3Ry
dWN0b3IsIG51bGxwdHIsCiAgICAgICAgIG5hbWUpOwogICAgIFN0cnVjdHVyZSogc3RydWN0dXJl
ID0gZ2V0Qm91bmRGdW5jdGlvblN0cnVjdHVyZSh2bSwgZXhlYywgZ2xvYmFsT2JqZWN0LCB0YXJn
ZXRGdW5jdGlvbik7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgbnVsbHB0cik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5oCmluZGV4IGM0MGYzZTIxOTg0MWZiNDY4
OTYzNTI4NGIwNDIyNDdhZmQ1MjNjMzYuLjRlZmJmOTA3NzhjYzU3MWJiZGI4Mjg3MWE1MWZhNDRm
ODU2YWU5OGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2Vs
bC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5oCkBAIC01Niwx
NyArNTYsMTcgQEAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gdm9pZCogYWxsb2NhdGVDZWxsKEhlYXAm
LCBzaXplX3QpOwogdGVtcGxhdGU8dHlwZW5hbWUgVD4gdm9pZCogYWxsb2NhdGVDZWxsKEhlYXAm
LCBHQ0RlZmVycmFsQ29udGV4dCopOwogdGVtcGxhdGU8dHlwZW5hbWUgVD4gdm9pZCogYWxsb2Nh
dGVDZWxsKEhlYXAmLCBHQ0RlZmVycmFsQ29udGV4dCosIHNpemVfdCk7CiAKLSNkZWZpbmUgREVD
TEFSRV9FWFBPUlRfSU5GTyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFwKLSAgICBwcm90ZWN0ZWQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgc3RhdGljIEpTX0VYUE9SVERBVEEgY29u
c3QgOjpKU0M6OkNsYXNzSW5mbyBzX2luZm87ICAgICAgICAgICAgIFwKLSAgICBwdWJsaWM6ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFwKLSAgICAgICAgc3RhdGljIGNvbnN0IDo6SlNDOjpDbGFzc0luZm8qIGluZm8oKSB7IHJldHVy
biAmc19pbmZvOyB9Ci0KLSNkZWZpbmUgREVDTEFSRV9JTkZPICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBwcm90ZWN0ZWQ6ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAg
ICAgc3RhdGljIGNvbnN0IDo6SlNDOjpDbGFzc0luZm8gc19pbmZvOyAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFwKLSAgICBwdWJsaWM6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgc3RhdGljIGNvbnN0IDo6SlND
OjpDbGFzc0luZm8qIGluZm8oKSB7IHJldHVybiAmc19pbmZvOyB9CisjZGVmaW5lIERFQ0xBUkVf
RVhQT1JUX0lORk8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFwKKyAgICBwcm90ZWN0ZWQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBzdGF0aWMgSlNfRVhQT1JUREFU
QSBjb25zdCA6OkpTQzo6Q2xhc3NJbmZvIHNfaW5mbzsgICAgICAgICAgICAgICAgICBcCisgICAg
cHVibGljOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFwKKyAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBjb25zdCA6OkpTQzo6
Q2xhc3NJbmZvKiBpbmZvKCkgeyByZXR1cm4gJnNfaW5mbzsgfQorCisjZGVmaW5lIERFQ0xBUkVf
SU5GTyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFwKKyAgICBwcm90ZWN0ZWQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBzdGF0aWMgY29uc3QgOjpKU0M6
OkNsYXNzSW5mbyBzX2luZm87ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAg
cHVibGljOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFwKKyAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBjb25zdCA6OkpTQzo6
Q2xhc3NJbmZvKiBpbmZvKCkgeyByZXR1cm4gJnNfaW5mbzsgfQogCiBjbGFzcyBKU0NlbGwgOiBw
dWJsaWMgSGVhcENlbGwgewogICAgIGZyaWVuZCBjbGFzcyBKU1ZhbHVlOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcAppbmRleCA4NTg0YmMyOTdhZjcyM2Y1
ODI5ODE1NmUyZTJiMGE4OGFlNzE4ZmI0Li5hMzE4NDJiNjU5MDkzZWVkNDgzMmYwYzIyNTQ3ZmZi
NDQ5YzQ0Y2Q5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1
bmN0aW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9u
LmNwcApAQCAtODQsOSArODQsOSBAQCBKU0Z1bmN0aW9uKiBKU0Z1bmN0aW9uOjpjcmVhdGUoVk0m
IHZtLCBXZWJBc3NlbWJseUV4ZWN1dGFibGUqIGV4ZWN1dGFibGUsIEpTU2NvcAogfQogI2VuZGlm
CiAKLUpTRnVuY3Rpb24qIEpTRnVuY3Rpb246OmNyZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIGludCBsZW5ndGgsIGNvbnN0IFN0cmluZyYgbmFtZSwgTmF0aXZlRnVu
Y3Rpb24gbmF0aXZlRnVuY3Rpb24sIEludHJpbnNpYyBpbnRyaW5zaWMsIE5hdGl2ZUZ1bmN0aW9u
IG5hdGl2ZUNvbnN0cnVjdG9yKQorSlNGdW5jdGlvbiogSlNGdW5jdGlvbjo6Y3JlYXRlKFZNJiB2
bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgaW50IGxlbmd0aCwgY29uc3QgU3RyaW5n
JiBuYW1lLCBOYXRpdmVGdW5jdGlvbiBuYXRpdmVGdW5jdGlvbiwgSW50cmluc2ljIGludHJpbnNp
YywgTmF0aXZlRnVuY3Rpb24gbmF0aXZlQ29uc3RydWN0b3IsIGNvbnN0IERPTUpJVDo6U2lnbmF0
dXJlKiBzaWduYXR1cmUpCiB7Ci0gICAgTmF0aXZlRXhlY3V0YWJsZSogZXhlY3V0YWJsZSA9IHZt
LmdldEhvc3RGdW5jdGlvbihuYXRpdmVGdW5jdGlvbiwgaW50cmluc2ljLCBuYXRpdmVDb25zdHJ1
Y3RvciwgbmFtZSk7CisgICAgTmF0aXZlRXhlY3V0YWJsZSogZXhlY3V0YWJsZSA9IHZtLmdldEhv
c3RGdW5jdGlvbihuYXRpdmVGdW5jdGlvbiwgaW50cmluc2ljLCBuYXRpdmVDb25zdHJ1Y3Rvciwg
c2lnbmF0dXJlLCBuYW1lKTsKICAgICBKU0Z1bmN0aW9uKiBmdW5jdGlvbiA9IG5ldyAoTm90TnVs
bCwgYWxsb2NhdGVDZWxsPEpTRnVuY3Rpb24+KHZtLmhlYXApKSBKU0Z1bmN0aW9uKHZtLCBnbG9i
YWxPYmplY3QsIGdsb2JhbE9iamVjdC0+ZnVuY3Rpb25TdHJ1Y3R1cmUoKSk7CiAgICAgLy8gQ2Fu
J3QgZG8gdGhpcyBkdXJpbmcgaW5pdGlhbGl6YXRpb24gYmVjYXVzZSBnZXRIb3N0RnVuY3Rpb24g
bWlnaHQgZG8gYSBHQyBhbGxvY2F0aW9uLgogICAgIGZ1bmN0aW9uLT5maW5pc2hDcmVhdGlvbih2
bSwgZXhlY3V0YWJsZSwgbGVuZ3RoLCBuYW1lKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTRnVuY3Rpb24uaAppbmRleCA4ZGYwM2ExNGE2N2RhZTkzMDRjMGQ1NTQ5NGY5NWE4Nzdm
OTc4MWU2Li5mMTFiMTJmYjNiZDE0NTYyNWY4MmJmMWZhODcyNTA0NDQ3NjU3NjI4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5oCkBAIC00Niw2ICs0NiwxMSBA
QCBjbGFzcyBTcGVjdWxhdGl2ZUpJVDsKIGNsYXNzIEpJVENvbXBpbGVyOwogfQogCituYW1lc3Bh
Y2UgRE9NSklUIHsKK2NsYXNzIFNpZ25hdHVyZTsKK30KKworCiBKU19FWFBPUlRfUFJJVkFURSBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxIb3N0RnVuY3Rpb25Bc0NvbnN0cnVjdG9y
KEV4ZWNTdGF0ZSopOwogCiBKU19FWFBPUlRfUFJJVkFURSBTdHJpbmcgZ2V0Q2FsY3VsYXRlZERp
c3BsYXlOYW1lKFZNJiwgSlNPYmplY3QqKTsKQEAgLTY3LDcgKzcyLDcgQEAgY2xhc3MgSlNGdW5j
dGlvbiA6IHB1YmxpYyBKU0NhbGxlZSB7CiAgICAgICAgIHJldHVybiBzaXplb2YoSlNGdW5jdGlv
bik7CiAgICAgfQogCi0gICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIEpTRnVuY3Rpb24qIGNy
ZWF0ZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgaW50IGxlbmd0aCwgY29uc3QgU3RyaW5nJiBuYW1l
LCBOYXRpdmVGdW5jdGlvbiwgSW50cmluc2ljID0gTm9JbnRyaW5zaWMsIE5hdGl2ZUZ1bmN0aW9u
IG5hdGl2ZUNvbnN0cnVjdG9yID0gY2FsbEhvc3RGdW5jdGlvbkFzQ29uc3RydWN0b3IpOworICAg
IEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBKU0Z1bmN0aW9uKiBjcmVhdGUoVk0mLCBKU0dsb2Jh
bE9iamVjdCosIGludCBsZW5ndGgsIGNvbnN0IFN0cmluZyYgbmFtZSwgTmF0aXZlRnVuY3Rpb24s
IEludHJpbnNpYyA9IE5vSW50cmluc2ljLCBOYXRpdmVGdW5jdGlvbiBuYXRpdmVDb25zdHJ1Y3Rv
ciA9IGNhbGxIb3N0RnVuY3Rpb25Bc0NvbnN0cnVjdG9yLCBjb25zdCBET01KSVQ6OlNpZ25hdHVy
ZSogPSBudWxscHRyKTsKICAgICAKICAgICBzdGF0aWMgSlNGdW5jdGlvbiogY3JlYXRlV2l0aElu
dmFsaWRhdGVkUmVhbGxvY2F0aW9uV2F0Y2hwb2ludChWTSYsIEZ1bmN0aW9uRXhlY3V0YWJsZSos
IEpTU2NvcGUqKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNOYXRpdmVTdGRGdW5jdGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U05hdGl2ZVN0ZEZ1bmN0aW9uLmNwcAppbmRleCA2ZGQ4NDlmMmVhZmJlYmRkNzA3ZWU1NzM4MDA4
MmRlNTQ4OTMyMGExLi5jMTI2NWIxZjA2YTkwYTA3NDQxZDdhYzVjNjA4ODMwYTFlZmE0ZjAyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU05hdGl2ZVN0ZEZ1bmN0
aW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU05hdGl2ZVN0ZEZ1
bmN0aW9uLmNwcApAQCAtNjYsNyArNjYsNyBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBydW5TdGRGdW5jdGlvbihFeGVjU3RhdGUqIHN0YXRlKQogCiBKU05hdGl2ZVN0ZEZ1
bmN0aW9uKiBKU05hdGl2ZVN0ZEZ1bmN0aW9uOjpjcmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBpbnQgbGVuZ3RoLCBjb25zdCBTdHJpbmcmIG5hbWUsIE5hdGl2ZVN0
ZEZ1bmN0aW9uJiYgbmF0aXZlU3RkRnVuY3Rpb24sIEludHJpbnNpYyBpbnRyaW5zaWMsIE5hdGl2
ZUZ1bmN0aW9uIG5hdGl2ZUNvbnN0cnVjdG9yKQogewotICAgIE5hdGl2ZUV4ZWN1dGFibGUqIGV4
ZWN1dGFibGUgPSB2bS5nZXRIb3N0RnVuY3Rpb24ocnVuU3RkRnVuY3Rpb24sIGludHJpbnNpYywg
bmF0aXZlQ29uc3RydWN0b3IsIG5hbWUpOworICAgIE5hdGl2ZUV4ZWN1dGFibGUqIGV4ZWN1dGFi
bGUgPSB2bS5nZXRIb3N0RnVuY3Rpb24ocnVuU3RkRnVuY3Rpb24sIGludHJpbnNpYywgbmF0aXZl
Q29uc3RydWN0b3IsIG51bGxwdHIsIG5hbWUpOwogICAgIE5hdGl2ZVN0ZEZ1bmN0aW9uQ2VsbCog
ZnVuY3Rpb25DZWxsID0gTmF0aXZlU3RkRnVuY3Rpb25DZWxsOjpjcmVhdGUodm0sIFdURk1vdmUo
bmF0aXZlU3RkRnVuY3Rpb24pKTsKICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGdsb2JhbE9i
amVjdC0+bmF0aXZlU3RkRnVuY3Rpb25TdHJ1Y3R1cmUoKTsKICAgICBKU05hdGl2ZVN0ZEZ1bmN0
aW9uKiBmdW5jdGlvbiA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTTmF0aXZlU3RkRnVu
Y3Rpb24+KHZtLmhlYXApKSBKU05hdGl2ZVN0ZEZ1bmN0aW9uKHZtLCBnbG9iYWxPYmplY3QsIHN0
cnVjdHVyZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09i
amVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAKaW5k
ZXggZjUzZGI2MTk4NmVhZGRhYTIzYTI0NWRlNTRhZTA5YzU4ZjBhYjc2NC4uMDhhZTc5MjBhOWVl
NTJjMjRkNzVhYmUxZGE3ZjY2ZTgxMWIyYWYxYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTT2JqZWN0LmNwcApAQCAtMjU0OSw2ICsyNTQ5LDE3IEBAIGJvb2wgSlNPYmplY3Q6
OnB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgY29uCiAgICAgcmV0dXJuIHB1dERpcmVjdCh2bSwgcHJvcGVydHlOYW1lLCBmdW5jdGlv
biwgYXR0cmlidXRlcyk7CiB9CiAKK2Jvb2wgSlNPYmplY3Q6OnB1dERpcmVjdE5hdGl2ZUZ1bmN0
aW9uKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgUHJvcGVydHlO
YW1lJiBwcm9wZXJ0eU5hbWUsIHVuc2lnbmVkIGZ1bmN0aW9uTGVuZ3RoLCBOYXRpdmVGdW5jdGlv
biBuYXRpdmVGdW5jdGlvbiwgSW50cmluc2ljIGludHJpbnNpYywgY29uc3QgRE9NSklUOjpTaWdu
YXR1cmUqIHNpZ25hdHVyZSwgdW5zaWduZWQgYXR0cmlidXRlcykKK3sKKyAgICBTdHJpbmdJbXBs
KiBuYW1lID0gcHJvcGVydHlOYW1lLnB1YmxpY05hbWUoKTsKKyAgICBpZiAoIW5hbWUpCisgICAg
ICAgIG5hbWUgPSB2bS5wcm9wZXJ0eU5hbWVzLT5hbm9ueW1vdXMuaW1wbCgpOworICAgIEFTU0VS
VChuYW1lKTsKKworICAgIEpTRnVuY3Rpb24qIGZ1bmN0aW9uID0gSlNGdW5jdGlvbjo6Y3JlYXRl
KHZtLCBnbG9iYWxPYmplY3QsIGZ1bmN0aW9uTGVuZ3RoLCBuYW1lLCBuYXRpdmVGdW5jdGlvbiwg
aW50cmluc2ljLCBjYWxsSG9zdEZ1bmN0aW9uQXNDb25zdHJ1Y3Rvciwgc2lnbmF0dXJlKTsKKyAg
ICByZXR1cm4gcHV0RGlyZWN0KHZtLCBwcm9wZXJ0eU5hbWUsIGZ1bmN0aW9uLCBhdHRyaWJ1dGVz
KTsKK30KKwogSlNGdW5jdGlvbiogSlNPYmplY3Q6OnB1dERpcmVjdEJ1aWx0aW5GdW5jdGlvbihW
TSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IFByb3BlcnR5TmFtZSYg
cHJvcGVydHlOYW1lLCBGdW5jdGlvbkV4ZWN1dGFibGUqIGZ1bmN0aW9uRXhlY3V0YWJsZSwgdW5z
aWduZWQgYXR0cmlidXRlcykKIHsKICAgICBTdHJpbmdJbXBsKiBuYW1lID0gcHJvcGVydHlOYW1l
LnB1YmxpY05hbWUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCmlu
ZGV4IDYyMjBlYzdhMWJhOGU4YTc0OWRiNGIwNmNkNDI5M2E4ODVhZjdmOTIuLmViZTQ4NWU4ZGYz
NmRiNWNhZjM3NzA0YjhlZWRkNGE3NmNiOWM0NDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNPYmplY3QuaApAQCAtNDcsNiArNDcsOSBAQAogI2luY2x1ZGUgPHd0Zi9TdGRMaWJF
eHRyYXMuaD4KIAogbmFtZXNwYWNlIEpTQyB7CituYW1lc3BhY2UgRE9NSklUIHsKK2NsYXNzIFNp
Z25hdHVyZTsKK30KIAogaW5saW5lIEpTQ2VsbCogZ2V0SlNGdW5jdGlvbihKU1ZhbHVlIHZhbHVl
KQogewpAQCAtNzAwLDYgKzcwMyw3IEBAIGNsYXNzIEpTT2JqZWN0IDogcHVibGljIEpTQ2VsbCB7
CiAKICAgICBKU19FWFBPUlRfUFJJVkFURSBib29sIHB1dERpcmVjdE5hdGl2ZUludHJpbnNpY0dl
dHRlcihWTSYsIEpTR2xvYmFsT2JqZWN0KiwgSWRlbnRpZmllciwgTmF0aXZlRnVuY3Rpb24sIElu
dHJpbnNpYywgdW5zaWduZWQgYXR0cmlidXRlcyk7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgYm9v
bCBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbihWTSYsIEpTR2xvYmFsT2JqZWN0KiwgY29uc3QgUHJv
cGVydHlOYW1lJiwgdW5zaWduZWQgZnVuY3Rpb25MZW5ndGgsIE5hdGl2ZUZ1bmN0aW9uLCBJbnRy
aW5zaWMsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIGJvb2wg
cHV0RGlyZWN0TmF0aXZlRnVuY3Rpb24oVk0mLCBKU0dsb2JhbE9iamVjdCosIGNvbnN0IFByb3Bl
cnR5TmFtZSYsIHVuc2lnbmVkIGZ1bmN0aW9uTGVuZ3RoLCBOYXRpdmVGdW5jdGlvbiwgSW50cmlu
c2ljLCBjb25zdCBET01KSVQ6OlNpZ25hdHVyZSosIHVuc2lnbmVkIGF0dHJpYnV0ZXMpOwogICAg
IEpTX0VYUE9SVF9QUklWQVRFIEpTRnVuY3Rpb24qIHB1dERpcmVjdEJ1aWx0aW5GdW5jdGlvbihW
TSYsIEpTR2xvYmFsT2JqZWN0KiwgY29uc3QgUHJvcGVydHlOYW1lJiwgRnVuY3Rpb25FeGVjdXRh
YmxlKiwgdW5zaWduZWQgYXR0cmlidXRlcyk7CiAgICAgSlNGdW5jdGlvbiogcHV0RGlyZWN0QnVp
bHRpbkZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24oVk0mLCBKU0dsb2JhbE9iamVjdCosIGNvbnN0
IFByb3BlcnR5TmFtZSYsIEZ1bmN0aW9uRXhlY3V0YWJsZSosIHVuc2lnbmVkIGF0dHJpYnV0ZXMp
OwogICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb25XaXRo
b3V0VHJhbnNpdGlvbihWTSYsIEpTR2xvYmFsT2JqZWN0KiwgY29uc3QgUHJvcGVydHlOYW1lJiwg
dW5zaWduZWQgZnVuY3Rpb25MZW5ndGgsIE5hdGl2ZUZ1bmN0aW9uLCBJbnRyaW5zaWMsIHVuc2ln
bmVkIGF0dHJpYnV0ZXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvTG9va3VwLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Mb29rdXAuaAppbmRl
eCBlMmQxNzk1Mzg4ZTc2NTJiZDhmMWI0YjZkYWNiYjJjYmNlOWNkNDRmLi5kNzA3Njg2ZmI1Njkz
ZTdmNTJmZTZkMWEyZWM0NGJkMDAyM2JlZjExIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Mb29rdXAuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Mb29rdXAuaApAQCAtMjQsNiArMjQsNyBAQAogI2luY2x1ZGUgIkNhbGxGcmFtZS5oIgogI2lu
Y2x1ZGUgIkN1c3RvbUdldHRlclNldHRlci5oIgogI2luY2x1ZGUgIkRPTUpJVEdldHRlclNldHRl
ci5oIgorI2luY2x1ZGUgIkRPTUpJVFNpZ25hdHVyZS5oIgogI2luY2x1ZGUgIklkZW50aWZpZXIu
aCIKICNpbmNsdWRlICJJZGVudGlmaWVySW5saW5lcy5oIgogI2luY2x1ZGUgIkludHJpbnNpYy5o
IgpAQCAtNzUsMTIgKzc2LDE5IEBAIHN0cnVjdCBIYXNoVGFibGVWYWx1ZSB7CiAgICAgSW50cmlu
c2ljIGludHJpbnNpYygpIGNvbnN0IHsgQVNTRVJUKG1fYXR0cmlidXRlcyAmIEZ1bmN0aW9uKTsg
cmV0dXJuIG1faW50cmluc2ljOyB9CiAgICAgQnVpbHRpbkdlbmVyYXRvciBidWlsdGluR2VuZXJh
dG9yKCkgY29uc3QgeyBBU1NFUlQobV9hdHRyaWJ1dGVzICYgQnVpbHRpbik7IHJldHVybiByZWlu
dGVycHJldF9jYXN0PEJ1aWx0aW5HZW5lcmF0b3I+KG1fdmFsdWVzLnZhbHVlMSk7IH0KICAgICBO
YXRpdmVGdW5jdGlvbiBmdW5jdGlvbigpIGNvbnN0IHsgQVNTRVJUKG1fYXR0cmlidXRlcyAmIEZ1
bmN0aW9uKTsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8TmF0aXZlRnVuY3Rpb24+KG1fdmFsdWVz
LnZhbHVlMSk7IH0KLSAgICB1bnNpZ25lZCBjaGFyIGZ1bmN0aW9uTGVuZ3RoKCkgY29uc3QgeyBB
U1NFUlQobV9hdHRyaWJ1dGVzICYgRnVuY3Rpb24pOyByZXR1cm4gc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQgY2hhcj4obV92YWx1ZXMudmFsdWUyKTsgfQorICAgIHVuc2lnbmVkIGNoYXIgZnVuY3Rpb25M
ZW5ndGgoKSBjb25zdAorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fYXR0cmlidXRlcyAmIEZ1bmN0
aW9uKTsKKyAgICAgICAgaWYgKG1fYXR0cmlidXRlcyAmIERPTUpJVEZ1bmN0aW9uKQorICAgICAg
ICAgICAgcmV0dXJuIHNpZ25hdHVyZSgpLT5hcmd1bWVudENvdW50OworICAgICAgICByZXR1cm4g
c3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4obV92YWx1ZXMudmFsdWUyKTsKKyAgICB9CiAKICAg
ICBHZXRGdW5jdGlvbiBwcm9wZXJ0eUdldHRlcigpIGNvbnN0IHsgQVNTRVJUKCEobV9hdHRyaWJ1
dGVzICYgQnVpbHRpbk9yRnVuY3Rpb25PckFjY2Vzc29yT3JMYXp5UHJvcGVydHlPckNvbnN0YW50
KSk7IHJldHVybiByZWludGVycHJldF9jYXN0PEdldEZ1bmN0aW9uPihtX3ZhbHVlcy52YWx1ZTEp
OyB9CiAgICAgUHV0RnVuY3Rpb24gcHJvcGVydHlQdXR0ZXIoKSBjb25zdCB7IEFTU0VSVCghKG1f
YXR0cmlidXRlcyAmIEJ1aWx0aW5PckZ1bmN0aW9uT3JBY2Nlc3Nvck9yTGF6eVByb3BlcnR5T3JD
b25zdGFudCkpOyByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxQdXRGdW5jdGlvbj4obV92YWx1ZXMu
dmFsdWUyKTsgfQogCiAgICAgRE9NSklUOjpHZXR0ZXJTZXR0ZXIqIGRvbUpJVCgpIGNvbnN0IHsg
QVNTRVJUKG1fYXR0cmlidXRlcyAmIERPTUpJVEF0dHJpYnV0ZSk7IHJldHVybiByZWludGVycHJl
dF9jYXN0PERPTUpJVEdldHRlclNldHRlckdlbmVyYXRvcj4obV92YWx1ZXMudmFsdWUxKSgpOyB9
CisgICAgY29uc3QgRE9NSklUOjpTaWduYXR1cmUqIHNpZ25hdHVyZSgpIGNvbnN0IHsgQVNTRVJU
KG1fYXR0cmlidXRlcyAmIERPTUpJVEZ1bmN0aW9uKTsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgRE9NSklUOjpTaWduYXR1cmUqPihtX3ZhbHVlcy52YWx1ZTIpOyB9CiAKICAgICBOYXRp
dmVGdW5jdGlvbiBhY2Nlc3NvckdldHRlcigpIGNvbnN0IHsgQVNTRVJUKG1fYXR0cmlidXRlcyAm
IEFjY2Vzc29yKTsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8TmF0aXZlRnVuY3Rpb24+KG1fdmFs
dWVzLnZhbHVlMSk7IH0KICAgICBOYXRpdmVGdW5jdGlvbiBhY2Nlc3NvclNldHRlcigpIGNvbnN0
IHsgQVNTRVJUKG1fYXR0cmlidXRlcyAmIEFjY2Vzc29yKTsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nh
c3Q8TmF0aXZlRnVuY3Rpb24+KG1fdmFsdWVzLnZhbHVlMik7IH0KQEAgLTMxMyw2ICszMjEsMTIg
QEAgaW5saW5lIHZvaWQgcmVpZnlTdGF0aWNQcm9wZXJ0eShWTSYgdm0sIGNvbnN0IFByb3BlcnR5
TmFtZSYgcHJvcGVydHlOYW1lLCBjb25zdAogICAgIH0KIAogICAgIGlmICh2YWx1ZS5hdHRyaWJ1
dGVzKCkgJiBGdW5jdGlvbikgeworICAgICAgICBpZiAodmFsdWUuYXR0cmlidXRlcygpICYgRE9N
SklURnVuY3Rpb24pIHsKKyAgICAgICAgICAgIHRoaXNPYmoucHV0RGlyZWN0TmF0aXZlRnVuY3Rp
b24oCisgICAgICAgICAgICAgICAgdm0sIHRoaXNPYmouZ2xvYmFsT2JqZWN0KCksIHByb3BlcnR5
TmFtZSwgdmFsdWUuZnVuY3Rpb25MZW5ndGgoKSwKKyAgICAgICAgICAgICAgICB2YWx1ZS5mdW5j
dGlvbigpLCB2YWx1ZS5pbnRyaW5zaWMoKSwgdmFsdWUuc2lnbmF0dXJlKCksIGF0dHJpYnV0ZXNG
b3JTdHJ1Y3R1cmUodmFsdWUuYXR0cmlidXRlcygpKSk7CisgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgIH0KICAgICAgICAgdGhpc09iai5wdXREaXJlY3ROYXRpdmVGdW5jdGlvbigKICAgICAg
ICAgICAgIHZtLCB0aGlzT2JqLmdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLmZ1
bmN0aW9uTGVuZ3RoKCksCiAgICAgICAgICAgICB2YWx1ZS5mdW5jdGlvbigpLCB2YWx1ZS5pbnRy
aW5zaWMoKSwgYXR0cmlidXRlc0ZvclN0cnVjdHVyZSh2YWx1ZS5hdHRyaWJ1dGVzKCkpKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05hdGl2ZUV4ZWN1dGFibGUu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZlRXhlY3V0YWJsZS5jcHAK
aW5kZXggMWMyYmVjNThiN2RiODk4YjgxMThiMjk3MTBiMmQ3NDI2OTNiYjIxZC4uYjdkYWQyYTQ2
MmRkZGZjMjI3NjJmZDVjZDdjZjZhNDYxY2RkMThmNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZlRXhlY3V0YWJsZS5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZlRXhlY3V0YWJsZS5jcHAKQEAgLTQwLDEwICs0MCwxMCBA
QCBuYW1lc3BhY2UgSlNDIHsKIAogY29uc3QgQ2xhc3NJbmZvIE5hdGl2ZUV4ZWN1dGFibGU6OnNf
aW5mbyA9IHsgIk5hdGl2ZUV4ZWN1dGFibGUiLCAmRXhlY3V0YWJsZUJhc2U6OnNfaW5mbywgMCwg
Q1JFQVRFX01FVEhPRF9UQUJMRShOYXRpdmVFeGVjdXRhYmxlKSB9OwogCi1OYXRpdmVFeGVjdXRh
YmxlKiBOYXRpdmVFeGVjdXRhYmxlOjpjcmVhdGUoVk0mIHZtLCBQYXNzUmVmUHRyPEpJVENvZGU+
IGNhbGxUaHVuaywgTmF0aXZlRnVuY3Rpb24gZnVuY3Rpb24sIFBhc3NSZWZQdHI8SklUQ29kZT4g
Y29uc3RydWN0VGh1bmssIE5hdGl2ZUZ1bmN0aW9uIGNvbnN0cnVjdG9yLCBJbnRyaW5zaWMgaW50
cmluc2ljLCBjb25zdCBTdHJpbmcmIG5hbWUpCitOYXRpdmVFeGVjdXRhYmxlKiBOYXRpdmVFeGVj
dXRhYmxlOjpjcmVhdGUoVk0mIHZtLCBQYXNzUmVmUHRyPEpJVENvZGU+IGNhbGxUaHVuaywgTmF0
aXZlRnVuY3Rpb24gZnVuY3Rpb24sIFBhc3NSZWZQdHI8SklUQ29kZT4gY29uc3RydWN0VGh1bmss
IE5hdGl2ZUZ1bmN0aW9uIGNvbnN0cnVjdG9yLCBJbnRyaW5zaWMgaW50cmluc2ljLCBjb25zdCBE
T01KSVQ6OlNpZ25hdHVyZSogc2lnbmF0dXJlLCBjb25zdCBTdHJpbmcmIG5hbWUpCiB7CiAgICAg
TmF0aXZlRXhlY3V0YWJsZSogZXhlY3V0YWJsZTsKLSAgICBleGVjdXRhYmxlID0gbmV3IChOb3RO
dWxsLCBhbGxvY2F0ZUNlbGw8TmF0aXZlRXhlY3V0YWJsZT4odm0uaGVhcCkpIE5hdGl2ZUV4ZWN1
dGFibGUodm0sIGZ1bmN0aW9uLCBjb25zdHJ1Y3RvciwgaW50cmluc2ljKTsKKyAgICBleGVjdXRh
YmxlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8TmF0aXZlRXhlY3V0YWJsZT4odm0uaGVh
cCkpIE5hdGl2ZUV4ZWN1dGFibGUodm0sIGZ1bmN0aW9uLCBjb25zdHJ1Y3RvciwgaW50cmluc2lj
LCBzaWduYXR1cmUpOwogICAgIGV4ZWN1dGFibGUtPmZpbmlzaENyZWF0aW9uKHZtLCBjYWxsVGh1
bmssIGNvbnN0cnVjdFRodW5rLCBuYW1lKTsKICAgICByZXR1cm4gZXhlY3V0YWJsZTsKIH0KQEAg
LTY4LDEwICs2OCwxMSBAQCB2b2lkIE5hdGl2ZUV4ZWN1dGFibGU6OmZpbmlzaENyZWF0aW9uKFZN
JiB2bSwgUGFzc1JlZlB0cjxKSVRDb2RlPiBjYWxsVGh1bmssIFBhcwogICAgIG1fbmFtZSA9IG5h
bWU7CiB9CiAKLU5hdGl2ZUV4ZWN1dGFibGU6Ok5hdGl2ZUV4ZWN1dGFibGUoVk0mIHZtLCBOYXRp
dmVGdW5jdGlvbiBmdW5jdGlvbiwgTmF0aXZlRnVuY3Rpb24gY29uc3RydWN0b3IsIEludHJpbnNp
YyBpbnRyaW5zaWMpCitOYXRpdmVFeGVjdXRhYmxlOjpOYXRpdmVFeGVjdXRhYmxlKFZNJiB2bSwg
TmF0aXZlRnVuY3Rpb24gZnVuY3Rpb24sIE5hdGl2ZUZ1bmN0aW9uIGNvbnN0cnVjdG9yLCBJbnRy
aW5zaWMgaW50cmluc2ljLCBjb25zdCBET01KSVQ6OlNpZ25hdHVyZSogc2lnbmF0dXJlKQogICAg
IDogRXhlY3V0YWJsZUJhc2Uodm0sIHZtLm5hdGl2ZUV4ZWN1dGFibGVTdHJ1Y3R1cmUuZ2V0KCks
IE5VTV9QQVJBTUVURVJTX0lTX0hPU1QsIGludHJpbnNpYykKICAgICAsIG1fZnVuY3Rpb24oZnVu
Y3Rpb24pCiAgICAgLCBtX2NvbnN0cnVjdG9yKGNvbnN0cnVjdG9yKQorICAgICwgbV9zaWduYXR1
cmUoc2lnbmF0dXJlKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9OYXRpdmVFeGVjdXRhYmxlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9OYXRpdmVFeGVjdXRhYmxlLmgKaW5kZXggNWJmMmUxMDZkYjMwYTViOGM5NzhjODk2YTZhZDk4
Y2EyYzc1NzQxNC4uZTRkM2UwNDk0NTdiNDVkMDI0NTdlOGRkYTU0NDkwYjM3MTRhY2NlYSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZlRXhlY3V0YWJsZS5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05hdGl2ZUV4ZWN1dGFibGUuaApA
QCAtMjgsNiArMjgsOSBAQAogI2luY2x1ZGUgIkV4ZWN1dGFibGVCYXNlLmgiCiAKIG5hbWVzcGFj
ZSBKU0MgeworbmFtZXNwYWNlIERPTUpJVCB7CitjbGFzcyBTaWduYXR1cmU7Cit9CiAKIGNsYXNz
IE5hdGl2ZUV4ZWN1dGFibGUgZmluYWwgOiBwdWJsaWMgRXhlY3V0YWJsZUJhc2UgewogICAgIGZy
aWVuZCBjbGFzcyBKSVQ7CkBAIC0zNiw3ICszOSw3IEBAIGNsYXNzIE5hdGl2ZUV4ZWN1dGFibGUg
ZmluYWwgOiBwdWJsaWMgRXhlY3V0YWJsZUJhc2UgewogICAgIHR5cGVkZWYgRXhlY3V0YWJsZUJh
c2UgQmFzZTsKICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNl
OjpTdHJ1Y3R1cmVGbGFncyB8IFN0cnVjdHVyZUlzSW1tb3J0YWw7CiAKLSAgICBzdGF0aWMgTmF0
aXZlRXhlY3V0YWJsZSogY3JlYXRlKFZNJiB2bSwgUGFzc1JlZlB0cjxKSVRDb2RlPiBjYWxsVGh1
bmssIE5hdGl2ZUZ1bmN0aW9uIGZ1bmN0aW9uLCBQYXNzUmVmUHRyPEpJVENvZGU+IGNvbnN0cnVj
dFRodW5rLCBOYXRpdmVGdW5jdGlvbiBjb25zdHJ1Y3RvciwgSW50cmluc2ljIGludHJpbnNpYywg
Y29uc3QgU3RyaW5nJiBuYW1lKTsKKyAgICBzdGF0aWMgTmF0aXZlRXhlY3V0YWJsZSogY3JlYXRl
KFZNJiwgUGFzc1JlZlB0cjxKSVRDb2RlPiBjYWxsVGh1bmssIE5hdGl2ZUZ1bmN0aW9uIGZ1bmN0
aW9uLCBQYXNzUmVmUHRyPEpJVENvZGU+IGNvbnN0cnVjdFRodW5rLCBOYXRpdmVGdW5jdGlvbiBj
b25zdHJ1Y3RvciwgSW50cmluc2ljLCBjb25zdCBET01KSVQ6OlNpZ25hdHVyZSosIGNvbnN0IFN0
cmluZyYgbmFtZSk7CiAKICAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQ2VsbCopOwogCkBAIC02
Niw2ICs2OSwxNCBAQCBjbGFzcyBOYXRpdmVFeGVjdXRhYmxlIGZpbmFsIDogcHVibGljIEV4ZWN1
dGFibGVCYXNlIHsKICAgICBERUNMQVJFX0lORk87CiAKICAgICBjb25zdCBTdHJpbmcmIG5hbWUo
KSBjb25zdCB7IHJldHVybiBtX25hbWU7IH0KKyAgICBjb25zdCBET01KSVQ6OlNpZ25hdHVyZSog
c2lnbmF0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9zaWduYXR1cmU7IH0KKworICAgIGNvbnN0IERP
TUpJVDo6U2lnbmF0dXJlKiBzaWduYXR1cmVGb3IoQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5k
KSBjb25zdAorICAgIHsKKyAgICAgICAgaWYgKGlzQ2FsbChraW5kKSkKKyAgICAgICAgICAgIHJl
dHVybiBzaWduYXR1cmUoKTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQogCiBwcm90
ZWN0ZWQ6CiAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYsIFBhc3NSZWZQdHI8SklUQ29kZT4g
Y2FsbFRodW5rLCBQYXNzUmVmUHRyPEpJVENvZGU+IGNvbnN0cnVjdFRodW5rLCBjb25zdCBTdHJp
bmcmIG5hbWUpOwpAQCAtNzMsMTAgKzg0LDExIEBAIGNsYXNzIE5hdGl2ZUV4ZWN1dGFibGUgZmlu
YWwgOiBwdWJsaWMgRXhlY3V0YWJsZUJhc2UgewogcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3Mg
RXhlY3V0YWJsZUJhc2U7CiAKLSAgICBOYXRpdmVFeGVjdXRhYmxlKFZNJiwgTmF0aXZlRnVuY3Rp
b24gZnVuY3Rpb24sIE5hdGl2ZUZ1bmN0aW9uIGNvbnN0cnVjdG9yLCBJbnRyaW5zaWMpOworICAg
IE5hdGl2ZUV4ZWN1dGFibGUoVk0mLCBOYXRpdmVGdW5jdGlvbiBmdW5jdGlvbiwgTmF0aXZlRnVu
Y3Rpb24gY29uc3RydWN0b3IsIEludHJpbnNpYywgY29uc3QgRE9NSklUOjpTaWduYXR1cmUqKTsK
IAogICAgIE5hdGl2ZUZ1bmN0aW9uIG1fZnVuY3Rpb247CiAgICAgTmF0aXZlRnVuY3Rpb24gbV9j
b25zdHJ1Y3RvcjsKKyAgICBjb25zdCBET01KSVQ6OlNpZ25hdHVyZSogbV9zaWduYXR1cmU7CiAK
ICAgICBTdHJpbmcgbV9uYW1lOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1Byb3BlcnR5U2xvdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
UHJvcGVydHlTbG90LmgKaW5kZXggOWRlMTUxYTU2YWEyNzU2Y2ZkMGM2MDAzNjY4MjY2YjE5Zjk5
MzJkZC4uMzg3ZTMxYjQwZTVhZWJmMmYzNWY2Y2EyNzJlMzgzYzA1ZDNmNDUyZCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlTbG90LmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlTbG90LmgKQEAgLTUxLDYgKzUxLDcg
QEAgZW51bSBBdHRyaWJ1dGUgewogICAgIENsYXNzU3RydWN0dXJlICAgID0gMSA8PCAxMiwgLy8g
cHJvcGVydHkgaXMgYSBsYXp5IGNsYXNzIHN0cnVjdHVyZSAtIG9ubHkgdXNlZCBieSBzdGF0aWMg
aGFzaHRhYmxlcwogICAgIFByb3BlcnR5Q2FsbGJhY2sgID0gMSA8PCAxMywgLy8gcHJvcGVydHkg
dGhhdCBpcyBhIGxhenkgcHJvcGVydHkgY2FsbGJhY2sgLSBvbmx5IHVzZWQgYnkgc3RhdGljIGhh
c2h0YWJsZXMKICAgICBET01KSVRBdHRyaWJ1dGUgICA9IDEgPDwgMTQsIC8vIHByb3BlcnR5IGlz
IGEgRE9NIEpJVCBhdHRyaWJ1dGUgLSBvbmx5IHVzZWQgYnkgc3RhdGljIGhhc2h0YWJsZXMKKyAg
ICBET01KSVRGdW5jdGlvbiAgICA9IDEgPDwgMTUsIC8vIHByb3BlcnR5IGlzIGEgRE9NIEpJVCBm
dW5jdGlvbiAtIG9ubHkgdXNlZCBieSBzdGF0aWMgaGFzaHRhYmxlcwogICAgIEJ1aWx0aW5PckZ1
bmN0aW9uID0gQnVpbHRpbiB8IEZ1bmN0aW9uLCAvLyBoZWxwZXIgb25seSB1c2VkIGJ5IHN0YXRp
YyBoYXNodGFibGVzCiAgICAgQnVpbHRpbk9yRnVuY3Rpb25PckxhenlQcm9wZXJ0eSA9IEJ1aWx0
aW4gfCBGdW5jdGlvbiB8IENlbGxQcm9wZXJ0eSB8IENsYXNzU3RydWN0dXJlIHwgUHJvcGVydHlD
YWxsYmFjaywgLy8gaGVscGVyIG9ubHkgdXNlZCBieSBzdGF0aWMgaGFzaHRhYmxlcwogICAgIEJ1
aWx0aW5PckZ1bmN0aW9uT3JBY2Nlc3Nvck9yTGF6eVByb3BlcnR5ID0gQnVpbHRpbiB8IEZ1bmN0
aW9uIHwgQWNjZXNzb3IgfCBDZWxsUHJvcGVydHkgfCBDbGFzc1N0cnVjdHVyZSB8IFByb3BlcnR5
Q2FsbGJhY2ssIC8vIGhlbHBlciBvbmx5IHVzZWQgYnkgc3RhdGljIGhhc2h0YWJsZXMKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAppbmRleCA4MTIzOWM1YjkyNGI0ZWNjOGU2ZDcwYmM4
MDc3ZTgzOGFmMWUxZDYxLi5mOTI3MzQ3MzRhY2VlYzQxYTQ1ODM2MDk1NGIwN2Q4ZmFjMTI1YmJm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCkBAIC01MTEsMTcgKzUxMSwxNyBA
QCBzdGF0aWMgVGh1bmtHZW5lcmF0b3IgdGh1bmtHZW5lcmF0b3JGb3JJbnRyaW5zaWMoSW50cmlu
c2ljIGludHJpbnNpYykKIAogTmF0aXZlRXhlY3V0YWJsZSogVk06OmdldEhvc3RGdW5jdGlvbihO
YXRpdmVGdW5jdGlvbiBmdW5jdGlvbiwgTmF0aXZlRnVuY3Rpb24gY29uc3RydWN0b3IsIGNvbnN0
IFN0cmluZyYgbmFtZSkKIHsKLSAgICByZXR1cm4gZ2V0SG9zdEZ1bmN0aW9uKGZ1bmN0aW9uLCBO
b0ludHJpbnNpYywgY29uc3RydWN0b3IsIG5hbWUpOworICAgIHJldHVybiBnZXRIb3N0RnVuY3Rp
b24oZnVuY3Rpb24sIE5vSW50cmluc2ljLCBjb25zdHJ1Y3RvciwgbnVsbHB0ciwgbmFtZSk7CiB9
CiAKLU5hdGl2ZUV4ZWN1dGFibGUqIFZNOjpnZXRIb3N0RnVuY3Rpb24oTmF0aXZlRnVuY3Rpb24g
ZnVuY3Rpb24sIEludHJpbnNpYyBpbnRyaW5zaWMsIE5hdGl2ZUZ1bmN0aW9uIGNvbnN0cnVjdG9y
LCBjb25zdCBTdHJpbmcmIG5hbWUpCitOYXRpdmVFeGVjdXRhYmxlKiBWTTo6Z2V0SG9zdEZ1bmN0
aW9uKE5hdGl2ZUZ1bmN0aW9uIGZ1bmN0aW9uLCBJbnRyaW5zaWMgaW50cmluc2ljLCBOYXRpdmVG
dW5jdGlvbiBjb25zdHJ1Y3RvciwgY29uc3QgRE9NSklUOjpTaWduYXR1cmUqIHNpZ25hdHVyZSwg
Y29uc3QgU3RyaW5nJiBuYW1lKQogewogI2lmIEVOQUJMRShKSVQpCiAgICAgaWYgKGNhblVzZUpJ
VCgpKSB7CiAgICAgICAgIHJldHVybiBqaXRTdHVicy0+aG9zdEZ1bmN0aW9uU3R1YigKICAgICAg
ICAgICAgIHRoaXMsIGZ1bmN0aW9uLCBjb25zdHJ1Y3RvciwKICAgICAgICAgICAgIGludHJpbnNp
YyAhPSBOb0ludHJpbnNpYyA/IHRodW5rR2VuZXJhdG9yRm9ySW50cmluc2ljKGludHJpbnNpYykg
OiAwLAotICAgICAgICAgICAgaW50cmluc2ljLCBuYW1lKTsKKyAgICAgICAgICAgIGludHJpbnNp
Yywgc2lnbmF0dXJlLCBuYW1lKTsKICAgICB9CiAjZWxzZSAvLyBFTkFCTEUoSklUKQogICAgIFVO
VVNFRF9QQVJBTShpbnRyaW5zaWMpOwpAQCAtNTI5LDcgKzUyOSw3IEBAIE5hdGl2ZUV4ZWN1dGFi
bGUqIFZNOjpnZXRIb3N0RnVuY3Rpb24oTmF0aXZlRnVuY3Rpb24gZnVuY3Rpb24sIEludHJpbnNp
YyBpbnRyaW5zCiAgICAgcmV0dXJuIE5hdGl2ZUV4ZWN1dGFibGU6OmNyZWF0ZSgqdGhpcywKICAg
ICAgICAgYWRvcHRSZWYobmV3IE5hdGl2ZUpJVENvZGUoTWFjcm9Bc3NlbWJsZXJDb2RlUmVmOjpj
cmVhdGVMTEludENvZGVSZWYobGxpbnRfbmF0aXZlX2NhbGxfdHJhbXBvbGluZSksIEpJVENvZGU6
Okhvc3RDYWxsVGh1bmspKSwgZnVuY3Rpb24sCiAgICAgICAgIGFkb3B0UmVmKG5ldyBOYXRpdmVK
SVRDb2RlKE1hY3JvQXNzZW1ibGVyQ29kZVJlZjo6Y3JlYXRlTExJbnRDb2RlUmVmKGxsaW50X25h
dGl2ZV9jb25zdHJ1Y3RfdHJhbXBvbGluZSksIEpJVENvZGU6Okhvc3RDYWxsVGh1bmspKSwgY29u
c3RydWN0b3IsCi0gICAgICAgIE5vSW50cmluc2ljLCBuYW1lKTsKKyAgICAgICAgTm9JbnRyaW5z
aWMsIHNpZ25hdHVyZSwgbmFtZSk7CiB9CiAKIFZNOjpDbGllbnREYXRhOjp+Q2xpZW50RGF0YSgp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAppbmRleCBhOTdmMTgxMDI0N2Q5MGMwMGE0ODZi
MzM1NGI2NWY2NTIxMGU1OWNkLi5iY2Q4MDA0ZjQ0N2IzMGUyYTBjZjc1ZDAyYWFjNzZlMTg0Nzcz
ZDNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKQEAgLTQyOSw3ICs0MjksNyBAQCBj
bGFzcyBWTSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxWTT4gewogICAgIHN0ZDo6dW5p
cXVlX3B0cjxGVEw6OlRodW5rcz4gZnRsVGh1bmtzOwogI2VuZGlmCiAgICAgTmF0aXZlRXhlY3V0
YWJsZSogZ2V0SG9zdEZ1bmN0aW9uKE5hdGl2ZUZ1bmN0aW9uLCBOYXRpdmVGdW5jdGlvbiBjb25z
dHJ1Y3RvciwgY29uc3QgU3RyaW5nJiBuYW1lKTsKLSAgICBOYXRpdmVFeGVjdXRhYmxlKiBnZXRI
b3N0RnVuY3Rpb24oTmF0aXZlRnVuY3Rpb24sIEludHJpbnNpYyBpbnRyaW5zaWMsIE5hdGl2ZUZ1
bmN0aW9uIGNvbnN0cnVjdG9yLCBjb25zdCBTdHJpbmcmIG5hbWUpOworICAgIE5hdGl2ZUV4ZWN1
dGFibGUqIGdldEhvc3RGdW5jdGlvbihOYXRpdmVGdW5jdGlvbiwgSW50cmluc2ljLCBOYXRpdmVG
dW5jdGlvbiBjb25zdHJ1Y3RvciwgY29uc3QgRE9NSklUOjpTaWduYXR1cmUqLCBjb25zdCBTdHJp
bmcmIG5hbWUpOwogCiAgICAgc3RhdGljIHB0cmRpZmZfdCBleGNlcHRpb25PZmZzZXQoKQogICAg
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dl
YkNvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggMDQ0MDFiOWJkNTNmODk1YzdiMjIxYzg0MGRkMWUw
OTUzZTcxZmNjMS4uN2MwMjZiZDhjOTczZjJjMWE2OGU0ODFhMmJjODczN2M4ZjMxMjQ4ZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNv
cmUvQ01ha2VMaXN0cy50eHQKQEAgLTM1MTQsNiArMzUxNCwxNSBAQCBNQUtFX0hBU0hfVE9PTFMo
JHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0vQ29sb3JEYXRhKQogbGlzdChBUFBFTkQgV2ViQ29yZV9E
RVJJVkVEX1NPVVJDRVMgJHtERVJJVkVEX1NPVVJDRVNfV0VCQ09SRV9ESVJ9L0NvbG9yRGF0YS5j
cHApCiAKIAorIyBHZW5lcmF0ZSBET01KSVRBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmgKK2FkZF9j
dXN0b21fY29tbWFuZCgKKyAgICBPVVRQVVQgJHtERVJJVkVEX1NPVVJDRVNfV0VCQ09SRV9ESVJ9
L0RPTUpJVEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaAorICAgIE1BSU5fREVQRU5ERU5DWSBkb21q
aXQvRE9NSklUQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS55YW1sCisgICAgREVQRU5EUyAke1dFQkNP
UkVfRElSfS9kb21qaXQvZ2VuZXJhdGUtYWJzdHJhY3QtaGVhcC5yYgorICAgIENPTU1BTkQgJHtS
VUJZX0VYRUNVVEFCTEV9ICR7V0VCQ09SRV9ESVJ9L2RvbWppdC9nZW5lcmF0ZS1hYnN0cmFjdC1o
ZWFwLnJiICR7V0VCQ09SRV9ESVJ9L2RvbWppdC9ET01KSVRBYnN0cmFjdEhlYXBSZXBvc2l0b3J5
LnlhbWwgJHtERVJJVkVEX1NPVVJDRVNfV0VCQ09SRV9ESVJ9L0RPTUpJVEFic3RyYWN0SGVhcFJl
cG9zaXRvcnkuaAorICAgIFZFUkJBVElNKQorbGlzdChBUFBFTkQgV2ViQ29yZV9ERVJJVkVEX1NP
VVJDRVMgJHtERVJJVkVEX1NPVVJDRVNfV0VCQ09SRV9ESVJ9L0RPTUpJVEFic3RyYWN0SGVhcFJl
cG9zaXRvcnkuaCkKKwogIyBHZW5lcmF0ZSBYTUxWaWV3ZXJDU1MuaAogYWRkX2N1c3RvbV9jb21t
YW5kKAogICAgIE9VVFBVVCAke0RFUklWRURfU09VUkNFU19XRUJDT1JFX0RJUn0vWE1MVmlld2Vy
Q1NTLmggJHtERVJJVkVEX1NPVVJDRVNfV0VCQ09SRV9ESVJ9L1hNTFZpZXdlci5taW4uY3NzCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlIGIvU291cmNlL1dl
YkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQppbmRleCBhMjM2MjQ1ZjUyNTg1M2RmMTQ5MmMxMjFm
ZjIwMzc5YzY2MTRjMGU1Li42YWRmMTYxYmFkZjVmMWEzYjQ5Nzg2MjgwMTkyODJjYzRjODc3YTg5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKQEAgLTc0NCw2ICs3NDQsNyBAQCBKU19C
SU5ESU5HX0lETFMgPSBcCiAKIFBZVEhPTiA9IHB5dGhvbgogUEVSTCA9IHBlcmwKK1JVQlkgPSBy
dWJ5CiAKIGlmZXEgKCQoT1MpLFdpbmRvd3NfTlQpCiAgICAgREVMRVRFID0gY21kIC8vQyBkZWwK
QEAgLTg1MCw2ICs4NTEsNyBAQCBhbGwgOiBcCiAgICAgQ1NTVmFsdWVLZXl3b3Jkcy5jcHAgXAog
ICAgIENTU1ZhbHVlS2V5d29yZHMuaCBcCiAgICAgQ29sb3JEYXRhLmNwcCBcCisgICAgRE9NSklU
QWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5oIFwKICAgICBFdmVudEludGVyZmFjZXMuaCBcCiAgICAg
RXZlbnRUYXJnZXRJbnRlcmZhY2VzLmggXAogICAgIEV4Y2VwdGlvbkNvZGVEZXNjcmlwdGlvbi5j
cHAgXApAQCAtOTM5LDYgKzk0MSwxNSBAQCBTZWxlY3RvclBzZXVkb0VsZW1lbnRUeXBlTWFwLmNw
cCA6ICQoV2ViQ29yZSkvY3NzL21ha2VTZWxlY3RvclBzZXVkb0VsZW1lbnRzTWFwLgogCiAjIC0t
LS0tLS0tCiAKKyMgRE9NSklUIEFic3RyYWN0IEhlYXAKKworYWxsIDogRE9NSklUQWJzdHJhY3RI
ZWFwUmVwb3NpdG9yeS5oCisKK0RPTUpJVEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaCA6ICQoV2Vi
Q29yZSkvZG9taml0L2dlbmVyYXRlLWFic3RyYWN0LWhlYXAucmIgJChXZWJDb3JlKS9kb21qaXQv
RE9NSklUQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS55YW1sCisJJChSVUJZKSAiJChXZWJDb3JlKS9k
b21qaXQvZ2VuZXJhdGUtYWJzdHJhY3QtaGVhcC5yYiIgJChXZWJDb3JlKS9kb21qaXQvRE9NSklU
QWJzdHJhY3RIZWFwUmVwb3NpdG9yeS55YW1sIC4vRE9NSklUQWJzdHJhY3RIZWFwUmVwb3NpdG9y
eS5oCisKKyMgLS0tLS0tLS0KKwogIyBYTUxWaWV3ZXIgQ1NTCiAKIGFsbCA6IFhNTFZpZXdlckNT
Uy5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy9ieXRlY29k
ZS9TcGVjdWxhdGVkVHlwZS5oIGIvU291cmNlL1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvYnl0
ZWNvZGUvU3BlY3VsYXRlZFR5cGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wOTQ2NmY0ZjAwYjgwN2RmZWRhMGZj
ODIwODU0NmI3MTg0NGYwOTllCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvRm9y
d2FyZGluZ0hlYWRlcnMvYnl0ZWNvZGUvU3BlY3VsYXRlZFR5cGUuaApAQCAtMCwwICsxLDI5IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQor
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBX
ZWJDb3JlX0ZXRF9TcGVjdWxhdGVkVHlwZV9oCisjZGVmaW5lIFdlYkNvcmVfRldEX1NwZWN1bGF0
ZWRUeXBlX2gKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TcGVjdWxhdGVkVHlwZS5oPgorI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy9kb21qaXQv
RE9NSklUU2lnbmF0dXJlLmggYi9Tb3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy9kb21q
aXQvRE9NSklUU2lnbmF0dXJlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzIwMDI3ZjZlMDhlMzgzMGUzNTFiMWM5
Y2QzMmYyMDMxMjlkMmI1ZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL0Zvcndh
cmRpbmdIZWFkZXJzL2RvbWppdC9ET01KSVRTaWduYXR1cmUuaApAQCAtMCwwICsxLDI5IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJD
b3JlX0ZXRF9ET01KSVRTaWduYXR1cmVfaAorI2RlZmluZSBXZWJDb3JlX0ZXRF9ET01KSVRTaWdu
YXR1cmVfaAorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0RPTUpJVFNpZ25hdHVyZS5oPgorI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKaW5kZXggY2VmYWIxZDFlMWVjY2JlZWZkZTY1Mzc2NTM5Njk0NWFmN2Q5YWZlMi4uMmU0NmMz
NTgzZWIwMmFhNGM2MGYyY2Y4YWNiNTkzY2VhN2IzZTdmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNjIwMywxMiArNjIwMywx
MyBAQAogCQlFMzE1MEVBNzFEQTcyMTkzMDAxOTQwMTIgLyogRE9NSklUSGVscGVycy5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTMxNTBFQTUxREE3MjE4
RDAwMTk0MDEyIC8qIERPTUpJVEhlbHBlcnMuaCAqLzsgfTsKIAkJRTMxODAzOUQxREM0MDA5OTAw
OTkzMkMyIC8qIEpTRHluYW1pY0Rvd25jYXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBFM0E1ODcyRTFEQzNGNTI2MDBGNjA3QTYgLyogSlNEeW5hbWlj
RG93bmNhc3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQlFMzU2NUI3QjFEQzJENkM5MDAyMTdEQkQgLyogSlNFdmVudEN1c3RvbS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM0RUU0OUYxREMyRDU3NTAw
RUFBOUQzIC8qIEpTRXZlbnRDdXN0b20uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwotCQlFMzVDQTE0RDFEQkMzQTNGMDBGODM1MTYgLyogRE9NSklUQWJz
dHJhY3RIZWFwUmVwb3NpdG9yeS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBFMzVDQTE0QjFEQkMzQTNDMDBGODM1MTYgLyogRE9NSklUQWJzdHJhY3RI
ZWFwUmVwb3NpdG9yeS5jcHAgKi87IH07Ci0JCUUzNUNBMTRFMURCQzNBNDIwMEY4MzUxNiAvKiBE
T01KSVRBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBFMzVDQTE0QzFEQkMzQTNDMDBGODM1MTYgLyogRE9NSklUQWJz
dHJhY3RIZWFwUmVwb3NpdG9yeS5oICovOyB9OworCQlFMzU4MDJCNjFEQzg0MzVEMDBBOTc3M0Mg
LyogRE9NSklUSURMVHlwZUZpbHRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRTM1ODAyQjUxREM4NDM1ODAwQTk3NzNDIC8qIERPTUpJVElETFR5cGVG
aWx0ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQlFMzc3RkU0RDFEQURFMTY1MDBDREQwMjUgLyogTm9kZUNvbnN0YW50cy5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTNEMDQ5OTMxREFEQzA0NTAwNzE4
RjNDIC8qIE5vZGVDb25zdGFudHMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQlFMzg4Mzg5ODFCQUQxNDVGMDBENjJFRTMgLyogU2NyaXB0TW9kdWxl
TG9hZGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEUzODgzODk0MUJBRDE0NUYwMEQ2MkVFMyAvKiBTY3JpcHRNb2R1bGVMb2FkZXIuY3BwICovOyB9
OwogCQlFMzg4Mzg5OTFCQUQxNDVGMDBENjJFRTMgLyogU2NyaXB0TW9kdWxlTG9hZGVyLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzg4Mzg5NTFCQUQx
NDVGMDBENjJFRTMgLyogU2NyaXB0TW9kdWxlTG9hZGVyLmggKi87IH07CiAJCUUzOThGQzI0MURD
MzJBMjAwMDNDNDY4NCAvKiBET01KSVRIZWxwZXJzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzOThGQzIzMURDMzJBMUIwMDNDNDY4NCAvKiBET01K
SVRIZWxwZXJzLmNwcCAqLzsgfTsKKwkJRTNBNzc2NjcxREM4NUQyODAwQjY5MEQ4IC8qIERPTUpJ
VElETENvbnZlcnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEUzQTc3NjY1MURDODVEMjIwMEI2OTBEOCAvKiBET01KSVRJRExDb252ZXJ0LmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJRTNBNzc2NjgxREM4
NUQyODAwQjY5MEQ4IC8qIERPTUpJVElETFR5cGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzQTc3NjY2MURDODVEMjIwMEI2OTBEOCAvKiBET01KSVRJ
RExUeXBlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJRTNCMkYwRUIxRDdGNEM5RDAwQjBDOUQxIC8qIExvYWRhYmxlQ2xhc3NpY1NjcmlwdC5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFM0IyRjBFMzFE
N0YzNUVDMDBCMEM5RDEgLyogTG9hZGFibGVDbGFzc2ljU2NyaXB0LmNwcCAqLzsgfTsKIAkJRTNC
MkYwRUMxRDdGNENBMTAwQjBDOUQxIC8qIExvYWRhYmxlU2NyaXB0LmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzQjJGMEU5MUQ3RjNEM0MwMEIwQzlE
MSAvKiBMb2FkYWJsZVNjcmlwdC5jcHAgKi87IH07CiAJCUUzQjJGMEVEMUQ3RjRDQTMwMEIwQzlE
MSAvKiBMb2FkYWJsZVNjcmlwdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRTNCMkYwRTcxRDdGMzVFQzAwQjBDOUQxIC8qIExvYWRhYmxlU2NyaXB0Lmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTE0MDM4
LDEzICsxNDAzOSwxNSBAQAogCQlFMUZGOEY2QTE4MERCNUJFMDAxMzI2NzQgLyogQ3J5cHRvQWxn
b3JpdGhtUmVnaXN0cnkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
Q3J5cHRvQWxnb3JpdGhtUmVnaXN0cnkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlFMUZGOEY2QjE4MERCNUJFMDAxMzI2NzQgLyogQ3J5cHRvQWxnb3JpdGhtUmVnaXN0cnkuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ3J5cHRvQWxnb3JpdGhtUmVnaXN0cnku
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTMxNTBFQTUxREE3MjE4RDAwMTk0MDEy
IC8qIERPTUpJVEhlbHBlcnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRE9N
SklUSGVscGVycy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFMzM0ODI1RTFEQzkz
QUEwMDA5Qzk1NDQgLyogRE9NSklUQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBET01KSVRBYnN0cmFjdEhlYXBSZXBvc2l0b3J5Lmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzNEVFNDlGMURDMkQ1NzUwMEVBQTlEMyAvKiBK
U0V2ZW50Q3VzdG9tLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTRXZlbnRD
dXN0b20uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRTM1Q0ExNEIxREJDM0EzQzAw
RjgzNTE2IC8qIERPTUpJVEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRE9NSklUQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUUzNUNBMTRDMURCQzNBM0MwMEY4MzUxNiAv
KiBET01KSVRBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IERPTUpJVEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJRTM1ODAyQjUxREM4NDM1ODAwQTk3NzNDIC8qIERPTUpJVElETFR5cGVG
aWx0ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRE9NSklUSURMVHlwZUZp
bHRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzg4Mzg5NDFCQUQxNDVGMDBE
NjJFRTMgLyogU2NyaXB0TW9kdWxlTG9hZGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFNjcmlwdE1vZHVsZUxvYWRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUUzODgzODk1MUJBRDE0NUYwMEQ2MkVFMyAvKiBTY3JpcHRNb2R1bGVMb2FkZXIu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2NyaXB0TW9kdWxlTG9hZGVyLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzOThGQzIzMURDMzJBMUIwMDNDNDY4NCAv
KiBET01KSVRIZWxwZXJzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IERPTUpJVEhlbHBlcnMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFM0E1ODcy
RTFEQzNGNTI2MDBGNjA3QTYgLyogSlNEeW5hbWljRG93bmNhc3QuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gSlNEeW5hbWljRG93bmNhc3QuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJRTNBNzc2NjUxREM4NUQyMjAwQjY5MEQ4IC8qIERPTUpJVElETENvbnZlcnQu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRE9NSklUSURMQ29udmVydC5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFM0E3NzY2NjFEQzg1RDIyMDBCNjkwRDggLyog
RE9NSklUSURMVHlwZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBET01KSVRJ
RExUeXBlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzQUZBOTY0MURBNkU5MDgw
MDI4NjFCRCAvKiBKU05vZGVET01KSVQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gSlNOb2RlRE9NSklULmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
RTNCMkYwRTMxRDdGMzVFQzAwQjBDOUQxIC8qIExvYWRhYmxlQ2xhc3NpY1NjcmlwdC5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBMb2FkYWJsZUNsYXNzaWNTY3JpcHQu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFM0IyRjBFNDFEN0YzNUVDMDBCMEM5
RDEgLyogTG9hZGFibGVDbGFzc2ljU2NyaXB0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IExvYWRhYmxlQ2xhc3NpY1NjcmlwdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtMTcyMzQsNiArMTcyMzcsNyBAQAogCQkJCTY1NjU4MTQ3MDlEMTMwNDMwMDBFNjFENyAv
KiBDU1NWYWx1ZUtleXdvcmRzLmdwZXJmICovLAogCQkJCTY1NjU4MTQ4MDlEMTMwNDMwMDBFNjFE
NyAvKiBDU1NWYWx1ZUtleXdvcmRzLmggKi8sCiAJCQkJOUIzQTg4NzExNDU2MzJGOTAwM0FFOEY1
IC8qIERPTURPTVNldHRhYmxlVG9rZW5MaXN0LmggKi8sCisJCQkJRTMzNDgyNUUxREM5M0FBMDAw
OUM5NTQ0IC8qIERPTUpJVEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaCAqLywKIAkJCQlFMUM2Q0ZD
MjE3NDZEMjkzMDA3Qjg3QTEgLyogRE9NV2luZG93Q29uc3RydWN0b3JzLmlkbCAqLywKIAkJCQk5
NzBCNzJBNTE0NTAwOEVCMDBGMDBBMzcgLyogRXZlbnRIZWFkZXJzLmggKi8sCiAJCQkJOTcwQjcy
ODkxNDRGRkFDNjAwRjAwQTM3IC8qIEV2ZW50SW50ZXJmYWNlcy5oICovLApAQCAtMjI4MzEsMTEg
KzIyODM1LDEyIEBACiAJCUUzQUZBOTYzMURBNkU4QUYwMDI4NjFCRCAvKiBkb21qaXQgKi8gPSB7
CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAotCQkJCUUzNUNBMTRCMURCQzNB
M0MwMEY4MzUxNiAvKiBET01KSVRBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmNwcCAqLywKLQkJCQlF
MzVDQTE0QzFEQkMzQTNDMDBGODM1MTYgLyogRE9NSklUQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5o
ICovLAogCQkJCUUzQzk5QTA4MURDM0Q0MTcwMDc5NEFEMyAvKiBET01KSVRDaGVja0RPTS5oICov
LAogCQkJCUUzOThGQzIzMURDMzJBMUIwMDNDNDY4NCAvKiBET01KSVRIZWxwZXJzLmNwcCAqLywK
IAkJCQlFMzE1MEVBNTFEQTcyMThEMDAxOTQwMTIgLyogRE9NSklUSGVscGVycy5oICovLAorCQkJ
CUUzQTc3NjY1MURDODVEMjIwMEI2OTBEOCAvKiBET01KSVRJRExDb252ZXJ0LmggKi8sCisJCQkJ
RTNBNzc2NjYxREM4NUQyMjAwQjY5MEQ4IC8qIERPTUpJVElETFR5cGUuaCAqLywKKwkJCQlFMzU4
MDJCNTFEQzg0MzU4MDBBOTc3M0MgLyogRE9NSklUSURMVHlwZUZpbHRlci5oICovLAogCQkJCUUz
QjdDMDYyMURDMzQxNUEwMDFGQjBCOCAvKiBKU0RvY3VtZW50RE9NSklULmNwcCAqLywKIAkJCQlF
M0FGQTk2NDFEQTZFOTA4MDAyODYxQkQgLyogSlNOb2RlRE9NSklULmNwcCAqLywKIAkJCSk7CkBA
IC0yNTY5OSw2ICsyNTcwNCw3IEBACiAJCQkJNDYwQ0JGMzYxRDRCQ0QwRTAwOTJFODhFIC8qIEpT
RE9NV2luZG93UHJvcGVydGllcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNCRkI1M0QwRENEMjlD
RjAwMTlCM0U1IC8qIEpTRE9NV2luZG93U2hlbGwuaCBpbiBIZWFkZXJzICovLAogCQkJCTY1RTBF
OTQ0MTEzM0M4OUYwMEI0Q0IxMCAvKiBKU0RPTVdyYXBwZXIuaCBpbiBIZWFkZXJzICovLAorCQkJ
CUUzQTc3NjY3MURDODVEMjgwMEI2OTBEOCAvKiBET01KSVRJRExDb252ZXJ0LmggaW4gSGVhZGVy
cyAqLywKIAkJCQlGRDc4NjhCQTEzNkI5OTkyMDBENDAzREYgLyogSlNEeW5hbWljc0NvbXByZXNz
b3JOb2RlLmggaW4gSGVhZGVycyAqLywKIAkJCQk2NURGMzFGQTA5RDFDQzYwMDAwQkUzMjUgLyog
SlNFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlBREVDNzhGODE4RUU1MzA4MDAxMzE1QzIg
LyogSlNFbGVtZW50Q3VzdG9tLmggaW4gSGVhZGVycyAqLywKQEAgLTI2Nzg4LDcgKzI2Nzk0LDYg
QEAKIAkJCQk0MzkwNDZFODEyREEyNUU4MDBBRjgwQTIgLyogUmVuZGVyTWF0aE1MU2NyaXB0cy5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJNDM5MDQ2RUMxMkRBMjVFODAwQUY4MEE5IC8qIFJlbmRlck1h
dGhNTFRva2VuLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MzkwNDZFQTEyREEyNUU4MDBBRjgwQTIg
LyogUmVuZGVyTWF0aE1MVW5kZXJPdmVyLmggaW4gSGVhZGVycyAqLywKLQkJCQlFMzVDQTE0RTFE
QkMzQTQyMDBGODM1MTYgLyogRE9NSklUQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJRTRDMjc5NTkwQ0Y5NzQxOTAwRTk3Qjk4IC8qIFJlbmRlck1lZGlhLmggaW4g
SGVhZGVycyAqLywKIAkJCQlERUJDQ0REMjE2NjQ2RTgyMDBBNDUyRTEgLyogUmVuZGVyTWVkaWFD
b250cm9sRWxlbWVudHMuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxRkEzMDNGMTMxNkMyOUMwMEMw
QkZDNSAvKiBSZW5kZXJNZWRpYUNvbnRyb2xzLmggaW4gSGVhZGVycyAqLywKQEAgLTI3MjYyLDYg
KzI3MjY3LDcgQEAKIAkJCQkwODUyNUU2MzEyNzhDMDAxMDBBODQ3NzggLyogU1ZHQW5pbWF0ZWRT
dGF0aWNQcm9wZXJ0eVRlYXJPZmYuaCBpbiBIZWFkZXJzICovLAogCQkJCTA4NERCNTlCMTI4MDA4
Q0MwMDJBNkQ2NCAvKiBTVkdBbmltYXRlZFN0cmluZy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDgy
NTA5MzkxMjhCRDREODAwRTJFRDhFIC8qIFNWR0FuaW1hdGVkVHJhbnNmb3JtTGlzdC5oIGluIEhl
YWRlcnMgKi8sCisJCQkJRTNBNzc2NjgxREM4NUQyODAwQjY5MEQ4IC8qIERPTUpJVElETFR5cGUu
aCBpbiBIZWFkZXJzICovLAogCQkJCTA4NUExNTkzMTI4OUE4REQwMDI3MTBFMyAvKiBTVkdBbmlt
YXRlZFRyYW5zZm9ybUxpc3RQcm9wZXJ0eVRlYXJPZmYuaCBpbiBIZWFkZXJzICovLAogCQkJCTQz
OUQzMzQzMTNBNjkxMUMwMEMyMEY0RiAvKiBTVkdBbmltYXRlZFR5cGUuaCBpbiBIZWFkZXJzICov
LAogCQkJCTQzOUQzMzQ0MTNBNjkxMUMwMEMyMEY0RiAvKiBTVkdBbmltYXRlZFR5cGVBbmltYXRv
ci5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNzgwMyw2ICsyNzgwOSw3IEBACiAJCQkJOTdBQUJEMjMx
NEZBMDlENTAwNzQ1N0FFIC8qIFdlYlNvY2tldEV4dGVuc2lvbkRpc3BhdGNoZXIuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTRBNUEyQURDMTYxRTdFMDAwMDU4ODlERCAvKiBXZWJTb2NrZXRFeHRlbnNp
b25QYXJzZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTk3QUFCRDI0MTRGQTA5RDUwMDc0NTdBRSAv
KiBXZWJTb2NrZXRFeHRlbnNpb25Qcm9jZXNzb3IuaCBpbiBIZWFkZXJzICovLAorCQkJCUUzNTgw
MkI2MURDODQzNUQwMEE5NzczQyAvKiBET01KSVRJRExUeXBlRmlsdGVyLmggaW4gSGVhZGVycyAq
LywKIAkJCQk5N0FBQkQyNTE0RkEwOUQ1MDA3NDU3QUUgLyogV2ViU29ja2V0RnJhbWUuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTk3QUFCRDI3MTRGQTA5RDUwMDc0NTdBRSAvKiBXZWJTb2NrZXRIYW5k
c2hha2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTMxREVBNDU2MUIzOUY0RDkwMEY3NzE3OCAvKiBX
ZWJTeXN0ZW1CYWNrZHJvcExheWVyLmggaW4gSGVhZGVycyAqLywKQEAgLTI4OTA0LDcgKzI4OTEx
LDYgQEAKIAkJCQlCMkMzREE2MjBEMDA2Q0Q2MDBFRjZGMjYgLyogRm9udENhY2hlLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTFDMzk2OUQwMUI3NDIxMUUwMDJCQ0ZBNyAvKiBGb250Q2FjaGVDb3Jl
VGV4dC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkzNzI3REZENTE0MkFBRTQ1MDBENDQ5Q0IgLyog
Rm9udENhY2hlSU9TLm1tIGluIFNvdXJjZXMgKi8sCi0JCQkJRTM1Q0ExNEQxREJDM0EzRjAwRjgz
NTE2IC8qIERPTUpJVEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJQjJBRkZDN0MwRDAwQTVDMTAwMzAwNzREIC8qIEZvbnRDYWNoZU1hYy5tbSBpbiBTb3VyY2Vz
ICovLAogCQkJCUIyQzNEQTYwMEQwMDZDRDYwMEVGNkYyNiAvKiBGb250Q2FzY2FkZS5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQlCMkFGRkM4MDBEMDBBNUMxMDAzMDA3NEQgLyogRm9udENhc2NhZGVD
b2NvYS5tbSBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNET01HbG9iYWxPYmplY3QuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
RE9NR2xvYmFsT2JqZWN0LmgKaW5kZXggYTAxYmY1NjhjNWZlMzAxM2NjMTk0OTlkNTJhMjhlYmMx
YTc4Yzk0ZS4uYjY4ZjQ3MzMyMTg0MTQ1YWQyZjY5NWU2ZmE1MDIyZjNlZThiYjJkNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5oCkBAIC04Miw3
ICs4Miw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBwdWJsaWM6CiAgICAgICAgIH5KU0RP
TUdsb2JhbE9iamVjdCgpOwogCi0gICAgICAgIHN0YXRpYyBjb25zdCBKU0M6OkNsYXNzSW5mbyog
aW5mbygpIHsgcmV0dXJuICZzX2luZm87IH0KKyAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBjb25z
dCBKU0M6OkNsYXNzSW5mbyogaW5mbygpIHsgcmV0dXJuICZzX2luZm87IH0KIAogICAgICAgICBz
dGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpK
U1ZhbHVlIHByb3RvdHlwZSkKICAgICAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQppbmRleCAyMWUwZGM2ZDU1MzU5YzRmYmNl
MTRiZmNkM2M2OWYxOTBjZWE4ZGNlLi40MDg4N2Y5M2VlM2U5YWUzZGVkNWYyM2E3ZmQxZjgwNzNi
NTk0OGE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVH
ZW5lcmF0b3JKUy5wbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVH
ZW5lcmF0b3JKUy5wbQpAQCAtMTQzNSw3ICsxNDM1LDcgQEAgc3ViIEdlbmVyYXRlSGVhZGVyCiAg
ICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICJwcm90ZWN0ZWQ6XG4iKTsKICAgICAgICAgcHVz
aChAaGVhZGVyQ29udGVudCwgIiAgICBzdGF0aWMgY29uc3QgSlNDOjpDbGFzc0luZm8gc19pbmZv
O1xuIik7CiAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICJwdWJsaWM6XG4iKTsKLSAgICAg
ICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICBzdGF0aWMgY29uc3QgSlNDOjpDbGFzc0luZm8q
IGluZm8oKSB7IHJldHVybiAmc19pbmZvOyB9XG5cbiIpOworICAgICAgICBwdXNoKEBoZWFkZXJD
b250ZW50LCAiICAgIHN0YXRpYyBjb25zdGV4cHIgY29uc3QgSlNDOjpDbGFzc0luZm8qIGluZm8o
KSB7IHJldHVybiAmc19pbmZvOyB9XG5cbiIpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIHB1c2go
QGhlYWRlckNvbnRlbnQsICJcbiIpOwogICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAg
IERFQ0xBUkVfSU5GTztcblxuIik7CkBAIC0xODg5LDcgKzE4ODksMTEgQEAgc3ViIEdlbmVyYXRl
UHJvcGVydGllc0hhc2hUYWJsZQogICAgICAgICAjIEZJWE1FOiBSZW1vdmUgdGhpcyBvbmNlIHdl
IGNhbiBnZXQgcmlkIG9mIHRoZSBxdWlyayBpbnRyb2R1Y2VkIGluIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjM5NjcuCiAgICAgICAgICRmdW5jdGlvbkxlbmd0aCA9
IDMgaWYgJGludGVyZmFjZU5hbWUgZXEgIkV2ZW50IiBhbmQgJGZ1bmN0aW9uLT5uYW1lIGVxICJp
bml0RXZlbnQiOwogCi0gICAgICAgIHB1c2goQCRoYXNoVmFsdWUyLCAkZnVuY3Rpb25MZW5ndGgp
OworICAgICAgICBpZiAoJGZ1bmN0aW9uLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiRE9NSklUIn0p
IHsKKyAgICAgICAgICAgIHB1c2goQCRoYXNoVmFsdWUyLCAiJkRPTUpJVFNpZ25hdHVyZUZvciIg
LiAkaW50ZXJmYWNlLT50eXBlLT5uYW1lIC4gJGNvZGVHZW5lcmF0b3ItPldLX3VjZmlyc3QoJGZ1
bmN0aW9uLT5uYW1lKSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBwdXNoKEAkaGFz
aFZhbHVlMiwgJGZ1bmN0aW9uTGVuZ3RoKTsKKyAgICAgICAgfQogCiAgICAgICAgIHB1c2goQCRo
YXNoU3BlY2lhbHMsIENvbXB1dGVGdW5jdGlvblNwZWNpYWwoJGludGVyZmFjZSwgJGZ1bmN0aW9u
KSk7CiAKQEAgLTI1MDUsMzkgKzI1MDksMjggQEAgc3ViIGFkZFVuc2NvcGFibGVQcm9wZXJ0aWVz
CiAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24o
dm0sIHZtLnByb3BlcnR5TmFtZXMtPnVuc2NvcGFibGVzU3ltYm9sLCAmdW5zY29wYWJsZXMsIERv
bnRFbnVtIHwgUmVhZE9ubHkpO1xuIik7CiB9CiAKLXN1YiBHZXRSZXN1bHRUeXBlRmlsdGVyCitz
dWIgR2V0VW5zYWZlQXJndW1lbnRUeXBlCiB7Ci0gICAgbXkgKCR0eXBlKSA9IEBfOworICAgIG15
ICgkaW50ZXJmYWNlLCAkdHlwZSkgPSBAXzsKIAotICAgIG15ICVUeXBlRmlsdGVycyA9ICgKLSAg
ICAgICAgImFueSIgPT4gIlNwZWNIZWFwVG9wIiwKLSAgICAgICAgImJvb2xlYW4iID0+ICJTcGVj
Qm9vbGVhbiIsCi0gICAgICAgICJieXRlIiA9PiAiU3BlY0ludDMyT25seSIsCi0gICAgICAgICJv
Y3RldCIgPT4gIlNwZWNJbnQzMk9ubHkiLAotICAgICAgICAic2hvcnQiID0+ICJTcGVjSW50MzJP
bmx5IiwKLSAgICAgICAgInVuc2lnbmVkIHNob3J0IiA9PiAiU3BlY0ludDMyT25seSIsCi0gICAg
ICAgICJsb25nIiA9PiAiU3BlY0ludDMyT25seSIsCi0gICAgICAgICJ1bnNpZ25lZCBsb25nIiA9
PiAiU3BlY0J5dGVjb2RlTnVtYmVyIiwKLSAgICAgICAgImxvbmcgbG9uZyIgPT4gIlNwZWNCeXRl
Y29kZU51bWJlciIsCi0gICAgICAgICJ1bnNpZ25lZCBsb25nIGxvbmciID0+ICJTcGVjQnl0ZWNv
ZGVOdW1iZXIiLAotICAgICAgICAiZmxvYXQiID0+ICJTcGVjQnl0ZWNvZGVOdW1iZXIiLAotICAg
ICAgICAidW5yZXN0cmljdGVkIGZsb2F0IiA9PiAiU3BlY0J5dGVjb2RlTnVtYmVyIiwKLSAgICAg
ICAgImRvdWJsZSIgPT4gIlNwZWNCeXRlY29kZU51bWJlciIsCi0gICAgICAgICJ1bnJlc3RyaWN0
ZWQgZG91YmxlIiA9PiAiU3BlY0J5dGVjb2RlTnVtYmVyIiwKLSAgICAgICAgIkRPTVN0cmluZyIg
PT4gIlNwZWNTdHJpbmciLAotICAgICAgICAiQnl0ZVN0cmluZyIgPT4gIlNwZWNTdHJpbmciLAot
ICAgICAgICAiVVNWU3RyaW5nIiA9PiAiU3BlY1N0cmluZyIsCi0gICAgKTsKKyAgICBteSAkSURM
VHlwZSA9IEdldElETFR5cGUoJGludGVyZmFjZSwgJHR5cGUpOworICAgIHJldHVybiAiRE9NSklU
OjpJRExKU0FyZ3VtZW50VHlwZTwke0lETFR5cGV9PiI7Cit9CiAKLSAgICBpZiAoZXhpc3RzICRU
eXBlRmlsdGVyc3skdHlwZS0+bmFtZX0pIHsKLSAgICAgICAgbXkgJHJlc3VsdFR5cGUgPSAiSlND
OjokVHlwZUZpbHRlcnN7JHR5cGUtPm5hbWV9IjsKLSAgICAgICAgaWYgKCR0eXBlLT5pc051bGxh
YmxlKSB7Ci0gICAgICAgICAgICBkaWUgIlwiYW55XCIgdHlwZSBtdXN0IG5vdCBiZWNvbWUgbnVs
bGFibGUuIiBpZiAkdHlwZS0+bmFtZSBlcSAiYW55IjsKLSAgICAgICAgICAgICRyZXN1bHRUeXBl
ID0gIigkcmVzdWx0VHlwZSB8IEpTQzo6U3BlY090aGVyKSI7Ci0gICAgICAgIH0KLSAgICAgICAg
cmV0dXJuICRyZXN1bHRUeXBlOwotICAgIH0KLSAgICByZXR1cm4gIlNwZWNIZWFwVG9wIjsKK3N1
YiBHZXRBcmd1bWVudFR5cGVGaWx0ZXIKK3sKKyAgICBteSAoJGludGVyZmFjZSwgJHR5cGUpID0g
QF87CisKKyAgICBteSAkSURMVHlwZSA9IEdldElETFR5cGUoJGludGVyZmFjZSwgJHR5cGUpOwor
ICAgIHJldHVybiAiRE9NSklUOjpJRExBcmd1bWVudFR5cGVGaWx0ZXI8JHtJRExUeXBlfT4iOwor
fQorCitzdWIgR2V0UmVzdWx0VHlwZUZpbHRlcgoreworICAgIG15ICgkaW50ZXJmYWNlLCAkdHlw
ZSkgPSBAXzsKKworICAgIG15ICRJRExUeXBlID0gR2V0SURMVHlwZSgkaW50ZXJmYWNlLCAkdHlw
ZSk7CisgICAgcmV0dXJuICJET01KSVQ6OklETFJlc3VsdFR5cGVGaWx0ZXI8JHtJRExUeXBlfT4i
OwogfQogCiBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgpAQCAtMjYwOCw2ICsyNjAxLDE3IEBA
IHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVu
dCwgIiNpZiAke2NvbmRpdGlvbmFsU3RyaW5nfVxuIikgaWYgJGNvbmRpdGlvbmFsU3RyaW5nOwog
ICAgICAgICAgICAgbXkgJGZ1bmN0aW9uTmFtZSA9IEdldEZ1bmN0aW9uTmFtZSgkaW50ZXJmYWNl
LCAkY2xhc3NOYW1lLCAkZnVuY3Rpb24pOwogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQs
ICJKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgJHtmdW5jdGlvbk5hbWV9KEpTQzo6
RXhlY1N0YXRlKik7XG4iKTsKKyAgICAgICAgICAgIGlmICgkY29kZUdlbmVyYXRvci0+RXh0ZW5k
ZWRBdHRyaWJ1dGVDb250YWlucygkZnVuY3Rpb24tPmV4dGVuZGVkQXR0cmlidXRlcy0+e0RPTUpJ
VH0sICJTaWduYXR1cmUiKSkgeworICAgICAgICAgICAgICAgICRpbXBsSW5jbHVkZXN7IkRPTUpJ
VElETFR5cGUuaCJ9ID0gMTsKKyAgICAgICAgICAgICAgICBteSAkdW5zYWZlRnVuY3Rpb25OYW1l
ID0gInVuc2FmZSIgLiAkY29kZUdlbmVyYXRvci0+V0tfdWNmaXJzdCgkZnVuY3Rpb25OYW1lKTsK
KyAgICAgICAgICAgICAgICBteSAkZnVuY3Rpb25TaWduYXR1cmUgPSAiSlNDOjpFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMICR7dW5zYWZlRnVuY3Rpb25OYW1lfShKU0M6OkV4ZWNTdGF0ZSos
ICRjbGFzc05hbWUqIjsKKyAgICAgICAgICAgICAgICBmb3JlYWNoIG15ICRhcmd1bWVudCAoQHsk
ZnVuY3Rpb24tPmFyZ3VtZW50c30pIHsKKyAgICAgICAgICAgICAgICAgICAgbXkgJHR5cGUgPSAk
YXJndW1lbnQtPnR5cGU7CisgICAgICAgICAgICAgICAgICAgIG15ICRhcmd1bWVudFR5cGUgPSBH
ZXRVbnNhZmVBcmd1bWVudFR5cGUoJGludGVyZmFjZSwgJHR5cGUpOworICAgICAgICAgICAgICAg
ICAgICAkZnVuY3Rpb25TaWduYXR1cmUgLj0gIiwgJHthcmd1bWVudFR5cGV9IjsKKyAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICRmdW5jdGlvblNp
Z25hdHVyZSAuICIpO1xuIik7CisgICAgICAgICAgICB9CiAgICAgICAgICAgICBwdXNoKEBpbXBs
Q29udGVudCwgIiNlbmRpZlxuIikgaWYgJGNvbmRpdGlvbmFsU3RyaW5nOwogICAgICAgICB9CiAK
QEAgLTI2NDQsNiArMjY0OCwzNiBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICAg
ICBwdXNoKEBpbXBsQ29udGVudCwgIlxuIik7CiAgICAgfQogCisgICAgaWYgKCRudW1GdW5jdGlv
bnMgPiAwKSB7CisgICAgICAgICMgR2VuZXJhdGUgRE9NSklUOjpTaWduYXR1cmUgdmFyaWFibGVz
LgorICAgICAgICBmb3JlYWNoIG15ICRmdW5jdGlvbiAoQGZ1bmN0aW9ucykgeworICAgICAgICAg
ICAgbmV4dCB1bmxlc3MgJGNvZGVHZW5lcmF0b3ItPkV4dGVuZGVkQXR0cmlidXRlQ29udGFpbnMo
JGZ1bmN0aW9uLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntET01KSVR9LCAiU2lnbmF0dXJlIik7Cisg
ICAgICAgICAgICAkaW1wbEluY2x1ZGVzeyJET01KSVRJRExUeXBlRmlsdGVyLmgifSA9IDE7Cisg
ICAgICAgICAgICAkaW1wbEluY2x1ZGVzeyJET01KSVRDaGVja0RPTS5oIn0gPSAxOworICAgICAg
ICAgICAgJGltcGxJbmNsdWRlc3siRE9NSklUQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5oIn0gPSAx
OworCisgICAgICAgICAgICBteSAkaXNPdmVybG9hZGVkID0gJGZ1bmN0aW9uLT57b3ZlcmxvYWRz
fSAmJiBAeyRmdW5jdGlvbi0+e292ZXJsb2Fkc319ID4gMTsKKyAgICAgICAgICAgIGRpZSAib3Zl
cmxvYWRzIGlzIG5vdCBzdXBwb3J0ZWQgaW4gRE9NSklUIiBpZiAkaXNPdmVybG9hZGVkOworCisg
ICAgICAgICAgICBteSAkaW50ZXJmYWNlTmFtZSA9ICRpbnRlcmZhY2UtPnR5cGUtPm5hbWU7Cisg
ICAgICAgICAgICBteSAkZnVuY3Rpb25OYW1lID0gR2V0RnVuY3Rpb25OYW1lKCRpbnRlcmZhY2Us
ICRjbGFzc05hbWUsICRmdW5jdGlvbik7CisgICAgICAgICAgICBteSAkdW5zYWZlRnVuY3Rpb25O
YW1lID0gInVuc2FmZSIgLiAkY29kZUdlbmVyYXRvci0+V0tfdWNmaXJzdCgkZnVuY3Rpb25OYW1l
KTsKKyAgICAgICAgICAgIG15ICRkb21KSVRTaWduYXR1cmVOYW1lID0gIkRPTUpJVFNpZ25hdHVy
ZUZvciIgLiAkaW50ZXJmYWNlLT50eXBlLT5uYW1lIC4gJGNvZGVHZW5lcmF0b3ItPldLX3VjZmly
c3QoJGZ1bmN0aW9uLT5uYW1lKTsKKyAgICAgICAgICAgIG15ICRjbGFzc0luZm8gPSAiSlMiIC4g
JGludGVyZmFjZS0+dHlwZS0+bmFtZSAuICI6OmluZm8oKSI7CisgICAgICAgICAgICBteSAkcmVz
dWx0VHlwZSA9IEdldFJlc3VsdFR5cGVGaWx0ZXIoJGludGVyZmFjZSwgJGZ1bmN0aW9uLT50eXBl
KTsKKyAgICAgICAgICAgIG15ICRkb21KSVRTaWduYXR1cmUgPSAic3RhdGljIGNvbnN0IEpTQzo6
RE9NSklUOjpTaWduYXR1cmUgJHtkb21KSVRTaWduYXR1cmVOYW1lfSgodWludHB0cl90KSR7dW5z
YWZlRnVuY3Rpb25OYW1lfSwgRE9NSklUOjpjaGVja0RPTTwkaW50ZXJmYWNlTmFtZT4sICRjbGFz
c0luZm8sIEpTQzo6RE9NSklUOjpFZmZlY3Q6OmZvclJlYWQoRE9NSklUOjpBYnN0cmFjdEhlYXBS
ZXBvc2l0b3J5OjpET00pLCAke3Jlc3VsdFR5cGV9IjsKKyAgICAgICAgICAgIGZvcmVhY2ggbXkg
JGFyZ3VtZW50IChAeyRmdW5jdGlvbi0+YXJndW1lbnRzfSkgeworICAgICAgICAgICAgICAgIG15
ICR0eXBlID0gJGFyZ3VtZW50LT50eXBlOworICAgICAgICAgICAgICAgIG15ICRhcmd1bWVudFR5
cGUgPSBHZXRBcmd1bWVudFR5cGVGaWx0ZXIoJGludGVyZmFjZSwgJHR5cGUpOworICAgICAgICAg
ICAgICAgICRkb21KSVRTaWduYXR1cmUgLj0gIiwgJHthcmd1bWVudFR5cGV9IjsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIG15ICRjb25kaXRpb25hbFN0cmluZyA9ICRjb2RlR2VuZXJhdG9y
LT5HZW5lcmF0ZUNvbmRpdGlvbmFsU3RyaW5nKCRmdW5jdGlvbik7CisgICAgICAgICAgICBwdXNo
KEBpbXBsQ29udGVudCwgIiNpZiAke2NvbmRpdGlvbmFsU3RyaW5nfVxuIikgaWYgJGNvbmRpdGlv
bmFsU3RyaW5nOworICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICRkb21KSVRTaWduYXR1
cmUgLiAiKTtcbiIpOworICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIjZW5kaWZcbiIp
IGlmICRjb25kaXRpb25hbFN0cmluZzsKKyAgICAgICAgfQorICAgIH0KKwogICAgIEdlbmVyYXRl
UHJvdG90eXBlRGVjbGFyYXRpb24oXEBpbXBsQ29udGVudCwgJGNsYXNzTmFtZSwgJGludGVyZmFj
ZSkgaWYgIUhlYWRlck5lZWRzUHJvdG90eXBlRGVjbGFyYXRpb24oJGludGVyZmFjZSk7CiAKICAg
ICBHZW5lcmF0ZUNvbnN0cnVjdG9yRGVjbGFyYXRpb24oXEBpbXBsQ29udGVudCwgJGNsYXNzTmFt
ZSwgJGludGVyZmFjZSkgaWYgTmVlZHNDb25zdHJ1Y3RvclByb3BlcnR5KCRpbnRlcmZhY2UpOwpA
QCAtMjc0MCw3ICsyNzc0LDExIEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAg
ICAgICBwdXNoKEBoYXNoVmFsdWUxLCAkZnVuY3Rpb25OYW1lKTsKIAogICAgICAgICAgICAgbXkg
JGZ1bmN0aW9uTGVuZ3RoID0gR2V0RnVuY3Rpb25MZW5ndGgoJGZ1bmN0aW9uKTsKLSAgICAgICAg
ICAgIHB1c2goQGhhc2hWYWx1ZTIsICRmdW5jdGlvbkxlbmd0aCk7CisgICAgICAgICAgICBpZiAo
JGNvZGVHZW5lcmF0b3ItPkV4dGVuZGVkQXR0cmlidXRlQ29udGFpbnMoJGZ1bmN0aW9uLT5leHRl
bmRlZEF0dHJpYnV0ZXMtPntET01KSVR9LCAiU2lnbmF0dXJlIikpIHsKKyAgICAgICAgICAgICAg
ICBwdXNoKEBoYXNoVmFsdWUyLCAiRE9NSklURnVuY3Rpb25Gb3IiIC4gJGludGVyZmFjZS0+dHlw
ZS0+bmFtZSAuICRjb2RlR2VuZXJhdG9yLT5XS191Y2ZpcnN0KCRmdW5jdGlvbi0+bmFtZSkpOwor
ICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBwdXNoKEBoYXNoVmFsdWUyLCAk
ZnVuY3Rpb25MZW5ndGgpOworICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBwdXNoKEBoYXNo
U3BlY2lhbHMsIENvbXB1dGVGdW5jdGlvblNwZWNpYWwoJGludGVyZmFjZSwgJGZ1bmN0aW9uKSk7
CiAKQEAgLTMzMDcsMTMgKzMzNDUsMTQgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KIAog
ICAgICAgICAgICAgaWYgKCRhdHRyaWJ1dGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJET01KSVQi
fSkgewogICAgICAgICAgICAgICAgICRpbXBsSW5jbHVkZXN7Ijx3dGYvTmV2ZXJEZXN0cm95ZWQu
aD4ifSA9IDE7CisgICAgICAgICAgICAgICAgJGltcGxJbmNsdWRlc3siRE9NSklUSURMVHlwZUZp
bHRlci5oIn0gPSAxOwogICAgICAgICAgICAgICAgIG15ICRpbnRlcmZhY2VOYW1lID0gJGludGVy
ZmFjZS0+dHlwZS0+bmFtZTsKICAgICAgICAgICAgICAgICBteSAkYXR0cmlidXRlTmFtZSA9ICRh
dHRyaWJ1dGUtPm5hbWU7CiAgICAgICAgICAgICAgICAgbXkgJGdlbmVyYXRvck5hbWUgPSAkaW50
ZXJmYWNlTmFtZSAuICRjb2RlR2VuZXJhdG9yLT5XS191Y2ZpcnN0KCRhdHRyaWJ1dGUtPm5hbWUp
OwogICAgICAgICAgICAgICAgIG15ICRkb21KSVRDbGFzc05hbWUgPSAkZ2VuZXJhdG9yTmFtZSAu
ICJET01KSVQiOwogICAgICAgICAgICAgICAgIG15ICRnZXR0ZXIgPSBHZXRBdHRyaWJ1dGVHZXR0
ZXJOYW1lKCRpbnRlcmZhY2UsICRnZW5lcmF0b3JOYW1lLCAkYXR0cmlidXRlKTsKICAgICAgICAg
ICAgICAgICBteSAkc2V0dGVyID0gSXNSZWFkb25seSgkYXR0cmlidXRlKSA/ICJudWxscHRyIiA6
IEdldEF0dHJpYnV0ZVNldHRlck5hbWUoJGludGVyZmFjZSwgJGdlbmVyYXRvck5hbWUsICRhdHRy
aWJ1dGUpOwotICAgICAgICAgICAgICAgIG15ICRyZXN1bHRUeXBlID0gR2V0UmVzdWx0VHlwZUZp
bHRlcigkYXR0cmlidXRlLT50eXBlKTsKKyAgICAgICAgICAgICAgICBteSAkcmVzdWx0VHlwZSA9
IEdldFJlc3VsdFR5cGVGaWx0ZXIoJGludGVyZmFjZSwgJGF0dHJpYnV0ZS0+dHlwZSk7CiAgICAg
ICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIkZG9tSklUQ2xhc3NOYW1lOjokZG9tSklU
Q2xhc3NOYW1lKClcbiIpOwogICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAg
IDogSlNDOjpET01KSVQ6OkdldHRlclNldHRlcigkZ2V0dGVyLCAkc2V0dGVyLCAke2NsYXNzTmFt
ZX06OmluZm8oKSwgJHJlc3VsdFR5cGUpXG4iKTsKICAgICAgICAgICAgICAgICBwdXNoKEBpbXBs
Q29udGVudCwgIntcbiIpOwpAQCAtMzY5Miw2ICszNzMxLDcgQEAgc3ViIEdlbmVyYXRlSW1wbGVt
ZW50YXRpb24KIAogICAgICAgICAgICAgbXkgJGlzQ3VzdG9tID0gSGFzQ3VzdG9tTWV0aG9kKCRm
dW5jdGlvbi0+ZXh0ZW5kZWRBdHRyaWJ1dGVzKTsKICAgICAgICAgICAgIG15ICRpc092ZXJsb2Fk
ZWQgPSAkZnVuY3Rpb24tPntvdmVybG9hZHN9ICYmIEB7JGZ1bmN0aW9uLT57b3ZlcmxvYWRzfX0g
PiAxOworICAgICAgICAgICAgbXkgJGlzRE9NSklUID0gJGNvZGVHZW5lcmF0b3ItPkV4dGVuZGVk
QXR0cmlidXRlQ29udGFpbnMoJGZ1bmN0aW9uLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntET01KSVR9
LCAiU2lnbmF0dXJlIik7CiAKICAgICAgICAgICAgIG15ICRtYXlUaHJvd0xlZ2FjeUV4Y2VwdGlv
biA9ICRmdW5jdGlvbi0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57TWF5VGhyb3dMZWdhY3lFeGNlcHRp
b259OwogCkBAIC0zODMyLDYgKzM4NzIsNzggQEAgRU5ECiAgICAgICAgICAgICB9CiAKICAgICAg
ICAgICAgIHB1c2goQGltcGxDb250ZW50LCAifVxuXG4iKTsKKworICAgICAgICAgICAgaWYgKCRp
c0RPTUpJVCkgeworICAgICAgICAgICAgICAgICRpbXBsSW5jbHVkZXN7IjxpbnRlcnByZXRlci9G
cmFtZVRyYWNlcnMuaD4ifSA9IDE7CisgICAgICAgICAgICAgICAgbXkgJHVuc2FmZUZ1bmN0aW9u
TmFtZSA9ICJ1bnNhZmUiIC4gJGNvZGVHZW5lcmF0b3ItPldLX3VjZmlyc3QoJGZ1bmN0aW9uTmFt
ZSk7CisgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJKU0M6OkVuY29kZWRKU1Zh
bHVlICR7dW5zYWZlRnVuY3Rpb25OYW1lfShKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsICRjbGFzc05h
bWUqIGNhc3RlZFRoaXMiKTsKKyAgICAgICAgICAgICAgICBmb3JlYWNoIG15ICRhcmd1bWVudCAo
QHskZnVuY3Rpb24tPmFyZ3VtZW50c30pIHsKKyAgICAgICAgICAgICAgICAgICAgbXkgJHR5cGUg
PSAkYXJndW1lbnQtPnR5cGU7CisgICAgICAgICAgICAgICAgICAgIG15ICRhcmd1bWVudFR5cGUg
PSBHZXRVbnNhZmVBcmd1bWVudFR5cGUoJGludGVyZmFjZSwgJHR5cGUpOworICAgICAgICAgICAg
ICAgICAgICBteSAkbmFtZSA9ICRhcmd1bWVudC0+bmFtZTsKKyAgICAgICAgICAgICAgICAgICAg
bXkgJGVuY29kZWROYW1lID0gImVuY29kZWQiIC4gJGNvZGVHZW5lcmF0b3ItPldLX3VjZmlyc3Qo
JG5hbWUpOworICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiwgJHthcmd1
bWVudFR5cGV9ICR7ZW5jb2RlZE5hbWV9Iik7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiKVxuIik7CisgICAgICAgICAgICAgICAgcHVzaChA
aW1wbENvbnRlbnQsICJ7XG4iKTsKKyAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwg
IiAgICBVTlVTRURfUEFSQU0oc3RhdGUpO1xuIik7CisgICAgICAgICAgICAgICAgcHVzaChAaW1w
bENvbnRlbnQsICIgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7XG4iKTsKKyAgICAgICAgICAgICAg
ICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBKU0M6Ok5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFj
ZXIoJnZtLCBzdGF0ZSk7XG4iKTsKKyAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwg
IiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTtcbiIpOworICAg
ICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRU
aGlzLT53cmFwcGVkKCk7XG4iKTsKKyAgICAgICAgICAgICAgICBteSBAYXJndW1lbnRzOworICAg
ICAgICAgICAgICAgIG15ICRpbXBsRnVuY3Rpb25OYW1lOworICAgICAgICAgICAgICAgIG15ICRp
bXBsZW1lbnRlZEJ5ID0gJGZ1bmN0aW9uLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntJbXBsZW1lbnRl
ZEJ5fTsKKworICAgICAgICAgICAgICAgIGlmICgkaW1wbGVtZW50ZWRCeSkgeworICAgICAgICAg
ICAgICAgICAgICBBZGRUb0ltcGxJbmNsdWRlcygiJHtpbXBsZW1lbnRlZEJ5fS5oIiwgJGZ1bmN0
aW9uLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntDb25kaXRpb25hbH0pOworICAgICAgICAgICAgICAg
ICAgICB1bnNoaWZ0KEBhcmd1bWVudHMsICJpbXBsIikgaWYgISRmdW5jdGlvbi0+aXNTdGF0aWM7
CisgICAgICAgICAgICAgICAgICAgICRpbXBsRnVuY3Rpb25OYW1lID0gIldlYkNvcmU6OiR7aW1w
bGVtZW50ZWRCeX06OiR7ZnVuY3Rpb25JbXBsZW1lbnRhdGlvbk5hbWV9IjsKKyAgICAgICAgICAg
ICAgICB9IGVsc2lmICgkZnVuY3Rpb24tPmlzU3RhdGljKSB7CisgICAgICAgICAgICAgICAgICAg
ICRpbXBsRnVuY3Rpb25OYW1lID0gIiR7aW50ZXJmYWNlTmFtZX06OiR7ZnVuY3Rpb25JbXBsZW1l
bnRhdGlvbk5hbWV9IjsKKyAgICAgICAgICAgICAgICB9IGVsc2lmICgkc3ZnUHJvcGVydHlPckxp
c3RQcm9wZXJ0eVR5cGUgYW5kICEkc3ZnTGlzdFByb3BlcnR5VHlwZSkgeworICAgICAgICAgICAg
ICAgICAgICAkaW1wbEZ1bmN0aW9uTmFtZSA9ICJwb2RJbXBsLiR7ZnVuY3Rpb25JbXBsZW1lbnRh
dGlvbk5hbWV9IjsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAg
ICAkaW1wbEZ1bmN0aW9uTmFtZSA9ICJpbXBsLiR7ZnVuY3Rpb25JbXBsZW1lbnRhdGlvbk5hbWV9
IjsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBteSAkYXJndW1lbnRJbmRl
eCA9IDA7CisgICAgICAgICAgICAgICAgZm9yZWFjaCBteSAkYXJndW1lbnQgKEB7JGZ1bmN0aW9u
LT5hcmd1bWVudHN9KSB7CisgICAgICAgICAgICAgICAgICAgIG15ICR2YWx1ZSA9ICIiOworICAg
ICAgICAgICAgICAgICAgICBteSAkdHlwZSA9ICRhcmd1bWVudC0+dHlwZTsKKyAgICAgICAgICAg
ICAgICAgICAgbXkgJG5hbWUgPSAkYXJndW1lbnQtPm5hbWU7CisgICAgICAgICAgICAgICAgICAg
IG15ICRlbmNvZGVkTmFtZSA9ICJlbmNvZGVkIiAuICRjb2RlR2VuZXJhdG9yLT5XS191Y2ZpcnN0
KCRuYW1lKTsKKyAgICAgICAgICAgICAgICAgICAgbXkgJG5hdGl2ZVR5cGUgPSBHZXROYXRpdmVU
eXBlKCRpbnRlcmZhY2UsICRhcmd1bWVudC0+dHlwZSk7CisgICAgICAgICAgICAgICAgICAgIG15
ICRzaG91bGRQYXNzQnlSZWZlcmVuY2UgPSBTaG91bGRQYXNzV3JhcHBlckJ5UmVmZXJlbmNlKCRh
cmd1bWVudCwgJGludGVyZmFjZSk7CisKKyAgICAgICAgICAgICAgICAgICAgaWYgKCEkc2hvdWxk
UGFzc0J5UmVmZXJlbmNlICYmICgkY29kZUdlbmVyYXRvci0+SXNXcmFwcGVyVHlwZSgkdHlwZSkg
fHwgJGNvZGVHZW5lcmF0b3ItPklzVHlwZWRBcnJheVR5cGUoJHR5cGUpKSkgeworICAgICAgICAg
ICAgICAgICAgICAgICAgJGltcGxJbmNsdWRlc3siPHJ1bnRpbWUvRXJyb3IuaD4ifSA9IDE7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBteSAoJG5hdGl2ZVZhbHVlLCAkbWF5VGhyb3dFeGNlcHRp
b24pID0gVW5zYWZlVG9OYXRpdmUoJGludGVyZmFjZSwgJGFyZ3VtZW50LCAkZW5jb2RlZE5hbWUs
ICRmdW5jdGlvbi0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Q29uZGl0aW9uYWx9KTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICRuYXRpdmVUeXBlICRuYW1l
ID0gbnVsbHB0cjtcbiIpOworICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsICIgICAgJG5hbWUgPSAkbmF0aXZlVmFsdWU7XG4iKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29w
ZSwgZW5jb2RlZEpTVmFsdWUoKSk7XG4iKSBpZiAkbWF5VGhyb3dFeGNlcHRpb247CisgICAgICAg
ICAgICAgICAgICAgICAgICAkdmFsdWUgPSAiV1RGTW92ZSgkbmFtZSkiOworICAgICAgICAgICAg
ICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgbXkgKCRuYXRpdmVWYWx1
ZSwgJG1heVRocm93RXhjZXB0aW9uKSA9IFVuc2FmZVRvTmF0aXZlKCRpbnRlcmZhY2UsICRhcmd1
bWVudCwgJGVuY29kZWROYW1lLCAkZnVuY3Rpb24tPmV4dGVuZGVkQXR0cmlidXRlcy0+e0NvbmRp
dGlvbmFsfSk7CisgICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAg
ICBhdXRvICRuYW1lID0gJHtuYXRpdmVWYWx1ZX07XG4iKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICR2YWx1ZSA9ICJXVEZNb3ZlKCRuYW1lKSI7CisgICAgICAgICAgICAgICAgICAgICAgICBw
dXNoKEBpbXBsQ29udGVudCwgIiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVu
Y29kZWRKU1ZhbHVlKCkpO1xuIikgaWYgJG1heVRocm93RXhjZXB0aW9uOworICAgICAgICAgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgaWYgKCRzaG91bGRQYXNzQnlSZWZlcmVu
Y2UpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICR2YWx1ZSA9ICIqJG5hbWUiOworICAgICAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIHB1c2goQGFyZ3VtZW50cywgJHZh
bHVlKTsKKyAgICAgICAgICAgICAgICAgICAgJGFyZ3VtZW50SW5kZXgrKzsKKyAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICAgICAgbXkgJGZ1bmN0aW9uU3RyaW5nID0gIiRpbXBsRnVuY3Rp
b25OYW1lKCIgLiBqb2luKCIsICIsIEBhcmd1bWVudHMpIC4gIikiOworICAgICAgICAgICAgICAg
ICRmdW5jdGlvblN0cmluZyA9ICJwcm9wYWdhdGVFeGNlcHRpb24oKnN0YXRlLCB0aHJvd1Njb3Bl
LCAkZnVuY3Rpb25TdHJpbmcpIiBpZiBOZWVkc0V4cGxpY2l0UHJvcGFnYXRlRXhjZXB0aW9uQ2Fs
bCgkZnVuY3Rpb24pOworICAgICAgICAgICAgICAgIG15ICR0aGlzT2JqZWN0ID0gImNhc3RlZFRo
aXMiOworICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIEpTVmFsdWUgcmVz
dWx0ID0gIiAuIE5hdGl2ZVRvSlNWYWx1ZVVzaW5nUG9pbnRlcnMoJGZ1bmN0aW9uLCAxLCAkaW50
ZXJmYWNlLCAkZnVuY3Rpb25TdHJpbmcsICR0aGlzT2JqZWN0KSAuICI7XG4iKTsKKyAgICAgICAg
ICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJl
c3VsdCk7XG4iKTsKKyAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIn1cblxuIik7
CisgICAgICAgICAgICB9CisKICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiI2VuZGlm
XG5cbiIpIGlmICRjb25kaXRpb25hbDsKIAogICAgICAgICAgICAgIyBHZW5lcmF0ZSBhIGZ1bmN0
aW9uIGRpc3BhdGNoaW5nIGNhbGwgdG8gdGhlIHJlc3Qgb2YgdGhlIG92ZXJsb2Fkcy4KQEAgLTUz
MjMsNiArNTQzNSw0MyBAQCBzdWIgSlNWYWx1ZVRvTmF0aXZlCiAgICAgcmV0dXJuICgiSlMiIC4g
JHR5cGUtPm5hbWUgLiAiOjp0b1dyYXBwZWQoJHZhbHVlKSIsIDApOwogfQogCitzdWIgVW5zYWZl
VG9OYXRpdmUKK3sKKyAgICBteSAoJGludGVyZmFjZSwgJGNvbnRleHQsICR2YWx1ZSwgJGNvbmRp
dGlvbmFsLCAkc3RhdGVQb2ludGVyLCAkc3RhdGVSZWZlcmVuY2UsICR0aGlzT2JqZWN0UmVmZXJl
bmNlKSA9IEBfOworCisgICAgYXNzZXJ0KCJJbnZhbGlkIGNvbnRleHQgdHlwZSIpIGlmICFJc1Zh
bGlkQ29udGV4dEZvckpTVmFsdWVUb05hdGl2ZSgkY29udGV4dCk7CisKKyAgICBteSAkdHlwZSA9
ICRjb250ZXh0LT50eXBlOworCisgICAgIyBGSVhNRTogUmVtb3ZlIHRoZXNlIDMgdmFyaWFibGVz
IHdoZW4gYWxsIEpTVmFsdWVUb05hdGl2ZSB1c2UgcmVmZXJlbmNlcy4KKyAgICAkc3RhdGVQb2lu
dGVyID0gInN0YXRlIiB1bmxlc3MgJHN0YXRlUG9pbnRlcjsKKyAgICAkc3RhdGVSZWZlcmVuY2Ug
PSAiKnN0YXRlIiB1bmxlc3MgJHN0YXRlUmVmZXJlbmNlOworICAgICR0aGlzT2JqZWN0UmVmZXJl
bmNlID0gIipjYXN0ZWRUaGlzIiB1bmxlc3MgJHRoaXNPYmplY3RSZWZlcmVuY2U7CisKKyAgICBp
ZiAoSlNWYWx1ZVRvTmF0aXZlSXNIYW5kbGVkQnlET01Db252ZXJ0KCR0eXBlLCAkY29udGV4dCkp
IHsKKyAgICAgICAgQWRkVG9JbXBsSW5jbHVkZXMoIkRPTUpJVElETENvbnZlcnQuaCIpOworICAg
ICAgICBBZGRUb0ltcGxJbmNsdWRlc0ZvcklETFR5cGUoJHR5cGUsICRjb25kaXRpb25hbCk7CisK
KyAgICAgICAgbXkgJElETFR5cGUgPSBHZXRJRExUeXBlKCRpbnRlcmZhY2UsICR0eXBlKTsKKwor
ICAgICAgICBteSBAY29udmVyc2lvbkFyZ3VtZW50cyA9ICgpOworICAgICAgICBwdXNoKEBjb252
ZXJzaW9uQXJndW1lbnRzLCAiJHN0YXRlUmVmZXJlbmNlIik7CisgICAgICAgIHB1c2goQGNvbnZl
cnNpb25Bcmd1bWVudHMsICIkdmFsdWUiKTsKKworICAgICAgICBteSBAY29udmVyc2lvblN0YXRp
Y0FyZ3VtZW50cyA9ICgpOworICAgICAgICBwdXNoKEBjb252ZXJzaW9uU3RhdGljQXJndW1lbnRz
LCBHZXRJbnRlZ2VyQ29udmVyc2lvbkNvbmZpZ3VyYXRpb24oJGNvbnRleHQpKSBpZiAkY29kZUdl
bmVyYXRvci0+SXNJbnRlZ2VyVHlwZSgkdHlwZSk7CisgICAgICAgIHB1c2goQGNvbnZlcnNpb25T
dGF0aWNBcmd1bWVudHMsIEdldFN0cmluZ0NvbnZlcnNpb25Db25maWd1cmF0aW9uKCRjb250ZXh0
KSkgaWYgJGNvZGVHZW5lcmF0b3ItPklzU3RyaW5nVHlwZSgkdHlwZSk7CisKKyAgICAgICAgaWYg
KHNjYWxhcihAY29udmVyc2lvblN0YXRpY0FyZ3VtZW50cykgPiAwKSB7CisgICAgICAgICAgICBy
ZXR1cm4gKCJET01KSVQ6OkRpcmVjdENvbnZlcnRlcjwkSURMVHlwZT46OmRpcmVjdENvbnZlcnQ8
IiAuIGpvaW4oIiwgIiwgQGNvbnZlcnNpb25TdGF0aWNBcmd1bWVudHMpIC4gIj4oIiAuIGpvaW4o
IiwgIiwgQGNvbnZlcnNpb25Bcmd1bWVudHMpIC4gIikiLCAxKTsKKyAgICAgICAgfQorICAgICAg
ICByZXR1cm4gKCJET01KSVQ6OkRpcmVjdENvbnZlcnRlcjwkSURMVHlwZT46OmRpcmVjdENvbnZl
cnQoIiAuIGpvaW4oIiwgIiwgQGNvbnZlcnNpb25Bcmd1bWVudHMpIC4gIikiLCAxKTsKKyAgICB9
CisKKyAgICAjIEZJWE1FOiBFeHRlbmQgbW9yZS4KKyAgICBkaWUgIk9ubHkgRE9NQ29udmVydCBz
dXBwb3J0ZWQgb25lIGlzIG5vdyBzdXBwb3J0ZWQgaW4gRE9NSklUIHVuc2FmZS4iOworfQorCiBz
dWIgTmF0aXZlVG9KU1ZhbHVlSXNIYW5kbGVkQnlET01Db252ZXJ0CiB7CiAgICAgbXkgKCR0eXBl
KSA9IEBfOwpAQCAtNTUyOSw3ICs1Njc4LDEwIEBAIHN1YiBHZW5lcmF0ZUhhc2hUYWJsZVZhbHVl
QXJyYXkKICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiI2lmICR7Y29uZGl0aW9uYWxT
dHJpbmd9XG4iKTsKICAgICAgICAgfQogCi0gICAgICAgIGlmICgiQCRzcGVjaWFsc1skaV0iID1+
IG0vRnVuY3Rpb24vKSB7CisgICAgICAgIGlmICgiQCRzcGVjaWFsc1skaV0iID1+IG0vRE9NSklU
RnVuY3Rpb24vKSB7CisgICAgICAgICAgICAkZmlyc3RUYXJnZXRUeXBlID0gInN0YXRpY19jYXN0
PE5hdGl2ZUZ1bmN0aW9uPiI7CisgICAgICAgICAgICAkc2Vjb25kVGFyZ2V0VHlwZSA9ICJzdGF0
aWNfY2FzdDxjb25zdCBKU0M6OkRPTUpJVDo6U2lnbmF0dXJlKj4iOworICAgICAgICB9IGVsc2lm
ICgiQCRzcGVjaWFsc1skaV0iID1+IG0vRnVuY3Rpb24vKSB7CiAgICAgICAgICAgICAkZmlyc3RU
YXJnZXRUeXBlID0gInN0YXRpY19jYXN0PE5hdGl2ZUZ1bmN0aW9uPiI7CiAgICAgICAgIH0gZWxz
aWYgKCJAJHNwZWNpYWxzWyRpXSIgPX4gbS9CdWlsdGluLykgewogICAgICAgICAgICAgJGZpcnN0
VGFyZ2V0VHlwZSA9ICJzdGF0aWNfY2FzdDxCdWlsdGluR2VuZXJhdG9yPiI7CkBAIC02MTI3LDYg
KzYyNzksOSBAQCBzdWIgQ29tcHV0ZUZ1bmN0aW9uU3BlY2lhbAogICAgIGVsc2UgewogICAgICAg
ICBwdXNoKEBzcGVjaWFscywgIkpTQzo6RnVuY3Rpb24iKTsKICAgICB9CisgICAgaWYgKCRmdW5j
dGlvbi0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkRPTUpJVCJ9KSB7CisgICAgICAgIHB1c2goQHNw
ZWNpYWxzLCAiRE9NSklURnVuY3Rpb24iKSBpZiAkY29kZUdlbmVyYXRvci0+RXh0ZW5kZWRBdHRy
aWJ1dGVDb250YWlucygkZnVuY3Rpb24tPmV4dGVuZGVkQXR0cmlidXRlcy0+e0RPTUpJVH0sICJT
aWduYXR1cmUiKTsKKyAgICB9CiAgICAgcmV0dXJuIChAc3BlY2lhbHMgPiAwKSA/IGpvaW4oIiB8
ICIsIEBzcGVjaWFscykgOiAiMCI7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvSURMQXR0cmlidXRlcy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL0lETEF0dHJpYnV0ZXMudHh0CmluZGV4IGEyZTc1NDE1OTFjZTNmNTc2ZTdhN2Qy
ZDZkMmZjNjJkZGRmYTA0MWMuLjE0NmMyYmNjOGUwZjM3NmQ1ZGNjNTQzNTM5MDgzMzU5YzcyZGJl
NjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvSURMQXR0cmli
dXRlcy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9JRExBdHRyaWJ1
dGVzLnR4dApAQCAtNTIsNyArNTIsNyBAQCBDdXN0b21QdXRGdW5jdGlvbgogQ3VzdG9tU2V0UHJv
dG90eXBlCiBDdXN0b21TZXR0ZXIKIEN1c3RvbVRvSlNPYmplY3QKLURPTUpJVAorRE9NSklUPXxT
aWduYXR1cmUKIERvTm90Q2hlY2tDb25zdGFudHMKIERvTm90Q2hlY2tTZWN1cml0eQogRG9Ob3RD
aGVja1NlY3VyaXR5T25HZXR0ZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RET01KSVQuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERPTUpJVC5jcHAKaW5kZXggMjQ4OGRmMjZiZGI1MmI1
MGNkNjdkNjBjY2E1NjViMjY1MzY3ZTRjZi4uYWYxYmNmYzMxYmJhZmUyYjI1M2Y4N2QwZjczYjAz
ODMxYjM3OWFkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdERPTUpJVC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdERPTUpJVC5jcHAKQEAgLTIxLDEwICsyMSwxOCBAQAogI2luY2x1
ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkpTVGVzdERPTUpJVC5oIgogCisjaW5jbHVkZSAiRE9N
SklUQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5oIgorI2luY2x1ZGUgIkRPTUpJVENoZWNrRE9NLmgi
CisjaW5jbHVkZSAiRE9NSklUSURMQ29udmVydC5oIgorI2luY2x1ZGUgIkRPTUpJVElETFR5cGUu
aCIKKyNpbmNsdWRlICJET01KSVRJRExUeXBlRmlsdGVyLmgiCisjaW5jbHVkZSAiRXhjZXB0aW9u
Q29kZS5oIgogI2luY2x1ZGUgIkpTQnl0ZVN0cmluZy5oIgogI2luY2x1ZGUgIkpTRE9NQmluZGlu
Zy5oIgogI2luY2x1ZGUgIkpTRE9NQ29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJKU0RPTUNvbnZl
cnQuaCIKKyNpbmNsdWRlIDxpbnRlcnByZXRlci9GcmFtZVRyYWNlcnMuaD4KKyNpbmNsdWRlIDxy
dW50aW1lL0Vycm9yLmg+CiAjaW5jbHVkZSA8d3RmL0dldFB0ci5oPgogI2luY2x1ZGUgPHd0Zi9O
ZXZlckRlc3Ryb3llZC5oPgogCkBAIC0zMiw2ICs0MCwxMSBAQCB1c2luZyBuYW1lc3BhY2UgSlND
OwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKKy8vIEZ1bmN0aW9ucworCitKU0M6OkVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0RE9NSklUUHJvdG90eXBlRnVuY3Rpb25HZXRBdHRy
aWJ1dGUoSlNDOjpFeGVjU3RhdGUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCB1bnNhZmVKc1Rlc3RET01KSVRQcm90b3R5cGVGdW5jdGlvbkdldEF0dHJpYnV0ZShKU0M6OkV4
ZWNTdGF0ZSosIEpTVGVzdERPTUpJVCosIERPTUpJVDo6SURMSlNBcmd1bWVudFR5cGU8SURMRE9N
U3RyaW5nPik7CisKIC8vIEF0dHJpYnV0ZXMKIAogSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RE
T01KSVRBbnlBdHRyKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQ
cm9wZXJ0eU5hbWUpOwpAQCAtNzIsNiArODUsNyBAQCBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVz
dERPTUpJVE5vZGVOdWxsYWJsZUF0dHIoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKUwog
SlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RET01KSVRDb25zdHJ1Y3RvcihKU0M6OkV4ZWNTdGF0
ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKIGJvb2wgc2V0SlNU
ZXN0RE9NSklUQ29uc3RydWN0b3IoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVl
LCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKIAorc3RhdGljIGNvbnN0IEpTQzo6RE9NSklUOjpTaWdu
YXR1cmUgRE9NSklUU2lnbmF0dXJlRm9yVGVzdERPTUpJVEdldEF0dHJpYnV0ZSgodWludHB0cl90
KXVuc2FmZUpzVGVzdERPTUpJVFByb3RvdHlwZUZ1bmN0aW9uR2V0QXR0cmlidXRlLCBET01KSVQ6
OmNoZWNrRE9NPFRlc3RET01KSVQ+LCBKU1Rlc3RET01KSVQ6OmluZm8oKSwgSlNDOjpET01KSVQ6
OkVmZmVjdDo6Zm9yUmVhZChET01KSVQ6OkFic3RyYWN0SGVhcFJlcG9zaXRvcnk6OkRPTSksIERP
TUpJVDo6SURMUmVzdWx0VHlwZUZpbHRlcjxJRExOdWxsYWJsZTxJRExET01TdHJpbmc+PiwgRE9N
SklUOjpJRExBcmd1bWVudFR5cGVGaWx0ZXI8SURMRE9NU3RyaW5nPik7CiBjbGFzcyBKU1Rlc3RE
T01KSVRQcm90b3R5cGUgOiBwdWJsaWMgSlNDOjpKU05vbkZpbmFsT2JqZWN0IHsKIHB1YmxpYzoK
ICAgICB1c2luZyBCYXNlID0gSlNDOjpKU05vbkZpbmFsT2JqZWN0OwpAQCAtMTUzLDYgKzE2Nyw3
IEBAIHN0YXRpYyBjb25zdCBIYXNoVGFibGVWYWx1ZSBKU1Rlc3RET01KSVRQcm90b3R5cGVUYWJs
ZVZhbHVlc1tdID0KICAgICB7ICJieXRlU3RyaW5nTnVsbGFibGVBdHRyIiwgUmVhZE9ubHkgfCBD
dXN0b21BY2Nlc3NvciB8IERPTUpJVEF0dHJpYnV0ZSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90
KXN0YXRpY19jYXN0PERPTUpJVEdldHRlclNldHRlckdlbmVyYXRvcj4oZG9tSklUR2V0dGVyU2V0
dGVyRm9yVGVzdERPTUpJVEJ5dGVTdHJpbmdOdWxsYWJsZUF0dHIpLCAoaW50cHRyX3QpICgwKSB9
IH0sCiAgICAgeyAidXN2U3RyaW5nTnVsbGFibGVBdHRyIiwgUmVhZE9ubHkgfCBDdXN0b21BY2Nl
c3NvciB8IERPTUpJVEF0dHJpYnV0ZSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19j
YXN0PERPTUpJVEdldHRlclNldHRlckdlbmVyYXRvcj4oZG9tSklUR2V0dGVyU2V0dGVyRm9yVGVz
dERPTUpJVFVzdlN0cmluZ051bGxhYmxlQXR0ciksIChpbnRwdHJfdCkgKDApIH0gfSwKICAgICB7
ICJub2RlTnVsbGFibGVBdHRyIiwgUmVhZE9ubHkgfCBDdXN0b21BY2Nlc3NvciB8IERPTUpJVEF0
dHJpYnV0ZSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PERPTUpJVEdldHRl
clNldHRlckdlbmVyYXRvcj4oZG9tSklUR2V0dGVyU2V0dGVyRm9yVGVzdERPTUpJVE5vZGVOdWxs
YWJsZUF0dHIpLCAoaW50cHRyX3QpICgwKSB9IH0sCisgICAgeyAiZ2V0QXR0cmlidXRlIiwgSlND
OjpGdW5jdGlvbiB8IERPTUpJVEZ1bmN0aW9uLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3Rh
dGljX2Nhc3Q8TmF0aXZlRnVuY3Rpb24+KGpzVGVzdERPTUpJVFByb3RvdHlwZUZ1bmN0aW9uR2V0
QXR0cmlidXRlKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxjb25zdCBKU0M6OkRPTUpJVDo6U2ln
bmF0dXJlKj4oJkRPTUpJVFNpZ25hdHVyZUZvclRlc3RET01KSVRHZXRBdHRyaWJ1dGUpIH0gfSwK
IH07CiAKIGNvbnN0IENsYXNzSW5mbyBKU1Rlc3RET01KSVRQcm90b3R5cGU6OnNfaW5mbyA9IHsg
IlRlc3RET01KSVRQcm90b3R5cGUiLCAmQmFzZTo6c19pbmZvLCAwLCBDUkVBVEVfTUVUSE9EX1RB
QkxFKEpTVGVzdERPTUpJVFByb3RvdHlwZSkgfTsKQEAgLTE4NSw2ICsyMDAsMTEgQEAgdGVtcGxh
dGU8PiBpbmxpbmUgSlNUZXN0RE9NSklUKiBCaW5kaW5nQ2FsbGVyPEpTVGVzdERPTUpJVD46OmNh
c3RGb3JBdHRyaWJ1dGUoRXgKICAgICByZXR1cm4ganNEeW5hbWljRG93bmNhc3Q8SlNUZXN0RE9N
SklUKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogfQogCit0ZW1wbGF0ZTw+IGlubGlu
ZSBKU1Rlc3RET01KSVQqIEJpbmRpbmdDYWxsZXI8SlNUZXN0RE9NSklUPjo6Y2FzdEZvck9wZXJh
dGlvbihFeGVjU3RhdGUmIHN0YXRlKQoreworICAgIHJldHVybiBqc0R5bmFtaWNEb3duY2FzdDxK
U1Rlc3RET01KSVQqPihzdGF0ZS50aGlzVmFsdWUoKSk7Cit9CisKIHN0YXRpYyBpbmxpbmUgSlNW
YWx1ZSBqc1Rlc3RET01KSVRBbnlBdHRyR2V0dGVyKEV4ZWNTdGF0ZSYsIEpTVGVzdERPTUpJVCYs
IFRocm93U2NvcGUmIHRocm93U2NvcGUpOwogCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RET01KSVRB
bnlBdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVy
dHlOYW1lKQpAQCAtMjAyLDcgKzIyMiw3IEBAIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RE
T01KSVRBbnlBdHRyR2V0dGVyKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVGVzdERPTUpJVCYKIH0KIAog
VGVzdERPTUpJVEFueUF0dHJET01KSVQ6OlRlc3RET01KSVRBbnlBdHRyRE9NSklUKCkKLSAgICA6
IEpTQzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIoanNUZXN0RE9NSklUQW55QXR0ciwgbnVsbHB0ciwg
SlNUZXN0RE9NSklUOjppbmZvKCksIEpTQzo6U3BlY0hlYXBUb3ApCisgICAgOiBKU0M6OkRPTUpJ
VDo6R2V0dGVyU2V0dGVyKGpzVGVzdERPTUpJVEFueUF0dHIsIG51bGxwdHIsIEpTVGVzdERPTUpJ
VDo6aW5mbygpLCBET01KSVQ6OklETFJlc3VsdFR5cGVGaWx0ZXI8SURMQW55PikKIHsKIH0KIApA
QCAtMjI5LDcgKzI0OSw3IEBAIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RET01KSVRCb29s
ZWFuQXR0ckdldHRlcihFeGVjU3RhdGUmIHN0YXRlLCBKU1Rlc3RET01KCiB9CiAKIFRlc3RET01K
SVRCb29sZWFuQXR0ckRPTUpJVDo6VGVzdERPTUpJVEJvb2xlYW5BdHRyRE9NSklUKCkKLSAgICA6
IEpTQzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIoanNUZXN0RE9NSklUQm9vbGVhbkF0dHIsIG51bGxw
dHIsIEpTVGVzdERPTUpJVDo6aW5mbygpLCBKU0M6OlNwZWNCb29sZWFuKQorICAgIDogSlNDOjpE
T01KSVQ6OkdldHRlclNldHRlcihqc1Rlc3RET01KSVRCb29sZWFuQXR0ciwgbnVsbHB0ciwgSlNU
ZXN0RE9NSklUOjppbmZvKCksIERPTUpJVDo6SURMUmVzdWx0VHlwZUZpbHRlcjxJRExCb29sZWFu
PikKIHsKIH0KIApAQCAtMjU2LDcgKzI3Niw3IEBAIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rl
c3RET01KSVRCeXRlQXR0ckdldHRlcihFeGVjU3RhdGUmIHN0YXRlLCBKU1Rlc3RET01KSVQmCiB9
CiAKIFRlc3RET01KSVRCeXRlQXR0ckRPTUpJVDo6VGVzdERPTUpJVEJ5dGVBdHRyRE9NSklUKCkK
LSAgICA6IEpTQzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIoanNUZXN0RE9NSklUQnl0ZUF0dHIsIG51
bGxwdHIsIEpTVGVzdERPTUpJVDo6aW5mbygpLCBKU0M6OlNwZWNJbnQzMk9ubHkpCisgICAgOiBK
U0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVyKGpzVGVzdERPTUpJVEJ5dGVBdHRyLCBudWxscHRyLCBK
U1Rlc3RET01KSVQ6OmluZm8oKSwgRE9NSklUOjpJRExSZXN1bHRUeXBlRmlsdGVyPElETEJ5dGU+
KQogewogfQogCkBAIC0yODMsNyArMzAzLDcgQEAgc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVz
dERPTUpJVE9jdGV0QXR0ckdldHRlcihFeGVjU3RhdGUmIHN0YXRlLCBKU1Rlc3RET01KSVQKIH0K
IAogVGVzdERPTUpJVE9jdGV0QXR0ckRPTUpJVDo6VGVzdERPTUpJVE9jdGV0QXR0ckRPTUpJVCgp
Ci0gICAgOiBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVyKGpzVGVzdERPTUpJVE9jdGV0QXR0ciwg
bnVsbHB0ciwgSlNUZXN0RE9NSklUOjppbmZvKCksIEpTQzo6U3BlY0ludDMyT25seSkKKyAgICA6
IEpTQzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIoanNUZXN0RE9NSklUT2N0ZXRBdHRyLCBudWxscHRy
LCBKU1Rlc3RET01KSVQ6OmluZm8oKSwgRE9NSklUOjpJRExSZXN1bHRUeXBlRmlsdGVyPElETE9j
dGV0PikKIHsKIH0KIApAQCAtMzEwLDcgKzMzMCw3IEBAIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBq
c1Rlc3RET01KSVRTaG9ydEF0dHJHZXR0ZXIoRXhlY1N0YXRlJiBzdGF0ZSwgSlNUZXN0RE9NSklU
CiB9CiAKIFRlc3RET01KSVRTaG9ydEF0dHJET01KSVQ6OlRlc3RET01KSVRTaG9ydEF0dHJET01K
SVQoKQotICAgIDogSlNDOjpET01KSVQ6OkdldHRlclNldHRlcihqc1Rlc3RET01KSVRTaG9ydEF0
dHIsIG51bGxwdHIsIEpTVGVzdERPTUpJVDo6aW5mbygpLCBKU0M6OlNwZWNJbnQzMk9ubHkpCisg
ICAgOiBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVyKGpzVGVzdERPTUpJVFNob3J0QXR0ciwgbnVs
bHB0ciwgSlNUZXN0RE9NSklUOjppbmZvKCksIERPTUpJVDo6SURMUmVzdWx0VHlwZUZpbHRlcjxJ
RExTaG9ydD4pCiB7CiB9CiAKQEAgLTMzNyw3ICszNTcsNyBAQCBzdGF0aWMgaW5saW5lIEpTVmFs
dWUganNUZXN0RE9NSklUVW5zaWduZWRTaG9ydEF0dHJHZXR0ZXIoRXhlY1N0YXRlJiBzdGF0ZSwg
SlNUZQogfQogCiBUZXN0RE9NSklUVW5zaWduZWRTaG9ydEF0dHJET01KSVQ6OlRlc3RET01KSVRV
bnNpZ25lZFNob3J0QXR0ckRPTUpJVCgpCi0gICAgOiBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVy
KGpzVGVzdERPTUpJVFVuc2lnbmVkU2hvcnRBdHRyLCBudWxscHRyLCBKU1Rlc3RET01KSVQ6Omlu
Zm8oKSwgSlNDOjpTcGVjSW50MzJPbmx5KQorICAgIDogSlNDOjpET01KSVQ6OkdldHRlclNldHRl
cihqc1Rlc3RET01KSVRVbnNpZ25lZFNob3J0QXR0ciwgbnVsbHB0ciwgSlNUZXN0RE9NSklUOjpp
bmZvKCksIERPTUpJVDo6SURMUmVzdWx0VHlwZUZpbHRlcjxJRExVbnNpZ25lZFNob3J0PikKIHsK
IH0KIApAQCAtMzY0LDcgKzM4NCw3IEBAIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RET01K
SVRMb25nQXR0ckdldHRlcihFeGVjU3RhdGUmIHN0YXRlLCBKU1Rlc3RET01KSVQmCiB9CiAKIFRl
c3RET01KSVRMb25nQXR0ckRPTUpJVDo6VGVzdERPTUpJVExvbmdBdHRyRE9NSklUKCkKLSAgICA6
IEpTQzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIoanNUZXN0RE9NSklUTG9uZ0F0dHIsIG51bGxwdHIs
IEpTVGVzdERPTUpJVDo6aW5mbygpLCBKU0M6OlNwZWNJbnQzMk9ubHkpCisgICAgOiBKU0M6OkRP
TUpJVDo6R2V0dGVyU2V0dGVyKGpzVGVzdERPTUpJVExvbmdBdHRyLCBudWxscHRyLCBKU1Rlc3RE
T01KSVQ6OmluZm8oKSwgRE9NSklUOjpJRExSZXN1bHRUeXBlRmlsdGVyPElETExvbmc+KQogewog
fQogCkBAIC0zOTEsNyArNDExLDcgQEAgc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdERPTUpJ
VFVuc2lnbmVkTG9uZ0F0dHJHZXR0ZXIoRXhlY1N0YXRlJiBzdGF0ZSwgSlNUZXMKIH0KIAogVGVz
dERPTUpJVFVuc2lnbmVkTG9uZ0F0dHJET01KSVQ6OlRlc3RET01KSVRVbnNpZ25lZExvbmdBdHRy
RE9NSklUKCkKLSAgICA6IEpTQzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIoanNUZXN0RE9NSklUVW5z
aWduZWRMb25nQXR0ciwgbnVsbHB0ciwgSlNUZXN0RE9NSklUOjppbmZvKCksIEpTQzo6U3BlY0J5
dGVjb2RlTnVtYmVyKQorICAgIDogSlNDOjpET01KSVQ6OkdldHRlclNldHRlcihqc1Rlc3RET01K
SVRVbnNpZ25lZExvbmdBdHRyLCBudWxscHRyLCBKU1Rlc3RET01KSVQ6OmluZm8oKSwgRE9NSklU
OjpJRExSZXN1bHRUeXBlRmlsdGVyPElETFVuc2lnbmVkTG9uZz4pCiB7CiB9CiAKQEAgLTQxOCw3
ICs0MzgsNyBAQCBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0RE9NSklUTG9uZ0xvbmdBdHRy
R2V0dGVyKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVGVzdERPTQogfQogCiBUZXN0RE9NSklUTG9uZ0xv
bmdBdHRyRE9NSklUOjpUZXN0RE9NSklUTG9uZ0xvbmdBdHRyRE9NSklUKCkKLSAgICA6IEpTQzo6
RE9NSklUOjpHZXR0ZXJTZXR0ZXIoanNUZXN0RE9NSklUTG9uZ0xvbmdBdHRyLCBudWxscHRyLCBK
U1Rlc3RET01KSVQ6OmluZm8oKSwgSlNDOjpTcGVjQnl0ZWNvZGVOdW1iZXIpCisgICAgOiBKU0M6
OkRPTUpJVDo6R2V0dGVyU2V0dGVyKGpzVGVzdERPTUpJVExvbmdMb25nQXR0ciwgbnVsbHB0ciwg
SlNUZXN0RE9NSklUOjppbmZvKCksIERPTUpJVDo6SURMUmVzdWx0VHlwZUZpbHRlcjxJRExMb25n
TG9uZz4pCiB7CiB9CiAKQEAgLTQ0NSw3ICs0NjUsNyBAQCBzdGF0aWMgaW5saW5lIEpTVmFsdWUg
anNUZXN0RE9NSklUVW5zaWduZWRMb25nTG9uZ0F0dHJHZXR0ZXIoRXhlY1N0YXRlJiBzdGF0ZSwg
SgogfQogCiBUZXN0RE9NSklUVW5zaWduZWRMb25nTG9uZ0F0dHJET01KSVQ6OlRlc3RET01KSVRV
bnNpZ25lZExvbmdMb25nQXR0ckRPTUpJVCgpCi0gICAgOiBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0
dGVyKGpzVGVzdERPTUpJVFVuc2lnbmVkTG9uZ0xvbmdBdHRyLCBudWxscHRyLCBKU1Rlc3RET01K
SVQ6OmluZm8oKSwgSlNDOjpTcGVjQnl0ZWNvZGVOdW1iZXIpCisgICAgOiBKU0M6OkRPTUpJVDo6
R2V0dGVyU2V0dGVyKGpzVGVzdERPTUpJVFVuc2lnbmVkTG9uZ0xvbmdBdHRyLCBudWxscHRyLCBK
U1Rlc3RET01KSVQ6OmluZm8oKSwgRE9NSklUOjpJRExSZXN1bHRUeXBlRmlsdGVyPElETFVuc2ln
bmVkTG9uZ0xvbmc+KQogewogfQogCkBAIC00NzIsNyArNDkyLDcgQEAgc3RhdGljIGlubGluZSBK
U1ZhbHVlIGpzVGVzdERPTUpJVEZsb2F0QXR0ckdldHRlcihFeGVjU3RhdGUmIHN0YXRlLCBKU1Rl
c3RET01KSVQKIH0KIAogVGVzdERPTUpJVEZsb2F0QXR0ckRPTUpJVDo6VGVzdERPTUpJVEZsb2F0
QXR0ckRPTUpJVCgpCi0gICAgOiBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVyKGpzVGVzdERPTUpJ
VEZsb2F0QXR0ciwgbnVsbHB0ciwgSlNUZXN0RE9NSklUOjppbmZvKCksIEpTQzo6U3BlY0J5dGVj
b2RlTnVtYmVyKQorICAgIDogSlNDOjpET01KSVQ6OkdldHRlclNldHRlcihqc1Rlc3RET01KSVRG
bG9hdEF0dHIsIG51bGxwdHIsIEpTVGVzdERPTUpJVDo6aW5mbygpLCBET01KSVQ6OklETFJlc3Vs
dFR5cGVGaWx0ZXI8SURMRmxvYXQ+KQogewogfQogCkBAIC00OTksNyArNTE5LDcgQEAgc3RhdGlj
IGlubGluZSBKU1ZhbHVlIGpzVGVzdERPTUpJVFVucmVzdHJpY3RlZEZsb2F0QXR0ckdldHRlcihF
eGVjU3RhdGUmIHN0YXRlLAogfQogCiBUZXN0RE9NSklUVW5yZXN0cmljdGVkRmxvYXRBdHRyRE9N
SklUOjpUZXN0RE9NSklUVW5yZXN0cmljdGVkRmxvYXRBdHRyRE9NSklUKCkKLSAgICA6IEpTQzo6
RE9NSklUOjpHZXR0ZXJTZXR0ZXIoanNUZXN0RE9NSklUVW5yZXN0cmljdGVkRmxvYXRBdHRyLCBu
dWxscHRyLCBKU1Rlc3RET01KSVQ6OmluZm8oKSwgSlNDOjpTcGVjQnl0ZWNvZGVOdW1iZXIpCisg
ICAgOiBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVyKGpzVGVzdERPTUpJVFVucmVzdHJpY3RlZEZs
b2F0QXR0ciwgbnVsbHB0ciwgSlNUZXN0RE9NSklUOjppbmZvKCksIERPTUpJVDo6SURMUmVzdWx0
VHlwZUZpbHRlcjxJRExVbnJlc3RyaWN0ZWRGbG9hdD4pCiB7CiB9CiAKQEAgLTUyNiw3ICs1NDYs
NyBAQCBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0RE9NSklURG91YmxlQXR0ckdldHRlcihF
eGVjU3RhdGUmIHN0YXRlLCBKU1Rlc3RET01KSQogfQogCiBUZXN0RE9NSklURG91YmxlQXR0ckRP
TUpJVDo6VGVzdERPTUpJVERvdWJsZUF0dHJET01KSVQoKQotICAgIDogSlNDOjpET01KSVQ6Okdl
dHRlclNldHRlcihqc1Rlc3RET01KSVREb3VibGVBdHRyLCBudWxscHRyLCBKU1Rlc3RET01KSVQ6
OmluZm8oKSwgSlNDOjpTcGVjQnl0ZWNvZGVOdW1iZXIpCisgICAgOiBKU0M6OkRPTUpJVDo6R2V0
dGVyU2V0dGVyKGpzVGVzdERPTUpJVERvdWJsZUF0dHIsIG51bGxwdHIsIEpTVGVzdERPTUpJVDo6
aW5mbygpLCBET01KSVQ6OklETFJlc3VsdFR5cGVGaWx0ZXI8SURMRG91YmxlPikKIHsKIH0KIApA
QCAtNTUzLDcgKzU3Myw3IEBAIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RET01KSVRVbnJl
c3RyaWN0ZWREb3VibGVBdHRyR2V0dGVyKEV4ZWNTdGF0ZSYgc3RhdGUsCiB9CiAKIFRlc3RET01K
SVRVbnJlc3RyaWN0ZWREb3VibGVBdHRyRE9NSklUOjpUZXN0RE9NSklUVW5yZXN0cmljdGVkRG91
YmxlQXR0ckRPTUpJVCgpCi0gICAgOiBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVyKGpzVGVzdERP
TUpJVFVucmVzdHJpY3RlZERvdWJsZUF0dHIsIG51bGxwdHIsIEpTVGVzdERPTUpJVDo6aW5mbygp
LCBKU0M6OlNwZWNCeXRlY29kZU51bWJlcikKKyAgICA6IEpTQzo6RE9NSklUOjpHZXR0ZXJTZXR0
ZXIoanNUZXN0RE9NSklUVW5yZXN0cmljdGVkRG91YmxlQXR0ciwgbnVsbHB0ciwgSlNUZXN0RE9N
SklUOjppbmZvKCksIERPTUpJVDo6SURMUmVzdWx0VHlwZUZpbHRlcjxJRExVbnJlc3RyaWN0ZWRE
b3VibGU+KQogewogfQogCkBAIC01ODAsNyArNjAwLDcgQEAgc3RhdGljIGlubGluZSBKU1ZhbHVl
IGpzVGVzdERPTUpJVERvbVN0cmluZ0F0dHJHZXR0ZXIoRXhlY1N0YXRlJiBzdGF0ZSwgSlNUZXN0
RE8KIH0KIAogVGVzdERPTUpJVERvbVN0cmluZ0F0dHJET01KSVQ6OlRlc3RET01KSVREb21TdHJp
bmdBdHRyRE9NSklUKCkKLSAgICA6IEpTQzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIoanNUZXN0RE9N
SklURG9tU3RyaW5nQXR0ciwgbnVsbHB0ciwgSlNUZXN0RE9NSklUOjppbmZvKCksIEpTQzo6U3Bl
Y1N0cmluZykKKyAgICA6IEpTQzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIoanNUZXN0RE9NSklURG9t
U3RyaW5nQXR0ciwgbnVsbHB0ciwgSlNUZXN0RE9NSklUOjppbmZvKCksIERPTUpJVDo6SURMUmVz
dWx0VHlwZUZpbHRlcjxJRExET01TdHJpbmc+KQogewogfQogCkBAIC02MDcsNyArNjI3LDcgQEAg
c3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdERPTUpJVEJ5dGVTdHJpbmdBdHRyR2V0dGVyKEV4
ZWNTdGF0ZSYgc3RhdGUsIEpTVGVzdEQKIH0KIAogVGVzdERPTUpJVEJ5dGVTdHJpbmdBdHRyRE9N
SklUOjpUZXN0RE9NSklUQnl0ZVN0cmluZ0F0dHJET01KSVQoKQotICAgIDogSlNDOjpET01KSVQ6
OkdldHRlclNldHRlcihqc1Rlc3RET01KSVRCeXRlU3RyaW5nQXR0ciwgbnVsbHB0ciwgSlNUZXN0
RE9NSklUOjppbmZvKCksIEpTQzo6U3BlY1N0cmluZykKKyAgICA6IEpTQzo6RE9NSklUOjpHZXR0
ZXJTZXR0ZXIoanNUZXN0RE9NSklUQnl0ZVN0cmluZ0F0dHIsIG51bGxwdHIsIEpTVGVzdERPTUpJ
VDo6aW5mbygpLCBET01KSVQ6OklETFJlc3VsdFR5cGVGaWx0ZXI8SURMQnl0ZVN0cmluZz4pCiB7
CiB9CiAKQEAgLTYzNCw3ICs2NTQsNyBAQCBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0RE9N
SklUVXN2U3RyaW5nQXR0ckdldHRlcihFeGVjU3RhdGUmIHN0YXRlLCBKU1Rlc3RETwogfQogCiBU
ZXN0RE9NSklUVXN2U3RyaW5nQXR0ckRPTUpJVDo6VGVzdERPTUpJVFVzdlN0cmluZ0F0dHJET01K
SVQoKQotICAgIDogSlNDOjpET01KSVQ6OkdldHRlclNldHRlcihqc1Rlc3RET01KSVRVc3ZTdHJp
bmdBdHRyLCBudWxscHRyLCBKU1Rlc3RET01KSVQ6OmluZm8oKSwgSlNDOjpTcGVjU3RyaW5nKQor
ICAgIDogSlNDOjpET01KSVQ6OkdldHRlclNldHRlcihqc1Rlc3RET01KSVRVc3ZTdHJpbmdBdHRy
LCBudWxscHRyLCBKU1Rlc3RET01KSVQ6OmluZm8oKSwgRE9NSklUOjpJRExSZXN1bHRUeXBlRmls
dGVyPElETFVTVlN0cmluZz4pCiB7CiB9CiAKQEAgLTY2MSw3ICs2ODEsNyBAQCBzdGF0aWMgaW5s
aW5lIEpTVmFsdWUganNUZXN0RE9NSklUTm9kZUF0dHJHZXR0ZXIoRXhlY1N0YXRlJiBzdGF0ZSwg
SlNUZXN0RE9NSklUJgogfQogCiBUZXN0RE9NSklUTm9kZUF0dHJET01KSVQ6OlRlc3RET01KSVRO
b2RlQXR0ckRPTUpJVCgpCi0gICAgOiBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVyKGpzVGVzdERP
TUpJVE5vZGVBdHRyLCBudWxscHRyLCBKU1Rlc3RET01KSVQ6OmluZm8oKSwgU3BlY0hlYXBUb3Ap
CisgICAgOiBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVyKGpzVGVzdERPTUpJVE5vZGVBdHRyLCBu
dWxscHRyLCBKU1Rlc3RET01KSVQ6OmluZm8oKSwgRE9NSklUOjpJRExSZXN1bHRUeXBlRmlsdGVy
PElETEludGVyZmFjZTxOb2RlPj4pCiB7CiB9CiAKQEAgLTY4OCw3ICs3MDgsNyBAQCBzdGF0aWMg
aW5saW5lIEpTVmFsdWUganNUZXN0RE9NSklUQm9vbGVhbk51bGxhYmxlQXR0ckdldHRlcihFeGVj
U3RhdGUmIHN0YXRlLCBKUwogfQogCiBUZXN0RE9NSklUQm9vbGVhbk51bGxhYmxlQXR0ckRPTUpJ
VDo6VGVzdERPTUpJVEJvb2xlYW5OdWxsYWJsZUF0dHJET01KSVQoKQotICAgIDogSlNDOjpET01K
SVQ6OkdldHRlclNldHRlcihqc1Rlc3RET01KSVRCb29sZWFuTnVsbGFibGVBdHRyLCBudWxscHRy
LCBKU1Rlc3RET01KSVQ6OmluZm8oKSwgKEpTQzo6U3BlY0Jvb2xlYW4gfCBKU0M6OlNwZWNPdGhl
cikpCisgICAgOiBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVyKGpzVGVzdERPTUpJVEJvb2xlYW5O
dWxsYWJsZUF0dHIsIG51bGxwdHIsIEpTVGVzdERPTUpJVDo6aW5mbygpLCBET01KSVQ6OklETFJl
c3VsdFR5cGVGaWx0ZXI8SURMTnVsbGFibGU8SURMQm9vbGVhbj4+KQogewogfQogCkBAIC03MTUs
NyArNzM1LDcgQEAgc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdERPTUpJVEJ5dGVOdWxsYWJs
ZUF0dHJHZXR0ZXIoRXhlY1N0YXRlJiBzdGF0ZSwgSlNUZXMKIH0KIAogVGVzdERPTUpJVEJ5dGVO
dWxsYWJsZUF0dHJET01KSVQ6OlRlc3RET01KSVRCeXRlTnVsbGFibGVBdHRyRE9NSklUKCkKLSAg
ICA6IEpTQzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIoanNUZXN0RE9NSklUQnl0ZU51bGxhYmxlQXR0
ciwgbnVsbHB0ciwgSlNUZXN0RE9NSklUOjppbmZvKCksIChKU0M6OlNwZWNJbnQzMk9ubHkgfCBK
U0M6OlNwZWNPdGhlcikpCisgICAgOiBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVyKGpzVGVzdERP
TUpJVEJ5dGVOdWxsYWJsZUF0dHIsIG51bGxwdHIsIEpTVGVzdERPTUpJVDo6aW5mbygpLCBET01K
SVQ6OklETFJlc3VsdFR5cGVGaWx0ZXI8SURMTnVsbGFibGU8SURMQnl0ZT4+KQogewogfQogCkBA
IC03NDIsNyArNzYyLDcgQEAgc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdERPTUpJVE9jdGV0
TnVsbGFibGVBdHRyR2V0dGVyKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVGUKIH0KIAogVGVzdERPTUpJ
VE9jdGV0TnVsbGFibGVBdHRyRE9NSklUOjpUZXN0RE9NSklUT2N0ZXROdWxsYWJsZUF0dHJET01K
SVQoKQotICAgIDogSlNDOjpET01KSVQ6OkdldHRlclNldHRlcihqc1Rlc3RET01KSVRPY3RldE51
bGxhYmxlQXR0ciwgbnVsbHB0ciwgSlNUZXN0RE9NSklUOjppbmZvKCksIChKU0M6OlNwZWNJbnQz
Mk9ubHkgfCBKU0M6OlNwZWNPdGhlcikpCisgICAgOiBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVy
KGpzVGVzdERPTUpJVE9jdGV0TnVsbGFibGVBdHRyLCBudWxscHRyLCBKU1Rlc3RET01KSVQ6Omlu
Zm8oKSwgRE9NSklUOjpJRExSZXN1bHRUeXBlRmlsdGVyPElETE51bGxhYmxlPElETE9jdGV0Pj4p
CiB7CiB9CiAKQEAgLTc2OSw3ICs3ODksNyBAQCBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0
RE9NSklUU2hvcnROdWxsYWJsZUF0dHJHZXR0ZXIoRXhlY1N0YXRlJiBzdGF0ZSwgSlNUZQogfQog
CiBUZXN0RE9NSklUU2hvcnROdWxsYWJsZUF0dHJET01KSVQ6OlRlc3RET01KSVRTaG9ydE51bGxh
YmxlQXR0ckRPTUpJVCgpCi0gICAgOiBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVyKGpzVGVzdERP
TUpJVFNob3J0TnVsbGFibGVBdHRyLCBudWxscHRyLCBKU1Rlc3RET01KSVQ6OmluZm8oKSwgKEpT
Qzo6U3BlY0ludDMyT25seSB8IEpTQzo6U3BlY090aGVyKSkKKyAgICA6IEpTQzo6RE9NSklUOjpH
ZXR0ZXJTZXR0ZXIoanNUZXN0RE9NSklUU2hvcnROdWxsYWJsZUF0dHIsIG51bGxwdHIsIEpTVGVz
dERPTUpJVDo6aW5mbygpLCBET01KSVQ6OklETFJlc3VsdFR5cGVGaWx0ZXI8SURMTnVsbGFibGU8
SURMU2hvcnQ+PikKIHsKIH0KIApAQCAtNzk2LDcgKzgxNiw3IEBAIHN0YXRpYyBpbmxpbmUgSlNW
YWx1ZSBqc1Rlc3RET01KSVRVbnNpZ25lZFNob3J0TnVsbGFibGVBdHRyR2V0dGVyKEV4ZWNTdGF0
ZSYgc3RhCiB9CiAKIFRlc3RET01KSVRVbnNpZ25lZFNob3J0TnVsbGFibGVBdHRyRE9NSklUOjpU
ZXN0RE9NSklUVW5zaWduZWRTaG9ydE51bGxhYmxlQXR0ckRPTUpJVCgpCi0gICAgOiBKU0M6OkRP
TUpJVDo6R2V0dGVyU2V0dGVyKGpzVGVzdERPTUpJVFVuc2lnbmVkU2hvcnROdWxsYWJsZUF0dHIs
IG51bGxwdHIsIEpTVGVzdERPTUpJVDo6aW5mbygpLCAoSlNDOjpTcGVjSW50MzJPbmx5IHwgSlND
OjpTcGVjT3RoZXIpKQorICAgIDogSlNDOjpET01KSVQ6OkdldHRlclNldHRlcihqc1Rlc3RET01K
SVRVbnNpZ25lZFNob3J0TnVsbGFibGVBdHRyLCBudWxscHRyLCBKU1Rlc3RET01KSVQ6OmluZm8o
KSwgRE9NSklUOjpJRExSZXN1bHRUeXBlRmlsdGVyPElETE51bGxhYmxlPElETFVuc2lnbmVkU2hv
cnQ+PikKIHsKIH0KIApAQCAtODIzLDcgKzg0Myw3IEBAIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBq
c1Rlc3RET01KSVRMb25nTnVsbGFibGVBdHRyR2V0dGVyKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVGVz
CiB9CiAKIFRlc3RET01KSVRMb25nTnVsbGFibGVBdHRyRE9NSklUOjpUZXN0RE9NSklUTG9uZ051
bGxhYmxlQXR0ckRPTUpJVCgpCi0gICAgOiBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVyKGpzVGVz
dERPTUpJVExvbmdOdWxsYWJsZUF0dHIsIG51bGxwdHIsIEpTVGVzdERPTUpJVDo6aW5mbygpLCAo
SlNDOjpTcGVjSW50MzJPbmx5IHwgSlNDOjpTcGVjT3RoZXIpKQorICAgIDogSlNDOjpET01KSVQ6
OkdldHRlclNldHRlcihqc1Rlc3RET01KSVRMb25nTnVsbGFibGVBdHRyLCBudWxscHRyLCBKU1Rl
c3RET01KSVQ6OmluZm8oKSwgRE9NSklUOjpJRExSZXN1bHRUeXBlRmlsdGVyPElETE51bGxhYmxl
PElETExvbmc+PikKIHsKIH0KIApAQCAtODUwLDcgKzg3MCw3IEBAIHN0YXRpYyBpbmxpbmUgSlNW
YWx1ZSBqc1Rlc3RET01KSVRVbnNpZ25lZExvbmdOdWxsYWJsZUF0dHJHZXR0ZXIoRXhlY1N0YXRl
JiBzdGF0CiB9CiAKIFRlc3RET01KSVRVbnNpZ25lZExvbmdOdWxsYWJsZUF0dHJET01KSVQ6OlRl
c3RET01KSVRVbnNpZ25lZExvbmdOdWxsYWJsZUF0dHJET01KSVQoKQotICAgIDogSlNDOjpET01K
SVQ6OkdldHRlclNldHRlcihqc1Rlc3RET01KSVRVbnNpZ25lZExvbmdOdWxsYWJsZUF0dHIsIG51
bGxwdHIsIEpTVGVzdERPTUpJVDo6aW5mbygpLCAoSlNDOjpTcGVjQnl0ZWNvZGVOdW1iZXIgfCBK
U0M6OlNwZWNPdGhlcikpCisgICAgOiBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVyKGpzVGVzdERP
TUpJVFVuc2lnbmVkTG9uZ051bGxhYmxlQXR0ciwgbnVsbHB0ciwgSlNUZXN0RE9NSklUOjppbmZv
KCksIERPTUpJVDo6SURMUmVzdWx0VHlwZUZpbHRlcjxJRExOdWxsYWJsZTxJRExVbnNpZ25lZExv
bmc+PikKIHsKIH0KIApAQCAtODc3LDcgKzg5Nyw3IEBAIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBq
c1Rlc3RET01KSVRMb25nTG9uZ051bGxhYmxlQXR0ckdldHRlcihFeGVjU3RhdGUmIHN0YXRlLCBK
CiB9CiAKIFRlc3RET01KSVRMb25nTG9uZ051bGxhYmxlQXR0ckRPTUpJVDo6VGVzdERPTUpJVExv
bmdMb25nTnVsbGFibGVBdHRyRE9NSklUKCkKLSAgICA6IEpTQzo6RE9NSklUOjpHZXR0ZXJTZXR0
ZXIoanNUZXN0RE9NSklUTG9uZ0xvbmdOdWxsYWJsZUF0dHIsIG51bGxwdHIsIEpTVGVzdERPTUpJ
VDo6aW5mbygpLCAoSlNDOjpTcGVjQnl0ZWNvZGVOdW1iZXIgfCBKU0M6OlNwZWNPdGhlcikpCisg
ICAgOiBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVyKGpzVGVzdERPTUpJVExvbmdMb25nTnVsbGFi
bGVBdHRyLCBudWxscHRyLCBKU1Rlc3RET01KSVQ6OmluZm8oKSwgRE9NSklUOjpJRExSZXN1bHRU
eXBlRmlsdGVyPElETE51bGxhYmxlPElETExvbmdMb25nPj4pCiB7CiB9CiAKQEAgLTkwNCw3ICs5
MjQsNyBAQCBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0RE9NSklUVW5zaWduZWRMb25nTG9u
Z051bGxhYmxlQXR0ckdldHRlcihFeGVjU3RhdGUmCiB9CiAKIFRlc3RET01KSVRVbnNpZ25lZExv
bmdMb25nTnVsbGFibGVBdHRyRE9NSklUOjpUZXN0RE9NSklUVW5zaWduZWRMb25nTG9uZ051bGxh
YmxlQXR0ckRPTUpJVCgpCi0gICAgOiBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVyKGpzVGVzdERP
TUpJVFVuc2lnbmVkTG9uZ0xvbmdOdWxsYWJsZUF0dHIsIG51bGxwdHIsIEpTVGVzdERPTUpJVDo6
aW5mbygpLCAoSlNDOjpTcGVjQnl0ZWNvZGVOdW1iZXIgfCBKU0M6OlNwZWNPdGhlcikpCisgICAg
OiBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVyKGpzVGVzdERPTUpJVFVuc2lnbmVkTG9uZ0xvbmdO
dWxsYWJsZUF0dHIsIG51bGxwdHIsIEpTVGVzdERPTUpJVDo6aW5mbygpLCBET01KSVQ6OklETFJl
c3VsdFR5cGVGaWx0ZXI8SURMTnVsbGFibGU8SURMVW5zaWduZWRMb25nTG9uZz4+KQogewogfQog
CkBAIC05MzEsNyArOTUxLDcgQEAgc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdERPTUpJVEZs
b2F0TnVsbGFibGVBdHRyR2V0dGVyKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVGUKIH0KIAogVGVzdERP
TUpJVEZsb2F0TnVsbGFibGVBdHRyRE9NSklUOjpUZXN0RE9NSklURmxvYXROdWxsYWJsZUF0dHJE
T01KSVQoKQotICAgIDogSlNDOjpET01KSVQ6OkdldHRlclNldHRlcihqc1Rlc3RET01KSVRGbG9h
dE51bGxhYmxlQXR0ciwgbnVsbHB0ciwgSlNUZXN0RE9NSklUOjppbmZvKCksIChKU0M6OlNwZWNC
eXRlY29kZU51bWJlciB8IEpTQzo6U3BlY090aGVyKSkKKyAgICA6IEpTQzo6RE9NSklUOjpHZXR0
ZXJTZXR0ZXIoanNUZXN0RE9NSklURmxvYXROdWxsYWJsZUF0dHIsIG51bGxwdHIsIEpTVGVzdERP
TUpJVDo6aW5mbygpLCBET01KSVQ6OklETFJlc3VsdFR5cGVGaWx0ZXI8SURMTnVsbGFibGU8SURM
RmxvYXQ+PikKIHsKIH0KIApAQCAtOTU4LDcgKzk3OCw3IEBAIHN0YXRpYyBpbmxpbmUgSlNWYWx1
ZSBqc1Rlc3RET01KSVRVbnJlc3RyaWN0ZWRGbG9hdE51bGxhYmxlQXR0ckdldHRlcihFeGVjU3Rh
dGUmCiB9CiAKIFRlc3RET01KSVRVbnJlc3RyaWN0ZWRGbG9hdE51bGxhYmxlQXR0ckRPTUpJVDo6
VGVzdERPTUpJVFVucmVzdHJpY3RlZEZsb2F0TnVsbGFibGVBdHRyRE9NSklUKCkKLSAgICA6IEpT
Qzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIoanNUZXN0RE9NSklUVW5yZXN0cmljdGVkRmxvYXROdWxs
YWJsZUF0dHIsIG51bGxwdHIsIEpTVGVzdERPTUpJVDo6aW5mbygpLCAoSlNDOjpTcGVjQnl0ZWNv
ZGVOdW1iZXIgfCBKU0M6OlNwZWNPdGhlcikpCisgICAgOiBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0
dGVyKGpzVGVzdERPTUpJVFVucmVzdHJpY3RlZEZsb2F0TnVsbGFibGVBdHRyLCBudWxscHRyLCBK
U1Rlc3RET01KSVQ6OmluZm8oKSwgRE9NSklUOjpJRExSZXN1bHRUeXBlRmlsdGVyPElETE51bGxh
YmxlPElETFVucmVzdHJpY3RlZEZsb2F0Pj4pCiB7CiB9CiAKQEAgLTk4NSw3ICsxMDA1LDcgQEAg
c3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdERPTUpJVERvdWJsZU51bGxhYmxlQXR0ckdldHRl
cihFeGVjU3RhdGUmIHN0YXRlLCBKU1QKIH0KIAogVGVzdERPTUpJVERvdWJsZU51bGxhYmxlQXR0
ckRPTUpJVDo6VGVzdERPTUpJVERvdWJsZU51bGxhYmxlQXR0ckRPTUpJVCgpCi0gICAgOiBKU0M6
OkRPTUpJVDo6R2V0dGVyU2V0dGVyKGpzVGVzdERPTUpJVERvdWJsZU51bGxhYmxlQXR0ciwgbnVs
bHB0ciwgSlNUZXN0RE9NSklUOjppbmZvKCksIChKU0M6OlNwZWNCeXRlY29kZU51bWJlciB8IEpT
Qzo6U3BlY090aGVyKSkKKyAgICA6IEpTQzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIoanNUZXN0RE9N
SklURG91YmxlTnVsbGFibGVBdHRyLCBudWxscHRyLCBKU1Rlc3RET01KSVQ6OmluZm8oKSwgRE9N
SklUOjpJRExSZXN1bHRUeXBlRmlsdGVyPElETE51bGxhYmxlPElETERvdWJsZT4+KQogewogfQog
CkBAIC0xMDEyLDcgKzEwMzIsNyBAQCBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0RE9NSklU
VW5yZXN0cmljdGVkRG91YmxlTnVsbGFibGVBdHRyR2V0dGVyKEV4ZWNTdGF0ZQogfQogCiBUZXN0
RE9NSklUVW5yZXN0cmljdGVkRG91YmxlTnVsbGFibGVBdHRyRE9NSklUOjpUZXN0RE9NSklUVW5y
ZXN0cmljdGVkRG91YmxlTnVsbGFibGVBdHRyRE9NSklUKCkKLSAgICA6IEpTQzo6RE9NSklUOjpH
ZXR0ZXJTZXR0ZXIoanNUZXN0RE9NSklUVW5yZXN0cmljdGVkRG91YmxlTnVsbGFibGVBdHRyLCBu
dWxscHRyLCBKU1Rlc3RET01KSVQ6OmluZm8oKSwgKEpTQzo6U3BlY0J5dGVjb2RlTnVtYmVyIHwg
SlNDOjpTcGVjT3RoZXIpKQorICAgIDogSlNDOjpET01KSVQ6OkdldHRlclNldHRlcihqc1Rlc3RE
T01KSVRVbnJlc3RyaWN0ZWREb3VibGVOdWxsYWJsZUF0dHIsIG51bGxwdHIsIEpTVGVzdERPTUpJ
VDo6aW5mbygpLCBET01KSVQ6OklETFJlc3VsdFR5cGVGaWx0ZXI8SURMTnVsbGFibGU8SURMVW5y
ZXN0cmljdGVkRG91YmxlPj4pCiB7CiB9CiAKQEAgLTEwMzksNyArMTA1OSw3IEBAIHN0YXRpYyBp
bmxpbmUgSlNWYWx1ZSBqc1Rlc3RET01KSVREb21TdHJpbmdOdWxsYWJsZUF0dHJHZXR0ZXIoRXhl
Y1N0YXRlJiBzdGF0ZSwKIH0KIAogVGVzdERPTUpJVERvbVN0cmluZ051bGxhYmxlQXR0ckRPTUpJ
VDo6VGVzdERPTUpJVERvbVN0cmluZ051bGxhYmxlQXR0ckRPTUpJVCgpCi0gICAgOiBKU0M6OkRP
TUpJVDo6R2V0dGVyU2V0dGVyKGpzVGVzdERPTUpJVERvbVN0cmluZ051bGxhYmxlQXR0ciwgbnVs
bHB0ciwgSlNUZXN0RE9NSklUOjppbmZvKCksIChKU0M6OlNwZWNTdHJpbmcgfCBKU0M6OlNwZWNP
dGhlcikpCisgICAgOiBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVyKGpzVGVzdERPTUpJVERvbVN0
cmluZ051bGxhYmxlQXR0ciwgbnVsbHB0ciwgSlNUZXN0RE9NSklUOjppbmZvKCksIERPTUpJVDo6
SURMUmVzdWx0VHlwZUZpbHRlcjxJRExOdWxsYWJsZTxJRExET01TdHJpbmc+PikKIHsKIH0KIApA
QCAtMTA2Niw3ICsxMDg2LDcgQEAgc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdERPTUpJVEJ5
dGVTdHJpbmdOdWxsYWJsZUF0dHJHZXR0ZXIoRXhlY1N0YXRlJiBzdGF0ZSwKIH0KIAogVGVzdERP
TUpJVEJ5dGVTdHJpbmdOdWxsYWJsZUF0dHJET01KSVQ6OlRlc3RET01KSVRCeXRlU3RyaW5nTnVs
bGFibGVBdHRyRE9NSklUKCkKLSAgICA6IEpTQzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIoanNUZXN0
RE9NSklUQnl0ZVN0cmluZ051bGxhYmxlQXR0ciwgbnVsbHB0ciwgSlNUZXN0RE9NSklUOjppbmZv
KCksIChKU0M6OlNwZWNTdHJpbmcgfCBKU0M6OlNwZWNPdGhlcikpCisgICAgOiBKU0M6OkRPTUpJ
VDo6R2V0dGVyU2V0dGVyKGpzVGVzdERPTUpJVEJ5dGVTdHJpbmdOdWxsYWJsZUF0dHIsIG51bGxw
dHIsIEpTVGVzdERPTUpJVDo6aW5mbygpLCBET01KSVQ6OklETFJlc3VsdFR5cGVGaWx0ZXI8SURM
TnVsbGFibGU8SURMQnl0ZVN0cmluZz4+KQogewogfQogCkBAIC0xMDkzLDcgKzExMTMsNyBAQCBz
dGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0RE9NSklUVXN2U3RyaW5nTnVsbGFibGVBdHRyR2V0
dGVyKEV4ZWNTdGF0ZSYgc3RhdGUsCiB9CiAKIFRlc3RET01KSVRVc3ZTdHJpbmdOdWxsYWJsZUF0
dHJET01KSVQ6OlRlc3RET01KSVRVc3ZTdHJpbmdOdWxsYWJsZUF0dHJET01KSVQoKQotICAgIDog
SlNDOjpET01KSVQ6OkdldHRlclNldHRlcihqc1Rlc3RET01KSVRVc3ZTdHJpbmdOdWxsYWJsZUF0
dHIsIG51bGxwdHIsIEpTVGVzdERPTUpJVDo6aW5mbygpLCAoSlNDOjpTcGVjU3RyaW5nIHwgSlND
OjpTcGVjT3RoZXIpKQorICAgIDogSlNDOjpET01KSVQ6OkdldHRlclNldHRlcihqc1Rlc3RET01K
SVRVc3ZTdHJpbmdOdWxsYWJsZUF0dHIsIG51bGxwdHIsIEpTVGVzdERPTUpJVDo6aW5mbygpLCBE
T01KSVQ6OklETFJlc3VsdFR5cGVGaWx0ZXI8SURMTnVsbGFibGU8SURMVVNWU3RyaW5nPj4pCiB7
CiB9CiAKQEAgLTExMjAsNyArMTE0MCw3IEBAIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RE
T01KSVROb2RlTnVsbGFibGVBdHRyR2V0dGVyKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVGVzCiB9CiAK
IFRlc3RET01KSVROb2RlTnVsbGFibGVBdHRyRE9NSklUOjpUZXN0RE9NSklUTm9kZU51bGxhYmxl
QXR0ckRPTUpJVCgpCi0gICAgOiBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVyKGpzVGVzdERPTUpJ
VE5vZGVOdWxsYWJsZUF0dHIsIG51bGxwdHIsIEpTVGVzdERPTUpJVDo6aW5mbygpLCBTcGVjSGVh
cFRvcCkKKyAgICA6IEpTQzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIoanNUZXN0RE9NSklUTm9kZU51
bGxhYmxlQXR0ciwgbnVsbHB0ciwgSlNUZXN0RE9NSklUOjppbmZvKCksIERPTUpJVDo6SURMUmVz
dWx0VHlwZUZpbHRlcjxJRExOdWxsYWJsZTxJRExJbnRlcmZhY2U8Tm9kZT4+PikKIHsKIH0KIApA
QCAtMTE1OSw2ICsxMTc5LDM5IEBAIEpTVmFsdWUgSlNUZXN0RE9NSklUOjpnZXRDb25zdHJ1Y3Rv
cihWTSYgdm0sIGNvbnN0IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiAgICAgcmV0dXJu
IGdldERPTUNvbnN0cnVjdG9yPEpTVGVzdERPTUpJVENvbnN0cnVjdG9yPih2bSwgKmpzQ2FzdDxj
b25zdCBKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCkpOwogfQogCitzdGF0aWMgaW5s
aW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0RE9NSklUUHJvdG90eXBlRnVuY3Rpb25HZXRB
dHRyaWJ1dGVDYWxsZXIoSlNDOjpFeGVjU3RhdGUqLCBKU1Rlc3RET01KSVQqLCBKU0M6OlRocm93
U2NvcGUmKTsKKworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RET01KSVRQcm90
b3R5cGVGdW5jdGlvbkdldEF0dHJpYnV0ZShFeGVjU3RhdGUqIHN0YXRlKQoreworICAgIHJldHVy
biBCaW5kaW5nQ2FsbGVyPEpTVGVzdERPTUpJVD46OmNhbGxPcGVyYXRpb248anNUZXN0RE9NSklU
UHJvdG90eXBlRnVuY3Rpb25HZXRBdHRyaWJ1dGVDYWxsZXI+KHN0YXRlLCAiZ2V0QXR0cmlidXRl
Iik7Cit9CisKK3N0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RET01KSVRQ
cm90b3R5cGVGdW5jdGlvbkdldEF0dHJpYnV0ZUNhbGxlcihKU0M6OkV4ZWNTdGF0ZSogc3RhdGUs
IEpTVGVzdERPTUpJVCogY2FzdGVkVGhpcywgSlNDOjpUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQor
eworICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUp
OworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CisgICAgaWYgKFVOTElL
RUxZKHN0YXRlLT5hcmd1bWVudENvdW50KCkgPCAxKSkKKyAgICAgICAgcmV0dXJuIHRocm93Vk1F
cnJvcihzdGF0ZSwgdGhyb3dTY29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3Rh
dGUpKTsKKyAgICBhdXRvIG5hbWUgPSBjb252ZXJ0PElETERPTVN0cmluZz4oKnN0YXRlLCBzdGF0
ZS0+dW5jaGVja2VkQXJndW1lbnQoMCksIFN0cmluZ0NvbnZlcnNpb25Db25maWd1cmF0aW9uOjpO
b3JtYWwpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFs
dWUoKSk7CisgICAgSlNWYWx1ZSByZXN1bHQgPSB0b0pTPElETE51bGxhYmxlPElETERPTVN0cmlu
Zz4+KCpzdGF0ZSwgaW1wbC5nZXRBdHRyaWJ1dGUoV1RGTW92ZShuYW1lKSkpOworICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKK30KKworSlNDOjpFbmNvZGVkSlNWYWx1ZSB1bnNh
ZmVKc1Rlc3RET01KSVRQcm90b3R5cGVGdW5jdGlvbkdldEF0dHJpYnV0ZShKU0M6OkV4ZWNTdGF0
ZSogc3RhdGUsIEpTVGVzdERPTUpJVCogY2FzdGVkVGhpcywgRE9NSklUOjpJRExKU0FyZ3VtZW50
VHlwZTxJRExET01TdHJpbmc+IGVuY29kZWROYW1lKQoreworICAgIFVOVVNFRF9QQVJBTShzdGF0
ZSk7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgSlNDOjpOYXRpdmVDYWxsRnJhbWVU
cmFjZXIgdHJhY2VyKCZ2bSwgc3RhdGUpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7
CisgICAgYXV0byBuYW1lID0gRE9NSklUOjpEaXJlY3RDb252ZXJ0ZXI8SURMRE9NU3RyaW5nPjo6
ZGlyZWN0Q29udmVydDxTdHJpbmdDb252ZXJzaW9uQ29uZmlndXJhdGlvbjo6Tm9ybWFsPigqc3Rh
dGUsIGVuY29kZWROYW1lKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVu
Y29kZWRKU1ZhbHVlKCkpOworICAgIEpTVmFsdWUgcmVzdWx0ID0gdG9KUzxJRExOdWxsYWJsZTxJ
RExET01TdHJpbmc+Pigqc3RhdGUsIGltcGwuZ2V0QXR0cmlidXRlKFdURk1vdmUobmFtZSkpKTsK
KyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7Cit9CisKIHZvaWQgSlNUZXN0RE9N
SklUOjp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiB7
CiAgICAgYXV0byogdGhpc09iamVjdCA9IGpzQ2FzdDxKU1Rlc3RET01KSVQqPihjZWxsKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0RE9NSklU
LmlkbCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0RE9NSklULmlk
bAppbmRleCBiZTdlZDA0ZmY2M2RlNjg2YmM4NzY0ODI4MmI2YWFmNjRjMjc3M2U3Li5hNTMxNDg4
ZGM4MWMxYjg3N2YwZWUzZjk0ZjhhYWIzOGFhNjk0MzliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdERPTUpJVC5pZGwKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RET01KSVQuaWRsCkBAIC02Myw0ICs2Myw2
IEBAIGludGVyZmFjZSBUZXN0RE9NSklUIDogTm9kZSB7CiAgICAgW0RPTUpJVF0gcmVhZG9ubHkg
YXR0cmlidXRlIEJ5dGVTdHJpbmc/IGJ5dGVTdHJpbmdOdWxsYWJsZUF0dHI7CiAgICAgW0RPTUpJ
VF0gcmVhZG9ubHkgYXR0cmlidXRlIFVTVlN0cmluZz8gdXN2U3RyaW5nTnVsbGFibGVBdHRyOwog
ICAgIFtET01KSVRdIHJlYWRvbmx5IGF0dHJpYnV0ZSBOb2RlPyBub2RlTnVsbGFibGVBdHRyOwor
CisgICAgW0RPTUpJVD1TaWduYXR1cmVdIERPTVN0cmluZz8gZ2V0QXR0cmlidXRlKERPTVN0cmlu
ZyBuYW1lKTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5pZGwg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5pZGwKaW5kZXggZTQyZDJkNGQ4MWYyY2JjMjVi
YjYxN2E4ZjZkMzAyNmFmNWJjODRlOC4uYmZjYzJhYTM2NDY3OTc5ZTAyZDU3MDI3NzEwNTUyZjZi
ZmU2NjcyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaWRsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmlkbApAQCAtMjYsMTcgKzI2LDE3IEBACiBdIGlu
dGVyZmFjZSBFbGVtZW50IDogTm9kZSB7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmlu
Zz8gdGFnTmFtZTsKIAotICAgIERPTVN0cmluZz8gZ2V0QXR0cmlidXRlKERPTVN0cmluZyBuYW1l
KTsKKyAgICBbRE9NSklUPVNpZ25hdHVyZV0gRE9NU3RyaW5nPyBnZXRBdHRyaWJ1dGUoRE9NU3Ry
aW5nIG5hbWUpOwogCiAgICAgW0NFUmVhY3Rpb25zLCBNYXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCBz
ZXRBdHRyaWJ1dGUoRE9NU3RyaW5nIG5hbWUsIERPTVN0cmluZyB2YWx1ZSk7CiAKICAgICBbQ0VS
ZWFjdGlvbnNdIHZvaWQgcmVtb3ZlQXR0cmlidXRlKERPTVN0cmluZyBuYW1lKTsKLSAgICBBdHRy
PyBnZXRBdHRyaWJ1dGVOb2RlKERPTVN0cmluZyBuYW1lKTsKKyAgICBbRE9NSklUPVNpZ25hdHVy
ZV0gQXR0cj8gZ2V0QXR0cmlidXRlTm9kZShET01TdHJpbmcgbmFtZSk7CiAKICAgICBbQ0VSZWFj
dGlvbnMsIE1heVRocm93RXhjZXB0aW9uXSBBdHRyPyBzZXRBdHRyaWJ1dGVOb2RlKEF0dHIgbmV3
QXR0cik7CiAgICAgW0NFUmVhY3Rpb25zLCBNYXlUaHJvd0V4Y2VwdGlvbl0gQXR0ciByZW1vdmVB
dHRyaWJ1dGVOb2RlKEF0dHIgb2xkQXR0cik7CiAKLSAgICBIVE1MQ29sbGVjdGlvbiBnZXRFbGVt
ZW50c0J5VGFnTmFtZShET01TdHJpbmcgbmFtZSk7CisgICAgW0RPTUpJVD1TaWduYXR1cmVdIEhU
TUxDb2xsZWN0aW9uIGdldEVsZW1lbnRzQnlUYWdOYW1lKERPTVN0cmluZyBuYW1lKTsKIAogICAg
IHJlYWRvbmx5IGF0dHJpYnV0ZSBOYW1lZE5vZGVNYXAgYXR0cmlidXRlczsKICAgICBib29sZWFu
IGhhc0F0dHJpYnV0ZXMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbWppdC9ET01K
SVRBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbWppdC9ET01K
SVRBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggODNmYmE4OTcxM2I4NjYzZDRkOGYyN2VkY2JmNzRhZmU2MzE4MmQzMS4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb21qaXQv
RE9NSklUQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw3MCAr
MCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQot
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
Ci0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lu
Y2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkRPTUpJVEFic3RyYWN0SGVhcFJlcG9zaXRvcnku
aCIKLQotI2luY2x1ZGUgPGRvbWppdC9ET01KSVRBYnN0cmFjdEhlYXAuaD4KLSNpbmNsdWRlIDx3
dGYvRGF0YUxvZy5oPgotI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgotCi0jaWYgRU5B
QkxFKEpJVCkKLQotbmFtZXNwYWNlIFdlYkNvcmUgeyBuYW1lc3BhY2UgRE9NSklUIHsKLQotc3Rh
dGljIGNvbnN0IGJvb2wgdmVyYm9zZSA9IGZhbHNlOwotCi1BYnN0cmFjdEhlYXBSZXBvc2l0b3J5
OjpBYnN0cmFjdEhlYXBSZXBvc2l0b3J5KCkKLXsKLSAgICBKU0M6OkRPTUpJVDo6QWJzdHJhY3RI
ZWFwIERPTUhlYXAoIkRPTSIpOwotI2RlZmluZSBET01KSVRfREVGSU5FX0hFQVAobmFtZSwgcGFy
ZW50KSBKU0M6OkRPTUpJVDo6QWJzdHJhY3RIZWFwIG5hbWUjI0hlYXAoI25hbWUpOwotICAgIERP
TUpJVF9BQlNUUkFDVF9IRUFQX0xJU1QoRE9NSklUX0RFRklORV9IRUFQKQotI3VuZGVmIERPTUpJ
VF9ERUZJTkVfSEVBUAotCi0jZGVmaW5lIERPTUpJVF9JTklUSUFMSVpFX0hFQVAobmFtZSwgcGFy
ZW50KSBuYW1lIyNIZWFwLnNldFBhcmVudCgmcGFyZW50IyNIZWFwKTsKLSAgICBET01KSVRfQUJT
VFJBQ1RfSEVBUF9MSVNUKERPTUpJVF9JTklUSUFMSVpFX0hFQVApCi0jdW5kZWYgRE9NSklUX0lO
SVRJQUxJWkVfSEVBUAotCi0gICAgRE9NSGVhcC5jb21wdXRlKDApOwotCi0jZGVmaW5lIERPTUpJ
VF9JTklUSUFMSVpFX01FTUJFUihuYW1lLCBwYXJlbnQpIG5hbWUgPSBuYW1lIyNIZWFwLnJhbmdl
KCk7Ci0gICAgRE9NSklUX0FCU1RSQUNUX0hFQVBfTElTVChET01KSVRfSU5JVElBTElaRV9NRU1C
RVIpCi0jdW5kZWYgRE9NSklUX0lOSVRJQUxJWkVfTUVNQkVSCi0KLSAgICBpZiAodmVyYm9zZSkg
ewotICAgICAgICBkYXRhTG9nKCJET01KSVQgSGVhcCBSZXBvc2l0b3J5OlxuIik7Ci0gICAgICAg
IERPTUhlYXAuZGVlcER1bXAoV1RGOjpkYXRhRmlsZSgpKTsKLSAgICB9Ci19Ci0KLWNvbnN0IEFi
c3RyYWN0SGVhcFJlcG9zaXRvcnkmIEFic3RyYWN0SGVhcFJlcG9zaXRvcnk6OnNoYXJlZCgpCi17
Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEFic3RyYWN0SGVhcFJlcG9zaXRvcnk+IHJlcG9z
aXRvcnk7Ci0gICAgcmV0dXJuIHJlcG9zaXRvcnkuZ2V0KCk7Ci19Ci0KLX0gfQotCi0jZW5kaWYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbWppdC9ET01KSVRBYnN0cmFjdEhlYXBSZXBv
c2l0b3J5LmggYi9Tb3VyY2UvV2ViQ29yZS9kb21qaXQvRE9NSklUQWJzdHJhY3RIZWFwUmVwb3Np
dG9yeS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4MTkwYTFhOTRiYmM3OWRlNWYy
ZTNiZWQwOTk4MzQ3OWZhNGJkNjU2Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbWppdC9ET01KSVRBYnN0cmFjdEhlYXBSZXBv
c2l0b3J5LmgKKysrIC9kZXYvbnVsbApAQCAtMSw2NiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0
IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0g
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0g
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpbmNsdWRlIDxk
b21qaXQvRE9NSklUSGVhcFJhbmdlLmg+Ci0jaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+
Ci0jaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+Ci0KLSNpZiBFTkFCTEUoSklUKQotCi1uYW1l
c3BhY2UgV2ViQ29yZSB7IG5hbWVzcGFjZSBET01KSVQgewotCi0vLyBEZXNjcmliZSB5b3VyIGFi
c3RyYWN0IGhlYXAgaGllcmFyY2h5IGhlcmUuCi0vLyBWKEFic3RyYWN0SGVhcE5hbWUsIFBhcmVu
dCkKLSNkZWZpbmUgRE9NSklUX0FCU1RSQUNUX0hFQVBfTElTVChWKSBcCi0gICAgVihOb2RlLCBE
T00pIFwKLSAgICBWKE5vZGVfZmlyc3RDaGlsZCwgTm9kZSkgXAotICAgIFYoTm9kZV9sYXN0Q2hp
bGQsIE5vZGUpIFwKLSAgICBWKE5vZGVfcGFyZW50Tm9kZSwgTm9kZSkgXAotICAgIFYoTm9kZV9u
ZXh0U2libGluZywgTm9kZSkgXAotICAgIFYoTm9kZV9wcmV2aW91c1NpYmxpbmcsIE5vZGUpIFwK
LSAgICBWKE5vZGVfb3duZXJEb2N1bWVudCwgTm9kZSkgXAotICAgIFYoRG9jdW1lbnQsIERPTSkg
XAotICAgIFYoRG9jdW1lbnRfZG9jdW1lbnRFbGVtZW50LCBEb2N1bWVudCkgXAotCi0KLWNsYXNz
IEFic3RyYWN0SGVhcFJlcG9zaXRvcnkgewotICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEFic3Ry
YWN0SGVhcFJlcG9zaXRvcnkpOwotcHVibGljOgotICAgIHN0YXRpYyBjb25zdCBBYnN0cmFjdEhl
YXBSZXBvc2l0b3J5JiBzaGFyZWQoKTsKLQotICAgIEpTQzo6RE9NSklUOjpIZWFwUmFuZ2UgRE9N
OwotCi0jZGVmaW5lIERPTUpJVF9ERUZJTkVfTUVNQkVSKG5hbWUsIHBhcmVudCkgSlNDOjpET01K
SVQ6OkhlYXBSYW5nZSBuYW1lOwotICAgIERPTUpJVF9BQlNUUkFDVF9IRUFQX0xJU1QoRE9NSklU
X0RFRklORV9NRU1CRVIpCi0jdW5kZWYgRE9NSklUX0RFRklORV9NRU1CRVIKLQotICAgIEFic3Ry
YWN0SGVhcFJlcG9zaXRvcnkoKTsKLX07Ci0KLX0gfQotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2RvbWppdC9ET01KSVRBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LnlhbWwgYi9T
b3VyY2UvV2ViQ29yZS9kb21qaXQvRE9NSklUQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS55YW1sCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjUyYzU4NDVlMDc4NjcwZGRkYWM5NzcyOTk5Y2NiOGVhN2QwMWJkZjMKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb21qaXQvRE9NSklUQWJzdHJhY3RIZWFwUmVw
b3NpdG9yeS55YW1sCkBAIC0wLDAgKzEsMTEgQEAKK0RPTToKKyAgICBUcmVlOgorICAgICAgICBO
b2RlOgorICAgICAgICAgICAgLSBOb2RlX2ZpcnN0Q2hpbGQKKyAgICAgICAgICAgIC0gTm9kZV9s
YXN0Q2hpbGQKKyAgICAgICAgICAgIC0gTm9kZV9wYXJlbnROb2RlCisgICAgICAgICAgICAtIE5v
ZGVfbmV4dFNpYmxpbmcKKyAgICAgICAgICAgIC0gTm9kZV9wcmV2aW91c1NpYmxpbmcKKyAgICAg
ICAgICAgIC0gTm9kZV9vd25lckRvY3VtZW50CisgICAgICAgIERvY3VtZW50OgorICAgICAgICAg
ICAgLSBEb2N1bWVudF9kb2N1bWVudEVsZW1lbnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2RvbWppdC9ET01KSVRJRExDb252ZXJ0LmggYi9Tb3VyY2UvV2ViQ29yZS9kb21qaXQvRE9NSklU
SURMQ29udmVydC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjVlMDBhYmZjY2I4NzZkZWExODMyZjFjMjBhZWUzZWQ3
OGIxMzY4NDkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb21qaXQvRE9NSklU
SURMQ29udmVydC5oCkBAIC0wLDAgKzEsNDkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UK
KworI2luY2x1ZGUgIklETFR5cGVzLmgiCisjaW5jbHVkZSA8Ynl0ZWNvZGUvU3BlY3VsYXRlZFR5
cGUuaD4KKyNpbmNsdWRlIDxkb21qaXQvRE9NSklUU2lnbmF0dXJlLmg+CisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsgbmFtZXNwYWNlIERPTUpJVCB7CisKK3RlbXBsYXRlPHR5cGVuYW1lIElETFR5cGU+
CitzdHJ1Y3QgRGlyZWN0Q29udmVydGVyOworCit0ZW1wbGF0ZTw+CitzdHJ1Y3QgRGlyZWN0Q29u
dmVydGVyPElETERPTVN0cmluZz4geworICAgIHRlbXBsYXRlPFN0cmluZ0NvbnZlcnNpb25Db25m
aWd1cmF0aW9uPgorICAgIHN0YXRpYyBTdHJpbmcgZGlyZWN0Q29udmVydChKU0M6OkV4ZWNTdGF0
ZSYsIEpTQzo6SlNTdHJpbmcqKTsKK307CisKK3RlbXBsYXRlPD4KK2lubGluZSBTdHJpbmcgRGly
ZWN0Q29udmVydGVyPElETERPTVN0cmluZz46OmRpcmVjdENvbnZlcnQ8U3RyaW5nQ29udmVyc2lv
bkNvbmZpZ3VyYXRpb246Ok5vcm1hbD4oSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBKU0M6OkpTU3Ry
aW5nKiBzdHJpbmcpCit7CisgICAgcmV0dXJuIHN0cmluZy0+dmFsdWUoJnN0YXRlKTsKK30KKwor
fSB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb21qaXQvRE9NSklUSURMVHlwZS5oIGIv
U291cmNlL1dlYkNvcmUvZG9taml0L0RPTUpJVElETFR5cGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ODkxZmJj
NTBlZjRjMmQ3NjU0ZDhlNWQyYmM4ZGVhZTk3NmRmMWFjCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYkNvcmUvZG9taml0L0RPTUpJVElETFR5cGUuaApAQCAtMCwwICsxLDQ3IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJJRExUeXBlcy5oIgorI2luY2x1ZGUg
PGJ5dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsgbmFtZXNw
YWNlIERPTUpJVCB7CisKK3RlbXBsYXRlPHR5cGVuYW1lIElETFR5cGU+CitzdHJ1Y3QgSURMSlNB
cmd1bWVudFR5cGVTZWxlY3Q7CisKK3RlbXBsYXRlPD4gc3RydWN0IElETEpTQXJndW1lbnRUeXBl
U2VsZWN0PElETEJvb2xlYW4+IHsgdHlwZWRlZiBib29sIHR5cGU7IH07Cit0ZW1wbGF0ZTw+IHN0
cnVjdCBJRExKU0FyZ3VtZW50VHlwZVNlbGVjdDxJRExCeXRlPiB7IHR5cGVkZWYgaW50MzJfdCB0
eXBlOyB9OwordGVtcGxhdGU8PiBzdHJ1Y3QgSURMSlNBcmd1bWVudFR5cGVTZWxlY3Q8SURMT2N0
ZXQ+IHsgdHlwZWRlZiBpbnQzMl90IHR5cGU7IH07Cit0ZW1wbGF0ZTw+IHN0cnVjdCBJRExKU0Fy
Z3VtZW50VHlwZVNlbGVjdDxJRExTaG9ydD4geyB0eXBlZGVmIGludDMyX3QgdHlwZTsgfTsKK3Rl
bXBsYXRlPD4gc3RydWN0IElETEpTQXJndW1lbnRUeXBlU2VsZWN0PElETFVuc2lnbmVkU2hvcnQ+
IHsgdHlwZWRlZiBpbnQzMl90IHR5cGU7IH07Cit0ZW1wbGF0ZTw+IHN0cnVjdCBJRExKU0FyZ3Vt
ZW50VHlwZVNlbGVjdDxJRExMb25nPiB7IHR5cGVkZWYgaW50MzJfdCB0eXBlOyB9OwordGVtcGxh
dGU8PiBzdHJ1Y3QgSURMSlNBcmd1bWVudFR5cGVTZWxlY3Q8SURMRE9NU3RyaW5nPiB7IHR5cGVk
ZWYgSlNDOjpKU1N0cmluZyogdHlwZTsgfTsKKwordGVtcGxhdGU8dHlwZW5hbWUgSURMVHlwZT4K
K3VzaW5nIElETEpTQXJndW1lbnRUeXBlID0gdHlwZW5hbWUgSURMSlNBcmd1bWVudFR5cGVTZWxl
Y3Q8SURMVHlwZT46OnR5cGU7CisKK30gfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9t
aml0L0RPTUpJVElETFR5cGVGaWx0ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbWppdC9ET01KSVRJ
RExUeXBlRmlsdGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGFmNjM2ZGU5YjZmZTQxYzM2Yzc3MDg3MDI0NmU4
N2FiZmZiNzgwMgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbWppdC9ET01K
SVRJRExUeXBlRmlsdGVyLmgKQEAgLTAsMCArMSw3MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEg
b25jZQorCisjaW5jbHVkZSA8Ynl0ZWNvZGUvU3BlY3VsYXRlZFR5cGUuaD4KKworbmFtZXNwYWNl
IFdlYkNvcmUgeyBuYW1lc3BhY2UgRE9NSklUIHsKKwordGVtcGxhdGU8dHlwZW5hbWUgSURMVHlw
ZT4KK3N0cnVjdCBJRExBcmd1bWVudFR5cGVGaWx0ZXJTZWxlY3Q7CisKK3RlbXBsYXRlPD4gc3Ry
dWN0IElETEFyZ3VtZW50VHlwZUZpbHRlclNlbGVjdDxJRExCb29sZWFuPiB7IHN0YXRpYyBjb25z
dGV4cHIgSlNDOjpTcGVjdWxhdGVkVHlwZSB2YWx1ZSA9IEpTQzo6U3BlY0Jvb2xlYW47IH07Cit0
ZW1wbGF0ZTw+IHN0cnVjdCBJRExBcmd1bWVudFR5cGVGaWx0ZXJTZWxlY3Q8SURMQnl0ZT4geyBz
dGF0aWMgY29uc3RleHByIEpTQzo6U3BlY3VsYXRlZFR5cGUgdmFsdWUgPSBKU0M6OlNwZWNJbnQz
Mk9ubHk7IH07Cit0ZW1wbGF0ZTw+IHN0cnVjdCBJRExBcmd1bWVudFR5cGVGaWx0ZXJTZWxlY3Q8
SURMT2N0ZXQ+IHsgc3RhdGljIGNvbnN0ZXhwciBKU0M6OlNwZWN1bGF0ZWRUeXBlIHZhbHVlID0g
SlNDOjpTcGVjSW50MzJPbmx5OyB9OwordGVtcGxhdGU8PiBzdHJ1Y3QgSURMQXJndW1lbnRUeXBl
RmlsdGVyU2VsZWN0PElETFNob3J0PiB7IHN0YXRpYyBjb25zdGV4cHIgSlNDOjpTcGVjdWxhdGVk
VHlwZSB2YWx1ZSA9IEpTQzo6U3BlY0ludDMyT25seTsgfTsKK3RlbXBsYXRlPD4gc3RydWN0IElE
TEFyZ3VtZW50VHlwZUZpbHRlclNlbGVjdDxJRExVbnNpZ25lZFNob3J0PiB7IHN0YXRpYyBjb25z
dGV4cHIgSlNDOjpTcGVjdWxhdGVkVHlwZSB2YWx1ZSA9IEpTQzo6U3BlY0ludDMyT25seTsgfTsK
K3RlbXBsYXRlPD4gc3RydWN0IElETEFyZ3VtZW50VHlwZUZpbHRlclNlbGVjdDxJRExMb25nPiB7
IHN0YXRpYyBjb25zdGV4cHIgSlNDOjpTcGVjdWxhdGVkVHlwZSB2YWx1ZSA9IEpTQzo6U3BlY0lu
dDMyT25seTsgfTsKK3RlbXBsYXRlPD4gc3RydWN0IElETEFyZ3VtZW50VHlwZUZpbHRlclNlbGVj
dDxJRExET01TdHJpbmc+IHsgc3RhdGljIGNvbnN0ZXhwciBKU0M6OlNwZWN1bGF0ZWRUeXBlIHZh
bHVlID0gSlNDOjpTcGVjU3RyaW5nOyB9OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBJRExUeXBlPgor
Y29uc3RleHByIEpTQzo6U3BlY3VsYXRlZFR5cGUgSURMQXJndW1lbnRUeXBlRmlsdGVyID0gSURM
QXJndW1lbnRUeXBlRmlsdGVyU2VsZWN0PElETFR5cGU+Ojp2YWx1ZTsKKwordGVtcGxhdGU8dHlw
ZW5hbWUgSURMVHlwZT4KK2NvbnN0ZXhwciBKU0M6OlNwZWN1bGF0ZWRUeXBlIElETFJlc3VsdFR5
cGVGaWx0ZXIgPSBKU0M6OlNwZWNIZWFwVG9wOworCit0ZW1wbGF0ZTw+IGNvbnN0ZXhwciBKU0M6
OlNwZWN1bGF0ZWRUeXBlIElETFJlc3VsdFR5cGVGaWx0ZXI8SURMQW55PiA9IEpTQzo6U3BlY0hl
YXBUb3A7Cit0ZW1wbGF0ZTw+IGNvbnN0ZXhwciBKU0M6OlNwZWN1bGF0ZWRUeXBlIElETFJlc3Vs
dFR5cGVGaWx0ZXI8SURMQm9vbGVhbj4gPSBKU0M6OlNwZWNCb29sZWFuOwordGVtcGxhdGU8PiBj
b25zdGV4cHIgSlNDOjpTcGVjdWxhdGVkVHlwZSBJRExSZXN1bHRUeXBlRmlsdGVyPElETEJ5dGU+
ID0gSlNDOjpTcGVjSW50MzJPbmx5OwordGVtcGxhdGU8PiBjb25zdGV4cHIgSlNDOjpTcGVjdWxh
dGVkVHlwZSBJRExSZXN1bHRUeXBlRmlsdGVyPElETE9jdGV0PiA9IEpTQzo6U3BlY0ludDMyT25s
eTsKK3RlbXBsYXRlPD4gY29uc3RleHByIEpTQzo6U3BlY3VsYXRlZFR5cGUgSURMUmVzdWx0VHlw
ZUZpbHRlcjxJRExTaG9ydD4gPSBKU0M6OlNwZWNJbnQzMk9ubHk7Cit0ZW1wbGF0ZTw+IGNvbnN0
ZXhwciBKU0M6OlNwZWN1bGF0ZWRUeXBlIElETFJlc3VsdFR5cGVGaWx0ZXI8SURMVW5zaWduZWRT
aG9ydD4gPSBKU0M6OlNwZWNJbnQzMk9ubHk7Cit0ZW1wbGF0ZTw+IGNvbnN0ZXhwciBKU0M6OlNw
ZWN1bGF0ZWRUeXBlIElETFJlc3VsdFR5cGVGaWx0ZXI8SURMTG9uZz4gPSBKU0M6OlNwZWNJbnQz
Mk9ubHk7Cit0ZW1wbGF0ZTw+IGNvbnN0ZXhwciBKU0M6OlNwZWN1bGF0ZWRUeXBlIElETFJlc3Vs
dFR5cGVGaWx0ZXI8SURMVW5zaWduZWRMb25nPiA9IEpTQzo6U3BlY0J5dGVjb2RlTnVtYmVyOwor
dGVtcGxhdGU8PiBjb25zdGV4cHIgSlNDOjpTcGVjdWxhdGVkVHlwZSBJRExSZXN1bHRUeXBlRmls
dGVyPElETExvbmdMb25nPiA9IEpTQzo6U3BlY0J5dGVjb2RlTnVtYmVyOwordGVtcGxhdGU8PiBj
b25zdGV4cHIgSlNDOjpTcGVjdWxhdGVkVHlwZSBJRExSZXN1bHRUeXBlRmlsdGVyPElETFVuc2ln
bmVkTG9uZ0xvbmc+ID0gSlNDOjpTcGVjQnl0ZWNvZGVOdW1iZXI7Cit0ZW1wbGF0ZTw+IGNvbnN0
ZXhwciBKU0M6OlNwZWN1bGF0ZWRUeXBlIElETFJlc3VsdFR5cGVGaWx0ZXI8SURMRmxvYXQ+ID0g
SlNDOjpTcGVjQnl0ZWNvZGVOdW1iZXI7Cit0ZW1wbGF0ZTw+IGNvbnN0ZXhwciBKU0M6OlNwZWN1
bGF0ZWRUeXBlIElETFJlc3VsdFR5cGVGaWx0ZXI8SURMVW5yZXN0cmljdGVkRmxvYXQ+ID0gSlND
OjpTcGVjQnl0ZWNvZGVOdW1iZXI7Cit0ZW1wbGF0ZTw+IGNvbnN0ZXhwciBKU0M6OlNwZWN1bGF0
ZWRUeXBlIElETFJlc3VsdFR5cGVGaWx0ZXI8SURMRG91YmxlPiA9IEpTQzo6U3BlY0J5dGVjb2Rl
TnVtYmVyOwordGVtcGxhdGU8PiBjb25zdGV4cHIgSlNDOjpTcGVjdWxhdGVkVHlwZSBJRExSZXN1
bHRUeXBlRmlsdGVyPElETFVucmVzdHJpY3RlZERvdWJsZT4gPSBKU0M6OlNwZWNCeXRlY29kZU51
bWJlcjsKK3RlbXBsYXRlPD4gY29uc3RleHByIEpTQzo6U3BlY3VsYXRlZFR5cGUgSURMUmVzdWx0
VHlwZUZpbHRlcjxJRExET01TdHJpbmc+ID0gSlNDOjpTcGVjU3RyaW5nOwordGVtcGxhdGU8PiBj
b25zdGV4cHIgSlNDOjpTcGVjdWxhdGVkVHlwZSBJRExSZXN1bHRUeXBlRmlsdGVyPElETEJ5dGVT
dHJpbmc+ID0gSlNDOjpTcGVjU3RyaW5nOwordGVtcGxhdGU8PiBjb25zdGV4cHIgSlNDOjpTcGVj
dWxhdGVkVHlwZSBJRExSZXN1bHRUeXBlRmlsdGVyPElETFVTVlN0cmluZz4gPSBKU0M6OlNwZWNT
dHJpbmc7CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+Citjb25zdGV4cHIgSlNDOjpTcGVjdWxhdGVk
VHlwZSBJRExSZXN1bHRUeXBlRmlsdGVyPElETE51bGxhYmxlPFQ+PiA9IEpTQzo6U3BlY090aGVy
IHwgSURMUmVzdWx0VHlwZUZpbHRlcjxUPjsKKworfSB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9kb21qaXQvSlNEb2N1bWVudERPTUpJVC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb21qaXQv
SlNEb2N1bWVudERPTUpJVC5jcHAKaW5kZXggOWI0OGQ5ZmRhNThhNjJkMDdmYjIzYWFiNDU2YmY5
NGI3ZWQ4ZmMyZi4uYmJmZWU3ZGM0YmI3ODJlNzNjZjI3Yzk3N2JjMTgyOTRhNTk0YjZkOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9taml0L0pTRG9jdW1lbnRET01KSVQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbWppdC9KU0RvY3VtZW50RE9NSklULmNwcApAQCAtNDgsNyArNDgs
NiBAQCBSZWY8SlNDOjpET01KSVQ6OlBhdGNocG9pbnQ+IERvY3VtZW50RG9jdW1lbnRFbGVtZW50
RE9NSklUOjpjaGVja0RPTSgpCiAKIFJlZjxKU0M6OkRPTUpJVDo6Q2FsbERPTUdldHRlclBhdGNo
cG9pbnQ+IERvY3VtZW50RG9jdW1lbnRFbGVtZW50RE9NSklUOjpjYWxsRE9NR2V0dGVyKCkKIHsK
LSAgICBjb25zdCBhdXRvJiBoZWFwID0gRE9NSklUOjpBYnN0cmFjdEhlYXBSZXBvc2l0b3J5Ojpz
aGFyZWQoKTsKICAgICBSZWY8SlNDOjpET01KSVQ6OkNhbGxET01HZXR0ZXJQYXRjaHBvaW50PiBw
YXRjaHBvaW50ID0gSlNDOjpET01KSVQ6OkNhbGxET01HZXR0ZXJQYXRjaHBvaW50OjpjcmVhdGUo
KTsKICAgICBwYXRjaHBvaW50LT5udW1HUFNjcmF0Y2hSZWdpc3RlcnMgPSAxOwogICAgIHBhdGNo
cG9pbnQtPnNldEdlbmVyYXRvcihbPV0oQ0NhbGxIZWxwZXJzJiBqaXQsIEpTQzo6RE9NSklUOjpQ
YXRjaHBvaW50UGFyYW1zJiBwYXJhbXMpIHsKQEAgLTcwLDcgKzY5LDcgQEAgUmVmPEpTQzo6RE9N
SklUOjpDYWxsRE9NR2V0dGVyUGF0Y2hwb2ludD4gRG9jdW1lbnREb2N1bWVudEVsZW1lbnRET01K
SVQ6OmNhbGxET00KIAogICAgICAgICByZXR1cm4gQ0NhbGxIZWxwZXJzOjpKdW1wTGlzdCgpOwog
ICAgIH0pOwotICAgIHBhdGNocG9pbnQtPmVmZmVjdCA9IEpTQzo6RE9NSklUOjpFZmZlY3Q6OmZv
ckRlZihoZWFwLkRvY3VtZW50X2RvY3VtZW50RWxlbWVudCk7CisgICAgcGF0Y2hwb2ludC0+ZWZm
ZWN0ID0gSlNDOjpET01KSVQ6OkVmZmVjdDo6Zm9yRGVmKERPTUpJVDo6QWJzdHJhY3RIZWFwUmVw
b3NpdG9yeTo6RG9jdW1lbnRfZG9jdW1lbnRFbGVtZW50KTsKICAgICByZXR1cm4gcGF0Y2hwb2lu
dDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9taml0L0pTTm9kZURPTUpJVC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9kb21qaXQvSlNOb2RlRE9NSklULmNwcAppbmRleCAxZDc5MDFl
YzQxZDdhY2VmMWQwZDc4ZjYxMzI2ZmJlOGExM2E5MWJmLi5kYjMxMGVhMzQ1Mjg0OTE0MjQyOGQz
ZDYxNmY4MWIyYzY3YzUxNjU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb21qaXQvSlNO
b2RlRE9NSklULmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb21qaXQvSlNOb2RlRE9NSklULmNw
cApAQCAtODMsOSArODMsOCBAQCBSZWY8SlNDOjpET01KSVQ6OlBhdGNocG9pbnQ+IE5vZGVGaXJz
dENoaWxkRE9NSklUOjpjaGVja0RPTSgpCiAKIFJlZjxKU0M6OkRPTUpJVDo6Q2FsbERPTUdldHRl
clBhdGNocG9pbnQ+IE5vZGVGaXJzdENoaWxkRE9NSklUOjpjYWxsRE9NR2V0dGVyKCkKIHsKLSAg
ICBjb25zdCBhdXRvJiBoZWFwID0gRE9NSklUOjpBYnN0cmFjdEhlYXBSZXBvc2l0b3J5OjpzaGFy
ZWQoKTsKICAgICBhdXRvIHBhdGNocG9pbnQgPSBjcmVhdGVDYWxsRE9NR2V0dGVyRm9yT2Zmc2V0
QWNjZXNzPE5vZGU+KENBU1RfT0ZGU0VUKE5vZGUqLCBDb250YWluZXJOb2RlKikgKyBDb250YWlu
ZXJOb2RlOjpmaXJzdENoaWxkTWVtb3J5T2Zmc2V0KCksIElzQ29udGFpbmVyR3VhcmRSZXF1aXJl
bWVudDo6UmVxdWlyZWQpOwotICAgIHBhdGNocG9pbnQtPmVmZmVjdCA9IEpTQzo6RE9NSklUOjpF
ZmZlY3Q6OmZvckRlZihoZWFwLk5vZGVfZmlyc3RDaGlsZCk7CisgICAgcGF0Y2hwb2ludC0+ZWZm
ZWN0ID0gSlNDOjpET01KSVQ6OkVmZmVjdDo6Zm9yRGVmKERPTUpJVDo6QWJzdHJhY3RIZWFwUmVw
b3NpdG9yeTo6Tm9kZV9maXJzdENoaWxkKTsKICAgICByZXR1cm4gcGF0Y2hwb2ludDsKIH0KIApA
QCAtOTYsOSArOTUsOCBAQCBSZWY8SlNDOjpET01KSVQ6OlBhdGNocG9pbnQ+IE5vZGVMYXN0Q2hp
bGRET01KSVQ6OmNoZWNrRE9NKCkKIAogUmVmPEpTQzo6RE9NSklUOjpDYWxsRE9NR2V0dGVyUGF0
Y2hwb2ludD4gTm9kZUxhc3RDaGlsZERPTUpJVDo6Y2FsbERPTUdldHRlcigpCiB7Ci0gICAgY29u
c3QgYXV0byYgaGVhcCA9IERPTUpJVDo6QWJzdHJhY3RIZWFwUmVwb3NpdG9yeTo6c2hhcmVkKCk7
CiAgICAgYXV0byBwYXRjaHBvaW50ID0gY3JlYXRlQ2FsbERPTUdldHRlckZvck9mZnNldEFjY2Vz
czxOb2RlPihDQVNUX09GRlNFVChOb2RlKiwgQ29udGFpbmVyTm9kZSopICsgQ29udGFpbmVyTm9k
ZTo6bGFzdENoaWxkTWVtb3J5T2Zmc2V0KCksIElzQ29udGFpbmVyR3VhcmRSZXF1aXJlbWVudDo6
UmVxdWlyZWQpOwotICAgIHBhdGNocG9pbnQtPmVmZmVjdCA9IEpTQzo6RE9NSklUOjpFZmZlY3Q6
OmZvckRlZihoZWFwLk5vZGVfbGFzdENoaWxkKTsKKyAgICBwYXRjaHBvaW50LT5lZmZlY3QgPSBK
U0M6OkRPTUpJVDo6RWZmZWN0Ojpmb3JEZWYoRE9NSklUOjpBYnN0cmFjdEhlYXBSZXBvc2l0b3J5
OjpOb2RlX2xhc3RDaGlsZCk7CiAgICAgcmV0dXJuIHBhdGNocG9pbnQ7CiB9CiAKQEAgLTEwOSw5
ICsxMDcsOCBAQCBSZWY8SlNDOjpET01KSVQ6OlBhdGNocG9pbnQ+IE5vZGVOZXh0U2libGluZ0RP
TUpJVDo6Y2hlY2tET00oKQogCiBSZWY8SlNDOjpET01KSVQ6OkNhbGxET01HZXR0ZXJQYXRjaHBv
aW50PiBOb2RlTmV4dFNpYmxpbmdET01KSVQ6OmNhbGxET01HZXR0ZXIoKQogewotICAgIGNvbnN0
IGF1dG8mIGhlYXAgPSBET01KSVQ6OkFic3RyYWN0SGVhcFJlcG9zaXRvcnk6OnNoYXJlZCgpOwog
ICAgIGF1dG8gcGF0Y2hwb2ludCA9IGNyZWF0ZUNhbGxET01HZXR0ZXJGb3JPZmZzZXRBY2Nlc3M8
Tm9kZT4oTm9kZTo6bmV4dFNpYmxpbmdNZW1vcnlPZmZzZXQoKSwgSXNDb250YWluZXJHdWFyZFJl
cXVpcmVtZW50OjpOb3RSZXF1aXJlZCk7Ci0gICAgcGF0Y2hwb2ludC0+ZWZmZWN0ID0gSlNDOjpE
T01KSVQ6OkVmZmVjdDo6Zm9yRGVmKGhlYXAuTm9kZV9uZXh0U2libGluZyk7CisgICAgcGF0Y2hw
b2ludC0+ZWZmZWN0ID0gSlNDOjpET01KSVQ6OkVmZmVjdDo6Zm9yRGVmKERPTUpJVDo6QWJzdHJh
Y3RIZWFwUmVwb3NpdG9yeTo6Tm9kZV9uZXh0U2libGluZyk7CiAgICAgcmV0dXJuIHBhdGNocG9p
bnQ7CiB9CiAKQEAgLTEyMiw5ICsxMTksOCBAQCBSZWY8SlNDOjpET01KSVQ6OlBhdGNocG9pbnQ+
IE5vZGVQcmV2aW91c1NpYmxpbmdET01KSVQ6OmNoZWNrRE9NKCkKIAogUmVmPEpTQzo6RE9NSklU
OjpDYWxsRE9NR2V0dGVyUGF0Y2hwb2ludD4gTm9kZVByZXZpb3VzU2libGluZ0RPTUpJVDo6Y2Fs
bERPTUdldHRlcigpCiB7Ci0gICAgY29uc3QgYXV0byYgaGVhcCA9IERPTUpJVDo6QWJzdHJhY3RI
ZWFwUmVwb3NpdG9yeTo6c2hhcmVkKCk7CiAgICAgYXV0byBwYXRjaHBvaW50ID0gY3JlYXRlQ2Fs
bERPTUdldHRlckZvck9mZnNldEFjY2VzczxOb2RlPihOb2RlOjpwcmV2aW91c1NpYmxpbmdNZW1v
cnlPZmZzZXQoKSwgSXNDb250YWluZXJHdWFyZFJlcXVpcmVtZW50OjpOb3RSZXF1aXJlZCk7Ci0g
ICAgcGF0Y2hwb2ludC0+ZWZmZWN0ID0gSlNDOjpET01KSVQ6OkVmZmVjdDo6Zm9yRGVmKGhlYXAu
Tm9kZV9wcmV2aW91c1NpYmxpbmcpOworICAgIHBhdGNocG9pbnQtPmVmZmVjdCA9IEpTQzo6RE9N
SklUOjpFZmZlY3Q6OmZvckRlZihET01KSVQ6OkFic3RyYWN0SGVhcFJlcG9zaXRvcnk6Ok5vZGVf
cHJldmlvdXNTaWJsaW5nKTsKICAgICByZXR1cm4gcGF0Y2hwb2ludDsKIH0KIApAQCAtMTM1LDkg
KzEzMSw4IEBAIFJlZjxKU0M6OkRPTUpJVDo6UGF0Y2hwb2ludD4gTm9kZVBhcmVudE5vZGVET01K
SVQ6OmNoZWNrRE9NKCkKIAogUmVmPEpTQzo6RE9NSklUOjpDYWxsRE9NR2V0dGVyUGF0Y2hwb2lu
dD4gTm9kZVBhcmVudE5vZGVET01KSVQ6OmNhbGxET01HZXR0ZXIoKQogewotICAgIGNvbnN0IGF1
dG8mIGhlYXAgPSBET01KSVQ6OkFic3RyYWN0SGVhcFJlcG9zaXRvcnk6OnNoYXJlZCgpOwogICAg
IGF1dG8gcGF0Y2hwb2ludCA9IGNyZWF0ZUNhbGxET01HZXR0ZXJGb3JPZmZzZXRBY2Nlc3M8Q29u
dGFpbmVyTm9kZT4oTm9kZTo6cGFyZW50Tm9kZU1lbW9yeU9mZnNldCgpLCBJc0NvbnRhaW5lckd1
YXJkUmVxdWlyZW1lbnQ6Ok5vdFJlcXVpcmVkKTsKLSAgICBwYXRjaHBvaW50LT5lZmZlY3QgPSBK
U0M6OkRPTUpJVDo6RWZmZWN0Ojpmb3JEZWYoaGVhcC5Ob2RlX3BhcmVudE5vZGUpOworICAgIHBh
dGNocG9pbnQtPmVmZmVjdCA9IEpTQzo6RE9NSklUOjpFZmZlY3Q6OmZvckRlZihET01KSVQ6OkFi
c3RyYWN0SGVhcFJlcG9zaXRvcnk6Ok5vZGVfcGFyZW50Tm9kZSk7CiAgICAgcmV0dXJuIHBhdGNo
cG9pbnQ7CiB9CiAKQEAgLTE2OSw3ICsxNjQsNiBAQCBSZWY8SlNDOjpET01KSVQ6OlBhdGNocG9p
bnQ+IE5vZGVPd25lckRvY3VtZW50RE9NSklUOjpjaGVja0RPTSgpCiAKIFJlZjxKU0M6OkRPTUpJ
VDo6Q2FsbERPTUdldHRlclBhdGNocG9pbnQ+IE5vZGVPd25lckRvY3VtZW50RE9NSklUOjpjYWxs
RE9NR2V0dGVyKCkKIHsKLSAgICBjb25zdCBhdXRvJiBoZWFwID0gRE9NSklUOjpBYnN0cmFjdEhl
YXBSZXBvc2l0b3J5OjpzaGFyZWQoKTsKICAgICBSZWY8SlNDOjpET01KSVQ6OkNhbGxET01HZXR0
ZXJQYXRjaHBvaW50PiBwYXRjaHBvaW50ID0gSlNDOjpET01KSVQ6OkNhbGxET01HZXR0ZXJQYXRj
aHBvaW50OjpjcmVhdGUoKTsKICAgICBwYXRjaHBvaW50LT5udW1HUFNjcmF0Y2hSZWdpc3RlcnMg
PSAxOwogICAgIHBhdGNocG9pbnQtPnNldEdlbmVyYXRvcihbPV0oQ0NhbGxIZWxwZXJzJiBqaXQs
IEpTQzo6RE9NSklUOjpQYXRjaHBvaW50UGFyYW1zJiBwYXJhbXMpIHsKQEAgLTE5MSw3ICsxODUs
NyBAQCBSZWY8SlNDOjpET01KSVQ6OkNhbGxET01HZXR0ZXJQYXRjaHBvaW50PiBOb2RlT3duZXJE
b2N1bWVudERPTUpJVDo6Y2FsbERPTUdldHRlcgogICAgICAgICBkb25lLmxpbmsoJmppdCk7CiAg
ICAgICAgIHJldHVybiBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0KCk7CiAgICAgfSk7Ci0gICAgcGF0
Y2hwb2ludC0+ZWZmZWN0ID0gSlNDOjpET01KSVQ6OkVmZmVjdDo6Zm9yRGVmKGhlYXAuTm9kZV9v
d25lckRvY3VtZW50KTsKKyAgICBwYXRjaHBvaW50LT5lZmZlY3QgPSBKU0M6OkRPTUpJVDo6RWZm
ZWN0Ojpmb3JEZWYoRE9NSklUOjpBYnN0cmFjdEhlYXBSZXBvc2l0b3J5OjpOb2RlX293bmVyRG9j
dW1lbnQpOwogICAgIHJldHVybiBwYXRjaHBvaW50OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9kb21qaXQvZ2VuZXJhdGUtYWJzdHJhY3QtaGVhcC5yYiBiL1NvdXJjZS9XZWJDb3Jl
L2RvbWppdC9nZW5lcmF0ZS1hYnN0cmFjdC1oZWFwLnJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI3NDEyZTg1ZDY5
ZjQ5MWEyZWFhYmFhNjE3OGYxYjI1YTAyZDA5YjQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9kb21qaXQvZ2VuZXJhdGUtYWJzdHJhY3QtaGVhcC5yYgpAQCAtMCwwICsxLDE2NSBA
QAorIyEvdXNyL2Jpbi9lbnYgcnVieQorIyAtKi0gY29kaW5nOiB1dGYtOCAtKi0KKyMgQ29weXJp
Z2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworIyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyMgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorIyBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorIyBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorIyBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyMg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyMgQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyMgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorIyBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK3JlcXVpcmUgInlhbWwiCisKK2NsYXNzIEhl
YXBSYW5nZQorICAgIGF0dHJfcmVhZGVyIDpmaXJzdCwgOmxhc3QKKyAgICBkZWYgaW5pdGlhbGl6
ZShmaXJzdCwgbGFzdCkKKyAgICAgICAgQGZpcnN0ID0gZmlyc3QKKyAgICAgICAgQGxhc3QgPSBs
YXN0CisgICAgZW5kCitlbmQKKworY2xhc3MgQWJzdHJhY3RIZWFwCisgICAgYXR0cl9yZWFkZXIg
OnJhbmdlLCA6bmFtZSwgOnBhcmVudAorICAgIGRlZiBpbml0aWFsaXplKG5hbWUsIHRyZWUpCisg
ICAgICAgIEBuYW1lID0gbmFtZQorICAgICAgICBAcGFyZW50ID0gbmlsCisgICAgICAgIGlmIHRy
ZWUubmlsPworICAgICAgICAgICAgQGNoaWxkcmVuID0gW10KKyAgICAgICAgZWxzZQorICAgICAg
ICAgICAgQGNoaWxkcmVuID0gdHJlZS5tYXAge3xrZXksIHZhbHVlfCBBYnN0cmFjdEhlYXAubmV3
KGtleSwgdmFsdWUpIH0KKyAgICAgICAgZW5kCisgICAgICAgIEByYW5nZSA9IG5pbAorICAgIGVu
ZAorCisgICAgZGVmIHNldFBhcmVudChwYXJlbnQpCisgICAgICAgIHBhcmVudC5jaGlsZHJlbi5w
dXNoKHNlbGYpCisgICAgICAgIEBwYXJlbnQgPSBwYXJlbnQKKyAgICBlbmQKKworICAgIGRlZiBj
b21wdXRlKHN0YXJ0KQorICAgICAgICBjdXJyZW50ID0gc3RhcnQKKyAgICAgICAgaWYgQGNoaWxk
cmVuLmVtcHR5PworICAgICAgICAgICAgQHJhbmdlID0gSGVhcFJhbmdlLm5ldyhzdGFydCwgY3Vy
cmVudCArIDEpCisgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgZW5kCisKKyAgICAgICAgQGNo
aWxkcmVuLmVhY2gge3xjaGlsZHwKKyAgICAgICAgICAgIGNoaWxkLmNvbXB1dGUoY3VycmVudCkK
KyAgICAgICAgICAgIGN1cnJlbnQgPSBjaGlsZC5yYW5nZS5sYXN0CisgICAgICAgIH0KKworICAg
ICAgICBAcmFuZ2UgPSBIZWFwUmFuZ2UubmV3KHN0YXJ0LCBjdXJyZW50KQorICAgIGVuZAorCisg
ICAgZGVmIGR1bXAgb3V0cHV0CisgICAgICAgIHNoYWxsb3dEdW1wKG91dHB1dCkKKyAgICAgICAg
aWYgQHBhcmVudAorICAgICAgICAgICAgb3V0cHV0LnByaW50ICItPiAiCisgICAgICAgICAgICBA
cGFyZW50LmR1bXAob3V0cHV0KQorICAgICAgICBlbmQKKyAgICBlbmQKKworICAgIGRlZiBzaGFs
bG93RHVtcChvdXRwdXQpCisgICAgICAgIG91dHB1dC5wcmludCAiI3tAbmFtZX08I3tAcmFuZ2Uu
Zmlyc3R9LCN7QHJhbmdlLmxhc3R9PiIKKyAgICBlbmQKKworICAgIGRlZiBkZWVwRHVtcCBvdXRw
dXQsIGluZGVudAorICAgICAgICBwcmludEluZGVudChvdXRwdXQsIGluZGVudCkKKyAgICAgICAg
c2hhbGxvd0R1bXAob3V0cHV0KQorICAgICAgICBpZiBAY2hpbGRyZW4uZW1wdHk/CisgICAgICAg
ICAgICBvdXRwdXQucHJpbnQgIlxuIgorICAgICAgICAgICAgcmV0dXJuCisgICAgICAgIGVuZAor
CisgICAgICAgIG91dHB1dC5wcmludCAiOlxuIgorICAgICAgICBAY2hpbGRyZW4uZWFjaCB7fGNo
aWxkfAorICAgICAgICAgICAgY2hpbGQuZGVlcER1bXAob3V0cHV0LCBpbmRlbnQgKyAxKQorICAg
ICAgICB9CisgICAgZW5kCisKKyAgICBkZWYgZ2VuZXJhdGUgb3V0cHV0CisgICAgICAgIG91dHB1
dC5wdXRzICJjb25zdGV4cHIgSlNDOjpET01KSVQ6OkhlYXBSYW5nZSAje0BuYW1lfShKU0M6OkRP
TUpJVDo6SGVhcFJhbmdlOjpDb25zdEV4cHIsICN7QHJhbmdlLmZpcnN0fSwgI3tAcmFuZ2UubGFz
dH0pOyIKKyAgICAgICAgQGNoaWxkcmVuLmVhY2gge3xjaGlsZHwKKyAgICAgICAgICAgIGNoaWxk
LmdlbmVyYXRlKG91dHB1dCkKKyAgICAgICAgfQorICAgIGVuZAorCitwcml2YXRlCisgICAgZGVm
IHByaW50SW5kZW50IG91dHB1dCwgaW5kZW50CisgICAgICAgIGluZGVudC50aW1lcyB7CisgICAg
ICAgICAgICBvdXRwdXQucHJpbnQgIiAgICAiCisgICAgICAgIH0KKyAgICBlbmQKK2VuZAorCito
ZWFkZXIgPSA8PC1FT1MKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisg
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworLy8gQXV0by1nZW5lcmF0ZWQgZmlsZS4gRG8gbm90IG1vZGlmeS4KKworI3ByYWdtYSBvbmNl
CisKKyNpbmNsdWRlIDxkb21qaXQvRE9NSklUSGVhcFJhbmdlLmg+CisKK25hbWVzcGFjZSBXZWJD
b3JlIHsgbmFtZXNwYWNlIERPTUpJVCB7IG5hbWVzcGFjZSBBYnN0cmFjdEhlYXBSZXBvc2l0b3J5
IHsKK0VPUworCitmb290ZXIgPSA8PC1FT1MKK30gfSB9CitFT1MKKworJGlucHV0RmlsZU5hbWUg
PSBBUkdWLnNoaWZ0Ciskb3V0cHV0RmlsZU5hbWUgPSBBUkdWLnNoaWZ0CitGaWxlLm9wZW4oJG91
dHB1dEZpbGVOYW1lLCAidyIpIHt8b3V0cHV0fAorICAgIEZpbGUub3BlbigkaW5wdXRGaWxlTmFt
ZSwgInJiIikge3xmaWxlfAorICAgICAgICB0cmVlID0gWUFNTDo6bG9hZChmaWxlLnJlYWQoKSkK
KyAgICAgICAgaGVhcCA9IHRyZWUubWFwIHt8a2V5LCB2YWx1ZXwKKyAgICAgICAgICAgIEFic3Ry
YWN0SGVhcC5uZXcoa2V5LCB2YWx1ZSkKKyAgICAgICAgfS5maXJzdAorICAgICAgICBoZWFwLmNv
bXB1dGUoMCkKKworICAgICAgICBvdXRwdXQucHJpbnQoaGVhZGVyKQorICAgICAgICBvdXRwdXQu
cHV0cygiLyogRE9NSklUIEFic3RyYWN0IEhlYXAgVHJlZS4iKQorICAgICAgICBoZWFwLmRlZXBE
dW1wKG91dHB1dCwgMCkKKyAgICAgICAgb3V0cHV0LnB1dHMoIiovIikKKyAgICAgICAgaGVhcC5n
ZW5lcmF0ZShvdXRwdXQpCisgICAgICAgIG91dHB1dC5wcmludChmb290ZXIpCisgICAgfQorfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>293640</attachid>
            <date>2016-11-01 22:51:45 -0700</date>
            <delta_ts>2016-11-01 22:58:58 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-162980-20161101224747.patch</filename>
            <type>text/plain</type>
            <size>184454</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA4MTM3CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBl
ZjMwNGVjYmQ0YjQ0NzNlZjEwYWY3NmNkYTMwODQ3MmVjN2Q3MGQwLi5jNTJiMGZiNzViMzM5ZmMx
ZGIwMTY4ZDNlOWYxZDViZTllYjViMDFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMzMgQEAKKzIwMTYtMTEtMDEgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFp
bC5jb20+CisKKyAgICAgICAgW0RPTUpJVF0gQWRkIERPTUpJVDo6U2lnbmF0dXJlCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjI5ODAKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGludHJv
ZHVjZXMgYSBuZXcgbWVjaGFuaXNtIGNhbGxlZCBET01KSVQ6OlNpZ25hdHVyZS4gV2UgY2FuIGFu
bm90YXRlIHRoZSBmdW5jdGlvbiB3aXRoIERPTUpJVDo6U2lnbmF0dXJlLgorICAgICAgICBET01K
SVQ6OlNpZ25hdHVyZSBoYXMgdHlwZSBpbmZvcm1hdGlvbiBvZiB0aGF0IGZ1bmN0aW9uLiBBbmQg
aXQgYWxzbyBtYWludGFpbnMgdGhlIGVmZmVjdCBvZiB0aGUgZnVuY3Rpb24gYW5kIHRoZQorICAg
ICAgICBwb2ludGVyIHRvIHRoZSB1bnNhZmUgZnVuY3Rpb24uIFRoZSB1bnNhZmUgZnVuY3Rpb24g
bWVhbnMgdGhlIGZ1bmN0aW9uIHdpdGhvdXQgdHlwZSBhbmQgYXJndW1lbnQgY291bnQgY2hlY2tz
LgorICAgICAgICBCeSB1c2luZyB0aGVzZSBpbmZvcm1hdGlvbiwgd2UgY2FuIHNlcGFyYXRlIHR5
cGUgYW5kIGFyZ3VtZW50IGNvdW50IGNoZWNrcyBmcm9tIHRoZSBmdW5jdGlvbi4gQW5kIHdlIGNh
biBlbWl0CisgICAgICAgIHRoZXNlIHRoaW5ncyBhcyBERkcgY2hlY2tzIGFuZCBjb252ZXJ0IHRo
ZSBmdW5jdGlvbiBjYWxsIGl0c2VsZiB0byBDYWxsRE9NIG5vZGUuIENhbGxET00gbm9kZSBjYW4g
Y2FsbCB0aGUgdW5zYWZlCisgICAgICAgIGZ1bmN0aW9uIGRpcmVjdGx5IHdpdGhvdXQgYW55IGNo
ZWNrcy4gRnVydGhlcm1vcmUsIHRoaXMgQ2FsbERPTSBub2RlIGNhbiByZXByZXNlbnQgaXRzIG93
biBjbG9iYmVyaXppbmcgcnVsZXMgYmFzZWQKKyAgICAgICAgb24gRE9NSklUOjpFZmZlY3QgbWFp
bnRhaW5lZCBieSBET01KSVQ6OlNpZ25hdHVyZS4gSXQgYWxsb3dzIHVzIHRvIG1ha2Ugb3BhcXVl
IENhbGwgbm9kZSB0byBhIENhbGxET00gbm9kZSB0aGF0CisgICAgICAgIG1lcmVseSByZWFkcyBz
b21lIHBhcnQgb2YgaGVhcC4gVGhlc2UgY2hhbmdlcyAoMSkgY2FuIGRyb3AgZHVwbGljYXRlIHR5
cGUgY2hlY2tzIGluIERGRywgKDIpIG9mZmVyIGFiaWxpdHkgdG8gbW92ZQorICAgICAgICBDYWxs
RE9NIG5vZGUgdG8gc29tZXdoZXJlLCBhbmQgKDMpIHRyYWNrIG1vcmUgZGV0YWlsZWQgaGVhcCBy
ZWFkcyBhbmQgd3JpdGVzIG9mIENhbGxET00gbm9kZXMuCisKKyAgICAgICAgV2UgZmlyc3QgZW1p
dCBDYWxsIG5vZGUgd2l0aCBET01KSVQ6OlNpZ25hdHVyZSBpbiBERkdCeXRlQ29kZVBhcnNlci4g
QW5kIGluIHRoZSBmaXh1cCBwaGFzZSwgd2UgYXR0ZW1wdCB0byBsb3dlcgorICAgICAgICBDYWxs
IG5vZGUgdG8gQ2FsbERPTSBub2RlIHdpdGggY2hlY2tzICYgZWRnZSBmaWx0ZXJzLiBUaGlzIGlz
IGJlY2F1c2Ugd2UgZG8gbm90IGtub3cgdGhlIHR5cGUgcHJlZGljdGlvbnMgaW4KKyAgICAgICAg
REZHQnl0ZUNvZGVQYXJzZXIgcGhhc2UuIElmIHdlIGFsd2F5cyBlbWl0IENhbGxET00gbm9kZSBp
biBERkdCeXRlQ29kZVBhcnNlciwgaWYgd2UgZXZhbHVhdGUgYGRpdi5nZXRBdHRyaWJ1dGUodHJ1
ZSlgCisgICAgICAgIHRoaW5neSwgdGhlIFVuY291bnRhYmxlIE9TUiBleGl0cyByZXBlYXRlZGx5
IGhhcHBlbiBiZWNhdXNlIEFJIGZpZ3VyZXMgb3V0IHRoZSBhYnN0cmFjdCB2YWx1ZSBpcyBjbGVh
cmVkLgorCisgICAgICAgIEN1cnJlbnRseSwgRE9NSklUIHNpZ25hdHVyZSBvbmx5IGFsbG93cyB0
aGUgdHlwZXMgdGhhdCBjYW4gcmVzaWRlIGluIEdQUi4gVGhpcyBpcyBiZWNhdXNlIHRoZSB0eXBl
cyBvZiB0aGUgdW5zYWZlCisgICAgICAgIGZ1bmN0aW9uIGFyZ3VtZW50cyBhcmUgcmVwcmVzZW50
ZWQgYXMgdGhlIHNlcXVlbmNlIG9mIHZvaWQqLiBJbiB0aGUgZnV0dXJlLCB3ZSB3aWxsIGV4dGVu
ZCB0byBhY2NlcHQgb3RoZXIgdHlwZXMgbGlrZQorICAgICAgICBmbG9hdCwgZG91YmxlIGV0Yy4K
KworICAgICAgICBXZSBhbm5vdGF0ZSBzZXZlcmFsIGZ1bmN0aW9ucyBpbiBFbGVtZW50LiBJbiBw
YXJ0aWN1bGFyLCB3ZSBhbm5vdGF0ZSBFbGVtZW50OjpnZXRBdHRyaWJ1dGUuIFRoaXMgYWxsb3dz
IHVzIHRvIHBlcmZvcm0KKyAgICAgICAgTElDTSBpbiBEcm9tYWVvIGRvbS1hdHRyIHRlc3QuIElu
IHRoZSBEcm9tYWVvIGRvbS1hdHRyIGdldEF0dHJpYnV0ZSB0ZXN0LCB3ZSBjYW4gc2VlIDMyeCBp
bXByb3ZlbWVudC4gKDEzNDk3NC44IHYucy4gNDIwMy40KQorCisgICAgICAgICogSmF2YVNjcmlw
dENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBieXRlY29kZS9DYWxs
VmFyaWFudC5oOgorICAgICAgICAoSlNDOjpDYWxsVmFyaWFudDo6ZnVuY3Rpb25FeGVjdXRhYmxl
KToKKyAgICAgICAgKEpTQzo6Q2FsbFZhcmlhbnQ6Om5hdGl2ZUV4ZWN1dGFibGUpOgorICAgICAg
ICAoSlNDOjpDYWxsVmFyaWFudDo6c2lnbmF0dXJlRm9yKToKKyAgICAgICAgKiBieXRlY29kZS9T
cGVjdWxhdGVkVHlwZS5oOgorICAgICAgICAoSlNDOjppc05vdFN0cmluZ1NwZWN1bGF0aW9uKToK
KyAgICAgICAgKEpTQzo6aXNOb3RJbnQzMlNwZWN1bGF0aW9uKToKKyAgICAgICAgKEpTQzo6aXNO
b3RCb29sZWFuU3BlY3VsYXRpb24pOgorICAgICAgICAqIGRmZy9ERkdBYnN0cmFjdEludGVycHJl
dGVySW5saW5lcy5oOgorICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0SW50ZXJwcmV0ZXI8QWJz
dHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyk6CisgICAgICAgICogZGZnL0RGR0J5dGVD
b2RlUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6YWRkQ2Fs
bCk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUNhbGwpOgorICAg
ICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjphdHRlbXB0VG9JbmxpbmVDYWxsKToKKyAg
ICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW5saW5pbmcpOgorICAgICAg
ICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVET01KSVRDYWxsKToKKyAgICAgICAg
KEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayk6CisgICAgICAgICogZGZnL0RG
R0Nsb2JiZXJpemUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpjbG9iYmVyaXplKToKKyAgICAgICAg
KiBkZmcvREZHRG9lc0dDLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpkb2VzR0MpOgorICAgICAg
ICAqIGRmZy9ERkdGaXh1cFBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpGaXh1cFBoYXNl
OjpmaXh1cE5vZGUpOgorICAgICAgICAoSlNDOjpERkc6OkZpeHVwUGhhc2U6OmF0dGVtcHRUb01h
a2VDYWxsRE9NKToKKyAgICAgICAgKEpTQzo6REZHOjpGaXh1cFBoYXNlOjpmaXh1cENoZWNrRE9N
KToKKyAgICAgICAgKEpTQzo6REZHOjpGaXh1cFBoYXNlOjpmaXh1cENhbGxET00pOgorICAgICAg
ICAqIGRmZy9ERkdOb2RlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpjb252ZXJ0VG9D
YWxsRE9NKToKKyAgICAgICAgKiBkZmcvREZHTm9kZS5oOgorICAgICAgICAoSlNDOjpERkc6Ok5v
ZGU6Omhhc0hlYXBQcmVkaWN0aW9uKToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpzaG91bGRT
cGVjdWxhdGVOb3RJbnQzMik6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6c2hvdWxkU3BlY3Vs
YXRlTm90Qm9vbGVhbik6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6c2hvdWxkU3BlY3VsYXRl
Tm90U3RyaW5nKToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpoYXNTaWduYXR1cmUpOgorICAg
ICAgICAoSlNDOjpERkc6Ok5vZGU6OnNpZ25hdHVyZSk6CisgICAgICAgICogZGZnL0RGR05vZGVU
eXBlLmg6CisgICAgICAgICogZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcDoK
KyAgICAgICAgKiBkZmcvREZHU2FmZVRvRXhlY3V0ZS5oOgorICAgICAgICAoSlNDOjpERkc6OnNh
ZmVUb0V4ZWN1dGUpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHA6CisgICAg
ICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVDYWxsRE9NKToKKyAgICAgICAg
KiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuaDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2
ZUpJVDo6Y2FsbE9wZXJhdGlvbik6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJf
NjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToKKyAg
ICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGRvbWppdC9ET01KSVRFZmZlY3Qu
aDoKKyAgICAgICAgKEpTQzo6RE9NSklUOjpFZmZlY3Q6OkVmZmVjdCk6CisgICAgICAgIChKU0M6
OkRPTUpJVDo6RWZmZWN0Ojpmb3JXcml0ZSk6CisgICAgICAgIChKU0M6OkRPTUpJVDo6RWZmZWN0
Ojpmb3JSZWFkKToKKyAgICAgICAgKEpTQzo6RE9NSklUOjpFZmZlY3Q6OmZvclJlYWRXcml0ZSk6
CisgICAgICAgIChKU0M6OkRPTUpJVDo6RWZmZWN0Ojpmb3JQdXJlKToKKyAgICAgICAgKEpTQzo6
RE9NSklUOjpFZmZlY3Q6OmZvckRlZik6CisgICAgICAgIChKU0M6OkRPTUpJVDo6RWZmZWN0Ojpt
dXN0R2VuZXJhdGUpOgorICAgICAgICBJbiBjbGFuZywgd2UgY2Fubm90IG1ha2UgdGhpcyBFZmZl
Y3QgY29uc3RydWN0b3IgY29uc3RleHByIGlmIHdlIHVzZSBPcHRpb25hbDxIZWFwUmFuZ2U+Lgor
ICAgICAgICBTbyB3ZSB1c2UgSGVhcFJhbmdlOjp0b3AoKSBmb3IgTnVsbG9wdCBkZWYgbm93Lgor
CisgICAgICAgICogZG9taml0L0RPTUpJVEhlYXBSYW5nZS5oOgorICAgICAgICAoSlNDOjpET01K
SVQ6OkhlYXBSYW5nZTo6ZnJvbVJhdyk6CisgICAgICAgIChKU0M6OkRPTUpJVDo6SGVhcFJhbmdl
OjpvcGVyYXRvcj09KToKKyAgICAgICAgKEpTQzo6RE9NSklUOjpIZWFwUmFuZ2U6Om9wZXJhdG9y
IT0pOgorICAgICAgICAoSlNDOjpET01KSVQ6OkhlYXBSYW5nZTo6ZnJvbUNvbnN0YW50KToKKyAg
ICAgICAgKiBkb21qaXQvRE9NSklUU2lnbmF0dXJlLmg6IENvcGllZCBmcm9tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kb21qaXQvRE9NSklURWZmZWN0LmguCisgICAgICAgIChKU0M6OkRPTUpJVDo6
U2lnbmF0dXJlOjpTaWduYXR1cmUpOgorICAgICAgICAoSlNDOjpET01KSVQ6OlNpZ25hdHVyZTo6
YXJndW1lbnRDb3VudCk6CisgICAgICAgIChKU0M6OkRPTUpJVDo6U2lnbmF0dXJlOjpjaGVja0RP
TSk6CisgICAgICAgICogZnRsL0ZUTENhcGFiaWxpdGllcy5jcHA6CisgICAgICAgIChKU0M6OkZU
TDo6Y2FuQ29tcGlsZSk6CisgICAgICAgICogZnRsL0ZUTExvd2VyREZHVG9CMy5jcHA6CisgICAg
ICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVOb2RlKToKKyAgICAgICAg
KEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZUNhbGxET00pOgorICAgICAgICAq
IGppdC9KSVRPcGVyYXRpb25zLmg6CisgICAgICAgICogaml0L0pJVFRodW5rcy5jcHA6CisgICAg
ICAgIChKU0M6OkpJVFRodW5rczo6aG9zdEZ1bmN0aW9uU3R1Yik6CisgICAgICAgICogaml0L0pJ
VFRodW5rcy5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNCb3VuZEZ1bmN0aW9uLmNwcDoKKyAgICAg
ICAgKEpTQzo6SlNCb3VuZEZ1bmN0aW9uOjpjcmVhdGUpOgorICAgICAgICAqIHJ1bnRpbWUvSlND
ZWxsLmg6CisgICAgICAgICogcnVudGltZS9KU0Z1bmN0aW9uLmNwcDoKKyAgICAgICAgKEpTQzo6
SlNGdW5jdGlvbjo6Y3JlYXRlKToKKyAgICAgICAgKiBydW50aW1lL0pTRnVuY3Rpb24uaDoKKyAg
ICAgICAgKiBydW50aW1lL0pTTmF0aXZlU3RkRnVuY3Rpb24uY3BwOgorICAgICAgICAoSlNDOjpK
U05hdGl2ZVN0ZEZ1bmN0aW9uOjpjcmVhdGUpOgorICAgICAgICAqIHJ1bnRpbWUvSlNPYmplY3Qu
Y3BwOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6cHV0RGlyZWN0TmF0aXZlRnVuY3Rpb24pOgor
ICAgICAgICAqIHJ1bnRpbWUvSlNPYmplY3QuaDoKKyAgICAgICAgKiBydW50aW1lL0xvb2t1cC5o
OgorICAgICAgICAoSlNDOjpIYXNoVGFibGVWYWx1ZTo6ZnVuY3Rpb25MZW5ndGgpOgorICAgICAg
ICAoSlNDOjpIYXNoVGFibGVWYWx1ZTo6c2lnbmF0dXJlKToKKyAgICAgICAgKEpTQzo6cmVpZnlT
dGF0aWNQcm9wZXJ0eSk6CisgICAgICAgICogcnVudGltZS9OYXRpdmVFeGVjdXRhYmxlLmNwcDoK
KyAgICAgICAgKEpTQzo6TmF0aXZlRXhlY3V0YWJsZTo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6
TmF0aXZlRXhlY3V0YWJsZTo6TmF0aXZlRXhlY3V0YWJsZSk6CisgICAgICAgICogcnVudGltZS9O
YXRpdmVFeGVjdXRhYmxlLmg6CisgICAgICAgICogcnVudGltZS9Qcm9wZXJ0eVNsb3QuaDoKKyAg
ICAgICAgKiBydW50aW1lL1ZNLmNwcDoKKyAgICAgICAgKEpTQzo6Vk06OmdldEhvc3RGdW5jdGlv
bik6CisgICAgICAgICogcnVudGltZS9WTS5oOgorCiAyMDE2LTEwLTI5ICBZdXN1a2UgU3V6dWtp
ICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgogCiAgICAgICAgIFtKU0NdIEpTT04uc3RyaW5naWZ5
IHNob3VsZCBoYW5kbGUgUHJveHkgd2hpY2ggaXMgbm9uIEpTQXJyYXkgYnV0IGlzQXJyYXkgaXMg
dHJ1ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nCmluZGV4IDNhMTFjYzhjMzhkOGM5ODBiNmQ4ZmY3ODE5MDM3NjM5NzE1ODUz
YjUuLmMwYzgzNTNmNGU2ZDcxZmVjNjBjYTExZmNlYjk1YzE4NGE1NTA1NWQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cK
QEAgLTEsMyArMSw5OCBAQAorMjAxNi0xMS0wMSAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVh
QGdtYWlsLmNvbT4KKworICAgICAgICBbRE9NSklUXSBBZGQgRE9NSklUOjpTaWduYXR1cmUKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2Mjk4MAorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdlIGludHJvZHVj
ZSBET01KSVQ6OlNpZ25hdHVyZS4gVGhpcyBzaWduYXR1cmUgb2JqZWN0IGlzIGF1dG9tYXRpY2Fs
bHkgZ2VuZXJhdGVkIGJ5IElETCBjb2RlIGdlbmVyYXRvci4KKyAgICAgICAgSXQgaG9sZHMgKDEp
IHR5cGVzLCAoMikgcG9pbnRlciB0byB0aGUgdW5zYWZlIGZ1bmN0aW9uICh0aGUgZnVuY3Rpb24g
d2l0aG91dCBjaGVja3MpLCBhbmQgKDMpIHRoZSBlZmZlY3QKKyAgICAgICAgb2YgdGhlIGZ1bmN0
aW9uLiBXZSB1c2UgY29uc3RleHByIHRvIGluaXRpYWxpemUgRE9NSklUOjpTaWduYXR1cmUgd2l0
aG91dCBpbnZva2luZyBnbG9iYWwgY29uc3RydWN0b3JzLgorICAgICAgICBUaHVzIHRoZSBjb250
ZW50IGlzIGVtYmVkZGVkIGludG8gdGhlIGJpbmFyeSBhcyB0aGUgY29uc3RhbnQgdmFsdWVzLgor
CisgICAgICAgIFdlIGFsc28gY2xlYW4gdXAgdGhlIElETCBjb2RlIGdlbmVyYXRvciByZWxhdGVk
IHRvIERPTUpJVCBwYXJ0LiBJbnN0ZWFkIG9mIHN3aXRjaGluZyB0aGluZ3MgaW5zaWRlIElETAor
ICAgICAgICBjb2RlIGdlbmVyYXRvciwgd2UgdXNlIEMrKyB0ZW1wbGF0ZSB0byBkaXNwYXRjaCB0
aGluZ3MgYXQgY29tcGlsZSB0aW1lLiBUaGlzIHRlbXBsYXRlIG1ldGEgcHJvZ3JhbW1pbmcKKyAg
ICAgICAgaXMgaGlnaGx5IHV0aWxpemVkIGluIElETCB0aGVzZSBkYXlzLgorCisgICAgICAgIFRv
IG1ha2UgRE9NSklUOjpTaWduYXR1cmUgY29uc3RleHByLCB3ZSBhbHNvIG5lZWQgdG8gZGVmaW5l
IERPTUpJVCBhYnN0cmFjdCBoZWFwIHRoaW5ncyBpbiB0aGUgYnVpbGQgdGltZS4KKyAgICAgICAg
VG8gZG8gc28sIHdlIGludHJvZHVjZSBhIHRpbnkgUnVieSBzY3JpcHQgdG8gY2FsY3VsYXRlIHRo
ZSByYW5nZSBvZiBhYnN0cmFjdCBoZWFwcy4gV2UgY2FuIG9mZmVyIHRoZSBhYnN0cmFjdAorICAg
ICAgICBoZWFwIHRyZWUgYXMgWUFNTCBmb3JtYXQgYW5kIHRoZSBzY3JpcHQgd2lsbCBwcm9kdWNl
IGEgQysrIGhlYWRlciBob2xkaW5nIHRoZSBjYWxjdWxhdGVkIGFic3RyYWN0IGhlYXAgcmFuZ2Vz
CisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy5t
YWtlOgorICAgICAgICAqIEZvcndhcmRpbmdIZWFkZXJzL2J5dGVjb2RlL1NwZWN1bGF0ZWRUeXBl
Lmg6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9kb21qaXQvRE9NSklUQWJzdHJhY3RIZWFw
UmVwb3NpdG9yeS5oLgorICAgICAgICAqIEZvcndhcmRpbmdIZWFkZXJzL2RvbWppdC9ET01KSVRT
aWduYXR1cmUuaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL2RvbWppdC9ET01KSVRBYnN0
cmFjdEhlYXBSZXBvc2l0b3J5LmNwcC4KKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2o6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuaDoK
KyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbToKKyAgICAgICAg
KEdlbmVyYXRlSGVhZGVyKToKKyAgICAgICAgKEdlbmVyYXRlUHJvcGVydGllc0hhc2hUYWJsZSk6
CisgICAgICAgIChHZXRVbnNhZmVBcmd1bWVudFR5cGUpOgorICAgICAgICAoR2V0QXJndW1lbnRU
eXBlRmlsdGVyKToKKyAgICAgICAgKEdldFJlc3VsdFR5cGVGaWx0ZXIpOgorICAgICAgICAoR2Vu
ZXJhdGVJbXBsZW1lbnRhdGlvbik6CisgICAgICAgIChVbnNhZmVUb05hdGl2ZSk6CisgICAgICAg
IChHZW5lcmF0ZUhhc2hUYWJsZVZhbHVlQXJyYXkpOgorICAgICAgICAoQ29tcHV0ZUZ1bmN0aW9u
U3BlY2lhbCk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9JRExBdHRyaWJ1dGVzLnR4dDoK
KyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RE9NSklULmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkJpbmRpbmdDYWxsZXI8SlNUZXN0RE9NSklUPjo6Y2FzdEZvck9wZXJh
dGlvbik6CisgICAgICAgIChXZWJDb3JlOjpUZXN0RE9NSklUQW55QXR0ckRPTUpJVDo6VGVzdERP
TUpJVEFueUF0dHJET01KSVQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdERPTUpJVEJvb2xlYW5B
dHRyRE9NSklUOjpUZXN0RE9NSklUQm9vbGVhbkF0dHJET01KSVQpOgorICAgICAgICAoV2ViQ29y
ZTo6VGVzdERPTUpJVEJ5dGVBdHRyRE9NSklUOjpUZXN0RE9NSklUQnl0ZUF0dHJET01KSVQpOgor
ICAgICAgICAoV2ViQ29yZTo6VGVzdERPTUpJVE9jdGV0QXR0ckRPTUpJVDo6VGVzdERPTUpJVE9j
dGV0QXR0ckRPTUpJVCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0RE9NSklUU2hvcnRBdHRyRE9N
SklUOjpUZXN0RE9NSklUU2hvcnRBdHRyRE9NSklUKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RE
T01KSVRVbnNpZ25lZFNob3J0QXR0ckRPTUpJVDo6VGVzdERPTUpJVFVuc2lnbmVkU2hvcnRBdHRy
RE9NSklUKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RET01KSVRMb25nQXR0ckRPTUpJVDo6VGVz
dERPTUpJVExvbmdBdHRyRE9NSklUKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RET01KSVRVbnNp
Z25lZExvbmdBdHRyRE9NSklUOjpUZXN0RE9NSklUVW5zaWduZWRMb25nQXR0ckRPTUpJVCk6Cisg
ICAgICAgIChXZWJDb3JlOjpUZXN0RE9NSklUTG9uZ0xvbmdBdHRyRE9NSklUOjpUZXN0RE9NSklU
TG9uZ0xvbmdBdHRyRE9NSklUKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RET01KSVRVbnNpZ25l
ZExvbmdMb25nQXR0ckRPTUpJVDo6VGVzdERPTUpJVFVuc2lnbmVkTG9uZ0xvbmdBdHRyRE9NSklU
KToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RET01KSVRGbG9hdEF0dHJET01KSVQ6OlRlc3RET01K
SVRGbG9hdEF0dHJET01KSVQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdERPTUpJVFVucmVzdHJp
Y3RlZEZsb2F0QXR0ckRPTUpJVDo6VGVzdERPTUpJVFVucmVzdHJpY3RlZEZsb2F0QXR0ckRPTUpJ
VCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0RE9NSklURG91YmxlQXR0ckRPTUpJVDo6VGVzdERP
TUpJVERvdWJsZUF0dHJET01KSVQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdERPTUpJVFVucmVz
dHJpY3RlZERvdWJsZUF0dHJET01KSVQ6OlRlc3RET01KSVRVbnJlc3RyaWN0ZWREb3VibGVBdHRy
RE9NSklUKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RET01KSVREb21TdHJpbmdBdHRyRE9NSklU
OjpUZXN0RE9NSklURG9tU3RyaW5nQXR0ckRPTUpJVCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0
RE9NSklUQnl0ZVN0cmluZ0F0dHJET01KSVQ6OlRlc3RET01KSVRCeXRlU3RyaW5nQXR0ckRPTUpJ
VCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0RE9NSklUVXN2U3RyaW5nQXR0ckRPTUpJVDo6VGVz
dERPTUpJVFVzdlN0cmluZ0F0dHJET01KSVQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdERPTUpJ
VE5vZGVBdHRyRE9NSklUOjpUZXN0RE9NSklUTm9kZUF0dHJET01KSVQpOgorICAgICAgICAoV2Vi
Q29yZTo6VGVzdERPTUpJVEJvb2xlYW5OdWxsYWJsZUF0dHJET01KSVQ6OlRlc3RET01KSVRCb29s
ZWFuTnVsbGFibGVBdHRyRE9NSklUKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RET01KSVRCeXRl
TnVsbGFibGVBdHRyRE9NSklUOjpUZXN0RE9NSklUQnl0ZU51bGxhYmxlQXR0ckRPTUpJVCk6Cisg
ICAgICAgIChXZWJDb3JlOjpUZXN0RE9NSklUT2N0ZXROdWxsYWJsZUF0dHJET01KSVQ6OlRlc3RE
T01KSVRPY3RldE51bGxhYmxlQXR0ckRPTUpJVCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0RE9N
SklUU2hvcnROdWxsYWJsZUF0dHJET01KSVQ6OlRlc3RET01KSVRTaG9ydE51bGxhYmxlQXR0ckRP
TUpJVCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0RE9NSklUVW5zaWduZWRTaG9ydE51bGxhYmxl
QXR0ckRPTUpJVDo6VGVzdERPTUpJVFVuc2lnbmVkU2hvcnROdWxsYWJsZUF0dHJET01KSVQpOgor
ICAgICAgICAoV2ViQ29yZTo6VGVzdERPTUpJVExvbmdOdWxsYWJsZUF0dHJET01KSVQ6OlRlc3RE
T01KSVRMb25nTnVsbGFibGVBdHRyRE9NSklUKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RET01K
SVRVbnNpZ25lZExvbmdOdWxsYWJsZUF0dHJET01KSVQ6OlRlc3RET01KSVRVbnNpZ25lZExvbmdO
dWxsYWJsZUF0dHJET01KSVQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdERPTUpJVExvbmdMb25n
TnVsbGFibGVBdHRyRE9NSklUOjpUZXN0RE9NSklUTG9uZ0xvbmdOdWxsYWJsZUF0dHJET01KSVQp
OgorICAgICAgICAoV2ViQ29yZTo6VGVzdERPTUpJVFVuc2lnbmVkTG9uZ0xvbmdOdWxsYWJsZUF0
dHJET01KSVQ6OlRlc3RET01KSVRVbnNpZ25lZExvbmdMb25nTnVsbGFibGVBdHRyRE9NSklUKToK
KyAgICAgICAgKFdlYkNvcmU6OlRlc3RET01KSVRGbG9hdE51bGxhYmxlQXR0ckRPTUpJVDo6VGVz
dERPTUpJVEZsb2F0TnVsbGFibGVBdHRyRE9NSklUKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RE
T01KSVRVbnJlc3RyaWN0ZWRGbG9hdE51bGxhYmxlQXR0ckRPTUpJVDo6VGVzdERPTUpJVFVucmVz
dHJpY3RlZEZsb2F0TnVsbGFibGVBdHRyRE9NSklUKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RE
T01KSVREb3VibGVOdWxsYWJsZUF0dHJET01KSVQ6OlRlc3RET01KSVREb3VibGVOdWxsYWJsZUF0
dHJET01KSVQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdERPTUpJVFVucmVzdHJpY3RlZERvdWJs
ZU51bGxhYmxlQXR0ckRPTUpJVDo6VGVzdERPTUpJVFVucmVzdHJpY3RlZERvdWJsZU51bGxhYmxl
QXR0ckRPTUpJVCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0RE9NSklURG9tU3RyaW5nTnVsbGFi
bGVBdHRyRE9NSklUOjpUZXN0RE9NSklURG9tU3RyaW5nTnVsbGFibGVBdHRyRE9NSklUKToKKyAg
ICAgICAgKFdlYkNvcmU6OlRlc3RET01KSVRCeXRlU3RyaW5nTnVsbGFibGVBdHRyRE9NSklUOjpU
ZXN0RE9NSklUQnl0ZVN0cmluZ051bGxhYmxlQXR0ckRPTUpJVCk6CisgICAgICAgIChXZWJDb3Jl
OjpUZXN0RE9NSklUVXN2U3RyaW5nTnVsbGFibGVBdHRyRE9NSklUOjpUZXN0RE9NSklUVXN2U3Ry
aW5nTnVsbGFibGVBdHRyRE9NSklUKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RET01KSVROb2Rl
TnVsbGFibGVBdHRyRE9NSklUOjpUZXN0RE9NSklUTm9kZU51bGxhYmxlQXR0ckRPTUpJVCk6Cisg
ICAgICAgIChXZWJDb3JlOjpqc1Rlc3RET01KSVRQcm90b3R5cGVGdW5jdGlvbkdldEF0dHJpYnV0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RET01KSVRQcm90b3R5cGVGdW5jdGlvbkdldEF0
dHJpYnV0ZUNhbGxlcik6CisgICAgICAgIChXZWJDb3JlOjp1bnNhZmVKc1Rlc3RET01KSVRQcm90
b3R5cGVGdW5jdGlvbkdldEF0dHJpYnV0ZSk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L1Rlc3RET01KSVQuaWRsOgorICAgICAgICAqIGRvbS9FbGVtZW50LmlkbDoKKyAgICAgICAg
KiBkb21qaXQvRE9NSklUQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS55YW1sOiBBZGRlZC4KKyAgICAg
ICAgKiBkb21qaXQvRE9NSklUSURMQ29udmVydC5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OkRPTUpJVDo6RGlyZWN0Q29udmVydGVyPElETERPTVN0cmluZz46OmRpcmVjdENvbnZlcnQ8U3Ry
aW5nQ29udmVyc2lvbkNvbmZpZ3VyYXRpb246Ok5vcm1hbD4pOgorICAgICAgICAqIGRvbWppdC9E
T01KSVRJRExUeXBlLmg6IEFkZGVkLgorICAgICAgICAqIGRvbWppdC9ET01KSVRJRExUeXBlRmls
dGVyLmg6IEFkZGVkLgorICAgICAgICAqIGRvbWppdC9KU0RvY3VtZW50RE9NSklULmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkRvY3VtZW50RG9jdW1lbnRFbGVtZW50RE9NSklUOjpjYWxsRE9NR2V0
dGVyKToKKyAgICAgICAgKiBkb21qaXQvSlNOb2RlRE9NSklULmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Ok5vZGVGaXJzdENoaWxkRE9NSklUOjpjYWxsRE9NR2V0dGVyKToKKyAgICAgICAgKFdlYkNv
cmU6Ok5vZGVMYXN0Q2hpbGRET01KSVQ6OmNhbGxET01HZXR0ZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6Tm9kZU5leHRTaWJsaW5nRE9NSklUOjpjYWxsRE9NR2V0dGVyKToKKyAgICAgICAgKFdlYkNv
cmU6Ok5vZGVQcmV2aW91c1NpYmxpbmdET01KSVQ6OmNhbGxET01HZXR0ZXIpOgorICAgICAgICAo
V2ViQ29yZTo6Tm9kZVBhcmVudE5vZGVET01KSVQ6OmNhbGxET01HZXR0ZXIpOgorICAgICAgICAo
V2ViQ29yZTo6Tm9kZU93bmVyRG9jdW1lbnRET01KSVQ6OmNhbGxET01HZXR0ZXIpOgorICAgICAg
ICAqIGRvbWppdC9nZW5lcmF0ZS1hYnN0cmFjdC1oZWFwLnJiOiBBZGRlZC4KKwogMjAxNi0xMC0z
MCAgQnJlbnQgRnVsZ2hhbSAgPGJmdWxnaGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBVbnJldmll
d2VkIGZpeDogQ29ycmVjdCBDaGFuZ2VMb2cgYWZ0ZXIgbXkgYmFkIG1lcmdlLgpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagppbmRleCA0MzU1YmRiMjViODYyYzI3NDdhNDJkOWEwOGU4MTc2NWEz
M2NkZDRhLi40OTQxMDIxNzIwZWY5Y2Y4OWU3ODE2NmEzZDNkNGM4NWU4MzMwZjc0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTI1OSwxMyArMTI1OSwxMyBAQAogCQk1M0ZBMkFF
MzFDRjM4MDM5MDAyMjcxMUQgLyogTExJbnRQcm90b3R5cGVMb2FkQWRhcHRpdmVTdHJ1Y3R1cmVX
YXRjaHBvaW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDUzRkEyQUUyMUNGMzgwMzkwMDIyNzExRCAvKiBMTEludFByb3RvdHlwZUxvYWRBZGFwdGl2
ZVN0cnVjdHVyZVdhdGNocG9pbnQuY3BwICovOyB9OwogCQk1M0ZEMDREMzFEN0FCMjc3MDAzMjg3
RDMgLyogV2FzbUNhbGxpbmdDb252ZW50aW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzRkQwNEQxMUQ3QUIxODcwMDMyODdEMyAvKiBXYXNtQ2Fs
bGluZ0NvbnZlbnRpb24uY3BwICovOyB9OwogCQk1M0ZEMDRENDFEN0FCMjkxMDAzMjg3RDMgLyog
V2FzbUNhbGxpbmdDb252ZW50aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1M0ZEMDREMjFEN0FCMTg3MDAzMjg3RDMgLyogV2FzbUNhbGxpbmdDb252
ZW50aW9uLmggKi87IH07Ci0JCTVDNEU4RTk2MURCRUJFNjIwMDM2RjFGQyAvKiBKU09OUGFyc2VU
ZXN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVD
NEU4RTk0MURCRUJEQTIwMDM2RjFGQyAvKiBKU09OUGFyc2VUZXN0LmNwcCAqLzsgfTsKIAkJNUI3
MENGREUxREI2OUU2NjAwRUMyM0Y5IC8qIEpTQXN5bmNGdW5jdGlvbi5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUI3MENGRDgxREI2OUU1QzAwRUMyM0Y5
IC8qIEpTQXN5bmNGdW5jdGlvbi5oICovOyB9OwogCQk1QjcwQ0ZERjFEQjY5RTY2MDBFQzIzRjkg
LyogSlNBc3luY0Z1bmN0aW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDVCNzBDRkQ5MURCNjlFNUMwMEVDMjNGOSAvKiBKU0FzeW5jRnVuY3Rpb24u
Y3BwICovOyB9OwogCQk1QjcwQ0ZFMDFEQjY5RTY2MDBFQzIzRjkgLyogQXN5bmNGdW5jdGlvblBy
b3RvdHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NUI3MENGREExREI2OUU1QzAwRUMyM0Y5IC8qIEFzeW5jRnVuY3Rpb25Qcm90b3R5cGUuaCAqLzsg
fTsKIAkJNUI3MENGRTExREI2OUU2NjAwRUMyM0Y5IC8qIEFzeW5jRnVuY3Rpb25Qcm90b3R5cGUu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUI3MENG
REIxREI2OUU1QzAwRUMyM0Y5IC8qIEFzeW5jRnVuY3Rpb25Qcm90b3R5cGUuY3BwICovOyB9Owog
CQk1QjcwQ0ZFMjFEQjY5RTY2MDBFQzIzRjkgLyogQXN5bmNGdW5jdGlvbkNvbnN0cnVjdG9yLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1QjcwQ0ZEQzFE
QjY5RTVDMDBFQzIzRjkgLyogQXN5bmNGdW5jdGlvbkNvbnN0cnVjdG9yLmggKi87IH07CiAJCTVC
NzBDRkUzMURCNjlFNjYwMEVDMjNGOSAvKiBBc3luY0Z1bmN0aW9uQ29uc3RydWN0b3IuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUI3MENGREQxREI2
OUU1QzAwRUMyM0Y5IC8qIEFzeW5jRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHAgKi87IH07CisJCTVD
NEU4RTk2MURCRUJFNjIwMDM2RjFGQyAvKiBKU09OUGFyc2VUZXN0LmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDNEU4RTk0MURCRUJEQTIwMDM2RjFG
QyAvKiBKU09OUGFyc2VUZXN0LmNwcCAqLzsgfTsKIAkJNUQ1RDhBRDEwRTBEMEVCRTAwRjlDNjky
IC8qIGxpYmVkaXQuZHlsaWIgaW4gRnJhbWV3b3JrcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1RDVEOEFEMDBFMEQwRUJFMDBGOUM2OTIgLyogbGliZWRpdC5keWxpYiAqLzsg
fTsKIAkJNURCQjE1MUIxMzFEMEIzMTAwNTZBRDM2IC8qIHRlc3RhcGkuanMgaW4gQ29weSBTdXBw
b3J0IFNjcmlwdCAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNEQ4NTc3NDBB
NDY5NkM4MDAzMjE0NkMgLyogdGVzdGFwaS5qcyAqLzsgfTsKIAkJNURCQjE1MjUxMzFEMEJENzAw
NTZBRDM2IC8qIG1pbmlkb20uanMgaW4gQ29weSBTdXBwb3J0IFNjcmlwdCAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNDEyMTEwRDBBNDg3ODg3MDA0ODAyNTUgLyogbWluaWRv
bS5qcyAqLzsgfTsKQEAgLTIxNzgsNiArMjE3OCw3IEBACiAJCUUzM0Y1MDg1MUI4NDM3QTAwMDQx
Mzg1NiAvKiBKU0ludGVybmFsUHJvbWlzZURlZmVycmVkLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzNGNTA4MzFCODQzN0EwMDA0MTM4NTYgLyogSlNJ
bnRlcm5hbFByb21pc2VEZWZlcnJlZC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCUUzM0Y1MDg3MUI4NDQ5RUYwMDQxMzg1NiAvKiBKU0ludGVybmFs
UHJvbWlzZUNvbnN0cnVjdG9yLmx1dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRTMzRjUwODYxQjg0NDlFRjAwNDEzODU2IC8qIEpTSW50ZXJuYWxQcm9t
aXNlQ29uc3RydWN0b3IubHV0LmggKi87IH07CiAJCUUzNEVEQkY3MURCNUZGQzkwMERDODdBNSAv
KiBGcmFtZVRyYWNlcnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEUzNEVEQkY2MURCNUZGQzEwMERDODdBNSAvKiBGcmFtZVRyYWNlcnMuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlFMzUwNzA4QTFEQzQ5
QkJGMDA4OUJDRDYgLyogRE9NSklUU2lnbmF0dXJlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzUwNzA4OTFEQzQ5QkI2MDA4OUJDRDYgLyogRE9NSklU
U2lnbmF0dXJlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJRTM1NDYyMkIxQjYwNjVEMTAwNTQ1Mzg2IC8qIENvbnN0cnVjdEFiaWxpdHkuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzNTQ2MjJBMUI2MDY1
RDEwMDU0NTM4NiAvKiBDb25zdHJ1Y3RBYmlsaXR5LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTM1NTVCOEExREFFMDNBNTAwRjM2OTIxIC8qIERP
TUpJVENhbGxET01HZXR0ZXJQYXRjaHBvaW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBFMzU1NUI4OTFEQUUwM0EyMDBGMzY5MjEgLyogRE9NSklUQ2Fs
bERPTUdldHRlclBhdGNocG9pbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQlFMzU1RjM1MjFCN0RDODUzMDBDNTBEQzUgLyogTW9kdWxlTG9hZGVy
UHJvdG90eXBlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEUzNTVGMzUwMUI3REM4NTMwMEM1MERDNSAvKiBNb2R1bGVMb2FkZXJQcm90b3R5cGUuY3Bw
ICovOyB9OwpAQCAtMzU4OCw4ICszNTg5LDYgQEAKIAkJNTNGQTJBRTIxQ0YzODAzOTAwMjI3MTFE
IC8qIExMSW50UHJvdG90eXBlTG9hZEFkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludC5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBMTEludFByb3RvdHlwZUxvYWRBZGFw
dGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk1M0ZEMDREMTFEN0FCMTg3MDAzMjg3RDMgLyogV2FzbUNhbGxpbmdDb252ZW50aW9uLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdhc21DYWxsaW5nQ29udmVudGlv
bi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUzRkQwNEQyMUQ3QUIxODcwMDMy
ODdEMyAvKiBXYXNtQ2FsbGluZ0NvbnZlbnRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gV2FzbUNhbGxpbmdDb252ZW50aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07Ci0JCTVDNEU4RTk0MURCRUJEQTIwMDM2RjFGQyAvKiBKU09OUGFyc2VUZXN0LmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEpTT05QYXJzZVRlc3QuY3BwOyBwYXRo
ID0gQVBJL3Rlc3RzL0pTT05QYXJzZVRlc3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwotCQk1QzRFOEU5NTFEQkVCREEyMDAzNkYxRkMgLyogSlNPTlBhcnNlVGVzdC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBKU09OUGFyc2VUZXN0Lmg7IHBhdGggPSBBUEkvdGVz
dHMvSlNPTlBhcnNlVGVzdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1QjcwQ0ZE
ODFEQjY5RTVDMDBFQzIzRjkgLyogSlNBc3luY0Z1bmN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEpTQXN5bmNGdW5jdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk1QjcwQ0ZEOTFEQjY5RTVDMDBFQzIzRjkgLyogSlNBc3luY0Z1bmN0aW9uLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTQXN5bmNGdW5jdGlvbi5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVCNzBDRkRBMURCNjlFNUMwMEVDMjNGOSAv
KiBBc3luY0Z1bmN0aW9uUHJvdG90eXBlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEFzeW5jRnVuY3Rpb25Qcm90b3R5cGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
QEAgLTM1OTcsNiArMzU5Niw4IEBACiAJCTVCNzBDRkRDMURCNjlFNUMwMEVDMjNGOSAvKiBBc3lu
Y0Z1bmN0aW9uQ29uc3RydWN0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
QXN5bmNGdW5jdGlvbkNvbnN0cnVjdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTVCNzBDRkREMURCNjlFNUMwMEVDMjNGOSAvKiBBc3luY0Z1bmN0aW9uQ29uc3RydWN0b3IuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQXN5bmNGdW5jdGlvbkNvbnN0
cnVjdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUI4MjQzMDQxREI3QUE0
OTAwRUE2Mzg0IC8qIEFzeW5jRnVuY3Rpb25Qcm90b3R5cGUuanMgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmphdmFzY3JpcHQ7IHBhdGggPSBBc3luY0Z1bmN0aW9uUHJvdG90eXBlLmpzOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk1QzRFOEU5NDFEQkVCREEyMDAzNkYxRkMgLyogSlNPTlBh
cnNlVGVzdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBKU09OUGFy
c2VUZXN0LmNwcDsgcGF0aCA9IEFQSS90ZXN0cy9KU09OUGFyc2VUZXN0LmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNUM0RThFOTUxREJFQkRBMjAwMzZGMUZDIC8qIEpTT05QYXJz
ZVRlc3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gSlNPTlBhcnNlVGVzdC5o
OyBwYXRoID0gQVBJL3Rlc3RzL0pTT05QYXJzZVRlc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNUQ1RDhBRDAwRTBEMEVCRTAwRjlDNjkyIC8qIGxpYmVkaXQuZHlsaWIgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSAiY29tcGlsZWQubWFj
aC1vLmR5bGliIjsgbmFtZSA9IGxpYmVkaXQuZHlsaWI7IHBhdGggPSAvdXNyL2xpYi9saWJlZGl0
LmR5bGliOyBzb3VyY2VUcmVlID0gIjxhYnNvbHV0ZT4iOyB9OwogCQk1REFGRDZDQjE0NkI2ODYz
MDBGQkVGQjQgLyogSlNDLnhjY29uZmlnICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gdGV4dC54Y2NvbmZpZzsgcGF0aCA9IEpTQy54Y2NvbmZpZzsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUREREY0NDYxNEZFRTcyMjAwQjRGQjREIC8qIExM
SW50RGVzaXJlZE9mZnNldHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTExJ
bnREZXNpcmVkT2Zmc2V0cy5oOyBwYXRoID0gTExJbnRPZmZzZXRzL0xMSW50RGVzaXJlZE9mZnNl
dHMuaDsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKQEAgLTQ1NzQsNiArNDU3
NSw3IEBACiAJCUUzM0Y1MDg2MUI4NDQ5RUYwMDQxMzg1NiAvKiBKU0ludGVybmFsUHJvbWlzZUNv
bnN0cnVjdG9yLmx1dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0ludGVy
bmFsUHJvbWlzZUNvbnN0cnVjdG9yLmx1dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlFMzNGNTA4ODFCODQ0QTFBMDA0MTM4NTYgLyogSW50ZXJuYWxQcm9taXNlQ29uc3RydWN0b3Iu
anMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmphdmFzY3JpcHQ7IHBhdGggPSBJbnRlcm5hbFByb21p
c2VDb25zdHJ1Y3Rvci5qczsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM0RURCRjYx
REI1RkZDMTAwREM4N0E1IC8qIEZyYW1lVHJhY2Vycy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBGcmFtZVRyYWNlcnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
RTM1MDcwODkxREM0OUJCNjAwODlCQ0Q2IC8qIERPTUpJVFNpZ25hdHVyZS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBET01KSVRTaWduYXR1cmUuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJRTM1NDYyMkExQjYwNjVEMTAwNTQ1Mzg2IC8qIENvbnN0cnVjdEFiaWxp
dHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29uc3RydWN0QWJpbGl0eS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzU1NUI4OTFEQUUwM0EyMDBGMzY5MjEg
LyogRE9NSklUQ2FsbERPTUdldHRlclBhdGNocG9pbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gRE9NSklUQ2FsbERPTUdldHRlclBhdGNocG9pbnQuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJRTM1NUYzNTAxQjdEQzg1MzAwQzUwREM1IC8qIE1vZHVsZUxvYWRl
clByb3RvdHlwZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNb2R1
bGVMb2FkZXJQcm90b3R5cGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNzQ4
NSw2ICs3NDg3LDcgQEAKIAkJCQlFMzdBRDgzQTFEQTQ5MjgwMDBGM0Q0MTIgLyogRE9NSklUUGF0
Y2hwb2ludFBhcmFtcy5oICovLAogCQkJCUUzN0FEODNCMURBNDkyODAwMEYzRDQxMiAvKiBET01K
SVRSZWcuaCAqLywKIAkJCQlFM0NCMUUyNDFEQTc1NDBBMDBGQTFFNTYgLyogRE9NSklUU2xvd1Bh
dGhDYWxscy5oICovLAorCQkJCUUzNTA3MDg5MURDNDlCQjYwMDg5QkNENiAvKiBET01KSVRTaWdu
YXR1cmUuaCAqLywKIAkJCQlFM0ZGQzg1MjFEQUQ3RDEwMDBERUE1M0UgLyogRE9NSklUVmFsdWUu
aCAqLywKIAkJCSk7CiAJCQlwYXRoID0gZG9taml0OwpAQCAtODQwNCw2ICs4NDA3LDcgQEAKIAkJ
CQk0M0FCMjZDNjFDMUE1MzU5MDBEODJBRTYgLyogQjNNYXRoRXh0cmFzLmggaW4gSGVhZGVycyAq
LywKIAkJCQlBRDJGQ0JGMzFEQjU4REFEMDBCM0U3MzYgLyogV2ViQXNzZW1ibHlJbnN0YW5jZVBy
b3RvdHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxOEM0MjkwRTE2RjVDRDAwQjM0NDYwIC8q
IEpTU3RyaW5nUmVmQ0YuaCBpbiBIZWFkZXJzICovLAorCQkJCUUzNTA3MDhBMURDNDlCQkYwMDg5
QkNENiAvKiBET01KSVRTaWduYXR1cmUuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBMjhENEE4MTc3
QjcxQzgwMDA3RkEzQyAvKiBKU1N0cmluZ1JlZlByaXZhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTBGOTE5RDBEMTU3RUUwQTIwMDRBNEU3RCAvKiBKU1N5bWJvbFRhYmxlT2JqZWN0LmggaW4gSGVh
ZGVycyAqLywKIAkJCQk3MEVDQTYwNjFBRkRCRUEyMDA0NDk3MzkgLyogSlNUZW1wbGF0ZVJlZ2lz
dHJ5S2V5LmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9DYWxsVmFyaWFudC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0NhbGxWYXJpYW50LmgKaW5kZXggZGU2ODgwMDZlZjFhOTllOWRkNjBiMDFhNmUwMTc3Y2I5OGVj
N2I1MS4uY2IyODhjNjBiN2E0ZjEzOGJhZjIxNDI4NDllMTM5MWE4ZDExMWJhNyAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxWYXJpYW50LmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxWYXJpYW50LmgKQEAgLTI4LDYgKzI4LDcg
QEAKICNpbmNsdWRlICJGdW5jdGlvbkV4ZWN1dGFibGUuaCIKICNpbmNsdWRlICJKU0NlbGwuaCIK
ICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCisjaW5jbHVkZSAiTmF0aXZlRXhlY3V0YWJsZS5oIgog
CiBuYW1lc3BhY2UgSlNDIHsKIApAQCAtMTIwLDYgKzEyMSwyMCBAQCBjbGFzcyBDYWxsVmFyaWFu
dCB7CiAgICAgICAgICAgICByZXR1cm4ganNEeW5hbWljQ2FzdDxGdW5jdGlvbkV4ZWN1dGFibGUq
PihleGVjdXRhYmxlKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQorCisgICAgTmF0
aXZlRXhlY3V0YWJsZSogbmF0aXZlRXhlY3V0YWJsZSgpIGNvbnN0CisgICAgeworICAgICAgICBp
ZiAoRXhlY3V0YWJsZUJhc2UqIGV4ZWN1dGFibGUgPSB0aGlzLT5leGVjdXRhYmxlKCkpCisgICAg
ICAgICAgICByZXR1cm4ganNEeW5hbWljQ2FzdDxOYXRpdmVFeGVjdXRhYmxlKj4oZXhlY3V0YWJs
ZSk7CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KKworICAgIGNvbnN0IERPTUpJVDo6
U2lnbmF0dXJlKiBzaWduYXR1cmVGb3IoQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kKSBjb25z
dAorICAgIHsKKyAgICAgICAgaWYgKE5hdGl2ZUV4ZWN1dGFibGUqIG5hdGl2ZUV4ZWN1dGFibGUg
PSB0aGlzLT5uYXRpdmVFeGVjdXRhYmxlKCkpCisgICAgICAgICAgICByZXR1cm4gbmF0aXZlRXhl
Y3V0YWJsZS0+c2lnbmF0dXJlRm9yKGtpbmQpOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAg
ICB9CiAgICAgCiAgICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0OwogICAgIApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NwZWN1bGF0ZWRUeXBl
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3BlY3VsYXRlZFR5cGUuaAppbmRl
eCBmNDNkZmNkMzE1ODcxZTk4OTUzZWEyZGRkYzRiZjMzNTI1Y2NkZmRmLi5lMjNmZDJjNWY1NGNl
ZTA5YzdhMjNiZGMxNDk5OTBiNjA5YjAxOTAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvU3BlY3VsYXRlZFR5cGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvU3BlY3VsYXRlZFR5cGUuaApAQCAtMTUxLDYgKzE1MSwxMSBAQCBpbmxpbmUg
Ym9vbCBpc1N0cmluZ1NwZWN1bGF0aW9uKFNwZWN1bGF0ZWRUeXBlIHZhbHVlKQogICAgIHJldHVy
biAhIXZhbHVlICYmICh2YWx1ZSAmIFNwZWNTdHJpbmcpID09IHZhbHVlOwogfQogCitpbmxpbmUg
Ym9vbCBpc05vdFN0cmluZ1NwZWN1bGF0aW9uKFNwZWN1bGF0ZWRUeXBlIHZhbHVlKQoreworICAg
IHJldHVybiB2YWx1ZSAmJiAhKHZhbHVlICYgU3BlY1N0cmluZyk7Cit9CisKIGlubGluZSBib29s
IGlzU3RyaW5nT3JPdGhlclNwZWN1bGF0aW9uKFNwZWN1bGF0ZWRUeXBlIHZhbHVlKQogewogICAg
IHJldHVybiAhIXZhbHVlICYmICh2YWx1ZSAmIChTcGVjU3RyaW5nIHwgU3BlY090aGVyKSkgPT0g
dmFsdWU7CkBAIC0zMDMsNiArMzA4LDExIEBAIGlubGluZSBib29sIGlzSW50MzJTcGVjdWxhdGlv
bihTcGVjdWxhdGVkVHlwZSB2YWx1ZSkKICAgICByZXR1cm4gdmFsdWUgJiYgISh2YWx1ZSAmIH5T
cGVjSW50MzJPbmx5KTsKIH0KIAoraW5saW5lIGJvb2wgaXNOb3RJbnQzMlNwZWN1bGF0aW9uKFNw
ZWN1bGF0ZWRUeXBlIHZhbHVlKQoreworICAgIHJldHVybiB2YWx1ZSAmJiAhKHZhbHVlICYgU3Bl
Y0ludDMyT25seSk7Cit9CisKIGlubGluZSBib29sIGlzSW50MzJPckJvb2xlYW5TcGVjdWxhdGlv
bihTcGVjdWxhdGVkVHlwZSB2YWx1ZSkKIHsKICAgICByZXR1cm4gdmFsdWUgJiYgISh2YWx1ZSAm
IH4oU3BlY0Jvb2xlYW4gfCBTcGVjSW50MzJPbmx5KSk7CkBAIC0zODgsNiArMzk4LDExIEBAIGlu
bGluZSBib29sIGlzQm9vbGVhblNwZWN1bGF0aW9uKFNwZWN1bGF0ZWRUeXBlIHZhbHVlKQogICAg
IHJldHVybiB2YWx1ZSA9PSBTcGVjQm9vbGVhbjsKIH0KIAoraW5saW5lIGJvb2wgaXNOb3RCb29s
ZWFuU3BlY3VsYXRpb24oU3BlY3VsYXRlZFR5cGUgdmFsdWUpCit7CisgICAgcmV0dXJuIHZhbHVl
ICYmICEodmFsdWUgJiBTcGVjQm9vbGVhbik7Cit9CisKIGlubGluZSBib29sIGlzT3RoZXJTcGVj
dWxhdGlvbihTcGVjdWxhdGVkVHlwZSB2YWx1ZSkKIHsKICAgICByZXR1cm4gdmFsdWUgPT0gU3Bl
Y090aGVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFj
dEludGVycHJldGVySW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0
cmFjdEludGVycHJldGVySW5saW5lcy5oCmluZGV4IDFkMWYzMDg5YWU5MGQ0NTVkYTBhMTNlZTMw
ZmI5MjAyZGE4MTRiNzkuLjJlNTYzNTc5YzBjMWVhZDhkZTQyOGUzZGEwZWVhMWQxMTJjNzA3NjAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnBy
ZXRlcklubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0
SW50ZXJwcmV0ZXJJbmxpbmVzLmgKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJBcnJheUNv
bnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAiREZHQWJzdHJhY3RJbnRlcnByZXRlci5oIgogI2luY2x1
ZGUgIkRPTUpJVEdldHRlclNldHRlci5oIgorI2luY2x1ZGUgIkRPTUpJVFNpZ25hdHVyZS5oIgog
I2luY2x1ZGUgIkdldEJ5SWRTdGF0dXMuaCIKICNpbmNsdWRlICJHZXR0ZXJTZXR0ZXIuaCIKICNp
bmNsdWRlICJIYXNoTWFwSW1wbC5oIgpAQCAtMjMwMSw2ICsyMzAyLDEzIEBAIGJvb2wgQWJzdHJh
Y3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3RzKHVuc2lnbmVk
IGNsb2JiZXJMaW1pCiAgICAgICAgIGZvck5vZGUobm9kZSkuc2V0VHlwZShtX2dyYXBoLCBjYWxs
RE9NR2V0dGVyRGF0YS0+ZG9tSklULT5yZXN1bHRUeXBlKCkpOwogICAgICAgICBicmVhazsKICAg
ICB9CisgICAgY2FzZSBDYWxsRE9NOiB7CisgICAgICAgIGNvbnN0IERPTUpJVDo6U2lnbmF0dXJl
KiBzaWduYXR1cmUgPSBub2RlLT5zaWduYXR1cmUoKTsKKyAgICAgICAgaWYgKHNpZ25hdHVyZS0+
ZWZmZWN0LndyaXRlcykKKyAgICAgICAgICAgIGNsb2JiZXJXb3JsZChub2RlLT5vcmlnaW4uc2Vt
YW50aWMsIGNsb2JiZXJMaW1pdCk7CisgICAgICAgIGZvck5vZGUobm9kZSkuc2V0VHlwZShtX2dy
YXBoLCBzaWduYXR1cmUtPnJlc3VsdCk7CisgICAgICAgIGJyZWFrOworICAgIH0KICAgICBjYXNl
IENoZWNrQXJyYXk6IHsKICAgICAgICAgaWYgKG5vZGUtPmFycmF5TW9kZSgpLmFscmVhZHlDaGVj
a2VkKG1fZ3JhcGgsIG5vZGUsIGZvck5vZGUobm9kZS0+Y2hpbGQxKCkpKSkgewogICAgICAgICAg
ICAgbV9zdGF0ZS5zZXRGb3VuZENvbnN0YW50cyh0cnVlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKaW5kZXggMzVkYzA3ODZhODkzNzg1Zjcw
ZjdiMzJjMGNmN2JjZGRlOWE3ZWRkOS4uMGMyNjFkMWM5NDlhYzFkODM5Y2MxZDkzZTdlYjk3Y2Ni
NDBiZDQxNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29k
ZVBhcnNlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBh
cnNlci5jcHAKQEAgLTIxMiw2ICsyMTIsOCBAQCBjbGFzcyBCeXRlQ29kZVBhcnNlciB7CiAgICAg
dGVtcGxhdGU8dHlwZW5hbWUgQ2hlY2tzRnVuY3Rvcj4KICAgICBib29sIGhhbmRsZUludHJpbnNp
Y0NhbGwoTm9kZSogY2FsbGVlLCBpbnQgcmVzdWx0T3BlcmFuZCwgSW50cmluc2ljLCBpbnQgcmVn
aXN0ZXJPZmZzZXQsIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgU3BlY3VsYXRlZFR5
cGUgcHJlZGljdGlvbiwgY29uc3QgQ2hlY2tzRnVuY3RvciYgaW5zZXJ0Q2hlY2tzKTsKICAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBDaGVja3NGdW5jdG9yPgorICAgIGJvb2wgaGFuZGxlRE9NSklUQ2Fs
bChOb2RlKiBjYWxsZWUsIGludCByZXN1bHRPcGVyYW5kLCBjb25zdCBET01KSVQ6OlNpZ25hdHVy
ZSosIGludCByZWdpc3Rlck9mZnNldCwgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBT
cGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uLCBjb25zdCBDaGVja3NGdW5jdG9yJiBpbnNlcnRDaGVj
a3MpOworICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoZWNrc0Z1bmN0b3I+CiAgICAgYm9vbCBoYW5k
bGVJbnRyaW5zaWNHZXR0ZXIoaW50IHJlc3VsdE9wZXJhbmQsIGNvbnN0IEdldEJ5SWRWYXJpYW50
JiBpbnRyaW5zaWNWYXJpYW50LCBOb2RlKiB0aGlzTm9kZSwgY29uc3QgQ2hlY2tzRnVuY3RvciYg
aW5zZXJ0Q2hlY2tzKTsKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGVja3NGdW5jdG9yPgogICAg
IGJvb2wgaGFuZGxlVHlwZWRBcnJheUNvbnN0cnVjdG9yKGludCByZXN1bHRPcGVyYW5kLCBJbnRl
cm5hbEZ1bmN0aW9uKiwgaW50IHJlZ2lzdGVyT2Zmc2V0LCBpbnQgYXJndW1lbnRDb3VudEluY2x1
ZGluZ1RoaXMsIFR5cGVkQXJyYXlUeXBlLCBjb25zdCBDaGVja3NGdW5jdG9yJiBpbnNlcnRDaGVj
a3MpOwpAQCAtODE3LDE4ICs4MTksMTggQEAgY2xhc3MgQnl0ZUNvZGVQYXJzZXIgewogICAgIH0K
ICAgICAKICAgICBOb2RlKiBhZGRDYWxsKAotICAgICAgICBpbnQgcmVzdWx0LCBOb2RlVHlwZSBv
cCwgT3BJbmZvIG9wSW5mbywgTm9kZSogY2FsbGVlLCBpbnQgYXJnQ291bnQsIGludCByZWdpc3Rl
ck9mZnNldCwKKyAgICAgICAgaW50IHJlc3VsdCwgTm9kZVR5cGUgb3AsIGNvbnN0IERPTUpJVDo6
U2lnbmF0dXJlKiBzaWduYXR1cmUsIE5vZGUqIGNhbGxlZSwgaW50IGFyZ0NvdW50LCBpbnQgcmVn
aXN0ZXJPZmZzZXQsCiAgICAgICAgIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24pCiAgICAgewog
ICAgICAgICBpZiAob3AgPT0gVGFpbENhbGwpIHsKICAgICAgICAgICAgIGlmIChhbGxJbmxpbmVG
cmFtZXNBcmVUYWlsQ2FsbHMoKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gYWRkQ2FsbFdpdGhv
dXRTZXR0aW5nUmVzdWx0KG9wLCBPcEluZm8oKSwgY2FsbGVlLCBhcmdDb3VudCwgcmVnaXN0ZXJP
ZmZzZXQsIE9wSW5mbygpKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gYWRkQ2FsbFdpdGhvdXRT
ZXR0aW5nUmVzdWx0KG9wLCBPcEluZm8oc2lnbmF0dXJlKSwgY2FsbGVlLCBhcmdDb3VudCwgcmVn
aXN0ZXJPZmZzZXQsIE9wSW5mbygpKTsKICAgICAgICAgICAgIG9wID0gVGFpbENhbGxJbmxpbmVk
Q2FsbGVyOwogICAgICAgICB9CiAKIAogICAgICAgICBOb2RlKiBjYWxsID0gYWRkQ2FsbFdpdGhv
dXRTZXR0aW5nUmVzdWx0KAotICAgICAgICAgICAgb3AsIG9wSW5mbywgY2FsbGVlLCBhcmdDb3Vu
dCwgcmVnaXN0ZXJPZmZzZXQsIE9wSW5mbyhwcmVkaWN0aW9uKSk7CisgICAgICAgICAgICBvcCwg
T3BJbmZvKHNpZ25hdHVyZSksIGNhbGxlZSwgYXJnQ291bnQsIHJlZ2lzdGVyT2Zmc2V0LCBPcElu
Zm8ocHJlZGljdGlvbikpOwogICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgcmVzdWx0UmVnKHJlc3Vs
dCk7CiAgICAgICAgIGlmIChyZXN1bHRSZWcuaXNWYWxpZCgpKQogICAgICAgICAgICAgc2V0KHJl
c3VsdFJlZywgY2FsbCk7CkBAIC0xMjgzLDcgKzEyODUsNyBAQCBCeXRlQ29kZVBhcnNlcjo6VGVy
bWluYWxpdHkgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUNhbGwoCiAgICAgICAgIC8vIE9kZGx5LCB0
aGlzIGNvbmZsYXRlcyBjYWxscyB0aGF0IGhhdmVuJ3QgZXhlY3V0ZWQgd2l0aCBjYWxscyB0aGF0
IGJlaGF2ZWQgc3VmZmljaWVudGx5IHBvbHltb3JwaGljYWxseQogICAgICAgICAvLyB0aGF0IHdl
IGNhbm5vdCBvcHRpbWl6ZSB0aGVtLgogCi0gICAgICAgIE5vZGUqIGNhbGxOb2RlID0gYWRkQ2Fs
bChyZXN1bHQsIG9wLCBPcEluZm8oKSwgY2FsbFRhcmdldCwgYXJndW1lbnRDb3VudEluY2x1ZGlu
Z1RoaXMsIHJlZ2lzdGVyT2Zmc2V0LCBwcmVkaWN0aW9uKTsKKyAgICAgICAgTm9kZSogY2FsbE5v
ZGUgPSBhZGRDYWxsKHJlc3VsdCwgb3AsIG51bGxwdHIsIGNhbGxUYXJnZXQsIGFyZ3VtZW50Q291
bnRJbmNsdWRpbmdUaGlzLCByZWdpc3Rlck9mZnNldCwgcHJlZGljdGlvbik7CiAgICAgICAgIGlm
IChjYWxsTm9kZS0+b3AoKSA9PSBUYWlsQ2FsbCkKICAgICAgICAgICAgIHJldHVybiBUZXJtaW5h
bDsKICAgICAgICAgQVNTRVJUKGNhbGxOb2RlLT5vcCgpICE9IFRhaWxDYWxsVmFyYXJncyAmJiBj
YWxsTm9kZS0+b3AoKSAhPSBUYWlsQ2FsbEZvcndhcmRWYXJhcmdzKTsKQEAgLTEyOTgsNyArMTMw
MCw3IEBAIEJ5dGVDb2RlUGFyc2VyOjpUZXJtaW5hbGl0eSBCeXRlQ29kZVBhcnNlcjo6aGFuZGxl
Q2FsbCgKICAgICAgICAgcmV0dXJuIE5vblRlcm1pbmFsOwogICAgIH0KICAgICAKLSAgICBOb2Rl
KiBjYWxsTm9kZSA9IGFkZENhbGwocmVzdWx0LCBvcCwgT3BJbmZvKCksIGNhbGxUYXJnZXQsIGFy
Z3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCByZWdpc3Rlck9mZnNldCwgcHJlZGljdGlvbik7Cisg
ICAgTm9kZSogY2FsbE5vZGUgPSBhZGRDYWxsKHJlc3VsdCwgb3AsIG51bGxwdHIsIGNhbGxUYXJn
ZXQsIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCByZWdpc3Rlck9mZnNldCwgcHJlZGljdGlv
bik7CiAgICAgaWYgKGNhbGxOb2RlLT5vcCgpID09IFRhaWxDYWxsKQogICAgICAgICByZXR1cm4g
VGVybWluYWw7CiAgICAgQVNTRVJUKGNhbGxOb2RlLT5vcCgpICE9IFRhaWxDYWxsVmFyYXJncyAm
JiBjYWxsTm9kZS0+b3AoKSAhPSBUYWlsQ2FsbEZvcndhcmRWYXJhcmdzKTsKQEAgLTE3MjUsNiAr
MTcyNywxOSBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjphdHRlbXB0VG9JbmxpbmVDYWxsKE5vZGUq
IGNhbGxUYXJnZXROb2RlLCBpbnQgcmVzdWx0T3BlcmFuZAogICAgICAgICAgICAgUkVMRUFTRV9B
U1NFUlQoIWRpZEluc2VydENoZWNrcyk7CiAgICAgICAgICAgICAvLyBXZSBtaWdodCBzdGlsbCB0
cnkgdG8gaW5saW5lIHRoZSBJbnRyaW5zaWMgYmVjYXVzZSBpdCBtaWdodCBiZSBhIGJ1aWx0aW4g
SlMgZnVuY3Rpb24uCiAgICAgICAgIH0KKworICAgICAgICBpZiAoT3B0aW9uczo6dXNlRE9NSklU
KCkpIHsKKyAgICAgICAgICAgIGlmIChjb25zdCBET01KSVQ6OlNpZ25hdHVyZSogc2lnbmF0dXJl
ID0gY2FsbGVlLnNpZ25hdHVyZUZvcihzcGVjaWFsaXphdGlvbktpbmQpKSB7CisgICAgICAgICAg
ICAgICAgaWYgKGhhbmRsZURPTUpJVENhbGwoY2FsbFRhcmdldE5vZGUsIHJlc3VsdE9wZXJhbmQs
IHNpZ25hdHVyZSwgcmVnaXN0ZXJPZmZzZXQsIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBw
cmVkaWN0aW9uLCBpbnNlcnRDaGVja3NXaXRoQWNjb3VudGluZykpIHsKKyAgICAgICAgICAgICAg
ICAgICAgUkVMRUFTRV9BU1NFUlQoZGlkSW5zZXJ0Q2hlY2tzKTsKKyAgICAgICAgICAgICAgICAg
ICAgYWRkVG9HcmFwaChQaGFudG9tLCBjYWxsVGFyZ2V0Tm9kZSk7CisgICAgICAgICAgICAgICAg
ICAgIGVtaXRBcmd1bWVudFBoYW50b21zKHJlZ2lzdGVyT2Zmc2V0LCBhcmd1bWVudENvdW50SW5j
bHVkaW5nVGhpcyk7CisgICAgICAgICAgICAgICAgICAgIGlubGluaW5nQmFsYW5jZS0tOworICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICAgICAgUkVMRUFTRV9BU1NFUlQoIWRpZEluc2VydENoZWNrcyk7CisgICAgICAgICAgICB9
CisgICAgICAgIH0KICAgICB9CiAgICAgCiAgICAgdW5zaWduZWQgbXlJbmxpbmluZ0Nvc3QgPSBp
bmxpbmluZ0Nvc3QoY2FsbGVlLCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgSW5saW5lQ2Fs
bEZyYW1lOjpjYWxsTW9kZUZvcihraW5kKSk7CkBAIC0yMDUwLDcgKzIwNjUsNyBAQCBib29sIEJ5
dGVDb2RlUGFyc2VyOjpoYW5kbGVJbmxpbmluZygKICAgICBOb2RlKiBteUNhbGxUYXJnZXROb2Rl
ID0gZ2V0RGlyZWN0KGNhbGxlZVJlZyk7CiAgICAgaWYgKGNvdWxkVGFrZVNsb3dQYXRoKSB7CiAg
ICAgICAgIGFkZENhbGwoCi0gICAgICAgICAgICByZXN1bHRPcGVyYW5kLCBjYWxsT3AsIE9wSW5m
bygpLCBteUNhbGxUYXJnZXROb2RlLCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywKKyAgICAg
ICAgICAgIHJlc3VsdE9wZXJhbmQsIGNhbGxPcCwgbnVsbHB0ciwgbXlDYWxsVGFyZ2V0Tm9kZSwg
YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsCiAgICAgICAgICAgICByZWdpc3Rlck9mZnNldCwg
cHJlZGljdGlvbik7CiAgICAgfSBlbHNlIHsKICAgICAgICAgYWRkVG9HcmFwaChDaGVja0JhZENl
bGwpOwpAQCAtMjYwMCw2ICsyNjE1LDIwIEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUlu
dHJpbnNpY0NhbGwoTm9kZSogY2FsbGVlLCBpbnQgcmVzdWx0T3BlcmFuZCwgSW50cmluCiB9CiAK
IHRlbXBsYXRlPHR5cGVuYW1lIENoZWNrc0Z1bmN0b3I+Citib29sIEJ5dGVDb2RlUGFyc2VyOjpo
YW5kbGVET01KSVRDYWxsKE5vZGUqIGNhbGxUYXJnZXQsIGludCByZXN1bHRPcGVyYW5kLCBjb25z
dCBET01KSVQ6OlNpZ25hdHVyZSogc2lnbmF0dXJlLCBpbnQgcmVnaXN0ZXJPZmZzZXQsIGludCBh
cmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbiwgY29u
c3QgQ2hlY2tzRnVuY3RvciYgaW5zZXJ0Q2hlY2tzKQoreworICAgIGlmIChhcmd1bWVudENvdW50
SW5jbHVkaW5nVGhpcyAhPSBzdGF0aWNfY2FzdDxpbnQ+KDEgKyBzaWduYXR1cmUtPmFyZ3VtZW50
Q291bnQpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKG1faW5saW5lU3RhY2tUb3At
Pm1fZXhpdFByb2ZpbGUuaGFzRXhpdFNpdGUobV9jdXJyZW50SW5kZXgsIEJhZFR5cGUpKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpbnNlcnRDaGVja3MoKTsKKyAgICBhZGRDYWxsKHJl
c3VsdE9wZXJhbmQsIENhbGwsIHNpZ25hdHVyZSwgY2FsbFRhcmdldCwgYXJndW1lbnRDb3VudElu
Y2x1ZGluZ1RoaXMsIHJlZ2lzdGVyT2Zmc2V0LCBwcmVkaWN0aW9uKTsKKyAgICByZXR1cm4gdHJ1
ZTsKK30KKworCit0ZW1wbGF0ZTx0eXBlbmFtZSBDaGVja3NGdW5jdG9yPgogYm9vbCBCeXRlQ29k
ZVBhcnNlcjo6aGFuZGxlSW50cmluc2ljR2V0dGVyKGludCByZXN1bHRPcGVyYW5kLCBjb25zdCBH
ZXRCeUlkVmFyaWFudCYgdmFyaWFudCwgTm9kZSogdGhpc05vZGUsIGNvbnN0IENoZWNrc0Z1bmN0
b3ImIGluc2VydENoZWNrcykKIHsKICAgICBzd2l0Y2ggKHZhcmlhbnQuaW50cmluc2ljKCkpIHsK
QEAgLTQ3OTEsNyArNDgyMCw3IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5z
aWduZWQgbGltaXQpCiAgICAgICAgICAgICBpbnQgY2FsbGVlID0gY3VycmVudEluc3RydWN0aW9u
WzJdLnUub3BlcmFuZDsKICAgICAgICAgICAgIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhp
cyA9IGN1cnJlbnRJbnN0cnVjdGlvblszXS51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBpbnQgcmVn
aXN0ZXJPZmZzZXQgPSAtY3VycmVudEluc3RydWN0aW9uWzRdLnUub3BlcmFuZDsKLSAgICAgICAg
ICAgIGFkZENhbGwocmVzdWx0LCBDYWxsRXZhbCwgT3BJbmZvKCksIGdldChWaXJ0dWFsUmVnaXN0
ZXIoY2FsbGVlKSksIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCByZWdpc3Rlck9mZnNldCwg
Z2V0UHJlZGljdGlvbigpKTsKKyAgICAgICAgICAgIGFkZENhbGwocmVzdWx0LCBDYWxsRXZhbCwg
bnVsbHB0ciwgZ2V0KFZpcnR1YWxSZWdpc3RlcihjYWxsZWUpKSwgYXJndW1lbnRDb3VudEluY2x1
ZGluZ1RoaXMsIHJlZ2lzdGVyT2Zmc2V0LCBnZXRQcmVkaWN0aW9uKCkpOwogICAgICAgICAgICAg
TkVYVF9PUENPREUob3BfY2FsbF9ldmFsKTsKICAgICAgICAgfQogICAgICAgICAgICAgCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCmluZGV4IDVhMzI5NGQwNTFjMzc4
N2ZjMGNlMThiMDk3ZTM0NDU5ZDA3OWQ0MmQuLjRhYTI2NWI4Y2NhYjFiZGNlNGUzMTMwYTE2YWY0
OGI2YTU0OGVhOTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xv
YmJlcml6ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5o
CkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAiREZHTGF6eU5vZGUuaCIKICNpbmNsdWRlICJE
RkdQdXJlVmFsdWUuaCIKICNpbmNsdWRlICJET01KSVRDYWxsRE9NR2V0dGVyUGF0Y2hwb2ludC5o
IgorI2luY2x1ZGUgIkRPTUpJVFNpZ25hdHVyZS5oIgogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNw
YWNlIERGRyB7CiAKQEAgLTk1MiwyMCArOTUzLDM4IEBAIHZvaWQgY2xvYmJlcml6ZShHcmFwaCYg
Z3JhcGgsIE5vZGUqIG5vZGUsIGNvbnN0IFJlYWRGdW5jdG9yJiByZWFkLCBjb25zdCBXcml0ZUZ1
CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgd3JpdGUoQWJzdHJhY3RIZWFwKERP
TVN0YXRlLCBlZmZlY3Qud3JpdGVzLnJhd1JlcHJlc2VudGF0aW9uKCkpKTsKICAgICAgICAgfQot
ICAgICAgICBpZiAoZWZmZWN0LmRlZikgewotICAgICAgICAgICAgRE9NSklUOjpIZWFwUmFuZ2Ug
cmFuZ2UgPSBlZmZlY3QuZGVmLnZhbHVlKCk7CisgICAgICAgIGlmIChlZmZlY3QuZGVmICE9IERP
TUpJVDo6SGVhcFJhbmdlOjp0b3AoKSkgeworICAgICAgICAgICAgRE9NSklUOjpIZWFwUmFuZ2Ug
cmFuZ2UgPSBlZmZlY3QuZGVmOwogICAgICAgICAgICAgaWYgKHJhbmdlID09IERPTUpJVDo6SGVh
cFJhbmdlOjpub25lKCkpCiAgICAgICAgICAgICAgICAgZGVmKFB1cmVWYWx1ZShub2RlLCBub2Rl
LT5jYWxsRE9NR2V0dGVyRGF0YSgpLT5kb21KSVQpKTsKICAgICAgICAgICAgIGVsc2UgewogICAg
ICAgICAgICAgICAgIC8vIERlZiB3aXRoIGhlYXAgbG9jYXRpb24uIFdlIGRvIG5vdCBpbmNsdWRl
ICJHbG9iYWxPYmplY3QiIGZvciB0aGF0IHNpbmNlIHRoaXMgaW5mb3JtYXRpb24gaXMgaW5jbHVk
ZWQgaW4gdGhlIGJhc2Ugbm9kZS4KLSAgICAgICAgICAgICAgICAvLyBGSVhNRTogV2hlbiBzdXBw
b3J0aW5nIHRoZSBvdGhlciBub2RlcyBsaWtlIGdldEVsZW1lbnRCeUlkKCJzdHJpbmciKSwgd2Ug
c2hvdWxkIGluY2x1ZGUgdGhlIGJhc2UgYW5kIHRoZSBpZCBzdHJpbmcuCi0gICAgICAgICAgICAg
ICAgLy8gQ3VycmVudGx5LCB3ZSBvbmx5IHNlZSB0aGUgRE9NSklUIGdldHRlciBoZXJlLiBTbyBq
dXN0IGluY2x1ZGluZyAiYmFzZSIgaXMgb2suCisgICAgICAgICAgICAgICAgLy8gV2Ugb25seSBz
ZWUgdGhlIERPTUpJVCBnZXR0ZXIgaGVyZS4gU28ganVzdCBpbmNsdWRpbmcgImJhc2UiIGlzIG9r
LgogICAgICAgICAgICAgICAgIGRlZihIZWFwTG9jYXRpb24oRE9NU3RhdGVMb2MsIEFic3RyYWN0
SGVhcChET01TdGF0ZSwgcmFuZ2UucmF3UmVwcmVzZW50YXRpb24oKSksIG5vZGUtPmNoaWxkMSgp
KSwgTGF6eU5vZGUobm9kZSkpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKKyAgICBjYXNlIENhbGxET006IHsKKyAgICAgICAgY29uc3QgRE9NSklU
OjpTaWduYXR1cmUqIHNpZ25hdHVyZSA9IG5vZGUtPnNpZ25hdHVyZSgpOworICAgICAgICBET01K
SVQ6OkVmZmVjdCBlZmZlY3QgPSBzaWduYXR1cmUtPmVmZmVjdDsKKyAgICAgICAgaWYgKGVmZmVj
dC5yZWFkcykgeworICAgICAgICAgICAgaWYgKGVmZmVjdC5yZWFkcyA9PSBET01KSVQ6OkhlYXBS
YW5nZTo6dG9wKCkpCisgICAgICAgICAgICAgICAgcmVhZChXb3JsZCk7CisgICAgICAgICAgICBl
bHNlCisgICAgICAgICAgICAgICAgcmVhZChBYnN0cmFjdEhlYXAoRE9NU3RhdGUsIGVmZmVjdC5y
ZWFkcy5yYXdSZXByZXNlbnRhdGlvbigpKSk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGVmZmVj
dC53cml0ZXMpIHsKKyAgICAgICAgICAgIGlmIChlZmZlY3Qud3JpdGVzID09IERPTUpJVDo6SGVh
cFJhbmdlOjp0b3AoKSkKKyAgICAgICAgICAgICAgICB3cml0ZShIZWFwKTsKKyAgICAgICAgICAg
IGVsc2UKKyAgICAgICAgICAgICAgICB3cml0ZShBYnN0cmFjdEhlYXAoRE9NU3RhdGUsIGVmZmVj
dC53cml0ZXMucmF3UmVwcmVzZW50YXRpb24oKSkpOworICAgICAgICB9CisgICAgICAgIEFTU0VS
VF9XSVRIX01FU1NBR0UoZWZmZWN0LmRlZiA9PSBET01KSVQ6OkhlYXBSYW5nZTo6dG9wKCksICJD
dXJyZW50bHksIHdlIGRvIG5vdCBhY2NlcHQgYW55IGRlZiBmb3IgQ2FsbERPTS4iKTsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKwogICAgIGNhc2UgQXJyYXlpZnk6CiAgICAgY2FzZSBBcnJheWlm
eVRvU3RydWN0dXJlOgogICAgICAgICByZWFkKEpTQ2VsbF9zdHJ1Y3R1cmVJRCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAKaW5kZXggY2I0OGU1YzNmZTMzMTIzMmZkZTIw
NDUxMWJmNWM4NjU5Y2YzNzA4MS4uN2Q0ZGRmYjBiY2RmM2NiYmUyNjUzOTA1NDQwODgyZjk1ZTI2
YzcyMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcApAQCAtMzAwLDYg
KzMwMCw3IEBAIGJvb2wgZG9lc0dDKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSkKICAgICBjYXNl
IENyZWF0ZVJlc3Q6CiAgICAgY2FzZSBUb0xvd2VyQ2FzZToKICAgICBjYXNlIENhbGxET01HZXR0
ZXI6CisgICAgY2FzZSBDYWxsRE9NOgogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgCiAg
ICAgY2FzZSBNdWx0aVB1dEJ5T2Zmc2V0OgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Rml4dXBQaGFzZS5jcHAKaW5kZXggNzhmZTBlOWRmZTc3ZWFkZTVlYmYyYTg4MzJjOWY2NWRkODkz
YzgzZS4uNzJjNGVkM2I3YTdkMDQ4MWM4NmQ5ZGNkZmU3M2E5NTExZDA4ZjY3NSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCkBAIC0xNzA3LDkgKzE3MDcs
MTAgQEAgY2xhc3MgRml4dXBQaGFzZSA6IHB1YmxpYyBQaGFzZSB7CiAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgfQogCi0gICAgICAgIGNhc2UgQ2hlY2tET006Ci0gICAgICAgICAgICBmaXhF
ZGdlPENlbGxVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgY2FzZSBDaGVja0RPTTogewor
ICAgICAgICAgICAgZml4dXBDaGVja0RPTShub2RlKTsKICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICB9CiAKICAgICAgICAgY2FzZSBDYWxsRE9NR2V0dGVyOiB7CiAgICAgICAgICAgICBET01K
SVQ6OkNhbGxET01HZXR0ZXJQYXRjaHBvaW50KiBwYXRjaHBvaW50ID0gbm9kZS0+Y2FsbERPTUdl
dHRlckRhdGEoKS0+cGF0Y2hwb2ludDsKQEAgLTE3MTksNiArMTcyMCwxNiBAQCBjbGFzcyBGaXh1
cFBoYXNlIDogcHVibGljIFBoYXNlIHsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAK
KyAgICAgICAgY2FzZSBDYWxsRE9NOiB7CisgICAgICAgICAgICBmaXh1cENhbGxET00obm9kZSk7
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAgIGNhc2UgQ2FsbDogewor
ICAgICAgICAgICAgYXR0ZW1wdFRvTWFrZUNhbGxET00obm9kZSk7CisgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgfQorCiAjaWYgIUFTU0VSVF9ESVNBQkxFRAogICAgICAgICAvLyBIYXZlIHRo
ZXNlIG5vLW9wIGNhc2VzIGhlcmUgdG8gZW5zdXJlIHRoYXQgbm9ib2R5IGZvcmdldHMgdG8gYWRk
IGhhbmRsZXJzIGZvciBuZXcgb3Bjb2Rlcy4KICAgICAgICAgY2FzZSBTZXRBcmd1bWVudDoKQEAg
LTE3MzUsNyArMTc0Niw2IEBAIGNsYXNzIEZpeHVwUGhhc2UgOiBwdWJsaWMgUGhhc2UgewogICAg
ICAgICBjYXNlIEdldEdsb2JhbFZhcjoKICAgICAgICAgY2FzZSBHZXRHbG9iYWxMZXhpY2FsVmFy
aWFibGU6CiAgICAgICAgIGNhc2UgTm90aWZ5V3JpdGU6Ci0gICAgICAgIGNhc2UgQ2FsbDoKICAg
ICAgICAgY2FzZSBEaXJlY3RDYWxsOgogICAgICAgICBjYXNlIENoZWNrVHlwZUluZm9GbGFnczoK
ICAgICAgICAgY2FzZSBUYWlsQ2FsbElubGluZWRDYWxsZXI6CkBAIC0yNjU4LDYgKzI2NjgsOTAg
QEAgY2xhc3MgRml4dXBQaGFzZSA6IHB1YmxpYyBQaGFzZSB7CiAgICAgICAgICAgICBPcEluZm8o
YXJyYXlNb2RlLmFzV29yZCgpKSwgRWRnZShjaGlsZCwgS25vd25DZWxsVXNlKSwgRWRnZShzdG9y
YWdlKSk7CiAgICAgfQogICAgIAorICAgIGJvb2wgYXR0ZW1wdFRvTWFrZUNhbGxET00oTm9kZSog
bm9kZSkKKyAgICB7CisgICAgICAgIGlmIChtX2dyYXBoLmhhc0V4aXRTaXRlKG5vZGUtPm9yaWdp
bi5zZW1hbnRpYywgQmFkVHlwZSkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAg
ICAgY29uc3QgRE9NSklUOjpTaWduYXR1cmUqIHNpZ25hdHVyZSA9IG5vZGUtPnNpZ25hdHVyZSgp
OworICAgICAgICBpZiAoIXNpZ25hdHVyZSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKwor
ICAgICAgICB7CisgICAgICAgICAgICB1bnNpZ25lZCBpbmRleCA9IDA7CisgICAgICAgICAgICBi
b29sIHNob3VsZENvbnZlcnRUb0NhbGxET00gPSB0cnVlOworICAgICAgICAgICAgbV9ncmFwaC5k
b1RvQ2hpbGRyZW4obm9kZSwgWyZdKEVkZ2UmIGVkZ2UpIHsKKyAgICAgICAgICAgICAgICAvLyBD
YWxsZWUuIElnbm9yZSB0aGlzLiBERkdCeXRlQ29kZVBhcnNlciBhbHJlYWR5IGVtaXQgYXBwcm9w
cmlhdGUgY2hlY2tzLgorICAgICAgICAgICAgICAgIGlmICghaW5kZXgpCisgICAgICAgICAgICAg
ICAgICAgIHJldHVybjsKKworICAgICAgICAgICAgICAgIGlmIChpbmRleCA9PSAxKSB7CisgICAg
ICAgICAgICAgICAgICAgIC8vIERPTSBub2RlIGNhc2UuCisgICAgICAgICAgICAgICAgICAgIGlm
IChlZGdlLT5zaG91bGRTcGVjdWxhdGVOb3RDZWxsKCkpCisgICAgICAgICAgICAgICAgICAgICAg
ICBzaG91bGRDb252ZXJ0VG9DYWxsRE9NID0gZmFsc2U7CisgICAgICAgICAgICAgICAgfSBlbHNl
IHsKKyAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChzaWduYXR1cmUtPmFyZ3VtZW50c1tpbmRl
eCAtIDJdKSB7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgU3BlY1N0cmluZzoKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGlmIChlZGdlLT5zaG91bGRTcGVjdWxhdGVOb3RTdHJpbmcoKSkKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzaG91bGRDb252ZXJ0VG9DYWxsRE9NID0gZmFsc2U7
CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgY2Fz
ZSBTcGVjSW50MzJPbmx5OgorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVkZ2UtPnNob3Vs
ZFNwZWN1bGF0ZU5vdEludDMyKCkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hvdWxk
Q29udmVydFRvQ2FsbERPTSA9IGZhbHNlOworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICAgICAgICAgIGNhc2UgU3BlY0Jvb2xlYW46CisgICAgICAgICAgICAgICAg
ICAgICAgICBpZiAoZWRnZS0+c2hvdWxkU3BlY3VsYXRlTm90Qm9vbGVhbigpKQorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHNob3VsZENvbnZlcnRUb0NhbGxET00gPSBmYWxzZTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgICAgICsraW5kZXg7CisgICAgICAgICAgICB9KTsKKyAg
ICAgICAgICAgIGlmICghc2hvdWxkQ29udmVydFRvQ2FsbERPTSkKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKworICAgICAgICBOb2RlKiB0aGlzTm9kZSA9IG1fZ3Jh
cGgudmFyQXJnQ2hpbGQobm9kZSwgMSkubm9kZSgpOworICAgICAgICBSZWY8RE9NSklUOjpQYXRj
aHBvaW50PiBjaGVja0RPTVBhdGNocG9pbnQgPSBzaWduYXR1cmUtPmNoZWNrRE9NKCk7CisgICAg
ICAgIG1fZ3JhcGgubV9kb21KSVRQYXRjaHBvaW50cy5hcHBlbmQoY2hlY2tET01QYXRjaHBvaW50
LnB0cigpKTsKKyAgICAgICAgTm9kZSogY2hlY2tET00gPSBtX2luc2VydGlvblNldC5pbnNlcnRO
b2RlKG1faW5kZXhJbkJsb2NrLCBTcGVjTm9uZSwgQ2hlY2tET00sIG5vZGUtPm9yaWdpbiwgT3BJ
bmZvKGNoZWNrRE9NUGF0Y2hwb2ludC5wdHIoKSksIE9wSW5mbyhzaWduYXR1cmUtPmNsYXNzSW5m
byksIEVkZ2UodGhpc05vZGUpKTsKKyAgICAgICAgbm9kZS0+Y29udmVydFRvQ2FsbERPTShtX2dy
YXBoKTsKKyAgICAgICAgZml4dXBDaGVja0RPTShjaGVja0RPTSk7CisgICAgICAgIGZpeHVwQ2Fs
bERPTShub2RlKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgdm9pZCBmaXh1
cENoZWNrRE9NKE5vZGUqIG5vZGUpCisgICAgeworICAgICAgICBmaXhFZGdlPENlbGxVc2U+KG5v
ZGUtPmNoaWxkMSgpKTsKKyAgICB9CisKKyAgICB2b2lkIGZpeHVwQ2FsbERPTShOb2RlKiBub2Rl
KQorICAgIHsKKyAgICAgICAgY29uc3QgRE9NSklUOjpTaWduYXR1cmUqIHNpZ25hdHVyZSA9IG5v
ZGUtPnNpZ25hdHVyZSgpOworICAgICAgICBhdXRvIGZpeHVwID0gWyZdKEVkZ2UmIGVkZ2UsIGlu
dCBhcmd1bWVudEluZGV4KSB7CisgICAgICAgICAgICBpZiAoIWVkZ2UpCisgICAgICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICAgICAgc3dpdGNoIChzaWduYXR1cmUtPmFyZ3VtZW50c1thcmd1
bWVudEluZGV4XSkgeworICAgICAgICAgICAgY2FzZSBTcGVjU3RyaW5nOgorICAgICAgICAgICAg
ICAgIGZpeEVkZ2U8U3RyaW5nVXNlPihlZGdlKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgICAgIGNhc2UgU3BlY0ludDMyT25seToKKyAgICAgICAgICAgICAgICBmaXhFZGdlPElu
dDMyVXNlPihlZGdlKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2Ug
U3BlY0Jvb2xlYW46CisgICAgICAgICAgICAgICAgZml4RWRnZTxCb29sZWFuVXNlPihlZGdlKTsK
KyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAg
ICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfTsKKyAgICAgICAgZml4RWRnZTxDZWxsVXNlPihu
b2RlLT5jaGlsZDEoKSk7IC8vIERPTS4KKyAgICAgICAgZml4dXAobm9kZS0+Y2hpbGQyKCksIDAp
OworICAgICAgICBmaXh1cChub2RlLT5jaGlsZDMoKSwgMSk7CisgICAgfQorCiAgICAgdm9pZCBm
aXh1cENoZWNrc0luQmxvY2soQmFzaWNCbG9jayogYmxvY2spCiAgICAgewogICAgICAgICBpZiAo
IWJsb2NrKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5jcHAKaW5kZXggZjM3MTE3YmY5
NjlmZTRiNjlkOTVmMDAxZDU2ODgwNDZiZGNkOTQ1MC4uY2UyNWMwZGQxMzIxMGJlMTJhYjk1Nzkw
MmRiYTY2OWE3YmQ4NmRmYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdOb2RlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuY3BwCkBA
IC0yMjAsNiArMjIwLDI1IEBAIHZvaWQgTm9kZTo6Y29udmVydFRvRGlyZWN0Q2FsbChGcm96ZW5W
YWx1ZSogZXhlY3V0YWJsZSkKICAgICBtX29wSW5mbyA9IGV4ZWN1dGFibGU7CiB9CiAKK3ZvaWQg
Tm9kZTo6Y29udmVydFRvQ2FsbERPTShHcmFwaCYgZ3JhcGgpCit7CisgICAgQVNTRVJUKG9wKCkg
PT0gQ2FsbCk7CisgICAgQVNTRVJUKHNpZ25hdHVyZSgpKTsKKworICAgIEVkZ2UgZWRnZXNbM107
CisgICAgLy8gU2tpcCB0aGUgZmlyc3Qgb25lLiBUaGlzIGlzIGNhbGxlZS4KKyAgICBmb3IgKHVu
c2lnbmVkIGkgPSAxLCBpeiA9IG51bUNoaWxkcmVuKCk7IGkgPCBpejsgKytpKQorICAgICAgICBl
ZGdlc1tpIC0gMV0gPSBncmFwaC52YXJBcmdDaGlsZCh0aGlzLCBpKTsKKworICAgIHNldE9wQW5k
RGVmYXVsdEZsYWdzKENhbGxET00pOworICAgIGNoaWxkcmVuLnNldENoaWxkMShlZGdlc1swXSk7
CisgICAgY2hpbGRyZW4uc2V0Q2hpbGQyKGVkZ2VzWzFdKTsKKyAgICBjaGlsZHJlbi5zZXRDaGls
ZDMoZWRnZXNbMl0pOworCisgICAgaWYgKCFzaWduYXR1cmUoKS0+ZWZmZWN0Lm11c3RHZW5lcmF0
ZSgpKQorICAgICAgICBjbGVhckZsYWdzKE5vZGVNdXN0R2VuZXJhdGUpOworfQorCiBTdHJpbmcg
Tm9kZTo6dHJ5R2V0U3RyaW5nKEdyYXBoJiBncmFwaCkKIHsKICAgICBpZiAoaGFzQ29uc3RhbnQo
KSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgKaW5kZXggYTY3YjI5M2NlODc0NTI3M2Jk
MzMzODFmMzgzM2E1MDNiNDJjNjA0Ny4uYmNlMmZiMDIwOWQ1ZDZhZjc0MmI5NzU2MGU2OGVmYWNj
MTVhYWFiNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgKQEAgLTYyLDYgKzYyLDcg
QEAgbmFtZXNwYWNlIERPTUpJVCB7CiBjbGFzcyBHZXR0ZXJTZXR0ZXI7CiBjbGFzcyBQYXRjaHBv
aW50OwogY2xhc3MgQ2FsbERPTUdldHRlclBhdGNocG9pbnQ7CitjbGFzcyBTaWduYXR1cmU7CiB9
CiAKIG5hbWVzcGFjZSBQcm9maWxlciB7CkBAIC02NTEsNiArNjUyLDggQEAgc3RydWN0IE5vZGUg
ewogICAgIH0KICAgICAKICAgICB2b2lkIGNvbnZlcnRUb0RpcmVjdENhbGwoRnJvemVuVmFsdWUq
KTsKKworICAgIHZvaWQgY29udmVydFRvQ2FsbERPTShHcmFwaCYpOwogICAgIAogICAgIEpTVmFs
dWUgYXNKU1ZhbHVlKCkKICAgICB7CkBAIC0xNDYzLDYgKzE0NjYsNyBAQCBzdHJ1Y3QgTm9kZSB7
CiAgICAgICAgIGNhc2UgVG9OdW1iZXI6CiAgICAgICAgIGNhc2UgTG9hZEZyb21KU01hcEJ1Y2tl
dDoKICAgICAgICAgY2FzZSBDYWxsRE9NR2V0dGVyOgorICAgICAgICBjYXNlIENhbGxET006CiAg
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKQEAgLTE5NzksNiArMTk4MywxMSBAQCBzdHJ1Y3QgTm9kZSB7CiAgICAgewog
ICAgICAgICByZXR1cm4gaXNJbnQzMlNwZWN1bGF0aW9uKHByZWRpY3Rpb24oKSk7CiAgICAgfQor
CisgICAgYm9vbCBzaG91bGRTcGVjdWxhdGVOb3RJbnQzMigpCisgICAgeworICAgICAgICByZXR1
cm4gaXNOb3RJbnQzMlNwZWN1bGF0aW9uKHByZWRpY3Rpb24oKSk7CisgICAgfQogICAgIAogICAg
IGJvb2wgc2F3Qm9vbGVhbnMoKQogICAgIHsKQEAgLTIwMzksNiArMjA0OCwxMSBAQCBzdHJ1Y3Qg
Tm9kZSB7CiAgICAgewogICAgICAgICByZXR1cm4gaXNCb29sZWFuU3BlY3VsYXRpb24ocHJlZGlj
dGlvbigpKTsKICAgICB9CisKKyAgICBib29sIHNob3VsZFNwZWN1bGF0ZU5vdEJvb2xlYW4oKQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIGlzTm90Qm9vbGVhblNwZWN1bGF0aW9uKHByZWRpY3Rpb24o
KSk7CisgICAgfQogICAgIAogICAgIGJvb2wgc2hvdWxkU3BlY3VsYXRlT3RoZXIoKQogICAgIHsK
QEAgLTIwNjQsNiArMjA3OCwxMSBAQCBzdHJ1Y3QgTm9kZSB7CiAgICAgewogICAgICAgICByZXR1
cm4gaXNTdHJpbmdTcGVjdWxhdGlvbihwcmVkaWN0aW9uKCkpOwogICAgIH0KKworICAgIGJvb2wg
c2hvdWxkU3BlY3VsYXRlTm90U3RyaW5nKCkKKyAgICB7CisgICAgICAgIHJldHVybiBpc05vdFN0
cmluZ1NwZWN1bGF0aW9uKHByZWRpY3Rpb24oKSk7CisgICAgfQogIAogICAgIGJvb2wgc2hvdWxk
U3BlY3VsYXRlU3RyaW5nT3JPdGhlcigpCiAgICAgewpAQCAtMjM2Niw2ICsyMzg1LDE4IEBAIHN0
cnVjdCBOb2RlIHsKICAgICAgICAgcmV0dXJuIG1fb3BJbmZvMi5hczxjb25zdCBDbGFzc0luZm8q
PigpOwogICAgIH0KIAorICAgIGJvb2wgaGFzU2lnbmF0dXJlKCkgY29uc3QKKyAgICB7CisgICAg
ICAgIC8vIE5vdGUgdGhhdCB0aGlzIGRvZXMgbm90IGluY2x1ZGUgVGFpbENhbGwgdGhpbmd5IGlu
dGVudGlvbmFsbHkuCisgICAgICAgIC8vIENhbGxET00gdGhpbmd5IGFyZSBhbHdheXMgY29udmVy
dGVkIGZyb20gQ2FsbC4KKyAgICAgICAgcmV0dXJuIG9wKCkgPT0gQ2FsbCB8fCBvcCgpID09IENh
bGxET007CisgICAgfQorCisgICAgY29uc3QgRE9NSklUOjpTaWduYXR1cmUqIHNpZ25hdHVyZSgp
CisgICAgeworICAgICAgICByZXR1cm4gbV9vcEluZm8uYXM8Y29uc3QgRE9NSklUOjpTaWduYXR1
cmUqPigpOworICAgIH0KKwogICAgIE5vZGUqIHJlcGxhY2VtZW50KCkgY29uc3QKICAgICB7CiAg
ICAgICAgIHJldHVybiBtX21pc2MucmVwbGFjZW1lbnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR05vZGVUeXBlLmgKaW5kZXggY2QyNGE0NDMwYTk2YjRjNzg5OWMxMWMzYTNkOTk4ZjBiOTcy
ODMyZi4uYmVmNWY0ZDA5MTk4YjViZmVkMTk3NjcwNWE5YzYwNGZkZDkwMmU3YSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaApAQCAtNDA2LDYgKzQwNiw3IEBAIG5hbWVz
cGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKICAgICAvKiBOb2RlcyBmb3IgRE9NIEpJVCAqL1wK
ICAgICBtYWNybyhDaGVja0RPTSwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKENhbGxE
T01HZXR0ZXIsIE5vZGVSZXN1bHRKUyB8IE5vZGVNdXN0R2VuZXJhdGUpIFwKKyAgICBtYWNybyhD
YWxsRE9NLCBOb2RlUmVzdWx0SlMgfCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAKIC8vIFRoaXMgZW51
bSBnZW5lcmF0ZXMgYSBtb25vdG9uaWNhbGx5IGluY3JlYXNpbmcgaWQgZm9yIGFsbCBOb2RlIHR5
cGVzLAogLy8gYW5kIGlzIHVzZWQgYnkgdGhlIHN1YnNlcXVlbnQgZW51bSB0byBmaWxsIG91dCB0
aGUgaWQgKGFzIGFjY2Vzc2VkIHZpYSB0aGUgTm9kZUlkTWFzaykuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2Uu
Y3BwCmluZGV4IDM5N2U5OTkzYjkyZTk2Y2YyZTlkNTFlM2JkMjg5ZjMwZjgzMzlkNzIuLjA5M2M5
Mzc5NjhhMDdmMjRkNDdhZmJmNjhmYmZjOTNlNWQ5MGYzZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2Uu
Y3BwCkBAIC03MTAsNyArNzEwLDggQEAgY2xhc3MgUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2Ug
OiBwdWJsaWMgUGhhc2UgewogICAgICAgICBjYXNlIEdldEZyb21Bcmd1bWVudHM6CiAgICAgICAg
IGNhc2UgTG9hZEZyb21KU01hcEJ1Y2tldDoKICAgICAgICAgY2FzZSBUb051bWJlcjoKLSAgICAg
ICAgY2FzZSBDYWxsRE9NR2V0dGVyOiB7CisgICAgICAgIGNhc2UgQ2FsbERPTUdldHRlcjoKKyAg
ICAgICAgY2FzZSBDYWxsRE9NOiB7CiAgICAgICAgICAgICBzZXRQcmVkaWN0aW9uKG1fY3VycmVu
dE5vZGUtPmdldEhlYXBQcmVkaWN0aW9uKCkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0
ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgKaW5kZXgg
MGEyZWNkODAwNmIyZDYzMjg4MDA4MTQyZjU4ZGVjMWU0Yzc1N2YyYy4uNWJjODBhOTNlZDVhNDU0
NDY4NzJmNmIyNTc3MTFlN2RkZmE5NjJmYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTYWZlVG9FeGVjdXRlLmgKQEAgLTIyMCw2ICsyMjAsNyBAQCBib29sIHNhZmVUb0V4ZWN1
dGUoQWJzdHJhY3RTdGF0ZVR5cGUmIHN0YXRlLCBHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUpCiAg
ICAgY2FzZSBHZXRFeGVjdXRhYmxlOgogICAgIGNhc2UgR2V0QnV0dGVyZmx5OgogICAgIGNhc2Ug
Q2FsbERPTUdldHRlcjoKKyAgICBjYXNlIENhbGxET006CiAgICAgY2FzZSBDaGVja0RPTToKICAg
ICBjYXNlIENoZWNrQXJyYXk6CiAgICAgY2FzZSBBcnJheWlmeToKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKaW5kZXggN2I1N2IxODkyOTM3MDYx
MGI3M2EwMGNlNWM1MDlkMzFjZmI1NTYxZi4uNDI5NjQ5YzUyOTVlY2MzYjBiOTRiYzQ1YmEwNGQ1
NzMxY2IzMzBlMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVj
dWxhdGl2ZUpJVC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxh
dGl2ZUpJVC5jcHAKQEAgLTcyNTksNiArNzI1OSw4NiBAQCBzdGF0aWMgdm9pZCBhbGxvY2F0ZVRl
bXBvcmFyeVJlZ2lzdGVyc0ZvclBhdGNocG9pbnQoU3BlY3VsYXRpdmVKSVQqIGppdCwgVmVjdG9y
PAogICAgIH0KIH0KIAordm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUNhbGxET00oTm9kZSog
bm9kZSkKK3sKKyAgICBjb25zdCBET01KSVQ6OlNpZ25hdHVyZSogc2lnbmF0dXJlID0gbm9kZS0+
c2lnbmF0dXJlKCk7CisKKyAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGhhdmUgYSB3YXkgdG8gY2Fs
bCBmdW5jdGlvbnMgd2l0aCB0aGUgdmVjdG9yIG9mIHJlZ2lzdGVycy4KKyAgICAvLyBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYzMDk5CisgICAgVmVjdG9yPFZhcmlh
bnQ8U3BlY3VsYXRlQ2VsbE9wZXJhbmQsIFNwZWN1bGF0ZUludDMyT3BlcmFuZCwgU3BlY3VsYXRl
Qm9vbGVhbk9wZXJhbmQ+PiBvcGVyYW5kczsKKyAgICBWZWN0b3I8R1BSUmVnPiByZWdzOworCisg
ICAgYXV0byBhcHBlbmRDZWxsID0gWyZdKEVkZ2UmIGVkZ2UpIHsKKyAgICAgICAgU3BlY3VsYXRl
Q2VsbE9wZXJhbmQgb3BlcmFuZCh0aGlzLCBlZGdlKTsKKyAgICAgICAgcmVncy5hcHBlbmQob3Bl
cmFuZC5ncHIoKSk7CisgICAgICAgIG9wZXJhbmRzLmFwcGVuZChXVEZNb3ZlKG9wZXJhbmQpKTsK
KyAgICB9OworCisgICAgYXV0byBhcHBlbmRTdHJpbmcgPSBbJl0oRWRnZSYgZWRnZSkgeworICAg
ICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBvcGVyYW5kKHRoaXMsIGVkZ2UpOworICAgICAgICBH
UFJSZWcgZ3ByID0gb3BlcmFuZC5ncHIoKTsKKyAgICAgICAgcmVncy5hcHBlbmQoZ3ByKTsKKyAg
ICAgICAgc3BlY3VsYXRlU3RyaW5nKGVkZ2UsIGdwcik7CisgICAgICAgIG9wZXJhbmRzLmFwcGVu
ZChXVEZNb3ZlKG9wZXJhbmQpKTsKKyAgICB9OworCisgICAgYXV0byBhcHBlbmRJbnQzMiA9IFsm
XShFZGdlJiBlZGdlKSB7CisgICAgICAgIFNwZWN1bGF0ZUludDMyT3BlcmFuZCBvcGVyYW5kKHRo
aXMsIGVkZ2UpOworICAgICAgICByZWdzLmFwcGVuZChvcGVyYW5kLmdwcigpKTsKKyAgICAgICAg
b3BlcmFuZHMuYXBwZW5kKFdURk1vdmUob3BlcmFuZCkpOworICAgIH07CisKKyAgICBhdXRvIGFw
cGVuZEJvb2xlYW4gPSBbJl0oRWRnZSYgZWRnZSkgeworICAgICAgICBTcGVjdWxhdGVCb29sZWFu
T3BlcmFuZCBvcGVyYW5kKHRoaXMsIGVkZ2UpOworICAgICAgICByZWdzLmFwcGVuZChvcGVyYW5k
LmdwcigpKTsKKyAgICAgICAgb3BlcmFuZHMuYXBwZW5kKFdURk1vdmUob3BlcmFuZCkpOworICAg
IH07CisKKyAgICB1bnNpZ25lZCBpbmRleCA9IDA7CisgICAgbV9qaXQuZ3JhcGgoKS5kb1RvQ2hp
bGRyZW4obm9kZSwgWyZdKEVkZ2UgZWRnZSkgeworICAgICAgICBpZiAoIWluZGV4KQorICAgICAg
ICAgICAgYXBwZW5kQ2VsbChlZGdlKTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBzd2l0
Y2ggKHNpZ25hdHVyZS0+YXJndW1lbnRzW2luZGV4IC0gMV0pIHsKKyAgICAgICAgICAgIGNhc2Ug
U3BlY1N0cmluZzoKKyAgICAgICAgICAgICAgICBhcHBlbmRTdHJpbmcoZWRnZSk7CisgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIFNwZWNJbnQzMk9ubHk6CisgICAgICAg
ICAgICAgICAgYXBwZW5kSW50MzIoZWRnZSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICBjYXNlIFNwZWNCb29sZWFuOgorICAgICAgICAgICAgICAgIGFwcGVuZEJvb2xlYW4o
ZWRnZSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0K
KyAgICAgICAgKytpbmRleDsKKyAgICB9KTsKKworICAgIEpTVmFsdWVSZWdzVGVtcG9yYXJ5IHJl
c3VsdCh0aGlzKTsKKyAgICBKU1ZhbHVlUmVncyByZXN1bHRSZWdzID0gcmVzdWx0LnJlZ3MoKTsK
KworICAgIHNpbGVudFNwaWxsQWxsUmVnaXN0ZXJzKHJlc3VsdFJlZ3MpOworICAgIGludCBhcmd1
bWVudENvdW50SW5jbHVkaW5nVGhpcyA9IHNpZ25hdHVyZS0+YXJndW1lbnRDb3VudCArIDE7Cisg
ICAgc3dpdGNoIChhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcykgeworICAgIGNhc2UgMToKKyAg
ICAgICAgY2FsbE9wZXJhdGlvbihyZWludGVycHJldF9jYXN0PEpfSklUT3BlcmF0aW9uX0VQPihz
aWduYXR1cmUtPnVuc2FmZUZ1bmN0aW9uKSwgZXh0cmFjdFJlc3VsdChyZXN1bHRSZWdzKSwgcmVn
c1swXSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgMjoKKyAgICAgICAgY2FsbE9wZXJhdGlv
bihyZWludGVycHJldF9jYXN0PEpfSklUT3BlcmF0aW9uX0VQUD4oc2lnbmF0dXJlLT51bnNhZmVG
dW5jdGlvbiksIGV4dHJhY3RSZXN1bHQocmVzdWx0UmVncyksIHJlZ3NbMF0sIHJlZ3NbMV0pOwor
ICAgICAgICBicmVhazsKKyAgICBjYXNlIDM6CisgICAgICAgIGNhbGxPcGVyYXRpb24ocmVpbnRl
cnByZXRfY2FzdDxKX0pJVE9wZXJhdGlvbl9FUFBQPihzaWduYXR1cmUtPnVuc2FmZUZ1bmN0aW9u
KSwgZXh0cmFjdFJlc3VsdChyZXN1bHRSZWdzKSwgcmVnc1swXSwgcmVnc1sxXSwgcmVnc1syXSk7
CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIFJFTEVBU0VfQVNTRVJUX05P
VF9SRUFDSEVEKCk7CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIHNpbGVudEZpbGxBbGxS
ZWdpc3RlcnMocmVzdWx0UmVncyk7CisgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKKyAgICBq
c1ZhbHVlUmVzdWx0KHJlc3VsdFJlZ3MsIG5vZGUpOworfQorCiB2b2lkIFNwZWN1bGF0aXZlSklU
Ojpjb21waWxlQ2FsbERPTUdldHRlcihOb2RlKiBub2RlKQogewogICAgIERPTUpJVDo6Q2FsbERP
TUdldHRlclBhdGNocG9pbnQqIHBhdGNocG9pbnQgPSBub2RlLT5jYWxsRE9NR2V0dGVyRGF0YSgp
LT5wYXRjaHBvaW50OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
cGVjdWxhdGl2ZUpJVC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2
ZUpJVC5oCmluZGV4IDU2NTM4YTI5NDZlNDAzMDBmMDUwZjMzNTUyYTczY2NhNzU5Y2VhY2EuLjc5
NmE4YTM1ZTZkMzA1N2ZhYWJlYTA3OWEwMjAzZDVkNDk5YTk1YjEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKQEAgLTE2NTEsNiArMTY1MSwxMSBA
QCBjbGFzcyBTcGVjdWxhdGl2ZUpJVCB7CiAgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0
aEV4ZWNTdGF0ZShhcmcxLCBhcmcyKTsKICAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1
bHQob3BlcmF0aW9uLCByZXN1bHQpOwogICAgIH0KKyAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxs
T3BlcmF0aW9uKEpfSklUT3BlcmF0aW9uX0VQUFAgb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBH
UFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIsIEdQUlJlZyBhcmczKQorICAgIHsKKyAgICAgICAgbV9q
aXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIsIGFyZzMpOworICAgICAg
ICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CisgICAgfQog
ICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9KSVRPcGVyYXRpb25fRUdQIG9w
ZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyKQogICAgIHsK
ICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIpOwpA
QCAtMTkxNSw2ICsxOTIwLDE2IEBAIGNsYXNzIFNwZWN1bGF0aXZlSklUIHsKICAgICAgICAgbV9q
aXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIFRydXN0ZWRJbW1QdHIocG9pbnRl
cikpOwogICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb24sIHJlc3Vs
dC5wYXlsb2FkR1BSKCksIHJlc3VsdC50YWdHUFIoKSk7CiAgICAgfQorICAgIEpJVENvbXBpbGVy
OjpDYWxsIGNhbGxPcGVyYXRpb24oSl9KSVRPcGVyYXRpb25fRVBQIG9wZXJhdGlvbiwgSlNWYWx1
ZVJlZ3MgcmVzdWx0LCBHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIpCisgICAgeworICAgICAgICBt
X2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMik7CisgICAgICAgIHJl
dHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0LnBheWxvYWRHUFIoKSwg
cmVzdWx0LnRhZ0dQUigpKTsKKyAgICB9CisgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJh
dGlvbihKX0pJVE9wZXJhdGlvbl9FUFBQIG9wZXJhdGlvbiwgSlNWYWx1ZVJlZ3MgcmVzdWx0LCBH
UFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIsIEdQUlJlZyBhcmczKQorICAgIHsKKyAgICAgICAgbV9q
aXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIsIGFyZzMpOworICAgICAg
ICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdC5wYXlsb2FkR1BS
KCksIHJlc3VsdC50YWdHUFIoKSk7CisgICAgfQogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxP
cGVyYXRpb24oSl9KSVRPcGVyYXRpb25fRUdQIG9wZXJhdGlvbiwgSlNWYWx1ZVJlZ3MgcmVzdWx0
LCBHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIpCiAgICAgewogICAgICAgICBtX2ppdC5zZXR1cEFy
Z3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMik7CkBAIC0yNTYyLDYgKzI1NzcsNyBAQCBj
bGFzcyBTcGVjdWxhdGl2ZUpJVCB7CiAgICAgdm9pZCBjb21waWxlUmVhbGxvY2F0ZVByb3BlcnR5
U3RvcmFnZShOb2RlKik7CiAgICAgdm9pZCBjb21waWxlR2V0QnV0dGVyZmx5KE5vZGUqKTsKICAg
ICB2b2lkIGNvbXBpbGVDYWxsRE9NR2V0dGVyKE5vZGUqKTsKKyAgICB2b2lkIGNvbXBpbGVDYWxs
RE9NKE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVDaGVja0RPTShOb2RlKik7CiAgICAgCiAjaWYg
VVNFKEpTVkFMVUUzMl82NCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCmluZGV4IDhmNzJiMWU4ZGI2MWQ3ZjMzZTMwM2QzYjcz
ZDViM2Y1MmJlY2U4ZjguLmFiNThkN2MzMGIxMjNhZDU3Mzg2ZTAwYmM0NTc2YzdjOGZkNTBkYWMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQz
Ml82NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJ
VDMyXzY0LmNwcApAQCAtNTU2MSw2ICs1NTYxLDEwIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgYnJlYWs7CiAgICAgfQogCisgICAgY2FzZSBDYWxs
RE9NOgorICAgICAgICBjb21waWxlQ2FsbERPTShub2RlKTsKKyAgICAgICAgYnJlYWs7CisKICAg
ICBjYXNlIENhbGxET01HZXR0ZXI6CiAgICAgICAgIGNvbXBpbGVDYWxsRE9NR2V0dGVyKG5vZGUp
OwogICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nw
ZWN1bGF0aXZlSklUNjQuY3BwCmluZGV4IGY4OWMxZTY5NzU2OWIzMjhjMWIyZGQ0MjVkZTM1ZTRm
NDJhMzc0ODYuLjExMjY5MDgyMWQzODMyNWIxNGRhMDM5MTliNjcyMWNmZTg4M2NkZDAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcApA
QCAtNTY5Myw2ICs1NjkzLDEwIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSog
bm9kZSkKICAgICAgICAgY29tcGlsZU1hdGVyaWFsaXplTmV3T2JqZWN0KG5vZGUpOwogICAgICAg
ICBicmVhazsKIAorICAgIGNhc2UgQ2FsbERPTToKKyAgICAgICAgY29tcGlsZUNhbGxET00obm9k
ZSk7CisgICAgICAgIGJyZWFrOworCiAgICAgY2FzZSBDYWxsRE9NR2V0dGVyOgogICAgICAgICBj
b21waWxlQ2FsbERPTUdldHRlcihub2RlKTsKICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZG9taml0L0RPTUpJVEVmZmVjdC5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RvbWppdC9ET01KSVRFZmZlY3QuaAppbmRleCA1OWUzMDBjMzkyNjEwNDdhMTEy
MjkwZGE4NmI0ZmExNjhkOWM2MzA2Li42MWNmM2I3MWFiYmNlMzFlNDUxMzZhZjI4NmM2YzdhZjIz
NjY4YTZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZG9taml0L0RPTUpJVEVm
ZmVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kb21qaXQvRE9NSklURWZmZWN0LmgK
QEAgLTI4LDU2ICsyOCw2MiBAQAogI2luY2x1ZGUgIkRPTUpJVEhlYXBSYW5nZS5oIgogI2luY2x1
ZGUgPHd0Zi9PcHRpb25hbC5oPgogCi0jaWYgRU5BQkxFKEpJVCkKLQogbmFtZXNwYWNlIEpTQyB7
IG5hbWVzcGFjZSBET01KSVQgewogCi1zdHJ1Y3QgRWZmZWN0IHsKK2NsYXNzIEVmZmVjdCB7Citw
dWJsaWM6CiAgICAgSGVhcFJhbmdlIHJlYWRzIHsgSGVhcFJhbmdlOjp0b3AoKSB9OwogICAgIEhl
YXBSYW5nZSB3cml0ZXMgeyBIZWFwUmFuZ2U6OnRvcCgpIH07Ci0gICAgT3B0aW9uYWw8SGVhcFJh
bmdlPiBkZWY7CisgICAgSGVhcFJhbmdlIGRlZiB7IEhlYXBSYW5nZTo6dG9wKCkgfTsKKworICAg
IGNvbnN0ZXhwciBFZmZlY3QoKSA9IGRlZmF1bHQ7CisgICAgY29uc3RleHByIEVmZmVjdChIZWFw
UmFuZ2UgcmVhZHMsIEhlYXBSYW5nZSB3cml0ZXMpCisgICAgICAgIDogcmVhZHMocmVhZHMpCisg
ICAgICAgICwgd3JpdGVzKHdyaXRlcykKKyAgICB7CisgICAgfQorCisgICAgY29uc3RleHByIEVm
ZmVjdChIZWFwUmFuZ2UgcmVhZHMsIEhlYXBSYW5nZSB3cml0ZXMsIEhlYXBSYW5nZSBkZWYpCisg
ICAgICAgIDogcmVhZHMocmVhZHMpCisgICAgICAgICwgd3JpdGVzKHdyaXRlcykKKyAgICAgICAg
LCBkZWYoZGVmKQorICAgIHsKKyAgICB9CiAKLSAgICBzdGF0aWMgRWZmZWN0IGZvclJlYWRXcml0
ZShIZWFwUmFuZ2UgcmVhZFJhbmdlLCBIZWFwUmFuZ2Ugd3JpdGVSYW5nZSkKKyAgICBjb25zdGV4
cHIgc3RhdGljIEVmZmVjdCBmb3JXcml0ZShIZWFwUmFuZ2Ugd3JpdGVSYW5nZSkKICAgICB7Ci0g
ICAgICAgIEVmZmVjdCBlZmZlY3Q7Ci0gICAgICAgIGVmZmVjdC5yZWFkcyA9IHJlYWRSYW5nZTsK
LSAgICAgICAgZWZmZWN0LndyaXRlcyA9IHdyaXRlUmFuZ2U7Ci0gICAgICAgIHJldHVybiBlZmZl
Y3Q7CisgICAgICAgIHJldHVybiBFZmZlY3QoSGVhcFJhbmdlOjpub25lKCksIHdyaXRlUmFuZ2Up
OwogICAgIH0KIAotICAgIHN0YXRpYyBFZmZlY3QgZm9yUHVyZSgpCisgICAgY29uc3RleHByIHN0
YXRpYyBFZmZlY3QgZm9yUmVhZChIZWFwUmFuZ2UgcmVhZFJhbmdlKQogICAgIHsKLSAgICAgICAg
RWZmZWN0IGVmZmVjdDsKLSAgICAgICAgZWZmZWN0LnJlYWRzID0gSGVhcFJhbmdlOjpub25lKCk7
Ci0gICAgICAgIGVmZmVjdC53cml0ZXMgPSBIZWFwUmFuZ2U6Om5vbmUoKTsKLSAgICAgICAgZWZm
ZWN0LmRlZiA9IEhlYXBSYW5nZTo6bm9uZSgpOwotICAgICAgICByZXR1cm4gZWZmZWN0OworICAg
ICAgICByZXR1cm4gRWZmZWN0KHJlYWRSYW5nZSwgSGVhcFJhbmdlOjpub25lKCkpOwogICAgIH0K
IAotICAgIHN0YXRpYyBFZmZlY3QgZm9yRGVmKEhlYXBSYW5nZSBkZWYpCisgICAgY29uc3RleHBy
IHN0YXRpYyBFZmZlY3QgZm9yUmVhZFdyaXRlKEhlYXBSYW5nZSByZWFkUmFuZ2UsIEhlYXBSYW5n
ZSB3cml0ZVJhbmdlKQogICAgIHsKLSAgICAgICAgRWZmZWN0IGVmZmVjdDsKLSAgICAgICAgZWZm
ZWN0LnJlYWRzID0gZGVmOwotICAgICAgICBlZmZlY3Qud3JpdGVzID0gSGVhcFJhbmdlOjpub25l
KCk7Ci0gICAgICAgIGVmZmVjdC5kZWYgPSBkZWY7Ci0gICAgICAgIHJldHVybiBlZmZlY3Q7Cisg
ICAgICAgIHJldHVybiBFZmZlY3QocmVhZFJhbmdlLCB3cml0ZVJhbmdlKTsKICAgICB9CiAKLSAg
ICBzdGF0aWMgRWZmZWN0IGZvckRlZihIZWFwUmFuZ2UgZGVmLCBIZWFwUmFuZ2UgcmVhZFJhbmdl
LCBIZWFwUmFuZ2Ugd3JpdGVSYW5nZSkKKyAgICBjb25zdGV4cHIgc3RhdGljIEVmZmVjdCBmb3JQ
dXJlKCkKICAgICB7Ci0gICAgICAgIEVmZmVjdCBlZmZlY3Q7Ci0gICAgICAgIGVmZmVjdC5yZWFk
cyA9IHJlYWRSYW5nZTsKLSAgICAgICAgZWZmZWN0LndyaXRlcyA9IHdyaXRlUmFuZ2U7Ci0gICAg
ICAgIGVmZmVjdC5kZWYgPSBkZWY7Ci0gICAgICAgIHJldHVybiBlZmZlY3Q7CisgICAgICAgIHJl
dHVybiBFZmZlY3QoSGVhcFJhbmdlOjpub25lKCksIEhlYXBSYW5nZTo6bm9uZSgpLCBIZWFwUmFu
Z2U6Om5vbmUoKSk7CiAgICAgfQogCi0gICAgYm9vbCBtdXN0R2VuZXJhdGUoKSBjb25zdAorICAg
IGNvbnN0ZXhwciBzdGF0aWMgRWZmZWN0IGZvckRlZihIZWFwUmFuZ2UgZGVmKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIEVmZmVjdChkZWYsIEhlYXBSYW5nZTo6bm9uZSgpLCBkZWYpOworICAgIH0K
KworICAgIGNvbnN0ZXhwciBzdGF0aWMgRWZmZWN0IGZvckRlZihIZWFwUmFuZ2UgZGVmLCBIZWFw
UmFuZ2UgcmVhZFJhbmdlLCBIZWFwUmFuZ2Ugd3JpdGVSYW5nZSkKKyAgICB7CisgICAgICAgIHJl
dHVybiBFZmZlY3QocmVhZFJhbmdlLCB3cml0ZVJhbmdlLCBkZWYpOworICAgIH0KKworICAgIGNv
bnN0ZXhwciBib29sIG11c3RHZW5lcmF0ZSgpIGNvbnN0CiAgICAgewogICAgICAgICByZXR1cm4g
ISF3cml0ZXM7CiAgICAgfQogfTsKIAogfSB9Ci0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RvbWppdC9ET01KSVRIZWFwUmFuZ2UuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kb21qaXQvRE9NSklUSGVhcFJhbmdlLmgKaW5kZXggZmI5Mzk5OWZmNzg1YzA2Zjdk
YWNkNmRhOWM4ZDZlMGE5NTY3ODY3NC4uZmMzMjA2ZTg5MDNkZDE1YTQ0MDdlMTJiMzdhNjE1NmM1
OWZlMTEzOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RvbWppdC9ET01KSVRI
ZWFwUmFuZ2UuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZG9taml0L0RPTUpJVEhlYXBS
YW5nZS5oCkBAIC0yOCw4ICsyOCw2IEBACiAjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KICNp
bmNsdWRlIDx3dGYvUHJpbnRTdHJlYW0uaD4KIAotI2lmIEVOQUJMRShKSVQpCi0KIG5hbWVzcGFj
ZSBKU0MgeyBuYW1lc3BhY2UgRE9NSklUIHsKIAogY2xhc3MgSGVhcFJhbmdlIHsKQEAgLTQ3LDcg
KzQ1LDYgQEAgY2xhc3MgSGVhcFJhbmdlIHsKICAgICAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRShi
ZWdpbiA8PSBlbmQsICJiZWdpbiA8PSBlbmQgaXMgdGhlIGludmFyaWFudCBvZiB0aGlzIEhlYXBS
YW5nZS4iKTsKICAgICB9CiAKLXByaXZhdGU6CiAgICAgZW51bSBDb25zdEV4cHJUYWcgeyBDb25z
dEV4cHIgfTsKICAgICBjb25zdGV4cHIgSGVhcFJhbmdlKENvbnN0RXhwclRhZywgdWludDE2X3Qg
YmVnaW4sIHVpbnQxNl90IGVuZCkKICAgICAgICAgOiBtX2JlZ2luKGJlZ2luKQpAQCAtNTUsMjEg
KzUyLDEzIEBAIGNsYXNzIEhlYXBSYW5nZSB7CiAgICAgewogICAgIH0KIAotICAgIHRlbXBsYXRl
PHVpbnQxNl90IGJlZ2luLCB1aW50MTZfdCBlbmQ+Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBIZWFw
UmFuZ2UgZnJvbUNvbnN0YW50KCkKLSAgICB7Ci0gICAgICAgIHN0YXRpY19hc3NlcnQoYmVnaW4g
PD0gZW5kLCAiYmVnaW4gPD0gZW5kIGlzIHRoZSBpbnZhcmlhbnQgb2YgdGhpcyBIZWFwUmFuZ2Uu
Iik7Ci0gICAgICAgIHJldHVybiBIZWFwUmFuZ2UoQ29uc3RFeHByLCBiZWdpbiwgZW5kKTsKLSAg
ICB9Ci0KLXB1YmxpYzoKICAgICBlbnVtIFJhd1JlcHJlc2VudGF0aW9uVGFnIHsgUmF3UmVwcmVz
ZW50YXRpb24gfTsKICAgICBleHBsaWNpdCBjb25zdGV4cHIgSGVhcFJhbmdlKFJhd1JlcHJlc2Vu
dGF0aW9uVGFnLCB1aW50MzJfdCB2YWx1ZSkKICAgICAgICAgOiBtX3Jhdyh2YWx1ZSkKICAgICB7
CiAgICAgfQogCi0gICAgc3RhdGljIEhlYXBSYW5nZSBmcm9tUmF3KHVpbnQzMl90IHZhbHVlKQor
ICAgIGNvbnN0ZXhwciBzdGF0aWMgSGVhcFJhbmdlIGZyb21SYXcodWludDMyX3QgdmFsdWUpCiAg
ICAgewogICAgICAgICByZXR1cm4gSGVhcFJhbmdlKFJhd1JlcHJlc2VudGF0aW9uLCB2YWx1ZSk7
CiAgICAgfQpAQCAtODMsMTEgKzcyLDIzIEBAIGNsYXNzIEhlYXBSYW5nZSB7CiAgICAgICAgIHJl
dHVybiBtX2JlZ2luICE9IG1fZW5kOwogICAgIH0KIAotICAgIGJvb2wgb3BlcmF0b3I9PShjb25z
dCBIZWFwUmFuZ2UmIG90aGVyKSBjb25zdAorICAgIGNvbnN0ZXhwciBib29sIG9wZXJhdG9yPT0o
Y29uc3QgSGVhcFJhbmdlJiBvdGhlcikgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVybiBtX2Jl
Z2luID09IG90aGVyLm1fYmVnaW4gJiYgbV9lbmQgPT0gb3RoZXIubV9lbmQ7CiAgICAgfQogCisg
ICAgY29uc3RleHByIGJvb2wgb3BlcmF0b3IhPShjb25zdCBIZWFwUmFuZ2UmIG90aGVyKSBjb25z
dAorICAgIHsKKyAgICAgICAgcmV0dXJuICFvcGVyYXRvcj09KG90aGVyKTsKKyAgICB9CisKKyAg
ICB0ZW1wbGF0ZTx1aW50MTZfdCBiZWdpbiwgdWludDE2X3QgZW5kPgorICAgIHN0YXRpYyBjb25z
dGV4cHIgSGVhcFJhbmdlIGZyb21Db25zdGFudCgpCisgICAgeworICAgICAgICBzdGF0aWNfYXNz
ZXJ0KGJlZ2luIDw9IGVuZCwgImJlZ2luIDw9IGVuZCBpcyB0aGUgaW52YXJpYW50IG9mIHRoaXMg
SGVhcFJhbmdlLiIpOworICAgICAgICByZXR1cm4gSGVhcFJhbmdlKENvbnN0RXhwciwgYmVnaW4s
IGVuZCk7CisgICAgfQorCiAgICAgc3RhdGljIGNvbnN0ZXhwciBIZWFwUmFuZ2UgdG9wKCkgeyBy
ZXR1cm4gZnJvbUNvbnN0YW50PDAsIFVJTlQxNl9NQVg+KCk7IH0KICAgICBzdGF0aWMgY29uc3Rl
eHByIEhlYXBSYW5nZSBub25lKCkgeyByZXR1cm4gZnJvbUNvbnN0YW50PFVJTlQxNl9NQVgsIFVJ
TlQxNl9NQVg+KCk7IH0gLy8gRW1wdHkgcmFuZ2UuCiAKQEAgLTEyNyw1ICsxMjgsMyBAQCBjbGFz
cyBIZWFwUmFuZ2UgewogfTsKIAogfSB9Ci0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RvbWppdC9ET01KSVRTaWduYXR1cmUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kb21qaXQvRE9NSklUU2lnbmF0dXJlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzdkNjBlZDdmM2VhZjA2
M2Q5YjBjOWQ4OWVkNjM0ODdjNGNiYjVhMwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kb21qaXQvRE9NSklUU2lnbmF0dXJlLmgKQEAgLTAsMCArMSw3MCBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQor
CisjaW5jbHVkZSAiQ2xhc3NJbmZvLmgiCisjaW5jbHVkZSAiRE9NSklURWZmZWN0LmgiCisjaW5j
bHVkZSAiU3BlY3VsYXRlZFR5cGUuaCIKKworbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBET01K
SVQgeworCisvLyBDdXJyZW50bHksIHdlIG9ubHkgc3VwcG9ydCBmdW5jdGlvbnMgd2hpY2ggYXJn
dW1lbnRzIHVwIHRvIDIuCisvLyBFdmVudHVhbGx5LCB3ZSBzaG91bGQgZXh0ZW5kIHRoaXMuIEJ1
dCBwb3NzaWJseSwgMiBvciAzIGNhbiBjb3ZlciB0eXBpY2FsIHVzZSBjYXNlcy4KKyNkZWZpbmUg
SlNDX0RPTUpJVF9TSUdOQVRVUkVfTUFYX0FSR1VNRU5UUyAyCisKK2NsYXNzIFBhdGNocG9pbnQ7
CisKK3R5cGVkZWYgUmVmPFBhdGNocG9pbnQ+IENoZWNrRE9NR2VuZXJhdG9yRnVuY3Rpb24odm9p
ZCk7CisKK2NsYXNzIFNpZ25hdHVyZSB7CitwdWJsaWM6CisgICAgdGVtcGxhdGU8dHlwZW5hbWUu
Li4gQXJndW1lbnRzPgorICAgIGNvbnN0ZXhwciBTaWduYXR1cmUodWludHB0cl90IHVuc2FmZUZ1
bmN0aW9uLCBDaGVja0RPTUdlbmVyYXRvckZ1bmN0aW9uKiBjaGVja0RPTUdlbmVyYXRvckZ1bmN0
aW9uLCBjb25zdCBDbGFzc0luZm8qIGNsYXNzSW5mbywgRWZmZWN0IGVmZmVjdCwgU3BlY3VsYXRl
ZFR5cGUgcmVzdWx0LCBBcmd1bWVudHMuLi4gYXJndW1lbnRzKQorICAgICAgICA6IHVuc2FmZUZ1
bmN0aW9uKHVuc2FmZUZ1bmN0aW9uKQorICAgICAgICAsIGNoZWNrRE9NR2VuZXJhdG9yRnVuY3Rp
b24oY2hlY2tET01HZW5lcmF0b3JGdW5jdGlvbikKKyAgICAgICAgLCBjbGFzc0luZm8oY2xhc3NJ
bmZvKQorICAgICAgICAsIGVmZmVjdChlZmZlY3QpCisgICAgICAgICwgcmVzdWx0KHJlc3VsdCkK
KyAgICAgICAgLCBhcmd1bWVudHMge3N0YXRpY19jYXN0PFNwZWN1bGF0ZWRUeXBlPihhcmd1bWVu
dHMpLi4ufQorICAgICAgICAsIGFyZ3VtZW50Q291bnQoc2l6ZW9mLi4uKGFyZ3VtZW50cykpCisg
ICAgeworICAgIH0KKworICAgIFJlZjxQYXRjaHBvaW50PiBjaGVja0RPTSgpIGNvbnN0CisgICAg
eworICAgICAgICByZXR1cm4gY2hlY2tET01HZW5lcmF0b3JGdW5jdGlvbigpOworICAgIH0KKwor
ICAgIHVpbnRwdHJfdCB1bnNhZmVGdW5jdGlvbjsKKyAgICBDaGVja0RPTUdlbmVyYXRvckZ1bmN0
aW9uKiBjaGVja0RPTUdlbmVyYXRvckZ1bmN0aW9uOworICAgIGNvbnN0IENsYXNzSW5mbyogY29u
c3QgY2xhc3NJbmZvOworICAgIGNvbnN0IEVmZmVjdCBlZmZlY3Q7CisgICAgY29uc3QgU3BlY3Vs
YXRlZFR5cGUgcmVzdWx0OworICAgIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIGFyZ3VtZW50c1tKU0Nf
RE9NSklUX1NJR05BVFVSRV9NQVhfQVJHVU1FTlRTXTsKKyAgICBjb25zdCB1bnNpZ25lZCBhcmd1
bWVudENvdW50OworfTsKKworfSB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENh
cGFiaWxpdGllcy5jcHAKaW5kZXggM2FmMWNiNzQ0OTQ2NjI2NTM2YWFiOWNhMjFkZWE3YjFlMzc0
N2I2OC4uNGE4NTc3NTMyNmJmZmRmZjk4Mjk5M2M3OTY0MzVhMTk2NTJjYTMwNyAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcApAQCAtMjcyLDYgKzI3
Miw3IEBAIGlubGluZSBDYXBhYmlsaXR5TGV2ZWwgY2FuQ29tcGlsZShOb2RlKiBub2RlKQogICAg
IGNhc2UgRGVmaW5lQWNjZXNzb3JQcm9wZXJ0eToKICAgICBjYXNlIFRvTG93ZXJDYXNlOgogICAg
IGNhc2UgQ2hlY2tET006CisgICAgY2FzZSBDYWxsRE9NOgogICAgIGNhc2UgQ2FsbERPTUdldHRl
cjoKICAgICAgICAgLy8gVGhlc2UgYXJlIE9LLgogICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAppbmRleCAzZjA5ZGNmZDYwMjhh
MDJkODM3MWU3MjU1MzZhY2QxNjE1ZWI5MGZkLi5kYTE4NTVlMDU3ZmQ5OGRhMDZiZmVkODE2OWM1
MDYxNDhhOTkwZTFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExv
d2VyREZHVG9CMy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRG
R1RvQjMuY3BwCkBAIC0xMDYwLDYgKzEwNjAsOSBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogICAg
ICAgICBjYXNlIENoZWNrRE9NOgogICAgICAgICAgICAgY29tcGlsZUNoZWNrRE9NKCk7CiAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBDYWxsRE9NOgorICAgICAgICAgICAgY29tcGls
ZUNhbGxET00oKTsKKyAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIENhbGxET01HZXR0
ZXI6CiAgICAgICAgICAgICBjb21waWxlQ2FsbERPTUdldHRlcigpOwogICAgICAgICAgICAgYnJl
YWs7CkBAIC05MDY5LDYgKzkwNzIsNTQgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKICAgICAgICAg
cGF0Y2hwb2ludC0+ZWZmZWN0cyA9IEVmZmVjdHM6OmZvckNoZWNrKCk7CiAgICAgfQogCisgICAg
dm9pZCBjb21waWxlQ2FsbERPTSgpCisgICAgeworICAgICAgICBjb25zdCBET01KSVQ6OlNpZ25h
dHVyZSogc2lnbmF0dXJlID0gbV9ub2RlLT5zaWduYXR1cmUoKTsKKworICAgICAgICAvLyBGSVhN
RTogV2Ugc2hvdWxkIGhhdmUgYSB3YXkgdG8gY2FsbCBmdW5jdGlvbnMgd2l0aCB0aGUgdmVjdG9y
IG9mIHJlZ2lzdGVycy4KKyAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE2MzA5OQorICAgICAgICBWZWN0b3I8TFZhbHVlPiBvcGVyYW5kczsKKworICAg
ICAgICB1bnNpZ25lZCBpbmRleCA9IDA7CisgICAgICAgIERGR19OT0RFX0RPX1RPX0NISUxEUkVO
KG1fZ3JhcGgsIG1fbm9kZSwgWyZdKE5vZGUqLCBFZGdlIGVkZ2UpIHsKKyAgICAgICAgICAgIGlm
ICghaW5kZXgpCisgICAgICAgICAgICAgICAgb3BlcmFuZHMuYXBwZW5kKGxvd0NlbGwoZWRnZSkp
OworICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgc3dpdGNoIChzaWduYXR1cmUt
PmFyZ3VtZW50c1tpbmRleCAtIDFdKSB7CisgICAgICAgICAgICAgICAgY2FzZSBTcGVjU3RyaW5n
OgorICAgICAgICAgICAgICAgICAgICBvcGVyYW5kcy5hcHBlbmQobG93U3RyaW5nKGVkZ2UpKTsK
KyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSBTcGVjSW50
MzJPbmx5OgorICAgICAgICAgICAgICAgICAgICBvcGVyYW5kcy5hcHBlbmQobG93SW50MzIoZWRn
ZSkpOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIFNw
ZWNCb29sZWFuOgorICAgICAgICAgICAgICAgICAgICBvcGVyYW5kcy5hcHBlbmQobG93Qm9vbGVh
bihlZGdlKSk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIH0KKyAgICAgICAgICAgICsraW5kZXg7CisgICAgICAgIH0pOworCisgICAg
ICAgIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyA9IHNpZ25hdHVyZS0+YXJndW1lbnRD
b3VudCArIDE7CisgICAgICAgIExWYWx1ZSByZXN1bHQ7CisgICAgICAgIHN3aXRjaCAoYXJndW1l
bnRDb3VudEluY2x1ZGluZ1RoaXMpIHsKKyAgICAgICAgY2FzZSAxOgorICAgICAgICAgICAgcmVz
dWx0ID0gdm1DYWxsKEludDY0LCBtX291dC5vcGVyYXRpb24ocmVpbnRlcnByZXRfY2FzdDxKX0pJ
VE9wZXJhdGlvbl9FUD4oc2lnbmF0dXJlLT51bnNhZmVGdW5jdGlvbikpLCBtX2NhbGxGcmFtZSwg
b3BlcmFuZHNbMF0pOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgMjoKKyAgICAg
ICAgICAgIHJlc3VsdCA9IHZtQ2FsbChJbnQ2NCwgbV9vdXQub3BlcmF0aW9uKHJlaW50ZXJwcmV0
X2Nhc3Q8Sl9KSVRPcGVyYXRpb25fRVBQPihzaWduYXR1cmUtPnVuc2FmZUZ1bmN0aW9uKSksIG1f
Y2FsbEZyYW1lLCBvcGVyYW5kc1swXSwgb3BlcmFuZHNbMV0pOworICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIGNhc2UgMzoKKyAgICAgICAgICAgIHJlc3VsdCA9IHZtQ2FsbChJbnQ2NCwgbV9v
dXQub3BlcmF0aW9uKHJlaW50ZXJwcmV0X2Nhc3Q8Sl9KSVRPcGVyYXRpb25fRVBQUD4oc2lnbmF0
dXJlLT51bnNhZmVGdW5jdGlvbikpLCBtX2NhbGxGcmFtZSwgb3BlcmFuZHNbMF0sIG9wZXJhbmRz
WzFdLCBvcGVyYW5kc1syXSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoK
KyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgfQorCisgICAgICAgIHNldEpTVmFsdWUocmVzdWx0KTsKKyAgICB9CisK
ICAgICB2b2lkIGNvbXBpbGVDYWxsRE9NR2V0dGVyKCkKICAgICB7CiAgICAgICAgIERPTUpJVDo6
Q2FsbERPTUdldHRlclBhdGNocG9pbnQqIGRvbUpJVCA9IG1fbm9kZS0+Y2FsbERPTUdldHRlckRh
dGEoKS0+cGF0Y2hwb2ludDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUT3BlcmF0aW9ucy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25z
LmgKaW5kZXggOGY2YzY5NzFhNmJlZTlmMWZiNmZjMzY4ZGU1YTJjYjg0NzY0NGE2OC4uMjBiNzFm
NDUyY2U0NGI1Y2M1NmNjNzFjMmQ3NmIxN2I1ODhmZTY2NSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRPcGVyYXRpb25zLmgKQEAgLTE1OCw2ICsxNTgsNyBAQCB0eXBlZGVmIEVuY29k
ZWRKU1ZhbHVlIChKSVRfT1BFUkFUSU9OICpKX0pJVE9wZXJhdGlvbl9FSlApKEV4ZWNTdGF0ZSos
IEVuY29kZWRKUwogdHlwZWRlZiBFbmNvZGVkSlNWYWx1ZSAoSklUX09QRVJBVElPTiAqSl9KSVRP
cGVyYXRpb25fRUdQKShFeGVjU3RhdGUqLCBKU0dsb2JhbE9iamVjdCosIHZvaWQqKTsKIHR5cGVk
ZWYgRW5jb2RlZEpTVmFsdWUgKEpJVF9PUEVSQVRJT04gKkpfSklUT3BlcmF0aW9uX0VQKShFeGVj
U3RhdGUqLCB2b2lkKik7CiB0eXBlZGVmIEVuY29kZWRKU1ZhbHVlIChKSVRfT1BFUkFUSU9OICpK
X0pJVE9wZXJhdGlvbl9FUFApKEV4ZWNTdGF0ZSosIHZvaWQqLCB2b2lkKik7Cit0eXBlZGVmIEVu
Y29kZWRKU1ZhbHVlIChKSVRfT1BFUkFUSU9OICpKX0pJVE9wZXJhdGlvbl9FUFBQKShFeGVjU3Rh
dGUqLCB2b2lkKiwgdm9pZCosIHZvaWQqKTsKIHR5cGVkZWYgRW5jb2RlZEpTVmFsdWUgKEpJVF9P
UEVSQVRJT04gKkpfSklUT3BlcmF0aW9uX0VQUykoRXhlY1N0YXRlKiwgdm9pZCosIHNpemVfdCk7
CiB0eXBlZGVmIEVuY29kZWRKU1ZhbHVlIChKSVRfT1BFUkFUSU9OICpKX0pJVE9wZXJhdGlvbl9F
UGMpKEV4ZWNTdGF0ZSosIEluc3RydWN0aW9uKik7CiB0eXBlZGVmIEVuY29kZWRKU1ZhbHVlIChK
SVRfT1BFUkFUSU9OICpKX0pJVE9wZXJhdGlvbl9FSnNjQykoRXhlY1N0YXRlKiwgSlNTY29wZSos
IEpTQ2VsbCopOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRUaHVu
a3MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRUaHVua3MuY3BwCmluZGV4IGJm
MGE3ZjkwOTE5YTViNmQwYmVlZDkyOGFiZGFmNzEwYzlkYzlkMGIuLjQwYzEyY2VjOTRlMDFhMDg0
MDRmN2I2ZDk2NzIxZjEwNTFmNDgzMTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUVGh1bmtzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFRo
dW5rcy5jcHAKQEAgLTkwLDEwICs5MCwxMCBAQCB2b2lkIEpJVFRodW5rczo6ZmluYWxpemUoSGFu
ZGxlPFVua25vd24+IGhhbmRsZSwgdm9pZCopCiAKIE5hdGl2ZUV4ZWN1dGFibGUqIEpJVFRodW5r
czo6aG9zdEZ1bmN0aW9uU3R1YihWTSogdm0sIE5hdGl2ZUZ1bmN0aW9uIGZ1bmN0aW9uLCBOYXRp
dmVGdW5jdGlvbiBjb25zdHJ1Y3RvciwgY29uc3QgU3RyaW5nJiBuYW1lKQogewotICAgIHJldHVy
biBob3N0RnVuY3Rpb25TdHViKHZtLCBmdW5jdGlvbiwgY29uc3RydWN0b3IsIG51bGxwdHIsIE5v
SW50cmluc2ljLCBuYW1lKTsKKyAgICByZXR1cm4gaG9zdEZ1bmN0aW9uU3R1Yih2bSwgZnVuY3Rp
b24sIGNvbnN0cnVjdG9yLCBudWxscHRyLCBOb0ludHJpbnNpYywgbnVsbHB0ciwgbmFtZSk7CiB9
CiAKLU5hdGl2ZUV4ZWN1dGFibGUqIEpJVFRodW5rczo6aG9zdEZ1bmN0aW9uU3R1YihWTSogdm0s
IE5hdGl2ZUZ1bmN0aW9uIGZ1bmN0aW9uLCBOYXRpdmVGdW5jdGlvbiBjb25zdHJ1Y3RvciwgVGh1
bmtHZW5lcmF0b3IgZ2VuZXJhdG9yLCBJbnRyaW5zaWMgaW50cmluc2ljLCBjb25zdCBTdHJpbmcm
IG5hbWUpCitOYXRpdmVFeGVjdXRhYmxlKiBKSVRUaHVua3M6Omhvc3RGdW5jdGlvblN0dWIoVk0q
IHZtLCBOYXRpdmVGdW5jdGlvbiBmdW5jdGlvbiwgTmF0aXZlRnVuY3Rpb24gY29uc3RydWN0b3Is
IFRodW5rR2VuZXJhdG9yIGdlbmVyYXRvciwgSW50cmluc2ljIGludHJpbnNpYywgY29uc3QgRE9N
SklUOjpTaWduYXR1cmUqIHNpZ25hdHVyZSwgY29uc3QgU3RyaW5nJiBuYW1lKQogewogICAgIEFT
U0VSVCghaXNDb21waWxhdGlvblRocmVhZCgpKTsgICAgCiAgICAgQVNTRVJUKHZtLT5jYW5Vc2VK
SVQoKSk7CkBAIC0xMTAsMTQgKzExMCwxNCBAQCBOYXRpdmVFeGVjdXRhYmxlKiBKSVRUaHVua3M6
Omhvc3RGdW5jdGlvblN0dWIoVk0qIHZtLCBOYXRpdmVGdW5jdGlvbiBmdW5jdGlvbiwgTgogICAg
IAogICAgIFJlZlB0cjxKSVRDb2RlPiBmb3JDb25zdHJ1Y3QgPSBhZG9wdFJlZihuZXcgTmF0aXZl
SklUQ29kZShNYWNyb0Fzc2VtYmxlckNvZGVSZWY6OmNyZWF0ZVNlbGZNYW5hZ2VkQ29kZVJlZihj
dGlOYXRpdmVDb25zdHJ1Y3Qodm0pKSwgSklUQ29kZTo6SG9zdENhbGxUaHVuaykpOwogICAgIAot
ICAgIE5hdGl2ZUV4ZWN1dGFibGUqIG5hdGl2ZUV4ZWN1dGFibGUgPSBOYXRpdmVFeGVjdXRhYmxl
OjpjcmVhdGUoKnZtLCBmb3JDYWxsLCBmdW5jdGlvbiwgZm9yQ29uc3RydWN0LCBjb25zdHJ1Y3Rv
ciwgaW50cmluc2ljLCBuYW1lKTsKKyAgICBOYXRpdmVFeGVjdXRhYmxlKiBuYXRpdmVFeGVjdXRh
YmxlID0gTmF0aXZlRXhlY3V0YWJsZTo6Y3JlYXRlKCp2bSwgZm9yQ2FsbCwgZnVuY3Rpb24sIGZv
ckNvbnN0cnVjdCwgY29uc3RydWN0b3IsIGludHJpbnNpYywgc2lnbmF0dXJlLCBuYW1lKTsKICAg
ICB3ZWFrQWRkKCptX2hvc3RGdW5jdGlvblN0dWJNYXAsIHN0ZDo6bWFrZV90dXBsZShmdW5jdGlv
biwgY29uc3RydWN0b3IsIG5hbWUpLCBXZWFrPE5hdGl2ZUV4ZWN1dGFibGU+KG5hdGl2ZUV4ZWN1
dGFibGUsIHRoaXMpKTsKICAgICByZXR1cm4gbmF0aXZlRXhlY3V0YWJsZTsKIH0KIAogTmF0aXZl
RXhlY3V0YWJsZSogSklUVGh1bmtzOjpob3N0RnVuY3Rpb25TdHViKFZNKiB2bSwgTmF0aXZlRnVu
Y3Rpb24gZnVuY3Rpb24sIFRodW5rR2VuZXJhdG9yIGdlbmVyYXRvciwgSW50cmluc2ljIGludHJp
bnNpYywgY29uc3QgU3RyaW5nJiBuYW1lKQogewotICAgIHJldHVybiBob3N0RnVuY3Rpb25TdHVi
KHZtLCBmdW5jdGlvbiwgY2FsbEhvc3RGdW5jdGlvbkFzQ29uc3RydWN0b3IsIGdlbmVyYXRvciwg
aW50cmluc2ljLCBuYW1lKTsKKyAgICByZXR1cm4gaG9zdEZ1bmN0aW9uU3R1Yih2bSwgZnVuY3Rp
b24sIGNhbGxIb3N0RnVuY3Rpb25Bc0NvbnN0cnVjdG9yLCBnZW5lcmF0b3IsIGludHJpbnNpYywg
bnVsbHB0ciwgbmFtZSk7CiB9CiAKIHZvaWQgSklUVGh1bmtzOjpjbGVhckhvc3RGdW5jdGlvblN0
dWJzKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUVGh1bmtzLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFRodW5rcy5oCmluZGV4IDNmOGZlODAzZjk4
NzEwZjY5MjM1MjdiYzhmNjU1MGY0ZWRkMWM3YWUuLmFkZGNmMjMwYzM0NWQ0MjcxYjYzN2YwOGI5
NGM0MTZhM2VkMTgyYTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
VGh1bmtzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRUaHVua3MuaApAQCAt
MzksNiArMzksOSBAQAogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KIAogbmFtZXNw
YWNlIEpTQyB7CituYW1lc3BhY2UgRE9NSklUIHsKK2NsYXNzIFNpZ25hdHVyZTsKK30KIAogY2xh
c3MgVk07CiBjbGFzcyBOYXRpdmVFeGVjdXRhYmxlOwpAQCAtNTcsNyArNjAsNyBAQCBjbGFzcyBK
SVRUaHVua3MgZmluYWwgOiBwcml2YXRlIFdlYWtIYW5kbGVPd25lciB7CiAgICAgTWFjcm9Bc3Nl
bWJsZXJDb2RlUmVmIGN0aVN0dWIoVk0qLCBUaHVua0dlbmVyYXRvcik7CiAKICAgICBOYXRpdmVF
eGVjdXRhYmxlKiBob3N0RnVuY3Rpb25TdHViKFZNKiwgTmF0aXZlRnVuY3Rpb24sIE5hdGl2ZUZ1
bmN0aW9uIGNvbnN0cnVjdG9yLCBjb25zdCBTdHJpbmcmIG5hbWUpOwotICAgIE5hdGl2ZUV4ZWN1
dGFibGUqIGhvc3RGdW5jdGlvblN0dWIoVk0qLCBOYXRpdmVGdW5jdGlvbiwgTmF0aXZlRnVuY3Rp
b24gY29uc3RydWN0b3IsIFRodW5rR2VuZXJhdG9yLCBJbnRyaW5zaWMsIGNvbnN0IFN0cmluZyYg
bmFtZSk7CisgICAgTmF0aXZlRXhlY3V0YWJsZSogaG9zdEZ1bmN0aW9uU3R1YihWTSosIE5hdGl2
ZUZ1bmN0aW9uLCBOYXRpdmVGdW5jdGlvbiBjb25zdHJ1Y3RvciwgVGh1bmtHZW5lcmF0b3IsIElu
dHJpbnNpYywgY29uc3QgRE9NSklUOjpTaWduYXR1cmUqLCBjb25zdCBTdHJpbmcmIG5hbWUpOwog
ICAgIE5hdGl2ZUV4ZWN1dGFibGUqIGhvc3RGdW5jdGlvblN0dWIoVk0qLCBOYXRpdmVGdW5jdGlv
biwgVGh1bmtHZW5lcmF0b3IsIEludHJpbnNpYywgY29uc3QgU3RyaW5nJiBuYW1lKTsKIAogICAg
IHZvaWQgY2xlYXJIb3N0RnVuY3Rpb25TdHVicygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNCb3VuZEZ1bmN0aW9uLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTQm91bmRGdW5jdGlvbi5jcHAKaW5kZXggMjZmOTlkNjUzYWExNDRiMjQw
NGRkNzk1OTQzMjkzZGU5NmI3MzRjNS4uYzRjZTQzZTdkNTYwYjg3MzYzYzQ4ZDk1MGEwOWFkNzlk
MDUyNDk3YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCb3Vu
ZEZ1bmN0aW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0JvdW5k
RnVuY3Rpb24uY3BwCkBAIC0xNjgsNyArMTY4LDcgQEAgSlNCb3VuZEZ1bmN0aW9uKiBKU0JvdW5k
RnVuY3Rpb246OmNyZWF0ZShWTSYgdm0sIEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QK
ICAgICBOYXRpdmVFeGVjdXRhYmxlKiBleGVjdXRhYmxlID0gdm0uZ2V0SG9zdEZ1bmN0aW9uKAog
ICAgICAgICBzbG93Q2FzZSA/IGJvdW5kRnVuY3Rpb25DYWxsIDogYm91bmRUaGlzTm9BcmdzRnVu
Y3Rpb25DYWxsLAogICAgICAgICBzbG93Q2FzZSA/IE5vSW50cmluc2ljIDogQm91bmRUaGlzTm9B
cmdzRnVuY3Rpb25DYWxsSW50cmluc2ljLAotICAgICAgICBjYW5Db25zdHJ1Y3QgPyAoc2xvd0Nh
c2UgPyBib3VuZEZ1bmN0aW9uQ29uc3RydWN0IDogYm91bmRUaGlzTm9BcmdzRnVuY3Rpb25Db25z
dHJ1Y3QpIDogY2FsbEhvc3RGdW5jdGlvbkFzQ29uc3RydWN0b3IsCisgICAgICAgIGNhbkNvbnN0
cnVjdCA/IChzbG93Q2FzZSA/IGJvdW5kRnVuY3Rpb25Db25zdHJ1Y3QgOiBib3VuZFRoaXNOb0Fy
Z3NGdW5jdGlvbkNvbnN0cnVjdCkgOiBjYWxsSG9zdEZ1bmN0aW9uQXNDb25zdHJ1Y3RvciwgbnVs
bHB0ciwKICAgICAgICAgbmFtZSk7CiAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBnZXRCb3Vu
ZEZ1bmN0aW9uU3RydWN0dXJlKHZtLCBleGVjLCBnbG9iYWxPYmplY3QsIHRhcmdldEZ1bmN0aW9u
KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBudWxscHRyKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNDZWxsLmgKaW5kZXggYzQwZjNlMjE5ODQxZmI0Njg5NjM1Mjg0YjA0
MjI0N2FmZDUyM2MzNi4uNGVmYmY5MDc3OGNjNTcxYmJkYjgyODcxYTUxZmE0NGY4NTZhZTk4YiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmgKQEAgLTU2LDE3ICs1NiwxNyBA
QCB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiB2b2lkKiBhbGxvY2F0ZUNlbGwoSGVhcCYsIHNpemVfdCk7
CiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiB2b2lkKiBhbGxvY2F0ZUNlbGwoSGVhcCYsIEdDRGVmZXJy
YWxDb250ZXh0Kik7CiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiB2b2lkKiBhbGxvY2F0ZUNlbGwoSGVh
cCYsIEdDRGVmZXJyYWxDb250ZXh0Kiwgc2l6ZV90KTsKIAotI2RlZmluZSBERUNMQVJFX0VYUE9S
VF9JTkZPICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAg
IHByb3RlY3RlZDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgXAotICAgICAgICBzdGF0aWMgSlNfRVhQT1JUREFUQSBjb25zdCA6OkpTQzo6
Q2xhc3NJbmZvIHNfaW5mbzsgICAgICAgICAgICAgXAotICAgIHB1YmxpYzogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAg
ICBzdGF0aWMgY29uc3QgOjpKU0M6OkNsYXNzSW5mbyogaW5mbygpIHsgcmV0dXJuICZzX2luZm87
IH0KLQotI2RlZmluZSBERUNMQVJFX0lORk8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgXAotICAgIHByb3RlY3RlZDogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBzdGF0aWMg
Y29uc3QgOjpKU0M6OkNsYXNzSW5mbyBzX2luZm87ICAgICAgICAgICAgICAgICAgICAgICAgICAg
XAotICAgIHB1YmxpYzogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgXAotICAgICAgICBzdGF0aWMgY29uc3QgOjpKU0M6OkNsYXNzSW5m
byogaW5mbygpIHsgcmV0dXJuICZzX2luZm87IH0KKyNkZWZpbmUgREVDTEFSRV9FWFBPUlRfSU5G
TyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAg
IHByb3RlY3RlZDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBcCisgICAgICAgIHN0YXRpYyBKU19FWFBPUlREQVRBIGNvbnN0IDo6
SlNDOjpDbGFzc0luZm8gc19pbmZvOyAgICAgICAgICAgICAgICAgIFwKKyAgICBwdWJsaWM6ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgXAorICAgICAgICBzdGF0aWMgY29uc3RleHByIGNvbnN0IDo6SlNDOjpDbGFzc0luZm8q
IGluZm8oKSB7IHJldHVybiAmc19pbmZvOyB9CisKKyNkZWZpbmUgREVDTEFSRV9JTkZPICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAg
IHByb3RlY3RlZDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBcCisgICAgICAgIHN0YXRpYyBjb25zdCA6OkpTQzo6Q2xhc3NJbmZv
IHNfaW5mbzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBwdWJsaWM6ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgXAorICAgICAgICBzdGF0aWMgY29uc3RleHByIGNvbnN0IDo6SlNDOjpDbGFzc0luZm8q
IGluZm8oKSB7IHJldHVybiAmc19pbmZvOyB9CiAKIGNsYXNzIEpTQ2VsbCA6IHB1YmxpYyBIZWFw
Q2VsbCB7CiAgICAgZnJpZW5kIGNsYXNzIEpTVmFsdWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTRnVuY3Rpb24uY3BwCmluZGV4IDg1ODRiYzI5N2FmNzIzZjU4Mjk4MTU2ZTJl
MmIwYTg4YWU3MThmYjQuLmEzMTg0MmI2NTkwOTNlZWQ0ODMyZjBjMjI1NDdmZmI0NDljNDRjZDkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uY3BwCkBAIC04
NCw5ICs4NCw5IEBAIEpTRnVuY3Rpb24qIEpTRnVuY3Rpb246OmNyZWF0ZShWTSYgdm0sIFdlYkFz
c2VtYmx5RXhlY3V0YWJsZSogZXhlY3V0YWJsZSwgSlNTY29wCiB9CiAjZW5kaWYKIAotSlNGdW5j
dGlvbiogSlNGdW5jdGlvbjo6Y3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgaW50IGxlbmd0aCwgY29uc3QgU3RyaW5nJiBuYW1lLCBOYXRpdmVGdW5jdGlvbiBuYXRp
dmVGdW5jdGlvbiwgSW50cmluc2ljIGludHJpbnNpYywgTmF0aXZlRnVuY3Rpb24gbmF0aXZlQ29u
c3RydWN0b3IpCitKU0Z1bmN0aW9uKiBKU0Z1bmN0aW9uOjpjcmVhdGUoVk0mIHZtLCBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBpbnQgbGVuZ3RoLCBjb25zdCBTdHJpbmcmIG5hbWUsIE5h
dGl2ZUZ1bmN0aW9uIG5hdGl2ZUZ1bmN0aW9uLCBJbnRyaW5zaWMgaW50cmluc2ljLCBOYXRpdmVG
dW5jdGlvbiBuYXRpdmVDb25zdHJ1Y3RvciwgY29uc3QgRE9NSklUOjpTaWduYXR1cmUqIHNpZ25h
dHVyZSkKIHsKLSAgICBOYXRpdmVFeGVjdXRhYmxlKiBleGVjdXRhYmxlID0gdm0uZ2V0SG9zdEZ1
bmN0aW9uKG5hdGl2ZUZ1bmN0aW9uLCBpbnRyaW5zaWMsIG5hdGl2ZUNvbnN0cnVjdG9yLCBuYW1l
KTsKKyAgICBOYXRpdmVFeGVjdXRhYmxlKiBleGVjdXRhYmxlID0gdm0uZ2V0SG9zdEZ1bmN0aW9u
KG5hdGl2ZUZ1bmN0aW9uLCBpbnRyaW5zaWMsIG5hdGl2ZUNvbnN0cnVjdG9yLCBzaWduYXR1cmUs
IG5hbWUpOwogICAgIEpTRnVuY3Rpb24qIGZ1bmN0aW9uID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0
ZUNlbGw8SlNGdW5jdGlvbj4odm0uaGVhcCkpIEpTRnVuY3Rpb24odm0sIGdsb2JhbE9iamVjdCwg
Z2xvYmFsT2JqZWN0LT5mdW5jdGlvblN0cnVjdHVyZSgpKTsKICAgICAvLyBDYW4ndCBkbyB0aGlz
IGR1cmluZyBpbml0aWFsaXphdGlvbiBiZWNhdXNlIGdldEhvc3RGdW5jdGlvbiBtaWdodCBkbyBh
IEdDIGFsbG9jYXRpb24uCiAgICAgZnVuY3Rpb24tPmZpbmlzaENyZWF0aW9uKHZtLCBleGVjdXRh
YmxlLCBsZW5ndGgsIG5hbWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNGdW5jdGlvbi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5j
dGlvbi5oCmluZGV4IDhkZjAzYTE0YTY3ZGFlOTMwNGMwZDU1NDk0Zjk1YTg3N2Y5NzgxZTYuLmYx
MWIxMmZiM2JkMTQ1NjI1ZjgyYmYxZmE4NzI1MDQ0NDc2NTc2MjggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmgKQEAgLTQ2LDYgKzQ2LDExIEBAIGNsYXNzIFNw
ZWN1bGF0aXZlSklUOwogY2xhc3MgSklUQ29tcGlsZXI7CiB9CiAKK25hbWVzcGFjZSBET01KSVQg
eworY2xhc3MgU2lnbmF0dXJlOworfQorCisKIEpTX0VYUE9SVF9QUklWQVRFIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgY2FsbEhvc3RGdW5jdGlvbkFzQ29uc3RydWN0b3IoRXhlY1N0YXRl
Kik7CiAKIEpTX0VYUE9SVF9QUklWQVRFIFN0cmluZyBnZXRDYWxjdWxhdGVkRGlzcGxheU5hbWUo
Vk0mLCBKU09iamVjdCopOwpAQCAtNjcsNyArNzIsNyBAQCBjbGFzcyBKU0Z1bmN0aW9uIDogcHVi
bGljIEpTQ2FsbGVlIHsKICAgICAgICAgcmV0dXJuIHNpemVvZihKU0Z1bmN0aW9uKTsKICAgICB9
CiAKLSAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgSlNGdW5jdGlvbiogY3JlYXRlKFZNJiwg
SlNHbG9iYWxPYmplY3QqLCBpbnQgbGVuZ3RoLCBjb25zdCBTdHJpbmcmIG5hbWUsIE5hdGl2ZUZ1
bmN0aW9uLCBJbnRyaW5zaWMgPSBOb0ludHJpbnNpYywgTmF0aXZlRnVuY3Rpb24gbmF0aXZlQ29u
c3RydWN0b3IgPSBjYWxsSG9zdEZ1bmN0aW9uQXNDb25zdHJ1Y3Rvcik7CisgICAgSlNfRVhQT1JU
X1BSSVZBVEUgc3RhdGljIEpTRnVuY3Rpb24qIGNyZWF0ZShWTSYsIEpTR2xvYmFsT2JqZWN0Kiwg
aW50IGxlbmd0aCwgY29uc3QgU3RyaW5nJiBuYW1lLCBOYXRpdmVGdW5jdGlvbiwgSW50cmluc2lj
ID0gTm9JbnRyaW5zaWMsIE5hdGl2ZUZ1bmN0aW9uIG5hdGl2ZUNvbnN0cnVjdG9yID0gY2FsbEhv
c3RGdW5jdGlvbkFzQ29uc3RydWN0b3IsIGNvbnN0IERPTUpJVDo6U2lnbmF0dXJlKiA9IG51bGxw
dHIpOwogICAgIAogICAgIHN0YXRpYyBKU0Z1bmN0aW9uKiBjcmVhdGVXaXRoSW52YWxpZGF0ZWRS
ZWFsbG9jYXRpb25XYXRjaHBvaW50KFZNJiwgRnVuY3Rpb25FeGVjdXRhYmxlKiwgSlNTY29wZSop
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU05hdGl2ZVN0
ZEZ1bmN0aW9uLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTmF0aXZlU3Rk
RnVuY3Rpb24uY3BwCmluZGV4IDZkZDg0OWYyZWFmYmViZGQ3MDdlZTU3MzgwMDgyZGU1NDg5MzIw
YTEuLmMxMjY1YjFmMDZhOTBhMDc0NDFkN2FjNWM2MDg4MzBhMWVmYTRmMDIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTmF0aXZlU3RkRnVuY3Rpb24uY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTmF0aXZlU3RkRnVuY3Rpb24uY3Bw
CkBAIC02Niw3ICs2Niw3IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJ1
blN0ZEZ1bmN0aW9uKEV4ZWNTdGF0ZSogc3RhdGUpCiAKIEpTTmF0aXZlU3RkRnVuY3Rpb24qIEpT
TmF0aXZlU3RkRnVuY3Rpb246OmNyZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIGludCBsZW5ndGgsIGNvbnN0IFN0cmluZyYgbmFtZSwgTmF0aXZlU3RkRnVuY3Rpb24m
JiBuYXRpdmVTdGRGdW5jdGlvbiwgSW50cmluc2ljIGludHJpbnNpYywgTmF0aXZlRnVuY3Rpb24g
bmF0aXZlQ29uc3RydWN0b3IpCiB7Ci0gICAgTmF0aXZlRXhlY3V0YWJsZSogZXhlY3V0YWJsZSA9
IHZtLmdldEhvc3RGdW5jdGlvbihydW5TdGRGdW5jdGlvbiwgaW50cmluc2ljLCBuYXRpdmVDb25z
dHJ1Y3RvciwgbmFtZSk7CisgICAgTmF0aXZlRXhlY3V0YWJsZSogZXhlY3V0YWJsZSA9IHZtLmdl
dEhvc3RGdW5jdGlvbihydW5TdGRGdW5jdGlvbiwgaW50cmluc2ljLCBuYXRpdmVDb25zdHJ1Y3Rv
ciwgbnVsbHB0ciwgbmFtZSk7CiAgICAgTmF0aXZlU3RkRnVuY3Rpb25DZWxsKiBmdW5jdGlvbkNl
bGwgPSBOYXRpdmVTdGRGdW5jdGlvbkNlbGw6OmNyZWF0ZSh2bSwgV1RGTW92ZShuYXRpdmVTdGRG
dW5jdGlvbikpOwogICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gZ2xvYmFsT2JqZWN0LT5uYXRp
dmVTdGRGdW5jdGlvblN0cnVjdHVyZSgpOwogICAgIEpTTmF0aXZlU3RkRnVuY3Rpb24qIGZ1bmN0
aW9uID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNOYXRpdmVTdGRGdW5jdGlvbj4odm0u
aGVhcCkpIEpTTmF0aXZlU3RkRnVuY3Rpb24odm0sIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcAppbmRleCBmNTNkYjYx
OTg2ZWFkZGFhMjNhMjQ1ZGU1NGFlMDljNThmMGFiNzY0Li4wOGFlNzkyMGE5ZWU1MmMyNGQ3NWFi
ZTFkYTdmNjZlODExYjJhZjFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU09iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNP
YmplY3QuY3BwCkBAIC0yNTQ5LDYgKzI1NDksMTcgQEAgYm9vbCBKU09iamVjdDo6cHV0RGlyZWN0
TmF0aXZlRnVuY3Rpb24oVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb24K
ICAgICByZXR1cm4gcHV0RGlyZWN0KHZtLCBwcm9wZXJ0eU5hbWUsIGZ1bmN0aW9uLCBhdHRyaWJ1
dGVzKTsKIH0KIAorYm9vbCBKU09iamVjdDo6cHV0RGlyZWN0TmF0aXZlRnVuY3Rpb24oVk0mIHZt
LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBQcm9wZXJ0eU5hbWUmIHByb3Bl
cnR5TmFtZSwgdW5zaWduZWQgZnVuY3Rpb25MZW5ndGgsIE5hdGl2ZUZ1bmN0aW9uIG5hdGl2ZUZ1
bmN0aW9uLCBJbnRyaW5zaWMgaW50cmluc2ljLCBjb25zdCBET01KSVQ6OlNpZ25hdHVyZSogc2ln
bmF0dXJlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKQoreworICAgIFN0cmluZ0ltcGwqIG5hbWUgPSBw
cm9wZXJ0eU5hbWUucHVibGljTmFtZSgpOworICAgIGlmICghbmFtZSkKKyAgICAgICAgbmFtZSA9
IHZtLnByb3BlcnR5TmFtZXMtPmFub255bW91cy5pbXBsKCk7CisgICAgQVNTRVJUKG5hbWUpOwor
CisgICAgSlNGdW5jdGlvbiogZnVuY3Rpb24gPSBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIGdsb2Jh
bE9iamVjdCwgZnVuY3Rpb25MZW5ndGgsIG5hbWUsIG5hdGl2ZUZ1bmN0aW9uLCBpbnRyaW5zaWMs
IGNhbGxIb3N0RnVuY3Rpb25Bc0NvbnN0cnVjdG9yLCBzaWduYXR1cmUpOworICAgIHJldHVybiBw
dXREaXJlY3Qodm0sIHByb3BlcnR5TmFtZSwgZnVuY3Rpb24sIGF0dHJpYnV0ZXMpOworfQorCiBK
U0Z1bmN0aW9uKiBKU09iamVjdDo6cHV0RGlyZWN0QnVpbHRpbkZ1bmN0aW9uKFZNJiB2bSwgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgUHJvcGVydHlOYW1lJiBwcm9wZXJ0eU5h
bWUsIEZ1bmN0aW9uRXhlY3V0YWJsZSogZnVuY3Rpb25FeGVjdXRhYmxlLCB1bnNpZ25lZCBhdHRy
aWJ1dGVzKQogewogICAgIFN0cmluZ0ltcGwqIG5hbWUgPSBwcm9wZXJ0eU5hbWUucHVibGljTmFt
ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3Qu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgKaW5kZXggNjIyMGVj
N2ExYmE4ZThhNzQ5ZGI0YjA2Y2Q0MjkzYTg4NWFmN2Y5Mi4uZWJlNDg1ZThkZjM2ZGI1Y2FmMzc3
MDRiOGVlZGQ0YTc2Y2I5YzQ0MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09i
amVjdC5oCkBAIC00Nyw2ICs0Nyw5IEBACiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgog
CiBuYW1lc3BhY2UgSlNDIHsKK25hbWVzcGFjZSBET01KSVQgeworY2xhc3MgU2lnbmF0dXJlOwor
fQogCiBpbmxpbmUgSlNDZWxsKiBnZXRKU0Z1bmN0aW9uKEpTVmFsdWUgdmFsdWUpCiB7CkBAIC03
MDAsNiArNzAzLDcgQEAgY2xhc3MgSlNPYmplY3QgOiBwdWJsaWMgSlNDZWxsIHsKIAogICAgIEpT
X0VYUE9SVF9QUklWQVRFIGJvb2wgcHV0RGlyZWN0TmF0aXZlSW50cmluc2ljR2V0dGVyKFZNJiwg
SlNHbG9iYWxPYmplY3QqLCBJZGVudGlmaWVyLCBOYXRpdmVGdW5jdGlvbiwgSW50cmluc2ljLCB1
bnNpZ25lZCBhdHRyaWJ1dGVzKTsKICAgICBKU19FWFBPUlRfUFJJVkFURSBib29sIHB1dERpcmVj
dE5hdGl2ZUZ1bmN0aW9uKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBjb25zdCBQcm9wZXJ0eU5hbWUm
LCB1bnNpZ25lZCBmdW5jdGlvbkxlbmd0aCwgTmF0aXZlRnVuY3Rpb24sIEludHJpbnNpYywgdW5z
aWduZWQgYXR0cmlidXRlcyk7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgYm9vbCBwdXREaXJlY3RO
YXRpdmVGdW5jdGlvbihWTSYsIEpTR2xvYmFsT2JqZWN0KiwgY29uc3QgUHJvcGVydHlOYW1lJiwg
dW5zaWduZWQgZnVuY3Rpb25MZW5ndGgsIE5hdGl2ZUZ1bmN0aW9uLCBJbnRyaW5zaWMsIGNvbnN0
IERPTUpJVDo6U2lnbmF0dXJlKiwgdW5zaWduZWQgYXR0cmlidXRlcyk7CiAgICAgSlNfRVhQT1JU
X1BSSVZBVEUgSlNGdW5jdGlvbiogcHV0RGlyZWN0QnVpbHRpbkZ1bmN0aW9uKFZNJiwgSlNHbG9i
YWxPYmplY3QqLCBjb25zdCBQcm9wZXJ0eU5hbWUmLCBGdW5jdGlvbkV4ZWN1dGFibGUqLCB1bnNp
Z25lZCBhdHRyaWJ1dGVzKTsKICAgICBKU0Z1bmN0aW9uKiBwdXREaXJlY3RCdWlsdGluRnVuY3Rp
b25XaXRob3V0VHJhbnNpdGlvbihWTSYsIEpTR2xvYmFsT2JqZWN0KiwgY29uc3QgUHJvcGVydHlO
YW1lJiwgRnVuY3Rpb25FeGVjdXRhYmxlKiwgdW5zaWduZWQgYXR0cmlidXRlcyk7CiAgICAgSlNf
RVhQT1JUX1BSSVZBVEUgdm9pZCBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbldpdGhvdXRUcmFuc2l0
aW9uKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBjb25zdCBQcm9wZXJ0eU5hbWUmLCB1bnNpZ25lZCBm
dW5jdGlvbkxlbmd0aCwgTmF0aXZlRnVuY3Rpb24sIEludHJpbnNpYywgdW5zaWduZWQgYXR0cmli
dXRlcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Mb29rdXAu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0xvb2t1cC5oCmluZGV4IGUyZDE3OTUz
ODhlNzY1MmJkOGYxYjRiNmRhY2JiMmNiY2U5Y2Q0NGYuLmQ3MDc2ODZmYjU2OTNlN2Y1MmZlNmQx
YTJlYzQ0YmQwMDIzYmVmMTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0xvb2t1cC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0xvb2t1cC5o
CkBAIC0yNCw2ICsyNCw3IEBACiAjaW5jbHVkZSAiQ2FsbEZyYW1lLmgiCiAjaW5jbHVkZSAiQ3Vz
dG9tR2V0dGVyU2V0dGVyLmgiCiAjaW5jbHVkZSAiRE9NSklUR2V0dGVyU2V0dGVyLmgiCisjaW5j
bHVkZSAiRE9NSklUU2lnbmF0dXJlLmgiCiAjaW5jbHVkZSAiSWRlbnRpZmllci5oIgogI2luY2x1
ZGUgIklkZW50aWZpZXJJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSW50cmluc2ljLmgiCkBAIC03NSwx
MiArNzYsMTkgQEAgc3RydWN0IEhhc2hUYWJsZVZhbHVlIHsKICAgICBJbnRyaW5zaWMgaW50cmlu
c2ljKCkgY29uc3QgeyBBU1NFUlQobV9hdHRyaWJ1dGVzICYgRnVuY3Rpb24pOyByZXR1cm4gbV9p
bnRyaW5zaWM7IH0KICAgICBCdWlsdGluR2VuZXJhdG9yIGJ1aWx0aW5HZW5lcmF0b3IoKSBjb25z
dCB7IEFTU0VSVChtX2F0dHJpYnV0ZXMgJiBCdWlsdGluKTsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nh
c3Q8QnVpbHRpbkdlbmVyYXRvcj4obV92YWx1ZXMudmFsdWUxKTsgfQogICAgIE5hdGl2ZUZ1bmN0
aW9uIGZ1bmN0aW9uKCkgY29uc3QgeyBBU1NFUlQobV9hdHRyaWJ1dGVzICYgRnVuY3Rpb24pOyBy
ZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxOYXRpdmVGdW5jdGlvbj4obV92YWx1ZXMudmFsdWUxKTsg
fQotICAgIHVuc2lnbmVkIGNoYXIgZnVuY3Rpb25MZW5ndGgoKSBjb25zdCB7IEFTU0VSVChtX2F0
dHJpYnV0ZXMgJiBGdW5jdGlvbik7IHJldHVybiBzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPiht
X3ZhbHVlcy52YWx1ZTIpOyB9CisgICAgdW5zaWduZWQgY2hhciBmdW5jdGlvbkxlbmd0aCgpIGNv
bnN0CisgICAgeworICAgICAgICBBU1NFUlQobV9hdHRyaWJ1dGVzICYgRnVuY3Rpb24pOworICAg
ICAgICBpZiAobV9hdHRyaWJ1dGVzICYgRE9NSklURnVuY3Rpb24pCisgICAgICAgICAgICByZXR1
cm4gc2lnbmF0dXJlKCktPmFyZ3VtZW50Q291bnQ7CisgICAgICAgIHJldHVybiBzdGF0aWNfY2Fz
dDx1bnNpZ25lZCBjaGFyPihtX3ZhbHVlcy52YWx1ZTIpOworICAgIH0KIAogICAgIEdldEZ1bmN0
aW9uIHByb3BlcnR5R2V0dGVyKCkgY29uc3QgeyBBU1NFUlQoIShtX2F0dHJpYnV0ZXMgJiBCdWls
dGluT3JGdW5jdGlvbk9yQWNjZXNzb3JPckxhenlQcm9wZXJ0eU9yQ29uc3RhbnQpKTsgcmV0dXJu
IHJlaW50ZXJwcmV0X2Nhc3Q8R2V0RnVuY3Rpb24+KG1fdmFsdWVzLnZhbHVlMSk7IH0KICAgICBQ
dXRGdW5jdGlvbiBwcm9wZXJ0eVB1dHRlcigpIGNvbnN0IHsgQVNTRVJUKCEobV9hdHRyaWJ1dGVz
ICYgQnVpbHRpbk9yRnVuY3Rpb25PckFjY2Vzc29yT3JMYXp5UHJvcGVydHlPckNvbnN0YW50KSk7
IHJldHVybiByZWludGVycHJldF9jYXN0PFB1dEZ1bmN0aW9uPihtX3ZhbHVlcy52YWx1ZTIpOyB9
CiAKICAgICBET01KSVQ6OkdldHRlclNldHRlciogZG9tSklUKCkgY29uc3QgeyBBU1NFUlQobV9h
dHRyaWJ1dGVzICYgRE9NSklUQXR0cmlidXRlKTsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8RE9N
SklUR2V0dGVyU2V0dGVyR2VuZXJhdG9yPihtX3ZhbHVlcy52YWx1ZTEpKCk7IH0KKyAgICBjb25z
dCBET01KSVQ6OlNpZ25hdHVyZSogc2lnbmF0dXJlKCkgY29uc3QgeyBBU1NFUlQobV9hdHRyaWJ1
dGVzICYgRE9NSklURnVuY3Rpb24pOyByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBET01K
SVQ6OlNpZ25hdHVyZSo+KG1fdmFsdWVzLnZhbHVlMik7IH0KIAogICAgIE5hdGl2ZUZ1bmN0aW9u
IGFjY2Vzc29yR2V0dGVyKCkgY29uc3QgeyBBU1NFUlQobV9hdHRyaWJ1dGVzICYgQWNjZXNzb3Ip
OyByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxOYXRpdmVGdW5jdGlvbj4obV92YWx1ZXMudmFsdWUx
KTsgfQogICAgIE5hdGl2ZUZ1bmN0aW9uIGFjY2Vzc29yU2V0dGVyKCkgY29uc3QgeyBBU1NFUlQo
bV9hdHRyaWJ1dGVzICYgQWNjZXNzb3IpOyByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxOYXRpdmVG
dW5jdGlvbj4obV92YWx1ZXMudmFsdWUyKTsgfQpAQCAtMzEzLDYgKzMyMSwxMiBAQCBpbmxpbmUg
dm9pZCByZWlmeVN0YXRpY1Byb3BlcnR5KFZNJiB2bSwgY29uc3QgUHJvcGVydHlOYW1lJiBwcm9w
ZXJ0eU5hbWUsIGNvbnN0CiAgICAgfQogCiAgICAgaWYgKHZhbHVlLmF0dHJpYnV0ZXMoKSAmIEZ1
bmN0aW9uKSB7CisgICAgICAgIGlmICh2YWx1ZS5hdHRyaWJ1dGVzKCkgJiBET01KSVRGdW5jdGlv
bikgeworICAgICAgICAgICAgdGhpc09iai5wdXREaXJlY3ROYXRpdmVGdW5jdGlvbigKKyAgICAg
ICAgICAgICAgICB2bSwgdGhpc09iai5nbG9iYWxPYmplY3QoKSwgcHJvcGVydHlOYW1lLCB2YWx1
ZS5mdW5jdGlvbkxlbmd0aCgpLAorICAgICAgICAgICAgICAgIHZhbHVlLmZ1bmN0aW9uKCksIHZh
bHVlLmludHJpbnNpYygpLCB2YWx1ZS5zaWduYXR1cmUoKSwgYXR0cmlidXRlc0ZvclN0cnVjdHVy
ZSh2YWx1ZS5hdHRyaWJ1dGVzKCkpKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQog
ICAgICAgICB0aGlzT2JqLnB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uKAogICAgICAgICAgICAgdm0s
IHRoaXNPYmouZ2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZSwgdmFsdWUuZnVuY3Rpb25MZW5n
dGgoKSwKICAgICAgICAgICAgIHZhbHVlLmZ1bmN0aW9uKCksIHZhbHVlLmludHJpbnNpYygpLCBh
dHRyaWJ1dGVzRm9yU3RydWN0dXJlKHZhbHVlLmF0dHJpYnV0ZXMoKSkpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZlRXhlY3V0YWJsZS5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OYXRpdmVFeGVjdXRhYmxlLmNwcAppbmRleCAxYzJi
ZWM1OGI3ZGI4OThiODExOGIyOTcxMGIyZDc0MjY5M2JiMjFkLi5iN2RhZDJhNDYyZGRkZmMyMjc2
MmZkNWNkN2NmNmE0NjFjZGQxOGY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9OYXRpdmVFeGVjdXRhYmxlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9OYXRpdmVFeGVjdXRhYmxlLmNwcApAQCAtNDAsMTAgKzQwLDEwIEBAIG5hbWVzcGFj
ZSBKU0MgewogCiBjb25zdCBDbGFzc0luZm8gTmF0aXZlRXhlY3V0YWJsZTo6c19pbmZvID0geyAi
TmF0aXZlRXhlY3V0YWJsZSIsICZFeGVjdXRhYmxlQmFzZTo6c19pbmZvLCAwLCBDUkVBVEVfTUVU
SE9EX1RBQkxFKE5hdGl2ZUV4ZWN1dGFibGUpIH07CiAKLU5hdGl2ZUV4ZWN1dGFibGUqIE5hdGl2
ZUV4ZWN1dGFibGU6OmNyZWF0ZShWTSYgdm0sIFBhc3NSZWZQdHI8SklUQ29kZT4gY2FsbFRodW5r
LCBOYXRpdmVGdW5jdGlvbiBmdW5jdGlvbiwgUGFzc1JlZlB0cjxKSVRDb2RlPiBjb25zdHJ1Y3RU
aHVuaywgTmF0aXZlRnVuY3Rpb24gY29uc3RydWN0b3IsIEludHJpbnNpYyBpbnRyaW5zaWMsIGNv
bnN0IFN0cmluZyYgbmFtZSkKK05hdGl2ZUV4ZWN1dGFibGUqIE5hdGl2ZUV4ZWN1dGFibGU6OmNy
ZWF0ZShWTSYgdm0sIFBhc3NSZWZQdHI8SklUQ29kZT4gY2FsbFRodW5rLCBOYXRpdmVGdW5jdGlv
biBmdW5jdGlvbiwgUGFzc1JlZlB0cjxKSVRDb2RlPiBjb25zdHJ1Y3RUaHVuaywgTmF0aXZlRnVu
Y3Rpb24gY29uc3RydWN0b3IsIEludHJpbnNpYyBpbnRyaW5zaWMsIGNvbnN0IERPTUpJVDo6U2ln
bmF0dXJlKiBzaWduYXR1cmUsIGNvbnN0IFN0cmluZyYgbmFtZSkKIHsKICAgICBOYXRpdmVFeGVj
dXRhYmxlKiBleGVjdXRhYmxlOwotICAgIGV4ZWN1dGFibGUgPSBuZXcgKE5vdE51bGwsIGFsbG9j
YXRlQ2VsbDxOYXRpdmVFeGVjdXRhYmxlPih2bS5oZWFwKSkgTmF0aXZlRXhlY3V0YWJsZSh2bSwg
ZnVuY3Rpb24sIGNvbnN0cnVjdG9yLCBpbnRyaW5zaWMpOworICAgIGV4ZWN1dGFibGUgPSBuZXcg
KE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxOYXRpdmVFeGVjdXRhYmxlPih2bS5oZWFwKSkgTmF0aXZl
RXhlY3V0YWJsZSh2bSwgZnVuY3Rpb24sIGNvbnN0cnVjdG9yLCBpbnRyaW5zaWMsIHNpZ25hdHVy
ZSk7CiAgICAgZXhlY3V0YWJsZS0+ZmluaXNoQ3JlYXRpb24odm0sIGNhbGxUaHVuaywgY29uc3Ry
dWN0VGh1bmssIG5hbWUpOwogICAgIHJldHVybiBleGVjdXRhYmxlOwogfQpAQCAtNjgsMTAgKzY4
LDExIEBAIHZvaWQgTmF0aXZlRXhlY3V0YWJsZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBQYXNz
UmVmUHRyPEpJVENvZGU+IGNhbGxUaHVuaywgUGFzCiAgICAgbV9uYW1lID0gbmFtZTsKIH0KIAot
TmF0aXZlRXhlY3V0YWJsZTo6TmF0aXZlRXhlY3V0YWJsZShWTSYgdm0sIE5hdGl2ZUZ1bmN0aW9u
IGZ1bmN0aW9uLCBOYXRpdmVGdW5jdGlvbiBjb25zdHJ1Y3RvciwgSW50cmluc2ljIGludHJpbnNp
YykKK05hdGl2ZUV4ZWN1dGFibGU6Ok5hdGl2ZUV4ZWN1dGFibGUoVk0mIHZtLCBOYXRpdmVGdW5j
dGlvbiBmdW5jdGlvbiwgTmF0aXZlRnVuY3Rpb24gY29uc3RydWN0b3IsIEludHJpbnNpYyBpbnRy
aW5zaWMsIGNvbnN0IERPTUpJVDo6U2lnbmF0dXJlKiBzaWduYXR1cmUpCiAgICAgOiBFeGVjdXRh
YmxlQmFzZSh2bSwgdm0ubmF0aXZlRXhlY3V0YWJsZVN0cnVjdHVyZS5nZXQoKSwgTlVNX1BBUkFN
RVRFUlNfSVNfSE9TVCwgaW50cmluc2ljKQogICAgICwgbV9mdW5jdGlvbihmdW5jdGlvbikKICAg
ICAsIG1fY29uc3RydWN0b3IoY29uc3RydWN0b3IpCisgICAgLCBtX3NpZ25hdHVyZShzaWduYXR1
cmUpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05h
dGl2ZUV4ZWN1dGFibGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05hdGl2ZUV4
ZWN1dGFibGUuaAppbmRleCA1YmYyZTEwNmRiMzBhNWI4Yzk3OGM4OTZhNmFkOThjYTJjNzU3NDE0
Li5lNGQzZTA0OTQ1N2I0NWQwMjQ1N2U4ZGRhNTQ0OTBiMzcxNGFjY2VhIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OYXRpdmVFeGVjdXRhYmxlLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZlRXhlY3V0YWJsZS5oCkBAIC0yOCw2ICsy
OCw5IEBACiAjaW5jbHVkZSAiRXhlY3V0YWJsZUJhc2UuaCIKIAogbmFtZXNwYWNlIEpTQyB7Citu
YW1lc3BhY2UgRE9NSklUIHsKK2NsYXNzIFNpZ25hdHVyZTsKK30KIAogY2xhc3MgTmF0aXZlRXhl
Y3V0YWJsZSBmaW5hbCA6IHB1YmxpYyBFeGVjdXRhYmxlQmFzZSB7CiAgICAgZnJpZW5kIGNsYXNz
IEpJVDsKQEAgLTM2LDcgKzM5LDcgQEAgY2xhc3MgTmF0aXZlRXhlY3V0YWJsZSBmaW5hbCA6IHB1
YmxpYyBFeGVjdXRhYmxlQmFzZSB7CiAgICAgdHlwZWRlZiBFeGVjdXRhYmxlQmFzZSBCYXNlOwog
ICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVy
ZUZsYWdzIHwgU3RydWN0dXJlSXNJbW1vcnRhbDsKIAotICAgIHN0YXRpYyBOYXRpdmVFeGVjdXRh
YmxlKiBjcmVhdGUoVk0mIHZtLCBQYXNzUmVmUHRyPEpJVENvZGU+IGNhbGxUaHVuaywgTmF0aXZl
RnVuY3Rpb24gZnVuY3Rpb24sIFBhc3NSZWZQdHI8SklUQ29kZT4gY29uc3RydWN0VGh1bmssIE5h
dGl2ZUZ1bmN0aW9uIGNvbnN0cnVjdG9yLCBJbnRyaW5zaWMgaW50cmluc2ljLCBjb25zdCBTdHJp
bmcmIG5hbWUpOworICAgIHN0YXRpYyBOYXRpdmVFeGVjdXRhYmxlKiBjcmVhdGUoVk0mLCBQYXNz
UmVmUHRyPEpJVENvZGU+IGNhbGxUaHVuaywgTmF0aXZlRnVuY3Rpb24gZnVuY3Rpb24sIFBhc3NS
ZWZQdHI8SklUQ29kZT4gY29uc3RydWN0VGh1bmssIE5hdGl2ZUZ1bmN0aW9uIGNvbnN0cnVjdG9y
LCBJbnRyaW5zaWMsIGNvbnN0IERPTUpJVDo6U2lnbmF0dXJlKiwgY29uc3QgU3RyaW5nJiBuYW1l
KTsKIAogICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDZWxsKik7CiAKQEAgLTY2LDYgKzY5LDE0
IEBAIGNsYXNzIE5hdGl2ZUV4ZWN1dGFibGUgZmluYWwgOiBwdWJsaWMgRXhlY3V0YWJsZUJhc2Ug
ewogICAgIERFQ0xBUkVfSU5GTzsKIAogICAgIGNvbnN0IFN0cmluZyYgbmFtZSgpIGNvbnN0IHsg
cmV0dXJuIG1fbmFtZTsgfQorICAgIGNvbnN0IERPTUpJVDo6U2lnbmF0dXJlKiBzaWduYXR1cmUo
KSBjb25zdCB7IHJldHVybiBtX3NpZ25hdHVyZTsgfQorCisgICAgY29uc3QgRE9NSklUOjpTaWdu
YXR1cmUqIHNpZ25hdHVyZUZvcihDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQpIGNvbnN0Cisg
ICAgeworICAgICAgICBpZiAoaXNDYWxsKGtpbmQpKQorICAgICAgICAgICAgcmV0dXJuIHNpZ25h
dHVyZSgpOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CiAKIHByb3RlY3RlZDoKICAg
ICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiwgUGFzc1JlZlB0cjxKSVRDb2RlPiBjYWxsVGh1bmss
IFBhc3NSZWZQdHI8SklUQ29kZT4gY29uc3RydWN0VGh1bmssIGNvbnN0IFN0cmluZyYgbmFtZSk7
CkBAIC03MywxMCArODQsMTEgQEAgY2xhc3MgTmF0aXZlRXhlY3V0YWJsZSBmaW5hbCA6IHB1Ymxp
YyBFeGVjdXRhYmxlQmFzZSB7CiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBFeGVjdXRhYmxl
QmFzZTsKIAotICAgIE5hdGl2ZUV4ZWN1dGFibGUoVk0mLCBOYXRpdmVGdW5jdGlvbiBmdW5jdGlv
biwgTmF0aXZlRnVuY3Rpb24gY29uc3RydWN0b3IsIEludHJpbnNpYyk7CisgICAgTmF0aXZlRXhl
Y3V0YWJsZShWTSYsIE5hdGl2ZUZ1bmN0aW9uIGZ1bmN0aW9uLCBOYXRpdmVGdW5jdGlvbiBjb25z
dHJ1Y3RvciwgSW50cmluc2ljLCBjb25zdCBET01KSVQ6OlNpZ25hdHVyZSopOwogCiAgICAgTmF0
aXZlRnVuY3Rpb24gbV9mdW5jdGlvbjsKICAgICBOYXRpdmVGdW5jdGlvbiBtX2NvbnN0cnVjdG9y
OworICAgIGNvbnN0IERPTUpJVDo6U2lnbmF0dXJlKiBtX3NpZ25hdHVyZTsKIAogICAgIFN0cmlu
ZyBtX25hbWU7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
UHJvcGVydHlTbG90LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eVNs
b3QuaAppbmRleCA5ZGUxNTFhNTZhYTI3NTZjZmQwYzYwMDM2NjgyNjZiMTlmOTkzMmRkLi4zODdl
MzFiNDBlNWFlYmYyZjM1ZjZjYTI3MmUzODNjMDVkM2Y0NTJkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eVNsb3QuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eVNsb3QuaApAQCAtNTEsNiArNTEsNyBAQCBlbnVtIEF0
dHJpYnV0ZSB7CiAgICAgQ2xhc3NTdHJ1Y3R1cmUgICAgPSAxIDw8IDEyLCAvLyBwcm9wZXJ0eSBp
cyBhIGxhenkgY2xhc3Mgc3RydWN0dXJlIC0gb25seSB1c2VkIGJ5IHN0YXRpYyBoYXNodGFibGVz
CiAgICAgUHJvcGVydHlDYWxsYmFjayAgPSAxIDw8IDEzLCAvLyBwcm9wZXJ0eSB0aGF0IGlzIGEg
bGF6eSBwcm9wZXJ0eSBjYWxsYmFjayAtIG9ubHkgdXNlZCBieSBzdGF0aWMgaGFzaHRhYmxlcwog
ICAgIERPTUpJVEF0dHJpYnV0ZSAgID0gMSA8PCAxNCwgLy8gcHJvcGVydHkgaXMgYSBET00gSklU
IGF0dHJpYnV0ZSAtIG9ubHkgdXNlZCBieSBzdGF0aWMgaGFzaHRhYmxlcworICAgIERPTUpJVEZ1
bmN0aW9uICAgID0gMSA8PCAxNSwgLy8gcHJvcGVydHkgaXMgYSBET00gSklUIGZ1bmN0aW9uIC0g
b25seSB1c2VkIGJ5IHN0YXRpYyBoYXNodGFibGVzCiAgICAgQnVpbHRpbk9yRnVuY3Rpb24gPSBC
dWlsdGluIHwgRnVuY3Rpb24sIC8vIGhlbHBlciBvbmx5IHVzZWQgYnkgc3RhdGljIGhhc2h0YWJs
ZXMKICAgICBCdWlsdGluT3JGdW5jdGlvbk9yTGF6eVByb3BlcnR5ID0gQnVpbHRpbiB8IEZ1bmN0
aW9uIHwgQ2VsbFByb3BlcnR5IHwgQ2xhc3NTdHJ1Y3R1cmUgfCBQcm9wZXJ0eUNhbGxiYWNrLCAv
LyBoZWxwZXIgb25seSB1c2VkIGJ5IHN0YXRpYyBoYXNodGFibGVzCiAgICAgQnVpbHRpbk9yRnVu
Y3Rpb25PckFjY2Vzc29yT3JMYXp5UHJvcGVydHkgPSBCdWlsdGluIHwgRnVuY3Rpb24gfCBBY2Nl
c3NvciB8IENlbGxQcm9wZXJ0eSB8IENsYXNzU3RydWN0dXJlIHwgUHJvcGVydHlDYWxsYmFjaywg
Ly8gaGVscGVyIG9ubHkgdXNlZCBieSBzdGF0aWMgaGFzaHRhYmxlcwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvVk0uY3BwCmluZGV4IDgxMjM5YzViOTI0YjRlY2M4ZTZkNzBiYzgwNzdlODM4YWYx
ZTFkNjEuLmY5MjczNDczNGFjZWVjNDFhNDU4MzYwOTU0YjA3ZDhmYWMxMjViYmYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKQEAgLTUxMSwxNyArNTExLDE3IEBAIHN0YXRpYyBU
aHVua0dlbmVyYXRvciB0aHVua0dlbmVyYXRvckZvckludHJpbnNpYyhJbnRyaW5zaWMgaW50cmlu
c2ljKQogCiBOYXRpdmVFeGVjdXRhYmxlKiBWTTo6Z2V0SG9zdEZ1bmN0aW9uKE5hdGl2ZUZ1bmN0
aW9uIGZ1bmN0aW9uLCBOYXRpdmVGdW5jdGlvbiBjb25zdHJ1Y3RvciwgY29uc3QgU3RyaW5nJiBu
YW1lKQogewotICAgIHJldHVybiBnZXRIb3N0RnVuY3Rpb24oZnVuY3Rpb24sIE5vSW50cmluc2lj
LCBjb25zdHJ1Y3RvciwgbmFtZSk7CisgICAgcmV0dXJuIGdldEhvc3RGdW5jdGlvbihmdW5jdGlv
biwgTm9JbnRyaW5zaWMsIGNvbnN0cnVjdG9yLCBudWxscHRyLCBuYW1lKTsKIH0KIAotTmF0aXZl
RXhlY3V0YWJsZSogVk06OmdldEhvc3RGdW5jdGlvbihOYXRpdmVGdW5jdGlvbiBmdW5jdGlvbiwg
SW50cmluc2ljIGludHJpbnNpYywgTmF0aXZlRnVuY3Rpb24gY29uc3RydWN0b3IsIGNvbnN0IFN0
cmluZyYgbmFtZSkKK05hdGl2ZUV4ZWN1dGFibGUqIFZNOjpnZXRIb3N0RnVuY3Rpb24oTmF0aXZl
RnVuY3Rpb24gZnVuY3Rpb24sIEludHJpbnNpYyBpbnRyaW5zaWMsIE5hdGl2ZUZ1bmN0aW9uIGNv
bnN0cnVjdG9yLCBjb25zdCBET01KSVQ6OlNpZ25hdHVyZSogc2lnbmF0dXJlLCBjb25zdCBTdHJp
bmcmIG5hbWUpCiB7CiAjaWYgRU5BQkxFKEpJVCkKICAgICBpZiAoY2FuVXNlSklUKCkpIHsKICAg
ICAgICAgcmV0dXJuIGppdFN0dWJzLT5ob3N0RnVuY3Rpb25TdHViKAogICAgICAgICAgICAgdGhp
cywgZnVuY3Rpb24sIGNvbnN0cnVjdG9yLAogICAgICAgICAgICAgaW50cmluc2ljICE9IE5vSW50
cmluc2ljID8gdGh1bmtHZW5lcmF0b3JGb3JJbnRyaW5zaWMoaW50cmluc2ljKSA6IDAsCi0gICAg
ICAgICAgICBpbnRyaW5zaWMsIG5hbWUpOworICAgICAgICAgICAgaW50cmluc2ljLCBzaWduYXR1
cmUsIG5hbWUpOwogICAgIH0KICNlbHNlIC8vIEVOQUJMRShKSVQpCiAgICAgVU5VU0VEX1BBUkFN
KGludHJpbnNpYyk7CkBAIC01MjksNyArNTI5LDcgQEAgTmF0aXZlRXhlY3V0YWJsZSogVk06Omdl
dEhvc3RGdW5jdGlvbihOYXRpdmVGdW5jdGlvbiBmdW5jdGlvbiwgSW50cmluc2ljIGludHJpbnMK
ICAgICByZXR1cm4gTmF0aXZlRXhlY3V0YWJsZTo6Y3JlYXRlKCp0aGlzLAogICAgICAgICBhZG9w
dFJlZihuZXcgTmF0aXZlSklUQ29kZShNYWNyb0Fzc2VtYmxlckNvZGVSZWY6OmNyZWF0ZUxMSW50
Q29kZVJlZihsbGludF9uYXRpdmVfY2FsbF90cmFtcG9saW5lKSwgSklUQ29kZTo6SG9zdENhbGxU
aHVuaykpLCBmdW5jdGlvbiwKICAgICAgICAgYWRvcHRSZWYobmV3IE5hdGl2ZUpJVENvZGUoTWFj
cm9Bc3NlbWJsZXJDb2RlUmVmOjpjcmVhdGVMTEludENvZGVSZWYobGxpbnRfbmF0aXZlX2NvbnN0
cnVjdF90cmFtcG9saW5lKSwgSklUQ29kZTo6SG9zdENhbGxUaHVuaykpLCBjb25zdHJ1Y3RvciwK
LSAgICAgICAgTm9JbnRyaW5zaWMsIG5hbWUpOworICAgICAgICBOb0ludHJpbnNpYywgc2lnbmF0
dXJlLCBuYW1lKTsKIH0KIAogVk06OkNsaWVudERhdGE6On5DbGllbnREYXRhKCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9WTS5oCmluZGV4IGE5N2YxODEwMjQ3ZDkwYzAwYTQ4NmIzMzU0YjY1ZjY1
MjEwZTU5Y2QuLmJjZDgwMDRmNDQ3YjMwZTJhMGNmNzVkMDJhYWM3NmUxODQ3NzNkM2MgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaApAQCAtNDI5LDcgKzQyOSw3IEBAIGNsYXNzIFZNIDog
cHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFZNPiB7CiAgICAgc3RkOjp1bmlxdWVfcHRyPEZU
TDo6VGh1bmtzPiBmdGxUaHVua3M7CiAjZW5kaWYKICAgICBOYXRpdmVFeGVjdXRhYmxlKiBnZXRI
b3N0RnVuY3Rpb24oTmF0aXZlRnVuY3Rpb24sIE5hdGl2ZUZ1bmN0aW9uIGNvbnN0cnVjdG9yLCBj
b25zdCBTdHJpbmcmIG5hbWUpOwotICAgIE5hdGl2ZUV4ZWN1dGFibGUqIGdldEhvc3RGdW5jdGlv
bihOYXRpdmVGdW5jdGlvbiwgSW50cmluc2ljIGludHJpbnNpYywgTmF0aXZlRnVuY3Rpb24gY29u
c3RydWN0b3IsIGNvbnN0IFN0cmluZyYgbmFtZSk7CisgICAgTmF0aXZlRXhlY3V0YWJsZSogZ2V0
SG9zdEZ1bmN0aW9uKE5hdGl2ZUZ1bmN0aW9uLCBJbnRyaW5zaWMsIE5hdGl2ZUZ1bmN0aW9uIGNv
bnN0cnVjdG9yLCBjb25zdCBET01KSVQ6OlNpZ25hdHVyZSosIGNvbnN0IFN0cmluZyYgbmFtZSk7
CiAKICAgICBzdGF0aWMgcHRyZGlmZl90IGV4Y2VwdGlvbk9mZnNldCgpCiAgICAgewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9DTWFr
ZUxpc3RzLnR4dAppbmRleCAwNDQwMWI5YmQ1M2Y4OTVjN2IyMjFjODQwZGQxZTA5NTNlNzFmY2Mx
Li43YzAyNmJkOGM5NzNmMmMxYTY4ZTQ4MWEyYmM4NzM3YzhmMzEyNDhmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxp
c3RzLnR4dApAQCAtMzUxNCw2ICszNTE0LDE1IEBAIE1BS0VfSEFTSF9UT09MUygke1dFQkNPUkVf
RElSfS9wbGF0Zm9ybS9Db2xvckRhdGEpCiBsaXN0KEFQUEVORCBXZWJDb3JlX0RFUklWRURfU09V
UkNFUyAke0RFUklWRURfU09VUkNFU19XRUJDT1JFX0RJUn0vQ29sb3JEYXRhLmNwcCkKIAogCisj
IEdlbmVyYXRlIERPTUpJVEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaAorYWRkX2N1c3RvbV9jb21t
YW5kKAorICAgIE9VVFBVVCAke0RFUklWRURfU09VUkNFU19XRUJDT1JFX0RJUn0vRE9NSklUQWJz
dHJhY3RIZWFwUmVwb3NpdG9yeS5oCisgICAgTUFJTl9ERVBFTkRFTkNZIGRvbWppdC9ET01KSVRB
YnN0cmFjdEhlYXBSZXBvc2l0b3J5LnlhbWwKKyAgICBERVBFTkRTICR7V0VCQ09SRV9ESVJ9L2Rv
bWppdC9nZW5lcmF0ZS1hYnN0cmFjdC1oZWFwLnJiCisgICAgQ09NTUFORCAke1JVQllfRVhFQ1VU
QUJMRX0gJHtXRUJDT1JFX0RJUn0vZG9taml0L2dlbmVyYXRlLWFic3RyYWN0LWhlYXAucmIgJHtX
RUJDT1JFX0RJUn0vZG9taml0L0RPTUpJVEFic3RyYWN0SGVhcFJlcG9zaXRvcnkueWFtbCAke0RF
UklWRURfU09VUkNFU19XRUJDT1JFX0RJUn0vRE9NSklUQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5o
CisgICAgVkVSQkFUSU0pCitsaXN0KEFQUEVORCBXZWJDb3JlX0RFUklWRURfU09VUkNFUyAke0RF
UklWRURfU09VUkNFU19XRUJDT1JFX0RJUn0vRE9NSklUQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5o
KQorCiAjIEdlbmVyYXRlIFhNTFZpZXdlckNTUy5oCiBhZGRfY3VzdG9tX2NvbW1hbmQoCiAgICAg
T1VUUFVUICR7REVSSVZFRF9TT1VSQ0VTX1dFQkNPUkVfRElSfS9YTUxWaWV3ZXJDU1MuaCAke0RF
UklWRURfU09VUkNFU19XRUJDT1JFX0RJUn0vWE1MVmlld2VyLm1pbi5jc3MKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UgYi9Tb3VyY2UvV2ViQ29yZS9EZXJp
dmVkU291cmNlcy5tYWtlCmluZGV4IGEyMzYyNDVmNTI1ODUzZGYxNDkyYzEyMWZmMjAzNzljNjYx
NGMwZTUuLjZhZGYxNjFiYWRmNWYxYTNiNDk3ODYyODAxOTI4MmNjNGM4NzdhODkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKKysrIGIvU291cmNlL1dlYkNv
cmUvRGVyaXZlZFNvdXJjZXMubWFrZQpAQCAtNzQ0LDYgKzc0NCw3IEBAIEpTX0JJTkRJTkdfSURM
UyA9IFwKIAogUFlUSE9OID0gcHl0aG9uCiBQRVJMID0gcGVybAorUlVCWSA9IHJ1YnkKIAogaWZl
cSAoJChPUyksV2luZG93c19OVCkKICAgICBERUxFVEUgPSBjbWQgLy9DIGRlbApAQCAtODUwLDYg
Kzg1MSw3IEBAIGFsbCA6IFwKICAgICBDU1NWYWx1ZUtleXdvcmRzLmNwcCBcCiAgICAgQ1NTVmFs
dWVLZXl3b3Jkcy5oIFwKICAgICBDb2xvckRhdGEuY3BwIFwKKyAgICBET01KSVRBYnN0cmFjdEhl
YXBSZXBvc2l0b3J5LmggXAogICAgIEV2ZW50SW50ZXJmYWNlcy5oIFwKICAgICBFdmVudFRhcmdl
dEludGVyZmFjZXMuaCBcCiAgICAgRXhjZXB0aW9uQ29kZURlc2NyaXB0aW9uLmNwcCBcCkBAIC05
MzksNiArOTQxLDE1IEBAIFNlbGVjdG9yUHNldWRvRWxlbWVudFR5cGVNYXAuY3BwIDogJChXZWJD
b3JlKS9jc3MvbWFrZVNlbGVjdG9yUHNldWRvRWxlbWVudHNNYXAuCiAKICMgLS0tLS0tLS0KIAor
IyBET01KSVQgQWJzdHJhY3QgSGVhcAorCithbGwgOiBET01KSVRBYnN0cmFjdEhlYXBSZXBvc2l0
b3J5LmgKKworRE9NSklUQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5oIDogJChXZWJDb3JlKS9kb21q
aXQvZ2VuZXJhdGUtYWJzdHJhY3QtaGVhcC5yYiAkKFdlYkNvcmUpL2RvbWppdC9ET01KSVRBYnN0
cmFjdEhlYXBSZXBvc2l0b3J5LnlhbWwKKwkkKFJVQlkpICIkKFdlYkNvcmUpL2RvbWppdC9nZW5l
cmF0ZS1hYnN0cmFjdC1oZWFwLnJiIiAkKFdlYkNvcmUpL2RvbWppdC9ET01KSVRBYnN0cmFjdEhl
YXBSZXBvc2l0b3J5LnlhbWwgLi9ET01KSVRBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmgKKworIyAt
LS0tLS0tLQorCiAjIFhNTFZpZXdlciBDU1MKIAogYWxsIDogWE1MVmlld2VyQ1NTLmgKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL2J5dGVjb2RlL1NwZWN1bGF0
ZWRUeXBlLmggYi9Tb3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy9ieXRlY29kZS9TcGVj
dWxhdGVkVHlwZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA5NDY2ZjRmMDBiODA3ZGZlZGEwZmM4MjA4NTQ2Yjcx
ODQ0ZjA5OWUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5nSGVh
ZGVycy9ieXRlY29kZS9TcGVjdWxhdGVkVHlwZS5oCkBAIC0wLDAgKzEsMjkgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYkNvcmVfRldE
X1NwZWN1bGF0ZWRUeXBlX2gKKyNkZWZpbmUgV2ViQ29yZV9GV0RfU3BlY3VsYXRlZFR5cGVfaAor
I2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1NwZWN1bGF0ZWRUeXBlLmg+CisjZW5kaWYKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL2RvbWppdC9ET01KSVRTaWdu
YXR1cmUuaCBiL1NvdXJjZS9XZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL2RvbWppdC9ET01KSVRT
aWduYXR1cmUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43MjAwMjdmNmUwOGUzODMwZTM1MWIxYzljZDMyZjIwMzEy
OWQyYjVkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRl
cnMvZG9taml0L0RPTUpJVFNpZ25hdHVyZS5oCkBAIC0wLDAgKzEsMjkgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAor
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYkNvcmVfRldEX0RP
TUpJVFNpZ25hdHVyZV9oCisjZGVmaW5lIFdlYkNvcmVfRldEX0RPTUpJVFNpZ25hdHVyZV9oCisj
aW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRE9NSklUU2lnbmF0dXJlLmg+CisjZW5kaWYKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBi
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBj
ZWZhYjFkMWUxZWNjYmVlZmRlNjUzNzY1Mzk2OTQ1YWY3ZDlhZmUyLi4yZTQ2YzM1ODNlYjAyYWE0
YzYwZjJjZjhhY2I1OTNjZWE3YjNlN2ZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC02MjAzLDEyICs2MjAzLDEzIEBACiAJCUUz
MTUwRUE3MURBNzIxOTMwMDE5NDAxMiAvKiBET01KSVRIZWxwZXJzLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzE1MEVBNTFEQTcyMThEMDAxOTQwMTIg
LyogRE9NSklUSGVscGVycy5oICovOyB9OwogCQlFMzE4MDM5RDFEQzQwMDk5MDA5OTMyQzIgLyog
SlNEeW5hbWljRG93bmNhc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEUzQTU4NzJFMURDM0Y1MjYwMEY2MDdBNiAvKiBKU0R5bmFtaWNEb3duY2FzdC5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUUzNTY1
QjdCMURDMkQ2QzkwMDIxN0RCRCAvKiBKU0V2ZW50Q3VzdG9tLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzRFRTQ5RjFEQzJENTc1MDBFQUE5RDMgLyog
SlNFdmVudEN1c3RvbS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07Ci0JCUUzNUNBMTREMURCQzNBM0YwMEY4MzUxNiAvKiBET01KSVRBYnN0cmFjdEhlYXBS
ZXBvc2l0b3J5LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEUzNUNBMTRCMURCQzNBM0MwMEY4MzUxNiAvKiBET01KSVRBYnN0cmFjdEhlYXBSZXBvc2l0
b3J5LmNwcCAqLzsgfTsKLQkJRTM1Q0ExNEUxREJDM0E0MjAwRjgzNTE2IC8qIERPTUpJVEFic3Ry
YWN0SGVhcFJlcG9zaXRvcnkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEUzNUNBMTRDMURCQzNBM0MwMEY4MzUxNiAvKiBET01KSVRBYnN0cmFjdEhlYXBS
ZXBvc2l0b3J5LmggKi87IH07CisJCUUzNTgwMkI2MURDODQzNUQwMEE5NzczQyAvKiBET01KSVRJ
RExUeXBlRmlsdGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBFMzU4MDJCNTFEQzg0MzU4MDBBOTc3M0MgLyogRE9NSklUSURMVHlwZUZpbHRlci5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUUzNzdGRTRE
MURBREUxNjUwMENERDAyNSAvKiBOb2RlQ29uc3RhbnRzLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFM0QwNDk5MzFEQURDMDQ1MDA3MThGM0MgLyogTm9k
ZUNvbnN0YW50cy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCUUzODgzODk4MUJBRDE0NUYwMEQ2MkVFMyAvKiBTY3JpcHRNb2R1bGVMb2FkZXIuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM4ODM4OTQx
QkFEMTQ1RjAwRDYyRUUzIC8qIFNjcmlwdE1vZHVsZUxvYWRlci5jcHAgKi87IH07CiAJCUUzODgz
ODk5MUJBRDE0NUYwMEQ2MkVFMyAvKiBTY3JpcHRNb2R1bGVMb2FkZXIuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzODgzODk1MUJBRDE0NUYwMEQ2MkVF
MyAvKiBTY3JpcHRNb2R1bGVMb2FkZXIuaCAqLzsgfTsKIAkJRTM5OEZDMjQxREMzMkEyMDAwM0M0
Njg0IC8qIERPTUpJVEhlbHBlcnMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRTM5OEZDMjMxREMzMkExQjAwM0M0Njg0IC8qIERPTUpJVEhlbHBlcnMu
Y3BwICovOyB9OworCQlFM0E3NzY2NzFEQzg1RDI4MDBCNjkwRDggLyogRE9NSklUSURMQ29udmVy
dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTNBNzc2
NjUxREM4NUQyMjAwQjY5MEQ4IC8qIERPTUpJVElETENvbnZlcnQuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlFM0E3NzY2ODFEQzg1RDI4MDBCNjkw
RDggLyogRE9NSklUSURMVHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRTNBNzc2NjYxREM4NUQyMjAwQjY5MEQ4IC8qIERPTUpJVElETFR5cGUuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFM0IyRjBF
QjFEN0Y0QzlEMDBCMEM5RDEgLyogTG9hZGFibGVDbGFzc2ljU2NyaXB0LmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzQjJGMEUzMUQ3RjM1RUMwMEIw
QzlEMSAvKiBMb2FkYWJsZUNsYXNzaWNTY3JpcHQuY3BwICovOyB9OwogCQlFM0IyRjBFQzFEN0Y0
Q0ExMDBCMEM5RDEgLyogTG9hZGFibGVTY3JpcHQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTNCMkYwRTkxRDdGM0QzQzAwQjBDOUQxIC8qIExvYWRh
YmxlU2NyaXB0LmNwcCAqLzsgfTsKIAkJRTNCMkYwRUQxRDdGNENBMzAwQjBDOUQxIC8qIExvYWRh
YmxlU2NyaXB0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBFM0IyRjBFNzFEN0YzNUVDMDBCMEM5RDEgLyogTG9hZGFibGVTY3JpcHQuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMTQwMzgsMTMgKzE0MDM5
LDE1IEBACiAJCUUxRkY4RjZBMTgwREI1QkUwMDEzMjY3NCAvKiBDcnlwdG9BbGdvcml0aG1SZWdp
c3RyeS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDcnlwdG9BbGdv
cml0aG1SZWdpc3RyeS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUxRkY4RjZC
MTgwREI1QkUwMDEzMjY3NCAvKiBDcnlwdG9BbGdvcml0aG1SZWdpc3RyeS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBDcnlwdG9BbGdvcml0aG1SZWdpc3RyeS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlFMzE1MEVBNTFEQTcyMThEMDAxOTQwMTIgLyogRE9NSklU
SGVscGVycy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBET01KSVRIZWxwZXJz
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzMzQ4MjVFMURDOTNBQTAwMDlDOTU0
NCAvKiBET01KSVRBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IERPTUpJVEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJRTM0RUU0OUYxREMyRDU3NTAwRUFBOUQzIC8qIEpTRXZlbnRDdXN0
b20uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNFdmVudEN1c3RvbS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlFMzVDQTE0QjFEQkMzQTNDMDBGODM1MTYgLyog
RE9NSklUQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBET01KSVRBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRTM1Q0ExNEMxREJDM0EzQzAwRjgzNTE2IC8qIERPTUpJVEFi
c3RyYWN0SGVhcFJlcG9zaXRvcnkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
RE9NSklUQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQlFMzU4MDJCNTFEQzg0MzU4MDBBOTc3M0MgLyogRE9NSklUSURMVHlwZUZpbHRlci5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBET01KSVRJRExUeXBlRmlsdGVyLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzODgzODk0MUJBRDE0NUYwMEQ2MkVFMyAvKiBT
Y3JpcHRNb2R1bGVMb2FkZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gU2NyaXB0TW9kdWxlTG9hZGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
RTM4ODM4OTUxQkFEMTQ1RjAwRDYyRUUzIC8qIFNjcmlwdE1vZHVsZUxvYWRlci5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTY3JpcHRNb2R1bGVMb2FkZXIuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM5OEZDMjMxREMzMkExQjAwM0M0Njg0IC8qIERPTUpJVEhl
bHBlcnMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRE9NSklUSGVs
cGVycy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzQTU4NzJFMURDM0Y1MjYw
MEY2MDdBNiAvKiBKU0R5bmFtaWNEb3duY2FzdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBKU0R5bmFtaWNEb3duY2FzdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQlFM0E3NzY2NTFEQzg1RDIyMDBCNjkwRDggLyogRE9NSklUSURMQ29udmVydC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBET01KSVRJRExDb252ZXJ0Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCUUzQTc3NjY2MURDODVEMjIwMEI2OTBEOCAvKiBET01KSVRJRExU
eXBlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERPTUpJVElETFR5cGUuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTNBRkE5NjQxREE2RTkwODAwMjg2MUJEIC8q
IEpTTm9kZURPTUpJVC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBK
U05vZGVET01KSVQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFM0IyRjBFMzFE
N0YzNUVDMDBCMEM5RDEgLyogTG9hZGFibGVDbGFzc2ljU2NyaXB0LmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IExvYWRhYmxlQ2xhc3NpY1NjcmlwdC5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzQjJGMEU0MUQ3RjM1RUMwMEIwQzlEMSAvKiBMb2Fk
YWJsZUNsYXNzaWNTY3JpcHQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTG9h
ZGFibGVDbGFzc2ljU2NyaXB0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNzIz
NCw2ICsxNzIzNyw3IEBACiAJCQkJNjU2NTgxNDcwOUQxMzA0MzAwMEU2MUQ3IC8qIENTU1ZhbHVl
S2V5d29yZHMuZ3BlcmYgKi8sCiAJCQkJNjU2NTgxNDgwOUQxMzA0MzAwMEU2MUQ3IC8qIENTU1Zh
bHVlS2V5d29yZHMuaCAqLywKIAkJCQk5QjNBODg3MTE0NTYzMkY5MDAzQUU4RjUgLyogRE9NRE9N
U2V0dGFibGVUb2tlbkxpc3QuaCAqLywKKwkJCQlFMzM0ODI1RTFEQzkzQUEwMDA5Qzk1NDQgLyog
RE9NSklUQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5oICovLAogCQkJCUUxQzZDRkMyMTc0NkQyOTMw
MDdCODdBMSAvKiBET01XaW5kb3dDb25zdHJ1Y3RvcnMuaWRsICovLAogCQkJCTk3MEI3MkE1MTQ1
MDA4RUIwMEYwMEEzNyAvKiBFdmVudEhlYWRlcnMuaCAqLywKIAkJCQk5NzBCNzI4OTE0NEZGQUM2
MDBGMDBBMzcgLyogRXZlbnRJbnRlcmZhY2VzLmggKi8sCkBAIC0yMjgzMSwxMSArMjI4MzUsMTIg
QEAKIAkJRTNBRkE5NjMxREE2RThBRjAwMjg2MUJEIC8qIGRvbWppdCAqLyA9IHsKIAkJCWlzYSA9
IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCi0JCQkJRTM1Q0ExNEIxREJDM0EzQzAwRjgzNTE2
IC8qIERPTUpJVEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuY3BwICovLAotCQkJCUUzNUNBMTRDMURC
QzNBM0MwMEY4MzUxNiAvKiBET01KSVRBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmggKi8sCiAJCQkJ
RTNDOTlBMDgxREMzRDQxNzAwNzk0QUQzIC8qIERPTUpJVENoZWNrRE9NLmggKi8sCiAJCQkJRTM5
OEZDMjMxREMzMkExQjAwM0M0Njg0IC8qIERPTUpJVEhlbHBlcnMuY3BwICovLAogCQkJCUUzMTUw
RUE1MURBNzIxOEQwMDE5NDAxMiAvKiBET01KSVRIZWxwZXJzLmggKi8sCisJCQkJRTNBNzc2NjUx
REM4NUQyMjAwQjY5MEQ4IC8qIERPTUpJVElETENvbnZlcnQuaCAqLywKKwkJCQlFM0E3NzY2NjFE
Qzg1RDIyMDBCNjkwRDggLyogRE9NSklUSURMVHlwZS5oICovLAorCQkJCUUzNTgwMkI1MURDODQz
NTgwMEE5NzczQyAvKiBET01KSVRJRExUeXBlRmlsdGVyLmggKi8sCiAJCQkJRTNCN0MwNjIxREMz
NDE1QTAwMUZCMEI4IC8qIEpTRG9jdW1lbnRET01KSVQuY3BwICovLAogCQkJCUUzQUZBOTY0MURB
NkU5MDgwMDI4NjFCRCAvKiBKU05vZGVET01KSVQuY3BwICovLAogCQkJKTsKQEAgLTI1Njk5LDYg
KzI1NzA0LDcgQEAKIAkJCQk0NjBDQkYzNjFENEJDRDBFMDA5MkU4OEUgLyogSlNET01XaW5kb3dQ
cm9wZXJ0aWVzLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQ0JGQjUzRDBEQ0QyOUNGMDAxOUIzRTUg
LyogSlNET01XaW5kb3dTaGVsbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNjVFMEU5NDQxMTMzQzg5
RjAwQjRDQjEwIC8qIEpTRE9NV3JhcHBlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTNBNzc2Njcx
REM4NUQyODAwQjY5MEQ4IC8qIERPTUpJVElETENvbnZlcnQuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUZENzg2OEJBMTM2Qjk5OTIwMEQ0MDNERiAvKiBKU0R5bmFtaWNzQ29tcHJlc3Nvck5vZGUuaCBp
biBIZWFkZXJzICovLAogCQkJCTY1REYzMUZBMDlEMUNDNjAwMDBCRTMyNSAvKiBKU0VsZW1lbnQu
aCBpbiBIZWFkZXJzICovLAogCQkJCUFERUM3OEY4MThFRTUzMDgwMDEzMTVDMiAvKiBKU0VsZW1l
bnRDdXN0b20uaCBpbiBIZWFkZXJzICovLApAQCAtMjY3ODgsNyArMjY3OTQsNiBAQAogCQkJCTQz
OTA0NkU4MTJEQTI1RTgwMEFGODBBMiAvKiBSZW5kZXJNYXRoTUxTY3JpcHRzLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk0MzkwNDZFQzEyREEyNUU4MDBBRjgwQTkgLyogUmVuZGVyTWF0aE1MVG9rZW4u
aCBpbiBIZWFkZXJzICovLAogCQkJCTQzOTA0NkVBMTJEQTI1RTgwMEFGODBBMiAvKiBSZW5kZXJN
YXRoTUxVbmRlck92ZXIuaCBpbiBIZWFkZXJzICovLAotCQkJCUUzNUNBMTRFMURCQzNBNDIwMEY4
MzUxNiAvKiBET01KSVRBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmggaW4gSGVhZGVycyAqLywKIAkJ
CQlFNEMyNzk1OTBDRjk3NDE5MDBFOTdCOTggLyogUmVuZGVyTWVkaWEuaCBpbiBIZWFkZXJzICov
LAogCQkJCURFQkNDREQyMTY2NDZFODIwMEE0NTJFMSAvKiBSZW5kZXJNZWRpYUNvbnRyb2xFbGVt
ZW50cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDFGQTMwM0YxMzE2QzI5QzAwQzBCRkM1IC8qIFJl
bmRlck1lZGlhQ29udHJvbHMuaCBpbiBIZWFkZXJzICovLApAQCAtMjcyNjIsNiArMjcyNjcsNyBA
QAogCQkJCTA4NTI1RTYzMTI3OEMwMDEwMEE4NDc3OCAvKiBTVkdBbmltYXRlZFN0YXRpY1Byb3Bl
cnR5VGVhck9mZi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDg0REI1OUIxMjgwMDhDQzAwMkE2RDY0
IC8qIFNWR0FuaW1hdGVkU3RyaW5nLmggaW4gSGVhZGVycyAqLywKIAkJCQkwODI1MDkzOTEyOEJE
NEQ4MDBFMkVEOEUgLyogU1ZHQW5pbWF0ZWRUcmFuc2Zvcm1MaXN0LmggaW4gSGVhZGVycyAqLywK
KwkJCQlFM0E3NzY2ODFEQzg1RDI4MDBCNjkwRDggLyogRE9NSklUSURMVHlwZS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMDg1QTE1OTMxMjg5QThERDAwMjcxMEUzIC8qIFNWR0FuaW1hdGVkVHJhbnNm
b3JtTGlzdFByb3BlcnR5VGVhck9mZi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDM5RDMzNDMxM0E2
OTExQzAwQzIwRjRGIC8qIFNWR0FuaW1hdGVkVHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDM5
RDMzNDQxM0E2OTExQzAwQzIwRjRGIC8qIFNWR0FuaW1hdGVkVHlwZUFuaW1hdG9yLmggaW4gSGVh
ZGVycyAqLywKQEAgLTI3ODAzLDYgKzI3ODA5LDcgQEAKIAkJCQk5N0FBQkQyMzE0RkEwOUQ1MDA3
NDU3QUUgLyogV2ViU29ja2V0RXh0ZW5zaW9uRGlzcGF0Y2hlci5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJNEE1QTJBREMxNjFFN0UwMDAwNTg4OUREIC8qIFdlYlNvY2tldEV4dGVuc2lvblBhcnNlci5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJOTdBQUJEMjQxNEZBMDlENTAwNzQ1N0FFIC8qIFdlYlNvY2tl
dEV4dGVuc2lvblByb2Nlc3Nvci5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTM1ODAyQjYxREM4NDM1
RDAwQTk3NzNDIC8qIERPTUpJVElETFR5cGVGaWx0ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTk3
QUFCRDI1MTRGQTA5RDUwMDc0NTdBRSAvKiBXZWJTb2NrZXRGcmFtZS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJOTdBQUJEMjcxNEZBMDlENTAwNzQ1N0FFIC8qIFdlYlNvY2tldEhhbmRzaGFrZS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMzFERUE0NTYxQjM5RjREOTAwRjc3MTc4IC8qIFdlYlN5c3RlbUJh
Y2tkcm9wTGF5ZXIuaCBpbiBIZWFkZXJzICovLApAQCAtMjg5MDQsNyArMjg5MTEsNiBAQAogCQkJ
CUIyQzNEQTYyMEQwMDZDRDYwMEVGNkYyNiAvKiBGb250Q2FjaGUuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJMUMzOTY5RDAxQjc0MjExRTAwMkJDRkE3IC8qIEZvbnRDYWNoZUNvcmVUZXh0LmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTM3MjdERkQ1MTQyQUFFNDUwMEQ0NDlDQiAvKiBGb250Q2FjaGVJ
T1MubW0gaW4gU291cmNlcyAqLywKLQkJCQlFMzVDQTE0RDFEQkMzQTNGMDBGODM1MTYgLyogRE9N
SklUQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCMkFGRkM3
QzBEMDBBNUMxMDAzMDA3NEQgLyogRm9udENhY2hlTWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJ
QjJDM0RBNjAwRDAwNkNENjAwRUY2RjI2IC8qIEZvbnRDYXNjYWRlLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCUIyQUZGQzgwMEQwMEE1QzEwMDMwMDc0RCAvKiBGb250Q2FzY2FkZUNvY29hLm1tIGlu
IFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RP
TUdsb2JhbE9iamVjdC5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxP
YmplY3QuaAppbmRleCBhMDFiZjU2OGM1ZmUzMDEzY2MxOTQ5OWQ1MmEyOGViYzFhNzhjOTRlLi5i
NjhmNDczMzIxODQxNDVhZDJmNjk1ZTZmYTUwMjJmM2VlOGJiMmQ2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmgKQEAgLTgyLDcgKzgyLDcgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogICAgIHB1YmxpYzoKICAgICAgICAgfkpTRE9NR2xvYmFsT2Jq
ZWN0KCk7CiAKLSAgICAgICAgc3RhdGljIGNvbnN0IEpTQzo6Q2xhc3NJbmZvKiBpbmZvKCkgeyBy
ZXR1cm4gJnNfaW5mbzsgfQorICAgICAgICBzdGF0aWMgY29uc3RleHByIGNvbnN0IEpTQzo6Q2xh
c3NJbmZvKiBpbmZvKCkgeyByZXR1cm4gJnNfaW5mbzsgfQogCiAgICAgICAgIHN0YXRpYyBKU0M6
OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTVmFsdWUgcHJv
dG90eXBlKQogICAgICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvQ29kZUdlbmVyYXRvckpTLnBtCmluZGV4IDIxZTBkYzZkNTUzNTljNGZiY2UxNGJmY2QzYzY5
ZjE5MGNlYThkY2UuLjQwODg3ZjkzZWUzZTlhZTNkZWQ1ZjIzYTdmZDFmODA3M2I1OTQ4YTUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpT
LnBtCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpT
LnBtCkBAIC0xNDM1LDcgKzE0MzUsNyBAQCBzdWIgR2VuZXJhdGVIZWFkZXIKICAgICAgICAgcHVz
aChAaGVhZGVyQ29udGVudCwgInByb3RlY3RlZDpcbiIpOwogICAgICAgICBwdXNoKEBoZWFkZXJD
b250ZW50LCAiICAgIHN0YXRpYyBjb25zdCBKU0M6OkNsYXNzSW5mbyBzX2luZm87XG4iKTsKICAg
ICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgInB1YmxpYzpcbiIpOwotICAgICAgICBwdXNoKEBo
ZWFkZXJDb250ZW50LCAiICAgIHN0YXRpYyBjb25zdCBKU0M6OkNsYXNzSW5mbyogaW5mbygpIHsg
cmV0dXJuICZzX2luZm87IH1cblxuIik7CisgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIg
ICAgc3RhdGljIGNvbnN0ZXhwciBjb25zdCBKU0M6OkNsYXNzSW5mbyogaW5mbygpIHsgcmV0dXJu
ICZzX2luZm87IH1cblxuIik7CiAgICAgfSBlbHNlIHsKICAgICAgICAgcHVzaChAaGVhZGVyQ29u
dGVudCwgIlxuIik7CiAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgREVDTEFSRV9J
TkZPO1xuXG4iKTsKQEAgLTE4ODksNyArMTg4OSwxMSBAQCBzdWIgR2VuZXJhdGVQcm9wZXJ0aWVz
SGFzaFRhYmxlCiAgICAgICAgICMgRklYTUU6IFJlbW92ZSB0aGlzIG9uY2Ugd2UgY2FuIGdldCBy
aWQgb2YgdGhlIHF1aXJrIGludHJvZHVjZWQgaW4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE2Mzk2Ny4KICAgICAgICAgJGZ1bmN0aW9uTGVuZ3RoID0gMyBpZiAkaW50
ZXJmYWNlTmFtZSBlcSAiRXZlbnQiIGFuZCAkZnVuY3Rpb24tPm5hbWUgZXEgImluaXRFdmVudCI7
CiAKLSAgICAgICAgcHVzaChAJGhhc2hWYWx1ZTIsICRmdW5jdGlvbkxlbmd0aCk7CisgICAgICAg
IGlmICgkZnVuY3Rpb24tPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJET01KSVQifSkgeworICAgICAg
ICAgICAgcHVzaChAJGhhc2hWYWx1ZTIsICImRE9NSklUU2lnbmF0dXJlRm9yIiAuICRpbnRlcmZh
Y2UtPnR5cGUtPm5hbWUgLiAkY29kZUdlbmVyYXRvci0+V0tfdWNmaXJzdCgkZnVuY3Rpb24tPm5h
bWUpKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHB1c2goQCRoYXNoVmFsdWUyLCAk
ZnVuY3Rpb25MZW5ndGgpOworICAgICAgICB9CiAKICAgICAgICAgcHVzaChAJGhhc2hTcGVjaWFs
cywgQ29tcHV0ZUZ1bmN0aW9uU3BlY2lhbCgkaW50ZXJmYWNlLCAkZnVuY3Rpb24pKTsKIApAQCAt
MjUwNSwzOSArMjUwOSwyOCBAQCBzdWIgYWRkVW5zY29wYWJsZVByb3BlcnRpZXMKICAgICBwdXNo
KEBpbXBsQ29udGVudCwgIiAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJv
cGVydHlOYW1lcy0+dW5zY29wYWJsZXNTeW1ib2wsICZ1bnNjb3BhYmxlcywgRG9udEVudW0gfCBS
ZWFkT25seSk7XG4iKTsKIH0KIAotc3ViIEdldFJlc3VsdFR5cGVGaWx0ZXIKK3N1YiBHZXRVbnNh
ZmVBcmd1bWVudFR5cGUKIHsKLSAgICBteSAoJHR5cGUpID0gQF87CisgICAgbXkgKCRpbnRlcmZh
Y2UsICR0eXBlKSA9IEBfOwogCi0gICAgbXkgJVR5cGVGaWx0ZXJzID0gKAotICAgICAgICAiYW55
IiA9PiAiU3BlY0hlYXBUb3AiLAotICAgICAgICAiYm9vbGVhbiIgPT4gIlNwZWNCb29sZWFuIiwK
LSAgICAgICAgImJ5dGUiID0+ICJTcGVjSW50MzJPbmx5IiwKLSAgICAgICAgIm9jdGV0IiA9PiAi
U3BlY0ludDMyT25seSIsCi0gICAgICAgICJzaG9ydCIgPT4gIlNwZWNJbnQzMk9ubHkiLAotICAg
ICAgICAidW5zaWduZWQgc2hvcnQiID0+ICJTcGVjSW50MzJPbmx5IiwKLSAgICAgICAgImxvbmci
ID0+ICJTcGVjSW50MzJPbmx5IiwKLSAgICAgICAgInVuc2lnbmVkIGxvbmciID0+ICJTcGVjQnl0
ZWNvZGVOdW1iZXIiLAotICAgICAgICAibG9uZyBsb25nIiA9PiAiU3BlY0J5dGVjb2RlTnVtYmVy
IiwKLSAgICAgICAgInVuc2lnbmVkIGxvbmcgbG9uZyIgPT4gIlNwZWNCeXRlY29kZU51bWJlciIs
Ci0gICAgICAgICJmbG9hdCIgPT4gIlNwZWNCeXRlY29kZU51bWJlciIsCi0gICAgICAgICJ1bnJl
c3RyaWN0ZWQgZmxvYXQiID0+ICJTcGVjQnl0ZWNvZGVOdW1iZXIiLAotICAgICAgICAiZG91Ymxl
IiA9PiAiU3BlY0J5dGVjb2RlTnVtYmVyIiwKLSAgICAgICAgInVucmVzdHJpY3RlZCBkb3VibGUi
ID0+ICJTcGVjQnl0ZWNvZGVOdW1iZXIiLAotICAgICAgICAiRE9NU3RyaW5nIiA9PiAiU3BlY1N0
cmluZyIsCi0gICAgICAgICJCeXRlU3RyaW5nIiA9PiAiU3BlY1N0cmluZyIsCi0gICAgICAgICJV
U1ZTdHJpbmciID0+ICJTcGVjU3RyaW5nIiwKLSAgICApOworICAgIG15ICRJRExUeXBlID0gR2V0
SURMVHlwZSgkaW50ZXJmYWNlLCAkdHlwZSk7CisgICAgcmV0dXJuICJET01KSVQ6OklETEpTQXJn
dW1lbnRUeXBlPCR7SURMVHlwZX0+IjsKK30KIAotICAgIGlmIChleGlzdHMgJFR5cGVGaWx0ZXJz
eyR0eXBlLT5uYW1lfSkgewotICAgICAgICBteSAkcmVzdWx0VHlwZSA9ICJKU0M6OiRUeXBlRmls
dGVyc3skdHlwZS0+bmFtZX0iOwotICAgICAgICBpZiAoJHR5cGUtPmlzTnVsbGFibGUpIHsKLSAg
ICAgICAgICAgIGRpZSAiXCJhbnlcIiB0eXBlIG11c3Qgbm90IGJlY29tZSBudWxsYWJsZS4iIGlm
ICR0eXBlLT5uYW1lIGVxICJhbnkiOwotICAgICAgICAgICAgJHJlc3VsdFR5cGUgPSAiKCRyZXN1
bHRUeXBlIHwgSlNDOjpTcGVjT3RoZXIpIjsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gJHJl
c3VsdFR5cGU7Ci0gICAgfQotICAgIHJldHVybiAiU3BlY0hlYXBUb3AiOworc3ViIEdldEFyZ3Vt
ZW50VHlwZUZpbHRlcgoreworICAgIG15ICgkaW50ZXJmYWNlLCAkdHlwZSkgPSBAXzsKKworICAg
IG15ICRJRExUeXBlID0gR2V0SURMVHlwZSgkaW50ZXJmYWNlLCAkdHlwZSk7CisgICAgcmV0dXJu
ICJET01KSVQ6OklETEFyZ3VtZW50VHlwZUZpbHRlcjwke0lETFR5cGV9PiI7Cit9CisKK3N1YiBH
ZXRSZXN1bHRUeXBlRmlsdGVyCit7CisgICAgbXkgKCRpbnRlcmZhY2UsICR0eXBlKSA9IEBfOwor
CisgICAgbXkgJElETFR5cGUgPSBHZXRJRExUeXBlKCRpbnRlcmZhY2UsICR0eXBlKTsKKyAgICBy
ZXR1cm4gIkRPTUpJVDo6SURMUmVzdWx0VHlwZUZpbHRlcjwke0lETFR5cGV9PiI7CiB9CiAKIHN1
YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCkBAIC0yNjA4LDYgKzI2MDEsMTcgQEAgc3ViIEdlbmVy
YXRlSW1wbGVtZW50YXRpb24KICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiI2lmICR7
Y29uZGl0aW9uYWxTdHJpbmd9XG4iKSBpZiAkY29uZGl0aW9uYWxTdHJpbmc7CiAgICAgICAgICAg
ICBteSAkZnVuY3Rpb25OYW1lID0gR2V0RnVuY3Rpb25OYW1lKCRpbnRlcmZhY2UsICRjbGFzc05h
bWUsICRmdW5jdGlvbik7CiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIkpTQzo6RW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCAke2Z1bmN0aW9uTmFtZX0oSlNDOjpFeGVjU3RhdGUq
KTtcbiIpOworICAgICAgICAgICAgaWYgKCRjb2RlR2VuZXJhdG9yLT5FeHRlbmRlZEF0dHJpYnV0
ZUNvbnRhaW5zKCRmdW5jdGlvbi0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57RE9NSklUfSwgIlNpZ25h
dHVyZSIpKSB7CisgICAgICAgICAgICAgICAgJGltcGxJbmNsdWRlc3siRE9NSklUSURMVHlwZS5o
In0gPSAxOworICAgICAgICAgICAgICAgIG15ICR1bnNhZmVGdW5jdGlvbk5hbWUgPSAidW5zYWZl
IiAuICRjb2RlR2VuZXJhdG9yLT5XS191Y2ZpcnN0KCRmdW5jdGlvbk5hbWUpOworICAgICAgICAg
ICAgICAgIG15ICRmdW5jdGlvblNpZ25hdHVyZSA9ICJKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgJHt1bnNhZmVGdW5jdGlvbk5hbWV9KEpTQzo6RXhlY1N0YXRlKiwgJGNsYXNzTmFt
ZSoiOworICAgICAgICAgICAgICAgIGZvcmVhY2ggbXkgJGFyZ3VtZW50IChAeyRmdW5jdGlvbi0+
YXJndW1lbnRzfSkgeworICAgICAgICAgICAgICAgICAgICBteSAkdHlwZSA9ICRhcmd1bWVudC0+
dHlwZTsKKyAgICAgICAgICAgICAgICAgICAgbXkgJGFyZ3VtZW50VHlwZSA9IEdldFVuc2FmZUFy
Z3VtZW50VHlwZSgkaW50ZXJmYWNlLCAkdHlwZSk7CisgICAgICAgICAgICAgICAgICAgICRmdW5j
dGlvblNpZ25hdHVyZSAuPSAiLCAke2FyZ3VtZW50VHlwZX0iOworICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgJGZ1bmN0aW9uU2lnbmF0dXJlIC4g
Iik7XG4iKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAi
I2VuZGlmXG4iKSBpZiAkY29uZGl0aW9uYWxTdHJpbmc7CiAgICAgICAgIH0KIApAQCAtMjY0NCw2
ICsyNjQ4LDM2IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgIHB1c2goQGlt
cGxDb250ZW50LCAiXG4iKTsKICAgICB9CiAKKyAgICBpZiAoJG51bUZ1bmN0aW9ucyA+IDApIHsK
KyAgICAgICAgIyBHZW5lcmF0ZSBET01KSVQ6OlNpZ25hdHVyZSB2YXJpYWJsZXMuCisgICAgICAg
IGZvcmVhY2ggbXkgJGZ1bmN0aW9uIChAZnVuY3Rpb25zKSB7CisgICAgICAgICAgICBuZXh0IHVu
bGVzcyAkY29kZUdlbmVyYXRvci0+RXh0ZW5kZWRBdHRyaWJ1dGVDb250YWlucygkZnVuY3Rpb24t
PmV4dGVuZGVkQXR0cmlidXRlcy0+e0RPTUpJVH0sICJTaWduYXR1cmUiKTsKKyAgICAgICAgICAg
ICRpbXBsSW5jbHVkZXN7IkRPTUpJVElETFR5cGVGaWx0ZXIuaCJ9ID0gMTsKKyAgICAgICAgICAg
ICRpbXBsSW5jbHVkZXN7IkRPTUpJVENoZWNrRE9NLmgifSA9IDE7CisgICAgICAgICAgICAkaW1w
bEluY2x1ZGVzeyJET01KSVRBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmgifSA9IDE7CisKKyAgICAg
ICAgICAgIG15ICRpc092ZXJsb2FkZWQgPSAkZnVuY3Rpb24tPntvdmVybG9hZHN9ICYmIEB7JGZ1
bmN0aW9uLT57b3ZlcmxvYWRzfX0gPiAxOworICAgICAgICAgICAgZGllICJvdmVybG9hZHMgaXMg
bm90IHN1cHBvcnRlZCBpbiBET01KSVQiIGlmICRpc092ZXJsb2FkZWQ7CisKKyAgICAgICAgICAg
IG15ICRpbnRlcmZhY2VOYW1lID0gJGludGVyZmFjZS0+dHlwZS0+bmFtZTsKKyAgICAgICAgICAg
IG15ICRmdW5jdGlvbk5hbWUgPSBHZXRGdW5jdGlvbk5hbWUoJGludGVyZmFjZSwgJGNsYXNzTmFt
ZSwgJGZ1bmN0aW9uKTsKKyAgICAgICAgICAgIG15ICR1bnNhZmVGdW5jdGlvbk5hbWUgPSAidW5z
YWZlIiAuICRjb2RlR2VuZXJhdG9yLT5XS191Y2ZpcnN0KCRmdW5jdGlvbk5hbWUpOworICAgICAg
ICAgICAgbXkgJGRvbUpJVFNpZ25hdHVyZU5hbWUgPSAiRE9NSklUU2lnbmF0dXJlRm9yIiAuICRp
bnRlcmZhY2UtPnR5cGUtPm5hbWUgLiAkY29kZUdlbmVyYXRvci0+V0tfdWNmaXJzdCgkZnVuY3Rp
b24tPm5hbWUpOworICAgICAgICAgICAgbXkgJGNsYXNzSW5mbyA9ICJKUyIgLiAkaW50ZXJmYWNl
LT50eXBlLT5uYW1lIC4gIjo6aW5mbygpIjsKKyAgICAgICAgICAgIG15ICRyZXN1bHRUeXBlID0g
R2V0UmVzdWx0VHlwZUZpbHRlcigkaW50ZXJmYWNlLCAkZnVuY3Rpb24tPnR5cGUpOworICAgICAg
ICAgICAgbXkgJGRvbUpJVFNpZ25hdHVyZSA9ICJzdGF0aWMgY29uc3QgSlNDOjpET01KSVQ6OlNp
Z25hdHVyZSAke2RvbUpJVFNpZ25hdHVyZU5hbWV9KCh1aW50cHRyX3QpJHt1bnNhZmVGdW5jdGlv
bk5hbWV9LCBET01KSVQ6OmNoZWNrRE9NPCRpbnRlcmZhY2VOYW1lPiwgJGNsYXNzSW5mbywgSlND
OjpET01KSVQ6OkVmZmVjdDo6Zm9yUmVhZChET01KSVQ6OkFic3RyYWN0SGVhcFJlcG9zaXRvcnk6
OkRPTSksICR7cmVzdWx0VHlwZX0iOworICAgICAgICAgICAgZm9yZWFjaCBteSAkYXJndW1lbnQg
KEB7JGZ1bmN0aW9uLT5hcmd1bWVudHN9KSB7CisgICAgICAgICAgICAgICAgbXkgJHR5cGUgPSAk
YXJndW1lbnQtPnR5cGU7CisgICAgICAgICAgICAgICAgbXkgJGFyZ3VtZW50VHlwZSA9IEdldEFy
Z3VtZW50VHlwZUZpbHRlcigkaW50ZXJmYWNlLCAkdHlwZSk7CisgICAgICAgICAgICAgICAgJGRv
bUpJVFNpZ25hdHVyZSAuPSAiLCAke2FyZ3VtZW50VHlwZX0iOworICAgICAgICAgICAgfQorICAg
ICAgICAgICAgbXkgJGNvbmRpdGlvbmFsU3RyaW5nID0gJGNvZGVHZW5lcmF0b3ItPkdlbmVyYXRl
Q29uZGl0aW9uYWxTdHJpbmcoJGZ1bmN0aW9uKTsKKyAgICAgICAgICAgIHB1c2goQGltcGxDb250
ZW50LCAiI2lmICR7Y29uZGl0aW9uYWxTdHJpbmd9XG4iKSBpZiAkY29uZGl0aW9uYWxTdHJpbmc7
CisgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgJGRvbUpJVFNpZ25hdHVyZSAuICIpO1xu
Iik7CisgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiNlbmRpZlxuIikgaWYgJGNvbmRp
dGlvbmFsU3RyaW5nOworICAgICAgICB9CisgICAgfQorCiAgICAgR2VuZXJhdGVQcm90b3R5cGVE
ZWNsYXJhdGlvbihcQGltcGxDb250ZW50LCAkY2xhc3NOYW1lLCAkaW50ZXJmYWNlKSBpZiAhSGVh
ZGVyTmVlZHNQcm90b3R5cGVEZWNsYXJhdGlvbigkaW50ZXJmYWNlKTsKIAogICAgIEdlbmVyYXRl
Q29uc3RydWN0b3JEZWNsYXJhdGlvbihcQGltcGxDb250ZW50LCAkY2xhc3NOYW1lLCAkaW50ZXJm
YWNlKSBpZiBOZWVkc0NvbnN0cnVjdG9yUHJvcGVydHkoJGludGVyZmFjZSk7CkBAIC0yNzQwLDcg
KzI3NzQsMTEgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAgICAgICAgIHB1c2go
QGhhc2hWYWx1ZTEsICRmdW5jdGlvbk5hbWUpOwogCiAgICAgICAgICAgICBteSAkZnVuY3Rpb25M
ZW5ndGggPSBHZXRGdW5jdGlvbkxlbmd0aCgkZnVuY3Rpb24pOwotICAgICAgICAgICAgcHVzaChA
aGFzaFZhbHVlMiwgJGZ1bmN0aW9uTGVuZ3RoKTsKKyAgICAgICAgICAgIGlmICgkY29kZUdlbmVy
YXRvci0+RXh0ZW5kZWRBdHRyaWJ1dGVDb250YWlucygkZnVuY3Rpb24tPmV4dGVuZGVkQXR0cmli
dXRlcy0+e0RPTUpJVH0sICJTaWduYXR1cmUiKSkgeworICAgICAgICAgICAgICAgIHB1c2goQGhh
c2hWYWx1ZTIsICJET01KSVRGdW5jdGlvbkZvciIgLiAkaW50ZXJmYWNlLT50eXBlLT5uYW1lIC4g
JGNvZGVHZW5lcmF0b3ItPldLX3VjZmlyc3QoJGZ1bmN0aW9uLT5uYW1lKSk7CisgICAgICAgICAg
ICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHB1c2goQGhhc2hWYWx1ZTIsICRmdW5jdGlvbkxl
bmd0aCk7CisgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIHB1c2goQGhhc2hTcGVjaWFscywg
Q29tcHV0ZUZ1bmN0aW9uU3BlY2lhbCgkaW50ZXJmYWNlLCAkZnVuY3Rpb24pKTsKIApAQCAtMzMw
NywxMyArMzM0NSwxNCBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogCiAgICAgICAgICAg
ICBpZiAoJGF0dHJpYnV0ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkRPTUpJVCJ9KSB7CiAgICAg
ICAgICAgICAgICAgJGltcGxJbmNsdWRlc3siPHd0Zi9OZXZlckRlc3Ryb3llZC5oPiJ9ID0gMTsK
KyAgICAgICAgICAgICAgICAkaW1wbEluY2x1ZGVzeyJET01KSVRJRExUeXBlRmlsdGVyLmgifSA9
IDE7CiAgICAgICAgICAgICAgICAgbXkgJGludGVyZmFjZU5hbWUgPSAkaW50ZXJmYWNlLT50eXBl
LT5uYW1lOwogICAgICAgICAgICAgICAgIG15ICRhdHRyaWJ1dGVOYW1lID0gJGF0dHJpYnV0ZS0+
bmFtZTsKICAgICAgICAgICAgICAgICBteSAkZ2VuZXJhdG9yTmFtZSA9ICRpbnRlcmZhY2VOYW1l
IC4gJGNvZGVHZW5lcmF0b3ItPldLX3VjZmlyc3QoJGF0dHJpYnV0ZS0+bmFtZSk7CiAgICAgICAg
ICAgICAgICAgbXkgJGRvbUpJVENsYXNzTmFtZSA9ICRnZW5lcmF0b3JOYW1lIC4gIkRPTUpJVCI7
CiAgICAgICAgICAgICAgICAgbXkgJGdldHRlciA9IEdldEF0dHJpYnV0ZUdldHRlck5hbWUoJGlu
dGVyZmFjZSwgJGdlbmVyYXRvck5hbWUsICRhdHRyaWJ1dGUpOwogICAgICAgICAgICAgICAgIG15
ICRzZXR0ZXIgPSBJc1JlYWRvbmx5KCRhdHRyaWJ1dGUpID8gIm51bGxwdHIiIDogR2V0QXR0cmli
dXRlU2V0dGVyTmFtZSgkaW50ZXJmYWNlLCAkZ2VuZXJhdG9yTmFtZSwgJGF0dHJpYnV0ZSk7Ci0g
ICAgICAgICAgICAgICAgbXkgJHJlc3VsdFR5cGUgPSBHZXRSZXN1bHRUeXBlRmlsdGVyKCRhdHRy
aWJ1dGUtPnR5cGUpOworICAgICAgICAgICAgICAgIG15ICRyZXN1bHRUeXBlID0gR2V0UmVzdWx0
VHlwZUZpbHRlcigkaW50ZXJmYWNlLCAkYXR0cmlidXRlLT50eXBlKTsKICAgICAgICAgICAgICAg
ICBwdXNoKEBpbXBsQ29udGVudCwgIiRkb21KSVRDbGFzc05hbWU6OiRkb21KSVRDbGFzc05hbWUo
KVxuIik7CiAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgOiBKU0M6OkRP
TUpJVDo6R2V0dGVyU2V0dGVyKCRnZXR0ZXIsICRzZXR0ZXIsICR7Y2xhc3NOYW1lfTo6aW5mbygp
LCAkcmVzdWx0VHlwZSlcbiIpOwogICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAi
e1xuIik7CkBAIC0zNjkyLDYgKzM3MzEsNyBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgog
CiAgICAgICAgICAgICBteSAkaXNDdXN0b20gPSBIYXNDdXN0b21NZXRob2QoJGZ1bmN0aW9uLT5l
eHRlbmRlZEF0dHJpYnV0ZXMpOwogICAgICAgICAgICAgbXkgJGlzT3ZlcmxvYWRlZCA9ICRmdW5j
dGlvbi0+e292ZXJsb2Fkc30gJiYgQHskZnVuY3Rpb24tPntvdmVybG9hZHN9fSA+IDE7CisgICAg
ICAgICAgICBteSAkaXNET01KSVQgPSAkY29kZUdlbmVyYXRvci0+RXh0ZW5kZWRBdHRyaWJ1dGVD
b250YWlucygkZnVuY3Rpb24tPmV4dGVuZGVkQXR0cmlidXRlcy0+e0RPTUpJVH0sICJTaWduYXR1
cmUiKTsKIAogICAgICAgICAgICAgbXkgJG1heVRocm93TGVnYWN5RXhjZXB0aW9uID0gJGZ1bmN0
aW9uLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntNYXlUaHJvd0xlZ2FjeUV4Y2VwdGlvbn07CiAKQEAg
LTM4MzIsNiArMzg3Miw3OCBAQCBFTkQKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgcHVz
aChAaW1wbENvbnRlbnQsICJ9XG5cbiIpOworCisgICAgICAgICAgICBpZiAoJGlzRE9NSklUKSB7
CisgICAgICAgICAgICAgICAgJGltcGxJbmNsdWRlc3siPGludGVycHJldGVyL0ZyYW1lVHJhY2Vy
cy5oPiJ9ID0gMTsKKyAgICAgICAgICAgICAgICBteSAkdW5zYWZlRnVuY3Rpb25OYW1lID0gInVu
c2FmZSIgLiAkY29kZUdlbmVyYXRvci0+V0tfdWNmaXJzdCgkZnVuY3Rpb25OYW1lKTsKKyAgICAg
ICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIkpTQzo6RW5jb2RlZEpTVmFsdWUgJHt1bnNh
ZmVGdW5jdGlvbk5hbWV9KEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgJGNsYXNzTmFtZSogY2FzdGVk
VGhpcyIpOworICAgICAgICAgICAgICAgIGZvcmVhY2ggbXkgJGFyZ3VtZW50IChAeyRmdW5jdGlv
bi0+YXJndW1lbnRzfSkgeworICAgICAgICAgICAgICAgICAgICBteSAkdHlwZSA9ICRhcmd1bWVu
dC0+dHlwZTsKKyAgICAgICAgICAgICAgICAgICAgbXkgJGFyZ3VtZW50VHlwZSA9IEdldFVuc2Fm
ZUFyZ3VtZW50VHlwZSgkaW50ZXJmYWNlLCAkdHlwZSk7CisgICAgICAgICAgICAgICAgICAgIG15
ICRuYW1lID0gJGFyZ3VtZW50LT5uYW1lOworICAgICAgICAgICAgICAgICAgICBteSAkZW5jb2Rl
ZE5hbWUgPSAiZW5jb2RlZCIgLiAkY29kZUdlbmVyYXRvci0+V0tfdWNmaXJzdCgkbmFtZSk7Cisg
ICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiLCAke2FyZ3VtZW50VHlwZX0g
JHtlbmNvZGVkTmFtZX0iKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgcHVz
aChAaW1wbENvbnRlbnQsICIpXG4iKTsKKyAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVu
dCwgIntcbiIpOworICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIFVOVVNF
RF9QQVJBTShzdGF0ZSk7XG4iKTsKKyAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwg
IiAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTtcbiIpOworICAgICAgICAgICAgICAgIHB1c2goQGlt
cGxDb250ZW50LCAiICAgIEpTQzo6TmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcigmdm0sIHN0
YXRlKTtcbiIpOworICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGF1dG8g
dGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pO1xuIik7CisgICAgICAgICAgICAg
ICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBw
ZWQoKTtcbiIpOworICAgICAgICAgICAgICAgIG15IEBhcmd1bWVudHM7CisgICAgICAgICAgICAg
ICAgbXkgJGltcGxGdW5jdGlvbk5hbWU7CisgICAgICAgICAgICAgICAgbXkgJGltcGxlbWVudGVk
QnkgPSAkZnVuY3Rpb24tPmV4dGVuZGVkQXR0cmlidXRlcy0+e0ltcGxlbWVudGVkQnl9OworCisg
ICAgICAgICAgICAgICAgaWYgKCRpbXBsZW1lbnRlZEJ5KSB7CisgICAgICAgICAgICAgICAgICAg
IEFkZFRvSW1wbEluY2x1ZGVzKCIke2ltcGxlbWVudGVkQnl9LmgiLCAkZnVuY3Rpb24tPmV4dGVu
ZGVkQXR0cmlidXRlcy0+e0NvbmRpdGlvbmFsfSk7CisgICAgICAgICAgICAgICAgICAgIHVuc2hp
ZnQoQGFyZ3VtZW50cywgImltcGwiKSBpZiAhJGZ1bmN0aW9uLT5pc1N0YXRpYzsKKyAgICAgICAg
ICAgICAgICAgICAgJGltcGxGdW5jdGlvbk5hbWUgPSAiV2ViQ29yZTo6JHtpbXBsZW1lbnRlZEJ5
fTo6JHtmdW5jdGlvbkltcGxlbWVudGF0aW9uTmFtZX0iOworICAgICAgICAgICAgICAgIH0gZWxz
aWYgKCRmdW5jdGlvbi0+aXNTdGF0aWMpIHsKKyAgICAgICAgICAgICAgICAgICAgJGltcGxGdW5j
dGlvbk5hbWUgPSAiJHtpbnRlcmZhY2VOYW1lfTo6JHtmdW5jdGlvbkltcGxlbWVudGF0aW9uTmFt
ZX0iOworICAgICAgICAgICAgICAgIH0gZWxzaWYgKCRzdmdQcm9wZXJ0eU9yTGlzdFByb3BlcnR5
VHlwZSBhbmQgISRzdmdMaXN0UHJvcGVydHlUeXBlKSB7CisgICAgICAgICAgICAgICAgICAgICRp
bXBsRnVuY3Rpb25OYW1lID0gInBvZEltcGwuJHtmdW5jdGlvbkltcGxlbWVudGF0aW9uTmFtZX0i
OworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICRpbXBsRnVu
Y3Rpb25OYW1lID0gImltcGwuJHtmdW5jdGlvbkltcGxlbWVudGF0aW9uTmFtZX0iOworICAgICAg
ICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIG15ICRhcmd1bWVudEluZGV4ID0gMDsKKyAg
ICAgICAgICAgICAgICBmb3JlYWNoIG15ICRhcmd1bWVudCAoQHskZnVuY3Rpb24tPmFyZ3VtZW50
c30pIHsKKyAgICAgICAgICAgICAgICAgICAgbXkgJHZhbHVlID0gIiI7CisgICAgICAgICAgICAg
ICAgICAgIG15ICR0eXBlID0gJGFyZ3VtZW50LT50eXBlOworICAgICAgICAgICAgICAgICAgICBt
eSAkbmFtZSA9ICRhcmd1bWVudC0+bmFtZTsKKyAgICAgICAgICAgICAgICAgICAgbXkgJGVuY29k
ZWROYW1lID0gImVuY29kZWQiIC4gJGNvZGVHZW5lcmF0b3ItPldLX3VjZmlyc3QoJG5hbWUpOwor
ICAgICAgICAgICAgICAgICAgICBteSAkbmF0aXZlVHlwZSA9IEdldE5hdGl2ZVR5cGUoJGludGVy
ZmFjZSwgJGFyZ3VtZW50LT50eXBlKTsKKyAgICAgICAgICAgICAgICAgICAgbXkgJHNob3VsZFBh
c3NCeVJlZmVyZW5jZSA9IFNob3VsZFBhc3NXcmFwcGVyQnlSZWZlcmVuY2UoJGFyZ3VtZW50LCAk
aW50ZXJmYWNlKTsKKworICAgICAgICAgICAgICAgICAgICBpZiAoISRzaG91bGRQYXNzQnlSZWZl
cmVuY2UgJiYgKCRjb2RlR2VuZXJhdG9yLT5Jc1dyYXBwZXJUeXBlKCR0eXBlKSB8fCAkY29kZUdl
bmVyYXRvci0+SXNUeXBlZEFycmF5VHlwZSgkdHlwZSkpKSB7CisgICAgICAgICAgICAgICAgICAg
ICAgICAkaW1wbEluY2x1ZGVzeyI8cnVudGltZS9FcnJvci5oPiJ9ID0gMTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIG15ICgkbmF0aXZlVmFsdWUsICRtYXlUaHJvd0V4Y2VwdGlvbikgPSBVbnNh
ZmVUb05hdGl2ZSgkaW50ZXJmYWNlLCAkYXJndW1lbnQsICRlbmNvZGVkTmFtZSwgJGZ1bmN0aW9u
LT5leHRlbmRlZEF0dHJpYnV0ZXMtPntDb25kaXRpb25hbH0pOworICAgICAgICAgICAgICAgICAg
ICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgJG5hdGl2ZVR5cGUgJG5hbWUgPSBudWxscHRy
O1xuIik7CisgICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAk
bmFtZSA9ICRuYXRpdmVWYWx1ZTtcbiIpOworICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChA
aW1wbENvbnRlbnQsICIgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVk
SlNWYWx1ZSgpKTtcbiIpIGlmICRtYXlUaHJvd0V4Y2VwdGlvbjsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICR2YWx1ZSA9ICJXVEZNb3ZlKCRuYW1lKSI7CisgICAgICAgICAgICAgICAgICAgIH0g
ZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICBteSAoJG5hdGl2ZVZhbHVlLCAkbWF5VGhy
b3dFeGNlcHRpb24pID0gVW5zYWZlVG9OYXRpdmUoJGludGVyZmFjZSwgJGFyZ3VtZW50LCAkZW5j
b2RlZE5hbWUsICRmdW5jdGlvbi0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Q29uZGl0aW9uYWx9KTsK
KyAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGF1dG8gJG5h
bWUgPSAke25hdGl2ZVZhbHVlfTtcbiIpOworICAgICAgICAgICAgICAgICAgICAgICAgJHZhbHVl
ID0gIldURk1vdmUoJG5hbWUpIjsKKyAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxD
b250ZW50LCAiICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFs
dWUoKSk7XG4iKSBpZiAkbWF5VGhyb3dFeGNlcHRpb247CisgICAgICAgICAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgICAgICAgICBpZiAoJHNob3VsZFBhc3NCeVJlZmVyZW5jZSkgeworICAg
ICAgICAgICAgICAgICAgICAgICAgJHZhbHVlID0gIiokbmFtZSI7CisgICAgICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgICAgICAgICAgcHVzaChAYXJndW1lbnRzLCAkdmFsdWUpOworICAg
ICAgICAgICAgICAgICAgICAkYXJndW1lbnRJbmRleCsrOworICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgICBteSAkZnVuY3Rpb25TdHJpbmcgPSAiJGltcGxGdW5jdGlvbk5hbWUoIiAu
IGpvaW4oIiwgIiwgQGFyZ3VtZW50cykgLiAiKSI7CisgICAgICAgICAgICAgICAgJGZ1bmN0aW9u
U3RyaW5nID0gInByb3BhZ2F0ZUV4Y2VwdGlvbigqc3RhdGUsIHRocm93U2NvcGUsICRmdW5jdGlv
blN0cmluZykiIGlmIE5lZWRzRXhwbGljaXRQcm9wYWdhdGVFeGNlcHRpb25DYWxsKCRmdW5jdGlv
bik7CisgICAgICAgICAgICAgICAgbXkgJHRoaXNPYmplY3QgPSAiY2FzdGVkVGhpcyI7CisgICAg
ICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgSlNWYWx1ZSByZXN1bHQgPSAiIC4g
TmF0aXZlVG9KU1ZhbHVlVXNpbmdQb2ludGVycygkZnVuY3Rpb24sIDEsICRpbnRlcmZhY2UsICRm
dW5jdGlvblN0cmluZywgJHRoaXNPYmplY3QpIC4gIjtcbiIpOworICAgICAgICAgICAgICAgIHB1
c2goQGltcGxDb250ZW50LCAiICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTtcbiIp
OworICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAifVxuXG4iKTsKKyAgICAgICAg
ICAgIH0KKwogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIjZW5kaWZcblxuIikgaWYg
JGNvbmRpdGlvbmFsOwogCiAgICAgICAgICAgICAjIEdlbmVyYXRlIGEgZnVuY3Rpb24gZGlzcGF0
Y2hpbmcgY2FsbCB0byB0aGUgcmVzdCBvZiB0aGUgb3ZlcmxvYWRzLgpAQCAtNTMyMyw2ICs1NDM1
LDQzIEBAIHN1YiBKU1ZhbHVlVG9OYXRpdmUKICAgICByZXR1cm4gKCJKUyIgLiAkdHlwZS0+bmFt
ZSAuICI6OnRvV3JhcHBlZCgkdmFsdWUpIiwgMCk7CiB9CiAKK3N1YiBVbnNhZmVUb05hdGl2ZQor
eworICAgIG15ICgkaW50ZXJmYWNlLCAkY29udGV4dCwgJHZhbHVlLCAkY29uZGl0aW9uYWwsICRz
dGF0ZVBvaW50ZXIsICRzdGF0ZVJlZmVyZW5jZSwgJHRoaXNPYmplY3RSZWZlcmVuY2UpID0gQF87
CisKKyAgICBhc3NlcnQoIkludmFsaWQgY29udGV4dCB0eXBlIikgaWYgIUlzVmFsaWRDb250ZXh0
Rm9ySlNWYWx1ZVRvTmF0aXZlKCRjb250ZXh0KTsKKworICAgIG15ICR0eXBlID0gJGNvbnRleHQt
PnR5cGU7CisKKyAgICAjIEZJWE1FOiBSZW1vdmUgdGhlc2UgMyB2YXJpYWJsZXMgd2hlbiBhbGwg
SlNWYWx1ZVRvTmF0aXZlIHVzZSByZWZlcmVuY2VzLgorICAgICRzdGF0ZVBvaW50ZXIgPSAic3Rh
dGUiIHVubGVzcyAkc3RhdGVQb2ludGVyOworICAgICRzdGF0ZVJlZmVyZW5jZSA9ICIqc3RhdGUi
IHVubGVzcyAkc3RhdGVSZWZlcmVuY2U7CisgICAgJHRoaXNPYmplY3RSZWZlcmVuY2UgPSAiKmNh
c3RlZFRoaXMiIHVubGVzcyAkdGhpc09iamVjdFJlZmVyZW5jZTsKKworICAgIGlmIChKU1ZhbHVl
VG9OYXRpdmVJc0hhbmRsZWRCeURPTUNvbnZlcnQoJHR5cGUsICRjb250ZXh0KSkgeworICAgICAg
ICBBZGRUb0ltcGxJbmNsdWRlcygiRE9NSklUSURMQ29udmVydC5oIik7CisgICAgICAgIEFkZFRv
SW1wbEluY2x1ZGVzRm9ySURMVHlwZSgkdHlwZSwgJGNvbmRpdGlvbmFsKTsKKworICAgICAgICBt
eSAkSURMVHlwZSA9IEdldElETFR5cGUoJGludGVyZmFjZSwgJHR5cGUpOworCisgICAgICAgIG15
IEBjb252ZXJzaW9uQXJndW1lbnRzID0gKCk7CisgICAgICAgIHB1c2goQGNvbnZlcnNpb25Bcmd1
bWVudHMsICIkc3RhdGVSZWZlcmVuY2UiKTsKKyAgICAgICAgcHVzaChAY29udmVyc2lvbkFyZ3Vt
ZW50cywgIiR2YWx1ZSIpOworCisgICAgICAgIG15IEBjb252ZXJzaW9uU3RhdGljQXJndW1lbnRz
ID0gKCk7CisgICAgICAgIHB1c2goQGNvbnZlcnNpb25TdGF0aWNBcmd1bWVudHMsIEdldEludGVn
ZXJDb252ZXJzaW9uQ29uZmlndXJhdGlvbigkY29udGV4dCkpIGlmICRjb2RlR2VuZXJhdG9yLT5J
c0ludGVnZXJUeXBlKCR0eXBlKTsKKyAgICAgICAgcHVzaChAY29udmVyc2lvblN0YXRpY0FyZ3Vt
ZW50cywgR2V0U3RyaW5nQ29udmVyc2lvbkNvbmZpZ3VyYXRpb24oJGNvbnRleHQpKSBpZiAkY29k
ZUdlbmVyYXRvci0+SXNTdHJpbmdUeXBlKCR0eXBlKTsKKworICAgICAgICBpZiAoc2NhbGFyKEBj
b252ZXJzaW9uU3RhdGljQXJndW1lbnRzKSA+IDApIHsKKyAgICAgICAgICAgIHJldHVybiAoIkRP
TUpJVDo6RGlyZWN0Q29udmVydGVyPCRJRExUeXBlPjo6ZGlyZWN0Q29udmVydDwiIC4gam9pbigi
LCAiLCBAY29udmVyc2lvblN0YXRpY0FyZ3VtZW50cykgLiAiPigiIC4gam9pbigiLCAiLCBAY29u
dmVyc2lvbkFyZ3VtZW50cykgLiAiKSIsIDEpOworICAgICAgICB9CisgICAgICAgIHJldHVybiAo
IkRPTUpJVDo6RGlyZWN0Q29udmVydGVyPCRJRExUeXBlPjo6ZGlyZWN0Q29udmVydCgiIC4gam9p
bigiLCAiLCBAY29udmVyc2lvbkFyZ3VtZW50cykgLiAiKSIsIDEpOworICAgIH0KKworICAgICMg
RklYTUU6IEV4dGVuZCBtb3JlLgorICAgIGRpZSAiT25seSBET01Db252ZXJ0IHN1cHBvcnRlZCBv
bmUgaXMgbm93IHN1cHBvcnRlZCBpbiBET01KSVQgdW5zYWZlLiI7Cit9CisKIHN1YiBOYXRpdmVU
b0pTVmFsdWVJc0hhbmRsZWRCeURPTUNvbnZlcnQKIHsKICAgICBteSAoJHR5cGUpID0gQF87CkBA
IC01NTI5LDcgKzU2NzgsMTAgQEAgc3ViIEdlbmVyYXRlSGFzaFRhYmxlVmFsdWVBcnJheQogICAg
ICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIjaWYgJHtjb25kaXRpb25hbFN0cmluZ31cbiIp
OwogICAgICAgICB9CiAKLSAgICAgICAgaWYgKCJAJHNwZWNpYWxzWyRpXSIgPX4gbS9GdW5jdGlv
bi8pIHsKKyAgICAgICAgaWYgKCJAJHNwZWNpYWxzWyRpXSIgPX4gbS9ET01KSVRGdW5jdGlvbi8p
IHsKKyAgICAgICAgICAgICRmaXJzdFRhcmdldFR5cGUgPSAic3RhdGljX2Nhc3Q8TmF0aXZlRnVu
Y3Rpb24+IjsKKyAgICAgICAgICAgICRzZWNvbmRUYXJnZXRUeXBlID0gInN0YXRpY19jYXN0PGNv
bnN0IEpTQzo6RE9NSklUOjpTaWduYXR1cmUqPiI7CisgICAgICAgIH0gZWxzaWYgKCJAJHNwZWNp
YWxzWyRpXSIgPX4gbS9GdW5jdGlvbi8pIHsKICAgICAgICAgICAgICRmaXJzdFRhcmdldFR5cGUg
PSAic3RhdGljX2Nhc3Q8TmF0aXZlRnVuY3Rpb24+IjsKICAgICAgICAgfSBlbHNpZiAoIkAkc3Bl
Y2lhbHNbJGldIiA9fiBtL0J1aWx0aW4vKSB7CiAgICAgICAgICAgICAkZmlyc3RUYXJnZXRUeXBl
ID0gInN0YXRpY19jYXN0PEJ1aWx0aW5HZW5lcmF0b3I+IjsKQEAgLTYxMjcsNiArNjI3OSw5IEBA
IHN1YiBDb21wdXRlRnVuY3Rpb25TcGVjaWFsCiAgICAgZWxzZSB7CiAgICAgICAgIHB1c2goQHNw
ZWNpYWxzLCAiSlNDOjpGdW5jdGlvbiIpOwogICAgIH0KKyAgICBpZiAoJGZ1bmN0aW9uLT5leHRl
bmRlZEF0dHJpYnV0ZXMtPnsiRE9NSklUIn0pIHsKKyAgICAgICAgcHVzaChAc3BlY2lhbHMsICJE
T01KSVRGdW5jdGlvbiIpIGlmICRjb2RlR2VuZXJhdG9yLT5FeHRlbmRlZEF0dHJpYnV0ZUNvbnRh
aW5zKCRmdW5jdGlvbi0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57RE9NSklUfSwgIlNpZ25hdHVyZSIp
OworICAgIH0KICAgICByZXR1cm4gKEBzcGVjaWFscyA+IDApID8gam9pbigiIHwgIiwgQHNwZWNp
YWxzKSA6ICIwIjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy9JRExBdHRyaWJ1dGVzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
SURMQXR0cmlidXRlcy50eHQKaW5kZXggYTJlNzU0MTU5MWNlM2Y1NzZlN2E3ZDJkNmQyZmM2MmRk
ZGZhMDQxYy4uMTQ2YzJiY2M4ZTBmMzc2ZDVkY2M1NDM1MzkwODMzNTljNzJkYmU2MyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9JRExBdHRyaWJ1dGVzLnR4dAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0lETEF0dHJpYnV0ZXMudHh0CkBA
IC01Miw3ICs1Miw3IEBAIEN1c3RvbVB1dEZ1bmN0aW9uCiBDdXN0b21TZXRQcm90b3R5cGUKIEN1
c3RvbVNldHRlcgogQ3VzdG9tVG9KU09iamVjdAotRE9NSklUCitET01KSVQ9fFNpZ25hdHVyZQog
RG9Ob3RDaGVja0NvbnN0YW50cwogRG9Ob3RDaGVja1NlY3VyaXR5CiBEb05vdENoZWNrU2VjdXJp
dHlPbkdldHRlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdERPTUpJVC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0RE9NSklULmNwcAppbmRleCAyNDg4ZGYyNmJkYjUyYjUwY2Q2N2Q2MGNj
YTU2NWIyNjUzNjdlNGNmLi5hZjFiY2ZjMzFiYmFmZTJiMjUzZjg3ZDBmNzNiMDM4MzFiMzc5YWRh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0RE9NSklULmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0RE9NSklULmNwcApAQCAtMjEsMTAgKzIxLDE4IEBACiAjaW5jbHVkZSAiY29uZmln
LmgiCiAjaW5jbHVkZSAiSlNUZXN0RE9NSklULmgiCiAKKyNpbmNsdWRlICJET01KSVRBYnN0cmFj
dEhlYXBSZXBvc2l0b3J5LmgiCisjaW5jbHVkZSAiRE9NSklUQ2hlY2tET00uaCIKKyNpbmNsdWRl
ICJET01KSVRJRExDb252ZXJ0LmgiCisjaW5jbHVkZSAiRE9NSklUSURMVHlwZS5oIgorI2luY2x1
ZGUgIkRPTUpJVElETFR5cGVGaWx0ZXIuaCIKKyNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCiAj
aW5jbHVkZSAiSlNCeXRlU3RyaW5nLmgiCiAjaW5jbHVkZSAiSlNET01CaW5kaW5nLmgiCiAjaW5j
bHVkZSAiSlNET01Db25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUgIkpTRE9NQ29udmVydC5oIgorI2lu
Y2x1ZGUgPGludGVycHJldGVyL0ZyYW1lVHJhY2Vycy5oPgorI2luY2x1ZGUgPHJ1bnRpbWUvRXJy
b3IuaD4KICNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJv
eWVkLmg+CiAKQEAgLTMyLDYgKzQwLDExIEBAIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAorLy8gRnVuY3Rpb25zCisKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBqc1Rlc3RET01KSVRQcm90b3R5cGVGdW5jdGlvbkdldEF0dHJpYnV0ZShKU0M6
OkV4ZWNTdGF0ZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHVuc2FmZUpz
VGVzdERPTUpJVFByb3RvdHlwZUZ1bmN0aW9uR2V0QXR0cmlidXRlKEpTQzo6RXhlY1N0YXRlKiwg
SlNUZXN0RE9NSklUKiwgRE9NSklUOjpJRExKU0FyZ3VtZW50VHlwZTxJRExET01TdHJpbmc+KTsK
KwogLy8gQXR0cmlidXRlcwogCiBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdERPTUpJVEFueUF0
dHIoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFt
ZSk7CkBAIC03Miw2ICs4NSw3IEBAIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0RE9NSklUTm9k
ZU51bGxhYmxlQXR0cihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTCiBKU0M6OkVuY29k
ZWRKU1ZhbHVlIGpzVGVzdERPTUpJVENvbnN0cnVjdG9yKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpF
bmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwogYm9vbCBzZXRKU1Rlc3RET01KSVRD
b25zdHJ1Y3RvcihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5j
b2RlZEpTVmFsdWUpOwogCitzdGF0aWMgY29uc3QgSlNDOjpET01KSVQ6OlNpZ25hdHVyZSBET01K
SVRTaWduYXR1cmVGb3JUZXN0RE9NSklUR2V0QXR0cmlidXRlKCh1aW50cHRyX3QpdW5zYWZlSnNU
ZXN0RE9NSklUUHJvdG90eXBlRnVuY3Rpb25HZXRBdHRyaWJ1dGUsIERPTUpJVDo6Y2hlY2tET008
VGVzdERPTUpJVD4sIEpTVGVzdERPTUpJVDo6aW5mbygpLCBKU0M6OkRPTUpJVDo6RWZmZWN0Ojpm
b3JSZWFkKERPTUpJVDo6QWJzdHJhY3RIZWFwUmVwb3NpdG9yeTo6RE9NKSwgRE9NSklUOjpJRExS
ZXN1bHRUeXBlRmlsdGVyPElETE51bGxhYmxlPElETERPTVN0cmluZz4+LCBET01KSVQ6OklETEFy
Z3VtZW50VHlwZUZpbHRlcjxJRExET01TdHJpbmc+KTsKIGNsYXNzIEpTVGVzdERPTUpJVFByb3Rv
dHlwZSA6IHB1YmxpYyBKU0M6OkpTTm9uRmluYWxPYmplY3QgewogcHVibGljOgogICAgIHVzaW5n
IEJhc2UgPSBKU0M6OkpTTm9uRmluYWxPYmplY3Q7CkBAIC0xNTMsNiArMTY3LDcgQEAgc3RhdGlj
IGNvbnN0IEhhc2hUYWJsZVZhbHVlIEpTVGVzdERPTUpJVFByb3RvdHlwZVRhYmxlVmFsdWVzW10g
PQogICAgIHsgImJ5dGVTdHJpbmdOdWxsYWJsZUF0dHIiLCBSZWFkT25seSB8IEN1c3RvbUFjY2Vz
c29yIHwgRE9NSklUQXR0cmlidXRlLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nh
c3Q8RE9NSklUR2V0dGVyU2V0dGVyR2VuZXJhdG9yPihkb21KSVRHZXR0ZXJTZXR0ZXJGb3JUZXN0
RE9NSklUQnl0ZVN0cmluZ051bGxhYmxlQXR0ciksIChpbnRwdHJfdCkgKDApIH0gfSwKICAgICB7
ICJ1c3ZTdHJpbmdOdWxsYWJsZUF0dHIiLCBSZWFkT25seSB8IEN1c3RvbUFjY2Vzc29yIHwgRE9N
SklUQXR0cmlidXRlLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8RE9NSklU
R2V0dGVyU2V0dGVyR2VuZXJhdG9yPihkb21KSVRHZXR0ZXJTZXR0ZXJGb3JUZXN0RE9NSklUVXN2
U3RyaW5nTnVsbGFibGVBdHRyKSwgKGludHB0cl90KSAoMCkgfSB9LAogICAgIHsgIm5vZGVOdWxs
YWJsZUF0dHIiLCBSZWFkT25seSB8IEN1c3RvbUFjY2Vzc29yIHwgRE9NSklUQXR0cmlidXRlLCBO
b0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8RE9NSklUR2V0dGVyU2V0dGVyR2Vu
ZXJhdG9yPihkb21KSVRHZXR0ZXJTZXR0ZXJGb3JUZXN0RE9NSklUTm9kZU51bGxhYmxlQXR0ciks
IChpbnRwdHJfdCkgKDApIH0gfSwKKyAgICB7ICJnZXRBdHRyaWJ1dGUiLCBKU0M6OkZ1bmN0aW9u
IHwgRE9NSklURnVuY3Rpb24sIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxO
YXRpdmVGdW5jdGlvbj4oanNUZXN0RE9NSklUUHJvdG90eXBlRnVuY3Rpb25HZXRBdHRyaWJ1dGUp
LCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PGNvbnN0IEpTQzo6RE9NSklUOjpTaWduYXR1cmUqPigm
RE9NSklUU2lnbmF0dXJlRm9yVGVzdERPTUpJVEdldEF0dHJpYnV0ZSkgfSB9LAogfTsKIAogY29u
c3QgQ2xhc3NJbmZvIEpTVGVzdERPTUpJVFByb3RvdHlwZTo6c19pbmZvID0geyAiVGVzdERPTUpJ
VFByb3RvdHlwZSIsICZCYXNlOjpzX2luZm8sIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0
RE9NSklUUHJvdG90eXBlKSB9OwpAQCAtMTg1LDYgKzIwMCwxMSBAQCB0ZW1wbGF0ZTw+IGlubGlu
ZSBKU1Rlc3RET01KSVQqIEJpbmRpbmdDYWxsZXI8SlNUZXN0RE9NSklUPjo6Y2FzdEZvckF0dHJp
YnV0ZShFeAogICAgIHJldHVybiBqc0R5bmFtaWNEb3duY2FzdDxKU1Rlc3RET01KSVQqPihKU1Zh
bHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiB9CiAKK3RlbXBsYXRlPD4gaW5saW5lIEpTVGVzdERP
TUpJVCogQmluZGluZ0NhbGxlcjxKU1Rlc3RET01KSVQ+OjpjYXN0Rm9yT3BlcmF0aW9uKEV4ZWNT
dGF0ZSYgc3RhdGUpCit7CisgICAgcmV0dXJuIGpzRHluYW1pY0Rvd25jYXN0PEpTVGVzdERPTUpJ
VCo+KHN0YXRlLnRoaXNWYWx1ZSgpKTsKK30KKwogc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVz
dERPTUpJVEFueUF0dHJHZXR0ZXIoRXhlY1N0YXRlJiwgSlNUZXN0RE9NSklUJiwgVGhyb3dTY29w
ZSYgdGhyb3dTY29wZSk7CiAKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdERPTUpJVEFueUF0dHIoRXhl
Y1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCkBA
IC0yMDIsNyArMjIyLDcgQEAgc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdERPTUpJVEFueUF0
dHJHZXR0ZXIoRXhlY1N0YXRlJiBzdGF0ZSwgSlNUZXN0RE9NSklUJgogfQogCiBUZXN0RE9NSklU
QW55QXR0ckRPTUpJVDo6VGVzdERPTUpJVEFueUF0dHJET01KSVQoKQotICAgIDogSlNDOjpET01K
SVQ6OkdldHRlclNldHRlcihqc1Rlc3RET01KSVRBbnlBdHRyLCBudWxscHRyLCBKU1Rlc3RET01K
SVQ6OmluZm8oKSwgSlNDOjpTcGVjSGVhcFRvcCkKKyAgICA6IEpTQzo6RE9NSklUOjpHZXR0ZXJT
ZXR0ZXIoanNUZXN0RE9NSklUQW55QXR0ciwgbnVsbHB0ciwgSlNUZXN0RE9NSklUOjppbmZvKCks
IERPTUpJVDo6SURMUmVzdWx0VHlwZUZpbHRlcjxJRExBbnk+KQogewogfQogCkBAIC0yMjksNyAr
MjQ5LDcgQEAgc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdERPTUpJVEJvb2xlYW5BdHRyR2V0
dGVyKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVGVzdERPTUoKIH0KIAogVGVzdERPTUpJVEJvb2xlYW5B
dHRyRE9NSklUOjpUZXN0RE9NSklUQm9vbGVhbkF0dHJET01KSVQoKQotICAgIDogSlNDOjpET01K
SVQ6OkdldHRlclNldHRlcihqc1Rlc3RET01KSVRCb29sZWFuQXR0ciwgbnVsbHB0ciwgSlNUZXN0
RE9NSklUOjppbmZvKCksIEpTQzo6U3BlY0Jvb2xlYW4pCisgICAgOiBKU0M6OkRPTUpJVDo6R2V0
dGVyU2V0dGVyKGpzVGVzdERPTUpJVEJvb2xlYW5BdHRyLCBudWxscHRyLCBKU1Rlc3RET01KSVQ6
OmluZm8oKSwgRE9NSklUOjpJRExSZXN1bHRUeXBlRmlsdGVyPElETEJvb2xlYW4+KQogewogfQog
CkBAIC0yNTYsNyArMjc2LDcgQEAgc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdERPTUpJVEJ5
dGVBdHRyR2V0dGVyKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVGVzdERPTUpJVCYKIH0KIAogVGVzdERP
TUpJVEJ5dGVBdHRyRE9NSklUOjpUZXN0RE9NSklUQnl0ZUF0dHJET01KSVQoKQotICAgIDogSlND
OjpET01KSVQ6OkdldHRlclNldHRlcihqc1Rlc3RET01KSVRCeXRlQXR0ciwgbnVsbHB0ciwgSlNU
ZXN0RE9NSklUOjppbmZvKCksIEpTQzo6U3BlY0ludDMyT25seSkKKyAgICA6IEpTQzo6RE9NSklU
OjpHZXR0ZXJTZXR0ZXIoanNUZXN0RE9NSklUQnl0ZUF0dHIsIG51bGxwdHIsIEpTVGVzdERPTUpJ
VDo6aW5mbygpLCBET01KSVQ6OklETFJlc3VsdFR5cGVGaWx0ZXI8SURMQnl0ZT4pCiB7CiB9CiAK
QEAgLTI4Myw3ICszMDMsNyBAQCBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0RE9NSklUT2N0
ZXRBdHRyR2V0dGVyKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVGVzdERPTUpJVAogfQogCiBUZXN0RE9N
SklUT2N0ZXRBdHRyRE9NSklUOjpUZXN0RE9NSklUT2N0ZXRBdHRyRE9NSklUKCkKLSAgICA6IEpT
Qzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIoanNUZXN0RE9NSklUT2N0ZXRBdHRyLCBudWxscHRyLCBK
U1Rlc3RET01KSVQ6OmluZm8oKSwgSlNDOjpTcGVjSW50MzJPbmx5KQorICAgIDogSlNDOjpET01K
SVQ6OkdldHRlclNldHRlcihqc1Rlc3RET01KSVRPY3RldEF0dHIsIG51bGxwdHIsIEpTVGVzdERP
TUpJVDo6aW5mbygpLCBET01KSVQ6OklETFJlc3VsdFR5cGVGaWx0ZXI8SURMT2N0ZXQ+KQogewog
fQogCkBAIC0zMTAsNyArMzMwLDcgQEAgc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdERPTUpJ
VFNob3J0QXR0ckdldHRlcihFeGVjU3RhdGUmIHN0YXRlLCBKU1Rlc3RET01KSVQKIH0KIAogVGVz
dERPTUpJVFNob3J0QXR0ckRPTUpJVDo6VGVzdERPTUpJVFNob3J0QXR0ckRPTUpJVCgpCi0gICAg
OiBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVyKGpzVGVzdERPTUpJVFNob3J0QXR0ciwgbnVsbHB0
ciwgSlNUZXN0RE9NSklUOjppbmZvKCksIEpTQzo6U3BlY0ludDMyT25seSkKKyAgICA6IEpTQzo6
RE9NSklUOjpHZXR0ZXJTZXR0ZXIoanNUZXN0RE9NSklUU2hvcnRBdHRyLCBudWxscHRyLCBKU1Rl
c3RET01KSVQ6OmluZm8oKSwgRE9NSklUOjpJRExSZXN1bHRUeXBlRmlsdGVyPElETFNob3J0PikK
IHsKIH0KIApAQCAtMzM3LDcgKzM1Nyw3IEBAIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RE
T01KSVRVbnNpZ25lZFNob3J0QXR0ckdldHRlcihFeGVjU3RhdGUmIHN0YXRlLCBKU1RlCiB9CiAK
IFRlc3RET01KSVRVbnNpZ25lZFNob3J0QXR0ckRPTUpJVDo6VGVzdERPTUpJVFVuc2lnbmVkU2hv
cnRBdHRyRE9NSklUKCkKLSAgICA6IEpTQzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIoanNUZXN0RE9N
SklUVW5zaWduZWRTaG9ydEF0dHIsIG51bGxwdHIsIEpTVGVzdERPTUpJVDo6aW5mbygpLCBKU0M6
OlNwZWNJbnQzMk9ubHkpCisgICAgOiBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVyKGpzVGVzdERP
TUpJVFVuc2lnbmVkU2hvcnRBdHRyLCBudWxscHRyLCBKU1Rlc3RET01KSVQ6OmluZm8oKSwgRE9N
SklUOjpJRExSZXN1bHRUeXBlRmlsdGVyPElETFVuc2lnbmVkU2hvcnQ+KQogewogfQogCkBAIC0z
NjQsNyArMzg0LDcgQEAgc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdERPTUpJVExvbmdBdHRy
R2V0dGVyKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVGVzdERPTUpJVCYKIH0KIAogVGVzdERPTUpJVExv
bmdBdHRyRE9NSklUOjpUZXN0RE9NSklUTG9uZ0F0dHJET01KSVQoKQotICAgIDogSlNDOjpET01K
SVQ6OkdldHRlclNldHRlcihqc1Rlc3RET01KSVRMb25nQXR0ciwgbnVsbHB0ciwgSlNUZXN0RE9N
SklUOjppbmZvKCksIEpTQzo6U3BlY0ludDMyT25seSkKKyAgICA6IEpTQzo6RE9NSklUOjpHZXR0
ZXJTZXR0ZXIoanNUZXN0RE9NSklUTG9uZ0F0dHIsIG51bGxwdHIsIEpTVGVzdERPTUpJVDo6aW5m
bygpLCBET01KSVQ6OklETFJlc3VsdFR5cGVGaWx0ZXI8SURMTG9uZz4pCiB7CiB9CiAKQEAgLTM5
MSw3ICs0MTEsNyBAQCBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0RE9NSklUVW5zaWduZWRM
b25nQXR0ckdldHRlcihFeGVjU3RhdGUmIHN0YXRlLCBKU1RlcwogfQogCiBUZXN0RE9NSklUVW5z
aWduZWRMb25nQXR0ckRPTUpJVDo6VGVzdERPTUpJVFVuc2lnbmVkTG9uZ0F0dHJET01KSVQoKQot
ICAgIDogSlNDOjpET01KSVQ6OkdldHRlclNldHRlcihqc1Rlc3RET01KSVRVbnNpZ25lZExvbmdB
dHRyLCBudWxscHRyLCBKU1Rlc3RET01KSVQ6OmluZm8oKSwgSlNDOjpTcGVjQnl0ZWNvZGVOdW1i
ZXIpCisgICAgOiBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVyKGpzVGVzdERPTUpJVFVuc2lnbmVk
TG9uZ0F0dHIsIG51bGxwdHIsIEpTVGVzdERPTUpJVDo6aW5mbygpLCBET01KSVQ6OklETFJlc3Vs
dFR5cGVGaWx0ZXI8SURMVW5zaWduZWRMb25nPikKIHsKIH0KIApAQCAtNDE4LDcgKzQzOCw3IEBA
IHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RET01KSVRMb25nTG9uZ0F0dHJHZXR0ZXIoRXhl
Y1N0YXRlJiBzdGF0ZSwgSlNUZXN0RE9NCiB9CiAKIFRlc3RET01KSVRMb25nTG9uZ0F0dHJET01K
SVQ6OlRlc3RET01KSVRMb25nTG9uZ0F0dHJET01KSVQoKQotICAgIDogSlNDOjpET01KSVQ6Okdl
dHRlclNldHRlcihqc1Rlc3RET01KSVRMb25nTG9uZ0F0dHIsIG51bGxwdHIsIEpTVGVzdERPTUpJ
VDo6aW5mbygpLCBKU0M6OlNwZWNCeXRlY29kZU51bWJlcikKKyAgICA6IEpTQzo6RE9NSklUOjpH
ZXR0ZXJTZXR0ZXIoanNUZXN0RE9NSklUTG9uZ0xvbmdBdHRyLCBudWxscHRyLCBKU1Rlc3RET01K
SVQ6OmluZm8oKSwgRE9NSklUOjpJRExSZXN1bHRUeXBlRmlsdGVyPElETExvbmdMb25nPikKIHsK
IH0KIApAQCAtNDQ1LDcgKzQ2NSw3IEBAIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RET01K
SVRVbnNpZ25lZExvbmdMb25nQXR0ckdldHRlcihFeGVjU3RhdGUmIHN0YXRlLCBKCiB9CiAKIFRl
c3RET01KSVRVbnNpZ25lZExvbmdMb25nQXR0ckRPTUpJVDo6VGVzdERPTUpJVFVuc2lnbmVkTG9u
Z0xvbmdBdHRyRE9NSklUKCkKLSAgICA6IEpTQzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIoanNUZXN0
RE9NSklUVW5zaWduZWRMb25nTG9uZ0F0dHIsIG51bGxwdHIsIEpTVGVzdERPTUpJVDo6aW5mbygp
LCBKU0M6OlNwZWNCeXRlY29kZU51bWJlcikKKyAgICA6IEpTQzo6RE9NSklUOjpHZXR0ZXJTZXR0
ZXIoanNUZXN0RE9NSklUVW5zaWduZWRMb25nTG9uZ0F0dHIsIG51bGxwdHIsIEpTVGVzdERPTUpJ
VDo6aW5mbygpLCBET01KSVQ6OklETFJlc3VsdFR5cGVGaWx0ZXI8SURMVW5zaWduZWRMb25nTG9u
Zz4pCiB7CiB9CiAKQEAgLTQ3Miw3ICs0OTIsNyBAQCBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNU
ZXN0RE9NSklURmxvYXRBdHRyR2V0dGVyKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVGVzdERPTUpJVAog
fQogCiBUZXN0RE9NSklURmxvYXRBdHRyRE9NSklUOjpUZXN0RE9NSklURmxvYXRBdHRyRE9NSklU
KCkKLSAgICA6IEpTQzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIoanNUZXN0RE9NSklURmxvYXRBdHRy
LCBudWxscHRyLCBKU1Rlc3RET01KSVQ6OmluZm8oKSwgSlNDOjpTcGVjQnl0ZWNvZGVOdW1iZXIp
CisgICAgOiBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVyKGpzVGVzdERPTUpJVEZsb2F0QXR0ciwg
bnVsbHB0ciwgSlNUZXN0RE9NSklUOjppbmZvKCksIERPTUpJVDo6SURMUmVzdWx0VHlwZUZpbHRl
cjxJRExGbG9hdD4pCiB7CiB9CiAKQEAgLTQ5OSw3ICs1MTksNyBAQCBzdGF0aWMgaW5saW5lIEpT
VmFsdWUganNUZXN0RE9NSklUVW5yZXN0cmljdGVkRmxvYXRBdHRyR2V0dGVyKEV4ZWNTdGF0ZSYg
c3RhdGUsCiB9CiAKIFRlc3RET01KSVRVbnJlc3RyaWN0ZWRGbG9hdEF0dHJET01KSVQ6OlRlc3RE
T01KSVRVbnJlc3RyaWN0ZWRGbG9hdEF0dHJET01KSVQoKQotICAgIDogSlNDOjpET01KSVQ6Okdl
dHRlclNldHRlcihqc1Rlc3RET01KSVRVbnJlc3RyaWN0ZWRGbG9hdEF0dHIsIG51bGxwdHIsIEpT
VGVzdERPTUpJVDo6aW5mbygpLCBKU0M6OlNwZWNCeXRlY29kZU51bWJlcikKKyAgICA6IEpTQzo6
RE9NSklUOjpHZXR0ZXJTZXR0ZXIoanNUZXN0RE9NSklUVW5yZXN0cmljdGVkRmxvYXRBdHRyLCBu
dWxscHRyLCBKU1Rlc3RET01KSVQ6OmluZm8oKSwgRE9NSklUOjpJRExSZXN1bHRUeXBlRmlsdGVy
PElETFVucmVzdHJpY3RlZEZsb2F0PikKIHsKIH0KIApAQCAtNTI2LDcgKzU0Niw3IEBAIHN0YXRp
YyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RET01KSVREb3VibGVBdHRyR2V0dGVyKEV4ZWNTdGF0ZSYg
c3RhdGUsIEpTVGVzdERPTUpJCiB9CiAKIFRlc3RET01KSVREb3VibGVBdHRyRE9NSklUOjpUZXN0
RE9NSklURG91YmxlQXR0ckRPTUpJVCgpCi0gICAgOiBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVy
KGpzVGVzdERPTUpJVERvdWJsZUF0dHIsIG51bGxwdHIsIEpTVGVzdERPTUpJVDo6aW5mbygpLCBK
U0M6OlNwZWNCeXRlY29kZU51bWJlcikKKyAgICA6IEpTQzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIo
anNUZXN0RE9NSklURG91YmxlQXR0ciwgbnVsbHB0ciwgSlNUZXN0RE9NSklUOjppbmZvKCksIERP
TUpJVDo6SURMUmVzdWx0VHlwZUZpbHRlcjxJRExEb3VibGU+KQogewogfQogCkBAIC01NTMsNyAr
NTczLDcgQEAgc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdERPTUpJVFVucmVzdHJpY3RlZERv
dWJsZUF0dHJHZXR0ZXIoRXhlY1N0YXRlJiBzdGF0ZSwKIH0KIAogVGVzdERPTUpJVFVucmVzdHJp
Y3RlZERvdWJsZUF0dHJET01KSVQ6OlRlc3RET01KSVRVbnJlc3RyaWN0ZWREb3VibGVBdHRyRE9N
SklUKCkKLSAgICA6IEpTQzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIoanNUZXN0RE9NSklUVW5yZXN0
cmljdGVkRG91YmxlQXR0ciwgbnVsbHB0ciwgSlNUZXN0RE9NSklUOjppbmZvKCksIEpTQzo6U3Bl
Y0J5dGVjb2RlTnVtYmVyKQorICAgIDogSlNDOjpET01KSVQ6OkdldHRlclNldHRlcihqc1Rlc3RE
T01KSVRVbnJlc3RyaWN0ZWREb3VibGVBdHRyLCBudWxscHRyLCBKU1Rlc3RET01KSVQ6OmluZm8o
KSwgRE9NSklUOjpJRExSZXN1bHRUeXBlRmlsdGVyPElETFVucmVzdHJpY3RlZERvdWJsZT4pCiB7
CiB9CiAKQEAgLTU4MCw3ICs2MDAsNyBAQCBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0RE9N
SklURG9tU3RyaW5nQXR0ckdldHRlcihFeGVjU3RhdGUmIHN0YXRlLCBKU1Rlc3RETwogfQogCiBU
ZXN0RE9NSklURG9tU3RyaW5nQXR0ckRPTUpJVDo6VGVzdERPTUpJVERvbVN0cmluZ0F0dHJET01K
SVQoKQotICAgIDogSlNDOjpET01KSVQ6OkdldHRlclNldHRlcihqc1Rlc3RET01KSVREb21TdHJp
bmdBdHRyLCBudWxscHRyLCBKU1Rlc3RET01KSVQ6OmluZm8oKSwgSlNDOjpTcGVjU3RyaW5nKQor
ICAgIDogSlNDOjpET01KSVQ6OkdldHRlclNldHRlcihqc1Rlc3RET01KSVREb21TdHJpbmdBdHRy
LCBudWxscHRyLCBKU1Rlc3RET01KSVQ6OmluZm8oKSwgRE9NSklUOjpJRExSZXN1bHRUeXBlRmls
dGVyPElETERPTVN0cmluZz4pCiB7CiB9CiAKQEAgLTYwNyw3ICs2MjcsNyBAQCBzdGF0aWMgaW5s
aW5lIEpTVmFsdWUganNUZXN0RE9NSklUQnl0ZVN0cmluZ0F0dHJHZXR0ZXIoRXhlY1N0YXRlJiBz
dGF0ZSwgSlNUZXN0RAogfQogCiBUZXN0RE9NSklUQnl0ZVN0cmluZ0F0dHJET01KSVQ6OlRlc3RE
T01KSVRCeXRlU3RyaW5nQXR0ckRPTUpJVCgpCi0gICAgOiBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0
dGVyKGpzVGVzdERPTUpJVEJ5dGVTdHJpbmdBdHRyLCBudWxscHRyLCBKU1Rlc3RET01KSVQ6Omlu
Zm8oKSwgSlNDOjpTcGVjU3RyaW5nKQorICAgIDogSlNDOjpET01KSVQ6OkdldHRlclNldHRlcihq
c1Rlc3RET01KSVRCeXRlU3RyaW5nQXR0ciwgbnVsbHB0ciwgSlNUZXN0RE9NSklUOjppbmZvKCks
IERPTUpJVDo6SURMUmVzdWx0VHlwZUZpbHRlcjxJRExCeXRlU3RyaW5nPikKIHsKIH0KIApAQCAt
NjM0LDcgKzY1NCw3IEBAIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RET01KSVRVc3ZTdHJp
bmdBdHRyR2V0dGVyKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVGVzdERPCiB9CiAKIFRlc3RET01KSVRV
c3ZTdHJpbmdBdHRyRE9NSklUOjpUZXN0RE9NSklUVXN2U3RyaW5nQXR0ckRPTUpJVCgpCi0gICAg
OiBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVyKGpzVGVzdERPTUpJVFVzdlN0cmluZ0F0dHIsIG51
bGxwdHIsIEpTVGVzdERPTUpJVDo6aW5mbygpLCBKU0M6OlNwZWNTdHJpbmcpCisgICAgOiBKU0M6
OkRPTUpJVDo6R2V0dGVyU2V0dGVyKGpzVGVzdERPTUpJVFVzdlN0cmluZ0F0dHIsIG51bGxwdHIs
IEpTVGVzdERPTUpJVDo6aW5mbygpLCBET01KSVQ6OklETFJlc3VsdFR5cGVGaWx0ZXI8SURMVVNW
U3RyaW5nPikKIHsKIH0KIApAQCAtNjYxLDcgKzY4MSw3IEBAIHN0YXRpYyBpbmxpbmUgSlNWYWx1
ZSBqc1Rlc3RET01KSVROb2RlQXR0ckdldHRlcihFeGVjU3RhdGUmIHN0YXRlLCBKU1Rlc3RET01K
SVQmCiB9CiAKIFRlc3RET01KSVROb2RlQXR0ckRPTUpJVDo6VGVzdERPTUpJVE5vZGVBdHRyRE9N
SklUKCkKLSAgICA6IEpTQzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIoanNUZXN0RE9NSklUTm9kZUF0
dHIsIG51bGxwdHIsIEpTVGVzdERPTUpJVDo6aW5mbygpLCBTcGVjSGVhcFRvcCkKKyAgICA6IEpT
Qzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIoanNUZXN0RE9NSklUTm9kZUF0dHIsIG51bGxwdHIsIEpT
VGVzdERPTUpJVDo6aW5mbygpLCBET01KSVQ6OklETFJlc3VsdFR5cGVGaWx0ZXI8SURMSW50ZXJm
YWNlPE5vZGU+PikKIHsKIH0KIApAQCAtNjg4LDcgKzcwOCw3IEBAIHN0YXRpYyBpbmxpbmUgSlNW
YWx1ZSBqc1Rlc3RET01KSVRCb29sZWFuTnVsbGFibGVBdHRyR2V0dGVyKEV4ZWNTdGF0ZSYgc3Rh
dGUsIEpTCiB9CiAKIFRlc3RET01KSVRCb29sZWFuTnVsbGFibGVBdHRyRE9NSklUOjpUZXN0RE9N
SklUQm9vbGVhbk51bGxhYmxlQXR0ckRPTUpJVCgpCi0gICAgOiBKU0M6OkRPTUpJVDo6R2V0dGVy
U2V0dGVyKGpzVGVzdERPTUpJVEJvb2xlYW5OdWxsYWJsZUF0dHIsIG51bGxwdHIsIEpTVGVzdERP
TUpJVDo6aW5mbygpLCAoSlNDOjpTcGVjQm9vbGVhbiB8IEpTQzo6U3BlY090aGVyKSkKKyAgICA6
IEpTQzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIoanNUZXN0RE9NSklUQm9vbGVhbk51bGxhYmxlQXR0
ciwgbnVsbHB0ciwgSlNUZXN0RE9NSklUOjppbmZvKCksIERPTUpJVDo6SURMUmVzdWx0VHlwZUZp
bHRlcjxJRExOdWxsYWJsZTxJRExCb29sZWFuPj4pCiB7CiB9CiAKQEAgLTcxNSw3ICs3MzUsNyBA
QCBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0RE9NSklUQnl0ZU51bGxhYmxlQXR0ckdldHRl
cihFeGVjU3RhdGUmIHN0YXRlLCBKU1RlcwogfQogCiBUZXN0RE9NSklUQnl0ZU51bGxhYmxlQXR0
ckRPTUpJVDo6VGVzdERPTUpJVEJ5dGVOdWxsYWJsZUF0dHJET01KSVQoKQotICAgIDogSlNDOjpE
T01KSVQ6OkdldHRlclNldHRlcihqc1Rlc3RET01KSVRCeXRlTnVsbGFibGVBdHRyLCBudWxscHRy
LCBKU1Rlc3RET01KSVQ6OmluZm8oKSwgKEpTQzo6U3BlY0ludDMyT25seSB8IEpTQzo6U3BlY090
aGVyKSkKKyAgICA6IEpTQzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIoanNUZXN0RE9NSklUQnl0ZU51
bGxhYmxlQXR0ciwgbnVsbHB0ciwgSlNUZXN0RE9NSklUOjppbmZvKCksIERPTUpJVDo6SURMUmVz
dWx0VHlwZUZpbHRlcjxJRExOdWxsYWJsZTxJRExCeXRlPj4pCiB7CiB9CiAKQEAgLTc0Miw3ICs3
NjIsNyBAQCBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0RE9NSklUT2N0ZXROdWxsYWJsZUF0
dHJHZXR0ZXIoRXhlY1N0YXRlJiBzdGF0ZSwgSlNUZQogfQogCiBUZXN0RE9NSklUT2N0ZXROdWxs
YWJsZUF0dHJET01KSVQ6OlRlc3RET01KSVRPY3RldE51bGxhYmxlQXR0ckRPTUpJVCgpCi0gICAg
OiBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVyKGpzVGVzdERPTUpJVE9jdGV0TnVsbGFibGVBdHRy
LCBudWxscHRyLCBKU1Rlc3RET01KSVQ6OmluZm8oKSwgKEpTQzo6U3BlY0ludDMyT25seSB8IEpT
Qzo6U3BlY090aGVyKSkKKyAgICA6IEpTQzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIoanNUZXN0RE9N
SklUT2N0ZXROdWxsYWJsZUF0dHIsIG51bGxwdHIsIEpTVGVzdERPTUpJVDo6aW5mbygpLCBET01K
SVQ6OklETFJlc3VsdFR5cGVGaWx0ZXI8SURMTnVsbGFibGU8SURMT2N0ZXQ+PikKIHsKIH0KIApA
QCAtNzY5LDcgKzc4OSw3IEBAIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RET01KSVRTaG9y
dE51bGxhYmxlQXR0ckdldHRlcihFeGVjU3RhdGUmIHN0YXRlLCBKU1RlCiB9CiAKIFRlc3RET01K
SVRTaG9ydE51bGxhYmxlQXR0ckRPTUpJVDo6VGVzdERPTUpJVFNob3J0TnVsbGFibGVBdHRyRE9N
SklUKCkKLSAgICA6IEpTQzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIoanNUZXN0RE9NSklUU2hvcnRO
dWxsYWJsZUF0dHIsIG51bGxwdHIsIEpTVGVzdERPTUpJVDo6aW5mbygpLCAoSlNDOjpTcGVjSW50
MzJPbmx5IHwgSlNDOjpTcGVjT3RoZXIpKQorICAgIDogSlNDOjpET01KSVQ6OkdldHRlclNldHRl
cihqc1Rlc3RET01KSVRTaG9ydE51bGxhYmxlQXR0ciwgbnVsbHB0ciwgSlNUZXN0RE9NSklUOjpp
bmZvKCksIERPTUpJVDo6SURMUmVzdWx0VHlwZUZpbHRlcjxJRExOdWxsYWJsZTxJRExTaG9ydD4+
KQogewogfQogCkBAIC03OTYsNyArODE2LDcgQEAgc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVz
dERPTUpJVFVuc2lnbmVkU2hvcnROdWxsYWJsZUF0dHJHZXR0ZXIoRXhlY1N0YXRlJiBzdGEKIH0K
IAogVGVzdERPTUpJVFVuc2lnbmVkU2hvcnROdWxsYWJsZUF0dHJET01KSVQ6OlRlc3RET01KSVRV
bnNpZ25lZFNob3J0TnVsbGFibGVBdHRyRE9NSklUKCkKLSAgICA6IEpTQzo6RE9NSklUOjpHZXR0
ZXJTZXR0ZXIoanNUZXN0RE9NSklUVW5zaWduZWRTaG9ydE51bGxhYmxlQXR0ciwgbnVsbHB0ciwg
SlNUZXN0RE9NSklUOjppbmZvKCksIChKU0M6OlNwZWNJbnQzMk9ubHkgfCBKU0M6OlNwZWNPdGhl
cikpCisgICAgOiBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVyKGpzVGVzdERPTUpJVFVuc2lnbmVk
U2hvcnROdWxsYWJsZUF0dHIsIG51bGxwdHIsIEpTVGVzdERPTUpJVDo6aW5mbygpLCBET01KSVQ6
OklETFJlc3VsdFR5cGVGaWx0ZXI8SURMTnVsbGFibGU8SURMVW5zaWduZWRTaG9ydD4+KQogewog
fQogCkBAIC04MjMsNyArODQzLDcgQEAgc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdERPTUpJ
VExvbmdOdWxsYWJsZUF0dHJHZXR0ZXIoRXhlY1N0YXRlJiBzdGF0ZSwgSlNUZXMKIH0KIAogVGVz
dERPTUpJVExvbmdOdWxsYWJsZUF0dHJET01KSVQ6OlRlc3RET01KSVRMb25nTnVsbGFibGVBdHRy
RE9NSklUKCkKLSAgICA6IEpTQzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIoanNUZXN0RE9NSklUTG9u
Z051bGxhYmxlQXR0ciwgbnVsbHB0ciwgSlNUZXN0RE9NSklUOjppbmZvKCksIChKU0M6OlNwZWNJ
bnQzMk9ubHkgfCBKU0M6OlNwZWNPdGhlcikpCisgICAgOiBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0
dGVyKGpzVGVzdERPTUpJVExvbmdOdWxsYWJsZUF0dHIsIG51bGxwdHIsIEpTVGVzdERPTUpJVDo6
aW5mbygpLCBET01KSVQ6OklETFJlc3VsdFR5cGVGaWx0ZXI8SURMTnVsbGFibGU8SURMTG9uZz4+
KQogewogfQogCkBAIC04NTAsNyArODcwLDcgQEAgc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVz
dERPTUpJVFVuc2lnbmVkTG9uZ051bGxhYmxlQXR0ckdldHRlcihFeGVjU3RhdGUmIHN0YXQKIH0K
IAogVGVzdERPTUpJVFVuc2lnbmVkTG9uZ051bGxhYmxlQXR0ckRPTUpJVDo6VGVzdERPTUpJVFVu
c2lnbmVkTG9uZ051bGxhYmxlQXR0ckRPTUpJVCgpCi0gICAgOiBKU0M6OkRPTUpJVDo6R2V0dGVy
U2V0dGVyKGpzVGVzdERPTUpJVFVuc2lnbmVkTG9uZ051bGxhYmxlQXR0ciwgbnVsbHB0ciwgSlNU
ZXN0RE9NSklUOjppbmZvKCksIChKU0M6OlNwZWNCeXRlY29kZU51bWJlciB8IEpTQzo6U3BlY090
aGVyKSkKKyAgICA6IEpTQzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIoanNUZXN0RE9NSklUVW5zaWdu
ZWRMb25nTnVsbGFibGVBdHRyLCBudWxscHRyLCBKU1Rlc3RET01KSVQ6OmluZm8oKSwgRE9NSklU
OjpJRExSZXN1bHRUeXBlRmlsdGVyPElETE51bGxhYmxlPElETFVuc2lnbmVkTG9uZz4+KQogewog
fQogCkBAIC04NzcsNyArODk3LDcgQEAgc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdERPTUpJ
VExvbmdMb25nTnVsbGFibGVBdHRyR2V0dGVyKEV4ZWNTdGF0ZSYgc3RhdGUsIEoKIH0KIAogVGVz
dERPTUpJVExvbmdMb25nTnVsbGFibGVBdHRyRE9NSklUOjpUZXN0RE9NSklUTG9uZ0xvbmdOdWxs
YWJsZUF0dHJET01KSVQoKQotICAgIDogSlNDOjpET01KSVQ6OkdldHRlclNldHRlcihqc1Rlc3RE
T01KSVRMb25nTG9uZ051bGxhYmxlQXR0ciwgbnVsbHB0ciwgSlNUZXN0RE9NSklUOjppbmZvKCks
IChKU0M6OlNwZWNCeXRlY29kZU51bWJlciB8IEpTQzo6U3BlY090aGVyKSkKKyAgICA6IEpTQzo6
RE9NSklUOjpHZXR0ZXJTZXR0ZXIoanNUZXN0RE9NSklUTG9uZ0xvbmdOdWxsYWJsZUF0dHIsIG51
bGxwdHIsIEpTVGVzdERPTUpJVDo6aW5mbygpLCBET01KSVQ6OklETFJlc3VsdFR5cGVGaWx0ZXI8
SURMTnVsbGFibGU8SURMTG9uZ0xvbmc+PikKIHsKIH0KIApAQCAtOTA0LDcgKzkyNCw3IEBAIHN0
YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RET01KSVRVbnNpZ25lZExvbmdMb25nTnVsbGFibGVB
dHRyR2V0dGVyKEV4ZWNTdGF0ZSYKIH0KIAogVGVzdERPTUpJVFVuc2lnbmVkTG9uZ0xvbmdOdWxs
YWJsZUF0dHJET01KSVQ6OlRlc3RET01KSVRVbnNpZ25lZExvbmdMb25nTnVsbGFibGVBdHRyRE9N
SklUKCkKLSAgICA6IEpTQzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIoanNUZXN0RE9NSklUVW5zaWdu
ZWRMb25nTG9uZ051bGxhYmxlQXR0ciwgbnVsbHB0ciwgSlNUZXN0RE9NSklUOjppbmZvKCksIChK
U0M6OlNwZWNCeXRlY29kZU51bWJlciB8IEpTQzo6U3BlY090aGVyKSkKKyAgICA6IEpTQzo6RE9N
SklUOjpHZXR0ZXJTZXR0ZXIoanNUZXN0RE9NSklUVW5zaWduZWRMb25nTG9uZ051bGxhYmxlQXR0
ciwgbnVsbHB0ciwgSlNUZXN0RE9NSklUOjppbmZvKCksIERPTUpJVDo6SURMUmVzdWx0VHlwZUZp
bHRlcjxJRExOdWxsYWJsZTxJRExVbnNpZ25lZExvbmdMb25nPj4pCiB7CiB9CiAKQEAgLTkzMSw3
ICs5NTEsNyBAQCBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0RE9NSklURmxvYXROdWxsYWJs
ZUF0dHJHZXR0ZXIoRXhlY1N0YXRlJiBzdGF0ZSwgSlNUZQogfQogCiBUZXN0RE9NSklURmxvYXRO
dWxsYWJsZUF0dHJET01KSVQ6OlRlc3RET01KSVRGbG9hdE51bGxhYmxlQXR0ckRPTUpJVCgpCi0g
ICAgOiBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVyKGpzVGVzdERPTUpJVEZsb2F0TnVsbGFibGVB
dHRyLCBudWxscHRyLCBKU1Rlc3RET01KSVQ6OmluZm8oKSwgKEpTQzo6U3BlY0J5dGVjb2RlTnVt
YmVyIHwgSlNDOjpTcGVjT3RoZXIpKQorICAgIDogSlNDOjpET01KSVQ6OkdldHRlclNldHRlcihq
c1Rlc3RET01KSVRGbG9hdE51bGxhYmxlQXR0ciwgbnVsbHB0ciwgSlNUZXN0RE9NSklUOjppbmZv
KCksIERPTUpJVDo6SURMUmVzdWx0VHlwZUZpbHRlcjxJRExOdWxsYWJsZTxJRExGbG9hdD4+KQog
ewogfQogCkBAIC05NTgsNyArOTc4LDcgQEAgc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdERP
TUpJVFVucmVzdHJpY3RlZEZsb2F0TnVsbGFibGVBdHRyR2V0dGVyKEV4ZWNTdGF0ZSYKIH0KIAog
VGVzdERPTUpJVFVucmVzdHJpY3RlZEZsb2F0TnVsbGFibGVBdHRyRE9NSklUOjpUZXN0RE9NSklU
VW5yZXN0cmljdGVkRmxvYXROdWxsYWJsZUF0dHJET01KSVQoKQotICAgIDogSlNDOjpET01KSVQ6
OkdldHRlclNldHRlcihqc1Rlc3RET01KSVRVbnJlc3RyaWN0ZWRGbG9hdE51bGxhYmxlQXR0ciwg
bnVsbHB0ciwgSlNUZXN0RE9NSklUOjppbmZvKCksIChKU0M6OlNwZWNCeXRlY29kZU51bWJlciB8
IEpTQzo6U3BlY090aGVyKSkKKyAgICA6IEpTQzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIoanNUZXN0
RE9NSklUVW5yZXN0cmljdGVkRmxvYXROdWxsYWJsZUF0dHIsIG51bGxwdHIsIEpTVGVzdERPTUpJ
VDo6aW5mbygpLCBET01KSVQ6OklETFJlc3VsdFR5cGVGaWx0ZXI8SURMTnVsbGFibGU8SURMVW5y
ZXN0cmljdGVkRmxvYXQ+PikKIHsKIH0KIApAQCAtOTg1LDcgKzEwMDUsNyBAQCBzdGF0aWMgaW5s
aW5lIEpTVmFsdWUganNUZXN0RE9NSklURG91YmxlTnVsbGFibGVBdHRyR2V0dGVyKEV4ZWNTdGF0
ZSYgc3RhdGUsIEpTVAogfQogCiBUZXN0RE9NSklURG91YmxlTnVsbGFibGVBdHRyRE9NSklUOjpU
ZXN0RE9NSklURG91YmxlTnVsbGFibGVBdHRyRE9NSklUKCkKLSAgICA6IEpTQzo6RE9NSklUOjpH
ZXR0ZXJTZXR0ZXIoanNUZXN0RE9NSklURG91YmxlTnVsbGFibGVBdHRyLCBudWxscHRyLCBKU1Rl
c3RET01KSVQ6OmluZm8oKSwgKEpTQzo6U3BlY0J5dGVjb2RlTnVtYmVyIHwgSlNDOjpTcGVjT3Ro
ZXIpKQorICAgIDogSlNDOjpET01KSVQ6OkdldHRlclNldHRlcihqc1Rlc3RET01KSVREb3VibGVO
dWxsYWJsZUF0dHIsIG51bGxwdHIsIEpTVGVzdERPTUpJVDo6aW5mbygpLCBET01KSVQ6OklETFJl
c3VsdFR5cGVGaWx0ZXI8SURMTnVsbGFibGU8SURMRG91YmxlPj4pCiB7CiB9CiAKQEAgLTEwMTIs
NyArMTAzMiw3IEBAIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RET01KSVRVbnJlc3RyaWN0
ZWREb3VibGVOdWxsYWJsZUF0dHJHZXR0ZXIoRXhlY1N0YXRlCiB9CiAKIFRlc3RET01KSVRVbnJl
c3RyaWN0ZWREb3VibGVOdWxsYWJsZUF0dHJET01KSVQ6OlRlc3RET01KSVRVbnJlc3RyaWN0ZWRE
b3VibGVOdWxsYWJsZUF0dHJET01KSVQoKQotICAgIDogSlNDOjpET01KSVQ6OkdldHRlclNldHRl
cihqc1Rlc3RET01KSVRVbnJlc3RyaWN0ZWREb3VibGVOdWxsYWJsZUF0dHIsIG51bGxwdHIsIEpT
VGVzdERPTUpJVDo6aW5mbygpLCAoSlNDOjpTcGVjQnl0ZWNvZGVOdW1iZXIgfCBKU0M6OlNwZWNP
dGhlcikpCisgICAgOiBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVyKGpzVGVzdERPTUpJVFVucmVz
dHJpY3RlZERvdWJsZU51bGxhYmxlQXR0ciwgbnVsbHB0ciwgSlNUZXN0RE9NSklUOjppbmZvKCks
IERPTUpJVDo6SURMUmVzdWx0VHlwZUZpbHRlcjxJRExOdWxsYWJsZTxJRExVbnJlc3RyaWN0ZWRE
b3VibGU+PikKIHsKIH0KIApAQCAtMTAzOSw3ICsxMDU5LDcgQEAgc3RhdGljIGlubGluZSBKU1Zh
bHVlIGpzVGVzdERPTUpJVERvbVN0cmluZ051bGxhYmxlQXR0ckdldHRlcihFeGVjU3RhdGUmIHN0
YXRlLAogfQogCiBUZXN0RE9NSklURG9tU3RyaW5nTnVsbGFibGVBdHRyRE9NSklUOjpUZXN0RE9N
SklURG9tU3RyaW5nTnVsbGFibGVBdHRyRE9NSklUKCkKLSAgICA6IEpTQzo6RE9NSklUOjpHZXR0
ZXJTZXR0ZXIoanNUZXN0RE9NSklURG9tU3RyaW5nTnVsbGFibGVBdHRyLCBudWxscHRyLCBKU1Rl
c3RET01KSVQ6OmluZm8oKSwgKEpTQzo6U3BlY1N0cmluZyB8IEpTQzo6U3BlY090aGVyKSkKKyAg
ICA6IEpTQzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIoanNUZXN0RE9NSklURG9tU3RyaW5nTnVsbGFi
bGVBdHRyLCBudWxscHRyLCBKU1Rlc3RET01KSVQ6OmluZm8oKSwgRE9NSklUOjpJRExSZXN1bHRU
eXBlRmlsdGVyPElETE51bGxhYmxlPElETERPTVN0cmluZz4+KQogewogfQogCkBAIC0xMDY2LDcg
KzEwODYsNyBAQCBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0RE9NSklUQnl0ZVN0cmluZ051
bGxhYmxlQXR0ckdldHRlcihFeGVjU3RhdGUmIHN0YXRlLAogfQogCiBUZXN0RE9NSklUQnl0ZVN0
cmluZ051bGxhYmxlQXR0ckRPTUpJVDo6VGVzdERPTUpJVEJ5dGVTdHJpbmdOdWxsYWJsZUF0dHJE
T01KSVQoKQotICAgIDogSlNDOjpET01KSVQ6OkdldHRlclNldHRlcihqc1Rlc3RET01KSVRCeXRl
U3RyaW5nTnVsbGFibGVBdHRyLCBudWxscHRyLCBKU1Rlc3RET01KSVQ6OmluZm8oKSwgKEpTQzo6
U3BlY1N0cmluZyB8IEpTQzo6U3BlY090aGVyKSkKKyAgICA6IEpTQzo6RE9NSklUOjpHZXR0ZXJT
ZXR0ZXIoanNUZXN0RE9NSklUQnl0ZVN0cmluZ051bGxhYmxlQXR0ciwgbnVsbHB0ciwgSlNUZXN0
RE9NSklUOjppbmZvKCksIERPTUpJVDo6SURMUmVzdWx0VHlwZUZpbHRlcjxJRExOdWxsYWJsZTxJ
RExCeXRlU3RyaW5nPj4pCiB7CiB9CiAKQEAgLTEwOTMsNyArMTExMyw3IEBAIHN0YXRpYyBpbmxp
bmUgSlNWYWx1ZSBqc1Rlc3RET01KSVRVc3ZTdHJpbmdOdWxsYWJsZUF0dHJHZXR0ZXIoRXhlY1N0
YXRlJiBzdGF0ZSwKIH0KIAogVGVzdERPTUpJVFVzdlN0cmluZ051bGxhYmxlQXR0ckRPTUpJVDo6
VGVzdERPTUpJVFVzdlN0cmluZ051bGxhYmxlQXR0ckRPTUpJVCgpCi0gICAgOiBKU0M6OkRPTUpJ
VDo6R2V0dGVyU2V0dGVyKGpzVGVzdERPTUpJVFVzdlN0cmluZ051bGxhYmxlQXR0ciwgbnVsbHB0
ciwgSlNUZXN0RE9NSklUOjppbmZvKCksIChKU0M6OlNwZWNTdHJpbmcgfCBKU0M6OlNwZWNPdGhl
cikpCisgICAgOiBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVyKGpzVGVzdERPTUpJVFVzdlN0cmlu
Z051bGxhYmxlQXR0ciwgbnVsbHB0ciwgSlNUZXN0RE9NSklUOjppbmZvKCksIERPTUpJVDo6SURM
UmVzdWx0VHlwZUZpbHRlcjxJRExOdWxsYWJsZTxJRExVU1ZTdHJpbmc+PikKIHsKIH0KIApAQCAt
MTEyMCw3ICsxMTQwLDcgQEAgc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdERPTUpJVE5vZGVO
dWxsYWJsZUF0dHJHZXR0ZXIoRXhlY1N0YXRlJiBzdGF0ZSwgSlNUZXMKIH0KIAogVGVzdERPTUpJ
VE5vZGVOdWxsYWJsZUF0dHJET01KSVQ6OlRlc3RET01KSVROb2RlTnVsbGFibGVBdHRyRE9NSklU
KCkKLSAgICA6IEpTQzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIoanNUZXN0RE9NSklUTm9kZU51bGxh
YmxlQXR0ciwgbnVsbHB0ciwgSlNUZXN0RE9NSklUOjppbmZvKCksIFNwZWNIZWFwVG9wKQorICAg
IDogSlNDOjpET01KSVQ6OkdldHRlclNldHRlcihqc1Rlc3RET01KSVROb2RlTnVsbGFibGVBdHRy
LCBudWxscHRyLCBKU1Rlc3RET01KSVQ6OmluZm8oKSwgRE9NSklUOjpJRExSZXN1bHRUeXBlRmls
dGVyPElETE51bGxhYmxlPElETEludGVyZmFjZTxOb2RlPj4+KQogewogfQogCkBAIC0xMTU5LDYg
KzExNzksMzkgQEAgSlNWYWx1ZSBKU1Rlc3RET01KSVQ6OmdldENvbnN0cnVjdG9yKFZNJiB2bSwg
Y29uc3QgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKICAgICByZXR1cm4gZ2V0RE9NQ29u
c3RydWN0b3I8SlNUZXN0RE9NSklUQ29uc3RydWN0b3I+KHZtLCAqanNDYXN0PGNvbnN0IEpTRE9N
R2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KSk7CiB9CiAKK3N0YXRpYyBpbmxpbmUgSlNDOjpF
bmNvZGVkSlNWYWx1ZSBqc1Rlc3RET01KSVRQcm90b3R5cGVGdW5jdGlvbkdldEF0dHJpYnV0ZUNh
bGxlcihKU0M6OkV4ZWNTdGF0ZSosIEpTVGVzdERPTUpJVCosIEpTQzo6VGhyb3dTY29wZSYpOwor
CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdERPTUpJVFByb3RvdHlwZUZ1bmN0
aW9uR2V0QXR0cmlidXRlKEV4ZWNTdGF0ZSogc3RhdGUpCit7CisgICAgcmV0dXJuIEJpbmRpbmdD
YWxsZXI8SlNUZXN0RE9NSklUPjo6Y2FsbE9wZXJhdGlvbjxqc1Rlc3RET01KSVRQcm90b3R5cGVG
dW5jdGlvbkdldEF0dHJpYnV0ZUNhbGxlcj4oc3RhdGUsICJnZXRBdHRyaWJ1dGUiKTsKK30KKwor
c3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdERPTUpJVFByb3RvdHlwZUZ1
bmN0aW9uR2V0QXR0cmlidXRlQ2FsbGVyKEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgSlNUZXN0RE9N
SklUKiBjYXN0ZWRUaGlzLCBKU0M6OlRocm93U2NvcGUmIHRocm93U2NvcGUpCit7CisgICAgVU5V
U0VEX1BBUkFNKHN0YXRlKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CisgICAgYXV0
byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKKyAgICBpZiAoVU5MSUtFTFkoc3RhdGUt
PmFyZ3VtZW50Q291bnQoKSA8IDEpKQorICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRl
LCB0aHJvd1Njb3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOworICAg
IGF1dG8gbmFtZSA9IGNvbnZlcnQ8SURMRE9NU3RyaW5nPigqc3RhdGUsIHN0YXRlLT51bmNoZWNr
ZWRBcmd1bWVudCgwKSwgU3RyaW5nQ29udmVyc2lvbkNvbmZpZ3VyYXRpb246Ok5vcm1hbCk7Cisg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKKyAg
ICBKU1ZhbHVlIHJlc3VsdCA9IHRvSlM8SURMTnVsbGFibGU8SURMRE9NU3RyaW5nPj4oKnN0YXRl
LCBpbXBsLmdldEF0dHJpYnV0ZShXVEZNb3ZlKG5hbWUpKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShyZXN1bHQpOworfQorCitKU0M6OkVuY29kZWRKU1ZhbHVlIHVuc2FmZUpzVGVzdERP
TUpJVFByb3RvdHlwZUZ1bmN0aW9uR2V0QXR0cmlidXRlKEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwg
SlNUZXN0RE9NSklUKiBjYXN0ZWRUaGlzLCBET01KSVQ6OklETEpTQXJndW1lbnRUeXBlPElETERP
TVN0cmluZz4gZW5jb2RlZE5hbWUpCit7CisgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKKyAgICBW
TSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBKU0M6Ok5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFj
ZXIoJnZtLCBzdGF0ZSk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKKyAgICBhdXRv
IG5hbWUgPSBET01KSVQ6OkRpcmVjdENvbnZlcnRlcjxJRExET01TdHJpbmc+OjpkaXJlY3RDb252
ZXJ0PFN0cmluZ0NvbnZlcnNpb25Db25maWd1cmF0aW9uOjpOb3JtYWw+KCpzdGF0ZSwgZW5jb2Rl
ZE5hbWUpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFs
dWUoKSk7CisgICAgSlNWYWx1ZSByZXN1bHQgPSB0b0pTPElETE51bGxhYmxlPElETERPTVN0cmlu
Zz4+KCpzdGF0ZSwgaW1wbC5nZXRBdHRyaWJ1dGUoV1RGTW92ZShuYW1lKSkpOworICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKK30KKwogdm9pZCBKU1Rlc3RET01KSVQ6OnZpc2l0
Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKIHsKICAgICBhdXRv
KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTVGVzdERPTUpJVCo+KGNlbGwpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RET01KSVQuaWRsIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RET01KSVQuaWRsCmluZGV4IGJl
N2VkMDRmZjYzZGU2ODZiYzg3NjQ4MjgyYjZhYWY2NGMyNzczZTcuLmE1MzE0ODhkYzgxYzFiODc3
ZjBlZTNmOTRmOGFhYjM4YWE2OTQzOWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9UZXN0RE9NSklULmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvVGVzdERPTUpJVC5pZGwKQEAgLTYzLDQgKzYzLDYgQEAgaW50ZXJm
YWNlIFRlc3RET01KSVQgOiBOb2RlIHsKICAgICBbRE9NSklUXSByZWFkb25seSBhdHRyaWJ1dGUg
Qnl0ZVN0cmluZz8gYnl0ZVN0cmluZ051bGxhYmxlQXR0cjsKICAgICBbRE9NSklUXSByZWFkb25s
eSBhdHRyaWJ1dGUgVVNWU3RyaW5nPyB1c3ZTdHJpbmdOdWxsYWJsZUF0dHI7CiAgICAgW0RPTUpJ
VF0gcmVhZG9ubHkgYXR0cmlidXRlIE5vZGU/IG5vZGVOdWxsYWJsZUF0dHI7CisKKyAgICBbRE9N
SklUPVNpZ25hdHVyZV0gRE9NU3RyaW5nPyBnZXRBdHRyaWJ1dGUoRE9NU3RyaW5nIG5hbWUpOwog
fTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmlkbCBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9FbGVtZW50LmlkbAppbmRleCBlNDJkMmQ0ZDgxZjJjYmMyNWJiNjE3YThmNmQz
MDI2YWY1YmM4NGU4Li45NWYwOWYyYjY1OTFjMzVjODMzOGM2N2E3MTFiOGMwY2Q2OTJiMzQ2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5pZGwKKysrIGIvU291cmNlL1dl
YkNvcmUvZG9tL0VsZW1lbnQuaWRsCkBAIC0yNiwyMCArMjYsMjAgQEAKIF0gaW50ZXJmYWNlIEVs
ZW1lbnQgOiBOb2RlIHsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nPyB0YWdOYW1l
OwogCi0gICAgRE9NU3RyaW5nPyBnZXRBdHRyaWJ1dGUoRE9NU3RyaW5nIG5hbWUpOworICAgIFtE
T01KSVQ9U2lnbmF0dXJlXSBET01TdHJpbmc/IGdldEF0dHJpYnV0ZShET01TdHJpbmcgbmFtZSk7
CiAKICAgICBbQ0VSZWFjdGlvbnMsIE1heVRocm93RXhjZXB0aW9uXSB2b2lkIHNldEF0dHJpYnV0
ZShET01TdHJpbmcgbmFtZSwgRE9NU3RyaW5nIHZhbHVlKTsKIAogICAgIFtDRVJlYWN0aW9uc10g
dm9pZCByZW1vdmVBdHRyaWJ1dGUoRE9NU3RyaW5nIG5hbWUpOwotICAgIEF0dHI/IGdldEF0dHJp
YnV0ZU5vZGUoRE9NU3RyaW5nIG5hbWUpOworICAgIFtET01KSVQ9U2lnbmF0dXJlXSBBdHRyPyBn
ZXRBdHRyaWJ1dGVOb2RlKERPTVN0cmluZyBuYW1lKTsKIAogICAgIFtDRVJlYWN0aW9ucywgTWF5
VGhyb3dFeGNlcHRpb25dIEF0dHI/IHNldEF0dHJpYnV0ZU5vZGUoQXR0ciBuZXdBdHRyKTsKICAg
ICBbQ0VSZWFjdGlvbnMsIE1heVRocm93RXhjZXB0aW9uXSBBdHRyIHJlbW92ZUF0dHJpYnV0ZU5v
ZGUoQXR0ciBvbGRBdHRyKTsKIAotICAgIEhUTUxDb2xsZWN0aW9uIGdldEVsZW1lbnRzQnlUYWdO
YW1lKERPTVN0cmluZyBuYW1lKTsKKyAgICBbRE9NSklUPVNpZ25hdHVyZV0gSFRNTENvbGxlY3Rp
b24gZ2V0RWxlbWVudHNCeVRhZ05hbWUoRE9NU3RyaW5nIG5hbWUpOwogCiAgICAgcmVhZG9ubHkg
YXR0cmlidXRlIE5hbWVkTm9kZU1hcCBhdHRyaWJ1dGVzOwotICAgIGJvb2xlYW4gaGFzQXR0cmli
dXRlcygpOworICAgIFtET01KSVQ9U2lnbmF0dXJlXSBib29sZWFuIGhhc0F0dHJpYnV0ZXMoKTsK
IAogICAgIERPTVN0cmluZz8gZ2V0QXR0cmlidXRlTlMoRE9NU3RyaW5nPyBuYW1lc3BhY2VVUkks
IERPTVN0cmluZyBsb2NhbE5hbWUpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb21q
aXQvRE9NSklUQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb21q
aXQvRE9NSklUQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDgzZmJhODk3MTNiODY2M2Q0ZDhmMjdlZGNiZjc0YWZlNjMxODJkMzEuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9taml0L0RPTUpJVEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuY3BwCisrKyAvZGV2L251bGwKQEAg
LTEsNzAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBt
ZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICov
Ci0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJET01KSVRBYnN0cmFjdEhlYXBSZXBv
c2l0b3J5LmgiCi0KLSNpbmNsdWRlIDxkb21qaXQvRE9NSklUQWJzdHJhY3RIZWFwLmg+Ci0jaW5j
bHVkZSA8d3RmL0RhdGFMb2cuaD4KLSNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KLQot
I2lmIEVOQUJMRShKSVQpCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsgbmFtZXNwYWNlIERPTUpJVCB7
Ci0KLXN0YXRpYyBjb25zdCBib29sIHZlcmJvc2UgPSBmYWxzZTsKLQotQWJzdHJhY3RIZWFwUmVw
b3NpdG9yeTo6QWJzdHJhY3RIZWFwUmVwb3NpdG9yeSgpCi17Ci0gICAgSlNDOjpET01KSVQ6OkFi
c3RyYWN0SGVhcCBET01IZWFwKCJET00iKTsKLSNkZWZpbmUgRE9NSklUX0RFRklORV9IRUFQKG5h
bWUsIHBhcmVudCkgSlNDOjpET01KSVQ6OkFic3RyYWN0SGVhcCBuYW1lIyNIZWFwKCNuYW1lKTsK
LSAgICBET01KSVRfQUJTVFJBQ1RfSEVBUF9MSVNUKERPTUpJVF9ERUZJTkVfSEVBUCkKLSN1bmRl
ZiBET01KSVRfREVGSU5FX0hFQVAKLQotI2RlZmluZSBET01KSVRfSU5JVElBTElaRV9IRUFQKG5h
bWUsIHBhcmVudCkgbmFtZSMjSGVhcC5zZXRQYXJlbnQoJnBhcmVudCMjSGVhcCk7Ci0gICAgRE9N
SklUX0FCU1RSQUNUX0hFQVBfTElTVChET01KSVRfSU5JVElBTElaRV9IRUFQKQotI3VuZGVmIERP
TUpJVF9JTklUSUFMSVpFX0hFQVAKLQotICAgIERPTUhlYXAuY29tcHV0ZSgwKTsKLQotI2RlZmlu
ZSBET01KSVRfSU5JVElBTElaRV9NRU1CRVIobmFtZSwgcGFyZW50KSBuYW1lID0gbmFtZSMjSGVh
cC5yYW5nZSgpOwotICAgIERPTUpJVF9BQlNUUkFDVF9IRUFQX0xJU1QoRE9NSklUX0lOSVRJQUxJ
WkVfTUVNQkVSKQotI3VuZGVmIERPTUpJVF9JTklUSUFMSVpFX01FTUJFUgotCi0gICAgaWYgKHZl
cmJvc2UpIHsKLSAgICAgICAgZGF0YUxvZygiRE9NSklUIEhlYXAgUmVwb3NpdG9yeTpcbiIpOwot
ICAgICAgICBET01IZWFwLmRlZXBEdW1wKFdURjo6ZGF0YUZpbGUoKSk7Ci0gICAgfQotfQotCi1j
b25zdCBBYnN0cmFjdEhlYXBSZXBvc2l0b3J5JiBBYnN0cmFjdEhlYXBSZXBvc2l0b3J5OjpzaGFy
ZWQoKQotewotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBYnN0cmFjdEhlYXBSZXBvc2l0b3J5
PiByZXBvc2l0b3J5OwotICAgIHJldHVybiByZXBvc2l0b3J5LmdldCgpOwotfQotCi19IH0KLQot
I2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb21qaXQvRE9NSklUQWJzdHJhY3RI
ZWFwUmVwb3NpdG9yeS5oIGIvU291cmNlL1dlYkNvcmUvZG9taml0L0RPTUpJVEFic3RyYWN0SGVh
cFJlcG9zaXRvcnkuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODE5MGExYTk0YmJj
NzlkZTVmMmUzYmVkMDk5ODM0NzlmYTRiZDY1Ni4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb21qaXQvRE9NSklUQWJzdHJhY3RI
ZWFwUmVwb3NpdG9yeS5oCisrKyAvZGV2L251bGwKQEAgLTEsNjYgKzAsMCBAQAotLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
Ci0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
Ci0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaW5j
bHVkZSA8ZG9taml0L0RPTUpJVEhlYXBSYW5nZS5oPgotI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ry
b3llZC5oPgotI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgotCi0jaWYgRU5BQkxFKEpJVCkK
LQotbmFtZXNwYWNlIFdlYkNvcmUgeyBuYW1lc3BhY2UgRE9NSklUIHsKLQotLy8gRGVzY3JpYmUg
eW91ciBhYnN0cmFjdCBoZWFwIGhpZXJhcmNoeSBoZXJlLgotLy8gVihBYnN0cmFjdEhlYXBOYW1l
LCBQYXJlbnQpCi0jZGVmaW5lIERPTUpJVF9BQlNUUkFDVF9IRUFQX0xJU1QoVikgXAotICAgIFYo
Tm9kZSwgRE9NKSBcCi0gICAgVihOb2RlX2ZpcnN0Q2hpbGQsIE5vZGUpIFwKLSAgICBWKE5vZGVf
bGFzdENoaWxkLCBOb2RlKSBcCi0gICAgVihOb2RlX3BhcmVudE5vZGUsIE5vZGUpIFwKLSAgICBW
KE5vZGVfbmV4dFNpYmxpbmcsIE5vZGUpIFwKLSAgICBWKE5vZGVfcHJldmlvdXNTaWJsaW5nLCBO
b2RlKSBcCi0gICAgVihOb2RlX293bmVyRG9jdW1lbnQsIE5vZGUpIFwKLSAgICBWKERvY3VtZW50
LCBET00pIFwKLSAgICBWKERvY3VtZW50X2RvY3VtZW50RWxlbWVudCwgRG9jdW1lbnQpIFwKLQot
Ci1jbGFzcyBBYnN0cmFjdEhlYXBSZXBvc2l0b3J5IHsKLSAgICBXVEZfTUFLRV9OT05DT1BZQUJM
RShBYnN0cmFjdEhlYXBSZXBvc2l0b3J5KTsKLXB1YmxpYzoKLSAgICBzdGF0aWMgY29uc3QgQWJz
dHJhY3RIZWFwUmVwb3NpdG9yeSYgc2hhcmVkKCk7Ci0KLSAgICBKU0M6OkRPTUpJVDo6SGVhcFJh
bmdlIERPTTsKLQotI2RlZmluZSBET01KSVRfREVGSU5FX01FTUJFUihuYW1lLCBwYXJlbnQpIEpT
Qzo6RE9NSklUOjpIZWFwUmFuZ2UgbmFtZTsKLSAgICBET01KSVRfQUJTVFJBQ1RfSEVBUF9MSVNU
KERPTUpJVF9ERUZJTkVfTUVNQkVSKQotI3VuZGVmIERPTUpJVF9ERUZJTkVfTUVNQkVSCi0KLSAg
ICBBYnN0cmFjdEhlYXBSZXBvc2l0b3J5KCk7Ci19OwotCi19IH0KLQotI2VuZGlmCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb21qaXQvRE9NSklUQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS55
YW1sIGIvU291cmNlL1dlYkNvcmUvZG9taml0L0RPTUpJVEFic3RyYWN0SGVhcFJlcG9zaXRvcnku
eWFtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi41MmM1ODQ1ZTA3ODY3MGRkZGFjOTc3Mjk5OWNjYjhlYTdkMDFiZGYz
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvZG9taml0L0RPTUpJVEFic3RyYWN0
SGVhcFJlcG9zaXRvcnkueWFtbApAQCAtMCwwICsxLDExIEBACitET006CisgICAgVHJlZToKKyAg
ICAgICAgTm9kZToKKyAgICAgICAgICAgIC0gTm9kZV9maXJzdENoaWxkCisgICAgICAgICAgICAt
IE5vZGVfbGFzdENoaWxkCisgICAgICAgICAgICAtIE5vZGVfcGFyZW50Tm9kZQorICAgICAgICAg
ICAgLSBOb2RlX25leHRTaWJsaW5nCisgICAgICAgICAgICAtIE5vZGVfcHJldmlvdXNTaWJsaW5n
CisgICAgICAgICAgICAtIE5vZGVfb3duZXJEb2N1bWVudAorICAgICAgICBEb2N1bWVudDoKKyAg
ICAgICAgICAgIC0gRG9jdW1lbnRfZG9jdW1lbnRFbGVtZW50CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9kb21qaXQvRE9NSklUSURMQ29udmVydC5oIGIvU291cmNlL1dlYkNvcmUvZG9taml0
L0RPTUpJVElETENvbnZlcnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41ZTAwYWJmY2NiODc2ZGVhMTgzMmYxYzIw
YWVlM2VkNzhiMTM2ODQ5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvZG9taml0
L0RPTUpJVElETENvbnZlcnQuaApAQCAtMCwwICsxLDQ5IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdt
YSBvbmNlCisKKyNpbmNsdWRlICJJRExUeXBlcy5oIgorI2luY2x1ZGUgPGJ5dGVjb2RlL1NwZWN1
bGF0ZWRUeXBlLmg+CisjaW5jbHVkZSA8ZG9taml0L0RPTUpJVFNpZ25hdHVyZS5oPgorCituYW1l
c3BhY2UgV2ViQ29yZSB7IG5hbWVzcGFjZSBET01KSVQgeworCit0ZW1wbGF0ZTx0eXBlbmFtZSBJ
RExUeXBlPgorc3RydWN0IERpcmVjdENvbnZlcnRlcjsKKwordGVtcGxhdGU8Pgorc3RydWN0IERp
cmVjdENvbnZlcnRlcjxJRExET01TdHJpbmc+IHsKKyAgICB0ZW1wbGF0ZTxTdHJpbmdDb252ZXJz
aW9uQ29uZmlndXJhdGlvbj4KKyAgICBzdGF0aWMgU3RyaW5nIGRpcmVjdENvbnZlcnQoSlNDOjpF
eGVjU3RhdGUmLCBKU0M6OkpTU3RyaW5nKik7Cit9OworCit0ZW1wbGF0ZTw+CitpbmxpbmUgU3Ry
aW5nIERpcmVjdENvbnZlcnRlcjxJRExET01TdHJpbmc+OjpkaXJlY3RDb252ZXJ0PFN0cmluZ0Nv
bnZlcnNpb25Db25maWd1cmF0aW9uOjpOb3JtYWw+KEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgSlND
OjpKU1N0cmluZyogc3RyaW5nKQoreworICAgIHJldHVybiBzdHJpbmctPnZhbHVlKCZzdGF0ZSk7
Cit9CisKK30gfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9taml0L0RPTUpJVElETFR5
cGUuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbWppdC9ET01KSVRJRExUeXBlLmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
Njg5MWZiYzUwZWY0YzJkNzY1NGQ4ZTVkMmJjOGRlYWU5NzZkZjFhYwotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2RvbWppdC9ET01KSVRJRExUeXBlLmgKQEAgLTAsMCArMSw0NyBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiSURMVHlwZXMuaCIKKyNp
bmNsdWRlIDxieXRlY29kZS9TcGVjdWxhdGVkVHlwZS5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7
IG5hbWVzcGFjZSBET01KSVQgeworCit0ZW1wbGF0ZTx0eXBlbmFtZSBJRExUeXBlPgorc3RydWN0
IElETEpTQXJndW1lbnRUeXBlU2VsZWN0OworCit0ZW1wbGF0ZTw+IHN0cnVjdCBJRExKU0FyZ3Vt
ZW50VHlwZVNlbGVjdDxJRExCb29sZWFuPiB7IHR5cGVkZWYgYm9vbCB0eXBlOyB9OwordGVtcGxh
dGU8PiBzdHJ1Y3QgSURMSlNBcmd1bWVudFR5cGVTZWxlY3Q8SURMQnl0ZT4geyB0eXBlZGVmIGlu
dDMyX3QgdHlwZTsgfTsKK3RlbXBsYXRlPD4gc3RydWN0IElETEpTQXJndW1lbnRUeXBlU2VsZWN0
PElETE9jdGV0PiB7IHR5cGVkZWYgaW50MzJfdCB0eXBlOyB9OwordGVtcGxhdGU8PiBzdHJ1Y3Qg
SURMSlNBcmd1bWVudFR5cGVTZWxlY3Q8SURMU2hvcnQ+IHsgdHlwZWRlZiBpbnQzMl90IHR5cGU7
IH07Cit0ZW1wbGF0ZTw+IHN0cnVjdCBJRExKU0FyZ3VtZW50VHlwZVNlbGVjdDxJRExVbnNpZ25l
ZFNob3J0PiB7IHR5cGVkZWYgaW50MzJfdCB0eXBlOyB9OwordGVtcGxhdGU8PiBzdHJ1Y3QgSURM
SlNBcmd1bWVudFR5cGVTZWxlY3Q8SURMTG9uZz4geyB0eXBlZGVmIGludDMyX3QgdHlwZTsgfTsK
K3RlbXBsYXRlPD4gc3RydWN0IElETEpTQXJndW1lbnRUeXBlU2VsZWN0PElETERPTVN0cmluZz4g
eyB0eXBlZGVmIEpTQzo6SlNTdHJpbmcqIHR5cGU7IH07CisKK3RlbXBsYXRlPHR5cGVuYW1lIElE
TFR5cGU+Cit1c2luZyBJRExKU0FyZ3VtZW50VHlwZSA9IHR5cGVuYW1lIElETEpTQXJndW1lbnRU
eXBlU2VsZWN0PElETFR5cGU+Ojp0eXBlOworCit9IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2RvbWppdC9ET01KSVRJRExUeXBlRmlsdGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9kb21qaXQv
RE9NSklUSURMVHlwZUZpbHRlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhhZjYzNmRlOWI2ZmU0MWMzNmM3NzA4
NzAyNDZlODdhYmZmYjc4MDIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb21q
aXQvRE9NSklUSURMVHlwZUZpbHRlci5oCkBAIC0wLDAgKzEsNzAgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
cHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPGJ5dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmg+CisKK25h
bWVzcGFjZSBXZWJDb3JlIHsgbmFtZXNwYWNlIERPTUpJVCB7CisKK3RlbXBsYXRlPHR5cGVuYW1l
IElETFR5cGU+CitzdHJ1Y3QgSURMQXJndW1lbnRUeXBlRmlsdGVyU2VsZWN0OworCit0ZW1wbGF0
ZTw+IHN0cnVjdCBJRExBcmd1bWVudFR5cGVGaWx0ZXJTZWxlY3Q8SURMQm9vbGVhbj4geyBzdGF0
aWMgY29uc3RleHByIEpTQzo6U3BlY3VsYXRlZFR5cGUgdmFsdWUgPSBKU0M6OlNwZWNCb29sZWFu
OyB9OwordGVtcGxhdGU8PiBzdHJ1Y3QgSURMQXJndW1lbnRUeXBlRmlsdGVyU2VsZWN0PElETEJ5
dGU+IHsgc3RhdGljIGNvbnN0ZXhwciBKU0M6OlNwZWN1bGF0ZWRUeXBlIHZhbHVlID0gSlNDOjpT
cGVjSW50MzJPbmx5OyB9OwordGVtcGxhdGU8PiBzdHJ1Y3QgSURMQXJndW1lbnRUeXBlRmlsdGVy
U2VsZWN0PElETE9jdGV0PiB7IHN0YXRpYyBjb25zdGV4cHIgSlNDOjpTcGVjdWxhdGVkVHlwZSB2
YWx1ZSA9IEpTQzo6U3BlY0ludDMyT25seTsgfTsKK3RlbXBsYXRlPD4gc3RydWN0IElETEFyZ3Vt
ZW50VHlwZUZpbHRlclNlbGVjdDxJRExTaG9ydD4geyBzdGF0aWMgY29uc3RleHByIEpTQzo6U3Bl
Y3VsYXRlZFR5cGUgdmFsdWUgPSBKU0M6OlNwZWNJbnQzMk9ubHk7IH07Cit0ZW1wbGF0ZTw+IHN0
cnVjdCBJRExBcmd1bWVudFR5cGVGaWx0ZXJTZWxlY3Q8SURMVW5zaWduZWRTaG9ydD4geyBzdGF0
aWMgY29uc3RleHByIEpTQzo6U3BlY3VsYXRlZFR5cGUgdmFsdWUgPSBKU0M6OlNwZWNJbnQzMk9u
bHk7IH07Cit0ZW1wbGF0ZTw+IHN0cnVjdCBJRExBcmd1bWVudFR5cGVGaWx0ZXJTZWxlY3Q8SURM
TG9uZz4geyBzdGF0aWMgY29uc3RleHByIEpTQzo6U3BlY3VsYXRlZFR5cGUgdmFsdWUgPSBKU0M6
OlNwZWNJbnQzMk9ubHk7IH07Cit0ZW1wbGF0ZTw+IHN0cnVjdCBJRExBcmd1bWVudFR5cGVGaWx0
ZXJTZWxlY3Q8SURMRE9NU3RyaW5nPiB7IHN0YXRpYyBjb25zdGV4cHIgSlNDOjpTcGVjdWxhdGVk
VHlwZSB2YWx1ZSA9IEpTQzo6U3BlY1N0cmluZzsgfTsKKwordGVtcGxhdGU8dHlwZW5hbWUgSURM
VHlwZT4KK2NvbnN0ZXhwciBKU0M6OlNwZWN1bGF0ZWRUeXBlIElETEFyZ3VtZW50VHlwZUZpbHRl
ciA9IElETEFyZ3VtZW50VHlwZUZpbHRlclNlbGVjdDxJRExUeXBlPjo6dmFsdWU7CisKK3RlbXBs
YXRlPHR5cGVuYW1lIElETFR5cGU+Citjb25zdGV4cHIgSlNDOjpTcGVjdWxhdGVkVHlwZSBJRExS
ZXN1bHRUeXBlRmlsdGVyID0gSlNDOjpTcGVjSGVhcFRvcDsKKwordGVtcGxhdGU8PiBjb25zdGV4
cHIgSlNDOjpTcGVjdWxhdGVkVHlwZSBJRExSZXN1bHRUeXBlRmlsdGVyPElETEFueT4gPSBKU0M6
OlNwZWNIZWFwVG9wOwordGVtcGxhdGU8PiBjb25zdGV4cHIgSlNDOjpTcGVjdWxhdGVkVHlwZSBJ
RExSZXN1bHRUeXBlRmlsdGVyPElETEJvb2xlYW4+ID0gSlNDOjpTcGVjQm9vbGVhbjsKK3RlbXBs
YXRlPD4gY29uc3RleHByIEpTQzo6U3BlY3VsYXRlZFR5cGUgSURMUmVzdWx0VHlwZUZpbHRlcjxJ
RExCeXRlPiA9IEpTQzo6U3BlY0ludDMyT25seTsKK3RlbXBsYXRlPD4gY29uc3RleHByIEpTQzo6
U3BlY3VsYXRlZFR5cGUgSURMUmVzdWx0VHlwZUZpbHRlcjxJRExPY3RldD4gPSBKU0M6OlNwZWNJ
bnQzMk9ubHk7Cit0ZW1wbGF0ZTw+IGNvbnN0ZXhwciBKU0M6OlNwZWN1bGF0ZWRUeXBlIElETFJl
c3VsdFR5cGVGaWx0ZXI8SURMU2hvcnQ+ID0gSlNDOjpTcGVjSW50MzJPbmx5OwordGVtcGxhdGU8
PiBjb25zdGV4cHIgSlNDOjpTcGVjdWxhdGVkVHlwZSBJRExSZXN1bHRUeXBlRmlsdGVyPElETFVu
c2lnbmVkU2hvcnQ+ID0gSlNDOjpTcGVjSW50MzJPbmx5OwordGVtcGxhdGU8PiBjb25zdGV4cHIg
SlNDOjpTcGVjdWxhdGVkVHlwZSBJRExSZXN1bHRUeXBlRmlsdGVyPElETExvbmc+ID0gSlNDOjpT
cGVjSW50MzJPbmx5OwordGVtcGxhdGU8PiBjb25zdGV4cHIgSlNDOjpTcGVjdWxhdGVkVHlwZSBJ
RExSZXN1bHRUeXBlRmlsdGVyPElETFVuc2lnbmVkTG9uZz4gPSBKU0M6OlNwZWNCeXRlY29kZU51
bWJlcjsKK3RlbXBsYXRlPD4gY29uc3RleHByIEpTQzo6U3BlY3VsYXRlZFR5cGUgSURMUmVzdWx0
VHlwZUZpbHRlcjxJRExMb25nTG9uZz4gPSBKU0M6OlNwZWNCeXRlY29kZU51bWJlcjsKK3RlbXBs
YXRlPD4gY29uc3RleHByIEpTQzo6U3BlY3VsYXRlZFR5cGUgSURMUmVzdWx0VHlwZUZpbHRlcjxJ
RExVbnNpZ25lZExvbmdMb25nPiA9IEpTQzo6U3BlY0J5dGVjb2RlTnVtYmVyOwordGVtcGxhdGU8
PiBjb25zdGV4cHIgSlNDOjpTcGVjdWxhdGVkVHlwZSBJRExSZXN1bHRUeXBlRmlsdGVyPElETEZs
b2F0PiA9IEpTQzo6U3BlY0J5dGVjb2RlTnVtYmVyOwordGVtcGxhdGU8PiBjb25zdGV4cHIgSlND
OjpTcGVjdWxhdGVkVHlwZSBJRExSZXN1bHRUeXBlRmlsdGVyPElETFVucmVzdHJpY3RlZEZsb2F0
PiA9IEpTQzo6U3BlY0J5dGVjb2RlTnVtYmVyOwordGVtcGxhdGU8PiBjb25zdGV4cHIgSlNDOjpT
cGVjdWxhdGVkVHlwZSBJRExSZXN1bHRUeXBlRmlsdGVyPElETERvdWJsZT4gPSBKU0M6OlNwZWNC
eXRlY29kZU51bWJlcjsKK3RlbXBsYXRlPD4gY29uc3RleHByIEpTQzo6U3BlY3VsYXRlZFR5cGUg
SURMUmVzdWx0VHlwZUZpbHRlcjxJRExVbnJlc3RyaWN0ZWREb3VibGU+ID0gSlNDOjpTcGVjQnl0
ZWNvZGVOdW1iZXI7Cit0ZW1wbGF0ZTw+IGNvbnN0ZXhwciBKU0M6OlNwZWN1bGF0ZWRUeXBlIElE
TFJlc3VsdFR5cGVGaWx0ZXI8SURMRE9NU3RyaW5nPiA9IEpTQzo6U3BlY1N0cmluZzsKK3RlbXBs
YXRlPD4gY29uc3RleHByIEpTQzo6U3BlY3VsYXRlZFR5cGUgSURMUmVzdWx0VHlwZUZpbHRlcjxJ
RExCeXRlU3RyaW5nPiA9IEpTQzo6U3BlY1N0cmluZzsKK3RlbXBsYXRlPD4gY29uc3RleHByIEpT
Qzo6U3BlY3VsYXRlZFR5cGUgSURMUmVzdWx0VHlwZUZpbHRlcjxJRExVU1ZTdHJpbmc+ID0gSlND
OjpTcGVjU3RyaW5nOworCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorY29uc3RleHByIEpTQzo6U3Bl
Y3VsYXRlZFR5cGUgSURMUmVzdWx0VHlwZUZpbHRlcjxJRExOdWxsYWJsZTxUPj4gPSBKU0M6OlNw
ZWNPdGhlciB8IElETFJlc3VsdFR5cGVGaWx0ZXI8VD47CisKK30gfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZG9taml0L0pTRG9jdW1lbnRET01KSVQuY3BwIGIvU291cmNlL1dlYkNvcmUv
ZG9taml0L0pTRG9jdW1lbnRET01KSVQuY3BwCmluZGV4IDliNDhkOWZkYTU4YTYyZDA3ZmIyM2Fh
YjQ1NmJmOTRiN2VkOGZjMmYuLmJiZmVlN2RjNGJiNzgyZTczY2YyN2M5NzdiYzE4Mjk0YTU5NGI2
ZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbWppdC9KU0RvY3VtZW50RE9NSklULmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb21qaXQvSlNEb2N1bWVudERPTUpJVC5jcHAKQEAgLTQ4
LDcgKzQ4LDYgQEAgUmVmPEpTQzo6RE9NSklUOjpQYXRjaHBvaW50PiBEb2N1bWVudERvY3VtZW50
RWxlbWVudERPTUpJVDo6Y2hlY2tET00oKQogCiBSZWY8SlNDOjpET01KSVQ6OkNhbGxET01HZXR0
ZXJQYXRjaHBvaW50PiBEb2N1bWVudERvY3VtZW50RWxlbWVudERPTUpJVDo6Y2FsbERPTUdldHRl
cigpCiB7Ci0gICAgY29uc3QgYXV0byYgaGVhcCA9IERPTUpJVDo6QWJzdHJhY3RIZWFwUmVwb3Np
dG9yeTo6c2hhcmVkKCk7CiAgICAgUmVmPEpTQzo6RE9NSklUOjpDYWxsRE9NR2V0dGVyUGF0Y2hw
b2ludD4gcGF0Y2hwb2ludCA9IEpTQzo6RE9NSklUOjpDYWxsRE9NR2V0dGVyUGF0Y2hwb2ludDo6
Y3JlYXRlKCk7CiAgICAgcGF0Y2hwb2ludC0+bnVtR1BTY3JhdGNoUmVnaXN0ZXJzID0gMTsKICAg
ICBwYXRjaHBvaW50LT5zZXRHZW5lcmF0b3IoWz1dKENDYWxsSGVscGVycyYgaml0LCBKU0M6OkRP
TUpJVDo6UGF0Y2hwb2ludFBhcmFtcyYgcGFyYW1zKSB7CkBAIC03MCw3ICs2OSw3IEBAIFJlZjxK
U0M6OkRPTUpJVDo6Q2FsbERPTUdldHRlclBhdGNocG9pbnQ+IERvY3VtZW50RG9jdW1lbnRFbGVt
ZW50RE9NSklUOjpjYWxsRE9NCiAKICAgICAgICAgcmV0dXJuIENDYWxsSGVscGVyczo6SnVtcExp
c3QoKTsKICAgICB9KTsKLSAgICBwYXRjaHBvaW50LT5lZmZlY3QgPSBKU0M6OkRPTUpJVDo6RWZm
ZWN0Ojpmb3JEZWYoaGVhcC5Eb2N1bWVudF9kb2N1bWVudEVsZW1lbnQpOworICAgIHBhdGNocG9p
bnQtPmVmZmVjdCA9IEpTQzo6RE9NSklUOjpFZmZlY3Q6OmZvckRlZihET01KSVQ6OkFic3RyYWN0
SGVhcFJlcG9zaXRvcnk6OkRvY3VtZW50X2RvY3VtZW50RWxlbWVudCk7CiAgICAgcmV0dXJuIHBh
dGNocG9pbnQ7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbWppdC9KU05vZGVE
T01KSVQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9taml0L0pTTm9kZURPTUpJVC5jcHAKaW5kZXgg
MWQ3OTAxZWM0MWQ3YWNlZjFkMGQ3OGY2MTMyNmZiZThhMTNhOTFiZi4uZGIzMTBlYTM0NTI4NDkx
NDI0MjhkM2Q2MTZmODFiMmM2N2M1MTY1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9t
aml0L0pTTm9kZURPTUpJVC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9taml0L0pTTm9kZURP
TUpJVC5jcHAKQEAgLTgzLDkgKzgzLDggQEAgUmVmPEpTQzo6RE9NSklUOjpQYXRjaHBvaW50PiBO
b2RlRmlyc3RDaGlsZERPTUpJVDo6Y2hlY2tET00oKQogCiBSZWY8SlNDOjpET01KSVQ6OkNhbGxE
T01HZXR0ZXJQYXRjaHBvaW50PiBOb2RlRmlyc3RDaGlsZERPTUpJVDo6Y2FsbERPTUdldHRlcigp
CiB7Ci0gICAgY29uc3QgYXV0byYgaGVhcCA9IERPTUpJVDo6QWJzdHJhY3RIZWFwUmVwb3NpdG9y
eTo6c2hhcmVkKCk7CiAgICAgYXV0byBwYXRjaHBvaW50ID0gY3JlYXRlQ2FsbERPTUdldHRlckZv
ck9mZnNldEFjY2VzczxOb2RlPihDQVNUX09GRlNFVChOb2RlKiwgQ29udGFpbmVyTm9kZSopICsg
Q29udGFpbmVyTm9kZTo6Zmlyc3RDaGlsZE1lbW9yeU9mZnNldCgpLCBJc0NvbnRhaW5lckd1YXJk
UmVxdWlyZW1lbnQ6OlJlcXVpcmVkKTsKLSAgICBwYXRjaHBvaW50LT5lZmZlY3QgPSBKU0M6OkRP
TUpJVDo6RWZmZWN0Ojpmb3JEZWYoaGVhcC5Ob2RlX2ZpcnN0Q2hpbGQpOworICAgIHBhdGNocG9p
bnQtPmVmZmVjdCA9IEpTQzo6RE9NSklUOjpFZmZlY3Q6OmZvckRlZihET01KSVQ6OkFic3RyYWN0
SGVhcFJlcG9zaXRvcnk6Ok5vZGVfZmlyc3RDaGlsZCk7CiAgICAgcmV0dXJuIHBhdGNocG9pbnQ7
CiB9CiAKQEAgLTk2LDkgKzk1LDggQEAgUmVmPEpTQzo6RE9NSklUOjpQYXRjaHBvaW50PiBOb2Rl
TGFzdENoaWxkRE9NSklUOjpjaGVja0RPTSgpCiAKIFJlZjxKU0M6OkRPTUpJVDo6Q2FsbERPTUdl
dHRlclBhdGNocG9pbnQ+IE5vZGVMYXN0Q2hpbGRET01KSVQ6OmNhbGxET01HZXR0ZXIoKQogewot
ICAgIGNvbnN0IGF1dG8mIGhlYXAgPSBET01KSVQ6OkFic3RyYWN0SGVhcFJlcG9zaXRvcnk6OnNo
YXJlZCgpOwogICAgIGF1dG8gcGF0Y2hwb2ludCA9IGNyZWF0ZUNhbGxET01HZXR0ZXJGb3JPZmZz
ZXRBY2Nlc3M8Tm9kZT4oQ0FTVF9PRkZTRVQoTm9kZSosIENvbnRhaW5lck5vZGUqKSArIENvbnRh
aW5lck5vZGU6Omxhc3RDaGlsZE1lbW9yeU9mZnNldCgpLCBJc0NvbnRhaW5lckd1YXJkUmVxdWly
ZW1lbnQ6OlJlcXVpcmVkKTsKLSAgICBwYXRjaHBvaW50LT5lZmZlY3QgPSBKU0M6OkRPTUpJVDo6
RWZmZWN0Ojpmb3JEZWYoaGVhcC5Ob2RlX2xhc3RDaGlsZCk7CisgICAgcGF0Y2hwb2ludC0+ZWZm
ZWN0ID0gSlNDOjpET01KSVQ6OkVmZmVjdDo6Zm9yRGVmKERPTUpJVDo6QWJzdHJhY3RIZWFwUmVw
b3NpdG9yeTo6Tm9kZV9sYXN0Q2hpbGQpOwogICAgIHJldHVybiBwYXRjaHBvaW50OwogfQogCkBA
IC0xMDksOSArMTA3LDggQEAgUmVmPEpTQzo6RE9NSklUOjpQYXRjaHBvaW50PiBOb2RlTmV4dFNp
YmxpbmdET01KSVQ6OmNoZWNrRE9NKCkKIAogUmVmPEpTQzo6RE9NSklUOjpDYWxsRE9NR2V0dGVy
UGF0Y2hwb2ludD4gTm9kZU5leHRTaWJsaW5nRE9NSklUOjpjYWxsRE9NR2V0dGVyKCkKIHsKLSAg
ICBjb25zdCBhdXRvJiBoZWFwID0gRE9NSklUOjpBYnN0cmFjdEhlYXBSZXBvc2l0b3J5OjpzaGFy
ZWQoKTsKICAgICBhdXRvIHBhdGNocG9pbnQgPSBjcmVhdGVDYWxsRE9NR2V0dGVyRm9yT2Zmc2V0
QWNjZXNzPE5vZGU+KE5vZGU6Om5leHRTaWJsaW5nTWVtb3J5T2Zmc2V0KCksIElzQ29udGFpbmVy
R3VhcmRSZXF1aXJlbWVudDo6Tm90UmVxdWlyZWQpOwotICAgIHBhdGNocG9pbnQtPmVmZmVjdCA9
IEpTQzo6RE9NSklUOjpFZmZlY3Q6OmZvckRlZihoZWFwLk5vZGVfbmV4dFNpYmxpbmcpOworICAg
IHBhdGNocG9pbnQtPmVmZmVjdCA9IEpTQzo6RE9NSklUOjpFZmZlY3Q6OmZvckRlZihET01KSVQ6
OkFic3RyYWN0SGVhcFJlcG9zaXRvcnk6Ok5vZGVfbmV4dFNpYmxpbmcpOwogICAgIHJldHVybiBw
YXRjaHBvaW50OwogfQogCkBAIC0xMjIsOSArMTE5LDggQEAgUmVmPEpTQzo6RE9NSklUOjpQYXRj
aHBvaW50PiBOb2RlUHJldmlvdXNTaWJsaW5nRE9NSklUOjpjaGVja0RPTSgpCiAKIFJlZjxKU0M6
OkRPTUpJVDo6Q2FsbERPTUdldHRlclBhdGNocG9pbnQ+IE5vZGVQcmV2aW91c1NpYmxpbmdET01K
SVQ6OmNhbGxET01HZXR0ZXIoKQogewotICAgIGNvbnN0IGF1dG8mIGhlYXAgPSBET01KSVQ6OkFi
c3RyYWN0SGVhcFJlcG9zaXRvcnk6OnNoYXJlZCgpOwogICAgIGF1dG8gcGF0Y2hwb2ludCA9IGNy
ZWF0ZUNhbGxET01HZXR0ZXJGb3JPZmZzZXRBY2Nlc3M8Tm9kZT4oTm9kZTo6cHJldmlvdXNTaWJs
aW5nTWVtb3J5T2Zmc2V0KCksIElzQ29udGFpbmVyR3VhcmRSZXF1aXJlbWVudDo6Tm90UmVxdWly
ZWQpOwotICAgIHBhdGNocG9pbnQtPmVmZmVjdCA9IEpTQzo6RE9NSklUOjpFZmZlY3Q6OmZvckRl
ZihoZWFwLk5vZGVfcHJldmlvdXNTaWJsaW5nKTsKKyAgICBwYXRjaHBvaW50LT5lZmZlY3QgPSBK
U0M6OkRPTUpJVDo6RWZmZWN0Ojpmb3JEZWYoRE9NSklUOjpBYnN0cmFjdEhlYXBSZXBvc2l0b3J5
OjpOb2RlX3ByZXZpb3VzU2libGluZyk7CiAgICAgcmV0dXJuIHBhdGNocG9pbnQ7CiB9CiAKQEAg
LTEzNSw5ICsxMzEsOCBAQCBSZWY8SlNDOjpET01KSVQ6OlBhdGNocG9pbnQ+IE5vZGVQYXJlbnRO
b2RlRE9NSklUOjpjaGVja0RPTSgpCiAKIFJlZjxKU0M6OkRPTUpJVDo6Q2FsbERPTUdldHRlclBh
dGNocG9pbnQ+IE5vZGVQYXJlbnROb2RlRE9NSklUOjpjYWxsRE9NR2V0dGVyKCkKIHsKLSAgICBj
b25zdCBhdXRvJiBoZWFwID0gRE9NSklUOjpBYnN0cmFjdEhlYXBSZXBvc2l0b3J5OjpzaGFyZWQo
KTsKICAgICBhdXRvIHBhdGNocG9pbnQgPSBjcmVhdGVDYWxsRE9NR2V0dGVyRm9yT2Zmc2V0QWNj
ZXNzPENvbnRhaW5lck5vZGU+KE5vZGU6OnBhcmVudE5vZGVNZW1vcnlPZmZzZXQoKSwgSXNDb250
YWluZXJHdWFyZFJlcXVpcmVtZW50OjpOb3RSZXF1aXJlZCk7Ci0gICAgcGF0Y2hwb2ludC0+ZWZm
ZWN0ID0gSlNDOjpET01KSVQ6OkVmZmVjdDo6Zm9yRGVmKGhlYXAuTm9kZV9wYXJlbnROb2RlKTsK
KyAgICBwYXRjaHBvaW50LT5lZmZlY3QgPSBKU0M6OkRPTUpJVDo6RWZmZWN0Ojpmb3JEZWYoRE9N
SklUOjpBYnN0cmFjdEhlYXBSZXBvc2l0b3J5OjpOb2RlX3BhcmVudE5vZGUpOwogICAgIHJldHVy
biBwYXRjaHBvaW50OwogfQogCkBAIC0xNjksNyArMTY0LDYgQEAgUmVmPEpTQzo6RE9NSklUOjpQ
YXRjaHBvaW50PiBOb2RlT3duZXJEb2N1bWVudERPTUpJVDo6Y2hlY2tET00oKQogCiBSZWY8SlND
OjpET01KSVQ6OkNhbGxET01HZXR0ZXJQYXRjaHBvaW50PiBOb2RlT3duZXJEb2N1bWVudERPTUpJ
VDo6Y2FsbERPTUdldHRlcigpCiB7Ci0gICAgY29uc3QgYXV0byYgaGVhcCA9IERPTUpJVDo6QWJz
dHJhY3RIZWFwUmVwb3NpdG9yeTo6c2hhcmVkKCk7CiAgICAgUmVmPEpTQzo6RE9NSklUOjpDYWxs
RE9NR2V0dGVyUGF0Y2hwb2ludD4gcGF0Y2hwb2ludCA9IEpTQzo6RE9NSklUOjpDYWxsRE9NR2V0
dGVyUGF0Y2hwb2ludDo6Y3JlYXRlKCk7CiAgICAgcGF0Y2hwb2ludC0+bnVtR1BTY3JhdGNoUmVn
aXN0ZXJzID0gMTsKICAgICBwYXRjaHBvaW50LT5zZXRHZW5lcmF0b3IoWz1dKENDYWxsSGVscGVy
cyYgaml0LCBKU0M6OkRPTUpJVDo6UGF0Y2hwb2ludFBhcmFtcyYgcGFyYW1zKSB7CkBAIC0xOTEs
NyArMTg1LDcgQEAgUmVmPEpTQzo6RE9NSklUOjpDYWxsRE9NR2V0dGVyUGF0Y2hwb2ludD4gTm9k
ZU93bmVyRG9jdW1lbnRET01KSVQ6OmNhbGxET01HZXR0ZXIKICAgICAgICAgZG9uZS5saW5rKCZq
aXQpOwogICAgICAgICByZXR1cm4gQ0NhbGxIZWxwZXJzOjpKdW1wTGlzdCgpOwogICAgIH0pOwot
ICAgIHBhdGNocG9pbnQtPmVmZmVjdCA9IEpTQzo6RE9NSklUOjpFZmZlY3Q6OmZvckRlZihoZWFw
Lk5vZGVfb3duZXJEb2N1bWVudCk7CisgICAgcGF0Y2hwb2ludC0+ZWZmZWN0ID0gSlNDOjpET01K
SVQ6OkVmZmVjdDo6Zm9yRGVmKERPTUpJVDo6QWJzdHJhY3RIZWFwUmVwb3NpdG9yeTo6Tm9kZV9v
d25lckRvY3VtZW50KTsKICAgICByZXR1cm4gcGF0Y2hwb2ludDsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZG9taml0L2dlbmVyYXRlLWFic3RyYWN0LWhlYXAucmIgYi9Tb3VyY2Uv
V2ViQ29yZS9kb21qaXQvZ2VuZXJhdGUtYWJzdHJhY3QtaGVhcC5yYgpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iNzQx
MmU4NWQ2OWY0OTFhMmVhYWJhYTYxNzhmMWIyNWEwMmQwOWI0Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYkNvcmUvZG9taml0L2dlbmVyYXRlLWFic3RyYWN0LWhlYXAucmIKQEAgLTAsMCAr
MSwxNjUgQEAKKyMhL3Vzci9iaW4vZW52IHJ1YnkKKyMgLSotIGNvZGluZzogdXRmLTggLSotCisj
IENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisj
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisj
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyMgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisjIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisjIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyMgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisjIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisjIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisjIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCityZXF1aXJlICJ5YW1sIgorCitj
bGFzcyBIZWFwUmFuZ2UKKyAgICBhdHRyX3JlYWRlciA6Zmlyc3QsIDpsYXN0CisgICAgZGVmIGlu
aXRpYWxpemUoZmlyc3QsIGxhc3QpCisgICAgICAgIEBmaXJzdCA9IGZpcnN0CisgICAgICAgIEBs
YXN0ID0gbGFzdAorICAgIGVuZAorZW5kCisKK2NsYXNzIEFic3RyYWN0SGVhcAorICAgIGF0dHJf
cmVhZGVyIDpyYW5nZSwgOm5hbWUsIDpwYXJlbnQKKyAgICBkZWYgaW5pdGlhbGl6ZShuYW1lLCB0
cmVlKQorICAgICAgICBAbmFtZSA9IG5hbWUKKyAgICAgICAgQHBhcmVudCA9IG5pbAorICAgICAg
ICBpZiB0cmVlLm5pbD8KKyAgICAgICAgICAgIEBjaGlsZHJlbiA9IFtdCisgICAgICAgIGVsc2UK
KyAgICAgICAgICAgIEBjaGlsZHJlbiA9IHRyZWUubWFwIHt8a2V5LCB2YWx1ZXwgQWJzdHJhY3RI
ZWFwLm5ldyhrZXksIHZhbHVlKSB9CisgICAgICAgIGVuZAorICAgICAgICBAcmFuZ2UgPSBuaWwK
KyAgICBlbmQKKworICAgIGRlZiBzZXRQYXJlbnQocGFyZW50KQorICAgICAgICBwYXJlbnQuY2hp
bGRyZW4ucHVzaChzZWxmKQorICAgICAgICBAcGFyZW50ID0gcGFyZW50CisgICAgZW5kCisKKyAg
ICBkZWYgY29tcHV0ZShzdGFydCkKKyAgICAgICAgY3VycmVudCA9IHN0YXJ0CisgICAgICAgIGlm
IEBjaGlsZHJlbi5lbXB0eT8KKyAgICAgICAgICAgIEByYW5nZSA9IEhlYXBSYW5nZS5uZXcoc3Rh
cnQsIGN1cnJlbnQgKyAxKQorICAgICAgICAgICAgcmV0dXJuCisgICAgICAgIGVuZAorCisgICAg
ICAgIEBjaGlsZHJlbi5lYWNoIHt8Y2hpbGR8CisgICAgICAgICAgICBjaGlsZC5jb21wdXRlKGN1
cnJlbnQpCisgICAgICAgICAgICBjdXJyZW50ID0gY2hpbGQucmFuZ2UubGFzdAorICAgICAgICB9
CisKKyAgICAgICAgQHJhbmdlID0gSGVhcFJhbmdlLm5ldyhzdGFydCwgY3VycmVudCkKKyAgICBl
bmQKKworICAgIGRlZiBkdW1wIG91dHB1dAorICAgICAgICBzaGFsbG93RHVtcChvdXRwdXQpCisg
ICAgICAgIGlmIEBwYXJlbnQKKyAgICAgICAgICAgIG91dHB1dC5wcmludCAiLT4gIgorICAgICAg
ICAgICAgQHBhcmVudC5kdW1wKG91dHB1dCkKKyAgICAgICAgZW5kCisgICAgZW5kCisKKyAgICBk
ZWYgc2hhbGxvd0R1bXAob3V0cHV0KQorICAgICAgICBvdXRwdXQucHJpbnQgIiN7QG5hbWV9PCN7
QHJhbmdlLmZpcnN0fSwje0ByYW5nZS5sYXN0fT4iCisgICAgZW5kCisKKyAgICBkZWYgZGVlcER1
bXAgb3V0cHV0LCBpbmRlbnQKKyAgICAgICAgcHJpbnRJbmRlbnQob3V0cHV0LCBpbmRlbnQpCisg
ICAgICAgIHNoYWxsb3dEdW1wKG91dHB1dCkKKyAgICAgICAgaWYgQGNoaWxkcmVuLmVtcHR5Pwor
ICAgICAgICAgICAgb3V0cHV0LnByaW50ICJcbiIKKyAgICAgICAgICAgIHJldHVybgorICAgICAg
ICBlbmQKKworICAgICAgICBvdXRwdXQucHJpbnQgIjpcbiIKKyAgICAgICAgQGNoaWxkcmVuLmVh
Y2gge3xjaGlsZHwKKyAgICAgICAgICAgIGNoaWxkLmRlZXBEdW1wKG91dHB1dCwgaW5kZW50ICsg
MSkKKyAgICAgICAgfQorICAgIGVuZAorCisgICAgZGVmIGdlbmVyYXRlIG91dHB1dAorICAgICAg
ICBvdXRwdXQucHV0cyAiY29uc3RleHByIEpTQzo6RE9NSklUOjpIZWFwUmFuZ2UgI3tAbmFtZX0o
SlNDOjpET01KSVQ6OkhlYXBSYW5nZTo6Q29uc3RFeHByLCAje0ByYW5nZS5maXJzdH0sICN7QHJh
bmdlLmxhc3R9KTsiCisgICAgICAgIEBjaGlsZHJlbi5lYWNoIHt8Y2hpbGR8CisgICAgICAgICAg
ICBjaGlsZC5nZW5lcmF0ZShvdXRwdXQpCisgICAgICAgIH0KKyAgICBlbmQKKworcHJpdmF0ZQor
ICAgIGRlZiBwcmludEluZGVudCBvdXRwdXQsIGluZGVudAorICAgICAgICBpbmRlbnQudGltZXMg
eworICAgICAgICAgICAgb3V0cHV0LnByaW50ICIgICAgIgorICAgICAgICB9CisgICAgZW5kCitl
bmQKKworaGVhZGVyID0gPDwtRU9TCisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisg
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKy8vIEF1dG8tZ2VuZXJhdGVkIGZpbGUuIERvIG5vdCBtb2RpZnkuCisKKyNwcmFn
bWEgb25jZQorCisjaW5jbHVkZSA8ZG9taml0L0RPTUpJVEhlYXBSYW5nZS5oPgorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7IG5hbWVzcGFjZSBET01KSVQgeyBuYW1lc3BhY2UgQWJzdHJhY3RIZWFwUmVw
b3NpdG9yeSB7CitFT1MKKworZm9vdGVyID0gPDwtRU9TCit9IH0gfQorRU9TCisKKyRpbnB1dEZp
bGVOYW1lID0gQVJHVi5zaGlmdAorJG91dHB1dEZpbGVOYW1lID0gQVJHVi5zaGlmdAorRmlsZS5v
cGVuKCRvdXRwdXRGaWxlTmFtZSwgInciKSB7fG91dHB1dHwKKyAgICBGaWxlLm9wZW4oJGlucHV0
RmlsZU5hbWUsICJyYiIpIHt8ZmlsZXwKKyAgICAgICAgdHJlZSA9IFlBTUw6OmxvYWQoZmlsZS5y
ZWFkKCkpCisgICAgICAgIGhlYXAgPSB0cmVlLm1hcCB7fGtleSwgdmFsdWV8CisgICAgICAgICAg
ICBBYnN0cmFjdEhlYXAubmV3KGtleSwgdmFsdWUpCisgICAgICAgIH0uZmlyc3QKKyAgICAgICAg
aGVhcC5jb21wdXRlKDApCisKKyAgICAgICAgb3V0cHV0LnByaW50KGhlYWRlcikKKyAgICAgICAg
b3V0cHV0LnB1dHMoIi8qIERPTUpJVCBBYnN0cmFjdCBIZWFwIFRyZWUuIikKKyAgICAgICAgaGVh
cC5kZWVwRHVtcChvdXRwdXQsIDApCisgICAgICAgIG91dHB1dC5wdXRzKCIqLyIpCisgICAgICAg
IGhlYXAuZ2VuZXJhdGUob3V0cHV0KQorICAgICAgICBvdXRwdXQucHJpbnQoZm9vdGVyKQorICAg
IH0KK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0No
YW5nZUxvZwppbmRleCBmNmQxZjliMmQxZTBjOTVhZDQwYWQ4OTY5N2E1NGQ0ZjBiZTM1NzM0Li4y
ZDg0NTFiZjkwNGViMzdlODlmNTc4ODBiODFiNjIxMjQ4YjBlMDQ1IDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MjIgQEAKKzIwMTYtMTEtMDEgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+
CisKKyAgICAgICAgW0RPTUpJVF0gQWRkIERPTUpJVDo6U2lnbmF0dXJlCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjI5ODAKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGpzL2RvbS9kb21qaXQtYWNjZXNz
b3ItbGljbS5odG1sOgorICAgICAgICAqIGpzL2RvbS9kb21qaXQtZnVuY3Rpb24tZWZmZWN0LXNo
b3VsZC1vdmVybGFwLXdpdGgtY2FsbC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGpz
L2RvbS9kb21qaXQtZnVuY3Rpb24tZWZmZWN0LXNob3VsZC1vdmVybGFwLXdpdGgtY2FsbC5odG1s
OiBBZGRlZC4KKyAgICAgICAgKiBqcy9kb20vZG9taml0LWZ1bmN0aW9uLWV4cGVjdGVkLnR4dDog
QWRkZWQuCisgICAgICAgICoganMvZG9tL2RvbWppdC1mdW5jdGlvbi1saWNtLWV4cGVjdGVkLnR4
dDogQWRkZWQuCisgICAgICAgICoganMvZG9tL2RvbWppdC1mdW5jdGlvbi1saWNtLmh0bWw6IENv
cGllZCBmcm9tIExheW91dFRlc3RzL2pzL2RvbS9kb21qaXQtYWNjZXNzb3ItbGljbS5odG1sLgor
ICAgICAgICAqIGpzL2RvbS9kb21qaXQtZnVuY3Rpb24tdHlwZS1jb250cmFkaWN0aW9uLWV4cGVj
dGVkLnR4dDogQWRkZWQuCisgICAgICAgICoganMvZG9tL2RvbWppdC1mdW5jdGlvbi10eXBlLWNv
bnRyYWRpY3Rpb24uaHRtbDogQ29waWVkIGZyb20gTGF5b3V0VGVzdHMvanMvZG9tL2RvbWppdC1h
Y2Nlc3Nvci1saWNtLmh0bWwuCisgICAgICAgICoganMvZG9tL2RvbWppdC1mdW5jdGlvbi10eXBl
LWZhaWx1cmUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBqcy9kb20vZG9taml0LWZ1
bmN0aW9uLXR5cGUtZmFpbHVyZS5odG1sOiBDb3BpZWQgZnJvbSBMYXlvdXRUZXN0cy9qcy9kb20v
ZG9taml0LWFjY2Vzc29yLWxpY20uaHRtbC4KKyAgICAgICAgKiBqcy9kb20vZG9taml0LWZ1bmN0
aW9uLmh0bWw6IEFkZGVkLgorCiAyMDE2LTEwLTMwICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxl
LmNvbT4KIAogICAgICAgICBNb3ZlIEVsZW1lbnQsIE5hbWVkTm9kZU1hcCwgYW5kIERPTVN0cmlu
Z01hcCBmcm9tIEV4Y2VwdGlvbkNvZGUgdG8gRXhjZXB0aW9uCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9qcy9kb20vZG9taml0LWFjY2Vzc29yLWxpY20uaHRtbCBiL0xheW91dFRlc3RzL2pzL2Rv
bS9kb21qaXQtYWNjZXNzb3ItbGljbS5odG1sCmluZGV4IGU1NjNlYmE4OWZmY2RhMjkxYjUyNGRj
ZGY3NTBlMmEzMDZhZTMyMDUuLjQwZDU1NjBkYTA1MzljYmYwODRhOWUxZDFlZjNmZTNmMWRjMzU0
NGQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2pzL2RvbS9kb21qaXQtYWNjZXNzb3ItbGljbS5o
dG1sCisrKyBiL0xheW91dFRlc3RzL2pzL2RvbS9kb21qaXQtYWNjZXNzb3ItbGljbS5odG1sCkBA
IC0xLDE0ICsxLDMgQEAKLTwhRE9DVFlQRSBIVE1MPgotPGh0bWwgbGFuZz0iZW4iPgotPGhlYWQ+
Ci08bWV0YSBjaGFyc2V0PSJVVEYtOCI+Ci08L2hlYWQ+Ci08Ym9keT4KLTxzY3JpcHQ+Ci0KLTwv
c2NyaXB0PgotPC9ib2R5PgotPC9odG1sPgogPCFET0NUWVBFIGh0bWw+CiA8aHRtbD4KIDxoZWFk
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvZG9tL2RvbWppdC1mdW5jdGlvbi1lZmZlY3Qt
c2hvdWxkLW92ZXJsYXAtd2l0aC1jYWxsLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2pzL2Rv
bS9kb21qaXQtZnVuY3Rpb24tZWZmZWN0LXNob3VsZC1vdmVybGFwLXdpdGgtY2FsbC1leHBlY3Rl
ZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMTFkYzE5NmEzMmUyODhjMTJmNTE0NTYxY2ZjMjE0ZDI5ZWI5Yzgx
NwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2pzL2RvbS9kb21qaXQtZnVuY3Rpb24t
ZWZmZWN0LXNob3VsZC1vdmVybGFwLXdpdGgtY2FsbC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwx
MCBAQAorVGVzdCBmdW5jdGlvbiBjYWxscyBzaG91bGQgb3ZlcmxhcCB3aXRoIGVmZmVjdHMgb2Yg
RE9NSklUIGZ1bmN0aW9ucy4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9m
ICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1Mg
dGVzdCgpIGlzIHRydWUKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBD
T01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9kb20vZG9taml0LWZ1bmN0aW9u
LWVmZmVjdC1zaG91bGQtb3ZlcmxhcC13aXRoLWNhbGwuaHRtbCBiL0xheW91dFRlc3RzL2pzL2Rv
bS9kb21qaXQtZnVuY3Rpb24tZWZmZWN0LXNob3VsZC1vdmVybGFwLXdpdGgtY2FsbC5odG1sCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjI4Y2IzOTJiMjk0MWJiYjhkMzMxYTc5MzMxZDU4YzNmYTU4MzA1ZTUKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9qcy9kb20vZG9taml0LWZ1bmN0aW9uLWVmZmVjdC1z
aG91bGQtb3ZlcmxhcC13aXRoLWNhbGwuaHRtbApAQCAtMCwwICsxLDMzIEBACis8IURPQ1RZUEUg
aHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRl
c3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0idGFyZ2V0Ij48
L2Rpdj4KKzwvZGl2PgorCis8c2NyaXB0PgorZGVzY3JpcHRpb24oJ1Rlc3QgZnVuY3Rpb24gY2Fs
bHMgc2hvdWxkIG92ZXJsYXAgd2l0aCBlZmZlY3RzIG9mIERPTUpJVCBmdW5jdGlvbnMuJyk7CisK
K2Z1bmN0aW9uIHRlc3QoKQoreworICAgIHZhciB0YXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgndGFyZ2V0Jyk7CisgICAgdGFyZ2V0LnNldEF0dHJpYnV0ZSgiY29jb2EiLCAiMCIpOwor
ICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMWU0OyArK2kpIHsKKyAgICAgICAgdmFyIHJldCA9IHRh
cmdldC5nZXRBdHRyaWJ1dGUoImNvY29hIik7CisgICAgICAgIGlmIChyZXQgIT09IFN0cmluZyhp
KSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgdGFyZ2V0LnNldEF0dHJpYnV0
ZSgiY29jb2EiLCBTdHJpbmcoaSArIDEpKTsKKyAgICAgICAgdmFyIHJldCA9IHRhcmdldC5nZXRB
dHRyaWJ1dGUoImNvY29hIik7CisgICAgICAgIGlmIChyZXQgPT09IFN0cmluZyhpKSkKKyAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3Nob3Vs
ZEJlVHJ1ZShgdGVzdCgpYCk7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJj
ZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2pzL2RvbS9kb21qaXQtZnVuY3Rpb24tZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvanMvZG9tL2RvbWppdC1mdW5jdGlvbi1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NDVlNTZlYmRjZDlmNmYxODZjNDdjZTc2OGMxNWMyMjVlYmUyZDBjNwotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2pzL2RvbS9kb21qaXQtZnVuY3Rpb24tZXhwZWN0ZWQudHh0CkBAIC0w
LDAgKzEsMTAgQEAKK1Rlc3QgRE9NSklUIGZ1bmN0aW9ucyB3b3JrLgorCitPbiBzdWNjZXNzLCB5
b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVT
VCBDT01QTEVURSIuCisKKworUEFTUyBBbGwgdGVzdHMgcGFzc2VkLgorUEFTUyBzdWNjZXNzZnVs
bHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2pzL2RvbS9kb21qaXQtZnVuY3Rpb24tbGljbS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy9qcy9kb20vZG9taml0LWZ1bmN0aW9uLWxpY20tZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmYx
M2MwMzMwNTk2NjJlNTU4YmM2ZmI5ZDczOWFiMzdlNzk2MWM4ZmIKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9qcy9kb20vZG9taml0LWZ1bmN0aW9uLWxpY20tZXhwZWN0ZWQudHh0CkBA
IC0wLDAgKzEsOCBAQAorVGVzdCBET01KSVQgZnVuY3Rpb24gd2lsbCBiZSBMSUNNLWVkLgorCitP
biBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xs
b3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRy
dWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9kb20vZG9t
aml0LWZ1bmN0aW9uLWxpY20uaHRtbCBiL0xheW91dFRlc3RzL2pzL2RvbS9kb21qaXQtZnVuY3Rp
b24tbGljbS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjVmMmUzOTlkZDM1OWUxYzRmY2I0ZGZkZTJiYWNlOWUx
YTBkNDRkMzkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9qcy9kb20vZG9taml0LWZ1
bmN0aW9uLWxpY20uaHRtbApAQCAtMCwwICsxLDM1IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1s
PgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48
L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2Pgor
PGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisKKzxkaXYgaWQ9InBhcmVudE5vZGUiPgorPGRpdiBp
ZD0icHJldmlvdXNTaWJsaW5nIj48L2Rpdj48ZGl2IGlkPSJ0YXJnZXQiPjxkaXYgaWQ9ImZpcnN0
Q2hpbGQiPjwvZGl2PjxkaXYgaWQ9Imxhc3RDaGlsZCI+PC9kaXY+PC9kaXY+PGRpdiBpZD0ibmV4
dFNpYmxpbmciPjwvZGl2PgorPC9kaXY+CisKKzxzY3JpcHQ+CitkZXNjcmlwdGlvbignVGVzdCBE
T01KSVQgZnVuY3Rpb24gd2lsbCBiZSBMSUNNLWVkLicpOworCitmdW5jdGlvbiB0ZXN0KCkgewor
ICAgIHZhciBkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKKyAgICB2YXIgcmV0
ID0gImludmFsaWQiOworICAgIGRpdi5zZXRBdHRyaWJ1dGUoImNvY29hIiwgIkNvY29hIik7Cisg
ICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxZTQ7ICsraSkKKyAgICAgICAgcmV0ID0gZGl2LmdldEF0
dHJpYnV0ZSgiY29jb2EiKTsKKyAgICByZXR1cm4gcmV0OworfQordmFyIHJlc3VsdDsKKyhmdW5j
dGlvbiAoKSB7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxMDA7ICsraSkgeworICAgICAgICBy
ZXN1bHQgPSB0ZXN0KCk7CisgICAgICAgIHNob3VsZEJlKGByZXN1bHRgLCBgIkNvY29hImAsIHRy
dWUpOworICAgIH0KK30oKSk7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJj
ZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2pzL2RvbS9kb21qaXQtZnVuY3Rpb24tdHlwZS1jb250cmFkaWN0aW9u
LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2pzL2RvbS9kb21qaXQtZnVuY3Rpb24tdHlwZS1j
b250cmFkaWN0aW9uLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zZDY4NzdkNGE4MDA2ODhiMjE2
NzdiZWZhZmZlZWZmZDhhYjBiNzk2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMv
ZG9tL2RvbWppdC1mdW5jdGlvbi10eXBlLWNvbnRyYWRpY3Rpb24tZXhwZWN0ZWQudHh0CkBAIC0w
LDAgKzEsOCBAQAorVGVzdCBET01KSVQgZnVuY3Rpb24gd2lsbCBjYXVzZSB0eXBlIGNvbnRyYWRp
Y3Rpb24gZ2l2aW5nIHVwLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2Yg
IlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKK1BBU1Mgc3Vj
Y2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9qcy9kb20vZG9taml0LWZ1bmN0aW9uLXR5cGUtY29udHJhZGljdGlvbi5odG1s
IGIvTGF5b3V0VGVzdHMvanMvZG9tL2RvbWppdC1mdW5jdGlvbi10eXBlLWNvbnRyYWRpY3Rpb24u
aHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi44NGRjNWI2NzY5NDE4ZTk2NTU1YmFiODM4N2MzMDYwMzRhZjVjMGMw
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMvZG9tL2RvbWppdC1mdW5jdGlvbi10
eXBlLWNvbnRyYWRpY3Rpb24uaHRtbApAQCAtMCwwICsxLDM1IEBACis8IURPQ1RZUEUgaHRtbD4K
KzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJl
LmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwv
ZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisKKzxkaXYgaWQ9InBhcmVudE5vZGUiPgor
PGRpdiBpZD0icHJldmlvdXNTaWJsaW5nIj48L2Rpdj48ZGl2IGlkPSJ0YXJnZXQiPjxkaXYgaWQ9
ImZpcnN0Q2hpbGQiPjwvZGl2PjxkaXYgaWQ9Imxhc3RDaGlsZCI+PC9kaXY+PC9kaXY+PGRpdiBp
ZD0ibmV4dFNpYmxpbmciPjwvZGl2PgorPC9kaXY+CisKKzxzY3JpcHQ+CitkZXNjcmlwdGlvbign
VGVzdCBET01KSVQgZnVuY3Rpb24gd2lsbCBjYXVzZSB0eXBlIGNvbnRyYWRpY3Rpb24gZ2l2aW5n
IHVwLicpOworCit2YXIgZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CitkaXYu
c2V0QXR0cmlidXRlKCJjb2NvYSIsICJDb2NvYSIpOworZnVuY3Rpb24gdGVzdChkaXYpIHsKKyAg
ICB2YXIgcmV0ID0gImludmFsaWQiOworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMWU0OyArK2kp
CisgICAgICAgIHJldCA9IGRpdi5nZXRBdHRyaWJ1dGUoMjAwKTsKKyAgICByZXR1cm4gcmV0Owor
fQordmFyIHJlc3VsdDsKKyhmdW5jdGlvbiAoKSB7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAx
MDA7ICsraSkgeworICAgICAgICByZXN1bHQgPSB0ZXN0KGRpdik7CisgICAgICAgIHNob3VsZEJl
KGByZXN1bHRgLCBgbnVsbGAsIHRydWUpOworICAgIH0KK30oKSk7Cis8L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9k
eT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL2RvbS9kb21qaXQtZnVuY3Rp
b24tdHlwZS1mYWlsdXJlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2pzL2RvbS9kb21qaXQt
ZnVuY3Rpb24tdHlwZS1mYWlsdXJlLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yYzEwMmIzNzZi
ZjgyMzJiNDJiZDFhM2NlNDFkZTE3NzFhMjdiNmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvanMvZG9tL2RvbWppdC1mdW5jdGlvbi10eXBlLWZhaWx1cmUtZXhwZWN0ZWQudHh0CkBA
IC0wLDAgKzEsOCBAQAorVGVzdCBET01KSVQgZnVuY3Rpb24gd2lsbCBjYXVzZSBCYWRUeXBlIE9T
UiBleGl0cy4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBt
ZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCitQQVNTIHN1Y2Nlc3NmdWxs
eVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvanMvZG9tL2RvbWppdC1mdW5jdGlvbi10eXBlLWZhaWx1cmUuaHRtbCBiL0xheW91dFRlc3Rz
L2pzL2RvbS9kb21qaXQtZnVuY3Rpb24tdHlwZS1mYWlsdXJlLmh0bWwKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmI3
NjYxNDE4N2VkYTg3ZGFjMjZjMjBhNmUzMTIyY2YwNjU0YTgxNgotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2pzL2RvbS9kb21qaXQtZnVuY3Rpb24tdHlwZS1mYWlsdXJlLmh0bWwKQEAg
LTAsMCArMSwzOSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBz
cmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8
Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwv
ZGl2PgorCis8ZGl2IGlkPSJwYXJlbnROb2RlIj4KKzxkaXYgaWQ9InByZXZpb3VzU2libGluZyI+
PC9kaXY+PGRpdiBpZD0idGFyZ2V0Ij48ZGl2IGlkPSJmaXJzdENoaWxkIj48L2Rpdj48ZGl2IGlk
PSJsYXN0Q2hpbGQiPjwvZGl2PjwvZGl2PjxkaXYgaWQ9Im5leHRTaWJsaW5nIj48L2Rpdj4KKzwv
ZGl2PgorCis8c2NyaXB0PgorZGVzY3JpcHRpb24oJ1Rlc3QgRE9NSklUIGZ1bmN0aW9uIHdpbGwg
Y2F1c2UgQmFkVHlwZSBPU1IgZXhpdHMuJyk7CisKK3ZhciBkaXYgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50KCdkaXYnKTsKK2Rpdi5zZXRBdHRyaWJ1dGUoImNvY29hIiwgIkNvY29hIik7CitmdW5j
dGlvbiB0ZXN0KGRpdiwgbmFtZSkgeworICAgIHZhciByZXQgPSAiaW52YWxpZCI7CisgICAgZm9y
ICh2YXIgaSA9IDA7IGkgPCAxZTQ7ICsraSkKKyAgICAgICAgcmV0ID0gZGl2LmdldEF0dHJpYnV0
ZShuYW1lKTsKKyAgICByZXR1cm4gcmV0OworfQordmFyIHJlc3VsdDsKKyhmdW5jdGlvbiAoKSB7
CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxMDA7ICsraSkgeworICAgICAgICByZXN1bHQgPSB0
ZXN0KGRpdiwgJ2NvY29hJyk7CisgICAgICAgIHNob3VsZEJlKGByZXN1bHRgLCBgIkNvY29hImAs
IHRydWUpOworICAgIH0KKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IDEwMDsgKytpKSB7CisgICAg
ICAgIHJlc3VsdCA9IHRlc3QoZGl2LCA0MDApOworICAgICAgICBzaG91bGRCZShgcmVzdWx0YCwg
YG51bGxgLCB0cnVlKTsKKyAgICB9Cit9KCkpOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4v
Li4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9kb20vZG9taml0LWZ1bmN0aW9uLmh0bWwgYi9M
YXlvdXRUZXN0cy9qcy9kb20vZG9taml0LWZ1bmN0aW9uLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTFlYThh
NTk5ZDg5NjVkZTVhMDNhODU0ZDQ5NDNkZTViOWFjM2Q2NAotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2pzL2RvbS9kb21qaXQtZnVuY3Rpb24uaHRtbApAQCAtMCwwICsxLDU4IEBACis8
IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3Vy
Y2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0i
dGFyZ2V0IiBjb2NvYT0iY29jb2EiPjxkaXYgaWQ9ImZpcnN0Q2hpbGQiPjwvZGl2PjxkaXYgaWQ9
Imxhc3RDaGlsZCI+PC9kaXY+PC9kaXY+Cis8L2Rpdj4KKworPHNjcmlwdD4KK2Rlc2NyaXB0aW9u
KCdUZXN0IERPTUpJVCBmdW5jdGlvbnMgd29yay4nKTsKK3ZhciBkaXY7CisoZnVuY3Rpb24gKCkg
eworICAgIGRpdiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0YXJnZXQnKTsKKworICAgIGZ1
bmN0aW9uIGEoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGRpdi5nZXRBdHRyaWJ1dGUoJ2NvY29h
JykgPT09ICdjb2NvYSc7CisgICAgfQorCisgICAgZnVuY3Rpb24gYigpCisgICAgeworICAgICAg
ICByZXR1cm4gZGl2LmdldEF0dHJpYnV0ZU5vZGUoJ2NvY29hJykubm9kZVR5cGUgPT09IE5vZGUu
QVRUUklCVVRFX05PREU7CisgICAgfQorCisgICAgZnVuY3Rpb24gYygpCisgICAgeworICAgICAg
ICByZXR1cm4gZGl2LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdkaXYnKS5sZW5ndGggPT09IDI7Cisg
ICAgfQorCisgICAgZnVuY3Rpb24gZCgpCisgICAgeworICAgICAgICByZXR1cm4gZGl2Lmhhc0F0
dHJpYnV0ZSgnY29jb2EnKSA9PT0gdHJ1ZTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBtYWluKCkK
KyAgICB7CisgICAgICAgIGlmICghYSgpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
ICAgICBpZiAoIWIoKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgaWYgKCFj
KCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIGlmICghZCgpKQorICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICBm
b3IgKHZhciBpID0gMDsgaSA8IDFlNDsgKytpKSB7CisgICAgICAgIGlmICghbWFpbigpKQorICAg
ICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJlcnJvciIpOworICAgIH0KKyAgICB0ZXN0UGFzc2Vk
KCJBbGwgdGVzdHMgcGFzc2VkLiIpOworfSgpKTsKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4u
Ly4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1s
Pgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>293641</attachid>
            <date>2016-11-01 22:59:01 -0700</date>
            <delta_ts>2016-11-01 23:40:57 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-162980-20161101225502.patch</filename>
            <type>text/plain</type>
            <size>177668</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA4MjcwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBk
ZWFmOGMwYmI4YTZkOGM5ZjEwYmE4MDllY2VmZTJkOWI0MDE2ZDljLi5iMWNmN2YxMjIzOWFhMDMy
YTg1NTY3MmI5YmUwZTA4N2Y4NTE2ZDE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMzMgQEAKKzIwMTYtMTEtMDEgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFp
bC5jb20+CisKKyAgICAgICAgW0RPTUpJVF0gQWRkIERPTUpJVDo6U2lnbmF0dXJlCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjI5ODAKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGludHJv
ZHVjZXMgYSBuZXcgbWVjaGFuaXNtIGNhbGxlZCBET01KSVQ6OlNpZ25hdHVyZS4gV2UgY2FuIGFu
bm90YXRlIHRoZSBmdW5jdGlvbiB3aXRoIERPTUpJVDo6U2lnbmF0dXJlLgorICAgICAgICBET01K
SVQ6OlNpZ25hdHVyZSBoYXMgdHlwZSBpbmZvcm1hdGlvbiBvZiB0aGF0IGZ1bmN0aW9uLiBBbmQg
aXQgYWxzbyBtYWludGFpbnMgdGhlIGVmZmVjdCBvZiB0aGUgZnVuY3Rpb24gYW5kIHRoZQorICAg
ICAgICBwb2ludGVyIHRvIHRoZSB1bnNhZmUgZnVuY3Rpb24uIFRoZSB1bnNhZmUgZnVuY3Rpb24g
bWVhbnMgdGhlIGZ1bmN0aW9uIHdpdGhvdXQgdHlwZSBhbmQgYXJndW1lbnQgY291bnQgY2hlY2tz
LgorICAgICAgICBCeSB1c2luZyB0aGVzZSBpbmZvcm1hdGlvbiwgd2UgY2FuIHNlcGFyYXRlIHR5
cGUgYW5kIGFyZ3VtZW50IGNvdW50IGNoZWNrcyBmcm9tIHRoZSBmdW5jdGlvbi4gQW5kIHdlIGNh
biBlbWl0CisgICAgICAgIHRoZXNlIHRoaW5ncyBhcyBERkcgY2hlY2tzIGFuZCBjb252ZXJ0IHRo
ZSBmdW5jdGlvbiBjYWxsIGl0c2VsZiB0byBDYWxsRE9NIG5vZGUuIENhbGxET00gbm9kZSBjYW4g
Y2FsbCB0aGUgdW5zYWZlCisgICAgICAgIGZ1bmN0aW9uIGRpcmVjdGx5IHdpdGhvdXQgYW55IGNo
ZWNrcy4gRnVydGhlcm1vcmUsIHRoaXMgQ2FsbERPTSBub2RlIGNhbiByZXByZXNlbnQgaXRzIG93
biBjbG9iYmVyaXppbmcgcnVsZXMgYmFzZWQKKyAgICAgICAgb24gRE9NSklUOjpFZmZlY3QgbWFp
bnRhaW5lZCBieSBET01KSVQ6OlNpZ25hdHVyZS4gSXQgYWxsb3dzIHVzIHRvIG1ha2Ugb3BhcXVl
IENhbGwgbm9kZSB0byBhIENhbGxET00gbm9kZSB0aGF0CisgICAgICAgIG1lcmVseSByZWFkcyBz
b21lIHBhcnQgb2YgaGVhcC4gVGhlc2UgY2hhbmdlcyAoMSkgY2FuIGRyb3AgZHVwbGljYXRlIHR5
cGUgY2hlY2tzIGluIERGRywgKDIpIG9mZmVyIGFiaWxpdHkgdG8gbW92ZQorICAgICAgICBDYWxs
RE9NIG5vZGUgdG8gc29tZXdoZXJlLCBhbmQgKDMpIHRyYWNrIG1vcmUgZGV0YWlsZWQgaGVhcCBy
ZWFkcyBhbmQgd3JpdGVzIG9mIENhbGxET00gbm9kZXMuCisKKyAgICAgICAgV2UgZmlyc3QgZW1p
dCBDYWxsIG5vZGUgd2l0aCBET01KSVQ6OlNpZ25hdHVyZSBpbiBERkdCeXRlQ29kZVBhcnNlci4g
QW5kIGluIHRoZSBmaXh1cCBwaGFzZSwgd2UgYXR0ZW1wdCB0byBsb3dlcgorICAgICAgICBDYWxs
IG5vZGUgdG8gQ2FsbERPTSBub2RlIHdpdGggY2hlY2tzICYgZWRnZSBmaWx0ZXJzLiBUaGlzIGlz
IGJlY2F1c2Ugd2UgZG8gbm90IGtub3cgdGhlIHR5cGUgcHJlZGljdGlvbnMgaW4KKyAgICAgICAg
REZHQnl0ZUNvZGVQYXJzZXIgcGhhc2UuIElmIHdlIGFsd2F5cyBlbWl0IENhbGxET00gbm9kZSBp
biBERkdCeXRlQ29kZVBhcnNlciwgaWYgd2UgZXZhbHVhdGUgYGRpdi5nZXRBdHRyaWJ1dGUodHJ1
ZSlgCisgICAgICAgIHRoaW5neSwgdGhlIFVuY291bnRhYmxlIE9TUiBleGl0cyByZXBlYXRlZGx5
IGhhcHBlbiBiZWNhdXNlIEFJIGZpZ3VyZXMgb3V0IHRoZSBhYnN0cmFjdCB2YWx1ZSBpcyBjbGVh
cmVkLgorCisgICAgICAgIEN1cnJlbnRseSwgRE9NSklUIHNpZ25hdHVyZSBvbmx5IGFsbG93cyB0
aGUgdHlwZXMgdGhhdCBjYW4gcmVzaWRlIGluIEdQUi4gVGhpcyBpcyBiZWNhdXNlIHRoZSB0eXBl
cyBvZiB0aGUgdW5zYWZlCisgICAgICAgIGZ1bmN0aW9uIGFyZ3VtZW50cyBhcmUgcmVwcmVzZW50
ZWQgYXMgdGhlIHNlcXVlbmNlIG9mIHZvaWQqLiBJbiB0aGUgZnV0dXJlLCB3ZSB3aWxsIGV4dGVu
ZCB0byBhY2NlcHQgb3RoZXIgdHlwZXMgbGlrZQorICAgICAgICBmbG9hdCwgZG91YmxlIGV0Yy4K
KworICAgICAgICBXZSBhbm5vdGF0ZSBzZXZlcmFsIGZ1bmN0aW9ucyBpbiBFbGVtZW50LiBJbiBw
YXJ0aWN1bGFyLCB3ZSBhbm5vdGF0ZSBFbGVtZW50OjpnZXRBdHRyaWJ1dGUuIFRoaXMgYWxsb3dz
IHVzIHRvIHBlcmZvcm0KKyAgICAgICAgTElDTSBpbiBEcm9tYWVvIGRvbS1hdHRyIHRlc3QuIElu
IHRoZSBEcm9tYWVvIGRvbS1hdHRyIGdldEF0dHJpYnV0ZSB0ZXN0LCB3ZSBjYW4gc2VlIDMyeCBp
bXByb3ZlbWVudC4gKDEzNDk3NC44IHYucy4gNDIwMy40KQorCisgICAgICAgICogSmF2YVNjcmlw
dENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBieXRlY29kZS9DYWxs
VmFyaWFudC5oOgorICAgICAgICAoSlNDOjpDYWxsVmFyaWFudDo6ZnVuY3Rpb25FeGVjdXRhYmxl
KToKKyAgICAgICAgKEpTQzo6Q2FsbFZhcmlhbnQ6Om5hdGl2ZUV4ZWN1dGFibGUpOgorICAgICAg
ICAoSlNDOjpDYWxsVmFyaWFudDo6c2lnbmF0dXJlRm9yKToKKyAgICAgICAgKiBieXRlY29kZS9T
cGVjdWxhdGVkVHlwZS5oOgorICAgICAgICAoSlNDOjppc05vdFN0cmluZ1NwZWN1bGF0aW9uKToK
KyAgICAgICAgKEpTQzo6aXNOb3RJbnQzMlNwZWN1bGF0aW9uKToKKyAgICAgICAgKEpTQzo6aXNO
b3RCb29sZWFuU3BlY3VsYXRpb24pOgorICAgICAgICAqIGRmZy9ERkdBYnN0cmFjdEludGVycHJl
dGVySW5saW5lcy5oOgorICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0SW50ZXJwcmV0ZXI8QWJz
dHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyk6CisgICAgICAgICogZGZnL0RGR0J5dGVD
b2RlUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6YWRkQ2Fs
bCk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUNhbGwpOgorICAg
ICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjphdHRlbXB0VG9JbmxpbmVDYWxsKToKKyAg
ICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW5saW5pbmcpOgorICAgICAg
ICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVET01KSVRDYWxsKToKKyAgICAgICAg
KEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayk6CisgICAgICAgICogZGZnL0RG
R0Nsb2JiZXJpemUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpjbG9iYmVyaXplKToKKyAgICAgICAg
KiBkZmcvREZHRG9lc0dDLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpkb2VzR0MpOgorICAgICAg
ICAqIGRmZy9ERkdGaXh1cFBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpGaXh1cFBoYXNl
OjpmaXh1cE5vZGUpOgorICAgICAgICAoSlNDOjpERkc6OkZpeHVwUGhhc2U6OmF0dGVtcHRUb01h
a2VDYWxsRE9NKToKKyAgICAgICAgKEpTQzo6REZHOjpGaXh1cFBoYXNlOjpmaXh1cENoZWNrRE9N
KToKKyAgICAgICAgKEpTQzo6REZHOjpGaXh1cFBoYXNlOjpmaXh1cENhbGxET00pOgorICAgICAg
ICAqIGRmZy9ERkdOb2RlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpjb252ZXJ0VG9D
YWxsRE9NKToKKyAgICAgICAgKiBkZmcvREZHTm9kZS5oOgorICAgICAgICAoSlNDOjpERkc6Ok5v
ZGU6Omhhc0hlYXBQcmVkaWN0aW9uKToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpzaG91bGRT
cGVjdWxhdGVOb3RJbnQzMik6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6c2hvdWxkU3BlY3Vs
YXRlTm90Qm9vbGVhbik6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6c2hvdWxkU3BlY3VsYXRl
Tm90U3RyaW5nKToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpoYXNTaWduYXR1cmUpOgorICAg
ICAgICAoSlNDOjpERkc6Ok5vZGU6OnNpZ25hdHVyZSk6CisgICAgICAgICogZGZnL0RGR05vZGVU
eXBlLmg6CisgICAgICAgICogZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcDoK
KyAgICAgICAgKiBkZmcvREZHU2FmZVRvRXhlY3V0ZS5oOgorICAgICAgICAoSlNDOjpERkc6OnNh
ZmVUb0V4ZWN1dGUpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHA6CisgICAg
ICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVDYWxsRE9NKToKKyAgICAgICAg
KiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuaDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2
ZUpJVDo6Y2FsbE9wZXJhdGlvbik6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJf
NjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToKKyAg
ICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGRvbWppdC9ET01KSVRFZmZlY3Qu
aDoKKyAgICAgICAgKEpTQzo6RE9NSklUOjpFZmZlY3Q6OkVmZmVjdCk6CisgICAgICAgIChKU0M6
OkRPTUpJVDo6RWZmZWN0Ojpmb3JXcml0ZSk6CisgICAgICAgIChKU0M6OkRPTUpJVDo6RWZmZWN0
Ojpmb3JSZWFkKToKKyAgICAgICAgKEpTQzo6RE9NSklUOjpFZmZlY3Q6OmZvclJlYWRXcml0ZSk6
CisgICAgICAgIChKU0M6OkRPTUpJVDo6RWZmZWN0Ojpmb3JQdXJlKToKKyAgICAgICAgKEpTQzo6
RE9NSklUOjpFZmZlY3Q6OmZvckRlZik6CisgICAgICAgIChKU0M6OkRPTUpJVDo6RWZmZWN0Ojpt
dXN0R2VuZXJhdGUpOgorICAgICAgICBJbiBjbGFuZywgd2UgY2Fubm90IG1ha2UgdGhpcyBFZmZl
Y3QgY29uc3RydWN0b3IgY29uc3RleHByIGlmIHdlIHVzZSBPcHRpb25hbDxIZWFwUmFuZ2U+Lgor
ICAgICAgICBTbyB3ZSB1c2UgSGVhcFJhbmdlOjp0b3AoKSBmb3IgTnVsbG9wdCBkZWYgbm93Lgor
CisgICAgICAgICogZG9taml0L0RPTUpJVEhlYXBSYW5nZS5oOgorICAgICAgICAoSlNDOjpET01K
SVQ6OkhlYXBSYW5nZTo6ZnJvbVJhdyk6CisgICAgICAgIChKU0M6OkRPTUpJVDo6SGVhcFJhbmdl
OjpvcGVyYXRvcj09KToKKyAgICAgICAgKEpTQzo6RE9NSklUOjpIZWFwUmFuZ2U6Om9wZXJhdG9y
IT0pOgorICAgICAgICAoSlNDOjpET01KSVQ6OkhlYXBSYW5nZTo6ZnJvbUNvbnN0YW50KToKKyAg
ICAgICAgKiBkb21qaXQvRE9NSklUU2lnbmF0dXJlLmg6IENvcGllZCBmcm9tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kb21qaXQvRE9NSklURWZmZWN0LmguCisgICAgICAgIChKU0M6OkRPTUpJVDo6
U2lnbmF0dXJlOjpTaWduYXR1cmUpOgorICAgICAgICAoSlNDOjpET01KSVQ6OlNpZ25hdHVyZTo6
YXJndW1lbnRDb3VudCk6CisgICAgICAgIChKU0M6OkRPTUpJVDo6U2lnbmF0dXJlOjpjaGVja0RP
TSk6CisgICAgICAgICogZnRsL0ZUTENhcGFiaWxpdGllcy5jcHA6CisgICAgICAgIChKU0M6OkZU
TDo6Y2FuQ29tcGlsZSk6CisgICAgICAgICogZnRsL0ZUTExvd2VyREZHVG9CMy5jcHA6CisgICAg
ICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVOb2RlKToKKyAgICAgICAg
KEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZUNhbGxET00pOgorICAgICAgICAq
IGppdC9KSVRPcGVyYXRpb25zLmg6CisgICAgICAgICogaml0L0pJVFRodW5rcy5jcHA6CisgICAg
ICAgIChKU0M6OkpJVFRodW5rczo6aG9zdEZ1bmN0aW9uU3R1Yik6CisgICAgICAgICogaml0L0pJ
VFRodW5rcy5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNCb3VuZEZ1bmN0aW9uLmNwcDoKKyAgICAg
ICAgKEpTQzo6SlNCb3VuZEZ1bmN0aW9uOjpjcmVhdGUpOgorICAgICAgICAqIHJ1bnRpbWUvSlND
ZWxsLmg6CisgICAgICAgICogcnVudGltZS9KU0Z1bmN0aW9uLmNwcDoKKyAgICAgICAgKEpTQzo6
SlNGdW5jdGlvbjo6Y3JlYXRlKToKKyAgICAgICAgKiBydW50aW1lL0pTRnVuY3Rpb24uaDoKKyAg
ICAgICAgKiBydW50aW1lL0pTTmF0aXZlU3RkRnVuY3Rpb24uY3BwOgorICAgICAgICAoSlNDOjpK
U05hdGl2ZVN0ZEZ1bmN0aW9uOjpjcmVhdGUpOgorICAgICAgICAqIHJ1bnRpbWUvSlNPYmplY3Qu
Y3BwOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6cHV0RGlyZWN0TmF0aXZlRnVuY3Rpb24pOgor
ICAgICAgICAqIHJ1bnRpbWUvSlNPYmplY3QuaDoKKyAgICAgICAgKiBydW50aW1lL0xvb2t1cC5o
OgorICAgICAgICAoSlNDOjpIYXNoVGFibGVWYWx1ZTo6ZnVuY3Rpb25MZW5ndGgpOgorICAgICAg
ICAoSlNDOjpIYXNoVGFibGVWYWx1ZTo6c2lnbmF0dXJlKToKKyAgICAgICAgKEpTQzo6cmVpZnlT
dGF0aWNQcm9wZXJ0eSk6CisgICAgICAgICogcnVudGltZS9OYXRpdmVFeGVjdXRhYmxlLmNwcDoK
KyAgICAgICAgKEpTQzo6TmF0aXZlRXhlY3V0YWJsZTo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6
TmF0aXZlRXhlY3V0YWJsZTo6TmF0aXZlRXhlY3V0YWJsZSk6CisgICAgICAgICogcnVudGltZS9O
YXRpdmVFeGVjdXRhYmxlLmg6CisgICAgICAgICogcnVudGltZS9Qcm9wZXJ0eVNsb3QuaDoKKyAg
ICAgICAgKiBydW50aW1lL1ZNLmNwcDoKKyAgICAgICAgKEpTQzo6Vk06OmdldEhvc3RGdW5jdGlv
bik6CisgICAgICAgICogcnVudGltZS9WTS5oOgorCiAyMDE2LTExLTAxICBSeW9zdWtlIE5pd2Eg
IDxybml3YUB3ZWJraXQub3JnPgogCiAgICAgICAgIFJlbW92ZSBDVVNUT01fRUxFTUVOVFMgYnVp
bGQgZmxhZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCmluZGV4IDlhZWRlNzYzNjFjZDQ1NWIwMTcwZDIyMTk1YzQ5MjVjYmRl
NTQzYjAuLjU1NTk0MTQ2MzRmZDJlODc1MmYzNzI4OTRmNGFiOGRlYTNmMTcwNzkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cKQEAgLTEsMyArMSw5OCBAQAorMjAxNi0xMS0wMSAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUu
dGVhQGdtYWlsLmNvbT4KKworICAgICAgICBbRE9NSklUXSBBZGQgRE9NSklUOjpTaWduYXR1cmUK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2Mjk4MAor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdlIGludHJv
ZHVjZSBET01KSVQ6OlNpZ25hdHVyZS4gVGhpcyBzaWduYXR1cmUgb2JqZWN0IGlzIGF1dG9tYXRp
Y2FsbHkgZ2VuZXJhdGVkIGJ5IElETCBjb2RlIGdlbmVyYXRvci4KKyAgICAgICAgSXQgaG9sZHMg
KDEpIHR5cGVzLCAoMikgcG9pbnRlciB0byB0aGUgdW5zYWZlIGZ1bmN0aW9uICh0aGUgZnVuY3Rp
b24gd2l0aG91dCBjaGVja3MpLCBhbmQgKDMpIHRoZSBlZmZlY3QKKyAgICAgICAgb2YgdGhlIGZ1
bmN0aW9uLiBXZSB1c2UgY29uc3RleHByIHRvIGluaXRpYWxpemUgRE9NSklUOjpTaWduYXR1cmUg
d2l0aG91dCBpbnZva2luZyBnbG9iYWwgY29uc3RydWN0b3JzLgorICAgICAgICBUaHVzIHRoZSBj
b250ZW50IGlzIGVtYmVkZGVkIGludG8gdGhlIGJpbmFyeSBhcyB0aGUgY29uc3RhbnQgdmFsdWVz
LgorCisgICAgICAgIFdlIGFsc28gY2xlYW4gdXAgdGhlIElETCBjb2RlIGdlbmVyYXRvciByZWxh
dGVkIHRvIERPTUpJVCBwYXJ0LiBJbnN0ZWFkIG9mIHN3aXRjaGluZyB0aGluZ3MgaW5zaWRlIElE
TAorICAgICAgICBjb2RlIGdlbmVyYXRvciwgd2UgdXNlIEMrKyB0ZW1wbGF0ZSB0byBkaXNwYXRj
aCB0aGluZ3MgYXQgY29tcGlsZSB0aW1lLiBUaGlzIHRlbXBsYXRlIG1ldGEgcHJvZ3JhbW1pbmcK
KyAgICAgICAgaXMgaGlnaGx5IHV0aWxpemVkIGluIElETCB0aGVzZSBkYXlzLgorCisgICAgICAg
IFRvIG1ha2UgRE9NSklUOjpTaWduYXR1cmUgY29uc3RleHByLCB3ZSBhbHNvIG5lZWQgdG8gZGVm
aW5lIERPTUpJVCBhYnN0cmFjdCBoZWFwIHRoaW5ncyBpbiB0aGUgYnVpbGQgdGltZS4KKyAgICAg
ICAgVG8gZG8gc28sIHdlIGludHJvZHVjZSBhIHRpbnkgUnVieSBzY3JpcHQgdG8gY2FsY3VsYXRl
IHRoZSByYW5nZSBvZiBhYnN0cmFjdCBoZWFwcy4gV2UgY2FuIG9mZmVyIHRoZSBhYnN0cmFjdAor
ICAgICAgICBoZWFwIHRyZWUgYXMgWUFNTCBmb3JtYXQgYW5kIHRoZSBzY3JpcHQgd2lsbCBwcm9k
dWNlIGEgQysrIGhlYWRlciBob2xkaW5nIHRoZSBjYWxjdWxhdGVkIGFic3RyYWN0IGhlYXAgcmFu
Z2VzCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBEZXJpdmVkU291cmNl
cy5tYWtlOgorICAgICAgICAqIEZvcndhcmRpbmdIZWFkZXJzL2J5dGVjb2RlL1NwZWN1bGF0ZWRU
eXBlLmg6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9kb21qaXQvRE9NSklUQWJzdHJhY3RI
ZWFwUmVwb3NpdG9yeS5oLgorICAgICAgICAqIEZvcndhcmRpbmdIZWFkZXJzL2RvbWppdC9ET01K
SVRTaWduYXR1cmUuaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL2RvbWppdC9ET01KSVRB
YnN0cmFjdEhlYXBSZXBvc2l0b3J5LmNwcC4KKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2o6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3Qu
aDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbToKKyAgICAg
ICAgKEdlbmVyYXRlSGVhZGVyKToKKyAgICAgICAgKEdlbmVyYXRlUHJvcGVydGllc0hhc2hUYWJs
ZSk6CisgICAgICAgIChHZXRVbnNhZmVBcmd1bWVudFR5cGUpOgorICAgICAgICAoR2V0QXJndW1l
bnRUeXBlRmlsdGVyKToKKyAgICAgICAgKEdldFJlc3VsdFR5cGVGaWx0ZXIpOgorICAgICAgICAo
R2VuZXJhdGVJbXBsZW1lbnRhdGlvbik6CisgICAgICAgIChVbnNhZmVUb05hdGl2ZSk6CisgICAg
ICAgIChHZW5lcmF0ZUhhc2hUYWJsZVZhbHVlQXJyYXkpOgorICAgICAgICAoQ29tcHV0ZUZ1bmN0
aW9uU3BlY2lhbCk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9JRExBdHRyaWJ1dGVzLnR4
dDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RE9NSklULmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkJpbmRpbmdDYWxsZXI8SlNUZXN0RE9NSklUPjo6Y2FzdEZvck9w
ZXJhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpUZXN0RE9NSklUQW55QXR0ckRPTUpJVDo6VGVz
dERPTUpJVEFueUF0dHJET01KSVQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdERPTUpJVEJvb2xl
YW5BdHRyRE9NSklUOjpUZXN0RE9NSklUQm9vbGVhbkF0dHJET01KSVQpOgorICAgICAgICAoV2Vi
Q29yZTo6VGVzdERPTUpJVEJ5dGVBdHRyRE9NSklUOjpUZXN0RE9NSklUQnl0ZUF0dHJET01KSVQp
OgorICAgICAgICAoV2ViQ29yZTo6VGVzdERPTUpJVE9jdGV0QXR0ckRPTUpJVDo6VGVzdERPTUpJ
VE9jdGV0QXR0ckRPTUpJVCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0RE9NSklUU2hvcnRBdHRy
RE9NSklUOjpUZXN0RE9NSklUU2hvcnRBdHRyRE9NSklUKToKKyAgICAgICAgKFdlYkNvcmU6OlRl
c3RET01KSVRVbnNpZ25lZFNob3J0QXR0ckRPTUpJVDo6VGVzdERPTUpJVFVuc2lnbmVkU2hvcnRB
dHRyRE9NSklUKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RET01KSVRMb25nQXR0ckRPTUpJVDo6
VGVzdERPTUpJVExvbmdBdHRyRE9NSklUKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RET01KSVRV
bnNpZ25lZExvbmdBdHRyRE9NSklUOjpUZXN0RE9NSklUVW5zaWduZWRMb25nQXR0ckRPTUpJVCk6
CisgICAgICAgIChXZWJDb3JlOjpUZXN0RE9NSklUTG9uZ0xvbmdBdHRyRE9NSklUOjpUZXN0RE9N
SklUTG9uZ0xvbmdBdHRyRE9NSklUKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RET01KSVRVbnNp
Z25lZExvbmdMb25nQXR0ckRPTUpJVDo6VGVzdERPTUpJVFVuc2lnbmVkTG9uZ0xvbmdBdHRyRE9N
SklUKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RET01KSVRGbG9hdEF0dHJET01KSVQ6OlRlc3RE
T01KSVRGbG9hdEF0dHJET01KSVQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdERPTUpJVFVucmVz
dHJpY3RlZEZsb2F0QXR0ckRPTUpJVDo6VGVzdERPTUpJVFVucmVzdHJpY3RlZEZsb2F0QXR0ckRP
TUpJVCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0RE9NSklURG91YmxlQXR0ckRPTUpJVDo6VGVz
dERPTUpJVERvdWJsZUF0dHJET01KSVQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdERPTUpJVFVu
cmVzdHJpY3RlZERvdWJsZUF0dHJET01KSVQ6OlRlc3RET01KSVRVbnJlc3RyaWN0ZWREb3VibGVB
dHRyRE9NSklUKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RET01KSVREb21TdHJpbmdBdHRyRE9N
SklUOjpUZXN0RE9NSklURG9tU3RyaW5nQXR0ckRPTUpJVCk6CisgICAgICAgIChXZWJDb3JlOjpU
ZXN0RE9NSklUQnl0ZVN0cmluZ0F0dHJET01KSVQ6OlRlc3RET01KSVRCeXRlU3RyaW5nQXR0ckRP
TUpJVCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0RE9NSklUVXN2U3RyaW5nQXR0ckRPTUpJVDo6
VGVzdERPTUpJVFVzdlN0cmluZ0F0dHJET01KSVQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdERP
TUpJVE5vZGVBdHRyRE9NSklUOjpUZXN0RE9NSklUTm9kZUF0dHJET01KSVQpOgorICAgICAgICAo
V2ViQ29yZTo6VGVzdERPTUpJVEJvb2xlYW5OdWxsYWJsZUF0dHJET01KSVQ6OlRlc3RET01KSVRC
b29sZWFuTnVsbGFibGVBdHRyRE9NSklUKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RET01KSVRC
eXRlTnVsbGFibGVBdHRyRE9NSklUOjpUZXN0RE9NSklUQnl0ZU51bGxhYmxlQXR0ckRPTUpJVCk6
CisgICAgICAgIChXZWJDb3JlOjpUZXN0RE9NSklUT2N0ZXROdWxsYWJsZUF0dHJET01KSVQ6OlRl
c3RET01KSVRPY3RldE51bGxhYmxlQXR0ckRPTUpJVCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0
RE9NSklUU2hvcnROdWxsYWJsZUF0dHJET01KSVQ6OlRlc3RET01KSVRTaG9ydE51bGxhYmxlQXR0
ckRPTUpJVCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0RE9NSklUVW5zaWduZWRTaG9ydE51bGxh
YmxlQXR0ckRPTUpJVDo6VGVzdERPTUpJVFVuc2lnbmVkU2hvcnROdWxsYWJsZUF0dHJET01KSVQp
OgorICAgICAgICAoV2ViQ29yZTo6VGVzdERPTUpJVExvbmdOdWxsYWJsZUF0dHJET01KSVQ6OlRl
c3RET01KSVRMb25nTnVsbGFibGVBdHRyRE9NSklUKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RE
T01KSVRVbnNpZ25lZExvbmdOdWxsYWJsZUF0dHJET01KSVQ6OlRlc3RET01KSVRVbnNpZ25lZExv
bmdOdWxsYWJsZUF0dHJET01KSVQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdERPTUpJVExvbmdM
b25nTnVsbGFibGVBdHRyRE9NSklUOjpUZXN0RE9NSklUTG9uZ0xvbmdOdWxsYWJsZUF0dHJET01K
SVQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdERPTUpJVFVuc2lnbmVkTG9uZ0xvbmdOdWxsYWJs
ZUF0dHJET01KSVQ6OlRlc3RET01KSVRVbnNpZ25lZExvbmdMb25nTnVsbGFibGVBdHRyRE9NSklU
KToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RET01KSVRGbG9hdE51bGxhYmxlQXR0ckRPTUpJVDo6
VGVzdERPTUpJVEZsb2F0TnVsbGFibGVBdHRyRE9NSklUKToKKyAgICAgICAgKFdlYkNvcmU6OlRl
c3RET01KSVRVbnJlc3RyaWN0ZWRGbG9hdE51bGxhYmxlQXR0ckRPTUpJVDo6VGVzdERPTUpJVFVu
cmVzdHJpY3RlZEZsb2F0TnVsbGFibGVBdHRyRE9NSklUKToKKyAgICAgICAgKFdlYkNvcmU6OlRl
c3RET01KSVREb3VibGVOdWxsYWJsZUF0dHJET01KSVQ6OlRlc3RET01KSVREb3VibGVOdWxsYWJs
ZUF0dHJET01KSVQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdERPTUpJVFVucmVzdHJpY3RlZERv
dWJsZU51bGxhYmxlQXR0ckRPTUpJVDo6VGVzdERPTUpJVFVucmVzdHJpY3RlZERvdWJsZU51bGxh
YmxlQXR0ckRPTUpJVCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0RE9NSklURG9tU3RyaW5nTnVs
bGFibGVBdHRyRE9NSklUOjpUZXN0RE9NSklURG9tU3RyaW5nTnVsbGFibGVBdHRyRE9NSklUKToK
KyAgICAgICAgKFdlYkNvcmU6OlRlc3RET01KSVRCeXRlU3RyaW5nTnVsbGFibGVBdHRyRE9NSklU
OjpUZXN0RE9NSklUQnl0ZVN0cmluZ051bGxhYmxlQXR0ckRPTUpJVCk6CisgICAgICAgIChXZWJD
b3JlOjpUZXN0RE9NSklUVXN2U3RyaW5nTnVsbGFibGVBdHRyRE9NSklUOjpUZXN0RE9NSklUVXN2
U3RyaW5nTnVsbGFibGVBdHRyRE9NSklUKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RET01KSVRO
b2RlTnVsbGFibGVBdHRyRE9NSklUOjpUZXN0RE9NSklUTm9kZU51bGxhYmxlQXR0ckRPTUpJVCk6
CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RET01KSVRQcm90b3R5cGVGdW5jdGlvbkdldEF0dHJp
YnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RET01KSVRQcm90b3R5cGVGdW5jdGlvbkdl
dEF0dHJpYnV0ZUNhbGxlcik6CisgICAgICAgIChXZWJDb3JlOjp1bnNhZmVKc1Rlc3RET01KSVRQ
cm90b3R5cGVGdW5jdGlvbkdldEF0dHJpYnV0ZSk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L1Rlc3RET01KSVQuaWRsOgorICAgICAgICAqIGRvbS9FbGVtZW50LmlkbDoKKyAgICAg
ICAgKiBkb21qaXQvRE9NSklUQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS55YW1sOiBBZGRlZC4KKyAg
ICAgICAgKiBkb21qaXQvRE9NSklUSURMQ29udmVydC5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkRPTUpJVDo6RGlyZWN0Q29udmVydGVyPElETERPTVN0cmluZz46OmRpcmVjdENvbnZlcnQ8
U3RyaW5nQ29udmVyc2lvbkNvbmZpZ3VyYXRpb246Ok5vcm1hbD4pOgorICAgICAgICAqIGRvbWpp
dC9ET01KSVRJRExUeXBlLmg6IEFkZGVkLgorICAgICAgICAqIGRvbWppdC9ET01KSVRJRExUeXBl
RmlsdGVyLmg6IEFkZGVkLgorICAgICAgICAqIGRvbWppdC9KU0RvY3VtZW50RE9NSklULmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50RG9jdW1lbnRFbGVtZW50RE9NSklUOjpjYWxsRE9N
R2V0dGVyKToKKyAgICAgICAgKiBkb21qaXQvSlNOb2RlRE9NSklULmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6Ok5vZGVGaXJzdENoaWxkRE9NSklUOjpjYWxsRE9NR2V0dGVyKToKKyAgICAgICAgKFdl
YkNvcmU6Ok5vZGVMYXN0Q2hpbGRET01KSVQ6OmNhbGxET01HZXR0ZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6Tm9kZU5leHRTaWJsaW5nRE9NSklUOjpjYWxsRE9NR2V0dGVyKToKKyAgICAgICAgKFdl
YkNvcmU6Ok5vZGVQcmV2aW91c1NpYmxpbmdET01KSVQ6OmNhbGxET01HZXR0ZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6Tm9kZVBhcmVudE5vZGVET01KSVQ6OmNhbGxET01HZXR0ZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6Tm9kZU93bmVyRG9jdW1lbnRET01KSVQ6OmNhbGxET01HZXR0ZXIpOgorICAg
ICAgICAqIGRvbWppdC9nZW5lcmF0ZS1hYnN0cmFjdC1oZWFwLnJiOiBBZGRlZC4KKwogMjAxNi0x
MS0wMSAgRGF2ZSBIeWF0dCAgPGh5YXR0QGFwcGxlLmNvbT4KIAogICAgICAgICBbQ1NTIFBhcnNl
cl0gU3VwcG9ydCB0aGUgc2hhZG93IERPTQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRl
eCAyZmJkMmU0Y2YzMTdjMmY4NGUyZTEzOTdkODUxNDExYjU5NjdlMGUyLi5iZjRhMTlkNTkyN2Rm
ZGUxYTlmZjZmMjRhM2U5YjVmNmM3ODBiZTlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agpAQCAtMjE4NCw2ICsyMTg0LDcgQEAKIAkJRTMzRjUwODUxQjg0MzdBMDAwNDEzODU2IC8qIEpT
SW50ZXJuYWxQcm9taXNlRGVmZXJyZWQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEUzM0Y1MDgzMUI4NDM3QTAwMDQxMzg1NiAvKiBKU0ludGVybmFsUHJv
bWlzZURlZmVycmVkLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJRTMzRjUwODcxQjg0NDlFRjAwNDEzODU2IC8qIEpTSW50ZXJuYWxQcm9taXNlQ29u
c3RydWN0b3IubHV0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBFMzNGNTA4NjFCODQ0OUVGMDA0MTM4NTYgLyogSlNJbnRlcm5hbFByb21pc2VDb25zdHJ1
Y3Rvci5sdXQuaCAqLzsgfTsKIAkJRTM0RURCRjcxREI1RkZDOTAwREM4N0E1IC8qIEZyYW1lVHJh
Y2Vycy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM0
RURCRjYxREI1RkZDMTAwREM4N0E1IC8qIEZyYW1lVHJhY2Vycy5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUUzNTA3MDhBMURDNDlCQkYwMDg5QkNE
NiAvKiBET01KSVRTaWduYXR1cmUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEUzNTA3MDg5MURDNDlCQjYwMDg5QkNENiAvKiBET01KSVRTaWduYXR1cmUu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFMzU0
NjIyQjFCNjA2NUQxMDA1NDUzODYgLyogQ29uc3RydWN0QWJpbGl0eS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM1NDYyMkExQjYwNjVEMTAwNTQ1Mzg2
IC8qIENvbnN0cnVjdEFiaWxpdHkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQlFMzU1NUI4QTFEQUUwM0E1MDBGMzY5MjEgLyogRE9NSklUQ2FsbERP
TUdldHRlclBhdGNocG9pbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEUzNTU1Qjg5MURBRTAzQTIwMEYzNjkyMSAvKiBET01KSVRDYWxsRE9NR2V0dGVy
UGF0Y2hwb2ludC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCUUzNTVGMzUyMUI3REM4NTMwMEM1MERDNSAvKiBNb2R1bGVMb2FkZXJQcm90b3R5cGUu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM1NUYz
NTAxQjdEQzg1MzAwQzUwREM1IC8qIE1vZHVsZUxvYWRlclByb3RvdHlwZS5jcHAgKi87IH07CkBA
IC00NTg2LDYgKzQ1ODcsNyBAQAogCQlFMzNGNTA4NjFCODQ0OUVGMDA0MTM4NTYgLyogSlNJbnRl
cm5hbFByb21pc2VDb25zdHJ1Y3Rvci5sdXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gSlNJbnRlcm5hbFByb21pc2VDb25zdHJ1Y3Rvci5sdXQuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJRTMzRjUwODgxQjg0NEExQTAwNDEzODU2IC8qIEludGVybmFsUHJvbWlz
ZUNvbnN0cnVjdG9yLmpzICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5qYXZhc2NyaXB0OyBwYXRoID0g
SW50ZXJuYWxQcm9taXNlQ29uc3RydWN0b3IuanM7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUUzNEVEQkY2MURCNUZGQzEwMERDODdBNSAvKiBGcmFtZVRyYWNlcnMuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRnJhbWVUcmFjZXJzLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCUUzNTA3MDg5MURDNDlCQjYwMDg5QkNENiAvKiBET01KSVRTaWduYXR1cmUu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRE9NSklUU2lnbmF0dXJlLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzNTQ2MjJBMUI2MDY1RDEwMDU0NTM4NiAvKiBD
b25zdHJ1Y3RBYmlsaXR5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvbnN0
cnVjdEFiaWxpdHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM1NTVCODkxREFF
MDNBMjAwRjM2OTIxIC8qIERPTUpJVENhbGxET01HZXR0ZXJQYXRjaHBvaW50LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERPTUpJVENhbGxET01HZXR0ZXJQYXRjaHBvaW50Lmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzNTVGMzUwMUI3REM4NTMwMEM1MERDNSAv
KiBNb2R1bGVMb2FkZXJQcm90b3R5cGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gTW9kdWxlTG9hZGVyUHJvdG90eXBlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKQEAgLTc1MDMsNiArNzUwNSw3IEBACiAJCQkJRTM3QUQ4M0ExREE0OTI4MDAwRjNENDEy
IC8qIERPTUpJVFBhdGNocG9pbnRQYXJhbXMuaCAqLywKIAkJCQlFMzdBRDgzQjFEQTQ5MjgwMDBG
M0Q0MTIgLyogRE9NSklUUmVnLmggKi8sCiAJCQkJRTNDQjFFMjQxREE3NTQwQTAwRkExRTU2IC8q
IERPTUpJVFNsb3dQYXRoQ2FsbHMuaCAqLywKKwkJCQlFMzUwNzA4OTFEQzQ5QkI2MDA4OUJDRDYg
LyogRE9NSklUU2lnbmF0dXJlLmggKi8sCiAJCQkJRTNGRkM4NTIxREFEN0QxMDAwREVBNTNFIC8q
IERPTUpJVFZhbHVlLmggKi8sCiAJCQkpOwogCQkJcGF0aCA9IGRvbWppdDsKQEAgLTg0MjMsNiAr
ODQyNiw3IEBACiAJCQkJNDNBQjI2QzYxQzFBNTM1OTAwRDgyQUU2IC8qIEIzTWF0aEV4dHJhcy5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQUQyRkNCRjMxREI1OERBRDAwQjNFNzM2IC8qIFdlYkFzc2Vt
Ymx5SW5zdGFuY2VQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDNDI5MEUxNkY1
Q0QwMEIzNDQ2MCAvKiBKU1N0cmluZ1JlZkNGLmggaW4gSGVhZGVycyAqLywKKwkJCQlFMzUwNzA4
QTFEQzQ5QkJGMDA4OUJDRDYgLyogRE9NSklUU2lnbmF0dXJlLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkxQTI4RDRBODE3N0I3MUM4MDAwN0ZBM0MgLyogSlNTdHJpbmdSZWZQcml2YXRlLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkwRjkxOUQwRDE1N0VFMEEyMDA0QTRFN0QgLyogSlNTeW1ib2xUYWJsZU9i
amVjdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNzBFQ0E2MDYxQUZEQkVBMjAwNDQ5NzM5IC8qIEpT
VGVtcGxhdGVSZWdpc3RyeUtleS5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbFZhcmlhbnQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9DYWxsVmFyaWFudC5oCmluZGV4IGRlNjg4MDA2ZWYxYTk5ZTlkZDYwYjAx
YTZlMDE3N2NiOThlYzdiNTEuLmNiMjg4YzYwYjdhNGYxMzhiYWYyMTQyODQ5ZTEzOTFhOGQxMTFi
YTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsVmFyaWFu
dC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsVmFyaWFudC5oCkBA
IC0yOCw2ICsyOCw3IEBACiAjaW5jbHVkZSAiRnVuY3Rpb25FeGVjdXRhYmxlLmgiCiAjaW5jbHVk
ZSAiSlNDZWxsLmgiCiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgorI2luY2x1ZGUgIk5hdGl2ZUV4
ZWN1dGFibGUuaCIKIAogbmFtZXNwYWNlIEpTQyB7CiAKQEAgLTEyMCw2ICsxMjEsMjAgQEAgY2xh
c3MgQ2FsbFZhcmlhbnQgewogICAgICAgICAgICAgcmV0dXJuIGpzRHluYW1pY0Nhc3Q8RnVuY3Rp
b25FeGVjdXRhYmxlKj4oZXhlY3V0YWJsZSk7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAg
IH0KKworICAgIE5hdGl2ZUV4ZWN1dGFibGUqIG5hdGl2ZUV4ZWN1dGFibGUoKSBjb25zdAorICAg
IHsKKyAgICAgICAgaWYgKEV4ZWN1dGFibGVCYXNlKiBleGVjdXRhYmxlID0gdGhpcy0+ZXhlY3V0
YWJsZSgpKQorICAgICAgICAgICAgcmV0dXJuIGpzRHluYW1pY0Nhc3Q8TmF0aXZlRXhlY3V0YWJs
ZSo+KGV4ZWN1dGFibGUpOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisKKyAgICBj
b25zdCBET01KSVQ6OlNpZ25hdHVyZSogc2lnbmF0dXJlRm9yKENvZGVTcGVjaWFsaXphdGlvbktp
bmQga2luZCkgY29uc3QKKyAgICB7CisgICAgICAgIGlmIChOYXRpdmVFeGVjdXRhYmxlKiBuYXRp
dmVFeGVjdXRhYmxlID0gdGhpcy0+bmF0aXZlRXhlY3V0YWJsZSgpKQorICAgICAgICAgICAgcmV0
dXJuIG5hdGl2ZUV4ZWN1dGFibGUtPnNpZ25hdHVyZUZvcihraW5kKTsKKyAgICAgICAgcmV0dXJu
IG51bGxwdHI7CisgICAgfQogICAgIAogICAgIHZvaWQgZHVtcChQcmludFN0cmVhbSYgb3V0KSBj
b25zdDsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9T
cGVjdWxhdGVkVHlwZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NwZWN1bGF0
ZWRUeXBlLmgKaW5kZXggZjQzZGZjZDMxNTg3MWU5ODk1M2VhMmRkZGM0YmYzMzUyNWNjZGZkZi4u
ZTIzZmQyYzVmNTRjZWUwOWM3YTIzYmRjMTQ5OTkwYjYwOWIwMTkwMCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmgKQEAgLTE1MSw2ICsxNTEs
MTEgQEAgaW5saW5lIGJvb2wgaXNTdHJpbmdTcGVjdWxhdGlvbihTcGVjdWxhdGVkVHlwZSB2YWx1
ZSkKICAgICByZXR1cm4gISF2YWx1ZSAmJiAodmFsdWUgJiBTcGVjU3RyaW5nKSA9PSB2YWx1ZTsK
IH0KIAoraW5saW5lIGJvb2wgaXNOb3RTdHJpbmdTcGVjdWxhdGlvbihTcGVjdWxhdGVkVHlwZSB2
YWx1ZSkKK3sKKyAgICByZXR1cm4gdmFsdWUgJiYgISh2YWx1ZSAmIFNwZWNTdHJpbmcpOworfQor
CiBpbmxpbmUgYm9vbCBpc1N0cmluZ09yT3RoZXJTcGVjdWxhdGlvbihTcGVjdWxhdGVkVHlwZSB2
YWx1ZSkKIHsKICAgICByZXR1cm4gISF2YWx1ZSAmJiAodmFsdWUgJiAoU3BlY1N0cmluZyB8IFNw
ZWNPdGhlcikpID09IHZhbHVlOwpAQCAtMzAzLDYgKzMwOCwxMSBAQCBpbmxpbmUgYm9vbCBpc0lu
dDMyU3BlY3VsYXRpb24oU3BlY3VsYXRlZFR5cGUgdmFsdWUpCiAgICAgcmV0dXJuIHZhbHVlICYm
ICEodmFsdWUgJiB+U3BlY0ludDMyT25seSk7CiB9CiAKK2lubGluZSBib29sIGlzTm90SW50MzJT
cGVjdWxhdGlvbihTcGVjdWxhdGVkVHlwZSB2YWx1ZSkKK3sKKyAgICByZXR1cm4gdmFsdWUgJiYg
ISh2YWx1ZSAmIFNwZWNJbnQzMk9ubHkpOworfQorCiBpbmxpbmUgYm9vbCBpc0ludDMyT3JCb29s
ZWFuU3BlY3VsYXRpb24oU3BlY3VsYXRlZFR5cGUgdmFsdWUpCiB7CiAgICAgcmV0dXJuIHZhbHVl
ICYmICEodmFsdWUgJiB+KFNwZWNCb29sZWFuIHwgU3BlY0ludDMyT25seSkpOwpAQCAtMzg4LDYg
KzM5OCwxMSBAQCBpbmxpbmUgYm9vbCBpc0Jvb2xlYW5TcGVjdWxhdGlvbihTcGVjdWxhdGVkVHlw
ZSB2YWx1ZSkKICAgICByZXR1cm4gdmFsdWUgPT0gU3BlY0Jvb2xlYW47CiB9CiAKK2lubGluZSBi
b29sIGlzTm90Qm9vbGVhblNwZWN1bGF0aW9uKFNwZWN1bGF0ZWRUeXBlIHZhbHVlKQoreworICAg
IHJldHVybiB2YWx1ZSAmJiAhKHZhbHVlICYgU3BlY0Jvb2xlYW4pOworfQorCiBpbmxpbmUgYm9v
bCBpc090aGVyU3BlY3VsYXRpb24oU3BlY3VsYXRlZFR5cGUgdmFsdWUpCiB7CiAgICAgcmV0dXJu
IHZhbHVlID09IFNwZWNPdGhlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAppbmRleCA0M2I1MWExNmVjYmFk
YTUwZjlkN2Y4OGVlZTNjZjExMjZiN2EyMjRhLi43YWRiYTcxNjAxNDYxNTEwNzJlZjY5OWQyMjZh
MmFmM2NlYTA4ZDAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fi
c3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCkBAIC0zMCw2ICszMCw3IEBACiAjaW5j
bHVkZSAiQXJyYXlDb25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUgIkRGR0Fic3RyYWN0SW50ZXJwcmV0
ZXIuaCIKICNpbmNsdWRlICJET01KSVRHZXR0ZXJTZXR0ZXIuaCIKKyNpbmNsdWRlICJET01KSVRT
aWduYXR1cmUuaCIKICNpbmNsdWRlICJHZXRCeUlkU3RhdHVzLmgiCiAjaW5jbHVkZSAiR2V0dGVy
U2V0dGVyLmgiCiAjaW5jbHVkZSAiSGFzaE1hcEltcGwuaCIKQEAgLTIzMDMsNiArMjMwNCwxMyBA
QCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZm
ZWN0cyh1bnNpZ25lZCBjbG9iYmVyTGltaQogICAgICAgICBmb3JOb2RlKG5vZGUpLnNldFR5cGUo
bV9ncmFwaCwgY2FsbERPTUdldHRlckRhdGEtPmRvbUpJVC0+cmVzdWx0VHlwZSgpKTsKICAgICAg
ICAgYnJlYWs7CiAgICAgfQorICAgIGNhc2UgQ2FsbERPTTogeworICAgICAgICBjb25zdCBET01K
SVQ6OlNpZ25hdHVyZSogc2lnbmF0dXJlID0gbm9kZS0+c2lnbmF0dXJlKCk7CisgICAgICAgIGlm
IChzaWduYXR1cmUtPmVmZmVjdC53cml0ZXMpCisgICAgICAgICAgICBjbG9iYmVyV29ybGQobm9k
ZS0+b3JpZ2luLnNlbWFudGljLCBjbG9iYmVyTGltaXQpOworICAgICAgICBmb3JOb2RlKG5vZGUp
LnNldFR5cGUobV9ncmFwaCwgc2lnbmF0dXJlLT5yZXN1bHQpOworICAgICAgICBicmVhazsKKyAg
ICB9CiAgICAgY2FzZSBDaGVja0FycmF5OiB7CiAgICAgICAgIGlmIChub2RlLT5hcnJheU1vZGUo
KS5hbHJlYWR5Q2hlY2tlZChtX2dyYXBoLCBub2RlLCBmb3JOb2RlKG5vZGUtPmNoaWxkMSgpKSkp
IHsKICAgICAgICAgICAgIG1fc3RhdGUuc2V0Rm91bmRDb25zdGFudHModHJ1ZSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCmluZGV4IDM1ZGMw
Nzg2YTg5Mzc4NWY3MGY3YjMyYzBjZjdiY2RkZTlhN2VkZDkuLjBjMjYxZDFjOTQ5YWMxZDgzOWNj
MWQ5M2U3ZWI5N2NjYjQwYmQ0MTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQnl0ZUNvZGVQYXJzZXIuY3BwCkBAIC0yMTIsNiArMjEyLDggQEAgY2xhc3MgQnl0ZUNvZGVQ
YXJzZXIgewogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoZWNrc0Z1bmN0b3I+CiAgICAgYm9vbCBo
YW5kbGVJbnRyaW5zaWNDYWxsKE5vZGUqIGNhbGxlZSwgaW50IHJlc3VsdE9wZXJhbmQsIEludHJp
bnNpYywgaW50IHJlZ2lzdGVyT2Zmc2V0LCBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMs
IFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24sIGNvbnN0IENoZWNrc0Z1bmN0b3ImIGluc2VydENo
ZWNrcyk7CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hlY2tzRnVuY3Rvcj4KKyAgICBib29sIGhh
bmRsZURPTUpJVENhbGwoTm9kZSogY2FsbGVlLCBpbnQgcmVzdWx0T3BlcmFuZCwgY29uc3QgRE9N
SklUOjpTaWduYXR1cmUqLCBpbnQgcmVnaXN0ZXJPZmZzZXQsIGludCBhcmd1bWVudENvdW50SW5j
bHVkaW5nVGhpcywgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbiwgY29uc3QgQ2hlY2tzRnVuY3Rv
ciYgaW5zZXJ0Q2hlY2tzKTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGVja3NGdW5jdG9yPgog
ICAgIGJvb2wgaGFuZGxlSW50cmluc2ljR2V0dGVyKGludCByZXN1bHRPcGVyYW5kLCBjb25zdCBH
ZXRCeUlkVmFyaWFudCYgaW50cmluc2ljVmFyaWFudCwgTm9kZSogdGhpc05vZGUsIGNvbnN0IENo
ZWNrc0Z1bmN0b3ImIGluc2VydENoZWNrcyk7CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hlY2tz
RnVuY3Rvcj4KICAgICBib29sIGhhbmRsZVR5cGVkQXJyYXlDb25zdHJ1Y3RvcihpbnQgcmVzdWx0
T3BlcmFuZCwgSW50ZXJuYWxGdW5jdGlvbiosIGludCByZWdpc3Rlck9mZnNldCwgaW50IGFyZ3Vt
ZW50Q291bnRJbmNsdWRpbmdUaGlzLCBUeXBlZEFycmF5VHlwZSwgY29uc3QgQ2hlY2tzRnVuY3Rv
ciYgaW5zZXJ0Q2hlY2tzKTsKQEAgLTgxNywxOCArODE5LDE4IEBAIGNsYXNzIEJ5dGVDb2RlUGFy
c2VyIHsKICAgICB9CiAgICAgCiAgICAgTm9kZSogYWRkQ2FsbCgKLSAgICAgICAgaW50IHJlc3Vs
dCwgTm9kZVR5cGUgb3AsIE9wSW5mbyBvcEluZm8sIE5vZGUqIGNhbGxlZSwgaW50IGFyZ0NvdW50
LCBpbnQgcmVnaXN0ZXJPZmZzZXQsCisgICAgICAgIGludCByZXN1bHQsIE5vZGVUeXBlIG9wLCBj
b25zdCBET01KSVQ6OlNpZ25hdHVyZSogc2lnbmF0dXJlLCBOb2RlKiBjYWxsZWUsIGludCBhcmdD
b3VudCwgaW50IHJlZ2lzdGVyT2Zmc2V0LAogICAgICAgICBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0
aW9uKQogICAgIHsKICAgICAgICAgaWYgKG9wID09IFRhaWxDYWxsKSB7CiAgICAgICAgICAgICBp
ZiAoYWxsSW5saW5lRnJhbWVzQXJlVGFpbENhbGxzKCkpCi0gICAgICAgICAgICAgICAgcmV0dXJu
IGFkZENhbGxXaXRob3V0U2V0dGluZ1Jlc3VsdChvcCwgT3BJbmZvKCksIGNhbGxlZSwgYXJnQ291
bnQsIHJlZ2lzdGVyT2Zmc2V0LCBPcEluZm8oKSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIGFk
ZENhbGxXaXRob3V0U2V0dGluZ1Jlc3VsdChvcCwgT3BJbmZvKHNpZ25hdHVyZSksIGNhbGxlZSwg
YXJnQ291bnQsIHJlZ2lzdGVyT2Zmc2V0LCBPcEluZm8oKSk7CiAgICAgICAgICAgICBvcCA9IFRh
aWxDYWxsSW5saW5lZENhbGxlcjsKICAgICAgICAgfQogCiAKICAgICAgICAgTm9kZSogY2FsbCA9
IGFkZENhbGxXaXRob3V0U2V0dGluZ1Jlc3VsdCgKLSAgICAgICAgICAgIG9wLCBvcEluZm8sIGNh
bGxlZSwgYXJnQ291bnQsIHJlZ2lzdGVyT2Zmc2V0LCBPcEluZm8ocHJlZGljdGlvbikpOworICAg
ICAgICAgICAgb3AsIE9wSW5mbyhzaWduYXR1cmUpLCBjYWxsZWUsIGFyZ0NvdW50LCByZWdpc3Rl
ck9mZnNldCwgT3BJbmZvKHByZWRpY3Rpb24pKTsKICAgICAgICAgVmlydHVhbFJlZ2lzdGVyIHJl
c3VsdFJlZyhyZXN1bHQpOwogICAgICAgICBpZiAocmVzdWx0UmVnLmlzVmFsaWQoKSkKICAgICAg
ICAgICAgIHNldChyZXN1bHRSZWcsIGNhbGwpOwpAQCAtMTI4Myw3ICsxMjg1LDcgQEAgQnl0ZUNv
ZGVQYXJzZXI6OlRlcm1pbmFsaXR5IEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVDYWxsKAogICAgICAg
ICAvLyBPZGRseSwgdGhpcyBjb25mbGF0ZXMgY2FsbHMgdGhhdCBoYXZlbid0IGV4ZWN1dGVkIHdp
dGggY2FsbHMgdGhhdCBiZWhhdmVkIHN1ZmZpY2llbnRseSBwb2x5bW9ycGhpY2FsbHkKICAgICAg
ICAgLy8gdGhhdCB3ZSBjYW5ub3Qgb3B0aW1pemUgdGhlbS4KIAotICAgICAgICBOb2RlKiBjYWxs
Tm9kZSA9IGFkZENhbGwocmVzdWx0LCBvcCwgT3BJbmZvKCksIGNhbGxUYXJnZXQsIGFyZ3VtZW50
Q291bnRJbmNsdWRpbmdUaGlzLCByZWdpc3Rlck9mZnNldCwgcHJlZGljdGlvbik7CisgICAgICAg
IE5vZGUqIGNhbGxOb2RlID0gYWRkQ2FsbChyZXN1bHQsIG9wLCBudWxscHRyLCBjYWxsVGFyZ2V0
LCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgcmVnaXN0ZXJPZmZzZXQsIHByZWRpY3Rpb24p
OwogICAgICAgICBpZiAoY2FsbE5vZGUtPm9wKCkgPT0gVGFpbENhbGwpCiAgICAgICAgICAgICBy
ZXR1cm4gVGVybWluYWw7CiAgICAgICAgIEFTU0VSVChjYWxsTm9kZS0+b3AoKSAhPSBUYWlsQ2Fs
bFZhcmFyZ3MgJiYgY2FsbE5vZGUtPm9wKCkgIT0gVGFpbENhbGxGb3J3YXJkVmFyYXJncyk7CkBA
IC0xMjk4LDcgKzEzMDAsNyBAQCBCeXRlQ29kZVBhcnNlcjo6VGVybWluYWxpdHkgQnl0ZUNvZGVQ
YXJzZXI6OmhhbmRsZUNhbGwoCiAgICAgICAgIHJldHVybiBOb25UZXJtaW5hbDsKICAgICB9CiAg
ICAgCi0gICAgTm9kZSogY2FsbE5vZGUgPSBhZGRDYWxsKHJlc3VsdCwgb3AsIE9wSW5mbygpLCBj
YWxsVGFyZ2V0LCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgcmVnaXN0ZXJPZmZzZXQsIHBy
ZWRpY3Rpb24pOworICAgIE5vZGUqIGNhbGxOb2RlID0gYWRkQ2FsbChyZXN1bHQsIG9wLCBudWxs
cHRyLCBjYWxsVGFyZ2V0LCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgcmVnaXN0ZXJPZmZz
ZXQsIHByZWRpY3Rpb24pOwogICAgIGlmIChjYWxsTm9kZS0+b3AoKSA9PSBUYWlsQ2FsbCkKICAg
ICAgICAgcmV0dXJuIFRlcm1pbmFsOwogICAgIEFTU0VSVChjYWxsTm9kZS0+b3AoKSAhPSBUYWls
Q2FsbFZhcmFyZ3MgJiYgY2FsbE5vZGUtPm9wKCkgIT0gVGFpbENhbGxGb3J3YXJkVmFyYXJncyk7
CkBAIC0xNzI1LDYgKzE3MjcsMTkgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6YXR0ZW1wdFRvSW5s
aW5lQ2FsbChOb2RlKiBjYWxsVGFyZ2V0Tm9kZSwgaW50IHJlc3VsdE9wZXJhbmQKICAgICAgICAg
ICAgIFJFTEVBU0VfQVNTRVJUKCFkaWRJbnNlcnRDaGVja3MpOwogICAgICAgICAgICAgLy8gV2Ug
bWlnaHQgc3RpbGwgdHJ5IHRvIGlubGluZSB0aGUgSW50cmluc2ljIGJlY2F1c2UgaXQgbWlnaHQg
YmUgYSBidWlsdGluIEpTIGZ1bmN0aW9uLgogICAgICAgICB9CisKKyAgICAgICAgaWYgKE9wdGlv
bnM6OnVzZURPTUpJVCgpKSB7CisgICAgICAgICAgICBpZiAoY29uc3QgRE9NSklUOjpTaWduYXR1
cmUqIHNpZ25hdHVyZSA9IGNhbGxlZS5zaWduYXR1cmVGb3Ioc3BlY2lhbGl6YXRpb25LaW5kKSkg
eworICAgICAgICAgICAgICAgIGlmIChoYW5kbGVET01KSVRDYWxsKGNhbGxUYXJnZXROb2RlLCBy
ZXN1bHRPcGVyYW5kLCBzaWduYXR1cmUsIHJlZ2lzdGVyT2Zmc2V0LCBhcmd1bWVudENvdW50SW5j
bHVkaW5nVGhpcywgcHJlZGljdGlvbiwgaW5zZXJ0Q2hlY2tzV2l0aEFjY291bnRpbmcpKSB7Cisg
ICAgICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGRpZEluc2VydENoZWNrcyk7CisgICAg
ICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoUGhhbnRvbSwgY2FsbFRhcmdldE5vZGUpOworICAg
ICAgICAgICAgICAgICAgICBlbWl0QXJndW1lbnRQaGFudG9tcyhyZWdpc3Rlck9mZnNldCwgYXJn
dW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpOworICAgICAgICAgICAgICAgICAgICBpbmxpbmluZ0Jh
bGFuY2UtLTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKCFkaWRJbnNlcnRDaGVja3MpOwor
ICAgICAgICAgICAgfQorICAgICAgICB9CiAgICAgfQogICAgIAogICAgIHVuc2lnbmVkIG15SW5s
aW5pbmdDb3N0ID0gaW5saW5pbmdDb3N0KGNhbGxlZSwgYXJndW1lbnRDb3VudEluY2x1ZGluZ1Ro
aXMsIElubGluZUNhbGxGcmFtZTo6Y2FsbE1vZGVGb3Ioa2luZCkpOwpAQCAtMjA1MCw3ICsyMDY1
LDcgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW5saW5pbmcoCiAgICAgTm9kZSogbXlD
YWxsVGFyZ2V0Tm9kZSA9IGdldERpcmVjdChjYWxsZWVSZWcpOwogICAgIGlmIChjb3VsZFRha2VT
bG93UGF0aCkgewogICAgICAgICBhZGRDYWxsKAotICAgICAgICAgICAgcmVzdWx0T3BlcmFuZCwg
Y2FsbE9wLCBPcEluZm8oKSwgbXlDYWxsVGFyZ2V0Tm9kZSwgYXJndW1lbnRDb3VudEluY2x1ZGlu
Z1RoaXMsCisgICAgICAgICAgICByZXN1bHRPcGVyYW5kLCBjYWxsT3AsIG51bGxwdHIsIG15Q2Fs
bFRhcmdldE5vZGUsIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLAogICAgICAgICAgICAgcmVn
aXN0ZXJPZmZzZXQsIHByZWRpY3Rpb24pOwogICAgIH0gZWxzZSB7CiAgICAgICAgIGFkZFRvR3Jh
cGgoQ2hlY2tCYWRDZWxsKTsKQEAgLTI2MDAsNiArMjYxNSwyMCBAQCBib29sIEJ5dGVDb2RlUGFy
c2VyOjpoYW5kbGVJbnRyaW5zaWNDYWxsKE5vZGUqIGNhbGxlZSwgaW50IHJlc3VsdE9wZXJhbmQs
IEludHJpbgogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGVja3NGdW5jdG9yPgorYm9vbCBCeXRl
Q29kZVBhcnNlcjo6aGFuZGxlRE9NSklUQ2FsbChOb2RlKiBjYWxsVGFyZ2V0LCBpbnQgcmVzdWx0
T3BlcmFuZCwgY29uc3QgRE9NSklUOjpTaWduYXR1cmUqIHNpZ25hdHVyZSwgaW50IHJlZ2lzdGVy
T2Zmc2V0LCBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIFNwZWN1bGF0ZWRUeXBlIHBy
ZWRpY3Rpb24sIGNvbnN0IENoZWNrc0Z1bmN0b3ImIGluc2VydENoZWNrcykKK3sKKyAgICBpZiAo
YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgIT0gc3RhdGljX2Nhc3Q8aW50PigxICsgc2lnbmF0
dXJlLT5hcmd1bWVudENvdW50KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmIChtX2lu
bGluZVN0YWNrVG9wLT5tX2V4aXRQcm9maWxlLmhhc0V4aXRTaXRlKG1fY3VycmVudEluZGV4LCBC
YWRUeXBlKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaW5zZXJ0Q2hlY2tzKCk7Cisg
ICAgYWRkQ2FsbChyZXN1bHRPcGVyYW5kLCBDYWxsLCBzaWduYXR1cmUsIGNhbGxUYXJnZXQsIGFy
Z3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCByZWdpc3Rlck9mZnNldCwgcHJlZGljdGlvbik7Cisg
ICAgcmV0dXJuIHRydWU7Cit9CisKKwordGVtcGxhdGU8dHlwZW5hbWUgQ2hlY2tzRnVuY3Rvcj4K
IGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUludHJpbnNpY0dldHRlcihpbnQgcmVzdWx0T3Bl
cmFuZCwgY29uc3QgR2V0QnlJZFZhcmlhbnQmIHZhcmlhbnQsIE5vZGUqIHRoaXNOb2RlLCBjb25z
dCBDaGVja3NGdW5jdG9yJiBpbnNlcnRDaGVja3MpCiB7CiAgICAgc3dpdGNoICh2YXJpYW50Lmlu
dHJpbnNpYygpKSB7CkBAIC00NzkxLDcgKzQ4MjAsNyBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpw
YXJzZUJsb2NrKHVuc2lnbmVkIGxpbWl0KQogICAgICAgICAgICAgaW50IGNhbGxlZSA9IGN1cnJl
bnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBpbnQgYXJndW1lbnRDb3Vu
dEluY2x1ZGluZ1RoaXMgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bM10udS5vcGVyYW5kOwogICAgICAg
ICAgICAgaW50IHJlZ2lzdGVyT2Zmc2V0ID0gLWN1cnJlbnRJbnN0cnVjdGlvbls0XS51Lm9wZXJh
bmQ7Ci0gICAgICAgICAgICBhZGRDYWxsKHJlc3VsdCwgQ2FsbEV2YWwsIE9wSW5mbygpLCBnZXQo
VmlydHVhbFJlZ2lzdGVyKGNhbGxlZSkpLCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgcmVn
aXN0ZXJPZmZzZXQsIGdldFByZWRpY3Rpb24oKSk7CisgICAgICAgICAgICBhZGRDYWxsKHJlc3Vs
dCwgQ2FsbEV2YWwsIG51bGxwdHIsIGdldChWaXJ0dWFsUmVnaXN0ZXIoY2FsbGVlKSksIGFyZ3Vt
ZW50Q291bnRJbmNsdWRpbmdUaGlzLCByZWdpc3Rlck9mZnNldCwgZ2V0UHJlZGljdGlvbigpKTsK
ICAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX2NhbGxfZXZhbCk7CiAgICAgICAgIH0KICAgICAg
ICAgICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVy
aXplLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaAppbmRleCBi
NjIxZWYwMjJkODg2NWUyZTdhMjAxMTZjZDIwOGM1YzI0NmM5ZmZiLi5lNWQyMTcyZjlhZTBlNzkx
YWFhMmE2ODJiYWIxNGViYTkzMDY3ZGJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0Nsb2JiZXJpemUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0Nsb2JiZXJpemUuaApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIkRGR0xhenlOb2RlLmgi
CiAjaW5jbHVkZSAiREZHUHVyZVZhbHVlLmgiCiAjaW5jbHVkZSAiRE9NSklUQ2FsbERPTUdldHRl
clBhdGNocG9pbnQuaCIKKyNpbmNsdWRlICJET01KSVRTaWduYXR1cmUuaCIKIAogbmFtZXNwYWNl
IEpTQyB7IG5hbWVzcGFjZSBERkcgewogCkBAIC05NTgsMjAgKzk1OSwzOCBAQCB2b2lkIGNsb2Ji
ZXJpemUoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlLCBjb25zdCBSZWFkRnVuY3RvciYgcmVhZCwg
Y29uc3QgV3JpdGVGdQogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgIHdyaXRlKEFi
c3RyYWN0SGVhcChET01TdGF0ZSwgZWZmZWN0LndyaXRlcy5yYXdSZXByZXNlbnRhdGlvbigpKSk7
CiAgICAgICAgIH0KLSAgICAgICAgaWYgKGVmZmVjdC5kZWYpIHsKLSAgICAgICAgICAgIERPTUpJ
VDo6SGVhcFJhbmdlIHJhbmdlID0gZWZmZWN0LmRlZi52YWx1ZSgpOworICAgICAgICBpZiAoZWZm
ZWN0LmRlZiAhPSBET01KSVQ6OkhlYXBSYW5nZTo6dG9wKCkpIHsKKyAgICAgICAgICAgIERPTUpJ
VDo6SGVhcFJhbmdlIHJhbmdlID0gZWZmZWN0LmRlZjsKICAgICAgICAgICAgIGlmIChyYW5nZSA9
PSBET01KSVQ6OkhlYXBSYW5nZTo6bm9uZSgpKQogICAgICAgICAgICAgICAgIGRlZihQdXJlVmFs
dWUobm9kZSwgbm9kZS0+Y2FsbERPTUdldHRlckRhdGEoKS0+ZG9tSklUKSk7CiAgICAgICAgICAg
ICBlbHNlIHsKICAgICAgICAgICAgICAgICAvLyBEZWYgd2l0aCBoZWFwIGxvY2F0aW9uLiBXZSBk
byBub3QgaW5jbHVkZSAiR2xvYmFsT2JqZWN0IiBmb3IgdGhhdCBzaW5jZSB0aGlzIGluZm9ybWF0
aW9uIGlzIGluY2x1ZGVkIGluIHRoZSBiYXNlIG5vZGUuCi0gICAgICAgICAgICAgICAgLy8gRklY
TUU6IFdoZW4gc3VwcG9ydGluZyB0aGUgb3RoZXIgbm9kZXMgbGlrZSBnZXRFbGVtZW50QnlJZCgi
c3RyaW5nIiksIHdlIHNob3VsZCBpbmNsdWRlIHRoZSBiYXNlIGFuZCB0aGUgaWQgc3RyaW5nLgot
ICAgICAgICAgICAgICAgIC8vIEN1cnJlbnRseSwgd2Ugb25seSBzZWUgdGhlIERPTUpJVCBnZXR0
ZXIgaGVyZS4gU28ganVzdCBpbmNsdWRpbmcgImJhc2UiIGlzIG9rLgorICAgICAgICAgICAgICAg
IC8vIFdlIG9ubHkgc2VlIHRoZSBET01KSVQgZ2V0dGVyIGhlcmUuIFNvIGp1c3QgaW5jbHVkaW5n
ICJiYXNlIiBpcyBvay4KICAgICAgICAgICAgICAgICBkZWYoSGVhcExvY2F0aW9uKERPTVN0YXRl
TG9jLCBBYnN0cmFjdEhlYXAoRE9NU3RhdGUsIHJhbmdlLnJhd1JlcHJlc2VudGF0aW9uKCkpLCBu
b2RlLT5jaGlsZDEoKSksIExhenlOb2RlKG5vZGUpKTsKICAgICAgICAgICAgIH0KICAgICAgICAg
fQogICAgICAgICByZXR1cm47CiAgICAgfQogCisgICAgY2FzZSBDYWxsRE9NOiB7CisgICAgICAg
IGNvbnN0IERPTUpJVDo6U2lnbmF0dXJlKiBzaWduYXR1cmUgPSBub2RlLT5zaWduYXR1cmUoKTsK
KyAgICAgICAgRE9NSklUOjpFZmZlY3QgZWZmZWN0ID0gc2lnbmF0dXJlLT5lZmZlY3Q7CisgICAg
ICAgIGlmIChlZmZlY3QucmVhZHMpIHsKKyAgICAgICAgICAgIGlmIChlZmZlY3QucmVhZHMgPT0g
RE9NSklUOjpIZWFwUmFuZ2U6OnRvcCgpKQorICAgICAgICAgICAgICAgIHJlYWQoV29ybGQpOwor
ICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHJlYWQoQWJzdHJhY3RIZWFwKERPTVN0
YXRlLCBlZmZlY3QucmVhZHMucmF3UmVwcmVzZW50YXRpb24oKSkpOworICAgICAgICB9CisgICAg
ICAgIGlmIChlZmZlY3Qud3JpdGVzKSB7CisgICAgICAgICAgICBpZiAoZWZmZWN0LndyaXRlcyA9
PSBET01KSVQ6OkhlYXBSYW5nZTo6dG9wKCkpCisgICAgICAgICAgICAgICAgd3JpdGUoSGVhcCk7
CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgd3JpdGUoQWJzdHJhY3RIZWFwKERP
TVN0YXRlLCBlZmZlY3Qud3JpdGVzLnJhd1JlcHJlc2VudGF0aW9uKCkpKTsKKyAgICAgICAgfQor
ICAgICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKGVmZmVjdC5kZWYgPT0gRE9NSklUOjpIZWFwUmFu
Z2U6OnRvcCgpLCAiQ3VycmVudGx5LCB3ZSBkbyBub3QgYWNjZXB0IGFueSBkZWYgZm9yIENhbGxE
T00uIik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKICAgICBjYXNlIEFycmF5aWZ5OgogICAg
IGNhc2UgQXJyYXlpZnlUb1N0cnVjdHVyZToKICAgICAgICAgcmVhZChKU0NlbGxfc3RydWN0dXJl
SUQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCmluZGV4IDk3Y2Q4NDg3
NDc3YWM5MDg0ZmU5MGRkYjk4ZDMwZjQ2NmU1Y2ExNmYuLjllNmFhNTUwYTQ0ZTBlMWM2MjE3NWU1
MTlmNjBhM2U4NTE1YTdiN2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHRG9lc0dDLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5j
cHAKQEAgLTMwMSw2ICszMDEsNyBAQCBib29sIGRvZXNHQyhHcmFwaCYgZ3JhcGgsIE5vZGUqIG5v
ZGUpCiAgICAgY2FzZSBDcmVhdGVSZXN0OgogICAgIGNhc2UgVG9Mb3dlckNhc2U6CiAgICAgY2Fz
ZSBDYWxsRE9NR2V0dGVyOgorICAgIGNhc2UgQ2FsbERPTToKICAgICAgICAgcmV0dXJuIHRydWU7
CiAgICAgICAgIAogICAgIGNhc2UgTXVsdGlQdXRCeU9mZnNldDoKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCmluZGV4IDFkNGU5MDdhN2YyZmZjYzJkOWEyYTAz
NzcxMTQ2YTc5MTAxZjNjZDMuLjEyZWY0Y2Q4YTRkOTgyN2IxZTJiNGNlOGJlOTA3YzhiMzYwNjg3
MjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcApAQCAt
MTcwOCw5ICsxNzA4LDEwIEBAIGNsYXNzIEZpeHVwUGhhc2UgOiBwdWJsaWMgUGhhc2UgewogICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIAotICAgICAgICBjYXNlIENoZWNrRE9NOgotICAg
ICAgICAgICAgZml4RWRnZTxDZWxsVXNlPihub2RlLT5jaGlsZDEoKSk7CisgICAgICAgIGNhc2Ug
Q2hlY2tET006IHsKKyAgICAgICAgICAgIGZpeHVwQ2hlY2tET00obm9kZSk7CiAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgfQogCiAgICAgICAgIGNhc2UgQ2FsbERPTUdldHRlcjogewogICAg
ICAgICAgICAgRE9NSklUOjpDYWxsRE9NR2V0dGVyUGF0Y2hwb2ludCogcGF0Y2hwb2ludCA9IG5v
ZGUtPmNhbGxET01HZXR0ZXJEYXRhKCktPnBhdGNocG9pbnQ7CkBAIC0xNzIwLDYgKzE3MjEsMTYg
QEAgY2xhc3MgRml4dXBQaGFzZSA6IHB1YmxpYyBQaGFzZSB7CiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgfQogCisgICAgICAgIGNhc2UgQ2FsbERPTTogeworICAgICAgICAgICAgZml4dXBD
YWxsRE9NKG5vZGUpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAgICBj
YXNlIENhbGw6IHsKKyAgICAgICAgICAgIGF0dGVtcHRUb01ha2VDYWxsRE9NKG5vZGUpOworICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKwogI2lmICFBU1NFUlRfRElTQUJMRUQKICAgICAg
ICAgLy8gSGF2ZSB0aGVzZSBuby1vcCBjYXNlcyBoZXJlIHRvIGVuc3VyZSB0aGF0IG5vYm9keSBm
b3JnZXRzIHRvIGFkZCBoYW5kbGVycyBmb3IgbmV3IG9wY29kZXMuCiAgICAgICAgIGNhc2UgU2V0
QXJndW1lbnQ6CkBAIC0xNzM2LDcgKzE3NDcsNiBAQCBjbGFzcyBGaXh1cFBoYXNlIDogcHVibGlj
IFBoYXNlIHsKICAgICAgICAgY2FzZSBHZXRHbG9iYWxWYXI6CiAgICAgICAgIGNhc2UgR2V0R2xv
YmFsTGV4aWNhbFZhcmlhYmxlOgogICAgICAgICBjYXNlIE5vdGlmeVdyaXRlOgotICAgICAgICBj
YXNlIENhbGw6CiAgICAgICAgIGNhc2UgRGlyZWN0Q2FsbDoKICAgICAgICAgY2FzZSBDaGVja1R5
cGVJbmZvRmxhZ3M6CiAgICAgICAgIGNhc2UgVGFpbENhbGxJbmxpbmVkQ2FsbGVyOgpAQCAtMjY1
OSw2ICsyNjY5LDkwIEBAIGNsYXNzIEZpeHVwUGhhc2UgOiBwdWJsaWMgUGhhc2UgewogICAgICAg
ICAgICAgT3BJbmZvKGFycmF5TW9kZS5hc1dvcmQoKSksIEVkZ2UoY2hpbGQsIEtub3duQ2VsbFVz
ZSksIEVkZ2Uoc3RvcmFnZSkpOwogICAgIH0KICAgICAKKyAgICBib29sIGF0dGVtcHRUb01ha2VD
YWxsRE9NKE5vZGUqIG5vZGUpCisgICAgeworICAgICAgICBpZiAobV9ncmFwaC5oYXNFeGl0U2l0
ZShub2RlLT5vcmlnaW4uc2VtYW50aWMsIEJhZFR5cGUpKQorICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOworCisgICAgICAgIGNvbnN0IERPTUpJVDo6U2lnbmF0dXJlKiBzaWduYXR1cmUgPSBub2Rl
LT5zaWduYXR1cmUoKTsKKyAgICAgICAgaWYgKCFzaWduYXR1cmUpCisgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CisKKyAgICAgICAgeworICAgICAgICAgICAgdW5zaWduZWQgaW5kZXggPSAwOwor
ICAgICAgICAgICAgYm9vbCBzaG91bGRDb252ZXJ0VG9DYWxsRE9NID0gdHJ1ZTsKKyAgICAgICAg
ICAgIG1fZ3JhcGguZG9Ub0NoaWxkcmVuKG5vZGUsIFsmXShFZGdlJiBlZGdlKSB7CisgICAgICAg
ICAgICAgICAgLy8gQ2FsbGVlLiBJZ25vcmUgdGhpcy4gREZHQnl0ZUNvZGVQYXJzZXIgYWxyZWFk
eSBlbWl0IGFwcHJvcHJpYXRlIGNoZWNrcy4KKyAgICAgICAgICAgICAgICBpZiAoIWluZGV4KQor
ICAgICAgICAgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgICAgICAgICBpZiAoaW5kZXgg
PT0gMSkgeworICAgICAgICAgICAgICAgICAgICAvLyBET00gbm9kZSBjYXNlLgorICAgICAgICAg
ICAgICAgICAgICBpZiAoZWRnZS0+c2hvdWxkU3BlY3VsYXRlTm90Q2VsbCgpKQorICAgICAgICAg
ICAgICAgICAgICAgICAgc2hvdWxkQ29udmVydFRvQ2FsbERPTSA9IGZhbHNlOworICAgICAgICAg
ICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoc2lnbmF0dXJlLT5h
cmd1bWVudHNbaW5kZXggLSAyXSkgeworICAgICAgICAgICAgICAgICAgICBjYXNlIFNwZWNTdHJp
bmc6CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZWRnZS0+c2hvdWxkU3BlY3VsYXRlTm90
U3RyaW5nKCkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hvdWxkQ29udmVydFRvQ2Fs
bERPTSA9IGZhbHNlOworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICAgICAgICAgIGNhc2UgU3BlY0ludDMyT25seToKKyAgICAgICAgICAgICAgICAgICAgICAgIGlm
IChlZGdlLT5zaG91bGRTcGVjdWxhdGVOb3RJbnQzMigpKQorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHNob3VsZENvbnZlcnRUb0NhbGxET00gPSBmYWxzZTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICBjYXNlIFNwZWNCb29sZWFuOgorICAg
ICAgICAgICAgICAgICAgICAgICAgaWYgKGVkZ2UtPnNob3VsZFNwZWN1bGF0ZU5vdEJvb2xlYW4o
KSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaG91bGRDb252ZXJ0VG9DYWxsRE9NID0g
ZmFsc2U7CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICArK2luZGV4OworICAgICAg
ICAgICAgfSk7CisgICAgICAgICAgICBpZiAoIXNob3VsZENvbnZlcnRUb0NhbGxET00pCisgICAg
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisKKyAgICAgICAgTm9kZSogdGhp
c05vZGUgPSBtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDEpLm5vZGUoKTsKKyAgICAgICAgUmVm
PERPTUpJVDo6UGF0Y2hwb2ludD4gY2hlY2tET01QYXRjaHBvaW50ID0gc2lnbmF0dXJlLT5jaGVj
a0RPTSgpOworICAgICAgICBtX2dyYXBoLm1fZG9tSklUUGF0Y2hwb2ludHMuYXBwZW5kKGNoZWNr
RE9NUGF0Y2hwb2ludC5wdHIoKSk7CisgICAgICAgIE5vZGUqIGNoZWNrRE9NID0gbV9pbnNlcnRp
b25TZXQuaW5zZXJ0Tm9kZShtX2luZGV4SW5CbG9jaywgU3BlY05vbmUsIENoZWNrRE9NLCBub2Rl
LT5vcmlnaW4sIE9wSW5mbyhjaGVja0RPTVBhdGNocG9pbnQucHRyKCkpLCBPcEluZm8oc2lnbmF0
dXJlLT5jbGFzc0luZm8pLCBFZGdlKHRoaXNOb2RlKSk7CisgICAgICAgIG5vZGUtPmNvbnZlcnRU
b0NhbGxET00obV9ncmFwaCk7CisgICAgICAgIGZpeHVwQ2hlY2tET00oY2hlY2tET00pOworICAg
ICAgICBmaXh1cENhbGxET00obm9kZSk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKwor
ICAgIHZvaWQgZml4dXBDaGVja0RPTShOb2RlKiBub2RlKQorICAgIHsKKyAgICAgICAgZml4RWRn
ZTxDZWxsVXNlPihub2RlLT5jaGlsZDEoKSk7CisgICAgfQorCisgICAgdm9pZCBmaXh1cENhbGxE
T00oTm9kZSogbm9kZSkKKyAgICB7CisgICAgICAgIGNvbnN0IERPTUpJVDo6U2lnbmF0dXJlKiBz
aWduYXR1cmUgPSBub2RlLT5zaWduYXR1cmUoKTsKKyAgICAgICAgYXV0byBmaXh1cCA9IFsmXShF
ZGdlJiBlZGdlLCBpbnQgYXJndW1lbnRJbmRleCkgeworICAgICAgICAgICAgaWYgKCFlZGdlKQor
ICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIHN3aXRjaCAoc2lnbmF0dXJlLT5h
cmd1bWVudHNbYXJndW1lbnRJbmRleF0pIHsKKyAgICAgICAgICAgIGNhc2UgU3BlY1N0cmluZzoK
KyAgICAgICAgICAgICAgICBmaXhFZGdlPFN0cmluZ1VzZT4oZWRnZSk7CisgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIFNwZWNJbnQzMk9ubHk6CisgICAgICAgICAgICAg
ICAgZml4RWRnZTxJbnQzMlVzZT4oZWRnZSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICBjYXNlIFNwZWNCb29sZWFuOgorICAgICAgICAgICAgICAgIGZpeEVkZ2U8Qm9vbGVh
blVzZT4oZWRnZSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBkZWZhdWx0
OgorICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH07CisgICAgICAgIGZpeEVk
Z2U8Q2VsbFVzZT4obm9kZS0+Y2hpbGQxKCkpOyAvLyBET00uCisgICAgICAgIGZpeHVwKG5vZGUt
PmNoaWxkMigpLCAwKTsKKyAgICAgICAgZml4dXAobm9kZS0+Y2hpbGQzKCksIDEpOworICAgIH0K
KwogICAgIHZvaWQgZml4dXBDaGVja3NJbkJsb2NrKEJhc2ljQmxvY2sqIGJsb2NrKQogICAgIHsK
ICAgICAgICAgaWYgKCFibG9jaykKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHTm9kZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuY3BwCmlu
ZGV4IGYzNzExN2JmOTY5ZmU0YjY5ZDk1ZjAwMWQ1Njg4MDQ2YmRjZDk0NTAuLmNlMjVjMGRkMTMy
MTBiZTEyYWI5NTc5MDJkYmE2NjlhN2JkODZkZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHTm9kZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdOb2RlLmNwcApAQCAtMjIwLDYgKzIyMCwyNSBAQCB2b2lkIE5vZGU6OmNvbnZlcnRUb0RpcmVj
dENhbGwoRnJvemVuVmFsdWUqIGV4ZWN1dGFibGUpCiAgICAgbV9vcEluZm8gPSBleGVjdXRhYmxl
OwogfQogCit2b2lkIE5vZGU6OmNvbnZlcnRUb0NhbGxET00oR3JhcGgmIGdyYXBoKQoreworICAg
IEFTU0VSVChvcCgpID09IENhbGwpOworICAgIEFTU0VSVChzaWduYXR1cmUoKSk7CisKKyAgICBF
ZGdlIGVkZ2VzWzNdOworICAgIC8vIFNraXAgdGhlIGZpcnN0IG9uZS4gVGhpcyBpcyBjYWxsZWUu
CisgICAgZm9yICh1bnNpZ25lZCBpID0gMSwgaXogPSBudW1DaGlsZHJlbigpOyBpIDwgaXo7ICsr
aSkKKyAgICAgICAgZWRnZXNbaSAtIDFdID0gZ3JhcGgudmFyQXJnQ2hpbGQodGhpcywgaSk7CisK
KyAgICBzZXRPcEFuZERlZmF1bHRGbGFncyhDYWxsRE9NKTsKKyAgICBjaGlsZHJlbi5zZXRDaGls
ZDEoZWRnZXNbMF0pOworICAgIGNoaWxkcmVuLnNldENoaWxkMihlZGdlc1sxXSk7CisgICAgY2hp
bGRyZW4uc2V0Q2hpbGQzKGVkZ2VzWzJdKTsKKworICAgIGlmICghc2lnbmF0dXJlKCktPmVmZmVj
dC5tdXN0R2VuZXJhdGUoKSkKKyAgICAgICAgY2xlYXJGbGFncyhOb2RlTXVzdEdlbmVyYXRlKTsK
K30KKwogU3RyaW5nIE5vZGU6OnRyeUdldFN0cmluZyhHcmFwaCYgZ3JhcGgpCiB7CiAgICAgaWYg
KGhhc0NvbnN0YW50KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R05vZGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCmluZGV4IDg4Zjg4
MTE4OTBlMTc3M2VhMWQ2MDJlOWNhYzljNTgxZGE0ZjliOWIuLjgzMDlhYTMwOWEwYTllNjE0MmNj
YTI5NTE5MjhlYWRhYjk3MmE1YjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHTm9kZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCkBA
IC02Miw2ICs2Miw3IEBAIG5hbWVzcGFjZSBET01KSVQgewogY2xhc3MgR2V0dGVyU2V0dGVyOwog
Y2xhc3MgUGF0Y2hwb2ludDsKIGNsYXNzIENhbGxET01HZXR0ZXJQYXRjaHBvaW50OworY2xhc3Mg
U2lnbmF0dXJlOwogfQogCiBuYW1lc3BhY2UgUHJvZmlsZXIgewpAQCAtNjUyLDYgKzY1Myw4IEBA
IHN0cnVjdCBOb2RlIHsKICAgICB9CiAgICAgCiAgICAgdm9pZCBjb252ZXJ0VG9EaXJlY3RDYWxs
KEZyb3plblZhbHVlKik7CisKKyAgICB2b2lkIGNvbnZlcnRUb0NhbGxET00oR3JhcGgmKTsKICAg
ICAKICAgICBKU1ZhbHVlIGFzSlNWYWx1ZSgpCiAgICAgewpAQCAtMTQ2NCw2ICsxNDY3LDcgQEAg
c3RydWN0IE5vZGUgewogICAgICAgICBjYXNlIFRvTnVtYmVyOgogICAgICAgICBjYXNlIExvYWRG
cm9tSlNNYXBCdWNrZXQ6CiAgICAgICAgIGNhc2UgQ2FsbERPTUdldHRlcjoKKyAgICAgICAgY2Fz
ZSBDYWxsRE9NOgogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIGRlZmF1bHQ6CiAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0xOTgxLDYgKzE5ODUsMTEgQEAgc3RydWN0IE5v
ZGUgewogICAgIHsKICAgICAgICAgcmV0dXJuIGlzSW50MzJTcGVjdWxhdGlvbihwcmVkaWN0aW9u
KCkpOwogICAgIH0KKworICAgIGJvb2wgc2hvdWxkU3BlY3VsYXRlTm90SW50MzIoKQorICAgIHsK
KyAgICAgICAgcmV0dXJuIGlzTm90SW50MzJTcGVjdWxhdGlvbihwcmVkaWN0aW9uKCkpOworICAg
IH0KICAgICAKICAgICBib29sIHNhd0Jvb2xlYW5zKCkKICAgICB7CkBAIC0yMDQxLDYgKzIwNTAs
MTEgQEAgc3RydWN0IE5vZGUgewogICAgIHsKICAgICAgICAgcmV0dXJuIGlzQm9vbGVhblNwZWN1
bGF0aW9uKHByZWRpY3Rpb24oKSk7CiAgICAgfQorCisgICAgYm9vbCBzaG91bGRTcGVjdWxhdGVO
b3RCb29sZWFuKCkKKyAgICB7CisgICAgICAgIHJldHVybiBpc05vdEJvb2xlYW5TcGVjdWxhdGlv
bihwcmVkaWN0aW9uKCkpOworICAgIH0KICAgICAKICAgICBib29sIHNob3VsZFNwZWN1bGF0ZU90
aGVyKCkKICAgICB7CkBAIC0yMDY2LDYgKzIwODAsMTEgQEAgc3RydWN0IE5vZGUgewogICAgIHsK
ICAgICAgICAgcmV0dXJuIGlzU3RyaW5nU3BlY3VsYXRpb24ocHJlZGljdGlvbigpKTsKICAgICB9
CisKKyAgICBib29sIHNob3VsZFNwZWN1bGF0ZU5vdFN0cmluZygpCisgICAgeworICAgICAgICBy
ZXR1cm4gaXNOb3RTdHJpbmdTcGVjdWxhdGlvbihwcmVkaWN0aW9uKCkpOworICAgIH0KICAKICAg
ICBib29sIHNob3VsZFNwZWN1bGF0ZVN0cmluZ09yT3RoZXIoKQogICAgIHsKQEAgLTIzNjgsNiAr
MjM4NywxOCBAQCBzdHJ1Y3QgTm9kZSB7CiAgICAgICAgIHJldHVybiBtX29wSW5mbzIuYXM8Y29u
c3QgQ2xhc3NJbmZvKj4oKTsKICAgICB9CiAKKyAgICBib29sIGhhc1NpZ25hdHVyZSgpIGNvbnN0
CisgICAgeworICAgICAgICAvLyBOb3RlIHRoYXQgdGhpcyBkb2VzIG5vdCBpbmNsdWRlIFRhaWxD
YWxsIHRoaW5neSBpbnRlbnRpb25hbGx5LgorICAgICAgICAvLyBDYWxsRE9NIHRoaW5neSBhcmUg
YWx3YXlzIGNvbnZlcnRlZCBmcm9tIENhbGwuCisgICAgICAgIHJldHVybiBvcCgpID09IENhbGwg
fHwgb3AoKSA9PSBDYWxsRE9NOworICAgIH0KKworICAgIGNvbnN0IERPTUpJVDo6U2lnbmF0dXJl
KiBzaWduYXR1cmUoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fb3BJbmZvLmFzPGNvbnN0IERP
TUpJVDo6U2lnbmF0dXJlKj4oKTsKKyAgICB9CisKICAgICBOb2RlKiByZXBsYWNlbWVudCgpIGNv
bnN0CiAgICAgewogICAgICAgICByZXR1cm4gbV9taXNjLnJlcGxhY2VtZW50OwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCmluZGV4IGQ5NzViNzYyMjBjMDJjMTMxMWMxOTJl
YTlhZDAyZTYwMWE1MjA0ZTAuLmYzNzQyM2NlZWIyMjg2MmI2YzJmYWE1YmJhMDM0NWEzMzZlZjYz
OWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgKQEAgLTQwNyw2ICs0
MDcsNyBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAgICAgLyogTm9kZXMgZm9y
IERPTSBKSVQgKi9cCiAgICAgbWFjcm8oQ2hlY2tET00sIE5vZGVNdXN0R2VuZXJhdGUpIFwKICAg
ICBtYWNybyhDYWxsRE9NR2V0dGVyLCBOb2RlUmVzdWx0SlMgfCBOb2RlTXVzdEdlbmVyYXRlKSBc
CisgICAgbWFjcm8oQ2FsbERPTSwgTm9kZVJlc3VsdEpTIHwgTm9kZU11c3RHZW5lcmF0ZSkgXAog
CiAvLyBUaGlzIGVudW0gZ2VuZXJhdGVzIGEgbW9ub3RvbmljYWxseSBpbmNyZWFzaW5nIGlkIGZv
ciBhbGwgTm9kZSB0eXBlcywKIC8vIGFuZCBpcyB1c2VkIGJ5IHRoZSBzdWJzZXF1ZW50IGVudW0g
dG8gZmlsbCBvdXQgdGhlIGlkIChhcyBhY2Nlc3NlZCB2aWEgdGhlIE5vZGVJZE1hc2spLgpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRp
b25QaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9w
YWdhdGlvblBoYXNlLmNwcAppbmRleCA2ZWQ3MjliM2I4NTczMWMwYTZlNTA5NjcwOWY5ODAxNmE0
YjFmOGUwLi5jMGZkZTk2OWZiYzI0NmM2YjkxODYwMGRjNDdhZjc5YWFkMWE2ZmY5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBo
YXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9w
YWdhdGlvblBoYXNlLmNwcApAQCAtNzEwLDcgKzcxMCw4IEBAIGNsYXNzIFByZWRpY3Rpb25Qcm9w
YWdhdGlvblBoYXNlIDogcHVibGljIFBoYXNlIHsKICAgICAgICAgY2FzZSBHZXRGcm9tQXJndW1l
bnRzOgogICAgICAgICBjYXNlIExvYWRGcm9tSlNNYXBCdWNrZXQ6CiAgICAgICAgIGNhc2UgVG9O
dW1iZXI6Ci0gICAgICAgIGNhc2UgQ2FsbERPTUdldHRlcjogeworICAgICAgICBjYXNlIENhbGxE
T01HZXR0ZXI6CisgICAgICAgIGNhc2UgQ2FsbERPTTogewogICAgICAgICAgICAgc2V0UHJlZGlj
dGlvbihtX2N1cnJlbnROb2RlLT5nZXRIZWFwUHJlZGljdGlvbigpKTsKICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NhZmVUb0V4ZWN1dGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhl
Y3V0ZS5oCmluZGV4IDJjOTk4MDIyNTY2N2RmMzQwNTBkY2E2YTM0ZTg3ZjM0ZDU5OGVkMmIuLjNm
ZTlkYzE1ZGVlMTdiODFkMjJmZjY0NDNmZWQ2N2Y0NzY5NjNjYTAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCkBAIC0yMjAsNiArMjIwLDcgQEAgYm9v
bCBzYWZlVG9FeGVjdXRlKEFic3RyYWN0U3RhdGVUeXBlJiBzdGF0ZSwgR3JhcGgmIGdyYXBoLCBO
b2RlKiBub2RlKQogICAgIGNhc2UgR2V0RXhlY3V0YWJsZToKICAgICBjYXNlIEdldEJ1dHRlcmZs
eToKICAgICBjYXNlIENhbGxET01HZXR0ZXI6CisgICAgY2FzZSBDYWxsRE9NOgogICAgIGNhc2Ug
Q2hlY2tET006CiAgICAgY2FzZSBDaGVja0FycmF5OgogICAgIGNhc2UgQXJyYXlpZnk6CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCmluZGV4IDI3
MzJmZTg1ODQ0ZTUxZjQ2NzBiMGFlNDAzZjJhYzIzNTA0Yzg3MWMuLjlmZGU1NTU0NGNhMWEyMGVl
ODVlODVmNTI1MGVmNjBmN2I1OGIxYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCkBAIC03MjYwLDYgKzcyNjAsODYgQEAgc3RhdGljIHZv
aWQgYWxsb2NhdGVUZW1wb3JhcnlSZWdpc3RlcnNGb3JQYXRjaHBvaW50KFNwZWN1bGF0aXZlSklU
KiBqaXQsIFZlY3RvcjwKICAgICB9CiB9CiAKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVD
YWxsRE9NKE5vZGUqIG5vZGUpCit7CisgICAgY29uc3QgRE9NSklUOjpTaWduYXR1cmUqIHNpZ25h
dHVyZSA9IG5vZGUtPnNpZ25hdHVyZSgpOworCisgICAgLy8gRklYTUU6IFdlIHNob3VsZCBoYXZl
IGEgd2F5IHRvIGNhbGwgZnVuY3Rpb25zIHdpdGggdGhlIHZlY3RvciBvZiByZWdpc3RlcnMuCisg
ICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MzA5OQorICAg
IFZlY3RvcjxWYXJpYW50PFNwZWN1bGF0ZUNlbGxPcGVyYW5kLCBTcGVjdWxhdGVJbnQzMk9wZXJh
bmQsIFNwZWN1bGF0ZUJvb2xlYW5PcGVyYW5kPj4gb3BlcmFuZHM7CisgICAgVmVjdG9yPEdQUlJl
Zz4gcmVnczsKKworICAgIGF1dG8gYXBwZW5kQ2VsbCA9IFsmXShFZGdlJiBlZGdlKSB7CisgICAg
ICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIG9wZXJhbmQodGhpcywgZWRnZSk7CisgICAgICAgIHJl
Z3MuYXBwZW5kKG9wZXJhbmQuZ3ByKCkpOworICAgICAgICBvcGVyYW5kcy5hcHBlbmQoV1RGTW92
ZShvcGVyYW5kKSk7CisgICAgfTsKKworICAgIGF1dG8gYXBwZW5kU3RyaW5nID0gWyZdKEVkZ2Um
IGVkZ2UpIHsKKyAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgb3BlcmFuZCh0aGlzLCBlZGdl
KTsKKyAgICAgICAgR1BSUmVnIGdwciA9IG9wZXJhbmQuZ3ByKCk7CisgICAgICAgIHJlZ3MuYXBw
ZW5kKGdwcik7CisgICAgICAgIHNwZWN1bGF0ZVN0cmluZyhlZGdlLCBncHIpOworICAgICAgICBv
cGVyYW5kcy5hcHBlbmQoV1RGTW92ZShvcGVyYW5kKSk7CisgICAgfTsKKworICAgIGF1dG8gYXBw
ZW5kSW50MzIgPSBbJl0oRWRnZSYgZWRnZSkgeworICAgICAgICBTcGVjdWxhdGVJbnQzMk9wZXJh
bmQgb3BlcmFuZCh0aGlzLCBlZGdlKTsKKyAgICAgICAgcmVncy5hcHBlbmQob3BlcmFuZC5ncHIo
KSk7CisgICAgICAgIG9wZXJhbmRzLmFwcGVuZChXVEZNb3ZlKG9wZXJhbmQpKTsKKyAgICB9Owor
CisgICAgYXV0byBhcHBlbmRCb29sZWFuID0gWyZdKEVkZ2UmIGVkZ2UpIHsKKyAgICAgICAgU3Bl
Y3VsYXRlQm9vbGVhbk9wZXJhbmQgb3BlcmFuZCh0aGlzLCBlZGdlKTsKKyAgICAgICAgcmVncy5h
cHBlbmQob3BlcmFuZC5ncHIoKSk7CisgICAgICAgIG9wZXJhbmRzLmFwcGVuZChXVEZNb3ZlKG9w
ZXJhbmQpKTsKKyAgICB9OworCisgICAgdW5zaWduZWQgaW5kZXggPSAwOworICAgIG1faml0Lmdy
YXBoKCkuZG9Ub0NoaWxkcmVuKG5vZGUsIFsmXShFZGdlIGVkZ2UpIHsKKyAgICAgICAgaWYgKCFp
bmRleCkKKyAgICAgICAgICAgIGFwcGVuZENlbGwoZWRnZSk7CisgICAgICAgIGVsc2UgeworICAg
ICAgICAgICAgc3dpdGNoIChzaWduYXR1cmUtPmFyZ3VtZW50c1tpbmRleCAtIDFdKSB7CisgICAg
ICAgICAgICBjYXNlIFNwZWNTdHJpbmc6CisgICAgICAgICAgICAgICAgYXBwZW5kU3RyaW5nKGVk
Z2UpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBTcGVjSW50MzJP
bmx5OgorICAgICAgICAgICAgICAgIGFwcGVuZEludDMyKGVkZ2UpOworICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgY2FzZSBTcGVjQm9vbGVhbjoKKyAgICAgICAgICAgICAgICBh
cHBlbmRCb29sZWFuKGVkZ2UpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg
fQorICAgICAgICB9CisgICAgICAgICsraW5kZXg7CisgICAgfSk7CisKKyAgICBKU1ZhbHVlUmVn
c1RlbXBvcmFyeSByZXN1bHQodGhpcyk7CisgICAgSlNWYWx1ZVJlZ3MgcmVzdWx0UmVncyA9IHJl
c3VsdC5yZWdzKCk7CisKKyAgICBzaWxlbnRTcGlsbEFsbFJlZ2lzdGVycyhyZXN1bHRSZWdzKTsK
KyAgICBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgPSBzaWduYXR1cmUtPmFyZ3VtZW50
Q291bnQgKyAxOworICAgIHN3aXRjaCAoYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpIHsKKyAg
ICBjYXNlIDE6CisgICAgICAgIGNhbGxPcGVyYXRpb24ocmVpbnRlcnByZXRfY2FzdDxKX0pJVE9w
ZXJhdGlvbl9FUD4oc2lnbmF0dXJlLT51bnNhZmVGdW5jdGlvbiksIGV4dHJhY3RSZXN1bHQocmVz
dWx0UmVncyksIHJlZ3NbMF0pOworICAgICAgICBicmVhazsKKyAgICBjYXNlIDI6CisgICAgICAg
IGNhbGxPcGVyYXRpb24ocmVpbnRlcnByZXRfY2FzdDxKX0pJVE9wZXJhdGlvbl9FUFA+KHNpZ25h
dHVyZS0+dW5zYWZlRnVuY3Rpb24pLCBleHRyYWN0UmVzdWx0KHJlc3VsdFJlZ3MpLCByZWdzWzBd
LCByZWdzWzFdKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSAzOgorICAgICAgICBjYWxsT3Bl
cmF0aW9uKHJlaW50ZXJwcmV0X2Nhc3Q8Sl9KSVRPcGVyYXRpb25fRVBQUD4oc2lnbmF0dXJlLT51
bnNhZmVGdW5jdGlvbiksIGV4dHJhY3RSZXN1bHQocmVzdWx0UmVncyksIHJlZ3NbMF0sIHJlZ3Nb
MV0sIHJlZ3NbMl0pOworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBSRUxF
QVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICBz
aWxlbnRGaWxsQWxsUmVnaXN0ZXJzKHJlc3VsdFJlZ3MpOworICAgIG1faml0LmV4Y2VwdGlvbkNo
ZWNrKCk7CisgICAganNWYWx1ZVJlc3VsdChyZXN1bHRSZWdzLCBub2RlKTsKK30KKwogdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUNhbGxET01HZXR0ZXIoTm9kZSogbm9kZSkKIHsKICAgICBE
T01KSVQ6OkNhbGxET01HZXR0ZXJQYXRjaHBvaW50KiBwYXRjaHBvaW50ID0gbm9kZS0+Y2FsbERP
TUdldHRlckRhdGEoKS0+cGF0Y2hwb2ludDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU3BlY3VsYXRpdmVKSVQuaAppbmRleCA1NjUzOGEyOTQ2ZTQwMzAwZjA1MGYzMzU1MmE3M2Nj
YTc1OWNlYWNhLi43OTZhOGEzNWU2ZDMwNTdmYWFiZWEwNzlhMDIwM2Q1ZDQ5OWE5NWIxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCkBAIC0xNjUx
LDYgKzE2NTEsMTEgQEAgY2xhc3MgU3BlY3VsYXRpdmVKSVQgewogICAgICAgICBtX2ppdC5zZXR1
cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMik7CiAgICAgICAgIHJldHVybiBhcHBl
bmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9CisgICAgSklUQ29tcGls
ZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihKX0pJVE9wZXJhdGlvbl9FUFBQIG9wZXJhdGlvbiwgR1BS
UmVnIHJlc3VsdCwgR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyLCBHUFJSZWcgYXJnMykKKyAgICB7
CisgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyLCBh
cmczKTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1
bHQpOworICAgIH0KICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpfSklUT3Bl
cmF0aW9uX0VHUCBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIEdQUlJlZyBhcmcxLCBHUFJSZWcg
YXJnMikKICAgICB7CiAgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShh
cmcxLCBhcmcyKTsKQEAgLTE5MTUsNiArMTkyMCwxNiBAQCBjbGFzcyBTcGVjdWxhdGl2ZUpJVCB7
CiAgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBUcnVzdGVk
SW1tUHRyKHBvaW50ZXIpKTsKICAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3Bl
cmF0aW9uLCByZXN1bHQucGF5bG9hZEdQUigpLCByZXN1bHQudGFnR1BSKCkpOwogICAgIH0KKyAg
ICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpfSklUT3BlcmF0aW9uX0VQUCBvcGVy
YXRpb24sIEpTVmFsdWVSZWdzIHJlc3VsdCwgR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyKQorICAg
IHsKKyAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIp
OworICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdC5w
YXlsb2FkR1BSKCksIHJlc3VsdC50YWdHUFIoKSk7CisgICAgfQorICAgIEpJVENvbXBpbGVyOjpD
YWxsIGNhbGxPcGVyYXRpb24oSl9KSVRPcGVyYXRpb25fRVBQUCBvcGVyYXRpb24sIEpTVmFsdWVS
ZWdzIHJlc3VsdCwgR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyLCBHUFJSZWcgYXJnMykKKyAgICB7
CisgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyLCBh
cmczKTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1
bHQucGF5bG9hZEdQUigpLCByZXN1bHQudGFnR1BSKCkpOworICAgIH0KICAgICBKSVRDb21waWxl
cjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpfSklUT3BlcmF0aW9uX0VHUCBvcGVyYXRpb24sIEpTVmFs
dWVSZWdzIHJlc3VsdCwgR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyKQogICAgIHsKICAgICAgICAg
bV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIpOwpAQCAtMjU2Miw2
ICsyNTc3LDcgQEAgY2xhc3MgU3BlY3VsYXRpdmVKSVQgewogICAgIHZvaWQgY29tcGlsZVJlYWxs
b2NhdGVQcm9wZXJ0eVN0b3JhZ2UoTm9kZSopOwogICAgIHZvaWQgY29tcGlsZUdldEJ1dHRlcmZs
eShOb2RlKik7CiAgICAgdm9pZCBjb21waWxlQ2FsbERPTUdldHRlcihOb2RlKik7CisgICAgdm9p
ZCBjb21waWxlQ2FsbERPTShOb2RlKik7CiAgICAgdm9pZCBjb21waWxlQ2hlY2tET00oTm9kZSop
OwogICAgIAogI2lmIFVTRShKU1ZBTFVFMzJfNjQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAppbmRleCBjYjA0YTVhNjVjNzUw
ZTIzZjE3YzlkYjIzNDE1YjczNGFlZjViNGE0Li4xMDI0MjlkZTAwMGIzMmFkZmRkMDI3NDNlYzZk
ZmRkZWU4MWY1M2FjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nw
ZWN1bGF0aXZlSklUMzJfNjQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKQEAgLTU1NjEsNiArNTU2MSwxMCBAQCB2b2lkIFNwZWN1
bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIGJyZWFrOwogICAgIH0KIAor
ICAgIGNhc2UgQ2FsbERPTToKKyAgICAgICAgY29tcGlsZUNhbGxET00obm9kZSk7CisgICAgICAg
IGJyZWFrOworCiAgICAgY2FzZSBDYWxsRE9NR2V0dGVyOgogICAgICAgICBjb21waWxlQ2FsbERP
TUdldHRlcihub2RlKTsKICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAppbmRleCBiNDFjNmYzMmIzM2Q4M2M2NWU4
NTRmODYwNzhkNzRhNTI0MDI5ODEzLi44MzBiZmFkY2FmMjg2NjdhMDhiMWI4MmVlNTk4OGMwYzY1
ZDJjYWI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0
aXZlSklUNjQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRp
dmVKSVQ2NC5jcHAKQEAgLTU2OTMsNiArNTY5MywxMCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpj
b21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIGNvbXBpbGVNYXRlcmlhbGl6ZU5ld09iamVjdChu
b2RlKTsKICAgICAgICAgYnJlYWs7CiAKKyAgICBjYXNlIENhbGxET006CisgICAgICAgIGNvbXBp
bGVDYWxsRE9NKG5vZGUpOworICAgICAgICBicmVhazsKKwogICAgIGNhc2UgQ2FsbERPTUdldHRl
cjoKICAgICAgICAgY29tcGlsZUNhbGxET01HZXR0ZXIobm9kZSk7CiAgICAgICAgIGJyZWFrOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RvbWppdC9ET01KSVRFZmZlY3QuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kb21qaXQvRE9NSklURWZmZWN0LmgKaW5kZXggNTllMzAw
YzM5MjYxMDQ3YTExMjI5MGRhODZiNGZhMTY4ZDljNjMwNi4uNjFjZjNiNzFhYmJjZTMxZTQ1MTM2
YWYyODZjNmM3YWYyMzY2OGE2YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rv
bWppdC9ET01KSVRFZmZlY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZG9taml0L0RP
TUpJVEVmZmVjdC5oCkBAIC0yOCw1NiArMjgsNjIgQEAKICNpbmNsdWRlICJET01KSVRIZWFwUmFu
Z2UuaCIKICNpbmNsdWRlIDx3dGYvT3B0aW9uYWwuaD4KIAotI2lmIEVOQUJMRShKSVQpCi0KIG5h
bWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgRE9NSklUIHsKIAotc3RydWN0IEVmZmVjdCB7CitjbGFz
cyBFZmZlY3QgeworcHVibGljOgogICAgIEhlYXBSYW5nZSByZWFkcyB7IEhlYXBSYW5nZTo6dG9w
KCkgfTsKICAgICBIZWFwUmFuZ2Ugd3JpdGVzIHsgSGVhcFJhbmdlOjp0b3AoKSB9OwotICAgIE9w
dGlvbmFsPEhlYXBSYW5nZT4gZGVmOworICAgIEhlYXBSYW5nZSBkZWYgeyBIZWFwUmFuZ2U6OnRv
cCgpIH07CisKKyAgICBjb25zdGV4cHIgRWZmZWN0KCkgPSBkZWZhdWx0OworICAgIGNvbnN0ZXhw
ciBFZmZlY3QoSGVhcFJhbmdlIHJlYWRzLCBIZWFwUmFuZ2Ugd3JpdGVzKQorICAgICAgICA6IHJl
YWRzKHJlYWRzKQorICAgICAgICAsIHdyaXRlcyh3cml0ZXMpCisgICAgeworICAgIH0KKworICAg
IGNvbnN0ZXhwciBFZmZlY3QoSGVhcFJhbmdlIHJlYWRzLCBIZWFwUmFuZ2Ugd3JpdGVzLCBIZWFw
UmFuZ2UgZGVmKQorICAgICAgICA6IHJlYWRzKHJlYWRzKQorICAgICAgICAsIHdyaXRlcyh3cml0
ZXMpCisgICAgICAgICwgZGVmKGRlZikKKyAgICB7CisgICAgfQogCi0gICAgc3RhdGljIEVmZmVj
dCBmb3JSZWFkV3JpdGUoSGVhcFJhbmdlIHJlYWRSYW5nZSwgSGVhcFJhbmdlIHdyaXRlUmFuZ2Up
CisgICAgY29uc3RleHByIHN0YXRpYyBFZmZlY3QgZm9yV3JpdGUoSGVhcFJhbmdlIHdyaXRlUmFu
Z2UpCiAgICAgewotICAgICAgICBFZmZlY3QgZWZmZWN0OwotICAgICAgICBlZmZlY3QucmVhZHMg
PSByZWFkUmFuZ2U7Ci0gICAgICAgIGVmZmVjdC53cml0ZXMgPSB3cml0ZVJhbmdlOwotICAgICAg
ICByZXR1cm4gZWZmZWN0OworICAgICAgICByZXR1cm4gRWZmZWN0KEhlYXBSYW5nZTo6bm9uZSgp
LCB3cml0ZVJhbmdlKTsKICAgICB9CiAKLSAgICBzdGF0aWMgRWZmZWN0IGZvclB1cmUoKQorICAg
IGNvbnN0ZXhwciBzdGF0aWMgRWZmZWN0IGZvclJlYWQoSGVhcFJhbmdlIHJlYWRSYW5nZSkKICAg
ICB7Ci0gICAgICAgIEVmZmVjdCBlZmZlY3Q7Ci0gICAgICAgIGVmZmVjdC5yZWFkcyA9IEhlYXBS
YW5nZTo6bm9uZSgpOwotICAgICAgICBlZmZlY3Qud3JpdGVzID0gSGVhcFJhbmdlOjpub25lKCk7
Ci0gICAgICAgIGVmZmVjdC5kZWYgPSBIZWFwUmFuZ2U6Om5vbmUoKTsKLSAgICAgICAgcmV0dXJu
IGVmZmVjdDsKKyAgICAgICAgcmV0dXJuIEVmZmVjdChyZWFkUmFuZ2UsIEhlYXBSYW5nZTo6bm9u
ZSgpKTsKICAgICB9CiAKLSAgICBzdGF0aWMgRWZmZWN0IGZvckRlZihIZWFwUmFuZ2UgZGVmKQor
ICAgIGNvbnN0ZXhwciBzdGF0aWMgRWZmZWN0IGZvclJlYWRXcml0ZShIZWFwUmFuZ2UgcmVhZFJh
bmdlLCBIZWFwUmFuZ2Ugd3JpdGVSYW5nZSkKICAgICB7Ci0gICAgICAgIEVmZmVjdCBlZmZlY3Q7
Ci0gICAgICAgIGVmZmVjdC5yZWFkcyA9IGRlZjsKLSAgICAgICAgZWZmZWN0LndyaXRlcyA9IEhl
YXBSYW5nZTo6bm9uZSgpOwotICAgICAgICBlZmZlY3QuZGVmID0gZGVmOwotICAgICAgICByZXR1
cm4gZWZmZWN0OworICAgICAgICByZXR1cm4gRWZmZWN0KHJlYWRSYW5nZSwgd3JpdGVSYW5nZSk7
CiAgICAgfQogCi0gICAgc3RhdGljIEVmZmVjdCBmb3JEZWYoSGVhcFJhbmdlIGRlZiwgSGVhcFJh
bmdlIHJlYWRSYW5nZSwgSGVhcFJhbmdlIHdyaXRlUmFuZ2UpCisgICAgY29uc3RleHByIHN0YXRp
YyBFZmZlY3QgZm9yUHVyZSgpCiAgICAgewotICAgICAgICBFZmZlY3QgZWZmZWN0OwotICAgICAg
ICBlZmZlY3QucmVhZHMgPSByZWFkUmFuZ2U7Ci0gICAgICAgIGVmZmVjdC53cml0ZXMgPSB3cml0
ZVJhbmdlOwotICAgICAgICBlZmZlY3QuZGVmID0gZGVmOwotICAgICAgICByZXR1cm4gZWZmZWN0
OworICAgICAgICByZXR1cm4gRWZmZWN0KEhlYXBSYW5nZTo6bm9uZSgpLCBIZWFwUmFuZ2U6Om5v
bmUoKSwgSGVhcFJhbmdlOjpub25lKCkpOwogICAgIH0KIAotICAgIGJvb2wgbXVzdEdlbmVyYXRl
KCkgY29uc3QKKyAgICBjb25zdGV4cHIgc3RhdGljIEVmZmVjdCBmb3JEZWYoSGVhcFJhbmdlIGRl
ZikKKyAgICB7CisgICAgICAgIHJldHVybiBFZmZlY3QoZGVmLCBIZWFwUmFuZ2U6Om5vbmUoKSwg
ZGVmKTsKKyAgICB9CisKKyAgICBjb25zdGV4cHIgc3RhdGljIEVmZmVjdCBmb3JEZWYoSGVhcFJh
bmdlIGRlZiwgSGVhcFJhbmdlIHJlYWRSYW5nZSwgSGVhcFJhbmdlIHdyaXRlUmFuZ2UpCisgICAg
eworICAgICAgICByZXR1cm4gRWZmZWN0KHJlYWRSYW5nZSwgd3JpdGVSYW5nZSwgZGVmKTsKKyAg
ICB9CisKKyAgICBjb25zdGV4cHIgYm9vbCBtdXN0R2VuZXJhdGUoKSBjb25zdAogICAgIHsKICAg
ICAgICAgcmV0dXJuICEhd3JpdGVzOwogICAgIH0KIH07CiAKIH0gfQotCi0jZW5kaWYKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kb21qaXQvRE9NSklUSGVhcFJhbmdlLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZG9taml0L0RPTUpJVEhlYXBSYW5nZS5oCmluZGV4IGZiOTM5
OTlmZjc4NWMwNmY3ZGFjZDZkYTljOGQ2ZTBhOTU2Nzg2NzQuLmZjMzIwNmU4OTAzZGQxNWE0NDA3
ZTEyYjM3YTYxNTZjNTlmZTExMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
b21qaXQvRE9NSklUSGVhcFJhbmdlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RvbWpp
dC9ET01KSVRIZWFwUmFuZ2UuaApAQCAtMjgsOCArMjgsNiBAQAogI2luY2x1ZGUgPHd0Zi9NYXRo
RXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL1ByaW50U3RyZWFtLmg+CiAKLSNpZiBFTkFCTEUoSklU
KQotCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERPTUpJVCB7CiAKIGNsYXNzIEhlYXBSYW5n
ZSB7CkBAIC00Nyw3ICs0NSw2IEBAIGNsYXNzIEhlYXBSYW5nZSB7CiAgICAgICAgIEFTU0VSVF9X
SVRIX01FU1NBR0UoYmVnaW4gPD0gZW5kLCAiYmVnaW4gPD0gZW5kIGlzIHRoZSBpbnZhcmlhbnQg
b2YgdGhpcyBIZWFwUmFuZ2UuIik7CiAgICAgfQogCi1wcml2YXRlOgogICAgIGVudW0gQ29uc3RF
eHByVGFnIHsgQ29uc3RFeHByIH07CiAgICAgY29uc3RleHByIEhlYXBSYW5nZShDb25zdEV4cHJU
YWcsIHVpbnQxNl90IGJlZ2luLCB1aW50MTZfdCBlbmQpCiAgICAgICAgIDogbV9iZWdpbihiZWdp
bikKQEAgLTU1LDIxICs1MiwxMyBAQCBjbGFzcyBIZWFwUmFuZ2UgewogICAgIHsKICAgICB9CiAK
LSAgICB0ZW1wbGF0ZTx1aW50MTZfdCBiZWdpbiwgdWludDE2X3QgZW5kPgotICAgIHN0YXRpYyBj
b25zdGV4cHIgSGVhcFJhbmdlIGZyb21Db25zdGFudCgpCi0gICAgewotICAgICAgICBzdGF0aWNf
YXNzZXJ0KGJlZ2luIDw9IGVuZCwgImJlZ2luIDw9IGVuZCBpcyB0aGUgaW52YXJpYW50IG9mIHRo
aXMgSGVhcFJhbmdlLiIpOwotICAgICAgICByZXR1cm4gSGVhcFJhbmdlKENvbnN0RXhwciwgYmVn
aW4sIGVuZCk7Ci0gICAgfQotCi1wdWJsaWM6CiAgICAgZW51bSBSYXdSZXByZXNlbnRhdGlvblRh
ZyB7IFJhd1JlcHJlc2VudGF0aW9uIH07CiAgICAgZXhwbGljaXQgY29uc3RleHByIEhlYXBSYW5n
ZShSYXdSZXByZXNlbnRhdGlvblRhZywgdWludDMyX3QgdmFsdWUpCiAgICAgICAgIDogbV9yYXco
dmFsdWUpCiAgICAgewogICAgIH0KIAotICAgIHN0YXRpYyBIZWFwUmFuZ2UgZnJvbVJhdyh1aW50
MzJfdCB2YWx1ZSkKKyAgICBjb25zdGV4cHIgc3RhdGljIEhlYXBSYW5nZSBmcm9tUmF3KHVpbnQz
Ml90IHZhbHVlKQogICAgIHsKICAgICAgICAgcmV0dXJuIEhlYXBSYW5nZShSYXdSZXByZXNlbnRh
dGlvbiwgdmFsdWUpOwogICAgIH0KQEAgLTgzLDExICs3MiwyMyBAQCBjbGFzcyBIZWFwUmFuZ2Ug
ewogICAgICAgICByZXR1cm4gbV9iZWdpbiAhPSBtX2VuZDsKICAgICB9CiAKLSAgICBib29sIG9w
ZXJhdG9yPT0oY29uc3QgSGVhcFJhbmdlJiBvdGhlcikgY29uc3QKKyAgICBjb25zdGV4cHIgYm9v
bCBvcGVyYXRvcj09KGNvbnN0IEhlYXBSYW5nZSYgb3RoZXIpIGNvbnN0CiAgICAgewogICAgICAg
ICByZXR1cm4gbV9iZWdpbiA9PSBvdGhlci5tX2JlZ2luICYmIG1fZW5kID09IG90aGVyLm1fZW5k
OwogICAgIH0KIAorICAgIGNvbnN0ZXhwciBib29sIG9wZXJhdG9yIT0oY29uc3QgSGVhcFJhbmdl
JiBvdGhlcikgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiAhb3BlcmF0b3I9PShvdGhlcik7
CisgICAgfQorCisgICAgdGVtcGxhdGU8dWludDE2X3QgYmVnaW4sIHVpbnQxNl90IGVuZD4KKyAg
ICBzdGF0aWMgY29uc3RleHByIEhlYXBSYW5nZSBmcm9tQ29uc3RhbnQoKQorICAgIHsKKyAgICAg
ICAgc3RhdGljX2Fzc2VydChiZWdpbiA8PSBlbmQsICJiZWdpbiA8PSBlbmQgaXMgdGhlIGludmFy
aWFudCBvZiB0aGlzIEhlYXBSYW5nZS4iKTsKKyAgICAgICAgcmV0dXJuIEhlYXBSYW5nZShDb25z
dEV4cHIsIGJlZ2luLCBlbmQpOworICAgIH0KKwogICAgIHN0YXRpYyBjb25zdGV4cHIgSGVhcFJh
bmdlIHRvcCgpIHsgcmV0dXJuIGZyb21Db25zdGFudDwwLCBVSU5UMTZfTUFYPigpOyB9CiAgICAg
c3RhdGljIGNvbnN0ZXhwciBIZWFwUmFuZ2Ugbm9uZSgpIHsgcmV0dXJuIGZyb21Db25zdGFudDxV
SU5UMTZfTUFYLCBVSU5UMTZfTUFYPigpOyB9IC8vIEVtcHR5IHJhbmdlLgogCkBAIC0xMjcsNSAr
MTI4LDMgQEAgY2xhc3MgSGVhcFJhbmdlIHsKIH07CiAKIH0gfQotCi0jZW5kaWYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kb21qaXQvRE9NSklUU2lnbmF0dXJlLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZG9taml0L0RPTUpJVFNpZ25hdHVyZS5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM3
ZDYwZWQ3ZjNlYWYwNjNkOWIwYzlkODllZDYzNDg3YzRjYmI1YTMKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZG9taml0L0RPTUpJVFNpZ25hdHVyZS5oCkBAIC0wLDAg
KzEsNzAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
cHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkNsYXNzSW5mby5oIgorI2luY2x1ZGUgIkRPTUpJVEVm
ZmVjdC5oIgorI2luY2x1ZGUgIlNwZWN1bGF0ZWRUeXBlLmgiCisKK25hbWVzcGFjZSBKU0MgeyBu
YW1lc3BhY2UgRE9NSklUIHsKKworLy8gQ3VycmVudGx5LCB3ZSBvbmx5IHN1cHBvcnQgZnVuY3Rp
b25zIHdoaWNoIGFyZ3VtZW50cyB1cCB0byAyLgorLy8gRXZlbnR1YWxseSwgd2Ugc2hvdWxkIGV4
dGVuZCB0aGlzLiBCdXQgcG9zc2libHksIDIgb3IgMyBjYW4gY292ZXIgdHlwaWNhbCB1c2UgY2Fz
ZXMuCisjZGVmaW5lIEpTQ19ET01KSVRfU0lHTkFUVVJFX01BWF9BUkdVTUVOVFMgMgorCitjbGFz
cyBQYXRjaHBvaW50OworCit0eXBlZGVmIFJlZjxQYXRjaHBvaW50PiBDaGVja0RPTUdlbmVyYXRv
ckZ1bmN0aW9uKHZvaWQpOworCitjbGFzcyBTaWduYXR1cmUgeworcHVibGljOgorICAgIHRlbXBs
YXRlPHR5cGVuYW1lLi4uIEFyZ3VtZW50cz4KKyAgICBjb25zdGV4cHIgU2lnbmF0dXJlKHVpbnRw
dHJfdCB1bnNhZmVGdW5jdGlvbiwgQ2hlY2tET01HZW5lcmF0b3JGdW5jdGlvbiogY2hlY2tET01H
ZW5lcmF0b3JGdW5jdGlvbiwgY29uc3QgQ2xhc3NJbmZvKiBjbGFzc0luZm8sIEVmZmVjdCBlZmZl
Y3QsIFNwZWN1bGF0ZWRUeXBlIHJlc3VsdCwgQXJndW1lbnRzLi4uIGFyZ3VtZW50cykKKyAgICAg
ICAgOiB1bnNhZmVGdW5jdGlvbih1bnNhZmVGdW5jdGlvbikKKyAgICAgICAgLCBjaGVja0RPTUdl
bmVyYXRvckZ1bmN0aW9uKGNoZWNrRE9NR2VuZXJhdG9yRnVuY3Rpb24pCisgICAgICAgICwgY2xh
c3NJbmZvKGNsYXNzSW5mbykKKyAgICAgICAgLCBlZmZlY3QoZWZmZWN0KQorICAgICAgICAsIHJl
c3VsdChyZXN1bHQpCisgICAgICAgICwgYXJndW1lbnRzIHtzdGF0aWNfY2FzdDxTcGVjdWxhdGVk
VHlwZT4oYXJndW1lbnRzKS4uLn0KKyAgICAgICAgLCBhcmd1bWVudENvdW50KHNpemVvZi4uLihh
cmd1bWVudHMpKQorICAgIHsKKyAgICB9CisKKyAgICBSZWY8UGF0Y2hwb2ludD4gY2hlY2tET00o
KSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIGNoZWNrRE9NR2VuZXJhdG9yRnVuY3Rpb24o
KTsKKyAgICB9CisKKyAgICB1aW50cHRyX3QgdW5zYWZlRnVuY3Rpb247CisgICAgQ2hlY2tET01H
ZW5lcmF0b3JGdW5jdGlvbiogY2hlY2tET01HZW5lcmF0b3JGdW5jdGlvbjsKKyAgICBjb25zdCBD
bGFzc0luZm8qIGNvbnN0IGNsYXNzSW5mbzsKKyAgICBjb25zdCBFZmZlY3QgZWZmZWN0OworICAg
IGNvbnN0IFNwZWN1bGF0ZWRUeXBlIHJlc3VsdDsKKyAgICBjb25zdCBTcGVjdWxhdGVkVHlwZSBh
cmd1bWVudHNbSlNDX0RPTUpJVF9TSUdOQVRVUkVfTUFYX0FSR1VNRU5UU107CisgICAgY29uc3Qg
dW5zaWduZWQgYXJndW1lbnRDb3VudDsKK307CisKK30gfQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCmluZGV4IDU0ZjRlNzJlNjQxOWJmZTI1NTY1M2Uz
NjVmYmFjODIwMzJmZmRlOTcuLjNiYTE1ZTZlMjg0NGQzMDQwM2U4ZGQ0ZTAxNmMyNGIwYzA0NmRm
YzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVz
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAK
QEAgLTI3Myw2ICsyNzMsNyBAQCBpbmxpbmUgQ2FwYWJpbGl0eUxldmVsIGNhbkNvbXBpbGUoTm9k
ZSogbm9kZSkKICAgICBjYXNlIERlZmluZUFjY2Vzc29yUHJvcGVydHk6CiAgICAgY2FzZSBUb0xv
d2VyQ2FzZToKICAgICBjYXNlIENoZWNrRE9NOgorICAgIGNhc2UgQ2FsbERPTToKICAgICBjYXNl
IENhbGxET01HZXR0ZXI6CiAgICAgICAgIC8vIFRoZXNlIGFyZSBPSy4KICAgICAgICAgYnJlYWs7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKaW5kZXgg
YWQxNjE1NzIwMjdjNDFmMzAwNjgzZGMxMjI0MmY5Yjk1ZDQ1OTBjMi4uNDBlYmMxNTc5MGNkMGQ0
NTM4N2ZjNTBkZGZmMmQ4NTExZTZlN2YwZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9m
dGwvRlRMTG93ZXJERkdUb0IzLmNwcApAQCAtMTA2MCw2ICsxMDYwLDkgQEAgY2xhc3MgTG93ZXJE
RkdUb0IzIHsKICAgICAgICAgY2FzZSBDaGVja0RPTToKICAgICAgICAgICAgIGNvbXBpbGVDaGVj
a0RPTSgpOwogICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQ2FsbERPTToKKyAgICAg
ICAgICAgIGNvbXBpbGVDYWxsRE9NKCk7CisgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2Fz
ZSBDYWxsRE9NR2V0dGVyOgogICAgICAgICAgICAgY29tcGlsZUNhbGxET01HZXR0ZXIoKTsKICAg
ICAgICAgICAgIGJyZWFrOwpAQCAtOTEwMCw2ICs5MTAzLDU0IEBAIGNsYXNzIExvd2VyREZHVG9C
MyB7CiAgICAgICAgIHBhdGNocG9pbnQtPmVmZmVjdHMgPSBFZmZlY3RzOjpmb3JDaGVjaygpOwog
ICAgIH0KIAorICAgIHZvaWQgY29tcGlsZUNhbGxET00oKQorICAgIHsKKyAgICAgICAgY29uc3Qg
RE9NSklUOjpTaWduYXR1cmUqIHNpZ25hdHVyZSA9IG1fbm9kZS0+c2lnbmF0dXJlKCk7CisKKyAg
ICAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBoYXZlIGEgd2F5IHRvIGNhbGwgZnVuY3Rpb25zIHdp
dGggdGhlIHZlY3RvciBvZiByZWdpc3RlcnMuCisgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjMwOTkKKyAgICAgICAgVmVjdG9yPExWYWx1ZT4gb3Bl
cmFuZHM7CisKKyAgICAgICAgdW5zaWduZWQgaW5kZXggPSAwOworICAgICAgICBERkdfTk9ERV9E
T19UT19DSElMRFJFTihtX2dyYXBoLCBtX25vZGUsIFsmXShOb2RlKiwgRWRnZSBlZGdlKSB7Cisg
ICAgICAgICAgICBpZiAoIWluZGV4KQorICAgICAgICAgICAgICAgIG9wZXJhbmRzLmFwcGVuZChs
b3dDZWxsKGVkZ2UpKTsKKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIHN3aXRj
aCAoc2lnbmF0dXJlLT5hcmd1bWVudHNbaW5kZXggLSAxXSkgeworICAgICAgICAgICAgICAgIGNh
c2UgU3BlY1N0cmluZzoKKyAgICAgICAgICAgICAgICAgICAgb3BlcmFuZHMuYXBwZW5kKGxvd1N0
cmluZyhlZGdlKSk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAg
IGNhc2UgU3BlY0ludDMyT25seToKKyAgICAgICAgICAgICAgICAgICAgb3BlcmFuZHMuYXBwZW5k
KGxvd0ludDMyKGVkZ2UpKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICAgICAgY2FzZSBTcGVjQm9vbGVhbjoKKyAgICAgICAgICAgICAgICAgICAgb3BlcmFuZHMuYXBw
ZW5kKGxvd0Jvb2xlYW4oZWRnZSkpOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICArK2luZGV4OworICAgICAg
ICB9KTsKKworICAgICAgICBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgPSBzaWduYXR1
cmUtPmFyZ3VtZW50Q291bnQgKyAxOworICAgICAgICBMVmFsdWUgcmVzdWx0OworICAgICAgICBz
d2l0Y2ggKGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKSB7CisgICAgICAgIGNhc2UgMToKKyAg
ICAgICAgICAgIHJlc3VsdCA9IHZtQ2FsbChJbnQ2NCwgbV9vdXQub3BlcmF0aW9uKHJlaW50ZXJw
cmV0X2Nhc3Q8Sl9KSVRPcGVyYXRpb25fRVA+KHNpZ25hdHVyZS0+dW5zYWZlRnVuY3Rpb24pKSwg
bV9jYWxsRnJhbWUsIG9wZXJhbmRzWzBdKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBj
YXNlIDI6CisgICAgICAgICAgICByZXN1bHQgPSB2bUNhbGwoSW50NjQsIG1fb3V0Lm9wZXJhdGlv
bihyZWludGVycHJldF9jYXN0PEpfSklUT3BlcmF0aW9uX0VQUD4oc2lnbmF0dXJlLT51bnNhZmVG
dW5jdGlvbikpLCBtX2NhbGxGcmFtZSwgb3BlcmFuZHNbMF0sIG9wZXJhbmRzWzFdKTsKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIDM6CisgICAgICAgICAgICByZXN1bHQgPSB2bUNh
bGwoSW50NjQsIG1fb3V0Lm9wZXJhdGlvbihyZWludGVycHJldF9jYXN0PEpfSklUT3BlcmF0aW9u
X0VQUFA+KHNpZ25hdHVyZS0+dW5zYWZlRnVuY3Rpb24pKSwgbV9jYWxsRnJhbWUsIG9wZXJhbmRz
WzBdLCBvcGVyYW5kc1sxXSwgb3BlcmFuZHNbMl0pOworICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwor
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAgICBzZXRKU1ZhbHVlKHJlc3Vs
dCk7CisgICAgfQorCiAgICAgdm9pZCBjb21waWxlQ2FsbERPTUdldHRlcigpCiAgICAgewogICAg
ICAgICBET01KSVQ6OkNhbGxET01HZXR0ZXJQYXRjaHBvaW50KiBkb21KSVQgPSBtX25vZGUtPmNh
bGxET01HZXR0ZXJEYXRhKCktPnBhdGNocG9pbnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUT3BlcmF0aW9ucy5oCmluZGV4IDhmNmM2OTcxYTZiZWU5ZjFmYjZmYzM2OGRlNWEyY2I4NDc2
NDRhNjguLjIwYjcxZjQ1MmNlNDRiNWNjNTZjYzcxYzJkNzZiMTdiNTg4ZmU2NjUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCkBAIC0xNTgsNiArMTU4LDcgQEAg
dHlwZWRlZiBFbmNvZGVkSlNWYWx1ZSAoSklUX09QRVJBVElPTiAqSl9KSVRPcGVyYXRpb25fRUpQ
KShFeGVjU3RhdGUqLCBFbmNvZGVkSlMKIHR5cGVkZWYgRW5jb2RlZEpTVmFsdWUgKEpJVF9PUEVS
QVRJT04gKkpfSklUT3BlcmF0aW9uX0VHUCkoRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqLCB2
b2lkKik7CiB0eXBlZGVmIEVuY29kZWRKU1ZhbHVlIChKSVRfT1BFUkFUSU9OICpKX0pJVE9wZXJh
dGlvbl9FUCkoRXhlY1N0YXRlKiwgdm9pZCopOwogdHlwZWRlZiBFbmNvZGVkSlNWYWx1ZSAoSklU
X09QRVJBVElPTiAqSl9KSVRPcGVyYXRpb25fRVBQKShFeGVjU3RhdGUqLCB2b2lkKiwgdm9pZCop
OwordHlwZWRlZiBFbmNvZGVkSlNWYWx1ZSAoSklUX09QRVJBVElPTiAqSl9KSVRPcGVyYXRpb25f
RVBQUCkoRXhlY1N0YXRlKiwgdm9pZCosIHZvaWQqLCB2b2lkKik7CiB0eXBlZGVmIEVuY29kZWRK
U1ZhbHVlIChKSVRfT1BFUkFUSU9OICpKX0pJVE9wZXJhdGlvbl9FUFMpKEV4ZWNTdGF0ZSosIHZv
aWQqLCBzaXplX3QpOwogdHlwZWRlZiBFbmNvZGVkSlNWYWx1ZSAoSklUX09QRVJBVElPTiAqSl9K
SVRPcGVyYXRpb25fRVBjKShFeGVjU3RhdGUqLCBJbnN0cnVjdGlvbiopOwogdHlwZWRlZiBFbmNv
ZGVkSlNWYWx1ZSAoSklUX09QRVJBVElPTiAqSl9KSVRPcGVyYXRpb25fRUpzY0MpKEV4ZWNTdGF0
ZSosIEpTU2NvcGUqLCBKU0NlbGwqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUVGh1bmtzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUVGh1bmtz
LmNwcAppbmRleCBiZjBhN2Y5MDkxOWE1YjZkMGJlZWQ5MjhhYmRhZjcxMGM5ZGM5ZDBiLi40MGMx
MmNlYzk0ZTAxYTA4NDA0ZjdiNmQ5NjcyMWYxMDUxZjQ4MzE5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVFRodW5rcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRUaHVua3MuY3BwCkBAIC05MCwxMCArOTAsMTAgQEAgdm9pZCBKSVRUaHVua3M6
OmZpbmFsaXplKEhhbmRsZTxVbmtub3duPiBoYW5kbGUsIHZvaWQqKQogCiBOYXRpdmVFeGVjdXRh
YmxlKiBKSVRUaHVua3M6Omhvc3RGdW5jdGlvblN0dWIoVk0qIHZtLCBOYXRpdmVGdW5jdGlvbiBm
dW5jdGlvbiwgTmF0aXZlRnVuY3Rpb24gY29uc3RydWN0b3IsIGNvbnN0IFN0cmluZyYgbmFtZSkK
IHsKLSAgICByZXR1cm4gaG9zdEZ1bmN0aW9uU3R1Yih2bSwgZnVuY3Rpb24sIGNvbnN0cnVjdG9y
LCBudWxscHRyLCBOb0ludHJpbnNpYywgbmFtZSk7CisgICAgcmV0dXJuIGhvc3RGdW5jdGlvblN0
dWIodm0sIGZ1bmN0aW9uLCBjb25zdHJ1Y3RvciwgbnVsbHB0ciwgTm9JbnRyaW5zaWMsIG51bGxw
dHIsIG5hbWUpOwogfQogCi1OYXRpdmVFeGVjdXRhYmxlKiBKSVRUaHVua3M6Omhvc3RGdW5jdGlv
blN0dWIoVk0qIHZtLCBOYXRpdmVGdW5jdGlvbiBmdW5jdGlvbiwgTmF0aXZlRnVuY3Rpb24gY29u
c3RydWN0b3IsIFRodW5rR2VuZXJhdG9yIGdlbmVyYXRvciwgSW50cmluc2ljIGludHJpbnNpYywg
Y29uc3QgU3RyaW5nJiBuYW1lKQorTmF0aXZlRXhlY3V0YWJsZSogSklUVGh1bmtzOjpob3N0RnVu
Y3Rpb25TdHViKFZNKiB2bSwgTmF0aXZlRnVuY3Rpb24gZnVuY3Rpb24sIE5hdGl2ZUZ1bmN0aW9u
IGNvbnN0cnVjdG9yLCBUaHVua0dlbmVyYXRvciBnZW5lcmF0b3IsIEludHJpbnNpYyBpbnRyaW5z
aWMsIGNvbnN0IERPTUpJVDo6U2lnbmF0dXJlKiBzaWduYXR1cmUsIGNvbnN0IFN0cmluZyYgbmFt
ZSkKIHsKICAgICBBU1NFUlQoIWlzQ29tcGlsYXRpb25UaHJlYWQoKSk7ICAgIAogICAgIEFTU0VS
VCh2bS0+Y2FuVXNlSklUKCkpOwpAQCAtMTEwLDE0ICsxMTAsMTQgQEAgTmF0aXZlRXhlY3V0YWJs
ZSogSklUVGh1bmtzOjpob3N0RnVuY3Rpb25TdHViKFZNKiB2bSwgTmF0aXZlRnVuY3Rpb24gZnVu
Y3Rpb24sIE4KICAgICAKICAgICBSZWZQdHI8SklUQ29kZT4gZm9yQ29uc3RydWN0ID0gYWRvcHRS
ZWYobmV3IE5hdGl2ZUpJVENvZGUoTWFjcm9Bc3NlbWJsZXJDb2RlUmVmOjpjcmVhdGVTZWxmTWFu
YWdlZENvZGVSZWYoY3RpTmF0aXZlQ29uc3RydWN0KHZtKSksIEpJVENvZGU6Okhvc3RDYWxsVGh1
bmspKTsKICAgICAKLSAgICBOYXRpdmVFeGVjdXRhYmxlKiBuYXRpdmVFeGVjdXRhYmxlID0gTmF0
aXZlRXhlY3V0YWJsZTo6Y3JlYXRlKCp2bSwgZm9yQ2FsbCwgZnVuY3Rpb24sIGZvckNvbnN0cnVj
dCwgY29uc3RydWN0b3IsIGludHJpbnNpYywgbmFtZSk7CisgICAgTmF0aXZlRXhlY3V0YWJsZSog
bmF0aXZlRXhlY3V0YWJsZSA9IE5hdGl2ZUV4ZWN1dGFibGU6OmNyZWF0ZSgqdm0sIGZvckNhbGws
IGZ1bmN0aW9uLCBmb3JDb25zdHJ1Y3QsIGNvbnN0cnVjdG9yLCBpbnRyaW5zaWMsIHNpZ25hdHVy
ZSwgbmFtZSk7CiAgICAgd2Vha0FkZCgqbV9ob3N0RnVuY3Rpb25TdHViTWFwLCBzdGQ6Om1ha2Vf
dHVwbGUoZnVuY3Rpb24sIGNvbnN0cnVjdG9yLCBuYW1lKSwgV2VhazxOYXRpdmVFeGVjdXRhYmxl
PihuYXRpdmVFeGVjdXRhYmxlLCB0aGlzKSk7CiAgICAgcmV0dXJuIG5hdGl2ZUV4ZWN1dGFibGU7
CiB9CiAKIE5hdGl2ZUV4ZWN1dGFibGUqIEpJVFRodW5rczo6aG9zdEZ1bmN0aW9uU3R1YihWTSog
dm0sIE5hdGl2ZUZ1bmN0aW9uIGZ1bmN0aW9uLCBUaHVua0dlbmVyYXRvciBnZW5lcmF0b3IsIElu
dHJpbnNpYyBpbnRyaW5zaWMsIGNvbnN0IFN0cmluZyYgbmFtZSkKIHsKLSAgICByZXR1cm4gaG9z
dEZ1bmN0aW9uU3R1Yih2bSwgZnVuY3Rpb24sIGNhbGxIb3N0RnVuY3Rpb25Bc0NvbnN0cnVjdG9y
LCBnZW5lcmF0b3IsIGludHJpbnNpYywgbmFtZSk7CisgICAgcmV0dXJuIGhvc3RGdW5jdGlvblN0
dWIodm0sIGZ1bmN0aW9uLCBjYWxsSG9zdEZ1bmN0aW9uQXNDb25zdHJ1Y3RvciwgZ2VuZXJhdG9y
LCBpbnRyaW5zaWMsIG51bGxwdHIsIG5hbWUpOwogfQogCiB2b2lkIEpJVFRodW5rczo6Y2xlYXJI
b3N0RnVuY3Rpb25TdHVicygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVFRodW5rcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRUaHVua3MuaAppbmRl
eCAzZjhmZTgwM2Y5ODcxMGY2OTIzNTI3YmM4ZjY1NTBmNGVkZDFjN2FlLi5hZGRjZjIzMGMzNDVk
NDI3MWI2MzdmMDhiOTRjNDE2YTNlZDE4MmE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVFRodW5rcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
VGh1bmtzLmgKQEAgLTM5LDYgKzM5LDkgQEAKICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNo
Lmg+CiAKIG5hbWVzcGFjZSBKU0MgeworbmFtZXNwYWNlIERPTUpJVCB7CitjbGFzcyBTaWduYXR1
cmU7Cit9CiAKIGNsYXNzIFZNOwogY2xhc3MgTmF0aXZlRXhlY3V0YWJsZTsKQEAgLTU3LDcgKzYw
LDcgQEAgY2xhc3MgSklUVGh1bmtzIGZpbmFsIDogcHJpdmF0ZSBXZWFrSGFuZGxlT3duZXIgewog
ICAgIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBjdGlTdHViKFZNKiwgVGh1bmtHZW5lcmF0b3IpOwog
CiAgICAgTmF0aXZlRXhlY3V0YWJsZSogaG9zdEZ1bmN0aW9uU3R1YihWTSosIE5hdGl2ZUZ1bmN0
aW9uLCBOYXRpdmVGdW5jdGlvbiBjb25zdHJ1Y3RvciwgY29uc3QgU3RyaW5nJiBuYW1lKTsKLSAg
ICBOYXRpdmVFeGVjdXRhYmxlKiBob3N0RnVuY3Rpb25TdHViKFZNKiwgTmF0aXZlRnVuY3Rpb24s
IE5hdGl2ZUZ1bmN0aW9uIGNvbnN0cnVjdG9yLCBUaHVua0dlbmVyYXRvciwgSW50cmluc2ljLCBj
b25zdCBTdHJpbmcmIG5hbWUpOworICAgIE5hdGl2ZUV4ZWN1dGFibGUqIGhvc3RGdW5jdGlvblN0
dWIoVk0qLCBOYXRpdmVGdW5jdGlvbiwgTmF0aXZlRnVuY3Rpb24gY29uc3RydWN0b3IsIFRodW5r
R2VuZXJhdG9yLCBJbnRyaW5zaWMsIGNvbnN0IERPTUpJVDo6U2lnbmF0dXJlKiwgY29uc3QgU3Ry
aW5nJiBuYW1lKTsKICAgICBOYXRpdmVFeGVjdXRhYmxlKiBob3N0RnVuY3Rpb25TdHViKFZNKiwg
TmF0aXZlRnVuY3Rpb24sIFRodW5rR2VuZXJhdG9yLCBJbnRyaW5zaWMsIGNvbnN0IFN0cmluZyYg
bmFtZSk7CiAKICAgICB2b2lkIGNsZWFySG9zdEZ1bmN0aW9uU3R1YnMoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQm91bmRGdW5jdGlvbi5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0JvdW5kRnVuY3Rpb24uY3BwCmluZGV4IDI2Zjk5
ZDY1M2FhMTQ0YjI0MDRkZDc5NTk0MzI5M2RlOTZiNzM0YzUuLmM0Y2U0M2U3ZDU2MGI4NzM2M2M0
OGQ5NTBhMDlhZDc5ZDA1MjQ5N2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTQm91bmRGdW5jdGlvbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNCb3VuZEZ1bmN0aW9uLmNwcApAQCAtMTY4LDcgKzE2OCw3IEBAIEpTQm91bmRGdW5j
dGlvbiogSlNCb3VuZEZ1bmN0aW9uOjpjcmVhdGUoVk0mIHZtLCBFeGVjU3RhdGUqIGV4ZWMsIEpT
R2xvYmFsT2JqZWN0CiAgICAgTmF0aXZlRXhlY3V0YWJsZSogZXhlY3V0YWJsZSA9IHZtLmdldEhv
c3RGdW5jdGlvbigKICAgICAgICAgc2xvd0Nhc2UgPyBib3VuZEZ1bmN0aW9uQ2FsbCA6IGJvdW5k
VGhpc05vQXJnc0Z1bmN0aW9uQ2FsbCwKICAgICAgICAgc2xvd0Nhc2UgPyBOb0ludHJpbnNpYyA6
IEJvdW5kVGhpc05vQXJnc0Z1bmN0aW9uQ2FsbEludHJpbnNpYywKLSAgICAgICAgY2FuQ29uc3Ry
dWN0ID8gKHNsb3dDYXNlID8gYm91bmRGdW5jdGlvbkNvbnN0cnVjdCA6IGJvdW5kVGhpc05vQXJn
c0Z1bmN0aW9uQ29uc3RydWN0KSA6IGNhbGxIb3N0RnVuY3Rpb25Bc0NvbnN0cnVjdG9yLAorICAg
ICAgICBjYW5Db25zdHJ1Y3QgPyAoc2xvd0Nhc2UgPyBib3VuZEZ1bmN0aW9uQ29uc3RydWN0IDog
Ym91bmRUaGlzTm9BcmdzRnVuY3Rpb25Db25zdHJ1Y3QpIDogY2FsbEhvc3RGdW5jdGlvbkFzQ29u
c3RydWN0b3IsIG51bGxwdHIsCiAgICAgICAgIG5hbWUpOwogICAgIFN0cnVjdHVyZSogc3RydWN0
dXJlID0gZ2V0Qm91bmRGdW5jdGlvblN0cnVjdHVyZSh2bSwgZXhlYywgZ2xvYmFsT2JqZWN0LCB0
YXJnZXRGdW5jdGlvbik7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgbnVsbHB0cik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5oCmluZGV4IGM0MGYzZTIxOTg0MWZi
NDY4OTYzNTI4NGIwNDIyNDdhZmQ1MjNjMzYuLjRlZmJmOTA3NzhjYzU3MWJiZGI4Mjg3MWE1MWZh
NDRmODU2YWU5OGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
Q2VsbC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5oCkBAIC01
NiwxNyArNTYsMTcgQEAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gdm9pZCogYWxsb2NhdGVDZWxsKEhl
YXAmLCBzaXplX3QpOwogdGVtcGxhdGU8dHlwZW5hbWUgVD4gdm9pZCogYWxsb2NhdGVDZWxsKEhl
YXAmLCBHQ0RlZmVycmFsQ29udGV4dCopOwogdGVtcGxhdGU8dHlwZW5hbWUgVD4gdm9pZCogYWxs
b2NhdGVDZWxsKEhlYXAmLCBHQ0RlZmVycmFsQ29udGV4dCosIHNpemVfdCk7CiAKLSNkZWZpbmUg
REVDTEFSRV9FWFBPUlRfSU5GTyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFwKLSAgICBwcm90ZWN0ZWQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgc3RhdGljIEpTX0VYUE9SVERBVEEg
Y29uc3QgOjpKU0M6OkNsYXNzSW5mbyBzX2luZm87ICAgICAgICAgICAgIFwKLSAgICBwdWJsaWM6
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFwKLSAgICAgICAgc3RhdGljIGNvbnN0IDo6SlNDOjpDbGFzc0luZm8qIGluZm8oKSB7IHJl
dHVybiAmc19pbmZvOyB9Ci0KLSNkZWZpbmUgREVDTEFSRV9JTkZPICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBwcm90ZWN0ZWQ6ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAg
ICAgICAgc3RhdGljIGNvbnN0IDo6SlNDOjpDbGFzc0luZm8gc19pbmZvOyAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFwKLSAgICBwdWJsaWM6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgc3RhdGljIGNvbnN0IDo6
SlNDOjpDbGFzc0luZm8qIGluZm8oKSB7IHJldHVybiAmc19pbmZvOyB9CisjZGVmaW5lIERFQ0xB
UkVfRVhQT1JUX0lORk8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFwKKyAgICBwcm90ZWN0ZWQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBzdGF0aWMgSlNfRVhQT1JU
REFUQSBjb25zdCA6OkpTQzo6Q2xhc3NJbmZvIHNfaW5mbzsgICAgICAgICAgICAgICAgICBcCisg
ICAgcHVibGljOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBjb25zdCA6OkpT
Qzo6Q2xhc3NJbmZvKiBpbmZvKCkgeyByZXR1cm4gJnNfaW5mbzsgfQorCisjZGVmaW5lIERFQ0xB
UkVfSU5GTyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFwKKyAgICBwcm90ZWN0ZWQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBzdGF0aWMgY29uc3QgOjpK
U0M6OkNsYXNzSW5mbyBzX2luZm87ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisg
ICAgcHVibGljOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBjb25zdCA6OkpT
Qzo6Q2xhc3NJbmZvKiBpbmZvKCkgeyByZXR1cm4gJnNfaW5mbzsgfQogCiBjbGFzcyBKU0NlbGwg
OiBwdWJsaWMgSGVhcENlbGwgewogICAgIGZyaWVuZCBjbGFzcyBKU1ZhbHVlOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcAppbmRleCA4NTg0YmMyOTdhZjcy
M2Y1ODI5ODE1NmUyZTJiMGE4OGFlNzE4ZmI0Li5hMzE4NDJiNjU5MDkzZWVkNDgzMmYwYzIyNTQ3
ZmZiNDQ5YzQ0Y2Q5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0Z1bmN0aW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0
aW9uLmNwcApAQCAtODQsOSArODQsOSBAQCBKU0Z1bmN0aW9uKiBKU0Z1bmN0aW9uOjpjcmVhdGUo
Vk0mIHZtLCBXZWJBc3NlbWJseUV4ZWN1dGFibGUqIGV4ZWN1dGFibGUsIEpTU2NvcAogfQogI2Vu
ZGlmCiAKLUpTRnVuY3Rpb24qIEpTRnVuY3Rpb246OmNyZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIGludCBsZW5ndGgsIGNvbnN0IFN0cmluZyYgbmFtZSwgTmF0aXZl
RnVuY3Rpb24gbmF0aXZlRnVuY3Rpb24sIEludHJpbnNpYyBpbnRyaW5zaWMsIE5hdGl2ZUZ1bmN0
aW9uIG5hdGl2ZUNvbnN0cnVjdG9yKQorSlNGdW5jdGlvbiogSlNGdW5jdGlvbjo6Y3JlYXRlKFZN
JiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgaW50IGxlbmd0aCwgY29uc3QgU3Ry
aW5nJiBuYW1lLCBOYXRpdmVGdW5jdGlvbiBuYXRpdmVGdW5jdGlvbiwgSW50cmluc2ljIGludHJp
bnNpYywgTmF0aXZlRnVuY3Rpb24gbmF0aXZlQ29uc3RydWN0b3IsIGNvbnN0IERPTUpJVDo6U2ln
bmF0dXJlKiBzaWduYXR1cmUpCiB7Ci0gICAgTmF0aXZlRXhlY3V0YWJsZSogZXhlY3V0YWJsZSA9
IHZtLmdldEhvc3RGdW5jdGlvbihuYXRpdmVGdW5jdGlvbiwgaW50cmluc2ljLCBuYXRpdmVDb25z
dHJ1Y3RvciwgbmFtZSk7CisgICAgTmF0aXZlRXhlY3V0YWJsZSogZXhlY3V0YWJsZSA9IHZtLmdl
dEhvc3RGdW5jdGlvbihuYXRpdmVGdW5jdGlvbiwgaW50cmluc2ljLCBuYXRpdmVDb25zdHJ1Y3Rv
ciwgc2lnbmF0dXJlLCBuYW1lKTsKICAgICBKU0Z1bmN0aW9uKiBmdW5jdGlvbiA9IG5ldyAoTm90
TnVsbCwgYWxsb2NhdGVDZWxsPEpTRnVuY3Rpb24+KHZtLmhlYXApKSBKU0Z1bmN0aW9uKHZtLCBn
bG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdC0+ZnVuY3Rpb25TdHJ1Y3R1cmUoKSk7CiAgICAgLy8g
Q2FuJ3QgZG8gdGhpcyBkdXJpbmcgaW5pdGlhbGl6YXRpb24gYmVjYXVzZSBnZXRIb3N0RnVuY3Rp
b24gbWlnaHQgZG8gYSBHQyBhbGxvY2F0aW9uLgogICAgIGZ1bmN0aW9uLT5maW5pc2hDcmVhdGlv
bih2bSwgZXhlY3V0YWJsZSwgbGVuZ3RoLCBuYW1lKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTRnVuY3Rpb24uaAppbmRleCA4ZGYwM2ExNGE2N2RhZTkzMDRjMGQ1NTQ5NGY5NWE4
NzdmOTc4MWU2Li5mMTFiMTJmYjNiZDE0NTYyNWY4MmJmMWZhODcyNTA0NDQ3NjU3NjI4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5oCkBAIC00Niw2ICs0Niwx
MSBAQCBjbGFzcyBTcGVjdWxhdGl2ZUpJVDsKIGNsYXNzIEpJVENvbXBpbGVyOwogfQogCituYW1l
c3BhY2UgRE9NSklUIHsKK2NsYXNzIFNpZ25hdHVyZTsKK30KKworCiBKU19FWFBPUlRfUFJJVkFU
RSBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxIb3N0RnVuY3Rpb25Bc0NvbnN0cnVj
dG9yKEV4ZWNTdGF0ZSopOwogCiBKU19FWFBPUlRfUFJJVkFURSBTdHJpbmcgZ2V0Q2FsY3VsYXRl
ZERpc3BsYXlOYW1lKFZNJiwgSlNPYmplY3QqKTsKQEAgLTY3LDcgKzcyLDcgQEAgY2xhc3MgSlNG
dW5jdGlvbiA6IHB1YmxpYyBKU0NhbGxlZSB7CiAgICAgICAgIHJldHVybiBzaXplb2YoSlNGdW5j
dGlvbik7CiAgICAgfQogCi0gICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIEpTRnVuY3Rpb24q
IGNyZWF0ZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgaW50IGxlbmd0aCwgY29uc3QgU3RyaW5nJiBu
YW1lLCBOYXRpdmVGdW5jdGlvbiwgSW50cmluc2ljID0gTm9JbnRyaW5zaWMsIE5hdGl2ZUZ1bmN0
aW9uIG5hdGl2ZUNvbnN0cnVjdG9yID0gY2FsbEhvc3RGdW5jdGlvbkFzQ29uc3RydWN0b3IpOwor
ICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBKU0Z1bmN0aW9uKiBjcmVhdGUoVk0mLCBKU0ds
b2JhbE9iamVjdCosIGludCBsZW5ndGgsIGNvbnN0IFN0cmluZyYgbmFtZSwgTmF0aXZlRnVuY3Rp
b24sIEludHJpbnNpYyA9IE5vSW50cmluc2ljLCBOYXRpdmVGdW5jdGlvbiBuYXRpdmVDb25zdHJ1
Y3RvciA9IGNhbGxIb3N0RnVuY3Rpb25Bc0NvbnN0cnVjdG9yLCBjb25zdCBET01KSVQ6OlNpZ25h
dHVyZSogPSBudWxscHRyKTsKICAgICAKICAgICBzdGF0aWMgSlNGdW5jdGlvbiogY3JlYXRlV2l0
aEludmFsaWRhdGVkUmVhbGxvY2F0aW9uV2F0Y2hwb2ludChWTSYsIEZ1bmN0aW9uRXhlY3V0YWJs
ZSosIEpTU2NvcGUqKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNOYXRpdmVTdGRGdW5jdGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU05hdGl2ZVN0ZEZ1bmN0aW9uLmNwcAppbmRleCA2ZGQ4NDlmMmVhZmJlYmRkNzA3ZWU1NzM4
MDA4MmRlNTQ4OTMyMGExLi5jMTI2NWIxZjA2YTkwYTA3NDQxZDdhYzVjNjA4ODMwYTFlZmE0ZjAy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU05hdGl2ZVN0ZEZ1
bmN0aW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU05hdGl2ZVN0
ZEZ1bmN0aW9uLmNwcApAQCAtNjYsNyArNjYsNyBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBydW5TdGRGdW5jdGlvbihFeGVjU3RhdGUqIHN0YXRlKQogCiBKU05hdGl2ZVN0
ZEZ1bmN0aW9uKiBKU05hdGl2ZVN0ZEZ1bmN0aW9uOjpjcmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBpbnQgbGVuZ3RoLCBjb25zdCBTdHJpbmcmIG5hbWUsIE5hdGl2
ZVN0ZEZ1bmN0aW9uJiYgbmF0aXZlU3RkRnVuY3Rpb24sIEludHJpbnNpYyBpbnRyaW5zaWMsIE5h
dGl2ZUZ1bmN0aW9uIG5hdGl2ZUNvbnN0cnVjdG9yKQogewotICAgIE5hdGl2ZUV4ZWN1dGFibGUq
IGV4ZWN1dGFibGUgPSB2bS5nZXRIb3N0RnVuY3Rpb24ocnVuU3RkRnVuY3Rpb24sIGludHJpbnNp
YywgbmF0aXZlQ29uc3RydWN0b3IsIG5hbWUpOworICAgIE5hdGl2ZUV4ZWN1dGFibGUqIGV4ZWN1
dGFibGUgPSB2bS5nZXRIb3N0RnVuY3Rpb24ocnVuU3RkRnVuY3Rpb24sIGludHJpbnNpYywgbmF0
aXZlQ29uc3RydWN0b3IsIG51bGxwdHIsIG5hbWUpOwogICAgIE5hdGl2ZVN0ZEZ1bmN0aW9uQ2Vs
bCogZnVuY3Rpb25DZWxsID0gTmF0aXZlU3RkRnVuY3Rpb25DZWxsOjpjcmVhdGUodm0sIFdURk1v
dmUobmF0aXZlU3RkRnVuY3Rpb24pKTsKICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGdsb2Jh
bE9iamVjdC0+bmF0aXZlU3RkRnVuY3Rpb25TdHJ1Y3R1cmUoKTsKICAgICBKU05hdGl2ZVN0ZEZ1
bmN0aW9uKiBmdW5jdGlvbiA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTTmF0aXZlU3Rk
RnVuY3Rpb24+KHZtLmhlYXApKSBKU05hdGl2ZVN0ZEZ1bmN0aW9uKHZtLCBnbG9iYWxPYmplY3Qs
IHN0cnVjdHVyZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U09iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAK
aW5kZXggZjUzZGI2MTk4NmVhZGRhYTIzYTI0NWRlNTRhZTA5YzU4ZjBhYjc2NC4uMDhhZTc5MjBh
OWVlNTJjMjRkNzVhYmUxZGE3ZjY2ZTgxMWIyYWYxYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTT2JqZWN0LmNwcApAQCAtMjU0OSw2ICsyNTQ5LDE3IEBAIGJvb2wgSlNPYmpl
Y3Q6OnB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgY29uCiAgICAgcmV0dXJuIHB1dERpcmVjdCh2bSwgcHJvcGVydHlOYW1lLCBmdW5j
dGlvbiwgYXR0cmlidXRlcyk7CiB9CiAKK2Jvb2wgSlNPYmplY3Q6OnB1dERpcmVjdE5hdGl2ZUZ1
bmN0aW9uKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgUHJvcGVy
dHlOYW1lJiBwcm9wZXJ0eU5hbWUsIHVuc2lnbmVkIGZ1bmN0aW9uTGVuZ3RoLCBOYXRpdmVGdW5j
dGlvbiBuYXRpdmVGdW5jdGlvbiwgSW50cmluc2ljIGludHJpbnNpYywgY29uc3QgRE9NSklUOjpT
aWduYXR1cmUqIHNpZ25hdHVyZSwgdW5zaWduZWQgYXR0cmlidXRlcykKK3sKKyAgICBTdHJpbmdJ
bXBsKiBuYW1lID0gcHJvcGVydHlOYW1lLnB1YmxpY05hbWUoKTsKKyAgICBpZiAoIW5hbWUpCisg
ICAgICAgIG5hbWUgPSB2bS5wcm9wZXJ0eU5hbWVzLT5hbm9ueW1vdXMuaW1wbCgpOworICAgIEFT
U0VSVChuYW1lKTsKKworICAgIEpTRnVuY3Rpb24qIGZ1bmN0aW9uID0gSlNGdW5jdGlvbjo6Y3Jl
YXRlKHZtLCBnbG9iYWxPYmplY3QsIGZ1bmN0aW9uTGVuZ3RoLCBuYW1lLCBuYXRpdmVGdW5jdGlv
biwgaW50cmluc2ljLCBjYWxsSG9zdEZ1bmN0aW9uQXNDb25zdHJ1Y3Rvciwgc2lnbmF0dXJlKTsK
KyAgICByZXR1cm4gcHV0RGlyZWN0KHZtLCBwcm9wZXJ0eU5hbWUsIGZ1bmN0aW9uLCBhdHRyaWJ1
dGVzKTsKK30KKwogSlNGdW5jdGlvbiogSlNPYmplY3Q6OnB1dERpcmVjdEJ1aWx0aW5GdW5jdGlv
bihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IFByb3BlcnR5TmFt
ZSYgcHJvcGVydHlOYW1lLCBGdW5jdGlvbkV4ZWN1dGFibGUqIGZ1bmN0aW9uRXhlY3V0YWJsZSwg
dW5zaWduZWQgYXR0cmlidXRlcykKIHsKICAgICBTdHJpbmdJbXBsKiBuYW1lID0gcHJvcGVydHlO
YW1lLnB1YmxpY05hbWUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5o
CmluZGV4IDYyMjBlYzdhMWJhOGU4YTc0OWRiNGIwNmNkNDI5M2E4ODVhZjdmOTIuLmViZTQ4NWU4
ZGYzNmRiNWNhZjM3NzA0YjhlZWRkNGE3NmNiOWM0NDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNPYmplY3QuaApAQCAtNDcsNiArNDcsOSBAQAogI2luY2x1ZGUgPHd0Zi9TdGRM
aWJFeHRyYXMuaD4KIAogbmFtZXNwYWNlIEpTQyB7CituYW1lc3BhY2UgRE9NSklUIHsKK2NsYXNz
IFNpZ25hdHVyZTsKK30KIAogaW5saW5lIEpTQ2VsbCogZ2V0SlNGdW5jdGlvbihKU1ZhbHVlIHZh
bHVlKQogewpAQCAtNzAwLDYgKzcwMyw3IEBAIGNsYXNzIEpTT2JqZWN0IDogcHVibGljIEpTQ2Vs
bCB7CiAKICAgICBKU19FWFBPUlRfUFJJVkFURSBib29sIHB1dERpcmVjdE5hdGl2ZUludHJpbnNp
Y0dldHRlcihWTSYsIEpTR2xvYmFsT2JqZWN0KiwgSWRlbnRpZmllciwgTmF0aXZlRnVuY3Rpb24s
IEludHJpbnNpYywgdW5zaWduZWQgYXR0cmlidXRlcyk7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUg
Ym9vbCBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbihWTSYsIEpTR2xvYmFsT2JqZWN0KiwgY29uc3Qg
UHJvcGVydHlOYW1lJiwgdW5zaWduZWQgZnVuY3Rpb25MZW5ndGgsIE5hdGl2ZUZ1bmN0aW9uLCBJ
bnRyaW5zaWMsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIGJv
b2wgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb24oVk0mLCBKU0dsb2JhbE9iamVjdCosIGNvbnN0IFBy
b3BlcnR5TmFtZSYsIHVuc2lnbmVkIGZ1bmN0aW9uTGVuZ3RoLCBOYXRpdmVGdW5jdGlvbiwgSW50
cmluc2ljLCBjb25zdCBET01KSVQ6OlNpZ25hdHVyZSosIHVuc2lnbmVkIGF0dHJpYnV0ZXMpOwog
ICAgIEpTX0VYUE9SVF9QUklWQVRFIEpTRnVuY3Rpb24qIHB1dERpcmVjdEJ1aWx0aW5GdW5jdGlv
bihWTSYsIEpTR2xvYmFsT2JqZWN0KiwgY29uc3QgUHJvcGVydHlOYW1lJiwgRnVuY3Rpb25FeGVj
dXRhYmxlKiwgdW5zaWduZWQgYXR0cmlidXRlcyk7CiAgICAgSlNGdW5jdGlvbiogcHV0RGlyZWN0
QnVpbHRpbkZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24oVk0mLCBKU0dsb2JhbE9iamVjdCosIGNv
bnN0IFByb3BlcnR5TmFtZSYsIEZ1bmN0aW9uRXhlY3V0YWJsZSosIHVuc2lnbmVkIGF0dHJpYnV0
ZXMpOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb25X
aXRob3V0VHJhbnNpdGlvbihWTSYsIEpTR2xvYmFsT2JqZWN0KiwgY29uc3QgUHJvcGVydHlOYW1l
JiwgdW5zaWduZWQgZnVuY3Rpb25MZW5ndGgsIE5hdGl2ZUZ1bmN0aW9uLCBJbnRyaW5zaWMsIHVu
c2lnbmVkIGF0dHJpYnV0ZXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvTG9va3VwLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Mb29rdXAuaApp
bmRleCBlMmQxNzk1Mzg4ZTc2NTJiZDhmMWI0YjZkYWNiYjJjYmNlOWNkNDRmLi5kNzA3Njg2ZmI1
NjkzZTdmNTJmZTZkMWEyZWM0NGJkMDAyM2JlZjExIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Mb29rdXAuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Mb29rdXAuaApAQCAtMjQsNiArMjQsNyBAQAogI2luY2x1ZGUgIkNhbGxGcmFtZS5oIgog
I2luY2x1ZGUgIkN1c3RvbUdldHRlclNldHRlci5oIgogI2luY2x1ZGUgIkRPTUpJVEdldHRlclNl
dHRlci5oIgorI2luY2x1ZGUgIkRPTUpJVFNpZ25hdHVyZS5oIgogI2luY2x1ZGUgIklkZW50aWZp
ZXIuaCIKICNpbmNsdWRlICJJZGVudGlmaWVySW5saW5lcy5oIgogI2luY2x1ZGUgIkludHJpbnNp
Yy5oIgpAQCAtNzUsMTIgKzc2LDE5IEBAIHN0cnVjdCBIYXNoVGFibGVWYWx1ZSB7CiAgICAgSW50
cmluc2ljIGludHJpbnNpYygpIGNvbnN0IHsgQVNTRVJUKG1fYXR0cmlidXRlcyAmIEZ1bmN0aW9u
KTsgcmV0dXJuIG1faW50cmluc2ljOyB9CiAgICAgQnVpbHRpbkdlbmVyYXRvciBidWlsdGluR2Vu
ZXJhdG9yKCkgY29uc3QgeyBBU1NFUlQobV9hdHRyaWJ1dGVzICYgQnVpbHRpbik7IHJldHVybiBy
ZWludGVycHJldF9jYXN0PEJ1aWx0aW5HZW5lcmF0b3I+KG1fdmFsdWVzLnZhbHVlMSk7IH0KICAg
ICBOYXRpdmVGdW5jdGlvbiBmdW5jdGlvbigpIGNvbnN0IHsgQVNTRVJUKG1fYXR0cmlidXRlcyAm
IEZ1bmN0aW9uKTsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8TmF0aXZlRnVuY3Rpb24+KG1fdmFs
dWVzLnZhbHVlMSk7IH0KLSAgICB1bnNpZ25lZCBjaGFyIGZ1bmN0aW9uTGVuZ3RoKCkgY29uc3Qg
eyBBU1NFUlQobV9hdHRyaWJ1dGVzICYgRnVuY3Rpb24pOyByZXR1cm4gc3RhdGljX2Nhc3Q8dW5z
aWduZWQgY2hhcj4obV92YWx1ZXMudmFsdWUyKTsgfQorICAgIHVuc2lnbmVkIGNoYXIgZnVuY3Rp
b25MZW5ndGgoKSBjb25zdAorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fYXR0cmlidXRlcyAmIEZ1
bmN0aW9uKTsKKyAgICAgICAgaWYgKG1fYXR0cmlidXRlcyAmIERPTUpJVEZ1bmN0aW9uKQorICAg
ICAgICAgICAgcmV0dXJuIHNpZ25hdHVyZSgpLT5hcmd1bWVudENvdW50OworICAgICAgICByZXR1
cm4gc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4obV92YWx1ZXMudmFsdWUyKTsKKyAgICB9CiAK
ICAgICBHZXRGdW5jdGlvbiBwcm9wZXJ0eUdldHRlcigpIGNvbnN0IHsgQVNTRVJUKCEobV9hdHRy
aWJ1dGVzICYgQnVpbHRpbk9yRnVuY3Rpb25PckFjY2Vzc29yT3JMYXp5UHJvcGVydHlPckNvbnN0
YW50KSk7IHJldHVybiByZWludGVycHJldF9jYXN0PEdldEZ1bmN0aW9uPihtX3ZhbHVlcy52YWx1
ZTEpOyB9CiAgICAgUHV0RnVuY3Rpb24gcHJvcGVydHlQdXR0ZXIoKSBjb25zdCB7IEFTU0VSVCgh
KG1fYXR0cmlidXRlcyAmIEJ1aWx0aW5PckZ1bmN0aW9uT3JBY2Nlc3Nvck9yTGF6eVByb3BlcnR5
T3JDb25zdGFudCkpOyByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxQdXRGdW5jdGlvbj4obV92YWx1
ZXMudmFsdWUyKTsgfQogCiAgICAgRE9NSklUOjpHZXR0ZXJTZXR0ZXIqIGRvbUpJVCgpIGNvbnN0
IHsgQVNTRVJUKG1fYXR0cmlidXRlcyAmIERPTUpJVEF0dHJpYnV0ZSk7IHJldHVybiByZWludGVy
cHJldF9jYXN0PERPTUpJVEdldHRlclNldHRlckdlbmVyYXRvcj4obV92YWx1ZXMudmFsdWUxKSgp
OyB9CisgICAgY29uc3QgRE9NSklUOjpTaWduYXR1cmUqIHNpZ25hdHVyZSgpIGNvbnN0IHsgQVNT
RVJUKG1fYXR0cmlidXRlcyAmIERPTUpJVEZ1bmN0aW9uKTsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nh
c3Q8Y29uc3QgRE9NSklUOjpTaWduYXR1cmUqPihtX3ZhbHVlcy52YWx1ZTIpOyB9CiAKICAgICBO
YXRpdmVGdW5jdGlvbiBhY2Nlc3NvckdldHRlcigpIGNvbnN0IHsgQVNTRVJUKG1fYXR0cmlidXRl
cyAmIEFjY2Vzc29yKTsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8TmF0aXZlRnVuY3Rpb24+KG1f
dmFsdWVzLnZhbHVlMSk7IH0KICAgICBOYXRpdmVGdW5jdGlvbiBhY2Nlc3NvclNldHRlcigpIGNv
bnN0IHsgQVNTRVJUKG1fYXR0cmlidXRlcyAmIEFjY2Vzc29yKTsgcmV0dXJuIHJlaW50ZXJwcmV0
X2Nhc3Q8TmF0aXZlRnVuY3Rpb24+KG1fdmFsdWVzLnZhbHVlMik7IH0KQEAgLTMxMyw2ICszMjEs
MTIgQEAgaW5saW5lIHZvaWQgcmVpZnlTdGF0aWNQcm9wZXJ0eShWTSYgdm0sIGNvbnN0IFByb3Bl
cnR5TmFtZSYgcHJvcGVydHlOYW1lLCBjb25zdAogICAgIH0KIAogICAgIGlmICh2YWx1ZS5hdHRy
aWJ1dGVzKCkgJiBGdW5jdGlvbikgeworICAgICAgICBpZiAodmFsdWUuYXR0cmlidXRlcygpICYg
RE9NSklURnVuY3Rpb24pIHsKKyAgICAgICAgICAgIHRoaXNPYmoucHV0RGlyZWN0TmF0aXZlRnVu
Y3Rpb24oCisgICAgICAgICAgICAgICAgdm0sIHRoaXNPYmouZ2xvYmFsT2JqZWN0KCksIHByb3Bl
cnR5TmFtZSwgdmFsdWUuZnVuY3Rpb25MZW5ndGgoKSwKKyAgICAgICAgICAgICAgICB2YWx1ZS5m
dW5jdGlvbigpLCB2YWx1ZS5pbnRyaW5zaWMoKSwgdmFsdWUuc2lnbmF0dXJlKCksIGF0dHJpYnV0
ZXNGb3JTdHJ1Y3R1cmUodmFsdWUuYXR0cmlidXRlcygpKSk7CisgICAgICAgICAgICByZXR1cm47
CisgICAgICAgIH0KICAgICAgICAgdGhpc09iai5wdXREaXJlY3ROYXRpdmVGdW5jdGlvbigKICAg
ICAgICAgICAgIHZtLCB0aGlzT2JqLmdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUsIHZhbHVl
LmZ1bmN0aW9uTGVuZ3RoKCksCiAgICAgICAgICAgICB2YWx1ZS5mdW5jdGlvbigpLCB2YWx1ZS5p
bnRyaW5zaWMoKSwgYXR0cmlidXRlc0ZvclN0cnVjdHVyZSh2YWx1ZS5hdHRyaWJ1dGVzKCkpKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05hdGl2ZUV4ZWN1dGFi
bGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZlRXhlY3V0YWJsZS5j
cHAKaW5kZXggMWMyYmVjNThiN2RiODk4YjgxMThiMjk3MTBiMmQ3NDI2OTNiYjIxZC4uYjdkYWQy
YTQ2MmRkZGZjMjI3NjJmZDVjZDdjZjZhNDYxY2RkMThmNiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZlRXhlY3V0YWJsZS5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZlRXhlY3V0YWJsZS5jcHAKQEAgLTQwLDEwICs0MCwx
MCBAQCBuYW1lc3BhY2UgSlNDIHsKIAogY29uc3QgQ2xhc3NJbmZvIE5hdGl2ZUV4ZWN1dGFibGU6
OnNfaW5mbyA9IHsgIk5hdGl2ZUV4ZWN1dGFibGUiLCAmRXhlY3V0YWJsZUJhc2U6OnNfaW5mbywg
MCwgQ1JFQVRFX01FVEhPRF9UQUJMRShOYXRpdmVFeGVjdXRhYmxlKSB9OwogCi1OYXRpdmVFeGVj
dXRhYmxlKiBOYXRpdmVFeGVjdXRhYmxlOjpjcmVhdGUoVk0mIHZtLCBQYXNzUmVmUHRyPEpJVENv
ZGU+IGNhbGxUaHVuaywgTmF0aXZlRnVuY3Rpb24gZnVuY3Rpb24sIFBhc3NSZWZQdHI8SklUQ29k
ZT4gY29uc3RydWN0VGh1bmssIE5hdGl2ZUZ1bmN0aW9uIGNvbnN0cnVjdG9yLCBJbnRyaW5zaWMg
aW50cmluc2ljLCBjb25zdCBTdHJpbmcmIG5hbWUpCitOYXRpdmVFeGVjdXRhYmxlKiBOYXRpdmVF
eGVjdXRhYmxlOjpjcmVhdGUoVk0mIHZtLCBQYXNzUmVmUHRyPEpJVENvZGU+IGNhbGxUaHVuaywg
TmF0aXZlRnVuY3Rpb24gZnVuY3Rpb24sIFBhc3NSZWZQdHI8SklUQ29kZT4gY29uc3RydWN0VGh1
bmssIE5hdGl2ZUZ1bmN0aW9uIGNvbnN0cnVjdG9yLCBJbnRyaW5zaWMgaW50cmluc2ljLCBjb25z
dCBET01KSVQ6OlNpZ25hdHVyZSogc2lnbmF0dXJlLCBjb25zdCBTdHJpbmcmIG5hbWUpCiB7CiAg
ICAgTmF0aXZlRXhlY3V0YWJsZSogZXhlY3V0YWJsZTsKLSAgICBleGVjdXRhYmxlID0gbmV3IChO
b3ROdWxsLCBhbGxvY2F0ZUNlbGw8TmF0aXZlRXhlY3V0YWJsZT4odm0uaGVhcCkpIE5hdGl2ZUV4
ZWN1dGFibGUodm0sIGZ1bmN0aW9uLCBjb25zdHJ1Y3RvciwgaW50cmluc2ljKTsKKyAgICBleGVj
dXRhYmxlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8TmF0aXZlRXhlY3V0YWJsZT4odm0u
aGVhcCkpIE5hdGl2ZUV4ZWN1dGFibGUodm0sIGZ1bmN0aW9uLCBjb25zdHJ1Y3RvciwgaW50cmlu
c2ljLCBzaWduYXR1cmUpOwogICAgIGV4ZWN1dGFibGUtPmZpbmlzaENyZWF0aW9uKHZtLCBjYWxs
VGh1bmssIGNvbnN0cnVjdFRodW5rLCBuYW1lKTsKICAgICByZXR1cm4gZXhlY3V0YWJsZTsKIH0K
QEAgLTY4LDEwICs2OCwxMSBAQCB2b2lkIE5hdGl2ZUV4ZWN1dGFibGU6OmZpbmlzaENyZWF0aW9u
KFZNJiB2bSwgUGFzc1JlZlB0cjxKSVRDb2RlPiBjYWxsVGh1bmssIFBhcwogICAgIG1fbmFtZSA9
IG5hbWU7CiB9CiAKLU5hdGl2ZUV4ZWN1dGFibGU6Ok5hdGl2ZUV4ZWN1dGFibGUoVk0mIHZtLCBO
YXRpdmVGdW5jdGlvbiBmdW5jdGlvbiwgTmF0aXZlRnVuY3Rpb24gY29uc3RydWN0b3IsIEludHJp
bnNpYyBpbnRyaW5zaWMpCitOYXRpdmVFeGVjdXRhYmxlOjpOYXRpdmVFeGVjdXRhYmxlKFZNJiB2
bSwgTmF0aXZlRnVuY3Rpb24gZnVuY3Rpb24sIE5hdGl2ZUZ1bmN0aW9uIGNvbnN0cnVjdG9yLCBJ
bnRyaW5zaWMgaW50cmluc2ljLCBjb25zdCBET01KSVQ6OlNpZ25hdHVyZSogc2lnbmF0dXJlKQog
ICAgIDogRXhlY3V0YWJsZUJhc2Uodm0sIHZtLm5hdGl2ZUV4ZWN1dGFibGVTdHJ1Y3R1cmUuZ2V0
KCksIE5VTV9QQVJBTUVURVJTX0lTX0hPU1QsIGludHJpbnNpYykKICAgICAsIG1fZnVuY3Rpb24o
ZnVuY3Rpb24pCiAgICAgLCBtX2NvbnN0cnVjdG9yKGNvbnN0cnVjdG9yKQorICAgICwgbV9zaWdu
YXR1cmUoc2lnbmF0dXJlKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9OYXRpdmVFeGVjdXRhYmxlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9OYXRpdmVFeGVjdXRhYmxlLmgKaW5kZXggNWJmMmUxMDZkYjMwYTViOGM5NzhjODk2YTZh
ZDk4Y2EyYzc1NzQxNC4uZTRkM2UwNDk0NTdiNDVkMDI0NTdlOGRkYTU0NDkwYjM3MTRhY2NlYSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZlRXhlY3V0YWJs
ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05hdGl2ZUV4ZWN1dGFibGUu
aApAQCAtMjgsNiArMjgsOSBAQAogI2luY2x1ZGUgIkV4ZWN1dGFibGVCYXNlLmgiCiAKIG5hbWVz
cGFjZSBKU0MgeworbmFtZXNwYWNlIERPTUpJVCB7CitjbGFzcyBTaWduYXR1cmU7Cit9CiAKIGNs
YXNzIE5hdGl2ZUV4ZWN1dGFibGUgZmluYWwgOiBwdWJsaWMgRXhlY3V0YWJsZUJhc2UgewogICAg
IGZyaWVuZCBjbGFzcyBKSVQ7CkBAIC0zNiw3ICszOSw3IEBAIGNsYXNzIE5hdGl2ZUV4ZWN1dGFi
bGUgZmluYWwgOiBwdWJsaWMgRXhlY3V0YWJsZUJhc2UgewogICAgIHR5cGVkZWYgRXhlY3V0YWJs
ZUJhc2UgQmFzZTsKICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBC
YXNlOjpTdHJ1Y3R1cmVGbGFncyB8IFN0cnVjdHVyZUlzSW1tb3J0YWw7CiAKLSAgICBzdGF0aWMg
TmF0aXZlRXhlY3V0YWJsZSogY3JlYXRlKFZNJiB2bSwgUGFzc1JlZlB0cjxKSVRDb2RlPiBjYWxs
VGh1bmssIE5hdGl2ZUZ1bmN0aW9uIGZ1bmN0aW9uLCBQYXNzUmVmUHRyPEpJVENvZGU+IGNvbnN0
cnVjdFRodW5rLCBOYXRpdmVGdW5jdGlvbiBjb25zdHJ1Y3RvciwgSW50cmluc2ljIGludHJpbnNp
YywgY29uc3QgU3RyaW5nJiBuYW1lKTsKKyAgICBzdGF0aWMgTmF0aXZlRXhlY3V0YWJsZSogY3Jl
YXRlKFZNJiwgUGFzc1JlZlB0cjxKSVRDb2RlPiBjYWxsVGh1bmssIE5hdGl2ZUZ1bmN0aW9uIGZ1
bmN0aW9uLCBQYXNzUmVmUHRyPEpJVENvZGU+IGNvbnN0cnVjdFRodW5rLCBOYXRpdmVGdW5jdGlv
biBjb25zdHJ1Y3RvciwgSW50cmluc2ljLCBjb25zdCBET01KSVQ6OlNpZ25hdHVyZSosIGNvbnN0
IFN0cmluZyYgbmFtZSk7CiAKICAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQ2VsbCopOwogCkBA
IC02Niw2ICs2OSwxNCBAQCBjbGFzcyBOYXRpdmVFeGVjdXRhYmxlIGZpbmFsIDogcHVibGljIEV4
ZWN1dGFibGVCYXNlIHsKICAgICBERUNMQVJFX0lORk87CiAKICAgICBjb25zdCBTdHJpbmcmIG5h
bWUoKSBjb25zdCB7IHJldHVybiBtX25hbWU7IH0KKyAgICBjb25zdCBET01KSVQ6OlNpZ25hdHVy
ZSogc2lnbmF0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9zaWduYXR1cmU7IH0KKworICAgIGNvbnN0
IERPTUpJVDo6U2lnbmF0dXJlKiBzaWduYXR1cmVGb3IoQ29kZVNwZWNpYWxpemF0aW9uS2luZCBr
aW5kKSBjb25zdAorICAgIHsKKyAgICAgICAgaWYgKGlzQ2FsbChraW5kKSkKKyAgICAgICAgICAg
IHJldHVybiBzaWduYXR1cmUoKTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQogCiBw
cm90ZWN0ZWQ6CiAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYsIFBhc3NSZWZQdHI8SklUQ29k
ZT4gY2FsbFRodW5rLCBQYXNzUmVmUHRyPEpJVENvZGU+IGNvbnN0cnVjdFRodW5rLCBjb25zdCBT
dHJpbmcmIG5hbWUpOwpAQCAtNzMsMTAgKzg0LDExIEBAIGNsYXNzIE5hdGl2ZUV4ZWN1dGFibGUg
ZmluYWwgOiBwdWJsaWMgRXhlY3V0YWJsZUJhc2UgewogcHJpdmF0ZToKICAgICBmcmllbmQgY2xh
c3MgRXhlY3V0YWJsZUJhc2U7CiAKLSAgICBOYXRpdmVFeGVjdXRhYmxlKFZNJiwgTmF0aXZlRnVu
Y3Rpb24gZnVuY3Rpb24sIE5hdGl2ZUZ1bmN0aW9uIGNvbnN0cnVjdG9yLCBJbnRyaW5zaWMpOwor
ICAgIE5hdGl2ZUV4ZWN1dGFibGUoVk0mLCBOYXRpdmVGdW5jdGlvbiBmdW5jdGlvbiwgTmF0aXZl
RnVuY3Rpb24gY29uc3RydWN0b3IsIEludHJpbnNpYywgY29uc3QgRE9NSklUOjpTaWduYXR1cmUq
KTsKIAogICAgIE5hdGl2ZUZ1bmN0aW9uIG1fZnVuY3Rpb247CiAgICAgTmF0aXZlRnVuY3Rpb24g
bV9jb25zdHJ1Y3RvcjsKKyAgICBjb25zdCBET01KSVQ6OlNpZ25hdHVyZSogbV9zaWduYXR1cmU7
CiAKICAgICBTdHJpbmcgbV9uYW1lOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1Byb3BlcnR5U2xvdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvUHJvcGVydHlTbG90LmgKaW5kZXggOWRlMTUxYTU2YWEyNzU2Y2ZkMGM2MDAzNjY4MjY2YjE5
Zjk5MzJkZC4uMzg3ZTMxYjQwZTVhZWJmMmYzNWY2Y2EyNzJlMzgzYzA1ZDNmNDUyZCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlTbG90LmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlTbG90LmgKQEAgLTUxLDYgKzUx
LDcgQEAgZW51bSBBdHRyaWJ1dGUgewogICAgIENsYXNzU3RydWN0dXJlICAgID0gMSA8PCAxMiwg
Ly8gcHJvcGVydHkgaXMgYSBsYXp5IGNsYXNzIHN0cnVjdHVyZSAtIG9ubHkgdXNlZCBieSBzdGF0
aWMgaGFzaHRhYmxlcwogICAgIFByb3BlcnR5Q2FsbGJhY2sgID0gMSA8PCAxMywgLy8gcHJvcGVy
dHkgdGhhdCBpcyBhIGxhenkgcHJvcGVydHkgY2FsbGJhY2sgLSBvbmx5IHVzZWQgYnkgc3RhdGlj
IGhhc2h0YWJsZXMKICAgICBET01KSVRBdHRyaWJ1dGUgICA9IDEgPDwgMTQsIC8vIHByb3BlcnR5
IGlzIGEgRE9NIEpJVCBhdHRyaWJ1dGUgLSBvbmx5IHVzZWQgYnkgc3RhdGljIGhhc2h0YWJsZXMK
KyAgICBET01KSVRGdW5jdGlvbiAgICA9IDEgPDwgMTUsIC8vIHByb3BlcnR5IGlzIGEgRE9NIEpJ
VCBmdW5jdGlvbiAtIG9ubHkgdXNlZCBieSBzdGF0aWMgaGFzaHRhYmxlcwogICAgIEJ1aWx0aW5P
ckZ1bmN0aW9uID0gQnVpbHRpbiB8IEZ1bmN0aW9uLCAvLyBoZWxwZXIgb25seSB1c2VkIGJ5IHN0
YXRpYyBoYXNodGFibGVzCiAgICAgQnVpbHRpbk9yRnVuY3Rpb25PckxhenlQcm9wZXJ0eSA9IEJ1
aWx0aW4gfCBGdW5jdGlvbiB8IENlbGxQcm9wZXJ0eSB8IENsYXNzU3RydWN0dXJlIHwgUHJvcGVy
dHlDYWxsYmFjaywgLy8gaGVscGVyIG9ubHkgdXNlZCBieSBzdGF0aWMgaGFzaHRhYmxlcwogICAg
IEJ1aWx0aW5PckZ1bmN0aW9uT3JBY2Nlc3Nvck9yTGF6eVByb3BlcnR5ID0gQnVpbHRpbiB8IEZ1
bmN0aW9uIHwgQWNjZXNzb3IgfCBDZWxsUHJvcGVydHkgfCBDbGFzc1N0cnVjdHVyZSB8IFByb3Bl
cnR5Q2FsbGJhY2ssIC8vIGhlbHBlciBvbmx5IHVzZWQgYnkgc3RhdGljIGhhc2h0YWJsZXMKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAppbmRleCA4MTIzOWM1YjkyNGI0ZWNjOGU2ZDcw
YmM4MDc3ZTgzOGFmMWUxZDYxLi5mOTI3MzQ3MzRhY2VlYzQxYTQ1ODM2MDk1NGIwN2Q4ZmFjMTI1
YmJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCkBAIC01MTEsMTcgKzUxMSwx
NyBAQCBzdGF0aWMgVGh1bmtHZW5lcmF0b3IgdGh1bmtHZW5lcmF0b3JGb3JJbnRyaW5zaWMoSW50
cmluc2ljIGludHJpbnNpYykKIAogTmF0aXZlRXhlY3V0YWJsZSogVk06OmdldEhvc3RGdW5jdGlv
bihOYXRpdmVGdW5jdGlvbiBmdW5jdGlvbiwgTmF0aXZlRnVuY3Rpb24gY29uc3RydWN0b3IsIGNv
bnN0IFN0cmluZyYgbmFtZSkKIHsKLSAgICByZXR1cm4gZ2V0SG9zdEZ1bmN0aW9uKGZ1bmN0aW9u
LCBOb0ludHJpbnNpYywgY29uc3RydWN0b3IsIG5hbWUpOworICAgIHJldHVybiBnZXRIb3N0RnVu
Y3Rpb24oZnVuY3Rpb24sIE5vSW50cmluc2ljLCBjb25zdHJ1Y3RvciwgbnVsbHB0ciwgbmFtZSk7
CiB9CiAKLU5hdGl2ZUV4ZWN1dGFibGUqIFZNOjpnZXRIb3N0RnVuY3Rpb24oTmF0aXZlRnVuY3Rp
b24gZnVuY3Rpb24sIEludHJpbnNpYyBpbnRyaW5zaWMsIE5hdGl2ZUZ1bmN0aW9uIGNvbnN0cnVj
dG9yLCBjb25zdCBTdHJpbmcmIG5hbWUpCitOYXRpdmVFeGVjdXRhYmxlKiBWTTo6Z2V0SG9zdEZ1
bmN0aW9uKE5hdGl2ZUZ1bmN0aW9uIGZ1bmN0aW9uLCBJbnRyaW5zaWMgaW50cmluc2ljLCBOYXRp
dmVGdW5jdGlvbiBjb25zdHJ1Y3RvciwgY29uc3QgRE9NSklUOjpTaWduYXR1cmUqIHNpZ25hdHVy
ZSwgY29uc3QgU3RyaW5nJiBuYW1lKQogewogI2lmIEVOQUJMRShKSVQpCiAgICAgaWYgKGNhblVz
ZUpJVCgpKSB7CiAgICAgICAgIHJldHVybiBqaXRTdHVicy0+aG9zdEZ1bmN0aW9uU3R1YigKICAg
ICAgICAgICAgIHRoaXMsIGZ1bmN0aW9uLCBjb25zdHJ1Y3RvciwKICAgICAgICAgICAgIGludHJp
bnNpYyAhPSBOb0ludHJpbnNpYyA/IHRodW5rR2VuZXJhdG9yRm9ySW50cmluc2ljKGludHJpbnNp
YykgOiAwLAotICAgICAgICAgICAgaW50cmluc2ljLCBuYW1lKTsKKyAgICAgICAgICAgIGludHJp
bnNpYywgc2lnbmF0dXJlLCBuYW1lKTsKICAgICB9CiAjZWxzZSAvLyBFTkFCTEUoSklUKQogICAg
IFVOVVNFRF9QQVJBTShpbnRyaW5zaWMpOwpAQCAtNTI5LDcgKzUyOSw3IEBAIE5hdGl2ZUV4ZWN1
dGFibGUqIFZNOjpnZXRIb3N0RnVuY3Rpb24oTmF0aXZlRnVuY3Rpb24gZnVuY3Rpb24sIEludHJp
bnNpYyBpbnRyaW5zCiAgICAgcmV0dXJuIE5hdGl2ZUV4ZWN1dGFibGU6OmNyZWF0ZSgqdGhpcywK
ICAgICAgICAgYWRvcHRSZWYobmV3IE5hdGl2ZUpJVENvZGUoTWFjcm9Bc3NlbWJsZXJDb2RlUmVm
OjpjcmVhdGVMTEludENvZGVSZWYobGxpbnRfbmF0aXZlX2NhbGxfdHJhbXBvbGluZSksIEpJVENv
ZGU6Okhvc3RDYWxsVGh1bmspKSwgZnVuY3Rpb24sCiAgICAgICAgIGFkb3B0UmVmKG5ldyBOYXRp
dmVKSVRDb2RlKE1hY3JvQXNzZW1ibGVyQ29kZVJlZjo6Y3JlYXRlTExJbnRDb2RlUmVmKGxsaW50
X25hdGl2ZV9jb25zdHJ1Y3RfdHJhbXBvbGluZSksIEpJVENvZGU6Okhvc3RDYWxsVGh1bmspKSwg
Y29uc3RydWN0b3IsCi0gICAgICAgIE5vSW50cmluc2ljLCBuYW1lKTsKKyAgICAgICAgTm9JbnRy
aW5zaWMsIHNpZ25hdHVyZSwgbmFtZSk7CiB9CiAKIFZNOjpDbGllbnREYXRhOjp+Q2xpZW50RGF0
YSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAppbmRleCA0ZmQ3ZWM0MGYwM2VlZGViMjli
ZDQ5NjdkOWNkYzQzMDI0Y2ZhNDEwLi4xNWEwOGMyYTMzYmU5NzJiNGE5YTMyZGZjMzUwZDZlMzhj
Yzg0MmVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKQEAgLTQyOSw3ICs0MjksNyBA
QCBjbGFzcyBWTSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxWTT4gewogICAgIHN0ZDo6
dW5pcXVlX3B0cjxGVEw6OlRodW5rcz4gZnRsVGh1bmtzOwogI2VuZGlmCiAgICAgTmF0aXZlRXhl
Y3V0YWJsZSogZ2V0SG9zdEZ1bmN0aW9uKE5hdGl2ZUZ1bmN0aW9uLCBOYXRpdmVGdW5jdGlvbiBj
b25zdHJ1Y3RvciwgY29uc3QgU3RyaW5nJiBuYW1lKTsKLSAgICBOYXRpdmVFeGVjdXRhYmxlKiBn
ZXRIb3N0RnVuY3Rpb24oTmF0aXZlRnVuY3Rpb24sIEludHJpbnNpYyBpbnRyaW5zaWMsIE5hdGl2
ZUZ1bmN0aW9uIGNvbnN0cnVjdG9yLCBjb25zdCBTdHJpbmcmIG5hbWUpOworICAgIE5hdGl2ZUV4
ZWN1dGFibGUqIGdldEhvc3RGdW5jdGlvbihOYXRpdmVGdW5jdGlvbiwgSW50cmluc2ljLCBOYXRp
dmVGdW5jdGlvbiBjb25zdHJ1Y3RvciwgY29uc3QgRE9NSklUOjpTaWduYXR1cmUqLCBjb25zdCBT
dHJpbmcmIG5hbWUpOwogCiAgICAgc3RhdGljIHB0cmRpZmZfdCBleGNlcHRpb25PZmZzZXQoKQog
ICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNl
L1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggNWEwOTc0ZDZiZTQ4ZjA3NDVhZGE2MzlmZGFi
YTM0ZDRiM2RiNjVmNC4uNmY0YmJjZTExOWM1MjYzM2YzYjMxMTIyZGQwMDE0NmZhNjFhYjU2YSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dl
YkNvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTM1MTksNiArMzUxOSwxNSBAQCBNQUtFX0hBU0hfVE9P
TFMoJHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0vQ29sb3JEYXRhKQogbGlzdChBUFBFTkQgV2ViQ29y
ZV9ERVJJVkVEX1NPVVJDRVMgJHtERVJJVkVEX1NPVVJDRVNfV0VCQ09SRV9ESVJ9L0NvbG9yRGF0
YS5jcHApCiAKIAorIyBHZW5lcmF0ZSBET01KSVRBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmgKK2Fk
ZF9jdXN0b21fY29tbWFuZCgKKyAgICBPVVRQVVQgJHtERVJJVkVEX1NPVVJDRVNfV0VCQ09SRV9E
SVJ9L0RPTUpJVEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaAorICAgIE1BSU5fREVQRU5ERU5DWSBk
b21qaXQvRE9NSklUQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS55YW1sCisgICAgREVQRU5EUyAke1dF
QkNPUkVfRElSfS9kb21qaXQvZ2VuZXJhdGUtYWJzdHJhY3QtaGVhcC5yYgorICAgIENPTU1BTkQg
JHtSVUJZX0VYRUNVVEFCTEV9ICR7V0VCQ09SRV9ESVJ9L2RvbWppdC9nZW5lcmF0ZS1hYnN0cmFj
dC1oZWFwLnJiICR7V0VCQ09SRV9ESVJ9L2RvbWppdC9ET01KSVRBYnN0cmFjdEhlYXBSZXBvc2l0
b3J5LnlhbWwgJHtERVJJVkVEX1NPVVJDRVNfV0VCQ09SRV9ESVJ9L0RPTUpJVEFic3RyYWN0SGVh
cFJlcG9zaXRvcnkuaAorICAgIFZFUkJBVElNKQorbGlzdChBUFBFTkQgV2ViQ29yZV9ERVJJVkVE
X1NPVVJDRVMgJHtERVJJVkVEX1NPVVJDRVNfV0VCQ09SRV9ESVJ9L0RPTUpJVEFic3RyYWN0SGVh
cFJlcG9zaXRvcnkuaCkKKwogIyBHZW5lcmF0ZSBYTUxWaWV3ZXJDU1MuaAogYWRkX2N1c3RvbV9j
b21tYW5kKAogICAgIE9VVFBVVCAke0RFUklWRURfU09VUkNFU19XRUJDT1JFX0RJUn0vWE1MVmll
d2VyQ1NTLmggJHtERVJJVkVEX1NPVVJDRVNfV0VCQ09SRV9ESVJ9L1hNTFZpZXdlci5taW4uY3Nz
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlIGIvU291cmNl
L1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQppbmRleCAwY2JjMWRmODE1ODZmMTQ5OWVmNDFh
MmNiYjYyMTg2MTQ1NTUwYjI3Li5hZGE1YWNiNDlmY2EyYzQwZjMwZDgwNjEyYTE2ZTM5YTJkMTY2
OWFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCisrKyBi
L1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKQEAgLTc0Niw2ICs3NDYsNyBAQCBK
U19CSU5ESU5HX0lETFMgPSBcCiAKIFBZVEhPTiA9IHB5dGhvbgogUEVSTCA9IHBlcmwKK1JVQlkg
PSBydWJ5CiAKIGlmZXEgKCQoT1MpLFdpbmRvd3NfTlQpCiAgICAgREVMRVRFID0gY21kIC8vQyBk
ZWwKQEAgLTg1Miw2ICs4NTMsNyBAQCBhbGwgOiBcCiAgICAgQ1NTVmFsdWVLZXl3b3Jkcy5jcHAg
XAogICAgIENTU1ZhbHVlS2V5d29yZHMuaCBcCiAgICAgQ29sb3JEYXRhLmNwcCBcCisgICAgRE9N
SklUQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5oIFwKICAgICBFdmVudEludGVyZmFjZXMuaCBcCiAg
ICAgRXZlbnRUYXJnZXRJbnRlcmZhY2VzLmggXAogICAgIEV4Y2VwdGlvbkNvZGVEZXNjcmlwdGlv
bi5jcHAgXApAQCAtOTQxLDYgKzk0MywxNSBAQCBTZWxlY3RvclBzZXVkb0VsZW1lbnRUeXBlTWFw
LmNwcCA6ICQoV2ViQ29yZSkvY3NzL21ha2VTZWxlY3RvclBzZXVkb0VsZW1lbnRzTWFwLgogCiAj
IC0tLS0tLS0tCiAKKyMgRE9NSklUIEFic3RyYWN0IEhlYXAKKworYWxsIDogRE9NSklUQWJzdHJh
Y3RIZWFwUmVwb3NpdG9yeS5oCisKK0RPTUpJVEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaCA6ICQo
V2ViQ29yZSkvZG9taml0L2dlbmVyYXRlLWFic3RyYWN0LWhlYXAucmIgJChXZWJDb3JlKS9kb21q
aXQvRE9NSklUQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS55YW1sCisJJChSVUJZKSAiJChXZWJDb3Jl
KS9kb21qaXQvZ2VuZXJhdGUtYWJzdHJhY3QtaGVhcC5yYiIgJChXZWJDb3JlKS9kb21qaXQvRE9N
SklUQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS55YW1sIC4vRE9NSklUQWJzdHJhY3RIZWFwUmVwb3Np
dG9yeS5oCisKKyMgLS0tLS0tLS0KKwogIyBYTUxWaWV3ZXIgQ1NTCiAKIGFsbCA6IFhNTFZpZXdl
ckNTUy5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy9ieXRl
Y29kZS9TcGVjdWxhdGVkVHlwZS5oIGIvU291cmNlL1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMv
Ynl0ZWNvZGUvU3BlY3VsYXRlZFR5cGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wOTQ2NmY0ZjAwYjgwN2RmZWRh
MGZjODIwODU0NmI3MTg0NGYwOTllCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
Rm9yd2FyZGluZ0hlYWRlcnMvYnl0ZWNvZGUvU3BlY3VsYXRlZFR5cGUuaApAQCAtMCwwICsxLDI5
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisg
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRl
ZiBXZWJDb3JlX0ZXRF9TcGVjdWxhdGVkVHlwZV9oCisjZGVmaW5lIFdlYkNvcmVfRldEX1NwZWN1
bGF0ZWRUeXBlX2gKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TcGVjdWxhdGVkVHlwZS5oPgor
I2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy9kb21q
aXQvRE9NSklUU2lnbmF0dXJlLmggYi9Tb3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy9k
b21qaXQvRE9NSklUU2lnbmF0dXJlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzIwMDI3ZjZlMDhlMzgzMGUzNTFi
MWM5Y2QzMmYyMDMxMjlkMmI1ZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL0Zv
cndhcmRpbmdIZWFkZXJzL2RvbWppdC9ET01KSVRTaWduYXR1cmUuaApAQCAtMCwwICsxLDI5IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQor
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBX
ZWJDb3JlX0ZXRF9ET01KSVRTaWduYXR1cmVfaAorI2RlZmluZSBXZWJDb3JlX0ZXRF9ET01KSVRT
aWduYXR1cmVfaAorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0RPTUpJVFNpZ25hdHVyZS5oPgor
I2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKaW5kZXggNTFhZTE4MWEzNzE1MjAxMzExNmI5YjgwMWU4NTcxMjI0ZWNmYWVkOC4uNmRk
NTBkYmExNGZjNTEyNjA0NTc1ZDZlMjEyODk4ZWE5ZjI0ZDBiOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNjIxMywxMiArNjIx
MywxMyBAQAogCQlFMzE1MEVBNzFEQTcyMTkzMDAxOTQwMTIgLyogRE9NSklUSGVscGVycy5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTMxNTBFQTUxREE3
MjE4RDAwMTk0MDEyIC8qIERPTUpJVEhlbHBlcnMuaCAqLzsgfTsKIAkJRTMxODAzOUQxREM0MDA5
OTAwOTkzMkMyIC8qIEpTRHluYW1pY0Rvd25jYXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFM0E1ODcyRTFEQzNGNTI2MDBGNjA3QTYgLyogSlNEeW5h
bWljRG93bmNhc3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQlFMzU2NUI3QjFEQzJENkM5MDAyMTdEQkQgLyogSlNFdmVudEN1c3RvbS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM0RUU0OUYxREMyRDU3
NTAwRUFBOUQzIC8qIEpTRXZlbnRDdXN0b20uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwotCQlFMzVDQTE0RDFEQkMzQTNGMDBGODM1MTYgLyogRE9NSklU
QWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBFMzVDQTE0QjFEQkMzQTNDMDBGODM1MTYgLyogRE9NSklUQWJzdHJh
Y3RIZWFwUmVwb3NpdG9yeS5jcHAgKi87IH07Ci0JCUUzNUNBMTRFMURCQzNBNDIwMEY4MzUxNiAv
KiBET01KSVRBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzVDQTE0QzFEQkMzQTNDMDBGODM1MTYgLyogRE9NSklU
QWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5oICovOyB9OworCQlFMzU4MDJCNjFEQzg0MzVEMDBBOTc3
M0MgLyogRE9NSklUSURMVHlwZUZpbHRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRTM1ODAyQjUxREM4NDM1ODAwQTk3NzNDIC8qIERPTUpJVElETFR5
cGVGaWx0ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQlFMzc3RkU0RDFEQURFMTY1MDBDREQwMjUgLyogTm9kZUNvbnN0YW50cy5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTNEMDQ5OTMxREFEQzA0NTAw
NzE4RjNDIC8qIE5vZGVDb25zdGFudHMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQlFMzg4Mzg5ODFCQUQxNDVGMDBENjJFRTMgLyogU2NyaXB0TW9k
dWxlTG9hZGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEUzODgzODk0MUJBRDE0NUYwMEQ2MkVFMyAvKiBTY3JpcHRNb2R1bGVMb2FkZXIuY3BwICov
OyB9OwogCQlFMzg4Mzg5OTFCQUQxNDVGMDBENjJFRTMgLyogU2NyaXB0TW9kdWxlTG9hZGVyLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzg4Mzg5NTFC
QUQxNDVGMDBENjJFRTMgLyogU2NyaXB0TW9kdWxlTG9hZGVyLmggKi87IH07CiAJCUUzOThGQzI0
MURDMzJBMjAwMDNDNDY4NCAvKiBET01KSVRIZWxwZXJzLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzOThGQzIzMURDMzJBMUIwMDNDNDY4NCAvKiBE
T01KSVRIZWxwZXJzLmNwcCAqLzsgfTsKKwkJRTNBNzc2NjcxREM4NUQyODAwQjY5MEQ4IC8qIERP
TUpJVElETENvbnZlcnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEUzQTc3NjY1MURDODVEMjIwMEI2OTBEOCAvKiBET01KSVRJRExDb252ZXJ0LmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJRTNBNzc2Njgx
REM4NUQyODAwQjY5MEQ4IC8qIERPTUpJVElETFR5cGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzQTc3NjY2MURDODVEMjIwMEI2OTBEOCAvKiBET01K
SVRJRExUeXBlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJRTNCMkYwRUIxRDdGNEM5RDAwQjBDOUQxIC8qIExvYWRhYmxlQ2xhc3NpY1NjcmlwdC5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFM0IyRjBF
MzFEN0YzNUVDMDBCMEM5RDEgLyogTG9hZGFibGVDbGFzc2ljU2NyaXB0LmNwcCAqLzsgfTsKIAkJ
RTNCMkYwRUMxRDdGNENBMTAwQjBDOUQxIC8qIExvYWRhYmxlU2NyaXB0LmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzQjJGMEU5MUQ3RjNEM0MwMEIw
QzlEMSAvKiBMb2FkYWJsZVNjcmlwdC5jcHAgKi87IH07CiAJCUUzQjJGMEVEMUQ3RjRDQTMwMEIw
QzlEMSAvKiBMb2FkYWJsZVNjcmlwdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRTNCMkYwRTcxRDdGMzVFQzAwQjBDOUQxIC8qIExvYWRhYmxlU2NyaXB0
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTE0
MDYxLDEzICsxNDA2MiwxNSBAQAogCQlFMUZGOEY2QTE4MERCNUJFMDAxMzI2NzQgLyogQ3J5cHRv
QWxnb3JpdGhtUmVnaXN0cnkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gQ3J5cHRvQWxnb3JpdGhtUmVnaXN0cnkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlFMUZGOEY2QjE4MERCNUJFMDAxMzI2NzQgLyogQ3J5cHRvQWxnb3JpdGhtUmVnaXN0cnku
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ3J5cHRvQWxnb3JpdGhtUmVnaXN0
cnkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTMxNTBFQTUxREE3MjE4RDAwMTk0
MDEyIC8qIERPTUpJVEhlbHBlcnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
RE9NSklUSGVscGVycy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFMzM0ODI1RTFE
QzkzQUEwMDA5Qzk1NDQgLyogRE9NSklUQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBET01KSVRBYnN0cmFjdEhlYXBSZXBvc2l0b3J5Lmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzNEVFNDlGMURDMkQ1NzUwMEVBQTlEMyAv
KiBKU0V2ZW50Q3VzdG9tLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTRXZl
bnRDdXN0b20uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRTM1Q0ExNEIxREJDM0Ez
QzAwRjgzNTE2IC8qIERPTUpJVEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRE9NSklUQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUUzNUNBMTRDMURCQzNBM0MwMEY4MzUx
NiAvKiBET01KSVRBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IERPTUpJVEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJRTM1ODAyQjUxREM4NDM1ODAwQTk3NzNDIC8qIERPTUpJVElETFR5
cGVGaWx0ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRE9NSklUSURMVHlw
ZUZpbHRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzg4Mzg5NDFCQUQxNDVG
MDBENjJFRTMgLyogU2NyaXB0TW9kdWxlTG9hZGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFNjcmlwdE1vZHVsZUxvYWRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUUzODgzODk1MUJBRDE0NUYwMEQ2MkVFMyAvKiBTY3JpcHRNb2R1bGVMb2Fk
ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2NyaXB0TW9kdWxlTG9hZGVy
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzOThGQzIzMURDMzJBMUIwMDNDNDY4
NCAvKiBET01KSVRIZWxwZXJzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IERPTUpJVEhlbHBlcnMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFM0E1
ODcyRTFEQzNGNTI2MDBGNjA3QTYgLyogSlNEeW5hbWljRG93bmNhc3QuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gSlNEeW5hbWljRG93bmNhc3QuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJRTNBNzc2NjUxREM4NUQyMjAwQjY5MEQ4IC8qIERPTUpJVElETENvbnZl
cnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRE9NSklUSURMQ29udmVydC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFM0E3NzY2NjFEQzg1RDIyMDBCNjkwRDgg
LyogRE9NSklUSURMVHlwZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBET01K
SVRJRExUeXBlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzQUZBOTY0MURBNkU5
MDgwMDI4NjFCRCAvKiBKU05vZGVET01KSVQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gSlNOb2RlRE9NSklULmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJRTNCMkYwRTMxRDdGMzVFQzAwQjBDOUQxIC8qIExvYWRhYmxlQ2xhc3NpY1NjcmlwdC5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBMb2FkYWJsZUNsYXNzaWNTY3Jp
cHQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFM0IyRjBFNDFEN0YzNUVDMDBC
MEM5RDEgLyogTG9hZGFibGVDbGFzc2ljU2NyaXB0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IExvYWRhYmxlQ2xhc3NpY1NjcmlwdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwpAQCAtMTcyNTgsNiArMTcyNjEsNyBAQAogCQkJCTY1NjU4MTQ3MDlEMTMwNDMwMDBFNjFE
NyAvKiBDU1NWYWx1ZUtleXdvcmRzLmdwZXJmICovLAogCQkJCTY1NjU4MTQ4MDlEMTMwNDMwMDBF
NjFENyAvKiBDU1NWYWx1ZUtleXdvcmRzLmggKi8sCiAJCQkJOUIzQTg4NzExNDU2MzJGOTAwM0FF
OEY1IC8qIERPTURPTVNldHRhYmxlVG9rZW5MaXN0LmggKi8sCisJCQkJRTMzNDgyNUUxREM5M0FB
MDAwOUM5NTQ0IC8qIERPTUpJVEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaCAqLywKIAkJCQlFMUM2
Q0ZDMjE3NDZEMjkzMDA3Qjg3QTEgLyogRE9NV2luZG93Q29uc3RydWN0b3JzLmlkbCAqLywKIAkJ
CQk5NzBCNzJBNTE0NTAwOEVCMDBGMDBBMzcgLyogRXZlbnRIZWFkZXJzLmggKi8sCiAJCQkJOTcw
QjcyODkxNDRGRkFDNjAwRjAwQTM3IC8qIEV2ZW50SW50ZXJmYWNlcy5oICovLApAQCAtMjI4NzAs
MTEgKzIyODc0LDEyIEBACiAJCUUzQUZBOTYzMURBNkU4QUYwMDI4NjFCRCAvKiBkb21qaXQgKi8g
PSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAotCQkJCUUzNUNBMTRCMURC
QzNBM0MwMEY4MzUxNiAvKiBET01KSVRBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmNwcCAqLywKLQkJ
CQlFMzVDQTE0QzFEQkMzQTNDMDBGODM1MTYgLyogRE9NSklUQWJzdHJhY3RIZWFwUmVwb3NpdG9y
eS5oICovLAogCQkJCUUzQzk5QTA4MURDM0Q0MTcwMDc5NEFEMyAvKiBET01KSVRDaGVja0RPTS5o
ICovLAogCQkJCUUzOThGQzIzMURDMzJBMUIwMDNDNDY4NCAvKiBET01KSVRIZWxwZXJzLmNwcCAq
LywKIAkJCQlFMzE1MEVBNTFEQTcyMThEMDAxOTQwMTIgLyogRE9NSklUSGVscGVycy5oICovLAor
CQkJCUUzQTc3NjY1MURDODVEMjIwMEI2OTBEOCAvKiBET01KSVRJRExDb252ZXJ0LmggKi8sCisJ
CQkJRTNBNzc2NjYxREM4NUQyMjAwQjY5MEQ4IC8qIERPTUpJVElETFR5cGUuaCAqLywKKwkJCQlF
MzU4MDJCNTFEQzg0MzU4MDBBOTc3M0MgLyogRE9NSklUSURMVHlwZUZpbHRlci5oICovLAogCQkJ
CUUzQjdDMDYyMURDMzQxNUEwMDFGQjBCOCAvKiBKU0RvY3VtZW50RE9NSklULmNwcCAqLywKIAkJ
CQlFM0FGQTk2NDFEQTZFOTA4MDAyODYxQkQgLyogSlNOb2RlRE9NSklULmNwcCAqLywKIAkJCSk7
CkBAIC0yNTc0MSw2ICsyNTc0Niw3IEBACiAJCQkJNDYwQ0JGMzYxRDRCQ0QwRTAwOTJFODhFIC8q
IEpTRE9NV2luZG93UHJvcGVydGllcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNCRkI1M0QwRENE
MjlDRjAwMTlCM0U1IC8qIEpTRE9NV2luZG93U2hlbGwuaCBpbiBIZWFkZXJzICovLAogCQkJCTY1
RTBFOTQ0MTEzM0M4OUYwMEI0Q0IxMCAvKiBKU0RPTVdyYXBwZXIuaCBpbiBIZWFkZXJzICovLAor
CQkJCUUzQTc3NjY3MURDODVEMjgwMEI2OTBEOCAvKiBET01KSVRJRExDb252ZXJ0LmggaW4gSGVh
ZGVycyAqLywKIAkJCQlGRDc4NjhCQTEzNkI5OTkyMDBENDAzREYgLyogSlNEeW5hbWljc0NvbXBy
ZXNzb3JOb2RlLmggaW4gSGVhZGVycyAqLywKIAkJCQk2NURGMzFGQTA5RDFDQzYwMDAwQkUzMjUg
LyogSlNFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlBREVDNzhGODE4RUU1MzA4MDAxMzE1
QzIgLyogSlNFbGVtZW50Q3VzdG9tLmggaW4gSGVhZGVycyAqLywKQEAgLTI3MzA0LDYgKzI3MzEw
LDcgQEAKIAkJCQkwODUyNUU2MzEyNzhDMDAxMDBBODQ3NzggLyogU1ZHQW5pbWF0ZWRTdGF0aWNQ
cm9wZXJ0eVRlYXJPZmYuaCBpbiBIZWFkZXJzICovLAogCQkJCTA4NERCNTlCMTI4MDA4Q0MwMDJB
NkQ2NCAvKiBTVkdBbmltYXRlZFN0cmluZy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDgyNTA5Mzkx
MjhCRDREODAwRTJFRDhFIC8qIFNWR0FuaW1hdGVkVHJhbnNmb3JtTGlzdC5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJRTNBNzc2NjgxREM4NUQyODAwQjY5MEQ4IC8qIERPTUpJVElETFR5cGUuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTA4NUExNTkzMTI4OUE4REQwMDI3MTBFMyAvKiBTVkdBbmltYXRlZFRy
YW5zZm9ybUxpc3RQcm9wZXJ0eVRlYXJPZmYuaCBpbiBIZWFkZXJzICovLAogCQkJCTQzOUQzMzQz
MTNBNjkxMUMwMEMyMEY0RiAvKiBTVkdBbmltYXRlZFR5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTQzOUQzMzQ0MTNBNjkxMUMwMEMyMEY0RiAvKiBTVkdBbmltYXRlZFR5cGVBbmltYXRvci5oIGlu
IEhlYWRlcnMgKi8sCkBAIC0yNzg0Myw2ICsyNzg1MCw3IEBACiAJCQkJOTdBQUJEMjMxNEZBMDlE
NTAwNzQ1N0FFIC8qIFdlYlNvY2tldEV4dGVuc2lvbkRpc3BhdGNoZXIuaCBpbiBIZWFkZXJzICov
LAogCQkJCTRBNUEyQURDMTYxRTdFMDAwMDU4ODlERCAvKiBXZWJTb2NrZXRFeHRlbnNpb25QYXJz
ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTk3QUFCRDI0MTRGQTA5RDUwMDc0NTdBRSAvKiBXZWJT
b2NrZXRFeHRlbnNpb25Qcm9jZXNzb3IuaCBpbiBIZWFkZXJzICovLAorCQkJCUUzNTgwMkI2MURD
ODQzNUQwMEE5NzczQyAvKiBET01KSVRJRExUeXBlRmlsdGVyLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk5N0FBQkQyNTE0RkEwOUQ1MDA3NDU3QUUgLyogV2ViU29ja2V0RnJhbWUuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTk3QUFCRDI3MTRGQTA5RDUwMDc0NTdBRSAvKiBXZWJTb2NrZXRIYW5kc2hha2Uu
aCBpbiBIZWFkZXJzICovLAogCQkJCTMxREVBNDU2MUIzOUY0RDkwMEY3NzE3OCAvKiBXZWJTeXN0
ZW1CYWNrZHJvcExheWVyLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5oCmluZGV4IGMxODFmOWExNmY1NTMwYmQ5NTNkYmY1
ZjFjMTVmMTNhNjI0ZmExMmMuLjVkYzFlZTQwYzk4NTQwZThjNDcwNWI3MDk1NzU5ZmZjZmMyNWRh
MGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2Jq
ZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3Qu
aApAQCAtODEsNyArODEsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgcHVibGljOgogICAg
ICAgICB+SlNET01HbG9iYWxPYmplY3QoKTsKIAotICAgICAgICBzdGF0aWMgY29uc3QgSlNDOjpD
bGFzc0luZm8qIGluZm8oKSB7IHJldHVybiAmc19pbmZvOyB9CisgICAgICAgIHN0YXRpYyBjb25z
dGV4cHIgY29uc3QgSlNDOjpDbGFzc0luZm8qIGluZm8oKSB7IHJldHVybiAmc19pbmZvOyB9CiAK
ICAgICAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYg
dm0sIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KaW5kZXggMzU0OTBkMDJj
MmRhMGJlMjUwZDZmZWVhNTlmZmJlNzBiNTM1MGU1OS4uZjg2NjVkODUxZTQ5YTcyMWQyZTY0N2Jj
ZGUwYjYxZWM3MjRjMjk4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KQEAgLTE0MzUsNyArMTQzNSw3IEBAIHN1YiBHZW5lcmF0
ZUhlYWRlcgogICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAicHJvdGVjdGVkOlxuIik7CiAg
ICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgc3RhdGljIGNvbnN0IEpTQzo6Q2xhc3NJ
bmZvIHNfaW5mbztcbiIpOwogICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAicHVibGljOlxu
Iik7Ci0gICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgc3RhdGljIGNvbnN0IEpTQzo6
Q2xhc3NJbmZvKiBpbmZvKCkgeyByZXR1cm4gJnNfaW5mbzsgfVxuXG4iKTsKKyAgICAgICAgcHVz
aChAaGVhZGVyQ29udGVudCwgIiAgICBzdGF0aWMgY29uc3RleHByIGNvbnN0IEpTQzo6Q2xhc3NJ
bmZvKiBpbmZvKCkgeyByZXR1cm4gJnNfaW5mbzsgfVxuXG4iKTsKICAgICB9IGVsc2UgewogICAg
ICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiXG4iKTsKICAgICAgICAgcHVzaChAaGVhZGVyQ29u
dGVudCwgIiAgICBERUNMQVJFX0lORk87XG5cbiIpOwpAQCAtMTg4OSw3ICsxODg5LDExIEBAIHN1
YiBHZW5lcmF0ZVByb3BlcnRpZXNIYXNoVGFibGUKICAgICAgICAgIyBGSVhNRTogUmVtb3ZlIHRo
aXMgb25jZSB3ZSBjYW4gZ2V0IHJpZCBvZiB0aGUgcXVpcmsgaW50cm9kdWNlZCBpbiBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYzOTY3LgogICAgICAgICAkZnVuY3Rp
b25MZW5ndGggPSAzIGlmICRpbnRlcmZhY2VOYW1lIGVxICJFdmVudCIgYW5kICRmdW5jdGlvbi0+
bmFtZSBlcSAiaW5pdEV2ZW50IjsKIAotICAgICAgICBwdXNoKEAkaGFzaFZhbHVlMiwgJGZ1bmN0
aW9uTGVuZ3RoKTsKKyAgICAgICAgaWYgKCRmdW5jdGlvbi0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57
IkRPTUpJVCJ9KSB7CisgICAgICAgICAgICBwdXNoKEAkaGFzaFZhbHVlMiwgIiZET01KSVRTaWdu
YXR1cmVGb3IiIC4gJGludGVyZmFjZS0+dHlwZS0+bmFtZSAuICRjb2RlR2VuZXJhdG9yLT5XS191
Y2ZpcnN0KCRmdW5jdGlvbi0+bmFtZSkpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAg
cHVzaChAJGhhc2hWYWx1ZTIsICRmdW5jdGlvbkxlbmd0aCk7CisgICAgICAgIH0KIAogICAgICAg
ICBwdXNoKEAkaGFzaFNwZWNpYWxzLCBDb21wdXRlRnVuY3Rpb25TcGVjaWFsKCRpbnRlcmZhY2Us
ICRmdW5jdGlvbikpOwogCkBAIC0yNTA1LDM5ICsyNTA5LDI4IEBAIHN1YiBhZGRVbnNjb3BhYmxl
UHJvcGVydGllcwogICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHB1dERpcmVjdFdpdGhvdXRU
cmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT51bnNjb3BhYmxlc1N5bWJvbCwgJnVuc2Nv
cGFibGVzLCBEb250RW51bSB8IFJlYWRPbmx5KTtcbiIpOwogfQogCi1zdWIgR2V0UmVzdWx0VHlw
ZUZpbHRlcgorc3ViIEdldFVuc2FmZUFyZ3VtZW50VHlwZQogewotICAgIG15ICgkdHlwZSkgPSBA
XzsKKyAgICBteSAoJGludGVyZmFjZSwgJHR5cGUpID0gQF87CiAKLSAgICBteSAlVHlwZUZpbHRl
cnMgPSAoCi0gICAgICAgICJhbnkiID0+ICJTcGVjSGVhcFRvcCIsCi0gICAgICAgICJib29sZWFu
IiA9PiAiU3BlY0Jvb2xlYW4iLAotICAgICAgICAiYnl0ZSIgPT4gIlNwZWNJbnQzMk9ubHkiLAot
ICAgICAgICAib2N0ZXQiID0+ICJTcGVjSW50MzJPbmx5IiwKLSAgICAgICAgInNob3J0IiA9PiAi
U3BlY0ludDMyT25seSIsCi0gICAgICAgICJ1bnNpZ25lZCBzaG9ydCIgPT4gIlNwZWNJbnQzMk9u
bHkiLAotICAgICAgICAibG9uZyIgPT4gIlNwZWNJbnQzMk9ubHkiLAotICAgICAgICAidW5zaWdu
ZWQgbG9uZyIgPT4gIlNwZWNCeXRlY29kZU51bWJlciIsCi0gICAgICAgICJsb25nIGxvbmciID0+
ICJTcGVjQnl0ZWNvZGVOdW1iZXIiLAotICAgICAgICAidW5zaWduZWQgbG9uZyBsb25nIiA9PiAi
U3BlY0J5dGVjb2RlTnVtYmVyIiwKLSAgICAgICAgImZsb2F0IiA9PiAiU3BlY0J5dGVjb2RlTnVt
YmVyIiwKLSAgICAgICAgInVucmVzdHJpY3RlZCBmbG9hdCIgPT4gIlNwZWNCeXRlY29kZU51bWJl
ciIsCi0gICAgICAgICJkb3VibGUiID0+ICJTcGVjQnl0ZWNvZGVOdW1iZXIiLAotICAgICAgICAi
dW5yZXN0cmljdGVkIGRvdWJsZSIgPT4gIlNwZWNCeXRlY29kZU51bWJlciIsCi0gICAgICAgICJE
T01TdHJpbmciID0+ICJTcGVjU3RyaW5nIiwKLSAgICAgICAgIkJ5dGVTdHJpbmciID0+ICJTcGVj
U3RyaW5nIiwKLSAgICAgICAgIlVTVlN0cmluZyIgPT4gIlNwZWNTdHJpbmciLAotICAgICk7Cisg
ICAgbXkgJElETFR5cGUgPSBHZXRJRExUeXBlKCRpbnRlcmZhY2UsICR0eXBlKTsKKyAgICByZXR1
cm4gIkRPTUpJVDo6SURMSlNBcmd1bWVudFR5cGU8JHtJRExUeXBlfT4iOworfQogCi0gICAgaWYg
KGV4aXN0cyAkVHlwZUZpbHRlcnN7JHR5cGUtPm5hbWV9KSB7Ci0gICAgICAgIG15ICRyZXN1bHRU
eXBlID0gIkpTQzo6JFR5cGVGaWx0ZXJzeyR0eXBlLT5uYW1lfSI7Ci0gICAgICAgIGlmICgkdHlw
ZS0+aXNOdWxsYWJsZSkgewotICAgICAgICAgICAgZGllICJcImFueVwiIHR5cGUgbXVzdCBub3Qg
YmVjb21lIG51bGxhYmxlLiIgaWYgJHR5cGUtPm5hbWUgZXEgImFueSI7Ci0gICAgICAgICAgICAk
cmVzdWx0VHlwZSA9ICIoJHJlc3VsdFR5cGUgfCBKU0M6OlNwZWNPdGhlcikiOwotICAgICAgICB9
Ci0gICAgICAgIHJldHVybiAkcmVzdWx0VHlwZTsKLSAgICB9Ci0gICAgcmV0dXJuICJTcGVjSGVh
cFRvcCI7CitzdWIgR2V0QXJndW1lbnRUeXBlRmlsdGVyCit7CisgICAgbXkgKCRpbnRlcmZhY2Us
ICR0eXBlKSA9IEBfOworCisgICAgbXkgJElETFR5cGUgPSBHZXRJRExUeXBlKCRpbnRlcmZhY2Us
ICR0eXBlKTsKKyAgICByZXR1cm4gIkRPTUpJVDo6SURMQXJndW1lbnRUeXBlRmlsdGVyPCR7SURM
VHlwZX0+IjsKK30KKworc3ViIEdldFJlc3VsdFR5cGVGaWx0ZXIKK3sKKyAgICBteSAoJGludGVy
ZmFjZSwgJHR5cGUpID0gQF87CisKKyAgICBteSAkSURMVHlwZSA9IEdldElETFR5cGUoJGludGVy
ZmFjZSwgJHR5cGUpOworICAgIHJldHVybiAiRE9NSklUOjpJRExSZXN1bHRUeXBlRmlsdGVyPCR7
SURMVHlwZX0+IjsKIH0KIAogc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KQEAgLTI2MDgsNiAr
MjYwMSwxNyBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICAgICAgICAgcHVzaChA
aW1wbENvbnRlbnQsICIjaWYgJHtjb25kaXRpb25hbFN0cmluZ31cbiIpIGlmICRjb25kaXRpb25h
bFN0cmluZzsKICAgICAgICAgICAgIG15ICRmdW5jdGlvbk5hbWUgPSBHZXRGdW5jdGlvbk5hbWUo
JGludGVyZmFjZSwgJGNsYXNzTmFtZSwgJGZ1bmN0aW9uKTsKICAgICAgICAgICAgIHB1c2goQGlt
cGxDb250ZW50LCAiSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMICR7ZnVuY3Rpb25O
YW1lfShKU0M6OkV4ZWNTdGF0ZSopO1xuIik7CisgICAgICAgICAgICBpZiAoJGNvZGVHZW5lcmF0
b3ItPkV4dGVuZGVkQXR0cmlidXRlQ29udGFpbnMoJGZ1bmN0aW9uLT5leHRlbmRlZEF0dHJpYnV0
ZXMtPntET01KSVR9LCAiU2lnbmF0dXJlIikpIHsKKyAgICAgICAgICAgICAgICAkaW1wbEluY2x1
ZGVzeyJET01KSVRJRExUeXBlLmgifSA9IDE7CisgICAgICAgICAgICAgICAgbXkgJHVuc2FmZUZ1
bmN0aW9uTmFtZSA9ICJ1bnNhZmUiIC4gJGNvZGVHZW5lcmF0b3ItPldLX3VjZmlyc3QoJGZ1bmN0
aW9uTmFtZSk7CisgICAgICAgICAgICAgICAgbXkgJGZ1bmN0aW9uU2lnbmF0dXJlID0gIkpTQzo6
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCAke3Vuc2FmZUZ1bmN0aW9uTmFtZX0oSlNDOjpF
eGVjU3RhdGUqLCAkY2xhc3NOYW1lKiI7CisgICAgICAgICAgICAgICAgZm9yZWFjaCBteSAkYXJn
dW1lbnQgKEB7JGZ1bmN0aW9uLT5hcmd1bWVudHN9KSB7CisgICAgICAgICAgICAgICAgICAgIG15
ICR0eXBlID0gJGFyZ3VtZW50LT50eXBlOworICAgICAgICAgICAgICAgICAgICBteSAkYXJndW1l
bnRUeXBlID0gR2V0VW5zYWZlQXJndW1lbnRUeXBlKCRpbnRlcmZhY2UsICR0eXBlKTsKKyAgICAg
ICAgICAgICAgICAgICAgJGZ1bmN0aW9uU2lnbmF0dXJlIC49ICIsICR7YXJndW1lbnRUeXBlfSI7
CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAk
ZnVuY3Rpb25TaWduYXR1cmUgLiAiKTtcbiIpOworICAgICAgICAgICAgfQogICAgICAgICAgICAg
cHVzaChAaW1wbENvbnRlbnQsICIjZW5kaWZcbiIpIGlmICRjb25kaXRpb25hbFN0cmluZzsKICAg
ICAgICAgfQogCkBAIC0yNjQ0LDYgKzI2NDgsMzYgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRp
b24KICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJcbiIpOwogICAgIH0KIAorICAgIGlmICgk
bnVtRnVuY3Rpb25zID4gMCkgeworICAgICAgICAjIEdlbmVyYXRlIERPTUpJVDo6U2lnbmF0dXJl
IHZhcmlhYmxlcy4KKyAgICAgICAgZm9yZWFjaCBteSAkZnVuY3Rpb24gKEBmdW5jdGlvbnMpIHsK
KyAgICAgICAgICAgIG5leHQgdW5sZXNzICRjb2RlR2VuZXJhdG9yLT5FeHRlbmRlZEF0dHJpYnV0
ZUNvbnRhaW5zKCRmdW5jdGlvbi0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57RE9NSklUfSwgIlNpZ25h
dHVyZSIpOworICAgICAgICAgICAgJGltcGxJbmNsdWRlc3siRE9NSklUSURMVHlwZUZpbHRlci5o
In0gPSAxOworICAgICAgICAgICAgJGltcGxJbmNsdWRlc3siRE9NSklUQ2hlY2tET00uaCJ9ID0g
MTsKKyAgICAgICAgICAgICRpbXBsSW5jbHVkZXN7IkRPTUpJVEFic3RyYWN0SGVhcFJlcG9zaXRv
cnkuaCJ9ID0gMTsKKworICAgICAgICAgICAgbXkgJGlzT3ZlcmxvYWRlZCA9ICRmdW5jdGlvbi0+
e292ZXJsb2Fkc30gJiYgQHskZnVuY3Rpb24tPntvdmVybG9hZHN9fSA+IDE7CisgICAgICAgICAg
ICBkaWUgIm92ZXJsb2FkcyBpcyBub3Qgc3VwcG9ydGVkIGluIERPTUpJVCIgaWYgJGlzT3Zlcmxv
YWRlZDsKKworICAgICAgICAgICAgbXkgJGludGVyZmFjZU5hbWUgPSAkaW50ZXJmYWNlLT50eXBl
LT5uYW1lOworICAgICAgICAgICAgbXkgJGZ1bmN0aW9uTmFtZSA9IEdldEZ1bmN0aW9uTmFtZSgk
aW50ZXJmYWNlLCAkY2xhc3NOYW1lLCAkZnVuY3Rpb24pOworICAgICAgICAgICAgbXkgJHVuc2Fm
ZUZ1bmN0aW9uTmFtZSA9ICJ1bnNhZmUiIC4gJGNvZGVHZW5lcmF0b3ItPldLX3VjZmlyc3QoJGZ1
bmN0aW9uTmFtZSk7CisgICAgICAgICAgICBteSAkZG9tSklUU2lnbmF0dXJlTmFtZSA9ICJET01K
SVRTaWduYXR1cmVGb3IiIC4gJGludGVyZmFjZS0+dHlwZS0+bmFtZSAuICRjb2RlR2VuZXJhdG9y
LT5XS191Y2ZpcnN0KCRmdW5jdGlvbi0+bmFtZSk7CisgICAgICAgICAgICBteSAkY2xhc3NJbmZv
ID0gIkpTIiAuICRpbnRlcmZhY2UtPnR5cGUtPm5hbWUgLiAiOjppbmZvKCkiOworICAgICAgICAg
ICAgbXkgJHJlc3VsdFR5cGUgPSBHZXRSZXN1bHRUeXBlRmlsdGVyKCRpbnRlcmZhY2UsICRmdW5j
dGlvbi0+dHlwZSk7CisgICAgICAgICAgICBteSAkZG9tSklUU2lnbmF0dXJlID0gInN0YXRpYyBj
b25zdCBKU0M6OkRPTUpJVDo6U2lnbmF0dXJlICR7ZG9tSklUU2lnbmF0dXJlTmFtZX0oKHVpbnRw
dHJfdCkke3Vuc2FmZUZ1bmN0aW9uTmFtZX0sIERPTUpJVDo6Y2hlY2tET008JGludGVyZmFjZU5h
bWU+LCAkY2xhc3NJbmZvLCBKU0M6OkRPTUpJVDo6RWZmZWN0Ojpmb3JSZWFkKERPTUpJVDo6QWJz
dHJhY3RIZWFwUmVwb3NpdG9yeTo6RE9NKSwgJHtyZXN1bHRUeXBlfSI7CisgICAgICAgICAgICBm
b3JlYWNoIG15ICRhcmd1bWVudCAoQHskZnVuY3Rpb24tPmFyZ3VtZW50c30pIHsKKyAgICAgICAg
ICAgICAgICBteSAkdHlwZSA9ICRhcmd1bWVudC0+dHlwZTsKKyAgICAgICAgICAgICAgICBteSAk
YXJndW1lbnRUeXBlID0gR2V0QXJndW1lbnRUeXBlRmlsdGVyKCRpbnRlcmZhY2UsICR0eXBlKTsK
KyAgICAgICAgICAgICAgICAkZG9tSklUU2lnbmF0dXJlIC49ICIsICR7YXJndW1lbnRUeXBlfSI7
CisgICAgICAgICAgICB9CisgICAgICAgICAgICBteSAkY29uZGl0aW9uYWxTdHJpbmcgPSAkY29k
ZUdlbmVyYXRvci0+R2VuZXJhdGVDb25kaXRpb25hbFN0cmluZygkZnVuY3Rpb24pOworICAgICAg
ICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIjaWYgJHtjb25kaXRpb25hbFN0cmluZ31cbiIpIGlm
ICRjb25kaXRpb25hbFN0cmluZzsKKyAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAkZG9t
SklUU2lnbmF0dXJlIC4gIik7XG4iKTsKKyAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAi
I2VuZGlmXG4iKSBpZiAkY29uZGl0aW9uYWxTdHJpbmc7CisgICAgICAgIH0KKyAgICB9CisKICAg
ICBHZW5lcmF0ZVByb3RvdHlwZURlY2xhcmF0aW9uKFxAaW1wbENvbnRlbnQsICRjbGFzc05hbWUs
ICRpbnRlcmZhY2UpIGlmICFIZWFkZXJOZWVkc1Byb3RvdHlwZURlY2xhcmF0aW9uKCRpbnRlcmZh
Y2UpOwogCiAgICAgR2VuZXJhdGVDb25zdHJ1Y3RvckRlY2xhcmF0aW9uKFxAaW1wbENvbnRlbnQs
ICRjbGFzc05hbWUsICRpbnRlcmZhY2UpIGlmIE5lZWRzQ29uc3RydWN0b3JQcm9wZXJ0eSgkaW50
ZXJmYWNlKTsKQEAgLTI3NDAsNyArMjc3NCwxMSBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlv
bgogICAgICAgICAgICAgcHVzaChAaGFzaFZhbHVlMSwgJGZ1bmN0aW9uTmFtZSk7CiAKICAgICAg
ICAgICAgIG15ICRmdW5jdGlvbkxlbmd0aCA9IEdldEZ1bmN0aW9uTGVuZ3RoKCRmdW5jdGlvbik7
Ci0gICAgICAgICAgICBwdXNoKEBoYXNoVmFsdWUyLCAkZnVuY3Rpb25MZW5ndGgpOworICAgICAg
ICAgICAgaWYgKCRjb2RlR2VuZXJhdG9yLT5FeHRlbmRlZEF0dHJpYnV0ZUNvbnRhaW5zKCRmdW5j
dGlvbi0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57RE9NSklUfSwgIlNpZ25hdHVyZSIpKSB7CisgICAg
ICAgICAgICAgICAgcHVzaChAaGFzaFZhbHVlMiwgIkRPTUpJVEZ1bmN0aW9uRm9yIiAuICRpbnRl
cmZhY2UtPnR5cGUtPm5hbWUgLiAkY29kZUdlbmVyYXRvci0+V0tfdWNmaXJzdCgkZnVuY3Rpb24t
Pm5hbWUpKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgcHVzaChAaGFz
aFZhbHVlMiwgJGZ1bmN0aW9uTGVuZ3RoKTsKKyAgICAgICAgICAgIH0KIAogICAgICAgICAgICAg
cHVzaChAaGFzaFNwZWNpYWxzLCBDb21wdXRlRnVuY3Rpb25TcGVjaWFsKCRpbnRlcmZhY2UsICRm
dW5jdGlvbikpOwogCkBAIC0zMzA3LDEzICszMzQ1LDE0IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVu
dGF0aW9uCiAKICAgICAgICAgICAgIGlmICgkYXR0cmlidXRlLT5leHRlbmRlZEF0dHJpYnV0ZXMt
PnsiRE9NSklUIn0pIHsKICAgICAgICAgICAgICAgICAkaW1wbEluY2x1ZGVzeyI8d3RmL05ldmVy
RGVzdHJveWVkLmg+In0gPSAxOworICAgICAgICAgICAgICAgICRpbXBsSW5jbHVkZXN7IkRPTUpJ
VElETFR5cGVGaWx0ZXIuaCJ9ID0gMTsKICAgICAgICAgICAgICAgICBteSAkaW50ZXJmYWNlTmFt
ZSA9ICRpbnRlcmZhY2UtPnR5cGUtPm5hbWU7CiAgICAgICAgICAgICAgICAgbXkgJGF0dHJpYnV0
ZU5hbWUgPSAkYXR0cmlidXRlLT5uYW1lOwogICAgICAgICAgICAgICAgIG15ICRnZW5lcmF0b3JO
YW1lID0gJGludGVyZmFjZU5hbWUgLiAkY29kZUdlbmVyYXRvci0+V0tfdWNmaXJzdCgkYXR0cmli
dXRlLT5uYW1lKTsKICAgICAgICAgICAgICAgICBteSAkZG9tSklUQ2xhc3NOYW1lID0gJGdlbmVy
YXRvck5hbWUgLiAiRE9NSklUIjsKICAgICAgICAgICAgICAgICBteSAkZ2V0dGVyID0gR2V0QXR0
cmlidXRlR2V0dGVyTmFtZSgkaW50ZXJmYWNlLCAkZ2VuZXJhdG9yTmFtZSwgJGF0dHJpYnV0ZSk7
CiAgICAgICAgICAgICAgICAgbXkgJHNldHRlciA9IElzUmVhZG9ubHkoJGF0dHJpYnV0ZSkgPyAi
bnVsbHB0ciIgOiBHZXRBdHRyaWJ1dGVTZXR0ZXJOYW1lKCRpbnRlcmZhY2UsICRnZW5lcmF0b3JO
YW1lLCAkYXR0cmlidXRlKTsKLSAgICAgICAgICAgICAgICBteSAkcmVzdWx0VHlwZSA9IEdldFJl
c3VsdFR5cGVGaWx0ZXIoJGF0dHJpYnV0ZS0+dHlwZSk7CisgICAgICAgICAgICAgICAgbXkgJHJl
c3VsdFR5cGUgPSBHZXRSZXN1bHRUeXBlRmlsdGVyKCRpbnRlcmZhY2UsICRhdHRyaWJ1dGUtPnR5
cGUpOwogICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiJGRvbUpJVENsYXNzTmFt
ZTo6JGRvbUpJVENsYXNzTmFtZSgpXG4iKTsKICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29u
dGVudCwgIiAgICA6IEpTQzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIoJGdldHRlciwgJHNldHRlciwg
JHtjbGFzc05hbWV9OjppbmZvKCksICRyZXN1bHRUeXBlKVxuIik7CiAgICAgICAgICAgICAgICAg
cHVzaChAaW1wbENvbnRlbnQsICJ7XG4iKTsKQEAgLTM2ODgsNiArMzcyNyw3IEBAIHN1YiBHZW5l
cmF0ZUltcGxlbWVudGF0aW9uCiAKICAgICAgICAgICAgIG15ICRpc0N1c3RvbSA9IEhhc0N1c3Rv
bU1ldGhvZCgkZnVuY3Rpb24tPmV4dGVuZGVkQXR0cmlidXRlcyk7CiAgICAgICAgICAgICBteSAk
aXNPdmVybG9hZGVkID0gJGZ1bmN0aW9uLT57b3ZlcmxvYWRzfSAmJiBAeyRmdW5jdGlvbi0+e292
ZXJsb2Fkc319ID4gMTsKKyAgICAgICAgICAgIG15ICRpc0RPTUpJVCA9ICRjb2RlR2VuZXJhdG9y
LT5FeHRlbmRlZEF0dHJpYnV0ZUNvbnRhaW5zKCRmdW5jdGlvbi0+ZXh0ZW5kZWRBdHRyaWJ1dGVz
LT57RE9NSklUfSwgIlNpZ25hdHVyZSIpOwogCiAgICAgICAgICAgICBteSAkbWF5VGhyb3dMZWdh
Y3lFeGNlcHRpb24gPSAkZnVuY3Rpb24tPmV4dGVuZGVkQXR0cmlidXRlcy0+e01heVRocm93TGVn
YWN5RXhjZXB0aW9ufTsKIApAQCAtMzgyNiw2ICszODY2LDc4IEBAIEVORAogICAgICAgICAgICAg
fQogCiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIn1cblxuIik7CisKKyAgICAgICAg
ICAgIGlmICgkaXNET01KSVQpIHsKKyAgICAgICAgICAgICAgICAkaW1wbEluY2x1ZGVzeyI8aW50
ZXJwcmV0ZXIvRnJhbWVUcmFjZXJzLmg+In0gPSAxOworICAgICAgICAgICAgICAgIG15ICR1bnNh
ZmVGdW5jdGlvbk5hbWUgPSAidW5zYWZlIiAuICRjb2RlR2VuZXJhdG9yLT5XS191Y2ZpcnN0KCRm
dW5jdGlvbk5hbWUpOworICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiSlNDOjpF
bmNvZGVkSlNWYWx1ZSAke3Vuc2FmZUZ1bmN0aW9uTmFtZX0oSlNDOjpFeGVjU3RhdGUqIHN0YXRl
LCAkY2xhc3NOYW1lKiBjYXN0ZWRUaGlzIik7CisgICAgICAgICAgICAgICAgZm9yZWFjaCBteSAk
YXJndW1lbnQgKEB7JGZ1bmN0aW9uLT5hcmd1bWVudHN9KSB7CisgICAgICAgICAgICAgICAgICAg
IG15ICR0eXBlID0gJGFyZ3VtZW50LT50eXBlOworICAgICAgICAgICAgICAgICAgICBteSAkYXJn
dW1lbnRUeXBlID0gR2V0VW5zYWZlQXJndW1lbnRUeXBlKCRpbnRlcmZhY2UsICR0eXBlKTsKKyAg
ICAgICAgICAgICAgICAgICAgbXkgJG5hbWUgPSAkYXJndW1lbnQtPm5hbWU7CisgICAgICAgICAg
ICAgICAgICAgIG15ICRlbmNvZGVkTmFtZSA9ICJlbmNvZGVkIiAuICRjb2RlR2VuZXJhdG9yLT5X
S191Y2ZpcnN0KCRuYW1lKTsKKyAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQs
ICIsICR7YXJndW1lbnRUeXBlfSAke2VuY29kZWROYW1lfSIpOworICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIilcbiIpOworICAgICAgICAgICAg
ICAgIHB1c2goQGltcGxDb250ZW50LCAie1xuIik7CisgICAgICAgICAgICAgICAgcHVzaChAaW1w
bENvbnRlbnQsICIgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTtcbiIpOworICAgICAgICAgICAgICAg
IHB1c2goQGltcGxDb250ZW50LCAiICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpO1xuIik7CisgICAg
ICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgSlNDOjpOYXRpdmVDYWxsRnJhbWVU
cmFjZXIgdHJhY2VyKCZ2bSwgc3RhdGUpO1xuIik7CisgICAgICAgICAgICAgICAgcHVzaChAaW1w
bENvbnRlbnQsICIgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
XG4iKTsKKyAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBhdXRvJiBpbXBs
ID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpO1xuIik7CisgICAgICAgICAgICAgICAgbXkgQGFyZ3Vt
ZW50czsKKyAgICAgICAgICAgICAgICBteSAkaW1wbEZ1bmN0aW9uTmFtZTsKKyAgICAgICAgICAg
ICAgICBteSAkaW1wbGVtZW50ZWRCeSA9ICRmdW5jdGlvbi0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57
SW1wbGVtZW50ZWRCeX07CisKKyAgICAgICAgICAgICAgICBpZiAoJGltcGxlbWVudGVkQnkpIHsK
KyAgICAgICAgICAgICAgICAgICAgQWRkVG9JbXBsSW5jbHVkZXMoIiR7aW1wbGVtZW50ZWRCeX0u
aCIsICRmdW5jdGlvbi0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Q29uZGl0aW9uYWx9KTsKKyAgICAg
ICAgICAgICAgICAgICAgdW5zaGlmdChAYXJndW1lbnRzLCAiaW1wbCIpIGlmICEkZnVuY3Rpb24t
PmlzU3RhdGljOworICAgICAgICAgICAgICAgICAgICAkaW1wbEZ1bmN0aW9uTmFtZSA9ICJXZWJD
b3JlOjoke2ltcGxlbWVudGVkQnl9Ojoke2Z1bmN0aW9uSW1wbGVtZW50YXRpb25OYW1lfSI7Cisg
ICAgICAgICAgICAgICAgfSBlbHNpZiAoJGZ1bmN0aW9uLT5pc1N0YXRpYykgeworICAgICAgICAg
ICAgICAgICAgICAkaW1wbEZ1bmN0aW9uTmFtZSA9ICIke2ludGVyZmFjZU5hbWV9Ojoke2Z1bmN0
aW9uSW1wbGVtZW50YXRpb25OYW1lfSI7CisgICAgICAgICAgICAgICAgfSBlbHNpZiAoJHN2Z1By
b3BlcnR5T3JMaXN0UHJvcGVydHlUeXBlIGFuZCAhJHN2Z0xpc3RQcm9wZXJ0eVR5cGUpIHsKKyAg
ICAgICAgICAgICAgICAgICAgJGltcGxGdW5jdGlvbk5hbWUgPSAicG9kSW1wbC4ke2Z1bmN0aW9u
SW1wbGVtZW50YXRpb25OYW1lfSI7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAg
ICAgICAgICAgICAgJGltcGxGdW5jdGlvbk5hbWUgPSAiaW1wbC4ke2Z1bmN0aW9uSW1wbGVtZW50
YXRpb25OYW1lfSI7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgbXkgJGFy
Z3VtZW50SW5kZXggPSAwOworICAgICAgICAgICAgICAgIGZvcmVhY2ggbXkgJGFyZ3VtZW50IChA
eyRmdW5jdGlvbi0+YXJndW1lbnRzfSkgeworICAgICAgICAgICAgICAgICAgICBteSAkdmFsdWUg
PSAiIjsKKyAgICAgICAgICAgICAgICAgICAgbXkgJHR5cGUgPSAkYXJndW1lbnQtPnR5cGU7Cisg
ICAgICAgICAgICAgICAgICAgIG15ICRuYW1lID0gJGFyZ3VtZW50LT5uYW1lOworICAgICAgICAg
ICAgICAgICAgICBteSAkZW5jb2RlZE5hbWUgPSAiZW5jb2RlZCIgLiAkY29kZUdlbmVyYXRvci0+
V0tfdWNmaXJzdCgkbmFtZSk7CisgICAgICAgICAgICAgICAgICAgIG15ICRuYXRpdmVUeXBlID0g
R2V0TmF0aXZlVHlwZSgkaW50ZXJmYWNlLCAkYXJndW1lbnQtPnR5cGUpOworICAgICAgICAgICAg
ICAgICAgICBteSAkc2hvdWxkUGFzc0J5UmVmZXJlbmNlID0gU2hvdWxkUGFzc1dyYXBwZXJCeVJl
ZmVyZW5jZSgkYXJndW1lbnQsICRpbnRlcmZhY2UpOworCisgICAgICAgICAgICAgICAgICAgIGlm
ICghJHNob3VsZFBhc3NCeVJlZmVyZW5jZSAmJiAoJGNvZGVHZW5lcmF0b3ItPklzV3JhcHBlclR5
cGUoJHR5cGUpIHx8ICRjb2RlR2VuZXJhdG9yLT5Jc1R5cGVkQXJyYXlUeXBlKCR0eXBlKSkpIHsK
KyAgICAgICAgICAgICAgICAgICAgICAgICRpbXBsSW5jbHVkZXN7IjxydW50aW1lL0Vycm9yLmg+
In0gPSAxOworICAgICAgICAgICAgICAgICAgICAgICAgbXkgKCRuYXRpdmVWYWx1ZSwgJG1heVRo
cm93RXhjZXB0aW9uKSA9IFVuc2FmZVRvTmF0aXZlKCRpbnRlcmZhY2UsICRhcmd1bWVudCwgJGVu
Y29kZWROYW1lLCAkZnVuY3Rpb24tPmV4dGVuZGVkQXR0cmlidXRlcy0+e0NvbmRpdGlvbmFsfSk7
CisgICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAkbmF0aXZl
VHlwZSAkbmFtZSA9IG51bGxwdHI7XG4iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHB1c2go
QGltcGxDb250ZW50LCAiICAgICRuYW1lID0gJG5hdGl2ZVZhbHVlO1xuIik7CisgICAgICAgICAg
ICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpO1xuIikgaWYgJG1heVRocm93RXhjZXB0aW9u
OworICAgICAgICAgICAgICAgICAgICAgICAgJHZhbHVlID0gIldURk1vdmUoJG5hbWUpIjsKKyAg
ICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIG15ICgk
bmF0aXZlVmFsdWUsICRtYXlUaHJvd0V4Y2VwdGlvbikgPSBVbnNhZmVUb05hdGl2ZSgkaW50ZXJm
YWNlLCAkYXJndW1lbnQsICRlbmNvZGVkTmFtZSwgJGZ1bmN0aW9uLT5leHRlbmRlZEF0dHJpYnV0
ZXMtPntDb25kaXRpb25hbH0pOworICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENv
bnRlbnQsICIgICAgYXV0byAkbmFtZSA9ICR7bmF0aXZlVmFsdWV9O1xuIik7CisgICAgICAgICAg
ICAgICAgICAgICAgICAkdmFsdWUgPSAiV1RGTW92ZSgkbmFtZSkiOworICAgICAgICAgICAgICAg
ICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJv
d1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTtcbiIpIGlmICRtYXlUaHJvd0V4Y2VwdGlvbjsKKyAg
ICAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgICAgIGlmICgkc2hvdWxkUGFz
c0J5UmVmZXJlbmNlKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAkdmFsdWUgPSAiKiRuYW1l
IjsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBwdXNoKEBhcmd1
bWVudHMsICR2YWx1ZSk7CisgICAgICAgICAgICAgICAgICAgICRhcmd1bWVudEluZGV4Kys7Cisg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIG15ICRmdW5jdGlvblN0cmluZyA9ICIk
aW1wbEZ1bmN0aW9uTmFtZSgiIC4gam9pbigiLCAiLCBAYXJndW1lbnRzKSAuICIpIjsKKyAgICAg
ICAgICAgICAgICAkZnVuY3Rpb25TdHJpbmcgPSAicHJvcGFnYXRlRXhjZXB0aW9uKCpzdGF0ZSwg
dGhyb3dTY29wZSwgJGZ1bmN0aW9uU3RyaW5nKSIgaWYgTmVlZHNFeHBsaWNpdFByb3BhZ2F0ZUV4
Y2VwdGlvbkNhbGwoJGZ1bmN0aW9uKTsKKyAgICAgICAgICAgICAgICBteSAkdGhpc09iamVjdCA9
ICJjYXN0ZWRUaGlzIjsKKyAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBK
U1ZhbHVlIHJlc3VsdCA9ICIgLiBOYXRpdmVUb0pTVmFsdWVVc2luZ1BvaW50ZXJzKCRmdW5jdGlv
biwgMSwgJGludGVyZmFjZSwgJGZ1bmN0aW9uU3RyaW5nLCAkdGhpc09iamVjdCkgLiAiO1xuIik7
CisgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShyZXN1bHQpO1xuIik7CisgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQs
ICJ9XG5cbiIpOworICAgICAgICAgICAgfQorCiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVu
dCwgIiNlbmRpZlxuXG4iKSBpZiAkY29uZGl0aW9uYWw7CiAKICAgICAgICAgICAgICMgR2VuZXJh
dGUgYSBmdW5jdGlvbiBkaXNwYXRjaGluZyBjYWxsIHRvIHRoZSByZXN0IG9mIHRoZSBvdmVybG9h
ZHMuCkBAIC01MzE5LDYgKzU0MzEsNDMgQEAgc3ViIEpTVmFsdWVUb05hdGl2ZQogICAgIHJldHVy
biAoIkpTIiAuICR0eXBlLT5uYW1lIC4gIjo6dG9XcmFwcGVkKCR2YWx1ZSkiLCAwKTsKIH0KIAor
c3ViIFVuc2FmZVRvTmF0aXZlCit7CisgICAgbXkgKCRpbnRlcmZhY2UsICRjb250ZXh0LCAkdmFs
dWUsICRjb25kaXRpb25hbCwgJHN0YXRlUG9pbnRlciwgJHN0YXRlUmVmZXJlbmNlLCAkdGhpc09i
amVjdFJlZmVyZW5jZSkgPSBAXzsKKworICAgIGFzc2VydCgiSW52YWxpZCBjb250ZXh0IHR5cGUi
KSBpZiAhSXNWYWxpZENvbnRleHRGb3JKU1ZhbHVlVG9OYXRpdmUoJGNvbnRleHQpOworCisgICAg
bXkgJHR5cGUgPSAkY29udGV4dC0+dHlwZTsKKworICAgICMgRklYTUU6IFJlbW92ZSB0aGVzZSAz
IHZhcmlhYmxlcyB3aGVuIGFsbCBKU1ZhbHVlVG9OYXRpdmUgdXNlIHJlZmVyZW5jZXMuCisgICAg
JHN0YXRlUG9pbnRlciA9ICJzdGF0ZSIgdW5sZXNzICRzdGF0ZVBvaW50ZXI7CisgICAgJHN0YXRl
UmVmZXJlbmNlID0gIipzdGF0ZSIgdW5sZXNzICRzdGF0ZVJlZmVyZW5jZTsKKyAgICAkdGhpc09i
amVjdFJlZmVyZW5jZSA9ICIqY2FzdGVkVGhpcyIgdW5sZXNzICR0aGlzT2JqZWN0UmVmZXJlbmNl
OworCisgICAgaWYgKEpTVmFsdWVUb05hdGl2ZUlzSGFuZGxlZEJ5RE9NQ29udmVydCgkdHlwZSwg
JGNvbnRleHQpKSB7CisgICAgICAgIEFkZFRvSW1wbEluY2x1ZGVzKCJET01KSVRJRExDb252ZXJ0
LmgiKTsKKyAgICAgICAgQWRkVG9JbXBsSW5jbHVkZXNGb3JJRExUeXBlKCR0eXBlLCAkY29uZGl0
aW9uYWwpOworCisgICAgICAgIG15ICRJRExUeXBlID0gR2V0SURMVHlwZSgkaW50ZXJmYWNlLCAk
dHlwZSk7CisKKyAgICAgICAgbXkgQGNvbnZlcnNpb25Bcmd1bWVudHMgPSAoKTsKKyAgICAgICAg
cHVzaChAY29udmVyc2lvbkFyZ3VtZW50cywgIiRzdGF0ZVJlZmVyZW5jZSIpOworICAgICAgICBw
dXNoKEBjb252ZXJzaW9uQXJndW1lbnRzLCAiJHZhbHVlIik7CisKKyAgICAgICAgbXkgQGNvbnZl
cnNpb25TdGF0aWNBcmd1bWVudHMgPSAoKTsKKyAgICAgICAgcHVzaChAY29udmVyc2lvblN0YXRp
Y0FyZ3VtZW50cywgR2V0SW50ZWdlckNvbnZlcnNpb25Db25maWd1cmF0aW9uKCRjb250ZXh0KSkg
aWYgJGNvZGVHZW5lcmF0b3ItPklzSW50ZWdlclR5cGUoJHR5cGUpOworICAgICAgICBwdXNoKEBj
b252ZXJzaW9uU3RhdGljQXJndW1lbnRzLCBHZXRTdHJpbmdDb252ZXJzaW9uQ29uZmlndXJhdGlv
bigkY29udGV4dCkpIGlmICRjb2RlR2VuZXJhdG9yLT5Jc1N0cmluZ1R5cGUoJHR5cGUpOworCisg
ICAgICAgIGlmIChzY2FsYXIoQGNvbnZlcnNpb25TdGF0aWNBcmd1bWVudHMpID4gMCkgeworICAg
ICAgICAgICAgcmV0dXJuICgiRE9NSklUOjpEaXJlY3RDb252ZXJ0ZXI8JElETFR5cGU+OjpkaXJl
Y3RDb252ZXJ0PCIgLiBqb2luKCIsICIsIEBjb252ZXJzaW9uU3RhdGljQXJndW1lbnRzKSAuICI+
KCIgLiBqb2luKCIsICIsIEBjb252ZXJzaW9uQXJndW1lbnRzKSAuICIpIiwgMSk7CisgICAgICAg
IH0KKyAgICAgICAgcmV0dXJuICgiRE9NSklUOjpEaXJlY3RDb252ZXJ0ZXI8JElETFR5cGU+Ojpk
aXJlY3RDb252ZXJ0KCIgLiBqb2luKCIsICIsIEBjb252ZXJzaW9uQXJndW1lbnRzKSAuICIpIiwg
MSk7CisgICAgfQorCisgICAgIyBGSVhNRTogRXh0ZW5kIG1vcmUuCisgICAgZGllICJPbmx5IERP
TUNvbnZlcnQgc3VwcG9ydGVkIG9uZSBpcyBub3cgc3VwcG9ydGVkIGluIERPTUpJVCB1bnNhZmUu
IjsKK30KKwogc3ViIE5hdGl2ZVRvSlNWYWx1ZUlzSGFuZGxlZEJ5RE9NQ29udmVydAogewogICAg
IG15ICgkdHlwZSkgPSBAXzsKQEAgLTU1MjUsNyArNTY3NCwxMCBAQCBzdWIgR2VuZXJhdGVIYXNo
VGFibGVWYWx1ZUFycmF5CiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiNpZiAke2Nv
bmRpdGlvbmFsU3RyaW5nfVxuIik7CiAgICAgICAgIH0KIAotICAgICAgICBpZiAoIkAkc3BlY2lh
bHNbJGldIiA9fiBtL0Z1bmN0aW9uLykgeworICAgICAgICBpZiAoIkAkc3BlY2lhbHNbJGldIiA9
fiBtL0RPTUpJVEZ1bmN0aW9uLykgeworICAgICAgICAgICAgJGZpcnN0VGFyZ2V0VHlwZSA9ICJz
dGF0aWNfY2FzdDxOYXRpdmVGdW5jdGlvbj4iOworICAgICAgICAgICAgJHNlY29uZFRhcmdldFR5
cGUgPSAic3RhdGljX2Nhc3Q8Y29uc3QgSlNDOjpET01KSVQ6OlNpZ25hdHVyZSo+IjsKKyAgICAg
ICAgfSBlbHNpZiAoIkAkc3BlY2lhbHNbJGldIiA9fiBtL0Z1bmN0aW9uLykgewogICAgICAgICAg
ICAgJGZpcnN0VGFyZ2V0VHlwZSA9ICJzdGF0aWNfY2FzdDxOYXRpdmVGdW5jdGlvbj4iOwogICAg
ICAgICB9IGVsc2lmICgiQCRzcGVjaWFsc1skaV0iID1+IG0vQnVpbHRpbi8pIHsKICAgICAgICAg
ICAgICRmaXJzdFRhcmdldFR5cGUgPSAic3RhdGljX2Nhc3Q8QnVpbHRpbkdlbmVyYXRvcj4iOwpA
QCAtNjEyMyw2ICs2Mjc1LDkgQEAgc3ViIENvbXB1dGVGdW5jdGlvblNwZWNpYWwKICAgICBlbHNl
IHsKICAgICAgICAgcHVzaChAc3BlY2lhbHMsICJKU0M6OkZ1bmN0aW9uIik7CiAgICAgfQorICAg
IGlmICgkZnVuY3Rpb24tPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJET01KSVQifSkgeworICAgICAg
ICBwdXNoKEBzcGVjaWFscywgIkRPTUpJVEZ1bmN0aW9uIikgaWYgJGNvZGVHZW5lcmF0b3ItPkV4
dGVuZGVkQXR0cmlidXRlQ29udGFpbnMoJGZ1bmN0aW9uLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntE
T01KSVR9LCAiU2lnbmF0dXJlIik7CisgICAgfQogICAgIHJldHVybiAoQHNwZWNpYWxzID4gMCkg
PyBqb2luKCIgfCAiLCBAc3BlY2lhbHMpIDogIjAiOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0lETEF0dHJpYnV0ZXMudHh0IGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy9JRExBdHRyaWJ1dGVzLnR4dAppbmRleCBhMmU3NTQxNTkxY2Uz
ZjU3NmU3YTdkMmQ2ZDJmYzYyZGRkZmEwNDFjLi4xNDZjMmJjYzhlMGYzNzZkNWRjYzU0MzUzOTA4
MzM1OWM3MmRiZTYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L0lETEF0dHJpYnV0ZXMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
SURMQXR0cmlidXRlcy50eHQKQEAgLTUyLDcgKzUyLDcgQEAgQ3VzdG9tUHV0RnVuY3Rpb24KIEN1
c3RvbVNldFByb3RvdHlwZQogQ3VzdG9tU2V0dGVyCiBDdXN0b21Ub0pTT2JqZWN0Ci1ET01KSVQK
K0RPTUpJVD18U2lnbmF0dXJlCiBEb05vdENoZWNrQ29uc3RhbnRzCiBEb05vdENoZWNrU2VjdXJp
dHkKIERvTm90Q2hlY2tTZWN1cml0eU9uR2V0dGVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RE9NSklULmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RET01KSVQuY3BwCmluZGV4IDI0ODhk
ZjI2YmRiNTJiNTBjZDY3ZDYwY2NhNTY1YjI2NTM2N2U0Y2YuLmFmMWJjZmMzMWJiYWZlMmIyNTNm
ODdkMGY3M2IwMzgzMWIzNzlhZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RET01KSVQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RET01KSVQuY3BwCkBAIC0yMSwxMCArMjEsMTgg
QEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJKU1Rlc3RET01KSVQuaCIKIAorI2lu
Y2x1ZGUgIkRPTUpJVEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaCIKKyNpbmNsdWRlICJET01KSVRD
aGVja0RPTS5oIgorI2luY2x1ZGUgIkRPTUpJVElETENvbnZlcnQuaCIKKyNpbmNsdWRlICJET01K
SVRJRExUeXBlLmgiCisjaW5jbHVkZSAiRE9NSklUSURMVHlwZUZpbHRlci5oIgorI2luY2x1ZGUg
IkV4Y2VwdGlvbkNvZGUuaCIKICNpbmNsdWRlICJKU0J5dGVTdHJpbmcuaCIKICNpbmNsdWRlICJK
U0RPTUJpbmRpbmcuaCIKICNpbmNsdWRlICJKU0RPTUNvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAi
SlNET01Db252ZXJ0LmgiCisjaW5jbHVkZSA8aW50ZXJwcmV0ZXIvRnJhbWVUcmFjZXJzLmg+Cisj
aW5jbHVkZSA8cnVudGltZS9FcnJvci5oPgogI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KICNpbmNs
dWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KIApAQCAtMzIsNiArNDAsMTEgQEAgdXNpbmcgbmFt
ZXNwYWNlIEpTQzsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCisvLyBGdW5jdGlvbnMKKworSlND
OjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdERPTUpJVFByb3RvdHlwZUZ1bmN0
aW9uR2V0QXR0cmlidXRlKEpTQzo6RXhlY1N0YXRlKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgdW5zYWZlSnNUZXN0RE9NSklUUHJvdG90eXBlRnVuY3Rpb25HZXRBdHRyaWJ1
dGUoSlNDOjpFeGVjU3RhdGUqLCBKU1Rlc3RET01KSVQqLCBET01KSVQ6OklETEpTQXJndW1lbnRU
eXBlPElETERPTVN0cmluZz4pOworCiAvLyBBdHRyaWJ1dGVzCiAKIEpTQzo6RW5jb2RlZEpTVmFs
dWUganNUZXN0RE9NSklUQW55QXR0cihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFs
dWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKQEAgLTcyLDYgKzg1LDcgQEAgSlNDOjpFbmNvZGVkSlNW
YWx1ZSBqc1Rlc3RET01KSVROb2RlTnVsbGFibGVBdHRyKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpF
bmNvZGVkSlMKIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0RE9NSklUQ29uc3RydWN0b3IoSlND
OjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7CiBi
b29sIHNldEpTVGVzdERPTUpJVENvbnN0cnVjdG9yKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNv
ZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7CiAKK3N0YXRpYyBjb25zdCBKU0M6OkRP
TUpJVDo6U2lnbmF0dXJlIERPTUpJVFNpZ25hdHVyZUZvclRlc3RET01KSVRHZXRBdHRyaWJ1dGUo
KHVpbnRwdHJfdCl1bnNhZmVKc1Rlc3RET01KSVRQcm90b3R5cGVGdW5jdGlvbkdldEF0dHJpYnV0
ZSwgRE9NSklUOjpjaGVja0RPTTxUZXN0RE9NSklUPiwgSlNUZXN0RE9NSklUOjppbmZvKCksIEpT
Qzo6RE9NSklUOjpFZmZlY3Q6OmZvclJlYWQoRE9NSklUOjpBYnN0cmFjdEhlYXBSZXBvc2l0b3J5
OjpET00pLCBET01KSVQ6OklETFJlc3VsdFR5cGVGaWx0ZXI8SURMTnVsbGFibGU8SURMRE9NU3Ry
aW5nPj4sIERPTUpJVDo6SURMQXJndW1lbnRUeXBlRmlsdGVyPElETERPTVN0cmluZz4pOwogY2xh
c3MgSlNUZXN0RE9NSklUUHJvdG90eXBlIDogcHVibGljIEpTQzo6SlNOb25GaW5hbE9iamVjdCB7
CiBwdWJsaWM6CiAgICAgdXNpbmcgQmFzZSA9IEpTQzo6SlNOb25GaW5hbE9iamVjdDsKQEAgLTE1
Myw2ICsxNjcsNyBAQCBzdGF0aWMgY29uc3QgSGFzaFRhYmxlVmFsdWUgSlNUZXN0RE9NSklUUHJv
dG90eXBlVGFibGVWYWx1ZXNbXSA9CiAgICAgeyAiYnl0ZVN0cmluZ051bGxhYmxlQXR0ciIsIFJl
YWRPbmx5IHwgQ3VzdG9tQWNjZXNzb3IgfCBET01KSVRBdHRyaWJ1dGUsIE5vSW50cmluc2ljLCB7
IChpbnRwdHJfdClzdGF0aWNfY2FzdDxET01KSVRHZXR0ZXJTZXR0ZXJHZW5lcmF0b3I+KGRvbUpJ
VEdldHRlclNldHRlckZvclRlc3RET01KSVRCeXRlU3RyaW5nTnVsbGFibGVBdHRyKSwgKGludHB0
cl90KSAoMCkgfSB9LAogICAgIHsgInVzdlN0cmluZ051bGxhYmxlQXR0ciIsIFJlYWRPbmx5IHwg
Q3VzdG9tQWNjZXNzb3IgfCBET01KSVRBdHRyaWJ1dGUsIE5vSW50cmluc2ljLCB7IChpbnRwdHJf
dClzdGF0aWNfY2FzdDxET01KSVRHZXR0ZXJTZXR0ZXJHZW5lcmF0b3I+KGRvbUpJVEdldHRlclNl
dHRlckZvclRlc3RET01KSVRVc3ZTdHJpbmdOdWxsYWJsZUF0dHIpLCAoaW50cHRyX3QpICgwKSB9
IH0sCiAgICAgeyAibm9kZU51bGxhYmxlQXR0ciIsIFJlYWRPbmx5IHwgQ3VzdG9tQWNjZXNzb3Ig
fCBET01KSVRBdHRyaWJ1dGUsIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxE
T01KSVRHZXR0ZXJTZXR0ZXJHZW5lcmF0b3I+KGRvbUpJVEdldHRlclNldHRlckZvclRlc3RET01K
SVROb2RlTnVsbGFibGVBdHRyKSwgKGludHB0cl90KSAoMCkgfSB9LAorICAgIHsgImdldEF0dHJp
YnV0ZSIsIEpTQzo6RnVuY3Rpb24gfCBET01KSVRGdW5jdGlvbiwgTm9JbnRyaW5zaWMsIHsgKGlu
dHB0cl90KXN0YXRpY19jYXN0PE5hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RET01KSVRQcm90b3R5cGVG
dW5jdGlvbkdldEF0dHJpYnV0ZSksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8Y29uc3QgSlNDOjpE
T01KSVQ6OlNpZ25hdHVyZSo+KCZET01KSVRTaWduYXR1cmVGb3JUZXN0RE9NSklUR2V0QXR0cmli
dXRlKSB9IH0sCiB9OwogCiBjb25zdCBDbGFzc0luZm8gSlNUZXN0RE9NSklUUHJvdG90eXBlOjpz
X2luZm8gPSB7ICJUZXN0RE9NSklUUHJvdG90eXBlIiwgJkJhc2U6OnNfaW5mbywgMCwgQ1JFQVRF
X01FVEhPRF9UQUJMRShKU1Rlc3RET01KSVRQcm90b3R5cGUpIH07CkBAIC0xODUsNiArMjAwLDEx
IEBAIHRlbXBsYXRlPD4gaW5saW5lIEpTVGVzdERPTUpJVCogQmluZGluZ0NhbGxlcjxKU1Rlc3RE
T01KSVQ+OjpjYXN0Rm9yQXR0cmlidXRlKEV4CiAgICAgcmV0dXJuIGpzRHluYW1pY0Rvd25jYXN0
PEpTVGVzdERPTUpJVCo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKIH0KIAordGVtcGxh
dGU8PiBpbmxpbmUgSlNUZXN0RE9NSklUKiBCaW5kaW5nQ2FsbGVyPEpTVGVzdERPTUpJVD46OmNh
c3RGb3JPcGVyYXRpb24oRXhlY1N0YXRlJiBzdGF0ZSkKK3sKKyAgICByZXR1cm4ganNEeW5hbWlj
RG93bmNhc3Q8SlNUZXN0RE9NSklUKj4oc3RhdGUudGhpc1ZhbHVlKCkpOworfQorCiBzdGF0aWMg
aW5saW5lIEpTVmFsdWUganNUZXN0RE9NSklUQW55QXR0ckdldHRlcihFeGVjU3RhdGUmLCBKU1Rl
c3RET01KSVQmLCBUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKTsKIAogRW5jb2RlZEpTVmFsdWUganNU
ZXN0RE9NSklUQW55QXR0cihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFs
dWUsIFByb3BlcnR5TmFtZSkKQEAgLTIwMiw3ICsyMjIsNyBAQCBzdGF0aWMgaW5saW5lIEpTVmFs
dWUganNUZXN0RE9NSklUQW55QXR0ckdldHRlcihFeGVjU3RhdGUmIHN0YXRlLCBKU1Rlc3RET01K
SVQmCiB9CiAKIFRlc3RET01KSVRBbnlBdHRyRE9NSklUOjpUZXN0RE9NSklUQW55QXR0ckRPTUpJ
VCgpCi0gICAgOiBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVyKGpzVGVzdERPTUpJVEFueUF0dHIs
IG51bGxwdHIsIEpTVGVzdERPTUpJVDo6aW5mbygpLCBKU0M6OlNwZWNIZWFwVG9wKQorICAgIDog
SlNDOjpET01KSVQ6OkdldHRlclNldHRlcihqc1Rlc3RET01KSVRBbnlBdHRyLCBudWxscHRyLCBK
U1Rlc3RET01KSVQ6OmluZm8oKSwgRE9NSklUOjpJRExSZXN1bHRUeXBlRmlsdGVyPElETEFueT4p
CiB7CiB9CiAKQEAgLTIyOSw3ICsyNDksNyBAQCBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0
RE9NSklUQm9vbGVhbkF0dHJHZXR0ZXIoRXhlY1N0YXRlJiBzdGF0ZSwgSlNUZXN0RE9NSgogfQog
CiBUZXN0RE9NSklUQm9vbGVhbkF0dHJET01KSVQ6OlRlc3RET01KSVRCb29sZWFuQXR0ckRPTUpJ
VCgpCi0gICAgOiBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVyKGpzVGVzdERPTUpJVEJvb2xlYW5B
dHRyLCBudWxscHRyLCBKU1Rlc3RET01KSVQ6OmluZm8oKSwgSlNDOjpTcGVjQm9vbGVhbikKKyAg
ICA6IEpTQzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIoanNUZXN0RE9NSklUQm9vbGVhbkF0dHIsIG51
bGxwdHIsIEpTVGVzdERPTUpJVDo6aW5mbygpLCBET01KSVQ6OklETFJlc3VsdFR5cGVGaWx0ZXI8
SURMQm9vbGVhbj4pCiB7CiB9CiAKQEAgLTI1Niw3ICsyNzYsNyBAQCBzdGF0aWMgaW5saW5lIEpT
VmFsdWUganNUZXN0RE9NSklUQnl0ZUF0dHJHZXR0ZXIoRXhlY1N0YXRlJiBzdGF0ZSwgSlNUZXN0
RE9NSklUJgogfQogCiBUZXN0RE9NSklUQnl0ZUF0dHJET01KSVQ6OlRlc3RET01KSVRCeXRlQXR0
ckRPTUpJVCgpCi0gICAgOiBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVyKGpzVGVzdERPTUpJVEJ5
dGVBdHRyLCBudWxscHRyLCBKU1Rlc3RET01KSVQ6OmluZm8oKSwgSlNDOjpTcGVjSW50MzJPbmx5
KQorICAgIDogSlNDOjpET01KSVQ6OkdldHRlclNldHRlcihqc1Rlc3RET01KSVRCeXRlQXR0ciwg
bnVsbHB0ciwgSlNUZXN0RE9NSklUOjppbmZvKCksIERPTUpJVDo6SURMUmVzdWx0VHlwZUZpbHRl
cjxJRExCeXRlPikKIHsKIH0KIApAQCAtMjgzLDcgKzMwMyw3IEBAIHN0YXRpYyBpbmxpbmUgSlNW
YWx1ZSBqc1Rlc3RET01KSVRPY3RldEF0dHJHZXR0ZXIoRXhlY1N0YXRlJiBzdGF0ZSwgSlNUZXN0
RE9NSklUCiB9CiAKIFRlc3RET01KSVRPY3RldEF0dHJET01KSVQ6OlRlc3RET01KSVRPY3RldEF0
dHJET01KSVQoKQotICAgIDogSlNDOjpET01KSVQ6OkdldHRlclNldHRlcihqc1Rlc3RET01KSVRP
Y3RldEF0dHIsIG51bGxwdHIsIEpTVGVzdERPTUpJVDo6aW5mbygpLCBKU0M6OlNwZWNJbnQzMk9u
bHkpCisgICAgOiBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVyKGpzVGVzdERPTUpJVE9jdGV0QXR0
ciwgbnVsbHB0ciwgSlNUZXN0RE9NSklUOjppbmZvKCksIERPTUpJVDo6SURMUmVzdWx0VHlwZUZp
bHRlcjxJRExPY3RldD4pCiB7CiB9CiAKQEAgLTMxMCw3ICszMzAsNyBAQCBzdGF0aWMgaW5saW5l
IEpTVmFsdWUganNUZXN0RE9NSklUU2hvcnRBdHRyR2V0dGVyKEV4ZWNTdGF0ZSYgc3RhdGUsIEpT
VGVzdERPTUpJVAogfQogCiBUZXN0RE9NSklUU2hvcnRBdHRyRE9NSklUOjpUZXN0RE9NSklUU2hv
cnRBdHRyRE9NSklUKCkKLSAgICA6IEpTQzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIoanNUZXN0RE9N
SklUU2hvcnRBdHRyLCBudWxscHRyLCBKU1Rlc3RET01KSVQ6OmluZm8oKSwgSlNDOjpTcGVjSW50
MzJPbmx5KQorICAgIDogSlNDOjpET01KSVQ6OkdldHRlclNldHRlcihqc1Rlc3RET01KSVRTaG9y
dEF0dHIsIG51bGxwdHIsIEpTVGVzdERPTUpJVDo6aW5mbygpLCBET01KSVQ6OklETFJlc3VsdFR5
cGVGaWx0ZXI8SURMU2hvcnQ+KQogewogfQogCkBAIC0zMzcsNyArMzU3LDcgQEAgc3RhdGljIGlu
bGluZSBKU1ZhbHVlIGpzVGVzdERPTUpJVFVuc2lnbmVkU2hvcnRBdHRyR2V0dGVyKEV4ZWNTdGF0
ZSYgc3RhdGUsIEpTVGUKIH0KIAogVGVzdERPTUpJVFVuc2lnbmVkU2hvcnRBdHRyRE9NSklUOjpU
ZXN0RE9NSklUVW5zaWduZWRTaG9ydEF0dHJET01KSVQoKQotICAgIDogSlNDOjpET01KSVQ6Okdl
dHRlclNldHRlcihqc1Rlc3RET01KSVRVbnNpZ25lZFNob3J0QXR0ciwgbnVsbHB0ciwgSlNUZXN0
RE9NSklUOjppbmZvKCksIEpTQzo6U3BlY0ludDMyT25seSkKKyAgICA6IEpTQzo6RE9NSklUOjpH
ZXR0ZXJTZXR0ZXIoanNUZXN0RE9NSklUVW5zaWduZWRTaG9ydEF0dHIsIG51bGxwdHIsIEpTVGVz
dERPTUpJVDo6aW5mbygpLCBET01KSVQ6OklETFJlc3VsdFR5cGVGaWx0ZXI8SURMVW5zaWduZWRT
aG9ydD4pCiB7CiB9CiAKQEAgLTM2NCw3ICszODQsNyBAQCBzdGF0aWMgaW5saW5lIEpTVmFsdWUg
anNUZXN0RE9NSklUTG9uZ0F0dHJHZXR0ZXIoRXhlY1N0YXRlJiBzdGF0ZSwgSlNUZXN0RE9NSklU
JgogfQogCiBUZXN0RE9NSklUTG9uZ0F0dHJET01KSVQ6OlRlc3RET01KSVRMb25nQXR0ckRPTUpJ
VCgpCi0gICAgOiBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVyKGpzVGVzdERPTUpJVExvbmdBdHRy
LCBudWxscHRyLCBKU1Rlc3RET01KSVQ6OmluZm8oKSwgSlNDOjpTcGVjSW50MzJPbmx5KQorICAg
IDogSlNDOjpET01KSVQ6OkdldHRlclNldHRlcihqc1Rlc3RET01KSVRMb25nQXR0ciwgbnVsbHB0
ciwgSlNUZXN0RE9NSklUOjppbmZvKCksIERPTUpJVDo6SURMUmVzdWx0VHlwZUZpbHRlcjxJRExM
b25nPikKIHsKIH0KIApAQCAtMzkxLDcgKzQxMSw3IEBAIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBq
c1Rlc3RET01KSVRVbnNpZ25lZExvbmdBdHRyR2V0dGVyKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVGVz
CiB9CiAKIFRlc3RET01KSVRVbnNpZ25lZExvbmdBdHRyRE9NSklUOjpUZXN0RE9NSklUVW5zaWdu
ZWRMb25nQXR0ckRPTUpJVCgpCi0gICAgOiBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVyKGpzVGVz
dERPTUpJVFVuc2lnbmVkTG9uZ0F0dHIsIG51bGxwdHIsIEpTVGVzdERPTUpJVDo6aW5mbygpLCBK
U0M6OlNwZWNCeXRlY29kZU51bWJlcikKKyAgICA6IEpTQzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIo
anNUZXN0RE9NSklUVW5zaWduZWRMb25nQXR0ciwgbnVsbHB0ciwgSlNUZXN0RE9NSklUOjppbmZv
KCksIERPTUpJVDo6SURMUmVzdWx0VHlwZUZpbHRlcjxJRExVbnNpZ25lZExvbmc+KQogewogfQog
CkBAIC00MTgsNyArNDM4LDcgQEAgc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdERPTUpJVExv
bmdMb25nQXR0ckdldHRlcihFeGVjU3RhdGUmIHN0YXRlLCBKU1Rlc3RET00KIH0KIAogVGVzdERP
TUpJVExvbmdMb25nQXR0ckRPTUpJVDo6VGVzdERPTUpJVExvbmdMb25nQXR0ckRPTUpJVCgpCi0g
ICAgOiBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVyKGpzVGVzdERPTUpJVExvbmdMb25nQXR0ciwg
bnVsbHB0ciwgSlNUZXN0RE9NSklUOjppbmZvKCksIEpTQzo6U3BlY0J5dGVjb2RlTnVtYmVyKQor
ICAgIDogSlNDOjpET01KSVQ6OkdldHRlclNldHRlcihqc1Rlc3RET01KSVRMb25nTG9uZ0F0dHIs
IG51bGxwdHIsIEpTVGVzdERPTUpJVDo6aW5mbygpLCBET01KSVQ6OklETFJlc3VsdFR5cGVGaWx0
ZXI8SURMTG9uZ0xvbmc+KQogewogfQogCkBAIC00NDUsNyArNDY1LDcgQEAgc3RhdGljIGlubGlu
ZSBKU1ZhbHVlIGpzVGVzdERPTUpJVFVuc2lnbmVkTG9uZ0xvbmdBdHRyR2V0dGVyKEV4ZWNTdGF0
ZSYgc3RhdGUsIEoKIH0KIAogVGVzdERPTUpJVFVuc2lnbmVkTG9uZ0xvbmdBdHRyRE9NSklUOjpU
ZXN0RE9NSklUVW5zaWduZWRMb25nTG9uZ0F0dHJET01KSVQoKQotICAgIDogSlNDOjpET01KSVQ6
OkdldHRlclNldHRlcihqc1Rlc3RET01KSVRVbnNpZ25lZExvbmdMb25nQXR0ciwgbnVsbHB0ciwg
SlNUZXN0RE9NSklUOjppbmZvKCksIEpTQzo6U3BlY0J5dGVjb2RlTnVtYmVyKQorICAgIDogSlND
OjpET01KSVQ6OkdldHRlclNldHRlcihqc1Rlc3RET01KSVRVbnNpZ25lZExvbmdMb25nQXR0ciwg
bnVsbHB0ciwgSlNUZXN0RE9NSklUOjppbmZvKCksIERPTUpJVDo6SURMUmVzdWx0VHlwZUZpbHRl
cjxJRExVbnNpZ25lZExvbmdMb25nPikKIHsKIH0KIApAQCAtNDcyLDcgKzQ5Miw3IEBAIHN0YXRp
YyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RET01KSVRGbG9hdEF0dHJHZXR0ZXIoRXhlY1N0YXRlJiBz
dGF0ZSwgSlNUZXN0RE9NSklUCiB9CiAKIFRlc3RET01KSVRGbG9hdEF0dHJET01KSVQ6OlRlc3RE
T01KSVRGbG9hdEF0dHJET01KSVQoKQotICAgIDogSlNDOjpET01KSVQ6OkdldHRlclNldHRlcihq
c1Rlc3RET01KSVRGbG9hdEF0dHIsIG51bGxwdHIsIEpTVGVzdERPTUpJVDo6aW5mbygpLCBKU0M6
OlNwZWNCeXRlY29kZU51bWJlcikKKyAgICA6IEpTQzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIoanNU
ZXN0RE9NSklURmxvYXRBdHRyLCBudWxscHRyLCBKU1Rlc3RET01KSVQ6OmluZm8oKSwgRE9NSklU
OjpJRExSZXN1bHRUeXBlRmlsdGVyPElETEZsb2F0PikKIHsKIH0KIApAQCAtNDk5LDcgKzUxOSw3
IEBAIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RET01KSVRVbnJlc3RyaWN0ZWRGbG9hdEF0
dHJHZXR0ZXIoRXhlY1N0YXRlJiBzdGF0ZSwKIH0KIAogVGVzdERPTUpJVFVucmVzdHJpY3RlZEZs
b2F0QXR0ckRPTUpJVDo6VGVzdERPTUpJVFVucmVzdHJpY3RlZEZsb2F0QXR0ckRPTUpJVCgpCi0g
ICAgOiBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVyKGpzVGVzdERPTUpJVFVucmVzdHJpY3RlZEZs
b2F0QXR0ciwgbnVsbHB0ciwgSlNUZXN0RE9NSklUOjppbmZvKCksIEpTQzo6U3BlY0J5dGVjb2Rl
TnVtYmVyKQorICAgIDogSlNDOjpET01KSVQ6OkdldHRlclNldHRlcihqc1Rlc3RET01KSVRVbnJl
c3RyaWN0ZWRGbG9hdEF0dHIsIG51bGxwdHIsIEpTVGVzdERPTUpJVDo6aW5mbygpLCBET01KSVQ6
OklETFJlc3VsdFR5cGVGaWx0ZXI8SURMVW5yZXN0cmljdGVkRmxvYXQ+KQogewogfQogCkBAIC01
MjYsNyArNTQ2LDcgQEAgc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdERPTUpJVERvdWJsZUF0
dHJHZXR0ZXIoRXhlY1N0YXRlJiBzdGF0ZSwgSlNUZXN0RE9NSkkKIH0KIAogVGVzdERPTUpJVERv
dWJsZUF0dHJET01KSVQ6OlRlc3RET01KSVREb3VibGVBdHRyRE9NSklUKCkKLSAgICA6IEpTQzo6
RE9NSklUOjpHZXR0ZXJTZXR0ZXIoanNUZXN0RE9NSklURG91YmxlQXR0ciwgbnVsbHB0ciwgSlNU
ZXN0RE9NSklUOjppbmZvKCksIEpTQzo6U3BlY0J5dGVjb2RlTnVtYmVyKQorICAgIDogSlNDOjpE
T01KSVQ6OkdldHRlclNldHRlcihqc1Rlc3RET01KSVREb3VibGVBdHRyLCBudWxscHRyLCBKU1Rl
c3RET01KSVQ6OmluZm8oKSwgRE9NSklUOjpJRExSZXN1bHRUeXBlRmlsdGVyPElETERvdWJsZT4p
CiB7CiB9CiAKQEAgLTU1Myw3ICs1NzMsNyBAQCBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0
RE9NSklUVW5yZXN0cmljdGVkRG91YmxlQXR0ckdldHRlcihFeGVjU3RhdGUmIHN0YXRlLAogfQog
CiBUZXN0RE9NSklUVW5yZXN0cmljdGVkRG91YmxlQXR0ckRPTUpJVDo6VGVzdERPTUpJVFVucmVz
dHJpY3RlZERvdWJsZUF0dHJET01KSVQoKQotICAgIDogSlNDOjpET01KSVQ6OkdldHRlclNldHRl
cihqc1Rlc3RET01KSVRVbnJlc3RyaWN0ZWREb3VibGVBdHRyLCBudWxscHRyLCBKU1Rlc3RET01K
SVQ6OmluZm8oKSwgSlNDOjpTcGVjQnl0ZWNvZGVOdW1iZXIpCisgICAgOiBKU0M6OkRPTUpJVDo6
R2V0dGVyU2V0dGVyKGpzVGVzdERPTUpJVFVucmVzdHJpY3RlZERvdWJsZUF0dHIsIG51bGxwdHIs
IEpTVGVzdERPTUpJVDo6aW5mbygpLCBET01KSVQ6OklETFJlc3VsdFR5cGVGaWx0ZXI8SURMVW5y
ZXN0cmljdGVkRG91YmxlPikKIHsKIH0KIApAQCAtNTgwLDcgKzYwMCw3IEBAIHN0YXRpYyBpbmxp
bmUgSlNWYWx1ZSBqc1Rlc3RET01KSVREb21TdHJpbmdBdHRyR2V0dGVyKEV4ZWNTdGF0ZSYgc3Rh
dGUsIEpTVGVzdERPCiB9CiAKIFRlc3RET01KSVREb21TdHJpbmdBdHRyRE9NSklUOjpUZXN0RE9N
SklURG9tU3RyaW5nQXR0ckRPTUpJVCgpCi0gICAgOiBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVy
KGpzVGVzdERPTUpJVERvbVN0cmluZ0F0dHIsIG51bGxwdHIsIEpTVGVzdERPTUpJVDo6aW5mbygp
LCBKU0M6OlNwZWNTdHJpbmcpCisgICAgOiBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVyKGpzVGVz
dERPTUpJVERvbVN0cmluZ0F0dHIsIG51bGxwdHIsIEpTVGVzdERPTUpJVDo6aW5mbygpLCBET01K
SVQ6OklETFJlc3VsdFR5cGVGaWx0ZXI8SURMRE9NU3RyaW5nPikKIHsKIH0KIApAQCAtNjA3LDcg
KzYyNyw3IEBAIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RET01KSVRCeXRlU3RyaW5nQXR0
ckdldHRlcihFeGVjU3RhdGUmIHN0YXRlLCBKU1Rlc3RECiB9CiAKIFRlc3RET01KSVRCeXRlU3Ry
aW5nQXR0ckRPTUpJVDo6VGVzdERPTUpJVEJ5dGVTdHJpbmdBdHRyRE9NSklUKCkKLSAgICA6IEpT
Qzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIoanNUZXN0RE9NSklUQnl0ZVN0cmluZ0F0dHIsIG51bGxw
dHIsIEpTVGVzdERPTUpJVDo6aW5mbygpLCBKU0M6OlNwZWNTdHJpbmcpCisgICAgOiBKU0M6OkRP
TUpJVDo6R2V0dGVyU2V0dGVyKGpzVGVzdERPTUpJVEJ5dGVTdHJpbmdBdHRyLCBudWxscHRyLCBK
U1Rlc3RET01KSVQ6OmluZm8oKSwgRE9NSklUOjpJRExSZXN1bHRUeXBlRmlsdGVyPElETEJ5dGVT
dHJpbmc+KQogewogfQogCkBAIC02MzQsNyArNjU0LDcgQEAgc3RhdGljIGlubGluZSBKU1ZhbHVl
IGpzVGVzdERPTUpJVFVzdlN0cmluZ0F0dHJHZXR0ZXIoRXhlY1N0YXRlJiBzdGF0ZSwgSlNUZXN0
RE8KIH0KIAogVGVzdERPTUpJVFVzdlN0cmluZ0F0dHJET01KSVQ6OlRlc3RET01KSVRVc3ZTdHJp
bmdBdHRyRE9NSklUKCkKLSAgICA6IEpTQzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIoanNUZXN0RE9N
SklUVXN2U3RyaW5nQXR0ciwgbnVsbHB0ciwgSlNUZXN0RE9NSklUOjppbmZvKCksIEpTQzo6U3Bl
Y1N0cmluZykKKyAgICA6IEpTQzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIoanNUZXN0RE9NSklUVXN2
U3RyaW5nQXR0ciwgbnVsbHB0ciwgSlNUZXN0RE9NSklUOjppbmZvKCksIERPTUpJVDo6SURMUmVz
dWx0VHlwZUZpbHRlcjxJRExVU1ZTdHJpbmc+KQogewogfQogCkBAIC02NjEsNyArNjgxLDcgQEAg
c3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdERPTUpJVE5vZGVBdHRyR2V0dGVyKEV4ZWNTdGF0
ZSYgc3RhdGUsIEpTVGVzdERPTUpJVCYKIH0KIAogVGVzdERPTUpJVE5vZGVBdHRyRE9NSklUOjpU
ZXN0RE9NSklUTm9kZUF0dHJET01KSVQoKQotICAgIDogSlNDOjpET01KSVQ6OkdldHRlclNldHRl
cihqc1Rlc3RET01KSVROb2RlQXR0ciwgbnVsbHB0ciwgSlNUZXN0RE9NSklUOjppbmZvKCksIFNw
ZWNIZWFwVG9wKQorICAgIDogSlNDOjpET01KSVQ6OkdldHRlclNldHRlcihqc1Rlc3RET01KSVRO
b2RlQXR0ciwgbnVsbHB0ciwgSlNUZXN0RE9NSklUOjppbmZvKCksIERPTUpJVDo6SURMUmVzdWx0
VHlwZUZpbHRlcjxJRExJbnRlcmZhY2U8Tm9kZT4+KQogewogfQogCkBAIC02ODgsNyArNzA4LDcg
QEAgc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdERPTUpJVEJvb2xlYW5OdWxsYWJsZUF0dHJH
ZXR0ZXIoRXhlY1N0YXRlJiBzdGF0ZSwgSlMKIH0KIAogVGVzdERPTUpJVEJvb2xlYW5OdWxsYWJs
ZUF0dHJET01KSVQ6OlRlc3RET01KSVRCb29sZWFuTnVsbGFibGVBdHRyRE9NSklUKCkKLSAgICA6
IEpTQzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIoanNUZXN0RE9NSklUQm9vbGVhbk51bGxhYmxlQXR0
ciwgbnVsbHB0ciwgSlNUZXN0RE9NSklUOjppbmZvKCksIChKU0M6OlNwZWNCb29sZWFuIHwgSlND
OjpTcGVjT3RoZXIpKQorICAgIDogSlNDOjpET01KSVQ6OkdldHRlclNldHRlcihqc1Rlc3RET01K
SVRCb29sZWFuTnVsbGFibGVBdHRyLCBudWxscHRyLCBKU1Rlc3RET01KSVQ6OmluZm8oKSwgRE9N
SklUOjpJRExSZXN1bHRUeXBlRmlsdGVyPElETE51bGxhYmxlPElETEJvb2xlYW4+PikKIHsKIH0K
IApAQCAtNzE1LDcgKzczNSw3IEBAIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RET01KSVRC
eXRlTnVsbGFibGVBdHRyR2V0dGVyKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVGVzCiB9CiAKIFRlc3RE
T01KSVRCeXRlTnVsbGFibGVBdHRyRE9NSklUOjpUZXN0RE9NSklUQnl0ZU51bGxhYmxlQXR0ckRP
TUpJVCgpCi0gICAgOiBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVyKGpzVGVzdERPTUpJVEJ5dGVO
dWxsYWJsZUF0dHIsIG51bGxwdHIsIEpTVGVzdERPTUpJVDo6aW5mbygpLCAoSlNDOjpTcGVjSW50
MzJPbmx5IHwgSlNDOjpTcGVjT3RoZXIpKQorICAgIDogSlNDOjpET01KSVQ6OkdldHRlclNldHRl
cihqc1Rlc3RET01KSVRCeXRlTnVsbGFibGVBdHRyLCBudWxscHRyLCBKU1Rlc3RET01KSVQ6Omlu
Zm8oKSwgRE9NSklUOjpJRExSZXN1bHRUeXBlRmlsdGVyPElETE51bGxhYmxlPElETEJ5dGU+PikK
IHsKIH0KIApAQCAtNzQyLDcgKzc2Miw3IEBAIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RE
T01KSVRPY3RldE51bGxhYmxlQXR0ckdldHRlcihFeGVjU3RhdGUmIHN0YXRlLCBKU1RlCiB9CiAK
IFRlc3RET01KSVRPY3RldE51bGxhYmxlQXR0ckRPTUpJVDo6VGVzdERPTUpJVE9jdGV0TnVsbGFi
bGVBdHRyRE9NSklUKCkKLSAgICA6IEpTQzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIoanNUZXN0RE9N
SklUT2N0ZXROdWxsYWJsZUF0dHIsIG51bGxwdHIsIEpTVGVzdERPTUpJVDo6aW5mbygpLCAoSlND
OjpTcGVjSW50MzJPbmx5IHwgSlNDOjpTcGVjT3RoZXIpKQorICAgIDogSlNDOjpET01KSVQ6Okdl
dHRlclNldHRlcihqc1Rlc3RET01KSVRPY3RldE51bGxhYmxlQXR0ciwgbnVsbHB0ciwgSlNUZXN0
RE9NSklUOjppbmZvKCksIERPTUpJVDo6SURMUmVzdWx0VHlwZUZpbHRlcjxJRExOdWxsYWJsZTxJ
RExPY3RldD4+KQogewogfQogCkBAIC03NjksNyArNzg5LDcgQEAgc3RhdGljIGlubGluZSBKU1Zh
bHVlIGpzVGVzdERPTUpJVFNob3J0TnVsbGFibGVBdHRyR2V0dGVyKEV4ZWNTdGF0ZSYgc3RhdGUs
IEpTVGUKIH0KIAogVGVzdERPTUpJVFNob3J0TnVsbGFibGVBdHRyRE9NSklUOjpUZXN0RE9NSklU
U2hvcnROdWxsYWJsZUF0dHJET01KSVQoKQotICAgIDogSlNDOjpET01KSVQ6OkdldHRlclNldHRl
cihqc1Rlc3RET01KSVRTaG9ydE51bGxhYmxlQXR0ciwgbnVsbHB0ciwgSlNUZXN0RE9NSklUOjpp
bmZvKCksIChKU0M6OlNwZWNJbnQzMk9ubHkgfCBKU0M6OlNwZWNPdGhlcikpCisgICAgOiBKU0M6
OkRPTUpJVDo6R2V0dGVyU2V0dGVyKGpzVGVzdERPTUpJVFNob3J0TnVsbGFibGVBdHRyLCBudWxs
cHRyLCBKU1Rlc3RET01KSVQ6OmluZm8oKSwgRE9NSklUOjpJRExSZXN1bHRUeXBlRmlsdGVyPElE
TE51bGxhYmxlPElETFNob3J0Pj4pCiB7CiB9CiAKQEAgLTc5Niw3ICs4MTYsNyBAQCBzdGF0aWMg
aW5saW5lIEpTVmFsdWUganNUZXN0RE9NSklUVW5zaWduZWRTaG9ydE51bGxhYmxlQXR0ckdldHRl
cihFeGVjU3RhdGUmIHN0YQogfQogCiBUZXN0RE9NSklUVW5zaWduZWRTaG9ydE51bGxhYmxlQXR0
ckRPTUpJVDo6VGVzdERPTUpJVFVuc2lnbmVkU2hvcnROdWxsYWJsZUF0dHJET01KSVQoKQotICAg
IDogSlNDOjpET01KSVQ6OkdldHRlclNldHRlcihqc1Rlc3RET01KSVRVbnNpZ25lZFNob3J0TnVs
bGFibGVBdHRyLCBudWxscHRyLCBKU1Rlc3RET01KSVQ6OmluZm8oKSwgKEpTQzo6U3BlY0ludDMy
T25seSB8IEpTQzo6U3BlY090aGVyKSkKKyAgICA6IEpTQzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIo
anNUZXN0RE9NSklUVW5zaWduZWRTaG9ydE51bGxhYmxlQXR0ciwgbnVsbHB0ciwgSlNUZXN0RE9N
SklUOjppbmZvKCksIERPTUpJVDo6SURMUmVzdWx0VHlwZUZpbHRlcjxJRExOdWxsYWJsZTxJRExV
bnNpZ25lZFNob3J0Pj4pCiB7CiB9CiAKQEAgLTgyMyw3ICs4NDMsNyBAQCBzdGF0aWMgaW5saW5l
IEpTVmFsdWUganNUZXN0RE9NSklUTG9uZ051bGxhYmxlQXR0ckdldHRlcihFeGVjU3RhdGUmIHN0
YXRlLCBKU1RlcwogfQogCiBUZXN0RE9NSklUTG9uZ051bGxhYmxlQXR0ckRPTUpJVDo6VGVzdERP
TUpJVExvbmdOdWxsYWJsZUF0dHJET01KSVQoKQotICAgIDogSlNDOjpET01KSVQ6OkdldHRlclNl
dHRlcihqc1Rlc3RET01KSVRMb25nTnVsbGFibGVBdHRyLCBudWxscHRyLCBKU1Rlc3RET01KSVQ6
OmluZm8oKSwgKEpTQzo6U3BlY0ludDMyT25seSB8IEpTQzo6U3BlY090aGVyKSkKKyAgICA6IEpT
Qzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIoanNUZXN0RE9NSklUTG9uZ051bGxhYmxlQXR0ciwgbnVs
bHB0ciwgSlNUZXN0RE9NSklUOjppbmZvKCksIERPTUpJVDo6SURMUmVzdWx0VHlwZUZpbHRlcjxJ
RExOdWxsYWJsZTxJRExMb25nPj4pCiB7CiB9CiAKQEAgLTg1MCw3ICs4NzAsNyBAQCBzdGF0aWMg
aW5saW5lIEpTVmFsdWUganNUZXN0RE9NSklUVW5zaWduZWRMb25nTnVsbGFibGVBdHRyR2V0dGVy
KEV4ZWNTdGF0ZSYgc3RhdAogfQogCiBUZXN0RE9NSklUVW5zaWduZWRMb25nTnVsbGFibGVBdHRy
RE9NSklUOjpUZXN0RE9NSklUVW5zaWduZWRMb25nTnVsbGFibGVBdHRyRE9NSklUKCkKLSAgICA6
IEpTQzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIoanNUZXN0RE9NSklUVW5zaWduZWRMb25nTnVsbGFi
bGVBdHRyLCBudWxscHRyLCBKU1Rlc3RET01KSVQ6OmluZm8oKSwgKEpTQzo6U3BlY0J5dGVjb2Rl
TnVtYmVyIHwgSlNDOjpTcGVjT3RoZXIpKQorICAgIDogSlNDOjpET01KSVQ6OkdldHRlclNldHRl
cihqc1Rlc3RET01KSVRVbnNpZ25lZExvbmdOdWxsYWJsZUF0dHIsIG51bGxwdHIsIEpTVGVzdERP
TUpJVDo6aW5mbygpLCBET01KSVQ6OklETFJlc3VsdFR5cGVGaWx0ZXI8SURMTnVsbGFibGU8SURM
VW5zaWduZWRMb25nPj4pCiB7CiB9CiAKQEAgLTg3Nyw3ICs4OTcsNyBAQCBzdGF0aWMgaW5saW5l
IEpTVmFsdWUganNUZXN0RE9NSklUTG9uZ0xvbmdOdWxsYWJsZUF0dHJHZXR0ZXIoRXhlY1N0YXRl
JiBzdGF0ZSwgSgogfQogCiBUZXN0RE9NSklUTG9uZ0xvbmdOdWxsYWJsZUF0dHJET01KSVQ6OlRl
c3RET01KSVRMb25nTG9uZ051bGxhYmxlQXR0ckRPTUpJVCgpCi0gICAgOiBKU0M6OkRPTUpJVDo6
R2V0dGVyU2V0dGVyKGpzVGVzdERPTUpJVExvbmdMb25nTnVsbGFibGVBdHRyLCBudWxscHRyLCBK
U1Rlc3RET01KSVQ6OmluZm8oKSwgKEpTQzo6U3BlY0J5dGVjb2RlTnVtYmVyIHwgSlNDOjpTcGVj
T3RoZXIpKQorICAgIDogSlNDOjpET01KSVQ6OkdldHRlclNldHRlcihqc1Rlc3RET01KSVRMb25n
TG9uZ051bGxhYmxlQXR0ciwgbnVsbHB0ciwgSlNUZXN0RE9NSklUOjppbmZvKCksIERPTUpJVDo6
SURMUmVzdWx0VHlwZUZpbHRlcjxJRExOdWxsYWJsZTxJRExMb25nTG9uZz4+KQogewogfQogCkBA
IC05MDQsNyArOTI0LDcgQEAgc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdERPTUpJVFVuc2ln
bmVkTG9uZ0xvbmdOdWxsYWJsZUF0dHJHZXR0ZXIoRXhlY1N0YXRlJgogfQogCiBUZXN0RE9NSklU
VW5zaWduZWRMb25nTG9uZ051bGxhYmxlQXR0ckRPTUpJVDo6VGVzdERPTUpJVFVuc2lnbmVkTG9u
Z0xvbmdOdWxsYWJsZUF0dHJET01KSVQoKQotICAgIDogSlNDOjpET01KSVQ6OkdldHRlclNldHRl
cihqc1Rlc3RET01KSVRVbnNpZ25lZExvbmdMb25nTnVsbGFibGVBdHRyLCBudWxscHRyLCBKU1Rl
c3RET01KSVQ6OmluZm8oKSwgKEpTQzo6U3BlY0J5dGVjb2RlTnVtYmVyIHwgSlNDOjpTcGVjT3Ro
ZXIpKQorICAgIDogSlNDOjpET01KSVQ6OkdldHRlclNldHRlcihqc1Rlc3RET01KSVRVbnNpZ25l
ZExvbmdMb25nTnVsbGFibGVBdHRyLCBudWxscHRyLCBKU1Rlc3RET01KSVQ6OmluZm8oKSwgRE9N
SklUOjpJRExSZXN1bHRUeXBlRmlsdGVyPElETE51bGxhYmxlPElETFVuc2lnbmVkTG9uZ0xvbmc+
PikKIHsKIH0KIApAQCAtOTMxLDcgKzk1MSw3IEBAIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rl
c3RET01KSVRGbG9hdE51bGxhYmxlQXR0ckdldHRlcihFeGVjU3RhdGUmIHN0YXRlLCBKU1RlCiB9
CiAKIFRlc3RET01KSVRGbG9hdE51bGxhYmxlQXR0ckRPTUpJVDo6VGVzdERPTUpJVEZsb2F0TnVs
bGFibGVBdHRyRE9NSklUKCkKLSAgICA6IEpTQzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIoanNUZXN0
RE9NSklURmxvYXROdWxsYWJsZUF0dHIsIG51bGxwdHIsIEpTVGVzdERPTUpJVDo6aW5mbygpLCAo
SlNDOjpTcGVjQnl0ZWNvZGVOdW1iZXIgfCBKU0M6OlNwZWNPdGhlcikpCisgICAgOiBKU0M6OkRP
TUpJVDo6R2V0dGVyU2V0dGVyKGpzVGVzdERPTUpJVEZsb2F0TnVsbGFibGVBdHRyLCBudWxscHRy
LCBKU1Rlc3RET01KSVQ6OmluZm8oKSwgRE9NSklUOjpJRExSZXN1bHRUeXBlRmlsdGVyPElETE51
bGxhYmxlPElETEZsb2F0Pj4pCiB7CiB9CiAKQEAgLTk1OCw3ICs5NzgsNyBAQCBzdGF0aWMgaW5s
aW5lIEpTVmFsdWUganNUZXN0RE9NSklUVW5yZXN0cmljdGVkRmxvYXROdWxsYWJsZUF0dHJHZXR0
ZXIoRXhlY1N0YXRlJgogfQogCiBUZXN0RE9NSklUVW5yZXN0cmljdGVkRmxvYXROdWxsYWJsZUF0
dHJET01KSVQ6OlRlc3RET01KSVRVbnJlc3RyaWN0ZWRGbG9hdE51bGxhYmxlQXR0ckRPTUpJVCgp
Ci0gICAgOiBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVyKGpzVGVzdERPTUpJVFVucmVzdHJpY3Rl
ZEZsb2F0TnVsbGFibGVBdHRyLCBudWxscHRyLCBKU1Rlc3RET01KSVQ6OmluZm8oKSwgKEpTQzo6
U3BlY0J5dGVjb2RlTnVtYmVyIHwgSlNDOjpTcGVjT3RoZXIpKQorICAgIDogSlNDOjpET01KSVQ6
OkdldHRlclNldHRlcihqc1Rlc3RET01KSVRVbnJlc3RyaWN0ZWRGbG9hdE51bGxhYmxlQXR0ciwg
bnVsbHB0ciwgSlNUZXN0RE9NSklUOjppbmZvKCksIERPTUpJVDo6SURMUmVzdWx0VHlwZUZpbHRl
cjxJRExOdWxsYWJsZTxJRExVbnJlc3RyaWN0ZWRGbG9hdD4+KQogewogfQogCkBAIC05ODUsNyAr
MTAwNSw3IEBAIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RET01KSVREb3VibGVOdWxsYWJs
ZUF0dHJHZXR0ZXIoRXhlY1N0YXRlJiBzdGF0ZSwgSlNUCiB9CiAKIFRlc3RET01KSVREb3VibGVO
dWxsYWJsZUF0dHJET01KSVQ6OlRlc3RET01KSVREb3VibGVOdWxsYWJsZUF0dHJET01KSVQoKQot
ICAgIDogSlNDOjpET01KSVQ6OkdldHRlclNldHRlcihqc1Rlc3RET01KSVREb3VibGVOdWxsYWJs
ZUF0dHIsIG51bGxwdHIsIEpTVGVzdERPTUpJVDo6aW5mbygpLCAoSlNDOjpTcGVjQnl0ZWNvZGVO
dW1iZXIgfCBKU0M6OlNwZWNPdGhlcikpCisgICAgOiBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVy
KGpzVGVzdERPTUpJVERvdWJsZU51bGxhYmxlQXR0ciwgbnVsbHB0ciwgSlNUZXN0RE9NSklUOjpp
bmZvKCksIERPTUpJVDo6SURMUmVzdWx0VHlwZUZpbHRlcjxJRExOdWxsYWJsZTxJRExEb3VibGU+
PikKIHsKIH0KIApAQCAtMTAxMiw3ICsxMDMyLDcgQEAgc3RhdGljIGlubGluZSBKU1ZhbHVlIGpz
VGVzdERPTUpJVFVucmVzdHJpY3RlZERvdWJsZU51bGxhYmxlQXR0ckdldHRlcihFeGVjU3RhdGUK
IH0KIAogVGVzdERPTUpJVFVucmVzdHJpY3RlZERvdWJsZU51bGxhYmxlQXR0ckRPTUpJVDo6VGVz
dERPTUpJVFVucmVzdHJpY3RlZERvdWJsZU51bGxhYmxlQXR0ckRPTUpJVCgpCi0gICAgOiBKU0M6
OkRPTUpJVDo6R2V0dGVyU2V0dGVyKGpzVGVzdERPTUpJVFVucmVzdHJpY3RlZERvdWJsZU51bGxh
YmxlQXR0ciwgbnVsbHB0ciwgSlNUZXN0RE9NSklUOjppbmZvKCksIChKU0M6OlNwZWNCeXRlY29k
ZU51bWJlciB8IEpTQzo6U3BlY090aGVyKSkKKyAgICA6IEpTQzo6RE9NSklUOjpHZXR0ZXJTZXR0
ZXIoanNUZXN0RE9NSklUVW5yZXN0cmljdGVkRG91YmxlTnVsbGFibGVBdHRyLCBudWxscHRyLCBK
U1Rlc3RET01KSVQ6OmluZm8oKSwgRE9NSklUOjpJRExSZXN1bHRUeXBlRmlsdGVyPElETE51bGxh
YmxlPElETFVucmVzdHJpY3RlZERvdWJsZT4+KQogewogfQogCkBAIC0xMDM5LDcgKzEwNTksNyBA
QCBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0RE9NSklURG9tU3RyaW5nTnVsbGFibGVBdHRy
R2V0dGVyKEV4ZWNTdGF0ZSYgc3RhdGUsCiB9CiAKIFRlc3RET01KSVREb21TdHJpbmdOdWxsYWJs
ZUF0dHJET01KSVQ6OlRlc3RET01KSVREb21TdHJpbmdOdWxsYWJsZUF0dHJET01KSVQoKQotICAg
IDogSlNDOjpET01KSVQ6OkdldHRlclNldHRlcihqc1Rlc3RET01KSVREb21TdHJpbmdOdWxsYWJs
ZUF0dHIsIG51bGxwdHIsIEpTVGVzdERPTUpJVDo6aW5mbygpLCAoSlNDOjpTcGVjU3RyaW5nIHwg
SlNDOjpTcGVjT3RoZXIpKQorICAgIDogSlNDOjpET01KSVQ6OkdldHRlclNldHRlcihqc1Rlc3RE
T01KSVREb21TdHJpbmdOdWxsYWJsZUF0dHIsIG51bGxwdHIsIEpTVGVzdERPTUpJVDo6aW5mbygp
LCBET01KSVQ6OklETFJlc3VsdFR5cGVGaWx0ZXI8SURMTnVsbGFibGU8SURMRE9NU3RyaW5nPj4p
CiB7CiB9CiAKQEAgLTEwNjYsNyArMTA4Niw3IEBAIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rl
c3RET01KSVRCeXRlU3RyaW5nTnVsbGFibGVBdHRyR2V0dGVyKEV4ZWNTdGF0ZSYgc3RhdGUsCiB9
CiAKIFRlc3RET01KSVRCeXRlU3RyaW5nTnVsbGFibGVBdHRyRE9NSklUOjpUZXN0RE9NSklUQnl0
ZVN0cmluZ051bGxhYmxlQXR0ckRPTUpJVCgpCi0gICAgOiBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0
dGVyKGpzVGVzdERPTUpJVEJ5dGVTdHJpbmdOdWxsYWJsZUF0dHIsIG51bGxwdHIsIEpTVGVzdERP
TUpJVDo6aW5mbygpLCAoSlNDOjpTcGVjU3RyaW5nIHwgSlNDOjpTcGVjT3RoZXIpKQorICAgIDog
SlNDOjpET01KSVQ6OkdldHRlclNldHRlcihqc1Rlc3RET01KSVRCeXRlU3RyaW5nTnVsbGFibGVB
dHRyLCBudWxscHRyLCBKU1Rlc3RET01KSVQ6OmluZm8oKSwgRE9NSklUOjpJRExSZXN1bHRUeXBl
RmlsdGVyPElETE51bGxhYmxlPElETEJ5dGVTdHJpbmc+PikKIHsKIH0KIApAQCAtMTA5Myw3ICsx
MTEzLDcgQEAgc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdERPTUpJVFVzdlN0cmluZ051bGxh
YmxlQXR0ckdldHRlcihFeGVjU3RhdGUmIHN0YXRlLAogfQogCiBUZXN0RE9NSklUVXN2U3RyaW5n
TnVsbGFibGVBdHRyRE9NSklUOjpUZXN0RE9NSklUVXN2U3RyaW5nTnVsbGFibGVBdHRyRE9NSklU
KCkKLSAgICA6IEpTQzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIoanNUZXN0RE9NSklUVXN2U3RyaW5n
TnVsbGFibGVBdHRyLCBudWxscHRyLCBKU1Rlc3RET01KSVQ6OmluZm8oKSwgKEpTQzo6U3BlY1N0
cmluZyB8IEpTQzo6U3BlY090aGVyKSkKKyAgICA6IEpTQzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIo
anNUZXN0RE9NSklUVXN2U3RyaW5nTnVsbGFibGVBdHRyLCBudWxscHRyLCBKU1Rlc3RET01KSVQ6
OmluZm8oKSwgRE9NSklUOjpJRExSZXN1bHRUeXBlRmlsdGVyPElETE51bGxhYmxlPElETFVTVlN0
cmluZz4+KQogewogfQogCkBAIC0xMTIwLDcgKzExNDAsNyBAQCBzdGF0aWMgaW5saW5lIEpTVmFs
dWUganNUZXN0RE9NSklUTm9kZU51bGxhYmxlQXR0ckdldHRlcihFeGVjU3RhdGUmIHN0YXRlLCBK
U1RlcwogfQogCiBUZXN0RE9NSklUTm9kZU51bGxhYmxlQXR0ckRPTUpJVDo6VGVzdERPTUpJVE5v
ZGVOdWxsYWJsZUF0dHJET01KSVQoKQotICAgIDogSlNDOjpET01KSVQ6OkdldHRlclNldHRlcihq
c1Rlc3RET01KSVROb2RlTnVsbGFibGVBdHRyLCBudWxscHRyLCBKU1Rlc3RET01KSVQ6OmluZm8o
KSwgU3BlY0hlYXBUb3ApCisgICAgOiBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVyKGpzVGVzdERP
TUpJVE5vZGVOdWxsYWJsZUF0dHIsIG51bGxwdHIsIEpTVGVzdERPTUpJVDo6aW5mbygpLCBET01K
SVQ6OklETFJlc3VsdFR5cGVGaWx0ZXI8SURMTnVsbGFibGU8SURMSW50ZXJmYWNlPE5vZGU+Pj4p
CiB7CiB9CiAKQEAgLTExNTksNiArMTE3OSwzOSBAQCBKU1ZhbHVlIEpTVGVzdERPTUpJVDo6Z2V0
Q29uc3RydWN0b3IoVk0mIHZtLCBjb25zdCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQog
ICAgIHJldHVybiBnZXRET01Db25zdHJ1Y3RvcjxKU1Rlc3RET01KSVRDb25zdHJ1Y3Rvcj4odm0s
ICpqc0Nhc3Q8Y29uc3QgSlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QpKTsKIH0KIAor
c3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdERPTUpJVFByb3RvdHlwZUZ1
bmN0aW9uR2V0QXR0cmlidXRlQ2FsbGVyKEpTQzo6RXhlY1N0YXRlKiwgSlNUZXN0RE9NSklUKiwg
SlNDOjpUaHJvd1Njb3BlJik7CisKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0
RE9NSklUUHJvdG90eXBlRnVuY3Rpb25HZXRBdHRyaWJ1dGUoRXhlY1N0YXRlKiBzdGF0ZSkKK3sK
KyAgICByZXR1cm4gQmluZGluZ0NhbGxlcjxKU1Rlc3RET01KSVQ+OjpjYWxsT3BlcmF0aW9uPGpz
VGVzdERPTUpJVFByb3RvdHlwZUZ1bmN0aW9uR2V0QXR0cmlidXRlQ2FsbGVyPihzdGF0ZSwgImdl
dEF0dHJpYnV0ZSIpOworfQorCitzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNU
ZXN0RE9NSklUUHJvdG90eXBlRnVuY3Rpb25HZXRBdHRyaWJ1dGVDYWxsZXIoSlNDOjpFeGVjU3Rh
dGUqIHN0YXRlLCBKU1Rlc3RET01KSVQqIGNhc3RlZFRoaXMsIEpTQzo6VGhyb3dTY29wZSYgdGhy
b3dTY29wZSkKK3sKKyAgICBVTlVTRURfUEFSQU0oc3RhdGUpOworICAgIFVOVVNFRF9QQVJBTSh0
aHJvd1Njb3BlKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOworICAg
IGlmIChVTkxJS0VMWShzdGF0ZS0+YXJndW1lbnRDb3VudCgpIDwgMSkpCisgICAgICAgIHJldHVy
biB0aHJvd1ZNRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50
c0Vycm9yKHN0YXRlKSk7CisgICAgYXV0byBuYW1lID0gY29udmVydDxJRExET01TdHJpbmc+KCpz
dGF0ZSwgc3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50KDApLCBTdHJpbmdDb252ZXJzaW9uQ29uZmln
dXJhdGlvbjo6Tm9ybWFsKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVu
Y29kZWRKU1ZhbHVlKCkpOworICAgIEpTVmFsdWUgcmVzdWx0ID0gdG9KUzxJRExOdWxsYWJsZTxJ
RExET01TdHJpbmc+Pigqc3RhdGUsIGltcGwuZ2V0QXR0cmlidXRlKFdURk1vdmUobmFtZSkpKTsK
KyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7Cit9CisKK0pTQzo6RW5jb2RlZEpT
VmFsdWUgdW5zYWZlSnNUZXN0RE9NSklUUHJvdG90eXBlRnVuY3Rpb25HZXRBdHRyaWJ1dGUoSlND
OjpFeGVjU3RhdGUqIHN0YXRlLCBKU1Rlc3RET01KSVQqIGNhc3RlZFRoaXMsIERPTUpJVDo6SURM
SlNBcmd1bWVudFR5cGU8SURMRE9NU3RyaW5nPiBlbmNvZGVkTmFtZSkKK3sKKyAgICBVTlVTRURf
UEFSQU0oc3RhdGUpOworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIEpTQzo6TmF0aXZl
Q2FsbEZyYW1lVHJhY2VyIHRyYWNlcigmdm0sIHN0YXRlKTsKKyAgICBhdXRvIHRocm93U2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+
d3JhcHBlZCgpOworICAgIGF1dG8gbmFtZSA9IERPTUpJVDo6RGlyZWN0Q29udmVydGVyPElETERP
TVN0cmluZz46OmRpcmVjdENvbnZlcnQ8U3RyaW5nQ29udmVyc2lvbkNvbmZpZ3VyYXRpb246Ok5v
cm1hbD4oKnN0YXRlLCBlbmNvZGVkTmFtZSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJv
d1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IHRvSlM8SURM
TnVsbGFibGU8SURMRE9NU3RyaW5nPj4oKnN0YXRlLCBpbXBsLmdldEF0dHJpYnV0ZShXVEZNb3Zl
KG5hbWUpKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOworfQorCiB2b2lk
IEpTVGVzdERPTUpJVDo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2
aXNpdG9yKQogewogICAgIGF1dG8qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNUZXN0RE9NSklUKj4o
Y2VsbCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
VGVzdERPTUpJVC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVz
dERPTUpJVC5pZGwKaW5kZXggYmU3ZWQwNGZmNjNkZTY4NmJjODc2NDgyODJiNmFhZjY0YzI3NzNl
Ny4uYTUzMTQ4OGRjODFjMWI4NzdmMGVlM2Y5NGY4YWFiMzhhYTY5NDM5YiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RET01KSVQuaWRsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0RE9NSklULmlkbApAQCAt
NjMsNCArNjMsNiBAQCBpbnRlcmZhY2UgVGVzdERPTUpJVCA6IE5vZGUgewogICAgIFtET01KSVRd
IHJlYWRvbmx5IGF0dHJpYnV0ZSBCeXRlU3RyaW5nPyBieXRlU3RyaW5nTnVsbGFibGVBdHRyOwog
ICAgIFtET01KSVRdIHJlYWRvbmx5IGF0dHJpYnV0ZSBVU1ZTdHJpbmc/IHVzdlN0cmluZ051bGxh
YmxlQXR0cjsKICAgICBbRE9NSklUXSByZWFkb25seSBhdHRyaWJ1dGUgTm9kZT8gbm9kZU51bGxh
YmxlQXR0cjsKKworICAgIFtET01KSVQ9U2lnbmF0dXJlXSBET01TdHJpbmc/IGdldEF0dHJpYnV0
ZShET01TdHJpbmcgbmFtZSk7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0Vs
ZW1lbnQuaWRsIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaWRsCmluZGV4IDcwNTYxNzM4
Yjk3NDlhOGQ3NGEwZjE3Y2E2M2E3ZjhmZjE5NWUxYzYuLjQ4OGM5OTFiNGJhNjZiNTI0ODgzODAy
MTYwMWMwYzBmMWRhMzIwMmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50
LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5pZGwKQEAgLTI2LDIwICsyNiwy
MCBAQAogXSBpbnRlcmZhY2UgRWxlbWVudCA6IE5vZGUgewogICAgIHJlYWRvbmx5IGF0dHJpYnV0
ZSBET01TdHJpbmc/IHRhZ05hbWU7CiAKLSAgICBET01TdHJpbmc/IGdldEF0dHJpYnV0ZShET01T
dHJpbmcgbmFtZSk7CisgICAgW0RPTUpJVD1TaWduYXR1cmVdIERPTVN0cmluZz8gZ2V0QXR0cmli
dXRlKERPTVN0cmluZyBuYW1lKTsKIAogICAgIFtDRVJlYWN0aW9ucywgTWF5VGhyb3dFeGNlcHRp
b25dIHZvaWQgc2V0QXR0cmlidXRlKERPTVN0cmluZyBuYW1lLCBET01TdHJpbmcgdmFsdWUpOwog
CiAgICAgW0NFUmVhY3Rpb25zXSB2b2lkIHJlbW92ZUF0dHJpYnV0ZShET01TdHJpbmcgbmFtZSk7
Ci0gICAgQXR0cj8gZ2V0QXR0cmlidXRlTm9kZShET01TdHJpbmcgbmFtZSk7CisgICAgW0RPTUpJ
VD1TaWduYXR1cmVdIEF0dHI/IGdldEF0dHJpYnV0ZU5vZGUoRE9NU3RyaW5nIG5hbWUpOwogCiAg
ICAgW0NFUmVhY3Rpb25zLCBNYXlUaHJvd0V4Y2VwdGlvbl0gQXR0cj8gc2V0QXR0cmlidXRlTm9k
ZShBdHRyIG5ld0F0dHIpOwogICAgIFtDRVJlYWN0aW9ucywgTWF5VGhyb3dFeGNlcHRpb25dIEF0
dHIgcmVtb3ZlQXR0cmlidXRlTm9kZShBdHRyIG9sZEF0dHIpOwogCi0gICAgSFRNTENvbGxlY3Rp
b24gZ2V0RWxlbWVudHNCeVRhZ05hbWUoRE9NU3RyaW5nIG5hbWUpOworICAgIFtET01KSVQ9U2ln
bmF0dXJlXSBIVE1MQ29sbGVjdGlvbiBnZXRFbGVtZW50c0J5VGFnTmFtZShET01TdHJpbmcgbmFt
ZSk7CiAKICAgICByZWFkb25seSBhdHRyaWJ1dGUgTmFtZWROb2RlTWFwIGF0dHJpYnV0ZXM7Ci0g
ICAgYm9vbGVhbiBoYXNBdHRyaWJ1dGVzKCk7CisgICAgW0RPTUpJVD1TaWduYXR1cmVdIGJvb2xl
YW4gaGFzQXR0cmlidXRlcygpOwogCiAgICAgRE9NU3RyaW5nPyBnZXRBdHRyaWJ1dGVOUyhET01T
dHJpbmc/IG5hbWVzcGFjZVVSSSwgRE9NU3RyaW5nIGxvY2FsTmFtZSk7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2RvbWppdC9ET01KSVRBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2RvbWppdC9ET01KSVRBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmNwcApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODNmYmE4OTcxM2I4NjYzZDRkOGYyN2VkY2Jm
NzRhZmU2MzE4MmQzMS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9kb21qaXQvRE9NSklUQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5j
cHAKKysrIC9kZXYvbnVsbApAQCAtMSw3MCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAy
MDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
LSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkRP
TUpJVEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaCIKLQotI2luY2x1ZGUgPGRvbWppdC9ET01KSVRB
YnN0cmFjdEhlYXAuaD4KLSNpbmNsdWRlIDx3dGYvRGF0YUxvZy5oPgotI2luY2x1ZGUgPHd0Zi9O
ZXZlckRlc3Ryb3llZC5oPgotCi0jaWYgRU5BQkxFKEpJVCkKLQotbmFtZXNwYWNlIFdlYkNvcmUg
eyBuYW1lc3BhY2UgRE9NSklUIHsKLQotc3RhdGljIGNvbnN0IGJvb2wgdmVyYm9zZSA9IGZhbHNl
OwotCi1BYnN0cmFjdEhlYXBSZXBvc2l0b3J5OjpBYnN0cmFjdEhlYXBSZXBvc2l0b3J5KCkKLXsK
LSAgICBKU0M6OkRPTUpJVDo6QWJzdHJhY3RIZWFwIERPTUhlYXAoIkRPTSIpOwotI2RlZmluZSBE
T01KSVRfREVGSU5FX0hFQVAobmFtZSwgcGFyZW50KSBKU0M6OkRPTUpJVDo6QWJzdHJhY3RIZWFw
IG5hbWUjI0hlYXAoI25hbWUpOwotICAgIERPTUpJVF9BQlNUUkFDVF9IRUFQX0xJU1QoRE9NSklU
X0RFRklORV9IRUFQKQotI3VuZGVmIERPTUpJVF9ERUZJTkVfSEVBUAotCi0jZGVmaW5lIERPTUpJ
VF9JTklUSUFMSVpFX0hFQVAobmFtZSwgcGFyZW50KSBuYW1lIyNIZWFwLnNldFBhcmVudCgmcGFy
ZW50IyNIZWFwKTsKLSAgICBET01KSVRfQUJTVFJBQ1RfSEVBUF9MSVNUKERPTUpJVF9JTklUSUFM
SVpFX0hFQVApCi0jdW5kZWYgRE9NSklUX0lOSVRJQUxJWkVfSEVBUAotCi0gICAgRE9NSGVhcC5j
b21wdXRlKDApOwotCi0jZGVmaW5lIERPTUpJVF9JTklUSUFMSVpFX01FTUJFUihuYW1lLCBwYXJl
bnQpIG5hbWUgPSBuYW1lIyNIZWFwLnJhbmdlKCk7Ci0gICAgRE9NSklUX0FCU1RSQUNUX0hFQVBf
TElTVChET01KSVRfSU5JVElBTElaRV9NRU1CRVIpCi0jdW5kZWYgRE9NSklUX0lOSVRJQUxJWkVf
TUVNQkVSCi0KLSAgICBpZiAodmVyYm9zZSkgewotICAgICAgICBkYXRhTG9nKCJET01KSVQgSGVh
cCBSZXBvc2l0b3J5OlxuIik7Ci0gICAgICAgIERPTUhlYXAuZGVlcER1bXAoV1RGOjpkYXRhRmls
ZSgpKTsKLSAgICB9Ci19Ci0KLWNvbnN0IEFic3RyYWN0SGVhcFJlcG9zaXRvcnkmIEFic3RyYWN0
SGVhcFJlcG9zaXRvcnk6OnNoYXJlZCgpCi17Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEFi
c3RyYWN0SGVhcFJlcG9zaXRvcnk+IHJlcG9zaXRvcnk7Ci0gICAgcmV0dXJuIHJlcG9zaXRvcnku
Z2V0KCk7Ci19Ci0KLX0gfQotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bWppdC9ET01KSVRBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmggYi9Tb3VyY2UvV2ViQ29yZS9kb21q
aXQvRE9NSklUQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCA4MTkwYTFhOTRiYmM3OWRlNWYyZTNiZWQwOTk4MzQ3OWZhNGJkNjU2Li4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rv
bWppdC9ET01KSVRBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmgKKysrIC9kZXYvbnVsbApAQCAtMSw2
NiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoK
LSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
LSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQot
I3ByYWdtYSBvbmNlCi0KLSNpbmNsdWRlIDxkb21qaXQvRE9NSklUSGVhcFJhbmdlLmg+Ci0jaW5j
bHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+Ci0jaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+
Ci0KLSNpZiBFTkFCTEUoSklUKQotCi1uYW1lc3BhY2UgV2ViQ29yZSB7IG5hbWVzcGFjZSBET01K
SVQgewotCi0vLyBEZXNjcmliZSB5b3VyIGFic3RyYWN0IGhlYXAgaGllcmFyY2h5IGhlcmUuCi0v
LyBWKEFic3RyYWN0SGVhcE5hbWUsIFBhcmVudCkKLSNkZWZpbmUgRE9NSklUX0FCU1RSQUNUX0hF
QVBfTElTVChWKSBcCi0gICAgVihOb2RlLCBET00pIFwKLSAgICBWKE5vZGVfZmlyc3RDaGlsZCwg
Tm9kZSkgXAotICAgIFYoTm9kZV9sYXN0Q2hpbGQsIE5vZGUpIFwKLSAgICBWKE5vZGVfcGFyZW50
Tm9kZSwgTm9kZSkgXAotICAgIFYoTm9kZV9uZXh0U2libGluZywgTm9kZSkgXAotICAgIFYoTm9k
ZV9wcmV2aW91c1NpYmxpbmcsIE5vZGUpIFwKLSAgICBWKE5vZGVfb3duZXJEb2N1bWVudCwgTm9k
ZSkgXAotICAgIFYoRG9jdW1lbnQsIERPTSkgXAotICAgIFYoRG9jdW1lbnRfZG9jdW1lbnRFbGVt
ZW50LCBEb2N1bWVudCkgXAotCi0KLWNsYXNzIEFic3RyYWN0SGVhcFJlcG9zaXRvcnkgewotICAg
IFdURl9NQUtFX05PTkNPUFlBQkxFKEFic3RyYWN0SGVhcFJlcG9zaXRvcnkpOwotcHVibGljOgot
ICAgIHN0YXRpYyBjb25zdCBBYnN0cmFjdEhlYXBSZXBvc2l0b3J5JiBzaGFyZWQoKTsKLQotICAg
IEpTQzo6RE9NSklUOjpIZWFwUmFuZ2UgRE9NOwotCi0jZGVmaW5lIERPTUpJVF9ERUZJTkVfTUVN
QkVSKG5hbWUsIHBhcmVudCkgSlNDOjpET01KSVQ6OkhlYXBSYW5nZSBuYW1lOwotICAgIERPTUpJ
VF9BQlNUUkFDVF9IRUFQX0xJU1QoRE9NSklUX0RFRklORV9NRU1CRVIpCi0jdW5kZWYgRE9NSklU
X0RFRklORV9NRU1CRVIKLQotICAgIEFic3RyYWN0SGVhcFJlcG9zaXRvcnkoKTsKLX07Ci0KLX0g
fQotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbWppdC9ET01KSVRBYnN0
cmFjdEhlYXBSZXBvc2l0b3J5LnlhbWwgYi9Tb3VyY2UvV2ViQ29yZS9kb21qaXQvRE9NSklUQWJz
dHJhY3RIZWFwUmVwb3NpdG9yeS55YW1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjUyYzU4NDVlMDc4NjcwZGRkYWM5
NzcyOTk5Y2NiOGVhN2QwMWJkZjMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9k
b21qaXQvRE9NSklUQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS55YW1sCkBAIC0wLDAgKzEsMTEgQEAK
K0RPTToKKyAgICBUcmVlOgorICAgICAgICBOb2RlOgorICAgICAgICAgICAgLSBOb2RlX2ZpcnN0
Q2hpbGQKKyAgICAgICAgICAgIC0gTm9kZV9sYXN0Q2hpbGQKKyAgICAgICAgICAgIC0gTm9kZV9w
YXJlbnROb2RlCisgICAgICAgICAgICAtIE5vZGVfbmV4dFNpYmxpbmcKKyAgICAgICAgICAgIC0g
Tm9kZV9wcmV2aW91c1NpYmxpbmcKKyAgICAgICAgICAgIC0gTm9kZV9vd25lckRvY3VtZW50Cisg
ICAgICAgIERvY3VtZW50OgorICAgICAgICAgICAgLSBEb2N1bWVudF9kb2N1bWVudEVsZW1lbnQK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbWppdC9ET01KSVRJRExDb252ZXJ0LmggYi9T
b3VyY2UvV2ViQ29yZS9kb21qaXQvRE9NSklUSURMQ29udmVydC5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjVlMDBh
YmZjY2I4NzZkZWExODMyZjFjMjBhZWUzZWQ3OGIxMzY4NDkKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9kb21qaXQvRE9NSklUSURMQ29udmVydC5oCkBAIC0wLDAgKzEsNDkgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIklETFR5cGVzLmgiCisjaW5j
bHVkZSA8Ynl0ZWNvZGUvU3BlY3VsYXRlZFR5cGUuaD4KKyNpbmNsdWRlIDxkb21qaXQvRE9NSklU
U2lnbmF0dXJlLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsgbmFtZXNwYWNlIERPTUpJVCB7CisK
K3RlbXBsYXRlPHR5cGVuYW1lIElETFR5cGU+CitzdHJ1Y3QgRGlyZWN0Q29udmVydGVyOworCit0
ZW1wbGF0ZTw+CitzdHJ1Y3QgRGlyZWN0Q29udmVydGVyPElETERPTVN0cmluZz4geworICAgIHRl
bXBsYXRlPFN0cmluZ0NvbnZlcnNpb25Db25maWd1cmF0aW9uPgorICAgIHN0YXRpYyBTdHJpbmcg
ZGlyZWN0Q29udmVydChKU0M6OkV4ZWNTdGF0ZSYsIEpTQzo6SlNTdHJpbmcqKTsKK307CisKK3Rl
bXBsYXRlPD4KK2lubGluZSBTdHJpbmcgRGlyZWN0Q29udmVydGVyPElETERPTVN0cmluZz46OmRp
cmVjdENvbnZlcnQ8U3RyaW5nQ29udmVyc2lvbkNvbmZpZ3VyYXRpb246Ok5vcm1hbD4oSlNDOjpF
eGVjU3RhdGUmIHN0YXRlLCBKU0M6OkpTU3RyaW5nKiBzdHJpbmcpCit7CisgICAgcmV0dXJuIHN0
cmluZy0+dmFsdWUoJnN0YXRlKTsKK30KKworfSB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9kb21qaXQvRE9NSklUSURMVHlwZS5oIGIvU291cmNlL1dlYkNvcmUvZG9taml0L0RPTUpJVElE
TFR5cGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi42ODkxZmJjNTBlZjRjMmQ3NjU0ZDhlNWQyYmM4ZGVhZTk3NmRm
MWFjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvZG9taml0L0RPTUpJVElETFR5
cGUuaApAQCAtMCwwICsxLDQ3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNs
dWRlICJJRExUeXBlcy5oIgorI2luY2x1ZGUgPGJ5dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmg+CisK
K25hbWVzcGFjZSBXZWJDb3JlIHsgbmFtZXNwYWNlIERPTUpJVCB7CisKK3RlbXBsYXRlPHR5cGVu
YW1lIElETFR5cGU+CitzdHJ1Y3QgSURMSlNBcmd1bWVudFR5cGVTZWxlY3Q7CisKK3RlbXBsYXRl
PD4gc3RydWN0IElETEpTQXJndW1lbnRUeXBlU2VsZWN0PElETEJvb2xlYW4+IHsgdHlwZWRlZiBi
b29sIHR5cGU7IH07Cit0ZW1wbGF0ZTw+IHN0cnVjdCBJRExKU0FyZ3VtZW50VHlwZVNlbGVjdDxJ
RExCeXRlPiB7IHR5cGVkZWYgaW50MzJfdCB0eXBlOyB9OwordGVtcGxhdGU8PiBzdHJ1Y3QgSURM
SlNBcmd1bWVudFR5cGVTZWxlY3Q8SURMT2N0ZXQ+IHsgdHlwZWRlZiBpbnQzMl90IHR5cGU7IH07
Cit0ZW1wbGF0ZTw+IHN0cnVjdCBJRExKU0FyZ3VtZW50VHlwZVNlbGVjdDxJRExTaG9ydD4geyB0
eXBlZGVmIGludDMyX3QgdHlwZTsgfTsKK3RlbXBsYXRlPD4gc3RydWN0IElETEpTQXJndW1lbnRU
eXBlU2VsZWN0PElETFVuc2lnbmVkU2hvcnQ+IHsgdHlwZWRlZiBpbnQzMl90IHR5cGU7IH07Cit0
ZW1wbGF0ZTw+IHN0cnVjdCBJRExKU0FyZ3VtZW50VHlwZVNlbGVjdDxJRExMb25nPiB7IHR5cGVk
ZWYgaW50MzJfdCB0eXBlOyB9OwordGVtcGxhdGU8PiBzdHJ1Y3QgSURMSlNBcmd1bWVudFR5cGVT
ZWxlY3Q8SURMRE9NU3RyaW5nPiB7IHR5cGVkZWYgSlNDOjpKU1N0cmluZyogdHlwZTsgfTsKKwor
dGVtcGxhdGU8dHlwZW5hbWUgSURMVHlwZT4KK3VzaW5nIElETEpTQXJndW1lbnRUeXBlID0gdHlw
ZW5hbWUgSURMSlNBcmd1bWVudFR5cGVTZWxlY3Q8SURMVHlwZT46OnR5cGU7CisKK30gfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9taml0L0RPTUpJVElETFR5cGVGaWx0ZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL2RvbWppdC9ET01KSVRJRExUeXBlRmlsdGVyLmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGFm
NjM2ZGU5YjZmZTQxYzM2Yzc3MDg3MDI0NmU4N2FiZmZiNzgwMgotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbWppdC9ET01KSVRJRExUeXBlRmlsdGVyLmgKQEAgLTAsMCArMSw3
MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8Ynl0ZWNvZGUvU3Bl
Y3VsYXRlZFR5cGUuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeyBuYW1lc3BhY2UgRE9NSklUIHsK
KwordGVtcGxhdGU8dHlwZW5hbWUgSURMVHlwZT4KK3N0cnVjdCBJRExBcmd1bWVudFR5cGVGaWx0
ZXJTZWxlY3Q7CisKK3RlbXBsYXRlPD4gc3RydWN0IElETEFyZ3VtZW50VHlwZUZpbHRlclNlbGVj
dDxJRExCb29sZWFuPiB7IHN0YXRpYyBjb25zdGV4cHIgSlNDOjpTcGVjdWxhdGVkVHlwZSB2YWx1
ZSA9IEpTQzo6U3BlY0Jvb2xlYW47IH07Cit0ZW1wbGF0ZTw+IHN0cnVjdCBJRExBcmd1bWVudFR5
cGVGaWx0ZXJTZWxlY3Q8SURMQnl0ZT4geyBzdGF0aWMgY29uc3RleHByIEpTQzo6U3BlY3VsYXRl
ZFR5cGUgdmFsdWUgPSBKU0M6OlNwZWNJbnQzMk9ubHk7IH07Cit0ZW1wbGF0ZTw+IHN0cnVjdCBJ
RExBcmd1bWVudFR5cGVGaWx0ZXJTZWxlY3Q8SURMT2N0ZXQ+IHsgc3RhdGljIGNvbnN0ZXhwciBK
U0M6OlNwZWN1bGF0ZWRUeXBlIHZhbHVlID0gSlNDOjpTcGVjSW50MzJPbmx5OyB9OwordGVtcGxh
dGU8PiBzdHJ1Y3QgSURMQXJndW1lbnRUeXBlRmlsdGVyU2VsZWN0PElETFNob3J0PiB7IHN0YXRp
YyBjb25zdGV4cHIgSlNDOjpTcGVjdWxhdGVkVHlwZSB2YWx1ZSA9IEpTQzo6U3BlY0ludDMyT25s
eTsgfTsKK3RlbXBsYXRlPD4gc3RydWN0IElETEFyZ3VtZW50VHlwZUZpbHRlclNlbGVjdDxJRExV
bnNpZ25lZFNob3J0PiB7IHN0YXRpYyBjb25zdGV4cHIgSlNDOjpTcGVjdWxhdGVkVHlwZSB2YWx1
ZSA9IEpTQzo6U3BlY0ludDMyT25seTsgfTsKK3RlbXBsYXRlPD4gc3RydWN0IElETEFyZ3VtZW50
VHlwZUZpbHRlclNlbGVjdDxJRExMb25nPiB7IHN0YXRpYyBjb25zdGV4cHIgSlNDOjpTcGVjdWxh
dGVkVHlwZSB2YWx1ZSA9IEpTQzo6U3BlY0ludDMyT25seTsgfTsKK3RlbXBsYXRlPD4gc3RydWN0
IElETEFyZ3VtZW50VHlwZUZpbHRlclNlbGVjdDxJRExET01TdHJpbmc+IHsgc3RhdGljIGNvbnN0
ZXhwciBKU0M6OlNwZWN1bGF0ZWRUeXBlIHZhbHVlID0gSlNDOjpTcGVjU3RyaW5nOyB9OworCit0
ZW1wbGF0ZTx0eXBlbmFtZSBJRExUeXBlPgorY29uc3RleHByIEpTQzo6U3BlY3VsYXRlZFR5cGUg
SURMQXJndW1lbnRUeXBlRmlsdGVyID0gSURMQXJndW1lbnRUeXBlRmlsdGVyU2VsZWN0PElETFR5
cGU+Ojp2YWx1ZTsKKwordGVtcGxhdGU8dHlwZW5hbWUgSURMVHlwZT4KK2NvbnN0ZXhwciBKU0M6
OlNwZWN1bGF0ZWRUeXBlIElETFJlc3VsdFR5cGVGaWx0ZXIgPSBKU0M6OlNwZWNIZWFwVG9wOwor
Cit0ZW1wbGF0ZTw+IGNvbnN0ZXhwciBKU0M6OlNwZWN1bGF0ZWRUeXBlIElETFJlc3VsdFR5cGVG
aWx0ZXI8SURMQW55PiA9IEpTQzo6U3BlY0hlYXBUb3A7Cit0ZW1wbGF0ZTw+IGNvbnN0ZXhwciBK
U0M6OlNwZWN1bGF0ZWRUeXBlIElETFJlc3VsdFR5cGVGaWx0ZXI8SURMQm9vbGVhbj4gPSBKU0M6
OlNwZWNCb29sZWFuOwordGVtcGxhdGU8PiBjb25zdGV4cHIgSlNDOjpTcGVjdWxhdGVkVHlwZSBJ
RExSZXN1bHRUeXBlRmlsdGVyPElETEJ5dGU+ID0gSlNDOjpTcGVjSW50MzJPbmx5OwordGVtcGxh
dGU8PiBjb25zdGV4cHIgSlNDOjpTcGVjdWxhdGVkVHlwZSBJRExSZXN1bHRUeXBlRmlsdGVyPElE
TE9jdGV0PiA9IEpTQzo6U3BlY0ludDMyT25seTsKK3RlbXBsYXRlPD4gY29uc3RleHByIEpTQzo6
U3BlY3VsYXRlZFR5cGUgSURMUmVzdWx0VHlwZUZpbHRlcjxJRExTaG9ydD4gPSBKU0M6OlNwZWNJ
bnQzMk9ubHk7Cit0ZW1wbGF0ZTw+IGNvbnN0ZXhwciBKU0M6OlNwZWN1bGF0ZWRUeXBlIElETFJl
c3VsdFR5cGVGaWx0ZXI8SURMVW5zaWduZWRTaG9ydD4gPSBKU0M6OlNwZWNJbnQzMk9ubHk7Cit0
ZW1wbGF0ZTw+IGNvbnN0ZXhwciBKU0M6OlNwZWN1bGF0ZWRUeXBlIElETFJlc3VsdFR5cGVGaWx0
ZXI8SURMTG9uZz4gPSBKU0M6OlNwZWNJbnQzMk9ubHk7Cit0ZW1wbGF0ZTw+IGNvbnN0ZXhwciBK
U0M6OlNwZWN1bGF0ZWRUeXBlIElETFJlc3VsdFR5cGVGaWx0ZXI8SURMVW5zaWduZWRMb25nPiA9
IEpTQzo6U3BlY0J5dGVjb2RlTnVtYmVyOwordGVtcGxhdGU8PiBjb25zdGV4cHIgSlNDOjpTcGVj
dWxhdGVkVHlwZSBJRExSZXN1bHRUeXBlRmlsdGVyPElETExvbmdMb25nPiA9IEpTQzo6U3BlY0J5
dGVjb2RlTnVtYmVyOwordGVtcGxhdGU8PiBjb25zdGV4cHIgSlNDOjpTcGVjdWxhdGVkVHlwZSBJ
RExSZXN1bHRUeXBlRmlsdGVyPElETFVuc2lnbmVkTG9uZ0xvbmc+ID0gSlNDOjpTcGVjQnl0ZWNv
ZGVOdW1iZXI7Cit0ZW1wbGF0ZTw+IGNvbnN0ZXhwciBKU0M6OlNwZWN1bGF0ZWRUeXBlIElETFJl
c3VsdFR5cGVGaWx0ZXI8SURMRmxvYXQ+ID0gSlNDOjpTcGVjQnl0ZWNvZGVOdW1iZXI7Cit0ZW1w
bGF0ZTw+IGNvbnN0ZXhwciBKU0M6OlNwZWN1bGF0ZWRUeXBlIElETFJlc3VsdFR5cGVGaWx0ZXI8
SURMVW5yZXN0cmljdGVkRmxvYXQ+ID0gSlNDOjpTcGVjQnl0ZWNvZGVOdW1iZXI7Cit0ZW1wbGF0
ZTw+IGNvbnN0ZXhwciBKU0M6OlNwZWN1bGF0ZWRUeXBlIElETFJlc3VsdFR5cGVGaWx0ZXI8SURM
RG91YmxlPiA9IEpTQzo6U3BlY0J5dGVjb2RlTnVtYmVyOwordGVtcGxhdGU8PiBjb25zdGV4cHIg
SlNDOjpTcGVjdWxhdGVkVHlwZSBJRExSZXN1bHRUeXBlRmlsdGVyPElETFVucmVzdHJpY3RlZERv
dWJsZT4gPSBKU0M6OlNwZWNCeXRlY29kZU51bWJlcjsKK3RlbXBsYXRlPD4gY29uc3RleHByIEpT
Qzo6U3BlY3VsYXRlZFR5cGUgSURMUmVzdWx0VHlwZUZpbHRlcjxJRExET01TdHJpbmc+ID0gSlND
OjpTcGVjU3RyaW5nOwordGVtcGxhdGU8PiBjb25zdGV4cHIgSlNDOjpTcGVjdWxhdGVkVHlwZSBJ
RExSZXN1bHRUeXBlRmlsdGVyPElETEJ5dGVTdHJpbmc+ID0gSlNDOjpTcGVjU3RyaW5nOwordGVt
cGxhdGU8PiBjb25zdGV4cHIgSlNDOjpTcGVjdWxhdGVkVHlwZSBJRExSZXN1bHRUeXBlRmlsdGVy
PElETFVTVlN0cmluZz4gPSBKU0M6OlNwZWNTdHJpbmc7CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+
Citjb25zdGV4cHIgSlNDOjpTcGVjdWxhdGVkVHlwZSBJRExSZXN1bHRUeXBlRmlsdGVyPElETE51
bGxhYmxlPFQ+PiA9IEpTQzo6U3BlY090aGVyIHwgSURMUmVzdWx0VHlwZUZpbHRlcjxUPjsKKwor
fSB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb21qaXQvSlNEb2N1bWVudERPTUpJVC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9kb21qaXQvSlNEb2N1bWVudERPTUpJVC5jcHAKaW5kZXggOWI0
OGQ5ZmRhNThhNjJkMDdmYjIzYWFiNDU2YmY5NGI3ZWQ4ZmMyZi4uYmJmZWU3ZGM0YmI3ODJlNzNj
ZjI3Yzk3N2JjMTgyOTRhNTk0YjZkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9taml0
L0pTRG9jdW1lbnRET01KSVQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbWppdC9KU0RvY3Vt
ZW50RE9NSklULmNwcApAQCAtNDgsNyArNDgsNiBAQCBSZWY8SlNDOjpET01KSVQ6OlBhdGNocG9p
bnQ+IERvY3VtZW50RG9jdW1lbnRFbGVtZW50RE9NSklUOjpjaGVja0RPTSgpCiAKIFJlZjxKU0M6
OkRPTUpJVDo6Q2FsbERPTUdldHRlclBhdGNocG9pbnQ+IERvY3VtZW50RG9jdW1lbnRFbGVtZW50
RE9NSklUOjpjYWxsRE9NR2V0dGVyKCkKIHsKLSAgICBjb25zdCBhdXRvJiBoZWFwID0gRE9NSklU
OjpBYnN0cmFjdEhlYXBSZXBvc2l0b3J5OjpzaGFyZWQoKTsKICAgICBSZWY8SlNDOjpET01KSVQ6
OkNhbGxET01HZXR0ZXJQYXRjaHBvaW50PiBwYXRjaHBvaW50ID0gSlNDOjpET01KSVQ6OkNhbGxE
T01HZXR0ZXJQYXRjaHBvaW50OjpjcmVhdGUoKTsKICAgICBwYXRjaHBvaW50LT5udW1HUFNjcmF0
Y2hSZWdpc3RlcnMgPSAxOwogICAgIHBhdGNocG9pbnQtPnNldEdlbmVyYXRvcihbPV0oQ0NhbGxI
ZWxwZXJzJiBqaXQsIEpTQzo6RE9NSklUOjpQYXRjaHBvaW50UGFyYW1zJiBwYXJhbXMpIHsKQEAg
LTcwLDcgKzY5LDcgQEAgUmVmPEpTQzo6RE9NSklUOjpDYWxsRE9NR2V0dGVyUGF0Y2hwb2ludD4g
RG9jdW1lbnREb2N1bWVudEVsZW1lbnRET01KSVQ6OmNhbGxET00KIAogICAgICAgICByZXR1cm4g
Q0NhbGxIZWxwZXJzOjpKdW1wTGlzdCgpOwogICAgIH0pOwotICAgIHBhdGNocG9pbnQtPmVmZmVj
dCA9IEpTQzo6RE9NSklUOjpFZmZlY3Q6OmZvckRlZihoZWFwLkRvY3VtZW50X2RvY3VtZW50RWxl
bWVudCk7CisgICAgcGF0Y2hwb2ludC0+ZWZmZWN0ID0gSlNDOjpET01KSVQ6OkVmZmVjdDo6Zm9y
RGVmKERPTUpJVDo6QWJzdHJhY3RIZWFwUmVwb3NpdG9yeTo6RG9jdW1lbnRfZG9jdW1lbnRFbGVt
ZW50KTsKICAgICByZXR1cm4gcGF0Y2hwb2ludDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZG9taml0L0pTTm9kZURPTUpJVC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb21qaXQvSlNO
b2RlRE9NSklULmNwcAppbmRleCAxZDc5MDFlYzQxZDdhY2VmMWQwZDc4ZjYxMzI2ZmJlOGExM2E5
MWJmLi5kYjMxMGVhMzQ1Mjg0OTE0MjQyOGQzZDYxNmY4MWIyYzY3YzUxNjU1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9kb21qaXQvSlNOb2RlRE9NSklULmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9kb21qaXQvSlNOb2RlRE9NSklULmNwcApAQCAtODMsOSArODMsOCBAQCBSZWY8SlNDOjpE
T01KSVQ6OlBhdGNocG9pbnQ+IE5vZGVGaXJzdENoaWxkRE9NSklUOjpjaGVja0RPTSgpCiAKIFJl
ZjxKU0M6OkRPTUpJVDo6Q2FsbERPTUdldHRlclBhdGNocG9pbnQ+IE5vZGVGaXJzdENoaWxkRE9N
SklUOjpjYWxsRE9NR2V0dGVyKCkKIHsKLSAgICBjb25zdCBhdXRvJiBoZWFwID0gRE9NSklUOjpB
YnN0cmFjdEhlYXBSZXBvc2l0b3J5OjpzaGFyZWQoKTsKICAgICBhdXRvIHBhdGNocG9pbnQgPSBj
cmVhdGVDYWxsRE9NR2V0dGVyRm9yT2Zmc2V0QWNjZXNzPE5vZGU+KENBU1RfT0ZGU0VUKE5vZGUq
LCBDb250YWluZXJOb2RlKikgKyBDb250YWluZXJOb2RlOjpmaXJzdENoaWxkTWVtb3J5T2Zmc2V0
KCksIElzQ29udGFpbmVyR3VhcmRSZXF1aXJlbWVudDo6UmVxdWlyZWQpOwotICAgIHBhdGNocG9p
bnQtPmVmZmVjdCA9IEpTQzo6RE9NSklUOjpFZmZlY3Q6OmZvckRlZihoZWFwLk5vZGVfZmlyc3RD
aGlsZCk7CisgICAgcGF0Y2hwb2ludC0+ZWZmZWN0ID0gSlNDOjpET01KSVQ6OkVmZmVjdDo6Zm9y
RGVmKERPTUpJVDo6QWJzdHJhY3RIZWFwUmVwb3NpdG9yeTo6Tm9kZV9maXJzdENoaWxkKTsKICAg
ICByZXR1cm4gcGF0Y2hwb2ludDsKIH0KIApAQCAtOTYsOSArOTUsOCBAQCBSZWY8SlNDOjpET01K
SVQ6OlBhdGNocG9pbnQ+IE5vZGVMYXN0Q2hpbGRET01KSVQ6OmNoZWNrRE9NKCkKIAogUmVmPEpT
Qzo6RE9NSklUOjpDYWxsRE9NR2V0dGVyUGF0Y2hwb2ludD4gTm9kZUxhc3RDaGlsZERPTUpJVDo6
Y2FsbERPTUdldHRlcigpCiB7Ci0gICAgY29uc3QgYXV0byYgaGVhcCA9IERPTUpJVDo6QWJzdHJh
Y3RIZWFwUmVwb3NpdG9yeTo6c2hhcmVkKCk7CiAgICAgYXV0byBwYXRjaHBvaW50ID0gY3JlYXRl
Q2FsbERPTUdldHRlckZvck9mZnNldEFjY2VzczxOb2RlPihDQVNUX09GRlNFVChOb2RlKiwgQ29u
dGFpbmVyTm9kZSopICsgQ29udGFpbmVyTm9kZTo6bGFzdENoaWxkTWVtb3J5T2Zmc2V0KCksIElz
Q29udGFpbmVyR3VhcmRSZXF1aXJlbWVudDo6UmVxdWlyZWQpOwotICAgIHBhdGNocG9pbnQtPmVm
ZmVjdCA9IEpTQzo6RE9NSklUOjpFZmZlY3Q6OmZvckRlZihoZWFwLk5vZGVfbGFzdENoaWxkKTsK
KyAgICBwYXRjaHBvaW50LT5lZmZlY3QgPSBKU0M6OkRPTUpJVDo6RWZmZWN0Ojpmb3JEZWYoRE9N
SklUOjpBYnN0cmFjdEhlYXBSZXBvc2l0b3J5OjpOb2RlX2xhc3RDaGlsZCk7CiAgICAgcmV0dXJu
IHBhdGNocG9pbnQ7CiB9CiAKQEAgLTEwOSw5ICsxMDcsOCBAQCBSZWY8SlNDOjpET01KSVQ6OlBh
dGNocG9pbnQ+IE5vZGVOZXh0U2libGluZ0RPTUpJVDo6Y2hlY2tET00oKQogCiBSZWY8SlNDOjpE
T01KSVQ6OkNhbGxET01HZXR0ZXJQYXRjaHBvaW50PiBOb2RlTmV4dFNpYmxpbmdET01KSVQ6OmNh
bGxET01HZXR0ZXIoKQogewotICAgIGNvbnN0IGF1dG8mIGhlYXAgPSBET01KSVQ6OkFic3RyYWN0
SGVhcFJlcG9zaXRvcnk6OnNoYXJlZCgpOwogICAgIGF1dG8gcGF0Y2hwb2ludCA9IGNyZWF0ZUNh
bGxET01HZXR0ZXJGb3JPZmZzZXRBY2Nlc3M8Tm9kZT4oTm9kZTo6bmV4dFNpYmxpbmdNZW1vcnlP
ZmZzZXQoKSwgSXNDb250YWluZXJHdWFyZFJlcXVpcmVtZW50OjpOb3RSZXF1aXJlZCk7Ci0gICAg
cGF0Y2hwb2ludC0+ZWZmZWN0ID0gSlNDOjpET01KSVQ6OkVmZmVjdDo6Zm9yRGVmKGhlYXAuTm9k
ZV9uZXh0U2libGluZyk7CisgICAgcGF0Y2hwb2ludC0+ZWZmZWN0ID0gSlNDOjpET01KSVQ6OkVm
ZmVjdDo6Zm9yRGVmKERPTUpJVDo6QWJzdHJhY3RIZWFwUmVwb3NpdG9yeTo6Tm9kZV9uZXh0U2li
bGluZyk7CiAgICAgcmV0dXJuIHBhdGNocG9pbnQ7CiB9CiAKQEAgLTEyMiw5ICsxMTksOCBAQCBS
ZWY8SlNDOjpET01KSVQ6OlBhdGNocG9pbnQ+IE5vZGVQcmV2aW91c1NpYmxpbmdET01KSVQ6OmNo
ZWNrRE9NKCkKIAogUmVmPEpTQzo6RE9NSklUOjpDYWxsRE9NR2V0dGVyUGF0Y2hwb2ludD4gTm9k
ZVByZXZpb3VzU2libGluZ0RPTUpJVDo6Y2FsbERPTUdldHRlcigpCiB7Ci0gICAgY29uc3QgYXV0
byYgaGVhcCA9IERPTUpJVDo6QWJzdHJhY3RIZWFwUmVwb3NpdG9yeTo6c2hhcmVkKCk7CiAgICAg
YXV0byBwYXRjaHBvaW50ID0gY3JlYXRlQ2FsbERPTUdldHRlckZvck9mZnNldEFjY2VzczxOb2Rl
PihOb2RlOjpwcmV2aW91c1NpYmxpbmdNZW1vcnlPZmZzZXQoKSwgSXNDb250YWluZXJHdWFyZFJl
cXVpcmVtZW50OjpOb3RSZXF1aXJlZCk7Ci0gICAgcGF0Y2hwb2ludC0+ZWZmZWN0ID0gSlNDOjpE
T01KSVQ6OkVmZmVjdDo6Zm9yRGVmKGhlYXAuTm9kZV9wcmV2aW91c1NpYmxpbmcpOworICAgIHBh
dGNocG9pbnQtPmVmZmVjdCA9IEpTQzo6RE9NSklUOjpFZmZlY3Q6OmZvckRlZihET01KSVQ6OkFi
c3RyYWN0SGVhcFJlcG9zaXRvcnk6Ok5vZGVfcHJldmlvdXNTaWJsaW5nKTsKICAgICByZXR1cm4g
cGF0Y2hwb2ludDsKIH0KIApAQCAtMTM1LDkgKzEzMSw4IEBAIFJlZjxKU0M6OkRPTUpJVDo6UGF0
Y2hwb2ludD4gTm9kZVBhcmVudE5vZGVET01KSVQ6OmNoZWNrRE9NKCkKIAogUmVmPEpTQzo6RE9N
SklUOjpDYWxsRE9NR2V0dGVyUGF0Y2hwb2ludD4gTm9kZVBhcmVudE5vZGVET01KSVQ6OmNhbGxE
T01HZXR0ZXIoKQogewotICAgIGNvbnN0IGF1dG8mIGhlYXAgPSBET01KSVQ6OkFic3RyYWN0SGVh
cFJlcG9zaXRvcnk6OnNoYXJlZCgpOwogICAgIGF1dG8gcGF0Y2hwb2ludCA9IGNyZWF0ZUNhbGxE
T01HZXR0ZXJGb3JPZmZzZXRBY2Nlc3M8Q29udGFpbmVyTm9kZT4oTm9kZTo6cGFyZW50Tm9kZU1l
bW9yeU9mZnNldCgpLCBJc0NvbnRhaW5lckd1YXJkUmVxdWlyZW1lbnQ6Ok5vdFJlcXVpcmVkKTsK
LSAgICBwYXRjaHBvaW50LT5lZmZlY3QgPSBKU0M6OkRPTUpJVDo6RWZmZWN0Ojpmb3JEZWYoaGVh
cC5Ob2RlX3BhcmVudE5vZGUpOworICAgIHBhdGNocG9pbnQtPmVmZmVjdCA9IEpTQzo6RE9NSklU
OjpFZmZlY3Q6OmZvckRlZihET01KSVQ6OkFic3RyYWN0SGVhcFJlcG9zaXRvcnk6Ok5vZGVfcGFy
ZW50Tm9kZSk7CiAgICAgcmV0dXJuIHBhdGNocG9pbnQ7CiB9CiAKQEAgLTE2OSw3ICsxNjQsNiBA
QCBSZWY8SlNDOjpET01KSVQ6OlBhdGNocG9pbnQ+IE5vZGVPd25lckRvY3VtZW50RE9NSklUOjpj
aGVja0RPTSgpCiAKIFJlZjxKU0M6OkRPTUpJVDo6Q2FsbERPTUdldHRlclBhdGNocG9pbnQ+IE5v
ZGVPd25lckRvY3VtZW50RE9NSklUOjpjYWxsRE9NR2V0dGVyKCkKIHsKLSAgICBjb25zdCBhdXRv
JiBoZWFwID0gRE9NSklUOjpBYnN0cmFjdEhlYXBSZXBvc2l0b3J5OjpzaGFyZWQoKTsKICAgICBS
ZWY8SlNDOjpET01KSVQ6OkNhbGxET01HZXR0ZXJQYXRjaHBvaW50PiBwYXRjaHBvaW50ID0gSlND
OjpET01KSVQ6OkNhbGxET01HZXR0ZXJQYXRjaHBvaW50OjpjcmVhdGUoKTsKICAgICBwYXRjaHBv
aW50LT5udW1HUFNjcmF0Y2hSZWdpc3RlcnMgPSAxOwogICAgIHBhdGNocG9pbnQtPnNldEdlbmVy
YXRvcihbPV0oQ0NhbGxIZWxwZXJzJiBqaXQsIEpTQzo6RE9NSklUOjpQYXRjaHBvaW50UGFyYW1z
JiBwYXJhbXMpIHsKQEAgLTE5MSw3ICsxODUsNyBAQCBSZWY8SlNDOjpET01KSVQ6OkNhbGxET01H
ZXR0ZXJQYXRjaHBvaW50PiBOb2RlT3duZXJEb2N1bWVudERPTUpJVDo6Y2FsbERPTUdldHRlcgog
ICAgICAgICBkb25lLmxpbmsoJmppdCk7CiAgICAgICAgIHJldHVybiBDQ2FsbEhlbHBlcnM6Okp1
bXBMaXN0KCk7CiAgICAgfSk7Ci0gICAgcGF0Y2hwb2ludC0+ZWZmZWN0ID0gSlNDOjpET01KSVQ6
OkVmZmVjdDo6Zm9yRGVmKGhlYXAuTm9kZV9vd25lckRvY3VtZW50KTsKKyAgICBwYXRjaHBvaW50
LT5lZmZlY3QgPSBKU0M6OkRPTUpJVDo6RWZmZWN0Ojpmb3JEZWYoRE9NSklUOjpBYnN0cmFjdEhl
YXBSZXBvc2l0b3J5OjpOb2RlX293bmVyRG9jdW1lbnQpOwogICAgIHJldHVybiBwYXRjaHBvaW50
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb21qaXQvZ2VuZXJhdGUtYWJzdHJh
Y3QtaGVhcC5yYiBiL1NvdXJjZS9XZWJDb3JlL2RvbWppdC9nZW5lcmF0ZS1hYnN0cmFjdC1oZWFw
LnJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmI3NDEyZTg1ZDY5ZjQ5MWEyZWFhYmFhNjE3OGYxYjI1YTAyZDA5YjQK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb21qaXQvZ2VuZXJhdGUtYWJzdHJh
Y3QtaGVhcC5yYgpAQCAtMCwwICsxLDE2NSBAQAorIyEvdXNyL2Jpbi9lbnYgcnVieQorIyAtKi0g
Y29kaW5nOiB1dGYtOCAtKi0KKyMgQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0Ogor
IyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMg
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworIyBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyMgVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorIyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorIyBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorIyBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyMgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyMgQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyMgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorIyBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisK
K3JlcXVpcmUgInlhbWwiCisKK2NsYXNzIEhlYXBSYW5nZQorICAgIGF0dHJfcmVhZGVyIDpmaXJz
dCwgOmxhc3QKKyAgICBkZWYgaW5pdGlhbGl6ZShmaXJzdCwgbGFzdCkKKyAgICAgICAgQGZpcnN0
ID0gZmlyc3QKKyAgICAgICAgQGxhc3QgPSBsYXN0CisgICAgZW5kCitlbmQKKworY2xhc3MgQWJz
dHJhY3RIZWFwCisgICAgYXR0cl9yZWFkZXIgOnJhbmdlLCA6bmFtZSwgOnBhcmVudAorICAgIGRl
ZiBpbml0aWFsaXplKG5hbWUsIHRyZWUpCisgICAgICAgIEBuYW1lID0gbmFtZQorICAgICAgICBA
cGFyZW50ID0gbmlsCisgICAgICAgIGlmIHRyZWUubmlsPworICAgICAgICAgICAgQGNoaWxkcmVu
ID0gW10KKyAgICAgICAgZWxzZQorICAgICAgICAgICAgQGNoaWxkcmVuID0gdHJlZS5tYXAge3xr
ZXksIHZhbHVlfCBBYnN0cmFjdEhlYXAubmV3KGtleSwgdmFsdWUpIH0KKyAgICAgICAgZW5kCisg
ICAgICAgIEByYW5nZSA9IG5pbAorICAgIGVuZAorCisgICAgZGVmIHNldFBhcmVudChwYXJlbnQp
CisgICAgICAgIHBhcmVudC5jaGlsZHJlbi5wdXNoKHNlbGYpCisgICAgICAgIEBwYXJlbnQgPSBw
YXJlbnQKKyAgICBlbmQKKworICAgIGRlZiBjb21wdXRlKHN0YXJ0KQorICAgICAgICBjdXJyZW50
ID0gc3RhcnQKKyAgICAgICAgaWYgQGNoaWxkcmVuLmVtcHR5PworICAgICAgICAgICAgQHJhbmdl
ID0gSGVhcFJhbmdlLm5ldyhzdGFydCwgY3VycmVudCArIDEpCisgICAgICAgICAgICByZXR1cm4K
KyAgICAgICAgZW5kCisKKyAgICAgICAgQGNoaWxkcmVuLmVhY2gge3xjaGlsZHwKKyAgICAgICAg
ICAgIGNoaWxkLmNvbXB1dGUoY3VycmVudCkKKyAgICAgICAgICAgIGN1cnJlbnQgPSBjaGlsZC5y
YW5nZS5sYXN0CisgICAgICAgIH0KKworICAgICAgICBAcmFuZ2UgPSBIZWFwUmFuZ2UubmV3KHN0
YXJ0LCBjdXJyZW50KQorICAgIGVuZAorCisgICAgZGVmIGR1bXAgb3V0cHV0CisgICAgICAgIHNo
YWxsb3dEdW1wKG91dHB1dCkKKyAgICAgICAgaWYgQHBhcmVudAorICAgICAgICAgICAgb3V0cHV0
LnByaW50ICItPiAiCisgICAgICAgICAgICBAcGFyZW50LmR1bXAob3V0cHV0KQorICAgICAgICBl
bmQKKyAgICBlbmQKKworICAgIGRlZiBzaGFsbG93RHVtcChvdXRwdXQpCisgICAgICAgIG91dHB1
dC5wcmludCAiI3tAbmFtZX08I3tAcmFuZ2UuZmlyc3R9LCN7QHJhbmdlLmxhc3R9PiIKKyAgICBl
bmQKKworICAgIGRlZiBkZWVwRHVtcCBvdXRwdXQsIGluZGVudAorICAgICAgICBwcmludEluZGVu
dChvdXRwdXQsIGluZGVudCkKKyAgICAgICAgc2hhbGxvd0R1bXAob3V0cHV0KQorICAgICAgICBp
ZiBAY2hpbGRyZW4uZW1wdHk/CisgICAgICAgICAgICBvdXRwdXQucHJpbnQgIlxuIgorICAgICAg
ICAgICAgcmV0dXJuCisgICAgICAgIGVuZAorCisgICAgICAgIG91dHB1dC5wcmludCAiOlxuIgor
ICAgICAgICBAY2hpbGRyZW4uZWFjaCB7fGNoaWxkfAorICAgICAgICAgICAgY2hpbGQuZGVlcER1
bXAob3V0cHV0LCBpbmRlbnQgKyAxKQorICAgICAgICB9CisgICAgZW5kCisKKyAgICBkZWYgZ2Vu
ZXJhdGUgb3V0cHV0CisgICAgICAgIG91dHB1dC5wdXRzICJjb25zdGV4cHIgSlNDOjpET01KSVQ6
OkhlYXBSYW5nZSAje0BuYW1lfShKU0M6OkRPTUpJVDo6SGVhcFJhbmdlOjpDb25zdEV4cHIsICN7
QHJhbmdlLmZpcnN0fSwgI3tAcmFuZ2UubGFzdH0pOyIKKyAgICAgICAgQGNoaWxkcmVuLmVhY2gg
e3xjaGlsZHwKKyAgICAgICAgICAgIGNoaWxkLmdlbmVyYXRlKG91dHB1dCkKKyAgICAgICAgfQor
ICAgIGVuZAorCitwcml2YXRlCisgICAgZGVmIHByaW50SW5kZW50IG91dHB1dCwgaW5kZW50Cisg
ICAgICAgIGluZGVudC50aW1lcyB7CisgICAgICAgICAgICBvdXRwdXQucHJpbnQgIiAgICAiCisg
ICAgICAgIH0KKyAgICBlbmQKK2VuZAorCitoZWFkZXIgPSA8PC1FT1MKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworLy8gQXV0by1nZW5lcmF0ZWQgZmlsZS4gRG8g
bm90IG1vZGlmeS4KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDxkb21qaXQvRE9NSklUSGVh
cFJhbmdlLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsgbmFtZXNwYWNlIERPTUpJVCB7IG5hbWVz
cGFjZSBBYnN0cmFjdEhlYXBSZXBvc2l0b3J5IHsKK0VPUworCitmb290ZXIgPSA8PC1FT1MKK30g
fSB9CitFT1MKKworJGlucHV0RmlsZU5hbWUgPSBBUkdWLnNoaWZ0Ciskb3V0cHV0RmlsZU5hbWUg
PSBBUkdWLnNoaWZ0CitGaWxlLm9wZW4oJG91dHB1dEZpbGVOYW1lLCAidyIpIHt8b3V0cHV0fAor
ICAgIEZpbGUub3BlbigkaW5wdXRGaWxlTmFtZSwgInJiIikge3xmaWxlfAorICAgICAgICB0cmVl
ID0gWUFNTDo6bG9hZChmaWxlLnJlYWQoKSkKKyAgICAgICAgaGVhcCA9IHRyZWUubWFwIHt8a2V5
LCB2YWx1ZXwKKyAgICAgICAgICAgIEFic3RyYWN0SGVhcC5uZXcoa2V5LCB2YWx1ZSkKKyAgICAg
ICAgfS5maXJzdAorICAgICAgICBoZWFwLmNvbXB1dGUoMCkKKworICAgICAgICBvdXRwdXQucHJp
bnQoaGVhZGVyKQorICAgICAgICBvdXRwdXQucHV0cygiLyogRE9NSklUIEFic3RyYWN0IEhlYXAg
VHJlZS4iKQorICAgICAgICBoZWFwLmRlZXBEdW1wKG91dHB1dCwgMCkKKyAgICAgICAgb3V0cHV0
LnB1dHMoIiovIikKKyAgICAgICAgaGVhcC5nZW5lcmF0ZShvdXRwdXQpCisgICAgICAgIG91dHB1
dC5wcmludChmb290ZXIpCisgICAgfQorfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDQ3YmRhYjQxNDhlMmViMmUwODQ0OWZk
OGMyNzU5Y2M2ZGI4ZjNjZmEuLmFiN2I0NzI3YjVkMDcxNTc2NmI3Zjg5OWJjMDYwOWQ5Y2Y3NmQz
MTYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwyMiBAQAorMjAxNi0xMS0wMSAgWXVzdWtlIFN1enVraSAgPHV0
YXRhbmUudGVhQGdtYWlsLmNvbT4KKworICAgICAgICBbRE9NSklUXSBBZGQgRE9NSklUOjpTaWdu
YXR1cmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2
Mjk4MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
anMvZG9tL2RvbWppdC1hY2Nlc3Nvci1saWNtLmh0bWw6CisgICAgICAgICoganMvZG9tL2RvbWpp
dC1mdW5jdGlvbi1lZmZlY3Qtc2hvdWxkLW92ZXJsYXAtd2l0aC1jYWxsLWV4cGVjdGVkLnR4dDog
QWRkZWQuCisgICAgICAgICoganMvZG9tL2RvbWppdC1mdW5jdGlvbi1lZmZlY3Qtc2hvdWxkLW92
ZXJsYXAtd2l0aC1jYWxsLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGpzL2RvbS9kb21qaXQtZnVu
Y3Rpb24tZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBqcy9kb20vZG9taml0LWZ1bmN0
aW9uLWxpY20tZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBqcy9kb20vZG9taml0LWZ1
bmN0aW9uLWxpY20uaHRtbDogQ29waWVkIGZyb20gTGF5b3V0VGVzdHMvanMvZG9tL2RvbWppdC1h
Y2Nlc3Nvci1saWNtLmh0bWwuCisgICAgICAgICoganMvZG9tL2RvbWppdC1mdW5jdGlvbi10eXBl
LWNvbnRyYWRpY3Rpb24tZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBqcy9kb20vZG9t
aml0LWZ1bmN0aW9uLXR5cGUtY29udHJhZGljdGlvbi5odG1sOiBDb3BpZWQgZnJvbSBMYXlvdXRU
ZXN0cy9qcy9kb20vZG9taml0LWFjY2Vzc29yLWxpY20uaHRtbC4KKyAgICAgICAgKiBqcy9kb20v
ZG9taml0LWZ1bmN0aW9uLXR5cGUtZmFpbHVyZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAg
ICAqIGpzL2RvbS9kb21qaXQtZnVuY3Rpb24tdHlwZS1mYWlsdXJlLmh0bWw6IENvcGllZCBmcm9t
IExheW91dFRlc3RzL2pzL2RvbS9kb21qaXQtYWNjZXNzb3ItbGljbS5odG1sLgorICAgICAgICAq
IGpzL2RvbS9kb21qaXQtZnVuY3Rpb24uaHRtbDogQWRkZWQuCisKIDIwMTYtMTEtMDEgIEJyYWR5
IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgogCiAgICAgICAgIEluZGV4ZWREQiAyLjA6IFN1
cHBvcnQgSURCSW5kZXggZ2V0QWxsL2dldEFsbEtleXMuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9qcy9kb20vZG9taml0LWFjY2Vzc29yLWxpY20uaHRtbCBiL0xheW91dFRlc3RzL2pzL2RvbS9k
b21qaXQtYWNjZXNzb3ItbGljbS5odG1sCmluZGV4IGU1NjNlYmE4OWZmY2RhMjkxYjUyNGRjZGY3
NTBlMmEzMDZhZTMyMDUuLjQwZDU1NjBkYTA1MzljYmYwODRhOWUxZDFlZjNmZTNmMWRjMzU0NGQg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2pzL2RvbS9kb21qaXQtYWNjZXNzb3ItbGljbS5odG1s
CisrKyBiL0xheW91dFRlc3RzL2pzL2RvbS9kb21qaXQtYWNjZXNzb3ItbGljbS5odG1sCkBAIC0x
LDE0ICsxLDMgQEAKLTwhRE9DVFlQRSBIVE1MPgotPGh0bWwgbGFuZz0iZW4iPgotPGhlYWQ+Ci08
bWV0YSBjaGFyc2V0PSJVVEYtOCI+Ci08L2hlYWQ+Ci08Ym9keT4KLTxzY3JpcHQ+Ci0KLTwvc2Ny
aXB0PgotPC9ib2R5PgotPC9odG1sPgogPCFET0NUWVBFIGh0bWw+CiA8aHRtbD4KIDxoZWFkPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvZG9tL2RvbWppdC1mdW5jdGlvbi1lZmZlY3Qtc2hv
dWxkLW92ZXJsYXAtd2l0aC1jYWxsLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2pzL2RvbS9k
b21qaXQtZnVuY3Rpb24tZWZmZWN0LXNob3VsZC1vdmVybGFwLXdpdGgtY2FsbC1leHBlY3RlZC50
eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uMTFkYzE5NmEzMmUyODhjMTJmNTE0NTYxY2ZjMjE0ZDI5ZWI5YzgxNwot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2pzL2RvbS9kb21qaXQtZnVuY3Rpb24tZWZm
ZWN0LXNob3VsZC1vdmVybGFwLXdpdGgtY2FsbC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMCBA
QAorVGVzdCBmdW5jdGlvbiBjYWxscyBzaG91bGQgb3ZlcmxhcCB3aXRoIGVmZmVjdHMgb2YgRE9N
SklUIGZ1bmN0aW9ucy4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQ
QVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1MgdGVz
dCgpIGlzIHRydWUKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01Q
TEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9kb20vZG9taml0LWZ1bmN0aW9uLWVm
ZmVjdC1zaG91bGQtb3ZlcmxhcC13aXRoLWNhbGwuaHRtbCBiL0xheW91dFRlc3RzL2pzL2RvbS9k
b21qaXQtZnVuY3Rpb24tZWZmZWN0LXNob3VsZC1vdmVybGFwLXdpdGgtY2FsbC5odG1sCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjI4Y2IzOTJiMjk0MWJiYjhkMzMxYTc5MzMxZDU4YzNmYTU4MzA1ZTUKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9qcy9kb20vZG9taml0LWZ1bmN0aW9uLWVmZmVjdC1zaG91
bGQtb3ZlcmxhcC13aXRoLWNhbGwuaHRtbApAQCAtMCwwICsxLDMzIEBACis8IURPQ1RZUEUgaHRt
bD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qt
cHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0idGFyZ2V0Ij48L2Rp
dj4KKzwvZGl2PgorCis8c2NyaXB0PgorZGVzY3JpcHRpb24oJ1Rlc3QgZnVuY3Rpb24gY2FsbHMg
c2hvdWxkIG92ZXJsYXAgd2l0aCBlZmZlY3RzIG9mIERPTUpJVCBmdW5jdGlvbnMuJyk7CisKK2Z1
bmN0aW9uIHRlc3QoKQoreworICAgIHZhciB0YXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgndGFyZ2V0Jyk7CisgICAgdGFyZ2V0LnNldEF0dHJpYnV0ZSgiY29jb2EiLCAiMCIpOworICAg
IGZvciAodmFyIGkgPSAwOyBpIDwgMWU0OyArK2kpIHsKKyAgICAgICAgdmFyIHJldCA9IHRhcmdl
dC5nZXRBdHRyaWJ1dGUoImNvY29hIik7CisgICAgICAgIGlmIChyZXQgIT09IFN0cmluZyhpKSkK
KyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgdGFyZ2V0LnNldEF0dHJpYnV0ZSgi
Y29jb2EiLCBTdHJpbmcoaSArIDEpKTsKKyAgICAgICAgdmFyIHJldCA9IHRhcmdldC5nZXRBdHRy
aWJ1dGUoImNvY29hIik7CisgICAgICAgIGlmIChyZXQgPT09IFN0cmluZyhpKSkKKyAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3Nob3VsZEJl
VHJ1ZShgdGVzdCgpYCk7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMv
anMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2pzL2RvbS9kb21qaXQtZnVuY3Rpb24tZXhwZWN0ZWQudHh0IGIvTGF5b3V0
VGVzdHMvanMvZG9tL2RvbWppdC1mdW5jdGlvbi1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDVl
NTZlYmRjZDlmNmYxODZjNDdjZTc2OGMxNWMyMjVlYmUyZDBjNwotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2pzL2RvbS9kb21qaXQtZnVuY3Rpb24tZXhwZWN0ZWQudHh0CkBAIC0wLDAg
KzEsMTAgQEAKK1Rlc3QgRE9NSklUIGZ1bmN0aW9ucyB3b3JrLgorCitPbiBzdWNjZXNzLCB5b3Ug
d2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBD
T01QTEVURSIuCisKKworUEFTUyBBbGwgdGVzdHMgcGFzc2VkLgorUEFTUyBzdWNjZXNzZnVsbHlQ
YXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2pzL2RvbS9kb21qaXQtZnVuY3Rpb24tbGljbS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9q
cy9kb20vZG9taml0LWZ1bmN0aW9uLWxpY20tZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmYxM2Mw
MzMwNTk2NjJlNTU4YmM2ZmI5ZDczOWFiMzdlNzk2MWM4ZmIKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9qcy9kb20vZG9taml0LWZ1bmN0aW9uLWxpY20tZXhwZWN0ZWQudHh0CkBAIC0w
LDAgKzEsOCBAQAorVGVzdCBET01KSVQgZnVuY3Rpb24gd2lsbCBiZSBMSUNNLWVkLgorCitPbiBz
dWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dl
ZCBieSAiVEVTVCBDT01QTEVURSIuCisKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUK
KworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9kb20vZG9taml0
LWZ1bmN0aW9uLWxpY20uaHRtbCBiL0xheW91dFRlc3RzL2pzL2RvbS9kb21qaXQtZnVuY3Rpb24t
bGljbS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjVmMmUzOTlkZDM1OWUxYzRmY2I0ZGZkZTJiYWNlOWUxYTBk
NDRkMzkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9qcy9kb20vZG9taml0LWZ1bmN0
aW9uLWxpY20uaHRtbApAQCAtMCwwICsxLDM1IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgor
PGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3Nj
cmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRp
diBpZD0iY29uc29sZSI+PC9kaXY+CisKKzxkaXYgaWQ9InBhcmVudE5vZGUiPgorPGRpdiBpZD0i
cHJldmlvdXNTaWJsaW5nIj48L2Rpdj48ZGl2IGlkPSJ0YXJnZXQiPjxkaXYgaWQ9ImZpcnN0Q2hp
bGQiPjwvZGl2PjxkaXYgaWQ9Imxhc3RDaGlsZCI+PC9kaXY+PC9kaXY+PGRpdiBpZD0ibmV4dFNp
YmxpbmciPjwvZGl2PgorPC9kaXY+CisKKzxzY3JpcHQ+CitkZXNjcmlwdGlvbignVGVzdCBET01K
SVQgZnVuY3Rpb24gd2lsbCBiZSBMSUNNLWVkLicpOworCitmdW5jdGlvbiB0ZXN0KCkgeworICAg
IHZhciBkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKKyAgICB2YXIgcmV0ID0g
ImludmFsaWQiOworICAgIGRpdi5zZXRBdHRyaWJ1dGUoImNvY29hIiwgIkNvY29hIik7CisgICAg
Zm9yICh2YXIgaSA9IDA7IGkgPCAxZTQ7ICsraSkKKyAgICAgICAgcmV0ID0gZGl2LmdldEF0dHJp
YnV0ZSgiY29jb2EiKTsKKyAgICByZXR1cm4gcmV0OworfQordmFyIHJlc3VsdDsKKyhmdW5jdGlv
biAoKSB7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxMDA7ICsraSkgeworICAgICAgICByZXN1
bHQgPSB0ZXN0KCk7CisgICAgICAgIHNob3VsZEJlKGByZXN1bHRgLCBgIkNvY29hImAsIHRydWUp
OworICAgIH0KK30oKSk7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMv
anMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2pzL2RvbS9kb21qaXQtZnVuY3Rpb24tdHlwZS1jb250cmFkaWN0aW9uLWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2pzL2RvbS9kb21qaXQtZnVuY3Rpb24tdHlwZS1jb250
cmFkaWN0aW9uLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zZDY4NzdkNGE4MDA2ODhiMjE2Nzdi
ZWZhZmZlZWZmZDhhYjBiNzk2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMvZG9t
L2RvbWppdC1mdW5jdGlvbi10eXBlLWNvbnRyYWRpY3Rpb24tZXhwZWN0ZWQudHh0CkBAIC0wLDAg
KzEsOCBAQAorVGVzdCBET01KSVQgZnVuY3Rpb24gd2lsbCBjYXVzZSB0eXBlIGNvbnRyYWRpY3Rp
b24gZ2l2aW5nIHVwLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBB
U1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKK1BBU1Mgc3VjY2Vz
c2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9qcy9kb20vZG9taml0LWZ1bmN0aW9uLXR5cGUtY29udHJhZGljdGlvbi5odG1sIGIv
TGF5b3V0VGVzdHMvanMvZG9tL2RvbWppdC1mdW5jdGlvbi10eXBlLWNvbnRyYWRpY3Rpb24uaHRt
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi44NGRjNWI2NzY5NDE4ZTk2NTU1YmFiODM4N2MzMDYwMzRhZjVjMGMwCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMvZG9tL2RvbWppdC1mdW5jdGlvbi10eXBl
LWNvbnRyYWRpY3Rpb24uaHRtbApAQCAtMCwwICsxLDM1IEBACis8IURPQ1RZUEUgaHRtbD4KKzxo
dG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpz
Ij48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2
PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisKKzxkaXYgaWQ9InBhcmVudE5vZGUiPgorPGRp
diBpZD0icHJldmlvdXNTaWJsaW5nIj48L2Rpdj48ZGl2IGlkPSJ0YXJnZXQiPjxkaXYgaWQ9ImZp
cnN0Q2hpbGQiPjwvZGl2PjxkaXYgaWQ9Imxhc3RDaGlsZCI+PC9kaXY+PC9kaXY+PGRpdiBpZD0i
bmV4dFNpYmxpbmciPjwvZGl2PgorPC9kaXY+CisKKzxzY3JpcHQ+CitkZXNjcmlwdGlvbignVGVz
dCBET01KSVQgZnVuY3Rpb24gd2lsbCBjYXVzZSB0eXBlIGNvbnRyYWRpY3Rpb24gZ2l2aW5nIHVw
LicpOworCit2YXIgZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CitkaXYuc2V0
QXR0cmlidXRlKCJjb2NvYSIsICJDb2NvYSIpOworZnVuY3Rpb24gdGVzdChkaXYpIHsKKyAgICB2
YXIgcmV0ID0gImludmFsaWQiOworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMWU0OyArK2kpCisg
ICAgICAgIHJldCA9IGRpdi5nZXRBdHRyaWJ1dGUoMjAwKTsKKyAgICByZXR1cm4gcmV0OworfQor
dmFyIHJlc3VsdDsKKyhmdW5jdGlvbiAoKSB7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxMDA7
ICsraSkgeworICAgICAgICByZXN1bHQgPSB0ZXN0KGRpdik7CisgICAgICAgIHNob3VsZEJlKGBy
ZXN1bHRgLCBgbnVsbGAsIHRydWUpOworICAgIH0KK30oKSk7Cis8L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4K
KzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL2RvbS9kb21qaXQtZnVuY3Rpb24t
dHlwZS1mYWlsdXJlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2pzL2RvbS9kb21qaXQtZnVu
Y3Rpb24tdHlwZS1mYWlsdXJlLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yYzEwMmIzNzZiZjgy
MzJiNDJiZDFhM2NlNDFkZTE3NzFhMjdiNmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvanMvZG9tL2RvbWppdC1mdW5jdGlvbi10eXBlLWZhaWx1cmUtZXhwZWN0ZWQudHh0CkBAIC0w
LDAgKzEsOCBAQAorVGVzdCBET01KSVQgZnVuY3Rpb24gd2lsbCBjYXVzZSBCYWRUeXBlIE9TUiBl
eGl0cy4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNz
YWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCitQQVNTIHN1Y2Nlc3NmdWxseVBh
cnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
anMvZG9tL2RvbWppdC1mdW5jdGlvbi10eXBlLWZhaWx1cmUuaHRtbCBiL0xheW91dFRlc3RzL2pz
L2RvbS9kb21qaXQtZnVuY3Rpb24tdHlwZS1mYWlsdXJlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmI3NjYx
NDE4N2VkYTg3ZGFjMjZjMjBhNmUzMTIyY2YwNjU0YTgxNgotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2pzL2RvbS9kb21qaXQtZnVuY3Rpb24tdHlwZS1mYWlsdXJlLmh0bWwKQEAgLTAs
MCArMSwzOSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9
Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9k
eT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2
PgorCis8ZGl2IGlkPSJwYXJlbnROb2RlIj4KKzxkaXYgaWQ9InByZXZpb3VzU2libGluZyI+PC9k
aXY+PGRpdiBpZD0idGFyZ2V0Ij48ZGl2IGlkPSJmaXJzdENoaWxkIj48L2Rpdj48ZGl2IGlkPSJs
YXN0Q2hpbGQiPjwvZGl2PjwvZGl2PjxkaXYgaWQ9Im5leHRTaWJsaW5nIj48L2Rpdj4KKzwvZGl2
PgorCis8c2NyaXB0PgorZGVzY3JpcHRpb24oJ1Rlc3QgRE9NSklUIGZ1bmN0aW9uIHdpbGwgY2F1
c2UgQmFkVHlwZSBPU1IgZXhpdHMuJyk7CisKK3ZhciBkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCdkaXYnKTsKK2Rpdi5zZXRBdHRyaWJ1dGUoImNvY29hIiwgIkNvY29hIik7CitmdW5jdGlv
biB0ZXN0KGRpdiwgbmFtZSkgeworICAgIHZhciByZXQgPSAiaW52YWxpZCI7CisgICAgZm9yICh2
YXIgaSA9IDA7IGkgPCAxZTQ7ICsraSkKKyAgICAgICAgcmV0ID0gZGl2LmdldEF0dHJpYnV0ZShu
YW1lKTsKKyAgICByZXR1cm4gcmV0OworfQordmFyIHJlc3VsdDsKKyhmdW5jdGlvbiAoKSB7Cisg
ICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxMDA7ICsraSkgeworICAgICAgICByZXN1bHQgPSB0ZXN0
KGRpdiwgJ2NvY29hJyk7CisgICAgICAgIHNob3VsZEJlKGByZXN1bHRgLCBgIkNvY29hImAsIHRy
dWUpOworICAgIH0KKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IDEwMDsgKytpKSB7CisgICAgICAg
IHJlc3VsdCA9IHRlc3QoZGl2LCA0MDApOworICAgICAgICBzaG91bGRCZShgcmVzdWx0YCwgYG51
bGxgLCB0cnVlKTsKKyAgICB9Cit9KCkpOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
cmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9kb20vZG9taml0LWZ1bmN0aW9uLmh0bWwgYi9MYXlv
dXRUZXN0cy9qcy9kb20vZG9taml0LWZ1bmN0aW9uLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTFlYThhNTk5
ZDg5NjVkZTVhMDNhODU0ZDQ5NDNkZTViOWFjM2Q2NAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2pzL2RvbS9kb21qaXQtZnVuY3Rpb24uaHRtbApAQCAtMCwwICsxLDU4IEBACis8IURP
Q1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2Vz
L2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0idGFy
Z2V0IiBjb2NvYT0iY29jb2EiPjxkaXYgaWQ9ImZpcnN0Q2hpbGQiPjwvZGl2PjxkaXYgaWQ9Imxh
c3RDaGlsZCI+PC9kaXY+PC9kaXY+Cis8L2Rpdj4KKworPHNjcmlwdD4KK2Rlc2NyaXB0aW9uKCdU
ZXN0IERPTUpJVCBmdW5jdGlvbnMgd29yay4nKTsKK3ZhciBkaXY7CisoZnVuY3Rpb24gKCkgewor
ICAgIGRpdiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0YXJnZXQnKTsKKworICAgIGZ1bmN0
aW9uIGEoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGRpdi5nZXRBdHRyaWJ1dGUoJ2NvY29hJykg
PT09ICdjb2NvYSc7CisgICAgfQorCisgICAgZnVuY3Rpb24gYigpCisgICAgeworICAgICAgICBy
ZXR1cm4gZGl2LmdldEF0dHJpYnV0ZU5vZGUoJ2NvY29hJykubm9kZVR5cGUgPT09IE5vZGUuQVRU
UklCVVRFX05PREU7CisgICAgfQorCisgICAgZnVuY3Rpb24gYygpCisgICAgeworICAgICAgICBy
ZXR1cm4gZGl2LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdkaXYnKS5sZW5ndGggPT09IDI7CisgICAg
fQorCisgICAgZnVuY3Rpb24gZCgpCisgICAgeworICAgICAgICByZXR1cm4gZGl2Lmhhc0F0dHJp
YnV0ZSgnY29jb2EnKSA9PT0gdHJ1ZTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBtYWluKCkKKyAg
ICB7CisgICAgICAgIGlmICghYSgpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAg
ICBpZiAoIWIoKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgaWYgKCFjKCkp
CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIGlmICghZCgpKQorICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICBmb3Ig
KHZhciBpID0gMDsgaSA8IDFlNDsgKytpKSB7CisgICAgICAgIGlmICghbWFpbigpKQorICAgICAg
ICAgICAgdGhyb3cgbmV3IEVycm9yKCJlcnJvciIpOworICAgIH0KKyAgICB0ZXN0UGFzc2VkKCJB
bGwgdGVzdHMgcGFzc2VkLiIpOworfSgpKTsKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4u
L3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>293642</attachid>
            <date>2016-11-01 23:41:02 -0700</date>
            <delta_ts>2016-11-01 23:50:50 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-162980-20161102153702.patch</filename>
            <type>text/plain</type>
            <size>177971</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA4MjcwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBk
ZWFmOGMwYmI4YTZkOGM5ZjEwYmE4MDllY2VmZTJkOWI0MDE2ZDljLi5iMWNmN2YxMjIzOWFhMDMy
YTg1NTY3MmI5YmUwZTA4N2Y4NTE2ZDE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMzMgQEAKKzIwMTYtMTEtMDEgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFp
bC5jb20+CisKKyAgICAgICAgW0RPTUpJVF0gQWRkIERPTUpJVDo6U2lnbmF0dXJlCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjI5ODAKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGludHJv
ZHVjZXMgYSBuZXcgbWVjaGFuaXNtIGNhbGxlZCBET01KSVQ6OlNpZ25hdHVyZS4gV2UgY2FuIGFu
bm90YXRlIHRoZSBmdW5jdGlvbiB3aXRoIERPTUpJVDo6U2lnbmF0dXJlLgorICAgICAgICBET01K
SVQ6OlNpZ25hdHVyZSBoYXMgdHlwZSBpbmZvcm1hdGlvbiBvZiB0aGF0IGZ1bmN0aW9uLiBBbmQg
aXQgYWxzbyBtYWludGFpbnMgdGhlIGVmZmVjdCBvZiB0aGUgZnVuY3Rpb24gYW5kIHRoZQorICAg
ICAgICBwb2ludGVyIHRvIHRoZSB1bnNhZmUgZnVuY3Rpb24uIFRoZSB1bnNhZmUgZnVuY3Rpb24g
bWVhbnMgdGhlIGZ1bmN0aW9uIHdpdGhvdXQgdHlwZSBhbmQgYXJndW1lbnQgY291bnQgY2hlY2tz
LgorICAgICAgICBCeSB1c2luZyB0aGVzZSBpbmZvcm1hdGlvbiwgd2UgY2FuIHNlcGFyYXRlIHR5
cGUgYW5kIGFyZ3VtZW50IGNvdW50IGNoZWNrcyBmcm9tIHRoZSBmdW5jdGlvbi4gQW5kIHdlIGNh
biBlbWl0CisgICAgICAgIHRoZXNlIHRoaW5ncyBhcyBERkcgY2hlY2tzIGFuZCBjb252ZXJ0IHRo
ZSBmdW5jdGlvbiBjYWxsIGl0c2VsZiB0byBDYWxsRE9NIG5vZGUuIENhbGxET00gbm9kZSBjYW4g
Y2FsbCB0aGUgdW5zYWZlCisgICAgICAgIGZ1bmN0aW9uIGRpcmVjdGx5IHdpdGhvdXQgYW55IGNo
ZWNrcy4gRnVydGhlcm1vcmUsIHRoaXMgQ2FsbERPTSBub2RlIGNhbiByZXByZXNlbnQgaXRzIG93
biBjbG9iYmVyaXppbmcgcnVsZXMgYmFzZWQKKyAgICAgICAgb24gRE9NSklUOjpFZmZlY3QgbWFp
bnRhaW5lZCBieSBET01KSVQ6OlNpZ25hdHVyZS4gSXQgYWxsb3dzIHVzIHRvIG1ha2Ugb3BhcXVl
IENhbGwgbm9kZSB0byBhIENhbGxET00gbm9kZSB0aGF0CisgICAgICAgIG1lcmVseSByZWFkcyBz
b21lIHBhcnQgb2YgaGVhcC4gVGhlc2UgY2hhbmdlcyAoMSkgY2FuIGRyb3AgZHVwbGljYXRlIHR5
cGUgY2hlY2tzIGluIERGRywgKDIpIG9mZmVyIGFiaWxpdHkgdG8gbW92ZQorICAgICAgICBDYWxs
RE9NIG5vZGUgdG8gc29tZXdoZXJlLCBhbmQgKDMpIHRyYWNrIG1vcmUgZGV0YWlsZWQgaGVhcCBy
ZWFkcyBhbmQgd3JpdGVzIG9mIENhbGxET00gbm9kZXMuCisKKyAgICAgICAgV2UgZmlyc3QgZW1p
dCBDYWxsIG5vZGUgd2l0aCBET01KSVQ6OlNpZ25hdHVyZSBpbiBERkdCeXRlQ29kZVBhcnNlci4g
QW5kIGluIHRoZSBmaXh1cCBwaGFzZSwgd2UgYXR0ZW1wdCB0byBsb3dlcgorICAgICAgICBDYWxs
IG5vZGUgdG8gQ2FsbERPTSBub2RlIHdpdGggY2hlY2tzICYgZWRnZSBmaWx0ZXJzLiBUaGlzIGlz
IGJlY2F1c2Ugd2UgZG8gbm90IGtub3cgdGhlIHR5cGUgcHJlZGljdGlvbnMgaW4KKyAgICAgICAg
REZHQnl0ZUNvZGVQYXJzZXIgcGhhc2UuIElmIHdlIGFsd2F5cyBlbWl0IENhbGxET00gbm9kZSBp
biBERkdCeXRlQ29kZVBhcnNlciwgaWYgd2UgZXZhbHVhdGUgYGRpdi5nZXRBdHRyaWJ1dGUodHJ1
ZSlgCisgICAgICAgIHRoaW5neSwgdGhlIFVuY291bnRhYmxlIE9TUiBleGl0cyByZXBlYXRlZGx5
IGhhcHBlbiBiZWNhdXNlIEFJIGZpZ3VyZXMgb3V0IHRoZSBhYnN0cmFjdCB2YWx1ZSBpcyBjbGVh
cmVkLgorCisgICAgICAgIEN1cnJlbnRseSwgRE9NSklUIHNpZ25hdHVyZSBvbmx5IGFsbG93cyB0
aGUgdHlwZXMgdGhhdCBjYW4gcmVzaWRlIGluIEdQUi4gVGhpcyBpcyBiZWNhdXNlIHRoZSB0eXBl
cyBvZiB0aGUgdW5zYWZlCisgICAgICAgIGZ1bmN0aW9uIGFyZ3VtZW50cyBhcmUgcmVwcmVzZW50
ZWQgYXMgdGhlIHNlcXVlbmNlIG9mIHZvaWQqLiBJbiB0aGUgZnV0dXJlLCB3ZSB3aWxsIGV4dGVu
ZCB0byBhY2NlcHQgb3RoZXIgdHlwZXMgbGlrZQorICAgICAgICBmbG9hdCwgZG91YmxlIGV0Yy4K
KworICAgICAgICBXZSBhbm5vdGF0ZSBzZXZlcmFsIGZ1bmN0aW9ucyBpbiBFbGVtZW50LiBJbiBw
YXJ0aWN1bGFyLCB3ZSBhbm5vdGF0ZSBFbGVtZW50OjpnZXRBdHRyaWJ1dGUuIFRoaXMgYWxsb3dz
IHVzIHRvIHBlcmZvcm0KKyAgICAgICAgTElDTSBpbiBEcm9tYWVvIGRvbS1hdHRyIHRlc3QuIElu
IHRoZSBEcm9tYWVvIGRvbS1hdHRyIGdldEF0dHJpYnV0ZSB0ZXN0LCB3ZSBjYW4gc2VlIDMyeCBp
bXByb3ZlbWVudC4gKDEzNDk3NC44IHYucy4gNDIwMy40KQorCisgICAgICAgICogSmF2YVNjcmlw
dENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBieXRlY29kZS9DYWxs
VmFyaWFudC5oOgorICAgICAgICAoSlNDOjpDYWxsVmFyaWFudDo6ZnVuY3Rpb25FeGVjdXRhYmxl
KToKKyAgICAgICAgKEpTQzo6Q2FsbFZhcmlhbnQ6Om5hdGl2ZUV4ZWN1dGFibGUpOgorICAgICAg
ICAoSlNDOjpDYWxsVmFyaWFudDo6c2lnbmF0dXJlRm9yKToKKyAgICAgICAgKiBieXRlY29kZS9T
cGVjdWxhdGVkVHlwZS5oOgorICAgICAgICAoSlNDOjppc05vdFN0cmluZ1NwZWN1bGF0aW9uKToK
KyAgICAgICAgKEpTQzo6aXNOb3RJbnQzMlNwZWN1bGF0aW9uKToKKyAgICAgICAgKEpTQzo6aXNO
b3RCb29sZWFuU3BlY3VsYXRpb24pOgorICAgICAgICAqIGRmZy9ERkdBYnN0cmFjdEludGVycHJl
dGVySW5saW5lcy5oOgorICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0SW50ZXJwcmV0ZXI8QWJz
dHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyk6CisgICAgICAgICogZGZnL0RGR0J5dGVD
b2RlUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6YWRkQ2Fs
bCk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUNhbGwpOgorICAg
ICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjphdHRlbXB0VG9JbmxpbmVDYWxsKToKKyAg
ICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW5saW5pbmcpOgorICAgICAg
ICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVET01KSVRDYWxsKToKKyAgICAgICAg
KEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayk6CisgICAgICAgICogZGZnL0RG
R0Nsb2JiZXJpemUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpjbG9iYmVyaXplKToKKyAgICAgICAg
KiBkZmcvREZHRG9lc0dDLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpkb2VzR0MpOgorICAgICAg
ICAqIGRmZy9ERkdGaXh1cFBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpGaXh1cFBoYXNl
OjpmaXh1cE5vZGUpOgorICAgICAgICAoSlNDOjpERkc6OkZpeHVwUGhhc2U6OmF0dGVtcHRUb01h
a2VDYWxsRE9NKToKKyAgICAgICAgKEpTQzo6REZHOjpGaXh1cFBoYXNlOjpmaXh1cENoZWNrRE9N
KToKKyAgICAgICAgKEpTQzo6REZHOjpGaXh1cFBoYXNlOjpmaXh1cENhbGxET00pOgorICAgICAg
ICAqIGRmZy9ERkdOb2RlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpjb252ZXJ0VG9D
YWxsRE9NKToKKyAgICAgICAgKiBkZmcvREZHTm9kZS5oOgorICAgICAgICAoSlNDOjpERkc6Ok5v
ZGU6Omhhc0hlYXBQcmVkaWN0aW9uKToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpzaG91bGRT
cGVjdWxhdGVOb3RJbnQzMik6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6c2hvdWxkU3BlY3Vs
YXRlTm90Qm9vbGVhbik6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6c2hvdWxkU3BlY3VsYXRl
Tm90U3RyaW5nKToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpoYXNTaWduYXR1cmUpOgorICAg
ICAgICAoSlNDOjpERkc6Ok5vZGU6OnNpZ25hdHVyZSk6CisgICAgICAgICogZGZnL0RGR05vZGVU
eXBlLmg6CisgICAgICAgICogZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcDoK
KyAgICAgICAgKiBkZmcvREZHU2FmZVRvRXhlY3V0ZS5oOgorICAgICAgICAoSlNDOjpERkc6OnNh
ZmVUb0V4ZWN1dGUpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHA6CisgICAg
ICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVDYWxsRE9NKToKKyAgICAgICAg
KiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuaDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2
ZUpJVDo6Y2FsbE9wZXJhdGlvbik6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJf
NjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToKKyAg
ICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGRvbWppdC9ET01KSVRFZmZlY3Qu
aDoKKyAgICAgICAgKEpTQzo6RE9NSklUOjpFZmZlY3Q6OkVmZmVjdCk6CisgICAgICAgIChKU0M6
OkRPTUpJVDo6RWZmZWN0Ojpmb3JXcml0ZSk6CisgICAgICAgIChKU0M6OkRPTUpJVDo6RWZmZWN0
Ojpmb3JSZWFkKToKKyAgICAgICAgKEpTQzo6RE9NSklUOjpFZmZlY3Q6OmZvclJlYWRXcml0ZSk6
CisgICAgICAgIChKU0M6OkRPTUpJVDo6RWZmZWN0Ojpmb3JQdXJlKToKKyAgICAgICAgKEpTQzo6
RE9NSklUOjpFZmZlY3Q6OmZvckRlZik6CisgICAgICAgIChKU0M6OkRPTUpJVDo6RWZmZWN0Ojpt
dXN0R2VuZXJhdGUpOgorICAgICAgICBJbiBjbGFuZywgd2UgY2Fubm90IG1ha2UgdGhpcyBFZmZl
Y3QgY29uc3RydWN0b3IgY29uc3RleHByIGlmIHdlIHVzZSBPcHRpb25hbDxIZWFwUmFuZ2U+Lgor
ICAgICAgICBTbyB3ZSB1c2UgSGVhcFJhbmdlOjp0b3AoKSBmb3IgTnVsbG9wdCBkZWYgbm93Lgor
CisgICAgICAgICogZG9taml0L0RPTUpJVEhlYXBSYW5nZS5oOgorICAgICAgICAoSlNDOjpET01K
SVQ6OkhlYXBSYW5nZTo6ZnJvbVJhdyk6CisgICAgICAgIChKU0M6OkRPTUpJVDo6SGVhcFJhbmdl
OjpvcGVyYXRvcj09KToKKyAgICAgICAgKEpTQzo6RE9NSklUOjpIZWFwUmFuZ2U6Om9wZXJhdG9y
IT0pOgorICAgICAgICAoSlNDOjpET01KSVQ6OkhlYXBSYW5nZTo6ZnJvbUNvbnN0YW50KToKKyAg
ICAgICAgKiBkb21qaXQvRE9NSklUU2lnbmF0dXJlLmg6IENvcGllZCBmcm9tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kb21qaXQvRE9NSklURWZmZWN0LmguCisgICAgICAgIChKU0M6OkRPTUpJVDo6
U2lnbmF0dXJlOjpTaWduYXR1cmUpOgorICAgICAgICAoSlNDOjpET01KSVQ6OlNpZ25hdHVyZTo6
YXJndW1lbnRDb3VudCk6CisgICAgICAgIChKU0M6OkRPTUpJVDo6U2lnbmF0dXJlOjpjaGVja0RP
TSk6CisgICAgICAgICogZnRsL0ZUTENhcGFiaWxpdGllcy5jcHA6CisgICAgICAgIChKU0M6OkZU
TDo6Y2FuQ29tcGlsZSk6CisgICAgICAgICogZnRsL0ZUTExvd2VyREZHVG9CMy5jcHA6CisgICAg
ICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVOb2RlKToKKyAgICAgICAg
KEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZUNhbGxET00pOgorICAgICAgICAq
IGppdC9KSVRPcGVyYXRpb25zLmg6CisgICAgICAgICogaml0L0pJVFRodW5rcy5jcHA6CisgICAg
ICAgIChKU0M6OkpJVFRodW5rczo6aG9zdEZ1bmN0aW9uU3R1Yik6CisgICAgICAgICogaml0L0pJ
VFRodW5rcy5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNCb3VuZEZ1bmN0aW9uLmNwcDoKKyAgICAg
ICAgKEpTQzo6SlNCb3VuZEZ1bmN0aW9uOjpjcmVhdGUpOgorICAgICAgICAqIHJ1bnRpbWUvSlND
ZWxsLmg6CisgICAgICAgICogcnVudGltZS9KU0Z1bmN0aW9uLmNwcDoKKyAgICAgICAgKEpTQzo6
SlNGdW5jdGlvbjo6Y3JlYXRlKToKKyAgICAgICAgKiBydW50aW1lL0pTRnVuY3Rpb24uaDoKKyAg
ICAgICAgKiBydW50aW1lL0pTTmF0aXZlU3RkRnVuY3Rpb24uY3BwOgorICAgICAgICAoSlNDOjpK
U05hdGl2ZVN0ZEZ1bmN0aW9uOjpjcmVhdGUpOgorICAgICAgICAqIHJ1bnRpbWUvSlNPYmplY3Qu
Y3BwOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6cHV0RGlyZWN0TmF0aXZlRnVuY3Rpb24pOgor
ICAgICAgICAqIHJ1bnRpbWUvSlNPYmplY3QuaDoKKyAgICAgICAgKiBydW50aW1lL0xvb2t1cC5o
OgorICAgICAgICAoSlNDOjpIYXNoVGFibGVWYWx1ZTo6ZnVuY3Rpb25MZW5ndGgpOgorICAgICAg
ICAoSlNDOjpIYXNoVGFibGVWYWx1ZTo6c2lnbmF0dXJlKToKKyAgICAgICAgKEpTQzo6cmVpZnlT
dGF0aWNQcm9wZXJ0eSk6CisgICAgICAgICogcnVudGltZS9OYXRpdmVFeGVjdXRhYmxlLmNwcDoK
KyAgICAgICAgKEpTQzo6TmF0aXZlRXhlY3V0YWJsZTo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6
TmF0aXZlRXhlY3V0YWJsZTo6TmF0aXZlRXhlY3V0YWJsZSk6CisgICAgICAgICogcnVudGltZS9O
YXRpdmVFeGVjdXRhYmxlLmg6CisgICAgICAgICogcnVudGltZS9Qcm9wZXJ0eVNsb3QuaDoKKyAg
ICAgICAgKiBydW50aW1lL1ZNLmNwcDoKKyAgICAgICAgKEpTQzo6Vk06OmdldEhvc3RGdW5jdGlv
bik6CisgICAgICAgICogcnVudGltZS9WTS5oOgorCiAyMDE2LTExLTAxICBSeW9zdWtlIE5pd2Eg
IDxybml3YUB3ZWJraXQub3JnPgogCiAgICAgICAgIFJlbW92ZSBDVVNUT01fRUxFTUVOVFMgYnVp
bGQgZmxhZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCmluZGV4IDlhZWRlNzYzNjFjZDQ1NWIwMTcwZDIyMTk1YzQ5MjVjYmRl
NTQzYjAuLjU1NTk0MTQ2MzRmZDJlODc1MmYzNzI4OTRmNGFiOGRlYTNmMTcwNzkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cKQEAgLTEsMyArMSw5OCBAQAorMjAxNi0xMS0wMSAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUu
dGVhQGdtYWlsLmNvbT4KKworICAgICAgICBbRE9NSklUXSBBZGQgRE9NSklUOjpTaWduYXR1cmUK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2Mjk4MAor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdlIGludHJv
ZHVjZSBET01KSVQ6OlNpZ25hdHVyZS4gVGhpcyBzaWduYXR1cmUgb2JqZWN0IGlzIGF1dG9tYXRp
Y2FsbHkgZ2VuZXJhdGVkIGJ5IElETCBjb2RlIGdlbmVyYXRvci4KKyAgICAgICAgSXQgaG9sZHMg
KDEpIHR5cGVzLCAoMikgcG9pbnRlciB0byB0aGUgdW5zYWZlIGZ1bmN0aW9uICh0aGUgZnVuY3Rp
b24gd2l0aG91dCBjaGVja3MpLCBhbmQgKDMpIHRoZSBlZmZlY3QKKyAgICAgICAgb2YgdGhlIGZ1
bmN0aW9uLiBXZSB1c2UgY29uc3RleHByIHRvIGluaXRpYWxpemUgRE9NSklUOjpTaWduYXR1cmUg
d2l0aG91dCBpbnZva2luZyBnbG9iYWwgY29uc3RydWN0b3JzLgorICAgICAgICBUaHVzIHRoZSBj
b250ZW50IGlzIGVtYmVkZGVkIGludG8gdGhlIGJpbmFyeSBhcyB0aGUgY29uc3RhbnQgdmFsdWVz
LgorCisgICAgICAgIFdlIGFsc28gY2xlYW4gdXAgdGhlIElETCBjb2RlIGdlbmVyYXRvciByZWxh
dGVkIHRvIERPTUpJVCBwYXJ0LiBJbnN0ZWFkIG9mIHN3aXRjaGluZyB0aGluZ3MgaW5zaWRlIElE
TAorICAgICAgICBjb2RlIGdlbmVyYXRvciwgd2UgdXNlIEMrKyB0ZW1wbGF0ZSB0byBkaXNwYXRj
aCB0aGluZ3MgYXQgY29tcGlsZSB0aW1lLiBUaGlzIHRlbXBsYXRlIG1ldGEgcHJvZ3JhbW1pbmcK
KyAgICAgICAgaXMgaGlnaGx5IHV0aWxpemVkIGluIElETCB0aGVzZSBkYXlzLgorCisgICAgICAg
IFRvIG1ha2UgRE9NSklUOjpTaWduYXR1cmUgY29uc3RleHByLCB3ZSBhbHNvIG5lZWQgdG8gZGVm
aW5lIERPTUpJVCBhYnN0cmFjdCBoZWFwIHRoaW5ncyBpbiB0aGUgYnVpbGQgdGltZS4KKyAgICAg
ICAgVG8gZG8gc28sIHdlIGludHJvZHVjZSBhIHRpbnkgUnVieSBzY3JpcHQgdG8gY2FsY3VsYXRl
IHRoZSByYW5nZSBvZiBhYnN0cmFjdCBoZWFwcy4gV2UgY2FuIG9mZmVyIHRoZSBhYnN0cmFjdAor
ICAgICAgICBoZWFwIHRyZWUgYXMgWUFNTCBmb3JtYXQgYW5kIHRoZSBzY3JpcHQgd2lsbCBwcm9k
dWNlIGEgQysrIGhlYWRlciBob2xkaW5nIHRoZSBjYWxjdWxhdGVkIGFic3RyYWN0IGhlYXAgcmFu
Z2VzCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBEZXJpdmVkU291cmNl
cy5tYWtlOgorICAgICAgICAqIEZvcndhcmRpbmdIZWFkZXJzL2J5dGVjb2RlL1NwZWN1bGF0ZWRU
eXBlLmg6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9kb21qaXQvRE9NSklUQWJzdHJhY3RI
ZWFwUmVwb3NpdG9yeS5oLgorICAgICAgICAqIEZvcndhcmRpbmdIZWFkZXJzL2RvbWppdC9ET01K
SVRTaWduYXR1cmUuaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL2RvbWppdC9ET01KSVRB
YnN0cmFjdEhlYXBSZXBvc2l0b3J5LmNwcC4KKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2o6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3Qu
aDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbToKKyAgICAg
ICAgKEdlbmVyYXRlSGVhZGVyKToKKyAgICAgICAgKEdlbmVyYXRlUHJvcGVydGllc0hhc2hUYWJs
ZSk6CisgICAgICAgIChHZXRVbnNhZmVBcmd1bWVudFR5cGUpOgorICAgICAgICAoR2V0QXJndW1l
bnRUeXBlRmlsdGVyKToKKyAgICAgICAgKEdldFJlc3VsdFR5cGVGaWx0ZXIpOgorICAgICAgICAo
R2VuZXJhdGVJbXBsZW1lbnRhdGlvbik6CisgICAgICAgIChVbnNhZmVUb05hdGl2ZSk6CisgICAg
ICAgIChHZW5lcmF0ZUhhc2hUYWJsZVZhbHVlQXJyYXkpOgorICAgICAgICAoQ29tcHV0ZUZ1bmN0
aW9uU3BlY2lhbCk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9JRExBdHRyaWJ1dGVzLnR4
dDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RE9NSklULmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkJpbmRpbmdDYWxsZXI8SlNUZXN0RE9NSklUPjo6Y2FzdEZvck9w
ZXJhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpUZXN0RE9NSklUQW55QXR0ckRPTUpJVDo6VGVz
dERPTUpJVEFueUF0dHJET01KSVQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdERPTUpJVEJvb2xl
YW5BdHRyRE9NSklUOjpUZXN0RE9NSklUQm9vbGVhbkF0dHJET01KSVQpOgorICAgICAgICAoV2Vi
Q29yZTo6VGVzdERPTUpJVEJ5dGVBdHRyRE9NSklUOjpUZXN0RE9NSklUQnl0ZUF0dHJET01KSVQp
OgorICAgICAgICAoV2ViQ29yZTo6VGVzdERPTUpJVE9jdGV0QXR0ckRPTUpJVDo6VGVzdERPTUpJ
VE9jdGV0QXR0ckRPTUpJVCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0RE9NSklUU2hvcnRBdHRy
RE9NSklUOjpUZXN0RE9NSklUU2hvcnRBdHRyRE9NSklUKToKKyAgICAgICAgKFdlYkNvcmU6OlRl
c3RET01KSVRVbnNpZ25lZFNob3J0QXR0ckRPTUpJVDo6VGVzdERPTUpJVFVuc2lnbmVkU2hvcnRB
dHRyRE9NSklUKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RET01KSVRMb25nQXR0ckRPTUpJVDo6
VGVzdERPTUpJVExvbmdBdHRyRE9NSklUKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RET01KSVRV
bnNpZ25lZExvbmdBdHRyRE9NSklUOjpUZXN0RE9NSklUVW5zaWduZWRMb25nQXR0ckRPTUpJVCk6
CisgICAgICAgIChXZWJDb3JlOjpUZXN0RE9NSklUTG9uZ0xvbmdBdHRyRE9NSklUOjpUZXN0RE9N
SklUTG9uZ0xvbmdBdHRyRE9NSklUKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RET01KSVRVbnNp
Z25lZExvbmdMb25nQXR0ckRPTUpJVDo6VGVzdERPTUpJVFVuc2lnbmVkTG9uZ0xvbmdBdHRyRE9N
SklUKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RET01KSVRGbG9hdEF0dHJET01KSVQ6OlRlc3RE
T01KSVRGbG9hdEF0dHJET01KSVQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdERPTUpJVFVucmVz
dHJpY3RlZEZsb2F0QXR0ckRPTUpJVDo6VGVzdERPTUpJVFVucmVzdHJpY3RlZEZsb2F0QXR0ckRP
TUpJVCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0RE9NSklURG91YmxlQXR0ckRPTUpJVDo6VGVz
dERPTUpJVERvdWJsZUF0dHJET01KSVQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdERPTUpJVFVu
cmVzdHJpY3RlZERvdWJsZUF0dHJET01KSVQ6OlRlc3RET01KSVRVbnJlc3RyaWN0ZWREb3VibGVB
dHRyRE9NSklUKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RET01KSVREb21TdHJpbmdBdHRyRE9N
SklUOjpUZXN0RE9NSklURG9tU3RyaW5nQXR0ckRPTUpJVCk6CisgICAgICAgIChXZWJDb3JlOjpU
ZXN0RE9NSklUQnl0ZVN0cmluZ0F0dHJET01KSVQ6OlRlc3RET01KSVRCeXRlU3RyaW5nQXR0ckRP
TUpJVCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0RE9NSklUVXN2U3RyaW5nQXR0ckRPTUpJVDo6
VGVzdERPTUpJVFVzdlN0cmluZ0F0dHJET01KSVQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdERP
TUpJVE5vZGVBdHRyRE9NSklUOjpUZXN0RE9NSklUTm9kZUF0dHJET01KSVQpOgorICAgICAgICAo
V2ViQ29yZTo6VGVzdERPTUpJVEJvb2xlYW5OdWxsYWJsZUF0dHJET01KSVQ6OlRlc3RET01KSVRC
b29sZWFuTnVsbGFibGVBdHRyRE9NSklUKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RET01KSVRC
eXRlTnVsbGFibGVBdHRyRE9NSklUOjpUZXN0RE9NSklUQnl0ZU51bGxhYmxlQXR0ckRPTUpJVCk6
CisgICAgICAgIChXZWJDb3JlOjpUZXN0RE9NSklUT2N0ZXROdWxsYWJsZUF0dHJET01KSVQ6OlRl
c3RET01KSVRPY3RldE51bGxhYmxlQXR0ckRPTUpJVCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0
RE9NSklUU2hvcnROdWxsYWJsZUF0dHJET01KSVQ6OlRlc3RET01KSVRTaG9ydE51bGxhYmxlQXR0
ckRPTUpJVCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0RE9NSklUVW5zaWduZWRTaG9ydE51bGxh
YmxlQXR0ckRPTUpJVDo6VGVzdERPTUpJVFVuc2lnbmVkU2hvcnROdWxsYWJsZUF0dHJET01KSVQp
OgorICAgICAgICAoV2ViQ29yZTo6VGVzdERPTUpJVExvbmdOdWxsYWJsZUF0dHJET01KSVQ6OlRl
c3RET01KSVRMb25nTnVsbGFibGVBdHRyRE9NSklUKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RE
T01KSVRVbnNpZ25lZExvbmdOdWxsYWJsZUF0dHJET01KSVQ6OlRlc3RET01KSVRVbnNpZ25lZExv
bmdOdWxsYWJsZUF0dHJET01KSVQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdERPTUpJVExvbmdM
b25nTnVsbGFibGVBdHRyRE9NSklUOjpUZXN0RE9NSklUTG9uZ0xvbmdOdWxsYWJsZUF0dHJET01K
SVQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdERPTUpJVFVuc2lnbmVkTG9uZ0xvbmdOdWxsYWJs
ZUF0dHJET01KSVQ6OlRlc3RET01KSVRVbnNpZ25lZExvbmdMb25nTnVsbGFibGVBdHRyRE9NSklU
KToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RET01KSVRGbG9hdE51bGxhYmxlQXR0ckRPTUpJVDo6
VGVzdERPTUpJVEZsb2F0TnVsbGFibGVBdHRyRE9NSklUKToKKyAgICAgICAgKFdlYkNvcmU6OlRl
c3RET01KSVRVbnJlc3RyaWN0ZWRGbG9hdE51bGxhYmxlQXR0ckRPTUpJVDo6VGVzdERPTUpJVFVu
cmVzdHJpY3RlZEZsb2F0TnVsbGFibGVBdHRyRE9NSklUKToKKyAgICAgICAgKFdlYkNvcmU6OlRl
c3RET01KSVREb3VibGVOdWxsYWJsZUF0dHJET01KSVQ6OlRlc3RET01KSVREb3VibGVOdWxsYWJs
ZUF0dHJET01KSVQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdERPTUpJVFVucmVzdHJpY3RlZERv
dWJsZU51bGxhYmxlQXR0ckRPTUpJVDo6VGVzdERPTUpJVFVucmVzdHJpY3RlZERvdWJsZU51bGxh
YmxlQXR0ckRPTUpJVCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0RE9NSklURG9tU3RyaW5nTnVs
bGFibGVBdHRyRE9NSklUOjpUZXN0RE9NSklURG9tU3RyaW5nTnVsbGFibGVBdHRyRE9NSklUKToK
KyAgICAgICAgKFdlYkNvcmU6OlRlc3RET01KSVRCeXRlU3RyaW5nTnVsbGFibGVBdHRyRE9NSklU
OjpUZXN0RE9NSklUQnl0ZVN0cmluZ051bGxhYmxlQXR0ckRPTUpJVCk6CisgICAgICAgIChXZWJD
b3JlOjpUZXN0RE9NSklUVXN2U3RyaW5nTnVsbGFibGVBdHRyRE9NSklUOjpUZXN0RE9NSklUVXN2
U3RyaW5nTnVsbGFibGVBdHRyRE9NSklUKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RET01KSVRO
b2RlTnVsbGFibGVBdHRyRE9NSklUOjpUZXN0RE9NSklUTm9kZU51bGxhYmxlQXR0ckRPTUpJVCk6
CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RET01KSVRQcm90b3R5cGVGdW5jdGlvbkdldEF0dHJp
YnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RET01KSVRQcm90b3R5cGVGdW5jdGlvbkdl
dEF0dHJpYnV0ZUNhbGxlcik6CisgICAgICAgIChXZWJDb3JlOjp1bnNhZmVKc1Rlc3RET01KSVRQ
cm90b3R5cGVGdW5jdGlvbkdldEF0dHJpYnV0ZSk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L1Rlc3RET01KSVQuaWRsOgorICAgICAgICAqIGRvbS9FbGVtZW50LmlkbDoKKyAgICAg
ICAgKiBkb21qaXQvRE9NSklUQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS55YW1sOiBBZGRlZC4KKyAg
ICAgICAgKiBkb21qaXQvRE9NSklUSURMQ29udmVydC5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkRPTUpJVDo6RGlyZWN0Q29udmVydGVyPElETERPTVN0cmluZz46OmRpcmVjdENvbnZlcnQ8
U3RyaW5nQ29udmVyc2lvbkNvbmZpZ3VyYXRpb246Ok5vcm1hbD4pOgorICAgICAgICAqIGRvbWpp
dC9ET01KSVRJRExUeXBlLmg6IEFkZGVkLgorICAgICAgICAqIGRvbWppdC9ET01KSVRJRExUeXBl
RmlsdGVyLmg6IEFkZGVkLgorICAgICAgICAqIGRvbWppdC9KU0RvY3VtZW50RE9NSklULmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50RG9jdW1lbnRFbGVtZW50RE9NSklUOjpjYWxsRE9N
R2V0dGVyKToKKyAgICAgICAgKiBkb21qaXQvSlNOb2RlRE9NSklULmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6Ok5vZGVGaXJzdENoaWxkRE9NSklUOjpjYWxsRE9NR2V0dGVyKToKKyAgICAgICAgKFdl
YkNvcmU6Ok5vZGVMYXN0Q2hpbGRET01KSVQ6OmNhbGxET01HZXR0ZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6Tm9kZU5leHRTaWJsaW5nRE9NSklUOjpjYWxsRE9NR2V0dGVyKToKKyAgICAgICAgKFdl
YkNvcmU6Ok5vZGVQcmV2aW91c1NpYmxpbmdET01KSVQ6OmNhbGxET01HZXR0ZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6Tm9kZVBhcmVudE5vZGVET01KSVQ6OmNhbGxET01HZXR0ZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6Tm9kZU93bmVyRG9jdW1lbnRET01KSVQ6OmNhbGxET01HZXR0ZXIpOgorICAg
ICAgICAqIGRvbWppdC9nZW5lcmF0ZS1hYnN0cmFjdC1oZWFwLnJiOiBBZGRlZC4KKwogMjAxNi0x
MS0wMSAgRGF2ZSBIeWF0dCAgPGh5YXR0QGFwcGxlLmNvbT4KIAogICAgICAgICBbQ1NTIFBhcnNl
cl0gU3VwcG9ydCB0aGUgc2hhZG93IERPTQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRl
eCAyZmJkMmU0Y2YzMTdjMmY4NGUyZTEzOTdkODUxNDExYjU5NjdlMGUyLi5iZjRhMTlkNTkyN2Rm
ZGUxYTlmZjZmMjRhM2U5YjVmNmM3ODBiZTlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agpAQCAtMjE4NCw2ICsyMTg0LDcgQEAKIAkJRTMzRjUwODUxQjg0MzdBMDAwNDEzODU2IC8qIEpT
SW50ZXJuYWxQcm9taXNlRGVmZXJyZWQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEUzM0Y1MDgzMUI4NDM3QTAwMDQxMzg1NiAvKiBKU0ludGVybmFsUHJv
bWlzZURlZmVycmVkLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJRTMzRjUwODcxQjg0NDlFRjAwNDEzODU2IC8qIEpTSW50ZXJuYWxQcm9taXNlQ29u
c3RydWN0b3IubHV0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBFMzNGNTA4NjFCODQ0OUVGMDA0MTM4NTYgLyogSlNJbnRlcm5hbFByb21pc2VDb25zdHJ1
Y3Rvci5sdXQuaCAqLzsgfTsKIAkJRTM0RURCRjcxREI1RkZDOTAwREM4N0E1IC8qIEZyYW1lVHJh
Y2Vycy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM0
RURCRjYxREI1RkZDMTAwREM4N0E1IC8qIEZyYW1lVHJhY2Vycy5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUUzNTA3MDhBMURDNDlCQkYwMDg5QkNE
NiAvKiBET01KSVRTaWduYXR1cmUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEUzNTA3MDg5MURDNDlCQjYwMDg5QkNENiAvKiBET01KSVRTaWduYXR1cmUu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFMzU0
NjIyQjFCNjA2NUQxMDA1NDUzODYgLyogQ29uc3RydWN0QWJpbGl0eS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM1NDYyMkExQjYwNjVEMTAwNTQ1Mzg2
IC8qIENvbnN0cnVjdEFiaWxpdHkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQlFMzU1NUI4QTFEQUUwM0E1MDBGMzY5MjEgLyogRE9NSklUQ2FsbERP
TUdldHRlclBhdGNocG9pbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEUzNTU1Qjg5MURBRTAzQTIwMEYzNjkyMSAvKiBET01KSVRDYWxsRE9NR2V0dGVy
UGF0Y2hwb2ludC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCUUzNTVGMzUyMUI3REM4NTMwMEM1MERDNSAvKiBNb2R1bGVMb2FkZXJQcm90b3R5cGUu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM1NUYz
NTAxQjdEQzg1MzAwQzUwREM1IC8qIE1vZHVsZUxvYWRlclByb3RvdHlwZS5jcHAgKi87IH07CkBA
IC00NTg2LDYgKzQ1ODcsNyBAQAogCQlFMzNGNTA4NjFCODQ0OUVGMDA0MTM4NTYgLyogSlNJbnRl
cm5hbFByb21pc2VDb25zdHJ1Y3Rvci5sdXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gSlNJbnRlcm5hbFByb21pc2VDb25zdHJ1Y3Rvci5sdXQuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJRTMzRjUwODgxQjg0NEExQTAwNDEzODU2IC8qIEludGVybmFsUHJvbWlz
ZUNvbnN0cnVjdG9yLmpzICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5qYXZhc2NyaXB0OyBwYXRoID0g
SW50ZXJuYWxQcm9taXNlQ29uc3RydWN0b3IuanM7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUUzNEVEQkY2MURCNUZGQzEwMERDODdBNSAvKiBGcmFtZVRyYWNlcnMuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRnJhbWVUcmFjZXJzLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCUUzNTA3MDg5MURDNDlCQjYwMDg5QkNENiAvKiBET01KSVRTaWduYXR1cmUu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRE9NSklUU2lnbmF0dXJlLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzNTQ2MjJBMUI2MDY1RDEwMDU0NTM4NiAvKiBD
b25zdHJ1Y3RBYmlsaXR5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvbnN0
cnVjdEFiaWxpdHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM1NTVCODkxREFF
MDNBMjAwRjM2OTIxIC8qIERPTUpJVENhbGxET01HZXR0ZXJQYXRjaHBvaW50LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERPTUpJVENhbGxET01HZXR0ZXJQYXRjaHBvaW50Lmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzNTVGMzUwMUI3REM4NTMwMEM1MERDNSAv
KiBNb2R1bGVMb2FkZXJQcm90b3R5cGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gTW9kdWxlTG9hZGVyUHJvdG90eXBlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKQEAgLTc1MDMsNiArNzUwNSw3IEBACiAJCQkJRTM3QUQ4M0ExREE0OTI4MDAwRjNENDEy
IC8qIERPTUpJVFBhdGNocG9pbnRQYXJhbXMuaCAqLywKIAkJCQlFMzdBRDgzQjFEQTQ5MjgwMDBG
M0Q0MTIgLyogRE9NSklUUmVnLmggKi8sCiAJCQkJRTNDQjFFMjQxREE3NTQwQTAwRkExRTU2IC8q
IERPTUpJVFNsb3dQYXRoQ2FsbHMuaCAqLywKKwkJCQlFMzUwNzA4OTFEQzQ5QkI2MDA4OUJDRDYg
LyogRE9NSklUU2lnbmF0dXJlLmggKi8sCiAJCQkJRTNGRkM4NTIxREFEN0QxMDAwREVBNTNFIC8q
IERPTUpJVFZhbHVlLmggKi8sCiAJCQkpOwogCQkJcGF0aCA9IGRvbWppdDsKQEAgLTg0MjMsNiAr
ODQyNiw3IEBACiAJCQkJNDNBQjI2QzYxQzFBNTM1OTAwRDgyQUU2IC8qIEIzTWF0aEV4dHJhcy5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQUQyRkNCRjMxREI1OERBRDAwQjNFNzM2IC8qIFdlYkFzc2Vt
Ymx5SW5zdGFuY2VQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDNDI5MEUxNkY1
Q0QwMEIzNDQ2MCAvKiBKU1N0cmluZ1JlZkNGLmggaW4gSGVhZGVycyAqLywKKwkJCQlFMzUwNzA4
QTFEQzQ5QkJGMDA4OUJDRDYgLyogRE9NSklUU2lnbmF0dXJlLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkxQTI4RDRBODE3N0I3MUM4MDAwN0ZBM0MgLyogSlNTdHJpbmdSZWZQcml2YXRlLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkwRjkxOUQwRDE1N0VFMEEyMDA0QTRFN0QgLyogSlNTeW1ib2xUYWJsZU9i
amVjdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNzBFQ0E2MDYxQUZEQkVBMjAwNDQ5NzM5IC8qIEpT
VGVtcGxhdGVSZWdpc3RyeUtleS5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbFZhcmlhbnQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9DYWxsVmFyaWFudC5oCmluZGV4IGRlNjg4MDA2ZWYxYTk5ZTlkZDYwYjAx
YTZlMDE3N2NiOThlYzdiNTEuLmNiMjg4YzYwYjdhNGYxMzhiYWYyMTQyODQ5ZTEzOTFhOGQxMTFi
YTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsVmFyaWFu
dC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsVmFyaWFudC5oCkBA
IC0yOCw2ICsyOCw3IEBACiAjaW5jbHVkZSAiRnVuY3Rpb25FeGVjdXRhYmxlLmgiCiAjaW5jbHVk
ZSAiSlNDZWxsLmgiCiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgorI2luY2x1ZGUgIk5hdGl2ZUV4
ZWN1dGFibGUuaCIKIAogbmFtZXNwYWNlIEpTQyB7CiAKQEAgLTEyMCw2ICsxMjEsMjAgQEAgY2xh
c3MgQ2FsbFZhcmlhbnQgewogICAgICAgICAgICAgcmV0dXJuIGpzRHluYW1pY0Nhc3Q8RnVuY3Rp
b25FeGVjdXRhYmxlKj4oZXhlY3V0YWJsZSk7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAg
IH0KKworICAgIE5hdGl2ZUV4ZWN1dGFibGUqIG5hdGl2ZUV4ZWN1dGFibGUoKSBjb25zdAorICAg
IHsKKyAgICAgICAgaWYgKEV4ZWN1dGFibGVCYXNlKiBleGVjdXRhYmxlID0gdGhpcy0+ZXhlY3V0
YWJsZSgpKQorICAgICAgICAgICAgcmV0dXJuIGpzRHluYW1pY0Nhc3Q8TmF0aXZlRXhlY3V0YWJs
ZSo+KGV4ZWN1dGFibGUpOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisKKyAgICBj
b25zdCBET01KSVQ6OlNpZ25hdHVyZSogc2lnbmF0dXJlRm9yKENvZGVTcGVjaWFsaXphdGlvbktp
bmQga2luZCkgY29uc3QKKyAgICB7CisgICAgICAgIGlmIChOYXRpdmVFeGVjdXRhYmxlKiBuYXRp
dmVFeGVjdXRhYmxlID0gdGhpcy0+bmF0aXZlRXhlY3V0YWJsZSgpKQorICAgICAgICAgICAgcmV0
dXJuIG5hdGl2ZUV4ZWN1dGFibGUtPnNpZ25hdHVyZUZvcihraW5kKTsKKyAgICAgICAgcmV0dXJu
IG51bGxwdHI7CisgICAgfQogICAgIAogICAgIHZvaWQgZHVtcChQcmludFN0cmVhbSYgb3V0KSBj
b25zdDsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9T
cGVjdWxhdGVkVHlwZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NwZWN1bGF0
ZWRUeXBlLmgKaW5kZXggZjQzZGZjZDMxNTg3MWU5ODk1M2VhMmRkZGM0YmYzMzUyNWNjZGZkZi4u
ZTIzZmQyYzVmNTRjZWUwOWM3YTIzYmRjMTQ5OTkwYjYwOWIwMTkwMCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmgKQEAgLTE1MSw2ICsxNTEs
MTEgQEAgaW5saW5lIGJvb2wgaXNTdHJpbmdTcGVjdWxhdGlvbihTcGVjdWxhdGVkVHlwZSB2YWx1
ZSkKICAgICByZXR1cm4gISF2YWx1ZSAmJiAodmFsdWUgJiBTcGVjU3RyaW5nKSA9PSB2YWx1ZTsK
IH0KIAoraW5saW5lIGJvb2wgaXNOb3RTdHJpbmdTcGVjdWxhdGlvbihTcGVjdWxhdGVkVHlwZSB2
YWx1ZSkKK3sKKyAgICByZXR1cm4gdmFsdWUgJiYgISh2YWx1ZSAmIFNwZWNTdHJpbmcpOworfQor
CiBpbmxpbmUgYm9vbCBpc1N0cmluZ09yT3RoZXJTcGVjdWxhdGlvbihTcGVjdWxhdGVkVHlwZSB2
YWx1ZSkKIHsKICAgICByZXR1cm4gISF2YWx1ZSAmJiAodmFsdWUgJiAoU3BlY1N0cmluZyB8IFNw
ZWNPdGhlcikpID09IHZhbHVlOwpAQCAtMzAzLDYgKzMwOCwxMSBAQCBpbmxpbmUgYm9vbCBpc0lu
dDMyU3BlY3VsYXRpb24oU3BlY3VsYXRlZFR5cGUgdmFsdWUpCiAgICAgcmV0dXJuIHZhbHVlICYm
ICEodmFsdWUgJiB+U3BlY0ludDMyT25seSk7CiB9CiAKK2lubGluZSBib29sIGlzTm90SW50MzJT
cGVjdWxhdGlvbihTcGVjdWxhdGVkVHlwZSB2YWx1ZSkKK3sKKyAgICByZXR1cm4gdmFsdWUgJiYg
ISh2YWx1ZSAmIFNwZWNJbnQzMk9ubHkpOworfQorCiBpbmxpbmUgYm9vbCBpc0ludDMyT3JCb29s
ZWFuU3BlY3VsYXRpb24oU3BlY3VsYXRlZFR5cGUgdmFsdWUpCiB7CiAgICAgcmV0dXJuIHZhbHVl
ICYmICEodmFsdWUgJiB+KFNwZWNCb29sZWFuIHwgU3BlY0ludDMyT25seSkpOwpAQCAtMzg4LDYg
KzM5OCwxMSBAQCBpbmxpbmUgYm9vbCBpc0Jvb2xlYW5TcGVjdWxhdGlvbihTcGVjdWxhdGVkVHlw
ZSB2YWx1ZSkKICAgICByZXR1cm4gdmFsdWUgPT0gU3BlY0Jvb2xlYW47CiB9CiAKK2lubGluZSBi
b29sIGlzTm90Qm9vbGVhblNwZWN1bGF0aW9uKFNwZWN1bGF0ZWRUeXBlIHZhbHVlKQoreworICAg
IHJldHVybiB2YWx1ZSAmJiAhKHZhbHVlICYgU3BlY0Jvb2xlYW4pOworfQorCiBpbmxpbmUgYm9v
bCBpc090aGVyU3BlY3VsYXRpb24oU3BlY3VsYXRlZFR5cGUgdmFsdWUpCiB7CiAgICAgcmV0dXJu
IHZhbHVlID09IFNwZWNPdGhlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAppbmRleCA0M2I1MWExNmVjYmFk
YTUwZjlkN2Y4OGVlZTNjZjExMjZiN2EyMjRhLi43YWRiYTcxNjAxNDYxNTEwNzJlZjY5OWQyMjZh
MmFmM2NlYTA4ZDAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fi
c3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCkBAIC0zMCw2ICszMCw3IEBACiAjaW5j
bHVkZSAiQXJyYXlDb25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUgIkRGR0Fic3RyYWN0SW50ZXJwcmV0
ZXIuaCIKICNpbmNsdWRlICJET01KSVRHZXR0ZXJTZXR0ZXIuaCIKKyNpbmNsdWRlICJET01KSVRT
aWduYXR1cmUuaCIKICNpbmNsdWRlICJHZXRCeUlkU3RhdHVzLmgiCiAjaW5jbHVkZSAiR2V0dGVy
U2V0dGVyLmgiCiAjaW5jbHVkZSAiSGFzaE1hcEltcGwuaCIKQEAgLTIzMDMsNiArMjMwNCwxMyBA
QCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZm
ZWN0cyh1bnNpZ25lZCBjbG9iYmVyTGltaQogICAgICAgICBmb3JOb2RlKG5vZGUpLnNldFR5cGUo
bV9ncmFwaCwgY2FsbERPTUdldHRlckRhdGEtPmRvbUpJVC0+cmVzdWx0VHlwZSgpKTsKICAgICAg
ICAgYnJlYWs7CiAgICAgfQorICAgIGNhc2UgQ2FsbERPTTogeworICAgICAgICBjb25zdCBET01K
SVQ6OlNpZ25hdHVyZSogc2lnbmF0dXJlID0gbm9kZS0+c2lnbmF0dXJlKCk7CisgICAgICAgIGlm
IChzaWduYXR1cmUtPmVmZmVjdC53cml0ZXMpCisgICAgICAgICAgICBjbG9iYmVyV29ybGQobm9k
ZS0+b3JpZ2luLnNlbWFudGljLCBjbG9iYmVyTGltaXQpOworICAgICAgICBmb3JOb2RlKG5vZGUp
LnNldFR5cGUobV9ncmFwaCwgc2lnbmF0dXJlLT5yZXN1bHQpOworICAgICAgICBicmVhazsKKyAg
ICB9CiAgICAgY2FzZSBDaGVja0FycmF5OiB7CiAgICAgICAgIGlmIChub2RlLT5hcnJheU1vZGUo
KS5hbHJlYWR5Q2hlY2tlZChtX2dyYXBoLCBub2RlLCBmb3JOb2RlKG5vZGUtPmNoaWxkMSgpKSkp
IHsKICAgICAgICAgICAgIG1fc3RhdGUuc2V0Rm91bmRDb25zdGFudHModHJ1ZSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCmluZGV4IDM1ZGMw
Nzg2YTg5Mzc4NWY3MGY3YjMyYzBjZjdiY2RkZTlhN2VkZDkuLjBjMjYxZDFjOTQ5YWMxZDgzOWNj
MWQ5M2U3ZWI5N2NjYjQwYmQ0MTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQnl0ZUNvZGVQYXJzZXIuY3BwCkBAIC0yMTIsNiArMjEyLDggQEAgY2xhc3MgQnl0ZUNvZGVQ
YXJzZXIgewogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoZWNrc0Z1bmN0b3I+CiAgICAgYm9vbCBo
YW5kbGVJbnRyaW5zaWNDYWxsKE5vZGUqIGNhbGxlZSwgaW50IHJlc3VsdE9wZXJhbmQsIEludHJp
bnNpYywgaW50IHJlZ2lzdGVyT2Zmc2V0LCBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMs
IFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24sIGNvbnN0IENoZWNrc0Z1bmN0b3ImIGluc2VydENo
ZWNrcyk7CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hlY2tzRnVuY3Rvcj4KKyAgICBib29sIGhh
bmRsZURPTUpJVENhbGwoTm9kZSogY2FsbGVlLCBpbnQgcmVzdWx0T3BlcmFuZCwgY29uc3QgRE9N
SklUOjpTaWduYXR1cmUqLCBpbnQgcmVnaXN0ZXJPZmZzZXQsIGludCBhcmd1bWVudENvdW50SW5j
bHVkaW5nVGhpcywgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbiwgY29uc3QgQ2hlY2tzRnVuY3Rv
ciYgaW5zZXJ0Q2hlY2tzKTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGVja3NGdW5jdG9yPgog
ICAgIGJvb2wgaGFuZGxlSW50cmluc2ljR2V0dGVyKGludCByZXN1bHRPcGVyYW5kLCBjb25zdCBH
ZXRCeUlkVmFyaWFudCYgaW50cmluc2ljVmFyaWFudCwgTm9kZSogdGhpc05vZGUsIGNvbnN0IENo
ZWNrc0Z1bmN0b3ImIGluc2VydENoZWNrcyk7CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hlY2tz
RnVuY3Rvcj4KICAgICBib29sIGhhbmRsZVR5cGVkQXJyYXlDb25zdHJ1Y3RvcihpbnQgcmVzdWx0
T3BlcmFuZCwgSW50ZXJuYWxGdW5jdGlvbiosIGludCByZWdpc3Rlck9mZnNldCwgaW50IGFyZ3Vt
ZW50Q291bnRJbmNsdWRpbmdUaGlzLCBUeXBlZEFycmF5VHlwZSwgY29uc3QgQ2hlY2tzRnVuY3Rv
ciYgaW5zZXJ0Q2hlY2tzKTsKQEAgLTgxNywxOCArODE5LDE4IEBAIGNsYXNzIEJ5dGVDb2RlUGFy
c2VyIHsKICAgICB9CiAgICAgCiAgICAgTm9kZSogYWRkQ2FsbCgKLSAgICAgICAgaW50IHJlc3Vs
dCwgTm9kZVR5cGUgb3AsIE9wSW5mbyBvcEluZm8sIE5vZGUqIGNhbGxlZSwgaW50IGFyZ0NvdW50
LCBpbnQgcmVnaXN0ZXJPZmZzZXQsCisgICAgICAgIGludCByZXN1bHQsIE5vZGVUeXBlIG9wLCBj
b25zdCBET01KSVQ6OlNpZ25hdHVyZSogc2lnbmF0dXJlLCBOb2RlKiBjYWxsZWUsIGludCBhcmdD
b3VudCwgaW50IHJlZ2lzdGVyT2Zmc2V0LAogICAgICAgICBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0
aW9uKQogICAgIHsKICAgICAgICAgaWYgKG9wID09IFRhaWxDYWxsKSB7CiAgICAgICAgICAgICBp
ZiAoYWxsSW5saW5lRnJhbWVzQXJlVGFpbENhbGxzKCkpCi0gICAgICAgICAgICAgICAgcmV0dXJu
IGFkZENhbGxXaXRob3V0U2V0dGluZ1Jlc3VsdChvcCwgT3BJbmZvKCksIGNhbGxlZSwgYXJnQ291
bnQsIHJlZ2lzdGVyT2Zmc2V0LCBPcEluZm8oKSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIGFk
ZENhbGxXaXRob3V0U2V0dGluZ1Jlc3VsdChvcCwgT3BJbmZvKHNpZ25hdHVyZSksIGNhbGxlZSwg
YXJnQ291bnQsIHJlZ2lzdGVyT2Zmc2V0LCBPcEluZm8oKSk7CiAgICAgICAgICAgICBvcCA9IFRh
aWxDYWxsSW5saW5lZENhbGxlcjsKICAgICAgICAgfQogCiAKICAgICAgICAgTm9kZSogY2FsbCA9
IGFkZENhbGxXaXRob3V0U2V0dGluZ1Jlc3VsdCgKLSAgICAgICAgICAgIG9wLCBvcEluZm8sIGNh
bGxlZSwgYXJnQ291bnQsIHJlZ2lzdGVyT2Zmc2V0LCBPcEluZm8ocHJlZGljdGlvbikpOworICAg
ICAgICAgICAgb3AsIE9wSW5mbyhzaWduYXR1cmUpLCBjYWxsZWUsIGFyZ0NvdW50LCByZWdpc3Rl
ck9mZnNldCwgT3BJbmZvKHByZWRpY3Rpb24pKTsKICAgICAgICAgVmlydHVhbFJlZ2lzdGVyIHJl
c3VsdFJlZyhyZXN1bHQpOwogICAgICAgICBpZiAocmVzdWx0UmVnLmlzVmFsaWQoKSkKICAgICAg
ICAgICAgIHNldChyZXN1bHRSZWcsIGNhbGwpOwpAQCAtMTI4Myw3ICsxMjg1LDcgQEAgQnl0ZUNv
ZGVQYXJzZXI6OlRlcm1pbmFsaXR5IEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVDYWxsKAogICAgICAg
ICAvLyBPZGRseSwgdGhpcyBjb25mbGF0ZXMgY2FsbHMgdGhhdCBoYXZlbid0IGV4ZWN1dGVkIHdp
dGggY2FsbHMgdGhhdCBiZWhhdmVkIHN1ZmZpY2llbnRseSBwb2x5bW9ycGhpY2FsbHkKICAgICAg
ICAgLy8gdGhhdCB3ZSBjYW5ub3Qgb3B0aW1pemUgdGhlbS4KIAotICAgICAgICBOb2RlKiBjYWxs
Tm9kZSA9IGFkZENhbGwocmVzdWx0LCBvcCwgT3BJbmZvKCksIGNhbGxUYXJnZXQsIGFyZ3VtZW50
Q291bnRJbmNsdWRpbmdUaGlzLCByZWdpc3Rlck9mZnNldCwgcHJlZGljdGlvbik7CisgICAgICAg
IE5vZGUqIGNhbGxOb2RlID0gYWRkQ2FsbChyZXN1bHQsIG9wLCBudWxscHRyLCBjYWxsVGFyZ2V0
LCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgcmVnaXN0ZXJPZmZzZXQsIHByZWRpY3Rpb24p
OwogICAgICAgICBpZiAoY2FsbE5vZGUtPm9wKCkgPT0gVGFpbENhbGwpCiAgICAgICAgICAgICBy
ZXR1cm4gVGVybWluYWw7CiAgICAgICAgIEFTU0VSVChjYWxsTm9kZS0+b3AoKSAhPSBUYWlsQ2Fs
bFZhcmFyZ3MgJiYgY2FsbE5vZGUtPm9wKCkgIT0gVGFpbENhbGxGb3J3YXJkVmFyYXJncyk7CkBA
IC0xMjk4LDcgKzEzMDAsNyBAQCBCeXRlQ29kZVBhcnNlcjo6VGVybWluYWxpdHkgQnl0ZUNvZGVQ
YXJzZXI6OmhhbmRsZUNhbGwoCiAgICAgICAgIHJldHVybiBOb25UZXJtaW5hbDsKICAgICB9CiAg
ICAgCi0gICAgTm9kZSogY2FsbE5vZGUgPSBhZGRDYWxsKHJlc3VsdCwgb3AsIE9wSW5mbygpLCBj
YWxsVGFyZ2V0LCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgcmVnaXN0ZXJPZmZzZXQsIHBy
ZWRpY3Rpb24pOworICAgIE5vZGUqIGNhbGxOb2RlID0gYWRkQ2FsbChyZXN1bHQsIG9wLCBudWxs
cHRyLCBjYWxsVGFyZ2V0LCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgcmVnaXN0ZXJPZmZz
ZXQsIHByZWRpY3Rpb24pOwogICAgIGlmIChjYWxsTm9kZS0+b3AoKSA9PSBUYWlsQ2FsbCkKICAg
ICAgICAgcmV0dXJuIFRlcm1pbmFsOwogICAgIEFTU0VSVChjYWxsTm9kZS0+b3AoKSAhPSBUYWls
Q2FsbFZhcmFyZ3MgJiYgY2FsbE5vZGUtPm9wKCkgIT0gVGFpbENhbGxGb3J3YXJkVmFyYXJncyk7
CkBAIC0xNzI1LDYgKzE3MjcsMTkgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6YXR0ZW1wdFRvSW5s
aW5lQ2FsbChOb2RlKiBjYWxsVGFyZ2V0Tm9kZSwgaW50IHJlc3VsdE9wZXJhbmQKICAgICAgICAg
ICAgIFJFTEVBU0VfQVNTRVJUKCFkaWRJbnNlcnRDaGVja3MpOwogICAgICAgICAgICAgLy8gV2Ug
bWlnaHQgc3RpbGwgdHJ5IHRvIGlubGluZSB0aGUgSW50cmluc2ljIGJlY2F1c2UgaXQgbWlnaHQg
YmUgYSBidWlsdGluIEpTIGZ1bmN0aW9uLgogICAgICAgICB9CisKKyAgICAgICAgaWYgKE9wdGlv
bnM6OnVzZURPTUpJVCgpKSB7CisgICAgICAgICAgICBpZiAoY29uc3QgRE9NSklUOjpTaWduYXR1
cmUqIHNpZ25hdHVyZSA9IGNhbGxlZS5zaWduYXR1cmVGb3Ioc3BlY2lhbGl6YXRpb25LaW5kKSkg
eworICAgICAgICAgICAgICAgIGlmIChoYW5kbGVET01KSVRDYWxsKGNhbGxUYXJnZXROb2RlLCBy
ZXN1bHRPcGVyYW5kLCBzaWduYXR1cmUsIHJlZ2lzdGVyT2Zmc2V0LCBhcmd1bWVudENvdW50SW5j
bHVkaW5nVGhpcywgcHJlZGljdGlvbiwgaW5zZXJ0Q2hlY2tzV2l0aEFjY291bnRpbmcpKSB7Cisg
ICAgICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGRpZEluc2VydENoZWNrcyk7CisgICAg
ICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoUGhhbnRvbSwgY2FsbFRhcmdldE5vZGUpOworICAg
ICAgICAgICAgICAgICAgICBlbWl0QXJndW1lbnRQaGFudG9tcyhyZWdpc3Rlck9mZnNldCwgYXJn
dW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpOworICAgICAgICAgICAgICAgICAgICBpbmxpbmluZ0Jh
bGFuY2UtLTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKCFkaWRJbnNlcnRDaGVja3MpOwor
ICAgICAgICAgICAgfQorICAgICAgICB9CiAgICAgfQogICAgIAogICAgIHVuc2lnbmVkIG15SW5s
aW5pbmdDb3N0ID0gaW5saW5pbmdDb3N0KGNhbGxlZSwgYXJndW1lbnRDb3VudEluY2x1ZGluZ1Ro
aXMsIElubGluZUNhbGxGcmFtZTo6Y2FsbE1vZGVGb3Ioa2luZCkpOwpAQCAtMjA1MCw3ICsyMDY1
LDcgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW5saW5pbmcoCiAgICAgTm9kZSogbXlD
YWxsVGFyZ2V0Tm9kZSA9IGdldERpcmVjdChjYWxsZWVSZWcpOwogICAgIGlmIChjb3VsZFRha2VT
bG93UGF0aCkgewogICAgICAgICBhZGRDYWxsKAotICAgICAgICAgICAgcmVzdWx0T3BlcmFuZCwg
Y2FsbE9wLCBPcEluZm8oKSwgbXlDYWxsVGFyZ2V0Tm9kZSwgYXJndW1lbnRDb3VudEluY2x1ZGlu
Z1RoaXMsCisgICAgICAgICAgICByZXN1bHRPcGVyYW5kLCBjYWxsT3AsIG51bGxwdHIsIG15Q2Fs
bFRhcmdldE5vZGUsIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLAogICAgICAgICAgICAgcmVn
aXN0ZXJPZmZzZXQsIHByZWRpY3Rpb24pOwogICAgIH0gZWxzZSB7CiAgICAgICAgIGFkZFRvR3Jh
cGgoQ2hlY2tCYWRDZWxsKTsKQEAgLTI2MDAsNiArMjYxNSwyMCBAQCBib29sIEJ5dGVDb2RlUGFy
c2VyOjpoYW5kbGVJbnRyaW5zaWNDYWxsKE5vZGUqIGNhbGxlZSwgaW50IHJlc3VsdE9wZXJhbmQs
IEludHJpbgogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGVja3NGdW5jdG9yPgorYm9vbCBCeXRl
Q29kZVBhcnNlcjo6aGFuZGxlRE9NSklUQ2FsbChOb2RlKiBjYWxsVGFyZ2V0LCBpbnQgcmVzdWx0
T3BlcmFuZCwgY29uc3QgRE9NSklUOjpTaWduYXR1cmUqIHNpZ25hdHVyZSwgaW50IHJlZ2lzdGVy
T2Zmc2V0LCBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIFNwZWN1bGF0ZWRUeXBlIHBy
ZWRpY3Rpb24sIGNvbnN0IENoZWNrc0Z1bmN0b3ImIGluc2VydENoZWNrcykKK3sKKyAgICBpZiAo
YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgIT0gc3RhdGljX2Nhc3Q8aW50PigxICsgc2lnbmF0
dXJlLT5hcmd1bWVudENvdW50KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmIChtX2lu
bGluZVN0YWNrVG9wLT5tX2V4aXRQcm9maWxlLmhhc0V4aXRTaXRlKG1fY3VycmVudEluZGV4LCBC
YWRUeXBlKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaW5zZXJ0Q2hlY2tzKCk7Cisg
ICAgYWRkQ2FsbChyZXN1bHRPcGVyYW5kLCBDYWxsLCBzaWduYXR1cmUsIGNhbGxUYXJnZXQsIGFy
Z3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCByZWdpc3Rlck9mZnNldCwgcHJlZGljdGlvbik7Cisg
ICAgcmV0dXJuIHRydWU7Cit9CisKKwordGVtcGxhdGU8dHlwZW5hbWUgQ2hlY2tzRnVuY3Rvcj4K
IGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUludHJpbnNpY0dldHRlcihpbnQgcmVzdWx0T3Bl
cmFuZCwgY29uc3QgR2V0QnlJZFZhcmlhbnQmIHZhcmlhbnQsIE5vZGUqIHRoaXNOb2RlLCBjb25z
dCBDaGVja3NGdW5jdG9yJiBpbnNlcnRDaGVja3MpCiB7CiAgICAgc3dpdGNoICh2YXJpYW50Lmlu
dHJpbnNpYygpKSB7CkBAIC00NzkxLDcgKzQ4MjAsNyBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpw
YXJzZUJsb2NrKHVuc2lnbmVkIGxpbWl0KQogICAgICAgICAgICAgaW50IGNhbGxlZSA9IGN1cnJl
bnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBpbnQgYXJndW1lbnRDb3Vu
dEluY2x1ZGluZ1RoaXMgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bM10udS5vcGVyYW5kOwogICAgICAg
ICAgICAgaW50IHJlZ2lzdGVyT2Zmc2V0ID0gLWN1cnJlbnRJbnN0cnVjdGlvbls0XS51Lm9wZXJh
bmQ7Ci0gICAgICAgICAgICBhZGRDYWxsKHJlc3VsdCwgQ2FsbEV2YWwsIE9wSW5mbygpLCBnZXQo
VmlydHVhbFJlZ2lzdGVyKGNhbGxlZSkpLCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgcmVn
aXN0ZXJPZmZzZXQsIGdldFByZWRpY3Rpb24oKSk7CisgICAgICAgICAgICBhZGRDYWxsKHJlc3Vs
dCwgQ2FsbEV2YWwsIG51bGxwdHIsIGdldChWaXJ0dWFsUmVnaXN0ZXIoY2FsbGVlKSksIGFyZ3Vt
ZW50Q291bnRJbmNsdWRpbmdUaGlzLCByZWdpc3Rlck9mZnNldCwgZ2V0UHJlZGljdGlvbigpKTsK
ICAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX2NhbGxfZXZhbCk7CiAgICAgICAgIH0KICAgICAg
ICAgICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVy
aXplLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaAppbmRleCBi
NjIxZWYwMjJkODg2NWUyZTdhMjAxMTZjZDIwOGM1YzI0NmM5ZmZiLi5lNWQyMTcyZjlhZTBlNzkx
YWFhMmE2ODJiYWIxNGViYTkzMDY3ZGJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0Nsb2JiZXJpemUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0Nsb2JiZXJpemUuaApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIkRGR0xhenlOb2RlLmgi
CiAjaW5jbHVkZSAiREZHUHVyZVZhbHVlLmgiCiAjaW5jbHVkZSAiRE9NSklUQ2FsbERPTUdldHRl
clBhdGNocG9pbnQuaCIKKyNpbmNsdWRlICJET01KSVRTaWduYXR1cmUuaCIKIAogbmFtZXNwYWNl
IEpTQyB7IG5hbWVzcGFjZSBERkcgewogCkBAIC05NTgsMjAgKzk1OSwzOCBAQCB2b2lkIGNsb2Ji
ZXJpemUoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlLCBjb25zdCBSZWFkRnVuY3RvciYgcmVhZCwg
Y29uc3QgV3JpdGVGdQogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgIHdyaXRlKEFi
c3RyYWN0SGVhcChET01TdGF0ZSwgZWZmZWN0LndyaXRlcy5yYXdSZXByZXNlbnRhdGlvbigpKSk7
CiAgICAgICAgIH0KLSAgICAgICAgaWYgKGVmZmVjdC5kZWYpIHsKLSAgICAgICAgICAgIERPTUpJ
VDo6SGVhcFJhbmdlIHJhbmdlID0gZWZmZWN0LmRlZi52YWx1ZSgpOworICAgICAgICBpZiAoZWZm
ZWN0LmRlZiAhPSBET01KSVQ6OkhlYXBSYW5nZTo6dG9wKCkpIHsKKyAgICAgICAgICAgIERPTUpJ
VDo6SGVhcFJhbmdlIHJhbmdlID0gZWZmZWN0LmRlZjsKICAgICAgICAgICAgIGlmIChyYW5nZSA9
PSBET01KSVQ6OkhlYXBSYW5nZTo6bm9uZSgpKQogICAgICAgICAgICAgICAgIGRlZihQdXJlVmFs
dWUobm9kZSwgbm9kZS0+Y2FsbERPTUdldHRlckRhdGEoKS0+ZG9tSklUKSk7CiAgICAgICAgICAg
ICBlbHNlIHsKICAgICAgICAgICAgICAgICAvLyBEZWYgd2l0aCBoZWFwIGxvY2F0aW9uLiBXZSBk
byBub3QgaW5jbHVkZSAiR2xvYmFsT2JqZWN0IiBmb3IgdGhhdCBzaW5jZSB0aGlzIGluZm9ybWF0
aW9uIGlzIGluY2x1ZGVkIGluIHRoZSBiYXNlIG5vZGUuCi0gICAgICAgICAgICAgICAgLy8gRklY
TUU6IFdoZW4gc3VwcG9ydGluZyB0aGUgb3RoZXIgbm9kZXMgbGlrZSBnZXRFbGVtZW50QnlJZCgi
c3RyaW5nIiksIHdlIHNob3VsZCBpbmNsdWRlIHRoZSBiYXNlIGFuZCB0aGUgaWQgc3RyaW5nLgot
ICAgICAgICAgICAgICAgIC8vIEN1cnJlbnRseSwgd2Ugb25seSBzZWUgdGhlIERPTUpJVCBnZXR0
ZXIgaGVyZS4gU28ganVzdCBpbmNsdWRpbmcgImJhc2UiIGlzIG9rLgorICAgICAgICAgICAgICAg
IC8vIFdlIG9ubHkgc2VlIHRoZSBET01KSVQgZ2V0dGVyIGhlcmUuIFNvIGp1c3QgaW5jbHVkaW5n
ICJiYXNlIiBpcyBvay4KICAgICAgICAgICAgICAgICBkZWYoSGVhcExvY2F0aW9uKERPTVN0YXRl
TG9jLCBBYnN0cmFjdEhlYXAoRE9NU3RhdGUsIHJhbmdlLnJhd1JlcHJlc2VudGF0aW9uKCkpLCBu
b2RlLT5jaGlsZDEoKSksIExhenlOb2RlKG5vZGUpKTsKICAgICAgICAgICAgIH0KICAgICAgICAg
fQogICAgICAgICByZXR1cm47CiAgICAgfQogCisgICAgY2FzZSBDYWxsRE9NOiB7CisgICAgICAg
IGNvbnN0IERPTUpJVDo6U2lnbmF0dXJlKiBzaWduYXR1cmUgPSBub2RlLT5zaWduYXR1cmUoKTsK
KyAgICAgICAgRE9NSklUOjpFZmZlY3QgZWZmZWN0ID0gc2lnbmF0dXJlLT5lZmZlY3Q7CisgICAg
ICAgIGlmIChlZmZlY3QucmVhZHMpIHsKKyAgICAgICAgICAgIGlmIChlZmZlY3QucmVhZHMgPT0g
RE9NSklUOjpIZWFwUmFuZ2U6OnRvcCgpKQorICAgICAgICAgICAgICAgIHJlYWQoV29ybGQpOwor
ICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHJlYWQoQWJzdHJhY3RIZWFwKERPTVN0
YXRlLCBlZmZlY3QucmVhZHMucmF3UmVwcmVzZW50YXRpb24oKSkpOworICAgICAgICB9CisgICAg
ICAgIGlmIChlZmZlY3Qud3JpdGVzKSB7CisgICAgICAgICAgICBpZiAoZWZmZWN0LndyaXRlcyA9
PSBET01KSVQ6OkhlYXBSYW5nZTo6dG9wKCkpCisgICAgICAgICAgICAgICAgd3JpdGUoSGVhcCk7
CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgd3JpdGUoQWJzdHJhY3RIZWFwKERP
TVN0YXRlLCBlZmZlY3Qud3JpdGVzLnJhd1JlcHJlc2VudGF0aW9uKCkpKTsKKyAgICAgICAgfQor
ICAgICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKGVmZmVjdC5kZWYgPT0gRE9NSklUOjpIZWFwUmFu
Z2U6OnRvcCgpLCAiQ3VycmVudGx5LCB3ZSBkbyBub3QgYWNjZXB0IGFueSBkZWYgZm9yIENhbGxE
T00uIik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKICAgICBjYXNlIEFycmF5aWZ5OgogICAg
IGNhc2UgQXJyYXlpZnlUb1N0cnVjdHVyZToKICAgICAgICAgcmVhZChKU0NlbGxfc3RydWN0dXJl
SUQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCmluZGV4IDk3Y2Q4NDg3
NDc3YWM5MDg0ZmU5MGRkYjk4ZDMwZjQ2NmU1Y2ExNmYuLjllNmFhNTUwYTQ0ZTBlMWM2MjE3NWU1
MTlmNjBhM2U4NTE1YTdiN2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHRG9lc0dDLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5j
cHAKQEAgLTMwMSw2ICszMDEsNyBAQCBib29sIGRvZXNHQyhHcmFwaCYgZ3JhcGgsIE5vZGUqIG5v
ZGUpCiAgICAgY2FzZSBDcmVhdGVSZXN0OgogICAgIGNhc2UgVG9Mb3dlckNhc2U6CiAgICAgY2Fz
ZSBDYWxsRE9NR2V0dGVyOgorICAgIGNhc2UgQ2FsbERPTToKICAgICAgICAgcmV0dXJuIHRydWU7
CiAgICAgICAgIAogICAgIGNhc2UgTXVsdGlQdXRCeU9mZnNldDoKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCmluZGV4IDFkNGU5MDdhN2YyZmZjYzJkOWEyYTAz
NzcxMTQ2YTc5MTAxZjNjZDMuLjEyZWY0Y2Q4YTRkOTgyN2IxZTJiNGNlOGJlOTA3YzhiMzYwNjg3
MjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcApAQCAt
MTcwOCw5ICsxNzA4LDEwIEBAIGNsYXNzIEZpeHVwUGhhc2UgOiBwdWJsaWMgUGhhc2UgewogICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIAotICAgICAgICBjYXNlIENoZWNrRE9NOgotICAg
ICAgICAgICAgZml4RWRnZTxDZWxsVXNlPihub2RlLT5jaGlsZDEoKSk7CisgICAgICAgIGNhc2Ug
Q2hlY2tET006IHsKKyAgICAgICAgICAgIGZpeHVwQ2hlY2tET00obm9kZSk7CiAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgfQogCiAgICAgICAgIGNhc2UgQ2FsbERPTUdldHRlcjogewogICAg
ICAgICAgICAgRE9NSklUOjpDYWxsRE9NR2V0dGVyUGF0Y2hwb2ludCogcGF0Y2hwb2ludCA9IG5v
ZGUtPmNhbGxET01HZXR0ZXJEYXRhKCktPnBhdGNocG9pbnQ7CkBAIC0xNzIwLDYgKzE3MjEsMTYg
QEAgY2xhc3MgRml4dXBQaGFzZSA6IHB1YmxpYyBQaGFzZSB7CiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgfQogCisgICAgICAgIGNhc2UgQ2FsbERPTTogeworICAgICAgICAgICAgZml4dXBD
YWxsRE9NKG5vZGUpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAgICBj
YXNlIENhbGw6IHsKKyAgICAgICAgICAgIGF0dGVtcHRUb01ha2VDYWxsRE9NKG5vZGUpOworICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKwogI2lmICFBU1NFUlRfRElTQUJMRUQKICAgICAg
ICAgLy8gSGF2ZSB0aGVzZSBuby1vcCBjYXNlcyBoZXJlIHRvIGVuc3VyZSB0aGF0IG5vYm9keSBm
b3JnZXRzIHRvIGFkZCBoYW5kbGVycyBmb3IgbmV3IG9wY29kZXMuCiAgICAgICAgIGNhc2UgU2V0
QXJndW1lbnQ6CkBAIC0xNzM2LDcgKzE3NDcsNiBAQCBjbGFzcyBGaXh1cFBoYXNlIDogcHVibGlj
IFBoYXNlIHsKICAgICAgICAgY2FzZSBHZXRHbG9iYWxWYXI6CiAgICAgICAgIGNhc2UgR2V0R2xv
YmFsTGV4aWNhbFZhcmlhYmxlOgogICAgICAgICBjYXNlIE5vdGlmeVdyaXRlOgotICAgICAgICBj
YXNlIENhbGw6CiAgICAgICAgIGNhc2UgRGlyZWN0Q2FsbDoKICAgICAgICAgY2FzZSBDaGVja1R5
cGVJbmZvRmxhZ3M6CiAgICAgICAgIGNhc2UgVGFpbENhbGxJbmxpbmVkQ2FsbGVyOgpAQCAtMjY1
OSw2ICsyNjY5LDkwIEBAIGNsYXNzIEZpeHVwUGhhc2UgOiBwdWJsaWMgUGhhc2UgewogICAgICAg
ICAgICAgT3BJbmZvKGFycmF5TW9kZS5hc1dvcmQoKSksIEVkZ2UoY2hpbGQsIEtub3duQ2VsbFVz
ZSksIEVkZ2Uoc3RvcmFnZSkpOwogICAgIH0KICAgICAKKyAgICBib29sIGF0dGVtcHRUb01ha2VD
YWxsRE9NKE5vZGUqIG5vZGUpCisgICAgeworICAgICAgICBpZiAobV9ncmFwaC5oYXNFeGl0U2l0
ZShub2RlLT5vcmlnaW4uc2VtYW50aWMsIEJhZFR5cGUpKQorICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOworCisgICAgICAgIGNvbnN0IERPTUpJVDo6U2lnbmF0dXJlKiBzaWduYXR1cmUgPSBub2Rl
LT5zaWduYXR1cmUoKTsKKyAgICAgICAgaWYgKCFzaWduYXR1cmUpCisgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CisKKyAgICAgICAgeworICAgICAgICAgICAgdW5zaWduZWQgaW5kZXggPSAwOwor
ICAgICAgICAgICAgYm9vbCBzaG91bGRDb252ZXJ0VG9DYWxsRE9NID0gdHJ1ZTsKKyAgICAgICAg
ICAgIG1fZ3JhcGguZG9Ub0NoaWxkcmVuKG5vZGUsIFsmXShFZGdlJiBlZGdlKSB7CisgICAgICAg
ICAgICAgICAgLy8gQ2FsbGVlLiBJZ25vcmUgdGhpcy4gREZHQnl0ZUNvZGVQYXJzZXIgYWxyZWFk
eSBlbWl0IGFwcHJvcHJpYXRlIGNoZWNrcy4KKyAgICAgICAgICAgICAgICBpZiAoIWluZGV4KQor
ICAgICAgICAgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgICAgICAgICBpZiAoaW5kZXgg
PT0gMSkgeworICAgICAgICAgICAgICAgICAgICAvLyBET00gbm9kZSBjYXNlLgorICAgICAgICAg
ICAgICAgICAgICBpZiAoZWRnZS0+c2hvdWxkU3BlY3VsYXRlTm90Q2VsbCgpKQorICAgICAgICAg
ICAgICAgICAgICAgICAgc2hvdWxkQ29udmVydFRvQ2FsbERPTSA9IGZhbHNlOworICAgICAgICAg
ICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoc2lnbmF0dXJlLT5h
cmd1bWVudHNbaW5kZXggLSAyXSkgeworICAgICAgICAgICAgICAgICAgICBjYXNlIFNwZWNTdHJp
bmc6CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZWRnZS0+c2hvdWxkU3BlY3VsYXRlTm90
U3RyaW5nKCkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hvdWxkQ29udmVydFRvQ2Fs
bERPTSA9IGZhbHNlOworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICAgICAgICAgIGNhc2UgU3BlY0ludDMyT25seToKKyAgICAgICAgICAgICAgICAgICAgICAgIGlm
IChlZGdlLT5zaG91bGRTcGVjdWxhdGVOb3RJbnQzMigpKQorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHNob3VsZENvbnZlcnRUb0NhbGxET00gPSBmYWxzZTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICBjYXNlIFNwZWNCb29sZWFuOgorICAg
ICAgICAgICAgICAgICAgICAgICAgaWYgKGVkZ2UtPnNob3VsZFNwZWN1bGF0ZU5vdEJvb2xlYW4o
KSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaG91bGRDb252ZXJ0VG9DYWxsRE9NID0g
ZmFsc2U7CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICArK2luZGV4OworICAgICAg
ICAgICAgfSk7CisgICAgICAgICAgICBpZiAoIXNob3VsZENvbnZlcnRUb0NhbGxET00pCisgICAg
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisKKyAgICAgICAgTm9kZSogdGhp
c05vZGUgPSBtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDEpLm5vZGUoKTsKKyAgICAgICAgUmVm
PERPTUpJVDo6UGF0Y2hwb2ludD4gY2hlY2tET01QYXRjaHBvaW50ID0gc2lnbmF0dXJlLT5jaGVj
a0RPTSgpOworICAgICAgICBtX2dyYXBoLm1fZG9tSklUUGF0Y2hwb2ludHMuYXBwZW5kKGNoZWNr
RE9NUGF0Y2hwb2ludC5wdHIoKSk7CisgICAgICAgIE5vZGUqIGNoZWNrRE9NID0gbV9pbnNlcnRp
b25TZXQuaW5zZXJ0Tm9kZShtX2luZGV4SW5CbG9jaywgU3BlY05vbmUsIENoZWNrRE9NLCBub2Rl
LT5vcmlnaW4sIE9wSW5mbyhjaGVja0RPTVBhdGNocG9pbnQucHRyKCkpLCBPcEluZm8oc2lnbmF0
dXJlLT5jbGFzc0luZm8pLCBFZGdlKHRoaXNOb2RlKSk7CisgICAgICAgIG5vZGUtPmNvbnZlcnRU
b0NhbGxET00obV9ncmFwaCk7CisgICAgICAgIGZpeHVwQ2hlY2tET00oY2hlY2tET00pOworICAg
ICAgICBmaXh1cENhbGxET00obm9kZSk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKwor
ICAgIHZvaWQgZml4dXBDaGVja0RPTShOb2RlKiBub2RlKQorICAgIHsKKyAgICAgICAgZml4RWRn
ZTxDZWxsVXNlPihub2RlLT5jaGlsZDEoKSk7CisgICAgfQorCisgICAgdm9pZCBmaXh1cENhbGxE
T00oTm9kZSogbm9kZSkKKyAgICB7CisgICAgICAgIGNvbnN0IERPTUpJVDo6U2lnbmF0dXJlKiBz
aWduYXR1cmUgPSBub2RlLT5zaWduYXR1cmUoKTsKKyAgICAgICAgYXV0byBmaXh1cCA9IFsmXShF
ZGdlJiBlZGdlLCBpbnQgYXJndW1lbnRJbmRleCkgeworICAgICAgICAgICAgaWYgKCFlZGdlKQor
ICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIHN3aXRjaCAoc2lnbmF0dXJlLT5h
cmd1bWVudHNbYXJndW1lbnRJbmRleF0pIHsKKyAgICAgICAgICAgIGNhc2UgU3BlY1N0cmluZzoK
KyAgICAgICAgICAgICAgICBmaXhFZGdlPFN0cmluZ1VzZT4oZWRnZSk7CisgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIFNwZWNJbnQzMk9ubHk6CisgICAgICAgICAgICAg
ICAgZml4RWRnZTxJbnQzMlVzZT4oZWRnZSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICBjYXNlIFNwZWNCb29sZWFuOgorICAgICAgICAgICAgICAgIGZpeEVkZ2U8Qm9vbGVh
blVzZT4oZWRnZSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBkZWZhdWx0
OgorICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH07CisgICAgICAgIGZpeEVk
Z2U8Q2VsbFVzZT4obm9kZS0+Y2hpbGQxKCkpOyAvLyBET00uCisgICAgICAgIGZpeHVwKG5vZGUt
PmNoaWxkMigpLCAwKTsKKyAgICAgICAgZml4dXAobm9kZS0+Y2hpbGQzKCksIDEpOworICAgIH0K
KwogICAgIHZvaWQgZml4dXBDaGVja3NJbkJsb2NrKEJhc2ljQmxvY2sqIGJsb2NrKQogICAgIHsK
ICAgICAgICAgaWYgKCFibG9jaykKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHTm9kZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuY3BwCmlu
ZGV4IGYzNzExN2JmOTY5ZmU0YjY5ZDk1ZjAwMWQ1Njg4MDQ2YmRjZDk0NTAuLmNlMjVjMGRkMTMy
MTBiZTEyYWI5NTc5MDJkYmE2NjlhN2JkODZkZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHTm9kZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdOb2RlLmNwcApAQCAtMjIwLDYgKzIyMCwyNSBAQCB2b2lkIE5vZGU6OmNvbnZlcnRUb0RpcmVj
dENhbGwoRnJvemVuVmFsdWUqIGV4ZWN1dGFibGUpCiAgICAgbV9vcEluZm8gPSBleGVjdXRhYmxl
OwogfQogCit2b2lkIE5vZGU6OmNvbnZlcnRUb0NhbGxET00oR3JhcGgmIGdyYXBoKQoreworICAg
IEFTU0VSVChvcCgpID09IENhbGwpOworICAgIEFTU0VSVChzaWduYXR1cmUoKSk7CisKKyAgICBF
ZGdlIGVkZ2VzWzNdOworICAgIC8vIFNraXAgdGhlIGZpcnN0IG9uZS4gVGhpcyBpcyBjYWxsZWUu
CisgICAgZm9yICh1bnNpZ25lZCBpID0gMSwgaXogPSBudW1DaGlsZHJlbigpOyBpIDwgaXo7ICsr
aSkKKyAgICAgICAgZWRnZXNbaSAtIDFdID0gZ3JhcGgudmFyQXJnQ2hpbGQodGhpcywgaSk7CisK
KyAgICBzZXRPcEFuZERlZmF1bHRGbGFncyhDYWxsRE9NKTsKKyAgICBjaGlsZHJlbi5zZXRDaGls
ZDEoZWRnZXNbMF0pOworICAgIGNoaWxkcmVuLnNldENoaWxkMihlZGdlc1sxXSk7CisgICAgY2hp
bGRyZW4uc2V0Q2hpbGQzKGVkZ2VzWzJdKTsKKworICAgIGlmICghc2lnbmF0dXJlKCktPmVmZmVj
dC5tdXN0R2VuZXJhdGUoKSkKKyAgICAgICAgY2xlYXJGbGFncyhOb2RlTXVzdEdlbmVyYXRlKTsK
K30KKwogU3RyaW5nIE5vZGU6OnRyeUdldFN0cmluZyhHcmFwaCYgZ3JhcGgpCiB7CiAgICAgaWYg
KGhhc0NvbnN0YW50KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R05vZGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCmluZGV4IDg4Zjg4
MTE4OTBlMTc3M2VhMWQ2MDJlOWNhYzljNTgxZGE0ZjliOWIuLjgzMDlhYTMwOWEwYTllNjE0MmNj
YTI5NTE5MjhlYWRhYjk3MmE1YjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHTm9kZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCkBA
IC02Miw2ICs2Miw3IEBAIG5hbWVzcGFjZSBET01KSVQgewogY2xhc3MgR2V0dGVyU2V0dGVyOwog
Y2xhc3MgUGF0Y2hwb2ludDsKIGNsYXNzIENhbGxET01HZXR0ZXJQYXRjaHBvaW50OworY2xhc3Mg
U2lnbmF0dXJlOwogfQogCiBuYW1lc3BhY2UgUHJvZmlsZXIgewpAQCAtNjUyLDYgKzY1Myw4IEBA
IHN0cnVjdCBOb2RlIHsKICAgICB9CiAgICAgCiAgICAgdm9pZCBjb252ZXJ0VG9EaXJlY3RDYWxs
KEZyb3plblZhbHVlKik7CisKKyAgICB2b2lkIGNvbnZlcnRUb0NhbGxET00oR3JhcGgmKTsKICAg
ICAKICAgICBKU1ZhbHVlIGFzSlNWYWx1ZSgpCiAgICAgewpAQCAtMTQ2NCw2ICsxNDY3LDcgQEAg
c3RydWN0IE5vZGUgewogICAgICAgICBjYXNlIFRvTnVtYmVyOgogICAgICAgICBjYXNlIExvYWRG
cm9tSlNNYXBCdWNrZXQ6CiAgICAgICAgIGNhc2UgQ2FsbERPTUdldHRlcjoKKyAgICAgICAgY2Fz
ZSBDYWxsRE9NOgogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIGRlZmF1bHQ6CiAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0xOTgxLDYgKzE5ODUsMTEgQEAgc3RydWN0IE5v
ZGUgewogICAgIHsKICAgICAgICAgcmV0dXJuIGlzSW50MzJTcGVjdWxhdGlvbihwcmVkaWN0aW9u
KCkpOwogICAgIH0KKworICAgIGJvb2wgc2hvdWxkU3BlY3VsYXRlTm90SW50MzIoKQorICAgIHsK
KyAgICAgICAgcmV0dXJuIGlzTm90SW50MzJTcGVjdWxhdGlvbihwcmVkaWN0aW9uKCkpOworICAg
IH0KICAgICAKICAgICBib29sIHNhd0Jvb2xlYW5zKCkKICAgICB7CkBAIC0yMDQxLDYgKzIwNTAs
MTEgQEAgc3RydWN0IE5vZGUgewogICAgIHsKICAgICAgICAgcmV0dXJuIGlzQm9vbGVhblNwZWN1
bGF0aW9uKHByZWRpY3Rpb24oKSk7CiAgICAgfQorCisgICAgYm9vbCBzaG91bGRTcGVjdWxhdGVO
b3RCb29sZWFuKCkKKyAgICB7CisgICAgICAgIHJldHVybiBpc05vdEJvb2xlYW5TcGVjdWxhdGlv
bihwcmVkaWN0aW9uKCkpOworICAgIH0KICAgICAKICAgICBib29sIHNob3VsZFNwZWN1bGF0ZU90
aGVyKCkKICAgICB7CkBAIC0yMDY2LDYgKzIwODAsMTEgQEAgc3RydWN0IE5vZGUgewogICAgIHsK
ICAgICAgICAgcmV0dXJuIGlzU3RyaW5nU3BlY3VsYXRpb24ocHJlZGljdGlvbigpKTsKICAgICB9
CisKKyAgICBib29sIHNob3VsZFNwZWN1bGF0ZU5vdFN0cmluZygpCisgICAgeworICAgICAgICBy
ZXR1cm4gaXNOb3RTdHJpbmdTcGVjdWxhdGlvbihwcmVkaWN0aW9uKCkpOworICAgIH0KICAKICAg
ICBib29sIHNob3VsZFNwZWN1bGF0ZVN0cmluZ09yT3RoZXIoKQogICAgIHsKQEAgLTIzNjgsNiAr
MjM4NywxOCBAQCBzdHJ1Y3QgTm9kZSB7CiAgICAgICAgIHJldHVybiBtX29wSW5mbzIuYXM8Y29u
c3QgQ2xhc3NJbmZvKj4oKTsKICAgICB9CiAKKyAgICBib29sIGhhc1NpZ25hdHVyZSgpIGNvbnN0
CisgICAgeworICAgICAgICAvLyBOb3RlIHRoYXQgdGhpcyBkb2VzIG5vdCBpbmNsdWRlIFRhaWxD
YWxsIHRoaW5neSBpbnRlbnRpb25hbGx5LgorICAgICAgICAvLyBDYWxsRE9NIHRoaW5neSBhcmUg
YWx3YXlzIGNvbnZlcnRlZCBmcm9tIENhbGwuCisgICAgICAgIHJldHVybiBvcCgpID09IENhbGwg
fHwgb3AoKSA9PSBDYWxsRE9NOworICAgIH0KKworICAgIGNvbnN0IERPTUpJVDo6U2lnbmF0dXJl
KiBzaWduYXR1cmUoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fb3BJbmZvLmFzPGNvbnN0IERP
TUpJVDo6U2lnbmF0dXJlKj4oKTsKKyAgICB9CisKICAgICBOb2RlKiByZXBsYWNlbWVudCgpIGNv
bnN0CiAgICAgewogICAgICAgICByZXR1cm4gbV9taXNjLnJlcGxhY2VtZW50OwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCmluZGV4IGQ5NzViNzYyMjBjMDJjMTMxMWMxOTJl
YTlhZDAyZTYwMWE1MjA0ZTAuLmYzNzQyM2NlZWIyMjg2MmI2YzJmYWE1YmJhMDM0NWEzMzZlZjYz
OWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgKQEAgLTQwNyw2ICs0
MDcsNyBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAgICAgLyogTm9kZXMgZm9y
IERPTSBKSVQgKi9cCiAgICAgbWFjcm8oQ2hlY2tET00sIE5vZGVNdXN0R2VuZXJhdGUpIFwKICAg
ICBtYWNybyhDYWxsRE9NR2V0dGVyLCBOb2RlUmVzdWx0SlMgfCBOb2RlTXVzdEdlbmVyYXRlKSBc
CisgICAgbWFjcm8oQ2FsbERPTSwgTm9kZVJlc3VsdEpTIHwgTm9kZU11c3RHZW5lcmF0ZSkgXAog
CiAvLyBUaGlzIGVudW0gZ2VuZXJhdGVzIGEgbW9ub3RvbmljYWxseSBpbmNyZWFzaW5nIGlkIGZv
ciBhbGwgTm9kZSB0eXBlcywKIC8vIGFuZCBpcyB1c2VkIGJ5IHRoZSBzdWJzZXF1ZW50IGVudW0g
dG8gZmlsbCBvdXQgdGhlIGlkIChhcyBhY2Nlc3NlZCB2aWEgdGhlIE5vZGVJZE1hc2spLgpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRp
b25QaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9w
YWdhdGlvblBoYXNlLmNwcAppbmRleCA2ZWQ3MjliM2I4NTczMWMwYTZlNTA5NjcwOWY5ODAxNmE0
YjFmOGUwLi5jMGZkZTk2OWZiYzI0NmM2YjkxODYwMGRjNDdhZjc5YWFkMWE2ZmY5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBo
YXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9w
YWdhdGlvblBoYXNlLmNwcApAQCAtNzEwLDcgKzcxMCw4IEBAIGNsYXNzIFByZWRpY3Rpb25Qcm9w
YWdhdGlvblBoYXNlIDogcHVibGljIFBoYXNlIHsKICAgICAgICAgY2FzZSBHZXRGcm9tQXJndW1l
bnRzOgogICAgICAgICBjYXNlIExvYWRGcm9tSlNNYXBCdWNrZXQ6CiAgICAgICAgIGNhc2UgVG9O
dW1iZXI6Ci0gICAgICAgIGNhc2UgQ2FsbERPTUdldHRlcjogeworICAgICAgICBjYXNlIENhbGxE
T01HZXR0ZXI6CisgICAgICAgIGNhc2UgQ2FsbERPTTogewogICAgICAgICAgICAgc2V0UHJlZGlj
dGlvbihtX2N1cnJlbnROb2RlLT5nZXRIZWFwUHJlZGljdGlvbigpKTsKICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NhZmVUb0V4ZWN1dGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhl
Y3V0ZS5oCmluZGV4IDJjOTk4MDIyNTY2N2RmMzQwNTBkY2E2YTM0ZTg3ZjM0ZDU5OGVkMmIuLjNm
ZTlkYzE1ZGVlMTdiODFkMjJmZjY0NDNmZWQ2N2Y0NzY5NjNjYTAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCkBAIC0yMjAsNiArMjIwLDcgQEAgYm9v
bCBzYWZlVG9FeGVjdXRlKEFic3RyYWN0U3RhdGVUeXBlJiBzdGF0ZSwgR3JhcGgmIGdyYXBoLCBO
b2RlKiBub2RlKQogICAgIGNhc2UgR2V0RXhlY3V0YWJsZToKICAgICBjYXNlIEdldEJ1dHRlcmZs
eToKICAgICBjYXNlIENhbGxET01HZXR0ZXI6CisgICAgY2FzZSBDYWxsRE9NOgogICAgIGNhc2Ug
Q2hlY2tET006CiAgICAgY2FzZSBDaGVja0FycmF5OgogICAgIGNhc2UgQXJyYXlpZnk6CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCmluZGV4IDI3
MzJmZTg1ODQ0ZTUxZjQ2NzBiMGFlNDAzZjJhYzIzNTA0Yzg3MWMuLjlmZGU1NTU0NGNhMWEyMGVl
ODVlODVmNTI1MGVmNjBmN2I1OGIxYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCkBAIC03MjYwLDYgKzcyNjAsODYgQEAgc3RhdGljIHZv
aWQgYWxsb2NhdGVUZW1wb3JhcnlSZWdpc3RlcnNGb3JQYXRjaHBvaW50KFNwZWN1bGF0aXZlSklU
KiBqaXQsIFZlY3RvcjwKICAgICB9CiB9CiAKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVD
YWxsRE9NKE5vZGUqIG5vZGUpCit7CisgICAgY29uc3QgRE9NSklUOjpTaWduYXR1cmUqIHNpZ25h
dHVyZSA9IG5vZGUtPnNpZ25hdHVyZSgpOworCisgICAgLy8gRklYTUU6IFdlIHNob3VsZCBoYXZl
IGEgd2F5IHRvIGNhbGwgZnVuY3Rpb25zIHdpdGggdGhlIHZlY3RvciBvZiByZWdpc3RlcnMuCisg
ICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MzA5OQorICAg
IFZlY3RvcjxWYXJpYW50PFNwZWN1bGF0ZUNlbGxPcGVyYW5kLCBTcGVjdWxhdGVJbnQzMk9wZXJh
bmQsIFNwZWN1bGF0ZUJvb2xlYW5PcGVyYW5kPj4gb3BlcmFuZHM7CisgICAgVmVjdG9yPEdQUlJl
Zz4gcmVnczsKKworICAgIGF1dG8gYXBwZW5kQ2VsbCA9IFsmXShFZGdlJiBlZGdlKSB7CisgICAg
ICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIG9wZXJhbmQodGhpcywgZWRnZSk7CisgICAgICAgIHJl
Z3MuYXBwZW5kKG9wZXJhbmQuZ3ByKCkpOworICAgICAgICBvcGVyYW5kcy5hcHBlbmQoV1RGTW92
ZShvcGVyYW5kKSk7CisgICAgfTsKKworICAgIGF1dG8gYXBwZW5kU3RyaW5nID0gWyZdKEVkZ2Um
IGVkZ2UpIHsKKyAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgb3BlcmFuZCh0aGlzLCBlZGdl
KTsKKyAgICAgICAgR1BSUmVnIGdwciA9IG9wZXJhbmQuZ3ByKCk7CisgICAgICAgIHJlZ3MuYXBw
ZW5kKGdwcik7CisgICAgICAgIHNwZWN1bGF0ZVN0cmluZyhlZGdlLCBncHIpOworICAgICAgICBv
cGVyYW5kcy5hcHBlbmQoV1RGTW92ZShvcGVyYW5kKSk7CisgICAgfTsKKworICAgIGF1dG8gYXBw
ZW5kSW50MzIgPSBbJl0oRWRnZSYgZWRnZSkgeworICAgICAgICBTcGVjdWxhdGVJbnQzMk9wZXJh
bmQgb3BlcmFuZCh0aGlzLCBlZGdlKTsKKyAgICAgICAgcmVncy5hcHBlbmQob3BlcmFuZC5ncHIo
KSk7CisgICAgICAgIG9wZXJhbmRzLmFwcGVuZChXVEZNb3ZlKG9wZXJhbmQpKTsKKyAgICB9Owor
CisgICAgYXV0byBhcHBlbmRCb29sZWFuID0gWyZdKEVkZ2UmIGVkZ2UpIHsKKyAgICAgICAgU3Bl
Y3VsYXRlQm9vbGVhbk9wZXJhbmQgb3BlcmFuZCh0aGlzLCBlZGdlKTsKKyAgICAgICAgcmVncy5h
cHBlbmQob3BlcmFuZC5ncHIoKSk7CisgICAgICAgIG9wZXJhbmRzLmFwcGVuZChXVEZNb3ZlKG9w
ZXJhbmQpKTsKKyAgICB9OworCisgICAgdW5zaWduZWQgaW5kZXggPSAwOworICAgIG1faml0Lmdy
YXBoKCkuZG9Ub0NoaWxkcmVuKG5vZGUsIFsmXShFZGdlIGVkZ2UpIHsKKyAgICAgICAgaWYgKCFp
bmRleCkKKyAgICAgICAgICAgIGFwcGVuZENlbGwoZWRnZSk7CisgICAgICAgIGVsc2UgeworICAg
ICAgICAgICAgc3dpdGNoIChzaWduYXR1cmUtPmFyZ3VtZW50c1tpbmRleCAtIDFdKSB7CisgICAg
ICAgICAgICBjYXNlIFNwZWNTdHJpbmc6CisgICAgICAgICAgICAgICAgYXBwZW5kU3RyaW5nKGVk
Z2UpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBTcGVjSW50MzJP
bmx5OgorICAgICAgICAgICAgICAgIGFwcGVuZEludDMyKGVkZ2UpOworICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgY2FzZSBTcGVjQm9vbGVhbjoKKyAgICAgICAgICAgICAgICBh
cHBlbmRCb29sZWFuKGVkZ2UpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg
fQorICAgICAgICB9CisgICAgICAgICsraW5kZXg7CisgICAgfSk7CisKKyAgICBKU1ZhbHVlUmVn
c1RlbXBvcmFyeSByZXN1bHQodGhpcyk7CisgICAgSlNWYWx1ZVJlZ3MgcmVzdWx0UmVncyA9IHJl
c3VsdC5yZWdzKCk7CisKKyAgICBzaWxlbnRTcGlsbEFsbFJlZ2lzdGVycyhyZXN1bHRSZWdzKTsK
KyAgICBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgPSBzaWduYXR1cmUtPmFyZ3VtZW50
Q291bnQgKyAxOworICAgIHN3aXRjaCAoYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpIHsKKyAg
ICBjYXNlIDE6CisgICAgICAgIGNhbGxPcGVyYXRpb24ocmVpbnRlcnByZXRfY2FzdDxKX0pJVE9w
ZXJhdGlvbl9FUD4oc2lnbmF0dXJlLT51bnNhZmVGdW5jdGlvbiksIGV4dHJhY3RSZXN1bHQocmVz
dWx0UmVncyksIHJlZ3NbMF0pOworICAgICAgICBicmVhazsKKyAgICBjYXNlIDI6CisgICAgICAg
IGNhbGxPcGVyYXRpb24ocmVpbnRlcnByZXRfY2FzdDxKX0pJVE9wZXJhdGlvbl9FUFA+KHNpZ25h
dHVyZS0+dW5zYWZlRnVuY3Rpb24pLCBleHRyYWN0UmVzdWx0KHJlc3VsdFJlZ3MpLCByZWdzWzBd
LCByZWdzWzFdKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSAzOgorICAgICAgICBjYWxsT3Bl
cmF0aW9uKHJlaW50ZXJwcmV0X2Nhc3Q8Sl9KSVRPcGVyYXRpb25fRVBQUD4oc2lnbmF0dXJlLT51
bnNhZmVGdW5jdGlvbiksIGV4dHJhY3RSZXN1bHQocmVzdWx0UmVncyksIHJlZ3NbMF0sIHJlZ3Nb
MV0sIHJlZ3NbMl0pOworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBSRUxF
QVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICBz
aWxlbnRGaWxsQWxsUmVnaXN0ZXJzKHJlc3VsdFJlZ3MpOworICAgIG1faml0LmV4Y2VwdGlvbkNo
ZWNrKCk7CisgICAganNWYWx1ZVJlc3VsdChyZXN1bHRSZWdzLCBub2RlKTsKK30KKwogdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUNhbGxET01HZXR0ZXIoTm9kZSogbm9kZSkKIHsKICAgICBE
T01KSVQ6OkNhbGxET01HZXR0ZXJQYXRjaHBvaW50KiBwYXRjaHBvaW50ID0gbm9kZS0+Y2FsbERP
TUdldHRlckRhdGEoKS0+cGF0Y2hwb2ludDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU3BlY3VsYXRpdmVKSVQuaAppbmRleCA1NjUzOGEyOTQ2ZTQwMzAwZjA1MGYzMzU1MmE3M2Nj
YTc1OWNlYWNhLi43OTZhOGEzNWU2ZDMwNTdmYWFiZWEwNzlhMDIwM2Q1ZDQ5OWE5NWIxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCkBAIC0xNjUx
LDYgKzE2NTEsMTEgQEAgY2xhc3MgU3BlY3VsYXRpdmVKSVQgewogICAgICAgICBtX2ppdC5zZXR1
cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMik7CiAgICAgICAgIHJldHVybiBhcHBl
bmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9CisgICAgSklUQ29tcGls
ZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihKX0pJVE9wZXJhdGlvbl9FUFBQIG9wZXJhdGlvbiwgR1BS
UmVnIHJlc3VsdCwgR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyLCBHUFJSZWcgYXJnMykKKyAgICB7
CisgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyLCBh
cmczKTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1
bHQpOworICAgIH0KICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpfSklUT3Bl
cmF0aW9uX0VHUCBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIEdQUlJlZyBhcmcxLCBHUFJSZWcg
YXJnMikKICAgICB7CiAgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShh
cmcxLCBhcmcyKTsKQEAgLTE5MTUsNiArMTkyMCwxNiBAQCBjbGFzcyBTcGVjdWxhdGl2ZUpJVCB7
CiAgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBUcnVzdGVk
SW1tUHRyKHBvaW50ZXIpKTsKICAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3Bl
cmF0aW9uLCByZXN1bHQucGF5bG9hZEdQUigpLCByZXN1bHQudGFnR1BSKCkpOwogICAgIH0KKyAg
ICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpfSklUT3BlcmF0aW9uX0VQUCBvcGVy
YXRpb24sIEpTVmFsdWVSZWdzIHJlc3VsdCwgR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyKQorICAg
IHsKKyAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIp
OworICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdC5w
YXlsb2FkR1BSKCksIHJlc3VsdC50YWdHUFIoKSk7CisgICAgfQorICAgIEpJVENvbXBpbGVyOjpD
YWxsIGNhbGxPcGVyYXRpb24oSl9KSVRPcGVyYXRpb25fRVBQUCBvcGVyYXRpb24sIEpTVmFsdWVS
ZWdzIHJlc3VsdCwgR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyLCBHUFJSZWcgYXJnMykKKyAgICB7
CisgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyLCBh
cmczKTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1
bHQucGF5bG9hZEdQUigpLCByZXN1bHQudGFnR1BSKCkpOworICAgIH0KICAgICBKSVRDb21waWxl
cjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpfSklUT3BlcmF0aW9uX0VHUCBvcGVyYXRpb24sIEpTVmFs
dWVSZWdzIHJlc3VsdCwgR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyKQogICAgIHsKICAgICAgICAg
bV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIpOwpAQCAtMjU2Miw2
ICsyNTc3LDcgQEAgY2xhc3MgU3BlY3VsYXRpdmVKSVQgewogICAgIHZvaWQgY29tcGlsZVJlYWxs
b2NhdGVQcm9wZXJ0eVN0b3JhZ2UoTm9kZSopOwogICAgIHZvaWQgY29tcGlsZUdldEJ1dHRlcmZs
eShOb2RlKik7CiAgICAgdm9pZCBjb21waWxlQ2FsbERPTUdldHRlcihOb2RlKik7CisgICAgdm9p
ZCBjb21waWxlQ2FsbERPTShOb2RlKik7CiAgICAgdm9pZCBjb21waWxlQ2hlY2tET00oTm9kZSop
OwogICAgIAogI2lmIFVTRShKU1ZBTFVFMzJfNjQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAppbmRleCBjYjA0YTVhNjVjNzUw
ZTIzZjE3YzlkYjIzNDE1YjczNGFlZjViNGE0Li4xMDI0MjlkZTAwMGIzMmFkZmRkMDI3NDNlYzZk
ZmRkZWU4MWY1M2FjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nw
ZWN1bGF0aXZlSklUMzJfNjQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKQEAgLTU1NjEsNiArNTU2MSwxMCBAQCB2b2lkIFNwZWN1
bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIGJyZWFrOwogICAgIH0KIAor
ICAgIGNhc2UgQ2FsbERPTToKKyAgICAgICAgY29tcGlsZUNhbGxET00obm9kZSk7CisgICAgICAg
IGJyZWFrOworCiAgICAgY2FzZSBDYWxsRE9NR2V0dGVyOgogICAgICAgICBjb21waWxlQ2FsbERP
TUdldHRlcihub2RlKTsKICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAppbmRleCBiNDFjNmYzMmIzM2Q4M2M2NWU4
NTRmODYwNzhkNzRhNTI0MDI5ODEzLi44MzBiZmFkY2FmMjg2NjdhMDhiMWI4MmVlNTk4OGMwYzY1
ZDJjYWI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0
aXZlSklUNjQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRp
dmVKSVQ2NC5jcHAKQEAgLTU2OTMsNiArNTY5MywxMCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpj
b21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIGNvbXBpbGVNYXRlcmlhbGl6ZU5ld09iamVjdChu
b2RlKTsKICAgICAgICAgYnJlYWs7CiAKKyAgICBjYXNlIENhbGxET006CisgICAgICAgIGNvbXBp
bGVDYWxsRE9NKG5vZGUpOworICAgICAgICBicmVhazsKKwogICAgIGNhc2UgQ2FsbERPTUdldHRl
cjoKICAgICAgICAgY29tcGlsZUNhbGxET01HZXR0ZXIobm9kZSk7CiAgICAgICAgIGJyZWFrOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RvbWppdC9ET01KSVRFZmZlY3QuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kb21qaXQvRE9NSklURWZmZWN0LmgKaW5kZXggNTllMzAw
YzM5MjYxMDQ3YTExMjI5MGRhODZiNGZhMTY4ZDljNjMwNi4uNjFjZjNiNzFhYmJjZTMxZTQ1MTM2
YWYyODZjNmM3YWYyMzY2OGE2YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rv
bWppdC9ET01KSVRFZmZlY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZG9taml0L0RP
TUpJVEVmZmVjdC5oCkBAIC0yOCw1NiArMjgsNjIgQEAKICNpbmNsdWRlICJET01KSVRIZWFwUmFu
Z2UuaCIKICNpbmNsdWRlIDx3dGYvT3B0aW9uYWwuaD4KIAotI2lmIEVOQUJMRShKSVQpCi0KIG5h
bWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgRE9NSklUIHsKIAotc3RydWN0IEVmZmVjdCB7CitjbGFz
cyBFZmZlY3QgeworcHVibGljOgogICAgIEhlYXBSYW5nZSByZWFkcyB7IEhlYXBSYW5nZTo6dG9w
KCkgfTsKICAgICBIZWFwUmFuZ2Ugd3JpdGVzIHsgSGVhcFJhbmdlOjp0b3AoKSB9OwotICAgIE9w
dGlvbmFsPEhlYXBSYW5nZT4gZGVmOworICAgIEhlYXBSYW5nZSBkZWYgeyBIZWFwUmFuZ2U6OnRv
cCgpIH07CisKKyAgICBjb25zdGV4cHIgRWZmZWN0KCkgPSBkZWZhdWx0OworICAgIGNvbnN0ZXhw
ciBFZmZlY3QoSGVhcFJhbmdlIHJlYWRzLCBIZWFwUmFuZ2Ugd3JpdGVzKQorICAgICAgICA6IHJl
YWRzKHJlYWRzKQorICAgICAgICAsIHdyaXRlcyh3cml0ZXMpCisgICAgeworICAgIH0KKworICAg
IGNvbnN0ZXhwciBFZmZlY3QoSGVhcFJhbmdlIHJlYWRzLCBIZWFwUmFuZ2Ugd3JpdGVzLCBIZWFw
UmFuZ2UgZGVmKQorICAgICAgICA6IHJlYWRzKHJlYWRzKQorICAgICAgICAsIHdyaXRlcyh3cml0
ZXMpCisgICAgICAgICwgZGVmKGRlZikKKyAgICB7CisgICAgfQogCi0gICAgc3RhdGljIEVmZmVj
dCBmb3JSZWFkV3JpdGUoSGVhcFJhbmdlIHJlYWRSYW5nZSwgSGVhcFJhbmdlIHdyaXRlUmFuZ2Up
CisgICAgY29uc3RleHByIHN0YXRpYyBFZmZlY3QgZm9yV3JpdGUoSGVhcFJhbmdlIHdyaXRlUmFu
Z2UpCiAgICAgewotICAgICAgICBFZmZlY3QgZWZmZWN0OwotICAgICAgICBlZmZlY3QucmVhZHMg
PSByZWFkUmFuZ2U7Ci0gICAgICAgIGVmZmVjdC53cml0ZXMgPSB3cml0ZVJhbmdlOwotICAgICAg
ICByZXR1cm4gZWZmZWN0OworICAgICAgICByZXR1cm4gRWZmZWN0KEhlYXBSYW5nZTo6bm9uZSgp
LCB3cml0ZVJhbmdlKTsKICAgICB9CiAKLSAgICBzdGF0aWMgRWZmZWN0IGZvclB1cmUoKQorICAg
IGNvbnN0ZXhwciBzdGF0aWMgRWZmZWN0IGZvclJlYWQoSGVhcFJhbmdlIHJlYWRSYW5nZSkKICAg
ICB7Ci0gICAgICAgIEVmZmVjdCBlZmZlY3Q7Ci0gICAgICAgIGVmZmVjdC5yZWFkcyA9IEhlYXBS
YW5nZTo6bm9uZSgpOwotICAgICAgICBlZmZlY3Qud3JpdGVzID0gSGVhcFJhbmdlOjpub25lKCk7
Ci0gICAgICAgIGVmZmVjdC5kZWYgPSBIZWFwUmFuZ2U6Om5vbmUoKTsKLSAgICAgICAgcmV0dXJu
IGVmZmVjdDsKKyAgICAgICAgcmV0dXJuIEVmZmVjdChyZWFkUmFuZ2UsIEhlYXBSYW5nZTo6bm9u
ZSgpKTsKICAgICB9CiAKLSAgICBzdGF0aWMgRWZmZWN0IGZvckRlZihIZWFwUmFuZ2UgZGVmKQor
ICAgIGNvbnN0ZXhwciBzdGF0aWMgRWZmZWN0IGZvclJlYWRXcml0ZShIZWFwUmFuZ2UgcmVhZFJh
bmdlLCBIZWFwUmFuZ2Ugd3JpdGVSYW5nZSkKICAgICB7Ci0gICAgICAgIEVmZmVjdCBlZmZlY3Q7
Ci0gICAgICAgIGVmZmVjdC5yZWFkcyA9IGRlZjsKLSAgICAgICAgZWZmZWN0LndyaXRlcyA9IEhl
YXBSYW5nZTo6bm9uZSgpOwotICAgICAgICBlZmZlY3QuZGVmID0gZGVmOwotICAgICAgICByZXR1
cm4gZWZmZWN0OworICAgICAgICByZXR1cm4gRWZmZWN0KHJlYWRSYW5nZSwgd3JpdGVSYW5nZSk7
CiAgICAgfQogCi0gICAgc3RhdGljIEVmZmVjdCBmb3JEZWYoSGVhcFJhbmdlIGRlZiwgSGVhcFJh
bmdlIHJlYWRSYW5nZSwgSGVhcFJhbmdlIHdyaXRlUmFuZ2UpCisgICAgY29uc3RleHByIHN0YXRp
YyBFZmZlY3QgZm9yUHVyZSgpCiAgICAgewotICAgICAgICBFZmZlY3QgZWZmZWN0OwotICAgICAg
ICBlZmZlY3QucmVhZHMgPSByZWFkUmFuZ2U7Ci0gICAgICAgIGVmZmVjdC53cml0ZXMgPSB3cml0
ZVJhbmdlOwotICAgICAgICBlZmZlY3QuZGVmID0gZGVmOwotICAgICAgICByZXR1cm4gZWZmZWN0
OworICAgICAgICByZXR1cm4gRWZmZWN0KEhlYXBSYW5nZTo6bm9uZSgpLCBIZWFwUmFuZ2U6Om5v
bmUoKSwgSGVhcFJhbmdlOjpub25lKCkpOwogICAgIH0KIAotICAgIGJvb2wgbXVzdEdlbmVyYXRl
KCkgY29uc3QKKyAgICBjb25zdGV4cHIgc3RhdGljIEVmZmVjdCBmb3JEZWYoSGVhcFJhbmdlIGRl
ZikKKyAgICB7CisgICAgICAgIHJldHVybiBFZmZlY3QoZGVmLCBIZWFwUmFuZ2U6Om5vbmUoKSwg
ZGVmKTsKKyAgICB9CisKKyAgICBjb25zdGV4cHIgc3RhdGljIEVmZmVjdCBmb3JEZWYoSGVhcFJh
bmdlIGRlZiwgSGVhcFJhbmdlIHJlYWRSYW5nZSwgSGVhcFJhbmdlIHdyaXRlUmFuZ2UpCisgICAg
eworICAgICAgICByZXR1cm4gRWZmZWN0KHJlYWRSYW5nZSwgd3JpdGVSYW5nZSwgZGVmKTsKKyAg
ICB9CisKKyAgICBjb25zdGV4cHIgYm9vbCBtdXN0R2VuZXJhdGUoKSBjb25zdAogICAgIHsKICAg
ICAgICAgcmV0dXJuICEhd3JpdGVzOwogICAgIH0KIH07CiAKIH0gfQotCi0jZW5kaWYKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kb21qaXQvRE9NSklUSGVhcFJhbmdlLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZG9taml0L0RPTUpJVEhlYXBSYW5nZS5oCmluZGV4IGZiOTM5
OTlmZjc4NWMwNmY3ZGFjZDZkYTljOGQ2ZTBhOTU2Nzg2NzQuLmZjMzIwNmU4OTAzZGQxNWE0NDA3
ZTEyYjM3YTYxNTZjNTlmZTExMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
b21qaXQvRE9NSklUSGVhcFJhbmdlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RvbWpp
dC9ET01KSVRIZWFwUmFuZ2UuaApAQCAtMjgsOCArMjgsNiBAQAogI2luY2x1ZGUgPHd0Zi9NYXRo
RXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL1ByaW50U3RyZWFtLmg+CiAKLSNpZiBFTkFCTEUoSklU
KQotCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERPTUpJVCB7CiAKIGNsYXNzIEhlYXBSYW5n
ZSB7CkBAIC00Nyw3ICs0NSw2IEBAIGNsYXNzIEhlYXBSYW5nZSB7CiAgICAgICAgIEFTU0VSVF9X
SVRIX01FU1NBR0UoYmVnaW4gPD0gZW5kLCAiYmVnaW4gPD0gZW5kIGlzIHRoZSBpbnZhcmlhbnQg
b2YgdGhpcyBIZWFwUmFuZ2UuIik7CiAgICAgfQogCi1wcml2YXRlOgogICAgIGVudW0gQ29uc3RF
eHByVGFnIHsgQ29uc3RFeHByIH07CiAgICAgY29uc3RleHByIEhlYXBSYW5nZShDb25zdEV4cHJU
YWcsIHVpbnQxNl90IGJlZ2luLCB1aW50MTZfdCBlbmQpCiAgICAgICAgIDogbV9iZWdpbihiZWdp
bikKQEAgLTU1LDIxICs1MiwxMyBAQCBjbGFzcyBIZWFwUmFuZ2UgewogICAgIHsKICAgICB9CiAK
LSAgICB0ZW1wbGF0ZTx1aW50MTZfdCBiZWdpbiwgdWludDE2X3QgZW5kPgotICAgIHN0YXRpYyBj
b25zdGV4cHIgSGVhcFJhbmdlIGZyb21Db25zdGFudCgpCi0gICAgewotICAgICAgICBzdGF0aWNf
YXNzZXJ0KGJlZ2luIDw9IGVuZCwgImJlZ2luIDw9IGVuZCBpcyB0aGUgaW52YXJpYW50IG9mIHRo
aXMgSGVhcFJhbmdlLiIpOwotICAgICAgICByZXR1cm4gSGVhcFJhbmdlKENvbnN0RXhwciwgYmVn
aW4sIGVuZCk7Ci0gICAgfQotCi1wdWJsaWM6CiAgICAgZW51bSBSYXdSZXByZXNlbnRhdGlvblRh
ZyB7IFJhd1JlcHJlc2VudGF0aW9uIH07CiAgICAgZXhwbGljaXQgY29uc3RleHByIEhlYXBSYW5n
ZShSYXdSZXByZXNlbnRhdGlvblRhZywgdWludDMyX3QgdmFsdWUpCiAgICAgICAgIDogbV9yYXco
dmFsdWUpCiAgICAgewogICAgIH0KIAotICAgIHN0YXRpYyBIZWFwUmFuZ2UgZnJvbVJhdyh1aW50
MzJfdCB2YWx1ZSkKKyAgICBjb25zdGV4cHIgc3RhdGljIEhlYXBSYW5nZSBmcm9tUmF3KHVpbnQz
Ml90IHZhbHVlKQogICAgIHsKICAgICAgICAgcmV0dXJuIEhlYXBSYW5nZShSYXdSZXByZXNlbnRh
dGlvbiwgdmFsdWUpOwogICAgIH0KQEAgLTgzLDExICs3MiwyMyBAQCBjbGFzcyBIZWFwUmFuZ2Ug
ewogICAgICAgICByZXR1cm4gbV9iZWdpbiAhPSBtX2VuZDsKICAgICB9CiAKLSAgICBib29sIG9w
ZXJhdG9yPT0oY29uc3QgSGVhcFJhbmdlJiBvdGhlcikgY29uc3QKKyAgICBjb25zdGV4cHIgYm9v
bCBvcGVyYXRvcj09KGNvbnN0IEhlYXBSYW5nZSYgb3RoZXIpIGNvbnN0CiAgICAgewogICAgICAg
ICByZXR1cm4gbV9iZWdpbiA9PSBvdGhlci5tX2JlZ2luICYmIG1fZW5kID09IG90aGVyLm1fZW5k
OwogICAgIH0KIAorICAgIGNvbnN0ZXhwciBib29sIG9wZXJhdG9yIT0oY29uc3QgSGVhcFJhbmdl
JiBvdGhlcikgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiAhb3BlcmF0b3I9PShvdGhlcik7
CisgICAgfQorCisgICAgdGVtcGxhdGU8dWludDE2X3QgYmVnaW4sIHVpbnQxNl90IGVuZD4KKyAg
ICBzdGF0aWMgY29uc3RleHByIEhlYXBSYW5nZSBmcm9tQ29uc3RhbnQoKQorICAgIHsKKyAgICAg
ICAgc3RhdGljX2Fzc2VydChiZWdpbiA8PSBlbmQsICJiZWdpbiA8PSBlbmQgaXMgdGhlIGludmFy
aWFudCBvZiB0aGlzIEhlYXBSYW5nZS4iKTsKKyAgICAgICAgcmV0dXJuIEhlYXBSYW5nZShDb25z
dEV4cHIsIGJlZ2luLCBlbmQpOworICAgIH0KKwogICAgIHN0YXRpYyBjb25zdGV4cHIgSGVhcFJh
bmdlIHRvcCgpIHsgcmV0dXJuIGZyb21Db25zdGFudDwwLCBVSU5UMTZfTUFYPigpOyB9CiAgICAg
c3RhdGljIGNvbnN0ZXhwciBIZWFwUmFuZ2Ugbm9uZSgpIHsgcmV0dXJuIGZyb21Db25zdGFudDxV
SU5UMTZfTUFYLCBVSU5UMTZfTUFYPigpOyB9IC8vIEVtcHR5IHJhbmdlLgogCkBAIC0xMjcsNSAr
MTI4LDMgQEAgY2xhc3MgSGVhcFJhbmdlIHsKIH07CiAKIH0gfQotCi0jZW5kaWYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kb21qaXQvRE9NSklUU2lnbmF0dXJlLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZG9taml0L0RPTUpJVFNpZ25hdHVyZS5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM3
ZDYwZWQ3ZjNlYWYwNjNkOWIwYzlkODllZDYzNDg3YzRjYmI1YTMKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZG9taml0L0RPTUpJVFNpZ25hdHVyZS5oCkBAIC0wLDAg
KzEsNzAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
cHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkNsYXNzSW5mby5oIgorI2luY2x1ZGUgIkRPTUpJVEVm
ZmVjdC5oIgorI2luY2x1ZGUgIlNwZWN1bGF0ZWRUeXBlLmgiCisKK25hbWVzcGFjZSBKU0MgeyBu
YW1lc3BhY2UgRE9NSklUIHsKKworLy8gQ3VycmVudGx5LCB3ZSBvbmx5IHN1cHBvcnQgZnVuY3Rp
b25zIHdoaWNoIGFyZ3VtZW50cyB1cCB0byAyLgorLy8gRXZlbnR1YWxseSwgd2Ugc2hvdWxkIGV4
dGVuZCB0aGlzLiBCdXQgcG9zc2libHksIDIgb3IgMyBjYW4gY292ZXIgdHlwaWNhbCB1c2UgY2Fz
ZXMuCisjZGVmaW5lIEpTQ19ET01KSVRfU0lHTkFUVVJFX01BWF9BUkdVTUVOVFMgMgorCitjbGFz
cyBQYXRjaHBvaW50OworCit0eXBlZGVmIFJlZjxQYXRjaHBvaW50PiBDaGVja0RPTUdlbmVyYXRv
ckZ1bmN0aW9uKHZvaWQpOworCitjbGFzcyBTaWduYXR1cmUgeworcHVibGljOgorICAgIHRlbXBs
YXRlPHR5cGVuYW1lLi4uIEFyZ3VtZW50cz4KKyAgICBjb25zdGV4cHIgU2lnbmF0dXJlKHVpbnRw
dHJfdCB1bnNhZmVGdW5jdGlvbiwgQ2hlY2tET01HZW5lcmF0b3JGdW5jdGlvbiogY2hlY2tET01H
ZW5lcmF0b3JGdW5jdGlvbiwgY29uc3QgQ2xhc3NJbmZvKiBjbGFzc0luZm8sIEVmZmVjdCBlZmZl
Y3QsIFNwZWN1bGF0ZWRUeXBlIHJlc3VsdCwgQXJndW1lbnRzLi4uIGFyZ3VtZW50cykKKyAgICAg
ICAgOiB1bnNhZmVGdW5jdGlvbih1bnNhZmVGdW5jdGlvbikKKyAgICAgICAgLCBjaGVja0RPTUdl
bmVyYXRvckZ1bmN0aW9uKGNoZWNrRE9NR2VuZXJhdG9yRnVuY3Rpb24pCisgICAgICAgICwgY2xh
c3NJbmZvKGNsYXNzSW5mbykKKyAgICAgICAgLCBlZmZlY3QoZWZmZWN0KQorICAgICAgICAsIHJl
c3VsdChyZXN1bHQpCisgICAgICAgICwgYXJndW1lbnRzIHtzdGF0aWNfY2FzdDxTcGVjdWxhdGVk
VHlwZT4oYXJndW1lbnRzKS4uLn0KKyAgICAgICAgLCBhcmd1bWVudENvdW50KHNpemVvZi4uLihh
cmd1bWVudHMpKQorICAgIHsKKyAgICB9CisKKyAgICBSZWY8UGF0Y2hwb2ludD4gY2hlY2tET00o
KSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIGNoZWNrRE9NR2VuZXJhdG9yRnVuY3Rpb24o
KTsKKyAgICB9CisKKyAgICB1aW50cHRyX3QgdW5zYWZlRnVuY3Rpb247CisgICAgQ2hlY2tET01H
ZW5lcmF0b3JGdW5jdGlvbiogY2hlY2tET01HZW5lcmF0b3JGdW5jdGlvbjsKKyAgICBjb25zdCBD
bGFzc0luZm8qIGNvbnN0IGNsYXNzSW5mbzsKKyAgICBjb25zdCBFZmZlY3QgZWZmZWN0OworICAg
IGNvbnN0IFNwZWN1bGF0ZWRUeXBlIHJlc3VsdDsKKyAgICBjb25zdCBTcGVjdWxhdGVkVHlwZSBh
cmd1bWVudHNbSlNDX0RPTUpJVF9TSUdOQVRVUkVfTUFYX0FSR1VNRU5UU107CisgICAgY29uc3Qg
dW5zaWduZWQgYXJndW1lbnRDb3VudDsKK307CisKK30gfQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCmluZGV4IDU0ZjRlNzJlNjQxOWJmZTI1NTY1M2Uz
NjVmYmFjODIwMzJmZmRlOTcuLjNiYTE1ZTZlMjg0NGQzMDQwM2U4ZGQ0ZTAxNmMyNGIwYzA0NmRm
YzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVz
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAK
QEAgLTI3Myw2ICsyNzMsNyBAQCBpbmxpbmUgQ2FwYWJpbGl0eUxldmVsIGNhbkNvbXBpbGUoTm9k
ZSogbm9kZSkKICAgICBjYXNlIERlZmluZUFjY2Vzc29yUHJvcGVydHk6CiAgICAgY2FzZSBUb0xv
d2VyQ2FzZToKICAgICBjYXNlIENoZWNrRE9NOgorICAgIGNhc2UgQ2FsbERPTToKICAgICBjYXNl
IENhbGxET01HZXR0ZXI6CiAgICAgICAgIC8vIFRoZXNlIGFyZSBPSy4KICAgICAgICAgYnJlYWs7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKaW5kZXgg
YWQxNjE1NzIwMjdjNDFmMzAwNjgzZGMxMjI0MmY5Yjk1ZDQ1OTBjMi4uNDBlYmMxNTc5MGNkMGQ0
NTM4N2ZjNTBkZGZmMmQ4NTExZTZlN2YwZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9m
dGwvRlRMTG93ZXJERkdUb0IzLmNwcApAQCAtMTA2MCw2ICsxMDYwLDkgQEAgY2xhc3MgTG93ZXJE
RkdUb0IzIHsKICAgICAgICAgY2FzZSBDaGVja0RPTToKICAgICAgICAgICAgIGNvbXBpbGVDaGVj
a0RPTSgpOwogICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQ2FsbERPTToKKyAgICAg
ICAgICAgIGNvbXBpbGVDYWxsRE9NKCk7CisgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2Fz
ZSBDYWxsRE9NR2V0dGVyOgogICAgICAgICAgICAgY29tcGlsZUNhbGxET01HZXR0ZXIoKTsKICAg
ICAgICAgICAgIGJyZWFrOwpAQCAtOTEwMCw2ICs5MTAzLDU0IEBAIGNsYXNzIExvd2VyREZHVG9C
MyB7CiAgICAgICAgIHBhdGNocG9pbnQtPmVmZmVjdHMgPSBFZmZlY3RzOjpmb3JDaGVjaygpOwog
ICAgIH0KIAorICAgIHZvaWQgY29tcGlsZUNhbGxET00oKQorICAgIHsKKyAgICAgICAgY29uc3Qg
RE9NSklUOjpTaWduYXR1cmUqIHNpZ25hdHVyZSA9IG1fbm9kZS0+c2lnbmF0dXJlKCk7CisKKyAg
ICAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBoYXZlIGEgd2F5IHRvIGNhbGwgZnVuY3Rpb25zIHdp
dGggdGhlIHZlY3RvciBvZiByZWdpc3RlcnMuCisgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjMwOTkKKyAgICAgICAgVmVjdG9yPExWYWx1ZT4gb3Bl
cmFuZHM7CisKKyAgICAgICAgdW5zaWduZWQgaW5kZXggPSAwOworICAgICAgICBERkdfTk9ERV9E
T19UT19DSElMRFJFTihtX2dyYXBoLCBtX25vZGUsIFsmXShOb2RlKiwgRWRnZSBlZGdlKSB7Cisg
ICAgICAgICAgICBpZiAoIWluZGV4KQorICAgICAgICAgICAgICAgIG9wZXJhbmRzLmFwcGVuZChs
b3dDZWxsKGVkZ2UpKTsKKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIHN3aXRj
aCAoc2lnbmF0dXJlLT5hcmd1bWVudHNbaW5kZXggLSAxXSkgeworICAgICAgICAgICAgICAgIGNh
c2UgU3BlY1N0cmluZzoKKyAgICAgICAgICAgICAgICAgICAgb3BlcmFuZHMuYXBwZW5kKGxvd1N0
cmluZyhlZGdlKSk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAg
IGNhc2UgU3BlY0ludDMyT25seToKKyAgICAgICAgICAgICAgICAgICAgb3BlcmFuZHMuYXBwZW5k
KGxvd0ludDMyKGVkZ2UpKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICAgICAgY2FzZSBTcGVjQm9vbGVhbjoKKyAgICAgICAgICAgICAgICAgICAgb3BlcmFuZHMuYXBw
ZW5kKGxvd0Jvb2xlYW4oZWRnZSkpOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICArK2luZGV4OworICAgICAg
ICB9KTsKKworICAgICAgICBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgPSBzaWduYXR1
cmUtPmFyZ3VtZW50Q291bnQgKyAxOworICAgICAgICBMVmFsdWUgcmVzdWx0OworICAgICAgICBz
d2l0Y2ggKGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKSB7CisgICAgICAgIGNhc2UgMToKKyAg
ICAgICAgICAgIHJlc3VsdCA9IHZtQ2FsbChJbnQ2NCwgbV9vdXQub3BlcmF0aW9uKHJlaW50ZXJw
cmV0X2Nhc3Q8Sl9KSVRPcGVyYXRpb25fRVA+KHNpZ25hdHVyZS0+dW5zYWZlRnVuY3Rpb24pKSwg
bV9jYWxsRnJhbWUsIG9wZXJhbmRzWzBdKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBj
YXNlIDI6CisgICAgICAgICAgICByZXN1bHQgPSB2bUNhbGwoSW50NjQsIG1fb3V0Lm9wZXJhdGlv
bihyZWludGVycHJldF9jYXN0PEpfSklUT3BlcmF0aW9uX0VQUD4oc2lnbmF0dXJlLT51bnNhZmVG
dW5jdGlvbikpLCBtX2NhbGxGcmFtZSwgb3BlcmFuZHNbMF0sIG9wZXJhbmRzWzFdKTsKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIDM6CisgICAgICAgICAgICByZXN1bHQgPSB2bUNh
bGwoSW50NjQsIG1fb3V0Lm9wZXJhdGlvbihyZWludGVycHJldF9jYXN0PEpfSklUT3BlcmF0aW9u
X0VQUFA+KHNpZ25hdHVyZS0+dW5zYWZlRnVuY3Rpb24pKSwgbV9jYWxsRnJhbWUsIG9wZXJhbmRz
WzBdLCBvcGVyYW5kc1sxXSwgb3BlcmFuZHNbMl0pOworICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwor
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAgICBzZXRKU1ZhbHVlKHJlc3Vs
dCk7CisgICAgfQorCiAgICAgdm9pZCBjb21waWxlQ2FsbERPTUdldHRlcigpCiAgICAgewogICAg
ICAgICBET01KSVQ6OkNhbGxET01HZXR0ZXJQYXRjaHBvaW50KiBkb21KSVQgPSBtX25vZGUtPmNh
bGxET01HZXR0ZXJEYXRhKCktPnBhdGNocG9pbnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUT3BlcmF0aW9ucy5oCmluZGV4IDhmNmM2OTcxYTZiZWU5ZjFmYjZmYzM2OGRlNWEyY2I4NDc2
NDRhNjguLjIwYjcxZjQ1MmNlNDRiNWNjNTZjYzcxYzJkNzZiMTdiNTg4ZmU2NjUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCkBAIC0xNTgsNiArMTU4LDcgQEAg
dHlwZWRlZiBFbmNvZGVkSlNWYWx1ZSAoSklUX09QRVJBVElPTiAqSl9KSVRPcGVyYXRpb25fRUpQ
KShFeGVjU3RhdGUqLCBFbmNvZGVkSlMKIHR5cGVkZWYgRW5jb2RlZEpTVmFsdWUgKEpJVF9PUEVS
QVRJT04gKkpfSklUT3BlcmF0aW9uX0VHUCkoRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqLCB2
b2lkKik7CiB0eXBlZGVmIEVuY29kZWRKU1ZhbHVlIChKSVRfT1BFUkFUSU9OICpKX0pJVE9wZXJh
dGlvbl9FUCkoRXhlY1N0YXRlKiwgdm9pZCopOwogdHlwZWRlZiBFbmNvZGVkSlNWYWx1ZSAoSklU
X09QRVJBVElPTiAqSl9KSVRPcGVyYXRpb25fRVBQKShFeGVjU3RhdGUqLCB2b2lkKiwgdm9pZCop
OwordHlwZWRlZiBFbmNvZGVkSlNWYWx1ZSAoSklUX09QRVJBVElPTiAqSl9KSVRPcGVyYXRpb25f
RVBQUCkoRXhlY1N0YXRlKiwgdm9pZCosIHZvaWQqLCB2b2lkKik7CiB0eXBlZGVmIEVuY29kZWRK
U1ZhbHVlIChKSVRfT1BFUkFUSU9OICpKX0pJVE9wZXJhdGlvbl9FUFMpKEV4ZWNTdGF0ZSosIHZv
aWQqLCBzaXplX3QpOwogdHlwZWRlZiBFbmNvZGVkSlNWYWx1ZSAoSklUX09QRVJBVElPTiAqSl9K
SVRPcGVyYXRpb25fRVBjKShFeGVjU3RhdGUqLCBJbnN0cnVjdGlvbiopOwogdHlwZWRlZiBFbmNv
ZGVkSlNWYWx1ZSAoSklUX09QRVJBVElPTiAqSl9KSVRPcGVyYXRpb25fRUpzY0MpKEV4ZWNTdGF0
ZSosIEpTU2NvcGUqLCBKU0NlbGwqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUVGh1bmtzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUVGh1bmtz
LmNwcAppbmRleCBiZjBhN2Y5MDkxOWE1YjZkMGJlZWQ5MjhhYmRhZjcxMGM5ZGM5ZDBiLi40MGMx
MmNlYzk0ZTAxYTA4NDA0ZjdiNmQ5NjcyMWYxMDUxZjQ4MzE5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVFRodW5rcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRUaHVua3MuY3BwCkBAIC05MCwxMCArOTAsMTAgQEAgdm9pZCBKSVRUaHVua3M6
OmZpbmFsaXplKEhhbmRsZTxVbmtub3duPiBoYW5kbGUsIHZvaWQqKQogCiBOYXRpdmVFeGVjdXRh
YmxlKiBKSVRUaHVua3M6Omhvc3RGdW5jdGlvblN0dWIoVk0qIHZtLCBOYXRpdmVGdW5jdGlvbiBm
dW5jdGlvbiwgTmF0aXZlRnVuY3Rpb24gY29uc3RydWN0b3IsIGNvbnN0IFN0cmluZyYgbmFtZSkK
IHsKLSAgICByZXR1cm4gaG9zdEZ1bmN0aW9uU3R1Yih2bSwgZnVuY3Rpb24sIGNvbnN0cnVjdG9y
LCBudWxscHRyLCBOb0ludHJpbnNpYywgbmFtZSk7CisgICAgcmV0dXJuIGhvc3RGdW5jdGlvblN0
dWIodm0sIGZ1bmN0aW9uLCBjb25zdHJ1Y3RvciwgbnVsbHB0ciwgTm9JbnRyaW5zaWMsIG51bGxw
dHIsIG5hbWUpOwogfQogCi1OYXRpdmVFeGVjdXRhYmxlKiBKSVRUaHVua3M6Omhvc3RGdW5jdGlv
blN0dWIoVk0qIHZtLCBOYXRpdmVGdW5jdGlvbiBmdW5jdGlvbiwgTmF0aXZlRnVuY3Rpb24gY29u
c3RydWN0b3IsIFRodW5rR2VuZXJhdG9yIGdlbmVyYXRvciwgSW50cmluc2ljIGludHJpbnNpYywg
Y29uc3QgU3RyaW5nJiBuYW1lKQorTmF0aXZlRXhlY3V0YWJsZSogSklUVGh1bmtzOjpob3N0RnVu
Y3Rpb25TdHViKFZNKiB2bSwgTmF0aXZlRnVuY3Rpb24gZnVuY3Rpb24sIE5hdGl2ZUZ1bmN0aW9u
IGNvbnN0cnVjdG9yLCBUaHVua0dlbmVyYXRvciBnZW5lcmF0b3IsIEludHJpbnNpYyBpbnRyaW5z
aWMsIGNvbnN0IERPTUpJVDo6U2lnbmF0dXJlKiBzaWduYXR1cmUsIGNvbnN0IFN0cmluZyYgbmFt
ZSkKIHsKICAgICBBU1NFUlQoIWlzQ29tcGlsYXRpb25UaHJlYWQoKSk7ICAgIAogICAgIEFTU0VS
VCh2bS0+Y2FuVXNlSklUKCkpOwpAQCAtMTEwLDE0ICsxMTAsMTQgQEAgTmF0aXZlRXhlY3V0YWJs
ZSogSklUVGh1bmtzOjpob3N0RnVuY3Rpb25TdHViKFZNKiB2bSwgTmF0aXZlRnVuY3Rpb24gZnVu
Y3Rpb24sIE4KICAgICAKICAgICBSZWZQdHI8SklUQ29kZT4gZm9yQ29uc3RydWN0ID0gYWRvcHRS
ZWYobmV3IE5hdGl2ZUpJVENvZGUoTWFjcm9Bc3NlbWJsZXJDb2RlUmVmOjpjcmVhdGVTZWxmTWFu
YWdlZENvZGVSZWYoY3RpTmF0aXZlQ29uc3RydWN0KHZtKSksIEpJVENvZGU6Okhvc3RDYWxsVGh1
bmspKTsKICAgICAKLSAgICBOYXRpdmVFeGVjdXRhYmxlKiBuYXRpdmVFeGVjdXRhYmxlID0gTmF0
aXZlRXhlY3V0YWJsZTo6Y3JlYXRlKCp2bSwgZm9yQ2FsbCwgZnVuY3Rpb24sIGZvckNvbnN0cnVj
dCwgY29uc3RydWN0b3IsIGludHJpbnNpYywgbmFtZSk7CisgICAgTmF0aXZlRXhlY3V0YWJsZSog
bmF0aXZlRXhlY3V0YWJsZSA9IE5hdGl2ZUV4ZWN1dGFibGU6OmNyZWF0ZSgqdm0sIGZvckNhbGws
IGZ1bmN0aW9uLCBmb3JDb25zdHJ1Y3QsIGNvbnN0cnVjdG9yLCBpbnRyaW5zaWMsIHNpZ25hdHVy
ZSwgbmFtZSk7CiAgICAgd2Vha0FkZCgqbV9ob3N0RnVuY3Rpb25TdHViTWFwLCBzdGQ6Om1ha2Vf
dHVwbGUoZnVuY3Rpb24sIGNvbnN0cnVjdG9yLCBuYW1lKSwgV2VhazxOYXRpdmVFeGVjdXRhYmxl
PihuYXRpdmVFeGVjdXRhYmxlLCB0aGlzKSk7CiAgICAgcmV0dXJuIG5hdGl2ZUV4ZWN1dGFibGU7
CiB9CiAKIE5hdGl2ZUV4ZWN1dGFibGUqIEpJVFRodW5rczo6aG9zdEZ1bmN0aW9uU3R1YihWTSog
dm0sIE5hdGl2ZUZ1bmN0aW9uIGZ1bmN0aW9uLCBUaHVua0dlbmVyYXRvciBnZW5lcmF0b3IsIElu
dHJpbnNpYyBpbnRyaW5zaWMsIGNvbnN0IFN0cmluZyYgbmFtZSkKIHsKLSAgICByZXR1cm4gaG9z
dEZ1bmN0aW9uU3R1Yih2bSwgZnVuY3Rpb24sIGNhbGxIb3N0RnVuY3Rpb25Bc0NvbnN0cnVjdG9y
LCBnZW5lcmF0b3IsIGludHJpbnNpYywgbmFtZSk7CisgICAgcmV0dXJuIGhvc3RGdW5jdGlvblN0
dWIodm0sIGZ1bmN0aW9uLCBjYWxsSG9zdEZ1bmN0aW9uQXNDb25zdHJ1Y3RvciwgZ2VuZXJhdG9y
LCBpbnRyaW5zaWMsIG51bGxwdHIsIG5hbWUpOwogfQogCiB2b2lkIEpJVFRodW5rczo6Y2xlYXJI
b3N0RnVuY3Rpb25TdHVicygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVFRodW5rcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRUaHVua3MuaAppbmRl
eCAzZjhmZTgwM2Y5ODcxMGY2OTIzNTI3YmM4ZjY1NTBmNGVkZDFjN2FlLi5hZGRjZjIzMGMzNDVk
NDI3MWI2MzdmMDhiOTRjNDE2YTNlZDE4MmE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVFRodW5rcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
VGh1bmtzLmgKQEAgLTM5LDYgKzM5LDkgQEAKICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNo
Lmg+CiAKIG5hbWVzcGFjZSBKU0MgeworbmFtZXNwYWNlIERPTUpJVCB7CitjbGFzcyBTaWduYXR1
cmU7Cit9CiAKIGNsYXNzIFZNOwogY2xhc3MgTmF0aXZlRXhlY3V0YWJsZTsKQEAgLTU3LDcgKzYw
LDcgQEAgY2xhc3MgSklUVGh1bmtzIGZpbmFsIDogcHJpdmF0ZSBXZWFrSGFuZGxlT3duZXIgewog
ICAgIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBjdGlTdHViKFZNKiwgVGh1bmtHZW5lcmF0b3IpOwog
CiAgICAgTmF0aXZlRXhlY3V0YWJsZSogaG9zdEZ1bmN0aW9uU3R1YihWTSosIE5hdGl2ZUZ1bmN0
aW9uLCBOYXRpdmVGdW5jdGlvbiBjb25zdHJ1Y3RvciwgY29uc3QgU3RyaW5nJiBuYW1lKTsKLSAg
ICBOYXRpdmVFeGVjdXRhYmxlKiBob3N0RnVuY3Rpb25TdHViKFZNKiwgTmF0aXZlRnVuY3Rpb24s
IE5hdGl2ZUZ1bmN0aW9uIGNvbnN0cnVjdG9yLCBUaHVua0dlbmVyYXRvciwgSW50cmluc2ljLCBj
b25zdCBTdHJpbmcmIG5hbWUpOworICAgIE5hdGl2ZUV4ZWN1dGFibGUqIGhvc3RGdW5jdGlvblN0
dWIoVk0qLCBOYXRpdmVGdW5jdGlvbiwgTmF0aXZlRnVuY3Rpb24gY29uc3RydWN0b3IsIFRodW5r
R2VuZXJhdG9yLCBJbnRyaW5zaWMsIGNvbnN0IERPTUpJVDo6U2lnbmF0dXJlKiwgY29uc3QgU3Ry
aW5nJiBuYW1lKTsKICAgICBOYXRpdmVFeGVjdXRhYmxlKiBob3N0RnVuY3Rpb25TdHViKFZNKiwg
TmF0aXZlRnVuY3Rpb24sIFRodW5rR2VuZXJhdG9yLCBJbnRyaW5zaWMsIGNvbnN0IFN0cmluZyYg
bmFtZSk7CiAKICAgICB2b2lkIGNsZWFySG9zdEZ1bmN0aW9uU3R1YnMoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQm91bmRGdW5jdGlvbi5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0JvdW5kRnVuY3Rpb24uY3BwCmluZGV4IDI2Zjk5
ZDY1M2FhMTQ0YjI0MDRkZDc5NTk0MzI5M2RlOTZiNzM0YzUuLmM0Y2U0M2U3ZDU2MGI4NzM2M2M0
OGQ5NTBhMDlhZDc5ZDA1MjQ5N2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTQm91bmRGdW5jdGlvbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNCb3VuZEZ1bmN0aW9uLmNwcApAQCAtMTY4LDcgKzE2OCw3IEBAIEpTQm91bmRGdW5j
dGlvbiogSlNCb3VuZEZ1bmN0aW9uOjpjcmVhdGUoVk0mIHZtLCBFeGVjU3RhdGUqIGV4ZWMsIEpT
R2xvYmFsT2JqZWN0CiAgICAgTmF0aXZlRXhlY3V0YWJsZSogZXhlY3V0YWJsZSA9IHZtLmdldEhv
c3RGdW5jdGlvbigKICAgICAgICAgc2xvd0Nhc2UgPyBib3VuZEZ1bmN0aW9uQ2FsbCA6IGJvdW5k
VGhpc05vQXJnc0Z1bmN0aW9uQ2FsbCwKICAgICAgICAgc2xvd0Nhc2UgPyBOb0ludHJpbnNpYyA6
IEJvdW5kVGhpc05vQXJnc0Z1bmN0aW9uQ2FsbEludHJpbnNpYywKLSAgICAgICAgY2FuQ29uc3Ry
dWN0ID8gKHNsb3dDYXNlID8gYm91bmRGdW5jdGlvbkNvbnN0cnVjdCA6IGJvdW5kVGhpc05vQXJn
c0Z1bmN0aW9uQ29uc3RydWN0KSA6IGNhbGxIb3N0RnVuY3Rpb25Bc0NvbnN0cnVjdG9yLAorICAg
ICAgICBjYW5Db25zdHJ1Y3QgPyAoc2xvd0Nhc2UgPyBib3VuZEZ1bmN0aW9uQ29uc3RydWN0IDog
Ym91bmRUaGlzTm9BcmdzRnVuY3Rpb25Db25zdHJ1Y3QpIDogY2FsbEhvc3RGdW5jdGlvbkFzQ29u
c3RydWN0b3IsIG51bGxwdHIsCiAgICAgICAgIG5hbWUpOwogICAgIFN0cnVjdHVyZSogc3RydWN0
dXJlID0gZ2V0Qm91bmRGdW5jdGlvblN0cnVjdHVyZSh2bSwgZXhlYywgZ2xvYmFsT2JqZWN0LCB0
YXJnZXRGdW5jdGlvbik7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgbnVsbHB0cik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5oCmluZGV4IGM0MGYzZTIxOTg0MWZi
NDY4OTYzNTI4NGIwNDIyNDdhZmQ1MjNjMzYuLjRlZmJmOTA3NzhjYzU3MWJiZGI4Mjg3MWE1MWZh
NDRmODU2YWU5OGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
Q2VsbC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5oCkBAIC01
NiwxNyArNTYsMTcgQEAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gdm9pZCogYWxsb2NhdGVDZWxsKEhl
YXAmLCBzaXplX3QpOwogdGVtcGxhdGU8dHlwZW5hbWUgVD4gdm9pZCogYWxsb2NhdGVDZWxsKEhl
YXAmLCBHQ0RlZmVycmFsQ29udGV4dCopOwogdGVtcGxhdGU8dHlwZW5hbWUgVD4gdm9pZCogYWxs
b2NhdGVDZWxsKEhlYXAmLCBHQ0RlZmVycmFsQ29udGV4dCosIHNpemVfdCk7CiAKLSNkZWZpbmUg
REVDTEFSRV9FWFBPUlRfSU5GTyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFwKLSAgICBwcm90ZWN0ZWQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgc3RhdGljIEpTX0VYUE9SVERBVEEg
Y29uc3QgOjpKU0M6OkNsYXNzSW5mbyBzX2luZm87ICAgICAgICAgICAgIFwKLSAgICBwdWJsaWM6
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFwKLSAgICAgICAgc3RhdGljIGNvbnN0IDo6SlNDOjpDbGFzc0luZm8qIGluZm8oKSB7IHJl
dHVybiAmc19pbmZvOyB9Ci0KLSNkZWZpbmUgREVDTEFSRV9JTkZPICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBwcm90ZWN0ZWQ6ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAg
ICAgICAgc3RhdGljIGNvbnN0IDo6SlNDOjpDbGFzc0luZm8gc19pbmZvOyAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFwKLSAgICBwdWJsaWM6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgc3RhdGljIGNvbnN0IDo6
SlNDOjpDbGFzc0luZm8qIGluZm8oKSB7IHJldHVybiAmc19pbmZvOyB9CisjZGVmaW5lIERFQ0xB
UkVfRVhQT1JUX0lORk8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFwKKyAgICBwcm90ZWN0ZWQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBzdGF0aWMgSlNfRVhQT1JU
REFUQSBjb25zdCA6OkpTQzo6Q2xhc3NJbmZvIHNfaW5mbzsgICAgICAgICAgICAgICAgICBcCisg
ICAgcHVibGljOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBjb25zdCA6OkpT
Qzo6Q2xhc3NJbmZvKiBpbmZvKCkgeyByZXR1cm4gJnNfaW5mbzsgfQorCisjZGVmaW5lIERFQ0xB
UkVfSU5GTyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFwKKyAgICBwcm90ZWN0ZWQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBzdGF0aWMgY29uc3QgOjpK
U0M6OkNsYXNzSW5mbyBzX2luZm87ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisg
ICAgcHVibGljOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBjb25zdCA6OkpT
Qzo6Q2xhc3NJbmZvKiBpbmZvKCkgeyByZXR1cm4gJnNfaW5mbzsgfQogCiBjbGFzcyBKU0NlbGwg
OiBwdWJsaWMgSGVhcENlbGwgewogICAgIGZyaWVuZCBjbGFzcyBKU1ZhbHVlOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcAppbmRleCA4NTg0YmMyOTdhZjcy
M2Y1ODI5ODE1NmUyZTJiMGE4OGFlNzE4ZmI0Li5hMzE4NDJiNjU5MDkzZWVkNDgzMmYwYzIyNTQ3
ZmZiNDQ5YzQ0Y2Q5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0Z1bmN0aW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0
aW9uLmNwcApAQCAtODQsOSArODQsOSBAQCBKU0Z1bmN0aW9uKiBKU0Z1bmN0aW9uOjpjcmVhdGUo
Vk0mIHZtLCBXZWJBc3NlbWJseUV4ZWN1dGFibGUqIGV4ZWN1dGFibGUsIEpTU2NvcAogfQogI2Vu
ZGlmCiAKLUpTRnVuY3Rpb24qIEpTRnVuY3Rpb246OmNyZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIGludCBsZW5ndGgsIGNvbnN0IFN0cmluZyYgbmFtZSwgTmF0aXZl
RnVuY3Rpb24gbmF0aXZlRnVuY3Rpb24sIEludHJpbnNpYyBpbnRyaW5zaWMsIE5hdGl2ZUZ1bmN0
aW9uIG5hdGl2ZUNvbnN0cnVjdG9yKQorSlNGdW5jdGlvbiogSlNGdW5jdGlvbjo6Y3JlYXRlKFZN
JiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgaW50IGxlbmd0aCwgY29uc3QgU3Ry
aW5nJiBuYW1lLCBOYXRpdmVGdW5jdGlvbiBuYXRpdmVGdW5jdGlvbiwgSW50cmluc2ljIGludHJp
bnNpYywgTmF0aXZlRnVuY3Rpb24gbmF0aXZlQ29uc3RydWN0b3IsIGNvbnN0IERPTUpJVDo6U2ln
bmF0dXJlKiBzaWduYXR1cmUpCiB7Ci0gICAgTmF0aXZlRXhlY3V0YWJsZSogZXhlY3V0YWJsZSA9
IHZtLmdldEhvc3RGdW5jdGlvbihuYXRpdmVGdW5jdGlvbiwgaW50cmluc2ljLCBuYXRpdmVDb25z
dHJ1Y3RvciwgbmFtZSk7CisgICAgTmF0aXZlRXhlY3V0YWJsZSogZXhlY3V0YWJsZSA9IHZtLmdl
dEhvc3RGdW5jdGlvbihuYXRpdmVGdW5jdGlvbiwgaW50cmluc2ljLCBuYXRpdmVDb25zdHJ1Y3Rv
ciwgc2lnbmF0dXJlLCBuYW1lKTsKICAgICBKU0Z1bmN0aW9uKiBmdW5jdGlvbiA9IG5ldyAoTm90
TnVsbCwgYWxsb2NhdGVDZWxsPEpTRnVuY3Rpb24+KHZtLmhlYXApKSBKU0Z1bmN0aW9uKHZtLCBn
bG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdC0+ZnVuY3Rpb25TdHJ1Y3R1cmUoKSk7CiAgICAgLy8g
Q2FuJ3QgZG8gdGhpcyBkdXJpbmcgaW5pdGlhbGl6YXRpb24gYmVjYXVzZSBnZXRIb3N0RnVuY3Rp
b24gbWlnaHQgZG8gYSBHQyBhbGxvY2F0aW9uLgogICAgIGZ1bmN0aW9uLT5maW5pc2hDcmVhdGlv
bih2bSwgZXhlY3V0YWJsZSwgbGVuZ3RoLCBuYW1lKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTRnVuY3Rpb24uaAppbmRleCA4ZGYwM2ExNGE2N2RhZTkzMDRjMGQ1NTQ5NGY5NWE4
NzdmOTc4MWU2Li5mMTFiMTJmYjNiZDE0NTYyNWY4MmJmMWZhODcyNTA0NDQ3NjU3NjI4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5oCkBAIC00Niw2ICs0Niwx
MSBAQCBjbGFzcyBTcGVjdWxhdGl2ZUpJVDsKIGNsYXNzIEpJVENvbXBpbGVyOwogfQogCituYW1l
c3BhY2UgRE9NSklUIHsKK2NsYXNzIFNpZ25hdHVyZTsKK30KKworCiBKU19FWFBPUlRfUFJJVkFU
RSBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxIb3N0RnVuY3Rpb25Bc0NvbnN0cnVj
dG9yKEV4ZWNTdGF0ZSopOwogCiBKU19FWFBPUlRfUFJJVkFURSBTdHJpbmcgZ2V0Q2FsY3VsYXRl
ZERpc3BsYXlOYW1lKFZNJiwgSlNPYmplY3QqKTsKQEAgLTY3LDcgKzcyLDcgQEAgY2xhc3MgSlNG
dW5jdGlvbiA6IHB1YmxpYyBKU0NhbGxlZSB7CiAgICAgICAgIHJldHVybiBzaXplb2YoSlNGdW5j
dGlvbik7CiAgICAgfQogCi0gICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIEpTRnVuY3Rpb24q
IGNyZWF0ZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgaW50IGxlbmd0aCwgY29uc3QgU3RyaW5nJiBu
YW1lLCBOYXRpdmVGdW5jdGlvbiwgSW50cmluc2ljID0gTm9JbnRyaW5zaWMsIE5hdGl2ZUZ1bmN0
aW9uIG5hdGl2ZUNvbnN0cnVjdG9yID0gY2FsbEhvc3RGdW5jdGlvbkFzQ29uc3RydWN0b3IpOwor
ICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBKU0Z1bmN0aW9uKiBjcmVhdGUoVk0mLCBKU0ds
b2JhbE9iamVjdCosIGludCBsZW5ndGgsIGNvbnN0IFN0cmluZyYgbmFtZSwgTmF0aXZlRnVuY3Rp
b24sIEludHJpbnNpYyA9IE5vSW50cmluc2ljLCBOYXRpdmVGdW5jdGlvbiBuYXRpdmVDb25zdHJ1
Y3RvciA9IGNhbGxIb3N0RnVuY3Rpb25Bc0NvbnN0cnVjdG9yLCBjb25zdCBET01KSVQ6OlNpZ25h
dHVyZSogPSBudWxscHRyKTsKICAgICAKICAgICBzdGF0aWMgSlNGdW5jdGlvbiogY3JlYXRlV2l0
aEludmFsaWRhdGVkUmVhbGxvY2F0aW9uV2F0Y2hwb2ludChWTSYsIEZ1bmN0aW9uRXhlY3V0YWJs
ZSosIEpTU2NvcGUqKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNOYXRpdmVTdGRGdW5jdGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU05hdGl2ZVN0ZEZ1bmN0aW9uLmNwcAppbmRleCA2ZGQ4NDlmMmVhZmJlYmRkNzA3ZWU1NzM4
MDA4MmRlNTQ4OTMyMGExLi5jMTI2NWIxZjA2YTkwYTA3NDQxZDdhYzVjNjA4ODMwYTFlZmE0ZjAy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU05hdGl2ZVN0ZEZ1
bmN0aW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU05hdGl2ZVN0
ZEZ1bmN0aW9uLmNwcApAQCAtNjYsNyArNjYsNyBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBydW5TdGRGdW5jdGlvbihFeGVjU3RhdGUqIHN0YXRlKQogCiBKU05hdGl2ZVN0
ZEZ1bmN0aW9uKiBKU05hdGl2ZVN0ZEZ1bmN0aW9uOjpjcmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBpbnQgbGVuZ3RoLCBjb25zdCBTdHJpbmcmIG5hbWUsIE5hdGl2
ZVN0ZEZ1bmN0aW9uJiYgbmF0aXZlU3RkRnVuY3Rpb24sIEludHJpbnNpYyBpbnRyaW5zaWMsIE5h
dGl2ZUZ1bmN0aW9uIG5hdGl2ZUNvbnN0cnVjdG9yKQogewotICAgIE5hdGl2ZUV4ZWN1dGFibGUq
IGV4ZWN1dGFibGUgPSB2bS5nZXRIb3N0RnVuY3Rpb24ocnVuU3RkRnVuY3Rpb24sIGludHJpbnNp
YywgbmF0aXZlQ29uc3RydWN0b3IsIG5hbWUpOworICAgIE5hdGl2ZUV4ZWN1dGFibGUqIGV4ZWN1
dGFibGUgPSB2bS5nZXRIb3N0RnVuY3Rpb24ocnVuU3RkRnVuY3Rpb24sIGludHJpbnNpYywgbmF0
aXZlQ29uc3RydWN0b3IsIG51bGxwdHIsIG5hbWUpOwogICAgIE5hdGl2ZVN0ZEZ1bmN0aW9uQ2Vs
bCogZnVuY3Rpb25DZWxsID0gTmF0aXZlU3RkRnVuY3Rpb25DZWxsOjpjcmVhdGUodm0sIFdURk1v
dmUobmF0aXZlU3RkRnVuY3Rpb24pKTsKICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGdsb2Jh
bE9iamVjdC0+bmF0aXZlU3RkRnVuY3Rpb25TdHJ1Y3R1cmUoKTsKICAgICBKU05hdGl2ZVN0ZEZ1
bmN0aW9uKiBmdW5jdGlvbiA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTTmF0aXZlU3Rk
RnVuY3Rpb24+KHZtLmhlYXApKSBKU05hdGl2ZVN0ZEZ1bmN0aW9uKHZtLCBnbG9iYWxPYmplY3Qs
IHN0cnVjdHVyZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U09iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAK
aW5kZXggZjUzZGI2MTk4NmVhZGRhYTIzYTI0NWRlNTRhZTA5YzU4ZjBhYjc2NC4uMDhhZTc5MjBh
OWVlNTJjMjRkNzVhYmUxZGE3ZjY2ZTgxMWIyYWYxYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTT2JqZWN0LmNwcApAQCAtMjU0OSw2ICsyNTQ5LDE3IEBAIGJvb2wgSlNPYmpl
Y3Q6OnB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgY29uCiAgICAgcmV0dXJuIHB1dERpcmVjdCh2bSwgcHJvcGVydHlOYW1lLCBmdW5j
dGlvbiwgYXR0cmlidXRlcyk7CiB9CiAKK2Jvb2wgSlNPYmplY3Q6OnB1dERpcmVjdE5hdGl2ZUZ1
bmN0aW9uKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgUHJvcGVy
dHlOYW1lJiBwcm9wZXJ0eU5hbWUsIHVuc2lnbmVkIGZ1bmN0aW9uTGVuZ3RoLCBOYXRpdmVGdW5j
dGlvbiBuYXRpdmVGdW5jdGlvbiwgSW50cmluc2ljIGludHJpbnNpYywgY29uc3QgRE9NSklUOjpT
aWduYXR1cmUqIHNpZ25hdHVyZSwgdW5zaWduZWQgYXR0cmlidXRlcykKK3sKKyAgICBTdHJpbmdJ
bXBsKiBuYW1lID0gcHJvcGVydHlOYW1lLnB1YmxpY05hbWUoKTsKKyAgICBpZiAoIW5hbWUpCisg
ICAgICAgIG5hbWUgPSB2bS5wcm9wZXJ0eU5hbWVzLT5hbm9ueW1vdXMuaW1wbCgpOworICAgIEFT
U0VSVChuYW1lKTsKKworICAgIEpTRnVuY3Rpb24qIGZ1bmN0aW9uID0gSlNGdW5jdGlvbjo6Y3Jl
YXRlKHZtLCBnbG9iYWxPYmplY3QsIGZ1bmN0aW9uTGVuZ3RoLCBuYW1lLCBuYXRpdmVGdW5jdGlv
biwgaW50cmluc2ljLCBjYWxsSG9zdEZ1bmN0aW9uQXNDb25zdHJ1Y3Rvciwgc2lnbmF0dXJlKTsK
KyAgICByZXR1cm4gcHV0RGlyZWN0KHZtLCBwcm9wZXJ0eU5hbWUsIGZ1bmN0aW9uLCBhdHRyaWJ1
dGVzKTsKK30KKwogSlNGdW5jdGlvbiogSlNPYmplY3Q6OnB1dERpcmVjdEJ1aWx0aW5GdW5jdGlv
bihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IFByb3BlcnR5TmFt
ZSYgcHJvcGVydHlOYW1lLCBGdW5jdGlvbkV4ZWN1dGFibGUqIGZ1bmN0aW9uRXhlY3V0YWJsZSwg
dW5zaWduZWQgYXR0cmlidXRlcykKIHsKICAgICBTdHJpbmdJbXBsKiBuYW1lID0gcHJvcGVydHlO
YW1lLnB1YmxpY05hbWUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5o
CmluZGV4IDYyMjBlYzdhMWJhOGU4YTc0OWRiNGIwNmNkNDI5M2E4ODVhZjdmOTIuLmViZTQ4NWU4
ZGYzNmRiNWNhZjM3NzA0YjhlZWRkNGE3NmNiOWM0NDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNPYmplY3QuaApAQCAtNDcsNiArNDcsOSBAQAogI2luY2x1ZGUgPHd0Zi9TdGRM
aWJFeHRyYXMuaD4KIAogbmFtZXNwYWNlIEpTQyB7CituYW1lc3BhY2UgRE9NSklUIHsKK2NsYXNz
IFNpZ25hdHVyZTsKK30KIAogaW5saW5lIEpTQ2VsbCogZ2V0SlNGdW5jdGlvbihKU1ZhbHVlIHZh
bHVlKQogewpAQCAtNzAwLDYgKzcwMyw3IEBAIGNsYXNzIEpTT2JqZWN0IDogcHVibGljIEpTQ2Vs
bCB7CiAKICAgICBKU19FWFBPUlRfUFJJVkFURSBib29sIHB1dERpcmVjdE5hdGl2ZUludHJpbnNp
Y0dldHRlcihWTSYsIEpTR2xvYmFsT2JqZWN0KiwgSWRlbnRpZmllciwgTmF0aXZlRnVuY3Rpb24s
IEludHJpbnNpYywgdW5zaWduZWQgYXR0cmlidXRlcyk7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUg
Ym9vbCBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbihWTSYsIEpTR2xvYmFsT2JqZWN0KiwgY29uc3Qg
UHJvcGVydHlOYW1lJiwgdW5zaWduZWQgZnVuY3Rpb25MZW5ndGgsIE5hdGl2ZUZ1bmN0aW9uLCBJ
bnRyaW5zaWMsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIGJv
b2wgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb24oVk0mLCBKU0dsb2JhbE9iamVjdCosIGNvbnN0IFBy
b3BlcnR5TmFtZSYsIHVuc2lnbmVkIGZ1bmN0aW9uTGVuZ3RoLCBOYXRpdmVGdW5jdGlvbiwgSW50
cmluc2ljLCBjb25zdCBET01KSVQ6OlNpZ25hdHVyZSosIHVuc2lnbmVkIGF0dHJpYnV0ZXMpOwog
ICAgIEpTX0VYUE9SVF9QUklWQVRFIEpTRnVuY3Rpb24qIHB1dERpcmVjdEJ1aWx0aW5GdW5jdGlv
bihWTSYsIEpTR2xvYmFsT2JqZWN0KiwgY29uc3QgUHJvcGVydHlOYW1lJiwgRnVuY3Rpb25FeGVj
dXRhYmxlKiwgdW5zaWduZWQgYXR0cmlidXRlcyk7CiAgICAgSlNGdW5jdGlvbiogcHV0RGlyZWN0
QnVpbHRpbkZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24oVk0mLCBKU0dsb2JhbE9iamVjdCosIGNv
bnN0IFByb3BlcnR5TmFtZSYsIEZ1bmN0aW9uRXhlY3V0YWJsZSosIHVuc2lnbmVkIGF0dHJpYnV0
ZXMpOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb25X
aXRob3V0VHJhbnNpdGlvbihWTSYsIEpTR2xvYmFsT2JqZWN0KiwgY29uc3QgUHJvcGVydHlOYW1l
JiwgdW5zaWduZWQgZnVuY3Rpb25MZW5ndGgsIE5hdGl2ZUZ1bmN0aW9uLCBJbnRyaW5zaWMsIHVu
c2lnbmVkIGF0dHJpYnV0ZXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvTG9va3VwLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Mb29rdXAuaApp
bmRleCBlMmQxNzk1Mzg4ZTc2NTJiZDhmMWI0YjZkYWNiYjJjYmNlOWNkNDRmLi5kNzA3Njg2ZmI1
NjkzZTdmNTJmZTZkMWEyZWM0NGJkMDAyM2JlZjExIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Mb29rdXAuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Mb29rdXAuaApAQCAtMjQsNiArMjQsNyBAQAogI2luY2x1ZGUgIkNhbGxGcmFtZS5oIgog
I2luY2x1ZGUgIkN1c3RvbUdldHRlclNldHRlci5oIgogI2luY2x1ZGUgIkRPTUpJVEdldHRlclNl
dHRlci5oIgorI2luY2x1ZGUgIkRPTUpJVFNpZ25hdHVyZS5oIgogI2luY2x1ZGUgIklkZW50aWZp
ZXIuaCIKICNpbmNsdWRlICJJZGVudGlmaWVySW5saW5lcy5oIgogI2luY2x1ZGUgIkludHJpbnNp
Yy5oIgpAQCAtNzUsMTIgKzc2LDE5IEBAIHN0cnVjdCBIYXNoVGFibGVWYWx1ZSB7CiAgICAgSW50
cmluc2ljIGludHJpbnNpYygpIGNvbnN0IHsgQVNTRVJUKG1fYXR0cmlidXRlcyAmIEZ1bmN0aW9u
KTsgcmV0dXJuIG1faW50cmluc2ljOyB9CiAgICAgQnVpbHRpbkdlbmVyYXRvciBidWlsdGluR2Vu
ZXJhdG9yKCkgY29uc3QgeyBBU1NFUlQobV9hdHRyaWJ1dGVzICYgQnVpbHRpbik7IHJldHVybiBy
ZWludGVycHJldF9jYXN0PEJ1aWx0aW5HZW5lcmF0b3I+KG1fdmFsdWVzLnZhbHVlMSk7IH0KICAg
ICBOYXRpdmVGdW5jdGlvbiBmdW5jdGlvbigpIGNvbnN0IHsgQVNTRVJUKG1fYXR0cmlidXRlcyAm
IEZ1bmN0aW9uKTsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8TmF0aXZlRnVuY3Rpb24+KG1fdmFs
dWVzLnZhbHVlMSk7IH0KLSAgICB1bnNpZ25lZCBjaGFyIGZ1bmN0aW9uTGVuZ3RoKCkgY29uc3Qg
eyBBU1NFUlQobV9hdHRyaWJ1dGVzICYgRnVuY3Rpb24pOyByZXR1cm4gc3RhdGljX2Nhc3Q8dW5z
aWduZWQgY2hhcj4obV92YWx1ZXMudmFsdWUyKTsgfQorICAgIHVuc2lnbmVkIGNoYXIgZnVuY3Rp
b25MZW5ndGgoKSBjb25zdAorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fYXR0cmlidXRlcyAmIEZ1
bmN0aW9uKTsKKyAgICAgICAgaWYgKG1fYXR0cmlidXRlcyAmIERPTUpJVEZ1bmN0aW9uKQorICAg
ICAgICAgICAgcmV0dXJuIHNpZ25hdHVyZSgpLT5hcmd1bWVudENvdW50OworICAgICAgICByZXR1
cm4gc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4obV92YWx1ZXMudmFsdWUyKTsKKyAgICB9CiAK
ICAgICBHZXRGdW5jdGlvbiBwcm9wZXJ0eUdldHRlcigpIGNvbnN0IHsgQVNTRVJUKCEobV9hdHRy
aWJ1dGVzICYgQnVpbHRpbk9yRnVuY3Rpb25PckFjY2Vzc29yT3JMYXp5UHJvcGVydHlPckNvbnN0
YW50KSk7IHJldHVybiByZWludGVycHJldF9jYXN0PEdldEZ1bmN0aW9uPihtX3ZhbHVlcy52YWx1
ZTEpOyB9CiAgICAgUHV0RnVuY3Rpb24gcHJvcGVydHlQdXR0ZXIoKSBjb25zdCB7IEFTU0VSVCgh
KG1fYXR0cmlidXRlcyAmIEJ1aWx0aW5PckZ1bmN0aW9uT3JBY2Nlc3Nvck9yTGF6eVByb3BlcnR5
T3JDb25zdGFudCkpOyByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxQdXRGdW5jdGlvbj4obV92YWx1
ZXMudmFsdWUyKTsgfQogCiAgICAgRE9NSklUOjpHZXR0ZXJTZXR0ZXIqIGRvbUpJVCgpIGNvbnN0
IHsgQVNTRVJUKG1fYXR0cmlidXRlcyAmIERPTUpJVEF0dHJpYnV0ZSk7IHJldHVybiByZWludGVy
cHJldF9jYXN0PERPTUpJVEdldHRlclNldHRlckdlbmVyYXRvcj4obV92YWx1ZXMudmFsdWUxKSgp
OyB9CisgICAgY29uc3QgRE9NSklUOjpTaWduYXR1cmUqIHNpZ25hdHVyZSgpIGNvbnN0IHsgQVNT
RVJUKG1fYXR0cmlidXRlcyAmIERPTUpJVEZ1bmN0aW9uKTsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nh
c3Q8Y29uc3QgRE9NSklUOjpTaWduYXR1cmUqPihtX3ZhbHVlcy52YWx1ZTIpOyB9CiAKICAgICBO
YXRpdmVGdW5jdGlvbiBhY2Nlc3NvckdldHRlcigpIGNvbnN0IHsgQVNTRVJUKG1fYXR0cmlidXRl
cyAmIEFjY2Vzc29yKTsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8TmF0aXZlRnVuY3Rpb24+KG1f
dmFsdWVzLnZhbHVlMSk7IH0KICAgICBOYXRpdmVGdW5jdGlvbiBhY2Nlc3NvclNldHRlcigpIGNv
bnN0IHsgQVNTRVJUKG1fYXR0cmlidXRlcyAmIEFjY2Vzc29yKTsgcmV0dXJuIHJlaW50ZXJwcmV0
X2Nhc3Q8TmF0aXZlRnVuY3Rpb24+KG1fdmFsdWVzLnZhbHVlMik7IH0KQEAgLTMxMyw2ICszMjEs
MTIgQEAgaW5saW5lIHZvaWQgcmVpZnlTdGF0aWNQcm9wZXJ0eShWTSYgdm0sIGNvbnN0IFByb3Bl
cnR5TmFtZSYgcHJvcGVydHlOYW1lLCBjb25zdAogICAgIH0KIAogICAgIGlmICh2YWx1ZS5hdHRy
aWJ1dGVzKCkgJiBGdW5jdGlvbikgeworICAgICAgICBpZiAodmFsdWUuYXR0cmlidXRlcygpICYg
RE9NSklURnVuY3Rpb24pIHsKKyAgICAgICAgICAgIHRoaXNPYmoucHV0RGlyZWN0TmF0aXZlRnVu
Y3Rpb24oCisgICAgICAgICAgICAgICAgdm0sIHRoaXNPYmouZ2xvYmFsT2JqZWN0KCksIHByb3Bl
cnR5TmFtZSwgdmFsdWUuZnVuY3Rpb25MZW5ndGgoKSwKKyAgICAgICAgICAgICAgICB2YWx1ZS5m
dW5jdGlvbigpLCB2YWx1ZS5pbnRyaW5zaWMoKSwgdmFsdWUuc2lnbmF0dXJlKCksIGF0dHJpYnV0
ZXNGb3JTdHJ1Y3R1cmUodmFsdWUuYXR0cmlidXRlcygpKSk7CisgICAgICAgICAgICByZXR1cm47
CisgICAgICAgIH0KICAgICAgICAgdGhpc09iai5wdXREaXJlY3ROYXRpdmVGdW5jdGlvbigKICAg
ICAgICAgICAgIHZtLCB0aGlzT2JqLmdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUsIHZhbHVl
LmZ1bmN0aW9uTGVuZ3RoKCksCiAgICAgICAgICAgICB2YWx1ZS5mdW5jdGlvbigpLCB2YWx1ZS5p
bnRyaW5zaWMoKSwgYXR0cmlidXRlc0ZvclN0cnVjdHVyZSh2YWx1ZS5hdHRyaWJ1dGVzKCkpKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05hdGl2ZUV4ZWN1dGFi
bGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZlRXhlY3V0YWJsZS5j
cHAKaW5kZXggMWMyYmVjNThiN2RiODk4YjgxMThiMjk3MTBiMmQ3NDI2OTNiYjIxZC4uYjdkYWQy
YTQ2MmRkZGZjMjI3NjJmZDVjZDdjZjZhNDYxY2RkMThmNiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZlRXhlY3V0YWJsZS5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZlRXhlY3V0YWJsZS5jcHAKQEAgLTQwLDEwICs0MCwx
MCBAQCBuYW1lc3BhY2UgSlNDIHsKIAogY29uc3QgQ2xhc3NJbmZvIE5hdGl2ZUV4ZWN1dGFibGU6
OnNfaW5mbyA9IHsgIk5hdGl2ZUV4ZWN1dGFibGUiLCAmRXhlY3V0YWJsZUJhc2U6OnNfaW5mbywg
MCwgQ1JFQVRFX01FVEhPRF9UQUJMRShOYXRpdmVFeGVjdXRhYmxlKSB9OwogCi1OYXRpdmVFeGVj
dXRhYmxlKiBOYXRpdmVFeGVjdXRhYmxlOjpjcmVhdGUoVk0mIHZtLCBQYXNzUmVmUHRyPEpJVENv
ZGU+IGNhbGxUaHVuaywgTmF0aXZlRnVuY3Rpb24gZnVuY3Rpb24sIFBhc3NSZWZQdHI8SklUQ29k
ZT4gY29uc3RydWN0VGh1bmssIE5hdGl2ZUZ1bmN0aW9uIGNvbnN0cnVjdG9yLCBJbnRyaW5zaWMg
aW50cmluc2ljLCBjb25zdCBTdHJpbmcmIG5hbWUpCitOYXRpdmVFeGVjdXRhYmxlKiBOYXRpdmVF
eGVjdXRhYmxlOjpjcmVhdGUoVk0mIHZtLCBQYXNzUmVmUHRyPEpJVENvZGU+IGNhbGxUaHVuaywg
TmF0aXZlRnVuY3Rpb24gZnVuY3Rpb24sIFBhc3NSZWZQdHI8SklUQ29kZT4gY29uc3RydWN0VGh1
bmssIE5hdGl2ZUZ1bmN0aW9uIGNvbnN0cnVjdG9yLCBJbnRyaW5zaWMgaW50cmluc2ljLCBjb25z
dCBET01KSVQ6OlNpZ25hdHVyZSogc2lnbmF0dXJlLCBjb25zdCBTdHJpbmcmIG5hbWUpCiB7CiAg
ICAgTmF0aXZlRXhlY3V0YWJsZSogZXhlY3V0YWJsZTsKLSAgICBleGVjdXRhYmxlID0gbmV3IChO
b3ROdWxsLCBhbGxvY2F0ZUNlbGw8TmF0aXZlRXhlY3V0YWJsZT4odm0uaGVhcCkpIE5hdGl2ZUV4
ZWN1dGFibGUodm0sIGZ1bmN0aW9uLCBjb25zdHJ1Y3RvciwgaW50cmluc2ljKTsKKyAgICBleGVj
dXRhYmxlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8TmF0aXZlRXhlY3V0YWJsZT4odm0u
aGVhcCkpIE5hdGl2ZUV4ZWN1dGFibGUodm0sIGZ1bmN0aW9uLCBjb25zdHJ1Y3RvciwgaW50cmlu
c2ljLCBzaWduYXR1cmUpOwogICAgIGV4ZWN1dGFibGUtPmZpbmlzaENyZWF0aW9uKHZtLCBjYWxs
VGh1bmssIGNvbnN0cnVjdFRodW5rLCBuYW1lKTsKICAgICByZXR1cm4gZXhlY3V0YWJsZTsKIH0K
QEAgLTY4LDEwICs2OCwxMSBAQCB2b2lkIE5hdGl2ZUV4ZWN1dGFibGU6OmZpbmlzaENyZWF0aW9u
KFZNJiB2bSwgUGFzc1JlZlB0cjxKSVRDb2RlPiBjYWxsVGh1bmssIFBhcwogICAgIG1fbmFtZSA9
IG5hbWU7CiB9CiAKLU5hdGl2ZUV4ZWN1dGFibGU6Ok5hdGl2ZUV4ZWN1dGFibGUoVk0mIHZtLCBO
YXRpdmVGdW5jdGlvbiBmdW5jdGlvbiwgTmF0aXZlRnVuY3Rpb24gY29uc3RydWN0b3IsIEludHJp
bnNpYyBpbnRyaW5zaWMpCitOYXRpdmVFeGVjdXRhYmxlOjpOYXRpdmVFeGVjdXRhYmxlKFZNJiB2
bSwgTmF0aXZlRnVuY3Rpb24gZnVuY3Rpb24sIE5hdGl2ZUZ1bmN0aW9uIGNvbnN0cnVjdG9yLCBJ
bnRyaW5zaWMgaW50cmluc2ljLCBjb25zdCBET01KSVQ6OlNpZ25hdHVyZSogc2lnbmF0dXJlKQog
ICAgIDogRXhlY3V0YWJsZUJhc2Uodm0sIHZtLm5hdGl2ZUV4ZWN1dGFibGVTdHJ1Y3R1cmUuZ2V0
KCksIE5VTV9QQVJBTUVURVJTX0lTX0hPU1QsIGludHJpbnNpYykKICAgICAsIG1fZnVuY3Rpb24o
ZnVuY3Rpb24pCiAgICAgLCBtX2NvbnN0cnVjdG9yKGNvbnN0cnVjdG9yKQorICAgICwgbV9zaWdu
YXR1cmUoc2lnbmF0dXJlKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9OYXRpdmVFeGVjdXRhYmxlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9OYXRpdmVFeGVjdXRhYmxlLmgKaW5kZXggNWJmMmUxMDZkYjMwYTViOGM5NzhjODk2YTZh
ZDk4Y2EyYzc1NzQxNC4uZTRkM2UwNDk0NTdiNDVkMDI0NTdlOGRkYTU0NDkwYjM3MTRhY2NlYSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZlRXhlY3V0YWJs
ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05hdGl2ZUV4ZWN1dGFibGUu
aApAQCAtMjgsNiArMjgsOSBAQAogI2luY2x1ZGUgIkV4ZWN1dGFibGVCYXNlLmgiCiAKIG5hbWVz
cGFjZSBKU0MgeworbmFtZXNwYWNlIERPTUpJVCB7CitjbGFzcyBTaWduYXR1cmU7Cit9CiAKIGNs
YXNzIE5hdGl2ZUV4ZWN1dGFibGUgZmluYWwgOiBwdWJsaWMgRXhlY3V0YWJsZUJhc2UgewogICAg
IGZyaWVuZCBjbGFzcyBKSVQ7CkBAIC0zNiw3ICszOSw3IEBAIGNsYXNzIE5hdGl2ZUV4ZWN1dGFi
bGUgZmluYWwgOiBwdWJsaWMgRXhlY3V0YWJsZUJhc2UgewogICAgIHR5cGVkZWYgRXhlY3V0YWJs
ZUJhc2UgQmFzZTsKICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBC
YXNlOjpTdHJ1Y3R1cmVGbGFncyB8IFN0cnVjdHVyZUlzSW1tb3J0YWw7CiAKLSAgICBzdGF0aWMg
TmF0aXZlRXhlY3V0YWJsZSogY3JlYXRlKFZNJiB2bSwgUGFzc1JlZlB0cjxKSVRDb2RlPiBjYWxs
VGh1bmssIE5hdGl2ZUZ1bmN0aW9uIGZ1bmN0aW9uLCBQYXNzUmVmUHRyPEpJVENvZGU+IGNvbnN0
cnVjdFRodW5rLCBOYXRpdmVGdW5jdGlvbiBjb25zdHJ1Y3RvciwgSW50cmluc2ljIGludHJpbnNp
YywgY29uc3QgU3RyaW5nJiBuYW1lKTsKKyAgICBzdGF0aWMgTmF0aXZlRXhlY3V0YWJsZSogY3Jl
YXRlKFZNJiwgUGFzc1JlZlB0cjxKSVRDb2RlPiBjYWxsVGh1bmssIE5hdGl2ZUZ1bmN0aW9uIGZ1
bmN0aW9uLCBQYXNzUmVmUHRyPEpJVENvZGU+IGNvbnN0cnVjdFRodW5rLCBOYXRpdmVGdW5jdGlv
biBjb25zdHJ1Y3RvciwgSW50cmluc2ljLCBjb25zdCBET01KSVQ6OlNpZ25hdHVyZSosIGNvbnN0
IFN0cmluZyYgbmFtZSk7CiAKICAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQ2VsbCopOwogCkBA
IC02Niw2ICs2OSwxNCBAQCBjbGFzcyBOYXRpdmVFeGVjdXRhYmxlIGZpbmFsIDogcHVibGljIEV4
ZWN1dGFibGVCYXNlIHsKICAgICBERUNMQVJFX0lORk87CiAKICAgICBjb25zdCBTdHJpbmcmIG5h
bWUoKSBjb25zdCB7IHJldHVybiBtX25hbWU7IH0KKyAgICBjb25zdCBET01KSVQ6OlNpZ25hdHVy
ZSogc2lnbmF0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9zaWduYXR1cmU7IH0KKworICAgIGNvbnN0
IERPTUpJVDo6U2lnbmF0dXJlKiBzaWduYXR1cmVGb3IoQ29kZVNwZWNpYWxpemF0aW9uS2luZCBr
aW5kKSBjb25zdAorICAgIHsKKyAgICAgICAgaWYgKGlzQ2FsbChraW5kKSkKKyAgICAgICAgICAg
IHJldHVybiBzaWduYXR1cmUoKTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQogCiBw
cm90ZWN0ZWQ6CiAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYsIFBhc3NSZWZQdHI8SklUQ29k
ZT4gY2FsbFRodW5rLCBQYXNzUmVmUHRyPEpJVENvZGU+IGNvbnN0cnVjdFRodW5rLCBjb25zdCBT
dHJpbmcmIG5hbWUpOwpAQCAtNzMsMTAgKzg0LDExIEBAIGNsYXNzIE5hdGl2ZUV4ZWN1dGFibGUg
ZmluYWwgOiBwdWJsaWMgRXhlY3V0YWJsZUJhc2UgewogcHJpdmF0ZToKICAgICBmcmllbmQgY2xh
c3MgRXhlY3V0YWJsZUJhc2U7CiAKLSAgICBOYXRpdmVFeGVjdXRhYmxlKFZNJiwgTmF0aXZlRnVu
Y3Rpb24gZnVuY3Rpb24sIE5hdGl2ZUZ1bmN0aW9uIGNvbnN0cnVjdG9yLCBJbnRyaW5zaWMpOwor
ICAgIE5hdGl2ZUV4ZWN1dGFibGUoVk0mLCBOYXRpdmVGdW5jdGlvbiBmdW5jdGlvbiwgTmF0aXZl
RnVuY3Rpb24gY29uc3RydWN0b3IsIEludHJpbnNpYywgY29uc3QgRE9NSklUOjpTaWduYXR1cmUq
KTsKIAogICAgIE5hdGl2ZUZ1bmN0aW9uIG1fZnVuY3Rpb247CiAgICAgTmF0aXZlRnVuY3Rpb24g
bV9jb25zdHJ1Y3RvcjsKKyAgICBjb25zdCBET01KSVQ6OlNpZ25hdHVyZSogbV9zaWduYXR1cmU7
CiAKICAgICBTdHJpbmcgbV9uYW1lOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1Byb3BlcnR5U2xvdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvUHJvcGVydHlTbG90LmgKaW5kZXggOWRlMTUxYTU2YWEyNzU2Y2ZkMGM2MDAzNjY4MjY2YjE5
Zjk5MzJkZC4uMzg3ZTMxYjQwZTVhZWJmMmYzNWY2Y2EyNzJlMzgzYzA1ZDNmNDUyZCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlTbG90LmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlTbG90LmgKQEAgLTUxLDYgKzUx
LDcgQEAgZW51bSBBdHRyaWJ1dGUgewogICAgIENsYXNzU3RydWN0dXJlICAgID0gMSA8PCAxMiwg
Ly8gcHJvcGVydHkgaXMgYSBsYXp5IGNsYXNzIHN0cnVjdHVyZSAtIG9ubHkgdXNlZCBieSBzdGF0
aWMgaGFzaHRhYmxlcwogICAgIFByb3BlcnR5Q2FsbGJhY2sgID0gMSA8PCAxMywgLy8gcHJvcGVy
dHkgdGhhdCBpcyBhIGxhenkgcHJvcGVydHkgY2FsbGJhY2sgLSBvbmx5IHVzZWQgYnkgc3RhdGlj
IGhhc2h0YWJsZXMKICAgICBET01KSVRBdHRyaWJ1dGUgICA9IDEgPDwgMTQsIC8vIHByb3BlcnR5
IGlzIGEgRE9NIEpJVCBhdHRyaWJ1dGUgLSBvbmx5IHVzZWQgYnkgc3RhdGljIGhhc2h0YWJsZXMK
KyAgICBET01KSVRGdW5jdGlvbiAgICA9IDEgPDwgMTUsIC8vIHByb3BlcnR5IGlzIGEgRE9NIEpJ
VCBmdW5jdGlvbiAtIG9ubHkgdXNlZCBieSBzdGF0aWMgaGFzaHRhYmxlcwogICAgIEJ1aWx0aW5P
ckZ1bmN0aW9uID0gQnVpbHRpbiB8IEZ1bmN0aW9uLCAvLyBoZWxwZXIgb25seSB1c2VkIGJ5IHN0
YXRpYyBoYXNodGFibGVzCiAgICAgQnVpbHRpbk9yRnVuY3Rpb25PckxhenlQcm9wZXJ0eSA9IEJ1
aWx0aW4gfCBGdW5jdGlvbiB8IENlbGxQcm9wZXJ0eSB8IENsYXNzU3RydWN0dXJlIHwgUHJvcGVy
dHlDYWxsYmFjaywgLy8gaGVscGVyIG9ubHkgdXNlZCBieSBzdGF0aWMgaGFzaHRhYmxlcwogICAg
IEJ1aWx0aW5PckZ1bmN0aW9uT3JBY2Nlc3Nvck9yTGF6eVByb3BlcnR5ID0gQnVpbHRpbiB8IEZ1
bmN0aW9uIHwgQWNjZXNzb3IgfCBDZWxsUHJvcGVydHkgfCBDbGFzc1N0cnVjdHVyZSB8IFByb3Bl
cnR5Q2FsbGJhY2ssIC8vIGhlbHBlciBvbmx5IHVzZWQgYnkgc3RhdGljIGhhc2h0YWJsZXMKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAppbmRleCA4MTIzOWM1YjkyNGI0ZWNjOGU2ZDcw
YmM4MDc3ZTgzOGFmMWUxZDYxLi5mOTI3MzQ3MzRhY2VlYzQxYTQ1ODM2MDk1NGIwN2Q4ZmFjMTI1
YmJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCkBAIC01MTEsMTcgKzUxMSwx
NyBAQCBzdGF0aWMgVGh1bmtHZW5lcmF0b3IgdGh1bmtHZW5lcmF0b3JGb3JJbnRyaW5zaWMoSW50
cmluc2ljIGludHJpbnNpYykKIAogTmF0aXZlRXhlY3V0YWJsZSogVk06OmdldEhvc3RGdW5jdGlv
bihOYXRpdmVGdW5jdGlvbiBmdW5jdGlvbiwgTmF0aXZlRnVuY3Rpb24gY29uc3RydWN0b3IsIGNv
bnN0IFN0cmluZyYgbmFtZSkKIHsKLSAgICByZXR1cm4gZ2V0SG9zdEZ1bmN0aW9uKGZ1bmN0aW9u
LCBOb0ludHJpbnNpYywgY29uc3RydWN0b3IsIG5hbWUpOworICAgIHJldHVybiBnZXRIb3N0RnVu
Y3Rpb24oZnVuY3Rpb24sIE5vSW50cmluc2ljLCBjb25zdHJ1Y3RvciwgbnVsbHB0ciwgbmFtZSk7
CiB9CiAKLU5hdGl2ZUV4ZWN1dGFibGUqIFZNOjpnZXRIb3N0RnVuY3Rpb24oTmF0aXZlRnVuY3Rp
b24gZnVuY3Rpb24sIEludHJpbnNpYyBpbnRyaW5zaWMsIE5hdGl2ZUZ1bmN0aW9uIGNvbnN0cnVj
dG9yLCBjb25zdCBTdHJpbmcmIG5hbWUpCitOYXRpdmVFeGVjdXRhYmxlKiBWTTo6Z2V0SG9zdEZ1
bmN0aW9uKE5hdGl2ZUZ1bmN0aW9uIGZ1bmN0aW9uLCBJbnRyaW5zaWMgaW50cmluc2ljLCBOYXRp
dmVGdW5jdGlvbiBjb25zdHJ1Y3RvciwgY29uc3QgRE9NSklUOjpTaWduYXR1cmUqIHNpZ25hdHVy
ZSwgY29uc3QgU3RyaW5nJiBuYW1lKQogewogI2lmIEVOQUJMRShKSVQpCiAgICAgaWYgKGNhblVz
ZUpJVCgpKSB7CiAgICAgICAgIHJldHVybiBqaXRTdHVicy0+aG9zdEZ1bmN0aW9uU3R1YigKICAg
ICAgICAgICAgIHRoaXMsIGZ1bmN0aW9uLCBjb25zdHJ1Y3RvciwKICAgICAgICAgICAgIGludHJp
bnNpYyAhPSBOb0ludHJpbnNpYyA/IHRodW5rR2VuZXJhdG9yRm9ySW50cmluc2ljKGludHJpbnNp
YykgOiAwLAotICAgICAgICAgICAgaW50cmluc2ljLCBuYW1lKTsKKyAgICAgICAgICAgIGludHJp
bnNpYywgc2lnbmF0dXJlLCBuYW1lKTsKICAgICB9CiAjZWxzZSAvLyBFTkFCTEUoSklUKQogICAg
IFVOVVNFRF9QQVJBTShpbnRyaW5zaWMpOwpAQCAtNTI5LDcgKzUyOSw3IEBAIE5hdGl2ZUV4ZWN1
dGFibGUqIFZNOjpnZXRIb3N0RnVuY3Rpb24oTmF0aXZlRnVuY3Rpb24gZnVuY3Rpb24sIEludHJp
bnNpYyBpbnRyaW5zCiAgICAgcmV0dXJuIE5hdGl2ZUV4ZWN1dGFibGU6OmNyZWF0ZSgqdGhpcywK
ICAgICAgICAgYWRvcHRSZWYobmV3IE5hdGl2ZUpJVENvZGUoTWFjcm9Bc3NlbWJsZXJDb2RlUmVm
OjpjcmVhdGVMTEludENvZGVSZWYobGxpbnRfbmF0aXZlX2NhbGxfdHJhbXBvbGluZSksIEpJVENv
ZGU6Okhvc3RDYWxsVGh1bmspKSwgZnVuY3Rpb24sCiAgICAgICAgIGFkb3B0UmVmKG5ldyBOYXRp
dmVKSVRDb2RlKE1hY3JvQXNzZW1ibGVyQ29kZVJlZjo6Y3JlYXRlTExJbnRDb2RlUmVmKGxsaW50
X25hdGl2ZV9jb25zdHJ1Y3RfdHJhbXBvbGluZSksIEpJVENvZGU6Okhvc3RDYWxsVGh1bmspKSwg
Y29uc3RydWN0b3IsCi0gICAgICAgIE5vSW50cmluc2ljLCBuYW1lKTsKKyAgICAgICAgTm9JbnRy
aW5zaWMsIHNpZ25hdHVyZSwgbmFtZSk7CiB9CiAKIFZNOjpDbGllbnREYXRhOjp+Q2xpZW50RGF0
YSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAppbmRleCA0ZmQ3ZWM0MGYwM2VlZGViMjli
ZDQ5NjdkOWNkYzQzMDI0Y2ZhNDEwLi4xNWEwOGMyYTMzYmU5NzJiNGE5YTMyZGZjMzUwZDZlMzhj
Yzg0MmVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKQEAgLTQyOSw3ICs0MjksNyBA
QCBjbGFzcyBWTSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxWTT4gewogICAgIHN0ZDo6
dW5pcXVlX3B0cjxGVEw6OlRodW5rcz4gZnRsVGh1bmtzOwogI2VuZGlmCiAgICAgTmF0aXZlRXhl
Y3V0YWJsZSogZ2V0SG9zdEZ1bmN0aW9uKE5hdGl2ZUZ1bmN0aW9uLCBOYXRpdmVGdW5jdGlvbiBj
b25zdHJ1Y3RvciwgY29uc3QgU3RyaW5nJiBuYW1lKTsKLSAgICBOYXRpdmVFeGVjdXRhYmxlKiBn
ZXRIb3N0RnVuY3Rpb24oTmF0aXZlRnVuY3Rpb24sIEludHJpbnNpYyBpbnRyaW5zaWMsIE5hdGl2
ZUZ1bmN0aW9uIGNvbnN0cnVjdG9yLCBjb25zdCBTdHJpbmcmIG5hbWUpOworICAgIE5hdGl2ZUV4
ZWN1dGFibGUqIGdldEhvc3RGdW5jdGlvbihOYXRpdmVGdW5jdGlvbiwgSW50cmluc2ljLCBOYXRp
dmVGdW5jdGlvbiBjb25zdHJ1Y3RvciwgY29uc3QgRE9NSklUOjpTaWduYXR1cmUqLCBjb25zdCBT
dHJpbmcmIG5hbWUpOwogCiAgICAgc3RhdGljIHB0cmRpZmZfdCBleGNlcHRpb25PZmZzZXQoKQog
ICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNl
L1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggNWEwOTc0ZDZiZTQ4ZjA3NDVhZGE2MzlmZGFi
YTM0ZDRiM2RiNjVmNC4uYjdlZjRiYzdlZTUxMDA3N2Y2NDEyZTIwN2Q3OTI5ZjRiZDg4MzAzNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dl
YkNvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTE1NDYsNyArMTU0Niw2IEBAIHNldChXZWJDb3JlX1NP
VVJDRVMKIAogICAgIGRvbS9kZWZhdWx0L1BsYXRmb3JtTWVzc2FnZVBvcnRDaGFubmVsLmNwcAog
Ci0gICAgZG9taml0L0RPTUpJVEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuY3BwCiAgICAgZG9taml0
L0RPTUpJVEhlbHBlcnMuY3BwCiAgICAgZG9taml0L0pTRG9jdW1lbnRET01KSVQuY3BwCiAgICAg
ZG9taml0L0pTTm9kZURPTUpJVC5jcHAKQEAgLTM1MTksNiArMzUxOCwxNSBAQCBNQUtFX0hBU0hf
VE9PTFMoJHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0vQ29sb3JEYXRhKQogbGlzdChBUFBFTkQgV2Vi
Q29yZV9ERVJJVkVEX1NPVVJDRVMgJHtERVJJVkVEX1NPVVJDRVNfV0VCQ09SRV9ESVJ9L0NvbG9y
RGF0YS5jcHApCiAKIAorIyBHZW5lcmF0ZSBET01KSVRBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmgK
K2FkZF9jdXN0b21fY29tbWFuZCgKKyAgICBPVVRQVVQgJHtERVJJVkVEX1NPVVJDRVNfV0VCQ09S
RV9ESVJ9L0RPTUpJVEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaAorICAgIE1BSU5fREVQRU5ERU5D
WSBkb21qaXQvRE9NSklUQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS55YW1sCisgICAgREVQRU5EUyAk
e1dFQkNPUkVfRElSfS9kb21qaXQvZ2VuZXJhdGUtYWJzdHJhY3QtaGVhcC5yYgorICAgIENPTU1B
TkQgJHtSVUJZX0VYRUNVVEFCTEV9ICR7V0VCQ09SRV9ESVJ9L2RvbWppdC9nZW5lcmF0ZS1hYnN0
cmFjdC1oZWFwLnJiICR7V0VCQ09SRV9ESVJ9L2RvbWppdC9ET01KSVRBYnN0cmFjdEhlYXBSZXBv
c2l0b3J5LnlhbWwgJHtERVJJVkVEX1NPVVJDRVNfV0VCQ09SRV9ESVJ9L0RPTUpJVEFic3RyYWN0
SGVhcFJlcG9zaXRvcnkuaAorICAgIFZFUkJBVElNKQorbGlzdChBUFBFTkQgV2ViQ29yZV9ERVJJ
VkVEX1NPVVJDRVMgJHtERVJJVkVEX1NPVVJDRVNfV0VCQ09SRV9ESVJ9L0RPTUpJVEFic3RyYWN0
SGVhcFJlcG9zaXRvcnkuaCkKKwogIyBHZW5lcmF0ZSBYTUxWaWV3ZXJDU1MuaAogYWRkX2N1c3Rv
bV9jb21tYW5kKAogICAgIE9VVFBVVCAke0RFUklWRURfU09VUkNFU19XRUJDT1JFX0RJUn0vWE1M
Vmlld2VyQ1NTLmggJHtERVJJVkVEX1NPVVJDRVNfV0VCQ09SRV9ESVJ9L1hNTFZpZXdlci5taW4u
Y3NzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlIGIvU291
cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQppbmRleCAwY2JjMWRmODE1ODZmMTQ5OWVm
NDFhMmNiYjYyMTg2MTQ1NTUwYjI3Li5hZGE1YWNiNDlmY2EyYzQwZjMwZDgwNjEyYTE2ZTM5YTJk
MTY2OWFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCisr
KyBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKQEAgLTc0Niw2ICs3NDYsNyBA
QCBKU19CSU5ESU5HX0lETFMgPSBcCiAKIFBZVEhPTiA9IHB5dGhvbgogUEVSTCA9IHBlcmwKK1JV
QlkgPSBydWJ5CiAKIGlmZXEgKCQoT1MpLFdpbmRvd3NfTlQpCiAgICAgREVMRVRFID0gY21kIC8v
QyBkZWwKQEAgLTg1Miw2ICs4NTMsNyBAQCBhbGwgOiBcCiAgICAgQ1NTVmFsdWVLZXl3b3Jkcy5j
cHAgXAogICAgIENTU1ZhbHVlS2V5d29yZHMuaCBcCiAgICAgQ29sb3JEYXRhLmNwcCBcCisgICAg
RE9NSklUQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5oIFwKICAgICBFdmVudEludGVyZmFjZXMuaCBc
CiAgICAgRXZlbnRUYXJnZXRJbnRlcmZhY2VzLmggXAogICAgIEV4Y2VwdGlvbkNvZGVEZXNjcmlw
dGlvbi5jcHAgXApAQCAtOTQxLDYgKzk0MywxNSBAQCBTZWxlY3RvclBzZXVkb0VsZW1lbnRUeXBl
TWFwLmNwcCA6ICQoV2ViQ29yZSkvY3NzL21ha2VTZWxlY3RvclBzZXVkb0VsZW1lbnRzTWFwLgog
CiAjIC0tLS0tLS0tCiAKKyMgRE9NSklUIEFic3RyYWN0IEhlYXAKKworYWxsIDogRE9NSklUQWJz
dHJhY3RIZWFwUmVwb3NpdG9yeS5oCisKK0RPTUpJVEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaCA6
ICQoV2ViQ29yZSkvZG9taml0L2dlbmVyYXRlLWFic3RyYWN0LWhlYXAucmIgJChXZWJDb3JlKS9k
b21qaXQvRE9NSklUQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS55YW1sCisJJChSVUJZKSAiJChXZWJD
b3JlKS9kb21qaXQvZ2VuZXJhdGUtYWJzdHJhY3QtaGVhcC5yYiIgJChXZWJDb3JlKS9kb21qaXQv
RE9NSklUQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS55YW1sIC4vRE9NSklUQWJzdHJhY3RIZWFwUmVw
b3NpdG9yeS5oCisKKyMgLS0tLS0tLS0KKwogIyBYTUxWaWV3ZXIgQ1NTCiAKIGFsbCA6IFhNTFZp
ZXdlckNTUy5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy9i
eXRlY29kZS9TcGVjdWxhdGVkVHlwZS5oIGIvU291cmNlL1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRl
cnMvYnl0ZWNvZGUvU3BlY3VsYXRlZFR5cGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wOTQ2NmY0ZjAwYjgwN2Rm
ZWRhMGZjODIwODU0NmI3MTg0NGYwOTllCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvRm9yd2FyZGluZ0hlYWRlcnMvYnl0ZWNvZGUvU3BlY3VsYXRlZFR5cGUuaApAQCAtMCwwICsx
LDI5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
CisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lm
bmRlZiBXZWJDb3JlX0ZXRF9TcGVjdWxhdGVkVHlwZV9oCisjZGVmaW5lIFdlYkNvcmVfRldEX1Nw
ZWN1bGF0ZWRUeXBlX2gKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TcGVjdWxhdGVkVHlwZS5o
PgorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy9k
b21qaXQvRE9NSklUU2lnbmF0dXJlLmggYi9Tb3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVy
cy9kb21qaXQvRE9NSklUU2lnbmF0dXJlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzIwMDI3ZjZlMDhlMzgzMGUz
NTFiMWM5Y2QzMmYyMDMxMjlkMmI1ZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L0ZvcndhcmRpbmdIZWFkZXJzL2RvbWppdC9ET01KSVRTaWduYXR1cmUuaApAQCAtMCwwICsxLDI5
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisg
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRl
ZiBXZWJDb3JlX0ZXRF9ET01KSVRTaWduYXR1cmVfaAorI2RlZmluZSBXZWJDb3JlX0ZXRF9ET01K
SVRTaWduYXR1cmVfaAorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0RPTUpJVFNpZ25hdHVyZS5o
PgorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKaW5kZXggNTFhZTE4MWEzNzE1MjAxMzExNmI5YjgwMWU4NTcxMjI0ZWNmYWVkOC4u
NmRkNTBkYmExNGZjNTEyNjA0NTc1ZDZlMjEyODk4ZWE5ZjI0ZDBiOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNjIxMywxMiAr
NjIxMywxMyBAQAogCQlFMzE1MEVBNzFEQTcyMTkzMDAxOTQwMTIgLyogRE9NSklUSGVscGVycy5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTMxNTBFQTUx
REE3MjE4RDAwMTk0MDEyIC8qIERPTUpJVEhlbHBlcnMuaCAqLzsgfTsKIAkJRTMxODAzOUQxREM0
MDA5OTAwOTkzMkMyIC8qIEpTRHluYW1pY0Rvd25jYXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFM0E1ODcyRTFEQzNGNTI2MDBGNjA3QTYgLyogSlNE
eW5hbWljRG93bmNhc3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQlFMzU2NUI3QjFEQzJENkM5MDAyMTdEQkQgLyogSlNFdmVudEN1c3RvbS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM0RUU0OUYxREMy
RDU3NTAwRUFBOUQzIC8qIEpTRXZlbnRDdXN0b20uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwotCQlFMzVDQTE0RDFEQkMzQTNGMDBGODM1MTYgLyogRE9N
SklUQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBFMzVDQTE0QjFEQkMzQTNDMDBGODM1MTYgLyogRE9NSklUQWJz
dHJhY3RIZWFwUmVwb3NpdG9yeS5jcHAgKi87IH07Ci0JCUUzNUNBMTRFMURCQzNBNDIwMEY4MzUx
NiAvKiBET01KSVRBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzVDQTE0QzFEQkMzQTNDMDBGODM1MTYgLyogRE9N
SklUQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5oICovOyB9OworCQlFMzU4MDJCNjFEQzg0MzVEMDBB
OTc3M0MgLyogRE9NSklUSURMVHlwZUZpbHRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRTM1ODAyQjUxREM4NDM1ODAwQTk3NzNDIC8qIERPTUpJVElE
TFR5cGVGaWx0ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQlFMzc3RkU0RDFEQURFMTY1MDBDREQwMjUgLyogTm9kZUNvbnN0YW50cy5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTNEMDQ5OTMxREFEQzA0
NTAwNzE4RjNDIC8qIE5vZGVDb25zdGFudHMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQlFMzg4Mzg5ODFCQUQxNDVGMDBENjJFRTMgLyogU2NyaXB0
TW9kdWxlTG9hZGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEUzODgzODk0MUJBRDE0NUYwMEQ2MkVFMyAvKiBTY3JpcHRNb2R1bGVMb2FkZXIuY3Bw
ICovOyB9OwogCQlFMzg4Mzg5OTFCQUQxNDVGMDBENjJFRTMgLyogU2NyaXB0TW9kdWxlTG9hZGVy
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzg4Mzg5
NTFCQUQxNDVGMDBENjJFRTMgLyogU2NyaXB0TW9kdWxlTG9hZGVyLmggKi87IH07CiAJCUUzOThG
QzI0MURDMzJBMjAwMDNDNDY4NCAvKiBET01KSVRIZWxwZXJzLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzOThGQzIzMURDMzJBMUIwMDNDNDY4NCAv
KiBET01KSVRIZWxwZXJzLmNwcCAqLzsgfTsKKwkJRTNBNzc2NjcxREM4NUQyODAwQjY5MEQ4IC8q
IERPTUpJVElETENvbnZlcnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEUzQTc3NjY1MURDODVEMjIwMEI2OTBEOCAvKiBET01KSVRJRExDb252ZXJ0Lmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJRTNBNzc2
NjgxREM4NUQyODAwQjY5MEQ4IC8qIERPTUpJVElETFR5cGUuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzQTc3NjY2MURDODVEMjIwMEI2OTBEOCAvKiBE
T01KSVRJRExUeXBlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJRTNCMkYwRUIxRDdGNEM5RDAwQjBDOUQxIC8qIExvYWRhYmxlQ2xhc3NpY1Njcmlw
dC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFM0Iy
RjBFMzFEN0YzNUVDMDBCMEM5RDEgLyogTG9hZGFibGVDbGFzc2ljU2NyaXB0LmNwcCAqLzsgfTsK
IAkJRTNCMkYwRUMxRDdGNENBMTAwQjBDOUQxIC8qIExvYWRhYmxlU2NyaXB0LmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzQjJGMEU5MUQ3RjNEM0Mw
MEIwQzlEMSAvKiBMb2FkYWJsZVNjcmlwdC5jcHAgKi87IH07CiAJCUUzQjJGMEVEMUQ3RjRDQTMw
MEIwQzlEMSAvKiBMb2FkYWJsZVNjcmlwdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRTNCMkYwRTcxRDdGMzVFQzAwQjBDOUQxIC8qIExvYWRhYmxlU2Ny
aXB0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAg
LTE0MDYxLDEzICsxNDA2MiwxNSBAQAogCQlFMUZGOEY2QTE4MERCNUJFMDAxMzI2NzQgLyogQ3J5
cHRvQWxnb3JpdGhtUmVnaXN0cnkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gQ3J5cHRvQWxnb3JpdGhtUmVnaXN0cnkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlFMUZGOEY2QjE4MERCNUJFMDAxMzI2NzQgLyogQ3J5cHRvQWxnb3JpdGhtUmVnaXN0
cnkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ3J5cHRvQWxnb3JpdGhtUmVn
aXN0cnkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTMxNTBFQTUxREE3MjE4RDAw
MTk0MDEyIC8qIERPTUpJVEhlbHBlcnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gRE9NSklUSGVscGVycy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFMzM0ODI1
RTFEQzkzQUEwMDA5Qzk1NDQgLyogRE9NSklUQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBET01KSVRBYnN0cmFjdEhlYXBSZXBvc2l0b3J5
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzNEVFNDlGMURDMkQ1NzUwMEVBQTlE
MyAvKiBKU0V2ZW50Q3VzdG9tLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpT
RXZlbnRDdXN0b20uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRTM1Q0ExNEIxREJD
M0EzQzAwRjgzNTE2IC8qIERPTUpJVEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRE9NSklUQWJzdHJhY3RIZWFwUmVwb3NpdG9y
eS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUUzNUNBMTRDMURCQzNBM0MwMEY4
MzUxNiAvKiBET01KSVRBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IERPTUpJVEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTM1ODAyQjUxREM4NDM1ODAwQTk3NzNDIC8qIERPTUpJVElE
TFR5cGVGaWx0ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRE9NSklUSURM
VHlwZUZpbHRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzg4Mzg5NDFCQUQx
NDVGMDBENjJFRTMgLyogU2NyaXB0TW9kdWxlTG9hZGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFNjcmlwdE1vZHVsZUxvYWRlci5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUUzODgzODk1MUJBRDE0NUYwMEQ2MkVFMyAvKiBTY3JpcHRNb2R1bGVM
b2FkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2NyaXB0TW9kdWxlTG9h
ZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzOThGQzIzMURDMzJBMUIwMDND
NDY4NCAvKiBET01KSVRIZWxwZXJzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IERPTUpJVEhlbHBlcnMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlF
M0E1ODcyRTFEQzNGNTI2MDBGNjA3QTYgLyogSlNEeW5hbWljRG93bmNhc3QuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNEeW5hbWljRG93bmNhc3QuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJRTNBNzc2NjUxREM4NUQyMjAwQjY5MEQ4IC8qIERPTUpJVElETENv
bnZlcnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRE9NSklUSURMQ29udmVy
dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFM0E3NzY2NjFEQzg1RDIyMDBCNjkw
RDggLyogRE9NSklUSURMVHlwZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBE
T01KSVRJRExUeXBlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzQUZBOTY0MURB
NkU5MDgwMDI4NjFCRCAvKiBKU05vZGVET01KSVQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gSlNOb2RlRE9NSklULmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJRTNCMkYwRTMxRDdGMzVFQzAwQjBDOUQxIC8qIExvYWRhYmxlQ2xhc3NpY1NjcmlwdC5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBMb2FkYWJsZUNsYXNzaWNT
Y3JpcHQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFM0IyRjBFNDFEN0YzNUVD
MDBCMEM5RDEgLyogTG9hZGFibGVDbGFzc2ljU2NyaXB0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IExvYWRhYmxlQ2xhc3NpY1NjcmlwdC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwpAQCAtMTcyNTgsNiArMTcyNjEsNyBAQAogCQkJCTY1NjU4MTQ3MDlEMTMwNDMwMDBF
NjFENyAvKiBDU1NWYWx1ZUtleXdvcmRzLmdwZXJmICovLAogCQkJCTY1NjU4MTQ4MDlEMTMwNDMw
MDBFNjFENyAvKiBDU1NWYWx1ZUtleXdvcmRzLmggKi8sCiAJCQkJOUIzQTg4NzExNDU2MzJGOTAw
M0FFOEY1IC8qIERPTURPTVNldHRhYmxlVG9rZW5MaXN0LmggKi8sCisJCQkJRTMzNDgyNUUxREM5
M0FBMDAwOUM5NTQ0IC8qIERPTUpJVEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaCAqLywKIAkJCQlF
MUM2Q0ZDMjE3NDZEMjkzMDA3Qjg3QTEgLyogRE9NV2luZG93Q29uc3RydWN0b3JzLmlkbCAqLywK
IAkJCQk5NzBCNzJBNTE0NTAwOEVCMDBGMDBBMzcgLyogRXZlbnRIZWFkZXJzLmggKi8sCiAJCQkJ
OTcwQjcyODkxNDRGRkFDNjAwRjAwQTM3IC8qIEV2ZW50SW50ZXJmYWNlcy5oICovLApAQCAtMjI4
NzAsMTEgKzIyODc0LDEyIEBACiAJCUUzQUZBOTYzMURBNkU4QUYwMDI4NjFCRCAvKiBkb21qaXQg
Ki8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAotCQkJCUUzNUNBMTRC
MURCQzNBM0MwMEY4MzUxNiAvKiBET01KSVRBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmNwcCAqLywK
LQkJCQlFMzVDQTE0QzFEQkMzQTNDMDBGODM1MTYgLyogRE9NSklUQWJzdHJhY3RIZWFwUmVwb3Np
dG9yeS5oICovLAogCQkJCUUzQzk5QTA4MURDM0Q0MTcwMDc5NEFEMyAvKiBET01KSVRDaGVja0RP
TS5oICovLAogCQkJCUUzOThGQzIzMURDMzJBMUIwMDNDNDY4NCAvKiBET01KSVRIZWxwZXJzLmNw
cCAqLywKIAkJCQlFMzE1MEVBNTFEQTcyMThEMDAxOTQwMTIgLyogRE9NSklUSGVscGVycy5oICov
LAorCQkJCUUzQTc3NjY1MURDODVEMjIwMEI2OTBEOCAvKiBET01KSVRJRExDb252ZXJ0LmggKi8s
CisJCQkJRTNBNzc2NjYxREM4NUQyMjAwQjY5MEQ4IC8qIERPTUpJVElETFR5cGUuaCAqLywKKwkJ
CQlFMzU4MDJCNTFEQzg0MzU4MDBBOTc3M0MgLyogRE9NSklUSURMVHlwZUZpbHRlci5oICovLAog
CQkJCUUzQjdDMDYyMURDMzQxNUEwMDFGQjBCOCAvKiBKU0RvY3VtZW50RE9NSklULmNwcCAqLywK
IAkJCQlFM0FGQTk2NDFEQTZFOTA4MDAyODYxQkQgLyogSlNOb2RlRE9NSklULmNwcCAqLywKIAkJ
CSk7CkBAIC0yNTc0MSw2ICsyNTc0Niw3IEBACiAJCQkJNDYwQ0JGMzYxRDRCQ0QwRTAwOTJFODhF
IC8qIEpTRE9NV2luZG93UHJvcGVydGllcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNCRkI1M0Qw
RENEMjlDRjAwMTlCM0U1IC8qIEpTRE9NV2luZG93U2hlbGwuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTY1RTBFOTQ0MTEzM0M4OUYwMEI0Q0IxMCAvKiBKU0RPTVdyYXBwZXIuaCBpbiBIZWFkZXJzICov
LAorCQkJCUUzQTc3NjY3MURDODVEMjgwMEI2OTBEOCAvKiBET01KSVRJRExDb252ZXJ0LmggaW4g
SGVhZGVycyAqLywKIAkJCQlGRDc4NjhCQTEzNkI5OTkyMDBENDAzREYgLyogSlNEeW5hbWljc0Nv
bXByZXNzb3JOb2RlLmggaW4gSGVhZGVycyAqLywKIAkJCQk2NURGMzFGQTA5RDFDQzYwMDAwQkUz
MjUgLyogSlNFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlBREVDNzhGODE4RUU1MzA4MDAx
MzE1QzIgLyogSlNFbGVtZW50Q3VzdG9tLmggaW4gSGVhZGVycyAqLywKQEAgLTI3MzA0LDYgKzI3
MzEwLDcgQEAKIAkJCQkwODUyNUU2MzEyNzhDMDAxMDBBODQ3NzggLyogU1ZHQW5pbWF0ZWRTdGF0
aWNQcm9wZXJ0eVRlYXJPZmYuaCBpbiBIZWFkZXJzICovLAogCQkJCTA4NERCNTlCMTI4MDA4Q0Mw
MDJBNkQ2NCAvKiBTVkdBbmltYXRlZFN0cmluZy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDgyNTA5
MzkxMjhCRDREODAwRTJFRDhFIC8qIFNWR0FuaW1hdGVkVHJhbnNmb3JtTGlzdC5oIGluIEhlYWRl
cnMgKi8sCisJCQkJRTNBNzc2NjgxREM4NUQyODAwQjY5MEQ4IC8qIERPTUpJVElETFR5cGUuaCBp
biBIZWFkZXJzICovLAogCQkJCTA4NUExNTkzMTI4OUE4REQwMDI3MTBFMyAvKiBTVkdBbmltYXRl
ZFRyYW5zZm9ybUxpc3RQcm9wZXJ0eVRlYXJPZmYuaCBpbiBIZWFkZXJzICovLAogCQkJCTQzOUQz
MzQzMTNBNjkxMUMwMEMyMEY0RiAvKiBTVkdBbmltYXRlZFR5cGUuaCBpbiBIZWFkZXJzICovLAog
CQkJCTQzOUQzMzQ0MTNBNjkxMUMwMEMyMEY0RiAvKiBTVkdBbmltYXRlZFR5cGVBbmltYXRvci5o
IGluIEhlYWRlcnMgKi8sCkBAIC0yNzg0Myw2ICsyNzg1MCw3IEBACiAJCQkJOTdBQUJEMjMxNEZB
MDlENTAwNzQ1N0FFIC8qIFdlYlNvY2tldEV4dGVuc2lvbkRpc3BhdGNoZXIuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTRBNUEyQURDMTYxRTdFMDAwMDU4ODlERCAvKiBXZWJTb2NrZXRFeHRlbnNpb25Q
YXJzZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTk3QUFCRDI0MTRGQTA5RDUwMDc0NTdBRSAvKiBX
ZWJTb2NrZXRFeHRlbnNpb25Qcm9jZXNzb3IuaCBpbiBIZWFkZXJzICovLAorCQkJCUUzNTgwMkI2
MURDODQzNUQwMEE5NzczQyAvKiBET01KSVRJRExUeXBlRmlsdGVyLmggaW4gSGVhZGVycyAqLywK
IAkJCQk5N0FBQkQyNTE0RkEwOUQ1MDA3NDU3QUUgLyogV2ViU29ja2V0RnJhbWUuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTk3QUFCRDI3MTRGQTA5RDUwMDc0NTdBRSAvKiBXZWJTb2NrZXRIYW5kc2hh
a2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTMxREVBNDU2MUIzOUY0RDkwMEY3NzE3OCAvKiBXZWJT
eXN0ZW1CYWNrZHJvcExheWVyLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5oCmluZGV4IGMxODFmOWExNmY1NTMwYmQ5NTNk
YmY1ZjFjMTVmMTNhNjI0ZmExMmMuLjVkYzFlZTQwYzk4NTQwZThjNDcwNWI3MDk1NzU5ZmZjZmMy
NWRhMGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFs
T2JqZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmpl
Y3QuaApAQCAtODEsNyArODEsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgcHVibGljOgog
ICAgICAgICB+SlNET01HbG9iYWxPYmplY3QoKTsKIAotICAgICAgICBzdGF0aWMgY29uc3QgSlND
OjpDbGFzc0luZm8qIGluZm8oKSB7IHJldHVybiAmc19pbmZvOyB9CisgICAgICAgIHN0YXRpYyBj
b25zdGV4cHIgY29uc3QgSlNDOjpDbGFzc0luZm8qIGluZm8oKSB7IHJldHVybiAmc19pbmZvOyB9
CiAKICAgICAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpW
TSYgdm0sIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgICAgIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KaW5kZXggMzU0OTBk
MDJjMmRhMGJlMjUwZDZmZWVhNTlmZmJlNzBiNTM1MGU1OS4uZjFhZTg2YTZkODgyNjAwNGI0NzM3
YzgyODUyNzY4ZTkzYWJlYjE1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KQEAgLTE0MzUsNyArMTQzNSw3IEBAIHN1YiBHZW5l
cmF0ZUhlYWRlcgogICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAicHJvdGVjdGVkOlxuIik7
CiAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgc3RhdGljIGNvbnN0IEpTQzo6Q2xh
c3NJbmZvIHNfaW5mbztcbiIpOwogICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAicHVibGlj
OlxuIik7Ci0gICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgc3RhdGljIGNvbnN0IEpT
Qzo6Q2xhc3NJbmZvKiBpbmZvKCkgeyByZXR1cm4gJnNfaW5mbzsgfVxuXG4iKTsKKyAgICAgICAg
cHVzaChAaGVhZGVyQ29udGVudCwgIiAgICBzdGF0aWMgY29uc3RleHByIGNvbnN0IEpTQzo6Q2xh
c3NJbmZvKiBpbmZvKCkgeyByZXR1cm4gJnNfaW5mbzsgfVxuXG4iKTsKICAgICB9IGVsc2Ugewog
ICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiXG4iKTsKICAgICAgICAgcHVzaChAaGVhZGVy
Q29udGVudCwgIiAgICBERUNMQVJFX0lORk87XG5cbiIpOwpAQCAtMTg4OSw3ICsxODg5LDExIEBA
IHN1YiBHZW5lcmF0ZVByb3BlcnRpZXNIYXNoVGFibGUKICAgICAgICAgIyBGSVhNRTogUmVtb3Zl
IHRoaXMgb25jZSB3ZSBjYW4gZ2V0IHJpZCBvZiB0aGUgcXVpcmsgaW50cm9kdWNlZCBpbiBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYzOTY3LgogICAgICAgICAkZnVu
Y3Rpb25MZW5ndGggPSAzIGlmICRpbnRlcmZhY2VOYW1lIGVxICJFdmVudCIgYW5kICRmdW5jdGlv
bi0+bmFtZSBlcSAiaW5pdEV2ZW50IjsKIAotICAgICAgICBwdXNoKEAkaGFzaFZhbHVlMiwgJGZ1
bmN0aW9uTGVuZ3RoKTsKKyAgICAgICAgaWYgKCRmdW5jdGlvbi0+ZXh0ZW5kZWRBdHRyaWJ1dGVz
LT57IkRPTUpJVCJ9KSB7CisgICAgICAgICAgICBwdXNoKEAkaGFzaFZhbHVlMiwgIiZET01KSVRT
aWduYXR1cmVGb3IiIC4gJGludGVyZmFjZS0+dHlwZS0+bmFtZSAuICRjb2RlR2VuZXJhdG9yLT5X
S191Y2ZpcnN0KCRmdW5jdGlvbi0+bmFtZSkpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAg
ICAgcHVzaChAJGhhc2hWYWx1ZTIsICRmdW5jdGlvbkxlbmd0aCk7CisgICAgICAgIH0KIAogICAg
ICAgICBwdXNoKEAkaGFzaFNwZWNpYWxzLCBDb21wdXRlRnVuY3Rpb25TcGVjaWFsKCRpbnRlcmZh
Y2UsICRmdW5jdGlvbikpOwogCkBAIC0yNTA1LDM5ICsyNTA5LDI4IEBAIHN1YiBhZGRVbnNjb3Bh
YmxlUHJvcGVydGllcwogICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHB1dERpcmVjdFdpdGhv
dXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT51bnNjb3BhYmxlc1N5bWJvbCwgJnVu
c2NvcGFibGVzLCBEb250RW51bSB8IFJlYWRPbmx5KTtcbiIpOwogfQogCi1zdWIgR2V0UmVzdWx0
VHlwZUZpbHRlcgorc3ViIEdldFVuc2FmZUFyZ3VtZW50VHlwZQogewotICAgIG15ICgkdHlwZSkg
PSBAXzsKKyAgICBteSAoJGludGVyZmFjZSwgJHR5cGUpID0gQF87CiAKLSAgICBteSAlVHlwZUZp
bHRlcnMgPSAoCi0gICAgICAgICJhbnkiID0+ICJTcGVjSGVhcFRvcCIsCi0gICAgICAgICJib29s
ZWFuIiA9PiAiU3BlY0Jvb2xlYW4iLAotICAgICAgICAiYnl0ZSIgPT4gIlNwZWNJbnQzMk9ubHki
LAotICAgICAgICAib2N0ZXQiID0+ICJTcGVjSW50MzJPbmx5IiwKLSAgICAgICAgInNob3J0IiA9
PiAiU3BlY0ludDMyT25seSIsCi0gICAgICAgICJ1bnNpZ25lZCBzaG9ydCIgPT4gIlNwZWNJbnQz
Mk9ubHkiLAotICAgICAgICAibG9uZyIgPT4gIlNwZWNJbnQzMk9ubHkiLAotICAgICAgICAidW5z
aWduZWQgbG9uZyIgPT4gIlNwZWNCeXRlY29kZU51bWJlciIsCi0gICAgICAgICJsb25nIGxvbmci
ID0+ICJTcGVjQnl0ZWNvZGVOdW1iZXIiLAotICAgICAgICAidW5zaWduZWQgbG9uZyBsb25nIiA9
PiAiU3BlY0J5dGVjb2RlTnVtYmVyIiwKLSAgICAgICAgImZsb2F0IiA9PiAiU3BlY0J5dGVjb2Rl
TnVtYmVyIiwKLSAgICAgICAgInVucmVzdHJpY3RlZCBmbG9hdCIgPT4gIlNwZWNCeXRlY29kZU51
bWJlciIsCi0gICAgICAgICJkb3VibGUiID0+ICJTcGVjQnl0ZWNvZGVOdW1iZXIiLAotICAgICAg
ICAidW5yZXN0cmljdGVkIGRvdWJsZSIgPT4gIlNwZWNCeXRlY29kZU51bWJlciIsCi0gICAgICAg
ICJET01TdHJpbmciID0+ICJTcGVjU3RyaW5nIiwKLSAgICAgICAgIkJ5dGVTdHJpbmciID0+ICJT
cGVjU3RyaW5nIiwKLSAgICAgICAgIlVTVlN0cmluZyIgPT4gIlNwZWNTdHJpbmciLAotICAgICk7
CisgICAgbXkgJElETFR5cGUgPSBHZXRJRExUeXBlKCRpbnRlcmZhY2UsICR0eXBlKTsKKyAgICBy
ZXR1cm4gIkRPTUpJVDo6SURMSlNBcmd1bWVudFR5cGU8JHtJRExUeXBlfT4iOworfQogCi0gICAg
aWYgKGV4aXN0cyAkVHlwZUZpbHRlcnN7JHR5cGUtPm5hbWV9KSB7Ci0gICAgICAgIG15ICRyZXN1
bHRUeXBlID0gIkpTQzo6JFR5cGVGaWx0ZXJzeyR0eXBlLT5uYW1lfSI7Ci0gICAgICAgIGlmICgk
dHlwZS0+aXNOdWxsYWJsZSkgewotICAgICAgICAgICAgZGllICJcImFueVwiIHR5cGUgbXVzdCBu
b3QgYmVjb21lIG51bGxhYmxlLiIgaWYgJHR5cGUtPm5hbWUgZXEgImFueSI7Ci0gICAgICAgICAg
ICAkcmVzdWx0VHlwZSA9ICIoJHJlc3VsdFR5cGUgfCBKU0M6OlNwZWNPdGhlcikiOwotICAgICAg
ICB9Ci0gICAgICAgIHJldHVybiAkcmVzdWx0VHlwZTsKLSAgICB9Ci0gICAgcmV0dXJuICJTcGVj
SGVhcFRvcCI7CitzdWIgR2V0QXJndW1lbnRUeXBlRmlsdGVyCit7CisgICAgbXkgKCRpbnRlcmZh
Y2UsICR0eXBlKSA9IEBfOworCisgICAgbXkgJElETFR5cGUgPSBHZXRJRExUeXBlKCRpbnRlcmZh
Y2UsICR0eXBlKTsKKyAgICByZXR1cm4gIkRPTUpJVDo6SURMQXJndW1lbnRUeXBlRmlsdGVyPCR7
SURMVHlwZX0+IjsKK30KKworc3ViIEdldFJlc3VsdFR5cGVGaWx0ZXIKK3sKKyAgICBteSAoJGlu
dGVyZmFjZSwgJHR5cGUpID0gQF87CisKKyAgICBteSAkSURMVHlwZSA9IEdldElETFR5cGUoJGlu
dGVyZmFjZSwgJHR5cGUpOworICAgIHJldHVybiAiRE9NSklUOjpJRExSZXN1bHRUeXBlRmlsdGVy
PCR7SURMVHlwZX0+IjsKIH0KIAogc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KQEAgLTI2MDgs
NiArMjYwMSwxNyBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICAgICAgICAgcHVz
aChAaW1wbENvbnRlbnQsICIjaWYgJHtjb25kaXRpb25hbFN0cmluZ31cbiIpIGlmICRjb25kaXRp
b25hbFN0cmluZzsKICAgICAgICAgICAgIG15ICRmdW5jdGlvbk5hbWUgPSBHZXRGdW5jdGlvbk5h
bWUoJGludGVyZmFjZSwgJGNsYXNzTmFtZSwgJGZ1bmN0aW9uKTsKICAgICAgICAgICAgIHB1c2go
QGltcGxDb250ZW50LCAiSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMICR7ZnVuY3Rp
b25OYW1lfShKU0M6OkV4ZWNTdGF0ZSopO1xuIik7CisgICAgICAgICAgICBpZiAoJGNvZGVHZW5l
cmF0b3ItPkV4dGVuZGVkQXR0cmlidXRlQ29udGFpbnMoJGZ1bmN0aW9uLT5leHRlbmRlZEF0dHJp
YnV0ZXMtPntET01KSVR9LCAiU2lnbmF0dXJlIikpIHsKKyAgICAgICAgICAgICAgICAkaW1wbElu
Y2x1ZGVzeyJET01KSVRJRExUeXBlLmgifSA9IDE7CisgICAgICAgICAgICAgICAgbXkgJHVuc2Fm
ZUZ1bmN0aW9uTmFtZSA9ICJ1bnNhZmUiIC4gJGNvZGVHZW5lcmF0b3ItPldLX3VjZmlyc3QoJGZ1
bmN0aW9uTmFtZSk7CisgICAgICAgICAgICAgICAgbXkgJGZ1bmN0aW9uU2lnbmF0dXJlID0gIkpT
Qzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCAke3Vuc2FmZUZ1bmN0aW9uTmFtZX0oSlND
OjpFeGVjU3RhdGUqLCAkY2xhc3NOYW1lKiI7CisgICAgICAgICAgICAgICAgZm9yZWFjaCBteSAk
YXJndW1lbnQgKEB7JGZ1bmN0aW9uLT5hcmd1bWVudHN9KSB7CisgICAgICAgICAgICAgICAgICAg
IG15ICR0eXBlID0gJGFyZ3VtZW50LT50eXBlOworICAgICAgICAgICAgICAgICAgICBteSAkYXJn
dW1lbnRUeXBlID0gR2V0VW5zYWZlQXJndW1lbnRUeXBlKCRpbnRlcmZhY2UsICR0eXBlKTsKKyAg
ICAgICAgICAgICAgICAgICAgJGZ1bmN0aW9uU2lnbmF0dXJlIC49ICIsICR7YXJndW1lbnRUeXBl
fSI7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50
LCAkZnVuY3Rpb25TaWduYXR1cmUgLiAiKTtcbiIpOworICAgICAgICAgICAgfQogICAgICAgICAg
ICAgcHVzaChAaW1wbENvbnRlbnQsICIjZW5kaWZcbiIpIGlmICRjb25kaXRpb25hbFN0cmluZzsK
ICAgICAgICAgfQogCkBAIC0yNjQ0LDYgKzI2NDgsMzYgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50
YXRpb24KICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJcbiIpOwogICAgIH0KIAorICAgIGlm
ICgkbnVtRnVuY3Rpb25zID4gMCkgeworICAgICAgICAjIEdlbmVyYXRlIERPTUpJVDo6U2lnbmF0
dXJlIHZhcmlhYmxlcy4KKyAgICAgICAgZm9yZWFjaCBteSAkZnVuY3Rpb24gKEBmdW5jdGlvbnMp
IHsKKyAgICAgICAgICAgIG5leHQgdW5sZXNzICRjb2RlR2VuZXJhdG9yLT5FeHRlbmRlZEF0dHJp
YnV0ZUNvbnRhaW5zKCRmdW5jdGlvbi0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57RE9NSklUfSwgIlNp
Z25hdHVyZSIpOworICAgICAgICAgICAgJGltcGxJbmNsdWRlc3siRE9NSklUSURMVHlwZUZpbHRl
ci5oIn0gPSAxOworICAgICAgICAgICAgJGltcGxJbmNsdWRlc3siRE9NSklUQ2hlY2tET00uaCJ9
ID0gMTsKKyAgICAgICAgICAgICRpbXBsSW5jbHVkZXN7IkRPTUpJVEFic3RyYWN0SGVhcFJlcG9z
aXRvcnkuaCJ9ID0gMTsKKworICAgICAgICAgICAgbXkgJGlzT3ZlcmxvYWRlZCA9ICRmdW5jdGlv
bi0+e292ZXJsb2Fkc30gJiYgQHskZnVuY3Rpb24tPntvdmVybG9hZHN9fSA+IDE7CisgICAgICAg
ICAgICBkaWUgIm92ZXJsb2FkcyBpcyBub3Qgc3VwcG9ydGVkIGluIERPTUpJVCIgaWYgJGlzT3Zl
cmxvYWRlZDsKKworICAgICAgICAgICAgbXkgJGludGVyZmFjZU5hbWUgPSAkaW50ZXJmYWNlLT50
eXBlLT5uYW1lOworICAgICAgICAgICAgbXkgJGZ1bmN0aW9uTmFtZSA9IEdldEZ1bmN0aW9uTmFt
ZSgkaW50ZXJmYWNlLCAkY2xhc3NOYW1lLCAkZnVuY3Rpb24pOworICAgICAgICAgICAgbXkgJHVu
c2FmZUZ1bmN0aW9uTmFtZSA9ICJ1bnNhZmUiIC4gJGNvZGVHZW5lcmF0b3ItPldLX3VjZmlyc3Qo
JGZ1bmN0aW9uTmFtZSk7CisgICAgICAgICAgICBteSAkZG9tSklUU2lnbmF0dXJlTmFtZSA9ICJE
T01KSVRTaWduYXR1cmVGb3IiIC4gJGludGVyZmFjZS0+dHlwZS0+bmFtZSAuICRjb2RlR2VuZXJh
dG9yLT5XS191Y2ZpcnN0KCRmdW5jdGlvbi0+bmFtZSk7CisgICAgICAgICAgICBteSAkY2xhc3NJ
bmZvID0gIkpTIiAuICRpbnRlcmZhY2UtPnR5cGUtPm5hbWUgLiAiOjppbmZvKCkiOworICAgICAg
ICAgICAgbXkgJHJlc3VsdFR5cGUgPSBHZXRSZXN1bHRUeXBlRmlsdGVyKCRpbnRlcmZhY2UsICRm
dW5jdGlvbi0+dHlwZSk7CisgICAgICAgICAgICBteSAkZG9tSklUU2lnbmF0dXJlID0gInN0YXRp
YyBjb25zdCBKU0M6OkRPTUpJVDo6U2lnbmF0dXJlICR7ZG9tSklUU2lnbmF0dXJlTmFtZX0oKHVp
bnRwdHJfdCkke3Vuc2FmZUZ1bmN0aW9uTmFtZX0sIERPTUpJVDo6Y2hlY2tET008JGludGVyZmFj
ZU5hbWU+LCAkY2xhc3NJbmZvLCBKU0M6OkRPTUpJVDo6RWZmZWN0Ojpmb3JSZWFkKERPTUpJVDo6
QWJzdHJhY3RIZWFwUmVwb3NpdG9yeTo6RE9NKSwgJHtyZXN1bHRUeXBlfSI7CisgICAgICAgICAg
ICBmb3JlYWNoIG15ICRhcmd1bWVudCAoQHskZnVuY3Rpb24tPmFyZ3VtZW50c30pIHsKKyAgICAg
ICAgICAgICAgICBteSAkdHlwZSA9ICRhcmd1bWVudC0+dHlwZTsKKyAgICAgICAgICAgICAgICBt
eSAkYXJndW1lbnRUeXBlID0gR2V0QXJndW1lbnRUeXBlRmlsdGVyKCRpbnRlcmZhY2UsICR0eXBl
KTsKKyAgICAgICAgICAgICAgICAkZG9tSklUU2lnbmF0dXJlIC49ICIsICR7YXJndW1lbnRUeXBl
fSI7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBteSAkY29uZGl0aW9uYWxTdHJpbmcgPSAk
Y29kZUdlbmVyYXRvci0+R2VuZXJhdGVDb25kaXRpb25hbFN0cmluZygkZnVuY3Rpb24pOworICAg
ICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIjaWYgJHtjb25kaXRpb25hbFN0cmluZ31cbiIp
IGlmICRjb25kaXRpb25hbFN0cmluZzsKKyAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAk
ZG9tSklUU2lnbmF0dXJlIC4gIik7XG4iKTsKKyAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50
LCAiI2VuZGlmXG4iKSBpZiAkY29uZGl0aW9uYWxTdHJpbmc7CisgICAgICAgIH0KKyAgICB9CisK
ICAgICBHZW5lcmF0ZVByb3RvdHlwZURlY2xhcmF0aW9uKFxAaW1wbENvbnRlbnQsICRjbGFzc05h
bWUsICRpbnRlcmZhY2UpIGlmICFIZWFkZXJOZWVkc1Byb3RvdHlwZURlY2xhcmF0aW9uKCRpbnRl
cmZhY2UpOwogCiAgICAgR2VuZXJhdGVDb25zdHJ1Y3RvckRlY2xhcmF0aW9uKFxAaW1wbENvbnRl
bnQsICRjbGFzc05hbWUsICRpbnRlcmZhY2UpIGlmIE5lZWRzQ29uc3RydWN0b3JQcm9wZXJ0eSgk
aW50ZXJmYWNlKTsKQEAgLTI3NDAsNyArMjc3NCwxMSBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRh
dGlvbgogICAgICAgICAgICAgcHVzaChAaGFzaFZhbHVlMSwgJGZ1bmN0aW9uTmFtZSk7CiAKICAg
ICAgICAgICAgIG15ICRmdW5jdGlvbkxlbmd0aCA9IEdldEZ1bmN0aW9uTGVuZ3RoKCRmdW5jdGlv
bik7Ci0gICAgICAgICAgICBwdXNoKEBoYXNoVmFsdWUyLCAkZnVuY3Rpb25MZW5ndGgpOworICAg
ICAgICAgICAgaWYgKCRjb2RlR2VuZXJhdG9yLT5FeHRlbmRlZEF0dHJpYnV0ZUNvbnRhaW5zKCRm
dW5jdGlvbi0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57RE9NSklUfSwgIlNpZ25hdHVyZSIpKSB7Cisg
ICAgICAgICAgICAgICAgcHVzaChAaGFzaFZhbHVlMiwgIkRPTUpJVEZ1bmN0aW9uRm9yIiAuICRp
bnRlcmZhY2UtPnR5cGUtPm5hbWUgLiAkY29kZUdlbmVyYXRvci0+V0tfdWNmaXJzdCgkZnVuY3Rp
b24tPm5hbWUpKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgcHVzaChA
aGFzaFZhbHVlMiwgJGZ1bmN0aW9uTGVuZ3RoKTsKKyAgICAgICAgICAgIH0KIAogICAgICAgICAg
ICAgcHVzaChAaGFzaFNwZWNpYWxzLCBDb21wdXRlRnVuY3Rpb25TcGVjaWFsKCRpbnRlcmZhY2Us
ICRmdW5jdGlvbikpOwogCkBAIC0zMzA3LDEzICszMzQ1LDE0IEBAIHN1YiBHZW5lcmF0ZUltcGxl
bWVudGF0aW9uCiAKICAgICAgICAgICAgIGlmICgkYXR0cmlidXRlLT5leHRlbmRlZEF0dHJpYnV0
ZXMtPnsiRE9NSklUIn0pIHsKICAgICAgICAgICAgICAgICAkaW1wbEluY2x1ZGVzeyI8d3RmL05l
dmVyRGVzdHJveWVkLmg+In0gPSAxOworICAgICAgICAgICAgICAgICRpbXBsSW5jbHVkZXN7IkRP
TUpJVElETFR5cGVGaWx0ZXIuaCJ9ID0gMTsKICAgICAgICAgICAgICAgICBteSAkaW50ZXJmYWNl
TmFtZSA9ICRpbnRlcmZhY2UtPnR5cGUtPm5hbWU7CiAgICAgICAgICAgICAgICAgbXkgJGF0dHJp
YnV0ZU5hbWUgPSAkYXR0cmlidXRlLT5uYW1lOwogICAgICAgICAgICAgICAgIG15ICRnZW5lcmF0
b3JOYW1lID0gJGludGVyZmFjZU5hbWUgLiAkY29kZUdlbmVyYXRvci0+V0tfdWNmaXJzdCgkYXR0
cmlidXRlLT5uYW1lKTsKICAgICAgICAgICAgICAgICBteSAkZG9tSklUQ2xhc3NOYW1lID0gJGdl
bmVyYXRvck5hbWUgLiAiRE9NSklUIjsKICAgICAgICAgICAgICAgICBteSAkZ2V0dGVyID0gR2V0
QXR0cmlidXRlR2V0dGVyTmFtZSgkaW50ZXJmYWNlLCAkZ2VuZXJhdG9yTmFtZSwgJGF0dHJpYnV0
ZSk7CiAgICAgICAgICAgICAgICAgbXkgJHNldHRlciA9IElzUmVhZG9ubHkoJGF0dHJpYnV0ZSkg
PyAibnVsbHB0ciIgOiBHZXRBdHRyaWJ1dGVTZXR0ZXJOYW1lKCRpbnRlcmZhY2UsICRnZW5lcmF0
b3JOYW1lLCAkYXR0cmlidXRlKTsKLSAgICAgICAgICAgICAgICBteSAkcmVzdWx0VHlwZSA9IEdl
dFJlc3VsdFR5cGVGaWx0ZXIoJGF0dHJpYnV0ZS0+dHlwZSk7CisgICAgICAgICAgICAgICAgbXkg
JHJlc3VsdFR5cGUgPSBHZXRSZXN1bHRUeXBlRmlsdGVyKCRpbnRlcmZhY2UsICRhdHRyaWJ1dGUt
PnR5cGUpOwogICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiJGRvbUpJVENsYXNz
TmFtZTo6JGRvbUpJVENsYXNzTmFtZSgpXG4iKTsKICAgICAgICAgICAgICAgICBwdXNoKEBpbXBs
Q29udGVudCwgIiAgICA6IEpTQzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIoJGdldHRlciwgJHNldHRl
ciwgJHtjbGFzc05hbWV9OjppbmZvKCksICRyZXN1bHRUeXBlKVxuIik7CiAgICAgICAgICAgICAg
ICAgcHVzaChAaW1wbENvbnRlbnQsICJ7XG4iKTsKQEAgLTM2ODgsNiArMzcyNyw3IEBAIHN1YiBH
ZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAKICAgICAgICAgICAgIG15ICRpc0N1c3RvbSA9IEhhc0N1
c3RvbU1ldGhvZCgkZnVuY3Rpb24tPmV4dGVuZGVkQXR0cmlidXRlcyk7CiAgICAgICAgICAgICBt
eSAkaXNPdmVybG9hZGVkID0gJGZ1bmN0aW9uLT57b3ZlcmxvYWRzfSAmJiBAeyRmdW5jdGlvbi0+
e292ZXJsb2Fkc319ID4gMTsKKyAgICAgICAgICAgIG15ICRpc0RPTUpJVCA9ICRjb2RlR2VuZXJh
dG9yLT5FeHRlbmRlZEF0dHJpYnV0ZUNvbnRhaW5zKCRmdW5jdGlvbi0+ZXh0ZW5kZWRBdHRyaWJ1
dGVzLT57RE9NSklUfSwgIlNpZ25hdHVyZSIpOwogCiAgICAgICAgICAgICBteSAkbWF5VGhyb3dM
ZWdhY3lFeGNlcHRpb24gPSAkZnVuY3Rpb24tPmV4dGVuZGVkQXR0cmlidXRlcy0+e01heVRocm93
TGVnYWN5RXhjZXB0aW9ufTsKIApAQCAtMzgyNiw2ICszODY2LDc5IEBAIEVORAogICAgICAgICAg
ICAgfQogCiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIn1cblxuIik7CisKKyAgICAg
ICAgICAgIGlmICgkaXNET01KSVQpIHsKKyAgICAgICAgICAgICAgICAkaW1wbEluY2x1ZGVzeyI8
aW50ZXJwcmV0ZXIvRnJhbWVUcmFjZXJzLmg+In0gPSAxOworICAgICAgICAgICAgICAgIG15ICR1
bnNhZmVGdW5jdGlvbk5hbWUgPSAidW5zYWZlIiAuICRjb2RlR2VuZXJhdG9yLT5XS191Y2ZpcnN0
KCRmdW5jdGlvbk5hbWUpOworICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiSlND
OjpFbmNvZGVkSlNWYWx1ZSAke3Vuc2FmZUZ1bmN0aW9uTmFtZX0oSlNDOjpFeGVjU3RhdGUqIHN0
YXRlLCAkY2xhc3NOYW1lKiBjYXN0ZWRUaGlzIik7CisgICAgICAgICAgICAgICAgZm9yZWFjaCBt
eSAkYXJndW1lbnQgKEB7JGZ1bmN0aW9uLT5hcmd1bWVudHN9KSB7CisgICAgICAgICAgICAgICAg
ICAgIG15ICR0eXBlID0gJGFyZ3VtZW50LT50eXBlOworICAgICAgICAgICAgICAgICAgICBteSAk
YXJndW1lbnRUeXBlID0gR2V0VW5zYWZlQXJndW1lbnRUeXBlKCRpbnRlcmZhY2UsICR0eXBlKTsK
KyAgICAgICAgICAgICAgICAgICAgbXkgJG5hbWUgPSAkYXJndW1lbnQtPm5hbWU7CisgICAgICAg
ICAgICAgICAgICAgIG15ICRlbmNvZGVkTmFtZSA9ICJlbmNvZGVkIiAuICRjb2RlR2VuZXJhdG9y
LT5XS191Y2ZpcnN0KCRuYW1lKTsKKyAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsICIsICR7YXJndW1lbnRUeXBlfSAke2VuY29kZWROYW1lfSIpOworICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIilcbiIpOworICAgICAgICAg
ICAgICAgIHB1c2goQGltcGxDb250ZW50LCAie1xuIik7CisgICAgICAgICAgICAgICAgcHVzaChA
aW1wbENvbnRlbnQsICIgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTtcbiIpOworICAgICAgICAgICAg
ICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpO1xuIik7Cisg
ICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgSlNDOjpOYXRpdmVDYWxsRnJh
bWVUcmFjZXIgdHJhY2VyKCZ2bSwgc3RhdGUpO1xuIik7CisgICAgICAgICAgICAgICAgcHVzaChA
aW1wbENvbnRlbnQsICIgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7XG4iKTsKKyAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBVTlVTRURf
UEFSQU0odGhyb3dTY29wZSk7XG4iKTsKKyAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVu
dCwgIiAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpO1xuIik7CisgICAgICAg
ICAgICAgICAgbXkgQGFyZ3VtZW50czsKKyAgICAgICAgICAgICAgICBteSAkaW1wbEZ1bmN0aW9u
TmFtZTsKKyAgICAgICAgICAgICAgICBteSAkaW1wbGVtZW50ZWRCeSA9ICRmdW5jdGlvbi0+ZXh0
ZW5kZWRBdHRyaWJ1dGVzLT57SW1wbGVtZW50ZWRCeX07CisKKyAgICAgICAgICAgICAgICBpZiAo
JGltcGxlbWVudGVkQnkpIHsKKyAgICAgICAgICAgICAgICAgICAgQWRkVG9JbXBsSW5jbHVkZXMo
IiR7aW1wbGVtZW50ZWRCeX0uaCIsICRmdW5jdGlvbi0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Q29u
ZGl0aW9uYWx9KTsKKyAgICAgICAgICAgICAgICAgICAgdW5zaGlmdChAYXJndW1lbnRzLCAiaW1w
bCIpIGlmICEkZnVuY3Rpb24tPmlzU3RhdGljOworICAgICAgICAgICAgICAgICAgICAkaW1wbEZ1
bmN0aW9uTmFtZSA9ICJXZWJDb3JlOjoke2ltcGxlbWVudGVkQnl9Ojoke2Z1bmN0aW9uSW1wbGVt
ZW50YXRpb25OYW1lfSI7CisgICAgICAgICAgICAgICAgfSBlbHNpZiAoJGZ1bmN0aW9uLT5pc1N0
YXRpYykgeworICAgICAgICAgICAgICAgICAgICAkaW1wbEZ1bmN0aW9uTmFtZSA9ICIke2ludGVy
ZmFjZU5hbWV9Ojoke2Z1bmN0aW9uSW1wbGVtZW50YXRpb25OYW1lfSI7CisgICAgICAgICAgICAg
ICAgfSBlbHNpZiAoJHN2Z1Byb3BlcnR5T3JMaXN0UHJvcGVydHlUeXBlIGFuZCAhJHN2Z0xpc3RQ
cm9wZXJ0eVR5cGUpIHsKKyAgICAgICAgICAgICAgICAgICAgJGltcGxGdW5jdGlvbk5hbWUgPSAi
cG9kSW1wbC4ke2Z1bmN0aW9uSW1wbGVtZW50YXRpb25OYW1lfSI7CisgICAgICAgICAgICAgICAg
fSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgJGltcGxGdW5jdGlvbk5hbWUgPSAiaW1wbC4k
e2Z1bmN0aW9uSW1wbGVtZW50YXRpb25OYW1lfSI7CisgICAgICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICAgICAgbXkgJGFyZ3VtZW50SW5kZXggPSAwOworICAgICAgICAgICAgICAgIGZvcmVh
Y2ggbXkgJGFyZ3VtZW50IChAeyRmdW5jdGlvbi0+YXJndW1lbnRzfSkgeworICAgICAgICAgICAg
ICAgICAgICBteSAkdmFsdWUgPSAiIjsKKyAgICAgICAgICAgICAgICAgICAgbXkgJHR5cGUgPSAk
YXJndW1lbnQtPnR5cGU7CisgICAgICAgICAgICAgICAgICAgIG15ICRuYW1lID0gJGFyZ3VtZW50
LT5uYW1lOworICAgICAgICAgICAgICAgICAgICBteSAkZW5jb2RlZE5hbWUgPSAiZW5jb2RlZCIg
LiAkY29kZUdlbmVyYXRvci0+V0tfdWNmaXJzdCgkbmFtZSk7CisgICAgICAgICAgICAgICAgICAg
IG15ICRuYXRpdmVUeXBlID0gR2V0TmF0aXZlVHlwZSgkaW50ZXJmYWNlLCAkYXJndW1lbnQtPnR5
cGUpOworICAgICAgICAgICAgICAgICAgICBteSAkc2hvdWxkUGFzc0J5UmVmZXJlbmNlID0gU2hv
dWxkUGFzc1dyYXBwZXJCeVJlZmVyZW5jZSgkYXJndW1lbnQsICRpbnRlcmZhY2UpOworCisgICAg
ICAgICAgICAgICAgICAgIGlmICghJHNob3VsZFBhc3NCeVJlZmVyZW5jZSAmJiAoJGNvZGVHZW5l
cmF0b3ItPklzV3JhcHBlclR5cGUoJHR5cGUpIHx8ICRjb2RlR2VuZXJhdG9yLT5Jc1R5cGVkQXJy
YXlUeXBlKCR0eXBlKSkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICRpbXBsSW5jbHVkZXN7
IjxydW50aW1lL0Vycm9yLmg+In0gPSAxOworICAgICAgICAgICAgICAgICAgICAgICAgbXkgKCRu
YXRpdmVWYWx1ZSwgJG1heVRocm93RXhjZXB0aW9uKSA9IFVuc2FmZVRvTmF0aXZlKCRpbnRlcmZh
Y2UsICRhcmd1bWVudCwgJGVuY29kZWROYW1lLCAkZnVuY3Rpb24tPmV4dGVuZGVkQXR0cmlidXRl
cy0+e0NvbmRpdGlvbmFsfSk7CisgICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29u
dGVudCwgIiAgICAkbmF0aXZlVHlwZSAkbmFtZSA9IG51bGxwdHI7XG4iKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICRuYW1lID0gJG5hdGl2ZVZhbHVl
O1xuIik7CisgICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpO1xuIikgaWYg
JG1heVRocm93RXhjZXB0aW9uOworICAgICAgICAgICAgICAgICAgICAgICAgJHZhbHVlID0gIldU
Rk1vdmUoJG5hbWUpIjsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIG15ICgkbmF0aXZlVmFsdWUsICRtYXlUaHJvd0V4Y2VwdGlvbikgPSBVbnNh
ZmVUb05hdGl2ZSgkaW50ZXJmYWNlLCAkYXJndW1lbnQsICRlbmNvZGVkTmFtZSwgJGZ1bmN0aW9u
LT5leHRlbmRlZEF0dHJpYnV0ZXMtPntDb25kaXRpb25hbH0pOworICAgICAgICAgICAgICAgICAg
ICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgYXV0byAkbmFtZSA9ICR7bmF0aXZlVmFsdWV9
O1xuIik7CisgICAgICAgICAgICAgICAgICAgICAgICAkdmFsdWUgPSAiV1RGTW92ZSgkbmFtZSki
OworICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTtcbiIpIGlmICRtYXlU
aHJvd0V4Y2VwdGlvbjsKKyAgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAg
ICAgIGlmICgkc2hvdWxkUGFzc0J5UmVmZXJlbmNlKSB7CisgICAgICAgICAgICAgICAgICAgICAg
ICAkdmFsdWUgPSAiKiRuYW1lIjsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
ICAgICAgICBwdXNoKEBhcmd1bWVudHMsICR2YWx1ZSk7CisgICAgICAgICAgICAgICAgICAgICRh
cmd1bWVudEluZGV4Kys7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIG15ICRm
dW5jdGlvblN0cmluZyA9ICIkaW1wbEZ1bmN0aW9uTmFtZSgiIC4gam9pbigiLCAiLCBAYXJndW1l
bnRzKSAuICIpIjsKKyAgICAgICAgICAgICAgICAkZnVuY3Rpb25TdHJpbmcgPSAicHJvcGFnYXRl
RXhjZXB0aW9uKCpzdGF0ZSwgdGhyb3dTY29wZSwgJGZ1bmN0aW9uU3RyaW5nKSIgaWYgTmVlZHNF
eHBsaWNpdFByb3BhZ2F0ZUV4Y2VwdGlvbkNhbGwoJGZ1bmN0aW9uKTsKKyAgICAgICAgICAgICAg
ICBteSAkdGhpc09iamVjdCA9ICJjYXN0ZWRUaGlzIjsKKyAgICAgICAgICAgICAgICBwdXNoKEBp
bXBsQ29udGVudCwgIiAgICBKU1ZhbHVlIHJlc3VsdCA9ICIgLiBOYXRpdmVUb0pTVmFsdWVVc2lu
Z1BvaW50ZXJzKCRmdW5jdGlvbiwgMSwgJGludGVyZmFjZSwgJGZ1bmN0aW9uU3RyaW5nLCAkdGhp
c09iamVjdCkgLiAiO1xuIik7CisgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpO1xuIik7CisgICAgICAgICAgICAgICAg
cHVzaChAaW1wbENvbnRlbnQsICJ9XG5cbiIpOworICAgICAgICAgICAgfQorCiAgICAgICAgICAg
ICBwdXNoKEBpbXBsQ29udGVudCwgIiNlbmRpZlxuXG4iKSBpZiAkY29uZGl0aW9uYWw7CiAKICAg
ICAgICAgICAgICMgR2VuZXJhdGUgYSBmdW5jdGlvbiBkaXNwYXRjaGluZyBjYWxsIHRvIHRoZSBy
ZXN0IG9mIHRoZSBvdmVybG9hZHMuCkBAIC01MzE5LDYgKzU0MzIsNDMgQEAgc3ViIEpTVmFsdWVU
b05hdGl2ZQogICAgIHJldHVybiAoIkpTIiAuICR0eXBlLT5uYW1lIC4gIjo6dG9XcmFwcGVkKCR2
YWx1ZSkiLCAwKTsKIH0KIAorc3ViIFVuc2FmZVRvTmF0aXZlCit7CisgICAgbXkgKCRpbnRlcmZh
Y2UsICRjb250ZXh0LCAkdmFsdWUsICRjb25kaXRpb25hbCwgJHN0YXRlUG9pbnRlciwgJHN0YXRl
UmVmZXJlbmNlLCAkdGhpc09iamVjdFJlZmVyZW5jZSkgPSBAXzsKKworICAgIGFzc2VydCgiSW52
YWxpZCBjb250ZXh0IHR5cGUiKSBpZiAhSXNWYWxpZENvbnRleHRGb3JKU1ZhbHVlVG9OYXRpdmUo
JGNvbnRleHQpOworCisgICAgbXkgJHR5cGUgPSAkY29udGV4dC0+dHlwZTsKKworICAgICMgRklY
TUU6IFJlbW92ZSB0aGVzZSAzIHZhcmlhYmxlcyB3aGVuIGFsbCBKU1ZhbHVlVG9OYXRpdmUgdXNl
IHJlZmVyZW5jZXMuCisgICAgJHN0YXRlUG9pbnRlciA9ICJzdGF0ZSIgdW5sZXNzICRzdGF0ZVBv
aW50ZXI7CisgICAgJHN0YXRlUmVmZXJlbmNlID0gIipzdGF0ZSIgdW5sZXNzICRzdGF0ZVJlZmVy
ZW5jZTsKKyAgICAkdGhpc09iamVjdFJlZmVyZW5jZSA9ICIqY2FzdGVkVGhpcyIgdW5sZXNzICR0
aGlzT2JqZWN0UmVmZXJlbmNlOworCisgICAgaWYgKEpTVmFsdWVUb05hdGl2ZUlzSGFuZGxlZEJ5
RE9NQ29udmVydCgkdHlwZSwgJGNvbnRleHQpKSB7CisgICAgICAgIEFkZFRvSW1wbEluY2x1ZGVz
KCJET01KSVRJRExDb252ZXJ0LmgiKTsKKyAgICAgICAgQWRkVG9JbXBsSW5jbHVkZXNGb3JJRExU
eXBlKCR0eXBlLCAkY29uZGl0aW9uYWwpOworCisgICAgICAgIG15ICRJRExUeXBlID0gR2V0SURM
VHlwZSgkaW50ZXJmYWNlLCAkdHlwZSk7CisKKyAgICAgICAgbXkgQGNvbnZlcnNpb25Bcmd1bWVu
dHMgPSAoKTsKKyAgICAgICAgcHVzaChAY29udmVyc2lvbkFyZ3VtZW50cywgIiRzdGF0ZVJlZmVy
ZW5jZSIpOworICAgICAgICBwdXNoKEBjb252ZXJzaW9uQXJndW1lbnRzLCAiJHZhbHVlIik7CisK
KyAgICAgICAgbXkgQGNvbnZlcnNpb25TdGF0aWNBcmd1bWVudHMgPSAoKTsKKyAgICAgICAgcHVz
aChAY29udmVyc2lvblN0YXRpY0FyZ3VtZW50cywgR2V0SW50ZWdlckNvbnZlcnNpb25Db25maWd1
cmF0aW9uKCRjb250ZXh0KSkgaWYgJGNvZGVHZW5lcmF0b3ItPklzSW50ZWdlclR5cGUoJHR5cGUp
OworICAgICAgICBwdXNoKEBjb252ZXJzaW9uU3RhdGljQXJndW1lbnRzLCBHZXRTdHJpbmdDb252
ZXJzaW9uQ29uZmlndXJhdGlvbigkY29udGV4dCkpIGlmICRjb2RlR2VuZXJhdG9yLT5Jc1N0cmlu
Z1R5cGUoJHR5cGUpOworCisgICAgICAgIGlmIChzY2FsYXIoQGNvbnZlcnNpb25TdGF0aWNBcmd1
bWVudHMpID4gMCkgeworICAgICAgICAgICAgcmV0dXJuICgiRE9NSklUOjpEaXJlY3RDb252ZXJ0
ZXI8JElETFR5cGU+OjpkaXJlY3RDb252ZXJ0PCIgLiBqb2luKCIsICIsIEBjb252ZXJzaW9uU3Rh
dGljQXJndW1lbnRzKSAuICI+KCIgLiBqb2luKCIsICIsIEBjb252ZXJzaW9uQXJndW1lbnRzKSAu
ICIpIiwgMSk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuICgiRE9NSklUOjpEaXJlY3RDb252
ZXJ0ZXI8JElETFR5cGU+OjpkaXJlY3RDb252ZXJ0KCIgLiBqb2luKCIsICIsIEBjb252ZXJzaW9u
QXJndW1lbnRzKSAuICIpIiwgMSk7CisgICAgfQorCisgICAgIyBGSVhNRTogRXh0ZW5kIG1vcmUu
CisgICAgZGllICJPbmx5IERPTUNvbnZlcnQgc3VwcG9ydGVkIG9uZSBpcyBub3cgc3VwcG9ydGVk
IGluIERPTUpJVCB1bnNhZmUuIjsKK30KKwogc3ViIE5hdGl2ZVRvSlNWYWx1ZUlzSGFuZGxlZEJ5
RE9NQ29udmVydAogewogICAgIG15ICgkdHlwZSkgPSBAXzsKQEAgLTU1MjUsNyArNTY3NSwxMCBA
QCBzdWIgR2VuZXJhdGVIYXNoVGFibGVWYWx1ZUFycmF5CiAgICAgICAgICAgICBwdXNoKEBpbXBs
Q29udGVudCwgIiNpZiAke2NvbmRpdGlvbmFsU3RyaW5nfVxuIik7CiAgICAgICAgIH0KIAotICAg
ICAgICBpZiAoIkAkc3BlY2lhbHNbJGldIiA9fiBtL0Z1bmN0aW9uLykgeworICAgICAgICBpZiAo
IkAkc3BlY2lhbHNbJGldIiA9fiBtL0RPTUpJVEZ1bmN0aW9uLykgeworICAgICAgICAgICAgJGZp
cnN0VGFyZ2V0VHlwZSA9ICJzdGF0aWNfY2FzdDxOYXRpdmVGdW5jdGlvbj4iOworICAgICAgICAg
ICAgJHNlY29uZFRhcmdldFR5cGUgPSAic3RhdGljX2Nhc3Q8Y29uc3QgSlNDOjpET01KSVQ6OlNp
Z25hdHVyZSo+IjsKKyAgICAgICAgfSBlbHNpZiAoIkAkc3BlY2lhbHNbJGldIiA9fiBtL0Z1bmN0
aW9uLykgewogICAgICAgICAgICAgJGZpcnN0VGFyZ2V0VHlwZSA9ICJzdGF0aWNfY2FzdDxOYXRp
dmVGdW5jdGlvbj4iOwogICAgICAgICB9IGVsc2lmICgiQCRzcGVjaWFsc1skaV0iID1+IG0vQnVp
bHRpbi8pIHsKICAgICAgICAgICAgICRmaXJzdFRhcmdldFR5cGUgPSAic3RhdGljX2Nhc3Q8QnVp
bHRpbkdlbmVyYXRvcj4iOwpAQCAtNjEyMyw2ICs2Mjc2LDkgQEAgc3ViIENvbXB1dGVGdW5jdGlv
blNwZWNpYWwKICAgICBlbHNlIHsKICAgICAgICAgcHVzaChAc3BlY2lhbHMsICJKU0M6OkZ1bmN0
aW9uIik7CiAgICAgfQorICAgIGlmICgkZnVuY3Rpb24tPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJE
T01KSVQifSkgeworICAgICAgICBwdXNoKEBzcGVjaWFscywgIkRPTUpJVEZ1bmN0aW9uIikgaWYg
JGNvZGVHZW5lcmF0b3ItPkV4dGVuZGVkQXR0cmlidXRlQ29udGFpbnMoJGZ1bmN0aW9uLT5leHRl
bmRlZEF0dHJpYnV0ZXMtPntET01KSVR9LCAiU2lnbmF0dXJlIik7CisgICAgfQogICAgIHJldHVy
biAoQHNwZWNpYWxzID4gMCkgPyBqb2luKCIgfCAiLCBAc3BlY2lhbHMpIDogIjAiOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0lETEF0dHJpYnV0ZXMu
dHh0IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9JRExBdHRyaWJ1dGVzLnR4dApp
bmRleCBhMmU3NTQxNTkxY2UzZjU3NmU3YTdkMmQ2ZDJmYzYyZGRkZmEwNDFjLi4xNDZjMmJjYzhl
MGYzNzZkNWRjYzU0MzUzOTA4MzM1OWM3MmRiZTYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL0lETEF0dHJpYnV0ZXMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvSURMQXR0cmlidXRlcy50eHQKQEAgLTUyLDcgKzUyLDcgQEAgQ3Vz
dG9tUHV0RnVuY3Rpb24KIEN1c3RvbVNldFByb3RvdHlwZQogQ3VzdG9tU2V0dGVyCiBDdXN0b21U
b0pTT2JqZWN0Ci1ET01KSVQKK0RPTUpJVD18U2lnbmF0dXJlCiBEb05vdENoZWNrQ29uc3RhbnRz
CiBEb05vdENoZWNrU2VjdXJpdHkKIERvTm90Q2hlY2tTZWN1cml0eU9uR2V0dGVyCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RE9NSklU
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RET01K
SVQuY3BwCmluZGV4IDI0ODhkZjI2YmRiNTJiNTBjZDY3ZDYwY2NhNTY1YjI2NTM2N2U0Y2YuLmFm
MWJjZmMzMWJiYWZlMmIyNTNmODdkMGY3M2IwMzgzMWIzNzlhZGEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RET01KSVQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RET01KSVQuY3Bw
CkBAIC0yMSwxMCArMjEsMTggQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJKU1Rl
c3RET01KSVQuaCIKIAorI2luY2x1ZGUgIkRPTUpJVEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaCIK
KyNpbmNsdWRlICJET01KSVRDaGVja0RPTS5oIgorI2luY2x1ZGUgIkRPTUpJVElETENvbnZlcnQu
aCIKKyNpbmNsdWRlICJET01KSVRJRExUeXBlLmgiCisjaW5jbHVkZSAiRE9NSklUSURMVHlwZUZp
bHRlci5oIgorI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKICNpbmNsdWRlICJKU0J5dGVTdHJp
bmcuaCIKICNpbmNsdWRlICJKU0RPTUJpbmRpbmcuaCIKICNpbmNsdWRlICJKU0RPTUNvbnN0cnVj
dG9yLmgiCiAjaW5jbHVkZSAiSlNET01Db252ZXJ0LmgiCisjaW5jbHVkZSA8aW50ZXJwcmV0ZXIv
RnJhbWVUcmFjZXJzLmg+CisjaW5jbHVkZSA8cnVudGltZS9FcnJvci5oPgogI2luY2x1ZGUgPHd0
Zi9HZXRQdHIuaD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KIApAQCAtMzIsNiAr
NDAsMTEgQEAgdXNpbmcgbmFtZXNwYWNlIEpTQzsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCisv
LyBGdW5jdGlvbnMKKworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdERP
TUpJVFByb3RvdHlwZUZ1bmN0aW9uR2V0QXR0cmlidXRlKEpTQzo6RXhlY1N0YXRlKik7CitKU0M6
OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgdW5zYWZlSnNUZXN0RE9NSklUUHJvdG90eXBl
RnVuY3Rpb25HZXRBdHRyaWJ1dGUoSlNDOjpFeGVjU3RhdGUqLCBKU1Rlc3RET01KSVQqLCBET01K
SVQ6OklETEpTQXJndW1lbnRUeXBlPElETERPTVN0cmluZz4pOworCiAvLyBBdHRyaWJ1dGVzCiAK
IEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0RE9NSklUQW55QXR0cihKU0M6OkV4ZWNTdGF0ZSos
IEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKQEAgLTcyLDYgKzg1LDcg
QEAgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RET01KSVROb2RlTnVsbGFibGVBdHRyKEpTQzo6
RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlMKIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0RE9N
SklUQ29uc3RydWN0b3IoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6
OlByb3BlcnR5TmFtZSk7CiBib29sIHNldEpTVGVzdERPTUpJVENvbnN0cnVjdG9yKEpTQzo6RXhl
Y1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7CiAKK3N0
YXRpYyBjb25zdCBKU0M6OkRPTUpJVDo6U2lnbmF0dXJlIERPTUpJVFNpZ25hdHVyZUZvclRlc3RE
T01KSVRHZXRBdHRyaWJ1dGUoKHVpbnRwdHJfdCl1bnNhZmVKc1Rlc3RET01KSVRQcm90b3R5cGVG
dW5jdGlvbkdldEF0dHJpYnV0ZSwgRE9NSklUOjpjaGVja0RPTTxUZXN0RE9NSklUPiwgSlNUZXN0
RE9NSklUOjppbmZvKCksIEpTQzo6RE9NSklUOjpFZmZlY3Q6OmZvclJlYWQoRE9NSklUOjpBYnN0
cmFjdEhlYXBSZXBvc2l0b3J5OjpET00pLCBET01KSVQ6OklETFJlc3VsdFR5cGVGaWx0ZXI8SURM
TnVsbGFibGU8SURMRE9NU3RyaW5nPj4sIERPTUpJVDo6SURMQXJndW1lbnRUeXBlRmlsdGVyPElE
TERPTVN0cmluZz4pOwogY2xhc3MgSlNUZXN0RE9NSklUUHJvdG90eXBlIDogcHVibGljIEpTQzo6
SlNOb25GaW5hbE9iamVjdCB7CiBwdWJsaWM6CiAgICAgdXNpbmcgQmFzZSA9IEpTQzo6SlNOb25G
aW5hbE9iamVjdDsKQEAgLTE1Myw2ICsxNjcsNyBAQCBzdGF0aWMgY29uc3QgSGFzaFRhYmxlVmFs
dWUgSlNUZXN0RE9NSklUUHJvdG90eXBlVGFibGVWYWx1ZXNbXSA9CiAgICAgeyAiYnl0ZVN0cmlu
Z051bGxhYmxlQXR0ciIsIFJlYWRPbmx5IHwgQ3VzdG9tQWNjZXNzb3IgfCBET01KSVRBdHRyaWJ1
dGUsIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxET01KSVRHZXR0ZXJTZXR0
ZXJHZW5lcmF0b3I+KGRvbUpJVEdldHRlclNldHRlckZvclRlc3RET01KSVRCeXRlU3RyaW5nTnVs
bGFibGVBdHRyKSwgKGludHB0cl90KSAoMCkgfSB9LAogICAgIHsgInVzdlN0cmluZ051bGxhYmxl
QXR0ciIsIFJlYWRPbmx5IHwgQ3VzdG9tQWNjZXNzb3IgfCBET01KSVRBdHRyaWJ1dGUsIE5vSW50
cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxET01KSVRHZXR0ZXJTZXR0ZXJHZW5lcmF0
b3I+KGRvbUpJVEdldHRlclNldHRlckZvclRlc3RET01KSVRVc3ZTdHJpbmdOdWxsYWJsZUF0dHIp
LCAoaW50cHRyX3QpICgwKSB9IH0sCiAgICAgeyAibm9kZU51bGxhYmxlQXR0ciIsIFJlYWRPbmx5
IHwgQ3VzdG9tQWNjZXNzb3IgfCBET01KSVRBdHRyaWJ1dGUsIE5vSW50cmluc2ljLCB7IChpbnRw
dHJfdClzdGF0aWNfY2FzdDxET01KSVRHZXR0ZXJTZXR0ZXJHZW5lcmF0b3I+KGRvbUpJVEdldHRl
clNldHRlckZvclRlc3RET01KSVROb2RlTnVsbGFibGVBdHRyKSwgKGludHB0cl90KSAoMCkgfSB9
LAorICAgIHsgImdldEF0dHJpYnV0ZSIsIEpTQzo6RnVuY3Rpb24gfCBET01KSVRGdW5jdGlvbiwg
Tm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PE5hdGl2ZUZ1bmN0aW9uPihqc1Rl
c3RET01KSVRQcm90b3R5cGVGdW5jdGlvbkdldEF0dHJpYnV0ZSksIChpbnRwdHJfdCkgc3RhdGlj
X2Nhc3Q8Y29uc3QgSlNDOjpET01KSVQ6OlNpZ25hdHVyZSo+KCZET01KSVRTaWduYXR1cmVGb3JU
ZXN0RE9NSklUR2V0QXR0cmlidXRlKSB9IH0sCiB9OwogCiBjb25zdCBDbGFzc0luZm8gSlNUZXN0
RE9NSklUUHJvdG90eXBlOjpzX2luZm8gPSB7ICJUZXN0RE9NSklUUHJvdG90eXBlIiwgJkJhc2U6
OnNfaW5mbywgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3RET01KSVRQcm90b3R5cGUpIH07
CkBAIC0xODUsNiArMjAwLDExIEBAIHRlbXBsYXRlPD4gaW5saW5lIEpTVGVzdERPTUpJVCogQmlu
ZGluZ0NhbGxlcjxKU1Rlc3RET01KSVQ+OjpjYXN0Rm9yQXR0cmlidXRlKEV4CiAgICAgcmV0dXJu
IGpzRHluYW1pY0Rvd25jYXN0PEpTVGVzdERPTUpJVCo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFs
dWUpKTsKIH0KIAordGVtcGxhdGU8PiBpbmxpbmUgSlNUZXN0RE9NSklUKiBCaW5kaW5nQ2FsbGVy
PEpTVGVzdERPTUpJVD46OmNhc3RGb3JPcGVyYXRpb24oRXhlY1N0YXRlJiBzdGF0ZSkKK3sKKyAg
ICByZXR1cm4ganNEeW5hbWljRG93bmNhc3Q8SlNUZXN0RE9NSklUKj4oc3RhdGUudGhpc1ZhbHVl
KCkpOworfQorCiBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0RE9NSklUQW55QXR0ckdldHRl
cihFeGVjU3RhdGUmLCBKU1Rlc3RET01KSVQmLCBUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKTsKIAog
RW5jb2RlZEpTVmFsdWUganNUZXN0RE9NSklUQW55QXR0cihFeGVjU3RhdGUqIHN0YXRlLCBFbmNv
ZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKQEAgLTIwMiw3ICsyMjIsNyBAQCBz
dGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0RE9NSklUQW55QXR0ckdldHRlcihFeGVjU3RhdGUm
IHN0YXRlLCBKU1Rlc3RET01KSVQmCiB9CiAKIFRlc3RET01KSVRBbnlBdHRyRE9NSklUOjpUZXN0
RE9NSklUQW55QXR0ckRPTUpJVCgpCi0gICAgOiBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVyKGpz
VGVzdERPTUpJVEFueUF0dHIsIG51bGxwdHIsIEpTVGVzdERPTUpJVDo6aW5mbygpLCBKU0M6OlNw
ZWNIZWFwVG9wKQorICAgIDogSlNDOjpET01KSVQ6OkdldHRlclNldHRlcihqc1Rlc3RET01KSVRB
bnlBdHRyLCBudWxscHRyLCBKU1Rlc3RET01KSVQ6OmluZm8oKSwgRE9NSklUOjpJRExSZXN1bHRU
eXBlRmlsdGVyPElETEFueT4pCiB7CiB9CiAKQEAgLTIyOSw3ICsyNDksNyBAQCBzdGF0aWMgaW5s
aW5lIEpTVmFsdWUganNUZXN0RE9NSklUQm9vbGVhbkF0dHJHZXR0ZXIoRXhlY1N0YXRlJiBzdGF0
ZSwgSlNUZXN0RE9NSgogfQogCiBUZXN0RE9NSklUQm9vbGVhbkF0dHJET01KSVQ6OlRlc3RET01K
SVRCb29sZWFuQXR0ckRPTUpJVCgpCi0gICAgOiBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVyKGpz
VGVzdERPTUpJVEJvb2xlYW5BdHRyLCBudWxscHRyLCBKU1Rlc3RET01KSVQ6OmluZm8oKSwgSlND
OjpTcGVjQm9vbGVhbikKKyAgICA6IEpTQzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIoanNUZXN0RE9N
SklUQm9vbGVhbkF0dHIsIG51bGxwdHIsIEpTVGVzdERPTUpJVDo6aW5mbygpLCBET01KSVQ6OklE
TFJlc3VsdFR5cGVGaWx0ZXI8SURMQm9vbGVhbj4pCiB7CiB9CiAKQEAgLTI1Niw3ICsyNzYsNyBA
QCBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0RE9NSklUQnl0ZUF0dHJHZXR0ZXIoRXhlY1N0
YXRlJiBzdGF0ZSwgSlNUZXN0RE9NSklUJgogfQogCiBUZXN0RE9NSklUQnl0ZUF0dHJET01KSVQ6
OlRlc3RET01KSVRCeXRlQXR0ckRPTUpJVCgpCi0gICAgOiBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0
dGVyKGpzVGVzdERPTUpJVEJ5dGVBdHRyLCBudWxscHRyLCBKU1Rlc3RET01KSVQ6OmluZm8oKSwg
SlNDOjpTcGVjSW50MzJPbmx5KQorICAgIDogSlNDOjpET01KSVQ6OkdldHRlclNldHRlcihqc1Rl
c3RET01KSVRCeXRlQXR0ciwgbnVsbHB0ciwgSlNUZXN0RE9NSklUOjppbmZvKCksIERPTUpJVDo6
SURMUmVzdWx0VHlwZUZpbHRlcjxJRExCeXRlPikKIHsKIH0KIApAQCAtMjgzLDcgKzMwMyw3IEBA
IHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RET01KSVRPY3RldEF0dHJHZXR0ZXIoRXhlY1N0
YXRlJiBzdGF0ZSwgSlNUZXN0RE9NSklUCiB9CiAKIFRlc3RET01KSVRPY3RldEF0dHJET01KSVQ6
OlRlc3RET01KSVRPY3RldEF0dHJET01KSVQoKQotICAgIDogSlNDOjpET01KSVQ6OkdldHRlclNl
dHRlcihqc1Rlc3RET01KSVRPY3RldEF0dHIsIG51bGxwdHIsIEpTVGVzdERPTUpJVDo6aW5mbygp
LCBKU0M6OlNwZWNJbnQzMk9ubHkpCisgICAgOiBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVyKGpz
VGVzdERPTUpJVE9jdGV0QXR0ciwgbnVsbHB0ciwgSlNUZXN0RE9NSklUOjppbmZvKCksIERPTUpJ
VDo6SURMUmVzdWx0VHlwZUZpbHRlcjxJRExPY3RldD4pCiB7CiB9CiAKQEAgLTMxMCw3ICszMzAs
NyBAQCBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0RE9NSklUU2hvcnRBdHRyR2V0dGVyKEV4
ZWNTdGF0ZSYgc3RhdGUsIEpTVGVzdERPTUpJVAogfQogCiBUZXN0RE9NSklUU2hvcnRBdHRyRE9N
SklUOjpUZXN0RE9NSklUU2hvcnRBdHRyRE9NSklUKCkKLSAgICA6IEpTQzo6RE9NSklUOjpHZXR0
ZXJTZXR0ZXIoanNUZXN0RE9NSklUU2hvcnRBdHRyLCBudWxscHRyLCBKU1Rlc3RET01KSVQ6Omlu
Zm8oKSwgSlNDOjpTcGVjSW50MzJPbmx5KQorICAgIDogSlNDOjpET01KSVQ6OkdldHRlclNldHRl
cihqc1Rlc3RET01KSVRTaG9ydEF0dHIsIG51bGxwdHIsIEpTVGVzdERPTUpJVDo6aW5mbygpLCBE
T01KSVQ6OklETFJlc3VsdFR5cGVGaWx0ZXI8SURMU2hvcnQ+KQogewogfQogCkBAIC0zMzcsNyAr
MzU3LDcgQEAgc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdERPTUpJVFVuc2lnbmVkU2hvcnRB
dHRyR2V0dGVyKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVGUKIH0KIAogVGVzdERPTUpJVFVuc2lnbmVk
U2hvcnRBdHRyRE9NSklUOjpUZXN0RE9NSklUVW5zaWduZWRTaG9ydEF0dHJET01KSVQoKQotICAg
IDogSlNDOjpET01KSVQ6OkdldHRlclNldHRlcihqc1Rlc3RET01KSVRVbnNpZ25lZFNob3J0QXR0
ciwgbnVsbHB0ciwgSlNUZXN0RE9NSklUOjppbmZvKCksIEpTQzo6U3BlY0ludDMyT25seSkKKyAg
ICA6IEpTQzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIoanNUZXN0RE9NSklUVW5zaWduZWRTaG9ydEF0
dHIsIG51bGxwdHIsIEpTVGVzdERPTUpJVDo6aW5mbygpLCBET01KSVQ6OklETFJlc3VsdFR5cGVG
aWx0ZXI8SURMVW5zaWduZWRTaG9ydD4pCiB7CiB9CiAKQEAgLTM2NCw3ICszODQsNyBAQCBzdGF0
aWMgaW5saW5lIEpTVmFsdWUganNUZXN0RE9NSklUTG9uZ0F0dHJHZXR0ZXIoRXhlY1N0YXRlJiBz
dGF0ZSwgSlNUZXN0RE9NSklUJgogfQogCiBUZXN0RE9NSklUTG9uZ0F0dHJET01KSVQ6OlRlc3RE
T01KSVRMb25nQXR0ckRPTUpJVCgpCi0gICAgOiBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVyKGpz
VGVzdERPTUpJVExvbmdBdHRyLCBudWxscHRyLCBKU1Rlc3RET01KSVQ6OmluZm8oKSwgSlNDOjpT
cGVjSW50MzJPbmx5KQorICAgIDogSlNDOjpET01KSVQ6OkdldHRlclNldHRlcihqc1Rlc3RET01K
SVRMb25nQXR0ciwgbnVsbHB0ciwgSlNUZXN0RE9NSklUOjppbmZvKCksIERPTUpJVDo6SURMUmVz
dWx0VHlwZUZpbHRlcjxJRExMb25nPikKIHsKIH0KIApAQCAtMzkxLDcgKzQxMSw3IEBAIHN0YXRp
YyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RET01KSVRVbnNpZ25lZExvbmdBdHRyR2V0dGVyKEV4ZWNT
dGF0ZSYgc3RhdGUsIEpTVGVzCiB9CiAKIFRlc3RET01KSVRVbnNpZ25lZExvbmdBdHRyRE9NSklU
OjpUZXN0RE9NSklUVW5zaWduZWRMb25nQXR0ckRPTUpJVCgpCi0gICAgOiBKU0M6OkRPTUpJVDo6
R2V0dGVyU2V0dGVyKGpzVGVzdERPTUpJVFVuc2lnbmVkTG9uZ0F0dHIsIG51bGxwdHIsIEpTVGVz
dERPTUpJVDo6aW5mbygpLCBKU0M6OlNwZWNCeXRlY29kZU51bWJlcikKKyAgICA6IEpTQzo6RE9N
SklUOjpHZXR0ZXJTZXR0ZXIoanNUZXN0RE9NSklUVW5zaWduZWRMb25nQXR0ciwgbnVsbHB0ciwg
SlNUZXN0RE9NSklUOjppbmZvKCksIERPTUpJVDo6SURMUmVzdWx0VHlwZUZpbHRlcjxJRExVbnNp
Z25lZExvbmc+KQogewogfQogCkBAIC00MTgsNyArNDM4LDcgQEAgc3RhdGljIGlubGluZSBKU1Zh
bHVlIGpzVGVzdERPTUpJVExvbmdMb25nQXR0ckdldHRlcihFeGVjU3RhdGUmIHN0YXRlLCBKU1Rl
c3RET00KIH0KIAogVGVzdERPTUpJVExvbmdMb25nQXR0ckRPTUpJVDo6VGVzdERPTUpJVExvbmdM
b25nQXR0ckRPTUpJVCgpCi0gICAgOiBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVyKGpzVGVzdERP
TUpJVExvbmdMb25nQXR0ciwgbnVsbHB0ciwgSlNUZXN0RE9NSklUOjppbmZvKCksIEpTQzo6U3Bl
Y0J5dGVjb2RlTnVtYmVyKQorICAgIDogSlNDOjpET01KSVQ6OkdldHRlclNldHRlcihqc1Rlc3RE
T01KSVRMb25nTG9uZ0F0dHIsIG51bGxwdHIsIEpTVGVzdERPTUpJVDo6aW5mbygpLCBET01KSVQ6
OklETFJlc3VsdFR5cGVGaWx0ZXI8SURMTG9uZ0xvbmc+KQogewogfQogCkBAIC00NDUsNyArNDY1
LDcgQEAgc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdERPTUpJVFVuc2lnbmVkTG9uZ0xvbmdB
dHRyR2V0dGVyKEV4ZWNTdGF0ZSYgc3RhdGUsIEoKIH0KIAogVGVzdERPTUpJVFVuc2lnbmVkTG9u
Z0xvbmdBdHRyRE9NSklUOjpUZXN0RE9NSklUVW5zaWduZWRMb25nTG9uZ0F0dHJET01KSVQoKQot
ICAgIDogSlNDOjpET01KSVQ6OkdldHRlclNldHRlcihqc1Rlc3RET01KSVRVbnNpZ25lZExvbmdM
b25nQXR0ciwgbnVsbHB0ciwgSlNUZXN0RE9NSklUOjppbmZvKCksIEpTQzo6U3BlY0J5dGVjb2Rl
TnVtYmVyKQorICAgIDogSlNDOjpET01KSVQ6OkdldHRlclNldHRlcihqc1Rlc3RET01KSVRVbnNp
Z25lZExvbmdMb25nQXR0ciwgbnVsbHB0ciwgSlNUZXN0RE9NSklUOjppbmZvKCksIERPTUpJVDo6
SURMUmVzdWx0VHlwZUZpbHRlcjxJRExVbnNpZ25lZExvbmdMb25nPikKIHsKIH0KIApAQCAtNDcy
LDcgKzQ5Miw3IEBAIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RET01KSVRGbG9hdEF0dHJH
ZXR0ZXIoRXhlY1N0YXRlJiBzdGF0ZSwgSlNUZXN0RE9NSklUCiB9CiAKIFRlc3RET01KSVRGbG9h
dEF0dHJET01KSVQ6OlRlc3RET01KSVRGbG9hdEF0dHJET01KSVQoKQotICAgIDogSlNDOjpET01K
SVQ6OkdldHRlclNldHRlcihqc1Rlc3RET01KSVRGbG9hdEF0dHIsIG51bGxwdHIsIEpTVGVzdERP
TUpJVDo6aW5mbygpLCBKU0M6OlNwZWNCeXRlY29kZU51bWJlcikKKyAgICA6IEpTQzo6RE9NSklU
OjpHZXR0ZXJTZXR0ZXIoanNUZXN0RE9NSklURmxvYXRBdHRyLCBudWxscHRyLCBKU1Rlc3RET01K
SVQ6OmluZm8oKSwgRE9NSklUOjpJRExSZXN1bHRUeXBlRmlsdGVyPElETEZsb2F0PikKIHsKIH0K
IApAQCAtNDk5LDcgKzUxOSw3IEBAIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RET01KSVRV
bnJlc3RyaWN0ZWRGbG9hdEF0dHJHZXR0ZXIoRXhlY1N0YXRlJiBzdGF0ZSwKIH0KIAogVGVzdERP
TUpJVFVucmVzdHJpY3RlZEZsb2F0QXR0ckRPTUpJVDo6VGVzdERPTUpJVFVucmVzdHJpY3RlZEZs
b2F0QXR0ckRPTUpJVCgpCi0gICAgOiBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVyKGpzVGVzdERP
TUpJVFVucmVzdHJpY3RlZEZsb2F0QXR0ciwgbnVsbHB0ciwgSlNUZXN0RE9NSklUOjppbmZvKCks
IEpTQzo6U3BlY0J5dGVjb2RlTnVtYmVyKQorICAgIDogSlNDOjpET01KSVQ6OkdldHRlclNldHRl
cihqc1Rlc3RET01KSVRVbnJlc3RyaWN0ZWRGbG9hdEF0dHIsIG51bGxwdHIsIEpTVGVzdERPTUpJ
VDo6aW5mbygpLCBET01KSVQ6OklETFJlc3VsdFR5cGVGaWx0ZXI8SURMVW5yZXN0cmljdGVkRmxv
YXQ+KQogewogfQogCkBAIC01MjYsNyArNTQ2LDcgQEAgc3RhdGljIGlubGluZSBKU1ZhbHVlIGpz
VGVzdERPTUpJVERvdWJsZUF0dHJHZXR0ZXIoRXhlY1N0YXRlJiBzdGF0ZSwgSlNUZXN0RE9NSkkK
IH0KIAogVGVzdERPTUpJVERvdWJsZUF0dHJET01KSVQ6OlRlc3RET01KSVREb3VibGVBdHRyRE9N
SklUKCkKLSAgICA6IEpTQzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIoanNUZXN0RE9NSklURG91Ymxl
QXR0ciwgbnVsbHB0ciwgSlNUZXN0RE9NSklUOjppbmZvKCksIEpTQzo6U3BlY0J5dGVjb2RlTnVt
YmVyKQorICAgIDogSlNDOjpET01KSVQ6OkdldHRlclNldHRlcihqc1Rlc3RET01KSVREb3VibGVB
dHRyLCBudWxscHRyLCBKU1Rlc3RET01KSVQ6OmluZm8oKSwgRE9NSklUOjpJRExSZXN1bHRUeXBl
RmlsdGVyPElETERvdWJsZT4pCiB7CiB9CiAKQEAgLTU1Myw3ICs1NzMsNyBAQCBzdGF0aWMgaW5s
aW5lIEpTVmFsdWUganNUZXN0RE9NSklUVW5yZXN0cmljdGVkRG91YmxlQXR0ckdldHRlcihFeGVj
U3RhdGUmIHN0YXRlLAogfQogCiBUZXN0RE9NSklUVW5yZXN0cmljdGVkRG91YmxlQXR0ckRPTUpJ
VDo6VGVzdERPTUpJVFVucmVzdHJpY3RlZERvdWJsZUF0dHJET01KSVQoKQotICAgIDogSlNDOjpE
T01KSVQ6OkdldHRlclNldHRlcihqc1Rlc3RET01KSVRVbnJlc3RyaWN0ZWREb3VibGVBdHRyLCBu
dWxscHRyLCBKU1Rlc3RET01KSVQ6OmluZm8oKSwgSlNDOjpTcGVjQnl0ZWNvZGVOdW1iZXIpCisg
ICAgOiBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVyKGpzVGVzdERPTUpJVFVucmVzdHJpY3RlZERv
dWJsZUF0dHIsIG51bGxwdHIsIEpTVGVzdERPTUpJVDo6aW5mbygpLCBET01KSVQ6OklETFJlc3Vs
dFR5cGVGaWx0ZXI8SURMVW5yZXN0cmljdGVkRG91YmxlPikKIHsKIH0KIApAQCAtNTgwLDcgKzYw
MCw3IEBAIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RET01KSVREb21TdHJpbmdBdHRyR2V0
dGVyKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVGVzdERPCiB9CiAKIFRlc3RET01KSVREb21TdHJpbmdB
dHRyRE9NSklUOjpUZXN0RE9NSklURG9tU3RyaW5nQXR0ckRPTUpJVCgpCi0gICAgOiBKU0M6OkRP
TUpJVDo6R2V0dGVyU2V0dGVyKGpzVGVzdERPTUpJVERvbVN0cmluZ0F0dHIsIG51bGxwdHIsIEpT
VGVzdERPTUpJVDo6aW5mbygpLCBKU0M6OlNwZWNTdHJpbmcpCisgICAgOiBKU0M6OkRPTUpJVDo6
R2V0dGVyU2V0dGVyKGpzVGVzdERPTUpJVERvbVN0cmluZ0F0dHIsIG51bGxwdHIsIEpTVGVzdERP
TUpJVDo6aW5mbygpLCBET01KSVQ6OklETFJlc3VsdFR5cGVGaWx0ZXI8SURMRE9NU3RyaW5nPikK
IHsKIH0KIApAQCAtNjA3LDcgKzYyNyw3IEBAIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RE
T01KSVRCeXRlU3RyaW5nQXR0ckdldHRlcihFeGVjU3RhdGUmIHN0YXRlLCBKU1Rlc3RECiB9CiAK
IFRlc3RET01KSVRCeXRlU3RyaW5nQXR0ckRPTUpJVDo6VGVzdERPTUpJVEJ5dGVTdHJpbmdBdHRy
RE9NSklUKCkKLSAgICA6IEpTQzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIoanNUZXN0RE9NSklUQnl0
ZVN0cmluZ0F0dHIsIG51bGxwdHIsIEpTVGVzdERPTUpJVDo6aW5mbygpLCBKU0M6OlNwZWNTdHJp
bmcpCisgICAgOiBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVyKGpzVGVzdERPTUpJVEJ5dGVTdHJp
bmdBdHRyLCBudWxscHRyLCBKU1Rlc3RET01KSVQ6OmluZm8oKSwgRE9NSklUOjpJRExSZXN1bHRU
eXBlRmlsdGVyPElETEJ5dGVTdHJpbmc+KQogewogfQogCkBAIC02MzQsNyArNjU0LDcgQEAgc3Rh
dGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdERPTUpJVFVzdlN0cmluZ0F0dHJHZXR0ZXIoRXhlY1N0
YXRlJiBzdGF0ZSwgSlNUZXN0RE8KIH0KIAogVGVzdERPTUpJVFVzdlN0cmluZ0F0dHJET01KSVQ6
OlRlc3RET01KSVRVc3ZTdHJpbmdBdHRyRE9NSklUKCkKLSAgICA6IEpTQzo6RE9NSklUOjpHZXR0
ZXJTZXR0ZXIoanNUZXN0RE9NSklUVXN2U3RyaW5nQXR0ciwgbnVsbHB0ciwgSlNUZXN0RE9NSklU
OjppbmZvKCksIEpTQzo6U3BlY1N0cmluZykKKyAgICA6IEpTQzo6RE9NSklUOjpHZXR0ZXJTZXR0
ZXIoanNUZXN0RE9NSklUVXN2U3RyaW5nQXR0ciwgbnVsbHB0ciwgSlNUZXN0RE9NSklUOjppbmZv
KCksIERPTUpJVDo6SURMUmVzdWx0VHlwZUZpbHRlcjxJRExVU1ZTdHJpbmc+KQogewogfQogCkBA
IC02NjEsNyArNjgxLDcgQEAgc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdERPTUpJVE5vZGVB
dHRyR2V0dGVyKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVGVzdERPTUpJVCYKIH0KIAogVGVzdERPTUpJ
VE5vZGVBdHRyRE9NSklUOjpUZXN0RE9NSklUTm9kZUF0dHJET01KSVQoKQotICAgIDogSlNDOjpE
T01KSVQ6OkdldHRlclNldHRlcihqc1Rlc3RET01KSVROb2RlQXR0ciwgbnVsbHB0ciwgSlNUZXN0
RE9NSklUOjppbmZvKCksIFNwZWNIZWFwVG9wKQorICAgIDogSlNDOjpET01KSVQ6OkdldHRlclNl
dHRlcihqc1Rlc3RET01KSVROb2RlQXR0ciwgbnVsbHB0ciwgSlNUZXN0RE9NSklUOjppbmZvKCks
IERPTUpJVDo6SURMUmVzdWx0VHlwZUZpbHRlcjxJRExJbnRlcmZhY2U8Tm9kZT4+KQogewogfQog
CkBAIC02ODgsNyArNzA4LDcgQEAgc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdERPTUpJVEJv
b2xlYW5OdWxsYWJsZUF0dHJHZXR0ZXIoRXhlY1N0YXRlJiBzdGF0ZSwgSlMKIH0KIAogVGVzdERP
TUpJVEJvb2xlYW5OdWxsYWJsZUF0dHJET01KSVQ6OlRlc3RET01KSVRCb29sZWFuTnVsbGFibGVB
dHRyRE9NSklUKCkKLSAgICA6IEpTQzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIoanNUZXN0RE9NSklU
Qm9vbGVhbk51bGxhYmxlQXR0ciwgbnVsbHB0ciwgSlNUZXN0RE9NSklUOjppbmZvKCksIChKU0M6
OlNwZWNCb29sZWFuIHwgSlNDOjpTcGVjT3RoZXIpKQorICAgIDogSlNDOjpET01KSVQ6OkdldHRl
clNldHRlcihqc1Rlc3RET01KSVRCb29sZWFuTnVsbGFibGVBdHRyLCBudWxscHRyLCBKU1Rlc3RE
T01KSVQ6OmluZm8oKSwgRE9NSklUOjpJRExSZXN1bHRUeXBlRmlsdGVyPElETE51bGxhYmxlPElE
TEJvb2xlYW4+PikKIHsKIH0KIApAQCAtNzE1LDcgKzczNSw3IEBAIHN0YXRpYyBpbmxpbmUgSlNW
YWx1ZSBqc1Rlc3RET01KSVRCeXRlTnVsbGFibGVBdHRyR2V0dGVyKEV4ZWNTdGF0ZSYgc3RhdGUs
IEpTVGVzCiB9CiAKIFRlc3RET01KSVRCeXRlTnVsbGFibGVBdHRyRE9NSklUOjpUZXN0RE9NSklU
Qnl0ZU51bGxhYmxlQXR0ckRPTUpJVCgpCi0gICAgOiBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVy
KGpzVGVzdERPTUpJVEJ5dGVOdWxsYWJsZUF0dHIsIG51bGxwdHIsIEpTVGVzdERPTUpJVDo6aW5m
bygpLCAoSlNDOjpTcGVjSW50MzJPbmx5IHwgSlNDOjpTcGVjT3RoZXIpKQorICAgIDogSlNDOjpE
T01KSVQ6OkdldHRlclNldHRlcihqc1Rlc3RET01KSVRCeXRlTnVsbGFibGVBdHRyLCBudWxscHRy
LCBKU1Rlc3RET01KSVQ6OmluZm8oKSwgRE9NSklUOjpJRExSZXN1bHRUeXBlRmlsdGVyPElETE51
bGxhYmxlPElETEJ5dGU+PikKIHsKIH0KIApAQCAtNzQyLDcgKzc2Miw3IEBAIHN0YXRpYyBpbmxp
bmUgSlNWYWx1ZSBqc1Rlc3RET01KSVRPY3RldE51bGxhYmxlQXR0ckdldHRlcihFeGVjU3RhdGUm
IHN0YXRlLCBKU1RlCiB9CiAKIFRlc3RET01KSVRPY3RldE51bGxhYmxlQXR0ckRPTUpJVDo6VGVz
dERPTUpJVE9jdGV0TnVsbGFibGVBdHRyRE9NSklUKCkKLSAgICA6IEpTQzo6RE9NSklUOjpHZXR0
ZXJTZXR0ZXIoanNUZXN0RE9NSklUT2N0ZXROdWxsYWJsZUF0dHIsIG51bGxwdHIsIEpTVGVzdERP
TUpJVDo6aW5mbygpLCAoSlNDOjpTcGVjSW50MzJPbmx5IHwgSlNDOjpTcGVjT3RoZXIpKQorICAg
IDogSlNDOjpET01KSVQ6OkdldHRlclNldHRlcihqc1Rlc3RET01KSVRPY3RldE51bGxhYmxlQXR0
ciwgbnVsbHB0ciwgSlNUZXN0RE9NSklUOjppbmZvKCksIERPTUpJVDo6SURMUmVzdWx0VHlwZUZp
bHRlcjxJRExOdWxsYWJsZTxJRExPY3RldD4+KQogewogfQogCkBAIC03NjksNyArNzg5LDcgQEAg
c3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdERPTUpJVFNob3J0TnVsbGFibGVBdHRyR2V0dGVy
KEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVGUKIH0KIAogVGVzdERPTUpJVFNob3J0TnVsbGFibGVBdHRy
RE9NSklUOjpUZXN0RE9NSklUU2hvcnROdWxsYWJsZUF0dHJET01KSVQoKQotICAgIDogSlNDOjpE
T01KSVQ6OkdldHRlclNldHRlcihqc1Rlc3RET01KSVRTaG9ydE51bGxhYmxlQXR0ciwgbnVsbHB0
ciwgSlNUZXN0RE9NSklUOjppbmZvKCksIChKU0M6OlNwZWNJbnQzMk9ubHkgfCBKU0M6OlNwZWNP
dGhlcikpCisgICAgOiBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVyKGpzVGVzdERPTUpJVFNob3J0
TnVsbGFibGVBdHRyLCBudWxscHRyLCBKU1Rlc3RET01KSVQ6OmluZm8oKSwgRE9NSklUOjpJRExS
ZXN1bHRUeXBlRmlsdGVyPElETE51bGxhYmxlPElETFNob3J0Pj4pCiB7CiB9CiAKQEAgLTc5Niw3
ICs4MTYsNyBAQCBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0RE9NSklUVW5zaWduZWRTaG9y
dE51bGxhYmxlQXR0ckdldHRlcihFeGVjU3RhdGUmIHN0YQogfQogCiBUZXN0RE9NSklUVW5zaWdu
ZWRTaG9ydE51bGxhYmxlQXR0ckRPTUpJVDo6VGVzdERPTUpJVFVuc2lnbmVkU2hvcnROdWxsYWJs
ZUF0dHJET01KSVQoKQotICAgIDogSlNDOjpET01KSVQ6OkdldHRlclNldHRlcihqc1Rlc3RET01K
SVRVbnNpZ25lZFNob3J0TnVsbGFibGVBdHRyLCBudWxscHRyLCBKU1Rlc3RET01KSVQ6OmluZm8o
KSwgKEpTQzo6U3BlY0ludDMyT25seSB8IEpTQzo6U3BlY090aGVyKSkKKyAgICA6IEpTQzo6RE9N
SklUOjpHZXR0ZXJTZXR0ZXIoanNUZXN0RE9NSklUVW5zaWduZWRTaG9ydE51bGxhYmxlQXR0ciwg
bnVsbHB0ciwgSlNUZXN0RE9NSklUOjppbmZvKCksIERPTUpJVDo6SURMUmVzdWx0VHlwZUZpbHRl
cjxJRExOdWxsYWJsZTxJRExVbnNpZ25lZFNob3J0Pj4pCiB7CiB9CiAKQEAgLTgyMyw3ICs4NDMs
NyBAQCBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0RE9NSklUTG9uZ051bGxhYmxlQXR0ckdl
dHRlcihFeGVjU3RhdGUmIHN0YXRlLCBKU1RlcwogfQogCiBUZXN0RE9NSklUTG9uZ051bGxhYmxl
QXR0ckRPTUpJVDo6VGVzdERPTUpJVExvbmdOdWxsYWJsZUF0dHJET01KSVQoKQotICAgIDogSlND
OjpET01KSVQ6OkdldHRlclNldHRlcihqc1Rlc3RET01KSVRMb25nTnVsbGFibGVBdHRyLCBudWxs
cHRyLCBKU1Rlc3RET01KSVQ6OmluZm8oKSwgKEpTQzo6U3BlY0ludDMyT25seSB8IEpTQzo6U3Bl
Y090aGVyKSkKKyAgICA6IEpTQzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIoanNUZXN0RE9NSklUTG9u
Z051bGxhYmxlQXR0ciwgbnVsbHB0ciwgSlNUZXN0RE9NSklUOjppbmZvKCksIERPTUpJVDo6SURM
UmVzdWx0VHlwZUZpbHRlcjxJRExOdWxsYWJsZTxJRExMb25nPj4pCiB7CiB9CiAKQEAgLTg1MCw3
ICs4NzAsNyBAQCBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0RE9NSklUVW5zaWduZWRMb25n
TnVsbGFibGVBdHRyR2V0dGVyKEV4ZWNTdGF0ZSYgc3RhdAogfQogCiBUZXN0RE9NSklUVW5zaWdu
ZWRMb25nTnVsbGFibGVBdHRyRE9NSklUOjpUZXN0RE9NSklUVW5zaWduZWRMb25nTnVsbGFibGVB
dHRyRE9NSklUKCkKLSAgICA6IEpTQzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIoanNUZXN0RE9NSklU
VW5zaWduZWRMb25nTnVsbGFibGVBdHRyLCBudWxscHRyLCBKU1Rlc3RET01KSVQ6OmluZm8oKSwg
KEpTQzo6U3BlY0J5dGVjb2RlTnVtYmVyIHwgSlNDOjpTcGVjT3RoZXIpKQorICAgIDogSlNDOjpE
T01KSVQ6OkdldHRlclNldHRlcihqc1Rlc3RET01KSVRVbnNpZ25lZExvbmdOdWxsYWJsZUF0dHIs
IG51bGxwdHIsIEpTVGVzdERPTUpJVDo6aW5mbygpLCBET01KSVQ6OklETFJlc3VsdFR5cGVGaWx0
ZXI8SURMTnVsbGFibGU8SURMVW5zaWduZWRMb25nPj4pCiB7CiB9CiAKQEAgLTg3Nyw3ICs4OTcs
NyBAQCBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0RE9NSklUTG9uZ0xvbmdOdWxsYWJsZUF0
dHJHZXR0ZXIoRXhlY1N0YXRlJiBzdGF0ZSwgSgogfQogCiBUZXN0RE9NSklUTG9uZ0xvbmdOdWxs
YWJsZUF0dHJET01KSVQ6OlRlc3RET01KSVRMb25nTG9uZ051bGxhYmxlQXR0ckRPTUpJVCgpCi0g
ICAgOiBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVyKGpzVGVzdERPTUpJVExvbmdMb25nTnVsbGFi
bGVBdHRyLCBudWxscHRyLCBKU1Rlc3RET01KSVQ6OmluZm8oKSwgKEpTQzo6U3BlY0J5dGVjb2Rl
TnVtYmVyIHwgSlNDOjpTcGVjT3RoZXIpKQorICAgIDogSlNDOjpET01KSVQ6OkdldHRlclNldHRl
cihqc1Rlc3RET01KSVRMb25nTG9uZ051bGxhYmxlQXR0ciwgbnVsbHB0ciwgSlNUZXN0RE9NSklU
OjppbmZvKCksIERPTUpJVDo6SURMUmVzdWx0VHlwZUZpbHRlcjxJRExOdWxsYWJsZTxJRExMb25n
TG9uZz4+KQogewogfQogCkBAIC05MDQsNyArOTI0LDcgQEAgc3RhdGljIGlubGluZSBKU1ZhbHVl
IGpzVGVzdERPTUpJVFVuc2lnbmVkTG9uZ0xvbmdOdWxsYWJsZUF0dHJHZXR0ZXIoRXhlY1N0YXRl
JgogfQogCiBUZXN0RE9NSklUVW5zaWduZWRMb25nTG9uZ051bGxhYmxlQXR0ckRPTUpJVDo6VGVz
dERPTUpJVFVuc2lnbmVkTG9uZ0xvbmdOdWxsYWJsZUF0dHJET01KSVQoKQotICAgIDogSlNDOjpE
T01KSVQ6OkdldHRlclNldHRlcihqc1Rlc3RET01KSVRVbnNpZ25lZExvbmdMb25nTnVsbGFibGVB
dHRyLCBudWxscHRyLCBKU1Rlc3RET01KSVQ6OmluZm8oKSwgKEpTQzo6U3BlY0J5dGVjb2RlTnVt
YmVyIHwgSlNDOjpTcGVjT3RoZXIpKQorICAgIDogSlNDOjpET01KSVQ6OkdldHRlclNldHRlcihq
c1Rlc3RET01KSVRVbnNpZ25lZExvbmdMb25nTnVsbGFibGVBdHRyLCBudWxscHRyLCBKU1Rlc3RE
T01KSVQ6OmluZm8oKSwgRE9NSklUOjpJRExSZXN1bHRUeXBlRmlsdGVyPElETE51bGxhYmxlPElE
TFVuc2lnbmVkTG9uZ0xvbmc+PikKIHsKIH0KIApAQCAtOTMxLDcgKzk1MSw3IEBAIHN0YXRpYyBp
bmxpbmUgSlNWYWx1ZSBqc1Rlc3RET01KSVRGbG9hdE51bGxhYmxlQXR0ckdldHRlcihFeGVjU3Rh
dGUmIHN0YXRlLCBKU1RlCiB9CiAKIFRlc3RET01KSVRGbG9hdE51bGxhYmxlQXR0ckRPTUpJVDo6
VGVzdERPTUpJVEZsb2F0TnVsbGFibGVBdHRyRE9NSklUKCkKLSAgICA6IEpTQzo6RE9NSklUOjpH
ZXR0ZXJTZXR0ZXIoanNUZXN0RE9NSklURmxvYXROdWxsYWJsZUF0dHIsIG51bGxwdHIsIEpTVGVz
dERPTUpJVDo6aW5mbygpLCAoSlNDOjpTcGVjQnl0ZWNvZGVOdW1iZXIgfCBKU0M6OlNwZWNPdGhl
cikpCisgICAgOiBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVyKGpzVGVzdERPTUpJVEZsb2F0TnVs
bGFibGVBdHRyLCBudWxscHRyLCBKU1Rlc3RET01KSVQ6OmluZm8oKSwgRE9NSklUOjpJRExSZXN1
bHRUeXBlRmlsdGVyPElETE51bGxhYmxlPElETEZsb2F0Pj4pCiB7CiB9CiAKQEAgLTk1OCw3ICs5
NzgsNyBAQCBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0RE9NSklUVW5yZXN0cmljdGVkRmxv
YXROdWxsYWJsZUF0dHJHZXR0ZXIoRXhlY1N0YXRlJgogfQogCiBUZXN0RE9NSklUVW5yZXN0cmlj
dGVkRmxvYXROdWxsYWJsZUF0dHJET01KSVQ6OlRlc3RET01KSVRVbnJlc3RyaWN0ZWRGbG9hdE51
bGxhYmxlQXR0ckRPTUpJVCgpCi0gICAgOiBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVyKGpzVGVz
dERPTUpJVFVucmVzdHJpY3RlZEZsb2F0TnVsbGFibGVBdHRyLCBudWxscHRyLCBKU1Rlc3RET01K
SVQ6OmluZm8oKSwgKEpTQzo6U3BlY0J5dGVjb2RlTnVtYmVyIHwgSlNDOjpTcGVjT3RoZXIpKQor
ICAgIDogSlNDOjpET01KSVQ6OkdldHRlclNldHRlcihqc1Rlc3RET01KSVRVbnJlc3RyaWN0ZWRG
bG9hdE51bGxhYmxlQXR0ciwgbnVsbHB0ciwgSlNUZXN0RE9NSklUOjppbmZvKCksIERPTUpJVDo6
SURMUmVzdWx0VHlwZUZpbHRlcjxJRExOdWxsYWJsZTxJRExVbnJlc3RyaWN0ZWRGbG9hdD4+KQog
ewogfQogCkBAIC05ODUsNyArMTAwNSw3IEBAIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RE
T01KSVREb3VibGVOdWxsYWJsZUF0dHJHZXR0ZXIoRXhlY1N0YXRlJiBzdGF0ZSwgSlNUCiB9CiAK
IFRlc3RET01KSVREb3VibGVOdWxsYWJsZUF0dHJET01KSVQ6OlRlc3RET01KSVREb3VibGVOdWxs
YWJsZUF0dHJET01KSVQoKQotICAgIDogSlNDOjpET01KSVQ6OkdldHRlclNldHRlcihqc1Rlc3RE
T01KSVREb3VibGVOdWxsYWJsZUF0dHIsIG51bGxwdHIsIEpTVGVzdERPTUpJVDo6aW5mbygpLCAo
SlNDOjpTcGVjQnl0ZWNvZGVOdW1iZXIgfCBKU0M6OlNwZWNPdGhlcikpCisgICAgOiBKU0M6OkRP
TUpJVDo6R2V0dGVyU2V0dGVyKGpzVGVzdERPTUpJVERvdWJsZU51bGxhYmxlQXR0ciwgbnVsbHB0
ciwgSlNUZXN0RE9NSklUOjppbmZvKCksIERPTUpJVDo6SURMUmVzdWx0VHlwZUZpbHRlcjxJRExO
dWxsYWJsZTxJRExEb3VibGU+PikKIHsKIH0KIApAQCAtMTAxMiw3ICsxMDMyLDcgQEAgc3RhdGlj
IGlubGluZSBKU1ZhbHVlIGpzVGVzdERPTUpJVFVucmVzdHJpY3RlZERvdWJsZU51bGxhYmxlQXR0
ckdldHRlcihFeGVjU3RhdGUKIH0KIAogVGVzdERPTUpJVFVucmVzdHJpY3RlZERvdWJsZU51bGxh
YmxlQXR0ckRPTUpJVDo6VGVzdERPTUpJVFVucmVzdHJpY3RlZERvdWJsZU51bGxhYmxlQXR0ckRP
TUpJVCgpCi0gICAgOiBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVyKGpzVGVzdERPTUpJVFVucmVz
dHJpY3RlZERvdWJsZU51bGxhYmxlQXR0ciwgbnVsbHB0ciwgSlNUZXN0RE9NSklUOjppbmZvKCks
IChKU0M6OlNwZWNCeXRlY29kZU51bWJlciB8IEpTQzo6U3BlY090aGVyKSkKKyAgICA6IEpTQzo6
RE9NSklUOjpHZXR0ZXJTZXR0ZXIoanNUZXN0RE9NSklUVW5yZXN0cmljdGVkRG91YmxlTnVsbGFi
bGVBdHRyLCBudWxscHRyLCBKU1Rlc3RET01KSVQ6OmluZm8oKSwgRE9NSklUOjpJRExSZXN1bHRU
eXBlRmlsdGVyPElETE51bGxhYmxlPElETFVucmVzdHJpY3RlZERvdWJsZT4+KQogewogfQogCkBA
IC0xMDM5LDcgKzEwNTksNyBAQCBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0RE9NSklURG9t
U3RyaW5nTnVsbGFibGVBdHRyR2V0dGVyKEV4ZWNTdGF0ZSYgc3RhdGUsCiB9CiAKIFRlc3RET01K
SVREb21TdHJpbmdOdWxsYWJsZUF0dHJET01KSVQ6OlRlc3RET01KSVREb21TdHJpbmdOdWxsYWJs
ZUF0dHJET01KSVQoKQotICAgIDogSlNDOjpET01KSVQ6OkdldHRlclNldHRlcihqc1Rlc3RET01K
SVREb21TdHJpbmdOdWxsYWJsZUF0dHIsIG51bGxwdHIsIEpTVGVzdERPTUpJVDo6aW5mbygpLCAo
SlNDOjpTcGVjU3RyaW5nIHwgSlNDOjpTcGVjT3RoZXIpKQorICAgIDogSlNDOjpET01KSVQ6Okdl
dHRlclNldHRlcihqc1Rlc3RET01KSVREb21TdHJpbmdOdWxsYWJsZUF0dHIsIG51bGxwdHIsIEpT
VGVzdERPTUpJVDo6aW5mbygpLCBET01KSVQ6OklETFJlc3VsdFR5cGVGaWx0ZXI8SURMTnVsbGFi
bGU8SURMRE9NU3RyaW5nPj4pCiB7CiB9CiAKQEAgLTEwNjYsNyArMTA4Niw3IEBAIHN0YXRpYyBp
bmxpbmUgSlNWYWx1ZSBqc1Rlc3RET01KSVRCeXRlU3RyaW5nTnVsbGFibGVBdHRyR2V0dGVyKEV4
ZWNTdGF0ZSYgc3RhdGUsCiB9CiAKIFRlc3RET01KSVRCeXRlU3RyaW5nTnVsbGFibGVBdHRyRE9N
SklUOjpUZXN0RE9NSklUQnl0ZVN0cmluZ051bGxhYmxlQXR0ckRPTUpJVCgpCi0gICAgOiBKU0M6
OkRPTUpJVDo6R2V0dGVyU2V0dGVyKGpzVGVzdERPTUpJVEJ5dGVTdHJpbmdOdWxsYWJsZUF0dHIs
IG51bGxwdHIsIEpTVGVzdERPTUpJVDo6aW5mbygpLCAoSlNDOjpTcGVjU3RyaW5nIHwgSlNDOjpT
cGVjT3RoZXIpKQorICAgIDogSlNDOjpET01KSVQ6OkdldHRlclNldHRlcihqc1Rlc3RET01KSVRC
eXRlU3RyaW5nTnVsbGFibGVBdHRyLCBudWxscHRyLCBKU1Rlc3RET01KSVQ6OmluZm8oKSwgRE9N
SklUOjpJRExSZXN1bHRUeXBlRmlsdGVyPElETE51bGxhYmxlPElETEJ5dGVTdHJpbmc+PikKIHsK
IH0KIApAQCAtMTA5Myw3ICsxMTEzLDcgQEAgc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdERP
TUpJVFVzdlN0cmluZ051bGxhYmxlQXR0ckdldHRlcihFeGVjU3RhdGUmIHN0YXRlLAogfQogCiBU
ZXN0RE9NSklUVXN2U3RyaW5nTnVsbGFibGVBdHRyRE9NSklUOjpUZXN0RE9NSklUVXN2U3RyaW5n
TnVsbGFibGVBdHRyRE9NSklUKCkKLSAgICA6IEpTQzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIoanNU
ZXN0RE9NSklUVXN2U3RyaW5nTnVsbGFibGVBdHRyLCBudWxscHRyLCBKU1Rlc3RET01KSVQ6Omlu
Zm8oKSwgKEpTQzo6U3BlY1N0cmluZyB8IEpTQzo6U3BlY090aGVyKSkKKyAgICA6IEpTQzo6RE9N
SklUOjpHZXR0ZXJTZXR0ZXIoanNUZXN0RE9NSklUVXN2U3RyaW5nTnVsbGFibGVBdHRyLCBudWxs
cHRyLCBKU1Rlc3RET01KSVQ6OmluZm8oKSwgRE9NSklUOjpJRExSZXN1bHRUeXBlRmlsdGVyPElE
TE51bGxhYmxlPElETFVTVlN0cmluZz4+KQogewogfQogCkBAIC0xMTIwLDcgKzExNDAsNyBAQCBz
dGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0RE9NSklUTm9kZU51bGxhYmxlQXR0ckdldHRlcihF
eGVjU3RhdGUmIHN0YXRlLCBKU1RlcwogfQogCiBUZXN0RE9NSklUTm9kZU51bGxhYmxlQXR0ckRP
TUpJVDo6VGVzdERPTUpJVE5vZGVOdWxsYWJsZUF0dHJET01KSVQoKQotICAgIDogSlNDOjpET01K
SVQ6OkdldHRlclNldHRlcihqc1Rlc3RET01KSVROb2RlTnVsbGFibGVBdHRyLCBudWxscHRyLCBK
U1Rlc3RET01KSVQ6OmluZm8oKSwgU3BlY0hlYXBUb3ApCisgICAgOiBKU0M6OkRPTUpJVDo6R2V0
dGVyU2V0dGVyKGpzVGVzdERPTUpJVE5vZGVOdWxsYWJsZUF0dHIsIG51bGxwdHIsIEpTVGVzdERP
TUpJVDo6aW5mbygpLCBET01KSVQ6OklETFJlc3VsdFR5cGVGaWx0ZXI8SURMTnVsbGFibGU8SURM
SW50ZXJmYWNlPE5vZGU+Pj4pCiB7CiB9CiAKQEAgLTExNTksNiArMTE3OSwzOSBAQCBKU1ZhbHVl
IEpTVGVzdERPTUpJVDo6Z2V0Q29uc3RydWN0b3IoVk0mIHZtLCBjb25zdCBKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0KQogICAgIHJldHVybiBnZXRET01Db25zdHJ1Y3RvcjxKU1Rlc3RET01K
SVRDb25zdHJ1Y3Rvcj4odm0sICpqc0Nhc3Q8Y29uc3QgSlNET01HbG9iYWxPYmplY3QqPihnbG9i
YWxPYmplY3QpKTsKIH0KIAorc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVz
dERPTUpJVFByb3RvdHlwZUZ1bmN0aW9uR2V0QXR0cmlidXRlQ2FsbGVyKEpTQzo6RXhlY1N0YXRl
KiwgSlNUZXN0RE9NSklUKiwgSlNDOjpUaHJvd1Njb3BlJik7CisKK0VuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwganNUZXN0RE9NSklUUHJvdG90eXBlRnVuY3Rpb25HZXRBdHRyaWJ1dGUoRXhl
Y1N0YXRlKiBzdGF0ZSkKK3sKKyAgICByZXR1cm4gQmluZGluZ0NhbGxlcjxKU1Rlc3RET01KSVQ+
OjpjYWxsT3BlcmF0aW9uPGpzVGVzdERPTUpJVFByb3RvdHlwZUZ1bmN0aW9uR2V0QXR0cmlidXRl
Q2FsbGVyPihzdGF0ZSwgImdldEF0dHJpYnV0ZSIpOworfQorCitzdGF0aWMgaW5saW5lIEpTQzo6
RW5jb2RlZEpTVmFsdWUganNUZXN0RE9NSklUUHJvdG90eXBlRnVuY3Rpb25HZXRBdHRyaWJ1dGVD
YWxsZXIoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCBKU1Rlc3RET01KSVQqIGNhc3RlZFRoaXMsIEpT
Qzo6VGhyb3dTY29wZSYgdGhyb3dTY29wZSkKK3sKKyAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwor
ICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhp
cy0+d3JhcHBlZCgpOworICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+YXJndW1lbnRDb3VudCgpIDwg
MSkpCisgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUsIGNyZWF0
ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CisgICAgYXV0byBuYW1lID0gY29udmVy
dDxJRExET01TdHJpbmc+KCpzdGF0ZSwgc3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50KDApLCBTdHJp
bmdDb252ZXJzaW9uQ29uZmlndXJhdGlvbjo6Tm9ybWFsKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOworICAgIEpTVmFsdWUgcmVzdWx0ID0g
dG9KUzxJRExOdWxsYWJsZTxJRExET01TdHJpbmc+Pigqc3RhdGUsIGltcGwuZ2V0QXR0cmlidXRl
KFdURk1vdmUobmFtZSkpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7Cit9
CisKK0pTQzo6RW5jb2RlZEpTVmFsdWUgdW5zYWZlSnNUZXN0RE9NSklUUHJvdG90eXBlRnVuY3Rp
b25HZXRBdHRyaWJ1dGUoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCBKU1Rlc3RET01KSVQqIGNhc3Rl
ZFRoaXMsIERPTUpJVDo6SURMSlNBcmd1bWVudFR5cGU8SURMRE9NU3RyaW5nPiBlbmNvZGVkTmFt
ZSkKK3sKKyAgICBVTlVTRURfUEFSQU0oc3RhdGUpOworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgp
OworICAgIEpTQzo6TmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcigmdm0sIHN0YXRlKTsKKyAg
ICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBhdXRvJiBp
bXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOworICAgIGF1dG8gbmFtZSA9IERPTUpJVDo6RGly
ZWN0Q29udmVydGVyPElETERPTVN0cmluZz46OmRpcmVjdENvbnZlcnQ8U3RyaW5nQ29udmVyc2lv
bkNvbmZpZ3VyYXRpb246Ok5vcm1hbD4oKnN0YXRlLCBlbmNvZGVkTmFtZSk7CisgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKKyAgICBKU1ZhbHVl
IHJlc3VsdCA9IHRvSlM8SURMTnVsbGFibGU8SURMRE9NU3RyaW5nPj4oKnN0YXRlLCBpbXBsLmdl
dEF0dHJpYnV0ZShXVEZNb3ZlKG5hbWUpKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShy
ZXN1bHQpOworfQorCiB2b2lkIEpTVGVzdERPTUpJVDo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNl
bGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogewogICAgIGF1dG8qIHRoaXNPYmplY3QgPSBqc0Nh
c3Q8SlNUZXN0RE9NSklUKj4oY2VsbCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvVGVzdERPTUpJVC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvVGVzdERPTUpJVC5pZGwKaW5kZXggYmU3ZWQwNGZmNjNkZTY4NmJjODc2
NDgyODJiNmFhZjY0YzI3NzNlNy4uYTUzMTQ4OGRjODFjMWI4NzdmMGVlM2Y5NGY4YWFiMzhhYTY5
NDM5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rl
c3RET01KSVQuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9U
ZXN0RE9NSklULmlkbApAQCAtNjMsNCArNjMsNiBAQCBpbnRlcmZhY2UgVGVzdERPTUpJVCA6IE5v
ZGUgewogICAgIFtET01KSVRdIHJlYWRvbmx5IGF0dHJpYnV0ZSBCeXRlU3RyaW5nPyBieXRlU3Ry
aW5nTnVsbGFibGVBdHRyOwogICAgIFtET01KSVRdIHJlYWRvbmx5IGF0dHJpYnV0ZSBVU1ZTdHJp
bmc/IHVzdlN0cmluZ051bGxhYmxlQXR0cjsKICAgICBbRE9NSklUXSByZWFkb25seSBhdHRyaWJ1
dGUgTm9kZT8gbm9kZU51bGxhYmxlQXR0cjsKKworICAgIFtET01KSVQ9U2lnbmF0dXJlXSBET01T
dHJpbmc/IGdldEF0dHJpYnV0ZShET01TdHJpbmcgbmFtZSk7CiB9OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaWRsIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQu
aWRsCmluZGV4IDcwNTYxNzM4Yjk3NDlhOGQ3NGEwZjE3Y2E2M2E3ZjhmZjE5NWUxYzYuLjQ4OGM5
OTFiNGJhNjZiNTI0ODgzODAyMTYwMWMwYzBmMWRhMzIwMmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9FbGVtZW50LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5p
ZGwKQEAgLTI2LDIwICsyNiwyMCBAQAogXSBpbnRlcmZhY2UgRWxlbWVudCA6IE5vZGUgewogICAg
IHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmc/IHRhZ05hbWU7CiAKLSAgICBET01TdHJpbmc/
IGdldEF0dHJpYnV0ZShET01TdHJpbmcgbmFtZSk7CisgICAgW0RPTUpJVD1TaWduYXR1cmVdIERP
TVN0cmluZz8gZ2V0QXR0cmlidXRlKERPTVN0cmluZyBuYW1lKTsKIAogICAgIFtDRVJlYWN0aW9u
cywgTWF5VGhyb3dFeGNlcHRpb25dIHZvaWQgc2V0QXR0cmlidXRlKERPTVN0cmluZyBuYW1lLCBE
T01TdHJpbmcgdmFsdWUpOwogCiAgICAgW0NFUmVhY3Rpb25zXSB2b2lkIHJlbW92ZUF0dHJpYnV0
ZShET01TdHJpbmcgbmFtZSk7Ci0gICAgQXR0cj8gZ2V0QXR0cmlidXRlTm9kZShET01TdHJpbmcg
bmFtZSk7CisgICAgW0RPTUpJVD1TaWduYXR1cmVdIEF0dHI/IGdldEF0dHJpYnV0ZU5vZGUoRE9N
U3RyaW5nIG5hbWUpOwogCiAgICAgW0NFUmVhY3Rpb25zLCBNYXlUaHJvd0V4Y2VwdGlvbl0gQXR0
cj8gc2V0QXR0cmlidXRlTm9kZShBdHRyIG5ld0F0dHIpOwogICAgIFtDRVJlYWN0aW9ucywgTWF5
VGhyb3dFeGNlcHRpb25dIEF0dHIgcmVtb3ZlQXR0cmlidXRlTm9kZShBdHRyIG9sZEF0dHIpOwog
Ci0gICAgSFRNTENvbGxlY3Rpb24gZ2V0RWxlbWVudHNCeVRhZ05hbWUoRE9NU3RyaW5nIG5hbWUp
OworICAgIFtET01KSVQ9U2lnbmF0dXJlXSBIVE1MQ29sbGVjdGlvbiBnZXRFbGVtZW50c0J5VGFn
TmFtZShET01TdHJpbmcgbmFtZSk7CiAKICAgICByZWFkb25seSBhdHRyaWJ1dGUgTmFtZWROb2Rl
TWFwIGF0dHJpYnV0ZXM7Ci0gICAgYm9vbGVhbiBoYXNBdHRyaWJ1dGVzKCk7CisgICAgW0RPTUpJ
VD1TaWduYXR1cmVdIGJvb2xlYW4gaGFzQXR0cmlidXRlcygpOwogCiAgICAgRE9NU3RyaW5nPyBn
ZXRBdHRyaWJ1dGVOUyhET01TdHJpbmc/IG5hbWVzcGFjZVVSSSwgRE9NU3RyaW5nIGxvY2FsTmFt
ZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbWppdC9ET01KSVRBYnN0cmFjdEhl
YXBSZXBvc2l0b3J5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbWppdC9ET01KSVRBYnN0cmFjdEhl
YXBSZXBvc2l0b3J5LmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODNmYmE4OTcx
M2I4NjYzZDRkOGYyN2VkY2JmNzRhZmU2MzE4MmQzMS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb21qaXQvRE9NSklUQWJzdHJh
Y3RIZWFwUmVwb3NpdG9yeS5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw3MCArMCwwIEBACi0vKgot
ICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAq
Ci0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
Ci0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZp
Zy5oIgotI2luY2x1ZGUgIkRPTUpJVEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaCIKLQotI2luY2x1
ZGUgPGRvbWppdC9ET01KSVRBYnN0cmFjdEhlYXAuaD4KLSNpbmNsdWRlIDx3dGYvRGF0YUxvZy5o
PgotI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgotCi0jaWYgRU5BQkxFKEpJVCkKLQot
bmFtZXNwYWNlIFdlYkNvcmUgeyBuYW1lc3BhY2UgRE9NSklUIHsKLQotc3RhdGljIGNvbnN0IGJv
b2wgdmVyYm9zZSA9IGZhbHNlOwotCi1BYnN0cmFjdEhlYXBSZXBvc2l0b3J5OjpBYnN0cmFjdEhl
YXBSZXBvc2l0b3J5KCkKLXsKLSAgICBKU0M6OkRPTUpJVDo6QWJzdHJhY3RIZWFwIERPTUhlYXAo
IkRPTSIpOwotI2RlZmluZSBET01KSVRfREVGSU5FX0hFQVAobmFtZSwgcGFyZW50KSBKU0M6OkRP
TUpJVDo6QWJzdHJhY3RIZWFwIG5hbWUjI0hlYXAoI25hbWUpOwotICAgIERPTUpJVF9BQlNUUkFD
VF9IRUFQX0xJU1QoRE9NSklUX0RFRklORV9IRUFQKQotI3VuZGVmIERPTUpJVF9ERUZJTkVfSEVB
UAotCi0jZGVmaW5lIERPTUpJVF9JTklUSUFMSVpFX0hFQVAobmFtZSwgcGFyZW50KSBuYW1lIyNI
ZWFwLnNldFBhcmVudCgmcGFyZW50IyNIZWFwKTsKLSAgICBET01KSVRfQUJTVFJBQ1RfSEVBUF9M
SVNUKERPTUpJVF9JTklUSUFMSVpFX0hFQVApCi0jdW5kZWYgRE9NSklUX0lOSVRJQUxJWkVfSEVB
UAotCi0gICAgRE9NSGVhcC5jb21wdXRlKDApOwotCi0jZGVmaW5lIERPTUpJVF9JTklUSUFMSVpF
X01FTUJFUihuYW1lLCBwYXJlbnQpIG5hbWUgPSBuYW1lIyNIZWFwLnJhbmdlKCk7Ci0gICAgRE9N
SklUX0FCU1RSQUNUX0hFQVBfTElTVChET01KSVRfSU5JVElBTElaRV9NRU1CRVIpCi0jdW5kZWYg
RE9NSklUX0lOSVRJQUxJWkVfTUVNQkVSCi0KLSAgICBpZiAodmVyYm9zZSkgewotICAgICAgICBk
YXRhTG9nKCJET01KSVQgSGVhcCBSZXBvc2l0b3J5OlxuIik7Ci0gICAgICAgIERPTUhlYXAuZGVl
cER1bXAoV1RGOjpkYXRhRmlsZSgpKTsKLSAgICB9Ci19Ci0KLWNvbnN0IEFic3RyYWN0SGVhcFJl
cG9zaXRvcnkmIEFic3RyYWN0SGVhcFJlcG9zaXRvcnk6OnNoYXJlZCgpCi17Ci0gICAgc3RhdGlj
IE5ldmVyRGVzdHJveWVkPEFic3RyYWN0SGVhcFJlcG9zaXRvcnk+IHJlcG9zaXRvcnk7Ci0gICAg
cmV0dXJuIHJlcG9zaXRvcnkuZ2V0KCk7Ci19Ci0KLX0gfQotCi0jZW5kaWYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2RvbWppdC9ET01KSVRBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmggYi9T
b3VyY2UvV2ViQ29yZS9kb21qaXQvRE9NSklUQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5oCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4MTkwYTFhOTRiYmM3OWRlNWYyZTNiZWQwOTk4MzQ3
OWZhNGJkNjU2Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L1NvdXJjZS9XZWJDb3JlL2RvbWppdC9ET01KSVRBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmgKKysr
IC9kZXYvbnVsbApAQCAtMSw2NiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE2IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpbmNsdWRlIDxkb21qaXQvRE9NSklU
SGVhcFJhbmdlLmg+Ci0jaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+Ci0jaW5jbHVkZSA8
d3RmL05vbmNvcHlhYmxlLmg+Ci0KLSNpZiBFTkFCTEUoSklUKQotCi1uYW1lc3BhY2UgV2ViQ29y
ZSB7IG5hbWVzcGFjZSBET01KSVQgewotCi0vLyBEZXNjcmliZSB5b3VyIGFic3RyYWN0IGhlYXAg
aGllcmFyY2h5IGhlcmUuCi0vLyBWKEFic3RyYWN0SGVhcE5hbWUsIFBhcmVudCkKLSNkZWZpbmUg
RE9NSklUX0FCU1RSQUNUX0hFQVBfTElTVChWKSBcCi0gICAgVihOb2RlLCBET00pIFwKLSAgICBW
KE5vZGVfZmlyc3RDaGlsZCwgTm9kZSkgXAotICAgIFYoTm9kZV9sYXN0Q2hpbGQsIE5vZGUpIFwK
LSAgICBWKE5vZGVfcGFyZW50Tm9kZSwgTm9kZSkgXAotICAgIFYoTm9kZV9uZXh0U2libGluZywg
Tm9kZSkgXAotICAgIFYoTm9kZV9wcmV2aW91c1NpYmxpbmcsIE5vZGUpIFwKLSAgICBWKE5vZGVf
b3duZXJEb2N1bWVudCwgTm9kZSkgXAotICAgIFYoRG9jdW1lbnQsIERPTSkgXAotICAgIFYoRG9j
dW1lbnRfZG9jdW1lbnRFbGVtZW50LCBEb2N1bWVudCkgXAotCi0KLWNsYXNzIEFic3RyYWN0SGVh
cFJlcG9zaXRvcnkgewotICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEFic3RyYWN0SGVhcFJlcG9z
aXRvcnkpOwotcHVibGljOgotICAgIHN0YXRpYyBjb25zdCBBYnN0cmFjdEhlYXBSZXBvc2l0b3J5
JiBzaGFyZWQoKTsKLQotICAgIEpTQzo6RE9NSklUOjpIZWFwUmFuZ2UgRE9NOwotCi0jZGVmaW5l
IERPTUpJVF9ERUZJTkVfTUVNQkVSKG5hbWUsIHBhcmVudCkgSlNDOjpET01KSVQ6OkhlYXBSYW5n
ZSBuYW1lOwotICAgIERPTUpJVF9BQlNUUkFDVF9IRUFQX0xJU1QoRE9NSklUX0RFRklORV9NRU1C
RVIpCi0jdW5kZWYgRE9NSklUX0RFRklORV9NRU1CRVIKLQotICAgIEFic3RyYWN0SGVhcFJlcG9z
aXRvcnkoKTsKLX07Ci0KLX0gfQotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2RvbWppdC9ET01KSVRBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LnlhbWwgYi9Tb3VyY2UvV2ViQ29y
ZS9kb21qaXQvRE9NSklUQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS55YW1sCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjUy
YzU4NDVlMDc4NjcwZGRkYWM5NzcyOTk5Y2NiOGVhN2QwMWJkZjMKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9kb21qaXQvRE9NSklUQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS55YW1s
CkBAIC0wLDAgKzEsMTEgQEAKK0RPTToKKyAgICBUcmVlOgorICAgICAgICBOb2RlOgorICAgICAg
ICAgICAgLSBOb2RlX2ZpcnN0Q2hpbGQKKyAgICAgICAgICAgIC0gTm9kZV9sYXN0Q2hpbGQKKyAg
ICAgICAgICAgIC0gTm9kZV9wYXJlbnROb2RlCisgICAgICAgICAgICAtIE5vZGVfbmV4dFNpYmxp
bmcKKyAgICAgICAgICAgIC0gTm9kZV9wcmV2aW91c1NpYmxpbmcKKyAgICAgICAgICAgIC0gTm9k
ZV9vd25lckRvY3VtZW50CisgICAgICAgIERvY3VtZW50OgorICAgICAgICAgICAgLSBEb2N1bWVu
dF9kb2N1bWVudEVsZW1lbnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbWppdC9ET01K
SVRJRExDb252ZXJ0LmggYi9Tb3VyY2UvV2ViQ29yZS9kb21qaXQvRE9NSklUSURMQ29udmVydC5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjVlMDBhYmZjY2I4NzZkZWExODMyZjFjMjBhZWUzZWQ3OGIxMzY4NDkKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb21qaXQvRE9NSklUSURMQ29udmVydC5o
CkBAIC0wLDAgKzEsNDkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUg
IklETFR5cGVzLmgiCisjaW5jbHVkZSA8Ynl0ZWNvZGUvU3BlY3VsYXRlZFR5cGUuaD4KKyNpbmNs
dWRlIDxkb21qaXQvRE9NSklUU2lnbmF0dXJlLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsgbmFt
ZXNwYWNlIERPTUpJVCB7CisKK3RlbXBsYXRlPHR5cGVuYW1lIElETFR5cGU+CitzdHJ1Y3QgRGly
ZWN0Q29udmVydGVyOworCit0ZW1wbGF0ZTw+CitzdHJ1Y3QgRGlyZWN0Q29udmVydGVyPElETERP
TVN0cmluZz4geworICAgIHRlbXBsYXRlPFN0cmluZ0NvbnZlcnNpb25Db25maWd1cmF0aW9uPgor
ICAgIHN0YXRpYyBTdHJpbmcgZGlyZWN0Q29udmVydChKU0M6OkV4ZWNTdGF0ZSYsIEpTQzo6SlNT
dHJpbmcqKTsKK307CisKK3RlbXBsYXRlPD4KK2lubGluZSBTdHJpbmcgRGlyZWN0Q29udmVydGVy
PElETERPTVN0cmluZz46OmRpcmVjdENvbnZlcnQ8U3RyaW5nQ29udmVyc2lvbkNvbmZpZ3VyYXRp
b246Ok5vcm1hbD4oSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBKU0M6OkpTU3RyaW5nKiBzdHJpbmcp
Cit7CisgICAgcmV0dXJuIHN0cmluZy0+dmFsdWUoJnN0YXRlKTsKK30KKworfSB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb21qaXQvRE9NSklUSURMVHlwZS5oIGIvU291cmNlL1dlYkNv
cmUvZG9taml0L0RPTUpJVElETFR5cGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ODkxZmJjNTBlZjRjMmQ3NjU0
ZDhlNWQyYmM4ZGVhZTk3NmRmMWFjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9taml0L0RPTUpJVElETFR5cGUuaApAQCAtMCwwICsxLDQ3IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3By
YWdtYSBvbmNlCisKKyNpbmNsdWRlICJJRExUeXBlcy5oIgorI2luY2x1ZGUgPGJ5dGVjb2RlL1Nw
ZWN1bGF0ZWRUeXBlLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsgbmFtZXNwYWNlIERPTUpJVCB7
CisKK3RlbXBsYXRlPHR5cGVuYW1lIElETFR5cGU+CitzdHJ1Y3QgSURMSlNBcmd1bWVudFR5cGVT
ZWxlY3Q7CisKK3RlbXBsYXRlPD4gc3RydWN0IElETEpTQXJndW1lbnRUeXBlU2VsZWN0PElETEJv
b2xlYW4+IHsgdHlwZWRlZiBib29sIHR5cGU7IH07Cit0ZW1wbGF0ZTw+IHN0cnVjdCBJRExKU0Fy
Z3VtZW50VHlwZVNlbGVjdDxJRExCeXRlPiB7IHR5cGVkZWYgaW50MzJfdCB0eXBlOyB9OwordGVt
cGxhdGU8PiBzdHJ1Y3QgSURMSlNBcmd1bWVudFR5cGVTZWxlY3Q8SURMT2N0ZXQ+IHsgdHlwZWRl
ZiBpbnQzMl90IHR5cGU7IH07Cit0ZW1wbGF0ZTw+IHN0cnVjdCBJRExKU0FyZ3VtZW50VHlwZVNl
bGVjdDxJRExTaG9ydD4geyB0eXBlZGVmIGludDMyX3QgdHlwZTsgfTsKK3RlbXBsYXRlPD4gc3Ry
dWN0IElETEpTQXJndW1lbnRUeXBlU2VsZWN0PElETFVuc2lnbmVkU2hvcnQ+IHsgdHlwZWRlZiBp
bnQzMl90IHR5cGU7IH07Cit0ZW1wbGF0ZTw+IHN0cnVjdCBJRExKU0FyZ3VtZW50VHlwZVNlbGVj
dDxJRExMb25nPiB7IHR5cGVkZWYgaW50MzJfdCB0eXBlOyB9OwordGVtcGxhdGU8PiBzdHJ1Y3Qg
SURMSlNBcmd1bWVudFR5cGVTZWxlY3Q8SURMRE9NU3RyaW5nPiB7IHR5cGVkZWYgSlNDOjpKU1N0
cmluZyogdHlwZTsgfTsKKwordGVtcGxhdGU8dHlwZW5hbWUgSURMVHlwZT4KK3VzaW5nIElETEpT
QXJndW1lbnRUeXBlID0gdHlwZW5hbWUgSURMSlNBcmd1bWVudFR5cGVTZWxlY3Q8SURMVHlwZT46
OnR5cGU7CisKK30gfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9taml0L0RPTUpJVElE
TFR5cGVGaWx0ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbWppdC9ET01KSVRJRExUeXBlRmlsdGVy
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uOGFmNjM2ZGU5YjZmZTQxYzM2Yzc3MDg3MDI0NmU4N2FiZmZiNzgwMgot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbWppdC9ET01KSVRJRExUeXBlRmls
dGVyLmgKQEAgLTAsMCArMSw3MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5j
bHVkZSA8Ynl0ZWNvZGUvU3BlY3VsYXRlZFR5cGUuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeyBu
YW1lc3BhY2UgRE9NSklUIHsKKwordGVtcGxhdGU8dHlwZW5hbWUgSURMVHlwZT4KK3N0cnVjdCBJ
RExBcmd1bWVudFR5cGVGaWx0ZXJTZWxlY3Q7CisKK3RlbXBsYXRlPD4gc3RydWN0IElETEFyZ3Vt
ZW50VHlwZUZpbHRlclNlbGVjdDxJRExCb29sZWFuPiB7IHN0YXRpYyBjb25zdGV4cHIgSlNDOjpT
cGVjdWxhdGVkVHlwZSB2YWx1ZSA9IEpTQzo6U3BlY0Jvb2xlYW47IH07Cit0ZW1wbGF0ZTw+IHN0
cnVjdCBJRExBcmd1bWVudFR5cGVGaWx0ZXJTZWxlY3Q8SURMQnl0ZT4geyBzdGF0aWMgY29uc3Rl
eHByIEpTQzo6U3BlY3VsYXRlZFR5cGUgdmFsdWUgPSBKU0M6OlNwZWNJbnQzMk9ubHk7IH07Cit0
ZW1wbGF0ZTw+IHN0cnVjdCBJRExBcmd1bWVudFR5cGVGaWx0ZXJTZWxlY3Q8SURMT2N0ZXQ+IHsg
c3RhdGljIGNvbnN0ZXhwciBKU0M6OlNwZWN1bGF0ZWRUeXBlIHZhbHVlID0gSlNDOjpTcGVjSW50
MzJPbmx5OyB9OwordGVtcGxhdGU8PiBzdHJ1Y3QgSURMQXJndW1lbnRUeXBlRmlsdGVyU2VsZWN0
PElETFNob3J0PiB7IHN0YXRpYyBjb25zdGV4cHIgSlNDOjpTcGVjdWxhdGVkVHlwZSB2YWx1ZSA9
IEpTQzo6U3BlY0ludDMyT25seTsgfTsKK3RlbXBsYXRlPD4gc3RydWN0IElETEFyZ3VtZW50VHlw
ZUZpbHRlclNlbGVjdDxJRExVbnNpZ25lZFNob3J0PiB7IHN0YXRpYyBjb25zdGV4cHIgSlNDOjpT
cGVjdWxhdGVkVHlwZSB2YWx1ZSA9IEpTQzo6U3BlY0ludDMyT25seTsgfTsKK3RlbXBsYXRlPD4g
c3RydWN0IElETEFyZ3VtZW50VHlwZUZpbHRlclNlbGVjdDxJRExMb25nPiB7IHN0YXRpYyBjb25z
dGV4cHIgSlNDOjpTcGVjdWxhdGVkVHlwZSB2YWx1ZSA9IEpTQzo6U3BlY0ludDMyT25seTsgfTsK
K3RlbXBsYXRlPD4gc3RydWN0IElETEFyZ3VtZW50VHlwZUZpbHRlclNlbGVjdDxJRExET01TdHJp
bmc+IHsgc3RhdGljIGNvbnN0ZXhwciBKU0M6OlNwZWN1bGF0ZWRUeXBlIHZhbHVlID0gSlNDOjpT
cGVjU3RyaW5nOyB9OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBJRExUeXBlPgorY29uc3RleHByIEpT
Qzo6U3BlY3VsYXRlZFR5cGUgSURMQXJndW1lbnRUeXBlRmlsdGVyID0gSURMQXJndW1lbnRUeXBl
RmlsdGVyU2VsZWN0PElETFR5cGU+Ojp2YWx1ZTsKKwordGVtcGxhdGU8dHlwZW5hbWUgSURMVHlw
ZT4KK2NvbnN0ZXhwciBKU0M6OlNwZWN1bGF0ZWRUeXBlIElETFJlc3VsdFR5cGVGaWx0ZXIgPSBK
U0M6OlNwZWNIZWFwVG9wOworCit0ZW1wbGF0ZTw+IGNvbnN0ZXhwciBKU0M6OlNwZWN1bGF0ZWRU
eXBlIElETFJlc3VsdFR5cGVGaWx0ZXI8SURMQW55PiA9IEpTQzo6U3BlY0hlYXBUb3A7Cit0ZW1w
bGF0ZTw+IGNvbnN0ZXhwciBKU0M6OlNwZWN1bGF0ZWRUeXBlIElETFJlc3VsdFR5cGVGaWx0ZXI8
SURMQm9vbGVhbj4gPSBKU0M6OlNwZWNCb29sZWFuOwordGVtcGxhdGU8PiBjb25zdGV4cHIgSlND
OjpTcGVjdWxhdGVkVHlwZSBJRExSZXN1bHRUeXBlRmlsdGVyPElETEJ5dGU+ID0gSlNDOjpTcGVj
SW50MzJPbmx5OwordGVtcGxhdGU8PiBjb25zdGV4cHIgSlNDOjpTcGVjdWxhdGVkVHlwZSBJRExS
ZXN1bHRUeXBlRmlsdGVyPElETE9jdGV0PiA9IEpTQzo6U3BlY0ludDMyT25seTsKK3RlbXBsYXRl
PD4gY29uc3RleHByIEpTQzo6U3BlY3VsYXRlZFR5cGUgSURMUmVzdWx0VHlwZUZpbHRlcjxJRExT
aG9ydD4gPSBKU0M6OlNwZWNJbnQzMk9ubHk7Cit0ZW1wbGF0ZTw+IGNvbnN0ZXhwciBKU0M6OlNw
ZWN1bGF0ZWRUeXBlIElETFJlc3VsdFR5cGVGaWx0ZXI8SURMVW5zaWduZWRTaG9ydD4gPSBKU0M6
OlNwZWNJbnQzMk9ubHk7Cit0ZW1wbGF0ZTw+IGNvbnN0ZXhwciBKU0M6OlNwZWN1bGF0ZWRUeXBl
IElETFJlc3VsdFR5cGVGaWx0ZXI8SURMTG9uZz4gPSBKU0M6OlNwZWNJbnQzMk9ubHk7Cit0ZW1w
bGF0ZTw+IGNvbnN0ZXhwciBKU0M6OlNwZWN1bGF0ZWRUeXBlIElETFJlc3VsdFR5cGVGaWx0ZXI8
SURMVW5zaWduZWRMb25nPiA9IEpTQzo6U3BlY0J5dGVjb2RlTnVtYmVyOwordGVtcGxhdGU8PiBj
b25zdGV4cHIgSlNDOjpTcGVjdWxhdGVkVHlwZSBJRExSZXN1bHRUeXBlRmlsdGVyPElETExvbmdM
b25nPiA9IEpTQzo6U3BlY0J5dGVjb2RlTnVtYmVyOwordGVtcGxhdGU8PiBjb25zdGV4cHIgSlND
OjpTcGVjdWxhdGVkVHlwZSBJRExSZXN1bHRUeXBlRmlsdGVyPElETFVuc2lnbmVkTG9uZ0xvbmc+
ID0gSlNDOjpTcGVjQnl0ZWNvZGVOdW1iZXI7Cit0ZW1wbGF0ZTw+IGNvbnN0ZXhwciBKU0M6OlNw
ZWN1bGF0ZWRUeXBlIElETFJlc3VsdFR5cGVGaWx0ZXI8SURMRmxvYXQ+ID0gSlNDOjpTcGVjQnl0
ZWNvZGVOdW1iZXI7Cit0ZW1wbGF0ZTw+IGNvbnN0ZXhwciBKU0M6OlNwZWN1bGF0ZWRUeXBlIElE
TFJlc3VsdFR5cGVGaWx0ZXI8SURMVW5yZXN0cmljdGVkRmxvYXQ+ID0gSlNDOjpTcGVjQnl0ZWNv
ZGVOdW1iZXI7Cit0ZW1wbGF0ZTw+IGNvbnN0ZXhwciBKU0M6OlNwZWN1bGF0ZWRUeXBlIElETFJl
c3VsdFR5cGVGaWx0ZXI8SURMRG91YmxlPiA9IEpTQzo6U3BlY0J5dGVjb2RlTnVtYmVyOwordGVt
cGxhdGU8PiBjb25zdGV4cHIgSlNDOjpTcGVjdWxhdGVkVHlwZSBJRExSZXN1bHRUeXBlRmlsdGVy
PElETFVucmVzdHJpY3RlZERvdWJsZT4gPSBKU0M6OlNwZWNCeXRlY29kZU51bWJlcjsKK3RlbXBs
YXRlPD4gY29uc3RleHByIEpTQzo6U3BlY3VsYXRlZFR5cGUgSURMUmVzdWx0VHlwZUZpbHRlcjxJ
RExET01TdHJpbmc+ID0gSlNDOjpTcGVjU3RyaW5nOwordGVtcGxhdGU8PiBjb25zdGV4cHIgSlND
OjpTcGVjdWxhdGVkVHlwZSBJRExSZXN1bHRUeXBlRmlsdGVyPElETEJ5dGVTdHJpbmc+ID0gSlND
OjpTcGVjU3RyaW5nOwordGVtcGxhdGU8PiBjb25zdGV4cHIgSlNDOjpTcGVjdWxhdGVkVHlwZSBJ
RExSZXN1bHRUeXBlRmlsdGVyPElETFVTVlN0cmluZz4gPSBKU0M6OlNwZWNTdHJpbmc7CisKK3Rl
bXBsYXRlPHR5cGVuYW1lIFQ+Citjb25zdGV4cHIgSlNDOjpTcGVjdWxhdGVkVHlwZSBJRExSZXN1
bHRUeXBlRmlsdGVyPElETE51bGxhYmxlPFQ+PiA9IEpTQzo6U3BlY090aGVyIHwgSURMUmVzdWx0
VHlwZUZpbHRlcjxUPjsKKworfSB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb21qaXQv
SlNEb2N1bWVudERPTUpJVC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb21qaXQvSlNEb2N1bWVudERP
TUpJVC5jcHAKaW5kZXggOWI0OGQ5ZmRhNThhNjJkMDdmYjIzYWFiNDU2YmY5NGI3ZWQ4ZmMyZi4u
YmJmZWU3ZGM0YmI3ODJlNzNjZjI3Yzk3N2JjMTgyOTRhNTk0YjZkOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZG9taml0L0pTRG9jdW1lbnRET01KSVQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2RvbWppdC9KU0RvY3VtZW50RE9NSklULmNwcApAQCAtNDgsNyArNDgsNiBAQCBSZWY8SlND
OjpET01KSVQ6OlBhdGNocG9pbnQ+IERvY3VtZW50RG9jdW1lbnRFbGVtZW50RE9NSklUOjpjaGVj
a0RPTSgpCiAKIFJlZjxKU0M6OkRPTUpJVDo6Q2FsbERPTUdldHRlclBhdGNocG9pbnQ+IERvY3Vt
ZW50RG9jdW1lbnRFbGVtZW50RE9NSklUOjpjYWxsRE9NR2V0dGVyKCkKIHsKLSAgICBjb25zdCBh
dXRvJiBoZWFwID0gRE9NSklUOjpBYnN0cmFjdEhlYXBSZXBvc2l0b3J5OjpzaGFyZWQoKTsKICAg
ICBSZWY8SlNDOjpET01KSVQ6OkNhbGxET01HZXR0ZXJQYXRjaHBvaW50PiBwYXRjaHBvaW50ID0g
SlNDOjpET01KSVQ6OkNhbGxET01HZXR0ZXJQYXRjaHBvaW50OjpjcmVhdGUoKTsKICAgICBwYXRj
aHBvaW50LT5udW1HUFNjcmF0Y2hSZWdpc3RlcnMgPSAxOwogICAgIHBhdGNocG9pbnQtPnNldEdl
bmVyYXRvcihbPV0oQ0NhbGxIZWxwZXJzJiBqaXQsIEpTQzo6RE9NSklUOjpQYXRjaHBvaW50UGFy
YW1zJiBwYXJhbXMpIHsKQEAgLTcwLDcgKzY5LDcgQEAgUmVmPEpTQzo6RE9NSklUOjpDYWxsRE9N
R2V0dGVyUGF0Y2hwb2ludD4gRG9jdW1lbnREb2N1bWVudEVsZW1lbnRET01KSVQ6OmNhbGxET00K
IAogICAgICAgICByZXR1cm4gQ0NhbGxIZWxwZXJzOjpKdW1wTGlzdCgpOwogICAgIH0pOwotICAg
IHBhdGNocG9pbnQtPmVmZmVjdCA9IEpTQzo6RE9NSklUOjpFZmZlY3Q6OmZvckRlZihoZWFwLkRv
Y3VtZW50X2RvY3VtZW50RWxlbWVudCk7CisgICAgcGF0Y2hwb2ludC0+ZWZmZWN0ID0gSlNDOjpE
T01KSVQ6OkVmZmVjdDo6Zm9yRGVmKERPTUpJVDo6QWJzdHJhY3RIZWFwUmVwb3NpdG9yeTo6RG9j
dW1lbnRfZG9jdW1lbnRFbGVtZW50KTsKICAgICByZXR1cm4gcGF0Y2hwb2ludDsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9taml0L0pTTm9kZURPTUpJVC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9kb21qaXQvSlNOb2RlRE9NSklULmNwcAppbmRleCAxZDc5MDFlYzQxZDdhY2VmMWQw
ZDc4ZjYxMzI2ZmJlOGExM2E5MWJmLi5kYjMxMGVhMzQ1Mjg0OTE0MjQyOGQzZDYxNmY4MWIyYzY3
YzUxNjU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb21qaXQvSlNOb2RlRE9NSklULmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb21qaXQvSlNOb2RlRE9NSklULmNwcApAQCAtODMsOSAr
ODMsOCBAQCBSZWY8SlNDOjpET01KSVQ6OlBhdGNocG9pbnQ+IE5vZGVGaXJzdENoaWxkRE9NSklU
OjpjaGVja0RPTSgpCiAKIFJlZjxKU0M6OkRPTUpJVDo6Q2FsbERPTUdldHRlclBhdGNocG9pbnQ+
IE5vZGVGaXJzdENoaWxkRE9NSklUOjpjYWxsRE9NR2V0dGVyKCkKIHsKLSAgICBjb25zdCBhdXRv
JiBoZWFwID0gRE9NSklUOjpBYnN0cmFjdEhlYXBSZXBvc2l0b3J5OjpzaGFyZWQoKTsKICAgICBh
dXRvIHBhdGNocG9pbnQgPSBjcmVhdGVDYWxsRE9NR2V0dGVyRm9yT2Zmc2V0QWNjZXNzPE5vZGU+
KENBU1RfT0ZGU0VUKE5vZGUqLCBDb250YWluZXJOb2RlKikgKyBDb250YWluZXJOb2RlOjpmaXJz
dENoaWxkTWVtb3J5T2Zmc2V0KCksIElzQ29udGFpbmVyR3VhcmRSZXF1aXJlbWVudDo6UmVxdWly
ZWQpOwotICAgIHBhdGNocG9pbnQtPmVmZmVjdCA9IEpTQzo6RE9NSklUOjpFZmZlY3Q6OmZvckRl
ZihoZWFwLk5vZGVfZmlyc3RDaGlsZCk7CisgICAgcGF0Y2hwb2ludC0+ZWZmZWN0ID0gSlNDOjpE
T01KSVQ6OkVmZmVjdDo6Zm9yRGVmKERPTUpJVDo6QWJzdHJhY3RIZWFwUmVwb3NpdG9yeTo6Tm9k
ZV9maXJzdENoaWxkKTsKICAgICByZXR1cm4gcGF0Y2hwb2ludDsKIH0KIApAQCAtOTYsOSArOTUs
OCBAQCBSZWY8SlNDOjpET01KSVQ6OlBhdGNocG9pbnQ+IE5vZGVMYXN0Q2hpbGRET01KSVQ6OmNo
ZWNrRE9NKCkKIAogUmVmPEpTQzo6RE9NSklUOjpDYWxsRE9NR2V0dGVyUGF0Y2hwb2ludD4gTm9k
ZUxhc3RDaGlsZERPTUpJVDo6Y2FsbERPTUdldHRlcigpCiB7Ci0gICAgY29uc3QgYXV0byYgaGVh
cCA9IERPTUpJVDo6QWJzdHJhY3RIZWFwUmVwb3NpdG9yeTo6c2hhcmVkKCk7CiAgICAgYXV0byBw
YXRjaHBvaW50ID0gY3JlYXRlQ2FsbERPTUdldHRlckZvck9mZnNldEFjY2VzczxOb2RlPihDQVNU
X09GRlNFVChOb2RlKiwgQ29udGFpbmVyTm9kZSopICsgQ29udGFpbmVyTm9kZTo6bGFzdENoaWxk
TWVtb3J5T2Zmc2V0KCksIElzQ29udGFpbmVyR3VhcmRSZXF1aXJlbWVudDo6UmVxdWlyZWQpOwot
ICAgIHBhdGNocG9pbnQtPmVmZmVjdCA9IEpTQzo6RE9NSklUOjpFZmZlY3Q6OmZvckRlZihoZWFw
Lk5vZGVfbGFzdENoaWxkKTsKKyAgICBwYXRjaHBvaW50LT5lZmZlY3QgPSBKU0M6OkRPTUpJVDo6
RWZmZWN0Ojpmb3JEZWYoRE9NSklUOjpBYnN0cmFjdEhlYXBSZXBvc2l0b3J5OjpOb2RlX2xhc3RD
aGlsZCk7CiAgICAgcmV0dXJuIHBhdGNocG9pbnQ7CiB9CiAKQEAgLTEwOSw5ICsxMDcsOCBAQCBS
ZWY8SlNDOjpET01KSVQ6OlBhdGNocG9pbnQ+IE5vZGVOZXh0U2libGluZ0RPTUpJVDo6Y2hlY2tE
T00oKQogCiBSZWY8SlNDOjpET01KSVQ6OkNhbGxET01HZXR0ZXJQYXRjaHBvaW50PiBOb2RlTmV4
dFNpYmxpbmdET01KSVQ6OmNhbGxET01HZXR0ZXIoKQogewotICAgIGNvbnN0IGF1dG8mIGhlYXAg
PSBET01KSVQ6OkFic3RyYWN0SGVhcFJlcG9zaXRvcnk6OnNoYXJlZCgpOwogICAgIGF1dG8gcGF0
Y2hwb2ludCA9IGNyZWF0ZUNhbGxET01HZXR0ZXJGb3JPZmZzZXRBY2Nlc3M8Tm9kZT4oTm9kZTo6
bmV4dFNpYmxpbmdNZW1vcnlPZmZzZXQoKSwgSXNDb250YWluZXJHdWFyZFJlcXVpcmVtZW50OjpO
b3RSZXF1aXJlZCk7Ci0gICAgcGF0Y2hwb2ludC0+ZWZmZWN0ID0gSlNDOjpET01KSVQ6OkVmZmVj
dDo6Zm9yRGVmKGhlYXAuTm9kZV9uZXh0U2libGluZyk7CisgICAgcGF0Y2hwb2ludC0+ZWZmZWN0
ID0gSlNDOjpET01KSVQ6OkVmZmVjdDo6Zm9yRGVmKERPTUpJVDo6QWJzdHJhY3RIZWFwUmVwb3Np
dG9yeTo6Tm9kZV9uZXh0U2libGluZyk7CiAgICAgcmV0dXJuIHBhdGNocG9pbnQ7CiB9CiAKQEAg
LTEyMiw5ICsxMTksOCBAQCBSZWY8SlNDOjpET01KSVQ6OlBhdGNocG9pbnQ+IE5vZGVQcmV2aW91
c1NpYmxpbmdET01KSVQ6OmNoZWNrRE9NKCkKIAogUmVmPEpTQzo6RE9NSklUOjpDYWxsRE9NR2V0
dGVyUGF0Y2hwb2ludD4gTm9kZVByZXZpb3VzU2libGluZ0RPTUpJVDo6Y2FsbERPTUdldHRlcigp
CiB7Ci0gICAgY29uc3QgYXV0byYgaGVhcCA9IERPTUpJVDo6QWJzdHJhY3RIZWFwUmVwb3NpdG9y
eTo6c2hhcmVkKCk7CiAgICAgYXV0byBwYXRjaHBvaW50ID0gY3JlYXRlQ2FsbERPTUdldHRlckZv
ck9mZnNldEFjY2VzczxOb2RlPihOb2RlOjpwcmV2aW91c1NpYmxpbmdNZW1vcnlPZmZzZXQoKSwg
SXNDb250YWluZXJHdWFyZFJlcXVpcmVtZW50OjpOb3RSZXF1aXJlZCk7Ci0gICAgcGF0Y2hwb2lu
dC0+ZWZmZWN0ID0gSlNDOjpET01KSVQ6OkVmZmVjdDo6Zm9yRGVmKGhlYXAuTm9kZV9wcmV2aW91
c1NpYmxpbmcpOworICAgIHBhdGNocG9pbnQtPmVmZmVjdCA9IEpTQzo6RE9NSklUOjpFZmZlY3Q6
OmZvckRlZihET01KSVQ6OkFic3RyYWN0SGVhcFJlcG9zaXRvcnk6Ok5vZGVfcHJldmlvdXNTaWJs
aW5nKTsKICAgICByZXR1cm4gcGF0Y2hwb2ludDsKIH0KIApAQCAtMTM1LDkgKzEzMSw4IEBAIFJl
ZjxKU0M6OkRPTUpJVDo6UGF0Y2hwb2ludD4gTm9kZVBhcmVudE5vZGVET01KSVQ6OmNoZWNrRE9N
KCkKIAogUmVmPEpTQzo6RE9NSklUOjpDYWxsRE9NR2V0dGVyUGF0Y2hwb2ludD4gTm9kZVBhcmVu
dE5vZGVET01KSVQ6OmNhbGxET01HZXR0ZXIoKQogewotICAgIGNvbnN0IGF1dG8mIGhlYXAgPSBE
T01KSVQ6OkFic3RyYWN0SGVhcFJlcG9zaXRvcnk6OnNoYXJlZCgpOwogICAgIGF1dG8gcGF0Y2hw
b2ludCA9IGNyZWF0ZUNhbGxET01HZXR0ZXJGb3JPZmZzZXRBY2Nlc3M8Q29udGFpbmVyTm9kZT4o
Tm9kZTo6cGFyZW50Tm9kZU1lbW9yeU9mZnNldCgpLCBJc0NvbnRhaW5lckd1YXJkUmVxdWlyZW1l
bnQ6Ok5vdFJlcXVpcmVkKTsKLSAgICBwYXRjaHBvaW50LT5lZmZlY3QgPSBKU0M6OkRPTUpJVDo6
RWZmZWN0Ojpmb3JEZWYoaGVhcC5Ob2RlX3BhcmVudE5vZGUpOworICAgIHBhdGNocG9pbnQtPmVm
ZmVjdCA9IEpTQzo6RE9NSklUOjpFZmZlY3Q6OmZvckRlZihET01KSVQ6OkFic3RyYWN0SGVhcFJl
cG9zaXRvcnk6Ok5vZGVfcGFyZW50Tm9kZSk7CiAgICAgcmV0dXJuIHBhdGNocG9pbnQ7CiB9CiAK
QEAgLTE2OSw3ICsxNjQsNiBAQCBSZWY8SlNDOjpET01KSVQ6OlBhdGNocG9pbnQ+IE5vZGVPd25l
ckRvY3VtZW50RE9NSklUOjpjaGVja0RPTSgpCiAKIFJlZjxKU0M6OkRPTUpJVDo6Q2FsbERPTUdl
dHRlclBhdGNocG9pbnQ+IE5vZGVPd25lckRvY3VtZW50RE9NSklUOjpjYWxsRE9NR2V0dGVyKCkK
IHsKLSAgICBjb25zdCBhdXRvJiBoZWFwID0gRE9NSklUOjpBYnN0cmFjdEhlYXBSZXBvc2l0b3J5
OjpzaGFyZWQoKTsKICAgICBSZWY8SlNDOjpET01KSVQ6OkNhbGxET01HZXR0ZXJQYXRjaHBvaW50
PiBwYXRjaHBvaW50ID0gSlNDOjpET01KSVQ6OkNhbGxET01HZXR0ZXJQYXRjaHBvaW50OjpjcmVh
dGUoKTsKICAgICBwYXRjaHBvaW50LT5udW1HUFNjcmF0Y2hSZWdpc3RlcnMgPSAxOwogICAgIHBh
dGNocG9pbnQtPnNldEdlbmVyYXRvcihbPV0oQ0NhbGxIZWxwZXJzJiBqaXQsIEpTQzo6RE9NSklU
OjpQYXRjaHBvaW50UGFyYW1zJiBwYXJhbXMpIHsKQEAgLTE5MSw3ICsxODUsNyBAQCBSZWY8SlND
OjpET01KSVQ6OkNhbGxET01HZXR0ZXJQYXRjaHBvaW50PiBOb2RlT3duZXJEb2N1bWVudERPTUpJ
VDo6Y2FsbERPTUdldHRlcgogICAgICAgICBkb25lLmxpbmsoJmppdCk7CiAgICAgICAgIHJldHVy
biBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0KCk7CiAgICAgfSk7Ci0gICAgcGF0Y2hwb2ludC0+ZWZm
ZWN0ID0gSlNDOjpET01KSVQ6OkVmZmVjdDo6Zm9yRGVmKGhlYXAuTm9kZV9vd25lckRvY3VtZW50
KTsKKyAgICBwYXRjaHBvaW50LT5lZmZlY3QgPSBKU0M6OkRPTUpJVDo6RWZmZWN0Ojpmb3JEZWYo
RE9NSklUOjpBYnN0cmFjdEhlYXBSZXBvc2l0b3J5OjpOb2RlX293bmVyRG9jdW1lbnQpOwogICAg
IHJldHVybiBwYXRjaHBvaW50OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb21q
aXQvZ2VuZXJhdGUtYWJzdHJhY3QtaGVhcC5yYiBiL1NvdXJjZS9XZWJDb3JlL2RvbWppdC9nZW5l
cmF0ZS1hYnN0cmFjdC1oZWFwLnJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI3NDEyZTg1ZDY5ZjQ5MWEyZWFhYmFh
NjE3OGYxYjI1YTAyZDA5YjQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb21q
aXQvZ2VuZXJhdGUtYWJzdHJhY3QtaGVhcC5yYgpAQCAtMCwwICsxLDE2NSBAQAorIyEvdXNyL2Jp
bi9lbnYgcnVieQorIyAtKi0gY29kaW5nOiB1dGYtOCAtKi0KKyMgQ29weXJpZ2h0IChDKSAyMDE2
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworIyBhcmUgbWV0OgorIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisj
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworIyBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyMgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorIyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorIyBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorIyBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyMgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyMgQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyMgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorIyBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisKK3JlcXVpcmUgInlhbWwiCisKK2NsYXNzIEhlYXBSYW5nZQorICAg
IGF0dHJfcmVhZGVyIDpmaXJzdCwgOmxhc3QKKyAgICBkZWYgaW5pdGlhbGl6ZShmaXJzdCwgbGFz
dCkKKyAgICAgICAgQGZpcnN0ID0gZmlyc3QKKyAgICAgICAgQGxhc3QgPSBsYXN0CisgICAgZW5k
CitlbmQKKworY2xhc3MgQWJzdHJhY3RIZWFwCisgICAgYXR0cl9yZWFkZXIgOnJhbmdlLCA6bmFt
ZSwgOnBhcmVudAorICAgIGRlZiBpbml0aWFsaXplKG5hbWUsIHRyZWUpCisgICAgICAgIEBuYW1l
ID0gbmFtZQorICAgICAgICBAcGFyZW50ID0gbmlsCisgICAgICAgIGlmIHRyZWUubmlsPworICAg
ICAgICAgICAgQGNoaWxkcmVuID0gW10KKyAgICAgICAgZWxzZQorICAgICAgICAgICAgQGNoaWxk
cmVuID0gdHJlZS5tYXAge3xrZXksIHZhbHVlfCBBYnN0cmFjdEhlYXAubmV3KGtleSwgdmFsdWUp
IH0KKyAgICAgICAgZW5kCisgICAgICAgIEByYW5nZSA9IG5pbAorICAgIGVuZAorCisgICAgZGVm
IHNldFBhcmVudChwYXJlbnQpCisgICAgICAgIHBhcmVudC5jaGlsZHJlbi5wdXNoKHNlbGYpCisg
ICAgICAgIEBwYXJlbnQgPSBwYXJlbnQKKyAgICBlbmQKKworICAgIGRlZiBjb21wdXRlKHN0YXJ0
KQorICAgICAgICBjdXJyZW50ID0gc3RhcnQKKyAgICAgICAgaWYgQGNoaWxkcmVuLmVtcHR5Pwor
ICAgICAgICAgICAgQHJhbmdlID0gSGVhcFJhbmdlLm5ldyhzdGFydCwgY3VycmVudCArIDEpCisg
ICAgICAgICAgICByZXR1cm4KKyAgICAgICAgZW5kCisKKyAgICAgICAgQGNoaWxkcmVuLmVhY2gg
e3xjaGlsZHwKKyAgICAgICAgICAgIGNoaWxkLmNvbXB1dGUoY3VycmVudCkKKyAgICAgICAgICAg
IGN1cnJlbnQgPSBjaGlsZC5yYW5nZS5sYXN0CisgICAgICAgIH0KKworICAgICAgICBAcmFuZ2Ug
PSBIZWFwUmFuZ2UubmV3KHN0YXJ0LCBjdXJyZW50KQorICAgIGVuZAorCisgICAgZGVmIGR1bXAg
b3V0cHV0CisgICAgICAgIHNoYWxsb3dEdW1wKG91dHB1dCkKKyAgICAgICAgaWYgQHBhcmVudAor
ICAgICAgICAgICAgb3V0cHV0LnByaW50ICItPiAiCisgICAgICAgICAgICBAcGFyZW50LmR1bXAo
b3V0cHV0KQorICAgICAgICBlbmQKKyAgICBlbmQKKworICAgIGRlZiBzaGFsbG93RHVtcChvdXRw
dXQpCisgICAgICAgIG91dHB1dC5wcmludCAiI3tAbmFtZX08I3tAcmFuZ2UuZmlyc3R9LCN7QHJh
bmdlLmxhc3R9PiIKKyAgICBlbmQKKworICAgIGRlZiBkZWVwRHVtcCBvdXRwdXQsIGluZGVudAor
ICAgICAgICBwcmludEluZGVudChvdXRwdXQsIGluZGVudCkKKyAgICAgICAgc2hhbGxvd0R1bXAo
b3V0cHV0KQorICAgICAgICBpZiBAY2hpbGRyZW4uZW1wdHk/CisgICAgICAgICAgICBvdXRwdXQu
cHJpbnQgIlxuIgorICAgICAgICAgICAgcmV0dXJuCisgICAgICAgIGVuZAorCisgICAgICAgIG91
dHB1dC5wcmludCAiOlxuIgorICAgICAgICBAY2hpbGRyZW4uZWFjaCB7fGNoaWxkfAorICAgICAg
ICAgICAgY2hpbGQuZGVlcER1bXAob3V0cHV0LCBpbmRlbnQgKyAxKQorICAgICAgICB9CisgICAg
ZW5kCisKKyAgICBkZWYgZ2VuZXJhdGUgb3V0cHV0CisgICAgICAgIG91dHB1dC5wdXRzICJjb25z
dGV4cHIgSlNDOjpET01KSVQ6OkhlYXBSYW5nZSAje0BuYW1lfShKU0M6OkRPTUpJVDo6SGVhcFJh
bmdlOjpDb25zdEV4cHIsICN7QHJhbmdlLmZpcnN0fSwgI3tAcmFuZ2UubGFzdH0pOyIKKyAgICAg
ICAgQGNoaWxkcmVuLmVhY2gge3xjaGlsZHwKKyAgICAgICAgICAgIGNoaWxkLmdlbmVyYXRlKG91
dHB1dCkKKyAgICAgICAgfQorICAgIGVuZAorCitwcml2YXRlCisgICAgZGVmIHByaW50SW5kZW50
IG91dHB1dCwgaW5kZW50CisgICAgICAgIGluZGVudC50aW1lcyB7CisgICAgICAgICAgICBvdXRw
dXQucHJpbnQgIiAgICAiCisgICAgICAgIH0KKyAgICBlbmQKK2VuZAorCitoZWFkZXIgPSA8PC1F
T1MKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
CisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworLy8gQXV0by1n
ZW5lcmF0ZWQgZmlsZS4gRG8gbm90IG1vZGlmeS4KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRl
IDxkb21qaXQvRE9NSklUSGVhcFJhbmdlLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsgbmFtZXNw
YWNlIERPTUpJVCB7IG5hbWVzcGFjZSBBYnN0cmFjdEhlYXBSZXBvc2l0b3J5IHsKK0VPUworCitm
b290ZXIgPSA8PC1FT1MKK30gfSB9CitFT1MKKworJGlucHV0RmlsZU5hbWUgPSBBUkdWLnNoaWZ0
Ciskb3V0cHV0RmlsZU5hbWUgPSBBUkdWLnNoaWZ0CitGaWxlLm9wZW4oJG91dHB1dEZpbGVOYW1l
LCAidyIpIHt8b3V0cHV0fAorICAgIEZpbGUub3BlbigkaW5wdXRGaWxlTmFtZSwgInJiIikge3xm
aWxlfAorICAgICAgICB0cmVlID0gWUFNTDo6bG9hZChmaWxlLnJlYWQoKSkKKyAgICAgICAgaGVh
cCA9IHRyZWUubWFwIHt8a2V5LCB2YWx1ZXwKKyAgICAgICAgICAgIEFic3RyYWN0SGVhcC5uZXco
a2V5LCB2YWx1ZSkKKyAgICAgICAgfS5maXJzdAorICAgICAgICBoZWFwLmNvbXB1dGUoMCkKKwor
ICAgICAgICBvdXRwdXQucHJpbnQoaGVhZGVyKQorICAgICAgICBvdXRwdXQucHV0cygiLyogRE9N
SklUIEFic3RyYWN0IEhlYXAgVHJlZS4iKQorICAgICAgICBoZWFwLmRlZXBEdW1wKG91dHB1dCwg
MCkKKyAgICAgICAgb3V0cHV0LnB1dHMoIiovIikKKyAgICAgICAgaGVhcC5nZW5lcmF0ZShvdXRw
dXQpCisgICAgICAgIG91dHB1dC5wcmludChmb290ZXIpCisgICAgfQorfQpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDQ3YmRh
YjQxNDhlMmViMmUwODQ0OWZkOGMyNzU5Y2M2ZGI4ZjNjZmEuLmFiN2I0NzI3YjVkMDcxNTc2NmI3
Zjg5OWJjMDYwOWQ5Y2Y3NmQzMTYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZwor
KysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMiBAQAorMjAxNi0xMS0wMSAg
WXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKworICAgICAgICBbRE9NSklU
XSBBZGQgRE9NSklUOjpTaWduYXR1cmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE2Mjk4MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICoganMvZG9tL2RvbWppdC1hY2Nlc3Nvci1saWNtLmh0bWw6CisgICAg
ICAgICoganMvZG9tL2RvbWppdC1mdW5jdGlvbi1lZmZlY3Qtc2hvdWxkLW92ZXJsYXAtd2l0aC1j
YWxsLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICoganMvZG9tL2RvbWppdC1mdW5jdGlv
bi1lZmZlY3Qtc2hvdWxkLW92ZXJsYXAtd2l0aC1jYWxsLmh0bWw6IEFkZGVkLgorICAgICAgICAq
IGpzL2RvbS9kb21qaXQtZnVuY3Rpb24tZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBq
cy9kb20vZG9taml0LWZ1bmN0aW9uLWxpY20tZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAg
KiBqcy9kb20vZG9taml0LWZ1bmN0aW9uLWxpY20uaHRtbDogQ29waWVkIGZyb20gTGF5b3V0VGVz
dHMvanMvZG9tL2RvbWppdC1hY2Nlc3Nvci1saWNtLmh0bWwuCisgICAgICAgICoganMvZG9tL2Rv
bWppdC1mdW5jdGlvbi10eXBlLWNvbnRyYWRpY3Rpb24tZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAg
ICAgICAgKiBqcy9kb20vZG9taml0LWZ1bmN0aW9uLXR5cGUtY29udHJhZGljdGlvbi5odG1sOiBD
b3BpZWQgZnJvbSBMYXlvdXRUZXN0cy9qcy9kb20vZG9taml0LWFjY2Vzc29yLWxpY20uaHRtbC4K
KyAgICAgICAgKiBqcy9kb20vZG9taml0LWZ1bmN0aW9uLXR5cGUtZmFpbHVyZS1leHBlY3RlZC50
eHQ6IEFkZGVkLgorICAgICAgICAqIGpzL2RvbS9kb21qaXQtZnVuY3Rpb24tdHlwZS1mYWlsdXJl
Lmh0bWw6IENvcGllZCBmcm9tIExheW91dFRlc3RzL2pzL2RvbS9kb21qaXQtYWNjZXNzb3ItbGlj
bS5odG1sLgorICAgICAgICAqIGpzL2RvbS9kb21qaXQtZnVuY3Rpb24uaHRtbDogQWRkZWQuCisK
IDIwMTYtMTEtMDEgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgogCiAgICAgICAg
IEluZGV4ZWREQiAyLjA6IFN1cHBvcnQgSURCSW5kZXggZ2V0QWxsL2dldEFsbEtleXMuCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9qcy9kb20vZG9taml0LWFjY2Vzc29yLWxpY20uaHRtbCBiL0xh
eW91dFRlc3RzL2pzL2RvbS9kb21qaXQtYWNjZXNzb3ItbGljbS5odG1sCmluZGV4IGU1NjNlYmE4
OWZmY2RhMjkxYjUyNGRjZGY3NTBlMmEzMDZhZTMyMDUuLjQwZDU1NjBkYTA1MzljYmYwODRhOWUx
ZDFlZjNmZTNmMWRjMzU0NGQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2pzL2RvbS9kb21qaXQt
YWNjZXNzb3ItbGljbS5odG1sCisrKyBiL0xheW91dFRlc3RzL2pzL2RvbS9kb21qaXQtYWNjZXNz
b3ItbGljbS5odG1sCkBAIC0xLDE0ICsxLDMgQEAKLTwhRE9DVFlQRSBIVE1MPgotPGh0bWwgbGFu
Zz0iZW4iPgotPGhlYWQ+Ci08bWV0YSBjaGFyc2V0PSJVVEYtOCI+Ci08L2hlYWQ+Ci08Ym9keT4K
LTxzY3JpcHQ+Ci0KLTwvc2NyaXB0PgotPC9ib2R5PgotPC9odG1sPgogPCFET0NUWVBFIGh0bWw+
CiA8aHRtbD4KIDxoZWFkPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvZG9tL2RvbWppdC1m
dW5jdGlvbi1lZmZlY3Qtc2hvdWxkLW92ZXJsYXAtd2l0aC1jYWxsLWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL2pzL2RvbS9kb21qaXQtZnVuY3Rpb24tZWZmZWN0LXNob3VsZC1vdmVybGFwLXdp
dGgtY2FsbC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTFkYzE5NmEzMmUyODhjMTJmNTE0NTYx
Y2ZjMjE0ZDI5ZWI5YzgxNwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2pzL2RvbS9k
b21qaXQtZnVuY3Rpb24tZWZmZWN0LXNob3VsZC1vdmVybGFwLXdpdGgtY2FsbC1leHBlY3RlZC50
eHQKQEAgLTAsMCArMSwxMCBAQAorVGVzdCBmdW5jdGlvbiBjYWxscyBzaG91bGQgb3ZlcmxhcCB3
aXRoIGVmZmVjdHMgb2YgRE9NSklUIGZ1bmN0aW9ucy4KKworT24gc3VjY2VzcywgeW91IHdpbGwg
c2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExF
VEUiLgorCisKK1BBU1MgdGVzdCgpIGlzIHRydWUKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlz
IHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9kb20v
ZG9taml0LWZ1bmN0aW9uLWVmZmVjdC1zaG91bGQtb3ZlcmxhcC13aXRoLWNhbGwuaHRtbCBiL0xh
eW91dFRlc3RzL2pzL2RvbS9kb21qaXQtZnVuY3Rpb24tZWZmZWN0LXNob3VsZC1vdmVybGFwLXdp
dGgtY2FsbC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI4Y2IzOTJiMjk0MWJiYjhkMzMxYTc5MzMxZDU4YzNm
YTU4MzA1ZTUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9qcy9kb20vZG9taml0LWZ1
bmN0aW9uLWVmZmVjdC1zaG91bGQtb3ZlcmxhcC13aXRoLWNhbGwuaHRtbApAQCAtMCwwICsxLDMz
IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
cmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRp
diBpZD0idGFyZ2V0Ij48L2Rpdj4KKzwvZGl2PgorCis8c2NyaXB0PgorZGVzY3JpcHRpb24oJ1Rl
c3QgZnVuY3Rpb24gY2FsbHMgc2hvdWxkIG92ZXJsYXAgd2l0aCBlZmZlY3RzIG9mIERPTUpJVCBm
dW5jdGlvbnMuJyk7CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIHZhciB0YXJnZXQgPSBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgndGFyZ2V0Jyk7CisgICAgdGFyZ2V0LnNldEF0dHJpYnV0ZSgi
Y29jb2EiLCAiMCIpOworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMWU0OyArK2kpIHsKKyAgICAg
ICAgdmFyIHJldCA9IHRhcmdldC5nZXRBdHRyaWJ1dGUoImNvY29hIik7CisgICAgICAgIGlmIChy
ZXQgIT09IFN0cmluZyhpKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgdGFy
Z2V0LnNldEF0dHJpYnV0ZSgiY29jb2EiLCBTdHJpbmcoaSArIDEpKTsKKyAgICAgICAgdmFyIHJl
dCA9IHRhcmdldC5nZXRBdHRyaWJ1dGUoImNvY29hIik7CisgICAgICAgIGlmIChyZXQgPT09IFN0
cmluZyhpKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgcmV0dXJuIHRy
dWU7Cit9CisKK3Nob3VsZEJlVHJ1ZShgdGVzdCgpYCk7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwv
aHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL2RvbS9kb21qaXQtZnVuY3Rpb24tZXhw
ZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvanMvZG9tL2RvbWppdC1mdW5jdGlvbi1leHBlY3RlZC50
eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNDVlNTZlYmRjZDlmNmYxODZjNDdjZTc2OGMxNWMyMjVlYmUyZDBjNwot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2pzL2RvbS9kb21qaXQtZnVuY3Rpb24tZXhw
ZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTAgQEAKK1Rlc3QgRE9NSklUIGZ1bmN0aW9ucyB3b3JrLgor
CitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBm
b2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBBbGwgdGVzdHMgcGFzc2VkLgor
UEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2pzL2RvbS9kb21qaXQtZnVuY3Rpb24tbGljbS1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy9qcy9kb20vZG9taml0LWZ1bmN0aW9uLWxpY20tZXhwZWN0ZWQudHh0
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmYxM2MwMzMwNTk2NjJlNTU4YmM2ZmI5ZDczOWFiMzdlNzk2MWM4ZmIKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9qcy9kb20vZG9taml0LWZ1bmN0aW9uLWxpY20t
ZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsOCBAQAorVGVzdCBET01KSVQgZnVuY3Rpb24gd2lsbCBi
ZSBMSUNNLWVkLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1Mi
IG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKK1BBU1Mgc3VjY2Vzc2Z1
bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9qcy9kb20vZG9taml0LWZ1bmN0aW9uLWxpY20uaHRtbCBiL0xheW91dFRlc3RzL2pzL2Rv
bS9kb21qaXQtZnVuY3Rpb24tbGljbS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjVmMmUzOTlkZDM1OWUxYzRm
Y2I0ZGZkZTJiYWNlOWUxYTBkNDRkMzkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9q
cy9kb20vZG9taml0LWZ1bmN0aW9uLWxpY20uaHRtbApAQCAtMCwwICsxLDM1IEBACis8IURPQ1RZ
UEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pz
LXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3Jp
cHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisKKzxkaXYgaWQ9InBhcmVu
dE5vZGUiPgorPGRpdiBpZD0icHJldmlvdXNTaWJsaW5nIj48L2Rpdj48ZGl2IGlkPSJ0YXJnZXQi
PjxkaXYgaWQ9ImZpcnN0Q2hpbGQiPjwvZGl2PjxkaXYgaWQ9Imxhc3RDaGlsZCI+PC9kaXY+PC9k
aXY+PGRpdiBpZD0ibmV4dFNpYmxpbmciPjwvZGl2PgorPC9kaXY+CisKKzxzY3JpcHQ+CitkZXNj
cmlwdGlvbignVGVzdCBET01KSVQgZnVuY3Rpb24gd2lsbCBiZSBMSUNNLWVkLicpOworCitmdW5j
dGlvbiB0ZXN0KCkgeworICAgIHZhciBkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYn
KTsKKyAgICB2YXIgcmV0ID0gImludmFsaWQiOworICAgIGRpdi5zZXRBdHRyaWJ1dGUoImNvY29h
IiwgIkNvY29hIik7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxZTQ7ICsraSkKKyAgICAgICAg
cmV0ID0gZGl2LmdldEF0dHJpYnV0ZSgiY29jb2EiKTsKKyAgICByZXR1cm4gcmV0OworfQordmFy
IHJlc3VsdDsKKyhmdW5jdGlvbiAoKSB7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxMDA7ICsr
aSkgeworICAgICAgICByZXN1bHQgPSB0ZXN0KCk7CisgICAgICAgIHNob3VsZEJlKGByZXN1bHRg
LCBgIkNvY29hImAsIHRydWUpOworICAgIH0KK30oKSk7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwv
aHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL2RvbS9kb21qaXQtZnVuY3Rpb24tdHlw
ZS1jb250cmFkaWN0aW9uLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2pzL2RvbS9kb21qaXQt
ZnVuY3Rpb24tdHlwZS1jb250cmFkaWN0aW9uLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zZDY4
NzdkNGE4MDA2ODhiMjE2NzdiZWZhZmZlZWZmZDhhYjBiNzk2Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvanMvZG9tL2RvbWppdC1mdW5jdGlvbi10eXBlLWNvbnRyYWRpY3Rpb24tZXhw
ZWN0ZWQudHh0CkBAIC0wLDAgKzEsOCBAQAorVGVzdCBET01KSVQgZnVuY3Rpb24gd2lsbCBjYXVz
ZSB0eXBlIGNvbnRyYWRpY3Rpb24gZ2l2aW5nIHVwLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBz
ZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVU
RSIuCisKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQor
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9kb20vZG9taml0LWZ1bmN0aW9uLXR5cGUtY29u
dHJhZGljdGlvbi5odG1sIGIvTGF5b3V0VGVzdHMvanMvZG9tL2RvbWppdC1mdW5jdGlvbi10eXBl
LWNvbnRyYWRpY3Rpb24uaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44NGRjNWI2NzY5NDE4ZTk2NTU1YmFiODM4
N2MzMDYwMzRhZjVjMGMwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMvZG9tL2Rv
bWppdC1mdW5jdGlvbi10eXBlLWNvbnRyYWRpY3Rpb24uaHRtbApAQCAtMCwwICsxLDM1IEBACis8
IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3Vy
Y2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0i
ZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisKKzxkaXYgaWQ9
InBhcmVudE5vZGUiPgorPGRpdiBpZD0icHJldmlvdXNTaWJsaW5nIj48L2Rpdj48ZGl2IGlkPSJ0
YXJnZXQiPjxkaXYgaWQ9ImZpcnN0Q2hpbGQiPjwvZGl2PjxkaXYgaWQ9Imxhc3RDaGlsZCI+PC9k
aXY+PC9kaXY+PGRpdiBpZD0ibmV4dFNpYmxpbmciPjwvZGl2PgorPC9kaXY+CisKKzxzY3JpcHQ+
CitkZXNjcmlwdGlvbignVGVzdCBET01KSVQgZnVuY3Rpb24gd2lsbCBjYXVzZSB0eXBlIGNvbnRy
YWRpY3Rpb24gZ2l2aW5nIHVwLicpOworCit2YXIgZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dCgnZGl2Jyk7CitkaXYuc2V0QXR0cmlidXRlKCJjb2NvYSIsICJDb2NvYSIpOworZnVuY3Rpb24g
dGVzdChkaXYpIHsKKyAgICB2YXIgcmV0ID0gImludmFsaWQiOworICAgIGZvciAodmFyIGkgPSAw
OyBpIDwgMWU0OyArK2kpCisgICAgICAgIHJldCA9IGRpdi5nZXRBdHRyaWJ1dGUoMjAwKTsKKyAg
ICByZXR1cm4gcmV0OworfQordmFyIHJlc3VsdDsKKyhmdW5jdGlvbiAoKSB7CisgICAgZm9yICh2
YXIgaSA9IDA7IGkgPCAxMDA7ICsraSkgeworICAgICAgICByZXN1bHQgPSB0ZXN0KGRpdik7Cisg
ICAgICAgIHNob3VsZEJlKGByZXN1bHRgLCBgbnVsbGAsIHRydWUpOworICAgIH0KK30oKSk7Cis8
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48
L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL2Rv
bS9kb21qaXQtZnVuY3Rpb24tdHlwZS1mYWlsdXJlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3Rz
L2pzL2RvbS9kb21qaXQtZnVuY3Rpb24tdHlwZS1mYWlsdXJlLWV4cGVjdGVkLnR4dApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4yYzEwMmIzNzZiZjgyMzJiNDJiZDFhM2NlNDFkZTE3NzFhMjdiNmM1Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvanMvZG9tL2RvbWppdC1mdW5jdGlvbi10eXBlLWZhaWx1cmUt
ZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsOCBAQAorVGVzdCBET01KSVQgZnVuY3Rpb24gd2lsbCBj
YXVzZSBCYWRUeXBlIE9TUiBleGl0cy4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2Vy
aWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCitQ
QVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvanMvZG9tL2RvbWppdC1mdW5jdGlvbi10eXBlLWZhaWx1cmUuaHRt
bCBiL0xheW91dFRlc3RzL2pzL2RvbS9kb21qaXQtZnVuY3Rpb24tdHlwZS1mYWlsdXJlLmh0bWwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNmI3NjYxNDE4N2VkYTg3ZGFjMjZjMjBhNmUzMTIyY2YwNjU0YTgxNgotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2pzL2RvbS9kb21qaXQtZnVuY3Rpb24tdHlwZS1m
YWlsdXJlLmh0bWwKQEAgLTAsMCArMSwzOSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxo
ZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3Jp
cHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYg
aWQ9ImNvbnNvbGUiPjwvZGl2PgorCis8ZGl2IGlkPSJwYXJlbnROb2RlIj4KKzxkaXYgaWQ9InBy
ZXZpb3VzU2libGluZyI+PC9kaXY+PGRpdiBpZD0idGFyZ2V0Ij48ZGl2IGlkPSJmaXJzdENoaWxk
Ij48L2Rpdj48ZGl2IGlkPSJsYXN0Q2hpbGQiPjwvZGl2PjwvZGl2PjxkaXYgaWQ9Im5leHRTaWJs
aW5nIj48L2Rpdj4KKzwvZGl2PgorCis8c2NyaXB0PgorZGVzY3JpcHRpb24oJ1Rlc3QgRE9NSklU
IGZ1bmN0aW9uIHdpbGwgY2F1c2UgQmFkVHlwZSBPU1IgZXhpdHMuJyk7CisKK3ZhciBkaXYgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKK2Rpdi5zZXRBdHRyaWJ1dGUoImNvY29hIiwg
IkNvY29hIik7CitmdW5jdGlvbiB0ZXN0KGRpdiwgbmFtZSkgeworICAgIHZhciByZXQgPSAiaW52
YWxpZCI7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxZTQ7ICsraSkKKyAgICAgICAgcmV0ID0g
ZGl2LmdldEF0dHJpYnV0ZShuYW1lKTsKKyAgICByZXR1cm4gcmV0OworfQordmFyIHJlc3VsdDsK
KyhmdW5jdGlvbiAoKSB7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxMDA7ICsraSkgeworICAg
ICAgICByZXN1bHQgPSB0ZXN0KGRpdiwgJ2NvY29hJyk7CisgICAgICAgIHNob3VsZEJlKGByZXN1
bHRgLCBgIkNvY29hImAsIHRydWUpOworICAgIH0KKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IDEw
MDsgKytpKSB7CisgICAgICAgIHJlc3VsdCA9IHRlc3QoZGl2LCA0MDApOworICAgICAgICBzaG91
bGRCZShgcmVzdWx0YCwgYG51bGxgLCB0cnVlKTsKKyAgICB9Cit9KCkpOworPC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8
L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9kb20vZG9taml0LWZ1
bmN0aW9uLmh0bWwgYi9MYXlvdXRUZXN0cy9qcy9kb20vZG9taml0LWZ1bmN0aW9uLmh0bWwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uOTFlYThhNTk5ZDg5NjVkZTVhMDNhODU0ZDQ5NDNkZTViOWFjM2Q2NAotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2pzL2RvbS9kb21qaXQtZnVuY3Rpb24uaHRtbApAQCAt
MCwwICsxLDU4IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxi
b2R5PgorPGRpdiBpZD0idGFyZ2V0IiBjb2NvYT0iY29jb2EiPjxkaXYgaWQ9ImZpcnN0Q2hpbGQi
PjwvZGl2PjxkaXYgaWQ9Imxhc3RDaGlsZCI+PC9kaXY+PC9kaXY+Cis8L2Rpdj4KKworPHNjcmlw
dD4KK2Rlc2NyaXB0aW9uKCdUZXN0IERPTUpJVCBmdW5jdGlvbnMgd29yay4nKTsKK3ZhciBkaXY7
CisoZnVuY3Rpb24gKCkgeworICAgIGRpdiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0YXJn
ZXQnKTsKKworICAgIGZ1bmN0aW9uIGEoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGRpdi5nZXRB
dHRyaWJ1dGUoJ2NvY29hJykgPT09ICdjb2NvYSc7CisgICAgfQorCisgICAgZnVuY3Rpb24gYigp
CisgICAgeworICAgICAgICByZXR1cm4gZGl2LmdldEF0dHJpYnV0ZU5vZGUoJ2NvY29hJykubm9k
ZVR5cGUgPT09IE5vZGUuQVRUUklCVVRFX05PREU7CisgICAgfQorCisgICAgZnVuY3Rpb24gYygp
CisgICAgeworICAgICAgICByZXR1cm4gZGl2LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdkaXYnKS5s
ZW5ndGggPT09IDI7CisgICAgfQorCisgICAgZnVuY3Rpb24gZCgpCisgICAgeworICAgICAgICBy
ZXR1cm4gZGl2Lmhhc0F0dHJpYnV0ZSgnY29jb2EnKSA9PT0gdHJ1ZTsKKyAgICB9CisKKyAgICBm
dW5jdGlvbiBtYWluKCkKKyAgICB7CisgICAgICAgIGlmICghYSgpKQorICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgICAgICBpZiAoIWIoKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICAgICAgaWYgKCFjKCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIGlm
ICghZCgpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm4gdHJ1ZTsK
KyAgICB9CisKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IDFlNDsgKytpKSB7CisgICAgICAgIGlm
ICghbWFpbigpKQorICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJlcnJvciIpOworICAgIH0K
KyAgICB0ZXN0UGFzc2VkKCJBbGwgdGVzdHMgcGFzc2VkLiIpOworfSgpKTsKKzwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0Pgor
PC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>293644</attachid>
            <date>2016-11-01 23:50:54 -0700</date>
            <delta_ts>2016-11-02 00:37:19 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-162980-20161102154655.patch</filename>
            <type>text/plain</type>
            <size>178208</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA4MjcwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBk
ZWFmOGMwYmI4YTZkOGM5ZjEwYmE4MDllY2VmZTJkOWI0MDE2ZDljLi5hODNiMzliYjg0YTAzNzQ3
NmUxZjc1YTE2MTdlMzU2NjcwNmRjNzRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMzQgQEAKKzIwMTYtMTEtMDEgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFp
bC5jb20+CisKKyAgICAgICAgW0RPTUpJVF0gQWRkIERPTUpJVDo6U2lnbmF0dXJlCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjI5ODAKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGludHJv
ZHVjZXMgYSBuZXcgbWVjaGFuaXNtIGNhbGxlZCBET01KSVQ6OlNpZ25hdHVyZS4gV2UgY2FuIGFu
bm90YXRlIHRoZSBmdW5jdGlvbiB3aXRoIERPTUpJVDo6U2lnbmF0dXJlLgorICAgICAgICBET01K
SVQ6OlNpZ25hdHVyZSBoYXMgdHlwZSBpbmZvcm1hdGlvbiBvZiB0aGF0IGZ1bmN0aW9uLiBBbmQg
aXQgYWxzbyBtYWludGFpbnMgdGhlIGVmZmVjdCBvZiB0aGUgZnVuY3Rpb24gYW5kIHRoZQorICAg
ICAgICBwb2ludGVyIHRvIHRoZSB1bnNhZmUgZnVuY3Rpb24uIFRoZSB1bnNhZmUgZnVuY3Rpb24g
bWVhbnMgdGhlIGZ1bmN0aW9uIHdpdGhvdXQgdHlwZSBhbmQgYXJndW1lbnQgY291bnQgY2hlY2tz
LgorICAgICAgICBCeSB1c2luZyB0aGVzZSBpbmZvcm1hdGlvbiwgd2UgY2FuIHNlcGFyYXRlIHR5
cGUgYW5kIGFyZ3VtZW50IGNvdW50IGNoZWNrcyBmcm9tIHRoZSBmdW5jdGlvbi4gQW5kIHdlIGNh
biBlbWl0CisgICAgICAgIHRoZXNlIHRoaW5ncyBhcyBERkcgY2hlY2tzIGFuZCBjb252ZXJ0IHRo
ZSBmdW5jdGlvbiBjYWxsIGl0c2VsZiB0byBDYWxsRE9NIG5vZGUuIENhbGxET00gbm9kZSBjYW4g
Y2FsbCB0aGUgdW5zYWZlCisgICAgICAgIGZ1bmN0aW9uIGRpcmVjdGx5IHdpdGhvdXQgYW55IGNo
ZWNrcy4gRnVydGhlcm1vcmUsIHRoaXMgQ2FsbERPTSBub2RlIGNhbiByZXByZXNlbnQgaXRzIG93
biBjbG9iYmVyaXppbmcgcnVsZXMgYmFzZWQKKyAgICAgICAgb24gRE9NSklUOjpFZmZlY3QgbWFp
bnRhaW5lZCBieSBET01KSVQ6OlNpZ25hdHVyZS4gSXQgYWxsb3dzIHVzIHRvIG1ha2Ugb3BhcXVl
IENhbGwgbm9kZSB0byBhIENhbGxET00gbm9kZSB0aGF0CisgICAgICAgIG1lcmVseSByZWFkcyBz
b21lIHBhcnQgb2YgaGVhcC4gVGhlc2UgY2hhbmdlcyAoMSkgY2FuIGRyb3AgZHVwbGljYXRlIHR5
cGUgY2hlY2tzIGluIERGRywgKDIpIG9mZmVyIGFiaWxpdHkgdG8gbW92ZQorICAgICAgICBDYWxs
RE9NIG5vZGUgdG8gc29tZXdoZXJlLCBhbmQgKDMpIHRyYWNrIG1vcmUgZGV0YWlsZWQgaGVhcCBy
ZWFkcyBhbmQgd3JpdGVzIG9mIENhbGxET00gbm9kZXMuCisKKyAgICAgICAgV2UgZmlyc3QgZW1p
dCBDYWxsIG5vZGUgd2l0aCBET01KSVQ6OlNpZ25hdHVyZSBpbiBERkdCeXRlQ29kZVBhcnNlci4g
QW5kIGluIHRoZSBmaXh1cCBwaGFzZSwgd2UgYXR0ZW1wdCB0byBsb3dlcgorICAgICAgICBDYWxs
IG5vZGUgdG8gQ2FsbERPTSBub2RlIHdpdGggY2hlY2tzICYgZWRnZSBmaWx0ZXJzLiBUaGlzIGlz
IGJlY2F1c2Ugd2UgZG8gbm90IGtub3cgdGhlIHR5cGUgcHJlZGljdGlvbnMgaW4KKyAgICAgICAg
REZHQnl0ZUNvZGVQYXJzZXIgcGhhc2UuIElmIHdlIGFsd2F5cyBlbWl0IENhbGxET00gbm9kZSBp
biBERkdCeXRlQ29kZVBhcnNlciwgaWYgd2UgZXZhbHVhdGUgYGRpdi5nZXRBdHRyaWJ1dGUodHJ1
ZSlgCisgICAgICAgIHRoaW5neSwgdGhlIFVuY291bnRhYmxlIE9TUiBleGl0cyByZXBlYXRlZGx5
IGhhcHBlbiBiZWNhdXNlIEFJIGZpZ3VyZXMgb3V0IHRoZSBhYnN0cmFjdCB2YWx1ZSBpcyBjbGVh
cmVkLgorCisgICAgICAgIEN1cnJlbnRseSwgRE9NSklUIHNpZ25hdHVyZSBvbmx5IGFsbG93cyB0
aGUgdHlwZXMgdGhhdCBjYW4gcmVzaWRlIGluIEdQUi4gVGhpcyBpcyBiZWNhdXNlIHRoZSB0eXBl
cyBvZiB0aGUgdW5zYWZlCisgICAgICAgIGZ1bmN0aW9uIGFyZ3VtZW50cyBhcmUgcmVwcmVzZW50
ZWQgYXMgdGhlIHNlcXVlbmNlIG9mIHZvaWQqLiBJbiB0aGUgZnV0dXJlLCB3ZSB3aWxsIGV4dGVu
ZCB0byBhY2NlcHQgb3RoZXIgdHlwZXMgbGlrZQorICAgICAgICBmbG9hdCwgZG91YmxlIGV0Yy4K
KworICAgICAgICBXZSBhbm5vdGF0ZSBzZXZlcmFsIGZ1bmN0aW9ucyBpbiBFbGVtZW50LiBJbiBw
YXJ0aWN1bGFyLCB3ZSBhbm5vdGF0ZSBFbGVtZW50OjpnZXRBdHRyaWJ1dGUuIFRoaXMgYWxsb3dz
IHVzIHRvIHBlcmZvcm0KKyAgICAgICAgTElDTSBpbiBEcm9tYWVvIGRvbS1hdHRyIHRlc3QuIElu
IHRoZSBEcm9tYWVvIGRvbS1hdHRyIGdldEF0dHJpYnV0ZSB0ZXN0LCB3ZSBjYW4gc2VlIDMyeCBp
bXByb3ZlbWVudC4gKDEzNDk3NC44IHYucy4gNDIwMy40KQorCisgICAgICAgICogSmF2YVNjcmlw
dENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBieXRlY29kZS9DYWxs
VmFyaWFudC5oOgorICAgICAgICAoSlNDOjpDYWxsVmFyaWFudDo6ZnVuY3Rpb25FeGVjdXRhYmxl
KToKKyAgICAgICAgKEpTQzo6Q2FsbFZhcmlhbnQ6Om5hdGl2ZUV4ZWN1dGFibGUpOgorICAgICAg
ICAoSlNDOjpDYWxsVmFyaWFudDo6c2lnbmF0dXJlRm9yKToKKyAgICAgICAgKiBieXRlY29kZS9T
cGVjdWxhdGVkVHlwZS5oOgorICAgICAgICAoSlNDOjppc05vdFN0cmluZ1NwZWN1bGF0aW9uKToK
KyAgICAgICAgKEpTQzo6aXNOb3RJbnQzMlNwZWN1bGF0aW9uKToKKyAgICAgICAgKEpTQzo6aXNO
b3RCb29sZWFuU3BlY3VsYXRpb24pOgorICAgICAgICAqIGRmZy9ERkdBYnN0cmFjdEludGVycHJl
dGVySW5saW5lcy5oOgorICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0SW50ZXJwcmV0ZXI8QWJz
dHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyk6CisgICAgICAgICogZGZnL0RGR0J5dGVD
b2RlUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6YWRkQ2Fs
bCk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUNhbGwpOgorICAg
ICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjphdHRlbXB0VG9JbmxpbmVDYWxsKToKKyAg
ICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW5saW5pbmcpOgorICAgICAg
ICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVET01KSVRDYWxsKToKKyAgICAgICAg
KEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayk6CisgICAgICAgICogZGZnL0RG
R0Nsb2JiZXJpemUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpjbG9iYmVyaXplKToKKyAgICAgICAg
KiBkZmcvREZHRG9lc0dDLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpkb2VzR0MpOgorICAgICAg
ICAqIGRmZy9ERkdGaXh1cFBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpGaXh1cFBoYXNl
OjpmaXh1cE5vZGUpOgorICAgICAgICAoSlNDOjpERkc6OkZpeHVwUGhhc2U6OmF0dGVtcHRUb01h
a2VDYWxsRE9NKToKKyAgICAgICAgKEpTQzo6REZHOjpGaXh1cFBoYXNlOjpmaXh1cENoZWNrRE9N
KToKKyAgICAgICAgKEpTQzo6REZHOjpGaXh1cFBoYXNlOjpmaXh1cENhbGxET00pOgorICAgICAg
ICAqIGRmZy9ERkdOb2RlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpjb252ZXJ0VG9D
YWxsRE9NKToKKyAgICAgICAgKiBkZmcvREZHTm9kZS5oOgorICAgICAgICAoSlNDOjpERkc6Ok5v
ZGU6Omhhc0hlYXBQcmVkaWN0aW9uKToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpzaG91bGRT
cGVjdWxhdGVOb3RJbnQzMik6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6c2hvdWxkU3BlY3Vs
YXRlTm90Qm9vbGVhbik6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6c2hvdWxkU3BlY3VsYXRl
Tm90U3RyaW5nKToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpoYXNTaWduYXR1cmUpOgorICAg
ICAgICAoSlNDOjpERkc6Ok5vZGU6OnNpZ25hdHVyZSk6CisgICAgICAgICogZGZnL0RGR05vZGVU
eXBlLmg6CisgICAgICAgICogZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcDoK
KyAgICAgICAgKiBkZmcvREZHU2FmZVRvRXhlY3V0ZS5oOgorICAgICAgICAoSlNDOjpERkc6OnNh
ZmVUb0V4ZWN1dGUpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHA6CisgICAg
ICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVDYWxsRE9NKToKKyAgICAgICAg
KiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuaDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2
ZUpJVDo6Y2FsbE9wZXJhdGlvbik6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJf
NjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToKKyAg
ICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGRvbWppdC9ET01KSVRFZmZlY3Qu
aDoKKyAgICAgICAgKEpTQzo6RE9NSklUOjpFZmZlY3Q6OkVmZmVjdCk6CisgICAgICAgIChKU0M6
OkRPTUpJVDo6RWZmZWN0Ojpmb3JXcml0ZSk6CisgICAgICAgIChKU0M6OkRPTUpJVDo6RWZmZWN0
Ojpmb3JSZWFkKToKKyAgICAgICAgKEpTQzo6RE9NSklUOjpFZmZlY3Q6OmZvclJlYWRXcml0ZSk6
CisgICAgICAgIChKU0M6OkRPTUpJVDo6RWZmZWN0Ojpmb3JQdXJlKToKKyAgICAgICAgKEpTQzo6
RE9NSklUOjpFZmZlY3Q6OmZvckRlZik6CisgICAgICAgIChKU0M6OkRPTUpJVDo6RWZmZWN0Ojpt
dXN0R2VuZXJhdGUpOgorICAgICAgICBJbiBjbGFuZywgd2UgY2Fubm90IG1ha2UgdGhpcyBFZmZl
Y3QgY29uc3RydWN0b3IgY29uc3RleHByIGlmIHdlIHVzZSBPcHRpb25hbDxIZWFwUmFuZ2U+Lgor
ICAgICAgICBTbyB3ZSB1c2UgSGVhcFJhbmdlOjp0b3AoKSBmb3IgTnVsbG9wdCBkZWYgbm93Lgor
CisgICAgICAgICogZG9taml0L0RPTUpJVEhlYXBSYW5nZS5oOgorICAgICAgICAoSlNDOjpET01K
SVQ6OkhlYXBSYW5nZTo6ZnJvbVJhdyk6CisgICAgICAgIChKU0M6OkRPTUpJVDo6SGVhcFJhbmdl
OjpvcGVyYXRvciBib29sKToKKyAgICAgICAgKEpTQzo6RE9NSklUOjpIZWFwUmFuZ2U6Om9wZXJh
dG9yPT0pOgorICAgICAgICAoSlNDOjpET01KSVQ6OkhlYXBSYW5nZTo6b3BlcmF0b3IhPSk6Cisg
ICAgICAgIChKU0M6OkRPTUpJVDo6SGVhcFJhbmdlOjpmcm9tQ29uc3RhbnQpOgorICAgICAgICAq
IGRvbWppdC9ET01KSVRTaWduYXR1cmUuaDogQ29waWVkIGZyb20gU291cmNlL0phdmFTY3JpcHRD
b3JlL2RvbWppdC9ET01KSVRFZmZlY3QuaC4KKyAgICAgICAgKEpTQzo6RE9NSklUOjpTaWduYXR1
cmU6OlNpZ25hdHVyZSk6CisgICAgICAgIChKU0M6OkRPTUpJVDo6U2lnbmF0dXJlOjphcmd1bWVu
dENvdW50KToKKyAgICAgICAgKEpTQzo6RE9NSklUOjpTaWduYXR1cmU6OmNoZWNrRE9NKToKKyAg
ICAgICAgKiBmdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpjYW5D
b21waWxlKToKKyAgICAgICAgKiBmdGwvRlRMTG93ZXJERkdUb0IzLmNwcDoKKyAgICAgICAgKEpT
Qzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZU5vZGUpOgorICAgICAgICAoSlNDOjpG
VEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlQ2FsbERPTSk6CisgICAgICAgICogaml0L0pJ
VE9wZXJhdGlvbnMuaDoKKyAgICAgICAgKiBqaXQvSklUVGh1bmtzLmNwcDoKKyAgICAgICAgKEpT
Qzo6SklUVGh1bmtzOjpob3N0RnVuY3Rpb25TdHViKToKKyAgICAgICAgKiBqaXQvSklUVGh1bmtz
Lmg6CisgICAgICAgICogcnVudGltZS9KU0JvdW5kRnVuY3Rpb24uY3BwOgorICAgICAgICAoSlND
OjpKU0JvdW5kRnVuY3Rpb246OmNyZWF0ZSk6CisgICAgICAgICogcnVudGltZS9KU0NlbGwuaDoK
KyAgICAgICAgKiBydW50aW1lL0pTRnVuY3Rpb24uY3BwOgorICAgICAgICAoSlNDOjpKU0Z1bmN0
aW9uOjpjcmVhdGUpOgorICAgICAgICAqIHJ1bnRpbWUvSlNGdW5jdGlvbi5oOgorICAgICAgICAq
IHJ1bnRpbWUvSlNOYXRpdmVTdGRGdW5jdGlvbi5jcHA6CisgICAgICAgIChKU0M6OkpTTmF0aXZl
U3RkRnVuY3Rpb246OmNyZWF0ZSk6CisgICAgICAgICogcnVudGltZS9KU09iamVjdC5jcHA6Cisg
ICAgICAgIChKU0M6OkpTT2JqZWN0OjpwdXREaXJlY3ROYXRpdmVGdW5jdGlvbik6CisgICAgICAg
ICogcnVudGltZS9KU09iamVjdC5oOgorICAgICAgICAqIHJ1bnRpbWUvTG9va3VwLmg6CisgICAg
ICAgIChKU0M6Okhhc2hUYWJsZVZhbHVlOjpmdW5jdGlvbkxlbmd0aCk6CisgICAgICAgIChKU0M6
Okhhc2hUYWJsZVZhbHVlOjpzaWduYXR1cmUpOgorICAgICAgICAoSlNDOjpyZWlmeVN0YXRpY1By
b3BlcnR5KToKKyAgICAgICAgKiBydW50aW1lL05hdGl2ZUV4ZWN1dGFibGUuY3BwOgorICAgICAg
ICAoSlNDOjpOYXRpdmVFeGVjdXRhYmxlOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpOYXRpdmVF
eGVjdXRhYmxlOjpOYXRpdmVFeGVjdXRhYmxlKToKKyAgICAgICAgKiBydW50aW1lL05hdGl2ZUV4
ZWN1dGFibGUuaDoKKyAgICAgICAgKiBydW50aW1lL1Byb3BlcnR5U2xvdC5oOgorICAgICAgICAq
IHJ1bnRpbWUvVk0uY3BwOgorICAgICAgICAoSlNDOjpWTTo6Z2V0SG9zdEZ1bmN0aW9uKToKKyAg
ICAgICAgKiBydW50aW1lL1ZNLmg6CisKIDIwMTYtMTEtMDEgIFJ5b3N1a2UgTml3YSAgPHJuaXdh
QHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmVtb3ZlIENVU1RPTV9FTEVNRU5UUyBidWlsZCBmbGFn
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cKaW5kZXggOWFlZGU3NjM2MWNkNDU1YjAxNzBkMjIxOTVjNDkyNWNiZGU1NDNiMC4u
NTU1OTQxNDYzNGZkMmU4NzUyZjM3Mjg5NGY0YWI4ZGVhM2YxNzA3OSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDk4IEBACisyMDE2LTExLTAxICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21h
aWwuY29tPgorCisgICAgICAgIFtET01KSVRdIEFkZCBET01KSVQ6OlNpZ25hdHVyZQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYyOTgwCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2UgaW50cm9kdWNlIERP
TUpJVDo6U2lnbmF0dXJlLiBUaGlzIHNpZ25hdHVyZSBvYmplY3QgaXMgYXV0b21hdGljYWxseSBn
ZW5lcmF0ZWQgYnkgSURMIGNvZGUgZ2VuZXJhdG9yLgorICAgICAgICBJdCBob2xkcyAoMSkgdHlw
ZXMsICgyKSBwb2ludGVyIHRvIHRoZSB1bnNhZmUgZnVuY3Rpb24gKHRoZSBmdW5jdGlvbiB3aXRo
b3V0IGNoZWNrcyksIGFuZCAoMykgdGhlIGVmZmVjdAorICAgICAgICBvZiB0aGUgZnVuY3Rpb24u
IFdlIHVzZSBjb25zdGV4cHIgdG8gaW5pdGlhbGl6ZSBET01KSVQ6OlNpZ25hdHVyZSB3aXRob3V0
IGludm9raW5nIGdsb2JhbCBjb25zdHJ1Y3RvcnMuCisgICAgICAgIFRodXMgdGhlIGNvbnRlbnQg
aXMgZW1iZWRkZWQgaW50byB0aGUgYmluYXJ5IGFzIHRoZSBjb25zdGFudCB2YWx1ZXMuCisKKyAg
ICAgICAgV2UgYWxzbyBjbGVhbiB1cCB0aGUgSURMIGNvZGUgZ2VuZXJhdG9yIHJlbGF0ZWQgdG8g
RE9NSklUIHBhcnQuIEluc3RlYWQgb2Ygc3dpdGNoaW5nIHRoaW5ncyBpbnNpZGUgSURMCisgICAg
ICAgIGNvZGUgZ2VuZXJhdG9yLCB3ZSB1c2UgQysrIHRlbXBsYXRlIHRvIGRpc3BhdGNoIHRoaW5n
cyBhdCBjb21waWxlIHRpbWUuIFRoaXMgdGVtcGxhdGUgbWV0YSBwcm9ncmFtbWluZworICAgICAg
ICBpcyBoaWdobHkgdXRpbGl6ZWQgaW4gSURMIHRoZXNlIGRheXMuCisKKyAgICAgICAgVG8gbWFr
ZSBET01KSVQ6OlNpZ25hdHVyZSBjb25zdGV4cHIsIHdlIGFsc28gbmVlZCB0byBkZWZpbmUgRE9N
SklUIGFic3RyYWN0IGhlYXAgdGhpbmdzIGluIHRoZSBidWlsZCB0aW1lLgorICAgICAgICBUbyBk
byBzbywgd2UgaW50cm9kdWNlIGEgdGlueSBSdWJ5IHNjcmlwdCB0byBjYWxjdWxhdGUgdGhlIHJh
bmdlIG9mIGFic3RyYWN0IGhlYXBzLiBXZSBjYW4gb2ZmZXIgdGhlIGFic3RyYWN0CisgICAgICAg
IGhlYXAgdHJlZSBhcyBZQU1MIGZvcm1hdCBhbmQgdGhlIHNjcmlwdCB3aWxsIHByb2R1Y2UgYSBD
KysgaGVhZGVyIGhvbGRpbmcgdGhlIGNhbGN1bGF0ZWQgYWJzdHJhY3QgaGVhcCByYW5nZXMKKwor
ICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLm1ha2U6
CisgICAgICAgICogRm9yd2FyZGluZ0hlYWRlcnMvYnl0ZWNvZGUvU3BlY3VsYXRlZFR5cGUuaDog
UmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL2RvbWppdC9ET01KSVRBYnN0cmFjdEhlYXBSZXBv
c2l0b3J5LmguCisgICAgICAgICogRm9yd2FyZGluZ0hlYWRlcnMvZG9taml0L0RPTUpJVFNpZ25h
dHVyZS5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvZG9taml0L0RPTUpJVEFic3RyYWN0
SGVhcFJlcG9zaXRvcnkuY3BwLgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvajoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5oOgorICAg
ICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtOgorICAgICAgICAoR2Vu
ZXJhdGVIZWFkZXIpOgorICAgICAgICAoR2VuZXJhdGVQcm9wZXJ0aWVzSGFzaFRhYmxlKToKKyAg
ICAgICAgKEdldFVuc2FmZUFyZ3VtZW50VHlwZSk6CisgICAgICAgIChHZXRBcmd1bWVudFR5cGVG
aWx0ZXIpOgorICAgICAgICAoR2V0UmVzdWx0VHlwZUZpbHRlcik6CisgICAgICAgIChHZW5lcmF0
ZUltcGxlbWVudGF0aW9uKToKKyAgICAgICAgKFVuc2FmZVRvTmF0aXZlKToKKyAgICAgICAgKEdl
bmVyYXRlSGFzaFRhYmxlVmFsdWVBcnJheSk6CisgICAgICAgIChDb21wdXRlRnVuY3Rpb25TcGVj
aWFsKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0lETEF0dHJpYnV0ZXMudHh0OgorICAg
ICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RET01KSVQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6QmluZGluZ0NhbGxlcjxKU1Rlc3RET01KSVQ+OjpjYXN0Rm9yT3BlcmF0aW9u
KToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RET01KSVRBbnlBdHRyRE9NSklUOjpUZXN0RE9NSklU
QW55QXR0ckRPTUpJVCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0RE9NSklUQm9vbGVhbkF0dHJE
T01KSVQ6OlRlc3RET01KSVRCb29sZWFuQXR0ckRPTUpJVCk6CisgICAgICAgIChXZWJDb3JlOjpU
ZXN0RE9NSklUQnl0ZUF0dHJET01KSVQ6OlRlc3RET01KSVRCeXRlQXR0ckRPTUpJVCk6CisgICAg
ICAgIChXZWJDb3JlOjpUZXN0RE9NSklUT2N0ZXRBdHRyRE9NSklUOjpUZXN0RE9NSklUT2N0ZXRB
dHRyRE9NSklUKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RET01KSVRTaG9ydEF0dHJET01KSVQ6
OlRlc3RET01KSVRTaG9ydEF0dHJET01KSVQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdERPTUpJ
VFVuc2lnbmVkU2hvcnRBdHRyRE9NSklUOjpUZXN0RE9NSklUVW5zaWduZWRTaG9ydEF0dHJET01K
SVQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdERPTUpJVExvbmdBdHRyRE9NSklUOjpUZXN0RE9N
SklUTG9uZ0F0dHJET01KSVQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdERPTUpJVFVuc2lnbmVk
TG9uZ0F0dHJET01KSVQ6OlRlc3RET01KSVRVbnNpZ25lZExvbmdBdHRyRE9NSklUKToKKyAgICAg
ICAgKFdlYkNvcmU6OlRlc3RET01KSVRMb25nTG9uZ0F0dHJET01KSVQ6OlRlc3RET01KSVRMb25n
TG9uZ0F0dHJET01KSVQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdERPTUpJVFVuc2lnbmVkTG9u
Z0xvbmdBdHRyRE9NSklUOjpUZXN0RE9NSklUVW5zaWduZWRMb25nTG9uZ0F0dHJET01KSVQpOgor
ICAgICAgICAoV2ViQ29yZTo6VGVzdERPTUpJVEZsb2F0QXR0ckRPTUpJVDo6VGVzdERPTUpJVEZs
b2F0QXR0ckRPTUpJVCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0RE9NSklUVW5yZXN0cmljdGVk
RmxvYXRBdHRyRE9NSklUOjpUZXN0RE9NSklUVW5yZXN0cmljdGVkRmxvYXRBdHRyRE9NSklUKToK
KyAgICAgICAgKFdlYkNvcmU6OlRlc3RET01KSVREb3VibGVBdHRyRE9NSklUOjpUZXN0RE9NSklU
RG91YmxlQXR0ckRPTUpJVCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0RE9NSklUVW5yZXN0cmlj
dGVkRG91YmxlQXR0ckRPTUpJVDo6VGVzdERPTUpJVFVucmVzdHJpY3RlZERvdWJsZUF0dHJET01K
SVQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdERPTUpJVERvbVN0cmluZ0F0dHJET01KSVQ6OlRl
c3RET01KSVREb21TdHJpbmdBdHRyRE9NSklUKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RET01K
SVRCeXRlU3RyaW5nQXR0ckRPTUpJVDo6VGVzdERPTUpJVEJ5dGVTdHJpbmdBdHRyRE9NSklUKToK
KyAgICAgICAgKFdlYkNvcmU6OlRlc3RET01KSVRVc3ZTdHJpbmdBdHRyRE9NSklUOjpUZXN0RE9N
SklUVXN2U3RyaW5nQXR0ckRPTUpJVCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0RE9NSklUTm9k
ZUF0dHJET01KSVQ6OlRlc3RET01KSVROb2RlQXR0ckRPTUpJVCk6CisgICAgICAgIChXZWJDb3Jl
OjpUZXN0RE9NSklUQm9vbGVhbk51bGxhYmxlQXR0ckRPTUpJVDo6VGVzdERPTUpJVEJvb2xlYW5O
dWxsYWJsZUF0dHJET01KSVQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdERPTUpJVEJ5dGVOdWxs
YWJsZUF0dHJET01KSVQ6OlRlc3RET01KSVRCeXRlTnVsbGFibGVBdHRyRE9NSklUKToKKyAgICAg
ICAgKFdlYkNvcmU6OlRlc3RET01KSVRPY3RldE51bGxhYmxlQXR0ckRPTUpJVDo6VGVzdERPTUpJ
VE9jdGV0TnVsbGFibGVBdHRyRE9NSklUKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RET01KSVRT
aG9ydE51bGxhYmxlQXR0ckRPTUpJVDo6VGVzdERPTUpJVFNob3J0TnVsbGFibGVBdHRyRE9NSklU
KToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RET01KSVRVbnNpZ25lZFNob3J0TnVsbGFibGVBdHRy
RE9NSklUOjpUZXN0RE9NSklUVW5zaWduZWRTaG9ydE51bGxhYmxlQXR0ckRPTUpJVCk6CisgICAg
ICAgIChXZWJDb3JlOjpUZXN0RE9NSklUTG9uZ051bGxhYmxlQXR0ckRPTUpJVDo6VGVzdERPTUpJ
VExvbmdOdWxsYWJsZUF0dHJET01KSVQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdERPTUpJVFVu
c2lnbmVkTG9uZ051bGxhYmxlQXR0ckRPTUpJVDo6VGVzdERPTUpJVFVuc2lnbmVkTG9uZ051bGxh
YmxlQXR0ckRPTUpJVCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0RE9NSklUTG9uZ0xvbmdOdWxs
YWJsZUF0dHJET01KSVQ6OlRlc3RET01KSVRMb25nTG9uZ051bGxhYmxlQXR0ckRPTUpJVCk6Cisg
ICAgICAgIChXZWJDb3JlOjpUZXN0RE9NSklUVW5zaWduZWRMb25nTG9uZ051bGxhYmxlQXR0ckRP
TUpJVDo6VGVzdERPTUpJVFVuc2lnbmVkTG9uZ0xvbmdOdWxsYWJsZUF0dHJET01KSVQpOgorICAg
ICAgICAoV2ViQ29yZTo6VGVzdERPTUpJVEZsb2F0TnVsbGFibGVBdHRyRE9NSklUOjpUZXN0RE9N
SklURmxvYXROdWxsYWJsZUF0dHJET01KSVQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdERPTUpJ
VFVucmVzdHJpY3RlZEZsb2F0TnVsbGFibGVBdHRyRE9NSklUOjpUZXN0RE9NSklUVW5yZXN0cmlj
dGVkRmxvYXROdWxsYWJsZUF0dHJET01KSVQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdERPTUpJ
VERvdWJsZU51bGxhYmxlQXR0ckRPTUpJVDo6VGVzdERPTUpJVERvdWJsZU51bGxhYmxlQXR0ckRP
TUpJVCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0RE9NSklUVW5yZXN0cmljdGVkRG91YmxlTnVs
bGFibGVBdHRyRE9NSklUOjpUZXN0RE9NSklUVW5yZXN0cmljdGVkRG91YmxlTnVsbGFibGVBdHRy
RE9NSklUKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RET01KSVREb21TdHJpbmdOdWxsYWJsZUF0
dHJET01KSVQ6OlRlc3RET01KSVREb21TdHJpbmdOdWxsYWJsZUF0dHJET01KSVQpOgorICAgICAg
ICAoV2ViQ29yZTo6VGVzdERPTUpJVEJ5dGVTdHJpbmdOdWxsYWJsZUF0dHJET01KSVQ6OlRlc3RE
T01KSVRCeXRlU3RyaW5nTnVsbGFibGVBdHRyRE9NSklUKToKKyAgICAgICAgKFdlYkNvcmU6OlRl
c3RET01KSVRVc3ZTdHJpbmdOdWxsYWJsZUF0dHJET01KSVQ6OlRlc3RET01KSVRVc3ZTdHJpbmdO
dWxsYWJsZUF0dHJET01KSVQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdERPTUpJVE5vZGVOdWxs
YWJsZUF0dHJET01KSVQ6OlRlc3RET01KSVROb2RlTnVsbGFibGVBdHRyRE9NSklUKToKKyAgICAg
ICAgKFdlYkNvcmU6OmpzVGVzdERPTUpJVFByb3RvdHlwZUZ1bmN0aW9uR2V0QXR0cmlidXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdERPTUpJVFByb3RvdHlwZUZ1bmN0aW9uR2V0QXR0cmli
dXRlQ2FsbGVyKToKKyAgICAgICAgKFdlYkNvcmU6OnVuc2FmZUpzVGVzdERPTUpJVFByb3RvdHlw
ZUZ1bmN0aW9uR2V0QXR0cmlidXRlKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
VGVzdERPTUpJVC5pZGw6CisgICAgICAgICogZG9tL0VsZW1lbnQuaWRsOgorICAgICAgICAqIGRv
bWppdC9ET01KSVRBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LnlhbWw6IEFkZGVkLgorICAgICAgICAq
IGRvbWppdC9ET01KSVRJRExDb252ZXJ0Lmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6RE9N
SklUOjpEaXJlY3RDb252ZXJ0ZXI8SURMRE9NU3RyaW5nPjo6ZGlyZWN0Q29udmVydDxTdHJpbmdD
b252ZXJzaW9uQ29uZmlndXJhdGlvbjo6Tm9ybWFsPik6CisgICAgICAgICogZG9taml0L0RPTUpJ
VElETFR5cGUuaDogQWRkZWQuCisgICAgICAgICogZG9taml0L0RPTUpJVElETFR5cGVGaWx0ZXIu
aDogQWRkZWQuCisgICAgICAgICogZG9taml0L0pTRG9jdW1lbnRET01KSVQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RG9jdW1lbnREb2N1bWVudEVsZW1lbnRET01KSVQ6OmNhbGxET01HZXR0ZXIp
OgorICAgICAgICAqIGRvbWppdC9KU05vZGVET01KSVQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Tm9kZUZpcnN0Q2hpbGRET01KSVQ6OmNhbGxET01HZXR0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6
Tm9kZUxhc3RDaGlsZERPTUpJVDo6Y2FsbERPTUdldHRlcik6CisgICAgICAgIChXZWJDb3JlOjpO
b2RlTmV4dFNpYmxpbmdET01KSVQ6OmNhbGxET01HZXR0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6
Tm9kZVByZXZpb3VzU2libGluZ0RPTUpJVDo6Y2FsbERPTUdldHRlcik6CisgICAgICAgIChXZWJD
b3JlOjpOb2RlUGFyZW50Tm9kZURPTUpJVDo6Y2FsbERPTUdldHRlcik6CisgICAgICAgIChXZWJD
b3JlOjpOb2RlT3duZXJEb2N1bWVudERPTUpJVDo6Y2FsbERPTUdldHRlcik6CisgICAgICAgICog
ZG9taml0L2dlbmVyYXRlLWFic3RyYWN0LWhlYXAucmI6IEFkZGVkLgorCiAyMDE2LTExLTAxICBE
YXZlIEh5YXR0ICA8aHlhdHRAYXBwbGUuY29tPgogCiAgICAgICAgIFtDU1MgUGFyc2VyXSBTdXBw
b3J0IHRoZSBzaGFkb3cgRE9NCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2
YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDJmYmQy
ZTRjZjMxN2MyZjg0ZTJlMTM5N2Q4NTE0MTFiNTk2N2UwZTIuLmJmNGExOWQ1OTI3ZGZkZTFhOWZm
NmYyNGEzZTliNWY2Yzc4MGJlOWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9K
YXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0y
MTg0LDYgKzIxODQsNyBAQAogCQlFMzNGNTA4NTFCODQzN0EwMDA0MTM4NTYgLyogSlNJbnRlcm5h
bFByb21pc2VEZWZlcnJlZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRTMzRjUwODMxQjg0MzdBMDAwNDEzODU2IC8qIEpTSW50ZXJuYWxQcm9taXNlRGVm
ZXJyZWQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQlFMzNGNTA4NzFCODQ0OUVGMDA0MTM4NTYgLyogSlNJbnRlcm5hbFByb21pc2VDb25zdHJ1Y3Rv
ci5sdXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUz
M0Y1MDg2MUI4NDQ5RUYwMDQxMzg1NiAvKiBKU0ludGVybmFsUHJvbWlzZUNvbnN0cnVjdG9yLmx1
dC5oICovOyB9OwogCQlFMzRFREJGNzFEQjVGRkM5MDBEQzg3QTUgLyogRnJhbWVUcmFjZXJzLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzRFREJGNjFE
QjVGRkMxMDBEQzg3QTUgLyogRnJhbWVUcmFjZXJzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJRTM1MDcwOEExREM0OUJCRjAwODlCQ0Q2IC8qIERP
TUpJVFNpZ25hdHVyZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gRTM1MDcwODkxREM0OUJCNjAwODlCQ0Q2IC8qIERPTUpJVFNpZ25hdHVyZS5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUUzNTQ2MjJCMUI2
MDY1RDEwMDU0NTM4NiAvKiBDb25zdHJ1Y3RBYmlsaXR5LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzU0NjIyQTFCNjA2NUQxMDA1NDUzODYgLyogQ29u
c3RydWN0QWJpbGl0eS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCUUzNTU1QjhBMURBRTAzQTUwMEYzNjkyMSAvKiBET01KSVRDYWxsRE9NR2V0dGVy
UGF0Y2hwb2ludC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRTM1NTVCODkxREFFMDNBMjAwRjM2OTIxIC8qIERPTUpJVENhbGxET01HZXR0ZXJQYXRjaHBv
aW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
RTM1NUYzNTIxQjdEQzg1MzAwQzUwREM1IC8qIE1vZHVsZUxvYWRlclByb3RvdHlwZS5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzU1RjM1MDFCN0RD
ODUzMDBDNTBEQzUgLyogTW9kdWxlTG9hZGVyUHJvdG90eXBlLmNwcCAqLzsgfTsKQEAgLTQ1ODYs
NiArNDU4Nyw3IEBACiAJCUUzM0Y1MDg2MUI4NDQ5RUYwMDQxMzg1NiAvKiBKU0ludGVybmFsUHJv
bWlzZUNvbnN0cnVjdG9yLmx1dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBK
U0ludGVybmFsUHJvbWlzZUNvbnN0cnVjdG9yLmx1dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlFMzNGNTA4ODFCODQ0QTFBMDA0MTM4NTYgLyogSW50ZXJuYWxQcm9taXNlQ29uc3Ry
dWN0b3IuanMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmphdmFzY3JpcHQ7IHBhdGggPSBJbnRlcm5h
bFByb21pc2VDb25zdHJ1Y3Rvci5qczsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM0
RURCRjYxREI1RkZDMTAwREM4N0E1IC8qIEZyYW1lVHJhY2Vycy5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBGcmFtZVRyYWNlcnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJRTM1MDcwODkxREM0OUJCNjAwODlCQ0Q2IC8qIERPTUpJVFNpZ25hdHVyZS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBET01KSVRTaWduYXR1cmUuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM1NDYyMkExQjYwNjVEMTAwNTQ1Mzg2IC8qIENvbnN0cnVj
dEFiaWxpdHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29uc3RydWN0QWJp
bGl0eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzU1NUI4OTFEQUUwM0EyMDBG
MzY5MjEgLyogRE9NSklUQ2FsbERPTUdldHRlclBhdGNocG9pbnQuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gRE9NSklUQ2FsbERPTUdldHRlclBhdGNocG9pbnQuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM1NUYzNTAxQjdEQzg1MzAwQzUwREM1IC8qIE1vZHVs
ZUxvYWRlclByb3RvdHlwZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBNb2R1bGVMb2FkZXJQcm90b3R5cGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpA
QCAtNzUwMyw2ICs3NTA1LDcgQEAKIAkJCQlFMzdBRDgzQTFEQTQ5MjgwMDBGM0Q0MTIgLyogRE9N
SklUUGF0Y2hwb2ludFBhcmFtcy5oICovLAogCQkJCUUzN0FEODNCMURBNDkyODAwMEYzRDQxMiAv
KiBET01KSVRSZWcuaCAqLywKIAkJCQlFM0NCMUUyNDFEQTc1NDBBMDBGQTFFNTYgLyogRE9NSklU
U2xvd1BhdGhDYWxscy5oICovLAorCQkJCUUzNTA3MDg5MURDNDlCQjYwMDg5QkNENiAvKiBET01K
SVRTaWduYXR1cmUuaCAqLywKIAkJCQlFM0ZGQzg1MjFEQUQ3RDEwMDBERUE1M0UgLyogRE9NSklU
VmFsdWUuaCAqLywKIAkJCSk7CiAJCQlwYXRoID0gZG9taml0OwpAQCAtODQyMyw2ICs4NDI2LDcg
QEAKIAkJCQk0M0FCMjZDNjFDMUE1MzU5MDBEODJBRTYgLyogQjNNYXRoRXh0cmFzLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlBRDJGQ0JGMzFEQjU4REFEMDBCM0U3MzYgLyogV2ViQXNzZW1ibHlJbnN0
YW5jZVByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxOEM0MjkwRTE2RjVDRDAwQjM0
NDYwIC8qIEpTU3RyaW5nUmVmQ0YuaCBpbiBIZWFkZXJzICovLAorCQkJCUUzNTA3MDhBMURDNDlC
QkYwMDg5QkNENiAvKiBET01KSVRTaWduYXR1cmUuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBMjhE
NEE4MTc3QjcxQzgwMDA3RkEzQyAvKiBKU1N0cmluZ1JlZlByaXZhdGUuaCBpbiBIZWFkZXJzICov
LAogCQkJCTBGOTE5RDBEMTU3RUUwQTIwMDRBNEU3RCAvKiBKU1N5bWJvbFRhYmxlT2JqZWN0Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQk3MEVDQTYwNjFBRkRCRUEyMDA0NDk3MzkgLyogSlNUZW1wbGF0
ZVJlZ2lzdHJ5S2V5LmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9DYWxsVmFyaWFudC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0NhbGxWYXJpYW50LmgKaW5kZXggZGU2ODgwMDZlZjFhOTllOWRkNjBiMDFhNmUwMTc3
Y2I5OGVjN2I1MS4uY2IyODhjNjBiN2E0ZjEzOGJhZjIxNDI4NDllMTM5MWE4ZDExMWJhNyAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxWYXJpYW50LmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxWYXJpYW50LmgKQEAgLTI4LDYg
KzI4LDcgQEAKICNpbmNsdWRlICJGdW5jdGlvbkV4ZWN1dGFibGUuaCIKICNpbmNsdWRlICJKU0Nl
bGwuaCIKICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCisjaW5jbHVkZSAiTmF0aXZlRXhlY3V0YWJs
ZS5oIgogCiBuYW1lc3BhY2UgSlNDIHsKIApAQCAtMTIwLDYgKzEyMSwyMCBAQCBjbGFzcyBDYWxs
VmFyaWFudCB7CiAgICAgICAgICAgICByZXR1cm4ganNEeW5hbWljQ2FzdDxGdW5jdGlvbkV4ZWN1
dGFibGUqPihleGVjdXRhYmxlKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQorCisg
ICAgTmF0aXZlRXhlY3V0YWJsZSogbmF0aXZlRXhlY3V0YWJsZSgpIGNvbnN0CisgICAgeworICAg
ICAgICBpZiAoRXhlY3V0YWJsZUJhc2UqIGV4ZWN1dGFibGUgPSB0aGlzLT5leGVjdXRhYmxlKCkp
CisgICAgICAgICAgICByZXR1cm4ganNEeW5hbWljQ2FzdDxOYXRpdmVFeGVjdXRhYmxlKj4oZXhl
Y3V0YWJsZSk7CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KKworICAgIGNvbnN0IERP
TUpJVDo6U2lnbmF0dXJlKiBzaWduYXR1cmVGb3IoQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5k
KSBjb25zdAorICAgIHsKKyAgICAgICAgaWYgKE5hdGl2ZUV4ZWN1dGFibGUqIG5hdGl2ZUV4ZWN1
dGFibGUgPSB0aGlzLT5uYXRpdmVFeGVjdXRhYmxlKCkpCisgICAgICAgICAgICByZXR1cm4gbmF0
aXZlRXhlY3V0YWJsZS0+c2lnbmF0dXJlRm9yKGtpbmQpOworICAgICAgICByZXR1cm4gbnVsbHB0
cjsKKyAgICB9CiAgICAgCiAgICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0Owog
ICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NwZWN1bGF0
ZWRUeXBlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3BlY3VsYXRlZFR5cGUu
aAppbmRleCBmNDNkZmNkMzE1ODcxZTk4OTUzZWEyZGRkYzRiZjMzNTI1Y2NkZmRmLi5lMjNmZDJj
NWY1NGNlZTA5YzdhMjNiZGMxNDk5OTBiNjA5YjAxOTAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3BlY3VsYXRlZFR5cGUuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvU3BlY3VsYXRlZFR5cGUuaApAQCAtMTUxLDYgKzE1MSwxMSBAQCBp
bmxpbmUgYm9vbCBpc1N0cmluZ1NwZWN1bGF0aW9uKFNwZWN1bGF0ZWRUeXBlIHZhbHVlKQogICAg
IHJldHVybiAhIXZhbHVlICYmICh2YWx1ZSAmIFNwZWNTdHJpbmcpID09IHZhbHVlOwogfQogCitp
bmxpbmUgYm9vbCBpc05vdFN0cmluZ1NwZWN1bGF0aW9uKFNwZWN1bGF0ZWRUeXBlIHZhbHVlKQor
eworICAgIHJldHVybiB2YWx1ZSAmJiAhKHZhbHVlICYgU3BlY1N0cmluZyk7Cit9CisKIGlubGlu
ZSBib29sIGlzU3RyaW5nT3JPdGhlclNwZWN1bGF0aW9uKFNwZWN1bGF0ZWRUeXBlIHZhbHVlKQog
ewogICAgIHJldHVybiAhIXZhbHVlICYmICh2YWx1ZSAmIChTcGVjU3RyaW5nIHwgU3BlY090aGVy
KSkgPT0gdmFsdWU7CkBAIC0zMDMsNiArMzA4LDExIEBAIGlubGluZSBib29sIGlzSW50MzJTcGVj
dWxhdGlvbihTcGVjdWxhdGVkVHlwZSB2YWx1ZSkKICAgICByZXR1cm4gdmFsdWUgJiYgISh2YWx1
ZSAmIH5TcGVjSW50MzJPbmx5KTsKIH0KIAoraW5saW5lIGJvb2wgaXNOb3RJbnQzMlNwZWN1bGF0
aW9uKFNwZWN1bGF0ZWRUeXBlIHZhbHVlKQoreworICAgIHJldHVybiB2YWx1ZSAmJiAhKHZhbHVl
ICYgU3BlY0ludDMyT25seSk7Cit9CisKIGlubGluZSBib29sIGlzSW50MzJPckJvb2xlYW5TcGVj
dWxhdGlvbihTcGVjdWxhdGVkVHlwZSB2YWx1ZSkKIHsKICAgICByZXR1cm4gdmFsdWUgJiYgISh2
YWx1ZSAmIH4oU3BlY0Jvb2xlYW4gfCBTcGVjSW50MzJPbmx5KSk7CkBAIC0zODgsNiArMzk4LDEx
IEBAIGlubGluZSBib29sIGlzQm9vbGVhblNwZWN1bGF0aW9uKFNwZWN1bGF0ZWRUeXBlIHZhbHVl
KQogICAgIHJldHVybiB2YWx1ZSA9PSBTcGVjQm9vbGVhbjsKIH0KIAoraW5saW5lIGJvb2wgaXNO
b3RCb29sZWFuU3BlY3VsYXRpb24oU3BlY3VsYXRlZFR5cGUgdmFsdWUpCit7CisgICAgcmV0dXJu
IHZhbHVlICYmICEodmFsdWUgJiBTcGVjQm9vbGVhbik7Cit9CisKIGlubGluZSBib29sIGlzT3Ro
ZXJTcGVjdWxhdGlvbihTcGVjdWxhdGVkVHlwZSB2YWx1ZSkKIHsKICAgICByZXR1cm4gdmFsdWUg
PT0gU3BlY090aGVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdB
YnN0cmFjdEludGVycHJldGVySW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCmluZGV4IDQzYjUxYTE2ZWNiYWRhNTBmOWQ3
Zjg4ZWVlM2NmMTEyNmI3YTIyNGEuLjdhZGJhNzE2MDE0NjE1MTA3MmVmNjk5ZDIyNmEyYWYzY2Vh
MDhkMDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJ
bnRlcnByZXRlcklubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fi
c3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJB
cnJheUNvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAiREZHQWJzdHJhY3RJbnRlcnByZXRlci5oIgog
I2luY2x1ZGUgIkRPTUpJVEdldHRlclNldHRlci5oIgorI2luY2x1ZGUgIkRPTUpJVFNpZ25hdHVy
ZS5oIgogI2luY2x1ZGUgIkdldEJ5SWRTdGF0dXMuaCIKICNpbmNsdWRlICJHZXR0ZXJTZXR0ZXIu
aCIKICNpbmNsdWRlICJIYXNoTWFwSW1wbC5oIgpAQCAtMjMwMyw2ICsyMzA0LDEzIEBAIGJvb2wg
QWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3RzKHVu
c2lnbmVkIGNsb2JiZXJMaW1pCiAgICAgICAgIGZvck5vZGUobm9kZSkuc2V0VHlwZShtX2dyYXBo
LCBjYWxsRE9NR2V0dGVyRGF0YS0+ZG9tSklULT5yZXN1bHRUeXBlKCkpOwogICAgICAgICBicmVh
azsKICAgICB9CisgICAgY2FzZSBDYWxsRE9NOiB7CisgICAgICAgIGNvbnN0IERPTUpJVDo6U2ln
bmF0dXJlKiBzaWduYXR1cmUgPSBub2RlLT5zaWduYXR1cmUoKTsKKyAgICAgICAgaWYgKHNpZ25h
dHVyZS0+ZWZmZWN0LndyaXRlcykKKyAgICAgICAgICAgIGNsb2JiZXJXb3JsZChub2RlLT5vcmln
aW4uc2VtYW50aWMsIGNsb2JiZXJMaW1pdCk7CisgICAgICAgIGZvck5vZGUobm9kZSkuc2V0VHlw
ZShtX2dyYXBoLCBzaWduYXR1cmUtPnJlc3VsdCk7CisgICAgICAgIGJyZWFrOworICAgIH0KICAg
ICBjYXNlIENoZWNrQXJyYXk6IHsKICAgICAgICAgaWYgKG5vZGUtPmFycmF5TW9kZSgpLmFscmVh
ZHlDaGVja2VkKG1fZ3JhcGgsIG5vZGUsIGZvck5vZGUobm9kZS0+Y2hpbGQxKCkpKSkgewogICAg
ICAgICAgICAgbV9zdGF0ZS5zZXRGb3VuZENvbnN0YW50cyh0cnVlKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKaW5kZXggMzVkYzA3ODZhODkz
Nzg1ZjcwZjdiMzJjMGNmN2JjZGRlOWE3ZWRkOS4uMGMyNjFkMWM5NDlhYzFkODM5Y2MxZDkzZTdl
Yjk3Y2NiNDBiZDQxNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdC
eXRlQ29kZVBhcnNlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRl
Q29kZVBhcnNlci5jcHAKQEAgLTIxMiw2ICsyMTIsOCBAQCBjbGFzcyBCeXRlQ29kZVBhcnNlciB7
CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hlY2tzRnVuY3Rvcj4KICAgICBib29sIGhhbmRsZUlu
dHJpbnNpY0NhbGwoTm9kZSogY2FsbGVlLCBpbnQgcmVzdWx0T3BlcmFuZCwgSW50cmluc2ljLCBp
bnQgcmVnaXN0ZXJPZmZzZXQsIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgU3BlY3Vs
YXRlZFR5cGUgcHJlZGljdGlvbiwgY29uc3QgQ2hlY2tzRnVuY3RvciYgaW5zZXJ0Q2hlY2tzKTsK
ICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGVja3NGdW5jdG9yPgorICAgIGJvb2wgaGFuZGxlRE9N
SklUQ2FsbChOb2RlKiBjYWxsZWUsIGludCByZXN1bHRPcGVyYW5kLCBjb25zdCBET01KSVQ6OlNp
Z25hdHVyZSosIGludCByZWdpc3Rlck9mZnNldCwgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdU
aGlzLCBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uLCBjb25zdCBDaGVja3NGdW5jdG9yJiBpbnNl
cnRDaGVja3MpOworICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoZWNrc0Z1bmN0b3I+CiAgICAgYm9v
bCBoYW5kbGVJbnRyaW5zaWNHZXR0ZXIoaW50IHJlc3VsdE9wZXJhbmQsIGNvbnN0IEdldEJ5SWRW
YXJpYW50JiBpbnRyaW5zaWNWYXJpYW50LCBOb2RlKiB0aGlzTm9kZSwgY29uc3QgQ2hlY2tzRnVu
Y3RvciYgaW5zZXJ0Q2hlY2tzKTsKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGVja3NGdW5jdG9y
PgogICAgIGJvb2wgaGFuZGxlVHlwZWRBcnJheUNvbnN0cnVjdG9yKGludCByZXN1bHRPcGVyYW5k
LCBJbnRlcm5hbEZ1bmN0aW9uKiwgaW50IHJlZ2lzdGVyT2Zmc2V0LCBpbnQgYXJndW1lbnRDb3Vu
dEluY2x1ZGluZ1RoaXMsIFR5cGVkQXJyYXlUeXBlLCBjb25zdCBDaGVja3NGdW5jdG9yJiBpbnNl
cnRDaGVja3MpOwpAQCAtODE3LDE4ICs4MTksMTggQEAgY2xhc3MgQnl0ZUNvZGVQYXJzZXIgewog
ICAgIH0KICAgICAKICAgICBOb2RlKiBhZGRDYWxsKAotICAgICAgICBpbnQgcmVzdWx0LCBOb2Rl
VHlwZSBvcCwgT3BJbmZvIG9wSW5mbywgTm9kZSogY2FsbGVlLCBpbnQgYXJnQ291bnQsIGludCBy
ZWdpc3Rlck9mZnNldCwKKyAgICAgICAgaW50IHJlc3VsdCwgTm9kZVR5cGUgb3AsIGNvbnN0IERP
TUpJVDo6U2lnbmF0dXJlKiBzaWduYXR1cmUsIE5vZGUqIGNhbGxlZSwgaW50IGFyZ0NvdW50LCBp
bnQgcmVnaXN0ZXJPZmZzZXQsCiAgICAgICAgIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24pCiAg
ICAgewogICAgICAgICBpZiAob3AgPT0gVGFpbENhbGwpIHsKICAgICAgICAgICAgIGlmIChhbGxJ
bmxpbmVGcmFtZXNBcmVUYWlsQ2FsbHMoKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gYWRkQ2Fs
bFdpdGhvdXRTZXR0aW5nUmVzdWx0KG9wLCBPcEluZm8oKSwgY2FsbGVlLCBhcmdDb3VudCwgcmVn
aXN0ZXJPZmZzZXQsIE9wSW5mbygpKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gYWRkQ2FsbFdp
dGhvdXRTZXR0aW5nUmVzdWx0KG9wLCBPcEluZm8oc2lnbmF0dXJlKSwgY2FsbGVlLCBhcmdDb3Vu
dCwgcmVnaXN0ZXJPZmZzZXQsIE9wSW5mbygpKTsKICAgICAgICAgICAgIG9wID0gVGFpbENhbGxJ
bmxpbmVkQ2FsbGVyOwogICAgICAgICB9CiAKIAogICAgICAgICBOb2RlKiBjYWxsID0gYWRkQ2Fs
bFdpdGhvdXRTZXR0aW5nUmVzdWx0KAotICAgICAgICAgICAgb3AsIG9wSW5mbywgY2FsbGVlLCBh
cmdDb3VudCwgcmVnaXN0ZXJPZmZzZXQsIE9wSW5mbyhwcmVkaWN0aW9uKSk7CisgICAgICAgICAg
ICBvcCwgT3BJbmZvKHNpZ25hdHVyZSksIGNhbGxlZSwgYXJnQ291bnQsIHJlZ2lzdGVyT2Zmc2V0
LCBPcEluZm8ocHJlZGljdGlvbikpOwogICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgcmVzdWx0UmVn
KHJlc3VsdCk7CiAgICAgICAgIGlmIChyZXN1bHRSZWcuaXNWYWxpZCgpKQogICAgICAgICAgICAg
c2V0KHJlc3VsdFJlZywgY2FsbCk7CkBAIC0xMjgzLDcgKzEyODUsNyBAQCBCeXRlQ29kZVBhcnNl
cjo6VGVybWluYWxpdHkgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUNhbGwoCiAgICAgICAgIC8vIE9k
ZGx5LCB0aGlzIGNvbmZsYXRlcyBjYWxscyB0aGF0IGhhdmVuJ3QgZXhlY3V0ZWQgd2l0aCBjYWxs
cyB0aGF0IGJlaGF2ZWQgc3VmZmljaWVudGx5IHBvbHltb3JwaGljYWxseQogICAgICAgICAvLyB0
aGF0IHdlIGNhbm5vdCBvcHRpbWl6ZSB0aGVtLgogCi0gICAgICAgIE5vZGUqIGNhbGxOb2RlID0g
YWRkQ2FsbChyZXN1bHQsIG9wLCBPcEluZm8oKSwgY2FsbFRhcmdldCwgYXJndW1lbnRDb3VudElu
Y2x1ZGluZ1RoaXMsIHJlZ2lzdGVyT2Zmc2V0LCBwcmVkaWN0aW9uKTsKKyAgICAgICAgTm9kZSog
Y2FsbE5vZGUgPSBhZGRDYWxsKHJlc3VsdCwgb3AsIG51bGxwdHIsIGNhbGxUYXJnZXQsIGFyZ3Vt
ZW50Q291bnRJbmNsdWRpbmdUaGlzLCByZWdpc3Rlck9mZnNldCwgcHJlZGljdGlvbik7CiAgICAg
ICAgIGlmIChjYWxsTm9kZS0+b3AoKSA9PSBUYWlsQ2FsbCkKICAgICAgICAgICAgIHJldHVybiBU
ZXJtaW5hbDsKICAgICAgICAgQVNTRVJUKGNhbGxOb2RlLT5vcCgpICE9IFRhaWxDYWxsVmFyYXJn
cyAmJiBjYWxsTm9kZS0+b3AoKSAhPSBUYWlsQ2FsbEZvcndhcmRWYXJhcmdzKTsKQEAgLTEyOTgs
NyArMTMwMCw3IEBAIEJ5dGVDb2RlUGFyc2VyOjpUZXJtaW5hbGl0eSBCeXRlQ29kZVBhcnNlcjo6
aGFuZGxlQ2FsbCgKICAgICAgICAgcmV0dXJuIE5vblRlcm1pbmFsOwogICAgIH0KICAgICAKLSAg
ICBOb2RlKiBjYWxsTm9kZSA9IGFkZENhbGwocmVzdWx0LCBvcCwgT3BJbmZvKCksIGNhbGxUYXJn
ZXQsIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCByZWdpc3Rlck9mZnNldCwgcHJlZGljdGlv
bik7CisgICAgTm9kZSogY2FsbE5vZGUgPSBhZGRDYWxsKHJlc3VsdCwgb3AsIG51bGxwdHIsIGNh
bGxUYXJnZXQsIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCByZWdpc3Rlck9mZnNldCwgcHJl
ZGljdGlvbik7CiAgICAgaWYgKGNhbGxOb2RlLT5vcCgpID09IFRhaWxDYWxsKQogICAgICAgICBy
ZXR1cm4gVGVybWluYWw7CiAgICAgQVNTRVJUKGNhbGxOb2RlLT5vcCgpICE9IFRhaWxDYWxsVmFy
YXJncyAmJiBjYWxsTm9kZS0+b3AoKSAhPSBUYWlsQ2FsbEZvcndhcmRWYXJhcmdzKTsKQEAgLTE3
MjUsNiArMTcyNywxOSBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjphdHRlbXB0VG9JbmxpbmVDYWxs
KE5vZGUqIGNhbGxUYXJnZXROb2RlLCBpbnQgcmVzdWx0T3BlcmFuZAogICAgICAgICAgICAgUkVM
RUFTRV9BU1NFUlQoIWRpZEluc2VydENoZWNrcyk7CiAgICAgICAgICAgICAvLyBXZSBtaWdodCBz
dGlsbCB0cnkgdG8gaW5saW5lIHRoZSBJbnRyaW5zaWMgYmVjYXVzZSBpdCBtaWdodCBiZSBhIGJ1
aWx0aW4gSlMgZnVuY3Rpb24uCiAgICAgICAgIH0KKworICAgICAgICBpZiAoT3B0aW9uczo6dXNl
RE9NSklUKCkpIHsKKyAgICAgICAgICAgIGlmIChjb25zdCBET01KSVQ6OlNpZ25hdHVyZSogc2ln
bmF0dXJlID0gY2FsbGVlLnNpZ25hdHVyZUZvcihzcGVjaWFsaXphdGlvbktpbmQpKSB7CisgICAg
ICAgICAgICAgICAgaWYgKGhhbmRsZURPTUpJVENhbGwoY2FsbFRhcmdldE5vZGUsIHJlc3VsdE9w
ZXJhbmQsIHNpZ25hdHVyZSwgcmVnaXN0ZXJPZmZzZXQsIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdU
aGlzLCBwcmVkaWN0aW9uLCBpbnNlcnRDaGVja3NXaXRoQWNjb3VudGluZykpIHsKKyAgICAgICAg
ICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoZGlkSW5zZXJ0Q2hlY2tzKTsKKyAgICAgICAgICAg
ICAgICAgICAgYWRkVG9HcmFwaChQaGFudG9tLCBjYWxsVGFyZ2V0Tm9kZSk7CisgICAgICAgICAg
ICAgICAgICAgIGVtaXRBcmd1bWVudFBoYW50b21zKHJlZ2lzdGVyT2Zmc2V0LCBhcmd1bWVudENv
dW50SW5jbHVkaW5nVGhpcyk7CisgICAgICAgICAgICAgICAgICAgIGlubGluaW5nQmFsYW5jZS0t
OworICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoIWRpZEluc2VydENoZWNrcyk7CisgICAgICAg
ICAgICB9CisgICAgICAgIH0KICAgICB9CiAgICAgCiAgICAgdW5zaWduZWQgbXlJbmxpbmluZ0Nv
c3QgPSBpbmxpbmluZ0Nvc3QoY2FsbGVlLCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgSW5s
aW5lQ2FsbEZyYW1lOjpjYWxsTW9kZUZvcihraW5kKSk7CkBAIC0yMDUwLDcgKzIwNjUsNyBAQCBi
b29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbmxpbmluZygKICAgICBOb2RlKiBteUNhbGxUYXJn
ZXROb2RlID0gZ2V0RGlyZWN0KGNhbGxlZVJlZyk7CiAgICAgaWYgKGNvdWxkVGFrZVNsb3dQYXRo
KSB7CiAgICAgICAgIGFkZENhbGwoCi0gICAgICAgICAgICByZXN1bHRPcGVyYW5kLCBjYWxsT3As
IE9wSW5mbygpLCBteUNhbGxUYXJnZXROb2RlLCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywK
KyAgICAgICAgICAgIHJlc3VsdE9wZXJhbmQsIGNhbGxPcCwgbnVsbHB0ciwgbXlDYWxsVGFyZ2V0
Tm9kZSwgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsCiAgICAgICAgICAgICByZWdpc3Rlck9m
ZnNldCwgcHJlZGljdGlvbik7CiAgICAgfSBlbHNlIHsKICAgICAgICAgYWRkVG9HcmFwaChDaGVj
a0JhZENlbGwpOwpAQCAtMjYwMCw2ICsyNjE1LDIwIEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6Omhh
bmRsZUludHJpbnNpY0NhbGwoTm9kZSogY2FsbGVlLCBpbnQgcmVzdWx0T3BlcmFuZCwgSW50cmlu
CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIENoZWNrc0Z1bmN0b3I+Citib29sIEJ5dGVDb2RlUGFy
c2VyOjpoYW5kbGVET01KSVRDYWxsKE5vZGUqIGNhbGxUYXJnZXQsIGludCByZXN1bHRPcGVyYW5k
LCBjb25zdCBET01KSVQ6OlNpZ25hdHVyZSogc2lnbmF0dXJlLCBpbnQgcmVnaXN0ZXJPZmZzZXQs
IGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlv
biwgY29uc3QgQ2hlY2tzRnVuY3RvciYgaW5zZXJ0Q2hlY2tzKQoreworICAgIGlmIChhcmd1bWVu
dENvdW50SW5jbHVkaW5nVGhpcyAhPSBzdGF0aWNfY2FzdDxpbnQ+KDEgKyBzaWduYXR1cmUtPmFy
Z3VtZW50Q291bnQpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKG1faW5saW5lU3Rh
Y2tUb3AtPm1fZXhpdFByb2ZpbGUuaGFzRXhpdFNpdGUobV9jdXJyZW50SW5kZXgsIEJhZFR5cGUp
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpbnNlcnRDaGVja3MoKTsKKyAgICBhZGRD
YWxsKHJlc3VsdE9wZXJhbmQsIENhbGwsIHNpZ25hdHVyZSwgY2FsbFRhcmdldCwgYXJndW1lbnRD
b3VudEluY2x1ZGluZ1RoaXMsIHJlZ2lzdGVyT2Zmc2V0LCBwcmVkaWN0aW9uKTsKKyAgICByZXR1
cm4gdHJ1ZTsKK30KKworCit0ZW1wbGF0ZTx0eXBlbmFtZSBDaGVja3NGdW5jdG9yPgogYm9vbCBC
eXRlQ29kZVBhcnNlcjo6aGFuZGxlSW50cmluc2ljR2V0dGVyKGludCByZXN1bHRPcGVyYW5kLCBj
b25zdCBHZXRCeUlkVmFyaWFudCYgdmFyaWFudCwgTm9kZSogdGhpc05vZGUsIGNvbnN0IENoZWNr
c0Z1bmN0b3ImIGluc2VydENoZWNrcykKIHsKICAgICBzd2l0Y2ggKHZhcmlhbnQuaW50cmluc2lj
KCkpIHsKQEAgLTQ3OTEsNyArNDgyMCw3IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxv
Y2sodW5zaWduZWQgbGltaXQpCiAgICAgICAgICAgICBpbnQgY2FsbGVlID0gY3VycmVudEluc3Ry
dWN0aW9uWzJdLnUub3BlcmFuZDsKICAgICAgICAgICAgIGludCBhcmd1bWVudENvdW50SW5jbHVk
aW5nVGhpcyA9IGN1cnJlbnRJbnN0cnVjdGlvblszXS51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBp
bnQgcmVnaXN0ZXJPZmZzZXQgPSAtY3VycmVudEluc3RydWN0aW9uWzRdLnUub3BlcmFuZDsKLSAg
ICAgICAgICAgIGFkZENhbGwocmVzdWx0LCBDYWxsRXZhbCwgT3BJbmZvKCksIGdldChWaXJ0dWFs
UmVnaXN0ZXIoY2FsbGVlKSksIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCByZWdpc3Rlck9m
ZnNldCwgZ2V0UHJlZGljdGlvbigpKTsKKyAgICAgICAgICAgIGFkZENhbGwocmVzdWx0LCBDYWxs
RXZhbCwgbnVsbHB0ciwgZ2V0KFZpcnR1YWxSZWdpc3RlcihjYWxsZWUpKSwgYXJndW1lbnRDb3Vu
dEluY2x1ZGluZ1RoaXMsIHJlZ2lzdGVyT2Zmc2V0LCBnZXRQcmVkaWN0aW9uKCkpOwogICAgICAg
ICAgICAgTkVYVF9PUENPREUob3BfY2FsbF9ldmFsKTsKICAgICAgICAgfQogICAgICAgICAgICAg
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCmluZGV4IGI2MjFlZjAy
MmQ4ODY1ZTJlN2EyMDExNmNkMjA4YzVjMjQ2YzlmZmIuLmU1ZDIxNzJmOWFlMGU3OTFhYWEyYTY4
MmJhYjE0ZWJhOTMwNjdkYmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQ2xvYmJlcml6ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJl
cml6ZS5oCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAiREZHTGF6eU5vZGUuaCIKICNpbmNs
dWRlICJERkdQdXJlVmFsdWUuaCIKICNpbmNsdWRlICJET01KSVRDYWxsRE9NR2V0dGVyUGF0Y2hw
b2ludC5oIgorI2luY2x1ZGUgIkRPTUpJVFNpZ25hdHVyZS5oIgogCiBuYW1lc3BhY2UgSlNDIHsg
bmFtZXNwYWNlIERGRyB7CiAKQEAgLTk1OCwyMCArOTU5LDM4IEBAIHZvaWQgY2xvYmJlcml6ZShH
cmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUsIGNvbnN0IFJlYWRGdW5jdG9yJiByZWFkLCBjb25zdCBX
cml0ZUZ1CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgd3JpdGUoQWJzdHJhY3RI
ZWFwKERPTVN0YXRlLCBlZmZlY3Qud3JpdGVzLnJhd1JlcHJlc2VudGF0aW9uKCkpKTsKICAgICAg
ICAgfQotICAgICAgICBpZiAoZWZmZWN0LmRlZikgewotICAgICAgICAgICAgRE9NSklUOjpIZWFw
UmFuZ2UgcmFuZ2UgPSBlZmZlY3QuZGVmLnZhbHVlKCk7CisgICAgICAgIGlmIChlZmZlY3QuZGVm
ICE9IERPTUpJVDo6SGVhcFJhbmdlOjp0b3AoKSkgeworICAgICAgICAgICAgRE9NSklUOjpIZWFw
UmFuZ2UgcmFuZ2UgPSBlZmZlY3QuZGVmOwogICAgICAgICAgICAgaWYgKHJhbmdlID09IERPTUpJ
VDo6SGVhcFJhbmdlOjpub25lKCkpCiAgICAgICAgICAgICAgICAgZGVmKFB1cmVWYWx1ZShub2Rl
LCBub2RlLT5jYWxsRE9NR2V0dGVyRGF0YSgpLT5kb21KSVQpKTsKICAgICAgICAgICAgIGVsc2Ug
ewogICAgICAgICAgICAgICAgIC8vIERlZiB3aXRoIGhlYXAgbG9jYXRpb24uIFdlIGRvIG5vdCBp
bmNsdWRlICJHbG9iYWxPYmplY3QiIGZvciB0aGF0IHNpbmNlIHRoaXMgaW5mb3JtYXRpb24gaXMg
aW5jbHVkZWQgaW4gdGhlIGJhc2Ugbm9kZS4KLSAgICAgICAgICAgICAgICAvLyBGSVhNRTogV2hl
biBzdXBwb3J0aW5nIHRoZSBvdGhlciBub2RlcyBsaWtlIGdldEVsZW1lbnRCeUlkKCJzdHJpbmci
KSwgd2Ugc2hvdWxkIGluY2x1ZGUgdGhlIGJhc2UgYW5kIHRoZSBpZCBzdHJpbmcuCi0gICAgICAg
ICAgICAgICAgLy8gQ3VycmVudGx5LCB3ZSBvbmx5IHNlZSB0aGUgRE9NSklUIGdldHRlciBoZXJl
LiBTbyBqdXN0IGluY2x1ZGluZyAiYmFzZSIgaXMgb2suCisgICAgICAgICAgICAgICAgLy8gV2Ug
b25seSBzZWUgdGhlIERPTUpJVCBnZXR0ZXIgaGVyZS4gU28ganVzdCBpbmNsdWRpbmcgImJhc2Ui
IGlzIG9rLgogICAgICAgICAgICAgICAgIGRlZihIZWFwTG9jYXRpb24oRE9NU3RhdGVMb2MsIEFi
c3RyYWN0SGVhcChET01TdGF0ZSwgcmFuZ2UucmF3UmVwcmVzZW50YXRpb24oKSksIG5vZGUtPmNo
aWxkMSgpKSwgTGF6eU5vZGUobm9kZSkpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKKyAgICBjYXNlIENhbGxET006IHsKKyAgICAgICAgY29uc3Qg
RE9NSklUOjpTaWduYXR1cmUqIHNpZ25hdHVyZSA9IG5vZGUtPnNpZ25hdHVyZSgpOworICAgICAg
ICBET01KSVQ6OkVmZmVjdCBlZmZlY3QgPSBzaWduYXR1cmUtPmVmZmVjdDsKKyAgICAgICAgaWYg
KGVmZmVjdC5yZWFkcykgeworICAgICAgICAgICAgaWYgKGVmZmVjdC5yZWFkcyA9PSBET01KSVQ6
OkhlYXBSYW5nZTo6dG9wKCkpCisgICAgICAgICAgICAgICAgcmVhZChXb3JsZCk7CisgICAgICAg
ICAgICBlbHNlCisgICAgICAgICAgICAgICAgcmVhZChBYnN0cmFjdEhlYXAoRE9NU3RhdGUsIGVm
ZmVjdC5yZWFkcy5yYXdSZXByZXNlbnRhdGlvbigpKSk7CisgICAgICAgIH0KKyAgICAgICAgaWYg
KGVmZmVjdC53cml0ZXMpIHsKKyAgICAgICAgICAgIGlmIChlZmZlY3Qud3JpdGVzID09IERPTUpJ
VDo6SGVhcFJhbmdlOjp0b3AoKSkKKyAgICAgICAgICAgICAgICB3cml0ZShIZWFwKTsKKyAgICAg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB3cml0ZShBYnN0cmFjdEhlYXAoRE9NU3RhdGUs
IGVmZmVjdC53cml0ZXMucmF3UmVwcmVzZW50YXRpb24oKSkpOworICAgICAgICB9CisgICAgICAg
IEFTU0VSVF9XSVRIX01FU1NBR0UoZWZmZWN0LmRlZiA9PSBET01KSVQ6OkhlYXBSYW5nZTo6dG9w
KCksICJDdXJyZW50bHksIHdlIGRvIG5vdCBhY2NlcHQgYW55IGRlZiBmb3IgQ2FsbERPTS4iKTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKwogICAgIGNhc2UgQXJyYXlpZnk6CiAgICAgY2FzZSBB
cnJheWlmeVRvU3RydWN0dXJlOgogICAgICAgICByZWFkKEpTQ2VsbF9zdHJ1Y3R1cmVJRCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAKaW5kZXggOTdjZDg0ODc0NzdhYzkw
ODRmZTkwZGRiOThkMzBmNDY2ZTVjYTE2Zi4uOWU2YWE1NTBhNDRlMGUxYzYyMTc1ZTUxOWY2MGEz
ZTg1MTVhN2I3YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2Vz
R0MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcApAQCAt
MzAxLDYgKzMwMSw3IEBAIGJvb2wgZG9lc0dDKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSkKICAg
ICBjYXNlIENyZWF0ZVJlc3Q6CiAgICAgY2FzZSBUb0xvd2VyQ2FzZToKICAgICBjYXNlIENhbGxE
T01HZXR0ZXI6CisgICAgY2FzZSBDYWxsRE9NOgogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAg
ICAgCiAgICAgY2FzZSBNdWx0aVB1dEJ5T2Zmc2V0OgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHRml4dXBQaGFzZS5jcHAKaW5kZXggMWQ0ZTkwN2E3ZjJmZmNjMmQ5YTJhMDM3NzExNDZh
NzkxMDFmM2NkMy4uMTJlZjRjZDhhNGQ5ODI3YjFlMmI0Y2U4YmU5MDdjOGIzNjA2ODcyNSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCkBAIC0xNzA4LDkg
KzE3MDgsMTAgQEAgY2xhc3MgRml4dXBQaGFzZSA6IHB1YmxpYyBQaGFzZSB7CiAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgfQogCi0gICAgICAgIGNhc2UgQ2hlY2tET006Ci0gICAgICAgICAg
ICBmaXhFZGdlPENlbGxVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgY2FzZSBDaGVja0RP
TTogeworICAgICAgICAgICAgZml4dXBDaGVja0RPTShub2RlKTsKICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICB9CiAKICAgICAgICAgY2FzZSBDYWxsRE9NR2V0dGVyOiB7CiAgICAgICAgICAg
ICBET01KSVQ6OkNhbGxET01HZXR0ZXJQYXRjaHBvaW50KiBwYXRjaHBvaW50ID0gbm9kZS0+Y2Fs
bERPTUdldHRlckRhdGEoKS0+cGF0Y2hwb2ludDsKQEAgLTE3MjAsNiArMTcyMSwxNiBAQCBjbGFz
cyBGaXh1cFBoYXNlIDogcHVibGljIFBoYXNlIHsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICB9CiAKKyAgICAgICAgY2FzZSBDYWxsRE9NOiB7CisgICAgICAgICAgICBmaXh1cENhbGxET00o
bm9kZSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAgIGNhc2UgQ2Fs
bDogeworICAgICAgICAgICAgYXR0ZW1wdFRvTWFrZUNhbGxET00obm9kZSk7CisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgfQorCiAjaWYgIUFTU0VSVF9ESVNBQkxFRAogICAgICAgICAvLyBI
YXZlIHRoZXNlIG5vLW9wIGNhc2VzIGhlcmUgdG8gZW5zdXJlIHRoYXQgbm9ib2R5IGZvcmdldHMg
dG8gYWRkIGhhbmRsZXJzIGZvciBuZXcgb3Bjb2Rlcy4KICAgICAgICAgY2FzZSBTZXRBcmd1bWVu
dDoKQEAgLTE3MzYsNyArMTc0Nyw2IEBAIGNsYXNzIEZpeHVwUGhhc2UgOiBwdWJsaWMgUGhhc2Ug
ewogICAgICAgICBjYXNlIEdldEdsb2JhbFZhcjoKICAgICAgICAgY2FzZSBHZXRHbG9iYWxMZXhp
Y2FsVmFyaWFibGU6CiAgICAgICAgIGNhc2UgTm90aWZ5V3JpdGU6Ci0gICAgICAgIGNhc2UgQ2Fs
bDoKICAgICAgICAgY2FzZSBEaXJlY3RDYWxsOgogICAgICAgICBjYXNlIENoZWNrVHlwZUluZm9G
bGFnczoKICAgICAgICAgY2FzZSBUYWlsQ2FsbElubGluZWRDYWxsZXI6CkBAIC0yNjU5LDYgKzI2
NjksOTAgQEAgY2xhc3MgRml4dXBQaGFzZSA6IHB1YmxpYyBQaGFzZSB7CiAgICAgICAgICAgICBP
cEluZm8oYXJyYXlNb2RlLmFzV29yZCgpKSwgRWRnZShjaGlsZCwgS25vd25DZWxsVXNlKSwgRWRn
ZShzdG9yYWdlKSk7CiAgICAgfQogICAgIAorICAgIGJvb2wgYXR0ZW1wdFRvTWFrZUNhbGxET00o
Tm9kZSogbm9kZSkKKyAgICB7CisgICAgICAgIGlmIChtX2dyYXBoLmhhc0V4aXRTaXRlKG5vZGUt
Pm9yaWdpbi5zZW1hbnRpYywgQmFkVHlwZSkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisK
KyAgICAgICAgY29uc3QgRE9NSklUOjpTaWduYXR1cmUqIHNpZ25hdHVyZSA9IG5vZGUtPnNpZ25h
dHVyZSgpOworICAgICAgICBpZiAoIXNpZ25hdHVyZSkKKyAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKKworICAgICAgICB7CisgICAgICAgICAgICB1bnNpZ25lZCBpbmRleCA9IDA7CisgICAgICAg
ICAgICBib29sIHNob3VsZENvbnZlcnRUb0NhbGxET00gPSB0cnVlOworICAgICAgICAgICAgbV9n
cmFwaC5kb1RvQ2hpbGRyZW4obm9kZSwgWyZdKEVkZ2UmIGVkZ2UpIHsKKyAgICAgICAgICAgICAg
ICAvLyBDYWxsZWUuIElnbm9yZSB0aGlzLiBERkdCeXRlQ29kZVBhcnNlciBhbHJlYWR5IGVtaXQg
YXBwcm9wcmlhdGUgY2hlY2tzLgorICAgICAgICAgICAgICAgIGlmICghaW5kZXgpCisgICAgICAg
ICAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICAgICAgICAgIGlmIChpbmRleCA9PSAxKSB7
CisgICAgICAgICAgICAgICAgICAgIC8vIERPTSBub2RlIGNhc2UuCisgICAgICAgICAgICAgICAg
ICAgIGlmIChlZGdlLT5zaG91bGRTcGVjdWxhdGVOb3RDZWxsKCkpCisgICAgICAgICAgICAgICAg
ICAgICAgICBzaG91bGRDb252ZXJ0VG9DYWxsRE9NID0gZmFsc2U7CisgICAgICAgICAgICAgICAg
fSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChzaWduYXR1cmUtPmFyZ3VtZW50
c1tpbmRleCAtIDJdKSB7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgU3BlY1N0cmluZzoKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGlmIChlZGdlLT5zaG91bGRTcGVjdWxhdGVOb3RTdHJpbmco
KSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaG91bGRDb252ZXJ0VG9DYWxsRE9NID0g
ZmFsc2U7CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAg
ICAgY2FzZSBTcGVjSW50MzJPbmx5OgorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVkZ2Ut
PnNob3VsZFNwZWN1bGF0ZU5vdEludDMyKCkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c2hvdWxkQ29udmVydFRvQ2FsbERPTSA9IGZhbHNlOworICAgICAgICAgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgU3BlY0Jvb2xlYW46CisgICAgICAgICAg
ICAgICAgICAgICAgICBpZiAoZWRnZS0+c2hvdWxkU3BlY3VsYXRlTm90Qm9vbGVhbigpKQorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHNob3VsZENvbnZlcnRUb0NhbGxET00gPSBmYWxzZTsK
KyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICsraW5kZXg7CisgICAgICAgICAgICB9
KTsKKyAgICAgICAgICAgIGlmICghc2hvdWxkQ29udmVydFRvQ2FsbERPTSkKKyAgICAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKworICAgICAgICBOb2RlKiB0aGlzTm9kZSA9
IG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMSkubm9kZSgpOworICAgICAgICBSZWY8RE9NSklU
OjpQYXRjaHBvaW50PiBjaGVja0RPTVBhdGNocG9pbnQgPSBzaWduYXR1cmUtPmNoZWNrRE9NKCk7
CisgICAgICAgIG1fZ3JhcGgubV9kb21KSVRQYXRjaHBvaW50cy5hcHBlbmQoY2hlY2tET01QYXRj
aHBvaW50LnB0cigpKTsKKyAgICAgICAgTm9kZSogY2hlY2tET00gPSBtX2luc2VydGlvblNldC5p
bnNlcnROb2RlKG1faW5kZXhJbkJsb2NrLCBTcGVjTm9uZSwgQ2hlY2tET00sIG5vZGUtPm9yaWdp
biwgT3BJbmZvKGNoZWNrRE9NUGF0Y2hwb2ludC5wdHIoKSksIE9wSW5mbyhzaWduYXR1cmUtPmNs
YXNzSW5mbyksIEVkZ2UodGhpc05vZGUpKTsKKyAgICAgICAgbm9kZS0+Y29udmVydFRvQ2FsbERP
TShtX2dyYXBoKTsKKyAgICAgICAgZml4dXBDaGVja0RPTShjaGVja0RPTSk7CisgICAgICAgIGZp
eHVwQ2FsbERPTShub2RlKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgdm9p
ZCBmaXh1cENoZWNrRE9NKE5vZGUqIG5vZGUpCisgICAgeworICAgICAgICBmaXhFZGdlPENlbGxV
c2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICB9CisKKyAgICB2b2lkIGZpeHVwQ2FsbERPTShOb2Rl
KiBub2RlKQorICAgIHsKKyAgICAgICAgY29uc3QgRE9NSklUOjpTaWduYXR1cmUqIHNpZ25hdHVy
ZSA9IG5vZGUtPnNpZ25hdHVyZSgpOworICAgICAgICBhdXRvIGZpeHVwID0gWyZdKEVkZ2UmIGVk
Z2UsIGludCBhcmd1bWVudEluZGV4KSB7CisgICAgICAgICAgICBpZiAoIWVkZ2UpCisgICAgICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgc3dpdGNoIChzaWduYXR1cmUtPmFyZ3VtZW50
c1thcmd1bWVudEluZGV4XSkgeworICAgICAgICAgICAgY2FzZSBTcGVjU3RyaW5nOgorICAgICAg
ICAgICAgICAgIGZpeEVkZ2U8U3RyaW5nVXNlPihlZGdlKTsKKyAgICAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICAgIGNhc2UgU3BlY0ludDMyT25seToKKyAgICAgICAgICAgICAgICBmaXhF
ZGdlPEludDMyVXNlPihlZGdlKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg
IGNhc2UgU3BlY0Jvb2xlYW46CisgICAgICAgICAgICAgICAgZml4RWRnZTxCb29sZWFuVXNlPihl
ZGdlKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAg
ICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfTsKKyAgICAgICAgZml4RWRnZTxDZWxs
VXNlPihub2RlLT5jaGlsZDEoKSk7IC8vIERPTS4KKyAgICAgICAgZml4dXAobm9kZS0+Y2hpbGQy
KCksIDApOworICAgICAgICBmaXh1cChub2RlLT5jaGlsZDMoKSwgMSk7CisgICAgfQorCiAgICAg
dm9pZCBmaXh1cENoZWNrc0luQmxvY2soQmFzaWNCbG9jayogYmxvY2spCiAgICAgewogICAgICAg
ICBpZiAoIWJsb2NrKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdO
b2RlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5jcHAKaW5kZXggZjM3
MTE3YmY5NjlmZTRiNjlkOTVmMDAxZDU2ODgwNDZiZGNkOTQ1MC4uY2UyNWMwZGQxMzIxMGJlMTJh
Yjk1NzkwMmRiYTY2OWE3YmQ4NmRmYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdOb2RlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUu
Y3BwCkBAIC0yMjAsNiArMjIwLDI1IEBAIHZvaWQgTm9kZTo6Y29udmVydFRvRGlyZWN0Q2FsbChG
cm96ZW5WYWx1ZSogZXhlY3V0YWJsZSkKICAgICBtX29wSW5mbyA9IGV4ZWN1dGFibGU7CiB9CiAK
K3ZvaWQgTm9kZTo6Y29udmVydFRvQ2FsbERPTShHcmFwaCYgZ3JhcGgpCit7CisgICAgQVNTRVJU
KG9wKCkgPT0gQ2FsbCk7CisgICAgQVNTRVJUKHNpZ25hdHVyZSgpKTsKKworICAgIEVkZ2UgZWRn
ZXNbM107CisgICAgLy8gU2tpcCB0aGUgZmlyc3Qgb25lLiBUaGlzIGlzIGNhbGxlZS4KKyAgICBm
b3IgKHVuc2lnbmVkIGkgPSAxLCBpeiA9IG51bUNoaWxkcmVuKCk7IGkgPCBpejsgKytpKQorICAg
ICAgICBlZGdlc1tpIC0gMV0gPSBncmFwaC52YXJBcmdDaGlsZCh0aGlzLCBpKTsKKworICAgIHNl
dE9wQW5kRGVmYXVsdEZsYWdzKENhbGxET00pOworICAgIGNoaWxkcmVuLnNldENoaWxkMShlZGdl
c1swXSk7CisgICAgY2hpbGRyZW4uc2V0Q2hpbGQyKGVkZ2VzWzFdKTsKKyAgICBjaGlsZHJlbi5z
ZXRDaGlsZDMoZWRnZXNbMl0pOworCisgICAgaWYgKCFzaWduYXR1cmUoKS0+ZWZmZWN0Lm11c3RH
ZW5lcmF0ZSgpKQorICAgICAgICBjbGVhckZsYWdzKE5vZGVNdXN0R2VuZXJhdGUpOworfQorCiBT
dHJpbmcgTm9kZTo6dHJ5R2V0U3RyaW5nKEdyYXBoJiBncmFwaCkKIHsKICAgICBpZiAoaGFzQ29u
c3RhbnQoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgKaW5kZXggODhmODgxMTg5MGUx
NzczZWExZDYwMmU5Y2FjOWM1ODFkYTRmOWI5Yi4uODMwOWFhMzA5YTBhOWU2MTQyY2NhMjk1MTky
OGVhZGFiOTcyYTViMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdO
b2RlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgKQEAgLTYyLDYg
KzYyLDcgQEAgbmFtZXNwYWNlIERPTUpJVCB7CiBjbGFzcyBHZXR0ZXJTZXR0ZXI7CiBjbGFzcyBQ
YXRjaHBvaW50OwogY2xhc3MgQ2FsbERPTUdldHRlclBhdGNocG9pbnQ7CitjbGFzcyBTaWduYXR1
cmU7CiB9CiAKIG5hbWVzcGFjZSBQcm9maWxlciB7CkBAIC02NTIsNiArNjUzLDggQEAgc3RydWN0
IE5vZGUgewogICAgIH0KICAgICAKICAgICB2b2lkIGNvbnZlcnRUb0RpcmVjdENhbGwoRnJvemVu
VmFsdWUqKTsKKworICAgIHZvaWQgY29udmVydFRvQ2FsbERPTShHcmFwaCYpOwogICAgIAogICAg
IEpTVmFsdWUgYXNKU1ZhbHVlKCkKICAgICB7CkBAIC0xNDY0LDYgKzE0NjcsNyBAQCBzdHJ1Y3Qg
Tm9kZSB7CiAgICAgICAgIGNhc2UgVG9OdW1iZXI6CiAgICAgICAgIGNhc2UgTG9hZEZyb21KU01h
cEJ1Y2tldDoKICAgICAgICAgY2FzZSBDYWxsRE9NR2V0dGVyOgorICAgICAgICBjYXNlIENhbGxE
T006CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKQEAgLTE5ODEsNiArMTk4NSwxMSBAQCBzdHJ1Y3QgTm9kZSB7CiAg
ICAgewogICAgICAgICByZXR1cm4gaXNJbnQzMlNwZWN1bGF0aW9uKHByZWRpY3Rpb24oKSk7CiAg
ICAgfQorCisgICAgYm9vbCBzaG91bGRTcGVjdWxhdGVOb3RJbnQzMigpCisgICAgeworICAgICAg
ICByZXR1cm4gaXNOb3RJbnQzMlNwZWN1bGF0aW9uKHByZWRpY3Rpb24oKSk7CisgICAgfQogICAg
IAogICAgIGJvb2wgc2F3Qm9vbGVhbnMoKQogICAgIHsKQEAgLTIwNDEsNiArMjA1MCwxMSBAQCBz
dHJ1Y3QgTm9kZSB7CiAgICAgewogICAgICAgICByZXR1cm4gaXNCb29sZWFuU3BlY3VsYXRpb24o
cHJlZGljdGlvbigpKTsKICAgICB9CisKKyAgICBib29sIHNob3VsZFNwZWN1bGF0ZU5vdEJvb2xl
YW4oKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGlzTm90Qm9vbGVhblNwZWN1bGF0aW9uKHByZWRp
Y3Rpb24oKSk7CisgICAgfQogICAgIAogICAgIGJvb2wgc2hvdWxkU3BlY3VsYXRlT3RoZXIoKQog
ICAgIHsKQEAgLTIwNjYsNiArMjA4MCwxMSBAQCBzdHJ1Y3QgTm9kZSB7CiAgICAgewogICAgICAg
ICByZXR1cm4gaXNTdHJpbmdTcGVjdWxhdGlvbihwcmVkaWN0aW9uKCkpOwogICAgIH0KKworICAg
IGJvb2wgc2hvdWxkU3BlY3VsYXRlTm90U3RyaW5nKCkKKyAgICB7CisgICAgICAgIHJldHVybiBp
c05vdFN0cmluZ1NwZWN1bGF0aW9uKHByZWRpY3Rpb24oKSk7CisgICAgfQogIAogICAgIGJvb2wg
c2hvdWxkU3BlY3VsYXRlU3RyaW5nT3JPdGhlcigpCiAgICAgewpAQCAtMjM2OCw2ICsyMzg3LDE4
IEBAIHN0cnVjdCBOb2RlIHsKICAgICAgICAgcmV0dXJuIG1fb3BJbmZvMi5hczxjb25zdCBDbGFz
c0luZm8qPigpOwogICAgIH0KIAorICAgIGJvb2wgaGFzU2lnbmF0dXJlKCkgY29uc3QKKyAgICB7
CisgICAgICAgIC8vIE5vdGUgdGhhdCB0aGlzIGRvZXMgbm90IGluY2x1ZGUgVGFpbENhbGwgdGhp
bmd5IGludGVudGlvbmFsbHkuCisgICAgICAgIC8vIENhbGxET00gdGhpbmd5IGFyZSBhbHdheXMg
Y29udmVydGVkIGZyb20gQ2FsbC4KKyAgICAgICAgcmV0dXJuIG9wKCkgPT0gQ2FsbCB8fCBvcCgp
ID09IENhbGxET007CisgICAgfQorCisgICAgY29uc3QgRE9NSklUOjpTaWduYXR1cmUqIHNpZ25h
dHVyZSgpCisgICAgeworICAgICAgICByZXR1cm4gbV9vcEluZm8uYXM8Y29uc3QgRE9NSklUOjpT
aWduYXR1cmUqPigpOworICAgIH0KKwogICAgIE5vZGUqIHJlcGxhY2VtZW50KCkgY29uc3QKICAg
ICB7CiAgICAgICAgIHJldHVybiBtX21pc2MucmVwbGFjZW1lbnQ7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR05vZGVUeXBlLmgKaW5kZXggZDk3NWI3NjIyMGMwMmMxMzExYzE5MmVhOWFkMDJl
NjAxYTUyMDRlMC4uZjM3NDIzY2VlYjIyODYyYjZjMmZhYTViYmEwMzQ1YTMzNmVmNjM5ZSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaApAQCAtNDA3LDYgKzQwNyw3IEBA
IG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKICAgICAvKiBOb2RlcyBmb3IgRE9NIEpJ
VCAqL1wKICAgICBtYWNybyhDaGVja0RPTSwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3Jv
KENhbGxET01HZXR0ZXIsIE5vZGVSZXN1bHRKUyB8IE5vZGVNdXN0R2VuZXJhdGUpIFwKKyAgICBt
YWNybyhDYWxsRE9NLCBOb2RlUmVzdWx0SlMgfCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAKIC8vIFRo
aXMgZW51bSBnZW5lcmF0ZXMgYSBtb25vdG9uaWNhbGx5IGluY3JlYXNpbmcgaWQgZm9yIGFsbCBO
b2RlIHR5cGVzLAogLy8gYW5kIGlzIHVzZWQgYnkgdGhlIHN1YnNlcXVlbnQgZW51bSB0byBmaWxs
IG91dCB0aGUgaWQgKGFzIGFjY2Vzc2VkIHZpYSB0aGUgTm9kZUlkTWFzaykuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNl
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9u
UGhhc2UuY3BwCmluZGV4IDZlZDcyOWIzYjg1NzMxYzBhNmU1MDk2NzA5Zjk4MDE2YTRiMWY4ZTAu
LmMwZmRlOTY5ZmJjMjQ2YzZiOTE4NjAwZGM0N2FmNzlhYWQxYTZmZjkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9u
UGhhc2UuY3BwCkBAIC03MTAsNyArNzEwLDggQEAgY2xhc3MgUHJlZGljdGlvblByb3BhZ2F0aW9u
UGhhc2UgOiBwdWJsaWMgUGhhc2UgewogICAgICAgICBjYXNlIEdldEZyb21Bcmd1bWVudHM6CiAg
ICAgICAgIGNhc2UgTG9hZEZyb21KU01hcEJ1Y2tldDoKICAgICAgICAgY2FzZSBUb051bWJlcjoK
LSAgICAgICAgY2FzZSBDYWxsRE9NR2V0dGVyOiB7CisgICAgICAgIGNhc2UgQ2FsbERPTUdldHRl
cjoKKyAgICAgICAgY2FzZSBDYWxsRE9NOiB7CiAgICAgICAgICAgICBzZXRQcmVkaWN0aW9uKG1f
Y3VycmVudE5vZGUtPmdldEhlYXBQcmVkaWN0aW9uKCkpOwogICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRv
RXhlY3V0ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgK
aW5kZXggMmM5OTgwMjI1NjY3ZGYzNDA1MGRjYTZhMzRlODdmMzRkNTk4ZWQyYi4uM2ZlOWRjMTVk
ZWUxN2I4MWQyMmZmNjQ0M2ZlZDY3ZjQ3Njk2M2NhMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgKQEAgLTIyMCw2ICsyMjAsNyBAQCBib29sIHNhZmVU
b0V4ZWN1dGUoQWJzdHJhY3RTdGF0ZVR5cGUmIHN0YXRlLCBHcmFwaCYgZ3JhcGgsIE5vZGUqIG5v
ZGUpCiAgICAgY2FzZSBHZXRFeGVjdXRhYmxlOgogICAgIGNhc2UgR2V0QnV0dGVyZmx5OgogICAg
IGNhc2UgQ2FsbERPTUdldHRlcjoKKyAgICBjYXNlIENhbGxET006CiAgICAgY2FzZSBDaGVja0RP
TToKICAgICBjYXNlIENoZWNrQXJyYXk6CiAgICAgY2FzZSBBcnJheWlmeToKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKaW5kZXggMjczMmZlODU4
NDRlNTFmNDY3MGIwYWU0MDNmMmFjMjM1MDRjODcxYy4uOWZkZTU1NTQ0Y2ExYTIwZWU4NWU4NWY1
MjUwZWY2MGY3YjU4YjFhNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTcGVjdWxhdGl2ZUpJVC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
cGVjdWxhdGl2ZUpJVC5jcHAKQEAgLTcyNjAsNiArNzI2MCw4NiBAQCBzdGF0aWMgdm9pZCBhbGxv
Y2F0ZVRlbXBvcmFyeVJlZ2lzdGVyc0ZvclBhdGNocG9pbnQoU3BlY3VsYXRpdmVKSVQqIGppdCwg
VmVjdG9yPAogICAgIH0KIH0KIAordm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUNhbGxET00o
Tm9kZSogbm9kZSkKK3sKKyAgICBjb25zdCBET01KSVQ6OlNpZ25hdHVyZSogc2lnbmF0dXJlID0g
bm9kZS0+c2lnbmF0dXJlKCk7CisKKyAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGhhdmUgYSB3YXkg
dG8gY2FsbCBmdW5jdGlvbnMgd2l0aCB0aGUgdmVjdG9yIG9mIHJlZ2lzdGVycy4KKyAgICAvLyBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYzMDk5CisgICAgVmVjdG9y
PFZhcmlhbnQ8U3BlY3VsYXRlQ2VsbE9wZXJhbmQsIFNwZWN1bGF0ZUludDMyT3BlcmFuZCwgU3Bl
Y3VsYXRlQm9vbGVhbk9wZXJhbmQ+PiBvcGVyYW5kczsKKyAgICBWZWN0b3I8R1BSUmVnPiByZWdz
OworCisgICAgYXV0byBhcHBlbmRDZWxsID0gWyZdKEVkZ2UmIGVkZ2UpIHsKKyAgICAgICAgU3Bl
Y3VsYXRlQ2VsbE9wZXJhbmQgb3BlcmFuZCh0aGlzLCBlZGdlKTsKKyAgICAgICAgcmVncy5hcHBl
bmQob3BlcmFuZC5ncHIoKSk7CisgICAgICAgIG9wZXJhbmRzLmFwcGVuZChXVEZNb3ZlKG9wZXJh
bmQpKTsKKyAgICB9OworCisgICAgYXV0byBhcHBlbmRTdHJpbmcgPSBbJl0oRWRnZSYgZWRnZSkg
eworICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBvcGVyYW5kKHRoaXMsIGVkZ2UpOworICAg
ICAgICBHUFJSZWcgZ3ByID0gb3BlcmFuZC5ncHIoKTsKKyAgICAgICAgcmVncy5hcHBlbmQoZ3By
KTsKKyAgICAgICAgc3BlY3VsYXRlU3RyaW5nKGVkZ2UsIGdwcik7CisgICAgICAgIG9wZXJhbmRz
LmFwcGVuZChXVEZNb3ZlKG9wZXJhbmQpKTsKKyAgICB9OworCisgICAgYXV0byBhcHBlbmRJbnQz
MiA9IFsmXShFZGdlJiBlZGdlKSB7CisgICAgICAgIFNwZWN1bGF0ZUludDMyT3BlcmFuZCBvcGVy
YW5kKHRoaXMsIGVkZ2UpOworICAgICAgICByZWdzLmFwcGVuZChvcGVyYW5kLmdwcigpKTsKKyAg
ICAgICAgb3BlcmFuZHMuYXBwZW5kKFdURk1vdmUob3BlcmFuZCkpOworICAgIH07CisKKyAgICBh
dXRvIGFwcGVuZEJvb2xlYW4gPSBbJl0oRWRnZSYgZWRnZSkgeworICAgICAgICBTcGVjdWxhdGVC
b29sZWFuT3BlcmFuZCBvcGVyYW5kKHRoaXMsIGVkZ2UpOworICAgICAgICByZWdzLmFwcGVuZChv
cGVyYW5kLmdwcigpKTsKKyAgICAgICAgb3BlcmFuZHMuYXBwZW5kKFdURk1vdmUob3BlcmFuZCkp
OworICAgIH07CisKKyAgICB1bnNpZ25lZCBpbmRleCA9IDA7CisgICAgbV9qaXQuZ3JhcGgoKS5k
b1RvQ2hpbGRyZW4obm9kZSwgWyZdKEVkZ2UgZWRnZSkgeworICAgICAgICBpZiAoIWluZGV4KQor
ICAgICAgICAgICAgYXBwZW5kQ2VsbChlZGdlKTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAg
ICBzd2l0Y2ggKHNpZ25hdHVyZS0+YXJndW1lbnRzW2luZGV4IC0gMV0pIHsKKyAgICAgICAgICAg
IGNhc2UgU3BlY1N0cmluZzoKKyAgICAgICAgICAgICAgICBhcHBlbmRTdHJpbmcoZWRnZSk7Cisg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIFNwZWNJbnQzMk9ubHk6Cisg
ICAgICAgICAgICAgICAgYXBwZW5kSW50MzIoZWRnZSk7CisgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICBjYXNlIFNwZWNCb29sZWFuOgorICAgICAgICAgICAgICAgIGFwcGVuZEJv
b2xlYW4oZWRnZSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAg
ICAgIH0KKyAgICAgICAgKytpbmRleDsKKyAgICB9KTsKKworICAgIEpTVmFsdWVSZWdzVGVtcG9y
YXJ5IHJlc3VsdCh0aGlzKTsKKyAgICBKU1ZhbHVlUmVncyByZXN1bHRSZWdzID0gcmVzdWx0LnJl
Z3MoKTsKKworICAgIHNpbGVudFNwaWxsQWxsUmVnaXN0ZXJzKHJlc3VsdFJlZ3MpOworICAgIGlu
dCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyA9IHNpZ25hdHVyZS0+YXJndW1lbnRDb3VudCAr
IDE7CisgICAgc3dpdGNoIChhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcykgeworICAgIGNhc2Ug
MToKKyAgICAgICAgY2FsbE9wZXJhdGlvbihyZWludGVycHJldF9jYXN0PEpfSklUT3BlcmF0aW9u
X0VQPihzaWduYXR1cmUtPnVuc2FmZUZ1bmN0aW9uKSwgZXh0cmFjdFJlc3VsdChyZXN1bHRSZWdz
KSwgcmVnc1swXSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgMjoKKyAgICAgICAgY2FsbE9w
ZXJhdGlvbihyZWludGVycHJldF9jYXN0PEpfSklUT3BlcmF0aW9uX0VQUD4oc2lnbmF0dXJlLT51
bnNhZmVGdW5jdGlvbiksIGV4dHJhY3RSZXN1bHQocmVzdWx0UmVncyksIHJlZ3NbMF0sIHJlZ3Nb
MV0pOworICAgICAgICBicmVhazsKKyAgICBjYXNlIDM6CisgICAgICAgIGNhbGxPcGVyYXRpb24o
cmVpbnRlcnByZXRfY2FzdDxKX0pJVE9wZXJhdGlvbl9FUFBQPihzaWduYXR1cmUtPnVuc2FmZUZ1
bmN0aW9uKSwgZXh0cmFjdFJlc3VsdChyZXN1bHRSZWdzKSwgcmVnc1swXSwgcmVnc1sxXSwgcmVn
c1syXSk7CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIFJFTEVBU0VfQVNT
RVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIHNpbGVudEZp
bGxBbGxSZWdpc3RlcnMocmVzdWx0UmVncyk7CisgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsK
KyAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdFJlZ3MsIG5vZGUpOworfQorCiB2b2lkIFNwZWN1bGF0
aXZlSklUOjpjb21waWxlQ2FsbERPTUdldHRlcihOb2RlKiBub2RlKQogewogICAgIERPTUpJVDo6
Q2FsbERPTUdldHRlclBhdGNocG9pbnQqIHBhdGNocG9pbnQgPSBub2RlLT5jYWxsRE9NR2V0dGVy
RGF0YSgpLT5wYXRjaHBvaW50OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTcGVjdWxhdGl2ZUpJVC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVj
dWxhdGl2ZUpJVC5oCmluZGV4IDU2NTM4YTI5NDZlNDAzMDBmMDUwZjMzNTUyYTczY2NhNzU5Y2Vh
Y2EuLjc5NmE4YTM1ZTZkMzA1N2ZhYWJlYTA3OWEwMjAzZDVkNDk5YTk1YjEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKQEAgLTE2NTEsNiArMTY1
MSwxMSBAQCBjbGFzcyBTcGVjdWxhdGl2ZUpJVCB7CiAgICAgICAgIG1faml0LnNldHVwQXJndW1l
bnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyKTsKICAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxT
ZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOwogICAgIH0KKyAgICBKSVRDb21waWxlcjo6Q2Fs
bCBjYWxsT3BlcmF0aW9uKEpfSklUT3BlcmF0aW9uX0VQUFAgb3BlcmF0aW9uLCBHUFJSZWcgcmVz
dWx0LCBHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIsIEdQUlJlZyBhcmczKQorICAgIHsKKyAgICAg
ICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIsIGFyZzMpOwor
ICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7Cisg
ICAgfQogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9KSVRPcGVyYXRpb25f
RUdQIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyKQog
ICAgIHsKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFy
ZzIpOwpAQCAtMTkxNSw2ICsxOTIwLDE2IEBAIGNsYXNzIFNwZWN1bGF0aXZlSklUIHsKICAgICAg
ICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIFRydXN0ZWRJbW1QdHIo
cG9pbnRlcikpOwogICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb24s
IHJlc3VsdC5wYXlsb2FkR1BSKCksIHJlc3VsdC50YWdHUFIoKSk7CiAgICAgfQorICAgIEpJVENv
bXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9KSVRPcGVyYXRpb25fRVBQIG9wZXJhdGlvbiwg
SlNWYWx1ZVJlZ3MgcmVzdWx0LCBHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIpCisgICAgeworICAg
ICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMik7CisgICAg
ICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0LnBheWxvYWRH
UFIoKSwgcmVzdWx0LnRhZ0dQUigpKTsKKyAgICB9CisgICAgSklUQ29tcGlsZXI6OkNhbGwgY2Fs
bE9wZXJhdGlvbihKX0pJVE9wZXJhdGlvbl9FUFBQIG9wZXJhdGlvbiwgSlNWYWx1ZVJlZ3MgcmVz
dWx0LCBHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIsIEdQUlJlZyBhcmczKQorICAgIHsKKyAgICAg
ICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIsIGFyZzMpOwor
ICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdC5wYXls
b2FkR1BSKCksIHJlc3VsdC50YWdHUFIoKSk7CisgICAgfQogICAgIEpJVENvbXBpbGVyOjpDYWxs
IGNhbGxPcGVyYXRpb24oSl9KSVRPcGVyYXRpb25fRUdQIG9wZXJhdGlvbiwgSlNWYWx1ZVJlZ3Mg
cmVzdWx0LCBHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIpCiAgICAgewogICAgICAgICBtX2ppdC5z
ZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMik7CkBAIC0yNTYyLDYgKzI1Nzcs
NyBAQCBjbGFzcyBTcGVjdWxhdGl2ZUpJVCB7CiAgICAgdm9pZCBjb21waWxlUmVhbGxvY2F0ZVBy
b3BlcnR5U3RvcmFnZShOb2RlKik7CiAgICAgdm9pZCBjb21waWxlR2V0QnV0dGVyZmx5KE5vZGUq
KTsKICAgICB2b2lkIGNvbXBpbGVDYWxsRE9NR2V0dGVyKE5vZGUqKTsKKyAgICB2b2lkIGNvbXBp
bGVDYWxsRE9NKE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVDaGVja0RPTShOb2RlKik7CiAgICAg
CiAjaWYgVVNFKEpTVkFMVUUzMl82NCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCmluZGV4IGNiMDRhNWE2NWM3NTBlMjNmMTdj
OWRiMjM0MTViNzM0YWVmNWI0YTQuLjEwMjQyOWRlMDAwYjMyYWRmZGQwMjc0M2VjNmRmZGRlZTgx
ZjUzYWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRp
dmVKSVQzMl82NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxh
dGl2ZUpJVDMyXzY0LmNwcApAQCAtNTU2MSw2ICs1NTYxLDEwIEBAIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgYnJlYWs7CiAgICAgfQogCisgICAgY2Fz
ZSBDYWxsRE9NOgorICAgICAgICBjb21waWxlQ2FsbERPTShub2RlKTsKKyAgICAgICAgYnJlYWs7
CisKICAgICBjYXNlIENhbGxET01HZXR0ZXI6CiAgICAgICAgIGNvbXBpbGVDYWxsRE9NR2V0dGVy
KG5vZGUpOwogICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCmluZGV4IGI0MWM2ZjMyYjMzZDgzYzY1ZTg1NGY4NjA3
OGQ3NGE1MjQwMjk4MTMuLjgzMGJmYWRjYWYyODY2N2EwOGIxYjgyZWU1OTg4YzBjNjVkMmNhYjkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2
NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0
LmNwcApAQCAtNTY5Myw2ICs1NjkzLDEwIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUo
Tm9kZSogbm9kZSkKICAgICAgICAgY29tcGlsZU1hdGVyaWFsaXplTmV3T2JqZWN0KG5vZGUpOwog
ICAgICAgICBicmVhazsKIAorICAgIGNhc2UgQ2FsbERPTToKKyAgICAgICAgY29tcGlsZUNhbGxE
T00obm9kZSk7CisgICAgICAgIGJyZWFrOworCiAgICAgY2FzZSBDYWxsRE9NR2V0dGVyOgogICAg
ICAgICBjb21waWxlQ2FsbERPTUdldHRlcihub2RlKTsKICAgICAgICAgYnJlYWs7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZG9taml0L0RPTUpJVEVmZmVjdC5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RvbWppdC9ET01KSVRFZmZlY3QuaAppbmRleCA1OWUzMDBjMzkyNjEw
NDdhMTEyMjkwZGE4NmI0ZmExNjhkOWM2MzA2Li42MWNmM2I3MWFiYmNlMzFlNDUxMzZhZjI4NmM2
YzdhZjIzNjY4YTZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZG9taml0L0RP
TUpJVEVmZmVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kb21qaXQvRE9NSklURWZm
ZWN0LmgKQEAgLTI4LDU2ICsyOCw2MiBAQAogI2luY2x1ZGUgIkRPTUpJVEhlYXBSYW5nZS5oIgog
I2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgogCi0jaWYgRU5BQkxFKEpJVCkKLQogbmFtZXNwYWNl
IEpTQyB7IG5hbWVzcGFjZSBET01KSVQgewogCi1zdHJ1Y3QgRWZmZWN0IHsKK2NsYXNzIEVmZmVj
dCB7CitwdWJsaWM6CiAgICAgSGVhcFJhbmdlIHJlYWRzIHsgSGVhcFJhbmdlOjp0b3AoKSB9Owog
ICAgIEhlYXBSYW5nZSB3cml0ZXMgeyBIZWFwUmFuZ2U6OnRvcCgpIH07Ci0gICAgT3B0aW9uYWw8
SGVhcFJhbmdlPiBkZWY7CisgICAgSGVhcFJhbmdlIGRlZiB7IEhlYXBSYW5nZTo6dG9wKCkgfTsK
KworICAgIGNvbnN0ZXhwciBFZmZlY3QoKSA9IGRlZmF1bHQ7CisgICAgY29uc3RleHByIEVmZmVj
dChIZWFwUmFuZ2UgcmVhZHMsIEhlYXBSYW5nZSB3cml0ZXMpCisgICAgICAgIDogcmVhZHMocmVh
ZHMpCisgICAgICAgICwgd3JpdGVzKHdyaXRlcykKKyAgICB7CisgICAgfQorCisgICAgY29uc3Rl
eHByIEVmZmVjdChIZWFwUmFuZ2UgcmVhZHMsIEhlYXBSYW5nZSB3cml0ZXMsIEhlYXBSYW5nZSBk
ZWYpCisgICAgICAgIDogcmVhZHMocmVhZHMpCisgICAgICAgICwgd3JpdGVzKHdyaXRlcykKKyAg
ICAgICAgLCBkZWYoZGVmKQorICAgIHsKKyAgICB9CiAKLSAgICBzdGF0aWMgRWZmZWN0IGZvclJl
YWRXcml0ZShIZWFwUmFuZ2UgcmVhZFJhbmdlLCBIZWFwUmFuZ2Ugd3JpdGVSYW5nZSkKKyAgICBj
b25zdGV4cHIgc3RhdGljIEVmZmVjdCBmb3JXcml0ZShIZWFwUmFuZ2Ugd3JpdGVSYW5nZSkKICAg
ICB7Ci0gICAgICAgIEVmZmVjdCBlZmZlY3Q7Ci0gICAgICAgIGVmZmVjdC5yZWFkcyA9IHJlYWRS
YW5nZTsKLSAgICAgICAgZWZmZWN0LndyaXRlcyA9IHdyaXRlUmFuZ2U7Ci0gICAgICAgIHJldHVy
biBlZmZlY3Q7CisgICAgICAgIHJldHVybiBFZmZlY3QoSGVhcFJhbmdlOjpub25lKCksIHdyaXRl
UmFuZ2UpOwogICAgIH0KIAotICAgIHN0YXRpYyBFZmZlY3QgZm9yUHVyZSgpCisgICAgY29uc3Rl
eHByIHN0YXRpYyBFZmZlY3QgZm9yUmVhZChIZWFwUmFuZ2UgcmVhZFJhbmdlKQogICAgIHsKLSAg
ICAgICAgRWZmZWN0IGVmZmVjdDsKLSAgICAgICAgZWZmZWN0LnJlYWRzID0gSGVhcFJhbmdlOjpu
b25lKCk7Ci0gICAgICAgIGVmZmVjdC53cml0ZXMgPSBIZWFwUmFuZ2U6Om5vbmUoKTsKLSAgICAg
ICAgZWZmZWN0LmRlZiA9IEhlYXBSYW5nZTo6bm9uZSgpOwotICAgICAgICByZXR1cm4gZWZmZWN0
OworICAgICAgICByZXR1cm4gRWZmZWN0KHJlYWRSYW5nZSwgSGVhcFJhbmdlOjpub25lKCkpOwog
ICAgIH0KIAotICAgIHN0YXRpYyBFZmZlY3QgZm9yRGVmKEhlYXBSYW5nZSBkZWYpCisgICAgY29u
c3RleHByIHN0YXRpYyBFZmZlY3QgZm9yUmVhZFdyaXRlKEhlYXBSYW5nZSByZWFkUmFuZ2UsIEhl
YXBSYW5nZSB3cml0ZVJhbmdlKQogICAgIHsKLSAgICAgICAgRWZmZWN0IGVmZmVjdDsKLSAgICAg
ICAgZWZmZWN0LnJlYWRzID0gZGVmOwotICAgICAgICBlZmZlY3Qud3JpdGVzID0gSGVhcFJhbmdl
Ojpub25lKCk7Ci0gICAgICAgIGVmZmVjdC5kZWYgPSBkZWY7Ci0gICAgICAgIHJldHVybiBlZmZl
Y3Q7CisgICAgICAgIHJldHVybiBFZmZlY3QocmVhZFJhbmdlLCB3cml0ZVJhbmdlKTsKICAgICB9
CiAKLSAgICBzdGF0aWMgRWZmZWN0IGZvckRlZihIZWFwUmFuZ2UgZGVmLCBIZWFwUmFuZ2UgcmVh
ZFJhbmdlLCBIZWFwUmFuZ2Ugd3JpdGVSYW5nZSkKKyAgICBjb25zdGV4cHIgc3RhdGljIEVmZmVj
dCBmb3JQdXJlKCkKICAgICB7Ci0gICAgICAgIEVmZmVjdCBlZmZlY3Q7Ci0gICAgICAgIGVmZmVj
dC5yZWFkcyA9IHJlYWRSYW5nZTsKLSAgICAgICAgZWZmZWN0LndyaXRlcyA9IHdyaXRlUmFuZ2U7
Ci0gICAgICAgIGVmZmVjdC5kZWYgPSBkZWY7Ci0gICAgICAgIHJldHVybiBlZmZlY3Q7CisgICAg
ICAgIHJldHVybiBFZmZlY3QoSGVhcFJhbmdlOjpub25lKCksIEhlYXBSYW5nZTo6bm9uZSgpLCBI
ZWFwUmFuZ2U6Om5vbmUoKSk7CiAgICAgfQogCi0gICAgYm9vbCBtdXN0R2VuZXJhdGUoKSBjb25z
dAorICAgIGNvbnN0ZXhwciBzdGF0aWMgRWZmZWN0IGZvckRlZihIZWFwUmFuZ2UgZGVmKQorICAg
IHsKKyAgICAgICAgcmV0dXJuIEVmZmVjdChkZWYsIEhlYXBSYW5nZTo6bm9uZSgpLCBkZWYpOwor
ICAgIH0KKworICAgIGNvbnN0ZXhwciBzdGF0aWMgRWZmZWN0IGZvckRlZihIZWFwUmFuZ2UgZGVm
LCBIZWFwUmFuZ2UgcmVhZFJhbmdlLCBIZWFwUmFuZ2Ugd3JpdGVSYW5nZSkKKyAgICB7CisgICAg
ICAgIHJldHVybiBFZmZlY3QocmVhZFJhbmdlLCB3cml0ZVJhbmdlLCBkZWYpOworICAgIH0KKwor
ICAgIGNvbnN0ZXhwciBib29sIG11c3RHZW5lcmF0ZSgpIGNvbnN0CiAgICAgewogICAgICAgICBy
ZXR1cm4gISF3cml0ZXM7CiAgICAgfQogfTsKIAogfSB9Ci0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RvbWppdC9ET01KSVRIZWFwUmFuZ2UuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kb21qaXQvRE9NSklUSGVhcFJhbmdlLmgKaW5kZXggZmI5Mzk5OWZmNzg1
YzA2ZjdkYWNkNmRhOWM4ZDZlMGE5NTY3ODY3NC4uZjcwZmVjYzY5MDZkZDViZTA1NDI5NWU3MDhl
OTRiNzc5MzExNjQwZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RvbWppdC9E
T01KSVRIZWFwUmFuZ2UuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZG9taml0L0RPTUpJ
VEhlYXBSYW5nZS5oCkBAIC0yOCw4ICsyOCw2IEBACiAjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMu
aD4KICNpbmNsdWRlIDx3dGYvUHJpbnRTdHJlYW0uaD4KIAotI2lmIEVOQUJMRShKSVQpCi0KIG5h
bWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgRE9NSklUIHsKIAogY2xhc3MgSGVhcFJhbmdlIHsKQEAg
LTQ3LDcgKzQ1LDYgQEAgY2xhc3MgSGVhcFJhbmdlIHsKICAgICAgICAgQVNTRVJUX1dJVEhfTUVT
U0FHRShiZWdpbiA8PSBlbmQsICJiZWdpbiA8PSBlbmQgaXMgdGhlIGludmFyaWFudCBvZiB0aGlz
IEhlYXBSYW5nZS4iKTsKICAgICB9CiAKLXByaXZhdGU6CiAgICAgZW51bSBDb25zdEV4cHJUYWcg
eyBDb25zdEV4cHIgfTsKICAgICBjb25zdGV4cHIgSGVhcFJhbmdlKENvbnN0RXhwclRhZywgdWlu
dDE2X3QgYmVnaW4sIHVpbnQxNl90IGVuZCkKICAgICAgICAgOiBtX2JlZ2luKGJlZ2luKQpAQCAt
NTUsMjEgKzUyLDEzIEBAIGNsYXNzIEhlYXBSYW5nZSB7CiAgICAgewogICAgIH0KIAotICAgIHRl
bXBsYXRlPHVpbnQxNl90IGJlZ2luLCB1aW50MTZfdCBlbmQ+Ci0gICAgc3RhdGljIGNvbnN0ZXhw
ciBIZWFwUmFuZ2UgZnJvbUNvbnN0YW50KCkKLSAgICB7Ci0gICAgICAgIHN0YXRpY19hc3NlcnQo
YmVnaW4gPD0gZW5kLCAiYmVnaW4gPD0gZW5kIGlzIHRoZSBpbnZhcmlhbnQgb2YgdGhpcyBIZWFw
UmFuZ2UuIik7Ci0gICAgICAgIHJldHVybiBIZWFwUmFuZ2UoQ29uc3RFeHByLCBiZWdpbiwgZW5k
KTsKLSAgICB9Ci0KLXB1YmxpYzoKICAgICBlbnVtIFJhd1JlcHJlc2VudGF0aW9uVGFnIHsgUmF3
UmVwcmVzZW50YXRpb24gfTsKICAgICBleHBsaWNpdCBjb25zdGV4cHIgSGVhcFJhbmdlKFJhd1Jl
cHJlc2VudGF0aW9uVGFnLCB1aW50MzJfdCB2YWx1ZSkKICAgICAgICAgOiBtX3Jhdyh2YWx1ZSkK
ICAgICB7CiAgICAgfQogCi0gICAgc3RhdGljIEhlYXBSYW5nZSBmcm9tUmF3KHVpbnQzMl90IHZh
bHVlKQorICAgIGNvbnN0ZXhwciBzdGF0aWMgSGVhcFJhbmdlIGZyb21SYXcodWludDMyX3QgdmFs
dWUpCiAgICAgewogICAgICAgICByZXR1cm4gSGVhcFJhbmdlKFJhd1JlcHJlc2VudGF0aW9uLCB2
YWx1ZSk7CiAgICAgfQpAQCAtNzgsMTYgKzY3LDI4IEBAIGNsYXNzIEhlYXBSYW5nZSB7CiAgICAg
dWludDE2X3QgZW5kKCkgY29uc3QgeyByZXR1cm4gbV9lbmQ7IH0KICAgICB1aW50MzJfdCByYXdS
ZXByZXNlbnRhdGlvbigpIHsgcmV0dXJuIG1fcmF3OyB9CiAKLSAgICBleHBsaWNpdCBvcGVyYXRv
ciBib29sKCkgY29uc3QKKyAgICBjb25zdGV4cHIgZXhwbGljaXQgb3BlcmF0b3IgYm9vbCgpIGNv
bnN0CiAgICAgewogICAgICAgICByZXR1cm4gbV9iZWdpbiAhPSBtX2VuZDsKICAgICB9CiAKLSAg
ICBib29sIG9wZXJhdG9yPT0oY29uc3QgSGVhcFJhbmdlJiBvdGhlcikgY29uc3QKKyAgICBjb25z
dGV4cHIgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEhlYXBSYW5nZSYgb3RoZXIpIGNvbnN0CiAgICAg
ewogICAgICAgICByZXR1cm4gbV9iZWdpbiA9PSBvdGhlci5tX2JlZ2luICYmIG1fZW5kID09IG90
aGVyLm1fZW5kOwogICAgIH0KIAorICAgIGNvbnN0ZXhwciBib29sIG9wZXJhdG9yIT0oY29uc3Qg
SGVhcFJhbmdlJiBvdGhlcikgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiAhb3BlcmF0b3I9
PShvdGhlcik7CisgICAgfQorCisgICAgdGVtcGxhdGU8dWludDE2X3QgYmVnaW4sIHVpbnQxNl90
IGVuZD4KKyAgICBzdGF0aWMgY29uc3RleHByIEhlYXBSYW5nZSBmcm9tQ29uc3RhbnQoKQorICAg
IHsKKyAgICAgICAgc3RhdGljX2Fzc2VydChiZWdpbiA8PSBlbmQsICJiZWdpbiA8PSBlbmQgaXMg
dGhlIGludmFyaWFudCBvZiB0aGlzIEhlYXBSYW5nZS4iKTsKKyAgICAgICAgcmV0dXJuIEhlYXBS
YW5nZShDb25zdEV4cHIsIGJlZ2luLCBlbmQpOworICAgIH0KKwogICAgIHN0YXRpYyBjb25zdGV4
cHIgSGVhcFJhbmdlIHRvcCgpIHsgcmV0dXJuIGZyb21Db25zdGFudDwwLCBVSU5UMTZfTUFYPigp
OyB9CiAgICAgc3RhdGljIGNvbnN0ZXhwciBIZWFwUmFuZ2Ugbm9uZSgpIHsgcmV0dXJuIGZyb21D
b25zdGFudDxVSU5UMTZfTUFYLCBVSU5UMTZfTUFYPigpOyB9IC8vIEVtcHR5IHJhbmdlLgogCkBA
IC0xMjcsNSArMTI4LDMgQEAgY2xhc3MgSGVhcFJhbmdlIHsKIH07CiAKIH0gfQotCi0jZW5kaWYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kb21qaXQvRE9NSklUU2lnbmF0dXJl
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZG9taml0L0RPTUpJVFNpZ25hdHVyZS5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjM3ZDYwZWQ3ZjNlYWYwNjNkOWIwYzlkODllZDYzNDg3YzRjYmI1YTMKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZG9taml0L0RPTUpJVFNpZ25hdHVyZS5o
CkBAIC0wLDAgKzEsNzAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
CisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkNsYXNzSW5mby5oIgorI2luY2x1ZGUg
IkRPTUpJVEVmZmVjdC5oIgorI2luY2x1ZGUgIlNwZWN1bGF0ZWRUeXBlLmgiCisKK25hbWVzcGFj
ZSBKU0MgeyBuYW1lc3BhY2UgRE9NSklUIHsKKworLy8gQ3VycmVudGx5LCB3ZSBvbmx5IHN1cHBv
cnQgZnVuY3Rpb25zIHdoaWNoIGFyZ3VtZW50cyB1cCB0byAyLgorLy8gRXZlbnR1YWxseSwgd2Ug
c2hvdWxkIGV4dGVuZCB0aGlzLiBCdXQgcG9zc2libHksIDIgb3IgMyBjYW4gY292ZXIgdHlwaWNh
bCB1c2UgY2FzZXMuCisjZGVmaW5lIEpTQ19ET01KSVRfU0lHTkFUVVJFX01BWF9BUkdVTUVOVFMg
MgorCitjbGFzcyBQYXRjaHBvaW50OworCit0eXBlZGVmIFJlZjxQYXRjaHBvaW50PiBDaGVja0RP
TUdlbmVyYXRvckZ1bmN0aW9uKHZvaWQpOworCitjbGFzcyBTaWduYXR1cmUgeworcHVibGljOgor
ICAgIHRlbXBsYXRlPHR5cGVuYW1lLi4uIEFyZ3VtZW50cz4KKyAgICBjb25zdGV4cHIgU2lnbmF0
dXJlKHVpbnRwdHJfdCB1bnNhZmVGdW5jdGlvbiwgQ2hlY2tET01HZW5lcmF0b3JGdW5jdGlvbiog
Y2hlY2tET01HZW5lcmF0b3JGdW5jdGlvbiwgY29uc3QgQ2xhc3NJbmZvKiBjbGFzc0luZm8sIEVm
ZmVjdCBlZmZlY3QsIFNwZWN1bGF0ZWRUeXBlIHJlc3VsdCwgQXJndW1lbnRzLi4uIGFyZ3VtZW50
cykKKyAgICAgICAgOiB1bnNhZmVGdW5jdGlvbih1bnNhZmVGdW5jdGlvbikKKyAgICAgICAgLCBj
aGVja0RPTUdlbmVyYXRvckZ1bmN0aW9uKGNoZWNrRE9NR2VuZXJhdG9yRnVuY3Rpb24pCisgICAg
ICAgICwgY2xhc3NJbmZvKGNsYXNzSW5mbykKKyAgICAgICAgLCBlZmZlY3QoZWZmZWN0KQorICAg
ICAgICAsIHJlc3VsdChyZXN1bHQpCisgICAgICAgICwgYXJndW1lbnRzIHtzdGF0aWNfY2FzdDxT
cGVjdWxhdGVkVHlwZT4oYXJndW1lbnRzKS4uLn0KKyAgICAgICAgLCBhcmd1bWVudENvdW50KHNp
emVvZi4uLihhcmd1bWVudHMpKQorICAgIHsKKyAgICB9CisKKyAgICBSZWY8UGF0Y2hwb2ludD4g
Y2hlY2tET00oKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIGNoZWNrRE9NR2VuZXJhdG9y
RnVuY3Rpb24oKTsKKyAgICB9CisKKyAgICB1aW50cHRyX3QgdW5zYWZlRnVuY3Rpb247CisgICAg
Q2hlY2tET01HZW5lcmF0b3JGdW5jdGlvbiogY2hlY2tET01HZW5lcmF0b3JGdW5jdGlvbjsKKyAg
ICBjb25zdCBDbGFzc0luZm8qIGNvbnN0IGNsYXNzSW5mbzsKKyAgICBjb25zdCBFZmZlY3QgZWZm
ZWN0OworICAgIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIHJlc3VsdDsKKyAgICBjb25zdCBTcGVjdWxh
dGVkVHlwZSBhcmd1bWVudHNbSlNDX0RPTUpJVF9TSUdOQVRVUkVfTUFYX0FSR1VNRU5UU107Cisg
ICAgY29uc3QgdW5zaWduZWQgYXJndW1lbnRDb3VudDsKK307CisKK30gfQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCmluZGV4IDU0ZjRlNzJlNjQxOWJm
ZTI1NTY1M2UzNjVmYmFjODIwMzJmZmRlOTcuLjNiYTE1ZTZlMjg0NGQzMDQwM2U4ZGQ0ZTAxNmMy
NGIwYzA0NmRmYzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2Fw
YWJpbGl0aWVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxp
dGllcy5jcHAKQEAgLTI3Myw2ICsyNzMsNyBAQCBpbmxpbmUgQ2FwYWJpbGl0eUxldmVsIGNhbkNv
bXBpbGUoTm9kZSogbm9kZSkKICAgICBjYXNlIERlZmluZUFjY2Vzc29yUHJvcGVydHk6CiAgICAg
Y2FzZSBUb0xvd2VyQ2FzZToKICAgICBjYXNlIENoZWNrRE9NOgorICAgIGNhc2UgQ2FsbERPTToK
ICAgICBjYXNlIENhbGxET01HZXR0ZXI6CiAgICAgICAgIC8vIFRoZXNlIGFyZSBPSy4KICAgICAg
ICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2Vy
REZHVG9CMy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5j
cHAKaW5kZXggYWQxNjE1NzIwMjdjNDFmMzAwNjgzZGMxMjI0MmY5Yjk1ZDQ1OTBjMi4uNDBlYmMx
NTc5MGNkMGQ0NTM4N2ZjNTBkZGZmMmQ4NTExZTZlN2YwZCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcApAQCAtMTA2MCw2ICsxMDYwLDkgQEAgY2xh
c3MgTG93ZXJERkdUb0IzIHsKICAgICAgICAgY2FzZSBDaGVja0RPTToKICAgICAgICAgICAgIGNv
bXBpbGVDaGVja0RPTSgpOwogICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQ2FsbERP
TToKKyAgICAgICAgICAgIGNvbXBpbGVDYWxsRE9NKCk7CisgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgY2FzZSBDYWxsRE9NR2V0dGVyOgogICAgICAgICAgICAgY29tcGlsZUNhbGxET01HZXR0
ZXIoKTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtOTEwMCw2ICs5MTAzLDU0IEBAIGNsYXNzIExv
d2VyREZHVG9CMyB7CiAgICAgICAgIHBhdGNocG9pbnQtPmVmZmVjdHMgPSBFZmZlY3RzOjpmb3JD
aGVjaygpOwogICAgIH0KIAorICAgIHZvaWQgY29tcGlsZUNhbGxET00oKQorICAgIHsKKyAgICAg
ICAgY29uc3QgRE9NSklUOjpTaWduYXR1cmUqIHNpZ25hdHVyZSA9IG1fbm9kZS0+c2lnbmF0dXJl
KCk7CisKKyAgICAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBoYXZlIGEgd2F5IHRvIGNhbGwgZnVu
Y3Rpb25zIHdpdGggdGhlIHZlY3RvciBvZiByZWdpc3RlcnMuCisgICAgICAgIC8vIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjMwOTkKKyAgICAgICAgVmVjdG9yPExW
YWx1ZT4gb3BlcmFuZHM7CisKKyAgICAgICAgdW5zaWduZWQgaW5kZXggPSAwOworICAgICAgICBE
RkdfTk9ERV9ET19UT19DSElMRFJFTihtX2dyYXBoLCBtX25vZGUsIFsmXShOb2RlKiwgRWRnZSBl
ZGdlKSB7CisgICAgICAgICAgICBpZiAoIWluZGV4KQorICAgICAgICAgICAgICAgIG9wZXJhbmRz
LmFwcGVuZChsb3dDZWxsKGVkZ2UpKTsKKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAg
ICAgIHN3aXRjaCAoc2lnbmF0dXJlLT5hcmd1bWVudHNbaW5kZXggLSAxXSkgeworICAgICAgICAg
ICAgICAgIGNhc2UgU3BlY1N0cmluZzoKKyAgICAgICAgICAgICAgICAgICAgb3BlcmFuZHMuYXBw
ZW5kKGxvd1N0cmluZyhlZGdlKSk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgICAgIGNhc2UgU3BlY0ludDMyT25seToKKyAgICAgICAgICAgICAgICAgICAgb3BlcmFu
ZHMuYXBwZW5kKGxvd0ludDMyKGVkZ2UpKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICAgICAgY2FzZSBTcGVjQm9vbGVhbjoKKyAgICAgICAgICAgICAgICAgICAgb3Bl
cmFuZHMuYXBwZW5kKGxvd0Jvb2xlYW4oZWRnZSkpOworICAgICAgICAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICArK2luZGV4
OworICAgICAgICB9KTsKKworICAgICAgICBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMg
PSBzaWduYXR1cmUtPmFyZ3VtZW50Q291bnQgKyAxOworICAgICAgICBMVmFsdWUgcmVzdWx0Owor
ICAgICAgICBzd2l0Y2ggKGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKSB7CisgICAgICAgIGNh
c2UgMToKKyAgICAgICAgICAgIHJlc3VsdCA9IHZtQ2FsbChJbnQ2NCwgbV9vdXQub3BlcmF0aW9u
KHJlaW50ZXJwcmV0X2Nhc3Q8Sl9KSVRPcGVyYXRpb25fRVA+KHNpZ25hdHVyZS0+dW5zYWZlRnVu
Y3Rpb24pKSwgbV9jYWxsRnJhbWUsIG9wZXJhbmRzWzBdKTsKKyAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICBjYXNlIDI6CisgICAgICAgICAgICByZXN1bHQgPSB2bUNhbGwoSW50NjQsIG1fb3V0
Lm9wZXJhdGlvbihyZWludGVycHJldF9jYXN0PEpfSklUT3BlcmF0aW9uX0VQUD4oc2lnbmF0dXJl
LT51bnNhZmVGdW5jdGlvbikpLCBtX2NhbGxGcmFtZSwgb3BlcmFuZHNbMF0sIG9wZXJhbmRzWzFd
KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIDM6CisgICAgICAgICAgICByZXN1
bHQgPSB2bUNhbGwoSW50NjQsIG1fb3V0Lm9wZXJhdGlvbihyZWludGVycHJldF9jYXN0PEpfSklU
T3BlcmF0aW9uX0VQUFA+KHNpZ25hdHVyZS0+dW5zYWZlRnVuY3Rpb24pKSwgbV9jYWxsRnJhbWUs
IG9wZXJhbmRzWzBdLCBvcGVyYW5kc1sxXSwgb3BlcmFuZHNbMl0pOworICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVB
Q0hFRCgpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAgICBzZXRKU1Zh
bHVlKHJlc3VsdCk7CisgICAgfQorCiAgICAgdm9pZCBjb21waWxlQ2FsbERPTUdldHRlcigpCiAg
ICAgewogICAgICAgICBET01KSVQ6OkNhbGxET01HZXR0ZXJQYXRjaHBvaW50KiBkb21KSVQgPSBt
X25vZGUtPmNhbGxET01HZXR0ZXJEYXRhKCktPnBhdGNocG9pbnQ7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCmluZGV4IDhmNmM2OTcxYTZiZWU5ZjFmYjZmYzM2OGRl
NWEyY2I4NDc2NDRhNjguLjIwYjcxZjQ1MmNlNDRiNWNjNTZjYzcxYzJkNzZiMTdiNTg4ZmU2NjUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCkBAIC0xNTgsNiAr
MTU4LDcgQEAgdHlwZWRlZiBFbmNvZGVkSlNWYWx1ZSAoSklUX09QRVJBVElPTiAqSl9KSVRPcGVy
YXRpb25fRUpQKShFeGVjU3RhdGUqLCBFbmNvZGVkSlMKIHR5cGVkZWYgRW5jb2RlZEpTVmFsdWUg
KEpJVF9PUEVSQVRJT04gKkpfSklUT3BlcmF0aW9uX0VHUCkoRXhlY1N0YXRlKiwgSlNHbG9iYWxP
YmplY3QqLCB2b2lkKik7CiB0eXBlZGVmIEVuY29kZWRKU1ZhbHVlIChKSVRfT1BFUkFUSU9OICpK
X0pJVE9wZXJhdGlvbl9FUCkoRXhlY1N0YXRlKiwgdm9pZCopOwogdHlwZWRlZiBFbmNvZGVkSlNW
YWx1ZSAoSklUX09QRVJBVElPTiAqSl9KSVRPcGVyYXRpb25fRVBQKShFeGVjU3RhdGUqLCB2b2lk
Kiwgdm9pZCopOwordHlwZWRlZiBFbmNvZGVkSlNWYWx1ZSAoSklUX09QRVJBVElPTiAqSl9KSVRP
cGVyYXRpb25fRVBQUCkoRXhlY1N0YXRlKiwgdm9pZCosIHZvaWQqLCB2b2lkKik7CiB0eXBlZGVm
IEVuY29kZWRKU1ZhbHVlIChKSVRfT1BFUkFUSU9OICpKX0pJVE9wZXJhdGlvbl9FUFMpKEV4ZWNT
dGF0ZSosIHZvaWQqLCBzaXplX3QpOwogdHlwZWRlZiBFbmNvZGVkSlNWYWx1ZSAoSklUX09QRVJB
VElPTiAqSl9KSVRPcGVyYXRpb25fRVBjKShFeGVjU3RhdGUqLCBJbnN0cnVjdGlvbiopOwogdHlw
ZWRlZiBFbmNvZGVkSlNWYWx1ZSAoSklUX09QRVJBVElPTiAqSl9KSVRPcGVyYXRpb25fRUpzY0Mp
KEV4ZWNTdGF0ZSosIEpTU2NvcGUqLCBKU0NlbGwqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUVGh1bmtzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUVGh1bmtzLmNwcAppbmRleCBiZjBhN2Y5MDkxOWE1YjZkMGJlZWQ5MjhhYmRhZjcxMGM5ZGM5
ZDBiLi40MGMxMmNlYzk0ZTAxYTA4NDA0ZjdiNmQ5NjcyMWYxMDUxZjQ4MzE5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFRodW5rcy5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRUaHVua3MuY3BwCkBAIC05MCwxMCArOTAsMTAgQEAgdm9pZCBK
SVRUaHVua3M6OmZpbmFsaXplKEhhbmRsZTxVbmtub3duPiBoYW5kbGUsIHZvaWQqKQogCiBOYXRp
dmVFeGVjdXRhYmxlKiBKSVRUaHVua3M6Omhvc3RGdW5jdGlvblN0dWIoVk0qIHZtLCBOYXRpdmVG
dW5jdGlvbiBmdW5jdGlvbiwgTmF0aXZlRnVuY3Rpb24gY29uc3RydWN0b3IsIGNvbnN0IFN0cmlu
ZyYgbmFtZSkKIHsKLSAgICByZXR1cm4gaG9zdEZ1bmN0aW9uU3R1Yih2bSwgZnVuY3Rpb24sIGNv
bnN0cnVjdG9yLCBudWxscHRyLCBOb0ludHJpbnNpYywgbmFtZSk7CisgICAgcmV0dXJuIGhvc3RG
dW5jdGlvblN0dWIodm0sIGZ1bmN0aW9uLCBjb25zdHJ1Y3RvciwgbnVsbHB0ciwgTm9JbnRyaW5z
aWMsIG51bGxwdHIsIG5hbWUpOwogfQogCi1OYXRpdmVFeGVjdXRhYmxlKiBKSVRUaHVua3M6Omhv
c3RGdW5jdGlvblN0dWIoVk0qIHZtLCBOYXRpdmVGdW5jdGlvbiBmdW5jdGlvbiwgTmF0aXZlRnVu
Y3Rpb24gY29uc3RydWN0b3IsIFRodW5rR2VuZXJhdG9yIGdlbmVyYXRvciwgSW50cmluc2ljIGlu
dHJpbnNpYywgY29uc3QgU3RyaW5nJiBuYW1lKQorTmF0aXZlRXhlY3V0YWJsZSogSklUVGh1bmtz
Ojpob3N0RnVuY3Rpb25TdHViKFZNKiB2bSwgTmF0aXZlRnVuY3Rpb24gZnVuY3Rpb24sIE5hdGl2
ZUZ1bmN0aW9uIGNvbnN0cnVjdG9yLCBUaHVua0dlbmVyYXRvciBnZW5lcmF0b3IsIEludHJpbnNp
YyBpbnRyaW5zaWMsIGNvbnN0IERPTUpJVDo6U2lnbmF0dXJlKiBzaWduYXR1cmUsIGNvbnN0IFN0
cmluZyYgbmFtZSkKIHsKICAgICBBU1NFUlQoIWlzQ29tcGlsYXRpb25UaHJlYWQoKSk7ICAgIAog
ICAgIEFTU0VSVCh2bS0+Y2FuVXNlSklUKCkpOwpAQCAtMTEwLDE0ICsxMTAsMTQgQEAgTmF0aXZl
RXhlY3V0YWJsZSogSklUVGh1bmtzOjpob3N0RnVuY3Rpb25TdHViKFZNKiB2bSwgTmF0aXZlRnVu
Y3Rpb24gZnVuY3Rpb24sIE4KICAgICAKICAgICBSZWZQdHI8SklUQ29kZT4gZm9yQ29uc3RydWN0
ID0gYWRvcHRSZWYobmV3IE5hdGl2ZUpJVENvZGUoTWFjcm9Bc3NlbWJsZXJDb2RlUmVmOjpjcmVh
dGVTZWxmTWFuYWdlZENvZGVSZWYoY3RpTmF0aXZlQ29uc3RydWN0KHZtKSksIEpJVENvZGU6Okhv
c3RDYWxsVGh1bmspKTsKICAgICAKLSAgICBOYXRpdmVFeGVjdXRhYmxlKiBuYXRpdmVFeGVjdXRh
YmxlID0gTmF0aXZlRXhlY3V0YWJsZTo6Y3JlYXRlKCp2bSwgZm9yQ2FsbCwgZnVuY3Rpb24sIGZv
ckNvbnN0cnVjdCwgY29uc3RydWN0b3IsIGludHJpbnNpYywgbmFtZSk7CisgICAgTmF0aXZlRXhl
Y3V0YWJsZSogbmF0aXZlRXhlY3V0YWJsZSA9IE5hdGl2ZUV4ZWN1dGFibGU6OmNyZWF0ZSgqdm0s
IGZvckNhbGwsIGZ1bmN0aW9uLCBmb3JDb25zdHJ1Y3QsIGNvbnN0cnVjdG9yLCBpbnRyaW5zaWMs
IHNpZ25hdHVyZSwgbmFtZSk7CiAgICAgd2Vha0FkZCgqbV9ob3N0RnVuY3Rpb25TdHViTWFwLCBz
dGQ6Om1ha2VfdHVwbGUoZnVuY3Rpb24sIGNvbnN0cnVjdG9yLCBuYW1lKSwgV2VhazxOYXRpdmVF
eGVjdXRhYmxlPihuYXRpdmVFeGVjdXRhYmxlLCB0aGlzKSk7CiAgICAgcmV0dXJuIG5hdGl2ZUV4
ZWN1dGFibGU7CiB9CiAKIE5hdGl2ZUV4ZWN1dGFibGUqIEpJVFRodW5rczo6aG9zdEZ1bmN0aW9u
U3R1YihWTSogdm0sIE5hdGl2ZUZ1bmN0aW9uIGZ1bmN0aW9uLCBUaHVua0dlbmVyYXRvciBnZW5l
cmF0b3IsIEludHJpbnNpYyBpbnRyaW5zaWMsIGNvbnN0IFN0cmluZyYgbmFtZSkKIHsKLSAgICBy
ZXR1cm4gaG9zdEZ1bmN0aW9uU3R1Yih2bSwgZnVuY3Rpb24sIGNhbGxIb3N0RnVuY3Rpb25Bc0Nv
bnN0cnVjdG9yLCBnZW5lcmF0b3IsIGludHJpbnNpYywgbmFtZSk7CisgICAgcmV0dXJuIGhvc3RG
dW5jdGlvblN0dWIodm0sIGZ1bmN0aW9uLCBjYWxsSG9zdEZ1bmN0aW9uQXNDb25zdHJ1Y3Rvciwg
Z2VuZXJhdG9yLCBpbnRyaW5zaWMsIG51bGxwdHIsIG5hbWUpOwogfQogCiB2b2lkIEpJVFRodW5r
czo6Y2xlYXJIb3N0RnVuY3Rpb25TdHVicygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVFRodW5rcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRUaHVu
a3MuaAppbmRleCAzZjhmZTgwM2Y5ODcxMGY2OTIzNTI3YmM4ZjY1NTBmNGVkZDFjN2FlLi5hZGRj
ZjIzMGMzNDVkNDI3MWI2MzdmMDhiOTRjNDE2YTNlZDE4MmE0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVFRodW5rcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUVGh1bmtzLmgKQEAgLTM5LDYgKzM5LDkgQEAKICNpbmNsdWRlIDx3dGYvdGV4dC9T
dHJpbmdIYXNoLmg+CiAKIG5hbWVzcGFjZSBKU0MgeworbmFtZXNwYWNlIERPTUpJVCB7CitjbGFz
cyBTaWduYXR1cmU7Cit9CiAKIGNsYXNzIFZNOwogY2xhc3MgTmF0aXZlRXhlY3V0YWJsZTsKQEAg
LTU3LDcgKzYwLDcgQEAgY2xhc3MgSklUVGh1bmtzIGZpbmFsIDogcHJpdmF0ZSBXZWFrSGFuZGxl
T3duZXIgewogICAgIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBjdGlTdHViKFZNKiwgVGh1bmtHZW5l
cmF0b3IpOwogCiAgICAgTmF0aXZlRXhlY3V0YWJsZSogaG9zdEZ1bmN0aW9uU3R1YihWTSosIE5h
dGl2ZUZ1bmN0aW9uLCBOYXRpdmVGdW5jdGlvbiBjb25zdHJ1Y3RvciwgY29uc3QgU3RyaW5nJiBu
YW1lKTsKLSAgICBOYXRpdmVFeGVjdXRhYmxlKiBob3N0RnVuY3Rpb25TdHViKFZNKiwgTmF0aXZl
RnVuY3Rpb24sIE5hdGl2ZUZ1bmN0aW9uIGNvbnN0cnVjdG9yLCBUaHVua0dlbmVyYXRvciwgSW50
cmluc2ljLCBjb25zdCBTdHJpbmcmIG5hbWUpOworICAgIE5hdGl2ZUV4ZWN1dGFibGUqIGhvc3RG
dW5jdGlvblN0dWIoVk0qLCBOYXRpdmVGdW5jdGlvbiwgTmF0aXZlRnVuY3Rpb24gY29uc3RydWN0
b3IsIFRodW5rR2VuZXJhdG9yLCBJbnRyaW5zaWMsIGNvbnN0IERPTUpJVDo6U2lnbmF0dXJlKiwg
Y29uc3QgU3RyaW5nJiBuYW1lKTsKICAgICBOYXRpdmVFeGVjdXRhYmxlKiBob3N0RnVuY3Rpb25T
dHViKFZNKiwgTmF0aXZlRnVuY3Rpb24sIFRodW5rR2VuZXJhdG9yLCBJbnRyaW5zaWMsIGNvbnN0
IFN0cmluZyYgbmFtZSk7CiAKICAgICB2b2lkIGNsZWFySG9zdEZ1bmN0aW9uU3R1YnMoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQm91bmRGdW5jdGlvbi5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0JvdW5kRnVuY3Rpb24uY3BwCmlu
ZGV4IDI2Zjk5ZDY1M2FhMTQ0YjI0MDRkZDc5NTk0MzI5M2RlOTZiNzM0YzUuLmM0Y2U0M2U3ZDU2
MGI4NzM2M2M0OGQ5NTBhMDlhZDc5ZDA1MjQ5N2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTQm91bmRGdW5jdGlvbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNCb3VuZEZ1bmN0aW9uLmNwcApAQCAtMTY4LDcgKzE2OCw3IEBAIEpT
Qm91bmRGdW5jdGlvbiogSlNCb3VuZEZ1bmN0aW9uOjpjcmVhdGUoVk0mIHZtLCBFeGVjU3RhdGUq
IGV4ZWMsIEpTR2xvYmFsT2JqZWN0CiAgICAgTmF0aXZlRXhlY3V0YWJsZSogZXhlY3V0YWJsZSA9
IHZtLmdldEhvc3RGdW5jdGlvbigKICAgICAgICAgc2xvd0Nhc2UgPyBib3VuZEZ1bmN0aW9uQ2Fs
bCA6IGJvdW5kVGhpc05vQXJnc0Z1bmN0aW9uQ2FsbCwKICAgICAgICAgc2xvd0Nhc2UgPyBOb0lu
dHJpbnNpYyA6IEJvdW5kVGhpc05vQXJnc0Z1bmN0aW9uQ2FsbEludHJpbnNpYywKLSAgICAgICAg
Y2FuQ29uc3RydWN0ID8gKHNsb3dDYXNlID8gYm91bmRGdW5jdGlvbkNvbnN0cnVjdCA6IGJvdW5k
VGhpc05vQXJnc0Z1bmN0aW9uQ29uc3RydWN0KSA6IGNhbGxIb3N0RnVuY3Rpb25Bc0NvbnN0cnVj
dG9yLAorICAgICAgICBjYW5Db25zdHJ1Y3QgPyAoc2xvd0Nhc2UgPyBib3VuZEZ1bmN0aW9uQ29u
c3RydWN0IDogYm91bmRUaGlzTm9BcmdzRnVuY3Rpb25Db25zdHJ1Y3QpIDogY2FsbEhvc3RGdW5j
dGlvbkFzQ29uc3RydWN0b3IsIG51bGxwdHIsCiAgICAgICAgIG5hbWUpOwogICAgIFN0cnVjdHVy
ZSogc3RydWN0dXJlID0gZ2V0Qm91bmRGdW5jdGlvblN0cnVjdHVyZSh2bSwgZXhlYywgZ2xvYmFs
T2JqZWN0LCB0YXJnZXRGdW5jdGlvbik7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwg
bnVsbHB0cik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Nl
bGwuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5oCmluZGV4IGM0MGYz
ZTIxOTg0MWZiNDY4OTYzNTI4NGIwNDIyNDdhZmQ1MjNjMzYuLjRlZmJmOTA3NzhjYzU3MWJiZGI4
Mjg3MWE1MWZhNDRmODU2YWU5OGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTQ2VsbC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2Vs
bC5oCkBAIC01NiwxNyArNTYsMTcgQEAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gdm9pZCogYWxsb2Nh
dGVDZWxsKEhlYXAmLCBzaXplX3QpOwogdGVtcGxhdGU8dHlwZW5hbWUgVD4gdm9pZCogYWxsb2Nh
dGVDZWxsKEhlYXAmLCBHQ0RlZmVycmFsQ29udGV4dCopOwogdGVtcGxhdGU8dHlwZW5hbWUgVD4g
dm9pZCogYWxsb2NhdGVDZWxsKEhlYXAmLCBHQ0RlZmVycmFsQ29udGV4dCosIHNpemVfdCk7CiAK
LSNkZWZpbmUgREVDTEFSRV9FWFBPUlRfSU5GTyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFwKLSAgICBwcm90ZWN0ZWQ6ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgc3RhdGljIEpTX0VY
UE9SVERBVEEgY29uc3QgOjpKU0M6OkNsYXNzSW5mbyBzX2luZm87ICAgICAgICAgICAgIFwKLSAg
ICBwdWJsaWM6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFwKLSAgICAgICAgc3RhdGljIGNvbnN0IDo6SlNDOjpDbGFzc0luZm8qIGlu
Zm8oKSB7IHJldHVybiAmc19pbmZvOyB9Ci0KLSNkZWZpbmUgREVDTEFSRV9JTkZPICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBwcm90ZWN0
ZWQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFwKLSAgICAgICAgc3RhdGljIGNvbnN0IDo6SlNDOjpDbGFzc0luZm8gc19pbmZvOyAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBwdWJsaWM6ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgc3RhdGlj
IGNvbnN0IDo6SlNDOjpDbGFzc0luZm8qIGluZm8oKSB7IHJldHVybiAmc19pbmZvOyB9CisjZGVm
aW5lIERFQ0xBUkVfRVhQT1JUX0lORk8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFwKKyAgICBwcm90ZWN0ZWQ6ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBzdGF0aWMg
SlNfRVhQT1JUREFUQSBjb25zdCA6OkpTQzo6Q2xhc3NJbmZvIHNfaW5mbzsgICAgICAgICAgICAg
ICAgICBcCisgICAgcHVibGljOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBj
b25zdCA6OkpTQzo6Q2xhc3NJbmZvKiBpbmZvKCkgeyByZXR1cm4gJnNfaW5mbzsgfQorCisjZGVm
aW5lIERFQ0xBUkVfSU5GTyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFwKKyAgICBwcm90ZWN0ZWQ6ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBzdGF0aWMg
Y29uc3QgOjpKU0M6OkNsYXNzSW5mbyBzX2luZm87ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBcCisgICAgcHVibGljOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBj
b25zdCA6OkpTQzo6Q2xhc3NJbmZvKiBpbmZvKCkgeyByZXR1cm4gJnNfaW5mbzsgfQogCiBjbGFz
cyBKU0NlbGwgOiBwdWJsaWMgSGVhcENlbGwgewogICAgIGZyaWVuZCBjbGFzcyBKU1ZhbHVlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcAppbmRleCA4NTg0
YmMyOTdhZjcyM2Y1ODI5ODE1NmUyZTJiMGE4OGFlNzE4ZmI0Li5hMzE4NDJiNjU5MDkzZWVkNDgz
MmYwYzIyNTQ3ZmZiNDQ5YzQ0Y2Q5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0Z1bmN0aW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0Z1bmN0aW9uLmNwcApAQCAtODQsOSArODQsOSBAQCBKU0Z1bmN0aW9uKiBKU0Z1bmN0aW9u
OjpjcmVhdGUoVk0mIHZtLCBXZWJBc3NlbWJseUV4ZWN1dGFibGUqIGV4ZWN1dGFibGUsIEpTU2Nv
cAogfQogI2VuZGlmCiAKLUpTRnVuY3Rpb24qIEpTRnVuY3Rpb246OmNyZWF0ZShWTSYgdm0sIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGludCBsZW5ndGgsIGNvbnN0IFN0cmluZyYgbmFt
ZSwgTmF0aXZlRnVuY3Rpb24gbmF0aXZlRnVuY3Rpb24sIEludHJpbnNpYyBpbnRyaW5zaWMsIE5h
dGl2ZUZ1bmN0aW9uIG5hdGl2ZUNvbnN0cnVjdG9yKQorSlNGdW5jdGlvbiogSlNGdW5jdGlvbjo6
Y3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgaW50IGxlbmd0aCwg
Y29uc3QgU3RyaW5nJiBuYW1lLCBOYXRpdmVGdW5jdGlvbiBuYXRpdmVGdW5jdGlvbiwgSW50cmlu
c2ljIGludHJpbnNpYywgTmF0aXZlRnVuY3Rpb24gbmF0aXZlQ29uc3RydWN0b3IsIGNvbnN0IERP
TUpJVDo6U2lnbmF0dXJlKiBzaWduYXR1cmUpCiB7Ci0gICAgTmF0aXZlRXhlY3V0YWJsZSogZXhl
Y3V0YWJsZSA9IHZtLmdldEhvc3RGdW5jdGlvbihuYXRpdmVGdW5jdGlvbiwgaW50cmluc2ljLCBu
YXRpdmVDb25zdHJ1Y3RvciwgbmFtZSk7CisgICAgTmF0aXZlRXhlY3V0YWJsZSogZXhlY3V0YWJs
ZSA9IHZtLmdldEhvc3RGdW5jdGlvbihuYXRpdmVGdW5jdGlvbiwgaW50cmluc2ljLCBuYXRpdmVD
b25zdHJ1Y3Rvciwgc2lnbmF0dXJlLCBuYW1lKTsKICAgICBKU0Z1bmN0aW9uKiBmdW5jdGlvbiA9
IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTRnVuY3Rpb24+KHZtLmhlYXApKSBKU0Z1bmN0
aW9uKHZtLCBnbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdC0+ZnVuY3Rpb25TdHJ1Y3R1cmUoKSk7
CiAgICAgLy8gQ2FuJ3QgZG8gdGhpcyBkdXJpbmcgaW5pdGlhbGl6YXRpb24gYmVjYXVzZSBnZXRI
b3N0RnVuY3Rpb24gbWlnaHQgZG8gYSBHQyBhbGxvY2F0aW9uLgogICAgIGZ1bmN0aW9uLT5maW5p
c2hDcmVhdGlvbih2bSwgZXhlY3V0YWJsZSwgbGVuZ3RoLCBuYW1lKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uaAppbmRleCA4ZGYwM2ExNGE2N2RhZTkzMDRjMGQ1
NTQ5NGY5NWE4NzdmOTc4MWU2Li5mMTFiMTJmYjNiZDE0NTYyNWY4MmJmMWZhODcyNTA0NDQ3NjU3
NjI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9u
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5oCkBAIC00
Niw2ICs0NiwxMSBAQCBjbGFzcyBTcGVjdWxhdGl2ZUpJVDsKIGNsYXNzIEpJVENvbXBpbGVyOwog
fQogCituYW1lc3BhY2UgRE9NSklUIHsKK2NsYXNzIFNpZ25hdHVyZTsKK30KKworCiBKU19FWFBP
UlRfUFJJVkFURSBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxIb3N0RnVuY3Rpb25B
c0NvbnN0cnVjdG9yKEV4ZWNTdGF0ZSopOwogCiBKU19FWFBPUlRfUFJJVkFURSBTdHJpbmcgZ2V0
Q2FsY3VsYXRlZERpc3BsYXlOYW1lKFZNJiwgSlNPYmplY3QqKTsKQEAgLTY3LDcgKzcyLDcgQEAg
Y2xhc3MgSlNGdW5jdGlvbiA6IHB1YmxpYyBKU0NhbGxlZSB7CiAgICAgICAgIHJldHVybiBzaXpl
b2YoSlNGdW5jdGlvbik7CiAgICAgfQogCi0gICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIEpT
RnVuY3Rpb24qIGNyZWF0ZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgaW50IGxlbmd0aCwgY29uc3Qg
U3RyaW5nJiBuYW1lLCBOYXRpdmVGdW5jdGlvbiwgSW50cmluc2ljID0gTm9JbnRyaW5zaWMsIE5h
dGl2ZUZ1bmN0aW9uIG5hdGl2ZUNvbnN0cnVjdG9yID0gY2FsbEhvc3RGdW5jdGlvbkFzQ29uc3Ry
dWN0b3IpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBKU0Z1bmN0aW9uKiBjcmVhdGUo
Vk0mLCBKU0dsb2JhbE9iamVjdCosIGludCBsZW5ndGgsIGNvbnN0IFN0cmluZyYgbmFtZSwgTmF0
aXZlRnVuY3Rpb24sIEludHJpbnNpYyA9IE5vSW50cmluc2ljLCBOYXRpdmVGdW5jdGlvbiBuYXRp
dmVDb25zdHJ1Y3RvciA9IGNhbGxIb3N0RnVuY3Rpb25Bc0NvbnN0cnVjdG9yLCBjb25zdCBET01K
SVQ6OlNpZ25hdHVyZSogPSBudWxscHRyKTsKICAgICAKICAgICBzdGF0aWMgSlNGdW5jdGlvbiog
Y3JlYXRlV2l0aEludmFsaWRhdGVkUmVhbGxvY2F0aW9uV2F0Y2hwb2ludChWTSYsIEZ1bmN0aW9u
RXhlY3V0YWJsZSosIEpTU2NvcGUqKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNOYXRpdmVTdGRGdW5jdGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU05hdGl2ZVN0ZEZ1bmN0aW9uLmNwcAppbmRleCA2ZGQ4NDlmMmVhZmJlYmRk
NzA3ZWU1NzM4MDA4MmRlNTQ4OTMyMGExLi5jMTI2NWIxZjA2YTkwYTA3NDQxZDdhYzVjNjA4ODMw
YTFlZmE0ZjAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU05h
dGl2ZVN0ZEZ1bmN0aW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U05hdGl2ZVN0ZEZ1bmN0aW9uLmNwcApAQCAtNjYsNyArNjYsNyBAQCBzdGF0aWMgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBydW5TdGRGdW5jdGlvbihFeGVjU3RhdGUqIHN0YXRlKQogCiBK
U05hdGl2ZVN0ZEZ1bmN0aW9uKiBKU05hdGl2ZVN0ZEZ1bmN0aW9uOjpjcmVhdGUoVk0mIHZtLCBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBpbnQgbGVuZ3RoLCBjb25zdCBTdHJpbmcmIG5h
bWUsIE5hdGl2ZVN0ZEZ1bmN0aW9uJiYgbmF0aXZlU3RkRnVuY3Rpb24sIEludHJpbnNpYyBpbnRy
aW5zaWMsIE5hdGl2ZUZ1bmN0aW9uIG5hdGl2ZUNvbnN0cnVjdG9yKQogewotICAgIE5hdGl2ZUV4
ZWN1dGFibGUqIGV4ZWN1dGFibGUgPSB2bS5nZXRIb3N0RnVuY3Rpb24ocnVuU3RkRnVuY3Rpb24s
IGludHJpbnNpYywgbmF0aXZlQ29uc3RydWN0b3IsIG5hbWUpOworICAgIE5hdGl2ZUV4ZWN1dGFi
bGUqIGV4ZWN1dGFibGUgPSB2bS5nZXRIb3N0RnVuY3Rpb24ocnVuU3RkRnVuY3Rpb24sIGludHJp
bnNpYywgbmF0aXZlQ29uc3RydWN0b3IsIG51bGxwdHIsIG5hbWUpOwogICAgIE5hdGl2ZVN0ZEZ1
bmN0aW9uQ2VsbCogZnVuY3Rpb25DZWxsID0gTmF0aXZlU3RkRnVuY3Rpb25DZWxsOjpjcmVhdGUo
dm0sIFdURk1vdmUobmF0aXZlU3RkRnVuY3Rpb24pKTsKICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSA9IGdsb2JhbE9iamVjdC0+bmF0aXZlU3RkRnVuY3Rpb25TdHJ1Y3R1cmUoKTsKICAgICBKU05h
dGl2ZVN0ZEZ1bmN0aW9uKiBmdW5jdGlvbiA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpT
TmF0aXZlU3RkRnVuY3Rpb24+KHZtLmhlYXApKSBKU05hdGl2ZVN0ZEZ1bmN0aW9uKHZtLCBnbG9i
YWxPYmplY3QsIHN0cnVjdHVyZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU09iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09i
amVjdC5jcHAKaW5kZXggZjUzZGI2MTk4NmVhZGRhYTIzYTI0NWRlNTRhZTA5YzU4ZjBhYjc2NC4u
MDhhZTc5MjBhOWVlNTJjMjRkNzVhYmUxZGE3ZjY2ZTgxMWIyYWYxYyAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcApAQCAtMjU0OSw2ICsyNTQ5LDE3IEBAIGJv
b2wgSlNPYmplY3Q6OnB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uKFZNJiB2bSwgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgY29uCiAgICAgcmV0dXJuIHB1dERpcmVjdCh2bSwgcHJvcGVydHlO
YW1lLCBmdW5jdGlvbiwgYXR0cmlidXRlcyk7CiB9CiAKK2Jvb2wgSlNPYmplY3Q6OnB1dERpcmVj
dE5hdGl2ZUZ1bmN0aW9uKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29u
c3QgUHJvcGVydHlOYW1lJiBwcm9wZXJ0eU5hbWUsIHVuc2lnbmVkIGZ1bmN0aW9uTGVuZ3RoLCBO
YXRpdmVGdW5jdGlvbiBuYXRpdmVGdW5jdGlvbiwgSW50cmluc2ljIGludHJpbnNpYywgY29uc3Qg
RE9NSklUOjpTaWduYXR1cmUqIHNpZ25hdHVyZSwgdW5zaWduZWQgYXR0cmlidXRlcykKK3sKKyAg
ICBTdHJpbmdJbXBsKiBuYW1lID0gcHJvcGVydHlOYW1lLnB1YmxpY05hbWUoKTsKKyAgICBpZiAo
IW5hbWUpCisgICAgICAgIG5hbWUgPSB2bS5wcm9wZXJ0eU5hbWVzLT5hbm9ueW1vdXMuaW1wbCgp
OworICAgIEFTU0VSVChuYW1lKTsKKworICAgIEpTRnVuY3Rpb24qIGZ1bmN0aW9uID0gSlNGdW5j
dGlvbjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIGZ1bmN0aW9uTGVuZ3RoLCBuYW1lLCBuYXRp
dmVGdW5jdGlvbiwgaW50cmluc2ljLCBjYWxsSG9zdEZ1bmN0aW9uQXNDb25zdHJ1Y3Rvciwgc2ln
bmF0dXJlKTsKKyAgICByZXR1cm4gcHV0RGlyZWN0KHZtLCBwcm9wZXJ0eU5hbWUsIGZ1bmN0aW9u
LCBhdHRyaWJ1dGVzKTsKK30KKwogSlNGdW5jdGlvbiogSlNPYmplY3Q6OnB1dERpcmVjdEJ1aWx0
aW5GdW5jdGlvbihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IFBy
b3BlcnR5TmFtZSYgcHJvcGVydHlOYW1lLCBGdW5jdGlvbkV4ZWN1dGFibGUqIGZ1bmN0aW9uRXhl
Y3V0YWJsZSwgdW5zaWduZWQgYXR0cmlidXRlcykKIHsKICAgICBTdHJpbmdJbXBsKiBuYW1lID0g
cHJvcGVydHlOYW1lLnB1YmxpY05hbWUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U09iamVjdC5oCmluZGV4IDYyMjBlYzdhMWJhOGU4YTc0OWRiNGIwNmNkNDI5M2E4ODVhZjdmOTIu
LmViZTQ4NWU4ZGYzNmRiNWNhZjM3NzA0YjhlZWRkNGE3NmNiOWM0NDMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaApAQCAtNDcsNiArNDcsOSBAQAogI2luY2x1ZGUg
PHd0Zi9TdGRMaWJFeHRyYXMuaD4KIAogbmFtZXNwYWNlIEpTQyB7CituYW1lc3BhY2UgRE9NSklU
IHsKK2NsYXNzIFNpZ25hdHVyZTsKK30KIAogaW5saW5lIEpTQ2VsbCogZ2V0SlNGdW5jdGlvbihK
U1ZhbHVlIHZhbHVlKQogewpAQCAtNzAwLDYgKzcwMyw3IEBAIGNsYXNzIEpTT2JqZWN0IDogcHVi
bGljIEpTQ2VsbCB7CiAKICAgICBKU19FWFBPUlRfUFJJVkFURSBib29sIHB1dERpcmVjdE5hdGl2
ZUludHJpbnNpY0dldHRlcihWTSYsIEpTR2xvYmFsT2JqZWN0KiwgSWRlbnRpZmllciwgTmF0aXZl
RnVuY3Rpb24sIEludHJpbnNpYywgdW5zaWduZWQgYXR0cmlidXRlcyk7CiAgICAgSlNfRVhQT1JU
X1BSSVZBVEUgYm9vbCBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbihWTSYsIEpTR2xvYmFsT2JqZWN0
KiwgY29uc3QgUHJvcGVydHlOYW1lJiwgdW5zaWduZWQgZnVuY3Rpb25MZW5ndGgsIE5hdGl2ZUZ1
bmN0aW9uLCBJbnRyaW5zaWMsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpOworICAgIEpTX0VYUE9SVF9Q
UklWQVRFIGJvb2wgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb24oVk0mLCBKU0dsb2JhbE9iamVjdCos
IGNvbnN0IFByb3BlcnR5TmFtZSYsIHVuc2lnbmVkIGZ1bmN0aW9uTGVuZ3RoLCBOYXRpdmVGdW5j
dGlvbiwgSW50cmluc2ljLCBjb25zdCBET01KSVQ6OlNpZ25hdHVyZSosIHVuc2lnbmVkIGF0dHJp
YnV0ZXMpOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIEpTRnVuY3Rpb24qIHB1dERpcmVjdEJ1aWx0
aW5GdW5jdGlvbihWTSYsIEpTR2xvYmFsT2JqZWN0KiwgY29uc3QgUHJvcGVydHlOYW1lJiwgRnVu
Y3Rpb25FeGVjdXRhYmxlKiwgdW5zaWduZWQgYXR0cmlidXRlcyk7CiAgICAgSlNGdW5jdGlvbiog
cHV0RGlyZWN0QnVpbHRpbkZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24oVk0mLCBKU0dsb2JhbE9i
amVjdCosIGNvbnN0IFByb3BlcnR5TmFtZSYsIEZ1bmN0aW9uRXhlY3V0YWJsZSosIHVuc2lnbmVk
IGF0dHJpYnV0ZXMpOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgcHV0RGlyZWN0TmF0aXZl
RnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbihWTSYsIEpTR2xvYmFsT2JqZWN0KiwgY29uc3QgUHJv
cGVydHlOYW1lJiwgdW5zaWduZWQgZnVuY3Rpb25MZW5ndGgsIE5hdGl2ZUZ1bmN0aW9uLCBJbnRy
aW5zaWMsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvTG9va3VwLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9M
b29rdXAuaAppbmRleCBlMmQxNzk1Mzg4ZTc2NTJiZDhmMWI0YjZkYWNiYjJjYmNlOWNkNDRmLi5k
NzA3Njg2ZmI1NjkzZTdmNTJmZTZkMWEyZWM0NGJkMDAyM2JlZjExIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Mb29rdXAuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Mb29rdXAuaApAQCAtMjQsNiArMjQsNyBAQAogI2luY2x1ZGUgIkNhbGxG
cmFtZS5oIgogI2luY2x1ZGUgIkN1c3RvbUdldHRlclNldHRlci5oIgogI2luY2x1ZGUgIkRPTUpJ
VEdldHRlclNldHRlci5oIgorI2luY2x1ZGUgIkRPTUpJVFNpZ25hdHVyZS5oIgogI2luY2x1ZGUg
IklkZW50aWZpZXIuaCIKICNpbmNsdWRlICJJZGVudGlmaWVySW5saW5lcy5oIgogI2luY2x1ZGUg
IkludHJpbnNpYy5oIgpAQCAtNzUsMTIgKzc2LDE5IEBAIHN0cnVjdCBIYXNoVGFibGVWYWx1ZSB7
CiAgICAgSW50cmluc2ljIGludHJpbnNpYygpIGNvbnN0IHsgQVNTRVJUKG1fYXR0cmlidXRlcyAm
IEZ1bmN0aW9uKTsgcmV0dXJuIG1faW50cmluc2ljOyB9CiAgICAgQnVpbHRpbkdlbmVyYXRvciBi
dWlsdGluR2VuZXJhdG9yKCkgY29uc3QgeyBBU1NFUlQobV9hdHRyaWJ1dGVzICYgQnVpbHRpbik7
IHJldHVybiByZWludGVycHJldF9jYXN0PEJ1aWx0aW5HZW5lcmF0b3I+KG1fdmFsdWVzLnZhbHVl
MSk7IH0KICAgICBOYXRpdmVGdW5jdGlvbiBmdW5jdGlvbigpIGNvbnN0IHsgQVNTRVJUKG1fYXR0
cmlidXRlcyAmIEZ1bmN0aW9uKTsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8TmF0aXZlRnVuY3Rp
b24+KG1fdmFsdWVzLnZhbHVlMSk7IH0KLSAgICB1bnNpZ25lZCBjaGFyIGZ1bmN0aW9uTGVuZ3Ro
KCkgY29uc3QgeyBBU1NFUlQobV9hdHRyaWJ1dGVzICYgRnVuY3Rpb24pOyByZXR1cm4gc3RhdGlj
X2Nhc3Q8dW5zaWduZWQgY2hhcj4obV92YWx1ZXMudmFsdWUyKTsgfQorICAgIHVuc2lnbmVkIGNo
YXIgZnVuY3Rpb25MZW5ndGgoKSBjb25zdAorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fYXR0cmli
dXRlcyAmIEZ1bmN0aW9uKTsKKyAgICAgICAgaWYgKG1fYXR0cmlidXRlcyAmIERPTUpJVEZ1bmN0
aW9uKQorICAgICAgICAgICAgcmV0dXJuIHNpZ25hdHVyZSgpLT5hcmd1bWVudENvdW50OworICAg
ICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4obV92YWx1ZXMudmFsdWUyKTsK
KyAgICB9CiAKICAgICBHZXRGdW5jdGlvbiBwcm9wZXJ0eUdldHRlcigpIGNvbnN0IHsgQVNTRVJU
KCEobV9hdHRyaWJ1dGVzICYgQnVpbHRpbk9yRnVuY3Rpb25PckFjY2Vzc29yT3JMYXp5UHJvcGVy
dHlPckNvbnN0YW50KSk7IHJldHVybiByZWludGVycHJldF9jYXN0PEdldEZ1bmN0aW9uPihtX3Zh
bHVlcy52YWx1ZTEpOyB9CiAgICAgUHV0RnVuY3Rpb24gcHJvcGVydHlQdXR0ZXIoKSBjb25zdCB7
IEFTU0VSVCghKG1fYXR0cmlidXRlcyAmIEJ1aWx0aW5PckZ1bmN0aW9uT3JBY2Nlc3Nvck9yTGF6
eVByb3BlcnR5T3JDb25zdGFudCkpOyByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxQdXRGdW5jdGlv
bj4obV92YWx1ZXMudmFsdWUyKTsgfQogCiAgICAgRE9NSklUOjpHZXR0ZXJTZXR0ZXIqIGRvbUpJ
VCgpIGNvbnN0IHsgQVNTRVJUKG1fYXR0cmlidXRlcyAmIERPTUpJVEF0dHJpYnV0ZSk7IHJldHVy
biByZWludGVycHJldF9jYXN0PERPTUpJVEdldHRlclNldHRlckdlbmVyYXRvcj4obV92YWx1ZXMu
dmFsdWUxKSgpOyB9CisgICAgY29uc3QgRE9NSklUOjpTaWduYXR1cmUqIHNpZ25hdHVyZSgpIGNv
bnN0IHsgQVNTRVJUKG1fYXR0cmlidXRlcyAmIERPTUpJVEZ1bmN0aW9uKTsgcmV0dXJuIHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgRE9NSklUOjpTaWduYXR1cmUqPihtX3ZhbHVlcy52YWx1ZTIpOyB9
CiAKICAgICBOYXRpdmVGdW5jdGlvbiBhY2Nlc3NvckdldHRlcigpIGNvbnN0IHsgQVNTRVJUKG1f
YXR0cmlidXRlcyAmIEFjY2Vzc29yKTsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8TmF0aXZlRnVu
Y3Rpb24+KG1fdmFsdWVzLnZhbHVlMSk7IH0KICAgICBOYXRpdmVGdW5jdGlvbiBhY2Nlc3NvclNl
dHRlcigpIGNvbnN0IHsgQVNTRVJUKG1fYXR0cmlidXRlcyAmIEFjY2Vzc29yKTsgcmV0dXJuIHJl
aW50ZXJwcmV0X2Nhc3Q8TmF0aXZlRnVuY3Rpb24+KG1fdmFsdWVzLnZhbHVlMik7IH0KQEAgLTMx
Myw2ICszMjEsMTIgQEAgaW5saW5lIHZvaWQgcmVpZnlTdGF0aWNQcm9wZXJ0eShWTSYgdm0sIGNv
bnN0IFByb3BlcnR5TmFtZSYgcHJvcGVydHlOYW1lLCBjb25zdAogICAgIH0KIAogICAgIGlmICh2
YWx1ZS5hdHRyaWJ1dGVzKCkgJiBGdW5jdGlvbikgeworICAgICAgICBpZiAodmFsdWUuYXR0cmli
dXRlcygpICYgRE9NSklURnVuY3Rpb24pIHsKKyAgICAgICAgICAgIHRoaXNPYmoucHV0RGlyZWN0
TmF0aXZlRnVuY3Rpb24oCisgICAgICAgICAgICAgICAgdm0sIHRoaXNPYmouZ2xvYmFsT2JqZWN0
KCksIHByb3BlcnR5TmFtZSwgdmFsdWUuZnVuY3Rpb25MZW5ndGgoKSwKKyAgICAgICAgICAgICAg
ICB2YWx1ZS5mdW5jdGlvbigpLCB2YWx1ZS5pbnRyaW5zaWMoKSwgdmFsdWUuc2lnbmF0dXJlKCks
IGF0dHJpYnV0ZXNGb3JTdHJ1Y3R1cmUodmFsdWUuYXR0cmlidXRlcygpKSk7CisgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgIH0KICAgICAgICAgdGhpc09iai5wdXREaXJlY3ROYXRpdmVGdW5j
dGlvbigKICAgICAgICAgICAgIHZtLCB0aGlzT2JqLmdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5h
bWUsIHZhbHVlLmZ1bmN0aW9uTGVuZ3RoKCksCiAgICAgICAgICAgICB2YWx1ZS5mdW5jdGlvbigp
LCB2YWx1ZS5pbnRyaW5zaWMoKSwgYXR0cmlidXRlc0ZvclN0cnVjdHVyZSh2YWx1ZS5hdHRyaWJ1
dGVzKCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05hdGl2
ZUV4ZWN1dGFibGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZlRXhl
Y3V0YWJsZS5jcHAKaW5kZXggMWMyYmVjNThiN2RiODk4YjgxMThiMjk3MTBiMmQ3NDI2OTNiYjIx
ZC4uYjdkYWQyYTQ2MmRkZGZjMjI3NjJmZDVjZDdjZjZhNDYxY2RkMThmNiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZlRXhlY3V0YWJsZS5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZlRXhlY3V0YWJsZS5jcHAKQEAgLTQw
LDEwICs0MCwxMCBAQCBuYW1lc3BhY2UgSlNDIHsKIAogY29uc3QgQ2xhc3NJbmZvIE5hdGl2ZUV4
ZWN1dGFibGU6OnNfaW5mbyA9IHsgIk5hdGl2ZUV4ZWN1dGFibGUiLCAmRXhlY3V0YWJsZUJhc2U6
OnNfaW5mbywgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShOYXRpdmVFeGVjdXRhYmxlKSB9OwogCi1O
YXRpdmVFeGVjdXRhYmxlKiBOYXRpdmVFeGVjdXRhYmxlOjpjcmVhdGUoVk0mIHZtLCBQYXNzUmVm
UHRyPEpJVENvZGU+IGNhbGxUaHVuaywgTmF0aXZlRnVuY3Rpb24gZnVuY3Rpb24sIFBhc3NSZWZQ
dHI8SklUQ29kZT4gY29uc3RydWN0VGh1bmssIE5hdGl2ZUZ1bmN0aW9uIGNvbnN0cnVjdG9yLCBJ
bnRyaW5zaWMgaW50cmluc2ljLCBjb25zdCBTdHJpbmcmIG5hbWUpCitOYXRpdmVFeGVjdXRhYmxl
KiBOYXRpdmVFeGVjdXRhYmxlOjpjcmVhdGUoVk0mIHZtLCBQYXNzUmVmUHRyPEpJVENvZGU+IGNh
bGxUaHVuaywgTmF0aXZlRnVuY3Rpb24gZnVuY3Rpb24sIFBhc3NSZWZQdHI8SklUQ29kZT4gY29u
c3RydWN0VGh1bmssIE5hdGl2ZUZ1bmN0aW9uIGNvbnN0cnVjdG9yLCBJbnRyaW5zaWMgaW50cmlu
c2ljLCBjb25zdCBET01KSVQ6OlNpZ25hdHVyZSogc2lnbmF0dXJlLCBjb25zdCBTdHJpbmcmIG5h
bWUpCiB7CiAgICAgTmF0aXZlRXhlY3V0YWJsZSogZXhlY3V0YWJsZTsKLSAgICBleGVjdXRhYmxl
ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8TmF0aXZlRXhlY3V0YWJsZT4odm0uaGVhcCkp
IE5hdGl2ZUV4ZWN1dGFibGUodm0sIGZ1bmN0aW9uLCBjb25zdHJ1Y3RvciwgaW50cmluc2ljKTsK
KyAgICBleGVjdXRhYmxlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8TmF0aXZlRXhlY3V0
YWJsZT4odm0uaGVhcCkpIE5hdGl2ZUV4ZWN1dGFibGUodm0sIGZ1bmN0aW9uLCBjb25zdHJ1Y3Rv
ciwgaW50cmluc2ljLCBzaWduYXR1cmUpOwogICAgIGV4ZWN1dGFibGUtPmZpbmlzaENyZWF0aW9u
KHZtLCBjYWxsVGh1bmssIGNvbnN0cnVjdFRodW5rLCBuYW1lKTsKICAgICByZXR1cm4gZXhlY3V0
YWJsZTsKIH0KQEAgLTY4LDEwICs2OCwxMSBAQCB2b2lkIE5hdGl2ZUV4ZWN1dGFibGU6OmZpbmlz
aENyZWF0aW9uKFZNJiB2bSwgUGFzc1JlZlB0cjxKSVRDb2RlPiBjYWxsVGh1bmssIFBhcwogICAg
IG1fbmFtZSA9IG5hbWU7CiB9CiAKLU5hdGl2ZUV4ZWN1dGFibGU6Ok5hdGl2ZUV4ZWN1dGFibGUo
Vk0mIHZtLCBOYXRpdmVGdW5jdGlvbiBmdW5jdGlvbiwgTmF0aXZlRnVuY3Rpb24gY29uc3RydWN0
b3IsIEludHJpbnNpYyBpbnRyaW5zaWMpCitOYXRpdmVFeGVjdXRhYmxlOjpOYXRpdmVFeGVjdXRh
YmxlKFZNJiB2bSwgTmF0aXZlRnVuY3Rpb24gZnVuY3Rpb24sIE5hdGl2ZUZ1bmN0aW9uIGNvbnN0
cnVjdG9yLCBJbnRyaW5zaWMgaW50cmluc2ljLCBjb25zdCBET01KSVQ6OlNpZ25hdHVyZSogc2ln
bmF0dXJlKQogICAgIDogRXhlY3V0YWJsZUJhc2Uodm0sIHZtLm5hdGl2ZUV4ZWN1dGFibGVTdHJ1
Y3R1cmUuZ2V0KCksIE5VTV9QQVJBTUVURVJTX0lTX0hPU1QsIGludHJpbnNpYykKICAgICAsIG1f
ZnVuY3Rpb24oZnVuY3Rpb24pCiAgICAgLCBtX2NvbnN0cnVjdG9yKGNvbnN0cnVjdG9yKQorICAg
ICwgbV9zaWduYXR1cmUoc2lnbmF0dXJlKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9OYXRpdmVFeGVjdXRhYmxlLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9OYXRpdmVFeGVjdXRhYmxlLmgKaW5kZXggNWJmMmUxMDZkYjMwYTViOGM5
NzhjODk2YTZhZDk4Y2EyYzc1NzQxNC4uZTRkM2UwNDk0NTdiNDVkMDI0NTdlOGRkYTU0NDkwYjM3
MTRhY2NlYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZl
RXhlY3V0YWJsZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05hdGl2ZUV4
ZWN1dGFibGUuaApAQCAtMjgsNiArMjgsOSBAQAogI2luY2x1ZGUgIkV4ZWN1dGFibGVCYXNlLmgi
CiAKIG5hbWVzcGFjZSBKU0MgeworbmFtZXNwYWNlIERPTUpJVCB7CitjbGFzcyBTaWduYXR1cmU7
Cit9CiAKIGNsYXNzIE5hdGl2ZUV4ZWN1dGFibGUgZmluYWwgOiBwdWJsaWMgRXhlY3V0YWJsZUJh
c2UgewogICAgIGZyaWVuZCBjbGFzcyBKSVQ7CkBAIC0zNiw3ICszOSw3IEBAIGNsYXNzIE5hdGl2
ZUV4ZWN1dGFibGUgZmluYWwgOiBwdWJsaWMgRXhlY3V0YWJsZUJhc2UgewogICAgIHR5cGVkZWYg
RXhlY3V0YWJsZUJhc2UgQmFzZTsKICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJl
RmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IFN0cnVjdHVyZUlzSW1tb3J0YWw7CiAKLSAg
ICBzdGF0aWMgTmF0aXZlRXhlY3V0YWJsZSogY3JlYXRlKFZNJiB2bSwgUGFzc1JlZlB0cjxKSVRD
b2RlPiBjYWxsVGh1bmssIE5hdGl2ZUZ1bmN0aW9uIGZ1bmN0aW9uLCBQYXNzUmVmUHRyPEpJVENv
ZGU+IGNvbnN0cnVjdFRodW5rLCBOYXRpdmVGdW5jdGlvbiBjb25zdHJ1Y3RvciwgSW50cmluc2lj
IGludHJpbnNpYywgY29uc3QgU3RyaW5nJiBuYW1lKTsKKyAgICBzdGF0aWMgTmF0aXZlRXhlY3V0
YWJsZSogY3JlYXRlKFZNJiwgUGFzc1JlZlB0cjxKSVRDb2RlPiBjYWxsVGh1bmssIE5hdGl2ZUZ1
bmN0aW9uIGZ1bmN0aW9uLCBQYXNzUmVmUHRyPEpJVENvZGU+IGNvbnN0cnVjdFRodW5rLCBOYXRp
dmVGdW5jdGlvbiBjb25zdHJ1Y3RvciwgSW50cmluc2ljLCBjb25zdCBET01KSVQ6OlNpZ25hdHVy
ZSosIGNvbnN0IFN0cmluZyYgbmFtZSk7CiAKICAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQ2Vs
bCopOwogCkBAIC02Niw2ICs2OSwxNCBAQCBjbGFzcyBOYXRpdmVFeGVjdXRhYmxlIGZpbmFsIDog
cHVibGljIEV4ZWN1dGFibGVCYXNlIHsKICAgICBERUNMQVJFX0lORk87CiAKICAgICBjb25zdCBT
dHJpbmcmIG5hbWUoKSBjb25zdCB7IHJldHVybiBtX25hbWU7IH0KKyAgICBjb25zdCBET01KSVQ6
OlNpZ25hdHVyZSogc2lnbmF0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9zaWduYXR1cmU7IH0KKwor
ICAgIGNvbnN0IERPTUpJVDo6U2lnbmF0dXJlKiBzaWduYXR1cmVGb3IoQ29kZVNwZWNpYWxpemF0
aW9uS2luZCBraW5kKSBjb25zdAorICAgIHsKKyAgICAgICAgaWYgKGlzQ2FsbChraW5kKSkKKyAg
ICAgICAgICAgIHJldHVybiBzaWduYXR1cmUoKTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7Cisg
ICAgfQogCiBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYsIFBhc3NSZWZQ
dHI8SklUQ29kZT4gY2FsbFRodW5rLCBQYXNzUmVmUHRyPEpJVENvZGU+IGNvbnN0cnVjdFRodW5r
LCBjb25zdCBTdHJpbmcmIG5hbWUpOwpAQCAtNzMsMTAgKzg0LDExIEBAIGNsYXNzIE5hdGl2ZUV4
ZWN1dGFibGUgZmluYWwgOiBwdWJsaWMgRXhlY3V0YWJsZUJhc2UgewogcHJpdmF0ZToKICAgICBm
cmllbmQgY2xhc3MgRXhlY3V0YWJsZUJhc2U7CiAKLSAgICBOYXRpdmVFeGVjdXRhYmxlKFZNJiwg
TmF0aXZlRnVuY3Rpb24gZnVuY3Rpb24sIE5hdGl2ZUZ1bmN0aW9uIGNvbnN0cnVjdG9yLCBJbnRy
aW5zaWMpOworICAgIE5hdGl2ZUV4ZWN1dGFibGUoVk0mLCBOYXRpdmVGdW5jdGlvbiBmdW5jdGlv
biwgTmF0aXZlRnVuY3Rpb24gY29uc3RydWN0b3IsIEludHJpbnNpYywgY29uc3QgRE9NSklUOjpT
aWduYXR1cmUqKTsKIAogICAgIE5hdGl2ZUZ1bmN0aW9uIG1fZnVuY3Rpb247CiAgICAgTmF0aXZl
RnVuY3Rpb24gbV9jb25zdHJ1Y3RvcjsKKyAgICBjb25zdCBET01KSVQ6OlNpZ25hdHVyZSogbV9z
aWduYXR1cmU7CiAKICAgICBTdHJpbmcgbV9uYW1lOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5U2xvdC5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvUHJvcGVydHlTbG90LmgKaW5kZXggOWRlMTUxYTU2YWEyNzU2Y2ZkMGM2MDAz
NjY4MjY2YjE5Zjk5MzJkZC4uMzg3ZTMxYjQwZTVhZWJmMmYzNWY2Y2EyNzJlMzgzYzA1ZDNmNDUy
ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlTbG90
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlTbG90LmgKQEAg
LTUxLDYgKzUxLDcgQEAgZW51bSBBdHRyaWJ1dGUgewogICAgIENsYXNzU3RydWN0dXJlICAgID0g
MSA8PCAxMiwgLy8gcHJvcGVydHkgaXMgYSBsYXp5IGNsYXNzIHN0cnVjdHVyZSAtIG9ubHkgdXNl
ZCBieSBzdGF0aWMgaGFzaHRhYmxlcwogICAgIFByb3BlcnR5Q2FsbGJhY2sgID0gMSA8PCAxMywg
Ly8gcHJvcGVydHkgdGhhdCBpcyBhIGxhenkgcHJvcGVydHkgY2FsbGJhY2sgLSBvbmx5IHVzZWQg
Ynkgc3RhdGljIGhhc2h0YWJsZXMKICAgICBET01KSVRBdHRyaWJ1dGUgICA9IDEgPDwgMTQsIC8v
IHByb3BlcnR5IGlzIGEgRE9NIEpJVCBhdHRyaWJ1dGUgLSBvbmx5IHVzZWQgYnkgc3RhdGljIGhh
c2h0YWJsZXMKKyAgICBET01KSVRGdW5jdGlvbiAgICA9IDEgPDwgMTUsIC8vIHByb3BlcnR5IGlz
IGEgRE9NIEpJVCBmdW5jdGlvbiAtIG9ubHkgdXNlZCBieSBzdGF0aWMgaGFzaHRhYmxlcwogICAg
IEJ1aWx0aW5PckZ1bmN0aW9uID0gQnVpbHRpbiB8IEZ1bmN0aW9uLCAvLyBoZWxwZXIgb25seSB1
c2VkIGJ5IHN0YXRpYyBoYXNodGFibGVzCiAgICAgQnVpbHRpbk9yRnVuY3Rpb25PckxhenlQcm9w
ZXJ0eSA9IEJ1aWx0aW4gfCBGdW5jdGlvbiB8IENlbGxQcm9wZXJ0eSB8IENsYXNzU3RydWN0dXJl
IHwgUHJvcGVydHlDYWxsYmFjaywgLy8gaGVscGVyIG9ubHkgdXNlZCBieSBzdGF0aWMgaGFzaHRh
YmxlcwogICAgIEJ1aWx0aW5PckZ1bmN0aW9uT3JBY2Nlc3Nvck9yTGF6eVByb3BlcnR5ID0gQnVp
bHRpbiB8IEZ1bmN0aW9uIHwgQWNjZXNzb3IgfCBDZWxsUHJvcGVydHkgfCBDbGFzc1N0cnVjdHVy
ZSB8IFByb3BlcnR5Q2FsbGJhY2ssIC8vIGhlbHBlciBvbmx5IHVzZWQgYnkgc3RhdGljIGhhc2h0
YWJsZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAppbmRleCA4MTIzOWM1YjkyNGI0
ZWNjOGU2ZDcwYmM4MDc3ZTgzOGFmMWUxZDYxLi5mOTI3MzQ3MzRhY2VlYzQxYTQ1ODM2MDk1NGIw
N2Q4ZmFjMTI1YmJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9W
TS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCkBAIC01MTEs
MTcgKzUxMSwxNyBAQCBzdGF0aWMgVGh1bmtHZW5lcmF0b3IgdGh1bmtHZW5lcmF0b3JGb3JJbnRy
aW5zaWMoSW50cmluc2ljIGludHJpbnNpYykKIAogTmF0aXZlRXhlY3V0YWJsZSogVk06OmdldEhv
c3RGdW5jdGlvbihOYXRpdmVGdW5jdGlvbiBmdW5jdGlvbiwgTmF0aXZlRnVuY3Rpb24gY29uc3Ry
dWN0b3IsIGNvbnN0IFN0cmluZyYgbmFtZSkKIHsKLSAgICByZXR1cm4gZ2V0SG9zdEZ1bmN0aW9u
KGZ1bmN0aW9uLCBOb0ludHJpbnNpYywgY29uc3RydWN0b3IsIG5hbWUpOworICAgIHJldHVybiBn
ZXRIb3N0RnVuY3Rpb24oZnVuY3Rpb24sIE5vSW50cmluc2ljLCBjb25zdHJ1Y3RvciwgbnVsbHB0
ciwgbmFtZSk7CiB9CiAKLU5hdGl2ZUV4ZWN1dGFibGUqIFZNOjpnZXRIb3N0RnVuY3Rpb24oTmF0
aXZlRnVuY3Rpb24gZnVuY3Rpb24sIEludHJpbnNpYyBpbnRyaW5zaWMsIE5hdGl2ZUZ1bmN0aW9u
IGNvbnN0cnVjdG9yLCBjb25zdCBTdHJpbmcmIG5hbWUpCitOYXRpdmVFeGVjdXRhYmxlKiBWTTo6
Z2V0SG9zdEZ1bmN0aW9uKE5hdGl2ZUZ1bmN0aW9uIGZ1bmN0aW9uLCBJbnRyaW5zaWMgaW50cmlu
c2ljLCBOYXRpdmVGdW5jdGlvbiBjb25zdHJ1Y3RvciwgY29uc3QgRE9NSklUOjpTaWduYXR1cmUq
IHNpZ25hdHVyZSwgY29uc3QgU3RyaW5nJiBuYW1lKQogewogI2lmIEVOQUJMRShKSVQpCiAgICAg
aWYgKGNhblVzZUpJVCgpKSB7CiAgICAgICAgIHJldHVybiBqaXRTdHVicy0+aG9zdEZ1bmN0aW9u
U3R1YigKICAgICAgICAgICAgIHRoaXMsIGZ1bmN0aW9uLCBjb25zdHJ1Y3RvciwKICAgICAgICAg
ICAgIGludHJpbnNpYyAhPSBOb0ludHJpbnNpYyA/IHRodW5rR2VuZXJhdG9yRm9ySW50cmluc2lj
KGludHJpbnNpYykgOiAwLAotICAgICAgICAgICAgaW50cmluc2ljLCBuYW1lKTsKKyAgICAgICAg
ICAgIGludHJpbnNpYywgc2lnbmF0dXJlLCBuYW1lKTsKICAgICB9CiAjZWxzZSAvLyBFTkFCTEUo
SklUKQogICAgIFVOVVNFRF9QQVJBTShpbnRyaW5zaWMpOwpAQCAtNTI5LDcgKzUyOSw3IEBAIE5h
dGl2ZUV4ZWN1dGFibGUqIFZNOjpnZXRIb3N0RnVuY3Rpb24oTmF0aXZlRnVuY3Rpb24gZnVuY3Rp
b24sIEludHJpbnNpYyBpbnRyaW5zCiAgICAgcmV0dXJuIE5hdGl2ZUV4ZWN1dGFibGU6OmNyZWF0
ZSgqdGhpcywKICAgICAgICAgYWRvcHRSZWYobmV3IE5hdGl2ZUpJVENvZGUoTWFjcm9Bc3NlbWJs
ZXJDb2RlUmVmOjpjcmVhdGVMTEludENvZGVSZWYobGxpbnRfbmF0aXZlX2NhbGxfdHJhbXBvbGlu
ZSksIEpJVENvZGU6Okhvc3RDYWxsVGh1bmspKSwgZnVuY3Rpb24sCiAgICAgICAgIGFkb3B0UmVm
KG5ldyBOYXRpdmVKSVRDb2RlKE1hY3JvQXNzZW1ibGVyQ29kZVJlZjo6Y3JlYXRlTExJbnRDb2Rl
UmVmKGxsaW50X25hdGl2ZV9jb25zdHJ1Y3RfdHJhbXBvbGluZSksIEpJVENvZGU6Okhvc3RDYWxs
VGh1bmspKSwgY29uc3RydWN0b3IsCi0gICAgICAgIE5vSW50cmluc2ljLCBuYW1lKTsKKyAgICAg
ICAgTm9JbnRyaW5zaWMsIHNpZ25hdHVyZSwgbmFtZSk7CiB9CiAKIFZNOjpDbGllbnREYXRhOjp+
Q2xpZW50RGF0YSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9W
TS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAppbmRleCA0ZmQ3ZWM0MGYw
M2VlZGViMjliZDQ5NjdkOWNkYzQzMDI0Y2ZhNDEwLi4xNWEwOGMyYTMzYmU5NzJiNGE5YTMyZGZj
MzUwZDZlMzhjYzg0MmVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9WTS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKQEAgLTQyOSw3
ICs0MjksNyBAQCBjbGFzcyBWTSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxWTT4gewog
ICAgIHN0ZDo6dW5pcXVlX3B0cjxGVEw6OlRodW5rcz4gZnRsVGh1bmtzOwogI2VuZGlmCiAgICAg
TmF0aXZlRXhlY3V0YWJsZSogZ2V0SG9zdEZ1bmN0aW9uKE5hdGl2ZUZ1bmN0aW9uLCBOYXRpdmVG
dW5jdGlvbiBjb25zdHJ1Y3RvciwgY29uc3QgU3RyaW5nJiBuYW1lKTsKLSAgICBOYXRpdmVFeGVj
dXRhYmxlKiBnZXRIb3N0RnVuY3Rpb24oTmF0aXZlRnVuY3Rpb24sIEludHJpbnNpYyBpbnRyaW5z
aWMsIE5hdGl2ZUZ1bmN0aW9uIGNvbnN0cnVjdG9yLCBjb25zdCBTdHJpbmcmIG5hbWUpOworICAg
IE5hdGl2ZUV4ZWN1dGFibGUqIGdldEhvc3RGdW5jdGlvbihOYXRpdmVGdW5jdGlvbiwgSW50cmlu
c2ljLCBOYXRpdmVGdW5jdGlvbiBjb25zdHJ1Y3RvciwgY29uc3QgRE9NSklUOjpTaWduYXR1cmUq
LCBjb25zdCBTdHJpbmcmIG5hbWUpOwogCiAgICAgc3RhdGljIHB0cmRpZmZfdCBleGNlcHRpb25P
ZmZzZXQoKQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0
IGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggNWEwOTc0ZDZiZTQ4ZjA3NDVh
ZGE2MzlmZGFiYTM0ZDRiM2RiNjVmNC4uYjdlZjRiYzdlZTUxMDA3N2Y2NDEyZTIwN2Q3OTI5ZjRi
ZDg4MzAzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIv
U291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTE1NDYsNyArMTU0Niw2IEBAIHNldChX
ZWJDb3JlX1NPVVJDRVMKIAogICAgIGRvbS9kZWZhdWx0L1BsYXRmb3JtTWVzc2FnZVBvcnRDaGFu
bmVsLmNwcAogCi0gICAgZG9taml0L0RPTUpJVEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuY3BwCiAg
ICAgZG9taml0L0RPTUpJVEhlbHBlcnMuY3BwCiAgICAgZG9taml0L0pTRG9jdW1lbnRET01KSVQu
Y3BwCiAgICAgZG9taml0L0pTTm9kZURPTUpJVC5jcHAKQEAgLTM1MTksNiArMzUxOCwxNSBAQCBN
QUtFX0hBU0hfVE9PTFMoJHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0vQ29sb3JEYXRhKQogbGlzdChB
UFBFTkQgV2ViQ29yZV9ERVJJVkVEX1NPVVJDRVMgJHtERVJJVkVEX1NPVVJDRVNfV0VCQ09SRV9E
SVJ9L0NvbG9yRGF0YS5jcHApCiAKIAorIyBHZW5lcmF0ZSBET01KSVRBYnN0cmFjdEhlYXBSZXBv
c2l0b3J5LmgKK2FkZF9jdXN0b21fY29tbWFuZCgKKyAgICBPVVRQVVQgJHtERVJJVkVEX1NPVVJD
RVNfV0VCQ09SRV9ESVJ9L0RPTUpJVEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaAorICAgIE1BSU5f
REVQRU5ERU5DWSBkb21qaXQvRE9NSklUQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS55YW1sCisgICAg
REVQRU5EUyAke1dFQkNPUkVfRElSfS9kb21qaXQvZ2VuZXJhdGUtYWJzdHJhY3QtaGVhcC5yYgor
ICAgIENPTU1BTkQgJHtSVUJZX0VYRUNVVEFCTEV9ICR7V0VCQ09SRV9ESVJ9L2RvbWppdC9nZW5l
cmF0ZS1hYnN0cmFjdC1oZWFwLnJiICR7V0VCQ09SRV9ESVJ9L2RvbWppdC9ET01KSVRBYnN0cmFj
dEhlYXBSZXBvc2l0b3J5LnlhbWwgJHtERVJJVkVEX1NPVVJDRVNfV0VCQ09SRV9ESVJ9L0RPTUpJ
VEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaAorICAgIFZFUkJBVElNKQorbGlzdChBUFBFTkQgV2Vi
Q29yZV9ERVJJVkVEX1NPVVJDRVMgJHtERVJJVkVEX1NPVVJDRVNfV0VCQ09SRV9ESVJ9L0RPTUpJ
VEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaCkKKwogIyBHZW5lcmF0ZSBYTUxWaWV3ZXJDU1MuaAog
YWRkX2N1c3RvbV9jb21tYW5kKAogICAgIE9VVFBVVCAke0RFUklWRURfU09VUkNFU19XRUJDT1JF
X0RJUn0vWE1MVmlld2VyQ1NTLmggJHtERVJJVkVEX1NPVVJDRVNfV0VCQ09SRV9ESVJ9L1hNTFZp
ZXdlci5taW4uY3NzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5t
YWtlIGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQppbmRleCAwY2JjMWRmODE1
ODZmMTQ5OWVmNDFhMmNiYjYyMTg2MTQ1NTUwYjI3Li5hZGE1YWNiNDlmY2EyYzQwZjMwZDgwNjEy
YTE2ZTM5YTJkMTY2OWFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNl
cy5tYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKQEAgLTc0Niw2
ICs3NDYsNyBAQCBKU19CSU5ESU5HX0lETFMgPSBcCiAKIFBZVEhPTiA9IHB5dGhvbgogUEVSTCA9
IHBlcmwKK1JVQlkgPSBydWJ5CiAKIGlmZXEgKCQoT1MpLFdpbmRvd3NfTlQpCiAgICAgREVMRVRF
ID0gY21kIC8vQyBkZWwKQEAgLTg1Miw2ICs4NTMsNyBAQCBhbGwgOiBcCiAgICAgQ1NTVmFsdWVL
ZXl3b3Jkcy5jcHAgXAogICAgIENTU1ZhbHVlS2V5d29yZHMuaCBcCiAgICAgQ29sb3JEYXRhLmNw
cCBcCisgICAgRE9NSklUQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5oIFwKICAgICBFdmVudEludGVy
ZmFjZXMuaCBcCiAgICAgRXZlbnRUYXJnZXRJbnRlcmZhY2VzLmggXAogICAgIEV4Y2VwdGlvbkNv
ZGVEZXNjcmlwdGlvbi5jcHAgXApAQCAtOTQxLDYgKzk0MywxNSBAQCBTZWxlY3RvclBzZXVkb0Vs
ZW1lbnRUeXBlTWFwLmNwcCA6ICQoV2ViQ29yZSkvY3NzL21ha2VTZWxlY3RvclBzZXVkb0VsZW1l
bnRzTWFwLgogCiAjIC0tLS0tLS0tCiAKKyMgRE9NSklUIEFic3RyYWN0IEhlYXAKKworYWxsIDog
RE9NSklUQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5oCisKK0RPTUpJVEFic3RyYWN0SGVhcFJlcG9z
aXRvcnkuaCA6ICQoV2ViQ29yZSkvZG9taml0L2dlbmVyYXRlLWFic3RyYWN0LWhlYXAucmIgJChX
ZWJDb3JlKS9kb21qaXQvRE9NSklUQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS55YW1sCisJJChSVUJZ
KSAiJChXZWJDb3JlKS9kb21qaXQvZ2VuZXJhdGUtYWJzdHJhY3QtaGVhcC5yYiIgJChXZWJDb3Jl
KS9kb21qaXQvRE9NSklUQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS55YW1sIC4vRE9NSklUQWJzdHJh
Y3RIZWFwUmVwb3NpdG9yeS5oCisKKyMgLS0tLS0tLS0KKwogIyBYTUxWaWV3ZXIgQ1NTCiAKIGFs
bCA6IFhNTFZpZXdlckNTUy5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5n
SGVhZGVycy9ieXRlY29kZS9TcGVjdWxhdGVkVHlwZS5oIGIvU291cmNlL1dlYkNvcmUvRm9yd2Fy
ZGluZ0hlYWRlcnMvYnl0ZWNvZGUvU3BlY3VsYXRlZFR5cGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wOTQ2NmY0
ZjAwYjgwN2RmZWRhMGZjODIwODU0NmI3MTg0NGYwOTllCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvYnl0ZWNvZGUvU3BlY3VsYXRlZFR5cGUuaApA
QCAtMCwwICsxLDI5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgor
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2lmbmRlZiBXZWJDb3JlX0ZXRF9TcGVjdWxhdGVkVHlwZV9oCisjZGVmaW5lIFdlYkNv
cmVfRldEX1NwZWN1bGF0ZWRUeXBlX2gKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TcGVjdWxh
dGVkVHlwZS5oPgorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5n
SGVhZGVycy9kb21qaXQvRE9NSklUU2lnbmF0dXJlLmggYi9Tb3VyY2UvV2ViQ29yZS9Gb3J3YXJk
aW5nSGVhZGVycy9kb21qaXQvRE9NSklUU2lnbmF0dXJlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzIwMDI3ZjZl
MDhlMzgzMGUzNTFiMWM5Y2QzMmYyMDMxMjlkMmI1ZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL2RvbWppdC9ET01KSVRTaWduYXR1cmUuaApAQCAt
MCwwICsxLDI5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2lmbmRlZiBXZWJDb3JlX0ZXRF9ET01KSVRTaWduYXR1cmVfaAorI2RlZmluZSBXZWJDb3Jl
X0ZXRF9ET01KSVRTaWduYXR1cmVfaAorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0RPTUpJVFNp
Z25hdHVyZS5oPgorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKaW5kZXggNTFhZTE4MWEzNzE1MjAxMzExNmI5YjgwMWU4NTcxMjI0
ZWNmYWVkOC4uNmRkNTBkYmExNGZjNTEyNjA0NTc1ZDZlMjEyODk4ZWE5ZjI0ZDBiOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisr
KyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAt
NjIxMywxMiArNjIxMywxMyBAQAogCQlFMzE1MEVBNzFEQTcyMTkzMDAxOTQwMTIgLyogRE9NSklU
SGVscGVycy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RTMxNTBFQTUxREE3MjE4RDAwMTk0MDEyIC8qIERPTUpJVEhlbHBlcnMuaCAqLzsgfTsKIAkJRTMx
ODAzOUQxREM0MDA5OTAwOTkzMkMyIC8qIEpTRHluYW1pY0Rvd25jYXN0LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFM0E1ODcyRTFEQzNGNTI2MDBGNjA3
QTYgLyogSlNEeW5hbWljRG93bmNhc3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQlFMzU2NUI3QjFEQzJENkM5MDAyMTdEQkQgLyogSlNFdmVudEN1
c3RvbS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM0
RUU0OUYxREMyRDU3NTAwRUFBOUQzIC8qIEpTRXZlbnRDdXN0b20uaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQlFMzVDQTE0RDFEQkMzQTNGMDBGODM1
MTYgLyogRE9NSklUQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzVDQTE0QjFEQkMzQTNDMDBGODM1MTYgLyog
RE9NSklUQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5jcHAgKi87IH07Ci0JCUUzNUNBMTRFMURCQzNB
NDIwMEY4MzUxNiAvKiBET01KSVRBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzVDQTE0QzFEQkMzQTNDMDBGODM1
MTYgLyogRE9NSklUQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5oICovOyB9OworCQlFMzU4MDJCNjFE
Qzg0MzVEMDBBOTc3M0MgLyogRE9NSklUSURMVHlwZUZpbHRlci5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM1ODAyQjUxREM4NDM1ODAwQTk3NzNDIC8q
IERPTUpJVElETFR5cGVGaWx0ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQlFMzc3RkU0RDFEQURFMTY1MDBDREQwMjUgLyogTm9kZUNvbnN0YW50
cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTNEMDQ5
OTMxREFEQzA0NTAwNzE4RjNDIC8qIE5vZGVDb25zdGFudHMuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFMzg4Mzg5ODFCQUQxNDVGMDBENjJFRTMg
LyogU2NyaXB0TW9kdWxlTG9hZGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEUzODgzODk0MUJBRDE0NUYwMEQ2MkVFMyAvKiBTY3JpcHRNb2R1bGVM
b2FkZXIuY3BwICovOyB9OwogCQlFMzg4Mzg5OTFCQUQxNDVGMDBENjJFRTMgLyogU2NyaXB0TW9k
dWxlTG9hZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBFMzg4Mzg5NTFCQUQxNDVGMDBENjJFRTMgLyogU2NyaXB0TW9kdWxlTG9hZGVyLmggKi87IH07
CiAJCUUzOThGQzI0MURDMzJBMjAwMDNDNDY4NCAvKiBET01KSVRIZWxwZXJzLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzOThGQzIzMURDMzJBMUIw
MDNDNDY4NCAvKiBET01KSVRIZWxwZXJzLmNwcCAqLzsgfTsKKwkJRTNBNzc2NjcxREM4NUQyODAw
QjY5MEQ4IC8qIERPTUpJVElETENvbnZlcnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEUzQTc3NjY1MURDODVEMjIwMEI2OTBEOCAvKiBET01KSVRJRExD
b252ZXJ0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
KwkJRTNBNzc2NjgxREM4NUQyODAwQjY5MEQ4IC8qIERPTUpJVElETFR5cGUuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzQTc3NjY2MURDODVEMjIwMEI2
OTBEOCAvKiBET01KSVRJRExUeXBlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJRTNCMkYwRUIxRDdGNEM5RDAwQjBDOUQxIC8qIExvYWRhYmxlQ2xh
c3NpY1NjcmlwdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBFM0IyRjBFMzFEN0YzNUVDMDBCMEM5RDEgLyogTG9hZGFibGVDbGFzc2ljU2NyaXB0LmNw
cCAqLzsgfTsKIAkJRTNCMkYwRUMxRDdGNENBMTAwQjBDOUQxIC8qIExvYWRhYmxlU2NyaXB0LmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzQjJGMEU5
MUQ3RjNEM0MwMEIwQzlEMSAvKiBMb2FkYWJsZVNjcmlwdC5jcHAgKi87IH07CiAJCUUzQjJGMEVE
MUQ3RjRDQTMwMEIwQzlEMSAvKiBMb2FkYWJsZVNjcmlwdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTNCMkYwRTcxRDdGMzVFQzAwQjBDOUQxIC8qIExv
YWRhYmxlU2NyaXB0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKQEAgLTE0MDYxLDEzICsxNDA2MiwxNSBAQAogCQlFMUZGOEY2QTE4MERCNUJFMDAxMzI2
NzQgLyogQ3J5cHRvQWxnb3JpdGhtUmVnaXN0cnkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gQ3J5cHRvQWxnb3JpdGhtUmVnaXN0cnkuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlFMUZGOEY2QjE4MERCNUJFMDAxMzI2NzQgLyogQ3J5cHRvQWxnb3Jp
dGhtUmVnaXN0cnkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ3J5cHRvQWxn
b3JpdGhtUmVnaXN0cnkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTMxNTBFQTUx
REE3MjE4RDAwMTk0MDEyIC8qIERPTUpJVEhlbHBlcnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gRE9NSklUSGVscGVycy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQlFMzM0ODI1RTFEQzkzQUEwMDA5Qzk1NDQgLyogRE9NSklUQWJzdHJhY3RIZWFwUmVwb3NpdG9y
eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBET01KSVRBYnN0cmFjdEhlYXBS
ZXBvc2l0b3J5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzNEVFNDlGMURDMkQ1
NzUwMEVBQTlEMyAvKiBKU0V2ZW50Q3VzdG9tLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEpTRXZlbnRDdXN0b20uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRTM1
Q0ExNEIxREJDM0EzQzAwRjgzNTE2IC8qIERPTUpJVEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRE9NSklUQWJzdHJhY3RIZWFw
UmVwb3NpdG9yeS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUUzNUNBMTRDMURC
QzNBM0MwMEY4MzUxNiAvKiBET01KSVRBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERPTUpJVEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTM1ODAyQjUxREM4NDM1ODAwQTk3NzNDIC8q
IERPTUpJVElETFR5cGVGaWx0ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
RE9NSklUSURMVHlwZUZpbHRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzg4
Mzg5NDFCQUQxNDVGMDBENjJFRTMgLyogU2NyaXB0TW9kdWxlTG9hZGVyLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNjcmlwdE1vZHVsZUxvYWRlci5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzODgzODk1MUJBRDE0NUYwMEQ2MkVFMyAvKiBTY3Jp
cHRNb2R1bGVMb2FkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2NyaXB0
TW9kdWxlTG9hZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzOThGQzIzMURD
MzJBMUIwMDNDNDY4NCAvKiBET01KSVRIZWxwZXJzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IERPTUpJVEhlbHBlcnMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlFM0E1ODcyRTFEQzNGNTI2MDBGNjA3QTYgLyogSlNEeW5hbWljRG93bmNhc3QuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNEeW5hbWljRG93bmNhc3QuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTNBNzc2NjUxREM4NUQyMjAwQjY5MEQ4IC8qIERP
TUpJVElETENvbnZlcnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRE9NSklU
SURMQ29udmVydC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFM0E3NzY2NjFEQzg1
RDIyMDBCNjkwRDggLyogRE9NSklUSURMVHlwZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBET01KSVRJRExUeXBlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUz
QUZBOTY0MURBNkU5MDgwMDI4NjFCRCAvKiBKU05vZGVET01KSVQuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNOb2RlRE9NSklULmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJRTNCMkYwRTMxRDdGMzVFQzAwQjBDOUQxIC8qIExvYWRhYmxlQ2xhc3Np
Y1NjcmlwdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBMb2FkYWJs
ZUNsYXNzaWNTY3JpcHQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFM0IyRjBF
NDFEN0YzNUVDMDBCMEM5RDEgLyogTG9hZGFibGVDbGFzc2ljU2NyaXB0LmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IExvYWRhYmxlQ2xhc3NpY1NjcmlwdC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtMTcyNTgsNiArMTcyNjEsNyBAQAogCQkJCTY1NjU4MTQ3MDlE
MTMwNDMwMDBFNjFENyAvKiBDU1NWYWx1ZUtleXdvcmRzLmdwZXJmICovLAogCQkJCTY1NjU4MTQ4
MDlEMTMwNDMwMDBFNjFENyAvKiBDU1NWYWx1ZUtleXdvcmRzLmggKi8sCiAJCQkJOUIzQTg4NzEx
NDU2MzJGOTAwM0FFOEY1IC8qIERPTURPTVNldHRhYmxlVG9rZW5MaXN0LmggKi8sCisJCQkJRTMz
NDgyNUUxREM5M0FBMDAwOUM5NTQ0IC8qIERPTUpJVEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaCAq
LywKIAkJCQlFMUM2Q0ZDMjE3NDZEMjkzMDA3Qjg3QTEgLyogRE9NV2luZG93Q29uc3RydWN0b3Jz
LmlkbCAqLywKIAkJCQk5NzBCNzJBNTE0NTAwOEVCMDBGMDBBMzcgLyogRXZlbnRIZWFkZXJzLmgg
Ki8sCiAJCQkJOTcwQjcyODkxNDRGRkFDNjAwRjAwQTM3IC8qIEV2ZW50SW50ZXJmYWNlcy5oICov
LApAQCAtMjI4NzAsMTEgKzIyODc0LDEyIEBACiAJCUUzQUZBOTYzMURBNkU4QUYwMDI4NjFCRCAv
KiBkb21qaXQgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAotCQkJ
CUUzNUNBMTRCMURCQzNBM0MwMEY4MzUxNiAvKiBET01KSVRBYnN0cmFjdEhlYXBSZXBvc2l0b3J5
LmNwcCAqLywKLQkJCQlFMzVDQTE0QzFEQkMzQTNDMDBGODM1MTYgLyogRE9NSklUQWJzdHJhY3RI
ZWFwUmVwb3NpdG9yeS5oICovLAogCQkJCUUzQzk5QTA4MURDM0Q0MTcwMDc5NEFEMyAvKiBET01K
SVRDaGVja0RPTS5oICovLAogCQkJCUUzOThGQzIzMURDMzJBMUIwMDNDNDY4NCAvKiBET01KSVRI
ZWxwZXJzLmNwcCAqLywKIAkJCQlFMzE1MEVBNTFEQTcyMThEMDAxOTQwMTIgLyogRE9NSklUSGVs
cGVycy5oICovLAorCQkJCUUzQTc3NjY1MURDODVEMjIwMEI2OTBEOCAvKiBET01KSVRJRExDb252
ZXJ0LmggKi8sCisJCQkJRTNBNzc2NjYxREM4NUQyMjAwQjY5MEQ4IC8qIERPTUpJVElETFR5cGUu
aCAqLywKKwkJCQlFMzU4MDJCNTFEQzg0MzU4MDBBOTc3M0MgLyogRE9NSklUSURMVHlwZUZpbHRl
ci5oICovLAogCQkJCUUzQjdDMDYyMURDMzQxNUEwMDFGQjBCOCAvKiBKU0RvY3VtZW50RE9NSklU
LmNwcCAqLywKIAkJCQlFM0FGQTk2NDFEQTZFOTA4MDAyODYxQkQgLyogSlNOb2RlRE9NSklULmNw
cCAqLywKIAkJCSk7CkBAIC0yNTc0MSw2ICsyNTc0Niw3IEBACiAJCQkJNDYwQ0JGMzYxRDRCQ0Qw
RTAwOTJFODhFIC8qIEpTRE9NV2luZG93UHJvcGVydGllcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QkNCRkI1M0QwRENEMjlDRjAwMTlCM0U1IC8qIEpTRE9NV2luZG93U2hlbGwuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTY1RTBFOTQ0MTEzM0M4OUYwMEI0Q0IxMCAvKiBKU0RPTVdyYXBwZXIuaCBpbiBI
ZWFkZXJzICovLAorCQkJCUUzQTc3NjY3MURDODVEMjgwMEI2OTBEOCAvKiBET01KSVRJRExDb252
ZXJ0LmggaW4gSGVhZGVycyAqLywKIAkJCQlGRDc4NjhCQTEzNkI5OTkyMDBENDAzREYgLyogSlNE
eW5hbWljc0NvbXByZXNzb3JOb2RlLmggaW4gSGVhZGVycyAqLywKIAkJCQk2NURGMzFGQTA5RDFD
QzYwMDAwQkUzMjUgLyogSlNFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlBREVDNzhGODE4
RUU1MzA4MDAxMzE1QzIgLyogSlNFbGVtZW50Q3VzdG9tLmggaW4gSGVhZGVycyAqLywKQEAgLTI3
MzA0LDYgKzI3MzEwLDcgQEAKIAkJCQkwODUyNUU2MzEyNzhDMDAxMDBBODQ3NzggLyogU1ZHQW5p
bWF0ZWRTdGF0aWNQcm9wZXJ0eVRlYXJPZmYuaCBpbiBIZWFkZXJzICovLAogCQkJCTA4NERCNTlC
MTI4MDA4Q0MwMDJBNkQ2NCAvKiBTVkdBbmltYXRlZFN0cmluZy5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMDgyNTA5MzkxMjhCRDREODAwRTJFRDhFIC8qIFNWR0FuaW1hdGVkVHJhbnNmb3JtTGlzdC5o
IGluIEhlYWRlcnMgKi8sCisJCQkJRTNBNzc2NjgxREM4NUQyODAwQjY5MEQ4IC8qIERPTUpJVElE
TFR5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTA4NUExNTkzMTI4OUE4REQwMDI3MTBFMyAvKiBT
VkdBbmltYXRlZFRyYW5zZm9ybUxpc3RQcm9wZXJ0eVRlYXJPZmYuaCBpbiBIZWFkZXJzICovLAog
CQkJCTQzOUQzMzQzMTNBNjkxMUMwMEMyMEY0RiAvKiBTVkdBbmltYXRlZFR5cGUuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTQzOUQzMzQ0MTNBNjkxMUMwMEMyMEY0RiAvKiBTVkdBbmltYXRlZFR5cGVB
bmltYXRvci5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNzg0Myw2ICsyNzg1MCw3IEBACiAJCQkJOTdB
QUJEMjMxNEZBMDlENTAwNzQ1N0FFIC8qIFdlYlNvY2tldEV4dGVuc2lvbkRpc3BhdGNoZXIuaCBp
biBIZWFkZXJzICovLAogCQkJCTRBNUEyQURDMTYxRTdFMDAwMDU4ODlERCAvKiBXZWJTb2NrZXRF
eHRlbnNpb25QYXJzZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTk3QUFCRDI0MTRGQTA5RDUwMDc0
NTdBRSAvKiBXZWJTb2NrZXRFeHRlbnNpb25Qcm9jZXNzb3IuaCBpbiBIZWFkZXJzICovLAorCQkJ
CUUzNTgwMkI2MURDODQzNUQwMEE5NzczQyAvKiBET01KSVRJRExUeXBlRmlsdGVyLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk5N0FBQkQyNTE0RkEwOUQ1MDA3NDU3QUUgLyogV2ViU29ja2V0RnJhbWUu
aCBpbiBIZWFkZXJzICovLAogCQkJCTk3QUFCRDI3MTRGQTA5RDUwMDc0NTdBRSAvKiBXZWJTb2Nr
ZXRIYW5kc2hha2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTMxREVBNDU2MUIzOUY0RDkwMEY3NzE3
OCAvKiBXZWJTeXN0ZW1CYWNrZHJvcExheWVyLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmggYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5oCmluZGV4IGMxODFmOWExNmY1
NTMwYmQ5NTNkYmY1ZjFjMTVmMTNhNjI0ZmExMmMuLjVkYzFlZTQwYzk4NTQwZThjNDcwNWI3MDk1
NzU5ZmZjZmMyNWRhMGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
RE9NR2xvYmFsT2JqZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01H
bG9iYWxPYmplY3QuaApAQCAtODEsNyArODEsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAg
cHVibGljOgogICAgICAgICB+SlNET01HbG9iYWxPYmplY3QoKTsKIAotICAgICAgICBzdGF0aWMg
Y29uc3QgSlNDOjpDbGFzc0luZm8qIGluZm8oKSB7IHJldHVybiAmc19pbmZvOyB9CisgICAgICAg
IHN0YXRpYyBjb25zdGV4cHIgY29uc3QgSlNDOjpDbGFzc0luZm8qIGluZm8oKSB7IHJldHVybiAm
c19pbmZvOyB9CiAKICAgICAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1
cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgICAgIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBt
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KaW5k
ZXggMzU0OTBkMDJjMmRhMGJlMjUwZDZmZWVhNTlmZmJlNzBiNTM1MGU1OS4uZjFhZTg2YTZkODgy
NjAwNGI0NzM3YzgyODUyNzY4ZTkzYWJlYjE1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KQEAgLTE0MzUsNyArMTQzNSw3IEBA
IHN1YiBHZW5lcmF0ZUhlYWRlcgogICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAicHJvdGVj
dGVkOlxuIik7CiAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgc3RhdGljIGNvbnN0
IEpTQzo6Q2xhc3NJbmZvIHNfaW5mbztcbiIpOwogICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50
LCAicHVibGljOlxuIik7Ci0gICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgc3RhdGlj
IGNvbnN0IEpTQzo6Q2xhc3NJbmZvKiBpbmZvKCkgeyByZXR1cm4gJnNfaW5mbzsgfVxuXG4iKTsK
KyAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICBzdGF0aWMgY29uc3RleHByIGNvbnN0
IEpTQzo6Q2xhc3NJbmZvKiBpbmZvKCkgeyByZXR1cm4gJnNfaW5mbzsgfVxuXG4iKTsKICAgICB9
IGVsc2UgewogICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiXG4iKTsKICAgICAgICAgcHVz
aChAaGVhZGVyQ29udGVudCwgIiAgICBERUNMQVJFX0lORk87XG5cbiIpOwpAQCAtMTg4OSw3ICsx
ODg5LDExIEBAIHN1YiBHZW5lcmF0ZVByb3BlcnRpZXNIYXNoVGFibGUKICAgICAgICAgIyBGSVhN
RTogUmVtb3ZlIHRoaXMgb25jZSB3ZSBjYW4gZ2V0IHJpZCBvZiB0aGUgcXVpcmsgaW50cm9kdWNl
ZCBpbiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYzOTY3LgogICAg
ICAgICAkZnVuY3Rpb25MZW5ndGggPSAzIGlmICRpbnRlcmZhY2VOYW1lIGVxICJFdmVudCIgYW5k
ICRmdW5jdGlvbi0+bmFtZSBlcSAiaW5pdEV2ZW50IjsKIAotICAgICAgICBwdXNoKEAkaGFzaFZh
bHVlMiwgJGZ1bmN0aW9uTGVuZ3RoKTsKKyAgICAgICAgaWYgKCRmdW5jdGlvbi0+ZXh0ZW5kZWRB
dHRyaWJ1dGVzLT57IkRPTUpJVCJ9KSB7CisgICAgICAgICAgICBwdXNoKEAkaGFzaFZhbHVlMiwg
IiZET01KSVRTaWduYXR1cmVGb3IiIC4gJGludGVyZmFjZS0+dHlwZS0+bmFtZSAuICRjb2RlR2Vu
ZXJhdG9yLT5XS191Y2ZpcnN0KCRmdW5jdGlvbi0+bmFtZSkpOworICAgICAgICB9IGVsc2Ugewor
ICAgICAgICAgICAgcHVzaChAJGhhc2hWYWx1ZTIsICRmdW5jdGlvbkxlbmd0aCk7CisgICAgICAg
IH0KIAogICAgICAgICBwdXNoKEAkaGFzaFNwZWNpYWxzLCBDb21wdXRlRnVuY3Rpb25TcGVjaWFs
KCRpbnRlcmZhY2UsICRmdW5jdGlvbikpOwogCkBAIC0yNTA1LDM5ICsyNTA5LDI4IEBAIHN1YiBh
ZGRVbnNjb3BhYmxlUHJvcGVydGllcwogICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHB1dERp
cmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT51bnNjb3BhYmxlc1N5
bWJvbCwgJnVuc2NvcGFibGVzLCBEb250RW51bSB8IFJlYWRPbmx5KTtcbiIpOwogfQogCi1zdWIg
R2V0UmVzdWx0VHlwZUZpbHRlcgorc3ViIEdldFVuc2FmZUFyZ3VtZW50VHlwZQogewotICAgIG15
ICgkdHlwZSkgPSBAXzsKKyAgICBteSAoJGludGVyZmFjZSwgJHR5cGUpID0gQF87CiAKLSAgICBt
eSAlVHlwZUZpbHRlcnMgPSAoCi0gICAgICAgICJhbnkiID0+ICJTcGVjSGVhcFRvcCIsCi0gICAg
ICAgICJib29sZWFuIiA9PiAiU3BlY0Jvb2xlYW4iLAotICAgICAgICAiYnl0ZSIgPT4gIlNwZWNJ
bnQzMk9ubHkiLAotICAgICAgICAib2N0ZXQiID0+ICJTcGVjSW50MzJPbmx5IiwKLSAgICAgICAg
InNob3J0IiA9PiAiU3BlY0ludDMyT25seSIsCi0gICAgICAgICJ1bnNpZ25lZCBzaG9ydCIgPT4g
IlNwZWNJbnQzMk9ubHkiLAotICAgICAgICAibG9uZyIgPT4gIlNwZWNJbnQzMk9ubHkiLAotICAg
ICAgICAidW5zaWduZWQgbG9uZyIgPT4gIlNwZWNCeXRlY29kZU51bWJlciIsCi0gICAgICAgICJs
b25nIGxvbmciID0+ICJTcGVjQnl0ZWNvZGVOdW1iZXIiLAotICAgICAgICAidW5zaWduZWQgbG9u
ZyBsb25nIiA9PiAiU3BlY0J5dGVjb2RlTnVtYmVyIiwKLSAgICAgICAgImZsb2F0IiA9PiAiU3Bl
Y0J5dGVjb2RlTnVtYmVyIiwKLSAgICAgICAgInVucmVzdHJpY3RlZCBmbG9hdCIgPT4gIlNwZWNC
eXRlY29kZU51bWJlciIsCi0gICAgICAgICJkb3VibGUiID0+ICJTcGVjQnl0ZWNvZGVOdW1iZXIi
LAotICAgICAgICAidW5yZXN0cmljdGVkIGRvdWJsZSIgPT4gIlNwZWNCeXRlY29kZU51bWJlciIs
Ci0gICAgICAgICJET01TdHJpbmciID0+ICJTcGVjU3RyaW5nIiwKLSAgICAgICAgIkJ5dGVTdHJp
bmciID0+ICJTcGVjU3RyaW5nIiwKLSAgICAgICAgIlVTVlN0cmluZyIgPT4gIlNwZWNTdHJpbmci
LAotICAgICk7CisgICAgbXkgJElETFR5cGUgPSBHZXRJRExUeXBlKCRpbnRlcmZhY2UsICR0eXBl
KTsKKyAgICByZXR1cm4gIkRPTUpJVDo6SURMSlNBcmd1bWVudFR5cGU8JHtJRExUeXBlfT4iOwor
fQogCi0gICAgaWYgKGV4aXN0cyAkVHlwZUZpbHRlcnN7JHR5cGUtPm5hbWV9KSB7Ci0gICAgICAg
IG15ICRyZXN1bHRUeXBlID0gIkpTQzo6JFR5cGVGaWx0ZXJzeyR0eXBlLT5uYW1lfSI7Ci0gICAg
ICAgIGlmICgkdHlwZS0+aXNOdWxsYWJsZSkgewotICAgICAgICAgICAgZGllICJcImFueVwiIHR5
cGUgbXVzdCBub3QgYmVjb21lIG51bGxhYmxlLiIgaWYgJHR5cGUtPm5hbWUgZXEgImFueSI7Ci0g
ICAgICAgICAgICAkcmVzdWx0VHlwZSA9ICIoJHJlc3VsdFR5cGUgfCBKU0M6OlNwZWNPdGhlciki
OwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiAkcmVzdWx0VHlwZTsKLSAgICB9Ci0gICAgcmV0
dXJuICJTcGVjSGVhcFRvcCI7CitzdWIgR2V0QXJndW1lbnRUeXBlRmlsdGVyCit7CisgICAgbXkg
KCRpbnRlcmZhY2UsICR0eXBlKSA9IEBfOworCisgICAgbXkgJElETFR5cGUgPSBHZXRJRExUeXBl
KCRpbnRlcmZhY2UsICR0eXBlKTsKKyAgICByZXR1cm4gIkRPTUpJVDo6SURMQXJndW1lbnRUeXBl
RmlsdGVyPCR7SURMVHlwZX0+IjsKK30KKworc3ViIEdldFJlc3VsdFR5cGVGaWx0ZXIKK3sKKyAg
ICBteSAoJGludGVyZmFjZSwgJHR5cGUpID0gQF87CisKKyAgICBteSAkSURMVHlwZSA9IEdldElE
TFR5cGUoJGludGVyZmFjZSwgJHR5cGUpOworICAgIHJldHVybiAiRE9NSklUOjpJRExSZXN1bHRU
eXBlRmlsdGVyPCR7SURMVHlwZX0+IjsKIH0KIAogc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24K
QEAgLTI2MDgsNiArMjYwMSwxNyBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICAg
ICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIjaWYgJHtjb25kaXRpb25hbFN0cmluZ31cbiIpIGlm
ICRjb25kaXRpb25hbFN0cmluZzsKICAgICAgICAgICAgIG15ICRmdW5jdGlvbk5hbWUgPSBHZXRG
dW5jdGlvbk5hbWUoJGludGVyZmFjZSwgJGNsYXNzTmFtZSwgJGZ1bmN0aW9uKTsKICAgICAgICAg
ICAgIHB1c2goQGltcGxDb250ZW50LCAiSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
ICR7ZnVuY3Rpb25OYW1lfShKU0M6OkV4ZWNTdGF0ZSopO1xuIik7CisgICAgICAgICAgICBpZiAo
JGNvZGVHZW5lcmF0b3ItPkV4dGVuZGVkQXR0cmlidXRlQ29udGFpbnMoJGZ1bmN0aW9uLT5leHRl
bmRlZEF0dHJpYnV0ZXMtPntET01KSVR9LCAiU2lnbmF0dXJlIikpIHsKKyAgICAgICAgICAgICAg
ICAkaW1wbEluY2x1ZGVzeyJET01KSVRJRExUeXBlLmgifSA9IDE7CisgICAgICAgICAgICAgICAg
bXkgJHVuc2FmZUZ1bmN0aW9uTmFtZSA9ICJ1bnNhZmUiIC4gJGNvZGVHZW5lcmF0b3ItPldLX3Vj
Zmlyc3QoJGZ1bmN0aW9uTmFtZSk7CisgICAgICAgICAgICAgICAgbXkgJGZ1bmN0aW9uU2lnbmF0
dXJlID0gIkpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCAke3Vuc2FmZUZ1bmN0aW9u
TmFtZX0oSlNDOjpFeGVjU3RhdGUqLCAkY2xhc3NOYW1lKiI7CisgICAgICAgICAgICAgICAgZm9y
ZWFjaCBteSAkYXJndW1lbnQgKEB7JGZ1bmN0aW9uLT5hcmd1bWVudHN9KSB7CisgICAgICAgICAg
ICAgICAgICAgIG15ICR0eXBlID0gJGFyZ3VtZW50LT50eXBlOworICAgICAgICAgICAgICAgICAg
ICBteSAkYXJndW1lbnRUeXBlID0gR2V0VW5zYWZlQXJndW1lbnRUeXBlKCRpbnRlcmZhY2UsICR0
eXBlKTsKKyAgICAgICAgICAgICAgICAgICAgJGZ1bmN0aW9uU2lnbmF0dXJlIC49ICIsICR7YXJn
dW1lbnRUeXBlfSI7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHB1c2goQGlt
cGxDb250ZW50LCAkZnVuY3Rpb25TaWduYXR1cmUgLiAiKTtcbiIpOworICAgICAgICAgICAgfQog
ICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIjZW5kaWZcbiIpIGlmICRjb25kaXRpb25h
bFN0cmluZzsKICAgICAgICAgfQogCkBAIC0yNjQ0LDYgKzI2NDgsMzYgQEAgc3ViIEdlbmVyYXRl
SW1wbGVtZW50YXRpb24KICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJcbiIpOwogICAgIH0K
IAorICAgIGlmICgkbnVtRnVuY3Rpb25zID4gMCkgeworICAgICAgICAjIEdlbmVyYXRlIERPTUpJ
VDo6U2lnbmF0dXJlIHZhcmlhYmxlcy4KKyAgICAgICAgZm9yZWFjaCBteSAkZnVuY3Rpb24gKEBm
dW5jdGlvbnMpIHsKKyAgICAgICAgICAgIG5leHQgdW5sZXNzICRjb2RlR2VuZXJhdG9yLT5FeHRl
bmRlZEF0dHJpYnV0ZUNvbnRhaW5zKCRmdW5jdGlvbi0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57RE9N
SklUfSwgIlNpZ25hdHVyZSIpOworICAgICAgICAgICAgJGltcGxJbmNsdWRlc3siRE9NSklUSURM
VHlwZUZpbHRlci5oIn0gPSAxOworICAgICAgICAgICAgJGltcGxJbmNsdWRlc3siRE9NSklUQ2hl
Y2tET00uaCJ9ID0gMTsKKyAgICAgICAgICAgICRpbXBsSW5jbHVkZXN7IkRPTUpJVEFic3RyYWN0
SGVhcFJlcG9zaXRvcnkuaCJ9ID0gMTsKKworICAgICAgICAgICAgbXkgJGlzT3ZlcmxvYWRlZCA9
ICRmdW5jdGlvbi0+e292ZXJsb2Fkc30gJiYgQHskZnVuY3Rpb24tPntvdmVybG9hZHN9fSA+IDE7
CisgICAgICAgICAgICBkaWUgIm92ZXJsb2FkcyBpcyBub3Qgc3VwcG9ydGVkIGluIERPTUpJVCIg
aWYgJGlzT3ZlcmxvYWRlZDsKKworICAgICAgICAgICAgbXkgJGludGVyZmFjZU5hbWUgPSAkaW50
ZXJmYWNlLT50eXBlLT5uYW1lOworICAgICAgICAgICAgbXkgJGZ1bmN0aW9uTmFtZSA9IEdldEZ1
bmN0aW9uTmFtZSgkaW50ZXJmYWNlLCAkY2xhc3NOYW1lLCAkZnVuY3Rpb24pOworICAgICAgICAg
ICAgbXkgJHVuc2FmZUZ1bmN0aW9uTmFtZSA9ICJ1bnNhZmUiIC4gJGNvZGVHZW5lcmF0b3ItPldL
X3VjZmlyc3QoJGZ1bmN0aW9uTmFtZSk7CisgICAgICAgICAgICBteSAkZG9tSklUU2lnbmF0dXJl
TmFtZSA9ICJET01KSVRTaWduYXR1cmVGb3IiIC4gJGludGVyZmFjZS0+dHlwZS0+bmFtZSAuICRj
b2RlR2VuZXJhdG9yLT5XS191Y2ZpcnN0KCRmdW5jdGlvbi0+bmFtZSk7CisgICAgICAgICAgICBt
eSAkY2xhc3NJbmZvID0gIkpTIiAuICRpbnRlcmZhY2UtPnR5cGUtPm5hbWUgLiAiOjppbmZvKCki
OworICAgICAgICAgICAgbXkgJHJlc3VsdFR5cGUgPSBHZXRSZXN1bHRUeXBlRmlsdGVyKCRpbnRl
cmZhY2UsICRmdW5jdGlvbi0+dHlwZSk7CisgICAgICAgICAgICBteSAkZG9tSklUU2lnbmF0dXJl
ID0gInN0YXRpYyBjb25zdCBKU0M6OkRPTUpJVDo6U2lnbmF0dXJlICR7ZG9tSklUU2lnbmF0dXJl
TmFtZX0oKHVpbnRwdHJfdCkke3Vuc2FmZUZ1bmN0aW9uTmFtZX0sIERPTUpJVDo6Y2hlY2tET008
JGludGVyZmFjZU5hbWU+LCAkY2xhc3NJbmZvLCBKU0M6OkRPTUpJVDo6RWZmZWN0Ojpmb3JSZWFk
KERPTUpJVDo6QWJzdHJhY3RIZWFwUmVwb3NpdG9yeTo6RE9NKSwgJHtyZXN1bHRUeXBlfSI7Cisg
ICAgICAgICAgICBmb3JlYWNoIG15ICRhcmd1bWVudCAoQHskZnVuY3Rpb24tPmFyZ3VtZW50c30p
IHsKKyAgICAgICAgICAgICAgICBteSAkdHlwZSA9ICRhcmd1bWVudC0+dHlwZTsKKyAgICAgICAg
ICAgICAgICBteSAkYXJndW1lbnRUeXBlID0gR2V0QXJndW1lbnRUeXBlRmlsdGVyKCRpbnRlcmZh
Y2UsICR0eXBlKTsKKyAgICAgICAgICAgICAgICAkZG9tSklUU2lnbmF0dXJlIC49ICIsICR7YXJn
dW1lbnRUeXBlfSI7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBteSAkY29uZGl0aW9uYWxT
dHJpbmcgPSAkY29kZUdlbmVyYXRvci0+R2VuZXJhdGVDb25kaXRpb25hbFN0cmluZygkZnVuY3Rp
b24pOworICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIjaWYgJHtjb25kaXRpb25hbFN0
cmluZ31cbiIpIGlmICRjb25kaXRpb25hbFN0cmluZzsKKyAgICAgICAgICAgIHB1c2goQGltcGxD
b250ZW50LCAkZG9tSklUU2lnbmF0dXJlIC4gIik7XG4iKTsKKyAgICAgICAgICAgIHB1c2goQGlt
cGxDb250ZW50LCAiI2VuZGlmXG4iKSBpZiAkY29uZGl0aW9uYWxTdHJpbmc7CisgICAgICAgIH0K
KyAgICB9CisKICAgICBHZW5lcmF0ZVByb3RvdHlwZURlY2xhcmF0aW9uKFxAaW1wbENvbnRlbnQs
ICRjbGFzc05hbWUsICRpbnRlcmZhY2UpIGlmICFIZWFkZXJOZWVkc1Byb3RvdHlwZURlY2xhcmF0
aW9uKCRpbnRlcmZhY2UpOwogCiAgICAgR2VuZXJhdGVDb25zdHJ1Y3RvckRlY2xhcmF0aW9uKFxA
aW1wbENvbnRlbnQsICRjbGFzc05hbWUsICRpbnRlcmZhY2UpIGlmIE5lZWRzQ29uc3RydWN0b3JQ
cm9wZXJ0eSgkaW50ZXJmYWNlKTsKQEAgLTI3NDAsNyArMjc3NCwxMSBAQCBzdWIgR2VuZXJhdGVJ
bXBsZW1lbnRhdGlvbgogICAgICAgICAgICAgcHVzaChAaGFzaFZhbHVlMSwgJGZ1bmN0aW9uTmFt
ZSk7CiAKICAgICAgICAgICAgIG15ICRmdW5jdGlvbkxlbmd0aCA9IEdldEZ1bmN0aW9uTGVuZ3Ro
KCRmdW5jdGlvbik7Ci0gICAgICAgICAgICBwdXNoKEBoYXNoVmFsdWUyLCAkZnVuY3Rpb25MZW5n
dGgpOworICAgICAgICAgICAgaWYgKCRjb2RlR2VuZXJhdG9yLT5FeHRlbmRlZEF0dHJpYnV0ZUNv
bnRhaW5zKCRmdW5jdGlvbi0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57RE9NSklUfSwgIlNpZ25hdHVy
ZSIpKSB7CisgICAgICAgICAgICAgICAgcHVzaChAaGFzaFZhbHVlMiwgIkRPTUpJVEZ1bmN0aW9u
Rm9yIiAuICRpbnRlcmZhY2UtPnR5cGUtPm5hbWUgLiAkY29kZUdlbmVyYXRvci0+V0tfdWNmaXJz
dCgkZnVuY3Rpb24tPm5hbWUpKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAg
ICAgcHVzaChAaGFzaFZhbHVlMiwgJGZ1bmN0aW9uTGVuZ3RoKTsKKyAgICAgICAgICAgIH0KIAog
ICAgICAgICAgICAgcHVzaChAaGFzaFNwZWNpYWxzLCBDb21wdXRlRnVuY3Rpb25TcGVjaWFsKCRp
bnRlcmZhY2UsICRmdW5jdGlvbikpOwogCkBAIC0zMzA3LDEzICszMzQ1LDE0IEBAIHN1YiBHZW5l
cmF0ZUltcGxlbWVudGF0aW9uCiAKICAgICAgICAgICAgIGlmICgkYXR0cmlidXRlLT5leHRlbmRl
ZEF0dHJpYnV0ZXMtPnsiRE9NSklUIn0pIHsKICAgICAgICAgICAgICAgICAkaW1wbEluY2x1ZGVz
eyI8d3RmL05ldmVyRGVzdHJveWVkLmg+In0gPSAxOworICAgICAgICAgICAgICAgICRpbXBsSW5j
bHVkZXN7IkRPTUpJVElETFR5cGVGaWx0ZXIuaCJ9ID0gMTsKICAgICAgICAgICAgICAgICBteSAk
aW50ZXJmYWNlTmFtZSA9ICRpbnRlcmZhY2UtPnR5cGUtPm5hbWU7CiAgICAgICAgICAgICAgICAg
bXkgJGF0dHJpYnV0ZU5hbWUgPSAkYXR0cmlidXRlLT5uYW1lOwogICAgICAgICAgICAgICAgIG15
ICRnZW5lcmF0b3JOYW1lID0gJGludGVyZmFjZU5hbWUgLiAkY29kZUdlbmVyYXRvci0+V0tfdWNm
aXJzdCgkYXR0cmlidXRlLT5uYW1lKTsKICAgICAgICAgICAgICAgICBteSAkZG9tSklUQ2xhc3NO
YW1lID0gJGdlbmVyYXRvck5hbWUgLiAiRE9NSklUIjsKICAgICAgICAgICAgICAgICBteSAkZ2V0
dGVyID0gR2V0QXR0cmlidXRlR2V0dGVyTmFtZSgkaW50ZXJmYWNlLCAkZ2VuZXJhdG9yTmFtZSwg
JGF0dHJpYnV0ZSk7CiAgICAgICAgICAgICAgICAgbXkgJHNldHRlciA9IElzUmVhZG9ubHkoJGF0
dHJpYnV0ZSkgPyAibnVsbHB0ciIgOiBHZXRBdHRyaWJ1dGVTZXR0ZXJOYW1lKCRpbnRlcmZhY2Us
ICRnZW5lcmF0b3JOYW1lLCAkYXR0cmlidXRlKTsKLSAgICAgICAgICAgICAgICBteSAkcmVzdWx0
VHlwZSA9IEdldFJlc3VsdFR5cGVGaWx0ZXIoJGF0dHJpYnV0ZS0+dHlwZSk7CisgICAgICAgICAg
ICAgICAgbXkgJHJlc3VsdFR5cGUgPSBHZXRSZXN1bHRUeXBlRmlsdGVyKCRpbnRlcmZhY2UsICRh
dHRyaWJ1dGUtPnR5cGUpOwogICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiJGRv
bUpJVENsYXNzTmFtZTo6JGRvbUpJVENsYXNzTmFtZSgpXG4iKTsKICAgICAgICAgICAgICAgICBw
dXNoKEBpbXBsQ29udGVudCwgIiAgICA6IEpTQzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIoJGdldHRl
ciwgJHNldHRlciwgJHtjbGFzc05hbWV9OjppbmZvKCksICRyZXN1bHRUeXBlKVxuIik7CiAgICAg
ICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ7XG4iKTsKQEAgLTM2ODgsNiArMzcyNyw3
IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAKICAgICAgICAgICAgIG15ICRpc0N1c3Rv
bSA9IEhhc0N1c3RvbU1ldGhvZCgkZnVuY3Rpb24tPmV4dGVuZGVkQXR0cmlidXRlcyk7CiAgICAg
ICAgICAgICBteSAkaXNPdmVybG9hZGVkID0gJGZ1bmN0aW9uLT57b3ZlcmxvYWRzfSAmJiBAeyRm
dW5jdGlvbi0+e292ZXJsb2Fkc319ID4gMTsKKyAgICAgICAgICAgIG15ICRpc0RPTUpJVCA9ICRj
b2RlR2VuZXJhdG9yLT5FeHRlbmRlZEF0dHJpYnV0ZUNvbnRhaW5zKCRmdW5jdGlvbi0+ZXh0ZW5k
ZWRBdHRyaWJ1dGVzLT57RE9NSklUfSwgIlNpZ25hdHVyZSIpOwogCiAgICAgICAgICAgICBteSAk
bWF5VGhyb3dMZWdhY3lFeGNlcHRpb24gPSAkZnVuY3Rpb24tPmV4dGVuZGVkQXR0cmlidXRlcy0+
e01heVRocm93TGVnYWN5RXhjZXB0aW9ufTsKIApAQCAtMzgyNiw2ICszODY2LDc5IEBAIEVORAog
ICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIn1cblxuIik7
CisKKyAgICAgICAgICAgIGlmICgkaXNET01KSVQpIHsKKyAgICAgICAgICAgICAgICAkaW1wbElu
Y2x1ZGVzeyI8aW50ZXJwcmV0ZXIvRnJhbWVUcmFjZXJzLmg+In0gPSAxOworICAgICAgICAgICAg
ICAgIG15ICR1bnNhZmVGdW5jdGlvbk5hbWUgPSAidW5zYWZlIiAuICRjb2RlR2VuZXJhdG9yLT5X
S191Y2ZpcnN0KCRmdW5jdGlvbk5hbWUpOworICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250
ZW50LCAiSlNDOjpFbmNvZGVkSlNWYWx1ZSAke3Vuc2FmZUZ1bmN0aW9uTmFtZX0oSlNDOjpFeGVj
U3RhdGUqIHN0YXRlLCAkY2xhc3NOYW1lKiBjYXN0ZWRUaGlzIik7CisgICAgICAgICAgICAgICAg
Zm9yZWFjaCBteSAkYXJndW1lbnQgKEB7JGZ1bmN0aW9uLT5hcmd1bWVudHN9KSB7CisgICAgICAg
ICAgICAgICAgICAgIG15ICR0eXBlID0gJGFyZ3VtZW50LT50eXBlOworICAgICAgICAgICAgICAg
ICAgICBteSAkYXJndW1lbnRUeXBlID0gR2V0VW5zYWZlQXJndW1lbnRUeXBlKCRpbnRlcmZhY2Us
ICR0eXBlKTsKKyAgICAgICAgICAgICAgICAgICAgbXkgJG5hbWUgPSAkYXJndW1lbnQtPm5hbWU7
CisgICAgICAgICAgICAgICAgICAgIG15ICRlbmNvZGVkTmFtZSA9ICJlbmNvZGVkIiAuICRjb2Rl
R2VuZXJhdG9yLT5XS191Y2ZpcnN0KCRuYW1lKTsKKyAgICAgICAgICAgICAgICAgICAgcHVzaChA
aW1wbENvbnRlbnQsICIsICR7YXJndW1lbnRUeXBlfSAke2VuY29kZWROYW1lfSIpOworICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIilcbiIpOwor
ICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAie1xuIik7CisgICAgICAgICAgICAg
ICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTtcbiIpOworICAg
ICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIFZNJiB2bSA9IHN0YXRlLT52bSgp
O1xuIik7CisgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgSlNDOjpOYXRp
dmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKCZ2bSwgc3RhdGUpO1xuIik7CisgICAgICAgICAgICAg
ICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7XG4iKTsKKyAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAg
ICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7XG4iKTsKKyAgICAgICAgICAgICAgICBwdXNoKEBp
bXBsQ29udGVudCwgIiAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpO1xuIik7
CisgICAgICAgICAgICAgICAgbXkgQGFyZ3VtZW50czsKKyAgICAgICAgICAgICAgICBteSAkaW1w
bEZ1bmN0aW9uTmFtZTsKKyAgICAgICAgICAgICAgICBteSAkaW1wbGVtZW50ZWRCeSA9ICRmdW5j
dGlvbi0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57SW1wbGVtZW50ZWRCeX07CisKKyAgICAgICAgICAg
ICAgICBpZiAoJGltcGxlbWVudGVkQnkpIHsKKyAgICAgICAgICAgICAgICAgICAgQWRkVG9JbXBs
SW5jbHVkZXMoIiR7aW1wbGVtZW50ZWRCeX0uaCIsICRmdW5jdGlvbi0+ZXh0ZW5kZWRBdHRyaWJ1
dGVzLT57Q29uZGl0aW9uYWx9KTsKKyAgICAgICAgICAgICAgICAgICAgdW5zaGlmdChAYXJndW1l
bnRzLCAiaW1wbCIpIGlmICEkZnVuY3Rpb24tPmlzU3RhdGljOworICAgICAgICAgICAgICAgICAg
ICAkaW1wbEZ1bmN0aW9uTmFtZSA9ICJXZWJDb3JlOjoke2ltcGxlbWVudGVkQnl9Ojoke2Z1bmN0
aW9uSW1wbGVtZW50YXRpb25OYW1lfSI7CisgICAgICAgICAgICAgICAgfSBlbHNpZiAoJGZ1bmN0
aW9uLT5pc1N0YXRpYykgeworICAgICAgICAgICAgICAgICAgICAkaW1wbEZ1bmN0aW9uTmFtZSA9
ICIke2ludGVyZmFjZU5hbWV9Ojoke2Z1bmN0aW9uSW1wbGVtZW50YXRpb25OYW1lfSI7CisgICAg
ICAgICAgICAgICAgfSBlbHNpZiAoJHN2Z1Byb3BlcnR5T3JMaXN0UHJvcGVydHlUeXBlIGFuZCAh
JHN2Z0xpc3RQcm9wZXJ0eVR5cGUpIHsKKyAgICAgICAgICAgICAgICAgICAgJGltcGxGdW5jdGlv
bk5hbWUgPSAicG9kSW1wbC4ke2Z1bmN0aW9uSW1wbGVtZW50YXRpb25OYW1lfSI7CisgICAgICAg
ICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgJGltcGxGdW5jdGlvbk5hbWUg
PSAiaW1wbC4ke2Z1bmN0aW9uSW1wbGVtZW50YXRpb25OYW1lfSI7CisgICAgICAgICAgICAgICAg
fQorCisgICAgICAgICAgICAgICAgbXkgJGFyZ3VtZW50SW5kZXggPSAwOworICAgICAgICAgICAg
ICAgIGZvcmVhY2ggbXkgJGFyZ3VtZW50IChAeyRmdW5jdGlvbi0+YXJndW1lbnRzfSkgeworICAg
ICAgICAgICAgICAgICAgICBteSAkdmFsdWUgPSAiIjsKKyAgICAgICAgICAgICAgICAgICAgbXkg
JHR5cGUgPSAkYXJndW1lbnQtPnR5cGU7CisgICAgICAgICAgICAgICAgICAgIG15ICRuYW1lID0g
JGFyZ3VtZW50LT5uYW1lOworICAgICAgICAgICAgICAgICAgICBteSAkZW5jb2RlZE5hbWUgPSAi
ZW5jb2RlZCIgLiAkY29kZUdlbmVyYXRvci0+V0tfdWNmaXJzdCgkbmFtZSk7CisgICAgICAgICAg
ICAgICAgICAgIG15ICRuYXRpdmVUeXBlID0gR2V0TmF0aXZlVHlwZSgkaW50ZXJmYWNlLCAkYXJn
dW1lbnQtPnR5cGUpOworICAgICAgICAgICAgICAgICAgICBteSAkc2hvdWxkUGFzc0J5UmVmZXJl
bmNlID0gU2hvdWxkUGFzc1dyYXBwZXJCeVJlZmVyZW5jZSgkYXJndW1lbnQsICRpbnRlcmZhY2Up
OworCisgICAgICAgICAgICAgICAgICAgIGlmICghJHNob3VsZFBhc3NCeVJlZmVyZW5jZSAmJiAo
JGNvZGVHZW5lcmF0b3ItPklzV3JhcHBlclR5cGUoJHR5cGUpIHx8ICRjb2RlR2VuZXJhdG9yLT5J
c1R5cGVkQXJyYXlUeXBlKCR0eXBlKSkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICRpbXBs
SW5jbHVkZXN7IjxydW50aW1lL0Vycm9yLmg+In0gPSAxOworICAgICAgICAgICAgICAgICAgICAg
ICAgbXkgKCRuYXRpdmVWYWx1ZSwgJG1heVRocm93RXhjZXB0aW9uKSA9IFVuc2FmZVRvTmF0aXZl
KCRpbnRlcmZhY2UsICRhcmd1bWVudCwgJGVuY29kZWROYW1lLCAkZnVuY3Rpb24tPmV4dGVuZGVk
QXR0cmlidXRlcy0+e0NvbmRpdGlvbmFsfSk7CisgICAgICAgICAgICAgICAgICAgICAgICBwdXNo
KEBpbXBsQ29udGVudCwgIiAgICAkbmF0aXZlVHlwZSAkbmFtZSA9IG51bGxwdHI7XG4iKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICRuYW1lID0gJG5h
dGl2ZVZhbHVlO1xuIik7CisgICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVu
dCwgIiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkp
O1xuIikgaWYgJG1heVRocm93RXhjZXB0aW9uOworICAgICAgICAgICAgICAgICAgICAgICAgJHZh
bHVlID0gIldURk1vdmUoJG5hbWUpIjsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIG15ICgkbmF0aXZlVmFsdWUsICRtYXlUaHJvd0V4Y2VwdGlv
bikgPSBVbnNhZmVUb05hdGl2ZSgkaW50ZXJmYWNlLCAkYXJndW1lbnQsICRlbmNvZGVkTmFtZSwg
JGZ1bmN0aW9uLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntDb25kaXRpb25hbH0pOworICAgICAgICAg
ICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgYXV0byAkbmFtZSA9ICR7bmF0
aXZlVmFsdWV9O1xuIik7CisgICAgICAgICAgICAgICAgICAgICAgICAkdmFsdWUgPSAiV1RGTW92
ZSgkbmFtZSkiOworICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTtcbiIp
IGlmICRtYXlUaHJvd0V4Y2VwdGlvbjsKKyAgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAg
ICAgICAgICAgICAgIGlmICgkc2hvdWxkUGFzc0J5UmVmZXJlbmNlKSB7CisgICAgICAgICAgICAg
ICAgICAgICAgICAkdmFsdWUgPSAiKiRuYW1lIjsKKyAgICAgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgICAgICAgICBwdXNoKEBhcmd1bWVudHMsICR2YWx1ZSk7CisgICAgICAgICAgICAg
ICAgICAgICRhcmd1bWVudEluZGV4Kys7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
ICAgIG15ICRmdW5jdGlvblN0cmluZyA9ICIkaW1wbEZ1bmN0aW9uTmFtZSgiIC4gam9pbigiLCAi
LCBAYXJndW1lbnRzKSAuICIpIjsKKyAgICAgICAgICAgICAgICAkZnVuY3Rpb25TdHJpbmcgPSAi
cHJvcGFnYXRlRXhjZXB0aW9uKCpzdGF0ZSwgdGhyb3dTY29wZSwgJGZ1bmN0aW9uU3RyaW5nKSIg
aWYgTmVlZHNFeHBsaWNpdFByb3BhZ2F0ZUV4Y2VwdGlvbkNhbGwoJGZ1bmN0aW9uKTsKKyAgICAg
ICAgICAgICAgICBteSAkdGhpc09iamVjdCA9ICJjYXN0ZWRUaGlzIjsKKyAgICAgICAgICAgICAg
ICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBKU1ZhbHVlIHJlc3VsdCA9ICIgLiBOYXRpdmVUb0pT
VmFsdWVVc2luZ1BvaW50ZXJzKCRmdW5jdGlvbiwgMSwgJGludGVyZmFjZSwgJGZ1bmN0aW9uU3Ry
aW5nLCAkdGhpc09iamVjdCkgLiAiO1xuIik7CisgICAgICAgICAgICAgICAgcHVzaChAaW1wbENv
bnRlbnQsICIgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpO1xuIik7CisgICAgICAg
ICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ9XG5cbiIpOworICAgICAgICAgICAgfQorCiAg
ICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiNlbmRpZlxuXG4iKSBpZiAkY29uZGl0aW9u
YWw7CiAKICAgICAgICAgICAgICMgR2VuZXJhdGUgYSBmdW5jdGlvbiBkaXNwYXRjaGluZyBjYWxs
IHRvIHRoZSByZXN0IG9mIHRoZSBvdmVybG9hZHMuCkBAIC01MzE5LDYgKzU0MzIsNDMgQEAgc3Vi
IEpTVmFsdWVUb05hdGl2ZQogICAgIHJldHVybiAoIkpTIiAuICR0eXBlLT5uYW1lIC4gIjo6dG9X
cmFwcGVkKCR2YWx1ZSkiLCAwKTsKIH0KIAorc3ViIFVuc2FmZVRvTmF0aXZlCit7CisgICAgbXkg
KCRpbnRlcmZhY2UsICRjb250ZXh0LCAkdmFsdWUsICRjb25kaXRpb25hbCwgJHN0YXRlUG9pbnRl
ciwgJHN0YXRlUmVmZXJlbmNlLCAkdGhpc09iamVjdFJlZmVyZW5jZSkgPSBAXzsKKworICAgIGFz
c2VydCgiSW52YWxpZCBjb250ZXh0IHR5cGUiKSBpZiAhSXNWYWxpZENvbnRleHRGb3JKU1ZhbHVl
VG9OYXRpdmUoJGNvbnRleHQpOworCisgICAgbXkgJHR5cGUgPSAkY29udGV4dC0+dHlwZTsKKwor
ICAgICMgRklYTUU6IFJlbW92ZSB0aGVzZSAzIHZhcmlhYmxlcyB3aGVuIGFsbCBKU1ZhbHVlVG9O
YXRpdmUgdXNlIHJlZmVyZW5jZXMuCisgICAgJHN0YXRlUG9pbnRlciA9ICJzdGF0ZSIgdW5sZXNz
ICRzdGF0ZVBvaW50ZXI7CisgICAgJHN0YXRlUmVmZXJlbmNlID0gIipzdGF0ZSIgdW5sZXNzICRz
dGF0ZVJlZmVyZW5jZTsKKyAgICAkdGhpc09iamVjdFJlZmVyZW5jZSA9ICIqY2FzdGVkVGhpcyIg
dW5sZXNzICR0aGlzT2JqZWN0UmVmZXJlbmNlOworCisgICAgaWYgKEpTVmFsdWVUb05hdGl2ZUlz
SGFuZGxlZEJ5RE9NQ29udmVydCgkdHlwZSwgJGNvbnRleHQpKSB7CisgICAgICAgIEFkZFRvSW1w
bEluY2x1ZGVzKCJET01KSVRJRExDb252ZXJ0LmgiKTsKKyAgICAgICAgQWRkVG9JbXBsSW5jbHVk
ZXNGb3JJRExUeXBlKCR0eXBlLCAkY29uZGl0aW9uYWwpOworCisgICAgICAgIG15ICRJRExUeXBl
ID0gR2V0SURMVHlwZSgkaW50ZXJmYWNlLCAkdHlwZSk7CisKKyAgICAgICAgbXkgQGNvbnZlcnNp
b25Bcmd1bWVudHMgPSAoKTsKKyAgICAgICAgcHVzaChAY29udmVyc2lvbkFyZ3VtZW50cywgIiRz
dGF0ZVJlZmVyZW5jZSIpOworICAgICAgICBwdXNoKEBjb252ZXJzaW9uQXJndW1lbnRzLCAiJHZh
bHVlIik7CisKKyAgICAgICAgbXkgQGNvbnZlcnNpb25TdGF0aWNBcmd1bWVudHMgPSAoKTsKKyAg
ICAgICAgcHVzaChAY29udmVyc2lvblN0YXRpY0FyZ3VtZW50cywgR2V0SW50ZWdlckNvbnZlcnNp
b25Db25maWd1cmF0aW9uKCRjb250ZXh0KSkgaWYgJGNvZGVHZW5lcmF0b3ItPklzSW50ZWdlclR5
cGUoJHR5cGUpOworICAgICAgICBwdXNoKEBjb252ZXJzaW9uU3RhdGljQXJndW1lbnRzLCBHZXRT
dHJpbmdDb252ZXJzaW9uQ29uZmlndXJhdGlvbigkY29udGV4dCkpIGlmICRjb2RlR2VuZXJhdG9y
LT5Jc1N0cmluZ1R5cGUoJHR5cGUpOworCisgICAgICAgIGlmIChzY2FsYXIoQGNvbnZlcnNpb25T
dGF0aWNBcmd1bWVudHMpID4gMCkgeworICAgICAgICAgICAgcmV0dXJuICgiRE9NSklUOjpEaXJl
Y3RDb252ZXJ0ZXI8JElETFR5cGU+OjpkaXJlY3RDb252ZXJ0PCIgLiBqb2luKCIsICIsIEBjb252
ZXJzaW9uU3RhdGljQXJndW1lbnRzKSAuICI+KCIgLiBqb2luKCIsICIsIEBjb252ZXJzaW9uQXJn
dW1lbnRzKSAuICIpIiwgMSk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuICgiRE9NSklUOjpE
aXJlY3RDb252ZXJ0ZXI8JElETFR5cGU+OjpkaXJlY3RDb252ZXJ0KCIgLiBqb2luKCIsICIsIEBj
b252ZXJzaW9uQXJndW1lbnRzKSAuICIpIiwgMSk7CisgICAgfQorCisgICAgIyBGSVhNRTogRXh0
ZW5kIG1vcmUuCisgICAgZGllICJPbmx5IERPTUNvbnZlcnQgc3VwcG9ydGVkIG9uZSBpcyBub3cg
c3VwcG9ydGVkIGluIERPTUpJVCB1bnNhZmUuIjsKK30KKwogc3ViIE5hdGl2ZVRvSlNWYWx1ZUlz
SGFuZGxlZEJ5RE9NQ29udmVydAogewogICAgIG15ICgkdHlwZSkgPSBAXzsKQEAgLTU1MjUsNyAr
NTY3NSwxMCBAQCBzdWIgR2VuZXJhdGVIYXNoVGFibGVWYWx1ZUFycmF5CiAgICAgICAgICAgICBw
dXNoKEBpbXBsQ29udGVudCwgIiNpZiAke2NvbmRpdGlvbmFsU3RyaW5nfVxuIik7CiAgICAgICAg
IH0KIAotICAgICAgICBpZiAoIkAkc3BlY2lhbHNbJGldIiA9fiBtL0Z1bmN0aW9uLykgeworICAg
ICAgICBpZiAoIkAkc3BlY2lhbHNbJGldIiA9fiBtL0RPTUpJVEZ1bmN0aW9uLykgeworICAgICAg
ICAgICAgJGZpcnN0VGFyZ2V0VHlwZSA9ICJzdGF0aWNfY2FzdDxOYXRpdmVGdW5jdGlvbj4iOwor
ICAgICAgICAgICAgJHNlY29uZFRhcmdldFR5cGUgPSAic3RhdGljX2Nhc3Q8Y29uc3QgSlNDOjpE
T01KSVQ6OlNpZ25hdHVyZSo+IjsKKyAgICAgICAgfSBlbHNpZiAoIkAkc3BlY2lhbHNbJGldIiA9
fiBtL0Z1bmN0aW9uLykgewogICAgICAgICAgICAgJGZpcnN0VGFyZ2V0VHlwZSA9ICJzdGF0aWNf
Y2FzdDxOYXRpdmVGdW5jdGlvbj4iOwogICAgICAgICB9IGVsc2lmICgiQCRzcGVjaWFsc1skaV0i
ID1+IG0vQnVpbHRpbi8pIHsKICAgICAgICAgICAgICRmaXJzdFRhcmdldFR5cGUgPSAic3RhdGlj
X2Nhc3Q8QnVpbHRpbkdlbmVyYXRvcj4iOwpAQCAtNjEyMyw2ICs2Mjc2LDkgQEAgc3ViIENvbXB1
dGVGdW5jdGlvblNwZWNpYWwKICAgICBlbHNlIHsKICAgICAgICAgcHVzaChAc3BlY2lhbHMsICJK
U0M6OkZ1bmN0aW9uIik7CiAgICAgfQorICAgIGlmICgkZnVuY3Rpb24tPmV4dGVuZGVkQXR0cmli
dXRlcy0+eyJET01KSVQifSkgeworICAgICAgICBwdXNoKEBzcGVjaWFscywgIkRPTUpJVEZ1bmN0
aW9uIikgaWYgJGNvZGVHZW5lcmF0b3ItPkV4dGVuZGVkQXR0cmlidXRlQ29udGFpbnMoJGZ1bmN0
aW9uLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntET01KSVR9LCAiU2lnbmF0dXJlIik7CisgICAgfQog
ICAgIHJldHVybiAoQHNwZWNpYWxzID4gMCkgPyBqb2luKCIgfCAiLCBAc3BlY2lhbHMpIDogIjAi
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0lETEF0
dHJpYnV0ZXMudHh0IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9JRExBdHRyaWJ1
dGVzLnR4dAppbmRleCBhMmU3NTQxNTkxY2UzZjU3NmU3YTdkMmQ2ZDJmYzYyZGRkZmEwNDFjLi4x
NDZjMmJjYzhlMGYzNzZkNWRjYzU0MzUzOTA4MzM1OWM3MmRiZTYzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0lETEF0dHJpYnV0ZXMudHh0CisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvSURMQXR0cmlidXRlcy50eHQKQEAgLTUyLDcgKzUy
LDcgQEAgQ3VzdG9tUHV0RnVuY3Rpb24KIEN1c3RvbVNldFByb3RvdHlwZQogQ3VzdG9tU2V0dGVy
CiBDdXN0b21Ub0pTT2JqZWN0Ci1ET01KSVQKK0RPTUpJVD18U2lnbmF0dXJlCiBEb05vdENoZWNr
Q29uc3RhbnRzCiBEb05vdENoZWNrU2VjdXJpdHkKIERvTm90Q2hlY2tTZWN1cml0eU9uR2V0dGVy
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0RE9NSklULmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RET01KSVQuY3BwCmluZGV4IDI0ODhkZjI2YmRiNTJiNTBjZDY3ZDYwY2NhNTY1YjI2NTM2
N2U0Y2YuLmFmMWJjZmMzMWJiYWZlMmIyNTNmODdkMGY3M2IwMzgzMWIzNzlhZGEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RET01KSVQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RE
T01KSVQuY3BwCkBAIC0yMSwxMCArMjEsMTggQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNs
dWRlICJKU1Rlc3RET01KSVQuaCIKIAorI2luY2x1ZGUgIkRPTUpJVEFic3RyYWN0SGVhcFJlcG9z
aXRvcnkuaCIKKyNpbmNsdWRlICJET01KSVRDaGVja0RPTS5oIgorI2luY2x1ZGUgIkRPTUpJVElE
TENvbnZlcnQuaCIKKyNpbmNsdWRlICJET01KSVRJRExUeXBlLmgiCisjaW5jbHVkZSAiRE9NSklU
SURMVHlwZUZpbHRlci5oIgorI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKICNpbmNsdWRlICJK
U0J5dGVTdHJpbmcuaCIKICNpbmNsdWRlICJKU0RPTUJpbmRpbmcuaCIKICNpbmNsdWRlICJKU0RP
TUNvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAiSlNET01Db252ZXJ0LmgiCisjaW5jbHVkZSA8aW50
ZXJwcmV0ZXIvRnJhbWVUcmFjZXJzLmg+CisjaW5jbHVkZSA8cnVudGltZS9FcnJvci5oPgogI2lu
Y2x1ZGUgPHd0Zi9HZXRQdHIuaD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KIApA
QCAtMzIsNiArNDAsMTEgQEAgdXNpbmcgbmFtZXNwYWNlIEpTQzsKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCisvLyBGdW5jdGlvbnMKKworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGpzVGVzdERPTUpJVFByb3RvdHlwZUZ1bmN0aW9uR2V0QXR0cmlidXRlKEpTQzo6RXhlY1N0YXRl
Kik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgdW5zYWZlSnNUZXN0RE9NSklU
UHJvdG90eXBlRnVuY3Rpb25HZXRBdHRyaWJ1dGUoSlNDOjpFeGVjU3RhdGUqLCBKU1Rlc3RET01K
SVQqLCBET01KSVQ6OklETEpTQXJndW1lbnRUeXBlPElETERPTVN0cmluZz4pOworCiAvLyBBdHRy
aWJ1dGVzCiAKIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0RE9NSklUQW55QXR0cihKU0M6OkV4
ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKQEAgLTcy
LDYgKzg1LDcgQEAgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RET01KSVROb2RlTnVsbGFibGVB
dHRyKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlMKIEpTQzo6RW5jb2RlZEpTVmFsdWUg
anNUZXN0RE9NSklUQ29uc3RydWN0b3IoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1Zh
bHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7CiBib29sIHNldEpTVGVzdERPTUpJVENvbnN0cnVjdG9y
KEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1
ZSk7CiAKK3N0YXRpYyBjb25zdCBKU0M6OkRPTUpJVDo6U2lnbmF0dXJlIERPTUpJVFNpZ25hdHVy
ZUZvclRlc3RET01KSVRHZXRBdHRyaWJ1dGUoKHVpbnRwdHJfdCl1bnNhZmVKc1Rlc3RET01KSVRQ
cm90b3R5cGVGdW5jdGlvbkdldEF0dHJpYnV0ZSwgRE9NSklUOjpjaGVja0RPTTxUZXN0RE9NSklU
PiwgSlNUZXN0RE9NSklUOjppbmZvKCksIEpTQzo6RE9NSklUOjpFZmZlY3Q6OmZvclJlYWQoRE9N
SklUOjpBYnN0cmFjdEhlYXBSZXBvc2l0b3J5OjpET00pLCBET01KSVQ6OklETFJlc3VsdFR5cGVG
aWx0ZXI8SURMTnVsbGFibGU8SURMRE9NU3RyaW5nPj4sIERPTUpJVDo6SURMQXJndW1lbnRUeXBl
RmlsdGVyPElETERPTVN0cmluZz4pOwogY2xhc3MgSlNUZXN0RE9NSklUUHJvdG90eXBlIDogcHVi
bGljIEpTQzo6SlNOb25GaW5hbE9iamVjdCB7CiBwdWJsaWM6CiAgICAgdXNpbmcgQmFzZSA9IEpT
Qzo6SlNOb25GaW5hbE9iamVjdDsKQEAgLTE1Myw2ICsxNjcsNyBAQCBzdGF0aWMgY29uc3QgSGFz
aFRhYmxlVmFsdWUgSlNUZXN0RE9NSklUUHJvdG90eXBlVGFibGVWYWx1ZXNbXSA9CiAgICAgeyAi
Ynl0ZVN0cmluZ051bGxhYmxlQXR0ciIsIFJlYWRPbmx5IHwgQ3VzdG9tQWNjZXNzb3IgfCBET01K
SVRBdHRyaWJ1dGUsIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxET01KSVRH
ZXR0ZXJTZXR0ZXJHZW5lcmF0b3I+KGRvbUpJVEdldHRlclNldHRlckZvclRlc3RET01KSVRCeXRl
U3RyaW5nTnVsbGFibGVBdHRyKSwgKGludHB0cl90KSAoMCkgfSB9LAogICAgIHsgInVzdlN0cmlu
Z051bGxhYmxlQXR0ciIsIFJlYWRPbmx5IHwgQ3VzdG9tQWNjZXNzb3IgfCBET01KSVRBdHRyaWJ1
dGUsIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxET01KSVRHZXR0ZXJTZXR0
ZXJHZW5lcmF0b3I+KGRvbUpJVEdldHRlclNldHRlckZvclRlc3RET01KSVRVc3ZTdHJpbmdOdWxs
YWJsZUF0dHIpLCAoaW50cHRyX3QpICgwKSB9IH0sCiAgICAgeyAibm9kZU51bGxhYmxlQXR0ciIs
IFJlYWRPbmx5IHwgQ3VzdG9tQWNjZXNzb3IgfCBET01KSVRBdHRyaWJ1dGUsIE5vSW50cmluc2lj
LCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxET01KSVRHZXR0ZXJTZXR0ZXJHZW5lcmF0b3I+KGRv
bUpJVEdldHRlclNldHRlckZvclRlc3RET01KSVROb2RlTnVsbGFibGVBdHRyKSwgKGludHB0cl90
KSAoMCkgfSB9LAorICAgIHsgImdldEF0dHJpYnV0ZSIsIEpTQzo6RnVuY3Rpb24gfCBET01KSVRG
dW5jdGlvbiwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PE5hdGl2ZUZ1bmN0
aW9uPihqc1Rlc3RET01KSVRQcm90b3R5cGVGdW5jdGlvbkdldEF0dHJpYnV0ZSksIChpbnRwdHJf
dCkgc3RhdGljX2Nhc3Q8Y29uc3QgSlNDOjpET01KSVQ6OlNpZ25hdHVyZSo+KCZET01KSVRTaWdu
YXR1cmVGb3JUZXN0RE9NSklUR2V0QXR0cmlidXRlKSB9IH0sCiB9OwogCiBjb25zdCBDbGFzc0lu
Zm8gSlNUZXN0RE9NSklUUHJvdG90eXBlOjpzX2luZm8gPSB7ICJUZXN0RE9NSklUUHJvdG90eXBl
IiwgJkJhc2U6OnNfaW5mbywgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3RET01KSVRQcm90
b3R5cGUpIH07CkBAIC0xODUsNiArMjAwLDExIEBAIHRlbXBsYXRlPD4gaW5saW5lIEpTVGVzdERP
TUpJVCogQmluZGluZ0NhbGxlcjxKU1Rlc3RET01KSVQ+OjpjYXN0Rm9yQXR0cmlidXRlKEV4CiAg
ICAgcmV0dXJuIGpzRHluYW1pY0Rvd25jYXN0PEpTVGVzdERPTUpJVCo+KEpTVmFsdWU6OmRlY29k
ZSh0aGlzVmFsdWUpKTsKIH0KIAordGVtcGxhdGU8PiBpbmxpbmUgSlNUZXN0RE9NSklUKiBCaW5k
aW5nQ2FsbGVyPEpTVGVzdERPTUpJVD46OmNhc3RGb3JPcGVyYXRpb24oRXhlY1N0YXRlJiBzdGF0
ZSkKK3sKKyAgICByZXR1cm4ganNEeW5hbWljRG93bmNhc3Q8SlNUZXN0RE9NSklUKj4oc3RhdGUu
dGhpc1ZhbHVlKCkpOworfQorCiBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0RE9NSklUQW55
QXR0ckdldHRlcihFeGVjU3RhdGUmLCBKU1Rlc3RET01KSVQmLCBUaHJvd1Njb3BlJiB0aHJvd1Nj
b3BlKTsKIAogRW5jb2RlZEpTVmFsdWUganNUZXN0RE9NSklUQW55QXR0cihFeGVjU3RhdGUqIHN0
YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKQEAgLTIwMiw3ICsy
MjIsNyBAQCBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0RE9NSklUQW55QXR0ckdldHRlcihF
eGVjU3RhdGUmIHN0YXRlLCBKU1Rlc3RET01KSVQmCiB9CiAKIFRlc3RET01KSVRBbnlBdHRyRE9N
SklUOjpUZXN0RE9NSklUQW55QXR0ckRPTUpJVCgpCi0gICAgOiBKU0M6OkRPTUpJVDo6R2V0dGVy
U2V0dGVyKGpzVGVzdERPTUpJVEFueUF0dHIsIG51bGxwdHIsIEpTVGVzdERPTUpJVDo6aW5mbygp
LCBKU0M6OlNwZWNIZWFwVG9wKQorICAgIDogSlNDOjpET01KSVQ6OkdldHRlclNldHRlcihqc1Rl
c3RET01KSVRBbnlBdHRyLCBudWxscHRyLCBKU1Rlc3RET01KSVQ6OmluZm8oKSwgRE9NSklUOjpJ
RExSZXN1bHRUeXBlRmlsdGVyPElETEFueT4pCiB7CiB9CiAKQEAgLTIyOSw3ICsyNDksNyBAQCBz
dGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0RE9NSklUQm9vbGVhbkF0dHJHZXR0ZXIoRXhlY1N0
YXRlJiBzdGF0ZSwgSlNUZXN0RE9NSgogfQogCiBUZXN0RE9NSklUQm9vbGVhbkF0dHJET01KSVQ6
OlRlc3RET01KSVRCb29sZWFuQXR0ckRPTUpJVCgpCi0gICAgOiBKU0M6OkRPTUpJVDo6R2V0dGVy
U2V0dGVyKGpzVGVzdERPTUpJVEJvb2xlYW5BdHRyLCBudWxscHRyLCBKU1Rlc3RET01KSVQ6Omlu
Zm8oKSwgSlNDOjpTcGVjQm9vbGVhbikKKyAgICA6IEpTQzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIo
anNUZXN0RE9NSklUQm9vbGVhbkF0dHIsIG51bGxwdHIsIEpTVGVzdERPTUpJVDo6aW5mbygpLCBE
T01KSVQ6OklETFJlc3VsdFR5cGVGaWx0ZXI8SURMQm9vbGVhbj4pCiB7CiB9CiAKQEAgLTI1Niw3
ICsyNzYsNyBAQCBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0RE9NSklUQnl0ZUF0dHJHZXR0
ZXIoRXhlY1N0YXRlJiBzdGF0ZSwgSlNUZXN0RE9NSklUJgogfQogCiBUZXN0RE9NSklUQnl0ZUF0
dHJET01KSVQ6OlRlc3RET01KSVRCeXRlQXR0ckRPTUpJVCgpCi0gICAgOiBKU0M6OkRPTUpJVDo6
R2V0dGVyU2V0dGVyKGpzVGVzdERPTUpJVEJ5dGVBdHRyLCBudWxscHRyLCBKU1Rlc3RET01KSVQ6
OmluZm8oKSwgSlNDOjpTcGVjSW50MzJPbmx5KQorICAgIDogSlNDOjpET01KSVQ6OkdldHRlclNl
dHRlcihqc1Rlc3RET01KSVRCeXRlQXR0ciwgbnVsbHB0ciwgSlNUZXN0RE9NSklUOjppbmZvKCks
IERPTUpJVDo6SURMUmVzdWx0VHlwZUZpbHRlcjxJRExCeXRlPikKIHsKIH0KIApAQCAtMjgzLDcg
KzMwMyw3IEBAIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RET01KSVRPY3RldEF0dHJHZXR0
ZXIoRXhlY1N0YXRlJiBzdGF0ZSwgSlNUZXN0RE9NSklUCiB9CiAKIFRlc3RET01KSVRPY3RldEF0
dHJET01KSVQ6OlRlc3RET01KSVRPY3RldEF0dHJET01KSVQoKQotICAgIDogSlNDOjpET01KSVQ6
OkdldHRlclNldHRlcihqc1Rlc3RET01KSVRPY3RldEF0dHIsIG51bGxwdHIsIEpTVGVzdERPTUpJ
VDo6aW5mbygpLCBKU0M6OlNwZWNJbnQzMk9ubHkpCisgICAgOiBKU0M6OkRPTUpJVDo6R2V0dGVy
U2V0dGVyKGpzVGVzdERPTUpJVE9jdGV0QXR0ciwgbnVsbHB0ciwgSlNUZXN0RE9NSklUOjppbmZv
KCksIERPTUpJVDo6SURMUmVzdWx0VHlwZUZpbHRlcjxJRExPY3RldD4pCiB7CiB9CiAKQEAgLTMx
MCw3ICszMzAsNyBAQCBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0RE9NSklUU2hvcnRBdHRy
R2V0dGVyKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVGVzdERPTUpJVAogfQogCiBUZXN0RE9NSklUU2hv
cnRBdHRyRE9NSklUOjpUZXN0RE9NSklUU2hvcnRBdHRyRE9NSklUKCkKLSAgICA6IEpTQzo6RE9N
SklUOjpHZXR0ZXJTZXR0ZXIoanNUZXN0RE9NSklUU2hvcnRBdHRyLCBudWxscHRyLCBKU1Rlc3RE
T01KSVQ6OmluZm8oKSwgSlNDOjpTcGVjSW50MzJPbmx5KQorICAgIDogSlNDOjpET01KSVQ6Okdl
dHRlclNldHRlcihqc1Rlc3RET01KSVRTaG9ydEF0dHIsIG51bGxwdHIsIEpTVGVzdERPTUpJVDo6
aW5mbygpLCBET01KSVQ6OklETFJlc3VsdFR5cGVGaWx0ZXI8SURMU2hvcnQ+KQogewogfQogCkBA
IC0zMzcsNyArMzU3LDcgQEAgc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdERPTUpJVFVuc2ln
bmVkU2hvcnRBdHRyR2V0dGVyKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVGUKIH0KIAogVGVzdERPTUpJ
VFVuc2lnbmVkU2hvcnRBdHRyRE9NSklUOjpUZXN0RE9NSklUVW5zaWduZWRTaG9ydEF0dHJET01K
SVQoKQotICAgIDogSlNDOjpET01KSVQ6OkdldHRlclNldHRlcihqc1Rlc3RET01KSVRVbnNpZ25l
ZFNob3J0QXR0ciwgbnVsbHB0ciwgSlNUZXN0RE9NSklUOjppbmZvKCksIEpTQzo6U3BlY0ludDMy
T25seSkKKyAgICA6IEpTQzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIoanNUZXN0RE9NSklUVW5zaWdu
ZWRTaG9ydEF0dHIsIG51bGxwdHIsIEpTVGVzdERPTUpJVDo6aW5mbygpLCBET01KSVQ6OklETFJl
c3VsdFR5cGVGaWx0ZXI8SURMVW5zaWduZWRTaG9ydD4pCiB7CiB9CiAKQEAgLTM2NCw3ICszODQs
NyBAQCBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0RE9NSklUTG9uZ0F0dHJHZXR0ZXIoRXhl
Y1N0YXRlJiBzdGF0ZSwgSlNUZXN0RE9NSklUJgogfQogCiBUZXN0RE9NSklUTG9uZ0F0dHJET01K
SVQ6OlRlc3RET01KSVRMb25nQXR0ckRPTUpJVCgpCi0gICAgOiBKU0M6OkRPTUpJVDo6R2V0dGVy
U2V0dGVyKGpzVGVzdERPTUpJVExvbmdBdHRyLCBudWxscHRyLCBKU1Rlc3RET01KSVQ6OmluZm8o
KSwgSlNDOjpTcGVjSW50MzJPbmx5KQorICAgIDogSlNDOjpET01KSVQ6OkdldHRlclNldHRlcihq
c1Rlc3RET01KSVRMb25nQXR0ciwgbnVsbHB0ciwgSlNUZXN0RE9NSklUOjppbmZvKCksIERPTUpJ
VDo6SURMUmVzdWx0VHlwZUZpbHRlcjxJRExMb25nPikKIHsKIH0KIApAQCAtMzkxLDcgKzQxMSw3
IEBAIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RET01KSVRVbnNpZ25lZExvbmdBdHRyR2V0
dGVyKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVGVzCiB9CiAKIFRlc3RET01KSVRVbnNpZ25lZExvbmdB
dHRyRE9NSklUOjpUZXN0RE9NSklUVW5zaWduZWRMb25nQXR0ckRPTUpJVCgpCi0gICAgOiBKU0M6
OkRPTUpJVDo6R2V0dGVyU2V0dGVyKGpzVGVzdERPTUpJVFVuc2lnbmVkTG9uZ0F0dHIsIG51bGxw
dHIsIEpTVGVzdERPTUpJVDo6aW5mbygpLCBKU0M6OlNwZWNCeXRlY29kZU51bWJlcikKKyAgICA6
IEpTQzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIoanNUZXN0RE9NSklUVW5zaWduZWRMb25nQXR0ciwg
bnVsbHB0ciwgSlNUZXN0RE9NSklUOjppbmZvKCksIERPTUpJVDo6SURMUmVzdWx0VHlwZUZpbHRl
cjxJRExVbnNpZ25lZExvbmc+KQogewogfQogCkBAIC00MTgsNyArNDM4LDcgQEAgc3RhdGljIGlu
bGluZSBKU1ZhbHVlIGpzVGVzdERPTUpJVExvbmdMb25nQXR0ckdldHRlcihFeGVjU3RhdGUmIHN0
YXRlLCBKU1Rlc3RET00KIH0KIAogVGVzdERPTUpJVExvbmdMb25nQXR0ckRPTUpJVDo6VGVzdERP
TUpJVExvbmdMb25nQXR0ckRPTUpJVCgpCi0gICAgOiBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVy
KGpzVGVzdERPTUpJVExvbmdMb25nQXR0ciwgbnVsbHB0ciwgSlNUZXN0RE9NSklUOjppbmZvKCks
IEpTQzo6U3BlY0J5dGVjb2RlTnVtYmVyKQorICAgIDogSlNDOjpET01KSVQ6OkdldHRlclNldHRl
cihqc1Rlc3RET01KSVRMb25nTG9uZ0F0dHIsIG51bGxwdHIsIEpTVGVzdERPTUpJVDo6aW5mbygp
LCBET01KSVQ6OklETFJlc3VsdFR5cGVGaWx0ZXI8SURMTG9uZ0xvbmc+KQogewogfQogCkBAIC00
NDUsNyArNDY1LDcgQEAgc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdERPTUpJVFVuc2lnbmVk
TG9uZ0xvbmdBdHRyR2V0dGVyKEV4ZWNTdGF0ZSYgc3RhdGUsIEoKIH0KIAogVGVzdERPTUpJVFVu
c2lnbmVkTG9uZ0xvbmdBdHRyRE9NSklUOjpUZXN0RE9NSklUVW5zaWduZWRMb25nTG9uZ0F0dHJE
T01KSVQoKQotICAgIDogSlNDOjpET01KSVQ6OkdldHRlclNldHRlcihqc1Rlc3RET01KSVRVbnNp
Z25lZExvbmdMb25nQXR0ciwgbnVsbHB0ciwgSlNUZXN0RE9NSklUOjppbmZvKCksIEpTQzo6U3Bl
Y0J5dGVjb2RlTnVtYmVyKQorICAgIDogSlNDOjpET01KSVQ6OkdldHRlclNldHRlcihqc1Rlc3RE
T01KSVRVbnNpZ25lZExvbmdMb25nQXR0ciwgbnVsbHB0ciwgSlNUZXN0RE9NSklUOjppbmZvKCks
IERPTUpJVDo6SURMUmVzdWx0VHlwZUZpbHRlcjxJRExVbnNpZ25lZExvbmdMb25nPikKIHsKIH0K
IApAQCAtNDcyLDcgKzQ5Miw3IEBAIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RET01KSVRG
bG9hdEF0dHJHZXR0ZXIoRXhlY1N0YXRlJiBzdGF0ZSwgSlNUZXN0RE9NSklUCiB9CiAKIFRlc3RE
T01KSVRGbG9hdEF0dHJET01KSVQ6OlRlc3RET01KSVRGbG9hdEF0dHJET01KSVQoKQotICAgIDog
SlNDOjpET01KSVQ6OkdldHRlclNldHRlcihqc1Rlc3RET01KSVRGbG9hdEF0dHIsIG51bGxwdHIs
IEpTVGVzdERPTUpJVDo6aW5mbygpLCBKU0M6OlNwZWNCeXRlY29kZU51bWJlcikKKyAgICA6IEpT
Qzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIoanNUZXN0RE9NSklURmxvYXRBdHRyLCBudWxscHRyLCBK
U1Rlc3RET01KSVQ6OmluZm8oKSwgRE9NSklUOjpJRExSZXN1bHRUeXBlRmlsdGVyPElETEZsb2F0
PikKIHsKIH0KIApAQCAtNDk5LDcgKzUxOSw3IEBAIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rl
c3RET01KSVRVbnJlc3RyaWN0ZWRGbG9hdEF0dHJHZXR0ZXIoRXhlY1N0YXRlJiBzdGF0ZSwKIH0K
IAogVGVzdERPTUpJVFVucmVzdHJpY3RlZEZsb2F0QXR0ckRPTUpJVDo6VGVzdERPTUpJVFVucmVz
dHJpY3RlZEZsb2F0QXR0ckRPTUpJVCgpCi0gICAgOiBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVy
KGpzVGVzdERPTUpJVFVucmVzdHJpY3RlZEZsb2F0QXR0ciwgbnVsbHB0ciwgSlNUZXN0RE9NSklU
OjppbmZvKCksIEpTQzo6U3BlY0J5dGVjb2RlTnVtYmVyKQorICAgIDogSlNDOjpET01KSVQ6Okdl
dHRlclNldHRlcihqc1Rlc3RET01KSVRVbnJlc3RyaWN0ZWRGbG9hdEF0dHIsIG51bGxwdHIsIEpT
VGVzdERPTUpJVDo6aW5mbygpLCBET01KSVQ6OklETFJlc3VsdFR5cGVGaWx0ZXI8SURMVW5yZXN0
cmljdGVkRmxvYXQ+KQogewogfQogCkBAIC01MjYsNyArNTQ2LDcgQEAgc3RhdGljIGlubGluZSBK
U1ZhbHVlIGpzVGVzdERPTUpJVERvdWJsZUF0dHJHZXR0ZXIoRXhlY1N0YXRlJiBzdGF0ZSwgSlNU
ZXN0RE9NSkkKIH0KIAogVGVzdERPTUpJVERvdWJsZUF0dHJET01KSVQ6OlRlc3RET01KSVREb3Vi
bGVBdHRyRE9NSklUKCkKLSAgICA6IEpTQzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIoanNUZXN0RE9N
SklURG91YmxlQXR0ciwgbnVsbHB0ciwgSlNUZXN0RE9NSklUOjppbmZvKCksIEpTQzo6U3BlY0J5
dGVjb2RlTnVtYmVyKQorICAgIDogSlNDOjpET01KSVQ6OkdldHRlclNldHRlcihqc1Rlc3RET01K
SVREb3VibGVBdHRyLCBudWxscHRyLCBKU1Rlc3RET01KSVQ6OmluZm8oKSwgRE9NSklUOjpJRExS
ZXN1bHRUeXBlRmlsdGVyPElETERvdWJsZT4pCiB7CiB9CiAKQEAgLTU1Myw3ICs1NzMsNyBAQCBz
dGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0RE9NSklUVW5yZXN0cmljdGVkRG91YmxlQXR0ckdl
dHRlcihFeGVjU3RhdGUmIHN0YXRlLAogfQogCiBUZXN0RE9NSklUVW5yZXN0cmljdGVkRG91Ymxl
QXR0ckRPTUpJVDo6VGVzdERPTUpJVFVucmVzdHJpY3RlZERvdWJsZUF0dHJET01KSVQoKQotICAg
IDogSlNDOjpET01KSVQ6OkdldHRlclNldHRlcihqc1Rlc3RET01KSVRVbnJlc3RyaWN0ZWREb3Vi
bGVBdHRyLCBudWxscHRyLCBKU1Rlc3RET01KSVQ6OmluZm8oKSwgSlNDOjpTcGVjQnl0ZWNvZGVO
dW1iZXIpCisgICAgOiBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVyKGpzVGVzdERPTUpJVFVucmVz
dHJpY3RlZERvdWJsZUF0dHIsIG51bGxwdHIsIEpTVGVzdERPTUpJVDo6aW5mbygpLCBET01KSVQ6
OklETFJlc3VsdFR5cGVGaWx0ZXI8SURMVW5yZXN0cmljdGVkRG91YmxlPikKIHsKIH0KIApAQCAt
NTgwLDcgKzYwMCw3IEBAIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RET01KSVREb21TdHJp
bmdBdHRyR2V0dGVyKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVGVzdERPCiB9CiAKIFRlc3RET01KSVRE
b21TdHJpbmdBdHRyRE9NSklUOjpUZXN0RE9NSklURG9tU3RyaW5nQXR0ckRPTUpJVCgpCi0gICAg
OiBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVyKGpzVGVzdERPTUpJVERvbVN0cmluZ0F0dHIsIG51
bGxwdHIsIEpTVGVzdERPTUpJVDo6aW5mbygpLCBKU0M6OlNwZWNTdHJpbmcpCisgICAgOiBKU0M6
OkRPTUpJVDo6R2V0dGVyU2V0dGVyKGpzVGVzdERPTUpJVERvbVN0cmluZ0F0dHIsIG51bGxwdHIs
IEpTVGVzdERPTUpJVDo6aW5mbygpLCBET01KSVQ6OklETFJlc3VsdFR5cGVGaWx0ZXI8SURMRE9N
U3RyaW5nPikKIHsKIH0KIApAQCAtNjA3LDcgKzYyNyw3IEBAIHN0YXRpYyBpbmxpbmUgSlNWYWx1
ZSBqc1Rlc3RET01KSVRCeXRlU3RyaW5nQXR0ckdldHRlcihFeGVjU3RhdGUmIHN0YXRlLCBKU1Rl
c3RECiB9CiAKIFRlc3RET01KSVRCeXRlU3RyaW5nQXR0ckRPTUpJVDo6VGVzdERPTUpJVEJ5dGVT
dHJpbmdBdHRyRE9NSklUKCkKLSAgICA6IEpTQzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIoanNUZXN0
RE9NSklUQnl0ZVN0cmluZ0F0dHIsIG51bGxwdHIsIEpTVGVzdERPTUpJVDo6aW5mbygpLCBKU0M6
OlNwZWNTdHJpbmcpCisgICAgOiBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVyKGpzVGVzdERPTUpJ
VEJ5dGVTdHJpbmdBdHRyLCBudWxscHRyLCBKU1Rlc3RET01KSVQ6OmluZm8oKSwgRE9NSklUOjpJ
RExSZXN1bHRUeXBlRmlsdGVyPElETEJ5dGVTdHJpbmc+KQogewogfQogCkBAIC02MzQsNyArNjU0
LDcgQEAgc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdERPTUpJVFVzdlN0cmluZ0F0dHJHZXR0
ZXIoRXhlY1N0YXRlJiBzdGF0ZSwgSlNUZXN0RE8KIH0KIAogVGVzdERPTUpJVFVzdlN0cmluZ0F0
dHJET01KSVQ6OlRlc3RET01KSVRVc3ZTdHJpbmdBdHRyRE9NSklUKCkKLSAgICA6IEpTQzo6RE9N
SklUOjpHZXR0ZXJTZXR0ZXIoanNUZXN0RE9NSklUVXN2U3RyaW5nQXR0ciwgbnVsbHB0ciwgSlNU
ZXN0RE9NSklUOjppbmZvKCksIEpTQzo6U3BlY1N0cmluZykKKyAgICA6IEpTQzo6RE9NSklUOjpH
ZXR0ZXJTZXR0ZXIoanNUZXN0RE9NSklUVXN2U3RyaW5nQXR0ciwgbnVsbHB0ciwgSlNUZXN0RE9N
SklUOjppbmZvKCksIERPTUpJVDo6SURMUmVzdWx0VHlwZUZpbHRlcjxJRExVU1ZTdHJpbmc+KQog
ewogfQogCkBAIC02NjEsNyArNjgxLDcgQEAgc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdERP
TUpJVE5vZGVBdHRyR2V0dGVyKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVGVzdERPTUpJVCYKIH0KIAog
VGVzdERPTUpJVE5vZGVBdHRyRE9NSklUOjpUZXN0RE9NSklUTm9kZUF0dHJET01KSVQoKQotICAg
IDogSlNDOjpET01KSVQ6OkdldHRlclNldHRlcihqc1Rlc3RET01KSVROb2RlQXR0ciwgbnVsbHB0
ciwgSlNUZXN0RE9NSklUOjppbmZvKCksIFNwZWNIZWFwVG9wKQorICAgIDogSlNDOjpET01KSVQ6
OkdldHRlclNldHRlcihqc1Rlc3RET01KSVROb2RlQXR0ciwgbnVsbHB0ciwgSlNUZXN0RE9NSklU
OjppbmZvKCksIERPTUpJVDo6SURMUmVzdWx0VHlwZUZpbHRlcjxJRExJbnRlcmZhY2U8Tm9kZT4+
KQogewogfQogCkBAIC02ODgsNyArNzA4LDcgQEAgc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVz
dERPTUpJVEJvb2xlYW5OdWxsYWJsZUF0dHJHZXR0ZXIoRXhlY1N0YXRlJiBzdGF0ZSwgSlMKIH0K
IAogVGVzdERPTUpJVEJvb2xlYW5OdWxsYWJsZUF0dHJET01KSVQ6OlRlc3RET01KSVRCb29sZWFu
TnVsbGFibGVBdHRyRE9NSklUKCkKLSAgICA6IEpTQzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIoanNU
ZXN0RE9NSklUQm9vbGVhbk51bGxhYmxlQXR0ciwgbnVsbHB0ciwgSlNUZXN0RE9NSklUOjppbmZv
KCksIChKU0M6OlNwZWNCb29sZWFuIHwgSlNDOjpTcGVjT3RoZXIpKQorICAgIDogSlNDOjpET01K
SVQ6OkdldHRlclNldHRlcihqc1Rlc3RET01KSVRCb29sZWFuTnVsbGFibGVBdHRyLCBudWxscHRy
LCBKU1Rlc3RET01KSVQ6OmluZm8oKSwgRE9NSklUOjpJRExSZXN1bHRUeXBlRmlsdGVyPElETE51
bGxhYmxlPElETEJvb2xlYW4+PikKIHsKIH0KIApAQCAtNzE1LDcgKzczNSw3IEBAIHN0YXRpYyBp
bmxpbmUgSlNWYWx1ZSBqc1Rlc3RET01KSVRCeXRlTnVsbGFibGVBdHRyR2V0dGVyKEV4ZWNTdGF0
ZSYgc3RhdGUsIEpTVGVzCiB9CiAKIFRlc3RET01KSVRCeXRlTnVsbGFibGVBdHRyRE9NSklUOjpU
ZXN0RE9NSklUQnl0ZU51bGxhYmxlQXR0ckRPTUpJVCgpCi0gICAgOiBKU0M6OkRPTUpJVDo6R2V0
dGVyU2V0dGVyKGpzVGVzdERPTUpJVEJ5dGVOdWxsYWJsZUF0dHIsIG51bGxwdHIsIEpTVGVzdERP
TUpJVDo6aW5mbygpLCAoSlNDOjpTcGVjSW50MzJPbmx5IHwgSlNDOjpTcGVjT3RoZXIpKQorICAg
IDogSlNDOjpET01KSVQ6OkdldHRlclNldHRlcihqc1Rlc3RET01KSVRCeXRlTnVsbGFibGVBdHRy
LCBudWxscHRyLCBKU1Rlc3RET01KSVQ6OmluZm8oKSwgRE9NSklUOjpJRExSZXN1bHRUeXBlRmls
dGVyPElETE51bGxhYmxlPElETEJ5dGU+PikKIHsKIH0KIApAQCAtNzQyLDcgKzc2Miw3IEBAIHN0
YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RET01KSVRPY3RldE51bGxhYmxlQXR0ckdldHRlcihF
eGVjU3RhdGUmIHN0YXRlLCBKU1RlCiB9CiAKIFRlc3RET01KSVRPY3RldE51bGxhYmxlQXR0ckRP
TUpJVDo6VGVzdERPTUpJVE9jdGV0TnVsbGFibGVBdHRyRE9NSklUKCkKLSAgICA6IEpTQzo6RE9N
SklUOjpHZXR0ZXJTZXR0ZXIoanNUZXN0RE9NSklUT2N0ZXROdWxsYWJsZUF0dHIsIG51bGxwdHIs
IEpTVGVzdERPTUpJVDo6aW5mbygpLCAoSlNDOjpTcGVjSW50MzJPbmx5IHwgSlNDOjpTcGVjT3Ro
ZXIpKQorICAgIDogSlNDOjpET01KSVQ6OkdldHRlclNldHRlcihqc1Rlc3RET01KSVRPY3RldE51
bGxhYmxlQXR0ciwgbnVsbHB0ciwgSlNUZXN0RE9NSklUOjppbmZvKCksIERPTUpJVDo6SURMUmVz
dWx0VHlwZUZpbHRlcjxJRExOdWxsYWJsZTxJRExPY3RldD4+KQogewogfQogCkBAIC03NjksNyAr
Nzg5LDcgQEAgc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdERPTUpJVFNob3J0TnVsbGFibGVB
dHRyR2V0dGVyKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVGUKIH0KIAogVGVzdERPTUpJVFNob3J0TnVs
bGFibGVBdHRyRE9NSklUOjpUZXN0RE9NSklUU2hvcnROdWxsYWJsZUF0dHJET01KSVQoKQotICAg
IDogSlNDOjpET01KSVQ6OkdldHRlclNldHRlcihqc1Rlc3RET01KSVRTaG9ydE51bGxhYmxlQXR0
ciwgbnVsbHB0ciwgSlNUZXN0RE9NSklUOjppbmZvKCksIChKU0M6OlNwZWNJbnQzMk9ubHkgfCBK
U0M6OlNwZWNPdGhlcikpCisgICAgOiBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVyKGpzVGVzdERP
TUpJVFNob3J0TnVsbGFibGVBdHRyLCBudWxscHRyLCBKU1Rlc3RET01KSVQ6OmluZm8oKSwgRE9N
SklUOjpJRExSZXN1bHRUeXBlRmlsdGVyPElETE51bGxhYmxlPElETFNob3J0Pj4pCiB7CiB9CiAK
QEAgLTc5Niw3ICs4MTYsNyBAQCBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0RE9NSklUVW5z
aWduZWRTaG9ydE51bGxhYmxlQXR0ckdldHRlcihFeGVjU3RhdGUmIHN0YQogfQogCiBUZXN0RE9N
SklUVW5zaWduZWRTaG9ydE51bGxhYmxlQXR0ckRPTUpJVDo6VGVzdERPTUpJVFVuc2lnbmVkU2hv
cnROdWxsYWJsZUF0dHJET01KSVQoKQotICAgIDogSlNDOjpET01KSVQ6OkdldHRlclNldHRlcihq
c1Rlc3RET01KSVRVbnNpZ25lZFNob3J0TnVsbGFibGVBdHRyLCBudWxscHRyLCBKU1Rlc3RET01K
SVQ6OmluZm8oKSwgKEpTQzo6U3BlY0ludDMyT25seSB8IEpTQzo6U3BlY090aGVyKSkKKyAgICA6
IEpTQzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIoanNUZXN0RE9NSklUVW5zaWduZWRTaG9ydE51bGxh
YmxlQXR0ciwgbnVsbHB0ciwgSlNUZXN0RE9NSklUOjppbmZvKCksIERPTUpJVDo6SURMUmVzdWx0
VHlwZUZpbHRlcjxJRExOdWxsYWJsZTxJRExVbnNpZ25lZFNob3J0Pj4pCiB7CiB9CiAKQEAgLTgy
Myw3ICs4NDMsNyBAQCBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0RE9NSklUTG9uZ051bGxh
YmxlQXR0ckdldHRlcihFeGVjU3RhdGUmIHN0YXRlLCBKU1RlcwogfQogCiBUZXN0RE9NSklUTG9u
Z051bGxhYmxlQXR0ckRPTUpJVDo6VGVzdERPTUpJVExvbmdOdWxsYWJsZUF0dHJET01KSVQoKQot
ICAgIDogSlNDOjpET01KSVQ6OkdldHRlclNldHRlcihqc1Rlc3RET01KSVRMb25nTnVsbGFibGVB
dHRyLCBudWxscHRyLCBKU1Rlc3RET01KSVQ6OmluZm8oKSwgKEpTQzo6U3BlY0ludDMyT25seSB8
IEpTQzo6U3BlY090aGVyKSkKKyAgICA6IEpTQzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIoanNUZXN0
RE9NSklUTG9uZ051bGxhYmxlQXR0ciwgbnVsbHB0ciwgSlNUZXN0RE9NSklUOjppbmZvKCksIERP
TUpJVDo6SURMUmVzdWx0VHlwZUZpbHRlcjxJRExOdWxsYWJsZTxJRExMb25nPj4pCiB7CiB9CiAK
QEAgLTg1MCw3ICs4NzAsNyBAQCBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0RE9NSklUVW5z
aWduZWRMb25nTnVsbGFibGVBdHRyR2V0dGVyKEV4ZWNTdGF0ZSYgc3RhdAogfQogCiBUZXN0RE9N
SklUVW5zaWduZWRMb25nTnVsbGFibGVBdHRyRE9NSklUOjpUZXN0RE9NSklUVW5zaWduZWRMb25n
TnVsbGFibGVBdHRyRE9NSklUKCkKLSAgICA6IEpTQzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIoanNU
ZXN0RE9NSklUVW5zaWduZWRMb25nTnVsbGFibGVBdHRyLCBudWxscHRyLCBKU1Rlc3RET01KSVQ6
OmluZm8oKSwgKEpTQzo6U3BlY0J5dGVjb2RlTnVtYmVyIHwgSlNDOjpTcGVjT3RoZXIpKQorICAg
IDogSlNDOjpET01KSVQ6OkdldHRlclNldHRlcihqc1Rlc3RET01KSVRVbnNpZ25lZExvbmdOdWxs
YWJsZUF0dHIsIG51bGxwdHIsIEpTVGVzdERPTUpJVDo6aW5mbygpLCBET01KSVQ6OklETFJlc3Vs
dFR5cGVGaWx0ZXI8SURMTnVsbGFibGU8SURMVW5zaWduZWRMb25nPj4pCiB7CiB9CiAKQEAgLTg3
Nyw3ICs4OTcsNyBAQCBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0RE9NSklUTG9uZ0xvbmdO
dWxsYWJsZUF0dHJHZXR0ZXIoRXhlY1N0YXRlJiBzdGF0ZSwgSgogfQogCiBUZXN0RE9NSklUTG9u
Z0xvbmdOdWxsYWJsZUF0dHJET01KSVQ6OlRlc3RET01KSVRMb25nTG9uZ051bGxhYmxlQXR0ckRP
TUpJVCgpCi0gICAgOiBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVyKGpzVGVzdERPTUpJVExvbmdM
b25nTnVsbGFibGVBdHRyLCBudWxscHRyLCBKU1Rlc3RET01KSVQ6OmluZm8oKSwgKEpTQzo6U3Bl
Y0J5dGVjb2RlTnVtYmVyIHwgSlNDOjpTcGVjT3RoZXIpKQorICAgIDogSlNDOjpET01KSVQ6Okdl
dHRlclNldHRlcihqc1Rlc3RET01KSVRMb25nTG9uZ051bGxhYmxlQXR0ciwgbnVsbHB0ciwgSlNU
ZXN0RE9NSklUOjppbmZvKCksIERPTUpJVDo6SURMUmVzdWx0VHlwZUZpbHRlcjxJRExOdWxsYWJs
ZTxJRExMb25nTG9uZz4+KQogewogfQogCkBAIC05MDQsNyArOTI0LDcgQEAgc3RhdGljIGlubGlu
ZSBKU1ZhbHVlIGpzVGVzdERPTUpJVFVuc2lnbmVkTG9uZ0xvbmdOdWxsYWJsZUF0dHJHZXR0ZXIo
RXhlY1N0YXRlJgogfQogCiBUZXN0RE9NSklUVW5zaWduZWRMb25nTG9uZ051bGxhYmxlQXR0ckRP
TUpJVDo6VGVzdERPTUpJVFVuc2lnbmVkTG9uZ0xvbmdOdWxsYWJsZUF0dHJET01KSVQoKQotICAg
IDogSlNDOjpET01KSVQ6OkdldHRlclNldHRlcihqc1Rlc3RET01KSVRVbnNpZ25lZExvbmdMb25n
TnVsbGFibGVBdHRyLCBudWxscHRyLCBKU1Rlc3RET01KSVQ6OmluZm8oKSwgKEpTQzo6U3BlY0J5
dGVjb2RlTnVtYmVyIHwgSlNDOjpTcGVjT3RoZXIpKQorICAgIDogSlNDOjpET01KSVQ6OkdldHRl
clNldHRlcihqc1Rlc3RET01KSVRVbnNpZ25lZExvbmdMb25nTnVsbGFibGVBdHRyLCBudWxscHRy
LCBKU1Rlc3RET01KSVQ6OmluZm8oKSwgRE9NSklUOjpJRExSZXN1bHRUeXBlRmlsdGVyPElETE51
bGxhYmxlPElETFVuc2lnbmVkTG9uZ0xvbmc+PikKIHsKIH0KIApAQCAtOTMxLDcgKzk1MSw3IEBA
IHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RET01KSVRGbG9hdE51bGxhYmxlQXR0ckdldHRl
cihFeGVjU3RhdGUmIHN0YXRlLCBKU1RlCiB9CiAKIFRlc3RET01KSVRGbG9hdE51bGxhYmxlQXR0
ckRPTUpJVDo6VGVzdERPTUpJVEZsb2F0TnVsbGFibGVBdHRyRE9NSklUKCkKLSAgICA6IEpTQzo6
RE9NSklUOjpHZXR0ZXJTZXR0ZXIoanNUZXN0RE9NSklURmxvYXROdWxsYWJsZUF0dHIsIG51bGxw
dHIsIEpTVGVzdERPTUpJVDo6aW5mbygpLCAoSlNDOjpTcGVjQnl0ZWNvZGVOdW1iZXIgfCBKU0M6
OlNwZWNPdGhlcikpCisgICAgOiBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVyKGpzVGVzdERPTUpJ
VEZsb2F0TnVsbGFibGVBdHRyLCBudWxscHRyLCBKU1Rlc3RET01KSVQ6OmluZm8oKSwgRE9NSklU
OjpJRExSZXN1bHRUeXBlRmlsdGVyPElETE51bGxhYmxlPElETEZsb2F0Pj4pCiB7CiB9CiAKQEAg
LTk1OCw3ICs5NzgsNyBAQCBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0RE9NSklUVW5yZXN0
cmljdGVkRmxvYXROdWxsYWJsZUF0dHJHZXR0ZXIoRXhlY1N0YXRlJgogfQogCiBUZXN0RE9NSklU
VW5yZXN0cmljdGVkRmxvYXROdWxsYWJsZUF0dHJET01KSVQ6OlRlc3RET01KSVRVbnJlc3RyaWN0
ZWRGbG9hdE51bGxhYmxlQXR0ckRPTUpJVCgpCi0gICAgOiBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0
dGVyKGpzVGVzdERPTUpJVFVucmVzdHJpY3RlZEZsb2F0TnVsbGFibGVBdHRyLCBudWxscHRyLCBK
U1Rlc3RET01KSVQ6OmluZm8oKSwgKEpTQzo6U3BlY0J5dGVjb2RlTnVtYmVyIHwgSlNDOjpTcGVj
T3RoZXIpKQorICAgIDogSlNDOjpET01KSVQ6OkdldHRlclNldHRlcihqc1Rlc3RET01KSVRVbnJl
c3RyaWN0ZWRGbG9hdE51bGxhYmxlQXR0ciwgbnVsbHB0ciwgSlNUZXN0RE9NSklUOjppbmZvKCks
IERPTUpJVDo6SURMUmVzdWx0VHlwZUZpbHRlcjxJRExOdWxsYWJsZTxJRExVbnJlc3RyaWN0ZWRG
bG9hdD4+KQogewogfQogCkBAIC05ODUsNyArMTAwNSw3IEBAIHN0YXRpYyBpbmxpbmUgSlNWYWx1
ZSBqc1Rlc3RET01KSVREb3VibGVOdWxsYWJsZUF0dHJHZXR0ZXIoRXhlY1N0YXRlJiBzdGF0ZSwg
SlNUCiB9CiAKIFRlc3RET01KSVREb3VibGVOdWxsYWJsZUF0dHJET01KSVQ6OlRlc3RET01KSVRE
b3VibGVOdWxsYWJsZUF0dHJET01KSVQoKQotICAgIDogSlNDOjpET01KSVQ6OkdldHRlclNldHRl
cihqc1Rlc3RET01KSVREb3VibGVOdWxsYWJsZUF0dHIsIG51bGxwdHIsIEpTVGVzdERPTUpJVDo6
aW5mbygpLCAoSlNDOjpTcGVjQnl0ZWNvZGVOdW1iZXIgfCBKU0M6OlNwZWNPdGhlcikpCisgICAg
OiBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVyKGpzVGVzdERPTUpJVERvdWJsZU51bGxhYmxlQXR0
ciwgbnVsbHB0ciwgSlNUZXN0RE9NSklUOjppbmZvKCksIERPTUpJVDo6SURMUmVzdWx0VHlwZUZp
bHRlcjxJRExOdWxsYWJsZTxJRExEb3VibGU+PikKIHsKIH0KIApAQCAtMTAxMiw3ICsxMDMyLDcg
QEAgc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdERPTUpJVFVucmVzdHJpY3RlZERvdWJsZU51
bGxhYmxlQXR0ckdldHRlcihFeGVjU3RhdGUKIH0KIAogVGVzdERPTUpJVFVucmVzdHJpY3RlZERv
dWJsZU51bGxhYmxlQXR0ckRPTUpJVDo6VGVzdERPTUpJVFVucmVzdHJpY3RlZERvdWJsZU51bGxh
YmxlQXR0ckRPTUpJVCgpCi0gICAgOiBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVyKGpzVGVzdERP
TUpJVFVucmVzdHJpY3RlZERvdWJsZU51bGxhYmxlQXR0ciwgbnVsbHB0ciwgSlNUZXN0RE9NSklU
OjppbmZvKCksIChKU0M6OlNwZWNCeXRlY29kZU51bWJlciB8IEpTQzo6U3BlY090aGVyKSkKKyAg
ICA6IEpTQzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIoanNUZXN0RE9NSklUVW5yZXN0cmljdGVkRG91
YmxlTnVsbGFibGVBdHRyLCBudWxscHRyLCBKU1Rlc3RET01KSVQ6OmluZm8oKSwgRE9NSklUOjpJ
RExSZXN1bHRUeXBlRmlsdGVyPElETE51bGxhYmxlPElETFVucmVzdHJpY3RlZERvdWJsZT4+KQog
ewogfQogCkBAIC0xMDM5LDcgKzEwNTksNyBAQCBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0
RE9NSklURG9tU3RyaW5nTnVsbGFibGVBdHRyR2V0dGVyKEV4ZWNTdGF0ZSYgc3RhdGUsCiB9CiAK
IFRlc3RET01KSVREb21TdHJpbmdOdWxsYWJsZUF0dHJET01KSVQ6OlRlc3RET01KSVREb21TdHJp
bmdOdWxsYWJsZUF0dHJET01KSVQoKQotICAgIDogSlNDOjpET01KSVQ6OkdldHRlclNldHRlcihq
c1Rlc3RET01KSVREb21TdHJpbmdOdWxsYWJsZUF0dHIsIG51bGxwdHIsIEpTVGVzdERPTUpJVDo6
aW5mbygpLCAoSlNDOjpTcGVjU3RyaW5nIHwgSlNDOjpTcGVjT3RoZXIpKQorICAgIDogSlNDOjpE
T01KSVQ6OkdldHRlclNldHRlcihqc1Rlc3RET01KSVREb21TdHJpbmdOdWxsYWJsZUF0dHIsIG51
bGxwdHIsIEpTVGVzdERPTUpJVDo6aW5mbygpLCBET01KSVQ6OklETFJlc3VsdFR5cGVGaWx0ZXI8
SURMTnVsbGFibGU8SURMRE9NU3RyaW5nPj4pCiB7CiB9CiAKQEAgLTEwNjYsNyArMTA4Niw3IEBA
IHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RET01KSVRCeXRlU3RyaW5nTnVsbGFibGVBdHRy
R2V0dGVyKEV4ZWNTdGF0ZSYgc3RhdGUsCiB9CiAKIFRlc3RET01KSVRCeXRlU3RyaW5nTnVsbGFi
bGVBdHRyRE9NSklUOjpUZXN0RE9NSklUQnl0ZVN0cmluZ051bGxhYmxlQXR0ckRPTUpJVCgpCi0g
ICAgOiBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVyKGpzVGVzdERPTUpJVEJ5dGVTdHJpbmdOdWxs
YWJsZUF0dHIsIG51bGxwdHIsIEpTVGVzdERPTUpJVDo6aW5mbygpLCAoSlNDOjpTcGVjU3RyaW5n
IHwgSlNDOjpTcGVjT3RoZXIpKQorICAgIDogSlNDOjpET01KSVQ6OkdldHRlclNldHRlcihqc1Rl
c3RET01KSVRCeXRlU3RyaW5nTnVsbGFibGVBdHRyLCBudWxscHRyLCBKU1Rlc3RET01KSVQ6Omlu
Zm8oKSwgRE9NSklUOjpJRExSZXN1bHRUeXBlRmlsdGVyPElETE51bGxhYmxlPElETEJ5dGVTdHJp
bmc+PikKIHsKIH0KIApAQCAtMTA5Myw3ICsxMTEzLDcgQEAgc3RhdGljIGlubGluZSBKU1ZhbHVl
IGpzVGVzdERPTUpJVFVzdlN0cmluZ051bGxhYmxlQXR0ckdldHRlcihFeGVjU3RhdGUmIHN0YXRl
LAogfQogCiBUZXN0RE9NSklUVXN2U3RyaW5nTnVsbGFibGVBdHRyRE9NSklUOjpUZXN0RE9NSklU
VXN2U3RyaW5nTnVsbGFibGVBdHRyRE9NSklUKCkKLSAgICA6IEpTQzo6RE9NSklUOjpHZXR0ZXJT
ZXR0ZXIoanNUZXN0RE9NSklUVXN2U3RyaW5nTnVsbGFibGVBdHRyLCBudWxscHRyLCBKU1Rlc3RE
T01KSVQ6OmluZm8oKSwgKEpTQzo6U3BlY1N0cmluZyB8IEpTQzo6U3BlY090aGVyKSkKKyAgICA6
IEpTQzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIoanNUZXN0RE9NSklUVXN2U3RyaW5nTnVsbGFibGVB
dHRyLCBudWxscHRyLCBKU1Rlc3RET01KSVQ6OmluZm8oKSwgRE9NSklUOjpJRExSZXN1bHRUeXBl
RmlsdGVyPElETE51bGxhYmxlPElETFVTVlN0cmluZz4+KQogewogfQogCkBAIC0xMTIwLDcgKzEx
NDAsNyBAQCBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0RE9NSklUTm9kZU51bGxhYmxlQXR0
ckdldHRlcihFeGVjU3RhdGUmIHN0YXRlLCBKU1RlcwogfQogCiBUZXN0RE9NSklUTm9kZU51bGxh
YmxlQXR0ckRPTUpJVDo6VGVzdERPTUpJVE5vZGVOdWxsYWJsZUF0dHJET01KSVQoKQotICAgIDog
SlNDOjpET01KSVQ6OkdldHRlclNldHRlcihqc1Rlc3RET01KSVROb2RlTnVsbGFibGVBdHRyLCBu
dWxscHRyLCBKU1Rlc3RET01KSVQ6OmluZm8oKSwgU3BlY0hlYXBUb3ApCisgICAgOiBKU0M6OkRP
TUpJVDo6R2V0dGVyU2V0dGVyKGpzVGVzdERPTUpJVE5vZGVOdWxsYWJsZUF0dHIsIG51bGxwdHIs
IEpTVGVzdERPTUpJVDo6aW5mbygpLCBET01KSVQ6OklETFJlc3VsdFR5cGVGaWx0ZXI8SURMTnVs
bGFibGU8SURMSW50ZXJmYWNlPE5vZGU+Pj4pCiB7CiB9CiAKQEAgLTExNTksNiArMTE3OSwzOSBA
QCBKU1ZhbHVlIEpTVGVzdERPTUpJVDo6Z2V0Q29uc3RydWN0b3IoVk0mIHZtLCBjb25zdCBKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogICAgIHJldHVybiBnZXRET01Db25zdHJ1Y3RvcjxK
U1Rlc3RET01KSVRDb25zdHJ1Y3Rvcj4odm0sICpqc0Nhc3Q8Y29uc3QgSlNET01HbG9iYWxPYmpl
Y3QqPihnbG9iYWxPYmplY3QpKTsKIH0KIAorc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1Zh
bHVlIGpzVGVzdERPTUpJVFByb3RvdHlwZUZ1bmN0aW9uR2V0QXR0cmlidXRlQ2FsbGVyKEpTQzo6
RXhlY1N0YXRlKiwgSlNUZXN0RE9NSklUKiwgSlNDOjpUaHJvd1Njb3BlJik7CisKK0VuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0RE9NSklUUHJvdG90eXBlRnVuY3Rpb25HZXRBdHRy
aWJ1dGUoRXhlY1N0YXRlKiBzdGF0ZSkKK3sKKyAgICByZXR1cm4gQmluZGluZ0NhbGxlcjxKU1Rl
c3RET01KSVQ+OjpjYWxsT3BlcmF0aW9uPGpzVGVzdERPTUpJVFByb3RvdHlwZUZ1bmN0aW9uR2V0
QXR0cmlidXRlQ2FsbGVyPihzdGF0ZSwgImdldEF0dHJpYnV0ZSIpOworfQorCitzdGF0aWMgaW5s
aW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0RE9NSklUUHJvdG90eXBlRnVuY3Rpb25HZXRB
dHRyaWJ1dGVDYWxsZXIoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCBKU1Rlc3RET01KSVQqIGNhc3Rl
ZFRoaXMsIEpTQzo6VGhyb3dTY29wZSYgdGhyb3dTY29wZSkKK3sKKyAgICBVTlVTRURfUEFSQU0o
c3RhdGUpOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKKyAgICBhdXRvJiBpbXBsID0g
Y2FzdGVkVGhpcy0+d3JhcHBlZCgpOworICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+YXJndW1lbnRD
b3VudCgpIDwgMSkpCisgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIHRocm93U2Nv
cGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CisgICAgYXV0byBuYW1l
ID0gY29udmVydDxJRExET01TdHJpbmc+KCpzdGF0ZSwgc3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50
KDApLCBTdHJpbmdDb252ZXJzaW9uQ29uZmlndXJhdGlvbjo6Tm9ybWFsKTsKKyAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOworICAgIEpTVmFsdWUg
cmVzdWx0ID0gdG9KUzxJRExOdWxsYWJsZTxJRExET01TdHJpbmc+Pigqc3RhdGUsIGltcGwuZ2V0
QXR0cmlidXRlKFdURk1vdmUobmFtZSkpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJl
c3VsdCk7Cit9CisKK0pTQzo6RW5jb2RlZEpTVmFsdWUgdW5zYWZlSnNUZXN0RE9NSklUUHJvdG90
eXBlRnVuY3Rpb25HZXRBdHRyaWJ1dGUoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCBKU1Rlc3RET01K
SVQqIGNhc3RlZFRoaXMsIERPTUpJVDo6SURMSlNBcmd1bWVudFR5cGU8SURMRE9NU3RyaW5nPiBl
bmNvZGVkTmFtZSkKK3sKKyAgICBVTlVTRURfUEFSQU0oc3RhdGUpOworICAgIFZNJiB2bSA9IHN0
YXRlLT52bSgpOworICAgIEpTQzo6TmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcigmdm0sIHN0
YXRlKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAg
ICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOworICAgIGF1dG8gbmFtZSA9IERP
TUpJVDo6RGlyZWN0Q29udmVydGVyPElETERPTVN0cmluZz46OmRpcmVjdENvbnZlcnQ8U3RyaW5n
Q29udmVyc2lvbkNvbmZpZ3VyYXRpb246Ok5vcm1hbD4oKnN0YXRlLCBlbmNvZGVkTmFtZSk7Cisg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKKyAg
ICBKU1ZhbHVlIHJlc3VsdCA9IHRvSlM8SURMTnVsbGFibGU8SURMRE9NU3RyaW5nPj4oKnN0YXRl
LCBpbXBsLmdldEF0dHJpYnV0ZShXVEZNb3ZlKG5hbWUpKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShyZXN1bHQpOworfQorCiB2b2lkIEpTVGVzdERPTUpJVDo6dmlzaXRDaGlsZHJlbihK
U0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogewogICAgIGF1dG8qIHRoaXNPYmpl
Y3QgPSBqc0Nhc3Q8SlNUZXN0RE9NSklUKj4oY2VsbCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdERPTUpJVC5pZGwgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdERPTUpJVC5pZGwKaW5kZXggYmU3ZWQwNGZmNjNk
ZTY4NmJjODc2NDgyODJiNmFhZjY0YzI3NzNlNy4uYTUzMTQ4OGRjODFjMWI4NzdmMGVlM2Y5NGY4
YWFiMzhhYTY5NDM5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L1Rlc3RET01KSVQuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9UZXN0RE9NSklULmlkbApAQCAtNjMsNCArNjMsNiBAQCBpbnRlcmZhY2UgVGVzdERP
TUpJVCA6IE5vZGUgewogICAgIFtET01KSVRdIHJlYWRvbmx5IGF0dHJpYnV0ZSBCeXRlU3RyaW5n
PyBieXRlU3RyaW5nTnVsbGFibGVBdHRyOwogICAgIFtET01KSVRdIHJlYWRvbmx5IGF0dHJpYnV0
ZSBVU1ZTdHJpbmc/IHVzdlN0cmluZ051bGxhYmxlQXR0cjsKICAgICBbRE9NSklUXSByZWFkb25s
eSBhdHRyaWJ1dGUgTm9kZT8gbm9kZU51bGxhYmxlQXR0cjsKKworICAgIFtET01KSVQ9U2lnbmF0
dXJlXSBET01TdHJpbmc/IGdldEF0dHJpYnV0ZShET01TdHJpbmcgbmFtZSk7CiB9OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaWRsIGIvU291cmNlL1dlYkNvcmUvZG9t
L0VsZW1lbnQuaWRsCmluZGV4IDcwNTYxNzM4Yjk3NDlhOGQ3NGEwZjE3Y2E2M2E3ZjhmZjE5NWUx
YzYuLjQ4OGM5OTFiNGJhNjZiNTI0ODgzODAyMTYwMWMwYzBmMWRhMzIwMmQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
RWxlbWVudC5pZGwKQEAgLTI2LDIwICsyNiwyMCBAQAogXSBpbnRlcmZhY2UgRWxlbWVudCA6IE5v
ZGUgewogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmc/IHRhZ05hbWU7CiAKLSAgICBE
T01TdHJpbmc/IGdldEF0dHJpYnV0ZShET01TdHJpbmcgbmFtZSk7CisgICAgW0RPTUpJVD1TaWdu
YXR1cmVdIERPTVN0cmluZz8gZ2V0QXR0cmlidXRlKERPTVN0cmluZyBuYW1lKTsKIAogICAgIFtD
RVJlYWN0aW9ucywgTWF5VGhyb3dFeGNlcHRpb25dIHZvaWQgc2V0QXR0cmlidXRlKERPTVN0cmlu
ZyBuYW1lLCBET01TdHJpbmcgdmFsdWUpOwogCiAgICAgW0NFUmVhY3Rpb25zXSB2b2lkIHJlbW92
ZUF0dHJpYnV0ZShET01TdHJpbmcgbmFtZSk7Ci0gICAgQXR0cj8gZ2V0QXR0cmlidXRlTm9kZShE
T01TdHJpbmcgbmFtZSk7CisgICAgW0RPTUpJVD1TaWduYXR1cmVdIEF0dHI/IGdldEF0dHJpYnV0
ZU5vZGUoRE9NU3RyaW5nIG5hbWUpOwogCiAgICAgW0NFUmVhY3Rpb25zLCBNYXlUaHJvd0V4Y2Vw
dGlvbl0gQXR0cj8gc2V0QXR0cmlidXRlTm9kZShBdHRyIG5ld0F0dHIpOwogICAgIFtDRVJlYWN0
aW9ucywgTWF5VGhyb3dFeGNlcHRpb25dIEF0dHIgcmVtb3ZlQXR0cmlidXRlTm9kZShBdHRyIG9s
ZEF0dHIpOwogCi0gICAgSFRNTENvbGxlY3Rpb24gZ2V0RWxlbWVudHNCeVRhZ05hbWUoRE9NU3Ry
aW5nIG5hbWUpOworICAgIFtET01KSVQ9U2lnbmF0dXJlXSBIVE1MQ29sbGVjdGlvbiBnZXRFbGVt
ZW50c0J5VGFnTmFtZShET01TdHJpbmcgbmFtZSk7CiAKICAgICByZWFkb25seSBhdHRyaWJ1dGUg
TmFtZWROb2RlTWFwIGF0dHJpYnV0ZXM7Ci0gICAgYm9vbGVhbiBoYXNBdHRyaWJ1dGVzKCk7Cisg
ICAgW0RPTUpJVD1TaWduYXR1cmVdIGJvb2xlYW4gaGFzQXR0cmlidXRlcygpOwogCiAgICAgRE9N
U3RyaW5nPyBnZXRBdHRyaWJ1dGVOUyhET01TdHJpbmc/IG5hbWVzcGFjZVVSSSwgRE9NU3RyaW5n
IGxvY2FsTmFtZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbWppdC9ET01KSVRB
YnN0cmFjdEhlYXBSZXBvc2l0b3J5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbWppdC9ET01KSVRB
YnN0cmFjdEhlYXBSZXBvc2l0b3J5LmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
ODNmYmE4OTcxM2I4NjYzZDRkOGYyN2VkY2JmNzRhZmU2MzE4MmQzMS4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb21qaXQvRE9N
SklUQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw3MCArMCww
IEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0g
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1
ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkRPTUpJVEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaCIK
LQotI2luY2x1ZGUgPGRvbWppdC9ET01KSVRBYnN0cmFjdEhlYXAuaD4KLSNpbmNsdWRlIDx3dGYv
RGF0YUxvZy5oPgotI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgotCi0jaWYgRU5BQkxF
KEpJVCkKLQotbmFtZXNwYWNlIFdlYkNvcmUgeyBuYW1lc3BhY2UgRE9NSklUIHsKLQotc3RhdGlj
IGNvbnN0IGJvb2wgdmVyYm9zZSA9IGZhbHNlOwotCi1BYnN0cmFjdEhlYXBSZXBvc2l0b3J5OjpB
YnN0cmFjdEhlYXBSZXBvc2l0b3J5KCkKLXsKLSAgICBKU0M6OkRPTUpJVDo6QWJzdHJhY3RIZWFw
IERPTUhlYXAoIkRPTSIpOwotI2RlZmluZSBET01KSVRfREVGSU5FX0hFQVAobmFtZSwgcGFyZW50
KSBKU0M6OkRPTUpJVDo6QWJzdHJhY3RIZWFwIG5hbWUjI0hlYXAoI25hbWUpOwotICAgIERPTUpJ
VF9BQlNUUkFDVF9IRUFQX0xJU1QoRE9NSklUX0RFRklORV9IRUFQKQotI3VuZGVmIERPTUpJVF9E
RUZJTkVfSEVBUAotCi0jZGVmaW5lIERPTUpJVF9JTklUSUFMSVpFX0hFQVAobmFtZSwgcGFyZW50
KSBuYW1lIyNIZWFwLnNldFBhcmVudCgmcGFyZW50IyNIZWFwKTsKLSAgICBET01KSVRfQUJTVFJB
Q1RfSEVBUF9MSVNUKERPTUpJVF9JTklUSUFMSVpFX0hFQVApCi0jdW5kZWYgRE9NSklUX0lOSVRJ
QUxJWkVfSEVBUAotCi0gICAgRE9NSGVhcC5jb21wdXRlKDApOwotCi0jZGVmaW5lIERPTUpJVF9J
TklUSUFMSVpFX01FTUJFUihuYW1lLCBwYXJlbnQpIG5hbWUgPSBuYW1lIyNIZWFwLnJhbmdlKCk7
Ci0gICAgRE9NSklUX0FCU1RSQUNUX0hFQVBfTElTVChET01KSVRfSU5JVElBTElaRV9NRU1CRVIp
Ci0jdW5kZWYgRE9NSklUX0lOSVRJQUxJWkVfTUVNQkVSCi0KLSAgICBpZiAodmVyYm9zZSkgewot
ICAgICAgICBkYXRhTG9nKCJET01KSVQgSGVhcCBSZXBvc2l0b3J5OlxuIik7Ci0gICAgICAgIERP
TUhlYXAuZGVlcER1bXAoV1RGOjpkYXRhRmlsZSgpKTsKLSAgICB9Ci19Ci0KLWNvbnN0IEFic3Ry
YWN0SGVhcFJlcG9zaXRvcnkmIEFic3RyYWN0SGVhcFJlcG9zaXRvcnk6OnNoYXJlZCgpCi17Ci0g
ICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEFic3RyYWN0SGVhcFJlcG9zaXRvcnk+IHJlcG9zaXRv
cnk7Ci0gICAgcmV0dXJuIHJlcG9zaXRvcnkuZ2V0KCk7Ci19Ci0KLX0gfQotCi0jZW5kaWYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbWppdC9ET01KSVRBYnN0cmFjdEhlYXBSZXBvc2l0
b3J5LmggYi9Tb3VyY2UvV2ViQ29yZS9kb21qaXQvRE9NSklUQWJzdHJhY3RIZWFwUmVwb3NpdG9y
eS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4MTkwYTFhOTRiYmM3OWRlNWYyZTNi
ZWQwOTk4MzQ3OWZhNGJkNjU2Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbWppdC9ET01KSVRBYnN0cmFjdEhlYXBSZXBvc2l0
b3J5LmgKKysrIC9kZXYvbnVsbApAQCAtMSw2NiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChD
KSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
LSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
LSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpbmNsdWRlIDxkb21q
aXQvRE9NSklUSGVhcFJhbmdlLmg+Ci0jaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+Ci0j
aW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+Ci0KLSNpZiBFTkFCTEUoSklUKQotCi1uYW1lc3Bh
Y2UgV2ViQ29yZSB7IG5hbWVzcGFjZSBET01KSVQgewotCi0vLyBEZXNjcmliZSB5b3VyIGFic3Ry
YWN0IGhlYXAgaGllcmFyY2h5IGhlcmUuCi0vLyBWKEFic3RyYWN0SGVhcE5hbWUsIFBhcmVudCkK
LSNkZWZpbmUgRE9NSklUX0FCU1RSQUNUX0hFQVBfTElTVChWKSBcCi0gICAgVihOb2RlLCBET00p
IFwKLSAgICBWKE5vZGVfZmlyc3RDaGlsZCwgTm9kZSkgXAotICAgIFYoTm9kZV9sYXN0Q2hpbGQs
IE5vZGUpIFwKLSAgICBWKE5vZGVfcGFyZW50Tm9kZSwgTm9kZSkgXAotICAgIFYoTm9kZV9uZXh0
U2libGluZywgTm9kZSkgXAotICAgIFYoTm9kZV9wcmV2aW91c1NpYmxpbmcsIE5vZGUpIFwKLSAg
ICBWKE5vZGVfb3duZXJEb2N1bWVudCwgTm9kZSkgXAotICAgIFYoRG9jdW1lbnQsIERPTSkgXAot
ICAgIFYoRG9jdW1lbnRfZG9jdW1lbnRFbGVtZW50LCBEb2N1bWVudCkgXAotCi0KLWNsYXNzIEFi
c3RyYWN0SGVhcFJlcG9zaXRvcnkgewotICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEFic3RyYWN0
SGVhcFJlcG9zaXRvcnkpOwotcHVibGljOgotICAgIHN0YXRpYyBjb25zdCBBYnN0cmFjdEhlYXBS
ZXBvc2l0b3J5JiBzaGFyZWQoKTsKLQotICAgIEpTQzo6RE9NSklUOjpIZWFwUmFuZ2UgRE9NOwot
Ci0jZGVmaW5lIERPTUpJVF9ERUZJTkVfTUVNQkVSKG5hbWUsIHBhcmVudCkgSlNDOjpET01KSVQ6
OkhlYXBSYW5nZSBuYW1lOwotICAgIERPTUpJVF9BQlNUUkFDVF9IRUFQX0xJU1QoRE9NSklUX0RF
RklORV9NRU1CRVIpCi0jdW5kZWYgRE9NSklUX0RFRklORV9NRU1CRVIKLQotICAgIEFic3RyYWN0
SGVhcFJlcG9zaXRvcnkoKTsKLX07Ci0KLX0gfQotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2RvbWppdC9ET01KSVRBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LnlhbWwgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb21qaXQvRE9NSklUQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS55YW1sCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjUyYzU4NDVlMDc4NjcwZGRkYWM5NzcyOTk5Y2NiOGVhN2QwMWJkZjMKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb21qaXQvRE9NSklUQWJzdHJhY3RIZWFwUmVwb3Np
dG9yeS55YW1sCkBAIC0wLDAgKzEsMTEgQEAKK0RPTToKKyAgICBUcmVlOgorICAgICAgICBOb2Rl
OgorICAgICAgICAgICAgLSBOb2RlX2ZpcnN0Q2hpbGQKKyAgICAgICAgICAgIC0gTm9kZV9sYXN0
Q2hpbGQKKyAgICAgICAgICAgIC0gTm9kZV9wYXJlbnROb2RlCisgICAgICAgICAgICAtIE5vZGVf
bmV4dFNpYmxpbmcKKyAgICAgICAgICAgIC0gTm9kZV9wcmV2aW91c1NpYmxpbmcKKyAgICAgICAg
ICAgIC0gTm9kZV9vd25lckRvY3VtZW50CisgICAgICAgIERvY3VtZW50OgorICAgICAgICAgICAg
LSBEb2N1bWVudF9kb2N1bWVudEVsZW1lbnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bWppdC9ET01KSVRJRExDb252ZXJ0LmggYi9Tb3VyY2UvV2ViQ29yZS9kb21qaXQvRE9NSklUSURM
Q29udmVydC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjVlMDBhYmZjY2I4NzZkZWExODMyZjFjMjBhZWUzZWQ3OGIx
MzY4NDkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb21qaXQvRE9NSklUSURM
Q29udmVydC5oCkBAIC0wLDAgKzEsNDkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKwor
I2luY2x1ZGUgIklETFR5cGVzLmgiCisjaW5jbHVkZSA8Ynl0ZWNvZGUvU3BlY3VsYXRlZFR5cGUu
aD4KKyNpbmNsdWRlIDxkb21qaXQvRE9NSklUU2lnbmF0dXJlLmg+CisKK25hbWVzcGFjZSBXZWJD
b3JlIHsgbmFtZXNwYWNlIERPTUpJVCB7CisKK3RlbXBsYXRlPHR5cGVuYW1lIElETFR5cGU+Citz
dHJ1Y3QgRGlyZWN0Q29udmVydGVyOworCit0ZW1wbGF0ZTw+CitzdHJ1Y3QgRGlyZWN0Q29udmVy
dGVyPElETERPTVN0cmluZz4geworICAgIHRlbXBsYXRlPFN0cmluZ0NvbnZlcnNpb25Db25maWd1
cmF0aW9uPgorICAgIHN0YXRpYyBTdHJpbmcgZGlyZWN0Q29udmVydChKU0M6OkV4ZWNTdGF0ZSYs
IEpTQzo6SlNTdHJpbmcqKTsKK307CisKK3RlbXBsYXRlPD4KK2lubGluZSBTdHJpbmcgRGlyZWN0
Q29udmVydGVyPElETERPTVN0cmluZz46OmRpcmVjdENvbnZlcnQ8U3RyaW5nQ29udmVyc2lvbkNv
bmZpZ3VyYXRpb246Ok5vcm1hbD4oSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBKU0M6OkpTU3RyaW5n
KiBzdHJpbmcpCit7CisgICAgcmV0dXJuIHN0cmluZy0+dmFsdWUoJnN0YXRlKTsKK30KKworfSB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb21qaXQvRE9NSklUSURMVHlwZS5oIGIvU291
cmNlL1dlYkNvcmUvZG9taml0L0RPTUpJVElETFR5cGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ODkxZmJjNTBl
ZjRjMmQ3NjU0ZDhlNWQyYmM4ZGVhZTk3NmRmMWFjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkNvcmUvZG9taml0L0RPTUpJVElETFR5cGUuaApAQCAtMCwwICsxLDQ3IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJJRExUeXBlcy5oIgorI2luY2x1ZGUgPGJ5
dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsgbmFtZXNwYWNl
IERPTUpJVCB7CisKK3RlbXBsYXRlPHR5cGVuYW1lIElETFR5cGU+CitzdHJ1Y3QgSURMSlNBcmd1
bWVudFR5cGVTZWxlY3Q7CisKK3RlbXBsYXRlPD4gc3RydWN0IElETEpTQXJndW1lbnRUeXBlU2Vs
ZWN0PElETEJvb2xlYW4+IHsgdHlwZWRlZiBib29sIHR5cGU7IH07Cit0ZW1wbGF0ZTw+IHN0cnVj
dCBJRExKU0FyZ3VtZW50VHlwZVNlbGVjdDxJRExCeXRlPiB7IHR5cGVkZWYgaW50MzJfdCB0eXBl
OyB9OwordGVtcGxhdGU8PiBzdHJ1Y3QgSURMSlNBcmd1bWVudFR5cGVTZWxlY3Q8SURMT2N0ZXQ+
IHsgdHlwZWRlZiBpbnQzMl90IHR5cGU7IH07Cit0ZW1wbGF0ZTw+IHN0cnVjdCBJRExKU0FyZ3Vt
ZW50VHlwZVNlbGVjdDxJRExTaG9ydD4geyB0eXBlZGVmIGludDMyX3QgdHlwZTsgfTsKK3RlbXBs
YXRlPD4gc3RydWN0IElETEpTQXJndW1lbnRUeXBlU2VsZWN0PElETFVuc2lnbmVkU2hvcnQ+IHsg
dHlwZWRlZiBpbnQzMl90IHR5cGU7IH07Cit0ZW1wbGF0ZTw+IHN0cnVjdCBJRExKU0FyZ3VtZW50
VHlwZVNlbGVjdDxJRExMb25nPiB7IHR5cGVkZWYgaW50MzJfdCB0eXBlOyB9OwordGVtcGxhdGU8
PiBzdHJ1Y3QgSURMSlNBcmd1bWVudFR5cGVTZWxlY3Q8SURMRE9NU3RyaW5nPiB7IHR5cGVkZWYg
SlNDOjpKU1N0cmluZyogdHlwZTsgfTsKKwordGVtcGxhdGU8dHlwZW5hbWUgSURMVHlwZT4KK3Vz
aW5nIElETEpTQXJndW1lbnRUeXBlID0gdHlwZW5hbWUgSURMSlNBcmd1bWVudFR5cGVTZWxlY3Q8
SURMVHlwZT46OnR5cGU7CisKK30gfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9taml0
L0RPTUpJVElETFR5cGVGaWx0ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbWppdC9ET01KSVRJRExU
eXBlRmlsdGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGFmNjM2ZGU5YjZmZTQxYzM2Yzc3MDg3MDI0NmU4N2Fi
ZmZiNzgwMgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbWppdC9ET01KSVRJ
RExUeXBlRmlsdGVyLmgKQEAgLTAsMCArMSw3MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
NiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25j
ZQorCisjaW5jbHVkZSA8Ynl0ZWNvZGUvU3BlY3VsYXRlZFR5cGUuaD4KKworbmFtZXNwYWNlIFdl
YkNvcmUgeyBuYW1lc3BhY2UgRE9NSklUIHsKKwordGVtcGxhdGU8dHlwZW5hbWUgSURMVHlwZT4K
K3N0cnVjdCBJRExBcmd1bWVudFR5cGVGaWx0ZXJTZWxlY3Q7CisKK3RlbXBsYXRlPD4gc3RydWN0
IElETEFyZ3VtZW50VHlwZUZpbHRlclNlbGVjdDxJRExCb29sZWFuPiB7IHN0YXRpYyBjb25zdGV4
cHIgSlNDOjpTcGVjdWxhdGVkVHlwZSB2YWx1ZSA9IEpTQzo6U3BlY0Jvb2xlYW47IH07Cit0ZW1w
bGF0ZTw+IHN0cnVjdCBJRExBcmd1bWVudFR5cGVGaWx0ZXJTZWxlY3Q8SURMQnl0ZT4geyBzdGF0
aWMgY29uc3RleHByIEpTQzo6U3BlY3VsYXRlZFR5cGUgdmFsdWUgPSBKU0M6OlNwZWNJbnQzMk9u
bHk7IH07Cit0ZW1wbGF0ZTw+IHN0cnVjdCBJRExBcmd1bWVudFR5cGVGaWx0ZXJTZWxlY3Q8SURM
T2N0ZXQ+IHsgc3RhdGljIGNvbnN0ZXhwciBKU0M6OlNwZWN1bGF0ZWRUeXBlIHZhbHVlID0gSlND
OjpTcGVjSW50MzJPbmx5OyB9OwordGVtcGxhdGU8PiBzdHJ1Y3QgSURMQXJndW1lbnRUeXBlRmls
dGVyU2VsZWN0PElETFNob3J0PiB7IHN0YXRpYyBjb25zdGV4cHIgSlNDOjpTcGVjdWxhdGVkVHlw
ZSB2YWx1ZSA9IEpTQzo6U3BlY0ludDMyT25seTsgfTsKK3RlbXBsYXRlPD4gc3RydWN0IElETEFy
Z3VtZW50VHlwZUZpbHRlclNlbGVjdDxJRExVbnNpZ25lZFNob3J0PiB7IHN0YXRpYyBjb25zdGV4
cHIgSlNDOjpTcGVjdWxhdGVkVHlwZSB2YWx1ZSA9IEpTQzo6U3BlY0ludDMyT25seTsgfTsKK3Rl
bXBsYXRlPD4gc3RydWN0IElETEFyZ3VtZW50VHlwZUZpbHRlclNlbGVjdDxJRExMb25nPiB7IHN0
YXRpYyBjb25zdGV4cHIgSlNDOjpTcGVjdWxhdGVkVHlwZSB2YWx1ZSA9IEpTQzo6U3BlY0ludDMy
T25seTsgfTsKK3RlbXBsYXRlPD4gc3RydWN0IElETEFyZ3VtZW50VHlwZUZpbHRlclNlbGVjdDxJ
RExET01TdHJpbmc+IHsgc3RhdGljIGNvbnN0ZXhwciBKU0M6OlNwZWN1bGF0ZWRUeXBlIHZhbHVl
ID0gSlNDOjpTcGVjU3RyaW5nOyB9OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBJRExUeXBlPgorY29u
c3RleHByIEpTQzo6U3BlY3VsYXRlZFR5cGUgSURMQXJndW1lbnRUeXBlRmlsdGVyID0gSURMQXJn
dW1lbnRUeXBlRmlsdGVyU2VsZWN0PElETFR5cGU+Ojp2YWx1ZTsKKwordGVtcGxhdGU8dHlwZW5h
bWUgSURMVHlwZT4KK2NvbnN0ZXhwciBKU0M6OlNwZWN1bGF0ZWRUeXBlIElETFJlc3VsdFR5cGVG
aWx0ZXIgPSBKU0M6OlNwZWNIZWFwVG9wOworCit0ZW1wbGF0ZTw+IGNvbnN0ZXhwciBKU0M6OlNw
ZWN1bGF0ZWRUeXBlIElETFJlc3VsdFR5cGVGaWx0ZXI8SURMQW55PiA9IEpTQzo6U3BlY0hlYXBU
b3A7Cit0ZW1wbGF0ZTw+IGNvbnN0ZXhwciBKU0M6OlNwZWN1bGF0ZWRUeXBlIElETFJlc3VsdFR5
cGVGaWx0ZXI8SURMQm9vbGVhbj4gPSBKU0M6OlNwZWNCb29sZWFuOwordGVtcGxhdGU8PiBjb25z
dGV4cHIgSlNDOjpTcGVjdWxhdGVkVHlwZSBJRExSZXN1bHRUeXBlRmlsdGVyPElETEJ5dGU+ID0g
SlNDOjpTcGVjSW50MzJPbmx5OwordGVtcGxhdGU8PiBjb25zdGV4cHIgSlNDOjpTcGVjdWxhdGVk
VHlwZSBJRExSZXN1bHRUeXBlRmlsdGVyPElETE9jdGV0PiA9IEpTQzo6U3BlY0ludDMyT25seTsK
K3RlbXBsYXRlPD4gY29uc3RleHByIEpTQzo6U3BlY3VsYXRlZFR5cGUgSURMUmVzdWx0VHlwZUZp
bHRlcjxJRExTaG9ydD4gPSBKU0M6OlNwZWNJbnQzMk9ubHk7Cit0ZW1wbGF0ZTw+IGNvbnN0ZXhw
ciBKU0M6OlNwZWN1bGF0ZWRUeXBlIElETFJlc3VsdFR5cGVGaWx0ZXI8SURMVW5zaWduZWRTaG9y
dD4gPSBKU0M6OlNwZWNJbnQzMk9ubHk7Cit0ZW1wbGF0ZTw+IGNvbnN0ZXhwciBKU0M6OlNwZWN1
bGF0ZWRUeXBlIElETFJlc3VsdFR5cGVGaWx0ZXI8SURMTG9uZz4gPSBKU0M6OlNwZWNJbnQzMk9u
bHk7Cit0ZW1wbGF0ZTw+IGNvbnN0ZXhwciBKU0M6OlNwZWN1bGF0ZWRUeXBlIElETFJlc3VsdFR5
cGVGaWx0ZXI8SURMVW5zaWduZWRMb25nPiA9IEpTQzo6U3BlY0J5dGVjb2RlTnVtYmVyOwordGVt
cGxhdGU8PiBjb25zdGV4cHIgSlNDOjpTcGVjdWxhdGVkVHlwZSBJRExSZXN1bHRUeXBlRmlsdGVy
PElETExvbmdMb25nPiA9IEpTQzo6U3BlY0J5dGVjb2RlTnVtYmVyOwordGVtcGxhdGU8PiBjb25z
dGV4cHIgSlNDOjpTcGVjdWxhdGVkVHlwZSBJRExSZXN1bHRUeXBlRmlsdGVyPElETFVuc2lnbmVk
TG9uZ0xvbmc+ID0gSlNDOjpTcGVjQnl0ZWNvZGVOdW1iZXI7Cit0ZW1wbGF0ZTw+IGNvbnN0ZXhw
ciBKU0M6OlNwZWN1bGF0ZWRUeXBlIElETFJlc3VsdFR5cGVGaWx0ZXI8SURMRmxvYXQ+ID0gSlND
OjpTcGVjQnl0ZWNvZGVOdW1iZXI7Cit0ZW1wbGF0ZTw+IGNvbnN0ZXhwciBKU0M6OlNwZWN1bGF0
ZWRUeXBlIElETFJlc3VsdFR5cGVGaWx0ZXI8SURMVW5yZXN0cmljdGVkRmxvYXQ+ID0gSlNDOjpT
cGVjQnl0ZWNvZGVOdW1iZXI7Cit0ZW1wbGF0ZTw+IGNvbnN0ZXhwciBKU0M6OlNwZWN1bGF0ZWRU
eXBlIElETFJlc3VsdFR5cGVGaWx0ZXI8SURMRG91YmxlPiA9IEpTQzo6U3BlY0J5dGVjb2RlTnVt
YmVyOwordGVtcGxhdGU8PiBjb25zdGV4cHIgSlNDOjpTcGVjdWxhdGVkVHlwZSBJRExSZXN1bHRU
eXBlRmlsdGVyPElETFVucmVzdHJpY3RlZERvdWJsZT4gPSBKU0M6OlNwZWNCeXRlY29kZU51bWJl
cjsKK3RlbXBsYXRlPD4gY29uc3RleHByIEpTQzo6U3BlY3VsYXRlZFR5cGUgSURMUmVzdWx0VHlw
ZUZpbHRlcjxJRExET01TdHJpbmc+ID0gSlNDOjpTcGVjU3RyaW5nOwordGVtcGxhdGU8PiBjb25z
dGV4cHIgSlNDOjpTcGVjdWxhdGVkVHlwZSBJRExSZXN1bHRUeXBlRmlsdGVyPElETEJ5dGVTdHJp
bmc+ID0gSlNDOjpTcGVjU3RyaW5nOwordGVtcGxhdGU8PiBjb25zdGV4cHIgSlNDOjpTcGVjdWxh
dGVkVHlwZSBJRExSZXN1bHRUeXBlRmlsdGVyPElETFVTVlN0cmluZz4gPSBKU0M6OlNwZWNTdHJp
bmc7CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+Citjb25zdGV4cHIgSlNDOjpTcGVjdWxhdGVkVHlw
ZSBJRExSZXN1bHRUeXBlRmlsdGVyPElETE51bGxhYmxlPFQ+PiA9IEpTQzo6U3BlY090aGVyIHwg
SURMUmVzdWx0VHlwZUZpbHRlcjxUPjsKKworfSB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9kb21qaXQvSlNEb2N1bWVudERPTUpJVC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb21qaXQvSlNE
b2N1bWVudERPTUpJVC5jcHAKaW5kZXggOWI0OGQ5ZmRhNThhNjJkMDdmYjIzYWFiNDU2YmY5NGI3
ZWQ4ZmMyZi4uYmJmZWU3ZGM0YmI3ODJlNzNjZjI3Yzk3N2JjMTgyOTRhNTk0YjZkOCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZG9taml0L0pTRG9jdW1lbnRET01KSVQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2RvbWppdC9KU0RvY3VtZW50RE9NSklULmNwcApAQCAtNDgsNyArNDgsNiBA
QCBSZWY8SlNDOjpET01KSVQ6OlBhdGNocG9pbnQ+IERvY3VtZW50RG9jdW1lbnRFbGVtZW50RE9N
SklUOjpjaGVja0RPTSgpCiAKIFJlZjxKU0M6OkRPTUpJVDo6Q2FsbERPTUdldHRlclBhdGNocG9p
bnQ+IERvY3VtZW50RG9jdW1lbnRFbGVtZW50RE9NSklUOjpjYWxsRE9NR2V0dGVyKCkKIHsKLSAg
ICBjb25zdCBhdXRvJiBoZWFwID0gRE9NSklUOjpBYnN0cmFjdEhlYXBSZXBvc2l0b3J5OjpzaGFy
ZWQoKTsKICAgICBSZWY8SlNDOjpET01KSVQ6OkNhbGxET01HZXR0ZXJQYXRjaHBvaW50PiBwYXRj
aHBvaW50ID0gSlNDOjpET01KSVQ6OkNhbGxET01HZXR0ZXJQYXRjaHBvaW50OjpjcmVhdGUoKTsK
ICAgICBwYXRjaHBvaW50LT5udW1HUFNjcmF0Y2hSZWdpc3RlcnMgPSAxOwogICAgIHBhdGNocG9p
bnQtPnNldEdlbmVyYXRvcihbPV0oQ0NhbGxIZWxwZXJzJiBqaXQsIEpTQzo6RE9NSklUOjpQYXRj
aHBvaW50UGFyYW1zJiBwYXJhbXMpIHsKQEAgLTcwLDcgKzY5LDcgQEAgUmVmPEpTQzo6RE9NSklU
OjpDYWxsRE9NR2V0dGVyUGF0Y2hwb2ludD4gRG9jdW1lbnREb2N1bWVudEVsZW1lbnRET01KSVQ6
OmNhbGxET00KIAogICAgICAgICByZXR1cm4gQ0NhbGxIZWxwZXJzOjpKdW1wTGlzdCgpOwogICAg
IH0pOwotICAgIHBhdGNocG9pbnQtPmVmZmVjdCA9IEpTQzo6RE9NSklUOjpFZmZlY3Q6OmZvckRl
ZihoZWFwLkRvY3VtZW50X2RvY3VtZW50RWxlbWVudCk7CisgICAgcGF0Y2hwb2ludC0+ZWZmZWN0
ID0gSlNDOjpET01KSVQ6OkVmZmVjdDo6Zm9yRGVmKERPTUpJVDo6QWJzdHJhY3RIZWFwUmVwb3Np
dG9yeTo6RG9jdW1lbnRfZG9jdW1lbnRFbGVtZW50KTsKICAgICByZXR1cm4gcGF0Y2hwb2ludDsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9taml0L0pTTm9kZURPTUpJVC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9kb21qaXQvSlNOb2RlRE9NSklULmNwcAppbmRleCAxZDc5MDFlYzQx
ZDdhY2VmMWQwZDc4ZjYxMzI2ZmJlOGExM2E5MWJmLi5kYjMxMGVhMzQ1Mjg0OTE0MjQyOGQzZDYx
NmY4MWIyYzY3YzUxNjU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb21qaXQvSlNOb2Rl
RE9NSklULmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb21qaXQvSlNOb2RlRE9NSklULmNwcApA
QCAtODMsOSArODMsOCBAQCBSZWY8SlNDOjpET01KSVQ6OlBhdGNocG9pbnQ+IE5vZGVGaXJzdENo
aWxkRE9NSklUOjpjaGVja0RPTSgpCiAKIFJlZjxKU0M6OkRPTUpJVDo6Q2FsbERPTUdldHRlclBh
dGNocG9pbnQ+IE5vZGVGaXJzdENoaWxkRE9NSklUOjpjYWxsRE9NR2V0dGVyKCkKIHsKLSAgICBj
b25zdCBhdXRvJiBoZWFwID0gRE9NSklUOjpBYnN0cmFjdEhlYXBSZXBvc2l0b3J5OjpzaGFyZWQo
KTsKICAgICBhdXRvIHBhdGNocG9pbnQgPSBjcmVhdGVDYWxsRE9NR2V0dGVyRm9yT2Zmc2V0QWNj
ZXNzPE5vZGU+KENBU1RfT0ZGU0VUKE5vZGUqLCBDb250YWluZXJOb2RlKikgKyBDb250YWluZXJO
b2RlOjpmaXJzdENoaWxkTWVtb3J5T2Zmc2V0KCksIElzQ29udGFpbmVyR3VhcmRSZXF1aXJlbWVu
dDo6UmVxdWlyZWQpOwotICAgIHBhdGNocG9pbnQtPmVmZmVjdCA9IEpTQzo6RE9NSklUOjpFZmZl
Y3Q6OmZvckRlZihoZWFwLk5vZGVfZmlyc3RDaGlsZCk7CisgICAgcGF0Y2hwb2ludC0+ZWZmZWN0
ID0gSlNDOjpET01KSVQ6OkVmZmVjdDo6Zm9yRGVmKERPTUpJVDo6QWJzdHJhY3RIZWFwUmVwb3Np
dG9yeTo6Tm9kZV9maXJzdENoaWxkKTsKICAgICByZXR1cm4gcGF0Y2hwb2ludDsKIH0KIApAQCAt
OTYsOSArOTUsOCBAQCBSZWY8SlNDOjpET01KSVQ6OlBhdGNocG9pbnQ+IE5vZGVMYXN0Q2hpbGRE
T01KSVQ6OmNoZWNrRE9NKCkKIAogUmVmPEpTQzo6RE9NSklUOjpDYWxsRE9NR2V0dGVyUGF0Y2hw
b2ludD4gTm9kZUxhc3RDaGlsZERPTUpJVDo6Y2FsbERPTUdldHRlcigpCiB7Ci0gICAgY29uc3Qg
YXV0byYgaGVhcCA9IERPTUpJVDo6QWJzdHJhY3RIZWFwUmVwb3NpdG9yeTo6c2hhcmVkKCk7CiAg
ICAgYXV0byBwYXRjaHBvaW50ID0gY3JlYXRlQ2FsbERPTUdldHRlckZvck9mZnNldEFjY2VzczxO
b2RlPihDQVNUX09GRlNFVChOb2RlKiwgQ29udGFpbmVyTm9kZSopICsgQ29udGFpbmVyTm9kZTo6
bGFzdENoaWxkTWVtb3J5T2Zmc2V0KCksIElzQ29udGFpbmVyR3VhcmRSZXF1aXJlbWVudDo6UmVx
dWlyZWQpOwotICAgIHBhdGNocG9pbnQtPmVmZmVjdCA9IEpTQzo6RE9NSklUOjpFZmZlY3Q6OmZv
ckRlZihoZWFwLk5vZGVfbGFzdENoaWxkKTsKKyAgICBwYXRjaHBvaW50LT5lZmZlY3QgPSBKU0M6
OkRPTUpJVDo6RWZmZWN0Ojpmb3JEZWYoRE9NSklUOjpBYnN0cmFjdEhlYXBSZXBvc2l0b3J5OjpO
b2RlX2xhc3RDaGlsZCk7CiAgICAgcmV0dXJuIHBhdGNocG9pbnQ7CiB9CiAKQEAgLTEwOSw5ICsx
MDcsOCBAQCBSZWY8SlNDOjpET01KSVQ6OlBhdGNocG9pbnQ+IE5vZGVOZXh0U2libGluZ0RPTUpJ
VDo6Y2hlY2tET00oKQogCiBSZWY8SlNDOjpET01KSVQ6OkNhbGxET01HZXR0ZXJQYXRjaHBvaW50
PiBOb2RlTmV4dFNpYmxpbmdET01KSVQ6OmNhbGxET01HZXR0ZXIoKQogewotICAgIGNvbnN0IGF1
dG8mIGhlYXAgPSBET01KSVQ6OkFic3RyYWN0SGVhcFJlcG9zaXRvcnk6OnNoYXJlZCgpOwogICAg
IGF1dG8gcGF0Y2hwb2ludCA9IGNyZWF0ZUNhbGxET01HZXR0ZXJGb3JPZmZzZXRBY2Nlc3M8Tm9k
ZT4oTm9kZTo6bmV4dFNpYmxpbmdNZW1vcnlPZmZzZXQoKSwgSXNDb250YWluZXJHdWFyZFJlcXVp
cmVtZW50OjpOb3RSZXF1aXJlZCk7Ci0gICAgcGF0Y2hwb2ludC0+ZWZmZWN0ID0gSlNDOjpET01K
SVQ6OkVmZmVjdDo6Zm9yRGVmKGhlYXAuTm9kZV9uZXh0U2libGluZyk7CisgICAgcGF0Y2hwb2lu
dC0+ZWZmZWN0ID0gSlNDOjpET01KSVQ6OkVmZmVjdDo6Zm9yRGVmKERPTUpJVDo6QWJzdHJhY3RI
ZWFwUmVwb3NpdG9yeTo6Tm9kZV9uZXh0U2libGluZyk7CiAgICAgcmV0dXJuIHBhdGNocG9pbnQ7
CiB9CiAKQEAgLTEyMiw5ICsxMTksOCBAQCBSZWY8SlNDOjpET01KSVQ6OlBhdGNocG9pbnQ+IE5v
ZGVQcmV2aW91c1NpYmxpbmdET01KSVQ6OmNoZWNrRE9NKCkKIAogUmVmPEpTQzo6RE9NSklUOjpD
YWxsRE9NR2V0dGVyUGF0Y2hwb2ludD4gTm9kZVByZXZpb3VzU2libGluZ0RPTUpJVDo6Y2FsbERP
TUdldHRlcigpCiB7Ci0gICAgY29uc3QgYXV0byYgaGVhcCA9IERPTUpJVDo6QWJzdHJhY3RIZWFw
UmVwb3NpdG9yeTo6c2hhcmVkKCk7CiAgICAgYXV0byBwYXRjaHBvaW50ID0gY3JlYXRlQ2FsbERP
TUdldHRlckZvck9mZnNldEFjY2VzczxOb2RlPihOb2RlOjpwcmV2aW91c1NpYmxpbmdNZW1vcnlP
ZmZzZXQoKSwgSXNDb250YWluZXJHdWFyZFJlcXVpcmVtZW50OjpOb3RSZXF1aXJlZCk7Ci0gICAg
cGF0Y2hwb2ludC0+ZWZmZWN0ID0gSlNDOjpET01KSVQ6OkVmZmVjdDo6Zm9yRGVmKGhlYXAuTm9k
ZV9wcmV2aW91c1NpYmxpbmcpOworICAgIHBhdGNocG9pbnQtPmVmZmVjdCA9IEpTQzo6RE9NSklU
OjpFZmZlY3Q6OmZvckRlZihET01KSVQ6OkFic3RyYWN0SGVhcFJlcG9zaXRvcnk6Ok5vZGVfcHJl
dmlvdXNTaWJsaW5nKTsKICAgICByZXR1cm4gcGF0Y2hwb2ludDsKIH0KIApAQCAtMTM1LDkgKzEz
MSw4IEBAIFJlZjxKU0M6OkRPTUpJVDo6UGF0Y2hwb2ludD4gTm9kZVBhcmVudE5vZGVET01KSVQ6
OmNoZWNrRE9NKCkKIAogUmVmPEpTQzo6RE9NSklUOjpDYWxsRE9NR2V0dGVyUGF0Y2hwb2ludD4g
Tm9kZVBhcmVudE5vZGVET01KSVQ6OmNhbGxET01HZXR0ZXIoKQogewotICAgIGNvbnN0IGF1dG8m
IGhlYXAgPSBET01KSVQ6OkFic3RyYWN0SGVhcFJlcG9zaXRvcnk6OnNoYXJlZCgpOwogICAgIGF1
dG8gcGF0Y2hwb2ludCA9IGNyZWF0ZUNhbGxET01HZXR0ZXJGb3JPZmZzZXRBY2Nlc3M8Q29udGFp
bmVyTm9kZT4oTm9kZTo6cGFyZW50Tm9kZU1lbW9yeU9mZnNldCgpLCBJc0NvbnRhaW5lckd1YXJk
UmVxdWlyZW1lbnQ6Ok5vdFJlcXVpcmVkKTsKLSAgICBwYXRjaHBvaW50LT5lZmZlY3QgPSBKU0M6
OkRPTUpJVDo6RWZmZWN0Ojpmb3JEZWYoaGVhcC5Ob2RlX3BhcmVudE5vZGUpOworICAgIHBhdGNo
cG9pbnQtPmVmZmVjdCA9IEpTQzo6RE9NSklUOjpFZmZlY3Q6OmZvckRlZihET01KSVQ6OkFic3Ry
YWN0SGVhcFJlcG9zaXRvcnk6Ok5vZGVfcGFyZW50Tm9kZSk7CiAgICAgcmV0dXJuIHBhdGNocG9p
bnQ7CiB9CiAKQEAgLTE2OSw3ICsxNjQsNiBAQCBSZWY8SlNDOjpET01KSVQ6OlBhdGNocG9pbnQ+
IE5vZGVPd25lckRvY3VtZW50RE9NSklUOjpjaGVja0RPTSgpCiAKIFJlZjxKU0M6OkRPTUpJVDo6
Q2FsbERPTUdldHRlclBhdGNocG9pbnQ+IE5vZGVPd25lckRvY3VtZW50RE9NSklUOjpjYWxsRE9N
R2V0dGVyKCkKIHsKLSAgICBjb25zdCBhdXRvJiBoZWFwID0gRE9NSklUOjpBYnN0cmFjdEhlYXBS
ZXBvc2l0b3J5OjpzaGFyZWQoKTsKICAgICBSZWY8SlNDOjpET01KSVQ6OkNhbGxET01HZXR0ZXJQ
YXRjaHBvaW50PiBwYXRjaHBvaW50ID0gSlNDOjpET01KSVQ6OkNhbGxET01HZXR0ZXJQYXRjaHBv
aW50OjpjcmVhdGUoKTsKICAgICBwYXRjaHBvaW50LT5udW1HUFNjcmF0Y2hSZWdpc3RlcnMgPSAx
OwogICAgIHBhdGNocG9pbnQtPnNldEdlbmVyYXRvcihbPV0oQ0NhbGxIZWxwZXJzJiBqaXQsIEpT
Qzo6RE9NSklUOjpQYXRjaHBvaW50UGFyYW1zJiBwYXJhbXMpIHsKQEAgLTE5MSw3ICsxODUsNyBA
QCBSZWY8SlNDOjpET01KSVQ6OkNhbGxET01HZXR0ZXJQYXRjaHBvaW50PiBOb2RlT3duZXJEb2N1
bWVudERPTUpJVDo6Y2FsbERPTUdldHRlcgogICAgICAgICBkb25lLmxpbmsoJmppdCk7CiAgICAg
ICAgIHJldHVybiBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0KCk7CiAgICAgfSk7Ci0gICAgcGF0Y2hw
b2ludC0+ZWZmZWN0ID0gSlNDOjpET01KSVQ6OkVmZmVjdDo6Zm9yRGVmKGhlYXAuTm9kZV9vd25l
ckRvY3VtZW50KTsKKyAgICBwYXRjaHBvaW50LT5lZmZlY3QgPSBKU0M6OkRPTUpJVDo6RWZmZWN0
Ojpmb3JEZWYoRE9NSklUOjpBYnN0cmFjdEhlYXBSZXBvc2l0b3J5OjpOb2RlX293bmVyRG9jdW1l
bnQpOwogICAgIHJldHVybiBwYXRjaHBvaW50OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9kb21qaXQvZ2VuZXJhdGUtYWJzdHJhY3QtaGVhcC5yYiBiL1NvdXJjZS9XZWJDb3JlL2Rv
bWppdC9nZW5lcmF0ZS1hYnN0cmFjdC1oZWFwLnJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI3NDEyZTg1ZDY5ZjQ5
MWEyZWFhYmFhNjE3OGYxYjI1YTAyZDA5YjQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9kb21qaXQvZ2VuZXJhdGUtYWJzdHJhY3QtaGVhcC5yYgpAQCAtMCwwICsxLDE2NSBAQAor
IyEvdXNyL2Jpbi9lbnYgcnVieQorIyAtKi0gY29kaW5nOiB1dGYtOCAtKi0KKyMgQ29weXJpZ2h0
IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworIyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyMgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorIyBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorIyBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorIyBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyMgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyMgQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyMgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorIyBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK3JlcXVpcmUgInlhbWwiCisKK2NsYXNzIEhlYXBS
YW5nZQorICAgIGF0dHJfcmVhZGVyIDpmaXJzdCwgOmxhc3QKKyAgICBkZWYgaW5pdGlhbGl6ZShm
aXJzdCwgbGFzdCkKKyAgICAgICAgQGZpcnN0ID0gZmlyc3QKKyAgICAgICAgQGxhc3QgPSBsYXN0
CisgICAgZW5kCitlbmQKKworY2xhc3MgQWJzdHJhY3RIZWFwCisgICAgYXR0cl9yZWFkZXIgOnJh
bmdlLCA6bmFtZSwgOnBhcmVudAorICAgIGRlZiBpbml0aWFsaXplKG5hbWUsIHRyZWUpCisgICAg
ICAgIEBuYW1lID0gbmFtZQorICAgICAgICBAcGFyZW50ID0gbmlsCisgICAgICAgIGlmIHRyZWUu
bmlsPworICAgICAgICAgICAgQGNoaWxkcmVuID0gW10KKyAgICAgICAgZWxzZQorICAgICAgICAg
ICAgQGNoaWxkcmVuID0gdHJlZS5tYXAge3xrZXksIHZhbHVlfCBBYnN0cmFjdEhlYXAubmV3KGtl
eSwgdmFsdWUpIH0KKyAgICAgICAgZW5kCisgICAgICAgIEByYW5nZSA9IG5pbAorICAgIGVuZAor
CisgICAgZGVmIHNldFBhcmVudChwYXJlbnQpCisgICAgICAgIHBhcmVudC5jaGlsZHJlbi5wdXNo
KHNlbGYpCisgICAgICAgIEBwYXJlbnQgPSBwYXJlbnQKKyAgICBlbmQKKworICAgIGRlZiBjb21w
dXRlKHN0YXJ0KQorICAgICAgICBjdXJyZW50ID0gc3RhcnQKKyAgICAgICAgaWYgQGNoaWxkcmVu
LmVtcHR5PworICAgICAgICAgICAgQHJhbmdlID0gSGVhcFJhbmdlLm5ldyhzdGFydCwgY3VycmVu
dCArIDEpCisgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgZW5kCisKKyAgICAgICAgQGNoaWxk
cmVuLmVhY2gge3xjaGlsZHwKKyAgICAgICAgICAgIGNoaWxkLmNvbXB1dGUoY3VycmVudCkKKyAg
ICAgICAgICAgIGN1cnJlbnQgPSBjaGlsZC5yYW5nZS5sYXN0CisgICAgICAgIH0KKworICAgICAg
ICBAcmFuZ2UgPSBIZWFwUmFuZ2UubmV3KHN0YXJ0LCBjdXJyZW50KQorICAgIGVuZAorCisgICAg
ZGVmIGR1bXAgb3V0cHV0CisgICAgICAgIHNoYWxsb3dEdW1wKG91dHB1dCkKKyAgICAgICAgaWYg
QHBhcmVudAorICAgICAgICAgICAgb3V0cHV0LnByaW50ICItPiAiCisgICAgICAgICAgICBAcGFy
ZW50LmR1bXAob3V0cHV0KQorICAgICAgICBlbmQKKyAgICBlbmQKKworICAgIGRlZiBzaGFsbG93
RHVtcChvdXRwdXQpCisgICAgICAgIG91dHB1dC5wcmludCAiI3tAbmFtZX08I3tAcmFuZ2UuZmly
c3R9LCN7QHJhbmdlLmxhc3R9PiIKKyAgICBlbmQKKworICAgIGRlZiBkZWVwRHVtcCBvdXRwdXQs
IGluZGVudAorICAgICAgICBwcmludEluZGVudChvdXRwdXQsIGluZGVudCkKKyAgICAgICAgc2hh
bGxvd0R1bXAob3V0cHV0KQorICAgICAgICBpZiBAY2hpbGRyZW4uZW1wdHk/CisgICAgICAgICAg
ICBvdXRwdXQucHJpbnQgIlxuIgorICAgICAgICAgICAgcmV0dXJuCisgICAgICAgIGVuZAorCisg
ICAgICAgIG91dHB1dC5wcmludCAiOlxuIgorICAgICAgICBAY2hpbGRyZW4uZWFjaCB7fGNoaWxk
fAorICAgICAgICAgICAgY2hpbGQuZGVlcER1bXAob3V0cHV0LCBpbmRlbnQgKyAxKQorICAgICAg
ICB9CisgICAgZW5kCisKKyAgICBkZWYgZ2VuZXJhdGUgb3V0cHV0CisgICAgICAgIG91dHB1dC5w
dXRzICJjb25zdGV4cHIgSlNDOjpET01KSVQ6OkhlYXBSYW5nZSAje0BuYW1lfShKU0M6OkRPTUpJ
VDo6SGVhcFJhbmdlOjpDb25zdEV4cHIsICN7QHJhbmdlLmZpcnN0fSwgI3tAcmFuZ2UubGFzdH0p
OyIKKyAgICAgICAgQGNoaWxkcmVuLmVhY2gge3xjaGlsZHwKKyAgICAgICAgICAgIGNoaWxkLmdl
bmVyYXRlKG91dHB1dCkKKyAgICAgICAgfQorICAgIGVuZAorCitwcml2YXRlCisgICAgZGVmIHBy
aW50SW5kZW50IG91dHB1dCwgaW5kZW50CisgICAgICAgIGluZGVudC50aW1lcyB7CisgICAgICAg
ICAgICBvdXRwdXQucHJpbnQgIiAgICAiCisgICAgICAgIH0KKyAgICBlbmQKK2VuZAorCitoZWFk
ZXIgPSA8PC1FT1MKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
Ly8gQXV0by1nZW5lcmF0ZWQgZmlsZS4gRG8gbm90IG1vZGlmeS4KKworI3ByYWdtYSBvbmNlCisK
KyNpbmNsdWRlIDxkb21qaXQvRE9NSklUSGVhcFJhbmdlLmg+CisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsgbmFtZXNwYWNlIERPTUpJVCB7IG5hbWVzcGFjZSBBYnN0cmFjdEhlYXBSZXBvc2l0b3J5IHsK
K0VPUworCitmb290ZXIgPSA8PC1FT1MKK30gfSB9CitFT1MKKworJGlucHV0RmlsZU5hbWUgPSBB
UkdWLnNoaWZ0Ciskb3V0cHV0RmlsZU5hbWUgPSBBUkdWLnNoaWZ0CitGaWxlLm9wZW4oJG91dHB1
dEZpbGVOYW1lLCAidyIpIHt8b3V0cHV0fAorICAgIEZpbGUub3BlbigkaW5wdXRGaWxlTmFtZSwg
InJiIikge3xmaWxlfAorICAgICAgICB0cmVlID0gWUFNTDo6bG9hZChmaWxlLnJlYWQoKSkKKyAg
ICAgICAgaGVhcCA9IHRyZWUubWFwIHt8a2V5LCB2YWx1ZXwKKyAgICAgICAgICAgIEFic3RyYWN0
SGVhcC5uZXcoa2V5LCB2YWx1ZSkKKyAgICAgICAgfS5maXJzdAorICAgICAgICBoZWFwLmNvbXB1
dGUoMCkKKworICAgICAgICBvdXRwdXQucHJpbnQoaGVhZGVyKQorICAgICAgICBvdXRwdXQucHV0
cygiLyogRE9NSklUIEFic3RyYWN0IEhlYXAgVHJlZS4iKQorICAgICAgICBoZWFwLmRlZXBEdW1w
KG91dHB1dCwgMCkKKyAgICAgICAgb3V0cHV0LnB1dHMoIiovIikKKyAgICAgICAgaGVhcC5nZW5l
cmF0ZShvdXRwdXQpCisgICAgICAgIG91dHB1dC5wcmludChmb290ZXIpCisgICAgfQorfQpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmlu
ZGV4IDQ3YmRhYjQxNDhlMmViMmUwODQ0OWZkOGMyNzU5Y2M2ZGI4ZjNjZmEuLmFiN2I0NzI3YjVk
MDcxNTc2NmI3Zjg5OWJjMDYwOWQ5Y2Y3NmQzMTYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0No
YW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMiBAQAorMjAx
Ni0xMS0wMSAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKworICAgICAg
ICBbRE9NSklUXSBBZGQgRE9NSklUOjpTaWduYXR1cmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2Mjk4MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICoganMvZG9tL2RvbWppdC1hY2Nlc3Nvci1saWNtLmh0
bWw6CisgICAgICAgICoganMvZG9tL2RvbWppdC1mdW5jdGlvbi1lZmZlY3Qtc2hvdWxkLW92ZXJs
YXAtd2l0aC1jYWxsLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICoganMvZG9tL2RvbWpp
dC1mdW5jdGlvbi1lZmZlY3Qtc2hvdWxkLW92ZXJsYXAtd2l0aC1jYWxsLmh0bWw6IEFkZGVkLgor
ICAgICAgICAqIGpzL2RvbS9kb21qaXQtZnVuY3Rpb24tZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAg
ICAgICAgKiBqcy9kb20vZG9taml0LWZ1bmN0aW9uLWxpY20tZXhwZWN0ZWQudHh0OiBBZGRlZC4K
KyAgICAgICAgKiBqcy9kb20vZG9taml0LWZ1bmN0aW9uLWxpY20uaHRtbDogQ29waWVkIGZyb20g
TGF5b3V0VGVzdHMvanMvZG9tL2RvbWppdC1hY2Nlc3Nvci1saWNtLmh0bWwuCisgICAgICAgICog
anMvZG9tL2RvbWppdC1mdW5jdGlvbi10eXBlLWNvbnRyYWRpY3Rpb24tZXhwZWN0ZWQudHh0OiBB
ZGRlZC4KKyAgICAgICAgKiBqcy9kb20vZG9taml0LWZ1bmN0aW9uLXR5cGUtY29udHJhZGljdGlv
bi5odG1sOiBDb3BpZWQgZnJvbSBMYXlvdXRUZXN0cy9qcy9kb20vZG9taml0LWFjY2Vzc29yLWxp
Y20uaHRtbC4KKyAgICAgICAgKiBqcy9kb20vZG9taml0LWZ1bmN0aW9uLXR5cGUtZmFpbHVyZS1l
eHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGpzL2RvbS9kb21qaXQtZnVuY3Rpb24tdHlw
ZS1mYWlsdXJlLmh0bWw6IENvcGllZCBmcm9tIExheW91dFRlc3RzL2pzL2RvbS9kb21qaXQtYWNj
ZXNzb3ItbGljbS5odG1sLgorICAgICAgICAqIGpzL2RvbS9kb21qaXQtZnVuY3Rpb24uaHRtbDog
QWRkZWQuCisKIDIwMTYtMTEtMDEgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgog
CiAgICAgICAgIEluZGV4ZWREQiAyLjA6IFN1cHBvcnQgSURCSW5kZXggZ2V0QWxsL2dldEFsbEtl
eXMuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9kb20vZG9taml0LWFjY2Vzc29yLWxpY20u
aHRtbCBiL0xheW91dFRlc3RzL2pzL2RvbS9kb21qaXQtYWNjZXNzb3ItbGljbS5odG1sCmluZGV4
IGU1NjNlYmE4OWZmY2RhMjkxYjUyNGRjZGY3NTBlMmEzMDZhZTMyMDUuLjQwZDU1NjBkYTA1Mzlj
YmYwODRhOWUxZDFlZjNmZTNmMWRjMzU0NGQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2pzL2Rv
bS9kb21qaXQtYWNjZXNzb3ItbGljbS5odG1sCisrKyBiL0xheW91dFRlc3RzL2pzL2RvbS9kb21q
aXQtYWNjZXNzb3ItbGljbS5odG1sCkBAIC0xLDE0ICsxLDMgQEAKLTwhRE9DVFlQRSBIVE1MPgot
PGh0bWwgbGFuZz0iZW4iPgotPGhlYWQ+Ci08bWV0YSBjaGFyc2V0PSJVVEYtOCI+Ci08L2hlYWQ+
Ci08Ym9keT4KLTxzY3JpcHQ+Ci0KLTwvc2NyaXB0PgotPC9ib2R5PgotPC9odG1sPgogPCFET0NU
WVBFIGh0bWw+CiA8aHRtbD4KIDxoZWFkPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvZG9t
L2RvbWppdC1mdW5jdGlvbi1lZmZlY3Qtc2hvdWxkLW92ZXJsYXAtd2l0aC1jYWxsLWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL2pzL2RvbS9kb21qaXQtZnVuY3Rpb24tZWZmZWN0LXNob3VsZC1v
dmVybGFwLXdpdGgtY2FsbC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTFkYzE5NmEzMmUyODhj
MTJmNTE0NTYxY2ZjMjE0ZDI5ZWI5YzgxNwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2pzL2RvbS9kb21qaXQtZnVuY3Rpb24tZWZmZWN0LXNob3VsZC1vdmVybGFwLXdpdGgtY2FsbC1l
eHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMCBAQAorVGVzdCBmdW5jdGlvbiBjYWxscyBzaG91bGQg
b3ZlcmxhcCB3aXRoIGVmZmVjdHMgb2YgRE9NSklUIGZ1bmN0aW9ucy4KKworT24gc3VjY2Vzcywg
eW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRF
U1QgQ09NUExFVEUiLgorCisKK1BBU1MgdGVzdCgpIGlzIHRydWUKK1BBU1Mgc3VjY2Vzc2Z1bGx5
UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9qcy9kb20vZG9taml0LWZ1bmN0aW9uLWVmZmVjdC1zaG91bGQtb3ZlcmxhcC13aXRoLWNhbGwu
aHRtbCBiL0xheW91dFRlc3RzL2pzL2RvbS9kb21qaXQtZnVuY3Rpb24tZWZmZWN0LXNob3VsZC1v
dmVybGFwLXdpdGgtY2FsbC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI4Y2IzOTJiMjk0MWJiYjhkMzMxYTc5
MzMxZDU4YzNmYTU4MzA1ZTUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9qcy9kb20v
ZG9taml0LWZ1bmN0aW9uLWVmZmVjdC1zaG91bGQtb3ZlcmxhcC13aXRoLWNhbGwuaHRtbApAQCAt
MCwwICsxLDMzIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxi
b2R5PgorPGRpdiBpZD0idGFyZ2V0Ij48L2Rpdj4KKzwvZGl2PgorCis8c2NyaXB0PgorZGVzY3Jp
cHRpb24oJ1Rlc3QgZnVuY3Rpb24gY2FsbHMgc2hvdWxkIG92ZXJsYXAgd2l0aCBlZmZlY3RzIG9m
IERPTUpJVCBmdW5jdGlvbnMuJyk7CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIHZhciB0YXJn
ZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndGFyZ2V0Jyk7CisgICAgdGFyZ2V0LnNldEF0
dHJpYnV0ZSgiY29jb2EiLCAiMCIpOworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMWU0OyArK2kp
IHsKKyAgICAgICAgdmFyIHJldCA9IHRhcmdldC5nZXRBdHRyaWJ1dGUoImNvY29hIik7CisgICAg
ICAgIGlmIChyZXQgIT09IFN0cmluZyhpKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICAgICAgdGFyZ2V0LnNldEF0dHJpYnV0ZSgiY29jb2EiLCBTdHJpbmcoaSArIDEpKTsKKyAgICAg
ICAgdmFyIHJldCA9IHRhcmdldC5nZXRBdHRyaWJ1dGUoImNvY29hIik7CisgICAgICAgIGlmIChy
ZXQgPT09IFN0cmluZyhpKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAg
cmV0dXJuIHRydWU7Cit9CisKK3Nob3VsZEJlVHJ1ZShgdGVzdCgpYCk7Cis8L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwv
Ym9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL2RvbS9kb21qaXQtZnVu
Y3Rpb24tZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvanMvZG9tL2RvbWppdC1mdW5jdGlvbi1l
eHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDVlNTZlYmRjZDlmNmYxODZjNDdjZTc2OGMxNWMyMjVl
YmUyZDBjNwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2pzL2RvbS9kb21qaXQtZnVu
Y3Rpb24tZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTAgQEAKK1Rlc3QgRE9NSklUIGZ1bmN0aW9u
cyB3b3JrLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1l
c3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBBbGwgdGVzdHMg
cGFzc2VkLgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRF
CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL2RvbS9kb21qaXQtZnVuY3Rpb24tbGljbS1l
eHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9qcy9kb20vZG9taml0LWZ1bmN0aW9uLWxpY20tZXhw
ZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmYxM2MwMzMwNTk2NjJlNTU4YmM2ZmI5ZDczOWFiMzdlNzk2
MWM4ZmIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9qcy9kb20vZG9taml0LWZ1bmN0
aW9uLWxpY20tZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsOCBAQAorVGVzdCBET01KSVQgZnVuY3Rp
b24gd2lsbCBiZSBMSUNNLWVkLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMg
b2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKK1BBU1Mg
c3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9qcy9kb20vZG9taml0LWZ1bmN0aW9uLWxpY20uaHRtbCBiL0xheW91dFRl
c3RzL2pzL2RvbS9kb21qaXQtZnVuY3Rpb24tbGljbS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjVmMmUzOTlk
ZDM1OWUxYzRmY2I0ZGZkZTJiYWNlOWUxYTBkNDRkMzkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9qcy9kb20vZG9taml0LWZ1bmN0aW9uLWxpY20uaHRtbApAQCAtMCwwICsxLDM1IEBA
Cis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVz
b3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBp
ZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisKKzxkaXYg
aWQ9InBhcmVudE5vZGUiPgorPGRpdiBpZD0icHJldmlvdXNTaWJsaW5nIj48L2Rpdj48ZGl2IGlk
PSJ0YXJnZXQiPjxkaXYgaWQ9ImZpcnN0Q2hpbGQiPjwvZGl2PjxkaXYgaWQ9Imxhc3RDaGlsZCI+
PC9kaXY+PC9kaXY+PGRpdiBpZD0ibmV4dFNpYmxpbmciPjwvZGl2PgorPC9kaXY+CisKKzxzY3Jp
cHQ+CitkZXNjcmlwdGlvbignVGVzdCBET01KSVQgZnVuY3Rpb24gd2lsbCBiZSBMSUNNLWVkLicp
OworCitmdW5jdGlvbiB0ZXN0KCkgeworICAgIHZhciBkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCdkaXYnKTsKKyAgICB2YXIgcmV0ID0gImludmFsaWQiOworICAgIGRpdi5zZXRBdHRyaWJ1
dGUoImNvY29hIiwgIkNvY29hIik7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxZTQ7ICsraSkK
KyAgICAgICAgcmV0ID0gZGl2LmdldEF0dHJpYnV0ZSgiY29jb2EiKTsKKyAgICByZXR1cm4gcmV0
OworfQordmFyIHJlc3VsdDsKKyhmdW5jdGlvbiAoKSB7CisgICAgZm9yICh2YXIgaSA9IDA7IGkg
PCAxMDA7ICsraSkgeworICAgICAgICByZXN1bHQgPSB0ZXN0KCk7CisgICAgICAgIHNob3VsZEJl
KGByZXN1bHRgLCBgIkNvY29hImAsIHRydWUpOworICAgIH0KK30oKSk7Cis8L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwv
Ym9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL2RvbS9kb21qaXQtZnVu
Y3Rpb24tdHlwZS1jb250cmFkaWN0aW9uLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2pzL2Rv
bS9kb21qaXQtZnVuY3Rpb24tdHlwZS1jb250cmFkaWN0aW9uLWV4cGVjdGVkLnR4dApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4zZDY4NzdkNGE4MDA2ODhiMjE2NzdiZWZhZmZlZWZmZDhhYjBiNzk2Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvanMvZG9tL2RvbWppdC1mdW5jdGlvbi10eXBlLWNvbnRyYWRp
Y3Rpb24tZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsOCBAQAorVGVzdCBET01KSVQgZnVuY3Rpb24g
d2lsbCBjYXVzZSB0eXBlIGNvbnRyYWRpY3Rpb24gZ2l2aW5nIHVwLgorCitPbiBzdWNjZXNzLCB5
b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVT
VCBDT01QTEVURSIuCisKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBD
T01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9kb20vZG9taml0LWZ1bmN0aW9u
LXR5cGUtY29udHJhZGljdGlvbi5odG1sIGIvTGF5b3V0VGVzdHMvanMvZG9tL2RvbWppdC1mdW5j
dGlvbi10eXBlLWNvbnRyYWRpY3Rpb24uaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44NGRjNWI2NzY5NDE4ZTk2
NTU1YmFiODM4N2MzMDYwMzRhZjVjMGMwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
anMvZG9tL2RvbWppdC1mdW5jdGlvbi10eXBlLWNvbnRyYWRpY3Rpb24uaHRtbApAQCAtMCwwICsx
LDM1IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4v
Li4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5Pgor
PGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisK
KzxkaXYgaWQ9InBhcmVudE5vZGUiPgorPGRpdiBpZD0icHJldmlvdXNTaWJsaW5nIj48L2Rpdj48
ZGl2IGlkPSJ0YXJnZXQiPjxkaXYgaWQ9ImZpcnN0Q2hpbGQiPjwvZGl2PjxkaXYgaWQ9Imxhc3RD
aGlsZCI+PC9kaXY+PC9kaXY+PGRpdiBpZD0ibmV4dFNpYmxpbmciPjwvZGl2PgorPC9kaXY+CisK
KzxzY3JpcHQ+CitkZXNjcmlwdGlvbignVGVzdCBET01KSVQgZnVuY3Rpb24gd2lsbCBjYXVzZSB0
eXBlIGNvbnRyYWRpY3Rpb24gZ2l2aW5nIHVwLicpOworCit2YXIgZGl2ID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudCgnZGl2Jyk7CitkaXYuc2V0QXR0cmlidXRlKCJjb2NvYSIsICJDb2NvYSIpOwor
ZnVuY3Rpb24gdGVzdChkaXYpIHsKKyAgICB2YXIgcmV0ID0gImludmFsaWQiOworICAgIGZvciAo
dmFyIGkgPSAwOyBpIDwgMWU0OyArK2kpCisgICAgICAgIHJldCA9IGRpdi5nZXRBdHRyaWJ1dGUo
MjAwKTsKKyAgICByZXR1cm4gcmV0OworfQordmFyIHJlc3VsdDsKKyhmdW5jdGlvbiAoKSB7Cisg
ICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxMDA7ICsraSkgeworICAgICAgICByZXN1bHQgPSB0ZXN0
KGRpdik7CisgICAgICAgIHNob3VsZEJlKGByZXN1bHRgLCBgbnVsbGAsIHRydWUpOworICAgIH0K
K30oKSk7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1w
b3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2pzL2RvbS9kb21qaXQtZnVuY3Rpb24tdHlwZS1mYWlsdXJlLWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL2pzL2RvbS9kb21qaXQtZnVuY3Rpb24tdHlwZS1mYWlsdXJlLWV4cGVjdGVkLnR4
dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4yYzEwMmIzNzZiZjgyMzJiNDJiZDFhM2NlNDFkZTE3NzFhMjdiNmM1Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMvZG9tL2RvbWppdC1mdW5jdGlvbi10eXBl
LWZhaWx1cmUtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsOCBAQAorVGVzdCBET01KSVQgZnVuY3Rp
b24gd2lsbCBjYXVzZSBCYWRUeXBlIE9TUiBleGl0cy4KKworT24gc3VjY2VzcywgeW91IHdpbGwg
c2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExF
VEUiLgorCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUK
KwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvZG9tL2RvbWppdC1mdW5jdGlvbi10eXBlLWZh
aWx1cmUuaHRtbCBiL0xheW91dFRlc3RzL2pzL2RvbS9kb21qaXQtZnVuY3Rpb24tdHlwZS1mYWls
dXJlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNmI3NjYxNDE4N2VkYTg3ZGFjMjZjMjBhNmUzMTIyY2YwNjU0
YTgxNgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2pzL2RvbS9kb21qaXQtZnVuY3Rp
b24tdHlwZS1mYWlsdXJlLmh0bWwKQEAgLTAsMCArMSwzOSBAQAorPCFET0NUWVBFIGh0bWw+Cis8
aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5q
cyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rp
dj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorCis8ZGl2IGlkPSJwYXJlbnROb2RlIj4KKzxk
aXYgaWQ9InByZXZpb3VzU2libGluZyI+PC9kaXY+PGRpdiBpZD0idGFyZ2V0Ij48ZGl2IGlkPSJm
aXJzdENoaWxkIj48L2Rpdj48ZGl2IGlkPSJsYXN0Q2hpbGQiPjwvZGl2PjwvZGl2PjxkaXYgaWQ9
Im5leHRTaWJsaW5nIj48L2Rpdj4KKzwvZGl2PgorCis8c2NyaXB0PgorZGVzY3JpcHRpb24oJ1Rl
c3QgRE9NSklUIGZ1bmN0aW9uIHdpbGwgY2F1c2UgQmFkVHlwZSBPU1IgZXhpdHMuJyk7CisKK3Zh
ciBkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKK2Rpdi5zZXRBdHRyaWJ1dGUo
ImNvY29hIiwgIkNvY29hIik7CitmdW5jdGlvbiB0ZXN0KGRpdiwgbmFtZSkgeworICAgIHZhciBy
ZXQgPSAiaW52YWxpZCI7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxZTQ7ICsraSkKKyAgICAg
ICAgcmV0ID0gZGl2LmdldEF0dHJpYnV0ZShuYW1lKTsKKyAgICByZXR1cm4gcmV0OworfQordmFy
IHJlc3VsdDsKKyhmdW5jdGlvbiAoKSB7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxMDA7ICsr
aSkgeworICAgICAgICByZXN1bHQgPSB0ZXN0KGRpdiwgJ2NvY29hJyk7CisgICAgICAgIHNob3Vs
ZEJlKGByZXN1bHRgLCBgIkNvY29hImAsIHRydWUpOworICAgIH0KKyAgICBmb3IgKHZhciBpID0g
MDsgaSA8IDEwMDsgKytpKSB7CisgICAgICAgIHJlc3VsdCA9IHRlc3QoZGl2LCA0MDApOworICAg
ICAgICBzaG91bGRCZShgcmVzdWx0YCwgYG51bGxgLCB0cnVlKTsKKyAgICB9Cit9KCkpOworPC9z
Y3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9z
Y3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9kb20v
ZG9taml0LWZ1bmN0aW9uLmh0bWwgYi9MYXlvdXRUZXN0cy9qcy9kb20vZG9taml0LWZ1bmN0aW9u
Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uOTFlYThhNTk5ZDg5NjVkZTVhMDNhODU0ZDQ5NDNkZTViOWFjM2Q2
NAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2pzL2RvbS9kb21qaXQtZnVuY3Rpb24u
aHRtbApAQCAtMCwwICsxLDU4IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwv
aGVhZD4KKzxib2R5PgorPGRpdiBpZD0idGFyZ2V0IiBjb2NvYT0iY29jb2EiPjxkaXYgaWQ9ImZp
cnN0Q2hpbGQiPjwvZGl2PjxkaXYgaWQ9Imxhc3RDaGlsZCI+PC9kaXY+PC9kaXY+Cis8L2Rpdj4K
KworPHNjcmlwdD4KK2Rlc2NyaXB0aW9uKCdUZXN0IERPTUpJVCBmdW5jdGlvbnMgd29yay4nKTsK
K3ZhciBkaXY7CisoZnVuY3Rpb24gKCkgeworICAgIGRpdiA9IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCd0YXJnZXQnKTsKKworICAgIGZ1bmN0aW9uIGEoKQorICAgIHsKKyAgICAgICAgcmV0dXJu
IGRpdi5nZXRBdHRyaWJ1dGUoJ2NvY29hJykgPT09ICdjb2NvYSc7CisgICAgfQorCisgICAgZnVu
Y3Rpb24gYigpCisgICAgeworICAgICAgICByZXR1cm4gZGl2LmdldEF0dHJpYnV0ZU5vZGUoJ2Nv
Y29hJykubm9kZVR5cGUgPT09IE5vZGUuQVRUUklCVVRFX05PREU7CisgICAgfQorCisgICAgZnVu
Y3Rpb24gYygpCisgICAgeworICAgICAgICByZXR1cm4gZGl2LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCdkaXYnKS5sZW5ndGggPT09IDI7CisgICAgfQorCisgICAgZnVuY3Rpb24gZCgpCisgICAgewor
ICAgICAgICByZXR1cm4gZGl2Lmhhc0F0dHJpYnV0ZSgnY29jb2EnKSA9PT0gdHJ1ZTsKKyAgICB9
CisKKyAgICBmdW5jdGlvbiBtYWluKCkKKyAgICB7CisgICAgICAgIGlmICghYSgpKQorICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBpZiAoIWIoKSkKKyAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICAgICAgaWYgKCFjKCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgICAgIGlmICghZCgpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1
cm4gdHJ1ZTsKKyAgICB9CisKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IDFlNDsgKytpKSB7Cisg
ICAgICAgIGlmICghbWFpbigpKQorICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJlcnJvciIp
OworICAgIH0KKyAgICB0ZXN0UGFzc2VkKCJBbGwgdGVzdHMgcGFzc2VkLiIpOworfSgpKTsKKzwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwv
c2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>293647</attachid>
            <date>2016-11-02 00:37:25 -0700</date>
            <delta_ts>2016-11-02 11:29:39 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-162980-20161102163326.patch</filename>
            <type>text/plain</type>
            <size>178984</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA4MjcwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBk
ZWFmOGMwYmI4YTZkOGM5ZjEwYmE4MDllY2VmZTJkOWI0MDE2ZDljLi4xMzk1ZTQ5NWEzZjY0NmI0
MTEzYTBiMDY4ZTViZDViMjcxZGRmZTNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMzQgQEAKKzIwMTYtMTEtMDIgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFp
bC5jb20+CisKKyAgICAgICAgW0RPTUpJVF0gQWRkIERPTUpJVDo6U2lnbmF0dXJlCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjI5ODAKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGludHJv
ZHVjZXMgYSBuZXcgbWVjaGFuaXNtIGNhbGxlZCBET01KSVQ6OlNpZ25hdHVyZS4gV2UgY2FuIGFu
bm90YXRlIHRoZSBmdW5jdGlvbiB3aXRoIERPTUpJVDo6U2lnbmF0dXJlLgorICAgICAgICBET01K
SVQ6OlNpZ25hdHVyZSBoYXMgdHlwZSBpbmZvcm1hdGlvbiBvZiB0aGF0IGZ1bmN0aW9uLiBBbmQg
aXQgYWxzbyBtYWludGFpbnMgdGhlIGVmZmVjdCBvZiB0aGUgZnVuY3Rpb24gYW5kIHRoZQorICAg
ICAgICBwb2ludGVyIHRvIHRoZSB1bnNhZmUgZnVuY3Rpb24uIFRoZSB1bnNhZmUgZnVuY3Rpb24g
bWVhbnMgdGhlIGZ1bmN0aW9uIHdpdGhvdXQgdHlwZSBhbmQgYXJndW1lbnQgY291bnQgY2hlY2tz
LgorICAgICAgICBCeSB1c2luZyB0aGVzZSBpbmZvcm1hdGlvbiwgd2UgY2FuIHNlcGFyYXRlIHR5
cGUgYW5kIGFyZ3VtZW50IGNvdW50IGNoZWNrcyBmcm9tIHRoZSBmdW5jdGlvbi4gQW5kIHdlIGNh
biBlbWl0CisgICAgICAgIHRoZXNlIHRoaW5ncyBhcyBERkcgY2hlY2tzIGFuZCBjb252ZXJ0IHRo
ZSBmdW5jdGlvbiBjYWxsIGl0c2VsZiB0byBDYWxsRE9NIG5vZGUuIENhbGxET00gbm9kZSBjYW4g
Y2FsbCB0aGUgdW5zYWZlCisgICAgICAgIGZ1bmN0aW9uIGRpcmVjdGx5IHdpdGhvdXQgYW55IGNo
ZWNrcy4gRnVydGhlcm1vcmUsIHRoaXMgQ2FsbERPTSBub2RlIGNhbiByZXByZXNlbnQgaXRzIG93
biBjbG9iYmVyaXppbmcgcnVsZXMgYmFzZWQKKyAgICAgICAgb24gRE9NSklUOjpFZmZlY3QgbWFp
bnRhaW5lZCBieSBET01KSVQ6OlNpZ25hdHVyZS4gSXQgYWxsb3dzIHVzIHRvIG1ha2Ugb3BhcXVl
IENhbGwgbm9kZSB0byBhIENhbGxET00gbm9kZSB0aGF0CisgICAgICAgIG1lcmVseSByZWFkcyBz
b21lIHBhcnQgb2YgaGVhcC4gVGhlc2UgY2hhbmdlcyAoMSkgY2FuIGRyb3AgZHVwbGljYXRlIHR5
cGUgY2hlY2tzIGluIERGRywgKDIpIG9mZmVyIGFiaWxpdHkgdG8gbW92ZQorICAgICAgICBDYWxs
RE9NIG5vZGUgdG8gc29tZXdoZXJlLCBhbmQgKDMpIHRyYWNrIG1vcmUgZGV0YWlsZWQgaGVhcCBy
ZWFkcyBhbmQgd3JpdGVzIG9mIENhbGxET00gbm9kZXMuCisKKyAgICAgICAgV2UgZmlyc3QgZW1p
dCBDYWxsIG5vZGUgd2l0aCBET01KSVQ6OlNpZ25hdHVyZSBpbiBERkdCeXRlQ29kZVBhcnNlci4g
QW5kIGluIHRoZSBmaXh1cCBwaGFzZSwgd2UgYXR0ZW1wdCB0byBsb3dlcgorICAgICAgICBDYWxs
IG5vZGUgdG8gQ2FsbERPTSBub2RlIHdpdGggY2hlY2tzICYgZWRnZSBmaWx0ZXJzLiBUaGlzIGlz
IGJlY2F1c2Ugd2UgZG8gbm90IGtub3cgdGhlIHR5cGUgcHJlZGljdGlvbnMgaW4KKyAgICAgICAg
REZHQnl0ZUNvZGVQYXJzZXIgcGhhc2UuIElmIHdlIGFsd2F5cyBlbWl0IENhbGxET00gbm9kZSBp
biBERkdCeXRlQ29kZVBhcnNlciwgaWYgd2UgZXZhbHVhdGUgYGRpdi5nZXRBdHRyaWJ1dGUodHJ1
ZSlgCisgICAgICAgIHRoaW5neSwgdGhlIFVuY291bnRhYmxlIE9TUiBleGl0cyByZXBlYXRlZGx5
IGhhcHBlbiBiZWNhdXNlIEFJIGZpZ3VyZXMgb3V0IHRoZSBhYnN0cmFjdCB2YWx1ZSBpcyBjbGVh
cmVkLgorCisgICAgICAgIEN1cnJlbnRseSwgRE9NSklUIHNpZ25hdHVyZSBvbmx5IGFsbG93cyB0
aGUgdHlwZXMgdGhhdCBjYW4gcmVzaWRlIGluIEdQUi4gVGhpcyBpcyBiZWNhdXNlIHRoZSB0eXBl
cyBvZiB0aGUgdW5zYWZlCisgICAgICAgIGZ1bmN0aW9uIGFyZ3VtZW50cyBhcmUgcmVwcmVzZW50
ZWQgYXMgdGhlIHNlcXVlbmNlIG9mIHZvaWQqLiBJbiB0aGUgZnV0dXJlLCB3ZSB3aWxsIGV4dGVu
ZCB0byBhY2NlcHQgb3RoZXIgdHlwZXMgbGlrZQorICAgICAgICBmbG9hdCwgZG91YmxlIGV0Yy4K
KworICAgICAgICBXZSBhbm5vdGF0ZSBzZXZlcmFsIGZ1bmN0aW9ucyBpbiBFbGVtZW50LiBJbiBw
YXJ0aWN1bGFyLCB3ZSBhbm5vdGF0ZSBFbGVtZW50OjpnZXRBdHRyaWJ1dGUuIFRoaXMgYWxsb3dz
IHVzIHRvIHBlcmZvcm0KKyAgICAgICAgTElDTSBpbiBEcm9tYWVvIGRvbS1hdHRyIHRlc3QuIElu
IHRoZSBEcm9tYWVvIGRvbS1hdHRyIGdldEF0dHJpYnV0ZSB0ZXN0LCB3ZSBjYW4gc2VlIDMyeCBp
bXByb3ZlbWVudC4gKDEzNDk3NC44IHYucy4gNDIwMy40KQorCisgICAgICAgICogSmF2YVNjcmlw
dENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBieXRlY29kZS9DYWxs
VmFyaWFudC5oOgorICAgICAgICAoSlNDOjpDYWxsVmFyaWFudDo6ZnVuY3Rpb25FeGVjdXRhYmxl
KToKKyAgICAgICAgKEpTQzo6Q2FsbFZhcmlhbnQ6Om5hdGl2ZUV4ZWN1dGFibGUpOgorICAgICAg
ICAoSlNDOjpDYWxsVmFyaWFudDo6c2lnbmF0dXJlRm9yKToKKyAgICAgICAgKiBieXRlY29kZS9T
cGVjdWxhdGVkVHlwZS5oOgorICAgICAgICAoSlNDOjppc05vdFN0cmluZ1NwZWN1bGF0aW9uKToK
KyAgICAgICAgKEpTQzo6aXNOb3RJbnQzMlNwZWN1bGF0aW9uKToKKyAgICAgICAgKEpTQzo6aXNO
b3RCb29sZWFuU3BlY3VsYXRpb24pOgorICAgICAgICAqIGRmZy9ERkdBYnN0cmFjdEludGVycHJl
dGVySW5saW5lcy5oOgorICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0SW50ZXJwcmV0ZXI8QWJz
dHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyk6CisgICAgICAgICogZGZnL0RGR0J5dGVD
b2RlUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6YWRkQ2Fs
bCk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUNhbGwpOgorICAg
ICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjphdHRlbXB0VG9JbmxpbmVDYWxsKToKKyAg
ICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW5saW5pbmcpOgorICAgICAg
ICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVET01KSVRDYWxsKToKKyAgICAgICAg
KEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayk6CisgICAgICAgICogZGZnL0RG
R0Nsb2JiZXJpemUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpjbG9iYmVyaXplKToKKyAgICAgICAg
KiBkZmcvREZHRG9lc0dDLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpkb2VzR0MpOgorICAgICAg
ICAqIGRmZy9ERkdGaXh1cFBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpGaXh1cFBoYXNl
OjpmaXh1cE5vZGUpOgorICAgICAgICAoSlNDOjpERkc6OkZpeHVwUGhhc2U6OmF0dGVtcHRUb01h
a2VDYWxsRE9NKToKKyAgICAgICAgKEpTQzo6REZHOjpGaXh1cFBoYXNlOjpmaXh1cENoZWNrRE9N
KToKKyAgICAgICAgKEpTQzo6REZHOjpGaXh1cFBoYXNlOjpmaXh1cENhbGxET00pOgorICAgICAg
ICAqIGRmZy9ERkdOb2RlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpjb252ZXJ0VG9D
YWxsRE9NKToKKyAgICAgICAgKiBkZmcvREZHTm9kZS5oOgorICAgICAgICAoSlNDOjpERkc6Ok5v
ZGU6Omhhc0hlYXBQcmVkaWN0aW9uKToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpzaG91bGRT
cGVjdWxhdGVOb3RJbnQzMik6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6c2hvdWxkU3BlY3Vs
YXRlTm90Qm9vbGVhbik6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6c2hvdWxkU3BlY3VsYXRl
Tm90U3RyaW5nKToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpoYXNTaWduYXR1cmUpOgorICAg
ICAgICAoSlNDOjpERkc6Ok5vZGU6OnNpZ25hdHVyZSk6CisgICAgICAgICogZGZnL0RGR05vZGVU
eXBlLmg6CisgICAgICAgICogZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcDoK
KyAgICAgICAgKiBkZmcvREZHU2FmZVRvRXhlY3V0ZS5oOgorICAgICAgICAoSlNDOjpERkc6OnNh
ZmVUb0V4ZWN1dGUpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHA6CisgICAg
ICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVDYWxsRE9NKToKKyAgICAgICAg
KiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuaDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2
ZUpJVDo6Y2FsbE9wZXJhdGlvbik6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJf
NjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToKKyAg
ICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGRvbWppdC9ET01KSVRFZmZlY3Qu
aDoKKyAgICAgICAgKEpTQzo6RE9NSklUOjpFZmZlY3Q6OkVmZmVjdCk6CisgICAgICAgIChKU0M6
OkRPTUpJVDo6RWZmZWN0Ojpmb3JXcml0ZSk6CisgICAgICAgIChKU0M6OkRPTUpJVDo6RWZmZWN0
Ojpmb3JSZWFkKToKKyAgICAgICAgKEpTQzo6RE9NSklUOjpFZmZlY3Q6OmZvclJlYWRXcml0ZSk6
CisgICAgICAgIChKU0M6OkRPTUpJVDo6RWZmZWN0Ojpmb3JQdXJlKToKKyAgICAgICAgKEpTQzo6
RE9NSklUOjpFZmZlY3Q6OmZvckRlZik6CisgICAgICAgIChKU0M6OkRPTUpJVDo6RWZmZWN0Ojpt
dXN0R2VuZXJhdGUpOgorICAgICAgICBJbiBjbGFuZywgd2UgY2Fubm90IG1ha2UgdGhpcyBFZmZl
Y3QgY29uc3RydWN0b3IgY29uc3RleHByIGlmIHdlIHVzZSBPcHRpb25hbDxIZWFwUmFuZ2U+Lgor
ICAgICAgICBTbyB3ZSB1c2UgSGVhcFJhbmdlOjp0b3AoKSBmb3IgTnVsbG9wdCBkZWYgbm93Lgor
CisgICAgICAgICogZG9taml0L0RPTUpJVEhlYXBSYW5nZS5oOgorICAgICAgICAoSlNDOjpET01K
SVQ6OkhlYXBSYW5nZTo6ZnJvbVJhdyk6CisgICAgICAgIChKU0M6OkRPTUpJVDo6SGVhcFJhbmdl
OjpvcGVyYXRvciBib29sKToKKyAgICAgICAgKEpTQzo6RE9NSklUOjpIZWFwUmFuZ2U6Om9wZXJh
dG9yPT0pOgorICAgICAgICAoSlNDOjpET01KSVQ6OkhlYXBSYW5nZTo6b3BlcmF0b3IhPSk6Cisg
ICAgICAgIChKU0M6OkRPTUpJVDo6SGVhcFJhbmdlOjpmcm9tQ29uc3RhbnQpOgorICAgICAgICAq
IGRvbWppdC9ET01KSVRTaWduYXR1cmUuaDogQ29waWVkIGZyb20gU291cmNlL0phdmFTY3JpcHRD
b3JlL2RvbWppdC9ET01KSVRFZmZlY3QuaC4KKyAgICAgICAgKEpTQzo6RE9NSklUOjpTaWduYXR1
cmU6OlNpZ25hdHVyZSk6CisgICAgICAgIChKU0M6OkRPTUpJVDo6U2lnbmF0dXJlOjphcmd1bWVu
dENvdW50KToKKyAgICAgICAgKEpTQzo6RE9NSklUOjpTaWduYXR1cmU6OmNoZWNrRE9NKToKKyAg
ICAgICAgKiBmdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpjYW5D
b21waWxlKToKKyAgICAgICAgKiBmdGwvRlRMTG93ZXJERkdUb0IzLmNwcDoKKyAgICAgICAgKEpT
Qzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZU5vZGUpOgorICAgICAgICAoSlNDOjpG
VEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlQ2FsbERPTSk6CisgICAgICAgICogaml0L0pJ
VE9wZXJhdGlvbnMuaDoKKyAgICAgICAgKiBqaXQvSklUVGh1bmtzLmNwcDoKKyAgICAgICAgKEpT
Qzo6SklUVGh1bmtzOjpob3N0RnVuY3Rpb25TdHViKToKKyAgICAgICAgKiBqaXQvSklUVGh1bmtz
Lmg6CisgICAgICAgICogcnVudGltZS9KU0JvdW5kRnVuY3Rpb24uY3BwOgorICAgICAgICAoSlND
OjpKU0JvdW5kRnVuY3Rpb246OmNyZWF0ZSk6CisgICAgICAgICogcnVudGltZS9KU0NlbGwuaDoK
KyAgICAgICAgKiBydW50aW1lL0pTRnVuY3Rpb24uY3BwOgorICAgICAgICAoSlNDOjpKU0Z1bmN0
aW9uOjpjcmVhdGUpOgorICAgICAgICAqIHJ1bnRpbWUvSlNGdW5jdGlvbi5oOgorICAgICAgICAq
IHJ1bnRpbWUvSlNOYXRpdmVTdGRGdW5jdGlvbi5jcHA6CisgICAgICAgIChKU0M6OkpTTmF0aXZl
U3RkRnVuY3Rpb246OmNyZWF0ZSk6CisgICAgICAgICogcnVudGltZS9KU09iamVjdC5jcHA6Cisg
ICAgICAgIChKU0M6OkpTT2JqZWN0OjpwdXREaXJlY3ROYXRpdmVGdW5jdGlvbik6CisgICAgICAg
ICogcnVudGltZS9KU09iamVjdC5oOgorICAgICAgICAqIHJ1bnRpbWUvTG9va3VwLmg6CisgICAg
ICAgIChKU0M6Okhhc2hUYWJsZVZhbHVlOjpmdW5jdGlvbkxlbmd0aCk6CisgICAgICAgIChKU0M6
Okhhc2hUYWJsZVZhbHVlOjpzaWduYXR1cmUpOgorICAgICAgICAoSlNDOjpyZWlmeVN0YXRpY1By
b3BlcnR5KToKKyAgICAgICAgKiBydW50aW1lL05hdGl2ZUV4ZWN1dGFibGUuY3BwOgorICAgICAg
ICAoSlNDOjpOYXRpdmVFeGVjdXRhYmxlOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpOYXRpdmVF
eGVjdXRhYmxlOjpOYXRpdmVFeGVjdXRhYmxlKToKKyAgICAgICAgKiBydW50aW1lL05hdGl2ZUV4
ZWN1dGFibGUuaDoKKyAgICAgICAgKiBydW50aW1lL1Byb3BlcnR5U2xvdC5oOgorICAgICAgICAq
IHJ1bnRpbWUvVk0uY3BwOgorICAgICAgICAoSlNDOjpWTTo6Z2V0SG9zdEZ1bmN0aW9uKToKKyAg
ICAgICAgKiBydW50aW1lL1ZNLmg6CisKIDIwMTYtMTEtMDEgIFJ5b3N1a2UgTml3YSAgPHJuaXdh
QHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmVtb3ZlIENVU1RPTV9FTEVNRU5UUyBidWlsZCBmbGFn
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cKaW5kZXggOWFlZGU3NjM2MWNkNDU1YjAxNzBkMjIxOTVjNDkyNWNiZGU1NDNiMC4u
Y2NjMjQ5NWVlYjZmNzdhOGY2YjlmODJlYjc3NWE4N2QwMTlhOTlhOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDk4IEBACisyMDE2LTExLTAyICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21h
aWwuY29tPgorCisgICAgICAgIFtET01KSVRdIEFkZCBET01KSVQ6OlNpZ25hdHVyZQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYyOTgwCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2UgaW50cm9kdWNlIERP
TUpJVDo6U2lnbmF0dXJlLiBUaGlzIHNpZ25hdHVyZSBvYmplY3QgaXMgYXV0b21hdGljYWxseSBn
ZW5lcmF0ZWQgYnkgSURMIGNvZGUgZ2VuZXJhdG9yLgorICAgICAgICBJdCBob2xkcyAoMSkgdHlw
ZXMsICgyKSBwb2ludGVyIHRvIHRoZSB1bnNhZmUgZnVuY3Rpb24gKHRoZSBmdW5jdGlvbiB3aXRo
b3V0IGNoZWNrcyksIGFuZCAoMykgdGhlIGVmZmVjdAorICAgICAgICBvZiB0aGUgZnVuY3Rpb24u
IFdlIHVzZSBjb25zdGV4cHIgdG8gaW5pdGlhbGl6ZSBET01KSVQ6OlNpZ25hdHVyZSB3aXRob3V0
IGludm9raW5nIGdsb2JhbCBjb25zdHJ1Y3RvcnMuCisgICAgICAgIFRodXMgdGhlIGNvbnRlbnQg
aXMgZW1iZWRkZWQgaW50byB0aGUgYmluYXJ5IGFzIHRoZSBjb25zdGFudCB2YWx1ZXMuCisKKyAg
ICAgICAgV2UgYWxzbyBjbGVhbiB1cCB0aGUgSURMIGNvZGUgZ2VuZXJhdG9yIHJlbGF0ZWQgdG8g
RE9NSklUIHBhcnQuIEluc3RlYWQgb2Ygc3dpdGNoaW5nIHRoaW5ncyBpbnNpZGUgSURMCisgICAg
ICAgIGNvZGUgZ2VuZXJhdG9yLCB3ZSB1c2UgQysrIHRlbXBsYXRlIHRvIGRpc3BhdGNoIHRoaW5n
cyBhdCBjb21waWxlIHRpbWUuIFRoaXMgdGVtcGxhdGUgbWV0YSBwcm9ncmFtbWluZworICAgICAg
ICBpcyBoaWdobHkgdXRpbGl6ZWQgaW4gSURMIHRoZXNlIGRheXMuCisKKyAgICAgICAgVG8gbWFr
ZSBET01KSVQ6OlNpZ25hdHVyZSBjb25zdGV4cHIsIHdlIGFsc28gbmVlZCB0byBkZWZpbmUgRE9N
SklUIGFic3RyYWN0IGhlYXAgdGhpbmdzIGluIHRoZSBidWlsZCB0aW1lLgorICAgICAgICBUbyBk
byBzbywgd2UgaW50cm9kdWNlIGEgdGlueSBSdWJ5IHNjcmlwdCB0byBjYWxjdWxhdGUgdGhlIHJh
bmdlIG9mIGFic3RyYWN0IGhlYXBzLiBXZSBjYW4gb2ZmZXIgdGhlIGFic3RyYWN0CisgICAgICAg
IGhlYXAgdHJlZSBhcyBZQU1MIGZvcm1hdCBhbmQgdGhlIHNjcmlwdCB3aWxsIHByb2R1Y2UgYSBD
KysgaGVhZGVyIGhvbGRpbmcgdGhlIGNhbGN1bGF0ZWQgYWJzdHJhY3QgaGVhcCByYW5nZXMKKwor
ICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLm1ha2U6
CisgICAgICAgICogRm9yd2FyZGluZ0hlYWRlcnMvYnl0ZWNvZGUvU3BlY3VsYXRlZFR5cGUuaDog
UmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL2RvbWppdC9ET01KSVRBYnN0cmFjdEhlYXBSZXBv
c2l0b3J5LmguCisgICAgICAgICogRm9yd2FyZGluZ0hlYWRlcnMvZG9taml0L0RPTUpJVFNpZ25h
dHVyZS5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvZG9taml0L0RPTUpJVEFic3RyYWN0
SGVhcFJlcG9zaXRvcnkuY3BwLgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvajoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5oOgorICAg
ICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtOgorICAgICAgICAoR2Vu
ZXJhdGVIZWFkZXIpOgorICAgICAgICAoR2VuZXJhdGVQcm9wZXJ0aWVzSGFzaFRhYmxlKToKKyAg
ICAgICAgKEdldFVuc2FmZUFyZ3VtZW50VHlwZSk6CisgICAgICAgIChHZXRBcmd1bWVudFR5cGVG
aWx0ZXIpOgorICAgICAgICAoR2V0UmVzdWx0VHlwZUZpbHRlcik6CisgICAgICAgIChHZW5lcmF0
ZUltcGxlbWVudGF0aW9uKToKKyAgICAgICAgKFVuc2FmZVRvTmF0aXZlKToKKyAgICAgICAgKEdl
bmVyYXRlSGFzaFRhYmxlVmFsdWVBcnJheSk6CisgICAgICAgIChDb21wdXRlRnVuY3Rpb25TcGVj
aWFsKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0lETEF0dHJpYnV0ZXMudHh0OgorICAg
ICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RET01KSVQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6QmluZGluZ0NhbGxlcjxKU1Rlc3RET01KSVQ+OjpjYXN0Rm9yT3BlcmF0aW9u
KToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RET01KSVRBbnlBdHRyRE9NSklUOjpUZXN0RE9NSklU
QW55QXR0ckRPTUpJVCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0RE9NSklUQm9vbGVhbkF0dHJE
T01KSVQ6OlRlc3RET01KSVRCb29sZWFuQXR0ckRPTUpJVCk6CisgICAgICAgIChXZWJDb3JlOjpU
ZXN0RE9NSklUQnl0ZUF0dHJET01KSVQ6OlRlc3RET01KSVRCeXRlQXR0ckRPTUpJVCk6CisgICAg
ICAgIChXZWJDb3JlOjpUZXN0RE9NSklUT2N0ZXRBdHRyRE9NSklUOjpUZXN0RE9NSklUT2N0ZXRB
dHRyRE9NSklUKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RET01KSVRTaG9ydEF0dHJET01KSVQ6
OlRlc3RET01KSVRTaG9ydEF0dHJET01KSVQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdERPTUpJ
VFVuc2lnbmVkU2hvcnRBdHRyRE9NSklUOjpUZXN0RE9NSklUVW5zaWduZWRTaG9ydEF0dHJET01K
SVQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdERPTUpJVExvbmdBdHRyRE9NSklUOjpUZXN0RE9N
SklUTG9uZ0F0dHJET01KSVQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdERPTUpJVFVuc2lnbmVk
TG9uZ0F0dHJET01KSVQ6OlRlc3RET01KSVRVbnNpZ25lZExvbmdBdHRyRE9NSklUKToKKyAgICAg
ICAgKFdlYkNvcmU6OlRlc3RET01KSVRMb25nTG9uZ0F0dHJET01KSVQ6OlRlc3RET01KSVRMb25n
TG9uZ0F0dHJET01KSVQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdERPTUpJVFVuc2lnbmVkTG9u
Z0xvbmdBdHRyRE9NSklUOjpUZXN0RE9NSklUVW5zaWduZWRMb25nTG9uZ0F0dHJET01KSVQpOgor
ICAgICAgICAoV2ViQ29yZTo6VGVzdERPTUpJVEZsb2F0QXR0ckRPTUpJVDo6VGVzdERPTUpJVEZs
b2F0QXR0ckRPTUpJVCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0RE9NSklUVW5yZXN0cmljdGVk
RmxvYXRBdHRyRE9NSklUOjpUZXN0RE9NSklUVW5yZXN0cmljdGVkRmxvYXRBdHRyRE9NSklUKToK
KyAgICAgICAgKFdlYkNvcmU6OlRlc3RET01KSVREb3VibGVBdHRyRE9NSklUOjpUZXN0RE9NSklU
RG91YmxlQXR0ckRPTUpJVCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0RE9NSklUVW5yZXN0cmlj
dGVkRG91YmxlQXR0ckRPTUpJVDo6VGVzdERPTUpJVFVucmVzdHJpY3RlZERvdWJsZUF0dHJET01K
SVQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdERPTUpJVERvbVN0cmluZ0F0dHJET01KSVQ6OlRl
c3RET01KSVREb21TdHJpbmdBdHRyRE9NSklUKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RET01K
SVRCeXRlU3RyaW5nQXR0ckRPTUpJVDo6VGVzdERPTUpJVEJ5dGVTdHJpbmdBdHRyRE9NSklUKToK
KyAgICAgICAgKFdlYkNvcmU6OlRlc3RET01KSVRVc3ZTdHJpbmdBdHRyRE9NSklUOjpUZXN0RE9N
SklUVXN2U3RyaW5nQXR0ckRPTUpJVCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0RE9NSklUTm9k
ZUF0dHJET01KSVQ6OlRlc3RET01KSVROb2RlQXR0ckRPTUpJVCk6CisgICAgICAgIChXZWJDb3Jl
OjpUZXN0RE9NSklUQm9vbGVhbk51bGxhYmxlQXR0ckRPTUpJVDo6VGVzdERPTUpJVEJvb2xlYW5O
dWxsYWJsZUF0dHJET01KSVQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdERPTUpJVEJ5dGVOdWxs
YWJsZUF0dHJET01KSVQ6OlRlc3RET01KSVRCeXRlTnVsbGFibGVBdHRyRE9NSklUKToKKyAgICAg
ICAgKFdlYkNvcmU6OlRlc3RET01KSVRPY3RldE51bGxhYmxlQXR0ckRPTUpJVDo6VGVzdERPTUpJ
VE9jdGV0TnVsbGFibGVBdHRyRE9NSklUKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RET01KSVRT
aG9ydE51bGxhYmxlQXR0ckRPTUpJVDo6VGVzdERPTUpJVFNob3J0TnVsbGFibGVBdHRyRE9NSklU
KToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RET01KSVRVbnNpZ25lZFNob3J0TnVsbGFibGVBdHRy
RE9NSklUOjpUZXN0RE9NSklUVW5zaWduZWRTaG9ydE51bGxhYmxlQXR0ckRPTUpJVCk6CisgICAg
ICAgIChXZWJDb3JlOjpUZXN0RE9NSklUTG9uZ051bGxhYmxlQXR0ckRPTUpJVDo6VGVzdERPTUpJ
VExvbmdOdWxsYWJsZUF0dHJET01KSVQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdERPTUpJVFVu
c2lnbmVkTG9uZ051bGxhYmxlQXR0ckRPTUpJVDo6VGVzdERPTUpJVFVuc2lnbmVkTG9uZ051bGxh
YmxlQXR0ckRPTUpJVCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0RE9NSklUTG9uZ0xvbmdOdWxs
YWJsZUF0dHJET01KSVQ6OlRlc3RET01KSVRMb25nTG9uZ051bGxhYmxlQXR0ckRPTUpJVCk6Cisg
ICAgICAgIChXZWJDb3JlOjpUZXN0RE9NSklUVW5zaWduZWRMb25nTG9uZ051bGxhYmxlQXR0ckRP
TUpJVDo6VGVzdERPTUpJVFVuc2lnbmVkTG9uZ0xvbmdOdWxsYWJsZUF0dHJET01KSVQpOgorICAg
ICAgICAoV2ViQ29yZTo6VGVzdERPTUpJVEZsb2F0TnVsbGFibGVBdHRyRE9NSklUOjpUZXN0RE9N
SklURmxvYXROdWxsYWJsZUF0dHJET01KSVQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdERPTUpJ
VFVucmVzdHJpY3RlZEZsb2F0TnVsbGFibGVBdHRyRE9NSklUOjpUZXN0RE9NSklUVW5yZXN0cmlj
dGVkRmxvYXROdWxsYWJsZUF0dHJET01KSVQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdERPTUpJ
VERvdWJsZU51bGxhYmxlQXR0ckRPTUpJVDo6VGVzdERPTUpJVERvdWJsZU51bGxhYmxlQXR0ckRP
TUpJVCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0RE9NSklUVW5yZXN0cmljdGVkRG91YmxlTnVs
bGFibGVBdHRyRE9NSklUOjpUZXN0RE9NSklUVW5yZXN0cmljdGVkRG91YmxlTnVsbGFibGVBdHRy
RE9NSklUKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RET01KSVREb21TdHJpbmdOdWxsYWJsZUF0
dHJET01KSVQ6OlRlc3RET01KSVREb21TdHJpbmdOdWxsYWJsZUF0dHJET01KSVQpOgorICAgICAg
ICAoV2ViQ29yZTo6VGVzdERPTUpJVEJ5dGVTdHJpbmdOdWxsYWJsZUF0dHJET01KSVQ6OlRlc3RE
T01KSVRCeXRlU3RyaW5nTnVsbGFibGVBdHRyRE9NSklUKToKKyAgICAgICAgKFdlYkNvcmU6OlRl
c3RET01KSVRVc3ZTdHJpbmdOdWxsYWJsZUF0dHJET01KSVQ6OlRlc3RET01KSVRVc3ZTdHJpbmdO
dWxsYWJsZUF0dHJET01KSVQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdERPTUpJVE5vZGVOdWxs
YWJsZUF0dHJET01KSVQ6OlRlc3RET01KSVROb2RlTnVsbGFibGVBdHRyRE9NSklUKToKKyAgICAg
ICAgKFdlYkNvcmU6OmpzVGVzdERPTUpJVFByb3RvdHlwZUZ1bmN0aW9uR2V0QXR0cmlidXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdERPTUpJVFByb3RvdHlwZUZ1bmN0aW9uR2V0QXR0cmli
dXRlQ2FsbGVyKToKKyAgICAgICAgKFdlYkNvcmU6OnVuc2FmZUpzVGVzdERPTUpJVFByb3RvdHlw
ZUZ1bmN0aW9uR2V0QXR0cmlidXRlKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
VGVzdERPTUpJVC5pZGw6CisgICAgICAgICogZG9tL0VsZW1lbnQuaWRsOgorICAgICAgICAqIGRv
bWppdC9ET01KSVRBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LnlhbWw6IEFkZGVkLgorICAgICAgICAq
IGRvbWppdC9ET01KSVRJRExDb252ZXJ0Lmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6RE9N
SklUOjpEaXJlY3RDb252ZXJ0ZXI8SURMRE9NU3RyaW5nPjo6ZGlyZWN0Q29udmVydDxTdHJpbmdD
b252ZXJzaW9uQ29uZmlndXJhdGlvbjo6Tm9ybWFsPik6CisgICAgICAgICogZG9taml0L0RPTUpJ
VElETFR5cGUuaDogQWRkZWQuCisgICAgICAgICogZG9taml0L0RPTUpJVElETFR5cGVGaWx0ZXIu
aDogQWRkZWQuCisgICAgICAgICogZG9taml0L0pTRG9jdW1lbnRET01KSVQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RG9jdW1lbnREb2N1bWVudEVsZW1lbnRET01KSVQ6OmNhbGxET01HZXR0ZXIp
OgorICAgICAgICAqIGRvbWppdC9KU05vZGVET01KSVQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Tm9kZUZpcnN0Q2hpbGRET01KSVQ6OmNhbGxET01HZXR0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6
Tm9kZUxhc3RDaGlsZERPTUpJVDo6Y2FsbERPTUdldHRlcik6CisgICAgICAgIChXZWJDb3JlOjpO
b2RlTmV4dFNpYmxpbmdET01KSVQ6OmNhbGxET01HZXR0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6
Tm9kZVByZXZpb3VzU2libGluZ0RPTUpJVDo6Y2FsbERPTUdldHRlcik6CisgICAgICAgIChXZWJD
b3JlOjpOb2RlUGFyZW50Tm9kZURPTUpJVDo6Y2FsbERPTUdldHRlcik6CisgICAgICAgIChXZWJD
b3JlOjpOb2RlT3duZXJEb2N1bWVudERPTUpJVDo6Y2FsbERPTUdldHRlcik6CisgICAgICAgICog
ZG9taml0L2dlbmVyYXRlLWFic3RyYWN0LWhlYXAucmI6IEFkZGVkLgorCiAyMDE2LTExLTAxICBE
YXZlIEh5YXR0ICA8aHlhdHRAYXBwbGUuY29tPgogCiAgICAgICAgIFtDU1MgUGFyc2VyXSBTdXBw
b3J0IHRoZSBzaGFkb3cgRE9NCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2
YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDJmYmQy
ZTRjZjMxN2MyZjg0ZTJlMTM5N2Q4NTE0MTFiNTk2N2UwZTIuLmJmNGExOWQ1OTI3ZGZkZTFhOWZm
NmYyNGEzZTliNWY2Yzc4MGJlOWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9K
YXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0y
MTg0LDYgKzIxODQsNyBAQAogCQlFMzNGNTA4NTFCODQzN0EwMDA0MTM4NTYgLyogSlNJbnRlcm5h
bFByb21pc2VEZWZlcnJlZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRTMzRjUwODMxQjg0MzdBMDAwNDEzODU2IC8qIEpTSW50ZXJuYWxQcm9taXNlRGVm
ZXJyZWQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQlFMzNGNTA4NzFCODQ0OUVGMDA0MTM4NTYgLyogSlNJbnRlcm5hbFByb21pc2VDb25zdHJ1Y3Rv
ci5sdXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUz
M0Y1MDg2MUI4NDQ5RUYwMDQxMzg1NiAvKiBKU0ludGVybmFsUHJvbWlzZUNvbnN0cnVjdG9yLmx1
dC5oICovOyB9OwogCQlFMzRFREJGNzFEQjVGRkM5MDBEQzg3QTUgLyogRnJhbWVUcmFjZXJzLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzRFREJGNjFE
QjVGRkMxMDBEQzg3QTUgLyogRnJhbWVUcmFjZXJzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJRTM1MDcwOEExREM0OUJCRjAwODlCQ0Q2IC8qIERP
TUpJVFNpZ25hdHVyZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gRTM1MDcwODkxREM0OUJCNjAwODlCQ0Q2IC8qIERPTUpJVFNpZ25hdHVyZS5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUUzNTQ2MjJCMUI2
MDY1RDEwMDU0NTM4NiAvKiBDb25zdHJ1Y3RBYmlsaXR5LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzU0NjIyQTFCNjA2NUQxMDA1NDUzODYgLyogQ29u
c3RydWN0QWJpbGl0eS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCUUzNTU1QjhBMURBRTAzQTUwMEYzNjkyMSAvKiBET01KSVRDYWxsRE9NR2V0dGVy
UGF0Y2hwb2ludC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRTM1NTVCODkxREFFMDNBMjAwRjM2OTIxIC8qIERPTUpJVENhbGxET01HZXR0ZXJQYXRjaHBv
aW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
RTM1NUYzNTIxQjdEQzg1MzAwQzUwREM1IC8qIE1vZHVsZUxvYWRlclByb3RvdHlwZS5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzU1RjM1MDFCN0RD
ODUzMDBDNTBEQzUgLyogTW9kdWxlTG9hZGVyUHJvdG90eXBlLmNwcCAqLzsgfTsKQEAgLTQ1ODYs
NiArNDU4Nyw3IEBACiAJCUUzM0Y1MDg2MUI4NDQ5RUYwMDQxMzg1NiAvKiBKU0ludGVybmFsUHJv
bWlzZUNvbnN0cnVjdG9yLmx1dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBK
U0ludGVybmFsUHJvbWlzZUNvbnN0cnVjdG9yLmx1dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlFMzNGNTA4ODFCODQ0QTFBMDA0MTM4NTYgLyogSW50ZXJuYWxQcm9taXNlQ29uc3Ry
dWN0b3IuanMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmphdmFzY3JpcHQ7IHBhdGggPSBJbnRlcm5h
bFByb21pc2VDb25zdHJ1Y3Rvci5qczsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM0
RURCRjYxREI1RkZDMTAwREM4N0E1IC8qIEZyYW1lVHJhY2Vycy5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBGcmFtZVRyYWNlcnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJRTM1MDcwODkxREM0OUJCNjAwODlCQ0Q2IC8qIERPTUpJVFNpZ25hdHVyZS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBET01KSVRTaWduYXR1cmUuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM1NDYyMkExQjYwNjVEMTAwNTQ1Mzg2IC8qIENvbnN0cnVj
dEFiaWxpdHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29uc3RydWN0QWJp
bGl0eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzU1NUI4OTFEQUUwM0EyMDBG
MzY5MjEgLyogRE9NSklUQ2FsbERPTUdldHRlclBhdGNocG9pbnQuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gRE9NSklUQ2FsbERPTUdldHRlclBhdGNocG9pbnQuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM1NUYzNTAxQjdEQzg1MzAwQzUwREM1IC8qIE1vZHVs
ZUxvYWRlclByb3RvdHlwZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBNb2R1bGVMb2FkZXJQcm90b3R5cGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpA
QCAtNzUwMyw2ICs3NTA1LDcgQEAKIAkJCQlFMzdBRDgzQTFEQTQ5MjgwMDBGM0Q0MTIgLyogRE9N
SklUUGF0Y2hwb2ludFBhcmFtcy5oICovLAogCQkJCUUzN0FEODNCMURBNDkyODAwMEYzRDQxMiAv
KiBET01KSVRSZWcuaCAqLywKIAkJCQlFM0NCMUUyNDFEQTc1NDBBMDBGQTFFNTYgLyogRE9NSklU
U2xvd1BhdGhDYWxscy5oICovLAorCQkJCUUzNTA3MDg5MURDNDlCQjYwMDg5QkNENiAvKiBET01K
SVRTaWduYXR1cmUuaCAqLywKIAkJCQlFM0ZGQzg1MjFEQUQ3RDEwMDBERUE1M0UgLyogRE9NSklU
VmFsdWUuaCAqLywKIAkJCSk7CiAJCQlwYXRoID0gZG9taml0OwpAQCAtODQyMyw2ICs4NDI2LDcg
QEAKIAkJCQk0M0FCMjZDNjFDMUE1MzU5MDBEODJBRTYgLyogQjNNYXRoRXh0cmFzLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlBRDJGQ0JGMzFEQjU4REFEMDBCM0U3MzYgLyogV2ViQXNzZW1ibHlJbnN0
YW5jZVByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxOEM0MjkwRTE2RjVDRDAwQjM0
NDYwIC8qIEpTU3RyaW5nUmVmQ0YuaCBpbiBIZWFkZXJzICovLAorCQkJCUUzNTA3MDhBMURDNDlC
QkYwMDg5QkNENiAvKiBET01KSVRTaWduYXR1cmUuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBMjhE
NEE4MTc3QjcxQzgwMDA3RkEzQyAvKiBKU1N0cmluZ1JlZlByaXZhdGUuaCBpbiBIZWFkZXJzICov
LAogCQkJCTBGOTE5RDBEMTU3RUUwQTIwMDRBNEU3RCAvKiBKU1N5bWJvbFRhYmxlT2JqZWN0Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQk3MEVDQTYwNjFBRkRCRUEyMDA0NDk3MzkgLyogSlNUZW1wbGF0
ZVJlZ2lzdHJ5S2V5LmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9DYWxsVmFyaWFudC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0NhbGxWYXJpYW50LmgKaW5kZXggZGU2ODgwMDZlZjFhOTllOWRkNjBiMDFhNmUwMTc3
Y2I5OGVjN2I1MS4uY2IyODhjNjBiN2E0ZjEzOGJhZjIxNDI4NDllMTM5MWE4ZDExMWJhNyAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxWYXJpYW50LmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxWYXJpYW50LmgKQEAgLTI4LDYg
KzI4LDcgQEAKICNpbmNsdWRlICJGdW5jdGlvbkV4ZWN1dGFibGUuaCIKICNpbmNsdWRlICJKU0Nl
bGwuaCIKICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCisjaW5jbHVkZSAiTmF0aXZlRXhlY3V0YWJs
ZS5oIgogCiBuYW1lc3BhY2UgSlNDIHsKIApAQCAtMTIwLDYgKzEyMSwyMCBAQCBjbGFzcyBDYWxs
VmFyaWFudCB7CiAgICAgICAgICAgICByZXR1cm4ganNEeW5hbWljQ2FzdDxGdW5jdGlvbkV4ZWN1
dGFibGUqPihleGVjdXRhYmxlKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQorCisg
ICAgTmF0aXZlRXhlY3V0YWJsZSogbmF0aXZlRXhlY3V0YWJsZSgpIGNvbnN0CisgICAgeworICAg
ICAgICBpZiAoRXhlY3V0YWJsZUJhc2UqIGV4ZWN1dGFibGUgPSB0aGlzLT5leGVjdXRhYmxlKCkp
CisgICAgICAgICAgICByZXR1cm4ganNEeW5hbWljQ2FzdDxOYXRpdmVFeGVjdXRhYmxlKj4oZXhl
Y3V0YWJsZSk7CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KKworICAgIGNvbnN0IERP
TUpJVDo6U2lnbmF0dXJlKiBzaWduYXR1cmVGb3IoQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5k
KSBjb25zdAorICAgIHsKKyAgICAgICAgaWYgKE5hdGl2ZUV4ZWN1dGFibGUqIG5hdGl2ZUV4ZWN1
dGFibGUgPSB0aGlzLT5uYXRpdmVFeGVjdXRhYmxlKCkpCisgICAgICAgICAgICByZXR1cm4gbmF0
aXZlRXhlY3V0YWJsZS0+c2lnbmF0dXJlRm9yKGtpbmQpOworICAgICAgICByZXR1cm4gbnVsbHB0
cjsKKyAgICB9CiAgICAgCiAgICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0Owog
ICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NwZWN1bGF0
ZWRUeXBlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3BlY3VsYXRlZFR5cGUu
aAppbmRleCBmNDNkZmNkMzE1ODcxZTk4OTUzZWEyZGRkYzRiZjMzNTI1Y2NkZmRmLi5lMjNmZDJj
NWY1NGNlZTA5YzdhMjNiZGMxNDk5OTBiNjA5YjAxOTAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3BlY3VsYXRlZFR5cGUuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvU3BlY3VsYXRlZFR5cGUuaApAQCAtMTUxLDYgKzE1MSwxMSBAQCBp
bmxpbmUgYm9vbCBpc1N0cmluZ1NwZWN1bGF0aW9uKFNwZWN1bGF0ZWRUeXBlIHZhbHVlKQogICAg
IHJldHVybiAhIXZhbHVlICYmICh2YWx1ZSAmIFNwZWNTdHJpbmcpID09IHZhbHVlOwogfQogCitp
bmxpbmUgYm9vbCBpc05vdFN0cmluZ1NwZWN1bGF0aW9uKFNwZWN1bGF0ZWRUeXBlIHZhbHVlKQor
eworICAgIHJldHVybiB2YWx1ZSAmJiAhKHZhbHVlICYgU3BlY1N0cmluZyk7Cit9CisKIGlubGlu
ZSBib29sIGlzU3RyaW5nT3JPdGhlclNwZWN1bGF0aW9uKFNwZWN1bGF0ZWRUeXBlIHZhbHVlKQog
ewogICAgIHJldHVybiAhIXZhbHVlICYmICh2YWx1ZSAmIChTcGVjU3RyaW5nIHwgU3BlY090aGVy
KSkgPT0gdmFsdWU7CkBAIC0zMDMsNiArMzA4LDExIEBAIGlubGluZSBib29sIGlzSW50MzJTcGVj
dWxhdGlvbihTcGVjdWxhdGVkVHlwZSB2YWx1ZSkKICAgICByZXR1cm4gdmFsdWUgJiYgISh2YWx1
ZSAmIH5TcGVjSW50MzJPbmx5KTsKIH0KIAoraW5saW5lIGJvb2wgaXNOb3RJbnQzMlNwZWN1bGF0
aW9uKFNwZWN1bGF0ZWRUeXBlIHZhbHVlKQoreworICAgIHJldHVybiB2YWx1ZSAmJiAhKHZhbHVl
ICYgU3BlY0ludDMyT25seSk7Cit9CisKIGlubGluZSBib29sIGlzSW50MzJPckJvb2xlYW5TcGVj
dWxhdGlvbihTcGVjdWxhdGVkVHlwZSB2YWx1ZSkKIHsKICAgICByZXR1cm4gdmFsdWUgJiYgISh2
YWx1ZSAmIH4oU3BlY0Jvb2xlYW4gfCBTcGVjSW50MzJPbmx5KSk7CkBAIC0zODgsNiArMzk4LDEx
IEBAIGlubGluZSBib29sIGlzQm9vbGVhblNwZWN1bGF0aW9uKFNwZWN1bGF0ZWRUeXBlIHZhbHVl
KQogICAgIHJldHVybiB2YWx1ZSA9PSBTcGVjQm9vbGVhbjsKIH0KIAoraW5saW5lIGJvb2wgaXNO
b3RCb29sZWFuU3BlY3VsYXRpb24oU3BlY3VsYXRlZFR5cGUgdmFsdWUpCit7CisgICAgcmV0dXJu
IHZhbHVlICYmICEodmFsdWUgJiBTcGVjQm9vbGVhbik7Cit9CisKIGlubGluZSBib29sIGlzT3Ro
ZXJTcGVjdWxhdGlvbihTcGVjdWxhdGVkVHlwZSB2YWx1ZSkKIHsKICAgICByZXR1cm4gdmFsdWUg
PT0gU3BlY090aGVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdB
YnN0cmFjdEludGVycHJldGVySW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCmluZGV4IDQzYjUxYTE2ZWNiYWRhNTBmOWQ3
Zjg4ZWVlM2NmMTEyNmI3YTIyNGEuLjdhZGJhNzE2MDE0NjE1MTA3MmVmNjk5ZDIyNmEyYWYzY2Vh
MDhkMDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJ
bnRlcnByZXRlcklubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fi
c3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJB
cnJheUNvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAiREZHQWJzdHJhY3RJbnRlcnByZXRlci5oIgog
I2luY2x1ZGUgIkRPTUpJVEdldHRlclNldHRlci5oIgorI2luY2x1ZGUgIkRPTUpJVFNpZ25hdHVy
ZS5oIgogI2luY2x1ZGUgIkdldEJ5SWRTdGF0dXMuaCIKICNpbmNsdWRlICJHZXR0ZXJTZXR0ZXIu
aCIKICNpbmNsdWRlICJIYXNoTWFwSW1wbC5oIgpAQCAtMjMwMyw2ICsyMzA0LDEzIEBAIGJvb2wg
QWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3RzKHVu
c2lnbmVkIGNsb2JiZXJMaW1pCiAgICAgICAgIGZvck5vZGUobm9kZSkuc2V0VHlwZShtX2dyYXBo
LCBjYWxsRE9NR2V0dGVyRGF0YS0+ZG9tSklULT5yZXN1bHRUeXBlKCkpOwogICAgICAgICBicmVh
azsKICAgICB9CisgICAgY2FzZSBDYWxsRE9NOiB7CisgICAgICAgIGNvbnN0IERPTUpJVDo6U2ln
bmF0dXJlKiBzaWduYXR1cmUgPSBub2RlLT5zaWduYXR1cmUoKTsKKyAgICAgICAgaWYgKHNpZ25h
dHVyZS0+ZWZmZWN0LndyaXRlcykKKyAgICAgICAgICAgIGNsb2JiZXJXb3JsZChub2RlLT5vcmln
aW4uc2VtYW50aWMsIGNsb2JiZXJMaW1pdCk7CisgICAgICAgIGZvck5vZGUobm9kZSkuc2V0VHlw
ZShtX2dyYXBoLCBzaWduYXR1cmUtPnJlc3VsdCk7CisgICAgICAgIGJyZWFrOworICAgIH0KICAg
ICBjYXNlIENoZWNrQXJyYXk6IHsKICAgICAgICAgaWYgKG5vZGUtPmFycmF5TW9kZSgpLmFscmVh
ZHlDaGVja2VkKG1fZ3JhcGgsIG5vZGUsIGZvck5vZGUobm9kZS0+Y2hpbGQxKCkpKSkgewogICAg
ICAgICAgICAgbV9zdGF0ZS5zZXRGb3VuZENvbnN0YW50cyh0cnVlKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKaW5kZXggMzVkYzA3ODZhODkz
Nzg1ZjcwZjdiMzJjMGNmN2JjZGRlOWE3ZWRkOS4uMGMyNjFkMWM5NDlhYzFkODM5Y2MxZDkzZTdl
Yjk3Y2NiNDBiZDQxNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdC
eXRlQ29kZVBhcnNlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRl
Q29kZVBhcnNlci5jcHAKQEAgLTIxMiw2ICsyMTIsOCBAQCBjbGFzcyBCeXRlQ29kZVBhcnNlciB7
CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hlY2tzRnVuY3Rvcj4KICAgICBib29sIGhhbmRsZUlu
dHJpbnNpY0NhbGwoTm9kZSogY2FsbGVlLCBpbnQgcmVzdWx0T3BlcmFuZCwgSW50cmluc2ljLCBp
bnQgcmVnaXN0ZXJPZmZzZXQsIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgU3BlY3Vs
YXRlZFR5cGUgcHJlZGljdGlvbiwgY29uc3QgQ2hlY2tzRnVuY3RvciYgaW5zZXJ0Q2hlY2tzKTsK
ICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGVja3NGdW5jdG9yPgorICAgIGJvb2wgaGFuZGxlRE9N
SklUQ2FsbChOb2RlKiBjYWxsZWUsIGludCByZXN1bHRPcGVyYW5kLCBjb25zdCBET01KSVQ6OlNp
Z25hdHVyZSosIGludCByZWdpc3Rlck9mZnNldCwgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdU
aGlzLCBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uLCBjb25zdCBDaGVja3NGdW5jdG9yJiBpbnNl
cnRDaGVja3MpOworICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoZWNrc0Z1bmN0b3I+CiAgICAgYm9v
bCBoYW5kbGVJbnRyaW5zaWNHZXR0ZXIoaW50IHJlc3VsdE9wZXJhbmQsIGNvbnN0IEdldEJ5SWRW
YXJpYW50JiBpbnRyaW5zaWNWYXJpYW50LCBOb2RlKiB0aGlzTm9kZSwgY29uc3QgQ2hlY2tzRnVu
Y3RvciYgaW5zZXJ0Q2hlY2tzKTsKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGVja3NGdW5jdG9y
PgogICAgIGJvb2wgaGFuZGxlVHlwZWRBcnJheUNvbnN0cnVjdG9yKGludCByZXN1bHRPcGVyYW5k
LCBJbnRlcm5hbEZ1bmN0aW9uKiwgaW50IHJlZ2lzdGVyT2Zmc2V0LCBpbnQgYXJndW1lbnRDb3Vu
dEluY2x1ZGluZ1RoaXMsIFR5cGVkQXJyYXlUeXBlLCBjb25zdCBDaGVja3NGdW5jdG9yJiBpbnNl
cnRDaGVja3MpOwpAQCAtODE3LDE4ICs4MTksMTggQEAgY2xhc3MgQnl0ZUNvZGVQYXJzZXIgewog
ICAgIH0KICAgICAKICAgICBOb2RlKiBhZGRDYWxsKAotICAgICAgICBpbnQgcmVzdWx0LCBOb2Rl
VHlwZSBvcCwgT3BJbmZvIG9wSW5mbywgTm9kZSogY2FsbGVlLCBpbnQgYXJnQ291bnQsIGludCBy
ZWdpc3Rlck9mZnNldCwKKyAgICAgICAgaW50IHJlc3VsdCwgTm9kZVR5cGUgb3AsIGNvbnN0IERP
TUpJVDo6U2lnbmF0dXJlKiBzaWduYXR1cmUsIE5vZGUqIGNhbGxlZSwgaW50IGFyZ0NvdW50LCBp
bnQgcmVnaXN0ZXJPZmZzZXQsCiAgICAgICAgIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24pCiAg
ICAgewogICAgICAgICBpZiAob3AgPT0gVGFpbENhbGwpIHsKICAgICAgICAgICAgIGlmIChhbGxJ
bmxpbmVGcmFtZXNBcmVUYWlsQ2FsbHMoKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gYWRkQ2Fs
bFdpdGhvdXRTZXR0aW5nUmVzdWx0KG9wLCBPcEluZm8oKSwgY2FsbGVlLCBhcmdDb3VudCwgcmVn
aXN0ZXJPZmZzZXQsIE9wSW5mbygpKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gYWRkQ2FsbFdp
dGhvdXRTZXR0aW5nUmVzdWx0KG9wLCBPcEluZm8oc2lnbmF0dXJlKSwgY2FsbGVlLCBhcmdDb3Vu
dCwgcmVnaXN0ZXJPZmZzZXQsIE9wSW5mbygpKTsKICAgICAgICAgICAgIG9wID0gVGFpbENhbGxJ
bmxpbmVkQ2FsbGVyOwogICAgICAgICB9CiAKIAogICAgICAgICBOb2RlKiBjYWxsID0gYWRkQ2Fs
bFdpdGhvdXRTZXR0aW5nUmVzdWx0KAotICAgICAgICAgICAgb3AsIG9wSW5mbywgY2FsbGVlLCBh
cmdDb3VudCwgcmVnaXN0ZXJPZmZzZXQsIE9wSW5mbyhwcmVkaWN0aW9uKSk7CisgICAgICAgICAg
ICBvcCwgT3BJbmZvKHNpZ25hdHVyZSksIGNhbGxlZSwgYXJnQ291bnQsIHJlZ2lzdGVyT2Zmc2V0
LCBPcEluZm8ocHJlZGljdGlvbikpOwogICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgcmVzdWx0UmVn
KHJlc3VsdCk7CiAgICAgICAgIGlmIChyZXN1bHRSZWcuaXNWYWxpZCgpKQogICAgICAgICAgICAg
c2V0KHJlc3VsdFJlZywgY2FsbCk7CkBAIC0xMjgzLDcgKzEyODUsNyBAQCBCeXRlQ29kZVBhcnNl
cjo6VGVybWluYWxpdHkgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUNhbGwoCiAgICAgICAgIC8vIE9k
ZGx5LCB0aGlzIGNvbmZsYXRlcyBjYWxscyB0aGF0IGhhdmVuJ3QgZXhlY3V0ZWQgd2l0aCBjYWxs
cyB0aGF0IGJlaGF2ZWQgc3VmZmljaWVudGx5IHBvbHltb3JwaGljYWxseQogICAgICAgICAvLyB0
aGF0IHdlIGNhbm5vdCBvcHRpbWl6ZSB0aGVtLgogCi0gICAgICAgIE5vZGUqIGNhbGxOb2RlID0g
YWRkQ2FsbChyZXN1bHQsIG9wLCBPcEluZm8oKSwgY2FsbFRhcmdldCwgYXJndW1lbnRDb3VudElu
Y2x1ZGluZ1RoaXMsIHJlZ2lzdGVyT2Zmc2V0LCBwcmVkaWN0aW9uKTsKKyAgICAgICAgTm9kZSog
Y2FsbE5vZGUgPSBhZGRDYWxsKHJlc3VsdCwgb3AsIG51bGxwdHIsIGNhbGxUYXJnZXQsIGFyZ3Vt
ZW50Q291bnRJbmNsdWRpbmdUaGlzLCByZWdpc3Rlck9mZnNldCwgcHJlZGljdGlvbik7CiAgICAg
ICAgIGlmIChjYWxsTm9kZS0+b3AoKSA9PSBUYWlsQ2FsbCkKICAgICAgICAgICAgIHJldHVybiBU
ZXJtaW5hbDsKICAgICAgICAgQVNTRVJUKGNhbGxOb2RlLT5vcCgpICE9IFRhaWxDYWxsVmFyYXJn
cyAmJiBjYWxsTm9kZS0+b3AoKSAhPSBUYWlsQ2FsbEZvcndhcmRWYXJhcmdzKTsKQEAgLTEyOTgs
NyArMTMwMCw3IEBAIEJ5dGVDb2RlUGFyc2VyOjpUZXJtaW5hbGl0eSBCeXRlQ29kZVBhcnNlcjo6
aGFuZGxlQ2FsbCgKICAgICAgICAgcmV0dXJuIE5vblRlcm1pbmFsOwogICAgIH0KICAgICAKLSAg
ICBOb2RlKiBjYWxsTm9kZSA9IGFkZENhbGwocmVzdWx0LCBvcCwgT3BJbmZvKCksIGNhbGxUYXJn
ZXQsIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCByZWdpc3Rlck9mZnNldCwgcHJlZGljdGlv
bik7CisgICAgTm9kZSogY2FsbE5vZGUgPSBhZGRDYWxsKHJlc3VsdCwgb3AsIG51bGxwdHIsIGNh
bGxUYXJnZXQsIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCByZWdpc3Rlck9mZnNldCwgcHJl
ZGljdGlvbik7CiAgICAgaWYgKGNhbGxOb2RlLT5vcCgpID09IFRhaWxDYWxsKQogICAgICAgICBy
ZXR1cm4gVGVybWluYWw7CiAgICAgQVNTRVJUKGNhbGxOb2RlLT5vcCgpICE9IFRhaWxDYWxsVmFy
YXJncyAmJiBjYWxsTm9kZS0+b3AoKSAhPSBUYWlsQ2FsbEZvcndhcmRWYXJhcmdzKTsKQEAgLTE3
MjUsNiArMTcyNywxOSBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjphdHRlbXB0VG9JbmxpbmVDYWxs
KE5vZGUqIGNhbGxUYXJnZXROb2RlLCBpbnQgcmVzdWx0T3BlcmFuZAogICAgICAgICAgICAgUkVM
RUFTRV9BU1NFUlQoIWRpZEluc2VydENoZWNrcyk7CiAgICAgICAgICAgICAvLyBXZSBtaWdodCBz
dGlsbCB0cnkgdG8gaW5saW5lIHRoZSBJbnRyaW5zaWMgYmVjYXVzZSBpdCBtaWdodCBiZSBhIGJ1
aWx0aW4gSlMgZnVuY3Rpb24uCiAgICAgICAgIH0KKworICAgICAgICBpZiAoT3B0aW9uczo6dXNl
RE9NSklUKCkpIHsKKyAgICAgICAgICAgIGlmIChjb25zdCBET01KSVQ6OlNpZ25hdHVyZSogc2ln
bmF0dXJlID0gY2FsbGVlLnNpZ25hdHVyZUZvcihzcGVjaWFsaXphdGlvbktpbmQpKSB7CisgICAg
ICAgICAgICAgICAgaWYgKGhhbmRsZURPTUpJVENhbGwoY2FsbFRhcmdldE5vZGUsIHJlc3VsdE9w
ZXJhbmQsIHNpZ25hdHVyZSwgcmVnaXN0ZXJPZmZzZXQsIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdU
aGlzLCBwcmVkaWN0aW9uLCBpbnNlcnRDaGVja3NXaXRoQWNjb3VudGluZykpIHsKKyAgICAgICAg
ICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoZGlkSW5zZXJ0Q2hlY2tzKTsKKyAgICAgICAgICAg
ICAgICAgICAgYWRkVG9HcmFwaChQaGFudG9tLCBjYWxsVGFyZ2V0Tm9kZSk7CisgICAgICAgICAg
ICAgICAgICAgIGVtaXRBcmd1bWVudFBoYW50b21zKHJlZ2lzdGVyT2Zmc2V0LCBhcmd1bWVudENv
dW50SW5jbHVkaW5nVGhpcyk7CisgICAgICAgICAgICAgICAgICAgIGlubGluaW5nQmFsYW5jZS0t
OworICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoIWRpZEluc2VydENoZWNrcyk7CisgICAgICAg
ICAgICB9CisgICAgICAgIH0KICAgICB9CiAgICAgCiAgICAgdW5zaWduZWQgbXlJbmxpbmluZ0Nv
c3QgPSBpbmxpbmluZ0Nvc3QoY2FsbGVlLCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgSW5s
aW5lQ2FsbEZyYW1lOjpjYWxsTW9kZUZvcihraW5kKSk7CkBAIC0yMDUwLDcgKzIwNjUsNyBAQCBi
b29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbmxpbmluZygKICAgICBOb2RlKiBteUNhbGxUYXJn
ZXROb2RlID0gZ2V0RGlyZWN0KGNhbGxlZVJlZyk7CiAgICAgaWYgKGNvdWxkVGFrZVNsb3dQYXRo
KSB7CiAgICAgICAgIGFkZENhbGwoCi0gICAgICAgICAgICByZXN1bHRPcGVyYW5kLCBjYWxsT3As
IE9wSW5mbygpLCBteUNhbGxUYXJnZXROb2RlLCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywK
KyAgICAgICAgICAgIHJlc3VsdE9wZXJhbmQsIGNhbGxPcCwgbnVsbHB0ciwgbXlDYWxsVGFyZ2V0
Tm9kZSwgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsCiAgICAgICAgICAgICByZWdpc3Rlck9m
ZnNldCwgcHJlZGljdGlvbik7CiAgICAgfSBlbHNlIHsKICAgICAgICAgYWRkVG9HcmFwaChDaGVj
a0JhZENlbGwpOwpAQCAtMjYwMCw2ICsyNjE1LDIwIEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6Omhh
bmRsZUludHJpbnNpY0NhbGwoTm9kZSogY2FsbGVlLCBpbnQgcmVzdWx0T3BlcmFuZCwgSW50cmlu
CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIENoZWNrc0Z1bmN0b3I+Citib29sIEJ5dGVDb2RlUGFy
c2VyOjpoYW5kbGVET01KSVRDYWxsKE5vZGUqIGNhbGxUYXJnZXQsIGludCByZXN1bHRPcGVyYW5k
LCBjb25zdCBET01KSVQ6OlNpZ25hdHVyZSogc2lnbmF0dXJlLCBpbnQgcmVnaXN0ZXJPZmZzZXQs
IGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlv
biwgY29uc3QgQ2hlY2tzRnVuY3RvciYgaW5zZXJ0Q2hlY2tzKQoreworICAgIGlmIChhcmd1bWVu
dENvdW50SW5jbHVkaW5nVGhpcyAhPSBzdGF0aWNfY2FzdDxpbnQ+KDEgKyBzaWduYXR1cmUtPmFy
Z3VtZW50Q291bnQpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKG1faW5saW5lU3Rh
Y2tUb3AtPm1fZXhpdFByb2ZpbGUuaGFzRXhpdFNpdGUobV9jdXJyZW50SW5kZXgsIEJhZFR5cGUp
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpbnNlcnRDaGVja3MoKTsKKyAgICBhZGRD
YWxsKHJlc3VsdE9wZXJhbmQsIENhbGwsIHNpZ25hdHVyZSwgY2FsbFRhcmdldCwgYXJndW1lbnRD
b3VudEluY2x1ZGluZ1RoaXMsIHJlZ2lzdGVyT2Zmc2V0LCBwcmVkaWN0aW9uKTsKKyAgICByZXR1
cm4gdHJ1ZTsKK30KKworCit0ZW1wbGF0ZTx0eXBlbmFtZSBDaGVja3NGdW5jdG9yPgogYm9vbCBC
eXRlQ29kZVBhcnNlcjo6aGFuZGxlSW50cmluc2ljR2V0dGVyKGludCByZXN1bHRPcGVyYW5kLCBj
b25zdCBHZXRCeUlkVmFyaWFudCYgdmFyaWFudCwgTm9kZSogdGhpc05vZGUsIGNvbnN0IENoZWNr
c0Z1bmN0b3ImIGluc2VydENoZWNrcykKIHsKICAgICBzd2l0Y2ggKHZhcmlhbnQuaW50cmluc2lj
KCkpIHsKQEAgLTQ3OTEsNyArNDgyMCw3IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxv
Y2sodW5zaWduZWQgbGltaXQpCiAgICAgICAgICAgICBpbnQgY2FsbGVlID0gY3VycmVudEluc3Ry
dWN0aW9uWzJdLnUub3BlcmFuZDsKICAgICAgICAgICAgIGludCBhcmd1bWVudENvdW50SW5jbHVk
aW5nVGhpcyA9IGN1cnJlbnRJbnN0cnVjdGlvblszXS51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBp
bnQgcmVnaXN0ZXJPZmZzZXQgPSAtY3VycmVudEluc3RydWN0aW9uWzRdLnUub3BlcmFuZDsKLSAg
ICAgICAgICAgIGFkZENhbGwocmVzdWx0LCBDYWxsRXZhbCwgT3BJbmZvKCksIGdldChWaXJ0dWFs
UmVnaXN0ZXIoY2FsbGVlKSksIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCByZWdpc3Rlck9m
ZnNldCwgZ2V0UHJlZGljdGlvbigpKTsKKyAgICAgICAgICAgIGFkZENhbGwocmVzdWx0LCBDYWxs
RXZhbCwgbnVsbHB0ciwgZ2V0KFZpcnR1YWxSZWdpc3RlcihjYWxsZWUpKSwgYXJndW1lbnRDb3Vu
dEluY2x1ZGluZ1RoaXMsIHJlZ2lzdGVyT2Zmc2V0LCBnZXRQcmVkaWN0aW9uKCkpOwogICAgICAg
ICAgICAgTkVYVF9PUENPREUob3BfY2FsbF9ldmFsKTsKICAgICAgICAgfQogICAgICAgICAgICAg
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCmluZGV4IGI2MjFlZjAy
MmQ4ODY1ZTJlN2EyMDExNmNkMjA4YzVjMjQ2YzlmZmIuLmU1ZDIxNzJmOWFlMGU3OTFhYWEyYTY4
MmJhYjE0ZWJhOTMwNjdkYmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQ2xvYmJlcml6ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJl
cml6ZS5oCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAiREZHTGF6eU5vZGUuaCIKICNpbmNs
dWRlICJERkdQdXJlVmFsdWUuaCIKICNpbmNsdWRlICJET01KSVRDYWxsRE9NR2V0dGVyUGF0Y2hw
b2ludC5oIgorI2luY2x1ZGUgIkRPTUpJVFNpZ25hdHVyZS5oIgogCiBuYW1lc3BhY2UgSlNDIHsg
bmFtZXNwYWNlIERGRyB7CiAKQEAgLTk1OCwyMCArOTU5LDM4IEBAIHZvaWQgY2xvYmJlcml6ZShH
cmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUsIGNvbnN0IFJlYWRGdW5jdG9yJiByZWFkLCBjb25zdCBX
cml0ZUZ1CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgd3JpdGUoQWJzdHJhY3RI
ZWFwKERPTVN0YXRlLCBlZmZlY3Qud3JpdGVzLnJhd1JlcHJlc2VudGF0aW9uKCkpKTsKICAgICAg
ICAgfQotICAgICAgICBpZiAoZWZmZWN0LmRlZikgewotICAgICAgICAgICAgRE9NSklUOjpIZWFw
UmFuZ2UgcmFuZ2UgPSBlZmZlY3QuZGVmLnZhbHVlKCk7CisgICAgICAgIGlmIChlZmZlY3QuZGVm
ICE9IERPTUpJVDo6SGVhcFJhbmdlOjp0b3AoKSkgeworICAgICAgICAgICAgRE9NSklUOjpIZWFw
UmFuZ2UgcmFuZ2UgPSBlZmZlY3QuZGVmOwogICAgICAgICAgICAgaWYgKHJhbmdlID09IERPTUpJ
VDo6SGVhcFJhbmdlOjpub25lKCkpCiAgICAgICAgICAgICAgICAgZGVmKFB1cmVWYWx1ZShub2Rl
LCBub2RlLT5jYWxsRE9NR2V0dGVyRGF0YSgpLT5kb21KSVQpKTsKICAgICAgICAgICAgIGVsc2Ug
ewogICAgICAgICAgICAgICAgIC8vIERlZiB3aXRoIGhlYXAgbG9jYXRpb24uIFdlIGRvIG5vdCBp
bmNsdWRlICJHbG9iYWxPYmplY3QiIGZvciB0aGF0IHNpbmNlIHRoaXMgaW5mb3JtYXRpb24gaXMg
aW5jbHVkZWQgaW4gdGhlIGJhc2Ugbm9kZS4KLSAgICAgICAgICAgICAgICAvLyBGSVhNRTogV2hl
biBzdXBwb3J0aW5nIHRoZSBvdGhlciBub2RlcyBsaWtlIGdldEVsZW1lbnRCeUlkKCJzdHJpbmci
KSwgd2Ugc2hvdWxkIGluY2x1ZGUgdGhlIGJhc2UgYW5kIHRoZSBpZCBzdHJpbmcuCi0gICAgICAg
ICAgICAgICAgLy8gQ3VycmVudGx5LCB3ZSBvbmx5IHNlZSB0aGUgRE9NSklUIGdldHRlciBoZXJl
LiBTbyBqdXN0IGluY2x1ZGluZyAiYmFzZSIgaXMgb2suCisgICAgICAgICAgICAgICAgLy8gV2Ug
b25seSBzZWUgdGhlIERPTUpJVCBnZXR0ZXIgaGVyZS4gU28ganVzdCBpbmNsdWRpbmcgImJhc2Ui
IGlzIG9rLgogICAgICAgICAgICAgICAgIGRlZihIZWFwTG9jYXRpb24oRE9NU3RhdGVMb2MsIEFi
c3RyYWN0SGVhcChET01TdGF0ZSwgcmFuZ2UucmF3UmVwcmVzZW50YXRpb24oKSksIG5vZGUtPmNo
aWxkMSgpKSwgTGF6eU5vZGUobm9kZSkpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKKyAgICBjYXNlIENhbGxET006IHsKKyAgICAgICAgY29uc3Qg
RE9NSklUOjpTaWduYXR1cmUqIHNpZ25hdHVyZSA9IG5vZGUtPnNpZ25hdHVyZSgpOworICAgICAg
ICBET01KSVQ6OkVmZmVjdCBlZmZlY3QgPSBzaWduYXR1cmUtPmVmZmVjdDsKKyAgICAgICAgaWYg
KGVmZmVjdC5yZWFkcykgeworICAgICAgICAgICAgaWYgKGVmZmVjdC5yZWFkcyA9PSBET01KSVQ6
OkhlYXBSYW5nZTo6dG9wKCkpCisgICAgICAgICAgICAgICAgcmVhZChXb3JsZCk7CisgICAgICAg
ICAgICBlbHNlCisgICAgICAgICAgICAgICAgcmVhZChBYnN0cmFjdEhlYXAoRE9NU3RhdGUsIGVm
ZmVjdC5yZWFkcy5yYXdSZXByZXNlbnRhdGlvbigpKSk7CisgICAgICAgIH0KKyAgICAgICAgaWYg
KGVmZmVjdC53cml0ZXMpIHsKKyAgICAgICAgICAgIGlmIChlZmZlY3Qud3JpdGVzID09IERPTUpJ
VDo6SGVhcFJhbmdlOjp0b3AoKSkKKyAgICAgICAgICAgICAgICB3cml0ZShIZWFwKTsKKyAgICAg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB3cml0ZShBYnN0cmFjdEhlYXAoRE9NU3RhdGUs
IGVmZmVjdC53cml0ZXMucmF3UmVwcmVzZW50YXRpb24oKSkpOworICAgICAgICB9CisgICAgICAg
IEFTU0VSVF9XSVRIX01FU1NBR0UoZWZmZWN0LmRlZiA9PSBET01KSVQ6OkhlYXBSYW5nZTo6dG9w
KCksICJDdXJyZW50bHksIHdlIGRvIG5vdCBhY2NlcHQgYW55IGRlZiBmb3IgQ2FsbERPTS4iKTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKwogICAgIGNhc2UgQXJyYXlpZnk6CiAgICAgY2FzZSBB
cnJheWlmeVRvU3RydWN0dXJlOgogICAgICAgICByZWFkKEpTQ2VsbF9zdHJ1Y3R1cmVJRCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAKaW5kZXggOTdjZDg0ODc0NzdhYzkw
ODRmZTkwZGRiOThkMzBmNDY2ZTVjYTE2Zi4uOWU2YWE1NTBhNDRlMGUxYzYyMTc1ZTUxOWY2MGEz
ZTg1MTVhN2I3YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2Vz
R0MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcApAQCAt
MzAxLDYgKzMwMSw3IEBAIGJvb2wgZG9lc0dDKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSkKICAg
ICBjYXNlIENyZWF0ZVJlc3Q6CiAgICAgY2FzZSBUb0xvd2VyQ2FzZToKICAgICBjYXNlIENhbGxE
T01HZXR0ZXI6CisgICAgY2FzZSBDYWxsRE9NOgogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAg
ICAgCiAgICAgY2FzZSBNdWx0aVB1dEJ5T2Zmc2V0OgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHRml4dXBQaGFzZS5jcHAKaW5kZXggMWQ0ZTkwN2E3ZjJmZmNjMmQ5YTJhMDM3NzExNDZh
NzkxMDFmM2NkMy4uMTJlZjRjZDhhNGQ5ODI3YjFlMmI0Y2U4YmU5MDdjOGIzNjA2ODcyNSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCkBAIC0xNzA4LDkg
KzE3MDgsMTAgQEAgY2xhc3MgRml4dXBQaGFzZSA6IHB1YmxpYyBQaGFzZSB7CiAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgfQogCi0gICAgICAgIGNhc2UgQ2hlY2tET006Ci0gICAgICAgICAg
ICBmaXhFZGdlPENlbGxVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgY2FzZSBDaGVja0RP
TTogeworICAgICAgICAgICAgZml4dXBDaGVja0RPTShub2RlKTsKICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICB9CiAKICAgICAgICAgY2FzZSBDYWxsRE9NR2V0dGVyOiB7CiAgICAgICAgICAg
ICBET01KSVQ6OkNhbGxET01HZXR0ZXJQYXRjaHBvaW50KiBwYXRjaHBvaW50ID0gbm9kZS0+Y2Fs
bERPTUdldHRlckRhdGEoKS0+cGF0Y2hwb2ludDsKQEAgLTE3MjAsNiArMTcyMSwxNiBAQCBjbGFz
cyBGaXh1cFBoYXNlIDogcHVibGljIFBoYXNlIHsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICB9CiAKKyAgICAgICAgY2FzZSBDYWxsRE9NOiB7CisgICAgICAgICAgICBmaXh1cENhbGxET00o
bm9kZSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAgIGNhc2UgQ2Fs
bDogeworICAgICAgICAgICAgYXR0ZW1wdFRvTWFrZUNhbGxET00obm9kZSk7CisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgfQorCiAjaWYgIUFTU0VSVF9ESVNBQkxFRAogICAgICAgICAvLyBI
YXZlIHRoZXNlIG5vLW9wIGNhc2VzIGhlcmUgdG8gZW5zdXJlIHRoYXQgbm9ib2R5IGZvcmdldHMg
dG8gYWRkIGhhbmRsZXJzIGZvciBuZXcgb3Bjb2Rlcy4KICAgICAgICAgY2FzZSBTZXRBcmd1bWVu
dDoKQEAgLTE3MzYsNyArMTc0Nyw2IEBAIGNsYXNzIEZpeHVwUGhhc2UgOiBwdWJsaWMgUGhhc2Ug
ewogICAgICAgICBjYXNlIEdldEdsb2JhbFZhcjoKICAgICAgICAgY2FzZSBHZXRHbG9iYWxMZXhp
Y2FsVmFyaWFibGU6CiAgICAgICAgIGNhc2UgTm90aWZ5V3JpdGU6Ci0gICAgICAgIGNhc2UgQ2Fs
bDoKICAgICAgICAgY2FzZSBEaXJlY3RDYWxsOgogICAgICAgICBjYXNlIENoZWNrVHlwZUluZm9G
bGFnczoKICAgICAgICAgY2FzZSBUYWlsQ2FsbElubGluZWRDYWxsZXI6CkBAIC0yNjU5LDYgKzI2
NjksOTAgQEAgY2xhc3MgRml4dXBQaGFzZSA6IHB1YmxpYyBQaGFzZSB7CiAgICAgICAgICAgICBP
cEluZm8oYXJyYXlNb2RlLmFzV29yZCgpKSwgRWRnZShjaGlsZCwgS25vd25DZWxsVXNlKSwgRWRn
ZShzdG9yYWdlKSk7CiAgICAgfQogICAgIAorICAgIGJvb2wgYXR0ZW1wdFRvTWFrZUNhbGxET00o
Tm9kZSogbm9kZSkKKyAgICB7CisgICAgICAgIGlmIChtX2dyYXBoLmhhc0V4aXRTaXRlKG5vZGUt
Pm9yaWdpbi5zZW1hbnRpYywgQmFkVHlwZSkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisK
KyAgICAgICAgY29uc3QgRE9NSklUOjpTaWduYXR1cmUqIHNpZ25hdHVyZSA9IG5vZGUtPnNpZ25h
dHVyZSgpOworICAgICAgICBpZiAoIXNpZ25hdHVyZSkKKyAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKKworICAgICAgICB7CisgICAgICAgICAgICB1bnNpZ25lZCBpbmRleCA9IDA7CisgICAgICAg
ICAgICBib29sIHNob3VsZENvbnZlcnRUb0NhbGxET00gPSB0cnVlOworICAgICAgICAgICAgbV9n
cmFwaC5kb1RvQ2hpbGRyZW4obm9kZSwgWyZdKEVkZ2UmIGVkZ2UpIHsKKyAgICAgICAgICAgICAg
ICAvLyBDYWxsZWUuIElnbm9yZSB0aGlzLiBERkdCeXRlQ29kZVBhcnNlciBhbHJlYWR5IGVtaXQg
YXBwcm9wcmlhdGUgY2hlY2tzLgorICAgICAgICAgICAgICAgIGlmICghaW5kZXgpCisgICAgICAg
ICAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICAgICAgICAgIGlmIChpbmRleCA9PSAxKSB7
CisgICAgICAgICAgICAgICAgICAgIC8vIERPTSBub2RlIGNhc2UuCisgICAgICAgICAgICAgICAg
ICAgIGlmIChlZGdlLT5zaG91bGRTcGVjdWxhdGVOb3RDZWxsKCkpCisgICAgICAgICAgICAgICAg
ICAgICAgICBzaG91bGRDb252ZXJ0VG9DYWxsRE9NID0gZmFsc2U7CisgICAgICAgICAgICAgICAg
fSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChzaWduYXR1cmUtPmFyZ3VtZW50
c1tpbmRleCAtIDJdKSB7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgU3BlY1N0cmluZzoKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGlmIChlZGdlLT5zaG91bGRTcGVjdWxhdGVOb3RTdHJpbmco
KSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaG91bGRDb252ZXJ0VG9DYWxsRE9NID0g
ZmFsc2U7CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAg
ICAgY2FzZSBTcGVjSW50MzJPbmx5OgorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVkZ2Ut
PnNob3VsZFNwZWN1bGF0ZU5vdEludDMyKCkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c2hvdWxkQ29udmVydFRvQ2FsbERPTSA9IGZhbHNlOworICAgICAgICAgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgU3BlY0Jvb2xlYW46CisgICAgICAgICAg
ICAgICAgICAgICAgICBpZiAoZWRnZS0+c2hvdWxkU3BlY3VsYXRlTm90Qm9vbGVhbigpKQorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHNob3VsZENvbnZlcnRUb0NhbGxET00gPSBmYWxzZTsK
KyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICsraW5kZXg7CisgICAgICAgICAgICB9
KTsKKyAgICAgICAgICAgIGlmICghc2hvdWxkQ29udmVydFRvQ2FsbERPTSkKKyAgICAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKworICAgICAgICBOb2RlKiB0aGlzTm9kZSA9
IG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMSkubm9kZSgpOworICAgICAgICBSZWY8RE9NSklU
OjpQYXRjaHBvaW50PiBjaGVja0RPTVBhdGNocG9pbnQgPSBzaWduYXR1cmUtPmNoZWNrRE9NKCk7
CisgICAgICAgIG1fZ3JhcGgubV9kb21KSVRQYXRjaHBvaW50cy5hcHBlbmQoY2hlY2tET01QYXRj
aHBvaW50LnB0cigpKTsKKyAgICAgICAgTm9kZSogY2hlY2tET00gPSBtX2luc2VydGlvblNldC5p
bnNlcnROb2RlKG1faW5kZXhJbkJsb2NrLCBTcGVjTm9uZSwgQ2hlY2tET00sIG5vZGUtPm9yaWdp
biwgT3BJbmZvKGNoZWNrRE9NUGF0Y2hwb2ludC5wdHIoKSksIE9wSW5mbyhzaWduYXR1cmUtPmNs
YXNzSW5mbyksIEVkZ2UodGhpc05vZGUpKTsKKyAgICAgICAgbm9kZS0+Y29udmVydFRvQ2FsbERP
TShtX2dyYXBoKTsKKyAgICAgICAgZml4dXBDaGVja0RPTShjaGVja0RPTSk7CisgICAgICAgIGZp
eHVwQ2FsbERPTShub2RlKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgdm9p
ZCBmaXh1cENoZWNrRE9NKE5vZGUqIG5vZGUpCisgICAgeworICAgICAgICBmaXhFZGdlPENlbGxV
c2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICB9CisKKyAgICB2b2lkIGZpeHVwQ2FsbERPTShOb2Rl
KiBub2RlKQorICAgIHsKKyAgICAgICAgY29uc3QgRE9NSklUOjpTaWduYXR1cmUqIHNpZ25hdHVy
ZSA9IG5vZGUtPnNpZ25hdHVyZSgpOworICAgICAgICBhdXRvIGZpeHVwID0gWyZdKEVkZ2UmIGVk
Z2UsIGludCBhcmd1bWVudEluZGV4KSB7CisgICAgICAgICAgICBpZiAoIWVkZ2UpCisgICAgICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgc3dpdGNoIChzaWduYXR1cmUtPmFyZ3VtZW50
c1thcmd1bWVudEluZGV4XSkgeworICAgICAgICAgICAgY2FzZSBTcGVjU3RyaW5nOgorICAgICAg
ICAgICAgICAgIGZpeEVkZ2U8U3RyaW5nVXNlPihlZGdlKTsKKyAgICAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICAgIGNhc2UgU3BlY0ludDMyT25seToKKyAgICAgICAgICAgICAgICBmaXhF
ZGdlPEludDMyVXNlPihlZGdlKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg
IGNhc2UgU3BlY0Jvb2xlYW46CisgICAgICAgICAgICAgICAgZml4RWRnZTxCb29sZWFuVXNlPihl
ZGdlKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAg
ICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfTsKKyAgICAgICAgZml4RWRnZTxDZWxs
VXNlPihub2RlLT5jaGlsZDEoKSk7IC8vIERPTS4KKyAgICAgICAgZml4dXAobm9kZS0+Y2hpbGQy
KCksIDApOworICAgICAgICBmaXh1cChub2RlLT5jaGlsZDMoKSwgMSk7CisgICAgfQorCiAgICAg
dm9pZCBmaXh1cENoZWNrc0luQmxvY2soQmFzaWNCbG9jayogYmxvY2spCiAgICAgewogICAgICAg
ICBpZiAoIWJsb2NrKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdO
b2RlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5jcHAKaW5kZXggZjM3
MTE3YmY5NjlmZTRiNjlkOTVmMDAxZDU2ODgwNDZiZGNkOTQ1MC4uY2UyNWMwZGQxMzIxMGJlMTJh
Yjk1NzkwMmRiYTY2OWE3YmQ4NmRmYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdOb2RlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUu
Y3BwCkBAIC0yMjAsNiArMjIwLDI1IEBAIHZvaWQgTm9kZTo6Y29udmVydFRvRGlyZWN0Q2FsbChG
cm96ZW5WYWx1ZSogZXhlY3V0YWJsZSkKICAgICBtX29wSW5mbyA9IGV4ZWN1dGFibGU7CiB9CiAK
K3ZvaWQgTm9kZTo6Y29udmVydFRvQ2FsbERPTShHcmFwaCYgZ3JhcGgpCit7CisgICAgQVNTRVJU
KG9wKCkgPT0gQ2FsbCk7CisgICAgQVNTRVJUKHNpZ25hdHVyZSgpKTsKKworICAgIEVkZ2UgZWRn
ZXNbM107CisgICAgLy8gU2tpcCB0aGUgZmlyc3Qgb25lLiBUaGlzIGlzIGNhbGxlZS4KKyAgICBm
b3IgKHVuc2lnbmVkIGkgPSAxLCBpeiA9IG51bUNoaWxkcmVuKCk7IGkgPCBpejsgKytpKQorICAg
ICAgICBlZGdlc1tpIC0gMV0gPSBncmFwaC52YXJBcmdDaGlsZCh0aGlzLCBpKTsKKworICAgIHNl
dE9wQW5kRGVmYXVsdEZsYWdzKENhbGxET00pOworICAgIGNoaWxkcmVuLnNldENoaWxkMShlZGdl
c1swXSk7CisgICAgY2hpbGRyZW4uc2V0Q2hpbGQyKGVkZ2VzWzFdKTsKKyAgICBjaGlsZHJlbi5z
ZXRDaGlsZDMoZWRnZXNbMl0pOworCisgICAgaWYgKCFzaWduYXR1cmUoKS0+ZWZmZWN0Lm11c3RH
ZW5lcmF0ZSgpKQorICAgICAgICBjbGVhckZsYWdzKE5vZGVNdXN0R2VuZXJhdGUpOworfQorCiBT
dHJpbmcgTm9kZTo6dHJ5R2V0U3RyaW5nKEdyYXBoJiBncmFwaCkKIHsKICAgICBpZiAoaGFzQ29u
c3RhbnQoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgKaW5kZXggODhmODgxMTg5MGUx
NzczZWExZDYwMmU5Y2FjOWM1ODFkYTRmOWI5Yi4uODMwOWFhMzA5YTBhOWU2MTQyY2NhMjk1MTky
OGVhZGFiOTcyYTViMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdO
b2RlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgKQEAgLTYyLDYg
KzYyLDcgQEAgbmFtZXNwYWNlIERPTUpJVCB7CiBjbGFzcyBHZXR0ZXJTZXR0ZXI7CiBjbGFzcyBQ
YXRjaHBvaW50OwogY2xhc3MgQ2FsbERPTUdldHRlclBhdGNocG9pbnQ7CitjbGFzcyBTaWduYXR1
cmU7CiB9CiAKIG5hbWVzcGFjZSBQcm9maWxlciB7CkBAIC02NTIsNiArNjUzLDggQEAgc3RydWN0
IE5vZGUgewogICAgIH0KICAgICAKICAgICB2b2lkIGNvbnZlcnRUb0RpcmVjdENhbGwoRnJvemVu
VmFsdWUqKTsKKworICAgIHZvaWQgY29udmVydFRvQ2FsbERPTShHcmFwaCYpOwogICAgIAogICAg
IEpTVmFsdWUgYXNKU1ZhbHVlKCkKICAgICB7CkBAIC0xNDY0LDYgKzE0NjcsNyBAQCBzdHJ1Y3Qg
Tm9kZSB7CiAgICAgICAgIGNhc2UgVG9OdW1iZXI6CiAgICAgICAgIGNhc2UgTG9hZEZyb21KU01h
cEJ1Y2tldDoKICAgICAgICAgY2FzZSBDYWxsRE9NR2V0dGVyOgorICAgICAgICBjYXNlIENhbGxE
T006CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKQEAgLTE5ODEsNiArMTk4NSwxMSBAQCBzdHJ1Y3QgTm9kZSB7CiAg
ICAgewogICAgICAgICByZXR1cm4gaXNJbnQzMlNwZWN1bGF0aW9uKHByZWRpY3Rpb24oKSk7CiAg
ICAgfQorCisgICAgYm9vbCBzaG91bGRTcGVjdWxhdGVOb3RJbnQzMigpCisgICAgeworICAgICAg
ICByZXR1cm4gaXNOb3RJbnQzMlNwZWN1bGF0aW9uKHByZWRpY3Rpb24oKSk7CisgICAgfQogICAg
IAogICAgIGJvb2wgc2F3Qm9vbGVhbnMoKQogICAgIHsKQEAgLTIwNDEsNiArMjA1MCwxMSBAQCBz
dHJ1Y3QgTm9kZSB7CiAgICAgewogICAgICAgICByZXR1cm4gaXNCb29sZWFuU3BlY3VsYXRpb24o
cHJlZGljdGlvbigpKTsKICAgICB9CisKKyAgICBib29sIHNob3VsZFNwZWN1bGF0ZU5vdEJvb2xl
YW4oKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGlzTm90Qm9vbGVhblNwZWN1bGF0aW9uKHByZWRp
Y3Rpb24oKSk7CisgICAgfQogICAgIAogICAgIGJvb2wgc2hvdWxkU3BlY3VsYXRlT3RoZXIoKQog
ICAgIHsKQEAgLTIwNjYsNiArMjA4MCwxMSBAQCBzdHJ1Y3QgTm9kZSB7CiAgICAgewogICAgICAg
ICByZXR1cm4gaXNTdHJpbmdTcGVjdWxhdGlvbihwcmVkaWN0aW9uKCkpOwogICAgIH0KKworICAg
IGJvb2wgc2hvdWxkU3BlY3VsYXRlTm90U3RyaW5nKCkKKyAgICB7CisgICAgICAgIHJldHVybiBp
c05vdFN0cmluZ1NwZWN1bGF0aW9uKHByZWRpY3Rpb24oKSk7CisgICAgfQogIAogICAgIGJvb2wg
c2hvdWxkU3BlY3VsYXRlU3RyaW5nT3JPdGhlcigpCiAgICAgewpAQCAtMjM2OCw2ICsyMzg3LDE4
IEBAIHN0cnVjdCBOb2RlIHsKICAgICAgICAgcmV0dXJuIG1fb3BJbmZvMi5hczxjb25zdCBDbGFz
c0luZm8qPigpOwogICAgIH0KIAorICAgIGJvb2wgaGFzU2lnbmF0dXJlKCkgY29uc3QKKyAgICB7
CisgICAgICAgIC8vIE5vdGUgdGhhdCB0aGlzIGRvZXMgbm90IGluY2x1ZGUgVGFpbENhbGwgdGhp
bmd5IGludGVudGlvbmFsbHkuCisgICAgICAgIC8vIENhbGxET00gdGhpbmd5IGFyZSBhbHdheXMg
Y29udmVydGVkIGZyb20gQ2FsbC4KKyAgICAgICAgcmV0dXJuIG9wKCkgPT0gQ2FsbCB8fCBvcCgp
ID09IENhbGxET007CisgICAgfQorCisgICAgY29uc3QgRE9NSklUOjpTaWduYXR1cmUqIHNpZ25h
dHVyZSgpCisgICAgeworICAgICAgICByZXR1cm4gbV9vcEluZm8uYXM8Y29uc3QgRE9NSklUOjpT
aWduYXR1cmUqPigpOworICAgIH0KKwogICAgIE5vZGUqIHJlcGxhY2VtZW50KCkgY29uc3QKICAg
ICB7CiAgICAgICAgIHJldHVybiBtX21pc2MucmVwbGFjZW1lbnQ7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR05vZGVUeXBlLmgKaW5kZXggZDk3NWI3NjIyMGMwMmMxMzExYzE5MmVhOWFkMDJl
NjAxYTUyMDRlMC4uZjM3NDIzY2VlYjIyODYyYjZjMmZhYTViYmEwMzQ1YTMzNmVmNjM5ZSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaApAQCAtNDA3LDYgKzQwNyw3IEBA
IG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKICAgICAvKiBOb2RlcyBmb3IgRE9NIEpJ
VCAqL1wKICAgICBtYWNybyhDaGVja0RPTSwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3Jv
KENhbGxET01HZXR0ZXIsIE5vZGVSZXN1bHRKUyB8IE5vZGVNdXN0R2VuZXJhdGUpIFwKKyAgICBt
YWNybyhDYWxsRE9NLCBOb2RlUmVzdWx0SlMgfCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAKIC8vIFRo
aXMgZW51bSBnZW5lcmF0ZXMgYSBtb25vdG9uaWNhbGx5IGluY3JlYXNpbmcgaWQgZm9yIGFsbCBO
b2RlIHR5cGVzLAogLy8gYW5kIGlzIHVzZWQgYnkgdGhlIHN1YnNlcXVlbnQgZW51bSB0byBmaWxs
IG91dCB0aGUgaWQgKGFzIGFjY2Vzc2VkIHZpYSB0aGUgTm9kZUlkTWFzaykuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNl
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9u
UGhhc2UuY3BwCmluZGV4IDZlZDcyOWIzYjg1NzMxYzBhNmU1MDk2NzA5Zjk4MDE2YTRiMWY4ZTAu
LmMwZmRlOTY5ZmJjMjQ2YzZiOTE4NjAwZGM0N2FmNzlhYWQxYTZmZjkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9u
UGhhc2UuY3BwCkBAIC03MTAsNyArNzEwLDggQEAgY2xhc3MgUHJlZGljdGlvblByb3BhZ2F0aW9u
UGhhc2UgOiBwdWJsaWMgUGhhc2UgewogICAgICAgICBjYXNlIEdldEZyb21Bcmd1bWVudHM6CiAg
ICAgICAgIGNhc2UgTG9hZEZyb21KU01hcEJ1Y2tldDoKICAgICAgICAgY2FzZSBUb051bWJlcjoK
LSAgICAgICAgY2FzZSBDYWxsRE9NR2V0dGVyOiB7CisgICAgICAgIGNhc2UgQ2FsbERPTUdldHRl
cjoKKyAgICAgICAgY2FzZSBDYWxsRE9NOiB7CiAgICAgICAgICAgICBzZXRQcmVkaWN0aW9uKG1f
Y3VycmVudE5vZGUtPmdldEhlYXBQcmVkaWN0aW9uKCkpOwogICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRv
RXhlY3V0ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgK
aW5kZXggMmM5OTgwMjI1NjY3ZGYzNDA1MGRjYTZhMzRlODdmMzRkNTk4ZWQyYi4uM2ZlOWRjMTVk
ZWUxN2I4MWQyMmZmNjQ0M2ZlZDY3ZjQ3Njk2M2NhMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgKQEAgLTIyMCw2ICsyMjAsNyBAQCBib29sIHNhZmVU
b0V4ZWN1dGUoQWJzdHJhY3RTdGF0ZVR5cGUmIHN0YXRlLCBHcmFwaCYgZ3JhcGgsIE5vZGUqIG5v
ZGUpCiAgICAgY2FzZSBHZXRFeGVjdXRhYmxlOgogICAgIGNhc2UgR2V0QnV0dGVyZmx5OgogICAg
IGNhc2UgQ2FsbERPTUdldHRlcjoKKyAgICBjYXNlIENhbGxET006CiAgICAgY2FzZSBDaGVja0RP
TToKICAgICBjYXNlIENoZWNrQXJyYXk6CiAgICAgY2FzZSBBcnJheWlmeToKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKaW5kZXggMjczMmZlODU4
NDRlNTFmNDY3MGIwYWU0MDNmMmFjMjM1MDRjODcxYy4uOWZkZTU1NTQ0Y2ExYTIwZWU4NWU4NWY1
MjUwZWY2MGY3YjU4YjFhNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTcGVjdWxhdGl2ZUpJVC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
cGVjdWxhdGl2ZUpJVC5jcHAKQEAgLTcyNjAsNiArNzI2MCw4NiBAQCBzdGF0aWMgdm9pZCBhbGxv
Y2F0ZVRlbXBvcmFyeVJlZ2lzdGVyc0ZvclBhdGNocG9pbnQoU3BlY3VsYXRpdmVKSVQqIGppdCwg
VmVjdG9yPAogICAgIH0KIH0KIAordm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUNhbGxET00o
Tm9kZSogbm9kZSkKK3sKKyAgICBjb25zdCBET01KSVQ6OlNpZ25hdHVyZSogc2lnbmF0dXJlID0g
bm9kZS0+c2lnbmF0dXJlKCk7CisKKyAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGhhdmUgYSB3YXkg
dG8gY2FsbCBmdW5jdGlvbnMgd2l0aCB0aGUgdmVjdG9yIG9mIHJlZ2lzdGVycy4KKyAgICAvLyBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYzMDk5CisgICAgVmVjdG9y
PFZhcmlhbnQ8U3BlY3VsYXRlQ2VsbE9wZXJhbmQsIFNwZWN1bGF0ZUludDMyT3BlcmFuZCwgU3Bl
Y3VsYXRlQm9vbGVhbk9wZXJhbmQ+PiBvcGVyYW5kczsKKyAgICBWZWN0b3I8R1BSUmVnPiByZWdz
OworCisgICAgYXV0byBhcHBlbmRDZWxsID0gWyZdKEVkZ2UmIGVkZ2UpIHsKKyAgICAgICAgU3Bl
Y3VsYXRlQ2VsbE9wZXJhbmQgb3BlcmFuZCh0aGlzLCBlZGdlKTsKKyAgICAgICAgcmVncy5hcHBl
bmQob3BlcmFuZC5ncHIoKSk7CisgICAgICAgIG9wZXJhbmRzLmFwcGVuZChXVEZNb3ZlKG9wZXJh
bmQpKTsKKyAgICB9OworCisgICAgYXV0byBhcHBlbmRTdHJpbmcgPSBbJl0oRWRnZSYgZWRnZSkg
eworICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBvcGVyYW5kKHRoaXMsIGVkZ2UpOworICAg
ICAgICBHUFJSZWcgZ3ByID0gb3BlcmFuZC5ncHIoKTsKKyAgICAgICAgcmVncy5hcHBlbmQoZ3By
KTsKKyAgICAgICAgc3BlY3VsYXRlU3RyaW5nKGVkZ2UsIGdwcik7CisgICAgICAgIG9wZXJhbmRz
LmFwcGVuZChXVEZNb3ZlKG9wZXJhbmQpKTsKKyAgICB9OworCisgICAgYXV0byBhcHBlbmRJbnQz
MiA9IFsmXShFZGdlJiBlZGdlKSB7CisgICAgICAgIFNwZWN1bGF0ZUludDMyT3BlcmFuZCBvcGVy
YW5kKHRoaXMsIGVkZ2UpOworICAgICAgICByZWdzLmFwcGVuZChvcGVyYW5kLmdwcigpKTsKKyAg
ICAgICAgb3BlcmFuZHMuYXBwZW5kKFdURk1vdmUob3BlcmFuZCkpOworICAgIH07CisKKyAgICBh
dXRvIGFwcGVuZEJvb2xlYW4gPSBbJl0oRWRnZSYgZWRnZSkgeworICAgICAgICBTcGVjdWxhdGVC
b29sZWFuT3BlcmFuZCBvcGVyYW5kKHRoaXMsIGVkZ2UpOworICAgICAgICByZWdzLmFwcGVuZChv
cGVyYW5kLmdwcigpKTsKKyAgICAgICAgb3BlcmFuZHMuYXBwZW5kKFdURk1vdmUob3BlcmFuZCkp
OworICAgIH07CisKKyAgICB1bnNpZ25lZCBpbmRleCA9IDA7CisgICAgbV9qaXQuZ3JhcGgoKS5k
b1RvQ2hpbGRyZW4obm9kZSwgWyZdKEVkZ2UgZWRnZSkgeworICAgICAgICBpZiAoIWluZGV4KQor
ICAgICAgICAgICAgYXBwZW5kQ2VsbChlZGdlKTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAg
ICBzd2l0Y2ggKHNpZ25hdHVyZS0+YXJndW1lbnRzW2luZGV4IC0gMV0pIHsKKyAgICAgICAgICAg
IGNhc2UgU3BlY1N0cmluZzoKKyAgICAgICAgICAgICAgICBhcHBlbmRTdHJpbmcoZWRnZSk7Cisg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIFNwZWNJbnQzMk9ubHk6Cisg
ICAgICAgICAgICAgICAgYXBwZW5kSW50MzIoZWRnZSk7CisgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICBjYXNlIFNwZWNCb29sZWFuOgorICAgICAgICAgICAgICAgIGFwcGVuZEJv
b2xlYW4oZWRnZSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAg
ICAgIH0KKyAgICAgICAgKytpbmRleDsKKyAgICB9KTsKKworICAgIEpTVmFsdWVSZWdzVGVtcG9y
YXJ5IHJlc3VsdCh0aGlzKTsKKyAgICBKU1ZhbHVlUmVncyByZXN1bHRSZWdzID0gcmVzdWx0LnJl
Z3MoKTsKKworICAgIHNpbGVudFNwaWxsQWxsUmVnaXN0ZXJzKHJlc3VsdFJlZ3MpOworICAgIGlu
dCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyA9IHNpZ25hdHVyZS0+YXJndW1lbnRDb3VudCAr
IDE7CisgICAgc3dpdGNoIChhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcykgeworICAgIGNhc2Ug
MToKKyAgICAgICAgY2FsbE9wZXJhdGlvbihyZWludGVycHJldF9jYXN0PEpfSklUT3BlcmF0aW9u
X0VQPihzaWduYXR1cmUtPnVuc2FmZUZ1bmN0aW9uKSwgZXh0cmFjdFJlc3VsdChyZXN1bHRSZWdz
KSwgcmVnc1swXSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgMjoKKyAgICAgICAgY2FsbE9w
ZXJhdGlvbihyZWludGVycHJldF9jYXN0PEpfSklUT3BlcmF0aW9uX0VQUD4oc2lnbmF0dXJlLT51
bnNhZmVGdW5jdGlvbiksIGV4dHJhY3RSZXN1bHQocmVzdWx0UmVncyksIHJlZ3NbMF0sIHJlZ3Nb
MV0pOworICAgICAgICBicmVhazsKKyAgICBjYXNlIDM6CisgICAgICAgIGNhbGxPcGVyYXRpb24o
cmVpbnRlcnByZXRfY2FzdDxKX0pJVE9wZXJhdGlvbl9FUFBQPihzaWduYXR1cmUtPnVuc2FmZUZ1
bmN0aW9uKSwgZXh0cmFjdFJlc3VsdChyZXN1bHRSZWdzKSwgcmVnc1swXSwgcmVnc1sxXSwgcmVn
c1syXSk7CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIFJFTEVBU0VfQVNT
RVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIHNpbGVudEZp
bGxBbGxSZWdpc3RlcnMocmVzdWx0UmVncyk7CisgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsK
KyAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdFJlZ3MsIG5vZGUpOworfQorCiB2b2lkIFNwZWN1bGF0
aXZlSklUOjpjb21waWxlQ2FsbERPTUdldHRlcihOb2RlKiBub2RlKQogewogICAgIERPTUpJVDo6
Q2FsbERPTUdldHRlclBhdGNocG9pbnQqIHBhdGNocG9pbnQgPSBub2RlLT5jYWxsRE9NR2V0dGVy
RGF0YSgpLT5wYXRjaHBvaW50OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTcGVjdWxhdGl2ZUpJVC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVj
dWxhdGl2ZUpJVC5oCmluZGV4IDU2NTM4YTI5NDZlNDAzMDBmMDUwZjMzNTUyYTczY2NhNzU5Y2Vh
Y2EuLjc5NmE4YTM1ZTZkMzA1N2ZhYWJlYTA3OWEwMjAzZDVkNDk5YTk1YjEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKQEAgLTE2NTEsNiArMTY1
MSwxMSBAQCBjbGFzcyBTcGVjdWxhdGl2ZUpJVCB7CiAgICAgICAgIG1faml0LnNldHVwQXJndW1l
bnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyKTsKICAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxT
ZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOwogICAgIH0KKyAgICBKSVRDb21waWxlcjo6Q2Fs
bCBjYWxsT3BlcmF0aW9uKEpfSklUT3BlcmF0aW9uX0VQUFAgb3BlcmF0aW9uLCBHUFJSZWcgcmVz
dWx0LCBHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIsIEdQUlJlZyBhcmczKQorICAgIHsKKyAgICAg
ICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIsIGFyZzMpOwor
ICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7Cisg
ICAgfQogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9KSVRPcGVyYXRpb25f
RUdQIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyKQog
ICAgIHsKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFy
ZzIpOwpAQCAtMTkxNSw2ICsxOTIwLDE2IEBAIGNsYXNzIFNwZWN1bGF0aXZlSklUIHsKICAgICAg
ICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIFRydXN0ZWRJbW1QdHIo
cG9pbnRlcikpOwogICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb24s
IHJlc3VsdC5wYXlsb2FkR1BSKCksIHJlc3VsdC50YWdHUFIoKSk7CiAgICAgfQorICAgIEpJVENv
bXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9KSVRPcGVyYXRpb25fRVBQIG9wZXJhdGlvbiwg
SlNWYWx1ZVJlZ3MgcmVzdWx0LCBHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIpCisgICAgeworICAg
ICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMik7CisgICAg
ICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0LnBheWxvYWRH
UFIoKSwgcmVzdWx0LnRhZ0dQUigpKTsKKyAgICB9CisgICAgSklUQ29tcGlsZXI6OkNhbGwgY2Fs
bE9wZXJhdGlvbihKX0pJVE9wZXJhdGlvbl9FUFBQIG9wZXJhdGlvbiwgSlNWYWx1ZVJlZ3MgcmVz
dWx0LCBHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIsIEdQUlJlZyBhcmczKQorICAgIHsKKyAgICAg
ICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIsIGFyZzMpOwor
ICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdC5wYXls
b2FkR1BSKCksIHJlc3VsdC50YWdHUFIoKSk7CisgICAgfQogICAgIEpJVENvbXBpbGVyOjpDYWxs
IGNhbGxPcGVyYXRpb24oSl9KSVRPcGVyYXRpb25fRUdQIG9wZXJhdGlvbiwgSlNWYWx1ZVJlZ3Mg
cmVzdWx0LCBHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIpCiAgICAgewogICAgICAgICBtX2ppdC5z
ZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMik7CkBAIC0yNTYyLDYgKzI1Nzcs
NyBAQCBjbGFzcyBTcGVjdWxhdGl2ZUpJVCB7CiAgICAgdm9pZCBjb21waWxlUmVhbGxvY2F0ZVBy
b3BlcnR5U3RvcmFnZShOb2RlKik7CiAgICAgdm9pZCBjb21waWxlR2V0QnV0dGVyZmx5KE5vZGUq
KTsKICAgICB2b2lkIGNvbXBpbGVDYWxsRE9NR2V0dGVyKE5vZGUqKTsKKyAgICB2b2lkIGNvbXBp
bGVDYWxsRE9NKE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVDaGVja0RPTShOb2RlKik7CiAgICAg
CiAjaWYgVVNFKEpTVkFMVUUzMl82NCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCmluZGV4IGNiMDRhNWE2NWM3NTBlMjNmMTdj
OWRiMjM0MTViNzM0YWVmNWI0YTQuLjEwMjQyOWRlMDAwYjMyYWRmZGQwMjc0M2VjNmRmZGRlZTgx
ZjUzYWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRp
dmVKSVQzMl82NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxh
dGl2ZUpJVDMyXzY0LmNwcApAQCAtNTU2MSw2ICs1NTYxLDEwIEBAIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgYnJlYWs7CiAgICAgfQogCisgICAgY2Fz
ZSBDYWxsRE9NOgorICAgICAgICBjb21waWxlQ2FsbERPTShub2RlKTsKKyAgICAgICAgYnJlYWs7
CisKICAgICBjYXNlIENhbGxET01HZXR0ZXI6CiAgICAgICAgIGNvbXBpbGVDYWxsRE9NR2V0dGVy
KG5vZGUpOwogICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCmluZGV4IGI0MWM2ZjMyYjMzZDgzYzY1ZTg1NGY4NjA3
OGQ3NGE1MjQwMjk4MTMuLjgzMGJmYWRjYWYyODY2N2EwOGIxYjgyZWU1OTg4YzBjNjVkMmNhYjkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2
NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0
LmNwcApAQCAtNTY5Myw2ICs1NjkzLDEwIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUo
Tm9kZSogbm9kZSkKICAgICAgICAgY29tcGlsZU1hdGVyaWFsaXplTmV3T2JqZWN0KG5vZGUpOwog
ICAgICAgICBicmVhazsKIAorICAgIGNhc2UgQ2FsbERPTToKKyAgICAgICAgY29tcGlsZUNhbGxE
T00obm9kZSk7CisgICAgICAgIGJyZWFrOworCiAgICAgY2FzZSBDYWxsRE9NR2V0dGVyOgogICAg
ICAgICBjb21waWxlQ2FsbERPTUdldHRlcihub2RlKTsKICAgICAgICAgYnJlYWs7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZG9taml0L0RPTUpJVEVmZmVjdC5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RvbWppdC9ET01KSVRFZmZlY3QuaAppbmRleCA1OWUzMDBjMzkyNjEw
NDdhMTEyMjkwZGE4NmI0ZmExNjhkOWM2MzA2Li42MWNmM2I3MWFiYmNlMzFlNDUxMzZhZjI4NmM2
YzdhZjIzNjY4YTZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZG9taml0L0RP
TUpJVEVmZmVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kb21qaXQvRE9NSklURWZm
ZWN0LmgKQEAgLTI4LDU2ICsyOCw2MiBAQAogI2luY2x1ZGUgIkRPTUpJVEhlYXBSYW5nZS5oIgog
I2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgogCi0jaWYgRU5BQkxFKEpJVCkKLQogbmFtZXNwYWNl
IEpTQyB7IG5hbWVzcGFjZSBET01KSVQgewogCi1zdHJ1Y3QgRWZmZWN0IHsKK2NsYXNzIEVmZmVj
dCB7CitwdWJsaWM6CiAgICAgSGVhcFJhbmdlIHJlYWRzIHsgSGVhcFJhbmdlOjp0b3AoKSB9Owog
ICAgIEhlYXBSYW5nZSB3cml0ZXMgeyBIZWFwUmFuZ2U6OnRvcCgpIH07Ci0gICAgT3B0aW9uYWw8
SGVhcFJhbmdlPiBkZWY7CisgICAgSGVhcFJhbmdlIGRlZiB7IEhlYXBSYW5nZTo6dG9wKCkgfTsK
KworICAgIGNvbnN0ZXhwciBFZmZlY3QoKSA9IGRlZmF1bHQ7CisgICAgY29uc3RleHByIEVmZmVj
dChIZWFwUmFuZ2UgcmVhZHMsIEhlYXBSYW5nZSB3cml0ZXMpCisgICAgICAgIDogcmVhZHMocmVh
ZHMpCisgICAgICAgICwgd3JpdGVzKHdyaXRlcykKKyAgICB7CisgICAgfQorCisgICAgY29uc3Rl
eHByIEVmZmVjdChIZWFwUmFuZ2UgcmVhZHMsIEhlYXBSYW5nZSB3cml0ZXMsIEhlYXBSYW5nZSBk
ZWYpCisgICAgICAgIDogcmVhZHMocmVhZHMpCisgICAgICAgICwgd3JpdGVzKHdyaXRlcykKKyAg
ICAgICAgLCBkZWYoZGVmKQorICAgIHsKKyAgICB9CiAKLSAgICBzdGF0aWMgRWZmZWN0IGZvclJl
YWRXcml0ZShIZWFwUmFuZ2UgcmVhZFJhbmdlLCBIZWFwUmFuZ2Ugd3JpdGVSYW5nZSkKKyAgICBj
b25zdGV4cHIgc3RhdGljIEVmZmVjdCBmb3JXcml0ZShIZWFwUmFuZ2Ugd3JpdGVSYW5nZSkKICAg
ICB7Ci0gICAgICAgIEVmZmVjdCBlZmZlY3Q7Ci0gICAgICAgIGVmZmVjdC5yZWFkcyA9IHJlYWRS
YW5nZTsKLSAgICAgICAgZWZmZWN0LndyaXRlcyA9IHdyaXRlUmFuZ2U7Ci0gICAgICAgIHJldHVy
biBlZmZlY3Q7CisgICAgICAgIHJldHVybiBFZmZlY3QoSGVhcFJhbmdlOjpub25lKCksIHdyaXRl
UmFuZ2UpOwogICAgIH0KIAotICAgIHN0YXRpYyBFZmZlY3QgZm9yUHVyZSgpCisgICAgY29uc3Rl
eHByIHN0YXRpYyBFZmZlY3QgZm9yUmVhZChIZWFwUmFuZ2UgcmVhZFJhbmdlKQogICAgIHsKLSAg
ICAgICAgRWZmZWN0IGVmZmVjdDsKLSAgICAgICAgZWZmZWN0LnJlYWRzID0gSGVhcFJhbmdlOjpu
b25lKCk7Ci0gICAgICAgIGVmZmVjdC53cml0ZXMgPSBIZWFwUmFuZ2U6Om5vbmUoKTsKLSAgICAg
ICAgZWZmZWN0LmRlZiA9IEhlYXBSYW5nZTo6bm9uZSgpOwotICAgICAgICByZXR1cm4gZWZmZWN0
OworICAgICAgICByZXR1cm4gRWZmZWN0KHJlYWRSYW5nZSwgSGVhcFJhbmdlOjpub25lKCkpOwog
ICAgIH0KIAotICAgIHN0YXRpYyBFZmZlY3QgZm9yRGVmKEhlYXBSYW5nZSBkZWYpCisgICAgY29u
c3RleHByIHN0YXRpYyBFZmZlY3QgZm9yUmVhZFdyaXRlKEhlYXBSYW5nZSByZWFkUmFuZ2UsIEhl
YXBSYW5nZSB3cml0ZVJhbmdlKQogICAgIHsKLSAgICAgICAgRWZmZWN0IGVmZmVjdDsKLSAgICAg
ICAgZWZmZWN0LnJlYWRzID0gZGVmOwotICAgICAgICBlZmZlY3Qud3JpdGVzID0gSGVhcFJhbmdl
Ojpub25lKCk7Ci0gICAgICAgIGVmZmVjdC5kZWYgPSBkZWY7Ci0gICAgICAgIHJldHVybiBlZmZl
Y3Q7CisgICAgICAgIHJldHVybiBFZmZlY3QocmVhZFJhbmdlLCB3cml0ZVJhbmdlKTsKICAgICB9
CiAKLSAgICBzdGF0aWMgRWZmZWN0IGZvckRlZihIZWFwUmFuZ2UgZGVmLCBIZWFwUmFuZ2UgcmVh
ZFJhbmdlLCBIZWFwUmFuZ2Ugd3JpdGVSYW5nZSkKKyAgICBjb25zdGV4cHIgc3RhdGljIEVmZmVj
dCBmb3JQdXJlKCkKICAgICB7Ci0gICAgICAgIEVmZmVjdCBlZmZlY3Q7Ci0gICAgICAgIGVmZmVj
dC5yZWFkcyA9IHJlYWRSYW5nZTsKLSAgICAgICAgZWZmZWN0LndyaXRlcyA9IHdyaXRlUmFuZ2U7
Ci0gICAgICAgIGVmZmVjdC5kZWYgPSBkZWY7Ci0gICAgICAgIHJldHVybiBlZmZlY3Q7CisgICAg
ICAgIHJldHVybiBFZmZlY3QoSGVhcFJhbmdlOjpub25lKCksIEhlYXBSYW5nZTo6bm9uZSgpLCBI
ZWFwUmFuZ2U6Om5vbmUoKSk7CiAgICAgfQogCi0gICAgYm9vbCBtdXN0R2VuZXJhdGUoKSBjb25z
dAorICAgIGNvbnN0ZXhwciBzdGF0aWMgRWZmZWN0IGZvckRlZihIZWFwUmFuZ2UgZGVmKQorICAg
IHsKKyAgICAgICAgcmV0dXJuIEVmZmVjdChkZWYsIEhlYXBSYW5nZTo6bm9uZSgpLCBkZWYpOwor
ICAgIH0KKworICAgIGNvbnN0ZXhwciBzdGF0aWMgRWZmZWN0IGZvckRlZihIZWFwUmFuZ2UgZGVm
LCBIZWFwUmFuZ2UgcmVhZFJhbmdlLCBIZWFwUmFuZ2Ugd3JpdGVSYW5nZSkKKyAgICB7CisgICAg
ICAgIHJldHVybiBFZmZlY3QocmVhZFJhbmdlLCB3cml0ZVJhbmdlLCBkZWYpOworICAgIH0KKwor
ICAgIGNvbnN0ZXhwciBib29sIG11c3RHZW5lcmF0ZSgpIGNvbnN0CiAgICAgewogICAgICAgICBy
ZXR1cm4gISF3cml0ZXM7CiAgICAgfQogfTsKIAogfSB9Ci0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RvbWppdC9ET01KSVRIZWFwUmFuZ2UuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kb21qaXQvRE9NSklUSGVhcFJhbmdlLmgKaW5kZXggZmI5Mzk5OWZmNzg1
YzA2ZjdkYWNkNmRhOWM4ZDZlMGE5NTY3ODY3NC4uZjcwZmVjYzY5MDZkZDViZTA1NDI5NWU3MDhl
OTRiNzc5MzExNjQwZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RvbWppdC9E
T01KSVRIZWFwUmFuZ2UuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZG9taml0L0RPTUpJ
VEhlYXBSYW5nZS5oCkBAIC0yOCw4ICsyOCw2IEBACiAjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMu
aD4KICNpbmNsdWRlIDx3dGYvUHJpbnRTdHJlYW0uaD4KIAotI2lmIEVOQUJMRShKSVQpCi0KIG5h
bWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgRE9NSklUIHsKIAogY2xhc3MgSGVhcFJhbmdlIHsKQEAg
LTQ3LDcgKzQ1LDYgQEAgY2xhc3MgSGVhcFJhbmdlIHsKICAgICAgICAgQVNTRVJUX1dJVEhfTUVT
U0FHRShiZWdpbiA8PSBlbmQsICJiZWdpbiA8PSBlbmQgaXMgdGhlIGludmFyaWFudCBvZiB0aGlz
IEhlYXBSYW5nZS4iKTsKICAgICB9CiAKLXByaXZhdGU6CiAgICAgZW51bSBDb25zdEV4cHJUYWcg
eyBDb25zdEV4cHIgfTsKICAgICBjb25zdGV4cHIgSGVhcFJhbmdlKENvbnN0RXhwclRhZywgdWlu
dDE2X3QgYmVnaW4sIHVpbnQxNl90IGVuZCkKICAgICAgICAgOiBtX2JlZ2luKGJlZ2luKQpAQCAt
NTUsMjEgKzUyLDEzIEBAIGNsYXNzIEhlYXBSYW5nZSB7CiAgICAgewogICAgIH0KIAotICAgIHRl
bXBsYXRlPHVpbnQxNl90IGJlZ2luLCB1aW50MTZfdCBlbmQ+Ci0gICAgc3RhdGljIGNvbnN0ZXhw
ciBIZWFwUmFuZ2UgZnJvbUNvbnN0YW50KCkKLSAgICB7Ci0gICAgICAgIHN0YXRpY19hc3NlcnQo
YmVnaW4gPD0gZW5kLCAiYmVnaW4gPD0gZW5kIGlzIHRoZSBpbnZhcmlhbnQgb2YgdGhpcyBIZWFw
UmFuZ2UuIik7Ci0gICAgICAgIHJldHVybiBIZWFwUmFuZ2UoQ29uc3RFeHByLCBiZWdpbiwgZW5k
KTsKLSAgICB9Ci0KLXB1YmxpYzoKICAgICBlbnVtIFJhd1JlcHJlc2VudGF0aW9uVGFnIHsgUmF3
UmVwcmVzZW50YXRpb24gfTsKICAgICBleHBsaWNpdCBjb25zdGV4cHIgSGVhcFJhbmdlKFJhd1Jl
cHJlc2VudGF0aW9uVGFnLCB1aW50MzJfdCB2YWx1ZSkKICAgICAgICAgOiBtX3Jhdyh2YWx1ZSkK
ICAgICB7CiAgICAgfQogCi0gICAgc3RhdGljIEhlYXBSYW5nZSBmcm9tUmF3KHVpbnQzMl90IHZh
bHVlKQorICAgIGNvbnN0ZXhwciBzdGF0aWMgSGVhcFJhbmdlIGZyb21SYXcodWludDMyX3QgdmFs
dWUpCiAgICAgewogICAgICAgICByZXR1cm4gSGVhcFJhbmdlKFJhd1JlcHJlc2VudGF0aW9uLCB2
YWx1ZSk7CiAgICAgfQpAQCAtNzgsMTYgKzY3LDI4IEBAIGNsYXNzIEhlYXBSYW5nZSB7CiAgICAg
dWludDE2X3QgZW5kKCkgY29uc3QgeyByZXR1cm4gbV9lbmQ7IH0KICAgICB1aW50MzJfdCByYXdS
ZXByZXNlbnRhdGlvbigpIHsgcmV0dXJuIG1fcmF3OyB9CiAKLSAgICBleHBsaWNpdCBvcGVyYXRv
ciBib29sKCkgY29uc3QKKyAgICBjb25zdGV4cHIgZXhwbGljaXQgb3BlcmF0b3IgYm9vbCgpIGNv
bnN0CiAgICAgewogICAgICAgICByZXR1cm4gbV9iZWdpbiAhPSBtX2VuZDsKICAgICB9CiAKLSAg
ICBib29sIG9wZXJhdG9yPT0oY29uc3QgSGVhcFJhbmdlJiBvdGhlcikgY29uc3QKKyAgICBjb25z
dGV4cHIgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEhlYXBSYW5nZSYgb3RoZXIpIGNvbnN0CiAgICAg
ewogICAgICAgICByZXR1cm4gbV9iZWdpbiA9PSBvdGhlci5tX2JlZ2luICYmIG1fZW5kID09IG90
aGVyLm1fZW5kOwogICAgIH0KIAorICAgIGNvbnN0ZXhwciBib29sIG9wZXJhdG9yIT0oY29uc3Qg
SGVhcFJhbmdlJiBvdGhlcikgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiAhb3BlcmF0b3I9
PShvdGhlcik7CisgICAgfQorCisgICAgdGVtcGxhdGU8dWludDE2X3QgYmVnaW4sIHVpbnQxNl90
IGVuZD4KKyAgICBzdGF0aWMgY29uc3RleHByIEhlYXBSYW5nZSBmcm9tQ29uc3RhbnQoKQorICAg
IHsKKyAgICAgICAgc3RhdGljX2Fzc2VydChiZWdpbiA8PSBlbmQsICJiZWdpbiA8PSBlbmQgaXMg
dGhlIGludmFyaWFudCBvZiB0aGlzIEhlYXBSYW5nZS4iKTsKKyAgICAgICAgcmV0dXJuIEhlYXBS
YW5nZShDb25zdEV4cHIsIGJlZ2luLCBlbmQpOworICAgIH0KKwogICAgIHN0YXRpYyBjb25zdGV4
cHIgSGVhcFJhbmdlIHRvcCgpIHsgcmV0dXJuIGZyb21Db25zdGFudDwwLCBVSU5UMTZfTUFYPigp
OyB9CiAgICAgc3RhdGljIGNvbnN0ZXhwciBIZWFwUmFuZ2Ugbm9uZSgpIHsgcmV0dXJuIGZyb21D
b25zdGFudDxVSU5UMTZfTUFYLCBVSU5UMTZfTUFYPigpOyB9IC8vIEVtcHR5IHJhbmdlLgogCkBA
IC0xMjcsNSArMTI4LDMgQEAgY2xhc3MgSGVhcFJhbmdlIHsKIH07CiAKIH0gfQotCi0jZW5kaWYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kb21qaXQvRE9NSklUU2lnbmF0dXJl
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZG9taml0L0RPTUpJVFNpZ25hdHVyZS5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjM3ZDYwZWQ3ZjNlYWYwNjNkOWIwYzlkODllZDYzNDg3YzRjYmI1YTMKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZG9taml0L0RPTUpJVFNpZ25hdHVyZS5o
CkBAIC0wLDAgKzEsNzAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
CisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkNsYXNzSW5mby5oIgorI2luY2x1ZGUg
IkRPTUpJVEVmZmVjdC5oIgorI2luY2x1ZGUgIlNwZWN1bGF0ZWRUeXBlLmgiCisKK25hbWVzcGFj
ZSBKU0MgeyBuYW1lc3BhY2UgRE9NSklUIHsKKworLy8gQ3VycmVudGx5LCB3ZSBvbmx5IHN1cHBv
cnQgZnVuY3Rpb25zIHdoaWNoIGFyZ3VtZW50cyB1cCB0byAyLgorLy8gRXZlbnR1YWxseSwgd2Ug
c2hvdWxkIGV4dGVuZCB0aGlzLiBCdXQgcG9zc2libHksIDIgb3IgMyBjYW4gY292ZXIgdHlwaWNh
bCB1c2UgY2FzZXMuCisjZGVmaW5lIEpTQ19ET01KSVRfU0lHTkFUVVJFX01BWF9BUkdVTUVOVFMg
MgorCitjbGFzcyBQYXRjaHBvaW50OworCit0eXBlZGVmIFJlZjxQYXRjaHBvaW50PiBDaGVja0RP
TUdlbmVyYXRvckZ1bmN0aW9uKHZvaWQpOworCitjbGFzcyBTaWduYXR1cmUgeworcHVibGljOgor
ICAgIHRlbXBsYXRlPHR5cGVuYW1lLi4uIEFyZ3VtZW50cz4KKyAgICBjb25zdGV4cHIgU2lnbmF0
dXJlKHVpbnRwdHJfdCB1bnNhZmVGdW5jdGlvbiwgQ2hlY2tET01HZW5lcmF0b3JGdW5jdGlvbiog
Y2hlY2tET01HZW5lcmF0b3JGdW5jdGlvbiwgY29uc3QgQ2xhc3NJbmZvKiBjbGFzc0luZm8sIEVm
ZmVjdCBlZmZlY3QsIFNwZWN1bGF0ZWRUeXBlIHJlc3VsdCwgQXJndW1lbnRzLi4uIGFyZ3VtZW50
cykKKyAgICAgICAgOiB1bnNhZmVGdW5jdGlvbih1bnNhZmVGdW5jdGlvbikKKyAgICAgICAgLCBj
aGVja0RPTUdlbmVyYXRvckZ1bmN0aW9uKGNoZWNrRE9NR2VuZXJhdG9yRnVuY3Rpb24pCisgICAg
ICAgICwgY2xhc3NJbmZvKGNsYXNzSW5mbykKKyAgICAgICAgLCBlZmZlY3QoZWZmZWN0KQorICAg
ICAgICAsIHJlc3VsdChyZXN1bHQpCisgICAgICAgICwgYXJndW1lbnRzIHtzdGF0aWNfY2FzdDxT
cGVjdWxhdGVkVHlwZT4oYXJndW1lbnRzKS4uLn0KKyAgICAgICAgLCBhcmd1bWVudENvdW50KHNp
emVvZi4uLihhcmd1bWVudHMpKQorICAgIHsKKyAgICB9CisKKyAgICBSZWY8UGF0Y2hwb2ludD4g
Y2hlY2tET00oKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIGNoZWNrRE9NR2VuZXJhdG9y
RnVuY3Rpb24oKTsKKyAgICB9CisKKyAgICB1aW50cHRyX3QgdW5zYWZlRnVuY3Rpb247CisgICAg
Q2hlY2tET01HZW5lcmF0b3JGdW5jdGlvbiogY2hlY2tET01HZW5lcmF0b3JGdW5jdGlvbjsKKyAg
ICBjb25zdCBDbGFzc0luZm8qIGNvbnN0IGNsYXNzSW5mbzsKKyAgICBjb25zdCBFZmZlY3QgZWZm
ZWN0OworICAgIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIHJlc3VsdDsKKyAgICBjb25zdCBTcGVjdWxh
dGVkVHlwZSBhcmd1bWVudHNbSlNDX0RPTUpJVF9TSUdOQVRVUkVfTUFYX0FSR1VNRU5UU107Cisg
ICAgY29uc3QgdW5zaWduZWQgYXJndW1lbnRDb3VudDsKK307CisKK30gfQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCmluZGV4IDU0ZjRlNzJlNjQxOWJm
ZTI1NTY1M2UzNjVmYmFjODIwMzJmZmRlOTcuLjNiYTE1ZTZlMjg0NGQzMDQwM2U4ZGQ0ZTAxNmMy
NGIwYzA0NmRmYzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2Fw
YWJpbGl0aWVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxp
dGllcy5jcHAKQEAgLTI3Myw2ICsyNzMsNyBAQCBpbmxpbmUgQ2FwYWJpbGl0eUxldmVsIGNhbkNv
bXBpbGUoTm9kZSogbm9kZSkKICAgICBjYXNlIERlZmluZUFjY2Vzc29yUHJvcGVydHk6CiAgICAg
Y2FzZSBUb0xvd2VyQ2FzZToKICAgICBjYXNlIENoZWNrRE9NOgorICAgIGNhc2UgQ2FsbERPTToK
ICAgICBjYXNlIENhbGxET01HZXR0ZXI6CiAgICAgICAgIC8vIFRoZXNlIGFyZSBPSy4KICAgICAg
ICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2Vy
REZHVG9CMy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5j
cHAKaW5kZXggYWQxNjE1NzIwMjdjNDFmMzAwNjgzZGMxMjI0MmY5Yjk1ZDQ1OTBjMi4uNDBlYmMx
NTc5MGNkMGQ0NTM4N2ZjNTBkZGZmMmQ4NTExZTZlN2YwZCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcApAQCAtMTA2MCw2ICsxMDYwLDkgQEAgY2xh
c3MgTG93ZXJERkdUb0IzIHsKICAgICAgICAgY2FzZSBDaGVja0RPTToKICAgICAgICAgICAgIGNv
bXBpbGVDaGVja0RPTSgpOwogICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQ2FsbERP
TToKKyAgICAgICAgICAgIGNvbXBpbGVDYWxsRE9NKCk7CisgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgY2FzZSBDYWxsRE9NR2V0dGVyOgogICAgICAgICAgICAgY29tcGlsZUNhbGxET01HZXR0
ZXIoKTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtOTEwMCw2ICs5MTAzLDU0IEBAIGNsYXNzIExv
d2VyREZHVG9CMyB7CiAgICAgICAgIHBhdGNocG9pbnQtPmVmZmVjdHMgPSBFZmZlY3RzOjpmb3JD
aGVjaygpOwogICAgIH0KIAorICAgIHZvaWQgY29tcGlsZUNhbGxET00oKQorICAgIHsKKyAgICAg
ICAgY29uc3QgRE9NSklUOjpTaWduYXR1cmUqIHNpZ25hdHVyZSA9IG1fbm9kZS0+c2lnbmF0dXJl
KCk7CisKKyAgICAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBoYXZlIGEgd2F5IHRvIGNhbGwgZnVu
Y3Rpb25zIHdpdGggdGhlIHZlY3RvciBvZiByZWdpc3RlcnMuCisgICAgICAgIC8vIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjMwOTkKKyAgICAgICAgVmVjdG9yPExW
YWx1ZT4gb3BlcmFuZHM7CisKKyAgICAgICAgdW5zaWduZWQgaW5kZXggPSAwOworICAgICAgICBE
RkdfTk9ERV9ET19UT19DSElMRFJFTihtX2dyYXBoLCBtX25vZGUsIFsmXShOb2RlKiwgRWRnZSBl
ZGdlKSB7CisgICAgICAgICAgICBpZiAoIWluZGV4KQorICAgICAgICAgICAgICAgIG9wZXJhbmRz
LmFwcGVuZChsb3dDZWxsKGVkZ2UpKTsKKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAg
ICAgIHN3aXRjaCAoc2lnbmF0dXJlLT5hcmd1bWVudHNbaW5kZXggLSAxXSkgeworICAgICAgICAg
ICAgICAgIGNhc2UgU3BlY1N0cmluZzoKKyAgICAgICAgICAgICAgICAgICAgb3BlcmFuZHMuYXBw
ZW5kKGxvd1N0cmluZyhlZGdlKSk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgICAgIGNhc2UgU3BlY0ludDMyT25seToKKyAgICAgICAgICAgICAgICAgICAgb3BlcmFu
ZHMuYXBwZW5kKGxvd0ludDMyKGVkZ2UpKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICAgICAgY2FzZSBTcGVjQm9vbGVhbjoKKyAgICAgICAgICAgICAgICAgICAgb3Bl
cmFuZHMuYXBwZW5kKGxvd0Jvb2xlYW4oZWRnZSkpOworICAgICAgICAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICArK2luZGV4
OworICAgICAgICB9KTsKKworICAgICAgICBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMg
PSBzaWduYXR1cmUtPmFyZ3VtZW50Q291bnQgKyAxOworICAgICAgICBMVmFsdWUgcmVzdWx0Owor
ICAgICAgICBzd2l0Y2ggKGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKSB7CisgICAgICAgIGNh
c2UgMToKKyAgICAgICAgICAgIHJlc3VsdCA9IHZtQ2FsbChJbnQ2NCwgbV9vdXQub3BlcmF0aW9u
KHJlaW50ZXJwcmV0X2Nhc3Q8Sl9KSVRPcGVyYXRpb25fRVA+KHNpZ25hdHVyZS0+dW5zYWZlRnVu
Y3Rpb24pKSwgbV9jYWxsRnJhbWUsIG9wZXJhbmRzWzBdKTsKKyAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICBjYXNlIDI6CisgICAgICAgICAgICByZXN1bHQgPSB2bUNhbGwoSW50NjQsIG1fb3V0
Lm9wZXJhdGlvbihyZWludGVycHJldF9jYXN0PEpfSklUT3BlcmF0aW9uX0VQUD4oc2lnbmF0dXJl
LT51bnNhZmVGdW5jdGlvbikpLCBtX2NhbGxGcmFtZSwgb3BlcmFuZHNbMF0sIG9wZXJhbmRzWzFd
KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIDM6CisgICAgICAgICAgICByZXN1
bHQgPSB2bUNhbGwoSW50NjQsIG1fb3V0Lm9wZXJhdGlvbihyZWludGVycHJldF9jYXN0PEpfSklU
T3BlcmF0aW9uX0VQUFA+KHNpZ25hdHVyZS0+dW5zYWZlRnVuY3Rpb24pKSwgbV9jYWxsRnJhbWUs
IG9wZXJhbmRzWzBdLCBvcGVyYW5kc1sxXSwgb3BlcmFuZHNbMl0pOworICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVB
Q0hFRCgpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAgICBzZXRKU1Zh
bHVlKHJlc3VsdCk7CisgICAgfQorCiAgICAgdm9pZCBjb21waWxlQ2FsbERPTUdldHRlcigpCiAg
ICAgewogICAgICAgICBET01KSVQ6OkNhbGxET01HZXR0ZXJQYXRjaHBvaW50KiBkb21KSVQgPSBt
X25vZGUtPmNhbGxET01HZXR0ZXJEYXRhKCktPnBhdGNocG9pbnQ7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCmluZGV4IDhmNmM2OTcxYTZiZWU5ZjFmYjZmYzM2OGRl
NWEyY2I4NDc2NDRhNjguLjIwYjcxZjQ1MmNlNDRiNWNjNTZjYzcxYzJkNzZiMTdiNTg4ZmU2NjUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCkBAIC0xNTgsNiAr
MTU4LDcgQEAgdHlwZWRlZiBFbmNvZGVkSlNWYWx1ZSAoSklUX09QRVJBVElPTiAqSl9KSVRPcGVy
YXRpb25fRUpQKShFeGVjU3RhdGUqLCBFbmNvZGVkSlMKIHR5cGVkZWYgRW5jb2RlZEpTVmFsdWUg
KEpJVF9PUEVSQVRJT04gKkpfSklUT3BlcmF0aW9uX0VHUCkoRXhlY1N0YXRlKiwgSlNHbG9iYWxP
YmplY3QqLCB2b2lkKik7CiB0eXBlZGVmIEVuY29kZWRKU1ZhbHVlIChKSVRfT1BFUkFUSU9OICpK
X0pJVE9wZXJhdGlvbl9FUCkoRXhlY1N0YXRlKiwgdm9pZCopOwogdHlwZWRlZiBFbmNvZGVkSlNW
YWx1ZSAoSklUX09QRVJBVElPTiAqSl9KSVRPcGVyYXRpb25fRVBQKShFeGVjU3RhdGUqLCB2b2lk
Kiwgdm9pZCopOwordHlwZWRlZiBFbmNvZGVkSlNWYWx1ZSAoSklUX09QRVJBVElPTiAqSl9KSVRP
cGVyYXRpb25fRVBQUCkoRXhlY1N0YXRlKiwgdm9pZCosIHZvaWQqLCB2b2lkKik7CiB0eXBlZGVm
IEVuY29kZWRKU1ZhbHVlIChKSVRfT1BFUkFUSU9OICpKX0pJVE9wZXJhdGlvbl9FUFMpKEV4ZWNT
dGF0ZSosIHZvaWQqLCBzaXplX3QpOwogdHlwZWRlZiBFbmNvZGVkSlNWYWx1ZSAoSklUX09QRVJB
VElPTiAqSl9KSVRPcGVyYXRpb25fRVBjKShFeGVjU3RhdGUqLCBJbnN0cnVjdGlvbiopOwogdHlw
ZWRlZiBFbmNvZGVkSlNWYWx1ZSAoSklUX09QRVJBVElPTiAqSl9KSVRPcGVyYXRpb25fRUpzY0Mp
KEV4ZWNTdGF0ZSosIEpTU2NvcGUqLCBKU0NlbGwqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUVGh1bmtzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUVGh1bmtzLmNwcAppbmRleCBiZjBhN2Y5MDkxOWE1YjZkMGJlZWQ5MjhhYmRhZjcxMGM5ZGM5
ZDBiLi40MGMxMmNlYzk0ZTAxYTA4NDA0ZjdiNmQ5NjcyMWYxMDUxZjQ4MzE5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFRodW5rcy5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRUaHVua3MuY3BwCkBAIC05MCwxMCArOTAsMTAgQEAgdm9pZCBK
SVRUaHVua3M6OmZpbmFsaXplKEhhbmRsZTxVbmtub3duPiBoYW5kbGUsIHZvaWQqKQogCiBOYXRp
dmVFeGVjdXRhYmxlKiBKSVRUaHVua3M6Omhvc3RGdW5jdGlvblN0dWIoVk0qIHZtLCBOYXRpdmVG
dW5jdGlvbiBmdW5jdGlvbiwgTmF0aXZlRnVuY3Rpb24gY29uc3RydWN0b3IsIGNvbnN0IFN0cmlu
ZyYgbmFtZSkKIHsKLSAgICByZXR1cm4gaG9zdEZ1bmN0aW9uU3R1Yih2bSwgZnVuY3Rpb24sIGNv
bnN0cnVjdG9yLCBudWxscHRyLCBOb0ludHJpbnNpYywgbmFtZSk7CisgICAgcmV0dXJuIGhvc3RG
dW5jdGlvblN0dWIodm0sIGZ1bmN0aW9uLCBjb25zdHJ1Y3RvciwgbnVsbHB0ciwgTm9JbnRyaW5z
aWMsIG51bGxwdHIsIG5hbWUpOwogfQogCi1OYXRpdmVFeGVjdXRhYmxlKiBKSVRUaHVua3M6Omhv
c3RGdW5jdGlvblN0dWIoVk0qIHZtLCBOYXRpdmVGdW5jdGlvbiBmdW5jdGlvbiwgTmF0aXZlRnVu
Y3Rpb24gY29uc3RydWN0b3IsIFRodW5rR2VuZXJhdG9yIGdlbmVyYXRvciwgSW50cmluc2ljIGlu
dHJpbnNpYywgY29uc3QgU3RyaW5nJiBuYW1lKQorTmF0aXZlRXhlY3V0YWJsZSogSklUVGh1bmtz
Ojpob3N0RnVuY3Rpb25TdHViKFZNKiB2bSwgTmF0aXZlRnVuY3Rpb24gZnVuY3Rpb24sIE5hdGl2
ZUZ1bmN0aW9uIGNvbnN0cnVjdG9yLCBUaHVua0dlbmVyYXRvciBnZW5lcmF0b3IsIEludHJpbnNp
YyBpbnRyaW5zaWMsIGNvbnN0IERPTUpJVDo6U2lnbmF0dXJlKiBzaWduYXR1cmUsIGNvbnN0IFN0
cmluZyYgbmFtZSkKIHsKICAgICBBU1NFUlQoIWlzQ29tcGlsYXRpb25UaHJlYWQoKSk7ICAgIAog
ICAgIEFTU0VSVCh2bS0+Y2FuVXNlSklUKCkpOwpAQCAtMTEwLDE0ICsxMTAsMTQgQEAgTmF0aXZl
RXhlY3V0YWJsZSogSklUVGh1bmtzOjpob3N0RnVuY3Rpb25TdHViKFZNKiB2bSwgTmF0aXZlRnVu
Y3Rpb24gZnVuY3Rpb24sIE4KICAgICAKICAgICBSZWZQdHI8SklUQ29kZT4gZm9yQ29uc3RydWN0
ID0gYWRvcHRSZWYobmV3IE5hdGl2ZUpJVENvZGUoTWFjcm9Bc3NlbWJsZXJDb2RlUmVmOjpjcmVh
dGVTZWxmTWFuYWdlZENvZGVSZWYoY3RpTmF0aXZlQ29uc3RydWN0KHZtKSksIEpJVENvZGU6Okhv
c3RDYWxsVGh1bmspKTsKICAgICAKLSAgICBOYXRpdmVFeGVjdXRhYmxlKiBuYXRpdmVFeGVjdXRh
YmxlID0gTmF0aXZlRXhlY3V0YWJsZTo6Y3JlYXRlKCp2bSwgZm9yQ2FsbCwgZnVuY3Rpb24sIGZv
ckNvbnN0cnVjdCwgY29uc3RydWN0b3IsIGludHJpbnNpYywgbmFtZSk7CisgICAgTmF0aXZlRXhl
Y3V0YWJsZSogbmF0aXZlRXhlY3V0YWJsZSA9IE5hdGl2ZUV4ZWN1dGFibGU6OmNyZWF0ZSgqdm0s
IGZvckNhbGwsIGZ1bmN0aW9uLCBmb3JDb25zdHJ1Y3QsIGNvbnN0cnVjdG9yLCBpbnRyaW5zaWMs
IHNpZ25hdHVyZSwgbmFtZSk7CiAgICAgd2Vha0FkZCgqbV9ob3N0RnVuY3Rpb25TdHViTWFwLCBz
dGQ6Om1ha2VfdHVwbGUoZnVuY3Rpb24sIGNvbnN0cnVjdG9yLCBuYW1lKSwgV2VhazxOYXRpdmVF
eGVjdXRhYmxlPihuYXRpdmVFeGVjdXRhYmxlLCB0aGlzKSk7CiAgICAgcmV0dXJuIG5hdGl2ZUV4
ZWN1dGFibGU7CiB9CiAKIE5hdGl2ZUV4ZWN1dGFibGUqIEpJVFRodW5rczo6aG9zdEZ1bmN0aW9u
U3R1YihWTSogdm0sIE5hdGl2ZUZ1bmN0aW9uIGZ1bmN0aW9uLCBUaHVua0dlbmVyYXRvciBnZW5l
cmF0b3IsIEludHJpbnNpYyBpbnRyaW5zaWMsIGNvbnN0IFN0cmluZyYgbmFtZSkKIHsKLSAgICBy
ZXR1cm4gaG9zdEZ1bmN0aW9uU3R1Yih2bSwgZnVuY3Rpb24sIGNhbGxIb3N0RnVuY3Rpb25Bc0Nv
bnN0cnVjdG9yLCBnZW5lcmF0b3IsIGludHJpbnNpYywgbmFtZSk7CisgICAgcmV0dXJuIGhvc3RG
dW5jdGlvblN0dWIodm0sIGZ1bmN0aW9uLCBjYWxsSG9zdEZ1bmN0aW9uQXNDb25zdHJ1Y3Rvciwg
Z2VuZXJhdG9yLCBpbnRyaW5zaWMsIG51bGxwdHIsIG5hbWUpOwogfQogCiB2b2lkIEpJVFRodW5r
czo6Y2xlYXJIb3N0RnVuY3Rpb25TdHVicygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVFRodW5rcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRUaHVu
a3MuaAppbmRleCAzZjhmZTgwM2Y5ODcxMGY2OTIzNTI3YmM4ZjY1NTBmNGVkZDFjN2FlLi5hZGRj
ZjIzMGMzNDVkNDI3MWI2MzdmMDhiOTRjNDE2YTNlZDE4MmE0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVFRodW5rcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUVGh1bmtzLmgKQEAgLTM5LDYgKzM5LDkgQEAKICNpbmNsdWRlIDx3dGYvdGV4dC9T
dHJpbmdIYXNoLmg+CiAKIG5hbWVzcGFjZSBKU0MgeworbmFtZXNwYWNlIERPTUpJVCB7CitjbGFz
cyBTaWduYXR1cmU7Cit9CiAKIGNsYXNzIFZNOwogY2xhc3MgTmF0aXZlRXhlY3V0YWJsZTsKQEAg
LTU3LDcgKzYwLDcgQEAgY2xhc3MgSklUVGh1bmtzIGZpbmFsIDogcHJpdmF0ZSBXZWFrSGFuZGxl
T3duZXIgewogICAgIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBjdGlTdHViKFZNKiwgVGh1bmtHZW5l
cmF0b3IpOwogCiAgICAgTmF0aXZlRXhlY3V0YWJsZSogaG9zdEZ1bmN0aW9uU3R1YihWTSosIE5h
dGl2ZUZ1bmN0aW9uLCBOYXRpdmVGdW5jdGlvbiBjb25zdHJ1Y3RvciwgY29uc3QgU3RyaW5nJiBu
YW1lKTsKLSAgICBOYXRpdmVFeGVjdXRhYmxlKiBob3N0RnVuY3Rpb25TdHViKFZNKiwgTmF0aXZl
RnVuY3Rpb24sIE5hdGl2ZUZ1bmN0aW9uIGNvbnN0cnVjdG9yLCBUaHVua0dlbmVyYXRvciwgSW50
cmluc2ljLCBjb25zdCBTdHJpbmcmIG5hbWUpOworICAgIE5hdGl2ZUV4ZWN1dGFibGUqIGhvc3RG
dW5jdGlvblN0dWIoVk0qLCBOYXRpdmVGdW5jdGlvbiwgTmF0aXZlRnVuY3Rpb24gY29uc3RydWN0
b3IsIFRodW5rR2VuZXJhdG9yLCBJbnRyaW5zaWMsIGNvbnN0IERPTUpJVDo6U2lnbmF0dXJlKiwg
Y29uc3QgU3RyaW5nJiBuYW1lKTsKICAgICBOYXRpdmVFeGVjdXRhYmxlKiBob3N0RnVuY3Rpb25T
dHViKFZNKiwgTmF0aXZlRnVuY3Rpb24sIFRodW5rR2VuZXJhdG9yLCBJbnRyaW5zaWMsIGNvbnN0
IFN0cmluZyYgbmFtZSk7CiAKICAgICB2b2lkIGNsZWFySG9zdEZ1bmN0aW9uU3R1YnMoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQm91bmRGdW5jdGlvbi5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0JvdW5kRnVuY3Rpb24uY3BwCmlu
ZGV4IDI2Zjk5ZDY1M2FhMTQ0YjI0MDRkZDc5NTk0MzI5M2RlOTZiNzM0YzUuLmM0Y2U0M2U3ZDU2
MGI4NzM2M2M0OGQ5NTBhMDlhZDc5ZDA1MjQ5N2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTQm91bmRGdW5jdGlvbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNCb3VuZEZ1bmN0aW9uLmNwcApAQCAtMTY4LDcgKzE2OCw3IEBAIEpT
Qm91bmRGdW5jdGlvbiogSlNCb3VuZEZ1bmN0aW9uOjpjcmVhdGUoVk0mIHZtLCBFeGVjU3RhdGUq
IGV4ZWMsIEpTR2xvYmFsT2JqZWN0CiAgICAgTmF0aXZlRXhlY3V0YWJsZSogZXhlY3V0YWJsZSA9
IHZtLmdldEhvc3RGdW5jdGlvbigKICAgICAgICAgc2xvd0Nhc2UgPyBib3VuZEZ1bmN0aW9uQ2Fs
bCA6IGJvdW5kVGhpc05vQXJnc0Z1bmN0aW9uQ2FsbCwKICAgICAgICAgc2xvd0Nhc2UgPyBOb0lu
dHJpbnNpYyA6IEJvdW5kVGhpc05vQXJnc0Z1bmN0aW9uQ2FsbEludHJpbnNpYywKLSAgICAgICAg
Y2FuQ29uc3RydWN0ID8gKHNsb3dDYXNlID8gYm91bmRGdW5jdGlvbkNvbnN0cnVjdCA6IGJvdW5k
VGhpc05vQXJnc0Z1bmN0aW9uQ29uc3RydWN0KSA6IGNhbGxIb3N0RnVuY3Rpb25Bc0NvbnN0cnVj
dG9yLAorICAgICAgICBjYW5Db25zdHJ1Y3QgPyAoc2xvd0Nhc2UgPyBib3VuZEZ1bmN0aW9uQ29u
c3RydWN0IDogYm91bmRUaGlzTm9BcmdzRnVuY3Rpb25Db25zdHJ1Y3QpIDogY2FsbEhvc3RGdW5j
dGlvbkFzQ29uc3RydWN0b3IsIG51bGxwdHIsCiAgICAgICAgIG5hbWUpOwogICAgIFN0cnVjdHVy
ZSogc3RydWN0dXJlID0gZ2V0Qm91bmRGdW5jdGlvblN0cnVjdHVyZSh2bSwgZXhlYywgZ2xvYmFs
T2JqZWN0LCB0YXJnZXRGdW5jdGlvbik7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwg
bnVsbHB0cik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Nl
bGwuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5oCmluZGV4IGM0MGYz
ZTIxOTg0MWZiNDY4OTYzNTI4NGIwNDIyNDdhZmQ1MjNjMzYuLjRlZmJmOTA3NzhjYzU3MWJiZGI4
Mjg3MWE1MWZhNDRmODU2YWU5OGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTQ2VsbC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2Vs
bC5oCkBAIC01NiwxNyArNTYsMTcgQEAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gdm9pZCogYWxsb2Nh
dGVDZWxsKEhlYXAmLCBzaXplX3QpOwogdGVtcGxhdGU8dHlwZW5hbWUgVD4gdm9pZCogYWxsb2Nh
dGVDZWxsKEhlYXAmLCBHQ0RlZmVycmFsQ29udGV4dCopOwogdGVtcGxhdGU8dHlwZW5hbWUgVD4g
dm9pZCogYWxsb2NhdGVDZWxsKEhlYXAmLCBHQ0RlZmVycmFsQ29udGV4dCosIHNpemVfdCk7CiAK
LSNkZWZpbmUgREVDTEFSRV9FWFBPUlRfSU5GTyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFwKLSAgICBwcm90ZWN0ZWQ6ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgc3RhdGljIEpTX0VY
UE9SVERBVEEgY29uc3QgOjpKU0M6OkNsYXNzSW5mbyBzX2luZm87ICAgICAgICAgICAgIFwKLSAg
ICBwdWJsaWM6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFwKLSAgICAgICAgc3RhdGljIGNvbnN0IDo6SlNDOjpDbGFzc0luZm8qIGlu
Zm8oKSB7IHJldHVybiAmc19pbmZvOyB9Ci0KLSNkZWZpbmUgREVDTEFSRV9JTkZPICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBwcm90ZWN0
ZWQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFwKLSAgICAgICAgc3RhdGljIGNvbnN0IDo6SlNDOjpDbGFzc0luZm8gc19pbmZvOyAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBwdWJsaWM6ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgc3RhdGlj
IGNvbnN0IDo6SlNDOjpDbGFzc0luZm8qIGluZm8oKSB7IHJldHVybiAmc19pbmZvOyB9CisjZGVm
aW5lIERFQ0xBUkVfRVhQT1JUX0lORk8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFwKKyAgICBwcm90ZWN0ZWQ6ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBzdGF0aWMg
SlNfRVhQT1JUREFUQSBjb25zdCA6OkpTQzo6Q2xhc3NJbmZvIHNfaW5mbzsgICAgICAgICAgICAg
ICAgICBcCisgICAgcHVibGljOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBj
b25zdCA6OkpTQzo6Q2xhc3NJbmZvKiBpbmZvKCkgeyByZXR1cm4gJnNfaW5mbzsgfQorCisjZGVm
aW5lIERFQ0xBUkVfSU5GTyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFwKKyAgICBwcm90ZWN0ZWQ6ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBzdGF0aWMg
Y29uc3QgOjpKU0M6OkNsYXNzSW5mbyBzX2luZm87ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBcCisgICAgcHVibGljOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBj
b25zdCA6OkpTQzo6Q2xhc3NJbmZvKiBpbmZvKCkgeyByZXR1cm4gJnNfaW5mbzsgfQogCiBjbGFz
cyBKU0NlbGwgOiBwdWJsaWMgSGVhcENlbGwgewogICAgIGZyaWVuZCBjbGFzcyBKU1ZhbHVlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcAppbmRleCA4NTg0
YmMyOTdhZjcyM2Y1ODI5ODE1NmUyZTJiMGE4OGFlNzE4ZmI0Li5hMzE4NDJiNjU5MDkzZWVkNDgz
MmYwYzIyNTQ3ZmZiNDQ5YzQ0Y2Q5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0Z1bmN0aW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0Z1bmN0aW9uLmNwcApAQCAtODQsOSArODQsOSBAQCBKU0Z1bmN0aW9uKiBKU0Z1bmN0aW9u
OjpjcmVhdGUoVk0mIHZtLCBXZWJBc3NlbWJseUV4ZWN1dGFibGUqIGV4ZWN1dGFibGUsIEpTU2Nv
cAogfQogI2VuZGlmCiAKLUpTRnVuY3Rpb24qIEpTRnVuY3Rpb246OmNyZWF0ZShWTSYgdm0sIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGludCBsZW5ndGgsIGNvbnN0IFN0cmluZyYgbmFt
ZSwgTmF0aXZlRnVuY3Rpb24gbmF0aXZlRnVuY3Rpb24sIEludHJpbnNpYyBpbnRyaW5zaWMsIE5h
dGl2ZUZ1bmN0aW9uIG5hdGl2ZUNvbnN0cnVjdG9yKQorSlNGdW5jdGlvbiogSlNGdW5jdGlvbjo6
Y3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgaW50IGxlbmd0aCwg
Y29uc3QgU3RyaW5nJiBuYW1lLCBOYXRpdmVGdW5jdGlvbiBuYXRpdmVGdW5jdGlvbiwgSW50cmlu
c2ljIGludHJpbnNpYywgTmF0aXZlRnVuY3Rpb24gbmF0aXZlQ29uc3RydWN0b3IsIGNvbnN0IERP
TUpJVDo6U2lnbmF0dXJlKiBzaWduYXR1cmUpCiB7Ci0gICAgTmF0aXZlRXhlY3V0YWJsZSogZXhl
Y3V0YWJsZSA9IHZtLmdldEhvc3RGdW5jdGlvbihuYXRpdmVGdW5jdGlvbiwgaW50cmluc2ljLCBu
YXRpdmVDb25zdHJ1Y3RvciwgbmFtZSk7CisgICAgTmF0aXZlRXhlY3V0YWJsZSogZXhlY3V0YWJs
ZSA9IHZtLmdldEhvc3RGdW5jdGlvbihuYXRpdmVGdW5jdGlvbiwgaW50cmluc2ljLCBuYXRpdmVD
b25zdHJ1Y3Rvciwgc2lnbmF0dXJlLCBuYW1lKTsKICAgICBKU0Z1bmN0aW9uKiBmdW5jdGlvbiA9
IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTRnVuY3Rpb24+KHZtLmhlYXApKSBKU0Z1bmN0
aW9uKHZtLCBnbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdC0+ZnVuY3Rpb25TdHJ1Y3R1cmUoKSk7
CiAgICAgLy8gQ2FuJ3QgZG8gdGhpcyBkdXJpbmcgaW5pdGlhbGl6YXRpb24gYmVjYXVzZSBnZXRI
b3N0RnVuY3Rpb24gbWlnaHQgZG8gYSBHQyBhbGxvY2F0aW9uLgogICAgIGZ1bmN0aW9uLT5maW5p
c2hDcmVhdGlvbih2bSwgZXhlY3V0YWJsZSwgbGVuZ3RoLCBuYW1lKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uaAppbmRleCA4ZGYwM2ExNGE2N2RhZTkzMDRjMGQ1
NTQ5NGY5NWE4NzdmOTc4MWU2Li5mMTFiMTJmYjNiZDE0NTYyNWY4MmJmMWZhODcyNTA0NDQ3NjU3
NjI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9u
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5oCkBAIC00
Niw2ICs0NiwxMSBAQCBjbGFzcyBTcGVjdWxhdGl2ZUpJVDsKIGNsYXNzIEpJVENvbXBpbGVyOwog
fQogCituYW1lc3BhY2UgRE9NSklUIHsKK2NsYXNzIFNpZ25hdHVyZTsKK30KKworCiBKU19FWFBP
UlRfUFJJVkFURSBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxIb3N0RnVuY3Rpb25B
c0NvbnN0cnVjdG9yKEV4ZWNTdGF0ZSopOwogCiBKU19FWFBPUlRfUFJJVkFURSBTdHJpbmcgZ2V0
Q2FsY3VsYXRlZERpc3BsYXlOYW1lKFZNJiwgSlNPYmplY3QqKTsKQEAgLTY3LDcgKzcyLDcgQEAg
Y2xhc3MgSlNGdW5jdGlvbiA6IHB1YmxpYyBKU0NhbGxlZSB7CiAgICAgICAgIHJldHVybiBzaXpl
b2YoSlNGdW5jdGlvbik7CiAgICAgfQogCi0gICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIEpT
RnVuY3Rpb24qIGNyZWF0ZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgaW50IGxlbmd0aCwgY29uc3Qg
U3RyaW5nJiBuYW1lLCBOYXRpdmVGdW5jdGlvbiwgSW50cmluc2ljID0gTm9JbnRyaW5zaWMsIE5h
dGl2ZUZ1bmN0aW9uIG5hdGl2ZUNvbnN0cnVjdG9yID0gY2FsbEhvc3RGdW5jdGlvbkFzQ29uc3Ry
dWN0b3IpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBKU0Z1bmN0aW9uKiBjcmVhdGUo
Vk0mLCBKU0dsb2JhbE9iamVjdCosIGludCBsZW5ndGgsIGNvbnN0IFN0cmluZyYgbmFtZSwgTmF0
aXZlRnVuY3Rpb24sIEludHJpbnNpYyA9IE5vSW50cmluc2ljLCBOYXRpdmVGdW5jdGlvbiBuYXRp
dmVDb25zdHJ1Y3RvciA9IGNhbGxIb3N0RnVuY3Rpb25Bc0NvbnN0cnVjdG9yLCBjb25zdCBET01K
SVQ6OlNpZ25hdHVyZSogPSBudWxscHRyKTsKICAgICAKICAgICBzdGF0aWMgSlNGdW5jdGlvbiog
Y3JlYXRlV2l0aEludmFsaWRhdGVkUmVhbGxvY2F0aW9uV2F0Y2hwb2ludChWTSYsIEZ1bmN0aW9u
RXhlY3V0YWJsZSosIEpTU2NvcGUqKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNOYXRpdmVTdGRGdW5jdGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU05hdGl2ZVN0ZEZ1bmN0aW9uLmNwcAppbmRleCA2ZGQ4NDlmMmVhZmJlYmRk
NzA3ZWU1NzM4MDA4MmRlNTQ4OTMyMGExLi5jMTI2NWIxZjA2YTkwYTA3NDQxZDdhYzVjNjA4ODMw
YTFlZmE0ZjAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU05h
dGl2ZVN0ZEZ1bmN0aW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U05hdGl2ZVN0ZEZ1bmN0aW9uLmNwcApAQCAtNjYsNyArNjYsNyBAQCBzdGF0aWMgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBydW5TdGRGdW5jdGlvbihFeGVjU3RhdGUqIHN0YXRlKQogCiBK
U05hdGl2ZVN0ZEZ1bmN0aW9uKiBKU05hdGl2ZVN0ZEZ1bmN0aW9uOjpjcmVhdGUoVk0mIHZtLCBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBpbnQgbGVuZ3RoLCBjb25zdCBTdHJpbmcmIG5h
bWUsIE5hdGl2ZVN0ZEZ1bmN0aW9uJiYgbmF0aXZlU3RkRnVuY3Rpb24sIEludHJpbnNpYyBpbnRy
aW5zaWMsIE5hdGl2ZUZ1bmN0aW9uIG5hdGl2ZUNvbnN0cnVjdG9yKQogewotICAgIE5hdGl2ZUV4
ZWN1dGFibGUqIGV4ZWN1dGFibGUgPSB2bS5nZXRIb3N0RnVuY3Rpb24ocnVuU3RkRnVuY3Rpb24s
IGludHJpbnNpYywgbmF0aXZlQ29uc3RydWN0b3IsIG5hbWUpOworICAgIE5hdGl2ZUV4ZWN1dGFi
bGUqIGV4ZWN1dGFibGUgPSB2bS5nZXRIb3N0RnVuY3Rpb24ocnVuU3RkRnVuY3Rpb24sIGludHJp
bnNpYywgbmF0aXZlQ29uc3RydWN0b3IsIG51bGxwdHIsIG5hbWUpOwogICAgIE5hdGl2ZVN0ZEZ1
bmN0aW9uQ2VsbCogZnVuY3Rpb25DZWxsID0gTmF0aXZlU3RkRnVuY3Rpb25DZWxsOjpjcmVhdGUo
dm0sIFdURk1vdmUobmF0aXZlU3RkRnVuY3Rpb24pKTsKICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSA9IGdsb2JhbE9iamVjdC0+bmF0aXZlU3RkRnVuY3Rpb25TdHJ1Y3R1cmUoKTsKICAgICBKU05h
dGl2ZVN0ZEZ1bmN0aW9uKiBmdW5jdGlvbiA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpT
TmF0aXZlU3RkRnVuY3Rpb24+KHZtLmhlYXApKSBKU05hdGl2ZVN0ZEZ1bmN0aW9uKHZtLCBnbG9i
YWxPYmplY3QsIHN0cnVjdHVyZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU09iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09i
amVjdC5jcHAKaW5kZXggZjUzZGI2MTk4NmVhZGRhYTIzYTI0NWRlNTRhZTA5YzU4ZjBhYjc2NC4u
MDhhZTc5MjBhOWVlNTJjMjRkNzVhYmUxZGE3ZjY2ZTgxMWIyYWYxYyAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcApAQCAtMjU0OSw2ICsyNTQ5LDE3IEBAIGJv
b2wgSlNPYmplY3Q6OnB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uKFZNJiB2bSwgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgY29uCiAgICAgcmV0dXJuIHB1dERpcmVjdCh2bSwgcHJvcGVydHlO
YW1lLCBmdW5jdGlvbiwgYXR0cmlidXRlcyk7CiB9CiAKK2Jvb2wgSlNPYmplY3Q6OnB1dERpcmVj
dE5hdGl2ZUZ1bmN0aW9uKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29u
c3QgUHJvcGVydHlOYW1lJiBwcm9wZXJ0eU5hbWUsIHVuc2lnbmVkIGZ1bmN0aW9uTGVuZ3RoLCBO
YXRpdmVGdW5jdGlvbiBuYXRpdmVGdW5jdGlvbiwgSW50cmluc2ljIGludHJpbnNpYywgY29uc3Qg
RE9NSklUOjpTaWduYXR1cmUqIHNpZ25hdHVyZSwgdW5zaWduZWQgYXR0cmlidXRlcykKK3sKKyAg
ICBTdHJpbmdJbXBsKiBuYW1lID0gcHJvcGVydHlOYW1lLnB1YmxpY05hbWUoKTsKKyAgICBpZiAo
IW5hbWUpCisgICAgICAgIG5hbWUgPSB2bS5wcm9wZXJ0eU5hbWVzLT5hbm9ueW1vdXMuaW1wbCgp
OworICAgIEFTU0VSVChuYW1lKTsKKworICAgIEpTRnVuY3Rpb24qIGZ1bmN0aW9uID0gSlNGdW5j
dGlvbjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIGZ1bmN0aW9uTGVuZ3RoLCBuYW1lLCBuYXRp
dmVGdW5jdGlvbiwgaW50cmluc2ljLCBjYWxsSG9zdEZ1bmN0aW9uQXNDb25zdHJ1Y3Rvciwgc2ln
bmF0dXJlKTsKKyAgICByZXR1cm4gcHV0RGlyZWN0KHZtLCBwcm9wZXJ0eU5hbWUsIGZ1bmN0aW9u
LCBhdHRyaWJ1dGVzKTsKK30KKwogSlNGdW5jdGlvbiogSlNPYmplY3Q6OnB1dERpcmVjdEJ1aWx0
aW5GdW5jdGlvbihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IFBy
b3BlcnR5TmFtZSYgcHJvcGVydHlOYW1lLCBGdW5jdGlvbkV4ZWN1dGFibGUqIGZ1bmN0aW9uRXhl
Y3V0YWJsZSwgdW5zaWduZWQgYXR0cmlidXRlcykKIHsKICAgICBTdHJpbmdJbXBsKiBuYW1lID0g
cHJvcGVydHlOYW1lLnB1YmxpY05hbWUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U09iamVjdC5oCmluZGV4IDYyMjBlYzdhMWJhOGU4YTc0OWRiNGIwNmNkNDI5M2E4ODVhZjdmOTIu
LmViZTQ4NWU4ZGYzNmRiNWNhZjM3NzA0YjhlZWRkNGE3NmNiOWM0NDMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaApAQCAtNDcsNiArNDcsOSBAQAogI2luY2x1ZGUg
PHd0Zi9TdGRMaWJFeHRyYXMuaD4KIAogbmFtZXNwYWNlIEpTQyB7CituYW1lc3BhY2UgRE9NSklU
IHsKK2NsYXNzIFNpZ25hdHVyZTsKK30KIAogaW5saW5lIEpTQ2VsbCogZ2V0SlNGdW5jdGlvbihK
U1ZhbHVlIHZhbHVlKQogewpAQCAtNzAwLDYgKzcwMyw3IEBAIGNsYXNzIEpTT2JqZWN0IDogcHVi
bGljIEpTQ2VsbCB7CiAKICAgICBKU19FWFBPUlRfUFJJVkFURSBib29sIHB1dERpcmVjdE5hdGl2
ZUludHJpbnNpY0dldHRlcihWTSYsIEpTR2xvYmFsT2JqZWN0KiwgSWRlbnRpZmllciwgTmF0aXZl
RnVuY3Rpb24sIEludHJpbnNpYywgdW5zaWduZWQgYXR0cmlidXRlcyk7CiAgICAgSlNfRVhQT1JU
X1BSSVZBVEUgYm9vbCBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbihWTSYsIEpTR2xvYmFsT2JqZWN0
KiwgY29uc3QgUHJvcGVydHlOYW1lJiwgdW5zaWduZWQgZnVuY3Rpb25MZW5ndGgsIE5hdGl2ZUZ1
bmN0aW9uLCBJbnRyaW5zaWMsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpOworICAgIEpTX0VYUE9SVF9Q
UklWQVRFIGJvb2wgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb24oVk0mLCBKU0dsb2JhbE9iamVjdCos
IGNvbnN0IFByb3BlcnR5TmFtZSYsIHVuc2lnbmVkIGZ1bmN0aW9uTGVuZ3RoLCBOYXRpdmVGdW5j
dGlvbiwgSW50cmluc2ljLCBjb25zdCBET01KSVQ6OlNpZ25hdHVyZSosIHVuc2lnbmVkIGF0dHJp
YnV0ZXMpOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIEpTRnVuY3Rpb24qIHB1dERpcmVjdEJ1aWx0
aW5GdW5jdGlvbihWTSYsIEpTR2xvYmFsT2JqZWN0KiwgY29uc3QgUHJvcGVydHlOYW1lJiwgRnVu
Y3Rpb25FeGVjdXRhYmxlKiwgdW5zaWduZWQgYXR0cmlidXRlcyk7CiAgICAgSlNGdW5jdGlvbiog
cHV0RGlyZWN0QnVpbHRpbkZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24oVk0mLCBKU0dsb2JhbE9i
amVjdCosIGNvbnN0IFByb3BlcnR5TmFtZSYsIEZ1bmN0aW9uRXhlY3V0YWJsZSosIHVuc2lnbmVk
IGF0dHJpYnV0ZXMpOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgcHV0RGlyZWN0TmF0aXZl
RnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbihWTSYsIEpTR2xvYmFsT2JqZWN0KiwgY29uc3QgUHJv
cGVydHlOYW1lJiwgdW5zaWduZWQgZnVuY3Rpb25MZW5ndGgsIE5hdGl2ZUZ1bmN0aW9uLCBJbnRy
aW5zaWMsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvTG9va3VwLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9M
b29rdXAuaAppbmRleCBlMmQxNzk1Mzg4ZTc2NTJiZDhmMWI0YjZkYWNiYjJjYmNlOWNkNDRmLi5k
NzA3Njg2ZmI1NjkzZTdmNTJmZTZkMWEyZWM0NGJkMDAyM2JlZjExIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Mb29rdXAuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Mb29rdXAuaApAQCAtMjQsNiArMjQsNyBAQAogI2luY2x1ZGUgIkNhbGxG
cmFtZS5oIgogI2luY2x1ZGUgIkN1c3RvbUdldHRlclNldHRlci5oIgogI2luY2x1ZGUgIkRPTUpJ
VEdldHRlclNldHRlci5oIgorI2luY2x1ZGUgIkRPTUpJVFNpZ25hdHVyZS5oIgogI2luY2x1ZGUg
IklkZW50aWZpZXIuaCIKICNpbmNsdWRlICJJZGVudGlmaWVySW5saW5lcy5oIgogI2luY2x1ZGUg
IkludHJpbnNpYy5oIgpAQCAtNzUsMTIgKzc2LDE5IEBAIHN0cnVjdCBIYXNoVGFibGVWYWx1ZSB7
CiAgICAgSW50cmluc2ljIGludHJpbnNpYygpIGNvbnN0IHsgQVNTRVJUKG1fYXR0cmlidXRlcyAm
IEZ1bmN0aW9uKTsgcmV0dXJuIG1faW50cmluc2ljOyB9CiAgICAgQnVpbHRpbkdlbmVyYXRvciBi
dWlsdGluR2VuZXJhdG9yKCkgY29uc3QgeyBBU1NFUlQobV9hdHRyaWJ1dGVzICYgQnVpbHRpbik7
IHJldHVybiByZWludGVycHJldF9jYXN0PEJ1aWx0aW5HZW5lcmF0b3I+KG1fdmFsdWVzLnZhbHVl
MSk7IH0KICAgICBOYXRpdmVGdW5jdGlvbiBmdW5jdGlvbigpIGNvbnN0IHsgQVNTRVJUKG1fYXR0
cmlidXRlcyAmIEZ1bmN0aW9uKTsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8TmF0aXZlRnVuY3Rp
b24+KG1fdmFsdWVzLnZhbHVlMSk7IH0KLSAgICB1bnNpZ25lZCBjaGFyIGZ1bmN0aW9uTGVuZ3Ro
KCkgY29uc3QgeyBBU1NFUlQobV9hdHRyaWJ1dGVzICYgRnVuY3Rpb24pOyByZXR1cm4gc3RhdGlj
X2Nhc3Q8dW5zaWduZWQgY2hhcj4obV92YWx1ZXMudmFsdWUyKTsgfQorICAgIHVuc2lnbmVkIGNo
YXIgZnVuY3Rpb25MZW5ndGgoKSBjb25zdAorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fYXR0cmli
dXRlcyAmIEZ1bmN0aW9uKTsKKyAgICAgICAgaWYgKG1fYXR0cmlidXRlcyAmIERPTUpJVEZ1bmN0
aW9uKQorICAgICAgICAgICAgcmV0dXJuIHNpZ25hdHVyZSgpLT5hcmd1bWVudENvdW50OworICAg
ICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4obV92YWx1ZXMudmFsdWUyKTsK
KyAgICB9CiAKICAgICBHZXRGdW5jdGlvbiBwcm9wZXJ0eUdldHRlcigpIGNvbnN0IHsgQVNTRVJU
KCEobV9hdHRyaWJ1dGVzICYgQnVpbHRpbk9yRnVuY3Rpb25PckFjY2Vzc29yT3JMYXp5UHJvcGVy
dHlPckNvbnN0YW50KSk7IHJldHVybiByZWludGVycHJldF9jYXN0PEdldEZ1bmN0aW9uPihtX3Zh
bHVlcy52YWx1ZTEpOyB9CiAgICAgUHV0RnVuY3Rpb24gcHJvcGVydHlQdXR0ZXIoKSBjb25zdCB7
IEFTU0VSVCghKG1fYXR0cmlidXRlcyAmIEJ1aWx0aW5PckZ1bmN0aW9uT3JBY2Nlc3Nvck9yTGF6
eVByb3BlcnR5T3JDb25zdGFudCkpOyByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxQdXRGdW5jdGlv
bj4obV92YWx1ZXMudmFsdWUyKTsgfQogCiAgICAgRE9NSklUOjpHZXR0ZXJTZXR0ZXIqIGRvbUpJ
VCgpIGNvbnN0IHsgQVNTRVJUKG1fYXR0cmlidXRlcyAmIERPTUpJVEF0dHJpYnV0ZSk7IHJldHVy
biByZWludGVycHJldF9jYXN0PERPTUpJVEdldHRlclNldHRlckdlbmVyYXRvcj4obV92YWx1ZXMu
dmFsdWUxKSgpOyB9CisgICAgY29uc3QgRE9NSklUOjpTaWduYXR1cmUqIHNpZ25hdHVyZSgpIGNv
bnN0IHsgQVNTRVJUKG1fYXR0cmlidXRlcyAmIERPTUpJVEZ1bmN0aW9uKTsgcmV0dXJuIHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgRE9NSklUOjpTaWduYXR1cmUqPihtX3ZhbHVlcy52YWx1ZTIpOyB9
CiAKICAgICBOYXRpdmVGdW5jdGlvbiBhY2Nlc3NvckdldHRlcigpIGNvbnN0IHsgQVNTRVJUKG1f
YXR0cmlidXRlcyAmIEFjY2Vzc29yKTsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8TmF0aXZlRnVu
Y3Rpb24+KG1fdmFsdWVzLnZhbHVlMSk7IH0KICAgICBOYXRpdmVGdW5jdGlvbiBhY2Nlc3NvclNl
dHRlcigpIGNvbnN0IHsgQVNTRVJUKG1fYXR0cmlidXRlcyAmIEFjY2Vzc29yKTsgcmV0dXJuIHJl
aW50ZXJwcmV0X2Nhc3Q8TmF0aXZlRnVuY3Rpb24+KG1fdmFsdWVzLnZhbHVlMik7IH0KQEAgLTMx
Myw2ICszMjEsMTIgQEAgaW5saW5lIHZvaWQgcmVpZnlTdGF0aWNQcm9wZXJ0eShWTSYgdm0sIGNv
bnN0IFByb3BlcnR5TmFtZSYgcHJvcGVydHlOYW1lLCBjb25zdAogICAgIH0KIAogICAgIGlmICh2
YWx1ZS5hdHRyaWJ1dGVzKCkgJiBGdW5jdGlvbikgeworICAgICAgICBpZiAodmFsdWUuYXR0cmli
dXRlcygpICYgRE9NSklURnVuY3Rpb24pIHsKKyAgICAgICAgICAgIHRoaXNPYmoucHV0RGlyZWN0
TmF0aXZlRnVuY3Rpb24oCisgICAgICAgICAgICAgICAgdm0sIHRoaXNPYmouZ2xvYmFsT2JqZWN0
KCksIHByb3BlcnR5TmFtZSwgdmFsdWUuZnVuY3Rpb25MZW5ndGgoKSwKKyAgICAgICAgICAgICAg
ICB2YWx1ZS5mdW5jdGlvbigpLCB2YWx1ZS5pbnRyaW5zaWMoKSwgdmFsdWUuc2lnbmF0dXJlKCks
IGF0dHJpYnV0ZXNGb3JTdHJ1Y3R1cmUodmFsdWUuYXR0cmlidXRlcygpKSk7CisgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgIH0KICAgICAgICAgdGhpc09iai5wdXREaXJlY3ROYXRpdmVGdW5j
dGlvbigKICAgICAgICAgICAgIHZtLCB0aGlzT2JqLmdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5h
bWUsIHZhbHVlLmZ1bmN0aW9uTGVuZ3RoKCksCiAgICAgICAgICAgICB2YWx1ZS5mdW5jdGlvbigp
LCB2YWx1ZS5pbnRyaW5zaWMoKSwgYXR0cmlidXRlc0ZvclN0cnVjdHVyZSh2YWx1ZS5hdHRyaWJ1
dGVzKCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05hdGl2
ZUV4ZWN1dGFibGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZlRXhl
Y3V0YWJsZS5jcHAKaW5kZXggMWMyYmVjNThiN2RiODk4YjgxMThiMjk3MTBiMmQ3NDI2OTNiYjIx
ZC4uYjdkYWQyYTQ2MmRkZGZjMjI3NjJmZDVjZDdjZjZhNDYxY2RkMThmNiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZlRXhlY3V0YWJsZS5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZlRXhlY3V0YWJsZS5jcHAKQEAgLTQw
LDEwICs0MCwxMCBAQCBuYW1lc3BhY2UgSlNDIHsKIAogY29uc3QgQ2xhc3NJbmZvIE5hdGl2ZUV4
ZWN1dGFibGU6OnNfaW5mbyA9IHsgIk5hdGl2ZUV4ZWN1dGFibGUiLCAmRXhlY3V0YWJsZUJhc2U6
OnNfaW5mbywgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShOYXRpdmVFeGVjdXRhYmxlKSB9OwogCi1O
YXRpdmVFeGVjdXRhYmxlKiBOYXRpdmVFeGVjdXRhYmxlOjpjcmVhdGUoVk0mIHZtLCBQYXNzUmVm
UHRyPEpJVENvZGU+IGNhbGxUaHVuaywgTmF0aXZlRnVuY3Rpb24gZnVuY3Rpb24sIFBhc3NSZWZQ
dHI8SklUQ29kZT4gY29uc3RydWN0VGh1bmssIE5hdGl2ZUZ1bmN0aW9uIGNvbnN0cnVjdG9yLCBJ
bnRyaW5zaWMgaW50cmluc2ljLCBjb25zdCBTdHJpbmcmIG5hbWUpCitOYXRpdmVFeGVjdXRhYmxl
KiBOYXRpdmVFeGVjdXRhYmxlOjpjcmVhdGUoVk0mIHZtLCBQYXNzUmVmUHRyPEpJVENvZGU+IGNh
bGxUaHVuaywgTmF0aXZlRnVuY3Rpb24gZnVuY3Rpb24sIFBhc3NSZWZQdHI8SklUQ29kZT4gY29u
c3RydWN0VGh1bmssIE5hdGl2ZUZ1bmN0aW9uIGNvbnN0cnVjdG9yLCBJbnRyaW5zaWMgaW50cmlu
c2ljLCBjb25zdCBET01KSVQ6OlNpZ25hdHVyZSogc2lnbmF0dXJlLCBjb25zdCBTdHJpbmcmIG5h
bWUpCiB7CiAgICAgTmF0aXZlRXhlY3V0YWJsZSogZXhlY3V0YWJsZTsKLSAgICBleGVjdXRhYmxl
ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8TmF0aXZlRXhlY3V0YWJsZT4odm0uaGVhcCkp
IE5hdGl2ZUV4ZWN1dGFibGUodm0sIGZ1bmN0aW9uLCBjb25zdHJ1Y3RvciwgaW50cmluc2ljKTsK
KyAgICBleGVjdXRhYmxlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8TmF0aXZlRXhlY3V0
YWJsZT4odm0uaGVhcCkpIE5hdGl2ZUV4ZWN1dGFibGUodm0sIGZ1bmN0aW9uLCBjb25zdHJ1Y3Rv
ciwgaW50cmluc2ljLCBzaWduYXR1cmUpOwogICAgIGV4ZWN1dGFibGUtPmZpbmlzaENyZWF0aW9u
KHZtLCBjYWxsVGh1bmssIGNvbnN0cnVjdFRodW5rLCBuYW1lKTsKICAgICByZXR1cm4gZXhlY3V0
YWJsZTsKIH0KQEAgLTY4LDEwICs2OCwxMSBAQCB2b2lkIE5hdGl2ZUV4ZWN1dGFibGU6OmZpbmlz
aENyZWF0aW9uKFZNJiB2bSwgUGFzc1JlZlB0cjxKSVRDb2RlPiBjYWxsVGh1bmssIFBhcwogICAg
IG1fbmFtZSA9IG5hbWU7CiB9CiAKLU5hdGl2ZUV4ZWN1dGFibGU6Ok5hdGl2ZUV4ZWN1dGFibGUo
Vk0mIHZtLCBOYXRpdmVGdW5jdGlvbiBmdW5jdGlvbiwgTmF0aXZlRnVuY3Rpb24gY29uc3RydWN0
b3IsIEludHJpbnNpYyBpbnRyaW5zaWMpCitOYXRpdmVFeGVjdXRhYmxlOjpOYXRpdmVFeGVjdXRh
YmxlKFZNJiB2bSwgTmF0aXZlRnVuY3Rpb24gZnVuY3Rpb24sIE5hdGl2ZUZ1bmN0aW9uIGNvbnN0
cnVjdG9yLCBJbnRyaW5zaWMgaW50cmluc2ljLCBjb25zdCBET01KSVQ6OlNpZ25hdHVyZSogc2ln
bmF0dXJlKQogICAgIDogRXhlY3V0YWJsZUJhc2Uodm0sIHZtLm5hdGl2ZUV4ZWN1dGFibGVTdHJ1
Y3R1cmUuZ2V0KCksIE5VTV9QQVJBTUVURVJTX0lTX0hPU1QsIGludHJpbnNpYykKICAgICAsIG1f
ZnVuY3Rpb24oZnVuY3Rpb24pCiAgICAgLCBtX2NvbnN0cnVjdG9yKGNvbnN0cnVjdG9yKQorICAg
ICwgbV9zaWduYXR1cmUoc2lnbmF0dXJlKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9OYXRpdmVFeGVjdXRhYmxlLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9OYXRpdmVFeGVjdXRhYmxlLmgKaW5kZXggNWJmMmUxMDZkYjMwYTViOGM5
NzhjODk2YTZhZDk4Y2EyYzc1NzQxNC4uZTRkM2UwNDk0NTdiNDVkMDI0NTdlOGRkYTU0NDkwYjM3
MTRhY2NlYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZl
RXhlY3V0YWJsZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05hdGl2ZUV4
ZWN1dGFibGUuaApAQCAtMjgsNiArMjgsOSBAQAogI2luY2x1ZGUgIkV4ZWN1dGFibGVCYXNlLmgi
CiAKIG5hbWVzcGFjZSBKU0MgeworbmFtZXNwYWNlIERPTUpJVCB7CitjbGFzcyBTaWduYXR1cmU7
Cit9CiAKIGNsYXNzIE5hdGl2ZUV4ZWN1dGFibGUgZmluYWwgOiBwdWJsaWMgRXhlY3V0YWJsZUJh
c2UgewogICAgIGZyaWVuZCBjbGFzcyBKSVQ7CkBAIC0zNiw3ICszOSw3IEBAIGNsYXNzIE5hdGl2
ZUV4ZWN1dGFibGUgZmluYWwgOiBwdWJsaWMgRXhlY3V0YWJsZUJhc2UgewogICAgIHR5cGVkZWYg
RXhlY3V0YWJsZUJhc2UgQmFzZTsKICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJl
RmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IFN0cnVjdHVyZUlzSW1tb3J0YWw7CiAKLSAg
ICBzdGF0aWMgTmF0aXZlRXhlY3V0YWJsZSogY3JlYXRlKFZNJiB2bSwgUGFzc1JlZlB0cjxKSVRD
b2RlPiBjYWxsVGh1bmssIE5hdGl2ZUZ1bmN0aW9uIGZ1bmN0aW9uLCBQYXNzUmVmUHRyPEpJVENv
ZGU+IGNvbnN0cnVjdFRodW5rLCBOYXRpdmVGdW5jdGlvbiBjb25zdHJ1Y3RvciwgSW50cmluc2lj
IGludHJpbnNpYywgY29uc3QgU3RyaW5nJiBuYW1lKTsKKyAgICBzdGF0aWMgTmF0aXZlRXhlY3V0
YWJsZSogY3JlYXRlKFZNJiwgUGFzc1JlZlB0cjxKSVRDb2RlPiBjYWxsVGh1bmssIE5hdGl2ZUZ1
bmN0aW9uIGZ1bmN0aW9uLCBQYXNzUmVmUHRyPEpJVENvZGU+IGNvbnN0cnVjdFRodW5rLCBOYXRp
dmVGdW5jdGlvbiBjb25zdHJ1Y3RvciwgSW50cmluc2ljLCBjb25zdCBET01KSVQ6OlNpZ25hdHVy
ZSosIGNvbnN0IFN0cmluZyYgbmFtZSk7CiAKICAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQ2Vs
bCopOwogCkBAIC02Niw2ICs2OSwxNCBAQCBjbGFzcyBOYXRpdmVFeGVjdXRhYmxlIGZpbmFsIDog
cHVibGljIEV4ZWN1dGFibGVCYXNlIHsKICAgICBERUNMQVJFX0lORk87CiAKICAgICBjb25zdCBT
dHJpbmcmIG5hbWUoKSBjb25zdCB7IHJldHVybiBtX25hbWU7IH0KKyAgICBjb25zdCBET01KSVQ6
OlNpZ25hdHVyZSogc2lnbmF0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9zaWduYXR1cmU7IH0KKwor
ICAgIGNvbnN0IERPTUpJVDo6U2lnbmF0dXJlKiBzaWduYXR1cmVGb3IoQ29kZVNwZWNpYWxpemF0
aW9uS2luZCBraW5kKSBjb25zdAorICAgIHsKKyAgICAgICAgaWYgKGlzQ2FsbChraW5kKSkKKyAg
ICAgICAgICAgIHJldHVybiBzaWduYXR1cmUoKTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7Cisg
ICAgfQogCiBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYsIFBhc3NSZWZQ
dHI8SklUQ29kZT4gY2FsbFRodW5rLCBQYXNzUmVmUHRyPEpJVENvZGU+IGNvbnN0cnVjdFRodW5r
LCBjb25zdCBTdHJpbmcmIG5hbWUpOwpAQCAtNzMsMTAgKzg0LDExIEBAIGNsYXNzIE5hdGl2ZUV4
ZWN1dGFibGUgZmluYWwgOiBwdWJsaWMgRXhlY3V0YWJsZUJhc2UgewogcHJpdmF0ZToKICAgICBm
cmllbmQgY2xhc3MgRXhlY3V0YWJsZUJhc2U7CiAKLSAgICBOYXRpdmVFeGVjdXRhYmxlKFZNJiwg
TmF0aXZlRnVuY3Rpb24gZnVuY3Rpb24sIE5hdGl2ZUZ1bmN0aW9uIGNvbnN0cnVjdG9yLCBJbnRy
aW5zaWMpOworICAgIE5hdGl2ZUV4ZWN1dGFibGUoVk0mLCBOYXRpdmVGdW5jdGlvbiBmdW5jdGlv
biwgTmF0aXZlRnVuY3Rpb24gY29uc3RydWN0b3IsIEludHJpbnNpYywgY29uc3QgRE9NSklUOjpT
aWduYXR1cmUqKTsKIAogICAgIE5hdGl2ZUZ1bmN0aW9uIG1fZnVuY3Rpb247CiAgICAgTmF0aXZl
RnVuY3Rpb24gbV9jb25zdHJ1Y3RvcjsKKyAgICBjb25zdCBET01KSVQ6OlNpZ25hdHVyZSogbV9z
aWduYXR1cmU7CiAKICAgICBTdHJpbmcgbV9uYW1lOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5U2xvdC5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvUHJvcGVydHlTbG90LmgKaW5kZXggOWRlMTUxYTU2YWEyNzU2Y2ZkMGM2MDAz
NjY4MjY2YjE5Zjk5MzJkZC4uMzg3ZTMxYjQwZTVhZWJmMmYzNWY2Y2EyNzJlMzgzYzA1ZDNmNDUy
ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlTbG90
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlTbG90LmgKQEAg
LTUxLDYgKzUxLDcgQEAgZW51bSBBdHRyaWJ1dGUgewogICAgIENsYXNzU3RydWN0dXJlICAgID0g
MSA8PCAxMiwgLy8gcHJvcGVydHkgaXMgYSBsYXp5IGNsYXNzIHN0cnVjdHVyZSAtIG9ubHkgdXNl
ZCBieSBzdGF0aWMgaGFzaHRhYmxlcwogICAgIFByb3BlcnR5Q2FsbGJhY2sgID0gMSA8PCAxMywg
Ly8gcHJvcGVydHkgdGhhdCBpcyBhIGxhenkgcHJvcGVydHkgY2FsbGJhY2sgLSBvbmx5IHVzZWQg
Ynkgc3RhdGljIGhhc2h0YWJsZXMKICAgICBET01KSVRBdHRyaWJ1dGUgICA9IDEgPDwgMTQsIC8v
IHByb3BlcnR5IGlzIGEgRE9NIEpJVCBhdHRyaWJ1dGUgLSBvbmx5IHVzZWQgYnkgc3RhdGljIGhh
c2h0YWJsZXMKKyAgICBET01KSVRGdW5jdGlvbiAgICA9IDEgPDwgMTUsIC8vIHByb3BlcnR5IGlz
IGEgRE9NIEpJVCBmdW5jdGlvbiAtIG9ubHkgdXNlZCBieSBzdGF0aWMgaGFzaHRhYmxlcwogICAg
IEJ1aWx0aW5PckZ1bmN0aW9uID0gQnVpbHRpbiB8IEZ1bmN0aW9uLCAvLyBoZWxwZXIgb25seSB1
c2VkIGJ5IHN0YXRpYyBoYXNodGFibGVzCiAgICAgQnVpbHRpbk9yRnVuY3Rpb25PckxhenlQcm9w
ZXJ0eSA9IEJ1aWx0aW4gfCBGdW5jdGlvbiB8IENlbGxQcm9wZXJ0eSB8IENsYXNzU3RydWN0dXJl
IHwgUHJvcGVydHlDYWxsYmFjaywgLy8gaGVscGVyIG9ubHkgdXNlZCBieSBzdGF0aWMgaGFzaHRh
YmxlcwogICAgIEJ1aWx0aW5PckZ1bmN0aW9uT3JBY2Nlc3Nvck9yTGF6eVByb3BlcnR5ID0gQnVp
bHRpbiB8IEZ1bmN0aW9uIHwgQWNjZXNzb3IgfCBDZWxsUHJvcGVydHkgfCBDbGFzc1N0cnVjdHVy
ZSB8IFByb3BlcnR5Q2FsbGJhY2ssIC8vIGhlbHBlciBvbmx5IHVzZWQgYnkgc3RhdGljIGhhc2h0
YWJsZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAppbmRleCA4MTIzOWM1YjkyNGI0
ZWNjOGU2ZDcwYmM4MDc3ZTgzOGFmMWUxZDYxLi5mOTI3MzQ3MzRhY2VlYzQxYTQ1ODM2MDk1NGIw
N2Q4ZmFjMTI1YmJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9W
TS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCkBAIC01MTEs
MTcgKzUxMSwxNyBAQCBzdGF0aWMgVGh1bmtHZW5lcmF0b3IgdGh1bmtHZW5lcmF0b3JGb3JJbnRy
aW5zaWMoSW50cmluc2ljIGludHJpbnNpYykKIAogTmF0aXZlRXhlY3V0YWJsZSogVk06OmdldEhv
c3RGdW5jdGlvbihOYXRpdmVGdW5jdGlvbiBmdW5jdGlvbiwgTmF0aXZlRnVuY3Rpb24gY29uc3Ry
dWN0b3IsIGNvbnN0IFN0cmluZyYgbmFtZSkKIHsKLSAgICByZXR1cm4gZ2V0SG9zdEZ1bmN0aW9u
KGZ1bmN0aW9uLCBOb0ludHJpbnNpYywgY29uc3RydWN0b3IsIG5hbWUpOworICAgIHJldHVybiBn
ZXRIb3N0RnVuY3Rpb24oZnVuY3Rpb24sIE5vSW50cmluc2ljLCBjb25zdHJ1Y3RvciwgbnVsbHB0
ciwgbmFtZSk7CiB9CiAKLU5hdGl2ZUV4ZWN1dGFibGUqIFZNOjpnZXRIb3N0RnVuY3Rpb24oTmF0
aXZlRnVuY3Rpb24gZnVuY3Rpb24sIEludHJpbnNpYyBpbnRyaW5zaWMsIE5hdGl2ZUZ1bmN0aW9u
IGNvbnN0cnVjdG9yLCBjb25zdCBTdHJpbmcmIG5hbWUpCitOYXRpdmVFeGVjdXRhYmxlKiBWTTo6
Z2V0SG9zdEZ1bmN0aW9uKE5hdGl2ZUZ1bmN0aW9uIGZ1bmN0aW9uLCBJbnRyaW5zaWMgaW50cmlu
c2ljLCBOYXRpdmVGdW5jdGlvbiBjb25zdHJ1Y3RvciwgY29uc3QgRE9NSklUOjpTaWduYXR1cmUq
IHNpZ25hdHVyZSwgY29uc3QgU3RyaW5nJiBuYW1lKQogewogI2lmIEVOQUJMRShKSVQpCiAgICAg
aWYgKGNhblVzZUpJVCgpKSB7CiAgICAgICAgIHJldHVybiBqaXRTdHVicy0+aG9zdEZ1bmN0aW9u
U3R1YigKICAgICAgICAgICAgIHRoaXMsIGZ1bmN0aW9uLCBjb25zdHJ1Y3RvciwKICAgICAgICAg
ICAgIGludHJpbnNpYyAhPSBOb0ludHJpbnNpYyA/IHRodW5rR2VuZXJhdG9yRm9ySW50cmluc2lj
KGludHJpbnNpYykgOiAwLAotICAgICAgICAgICAgaW50cmluc2ljLCBuYW1lKTsKKyAgICAgICAg
ICAgIGludHJpbnNpYywgc2lnbmF0dXJlLCBuYW1lKTsKICAgICB9CiAjZWxzZSAvLyBFTkFCTEUo
SklUKQogICAgIFVOVVNFRF9QQVJBTShpbnRyaW5zaWMpOwpAQCAtNTI5LDcgKzUyOSw3IEBAIE5h
dGl2ZUV4ZWN1dGFibGUqIFZNOjpnZXRIb3N0RnVuY3Rpb24oTmF0aXZlRnVuY3Rpb24gZnVuY3Rp
b24sIEludHJpbnNpYyBpbnRyaW5zCiAgICAgcmV0dXJuIE5hdGl2ZUV4ZWN1dGFibGU6OmNyZWF0
ZSgqdGhpcywKICAgICAgICAgYWRvcHRSZWYobmV3IE5hdGl2ZUpJVENvZGUoTWFjcm9Bc3NlbWJs
ZXJDb2RlUmVmOjpjcmVhdGVMTEludENvZGVSZWYobGxpbnRfbmF0aXZlX2NhbGxfdHJhbXBvbGlu
ZSksIEpJVENvZGU6Okhvc3RDYWxsVGh1bmspKSwgZnVuY3Rpb24sCiAgICAgICAgIGFkb3B0UmVm
KG5ldyBOYXRpdmVKSVRDb2RlKE1hY3JvQXNzZW1ibGVyQ29kZVJlZjo6Y3JlYXRlTExJbnRDb2Rl
UmVmKGxsaW50X25hdGl2ZV9jb25zdHJ1Y3RfdHJhbXBvbGluZSksIEpJVENvZGU6Okhvc3RDYWxs
VGh1bmspKSwgY29uc3RydWN0b3IsCi0gICAgICAgIE5vSW50cmluc2ljLCBuYW1lKTsKKyAgICAg
ICAgTm9JbnRyaW5zaWMsIHNpZ25hdHVyZSwgbmFtZSk7CiB9CiAKIFZNOjpDbGllbnREYXRhOjp+
Q2xpZW50RGF0YSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9W
TS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAppbmRleCA0ZmQ3ZWM0MGYw
M2VlZGViMjliZDQ5NjdkOWNkYzQzMDI0Y2ZhNDEwLi4xNWEwOGMyYTMzYmU5NzJiNGE5YTMyZGZj
MzUwZDZlMzhjYzg0MmVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9WTS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKQEAgLTQyOSw3
ICs0MjksNyBAQCBjbGFzcyBWTSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxWTT4gewog
ICAgIHN0ZDo6dW5pcXVlX3B0cjxGVEw6OlRodW5rcz4gZnRsVGh1bmtzOwogI2VuZGlmCiAgICAg
TmF0aXZlRXhlY3V0YWJsZSogZ2V0SG9zdEZ1bmN0aW9uKE5hdGl2ZUZ1bmN0aW9uLCBOYXRpdmVG
dW5jdGlvbiBjb25zdHJ1Y3RvciwgY29uc3QgU3RyaW5nJiBuYW1lKTsKLSAgICBOYXRpdmVFeGVj
dXRhYmxlKiBnZXRIb3N0RnVuY3Rpb24oTmF0aXZlRnVuY3Rpb24sIEludHJpbnNpYyBpbnRyaW5z
aWMsIE5hdGl2ZUZ1bmN0aW9uIGNvbnN0cnVjdG9yLCBjb25zdCBTdHJpbmcmIG5hbWUpOworICAg
IE5hdGl2ZUV4ZWN1dGFibGUqIGdldEhvc3RGdW5jdGlvbihOYXRpdmVGdW5jdGlvbiwgSW50cmlu
c2ljLCBOYXRpdmVGdW5jdGlvbiBjb25zdHJ1Y3RvciwgY29uc3QgRE9NSklUOjpTaWduYXR1cmUq
LCBjb25zdCBTdHJpbmcmIG5hbWUpOwogCiAgICAgc3RhdGljIHB0cmRpZmZfdCBleGNlcHRpb25P
ZmZzZXQoKQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0
IGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggNWEwOTc0ZDZiZTQ4ZjA3NDVh
ZGE2MzlmZGFiYTM0ZDRiM2RiNjVmNC4uYjdlZjRiYzdlZTUxMDA3N2Y2NDEyZTIwN2Q3OTI5ZjRi
ZDg4MzAzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIv
U291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTE1NDYsNyArMTU0Niw2IEBAIHNldChX
ZWJDb3JlX1NPVVJDRVMKIAogICAgIGRvbS9kZWZhdWx0L1BsYXRmb3JtTWVzc2FnZVBvcnRDaGFu
bmVsLmNwcAogCi0gICAgZG9taml0L0RPTUpJVEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuY3BwCiAg
ICAgZG9taml0L0RPTUpJVEhlbHBlcnMuY3BwCiAgICAgZG9taml0L0pTRG9jdW1lbnRET01KSVQu
Y3BwCiAgICAgZG9taml0L0pTTm9kZURPTUpJVC5jcHAKQEAgLTM1MTksNiArMzUxOCwxNSBAQCBN
QUtFX0hBU0hfVE9PTFMoJHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0vQ29sb3JEYXRhKQogbGlzdChB
UFBFTkQgV2ViQ29yZV9ERVJJVkVEX1NPVVJDRVMgJHtERVJJVkVEX1NPVVJDRVNfV0VCQ09SRV9E
SVJ9L0NvbG9yRGF0YS5jcHApCiAKIAorIyBHZW5lcmF0ZSBET01KSVRBYnN0cmFjdEhlYXBSZXBv
c2l0b3J5LmgKK2FkZF9jdXN0b21fY29tbWFuZCgKKyAgICBPVVRQVVQgJHtERVJJVkVEX1NPVVJD
RVNfV0VCQ09SRV9ESVJ9L0RPTUpJVEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaAorICAgIE1BSU5f
REVQRU5ERU5DWSBkb21qaXQvRE9NSklUQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS55YW1sCisgICAg
REVQRU5EUyAke1dFQkNPUkVfRElSfS9kb21qaXQvZ2VuZXJhdGUtYWJzdHJhY3QtaGVhcC5yYgor
ICAgIENPTU1BTkQgJHtSVUJZX0VYRUNVVEFCTEV9ICR7V0VCQ09SRV9ESVJ9L2RvbWppdC9nZW5l
cmF0ZS1hYnN0cmFjdC1oZWFwLnJiICR7V0VCQ09SRV9ESVJ9L2RvbWppdC9ET01KSVRBYnN0cmFj
dEhlYXBSZXBvc2l0b3J5LnlhbWwgJHtERVJJVkVEX1NPVVJDRVNfV0VCQ09SRV9ESVJ9L0RPTUpJ
VEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaAorICAgIFZFUkJBVElNKQorbGlzdChBUFBFTkQgV2Vi
Q29yZV9ERVJJVkVEX1NPVVJDRVMgJHtERVJJVkVEX1NPVVJDRVNfV0VCQ09SRV9ESVJ9L0RPTUpJ
VEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaCkKKwogIyBHZW5lcmF0ZSBYTUxWaWV3ZXJDU1MuaAog
YWRkX2N1c3RvbV9jb21tYW5kKAogICAgIE9VVFBVVCAke0RFUklWRURfU09VUkNFU19XRUJDT1JF
X0RJUn0vWE1MVmlld2VyQ1NTLmggJHtERVJJVkVEX1NPVVJDRVNfV0VCQ09SRV9ESVJ9L1hNTFZp
ZXdlci5taW4uY3NzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5t
YWtlIGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQppbmRleCAwY2JjMWRmODE1
ODZmMTQ5OWVmNDFhMmNiYjYyMTg2MTQ1NTUwYjI3Li5hZGE1YWNiNDlmY2EyYzQwZjMwZDgwNjEy
YTE2ZTM5YTJkMTY2OWFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNl
cy5tYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKQEAgLTc0Niw2
ICs3NDYsNyBAQCBKU19CSU5ESU5HX0lETFMgPSBcCiAKIFBZVEhPTiA9IHB5dGhvbgogUEVSTCA9
IHBlcmwKK1JVQlkgPSBydWJ5CiAKIGlmZXEgKCQoT1MpLFdpbmRvd3NfTlQpCiAgICAgREVMRVRF
ID0gY21kIC8vQyBkZWwKQEAgLTg1Miw2ICs4NTMsNyBAQCBhbGwgOiBcCiAgICAgQ1NTVmFsdWVL
ZXl3b3Jkcy5jcHAgXAogICAgIENTU1ZhbHVlS2V5d29yZHMuaCBcCiAgICAgQ29sb3JEYXRhLmNw
cCBcCisgICAgRE9NSklUQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5oIFwKICAgICBFdmVudEludGVy
ZmFjZXMuaCBcCiAgICAgRXZlbnRUYXJnZXRJbnRlcmZhY2VzLmggXAogICAgIEV4Y2VwdGlvbkNv
ZGVEZXNjcmlwdGlvbi5jcHAgXApAQCAtOTQxLDYgKzk0MywxNSBAQCBTZWxlY3RvclBzZXVkb0Vs
ZW1lbnRUeXBlTWFwLmNwcCA6ICQoV2ViQ29yZSkvY3NzL21ha2VTZWxlY3RvclBzZXVkb0VsZW1l
bnRzTWFwLgogCiAjIC0tLS0tLS0tCiAKKyMgRE9NSklUIEFic3RyYWN0IEhlYXAKKworYWxsIDog
RE9NSklUQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5oCisKK0RPTUpJVEFic3RyYWN0SGVhcFJlcG9z
aXRvcnkuaCA6ICQoV2ViQ29yZSkvZG9taml0L2dlbmVyYXRlLWFic3RyYWN0LWhlYXAucmIgJChX
ZWJDb3JlKS9kb21qaXQvRE9NSklUQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS55YW1sCisJJChSVUJZ
KSAiJChXZWJDb3JlKS9kb21qaXQvZ2VuZXJhdGUtYWJzdHJhY3QtaGVhcC5yYiIgJChXZWJDb3Jl
KS9kb21qaXQvRE9NSklUQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS55YW1sIC4vRE9NSklUQWJzdHJh
Y3RIZWFwUmVwb3NpdG9yeS5oCisKKyMgLS0tLS0tLS0KKwogIyBYTUxWaWV3ZXIgQ1NTCiAKIGFs
bCA6IFhNTFZpZXdlckNTUy5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5n
SGVhZGVycy9ieXRlY29kZS9TcGVjdWxhdGVkVHlwZS5oIGIvU291cmNlL1dlYkNvcmUvRm9yd2Fy
ZGluZ0hlYWRlcnMvYnl0ZWNvZGUvU3BlY3VsYXRlZFR5cGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wOTQ2NmY0
ZjAwYjgwN2RmZWRhMGZjODIwODU0NmI3MTg0NGYwOTllCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvYnl0ZWNvZGUvU3BlY3VsYXRlZFR5cGUuaApA
QCAtMCwwICsxLDI5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgor
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2lmbmRlZiBXZWJDb3JlX0ZXRF9TcGVjdWxhdGVkVHlwZV9oCisjZGVmaW5lIFdlYkNv
cmVfRldEX1NwZWN1bGF0ZWRUeXBlX2gKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TcGVjdWxh
dGVkVHlwZS5oPgorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5n
SGVhZGVycy9kb21qaXQvRE9NSklUU2lnbmF0dXJlLmggYi9Tb3VyY2UvV2ViQ29yZS9Gb3J3YXJk
aW5nSGVhZGVycy9kb21qaXQvRE9NSklUU2lnbmF0dXJlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzIwMDI3ZjZl
MDhlMzgzMGUzNTFiMWM5Y2QzMmYyMDMxMjlkMmI1ZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL2RvbWppdC9ET01KSVRTaWduYXR1cmUuaApAQCAt
MCwwICsxLDI5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2lmbmRlZiBXZWJDb3JlX0ZXRF9ET01KSVRTaWduYXR1cmVfaAorI2RlZmluZSBXZWJDb3Jl
X0ZXRF9ET01KSVRTaWduYXR1cmVfaAorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0RPTUpJVFNp
Z25hdHVyZS5oPgorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKaW5kZXggNTFhZTE4MWEzNzE1MjAxMzExNmI5YjgwMWU4NTcxMjI0
ZWNmYWVkOC4uNmRkNTBkYmExNGZjNTEyNjA0NTc1ZDZlMjEyODk4ZWE5ZjI0ZDBiOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisr
KyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAt
NjIxMywxMiArNjIxMywxMyBAQAogCQlFMzE1MEVBNzFEQTcyMTkzMDAxOTQwMTIgLyogRE9NSklU
SGVscGVycy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RTMxNTBFQTUxREE3MjE4RDAwMTk0MDEyIC8qIERPTUpJVEhlbHBlcnMuaCAqLzsgfTsKIAkJRTMx
ODAzOUQxREM0MDA5OTAwOTkzMkMyIC8qIEpTRHluYW1pY0Rvd25jYXN0LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFM0E1ODcyRTFEQzNGNTI2MDBGNjA3
QTYgLyogSlNEeW5hbWljRG93bmNhc3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQlFMzU2NUI3QjFEQzJENkM5MDAyMTdEQkQgLyogSlNFdmVudEN1
c3RvbS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM0
RUU0OUYxREMyRDU3NTAwRUFBOUQzIC8qIEpTRXZlbnRDdXN0b20uaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQlFMzVDQTE0RDFEQkMzQTNGMDBGODM1
MTYgLyogRE9NSklUQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzVDQTE0QjFEQkMzQTNDMDBGODM1MTYgLyog
RE9NSklUQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5jcHAgKi87IH07Ci0JCUUzNUNBMTRFMURCQzNB
NDIwMEY4MzUxNiAvKiBET01KSVRBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzVDQTE0QzFEQkMzQTNDMDBGODM1
MTYgLyogRE9NSklUQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5oICovOyB9OworCQlFMzU4MDJCNjFE
Qzg0MzVEMDBBOTc3M0MgLyogRE9NSklUSURMVHlwZUZpbHRlci5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM1ODAyQjUxREM4NDM1ODAwQTk3NzNDIC8q
IERPTUpJVElETFR5cGVGaWx0ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQlFMzc3RkU0RDFEQURFMTY1MDBDREQwMjUgLyogTm9kZUNvbnN0YW50
cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTNEMDQ5
OTMxREFEQzA0NTAwNzE4RjNDIC8qIE5vZGVDb25zdGFudHMuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFMzg4Mzg5ODFCQUQxNDVGMDBENjJFRTMg
LyogU2NyaXB0TW9kdWxlTG9hZGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEUzODgzODk0MUJBRDE0NUYwMEQ2MkVFMyAvKiBTY3JpcHRNb2R1bGVM
b2FkZXIuY3BwICovOyB9OwogCQlFMzg4Mzg5OTFCQUQxNDVGMDBENjJFRTMgLyogU2NyaXB0TW9k
dWxlTG9hZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBFMzg4Mzg5NTFCQUQxNDVGMDBENjJFRTMgLyogU2NyaXB0TW9kdWxlTG9hZGVyLmggKi87IH07
CiAJCUUzOThGQzI0MURDMzJBMjAwMDNDNDY4NCAvKiBET01KSVRIZWxwZXJzLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzOThGQzIzMURDMzJBMUIw
MDNDNDY4NCAvKiBET01KSVRIZWxwZXJzLmNwcCAqLzsgfTsKKwkJRTNBNzc2NjcxREM4NUQyODAw
QjY5MEQ4IC8qIERPTUpJVElETENvbnZlcnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEUzQTc3NjY1MURDODVEMjIwMEI2OTBEOCAvKiBET01KSVRJRExD
b252ZXJ0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
KwkJRTNBNzc2NjgxREM4NUQyODAwQjY5MEQ4IC8qIERPTUpJVElETFR5cGUuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzQTc3NjY2MURDODVEMjIwMEI2
OTBEOCAvKiBET01KSVRJRExUeXBlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJRTNCMkYwRUIxRDdGNEM5RDAwQjBDOUQxIC8qIExvYWRhYmxlQ2xh
c3NpY1NjcmlwdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBFM0IyRjBFMzFEN0YzNUVDMDBCMEM5RDEgLyogTG9hZGFibGVDbGFzc2ljU2NyaXB0LmNw
cCAqLzsgfTsKIAkJRTNCMkYwRUMxRDdGNENBMTAwQjBDOUQxIC8qIExvYWRhYmxlU2NyaXB0LmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzQjJGMEU5
MUQ3RjNEM0MwMEIwQzlEMSAvKiBMb2FkYWJsZVNjcmlwdC5jcHAgKi87IH07CiAJCUUzQjJGMEVE
MUQ3RjRDQTMwMEIwQzlEMSAvKiBMb2FkYWJsZVNjcmlwdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTNCMkYwRTcxRDdGMzVFQzAwQjBDOUQxIC8qIExv
YWRhYmxlU2NyaXB0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKQEAgLTE0MDYxLDEzICsxNDA2MiwxNSBAQAogCQlFMUZGOEY2QTE4MERCNUJFMDAxMzI2
NzQgLyogQ3J5cHRvQWxnb3JpdGhtUmVnaXN0cnkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gQ3J5cHRvQWxnb3JpdGhtUmVnaXN0cnkuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlFMUZGOEY2QjE4MERCNUJFMDAxMzI2NzQgLyogQ3J5cHRvQWxnb3Jp
dGhtUmVnaXN0cnkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ3J5cHRvQWxn
b3JpdGhtUmVnaXN0cnkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTMxNTBFQTUx
REE3MjE4RDAwMTk0MDEyIC8qIERPTUpJVEhlbHBlcnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gRE9NSklUSGVscGVycy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQlFMzM0ODI1RTFEQzkzQUEwMDA5Qzk1NDQgLyogRE9NSklUQWJzdHJhY3RIZWFwUmVwb3NpdG9y
eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBET01KSVRBYnN0cmFjdEhlYXBS
ZXBvc2l0b3J5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzNEVFNDlGMURDMkQ1
NzUwMEVBQTlEMyAvKiBKU0V2ZW50Q3VzdG9tLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEpTRXZlbnRDdXN0b20uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRTM1
Q0ExNEIxREJDM0EzQzAwRjgzNTE2IC8qIERPTUpJVEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRE9NSklUQWJzdHJhY3RIZWFw
UmVwb3NpdG9yeS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUUzNUNBMTRDMURC
QzNBM0MwMEY4MzUxNiAvKiBET01KSVRBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERPTUpJVEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTM1ODAyQjUxREM4NDM1ODAwQTk3NzNDIC8q
IERPTUpJVElETFR5cGVGaWx0ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
RE9NSklUSURMVHlwZUZpbHRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzg4
Mzg5NDFCQUQxNDVGMDBENjJFRTMgLyogU2NyaXB0TW9kdWxlTG9hZGVyLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNjcmlwdE1vZHVsZUxvYWRlci5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzODgzODk1MUJBRDE0NUYwMEQ2MkVFMyAvKiBTY3Jp
cHRNb2R1bGVMb2FkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2NyaXB0
TW9kdWxlTG9hZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzOThGQzIzMURD
MzJBMUIwMDNDNDY4NCAvKiBET01KSVRIZWxwZXJzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IERPTUpJVEhlbHBlcnMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlFM0E1ODcyRTFEQzNGNTI2MDBGNjA3QTYgLyogSlNEeW5hbWljRG93bmNhc3QuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNEeW5hbWljRG93bmNhc3QuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTNBNzc2NjUxREM4NUQyMjAwQjY5MEQ4IC8qIERP
TUpJVElETENvbnZlcnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRE9NSklU
SURMQ29udmVydC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFM0E3NzY2NjFEQzg1
RDIyMDBCNjkwRDggLyogRE9NSklUSURMVHlwZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBET01KSVRJRExUeXBlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUz
QUZBOTY0MURBNkU5MDgwMDI4NjFCRCAvKiBKU05vZGVET01KSVQuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNOb2RlRE9NSklULmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJRTNCMkYwRTMxRDdGMzVFQzAwQjBDOUQxIC8qIExvYWRhYmxlQ2xhc3Np
Y1NjcmlwdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBMb2FkYWJs
ZUNsYXNzaWNTY3JpcHQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFM0IyRjBF
NDFEN0YzNUVDMDBCMEM5RDEgLyogTG9hZGFibGVDbGFzc2ljU2NyaXB0LmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IExvYWRhYmxlQ2xhc3NpY1NjcmlwdC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtMTcyNTgsNiArMTcyNjEsNyBAQAogCQkJCTY1NjU4MTQ3MDlE
MTMwNDMwMDBFNjFENyAvKiBDU1NWYWx1ZUtleXdvcmRzLmdwZXJmICovLAogCQkJCTY1NjU4MTQ4
MDlEMTMwNDMwMDBFNjFENyAvKiBDU1NWYWx1ZUtleXdvcmRzLmggKi8sCiAJCQkJOUIzQTg4NzEx
NDU2MzJGOTAwM0FFOEY1IC8qIERPTURPTVNldHRhYmxlVG9rZW5MaXN0LmggKi8sCisJCQkJRTMz
NDgyNUUxREM5M0FBMDAwOUM5NTQ0IC8qIERPTUpJVEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaCAq
LywKIAkJCQlFMUM2Q0ZDMjE3NDZEMjkzMDA3Qjg3QTEgLyogRE9NV2luZG93Q29uc3RydWN0b3Jz
LmlkbCAqLywKIAkJCQk5NzBCNzJBNTE0NTAwOEVCMDBGMDBBMzcgLyogRXZlbnRIZWFkZXJzLmgg
Ki8sCiAJCQkJOTcwQjcyODkxNDRGRkFDNjAwRjAwQTM3IC8qIEV2ZW50SW50ZXJmYWNlcy5oICov
LApAQCAtMjI4NzAsMTEgKzIyODc0LDEyIEBACiAJCUUzQUZBOTYzMURBNkU4QUYwMDI4NjFCRCAv
KiBkb21qaXQgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAotCQkJ
CUUzNUNBMTRCMURCQzNBM0MwMEY4MzUxNiAvKiBET01KSVRBYnN0cmFjdEhlYXBSZXBvc2l0b3J5
LmNwcCAqLywKLQkJCQlFMzVDQTE0QzFEQkMzQTNDMDBGODM1MTYgLyogRE9NSklUQWJzdHJhY3RI
ZWFwUmVwb3NpdG9yeS5oICovLAogCQkJCUUzQzk5QTA4MURDM0Q0MTcwMDc5NEFEMyAvKiBET01K
SVRDaGVja0RPTS5oICovLAogCQkJCUUzOThGQzIzMURDMzJBMUIwMDNDNDY4NCAvKiBET01KSVRI
ZWxwZXJzLmNwcCAqLywKIAkJCQlFMzE1MEVBNTFEQTcyMThEMDAxOTQwMTIgLyogRE9NSklUSGVs
cGVycy5oICovLAorCQkJCUUzQTc3NjY1MURDODVEMjIwMEI2OTBEOCAvKiBET01KSVRJRExDb252
ZXJ0LmggKi8sCisJCQkJRTNBNzc2NjYxREM4NUQyMjAwQjY5MEQ4IC8qIERPTUpJVElETFR5cGUu
aCAqLywKKwkJCQlFMzU4MDJCNTFEQzg0MzU4MDBBOTc3M0MgLyogRE9NSklUSURMVHlwZUZpbHRl
ci5oICovLAogCQkJCUUzQjdDMDYyMURDMzQxNUEwMDFGQjBCOCAvKiBKU0RvY3VtZW50RE9NSklU
LmNwcCAqLywKIAkJCQlFM0FGQTk2NDFEQTZFOTA4MDAyODYxQkQgLyogSlNOb2RlRE9NSklULmNw
cCAqLywKIAkJCSk7CkBAIC0yNTc0MSw2ICsyNTc0Niw3IEBACiAJCQkJNDYwQ0JGMzYxRDRCQ0Qw
RTAwOTJFODhFIC8qIEpTRE9NV2luZG93UHJvcGVydGllcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QkNCRkI1M0QwRENEMjlDRjAwMTlCM0U1IC8qIEpTRE9NV2luZG93U2hlbGwuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTY1RTBFOTQ0MTEzM0M4OUYwMEI0Q0IxMCAvKiBKU0RPTVdyYXBwZXIuaCBpbiBI
ZWFkZXJzICovLAorCQkJCUUzQTc3NjY3MURDODVEMjgwMEI2OTBEOCAvKiBET01KSVRJRExDb252
ZXJ0LmggaW4gSGVhZGVycyAqLywKIAkJCQlGRDc4NjhCQTEzNkI5OTkyMDBENDAzREYgLyogSlNE
eW5hbWljc0NvbXByZXNzb3JOb2RlLmggaW4gSGVhZGVycyAqLywKIAkJCQk2NURGMzFGQTA5RDFD
QzYwMDAwQkUzMjUgLyogSlNFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlBREVDNzhGODE4
RUU1MzA4MDAxMzE1QzIgLyogSlNFbGVtZW50Q3VzdG9tLmggaW4gSGVhZGVycyAqLywKQEAgLTI3
MzA0LDYgKzI3MzEwLDcgQEAKIAkJCQkwODUyNUU2MzEyNzhDMDAxMDBBODQ3NzggLyogU1ZHQW5p
bWF0ZWRTdGF0aWNQcm9wZXJ0eVRlYXJPZmYuaCBpbiBIZWFkZXJzICovLAogCQkJCTA4NERCNTlC
MTI4MDA4Q0MwMDJBNkQ2NCAvKiBTVkdBbmltYXRlZFN0cmluZy5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMDgyNTA5MzkxMjhCRDREODAwRTJFRDhFIC8qIFNWR0FuaW1hdGVkVHJhbnNmb3JtTGlzdC5o
IGluIEhlYWRlcnMgKi8sCisJCQkJRTNBNzc2NjgxREM4NUQyODAwQjY5MEQ4IC8qIERPTUpJVElE
TFR5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTA4NUExNTkzMTI4OUE4REQwMDI3MTBFMyAvKiBT
VkdBbmltYXRlZFRyYW5zZm9ybUxpc3RQcm9wZXJ0eVRlYXJPZmYuaCBpbiBIZWFkZXJzICovLAog
CQkJCTQzOUQzMzQzMTNBNjkxMUMwMEMyMEY0RiAvKiBTVkdBbmltYXRlZFR5cGUuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTQzOUQzMzQ0MTNBNjkxMUMwMEMyMEY0RiAvKiBTVkdBbmltYXRlZFR5cGVB
bmltYXRvci5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNzg0Myw2ICsyNzg1MCw3IEBACiAJCQkJOTdB
QUJEMjMxNEZBMDlENTAwNzQ1N0FFIC8qIFdlYlNvY2tldEV4dGVuc2lvbkRpc3BhdGNoZXIuaCBp
biBIZWFkZXJzICovLAogCQkJCTRBNUEyQURDMTYxRTdFMDAwMDU4ODlERCAvKiBXZWJTb2NrZXRF
eHRlbnNpb25QYXJzZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTk3QUFCRDI0MTRGQTA5RDUwMDc0
NTdBRSAvKiBXZWJTb2NrZXRFeHRlbnNpb25Qcm9jZXNzb3IuaCBpbiBIZWFkZXJzICovLAorCQkJ
CUUzNTgwMkI2MURDODQzNUQwMEE5NzczQyAvKiBET01KSVRJRExUeXBlRmlsdGVyLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk5N0FBQkQyNTE0RkEwOUQ1MDA3NDU3QUUgLyogV2ViU29ja2V0RnJhbWUu
aCBpbiBIZWFkZXJzICovLAogCQkJCTk3QUFCRDI3MTRGQTA5RDUwMDc0NTdBRSAvKiBXZWJTb2Nr
ZXRIYW5kc2hha2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTMxREVBNDU2MUIzOUY0RDkwMEY3NzE3
OCAvKiBXZWJTeXN0ZW1CYWNrZHJvcExheWVyLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmggYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5oCmluZGV4IGMxODFmOWExNmY1
NTMwYmQ5NTNkYmY1ZjFjMTVmMTNhNjI0ZmExMmMuLjVkYzFlZTQwYzk4NTQwZThjNDcwNWI3MDk1
NzU5ZmZjZmMyNWRhMGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
RE9NR2xvYmFsT2JqZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01H
bG9iYWxPYmplY3QuaApAQCAtODEsNyArODEsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAg
cHVibGljOgogICAgICAgICB+SlNET01HbG9iYWxPYmplY3QoKTsKIAotICAgICAgICBzdGF0aWMg
Y29uc3QgSlNDOjpDbGFzc0luZm8qIGluZm8oKSB7IHJldHVybiAmc19pbmZvOyB9CisgICAgICAg
IHN0YXRpYyBjb25zdGV4cHIgY29uc3QgSlNDOjpDbGFzc0luZm8qIGluZm8oKSB7IHJldHVybiAm
c19pbmZvOyB9CiAKICAgICAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1
cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgICAgIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBt
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KaW5k
ZXggMzU0OTBkMDJjMmRhMGJlMjUwZDZmZWVhNTlmZmJlNzBiNTM1MGU1OS4uMzFmNzA5NzgwNGE4
NDJjNjg4MGE3NTRjOTExM2ZjODNkMDdiN2M0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KQEAgLTE0MzUsNyArMTQzNSw3IEBA
IHN1YiBHZW5lcmF0ZUhlYWRlcgogICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAicHJvdGVj
dGVkOlxuIik7CiAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgc3RhdGljIGNvbnN0
IEpTQzo6Q2xhc3NJbmZvIHNfaW5mbztcbiIpOwogICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50
LCAicHVibGljOlxuIik7Ci0gICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgc3RhdGlj
IGNvbnN0IEpTQzo6Q2xhc3NJbmZvKiBpbmZvKCkgeyByZXR1cm4gJnNfaW5mbzsgfVxuXG4iKTsK
KyAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICBzdGF0aWMgY29uc3RleHByIGNvbnN0
IEpTQzo6Q2xhc3NJbmZvKiBpbmZvKCkgeyByZXR1cm4gJnNfaW5mbzsgfVxuXG4iKTsKICAgICB9
IGVsc2UgewogICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiXG4iKTsKICAgICAgICAgcHVz
aChAaGVhZGVyQ29udGVudCwgIiAgICBERUNMQVJFX0lORk87XG5cbiIpOwpAQCAtMTg4OSw3ICsx
ODg5LDExIEBAIHN1YiBHZW5lcmF0ZVByb3BlcnRpZXNIYXNoVGFibGUKICAgICAgICAgIyBGSVhN
RTogUmVtb3ZlIHRoaXMgb25jZSB3ZSBjYW4gZ2V0IHJpZCBvZiB0aGUgcXVpcmsgaW50cm9kdWNl
ZCBpbiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYzOTY3LgogICAg
ICAgICAkZnVuY3Rpb25MZW5ndGggPSAzIGlmICRpbnRlcmZhY2VOYW1lIGVxICJFdmVudCIgYW5k
ICRmdW5jdGlvbi0+bmFtZSBlcSAiaW5pdEV2ZW50IjsKIAotICAgICAgICBwdXNoKEAkaGFzaFZh
bHVlMiwgJGZ1bmN0aW9uTGVuZ3RoKTsKKyAgICAgICAgaWYgKCRmdW5jdGlvbi0+ZXh0ZW5kZWRB
dHRyaWJ1dGVzLT57IkRPTUpJVCJ9KSB7CisgICAgICAgICAgICBwdXNoKEAkaGFzaFZhbHVlMiwg
IiZET01KSVRTaWduYXR1cmVGb3IiIC4gJGludGVyZmFjZS0+dHlwZS0+bmFtZSAuICRjb2RlR2Vu
ZXJhdG9yLT5XS191Y2ZpcnN0KCRmdW5jdGlvbi0+bmFtZSkpOworICAgICAgICB9IGVsc2Ugewor
ICAgICAgICAgICAgcHVzaChAJGhhc2hWYWx1ZTIsICRmdW5jdGlvbkxlbmd0aCk7CisgICAgICAg
IH0KIAogICAgICAgICBwdXNoKEAkaGFzaFNwZWNpYWxzLCBDb21wdXRlRnVuY3Rpb25TcGVjaWFs
KCRpbnRlcmZhY2UsICRmdW5jdGlvbikpOwogCkBAIC0yNTA1LDM5ICsyNTA5LDI4IEBAIHN1YiBh
ZGRVbnNjb3BhYmxlUHJvcGVydGllcwogICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHB1dERp
cmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT51bnNjb3BhYmxlc1N5
bWJvbCwgJnVuc2NvcGFibGVzLCBEb250RW51bSB8IFJlYWRPbmx5KTtcbiIpOwogfQogCi1zdWIg
R2V0UmVzdWx0VHlwZUZpbHRlcgorc3ViIEdldFVuc2FmZUFyZ3VtZW50VHlwZQogewotICAgIG15
ICgkdHlwZSkgPSBAXzsKKyAgICBteSAoJGludGVyZmFjZSwgJHR5cGUpID0gQF87CiAKLSAgICBt
eSAlVHlwZUZpbHRlcnMgPSAoCi0gICAgICAgICJhbnkiID0+ICJTcGVjSGVhcFRvcCIsCi0gICAg
ICAgICJib29sZWFuIiA9PiAiU3BlY0Jvb2xlYW4iLAotICAgICAgICAiYnl0ZSIgPT4gIlNwZWNJ
bnQzMk9ubHkiLAotICAgICAgICAib2N0ZXQiID0+ICJTcGVjSW50MzJPbmx5IiwKLSAgICAgICAg
InNob3J0IiA9PiAiU3BlY0ludDMyT25seSIsCi0gICAgICAgICJ1bnNpZ25lZCBzaG9ydCIgPT4g
IlNwZWNJbnQzMk9ubHkiLAotICAgICAgICAibG9uZyIgPT4gIlNwZWNJbnQzMk9ubHkiLAotICAg
ICAgICAidW5zaWduZWQgbG9uZyIgPT4gIlNwZWNCeXRlY29kZU51bWJlciIsCi0gICAgICAgICJs
b25nIGxvbmciID0+ICJTcGVjQnl0ZWNvZGVOdW1iZXIiLAotICAgICAgICAidW5zaWduZWQgbG9u
ZyBsb25nIiA9PiAiU3BlY0J5dGVjb2RlTnVtYmVyIiwKLSAgICAgICAgImZsb2F0IiA9PiAiU3Bl
Y0J5dGVjb2RlTnVtYmVyIiwKLSAgICAgICAgInVucmVzdHJpY3RlZCBmbG9hdCIgPT4gIlNwZWNC
eXRlY29kZU51bWJlciIsCi0gICAgICAgICJkb3VibGUiID0+ICJTcGVjQnl0ZWNvZGVOdW1iZXIi
LAotICAgICAgICAidW5yZXN0cmljdGVkIGRvdWJsZSIgPT4gIlNwZWNCeXRlY29kZU51bWJlciIs
Ci0gICAgICAgICJET01TdHJpbmciID0+ICJTcGVjU3RyaW5nIiwKLSAgICAgICAgIkJ5dGVTdHJp
bmciID0+ICJTcGVjU3RyaW5nIiwKLSAgICAgICAgIlVTVlN0cmluZyIgPT4gIlNwZWNTdHJpbmci
LAotICAgICk7CisgICAgbXkgJElETFR5cGUgPSBHZXRJRExUeXBlKCRpbnRlcmZhY2UsICR0eXBl
KTsKKyAgICByZXR1cm4gIkRPTUpJVDo6SURMSlNBcmd1bWVudFR5cGU8JHtJRExUeXBlfT4iOwor
fQogCi0gICAgaWYgKGV4aXN0cyAkVHlwZUZpbHRlcnN7JHR5cGUtPm5hbWV9KSB7Ci0gICAgICAg
IG15ICRyZXN1bHRUeXBlID0gIkpTQzo6JFR5cGVGaWx0ZXJzeyR0eXBlLT5uYW1lfSI7Ci0gICAg
ICAgIGlmICgkdHlwZS0+aXNOdWxsYWJsZSkgewotICAgICAgICAgICAgZGllICJcImFueVwiIHR5
cGUgbXVzdCBub3QgYmVjb21lIG51bGxhYmxlLiIgaWYgJHR5cGUtPm5hbWUgZXEgImFueSI7Ci0g
ICAgICAgICAgICAkcmVzdWx0VHlwZSA9ICIoJHJlc3VsdFR5cGUgfCBKU0M6OlNwZWNPdGhlciki
OwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiAkcmVzdWx0VHlwZTsKLSAgICB9Ci0gICAgcmV0
dXJuICJTcGVjSGVhcFRvcCI7CitzdWIgR2V0QXJndW1lbnRUeXBlRmlsdGVyCit7CisgICAgbXkg
KCRpbnRlcmZhY2UsICR0eXBlKSA9IEBfOworCisgICAgbXkgJElETFR5cGUgPSBHZXRJRExUeXBl
KCRpbnRlcmZhY2UsICR0eXBlKTsKKyAgICByZXR1cm4gIkRPTUpJVDo6SURMQXJndW1lbnRUeXBl
RmlsdGVyPCR7SURMVHlwZX0+Ojp2YWx1ZSI7Cit9CisKK3N1YiBHZXRSZXN1bHRUeXBlRmlsdGVy
Cit7CisgICAgbXkgKCRpbnRlcmZhY2UsICR0eXBlKSA9IEBfOworCisgICAgbXkgJElETFR5cGUg
PSBHZXRJRExUeXBlKCRpbnRlcmZhY2UsICR0eXBlKTsKKyAgICByZXR1cm4gIkRPTUpJVDo6SURM
UmVzdWx0VHlwZUZpbHRlcjwke0lETFR5cGV9Pjo6dmFsdWUiOwogfQogCiBzdWIgR2VuZXJhdGVJ
bXBsZW1lbnRhdGlvbgpAQCAtMjYwOCw2ICsyNjAxLDE3IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVu
dGF0aW9uCiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiNpZiAke2NvbmRpdGlvbmFs
U3RyaW5nfVxuIikgaWYgJGNvbmRpdGlvbmFsU3RyaW5nOwogICAgICAgICAgICAgbXkgJGZ1bmN0
aW9uTmFtZSA9IEdldEZ1bmN0aW9uTmFtZSgkaW50ZXJmYWNlLCAkY2xhc3NOYW1lLCAkZnVuY3Rp
b24pOwogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJKU0M6OkVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgJHtmdW5jdGlvbk5hbWV9KEpTQzo6RXhlY1N0YXRlKik7XG4iKTsKKyAg
ICAgICAgICAgIGlmICgkY29kZUdlbmVyYXRvci0+RXh0ZW5kZWRBdHRyaWJ1dGVDb250YWlucygk
ZnVuY3Rpb24tPmV4dGVuZGVkQXR0cmlidXRlcy0+e0RPTUpJVH0sICJTaWduYXR1cmUiKSkgewor
ICAgICAgICAgICAgICAgICRpbXBsSW5jbHVkZXN7IkRPTUpJVElETFR5cGUuaCJ9ID0gMTsKKyAg
ICAgICAgICAgICAgICBteSAkdW5zYWZlRnVuY3Rpb25OYW1lID0gInVuc2FmZSIgLiAkY29kZUdl
bmVyYXRvci0+V0tfdWNmaXJzdCgkZnVuY3Rpb25OYW1lKTsKKyAgICAgICAgICAgICAgICBteSAk
ZnVuY3Rpb25TaWduYXR1cmUgPSAiSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMICR7
dW5zYWZlRnVuY3Rpb25OYW1lfShKU0M6OkV4ZWNTdGF0ZSosICRjbGFzc05hbWUqIjsKKyAgICAg
ICAgICAgICAgICBmb3JlYWNoIG15ICRhcmd1bWVudCAoQHskZnVuY3Rpb24tPmFyZ3VtZW50c30p
IHsKKyAgICAgICAgICAgICAgICAgICAgbXkgJHR5cGUgPSAkYXJndW1lbnQtPnR5cGU7CisgICAg
ICAgICAgICAgICAgICAgIG15ICRhcmd1bWVudFR5cGUgPSBHZXRVbnNhZmVBcmd1bWVudFR5cGUo
JGludGVyZmFjZSwgJHR5cGUpOworICAgICAgICAgICAgICAgICAgICAkZnVuY3Rpb25TaWduYXR1
cmUgLj0gIiwgJHthcmd1bWVudFR5cGV9IjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICAgICAgcHVzaChAaW1wbENvbnRlbnQsICRmdW5jdGlvblNpZ25hdHVyZSAuICIpO1xuIik7Cisg
ICAgICAgICAgICB9CiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiNlbmRpZlxuIikg
aWYgJGNvbmRpdGlvbmFsU3RyaW5nOwogICAgICAgICB9CiAKQEAgLTI2NDQsNiArMjY0OCwzNiBA
QCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwg
IlxuIik7CiAgICAgfQogCisgICAgaWYgKCRudW1GdW5jdGlvbnMgPiAwKSB7CisgICAgICAgICMg
R2VuZXJhdGUgRE9NSklUOjpTaWduYXR1cmUgdmFyaWFibGVzLgorICAgICAgICBmb3JlYWNoIG15
ICRmdW5jdGlvbiAoQGZ1bmN0aW9ucykgeworICAgICAgICAgICAgbmV4dCB1bmxlc3MgJGNvZGVH
ZW5lcmF0b3ItPkV4dGVuZGVkQXR0cmlidXRlQ29udGFpbnMoJGZ1bmN0aW9uLT5leHRlbmRlZEF0
dHJpYnV0ZXMtPntET01KSVR9LCAiU2lnbmF0dXJlIik7CisgICAgICAgICAgICAkaW1wbEluY2x1
ZGVzeyJET01KSVRJRExUeXBlRmlsdGVyLmgifSA9IDE7CisgICAgICAgICAgICAkaW1wbEluY2x1
ZGVzeyJET01KSVRDaGVja0RPTS5oIn0gPSAxOworICAgICAgICAgICAgJGltcGxJbmNsdWRlc3si
RE9NSklUQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5oIn0gPSAxOworCisgICAgICAgICAgICBteSAk
aXNPdmVybG9hZGVkID0gJGZ1bmN0aW9uLT57b3ZlcmxvYWRzfSAmJiBAeyRmdW5jdGlvbi0+e292
ZXJsb2Fkc319ID4gMTsKKyAgICAgICAgICAgIGRpZSAib3ZlcmxvYWRzIGlzIG5vdCBzdXBwb3J0
ZWQgaW4gRE9NSklUIiBpZiAkaXNPdmVybG9hZGVkOworCisgICAgICAgICAgICBteSAkaW50ZXJm
YWNlTmFtZSA9ICRpbnRlcmZhY2UtPnR5cGUtPm5hbWU7CisgICAgICAgICAgICBteSAkZnVuY3Rp
b25OYW1lID0gR2V0RnVuY3Rpb25OYW1lKCRpbnRlcmZhY2UsICRjbGFzc05hbWUsICRmdW5jdGlv
bik7CisgICAgICAgICAgICBteSAkdW5zYWZlRnVuY3Rpb25OYW1lID0gInVuc2FmZSIgLiAkY29k
ZUdlbmVyYXRvci0+V0tfdWNmaXJzdCgkZnVuY3Rpb25OYW1lKTsKKyAgICAgICAgICAgIG15ICRk
b21KSVRTaWduYXR1cmVOYW1lID0gIkRPTUpJVFNpZ25hdHVyZUZvciIgLiAkaW50ZXJmYWNlLT50
eXBlLT5uYW1lIC4gJGNvZGVHZW5lcmF0b3ItPldLX3VjZmlyc3QoJGZ1bmN0aW9uLT5uYW1lKTsK
KyAgICAgICAgICAgIG15ICRjbGFzc0luZm8gPSAiSlMiIC4gJGludGVyZmFjZS0+dHlwZS0+bmFt
ZSAuICI6OmluZm8oKSI7CisgICAgICAgICAgICBteSAkcmVzdWx0VHlwZSA9IEdldFJlc3VsdFR5
cGVGaWx0ZXIoJGludGVyZmFjZSwgJGZ1bmN0aW9uLT50eXBlKTsKKyAgICAgICAgICAgIG15ICRk
b21KSVRTaWduYXR1cmUgPSAic3RhdGljIGNvbnN0IEpTQzo6RE9NSklUOjpTaWduYXR1cmUgJHtk
b21KSVRTaWduYXR1cmVOYW1lfSgodWludHB0cl90KSR7dW5zYWZlRnVuY3Rpb25OYW1lfSwgRE9N
SklUOjpjaGVja0RPTTwkaW50ZXJmYWNlTmFtZT4sICRjbGFzc0luZm8sIEpTQzo6RE9NSklUOjpF
ZmZlY3Q6OmZvclJlYWQoRE9NSklUOjpBYnN0cmFjdEhlYXBSZXBvc2l0b3J5OjpET00pLCAke3Jl
c3VsdFR5cGV9IjsKKyAgICAgICAgICAgIGZvcmVhY2ggbXkgJGFyZ3VtZW50IChAeyRmdW5jdGlv
bi0+YXJndW1lbnRzfSkgeworICAgICAgICAgICAgICAgIG15ICR0eXBlID0gJGFyZ3VtZW50LT50
eXBlOworICAgICAgICAgICAgICAgIG15ICRhcmd1bWVudFR5cGUgPSBHZXRBcmd1bWVudFR5cGVG
aWx0ZXIoJGludGVyZmFjZSwgJHR5cGUpOworICAgICAgICAgICAgICAgICRkb21KSVRTaWduYXR1
cmUgLj0gIiwgJHthcmd1bWVudFR5cGV9IjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIG15
ICRjb25kaXRpb25hbFN0cmluZyA9ICRjb2RlR2VuZXJhdG9yLT5HZW5lcmF0ZUNvbmRpdGlvbmFs
U3RyaW5nKCRmdW5jdGlvbik7CisgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiNpZiAk
e2NvbmRpdGlvbmFsU3RyaW5nfVxuIikgaWYgJGNvbmRpdGlvbmFsU3RyaW5nOworICAgICAgICAg
ICAgcHVzaChAaW1wbENvbnRlbnQsICRkb21KSVRTaWduYXR1cmUgLiAiKTtcbiIpOworICAgICAg
ICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIjZW5kaWZcbiIpIGlmICRjb25kaXRpb25hbFN0cmlu
ZzsKKyAgICAgICAgfQorICAgIH0KKwogICAgIEdlbmVyYXRlUHJvdG90eXBlRGVjbGFyYXRpb24o
XEBpbXBsQ29udGVudCwgJGNsYXNzTmFtZSwgJGludGVyZmFjZSkgaWYgIUhlYWRlck5lZWRzUHJv
dG90eXBlRGVjbGFyYXRpb24oJGludGVyZmFjZSk7CiAKICAgICBHZW5lcmF0ZUNvbnN0cnVjdG9y
RGVjbGFyYXRpb24oXEBpbXBsQ29udGVudCwgJGNsYXNzTmFtZSwgJGludGVyZmFjZSkgaWYgTmVl
ZHNDb25zdHJ1Y3RvclByb3BlcnR5KCRpbnRlcmZhY2UpOwpAQCAtMjc0MCw3ICsyNzc0LDExIEBA
IHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgICAgICBwdXNoKEBoYXNoVmFsdWUx
LCAkZnVuY3Rpb25OYW1lKTsKIAogICAgICAgICAgICAgbXkgJGZ1bmN0aW9uTGVuZ3RoID0gR2V0
RnVuY3Rpb25MZW5ndGgoJGZ1bmN0aW9uKTsKLSAgICAgICAgICAgIHB1c2goQGhhc2hWYWx1ZTIs
ICRmdW5jdGlvbkxlbmd0aCk7CisgICAgICAgICAgICBpZiAoJGNvZGVHZW5lcmF0b3ItPkV4dGVu
ZGVkQXR0cmlidXRlQ29udGFpbnMoJGZ1bmN0aW9uLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntET01K
SVR9LCAiU2lnbmF0dXJlIikpIHsKKyAgICAgICAgICAgICAgICBwdXNoKEBoYXNoVmFsdWUyLCAi
RE9NSklURnVuY3Rpb25Gb3IiIC4gJGludGVyZmFjZS0+dHlwZS0+bmFtZSAuICRjb2RlR2VuZXJh
dG9yLT5XS191Y2ZpcnN0KCRmdW5jdGlvbi0+bmFtZSkpOworICAgICAgICAgICAgfSBlbHNlIHsK
KyAgICAgICAgICAgICAgICBwdXNoKEBoYXNoVmFsdWUyLCAkZnVuY3Rpb25MZW5ndGgpOworICAg
ICAgICAgICAgfQogCiAgICAgICAgICAgICBwdXNoKEBoYXNoU3BlY2lhbHMsIENvbXB1dGVGdW5j
dGlvblNwZWNpYWwoJGludGVyZmFjZSwgJGZ1bmN0aW9uKSk7CiAKQEAgLTMzMDcsMTMgKzMzNDUs
MTQgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KIAogICAgICAgICAgICAgaWYgKCRhdHRy
aWJ1dGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJET01KSVQifSkgewogICAgICAgICAgICAgICAg
ICRpbXBsSW5jbHVkZXN7Ijx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4ifSA9IDE7CisgICAgICAgICAg
ICAgICAgJGltcGxJbmNsdWRlc3siRE9NSklUSURMVHlwZUZpbHRlci5oIn0gPSAxOwogICAgICAg
ICAgICAgICAgIG15ICRpbnRlcmZhY2VOYW1lID0gJGludGVyZmFjZS0+dHlwZS0+bmFtZTsKICAg
ICAgICAgICAgICAgICBteSAkYXR0cmlidXRlTmFtZSA9ICRhdHRyaWJ1dGUtPm5hbWU7CiAgICAg
ICAgICAgICAgICAgbXkgJGdlbmVyYXRvck5hbWUgPSAkaW50ZXJmYWNlTmFtZSAuICRjb2RlR2Vu
ZXJhdG9yLT5XS191Y2ZpcnN0KCRhdHRyaWJ1dGUtPm5hbWUpOwogICAgICAgICAgICAgICAgIG15
ICRkb21KSVRDbGFzc05hbWUgPSAkZ2VuZXJhdG9yTmFtZSAuICJET01KSVQiOwogICAgICAgICAg
ICAgICAgIG15ICRnZXR0ZXIgPSBHZXRBdHRyaWJ1dGVHZXR0ZXJOYW1lKCRpbnRlcmZhY2UsICRn
ZW5lcmF0b3JOYW1lLCAkYXR0cmlidXRlKTsKICAgICAgICAgICAgICAgICBteSAkc2V0dGVyID0g
SXNSZWFkb25seSgkYXR0cmlidXRlKSA/ICJudWxscHRyIiA6IEdldEF0dHJpYnV0ZVNldHRlck5h
bWUoJGludGVyZmFjZSwgJGdlbmVyYXRvck5hbWUsICRhdHRyaWJ1dGUpOwotICAgICAgICAgICAg
ICAgIG15ICRyZXN1bHRUeXBlID0gR2V0UmVzdWx0VHlwZUZpbHRlcigkYXR0cmlidXRlLT50eXBl
KTsKKyAgICAgICAgICAgICAgICBteSAkcmVzdWx0VHlwZSA9IEdldFJlc3VsdFR5cGVGaWx0ZXIo
JGludGVyZmFjZSwgJGF0dHJpYnV0ZS0+dHlwZSk7CiAgICAgICAgICAgICAgICAgcHVzaChAaW1w
bENvbnRlbnQsICIkZG9tSklUQ2xhc3NOYW1lOjokZG9tSklUQ2xhc3NOYW1lKClcbiIpOwogICAg
ICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIDogSlNDOjpET01KSVQ6OkdldHRl
clNldHRlcigkZ2V0dGVyLCAkc2V0dGVyLCAke2NsYXNzTmFtZX06OmluZm8oKSwgJHJlc3VsdFR5
cGUpXG4iKTsKICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIntcbiIpOwpAQCAt
MzY4OCw2ICszNzI3LDcgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KIAogICAgICAgICAg
ICAgbXkgJGlzQ3VzdG9tID0gSGFzQ3VzdG9tTWV0aG9kKCRmdW5jdGlvbi0+ZXh0ZW5kZWRBdHRy
aWJ1dGVzKTsKICAgICAgICAgICAgIG15ICRpc092ZXJsb2FkZWQgPSAkZnVuY3Rpb24tPntvdmVy
bG9hZHN9ICYmIEB7JGZ1bmN0aW9uLT57b3ZlcmxvYWRzfX0gPiAxOworICAgICAgICAgICAgbXkg
JGlzRE9NSklUID0gJGNvZGVHZW5lcmF0b3ItPkV4dGVuZGVkQXR0cmlidXRlQ29udGFpbnMoJGZ1
bmN0aW9uLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntET01KSVR9LCAiU2lnbmF0dXJlIik7CiAKICAg
ICAgICAgICAgIG15ICRtYXlUaHJvd0xlZ2FjeUV4Y2VwdGlvbiA9ICRmdW5jdGlvbi0+ZXh0ZW5k
ZWRBdHRyaWJ1dGVzLT57TWF5VGhyb3dMZWdhY3lFeGNlcHRpb259OwogCkBAIC0zODI2LDYgKzM4
NjYsNzkgQEAgRU5ECiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIHB1c2goQGltcGxDb250
ZW50LCAifVxuXG4iKTsKKworICAgICAgICAgICAgaWYgKCRpc0RPTUpJVCkgeworICAgICAgICAg
ICAgICAgICRpbXBsSW5jbHVkZXN7IjxpbnRlcnByZXRlci9GcmFtZVRyYWNlcnMuaD4ifSA9IDE7
CisgICAgICAgICAgICAgICAgbXkgJHVuc2FmZUZ1bmN0aW9uTmFtZSA9ICJ1bnNhZmUiIC4gJGNv
ZGVHZW5lcmF0b3ItPldLX3VjZmlyc3QoJGZ1bmN0aW9uTmFtZSk7CisgICAgICAgICAgICAgICAg
cHVzaChAaW1wbENvbnRlbnQsICJKU0M6OkVuY29kZWRKU1ZhbHVlICR7dW5zYWZlRnVuY3Rpb25O
YW1lfShKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsICRjbGFzc05hbWUqIGNhc3RlZFRoaXMiKTsKKyAg
ICAgICAgICAgICAgICBmb3JlYWNoIG15ICRhcmd1bWVudCAoQHskZnVuY3Rpb24tPmFyZ3VtZW50
c30pIHsKKyAgICAgICAgICAgICAgICAgICAgbXkgJHR5cGUgPSAkYXJndW1lbnQtPnR5cGU7Cisg
ICAgICAgICAgICAgICAgICAgIG15ICRhcmd1bWVudFR5cGUgPSBHZXRVbnNhZmVBcmd1bWVudFR5
cGUoJGludGVyZmFjZSwgJHR5cGUpOworICAgICAgICAgICAgICAgICAgICBteSAkbmFtZSA9ICRh
cmd1bWVudC0+bmFtZTsKKyAgICAgICAgICAgICAgICAgICAgbXkgJGVuY29kZWROYW1lID0gImVu
Y29kZWQiIC4gJGNvZGVHZW5lcmF0b3ItPldLX3VjZmlyc3QoJG5hbWUpOworICAgICAgICAgICAg
ICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiwgJHthcmd1bWVudFR5cGV9ICR7ZW5jb2RlZE5h
bWV9Iik7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250
ZW50LCAiKVxuIik7CisgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ7XG4iKTsK
KyAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBVTlVTRURfUEFSQU0oc3Rh
dGUpO1xuIik7CisgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgVk0mIHZt
ID0gc3RhdGUtPnZtKCk7XG4iKTsKKyAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwg
IiAgICBKU0M6Ok5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIoJnZtLCBzdGF0ZSk7XG4iKTsK
KyAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBhdXRvIHRocm93U2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTtcbiIpOworICAgICAgICAgICAgICAgIHB1c2goQGlt
cGxDb250ZW50LCAiICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTtcbiIpOworICAgICAgICAg
ICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53
cmFwcGVkKCk7XG4iKTsKKyAgICAgICAgICAgICAgICBteSBAYXJndW1lbnRzOworICAgICAgICAg
ICAgICAgIG15ICRpbXBsRnVuY3Rpb25OYW1lOworICAgICAgICAgICAgICAgIG15ICRpbXBsZW1l
bnRlZEJ5ID0gJGZ1bmN0aW9uLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntJbXBsZW1lbnRlZEJ5fTsK
KworICAgICAgICAgICAgICAgIGlmICgkaW1wbGVtZW50ZWRCeSkgeworICAgICAgICAgICAgICAg
ICAgICBBZGRUb0ltcGxJbmNsdWRlcygiJHtpbXBsZW1lbnRlZEJ5fS5oIiwgJGZ1bmN0aW9uLT5l
eHRlbmRlZEF0dHJpYnV0ZXMtPntDb25kaXRpb25hbH0pOworICAgICAgICAgICAgICAgICAgICB1
bnNoaWZ0KEBhcmd1bWVudHMsICJpbXBsIikgaWYgISRmdW5jdGlvbi0+aXNTdGF0aWM7CisgICAg
ICAgICAgICAgICAgICAgICRpbXBsRnVuY3Rpb25OYW1lID0gIldlYkNvcmU6OiR7aW1wbGVtZW50
ZWRCeX06OiR7ZnVuY3Rpb25JbXBsZW1lbnRhdGlvbk5hbWV9IjsKKyAgICAgICAgICAgICAgICB9
IGVsc2lmICgkZnVuY3Rpb24tPmlzU3RhdGljKSB7CisgICAgICAgICAgICAgICAgICAgICRpbXBs
RnVuY3Rpb25OYW1lID0gIiR7aW50ZXJmYWNlTmFtZX06OiR7ZnVuY3Rpb25JbXBsZW1lbnRhdGlv
bk5hbWV9IjsKKyAgICAgICAgICAgICAgICB9IGVsc2lmICgkc3ZnUHJvcGVydHlPckxpc3RQcm9w
ZXJ0eVR5cGUgYW5kICEkc3ZnTGlzdFByb3BlcnR5VHlwZSkgeworICAgICAgICAgICAgICAgICAg
ICAkaW1wbEZ1bmN0aW9uTmFtZSA9ICJwb2RJbXBsLiR7ZnVuY3Rpb25JbXBsZW1lbnRhdGlvbk5h
bWV9IjsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAkaW1w
bEZ1bmN0aW9uTmFtZSA9ICJpbXBsLiR7ZnVuY3Rpb25JbXBsZW1lbnRhdGlvbk5hbWV9IjsKKyAg
ICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBteSAkYXJndW1lbnRJbmRleCA9IDA7
CisgICAgICAgICAgICAgICAgZm9yZWFjaCBteSAkYXJndW1lbnQgKEB7JGZ1bmN0aW9uLT5hcmd1
bWVudHN9KSB7CisgICAgICAgICAgICAgICAgICAgIG15ICR2YWx1ZSA9ICIiOworICAgICAgICAg
ICAgICAgICAgICBteSAkdHlwZSA9ICRhcmd1bWVudC0+dHlwZTsKKyAgICAgICAgICAgICAgICAg
ICAgbXkgJG5hbWUgPSAkYXJndW1lbnQtPm5hbWU7CisgICAgICAgICAgICAgICAgICAgIG15ICRl
bmNvZGVkTmFtZSA9ICJlbmNvZGVkIiAuICRjb2RlR2VuZXJhdG9yLT5XS191Y2ZpcnN0KCRuYW1l
KTsKKyAgICAgICAgICAgICAgICAgICAgbXkgJG5hdGl2ZVR5cGUgPSBHZXROYXRpdmVUeXBlKCRp
bnRlcmZhY2UsICRhcmd1bWVudC0+dHlwZSk7CisgICAgICAgICAgICAgICAgICAgIG15ICRzaG91
bGRQYXNzQnlSZWZlcmVuY2UgPSBTaG91bGRQYXNzV3JhcHBlckJ5UmVmZXJlbmNlKCRhcmd1bWVu
dCwgJGludGVyZmFjZSk7CisKKyAgICAgICAgICAgICAgICAgICAgaWYgKCEkc2hvdWxkUGFzc0J5
UmVmZXJlbmNlICYmICgkY29kZUdlbmVyYXRvci0+SXNXcmFwcGVyVHlwZSgkdHlwZSkgfHwgJGNv
ZGVHZW5lcmF0b3ItPklzVHlwZWRBcnJheVR5cGUoJHR5cGUpKSkgeworICAgICAgICAgICAgICAg
ICAgICAgICAgJGltcGxJbmNsdWRlc3siPHJ1bnRpbWUvRXJyb3IuaD4ifSA9IDE7CisgICAgICAg
ICAgICAgICAgICAgICAgICBteSAoJG5hdGl2ZVZhbHVlLCAkbWF5VGhyb3dFeGNlcHRpb24pID0g
VW5zYWZlVG9OYXRpdmUoJGludGVyZmFjZSwgJGFyZ3VtZW50LCAkZW5jb2RlZE5hbWUsICRmdW5j
dGlvbi0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Q29uZGl0aW9uYWx9KTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICRuYXRpdmVUeXBlICRuYW1lID0gbnVs
bHB0cjtcbiIpOworICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIg
ICAgJG5hbWUgPSAkbmF0aXZlVmFsdWU7XG4iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHB1
c2goQGltcGxDb250ZW50LCAiICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5j
b2RlZEpTVmFsdWUoKSk7XG4iKSBpZiAkbWF5VGhyb3dFeGNlcHRpb247CisgICAgICAgICAgICAg
ICAgICAgICAgICAkdmFsdWUgPSAiV1RGTW92ZSgkbmFtZSkiOworICAgICAgICAgICAgICAgICAg
ICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgbXkgKCRuYXRpdmVWYWx1ZSwgJG1h
eVRocm93RXhjZXB0aW9uKSA9IFVuc2FmZVRvTmF0aXZlKCRpbnRlcmZhY2UsICRhcmd1bWVudCwg
JGVuY29kZWROYW1lLCAkZnVuY3Rpb24tPmV4dGVuZGVkQXR0cmlidXRlcy0+e0NvbmRpdGlvbmFs
fSk7CisgICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBhdXRv
ICRuYW1lID0gJHtuYXRpdmVWYWx1ZX07XG4iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICR2
YWx1ZSA9ICJXVEZNb3ZlKCRuYW1lKSI7CisgICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBp
bXBsQ29udGVudCwgIiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRK
U1ZhbHVlKCkpO1xuIikgaWYgJG1heVRocm93RXhjZXB0aW9uOworICAgICAgICAgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgICAgICAgICAgaWYgKCRzaG91bGRQYXNzQnlSZWZlcmVuY2UpIHsK
KyAgICAgICAgICAgICAgICAgICAgICAgICR2YWx1ZSA9ICIqJG5hbWUiOworICAgICAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIHB1c2goQGFyZ3VtZW50cywgJHZhbHVlKTsK
KyAgICAgICAgICAgICAgICAgICAgJGFyZ3VtZW50SW5kZXgrKzsKKyAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICAgICAgbXkgJGZ1bmN0aW9uU3RyaW5nID0gIiRpbXBsRnVuY3Rpb25OYW1l
KCIgLiBqb2luKCIsICIsIEBhcmd1bWVudHMpIC4gIikiOworICAgICAgICAgICAgICAgICRmdW5j
dGlvblN0cmluZyA9ICJwcm9wYWdhdGVFeGNlcHRpb24oKnN0YXRlLCB0aHJvd1Njb3BlLCAkZnVu
Y3Rpb25TdHJpbmcpIiBpZiBOZWVkc0V4cGxpY2l0UHJvcGFnYXRlRXhjZXB0aW9uQ2FsbCgkZnVu
Y3Rpb24pOworICAgICAgICAgICAgICAgIG15ICR0aGlzT2JqZWN0ID0gImNhc3RlZFRoaXMiOwor
ICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIEpTVmFsdWUgcmVzdWx0ID0g
IiAuIE5hdGl2ZVRvSlNWYWx1ZVVzaW5nUG9pbnRlcnMoJGZ1bmN0aW9uLCAxLCAkaW50ZXJmYWNl
LCAkZnVuY3Rpb25TdHJpbmcsICR0aGlzT2JqZWN0KSAuICI7XG4iKTsKKyAgICAgICAgICAgICAg
ICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7
XG4iKTsKKyAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIn1cblxuIik7CisgICAg
ICAgICAgICB9CisKICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiI2VuZGlmXG5cbiIp
IGlmICRjb25kaXRpb25hbDsKIAogICAgICAgICAgICAgIyBHZW5lcmF0ZSBhIGZ1bmN0aW9uIGRp
c3BhdGNoaW5nIGNhbGwgdG8gdGhlIHJlc3Qgb2YgdGhlIG92ZXJsb2Fkcy4KQEAgLTUzMTksNiAr
NTQzMiw0MyBAQCBzdWIgSlNWYWx1ZVRvTmF0aXZlCiAgICAgcmV0dXJuICgiSlMiIC4gJHR5cGUt
Pm5hbWUgLiAiOjp0b1dyYXBwZWQoJHZhbHVlKSIsIDApOwogfQogCitzdWIgVW5zYWZlVG9OYXRp
dmUKK3sKKyAgICBteSAoJGludGVyZmFjZSwgJGNvbnRleHQsICR2YWx1ZSwgJGNvbmRpdGlvbmFs
LCAkc3RhdGVQb2ludGVyLCAkc3RhdGVSZWZlcmVuY2UsICR0aGlzT2JqZWN0UmVmZXJlbmNlKSA9
IEBfOworCisgICAgYXNzZXJ0KCJJbnZhbGlkIGNvbnRleHQgdHlwZSIpIGlmICFJc1ZhbGlkQ29u
dGV4dEZvckpTVmFsdWVUb05hdGl2ZSgkY29udGV4dCk7CisKKyAgICBteSAkdHlwZSA9ICRjb250
ZXh0LT50eXBlOworCisgICAgIyBGSVhNRTogUmVtb3ZlIHRoZXNlIDMgdmFyaWFibGVzIHdoZW4g
YWxsIEpTVmFsdWVUb05hdGl2ZSB1c2UgcmVmZXJlbmNlcy4KKyAgICAkc3RhdGVQb2ludGVyID0g
InN0YXRlIiB1bmxlc3MgJHN0YXRlUG9pbnRlcjsKKyAgICAkc3RhdGVSZWZlcmVuY2UgPSAiKnN0
YXRlIiB1bmxlc3MgJHN0YXRlUmVmZXJlbmNlOworICAgICR0aGlzT2JqZWN0UmVmZXJlbmNlID0g
IipjYXN0ZWRUaGlzIiB1bmxlc3MgJHRoaXNPYmplY3RSZWZlcmVuY2U7CisKKyAgICBpZiAoSlNW
YWx1ZVRvTmF0aXZlSXNIYW5kbGVkQnlET01Db252ZXJ0KCR0eXBlLCAkY29udGV4dCkpIHsKKyAg
ICAgICAgQWRkVG9JbXBsSW5jbHVkZXMoIkRPTUpJVElETENvbnZlcnQuaCIpOworICAgICAgICBB
ZGRUb0ltcGxJbmNsdWRlc0ZvcklETFR5cGUoJHR5cGUsICRjb25kaXRpb25hbCk7CisKKyAgICAg
ICAgbXkgJElETFR5cGUgPSBHZXRJRExUeXBlKCRpbnRlcmZhY2UsICR0eXBlKTsKKworICAgICAg
ICBteSBAY29udmVyc2lvbkFyZ3VtZW50cyA9ICgpOworICAgICAgICBwdXNoKEBjb252ZXJzaW9u
QXJndW1lbnRzLCAiJHN0YXRlUmVmZXJlbmNlIik7CisgICAgICAgIHB1c2goQGNvbnZlcnNpb25B
cmd1bWVudHMsICIkdmFsdWUiKTsKKworICAgICAgICBteSBAY29udmVyc2lvblN0YXRpY0FyZ3Vt
ZW50cyA9ICgpOworICAgICAgICBwdXNoKEBjb252ZXJzaW9uU3RhdGljQXJndW1lbnRzLCBHZXRJ
bnRlZ2VyQ29udmVyc2lvbkNvbmZpZ3VyYXRpb24oJGNvbnRleHQpKSBpZiAkY29kZUdlbmVyYXRv
ci0+SXNJbnRlZ2VyVHlwZSgkdHlwZSk7CisgICAgICAgIHB1c2goQGNvbnZlcnNpb25TdGF0aWNB
cmd1bWVudHMsIEdldFN0cmluZ0NvbnZlcnNpb25Db25maWd1cmF0aW9uKCRjb250ZXh0KSkgaWYg
JGNvZGVHZW5lcmF0b3ItPklzU3RyaW5nVHlwZSgkdHlwZSk7CisKKyAgICAgICAgaWYgKHNjYWxh
cihAY29udmVyc2lvblN0YXRpY0FyZ3VtZW50cykgPiAwKSB7CisgICAgICAgICAgICByZXR1cm4g
KCJET01KSVQ6OkRpcmVjdENvbnZlcnRlcjwkSURMVHlwZT46OmRpcmVjdENvbnZlcnQ8IiAuIGpv
aW4oIiwgIiwgQGNvbnZlcnNpb25TdGF0aWNBcmd1bWVudHMpIC4gIj4oIiAuIGpvaW4oIiwgIiwg
QGNvbnZlcnNpb25Bcmd1bWVudHMpIC4gIikiLCAxKTsKKyAgICAgICAgfQorICAgICAgICByZXR1
cm4gKCJET01KSVQ6OkRpcmVjdENvbnZlcnRlcjwkSURMVHlwZT46OmRpcmVjdENvbnZlcnQoIiAu
IGpvaW4oIiwgIiwgQGNvbnZlcnNpb25Bcmd1bWVudHMpIC4gIikiLCAxKTsKKyAgICB9CisKKyAg
ICAjIEZJWE1FOiBFeHRlbmQgbW9yZS4KKyAgICBkaWUgIk9ubHkgRE9NQ29udmVydCBzdXBwb3J0
ZWQgb25lIGlzIG5vdyBzdXBwb3J0ZWQgaW4gRE9NSklUIHVuc2FmZS4iOworfQorCiBzdWIgTmF0
aXZlVG9KU1ZhbHVlSXNIYW5kbGVkQnlET01Db252ZXJ0CiB7CiAgICAgbXkgKCR0eXBlKSA9IEBf
OwpAQCAtNTUyNSw3ICs1Njc1LDEwIEBAIHN1YiBHZW5lcmF0ZUhhc2hUYWJsZVZhbHVlQXJyYXkK
ICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiI2lmICR7Y29uZGl0aW9uYWxTdHJpbmd9
XG4iKTsKICAgICAgICAgfQogCi0gICAgICAgIGlmICgiQCRzcGVjaWFsc1skaV0iID1+IG0vRnVu
Y3Rpb24vKSB7CisgICAgICAgIGlmICgiQCRzcGVjaWFsc1skaV0iID1+IG0vRE9NSklURnVuY3Rp
b24vKSB7CisgICAgICAgICAgICAkZmlyc3RUYXJnZXRUeXBlID0gInN0YXRpY19jYXN0PE5hdGl2
ZUZ1bmN0aW9uPiI7CisgICAgICAgICAgICAkc2Vjb25kVGFyZ2V0VHlwZSA9ICJzdGF0aWNfY2Fz
dDxjb25zdCBKU0M6OkRPTUpJVDo6U2lnbmF0dXJlKj4iOworICAgICAgICB9IGVsc2lmICgiQCRz
cGVjaWFsc1skaV0iID1+IG0vRnVuY3Rpb24vKSB7CiAgICAgICAgICAgICAkZmlyc3RUYXJnZXRU
eXBlID0gInN0YXRpY19jYXN0PE5hdGl2ZUZ1bmN0aW9uPiI7CiAgICAgICAgIH0gZWxzaWYgKCJA
JHNwZWNpYWxzWyRpXSIgPX4gbS9CdWlsdGluLykgewogICAgICAgICAgICAgJGZpcnN0VGFyZ2V0
VHlwZSA9ICJzdGF0aWNfY2FzdDxCdWlsdGluR2VuZXJhdG9yPiI7CkBAIC02MTIzLDYgKzYyNzYs
OSBAQCBzdWIgQ29tcHV0ZUZ1bmN0aW9uU3BlY2lhbAogICAgIGVsc2UgewogICAgICAgICBwdXNo
KEBzcGVjaWFscywgIkpTQzo6RnVuY3Rpb24iKTsKICAgICB9CisgICAgaWYgKCRmdW5jdGlvbi0+
ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkRPTUpJVCJ9KSB7CisgICAgICAgIHB1c2goQHNwZWNpYWxz
LCAiRE9NSklURnVuY3Rpb24iKSBpZiAkY29kZUdlbmVyYXRvci0+RXh0ZW5kZWRBdHRyaWJ1dGVD
b250YWlucygkZnVuY3Rpb24tPmV4dGVuZGVkQXR0cmlidXRlcy0+e0RPTUpJVH0sICJTaWduYXR1
cmUiKTsKKyAgICB9CiAgICAgcmV0dXJuIChAc3BlY2lhbHMgPiAwKSA/IGpvaW4oIiB8ICIsIEBz
cGVjaWFscykgOiAiMCI7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvSURMQXR0cmlidXRlcy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL0lETEF0dHJpYnV0ZXMudHh0CmluZGV4IGEyZTc1NDE1OTFjZTNmNTc2ZTdhN2QyZDZkMmZj
NjJkZGRmYTA0MWMuLjE0NmMyYmNjOGUwZjM3NmQ1ZGNjNTQzNTM5MDgzMzU5YzcyZGJlNjMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvSURMQXR0cmlidXRlcy50
eHQKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9JRExBdHRyaWJ1dGVzLnR4
dApAQCAtNTIsNyArNTIsNyBAQCBDdXN0b21QdXRGdW5jdGlvbgogQ3VzdG9tU2V0UHJvdG90eXBl
CiBDdXN0b21TZXR0ZXIKIEN1c3RvbVRvSlNPYmplY3QKLURPTUpJVAorRE9NSklUPXxTaWduYXR1
cmUKIERvTm90Q2hlY2tDb25zdGFudHMKIERvTm90Q2hlY2tTZWN1cml0eQogRG9Ob3RDaGVja1Nl
Y3VyaXR5T25HZXR0ZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RET01KSVQuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdERPTUpJVC5jcHAKaW5kZXggMjQ4OGRmMjZiZGI1MmI1MGNkNjdk
NjBjY2E1NjViMjY1MzY3ZTRjZi4uNWFmYWQzZmZjZjFlZjQzOWVmYzgwZWJiZWY0MDc0ZGVhNGI3
M2EyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdERPTUpJVC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdERPTUpJVC5jcHAKQEAgLTIxLDEwICsyMSwxOCBAQAogI2luY2x1ZGUgImNv
bmZpZy5oIgogI2luY2x1ZGUgIkpTVGVzdERPTUpJVC5oIgogCisjaW5jbHVkZSAiRE9NSklUQWJz
dHJhY3RIZWFwUmVwb3NpdG9yeS5oIgorI2luY2x1ZGUgIkRPTUpJVENoZWNrRE9NLmgiCisjaW5j
bHVkZSAiRE9NSklUSURMQ29udmVydC5oIgorI2luY2x1ZGUgIkRPTUpJVElETFR5cGUuaCIKKyNp
bmNsdWRlICJET01KSVRJRExUeXBlRmlsdGVyLmgiCisjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5o
IgogI2luY2x1ZGUgIkpTQnl0ZVN0cmluZy5oIgogI2luY2x1ZGUgIkpTRE9NQmluZGluZy5oIgog
I2luY2x1ZGUgIkpTRE9NQ29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJKU0RPTUNvbnZlcnQuaCIK
KyNpbmNsdWRlIDxpbnRlcnByZXRlci9GcmFtZVRyYWNlcnMuaD4KKyNpbmNsdWRlIDxydW50aW1l
L0Vycm9yLmg+CiAjaW5jbHVkZSA8d3RmL0dldFB0ci5oPgogI2luY2x1ZGUgPHd0Zi9OZXZlckRl
c3Ryb3llZC5oPgogCkBAIC0zMiw2ICs0MCwxMSBAQCB1c2luZyBuYW1lc3BhY2UgSlNDOwogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKKy8vIEZ1bmN0aW9ucworCitKU0M6OkVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwganNUZXN0RE9NSklUUHJvdG90eXBlRnVuY3Rpb25HZXRBdHRyaWJ1dGUo
SlNDOjpFeGVjU3RhdGUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCB1bnNh
ZmVKc1Rlc3RET01KSVRQcm90b3R5cGVGdW5jdGlvbkdldEF0dHJpYnV0ZShKU0M6OkV4ZWNTdGF0
ZSosIEpTVGVzdERPTUpJVCosIERPTUpJVDo6SURMSlNBcmd1bWVudFR5cGU8SURMRE9NU3RyaW5n
Pik7CisKIC8vIEF0dHJpYnV0ZXMKIAogSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RET01KSVRB
bnlBdHRyKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0
eU5hbWUpOwpAQCAtNzIsNiArODUsNyBAQCBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdERPTUpJ
VE5vZGVOdWxsYWJsZUF0dHIoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKUwogSlNDOjpF
bmNvZGVkSlNWYWx1ZSBqc1Rlc3RET01KSVRDb25zdHJ1Y3RvcihKU0M6OkV4ZWNTdGF0ZSosIEpT
Qzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKIGJvb2wgc2V0SlNUZXN0RE9N
SklUQ29uc3RydWN0b3IoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6
OkVuY29kZWRKU1ZhbHVlKTsKIAorc3RhdGljIGNvbnN0IEpTQzo6RE9NSklUOjpTaWduYXR1cmUg
RE9NSklUU2lnbmF0dXJlRm9yVGVzdERPTUpJVEdldEF0dHJpYnV0ZSgodWludHB0cl90KXVuc2Fm
ZUpzVGVzdERPTUpJVFByb3RvdHlwZUZ1bmN0aW9uR2V0QXR0cmlidXRlLCBET01KSVQ6OmNoZWNr
RE9NPFRlc3RET01KSVQ+LCBKU1Rlc3RET01KSVQ6OmluZm8oKSwgSlNDOjpET01KSVQ6OkVmZmVj
dDo6Zm9yUmVhZChET01KSVQ6OkFic3RyYWN0SGVhcFJlcG9zaXRvcnk6OkRPTSksIERPTUpJVDo6
SURMUmVzdWx0VHlwZUZpbHRlcjxJRExOdWxsYWJsZTxJRExET01TdHJpbmc+Pjo6dmFsdWUsIERP
TUpJVDo6SURMQXJndW1lbnRUeXBlRmlsdGVyPElETERPTVN0cmluZz46OnZhbHVlKTsKIGNsYXNz
IEpTVGVzdERPTUpJVFByb3RvdHlwZSA6IHB1YmxpYyBKU0M6OkpTTm9uRmluYWxPYmplY3Qgewog
cHVibGljOgogICAgIHVzaW5nIEJhc2UgPSBKU0M6OkpTTm9uRmluYWxPYmplY3Q7CkBAIC0xNTMs
NiArMTY3LDcgQEAgc3RhdGljIGNvbnN0IEhhc2hUYWJsZVZhbHVlIEpTVGVzdERPTUpJVFByb3Rv
dHlwZVRhYmxlVmFsdWVzW10gPQogICAgIHsgImJ5dGVTdHJpbmdOdWxsYWJsZUF0dHIiLCBSZWFk
T25seSB8IEN1c3RvbUFjY2Vzc29yIHwgRE9NSklUQXR0cmlidXRlLCBOb0ludHJpbnNpYywgeyAo
aW50cHRyX3Qpc3RhdGljX2Nhc3Q8RE9NSklUR2V0dGVyU2V0dGVyR2VuZXJhdG9yPihkb21KSVRH
ZXR0ZXJTZXR0ZXJGb3JUZXN0RE9NSklUQnl0ZVN0cmluZ051bGxhYmxlQXR0ciksIChpbnRwdHJf
dCkgKDApIH0gfSwKICAgICB7ICJ1c3ZTdHJpbmdOdWxsYWJsZUF0dHIiLCBSZWFkT25seSB8IEN1
c3RvbUFjY2Vzc29yIHwgRE9NSklUQXR0cmlidXRlLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qp
c3RhdGljX2Nhc3Q8RE9NSklUR2V0dGVyU2V0dGVyR2VuZXJhdG9yPihkb21KSVRHZXR0ZXJTZXR0
ZXJGb3JUZXN0RE9NSklUVXN2U3RyaW5nTnVsbGFibGVBdHRyKSwgKGludHB0cl90KSAoMCkgfSB9
LAogICAgIHsgIm5vZGVOdWxsYWJsZUF0dHIiLCBSZWFkT25seSB8IEN1c3RvbUFjY2Vzc29yIHwg
RE9NSklUQXR0cmlidXRlLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8RE9N
SklUR2V0dGVyU2V0dGVyR2VuZXJhdG9yPihkb21KSVRHZXR0ZXJTZXR0ZXJGb3JUZXN0RE9NSklU
Tm9kZU51bGxhYmxlQXR0ciksIChpbnRwdHJfdCkgKDApIH0gfSwKKyAgICB7ICJnZXRBdHRyaWJ1
dGUiLCBKU0M6OkZ1bmN0aW9uIHwgRE9NSklURnVuY3Rpb24sIE5vSW50cmluc2ljLCB7IChpbnRw
dHJfdClzdGF0aWNfY2FzdDxOYXRpdmVGdW5jdGlvbj4oanNUZXN0RE9NSklUUHJvdG90eXBlRnVu
Y3Rpb25HZXRBdHRyaWJ1dGUpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PGNvbnN0IEpTQzo6RE9N
SklUOjpTaWduYXR1cmUqPigmRE9NSklUU2lnbmF0dXJlRm9yVGVzdERPTUpJVEdldEF0dHJpYnV0
ZSkgfSB9LAogfTsKIAogY29uc3QgQ2xhc3NJbmZvIEpTVGVzdERPTUpJVFByb3RvdHlwZTo6c19p
bmZvID0geyAiVGVzdERPTUpJVFByb3RvdHlwZSIsICZCYXNlOjpzX2luZm8sIDAsIENSRUFURV9N
RVRIT0RfVEFCTEUoSlNUZXN0RE9NSklUUHJvdG90eXBlKSB9OwpAQCAtMTg1LDYgKzIwMCwxMSBA
QCB0ZW1wbGF0ZTw+IGlubGluZSBKU1Rlc3RET01KSVQqIEJpbmRpbmdDYWxsZXI8SlNUZXN0RE9N
SklUPjo6Y2FzdEZvckF0dHJpYnV0ZShFeAogICAgIHJldHVybiBqc0R5bmFtaWNEb3duY2FzdDxK
U1Rlc3RET01KSVQqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiB9CiAKK3RlbXBsYXRl
PD4gaW5saW5lIEpTVGVzdERPTUpJVCogQmluZGluZ0NhbGxlcjxKU1Rlc3RET01KSVQ+OjpjYXN0
Rm9yT3BlcmF0aW9uKEV4ZWNTdGF0ZSYgc3RhdGUpCit7CisgICAgcmV0dXJuIGpzRHluYW1pY0Rv
d25jYXN0PEpTVGVzdERPTUpJVCo+KHN0YXRlLnRoaXNWYWx1ZSgpKTsKK30KKwogc3RhdGljIGlu
bGluZSBKU1ZhbHVlIGpzVGVzdERPTUpJVEFueUF0dHJHZXR0ZXIoRXhlY1N0YXRlJiwgSlNUZXN0
RE9NSklUJiwgVGhyb3dTY29wZSYgdGhyb3dTY29wZSk7CiAKIEVuY29kZWRKU1ZhbHVlIGpzVGVz
dERPTUpJVEFueUF0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVl
LCBQcm9wZXJ0eU5hbWUpCkBAIC0yMDIsNyArMjIyLDcgQEAgc3RhdGljIGlubGluZSBKU1ZhbHVl
IGpzVGVzdERPTUpJVEFueUF0dHJHZXR0ZXIoRXhlY1N0YXRlJiBzdGF0ZSwgSlNUZXN0RE9NSklU
JgogfQogCiBUZXN0RE9NSklUQW55QXR0ckRPTUpJVDo6VGVzdERPTUpJVEFueUF0dHJET01KSVQo
KQotICAgIDogSlNDOjpET01KSVQ6OkdldHRlclNldHRlcihqc1Rlc3RET01KSVRBbnlBdHRyLCBu
dWxscHRyLCBKU1Rlc3RET01KSVQ6OmluZm8oKSwgSlNDOjpTcGVjSGVhcFRvcCkKKyAgICA6IEpT
Qzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIoanNUZXN0RE9NSklUQW55QXR0ciwgbnVsbHB0ciwgSlNU
ZXN0RE9NSklUOjppbmZvKCksIERPTUpJVDo6SURMUmVzdWx0VHlwZUZpbHRlcjxJRExBbnk+Ojp2
YWx1ZSkKIHsKIH0KIApAQCAtMjI5LDcgKzI0OSw3IEBAIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBq
c1Rlc3RET01KSVRCb29sZWFuQXR0ckdldHRlcihFeGVjU3RhdGUmIHN0YXRlLCBKU1Rlc3RET01K
CiB9CiAKIFRlc3RET01KSVRCb29sZWFuQXR0ckRPTUpJVDo6VGVzdERPTUpJVEJvb2xlYW5BdHRy
RE9NSklUKCkKLSAgICA6IEpTQzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIoanNUZXN0RE9NSklUQm9v
bGVhbkF0dHIsIG51bGxwdHIsIEpTVGVzdERPTUpJVDo6aW5mbygpLCBKU0M6OlNwZWNCb29sZWFu
KQorICAgIDogSlNDOjpET01KSVQ6OkdldHRlclNldHRlcihqc1Rlc3RET01KSVRCb29sZWFuQXR0
ciwgbnVsbHB0ciwgSlNUZXN0RE9NSklUOjppbmZvKCksIERPTUpJVDo6SURMUmVzdWx0VHlwZUZp
bHRlcjxJRExCb29sZWFuPjo6dmFsdWUpCiB7CiB9CiAKQEAgLTI1Niw3ICsyNzYsNyBAQCBzdGF0
aWMgaW5saW5lIEpTVmFsdWUganNUZXN0RE9NSklUQnl0ZUF0dHJHZXR0ZXIoRXhlY1N0YXRlJiBz
dGF0ZSwgSlNUZXN0RE9NSklUJgogfQogCiBUZXN0RE9NSklUQnl0ZUF0dHJET01KSVQ6OlRlc3RE
T01KSVRCeXRlQXR0ckRPTUpJVCgpCi0gICAgOiBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVyKGpz
VGVzdERPTUpJVEJ5dGVBdHRyLCBudWxscHRyLCBKU1Rlc3RET01KSVQ6OmluZm8oKSwgSlNDOjpT
cGVjSW50MzJPbmx5KQorICAgIDogSlNDOjpET01KSVQ6OkdldHRlclNldHRlcihqc1Rlc3RET01K
SVRCeXRlQXR0ciwgbnVsbHB0ciwgSlNUZXN0RE9NSklUOjppbmZvKCksIERPTUpJVDo6SURMUmVz
dWx0VHlwZUZpbHRlcjxJRExCeXRlPjo6dmFsdWUpCiB7CiB9CiAKQEAgLTI4Myw3ICszMDMsNyBA
QCBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0RE9NSklUT2N0ZXRBdHRyR2V0dGVyKEV4ZWNT
dGF0ZSYgc3RhdGUsIEpTVGVzdERPTUpJVAogfQogCiBUZXN0RE9NSklUT2N0ZXRBdHRyRE9NSklU
OjpUZXN0RE9NSklUT2N0ZXRBdHRyRE9NSklUKCkKLSAgICA6IEpTQzo6RE9NSklUOjpHZXR0ZXJT
ZXR0ZXIoanNUZXN0RE9NSklUT2N0ZXRBdHRyLCBudWxscHRyLCBKU1Rlc3RET01KSVQ6OmluZm8o
KSwgSlNDOjpTcGVjSW50MzJPbmx5KQorICAgIDogSlNDOjpET01KSVQ6OkdldHRlclNldHRlcihq
c1Rlc3RET01KSVRPY3RldEF0dHIsIG51bGxwdHIsIEpTVGVzdERPTUpJVDo6aW5mbygpLCBET01K
SVQ6OklETFJlc3VsdFR5cGVGaWx0ZXI8SURMT2N0ZXQ+Ojp2YWx1ZSkKIHsKIH0KIApAQCAtMzEw
LDcgKzMzMCw3IEBAIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RET01KSVRTaG9ydEF0dHJH
ZXR0ZXIoRXhlY1N0YXRlJiBzdGF0ZSwgSlNUZXN0RE9NSklUCiB9CiAKIFRlc3RET01KSVRTaG9y
dEF0dHJET01KSVQ6OlRlc3RET01KSVRTaG9ydEF0dHJET01KSVQoKQotICAgIDogSlNDOjpET01K
SVQ6OkdldHRlclNldHRlcihqc1Rlc3RET01KSVRTaG9ydEF0dHIsIG51bGxwdHIsIEpTVGVzdERP
TUpJVDo6aW5mbygpLCBKU0M6OlNwZWNJbnQzMk9ubHkpCisgICAgOiBKU0M6OkRPTUpJVDo6R2V0
dGVyU2V0dGVyKGpzVGVzdERPTUpJVFNob3J0QXR0ciwgbnVsbHB0ciwgSlNUZXN0RE9NSklUOjpp
bmZvKCksIERPTUpJVDo6SURMUmVzdWx0VHlwZUZpbHRlcjxJRExTaG9ydD46OnZhbHVlKQogewog
fQogCkBAIC0zMzcsNyArMzU3LDcgQEAgc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdERPTUpJ
VFVuc2lnbmVkU2hvcnRBdHRyR2V0dGVyKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVGUKIH0KIAogVGVz
dERPTUpJVFVuc2lnbmVkU2hvcnRBdHRyRE9NSklUOjpUZXN0RE9NSklUVW5zaWduZWRTaG9ydEF0
dHJET01KSVQoKQotICAgIDogSlNDOjpET01KSVQ6OkdldHRlclNldHRlcihqc1Rlc3RET01KSVRV
bnNpZ25lZFNob3J0QXR0ciwgbnVsbHB0ciwgSlNUZXN0RE9NSklUOjppbmZvKCksIEpTQzo6U3Bl
Y0ludDMyT25seSkKKyAgICA6IEpTQzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIoanNUZXN0RE9NSklU
VW5zaWduZWRTaG9ydEF0dHIsIG51bGxwdHIsIEpTVGVzdERPTUpJVDo6aW5mbygpLCBET01KSVQ6
OklETFJlc3VsdFR5cGVGaWx0ZXI8SURMVW5zaWduZWRTaG9ydD46OnZhbHVlKQogewogfQogCkBA
IC0zNjQsNyArMzg0LDcgQEAgc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdERPTUpJVExvbmdB
dHRyR2V0dGVyKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVGVzdERPTUpJVCYKIH0KIAogVGVzdERPTUpJ
VExvbmdBdHRyRE9NSklUOjpUZXN0RE9NSklUTG9uZ0F0dHJET01KSVQoKQotICAgIDogSlNDOjpE
T01KSVQ6OkdldHRlclNldHRlcihqc1Rlc3RET01KSVRMb25nQXR0ciwgbnVsbHB0ciwgSlNUZXN0
RE9NSklUOjppbmZvKCksIEpTQzo6U3BlY0ludDMyT25seSkKKyAgICA6IEpTQzo6RE9NSklUOjpH
ZXR0ZXJTZXR0ZXIoanNUZXN0RE9NSklUTG9uZ0F0dHIsIG51bGxwdHIsIEpTVGVzdERPTUpJVDo6
aW5mbygpLCBET01KSVQ6OklETFJlc3VsdFR5cGVGaWx0ZXI8SURMTG9uZz46OnZhbHVlKQogewog
fQogCkBAIC0zOTEsNyArNDExLDcgQEAgc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdERPTUpJ
VFVuc2lnbmVkTG9uZ0F0dHJHZXR0ZXIoRXhlY1N0YXRlJiBzdGF0ZSwgSlNUZXMKIH0KIAogVGVz
dERPTUpJVFVuc2lnbmVkTG9uZ0F0dHJET01KSVQ6OlRlc3RET01KSVRVbnNpZ25lZExvbmdBdHRy
RE9NSklUKCkKLSAgICA6IEpTQzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIoanNUZXN0RE9NSklUVW5z
aWduZWRMb25nQXR0ciwgbnVsbHB0ciwgSlNUZXN0RE9NSklUOjppbmZvKCksIEpTQzo6U3BlY0J5
dGVjb2RlTnVtYmVyKQorICAgIDogSlNDOjpET01KSVQ6OkdldHRlclNldHRlcihqc1Rlc3RET01K
SVRVbnNpZ25lZExvbmdBdHRyLCBudWxscHRyLCBKU1Rlc3RET01KSVQ6OmluZm8oKSwgRE9NSklU
OjpJRExSZXN1bHRUeXBlRmlsdGVyPElETFVuc2lnbmVkTG9uZz46OnZhbHVlKQogewogfQogCkBA
IC00MTgsNyArNDM4LDcgQEAgc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdERPTUpJVExvbmdM
b25nQXR0ckdldHRlcihFeGVjU3RhdGUmIHN0YXRlLCBKU1Rlc3RET00KIH0KIAogVGVzdERPTUpJ
VExvbmdMb25nQXR0ckRPTUpJVDo6VGVzdERPTUpJVExvbmdMb25nQXR0ckRPTUpJVCgpCi0gICAg
OiBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVyKGpzVGVzdERPTUpJVExvbmdMb25nQXR0ciwgbnVs
bHB0ciwgSlNUZXN0RE9NSklUOjppbmZvKCksIEpTQzo6U3BlY0J5dGVjb2RlTnVtYmVyKQorICAg
IDogSlNDOjpET01KSVQ6OkdldHRlclNldHRlcihqc1Rlc3RET01KSVRMb25nTG9uZ0F0dHIsIG51
bGxwdHIsIEpTVGVzdERPTUpJVDo6aW5mbygpLCBET01KSVQ6OklETFJlc3VsdFR5cGVGaWx0ZXI8
SURMTG9uZ0xvbmc+Ojp2YWx1ZSkKIHsKIH0KIApAQCAtNDQ1LDcgKzQ2NSw3IEBAIHN0YXRpYyBp
bmxpbmUgSlNWYWx1ZSBqc1Rlc3RET01KSVRVbnNpZ25lZExvbmdMb25nQXR0ckdldHRlcihFeGVj
U3RhdGUmIHN0YXRlLCBKCiB9CiAKIFRlc3RET01KSVRVbnNpZ25lZExvbmdMb25nQXR0ckRPTUpJ
VDo6VGVzdERPTUpJVFVuc2lnbmVkTG9uZ0xvbmdBdHRyRE9NSklUKCkKLSAgICA6IEpTQzo6RE9N
SklUOjpHZXR0ZXJTZXR0ZXIoanNUZXN0RE9NSklUVW5zaWduZWRMb25nTG9uZ0F0dHIsIG51bGxw
dHIsIEpTVGVzdERPTUpJVDo6aW5mbygpLCBKU0M6OlNwZWNCeXRlY29kZU51bWJlcikKKyAgICA6
IEpTQzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIoanNUZXN0RE9NSklUVW5zaWduZWRMb25nTG9uZ0F0
dHIsIG51bGxwdHIsIEpTVGVzdERPTUpJVDo6aW5mbygpLCBET01KSVQ6OklETFJlc3VsdFR5cGVG
aWx0ZXI8SURMVW5zaWduZWRMb25nTG9uZz46OnZhbHVlKQogewogfQogCkBAIC00NzIsNyArNDky
LDcgQEAgc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdERPTUpJVEZsb2F0QXR0ckdldHRlcihF
eGVjU3RhdGUmIHN0YXRlLCBKU1Rlc3RET01KSVQKIH0KIAogVGVzdERPTUpJVEZsb2F0QXR0ckRP
TUpJVDo6VGVzdERPTUpJVEZsb2F0QXR0ckRPTUpJVCgpCi0gICAgOiBKU0M6OkRPTUpJVDo6R2V0
dGVyU2V0dGVyKGpzVGVzdERPTUpJVEZsb2F0QXR0ciwgbnVsbHB0ciwgSlNUZXN0RE9NSklUOjpp
bmZvKCksIEpTQzo6U3BlY0J5dGVjb2RlTnVtYmVyKQorICAgIDogSlNDOjpET01KSVQ6OkdldHRl
clNldHRlcihqc1Rlc3RET01KSVRGbG9hdEF0dHIsIG51bGxwdHIsIEpTVGVzdERPTUpJVDo6aW5m
bygpLCBET01KSVQ6OklETFJlc3VsdFR5cGVGaWx0ZXI8SURMRmxvYXQ+Ojp2YWx1ZSkKIHsKIH0K
IApAQCAtNDk5LDcgKzUxOSw3IEBAIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RET01KSVRV
bnJlc3RyaWN0ZWRGbG9hdEF0dHJHZXR0ZXIoRXhlY1N0YXRlJiBzdGF0ZSwKIH0KIAogVGVzdERP
TUpJVFVucmVzdHJpY3RlZEZsb2F0QXR0ckRPTUpJVDo6VGVzdERPTUpJVFVucmVzdHJpY3RlZEZs
b2F0QXR0ckRPTUpJVCgpCi0gICAgOiBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVyKGpzVGVzdERP
TUpJVFVucmVzdHJpY3RlZEZsb2F0QXR0ciwgbnVsbHB0ciwgSlNUZXN0RE9NSklUOjppbmZvKCks
IEpTQzo6U3BlY0J5dGVjb2RlTnVtYmVyKQorICAgIDogSlNDOjpET01KSVQ6OkdldHRlclNldHRl
cihqc1Rlc3RET01KSVRVbnJlc3RyaWN0ZWRGbG9hdEF0dHIsIG51bGxwdHIsIEpTVGVzdERPTUpJ
VDo6aW5mbygpLCBET01KSVQ6OklETFJlc3VsdFR5cGVGaWx0ZXI8SURMVW5yZXN0cmljdGVkRmxv
YXQ+Ojp2YWx1ZSkKIHsKIH0KIApAQCAtNTI2LDcgKzU0Niw3IEBAIHN0YXRpYyBpbmxpbmUgSlNW
YWx1ZSBqc1Rlc3RET01KSVREb3VibGVBdHRyR2V0dGVyKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVGVz
dERPTUpJCiB9CiAKIFRlc3RET01KSVREb3VibGVBdHRyRE9NSklUOjpUZXN0RE9NSklURG91Ymxl
QXR0ckRPTUpJVCgpCi0gICAgOiBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVyKGpzVGVzdERPTUpJ
VERvdWJsZUF0dHIsIG51bGxwdHIsIEpTVGVzdERPTUpJVDo6aW5mbygpLCBKU0M6OlNwZWNCeXRl
Y29kZU51bWJlcikKKyAgICA6IEpTQzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIoanNUZXN0RE9NSklU
RG91YmxlQXR0ciwgbnVsbHB0ciwgSlNUZXN0RE9NSklUOjppbmZvKCksIERPTUpJVDo6SURMUmVz
dWx0VHlwZUZpbHRlcjxJRExEb3VibGU+Ojp2YWx1ZSkKIHsKIH0KIApAQCAtNTUzLDcgKzU3Myw3
IEBAIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RET01KSVRVbnJlc3RyaWN0ZWREb3VibGVB
dHRyR2V0dGVyKEV4ZWNTdGF0ZSYgc3RhdGUsCiB9CiAKIFRlc3RET01KSVRVbnJlc3RyaWN0ZWRE
b3VibGVBdHRyRE9NSklUOjpUZXN0RE9NSklUVW5yZXN0cmljdGVkRG91YmxlQXR0ckRPTUpJVCgp
Ci0gICAgOiBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVyKGpzVGVzdERPTUpJVFVucmVzdHJpY3Rl
ZERvdWJsZUF0dHIsIG51bGxwdHIsIEpTVGVzdERPTUpJVDo6aW5mbygpLCBKU0M6OlNwZWNCeXRl
Y29kZU51bWJlcikKKyAgICA6IEpTQzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIoanNUZXN0RE9NSklU
VW5yZXN0cmljdGVkRG91YmxlQXR0ciwgbnVsbHB0ciwgSlNUZXN0RE9NSklUOjppbmZvKCksIERP
TUpJVDo6SURMUmVzdWx0VHlwZUZpbHRlcjxJRExVbnJlc3RyaWN0ZWREb3VibGU+Ojp2YWx1ZSkK
IHsKIH0KIApAQCAtNTgwLDcgKzYwMCw3IEBAIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RE
T01KSVREb21TdHJpbmdBdHRyR2V0dGVyKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVGVzdERPCiB9CiAK
IFRlc3RET01KSVREb21TdHJpbmdBdHRyRE9NSklUOjpUZXN0RE9NSklURG9tU3RyaW5nQXR0ckRP
TUpJVCgpCi0gICAgOiBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVyKGpzVGVzdERPTUpJVERvbVN0
cmluZ0F0dHIsIG51bGxwdHIsIEpTVGVzdERPTUpJVDo6aW5mbygpLCBKU0M6OlNwZWNTdHJpbmcp
CisgICAgOiBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVyKGpzVGVzdERPTUpJVERvbVN0cmluZ0F0
dHIsIG51bGxwdHIsIEpTVGVzdERPTUpJVDo6aW5mbygpLCBET01KSVQ6OklETFJlc3VsdFR5cGVG
aWx0ZXI8SURMRE9NU3RyaW5nPjo6dmFsdWUpCiB7CiB9CiAKQEAgLTYwNyw3ICs2MjcsNyBAQCBz
dGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0RE9NSklUQnl0ZVN0cmluZ0F0dHJHZXR0ZXIoRXhl
Y1N0YXRlJiBzdGF0ZSwgSlNUZXN0RAogfQogCiBUZXN0RE9NSklUQnl0ZVN0cmluZ0F0dHJET01K
SVQ6OlRlc3RET01KSVRCeXRlU3RyaW5nQXR0ckRPTUpJVCgpCi0gICAgOiBKU0M6OkRPTUpJVDo6
R2V0dGVyU2V0dGVyKGpzVGVzdERPTUpJVEJ5dGVTdHJpbmdBdHRyLCBudWxscHRyLCBKU1Rlc3RE
T01KSVQ6OmluZm8oKSwgSlNDOjpTcGVjU3RyaW5nKQorICAgIDogSlNDOjpET01KSVQ6OkdldHRl
clNldHRlcihqc1Rlc3RET01KSVRCeXRlU3RyaW5nQXR0ciwgbnVsbHB0ciwgSlNUZXN0RE9NSklU
OjppbmZvKCksIERPTUpJVDo6SURMUmVzdWx0VHlwZUZpbHRlcjxJRExCeXRlU3RyaW5nPjo6dmFs
dWUpCiB7CiB9CiAKQEAgLTYzNCw3ICs2NTQsNyBAQCBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNU
ZXN0RE9NSklUVXN2U3RyaW5nQXR0ckdldHRlcihFeGVjU3RhdGUmIHN0YXRlLCBKU1Rlc3RETwog
fQogCiBUZXN0RE9NSklUVXN2U3RyaW5nQXR0ckRPTUpJVDo6VGVzdERPTUpJVFVzdlN0cmluZ0F0
dHJET01KSVQoKQotICAgIDogSlNDOjpET01KSVQ6OkdldHRlclNldHRlcihqc1Rlc3RET01KSVRV
c3ZTdHJpbmdBdHRyLCBudWxscHRyLCBKU1Rlc3RET01KSVQ6OmluZm8oKSwgSlNDOjpTcGVjU3Ry
aW5nKQorICAgIDogSlNDOjpET01KSVQ6OkdldHRlclNldHRlcihqc1Rlc3RET01KSVRVc3ZTdHJp
bmdBdHRyLCBudWxscHRyLCBKU1Rlc3RET01KSVQ6OmluZm8oKSwgRE9NSklUOjpJRExSZXN1bHRU
eXBlRmlsdGVyPElETFVTVlN0cmluZz46OnZhbHVlKQogewogfQogCkBAIC02NjEsNyArNjgxLDcg
QEAgc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdERPTUpJVE5vZGVBdHRyR2V0dGVyKEV4ZWNT
dGF0ZSYgc3RhdGUsIEpTVGVzdERPTUpJVCYKIH0KIAogVGVzdERPTUpJVE5vZGVBdHRyRE9NSklU
OjpUZXN0RE9NSklUTm9kZUF0dHJET01KSVQoKQotICAgIDogSlNDOjpET01KSVQ6OkdldHRlclNl
dHRlcihqc1Rlc3RET01KSVROb2RlQXR0ciwgbnVsbHB0ciwgSlNUZXN0RE9NSklUOjppbmZvKCks
IFNwZWNIZWFwVG9wKQorICAgIDogSlNDOjpET01KSVQ6OkdldHRlclNldHRlcihqc1Rlc3RET01K
SVROb2RlQXR0ciwgbnVsbHB0ciwgSlNUZXN0RE9NSklUOjppbmZvKCksIERPTUpJVDo6SURMUmVz
dWx0VHlwZUZpbHRlcjxJRExJbnRlcmZhY2U8Tm9kZT4+Ojp2YWx1ZSkKIHsKIH0KIApAQCAtNjg4
LDcgKzcwOCw3IEBAIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RET01KSVRCb29sZWFuTnVs
bGFibGVBdHRyR2V0dGVyKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTCiB9CiAKIFRlc3RET01KSVRCb29s
ZWFuTnVsbGFibGVBdHRyRE9NSklUOjpUZXN0RE9NSklUQm9vbGVhbk51bGxhYmxlQXR0ckRPTUpJ
VCgpCi0gICAgOiBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVyKGpzVGVzdERPTUpJVEJvb2xlYW5O
dWxsYWJsZUF0dHIsIG51bGxwdHIsIEpTVGVzdERPTUpJVDo6aW5mbygpLCAoSlNDOjpTcGVjQm9v
bGVhbiB8IEpTQzo6U3BlY090aGVyKSkKKyAgICA6IEpTQzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIo
anNUZXN0RE9NSklUQm9vbGVhbk51bGxhYmxlQXR0ciwgbnVsbHB0ciwgSlNUZXN0RE9NSklUOjpp
bmZvKCksIERPTUpJVDo6SURMUmVzdWx0VHlwZUZpbHRlcjxJRExOdWxsYWJsZTxJRExCb29sZWFu
Pj46OnZhbHVlKQogewogfQogCkBAIC03MTUsNyArNzM1LDcgQEAgc3RhdGljIGlubGluZSBKU1Zh
bHVlIGpzVGVzdERPTUpJVEJ5dGVOdWxsYWJsZUF0dHJHZXR0ZXIoRXhlY1N0YXRlJiBzdGF0ZSwg
SlNUZXMKIH0KIAogVGVzdERPTUpJVEJ5dGVOdWxsYWJsZUF0dHJET01KSVQ6OlRlc3RET01KSVRC
eXRlTnVsbGFibGVBdHRyRE9NSklUKCkKLSAgICA6IEpTQzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIo
anNUZXN0RE9NSklUQnl0ZU51bGxhYmxlQXR0ciwgbnVsbHB0ciwgSlNUZXN0RE9NSklUOjppbmZv
KCksIChKU0M6OlNwZWNJbnQzMk9ubHkgfCBKU0M6OlNwZWNPdGhlcikpCisgICAgOiBKU0M6OkRP
TUpJVDo6R2V0dGVyU2V0dGVyKGpzVGVzdERPTUpJVEJ5dGVOdWxsYWJsZUF0dHIsIG51bGxwdHIs
IEpTVGVzdERPTUpJVDo6aW5mbygpLCBET01KSVQ6OklETFJlc3VsdFR5cGVGaWx0ZXI8SURMTnVs
bGFibGU8SURMQnl0ZT4+Ojp2YWx1ZSkKIHsKIH0KIApAQCAtNzQyLDcgKzc2Miw3IEBAIHN0YXRp
YyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RET01KSVRPY3RldE51bGxhYmxlQXR0ckdldHRlcihFeGVj
U3RhdGUmIHN0YXRlLCBKU1RlCiB9CiAKIFRlc3RET01KSVRPY3RldE51bGxhYmxlQXR0ckRPTUpJ
VDo6VGVzdERPTUpJVE9jdGV0TnVsbGFibGVBdHRyRE9NSklUKCkKLSAgICA6IEpTQzo6RE9NSklU
OjpHZXR0ZXJTZXR0ZXIoanNUZXN0RE9NSklUT2N0ZXROdWxsYWJsZUF0dHIsIG51bGxwdHIsIEpT
VGVzdERPTUpJVDo6aW5mbygpLCAoSlNDOjpTcGVjSW50MzJPbmx5IHwgSlNDOjpTcGVjT3RoZXIp
KQorICAgIDogSlNDOjpET01KSVQ6OkdldHRlclNldHRlcihqc1Rlc3RET01KSVRPY3RldE51bGxh
YmxlQXR0ciwgbnVsbHB0ciwgSlNUZXN0RE9NSklUOjppbmZvKCksIERPTUpJVDo6SURMUmVzdWx0
VHlwZUZpbHRlcjxJRExOdWxsYWJsZTxJRExPY3RldD4+Ojp2YWx1ZSkKIHsKIH0KIApAQCAtNzY5
LDcgKzc4OSw3IEBAIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RET01KSVRTaG9ydE51bGxh
YmxlQXR0ckdldHRlcihFeGVjU3RhdGUmIHN0YXRlLCBKU1RlCiB9CiAKIFRlc3RET01KSVRTaG9y
dE51bGxhYmxlQXR0ckRPTUpJVDo6VGVzdERPTUpJVFNob3J0TnVsbGFibGVBdHRyRE9NSklUKCkK
LSAgICA6IEpTQzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIoanNUZXN0RE9NSklUU2hvcnROdWxsYWJs
ZUF0dHIsIG51bGxwdHIsIEpTVGVzdERPTUpJVDo6aW5mbygpLCAoSlNDOjpTcGVjSW50MzJPbmx5
IHwgSlNDOjpTcGVjT3RoZXIpKQorICAgIDogSlNDOjpET01KSVQ6OkdldHRlclNldHRlcihqc1Rl
c3RET01KSVRTaG9ydE51bGxhYmxlQXR0ciwgbnVsbHB0ciwgSlNUZXN0RE9NSklUOjppbmZvKCks
IERPTUpJVDo6SURMUmVzdWx0VHlwZUZpbHRlcjxJRExOdWxsYWJsZTxJRExTaG9ydD4+Ojp2YWx1
ZSkKIHsKIH0KIApAQCAtNzk2LDcgKzgxNiw3IEBAIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rl
c3RET01KSVRVbnNpZ25lZFNob3J0TnVsbGFibGVBdHRyR2V0dGVyKEV4ZWNTdGF0ZSYgc3RhCiB9
CiAKIFRlc3RET01KSVRVbnNpZ25lZFNob3J0TnVsbGFibGVBdHRyRE9NSklUOjpUZXN0RE9NSklU
VW5zaWduZWRTaG9ydE51bGxhYmxlQXR0ckRPTUpJVCgpCi0gICAgOiBKU0M6OkRPTUpJVDo6R2V0
dGVyU2V0dGVyKGpzVGVzdERPTUpJVFVuc2lnbmVkU2hvcnROdWxsYWJsZUF0dHIsIG51bGxwdHIs
IEpTVGVzdERPTUpJVDo6aW5mbygpLCAoSlNDOjpTcGVjSW50MzJPbmx5IHwgSlNDOjpTcGVjT3Ro
ZXIpKQorICAgIDogSlNDOjpET01KSVQ6OkdldHRlclNldHRlcihqc1Rlc3RET01KSVRVbnNpZ25l
ZFNob3J0TnVsbGFibGVBdHRyLCBudWxscHRyLCBKU1Rlc3RET01KSVQ6OmluZm8oKSwgRE9NSklU
OjpJRExSZXN1bHRUeXBlRmlsdGVyPElETE51bGxhYmxlPElETFVuc2lnbmVkU2hvcnQ+Pjo6dmFs
dWUpCiB7CiB9CiAKQEAgLTgyMyw3ICs4NDMsNyBAQCBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNU
ZXN0RE9NSklUTG9uZ051bGxhYmxlQXR0ckdldHRlcihFeGVjU3RhdGUmIHN0YXRlLCBKU1Rlcwog
fQogCiBUZXN0RE9NSklUTG9uZ051bGxhYmxlQXR0ckRPTUpJVDo6VGVzdERPTUpJVExvbmdOdWxs
YWJsZUF0dHJET01KSVQoKQotICAgIDogSlNDOjpET01KSVQ6OkdldHRlclNldHRlcihqc1Rlc3RE
T01KSVRMb25nTnVsbGFibGVBdHRyLCBudWxscHRyLCBKU1Rlc3RET01KSVQ6OmluZm8oKSwgKEpT
Qzo6U3BlY0ludDMyT25seSB8IEpTQzo6U3BlY090aGVyKSkKKyAgICA6IEpTQzo6RE9NSklUOjpH
ZXR0ZXJTZXR0ZXIoanNUZXN0RE9NSklUTG9uZ051bGxhYmxlQXR0ciwgbnVsbHB0ciwgSlNUZXN0
RE9NSklUOjppbmZvKCksIERPTUpJVDo6SURMUmVzdWx0VHlwZUZpbHRlcjxJRExOdWxsYWJsZTxJ
RExMb25nPj46OnZhbHVlKQogewogfQogCkBAIC04NTAsNyArODcwLDcgQEAgc3RhdGljIGlubGlu
ZSBKU1ZhbHVlIGpzVGVzdERPTUpJVFVuc2lnbmVkTG9uZ051bGxhYmxlQXR0ckdldHRlcihFeGVj
U3RhdGUmIHN0YXQKIH0KIAogVGVzdERPTUpJVFVuc2lnbmVkTG9uZ051bGxhYmxlQXR0ckRPTUpJ
VDo6VGVzdERPTUpJVFVuc2lnbmVkTG9uZ051bGxhYmxlQXR0ckRPTUpJVCgpCi0gICAgOiBKU0M6
OkRPTUpJVDo6R2V0dGVyU2V0dGVyKGpzVGVzdERPTUpJVFVuc2lnbmVkTG9uZ051bGxhYmxlQXR0
ciwgbnVsbHB0ciwgSlNUZXN0RE9NSklUOjppbmZvKCksIChKU0M6OlNwZWNCeXRlY29kZU51bWJl
ciB8IEpTQzo6U3BlY090aGVyKSkKKyAgICA6IEpTQzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIoanNU
ZXN0RE9NSklUVW5zaWduZWRMb25nTnVsbGFibGVBdHRyLCBudWxscHRyLCBKU1Rlc3RET01KSVQ6
OmluZm8oKSwgRE9NSklUOjpJRExSZXN1bHRUeXBlRmlsdGVyPElETE51bGxhYmxlPElETFVuc2ln
bmVkTG9uZz4+Ojp2YWx1ZSkKIHsKIH0KIApAQCAtODc3LDcgKzg5Nyw3IEBAIHN0YXRpYyBpbmxp
bmUgSlNWYWx1ZSBqc1Rlc3RET01KSVRMb25nTG9uZ051bGxhYmxlQXR0ckdldHRlcihFeGVjU3Rh
dGUmIHN0YXRlLCBKCiB9CiAKIFRlc3RET01KSVRMb25nTG9uZ051bGxhYmxlQXR0ckRPTUpJVDo6
VGVzdERPTUpJVExvbmdMb25nTnVsbGFibGVBdHRyRE9NSklUKCkKLSAgICA6IEpTQzo6RE9NSklU
OjpHZXR0ZXJTZXR0ZXIoanNUZXN0RE9NSklUTG9uZ0xvbmdOdWxsYWJsZUF0dHIsIG51bGxwdHIs
IEpTVGVzdERPTUpJVDo6aW5mbygpLCAoSlNDOjpTcGVjQnl0ZWNvZGVOdW1iZXIgfCBKU0M6OlNw
ZWNPdGhlcikpCisgICAgOiBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVyKGpzVGVzdERPTUpJVExv
bmdMb25nTnVsbGFibGVBdHRyLCBudWxscHRyLCBKU1Rlc3RET01KSVQ6OmluZm8oKSwgRE9NSklU
OjpJRExSZXN1bHRUeXBlRmlsdGVyPElETE51bGxhYmxlPElETExvbmdMb25nPj46OnZhbHVlKQog
ewogfQogCkBAIC05MDQsNyArOTI0LDcgQEAgc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdERP
TUpJVFVuc2lnbmVkTG9uZ0xvbmdOdWxsYWJsZUF0dHJHZXR0ZXIoRXhlY1N0YXRlJgogfQogCiBU
ZXN0RE9NSklUVW5zaWduZWRMb25nTG9uZ051bGxhYmxlQXR0ckRPTUpJVDo6VGVzdERPTUpJVFVu
c2lnbmVkTG9uZ0xvbmdOdWxsYWJsZUF0dHJET01KSVQoKQotICAgIDogSlNDOjpET01KSVQ6Okdl
dHRlclNldHRlcihqc1Rlc3RET01KSVRVbnNpZ25lZExvbmdMb25nTnVsbGFibGVBdHRyLCBudWxs
cHRyLCBKU1Rlc3RET01KSVQ6OmluZm8oKSwgKEpTQzo6U3BlY0J5dGVjb2RlTnVtYmVyIHwgSlND
OjpTcGVjT3RoZXIpKQorICAgIDogSlNDOjpET01KSVQ6OkdldHRlclNldHRlcihqc1Rlc3RET01K
SVRVbnNpZ25lZExvbmdMb25nTnVsbGFibGVBdHRyLCBudWxscHRyLCBKU1Rlc3RET01KSVQ6Omlu
Zm8oKSwgRE9NSklUOjpJRExSZXN1bHRUeXBlRmlsdGVyPElETE51bGxhYmxlPElETFVuc2lnbmVk
TG9uZ0xvbmc+Pjo6dmFsdWUpCiB7CiB9CiAKQEAgLTkzMSw3ICs5NTEsNyBAQCBzdGF0aWMgaW5s
aW5lIEpTVmFsdWUganNUZXN0RE9NSklURmxvYXROdWxsYWJsZUF0dHJHZXR0ZXIoRXhlY1N0YXRl
JiBzdGF0ZSwgSlNUZQogfQogCiBUZXN0RE9NSklURmxvYXROdWxsYWJsZUF0dHJET01KSVQ6OlRl
c3RET01KSVRGbG9hdE51bGxhYmxlQXR0ckRPTUpJVCgpCi0gICAgOiBKU0M6OkRPTUpJVDo6R2V0
dGVyU2V0dGVyKGpzVGVzdERPTUpJVEZsb2F0TnVsbGFibGVBdHRyLCBudWxscHRyLCBKU1Rlc3RE
T01KSVQ6OmluZm8oKSwgKEpTQzo6U3BlY0J5dGVjb2RlTnVtYmVyIHwgSlNDOjpTcGVjT3RoZXIp
KQorICAgIDogSlNDOjpET01KSVQ6OkdldHRlclNldHRlcihqc1Rlc3RET01KSVRGbG9hdE51bGxh
YmxlQXR0ciwgbnVsbHB0ciwgSlNUZXN0RE9NSklUOjppbmZvKCksIERPTUpJVDo6SURMUmVzdWx0
VHlwZUZpbHRlcjxJRExOdWxsYWJsZTxJRExGbG9hdD4+Ojp2YWx1ZSkKIHsKIH0KIApAQCAtOTU4
LDcgKzk3OCw3IEBAIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RET01KSVRVbnJlc3RyaWN0
ZWRGbG9hdE51bGxhYmxlQXR0ckdldHRlcihFeGVjU3RhdGUmCiB9CiAKIFRlc3RET01KSVRVbnJl
c3RyaWN0ZWRGbG9hdE51bGxhYmxlQXR0ckRPTUpJVDo6VGVzdERPTUpJVFVucmVzdHJpY3RlZEZs
b2F0TnVsbGFibGVBdHRyRE9NSklUKCkKLSAgICA6IEpTQzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIo
anNUZXN0RE9NSklUVW5yZXN0cmljdGVkRmxvYXROdWxsYWJsZUF0dHIsIG51bGxwdHIsIEpTVGVz
dERPTUpJVDo6aW5mbygpLCAoSlNDOjpTcGVjQnl0ZWNvZGVOdW1iZXIgfCBKU0M6OlNwZWNPdGhl
cikpCisgICAgOiBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVyKGpzVGVzdERPTUpJVFVucmVzdHJp
Y3RlZEZsb2F0TnVsbGFibGVBdHRyLCBudWxscHRyLCBKU1Rlc3RET01KSVQ6OmluZm8oKSwgRE9N
SklUOjpJRExSZXN1bHRUeXBlRmlsdGVyPElETE51bGxhYmxlPElETFVucmVzdHJpY3RlZEZsb2F0
Pj46OnZhbHVlKQogewogfQogCkBAIC05ODUsNyArMTAwNSw3IEBAIHN0YXRpYyBpbmxpbmUgSlNW
YWx1ZSBqc1Rlc3RET01KSVREb3VibGVOdWxsYWJsZUF0dHJHZXR0ZXIoRXhlY1N0YXRlJiBzdGF0
ZSwgSlNUCiB9CiAKIFRlc3RET01KSVREb3VibGVOdWxsYWJsZUF0dHJET01KSVQ6OlRlc3RET01K
SVREb3VibGVOdWxsYWJsZUF0dHJET01KSVQoKQotICAgIDogSlNDOjpET01KSVQ6OkdldHRlclNl
dHRlcihqc1Rlc3RET01KSVREb3VibGVOdWxsYWJsZUF0dHIsIG51bGxwdHIsIEpTVGVzdERPTUpJ
VDo6aW5mbygpLCAoSlNDOjpTcGVjQnl0ZWNvZGVOdW1iZXIgfCBKU0M6OlNwZWNPdGhlcikpCisg
ICAgOiBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVyKGpzVGVzdERPTUpJVERvdWJsZU51bGxhYmxl
QXR0ciwgbnVsbHB0ciwgSlNUZXN0RE9NSklUOjppbmZvKCksIERPTUpJVDo6SURMUmVzdWx0VHlw
ZUZpbHRlcjxJRExOdWxsYWJsZTxJRExEb3VibGU+Pjo6dmFsdWUpCiB7CiB9CiAKQEAgLTEwMTIs
NyArMTAzMiw3IEBAIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RET01KSVRVbnJlc3RyaWN0
ZWREb3VibGVOdWxsYWJsZUF0dHJHZXR0ZXIoRXhlY1N0YXRlCiB9CiAKIFRlc3RET01KSVRVbnJl
c3RyaWN0ZWREb3VibGVOdWxsYWJsZUF0dHJET01KSVQ6OlRlc3RET01KSVRVbnJlc3RyaWN0ZWRE
b3VibGVOdWxsYWJsZUF0dHJET01KSVQoKQotICAgIDogSlNDOjpET01KSVQ6OkdldHRlclNldHRl
cihqc1Rlc3RET01KSVRVbnJlc3RyaWN0ZWREb3VibGVOdWxsYWJsZUF0dHIsIG51bGxwdHIsIEpT
VGVzdERPTUpJVDo6aW5mbygpLCAoSlNDOjpTcGVjQnl0ZWNvZGVOdW1iZXIgfCBKU0M6OlNwZWNP
dGhlcikpCisgICAgOiBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVyKGpzVGVzdERPTUpJVFVucmVz
dHJpY3RlZERvdWJsZU51bGxhYmxlQXR0ciwgbnVsbHB0ciwgSlNUZXN0RE9NSklUOjppbmZvKCks
IERPTUpJVDo6SURMUmVzdWx0VHlwZUZpbHRlcjxJRExOdWxsYWJsZTxJRExVbnJlc3RyaWN0ZWRE
b3VibGU+Pjo6dmFsdWUpCiB7CiB9CiAKQEAgLTEwMzksNyArMTA1OSw3IEBAIHN0YXRpYyBpbmxp
bmUgSlNWYWx1ZSBqc1Rlc3RET01KSVREb21TdHJpbmdOdWxsYWJsZUF0dHJHZXR0ZXIoRXhlY1N0
YXRlJiBzdGF0ZSwKIH0KIAogVGVzdERPTUpJVERvbVN0cmluZ051bGxhYmxlQXR0ckRPTUpJVDo6
VGVzdERPTUpJVERvbVN0cmluZ051bGxhYmxlQXR0ckRPTUpJVCgpCi0gICAgOiBKU0M6OkRPTUpJ
VDo6R2V0dGVyU2V0dGVyKGpzVGVzdERPTUpJVERvbVN0cmluZ051bGxhYmxlQXR0ciwgbnVsbHB0
ciwgSlNUZXN0RE9NSklUOjppbmZvKCksIChKU0M6OlNwZWNTdHJpbmcgfCBKU0M6OlNwZWNPdGhl
cikpCisgICAgOiBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVyKGpzVGVzdERPTUpJVERvbVN0cmlu
Z051bGxhYmxlQXR0ciwgbnVsbHB0ciwgSlNUZXN0RE9NSklUOjppbmZvKCksIERPTUpJVDo6SURM
UmVzdWx0VHlwZUZpbHRlcjxJRExOdWxsYWJsZTxJRExET01TdHJpbmc+Pjo6dmFsdWUpCiB7CiB9
CiAKQEAgLTEwNjYsNyArMTA4Niw3IEBAIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RET01K
SVRCeXRlU3RyaW5nTnVsbGFibGVBdHRyR2V0dGVyKEV4ZWNTdGF0ZSYgc3RhdGUsCiB9CiAKIFRl
c3RET01KSVRCeXRlU3RyaW5nTnVsbGFibGVBdHRyRE9NSklUOjpUZXN0RE9NSklUQnl0ZVN0cmlu
Z051bGxhYmxlQXR0ckRPTUpJVCgpCi0gICAgOiBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVyKGpz
VGVzdERPTUpJVEJ5dGVTdHJpbmdOdWxsYWJsZUF0dHIsIG51bGxwdHIsIEpTVGVzdERPTUpJVDo6
aW5mbygpLCAoSlNDOjpTcGVjU3RyaW5nIHwgSlNDOjpTcGVjT3RoZXIpKQorICAgIDogSlNDOjpE
T01KSVQ6OkdldHRlclNldHRlcihqc1Rlc3RET01KSVRCeXRlU3RyaW5nTnVsbGFibGVBdHRyLCBu
dWxscHRyLCBKU1Rlc3RET01KSVQ6OmluZm8oKSwgRE9NSklUOjpJRExSZXN1bHRUeXBlRmlsdGVy
PElETE51bGxhYmxlPElETEJ5dGVTdHJpbmc+Pjo6dmFsdWUpCiB7CiB9CiAKQEAgLTEwOTMsNyAr
MTExMyw3IEBAIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RET01KSVRVc3ZTdHJpbmdOdWxs
YWJsZUF0dHJHZXR0ZXIoRXhlY1N0YXRlJiBzdGF0ZSwKIH0KIAogVGVzdERPTUpJVFVzdlN0cmlu
Z051bGxhYmxlQXR0ckRPTUpJVDo6VGVzdERPTUpJVFVzdlN0cmluZ051bGxhYmxlQXR0ckRPTUpJ
VCgpCi0gICAgOiBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVyKGpzVGVzdERPTUpJVFVzdlN0cmlu
Z051bGxhYmxlQXR0ciwgbnVsbHB0ciwgSlNUZXN0RE9NSklUOjppbmZvKCksIChKU0M6OlNwZWNT
dHJpbmcgfCBKU0M6OlNwZWNPdGhlcikpCisgICAgOiBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVy
KGpzVGVzdERPTUpJVFVzdlN0cmluZ051bGxhYmxlQXR0ciwgbnVsbHB0ciwgSlNUZXN0RE9NSklU
OjppbmZvKCksIERPTUpJVDo6SURMUmVzdWx0VHlwZUZpbHRlcjxJRExOdWxsYWJsZTxJRExVU1ZT
dHJpbmc+Pjo6dmFsdWUpCiB7CiB9CiAKQEAgLTExMjAsNyArMTE0MCw3IEBAIHN0YXRpYyBpbmxp
bmUgSlNWYWx1ZSBqc1Rlc3RET01KSVROb2RlTnVsbGFibGVBdHRyR2V0dGVyKEV4ZWNTdGF0ZSYg
c3RhdGUsIEpTVGVzCiB9CiAKIFRlc3RET01KSVROb2RlTnVsbGFibGVBdHRyRE9NSklUOjpUZXN0
RE9NSklUTm9kZU51bGxhYmxlQXR0ckRPTUpJVCgpCi0gICAgOiBKU0M6OkRPTUpJVDo6R2V0dGVy
U2V0dGVyKGpzVGVzdERPTUpJVE5vZGVOdWxsYWJsZUF0dHIsIG51bGxwdHIsIEpTVGVzdERPTUpJ
VDo6aW5mbygpLCBTcGVjSGVhcFRvcCkKKyAgICA6IEpTQzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIo
anNUZXN0RE9NSklUTm9kZU51bGxhYmxlQXR0ciwgbnVsbHB0ciwgSlNUZXN0RE9NSklUOjppbmZv
KCksIERPTUpJVDo6SURMUmVzdWx0VHlwZUZpbHRlcjxJRExOdWxsYWJsZTxJRExJbnRlcmZhY2U8
Tm9kZT4+Pjo6dmFsdWUpCiB7CiB9CiAKQEAgLTExNTksNiArMTE3OSw0MCBAQCBKU1ZhbHVlIEpT
VGVzdERPTUpJVDo6Z2V0Q29uc3RydWN0b3IoVk0mIHZtLCBjb25zdCBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0KQogICAgIHJldHVybiBnZXRET01Db25zdHJ1Y3RvcjxKU1Rlc3RET01KSVRD
b25zdHJ1Y3Rvcj4odm0sICpqc0Nhc3Q8Y29uc3QgSlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxP
YmplY3QpKTsKIH0KIAorc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdERP
TUpJVFByb3RvdHlwZUZ1bmN0aW9uR2V0QXR0cmlidXRlQ2FsbGVyKEpTQzo6RXhlY1N0YXRlKiwg
SlNUZXN0RE9NSklUKiwgSlNDOjpUaHJvd1Njb3BlJik7CisKK0VuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwganNUZXN0RE9NSklUUHJvdG90eXBlRnVuY3Rpb25HZXRBdHRyaWJ1dGUoRXhlY1N0
YXRlKiBzdGF0ZSkKK3sKKyAgICByZXR1cm4gQmluZGluZ0NhbGxlcjxKU1Rlc3RET01KSVQ+Ojpj
YWxsT3BlcmF0aW9uPGpzVGVzdERPTUpJVFByb3RvdHlwZUZ1bmN0aW9uR2V0QXR0cmlidXRlQ2Fs
bGVyPihzdGF0ZSwgImdldEF0dHJpYnV0ZSIpOworfQorCitzdGF0aWMgaW5saW5lIEpTQzo6RW5j
b2RlZEpTVmFsdWUganNUZXN0RE9NSklUUHJvdG90eXBlRnVuY3Rpb25HZXRBdHRyaWJ1dGVDYWxs
ZXIoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCBKU1Rlc3RET01KSVQqIGNhc3RlZFRoaXMsIEpTQzo6
VGhyb3dTY29wZSYgdGhyb3dTY29wZSkKK3sKKyAgICBVTlVTRURfUEFSQU0oc3RhdGUpOworICAg
IFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+
d3JhcHBlZCgpOworICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+YXJndW1lbnRDb3VudCgpIDwgMSkp
CisgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUsIGNyZWF0ZU5v
dEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CisgICAgYXV0byBuYW1lID0gY29udmVydDxJ
RExET01TdHJpbmc+KCpzdGF0ZSwgc3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50KDApLCBTdHJpbmdD
b252ZXJzaW9uQ29uZmlndXJhdGlvbjo6Tm9ybWFsKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOworICAgIEpTVmFsdWUgcmVzdWx0ID0gdG9K
UzxJRExOdWxsYWJsZTxJRExET01TdHJpbmc+Pigqc3RhdGUsIGltcGwuZ2V0QXR0cmlidXRlKFdU
Rk1vdmUobmFtZSkpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7Cit9CisK
K0pTQzo6RW5jb2RlZEpTVmFsdWUgdW5zYWZlSnNUZXN0RE9NSklUUHJvdG90eXBlRnVuY3Rpb25H
ZXRBdHRyaWJ1dGUoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCBKU1Rlc3RET01KSVQqIGNhc3RlZFRo
aXMsIERPTUpJVDo6SURMSlNBcmd1bWVudFR5cGU8SURMRE9NU3RyaW5nPiBlbmNvZGVkTmFtZSkK
K3sKKyAgICBVTlVTRURfUEFSQU0oc3RhdGUpOworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOwor
ICAgIEpTQzo6TmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcigmdm0sIHN0YXRlKTsKKyAgICBh
dXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFS
QU0odGhyb3dTY29wZSk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsK
KyAgICBhdXRvIG5hbWUgPSBET01KSVQ6OkRpcmVjdENvbnZlcnRlcjxJRExET01TdHJpbmc+Ojpk
aXJlY3RDb252ZXJ0PFN0cmluZ0NvbnZlcnNpb25Db25maWd1cmF0aW9uOjpOb3JtYWw+KCpzdGF0
ZSwgZW5jb2RlZE5hbWUpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5j
b2RlZEpTVmFsdWUoKSk7CisgICAgSlNWYWx1ZSByZXN1bHQgPSB0b0pTPElETE51bGxhYmxlPElE
TERPTVN0cmluZz4+KCpzdGF0ZSwgaW1wbC5nZXRBdHRyaWJ1dGUoV1RGTW92ZShuYW1lKSkpOwor
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKK30KKwogdm9pZCBKU1Rlc3RET01K
SVQ6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKIHsK
ICAgICBhdXRvKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTVGVzdERPTUpJVCo+KGNlbGwpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RET01KSVQu
aWRsIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RET01KSVQuaWRs
CmluZGV4IGJlN2VkMDRmZjYzZGU2ODZiYzg3NjQ4MjgyYjZhYWY2NGMyNzczZTcuLmE1MzE0ODhk
YzgxYzFiODc3ZjBlZTNmOTRmOGFhYjM4YWE2OTQzOWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0RE9NSklULmlkbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdERPTUpJVC5pZGwKQEAgLTYzLDQgKzYzLDYg
QEAgaW50ZXJmYWNlIFRlc3RET01KSVQgOiBOb2RlIHsKICAgICBbRE9NSklUXSByZWFkb25seSBh
dHRyaWJ1dGUgQnl0ZVN0cmluZz8gYnl0ZVN0cmluZ051bGxhYmxlQXR0cjsKICAgICBbRE9NSklU
XSByZWFkb25seSBhdHRyaWJ1dGUgVVNWU3RyaW5nPyB1c3ZTdHJpbmdOdWxsYWJsZUF0dHI7CiAg
ICAgW0RPTUpJVF0gcmVhZG9ubHkgYXR0cmlidXRlIE5vZGU/IG5vZGVOdWxsYWJsZUF0dHI7CisK
KyAgICBbRE9NSklUPVNpZ25hdHVyZV0gRE9NU3RyaW5nPyBnZXRBdHRyaWJ1dGUoRE9NU3RyaW5n
IG5hbWUpOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmlkbCBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmlkbAppbmRleCA3MDU2MTczOGI5NzQ5YThkNzRh
MGYxN2NhNjNhN2Y4ZmYxOTVlMWM2Li40ODhjOTkxYjRiYTY2YjUyNDg4MzgwMjE2MDFjMGMwZjFk
YTMyMDJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5pZGwKKysrIGIv
U291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaWRsCkBAIC0yNiwyMCArMjYsMjAgQEAKIF0gaW50
ZXJmYWNlIEVsZW1lbnQgOiBOb2RlIHsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5n
PyB0YWdOYW1lOwogCi0gICAgRE9NU3RyaW5nPyBnZXRBdHRyaWJ1dGUoRE9NU3RyaW5nIG5hbWUp
OworICAgIFtET01KSVQ9U2lnbmF0dXJlXSBET01TdHJpbmc/IGdldEF0dHJpYnV0ZShET01TdHJp
bmcgbmFtZSk7CiAKICAgICBbQ0VSZWFjdGlvbnMsIE1heVRocm93RXhjZXB0aW9uXSB2b2lkIHNl
dEF0dHJpYnV0ZShET01TdHJpbmcgbmFtZSwgRE9NU3RyaW5nIHZhbHVlKTsKIAogICAgIFtDRVJl
YWN0aW9uc10gdm9pZCByZW1vdmVBdHRyaWJ1dGUoRE9NU3RyaW5nIG5hbWUpOwotICAgIEF0dHI/
IGdldEF0dHJpYnV0ZU5vZGUoRE9NU3RyaW5nIG5hbWUpOworICAgIFtET01KSVQ9U2lnbmF0dXJl
XSBBdHRyPyBnZXRBdHRyaWJ1dGVOb2RlKERPTVN0cmluZyBuYW1lKTsKIAogICAgIFtDRVJlYWN0
aW9ucywgTWF5VGhyb3dFeGNlcHRpb25dIEF0dHI/IHNldEF0dHJpYnV0ZU5vZGUoQXR0ciBuZXdB
dHRyKTsKICAgICBbQ0VSZWFjdGlvbnMsIE1heVRocm93RXhjZXB0aW9uXSBBdHRyIHJlbW92ZUF0
dHJpYnV0ZU5vZGUoQXR0ciBvbGRBdHRyKTsKIAotICAgIEhUTUxDb2xsZWN0aW9uIGdldEVsZW1l
bnRzQnlUYWdOYW1lKERPTVN0cmluZyBuYW1lKTsKKyAgICBbRE9NSklUPVNpZ25hdHVyZV0gSFRN
TENvbGxlY3Rpb24gZ2V0RWxlbWVudHNCeVRhZ05hbWUoRE9NU3RyaW5nIG5hbWUpOwogCiAgICAg
cmVhZG9ubHkgYXR0cmlidXRlIE5hbWVkTm9kZU1hcCBhdHRyaWJ1dGVzOwotICAgIGJvb2xlYW4g
aGFzQXR0cmlidXRlcygpOworICAgIFtET01KSVQ9U2lnbmF0dXJlXSBib29sZWFuIGhhc0F0dHJp
YnV0ZXMoKTsKIAogICAgIERPTVN0cmluZz8gZ2V0QXR0cmlidXRlTlMoRE9NU3RyaW5nPyBuYW1l
c3BhY2VVUkksIERPTVN0cmluZyBsb2NhbE5hbWUpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9kb21qaXQvRE9NSklUQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9kb21qaXQvRE9NSklUQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5jcHAKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDgzZmJhODk3MTNiODY2M2Q0ZDhmMjdlZGNiZjc0YWZlNjMxODJk
MzEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNl
L1dlYkNvcmUvZG9taml0L0RPTUpJVEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuY3BwCisrKyAvZGV2
L251bGwKQEAgLTEsNzAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
LSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQot
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJET01KSVRBYnN0cmFj
dEhlYXBSZXBvc2l0b3J5LmgiCi0KLSNpbmNsdWRlIDxkb21qaXQvRE9NSklUQWJzdHJhY3RIZWFw
Lmg+Ci0jaW5jbHVkZSA8d3RmL0RhdGFMb2cuaD4KLSNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95
ZWQuaD4KLQotI2lmIEVOQUJMRShKSVQpCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsgbmFtZXNwYWNl
IERPTUpJVCB7Ci0KLXN0YXRpYyBjb25zdCBib29sIHZlcmJvc2UgPSBmYWxzZTsKLQotQWJzdHJh
Y3RIZWFwUmVwb3NpdG9yeTo6QWJzdHJhY3RIZWFwUmVwb3NpdG9yeSgpCi17Ci0gICAgSlNDOjpE
T01KSVQ6OkFic3RyYWN0SGVhcCBET01IZWFwKCJET00iKTsKLSNkZWZpbmUgRE9NSklUX0RFRklO
RV9IRUFQKG5hbWUsIHBhcmVudCkgSlNDOjpET01KSVQ6OkFic3RyYWN0SGVhcCBuYW1lIyNIZWFw
KCNuYW1lKTsKLSAgICBET01KSVRfQUJTVFJBQ1RfSEVBUF9MSVNUKERPTUpJVF9ERUZJTkVfSEVB
UCkKLSN1bmRlZiBET01KSVRfREVGSU5FX0hFQVAKLQotI2RlZmluZSBET01KSVRfSU5JVElBTEla
RV9IRUFQKG5hbWUsIHBhcmVudCkgbmFtZSMjSGVhcC5zZXRQYXJlbnQoJnBhcmVudCMjSGVhcCk7
Ci0gICAgRE9NSklUX0FCU1RSQUNUX0hFQVBfTElTVChET01KSVRfSU5JVElBTElaRV9IRUFQKQot
I3VuZGVmIERPTUpJVF9JTklUSUFMSVpFX0hFQVAKLQotICAgIERPTUhlYXAuY29tcHV0ZSgwKTsK
LQotI2RlZmluZSBET01KSVRfSU5JVElBTElaRV9NRU1CRVIobmFtZSwgcGFyZW50KSBuYW1lID0g
bmFtZSMjSGVhcC5yYW5nZSgpOwotICAgIERPTUpJVF9BQlNUUkFDVF9IRUFQX0xJU1QoRE9NSklU
X0lOSVRJQUxJWkVfTUVNQkVSKQotI3VuZGVmIERPTUpJVF9JTklUSUFMSVpFX01FTUJFUgotCi0g
ICAgaWYgKHZlcmJvc2UpIHsKLSAgICAgICAgZGF0YUxvZygiRE9NSklUIEhlYXAgUmVwb3NpdG9y
eTpcbiIpOwotICAgICAgICBET01IZWFwLmRlZXBEdW1wKFdURjo6ZGF0YUZpbGUoKSk7Ci0gICAg
fQotfQotCi1jb25zdCBBYnN0cmFjdEhlYXBSZXBvc2l0b3J5JiBBYnN0cmFjdEhlYXBSZXBvc2l0
b3J5OjpzaGFyZWQoKQotewotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBYnN0cmFjdEhlYXBS
ZXBvc2l0b3J5PiByZXBvc2l0b3J5OwotICAgIHJldHVybiByZXBvc2l0b3J5LmdldCgpOwotfQot
Ci19IH0KLQotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb21qaXQvRE9NSklU
QWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5oIGIvU291cmNlL1dlYkNvcmUvZG9taml0L0RPTUpJVEFi
c3RyYWN0SGVhcFJlcG9zaXRvcnkuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODE5
MGExYTk0YmJjNzlkZTVmMmUzYmVkMDk5ODM0NzlmYTRiZDY1Ni4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb21qaXQvRE9NSklU
QWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5oCisrKyAvZGV2L251bGwKQEAgLTEsNjYgKzAsMCBAQAot
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
Ci0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25j
ZQotCi0jaW5jbHVkZSA8ZG9taml0L0RPTUpJVEhlYXBSYW5nZS5oPgotI2luY2x1ZGUgPHd0Zi9O
ZXZlckRlc3Ryb3llZC5oPgotI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgotCi0jaWYgRU5B
QkxFKEpJVCkKLQotbmFtZXNwYWNlIFdlYkNvcmUgeyBuYW1lc3BhY2UgRE9NSklUIHsKLQotLy8g
RGVzY3JpYmUgeW91ciBhYnN0cmFjdCBoZWFwIGhpZXJhcmNoeSBoZXJlLgotLy8gVihBYnN0cmFj
dEhlYXBOYW1lLCBQYXJlbnQpCi0jZGVmaW5lIERPTUpJVF9BQlNUUkFDVF9IRUFQX0xJU1QoVikg
XAotICAgIFYoTm9kZSwgRE9NKSBcCi0gICAgVihOb2RlX2ZpcnN0Q2hpbGQsIE5vZGUpIFwKLSAg
ICBWKE5vZGVfbGFzdENoaWxkLCBOb2RlKSBcCi0gICAgVihOb2RlX3BhcmVudE5vZGUsIE5vZGUp
IFwKLSAgICBWKE5vZGVfbmV4dFNpYmxpbmcsIE5vZGUpIFwKLSAgICBWKE5vZGVfcHJldmlvdXNT
aWJsaW5nLCBOb2RlKSBcCi0gICAgVihOb2RlX293bmVyRG9jdW1lbnQsIE5vZGUpIFwKLSAgICBW
KERvY3VtZW50LCBET00pIFwKLSAgICBWKERvY3VtZW50X2RvY3VtZW50RWxlbWVudCwgRG9jdW1l
bnQpIFwKLQotCi1jbGFzcyBBYnN0cmFjdEhlYXBSZXBvc2l0b3J5IHsKLSAgICBXVEZfTUFLRV9O
T05DT1BZQUJMRShBYnN0cmFjdEhlYXBSZXBvc2l0b3J5KTsKLXB1YmxpYzoKLSAgICBzdGF0aWMg
Y29uc3QgQWJzdHJhY3RIZWFwUmVwb3NpdG9yeSYgc2hhcmVkKCk7Ci0KLSAgICBKU0M6OkRPTUpJ
VDo6SGVhcFJhbmdlIERPTTsKLQotI2RlZmluZSBET01KSVRfREVGSU5FX01FTUJFUihuYW1lLCBw
YXJlbnQpIEpTQzo6RE9NSklUOjpIZWFwUmFuZ2UgbmFtZTsKLSAgICBET01KSVRfQUJTVFJBQ1Rf
SEVBUF9MSVNUKERPTUpJVF9ERUZJTkVfTUVNQkVSKQotI3VuZGVmIERPTUpJVF9ERUZJTkVfTUVN
QkVSCi0KLSAgICBBYnN0cmFjdEhlYXBSZXBvc2l0b3J5KCk7Ci19OwotCi19IH0KLQotI2VuZGlm
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb21qaXQvRE9NSklUQWJzdHJhY3RIZWFwUmVw
b3NpdG9yeS55YW1sIGIvU291cmNlL1dlYkNvcmUvZG9taml0L0RPTUpJVEFic3RyYWN0SGVhcFJl
cG9zaXRvcnkueWFtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41MmM1ODQ1ZTA3ODY3MGRkZGFjOTc3Mjk5OWNjYjhl
YTdkMDFiZGYzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvZG9taml0L0RPTUpJ
VEFic3RyYWN0SGVhcFJlcG9zaXRvcnkueWFtbApAQCAtMCwwICsxLDExIEBACitET006CisgICAg
VHJlZToKKyAgICAgICAgTm9kZToKKyAgICAgICAgICAgIC0gTm9kZV9maXJzdENoaWxkCisgICAg
ICAgICAgICAtIE5vZGVfbGFzdENoaWxkCisgICAgICAgICAgICAtIE5vZGVfcGFyZW50Tm9kZQor
ICAgICAgICAgICAgLSBOb2RlX25leHRTaWJsaW5nCisgICAgICAgICAgICAtIE5vZGVfcHJldmlv
dXNTaWJsaW5nCisgICAgICAgICAgICAtIE5vZGVfb3duZXJEb2N1bWVudAorICAgICAgICBEb2N1
bWVudDoKKyAgICAgICAgICAgIC0gRG9jdW1lbnRfZG9jdW1lbnRFbGVtZW50CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9kb21qaXQvRE9NSklUSURMQ29udmVydC5oIGIvU291cmNlL1dlYkNv
cmUvZG9taml0L0RPTUpJVElETENvbnZlcnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41ZTAwYWJmY2NiODc2ZGVh
MTgzMmYxYzIwYWVlM2VkNzhiMTM2ODQ5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvZG9taml0L0RPTUpJVElETENvbnZlcnQuaApAQCAtMCwwICsxLDQ5IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJJRExUeXBlcy5oIgorI2luY2x1ZGUgPGJ5dGVj
b2RlL1NwZWN1bGF0ZWRUeXBlLmg+CisjaW5jbHVkZSA8ZG9taml0L0RPTUpJVFNpZ25hdHVyZS5o
PgorCituYW1lc3BhY2UgV2ViQ29yZSB7IG5hbWVzcGFjZSBET01KSVQgeworCit0ZW1wbGF0ZTx0
eXBlbmFtZSBJRExUeXBlPgorc3RydWN0IERpcmVjdENvbnZlcnRlcjsKKwordGVtcGxhdGU8Pgor
c3RydWN0IERpcmVjdENvbnZlcnRlcjxJRExET01TdHJpbmc+IHsKKyAgICB0ZW1wbGF0ZTxTdHJp
bmdDb252ZXJzaW9uQ29uZmlndXJhdGlvbj4KKyAgICBzdGF0aWMgU3RyaW5nIGRpcmVjdENvbnZl
cnQoSlNDOjpFeGVjU3RhdGUmLCBKU0M6OkpTU3RyaW5nKik7Cit9OworCit0ZW1wbGF0ZTw+Citp
bmxpbmUgU3RyaW5nIERpcmVjdENvbnZlcnRlcjxJRExET01TdHJpbmc+OjpkaXJlY3RDb252ZXJ0
PFN0cmluZ0NvbnZlcnNpb25Db25maWd1cmF0aW9uOjpOb3JtYWw+KEpTQzo6RXhlY1N0YXRlJiBz
dGF0ZSwgSlNDOjpKU1N0cmluZyogc3RyaW5nKQoreworICAgIHJldHVybiBzdHJpbmctPnZhbHVl
KCZzdGF0ZSk7Cit9CisKK30gfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9taml0L0RP
TUpJVElETFR5cGUuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbWppdC9ET01KSVRJRExUeXBlLmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNjg5MWZiYzUwZWY0YzJkNzY1NGQ4ZTVkMmJjOGRlYWU5NzZkZjFhYwotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbWppdC9ET01KSVRJRExUeXBlLmgKQEAgLTAs
MCArMSw0NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiSURMVHlw
ZXMuaCIKKyNpbmNsdWRlIDxieXRlY29kZS9TcGVjdWxhdGVkVHlwZS5oPgorCituYW1lc3BhY2Ug
V2ViQ29yZSB7IG5hbWVzcGFjZSBET01KSVQgeworCit0ZW1wbGF0ZTx0eXBlbmFtZSBJRExUeXBl
Pgorc3RydWN0IElETEpTQXJndW1lbnRUeXBlU2VsZWN0OworCit0ZW1wbGF0ZTw+IHN0cnVjdCBJ
RExKU0FyZ3VtZW50VHlwZVNlbGVjdDxJRExCb29sZWFuPiB7IHR5cGVkZWYgYm9vbCB0eXBlOyB9
OwordGVtcGxhdGU8PiBzdHJ1Y3QgSURMSlNBcmd1bWVudFR5cGVTZWxlY3Q8SURMQnl0ZT4geyB0
eXBlZGVmIGludDMyX3QgdHlwZTsgfTsKK3RlbXBsYXRlPD4gc3RydWN0IElETEpTQXJndW1lbnRU
eXBlU2VsZWN0PElETE9jdGV0PiB7IHR5cGVkZWYgaW50MzJfdCB0eXBlOyB9OwordGVtcGxhdGU8
PiBzdHJ1Y3QgSURMSlNBcmd1bWVudFR5cGVTZWxlY3Q8SURMU2hvcnQ+IHsgdHlwZWRlZiBpbnQz
Ml90IHR5cGU7IH07Cit0ZW1wbGF0ZTw+IHN0cnVjdCBJRExKU0FyZ3VtZW50VHlwZVNlbGVjdDxJ
RExVbnNpZ25lZFNob3J0PiB7IHR5cGVkZWYgaW50MzJfdCB0eXBlOyB9OwordGVtcGxhdGU8PiBz
dHJ1Y3QgSURMSlNBcmd1bWVudFR5cGVTZWxlY3Q8SURMTG9uZz4geyB0eXBlZGVmIGludDMyX3Qg
dHlwZTsgfTsKK3RlbXBsYXRlPD4gc3RydWN0IElETEpTQXJndW1lbnRUeXBlU2VsZWN0PElETERP
TVN0cmluZz4geyB0eXBlZGVmIEpTQzo6SlNTdHJpbmcqIHR5cGU7IH07CisKK3RlbXBsYXRlPHR5
cGVuYW1lIElETFR5cGU+Cit1c2luZyBJRExKU0FyZ3VtZW50VHlwZSA9IHR5cGVuYW1lIElETEpT
QXJndW1lbnRUeXBlU2VsZWN0PElETFR5cGU+Ojp0eXBlOworCit9IH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2RvbWppdC9ET01KSVRJRExUeXBlRmlsdGVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9kb21qaXQvRE9NSklUSURMVHlwZUZpbHRlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ1MmQ5OTY3N2MzMmY3
ZWMyYmQ1MjEyMzdhZDBlN2I4ZDRlM2RiOTYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9kb21qaXQvRE9NSklUSURMVHlwZUZpbHRlci5oCkBAIC0wLDAgKzEsNzEgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPGJ5dGVjb2RlL1NwZWN1bGF0ZWRUeXBl
Lmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsgbmFtZXNwYWNlIERPTUpJVCB7CisKK3RlbXBsYXRl
PHR5cGVuYW1lIElETFR5cGU+CitzdHJ1Y3QgSURMQXJndW1lbnRUeXBlRmlsdGVyOworCit0ZW1w
bGF0ZTw+IHN0cnVjdCBJRExBcmd1bWVudFR5cGVGaWx0ZXI8SURMQm9vbGVhbj4geyBzdGF0aWMg
Y29uc3QgY29uc3RleHByIEpTQzo6U3BlY3VsYXRlZFR5cGUgdmFsdWUgPSBKU0M6OlNwZWNCb29s
ZWFuOyB9OwordGVtcGxhdGU8PiBzdHJ1Y3QgSURMQXJndW1lbnRUeXBlRmlsdGVyPElETEJ5dGU+
IHsgc3RhdGljIGNvbnN0IGNvbnN0ZXhwciBKU0M6OlNwZWN1bGF0ZWRUeXBlIHZhbHVlID0gSlND
OjpTcGVjSW50MzJPbmx5OyB9OwordGVtcGxhdGU8PiBzdHJ1Y3QgSURMQXJndW1lbnRUeXBlRmls
dGVyPElETE9jdGV0PiB7IHN0YXRpYyBjb25zdCBjb25zdGV4cHIgSlNDOjpTcGVjdWxhdGVkVHlw
ZSB2YWx1ZSA9IEpTQzo6U3BlY0ludDMyT25seTsgfTsKK3RlbXBsYXRlPD4gc3RydWN0IElETEFy
Z3VtZW50VHlwZUZpbHRlcjxJRExTaG9ydD4geyBzdGF0aWMgY29uc3QgY29uc3RleHByIEpTQzo6
U3BlY3VsYXRlZFR5cGUgdmFsdWUgPSBKU0M6OlNwZWNJbnQzMk9ubHk7IH07Cit0ZW1wbGF0ZTw+
IHN0cnVjdCBJRExBcmd1bWVudFR5cGVGaWx0ZXI8SURMVW5zaWduZWRTaG9ydD4geyBzdGF0aWMg
Y29uc3QgY29uc3RleHByIEpTQzo6U3BlY3VsYXRlZFR5cGUgdmFsdWUgPSBKU0M6OlNwZWNJbnQz
Mk9ubHk7IH07Cit0ZW1wbGF0ZTw+IHN0cnVjdCBJRExBcmd1bWVudFR5cGVGaWx0ZXI8SURMTG9u
Zz4geyBzdGF0aWMgY29uc3QgY29uc3RleHByIEpTQzo6U3BlY3VsYXRlZFR5cGUgdmFsdWUgPSBK
U0M6OlNwZWNJbnQzMk9ubHk7IH07Cit0ZW1wbGF0ZTw+IHN0cnVjdCBJRExBcmd1bWVudFR5cGVG
aWx0ZXI8SURMRE9NU3RyaW5nPiB7IHN0YXRpYyBjb25zdCBjb25zdGV4cHIgSlNDOjpTcGVjdWxh
dGVkVHlwZSB2YWx1ZSA9IEpTQzo6U3BlY1N0cmluZzsgfTsKKwordGVtcGxhdGU8dHlwZW5hbWUg
SURMVHlwZT4KK3N0cnVjdCBJRExSZXN1bHRUeXBlRmlsdGVyIHsKKyAgICBzdGF0aWMgY29uc3Qg
Y29uc3RleHByIEpTQzo6U3BlY3VsYXRlZFR5cGUgdmFsdWUgPSBKU0M6OlNwZWNIZWFwVG9wOwor
fTsKKwordGVtcGxhdGU8PiBzdHJ1Y3QgSURMUmVzdWx0VHlwZUZpbHRlcjxJRExBbnk+IHsgc3Rh
dGljIGNvbnN0IGNvbnN0ZXhwciBKU0M6OlNwZWN1bGF0ZWRUeXBlIHZhbHVlID0gSlNDOjpTcGVj
SGVhcFRvcDsgfTsKK3RlbXBsYXRlPD4gc3RydWN0IElETFJlc3VsdFR5cGVGaWx0ZXI8SURMQm9v
bGVhbj4geyBzdGF0aWMgY29uc3QgY29uc3RleHByIEpTQzo6U3BlY3VsYXRlZFR5cGUgdmFsdWUg
PSBKU0M6OlNwZWNCb29sZWFuOyB9OwordGVtcGxhdGU8PiBzdHJ1Y3QgSURMUmVzdWx0VHlwZUZp
bHRlcjxJRExCeXRlPiB7IHN0YXRpYyBjb25zdCBjb25zdGV4cHIgSlNDOjpTcGVjdWxhdGVkVHlw
ZSB2YWx1ZSA9IEpTQzo6U3BlY0ludDMyT25seTsgfTsKK3RlbXBsYXRlPD4gc3RydWN0IElETFJl
c3VsdFR5cGVGaWx0ZXI8SURMT2N0ZXQ+IHsgc3RhdGljIGNvbnN0IGNvbnN0ZXhwciBKU0M6OlNw
ZWN1bGF0ZWRUeXBlIHZhbHVlID0gSlNDOjpTcGVjSW50MzJPbmx5OyB9OwordGVtcGxhdGU8PiBz
dHJ1Y3QgSURMUmVzdWx0VHlwZUZpbHRlcjxJRExTaG9ydD4geyBzdGF0aWMgY29uc3QgY29uc3Rl
eHByIEpTQzo6U3BlY3VsYXRlZFR5cGUgdmFsdWUgPSBKU0M6OlNwZWNJbnQzMk9ubHk7IH07Cit0
ZW1wbGF0ZTw+IHN0cnVjdCBJRExSZXN1bHRUeXBlRmlsdGVyPElETFVuc2lnbmVkU2hvcnQ+IHsg
c3RhdGljIGNvbnN0IGNvbnN0ZXhwciBKU0M6OlNwZWN1bGF0ZWRUeXBlIHZhbHVlID0gSlNDOjpT
cGVjSW50MzJPbmx5OyB9OwordGVtcGxhdGU8PiBzdHJ1Y3QgSURMUmVzdWx0VHlwZUZpbHRlcjxJ
RExMb25nPiB7IHN0YXRpYyBjb25zdCBjb25zdGV4cHIgSlNDOjpTcGVjdWxhdGVkVHlwZSB2YWx1
ZSA9IEpTQzo6U3BlY0ludDMyT25seTsgfTsKK3RlbXBsYXRlPD4gc3RydWN0IElETFJlc3VsdFR5
cGVGaWx0ZXI8SURMVW5zaWduZWRMb25nPiB7IHN0YXRpYyBjb25zdCBjb25zdGV4cHIgSlNDOjpT
cGVjdWxhdGVkVHlwZSB2YWx1ZSA9IEpTQzo6U3BlY0J5dGVjb2RlTnVtYmVyOyB9OwordGVtcGxh
dGU8PiBzdHJ1Y3QgSURMUmVzdWx0VHlwZUZpbHRlcjxJRExMb25nTG9uZz4geyBzdGF0aWMgY29u
c3QgY29uc3RleHByIEpTQzo6U3BlY3VsYXRlZFR5cGUgdmFsdWUgPSBKU0M6OlNwZWNCeXRlY29k
ZU51bWJlcjsgfTsKK3RlbXBsYXRlPD4gc3RydWN0IElETFJlc3VsdFR5cGVGaWx0ZXI8SURMVW5z
aWduZWRMb25nTG9uZz4geyBzdGF0aWMgY29uc3QgY29uc3RleHByIEpTQzo6U3BlY3VsYXRlZFR5
cGUgdmFsdWUgPSBKU0M6OlNwZWNCeXRlY29kZU51bWJlcjsgfTsKK3RlbXBsYXRlPD4gc3RydWN0
IElETFJlc3VsdFR5cGVGaWx0ZXI8SURMRmxvYXQ+IHsgc3RhdGljIGNvbnN0IGNvbnN0ZXhwciBK
U0M6OlNwZWN1bGF0ZWRUeXBlIHZhbHVlID0gSlNDOjpTcGVjQnl0ZWNvZGVOdW1iZXI7IH07Cit0
ZW1wbGF0ZTw+IHN0cnVjdCBJRExSZXN1bHRUeXBlRmlsdGVyPElETFVucmVzdHJpY3RlZEZsb2F0
PiB7IHN0YXRpYyBjb25zdCBjb25zdGV4cHIgSlNDOjpTcGVjdWxhdGVkVHlwZSB2YWx1ZSA9IEpT
Qzo6U3BlY0J5dGVjb2RlTnVtYmVyOyB9OwordGVtcGxhdGU8PiBzdHJ1Y3QgSURMUmVzdWx0VHlw
ZUZpbHRlcjxJRExEb3VibGU+IHsgc3RhdGljIGNvbnN0IGNvbnN0ZXhwciBKU0M6OlNwZWN1bGF0
ZWRUeXBlIHZhbHVlID0gSlNDOjpTcGVjQnl0ZWNvZGVOdW1iZXI7IH07Cit0ZW1wbGF0ZTw+IHN0
cnVjdCBJRExSZXN1bHRUeXBlRmlsdGVyPElETFVucmVzdHJpY3RlZERvdWJsZT4geyBzdGF0aWMg
Y29uc3QgY29uc3RleHByIEpTQzo6U3BlY3VsYXRlZFR5cGUgdmFsdWUgPSBKU0M6OlNwZWNCeXRl
Y29kZU51bWJlcjsgfTsKK3RlbXBsYXRlPD4gc3RydWN0IElETFJlc3VsdFR5cGVGaWx0ZXI8SURM
RE9NU3RyaW5nPiB7IHN0YXRpYyBjb25zdCBjb25zdGV4cHIgSlNDOjpTcGVjdWxhdGVkVHlwZSB2
YWx1ZSA9IEpTQzo6U3BlY1N0cmluZzsgfTsKK3RlbXBsYXRlPD4gc3RydWN0IElETFJlc3VsdFR5
cGVGaWx0ZXI8SURMQnl0ZVN0cmluZz4geyBzdGF0aWMgY29uc3QgY29uc3RleHByIEpTQzo6U3Bl
Y3VsYXRlZFR5cGUgdmFsdWUgPSBKU0M6OlNwZWNTdHJpbmc7IH07Cit0ZW1wbGF0ZTw+IHN0cnVj
dCBJRExSZXN1bHRUeXBlRmlsdGVyPElETFVTVlN0cmluZz4geyBzdGF0aWMgY29uc3QgY29uc3Rl
eHByIEpTQzo6U3BlY3VsYXRlZFR5cGUgdmFsdWUgPSBKU0M6OlNwZWNTdHJpbmc7IH07CisKK3Rl
bXBsYXRlPHR5cGVuYW1lIFQ+CitzdHJ1Y3QgSURMUmVzdWx0VHlwZUZpbHRlcjxJRExOdWxsYWJs
ZTxUPj4geworICAgIHN0YXRpYyBjb25zdCBjb25zdGV4cHIgSlNDOjpTcGVjdWxhdGVkVHlwZSB2
YWx1ZSA9IEpTQzo6U3BlY090aGVyIHwgSURMUmVzdWx0VHlwZUZpbHRlcjxUPjo6dmFsdWU7Cit9
OworCit9IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbWppdC9KU0RvY3VtZW50RE9N
SklULmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbWppdC9KU0RvY3VtZW50RE9NSklULmNwcAppbmRl
eCA5YjQ4ZDlmZGE1OGE2MmQwN2ZiMjNhYWI0NTZiZjk0YjdlZDhmYzJmLi5iYmZlZTdkYzRiYjc4
MmU3M2NmMjdjOTc3YmMxODI5NGE1OTRiNmQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9k
b21qaXQvSlNEb2N1bWVudERPTUpJVC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9taml0L0pT
RG9jdW1lbnRET01KSVQuY3BwCkBAIC00OCw3ICs0OCw2IEBAIFJlZjxKU0M6OkRPTUpJVDo6UGF0
Y2hwb2ludD4gRG9jdW1lbnREb2N1bWVudEVsZW1lbnRET01KSVQ6OmNoZWNrRE9NKCkKIAogUmVm
PEpTQzo6RE9NSklUOjpDYWxsRE9NR2V0dGVyUGF0Y2hwb2ludD4gRG9jdW1lbnREb2N1bWVudEVs
ZW1lbnRET01KSVQ6OmNhbGxET01HZXR0ZXIoKQogewotICAgIGNvbnN0IGF1dG8mIGhlYXAgPSBE
T01KSVQ6OkFic3RyYWN0SGVhcFJlcG9zaXRvcnk6OnNoYXJlZCgpOwogICAgIFJlZjxKU0M6OkRP
TUpJVDo6Q2FsbERPTUdldHRlclBhdGNocG9pbnQ+IHBhdGNocG9pbnQgPSBKU0M6OkRPTUpJVDo6
Q2FsbERPTUdldHRlclBhdGNocG9pbnQ6OmNyZWF0ZSgpOwogICAgIHBhdGNocG9pbnQtPm51bUdQ
U2NyYXRjaFJlZ2lzdGVycyA9IDE7CiAgICAgcGF0Y2hwb2ludC0+c2V0R2VuZXJhdG9yKFs9XShD
Q2FsbEhlbHBlcnMmIGppdCwgSlNDOjpET01KSVQ6OlBhdGNocG9pbnRQYXJhbXMmIHBhcmFtcykg
ewpAQCAtNzAsNyArNjksNyBAQCBSZWY8SlNDOjpET01KSVQ6OkNhbGxET01HZXR0ZXJQYXRjaHBv
aW50PiBEb2N1bWVudERvY3VtZW50RWxlbWVudERPTUpJVDo6Y2FsbERPTQogCiAgICAgICAgIHJl
dHVybiBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0KCk7CiAgICAgfSk7Ci0gICAgcGF0Y2hwb2ludC0+
ZWZmZWN0ID0gSlNDOjpET01KSVQ6OkVmZmVjdDo6Zm9yRGVmKGhlYXAuRG9jdW1lbnRfZG9jdW1l
bnRFbGVtZW50KTsKKyAgICBwYXRjaHBvaW50LT5lZmZlY3QgPSBKU0M6OkRPTUpJVDo6RWZmZWN0
Ojpmb3JEZWYoRE9NSklUOjpBYnN0cmFjdEhlYXBSZXBvc2l0b3J5OjpEb2N1bWVudF9kb2N1bWVu
dEVsZW1lbnQpOwogICAgIHJldHVybiBwYXRjaHBvaW50OwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9kb21qaXQvSlNOb2RlRE9NSklULmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbWpp
dC9KU05vZGVET01KSVQuY3BwCmluZGV4IDFkNzkwMWVjNDFkN2FjZWYxZDBkNzhmNjEzMjZmYmU4
YTEzYTkxYmYuLmRiMzEwZWEzNDUyODQ5MTQyNDI4ZDNkNjE2ZjgxYjJjNjdjNTE2NTUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbWppdC9KU05vZGVET01KSVQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbWppdC9KU05vZGVET01KSVQuY3BwCkBAIC04Myw5ICs4Myw4IEBAIFJlZjxK
U0M6OkRPTUpJVDo6UGF0Y2hwb2ludD4gTm9kZUZpcnN0Q2hpbGRET01KSVQ6OmNoZWNrRE9NKCkK
IAogUmVmPEpTQzo6RE9NSklUOjpDYWxsRE9NR2V0dGVyUGF0Y2hwb2ludD4gTm9kZUZpcnN0Q2hp
bGRET01KSVQ6OmNhbGxET01HZXR0ZXIoKQogewotICAgIGNvbnN0IGF1dG8mIGhlYXAgPSBET01K
SVQ6OkFic3RyYWN0SGVhcFJlcG9zaXRvcnk6OnNoYXJlZCgpOwogICAgIGF1dG8gcGF0Y2hwb2lu
dCA9IGNyZWF0ZUNhbGxET01HZXR0ZXJGb3JPZmZzZXRBY2Nlc3M8Tm9kZT4oQ0FTVF9PRkZTRVQo
Tm9kZSosIENvbnRhaW5lck5vZGUqKSArIENvbnRhaW5lck5vZGU6OmZpcnN0Q2hpbGRNZW1vcnlP
ZmZzZXQoKSwgSXNDb250YWluZXJHdWFyZFJlcXVpcmVtZW50OjpSZXF1aXJlZCk7Ci0gICAgcGF0
Y2hwb2ludC0+ZWZmZWN0ID0gSlNDOjpET01KSVQ6OkVmZmVjdDo6Zm9yRGVmKGhlYXAuTm9kZV9m
aXJzdENoaWxkKTsKKyAgICBwYXRjaHBvaW50LT5lZmZlY3QgPSBKU0M6OkRPTUpJVDo6RWZmZWN0
Ojpmb3JEZWYoRE9NSklUOjpBYnN0cmFjdEhlYXBSZXBvc2l0b3J5OjpOb2RlX2ZpcnN0Q2hpbGQp
OwogICAgIHJldHVybiBwYXRjaHBvaW50OwogfQogCkBAIC05Niw5ICs5NSw4IEBAIFJlZjxKU0M6
OkRPTUpJVDo6UGF0Y2hwb2ludD4gTm9kZUxhc3RDaGlsZERPTUpJVDo6Y2hlY2tET00oKQogCiBS
ZWY8SlNDOjpET01KSVQ6OkNhbGxET01HZXR0ZXJQYXRjaHBvaW50PiBOb2RlTGFzdENoaWxkRE9N
SklUOjpjYWxsRE9NR2V0dGVyKCkKIHsKLSAgICBjb25zdCBhdXRvJiBoZWFwID0gRE9NSklUOjpB
YnN0cmFjdEhlYXBSZXBvc2l0b3J5OjpzaGFyZWQoKTsKICAgICBhdXRvIHBhdGNocG9pbnQgPSBj
cmVhdGVDYWxsRE9NR2V0dGVyRm9yT2Zmc2V0QWNjZXNzPE5vZGU+KENBU1RfT0ZGU0VUKE5vZGUq
LCBDb250YWluZXJOb2RlKikgKyBDb250YWluZXJOb2RlOjpsYXN0Q2hpbGRNZW1vcnlPZmZzZXQo
KSwgSXNDb250YWluZXJHdWFyZFJlcXVpcmVtZW50OjpSZXF1aXJlZCk7Ci0gICAgcGF0Y2hwb2lu
dC0+ZWZmZWN0ID0gSlNDOjpET01KSVQ6OkVmZmVjdDo6Zm9yRGVmKGhlYXAuTm9kZV9sYXN0Q2hp
bGQpOworICAgIHBhdGNocG9pbnQtPmVmZmVjdCA9IEpTQzo6RE9NSklUOjpFZmZlY3Q6OmZvckRl
ZihET01KSVQ6OkFic3RyYWN0SGVhcFJlcG9zaXRvcnk6Ok5vZGVfbGFzdENoaWxkKTsKICAgICBy
ZXR1cm4gcGF0Y2hwb2ludDsKIH0KIApAQCAtMTA5LDkgKzEwNyw4IEBAIFJlZjxKU0M6OkRPTUpJ
VDo6UGF0Y2hwb2ludD4gTm9kZU5leHRTaWJsaW5nRE9NSklUOjpjaGVja0RPTSgpCiAKIFJlZjxK
U0M6OkRPTUpJVDo6Q2FsbERPTUdldHRlclBhdGNocG9pbnQ+IE5vZGVOZXh0U2libGluZ0RPTUpJ
VDo6Y2FsbERPTUdldHRlcigpCiB7Ci0gICAgY29uc3QgYXV0byYgaGVhcCA9IERPTUpJVDo6QWJz
dHJhY3RIZWFwUmVwb3NpdG9yeTo6c2hhcmVkKCk7CiAgICAgYXV0byBwYXRjaHBvaW50ID0gY3Jl
YXRlQ2FsbERPTUdldHRlckZvck9mZnNldEFjY2VzczxOb2RlPihOb2RlOjpuZXh0U2libGluZ01l
bW9yeU9mZnNldCgpLCBJc0NvbnRhaW5lckd1YXJkUmVxdWlyZW1lbnQ6Ok5vdFJlcXVpcmVkKTsK
LSAgICBwYXRjaHBvaW50LT5lZmZlY3QgPSBKU0M6OkRPTUpJVDo6RWZmZWN0Ojpmb3JEZWYoaGVh
cC5Ob2RlX25leHRTaWJsaW5nKTsKKyAgICBwYXRjaHBvaW50LT5lZmZlY3QgPSBKU0M6OkRPTUpJ
VDo6RWZmZWN0Ojpmb3JEZWYoRE9NSklUOjpBYnN0cmFjdEhlYXBSZXBvc2l0b3J5OjpOb2RlX25l
eHRTaWJsaW5nKTsKICAgICByZXR1cm4gcGF0Y2hwb2ludDsKIH0KIApAQCAtMTIyLDkgKzExOSw4
IEBAIFJlZjxKU0M6OkRPTUpJVDo6UGF0Y2hwb2ludD4gTm9kZVByZXZpb3VzU2libGluZ0RPTUpJ
VDo6Y2hlY2tET00oKQogCiBSZWY8SlNDOjpET01KSVQ6OkNhbGxET01HZXR0ZXJQYXRjaHBvaW50
PiBOb2RlUHJldmlvdXNTaWJsaW5nRE9NSklUOjpjYWxsRE9NR2V0dGVyKCkKIHsKLSAgICBjb25z
dCBhdXRvJiBoZWFwID0gRE9NSklUOjpBYnN0cmFjdEhlYXBSZXBvc2l0b3J5OjpzaGFyZWQoKTsK
ICAgICBhdXRvIHBhdGNocG9pbnQgPSBjcmVhdGVDYWxsRE9NR2V0dGVyRm9yT2Zmc2V0QWNjZXNz
PE5vZGU+KE5vZGU6OnByZXZpb3VzU2libGluZ01lbW9yeU9mZnNldCgpLCBJc0NvbnRhaW5lckd1
YXJkUmVxdWlyZW1lbnQ6Ok5vdFJlcXVpcmVkKTsKLSAgICBwYXRjaHBvaW50LT5lZmZlY3QgPSBK
U0M6OkRPTUpJVDo6RWZmZWN0Ojpmb3JEZWYoaGVhcC5Ob2RlX3ByZXZpb3VzU2libGluZyk7Cisg
ICAgcGF0Y2hwb2ludC0+ZWZmZWN0ID0gSlNDOjpET01KSVQ6OkVmZmVjdDo6Zm9yRGVmKERPTUpJ
VDo6QWJzdHJhY3RIZWFwUmVwb3NpdG9yeTo6Tm9kZV9wcmV2aW91c1NpYmxpbmcpOwogICAgIHJl
dHVybiBwYXRjaHBvaW50OwogfQogCkBAIC0xMzUsOSArMTMxLDggQEAgUmVmPEpTQzo6RE9NSklU
OjpQYXRjaHBvaW50PiBOb2RlUGFyZW50Tm9kZURPTUpJVDo6Y2hlY2tET00oKQogCiBSZWY8SlND
OjpET01KSVQ6OkNhbGxET01HZXR0ZXJQYXRjaHBvaW50PiBOb2RlUGFyZW50Tm9kZURPTUpJVDo6
Y2FsbERPTUdldHRlcigpCiB7Ci0gICAgY29uc3QgYXV0byYgaGVhcCA9IERPTUpJVDo6QWJzdHJh
Y3RIZWFwUmVwb3NpdG9yeTo6c2hhcmVkKCk7CiAgICAgYXV0byBwYXRjaHBvaW50ID0gY3JlYXRl
Q2FsbERPTUdldHRlckZvck9mZnNldEFjY2VzczxDb250YWluZXJOb2RlPihOb2RlOjpwYXJlbnRO
b2RlTWVtb3J5T2Zmc2V0KCksIElzQ29udGFpbmVyR3VhcmRSZXF1aXJlbWVudDo6Tm90UmVxdWly
ZWQpOwotICAgIHBhdGNocG9pbnQtPmVmZmVjdCA9IEpTQzo6RE9NSklUOjpFZmZlY3Q6OmZvckRl
ZihoZWFwLk5vZGVfcGFyZW50Tm9kZSk7CisgICAgcGF0Y2hwb2ludC0+ZWZmZWN0ID0gSlNDOjpE
T01KSVQ6OkVmZmVjdDo6Zm9yRGVmKERPTUpJVDo6QWJzdHJhY3RIZWFwUmVwb3NpdG9yeTo6Tm9k
ZV9wYXJlbnROb2RlKTsKICAgICByZXR1cm4gcGF0Y2hwb2ludDsKIH0KIApAQCAtMTY5LDcgKzE2
NCw2IEBAIFJlZjxKU0M6OkRPTUpJVDo6UGF0Y2hwb2ludD4gTm9kZU93bmVyRG9jdW1lbnRET01K
SVQ6OmNoZWNrRE9NKCkKIAogUmVmPEpTQzo6RE9NSklUOjpDYWxsRE9NR2V0dGVyUGF0Y2hwb2lu
dD4gTm9kZU93bmVyRG9jdW1lbnRET01KSVQ6OmNhbGxET01HZXR0ZXIoKQogewotICAgIGNvbnN0
IGF1dG8mIGhlYXAgPSBET01KSVQ6OkFic3RyYWN0SGVhcFJlcG9zaXRvcnk6OnNoYXJlZCgpOwog
ICAgIFJlZjxKU0M6OkRPTUpJVDo6Q2FsbERPTUdldHRlclBhdGNocG9pbnQ+IHBhdGNocG9pbnQg
PSBKU0M6OkRPTUpJVDo6Q2FsbERPTUdldHRlclBhdGNocG9pbnQ6OmNyZWF0ZSgpOwogICAgIHBh
dGNocG9pbnQtPm51bUdQU2NyYXRjaFJlZ2lzdGVycyA9IDE7CiAgICAgcGF0Y2hwb2ludC0+c2V0
R2VuZXJhdG9yKFs9XShDQ2FsbEhlbHBlcnMmIGppdCwgSlNDOjpET01KSVQ6OlBhdGNocG9pbnRQ
YXJhbXMmIHBhcmFtcykgewpAQCAtMTkxLDcgKzE4NSw3IEBAIFJlZjxKU0M6OkRPTUpJVDo6Q2Fs
bERPTUdldHRlclBhdGNocG9pbnQ+IE5vZGVPd25lckRvY3VtZW50RE9NSklUOjpjYWxsRE9NR2V0
dGVyCiAgICAgICAgIGRvbmUubGluaygmaml0KTsKICAgICAgICAgcmV0dXJuIENDYWxsSGVscGVy
czo6SnVtcExpc3QoKTsKICAgICB9KTsKLSAgICBwYXRjaHBvaW50LT5lZmZlY3QgPSBKU0M6OkRP
TUpJVDo6RWZmZWN0Ojpmb3JEZWYoaGVhcC5Ob2RlX293bmVyRG9jdW1lbnQpOworICAgIHBhdGNo
cG9pbnQtPmVmZmVjdCA9IEpTQzo6RE9NSklUOjpFZmZlY3Q6OmZvckRlZihET01KSVQ6OkFic3Ry
YWN0SGVhcFJlcG9zaXRvcnk6Ok5vZGVfb3duZXJEb2N1bWVudCk7CiAgICAgcmV0dXJuIHBhdGNo
cG9pbnQ7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbWppdC9nZW5lcmF0ZS1h
YnN0cmFjdC1oZWFwLnJiIGIvU291cmNlL1dlYkNvcmUvZG9taml0L2dlbmVyYXRlLWFic3RyYWN0
LWhlYXAucmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uYjc0MTJlODVkNjlmNDkxYTJlYWFiYWE2MTc4ZjFiMjVhMDJk
MDliNAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbWppdC9nZW5lcmF0ZS1h
YnN0cmFjdC1oZWFwLnJiCkBAIC0wLDAgKzEsMTY1IEBACisjIS91c3IvYmluL2VudiBydWJ5Cisj
IC0qLSBjb2Rpbmc6IHV0Zi04IC0qLQorIyBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBt
ZXQ6CisjIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisjIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
IyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisjIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworIyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisjIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisjIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworIyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorIyBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorIyBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisjIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKworcmVxdWlyZSAieWFtbCIKKworY2xhc3MgSGVhcFJhbmdlCisgICAgYXR0cl9yZWFkZXIg
OmZpcnN0LCA6bGFzdAorICAgIGRlZiBpbml0aWFsaXplKGZpcnN0LCBsYXN0KQorICAgICAgICBA
Zmlyc3QgPSBmaXJzdAorICAgICAgICBAbGFzdCA9IGxhc3QKKyAgICBlbmQKK2VuZAorCitjbGFz
cyBBYnN0cmFjdEhlYXAKKyAgICBhdHRyX3JlYWRlciA6cmFuZ2UsIDpuYW1lLCA6cGFyZW50Cisg
ICAgZGVmIGluaXRpYWxpemUobmFtZSwgdHJlZSkKKyAgICAgICAgQG5hbWUgPSBuYW1lCisgICAg
ICAgIEBwYXJlbnQgPSBuaWwKKyAgICAgICAgaWYgdHJlZS5uaWw/CisgICAgICAgICAgICBAY2hp
bGRyZW4gPSBbXQorICAgICAgICBlbHNlCisgICAgICAgICAgICBAY2hpbGRyZW4gPSB0cmVlLm1h
cCB7fGtleSwgdmFsdWV8IEFic3RyYWN0SGVhcC5uZXcoa2V5LCB2YWx1ZSkgfQorICAgICAgICBl
bmQKKyAgICAgICAgQHJhbmdlID0gbmlsCisgICAgZW5kCisKKyAgICBkZWYgc2V0UGFyZW50KHBh
cmVudCkKKyAgICAgICAgcGFyZW50LmNoaWxkcmVuLnB1c2goc2VsZikKKyAgICAgICAgQHBhcmVu
dCA9IHBhcmVudAorICAgIGVuZAorCisgICAgZGVmIGNvbXB1dGUoc3RhcnQpCisgICAgICAgIGN1
cnJlbnQgPSBzdGFydAorICAgICAgICBpZiBAY2hpbGRyZW4uZW1wdHk/CisgICAgICAgICAgICBA
cmFuZ2UgPSBIZWFwUmFuZ2UubmV3KHN0YXJ0LCBjdXJyZW50ICsgMSkKKyAgICAgICAgICAgIHJl
dHVybgorICAgICAgICBlbmQKKworICAgICAgICBAY2hpbGRyZW4uZWFjaCB7fGNoaWxkfAorICAg
ICAgICAgICAgY2hpbGQuY29tcHV0ZShjdXJyZW50KQorICAgICAgICAgICAgY3VycmVudCA9IGNo
aWxkLnJhbmdlLmxhc3QKKyAgICAgICAgfQorCisgICAgICAgIEByYW5nZSA9IEhlYXBSYW5nZS5u
ZXcoc3RhcnQsIGN1cnJlbnQpCisgICAgZW5kCisKKyAgICBkZWYgZHVtcCBvdXRwdXQKKyAgICAg
ICAgc2hhbGxvd0R1bXAob3V0cHV0KQorICAgICAgICBpZiBAcGFyZW50CisgICAgICAgICAgICBv
dXRwdXQucHJpbnQgIi0+ICIKKyAgICAgICAgICAgIEBwYXJlbnQuZHVtcChvdXRwdXQpCisgICAg
ICAgIGVuZAorICAgIGVuZAorCisgICAgZGVmIHNoYWxsb3dEdW1wKG91dHB1dCkKKyAgICAgICAg
b3V0cHV0LnByaW50ICIje0BuYW1lfTwje0ByYW5nZS5maXJzdH0sI3tAcmFuZ2UubGFzdH0+Igor
ICAgIGVuZAorCisgICAgZGVmIGRlZXBEdW1wIG91dHB1dCwgaW5kZW50CisgICAgICAgIHByaW50
SW5kZW50KG91dHB1dCwgaW5kZW50KQorICAgICAgICBzaGFsbG93RHVtcChvdXRwdXQpCisgICAg
ICAgIGlmIEBjaGlsZHJlbi5lbXB0eT8KKyAgICAgICAgICAgIG91dHB1dC5wcmludCAiXG4iCisg
ICAgICAgICAgICByZXR1cm4KKyAgICAgICAgZW5kCisKKyAgICAgICAgb3V0cHV0LnByaW50ICI6
XG4iCisgICAgICAgIEBjaGlsZHJlbi5lYWNoIHt8Y2hpbGR8CisgICAgICAgICAgICBjaGlsZC5k
ZWVwRHVtcChvdXRwdXQsIGluZGVudCArIDEpCisgICAgICAgIH0KKyAgICBlbmQKKworICAgIGRl
ZiBnZW5lcmF0ZSBvdXRwdXQKKyAgICAgICAgb3V0cHV0LnB1dHMgImNvbnN0ZXhwciBKU0M6OkRP
TUpJVDo6SGVhcFJhbmdlICN7QG5hbWV9KEpTQzo6RE9NSklUOjpIZWFwUmFuZ2U6OkNvbnN0RXhw
ciwgI3tAcmFuZ2UuZmlyc3R9LCAje0ByYW5nZS5sYXN0fSk7IgorICAgICAgICBAY2hpbGRyZW4u
ZWFjaCB7fGNoaWxkfAorICAgICAgICAgICAgY2hpbGQuZ2VuZXJhdGUob3V0cHV0KQorICAgICAg
ICB9CisgICAgZW5kCisKK3ByaXZhdGUKKyAgICBkZWYgcHJpbnRJbmRlbnQgb3V0cHV0LCBpbmRl
bnQKKyAgICAgICAgaW5kZW50LnRpbWVzIHsKKyAgICAgICAgICAgIG91dHB1dC5wcmludCAiICAg
ICIKKyAgICAgICAgfQorICAgIGVuZAorZW5kCisKK2hlYWRlciA9IDw8LUVPUworLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
CisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisvLyBBdXRvLWdlbmVyYXRlZCBmaWxl
LiBEbyBub3QgbW9kaWZ5LgorCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPGRvbWppdC9ET01K
SVRIZWFwUmFuZ2UuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeyBuYW1lc3BhY2UgRE9NSklUIHsg
bmFtZXNwYWNlIEFic3RyYWN0SGVhcFJlcG9zaXRvcnkgeworRU9TCisKK2Zvb3RlciA9IDw8LUVP
UworfSB9IH0KK0VPUworCiskaW5wdXRGaWxlTmFtZSA9IEFSR1Yuc2hpZnQKKyRvdXRwdXRGaWxl
TmFtZSA9IEFSR1Yuc2hpZnQKK0ZpbGUub3Blbigkb3V0cHV0RmlsZU5hbWUsICJ3Iikge3xvdXRw
dXR8CisgICAgRmlsZS5vcGVuKCRpbnB1dEZpbGVOYW1lLCAicmIiKSB7fGZpbGV8CisgICAgICAg
IHRyZWUgPSBZQU1MOjpsb2FkKGZpbGUucmVhZCgpKQorICAgICAgICBoZWFwID0gdHJlZS5tYXAg
e3xrZXksIHZhbHVlfAorICAgICAgICAgICAgQWJzdHJhY3RIZWFwLm5ldyhrZXksIHZhbHVlKQor
ICAgICAgICB9LmZpcnN0CisgICAgICAgIGhlYXAuY29tcHV0ZSgwKQorCisgICAgICAgIG91dHB1
dC5wcmludChoZWFkZXIpCisgICAgICAgIG91dHB1dC5wdXRzKCIvKiBET01KSVQgQWJzdHJhY3Qg
SGVhcCBUcmVlLiIpCisgICAgICAgIGhlYXAuZGVlcER1bXAob3V0cHV0LCAwKQorICAgICAgICBv
dXRwdXQucHV0cygiKi8iKQorICAgICAgICBoZWFwLmdlbmVyYXRlKG91dHB1dCkKKyAgICAgICAg
b3V0cHV0LnByaW50KGZvb3RlcikKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNDdiZGFiNDE0OGUyZWIyZTA4
NDQ5ZmQ4YzI3NTljYzZkYjhmM2NmYS4uMDIxZmU4NmUyMTE2NWY2NWQ1OTdlYjdjYzBiZDNkZDJh
NjdlYWFlYiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRl
c3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDE2LTExLTAyICBZdXN1a2UgU3V6dWtp
ICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgorCisgICAgICAgIFtET01KSVRdIEFkZCBET01KSVQ6
OlNpZ25hdHVyZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTYyOTgwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBqcy9kb20vZG9taml0LWFjY2Vzc29yLWxpY20uaHRtbDoKKyAgICAgICAgKiBqcy9kb20v
ZG9taml0LWZ1bmN0aW9uLWVmZmVjdC1zaG91bGQtb3ZlcmxhcC13aXRoLWNhbGwtZXhwZWN0ZWQu
dHh0OiBBZGRlZC4KKyAgICAgICAgKiBqcy9kb20vZG9taml0LWZ1bmN0aW9uLWVmZmVjdC1zaG91
bGQtb3ZlcmxhcC13aXRoLWNhbGwuaHRtbDogQWRkZWQuCisgICAgICAgICoganMvZG9tL2RvbWpp
dC1mdW5jdGlvbi1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGpzL2RvbS9kb21qaXQt
ZnVuY3Rpb24tbGljbS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGpzL2RvbS9kb21q
aXQtZnVuY3Rpb24tbGljbS5odG1sOiBDb3BpZWQgZnJvbSBMYXlvdXRUZXN0cy9qcy9kb20vZG9t
aml0LWFjY2Vzc29yLWxpY20uaHRtbC4KKyAgICAgICAgKiBqcy9kb20vZG9taml0LWZ1bmN0aW9u
LXR5cGUtY29udHJhZGljdGlvbi1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGpzL2Rv
bS9kb21qaXQtZnVuY3Rpb24tdHlwZS1jb250cmFkaWN0aW9uLmh0bWw6IENvcGllZCBmcm9tIExh
eW91dFRlc3RzL2pzL2RvbS9kb21qaXQtYWNjZXNzb3ItbGljbS5odG1sLgorICAgICAgICAqIGpz
L2RvbS9kb21qaXQtZnVuY3Rpb24tdHlwZS1mYWlsdXJlLWV4cGVjdGVkLnR4dDogQWRkZWQuCisg
ICAgICAgICoganMvZG9tL2RvbWppdC1mdW5jdGlvbi10eXBlLWZhaWx1cmUuaHRtbDogQ29waWVk
IGZyb20gTGF5b3V0VGVzdHMvanMvZG9tL2RvbWppdC1hY2Nlc3Nvci1saWNtLmh0bWwuCisgICAg
ICAgICoganMvZG9tL2RvbWppdC1mdW5jdGlvbi5odG1sOiBBZGRlZC4KKwogMjAxNi0xMS0wMSAg
QnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CiAKICAgICAgICAgSW5kZXhlZERCIDIu
MDogU3VwcG9ydCBJREJJbmRleCBnZXRBbGwvZ2V0QWxsS2V5cy4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2pzL2RvbS9kb21qaXQtYWNjZXNzb3ItbGljbS5odG1sIGIvTGF5b3V0VGVzdHMvanMv
ZG9tL2RvbWppdC1hY2Nlc3Nvci1saWNtLmh0bWwKaW5kZXggZTU2M2ViYTg5ZmZjZGEyOTFiNTI0
ZGNkZjc1MGUyYTMwNmFlMzIwNS4uNDBkNTU2MGRhMDUzOWNiZjA4NGE5ZTFkMWVmM2ZlM2YxZGMz
NTQ0ZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvanMvZG9tL2RvbWppdC1hY2Nlc3Nvci1saWNt
Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvanMvZG9tL2RvbWppdC1hY2Nlc3Nvci1saWNtLmh0bWwK
QEAgLTEsMTQgKzEsMyBAQAotPCFET0NUWVBFIEhUTUw+Ci08aHRtbCBsYW5nPSJlbiI+Ci08aGVh
ZD4KLTxtZXRhIGNoYXJzZXQ9IlVURi04Ij4KLTwvaGVhZD4KLTxib2R5PgotPHNjcmlwdD4KLQot
PC9zY3JpcHQ+Ci08L2JvZHk+Ci08L2h0bWw+CiA8IURPQ1RZUEUgaHRtbD4KIDxodG1sPgogPGhl
YWQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9kb20vZG9taml0LWZ1bmN0aW9uLWVmZmVj
dC1zaG91bGQtb3ZlcmxhcC13aXRoLWNhbGwtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvanMv
ZG9tL2RvbWppdC1mdW5jdGlvbi1lZmZlY3Qtc2hvdWxkLW92ZXJsYXAtd2l0aC1jYWxsLWV4cGVj
dGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4xMWRjMTk2YTMyZTI4OGMxMmY1MTQ1NjFjZmMyMTRkMjllYjlj
ODE3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMvZG9tL2RvbWppdC1mdW5jdGlv
bi1lZmZlY3Qtc2hvdWxkLW92ZXJsYXAtd2l0aC1jYWxsLWV4cGVjdGVkLnR4dApAQCAtMCwwICsx
LDEwIEBACitUZXN0IGZ1bmN0aW9uIGNhbGxzIHNob3VsZCBvdmVybGFwIHdpdGggZWZmZWN0cyBv
ZiBET01KSVQgZnVuY3Rpb25zLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMg
b2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFT
UyB0ZXN0KCkgaXMgdHJ1ZQorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNU
IENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL2RvbS9kb21qaXQtZnVuY3Rp
b24tZWZmZWN0LXNob3VsZC1vdmVybGFwLXdpdGgtY2FsbC5odG1sIGIvTGF5b3V0VGVzdHMvanMv
ZG9tL2RvbWppdC1mdW5jdGlvbi1lZmZlY3Qtc2hvdWxkLW92ZXJsYXAtd2l0aC1jYWxsLmh0bWwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uMjhjYjM5MmIyOTQxYmJiOGQzMzFhNzkzMzFkNThjM2ZhNTgzMDVlNQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2pzL2RvbS9kb21qaXQtZnVuY3Rpb24tZWZmZWN0
LXNob3VsZC1vdmVybGFwLXdpdGgtY2FsbC5odG1sCkBAIC0wLDAgKzEsMzMgQEAKKzwhRE9DVFlQ
RSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMt
dGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJ0YXJnZXQi
PjwvZGl2PgorPC9kaXY+CisKKzxzY3JpcHQ+CitkZXNjcmlwdGlvbignVGVzdCBmdW5jdGlvbiBj
YWxscyBzaG91bGQgb3ZlcmxhcCB3aXRoIGVmZmVjdHMgb2YgRE9NSklUIGZ1bmN0aW9ucy4nKTsK
KworZnVuY3Rpb24gdGVzdCgpCit7CisgICAgdmFyIHRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCd0YXJnZXQnKTsKKyAgICB0YXJnZXQuc2V0QXR0cmlidXRlKCJjb2NvYSIsICIwIik7
CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxZTQ7ICsraSkgeworICAgICAgICB2YXIgcmV0ID0g
dGFyZ2V0LmdldEF0dHJpYnV0ZSgiY29jb2EiKTsKKyAgICAgICAgaWYgKHJldCAhPT0gU3RyaW5n
KGkpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB0YXJnZXQuc2V0QXR0cmli
dXRlKCJjb2NvYSIsIFN0cmluZyhpICsgMSkpOworICAgICAgICB2YXIgcmV0ID0gdGFyZ2V0Lmdl
dEF0dHJpYnV0ZSgiY29jb2EiKTsKKyAgICAgICAgaWYgKHJldCA9PT0gU3RyaW5nKGkpKQorICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsKK30KKworc2hv
dWxkQmVUcnVlKGB0ZXN0KClgKTsKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291
cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvanMvZG9tL2RvbWppdC1mdW5jdGlvbi1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy9qcy9kb20vZG9taml0LWZ1bmN0aW9uLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li40NWU1NmViZGNkOWY2ZjE4NmM0N2NlNzY4YzE1YzIyNWViZTJkMGM3Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvanMvZG9tL2RvbWppdC1mdW5jdGlvbi1leHBlY3RlZC50eHQKQEAg
LTAsMCArMSwxMCBAQAorVGVzdCBET01KSVQgZnVuY3Rpb25zIHdvcmsuCisKK09uIHN1Y2Nlc3Ms
IHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJU
RVNUIENPTVBMRVRFIi4KKworCitQQVNTIEFsbCB0ZXN0cyBwYXNzZWQuCitQQVNTIHN1Y2Nlc3Nm
dWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvanMvZG9tL2RvbWppdC1mdW5jdGlvbi1saWNtLWV4cGVjdGVkLnR4dCBiL0xheW91dFRl
c3RzL2pzL2RvbS9kb21qaXQtZnVuY3Rpb24tbGljbS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
ZjEzYzAzMzA1OTY2MmU1NThiYzZmYjlkNzM5YWIzN2U3OTYxYzhmYgotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2pzL2RvbS9kb21qaXQtZnVuY3Rpb24tbGljbS1leHBlY3RlZC50eHQK
QEAgLTAsMCArMSw4IEBACitUZXN0IERPTUpJVCBmdW5jdGlvbiB3aWxsIGJlIExJQ00tZWQuCisK
K09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZv
bGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMg
dHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL2RvbS9k
b21qaXQtZnVuY3Rpb24tbGljbS5odG1sIGIvTGF5b3V0VGVzdHMvanMvZG9tL2RvbWppdC1mdW5j
dGlvbi1saWNtLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWYyZTM5OWRkMzU5ZTFjNGZjYjRkZmRlMmJhY2U5
ZTFhMGQ0NGQzOQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2pzL2RvbS9kb21qaXQt
ZnVuY3Rpb24tbGljbS5odG1sCkBAIC0wLDAgKzEsMzUgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0
bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMi
Pjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+
Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKworPGRpdiBpZD0icGFyZW50Tm9kZSI+Cis8ZGl2
IGlkPSJwcmV2aW91c1NpYmxpbmciPjwvZGl2PjxkaXYgaWQ9InRhcmdldCI+PGRpdiBpZD0iZmly
c3RDaGlsZCI+PC9kaXY+PGRpdiBpZD0ibGFzdENoaWxkIj48L2Rpdj48L2Rpdj48ZGl2IGlkPSJu
ZXh0U2libGluZyI+PC9kaXY+Cis8L2Rpdj4KKworPHNjcmlwdD4KK2Rlc2NyaXB0aW9uKCdUZXN0
IERPTUpJVCBmdW5jdGlvbiB3aWxsIGJlIExJQ00tZWQuJyk7CisKK2Z1bmN0aW9uIHRlc3QoKSB7
CisgICAgdmFyIGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOworICAgIHZhciBy
ZXQgPSAiaW52YWxpZCI7CisgICAgZGl2LnNldEF0dHJpYnV0ZSgiY29jb2EiLCAiQ29jb2EiKTsK
KyAgICBmb3IgKHZhciBpID0gMDsgaSA8IDFlNDsgKytpKQorICAgICAgICByZXQgPSBkaXYuZ2V0
QXR0cmlidXRlKCJjb2NvYSIpOworICAgIHJldHVybiByZXQ7Cit9Cit2YXIgcmVzdWx0OworKGZ1
bmN0aW9uICgpIHsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IDEwMDsgKytpKSB7CisgICAgICAg
IHJlc3VsdCA9IHRlc3QoKTsKKyAgICAgICAgc2hvdWxkQmUoYHJlc3VsdGAsIGAiQ29jb2EiYCwg
dHJ1ZSk7CisgICAgfQorfSgpKTsKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291
cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvanMvZG9tL2RvbWppdC1mdW5jdGlvbi10eXBlLWNvbnRyYWRpY3Rp
b24tZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvanMvZG9tL2RvbWppdC1mdW5jdGlvbi10eXBl
LWNvbnRyYWRpY3Rpb24tZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNkNjg3N2Q0YTgwMDY4OGIy
MTY3N2JlZmFmZmVlZmZkOGFiMGI3OTYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9q
cy9kb20vZG9taml0LWZ1bmN0aW9uLXR5cGUtY29udHJhZGljdGlvbi1leHBlY3RlZC50eHQKQEAg
LTAsMCArMSw4IEBACitUZXN0IERPTUpJVCBmdW5jdGlvbiB3aWxsIGNhdXNlIHR5cGUgY29udHJh
ZGljdGlvbiBnaXZpbmcgdXAuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBv
ZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworUEFTUyBz
dWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2pzL2RvbS9kb21qaXQtZnVuY3Rpb24tdHlwZS1jb250cmFkaWN0aW9uLmh0
bWwgYi9MYXlvdXRUZXN0cy9qcy9kb20vZG9taml0LWZ1bmN0aW9uLXR5cGUtY29udHJhZGljdGlv
bi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjg0ZGM1YjY3Njk0MThlOTY1NTViYWI4Mzg3YzMwNjAzNGFmNWMw
YzAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9qcy9kb20vZG9taml0LWZ1bmN0aW9u
LXR5cGUtY29udHJhZGljdGlvbi5odG1sCkBAIC0wLDAgKzEsMzUgQEAKKzwhRE9DVFlQRSBodG1s
PgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1w
cmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+
PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKworPGRpdiBpZD0icGFyZW50Tm9kZSI+
Cis8ZGl2IGlkPSJwcmV2aW91c1NpYmxpbmciPjwvZGl2PjxkaXYgaWQ9InRhcmdldCI+PGRpdiBp
ZD0iZmlyc3RDaGlsZCI+PC9kaXY+PGRpdiBpZD0ibGFzdENoaWxkIj48L2Rpdj48L2Rpdj48ZGl2
IGlkPSJuZXh0U2libGluZyI+PC9kaXY+Cis8L2Rpdj4KKworPHNjcmlwdD4KK2Rlc2NyaXB0aW9u
KCdUZXN0IERPTUpJVCBmdW5jdGlvbiB3aWxsIGNhdXNlIHR5cGUgY29udHJhZGljdGlvbiBnaXZp
bmcgdXAuJyk7CisKK3ZhciBkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKK2Rp
di5zZXRBdHRyaWJ1dGUoImNvY29hIiwgIkNvY29hIik7CitmdW5jdGlvbiB0ZXN0KGRpdikgewor
ICAgIHZhciByZXQgPSAiaW52YWxpZCI7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxZTQ7ICsr
aSkKKyAgICAgICAgcmV0ID0gZGl2LmdldEF0dHJpYnV0ZSgyMDApOworICAgIHJldHVybiByZXQ7
Cit9Cit2YXIgcmVzdWx0OworKGZ1bmN0aW9uICgpIHsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8
IDEwMDsgKytpKSB7CisgICAgICAgIHJlc3VsdCA9IHRlc3QoZGl2KTsKKyAgICAgICAgc2hvdWxk
QmUoYHJlc3VsdGAsIGBudWxsYCwgdHJ1ZSk7CisgICAgfQorfSgpKTsKKzwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9i
b2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvZG9tL2RvbWppdC1mdW5j
dGlvbi10eXBlLWZhaWx1cmUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvanMvZG9tL2RvbWpp
dC1mdW5jdGlvbi10eXBlLWZhaWx1cmUtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJjMTAyYjM3
NmJmODIzMmI0MmJkMWEzY2U0MWRlMTc3MWEyN2I2YzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9qcy9kb20vZG9taml0LWZ1bmN0aW9uLXR5cGUtZmFpbHVyZS1leHBlY3RlZC50eHQK
QEAgLTAsMCArMSw4IEBACitUZXN0IERPTUpJVCBmdW5jdGlvbiB3aWxsIGNhdXNlIEJhZFR5cGUg
T1NSIGV4aXRzLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1Mi
IG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKK1BBU1Mgc3VjY2Vzc2Z1
bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9qcy9kb20vZG9taml0LWZ1bmN0aW9uLXR5cGUtZmFpbHVyZS5odG1sIGIvTGF5b3V0VGVz
dHMvanMvZG9tL2RvbWppdC1mdW5jdGlvbi10eXBlLWZhaWx1cmUuaHRtbApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42
Yjc2NjE0MTg3ZWRhODdkYWMyNmMyMGE2ZTMxMjJjZjA2NTRhODE2Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvanMvZG9tL2RvbWppdC1mdW5jdGlvbi10eXBlLWZhaWx1cmUuaHRtbApA
QCAtMCwwICsxLDM5IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4K
Kzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+
PC9kaXY+CisKKzxkaXYgaWQ9InBhcmVudE5vZGUiPgorPGRpdiBpZD0icHJldmlvdXNTaWJsaW5n
Ij48L2Rpdj48ZGl2IGlkPSJ0YXJnZXQiPjxkaXYgaWQ9ImZpcnN0Q2hpbGQiPjwvZGl2PjxkaXYg
aWQ9Imxhc3RDaGlsZCI+PC9kaXY+PC9kaXY+PGRpdiBpZD0ibmV4dFNpYmxpbmciPjwvZGl2Pgor
PC9kaXY+CisKKzxzY3JpcHQ+CitkZXNjcmlwdGlvbignVGVzdCBET01KSVQgZnVuY3Rpb24gd2ls
bCBjYXVzZSBCYWRUeXBlIE9TUiBleGl0cy4nKTsKKwordmFyIGRpdiA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnQoJ2RpdicpOworZGl2LnNldEF0dHJpYnV0ZSgiY29jb2EiLCAiQ29jb2EiKTsKK2Z1
bmN0aW9uIHRlc3QoZGl2LCBuYW1lKSB7CisgICAgdmFyIHJldCA9ICJpbnZhbGlkIjsKKyAgICBm
b3IgKHZhciBpID0gMDsgaSA8IDFlNDsgKytpKQorICAgICAgICByZXQgPSBkaXYuZ2V0QXR0cmli
dXRlKG5hbWUpOworICAgIHJldHVybiByZXQ7Cit9Cit2YXIgcmVzdWx0OworKGZ1bmN0aW9uICgp
IHsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IDEwMDsgKytpKSB7CisgICAgICAgIHJlc3VsdCA9
IHRlc3QoZGl2LCAnY29jb2EnKTsKKyAgICAgICAgc2hvdWxkQmUoYHJlc3VsdGAsIGAiQ29jb2Ei
YCwgdHJ1ZSk7CisgICAgfQorICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMTAwOyArK2kpIHsKKyAg
ICAgICAgcmVzdWx0ID0gdGVzdChkaXYsIDQwMCk7CisgICAgICAgIHNob3VsZEJlKGByZXN1bHRg
LCBgbnVsbGAsIHRydWUpOworICAgIH0KK30oKSk7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIu
Li8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRt
bD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL2RvbS9kb21qaXQtZnVuY3Rpb24uaHRtbCBi
L0xheW91dFRlc3RzL2pzL2RvbS9kb21qaXQtZnVuY3Rpb24uaHRtbApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45MWVh
OGE1OTlkODk2NWRlNWEwM2E4NTRkNDk0M2RlNWI5YWMzZDY0Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvanMvZG9tL2RvbWppdC1mdW5jdGlvbi5odG1sCkBAIC0wLDAgKzEsNTggQEAK
KzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNv
dXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlk
PSJ0YXJnZXQiIGNvY29hPSJjb2NvYSI+PGRpdiBpZD0iZmlyc3RDaGlsZCI+PC9kaXY+PGRpdiBp
ZD0ibGFzdENoaWxkIj48L2Rpdj48L2Rpdj4KKzwvZGl2PgorCis8c2NyaXB0PgorZGVzY3JpcHRp
b24oJ1Rlc3QgRE9NSklUIGZ1bmN0aW9ucyB3b3JrLicpOwordmFyIGRpdjsKKyhmdW5jdGlvbiAo
KSB7CisgICAgZGl2ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3RhcmdldCcpOworCisgICAg
ZnVuY3Rpb24gYSgpCisgICAgeworICAgICAgICByZXR1cm4gZGl2LmdldEF0dHJpYnV0ZSgnY29j
b2EnKSA9PT0gJ2NvY29hJzsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBiKCkKKyAgICB7CisgICAg
ICAgIHJldHVybiBkaXYuZ2V0QXR0cmlidXRlTm9kZSgnY29jb2EnKS5ub2RlVHlwZSA9PT0gTm9k
ZS5BVFRSSUJVVEVfTk9ERTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBjKCkKKyAgICB7CisgICAg
ICAgIHJldHVybiBkaXYuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2RpdicpLmxlbmd0aCA9PT0gMjsK
KyAgICB9CisKKyAgICBmdW5jdGlvbiBkKCkKKyAgICB7CisgICAgICAgIHJldHVybiBkaXYuaGFz
QXR0cmlidXRlKCdjb2NvYScpID09PSB0cnVlOworICAgIH0KKworICAgIGZ1bmN0aW9uIG1haW4o
KQorICAgIHsKKyAgICAgICAgaWYgKCFhKCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgICAgIGlmICghYigpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBpZiAo
IWMoKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgaWYgKCFkKCkpCisgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAg
IGZvciAodmFyIGkgPSAwOyBpIDwgMWU0OyArK2kpIHsKKyAgICAgICAgaWYgKCFtYWluKCkpCisg
ICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoImVycm9yIik7CisgICAgfQorICAgIHRlc3RQYXNz
ZWQoIkFsbCB0ZXN0cyBwYXNzZWQuIik7Cit9KCkpOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0
bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>293680</attachid>
            <date>2016-11-02 11:29:42 -0700</date>
            <delta_ts>2016-11-02 11:35:24 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-162980-20161102112543.patch</filename>
            <type>text/plain</type>
            <size>177727</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA4MjcwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBk
ZWFmOGMwYmI4YTZkOGM5ZjEwYmE4MDllY2VmZTJkOWI0MDE2ZDljLi41YTk5ZmExNDI1ZGVhYTI3
NTQxOGViMGI4MWE0NzEwYzIwOGY3MzhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMzMgQEAKKzIwMTYtMTEtMDIgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFp
bC5jb20+CisKKyAgICAgICAgW0RPTUpJVF0gQWRkIERPTUpJVDo6U2lnbmF0dXJlCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjI5ODAKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGludHJv
ZHVjZXMgYSBuZXcgbWVjaGFuaXNtIGNhbGxlZCBET01KSVQ6OlNpZ25hdHVyZS4gV2UgY2FuIGFu
bm90YXRlIHRoZSBmdW5jdGlvbiB3aXRoIERPTUpJVDo6U2lnbmF0dXJlLgorICAgICAgICBET01K
SVQ6OlNpZ25hdHVyZSBoYXMgdHlwZSBpbmZvcm1hdGlvbiBvZiB0aGF0IGZ1bmN0aW9uLiBBbmQg
aXQgYWxzbyBtYWludGFpbnMgdGhlIGVmZmVjdCBvZiB0aGUgZnVuY3Rpb24gYW5kIHRoZQorICAg
ICAgICBwb2ludGVyIHRvIHRoZSB1bnNhZmUgZnVuY3Rpb24uIFRoZSB1bnNhZmUgZnVuY3Rpb24g
bWVhbnMgdGhlIGZ1bmN0aW9uIHdpdGhvdXQgdHlwZSBhbmQgYXJndW1lbnQgY291bnQgY2hlY2tz
LgorICAgICAgICBCeSB1c2luZyB0aGVzZSBpbmZvcm1hdGlvbiwgd2UgY2FuIHNlcGFyYXRlIHR5
cGUgYW5kIGFyZ3VtZW50IGNvdW50IGNoZWNrcyBmcm9tIHRoZSBmdW5jdGlvbi4gQW5kIHdlIGNh
biBlbWl0CisgICAgICAgIHRoZXNlIHRoaW5ncyBhcyBERkcgY2hlY2tzIGFuZCBjb252ZXJ0IHRo
ZSBmdW5jdGlvbiBjYWxsIGl0c2VsZiB0byBDYWxsRE9NIG5vZGUuIENhbGxET00gbm9kZSBjYW4g
Y2FsbCB0aGUgdW5zYWZlCisgICAgICAgIGZ1bmN0aW9uIGRpcmVjdGx5IHdpdGhvdXQgYW55IGNo
ZWNrcy4gRnVydGhlcm1vcmUsIHRoaXMgQ2FsbERPTSBub2RlIGNhbiByZXByZXNlbnQgaXRzIG93
biBjbG9iYmVyaXppbmcgcnVsZXMgYmFzZWQKKyAgICAgICAgb24gRE9NSklUOjpFZmZlY3QgbWFp
bnRhaW5lZCBieSBET01KSVQ6OlNpZ25hdHVyZS4gSXQgYWxsb3dzIHVzIHRvIG1ha2Ugb3BhcXVl
IENhbGwgbm9kZSB0byBhIENhbGxET00gbm9kZSB0aGF0CisgICAgICAgIG1lcmVseSByZWFkcyBz
b21lIHBhcnQgb2YgaGVhcC4gVGhlc2UgY2hhbmdlcyAoMSkgY2FuIGRyb3AgZHVwbGljYXRlIHR5
cGUgY2hlY2tzIGluIERGRywgKDIpIG9mZmVyIGFiaWxpdHkgdG8gbW92ZQorICAgICAgICBDYWxs
RE9NIG5vZGUgdG8gc29tZXdoZXJlLCBhbmQgKDMpIHRyYWNrIG1vcmUgZGV0YWlsZWQgaGVhcCBy
ZWFkcyBhbmQgd3JpdGVzIG9mIENhbGxET00gbm9kZXMuCisKKyAgICAgICAgV2UgZmlyc3QgZW1p
dCBDYWxsIG5vZGUgd2l0aCBET01KSVQ6OlNpZ25hdHVyZSBpbiBERkdCeXRlQ29kZVBhcnNlci4g
QW5kIGluIHRoZSBmaXh1cCBwaGFzZSwgd2UgYXR0ZW1wdCB0byBsb3dlcgorICAgICAgICBDYWxs
IG5vZGUgdG8gQ2FsbERPTSBub2RlIHdpdGggY2hlY2tzICYgZWRnZSBmaWx0ZXJzLiBUaGlzIGlz
IGJlY2F1c2Ugd2UgZG8gbm90IGtub3cgdGhlIHR5cGUgcHJlZGljdGlvbnMgaW4KKyAgICAgICAg
REZHQnl0ZUNvZGVQYXJzZXIgcGhhc2UuIElmIHdlIGFsd2F5cyBlbWl0IENhbGxET00gbm9kZSBp
biBERkdCeXRlQ29kZVBhcnNlciwgaWYgd2UgZXZhbHVhdGUgYGRpdi5nZXRBdHRyaWJ1dGUodHJ1
ZSlgCisgICAgICAgIHRoaW5neSwgdGhlIFVuY291bnRhYmxlIE9TUiBleGl0cyByZXBlYXRlZGx5
IGhhcHBlbiBiZWNhdXNlIEFJIGZpZ3VyZXMgb3V0IHRoZSBhYnN0cmFjdCB2YWx1ZSBpcyBjbGVh
cmVkLgorCisgICAgICAgIEN1cnJlbnRseSwgRE9NSklUIHNpZ25hdHVyZSBvbmx5IGFsbG93cyB0
aGUgdHlwZXMgdGhhdCBjYW4gcmVzaWRlIGluIEdQUi4gVGhpcyBpcyBiZWNhdXNlIHRoZSB0eXBl
cyBvZiB0aGUgdW5zYWZlCisgICAgICAgIGZ1bmN0aW9uIGFyZ3VtZW50cyBhcmUgcmVwcmVzZW50
ZWQgYXMgdGhlIHNlcXVlbmNlIG9mIHZvaWQqLiBJbiB0aGUgZnV0dXJlLCB3ZSB3aWxsIGV4dGVu
ZCB0byBhY2NlcHQgb3RoZXIgdHlwZXMgbGlrZQorICAgICAgICBmbG9hdCwgZG91YmxlIGV0Yy4K
KworICAgICAgICBXZSBhbm5vdGF0ZSBzZXZlcmFsIGZ1bmN0aW9ucyBpbiBFbGVtZW50LiBJbiBw
YXJ0aWN1bGFyLCB3ZSBhbm5vdGF0ZSBFbGVtZW50OjpnZXRBdHRyaWJ1dGUuIFRoaXMgYWxsb3dz
IHVzIHRvIHBlcmZvcm0KKyAgICAgICAgTElDTSBpbiBEcm9tYWVvIGRvbS1hdHRyIHRlc3QuIElu
IHRoZSBEcm9tYWVvIGRvbS1hdHRyIGdldEF0dHJpYnV0ZSB0ZXN0LCB3ZSBjYW4gc2VlIDMyeCBp
bXByb3ZlbWVudC4gKDEzNDk3NC44IHYucy4gNDIwMy40KQorCisgICAgICAgICogSmF2YVNjcmlw
dENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBieXRlY29kZS9DYWxs
VmFyaWFudC5oOgorICAgICAgICAoSlNDOjpDYWxsVmFyaWFudDo6ZnVuY3Rpb25FeGVjdXRhYmxl
KToKKyAgICAgICAgKEpTQzo6Q2FsbFZhcmlhbnQ6Om5hdGl2ZUV4ZWN1dGFibGUpOgorICAgICAg
ICAoSlNDOjpDYWxsVmFyaWFudDo6c2lnbmF0dXJlRm9yKToKKyAgICAgICAgKiBieXRlY29kZS9T
cGVjdWxhdGVkVHlwZS5oOgorICAgICAgICAoSlNDOjppc05vdFN0cmluZ1NwZWN1bGF0aW9uKToK
KyAgICAgICAgKEpTQzo6aXNOb3RJbnQzMlNwZWN1bGF0aW9uKToKKyAgICAgICAgKEpTQzo6aXNO
b3RCb29sZWFuU3BlY3VsYXRpb24pOgorICAgICAgICAqIGRmZy9ERkdBYnN0cmFjdEludGVycHJl
dGVySW5saW5lcy5oOgorICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0SW50ZXJwcmV0ZXI8QWJz
dHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyk6CisgICAgICAgICogZGZnL0RGR0J5dGVD
b2RlUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6YWRkQ2Fs
bCk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUNhbGwpOgorICAg
ICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjphdHRlbXB0VG9JbmxpbmVDYWxsKToKKyAg
ICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW5saW5pbmcpOgorICAgICAg
ICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVET01KSVRDYWxsKToKKyAgICAgICAg
KEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayk6CisgICAgICAgICogZGZnL0RG
R0Nsb2JiZXJpemUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpjbG9iYmVyaXplKToKKyAgICAgICAg
KiBkZmcvREZHRG9lc0dDLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpkb2VzR0MpOgorICAgICAg
ICAqIGRmZy9ERkdGaXh1cFBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpGaXh1cFBoYXNl
OjpmaXh1cE5vZGUpOgorICAgICAgICAoSlNDOjpERkc6OkZpeHVwUGhhc2U6OmF0dGVtcHRUb01h
a2VDYWxsRE9NKToKKyAgICAgICAgKEpTQzo6REZHOjpGaXh1cFBoYXNlOjpmaXh1cENoZWNrRE9N
KToKKyAgICAgICAgKEpTQzo6REZHOjpGaXh1cFBoYXNlOjpmaXh1cENhbGxET00pOgorICAgICAg
ICAqIGRmZy9ERkdOb2RlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpjb252ZXJ0VG9D
YWxsRE9NKToKKyAgICAgICAgKiBkZmcvREZHTm9kZS5oOgorICAgICAgICAoSlNDOjpERkc6Ok5v
ZGU6Omhhc0hlYXBQcmVkaWN0aW9uKToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpzaG91bGRT
cGVjdWxhdGVOb3RJbnQzMik6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6c2hvdWxkU3BlY3Vs
YXRlTm90Qm9vbGVhbik6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6c2hvdWxkU3BlY3VsYXRl
Tm90U3RyaW5nKToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpoYXNTaWduYXR1cmUpOgorICAg
ICAgICAoSlNDOjpERkc6Ok5vZGU6OnNpZ25hdHVyZSk6CisgICAgICAgICogZGZnL0RGR05vZGVU
eXBlLmg6CisgICAgICAgICogZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcDoK
KyAgICAgICAgKiBkZmcvREZHU2FmZVRvRXhlY3V0ZS5oOgorICAgICAgICAoSlNDOjpERkc6OnNh
ZmVUb0V4ZWN1dGUpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHA6CisgICAg
ICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVDYWxsRE9NKToKKyAgICAgICAg
KiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuaDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2
ZUpJVDo6Y2FsbE9wZXJhdGlvbik6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJf
NjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToKKyAg
ICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGRvbWppdC9ET01KSVRFZmZlY3Qu
aDoKKyAgICAgICAgKEpTQzo6RE9NSklUOjpFZmZlY3Q6OkVmZmVjdCk6CisgICAgICAgIChKU0M6
OkRPTUpJVDo6RWZmZWN0Ojpmb3JXcml0ZSk6CisgICAgICAgIChKU0M6OkRPTUpJVDo6RWZmZWN0
Ojpmb3JSZWFkKToKKyAgICAgICAgKEpTQzo6RE9NSklUOjpFZmZlY3Q6OmZvclJlYWRXcml0ZSk6
CisgICAgICAgIChKU0M6OkRPTUpJVDo6RWZmZWN0Ojpmb3JQdXJlKToKKyAgICAgICAgKEpTQzo6
RE9NSklUOjpFZmZlY3Q6OmZvckRlZik6CisgICAgICAgIChKU0M6OkRPTUpJVDo6RWZmZWN0Ojpt
dXN0R2VuZXJhdGUpOgorICAgICAgICBJbiBjbGFuZywgd2UgY2Fubm90IG1ha2UgdGhpcyBFZmZl
Y3QgY29uc3RydWN0b3IgY29uc3RleHByIGlmIHdlIHVzZSBPcHRpb25hbDxIZWFwUmFuZ2U+Lgor
ICAgICAgICBTbyB3ZSB1c2UgSGVhcFJhbmdlOjp0b3AoKSBmb3IgTnVsbG9wdCBkZWYgbm93Lgor
CisgICAgICAgICogZG9taml0L0RPTUpJVEhlYXBSYW5nZS5oOgorICAgICAgICAoSlNDOjpET01K
SVQ6OkhlYXBSYW5nZTo6ZnJvbVJhdyk6CisgICAgICAgIChKU0M6OkRPTUpJVDo6SGVhcFJhbmdl
OjpvcGVyYXRvcj09KToKKyAgICAgICAgKEpTQzo6RE9NSklUOjpIZWFwUmFuZ2U6Om9wZXJhdG9y
IT0pOgorICAgICAgICAoSlNDOjpET01KSVQ6OkhlYXBSYW5nZTo6ZnJvbUNvbnN0YW50KToKKyAg
ICAgICAgKiBkb21qaXQvRE9NSklUU2lnbmF0dXJlLmg6IENvcGllZCBmcm9tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kb21qaXQvRE9NSklURWZmZWN0LmguCisgICAgICAgIChKU0M6OkRPTUpJVDo6
U2lnbmF0dXJlOjpTaWduYXR1cmUpOgorICAgICAgICAoSlNDOjpET01KSVQ6OlNpZ25hdHVyZTo6
YXJndW1lbnRDb3VudCk6CisgICAgICAgIChKU0M6OkRPTUpJVDo6U2lnbmF0dXJlOjpjaGVja0RP
TSk6CisgICAgICAgICogZnRsL0ZUTENhcGFiaWxpdGllcy5jcHA6CisgICAgICAgIChKU0M6OkZU
TDo6Y2FuQ29tcGlsZSk6CisgICAgICAgICogZnRsL0ZUTExvd2VyREZHVG9CMy5jcHA6CisgICAg
ICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVOb2RlKToKKyAgICAgICAg
KEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZUNhbGxET00pOgorICAgICAgICAq
IGppdC9KSVRPcGVyYXRpb25zLmg6CisgICAgICAgICogaml0L0pJVFRodW5rcy5jcHA6CisgICAg
ICAgIChKU0M6OkpJVFRodW5rczo6aG9zdEZ1bmN0aW9uU3R1Yik6CisgICAgICAgICogaml0L0pJ
VFRodW5rcy5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNCb3VuZEZ1bmN0aW9uLmNwcDoKKyAgICAg
ICAgKEpTQzo6SlNCb3VuZEZ1bmN0aW9uOjpjcmVhdGUpOgorICAgICAgICAqIHJ1bnRpbWUvSlND
ZWxsLmg6CisgICAgICAgICogcnVudGltZS9KU0Z1bmN0aW9uLmNwcDoKKyAgICAgICAgKEpTQzo6
SlNGdW5jdGlvbjo6Y3JlYXRlKToKKyAgICAgICAgKiBydW50aW1lL0pTRnVuY3Rpb24uaDoKKyAg
ICAgICAgKiBydW50aW1lL0pTTmF0aXZlU3RkRnVuY3Rpb24uY3BwOgorICAgICAgICAoSlNDOjpK
U05hdGl2ZVN0ZEZ1bmN0aW9uOjpjcmVhdGUpOgorICAgICAgICAqIHJ1bnRpbWUvSlNPYmplY3Qu
Y3BwOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6cHV0RGlyZWN0TmF0aXZlRnVuY3Rpb24pOgor
ICAgICAgICAqIHJ1bnRpbWUvSlNPYmplY3QuaDoKKyAgICAgICAgKiBydW50aW1lL0xvb2t1cC5o
OgorICAgICAgICAoSlNDOjpIYXNoVGFibGVWYWx1ZTo6ZnVuY3Rpb25MZW5ndGgpOgorICAgICAg
ICAoSlNDOjpIYXNoVGFibGVWYWx1ZTo6c2lnbmF0dXJlKToKKyAgICAgICAgKEpTQzo6cmVpZnlT
dGF0aWNQcm9wZXJ0eSk6CisgICAgICAgICogcnVudGltZS9OYXRpdmVFeGVjdXRhYmxlLmNwcDoK
KyAgICAgICAgKEpTQzo6TmF0aXZlRXhlY3V0YWJsZTo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6
TmF0aXZlRXhlY3V0YWJsZTo6TmF0aXZlRXhlY3V0YWJsZSk6CisgICAgICAgICogcnVudGltZS9O
YXRpdmVFeGVjdXRhYmxlLmg6CisgICAgICAgICogcnVudGltZS9Qcm9wZXJ0eVNsb3QuaDoKKyAg
ICAgICAgKiBydW50aW1lL1ZNLmNwcDoKKyAgICAgICAgKEpTQzo6Vk06OmdldEhvc3RGdW5jdGlv
bik6CisgICAgICAgICogcnVudGltZS9WTS5oOgorCiAyMDE2LTExLTAxICBSeW9zdWtlIE5pd2Eg
IDxybml3YUB3ZWJraXQub3JnPgogCiAgICAgICAgIFJlbW92ZSBDVVNUT01fRUxFTUVOVFMgYnVp
bGQgZmxhZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCmluZGV4IDlhZWRlNzYzNjFjZDQ1NWIwMTcwZDIyMTk1YzQ5MjVjYmRl
NTQzYjAuLmNjYzI0OTVlZWI2Zjc3YThmNmI5ZjgyZWI3NzVhODdkMDE5YTk5YTggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cKQEAgLTEsMyArMSw5OCBAQAorMjAxNi0xMS0wMiAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUu
dGVhQGdtYWlsLmNvbT4KKworICAgICAgICBbRE9NSklUXSBBZGQgRE9NSklUOjpTaWduYXR1cmUK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2Mjk4MAor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdlIGludHJv
ZHVjZSBET01KSVQ6OlNpZ25hdHVyZS4gVGhpcyBzaWduYXR1cmUgb2JqZWN0IGlzIGF1dG9tYXRp
Y2FsbHkgZ2VuZXJhdGVkIGJ5IElETCBjb2RlIGdlbmVyYXRvci4KKyAgICAgICAgSXQgaG9sZHMg
KDEpIHR5cGVzLCAoMikgcG9pbnRlciB0byB0aGUgdW5zYWZlIGZ1bmN0aW9uICh0aGUgZnVuY3Rp
b24gd2l0aG91dCBjaGVja3MpLCBhbmQgKDMpIHRoZSBlZmZlY3QKKyAgICAgICAgb2YgdGhlIGZ1
bmN0aW9uLiBXZSB1c2UgY29uc3RleHByIHRvIGluaXRpYWxpemUgRE9NSklUOjpTaWduYXR1cmUg
d2l0aG91dCBpbnZva2luZyBnbG9iYWwgY29uc3RydWN0b3JzLgorICAgICAgICBUaHVzIHRoZSBj
b250ZW50IGlzIGVtYmVkZGVkIGludG8gdGhlIGJpbmFyeSBhcyB0aGUgY29uc3RhbnQgdmFsdWVz
LgorCisgICAgICAgIFdlIGFsc28gY2xlYW4gdXAgdGhlIElETCBjb2RlIGdlbmVyYXRvciByZWxh
dGVkIHRvIERPTUpJVCBwYXJ0LiBJbnN0ZWFkIG9mIHN3aXRjaGluZyB0aGluZ3MgaW5zaWRlIElE
TAorICAgICAgICBjb2RlIGdlbmVyYXRvciwgd2UgdXNlIEMrKyB0ZW1wbGF0ZSB0byBkaXNwYXRj
aCB0aGluZ3MgYXQgY29tcGlsZSB0aW1lLiBUaGlzIHRlbXBsYXRlIG1ldGEgcHJvZ3JhbW1pbmcK
KyAgICAgICAgaXMgaGlnaGx5IHV0aWxpemVkIGluIElETCB0aGVzZSBkYXlzLgorCisgICAgICAg
IFRvIG1ha2UgRE9NSklUOjpTaWduYXR1cmUgY29uc3RleHByLCB3ZSBhbHNvIG5lZWQgdG8gZGVm
aW5lIERPTUpJVCBhYnN0cmFjdCBoZWFwIHRoaW5ncyBpbiB0aGUgYnVpbGQgdGltZS4KKyAgICAg
ICAgVG8gZG8gc28sIHdlIGludHJvZHVjZSBhIHRpbnkgUnVieSBzY3JpcHQgdG8gY2FsY3VsYXRl
IHRoZSByYW5nZSBvZiBhYnN0cmFjdCBoZWFwcy4gV2UgY2FuIG9mZmVyIHRoZSBhYnN0cmFjdAor
ICAgICAgICBoZWFwIHRyZWUgYXMgWUFNTCBmb3JtYXQgYW5kIHRoZSBzY3JpcHQgd2lsbCBwcm9k
dWNlIGEgQysrIGhlYWRlciBob2xkaW5nIHRoZSBjYWxjdWxhdGVkIGFic3RyYWN0IGhlYXAgcmFu
Z2VzCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBEZXJpdmVkU291cmNl
cy5tYWtlOgorICAgICAgICAqIEZvcndhcmRpbmdIZWFkZXJzL2J5dGVjb2RlL1NwZWN1bGF0ZWRU
eXBlLmg6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9kb21qaXQvRE9NSklUQWJzdHJhY3RI
ZWFwUmVwb3NpdG9yeS5oLgorICAgICAgICAqIEZvcndhcmRpbmdIZWFkZXJzL2RvbWppdC9ET01K
SVRTaWduYXR1cmUuaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL2RvbWppdC9ET01KSVRB
YnN0cmFjdEhlYXBSZXBvc2l0b3J5LmNwcC4KKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2o6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3Qu
aDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbToKKyAgICAg
ICAgKEdlbmVyYXRlSGVhZGVyKToKKyAgICAgICAgKEdlbmVyYXRlUHJvcGVydGllc0hhc2hUYWJs
ZSk6CisgICAgICAgIChHZXRVbnNhZmVBcmd1bWVudFR5cGUpOgorICAgICAgICAoR2V0QXJndW1l
bnRUeXBlRmlsdGVyKToKKyAgICAgICAgKEdldFJlc3VsdFR5cGVGaWx0ZXIpOgorICAgICAgICAo
R2VuZXJhdGVJbXBsZW1lbnRhdGlvbik6CisgICAgICAgIChVbnNhZmVUb05hdGl2ZSk6CisgICAg
ICAgIChHZW5lcmF0ZUhhc2hUYWJsZVZhbHVlQXJyYXkpOgorICAgICAgICAoQ29tcHV0ZUZ1bmN0
aW9uU3BlY2lhbCk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9JRExBdHRyaWJ1dGVzLnR4
dDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RE9NSklULmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkJpbmRpbmdDYWxsZXI8SlNUZXN0RE9NSklUPjo6Y2FzdEZvck9w
ZXJhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpUZXN0RE9NSklUQW55QXR0ckRPTUpJVDo6VGVz
dERPTUpJVEFueUF0dHJET01KSVQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdERPTUpJVEJvb2xl
YW5BdHRyRE9NSklUOjpUZXN0RE9NSklUQm9vbGVhbkF0dHJET01KSVQpOgorICAgICAgICAoV2Vi
Q29yZTo6VGVzdERPTUpJVEJ5dGVBdHRyRE9NSklUOjpUZXN0RE9NSklUQnl0ZUF0dHJET01KSVQp
OgorICAgICAgICAoV2ViQ29yZTo6VGVzdERPTUpJVE9jdGV0QXR0ckRPTUpJVDo6VGVzdERPTUpJ
VE9jdGV0QXR0ckRPTUpJVCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0RE9NSklUU2hvcnRBdHRy
RE9NSklUOjpUZXN0RE9NSklUU2hvcnRBdHRyRE9NSklUKToKKyAgICAgICAgKFdlYkNvcmU6OlRl
c3RET01KSVRVbnNpZ25lZFNob3J0QXR0ckRPTUpJVDo6VGVzdERPTUpJVFVuc2lnbmVkU2hvcnRB
dHRyRE9NSklUKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RET01KSVRMb25nQXR0ckRPTUpJVDo6
VGVzdERPTUpJVExvbmdBdHRyRE9NSklUKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RET01KSVRV
bnNpZ25lZExvbmdBdHRyRE9NSklUOjpUZXN0RE9NSklUVW5zaWduZWRMb25nQXR0ckRPTUpJVCk6
CisgICAgICAgIChXZWJDb3JlOjpUZXN0RE9NSklUTG9uZ0xvbmdBdHRyRE9NSklUOjpUZXN0RE9N
SklUTG9uZ0xvbmdBdHRyRE9NSklUKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RET01KSVRVbnNp
Z25lZExvbmdMb25nQXR0ckRPTUpJVDo6VGVzdERPTUpJVFVuc2lnbmVkTG9uZ0xvbmdBdHRyRE9N
SklUKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RET01KSVRGbG9hdEF0dHJET01KSVQ6OlRlc3RE
T01KSVRGbG9hdEF0dHJET01KSVQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdERPTUpJVFVucmVz
dHJpY3RlZEZsb2F0QXR0ckRPTUpJVDo6VGVzdERPTUpJVFVucmVzdHJpY3RlZEZsb2F0QXR0ckRP
TUpJVCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0RE9NSklURG91YmxlQXR0ckRPTUpJVDo6VGVz
dERPTUpJVERvdWJsZUF0dHJET01KSVQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdERPTUpJVFVu
cmVzdHJpY3RlZERvdWJsZUF0dHJET01KSVQ6OlRlc3RET01KSVRVbnJlc3RyaWN0ZWREb3VibGVB
dHRyRE9NSklUKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RET01KSVREb21TdHJpbmdBdHRyRE9N
SklUOjpUZXN0RE9NSklURG9tU3RyaW5nQXR0ckRPTUpJVCk6CisgICAgICAgIChXZWJDb3JlOjpU
ZXN0RE9NSklUQnl0ZVN0cmluZ0F0dHJET01KSVQ6OlRlc3RET01KSVRCeXRlU3RyaW5nQXR0ckRP
TUpJVCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0RE9NSklUVXN2U3RyaW5nQXR0ckRPTUpJVDo6
VGVzdERPTUpJVFVzdlN0cmluZ0F0dHJET01KSVQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdERP
TUpJVE5vZGVBdHRyRE9NSklUOjpUZXN0RE9NSklUTm9kZUF0dHJET01KSVQpOgorICAgICAgICAo
V2ViQ29yZTo6VGVzdERPTUpJVEJvb2xlYW5OdWxsYWJsZUF0dHJET01KSVQ6OlRlc3RET01KSVRC
b29sZWFuTnVsbGFibGVBdHRyRE9NSklUKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RET01KSVRC
eXRlTnVsbGFibGVBdHRyRE9NSklUOjpUZXN0RE9NSklUQnl0ZU51bGxhYmxlQXR0ckRPTUpJVCk6
CisgICAgICAgIChXZWJDb3JlOjpUZXN0RE9NSklUT2N0ZXROdWxsYWJsZUF0dHJET01KSVQ6OlRl
c3RET01KSVRPY3RldE51bGxhYmxlQXR0ckRPTUpJVCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0
RE9NSklUU2hvcnROdWxsYWJsZUF0dHJET01KSVQ6OlRlc3RET01KSVRTaG9ydE51bGxhYmxlQXR0
ckRPTUpJVCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0RE9NSklUVW5zaWduZWRTaG9ydE51bGxh
YmxlQXR0ckRPTUpJVDo6VGVzdERPTUpJVFVuc2lnbmVkU2hvcnROdWxsYWJsZUF0dHJET01KSVQp
OgorICAgICAgICAoV2ViQ29yZTo6VGVzdERPTUpJVExvbmdOdWxsYWJsZUF0dHJET01KSVQ6OlRl
c3RET01KSVRMb25nTnVsbGFibGVBdHRyRE9NSklUKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RE
T01KSVRVbnNpZ25lZExvbmdOdWxsYWJsZUF0dHJET01KSVQ6OlRlc3RET01KSVRVbnNpZ25lZExv
bmdOdWxsYWJsZUF0dHJET01KSVQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdERPTUpJVExvbmdM
b25nTnVsbGFibGVBdHRyRE9NSklUOjpUZXN0RE9NSklUTG9uZ0xvbmdOdWxsYWJsZUF0dHJET01K
SVQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdERPTUpJVFVuc2lnbmVkTG9uZ0xvbmdOdWxsYWJs
ZUF0dHJET01KSVQ6OlRlc3RET01KSVRVbnNpZ25lZExvbmdMb25nTnVsbGFibGVBdHRyRE9NSklU
KToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RET01KSVRGbG9hdE51bGxhYmxlQXR0ckRPTUpJVDo6
VGVzdERPTUpJVEZsb2F0TnVsbGFibGVBdHRyRE9NSklUKToKKyAgICAgICAgKFdlYkNvcmU6OlRl
c3RET01KSVRVbnJlc3RyaWN0ZWRGbG9hdE51bGxhYmxlQXR0ckRPTUpJVDo6VGVzdERPTUpJVFVu
cmVzdHJpY3RlZEZsb2F0TnVsbGFibGVBdHRyRE9NSklUKToKKyAgICAgICAgKFdlYkNvcmU6OlRl
c3RET01KSVREb3VibGVOdWxsYWJsZUF0dHJET01KSVQ6OlRlc3RET01KSVREb3VibGVOdWxsYWJs
ZUF0dHJET01KSVQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdERPTUpJVFVucmVzdHJpY3RlZERv
dWJsZU51bGxhYmxlQXR0ckRPTUpJVDo6VGVzdERPTUpJVFVucmVzdHJpY3RlZERvdWJsZU51bGxh
YmxlQXR0ckRPTUpJVCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0RE9NSklURG9tU3RyaW5nTnVs
bGFibGVBdHRyRE9NSklUOjpUZXN0RE9NSklURG9tU3RyaW5nTnVsbGFibGVBdHRyRE9NSklUKToK
KyAgICAgICAgKFdlYkNvcmU6OlRlc3RET01KSVRCeXRlU3RyaW5nTnVsbGFibGVBdHRyRE9NSklU
OjpUZXN0RE9NSklUQnl0ZVN0cmluZ051bGxhYmxlQXR0ckRPTUpJVCk6CisgICAgICAgIChXZWJD
b3JlOjpUZXN0RE9NSklUVXN2U3RyaW5nTnVsbGFibGVBdHRyRE9NSklUOjpUZXN0RE9NSklUVXN2
U3RyaW5nTnVsbGFibGVBdHRyRE9NSklUKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RET01KSVRO
b2RlTnVsbGFibGVBdHRyRE9NSklUOjpUZXN0RE9NSklUTm9kZU51bGxhYmxlQXR0ckRPTUpJVCk6
CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RET01KSVRQcm90b3R5cGVGdW5jdGlvbkdldEF0dHJp
YnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RET01KSVRQcm90b3R5cGVGdW5jdGlvbkdl
dEF0dHJpYnV0ZUNhbGxlcik6CisgICAgICAgIChXZWJDb3JlOjp1bnNhZmVKc1Rlc3RET01KSVRQ
cm90b3R5cGVGdW5jdGlvbkdldEF0dHJpYnV0ZSk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L1Rlc3RET01KSVQuaWRsOgorICAgICAgICAqIGRvbS9FbGVtZW50LmlkbDoKKyAgICAg
ICAgKiBkb21qaXQvRE9NSklUQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS55YW1sOiBBZGRlZC4KKyAg
ICAgICAgKiBkb21qaXQvRE9NSklUSURMQ29udmVydC5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkRPTUpJVDo6RGlyZWN0Q29udmVydGVyPElETERPTVN0cmluZz46OmRpcmVjdENvbnZlcnQ8
U3RyaW5nQ29udmVyc2lvbkNvbmZpZ3VyYXRpb246Ok5vcm1hbD4pOgorICAgICAgICAqIGRvbWpp
dC9ET01KSVRJRExUeXBlLmg6IEFkZGVkLgorICAgICAgICAqIGRvbWppdC9ET01KSVRJRExUeXBl
RmlsdGVyLmg6IEFkZGVkLgorICAgICAgICAqIGRvbWppdC9KU0RvY3VtZW50RE9NSklULmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50RG9jdW1lbnRFbGVtZW50RE9NSklUOjpjYWxsRE9N
R2V0dGVyKToKKyAgICAgICAgKiBkb21qaXQvSlNOb2RlRE9NSklULmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6Ok5vZGVGaXJzdENoaWxkRE9NSklUOjpjYWxsRE9NR2V0dGVyKToKKyAgICAgICAgKFdl
YkNvcmU6Ok5vZGVMYXN0Q2hpbGRET01KSVQ6OmNhbGxET01HZXR0ZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6Tm9kZU5leHRTaWJsaW5nRE9NSklUOjpjYWxsRE9NR2V0dGVyKToKKyAgICAgICAgKFdl
YkNvcmU6Ok5vZGVQcmV2aW91c1NpYmxpbmdET01KSVQ6OmNhbGxET01HZXR0ZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6Tm9kZVBhcmVudE5vZGVET01KSVQ6OmNhbGxET01HZXR0ZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6Tm9kZU93bmVyRG9jdW1lbnRET01KSVQ6OmNhbGxET01HZXR0ZXIpOgorICAg
ICAgICAqIGRvbWppdC9nZW5lcmF0ZS1hYnN0cmFjdC1oZWFwLnJiOiBBZGRlZC4KKwogMjAxNi0x
MS0wMSAgRGF2ZSBIeWF0dCAgPGh5YXR0QGFwcGxlLmNvbT4KIAogICAgICAgICBbQ1NTIFBhcnNl
cl0gU3VwcG9ydCB0aGUgc2hhZG93IERPTQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRl
eCAyZmJkMmU0Y2YzMTdjMmY4NGUyZTEzOTdkODUxNDExYjU5NjdlMGUyLi5iZjRhMTlkNTkyN2Rm
ZGUxYTlmZjZmMjRhM2U5YjVmNmM3ODBiZTlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agpAQCAtMjE4NCw2ICsyMTg0LDcgQEAKIAkJRTMzRjUwODUxQjg0MzdBMDAwNDEzODU2IC8qIEpT
SW50ZXJuYWxQcm9taXNlRGVmZXJyZWQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEUzM0Y1MDgzMUI4NDM3QTAwMDQxMzg1NiAvKiBKU0ludGVybmFsUHJv
bWlzZURlZmVycmVkLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJRTMzRjUwODcxQjg0NDlFRjAwNDEzODU2IC8qIEpTSW50ZXJuYWxQcm9taXNlQ29u
c3RydWN0b3IubHV0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBFMzNGNTA4NjFCODQ0OUVGMDA0MTM4NTYgLyogSlNJbnRlcm5hbFByb21pc2VDb25zdHJ1
Y3Rvci5sdXQuaCAqLzsgfTsKIAkJRTM0RURCRjcxREI1RkZDOTAwREM4N0E1IC8qIEZyYW1lVHJh
Y2Vycy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM0
RURCRjYxREI1RkZDMTAwREM4N0E1IC8qIEZyYW1lVHJhY2Vycy5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUUzNTA3MDhBMURDNDlCQkYwMDg5QkNE
NiAvKiBET01KSVRTaWduYXR1cmUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEUzNTA3MDg5MURDNDlCQjYwMDg5QkNENiAvKiBET01KSVRTaWduYXR1cmUu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFMzU0
NjIyQjFCNjA2NUQxMDA1NDUzODYgLyogQ29uc3RydWN0QWJpbGl0eS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM1NDYyMkExQjYwNjVEMTAwNTQ1Mzg2
IC8qIENvbnN0cnVjdEFiaWxpdHkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQlFMzU1NUI4QTFEQUUwM0E1MDBGMzY5MjEgLyogRE9NSklUQ2FsbERP
TUdldHRlclBhdGNocG9pbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEUzNTU1Qjg5MURBRTAzQTIwMEYzNjkyMSAvKiBET01KSVRDYWxsRE9NR2V0dGVy
UGF0Y2hwb2ludC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCUUzNTVGMzUyMUI3REM4NTMwMEM1MERDNSAvKiBNb2R1bGVMb2FkZXJQcm90b3R5cGUu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM1NUYz
NTAxQjdEQzg1MzAwQzUwREM1IC8qIE1vZHVsZUxvYWRlclByb3RvdHlwZS5jcHAgKi87IH07CkBA
IC00NTg2LDYgKzQ1ODcsNyBAQAogCQlFMzNGNTA4NjFCODQ0OUVGMDA0MTM4NTYgLyogSlNJbnRl
cm5hbFByb21pc2VDb25zdHJ1Y3Rvci5sdXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gSlNJbnRlcm5hbFByb21pc2VDb25zdHJ1Y3Rvci5sdXQuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJRTMzRjUwODgxQjg0NEExQTAwNDEzODU2IC8qIEludGVybmFsUHJvbWlz
ZUNvbnN0cnVjdG9yLmpzICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5qYXZhc2NyaXB0OyBwYXRoID0g
SW50ZXJuYWxQcm9taXNlQ29uc3RydWN0b3IuanM7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUUzNEVEQkY2MURCNUZGQzEwMERDODdBNSAvKiBGcmFtZVRyYWNlcnMuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRnJhbWVUcmFjZXJzLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCUUzNTA3MDg5MURDNDlCQjYwMDg5QkNENiAvKiBET01KSVRTaWduYXR1cmUu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRE9NSklUU2lnbmF0dXJlLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzNTQ2MjJBMUI2MDY1RDEwMDU0NTM4NiAvKiBD
b25zdHJ1Y3RBYmlsaXR5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvbnN0
cnVjdEFiaWxpdHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM1NTVCODkxREFF
MDNBMjAwRjM2OTIxIC8qIERPTUpJVENhbGxET01HZXR0ZXJQYXRjaHBvaW50LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERPTUpJVENhbGxET01HZXR0ZXJQYXRjaHBvaW50Lmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzNTVGMzUwMUI3REM4NTMwMEM1MERDNSAv
KiBNb2R1bGVMb2FkZXJQcm90b3R5cGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gTW9kdWxlTG9hZGVyUHJvdG90eXBlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKQEAgLTc1MDMsNiArNzUwNSw3IEBACiAJCQkJRTM3QUQ4M0ExREE0OTI4MDAwRjNENDEy
IC8qIERPTUpJVFBhdGNocG9pbnRQYXJhbXMuaCAqLywKIAkJCQlFMzdBRDgzQjFEQTQ5MjgwMDBG
M0Q0MTIgLyogRE9NSklUUmVnLmggKi8sCiAJCQkJRTNDQjFFMjQxREE3NTQwQTAwRkExRTU2IC8q
IERPTUpJVFNsb3dQYXRoQ2FsbHMuaCAqLywKKwkJCQlFMzUwNzA4OTFEQzQ5QkI2MDA4OUJDRDYg
LyogRE9NSklUU2lnbmF0dXJlLmggKi8sCiAJCQkJRTNGRkM4NTIxREFEN0QxMDAwREVBNTNFIC8q
IERPTUpJVFZhbHVlLmggKi8sCiAJCQkpOwogCQkJcGF0aCA9IGRvbWppdDsKQEAgLTg0MjMsNiAr
ODQyNiw3IEBACiAJCQkJNDNBQjI2QzYxQzFBNTM1OTAwRDgyQUU2IC8qIEIzTWF0aEV4dHJhcy5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQUQyRkNCRjMxREI1OERBRDAwQjNFNzM2IC8qIFdlYkFzc2Vt
Ymx5SW5zdGFuY2VQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDNDI5MEUxNkY1
Q0QwMEIzNDQ2MCAvKiBKU1N0cmluZ1JlZkNGLmggaW4gSGVhZGVycyAqLywKKwkJCQlFMzUwNzA4
QTFEQzQ5QkJGMDA4OUJDRDYgLyogRE9NSklUU2lnbmF0dXJlLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkxQTI4RDRBODE3N0I3MUM4MDAwN0ZBM0MgLyogSlNTdHJpbmdSZWZQcml2YXRlLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkwRjkxOUQwRDE1N0VFMEEyMDA0QTRFN0QgLyogSlNTeW1ib2xUYWJsZU9i
amVjdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNzBFQ0E2MDYxQUZEQkVBMjAwNDQ5NzM5IC8qIEpT
VGVtcGxhdGVSZWdpc3RyeUtleS5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbFZhcmlhbnQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9DYWxsVmFyaWFudC5oCmluZGV4IGRlNjg4MDA2ZWYxYTk5ZTlkZDYwYjAx
YTZlMDE3N2NiOThlYzdiNTEuLmNiMjg4YzYwYjdhNGYxMzhiYWYyMTQyODQ5ZTEzOTFhOGQxMTFi
YTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsVmFyaWFu
dC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsVmFyaWFudC5oCkBA
IC0yOCw2ICsyOCw3IEBACiAjaW5jbHVkZSAiRnVuY3Rpb25FeGVjdXRhYmxlLmgiCiAjaW5jbHVk
ZSAiSlNDZWxsLmgiCiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgorI2luY2x1ZGUgIk5hdGl2ZUV4
ZWN1dGFibGUuaCIKIAogbmFtZXNwYWNlIEpTQyB7CiAKQEAgLTEyMCw2ICsxMjEsMjAgQEAgY2xh
c3MgQ2FsbFZhcmlhbnQgewogICAgICAgICAgICAgcmV0dXJuIGpzRHluYW1pY0Nhc3Q8RnVuY3Rp
b25FeGVjdXRhYmxlKj4oZXhlY3V0YWJsZSk7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAg
IH0KKworICAgIE5hdGl2ZUV4ZWN1dGFibGUqIG5hdGl2ZUV4ZWN1dGFibGUoKSBjb25zdAorICAg
IHsKKyAgICAgICAgaWYgKEV4ZWN1dGFibGVCYXNlKiBleGVjdXRhYmxlID0gdGhpcy0+ZXhlY3V0
YWJsZSgpKQorICAgICAgICAgICAgcmV0dXJuIGpzRHluYW1pY0Nhc3Q8TmF0aXZlRXhlY3V0YWJs
ZSo+KGV4ZWN1dGFibGUpOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisKKyAgICBj
b25zdCBET01KSVQ6OlNpZ25hdHVyZSogc2lnbmF0dXJlRm9yKENvZGVTcGVjaWFsaXphdGlvbktp
bmQga2luZCkgY29uc3QKKyAgICB7CisgICAgICAgIGlmIChOYXRpdmVFeGVjdXRhYmxlKiBuYXRp
dmVFeGVjdXRhYmxlID0gdGhpcy0+bmF0aXZlRXhlY3V0YWJsZSgpKQorICAgICAgICAgICAgcmV0
dXJuIG5hdGl2ZUV4ZWN1dGFibGUtPnNpZ25hdHVyZUZvcihraW5kKTsKKyAgICAgICAgcmV0dXJu
IG51bGxwdHI7CisgICAgfQogICAgIAogICAgIHZvaWQgZHVtcChQcmludFN0cmVhbSYgb3V0KSBj
b25zdDsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9T
cGVjdWxhdGVkVHlwZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NwZWN1bGF0
ZWRUeXBlLmgKaW5kZXggZjQzZGZjZDMxNTg3MWU5ODk1M2VhMmRkZGM0YmYzMzUyNWNjZGZkZi4u
ZTIzZmQyYzVmNTRjZWUwOWM3YTIzYmRjMTQ5OTkwYjYwOWIwMTkwMCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmgKQEAgLTE1MSw2ICsxNTEs
MTEgQEAgaW5saW5lIGJvb2wgaXNTdHJpbmdTcGVjdWxhdGlvbihTcGVjdWxhdGVkVHlwZSB2YWx1
ZSkKICAgICByZXR1cm4gISF2YWx1ZSAmJiAodmFsdWUgJiBTcGVjU3RyaW5nKSA9PSB2YWx1ZTsK
IH0KIAoraW5saW5lIGJvb2wgaXNOb3RTdHJpbmdTcGVjdWxhdGlvbihTcGVjdWxhdGVkVHlwZSB2
YWx1ZSkKK3sKKyAgICByZXR1cm4gdmFsdWUgJiYgISh2YWx1ZSAmIFNwZWNTdHJpbmcpOworfQor
CiBpbmxpbmUgYm9vbCBpc1N0cmluZ09yT3RoZXJTcGVjdWxhdGlvbihTcGVjdWxhdGVkVHlwZSB2
YWx1ZSkKIHsKICAgICByZXR1cm4gISF2YWx1ZSAmJiAodmFsdWUgJiAoU3BlY1N0cmluZyB8IFNw
ZWNPdGhlcikpID09IHZhbHVlOwpAQCAtMzAzLDYgKzMwOCwxMSBAQCBpbmxpbmUgYm9vbCBpc0lu
dDMyU3BlY3VsYXRpb24oU3BlY3VsYXRlZFR5cGUgdmFsdWUpCiAgICAgcmV0dXJuIHZhbHVlICYm
ICEodmFsdWUgJiB+U3BlY0ludDMyT25seSk7CiB9CiAKK2lubGluZSBib29sIGlzTm90SW50MzJT
cGVjdWxhdGlvbihTcGVjdWxhdGVkVHlwZSB2YWx1ZSkKK3sKKyAgICByZXR1cm4gdmFsdWUgJiYg
ISh2YWx1ZSAmIFNwZWNJbnQzMk9ubHkpOworfQorCiBpbmxpbmUgYm9vbCBpc0ludDMyT3JCb29s
ZWFuU3BlY3VsYXRpb24oU3BlY3VsYXRlZFR5cGUgdmFsdWUpCiB7CiAgICAgcmV0dXJuIHZhbHVl
ICYmICEodmFsdWUgJiB+KFNwZWNCb29sZWFuIHwgU3BlY0ludDMyT25seSkpOwpAQCAtMzg4LDYg
KzM5OCwxMSBAQCBpbmxpbmUgYm9vbCBpc0Jvb2xlYW5TcGVjdWxhdGlvbihTcGVjdWxhdGVkVHlw
ZSB2YWx1ZSkKICAgICByZXR1cm4gdmFsdWUgPT0gU3BlY0Jvb2xlYW47CiB9CiAKK2lubGluZSBi
b29sIGlzTm90Qm9vbGVhblNwZWN1bGF0aW9uKFNwZWN1bGF0ZWRUeXBlIHZhbHVlKQoreworICAg
IHJldHVybiB2YWx1ZSAmJiAhKHZhbHVlICYgU3BlY0Jvb2xlYW4pOworfQorCiBpbmxpbmUgYm9v
bCBpc090aGVyU3BlY3VsYXRpb24oU3BlY3VsYXRlZFR5cGUgdmFsdWUpCiB7CiAgICAgcmV0dXJu
IHZhbHVlID09IFNwZWNPdGhlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAppbmRleCA0M2I1MWExNmVjYmFk
YTUwZjlkN2Y4OGVlZTNjZjExMjZiN2EyMjRhLi43YWRiYTcxNjAxNDYxNTEwNzJlZjY5OWQyMjZh
MmFmM2NlYTA4ZDAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fi
c3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCkBAIC0zMCw2ICszMCw3IEBACiAjaW5j
bHVkZSAiQXJyYXlDb25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUgIkRGR0Fic3RyYWN0SW50ZXJwcmV0
ZXIuaCIKICNpbmNsdWRlICJET01KSVRHZXR0ZXJTZXR0ZXIuaCIKKyNpbmNsdWRlICJET01KSVRT
aWduYXR1cmUuaCIKICNpbmNsdWRlICJHZXRCeUlkU3RhdHVzLmgiCiAjaW5jbHVkZSAiR2V0dGVy
U2V0dGVyLmgiCiAjaW5jbHVkZSAiSGFzaE1hcEltcGwuaCIKQEAgLTIzMDMsNiArMjMwNCwxMyBA
QCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZm
ZWN0cyh1bnNpZ25lZCBjbG9iYmVyTGltaQogICAgICAgICBmb3JOb2RlKG5vZGUpLnNldFR5cGUo
bV9ncmFwaCwgY2FsbERPTUdldHRlckRhdGEtPmRvbUpJVC0+cmVzdWx0VHlwZSgpKTsKICAgICAg
ICAgYnJlYWs7CiAgICAgfQorICAgIGNhc2UgQ2FsbERPTTogeworICAgICAgICBjb25zdCBET01K
SVQ6OlNpZ25hdHVyZSogc2lnbmF0dXJlID0gbm9kZS0+c2lnbmF0dXJlKCk7CisgICAgICAgIGlm
IChzaWduYXR1cmUtPmVmZmVjdC53cml0ZXMpCisgICAgICAgICAgICBjbG9iYmVyV29ybGQobm9k
ZS0+b3JpZ2luLnNlbWFudGljLCBjbG9iYmVyTGltaXQpOworICAgICAgICBmb3JOb2RlKG5vZGUp
LnNldFR5cGUobV9ncmFwaCwgc2lnbmF0dXJlLT5yZXN1bHQpOworICAgICAgICBicmVhazsKKyAg
ICB9CiAgICAgY2FzZSBDaGVja0FycmF5OiB7CiAgICAgICAgIGlmIChub2RlLT5hcnJheU1vZGUo
KS5hbHJlYWR5Q2hlY2tlZChtX2dyYXBoLCBub2RlLCBmb3JOb2RlKG5vZGUtPmNoaWxkMSgpKSkp
IHsKICAgICAgICAgICAgIG1fc3RhdGUuc2V0Rm91bmRDb25zdGFudHModHJ1ZSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCmluZGV4IDM1ZGMw
Nzg2YTg5Mzc4NWY3MGY3YjMyYzBjZjdiY2RkZTlhN2VkZDkuLjBjMjYxZDFjOTQ5YWMxZDgzOWNj
MWQ5M2U3ZWI5N2NjYjQwYmQ0MTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQnl0ZUNvZGVQYXJzZXIuY3BwCkBAIC0yMTIsNiArMjEyLDggQEAgY2xhc3MgQnl0ZUNvZGVQ
YXJzZXIgewogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoZWNrc0Z1bmN0b3I+CiAgICAgYm9vbCBo
YW5kbGVJbnRyaW5zaWNDYWxsKE5vZGUqIGNhbGxlZSwgaW50IHJlc3VsdE9wZXJhbmQsIEludHJp
bnNpYywgaW50IHJlZ2lzdGVyT2Zmc2V0LCBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMs
IFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24sIGNvbnN0IENoZWNrc0Z1bmN0b3ImIGluc2VydENo
ZWNrcyk7CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hlY2tzRnVuY3Rvcj4KKyAgICBib29sIGhh
bmRsZURPTUpJVENhbGwoTm9kZSogY2FsbGVlLCBpbnQgcmVzdWx0T3BlcmFuZCwgY29uc3QgRE9N
SklUOjpTaWduYXR1cmUqLCBpbnQgcmVnaXN0ZXJPZmZzZXQsIGludCBhcmd1bWVudENvdW50SW5j
bHVkaW5nVGhpcywgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbiwgY29uc3QgQ2hlY2tzRnVuY3Rv
ciYgaW5zZXJ0Q2hlY2tzKTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGVja3NGdW5jdG9yPgog
ICAgIGJvb2wgaGFuZGxlSW50cmluc2ljR2V0dGVyKGludCByZXN1bHRPcGVyYW5kLCBjb25zdCBH
ZXRCeUlkVmFyaWFudCYgaW50cmluc2ljVmFyaWFudCwgTm9kZSogdGhpc05vZGUsIGNvbnN0IENo
ZWNrc0Z1bmN0b3ImIGluc2VydENoZWNrcyk7CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hlY2tz
RnVuY3Rvcj4KICAgICBib29sIGhhbmRsZVR5cGVkQXJyYXlDb25zdHJ1Y3RvcihpbnQgcmVzdWx0
T3BlcmFuZCwgSW50ZXJuYWxGdW5jdGlvbiosIGludCByZWdpc3Rlck9mZnNldCwgaW50IGFyZ3Vt
ZW50Q291bnRJbmNsdWRpbmdUaGlzLCBUeXBlZEFycmF5VHlwZSwgY29uc3QgQ2hlY2tzRnVuY3Rv
ciYgaW5zZXJ0Q2hlY2tzKTsKQEAgLTgxNywxOCArODE5LDE4IEBAIGNsYXNzIEJ5dGVDb2RlUGFy
c2VyIHsKICAgICB9CiAgICAgCiAgICAgTm9kZSogYWRkQ2FsbCgKLSAgICAgICAgaW50IHJlc3Vs
dCwgTm9kZVR5cGUgb3AsIE9wSW5mbyBvcEluZm8sIE5vZGUqIGNhbGxlZSwgaW50IGFyZ0NvdW50
LCBpbnQgcmVnaXN0ZXJPZmZzZXQsCisgICAgICAgIGludCByZXN1bHQsIE5vZGVUeXBlIG9wLCBj
b25zdCBET01KSVQ6OlNpZ25hdHVyZSogc2lnbmF0dXJlLCBOb2RlKiBjYWxsZWUsIGludCBhcmdD
b3VudCwgaW50IHJlZ2lzdGVyT2Zmc2V0LAogICAgICAgICBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0
aW9uKQogICAgIHsKICAgICAgICAgaWYgKG9wID09IFRhaWxDYWxsKSB7CiAgICAgICAgICAgICBp
ZiAoYWxsSW5saW5lRnJhbWVzQXJlVGFpbENhbGxzKCkpCi0gICAgICAgICAgICAgICAgcmV0dXJu
IGFkZENhbGxXaXRob3V0U2V0dGluZ1Jlc3VsdChvcCwgT3BJbmZvKCksIGNhbGxlZSwgYXJnQ291
bnQsIHJlZ2lzdGVyT2Zmc2V0LCBPcEluZm8oKSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIGFk
ZENhbGxXaXRob3V0U2V0dGluZ1Jlc3VsdChvcCwgT3BJbmZvKHNpZ25hdHVyZSksIGNhbGxlZSwg
YXJnQ291bnQsIHJlZ2lzdGVyT2Zmc2V0LCBPcEluZm8oKSk7CiAgICAgICAgICAgICBvcCA9IFRh
aWxDYWxsSW5saW5lZENhbGxlcjsKICAgICAgICAgfQogCiAKICAgICAgICAgTm9kZSogY2FsbCA9
IGFkZENhbGxXaXRob3V0U2V0dGluZ1Jlc3VsdCgKLSAgICAgICAgICAgIG9wLCBvcEluZm8sIGNh
bGxlZSwgYXJnQ291bnQsIHJlZ2lzdGVyT2Zmc2V0LCBPcEluZm8ocHJlZGljdGlvbikpOworICAg
ICAgICAgICAgb3AsIE9wSW5mbyhzaWduYXR1cmUpLCBjYWxsZWUsIGFyZ0NvdW50LCByZWdpc3Rl
ck9mZnNldCwgT3BJbmZvKHByZWRpY3Rpb24pKTsKICAgICAgICAgVmlydHVhbFJlZ2lzdGVyIHJl
c3VsdFJlZyhyZXN1bHQpOwogICAgICAgICBpZiAocmVzdWx0UmVnLmlzVmFsaWQoKSkKICAgICAg
ICAgICAgIHNldChyZXN1bHRSZWcsIGNhbGwpOwpAQCAtMTI4Myw3ICsxMjg1LDcgQEAgQnl0ZUNv
ZGVQYXJzZXI6OlRlcm1pbmFsaXR5IEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVDYWxsKAogICAgICAg
ICAvLyBPZGRseSwgdGhpcyBjb25mbGF0ZXMgY2FsbHMgdGhhdCBoYXZlbid0IGV4ZWN1dGVkIHdp
dGggY2FsbHMgdGhhdCBiZWhhdmVkIHN1ZmZpY2llbnRseSBwb2x5bW9ycGhpY2FsbHkKICAgICAg
ICAgLy8gdGhhdCB3ZSBjYW5ub3Qgb3B0aW1pemUgdGhlbS4KIAotICAgICAgICBOb2RlKiBjYWxs
Tm9kZSA9IGFkZENhbGwocmVzdWx0LCBvcCwgT3BJbmZvKCksIGNhbGxUYXJnZXQsIGFyZ3VtZW50
Q291bnRJbmNsdWRpbmdUaGlzLCByZWdpc3Rlck9mZnNldCwgcHJlZGljdGlvbik7CisgICAgICAg
IE5vZGUqIGNhbGxOb2RlID0gYWRkQ2FsbChyZXN1bHQsIG9wLCBudWxscHRyLCBjYWxsVGFyZ2V0
LCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgcmVnaXN0ZXJPZmZzZXQsIHByZWRpY3Rpb24p
OwogICAgICAgICBpZiAoY2FsbE5vZGUtPm9wKCkgPT0gVGFpbENhbGwpCiAgICAgICAgICAgICBy
ZXR1cm4gVGVybWluYWw7CiAgICAgICAgIEFTU0VSVChjYWxsTm9kZS0+b3AoKSAhPSBUYWlsQ2Fs
bFZhcmFyZ3MgJiYgY2FsbE5vZGUtPm9wKCkgIT0gVGFpbENhbGxGb3J3YXJkVmFyYXJncyk7CkBA
IC0xMjk4LDcgKzEzMDAsNyBAQCBCeXRlQ29kZVBhcnNlcjo6VGVybWluYWxpdHkgQnl0ZUNvZGVQ
YXJzZXI6OmhhbmRsZUNhbGwoCiAgICAgICAgIHJldHVybiBOb25UZXJtaW5hbDsKICAgICB9CiAg
ICAgCi0gICAgTm9kZSogY2FsbE5vZGUgPSBhZGRDYWxsKHJlc3VsdCwgb3AsIE9wSW5mbygpLCBj
YWxsVGFyZ2V0LCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgcmVnaXN0ZXJPZmZzZXQsIHBy
ZWRpY3Rpb24pOworICAgIE5vZGUqIGNhbGxOb2RlID0gYWRkQ2FsbChyZXN1bHQsIG9wLCBudWxs
cHRyLCBjYWxsVGFyZ2V0LCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgcmVnaXN0ZXJPZmZz
ZXQsIHByZWRpY3Rpb24pOwogICAgIGlmIChjYWxsTm9kZS0+b3AoKSA9PSBUYWlsQ2FsbCkKICAg
ICAgICAgcmV0dXJuIFRlcm1pbmFsOwogICAgIEFTU0VSVChjYWxsTm9kZS0+b3AoKSAhPSBUYWls
Q2FsbFZhcmFyZ3MgJiYgY2FsbE5vZGUtPm9wKCkgIT0gVGFpbENhbGxGb3J3YXJkVmFyYXJncyk7
CkBAIC0xNzI1LDYgKzE3MjcsMTkgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6YXR0ZW1wdFRvSW5s
aW5lQ2FsbChOb2RlKiBjYWxsVGFyZ2V0Tm9kZSwgaW50IHJlc3VsdE9wZXJhbmQKICAgICAgICAg
ICAgIFJFTEVBU0VfQVNTRVJUKCFkaWRJbnNlcnRDaGVja3MpOwogICAgICAgICAgICAgLy8gV2Ug
bWlnaHQgc3RpbGwgdHJ5IHRvIGlubGluZSB0aGUgSW50cmluc2ljIGJlY2F1c2UgaXQgbWlnaHQg
YmUgYSBidWlsdGluIEpTIGZ1bmN0aW9uLgogICAgICAgICB9CisKKyAgICAgICAgaWYgKE9wdGlv
bnM6OnVzZURPTUpJVCgpKSB7CisgICAgICAgICAgICBpZiAoY29uc3QgRE9NSklUOjpTaWduYXR1
cmUqIHNpZ25hdHVyZSA9IGNhbGxlZS5zaWduYXR1cmVGb3Ioc3BlY2lhbGl6YXRpb25LaW5kKSkg
eworICAgICAgICAgICAgICAgIGlmIChoYW5kbGVET01KSVRDYWxsKGNhbGxUYXJnZXROb2RlLCBy
ZXN1bHRPcGVyYW5kLCBzaWduYXR1cmUsIHJlZ2lzdGVyT2Zmc2V0LCBhcmd1bWVudENvdW50SW5j
bHVkaW5nVGhpcywgcHJlZGljdGlvbiwgaW5zZXJ0Q2hlY2tzV2l0aEFjY291bnRpbmcpKSB7Cisg
ICAgICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGRpZEluc2VydENoZWNrcyk7CisgICAg
ICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoUGhhbnRvbSwgY2FsbFRhcmdldE5vZGUpOworICAg
ICAgICAgICAgICAgICAgICBlbWl0QXJndW1lbnRQaGFudG9tcyhyZWdpc3Rlck9mZnNldCwgYXJn
dW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpOworICAgICAgICAgICAgICAgICAgICBpbmxpbmluZ0Jh
bGFuY2UtLTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKCFkaWRJbnNlcnRDaGVja3MpOwor
ICAgICAgICAgICAgfQorICAgICAgICB9CiAgICAgfQogICAgIAogICAgIHVuc2lnbmVkIG15SW5s
aW5pbmdDb3N0ID0gaW5saW5pbmdDb3N0KGNhbGxlZSwgYXJndW1lbnRDb3VudEluY2x1ZGluZ1Ro
aXMsIElubGluZUNhbGxGcmFtZTo6Y2FsbE1vZGVGb3Ioa2luZCkpOwpAQCAtMjA1MCw3ICsyMDY1
LDcgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW5saW5pbmcoCiAgICAgTm9kZSogbXlD
YWxsVGFyZ2V0Tm9kZSA9IGdldERpcmVjdChjYWxsZWVSZWcpOwogICAgIGlmIChjb3VsZFRha2VT
bG93UGF0aCkgewogICAgICAgICBhZGRDYWxsKAotICAgICAgICAgICAgcmVzdWx0T3BlcmFuZCwg
Y2FsbE9wLCBPcEluZm8oKSwgbXlDYWxsVGFyZ2V0Tm9kZSwgYXJndW1lbnRDb3VudEluY2x1ZGlu
Z1RoaXMsCisgICAgICAgICAgICByZXN1bHRPcGVyYW5kLCBjYWxsT3AsIG51bGxwdHIsIG15Q2Fs
bFRhcmdldE5vZGUsIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLAogICAgICAgICAgICAgcmVn
aXN0ZXJPZmZzZXQsIHByZWRpY3Rpb24pOwogICAgIH0gZWxzZSB7CiAgICAgICAgIGFkZFRvR3Jh
cGgoQ2hlY2tCYWRDZWxsKTsKQEAgLTI2MDAsNiArMjYxNSwyMCBAQCBib29sIEJ5dGVDb2RlUGFy
c2VyOjpoYW5kbGVJbnRyaW5zaWNDYWxsKE5vZGUqIGNhbGxlZSwgaW50IHJlc3VsdE9wZXJhbmQs
IEludHJpbgogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGVja3NGdW5jdG9yPgorYm9vbCBCeXRl
Q29kZVBhcnNlcjo6aGFuZGxlRE9NSklUQ2FsbChOb2RlKiBjYWxsVGFyZ2V0LCBpbnQgcmVzdWx0
T3BlcmFuZCwgY29uc3QgRE9NSklUOjpTaWduYXR1cmUqIHNpZ25hdHVyZSwgaW50IHJlZ2lzdGVy
T2Zmc2V0LCBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIFNwZWN1bGF0ZWRUeXBlIHBy
ZWRpY3Rpb24sIGNvbnN0IENoZWNrc0Z1bmN0b3ImIGluc2VydENoZWNrcykKK3sKKyAgICBpZiAo
YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgIT0gc3RhdGljX2Nhc3Q8aW50PigxICsgc2lnbmF0
dXJlLT5hcmd1bWVudENvdW50KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmIChtX2lu
bGluZVN0YWNrVG9wLT5tX2V4aXRQcm9maWxlLmhhc0V4aXRTaXRlKG1fY3VycmVudEluZGV4LCBC
YWRUeXBlKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaW5zZXJ0Q2hlY2tzKCk7Cisg
ICAgYWRkQ2FsbChyZXN1bHRPcGVyYW5kLCBDYWxsLCBzaWduYXR1cmUsIGNhbGxUYXJnZXQsIGFy
Z3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCByZWdpc3Rlck9mZnNldCwgcHJlZGljdGlvbik7Cisg
ICAgcmV0dXJuIHRydWU7Cit9CisKKwordGVtcGxhdGU8dHlwZW5hbWUgQ2hlY2tzRnVuY3Rvcj4K
IGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUludHJpbnNpY0dldHRlcihpbnQgcmVzdWx0T3Bl
cmFuZCwgY29uc3QgR2V0QnlJZFZhcmlhbnQmIHZhcmlhbnQsIE5vZGUqIHRoaXNOb2RlLCBjb25z
dCBDaGVja3NGdW5jdG9yJiBpbnNlcnRDaGVja3MpCiB7CiAgICAgc3dpdGNoICh2YXJpYW50Lmlu
dHJpbnNpYygpKSB7CkBAIC00NzkxLDcgKzQ4MjAsNyBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpw
YXJzZUJsb2NrKHVuc2lnbmVkIGxpbWl0KQogICAgICAgICAgICAgaW50IGNhbGxlZSA9IGN1cnJl
bnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBpbnQgYXJndW1lbnRDb3Vu
dEluY2x1ZGluZ1RoaXMgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bM10udS5vcGVyYW5kOwogICAgICAg
ICAgICAgaW50IHJlZ2lzdGVyT2Zmc2V0ID0gLWN1cnJlbnRJbnN0cnVjdGlvbls0XS51Lm9wZXJh
bmQ7Ci0gICAgICAgICAgICBhZGRDYWxsKHJlc3VsdCwgQ2FsbEV2YWwsIE9wSW5mbygpLCBnZXQo
VmlydHVhbFJlZ2lzdGVyKGNhbGxlZSkpLCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgcmVn
aXN0ZXJPZmZzZXQsIGdldFByZWRpY3Rpb24oKSk7CisgICAgICAgICAgICBhZGRDYWxsKHJlc3Vs
dCwgQ2FsbEV2YWwsIG51bGxwdHIsIGdldChWaXJ0dWFsUmVnaXN0ZXIoY2FsbGVlKSksIGFyZ3Vt
ZW50Q291bnRJbmNsdWRpbmdUaGlzLCByZWdpc3Rlck9mZnNldCwgZ2V0UHJlZGljdGlvbigpKTsK
ICAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX2NhbGxfZXZhbCk7CiAgICAgICAgIH0KICAgICAg
ICAgICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVy
aXplLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaAppbmRleCBi
NjIxZWYwMjJkODg2NWUyZTdhMjAxMTZjZDIwOGM1YzI0NmM5ZmZiLi5lNWQyMTcyZjlhZTBlNzkx
YWFhMmE2ODJiYWIxNGViYTkzMDY3ZGJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0Nsb2JiZXJpemUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0Nsb2JiZXJpemUuaApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIkRGR0xhenlOb2RlLmgi
CiAjaW5jbHVkZSAiREZHUHVyZVZhbHVlLmgiCiAjaW5jbHVkZSAiRE9NSklUQ2FsbERPTUdldHRl
clBhdGNocG9pbnQuaCIKKyNpbmNsdWRlICJET01KSVRTaWduYXR1cmUuaCIKIAogbmFtZXNwYWNl
IEpTQyB7IG5hbWVzcGFjZSBERkcgewogCkBAIC05NTgsMjAgKzk1OSwzOCBAQCB2b2lkIGNsb2Ji
ZXJpemUoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlLCBjb25zdCBSZWFkRnVuY3RvciYgcmVhZCwg
Y29uc3QgV3JpdGVGdQogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgIHdyaXRlKEFi
c3RyYWN0SGVhcChET01TdGF0ZSwgZWZmZWN0LndyaXRlcy5yYXdSZXByZXNlbnRhdGlvbigpKSk7
CiAgICAgICAgIH0KLSAgICAgICAgaWYgKGVmZmVjdC5kZWYpIHsKLSAgICAgICAgICAgIERPTUpJ
VDo6SGVhcFJhbmdlIHJhbmdlID0gZWZmZWN0LmRlZi52YWx1ZSgpOworICAgICAgICBpZiAoZWZm
ZWN0LmRlZiAhPSBET01KSVQ6OkhlYXBSYW5nZTo6dG9wKCkpIHsKKyAgICAgICAgICAgIERPTUpJ
VDo6SGVhcFJhbmdlIHJhbmdlID0gZWZmZWN0LmRlZjsKICAgICAgICAgICAgIGlmIChyYW5nZSA9
PSBET01KSVQ6OkhlYXBSYW5nZTo6bm9uZSgpKQogICAgICAgICAgICAgICAgIGRlZihQdXJlVmFs
dWUobm9kZSwgbm9kZS0+Y2FsbERPTUdldHRlckRhdGEoKS0+ZG9tSklUKSk7CiAgICAgICAgICAg
ICBlbHNlIHsKICAgICAgICAgICAgICAgICAvLyBEZWYgd2l0aCBoZWFwIGxvY2F0aW9uLiBXZSBk
byBub3QgaW5jbHVkZSAiR2xvYmFsT2JqZWN0IiBmb3IgdGhhdCBzaW5jZSB0aGlzIGluZm9ybWF0
aW9uIGlzIGluY2x1ZGVkIGluIHRoZSBiYXNlIG5vZGUuCi0gICAgICAgICAgICAgICAgLy8gRklY
TUU6IFdoZW4gc3VwcG9ydGluZyB0aGUgb3RoZXIgbm9kZXMgbGlrZSBnZXRFbGVtZW50QnlJZCgi
c3RyaW5nIiksIHdlIHNob3VsZCBpbmNsdWRlIHRoZSBiYXNlIGFuZCB0aGUgaWQgc3RyaW5nLgot
ICAgICAgICAgICAgICAgIC8vIEN1cnJlbnRseSwgd2Ugb25seSBzZWUgdGhlIERPTUpJVCBnZXR0
ZXIgaGVyZS4gU28ganVzdCBpbmNsdWRpbmcgImJhc2UiIGlzIG9rLgorICAgICAgICAgICAgICAg
IC8vIFdlIG9ubHkgc2VlIHRoZSBET01KSVQgZ2V0dGVyIGhlcmUuIFNvIGp1c3QgaW5jbHVkaW5n
ICJiYXNlIiBpcyBvay4KICAgICAgICAgICAgICAgICBkZWYoSGVhcExvY2F0aW9uKERPTVN0YXRl
TG9jLCBBYnN0cmFjdEhlYXAoRE9NU3RhdGUsIHJhbmdlLnJhd1JlcHJlc2VudGF0aW9uKCkpLCBu
b2RlLT5jaGlsZDEoKSksIExhenlOb2RlKG5vZGUpKTsKICAgICAgICAgICAgIH0KICAgICAgICAg
fQogICAgICAgICByZXR1cm47CiAgICAgfQogCisgICAgY2FzZSBDYWxsRE9NOiB7CisgICAgICAg
IGNvbnN0IERPTUpJVDo6U2lnbmF0dXJlKiBzaWduYXR1cmUgPSBub2RlLT5zaWduYXR1cmUoKTsK
KyAgICAgICAgRE9NSklUOjpFZmZlY3QgZWZmZWN0ID0gc2lnbmF0dXJlLT5lZmZlY3Q7CisgICAg
ICAgIGlmIChlZmZlY3QucmVhZHMpIHsKKyAgICAgICAgICAgIGlmIChlZmZlY3QucmVhZHMgPT0g
RE9NSklUOjpIZWFwUmFuZ2U6OnRvcCgpKQorICAgICAgICAgICAgICAgIHJlYWQoV29ybGQpOwor
ICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHJlYWQoQWJzdHJhY3RIZWFwKERPTVN0
YXRlLCBlZmZlY3QucmVhZHMucmF3UmVwcmVzZW50YXRpb24oKSkpOworICAgICAgICB9CisgICAg
ICAgIGlmIChlZmZlY3Qud3JpdGVzKSB7CisgICAgICAgICAgICBpZiAoZWZmZWN0LndyaXRlcyA9
PSBET01KSVQ6OkhlYXBSYW5nZTo6dG9wKCkpCisgICAgICAgICAgICAgICAgd3JpdGUoSGVhcCk7
CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgd3JpdGUoQWJzdHJhY3RIZWFwKERP
TVN0YXRlLCBlZmZlY3Qud3JpdGVzLnJhd1JlcHJlc2VudGF0aW9uKCkpKTsKKyAgICAgICAgfQor
ICAgICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKGVmZmVjdC5kZWYgPT0gRE9NSklUOjpIZWFwUmFu
Z2U6OnRvcCgpLCAiQ3VycmVudGx5LCB3ZSBkbyBub3QgYWNjZXB0IGFueSBkZWYgZm9yIENhbGxE
T00uIik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKICAgICBjYXNlIEFycmF5aWZ5OgogICAg
IGNhc2UgQXJyYXlpZnlUb1N0cnVjdHVyZToKICAgICAgICAgcmVhZChKU0NlbGxfc3RydWN0dXJl
SUQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCmluZGV4IDk3Y2Q4NDg3
NDc3YWM5MDg0ZmU5MGRkYjk4ZDMwZjQ2NmU1Y2ExNmYuLjllNmFhNTUwYTQ0ZTBlMWM2MjE3NWU1
MTlmNjBhM2U4NTE1YTdiN2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHRG9lc0dDLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5j
cHAKQEAgLTMwMSw2ICszMDEsNyBAQCBib29sIGRvZXNHQyhHcmFwaCYgZ3JhcGgsIE5vZGUqIG5v
ZGUpCiAgICAgY2FzZSBDcmVhdGVSZXN0OgogICAgIGNhc2UgVG9Mb3dlckNhc2U6CiAgICAgY2Fz
ZSBDYWxsRE9NR2V0dGVyOgorICAgIGNhc2UgQ2FsbERPTToKICAgICAgICAgcmV0dXJuIHRydWU7
CiAgICAgICAgIAogICAgIGNhc2UgTXVsdGlQdXRCeU9mZnNldDoKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCmluZGV4IDFkNGU5MDdhN2YyZmZjYzJkOWEyYTAz
NzcxMTQ2YTc5MTAxZjNjZDMuLjEyZWY0Y2Q4YTRkOTgyN2IxZTJiNGNlOGJlOTA3YzhiMzYwNjg3
MjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcApAQCAt
MTcwOCw5ICsxNzA4LDEwIEBAIGNsYXNzIEZpeHVwUGhhc2UgOiBwdWJsaWMgUGhhc2UgewogICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIAotICAgICAgICBjYXNlIENoZWNrRE9NOgotICAg
ICAgICAgICAgZml4RWRnZTxDZWxsVXNlPihub2RlLT5jaGlsZDEoKSk7CisgICAgICAgIGNhc2Ug
Q2hlY2tET006IHsKKyAgICAgICAgICAgIGZpeHVwQ2hlY2tET00obm9kZSk7CiAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgfQogCiAgICAgICAgIGNhc2UgQ2FsbERPTUdldHRlcjogewogICAg
ICAgICAgICAgRE9NSklUOjpDYWxsRE9NR2V0dGVyUGF0Y2hwb2ludCogcGF0Y2hwb2ludCA9IG5v
ZGUtPmNhbGxET01HZXR0ZXJEYXRhKCktPnBhdGNocG9pbnQ7CkBAIC0xNzIwLDYgKzE3MjEsMTYg
QEAgY2xhc3MgRml4dXBQaGFzZSA6IHB1YmxpYyBQaGFzZSB7CiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgfQogCisgICAgICAgIGNhc2UgQ2FsbERPTTogeworICAgICAgICAgICAgZml4dXBD
YWxsRE9NKG5vZGUpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAgICBj
YXNlIENhbGw6IHsKKyAgICAgICAgICAgIGF0dGVtcHRUb01ha2VDYWxsRE9NKG5vZGUpOworICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKwogI2lmICFBU1NFUlRfRElTQUJMRUQKICAgICAg
ICAgLy8gSGF2ZSB0aGVzZSBuby1vcCBjYXNlcyBoZXJlIHRvIGVuc3VyZSB0aGF0IG5vYm9keSBm
b3JnZXRzIHRvIGFkZCBoYW5kbGVycyBmb3IgbmV3IG9wY29kZXMuCiAgICAgICAgIGNhc2UgU2V0
QXJndW1lbnQ6CkBAIC0xNzM2LDcgKzE3NDcsNiBAQCBjbGFzcyBGaXh1cFBoYXNlIDogcHVibGlj
IFBoYXNlIHsKICAgICAgICAgY2FzZSBHZXRHbG9iYWxWYXI6CiAgICAgICAgIGNhc2UgR2V0R2xv
YmFsTGV4aWNhbFZhcmlhYmxlOgogICAgICAgICBjYXNlIE5vdGlmeVdyaXRlOgotICAgICAgICBj
YXNlIENhbGw6CiAgICAgICAgIGNhc2UgRGlyZWN0Q2FsbDoKICAgICAgICAgY2FzZSBDaGVja1R5
cGVJbmZvRmxhZ3M6CiAgICAgICAgIGNhc2UgVGFpbENhbGxJbmxpbmVkQ2FsbGVyOgpAQCAtMjY1
OSw2ICsyNjY5LDkwIEBAIGNsYXNzIEZpeHVwUGhhc2UgOiBwdWJsaWMgUGhhc2UgewogICAgICAg
ICAgICAgT3BJbmZvKGFycmF5TW9kZS5hc1dvcmQoKSksIEVkZ2UoY2hpbGQsIEtub3duQ2VsbFVz
ZSksIEVkZ2Uoc3RvcmFnZSkpOwogICAgIH0KICAgICAKKyAgICBib29sIGF0dGVtcHRUb01ha2VD
YWxsRE9NKE5vZGUqIG5vZGUpCisgICAgeworICAgICAgICBpZiAobV9ncmFwaC5oYXNFeGl0U2l0
ZShub2RlLT5vcmlnaW4uc2VtYW50aWMsIEJhZFR5cGUpKQorICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOworCisgICAgICAgIGNvbnN0IERPTUpJVDo6U2lnbmF0dXJlKiBzaWduYXR1cmUgPSBub2Rl
LT5zaWduYXR1cmUoKTsKKyAgICAgICAgaWYgKCFzaWduYXR1cmUpCisgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CisKKyAgICAgICAgeworICAgICAgICAgICAgdW5zaWduZWQgaW5kZXggPSAwOwor
ICAgICAgICAgICAgYm9vbCBzaG91bGRDb252ZXJ0VG9DYWxsRE9NID0gdHJ1ZTsKKyAgICAgICAg
ICAgIG1fZ3JhcGguZG9Ub0NoaWxkcmVuKG5vZGUsIFsmXShFZGdlJiBlZGdlKSB7CisgICAgICAg
ICAgICAgICAgLy8gQ2FsbGVlLiBJZ25vcmUgdGhpcy4gREZHQnl0ZUNvZGVQYXJzZXIgYWxyZWFk
eSBlbWl0IGFwcHJvcHJpYXRlIGNoZWNrcy4KKyAgICAgICAgICAgICAgICBpZiAoIWluZGV4KQor
ICAgICAgICAgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgICAgICAgICBpZiAoaW5kZXgg
PT0gMSkgeworICAgICAgICAgICAgICAgICAgICAvLyBET00gbm9kZSBjYXNlLgorICAgICAgICAg
ICAgICAgICAgICBpZiAoZWRnZS0+c2hvdWxkU3BlY3VsYXRlTm90Q2VsbCgpKQorICAgICAgICAg
ICAgICAgICAgICAgICAgc2hvdWxkQ29udmVydFRvQ2FsbERPTSA9IGZhbHNlOworICAgICAgICAg
ICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoc2lnbmF0dXJlLT5h
cmd1bWVudHNbaW5kZXggLSAyXSkgeworICAgICAgICAgICAgICAgICAgICBjYXNlIFNwZWNTdHJp
bmc6CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZWRnZS0+c2hvdWxkU3BlY3VsYXRlTm90
U3RyaW5nKCkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hvdWxkQ29udmVydFRvQ2Fs
bERPTSA9IGZhbHNlOworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICAgICAgICAgIGNhc2UgU3BlY0ludDMyT25seToKKyAgICAgICAgICAgICAgICAgICAgICAgIGlm
IChlZGdlLT5zaG91bGRTcGVjdWxhdGVOb3RJbnQzMigpKQorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHNob3VsZENvbnZlcnRUb0NhbGxET00gPSBmYWxzZTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICBjYXNlIFNwZWNCb29sZWFuOgorICAg
ICAgICAgICAgICAgICAgICAgICAgaWYgKGVkZ2UtPnNob3VsZFNwZWN1bGF0ZU5vdEJvb2xlYW4o
KSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaG91bGRDb252ZXJ0VG9DYWxsRE9NID0g
ZmFsc2U7CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICArK2luZGV4OworICAgICAg
ICAgICAgfSk7CisgICAgICAgICAgICBpZiAoIXNob3VsZENvbnZlcnRUb0NhbGxET00pCisgICAg
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisKKyAgICAgICAgTm9kZSogdGhp
c05vZGUgPSBtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDEpLm5vZGUoKTsKKyAgICAgICAgUmVm
PERPTUpJVDo6UGF0Y2hwb2ludD4gY2hlY2tET01QYXRjaHBvaW50ID0gc2lnbmF0dXJlLT5jaGVj
a0RPTSgpOworICAgICAgICBtX2dyYXBoLm1fZG9tSklUUGF0Y2hwb2ludHMuYXBwZW5kKGNoZWNr
RE9NUGF0Y2hwb2ludC5wdHIoKSk7CisgICAgICAgIE5vZGUqIGNoZWNrRE9NID0gbV9pbnNlcnRp
b25TZXQuaW5zZXJ0Tm9kZShtX2luZGV4SW5CbG9jaywgU3BlY05vbmUsIENoZWNrRE9NLCBub2Rl
LT5vcmlnaW4sIE9wSW5mbyhjaGVja0RPTVBhdGNocG9pbnQucHRyKCkpLCBPcEluZm8oc2lnbmF0
dXJlLT5jbGFzc0luZm8pLCBFZGdlKHRoaXNOb2RlKSk7CisgICAgICAgIG5vZGUtPmNvbnZlcnRU
b0NhbGxET00obV9ncmFwaCk7CisgICAgICAgIGZpeHVwQ2hlY2tET00oY2hlY2tET00pOworICAg
ICAgICBmaXh1cENhbGxET00obm9kZSk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKwor
ICAgIHZvaWQgZml4dXBDaGVja0RPTShOb2RlKiBub2RlKQorICAgIHsKKyAgICAgICAgZml4RWRn
ZTxDZWxsVXNlPihub2RlLT5jaGlsZDEoKSk7CisgICAgfQorCisgICAgdm9pZCBmaXh1cENhbGxE
T00oTm9kZSogbm9kZSkKKyAgICB7CisgICAgICAgIGNvbnN0IERPTUpJVDo6U2lnbmF0dXJlKiBz
aWduYXR1cmUgPSBub2RlLT5zaWduYXR1cmUoKTsKKyAgICAgICAgYXV0byBmaXh1cCA9IFsmXShF
ZGdlJiBlZGdlLCBpbnQgYXJndW1lbnRJbmRleCkgeworICAgICAgICAgICAgaWYgKCFlZGdlKQor
ICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIHN3aXRjaCAoc2lnbmF0dXJlLT5h
cmd1bWVudHNbYXJndW1lbnRJbmRleF0pIHsKKyAgICAgICAgICAgIGNhc2UgU3BlY1N0cmluZzoK
KyAgICAgICAgICAgICAgICBmaXhFZGdlPFN0cmluZ1VzZT4oZWRnZSk7CisgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIFNwZWNJbnQzMk9ubHk6CisgICAgICAgICAgICAg
ICAgZml4RWRnZTxJbnQzMlVzZT4oZWRnZSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICBjYXNlIFNwZWNCb29sZWFuOgorICAgICAgICAgICAgICAgIGZpeEVkZ2U8Qm9vbGVh
blVzZT4oZWRnZSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBkZWZhdWx0
OgorICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH07CisgICAgICAgIGZpeEVk
Z2U8Q2VsbFVzZT4obm9kZS0+Y2hpbGQxKCkpOyAvLyBET00uCisgICAgICAgIGZpeHVwKG5vZGUt
PmNoaWxkMigpLCAwKTsKKyAgICAgICAgZml4dXAobm9kZS0+Y2hpbGQzKCksIDEpOworICAgIH0K
KwogICAgIHZvaWQgZml4dXBDaGVja3NJbkJsb2NrKEJhc2ljQmxvY2sqIGJsb2NrKQogICAgIHsK
ICAgICAgICAgaWYgKCFibG9jaykKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHTm9kZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuY3BwCmlu
ZGV4IGYzNzExN2JmOTY5ZmU0YjY5ZDk1ZjAwMWQ1Njg4MDQ2YmRjZDk0NTAuLmNlMjVjMGRkMTMy
MTBiZTEyYWI5NTc5MDJkYmE2NjlhN2JkODZkZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHTm9kZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdOb2RlLmNwcApAQCAtMjIwLDYgKzIyMCwyNSBAQCB2b2lkIE5vZGU6OmNvbnZlcnRUb0RpcmVj
dENhbGwoRnJvemVuVmFsdWUqIGV4ZWN1dGFibGUpCiAgICAgbV9vcEluZm8gPSBleGVjdXRhYmxl
OwogfQogCit2b2lkIE5vZGU6OmNvbnZlcnRUb0NhbGxET00oR3JhcGgmIGdyYXBoKQoreworICAg
IEFTU0VSVChvcCgpID09IENhbGwpOworICAgIEFTU0VSVChzaWduYXR1cmUoKSk7CisKKyAgICBF
ZGdlIGVkZ2VzWzNdOworICAgIC8vIFNraXAgdGhlIGZpcnN0IG9uZS4gVGhpcyBpcyBjYWxsZWUu
CisgICAgZm9yICh1bnNpZ25lZCBpID0gMSwgaXogPSBudW1DaGlsZHJlbigpOyBpIDwgaXo7ICsr
aSkKKyAgICAgICAgZWRnZXNbaSAtIDFdID0gZ3JhcGgudmFyQXJnQ2hpbGQodGhpcywgaSk7CisK
KyAgICBzZXRPcEFuZERlZmF1bHRGbGFncyhDYWxsRE9NKTsKKyAgICBjaGlsZHJlbi5zZXRDaGls
ZDEoZWRnZXNbMF0pOworICAgIGNoaWxkcmVuLnNldENoaWxkMihlZGdlc1sxXSk7CisgICAgY2hp
bGRyZW4uc2V0Q2hpbGQzKGVkZ2VzWzJdKTsKKworICAgIGlmICghc2lnbmF0dXJlKCktPmVmZmVj
dC5tdXN0R2VuZXJhdGUoKSkKKyAgICAgICAgY2xlYXJGbGFncyhOb2RlTXVzdEdlbmVyYXRlKTsK
K30KKwogU3RyaW5nIE5vZGU6OnRyeUdldFN0cmluZyhHcmFwaCYgZ3JhcGgpCiB7CiAgICAgaWYg
KGhhc0NvbnN0YW50KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R05vZGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCmluZGV4IDg4Zjg4
MTE4OTBlMTc3M2VhMWQ2MDJlOWNhYzljNTgxZGE0ZjliOWIuLjgzMDlhYTMwOWEwYTllNjE0MmNj
YTI5NTE5MjhlYWRhYjk3MmE1YjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHTm9kZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCkBA
IC02Miw2ICs2Miw3IEBAIG5hbWVzcGFjZSBET01KSVQgewogY2xhc3MgR2V0dGVyU2V0dGVyOwog
Y2xhc3MgUGF0Y2hwb2ludDsKIGNsYXNzIENhbGxET01HZXR0ZXJQYXRjaHBvaW50OworY2xhc3Mg
U2lnbmF0dXJlOwogfQogCiBuYW1lc3BhY2UgUHJvZmlsZXIgewpAQCAtNjUyLDYgKzY1Myw4IEBA
IHN0cnVjdCBOb2RlIHsKICAgICB9CiAgICAgCiAgICAgdm9pZCBjb252ZXJ0VG9EaXJlY3RDYWxs
KEZyb3plblZhbHVlKik7CisKKyAgICB2b2lkIGNvbnZlcnRUb0NhbGxET00oR3JhcGgmKTsKICAg
ICAKICAgICBKU1ZhbHVlIGFzSlNWYWx1ZSgpCiAgICAgewpAQCAtMTQ2NCw2ICsxNDY3LDcgQEAg
c3RydWN0IE5vZGUgewogICAgICAgICBjYXNlIFRvTnVtYmVyOgogICAgICAgICBjYXNlIExvYWRG
cm9tSlNNYXBCdWNrZXQ6CiAgICAgICAgIGNhc2UgQ2FsbERPTUdldHRlcjoKKyAgICAgICAgY2Fz
ZSBDYWxsRE9NOgogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIGRlZmF1bHQ6CiAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0xOTgxLDYgKzE5ODUsMTEgQEAgc3RydWN0IE5v
ZGUgewogICAgIHsKICAgICAgICAgcmV0dXJuIGlzSW50MzJTcGVjdWxhdGlvbihwcmVkaWN0aW9u
KCkpOwogICAgIH0KKworICAgIGJvb2wgc2hvdWxkU3BlY3VsYXRlTm90SW50MzIoKQorICAgIHsK
KyAgICAgICAgcmV0dXJuIGlzTm90SW50MzJTcGVjdWxhdGlvbihwcmVkaWN0aW9uKCkpOworICAg
IH0KICAgICAKICAgICBib29sIHNhd0Jvb2xlYW5zKCkKICAgICB7CkBAIC0yMDQxLDYgKzIwNTAs
MTEgQEAgc3RydWN0IE5vZGUgewogICAgIHsKICAgICAgICAgcmV0dXJuIGlzQm9vbGVhblNwZWN1
bGF0aW9uKHByZWRpY3Rpb24oKSk7CiAgICAgfQorCisgICAgYm9vbCBzaG91bGRTcGVjdWxhdGVO
b3RCb29sZWFuKCkKKyAgICB7CisgICAgICAgIHJldHVybiBpc05vdEJvb2xlYW5TcGVjdWxhdGlv
bihwcmVkaWN0aW9uKCkpOworICAgIH0KICAgICAKICAgICBib29sIHNob3VsZFNwZWN1bGF0ZU90
aGVyKCkKICAgICB7CkBAIC0yMDY2LDYgKzIwODAsMTEgQEAgc3RydWN0IE5vZGUgewogICAgIHsK
ICAgICAgICAgcmV0dXJuIGlzU3RyaW5nU3BlY3VsYXRpb24ocHJlZGljdGlvbigpKTsKICAgICB9
CisKKyAgICBib29sIHNob3VsZFNwZWN1bGF0ZU5vdFN0cmluZygpCisgICAgeworICAgICAgICBy
ZXR1cm4gaXNOb3RTdHJpbmdTcGVjdWxhdGlvbihwcmVkaWN0aW9uKCkpOworICAgIH0KICAKICAg
ICBib29sIHNob3VsZFNwZWN1bGF0ZVN0cmluZ09yT3RoZXIoKQogICAgIHsKQEAgLTIzNjgsNiAr
MjM4NywxOCBAQCBzdHJ1Y3QgTm9kZSB7CiAgICAgICAgIHJldHVybiBtX29wSW5mbzIuYXM8Y29u
c3QgQ2xhc3NJbmZvKj4oKTsKICAgICB9CiAKKyAgICBib29sIGhhc1NpZ25hdHVyZSgpIGNvbnN0
CisgICAgeworICAgICAgICAvLyBOb3RlIHRoYXQgdGhpcyBkb2VzIG5vdCBpbmNsdWRlIFRhaWxD
YWxsIHRoaW5neSBpbnRlbnRpb25hbGx5LgorICAgICAgICAvLyBDYWxsRE9NIHRoaW5neSBhcmUg
YWx3YXlzIGNvbnZlcnRlZCBmcm9tIENhbGwuCisgICAgICAgIHJldHVybiBvcCgpID09IENhbGwg
fHwgb3AoKSA9PSBDYWxsRE9NOworICAgIH0KKworICAgIGNvbnN0IERPTUpJVDo6U2lnbmF0dXJl
KiBzaWduYXR1cmUoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fb3BJbmZvLmFzPGNvbnN0IERP
TUpJVDo6U2lnbmF0dXJlKj4oKTsKKyAgICB9CisKICAgICBOb2RlKiByZXBsYWNlbWVudCgpIGNv
bnN0CiAgICAgewogICAgICAgICByZXR1cm4gbV9taXNjLnJlcGxhY2VtZW50OwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCmluZGV4IGQ5NzViNzYyMjBjMDJjMTMxMWMxOTJl
YTlhZDAyZTYwMWE1MjA0ZTAuLmYzNzQyM2NlZWIyMjg2MmI2YzJmYWE1YmJhMDM0NWEzMzZlZjYz
OWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgKQEAgLTQwNyw2ICs0
MDcsNyBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAgICAgLyogTm9kZXMgZm9y
IERPTSBKSVQgKi9cCiAgICAgbWFjcm8oQ2hlY2tET00sIE5vZGVNdXN0R2VuZXJhdGUpIFwKICAg
ICBtYWNybyhDYWxsRE9NR2V0dGVyLCBOb2RlUmVzdWx0SlMgfCBOb2RlTXVzdEdlbmVyYXRlKSBc
CisgICAgbWFjcm8oQ2FsbERPTSwgTm9kZVJlc3VsdEpTIHwgTm9kZU11c3RHZW5lcmF0ZSkgXAog
CiAvLyBUaGlzIGVudW0gZ2VuZXJhdGVzIGEgbW9ub3RvbmljYWxseSBpbmNyZWFzaW5nIGlkIGZv
ciBhbGwgTm9kZSB0eXBlcywKIC8vIGFuZCBpcyB1c2VkIGJ5IHRoZSBzdWJzZXF1ZW50IGVudW0g
dG8gZmlsbCBvdXQgdGhlIGlkIChhcyBhY2Nlc3NlZCB2aWEgdGhlIE5vZGVJZE1hc2spLgpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRp
b25QaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9w
YWdhdGlvblBoYXNlLmNwcAppbmRleCA2ZWQ3MjliM2I4NTczMWMwYTZlNTA5NjcwOWY5ODAxNmE0
YjFmOGUwLi5jMGZkZTk2OWZiYzI0NmM2YjkxODYwMGRjNDdhZjc5YWFkMWE2ZmY5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBo
YXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9w
YWdhdGlvblBoYXNlLmNwcApAQCAtNzEwLDcgKzcxMCw4IEBAIGNsYXNzIFByZWRpY3Rpb25Qcm9w
YWdhdGlvblBoYXNlIDogcHVibGljIFBoYXNlIHsKICAgICAgICAgY2FzZSBHZXRGcm9tQXJndW1l
bnRzOgogICAgICAgICBjYXNlIExvYWRGcm9tSlNNYXBCdWNrZXQ6CiAgICAgICAgIGNhc2UgVG9O
dW1iZXI6Ci0gICAgICAgIGNhc2UgQ2FsbERPTUdldHRlcjogeworICAgICAgICBjYXNlIENhbGxE
T01HZXR0ZXI6CisgICAgICAgIGNhc2UgQ2FsbERPTTogewogICAgICAgICAgICAgc2V0UHJlZGlj
dGlvbihtX2N1cnJlbnROb2RlLT5nZXRIZWFwUHJlZGljdGlvbigpKTsKICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NhZmVUb0V4ZWN1dGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhl
Y3V0ZS5oCmluZGV4IDJjOTk4MDIyNTY2N2RmMzQwNTBkY2E2YTM0ZTg3ZjM0ZDU5OGVkMmIuLjNm
ZTlkYzE1ZGVlMTdiODFkMjJmZjY0NDNmZWQ2N2Y0NzY5NjNjYTAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCkBAIC0yMjAsNiArMjIwLDcgQEAgYm9v
bCBzYWZlVG9FeGVjdXRlKEFic3RyYWN0U3RhdGVUeXBlJiBzdGF0ZSwgR3JhcGgmIGdyYXBoLCBO
b2RlKiBub2RlKQogICAgIGNhc2UgR2V0RXhlY3V0YWJsZToKICAgICBjYXNlIEdldEJ1dHRlcmZs
eToKICAgICBjYXNlIENhbGxET01HZXR0ZXI6CisgICAgY2FzZSBDYWxsRE9NOgogICAgIGNhc2Ug
Q2hlY2tET006CiAgICAgY2FzZSBDaGVja0FycmF5OgogICAgIGNhc2UgQXJyYXlpZnk6CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCmluZGV4IDI3
MzJmZTg1ODQ0ZTUxZjQ2NzBiMGFlNDAzZjJhYzIzNTA0Yzg3MWMuLjlmZGU1NTU0NGNhMWEyMGVl
ODVlODVmNTI1MGVmNjBmN2I1OGIxYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCkBAIC03MjYwLDYgKzcyNjAsODYgQEAgc3RhdGljIHZv
aWQgYWxsb2NhdGVUZW1wb3JhcnlSZWdpc3RlcnNGb3JQYXRjaHBvaW50KFNwZWN1bGF0aXZlSklU
KiBqaXQsIFZlY3RvcjwKICAgICB9CiB9CiAKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVD
YWxsRE9NKE5vZGUqIG5vZGUpCit7CisgICAgY29uc3QgRE9NSklUOjpTaWduYXR1cmUqIHNpZ25h
dHVyZSA9IG5vZGUtPnNpZ25hdHVyZSgpOworCisgICAgLy8gRklYTUU6IFdlIHNob3VsZCBoYXZl
IGEgd2F5IHRvIGNhbGwgZnVuY3Rpb25zIHdpdGggdGhlIHZlY3RvciBvZiByZWdpc3RlcnMuCisg
ICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MzA5OQorICAg
IFZlY3RvcjxWYXJpYW50PFNwZWN1bGF0ZUNlbGxPcGVyYW5kLCBTcGVjdWxhdGVJbnQzMk9wZXJh
bmQsIFNwZWN1bGF0ZUJvb2xlYW5PcGVyYW5kPj4gb3BlcmFuZHM7CisgICAgVmVjdG9yPEdQUlJl
Zz4gcmVnczsKKworICAgIGF1dG8gYXBwZW5kQ2VsbCA9IFsmXShFZGdlJiBlZGdlKSB7CisgICAg
ICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIG9wZXJhbmQodGhpcywgZWRnZSk7CisgICAgICAgIHJl
Z3MuYXBwZW5kKG9wZXJhbmQuZ3ByKCkpOworICAgICAgICBvcGVyYW5kcy5hcHBlbmQoV1RGTW92
ZShvcGVyYW5kKSk7CisgICAgfTsKKworICAgIGF1dG8gYXBwZW5kU3RyaW5nID0gWyZdKEVkZ2Um
IGVkZ2UpIHsKKyAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgb3BlcmFuZCh0aGlzLCBlZGdl
KTsKKyAgICAgICAgR1BSUmVnIGdwciA9IG9wZXJhbmQuZ3ByKCk7CisgICAgICAgIHJlZ3MuYXBw
ZW5kKGdwcik7CisgICAgICAgIHNwZWN1bGF0ZVN0cmluZyhlZGdlLCBncHIpOworICAgICAgICBv
cGVyYW5kcy5hcHBlbmQoV1RGTW92ZShvcGVyYW5kKSk7CisgICAgfTsKKworICAgIGF1dG8gYXBw
ZW5kSW50MzIgPSBbJl0oRWRnZSYgZWRnZSkgeworICAgICAgICBTcGVjdWxhdGVJbnQzMk9wZXJh
bmQgb3BlcmFuZCh0aGlzLCBlZGdlKTsKKyAgICAgICAgcmVncy5hcHBlbmQob3BlcmFuZC5ncHIo
KSk7CisgICAgICAgIG9wZXJhbmRzLmFwcGVuZChXVEZNb3ZlKG9wZXJhbmQpKTsKKyAgICB9Owor
CisgICAgYXV0byBhcHBlbmRCb29sZWFuID0gWyZdKEVkZ2UmIGVkZ2UpIHsKKyAgICAgICAgU3Bl
Y3VsYXRlQm9vbGVhbk9wZXJhbmQgb3BlcmFuZCh0aGlzLCBlZGdlKTsKKyAgICAgICAgcmVncy5h
cHBlbmQob3BlcmFuZC5ncHIoKSk7CisgICAgICAgIG9wZXJhbmRzLmFwcGVuZChXVEZNb3ZlKG9w
ZXJhbmQpKTsKKyAgICB9OworCisgICAgdW5zaWduZWQgaW5kZXggPSAwOworICAgIG1faml0Lmdy
YXBoKCkuZG9Ub0NoaWxkcmVuKG5vZGUsIFsmXShFZGdlIGVkZ2UpIHsKKyAgICAgICAgaWYgKCFp
bmRleCkKKyAgICAgICAgICAgIGFwcGVuZENlbGwoZWRnZSk7CisgICAgICAgIGVsc2UgeworICAg
ICAgICAgICAgc3dpdGNoIChzaWduYXR1cmUtPmFyZ3VtZW50c1tpbmRleCAtIDFdKSB7CisgICAg
ICAgICAgICBjYXNlIFNwZWNTdHJpbmc6CisgICAgICAgICAgICAgICAgYXBwZW5kU3RyaW5nKGVk
Z2UpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBTcGVjSW50MzJP
bmx5OgorICAgICAgICAgICAgICAgIGFwcGVuZEludDMyKGVkZ2UpOworICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgY2FzZSBTcGVjQm9vbGVhbjoKKyAgICAgICAgICAgICAgICBh
cHBlbmRCb29sZWFuKGVkZ2UpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg
fQorICAgICAgICB9CisgICAgICAgICsraW5kZXg7CisgICAgfSk7CisKKyAgICBKU1ZhbHVlUmVn
c1RlbXBvcmFyeSByZXN1bHQodGhpcyk7CisgICAgSlNWYWx1ZVJlZ3MgcmVzdWx0UmVncyA9IHJl
c3VsdC5yZWdzKCk7CisKKyAgICBzaWxlbnRTcGlsbEFsbFJlZ2lzdGVycyhyZXN1bHRSZWdzKTsK
KyAgICBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgPSBzaWduYXR1cmUtPmFyZ3VtZW50
Q291bnQgKyAxOworICAgIHN3aXRjaCAoYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpIHsKKyAg
ICBjYXNlIDE6CisgICAgICAgIGNhbGxPcGVyYXRpb24ocmVpbnRlcnByZXRfY2FzdDxKX0pJVE9w
ZXJhdGlvbl9FUD4oc2lnbmF0dXJlLT51bnNhZmVGdW5jdGlvbiksIGV4dHJhY3RSZXN1bHQocmVz
dWx0UmVncyksIHJlZ3NbMF0pOworICAgICAgICBicmVhazsKKyAgICBjYXNlIDI6CisgICAgICAg
IGNhbGxPcGVyYXRpb24ocmVpbnRlcnByZXRfY2FzdDxKX0pJVE9wZXJhdGlvbl9FUFA+KHNpZ25h
dHVyZS0+dW5zYWZlRnVuY3Rpb24pLCBleHRyYWN0UmVzdWx0KHJlc3VsdFJlZ3MpLCByZWdzWzBd
LCByZWdzWzFdKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSAzOgorICAgICAgICBjYWxsT3Bl
cmF0aW9uKHJlaW50ZXJwcmV0X2Nhc3Q8Sl9KSVRPcGVyYXRpb25fRVBQUD4oc2lnbmF0dXJlLT51
bnNhZmVGdW5jdGlvbiksIGV4dHJhY3RSZXN1bHQocmVzdWx0UmVncyksIHJlZ3NbMF0sIHJlZ3Nb
MV0sIHJlZ3NbMl0pOworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBSRUxF
QVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICBz
aWxlbnRGaWxsQWxsUmVnaXN0ZXJzKHJlc3VsdFJlZ3MpOworICAgIG1faml0LmV4Y2VwdGlvbkNo
ZWNrKCk7CisgICAganNWYWx1ZVJlc3VsdChyZXN1bHRSZWdzLCBub2RlKTsKK30KKwogdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUNhbGxET01HZXR0ZXIoTm9kZSogbm9kZSkKIHsKICAgICBE
T01KSVQ6OkNhbGxET01HZXR0ZXJQYXRjaHBvaW50KiBwYXRjaHBvaW50ID0gbm9kZS0+Y2FsbERP
TUdldHRlckRhdGEoKS0+cGF0Y2hwb2ludDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU3BlY3VsYXRpdmVKSVQuaAppbmRleCA1NjUzOGEyOTQ2ZTQwMzAwZjA1MGYzMzU1MmE3M2Nj
YTc1OWNlYWNhLi43OTZhOGEzNWU2ZDMwNTdmYWFiZWEwNzlhMDIwM2Q1ZDQ5OWE5NWIxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCkBAIC0xNjUx
LDYgKzE2NTEsMTEgQEAgY2xhc3MgU3BlY3VsYXRpdmVKSVQgewogICAgICAgICBtX2ppdC5zZXR1
cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMik7CiAgICAgICAgIHJldHVybiBhcHBl
bmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9CisgICAgSklUQ29tcGls
ZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihKX0pJVE9wZXJhdGlvbl9FUFBQIG9wZXJhdGlvbiwgR1BS
UmVnIHJlc3VsdCwgR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyLCBHUFJSZWcgYXJnMykKKyAgICB7
CisgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyLCBh
cmczKTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1
bHQpOworICAgIH0KICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpfSklUT3Bl
cmF0aW9uX0VHUCBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIEdQUlJlZyBhcmcxLCBHUFJSZWcg
YXJnMikKICAgICB7CiAgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShh
cmcxLCBhcmcyKTsKQEAgLTE5MTUsNiArMTkyMCwxNiBAQCBjbGFzcyBTcGVjdWxhdGl2ZUpJVCB7
CiAgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBUcnVzdGVk
SW1tUHRyKHBvaW50ZXIpKTsKICAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3Bl
cmF0aW9uLCByZXN1bHQucGF5bG9hZEdQUigpLCByZXN1bHQudGFnR1BSKCkpOwogICAgIH0KKyAg
ICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpfSklUT3BlcmF0aW9uX0VQUCBvcGVy
YXRpb24sIEpTVmFsdWVSZWdzIHJlc3VsdCwgR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyKQorICAg
IHsKKyAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIp
OworICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdC5w
YXlsb2FkR1BSKCksIHJlc3VsdC50YWdHUFIoKSk7CisgICAgfQorICAgIEpJVENvbXBpbGVyOjpD
YWxsIGNhbGxPcGVyYXRpb24oSl9KSVRPcGVyYXRpb25fRVBQUCBvcGVyYXRpb24sIEpTVmFsdWVS
ZWdzIHJlc3VsdCwgR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyLCBHUFJSZWcgYXJnMykKKyAgICB7
CisgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyLCBh
cmczKTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1
bHQucGF5bG9hZEdQUigpLCByZXN1bHQudGFnR1BSKCkpOworICAgIH0KICAgICBKSVRDb21waWxl
cjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpfSklUT3BlcmF0aW9uX0VHUCBvcGVyYXRpb24sIEpTVmFs
dWVSZWdzIHJlc3VsdCwgR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyKQogICAgIHsKICAgICAgICAg
bV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIpOwpAQCAtMjU2Miw2
ICsyNTc3LDcgQEAgY2xhc3MgU3BlY3VsYXRpdmVKSVQgewogICAgIHZvaWQgY29tcGlsZVJlYWxs
b2NhdGVQcm9wZXJ0eVN0b3JhZ2UoTm9kZSopOwogICAgIHZvaWQgY29tcGlsZUdldEJ1dHRlcmZs
eShOb2RlKik7CiAgICAgdm9pZCBjb21waWxlQ2FsbERPTUdldHRlcihOb2RlKik7CisgICAgdm9p
ZCBjb21waWxlQ2FsbERPTShOb2RlKik7CiAgICAgdm9pZCBjb21waWxlQ2hlY2tET00oTm9kZSop
OwogICAgIAogI2lmIFVTRShKU1ZBTFVFMzJfNjQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAppbmRleCBjYjA0YTVhNjVjNzUw
ZTIzZjE3YzlkYjIzNDE1YjczNGFlZjViNGE0Li4xMDI0MjlkZTAwMGIzMmFkZmRkMDI3NDNlYzZk
ZmRkZWU4MWY1M2FjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nw
ZWN1bGF0aXZlSklUMzJfNjQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKQEAgLTU1NjEsNiArNTU2MSwxMCBAQCB2b2lkIFNwZWN1
bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIGJyZWFrOwogICAgIH0KIAor
ICAgIGNhc2UgQ2FsbERPTToKKyAgICAgICAgY29tcGlsZUNhbGxET00obm9kZSk7CisgICAgICAg
IGJyZWFrOworCiAgICAgY2FzZSBDYWxsRE9NR2V0dGVyOgogICAgICAgICBjb21waWxlQ2FsbERP
TUdldHRlcihub2RlKTsKICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAppbmRleCBiNDFjNmYzMmIzM2Q4M2M2NWU4
NTRmODYwNzhkNzRhNTI0MDI5ODEzLi44MzBiZmFkY2FmMjg2NjdhMDhiMWI4MmVlNTk4OGMwYzY1
ZDJjYWI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0
aXZlSklUNjQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRp
dmVKSVQ2NC5jcHAKQEAgLTU2OTMsNiArNTY5MywxMCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpj
b21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIGNvbXBpbGVNYXRlcmlhbGl6ZU5ld09iamVjdChu
b2RlKTsKICAgICAgICAgYnJlYWs7CiAKKyAgICBjYXNlIENhbGxET006CisgICAgICAgIGNvbXBp
bGVDYWxsRE9NKG5vZGUpOworICAgICAgICBicmVhazsKKwogICAgIGNhc2UgQ2FsbERPTUdldHRl
cjoKICAgICAgICAgY29tcGlsZUNhbGxET01HZXR0ZXIobm9kZSk7CiAgICAgICAgIGJyZWFrOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RvbWppdC9ET01KSVRFZmZlY3QuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kb21qaXQvRE9NSklURWZmZWN0LmgKaW5kZXggNTllMzAw
YzM5MjYxMDQ3YTExMjI5MGRhODZiNGZhMTY4ZDljNjMwNi4uNjFjZjNiNzFhYmJjZTMxZTQ1MTM2
YWYyODZjNmM3YWYyMzY2OGE2YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rv
bWppdC9ET01KSVRFZmZlY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZG9taml0L0RP
TUpJVEVmZmVjdC5oCkBAIC0yOCw1NiArMjgsNjIgQEAKICNpbmNsdWRlICJET01KSVRIZWFwUmFu
Z2UuaCIKICNpbmNsdWRlIDx3dGYvT3B0aW9uYWwuaD4KIAotI2lmIEVOQUJMRShKSVQpCi0KIG5h
bWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgRE9NSklUIHsKIAotc3RydWN0IEVmZmVjdCB7CitjbGFz
cyBFZmZlY3QgeworcHVibGljOgogICAgIEhlYXBSYW5nZSByZWFkcyB7IEhlYXBSYW5nZTo6dG9w
KCkgfTsKICAgICBIZWFwUmFuZ2Ugd3JpdGVzIHsgSGVhcFJhbmdlOjp0b3AoKSB9OwotICAgIE9w
dGlvbmFsPEhlYXBSYW5nZT4gZGVmOworICAgIEhlYXBSYW5nZSBkZWYgeyBIZWFwUmFuZ2U6OnRv
cCgpIH07CisKKyAgICBjb25zdGV4cHIgRWZmZWN0KCkgPSBkZWZhdWx0OworICAgIGNvbnN0ZXhw
ciBFZmZlY3QoSGVhcFJhbmdlIHJlYWRzLCBIZWFwUmFuZ2Ugd3JpdGVzKQorICAgICAgICA6IHJl
YWRzKHJlYWRzKQorICAgICAgICAsIHdyaXRlcyh3cml0ZXMpCisgICAgeworICAgIH0KKworICAg
IGNvbnN0ZXhwciBFZmZlY3QoSGVhcFJhbmdlIHJlYWRzLCBIZWFwUmFuZ2Ugd3JpdGVzLCBIZWFw
UmFuZ2UgZGVmKQorICAgICAgICA6IHJlYWRzKHJlYWRzKQorICAgICAgICAsIHdyaXRlcyh3cml0
ZXMpCisgICAgICAgICwgZGVmKGRlZikKKyAgICB7CisgICAgfQogCi0gICAgc3RhdGljIEVmZmVj
dCBmb3JSZWFkV3JpdGUoSGVhcFJhbmdlIHJlYWRSYW5nZSwgSGVhcFJhbmdlIHdyaXRlUmFuZ2Up
CisgICAgY29uc3RleHByIHN0YXRpYyBFZmZlY3QgZm9yV3JpdGUoSGVhcFJhbmdlIHdyaXRlUmFu
Z2UpCiAgICAgewotICAgICAgICBFZmZlY3QgZWZmZWN0OwotICAgICAgICBlZmZlY3QucmVhZHMg
PSByZWFkUmFuZ2U7Ci0gICAgICAgIGVmZmVjdC53cml0ZXMgPSB3cml0ZVJhbmdlOwotICAgICAg
ICByZXR1cm4gZWZmZWN0OworICAgICAgICByZXR1cm4gRWZmZWN0KEhlYXBSYW5nZTo6bm9uZSgp
LCB3cml0ZVJhbmdlKTsKICAgICB9CiAKLSAgICBzdGF0aWMgRWZmZWN0IGZvclB1cmUoKQorICAg
IGNvbnN0ZXhwciBzdGF0aWMgRWZmZWN0IGZvclJlYWQoSGVhcFJhbmdlIHJlYWRSYW5nZSkKICAg
ICB7Ci0gICAgICAgIEVmZmVjdCBlZmZlY3Q7Ci0gICAgICAgIGVmZmVjdC5yZWFkcyA9IEhlYXBS
YW5nZTo6bm9uZSgpOwotICAgICAgICBlZmZlY3Qud3JpdGVzID0gSGVhcFJhbmdlOjpub25lKCk7
Ci0gICAgICAgIGVmZmVjdC5kZWYgPSBIZWFwUmFuZ2U6Om5vbmUoKTsKLSAgICAgICAgcmV0dXJu
IGVmZmVjdDsKKyAgICAgICAgcmV0dXJuIEVmZmVjdChyZWFkUmFuZ2UsIEhlYXBSYW5nZTo6bm9u
ZSgpKTsKICAgICB9CiAKLSAgICBzdGF0aWMgRWZmZWN0IGZvckRlZihIZWFwUmFuZ2UgZGVmKQor
ICAgIGNvbnN0ZXhwciBzdGF0aWMgRWZmZWN0IGZvclJlYWRXcml0ZShIZWFwUmFuZ2UgcmVhZFJh
bmdlLCBIZWFwUmFuZ2Ugd3JpdGVSYW5nZSkKICAgICB7Ci0gICAgICAgIEVmZmVjdCBlZmZlY3Q7
Ci0gICAgICAgIGVmZmVjdC5yZWFkcyA9IGRlZjsKLSAgICAgICAgZWZmZWN0LndyaXRlcyA9IEhl
YXBSYW5nZTo6bm9uZSgpOwotICAgICAgICBlZmZlY3QuZGVmID0gZGVmOwotICAgICAgICByZXR1
cm4gZWZmZWN0OworICAgICAgICByZXR1cm4gRWZmZWN0KHJlYWRSYW5nZSwgd3JpdGVSYW5nZSk7
CiAgICAgfQogCi0gICAgc3RhdGljIEVmZmVjdCBmb3JEZWYoSGVhcFJhbmdlIGRlZiwgSGVhcFJh
bmdlIHJlYWRSYW5nZSwgSGVhcFJhbmdlIHdyaXRlUmFuZ2UpCisgICAgY29uc3RleHByIHN0YXRp
YyBFZmZlY3QgZm9yUHVyZSgpCiAgICAgewotICAgICAgICBFZmZlY3QgZWZmZWN0OwotICAgICAg
ICBlZmZlY3QucmVhZHMgPSByZWFkUmFuZ2U7Ci0gICAgICAgIGVmZmVjdC53cml0ZXMgPSB3cml0
ZVJhbmdlOwotICAgICAgICBlZmZlY3QuZGVmID0gZGVmOwotICAgICAgICByZXR1cm4gZWZmZWN0
OworICAgICAgICByZXR1cm4gRWZmZWN0KEhlYXBSYW5nZTo6bm9uZSgpLCBIZWFwUmFuZ2U6Om5v
bmUoKSwgSGVhcFJhbmdlOjpub25lKCkpOwogICAgIH0KIAotICAgIGJvb2wgbXVzdEdlbmVyYXRl
KCkgY29uc3QKKyAgICBjb25zdGV4cHIgc3RhdGljIEVmZmVjdCBmb3JEZWYoSGVhcFJhbmdlIGRl
ZikKKyAgICB7CisgICAgICAgIHJldHVybiBFZmZlY3QoZGVmLCBIZWFwUmFuZ2U6Om5vbmUoKSwg
ZGVmKTsKKyAgICB9CisKKyAgICBjb25zdGV4cHIgc3RhdGljIEVmZmVjdCBmb3JEZWYoSGVhcFJh
bmdlIGRlZiwgSGVhcFJhbmdlIHJlYWRSYW5nZSwgSGVhcFJhbmdlIHdyaXRlUmFuZ2UpCisgICAg
eworICAgICAgICByZXR1cm4gRWZmZWN0KHJlYWRSYW5nZSwgd3JpdGVSYW5nZSwgZGVmKTsKKyAg
ICB9CisKKyAgICBjb25zdGV4cHIgYm9vbCBtdXN0R2VuZXJhdGUoKSBjb25zdAogICAgIHsKICAg
ICAgICAgcmV0dXJuICEhd3JpdGVzOwogICAgIH0KIH07CiAKIH0gfQotCi0jZW5kaWYKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kb21qaXQvRE9NSklUSGVhcFJhbmdlLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZG9taml0L0RPTUpJVEhlYXBSYW5nZS5oCmluZGV4IGZiOTM5
OTlmZjc4NWMwNmY3ZGFjZDZkYTljOGQ2ZTBhOTU2Nzg2NzQuLmZjMzIwNmU4OTAzZGQxNWE0NDA3
ZTEyYjM3YTYxNTZjNTlmZTExMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
b21qaXQvRE9NSklUSGVhcFJhbmdlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RvbWpp
dC9ET01KSVRIZWFwUmFuZ2UuaApAQCAtMjgsOCArMjgsNiBAQAogI2luY2x1ZGUgPHd0Zi9NYXRo
RXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL1ByaW50U3RyZWFtLmg+CiAKLSNpZiBFTkFCTEUoSklU
KQotCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERPTUpJVCB7CiAKIGNsYXNzIEhlYXBSYW5n
ZSB7CkBAIC00Nyw3ICs0NSw2IEBAIGNsYXNzIEhlYXBSYW5nZSB7CiAgICAgICAgIEFTU0VSVF9X
SVRIX01FU1NBR0UoYmVnaW4gPD0gZW5kLCAiYmVnaW4gPD0gZW5kIGlzIHRoZSBpbnZhcmlhbnQg
b2YgdGhpcyBIZWFwUmFuZ2UuIik7CiAgICAgfQogCi1wcml2YXRlOgogICAgIGVudW0gQ29uc3RF
eHByVGFnIHsgQ29uc3RFeHByIH07CiAgICAgY29uc3RleHByIEhlYXBSYW5nZShDb25zdEV4cHJU
YWcsIHVpbnQxNl90IGJlZ2luLCB1aW50MTZfdCBlbmQpCiAgICAgICAgIDogbV9iZWdpbihiZWdp
bikKQEAgLTU1LDIxICs1MiwxMyBAQCBjbGFzcyBIZWFwUmFuZ2UgewogICAgIHsKICAgICB9CiAK
LSAgICB0ZW1wbGF0ZTx1aW50MTZfdCBiZWdpbiwgdWludDE2X3QgZW5kPgotICAgIHN0YXRpYyBj
b25zdGV4cHIgSGVhcFJhbmdlIGZyb21Db25zdGFudCgpCi0gICAgewotICAgICAgICBzdGF0aWNf
YXNzZXJ0KGJlZ2luIDw9IGVuZCwgImJlZ2luIDw9IGVuZCBpcyB0aGUgaW52YXJpYW50IG9mIHRo
aXMgSGVhcFJhbmdlLiIpOwotICAgICAgICByZXR1cm4gSGVhcFJhbmdlKENvbnN0RXhwciwgYmVn
aW4sIGVuZCk7Ci0gICAgfQotCi1wdWJsaWM6CiAgICAgZW51bSBSYXdSZXByZXNlbnRhdGlvblRh
ZyB7IFJhd1JlcHJlc2VudGF0aW9uIH07CiAgICAgZXhwbGljaXQgY29uc3RleHByIEhlYXBSYW5n
ZShSYXdSZXByZXNlbnRhdGlvblRhZywgdWludDMyX3QgdmFsdWUpCiAgICAgICAgIDogbV9yYXco
dmFsdWUpCiAgICAgewogICAgIH0KIAotICAgIHN0YXRpYyBIZWFwUmFuZ2UgZnJvbVJhdyh1aW50
MzJfdCB2YWx1ZSkKKyAgICBjb25zdGV4cHIgc3RhdGljIEhlYXBSYW5nZSBmcm9tUmF3KHVpbnQz
Ml90IHZhbHVlKQogICAgIHsKICAgICAgICAgcmV0dXJuIEhlYXBSYW5nZShSYXdSZXByZXNlbnRh
dGlvbiwgdmFsdWUpOwogICAgIH0KQEAgLTgzLDExICs3MiwyMyBAQCBjbGFzcyBIZWFwUmFuZ2Ug
ewogICAgICAgICByZXR1cm4gbV9iZWdpbiAhPSBtX2VuZDsKICAgICB9CiAKLSAgICBib29sIG9w
ZXJhdG9yPT0oY29uc3QgSGVhcFJhbmdlJiBvdGhlcikgY29uc3QKKyAgICBjb25zdGV4cHIgYm9v
bCBvcGVyYXRvcj09KGNvbnN0IEhlYXBSYW5nZSYgb3RoZXIpIGNvbnN0CiAgICAgewogICAgICAg
ICByZXR1cm4gbV9iZWdpbiA9PSBvdGhlci5tX2JlZ2luICYmIG1fZW5kID09IG90aGVyLm1fZW5k
OwogICAgIH0KIAorICAgIGNvbnN0ZXhwciBib29sIG9wZXJhdG9yIT0oY29uc3QgSGVhcFJhbmdl
JiBvdGhlcikgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiAhb3BlcmF0b3I9PShvdGhlcik7
CisgICAgfQorCisgICAgdGVtcGxhdGU8dWludDE2X3QgYmVnaW4sIHVpbnQxNl90IGVuZD4KKyAg
ICBzdGF0aWMgY29uc3RleHByIEhlYXBSYW5nZSBmcm9tQ29uc3RhbnQoKQorICAgIHsKKyAgICAg
ICAgc3RhdGljX2Fzc2VydChiZWdpbiA8PSBlbmQsICJiZWdpbiA8PSBlbmQgaXMgdGhlIGludmFy
aWFudCBvZiB0aGlzIEhlYXBSYW5nZS4iKTsKKyAgICAgICAgcmV0dXJuIEhlYXBSYW5nZShDb25z
dEV4cHIsIGJlZ2luLCBlbmQpOworICAgIH0KKwogICAgIHN0YXRpYyBjb25zdGV4cHIgSGVhcFJh
bmdlIHRvcCgpIHsgcmV0dXJuIGZyb21Db25zdGFudDwwLCBVSU5UMTZfTUFYPigpOyB9CiAgICAg
c3RhdGljIGNvbnN0ZXhwciBIZWFwUmFuZ2Ugbm9uZSgpIHsgcmV0dXJuIGZyb21Db25zdGFudDxV
SU5UMTZfTUFYLCBVSU5UMTZfTUFYPigpOyB9IC8vIEVtcHR5IHJhbmdlLgogCkBAIC0xMjcsNSAr
MTI4LDMgQEAgY2xhc3MgSGVhcFJhbmdlIHsKIH07CiAKIH0gfQotCi0jZW5kaWYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kb21qaXQvRE9NSklUU2lnbmF0dXJlLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZG9taml0L0RPTUpJVFNpZ25hdHVyZS5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM3
ZDYwZWQ3ZjNlYWYwNjNkOWIwYzlkODllZDYzNDg3YzRjYmI1YTMKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZG9taml0L0RPTUpJVFNpZ25hdHVyZS5oCkBAIC0wLDAg
KzEsNzAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
cHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkNsYXNzSW5mby5oIgorI2luY2x1ZGUgIkRPTUpJVEVm
ZmVjdC5oIgorI2luY2x1ZGUgIlNwZWN1bGF0ZWRUeXBlLmgiCisKK25hbWVzcGFjZSBKU0MgeyBu
YW1lc3BhY2UgRE9NSklUIHsKKworLy8gQ3VycmVudGx5LCB3ZSBvbmx5IHN1cHBvcnQgZnVuY3Rp
b25zIHdoaWNoIGFyZ3VtZW50cyB1cCB0byAyLgorLy8gRXZlbnR1YWxseSwgd2Ugc2hvdWxkIGV4
dGVuZCB0aGlzLiBCdXQgcG9zc2libHksIDIgb3IgMyBjYW4gY292ZXIgdHlwaWNhbCB1c2UgY2Fz
ZXMuCisjZGVmaW5lIEpTQ19ET01KSVRfU0lHTkFUVVJFX01BWF9BUkdVTUVOVFMgMgorCitjbGFz
cyBQYXRjaHBvaW50OworCit0eXBlZGVmIFJlZjxQYXRjaHBvaW50PiBDaGVja0RPTUdlbmVyYXRv
ckZ1bmN0aW9uKHZvaWQpOworCitjbGFzcyBTaWduYXR1cmUgeworcHVibGljOgorICAgIHRlbXBs
YXRlPHR5cGVuYW1lLi4uIEFyZ3VtZW50cz4KKyAgICBjb25zdGV4cHIgU2lnbmF0dXJlKHVpbnRw
dHJfdCB1bnNhZmVGdW5jdGlvbiwgQ2hlY2tET01HZW5lcmF0b3JGdW5jdGlvbiogY2hlY2tET01H
ZW5lcmF0b3JGdW5jdGlvbiwgY29uc3QgQ2xhc3NJbmZvKiBjbGFzc0luZm8sIEVmZmVjdCBlZmZl
Y3QsIFNwZWN1bGF0ZWRUeXBlIHJlc3VsdCwgQXJndW1lbnRzLi4uIGFyZ3VtZW50cykKKyAgICAg
ICAgOiB1bnNhZmVGdW5jdGlvbih1bnNhZmVGdW5jdGlvbikKKyAgICAgICAgLCBjaGVja0RPTUdl
bmVyYXRvckZ1bmN0aW9uKGNoZWNrRE9NR2VuZXJhdG9yRnVuY3Rpb24pCisgICAgICAgICwgY2xh
c3NJbmZvKGNsYXNzSW5mbykKKyAgICAgICAgLCBlZmZlY3QoZWZmZWN0KQorICAgICAgICAsIHJl
c3VsdChyZXN1bHQpCisgICAgICAgICwgYXJndW1lbnRzIHtzdGF0aWNfY2FzdDxTcGVjdWxhdGVk
VHlwZT4oYXJndW1lbnRzKS4uLn0KKyAgICAgICAgLCBhcmd1bWVudENvdW50KHNpemVvZi4uLihh
cmd1bWVudHMpKQorICAgIHsKKyAgICB9CisKKyAgICBSZWY8UGF0Y2hwb2ludD4gY2hlY2tET00o
KSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIGNoZWNrRE9NR2VuZXJhdG9yRnVuY3Rpb24o
KTsKKyAgICB9CisKKyAgICB1aW50cHRyX3QgdW5zYWZlRnVuY3Rpb247CisgICAgQ2hlY2tET01H
ZW5lcmF0b3JGdW5jdGlvbiogY2hlY2tET01HZW5lcmF0b3JGdW5jdGlvbjsKKyAgICBjb25zdCBD
bGFzc0luZm8qIGNvbnN0IGNsYXNzSW5mbzsKKyAgICBjb25zdCBFZmZlY3QgZWZmZWN0OworICAg
IGNvbnN0IFNwZWN1bGF0ZWRUeXBlIHJlc3VsdDsKKyAgICBjb25zdCBTcGVjdWxhdGVkVHlwZSBh
cmd1bWVudHNbSlNDX0RPTUpJVF9TSUdOQVRVUkVfTUFYX0FSR1VNRU5UU107CisgICAgY29uc3Qg
dW5zaWduZWQgYXJndW1lbnRDb3VudDsKK307CisKK30gfQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCmluZGV4IDU0ZjRlNzJlNjQxOWJmZTI1NTY1M2Uz
NjVmYmFjODIwMzJmZmRlOTcuLjNiYTE1ZTZlMjg0NGQzMDQwM2U4ZGQ0ZTAxNmMyNGIwYzA0NmRm
YzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVz
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAK
QEAgLTI3Myw2ICsyNzMsNyBAQCBpbmxpbmUgQ2FwYWJpbGl0eUxldmVsIGNhbkNvbXBpbGUoTm9k
ZSogbm9kZSkKICAgICBjYXNlIERlZmluZUFjY2Vzc29yUHJvcGVydHk6CiAgICAgY2FzZSBUb0xv
d2VyQ2FzZToKICAgICBjYXNlIENoZWNrRE9NOgorICAgIGNhc2UgQ2FsbERPTToKICAgICBjYXNl
IENhbGxET01HZXR0ZXI6CiAgICAgICAgIC8vIFRoZXNlIGFyZSBPSy4KICAgICAgICAgYnJlYWs7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKaW5kZXgg
YWQxNjE1NzIwMjdjNDFmMzAwNjgzZGMxMjI0MmY5Yjk1ZDQ1OTBjMi4uNDBlYmMxNTc5MGNkMGQ0
NTM4N2ZjNTBkZGZmMmQ4NTExZTZlN2YwZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9m
dGwvRlRMTG93ZXJERkdUb0IzLmNwcApAQCAtMTA2MCw2ICsxMDYwLDkgQEAgY2xhc3MgTG93ZXJE
RkdUb0IzIHsKICAgICAgICAgY2FzZSBDaGVja0RPTToKICAgICAgICAgICAgIGNvbXBpbGVDaGVj
a0RPTSgpOwogICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQ2FsbERPTToKKyAgICAg
ICAgICAgIGNvbXBpbGVDYWxsRE9NKCk7CisgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2Fz
ZSBDYWxsRE9NR2V0dGVyOgogICAgICAgICAgICAgY29tcGlsZUNhbGxET01HZXR0ZXIoKTsKICAg
ICAgICAgICAgIGJyZWFrOwpAQCAtOTEwMCw2ICs5MTAzLDU0IEBAIGNsYXNzIExvd2VyREZHVG9C
MyB7CiAgICAgICAgIHBhdGNocG9pbnQtPmVmZmVjdHMgPSBFZmZlY3RzOjpmb3JDaGVjaygpOwog
ICAgIH0KIAorICAgIHZvaWQgY29tcGlsZUNhbGxET00oKQorICAgIHsKKyAgICAgICAgY29uc3Qg
RE9NSklUOjpTaWduYXR1cmUqIHNpZ25hdHVyZSA9IG1fbm9kZS0+c2lnbmF0dXJlKCk7CisKKyAg
ICAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBoYXZlIGEgd2F5IHRvIGNhbGwgZnVuY3Rpb25zIHdp
dGggdGhlIHZlY3RvciBvZiByZWdpc3RlcnMuCisgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjMwOTkKKyAgICAgICAgVmVjdG9yPExWYWx1ZT4gb3Bl
cmFuZHM7CisKKyAgICAgICAgdW5zaWduZWQgaW5kZXggPSAwOworICAgICAgICBERkdfTk9ERV9E
T19UT19DSElMRFJFTihtX2dyYXBoLCBtX25vZGUsIFsmXShOb2RlKiwgRWRnZSBlZGdlKSB7Cisg
ICAgICAgICAgICBpZiAoIWluZGV4KQorICAgICAgICAgICAgICAgIG9wZXJhbmRzLmFwcGVuZChs
b3dDZWxsKGVkZ2UpKTsKKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIHN3aXRj
aCAoc2lnbmF0dXJlLT5hcmd1bWVudHNbaW5kZXggLSAxXSkgeworICAgICAgICAgICAgICAgIGNh
c2UgU3BlY1N0cmluZzoKKyAgICAgICAgICAgICAgICAgICAgb3BlcmFuZHMuYXBwZW5kKGxvd1N0
cmluZyhlZGdlKSk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAg
IGNhc2UgU3BlY0ludDMyT25seToKKyAgICAgICAgICAgICAgICAgICAgb3BlcmFuZHMuYXBwZW5k
KGxvd0ludDMyKGVkZ2UpKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICAgICAgY2FzZSBTcGVjQm9vbGVhbjoKKyAgICAgICAgICAgICAgICAgICAgb3BlcmFuZHMuYXBw
ZW5kKGxvd0Jvb2xlYW4oZWRnZSkpOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICArK2luZGV4OworICAgICAg
ICB9KTsKKworICAgICAgICBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgPSBzaWduYXR1
cmUtPmFyZ3VtZW50Q291bnQgKyAxOworICAgICAgICBMVmFsdWUgcmVzdWx0OworICAgICAgICBz
d2l0Y2ggKGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKSB7CisgICAgICAgIGNhc2UgMToKKyAg
ICAgICAgICAgIHJlc3VsdCA9IHZtQ2FsbChJbnQ2NCwgbV9vdXQub3BlcmF0aW9uKHJlaW50ZXJw
cmV0X2Nhc3Q8Sl9KSVRPcGVyYXRpb25fRVA+KHNpZ25hdHVyZS0+dW5zYWZlRnVuY3Rpb24pKSwg
bV9jYWxsRnJhbWUsIG9wZXJhbmRzWzBdKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBj
YXNlIDI6CisgICAgICAgICAgICByZXN1bHQgPSB2bUNhbGwoSW50NjQsIG1fb3V0Lm9wZXJhdGlv
bihyZWludGVycHJldF9jYXN0PEpfSklUT3BlcmF0aW9uX0VQUD4oc2lnbmF0dXJlLT51bnNhZmVG
dW5jdGlvbikpLCBtX2NhbGxGcmFtZSwgb3BlcmFuZHNbMF0sIG9wZXJhbmRzWzFdKTsKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIDM6CisgICAgICAgICAgICByZXN1bHQgPSB2bUNh
bGwoSW50NjQsIG1fb3V0Lm9wZXJhdGlvbihyZWludGVycHJldF9jYXN0PEpfSklUT3BlcmF0aW9u
X0VQUFA+KHNpZ25hdHVyZS0+dW5zYWZlRnVuY3Rpb24pKSwgbV9jYWxsRnJhbWUsIG9wZXJhbmRz
WzBdLCBvcGVyYW5kc1sxXSwgb3BlcmFuZHNbMl0pOworICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwor
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAgICBzZXRKU1ZhbHVlKHJlc3Vs
dCk7CisgICAgfQorCiAgICAgdm9pZCBjb21waWxlQ2FsbERPTUdldHRlcigpCiAgICAgewogICAg
ICAgICBET01KSVQ6OkNhbGxET01HZXR0ZXJQYXRjaHBvaW50KiBkb21KSVQgPSBtX25vZGUtPmNh
bGxET01HZXR0ZXJEYXRhKCktPnBhdGNocG9pbnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUT3BlcmF0aW9ucy5oCmluZGV4IDhmNmM2OTcxYTZiZWU5ZjFmYjZmYzM2OGRlNWEyY2I4NDc2
NDRhNjguLjIwYjcxZjQ1MmNlNDRiNWNjNTZjYzcxYzJkNzZiMTdiNTg4ZmU2NjUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCkBAIC0xNTgsNiArMTU4LDcgQEAg
dHlwZWRlZiBFbmNvZGVkSlNWYWx1ZSAoSklUX09QRVJBVElPTiAqSl9KSVRPcGVyYXRpb25fRUpQ
KShFeGVjU3RhdGUqLCBFbmNvZGVkSlMKIHR5cGVkZWYgRW5jb2RlZEpTVmFsdWUgKEpJVF9PUEVS
QVRJT04gKkpfSklUT3BlcmF0aW9uX0VHUCkoRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqLCB2
b2lkKik7CiB0eXBlZGVmIEVuY29kZWRKU1ZhbHVlIChKSVRfT1BFUkFUSU9OICpKX0pJVE9wZXJh
dGlvbl9FUCkoRXhlY1N0YXRlKiwgdm9pZCopOwogdHlwZWRlZiBFbmNvZGVkSlNWYWx1ZSAoSklU
X09QRVJBVElPTiAqSl9KSVRPcGVyYXRpb25fRVBQKShFeGVjU3RhdGUqLCB2b2lkKiwgdm9pZCop
OwordHlwZWRlZiBFbmNvZGVkSlNWYWx1ZSAoSklUX09QRVJBVElPTiAqSl9KSVRPcGVyYXRpb25f
RVBQUCkoRXhlY1N0YXRlKiwgdm9pZCosIHZvaWQqLCB2b2lkKik7CiB0eXBlZGVmIEVuY29kZWRK
U1ZhbHVlIChKSVRfT1BFUkFUSU9OICpKX0pJVE9wZXJhdGlvbl9FUFMpKEV4ZWNTdGF0ZSosIHZv
aWQqLCBzaXplX3QpOwogdHlwZWRlZiBFbmNvZGVkSlNWYWx1ZSAoSklUX09QRVJBVElPTiAqSl9K
SVRPcGVyYXRpb25fRVBjKShFeGVjU3RhdGUqLCBJbnN0cnVjdGlvbiopOwogdHlwZWRlZiBFbmNv
ZGVkSlNWYWx1ZSAoSklUX09QRVJBVElPTiAqSl9KSVRPcGVyYXRpb25fRUpzY0MpKEV4ZWNTdGF0
ZSosIEpTU2NvcGUqLCBKU0NlbGwqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUVGh1bmtzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUVGh1bmtz
LmNwcAppbmRleCBiZjBhN2Y5MDkxOWE1YjZkMGJlZWQ5MjhhYmRhZjcxMGM5ZGM5ZDBiLi40MGMx
MmNlYzk0ZTAxYTA4NDA0ZjdiNmQ5NjcyMWYxMDUxZjQ4MzE5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVFRodW5rcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRUaHVua3MuY3BwCkBAIC05MCwxMCArOTAsMTAgQEAgdm9pZCBKSVRUaHVua3M6
OmZpbmFsaXplKEhhbmRsZTxVbmtub3duPiBoYW5kbGUsIHZvaWQqKQogCiBOYXRpdmVFeGVjdXRh
YmxlKiBKSVRUaHVua3M6Omhvc3RGdW5jdGlvblN0dWIoVk0qIHZtLCBOYXRpdmVGdW5jdGlvbiBm
dW5jdGlvbiwgTmF0aXZlRnVuY3Rpb24gY29uc3RydWN0b3IsIGNvbnN0IFN0cmluZyYgbmFtZSkK
IHsKLSAgICByZXR1cm4gaG9zdEZ1bmN0aW9uU3R1Yih2bSwgZnVuY3Rpb24sIGNvbnN0cnVjdG9y
LCBudWxscHRyLCBOb0ludHJpbnNpYywgbmFtZSk7CisgICAgcmV0dXJuIGhvc3RGdW5jdGlvblN0
dWIodm0sIGZ1bmN0aW9uLCBjb25zdHJ1Y3RvciwgbnVsbHB0ciwgTm9JbnRyaW5zaWMsIG51bGxw
dHIsIG5hbWUpOwogfQogCi1OYXRpdmVFeGVjdXRhYmxlKiBKSVRUaHVua3M6Omhvc3RGdW5jdGlv
blN0dWIoVk0qIHZtLCBOYXRpdmVGdW5jdGlvbiBmdW5jdGlvbiwgTmF0aXZlRnVuY3Rpb24gY29u
c3RydWN0b3IsIFRodW5rR2VuZXJhdG9yIGdlbmVyYXRvciwgSW50cmluc2ljIGludHJpbnNpYywg
Y29uc3QgU3RyaW5nJiBuYW1lKQorTmF0aXZlRXhlY3V0YWJsZSogSklUVGh1bmtzOjpob3N0RnVu
Y3Rpb25TdHViKFZNKiB2bSwgTmF0aXZlRnVuY3Rpb24gZnVuY3Rpb24sIE5hdGl2ZUZ1bmN0aW9u
IGNvbnN0cnVjdG9yLCBUaHVua0dlbmVyYXRvciBnZW5lcmF0b3IsIEludHJpbnNpYyBpbnRyaW5z
aWMsIGNvbnN0IERPTUpJVDo6U2lnbmF0dXJlKiBzaWduYXR1cmUsIGNvbnN0IFN0cmluZyYgbmFt
ZSkKIHsKICAgICBBU1NFUlQoIWlzQ29tcGlsYXRpb25UaHJlYWQoKSk7ICAgIAogICAgIEFTU0VS
VCh2bS0+Y2FuVXNlSklUKCkpOwpAQCAtMTEwLDE0ICsxMTAsMTQgQEAgTmF0aXZlRXhlY3V0YWJs
ZSogSklUVGh1bmtzOjpob3N0RnVuY3Rpb25TdHViKFZNKiB2bSwgTmF0aXZlRnVuY3Rpb24gZnVu
Y3Rpb24sIE4KICAgICAKICAgICBSZWZQdHI8SklUQ29kZT4gZm9yQ29uc3RydWN0ID0gYWRvcHRS
ZWYobmV3IE5hdGl2ZUpJVENvZGUoTWFjcm9Bc3NlbWJsZXJDb2RlUmVmOjpjcmVhdGVTZWxmTWFu
YWdlZENvZGVSZWYoY3RpTmF0aXZlQ29uc3RydWN0KHZtKSksIEpJVENvZGU6Okhvc3RDYWxsVGh1
bmspKTsKICAgICAKLSAgICBOYXRpdmVFeGVjdXRhYmxlKiBuYXRpdmVFeGVjdXRhYmxlID0gTmF0
aXZlRXhlY3V0YWJsZTo6Y3JlYXRlKCp2bSwgZm9yQ2FsbCwgZnVuY3Rpb24sIGZvckNvbnN0cnVj
dCwgY29uc3RydWN0b3IsIGludHJpbnNpYywgbmFtZSk7CisgICAgTmF0aXZlRXhlY3V0YWJsZSog
bmF0aXZlRXhlY3V0YWJsZSA9IE5hdGl2ZUV4ZWN1dGFibGU6OmNyZWF0ZSgqdm0sIGZvckNhbGws
IGZ1bmN0aW9uLCBmb3JDb25zdHJ1Y3QsIGNvbnN0cnVjdG9yLCBpbnRyaW5zaWMsIHNpZ25hdHVy
ZSwgbmFtZSk7CiAgICAgd2Vha0FkZCgqbV9ob3N0RnVuY3Rpb25TdHViTWFwLCBzdGQ6Om1ha2Vf
dHVwbGUoZnVuY3Rpb24sIGNvbnN0cnVjdG9yLCBuYW1lKSwgV2VhazxOYXRpdmVFeGVjdXRhYmxl
PihuYXRpdmVFeGVjdXRhYmxlLCB0aGlzKSk7CiAgICAgcmV0dXJuIG5hdGl2ZUV4ZWN1dGFibGU7
CiB9CiAKIE5hdGl2ZUV4ZWN1dGFibGUqIEpJVFRodW5rczo6aG9zdEZ1bmN0aW9uU3R1YihWTSog
dm0sIE5hdGl2ZUZ1bmN0aW9uIGZ1bmN0aW9uLCBUaHVua0dlbmVyYXRvciBnZW5lcmF0b3IsIElu
dHJpbnNpYyBpbnRyaW5zaWMsIGNvbnN0IFN0cmluZyYgbmFtZSkKIHsKLSAgICByZXR1cm4gaG9z
dEZ1bmN0aW9uU3R1Yih2bSwgZnVuY3Rpb24sIGNhbGxIb3N0RnVuY3Rpb25Bc0NvbnN0cnVjdG9y
LCBnZW5lcmF0b3IsIGludHJpbnNpYywgbmFtZSk7CisgICAgcmV0dXJuIGhvc3RGdW5jdGlvblN0
dWIodm0sIGZ1bmN0aW9uLCBjYWxsSG9zdEZ1bmN0aW9uQXNDb25zdHJ1Y3RvciwgZ2VuZXJhdG9y
LCBpbnRyaW5zaWMsIG51bGxwdHIsIG5hbWUpOwogfQogCiB2b2lkIEpJVFRodW5rczo6Y2xlYXJI
b3N0RnVuY3Rpb25TdHVicygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVFRodW5rcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRUaHVua3MuaAppbmRl
eCAzZjhmZTgwM2Y5ODcxMGY2OTIzNTI3YmM4ZjY1NTBmNGVkZDFjN2FlLi5hZGRjZjIzMGMzNDVk
NDI3MWI2MzdmMDhiOTRjNDE2YTNlZDE4MmE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVFRodW5rcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
VGh1bmtzLmgKQEAgLTM5LDYgKzM5LDkgQEAKICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNo
Lmg+CiAKIG5hbWVzcGFjZSBKU0MgeworbmFtZXNwYWNlIERPTUpJVCB7CitjbGFzcyBTaWduYXR1
cmU7Cit9CiAKIGNsYXNzIFZNOwogY2xhc3MgTmF0aXZlRXhlY3V0YWJsZTsKQEAgLTU3LDcgKzYw
LDcgQEAgY2xhc3MgSklUVGh1bmtzIGZpbmFsIDogcHJpdmF0ZSBXZWFrSGFuZGxlT3duZXIgewog
ICAgIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBjdGlTdHViKFZNKiwgVGh1bmtHZW5lcmF0b3IpOwog
CiAgICAgTmF0aXZlRXhlY3V0YWJsZSogaG9zdEZ1bmN0aW9uU3R1YihWTSosIE5hdGl2ZUZ1bmN0
aW9uLCBOYXRpdmVGdW5jdGlvbiBjb25zdHJ1Y3RvciwgY29uc3QgU3RyaW5nJiBuYW1lKTsKLSAg
ICBOYXRpdmVFeGVjdXRhYmxlKiBob3N0RnVuY3Rpb25TdHViKFZNKiwgTmF0aXZlRnVuY3Rpb24s
IE5hdGl2ZUZ1bmN0aW9uIGNvbnN0cnVjdG9yLCBUaHVua0dlbmVyYXRvciwgSW50cmluc2ljLCBj
b25zdCBTdHJpbmcmIG5hbWUpOworICAgIE5hdGl2ZUV4ZWN1dGFibGUqIGhvc3RGdW5jdGlvblN0
dWIoVk0qLCBOYXRpdmVGdW5jdGlvbiwgTmF0aXZlRnVuY3Rpb24gY29uc3RydWN0b3IsIFRodW5r
R2VuZXJhdG9yLCBJbnRyaW5zaWMsIGNvbnN0IERPTUpJVDo6U2lnbmF0dXJlKiwgY29uc3QgU3Ry
aW5nJiBuYW1lKTsKICAgICBOYXRpdmVFeGVjdXRhYmxlKiBob3N0RnVuY3Rpb25TdHViKFZNKiwg
TmF0aXZlRnVuY3Rpb24sIFRodW5rR2VuZXJhdG9yLCBJbnRyaW5zaWMsIGNvbnN0IFN0cmluZyYg
bmFtZSk7CiAKICAgICB2b2lkIGNsZWFySG9zdEZ1bmN0aW9uU3R1YnMoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQm91bmRGdW5jdGlvbi5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0JvdW5kRnVuY3Rpb24uY3BwCmluZGV4IDI2Zjk5
ZDY1M2FhMTQ0YjI0MDRkZDc5NTk0MzI5M2RlOTZiNzM0YzUuLmM0Y2U0M2U3ZDU2MGI4NzM2M2M0
OGQ5NTBhMDlhZDc5ZDA1MjQ5N2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTQm91bmRGdW5jdGlvbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNCb3VuZEZ1bmN0aW9uLmNwcApAQCAtMTY4LDcgKzE2OCw3IEBAIEpTQm91bmRGdW5j
dGlvbiogSlNCb3VuZEZ1bmN0aW9uOjpjcmVhdGUoVk0mIHZtLCBFeGVjU3RhdGUqIGV4ZWMsIEpT
R2xvYmFsT2JqZWN0CiAgICAgTmF0aXZlRXhlY3V0YWJsZSogZXhlY3V0YWJsZSA9IHZtLmdldEhv
c3RGdW5jdGlvbigKICAgICAgICAgc2xvd0Nhc2UgPyBib3VuZEZ1bmN0aW9uQ2FsbCA6IGJvdW5k
VGhpc05vQXJnc0Z1bmN0aW9uQ2FsbCwKICAgICAgICAgc2xvd0Nhc2UgPyBOb0ludHJpbnNpYyA6
IEJvdW5kVGhpc05vQXJnc0Z1bmN0aW9uQ2FsbEludHJpbnNpYywKLSAgICAgICAgY2FuQ29uc3Ry
dWN0ID8gKHNsb3dDYXNlID8gYm91bmRGdW5jdGlvbkNvbnN0cnVjdCA6IGJvdW5kVGhpc05vQXJn
c0Z1bmN0aW9uQ29uc3RydWN0KSA6IGNhbGxIb3N0RnVuY3Rpb25Bc0NvbnN0cnVjdG9yLAorICAg
ICAgICBjYW5Db25zdHJ1Y3QgPyAoc2xvd0Nhc2UgPyBib3VuZEZ1bmN0aW9uQ29uc3RydWN0IDog
Ym91bmRUaGlzTm9BcmdzRnVuY3Rpb25Db25zdHJ1Y3QpIDogY2FsbEhvc3RGdW5jdGlvbkFzQ29u
c3RydWN0b3IsIG51bGxwdHIsCiAgICAgICAgIG5hbWUpOwogICAgIFN0cnVjdHVyZSogc3RydWN0
dXJlID0gZ2V0Qm91bmRGdW5jdGlvblN0cnVjdHVyZSh2bSwgZXhlYywgZ2xvYmFsT2JqZWN0LCB0
YXJnZXRGdW5jdGlvbik7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgbnVsbHB0cik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5oCmluZGV4IGM0MGYzZTIxOTg0MWZi
NDY4OTYzNTI4NGIwNDIyNDdhZmQ1MjNjMzYuLjRlZmJmOTA3NzhjYzU3MWJiZGI4Mjg3MWE1MWZh
NDRmODU2YWU5OGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
Q2VsbC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5oCkBAIC01
NiwxNyArNTYsMTcgQEAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gdm9pZCogYWxsb2NhdGVDZWxsKEhl
YXAmLCBzaXplX3QpOwogdGVtcGxhdGU8dHlwZW5hbWUgVD4gdm9pZCogYWxsb2NhdGVDZWxsKEhl
YXAmLCBHQ0RlZmVycmFsQ29udGV4dCopOwogdGVtcGxhdGU8dHlwZW5hbWUgVD4gdm9pZCogYWxs
b2NhdGVDZWxsKEhlYXAmLCBHQ0RlZmVycmFsQ29udGV4dCosIHNpemVfdCk7CiAKLSNkZWZpbmUg
REVDTEFSRV9FWFBPUlRfSU5GTyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFwKLSAgICBwcm90ZWN0ZWQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgc3RhdGljIEpTX0VYUE9SVERBVEEg
Y29uc3QgOjpKU0M6OkNsYXNzSW5mbyBzX2luZm87ICAgICAgICAgICAgIFwKLSAgICBwdWJsaWM6
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFwKLSAgICAgICAgc3RhdGljIGNvbnN0IDo6SlNDOjpDbGFzc0luZm8qIGluZm8oKSB7IHJl
dHVybiAmc19pbmZvOyB9Ci0KLSNkZWZpbmUgREVDTEFSRV9JTkZPICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBwcm90ZWN0ZWQ6ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAg
ICAgICAgc3RhdGljIGNvbnN0IDo6SlNDOjpDbGFzc0luZm8gc19pbmZvOyAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFwKLSAgICBwdWJsaWM6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgc3RhdGljIGNvbnN0IDo6
SlNDOjpDbGFzc0luZm8qIGluZm8oKSB7IHJldHVybiAmc19pbmZvOyB9CisjZGVmaW5lIERFQ0xB
UkVfRVhQT1JUX0lORk8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFwKKyAgICBwcm90ZWN0ZWQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBzdGF0aWMgSlNfRVhQT1JU
REFUQSBjb25zdCA6OkpTQzo6Q2xhc3NJbmZvIHNfaW5mbzsgICAgICAgICAgICAgICAgICBcCisg
ICAgcHVibGljOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBjb25zdCA6OkpT
Qzo6Q2xhc3NJbmZvKiBpbmZvKCkgeyByZXR1cm4gJnNfaW5mbzsgfQorCisjZGVmaW5lIERFQ0xB
UkVfSU5GTyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFwKKyAgICBwcm90ZWN0ZWQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBzdGF0aWMgY29uc3QgOjpK
U0M6OkNsYXNzSW5mbyBzX2luZm87ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisg
ICAgcHVibGljOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBjb25zdCA6OkpT
Qzo6Q2xhc3NJbmZvKiBpbmZvKCkgeyByZXR1cm4gJnNfaW5mbzsgfQogCiBjbGFzcyBKU0NlbGwg
OiBwdWJsaWMgSGVhcENlbGwgewogICAgIGZyaWVuZCBjbGFzcyBKU1ZhbHVlOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcAppbmRleCA4NTg0YmMyOTdhZjcy
M2Y1ODI5ODE1NmUyZTJiMGE4OGFlNzE4ZmI0Li5hMzE4NDJiNjU5MDkzZWVkNDgzMmYwYzIyNTQ3
ZmZiNDQ5YzQ0Y2Q5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0Z1bmN0aW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0
aW9uLmNwcApAQCAtODQsOSArODQsOSBAQCBKU0Z1bmN0aW9uKiBKU0Z1bmN0aW9uOjpjcmVhdGUo
Vk0mIHZtLCBXZWJBc3NlbWJseUV4ZWN1dGFibGUqIGV4ZWN1dGFibGUsIEpTU2NvcAogfQogI2Vu
ZGlmCiAKLUpTRnVuY3Rpb24qIEpTRnVuY3Rpb246OmNyZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIGludCBsZW5ndGgsIGNvbnN0IFN0cmluZyYgbmFtZSwgTmF0aXZl
RnVuY3Rpb24gbmF0aXZlRnVuY3Rpb24sIEludHJpbnNpYyBpbnRyaW5zaWMsIE5hdGl2ZUZ1bmN0
aW9uIG5hdGl2ZUNvbnN0cnVjdG9yKQorSlNGdW5jdGlvbiogSlNGdW5jdGlvbjo6Y3JlYXRlKFZN
JiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgaW50IGxlbmd0aCwgY29uc3QgU3Ry
aW5nJiBuYW1lLCBOYXRpdmVGdW5jdGlvbiBuYXRpdmVGdW5jdGlvbiwgSW50cmluc2ljIGludHJp
bnNpYywgTmF0aXZlRnVuY3Rpb24gbmF0aXZlQ29uc3RydWN0b3IsIGNvbnN0IERPTUpJVDo6U2ln
bmF0dXJlKiBzaWduYXR1cmUpCiB7Ci0gICAgTmF0aXZlRXhlY3V0YWJsZSogZXhlY3V0YWJsZSA9
IHZtLmdldEhvc3RGdW5jdGlvbihuYXRpdmVGdW5jdGlvbiwgaW50cmluc2ljLCBuYXRpdmVDb25z
dHJ1Y3RvciwgbmFtZSk7CisgICAgTmF0aXZlRXhlY3V0YWJsZSogZXhlY3V0YWJsZSA9IHZtLmdl
dEhvc3RGdW5jdGlvbihuYXRpdmVGdW5jdGlvbiwgaW50cmluc2ljLCBuYXRpdmVDb25zdHJ1Y3Rv
ciwgc2lnbmF0dXJlLCBuYW1lKTsKICAgICBKU0Z1bmN0aW9uKiBmdW5jdGlvbiA9IG5ldyAoTm90
TnVsbCwgYWxsb2NhdGVDZWxsPEpTRnVuY3Rpb24+KHZtLmhlYXApKSBKU0Z1bmN0aW9uKHZtLCBn
bG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdC0+ZnVuY3Rpb25TdHJ1Y3R1cmUoKSk7CiAgICAgLy8g
Q2FuJ3QgZG8gdGhpcyBkdXJpbmcgaW5pdGlhbGl6YXRpb24gYmVjYXVzZSBnZXRIb3N0RnVuY3Rp
b24gbWlnaHQgZG8gYSBHQyBhbGxvY2F0aW9uLgogICAgIGZ1bmN0aW9uLT5maW5pc2hDcmVhdGlv
bih2bSwgZXhlY3V0YWJsZSwgbGVuZ3RoLCBuYW1lKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTRnVuY3Rpb24uaAppbmRleCA4ZGYwM2ExNGE2N2RhZTkzMDRjMGQ1NTQ5NGY5NWE4
NzdmOTc4MWU2Li5mMTFiMTJmYjNiZDE0NTYyNWY4MmJmMWZhODcyNTA0NDQ3NjU3NjI4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5oCkBAIC00Niw2ICs0Niwx
MSBAQCBjbGFzcyBTcGVjdWxhdGl2ZUpJVDsKIGNsYXNzIEpJVENvbXBpbGVyOwogfQogCituYW1l
c3BhY2UgRE9NSklUIHsKK2NsYXNzIFNpZ25hdHVyZTsKK30KKworCiBKU19FWFBPUlRfUFJJVkFU
RSBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxIb3N0RnVuY3Rpb25Bc0NvbnN0cnVj
dG9yKEV4ZWNTdGF0ZSopOwogCiBKU19FWFBPUlRfUFJJVkFURSBTdHJpbmcgZ2V0Q2FsY3VsYXRl
ZERpc3BsYXlOYW1lKFZNJiwgSlNPYmplY3QqKTsKQEAgLTY3LDcgKzcyLDcgQEAgY2xhc3MgSlNG
dW5jdGlvbiA6IHB1YmxpYyBKU0NhbGxlZSB7CiAgICAgICAgIHJldHVybiBzaXplb2YoSlNGdW5j
dGlvbik7CiAgICAgfQogCi0gICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIEpTRnVuY3Rpb24q
IGNyZWF0ZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgaW50IGxlbmd0aCwgY29uc3QgU3RyaW5nJiBu
YW1lLCBOYXRpdmVGdW5jdGlvbiwgSW50cmluc2ljID0gTm9JbnRyaW5zaWMsIE5hdGl2ZUZ1bmN0
aW9uIG5hdGl2ZUNvbnN0cnVjdG9yID0gY2FsbEhvc3RGdW5jdGlvbkFzQ29uc3RydWN0b3IpOwor
ICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBKU0Z1bmN0aW9uKiBjcmVhdGUoVk0mLCBKU0ds
b2JhbE9iamVjdCosIGludCBsZW5ndGgsIGNvbnN0IFN0cmluZyYgbmFtZSwgTmF0aXZlRnVuY3Rp
b24sIEludHJpbnNpYyA9IE5vSW50cmluc2ljLCBOYXRpdmVGdW5jdGlvbiBuYXRpdmVDb25zdHJ1
Y3RvciA9IGNhbGxIb3N0RnVuY3Rpb25Bc0NvbnN0cnVjdG9yLCBjb25zdCBET01KSVQ6OlNpZ25h
dHVyZSogPSBudWxscHRyKTsKICAgICAKICAgICBzdGF0aWMgSlNGdW5jdGlvbiogY3JlYXRlV2l0
aEludmFsaWRhdGVkUmVhbGxvY2F0aW9uV2F0Y2hwb2ludChWTSYsIEZ1bmN0aW9uRXhlY3V0YWJs
ZSosIEpTU2NvcGUqKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNOYXRpdmVTdGRGdW5jdGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU05hdGl2ZVN0ZEZ1bmN0aW9uLmNwcAppbmRleCA2ZGQ4NDlmMmVhZmJlYmRkNzA3ZWU1NzM4
MDA4MmRlNTQ4OTMyMGExLi5jMTI2NWIxZjA2YTkwYTA3NDQxZDdhYzVjNjA4ODMwYTFlZmE0ZjAy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU05hdGl2ZVN0ZEZ1
bmN0aW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU05hdGl2ZVN0
ZEZ1bmN0aW9uLmNwcApAQCAtNjYsNyArNjYsNyBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBydW5TdGRGdW5jdGlvbihFeGVjU3RhdGUqIHN0YXRlKQogCiBKU05hdGl2ZVN0
ZEZ1bmN0aW9uKiBKU05hdGl2ZVN0ZEZ1bmN0aW9uOjpjcmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBpbnQgbGVuZ3RoLCBjb25zdCBTdHJpbmcmIG5hbWUsIE5hdGl2
ZVN0ZEZ1bmN0aW9uJiYgbmF0aXZlU3RkRnVuY3Rpb24sIEludHJpbnNpYyBpbnRyaW5zaWMsIE5h
dGl2ZUZ1bmN0aW9uIG5hdGl2ZUNvbnN0cnVjdG9yKQogewotICAgIE5hdGl2ZUV4ZWN1dGFibGUq
IGV4ZWN1dGFibGUgPSB2bS5nZXRIb3N0RnVuY3Rpb24ocnVuU3RkRnVuY3Rpb24sIGludHJpbnNp
YywgbmF0aXZlQ29uc3RydWN0b3IsIG5hbWUpOworICAgIE5hdGl2ZUV4ZWN1dGFibGUqIGV4ZWN1
dGFibGUgPSB2bS5nZXRIb3N0RnVuY3Rpb24ocnVuU3RkRnVuY3Rpb24sIGludHJpbnNpYywgbmF0
aXZlQ29uc3RydWN0b3IsIG51bGxwdHIsIG5hbWUpOwogICAgIE5hdGl2ZVN0ZEZ1bmN0aW9uQ2Vs
bCogZnVuY3Rpb25DZWxsID0gTmF0aXZlU3RkRnVuY3Rpb25DZWxsOjpjcmVhdGUodm0sIFdURk1v
dmUobmF0aXZlU3RkRnVuY3Rpb24pKTsKICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGdsb2Jh
bE9iamVjdC0+bmF0aXZlU3RkRnVuY3Rpb25TdHJ1Y3R1cmUoKTsKICAgICBKU05hdGl2ZVN0ZEZ1
bmN0aW9uKiBmdW5jdGlvbiA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTTmF0aXZlU3Rk
RnVuY3Rpb24+KHZtLmhlYXApKSBKU05hdGl2ZVN0ZEZ1bmN0aW9uKHZtLCBnbG9iYWxPYmplY3Qs
IHN0cnVjdHVyZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U09iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAK
aW5kZXggZjUzZGI2MTk4NmVhZGRhYTIzYTI0NWRlNTRhZTA5YzU4ZjBhYjc2NC4uMDhhZTc5MjBh
OWVlNTJjMjRkNzVhYmUxZGE3ZjY2ZTgxMWIyYWYxYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTT2JqZWN0LmNwcApAQCAtMjU0OSw2ICsyNTQ5LDE3IEBAIGJvb2wgSlNPYmpl
Y3Q6OnB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgY29uCiAgICAgcmV0dXJuIHB1dERpcmVjdCh2bSwgcHJvcGVydHlOYW1lLCBmdW5j
dGlvbiwgYXR0cmlidXRlcyk7CiB9CiAKK2Jvb2wgSlNPYmplY3Q6OnB1dERpcmVjdE5hdGl2ZUZ1
bmN0aW9uKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgUHJvcGVy
dHlOYW1lJiBwcm9wZXJ0eU5hbWUsIHVuc2lnbmVkIGZ1bmN0aW9uTGVuZ3RoLCBOYXRpdmVGdW5j
dGlvbiBuYXRpdmVGdW5jdGlvbiwgSW50cmluc2ljIGludHJpbnNpYywgY29uc3QgRE9NSklUOjpT
aWduYXR1cmUqIHNpZ25hdHVyZSwgdW5zaWduZWQgYXR0cmlidXRlcykKK3sKKyAgICBTdHJpbmdJ
bXBsKiBuYW1lID0gcHJvcGVydHlOYW1lLnB1YmxpY05hbWUoKTsKKyAgICBpZiAoIW5hbWUpCisg
ICAgICAgIG5hbWUgPSB2bS5wcm9wZXJ0eU5hbWVzLT5hbm9ueW1vdXMuaW1wbCgpOworICAgIEFT
U0VSVChuYW1lKTsKKworICAgIEpTRnVuY3Rpb24qIGZ1bmN0aW9uID0gSlNGdW5jdGlvbjo6Y3Jl
YXRlKHZtLCBnbG9iYWxPYmplY3QsIGZ1bmN0aW9uTGVuZ3RoLCBuYW1lLCBuYXRpdmVGdW5jdGlv
biwgaW50cmluc2ljLCBjYWxsSG9zdEZ1bmN0aW9uQXNDb25zdHJ1Y3Rvciwgc2lnbmF0dXJlKTsK
KyAgICByZXR1cm4gcHV0RGlyZWN0KHZtLCBwcm9wZXJ0eU5hbWUsIGZ1bmN0aW9uLCBhdHRyaWJ1
dGVzKTsKK30KKwogSlNGdW5jdGlvbiogSlNPYmplY3Q6OnB1dERpcmVjdEJ1aWx0aW5GdW5jdGlv
bihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IFByb3BlcnR5TmFt
ZSYgcHJvcGVydHlOYW1lLCBGdW5jdGlvbkV4ZWN1dGFibGUqIGZ1bmN0aW9uRXhlY3V0YWJsZSwg
dW5zaWduZWQgYXR0cmlidXRlcykKIHsKICAgICBTdHJpbmdJbXBsKiBuYW1lID0gcHJvcGVydHlO
YW1lLnB1YmxpY05hbWUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5o
CmluZGV4IDYyMjBlYzdhMWJhOGU4YTc0OWRiNGIwNmNkNDI5M2E4ODVhZjdmOTIuLmViZTQ4NWU4
ZGYzNmRiNWNhZjM3NzA0YjhlZWRkNGE3NmNiOWM0NDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNPYmplY3QuaApAQCAtNDcsNiArNDcsOSBAQAogI2luY2x1ZGUgPHd0Zi9TdGRM
aWJFeHRyYXMuaD4KIAogbmFtZXNwYWNlIEpTQyB7CituYW1lc3BhY2UgRE9NSklUIHsKK2NsYXNz
IFNpZ25hdHVyZTsKK30KIAogaW5saW5lIEpTQ2VsbCogZ2V0SlNGdW5jdGlvbihKU1ZhbHVlIHZh
bHVlKQogewpAQCAtNzAwLDYgKzcwMyw3IEBAIGNsYXNzIEpTT2JqZWN0IDogcHVibGljIEpTQ2Vs
bCB7CiAKICAgICBKU19FWFBPUlRfUFJJVkFURSBib29sIHB1dERpcmVjdE5hdGl2ZUludHJpbnNp
Y0dldHRlcihWTSYsIEpTR2xvYmFsT2JqZWN0KiwgSWRlbnRpZmllciwgTmF0aXZlRnVuY3Rpb24s
IEludHJpbnNpYywgdW5zaWduZWQgYXR0cmlidXRlcyk7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUg
Ym9vbCBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbihWTSYsIEpTR2xvYmFsT2JqZWN0KiwgY29uc3Qg
UHJvcGVydHlOYW1lJiwgdW5zaWduZWQgZnVuY3Rpb25MZW5ndGgsIE5hdGl2ZUZ1bmN0aW9uLCBJ
bnRyaW5zaWMsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIGJv
b2wgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb24oVk0mLCBKU0dsb2JhbE9iamVjdCosIGNvbnN0IFBy
b3BlcnR5TmFtZSYsIHVuc2lnbmVkIGZ1bmN0aW9uTGVuZ3RoLCBOYXRpdmVGdW5jdGlvbiwgSW50
cmluc2ljLCBjb25zdCBET01KSVQ6OlNpZ25hdHVyZSosIHVuc2lnbmVkIGF0dHJpYnV0ZXMpOwog
ICAgIEpTX0VYUE9SVF9QUklWQVRFIEpTRnVuY3Rpb24qIHB1dERpcmVjdEJ1aWx0aW5GdW5jdGlv
bihWTSYsIEpTR2xvYmFsT2JqZWN0KiwgY29uc3QgUHJvcGVydHlOYW1lJiwgRnVuY3Rpb25FeGVj
dXRhYmxlKiwgdW5zaWduZWQgYXR0cmlidXRlcyk7CiAgICAgSlNGdW5jdGlvbiogcHV0RGlyZWN0
QnVpbHRpbkZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24oVk0mLCBKU0dsb2JhbE9iamVjdCosIGNv
bnN0IFByb3BlcnR5TmFtZSYsIEZ1bmN0aW9uRXhlY3V0YWJsZSosIHVuc2lnbmVkIGF0dHJpYnV0
ZXMpOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb25X
aXRob3V0VHJhbnNpdGlvbihWTSYsIEpTR2xvYmFsT2JqZWN0KiwgY29uc3QgUHJvcGVydHlOYW1l
JiwgdW5zaWduZWQgZnVuY3Rpb25MZW5ndGgsIE5hdGl2ZUZ1bmN0aW9uLCBJbnRyaW5zaWMsIHVu
c2lnbmVkIGF0dHJpYnV0ZXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvTG9va3VwLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Mb29rdXAuaApp
bmRleCBlMmQxNzk1Mzg4ZTc2NTJiZDhmMWI0YjZkYWNiYjJjYmNlOWNkNDRmLi5kNzA3Njg2ZmI1
NjkzZTdmNTJmZTZkMWEyZWM0NGJkMDAyM2JlZjExIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Mb29rdXAuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Mb29rdXAuaApAQCAtMjQsNiArMjQsNyBAQAogI2luY2x1ZGUgIkNhbGxGcmFtZS5oIgog
I2luY2x1ZGUgIkN1c3RvbUdldHRlclNldHRlci5oIgogI2luY2x1ZGUgIkRPTUpJVEdldHRlclNl
dHRlci5oIgorI2luY2x1ZGUgIkRPTUpJVFNpZ25hdHVyZS5oIgogI2luY2x1ZGUgIklkZW50aWZp
ZXIuaCIKICNpbmNsdWRlICJJZGVudGlmaWVySW5saW5lcy5oIgogI2luY2x1ZGUgIkludHJpbnNp
Yy5oIgpAQCAtNzUsMTIgKzc2LDE5IEBAIHN0cnVjdCBIYXNoVGFibGVWYWx1ZSB7CiAgICAgSW50
cmluc2ljIGludHJpbnNpYygpIGNvbnN0IHsgQVNTRVJUKG1fYXR0cmlidXRlcyAmIEZ1bmN0aW9u
KTsgcmV0dXJuIG1faW50cmluc2ljOyB9CiAgICAgQnVpbHRpbkdlbmVyYXRvciBidWlsdGluR2Vu
ZXJhdG9yKCkgY29uc3QgeyBBU1NFUlQobV9hdHRyaWJ1dGVzICYgQnVpbHRpbik7IHJldHVybiBy
ZWludGVycHJldF9jYXN0PEJ1aWx0aW5HZW5lcmF0b3I+KG1fdmFsdWVzLnZhbHVlMSk7IH0KICAg
ICBOYXRpdmVGdW5jdGlvbiBmdW5jdGlvbigpIGNvbnN0IHsgQVNTRVJUKG1fYXR0cmlidXRlcyAm
IEZ1bmN0aW9uKTsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8TmF0aXZlRnVuY3Rpb24+KG1fdmFs
dWVzLnZhbHVlMSk7IH0KLSAgICB1bnNpZ25lZCBjaGFyIGZ1bmN0aW9uTGVuZ3RoKCkgY29uc3Qg
eyBBU1NFUlQobV9hdHRyaWJ1dGVzICYgRnVuY3Rpb24pOyByZXR1cm4gc3RhdGljX2Nhc3Q8dW5z
aWduZWQgY2hhcj4obV92YWx1ZXMudmFsdWUyKTsgfQorICAgIHVuc2lnbmVkIGNoYXIgZnVuY3Rp
b25MZW5ndGgoKSBjb25zdAorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fYXR0cmlidXRlcyAmIEZ1
bmN0aW9uKTsKKyAgICAgICAgaWYgKG1fYXR0cmlidXRlcyAmIERPTUpJVEZ1bmN0aW9uKQorICAg
ICAgICAgICAgcmV0dXJuIHNpZ25hdHVyZSgpLT5hcmd1bWVudENvdW50OworICAgICAgICByZXR1
cm4gc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4obV92YWx1ZXMudmFsdWUyKTsKKyAgICB9CiAK
ICAgICBHZXRGdW5jdGlvbiBwcm9wZXJ0eUdldHRlcigpIGNvbnN0IHsgQVNTRVJUKCEobV9hdHRy
aWJ1dGVzICYgQnVpbHRpbk9yRnVuY3Rpb25PckFjY2Vzc29yT3JMYXp5UHJvcGVydHlPckNvbnN0
YW50KSk7IHJldHVybiByZWludGVycHJldF9jYXN0PEdldEZ1bmN0aW9uPihtX3ZhbHVlcy52YWx1
ZTEpOyB9CiAgICAgUHV0RnVuY3Rpb24gcHJvcGVydHlQdXR0ZXIoKSBjb25zdCB7IEFTU0VSVCgh
KG1fYXR0cmlidXRlcyAmIEJ1aWx0aW5PckZ1bmN0aW9uT3JBY2Nlc3Nvck9yTGF6eVByb3BlcnR5
T3JDb25zdGFudCkpOyByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxQdXRGdW5jdGlvbj4obV92YWx1
ZXMudmFsdWUyKTsgfQogCiAgICAgRE9NSklUOjpHZXR0ZXJTZXR0ZXIqIGRvbUpJVCgpIGNvbnN0
IHsgQVNTRVJUKG1fYXR0cmlidXRlcyAmIERPTUpJVEF0dHJpYnV0ZSk7IHJldHVybiByZWludGVy
cHJldF9jYXN0PERPTUpJVEdldHRlclNldHRlckdlbmVyYXRvcj4obV92YWx1ZXMudmFsdWUxKSgp
OyB9CisgICAgY29uc3QgRE9NSklUOjpTaWduYXR1cmUqIHNpZ25hdHVyZSgpIGNvbnN0IHsgQVNT
RVJUKG1fYXR0cmlidXRlcyAmIERPTUpJVEZ1bmN0aW9uKTsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nh
c3Q8Y29uc3QgRE9NSklUOjpTaWduYXR1cmUqPihtX3ZhbHVlcy52YWx1ZTIpOyB9CiAKICAgICBO
YXRpdmVGdW5jdGlvbiBhY2Nlc3NvckdldHRlcigpIGNvbnN0IHsgQVNTRVJUKG1fYXR0cmlidXRl
cyAmIEFjY2Vzc29yKTsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8TmF0aXZlRnVuY3Rpb24+KG1f
dmFsdWVzLnZhbHVlMSk7IH0KICAgICBOYXRpdmVGdW5jdGlvbiBhY2Nlc3NvclNldHRlcigpIGNv
bnN0IHsgQVNTRVJUKG1fYXR0cmlidXRlcyAmIEFjY2Vzc29yKTsgcmV0dXJuIHJlaW50ZXJwcmV0
X2Nhc3Q8TmF0aXZlRnVuY3Rpb24+KG1fdmFsdWVzLnZhbHVlMik7IH0KQEAgLTMxMyw2ICszMjEs
MTIgQEAgaW5saW5lIHZvaWQgcmVpZnlTdGF0aWNQcm9wZXJ0eShWTSYgdm0sIGNvbnN0IFByb3Bl
cnR5TmFtZSYgcHJvcGVydHlOYW1lLCBjb25zdAogICAgIH0KIAogICAgIGlmICh2YWx1ZS5hdHRy
aWJ1dGVzKCkgJiBGdW5jdGlvbikgeworICAgICAgICBpZiAodmFsdWUuYXR0cmlidXRlcygpICYg
RE9NSklURnVuY3Rpb24pIHsKKyAgICAgICAgICAgIHRoaXNPYmoucHV0RGlyZWN0TmF0aXZlRnVu
Y3Rpb24oCisgICAgICAgICAgICAgICAgdm0sIHRoaXNPYmouZ2xvYmFsT2JqZWN0KCksIHByb3Bl
cnR5TmFtZSwgdmFsdWUuZnVuY3Rpb25MZW5ndGgoKSwKKyAgICAgICAgICAgICAgICB2YWx1ZS5m
dW5jdGlvbigpLCB2YWx1ZS5pbnRyaW5zaWMoKSwgdmFsdWUuc2lnbmF0dXJlKCksIGF0dHJpYnV0
ZXNGb3JTdHJ1Y3R1cmUodmFsdWUuYXR0cmlidXRlcygpKSk7CisgICAgICAgICAgICByZXR1cm47
CisgICAgICAgIH0KICAgICAgICAgdGhpc09iai5wdXREaXJlY3ROYXRpdmVGdW5jdGlvbigKICAg
ICAgICAgICAgIHZtLCB0aGlzT2JqLmdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUsIHZhbHVl
LmZ1bmN0aW9uTGVuZ3RoKCksCiAgICAgICAgICAgICB2YWx1ZS5mdW5jdGlvbigpLCB2YWx1ZS5p
bnRyaW5zaWMoKSwgYXR0cmlidXRlc0ZvclN0cnVjdHVyZSh2YWx1ZS5hdHRyaWJ1dGVzKCkpKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05hdGl2ZUV4ZWN1dGFi
bGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZlRXhlY3V0YWJsZS5j
cHAKaW5kZXggMWMyYmVjNThiN2RiODk4YjgxMThiMjk3MTBiMmQ3NDI2OTNiYjIxZC4uYjdkYWQy
YTQ2MmRkZGZjMjI3NjJmZDVjZDdjZjZhNDYxY2RkMThmNiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZlRXhlY3V0YWJsZS5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZlRXhlY3V0YWJsZS5jcHAKQEAgLTQwLDEwICs0MCwx
MCBAQCBuYW1lc3BhY2UgSlNDIHsKIAogY29uc3QgQ2xhc3NJbmZvIE5hdGl2ZUV4ZWN1dGFibGU6
OnNfaW5mbyA9IHsgIk5hdGl2ZUV4ZWN1dGFibGUiLCAmRXhlY3V0YWJsZUJhc2U6OnNfaW5mbywg
MCwgQ1JFQVRFX01FVEhPRF9UQUJMRShOYXRpdmVFeGVjdXRhYmxlKSB9OwogCi1OYXRpdmVFeGVj
dXRhYmxlKiBOYXRpdmVFeGVjdXRhYmxlOjpjcmVhdGUoVk0mIHZtLCBQYXNzUmVmUHRyPEpJVENv
ZGU+IGNhbGxUaHVuaywgTmF0aXZlRnVuY3Rpb24gZnVuY3Rpb24sIFBhc3NSZWZQdHI8SklUQ29k
ZT4gY29uc3RydWN0VGh1bmssIE5hdGl2ZUZ1bmN0aW9uIGNvbnN0cnVjdG9yLCBJbnRyaW5zaWMg
aW50cmluc2ljLCBjb25zdCBTdHJpbmcmIG5hbWUpCitOYXRpdmVFeGVjdXRhYmxlKiBOYXRpdmVF
eGVjdXRhYmxlOjpjcmVhdGUoVk0mIHZtLCBQYXNzUmVmUHRyPEpJVENvZGU+IGNhbGxUaHVuaywg
TmF0aXZlRnVuY3Rpb24gZnVuY3Rpb24sIFBhc3NSZWZQdHI8SklUQ29kZT4gY29uc3RydWN0VGh1
bmssIE5hdGl2ZUZ1bmN0aW9uIGNvbnN0cnVjdG9yLCBJbnRyaW5zaWMgaW50cmluc2ljLCBjb25z
dCBET01KSVQ6OlNpZ25hdHVyZSogc2lnbmF0dXJlLCBjb25zdCBTdHJpbmcmIG5hbWUpCiB7CiAg
ICAgTmF0aXZlRXhlY3V0YWJsZSogZXhlY3V0YWJsZTsKLSAgICBleGVjdXRhYmxlID0gbmV3IChO
b3ROdWxsLCBhbGxvY2F0ZUNlbGw8TmF0aXZlRXhlY3V0YWJsZT4odm0uaGVhcCkpIE5hdGl2ZUV4
ZWN1dGFibGUodm0sIGZ1bmN0aW9uLCBjb25zdHJ1Y3RvciwgaW50cmluc2ljKTsKKyAgICBleGVj
dXRhYmxlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8TmF0aXZlRXhlY3V0YWJsZT4odm0u
aGVhcCkpIE5hdGl2ZUV4ZWN1dGFibGUodm0sIGZ1bmN0aW9uLCBjb25zdHJ1Y3RvciwgaW50cmlu
c2ljLCBzaWduYXR1cmUpOwogICAgIGV4ZWN1dGFibGUtPmZpbmlzaENyZWF0aW9uKHZtLCBjYWxs
VGh1bmssIGNvbnN0cnVjdFRodW5rLCBuYW1lKTsKICAgICByZXR1cm4gZXhlY3V0YWJsZTsKIH0K
QEAgLTY4LDEwICs2OCwxMSBAQCB2b2lkIE5hdGl2ZUV4ZWN1dGFibGU6OmZpbmlzaENyZWF0aW9u
KFZNJiB2bSwgUGFzc1JlZlB0cjxKSVRDb2RlPiBjYWxsVGh1bmssIFBhcwogICAgIG1fbmFtZSA9
IG5hbWU7CiB9CiAKLU5hdGl2ZUV4ZWN1dGFibGU6Ok5hdGl2ZUV4ZWN1dGFibGUoVk0mIHZtLCBO
YXRpdmVGdW5jdGlvbiBmdW5jdGlvbiwgTmF0aXZlRnVuY3Rpb24gY29uc3RydWN0b3IsIEludHJp
bnNpYyBpbnRyaW5zaWMpCitOYXRpdmVFeGVjdXRhYmxlOjpOYXRpdmVFeGVjdXRhYmxlKFZNJiB2
bSwgTmF0aXZlRnVuY3Rpb24gZnVuY3Rpb24sIE5hdGl2ZUZ1bmN0aW9uIGNvbnN0cnVjdG9yLCBJ
bnRyaW5zaWMgaW50cmluc2ljLCBjb25zdCBET01KSVQ6OlNpZ25hdHVyZSogc2lnbmF0dXJlKQog
ICAgIDogRXhlY3V0YWJsZUJhc2Uodm0sIHZtLm5hdGl2ZUV4ZWN1dGFibGVTdHJ1Y3R1cmUuZ2V0
KCksIE5VTV9QQVJBTUVURVJTX0lTX0hPU1QsIGludHJpbnNpYykKICAgICAsIG1fZnVuY3Rpb24o
ZnVuY3Rpb24pCiAgICAgLCBtX2NvbnN0cnVjdG9yKGNvbnN0cnVjdG9yKQorICAgICwgbV9zaWdu
YXR1cmUoc2lnbmF0dXJlKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9OYXRpdmVFeGVjdXRhYmxlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9OYXRpdmVFeGVjdXRhYmxlLmgKaW5kZXggNWJmMmUxMDZkYjMwYTViOGM5NzhjODk2YTZh
ZDk4Y2EyYzc1NzQxNC4uZTRkM2UwNDk0NTdiNDVkMDI0NTdlOGRkYTU0NDkwYjM3MTRhY2NlYSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZlRXhlY3V0YWJs
ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05hdGl2ZUV4ZWN1dGFibGUu
aApAQCAtMjgsNiArMjgsOSBAQAogI2luY2x1ZGUgIkV4ZWN1dGFibGVCYXNlLmgiCiAKIG5hbWVz
cGFjZSBKU0MgeworbmFtZXNwYWNlIERPTUpJVCB7CitjbGFzcyBTaWduYXR1cmU7Cit9CiAKIGNs
YXNzIE5hdGl2ZUV4ZWN1dGFibGUgZmluYWwgOiBwdWJsaWMgRXhlY3V0YWJsZUJhc2UgewogICAg
IGZyaWVuZCBjbGFzcyBKSVQ7CkBAIC0zNiw3ICszOSw3IEBAIGNsYXNzIE5hdGl2ZUV4ZWN1dGFi
bGUgZmluYWwgOiBwdWJsaWMgRXhlY3V0YWJsZUJhc2UgewogICAgIHR5cGVkZWYgRXhlY3V0YWJs
ZUJhc2UgQmFzZTsKICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBC
YXNlOjpTdHJ1Y3R1cmVGbGFncyB8IFN0cnVjdHVyZUlzSW1tb3J0YWw7CiAKLSAgICBzdGF0aWMg
TmF0aXZlRXhlY3V0YWJsZSogY3JlYXRlKFZNJiB2bSwgUGFzc1JlZlB0cjxKSVRDb2RlPiBjYWxs
VGh1bmssIE5hdGl2ZUZ1bmN0aW9uIGZ1bmN0aW9uLCBQYXNzUmVmUHRyPEpJVENvZGU+IGNvbnN0
cnVjdFRodW5rLCBOYXRpdmVGdW5jdGlvbiBjb25zdHJ1Y3RvciwgSW50cmluc2ljIGludHJpbnNp
YywgY29uc3QgU3RyaW5nJiBuYW1lKTsKKyAgICBzdGF0aWMgTmF0aXZlRXhlY3V0YWJsZSogY3Jl
YXRlKFZNJiwgUGFzc1JlZlB0cjxKSVRDb2RlPiBjYWxsVGh1bmssIE5hdGl2ZUZ1bmN0aW9uIGZ1
bmN0aW9uLCBQYXNzUmVmUHRyPEpJVENvZGU+IGNvbnN0cnVjdFRodW5rLCBOYXRpdmVGdW5jdGlv
biBjb25zdHJ1Y3RvciwgSW50cmluc2ljLCBjb25zdCBET01KSVQ6OlNpZ25hdHVyZSosIGNvbnN0
IFN0cmluZyYgbmFtZSk7CiAKICAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQ2VsbCopOwogCkBA
IC02Niw2ICs2OSwxNCBAQCBjbGFzcyBOYXRpdmVFeGVjdXRhYmxlIGZpbmFsIDogcHVibGljIEV4
ZWN1dGFibGVCYXNlIHsKICAgICBERUNMQVJFX0lORk87CiAKICAgICBjb25zdCBTdHJpbmcmIG5h
bWUoKSBjb25zdCB7IHJldHVybiBtX25hbWU7IH0KKyAgICBjb25zdCBET01KSVQ6OlNpZ25hdHVy
ZSogc2lnbmF0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9zaWduYXR1cmU7IH0KKworICAgIGNvbnN0
IERPTUpJVDo6U2lnbmF0dXJlKiBzaWduYXR1cmVGb3IoQ29kZVNwZWNpYWxpemF0aW9uS2luZCBr
aW5kKSBjb25zdAorICAgIHsKKyAgICAgICAgaWYgKGlzQ2FsbChraW5kKSkKKyAgICAgICAgICAg
IHJldHVybiBzaWduYXR1cmUoKTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQogCiBw
cm90ZWN0ZWQ6CiAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYsIFBhc3NSZWZQdHI8SklUQ29k
ZT4gY2FsbFRodW5rLCBQYXNzUmVmUHRyPEpJVENvZGU+IGNvbnN0cnVjdFRodW5rLCBjb25zdCBT
dHJpbmcmIG5hbWUpOwpAQCAtNzMsMTAgKzg0LDExIEBAIGNsYXNzIE5hdGl2ZUV4ZWN1dGFibGUg
ZmluYWwgOiBwdWJsaWMgRXhlY3V0YWJsZUJhc2UgewogcHJpdmF0ZToKICAgICBmcmllbmQgY2xh
c3MgRXhlY3V0YWJsZUJhc2U7CiAKLSAgICBOYXRpdmVFeGVjdXRhYmxlKFZNJiwgTmF0aXZlRnVu
Y3Rpb24gZnVuY3Rpb24sIE5hdGl2ZUZ1bmN0aW9uIGNvbnN0cnVjdG9yLCBJbnRyaW5zaWMpOwor
ICAgIE5hdGl2ZUV4ZWN1dGFibGUoVk0mLCBOYXRpdmVGdW5jdGlvbiBmdW5jdGlvbiwgTmF0aXZl
RnVuY3Rpb24gY29uc3RydWN0b3IsIEludHJpbnNpYywgY29uc3QgRE9NSklUOjpTaWduYXR1cmUq
KTsKIAogICAgIE5hdGl2ZUZ1bmN0aW9uIG1fZnVuY3Rpb247CiAgICAgTmF0aXZlRnVuY3Rpb24g
bV9jb25zdHJ1Y3RvcjsKKyAgICBjb25zdCBET01KSVQ6OlNpZ25hdHVyZSogbV9zaWduYXR1cmU7
CiAKICAgICBTdHJpbmcgbV9uYW1lOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1Byb3BlcnR5U2xvdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvUHJvcGVydHlTbG90LmgKaW5kZXggOWRlMTUxYTU2YWEyNzU2Y2ZkMGM2MDAzNjY4MjY2YjE5
Zjk5MzJkZC4uMzg3ZTMxYjQwZTVhZWJmMmYzNWY2Y2EyNzJlMzgzYzA1ZDNmNDUyZCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlTbG90LmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlTbG90LmgKQEAgLTUxLDYgKzUx
LDcgQEAgZW51bSBBdHRyaWJ1dGUgewogICAgIENsYXNzU3RydWN0dXJlICAgID0gMSA8PCAxMiwg
Ly8gcHJvcGVydHkgaXMgYSBsYXp5IGNsYXNzIHN0cnVjdHVyZSAtIG9ubHkgdXNlZCBieSBzdGF0
aWMgaGFzaHRhYmxlcwogICAgIFByb3BlcnR5Q2FsbGJhY2sgID0gMSA8PCAxMywgLy8gcHJvcGVy
dHkgdGhhdCBpcyBhIGxhenkgcHJvcGVydHkgY2FsbGJhY2sgLSBvbmx5IHVzZWQgYnkgc3RhdGlj
IGhhc2h0YWJsZXMKICAgICBET01KSVRBdHRyaWJ1dGUgICA9IDEgPDwgMTQsIC8vIHByb3BlcnR5
IGlzIGEgRE9NIEpJVCBhdHRyaWJ1dGUgLSBvbmx5IHVzZWQgYnkgc3RhdGljIGhhc2h0YWJsZXMK
KyAgICBET01KSVRGdW5jdGlvbiAgICA9IDEgPDwgMTUsIC8vIHByb3BlcnR5IGlzIGEgRE9NIEpJ
VCBmdW5jdGlvbiAtIG9ubHkgdXNlZCBieSBzdGF0aWMgaGFzaHRhYmxlcwogICAgIEJ1aWx0aW5P
ckZ1bmN0aW9uID0gQnVpbHRpbiB8IEZ1bmN0aW9uLCAvLyBoZWxwZXIgb25seSB1c2VkIGJ5IHN0
YXRpYyBoYXNodGFibGVzCiAgICAgQnVpbHRpbk9yRnVuY3Rpb25PckxhenlQcm9wZXJ0eSA9IEJ1
aWx0aW4gfCBGdW5jdGlvbiB8IENlbGxQcm9wZXJ0eSB8IENsYXNzU3RydWN0dXJlIHwgUHJvcGVy
dHlDYWxsYmFjaywgLy8gaGVscGVyIG9ubHkgdXNlZCBieSBzdGF0aWMgaGFzaHRhYmxlcwogICAg
IEJ1aWx0aW5PckZ1bmN0aW9uT3JBY2Nlc3Nvck9yTGF6eVByb3BlcnR5ID0gQnVpbHRpbiB8IEZ1
bmN0aW9uIHwgQWNjZXNzb3IgfCBDZWxsUHJvcGVydHkgfCBDbGFzc1N0cnVjdHVyZSB8IFByb3Bl
cnR5Q2FsbGJhY2ssIC8vIGhlbHBlciBvbmx5IHVzZWQgYnkgc3RhdGljIGhhc2h0YWJsZXMKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAppbmRleCA4MTIzOWM1YjkyNGI0ZWNjOGU2ZDcw
YmM4MDc3ZTgzOGFmMWUxZDYxLi5mOTI3MzQ3MzRhY2VlYzQxYTQ1ODM2MDk1NGIwN2Q4ZmFjMTI1
YmJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCkBAIC01MTEsMTcgKzUxMSwx
NyBAQCBzdGF0aWMgVGh1bmtHZW5lcmF0b3IgdGh1bmtHZW5lcmF0b3JGb3JJbnRyaW5zaWMoSW50
cmluc2ljIGludHJpbnNpYykKIAogTmF0aXZlRXhlY3V0YWJsZSogVk06OmdldEhvc3RGdW5jdGlv
bihOYXRpdmVGdW5jdGlvbiBmdW5jdGlvbiwgTmF0aXZlRnVuY3Rpb24gY29uc3RydWN0b3IsIGNv
bnN0IFN0cmluZyYgbmFtZSkKIHsKLSAgICByZXR1cm4gZ2V0SG9zdEZ1bmN0aW9uKGZ1bmN0aW9u
LCBOb0ludHJpbnNpYywgY29uc3RydWN0b3IsIG5hbWUpOworICAgIHJldHVybiBnZXRIb3N0RnVu
Y3Rpb24oZnVuY3Rpb24sIE5vSW50cmluc2ljLCBjb25zdHJ1Y3RvciwgbnVsbHB0ciwgbmFtZSk7
CiB9CiAKLU5hdGl2ZUV4ZWN1dGFibGUqIFZNOjpnZXRIb3N0RnVuY3Rpb24oTmF0aXZlRnVuY3Rp
b24gZnVuY3Rpb24sIEludHJpbnNpYyBpbnRyaW5zaWMsIE5hdGl2ZUZ1bmN0aW9uIGNvbnN0cnVj
dG9yLCBjb25zdCBTdHJpbmcmIG5hbWUpCitOYXRpdmVFeGVjdXRhYmxlKiBWTTo6Z2V0SG9zdEZ1
bmN0aW9uKE5hdGl2ZUZ1bmN0aW9uIGZ1bmN0aW9uLCBJbnRyaW5zaWMgaW50cmluc2ljLCBOYXRp
dmVGdW5jdGlvbiBjb25zdHJ1Y3RvciwgY29uc3QgRE9NSklUOjpTaWduYXR1cmUqIHNpZ25hdHVy
ZSwgY29uc3QgU3RyaW5nJiBuYW1lKQogewogI2lmIEVOQUJMRShKSVQpCiAgICAgaWYgKGNhblVz
ZUpJVCgpKSB7CiAgICAgICAgIHJldHVybiBqaXRTdHVicy0+aG9zdEZ1bmN0aW9uU3R1YigKICAg
ICAgICAgICAgIHRoaXMsIGZ1bmN0aW9uLCBjb25zdHJ1Y3RvciwKICAgICAgICAgICAgIGludHJp
bnNpYyAhPSBOb0ludHJpbnNpYyA/IHRodW5rR2VuZXJhdG9yRm9ySW50cmluc2ljKGludHJpbnNp
YykgOiAwLAotICAgICAgICAgICAgaW50cmluc2ljLCBuYW1lKTsKKyAgICAgICAgICAgIGludHJp
bnNpYywgc2lnbmF0dXJlLCBuYW1lKTsKICAgICB9CiAjZWxzZSAvLyBFTkFCTEUoSklUKQogICAg
IFVOVVNFRF9QQVJBTShpbnRyaW5zaWMpOwpAQCAtNTI5LDcgKzUyOSw3IEBAIE5hdGl2ZUV4ZWN1
dGFibGUqIFZNOjpnZXRIb3N0RnVuY3Rpb24oTmF0aXZlRnVuY3Rpb24gZnVuY3Rpb24sIEludHJp
bnNpYyBpbnRyaW5zCiAgICAgcmV0dXJuIE5hdGl2ZUV4ZWN1dGFibGU6OmNyZWF0ZSgqdGhpcywK
ICAgICAgICAgYWRvcHRSZWYobmV3IE5hdGl2ZUpJVENvZGUoTWFjcm9Bc3NlbWJsZXJDb2RlUmVm
OjpjcmVhdGVMTEludENvZGVSZWYobGxpbnRfbmF0aXZlX2NhbGxfdHJhbXBvbGluZSksIEpJVENv
ZGU6Okhvc3RDYWxsVGh1bmspKSwgZnVuY3Rpb24sCiAgICAgICAgIGFkb3B0UmVmKG5ldyBOYXRp
dmVKSVRDb2RlKE1hY3JvQXNzZW1ibGVyQ29kZVJlZjo6Y3JlYXRlTExJbnRDb2RlUmVmKGxsaW50
X25hdGl2ZV9jb25zdHJ1Y3RfdHJhbXBvbGluZSksIEpJVENvZGU6Okhvc3RDYWxsVGh1bmspKSwg
Y29uc3RydWN0b3IsCi0gICAgICAgIE5vSW50cmluc2ljLCBuYW1lKTsKKyAgICAgICAgTm9JbnRy
aW5zaWMsIHNpZ25hdHVyZSwgbmFtZSk7CiB9CiAKIFZNOjpDbGllbnREYXRhOjp+Q2xpZW50RGF0
YSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAppbmRleCA0ZmQ3ZWM0MGYwM2VlZGViMjli
ZDQ5NjdkOWNkYzQzMDI0Y2ZhNDEwLi4xNWEwOGMyYTMzYmU5NzJiNGE5YTMyZGZjMzUwZDZlMzhj
Yzg0MmVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKQEAgLTQyOSw3ICs0MjksNyBA
QCBjbGFzcyBWTSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxWTT4gewogICAgIHN0ZDo6
dW5pcXVlX3B0cjxGVEw6OlRodW5rcz4gZnRsVGh1bmtzOwogI2VuZGlmCiAgICAgTmF0aXZlRXhl
Y3V0YWJsZSogZ2V0SG9zdEZ1bmN0aW9uKE5hdGl2ZUZ1bmN0aW9uLCBOYXRpdmVGdW5jdGlvbiBj
b25zdHJ1Y3RvciwgY29uc3QgU3RyaW5nJiBuYW1lKTsKLSAgICBOYXRpdmVFeGVjdXRhYmxlKiBn
ZXRIb3N0RnVuY3Rpb24oTmF0aXZlRnVuY3Rpb24sIEludHJpbnNpYyBpbnRyaW5zaWMsIE5hdGl2
ZUZ1bmN0aW9uIGNvbnN0cnVjdG9yLCBjb25zdCBTdHJpbmcmIG5hbWUpOworICAgIE5hdGl2ZUV4
ZWN1dGFibGUqIGdldEhvc3RGdW5jdGlvbihOYXRpdmVGdW5jdGlvbiwgSW50cmluc2ljLCBOYXRp
dmVGdW5jdGlvbiBjb25zdHJ1Y3RvciwgY29uc3QgRE9NSklUOjpTaWduYXR1cmUqLCBjb25zdCBT
dHJpbmcmIG5hbWUpOwogCiAgICAgc3RhdGljIHB0cmRpZmZfdCBleGNlcHRpb25PZmZzZXQoKQog
ICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNl
L1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggNWEwOTc0ZDZiZTQ4ZjA3NDVhZGE2MzlmZGFi
YTM0ZDRiM2RiNjVmNC4uNmY0YmJjZTExOWM1MjYzM2YzYjMxMTIyZGQwMDE0NmZhNjFhYjU2YSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dl
YkNvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTM1MTksNiArMzUxOSwxNSBAQCBNQUtFX0hBU0hfVE9P
TFMoJHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0vQ29sb3JEYXRhKQogbGlzdChBUFBFTkQgV2ViQ29y
ZV9ERVJJVkVEX1NPVVJDRVMgJHtERVJJVkVEX1NPVVJDRVNfV0VCQ09SRV9ESVJ9L0NvbG9yRGF0
YS5jcHApCiAKIAorIyBHZW5lcmF0ZSBET01KSVRBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmgKK2Fk
ZF9jdXN0b21fY29tbWFuZCgKKyAgICBPVVRQVVQgJHtERVJJVkVEX1NPVVJDRVNfV0VCQ09SRV9E
SVJ9L0RPTUpJVEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaAorICAgIE1BSU5fREVQRU5ERU5DWSBk
b21qaXQvRE9NSklUQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS55YW1sCisgICAgREVQRU5EUyAke1dF
QkNPUkVfRElSfS9kb21qaXQvZ2VuZXJhdGUtYWJzdHJhY3QtaGVhcC5yYgorICAgIENPTU1BTkQg
JHtSVUJZX0VYRUNVVEFCTEV9ICR7V0VCQ09SRV9ESVJ9L2RvbWppdC9nZW5lcmF0ZS1hYnN0cmFj
dC1oZWFwLnJiICR7V0VCQ09SRV9ESVJ9L2RvbWppdC9ET01KSVRBYnN0cmFjdEhlYXBSZXBvc2l0
b3J5LnlhbWwgJHtERVJJVkVEX1NPVVJDRVNfV0VCQ09SRV9ESVJ9L0RPTUpJVEFic3RyYWN0SGVh
cFJlcG9zaXRvcnkuaAorICAgIFZFUkJBVElNKQorbGlzdChBUFBFTkQgV2ViQ29yZV9ERVJJVkVE
X1NPVVJDRVMgJHtERVJJVkVEX1NPVVJDRVNfV0VCQ09SRV9ESVJ9L0RPTUpJVEFic3RyYWN0SGVh
cFJlcG9zaXRvcnkuaCkKKwogIyBHZW5lcmF0ZSBYTUxWaWV3ZXJDU1MuaAogYWRkX2N1c3RvbV9j
b21tYW5kKAogICAgIE9VVFBVVCAke0RFUklWRURfU09VUkNFU19XRUJDT1JFX0RJUn0vWE1MVmll
d2VyQ1NTLmggJHtERVJJVkVEX1NPVVJDRVNfV0VCQ09SRV9ESVJ9L1hNTFZpZXdlci5taW4uY3Nz
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlIGIvU291cmNl
L1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQppbmRleCAwY2JjMWRmODE1ODZmMTQ5OWVmNDFh
MmNiYjYyMTg2MTQ1NTUwYjI3Li5hZGE1YWNiNDlmY2EyYzQwZjMwZDgwNjEyYTE2ZTM5YTJkMTY2
OWFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCisrKyBi
L1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKQEAgLTc0Niw2ICs3NDYsNyBAQCBK
U19CSU5ESU5HX0lETFMgPSBcCiAKIFBZVEhPTiA9IHB5dGhvbgogUEVSTCA9IHBlcmwKK1JVQlkg
PSBydWJ5CiAKIGlmZXEgKCQoT1MpLFdpbmRvd3NfTlQpCiAgICAgREVMRVRFID0gY21kIC8vQyBk
ZWwKQEAgLTg1Miw2ICs4NTMsNyBAQCBhbGwgOiBcCiAgICAgQ1NTVmFsdWVLZXl3b3Jkcy5jcHAg
XAogICAgIENTU1ZhbHVlS2V5d29yZHMuaCBcCiAgICAgQ29sb3JEYXRhLmNwcCBcCisgICAgRE9N
SklUQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5oIFwKICAgICBFdmVudEludGVyZmFjZXMuaCBcCiAg
ICAgRXZlbnRUYXJnZXRJbnRlcmZhY2VzLmggXAogICAgIEV4Y2VwdGlvbkNvZGVEZXNjcmlwdGlv
bi5jcHAgXApAQCAtOTQxLDYgKzk0MywxNSBAQCBTZWxlY3RvclBzZXVkb0VsZW1lbnRUeXBlTWFw
LmNwcCA6ICQoV2ViQ29yZSkvY3NzL21ha2VTZWxlY3RvclBzZXVkb0VsZW1lbnRzTWFwLgogCiAj
IC0tLS0tLS0tCiAKKyMgRE9NSklUIEFic3RyYWN0IEhlYXAKKworYWxsIDogRE9NSklUQWJzdHJh
Y3RIZWFwUmVwb3NpdG9yeS5oCisKK0RPTUpJVEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaCA6ICQo
V2ViQ29yZSkvZG9taml0L2dlbmVyYXRlLWFic3RyYWN0LWhlYXAucmIgJChXZWJDb3JlKS9kb21q
aXQvRE9NSklUQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS55YW1sCisJJChSVUJZKSAiJChXZWJDb3Jl
KS9kb21qaXQvZ2VuZXJhdGUtYWJzdHJhY3QtaGVhcC5yYiIgJChXZWJDb3JlKS9kb21qaXQvRE9N
SklUQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS55YW1sIC4vRE9NSklUQWJzdHJhY3RIZWFwUmVwb3Np
dG9yeS5oCisKKyMgLS0tLS0tLS0KKwogIyBYTUxWaWV3ZXIgQ1NTCiAKIGFsbCA6IFhNTFZpZXdl
ckNTUy5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy9ieXRl
Y29kZS9TcGVjdWxhdGVkVHlwZS5oIGIvU291cmNlL1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMv
Ynl0ZWNvZGUvU3BlY3VsYXRlZFR5cGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wOTQ2NmY0ZjAwYjgwN2RmZWRh
MGZjODIwODU0NmI3MTg0NGYwOTllCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
Rm9yd2FyZGluZ0hlYWRlcnMvYnl0ZWNvZGUvU3BlY3VsYXRlZFR5cGUuaApAQCAtMCwwICsxLDI5
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisg
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRl
ZiBXZWJDb3JlX0ZXRF9TcGVjdWxhdGVkVHlwZV9oCisjZGVmaW5lIFdlYkNvcmVfRldEX1NwZWN1
bGF0ZWRUeXBlX2gKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TcGVjdWxhdGVkVHlwZS5oPgor
I2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy9kb21q
aXQvRE9NSklUU2lnbmF0dXJlLmggYi9Tb3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy9k
b21qaXQvRE9NSklUU2lnbmF0dXJlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzIwMDI3ZjZlMDhlMzgzMGUzNTFi
MWM5Y2QzMmYyMDMxMjlkMmI1ZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL0Zv
cndhcmRpbmdIZWFkZXJzL2RvbWppdC9ET01KSVRTaWduYXR1cmUuaApAQCAtMCwwICsxLDI5IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQor
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBX
ZWJDb3JlX0ZXRF9ET01KSVRTaWduYXR1cmVfaAorI2RlZmluZSBXZWJDb3JlX0ZXRF9ET01KSVRT
aWduYXR1cmVfaAorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0RPTUpJVFNpZ25hdHVyZS5oPgor
I2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKaW5kZXggNTFhZTE4MWEzNzE1MjAxMzExNmI5YjgwMWU4NTcxMjI0ZWNmYWVkOC4uNmRk
NTBkYmExNGZjNTEyNjA0NTc1ZDZlMjEyODk4ZWE5ZjI0ZDBiOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNjIxMywxMiArNjIx
MywxMyBAQAogCQlFMzE1MEVBNzFEQTcyMTkzMDAxOTQwMTIgLyogRE9NSklUSGVscGVycy5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTMxNTBFQTUxREE3
MjE4RDAwMTk0MDEyIC8qIERPTUpJVEhlbHBlcnMuaCAqLzsgfTsKIAkJRTMxODAzOUQxREM0MDA5
OTAwOTkzMkMyIC8qIEpTRHluYW1pY0Rvd25jYXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFM0E1ODcyRTFEQzNGNTI2MDBGNjA3QTYgLyogSlNEeW5h
bWljRG93bmNhc3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQlFMzU2NUI3QjFEQzJENkM5MDAyMTdEQkQgLyogSlNFdmVudEN1c3RvbS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM0RUU0OUYxREMyRDU3
NTAwRUFBOUQzIC8qIEpTRXZlbnRDdXN0b20uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwotCQlFMzVDQTE0RDFEQkMzQTNGMDBGODM1MTYgLyogRE9NSklU
QWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBFMzVDQTE0QjFEQkMzQTNDMDBGODM1MTYgLyogRE9NSklUQWJzdHJh
Y3RIZWFwUmVwb3NpdG9yeS5jcHAgKi87IH07Ci0JCUUzNUNBMTRFMURCQzNBNDIwMEY4MzUxNiAv
KiBET01KSVRBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzVDQTE0QzFEQkMzQTNDMDBGODM1MTYgLyogRE9NSklU
QWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5oICovOyB9OworCQlFMzU4MDJCNjFEQzg0MzVEMDBBOTc3
M0MgLyogRE9NSklUSURMVHlwZUZpbHRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRTM1ODAyQjUxREM4NDM1ODAwQTk3NzNDIC8qIERPTUpJVElETFR5
cGVGaWx0ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQlFMzc3RkU0RDFEQURFMTY1MDBDREQwMjUgLyogTm9kZUNvbnN0YW50cy5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTNEMDQ5OTMxREFEQzA0NTAw
NzE4RjNDIC8qIE5vZGVDb25zdGFudHMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQlFMzg4Mzg5ODFCQUQxNDVGMDBENjJFRTMgLyogU2NyaXB0TW9k
dWxlTG9hZGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEUzODgzODk0MUJBRDE0NUYwMEQ2MkVFMyAvKiBTY3JpcHRNb2R1bGVMb2FkZXIuY3BwICov
OyB9OwogCQlFMzg4Mzg5OTFCQUQxNDVGMDBENjJFRTMgLyogU2NyaXB0TW9kdWxlTG9hZGVyLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzg4Mzg5NTFC
QUQxNDVGMDBENjJFRTMgLyogU2NyaXB0TW9kdWxlTG9hZGVyLmggKi87IH07CiAJCUUzOThGQzI0
MURDMzJBMjAwMDNDNDY4NCAvKiBET01KSVRIZWxwZXJzLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzOThGQzIzMURDMzJBMUIwMDNDNDY4NCAvKiBE
T01KSVRIZWxwZXJzLmNwcCAqLzsgfTsKKwkJRTNBNzc2NjcxREM4NUQyODAwQjY5MEQ4IC8qIERP
TUpJVElETENvbnZlcnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEUzQTc3NjY1MURDODVEMjIwMEI2OTBEOCAvKiBET01KSVRJRExDb252ZXJ0LmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJRTNBNzc2Njgx
REM4NUQyODAwQjY5MEQ4IC8qIERPTUpJVElETFR5cGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzQTc3NjY2MURDODVEMjIwMEI2OTBEOCAvKiBET01K
SVRJRExUeXBlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJRTNCMkYwRUIxRDdGNEM5RDAwQjBDOUQxIC8qIExvYWRhYmxlQ2xhc3NpY1NjcmlwdC5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFM0IyRjBF
MzFEN0YzNUVDMDBCMEM5RDEgLyogTG9hZGFibGVDbGFzc2ljU2NyaXB0LmNwcCAqLzsgfTsKIAkJ
RTNCMkYwRUMxRDdGNENBMTAwQjBDOUQxIC8qIExvYWRhYmxlU2NyaXB0LmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzQjJGMEU5MUQ3RjNEM0MwMEIw
QzlEMSAvKiBMb2FkYWJsZVNjcmlwdC5jcHAgKi87IH07CiAJCUUzQjJGMEVEMUQ3RjRDQTMwMEIw
QzlEMSAvKiBMb2FkYWJsZVNjcmlwdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRTNCMkYwRTcxRDdGMzVFQzAwQjBDOUQxIC8qIExvYWRhYmxlU2NyaXB0
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTE0
MDYxLDEzICsxNDA2MiwxNSBAQAogCQlFMUZGOEY2QTE4MERCNUJFMDAxMzI2NzQgLyogQ3J5cHRv
QWxnb3JpdGhtUmVnaXN0cnkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gQ3J5cHRvQWxnb3JpdGhtUmVnaXN0cnkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlFMUZGOEY2QjE4MERCNUJFMDAxMzI2NzQgLyogQ3J5cHRvQWxnb3JpdGhtUmVnaXN0cnku
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ3J5cHRvQWxnb3JpdGhtUmVnaXN0
cnkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTMxNTBFQTUxREE3MjE4RDAwMTk0
MDEyIC8qIERPTUpJVEhlbHBlcnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
RE9NSklUSGVscGVycy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFMzM0ODI1RTFE
QzkzQUEwMDA5Qzk1NDQgLyogRE9NSklUQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBET01KSVRBYnN0cmFjdEhlYXBSZXBvc2l0b3J5Lmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzNEVFNDlGMURDMkQ1NzUwMEVBQTlEMyAv
KiBKU0V2ZW50Q3VzdG9tLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTRXZl
bnRDdXN0b20uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRTM1Q0ExNEIxREJDM0Ez
QzAwRjgzNTE2IC8qIERPTUpJVEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRE9NSklUQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUUzNUNBMTRDMURCQzNBM0MwMEY4MzUx
NiAvKiBET01KSVRBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IERPTUpJVEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJRTM1ODAyQjUxREM4NDM1ODAwQTk3NzNDIC8qIERPTUpJVElETFR5
cGVGaWx0ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRE9NSklUSURMVHlw
ZUZpbHRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzg4Mzg5NDFCQUQxNDVG
MDBENjJFRTMgLyogU2NyaXB0TW9kdWxlTG9hZGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFNjcmlwdE1vZHVsZUxvYWRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUUzODgzODk1MUJBRDE0NUYwMEQ2MkVFMyAvKiBTY3JpcHRNb2R1bGVMb2Fk
ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2NyaXB0TW9kdWxlTG9hZGVy
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzOThGQzIzMURDMzJBMUIwMDNDNDY4
NCAvKiBET01KSVRIZWxwZXJzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IERPTUpJVEhlbHBlcnMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFM0E1
ODcyRTFEQzNGNTI2MDBGNjA3QTYgLyogSlNEeW5hbWljRG93bmNhc3QuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gSlNEeW5hbWljRG93bmNhc3QuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJRTNBNzc2NjUxREM4NUQyMjAwQjY5MEQ4IC8qIERPTUpJVElETENvbnZl
cnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRE9NSklUSURMQ29udmVydC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFM0E3NzY2NjFEQzg1RDIyMDBCNjkwRDgg
LyogRE9NSklUSURMVHlwZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBET01K
SVRJRExUeXBlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzQUZBOTY0MURBNkU5
MDgwMDI4NjFCRCAvKiBKU05vZGVET01KSVQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gSlNOb2RlRE9NSklULmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJRTNCMkYwRTMxRDdGMzVFQzAwQjBDOUQxIC8qIExvYWRhYmxlQ2xhc3NpY1NjcmlwdC5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBMb2FkYWJsZUNsYXNzaWNTY3Jp
cHQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFM0IyRjBFNDFEN0YzNUVDMDBC
MEM5RDEgLyogTG9hZGFibGVDbGFzc2ljU2NyaXB0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IExvYWRhYmxlQ2xhc3NpY1NjcmlwdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwpAQCAtMTcyNTgsNiArMTcyNjEsNyBAQAogCQkJCTY1NjU4MTQ3MDlEMTMwNDMwMDBFNjFE
NyAvKiBDU1NWYWx1ZUtleXdvcmRzLmdwZXJmICovLAogCQkJCTY1NjU4MTQ4MDlEMTMwNDMwMDBF
NjFENyAvKiBDU1NWYWx1ZUtleXdvcmRzLmggKi8sCiAJCQkJOUIzQTg4NzExNDU2MzJGOTAwM0FF
OEY1IC8qIERPTURPTVNldHRhYmxlVG9rZW5MaXN0LmggKi8sCisJCQkJRTMzNDgyNUUxREM5M0FB
MDAwOUM5NTQ0IC8qIERPTUpJVEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaCAqLywKIAkJCQlFMUM2
Q0ZDMjE3NDZEMjkzMDA3Qjg3QTEgLyogRE9NV2luZG93Q29uc3RydWN0b3JzLmlkbCAqLywKIAkJ
CQk5NzBCNzJBNTE0NTAwOEVCMDBGMDBBMzcgLyogRXZlbnRIZWFkZXJzLmggKi8sCiAJCQkJOTcw
QjcyODkxNDRGRkFDNjAwRjAwQTM3IC8qIEV2ZW50SW50ZXJmYWNlcy5oICovLApAQCAtMjI4NzAs
MTEgKzIyODc0LDEyIEBACiAJCUUzQUZBOTYzMURBNkU4QUYwMDI4NjFCRCAvKiBkb21qaXQgKi8g
PSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAotCQkJCUUzNUNBMTRCMURC
QzNBM0MwMEY4MzUxNiAvKiBET01KSVRBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmNwcCAqLywKLQkJ
CQlFMzVDQTE0QzFEQkMzQTNDMDBGODM1MTYgLyogRE9NSklUQWJzdHJhY3RIZWFwUmVwb3NpdG9y
eS5oICovLAogCQkJCUUzQzk5QTA4MURDM0Q0MTcwMDc5NEFEMyAvKiBET01KSVRDaGVja0RPTS5o
ICovLAogCQkJCUUzOThGQzIzMURDMzJBMUIwMDNDNDY4NCAvKiBET01KSVRIZWxwZXJzLmNwcCAq
LywKIAkJCQlFMzE1MEVBNTFEQTcyMThEMDAxOTQwMTIgLyogRE9NSklUSGVscGVycy5oICovLAor
CQkJCUUzQTc3NjY1MURDODVEMjIwMEI2OTBEOCAvKiBET01KSVRJRExDb252ZXJ0LmggKi8sCisJ
CQkJRTNBNzc2NjYxREM4NUQyMjAwQjY5MEQ4IC8qIERPTUpJVElETFR5cGUuaCAqLywKKwkJCQlF
MzU4MDJCNTFEQzg0MzU4MDBBOTc3M0MgLyogRE9NSklUSURMVHlwZUZpbHRlci5oICovLAogCQkJ
CUUzQjdDMDYyMURDMzQxNUEwMDFGQjBCOCAvKiBKU0RvY3VtZW50RE9NSklULmNwcCAqLywKIAkJ
CQlFM0FGQTk2NDFEQTZFOTA4MDAyODYxQkQgLyogSlNOb2RlRE9NSklULmNwcCAqLywKIAkJCSk7
CkBAIC0yNTc0MSw2ICsyNTc0Niw3IEBACiAJCQkJNDYwQ0JGMzYxRDRCQ0QwRTAwOTJFODhFIC8q
IEpTRE9NV2luZG93UHJvcGVydGllcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNCRkI1M0QwRENE
MjlDRjAwMTlCM0U1IC8qIEpTRE9NV2luZG93U2hlbGwuaCBpbiBIZWFkZXJzICovLAogCQkJCTY1
RTBFOTQ0MTEzM0M4OUYwMEI0Q0IxMCAvKiBKU0RPTVdyYXBwZXIuaCBpbiBIZWFkZXJzICovLAor
CQkJCUUzQTc3NjY3MURDODVEMjgwMEI2OTBEOCAvKiBET01KSVRJRExDb252ZXJ0LmggaW4gSGVh
ZGVycyAqLywKIAkJCQlGRDc4NjhCQTEzNkI5OTkyMDBENDAzREYgLyogSlNEeW5hbWljc0NvbXBy
ZXNzb3JOb2RlLmggaW4gSGVhZGVycyAqLywKIAkJCQk2NURGMzFGQTA5RDFDQzYwMDAwQkUzMjUg
LyogSlNFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlBREVDNzhGODE4RUU1MzA4MDAxMzE1
QzIgLyogSlNFbGVtZW50Q3VzdG9tLmggaW4gSGVhZGVycyAqLywKQEAgLTI3MzA0LDYgKzI3MzEw
LDcgQEAKIAkJCQkwODUyNUU2MzEyNzhDMDAxMDBBODQ3NzggLyogU1ZHQW5pbWF0ZWRTdGF0aWNQ
cm9wZXJ0eVRlYXJPZmYuaCBpbiBIZWFkZXJzICovLAogCQkJCTA4NERCNTlCMTI4MDA4Q0MwMDJB
NkQ2NCAvKiBTVkdBbmltYXRlZFN0cmluZy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDgyNTA5Mzkx
MjhCRDREODAwRTJFRDhFIC8qIFNWR0FuaW1hdGVkVHJhbnNmb3JtTGlzdC5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJRTNBNzc2NjgxREM4NUQyODAwQjY5MEQ4IC8qIERPTUpJVElETFR5cGUuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTA4NUExNTkzMTI4OUE4REQwMDI3MTBFMyAvKiBTVkdBbmltYXRlZFRy
YW5zZm9ybUxpc3RQcm9wZXJ0eVRlYXJPZmYuaCBpbiBIZWFkZXJzICovLAogCQkJCTQzOUQzMzQz
MTNBNjkxMUMwMEMyMEY0RiAvKiBTVkdBbmltYXRlZFR5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTQzOUQzMzQ0MTNBNjkxMUMwMEMyMEY0RiAvKiBTVkdBbmltYXRlZFR5cGVBbmltYXRvci5oIGlu
IEhlYWRlcnMgKi8sCkBAIC0yNzg0Myw2ICsyNzg1MCw3IEBACiAJCQkJOTdBQUJEMjMxNEZBMDlE
NTAwNzQ1N0FFIC8qIFdlYlNvY2tldEV4dGVuc2lvbkRpc3BhdGNoZXIuaCBpbiBIZWFkZXJzICov
LAogCQkJCTRBNUEyQURDMTYxRTdFMDAwMDU4ODlERCAvKiBXZWJTb2NrZXRFeHRlbnNpb25QYXJz
ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTk3QUFCRDI0MTRGQTA5RDUwMDc0NTdBRSAvKiBXZWJT
b2NrZXRFeHRlbnNpb25Qcm9jZXNzb3IuaCBpbiBIZWFkZXJzICovLAorCQkJCUUzNTgwMkI2MURD
ODQzNUQwMEE5NzczQyAvKiBET01KSVRJRExUeXBlRmlsdGVyLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk5N0FBQkQyNTE0RkEwOUQ1MDA3NDU3QUUgLyogV2ViU29ja2V0RnJhbWUuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTk3QUFCRDI3MTRGQTA5RDUwMDc0NTdBRSAvKiBXZWJTb2NrZXRIYW5kc2hha2Uu
aCBpbiBIZWFkZXJzICovLAogCQkJCTMxREVBNDU2MUIzOUY0RDkwMEY3NzE3OCAvKiBXZWJTeXN0
ZW1CYWNrZHJvcExheWVyLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5oCmluZGV4IGMxODFmOWExNmY1NTMwYmQ5NTNkYmY1
ZjFjMTVmMTNhNjI0ZmExMmMuLjVkYzFlZTQwYzk4NTQwZThjNDcwNWI3MDk1NzU5ZmZjZmMyNWRh
MGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2Jq
ZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3Qu
aApAQCAtODEsNyArODEsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgcHVibGljOgogICAg
ICAgICB+SlNET01HbG9iYWxPYmplY3QoKTsKIAotICAgICAgICBzdGF0aWMgY29uc3QgSlNDOjpD
bGFzc0luZm8qIGluZm8oKSB7IHJldHVybiAmc19pbmZvOyB9CisgICAgICAgIHN0YXRpYyBjb25z
dGV4cHIgY29uc3QgSlNDOjpDbGFzc0luZm8qIGluZm8oKSB7IHJldHVybiAmc19pbmZvOyB9CiAK
ICAgICAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYg
dm0sIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KaW5kZXggMzU0OTBkMDJj
MmRhMGJlMjUwZDZmZWVhNTlmZmJlNzBiNTM1MGU1OS4uYjJlNmIxM2Y5Mjc1ZTU4NDQ4NzA4NmRl
MWMyNTQ0MzBhODNmNzFmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KQEAgLTE0MzUsNyArMTQzNSw3IEBAIHN1YiBHZW5lcmF0
ZUhlYWRlcgogICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAicHJvdGVjdGVkOlxuIik7CiAg
ICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgc3RhdGljIGNvbnN0IEpTQzo6Q2xhc3NJ
bmZvIHNfaW5mbztcbiIpOwogICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAicHVibGljOlxu
Iik7Ci0gICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgc3RhdGljIGNvbnN0IEpTQzo6
Q2xhc3NJbmZvKiBpbmZvKCkgeyByZXR1cm4gJnNfaW5mbzsgfVxuXG4iKTsKKyAgICAgICAgcHVz
aChAaGVhZGVyQ29udGVudCwgIiAgICBzdGF0aWMgY29uc3RleHByIGNvbnN0IEpTQzo6Q2xhc3NJ
bmZvKiBpbmZvKCkgeyByZXR1cm4gJnNfaW5mbzsgfVxuXG4iKTsKICAgICB9IGVsc2UgewogICAg
ICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiXG4iKTsKICAgICAgICAgcHVzaChAaGVhZGVyQ29u
dGVudCwgIiAgICBERUNMQVJFX0lORk87XG5cbiIpOwpAQCAtMTg4OSw3ICsxODg5LDExIEBAIHN1
YiBHZW5lcmF0ZVByb3BlcnRpZXNIYXNoVGFibGUKICAgICAgICAgIyBGSVhNRTogUmVtb3ZlIHRo
aXMgb25jZSB3ZSBjYW4gZ2V0IHJpZCBvZiB0aGUgcXVpcmsgaW50cm9kdWNlZCBpbiBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYzOTY3LgogICAgICAgICAkZnVuY3Rp
b25MZW5ndGggPSAzIGlmICRpbnRlcmZhY2VOYW1lIGVxICJFdmVudCIgYW5kICRmdW5jdGlvbi0+
bmFtZSBlcSAiaW5pdEV2ZW50IjsKIAotICAgICAgICBwdXNoKEAkaGFzaFZhbHVlMiwgJGZ1bmN0
aW9uTGVuZ3RoKTsKKyAgICAgICAgaWYgKCRmdW5jdGlvbi0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57
IkRPTUpJVCJ9KSB7CisgICAgICAgICAgICBwdXNoKEAkaGFzaFZhbHVlMiwgIiZET01KSVRTaWdu
YXR1cmVGb3IiIC4gJGludGVyZmFjZS0+dHlwZS0+bmFtZSAuICRjb2RlR2VuZXJhdG9yLT5XS191
Y2ZpcnN0KCRmdW5jdGlvbi0+bmFtZSkpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAg
cHVzaChAJGhhc2hWYWx1ZTIsICRmdW5jdGlvbkxlbmd0aCk7CisgICAgICAgIH0KIAogICAgICAg
ICBwdXNoKEAkaGFzaFNwZWNpYWxzLCBDb21wdXRlRnVuY3Rpb25TcGVjaWFsKCRpbnRlcmZhY2Us
ICRmdW5jdGlvbikpOwogCkBAIC0yNTA1LDM5ICsyNTA5LDI4IEBAIHN1YiBhZGRVbnNjb3BhYmxl
UHJvcGVydGllcwogICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHB1dERpcmVjdFdpdGhvdXRU
cmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT51bnNjb3BhYmxlc1N5bWJvbCwgJnVuc2Nv
cGFibGVzLCBEb250RW51bSB8IFJlYWRPbmx5KTtcbiIpOwogfQogCi1zdWIgR2V0UmVzdWx0VHlw
ZUZpbHRlcgorc3ViIEdldFVuc2FmZUFyZ3VtZW50VHlwZQogewotICAgIG15ICgkdHlwZSkgPSBA
XzsKKyAgICBteSAoJGludGVyZmFjZSwgJHR5cGUpID0gQF87CiAKLSAgICBteSAlVHlwZUZpbHRl
cnMgPSAoCi0gICAgICAgICJhbnkiID0+ICJTcGVjSGVhcFRvcCIsCi0gICAgICAgICJib29sZWFu
IiA9PiAiU3BlY0Jvb2xlYW4iLAotICAgICAgICAiYnl0ZSIgPT4gIlNwZWNJbnQzMk9ubHkiLAot
ICAgICAgICAib2N0ZXQiID0+ICJTcGVjSW50MzJPbmx5IiwKLSAgICAgICAgInNob3J0IiA9PiAi
U3BlY0ludDMyT25seSIsCi0gICAgICAgICJ1bnNpZ25lZCBzaG9ydCIgPT4gIlNwZWNJbnQzMk9u
bHkiLAotICAgICAgICAibG9uZyIgPT4gIlNwZWNJbnQzMk9ubHkiLAotICAgICAgICAidW5zaWdu
ZWQgbG9uZyIgPT4gIlNwZWNCeXRlY29kZU51bWJlciIsCi0gICAgICAgICJsb25nIGxvbmciID0+
ICJTcGVjQnl0ZWNvZGVOdW1iZXIiLAotICAgICAgICAidW5zaWduZWQgbG9uZyBsb25nIiA9PiAi
U3BlY0J5dGVjb2RlTnVtYmVyIiwKLSAgICAgICAgImZsb2F0IiA9PiAiU3BlY0J5dGVjb2RlTnVt
YmVyIiwKLSAgICAgICAgInVucmVzdHJpY3RlZCBmbG9hdCIgPT4gIlNwZWNCeXRlY29kZU51bWJl
ciIsCi0gICAgICAgICJkb3VibGUiID0+ICJTcGVjQnl0ZWNvZGVOdW1iZXIiLAotICAgICAgICAi
dW5yZXN0cmljdGVkIGRvdWJsZSIgPT4gIlNwZWNCeXRlY29kZU51bWJlciIsCi0gICAgICAgICJE
T01TdHJpbmciID0+ICJTcGVjU3RyaW5nIiwKLSAgICAgICAgIkJ5dGVTdHJpbmciID0+ICJTcGVj
U3RyaW5nIiwKLSAgICAgICAgIlVTVlN0cmluZyIgPT4gIlNwZWNTdHJpbmciLAotICAgICk7Cisg
ICAgbXkgJElETFR5cGUgPSBHZXRJRExUeXBlKCRpbnRlcmZhY2UsICR0eXBlKTsKKyAgICByZXR1
cm4gIkRPTUpJVDo6SURMSlNBcmd1bWVudFR5cGU8JHtJRExUeXBlfT4iOworfQogCi0gICAgaWYg
KGV4aXN0cyAkVHlwZUZpbHRlcnN7JHR5cGUtPm5hbWV9KSB7Ci0gICAgICAgIG15ICRyZXN1bHRU
eXBlID0gIkpTQzo6JFR5cGVGaWx0ZXJzeyR0eXBlLT5uYW1lfSI7Ci0gICAgICAgIGlmICgkdHlw
ZS0+aXNOdWxsYWJsZSkgewotICAgICAgICAgICAgZGllICJcImFueVwiIHR5cGUgbXVzdCBub3Qg
YmVjb21lIG51bGxhYmxlLiIgaWYgJHR5cGUtPm5hbWUgZXEgImFueSI7Ci0gICAgICAgICAgICAk
cmVzdWx0VHlwZSA9ICIoJHJlc3VsdFR5cGUgfCBKU0M6OlNwZWNPdGhlcikiOwotICAgICAgICB9
Ci0gICAgICAgIHJldHVybiAkcmVzdWx0VHlwZTsKLSAgICB9Ci0gICAgcmV0dXJuICJTcGVjSGVh
cFRvcCI7CitzdWIgR2V0QXJndW1lbnRUeXBlRmlsdGVyCit7CisgICAgbXkgKCRpbnRlcmZhY2Us
ICR0eXBlKSA9IEBfOworCisgICAgbXkgJElETFR5cGUgPSBHZXRJRExUeXBlKCRpbnRlcmZhY2Us
ICR0eXBlKTsKKyAgICByZXR1cm4gIkRPTUpJVDo6SURMQXJndW1lbnRUeXBlRmlsdGVyPCR7SURM
VHlwZX0+IjsKK30KKworc3ViIEdldFJlc3VsdFR5cGVGaWx0ZXIKK3sKKyAgICBteSAoJGludGVy
ZmFjZSwgJHR5cGUpID0gQF87CisKKyAgICBteSAkSURMVHlwZSA9IEdldElETFR5cGUoJGludGVy
ZmFjZSwgJHR5cGUpOworICAgIHJldHVybiAiRE9NSklUOjpJRExSZXN1bHRUeXBlRmlsdGVyPCR7
SURMVHlwZX0+IjsKIH0KIAogc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KQEAgLTI2MDgsNiAr
MjYwMSwxNyBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICAgICAgICAgcHVzaChA
aW1wbENvbnRlbnQsICIjaWYgJHtjb25kaXRpb25hbFN0cmluZ31cbiIpIGlmICRjb25kaXRpb25h
bFN0cmluZzsKICAgICAgICAgICAgIG15ICRmdW5jdGlvbk5hbWUgPSBHZXRGdW5jdGlvbk5hbWUo
JGludGVyZmFjZSwgJGNsYXNzTmFtZSwgJGZ1bmN0aW9uKTsKICAgICAgICAgICAgIHB1c2goQGlt
cGxDb250ZW50LCAiSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMICR7ZnVuY3Rpb25O
YW1lfShKU0M6OkV4ZWNTdGF0ZSopO1xuIik7CisgICAgICAgICAgICBpZiAoJGNvZGVHZW5lcmF0
b3ItPkV4dGVuZGVkQXR0cmlidXRlQ29udGFpbnMoJGZ1bmN0aW9uLT5leHRlbmRlZEF0dHJpYnV0
ZXMtPntET01KSVR9LCAiU2lnbmF0dXJlIikpIHsKKyAgICAgICAgICAgICAgICAkaW1wbEluY2x1
ZGVzeyJET01KSVRJRExUeXBlLmgifSA9IDE7CisgICAgICAgICAgICAgICAgbXkgJHVuc2FmZUZ1
bmN0aW9uTmFtZSA9ICJ1bnNhZmUiIC4gJGNvZGVHZW5lcmF0b3ItPldLX3VjZmlyc3QoJGZ1bmN0
aW9uTmFtZSk7CisgICAgICAgICAgICAgICAgbXkgJGZ1bmN0aW9uU2lnbmF0dXJlID0gIkpTQzo6
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCAke3Vuc2FmZUZ1bmN0aW9uTmFtZX0oSlNDOjpF
eGVjU3RhdGUqLCAkY2xhc3NOYW1lKiI7CisgICAgICAgICAgICAgICAgZm9yZWFjaCBteSAkYXJn
dW1lbnQgKEB7JGZ1bmN0aW9uLT5hcmd1bWVudHN9KSB7CisgICAgICAgICAgICAgICAgICAgIG15
ICR0eXBlID0gJGFyZ3VtZW50LT50eXBlOworICAgICAgICAgICAgICAgICAgICBteSAkYXJndW1l
bnRUeXBlID0gR2V0VW5zYWZlQXJndW1lbnRUeXBlKCRpbnRlcmZhY2UsICR0eXBlKTsKKyAgICAg
ICAgICAgICAgICAgICAgJGZ1bmN0aW9uU2lnbmF0dXJlIC49ICIsICR7YXJndW1lbnRUeXBlfSI7
CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAk
ZnVuY3Rpb25TaWduYXR1cmUgLiAiKTtcbiIpOworICAgICAgICAgICAgfQogICAgICAgICAgICAg
cHVzaChAaW1wbENvbnRlbnQsICIjZW5kaWZcbiIpIGlmICRjb25kaXRpb25hbFN0cmluZzsKICAg
ICAgICAgfQogCkBAIC0yNjQ0LDYgKzI2NDgsMzcgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRp
b24KICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJcbiIpOwogICAgIH0KIAorICAgIGlmICgk
bnVtRnVuY3Rpb25zID4gMCkgeworICAgICAgICAjIEdlbmVyYXRlIERPTUpJVDo6U2lnbmF0dXJl
IHZhcmlhYmxlcy4KKyAgICAgICAgZm9yZWFjaCBteSAkZnVuY3Rpb24gKEBmdW5jdGlvbnMpIHsK
KyAgICAgICAgICAgIG5leHQgdW5sZXNzICRjb2RlR2VuZXJhdG9yLT5FeHRlbmRlZEF0dHJpYnV0
ZUNvbnRhaW5zKCRmdW5jdGlvbi0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57RE9NSklUfSwgIlNpZ25h
dHVyZSIpOworICAgICAgICAgICAgJGltcGxJbmNsdWRlc3siRE9NSklUSURMVHlwZUZpbHRlci5o
In0gPSAxOworICAgICAgICAgICAgJGltcGxJbmNsdWRlc3siRE9NSklUQ2hlY2tET00uaCJ9ID0g
MTsKKyAgICAgICAgICAgICRpbXBsSW5jbHVkZXN7IkRPTUpJVEFic3RyYWN0SGVhcFJlcG9zaXRv
cnkuaCJ9ID0gMTsKKworICAgICAgICAgICAgbXkgJGlzT3ZlcmxvYWRlZCA9ICRmdW5jdGlvbi0+
e292ZXJsb2Fkc30gJiYgQHskZnVuY3Rpb24tPntvdmVybG9hZHN9fSA+IDE7CisgICAgICAgICAg
ICBkaWUgIm92ZXJsb2FkcyBpcyBub3Qgc3VwcG9ydGVkIGluIERPTUpJVCIgaWYgJGlzT3Zlcmxv
YWRlZDsKKworICAgICAgICAgICAgbXkgJGludGVyZmFjZU5hbWUgPSAkaW50ZXJmYWNlLT50eXBl
LT5uYW1lOworICAgICAgICAgICAgbXkgJGZ1bmN0aW9uTmFtZSA9IEdldEZ1bmN0aW9uTmFtZSgk
aW50ZXJmYWNlLCAkY2xhc3NOYW1lLCAkZnVuY3Rpb24pOworICAgICAgICAgICAgbXkgJHVuc2Fm
ZUZ1bmN0aW9uTmFtZSA9ICJ1bnNhZmUiIC4gJGNvZGVHZW5lcmF0b3ItPldLX3VjZmlyc3QoJGZ1
bmN0aW9uTmFtZSk7CisgICAgICAgICAgICBteSAkZG9tSklUU2lnbmF0dXJlTmFtZSA9ICJET01K
SVRTaWduYXR1cmVGb3IiIC4gJGludGVyZmFjZS0+dHlwZS0+bmFtZSAuICRjb2RlR2VuZXJhdG9y
LT5XS191Y2ZpcnN0KCRmdW5jdGlvbi0+bmFtZSk7CisgICAgICAgICAgICBteSAkY2xhc3NJbmZv
ID0gIkpTIiAuICRpbnRlcmZhY2UtPnR5cGUtPm5hbWUgLiAiOjppbmZvKCkiOworICAgICAgICAg
ICAgbXkgJHJlc3VsdFR5cGUgPSBHZXRSZXN1bHRUeXBlRmlsdGVyKCRpbnRlcmZhY2UsICRmdW5j
dGlvbi0+dHlwZSk7CisgICAgICAgICAgICBteSAkZG9tSklUU2lnbmF0dXJlID0gInN0YXRpYyBj
b25zdCBKU0M6OkRPTUpJVDo6U2lnbmF0dXJlICR7ZG9tSklUU2lnbmF0dXJlTmFtZX0oKHVpbnRw
dHJfdCkke3Vuc2FmZUZ1bmN0aW9uTmFtZX0sIERPTUpJVDo6Y2hlY2tET008JGludGVyZmFjZU5h
bWU+LCAkY2xhc3NJbmZvLCBKU0M6OkRPTUpJVDo6RWZmZWN0Ojpmb3JSZWFkKERPTUpJVDo6QWJz
dHJhY3RIZWFwUmVwb3NpdG9yeTo6RE9NKSwgJHtyZXN1bHRUeXBlfSI7CisgICAgICAgICAgICBm
b3JlYWNoIG15ICRhcmd1bWVudCAoQHskZnVuY3Rpb24tPmFyZ3VtZW50c30pIHsKKyAgICAgICAg
ICAgICAgICBteSAkdHlwZSA9ICRhcmd1bWVudC0+dHlwZTsKKyAgICAgICAgICAgICAgICBteSAk
YXJndW1lbnRUeXBlID0gR2V0QXJndW1lbnRUeXBlRmlsdGVyKCRpbnRlcmZhY2UsICR0eXBlKTsK
KyAgICAgICAgICAgICAgICAkZG9tSklUU2lnbmF0dXJlIC49ICIsICR7YXJndW1lbnRUeXBlfSI7
CisgICAgICAgICAgICB9CisgICAgICAgICAgICBteSAkY29uZGl0aW9uYWxTdHJpbmcgPSAkY29k
ZUdlbmVyYXRvci0+R2VuZXJhdGVDb25kaXRpb25hbFN0cmluZygkZnVuY3Rpb24pOworICAgICAg
ICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIjaWYgJHtjb25kaXRpb25hbFN0cmluZ31cbiIpIGlm
ICRjb25kaXRpb25hbFN0cmluZzsKKyAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAkZG9t
SklUU2lnbmF0dXJlIC4gIik7XG4iKTsKKyAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAi
I2VuZGlmXG4iKSBpZiAkY29uZGl0aW9uYWxTdHJpbmc7CisgICAgICAgICAgICBwdXNoKEBpbXBs
Q29udGVudCwgIlxuIik7CisgICAgICAgIH0KKyAgICB9CisKICAgICBHZW5lcmF0ZVByb3RvdHlw
ZURlY2xhcmF0aW9uKFxAaW1wbENvbnRlbnQsICRjbGFzc05hbWUsICRpbnRlcmZhY2UpIGlmICFI
ZWFkZXJOZWVkc1Byb3RvdHlwZURlY2xhcmF0aW9uKCRpbnRlcmZhY2UpOwogCiAgICAgR2VuZXJh
dGVDb25zdHJ1Y3RvckRlY2xhcmF0aW9uKFxAaW1wbENvbnRlbnQsICRjbGFzc05hbWUsICRpbnRl
cmZhY2UpIGlmIE5lZWRzQ29uc3RydWN0b3JQcm9wZXJ0eSgkaW50ZXJmYWNlKTsKQEAgLTI3NDAs
NyArMjc3NSwxMSBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICAgICAgICAgcHVz
aChAaGFzaFZhbHVlMSwgJGZ1bmN0aW9uTmFtZSk7CiAKICAgICAgICAgICAgIG15ICRmdW5jdGlv
bkxlbmd0aCA9IEdldEZ1bmN0aW9uTGVuZ3RoKCRmdW5jdGlvbik7Ci0gICAgICAgICAgICBwdXNo
KEBoYXNoVmFsdWUyLCAkZnVuY3Rpb25MZW5ndGgpOworICAgICAgICAgICAgaWYgKCRjb2RlR2Vu
ZXJhdG9yLT5FeHRlbmRlZEF0dHJpYnV0ZUNvbnRhaW5zKCRmdW5jdGlvbi0+ZXh0ZW5kZWRBdHRy
aWJ1dGVzLT57RE9NSklUfSwgIlNpZ25hdHVyZSIpKSB7CisgICAgICAgICAgICAgICAgcHVzaChA
aGFzaFZhbHVlMiwgIkRPTUpJVEZ1bmN0aW9uRm9yIiAuICRpbnRlcmZhY2UtPnR5cGUtPm5hbWUg
LiAkY29kZUdlbmVyYXRvci0+V0tfdWNmaXJzdCgkZnVuY3Rpb24tPm5hbWUpKTsKKyAgICAgICAg
ICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgcHVzaChAaGFzaFZhbHVlMiwgJGZ1bmN0aW9u
TGVuZ3RoKTsKKyAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgcHVzaChAaGFzaFNwZWNpYWxz
LCBDb21wdXRlRnVuY3Rpb25TcGVjaWFsKCRpbnRlcmZhY2UsICRmdW5jdGlvbikpOwogCkBAIC0z
MzA3LDEzICszMzQ2LDE0IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAKICAgICAgICAg
ICAgIGlmICgkYXR0cmlidXRlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiRE9NSklUIn0pIHsKICAg
ICAgICAgICAgICAgICAkaW1wbEluY2x1ZGVzeyI8d3RmL05ldmVyRGVzdHJveWVkLmg+In0gPSAx
OworICAgICAgICAgICAgICAgICRpbXBsSW5jbHVkZXN7IkRPTUpJVElETFR5cGVGaWx0ZXIuaCJ9
ID0gMTsKICAgICAgICAgICAgICAgICBteSAkaW50ZXJmYWNlTmFtZSA9ICRpbnRlcmZhY2UtPnR5
cGUtPm5hbWU7CiAgICAgICAgICAgICAgICAgbXkgJGF0dHJpYnV0ZU5hbWUgPSAkYXR0cmlidXRl
LT5uYW1lOwogICAgICAgICAgICAgICAgIG15ICRnZW5lcmF0b3JOYW1lID0gJGludGVyZmFjZU5h
bWUgLiAkY29kZUdlbmVyYXRvci0+V0tfdWNmaXJzdCgkYXR0cmlidXRlLT5uYW1lKTsKICAgICAg
ICAgICAgICAgICBteSAkZG9tSklUQ2xhc3NOYW1lID0gJGdlbmVyYXRvck5hbWUgLiAiRE9NSklU
IjsKICAgICAgICAgICAgICAgICBteSAkZ2V0dGVyID0gR2V0QXR0cmlidXRlR2V0dGVyTmFtZSgk
aW50ZXJmYWNlLCAkZ2VuZXJhdG9yTmFtZSwgJGF0dHJpYnV0ZSk7CiAgICAgICAgICAgICAgICAg
bXkgJHNldHRlciA9IElzUmVhZG9ubHkoJGF0dHJpYnV0ZSkgPyAibnVsbHB0ciIgOiBHZXRBdHRy
aWJ1dGVTZXR0ZXJOYW1lKCRpbnRlcmZhY2UsICRnZW5lcmF0b3JOYW1lLCAkYXR0cmlidXRlKTsK
LSAgICAgICAgICAgICAgICBteSAkcmVzdWx0VHlwZSA9IEdldFJlc3VsdFR5cGVGaWx0ZXIoJGF0
dHJpYnV0ZS0+dHlwZSk7CisgICAgICAgICAgICAgICAgbXkgJHJlc3VsdFR5cGUgPSBHZXRSZXN1
bHRUeXBlRmlsdGVyKCRpbnRlcmZhY2UsICRhdHRyaWJ1dGUtPnR5cGUpOwogICAgICAgICAgICAg
ICAgIHB1c2goQGltcGxDb250ZW50LCAiJGRvbUpJVENsYXNzTmFtZTo6JGRvbUpJVENsYXNzTmFt
ZSgpXG4iKTsKICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICA6IEpTQzo6
RE9NSklUOjpHZXR0ZXJTZXR0ZXIoJGdldHRlciwgJHNldHRlciwgJHtjbGFzc05hbWV9OjppbmZv
KCksICRyZXN1bHRUeXBlKVxuIik7CiAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQs
ICJ7XG4iKTsKQEAgLTM2ODgsNiArMzcyOCw3IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9u
CiAKICAgICAgICAgICAgIG15ICRpc0N1c3RvbSA9IEhhc0N1c3RvbU1ldGhvZCgkZnVuY3Rpb24t
PmV4dGVuZGVkQXR0cmlidXRlcyk7CiAgICAgICAgICAgICBteSAkaXNPdmVybG9hZGVkID0gJGZ1
bmN0aW9uLT57b3ZlcmxvYWRzfSAmJiBAeyRmdW5jdGlvbi0+e292ZXJsb2Fkc319ID4gMTsKKyAg
ICAgICAgICAgIG15ICRpc0RPTUpJVCA9ICRjb2RlR2VuZXJhdG9yLT5FeHRlbmRlZEF0dHJpYnV0
ZUNvbnRhaW5zKCRmdW5jdGlvbi0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57RE9NSklUfSwgIlNpZ25h
dHVyZSIpOwogCiAgICAgICAgICAgICBteSAkbWF5VGhyb3dMZWdhY3lFeGNlcHRpb24gPSAkZnVu
Y3Rpb24tPmV4dGVuZGVkQXR0cmlidXRlcy0+e01heVRocm93TGVnYWN5RXhjZXB0aW9ufTsKIApA
QCAtMzgyNiw2ICszODY3LDc4IEBAIEVORAogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBw
dXNoKEBpbXBsQ29udGVudCwgIn1cblxuIik7CisKKyAgICAgICAgICAgIGlmICgkaXNET01KSVQp
IHsKKyAgICAgICAgICAgICAgICAkaW1wbEluY2x1ZGVzeyI8aW50ZXJwcmV0ZXIvRnJhbWVUcmFj
ZXJzLmg+In0gPSAxOworICAgICAgICAgICAgICAgIG15ICR1bnNhZmVGdW5jdGlvbk5hbWUgPSAi
dW5zYWZlIiAuICRjb2RlR2VuZXJhdG9yLT5XS191Y2ZpcnN0KCRmdW5jdGlvbk5hbWUpOworICAg
ICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMICR7dW5zYWZlRnVuY3Rpb25OYW1lfShKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsICRj
bGFzc05hbWUqIGNhc3RlZFRoaXMiKTsKKyAgICAgICAgICAgICAgICBmb3JlYWNoIG15ICRhcmd1
bWVudCAoQHskZnVuY3Rpb24tPmFyZ3VtZW50c30pIHsKKyAgICAgICAgICAgICAgICAgICAgbXkg
JHR5cGUgPSAkYXJndW1lbnQtPnR5cGU7CisgICAgICAgICAgICAgICAgICAgIG15ICRhcmd1bWVu
dFR5cGUgPSBHZXRVbnNhZmVBcmd1bWVudFR5cGUoJGludGVyZmFjZSwgJHR5cGUpOworICAgICAg
ICAgICAgICAgICAgICBteSAkbmFtZSA9ICRhcmd1bWVudC0+bmFtZTsKKyAgICAgICAgICAgICAg
ICAgICAgbXkgJGVuY29kZWROYW1lID0gImVuY29kZWQiIC4gJGNvZGVHZW5lcmF0b3ItPldLX3Vj
Zmlyc3QoJG5hbWUpOworICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiwg
JHthcmd1bWVudFR5cGV9ICR7ZW5jb2RlZE5hbWV9Iik7CisgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiKVxuIik7CisgICAgICAgICAgICAgICAg
cHVzaChAaW1wbENvbnRlbnQsICJ7XG4iKTsKKyAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29u
dGVudCwgIiAgICBVTlVTRURfUEFSQU0oc3RhdGUpO1xuIik7CisgICAgICAgICAgICAgICAgcHVz
aChAaW1wbENvbnRlbnQsICIgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7XG4iKTsKKyAgICAgICAg
ICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBKU0M6Ok5hdGl2ZUNhbGxGcmFtZVRyYWNl
ciB0cmFjZXIoJnZtLCBzdGF0ZSk7XG4iKTsKKyAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29u
dGVudCwgIiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTtcbiIp
OworICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGF1dG8mIGltcGwgPSBj
YXN0ZWRUaGlzLT53cmFwcGVkKCk7XG4iKTsKKyAgICAgICAgICAgICAgICBteSBAYXJndW1lbnRz
OworICAgICAgICAgICAgICAgIG15ICRpbXBsRnVuY3Rpb25OYW1lOworICAgICAgICAgICAgICAg
IG15ICRpbXBsZW1lbnRlZEJ5ID0gJGZ1bmN0aW9uLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntJbXBs
ZW1lbnRlZEJ5fTsKKworICAgICAgICAgICAgICAgIGlmICgkaW1wbGVtZW50ZWRCeSkgeworICAg
ICAgICAgICAgICAgICAgICBBZGRUb0ltcGxJbmNsdWRlcygiJHtpbXBsZW1lbnRlZEJ5fS5oIiwg
JGZ1bmN0aW9uLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntDb25kaXRpb25hbH0pOworICAgICAgICAg
ICAgICAgICAgICB1bnNoaWZ0KEBhcmd1bWVudHMsICJpbXBsIikgaWYgISRmdW5jdGlvbi0+aXNT
dGF0aWM7CisgICAgICAgICAgICAgICAgICAgICRpbXBsRnVuY3Rpb25OYW1lID0gIldlYkNvcmU6
OiR7aW1wbGVtZW50ZWRCeX06OiR7ZnVuY3Rpb25JbXBsZW1lbnRhdGlvbk5hbWV9IjsKKyAgICAg
ICAgICAgICAgICB9IGVsc2lmICgkZnVuY3Rpb24tPmlzU3RhdGljKSB7CisgICAgICAgICAgICAg
ICAgICAgICRpbXBsRnVuY3Rpb25OYW1lID0gIiR7aW50ZXJmYWNlTmFtZX06OiR7ZnVuY3Rpb25J
bXBsZW1lbnRhdGlvbk5hbWV9IjsKKyAgICAgICAgICAgICAgICB9IGVsc2lmICgkc3ZnUHJvcGVy
dHlPckxpc3RQcm9wZXJ0eVR5cGUgYW5kICEkc3ZnTGlzdFByb3BlcnR5VHlwZSkgeworICAgICAg
ICAgICAgICAgICAgICAkaW1wbEZ1bmN0aW9uTmFtZSA9ICJwb2RJbXBsLiR7ZnVuY3Rpb25JbXBs
ZW1lbnRhdGlvbk5hbWV9IjsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAg
ICAgICAgICAkaW1wbEZ1bmN0aW9uTmFtZSA9ICJpbXBsLiR7ZnVuY3Rpb25JbXBsZW1lbnRhdGlv
bk5hbWV9IjsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBteSAkYXJndW1l
bnRJbmRleCA9IDA7CisgICAgICAgICAgICAgICAgZm9yZWFjaCBteSAkYXJndW1lbnQgKEB7JGZ1
bmN0aW9uLT5hcmd1bWVudHN9KSB7CisgICAgICAgICAgICAgICAgICAgIG15ICR2YWx1ZSA9ICIi
OworICAgICAgICAgICAgICAgICAgICBteSAkdHlwZSA9ICRhcmd1bWVudC0+dHlwZTsKKyAgICAg
ICAgICAgICAgICAgICAgbXkgJG5hbWUgPSAkYXJndW1lbnQtPm5hbWU7CisgICAgICAgICAgICAg
ICAgICAgIG15ICRlbmNvZGVkTmFtZSA9ICJlbmNvZGVkIiAuICRjb2RlR2VuZXJhdG9yLT5XS191
Y2ZpcnN0KCRuYW1lKTsKKyAgICAgICAgICAgICAgICAgICAgbXkgJG5hdGl2ZVR5cGUgPSBHZXRO
YXRpdmVUeXBlKCRpbnRlcmZhY2UsICRhcmd1bWVudC0+dHlwZSk7CisgICAgICAgICAgICAgICAg
ICAgIG15ICRzaG91bGRQYXNzQnlSZWZlcmVuY2UgPSBTaG91bGRQYXNzV3JhcHBlckJ5UmVmZXJl
bmNlKCRhcmd1bWVudCwgJGludGVyZmFjZSk7CisKKyAgICAgICAgICAgICAgICAgICAgaWYgKCEk
c2hvdWxkUGFzc0J5UmVmZXJlbmNlICYmICgkY29kZUdlbmVyYXRvci0+SXNXcmFwcGVyVHlwZSgk
dHlwZSkgfHwgJGNvZGVHZW5lcmF0b3ItPklzVHlwZWRBcnJheVR5cGUoJHR5cGUpKSkgeworICAg
ICAgICAgICAgICAgICAgICAgICAgJGltcGxJbmNsdWRlc3siPHJ1bnRpbWUvRXJyb3IuaD4ifSA9
IDE7CisgICAgICAgICAgICAgICAgICAgICAgICBteSAoJG5hdGl2ZVZhbHVlLCAkbWF5VGhyb3dF
eGNlcHRpb24pID0gVW5zYWZlVG9OYXRpdmUoJGludGVyZmFjZSwgJGFyZ3VtZW50LCAkZW5jb2Rl
ZE5hbWUsICRmdW5jdGlvbi0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Q29uZGl0aW9uYWx9KTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICRuYXRpdmVUeXBl
ICRuYW1lID0gbnVsbHB0cjtcbiIpOworICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1w
bENvbnRlbnQsICIgICAgJG5hbWUgPSAkbmF0aXZlVmFsdWU7XG4iKTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhy
b3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7XG4iKSBpZiAkbWF5VGhyb3dFeGNlcHRpb247Cisg
ICAgICAgICAgICAgICAgICAgICAgICAkdmFsdWUgPSAiV1RGTW92ZSgkbmFtZSkiOworICAgICAg
ICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgbXkgKCRuYXRp
dmVWYWx1ZSwgJG1heVRocm93RXhjZXB0aW9uKSA9IFVuc2FmZVRvTmF0aXZlKCRpbnRlcmZhY2Us
ICRhcmd1bWVudCwgJGVuY29kZWROYW1lLCAkZnVuY3Rpb24tPmV4dGVuZGVkQXR0cmlidXRlcy0+
e0NvbmRpdGlvbmFsfSk7CisgICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVu
dCwgIiAgICBhdXRvICRuYW1lID0gJHtuYXRpdmVWYWx1ZX07XG4iKTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICR2YWx1ZSA9ICJXVEZNb3ZlKCRuYW1lKSI7CisgICAgICAgICAgICAgICAgICAg
ICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2Nv
cGUsIGVuY29kZWRKU1ZhbHVlKCkpO1xuIikgaWYgJG1heVRocm93RXhjZXB0aW9uOworICAgICAg
ICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgaWYgKCRzaG91bGRQYXNzQnlS
ZWZlcmVuY2UpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICR2YWx1ZSA9ICIqJG5hbWUiOwor
ICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIHB1c2goQGFyZ3VtZW50
cywgJHZhbHVlKTsKKyAgICAgICAgICAgICAgICAgICAgJGFyZ3VtZW50SW5kZXgrKzsKKyAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgbXkgJGZ1bmN0aW9uU3RyaW5nID0gIiRpbXBs
RnVuY3Rpb25OYW1lKCIgLiBqb2luKCIsICIsIEBhcmd1bWVudHMpIC4gIikiOworICAgICAgICAg
ICAgICAgICRmdW5jdGlvblN0cmluZyA9ICJwcm9wYWdhdGVFeGNlcHRpb24oKnN0YXRlLCB0aHJv
d1Njb3BlLCAkZnVuY3Rpb25TdHJpbmcpIiBpZiBOZWVkc0V4cGxpY2l0UHJvcGFnYXRlRXhjZXB0
aW9uQ2FsbCgkZnVuY3Rpb24pOworICAgICAgICAgICAgICAgIG15ICR0aGlzT2JqZWN0ID0gImNh
c3RlZFRoaXMiOworICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIEpTVmFs
dWUgcmVzdWx0ID0gIiAuIE5hdGl2ZVRvSlNWYWx1ZVVzaW5nUG9pbnRlcnMoJGZ1bmN0aW9uLCAx
LCAkaW50ZXJmYWNlLCAkZnVuY3Rpb25TdHJpbmcsICR0aGlzT2JqZWN0KSAuICI7XG4iKTsKKyAg
ICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKHJlc3VsdCk7XG4iKTsKKyAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIn1c
blxuIik7CisgICAgICAgICAgICB9CisKICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAi
I2VuZGlmXG5cbiIpIGlmICRjb25kaXRpb25hbDsKIAogICAgICAgICAgICAgIyBHZW5lcmF0ZSBh
IGZ1bmN0aW9uIGRpc3BhdGNoaW5nIGNhbGwgdG8gdGhlIHJlc3Qgb2YgdGhlIG92ZXJsb2Fkcy4K
QEAgLTUzMTksNiArNTQzMiw0MyBAQCBzdWIgSlNWYWx1ZVRvTmF0aXZlCiAgICAgcmV0dXJuICgi
SlMiIC4gJHR5cGUtPm5hbWUgLiAiOjp0b1dyYXBwZWQoJHZhbHVlKSIsIDApOwogfQogCitzdWIg
VW5zYWZlVG9OYXRpdmUKK3sKKyAgICBteSAoJGludGVyZmFjZSwgJGNvbnRleHQsICR2YWx1ZSwg
JGNvbmRpdGlvbmFsLCAkc3RhdGVQb2ludGVyLCAkc3RhdGVSZWZlcmVuY2UsICR0aGlzT2JqZWN0
UmVmZXJlbmNlKSA9IEBfOworCisgICAgYXNzZXJ0KCJJbnZhbGlkIGNvbnRleHQgdHlwZSIpIGlm
ICFJc1ZhbGlkQ29udGV4dEZvckpTVmFsdWVUb05hdGl2ZSgkY29udGV4dCk7CisKKyAgICBteSAk
dHlwZSA9ICRjb250ZXh0LT50eXBlOworCisgICAgIyBGSVhNRTogUmVtb3ZlIHRoZXNlIDMgdmFy
aWFibGVzIHdoZW4gYWxsIFVuc2FmZVRvTmF0aXZlIHVzZSByZWZlcmVuY2VzLgorICAgICRzdGF0
ZVBvaW50ZXIgPSAic3RhdGUiIHVubGVzcyAkc3RhdGVQb2ludGVyOworICAgICRzdGF0ZVJlZmVy
ZW5jZSA9ICIqc3RhdGUiIHVubGVzcyAkc3RhdGVSZWZlcmVuY2U7CisgICAgJHRoaXNPYmplY3RS
ZWZlcmVuY2UgPSAiKmNhc3RlZFRoaXMiIHVubGVzcyAkdGhpc09iamVjdFJlZmVyZW5jZTsKKwor
ICAgIGlmIChKU1ZhbHVlVG9OYXRpdmVJc0hhbmRsZWRCeURPTUNvbnZlcnQoJHR5cGUsICRjb250
ZXh0KSkgeworICAgICAgICBBZGRUb0ltcGxJbmNsdWRlcygiRE9NSklUSURMQ29udmVydC5oIik7
CisgICAgICAgIEFkZFRvSW1wbEluY2x1ZGVzRm9ySURMVHlwZSgkdHlwZSwgJGNvbmRpdGlvbmFs
KTsKKworICAgICAgICBteSAkSURMVHlwZSA9IEdldElETFR5cGUoJGludGVyZmFjZSwgJHR5cGUp
OworCisgICAgICAgIG15IEBjb252ZXJzaW9uQXJndW1lbnRzID0gKCk7CisgICAgICAgIHB1c2go
QGNvbnZlcnNpb25Bcmd1bWVudHMsICIkc3RhdGVSZWZlcmVuY2UiKTsKKyAgICAgICAgcHVzaChA
Y29udmVyc2lvbkFyZ3VtZW50cywgIiR2YWx1ZSIpOworCisgICAgICAgIG15IEBjb252ZXJzaW9u
U3RhdGljQXJndW1lbnRzID0gKCk7CisgICAgICAgIHB1c2goQGNvbnZlcnNpb25TdGF0aWNBcmd1
bWVudHMsIEdldEludGVnZXJDb252ZXJzaW9uQ29uZmlndXJhdGlvbigkY29udGV4dCkpIGlmICRj
b2RlR2VuZXJhdG9yLT5Jc0ludGVnZXJUeXBlKCR0eXBlKTsKKyAgICAgICAgcHVzaChAY29udmVy
c2lvblN0YXRpY0FyZ3VtZW50cywgR2V0U3RyaW5nQ29udmVyc2lvbkNvbmZpZ3VyYXRpb24oJGNv
bnRleHQpKSBpZiAkY29kZUdlbmVyYXRvci0+SXNTdHJpbmdUeXBlKCR0eXBlKTsKKworICAgICAg
ICBpZiAoc2NhbGFyKEBjb252ZXJzaW9uU3RhdGljQXJndW1lbnRzKSA+IDApIHsKKyAgICAgICAg
ICAgIHJldHVybiAoIkRPTUpJVDo6RGlyZWN0Q29udmVydGVyPCRJRExUeXBlPjo6ZGlyZWN0Q29u
dmVydDwiIC4gam9pbigiLCAiLCBAY29udmVyc2lvblN0YXRpY0FyZ3VtZW50cykgLiAiPigiIC4g
am9pbigiLCAiLCBAY29udmVyc2lvbkFyZ3VtZW50cykgLiAiKSIsIDEpOworICAgICAgICB9Cisg
ICAgICAgIHJldHVybiAoIkRPTUpJVDo6RGlyZWN0Q29udmVydGVyPCRJRExUeXBlPjo6ZGlyZWN0
Q29udmVydCgiIC4gam9pbigiLCAiLCBAY29udmVyc2lvbkFyZ3VtZW50cykgLiAiKSIsIDEpOwor
ICAgIH0KKworICAgICMgRklYTUU6IFN1cHBvcnQgbW9yZSB0eXBlcy4KKyAgICBkaWUgIk9ubHkg
RE9NQ29udmVydCBzdXBwb3J0ZWQgb25lIGlzIG5vdyBzdXBwb3J0ZWQgaW4gRE9NSklUIHVuc2Fm
ZS4iOworfQorCiBzdWIgTmF0aXZlVG9KU1ZhbHVlSXNIYW5kbGVkQnlET01Db252ZXJ0CiB7CiAg
ICAgbXkgKCR0eXBlKSA9IEBfOwpAQCAtNTUyNSw3ICs1Njc1LDEwIEBAIHN1YiBHZW5lcmF0ZUhh
c2hUYWJsZVZhbHVlQXJyYXkKICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiI2lmICR7
Y29uZGl0aW9uYWxTdHJpbmd9XG4iKTsKICAgICAgICAgfQogCi0gICAgICAgIGlmICgiQCRzcGVj
aWFsc1skaV0iID1+IG0vRnVuY3Rpb24vKSB7CisgICAgICAgIGlmICgiQCRzcGVjaWFsc1skaV0i
ID1+IG0vRE9NSklURnVuY3Rpb24vKSB7CisgICAgICAgICAgICAkZmlyc3RUYXJnZXRUeXBlID0g
InN0YXRpY19jYXN0PE5hdGl2ZUZ1bmN0aW9uPiI7CisgICAgICAgICAgICAkc2Vjb25kVGFyZ2V0
VHlwZSA9ICJzdGF0aWNfY2FzdDxjb25zdCBKU0M6OkRPTUpJVDo6U2lnbmF0dXJlKj4iOworICAg
ICAgICB9IGVsc2lmICgiQCRzcGVjaWFsc1skaV0iID1+IG0vRnVuY3Rpb24vKSB7CiAgICAgICAg
ICAgICAkZmlyc3RUYXJnZXRUeXBlID0gInN0YXRpY19jYXN0PE5hdGl2ZUZ1bmN0aW9uPiI7CiAg
ICAgICAgIH0gZWxzaWYgKCJAJHNwZWNpYWxzWyRpXSIgPX4gbS9CdWlsdGluLykgewogICAgICAg
ICAgICAgJGZpcnN0VGFyZ2V0VHlwZSA9ICJzdGF0aWNfY2FzdDxCdWlsdGluR2VuZXJhdG9yPiI7
CkBAIC02MTIzLDYgKzYyNzYsOSBAQCBzdWIgQ29tcHV0ZUZ1bmN0aW9uU3BlY2lhbAogICAgIGVs
c2UgewogICAgICAgICBwdXNoKEBzcGVjaWFscywgIkpTQzo6RnVuY3Rpb24iKTsKICAgICB9Cisg
ICAgaWYgKCRmdW5jdGlvbi0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkRPTUpJVCJ9KSB7CisgICAg
ICAgIHB1c2goQHNwZWNpYWxzLCAiRE9NSklURnVuY3Rpb24iKSBpZiAkY29kZUdlbmVyYXRvci0+
RXh0ZW5kZWRBdHRyaWJ1dGVDb250YWlucygkZnVuY3Rpb24tPmV4dGVuZGVkQXR0cmlidXRlcy0+
e0RPTUpJVH0sICJTaWduYXR1cmUiKTsKKyAgICB9CiAgICAgcmV0dXJuIChAc3BlY2lhbHMgPiAw
KSA/IGpvaW4oIiB8ICIsIEBzcGVjaWFscykgOiAiMCI7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvSURMQXR0cmlidXRlcy50eHQgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL0lETEF0dHJpYnV0ZXMudHh0CmluZGV4IGEyZTc1NDE1OTFj
ZTNmNTc2ZTdhN2QyZDZkMmZjNjJkZGRmYTA0MWMuLjE0NmMyYmNjOGUwZjM3NmQ1ZGNjNTQzNTM5
MDgzMzU5YzcyZGJlNjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvSURMQXR0cmlidXRlcy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy9JRExBdHRyaWJ1dGVzLnR4dApAQCAtNTIsNyArNTIsNyBAQCBDdXN0b21QdXRGdW5jdGlvbgog
Q3VzdG9tU2V0UHJvdG90eXBlCiBDdXN0b21TZXR0ZXIKIEN1c3RvbVRvSlNPYmplY3QKLURPTUpJ
VAorRE9NSklUPXxTaWduYXR1cmUKIERvTm90Q2hlY2tDb25zdGFudHMKIERvTm90Q2hlY2tTZWN1
cml0eQogRG9Ob3RDaGVja1NlY3VyaXR5T25HZXR0ZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RET01KSVQuY3BwIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERPTUpJVC5jcHAKaW5kZXggMjQ4
OGRmMjZiZGI1MmI1MGNkNjdkNjBjY2E1NjViMjY1MzY3ZTRjZi4uYWYxYmNmYzMxYmJhZmUyYjI1
M2Y4N2QwZjczYjAzODMxYjM3OWFkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERPTUpJVC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERPTUpJVC5jcHAKQEAgLTIxLDEwICsyMSwx
OCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkpTVGVzdERPTUpJVC5oIgogCisj
aW5jbHVkZSAiRE9NSklUQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5oIgorI2luY2x1ZGUgIkRPTUpJ
VENoZWNrRE9NLmgiCisjaW5jbHVkZSAiRE9NSklUSURMQ29udmVydC5oIgorI2luY2x1ZGUgIkRP
TUpJVElETFR5cGUuaCIKKyNpbmNsdWRlICJET01KSVRJRExUeXBlRmlsdGVyLmgiCisjaW5jbHVk
ZSAiRXhjZXB0aW9uQ29kZS5oIgogI2luY2x1ZGUgIkpTQnl0ZVN0cmluZy5oIgogI2luY2x1ZGUg
IkpTRE9NQmluZGluZy5oIgogI2luY2x1ZGUgIkpTRE9NQ29uc3RydWN0b3IuaCIKICNpbmNsdWRl
ICJKU0RPTUNvbnZlcnQuaCIKKyNpbmNsdWRlIDxpbnRlcnByZXRlci9GcmFtZVRyYWNlcnMuaD4K
KyNpbmNsdWRlIDxydW50aW1lL0Vycm9yLmg+CiAjaW5jbHVkZSA8d3RmL0dldFB0ci5oPgogI2lu
Y2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogCkBAIC0zMiw2ICs0MCwxMSBAQCB1c2luZyBu
YW1lc3BhY2UgSlNDOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKKy8vIEZ1bmN0aW9ucworCitK
U0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0RE9NSklUUHJvdG90eXBlRnVu
Y3Rpb25HZXRBdHRyaWJ1dGUoSlNDOjpFeGVjU3RhdGUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCB1bnNhZmVKc1Rlc3RET01KSVRQcm90b3R5cGVGdW5jdGlvbkdldEF0dHJp
YnV0ZShKU0M6OkV4ZWNTdGF0ZSosIEpTVGVzdERPTUpJVCosIERPTUpJVDo6SURMSlNBcmd1bWVu
dFR5cGU8SURMRE9NU3RyaW5nPik7CisKIC8vIEF0dHJpYnV0ZXMKIAogSlNDOjpFbmNvZGVkSlNW
YWx1ZSBqc1Rlc3RET01KSVRBbnlBdHRyKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNW
YWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwpAQCAtNzIsNiArODUsNyBAQCBKU0M6OkVuY29kZWRK
U1ZhbHVlIGpzVGVzdERPTUpJVE5vZGVOdWxsYWJsZUF0dHIoSlNDOjpFeGVjU3RhdGUqLCBKU0M6
OkVuY29kZWRKUwogSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RET01KSVRDb25zdHJ1Y3RvcihK
U0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsK
IGJvb2wgc2V0SlNUZXN0RE9NSklUQ29uc3RydWN0b3IoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVu
Y29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKIAorc3RhdGljIGNvbnN0IEpTQzo6
RE9NSklUOjpTaWduYXR1cmUgRE9NSklUU2lnbmF0dXJlRm9yVGVzdERPTUpJVEdldEF0dHJpYnV0
ZSgodWludHB0cl90KXVuc2FmZUpzVGVzdERPTUpJVFByb3RvdHlwZUZ1bmN0aW9uR2V0QXR0cmli
dXRlLCBET01KSVQ6OmNoZWNrRE9NPFRlc3RET01KSVQ+LCBKU1Rlc3RET01KSVQ6OmluZm8oKSwg
SlNDOjpET01KSVQ6OkVmZmVjdDo6Zm9yUmVhZChET01KSVQ6OkFic3RyYWN0SGVhcFJlcG9zaXRv
cnk6OkRPTSksIERPTUpJVDo6SURMUmVzdWx0VHlwZUZpbHRlcjxJRExOdWxsYWJsZTxJRExET01T
dHJpbmc+PiwgRE9NSklUOjpJRExBcmd1bWVudFR5cGVGaWx0ZXI8SURMRE9NU3RyaW5nPik7CiBj
bGFzcyBKU1Rlc3RET01KSVRQcm90b3R5cGUgOiBwdWJsaWMgSlNDOjpKU05vbkZpbmFsT2JqZWN0
IHsKIHB1YmxpYzoKICAgICB1c2luZyBCYXNlID0gSlNDOjpKU05vbkZpbmFsT2JqZWN0OwpAQCAt
MTUzLDYgKzE2Nyw3IEBAIHN0YXRpYyBjb25zdCBIYXNoVGFibGVWYWx1ZSBKU1Rlc3RET01KSVRQ
cm90b3R5cGVUYWJsZVZhbHVlc1tdID0KICAgICB7ICJieXRlU3RyaW5nTnVsbGFibGVBdHRyIiwg
UmVhZE9ubHkgfCBDdXN0b21BY2Nlc3NvciB8IERPTUpJVEF0dHJpYnV0ZSwgTm9JbnRyaW5zaWMs
IHsgKGludHB0cl90KXN0YXRpY19jYXN0PERPTUpJVEdldHRlclNldHRlckdlbmVyYXRvcj4oZG9t
SklUR2V0dGVyU2V0dGVyRm9yVGVzdERPTUpJVEJ5dGVTdHJpbmdOdWxsYWJsZUF0dHIpLCAoaW50
cHRyX3QpICgwKSB9IH0sCiAgICAgeyAidXN2U3RyaW5nTnVsbGFibGVBdHRyIiwgUmVhZE9ubHkg
fCBDdXN0b21BY2Nlc3NvciB8IERPTUpJVEF0dHJpYnV0ZSwgTm9JbnRyaW5zaWMsIHsgKGludHB0
cl90KXN0YXRpY19jYXN0PERPTUpJVEdldHRlclNldHRlckdlbmVyYXRvcj4oZG9tSklUR2V0dGVy
U2V0dGVyRm9yVGVzdERPTUpJVFVzdlN0cmluZ051bGxhYmxlQXR0ciksIChpbnRwdHJfdCkgKDAp
IH0gfSwKICAgICB7ICJub2RlTnVsbGFibGVBdHRyIiwgUmVhZE9ubHkgfCBDdXN0b21BY2Nlc3Nv
ciB8IERPTUpJVEF0dHJpYnV0ZSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0
PERPTUpJVEdldHRlclNldHRlckdlbmVyYXRvcj4oZG9tSklUR2V0dGVyU2V0dGVyRm9yVGVzdERP
TUpJVE5vZGVOdWxsYWJsZUF0dHIpLCAoaW50cHRyX3QpICgwKSB9IH0sCisgICAgeyAiZ2V0QXR0
cmlidXRlIiwgSlNDOjpGdW5jdGlvbiB8IERPTUpJVEZ1bmN0aW9uLCBOb0ludHJpbnNpYywgeyAo
aW50cHRyX3Qpc3RhdGljX2Nhc3Q8TmF0aXZlRnVuY3Rpb24+KGpzVGVzdERPTUpJVFByb3RvdHlw
ZUZ1bmN0aW9uR2V0QXR0cmlidXRlKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxjb25zdCBKU0M6
OkRPTUpJVDo6U2lnbmF0dXJlKj4oJkRPTUpJVFNpZ25hdHVyZUZvclRlc3RET01KSVRHZXRBdHRy
aWJ1dGUpIH0gfSwKIH07CiAKIGNvbnN0IENsYXNzSW5mbyBKU1Rlc3RET01KSVRQcm90b3R5cGU6
OnNfaW5mbyA9IHsgIlRlc3RET01KSVRQcm90b3R5cGUiLCAmQmFzZTo6c19pbmZvLCAwLCBDUkVB
VEVfTUVUSE9EX1RBQkxFKEpTVGVzdERPTUpJVFByb3RvdHlwZSkgfTsKQEAgLTE4NSw2ICsyMDAs
MTEgQEAgdGVtcGxhdGU8PiBpbmxpbmUgSlNUZXN0RE9NSklUKiBCaW5kaW5nQ2FsbGVyPEpTVGVz
dERPTUpJVD46OmNhc3RGb3JBdHRyaWJ1dGUoRXgKICAgICByZXR1cm4ganNEeW5hbWljRG93bmNh
c3Q8SlNUZXN0RE9NSklUKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogfQogCit0ZW1w
bGF0ZTw+IGlubGluZSBKU1Rlc3RET01KSVQqIEJpbmRpbmdDYWxsZXI8SlNUZXN0RE9NSklUPjo6
Y2FzdEZvck9wZXJhdGlvbihFeGVjU3RhdGUmIHN0YXRlKQoreworICAgIHJldHVybiBqc0R5bmFt
aWNEb3duY2FzdDxKU1Rlc3RET01KSVQqPihzdGF0ZS50aGlzVmFsdWUoKSk7Cit9CisKIHN0YXRp
YyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RET01KSVRBbnlBdHRyR2V0dGVyKEV4ZWNTdGF0ZSYsIEpT
VGVzdERPTUpJVCYsIFRocm93U2NvcGUmIHRocm93U2NvcGUpOwogCiBFbmNvZGVkSlNWYWx1ZSBq
c1Rlc3RET01KSVRBbnlBdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNW
YWx1ZSwgUHJvcGVydHlOYW1lKQpAQCAtMjAyLDcgKzIyMiw3IEBAIHN0YXRpYyBpbmxpbmUgSlNW
YWx1ZSBqc1Rlc3RET01KSVRBbnlBdHRyR2V0dGVyKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVGVzdERP
TUpJVCYKIH0KIAogVGVzdERPTUpJVEFueUF0dHJET01KSVQ6OlRlc3RET01KSVRBbnlBdHRyRE9N
SklUKCkKLSAgICA6IEpTQzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIoanNUZXN0RE9NSklUQW55QXR0
ciwgbnVsbHB0ciwgSlNUZXN0RE9NSklUOjppbmZvKCksIEpTQzo6U3BlY0hlYXBUb3ApCisgICAg
OiBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVyKGpzVGVzdERPTUpJVEFueUF0dHIsIG51bGxwdHIs
IEpTVGVzdERPTUpJVDo6aW5mbygpLCBET01KSVQ6OklETFJlc3VsdFR5cGVGaWx0ZXI8SURMQW55
PikKIHsKIH0KIApAQCAtMjI5LDcgKzI0OSw3IEBAIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rl
c3RET01KSVRCb29sZWFuQXR0ckdldHRlcihFeGVjU3RhdGUmIHN0YXRlLCBKU1Rlc3RET01KCiB9
CiAKIFRlc3RET01KSVRCb29sZWFuQXR0ckRPTUpJVDo6VGVzdERPTUpJVEJvb2xlYW5BdHRyRE9N
SklUKCkKLSAgICA6IEpTQzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIoanNUZXN0RE9NSklUQm9vbGVh
bkF0dHIsIG51bGxwdHIsIEpTVGVzdERPTUpJVDo6aW5mbygpLCBKU0M6OlNwZWNCb29sZWFuKQor
ICAgIDogSlNDOjpET01KSVQ6OkdldHRlclNldHRlcihqc1Rlc3RET01KSVRCb29sZWFuQXR0ciwg
bnVsbHB0ciwgSlNUZXN0RE9NSklUOjppbmZvKCksIERPTUpJVDo6SURMUmVzdWx0VHlwZUZpbHRl
cjxJRExCb29sZWFuPikKIHsKIH0KIApAQCAtMjU2LDcgKzI3Niw3IEBAIHN0YXRpYyBpbmxpbmUg
SlNWYWx1ZSBqc1Rlc3RET01KSVRCeXRlQXR0ckdldHRlcihFeGVjU3RhdGUmIHN0YXRlLCBKU1Rl
c3RET01KSVQmCiB9CiAKIFRlc3RET01KSVRCeXRlQXR0ckRPTUpJVDo6VGVzdERPTUpJVEJ5dGVB
dHRyRE9NSklUKCkKLSAgICA6IEpTQzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIoanNUZXN0RE9NSklU
Qnl0ZUF0dHIsIG51bGxwdHIsIEpTVGVzdERPTUpJVDo6aW5mbygpLCBKU0M6OlNwZWNJbnQzMk9u
bHkpCisgICAgOiBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVyKGpzVGVzdERPTUpJVEJ5dGVBdHRy
LCBudWxscHRyLCBKU1Rlc3RET01KSVQ6OmluZm8oKSwgRE9NSklUOjpJRExSZXN1bHRUeXBlRmls
dGVyPElETEJ5dGU+KQogewogfQogCkBAIC0yODMsNyArMzAzLDcgQEAgc3RhdGljIGlubGluZSBK
U1ZhbHVlIGpzVGVzdERPTUpJVE9jdGV0QXR0ckdldHRlcihFeGVjU3RhdGUmIHN0YXRlLCBKU1Rl
c3RET01KSVQKIH0KIAogVGVzdERPTUpJVE9jdGV0QXR0ckRPTUpJVDo6VGVzdERPTUpJVE9jdGV0
QXR0ckRPTUpJVCgpCi0gICAgOiBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVyKGpzVGVzdERPTUpJ
VE9jdGV0QXR0ciwgbnVsbHB0ciwgSlNUZXN0RE9NSklUOjppbmZvKCksIEpTQzo6U3BlY0ludDMy
T25seSkKKyAgICA6IEpTQzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIoanNUZXN0RE9NSklUT2N0ZXRB
dHRyLCBudWxscHRyLCBKU1Rlc3RET01KSVQ6OmluZm8oKSwgRE9NSklUOjpJRExSZXN1bHRUeXBl
RmlsdGVyPElETE9jdGV0PikKIHsKIH0KIApAQCAtMzEwLDcgKzMzMCw3IEBAIHN0YXRpYyBpbmxp
bmUgSlNWYWx1ZSBqc1Rlc3RET01KSVRTaG9ydEF0dHJHZXR0ZXIoRXhlY1N0YXRlJiBzdGF0ZSwg
SlNUZXN0RE9NSklUCiB9CiAKIFRlc3RET01KSVRTaG9ydEF0dHJET01KSVQ6OlRlc3RET01KSVRT
aG9ydEF0dHJET01KSVQoKQotICAgIDogSlNDOjpET01KSVQ6OkdldHRlclNldHRlcihqc1Rlc3RE
T01KSVRTaG9ydEF0dHIsIG51bGxwdHIsIEpTVGVzdERPTUpJVDo6aW5mbygpLCBKU0M6OlNwZWNJ
bnQzMk9ubHkpCisgICAgOiBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVyKGpzVGVzdERPTUpJVFNo
b3J0QXR0ciwgbnVsbHB0ciwgSlNUZXN0RE9NSklUOjppbmZvKCksIERPTUpJVDo6SURMUmVzdWx0
VHlwZUZpbHRlcjxJRExTaG9ydD4pCiB7CiB9CiAKQEAgLTMzNyw3ICszNTcsNyBAQCBzdGF0aWMg
aW5saW5lIEpTVmFsdWUganNUZXN0RE9NSklUVW5zaWduZWRTaG9ydEF0dHJHZXR0ZXIoRXhlY1N0
YXRlJiBzdGF0ZSwgSlNUZQogfQogCiBUZXN0RE9NSklUVW5zaWduZWRTaG9ydEF0dHJET01KSVQ6
OlRlc3RET01KSVRVbnNpZ25lZFNob3J0QXR0ckRPTUpJVCgpCi0gICAgOiBKU0M6OkRPTUpJVDo6
R2V0dGVyU2V0dGVyKGpzVGVzdERPTUpJVFVuc2lnbmVkU2hvcnRBdHRyLCBudWxscHRyLCBKU1Rl
c3RET01KSVQ6OmluZm8oKSwgSlNDOjpTcGVjSW50MzJPbmx5KQorICAgIDogSlNDOjpET01KSVQ6
OkdldHRlclNldHRlcihqc1Rlc3RET01KSVRVbnNpZ25lZFNob3J0QXR0ciwgbnVsbHB0ciwgSlNU
ZXN0RE9NSklUOjppbmZvKCksIERPTUpJVDo6SURMUmVzdWx0VHlwZUZpbHRlcjxJRExVbnNpZ25l
ZFNob3J0PikKIHsKIH0KIApAQCAtMzY0LDcgKzM4NCw3IEBAIHN0YXRpYyBpbmxpbmUgSlNWYWx1
ZSBqc1Rlc3RET01KSVRMb25nQXR0ckdldHRlcihFeGVjU3RhdGUmIHN0YXRlLCBKU1Rlc3RET01K
SVQmCiB9CiAKIFRlc3RET01KSVRMb25nQXR0ckRPTUpJVDo6VGVzdERPTUpJVExvbmdBdHRyRE9N
SklUKCkKLSAgICA6IEpTQzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIoanNUZXN0RE9NSklUTG9uZ0F0
dHIsIG51bGxwdHIsIEpTVGVzdERPTUpJVDo6aW5mbygpLCBKU0M6OlNwZWNJbnQzMk9ubHkpCisg
ICAgOiBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVyKGpzVGVzdERPTUpJVExvbmdBdHRyLCBudWxs
cHRyLCBKU1Rlc3RET01KSVQ6OmluZm8oKSwgRE9NSklUOjpJRExSZXN1bHRUeXBlRmlsdGVyPElE
TExvbmc+KQogewogfQogCkBAIC0zOTEsNyArNDExLDcgQEAgc3RhdGljIGlubGluZSBKU1ZhbHVl
IGpzVGVzdERPTUpJVFVuc2lnbmVkTG9uZ0F0dHJHZXR0ZXIoRXhlY1N0YXRlJiBzdGF0ZSwgSlNU
ZXMKIH0KIAogVGVzdERPTUpJVFVuc2lnbmVkTG9uZ0F0dHJET01KSVQ6OlRlc3RET01KSVRVbnNp
Z25lZExvbmdBdHRyRE9NSklUKCkKLSAgICA6IEpTQzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIoanNU
ZXN0RE9NSklUVW5zaWduZWRMb25nQXR0ciwgbnVsbHB0ciwgSlNUZXN0RE9NSklUOjppbmZvKCks
IEpTQzo6U3BlY0J5dGVjb2RlTnVtYmVyKQorICAgIDogSlNDOjpET01KSVQ6OkdldHRlclNldHRl
cihqc1Rlc3RET01KSVRVbnNpZ25lZExvbmdBdHRyLCBudWxscHRyLCBKU1Rlc3RET01KSVQ6Omlu
Zm8oKSwgRE9NSklUOjpJRExSZXN1bHRUeXBlRmlsdGVyPElETFVuc2lnbmVkTG9uZz4pCiB7CiB9
CiAKQEAgLTQxOCw3ICs0MzgsNyBAQCBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0RE9NSklU
TG9uZ0xvbmdBdHRyR2V0dGVyKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVGVzdERPTQogfQogCiBUZXN0
RE9NSklUTG9uZ0xvbmdBdHRyRE9NSklUOjpUZXN0RE9NSklUTG9uZ0xvbmdBdHRyRE9NSklUKCkK
LSAgICA6IEpTQzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIoanNUZXN0RE9NSklUTG9uZ0xvbmdBdHRy
LCBudWxscHRyLCBKU1Rlc3RET01KSVQ6OmluZm8oKSwgSlNDOjpTcGVjQnl0ZWNvZGVOdW1iZXIp
CisgICAgOiBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVyKGpzVGVzdERPTUpJVExvbmdMb25nQXR0
ciwgbnVsbHB0ciwgSlNUZXN0RE9NSklUOjppbmZvKCksIERPTUpJVDo6SURMUmVzdWx0VHlwZUZp
bHRlcjxJRExMb25nTG9uZz4pCiB7CiB9CiAKQEAgLTQ0NSw3ICs0NjUsNyBAQCBzdGF0aWMgaW5s
aW5lIEpTVmFsdWUganNUZXN0RE9NSklUVW5zaWduZWRMb25nTG9uZ0F0dHJHZXR0ZXIoRXhlY1N0
YXRlJiBzdGF0ZSwgSgogfQogCiBUZXN0RE9NSklUVW5zaWduZWRMb25nTG9uZ0F0dHJET01KSVQ6
OlRlc3RET01KSVRVbnNpZ25lZExvbmdMb25nQXR0ckRPTUpJVCgpCi0gICAgOiBKU0M6OkRPTUpJ
VDo6R2V0dGVyU2V0dGVyKGpzVGVzdERPTUpJVFVuc2lnbmVkTG9uZ0xvbmdBdHRyLCBudWxscHRy
LCBKU1Rlc3RET01KSVQ6OmluZm8oKSwgSlNDOjpTcGVjQnl0ZWNvZGVOdW1iZXIpCisgICAgOiBK
U0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVyKGpzVGVzdERPTUpJVFVuc2lnbmVkTG9uZ0xvbmdBdHRy
LCBudWxscHRyLCBKU1Rlc3RET01KSVQ6OmluZm8oKSwgRE9NSklUOjpJRExSZXN1bHRUeXBlRmls
dGVyPElETFVuc2lnbmVkTG9uZ0xvbmc+KQogewogfQogCkBAIC00NzIsNyArNDkyLDcgQEAgc3Rh
dGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdERPTUpJVEZsb2F0QXR0ckdldHRlcihFeGVjU3RhdGUm
IHN0YXRlLCBKU1Rlc3RET01KSVQKIH0KIAogVGVzdERPTUpJVEZsb2F0QXR0ckRPTUpJVDo6VGVz
dERPTUpJVEZsb2F0QXR0ckRPTUpJVCgpCi0gICAgOiBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVy
KGpzVGVzdERPTUpJVEZsb2F0QXR0ciwgbnVsbHB0ciwgSlNUZXN0RE9NSklUOjppbmZvKCksIEpT
Qzo6U3BlY0J5dGVjb2RlTnVtYmVyKQorICAgIDogSlNDOjpET01KSVQ6OkdldHRlclNldHRlcihq
c1Rlc3RET01KSVRGbG9hdEF0dHIsIG51bGxwdHIsIEpTVGVzdERPTUpJVDo6aW5mbygpLCBET01K
SVQ6OklETFJlc3VsdFR5cGVGaWx0ZXI8SURMRmxvYXQ+KQogewogfQogCkBAIC00OTksNyArNTE5
LDcgQEAgc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdERPTUpJVFVucmVzdHJpY3RlZEZsb2F0
QXR0ckdldHRlcihFeGVjU3RhdGUmIHN0YXRlLAogfQogCiBUZXN0RE9NSklUVW5yZXN0cmljdGVk
RmxvYXRBdHRyRE9NSklUOjpUZXN0RE9NSklUVW5yZXN0cmljdGVkRmxvYXRBdHRyRE9NSklUKCkK
LSAgICA6IEpTQzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIoanNUZXN0RE9NSklUVW5yZXN0cmljdGVk
RmxvYXRBdHRyLCBudWxscHRyLCBKU1Rlc3RET01KSVQ6OmluZm8oKSwgSlNDOjpTcGVjQnl0ZWNv
ZGVOdW1iZXIpCisgICAgOiBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVyKGpzVGVzdERPTUpJVFVu
cmVzdHJpY3RlZEZsb2F0QXR0ciwgbnVsbHB0ciwgSlNUZXN0RE9NSklUOjppbmZvKCksIERPTUpJ
VDo6SURMUmVzdWx0VHlwZUZpbHRlcjxJRExVbnJlc3RyaWN0ZWRGbG9hdD4pCiB7CiB9CiAKQEAg
LTUyNiw3ICs1NDYsNyBAQCBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0RE9NSklURG91Ymxl
QXR0ckdldHRlcihFeGVjU3RhdGUmIHN0YXRlLCBKU1Rlc3RET01KSQogfQogCiBUZXN0RE9NSklU
RG91YmxlQXR0ckRPTUpJVDo6VGVzdERPTUpJVERvdWJsZUF0dHJET01KSVQoKQotICAgIDogSlND
OjpET01KSVQ6OkdldHRlclNldHRlcihqc1Rlc3RET01KSVREb3VibGVBdHRyLCBudWxscHRyLCBK
U1Rlc3RET01KSVQ6OmluZm8oKSwgSlNDOjpTcGVjQnl0ZWNvZGVOdW1iZXIpCisgICAgOiBKU0M6
OkRPTUpJVDo6R2V0dGVyU2V0dGVyKGpzVGVzdERPTUpJVERvdWJsZUF0dHIsIG51bGxwdHIsIEpT
VGVzdERPTUpJVDo6aW5mbygpLCBET01KSVQ6OklETFJlc3VsdFR5cGVGaWx0ZXI8SURMRG91Ymxl
PikKIHsKIH0KIApAQCAtNTUzLDcgKzU3Myw3IEBAIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rl
c3RET01KSVRVbnJlc3RyaWN0ZWREb3VibGVBdHRyR2V0dGVyKEV4ZWNTdGF0ZSYgc3RhdGUsCiB9
CiAKIFRlc3RET01KSVRVbnJlc3RyaWN0ZWREb3VibGVBdHRyRE9NSklUOjpUZXN0RE9NSklUVW5y
ZXN0cmljdGVkRG91YmxlQXR0ckRPTUpJVCgpCi0gICAgOiBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0
dGVyKGpzVGVzdERPTUpJVFVucmVzdHJpY3RlZERvdWJsZUF0dHIsIG51bGxwdHIsIEpTVGVzdERP
TUpJVDo6aW5mbygpLCBKU0M6OlNwZWNCeXRlY29kZU51bWJlcikKKyAgICA6IEpTQzo6RE9NSklU
OjpHZXR0ZXJTZXR0ZXIoanNUZXN0RE9NSklUVW5yZXN0cmljdGVkRG91YmxlQXR0ciwgbnVsbHB0
ciwgSlNUZXN0RE9NSklUOjppbmZvKCksIERPTUpJVDo6SURMUmVzdWx0VHlwZUZpbHRlcjxJRExV
bnJlc3RyaWN0ZWREb3VibGU+KQogewogfQogCkBAIC01ODAsNyArNjAwLDcgQEAgc3RhdGljIGlu
bGluZSBKU1ZhbHVlIGpzVGVzdERPTUpJVERvbVN0cmluZ0F0dHJHZXR0ZXIoRXhlY1N0YXRlJiBz
dGF0ZSwgSlNUZXN0RE8KIH0KIAogVGVzdERPTUpJVERvbVN0cmluZ0F0dHJET01KSVQ6OlRlc3RE
T01KSVREb21TdHJpbmdBdHRyRE9NSklUKCkKLSAgICA6IEpTQzo6RE9NSklUOjpHZXR0ZXJTZXR0
ZXIoanNUZXN0RE9NSklURG9tU3RyaW5nQXR0ciwgbnVsbHB0ciwgSlNUZXN0RE9NSklUOjppbmZv
KCksIEpTQzo6U3BlY1N0cmluZykKKyAgICA6IEpTQzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIoanNU
ZXN0RE9NSklURG9tU3RyaW5nQXR0ciwgbnVsbHB0ciwgSlNUZXN0RE9NSklUOjppbmZvKCksIERP
TUpJVDo6SURMUmVzdWx0VHlwZUZpbHRlcjxJRExET01TdHJpbmc+KQogewogfQogCkBAIC02MDcs
NyArNjI3LDcgQEAgc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdERPTUpJVEJ5dGVTdHJpbmdB
dHRyR2V0dGVyKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVGVzdEQKIH0KIAogVGVzdERPTUpJVEJ5dGVT
dHJpbmdBdHRyRE9NSklUOjpUZXN0RE9NSklUQnl0ZVN0cmluZ0F0dHJET01KSVQoKQotICAgIDog
SlNDOjpET01KSVQ6OkdldHRlclNldHRlcihqc1Rlc3RET01KSVRCeXRlU3RyaW5nQXR0ciwgbnVs
bHB0ciwgSlNUZXN0RE9NSklUOjppbmZvKCksIEpTQzo6U3BlY1N0cmluZykKKyAgICA6IEpTQzo6
RE9NSklUOjpHZXR0ZXJTZXR0ZXIoanNUZXN0RE9NSklUQnl0ZVN0cmluZ0F0dHIsIG51bGxwdHIs
IEpTVGVzdERPTUpJVDo6aW5mbygpLCBET01KSVQ6OklETFJlc3VsdFR5cGVGaWx0ZXI8SURMQnl0
ZVN0cmluZz4pCiB7CiB9CiAKQEAgLTYzNCw3ICs2NTQsNyBAQCBzdGF0aWMgaW5saW5lIEpTVmFs
dWUganNUZXN0RE9NSklUVXN2U3RyaW5nQXR0ckdldHRlcihFeGVjU3RhdGUmIHN0YXRlLCBKU1Rl
c3RETwogfQogCiBUZXN0RE9NSklUVXN2U3RyaW5nQXR0ckRPTUpJVDo6VGVzdERPTUpJVFVzdlN0
cmluZ0F0dHJET01KSVQoKQotICAgIDogSlNDOjpET01KSVQ6OkdldHRlclNldHRlcihqc1Rlc3RE
T01KSVRVc3ZTdHJpbmdBdHRyLCBudWxscHRyLCBKU1Rlc3RET01KSVQ6OmluZm8oKSwgSlNDOjpT
cGVjU3RyaW5nKQorICAgIDogSlNDOjpET01KSVQ6OkdldHRlclNldHRlcihqc1Rlc3RET01KSVRV
c3ZTdHJpbmdBdHRyLCBudWxscHRyLCBKU1Rlc3RET01KSVQ6OmluZm8oKSwgRE9NSklUOjpJRExS
ZXN1bHRUeXBlRmlsdGVyPElETFVTVlN0cmluZz4pCiB7CiB9CiAKQEAgLTY2MSw3ICs2ODEsNyBA
QCBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0RE9NSklUTm9kZUF0dHJHZXR0ZXIoRXhlY1N0
YXRlJiBzdGF0ZSwgSlNUZXN0RE9NSklUJgogfQogCiBUZXN0RE9NSklUTm9kZUF0dHJET01KSVQ6
OlRlc3RET01KSVROb2RlQXR0ckRPTUpJVCgpCi0gICAgOiBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0
dGVyKGpzVGVzdERPTUpJVE5vZGVBdHRyLCBudWxscHRyLCBKU1Rlc3RET01KSVQ6OmluZm8oKSwg
U3BlY0hlYXBUb3ApCisgICAgOiBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVyKGpzVGVzdERPTUpJ
VE5vZGVBdHRyLCBudWxscHRyLCBKU1Rlc3RET01KSVQ6OmluZm8oKSwgRE9NSklUOjpJRExSZXN1
bHRUeXBlRmlsdGVyPElETEludGVyZmFjZTxOb2RlPj4pCiB7CiB9CiAKQEAgLTY4OCw3ICs3MDgs
NyBAQCBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0RE9NSklUQm9vbGVhbk51bGxhYmxlQXR0
ckdldHRlcihFeGVjU3RhdGUmIHN0YXRlLCBKUwogfQogCiBUZXN0RE9NSklUQm9vbGVhbk51bGxh
YmxlQXR0ckRPTUpJVDo6VGVzdERPTUpJVEJvb2xlYW5OdWxsYWJsZUF0dHJET01KSVQoKQotICAg
IDogSlNDOjpET01KSVQ6OkdldHRlclNldHRlcihqc1Rlc3RET01KSVRCb29sZWFuTnVsbGFibGVB
dHRyLCBudWxscHRyLCBKU1Rlc3RET01KSVQ6OmluZm8oKSwgKEpTQzo6U3BlY0Jvb2xlYW4gfCBK
U0M6OlNwZWNPdGhlcikpCisgICAgOiBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVyKGpzVGVzdERP
TUpJVEJvb2xlYW5OdWxsYWJsZUF0dHIsIG51bGxwdHIsIEpTVGVzdERPTUpJVDo6aW5mbygpLCBE
T01KSVQ6OklETFJlc3VsdFR5cGVGaWx0ZXI8SURMTnVsbGFibGU8SURMQm9vbGVhbj4+KQogewog
fQogCkBAIC03MTUsNyArNzM1LDcgQEAgc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdERPTUpJ
VEJ5dGVOdWxsYWJsZUF0dHJHZXR0ZXIoRXhlY1N0YXRlJiBzdGF0ZSwgSlNUZXMKIH0KIAogVGVz
dERPTUpJVEJ5dGVOdWxsYWJsZUF0dHJET01KSVQ6OlRlc3RET01KSVRCeXRlTnVsbGFibGVBdHRy
RE9NSklUKCkKLSAgICA6IEpTQzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIoanNUZXN0RE9NSklUQnl0
ZU51bGxhYmxlQXR0ciwgbnVsbHB0ciwgSlNUZXN0RE9NSklUOjppbmZvKCksIChKU0M6OlNwZWNJ
bnQzMk9ubHkgfCBKU0M6OlNwZWNPdGhlcikpCisgICAgOiBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0
dGVyKGpzVGVzdERPTUpJVEJ5dGVOdWxsYWJsZUF0dHIsIG51bGxwdHIsIEpTVGVzdERPTUpJVDo6
aW5mbygpLCBET01KSVQ6OklETFJlc3VsdFR5cGVGaWx0ZXI8SURMTnVsbGFibGU8SURMQnl0ZT4+
KQogewogfQogCkBAIC03NDIsNyArNzYyLDcgQEAgc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVz
dERPTUpJVE9jdGV0TnVsbGFibGVBdHRyR2V0dGVyKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVGUKIH0K
IAogVGVzdERPTUpJVE9jdGV0TnVsbGFibGVBdHRyRE9NSklUOjpUZXN0RE9NSklUT2N0ZXROdWxs
YWJsZUF0dHJET01KSVQoKQotICAgIDogSlNDOjpET01KSVQ6OkdldHRlclNldHRlcihqc1Rlc3RE
T01KSVRPY3RldE51bGxhYmxlQXR0ciwgbnVsbHB0ciwgSlNUZXN0RE9NSklUOjppbmZvKCksIChK
U0M6OlNwZWNJbnQzMk9ubHkgfCBKU0M6OlNwZWNPdGhlcikpCisgICAgOiBKU0M6OkRPTUpJVDo6
R2V0dGVyU2V0dGVyKGpzVGVzdERPTUpJVE9jdGV0TnVsbGFibGVBdHRyLCBudWxscHRyLCBKU1Rl
c3RET01KSVQ6OmluZm8oKSwgRE9NSklUOjpJRExSZXN1bHRUeXBlRmlsdGVyPElETE51bGxhYmxl
PElETE9jdGV0Pj4pCiB7CiB9CiAKQEAgLTc2OSw3ICs3ODksNyBAQCBzdGF0aWMgaW5saW5lIEpT
VmFsdWUganNUZXN0RE9NSklUU2hvcnROdWxsYWJsZUF0dHJHZXR0ZXIoRXhlY1N0YXRlJiBzdGF0
ZSwgSlNUZQogfQogCiBUZXN0RE9NSklUU2hvcnROdWxsYWJsZUF0dHJET01KSVQ6OlRlc3RET01K
SVRTaG9ydE51bGxhYmxlQXR0ckRPTUpJVCgpCi0gICAgOiBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0
dGVyKGpzVGVzdERPTUpJVFNob3J0TnVsbGFibGVBdHRyLCBudWxscHRyLCBKU1Rlc3RET01KSVQ6
OmluZm8oKSwgKEpTQzo6U3BlY0ludDMyT25seSB8IEpTQzo6U3BlY090aGVyKSkKKyAgICA6IEpT
Qzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIoanNUZXN0RE9NSklUU2hvcnROdWxsYWJsZUF0dHIsIG51
bGxwdHIsIEpTVGVzdERPTUpJVDo6aW5mbygpLCBET01KSVQ6OklETFJlc3VsdFR5cGVGaWx0ZXI8
SURMTnVsbGFibGU8SURMU2hvcnQ+PikKIHsKIH0KIApAQCAtNzk2LDcgKzgxNiw3IEBAIHN0YXRp
YyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RET01KSVRVbnNpZ25lZFNob3J0TnVsbGFibGVBdHRyR2V0
dGVyKEV4ZWNTdGF0ZSYgc3RhCiB9CiAKIFRlc3RET01KSVRVbnNpZ25lZFNob3J0TnVsbGFibGVB
dHRyRE9NSklUOjpUZXN0RE9NSklUVW5zaWduZWRTaG9ydE51bGxhYmxlQXR0ckRPTUpJVCgpCi0g
ICAgOiBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVyKGpzVGVzdERPTUpJVFVuc2lnbmVkU2hvcnRO
dWxsYWJsZUF0dHIsIG51bGxwdHIsIEpTVGVzdERPTUpJVDo6aW5mbygpLCAoSlNDOjpTcGVjSW50
MzJPbmx5IHwgSlNDOjpTcGVjT3RoZXIpKQorICAgIDogSlNDOjpET01KSVQ6OkdldHRlclNldHRl
cihqc1Rlc3RET01KSVRVbnNpZ25lZFNob3J0TnVsbGFibGVBdHRyLCBudWxscHRyLCBKU1Rlc3RE
T01KSVQ6OmluZm8oKSwgRE9NSklUOjpJRExSZXN1bHRUeXBlRmlsdGVyPElETE51bGxhYmxlPElE
TFVuc2lnbmVkU2hvcnQ+PikKIHsKIH0KIApAQCAtODIzLDcgKzg0Myw3IEBAIHN0YXRpYyBpbmxp
bmUgSlNWYWx1ZSBqc1Rlc3RET01KSVRMb25nTnVsbGFibGVBdHRyR2V0dGVyKEV4ZWNTdGF0ZSYg
c3RhdGUsIEpTVGVzCiB9CiAKIFRlc3RET01KSVRMb25nTnVsbGFibGVBdHRyRE9NSklUOjpUZXN0
RE9NSklUTG9uZ051bGxhYmxlQXR0ckRPTUpJVCgpCi0gICAgOiBKU0M6OkRPTUpJVDo6R2V0dGVy
U2V0dGVyKGpzVGVzdERPTUpJVExvbmdOdWxsYWJsZUF0dHIsIG51bGxwdHIsIEpTVGVzdERPTUpJ
VDo6aW5mbygpLCAoSlNDOjpTcGVjSW50MzJPbmx5IHwgSlNDOjpTcGVjT3RoZXIpKQorICAgIDog
SlNDOjpET01KSVQ6OkdldHRlclNldHRlcihqc1Rlc3RET01KSVRMb25nTnVsbGFibGVBdHRyLCBu
dWxscHRyLCBKU1Rlc3RET01KSVQ6OmluZm8oKSwgRE9NSklUOjpJRExSZXN1bHRUeXBlRmlsdGVy
PElETE51bGxhYmxlPElETExvbmc+PikKIHsKIH0KIApAQCAtODUwLDcgKzg3MCw3IEBAIHN0YXRp
YyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RET01KSVRVbnNpZ25lZExvbmdOdWxsYWJsZUF0dHJHZXR0
ZXIoRXhlY1N0YXRlJiBzdGF0CiB9CiAKIFRlc3RET01KSVRVbnNpZ25lZExvbmdOdWxsYWJsZUF0
dHJET01KSVQ6OlRlc3RET01KSVRVbnNpZ25lZExvbmdOdWxsYWJsZUF0dHJET01KSVQoKQotICAg
IDogSlNDOjpET01KSVQ6OkdldHRlclNldHRlcihqc1Rlc3RET01KSVRVbnNpZ25lZExvbmdOdWxs
YWJsZUF0dHIsIG51bGxwdHIsIEpTVGVzdERPTUpJVDo6aW5mbygpLCAoSlNDOjpTcGVjQnl0ZWNv
ZGVOdW1iZXIgfCBKU0M6OlNwZWNPdGhlcikpCisgICAgOiBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0
dGVyKGpzVGVzdERPTUpJVFVuc2lnbmVkTG9uZ051bGxhYmxlQXR0ciwgbnVsbHB0ciwgSlNUZXN0
RE9NSklUOjppbmZvKCksIERPTUpJVDo6SURMUmVzdWx0VHlwZUZpbHRlcjxJRExOdWxsYWJsZTxJ
RExVbnNpZ25lZExvbmc+PikKIHsKIH0KIApAQCAtODc3LDcgKzg5Nyw3IEBAIHN0YXRpYyBpbmxp
bmUgSlNWYWx1ZSBqc1Rlc3RET01KSVRMb25nTG9uZ051bGxhYmxlQXR0ckdldHRlcihFeGVjU3Rh
dGUmIHN0YXRlLCBKCiB9CiAKIFRlc3RET01KSVRMb25nTG9uZ051bGxhYmxlQXR0ckRPTUpJVDo6
VGVzdERPTUpJVExvbmdMb25nTnVsbGFibGVBdHRyRE9NSklUKCkKLSAgICA6IEpTQzo6RE9NSklU
OjpHZXR0ZXJTZXR0ZXIoanNUZXN0RE9NSklUTG9uZ0xvbmdOdWxsYWJsZUF0dHIsIG51bGxwdHIs
IEpTVGVzdERPTUpJVDo6aW5mbygpLCAoSlNDOjpTcGVjQnl0ZWNvZGVOdW1iZXIgfCBKU0M6OlNw
ZWNPdGhlcikpCisgICAgOiBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVyKGpzVGVzdERPTUpJVExv
bmdMb25nTnVsbGFibGVBdHRyLCBudWxscHRyLCBKU1Rlc3RET01KSVQ6OmluZm8oKSwgRE9NSklU
OjpJRExSZXN1bHRUeXBlRmlsdGVyPElETE51bGxhYmxlPElETExvbmdMb25nPj4pCiB7CiB9CiAK
QEAgLTkwNCw3ICs5MjQsNyBAQCBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0RE9NSklUVW5z
aWduZWRMb25nTG9uZ051bGxhYmxlQXR0ckdldHRlcihFeGVjU3RhdGUmCiB9CiAKIFRlc3RET01K
SVRVbnNpZ25lZExvbmdMb25nTnVsbGFibGVBdHRyRE9NSklUOjpUZXN0RE9NSklUVW5zaWduZWRM
b25nTG9uZ051bGxhYmxlQXR0ckRPTUpJVCgpCi0gICAgOiBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0
dGVyKGpzVGVzdERPTUpJVFVuc2lnbmVkTG9uZ0xvbmdOdWxsYWJsZUF0dHIsIG51bGxwdHIsIEpT
VGVzdERPTUpJVDo6aW5mbygpLCAoSlNDOjpTcGVjQnl0ZWNvZGVOdW1iZXIgfCBKU0M6OlNwZWNP
dGhlcikpCisgICAgOiBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVyKGpzVGVzdERPTUpJVFVuc2ln
bmVkTG9uZ0xvbmdOdWxsYWJsZUF0dHIsIG51bGxwdHIsIEpTVGVzdERPTUpJVDo6aW5mbygpLCBE
T01KSVQ6OklETFJlc3VsdFR5cGVGaWx0ZXI8SURMTnVsbGFibGU8SURMVW5zaWduZWRMb25nTG9u
Zz4+KQogewogfQogCkBAIC05MzEsNyArOTUxLDcgQEAgc3RhdGljIGlubGluZSBKU1ZhbHVlIGpz
VGVzdERPTUpJVEZsb2F0TnVsbGFibGVBdHRyR2V0dGVyKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVGUK
IH0KIAogVGVzdERPTUpJVEZsb2F0TnVsbGFibGVBdHRyRE9NSklUOjpUZXN0RE9NSklURmxvYXRO
dWxsYWJsZUF0dHJET01KSVQoKQotICAgIDogSlNDOjpET01KSVQ6OkdldHRlclNldHRlcihqc1Rl
c3RET01KSVRGbG9hdE51bGxhYmxlQXR0ciwgbnVsbHB0ciwgSlNUZXN0RE9NSklUOjppbmZvKCks
IChKU0M6OlNwZWNCeXRlY29kZU51bWJlciB8IEpTQzo6U3BlY090aGVyKSkKKyAgICA6IEpTQzo6
RE9NSklUOjpHZXR0ZXJTZXR0ZXIoanNUZXN0RE9NSklURmxvYXROdWxsYWJsZUF0dHIsIG51bGxw
dHIsIEpTVGVzdERPTUpJVDo6aW5mbygpLCBET01KSVQ6OklETFJlc3VsdFR5cGVGaWx0ZXI8SURM
TnVsbGFibGU8SURMRmxvYXQ+PikKIHsKIH0KIApAQCAtOTU4LDcgKzk3OCw3IEBAIHN0YXRpYyBp
bmxpbmUgSlNWYWx1ZSBqc1Rlc3RET01KSVRVbnJlc3RyaWN0ZWRGbG9hdE51bGxhYmxlQXR0ckdl
dHRlcihFeGVjU3RhdGUmCiB9CiAKIFRlc3RET01KSVRVbnJlc3RyaWN0ZWRGbG9hdE51bGxhYmxl
QXR0ckRPTUpJVDo6VGVzdERPTUpJVFVucmVzdHJpY3RlZEZsb2F0TnVsbGFibGVBdHRyRE9NSklU
KCkKLSAgICA6IEpTQzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIoanNUZXN0RE9NSklUVW5yZXN0cmlj
dGVkRmxvYXROdWxsYWJsZUF0dHIsIG51bGxwdHIsIEpTVGVzdERPTUpJVDo6aW5mbygpLCAoSlND
OjpTcGVjQnl0ZWNvZGVOdW1iZXIgfCBKU0M6OlNwZWNPdGhlcikpCisgICAgOiBKU0M6OkRPTUpJ
VDo6R2V0dGVyU2V0dGVyKGpzVGVzdERPTUpJVFVucmVzdHJpY3RlZEZsb2F0TnVsbGFibGVBdHRy
LCBudWxscHRyLCBKU1Rlc3RET01KSVQ6OmluZm8oKSwgRE9NSklUOjpJRExSZXN1bHRUeXBlRmls
dGVyPElETE51bGxhYmxlPElETFVucmVzdHJpY3RlZEZsb2F0Pj4pCiB7CiB9CiAKQEAgLTk4NSw3
ICsxMDA1LDcgQEAgc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdERPTUpJVERvdWJsZU51bGxh
YmxlQXR0ckdldHRlcihFeGVjU3RhdGUmIHN0YXRlLCBKU1QKIH0KIAogVGVzdERPTUpJVERvdWJs
ZU51bGxhYmxlQXR0ckRPTUpJVDo6VGVzdERPTUpJVERvdWJsZU51bGxhYmxlQXR0ckRPTUpJVCgp
Ci0gICAgOiBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVyKGpzVGVzdERPTUpJVERvdWJsZU51bGxh
YmxlQXR0ciwgbnVsbHB0ciwgSlNUZXN0RE9NSklUOjppbmZvKCksIChKU0M6OlNwZWNCeXRlY29k
ZU51bWJlciB8IEpTQzo6U3BlY090aGVyKSkKKyAgICA6IEpTQzo6RE9NSklUOjpHZXR0ZXJTZXR0
ZXIoanNUZXN0RE9NSklURG91YmxlTnVsbGFibGVBdHRyLCBudWxscHRyLCBKU1Rlc3RET01KSVQ6
OmluZm8oKSwgRE9NSklUOjpJRExSZXN1bHRUeXBlRmlsdGVyPElETE51bGxhYmxlPElETERvdWJs
ZT4+KQogewogfQogCkBAIC0xMDEyLDcgKzEwMzIsNyBAQCBzdGF0aWMgaW5saW5lIEpTVmFsdWUg
anNUZXN0RE9NSklUVW5yZXN0cmljdGVkRG91YmxlTnVsbGFibGVBdHRyR2V0dGVyKEV4ZWNTdGF0
ZQogfQogCiBUZXN0RE9NSklUVW5yZXN0cmljdGVkRG91YmxlTnVsbGFibGVBdHRyRE9NSklUOjpU
ZXN0RE9NSklUVW5yZXN0cmljdGVkRG91YmxlTnVsbGFibGVBdHRyRE9NSklUKCkKLSAgICA6IEpT
Qzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIoanNUZXN0RE9NSklUVW5yZXN0cmljdGVkRG91YmxlTnVs
bGFibGVBdHRyLCBudWxscHRyLCBKU1Rlc3RET01KSVQ6OmluZm8oKSwgKEpTQzo6U3BlY0J5dGVj
b2RlTnVtYmVyIHwgSlNDOjpTcGVjT3RoZXIpKQorICAgIDogSlNDOjpET01KSVQ6OkdldHRlclNl
dHRlcihqc1Rlc3RET01KSVRVbnJlc3RyaWN0ZWREb3VibGVOdWxsYWJsZUF0dHIsIG51bGxwdHIs
IEpTVGVzdERPTUpJVDo6aW5mbygpLCBET01KSVQ6OklETFJlc3VsdFR5cGVGaWx0ZXI8SURMTnVs
bGFibGU8SURMVW5yZXN0cmljdGVkRG91YmxlPj4pCiB7CiB9CiAKQEAgLTEwMzksNyArMTA1OSw3
IEBAIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RET01KSVREb21TdHJpbmdOdWxsYWJsZUF0
dHJHZXR0ZXIoRXhlY1N0YXRlJiBzdGF0ZSwKIH0KIAogVGVzdERPTUpJVERvbVN0cmluZ051bGxh
YmxlQXR0ckRPTUpJVDo6VGVzdERPTUpJVERvbVN0cmluZ051bGxhYmxlQXR0ckRPTUpJVCgpCi0g
ICAgOiBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVyKGpzVGVzdERPTUpJVERvbVN0cmluZ051bGxh
YmxlQXR0ciwgbnVsbHB0ciwgSlNUZXN0RE9NSklUOjppbmZvKCksIChKU0M6OlNwZWNTdHJpbmcg
fCBKU0M6OlNwZWNPdGhlcikpCisgICAgOiBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVyKGpzVGVz
dERPTUpJVERvbVN0cmluZ051bGxhYmxlQXR0ciwgbnVsbHB0ciwgSlNUZXN0RE9NSklUOjppbmZv
KCksIERPTUpJVDo6SURMUmVzdWx0VHlwZUZpbHRlcjxJRExOdWxsYWJsZTxJRExET01TdHJpbmc+
PikKIHsKIH0KIApAQCAtMTA2Niw3ICsxMDg2LDcgQEAgc3RhdGljIGlubGluZSBKU1ZhbHVlIGpz
VGVzdERPTUpJVEJ5dGVTdHJpbmdOdWxsYWJsZUF0dHJHZXR0ZXIoRXhlY1N0YXRlJiBzdGF0ZSwK
IH0KIAogVGVzdERPTUpJVEJ5dGVTdHJpbmdOdWxsYWJsZUF0dHJET01KSVQ6OlRlc3RET01KSVRC
eXRlU3RyaW5nTnVsbGFibGVBdHRyRE9NSklUKCkKLSAgICA6IEpTQzo6RE9NSklUOjpHZXR0ZXJT
ZXR0ZXIoanNUZXN0RE9NSklUQnl0ZVN0cmluZ051bGxhYmxlQXR0ciwgbnVsbHB0ciwgSlNUZXN0
RE9NSklUOjppbmZvKCksIChKU0M6OlNwZWNTdHJpbmcgfCBKU0M6OlNwZWNPdGhlcikpCisgICAg
OiBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVyKGpzVGVzdERPTUpJVEJ5dGVTdHJpbmdOdWxsYWJs
ZUF0dHIsIG51bGxwdHIsIEpTVGVzdERPTUpJVDo6aW5mbygpLCBET01KSVQ6OklETFJlc3VsdFR5
cGVGaWx0ZXI8SURMTnVsbGFibGU8SURMQnl0ZVN0cmluZz4+KQogewogfQogCkBAIC0xMDkzLDcg
KzExMTMsNyBAQCBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0RE9NSklUVXN2U3RyaW5nTnVs
bGFibGVBdHRyR2V0dGVyKEV4ZWNTdGF0ZSYgc3RhdGUsCiB9CiAKIFRlc3RET01KSVRVc3ZTdHJp
bmdOdWxsYWJsZUF0dHJET01KSVQ6OlRlc3RET01KSVRVc3ZTdHJpbmdOdWxsYWJsZUF0dHJET01K
SVQoKQotICAgIDogSlNDOjpET01KSVQ6OkdldHRlclNldHRlcihqc1Rlc3RET01KSVRVc3ZTdHJp
bmdOdWxsYWJsZUF0dHIsIG51bGxwdHIsIEpTVGVzdERPTUpJVDo6aW5mbygpLCAoSlNDOjpTcGVj
U3RyaW5nIHwgSlNDOjpTcGVjT3RoZXIpKQorICAgIDogSlNDOjpET01KSVQ6OkdldHRlclNldHRl
cihqc1Rlc3RET01KSVRVc3ZTdHJpbmdOdWxsYWJsZUF0dHIsIG51bGxwdHIsIEpTVGVzdERPTUpJ
VDo6aW5mbygpLCBET01KSVQ6OklETFJlc3VsdFR5cGVGaWx0ZXI8SURMTnVsbGFibGU8SURMVVNW
U3RyaW5nPj4pCiB7CiB9CiAKQEAgLTExMjAsNyArMTE0MCw3IEBAIHN0YXRpYyBpbmxpbmUgSlNW
YWx1ZSBqc1Rlc3RET01KSVROb2RlTnVsbGFibGVBdHRyR2V0dGVyKEV4ZWNTdGF0ZSYgc3RhdGUs
IEpTVGVzCiB9CiAKIFRlc3RET01KSVROb2RlTnVsbGFibGVBdHRyRE9NSklUOjpUZXN0RE9NSklU
Tm9kZU51bGxhYmxlQXR0ckRPTUpJVCgpCi0gICAgOiBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVy
KGpzVGVzdERPTUpJVE5vZGVOdWxsYWJsZUF0dHIsIG51bGxwdHIsIEpTVGVzdERPTUpJVDo6aW5m
bygpLCBTcGVjSGVhcFRvcCkKKyAgICA6IEpTQzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIoanNUZXN0
RE9NSklUTm9kZU51bGxhYmxlQXR0ciwgbnVsbHB0ciwgSlNUZXN0RE9NSklUOjppbmZvKCksIERP
TUpJVDo6SURMUmVzdWx0VHlwZUZpbHRlcjxJRExOdWxsYWJsZTxJRExJbnRlcmZhY2U8Tm9kZT4+
PikKIHsKIH0KIApAQCAtMTE1OSw2ICsxMTc5LDM5IEBAIEpTVmFsdWUgSlNUZXN0RE9NSklUOjpn
ZXRDb25zdHJ1Y3RvcihWTSYgdm0sIGNvbnN0IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qp
CiAgICAgcmV0dXJuIGdldERPTUNvbnN0cnVjdG9yPEpTVGVzdERPTUpJVENvbnN0cnVjdG9yPih2
bSwgKmpzQ2FzdDxjb25zdCBKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCkpOwogfQog
CitzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0RE9NSklUUHJvdG90eXBl
RnVuY3Rpb25HZXRBdHRyaWJ1dGVDYWxsZXIoSlNDOjpFeGVjU3RhdGUqLCBKU1Rlc3RET01KSVQq
LCBKU0M6OlRocm93U2NvcGUmKTsKKworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rl
c3RET01KSVRQcm90b3R5cGVGdW5jdGlvbkdldEF0dHJpYnV0ZShFeGVjU3RhdGUqIHN0YXRlKQor
eworICAgIHJldHVybiBCaW5kaW5nQ2FsbGVyPEpTVGVzdERPTUpJVD46OmNhbGxPcGVyYXRpb248
anNUZXN0RE9NSklUUHJvdG90eXBlRnVuY3Rpb25HZXRBdHRyaWJ1dGVDYWxsZXI+KHN0YXRlLCAi
Z2V0QXR0cmlidXRlIik7Cit9CisKK3N0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBq
c1Rlc3RET01KSVRQcm90b3R5cGVGdW5jdGlvbkdldEF0dHJpYnV0ZUNhbGxlcihKU0M6OkV4ZWNT
dGF0ZSogc3RhdGUsIEpTVGVzdERPTUpJVCogY2FzdGVkVGhpcywgSlNDOjpUaHJvd1Njb3BlJiB0
aHJvd1Njb3BlKQoreworICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CisgICAgVU5VU0VEX1BBUkFN
KHRocm93U2NvcGUpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7Cisg
ICAgaWYgKFVOTElLRUxZKHN0YXRlLT5hcmd1bWVudENvdW50KCkgPCAxKSkKKyAgICAgICAgcmV0
dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgdGhyb3dTY29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1l
bnRzRXJyb3Ioc3RhdGUpKTsKKyAgICBhdXRvIG5hbWUgPSBjb252ZXJ0PElETERPTVN0cmluZz4o
KnN0YXRlLCBzdGF0ZS0+dW5jaGVja2VkQXJndW1lbnQoMCksIFN0cmluZ0NvbnZlcnNpb25Db25m
aWd1cmF0aW9uOjpOb3JtYWwpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwg
ZW5jb2RlZEpTVmFsdWUoKSk7CisgICAgSlNWYWx1ZSByZXN1bHQgPSB0b0pTPElETE51bGxhYmxl
PElETERPTVN0cmluZz4+KCpzdGF0ZSwgaW1wbC5nZXRBdHRyaWJ1dGUoV1RGTW92ZShuYW1lKSkp
OworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKK30KKworSlNDOjpFbmNvZGVk
SlNWYWx1ZSB1bnNhZmVKc1Rlc3RET01KSVRQcm90b3R5cGVGdW5jdGlvbkdldEF0dHJpYnV0ZShK
U0M6OkV4ZWNTdGF0ZSogc3RhdGUsIEpTVGVzdERPTUpJVCogY2FzdGVkVGhpcywgRE9NSklUOjpJ
RExKU0FyZ3VtZW50VHlwZTxJRExET01TdHJpbmc+IGVuY29kZWROYW1lKQoreworICAgIFVOVVNF
RF9QQVJBTShzdGF0ZSk7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgSlNDOjpOYXRp
dmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKCZ2bSwgc3RhdGUpOworICAgIGF1dG8gdGhyb3dTY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlz
LT53cmFwcGVkKCk7CisgICAgYXV0byBuYW1lID0gRE9NSklUOjpEaXJlY3RDb252ZXJ0ZXI8SURM
RE9NU3RyaW5nPjo6ZGlyZWN0Q29udmVydDxTdHJpbmdDb252ZXJzaW9uQ29uZmlndXJhdGlvbjo6
Tm9ybWFsPigqc3RhdGUsIGVuY29kZWROYW1lKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRo
cm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOworICAgIEpTVmFsdWUgcmVzdWx0ID0gdG9KUzxJ
RExOdWxsYWJsZTxJRExET01TdHJpbmc+Pigqc3RhdGUsIGltcGwuZ2V0QXR0cmlidXRlKFdURk1v
dmUobmFtZSkpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7Cit9CisKIHZv
aWQgSlNUZXN0RE9NSklUOjp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3Im
IHZpc2l0b3IpCiB7CiAgICAgYXV0byogdGhpc09iamVjdCA9IGpzQ2FzdDxKU1Rlc3RET01KSVQq
PihjZWxsKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9UZXN0RE9NSklULmlkbCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9U
ZXN0RE9NSklULmlkbAppbmRleCBiZTdlZDA0ZmY2M2RlNjg2YmM4NzY0ODI4MmI2YWFmNjRjMjc3
M2U3Li5hNTMxNDg4ZGM4MWMxYjg3N2YwZWUzZjk0ZjhhYWIzOGFhNjk0MzliIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdERPTUpJVC5pZGwKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RET01KSVQuaWRsCkBA
IC02Myw0ICs2Myw2IEBAIGludGVyZmFjZSBUZXN0RE9NSklUIDogTm9kZSB7CiAgICAgW0RPTUpJ
VF0gcmVhZG9ubHkgYXR0cmlidXRlIEJ5dGVTdHJpbmc/IGJ5dGVTdHJpbmdOdWxsYWJsZUF0dHI7
CiAgICAgW0RPTUpJVF0gcmVhZG9ubHkgYXR0cmlidXRlIFVTVlN0cmluZz8gdXN2U3RyaW5nTnVs
bGFibGVBdHRyOwogICAgIFtET01KSVRdIHJlYWRvbmx5IGF0dHJpYnV0ZSBOb2RlPyBub2RlTnVs
bGFibGVBdHRyOworCisgICAgW0RPTUpJVD1TaWduYXR1cmVdIERPTVN0cmluZz8gZ2V0QXR0cmli
dXRlKERPTVN0cmluZyBuYW1lKTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20v
RWxlbWVudC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5pZGwKaW5kZXggNzA1NjE3
MzhiOTc0OWE4ZDc0YTBmMTdjYTYzYTdmOGZmMTk1ZTFjNi4uNDg4Yzk5MWI0YmE2NmI1MjQ4ODM4
MDIxNjAxYzBjMGYxZGEzMjAyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1l
bnQuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmlkbApAQCAtMjYsMjAgKzI2
LDIwIEBACiBdIGludGVyZmFjZSBFbGVtZW50IDogTm9kZSB7CiAgICAgcmVhZG9ubHkgYXR0cmli
dXRlIERPTVN0cmluZz8gdGFnTmFtZTsKIAotICAgIERPTVN0cmluZz8gZ2V0QXR0cmlidXRlKERP
TVN0cmluZyBuYW1lKTsKKyAgICBbRE9NSklUPVNpZ25hdHVyZV0gRE9NU3RyaW5nPyBnZXRBdHRy
aWJ1dGUoRE9NU3RyaW5nIG5hbWUpOwogCiAgICAgW0NFUmVhY3Rpb25zLCBNYXlUaHJvd0V4Y2Vw
dGlvbl0gdm9pZCBzZXRBdHRyaWJ1dGUoRE9NU3RyaW5nIG5hbWUsIERPTVN0cmluZyB2YWx1ZSk7
CiAKICAgICBbQ0VSZWFjdGlvbnNdIHZvaWQgcmVtb3ZlQXR0cmlidXRlKERPTVN0cmluZyBuYW1l
KTsKLSAgICBBdHRyPyBnZXRBdHRyaWJ1dGVOb2RlKERPTVN0cmluZyBuYW1lKTsKKyAgICBbRE9N
SklUPVNpZ25hdHVyZV0gQXR0cj8gZ2V0QXR0cmlidXRlTm9kZShET01TdHJpbmcgbmFtZSk7CiAK
ICAgICBbQ0VSZWFjdGlvbnMsIE1heVRocm93RXhjZXB0aW9uXSBBdHRyPyBzZXRBdHRyaWJ1dGVO
b2RlKEF0dHIgbmV3QXR0cik7CiAgICAgW0NFUmVhY3Rpb25zLCBNYXlUaHJvd0V4Y2VwdGlvbl0g
QXR0ciByZW1vdmVBdHRyaWJ1dGVOb2RlKEF0dHIgb2xkQXR0cik7CiAKLSAgICBIVE1MQ29sbGVj
dGlvbiBnZXRFbGVtZW50c0J5VGFnTmFtZShET01TdHJpbmcgbmFtZSk7CisgICAgW0RPTUpJVD1T
aWduYXR1cmVdIEhUTUxDb2xsZWN0aW9uIGdldEVsZW1lbnRzQnlUYWdOYW1lKERPTVN0cmluZyBu
YW1lKTsKIAogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBOYW1lZE5vZGVNYXAgYXR0cmlidXRlczsK
LSAgICBib29sZWFuIGhhc0F0dHJpYnV0ZXMoKTsKKyAgICBbRE9NSklUPVNpZ25hdHVyZV0gYm9v
bGVhbiBoYXNBdHRyaWJ1dGVzKCk7CiAKICAgICBET01TdHJpbmc/IGdldEF0dHJpYnV0ZU5TKERP
TVN0cmluZz8gbmFtZXNwYWNlVVJJLCBET01TdHJpbmcgbG9jYWxOYW1lKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZG9taml0L0RPTUpJVEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuY3Bw
IGIvU291cmNlL1dlYkNvcmUvZG9taml0L0RPTUpJVEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuY3Bw
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4M2ZiYTg5NzEzYjg2NjNkNGQ4ZjI3ZWRj
YmY3NGFmZTYzMTgyZDMxLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbWppdC9ET01KSVRBYnN0cmFjdEhlYXBSZXBvc2l0b3J5
LmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDcwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAot
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQot
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAi
RE9NSklUQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5oIgotCi0jaW5jbHVkZSA8ZG9taml0L0RPTUpJ
VEFic3RyYWN0SGVhcC5oPgotI2luY2x1ZGUgPHd0Zi9EYXRhTG9nLmg+Ci0jaW5jbHVkZSA8d3Rm
L05ldmVyRGVzdHJveWVkLmg+Ci0KLSNpZiBFTkFCTEUoSklUKQotCi1uYW1lc3BhY2UgV2ViQ29y
ZSB7IG5hbWVzcGFjZSBET01KSVQgewotCi1zdGF0aWMgY29uc3QgYm9vbCB2ZXJib3NlID0gZmFs
c2U7Ci0KLUFic3RyYWN0SGVhcFJlcG9zaXRvcnk6OkFic3RyYWN0SGVhcFJlcG9zaXRvcnkoKQot
ewotICAgIEpTQzo6RE9NSklUOjpBYnN0cmFjdEhlYXAgRE9NSGVhcCgiRE9NIik7Ci0jZGVmaW5l
IERPTUpJVF9ERUZJTkVfSEVBUChuYW1lLCBwYXJlbnQpIEpTQzo6RE9NSklUOjpBYnN0cmFjdEhl
YXAgbmFtZSMjSGVhcCgjbmFtZSk7Ci0gICAgRE9NSklUX0FCU1RSQUNUX0hFQVBfTElTVChET01K
SVRfREVGSU5FX0hFQVApCi0jdW5kZWYgRE9NSklUX0RFRklORV9IRUFQCi0KLSNkZWZpbmUgRE9N
SklUX0lOSVRJQUxJWkVfSEVBUChuYW1lLCBwYXJlbnQpIG5hbWUjI0hlYXAuc2V0UGFyZW50KCZw
YXJlbnQjI0hlYXApOwotICAgIERPTUpJVF9BQlNUUkFDVF9IRUFQX0xJU1QoRE9NSklUX0lOSVRJ
QUxJWkVfSEVBUCkKLSN1bmRlZiBET01KSVRfSU5JVElBTElaRV9IRUFQCi0KLSAgICBET01IZWFw
LmNvbXB1dGUoMCk7Ci0KLSNkZWZpbmUgRE9NSklUX0lOSVRJQUxJWkVfTUVNQkVSKG5hbWUsIHBh
cmVudCkgbmFtZSA9IG5hbWUjI0hlYXAucmFuZ2UoKTsKLSAgICBET01KSVRfQUJTVFJBQ1RfSEVB
UF9MSVNUKERPTUpJVF9JTklUSUFMSVpFX01FTUJFUikKLSN1bmRlZiBET01KSVRfSU5JVElBTEla
RV9NRU1CRVIKLQotICAgIGlmICh2ZXJib3NlKSB7Ci0gICAgICAgIGRhdGFMb2coIkRPTUpJVCBI
ZWFwIFJlcG9zaXRvcnk6XG4iKTsKLSAgICAgICAgRE9NSGVhcC5kZWVwRHVtcChXVEY6OmRhdGFG
aWxlKCkpOwotICAgIH0KLX0KLQotY29uc3QgQWJzdHJhY3RIZWFwUmVwb3NpdG9yeSYgQWJzdHJh
Y3RIZWFwUmVwb3NpdG9yeTo6c2hhcmVkKCkKLXsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8
QWJzdHJhY3RIZWFwUmVwb3NpdG9yeT4gcmVwb3NpdG9yeTsKLSAgICByZXR1cm4gcmVwb3NpdG9y
eS5nZXQoKTsKLX0KLQotfSB9Ci0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZG9taml0L0RPTUpJVEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaCBiL1NvdXJjZS9XZWJDb3JlL2Rv
bWppdC9ET01KSVRBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDgxOTBhMWE5NGJiYzc5ZGU1ZjJlM2JlZDA5OTgzNDc5ZmE0YmQ2NTYuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9taml0L0RPTUpJVEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaAorKysgL2Rldi9udWxsCkBAIC0x
LDY2ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0
OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwot
Ci0jcHJhZ21hIG9uY2UKLQotI2luY2x1ZGUgPGRvbWppdC9ET01KSVRIZWFwUmFuZ2UuaD4KLSNp
bmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KLSNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUu
aD4KLQotI2lmIEVOQUJMRShKSVQpCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsgbmFtZXNwYWNlIERP
TUpJVCB7Ci0KLS8vIERlc2NyaWJlIHlvdXIgYWJzdHJhY3QgaGVhcCBoaWVyYXJjaHkgaGVyZS4K
LS8vIFYoQWJzdHJhY3RIZWFwTmFtZSwgUGFyZW50KQotI2RlZmluZSBET01KSVRfQUJTVFJBQ1Rf
SEVBUF9MSVNUKFYpIFwKLSAgICBWKE5vZGUsIERPTSkgXAotICAgIFYoTm9kZV9maXJzdENoaWxk
LCBOb2RlKSBcCi0gICAgVihOb2RlX2xhc3RDaGlsZCwgTm9kZSkgXAotICAgIFYoTm9kZV9wYXJl
bnROb2RlLCBOb2RlKSBcCi0gICAgVihOb2RlX25leHRTaWJsaW5nLCBOb2RlKSBcCi0gICAgVihO
b2RlX3ByZXZpb3VzU2libGluZywgTm9kZSkgXAotICAgIFYoTm9kZV9vd25lckRvY3VtZW50LCBO
b2RlKSBcCi0gICAgVihEb2N1bWVudCwgRE9NKSBcCi0gICAgVihEb2N1bWVudF9kb2N1bWVudEVs
ZW1lbnQsIERvY3VtZW50KSBcCi0KLQotY2xhc3MgQWJzdHJhY3RIZWFwUmVwb3NpdG9yeSB7Ci0g
ICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQWJzdHJhY3RIZWFwUmVwb3NpdG9yeSk7Ci1wdWJsaWM6
Ci0gICAgc3RhdGljIGNvbnN0IEFic3RyYWN0SGVhcFJlcG9zaXRvcnkmIHNoYXJlZCgpOwotCi0g
ICAgSlNDOjpET01KSVQ6OkhlYXBSYW5nZSBET007Ci0KLSNkZWZpbmUgRE9NSklUX0RFRklORV9N
RU1CRVIobmFtZSwgcGFyZW50KSBKU0M6OkRPTUpJVDo6SGVhcFJhbmdlIG5hbWU7Ci0gICAgRE9N
SklUX0FCU1RSQUNUX0hFQVBfTElTVChET01KSVRfREVGSU5FX01FTUJFUikKLSN1bmRlZiBET01K
SVRfREVGSU5FX01FTUJFUgotCi0gICAgQWJzdHJhY3RIZWFwUmVwb3NpdG9yeSgpOwotfTsKLQot
fSB9Ci0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9taml0L0RPTUpJVEFi
c3RyYWN0SGVhcFJlcG9zaXRvcnkueWFtbCBiL1NvdXJjZS9XZWJDb3JlL2RvbWppdC9ET01KSVRB
YnN0cmFjdEhlYXBSZXBvc2l0b3J5LnlhbWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTJjNTg0NWUwNzg2NzBkZGRh
Yzk3NzI5OTljY2I4ZWE3ZDAxYmRmMwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2RvbWppdC9ET01KSVRBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LnlhbWwKQEAgLTAsMCArMSwxMSBA
QAorRE9NOgorICAgIFRyZWU6CisgICAgICAgIE5vZGU6CisgICAgICAgICAgICAtIE5vZGVfZmly
c3RDaGlsZAorICAgICAgICAgICAgLSBOb2RlX2xhc3RDaGlsZAorICAgICAgICAgICAgLSBOb2Rl
X3BhcmVudE5vZGUKKyAgICAgICAgICAgIC0gTm9kZV9uZXh0U2libGluZworICAgICAgICAgICAg
LSBOb2RlX3ByZXZpb3VzU2libGluZworICAgICAgICAgICAgLSBOb2RlX293bmVyRG9jdW1lbnQK
KyAgICAgICAgRG9jdW1lbnQ6CisgICAgICAgICAgICAtIERvY3VtZW50X2RvY3VtZW50RWxlbWVu
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9taml0L0RPTUpJVElETENvbnZlcnQuaCBi
L1NvdXJjZS9XZWJDb3JlL2RvbWppdC9ET01KSVRJRExDb252ZXJ0LmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWUw
MGFiZmNjYjg3NmRlYTE4MzJmMWMyMGFlZTNlZDc4YjEzNjg0OQotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbWppdC9ET01KSVRJRExDb252ZXJ0LmgKQEAgLTAsMCArMSw0OSBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiSURMVHlwZXMuaCIKKyNp
bmNsdWRlIDxieXRlY29kZS9TcGVjdWxhdGVkVHlwZS5oPgorI2luY2x1ZGUgPGRvbWppdC9ET01K
SVRTaWduYXR1cmUuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeyBuYW1lc3BhY2UgRE9NSklUIHsK
KwordGVtcGxhdGU8dHlwZW5hbWUgSURMVHlwZT4KK3N0cnVjdCBEaXJlY3RDb252ZXJ0ZXI7CisK
K3RlbXBsYXRlPD4KK3N0cnVjdCBEaXJlY3RDb252ZXJ0ZXI8SURMRE9NU3RyaW5nPiB7CisgICAg
dGVtcGxhdGU8U3RyaW5nQ29udmVyc2lvbkNvbmZpZ3VyYXRpb24+CisgICAgc3RhdGljIFN0cmlu
ZyBkaXJlY3RDb252ZXJ0KEpTQzo6RXhlY1N0YXRlJiwgSlNDOjpKU1N0cmluZyopOworfTsKKwor
dGVtcGxhdGU8PgoraW5saW5lIFN0cmluZyBEaXJlY3RDb252ZXJ0ZXI8SURMRE9NU3RyaW5nPjo6
ZGlyZWN0Q29udmVydDxTdHJpbmdDb252ZXJzaW9uQ29uZmlndXJhdGlvbjo6Tm9ybWFsPihKU0M6
OkV4ZWNTdGF0ZSYgc3RhdGUsIEpTQzo6SlNTdHJpbmcqIHN0cmluZykKK3sKKyAgICByZXR1cm4g
c3RyaW5nLT52YWx1ZSgmc3RhdGUpOworfQorCit9IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2RvbWppdC9ET01KSVRJRExUeXBlLmggYi9Tb3VyY2UvV2ViQ29yZS9kb21qaXQvRE9NSklU
SURMVHlwZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY4OTFmYmM1MGVmNGMyZDc2NTRkOGU1ZDJiYzhkZWFlOTc2
ZGYxYWMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb21qaXQvRE9NSklUSURM
VHlwZS5oCkBAIC0wLDAgKzEsNDcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lu
Y2x1ZGUgIklETFR5cGVzLmgiCisjaW5jbHVkZSA8Ynl0ZWNvZGUvU3BlY3VsYXRlZFR5cGUuaD4K
KworbmFtZXNwYWNlIFdlYkNvcmUgeyBuYW1lc3BhY2UgRE9NSklUIHsKKwordGVtcGxhdGU8dHlw
ZW5hbWUgSURMVHlwZT4KK3N0cnVjdCBJRExKU0FyZ3VtZW50VHlwZVNlbGVjdDsKKwordGVtcGxh
dGU8PiBzdHJ1Y3QgSURMSlNBcmd1bWVudFR5cGVTZWxlY3Q8SURMQm9vbGVhbj4geyB0eXBlZGVm
IGJvb2wgdHlwZTsgfTsKK3RlbXBsYXRlPD4gc3RydWN0IElETEpTQXJndW1lbnRUeXBlU2VsZWN0
PElETEJ5dGU+IHsgdHlwZWRlZiBpbnQzMl90IHR5cGU7IH07Cit0ZW1wbGF0ZTw+IHN0cnVjdCBJ
RExKU0FyZ3VtZW50VHlwZVNlbGVjdDxJRExPY3RldD4geyB0eXBlZGVmIGludDMyX3QgdHlwZTsg
fTsKK3RlbXBsYXRlPD4gc3RydWN0IElETEpTQXJndW1lbnRUeXBlU2VsZWN0PElETFNob3J0PiB7
IHR5cGVkZWYgaW50MzJfdCB0eXBlOyB9OwordGVtcGxhdGU8PiBzdHJ1Y3QgSURMSlNBcmd1bWVu
dFR5cGVTZWxlY3Q8SURMVW5zaWduZWRTaG9ydD4geyB0eXBlZGVmIGludDMyX3QgdHlwZTsgfTsK
K3RlbXBsYXRlPD4gc3RydWN0IElETEpTQXJndW1lbnRUeXBlU2VsZWN0PElETExvbmc+IHsgdHlw
ZWRlZiBpbnQzMl90IHR5cGU7IH07Cit0ZW1wbGF0ZTw+IHN0cnVjdCBJRExKU0FyZ3VtZW50VHlw
ZVNlbGVjdDxJRExET01TdHJpbmc+IHsgdHlwZWRlZiBKU0M6OkpTU3RyaW5nKiB0eXBlOyB9Owor
Cit0ZW1wbGF0ZTx0eXBlbmFtZSBJRExUeXBlPgordXNpbmcgSURMSlNBcmd1bWVudFR5cGUgPSB0
eXBlbmFtZSBJRExKU0FyZ3VtZW50VHlwZVNlbGVjdDxJRExUeXBlPjo6dHlwZTsKKworfSB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb21qaXQvRE9NSklUSURMVHlwZUZpbHRlci5oIGIv
U291cmNlL1dlYkNvcmUvZG9taml0L0RPTUpJVElETFR5cGVGaWx0ZXIuaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44
YWY2MzZkZTliNmZlNDFjMzZjNzcwODcwMjQ2ZTg3YWJmZmI3ODAyCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYkNvcmUvZG9taml0L0RPTUpJVElETFR5cGVGaWx0ZXIuaApAQCAtMCwwICsx
LDcwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDxieXRlY29kZS9T
cGVjdWxhdGVkVHlwZS5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7IG5hbWVzcGFjZSBET01KSVQg
eworCit0ZW1wbGF0ZTx0eXBlbmFtZSBJRExUeXBlPgorc3RydWN0IElETEFyZ3VtZW50VHlwZUZp
bHRlclNlbGVjdDsKKwordGVtcGxhdGU8PiBzdHJ1Y3QgSURMQXJndW1lbnRUeXBlRmlsdGVyU2Vs
ZWN0PElETEJvb2xlYW4+IHsgc3RhdGljIGNvbnN0ZXhwciBKU0M6OlNwZWN1bGF0ZWRUeXBlIHZh
bHVlID0gSlNDOjpTcGVjQm9vbGVhbjsgfTsKK3RlbXBsYXRlPD4gc3RydWN0IElETEFyZ3VtZW50
VHlwZUZpbHRlclNlbGVjdDxJRExCeXRlPiB7IHN0YXRpYyBjb25zdGV4cHIgSlNDOjpTcGVjdWxh
dGVkVHlwZSB2YWx1ZSA9IEpTQzo6U3BlY0ludDMyT25seTsgfTsKK3RlbXBsYXRlPD4gc3RydWN0
IElETEFyZ3VtZW50VHlwZUZpbHRlclNlbGVjdDxJRExPY3RldD4geyBzdGF0aWMgY29uc3RleHBy
IEpTQzo6U3BlY3VsYXRlZFR5cGUgdmFsdWUgPSBKU0M6OlNwZWNJbnQzMk9ubHk7IH07Cit0ZW1w
bGF0ZTw+IHN0cnVjdCBJRExBcmd1bWVudFR5cGVGaWx0ZXJTZWxlY3Q8SURMU2hvcnQ+IHsgc3Rh
dGljIGNvbnN0ZXhwciBKU0M6OlNwZWN1bGF0ZWRUeXBlIHZhbHVlID0gSlNDOjpTcGVjSW50MzJP
bmx5OyB9OwordGVtcGxhdGU8PiBzdHJ1Y3QgSURMQXJndW1lbnRUeXBlRmlsdGVyU2VsZWN0PElE
TFVuc2lnbmVkU2hvcnQ+IHsgc3RhdGljIGNvbnN0ZXhwciBKU0M6OlNwZWN1bGF0ZWRUeXBlIHZh
bHVlID0gSlNDOjpTcGVjSW50MzJPbmx5OyB9OwordGVtcGxhdGU8PiBzdHJ1Y3QgSURMQXJndW1l
bnRUeXBlRmlsdGVyU2VsZWN0PElETExvbmc+IHsgc3RhdGljIGNvbnN0ZXhwciBKU0M6OlNwZWN1
bGF0ZWRUeXBlIHZhbHVlID0gSlNDOjpTcGVjSW50MzJPbmx5OyB9OwordGVtcGxhdGU8PiBzdHJ1
Y3QgSURMQXJndW1lbnRUeXBlRmlsdGVyU2VsZWN0PElETERPTVN0cmluZz4geyBzdGF0aWMgY29u
c3RleHByIEpTQzo6U3BlY3VsYXRlZFR5cGUgdmFsdWUgPSBKU0M6OlNwZWNTdHJpbmc7IH07CisK
K3RlbXBsYXRlPHR5cGVuYW1lIElETFR5cGU+Citjb25zdGV4cHIgSlNDOjpTcGVjdWxhdGVkVHlw
ZSBJRExBcmd1bWVudFR5cGVGaWx0ZXIgPSBJRExBcmd1bWVudFR5cGVGaWx0ZXJTZWxlY3Q8SURM
VHlwZT46OnZhbHVlOworCit0ZW1wbGF0ZTx0eXBlbmFtZSBJRExUeXBlPgorY29uc3RleHByIEpT
Qzo6U3BlY3VsYXRlZFR5cGUgSURMUmVzdWx0VHlwZUZpbHRlciA9IEpTQzo6U3BlY0hlYXBUb3A7
CisKK3RlbXBsYXRlPD4gY29uc3RleHByIEpTQzo6U3BlY3VsYXRlZFR5cGUgSURMUmVzdWx0VHlw
ZUZpbHRlcjxJRExBbnk+ID0gSlNDOjpTcGVjSGVhcFRvcDsKK3RlbXBsYXRlPD4gY29uc3RleHBy
IEpTQzo6U3BlY3VsYXRlZFR5cGUgSURMUmVzdWx0VHlwZUZpbHRlcjxJRExCb29sZWFuPiA9IEpT
Qzo6U3BlY0Jvb2xlYW47Cit0ZW1wbGF0ZTw+IGNvbnN0ZXhwciBKU0M6OlNwZWN1bGF0ZWRUeXBl
IElETFJlc3VsdFR5cGVGaWx0ZXI8SURMQnl0ZT4gPSBKU0M6OlNwZWNJbnQzMk9ubHk7Cit0ZW1w
bGF0ZTw+IGNvbnN0ZXhwciBKU0M6OlNwZWN1bGF0ZWRUeXBlIElETFJlc3VsdFR5cGVGaWx0ZXI8
SURMT2N0ZXQ+ID0gSlNDOjpTcGVjSW50MzJPbmx5OwordGVtcGxhdGU8PiBjb25zdGV4cHIgSlND
OjpTcGVjdWxhdGVkVHlwZSBJRExSZXN1bHRUeXBlRmlsdGVyPElETFNob3J0PiA9IEpTQzo6U3Bl
Y0ludDMyT25seTsKK3RlbXBsYXRlPD4gY29uc3RleHByIEpTQzo6U3BlY3VsYXRlZFR5cGUgSURM
UmVzdWx0VHlwZUZpbHRlcjxJRExVbnNpZ25lZFNob3J0PiA9IEpTQzo6U3BlY0ludDMyT25seTsK
K3RlbXBsYXRlPD4gY29uc3RleHByIEpTQzo6U3BlY3VsYXRlZFR5cGUgSURMUmVzdWx0VHlwZUZp
bHRlcjxJRExMb25nPiA9IEpTQzo6U3BlY0ludDMyT25seTsKK3RlbXBsYXRlPD4gY29uc3RleHBy
IEpTQzo6U3BlY3VsYXRlZFR5cGUgSURMUmVzdWx0VHlwZUZpbHRlcjxJRExVbnNpZ25lZExvbmc+
ID0gSlNDOjpTcGVjQnl0ZWNvZGVOdW1iZXI7Cit0ZW1wbGF0ZTw+IGNvbnN0ZXhwciBKU0M6OlNw
ZWN1bGF0ZWRUeXBlIElETFJlc3VsdFR5cGVGaWx0ZXI8SURMTG9uZ0xvbmc+ID0gSlNDOjpTcGVj
Qnl0ZWNvZGVOdW1iZXI7Cit0ZW1wbGF0ZTw+IGNvbnN0ZXhwciBKU0M6OlNwZWN1bGF0ZWRUeXBl
IElETFJlc3VsdFR5cGVGaWx0ZXI8SURMVW5zaWduZWRMb25nTG9uZz4gPSBKU0M6OlNwZWNCeXRl
Y29kZU51bWJlcjsKK3RlbXBsYXRlPD4gY29uc3RleHByIEpTQzo6U3BlY3VsYXRlZFR5cGUgSURM
UmVzdWx0VHlwZUZpbHRlcjxJRExGbG9hdD4gPSBKU0M6OlNwZWNCeXRlY29kZU51bWJlcjsKK3Rl
bXBsYXRlPD4gY29uc3RleHByIEpTQzo6U3BlY3VsYXRlZFR5cGUgSURMUmVzdWx0VHlwZUZpbHRl
cjxJRExVbnJlc3RyaWN0ZWRGbG9hdD4gPSBKU0M6OlNwZWNCeXRlY29kZU51bWJlcjsKK3RlbXBs
YXRlPD4gY29uc3RleHByIEpTQzo6U3BlY3VsYXRlZFR5cGUgSURMUmVzdWx0VHlwZUZpbHRlcjxJ
RExEb3VibGU+ID0gSlNDOjpTcGVjQnl0ZWNvZGVOdW1iZXI7Cit0ZW1wbGF0ZTw+IGNvbnN0ZXhw
ciBKU0M6OlNwZWN1bGF0ZWRUeXBlIElETFJlc3VsdFR5cGVGaWx0ZXI8SURMVW5yZXN0cmljdGVk
RG91YmxlPiA9IEpTQzo6U3BlY0J5dGVjb2RlTnVtYmVyOwordGVtcGxhdGU8PiBjb25zdGV4cHIg
SlNDOjpTcGVjdWxhdGVkVHlwZSBJRExSZXN1bHRUeXBlRmlsdGVyPElETERPTVN0cmluZz4gPSBK
U0M6OlNwZWNTdHJpbmc7Cit0ZW1wbGF0ZTw+IGNvbnN0ZXhwciBKU0M6OlNwZWN1bGF0ZWRUeXBl
IElETFJlc3VsdFR5cGVGaWx0ZXI8SURMQnl0ZVN0cmluZz4gPSBKU0M6OlNwZWNTdHJpbmc7Cit0
ZW1wbGF0ZTw+IGNvbnN0ZXhwciBKU0M6OlNwZWN1bGF0ZWRUeXBlIElETFJlc3VsdFR5cGVGaWx0
ZXI8SURMVVNWU3RyaW5nPiA9IEpTQzo6U3BlY1N0cmluZzsKKwordGVtcGxhdGU8dHlwZW5hbWUg
VD4KK2NvbnN0ZXhwciBKU0M6OlNwZWN1bGF0ZWRUeXBlIElETFJlc3VsdFR5cGVGaWx0ZXI8SURM
TnVsbGFibGU8VD4+ID0gSlNDOjpTcGVjT3RoZXIgfCBJRExSZXN1bHRUeXBlRmlsdGVyPFQ+Owor
Cit9IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbWppdC9KU0RvY3VtZW50RE9NSklU
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbWppdC9KU0RvY3VtZW50RE9NSklULmNwcAppbmRleCA5
YjQ4ZDlmZGE1OGE2MmQwN2ZiMjNhYWI0NTZiZjk0YjdlZDhmYzJmLi5iYmZlZTdkYzRiYjc4MmU3
M2NmMjdjOTc3YmMxODI5NGE1OTRiNmQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb21q
aXQvSlNEb2N1bWVudERPTUpJVC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9taml0L0pTRG9j
dW1lbnRET01KSVQuY3BwCkBAIC00OCw3ICs0OCw2IEBAIFJlZjxKU0M6OkRPTUpJVDo6UGF0Y2hw
b2ludD4gRG9jdW1lbnREb2N1bWVudEVsZW1lbnRET01KSVQ6OmNoZWNrRE9NKCkKIAogUmVmPEpT
Qzo6RE9NSklUOjpDYWxsRE9NR2V0dGVyUGF0Y2hwb2ludD4gRG9jdW1lbnREb2N1bWVudEVsZW1l
bnRET01KSVQ6OmNhbGxET01HZXR0ZXIoKQogewotICAgIGNvbnN0IGF1dG8mIGhlYXAgPSBET01K
SVQ6OkFic3RyYWN0SGVhcFJlcG9zaXRvcnk6OnNoYXJlZCgpOwogICAgIFJlZjxKU0M6OkRPTUpJ
VDo6Q2FsbERPTUdldHRlclBhdGNocG9pbnQ+IHBhdGNocG9pbnQgPSBKU0M6OkRPTUpJVDo6Q2Fs
bERPTUdldHRlclBhdGNocG9pbnQ6OmNyZWF0ZSgpOwogICAgIHBhdGNocG9pbnQtPm51bUdQU2Ny
YXRjaFJlZ2lzdGVycyA9IDE7CiAgICAgcGF0Y2hwb2ludC0+c2V0R2VuZXJhdG9yKFs9XShDQ2Fs
bEhlbHBlcnMmIGppdCwgSlNDOjpET01KSVQ6OlBhdGNocG9pbnRQYXJhbXMmIHBhcmFtcykgewpA
QCAtNzAsNyArNjksNyBAQCBSZWY8SlNDOjpET01KSVQ6OkNhbGxET01HZXR0ZXJQYXRjaHBvaW50
PiBEb2N1bWVudERvY3VtZW50RWxlbWVudERPTUpJVDo6Y2FsbERPTQogCiAgICAgICAgIHJldHVy
biBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0KCk7CiAgICAgfSk7Ci0gICAgcGF0Y2hwb2ludC0+ZWZm
ZWN0ID0gSlNDOjpET01KSVQ6OkVmZmVjdDo6Zm9yRGVmKGhlYXAuRG9jdW1lbnRfZG9jdW1lbnRF
bGVtZW50KTsKKyAgICBwYXRjaHBvaW50LT5lZmZlY3QgPSBKU0M6OkRPTUpJVDo6RWZmZWN0Ojpm
b3JEZWYoRE9NSklUOjpBYnN0cmFjdEhlYXBSZXBvc2l0b3J5OjpEb2N1bWVudF9kb2N1bWVudEVs
ZW1lbnQpOwogICAgIHJldHVybiBwYXRjaHBvaW50OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9kb21qaXQvSlNOb2RlRE9NSklULmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbWppdC9K
U05vZGVET01KSVQuY3BwCmluZGV4IDFkNzkwMWVjNDFkN2FjZWYxZDBkNzhmNjEzMjZmYmU4YTEz
YTkxYmYuLmRiMzEwZWEzNDUyODQ5MTQyNDI4ZDNkNjE2ZjgxYjJjNjdjNTE2NTUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2RvbWppdC9KU05vZGVET01KSVQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2RvbWppdC9KU05vZGVET01KSVQuY3BwCkBAIC04Myw5ICs4Myw4IEBAIFJlZjxKU0M6
OkRPTUpJVDo6UGF0Y2hwb2ludD4gTm9kZUZpcnN0Q2hpbGRET01KSVQ6OmNoZWNrRE9NKCkKIAog
UmVmPEpTQzo6RE9NSklUOjpDYWxsRE9NR2V0dGVyUGF0Y2hwb2ludD4gTm9kZUZpcnN0Q2hpbGRE
T01KSVQ6OmNhbGxET01HZXR0ZXIoKQogewotICAgIGNvbnN0IGF1dG8mIGhlYXAgPSBET01KSVQ6
OkFic3RyYWN0SGVhcFJlcG9zaXRvcnk6OnNoYXJlZCgpOwogICAgIGF1dG8gcGF0Y2hwb2ludCA9
IGNyZWF0ZUNhbGxET01HZXR0ZXJGb3JPZmZzZXRBY2Nlc3M8Tm9kZT4oQ0FTVF9PRkZTRVQoTm9k
ZSosIENvbnRhaW5lck5vZGUqKSArIENvbnRhaW5lck5vZGU6OmZpcnN0Q2hpbGRNZW1vcnlPZmZz
ZXQoKSwgSXNDb250YWluZXJHdWFyZFJlcXVpcmVtZW50OjpSZXF1aXJlZCk7Ci0gICAgcGF0Y2hw
b2ludC0+ZWZmZWN0ID0gSlNDOjpET01KSVQ6OkVmZmVjdDo6Zm9yRGVmKGhlYXAuTm9kZV9maXJz
dENoaWxkKTsKKyAgICBwYXRjaHBvaW50LT5lZmZlY3QgPSBKU0M6OkRPTUpJVDo6RWZmZWN0Ojpm
b3JEZWYoRE9NSklUOjpBYnN0cmFjdEhlYXBSZXBvc2l0b3J5OjpOb2RlX2ZpcnN0Q2hpbGQpOwog
ICAgIHJldHVybiBwYXRjaHBvaW50OwogfQogCkBAIC05Niw5ICs5NSw4IEBAIFJlZjxKU0M6OkRP
TUpJVDo6UGF0Y2hwb2ludD4gTm9kZUxhc3RDaGlsZERPTUpJVDo6Y2hlY2tET00oKQogCiBSZWY8
SlNDOjpET01KSVQ6OkNhbGxET01HZXR0ZXJQYXRjaHBvaW50PiBOb2RlTGFzdENoaWxkRE9NSklU
OjpjYWxsRE9NR2V0dGVyKCkKIHsKLSAgICBjb25zdCBhdXRvJiBoZWFwID0gRE9NSklUOjpBYnN0
cmFjdEhlYXBSZXBvc2l0b3J5OjpzaGFyZWQoKTsKICAgICBhdXRvIHBhdGNocG9pbnQgPSBjcmVh
dGVDYWxsRE9NR2V0dGVyRm9yT2Zmc2V0QWNjZXNzPE5vZGU+KENBU1RfT0ZGU0VUKE5vZGUqLCBD
b250YWluZXJOb2RlKikgKyBDb250YWluZXJOb2RlOjpsYXN0Q2hpbGRNZW1vcnlPZmZzZXQoKSwg
SXNDb250YWluZXJHdWFyZFJlcXVpcmVtZW50OjpSZXF1aXJlZCk7Ci0gICAgcGF0Y2hwb2ludC0+
ZWZmZWN0ID0gSlNDOjpET01KSVQ6OkVmZmVjdDo6Zm9yRGVmKGhlYXAuTm9kZV9sYXN0Q2hpbGQp
OworICAgIHBhdGNocG9pbnQtPmVmZmVjdCA9IEpTQzo6RE9NSklUOjpFZmZlY3Q6OmZvckRlZihE
T01KSVQ6OkFic3RyYWN0SGVhcFJlcG9zaXRvcnk6Ok5vZGVfbGFzdENoaWxkKTsKICAgICByZXR1
cm4gcGF0Y2hwb2ludDsKIH0KIApAQCAtMTA5LDkgKzEwNyw4IEBAIFJlZjxKU0M6OkRPTUpJVDo6
UGF0Y2hwb2ludD4gTm9kZU5leHRTaWJsaW5nRE9NSklUOjpjaGVja0RPTSgpCiAKIFJlZjxKU0M6
OkRPTUpJVDo6Q2FsbERPTUdldHRlclBhdGNocG9pbnQ+IE5vZGVOZXh0U2libGluZ0RPTUpJVDo6
Y2FsbERPTUdldHRlcigpCiB7Ci0gICAgY29uc3QgYXV0byYgaGVhcCA9IERPTUpJVDo6QWJzdHJh
Y3RIZWFwUmVwb3NpdG9yeTo6c2hhcmVkKCk7CiAgICAgYXV0byBwYXRjaHBvaW50ID0gY3JlYXRl
Q2FsbERPTUdldHRlckZvck9mZnNldEFjY2VzczxOb2RlPihOb2RlOjpuZXh0U2libGluZ01lbW9y
eU9mZnNldCgpLCBJc0NvbnRhaW5lckd1YXJkUmVxdWlyZW1lbnQ6Ok5vdFJlcXVpcmVkKTsKLSAg
ICBwYXRjaHBvaW50LT5lZmZlY3QgPSBKU0M6OkRPTUpJVDo6RWZmZWN0Ojpmb3JEZWYoaGVhcC5O
b2RlX25leHRTaWJsaW5nKTsKKyAgICBwYXRjaHBvaW50LT5lZmZlY3QgPSBKU0M6OkRPTUpJVDo6
RWZmZWN0Ojpmb3JEZWYoRE9NSklUOjpBYnN0cmFjdEhlYXBSZXBvc2l0b3J5OjpOb2RlX25leHRT
aWJsaW5nKTsKICAgICByZXR1cm4gcGF0Y2hwb2ludDsKIH0KIApAQCAtMTIyLDkgKzExOSw4IEBA
IFJlZjxKU0M6OkRPTUpJVDo6UGF0Y2hwb2ludD4gTm9kZVByZXZpb3VzU2libGluZ0RPTUpJVDo6
Y2hlY2tET00oKQogCiBSZWY8SlNDOjpET01KSVQ6OkNhbGxET01HZXR0ZXJQYXRjaHBvaW50PiBO
b2RlUHJldmlvdXNTaWJsaW5nRE9NSklUOjpjYWxsRE9NR2V0dGVyKCkKIHsKLSAgICBjb25zdCBh
dXRvJiBoZWFwID0gRE9NSklUOjpBYnN0cmFjdEhlYXBSZXBvc2l0b3J5OjpzaGFyZWQoKTsKICAg
ICBhdXRvIHBhdGNocG9pbnQgPSBjcmVhdGVDYWxsRE9NR2V0dGVyRm9yT2Zmc2V0QWNjZXNzPE5v
ZGU+KE5vZGU6OnByZXZpb3VzU2libGluZ01lbW9yeU9mZnNldCgpLCBJc0NvbnRhaW5lckd1YXJk
UmVxdWlyZW1lbnQ6Ok5vdFJlcXVpcmVkKTsKLSAgICBwYXRjaHBvaW50LT5lZmZlY3QgPSBKU0M6
OkRPTUpJVDo6RWZmZWN0Ojpmb3JEZWYoaGVhcC5Ob2RlX3ByZXZpb3VzU2libGluZyk7CisgICAg
cGF0Y2hwb2ludC0+ZWZmZWN0ID0gSlNDOjpET01KSVQ6OkVmZmVjdDo6Zm9yRGVmKERPTUpJVDo6
QWJzdHJhY3RIZWFwUmVwb3NpdG9yeTo6Tm9kZV9wcmV2aW91c1NpYmxpbmcpOwogICAgIHJldHVy
biBwYXRjaHBvaW50OwogfQogCkBAIC0xMzUsOSArMTMxLDggQEAgUmVmPEpTQzo6RE9NSklUOjpQ
YXRjaHBvaW50PiBOb2RlUGFyZW50Tm9kZURPTUpJVDo6Y2hlY2tET00oKQogCiBSZWY8SlNDOjpE
T01KSVQ6OkNhbGxET01HZXR0ZXJQYXRjaHBvaW50PiBOb2RlUGFyZW50Tm9kZURPTUpJVDo6Y2Fs
bERPTUdldHRlcigpCiB7Ci0gICAgY29uc3QgYXV0byYgaGVhcCA9IERPTUpJVDo6QWJzdHJhY3RI
ZWFwUmVwb3NpdG9yeTo6c2hhcmVkKCk7CiAgICAgYXV0byBwYXRjaHBvaW50ID0gY3JlYXRlQ2Fs
bERPTUdldHRlckZvck9mZnNldEFjY2VzczxDb250YWluZXJOb2RlPihOb2RlOjpwYXJlbnROb2Rl
TWVtb3J5T2Zmc2V0KCksIElzQ29udGFpbmVyR3VhcmRSZXF1aXJlbWVudDo6Tm90UmVxdWlyZWQp
OwotICAgIHBhdGNocG9pbnQtPmVmZmVjdCA9IEpTQzo6RE9NSklUOjpFZmZlY3Q6OmZvckRlZiho
ZWFwLk5vZGVfcGFyZW50Tm9kZSk7CisgICAgcGF0Y2hwb2ludC0+ZWZmZWN0ID0gSlNDOjpET01K
SVQ6OkVmZmVjdDo6Zm9yRGVmKERPTUpJVDo6QWJzdHJhY3RIZWFwUmVwb3NpdG9yeTo6Tm9kZV9w
YXJlbnROb2RlKTsKICAgICByZXR1cm4gcGF0Y2hwb2ludDsKIH0KIApAQCAtMTY5LDcgKzE2NCw2
IEBAIFJlZjxKU0M6OkRPTUpJVDo6UGF0Y2hwb2ludD4gTm9kZU93bmVyRG9jdW1lbnRET01KSVQ6
OmNoZWNrRE9NKCkKIAogUmVmPEpTQzo6RE9NSklUOjpDYWxsRE9NR2V0dGVyUGF0Y2hwb2ludD4g
Tm9kZU93bmVyRG9jdW1lbnRET01KSVQ6OmNhbGxET01HZXR0ZXIoKQogewotICAgIGNvbnN0IGF1
dG8mIGhlYXAgPSBET01KSVQ6OkFic3RyYWN0SGVhcFJlcG9zaXRvcnk6OnNoYXJlZCgpOwogICAg
IFJlZjxKU0M6OkRPTUpJVDo6Q2FsbERPTUdldHRlclBhdGNocG9pbnQ+IHBhdGNocG9pbnQgPSBK
U0M6OkRPTUpJVDo6Q2FsbERPTUdldHRlclBhdGNocG9pbnQ6OmNyZWF0ZSgpOwogICAgIHBhdGNo
cG9pbnQtPm51bUdQU2NyYXRjaFJlZ2lzdGVycyA9IDE7CiAgICAgcGF0Y2hwb2ludC0+c2V0R2Vu
ZXJhdG9yKFs9XShDQ2FsbEhlbHBlcnMmIGppdCwgSlNDOjpET01KSVQ6OlBhdGNocG9pbnRQYXJh
bXMmIHBhcmFtcykgewpAQCAtMTkxLDcgKzE4NSw3IEBAIFJlZjxKU0M6OkRPTUpJVDo6Q2FsbERP
TUdldHRlclBhdGNocG9pbnQ+IE5vZGVPd25lckRvY3VtZW50RE9NSklUOjpjYWxsRE9NR2V0dGVy
CiAgICAgICAgIGRvbmUubGluaygmaml0KTsKICAgICAgICAgcmV0dXJuIENDYWxsSGVscGVyczo6
SnVtcExpc3QoKTsKICAgICB9KTsKLSAgICBwYXRjaHBvaW50LT5lZmZlY3QgPSBKU0M6OkRPTUpJ
VDo6RWZmZWN0Ojpmb3JEZWYoaGVhcC5Ob2RlX293bmVyRG9jdW1lbnQpOworICAgIHBhdGNocG9p
bnQtPmVmZmVjdCA9IEpTQzo6RE9NSklUOjpFZmZlY3Q6OmZvckRlZihET01KSVQ6OkFic3RyYWN0
SGVhcFJlcG9zaXRvcnk6Ok5vZGVfb3duZXJEb2N1bWVudCk7CiAgICAgcmV0dXJuIHBhdGNocG9p
bnQ7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbWppdC9nZW5lcmF0ZS1hYnN0
cmFjdC1oZWFwLnJiIGIvU291cmNlL1dlYkNvcmUvZG9taml0L2dlbmVyYXRlLWFic3RyYWN0LWhl
YXAucmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uYjc0MTJlODVkNjlmNDkxYTJlYWFiYWE2MTc4ZjFiMjVhMDJkMDli
NAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbWppdC9nZW5lcmF0ZS1hYnN0
cmFjdC1oZWFwLnJiCkBAIC0wLDAgKzEsMTY1IEBACisjIS91c3IvYmluL2VudiBydWJ5CisjIC0q
LSBjb2Rpbmc6IHV0Zi04IC0qLQorIyBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6
CisjIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
IyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisjIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorIyBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisjIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworIyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisjIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisjIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworIyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorIyBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorIyBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisjIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KworcmVxdWlyZSAieWFtbCIKKworY2xhc3MgSGVhcFJhbmdlCisgICAgYXR0cl9yZWFkZXIgOmZp
cnN0LCA6bGFzdAorICAgIGRlZiBpbml0aWFsaXplKGZpcnN0LCBsYXN0KQorICAgICAgICBAZmly
c3QgPSBmaXJzdAorICAgICAgICBAbGFzdCA9IGxhc3QKKyAgICBlbmQKK2VuZAorCitjbGFzcyBB
YnN0cmFjdEhlYXAKKyAgICBhdHRyX3JlYWRlciA6cmFuZ2UsIDpuYW1lLCA6cGFyZW50CisgICAg
ZGVmIGluaXRpYWxpemUobmFtZSwgdHJlZSkKKyAgICAgICAgQG5hbWUgPSBuYW1lCisgICAgICAg
IEBwYXJlbnQgPSBuaWwKKyAgICAgICAgaWYgdHJlZS5uaWw/CisgICAgICAgICAgICBAY2hpbGRy
ZW4gPSBbXQorICAgICAgICBlbHNlCisgICAgICAgICAgICBAY2hpbGRyZW4gPSB0cmVlLm1hcCB7
fGtleSwgdmFsdWV8IEFic3RyYWN0SGVhcC5uZXcoa2V5LCB2YWx1ZSkgfQorICAgICAgICBlbmQK
KyAgICAgICAgQHJhbmdlID0gbmlsCisgICAgZW5kCisKKyAgICBkZWYgc2V0UGFyZW50KHBhcmVu
dCkKKyAgICAgICAgcGFyZW50LmNoaWxkcmVuLnB1c2goc2VsZikKKyAgICAgICAgQHBhcmVudCA9
IHBhcmVudAorICAgIGVuZAorCisgICAgZGVmIGNvbXB1dGUoc3RhcnQpCisgICAgICAgIGN1cnJl
bnQgPSBzdGFydAorICAgICAgICBpZiBAY2hpbGRyZW4uZW1wdHk/CisgICAgICAgICAgICBAcmFu
Z2UgPSBIZWFwUmFuZ2UubmV3KHN0YXJ0LCBjdXJyZW50ICsgMSkKKyAgICAgICAgICAgIHJldHVy
bgorICAgICAgICBlbmQKKworICAgICAgICBAY2hpbGRyZW4uZWFjaCB7fGNoaWxkfAorICAgICAg
ICAgICAgY2hpbGQuY29tcHV0ZShjdXJyZW50KQorICAgICAgICAgICAgY3VycmVudCA9IGNoaWxk
LnJhbmdlLmxhc3QKKyAgICAgICAgfQorCisgICAgICAgIEByYW5nZSA9IEhlYXBSYW5nZS5uZXco
c3RhcnQsIGN1cnJlbnQpCisgICAgZW5kCisKKyAgICBkZWYgZHVtcCBvdXRwdXQKKyAgICAgICAg
c2hhbGxvd0R1bXAob3V0cHV0KQorICAgICAgICBpZiBAcGFyZW50CisgICAgICAgICAgICBvdXRw
dXQucHJpbnQgIi0+ICIKKyAgICAgICAgICAgIEBwYXJlbnQuZHVtcChvdXRwdXQpCisgICAgICAg
IGVuZAorICAgIGVuZAorCisgICAgZGVmIHNoYWxsb3dEdW1wKG91dHB1dCkKKyAgICAgICAgb3V0
cHV0LnByaW50ICIje0BuYW1lfTwje0ByYW5nZS5maXJzdH0sI3tAcmFuZ2UubGFzdH0+IgorICAg
IGVuZAorCisgICAgZGVmIGRlZXBEdW1wIG91dHB1dCwgaW5kZW50CisgICAgICAgIHByaW50SW5k
ZW50KG91dHB1dCwgaW5kZW50KQorICAgICAgICBzaGFsbG93RHVtcChvdXRwdXQpCisgICAgICAg
IGlmIEBjaGlsZHJlbi5lbXB0eT8KKyAgICAgICAgICAgIG91dHB1dC5wcmludCAiXG4iCisgICAg
ICAgICAgICByZXR1cm4KKyAgICAgICAgZW5kCisKKyAgICAgICAgb3V0cHV0LnByaW50ICI6XG4i
CisgICAgICAgIEBjaGlsZHJlbi5lYWNoIHt8Y2hpbGR8CisgICAgICAgICAgICBjaGlsZC5kZWVw
RHVtcChvdXRwdXQsIGluZGVudCArIDEpCisgICAgICAgIH0KKyAgICBlbmQKKworICAgIGRlZiBn
ZW5lcmF0ZSBvdXRwdXQKKyAgICAgICAgb3V0cHV0LnB1dHMgImNvbnN0ZXhwciBKU0M6OkRPTUpJ
VDo6SGVhcFJhbmdlICN7QG5hbWV9KEpTQzo6RE9NSklUOjpIZWFwUmFuZ2U6OkNvbnN0RXhwciwg
I3tAcmFuZ2UuZmlyc3R9LCAje0ByYW5nZS5sYXN0fSk7IgorICAgICAgICBAY2hpbGRyZW4uZWFj
aCB7fGNoaWxkfAorICAgICAgICAgICAgY2hpbGQuZ2VuZXJhdGUob3V0cHV0KQorICAgICAgICB9
CisgICAgZW5kCisKK3ByaXZhdGUKKyAgICBkZWYgcHJpbnRJbmRlbnQgb3V0cHV0LCBpbmRlbnQK
KyAgICAgICAgaW5kZW50LnRpbWVzIHsKKyAgICAgICAgICAgIG91dHB1dC5wcmludCAiICAgICIK
KyAgICAgICAgfQorICAgIGVuZAorZW5kCisKK2hlYWRlciA9IDw8LUVPUworLyoKKyAqIENvcHly
aWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisg
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisvLyBBdXRvLWdlbmVyYXRlZCBmaWxlLiBE
byBub3QgbW9kaWZ5LgorCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPGRvbWppdC9ET01KSVRI
ZWFwUmFuZ2UuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeyBuYW1lc3BhY2UgRE9NSklUIHsgbmFt
ZXNwYWNlIEFic3RyYWN0SGVhcFJlcG9zaXRvcnkgeworRU9TCisKK2Zvb3RlciA9IDw8LUVPUwor
fSB9IH0KK0VPUworCiskaW5wdXRGaWxlTmFtZSA9IEFSR1Yuc2hpZnQKKyRvdXRwdXRGaWxlTmFt
ZSA9IEFSR1Yuc2hpZnQKK0ZpbGUub3Blbigkb3V0cHV0RmlsZU5hbWUsICJ3Iikge3xvdXRwdXR8
CisgICAgRmlsZS5vcGVuKCRpbnB1dEZpbGVOYW1lLCAicmIiKSB7fGZpbGV8CisgICAgICAgIHRy
ZWUgPSBZQU1MOjpsb2FkKGZpbGUucmVhZCgpKQorICAgICAgICBoZWFwID0gdHJlZS5tYXAge3xr
ZXksIHZhbHVlfAorICAgICAgICAgICAgQWJzdHJhY3RIZWFwLm5ldyhrZXksIHZhbHVlKQorICAg
ICAgICB9LmZpcnN0CisgICAgICAgIGhlYXAuY29tcHV0ZSgwKQorCisgICAgICAgIG91dHB1dC5w
cmludChoZWFkZXIpCisgICAgICAgIG91dHB1dC5wdXRzKCIvKiBET01KSVQgQWJzdHJhY3QgSGVh
cCBUcmVlLiIpCisgICAgICAgIGhlYXAuZGVlcER1bXAob3V0cHV0LCAwKQorICAgICAgICBvdXRw
dXQucHV0cygiKi8iKQorICAgICAgICBoZWFwLmdlbmVyYXRlKG91dHB1dCkKKyAgICAgICAgb3V0
cHV0LnByaW50KGZvb3RlcikKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNDdiZGFiNDE0OGUyZWIyZTA4NDQ5
ZmQ4YzI3NTljYzZkYjhmM2NmYS4uMDIxZmU4NmUyMTE2NWY2NWQ1OTdlYjdjYzBiZDNkZDJhNjdl
YWFlYiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3Rz
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDE2LTExLTAyICBZdXN1a2UgU3V6dWtpICA8
dXRhdGFuZS50ZWFAZ21haWwuY29tPgorCisgICAgICAgIFtET01KSVRdIEFkZCBET01KSVQ6OlNp
Z25hdHVyZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTYyOTgwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
KiBqcy9kb20vZG9taml0LWFjY2Vzc29yLWxpY20uaHRtbDoKKyAgICAgICAgKiBqcy9kb20vZG9t
aml0LWZ1bmN0aW9uLWVmZmVjdC1zaG91bGQtb3ZlcmxhcC13aXRoLWNhbGwtZXhwZWN0ZWQudHh0
OiBBZGRlZC4KKyAgICAgICAgKiBqcy9kb20vZG9taml0LWZ1bmN0aW9uLWVmZmVjdC1zaG91bGQt
b3ZlcmxhcC13aXRoLWNhbGwuaHRtbDogQWRkZWQuCisgICAgICAgICoganMvZG9tL2RvbWppdC1m
dW5jdGlvbi1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGpzL2RvbS9kb21qaXQtZnVu
Y3Rpb24tbGljbS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGpzL2RvbS9kb21qaXQt
ZnVuY3Rpb24tbGljbS5odG1sOiBDb3BpZWQgZnJvbSBMYXlvdXRUZXN0cy9qcy9kb20vZG9taml0
LWFjY2Vzc29yLWxpY20uaHRtbC4KKyAgICAgICAgKiBqcy9kb20vZG9taml0LWZ1bmN0aW9uLXR5
cGUtY29udHJhZGljdGlvbi1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGpzL2RvbS9k
b21qaXQtZnVuY3Rpb24tdHlwZS1jb250cmFkaWN0aW9uLmh0bWw6IENvcGllZCBmcm9tIExheW91
dFRlc3RzL2pzL2RvbS9kb21qaXQtYWNjZXNzb3ItbGljbS5odG1sLgorICAgICAgICAqIGpzL2Rv
bS9kb21qaXQtZnVuY3Rpb24tdHlwZS1mYWlsdXJlLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAg
ICAgICoganMvZG9tL2RvbWppdC1mdW5jdGlvbi10eXBlLWZhaWx1cmUuaHRtbDogQ29waWVkIGZy
b20gTGF5b3V0VGVzdHMvanMvZG9tL2RvbWppdC1hY2Nlc3Nvci1saWNtLmh0bWwuCisgICAgICAg
ICoganMvZG9tL2RvbWppdC1mdW5jdGlvbi5odG1sOiBBZGRlZC4KKwogMjAxNi0xMS0wMSAgQnJh
ZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CiAKICAgICAgICAgSW5kZXhlZERCIDIuMDog
U3VwcG9ydCBJREJJbmRleCBnZXRBbGwvZ2V0QWxsS2V5cy4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2pzL2RvbS9kb21qaXQtYWNjZXNzb3ItbGljbS5odG1sIGIvTGF5b3V0VGVzdHMvanMvZG9t
L2RvbWppdC1hY2Nlc3Nvci1saWNtLmh0bWwKaW5kZXggZTU2M2ViYTg5ZmZjZGEyOTFiNTI0ZGNk
Zjc1MGUyYTMwNmFlMzIwNS4uNDBkNTU2MGRhMDUzOWNiZjA4NGE5ZTFkMWVmM2ZlM2YxZGMzNTQ0
ZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvanMvZG9tL2RvbWppdC1hY2Nlc3Nvci1saWNtLmh0
bWwKKysrIGIvTGF5b3V0VGVzdHMvanMvZG9tL2RvbWppdC1hY2Nlc3Nvci1saWNtLmh0bWwKQEAg
LTEsMTQgKzEsMyBAQAotPCFET0NUWVBFIEhUTUw+Ci08aHRtbCBsYW5nPSJlbiI+Ci08aGVhZD4K
LTxtZXRhIGNoYXJzZXQ9IlVURi04Ij4KLTwvaGVhZD4KLTxib2R5PgotPHNjcmlwdD4KLQotPC9z
Y3JpcHQ+Ci08L2JvZHk+Ci08L2h0bWw+CiA8IURPQ1RZUEUgaHRtbD4KIDxodG1sPgogPGhlYWQ+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9kb20vZG9taml0LWZ1bmN0aW9uLWVmZmVjdC1z
aG91bGQtb3ZlcmxhcC13aXRoLWNhbGwtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvanMvZG9t
L2RvbWppdC1mdW5jdGlvbi1lZmZlY3Qtc2hvdWxkLW92ZXJsYXAtd2l0aC1jYWxsLWV4cGVjdGVk
LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4xMWRjMTk2YTMyZTI4OGMxMmY1MTQ1NjFjZmMyMTRkMjllYjljODE3
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMvZG9tL2RvbWppdC1mdW5jdGlvbi1l
ZmZlY3Qtc2hvdWxkLW92ZXJsYXAtd2l0aC1jYWxsLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDEw
IEBACitUZXN0IGZ1bmN0aW9uIGNhbGxzIHNob3VsZCBvdmVybGFwIHdpdGggZWZmZWN0cyBvZiBE
T01KSVQgZnVuY3Rpb25zLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2Yg
IlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyB0
ZXN0KCkgaXMgdHJ1ZQorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENP
TVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL2RvbS9kb21qaXQtZnVuY3Rpb24t
ZWZmZWN0LXNob3VsZC1vdmVybGFwLXdpdGgtY2FsbC5odG1sIGIvTGF5b3V0VGVzdHMvanMvZG9t
L2RvbWppdC1mdW5jdGlvbi1lZmZlY3Qtc2hvdWxkLW92ZXJsYXAtd2l0aC1jYWxsLmh0bWwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uMjhjYjM5MmIyOTQxYmJiOGQzMzFhNzkzMzFkNThjM2ZhNTgzMDVlNQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2pzL2RvbS9kb21qaXQtZnVuY3Rpb24tZWZmZWN0LXNo
b3VsZC1vdmVybGFwLXdpdGgtY2FsbC5odG1sCkBAIC0wLDAgKzEsMzMgQEAKKzwhRE9DVFlQRSBo
dG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVz
dC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJ0YXJnZXQiPjwv
ZGl2PgorPC9kaXY+CisKKzxzY3JpcHQ+CitkZXNjcmlwdGlvbignVGVzdCBmdW5jdGlvbiBjYWxs
cyBzaG91bGQgb3ZlcmxhcCB3aXRoIGVmZmVjdHMgb2YgRE9NSklUIGZ1bmN0aW9ucy4nKTsKKwor
ZnVuY3Rpb24gdGVzdCgpCit7CisgICAgdmFyIHRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCd0YXJnZXQnKTsKKyAgICB0YXJnZXQuc2V0QXR0cmlidXRlKCJjb2NvYSIsICIwIik7Cisg
ICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxZTQ7ICsraSkgeworICAgICAgICB2YXIgcmV0ID0gdGFy
Z2V0LmdldEF0dHJpYnV0ZSgiY29jb2EiKTsKKyAgICAgICAgaWYgKHJldCAhPT0gU3RyaW5nKGkp
KQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB0YXJnZXQuc2V0QXR0cmlidXRl
KCJjb2NvYSIsIFN0cmluZyhpICsgMSkpOworICAgICAgICB2YXIgcmV0ID0gdGFyZ2V0LmdldEF0
dHJpYnV0ZSgiY29jb2EiKTsKKyAgICAgICAgaWYgKHJldCA9PT0gU3RyaW5nKGkpKQorICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsKK30KKworc2hvdWxk
QmVUcnVlKGB0ZXN0KClgKTsKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNl
cy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvanMvZG9tL2RvbWppdC1mdW5jdGlvbi1leHBlY3RlZC50eHQgYi9MYXlv
dXRUZXN0cy9qcy9kb20vZG9taml0LWZ1bmN0aW9uLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40
NWU1NmViZGNkOWY2ZjE4NmM0N2NlNzY4YzE1YzIyNWViZTJkMGM3Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvanMvZG9tL2RvbWppdC1mdW5jdGlvbi1leHBlY3RlZC50eHQKQEAgLTAs
MCArMSwxMCBAQAorVGVzdCBET01KSVQgZnVuY3Rpb25zIHdvcmsuCisKK09uIHN1Y2Nlc3MsIHlv
dSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNU
IENPTVBMRVRFIi4KKworCitQQVNTIEFsbCB0ZXN0cyBwYXNzZWQuCitQQVNTIHN1Y2Nlc3NmdWxs
eVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvanMvZG9tL2RvbWppdC1mdW5jdGlvbi1saWNtLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3Rz
L2pzL2RvbS9kb21qaXQtZnVuY3Rpb24tbGljbS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjEz
YzAzMzA1OTY2MmU1NThiYzZmYjlkNzM5YWIzN2U3OTYxYzhmYgotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2pzL2RvbS9kb21qaXQtZnVuY3Rpb24tbGljbS1leHBlY3RlZC50eHQKQEAg
LTAsMCArMSw4IEBACitUZXN0IERPTUpJVCBmdW5jdGlvbiB3aWxsIGJlIExJQ00tZWQuCisKK09u
IHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxv
d2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1
ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL2RvbS9kb21q
aXQtZnVuY3Rpb24tbGljbS5odG1sIGIvTGF5b3V0VGVzdHMvanMvZG9tL2RvbWppdC1mdW5jdGlv
bi1saWNtLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWYyZTM5OWRkMzU5ZTFjNGZjYjRkZmRlMmJhY2U5ZTFh
MGQ0NGQzOQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2pzL2RvbS9kb21qaXQtZnVu
Y3Rpb24tbGljbS5odG1sCkBAIC0wLDAgKzEsMzUgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+
Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwv
c2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8
ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKworPGRpdiBpZD0icGFyZW50Tm9kZSI+Cis8ZGl2IGlk
PSJwcmV2aW91c1NpYmxpbmciPjwvZGl2PjxkaXYgaWQ9InRhcmdldCI+PGRpdiBpZD0iZmlyc3RD
aGlsZCI+PC9kaXY+PGRpdiBpZD0ibGFzdENoaWxkIj48L2Rpdj48L2Rpdj48ZGl2IGlkPSJuZXh0
U2libGluZyI+PC9kaXY+Cis8L2Rpdj4KKworPHNjcmlwdD4KK2Rlc2NyaXB0aW9uKCdUZXN0IERP
TUpJVCBmdW5jdGlvbiB3aWxsIGJlIExJQ00tZWQuJyk7CisKK2Z1bmN0aW9uIHRlc3QoKSB7Cisg
ICAgdmFyIGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOworICAgIHZhciByZXQg
PSAiaW52YWxpZCI7CisgICAgZGl2LnNldEF0dHJpYnV0ZSgiY29jb2EiLCAiQ29jb2EiKTsKKyAg
ICBmb3IgKHZhciBpID0gMDsgaSA8IDFlNDsgKytpKQorICAgICAgICByZXQgPSBkaXYuZ2V0QXR0
cmlidXRlKCJjb2NvYSIpOworICAgIHJldHVybiByZXQ7Cit9Cit2YXIgcmVzdWx0OworKGZ1bmN0
aW9uICgpIHsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IDEwMDsgKytpKSB7CisgICAgICAgIHJl
c3VsdCA9IHRlc3QoKTsKKyAgICAgICAgc2hvdWxkQmUoYHJlc3VsdGAsIGAiQ29jb2EiYCwgdHJ1
ZSk7CisgICAgfQorfSgpKTsKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNl
cy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvanMvZG9tL2RvbWppdC1mdW5jdGlvbi10eXBlLWNvbnRyYWRpY3Rpb24t
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvanMvZG9tL2RvbWppdC1mdW5jdGlvbi10eXBlLWNv
bnRyYWRpY3Rpb24tZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNkNjg3N2Q0YTgwMDY4OGIyMTY3
N2JlZmFmZmVlZmZkOGFiMGI3OTYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9qcy9k
b20vZG9taml0LWZ1bmN0aW9uLXR5cGUtY29udHJhZGljdGlvbi1leHBlY3RlZC50eHQKQEAgLTAs
MCArMSw4IEBACitUZXN0IERPTUpJVCBmdW5jdGlvbiB3aWxsIGNhdXNlIHR5cGUgY29udHJhZGlj
dGlvbiBnaXZpbmcgdXAuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAi
UEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworUEFTUyBzdWNj
ZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2pzL2RvbS9kb21qaXQtZnVuY3Rpb24tdHlwZS1jb250cmFkaWN0aW9uLmh0bWwg
Yi9MYXlvdXRUZXN0cy9qcy9kb20vZG9taml0LWZ1bmN0aW9uLXR5cGUtY29udHJhZGljdGlvbi5o
dG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjg0ZGM1YjY3Njk0MThlOTY1NTViYWI4Mzg3YzMwNjAzNGFmNWMwYzAK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9qcy9kb20vZG9taml0LWZ1bmN0aW9uLXR5
cGUtY29udHJhZGljdGlvbi5odG1sCkBAIC0wLDAgKzEsMzUgQEAKKzwhRE9DVFlQRSBodG1sPgor
PGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUu
anMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9k
aXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKworPGRpdiBpZD0icGFyZW50Tm9kZSI+Cis8
ZGl2IGlkPSJwcmV2aW91c1NpYmxpbmciPjwvZGl2PjxkaXYgaWQ9InRhcmdldCI+PGRpdiBpZD0i
Zmlyc3RDaGlsZCI+PC9kaXY+PGRpdiBpZD0ibGFzdENoaWxkIj48L2Rpdj48L2Rpdj48ZGl2IGlk
PSJuZXh0U2libGluZyI+PC9kaXY+Cis8L2Rpdj4KKworPHNjcmlwdD4KK2Rlc2NyaXB0aW9uKCdU
ZXN0IERPTUpJVCBmdW5jdGlvbiB3aWxsIGNhdXNlIHR5cGUgY29udHJhZGljdGlvbiBnaXZpbmcg
dXAuJyk7CisKK3ZhciBkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKK2Rpdi5z
ZXRBdHRyaWJ1dGUoImNvY29hIiwgIkNvY29hIik7CitmdW5jdGlvbiB0ZXN0KGRpdikgeworICAg
IHZhciByZXQgPSAiaW52YWxpZCI7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxZTQ7ICsraSkK
KyAgICAgICAgcmV0ID0gZGl2LmdldEF0dHJpYnV0ZSgyMDApOworICAgIHJldHVybiByZXQ7Cit9
Cit2YXIgcmVzdWx0OworKGZ1bmN0aW9uICgpIHsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IDEw
MDsgKytpKSB7CisgICAgICAgIHJlc3VsdCA9IHRlc3QoZGl2KTsKKyAgICAgICAgc2hvdWxkQmUo
YHJlc3VsdGAsIGBudWxsYCwgdHJ1ZSk7CisgICAgfQorfSgpKTsKKzwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5
PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvZG9tL2RvbWppdC1mdW5jdGlv
bi10eXBlLWZhaWx1cmUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvanMvZG9tL2RvbWppdC1m
dW5jdGlvbi10eXBlLWZhaWx1cmUtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJjMTAyYjM3NmJm
ODIzMmI0MmJkMWEzY2U0MWRlMTc3MWEyN2I2YzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9qcy9kb20vZG9taml0LWZ1bmN0aW9uLXR5cGUtZmFpbHVyZS1leHBlY3RlZC50eHQKQEAg
LTAsMCArMSw4IEBACitUZXN0IERPTUpJVCBmdW5jdGlvbiB3aWxsIGNhdXNlIEJhZFR5cGUgT1NS
IGV4aXRzLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1l
c3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKK1BBU1Mgc3VjY2Vzc2Z1bGx5
UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9qcy9kb20vZG9taml0LWZ1bmN0aW9uLXR5cGUtZmFpbHVyZS5odG1sIGIvTGF5b3V0VGVzdHMv
anMvZG9tL2RvbWppdC1mdW5jdGlvbi10eXBlLWZhaWx1cmUuaHRtbApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42Yjc2
NjE0MTg3ZWRhODdkYWMyNmMyMGE2ZTMxMjJjZjA2NTRhODE2Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvanMvZG9tL2RvbWppdC1mdW5jdGlvbi10eXBlLWZhaWx1cmUuaHRtbApAQCAt
MCwwICsxLDM5IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxi
b2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9k
aXY+CisKKzxkaXYgaWQ9InBhcmVudE5vZGUiPgorPGRpdiBpZD0icHJldmlvdXNTaWJsaW5nIj48
L2Rpdj48ZGl2IGlkPSJ0YXJnZXQiPjxkaXYgaWQ9ImZpcnN0Q2hpbGQiPjwvZGl2PjxkaXYgaWQ9
Imxhc3RDaGlsZCI+PC9kaXY+PC9kaXY+PGRpdiBpZD0ibmV4dFNpYmxpbmciPjwvZGl2PgorPC9k
aXY+CisKKzxzY3JpcHQ+CitkZXNjcmlwdGlvbignVGVzdCBET01KSVQgZnVuY3Rpb24gd2lsbCBj
YXVzZSBCYWRUeXBlIE9TUiBleGl0cy4nKTsKKwordmFyIGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQoJ2RpdicpOworZGl2LnNldEF0dHJpYnV0ZSgiY29jb2EiLCAiQ29jb2EiKTsKK2Z1bmN0
aW9uIHRlc3QoZGl2LCBuYW1lKSB7CisgICAgdmFyIHJldCA9ICJpbnZhbGlkIjsKKyAgICBmb3Ig
KHZhciBpID0gMDsgaSA8IDFlNDsgKytpKQorICAgICAgICByZXQgPSBkaXYuZ2V0QXR0cmlidXRl
KG5hbWUpOworICAgIHJldHVybiByZXQ7Cit9Cit2YXIgcmVzdWx0OworKGZ1bmN0aW9uICgpIHsK
KyAgICBmb3IgKHZhciBpID0gMDsgaSA8IDEwMDsgKytpKSB7CisgICAgICAgIHJlc3VsdCA9IHRl
c3QoZGl2LCAnY29jb2EnKTsKKyAgICAgICAgc2hvdWxkQmUoYHJlc3VsdGAsIGAiQ29jb2EiYCwg
dHJ1ZSk7CisgICAgfQorICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMTAwOyArK2kpIHsKKyAgICAg
ICAgcmVzdWx0ID0gdGVzdChkaXYsIDQwMCk7CisgICAgICAgIHNob3VsZEJlKGByZXN1bHRgLCBg
bnVsbGAsIHRydWUpOworICAgIH0KK30oKSk7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8u
Li9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL2RvbS9kb21qaXQtZnVuY3Rpb24uaHRtbCBiL0xh
eW91dFRlc3RzL2pzL2RvbS9kb21qaXQtZnVuY3Rpb24uaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45MWVhOGE1
OTlkODk2NWRlNWEwM2E4NTRkNDk0M2RlNWI5YWMzZDY0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvanMvZG9tL2RvbWppdC1mdW5jdGlvbi5odG1sCkBAIC0wLDAgKzEsNTggQEAKKzwh
RE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJj
ZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJ0
YXJnZXQiIGNvY29hPSJjb2NvYSI+PGRpdiBpZD0iZmlyc3RDaGlsZCI+PC9kaXY+PGRpdiBpZD0i
bGFzdENoaWxkIj48L2Rpdj48L2Rpdj4KKzwvZGl2PgorCis8c2NyaXB0PgorZGVzY3JpcHRpb24o
J1Rlc3QgRE9NSklUIGZ1bmN0aW9ucyB3b3JrLicpOwordmFyIGRpdjsKKyhmdW5jdGlvbiAoKSB7
CisgICAgZGl2ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3RhcmdldCcpOworCisgICAgZnVu
Y3Rpb24gYSgpCisgICAgeworICAgICAgICByZXR1cm4gZGl2LmdldEF0dHJpYnV0ZSgnY29jb2En
KSA9PT0gJ2NvY29hJzsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBiKCkKKyAgICB7CisgICAgICAg
IHJldHVybiBkaXYuZ2V0QXR0cmlidXRlTm9kZSgnY29jb2EnKS5ub2RlVHlwZSA9PT0gTm9kZS5B
VFRSSUJVVEVfTk9ERTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBjKCkKKyAgICB7CisgICAgICAg
IHJldHVybiBkaXYuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2RpdicpLmxlbmd0aCA9PT0gMjsKKyAg
ICB9CisKKyAgICBmdW5jdGlvbiBkKCkKKyAgICB7CisgICAgICAgIHJldHVybiBkaXYuaGFzQXR0
cmlidXRlKCdjb2NvYScpID09PSB0cnVlOworICAgIH0KKworICAgIGZ1bmN0aW9uIG1haW4oKQor
ICAgIHsKKyAgICAgICAgaWYgKCFhKCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
ICAgIGlmICghYigpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBpZiAoIWMo
KSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgaWYgKCFkKCkpCisgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIGZv
ciAodmFyIGkgPSAwOyBpIDwgMWU0OyArK2kpIHsKKyAgICAgICAgaWYgKCFtYWluKCkpCisgICAg
ICAgICAgICB0aHJvdyBuZXcgRXJyb3IoImVycm9yIik7CisgICAgfQorICAgIHRlc3RQYXNzZWQo
IkFsbCB0ZXN0cyBwYXNzZWQuIik7Cit9KCkpOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4v
Li4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>293681</attachid>
            <date>2016-11-02 11:35:27 -0700</date>
            <delta_ts>2016-11-02 11:41:32 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-162980-20161102113128.patch</filename>
            <type>text/plain</type>
            <size>179043</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA4MjcwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBk
ZWFmOGMwYmI4YTZkOGM5ZjEwYmE4MDllY2VmZTJkOWI0MDE2ZDljLi4xMzk1ZTQ5NWEzZjY0NmI0
MTEzYTBiMDY4ZTViZDViMjcxZGRmZTNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMzQgQEAKKzIwMTYtMTEtMDIgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFp
bC5jb20+CisKKyAgICAgICAgW0RPTUpJVF0gQWRkIERPTUpJVDo6U2lnbmF0dXJlCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjI5ODAKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGludHJv
ZHVjZXMgYSBuZXcgbWVjaGFuaXNtIGNhbGxlZCBET01KSVQ6OlNpZ25hdHVyZS4gV2UgY2FuIGFu
bm90YXRlIHRoZSBmdW5jdGlvbiB3aXRoIERPTUpJVDo6U2lnbmF0dXJlLgorICAgICAgICBET01K
SVQ6OlNpZ25hdHVyZSBoYXMgdHlwZSBpbmZvcm1hdGlvbiBvZiB0aGF0IGZ1bmN0aW9uLiBBbmQg
aXQgYWxzbyBtYWludGFpbnMgdGhlIGVmZmVjdCBvZiB0aGUgZnVuY3Rpb24gYW5kIHRoZQorICAg
ICAgICBwb2ludGVyIHRvIHRoZSB1bnNhZmUgZnVuY3Rpb24uIFRoZSB1bnNhZmUgZnVuY3Rpb24g
bWVhbnMgdGhlIGZ1bmN0aW9uIHdpdGhvdXQgdHlwZSBhbmQgYXJndW1lbnQgY291bnQgY2hlY2tz
LgorICAgICAgICBCeSB1c2luZyB0aGVzZSBpbmZvcm1hdGlvbiwgd2UgY2FuIHNlcGFyYXRlIHR5
cGUgYW5kIGFyZ3VtZW50IGNvdW50IGNoZWNrcyBmcm9tIHRoZSBmdW5jdGlvbi4gQW5kIHdlIGNh
biBlbWl0CisgICAgICAgIHRoZXNlIHRoaW5ncyBhcyBERkcgY2hlY2tzIGFuZCBjb252ZXJ0IHRo
ZSBmdW5jdGlvbiBjYWxsIGl0c2VsZiB0byBDYWxsRE9NIG5vZGUuIENhbGxET00gbm9kZSBjYW4g
Y2FsbCB0aGUgdW5zYWZlCisgICAgICAgIGZ1bmN0aW9uIGRpcmVjdGx5IHdpdGhvdXQgYW55IGNo
ZWNrcy4gRnVydGhlcm1vcmUsIHRoaXMgQ2FsbERPTSBub2RlIGNhbiByZXByZXNlbnQgaXRzIG93
biBjbG9iYmVyaXppbmcgcnVsZXMgYmFzZWQKKyAgICAgICAgb24gRE9NSklUOjpFZmZlY3QgbWFp
bnRhaW5lZCBieSBET01KSVQ6OlNpZ25hdHVyZS4gSXQgYWxsb3dzIHVzIHRvIG1ha2Ugb3BhcXVl
IENhbGwgbm9kZSB0byBhIENhbGxET00gbm9kZSB0aGF0CisgICAgICAgIG1lcmVseSByZWFkcyBz
b21lIHBhcnQgb2YgaGVhcC4gVGhlc2UgY2hhbmdlcyAoMSkgY2FuIGRyb3AgZHVwbGljYXRlIHR5
cGUgY2hlY2tzIGluIERGRywgKDIpIG9mZmVyIGFiaWxpdHkgdG8gbW92ZQorICAgICAgICBDYWxs
RE9NIG5vZGUgdG8gc29tZXdoZXJlLCBhbmQgKDMpIHRyYWNrIG1vcmUgZGV0YWlsZWQgaGVhcCBy
ZWFkcyBhbmQgd3JpdGVzIG9mIENhbGxET00gbm9kZXMuCisKKyAgICAgICAgV2UgZmlyc3QgZW1p
dCBDYWxsIG5vZGUgd2l0aCBET01KSVQ6OlNpZ25hdHVyZSBpbiBERkdCeXRlQ29kZVBhcnNlci4g
QW5kIGluIHRoZSBmaXh1cCBwaGFzZSwgd2UgYXR0ZW1wdCB0byBsb3dlcgorICAgICAgICBDYWxs
IG5vZGUgdG8gQ2FsbERPTSBub2RlIHdpdGggY2hlY2tzICYgZWRnZSBmaWx0ZXJzLiBUaGlzIGlz
IGJlY2F1c2Ugd2UgZG8gbm90IGtub3cgdGhlIHR5cGUgcHJlZGljdGlvbnMgaW4KKyAgICAgICAg
REZHQnl0ZUNvZGVQYXJzZXIgcGhhc2UuIElmIHdlIGFsd2F5cyBlbWl0IENhbGxET00gbm9kZSBp
biBERkdCeXRlQ29kZVBhcnNlciwgaWYgd2UgZXZhbHVhdGUgYGRpdi5nZXRBdHRyaWJ1dGUodHJ1
ZSlgCisgICAgICAgIHRoaW5neSwgdGhlIFVuY291bnRhYmxlIE9TUiBleGl0cyByZXBlYXRlZGx5
IGhhcHBlbiBiZWNhdXNlIEFJIGZpZ3VyZXMgb3V0IHRoZSBhYnN0cmFjdCB2YWx1ZSBpcyBjbGVh
cmVkLgorCisgICAgICAgIEN1cnJlbnRseSwgRE9NSklUIHNpZ25hdHVyZSBvbmx5IGFsbG93cyB0
aGUgdHlwZXMgdGhhdCBjYW4gcmVzaWRlIGluIEdQUi4gVGhpcyBpcyBiZWNhdXNlIHRoZSB0eXBl
cyBvZiB0aGUgdW5zYWZlCisgICAgICAgIGZ1bmN0aW9uIGFyZ3VtZW50cyBhcmUgcmVwcmVzZW50
ZWQgYXMgdGhlIHNlcXVlbmNlIG9mIHZvaWQqLiBJbiB0aGUgZnV0dXJlLCB3ZSB3aWxsIGV4dGVu
ZCB0byBhY2NlcHQgb3RoZXIgdHlwZXMgbGlrZQorICAgICAgICBmbG9hdCwgZG91YmxlIGV0Yy4K
KworICAgICAgICBXZSBhbm5vdGF0ZSBzZXZlcmFsIGZ1bmN0aW9ucyBpbiBFbGVtZW50LiBJbiBw
YXJ0aWN1bGFyLCB3ZSBhbm5vdGF0ZSBFbGVtZW50OjpnZXRBdHRyaWJ1dGUuIFRoaXMgYWxsb3dz
IHVzIHRvIHBlcmZvcm0KKyAgICAgICAgTElDTSBpbiBEcm9tYWVvIGRvbS1hdHRyIHRlc3QuIElu
IHRoZSBEcm9tYWVvIGRvbS1hdHRyIGdldEF0dHJpYnV0ZSB0ZXN0LCB3ZSBjYW4gc2VlIDMyeCBp
bXByb3ZlbWVudC4gKDEzNDk3NC44IHYucy4gNDIwMy40KQorCisgICAgICAgICogSmF2YVNjcmlw
dENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBieXRlY29kZS9DYWxs
VmFyaWFudC5oOgorICAgICAgICAoSlNDOjpDYWxsVmFyaWFudDo6ZnVuY3Rpb25FeGVjdXRhYmxl
KToKKyAgICAgICAgKEpTQzo6Q2FsbFZhcmlhbnQ6Om5hdGl2ZUV4ZWN1dGFibGUpOgorICAgICAg
ICAoSlNDOjpDYWxsVmFyaWFudDo6c2lnbmF0dXJlRm9yKToKKyAgICAgICAgKiBieXRlY29kZS9T
cGVjdWxhdGVkVHlwZS5oOgorICAgICAgICAoSlNDOjppc05vdFN0cmluZ1NwZWN1bGF0aW9uKToK
KyAgICAgICAgKEpTQzo6aXNOb3RJbnQzMlNwZWN1bGF0aW9uKToKKyAgICAgICAgKEpTQzo6aXNO
b3RCb29sZWFuU3BlY3VsYXRpb24pOgorICAgICAgICAqIGRmZy9ERkdBYnN0cmFjdEludGVycHJl
dGVySW5saW5lcy5oOgorICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0SW50ZXJwcmV0ZXI8QWJz
dHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyk6CisgICAgICAgICogZGZnL0RGR0J5dGVD
b2RlUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6YWRkQ2Fs
bCk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUNhbGwpOgorICAg
ICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjphdHRlbXB0VG9JbmxpbmVDYWxsKToKKyAg
ICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW5saW5pbmcpOgorICAgICAg
ICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVET01KSVRDYWxsKToKKyAgICAgICAg
KEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayk6CisgICAgICAgICogZGZnL0RG
R0Nsb2JiZXJpemUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpjbG9iYmVyaXplKToKKyAgICAgICAg
KiBkZmcvREZHRG9lc0dDLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpkb2VzR0MpOgorICAgICAg
ICAqIGRmZy9ERkdGaXh1cFBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpGaXh1cFBoYXNl
OjpmaXh1cE5vZGUpOgorICAgICAgICAoSlNDOjpERkc6OkZpeHVwUGhhc2U6OmF0dGVtcHRUb01h
a2VDYWxsRE9NKToKKyAgICAgICAgKEpTQzo6REZHOjpGaXh1cFBoYXNlOjpmaXh1cENoZWNrRE9N
KToKKyAgICAgICAgKEpTQzo6REZHOjpGaXh1cFBoYXNlOjpmaXh1cENhbGxET00pOgorICAgICAg
ICAqIGRmZy9ERkdOb2RlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpjb252ZXJ0VG9D
YWxsRE9NKToKKyAgICAgICAgKiBkZmcvREZHTm9kZS5oOgorICAgICAgICAoSlNDOjpERkc6Ok5v
ZGU6Omhhc0hlYXBQcmVkaWN0aW9uKToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpzaG91bGRT
cGVjdWxhdGVOb3RJbnQzMik6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6c2hvdWxkU3BlY3Vs
YXRlTm90Qm9vbGVhbik6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6c2hvdWxkU3BlY3VsYXRl
Tm90U3RyaW5nKToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpoYXNTaWduYXR1cmUpOgorICAg
ICAgICAoSlNDOjpERkc6Ok5vZGU6OnNpZ25hdHVyZSk6CisgICAgICAgICogZGZnL0RGR05vZGVU
eXBlLmg6CisgICAgICAgICogZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcDoK
KyAgICAgICAgKiBkZmcvREZHU2FmZVRvRXhlY3V0ZS5oOgorICAgICAgICAoSlNDOjpERkc6OnNh
ZmVUb0V4ZWN1dGUpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHA6CisgICAg
ICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVDYWxsRE9NKToKKyAgICAgICAg
KiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuaDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2
ZUpJVDo6Y2FsbE9wZXJhdGlvbik6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJf
NjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToKKyAg
ICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGRvbWppdC9ET01KSVRFZmZlY3Qu
aDoKKyAgICAgICAgKEpTQzo6RE9NSklUOjpFZmZlY3Q6OkVmZmVjdCk6CisgICAgICAgIChKU0M6
OkRPTUpJVDo6RWZmZWN0Ojpmb3JXcml0ZSk6CisgICAgICAgIChKU0M6OkRPTUpJVDo6RWZmZWN0
Ojpmb3JSZWFkKToKKyAgICAgICAgKEpTQzo6RE9NSklUOjpFZmZlY3Q6OmZvclJlYWRXcml0ZSk6
CisgICAgICAgIChKU0M6OkRPTUpJVDo6RWZmZWN0Ojpmb3JQdXJlKToKKyAgICAgICAgKEpTQzo6
RE9NSklUOjpFZmZlY3Q6OmZvckRlZik6CisgICAgICAgIChKU0M6OkRPTUpJVDo6RWZmZWN0Ojpt
dXN0R2VuZXJhdGUpOgorICAgICAgICBJbiBjbGFuZywgd2UgY2Fubm90IG1ha2UgdGhpcyBFZmZl
Y3QgY29uc3RydWN0b3IgY29uc3RleHByIGlmIHdlIHVzZSBPcHRpb25hbDxIZWFwUmFuZ2U+Lgor
ICAgICAgICBTbyB3ZSB1c2UgSGVhcFJhbmdlOjp0b3AoKSBmb3IgTnVsbG9wdCBkZWYgbm93Lgor
CisgICAgICAgICogZG9taml0L0RPTUpJVEhlYXBSYW5nZS5oOgorICAgICAgICAoSlNDOjpET01K
SVQ6OkhlYXBSYW5nZTo6ZnJvbVJhdyk6CisgICAgICAgIChKU0M6OkRPTUpJVDo6SGVhcFJhbmdl
OjpvcGVyYXRvciBib29sKToKKyAgICAgICAgKEpTQzo6RE9NSklUOjpIZWFwUmFuZ2U6Om9wZXJh
dG9yPT0pOgorICAgICAgICAoSlNDOjpET01KSVQ6OkhlYXBSYW5nZTo6b3BlcmF0b3IhPSk6Cisg
ICAgICAgIChKU0M6OkRPTUpJVDo6SGVhcFJhbmdlOjpmcm9tQ29uc3RhbnQpOgorICAgICAgICAq
IGRvbWppdC9ET01KSVRTaWduYXR1cmUuaDogQ29waWVkIGZyb20gU291cmNlL0phdmFTY3JpcHRD
b3JlL2RvbWppdC9ET01KSVRFZmZlY3QuaC4KKyAgICAgICAgKEpTQzo6RE9NSklUOjpTaWduYXR1
cmU6OlNpZ25hdHVyZSk6CisgICAgICAgIChKU0M6OkRPTUpJVDo6U2lnbmF0dXJlOjphcmd1bWVu
dENvdW50KToKKyAgICAgICAgKEpTQzo6RE9NSklUOjpTaWduYXR1cmU6OmNoZWNrRE9NKToKKyAg
ICAgICAgKiBmdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpjYW5D
b21waWxlKToKKyAgICAgICAgKiBmdGwvRlRMTG93ZXJERkdUb0IzLmNwcDoKKyAgICAgICAgKEpT
Qzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZU5vZGUpOgorICAgICAgICAoSlNDOjpG
VEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlQ2FsbERPTSk6CisgICAgICAgICogaml0L0pJ
VE9wZXJhdGlvbnMuaDoKKyAgICAgICAgKiBqaXQvSklUVGh1bmtzLmNwcDoKKyAgICAgICAgKEpT
Qzo6SklUVGh1bmtzOjpob3N0RnVuY3Rpb25TdHViKToKKyAgICAgICAgKiBqaXQvSklUVGh1bmtz
Lmg6CisgICAgICAgICogcnVudGltZS9KU0JvdW5kRnVuY3Rpb24uY3BwOgorICAgICAgICAoSlND
OjpKU0JvdW5kRnVuY3Rpb246OmNyZWF0ZSk6CisgICAgICAgICogcnVudGltZS9KU0NlbGwuaDoK
KyAgICAgICAgKiBydW50aW1lL0pTRnVuY3Rpb24uY3BwOgorICAgICAgICAoSlNDOjpKU0Z1bmN0
aW9uOjpjcmVhdGUpOgorICAgICAgICAqIHJ1bnRpbWUvSlNGdW5jdGlvbi5oOgorICAgICAgICAq
IHJ1bnRpbWUvSlNOYXRpdmVTdGRGdW5jdGlvbi5jcHA6CisgICAgICAgIChKU0M6OkpTTmF0aXZl
U3RkRnVuY3Rpb246OmNyZWF0ZSk6CisgICAgICAgICogcnVudGltZS9KU09iamVjdC5jcHA6Cisg
ICAgICAgIChKU0M6OkpTT2JqZWN0OjpwdXREaXJlY3ROYXRpdmVGdW5jdGlvbik6CisgICAgICAg
ICogcnVudGltZS9KU09iamVjdC5oOgorICAgICAgICAqIHJ1bnRpbWUvTG9va3VwLmg6CisgICAg
ICAgIChKU0M6Okhhc2hUYWJsZVZhbHVlOjpmdW5jdGlvbkxlbmd0aCk6CisgICAgICAgIChKU0M6
Okhhc2hUYWJsZVZhbHVlOjpzaWduYXR1cmUpOgorICAgICAgICAoSlNDOjpyZWlmeVN0YXRpY1By
b3BlcnR5KToKKyAgICAgICAgKiBydW50aW1lL05hdGl2ZUV4ZWN1dGFibGUuY3BwOgorICAgICAg
ICAoSlNDOjpOYXRpdmVFeGVjdXRhYmxlOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpOYXRpdmVF
eGVjdXRhYmxlOjpOYXRpdmVFeGVjdXRhYmxlKToKKyAgICAgICAgKiBydW50aW1lL05hdGl2ZUV4
ZWN1dGFibGUuaDoKKyAgICAgICAgKiBydW50aW1lL1Byb3BlcnR5U2xvdC5oOgorICAgICAgICAq
IHJ1bnRpbWUvVk0uY3BwOgorICAgICAgICAoSlNDOjpWTTo6Z2V0SG9zdEZ1bmN0aW9uKToKKyAg
ICAgICAgKiBydW50aW1lL1ZNLmg6CisKIDIwMTYtMTEtMDEgIFJ5b3N1a2UgTml3YSAgPHJuaXdh
QHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmVtb3ZlIENVU1RPTV9FTEVNRU5UUyBidWlsZCBmbGFn
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cKaW5kZXggOWFlZGU3NjM2MWNkNDU1YjAxNzBkMjIxOTVjNDkyNWNiZGU1NDNiMC4u
Y2NjMjQ5NWVlYjZmNzdhOGY2YjlmODJlYjc3NWE4N2QwMTlhOTlhOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDk4IEBACisyMDE2LTExLTAyICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21h
aWwuY29tPgorCisgICAgICAgIFtET01KSVRdIEFkZCBET01KSVQ6OlNpZ25hdHVyZQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYyOTgwCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2UgaW50cm9kdWNlIERP
TUpJVDo6U2lnbmF0dXJlLiBUaGlzIHNpZ25hdHVyZSBvYmplY3QgaXMgYXV0b21hdGljYWxseSBn
ZW5lcmF0ZWQgYnkgSURMIGNvZGUgZ2VuZXJhdG9yLgorICAgICAgICBJdCBob2xkcyAoMSkgdHlw
ZXMsICgyKSBwb2ludGVyIHRvIHRoZSB1bnNhZmUgZnVuY3Rpb24gKHRoZSBmdW5jdGlvbiB3aXRo
b3V0IGNoZWNrcyksIGFuZCAoMykgdGhlIGVmZmVjdAorICAgICAgICBvZiB0aGUgZnVuY3Rpb24u
IFdlIHVzZSBjb25zdGV4cHIgdG8gaW5pdGlhbGl6ZSBET01KSVQ6OlNpZ25hdHVyZSB3aXRob3V0
IGludm9raW5nIGdsb2JhbCBjb25zdHJ1Y3RvcnMuCisgICAgICAgIFRodXMgdGhlIGNvbnRlbnQg
aXMgZW1iZWRkZWQgaW50byB0aGUgYmluYXJ5IGFzIHRoZSBjb25zdGFudCB2YWx1ZXMuCisKKyAg
ICAgICAgV2UgYWxzbyBjbGVhbiB1cCB0aGUgSURMIGNvZGUgZ2VuZXJhdG9yIHJlbGF0ZWQgdG8g
RE9NSklUIHBhcnQuIEluc3RlYWQgb2Ygc3dpdGNoaW5nIHRoaW5ncyBpbnNpZGUgSURMCisgICAg
ICAgIGNvZGUgZ2VuZXJhdG9yLCB3ZSB1c2UgQysrIHRlbXBsYXRlIHRvIGRpc3BhdGNoIHRoaW5n
cyBhdCBjb21waWxlIHRpbWUuIFRoaXMgdGVtcGxhdGUgbWV0YSBwcm9ncmFtbWluZworICAgICAg
ICBpcyBoaWdobHkgdXRpbGl6ZWQgaW4gSURMIHRoZXNlIGRheXMuCisKKyAgICAgICAgVG8gbWFr
ZSBET01KSVQ6OlNpZ25hdHVyZSBjb25zdGV4cHIsIHdlIGFsc28gbmVlZCB0byBkZWZpbmUgRE9N
SklUIGFic3RyYWN0IGhlYXAgdGhpbmdzIGluIHRoZSBidWlsZCB0aW1lLgorICAgICAgICBUbyBk
byBzbywgd2UgaW50cm9kdWNlIGEgdGlueSBSdWJ5IHNjcmlwdCB0byBjYWxjdWxhdGUgdGhlIHJh
bmdlIG9mIGFic3RyYWN0IGhlYXBzLiBXZSBjYW4gb2ZmZXIgdGhlIGFic3RyYWN0CisgICAgICAg
IGhlYXAgdHJlZSBhcyBZQU1MIGZvcm1hdCBhbmQgdGhlIHNjcmlwdCB3aWxsIHByb2R1Y2UgYSBD
KysgaGVhZGVyIGhvbGRpbmcgdGhlIGNhbGN1bGF0ZWQgYWJzdHJhY3QgaGVhcCByYW5nZXMKKwor
ICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLm1ha2U6
CisgICAgICAgICogRm9yd2FyZGluZ0hlYWRlcnMvYnl0ZWNvZGUvU3BlY3VsYXRlZFR5cGUuaDog
UmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL2RvbWppdC9ET01KSVRBYnN0cmFjdEhlYXBSZXBv
c2l0b3J5LmguCisgICAgICAgICogRm9yd2FyZGluZ0hlYWRlcnMvZG9taml0L0RPTUpJVFNpZ25h
dHVyZS5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvZG9taml0L0RPTUpJVEFic3RyYWN0
SGVhcFJlcG9zaXRvcnkuY3BwLgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvajoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5oOgorICAg
ICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtOgorICAgICAgICAoR2Vu
ZXJhdGVIZWFkZXIpOgorICAgICAgICAoR2VuZXJhdGVQcm9wZXJ0aWVzSGFzaFRhYmxlKToKKyAg
ICAgICAgKEdldFVuc2FmZUFyZ3VtZW50VHlwZSk6CisgICAgICAgIChHZXRBcmd1bWVudFR5cGVG
aWx0ZXIpOgorICAgICAgICAoR2V0UmVzdWx0VHlwZUZpbHRlcik6CisgICAgICAgIChHZW5lcmF0
ZUltcGxlbWVudGF0aW9uKToKKyAgICAgICAgKFVuc2FmZVRvTmF0aXZlKToKKyAgICAgICAgKEdl
bmVyYXRlSGFzaFRhYmxlVmFsdWVBcnJheSk6CisgICAgICAgIChDb21wdXRlRnVuY3Rpb25TcGVj
aWFsKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0lETEF0dHJpYnV0ZXMudHh0OgorICAg
ICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RET01KSVQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6QmluZGluZ0NhbGxlcjxKU1Rlc3RET01KSVQ+OjpjYXN0Rm9yT3BlcmF0aW9u
KToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RET01KSVRBbnlBdHRyRE9NSklUOjpUZXN0RE9NSklU
QW55QXR0ckRPTUpJVCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0RE9NSklUQm9vbGVhbkF0dHJE
T01KSVQ6OlRlc3RET01KSVRCb29sZWFuQXR0ckRPTUpJVCk6CisgICAgICAgIChXZWJDb3JlOjpU
ZXN0RE9NSklUQnl0ZUF0dHJET01KSVQ6OlRlc3RET01KSVRCeXRlQXR0ckRPTUpJVCk6CisgICAg
ICAgIChXZWJDb3JlOjpUZXN0RE9NSklUT2N0ZXRBdHRyRE9NSklUOjpUZXN0RE9NSklUT2N0ZXRB
dHRyRE9NSklUKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RET01KSVRTaG9ydEF0dHJET01KSVQ6
OlRlc3RET01KSVRTaG9ydEF0dHJET01KSVQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdERPTUpJ
VFVuc2lnbmVkU2hvcnRBdHRyRE9NSklUOjpUZXN0RE9NSklUVW5zaWduZWRTaG9ydEF0dHJET01K
SVQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdERPTUpJVExvbmdBdHRyRE9NSklUOjpUZXN0RE9N
SklUTG9uZ0F0dHJET01KSVQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdERPTUpJVFVuc2lnbmVk
TG9uZ0F0dHJET01KSVQ6OlRlc3RET01KSVRVbnNpZ25lZExvbmdBdHRyRE9NSklUKToKKyAgICAg
ICAgKFdlYkNvcmU6OlRlc3RET01KSVRMb25nTG9uZ0F0dHJET01KSVQ6OlRlc3RET01KSVRMb25n
TG9uZ0F0dHJET01KSVQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdERPTUpJVFVuc2lnbmVkTG9u
Z0xvbmdBdHRyRE9NSklUOjpUZXN0RE9NSklUVW5zaWduZWRMb25nTG9uZ0F0dHJET01KSVQpOgor
ICAgICAgICAoV2ViQ29yZTo6VGVzdERPTUpJVEZsb2F0QXR0ckRPTUpJVDo6VGVzdERPTUpJVEZs
b2F0QXR0ckRPTUpJVCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0RE9NSklUVW5yZXN0cmljdGVk
RmxvYXRBdHRyRE9NSklUOjpUZXN0RE9NSklUVW5yZXN0cmljdGVkRmxvYXRBdHRyRE9NSklUKToK
KyAgICAgICAgKFdlYkNvcmU6OlRlc3RET01KSVREb3VibGVBdHRyRE9NSklUOjpUZXN0RE9NSklU
RG91YmxlQXR0ckRPTUpJVCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0RE9NSklUVW5yZXN0cmlj
dGVkRG91YmxlQXR0ckRPTUpJVDo6VGVzdERPTUpJVFVucmVzdHJpY3RlZERvdWJsZUF0dHJET01K
SVQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdERPTUpJVERvbVN0cmluZ0F0dHJET01KSVQ6OlRl
c3RET01KSVREb21TdHJpbmdBdHRyRE9NSklUKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RET01K
SVRCeXRlU3RyaW5nQXR0ckRPTUpJVDo6VGVzdERPTUpJVEJ5dGVTdHJpbmdBdHRyRE9NSklUKToK
KyAgICAgICAgKFdlYkNvcmU6OlRlc3RET01KSVRVc3ZTdHJpbmdBdHRyRE9NSklUOjpUZXN0RE9N
SklUVXN2U3RyaW5nQXR0ckRPTUpJVCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0RE9NSklUTm9k
ZUF0dHJET01KSVQ6OlRlc3RET01KSVROb2RlQXR0ckRPTUpJVCk6CisgICAgICAgIChXZWJDb3Jl
OjpUZXN0RE9NSklUQm9vbGVhbk51bGxhYmxlQXR0ckRPTUpJVDo6VGVzdERPTUpJVEJvb2xlYW5O
dWxsYWJsZUF0dHJET01KSVQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdERPTUpJVEJ5dGVOdWxs
YWJsZUF0dHJET01KSVQ6OlRlc3RET01KSVRCeXRlTnVsbGFibGVBdHRyRE9NSklUKToKKyAgICAg
ICAgKFdlYkNvcmU6OlRlc3RET01KSVRPY3RldE51bGxhYmxlQXR0ckRPTUpJVDo6VGVzdERPTUpJ
VE9jdGV0TnVsbGFibGVBdHRyRE9NSklUKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RET01KSVRT
aG9ydE51bGxhYmxlQXR0ckRPTUpJVDo6VGVzdERPTUpJVFNob3J0TnVsbGFibGVBdHRyRE9NSklU
KToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RET01KSVRVbnNpZ25lZFNob3J0TnVsbGFibGVBdHRy
RE9NSklUOjpUZXN0RE9NSklUVW5zaWduZWRTaG9ydE51bGxhYmxlQXR0ckRPTUpJVCk6CisgICAg
ICAgIChXZWJDb3JlOjpUZXN0RE9NSklUTG9uZ051bGxhYmxlQXR0ckRPTUpJVDo6VGVzdERPTUpJ
VExvbmdOdWxsYWJsZUF0dHJET01KSVQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdERPTUpJVFVu
c2lnbmVkTG9uZ051bGxhYmxlQXR0ckRPTUpJVDo6VGVzdERPTUpJVFVuc2lnbmVkTG9uZ051bGxh
YmxlQXR0ckRPTUpJVCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0RE9NSklUTG9uZ0xvbmdOdWxs
YWJsZUF0dHJET01KSVQ6OlRlc3RET01KSVRMb25nTG9uZ051bGxhYmxlQXR0ckRPTUpJVCk6Cisg
ICAgICAgIChXZWJDb3JlOjpUZXN0RE9NSklUVW5zaWduZWRMb25nTG9uZ051bGxhYmxlQXR0ckRP
TUpJVDo6VGVzdERPTUpJVFVuc2lnbmVkTG9uZ0xvbmdOdWxsYWJsZUF0dHJET01KSVQpOgorICAg
ICAgICAoV2ViQ29yZTo6VGVzdERPTUpJVEZsb2F0TnVsbGFibGVBdHRyRE9NSklUOjpUZXN0RE9N
SklURmxvYXROdWxsYWJsZUF0dHJET01KSVQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdERPTUpJ
VFVucmVzdHJpY3RlZEZsb2F0TnVsbGFibGVBdHRyRE9NSklUOjpUZXN0RE9NSklUVW5yZXN0cmlj
dGVkRmxvYXROdWxsYWJsZUF0dHJET01KSVQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdERPTUpJ
VERvdWJsZU51bGxhYmxlQXR0ckRPTUpJVDo6VGVzdERPTUpJVERvdWJsZU51bGxhYmxlQXR0ckRP
TUpJVCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0RE9NSklUVW5yZXN0cmljdGVkRG91YmxlTnVs
bGFibGVBdHRyRE9NSklUOjpUZXN0RE9NSklUVW5yZXN0cmljdGVkRG91YmxlTnVsbGFibGVBdHRy
RE9NSklUKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RET01KSVREb21TdHJpbmdOdWxsYWJsZUF0
dHJET01KSVQ6OlRlc3RET01KSVREb21TdHJpbmdOdWxsYWJsZUF0dHJET01KSVQpOgorICAgICAg
ICAoV2ViQ29yZTo6VGVzdERPTUpJVEJ5dGVTdHJpbmdOdWxsYWJsZUF0dHJET01KSVQ6OlRlc3RE
T01KSVRCeXRlU3RyaW5nTnVsbGFibGVBdHRyRE9NSklUKToKKyAgICAgICAgKFdlYkNvcmU6OlRl
c3RET01KSVRVc3ZTdHJpbmdOdWxsYWJsZUF0dHJET01KSVQ6OlRlc3RET01KSVRVc3ZTdHJpbmdO
dWxsYWJsZUF0dHJET01KSVQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdERPTUpJVE5vZGVOdWxs
YWJsZUF0dHJET01KSVQ6OlRlc3RET01KSVROb2RlTnVsbGFibGVBdHRyRE9NSklUKToKKyAgICAg
ICAgKFdlYkNvcmU6OmpzVGVzdERPTUpJVFByb3RvdHlwZUZ1bmN0aW9uR2V0QXR0cmlidXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdERPTUpJVFByb3RvdHlwZUZ1bmN0aW9uR2V0QXR0cmli
dXRlQ2FsbGVyKToKKyAgICAgICAgKFdlYkNvcmU6OnVuc2FmZUpzVGVzdERPTUpJVFByb3RvdHlw
ZUZ1bmN0aW9uR2V0QXR0cmlidXRlKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
VGVzdERPTUpJVC5pZGw6CisgICAgICAgICogZG9tL0VsZW1lbnQuaWRsOgorICAgICAgICAqIGRv
bWppdC9ET01KSVRBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LnlhbWw6IEFkZGVkLgorICAgICAgICAq
IGRvbWppdC9ET01KSVRJRExDb252ZXJ0Lmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6RE9N
SklUOjpEaXJlY3RDb252ZXJ0ZXI8SURMRE9NU3RyaW5nPjo6ZGlyZWN0Q29udmVydDxTdHJpbmdD
b252ZXJzaW9uQ29uZmlndXJhdGlvbjo6Tm9ybWFsPik6CisgICAgICAgICogZG9taml0L0RPTUpJ
VElETFR5cGUuaDogQWRkZWQuCisgICAgICAgICogZG9taml0L0RPTUpJVElETFR5cGVGaWx0ZXIu
aDogQWRkZWQuCisgICAgICAgICogZG9taml0L0pTRG9jdW1lbnRET01KSVQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RG9jdW1lbnREb2N1bWVudEVsZW1lbnRET01KSVQ6OmNhbGxET01HZXR0ZXIp
OgorICAgICAgICAqIGRvbWppdC9KU05vZGVET01KSVQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Tm9kZUZpcnN0Q2hpbGRET01KSVQ6OmNhbGxET01HZXR0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6
Tm9kZUxhc3RDaGlsZERPTUpJVDo6Y2FsbERPTUdldHRlcik6CisgICAgICAgIChXZWJDb3JlOjpO
b2RlTmV4dFNpYmxpbmdET01KSVQ6OmNhbGxET01HZXR0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6
Tm9kZVByZXZpb3VzU2libGluZ0RPTUpJVDo6Y2FsbERPTUdldHRlcik6CisgICAgICAgIChXZWJD
b3JlOjpOb2RlUGFyZW50Tm9kZURPTUpJVDo6Y2FsbERPTUdldHRlcik6CisgICAgICAgIChXZWJD
b3JlOjpOb2RlT3duZXJEb2N1bWVudERPTUpJVDo6Y2FsbERPTUdldHRlcik6CisgICAgICAgICog
ZG9taml0L2dlbmVyYXRlLWFic3RyYWN0LWhlYXAucmI6IEFkZGVkLgorCiAyMDE2LTExLTAxICBE
YXZlIEh5YXR0ICA8aHlhdHRAYXBwbGUuY29tPgogCiAgICAgICAgIFtDU1MgUGFyc2VyXSBTdXBw
b3J0IHRoZSBzaGFkb3cgRE9NCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2
YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDJmYmQy
ZTRjZjMxN2MyZjg0ZTJlMTM5N2Q4NTE0MTFiNTk2N2UwZTIuLmJmNGExOWQ1OTI3ZGZkZTFhOWZm
NmYyNGEzZTliNWY2Yzc4MGJlOWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9K
YXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0y
MTg0LDYgKzIxODQsNyBAQAogCQlFMzNGNTA4NTFCODQzN0EwMDA0MTM4NTYgLyogSlNJbnRlcm5h
bFByb21pc2VEZWZlcnJlZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRTMzRjUwODMxQjg0MzdBMDAwNDEzODU2IC8qIEpTSW50ZXJuYWxQcm9taXNlRGVm
ZXJyZWQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQlFMzNGNTA4NzFCODQ0OUVGMDA0MTM4NTYgLyogSlNJbnRlcm5hbFByb21pc2VDb25zdHJ1Y3Rv
ci5sdXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUz
M0Y1MDg2MUI4NDQ5RUYwMDQxMzg1NiAvKiBKU0ludGVybmFsUHJvbWlzZUNvbnN0cnVjdG9yLmx1
dC5oICovOyB9OwogCQlFMzRFREJGNzFEQjVGRkM5MDBEQzg3QTUgLyogRnJhbWVUcmFjZXJzLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzRFREJGNjFE
QjVGRkMxMDBEQzg3QTUgLyogRnJhbWVUcmFjZXJzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJRTM1MDcwOEExREM0OUJCRjAwODlCQ0Q2IC8qIERP
TUpJVFNpZ25hdHVyZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gRTM1MDcwODkxREM0OUJCNjAwODlCQ0Q2IC8qIERPTUpJVFNpZ25hdHVyZS5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUUzNTQ2MjJCMUI2
MDY1RDEwMDU0NTM4NiAvKiBDb25zdHJ1Y3RBYmlsaXR5LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzU0NjIyQTFCNjA2NUQxMDA1NDUzODYgLyogQ29u
c3RydWN0QWJpbGl0eS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCUUzNTU1QjhBMURBRTAzQTUwMEYzNjkyMSAvKiBET01KSVRDYWxsRE9NR2V0dGVy
UGF0Y2hwb2ludC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRTM1NTVCODkxREFFMDNBMjAwRjM2OTIxIC8qIERPTUpJVENhbGxET01HZXR0ZXJQYXRjaHBv
aW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
RTM1NUYzNTIxQjdEQzg1MzAwQzUwREM1IC8qIE1vZHVsZUxvYWRlclByb3RvdHlwZS5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzU1RjM1MDFCN0RD
ODUzMDBDNTBEQzUgLyogTW9kdWxlTG9hZGVyUHJvdG90eXBlLmNwcCAqLzsgfTsKQEAgLTQ1ODYs
NiArNDU4Nyw3IEBACiAJCUUzM0Y1MDg2MUI4NDQ5RUYwMDQxMzg1NiAvKiBKU0ludGVybmFsUHJv
bWlzZUNvbnN0cnVjdG9yLmx1dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBK
U0ludGVybmFsUHJvbWlzZUNvbnN0cnVjdG9yLmx1dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlFMzNGNTA4ODFCODQ0QTFBMDA0MTM4NTYgLyogSW50ZXJuYWxQcm9taXNlQ29uc3Ry
dWN0b3IuanMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmphdmFzY3JpcHQ7IHBhdGggPSBJbnRlcm5h
bFByb21pc2VDb25zdHJ1Y3Rvci5qczsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM0
RURCRjYxREI1RkZDMTAwREM4N0E1IC8qIEZyYW1lVHJhY2Vycy5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBGcmFtZVRyYWNlcnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJRTM1MDcwODkxREM0OUJCNjAwODlCQ0Q2IC8qIERPTUpJVFNpZ25hdHVyZS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBET01KSVRTaWduYXR1cmUuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM1NDYyMkExQjYwNjVEMTAwNTQ1Mzg2IC8qIENvbnN0cnVj
dEFiaWxpdHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29uc3RydWN0QWJp
bGl0eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzU1NUI4OTFEQUUwM0EyMDBG
MzY5MjEgLyogRE9NSklUQ2FsbERPTUdldHRlclBhdGNocG9pbnQuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gRE9NSklUQ2FsbERPTUdldHRlclBhdGNocG9pbnQuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM1NUYzNTAxQjdEQzg1MzAwQzUwREM1IC8qIE1vZHVs
ZUxvYWRlclByb3RvdHlwZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBNb2R1bGVMb2FkZXJQcm90b3R5cGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpA
QCAtNzUwMyw2ICs3NTA1LDcgQEAKIAkJCQlFMzdBRDgzQTFEQTQ5MjgwMDBGM0Q0MTIgLyogRE9N
SklUUGF0Y2hwb2ludFBhcmFtcy5oICovLAogCQkJCUUzN0FEODNCMURBNDkyODAwMEYzRDQxMiAv
KiBET01KSVRSZWcuaCAqLywKIAkJCQlFM0NCMUUyNDFEQTc1NDBBMDBGQTFFNTYgLyogRE9NSklU
U2xvd1BhdGhDYWxscy5oICovLAorCQkJCUUzNTA3MDg5MURDNDlCQjYwMDg5QkNENiAvKiBET01K
SVRTaWduYXR1cmUuaCAqLywKIAkJCQlFM0ZGQzg1MjFEQUQ3RDEwMDBERUE1M0UgLyogRE9NSklU
VmFsdWUuaCAqLywKIAkJCSk7CiAJCQlwYXRoID0gZG9taml0OwpAQCAtODQyMyw2ICs4NDI2LDcg
QEAKIAkJCQk0M0FCMjZDNjFDMUE1MzU5MDBEODJBRTYgLyogQjNNYXRoRXh0cmFzLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlBRDJGQ0JGMzFEQjU4REFEMDBCM0U3MzYgLyogV2ViQXNzZW1ibHlJbnN0
YW5jZVByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxOEM0MjkwRTE2RjVDRDAwQjM0
NDYwIC8qIEpTU3RyaW5nUmVmQ0YuaCBpbiBIZWFkZXJzICovLAorCQkJCUUzNTA3MDhBMURDNDlC
QkYwMDg5QkNENiAvKiBET01KSVRTaWduYXR1cmUuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBMjhE
NEE4MTc3QjcxQzgwMDA3RkEzQyAvKiBKU1N0cmluZ1JlZlByaXZhdGUuaCBpbiBIZWFkZXJzICov
LAogCQkJCTBGOTE5RDBEMTU3RUUwQTIwMDRBNEU3RCAvKiBKU1N5bWJvbFRhYmxlT2JqZWN0Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQk3MEVDQTYwNjFBRkRCRUEyMDA0NDk3MzkgLyogSlNUZW1wbGF0
ZVJlZ2lzdHJ5S2V5LmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9DYWxsVmFyaWFudC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0NhbGxWYXJpYW50LmgKaW5kZXggZGU2ODgwMDZlZjFhOTllOWRkNjBiMDFhNmUwMTc3
Y2I5OGVjN2I1MS4uY2IyODhjNjBiN2E0ZjEzOGJhZjIxNDI4NDllMTM5MWE4ZDExMWJhNyAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxWYXJpYW50LmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxWYXJpYW50LmgKQEAgLTI4LDYg
KzI4LDcgQEAKICNpbmNsdWRlICJGdW5jdGlvbkV4ZWN1dGFibGUuaCIKICNpbmNsdWRlICJKU0Nl
bGwuaCIKICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCisjaW5jbHVkZSAiTmF0aXZlRXhlY3V0YWJs
ZS5oIgogCiBuYW1lc3BhY2UgSlNDIHsKIApAQCAtMTIwLDYgKzEyMSwyMCBAQCBjbGFzcyBDYWxs
VmFyaWFudCB7CiAgICAgICAgICAgICByZXR1cm4ganNEeW5hbWljQ2FzdDxGdW5jdGlvbkV4ZWN1
dGFibGUqPihleGVjdXRhYmxlKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQorCisg
ICAgTmF0aXZlRXhlY3V0YWJsZSogbmF0aXZlRXhlY3V0YWJsZSgpIGNvbnN0CisgICAgeworICAg
ICAgICBpZiAoRXhlY3V0YWJsZUJhc2UqIGV4ZWN1dGFibGUgPSB0aGlzLT5leGVjdXRhYmxlKCkp
CisgICAgICAgICAgICByZXR1cm4ganNEeW5hbWljQ2FzdDxOYXRpdmVFeGVjdXRhYmxlKj4oZXhl
Y3V0YWJsZSk7CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KKworICAgIGNvbnN0IERP
TUpJVDo6U2lnbmF0dXJlKiBzaWduYXR1cmVGb3IoQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5k
KSBjb25zdAorICAgIHsKKyAgICAgICAgaWYgKE5hdGl2ZUV4ZWN1dGFibGUqIG5hdGl2ZUV4ZWN1
dGFibGUgPSB0aGlzLT5uYXRpdmVFeGVjdXRhYmxlKCkpCisgICAgICAgICAgICByZXR1cm4gbmF0
aXZlRXhlY3V0YWJsZS0+c2lnbmF0dXJlRm9yKGtpbmQpOworICAgICAgICByZXR1cm4gbnVsbHB0
cjsKKyAgICB9CiAgICAgCiAgICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0Owog
ICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NwZWN1bGF0
ZWRUeXBlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3BlY3VsYXRlZFR5cGUu
aAppbmRleCBmNDNkZmNkMzE1ODcxZTk4OTUzZWEyZGRkYzRiZjMzNTI1Y2NkZmRmLi5lMjNmZDJj
NWY1NGNlZTA5YzdhMjNiZGMxNDk5OTBiNjA5YjAxOTAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3BlY3VsYXRlZFR5cGUuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvU3BlY3VsYXRlZFR5cGUuaApAQCAtMTUxLDYgKzE1MSwxMSBAQCBp
bmxpbmUgYm9vbCBpc1N0cmluZ1NwZWN1bGF0aW9uKFNwZWN1bGF0ZWRUeXBlIHZhbHVlKQogICAg
IHJldHVybiAhIXZhbHVlICYmICh2YWx1ZSAmIFNwZWNTdHJpbmcpID09IHZhbHVlOwogfQogCitp
bmxpbmUgYm9vbCBpc05vdFN0cmluZ1NwZWN1bGF0aW9uKFNwZWN1bGF0ZWRUeXBlIHZhbHVlKQor
eworICAgIHJldHVybiB2YWx1ZSAmJiAhKHZhbHVlICYgU3BlY1N0cmluZyk7Cit9CisKIGlubGlu
ZSBib29sIGlzU3RyaW5nT3JPdGhlclNwZWN1bGF0aW9uKFNwZWN1bGF0ZWRUeXBlIHZhbHVlKQog
ewogICAgIHJldHVybiAhIXZhbHVlICYmICh2YWx1ZSAmIChTcGVjU3RyaW5nIHwgU3BlY090aGVy
KSkgPT0gdmFsdWU7CkBAIC0zMDMsNiArMzA4LDExIEBAIGlubGluZSBib29sIGlzSW50MzJTcGVj
dWxhdGlvbihTcGVjdWxhdGVkVHlwZSB2YWx1ZSkKICAgICByZXR1cm4gdmFsdWUgJiYgISh2YWx1
ZSAmIH5TcGVjSW50MzJPbmx5KTsKIH0KIAoraW5saW5lIGJvb2wgaXNOb3RJbnQzMlNwZWN1bGF0
aW9uKFNwZWN1bGF0ZWRUeXBlIHZhbHVlKQoreworICAgIHJldHVybiB2YWx1ZSAmJiAhKHZhbHVl
ICYgU3BlY0ludDMyT25seSk7Cit9CisKIGlubGluZSBib29sIGlzSW50MzJPckJvb2xlYW5TcGVj
dWxhdGlvbihTcGVjdWxhdGVkVHlwZSB2YWx1ZSkKIHsKICAgICByZXR1cm4gdmFsdWUgJiYgISh2
YWx1ZSAmIH4oU3BlY0Jvb2xlYW4gfCBTcGVjSW50MzJPbmx5KSk7CkBAIC0zODgsNiArMzk4LDEx
IEBAIGlubGluZSBib29sIGlzQm9vbGVhblNwZWN1bGF0aW9uKFNwZWN1bGF0ZWRUeXBlIHZhbHVl
KQogICAgIHJldHVybiB2YWx1ZSA9PSBTcGVjQm9vbGVhbjsKIH0KIAoraW5saW5lIGJvb2wgaXNO
b3RCb29sZWFuU3BlY3VsYXRpb24oU3BlY3VsYXRlZFR5cGUgdmFsdWUpCit7CisgICAgcmV0dXJu
IHZhbHVlICYmICEodmFsdWUgJiBTcGVjQm9vbGVhbik7Cit9CisKIGlubGluZSBib29sIGlzT3Ro
ZXJTcGVjdWxhdGlvbihTcGVjdWxhdGVkVHlwZSB2YWx1ZSkKIHsKICAgICByZXR1cm4gdmFsdWUg
PT0gU3BlY090aGVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdB
YnN0cmFjdEludGVycHJldGVySW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCmluZGV4IDQzYjUxYTE2ZWNiYWRhNTBmOWQ3
Zjg4ZWVlM2NmMTEyNmI3YTIyNGEuLjdhZGJhNzE2MDE0NjE1MTA3MmVmNjk5ZDIyNmEyYWYzY2Vh
MDhkMDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJ
bnRlcnByZXRlcklubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fi
c3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJB
cnJheUNvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAiREZHQWJzdHJhY3RJbnRlcnByZXRlci5oIgog
I2luY2x1ZGUgIkRPTUpJVEdldHRlclNldHRlci5oIgorI2luY2x1ZGUgIkRPTUpJVFNpZ25hdHVy
ZS5oIgogI2luY2x1ZGUgIkdldEJ5SWRTdGF0dXMuaCIKICNpbmNsdWRlICJHZXR0ZXJTZXR0ZXIu
aCIKICNpbmNsdWRlICJIYXNoTWFwSW1wbC5oIgpAQCAtMjMwMyw2ICsyMzA0LDEzIEBAIGJvb2wg
QWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3RzKHVu
c2lnbmVkIGNsb2JiZXJMaW1pCiAgICAgICAgIGZvck5vZGUobm9kZSkuc2V0VHlwZShtX2dyYXBo
LCBjYWxsRE9NR2V0dGVyRGF0YS0+ZG9tSklULT5yZXN1bHRUeXBlKCkpOwogICAgICAgICBicmVh
azsKICAgICB9CisgICAgY2FzZSBDYWxsRE9NOiB7CisgICAgICAgIGNvbnN0IERPTUpJVDo6U2ln
bmF0dXJlKiBzaWduYXR1cmUgPSBub2RlLT5zaWduYXR1cmUoKTsKKyAgICAgICAgaWYgKHNpZ25h
dHVyZS0+ZWZmZWN0LndyaXRlcykKKyAgICAgICAgICAgIGNsb2JiZXJXb3JsZChub2RlLT5vcmln
aW4uc2VtYW50aWMsIGNsb2JiZXJMaW1pdCk7CisgICAgICAgIGZvck5vZGUobm9kZSkuc2V0VHlw
ZShtX2dyYXBoLCBzaWduYXR1cmUtPnJlc3VsdCk7CisgICAgICAgIGJyZWFrOworICAgIH0KICAg
ICBjYXNlIENoZWNrQXJyYXk6IHsKICAgICAgICAgaWYgKG5vZGUtPmFycmF5TW9kZSgpLmFscmVh
ZHlDaGVja2VkKG1fZ3JhcGgsIG5vZGUsIGZvck5vZGUobm9kZS0+Y2hpbGQxKCkpKSkgewogICAg
ICAgICAgICAgbV9zdGF0ZS5zZXRGb3VuZENvbnN0YW50cyh0cnVlKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKaW5kZXggMzVkYzA3ODZhODkz
Nzg1ZjcwZjdiMzJjMGNmN2JjZGRlOWE3ZWRkOS4uMGMyNjFkMWM5NDlhYzFkODM5Y2MxZDkzZTdl
Yjk3Y2NiNDBiZDQxNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdC
eXRlQ29kZVBhcnNlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRl
Q29kZVBhcnNlci5jcHAKQEAgLTIxMiw2ICsyMTIsOCBAQCBjbGFzcyBCeXRlQ29kZVBhcnNlciB7
CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hlY2tzRnVuY3Rvcj4KICAgICBib29sIGhhbmRsZUlu
dHJpbnNpY0NhbGwoTm9kZSogY2FsbGVlLCBpbnQgcmVzdWx0T3BlcmFuZCwgSW50cmluc2ljLCBp
bnQgcmVnaXN0ZXJPZmZzZXQsIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgU3BlY3Vs
YXRlZFR5cGUgcHJlZGljdGlvbiwgY29uc3QgQ2hlY2tzRnVuY3RvciYgaW5zZXJ0Q2hlY2tzKTsK
ICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGVja3NGdW5jdG9yPgorICAgIGJvb2wgaGFuZGxlRE9N
SklUQ2FsbChOb2RlKiBjYWxsZWUsIGludCByZXN1bHRPcGVyYW5kLCBjb25zdCBET01KSVQ6OlNp
Z25hdHVyZSosIGludCByZWdpc3Rlck9mZnNldCwgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdU
aGlzLCBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uLCBjb25zdCBDaGVja3NGdW5jdG9yJiBpbnNl
cnRDaGVja3MpOworICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoZWNrc0Z1bmN0b3I+CiAgICAgYm9v
bCBoYW5kbGVJbnRyaW5zaWNHZXR0ZXIoaW50IHJlc3VsdE9wZXJhbmQsIGNvbnN0IEdldEJ5SWRW
YXJpYW50JiBpbnRyaW5zaWNWYXJpYW50LCBOb2RlKiB0aGlzTm9kZSwgY29uc3QgQ2hlY2tzRnVu
Y3RvciYgaW5zZXJ0Q2hlY2tzKTsKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGVja3NGdW5jdG9y
PgogICAgIGJvb2wgaGFuZGxlVHlwZWRBcnJheUNvbnN0cnVjdG9yKGludCByZXN1bHRPcGVyYW5k
LCBJbnRlcm5hbEZ1bmN0aW9uKiwgaW50IHJlZ2lzdGVyT2Zmc2V0LCBpbnQgYXJndW1lbnRDb3Vu
dEluY2x1ZGluZ1RoaXMsIFR5cGVkQXJyYXlUeXBlLCBjb25zdCBDaGVja3NGdW5jdG9yJiBpbnNl
cnRDaGVja3MpOwpAQCAtODE3LDE4ICs4MTksMTggQEAgY2xhc3MgQnl0ZUNvZGVQYXJzZXIgewog
ICAgIH0KICAgICAKICAgICBOb2RlKiBhZGRDYWxsKAotICAgICAgICBpbnQgcmVzdWx0LCBOb2Rl
VHlwZSBvcCwgT3BJbmZvIG9wSW5mbywgTm9kZSogY2FsbGVlLCBpbnQgYXJnQ291bnQsIGludCBy
ZWdpc3Rlck9mZnNldCwKKyAgICAgICAgaW50IHJlc3VsdCwgTm9kZVR5cGUgb3AsIGNvbnN0IERP
TUpJVDo6U2lnbmF0dXJlKiBzaWduYXR1cmUsIE5vZGUqIGNhbGxlZSwgaW50IGFyZ0NvdW50LCBp
bnQgcmVnaXN0ZXJPZmZzZXQsCiAgICAgICAgIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24pCiAg
ICAgewogICAgICAgICBpZiAob3AgPT0gVGFpbENhbGwpIHsKICAgICAgICAgICAgIGlmIChhbGxJ
bmxpbmVGcmFtZXNBcmVUYWlsQ2FsbHMoKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gYWRkQ2Fs
bFdpdGhvdXRTZXR0aW5nUmVzdWx0KG9wLCBPcEluZm8oKSwgY2FsbGVlLCBhcmdDb3VudCwgcmVn
aXN0ZXJPZmZzZXQsIE9wSW5mbygpKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gYWRkQ2FsbFdp
dGhvdXRTZXR0aW5nUmVzdWx0KG9wLCBPcEluZm8oc2lnbmF0dXJlKSwgY2FsbGVlLCBhcmdDb3Vu
dCwgcmVnaXN0ZXJPZmZzZXQsIE9wSW5mbygpKTsKICAgICAgICAgICAgIG9wID0gVGFpbENhbGxJ
bmxpbmVkQ2FsbGVyOwogICAgICAgICB9CiAKIAogICAgICAgICBOb2RlKiBjYWxsID0gYWRkQ2Fs
bFdpdGhvdXRTZXR0aW5nUmVzdWx0KAotICAgICAgICAgICAgb3AsIG9wSW5mbywgY2FsbGVlLCBh
cmdDb3VudCwgcmVnaXN0ZXJPZmZzZXQsIE9wSW5mbyhwcmVkaWN0aW9uKSk7CisgICAgICAgICAg
ICBvcCwgT3BJbmZvKHNpZ25hdHVyZSksIGNhbGxlZSwgYXJnQ291bnQsIHJlZ2lzdGVyT2Zmc2V0
LCBPcEluZm8ocHJlZGljdGlvbikpOwogICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgcmVzdWx0UmVn
KHJlc3VsdCk7CiAgICAgICAgIGlmIChyZXN1bHRSZWcuaXNWYWxpZCgpKQogICAgICAgICAgICAg
c2V0KHJlc3VsdFJlZywgY2FsbCk7CkBAIC0xMjgzLDcgKzEyODUsNyBAQCBCeXRlQ29kZVBhcnNl
cjo6VGVybWluYWxpdHkgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUNhbGwoCiAgICAgICAgIC8vIE9k
ZGx5LCB0aGlzIGNvbmZsYXRlcyBjYWxscyB0aGF0IGhhdmVuJ3QgZXhlY3V0ZWQgd2l0aCBjYWxs
cyB0aGF0IGJlaGF2ZWQgc3VmZmljaWVudGx5IHBvbHltb3JwaGljYWxseQogICAgICAgICAvLyB0
aGF0IHdlIGNhbm5vdCBvcHRpbWl6ZSB0aGVtLgogCi0gICAgICAgIE5vZGUqIGNhbGxOb2RlID0g
YWRkQ2FsbChyZXN1bHQsIG9wLCBPcEluZm8oKSwgY2FsbFRhcmdldCwgYXJndW1lbnRDb3VudElu
Y2x1ZGluZ1RoaXMsIHJlZ2lzdGVyT2Zmc2V0LCBwcmVkaWN0aW9uKTsKKyAgICAgICAgTm9kZSog
Y2FsbE5vZGUgPSBhZGRDYWxsKHJlc3VsdCwgb3AsIG51bGxwdHIsIGNhbGxUYXJnZXQsIGFyZ3Vt
ZW50Q291bnRJbmNsdWRpbmdUaGlzLCByZWdpc3Rlck9mZnNldCwgcHJlZGljdGlvbik7CiAgICAg
ICAgIGlmIChjYWxsTm9kZS0+b3AoKSA9PSBUYWlsQ2FsbCkKICAgICAgICAgICAgIHJldHVybiBU
ZXJtaW5hbDsKICAgICAgICAgQVNTRVJUKGNhbGxOb2RlLT5vcCgpICE9IFRhaWxDYWxsVmFyYXJn
cyAmJiBjYWxsTm9kZS0+b3AoKSAhPSBUYWlsQ2FsbEZvcndhcmRWYXJhcmdzKTsKQEAgLTEyOTgs
NyArMTMwMCw3IEBAIEJ5dGVDb2RlUGFyc2VyOjpUZXJtaW5hbGl0eSBCeXRlQ29kZVBhcnNlcjo6
aGFuZGxlQ2FsbCgKICAgICAgICAgcmV0dXJuIE5vblRlcm1pbmFsOwogICAgIH0KICAgICAKLSAg
ICBOb2RlKiBjYWxsTm9kZSA9IGFkZENhbGwocmVzdWx0LCBvcCwgT3BJbmZvKCksIGNhbGxUYXJn
ZXQsIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCByZWdpc3Rlck9mZnNldCwgcHJlZGljdGlv
bik7CisgICAgTm9kZSogY2FsbE5vZGUgPSBhZGRDYWxsKHJlc3VsdCwgb3AsIG51bGxwdHIsIGNh
bGxUYXJnZXQsIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCByZWdpc3Rlck9mZnNldCwgcHJl
ZGljdGlvbik7CiAgICAgaWYgKGNhbGxOb2RlLT5vcCgpID09IFRhaWxDYWxsKQogICAgICAgICBy
ZXR1cm4gVGVybWluYWw7CiAgICAgQVNTRVJUKGNhbGxOb2RlLT5vcCgpICE9IFRhaWxDYWxsVmFy
YXJncyAmJiBjYWxsTm9kZS0+b3AoKSAhPSBUYWlsQ2FsbEZvcndhcmRWYXJhcmdzKTsKQEAgLTE3
MjUsNiArMTcyNywxOSBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjphdHRlbXB0VG9JbmxpbmVDYWxs
KE5vZGUqIGNhbGxUYXJnZXROb2RlLCBpbnQgcmVzdWx0T3BlcmFuZAogICAgICAgICAgICAgUkVM
RUFTRV9BU1NFUlQoIWRpZEluc2VydENoZWNrcyk7CiAgICAgICAgICAgICAvLyBXZSBtaWdodCBz
dGlsbCB0cnkgdG8gaW5saW5lIHRoZSBJbnRyaW5zaWMgYmVjYXVzZSBpdCBtaWdodCBiZSBhIGJ1
aWx0aW4gSlMgZnVuY3Rpb24uCiAgICAgICAgIH0KKworICAgICAgICBpZiAoT3B0aW9uczo6dXNl
RE9NSklUKCkpIHsKKyAgICAgICAgICAgIGlmIChjb25zdCBET01KSVQ6OlNpZ25hdHVyZSogc2ln
bmF0dXJlID0gY2FsbGVlLnNpZ25hdHVyZUZvcihzcGVjaWFsaXphdGlvbktpbmQpKSB7CisgICAg
ICAgICAgICAgICAgaWYgKGhhbmRsZURPTUpJVENhbGwoY2FsbFRhcmdldE5vZGUsIHJlc3VsdE9w
ZXJhbmQsIHNpZ25hdHVyZSwgcmVnaXN0ZXJPZmZzZXQsIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdU
aGlzLCBwcmVkaWN0aW9uLCBpbnNlcnRDaGVja3NXaXRoQWNjb3VudGluZykpIHsKKyAgICAgICAg
ICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoZGlkSW5zZXJ0Q2hlY2tzKTsKKyAgICAgICAgICAg
ICAgICAgICAgYWRkVG9HcmFwaChQaGFudG9tLCBjYWxsVGFyZ2V0Tm9kZSk7CisgICAgICAgICAg
ICAgICAgICAgIGVtaXRBcmd1bWVudFBoYW50b21zKHJlZ2lzdGVyT2Zmc2V0LCBhcmd1bWVudENv
dW50SW5jbHVkaW5nVGhpcyk7CisgICAgICAgICAgICAgICAgICAgIGlubGluaW5nQmFsYW5jZS0t
OworICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoIWRpZEluc2VydENoZWNrcyk7CisgICAgICAg
ICAgICB9CisgICAgICAgIH0KICAgICB9CiAgICAgCiAgICAgdW5zaWduZWQgbXlJbmxpbmluZ0Nv
c3QgPSBpbmxpbmluZ0Nvc3QoY2FsbGVlLCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgSW5s
aW5lQ2FsbEZyYW1lOjpjYWxsTW9kZUZvcihraW5kKSk7CkBAIC0yMDUwLDcgKzIwNjUsNyBAQCBi
b29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbmxpbmluZygKICAgICBOb2RlKiBteUNhbGxUYXJn
ZXROb2RlID0gZ2V0RGlyZWN0KGNhbGxlZVJlZyk7CiAgICAgaWYgKGNvdWxkVGFrZVNsb3dQYXRo
KSB7CiAgICAgICAgIGFkZENhbGwoCi0gICAgICAgICAgICByZXN1bHRPcGVyYW5kLCBjYWxsT3As
IE9wSW5mbygpLCBteUNhbGxUYXJnZXROb2RlLCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywK
KyAgICAgICAgICAgIHJlc3VsdE9wZXJhbmQsIGNhbGxPcCwgbnVsbHB0ciwgbXlDYWxsVGFyZ2V0
Tm9kZSwgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsCiAgICAgICAgICAgICByZWdpc3Rlck9m
ZnNldCwgcHJlZGljdGlvbik7CiAgICAgfSBlbHNlIHsKICAgICAgICAgYWRkVG9HcmFwaChDaGVj
a0JhZENlbGwpOwpAQCAtMjYwMCw2ICsyNjE1LDIwIEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6Omhh
bmRsZUludHJpbnNpY0NhbGwoTm9kZSogY2FsbGVlLCBpbnQgcmVzdWx0T3BlcmFuZCwgSW50cmlu
CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIENoZWNrc0Z1bmN0b3I+Citib29sIEJ5dGVDb2RlUGFy
c2VyOjpoYW5kbGVET01KSVRDYWxsKE5vZGUqIGNhbGxUYXJnZXQsIGludCByZXN1bHRPcGVyYW5k
LCBjb25zdCBET01KSVQ6OlNpZ25hdHVyZSogc2lnbmF0dXJlLCBpbnQgcmVnaXN0ZXJPZmZzZXQs
IGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlv
biwgY29uc3QgQ2hlY2tzRnVuY3RvciYgaW5zZXJ0Q2hlY2tzKQoreworICAgIGlmIChhcmd1bWVu
dENvdW50SW5jbHVkaW5nVGhpcyAhPSBzdGF0aWNfY2FzdDxpbnQ+KDEgKyBzaWduYXR1cmUtPmFy
Z3VtZW50Q291bnQpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKG1faW5saW5lU3Rh
Y2tUb3AtPm1fZXhpdFByb2ZpbGUuaGFzRXhpdFNpdGUobV9jdXJyZW50SW5kZXgsIEJhZFR5cGUp
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpbnNlcnRDaGVja3MoKTsKKyAgICBhZGRD
YWxsKHJlc3VsdE9wZXJhbmQsIENhbGwsIHNpZ25hdHVyZSwgY2FsbFRhcmdldCwgYXJndW1lbnRD
b3VudEluY2x1ZGluZ1RoaXMsIHJlZ2lzdGVyT2Zmc2V0LCBwcmVkaWN0aW9uKTsKKyAgICByZXR1
cm4gdHJ1ZTsKK30KKworCit0ZW1wbGF0ZTx0eXBlbmFtZSBDaGVja3NGdW5jdG9yPgogYm9vbCBC
eXRlQ29kZVBhcnNlcjo6aGFuZGxlSW50cmluc2ljR2V0dGVyKGludCByZXN1bHRPcGVyYW5kLCBj
b25zdCBHZXRCeUlkVmFyaWFudCYgdmFyaWFudCwgTm9kZSogdGhpc05vZGUsIGNvbnN0IENoZWNr
c0Z1bmN0b3ImIGluc2VydENoZWNrcykKIHsKICAgICBzd2l0Y2ggKHZhcmlhbnQuaW50cmluc2lj
KCkpIHsKQEAgLTQ3OTEsNyArNDgyMCw3IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxv
Y2sodW5zaWduZWQgbGltaXQpCiAgICAgICAgICAgICBpbnQgY2FsbGVlID0gY3VycmVudEluc3Ry
dWN0aW9uWzJdLnUub3BlcmFuZDsKICAgICAgICAgICAgIGludCBhcmd1bWVudENvdW50SW5jbHVk
aW5nVGhpcyA9IGN1cnJlbnRJbnN0cnVjdGlvblszXS51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBp
bnQgcmVnaXN0ZXJPZmZzZXQgPSAtY3VycmVudEluc3RydWN0aW9uWzRdLnUub3BlcmFuZDsKLSAg
ICAgICAgICAgIGFkZENhbGwocmVzdWx0LCBDYWxsRXZhbCwgT3BJbmZvKCksIGdldChWaXJ0dWFs
UmVnaXN0ZXIoY2FsbGVlKSksIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCByZWdpc3Rlck9m
ZnNldCwgZ2V0UHJlZGljdGlvbigpKTsKKyAgICAgICAgICAgIGFkZENhbGwocmVzdWx0LCBDYWxs
RXZhbCwgbnVsbHB0ciwgZ2V0KFZpcnR1YWxSZWdpc3RlcihjYWxsZWUpKSwgYXJndW1lbnRDb3Vu
dEluY2x1ZGluZ1RoaXMsIHJlZ2lzdGVyT2Zmc2V0LCBnZXRQcmVkaWN0aW9uKCkpOwogICAgICAg
ICAgICAgTkVYVF9PUENPREUob3BfY2FsbF9ldmFsKTsKICAgICAgICAgfQogICAgICAgICAgICAg
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCmluZGV4IGI2MjFlZjAy
MmQ4ODY1ZTJlN2EyMDExNmNkMjA4YzVjMjQ2YzlmZmIuLmU1ZDIxNzJmOWFlMGU3OTFhYWEyYTY4
MmJhYjE0ZWJhOTMwNjdkYmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQ2xvYmJlcml6ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJl
cml6ZS5oCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAiREZHTGF6eU5vZGUuaCIKICNpbmNs
dWRlICJERkdQdXJlVmFsdWUuaCIKICNpbmNsdWRlICJET01KSVRDYWxsRE9NR2V0dGVyUGF0Y2hw
b2ludC5oIgorI2luY2x1ZGUgIkRPTUpJVFNpZ25hdHVyZS5oIgogCiBuYW1lc3BhY2UgSlNDIHsg
bmFtZXNwYWNlIERGRyB7CiAKQEAgLTk1OCwyMCArOTU5LDM4IEBAIHZvaWQgY2xvYmJlcml6ZShH
cmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUsIGNvbnN0IFJlYWRGdW5jdG9yJiByZWFkLCBjb25zdCBX
cml0ZUZ1CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgd3JpdGUoQWJzdHJhY3RI
ZWFwKERPTVN0YXRlLCBlZmZlY3Qud3JpdGVzLnJhd1JlcHJlc2VudGF0aW9uKCkpKTsKICAgICAg
ICAgfQotICAgICAgICBpZiAoZWZmZWN0LmRlZikgewotICAgICAgICAgICAgRE9NSklUOjpIZWFw
UmFuZ2UgcmFuZ2UgPSBlZmZlY3QuZGVmLnZhbHVlKCk7CisgICAgICAgIGlmIChlZmZlY3QuZGVm
ICE9IERPTUpJVDo6SGVhcFJhbmdlOjp0b3AoKSkgeworICAgICAgICAgICAgRE9NSklUOjpIZWFw
UmFuZ2UgcmFuZ2UgPSBlZmZlY3QuZGVmOwogICAgICAgICAgICAgaWYgKHJhbmdlID09IERPTUpJ
VDo6SGVhcFJhbmdlOjpub25lKCkpCiAgICAgICAgICAgICAgICAgZGVmKFB1cmVWYWx1ZShub2Rl
LCBub2RlLT5jYWxsRE9NR2V0dGVyRGF0YSgpLT5kb21KSVQpKTsKICAgICAgICAgICAgIGVsc2Ug
ewogICAgICAgICAgICAgICAgIC8vIERlZiB3aXRoIGhlYXAgbG9jYXRpb24uIFdlIGRvIG5vdCBp
bmNsdWRlICJHbG9iYWxPYmplY3QiIGZvciB0aGF0IHNpbmNlIHRoaXMgaW5mb3JtYXRpb24gaXMg
aW5jbHVkZWQgaW4gdGhlIGJhc2Ugbm9kZS4KLSAgICAgICAgICAgICAgICAvLyBGSVhNRTogV2hl
biBzdXBwb3J0aW5nIHRoZSBvdGhlciBub2RlcyBsaWtlIGdldEVsZW1lbnRCeUlkKCJzdHJpbmci
KSwgd2Ugc2hvdWxkIGluY2x1ZGUgdGhlIGJhc2UgYW5kIHRoZSBpZCBzdHJpbmcuCi0gICAgICAg
ICAgICAgICAgLy8gQ3VycmVudGx5LCB3ZSBvbmx5IHNlZSB0aGUgRE9NSklUIGdldHRlciBoZXJl
LiBTbyBqdXN0IGluY2x1ZGluZyAiYmFzZSIgaXMgb2suCisgICAgICAgICAgICAgICAgLy8gV2Ug
b25seSBzZWUgdGhlIERPTUpJVCBnZXR0ZXIgaGVyZS4gU28ganVzdCBpbmNsdWRpbmcgImJhc2Ui
IGlzIG9rLgogICAgICAgICAgICAgICAgIGRlZihIZWFwTG9jYXRpb24oRE9NU3RhdGVMb2MsIEFi
c3RyYWN0SGVhcChET01TdGF0ZSwgcmFuZ2UucmF3UmVwcmVzZW50YXRpb24oKSksIG5vZGUtPmNo
aWxkMSgpKSwgTGF6eU5vZGUobm9kZSkpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKKyAgICBjYXNlIENhbGxET006IHsKKyAgICAgICAgY29uc3Qg
RE9NSklUOjpTaWduYXR1cmUqIHNpZ25hdHVyZSA9IG5vZGUtPnNpZ25hdHVyZSgpOworICAgICAg
ICBET01KSVQ6OkVmZmVjdCBlZmZlY3QgPSBzaWduYXR1cmUtPmVmZmVjdDsKKyAgICAgICAgaWYg
KGVmZmVjdC5yZWFkcykgeworICAgICAgICAgICAgaWYgKGVmZmVjdC5yZWFkcyA9PSBET01KSVQ6
OkhlYXBSYW5nZTo6dG9wKCkpCisgICAgICAgICAgICAgICAgcmVhZChXb3JsZCk7CisgICAgICAg
ICAgICBlbHNlCisgICAgICAgICAgICAgICAgcmVhZChBYnN0cmFjdEhlYXAoRE9NU3RhdGUsIGVm
ZmVjdC5yZWFkcy5yYXdSZXByZXNlbnRhdGlvbigpKSk7CisgICAgICAgIH0KKyAgICAgICAgaWYg
KGVmZmVjdC53cml0ZXMpIHsKKyAgICAgICAgICAgIGlmIChlZmZlY3Qud3JpdGVzID09IERPTUpJ
VDo6SGVhcFJhbmdlOjp0b3AoKSkKKyAgICAgICAgICAgICAgICB3cml0ZShIZWFwKTsKKyAgICAg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB3cml0ZShBYnN0cmFjdEhlYXAoRE9NU3RhdGUs
IGVmZmVjdC53cml0ZXMucmF3UmVwcmVzZW50YXRpb24oKSkpOworICAgICAgICB9CisgICAgICAg
IEFTU0VSVF9XSVRIX01FU1NBR0UoZWZmZWN0LmRlZiA9PSBET01KSVQ6OkhlYXBSYW5nZTo6dG9w
KCksICJDdXJyZW50bHksIHdlIGRvIG5vdCBhY2NlcHQgYW55IGRlZiBmb3IgQ2FsbERPTS4iKTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKwogICAgIGNhc2UgQXJyYXlpZnk6CiAgICAgY2FzZSBB
cnJheWlmeVRvU3RydWN0dXJlOgogICAgICAgICByZWFkKEpTQ2VsbF9zdHJ1Y3R1cmVJRCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAKaW5kZXggOTdjZDg0ODc0NzdhYzkw
ODRmZTkwZGRiOThkMzBmNDY2ZTVjYTE2Zi4uOWU2YWE1NTBhNDRlMGUxYzYyMTc1ZTUxOWY2MGEz
ZTg1MTVhN2I3YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2Vz
R0MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcApAQCAt
MzAxLDYgKzMwMSw3IEBAIGJvb2wgZG9lc0dDKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSkKICAg
ICBjYXNlIENyZWF0ZVJlc3Q6CiAgICAgY2FzZSBUb0xvd2VyQ2FzZToKICAgICBjYXNlIENhbGxE
T01HZXR0ZXI6CisgICAgY2FzZSBDYWxsRE9NOgogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAg
ICAgCiAgICAgY2FzZSBNdWx0aVB1dEJ5T2Zmc2V0OgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHRml4dXBQaGFzZS5jcHAKaW5kZXggMWQ0ZTkwN2E3ZjJmZmNjMmQ5YTJhMDM3NzExNDZh
NzkxMDFmM2NkMy4uMTJlZjRjZDhhNGQ5ODI3YjFlMmI0Y2U4YmU5MDdjOGIzNjA2ODcyNSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCkBAIC0xNzA4LDkg
KzE3MDgsMTAgQEAgY2xhc3MgRml4dXBQaGFzZSA6IHB1YmxpYyBQaGFzZSB7CiAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgfQogCi0gICAgICAgIGNhc2UgQ2hlY2tET006Ci0gICAgICAgICAg
ICBmaXhFZGdlPENlbGxVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgY2FzZSBDaGVja0RP
TTogeworICAgICAgICAgICAgZml4dXBDaGVja0RPTShub2RlKTsKICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICB9CiAKICAgICAgICAgY2FzZSBDYWxsRE9NR2V0dGVyOiB7CiAgICAgICAgICAg
ICBET01KSVQ6OkNhbGxET01HZXR0ZXJQYXRjaHBvaW50KiBwYXRjaHBvaW50ID0gbm9kZS0+Y2Fs
bERPTUdldHRlckRhdGEoKS0+cGF0Y2hwb2ludDsKQEAgLTE3MjAsNiArMTcyMSwxNiBAQCBjbGFz
cyBGaXh1cFBoYXNlIDogcHVibGljIFBoYXNlIHsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICB9CiAKKyAgICAgICAgY2FzZSBDYWxsRE9NOiB7CisgICAgICAgICAgICBmaXh1cENhbGxET00o
bm9kZSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAgIGNhc2UgQ2Fs
bDogeworICAgICAgICAgICAgYXR0ZW1wdFRvTWFrZUNhbGxET00obm9kZSk7CisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgfQorCiAjaWYgIUFTU0VSVF9ESVNBQkxFRAogICAgICAgICAvLyBI
YXZlIHRoZXNlIG5vLW9wIGNhc2VzIGhlcmUgdG8gZW5zdXJlIHRoYXQgbm9ib2R5IGZvcmdldHMg
dG8gYWRkIGhhbmRsZXJzIGZvciBuZXcgb3Bjb2Rlcy4KICAgICAgICAgY2FzZSBTZXRBcmd1bWVu
dDoKQEAgLTE3MzYsNyArMTc0Nyw2IEBAIGNsYXNzIEZpeHVwUGhhc2UgOiBwdWJsaWMgUGhhc2Ug
ewogICAgICAgICBjYXNlIEdldEdsb2JhbFZhcjoKICAgICAgICAgY2FzZSBHZXRHbG9iYWxMZXhp
Y2FsVmFyaWFibGU6CiAgICAgICAgIGNhc2UgTm90aWZ5V3JpdGU6Ci0gICAgICAgIGNhc2UgQ2Fs
bDoKICAgICAgICAgY2FzZSBEaXJlY3RDYWxsOgogICAgICAgICBjYXNlIENoZWNrVHlwZUluZm9G
bGFnczoKICAgICAgICAgY2FzZSBUYWlsQ2FsbElubGluZWRDYWxsZXI6CkBAIC0yNjU5LDYgKzI2
NjksOTAgQEAgY2xhc3MgRml4dXBQaGFzZSA6IHB1YmxpYyBQaGFzZSB7CiAgICAgICAgICAgICBP
cEluZm8oYXJyYXlNb2RlLmFzV29yZCgpKSwgRWRnZShjaGlsZCwgS25vd25DZWxsVXNlKSwgRWRn
ZShzdG9yYWdlKSk7CiAgICAgfQogICAgIAorICAgIGJvb2wgYXR0ZW1wdFRvTWFrZUNhbGxET00o
Tm9kZSogbm9kZSkKKyAgICB7CisgICAgICAgIGlmIChtX2dyYXBoLmhhc0V4aXRTaXRlKG5vZGUt
Pm9yaWdpbi5zZW1hbnRpYywgQmFkVHlwZSkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisK
KyAgICAgICAgY29uc3QgRE9NSklUOjpTaWduYXR1cmUqIHNpZ25hdHVyZSA9IG5vZGUtPnNpZ25h
dHVyZSgpOworICAgICAgICBpZiAoIXNpZ25hdHVyZSkKKyAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKKworICAgICAgICB7CisgICAgICAgICAgICB1bnNpZ25lZCBpbmRleCA9IDA7CisgICAgICAg
ICAgICBib29sIHNob3VsZENvbnZlcnRUb0NhbGxET00gPSB0cnVlOworICAgICAgICAgICAgbV9n
cmFwaC5kb1RvQ2hpbGRyZW4obm9kZSwgWyZdKEVkZ2UmIGVkZ2UpIHsKKyAgICAgICAgICAgICAg
ICAvLyBDYWxsZWUuIElnbm9yZSB0aGlzLiBERkdCeXRlQ29kZVBhcnNlciBhbHJlYWR5IGVtaXQg
YXBwcm9wcmlhdGUgY2hlY2tzLgorICAgICAgICAgICAgICAgIGlmICghaW5kZXgpCisgICAgICAg
ICAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICAgICAgICAgIGlmIChpbmRleCA9PSAxKSB7
CisgICAgICAgICAgICAgICAgICAgIC8vIERPTSBub2RlIGNhc2UuCisgICAgICAgICAgICAgICAg
ICAgIGlmIChlZGdlLT5zaG91bGRTcGVjdWxhdGVOb3RDZWxsKCkpCisgICAgICAgICAgICAgICAg
ICAgICAgICBzaG91bGRDb252ZXJ0VG9DYWxsRE9NID0gZmFsc2U7CisgICAgICAgICAgICAgICAg
fSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChzaWduYXR1cmUtPmFyZ3VtZW50
c1tpbmRleCAtIDJdKSB7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgU3BlY1N0cmluZzoKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGlmIChlZGdlLT5zaG91bGRTcGVjdWxhdGVOb3RTdHJpbmco
KSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaG91bGRDb252ZXJ0VG9DYWxsRE9NID0g
ZmFsc2U7CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAg
ICAgY2FzZSBTcGVjSW50MzJPbmx5OgorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVkZ2Ut
PnNob3VsZFNwZWN1bGF0ZU5vdEludDMyKCkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c2hvdWxkQ29udmVydFRvQ2FsbERPTSA9IGZhbHNlOworICAgICAgICAgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgU3BlY0Jvb2xlYW46CisgICAgICAgICAg
ICAgICAgICAgICAgICBpZiAoZWRnZS0+c2hvdWxkU3BlY3VsYXRlTm90Qm9vbGVhbigpKQorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHNob3VsZENvbnZlcnRUb0NhbGxET00gPSBmYWxzZTsK
KyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICsraW5kZXg7CisgICAgICAgICAgICB9
KTsKKyAgICAgICAgICAgIGlmICghc2hvdWxkQ29udmVydFRvQ2FsbERPTSkKKyAgICAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKworICAgICAgICBOb2RlKiB0aGlzTm9kZSA9
IG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMSkubm9kZSgpOworICAgICAgICBSZWY8RE9NSklU
OjpQYXRjaHBvaW50PiBjaGVja0RPTVBhdGNocG9pbnQgPSBzaWduYXR1cmUtPmNoZWNrRE9NKCk7
CisgICAgICAgIG1fZ3JhcGgubV9kb21KSVRQYXRjaHBvaW50cy5hcHBlbmQoY2hlY2tET01QYXRj
aHBvaW50LnB0cigpKTsKKyAgICAgICAgTm9kZSogY2hlY2tET00gPSBtX2luc2VydGlvblNldC5p
bnNlcnROb2RlKG1faW5kZXhJbkJsb2NrLCBTcGVjTm9uZSwgQ2hlY2tET00sIG5vZGUtPm9yaWdp
biwgT3BJbmZvKGNoZWNrRE9NUGF0Y2hwb2ludC5wdHIoKSksIE9wSW5mbyhzaWduYXR1cmUtPmNs
YXNzSW5mbyksIEVkZ2UodGhpc05vZGUpKTsKKyAgICAgICAgbm9kZS0+Y29udmVydFRvQ2FsbERP
TShtX2dyYXBoKTsKKyAgICAgICAgZml4dXBDaGVja0RPTShjaGVja0RPTSk7CisgICAgICAgIGZp
eHVwQ2FsbERPTShub2RlKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgdm9p
ZCBmaXh1cENoZWNrRE9NKE5vZGUqIG5vZGUpCisgICAgeworICAgICAgICBmaXhFZGdlPENlbGxV
c2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICB9CisKKyAgICB2b2lkIGZpeHVwQ2FsbERPTShOb2Rl
KiBub2RlKQorICAgIHsKKyAgICAgICAgY29uc3QgRE9NSklUOjpTaWduYXR1cmUqIHNpZ25hdHVy
ZSA9IG5vZGUtPnNpZ25hdHVyZSgpOworICAgICAgICBhdXRvIGZpeHVwID0gWyZdKEVkZ2UmIGVk
Z2UsIGludCBhcmd1bWVudEluZGV4KSB7CisgICAgICAgICAgICBpZiAoIWVkZ2UpCisgICAgICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgc3dpdGNoIChzaWduYXR1cmUtPmFyZ3VtZW50
c1thcmd1bWVudEluZGV4XSkgeworICAgICAgICAgICAgY2FzZSBTcGVjU3RyaW5nOgorICAgICAg
ICAgICAgICAgIGZpeEVkZ2U8U3RyaW5nVXNlPihlZGdlKTsKKyAgICAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICAgIGNhc2UgU3BlY0ludDMyT25seToKKyAgICAgICAgICAgICAgICBmaXhF
ZGdlPEludDMyVXNlPihlZGdlKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg
IGNhc2UgU3BlY0Jvb2xlYW46CisgICAgICAgICAgICAgICAgZml4RWRnZTxCb29sZWFuVXNlPihl
ZGdlKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAg
ICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfTsKKyAgICAgICAgZml4RWRnZTxDZWxs
VXNlPihub2RlLT5jaGlsZDEoKSk7IC8vIERPTS4KKyAgICAgICAgZml4dXAobm9kZS0+Y2hpbGQy
KCksIDApOworICAgICAgICBmaXh1cChub2RlLT5jaGlsZDMoKSwgMSk7CisgICAgfQorCiAgICAg
dm9pZCBmaXh1cENoZWNrc0luQmxvY2soQmFzaWNCbG9jayogYmxvY2spCiAgICAgewogICAgICAg
ICBpZiAoIWJsb2NrKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdO
b2RlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5jcHAKaW5kZXggZjM3
MTE3YmY5NjlmZTRiNjlkOTVmMDAxZDU2ODgwNDZiZGNkOTQ1MC4uY2UyNWMwZGQxMzIxMGJlMTJh
Yjk1NzkwMmRiYTY2OWE3YmQ4NmRmYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdOb2RlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUu
Y3BwCkBAIC0yMjAsNiArMjIwLDI1IEBAIHZvaWQgTm9kZTo6Y29udmVydFRvRGlyZWN0Q2FsbChG
cm96ZW5WYWx1ZSogZXhlY3V0YWJsZSkKICAgICBtX29wSW5mbyA9IGV4ZWN1dGFibGU7CiB9CiAK
K3ZvaWQgTm9kZTo6Y29udmVydFRvQ2FsbERPTShHcmFwaCYgZ3JhcGgpCit7CisgICAgQVNTRVJU
KG9wKCkgPT0gQ2FsbCk7CisgICAgQVNTRVJUKHNpZ25hdHVyZSgpKTsKKworICAgIEVkZ2UgZWRn
ZXNbM107CisgICAgLy8gU2tpcCB0aGUgZmlyc3Qgb25lLiBUaGlzIGlzIGNhbGxlZS4KKyAgICBm
b3IgKHVuc2lnbmVkIGkgPSAxLCBpeiA9IG51bUNoaWxkcmVuKCk7IGkgPCBpejsgKytpKQorICAg
ICAgICBlZGdlc1tpIC0gMV0gPSBncmFwaC52YXJBcmdDaGlsZCh0aGlzLCBpKTsKKworICAgIHNl
dE9wQW5kRGVmYXVsdEZsYWdzKENhbGxET00pOworICAgIGNoaWxkcmVuLnNldENoaWxkMShlZGdl
c1swXSk7CisgICAgY2hpbGRyZW4uc2V0Q2hpbGQyKGVkZ2VzWzFdKTsKKyAgICBjaGlsZHJlbi5z
ZXRDaGlsZDMoZWRnZXNbMl0pOworCisgICAgaWYgKCFzaWduYXR1cmUoKS0+ZWZmZWN0Lm11c3RH
ZW5lcmF0ZSgpKQorICAgICAgICBjbGVhckZsYWdzKE5vZGVNdXN0R2VuZXJhdGUpOworfQorCiBT
dHJpbmcgTm9kZTo6dHJ5R2V0U3RyaW5nKEdyYXBoJiBncmFwaCkKIHsKICAgICBpZiAoaGFzQ29u
c3RhbnQoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgKaW5kZXggODhmODgxMTg5MGUx
NzczZWExZDYwMmU5Y2FjOWM1ODFkYTRmOWI5Yi4uODMwOWFhMzA5YTBhOWU2MTQyY2NhMjk1MTky
OGVhZGFiOTcyYTViMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdO
b2RlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgKQEAgLTYyLDYg
KzYyLDcgQEAgbmFtZXNwYWNlIERPTUpJVCB7CiBjbGFzcyBHZXR0ZXJTZXR0ZXI7CiBjbGFzcyBQ
YXRjaHBvaW50OwogY2xhc3MgQ2FsbERPTUdldHRlclBhdGNocG9pbnQ7CitjbGFzcyBTaWduYXR1
cmU7CiB9CiAKIG5hbWVzcGFjZSBQcm9maWxlciB7CkBAIC02NTIsNiArNjUzLDggQEAgc3RydWN0
IE5vZGUgewogICAgIH0KICAgICAKICAgICB2b2lkIGNvbnZlcnRUb0RpcmVjdENhbGwoRnJvemVu
VmFsdWUqKTsKKworICAgIHZvaWQgY29udmVydFRvQ2FsbERPTShHcmFwaCYpOwogICAgIAogICAg
IEpTVmFsdWUgYXNKU1ZhbHVlKCkKICAgICB7CkBAIC0xNDY0LDYgKzE0NjcsNyBAQCBzdHJ1Y3Qg
Tm9kZSB7CiAgICAgICAgIGNhc2UgVG9OdW1iZXI6CiAgICAgICAgIGNhc2UgTG9hZEZyb21KU01h
cEJ1Y2tldDoKICAgICAgICAgY2FzZSBDYWxsRE9NR2V0dGVyOgorICAgICAgICBjYXNlIENhbGxE
T006CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKQEAgLTE5ODEsNiArMTk4NSwxMSBAQCBzdHJ1Y3QgTm9kZSB7CiAg
ICAgewogICAgICAgICByZXR1cm4gaXNJbnQzMlNwZWN1bGF0aW9uKHByZWRpY3Rpb24oKSk7CiAg
ICAgfQorCisgICAgYm9vbCBzaG91bGRTcGVjdWxhdGVOb3RJbnQzMigpCisgICAgeworICAgICAg
ICByZXR1cm4gaXNOb3RJbnQzMlNwZWN1bGF0aW9uKHByZWRpY3Rpb24oKSk7CisgICAgfQogICAg
IAogICAgIGJvb2wgc2F3Qm9vbGVhbnMoKQogICAgIHsKQEAgLTIwNDEsNiArMjA1MCwxMSBAQCBz
dHJ1Y3QgTm9kZSB7CiAgICAgewogICAgICAgICByZXR1cm4gaXNCb29sZWFuU3BlY3VsYXRpb24o
cHJlZGljdGlvbigpKTsKICAgICB9CisKKyAgICBib29sIHNob3VsZFNwZWN1bGF0ZU5vdEJvb2xl
YW4oKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGlzTm90Qm9vbGVhblNwZWN1bGF0aW9uKHByZWRp
Y3Rpb24oKSk7CisgICAgfQogICAgIAogICAgIGJvb2wgc2hvdWxkU3BlY3VsYXRlT3RoZXIoKQog
ICAgIHsKQEAgLTIwNjYsNiArMjA4MCwxMSBAQCBzdHJ1Y3QgTm9kZSB7CiAgICAgewogICAgICAg
ICByZXR1cm4gaXNTdHJpbmdTcGVjdWxhdGlvbihwcmVkaWN0aW9uKCkpOwogICAgIH0KKworICAg
IGJvb2wgc2hvdWxkU3BlY3VsYXRlTm90U3RyaW5nKCkKKyAgICB7CisgICAgICAgIHJldHVybiBp
c05vdFN0cmluZ1NwZWN1bGF0aW9uKHByZWRpY3Rpb24oKSk7CisgICAgfQogIAogICAgIGJvb2wg
c2hvdWxkU3BlY3VsYXRlU3RyaW5nT3JPdGhlcigpCiAgICAgewpAQCAtMjM2OCw2ICsyMzg3LDE4
IEBAIHN0cnVjdCBOb2RlIHsKICAgICAgICAgcmV0dXJuIG1fb3BJbmZvMi5hczxjb25zdCBDbGFz
c0luZm8qPigpOwogICAgIH0KIAorICAgIGJvb2wgaGFzU2lnbmF0dXJlKCkgY29uc3QKKyAgICB7
CisgICAgICAgIC8vIE5vdGUgdGhhdCB0aGlzIGRvZXMgbm90IGluY2x1ZGUgVGFpbENhbGwgdGhp
bmd5IGludGVudGlvbmFsbHkuCisgICAgICAgIC8vIENhbGxET00gdGhpbmd5IGFyZSBhbHdheXMg
Y29udmVydGVkIGZyb20gQ2FsbC4KKyAgICAgICAgcmV0dXJuIG9wKCkgPT0gQ2FsbCB8fCBvcCgp
ID09IENhbGxET007CisgICAgfQorCisgICAgY29uc3QgRE9NSklUOjpTaWduYXR1cmUqIHNpZ25h
dHVyZSgpCisgICAgeworICAgICAgICByZXR1cm4gbV9vcEluZm8uYXM8Y29uc3QgRE9NSklUOjpT
aWduYXR1cmUqPigpOworICAgIH0KKwogICAgIE5vZGUqIHJlcGxhY2VtZW50KCkgY29uc3QKICAg
ICB7CiAgICAgICAgIHJldHVybiBtX21pc2MucmVwbGFjZW1lbnQ7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR05vZGVUeXBlLmgKaW5kZXggZDk3NWI3NjIyMGMwMmMxMzExYzE5MmVhOWFkMDJl
NjAxYTUyMDRlMC4uZjM3NDIzY2VlYjIyODYyYjZjMmZhYTViYmEwMzQ1YTMzNmVmNjM5ZSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaApAQCAtNDA3LDYgKzQwNyw3IEBA
IG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKICAgICAvKiBOb2RlcyBmb3IgRE9NIEpJ
VCAqL1wKICAgICBtYWNybyhDaGVja0RPTSwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3Jv
KENhbGxET01HZXR0ZXIsIE5vZGVSZXN1bHRKUyB8IE5vZGVNdXN0R2VuZXJhdGUpIFwKKyAgICBt
YWNybyhDYWxsRE9NLCBOb2RlUmVzdWx0SlMgfCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAKIC8vIFRo
aXMgZW51bSBnZW5lcmF0ZXMgYSBtb25vdG9uaWNhbGx5IGluY3JlYXNpbmcgaWQgZm9yIGFsbCBO
b2RlIHR5cGVzLAogLy8gYW5kIGlzIHVzZWQgYnkgdGhlIHN1YnNlcXVlbnQgZW51bSB0byBmaWxs
IG91dCB0aGUgaWQgKGFzIGFjY2Vzc2VkIHZpYSB0aGUgTm9kZUlkTWFzaykuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNl
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9u
UGhhc2UuY3BwCmluZGV4IDZlZDcyOWIzYjg1NzMxYzBhNmU1MDk2NzA5Zjk4MDE2YTRiMWY4ZTAu
LmMwZmRlOTY5ZmJjMjQ2YzZiOTE4NjAwZGM0N2FmNzlhYWQxYTZmZjkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9u
UGhhc2UuY3BwCkBAIC03MTAsNyArNzEwLDggQEAgY2xhc3MgUHJlZGljdGlvblByb3BhZ2F0aW9u
UGhhc2UgOiBwdWJsaWMgUGhhc2UgewogICAgICAgICBjYXNlIEdldEZyb21Bcmd1bWVudHM6CiAg
ICAgICAgIGNhc2UgTG9hZEZyb21KU01hcEJ1Y2tldDoKICAgICAgICAgY2FzZSBUb051bWJlcjoK
LSAgICAgICAgY2FzZSBDYWxsRE9NR2V0dGVyOiB7CisgICAgICAgIGNhc2UgQ2FsbERPTUdldHRl
cjoKKyAgICAgICAgY2FzZSBDYWxsRE9NOiB7CiAgICAgICAgICAgICBzZXRQcmVkaWN0aW9uKG1f
Y3VycmVudE5vZGUtPmdldEhlYXBQcmVkaWN0aW9uKCkpOwogICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRv
RXhlY3V0ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgK
aW5kZXggMmM5OTgwMjI1NjY3ZGYzNDA1MGRjYTZhMzRlODdmMzRkNTk4ZWQyYi4uM2ZlOWRjMTVk
ZWUxN2I4MWQyMmZmNjQ0M2ZlZDY3ZjQ3Njk2M2NhMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgKQEAgLTIyMCw2ICsyMjAsNyBAQCBib29sIHNhZmVU
b0V4ZWN1dGUoQWJzdHJhY3RTdGF0ZVR5cGUmIHN0YXRlLCBHcmFwaCYgZ3JhcGgsIE5vZGUqIG5v
ZGUpCiAgICAgY2FzZSBHZXRFeGVjdXRhYmxlOgogICAgIGNhc2UgR2V0QnV0dGVyZmx5OgogICAg
IGNhc2UgQ2FsbERPTUdldHRlcjoKKyAgICBjYXNlIENhbGxET006CiAgICAgY2FzZSBDaGVja0RP
TToKICAgICBjYXNlIENoZWNrQXJyYXk6CiAgICAgY2FzZSBBcnJheWlmeToKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKaW5kZXggMjczMmZlODU4
NDRlNTFmNDY3MGIwYWU0MDNmMmFjMjM1MDRjODcxYy4uOWZkZTU1NTQ0Y2ExYTIwZWU4NWU4NWY1
MjUwZWY2MGY3YjU4YjFhNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTcGVjdWxhdGl2ZUpJVC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
cGVjdWxhdGl2ZUpJVC5jcHAKQEAgLTcyNjAsNiArNzI2MCw4NiBAQCBzdGF0aWMgdm9pZCBhbGxv
Y2F0ZVRlbXBvcmFyeVJlZ2lzdGVyc0ZvclBhdGNocG9pbnQoU3BlY3VsYXRpdmVKSVQqIGppdCwg
VmVjdG9yPAogICAgIH0KIH0KIAordm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUNhbGxET00o
Tm9kZSogbm9kZSkKK3sKKyAgICBjb25zdCBET01KSVQ6OlNpZ25hdHVyZSogc2lnbmF0dXJlID0g
bm9kZS0+c2lnbmF0dXJlKCk7CisKKyAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGhhdmUgYSB3YXkg
dG8gY2FsbCBmdW5jdGlvbnMgd2l0aCB0aGUgdmVjdG9yIG9mIHJlZ2lzdGVycy4KKyAgICAvLyBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYzMDk5CisgICAgVmVjdG9y
PFZhcmlhbnQ8U3BlY3VsYXRlQ2VsbE9wZXJhbmQsIFNwZWN1bGF0ZUludDMyT3BlcmFuZCwgU3Bl
Y3VsYXRlQm9vbGVhbk9wZXJhbmQ+PiBvcGVyYW5kczsKKyAgICBWZWN0b3I8R1BSUmVnPiByZWdz
OworCisgICAgYXV0byBhcHBlbmRDZWxsID0gWyZdKEVkZ2UmIGVkZ2UpIHsKKyAgICAgICAgU3Bl
Y3VsYXRlQ2VsbE9wZXJhbmQgb3BlcmFuZCh0aGlzLCBlZGdlKTsKKyAgICAgICAgcmVncy5hcHBl
bmQob3BlcmFuZC5ncHIoKSk7CisgICAgICAgIG9wZXJhbmRzLmFwcGVuZChXVEZNb3ZlKG9wZXJh
bmQpKTsKKyAgICB9OworCisgICAgYXV0byBhcHBlbmRTdHJpbmcgPSBbJl0oRWRnZSYgZWRnZSkg
eworICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBvcGVyYW5kKHRoaXMsIGVkZ2UpOworICAg
ICAgICBHUFJSZWcgZ3ByID0gb3BlcmFuZC5ncHIoKTsKKyAgICAgICAgcmVncy5hcHBlbmQoZ3By
KTsKKyAgICAgICAgc3BlY3VsYXRlU3RyaW5nKGVkZ2UsIGdwcik7CisgICAgICAgIG9wZXJhbmRz
LmFwcGVuZChXVEZNb3ZlKG9wZXJhbmQpKTsKKyAgICB9OworCisgICAgYXV0byBhcHBlbmRJbnQz
MiA9IFsmXShFZGdlJiBlZGdlKSB7CisgICAgICAgIFNwZWN1bGF0ZUludDMyT3BlcmFuZCBvcGVy
YW5kKHRoaXMsIGVkZ2UpOworICAgICAgICByZWdzLmFwcGVuZChvcGVyYW5kLmdwcigpKTsKKyAg
ICAgICAgb3BlcmFuZHMuYXBwZW5kKFdURk1vdmUob3BlcmFuZCkpOworICAgIH07CisKKyAgICBh
dXRvIGFwcGVuZEJvb2xlYW4gPSBbJl0oRWRnZSYgZWRnZSkgeworICAgICAgICBTcGVjdWxhdGVC
b29sZWFuT3BlcmFuZCBvcGVyYW5kKHRoaXMsIGVkZ2UpOworICAgICAgICByZWdzLmFwcGVuZChv
cGVyYW5kLmdwcigpKTsKKyAgICAgICAgb3BlcmFuZHMuYXBwZW5kKFdURk1vdmUob3BlcmFuZCkp
OworICAgIH07CisKKyAgICB1bnNpZ25lZCBpbmRleCA9IDA7CisgICAgbV9qaXQuZ3JhcGgoKS5k
b1RvQ2hpbGRyZW4obm9kZSwgWyZdKEVkZ2UgZWRnZSkgeworICAgICAgICBpZiAoIWluZGV4KQor
ICAgICAgICAgICAgYXBwZW5kQ2VsbChlZGdlKTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAg
ICBzd2l0Y2ggKHNpZ25hdHVyZS0+YXJndW1lbnRzW2luZGV4IC0gMV0pIHsKKyAgICAgICAgICAg
IGNhc2UgU3BlY1N0cmluZzoKKyAgICAgICAgICAgICAgICBhcHBlbmRTdHJpbmcoZWRnZSk7Cisg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIFNwZWNJbnQzMk9ubHk6Cisg
ICAgICAgICAgICAgICAgYXBwZW5kSW50MzIoZWRnZSk7CisgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICBjYXNlIFNwZWNCb29sZWFuOgorICAgICAgICAgICAgICAgIGFwcGVuZEJv
b2xlYW4oZWRnZSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAg
ICAgIH0KKyAgICAgICAgKytpbmRleDsKKyAgICB9KTsKKworICAgIEpTVmFsdWVSZWdzVGVtcG9y
YXJ5IHJlc3VsdCh0aGlzKTsKKyAgICBKU1ZhbHVlUmVncyByZXN1bHRSZWdzID0gcmVzdWx0LnJl
Z3MoKTsKKworICAgIHNpbGVudFNwaWxsQWxsUmVnaXN0ZXJzKHJlc3VsdFJlZ3MpOworICAgIGlu
dCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyA9IHNpZ25hdHVyZS0+YXJndW1lbnRDb3VudCAr
IDE7CisgICAgc3dpdGNoIChhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcykgeworICAgIGNhc2Ug
MToKKyAgICAgICAgY2FsbE9wZXJhdGlvbihyZWludGVycHJldF9jYXN0PEpfSklUT3BlcmF0aW9u
X0VQPihzaWduYXR1cmUtPnVuc2FmZUZ1bmN0aW9uKSwgZXh0cmFjdFJlc3VsdChyZXN1bHRSZWdz
KSwgcmVnc1swXSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgMjoKKyAgICAgICAgY2FsbE9w
ZXJhdGlvbihyZWludGVycHJldF9jYXN0PEpfSklUT3BlcmF0aW9uX0VQUD4oc2lnbmF0dXJlLT51
bnNhZmVGdW5jdGlvbiksIGV4dHJhY3RSZXN1bHQocmVzdWx0UmVncyksIHJlZ3NbMF0sIHJlZ3Nb
MV0pOworICAgICAgICBicmVhazsKKyAgICBjYXNlIDM6CisgICAgICAgIGNhbGxPcGVyYXRpb24o
cmVpbnRlcnByZXRfY2FzdDxKX0pJVE9wZXJhdGlvbl9FUFBQPihzaWduYXR1cmUtPnVuc2FmZUZ1
bmN0aW9uKSwgZXh0cmFjdFJlc3VsdChyZXN1bHRSZWdzKSwgcmVnc1swXSwgcmVnc1sxXSwgcmVn
c1syXSk7CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIFJFTEVBU0VfQVNT
RVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIHNpbGVudEZp
bGxBbGxSZWdpc3RlcnMocmVzdWx0UmVncyk7CisgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsK
KyAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdFJlZ3MsIG5vZGUpOworfQorCiB2b2lkIFNwZWN1bGF0
aXZlSklUOjpjb21waWxlQ2FsbERPTUdldHRlcihOb2RlKiBub2RlKQogewogICAgIERPTUpJVDo6
Q2FsbERPTUdldHRlclBhdGNocG9pbnQqIHBhdGNocG9pbnQgPSBub2RlLT5jYWxsRE9NR2V0dGVy
RGF0YSgpLT5wYXRjaHBvaW50OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTcGVjdWxhdGl2ZUpJVC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVj
dWxhdGl2ZUpJVC5oCmluZGV4IDU2NTM4YTI5NDZlNDAzMDBmMDUwZjMzNTUyYTczY2NhNzU5Y2Vh
Y2EuLjc5NmE4YTM1ZTZkMzA1N2ZhYWJlYTA3OWEwMjAzZDVkNDk5YTk1YjEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKQEAgLTE2NTEsNiArMTY1
MSwxMSBAQCBjbGFzcyBTcGVjdWxhdGl2ZUpJVCB7CiAgICAgICAgIG1faml0LnNldHVwQXJndW1l
bnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyKTsKICAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxT
ZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOwogICAgIH0KKyAgICBKSVRDb21waWxlcjo6Q2Fs
bCBjYWxsT3BlcmF0aW9uKEpfSklUT3BlcmF0aW9uX0VQUFAgb3BlcmF0aW9uLCBHUFJSZWcgcmVz
dWx0LCBHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIsIEdQUlJlZyBhcmczKQorICAgIHsKKyAgICAg
ICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIsIGFyZzMpOwor
ICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7Cisg
ICAgfQogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9KSVRPcGVyYXRpb25f
RUdQIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyKQog
ICAgIHsKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFy
ZzIpOwpAQCAtMTkxNSw2ICsxOTIwLDE2IEBAIGNsYXNzIFNwZWN1bGF0aXZlSklUIHsKICAgICAg
ICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIFRydXN0ZWRJbW1QdHIo
cG9pbnRlcikpOwogICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb24s
IHJlc3VsdC5wYXlsb2FkR1BSKCksIHJlc3VsdC50YWdHUFIoKSk7CiAgICAgfQorICAgIEpJVENv
bXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9KSVRPcGVyYXRpb25fRVBQIG9wZXJhdGlvbiwg
SlNWYWx1ZVJlZ3MgcmVzdWx0LCBHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIpCisgICAgeworICAg
ICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMik7CisgICAg
ICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0LnBheWxvYWRH
UFIoKSwgcmVzdWx0LnRhZ0dQUigpKTsKKyAgICB9CisgICAgSklUQ29tcGlsZXI6OkNhbGwgY2Fs
bE9wZXJhdGlvbihKX0pJVE9wZXJhdGlvbl9FUFBQIG9wZXJhdGlvbiwgSlNWYWx1ZVJlZ3MgcmVz
dWx0LCBHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIsIEdQUlJlZyBhcmczKQorICAgIHsKKyAgICAg
ICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIsIGFyZzMpOwor
ICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdC5wYXls
b2FkR1BSKCksIHJlc3VsdC50YWdHUFIoKSk7CisgICAgfQogICAgIEpJVENvbXBpbGVyOjpDYWxs
IGNhbGxPcGVyYXRpb24oSl9KSVRPcGVyYXRpb25fRUdQIG9wZXJhdGlvbiwgSlNWYWx1ZVJlZ3Mg
cmVzdWx0LCBHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIpCiAgICAgewogICAgICAgICBtX2ppdC5z
ZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMik7CkBAIC0yNTYyLDYgKzI1Nzcs
NyBAQCBjbGFzcyBTcGVjdWxhdGl2ZUpJVCB7CiAgICAgdm9pZCBjb21waWxlUmVhbGxvY2F0ZVBy
b3BlcnR5U3RvcmFnZShOb2RlKik7CiAgICAgdm9pZCBjb21waWxlR2V0QnV0dGVyZmx5KE5vZGUq
KTsKICAgICB2b2lkIGNvbXBpbGVDYWxsRE9NR2V0dGVyKE5vZGUqKTsKKyAgICB2b2lkIGNvbXBp
bGVDYWxsRE9NKE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVDaGVja0RPTShOb2RlKik7CiAgICAg
CiAjaWYgVVNFKEpTVkFMVUUzMl82NCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCmluZGV4IGNiMDRhNWE2NWM3NTBlMjNmMTdj
OWRiMjM0MTViNzM0YWVmNWI0YTQuLjEwMjQyOWRlMDAwYjMyYWRmZGQwMjc0M2VjNmRmZGRlZTgx
ZjUzYWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRp
dmVKSVQzMl82NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxh
dGl2ZUpJVDMyXzY0LmNwcApAQCAtNTU2MSw2ICs1NTYxLDEwIEBAIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgYnJlYWs7CiAgICAgfQogCisgICAgY2Fz
ZSBDYWxsRE9NOgorICAgICAgICBjb21waWxlQ2FsbERPTShub2RlKTsKKyAgICAgICAgYnJlYWs7
CisKICAgICBjYXNlIENhbGxET01HZXR0ZXI6CiAgICAgICAgIGNvbXBpbGVDYWxsRE9NR2V0dGVy
KG5vZGUpOwogICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCmluZGV4IGI0MWM2ZjMyYjMzZDgzYzY1ZTg1NGY4NjA3
OGQ3NGE1MjQwMjk4MTMuLjgzMGJmYWRjYWYyODY2N2EwOGIxYjgyZWU1OTg4YzBjNjVkMmNhYjkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2
NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0
LmNwcApAQCAtNTY5Myw2ICs1NjkzLDEwIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUo
Tm9kZSogbm9kZSkKICAgICAgICAgY29tcGlsZU1hdGVyaWFsaXplTmV3T2JqZWN0KG5vZGUpOwog
ICAgICAgICBicmVhazsKIAorICAgIGNhc2UgQ2FsbERPTToKKyAgICAgICAgY29tcGlsZUNhbGxE
T00obm9kZSk7CisgICAgICAgIGJyZWFrOworCiAgICAgY2FzZSBDYWxsRE9NR2V0dGVyOgogICAg
ICAgICBjb21waWxlQ2FsbERPTUdldHRlcihub2RlKTsKICAgICAgICAgYnJlYWs7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZG9taml0L0RPTUpJVEVmZmVjdC5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RvbWppdC9ET01KSVRFZmZlY3QuaAppbmRleCA1OWUzMDBjMzkyNjEw
NDdhMTEyMjkwZGE4NmI0ZmExNjhkOWM2MzA2Li42MWNmM2I3MWFiYmNlMzFlNDUxMzZhZjI4NmM2
YzdhZjIzNjY4YTZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZG9taml0L0RP
TUpJVEVmZmVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kb21qaXQvRE9NSklURWZm
ZWN0LmgKQEAgLTI4LDU2ICsyOCw2MiBAQAogI2luY2x1ZGUgIkRPTUpJVEhlYXBSYW5nZS5oIgog
I2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgogCi0jaWYgRU5BQkxFKEpJVCkKLQogbmFtZXNwYWNl
IEpTQyB7IG5hbWVzcGFjZSBET01KSVQgewogCi1zdHJ1Y3QgRWZmZWN0IHsKK2NsYXNzIEVmZmVj
dCB7CitwdWJsaWM6CiAgICAgSGVhcFJhbmdlIHJlYWRzIHsgSGVhcFJhbmdlOjp0b3AoKSB9Owog
ICAgIEhlYXBSYW5nZSB3cml0ZXMgeyBIZWFwUmFuZ2U6OnRvcCgpIH07Ci0gICAgT3B0aW9uYWw8
SGVhcFJhbmdlPiBkZWY7CisgICAgSGVhcFJhbmdlIGRlZiB7IEhlYXBSYW5nZTo6dG9wKCkgfTsK
KworICAgIGNvbnN0ZXhwciBFZmZlY3QoKSA9IGRlZmF1bHQ7CisgICAgY29uc3RleHByIEVmZmVj
dChIZWFwUmFuZ2UgcmVhZHMsIEhlYXBSYW5nZSB3cml0ZXMpCisgICAgICAgIDogcmVhZHMocmVh
ZHMpCisgICAgICAgICwgd3JpdGVzKHdyaXRlcykKKyAgICB7CisgICAgfQorCisgICAgY29uc3Rl
eHByIEVmZmVjdChIZWFwUmFuZ2UgcmVhZHMsIEhlYXBSYW5nZSB3cml0ZXMsIEhlYXBSYW5nZSBk
ZWYpCisgICAgICAgIDogcmVhZHMocmVhZHMpCisgICAgICAgICwgd3JpdGVzKHdyaXRlcykKKyAg
ICAgICAgLCBkZWYoZGVmKQorICAgIHsKKyAgICB9CiAKLSAgICBzdGF0aWMgRWZmZWN0IGZvclJl
YWRXcml0ZShIZWFwUmFuZ2UgcmVhZFJhbmdlLCBIZWFwUmFuZ2Ugd3JpdGVSYW5nZSkKKyAgICBj
b25zdGV4cHIgc3RhdGljIEVmZmVjdCBmb3JXcml0ZShIZWFwUmFuZ2Ugd3JpdGVSYW5nZSkKICAg
ICB7Ci0gICAgICAgIEVmZmVjdCBlZmZlY3Q7Ci0gICAgICAgIGVmZmVjdC5yZWFkcyA9IHJlYWRS
YW5nZTsKLSAgICAgICAgZWZmZWN0LndyaXRlcyA9IHdyaXRlUmFuZ2U7Ci0gICAgICAgIHJldHVy
biBlZmZlY3Q7CisgICAgICAgIHJldHVybiBFZmZlY3QoSGVhcFJhbmdlOjpub25lKCksIHdyaXRl
UmFuZ2UpOwogICAgIH0KIAotICAgIHN0YXRpYyBFZmZlY3QgZm9yUHVyZSgpCisgICAgY29uc3Rl
eHByIHN0YXRpYyBFZmZlY3QgZm9yUmVhZChIZWFwUmFuZ2UgcmVhZFJhbmdlKQogICAgIHsKLSAg
ICAgICAgRWZmZWN0IGVmZmVjdDsKLSAgICAgICAgZWZmZWN0LnJlYWRzID0gSGVhcFJhbmdlOjpu
b25lKCk7Ci0gICAgICAgIGVmZmVjdC53cml0ZXMgPSBIZWFwUmFuZ2U6Om5vbmUoKTsKLSAgICAg
ICAgZWZmZWN0LmRlZiA9IEhlYXBSYW5nZTo6bm9uZSgpOwotICAgICAgICByZXR1cm4gZWZmZWN0
OworICAgICAgICByZXR1cm4gRWZmZWN0KHJlYWRSYW5nZSwgSGVhcFJhbmdlOjpub25lKCkpOwog
ICAgIH0KIAotICAgIHN0YXRpYyBFZmZlY3QgZm9yRGVmKEhlYXBSYW5nZSBkZWYpCisgICAgY29u
c3RleHByIHN0YXRpYyBFZmZlY3QgZm9yUmVhZFdyaXRlKEhlYXBSYW5nZSByZWFkUmFuZ2UsIEhl
YXBSYW5nZSB3cml0ZVJhbmdlKQogICAgIHsKLSAgICAgICAgRWZmZWN0IGVmZmVjdDsKLSAgICAg
ICAgZWZmZWN0LnJlYWRzID0gZGVmOwotICAgICAgICBlZmZlY3Qud3JpdGVzID0gSGVhcFJhbmdl
Ojpub25lKCk7Ci0gICAgICAgIGVmZmVjdC5kZWYgPSBkZWY7Ci0gICAgICAgIHJldHVybiBlZmZl
Y3Q7CisgICAgICAgIHJldHVybiBFZmZlY3QocmVhZFJhbmdlLCB3cml0ZVJhbmdlKTsKICAgICB9
CiAKLSAgICBzdGF0aWMgRWZmZWN0IGZvckRlZihIZWFwUmFuZ2UgZGVmLCBIZWFwUmFuZ2UgcmVh
ZFJhbmdlLCBIZWFwUmFuZ2Ugd3JpdGVSYW5nZSkKKyAgICBjb25zdGV4cHIgc3RhdGljIEVmZmVj
dCBmb3JQdXJlKCkKICAgICB7Ci0gICAgICAgIEVmZmVjdCBlZmZlY3Q7Ci0gICAgICAgIGVmZmVj
dC5yZWFkcyA9IHJlYWRSYW5nZTsKLSAgICAgICAgZWZmZWN0LndyaXRlcyA9IHdyaXRlUmFuZ2U7
Ci0gICAgICAgIGVmZmVjdC5kZWYgPSBkZWY7Ci0gICAgICAgIHJldHVybiBlZmZlY3Q7CisgICAg
ICAgIHJldHVybiBFZmZlY3QoSGVhcFJhbmdlOjpub25lKCksIEhlYXBSYW5nZTo6bm9uZSgpLCBI
ZWFwUmFuZ2U6Om5vbmUoKSk7CiAgICAgfQogCi0gICAgYm9vbCBtdXN0R2VuZXJhdGUoKSBjb25z
dAorICAgIGNvbnN0ZXhwciBzdGF0aWMgRWZmZWN0IGZvckRlZihIZWFwUmFuZ2UgZGVmKQorICAg
IHsKKyAgICAgICAgcmV0dXJuIEVmZmVjdChkZWYsIEhlYXBSYW5nZTo6bm9uZSgpLCBkZWYpOwor
ICAgIH0KKworICAgIGNvbnN0ZXhwciBzdGF0aWMgRWZmZWN0IGZvckRlZihIZWFwUmFuZ2UgZGVm
LCBIZWFwUmFuZ2UgcmVhZFJhbmdlLCBIZWFwUmFuZ2Ugd3JpdGVSYW5nZSkKKyAgICB7CisgICAg
ICAgIHJldHVybiBFZmZlY3QocmVhZFJhbmdlLCB3cml0ZVJhbmdlLCBkZWYpOworICAgIH0KKwor
ICAgIGNvbnN0ZXhwciBib29sIG11c3RHZW5lcmF0ZSgpIGNvbnN0CiAgICAgewogICAgICAgICBy
ZXR1cm4gISF3cml0ZXM7CiAgICAgfQogfTsKIAogfSB9Ci0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RvbWppdC9ET01KSVRIZWFwUmFuZ2UuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kb21qaXQvRE9NSklUSGVhcFJhbmdlLmgKaW5kZXggZmI5Mzk5OWZmNzg1
YzA2ZjdkYWNkNmRhOWM4ZDZlMGE5NTY3ODY3NC4uZjcwZmVjYzY5MDZkZDViZTA1NDI5NWU3MDhl
OTRiNzc5MzExNjQwZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RvbWppdC9E
T01KSVRIZWFwUmFuZ2UuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZG9taml0L0RPTUpJ
VEhlYXBSYW5nZS5oCkBAIC0yOCw4ICsyOCw2IEBACiAjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMu
aD4KICNpbmNsdWRlIDx3dGYvUHJpbnRTdHJlYW0uaD4KIAotI2lmIEVOQUJMRShKSVQpCi0KIG5h
bWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgRE9NSklUIHsKIAogY2xhc3MgSGVhcFJhbmdlIHsKQEAg
LTQ3LDcgKzQ1LDYgQEAgY2xhc3MgSGVhcFJhbmdlIHsKICAgICAgICAgQVNTRVJUX1dJVEhfTUVT
U0FHRShiZWdpbiA8PSBlbmQsICJiZWdpbiA8PSBlbmQgaXMgdGhlIGludmFyaWFudCBvZiB0aGlz
IEhlYXBSYW5nZS4iKTsKICAgICB9CiAKLXByaXZhdGU6CiAgICAgZW51bSBDb25zdEV4cHJUYWcg
eyBDb25zdEV4cHIgfTsKICAgICBjb25zdGV4cHIgSGVhcFJhbmdlKENvbnN0RXhwclRhZywgdWlu
dDE2X3QgYmVnaW4sIHVpbnQxNl90IGVuZCkKICAgICAgICAgOiBtX2JlZ2luKGJlZ2luKQpAQCAt
NTUsMjEgKzUyLDEzIEBAIGNsYXNzIEhlYXBSYW5nZSB7CiAgICAgewogICAgIH0KIAotICAgIHRl
bXBsYXRlPHVpbnQxNl90IGJlZ2luLCB1aW50MTZfdCBlbmQ+Ci0gICAgc3RhdGljIGNvbnN0ZXhw
ciBIZWFwUmFuZ2UgZnJvbUNvbnN0YW50KCkKLSAgICB7Ci0gICAgICAgIHN0YXRpY19hc3NlcnQo
YmVnaW4gPD0gZW5kLCAiYmVnaW4gPD0gZW5kIGlzIHRoZSBpbnZhcmlhbnQgb2YgdGhpcyBIZWFw
UmFuZ2UuIik7Ci0gICAgICAgIHJldHVybiBIZWFwUmFuZ2UoQ29uc3RFeHByLCBiZWdpbiwgZW5k
KTsKLSAgICB9Ci0KLXB1YmxpYzoKICAgICBlbnVtIFJhd1JlcHJlc2VudGF0aW9uVGFnIHsgUmF3
UmVwcmVzZW50YXRpb24gfTsKICAgICBleHBsaWNpdCBjb25zdGV4cHIgSGVhcFJhbmdlKFJhd1Jl
cHJlc2VudGF0aW9uVGFnLCB1aW50MzJfdCB2YWx1ZSkKICAgICAgICAgOiBtX3Jhdyh2YWx1ZSkK
ICAgICB7CiAgICAgfQogCi0gICAgc3RhdGljIEhlYXBSYW5nZSBmcm9tUmF3KHVpbnQzMl90IHZh
bHVlKQorICAgIGNvbnN0ZXhwciBzdGF0aWMgSGVhcFJhbmdlIGZyb21SYXcodWludDMyX3QgdmFs
dWUpCiAgICAgewogICAgICAgICByZXR1cm4gSGVhcFJhbmdlKFJhd1JlcHJlc2VudGF0aW9uLCB2
YWx1ZSk7CiAgICAgfQpAQCAtNzgsMTYgKzY3LDI4IEBAIGNsYXNzIEhlYXBSYW5nZSB7CiAgICAg
dWludDE2X3QgZW5kKCkgY29uc3QgeyByZXR1cm4gbV9lbmQ7IH0KICAgICB1aW50MzJfdCByYXdS
ZXByZXNlbnRhdGlvbigpIHsgcmV0dXJuIG1fcmF3OyB9CiAKLSAgICBleHBsaWNpdCBvcGVyYXRv
ciBib29sKCkgY29uc3QKKyAgICBjb25zdGV4cHIgZXhwbGljaXQgb3BlcmF0b3IgYm9vbCgpIGNv
bnN0CiAgICAgewogICAgICAgICByZXR1cm4gbV9iZWdpbiAhPSBtX2VuZDsKICAgICB9CiAKLSAg
ICBib29sIG9wZXJhdG9yPT0oY29uc3QgSGVhcFJhbmdlJiBvdGhlcikgY29uc3QKKyAgICBjb25z
dGV4cHIgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEhlYXBSYW5nZSYgb3RoZXIpIGNvbnN0CiAgICAg
ewogICAgICAgICByZXR1cm4gbV9iZWdpbiA9PSBvdGhlci5tX2JlZ2luICYmIG1fZW5kID09IG90
aGVyLm1fZW5kOwogICAgIH0KIAorICAgIGNvbnN0ZXhwciBib29sIG9wZXJhdG9yIT0oY29uc3Qg
SGVhcFJhbmdlJiBvdGhlcikgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiAhb3BlcmF0b3I9
PShvdGhlcik7CisgICAgfQorCisgICAgdGVtcGxhdGU8dWludDE2X3QgYmVnaW4sIHVpbnQxNl90
IGVuZD4KKyAgICBzdGF0aWMgY29uc3RleHByIEhlYXBSYW5nZSBmcm9tQ29uc3RhbnQoKQorICAg
IHsKKyAgICAgICAgc3RhdGljX2Fzc2VydChiZWdpbiA8PSBlbmQsICJiZWdpbiA8PSBlbmQgaXMg
dGhlIGludmFyaWFudCBvZiB0aGlzIEhlYXBSYW5nZS4iKTsKKyAgICAgICAgcmV0dXJuIEhlYXBS
YW5nZShDb25zdEV4cHIsIGJlZ2luLCBlbmQpOworICAgIH0KKwogICAgIHN0YXRpYyBjb25zdGV4
cHIgSGVhcFJhbmdlIHRvcCgpIHsgcmV0dXJuIGZyb21Db25zdGFudDwwLCBVSU5UMTZfTUFYPigp
OyB9CiAgICAgc3RhdGljIGNvbnN0ZXhwciBIZWFwUmFuZ2Ugbm9uZSgpIHsgcmV0dXJuIGZyb21D
b25zdGFudDxVSU5UMTZfTUFYLCBVSU5UMTZfTUFYPigpOyB9IC8vIEVtcHR5IHJhbmdlLgogCkBA
IC0xMjcsNSArMTI4LDMgQEAgY2xhc3MgSGVhcFJhbmdlIHsKIH07CiAKIH0gfQotCi0jZW5kaWYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kb21qaXQvRE9NSklUU2lnbmF0dXJl
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZG9taml0L0RPTUpJVFNpZ25hdHVyZS5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjM3ZDYwZWQ3ZjNlYWYwNjNkOWIwYzlkODllZDYzNDg3YzRjYmI1YTMKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZG9taml0L0RPTUpJVFNpZ25hdHVyZS5o
CkBAIC0wLDAgKzEsNzAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
CisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkNsYXNzSW5mby5oIgorI2luY2x1ZGUg
IkRPTUpJVEVmZmVjdC5oIgorI2luY2x1ZGUgIlNwZWN1bGF0ZWRUeXBlLmgiCisKK25hbWVzcGFj
ZSBKU0MgeyBuYW1lc3BhY2UgRE9NSklUIHsKKworLy8gQ3VycmVudGx5LCB3ZSBvbmx5IHN1cHBv
cnQgZnVuY3Rpb25zIHdoaWNoIGFyZ3VtZW50cyB1cCB0byAyLgorLy8gRXZlbnR1YWxseSwgd2Ug
c2hvdWxkIGV4dGVuZCB0aGlzLiBCdXQgcG9zc2libHksIDIgb3IgMyBjYW4gY292ZXIgdHlwaWNh
bCB1c2UgY2FzZXMuCisjZGVmaW5lIEpTQ19ET01KSVRfU0lHTkFUVVJFX01BWF9BUkdVTUVOVFMg
MgorCitjbGFzcyBQYXRjaHBvaW50OworCit0eXBlZGVmIFJlZjxQYXRjaHBvaW50PiBDaGVja0RP
TUdlbmVyYXRvckZ1bmN0aW9uKHZvaWQpOworCitjbGFzcyBTaWduYXR1cmUgeworcHVibGljOgor
ICAgIHRlbXBsYXRlPHR5cGVuYW1lLi4uIEFyZ3VtZW50cz4KKyAgICBjb25zdGV4cHIgU2lnbmF0
dXJlKHVpbnRwdHJfdCB1bnNhZmVGdW5jdGlvbiwgQ2hlY2tET01HZW5lcmF0b3JGdW5jdGlvbiog
Y2hlY2tET01HZW5lcmF0b3JGdW5jdGlvbiwgY29uc3QgQ2xhc3NJbmZvKiBjbGFzc0luZm8sIEVm
ZmVjdCBlZmZlY3QsIFNwZWN1bGF0ZWRUeXBlIHJlc3VsdCwgQXJndW1lbnRzLi4uIGFyZ3VtZW50
cykKKyAgICAgICAgOiB1bnNhZmVGdW5jdGlvbih1bnNhZmVGdW5jdGlvbikKKyAgICAgICAgLCBj
aGVja0RPTUdlbmVyYXRvckZ1bmN0aW9uKGNoZWNrRE9NR2VuZXJhdG9yRnVuY3Rpb24pCisgICAg
ICAgICwgY2xhc3NJbmZvKGNsYXNzSW5mbykKKyAgICAgICAgLCBlZmZlY3QoZWZmZWN0KQorICAg
ICAgICAsIHJlc3VsdChyZXN1bHQpCisgICAgICAgICwgYXJndW1lbnRzIHtzdGF0aWNfY2FzdDxT
cGVjdWxhdGVkVHlwZT4oYXJndW1lbnRzKS4uLn0KKyAgICAgICAgLCBhcmd1bWVudENvdW50KHNp
emVvZi4uLihhcmd1bWVudHMpKQorICAgIHsKKyAgICB9CisKKyAgICBSZWY8UGF0Y2hwb2ludD4g
Y2hlY2tET00oKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIGNoZWNrRE9NR2VuZXJhdG9y
RnVuY3Rpb24oKTsKKyAgICB9CisKKyAgICB1aW50cHRyX3QgdW5zYWZlRnVuY3Rpb247CisgICAg
Q2hlY2tET01HZW5lcmF0b3JGdW5jdGlvbiogY2hlY2tET01HZW5lcmF0b3JGdW5jdGlvbjsKKyAg
ICBjb25zdCBDbGFzc0luZm8qIGNvbnN0IGNsYXNzSW5mbzsKKyAgICBjb25zdCBFZmZlY3QgZWZm
ZWN0OworICAgIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIHJlc3VsdDsKKyAgICBjb25zdCBTcGVjdWxh
dGVkVHlwZSBhcmd1bWVudHNbSlNDX0RPTUpJVF9TSUdOQVRVUkVfTUFYX0FSR1VNRU5UU107Cisg
ICAgY29uc3QgdW5zaWduZWQgYXJndW1lbnRDb3VudDsKK307CisKK30gfQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCmluZGV4IDU0ZjRlNzJlNjQxOWJm
ZTI1NTY1M2UzNjVmYmFjODIwMzJmZmRlOTcuLjNiYTE1ZTZlMjg0NGQzMDQwM2U4ZGQ0ZTAxNmMy
NGIwYzA0NmRmYzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2Fw
YWJpbGl0aWVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxp
dGllcy5jcHAKQEAgLTI3Myw2ICsyNzMsNyBAQCBpbmxpbmUgQ2FwYWJpbGl0eUxldmVsIGNhbkNv
bXBpbGUoTm9kZSogbm9kZSkKICAgICBjYXNlIERlZmluZUFjY2Vzc29yUHJvcGVydHk6CiAgICAg
Y2FzZSBUb0xvd2VyQ2FzZToKICAgICBjYXNlIENoZWNrRE9NOgorICAgIGNhc2UgQ2FsbERPTToK
ICAgICBjYXNlIENhbGxET01HZXR0ZXI6CiAgICAgICAgIC8vIFRoZXNlIGFyZSBPSy4KICAgICAg
ICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2Vy
REZHVG9CMy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5j
cHAKaW5kZXggYWQxNjE1NzIwMjdjNDFmMzAwNjgzZGMxMjI0MmY5Yjk1ZDQ1OTBjMi4uNDBlYmMx
NTc5MGNkMGQ0NTM4N2ZjNTBkZGZmMmQ4NTExZTZlN2YwZCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcApAQCAtMTA2MCw2ICsxMDYwLDkgQEAgY2xh
c3MgTG93ZXJERkdUb0IzIHsKICAgICAgICAgY2FzZSBDaGVja0RPTToKICAgICAgICAgICAgIGNv
bXBpbGVDaGVja0RPTSgpOwogICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQ2FsbERP
TToKKyAgICAgICAgICAgIGNvbXBpbGVDYWxsRE9NKCk7CisgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgY2FzZSBDYWxsRE9NR2V0dGVyOgogICAgICAgICAgICAgY29tcGlsZUNhbGxET01HZXR0
ZXIoKTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtOTEwMCw2ICs5MTAzLDU0IEBAIGNsYXNzIExv
d2VyREZHVG9CMyB7CiAgICAgICAgIHBhdGNocG9pbnQtPmVmZmVjdHMgPSBFZmZlY3RzOjpmb3JD
aGVjaygpOwogICAgIH0KIAorICAgIHZvaWQgY29tcGlsZUNhbGxET00oKQorICAgIHsKKyAgICAg
ICAgY29uc3QgRE9NSklUOjpTaWduYXR1cmUqIHNpZ25hdHVyZSA9IG1fbm9kZS0+c2lnbmF0dXJl
KCk7CisKKyAgICAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBoYXZlIGEgd2F5IHRvIGNhbGwgZnVu
Y3Rpb25zIHdpdGggdGhlIHZlY3RvciBvZiByZWdpc3RlcnMuCisgICAgICAgIC8vIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjMwOTkKKyAgICAgICAgVmVjdG9yPExW
YWx1ZT4gb3BlcmFuZHM7CisKKyAgICAgICAgdW5zaWduZWQgaW5kZXggPSAwOworICAgICAgICBE
RkdfTk9ERV9ET19UT19DSElMRFJFTihtX2dyYXBoLCBtX25vZGUsIFsmXShOb2RlKiwgRWRnZSBl
ZGdlKSB7CisgICAgICAgICAgICBpZiAoIWluZGV4KQorICAgICAgICAgICAgICAgIG9wZXJhbmRz
LmFwcGVuZChsb3dDZWxsKGVkZ2UpKTsKKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAg
ICAgIHN3aXRjaCAoc2lnbmF0dXJlLT5hcmd1bWVudHNbaW5kZXggLSAxXSkgeworICAgICAgICAg
ICAgICAgIGNhc2UgU3BlY1N0cmluZzoKKyAgICAgICAgICAgICAgICAgICAgb3BlcmFuZHMuYXBw
ZW5kKGxvd1N0cmluZyhlZGdlKSk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgICAgIGNhc2UgU3BlY0ludDMyT25seToKKyAgICAgICAgICAgICAgICAgICAgb3BlcmFu
ZHMuYXBwZW5kKGxvd0ludDMyKGVkZ2UpKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICAgICAgY2FzZSBTcGVjQm9vbGVhbjoKKyAgICAgICAgICAgICAgICAgICAgb3Bl
cmFuZHMuYXBwZW5kKGxvd0Jvb2xlYW4oZWRnZSkpOworICAgICAgICAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICArK2luZGV4
OworICAgICAgICB9KTsKKworICAgICAgICBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMg
PSBzaWduYXR1cmUtPmFyZ3VtZW50Q291bnQgKyAxOworICAgICAgICBMVmFsdWUgcmVzdWx0Owor
ICAgICAgICBzd2l0Y2ggKGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKSB7CisgICAgICAgIGNh
c2UgMToKKyAgICAgICAgICAgIHJlc3VsdCA9IHZtQ2FsbChJbnQ2NCwgbV9vdXQub3BlcmF0aW9u
KHJlaW50ZXJwcmV0X2Nhc3Q8Sl9KSVRPcGVyYXRpb25fRVA+KHNpZ25hdHVyZS0+dW5zYWZlRnVu
Y3Rpb24pKSwgbV9jYWxsRnJhbWUsIG9wZXJhbmRzWzBdKTsKKyAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICBjYXNlIDI6CisgICAgICAgICAgICByZXN1bHQgPSB2bUNhbGwoSW50NjQsIG1fb3V0
Lm9wZXJhdGlvbihyZWludGVycHJldF9jYXN0PEpfSklUT3BlcmF0aW9uX0VQUD4oc2lnbmF0dXJl
LT51bnNhZmVGdW5jdGlvbikpLCBtX2NhbGxGcmFtZSwgb3BlcmFuZHNbMF0sIG9wZXJhbmRzWzFd
KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIDM6CisgICAgICAgICAgICByZXN1
bHQgPSB2bUNhbGwoSW50NjQsIG1fb3V0Lm9wZXJhdGlvbihyZWludGVycHJldF9jYXN0PEpfSklU
T3BlcmF0aW9uX0VQUFA+KHNpZ25hdHVyZS0+dW5zYWZlRnVuY3Rpb24pKSwgbV9jYWxsRnJhbWUs
IG9wZXJhbmRzWzBdLCBvcGVyYW5kc1sxXSwgb3BlcmFuZHNbMl0pOworICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVB
Q0hFRCgpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAgICBzZXRKU1Zh
bHVlKHJlc3VsdCk7CisgICAgfQorCiAgICAgdm9pZCBjb21waWxlQ2FsbERPTUdldHRlcigpCiAg
ICAgewogICAgICAgICBET01KSVQ6OkNhbGxET01HZXR0ZXJQYXRjaHBvaW50KiBkb21KSVQgPSBt
X25vZGUtPmNhbGxET01HZXR0ZXJEYXRhKCktPnBhdGNocG9pbnQ7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCmluZGV4IDhmNmM2OTcxYTZiZWU5ZjFmYjZmYzM2OGRl
NWEyY2I4NDc2NDRhNjguLjIwYjcxZjQ1MmNlNDRiNWNjNTZjYzcxYzJkNzZiMTdiNTg4ZmU2NjUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCkBAIC0xNTgsNiAr
MTU4LDcgQEAgdHlwZWRlZiBFbmNvZGVkSlNWYWx1ZSAoSklUX09QRVJBVElPTiAqSl9KSVRPcGVy
YXRpb25fRUpQKShFeGVjU3RhdGUqLCBFbmNvZGVkSlMKIHR5cGVkZWYgRW5jb2RlZEpTVmFsdWUg
KEpJVF9PUEVSQVRJT04gKkpfSklUT3BlcmF0aW9uX0VHUCkoRXhlY1N0YXRlKiwgSlNHbG9iYWxP
YmplY3QqLCB2b2lkKik7CiB0eXBlZGVmIEVuY29kZWRKU1ZhbHVlIChKSVRfT1BFUkFUSU9OICpK
X0pJVE9wZXJhdGlvbl9FUCkoRXhlY1N0YXRlKiwgdm9pZCopOwogdHlwZWRlZiBFbmNvZGVkSlNW
YWx1ZSAoSklUX09QRVJBVElPTiAqSl9KSVRPcGVyYXRpb25fRVBQKShFeGVjU3RhdGUqLCB2b2lk
Kiwgdm9pZCopOwordHlwZWRlZiBFbmNvZGVkSlNWYWx1ZSAoSklUX09QRVJBVElPTiAqSl9KSVRP
cGVyYXRpb25fRVBQUCkoRXhlY1N0YXRlKiwgdm9pZCosIHZvaWQqLCB2b2lkKik7CiB0eXBlZGVm
IEVuY29kZWRKU1ZhbHVlIChKSVRfT1BFUkFUSU9OICpKX0pJVE9wZXJhdGlvbl9FUFMpKEV4ZWNT
dGF0ZSosIHZvaWQqLCBzaXplX3QpOwogdHlwZWRlZiBFbmNvZGVkSlNWYWx1ZSAoSklUX09QRVJB
VElPTiAqSl9KSVRPcGVyYXRpb25fRVBjKShFeGVjU3RhdGUqLCBJbnN0cnVjdGlvbiopOwogdHlw
ZWRlZiBFbmNvZGVkSlNWYWx1ZSAoSklUX09QRVJBVElPTiAqSl9KSVRPcGVyYXRpb25fRUpzY0Mp
KEV4ZWNTdGF0ZSosIEpTU2NvcGUqLCBKU0NlbGwqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUVGh1bmtzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUVGh1bmtzLmNwcAppbmRleCBiZjBhN2Y5MDkxOWE1YjZkMGJlZWQ5MjhhYmRhZjcxMGM5ZGM5
ZDBiLi40MGMxMmNlYzk0ZTAxYTA4NDA0ZjdiNmQ5NjcyMWYxMDUxZjQ4MzE5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFRodW5rcy5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRUaHVua3MuY3BwCkBAIC05MCwxMCArOTAsMTAgQEAgdm9pZCBK
SVRUaHVua3M6OmZpbmFsaXplKEhhbmRsZTxVbmtub3duPiBoYW5kbGUsIHZvaWQqKQogCiBOYXRp
dmVFeGVjdXRhYmxlKiBKSVRUaHVua3M6Omhvc3RGdW5jdGlvblN0dWIoVk0qIHZtLCBOYXRpdmVG
dW5jdGlvbiBmdW5jdGlvbiwgTmF0aXZlRnVuY3Rpb24gY29uc3RydWN0b3IsIGNvbnN0IFN0cmlu
ZyYgbmFtZSkKIHsKLSAgICByZXR1cm4gaG9zdEZ1bmN0aW9uU3R1Yih2bSwgZnVuY3Rpb24sIGNv
bnN0cnVjdG9yLCBudWxscHRyLCBOb0ludHJpbnNpYywgbmFtZSk7CisgICAgcmV0dXJuIGhvc3RG
dW5jdGlvblN0dWIodm0sIGZ1bmN0aW9uLCBjb25zdHJ1Y3RvciwgbnVsbHB0ciwgTm9JbnRyaW5z
aWMsIG51bGxwdHIsIG5hbWUpOwogfQogCi1OYXRpdmVFeGVjdXRhYmxlKiBKSVRUaHVua3M6Omhv
c3RGdW5jdGlvblN0dWIoVk0qIHZtLCBOYXRpdmVGdW5jdGlvbiBmdW5jdGlvbiwgTmF0aXZlRnVu
Y3Rpb24gY29uc3RydWN0b3IsIFRodW5rR2VuZXJhdG9yIGdlbmVyYXRvciwgSW50cmluc2ljIGlu
dHJpbnNpYywgY29uc3QgU3RyaW5nJiBuYW1lKQorTmF0aXZlRXhlY3V0YWJsZSogSklUVGh1bmtz
Ojpob3N0RnVuY3Rpb25TdHViKFZNKiB2bSwgTmF0aXZlRnVuY3Rpb24gZnVuY3Rpb24sIE5hdGl2
ZUZ1bmN0aW9uIGNvbnN0cnVjdG9yLCBUaHVua0dlbmVyYXRvciBnZW5lcmF0b3IsIEludHJpbnNp
YyBpbnRyaW5zaWMsIGNvbnN0IERPTUpJVDo6U2lnbmF0dXJlKiBzaWduYXR1cmUsIGNvbnN0IFN0
cmluZyYgbmFtZSkKIHsKICAgICBBU1NFUlQoIWlzQ29tcGlsYXRpb25UaHJlYWQoKSk7ICAgIAog
ICAgIEFTU0VSVCh2bS0+Y2FuVXNlSklUKCkpOwpAQCAtMTEwLDE0ICsxMTAsMTQgQEAgTmF0aXZl
RXhlY3V0YWJsZSogSklUVGh1bmtzOjpob3N0RnVuY3Rpb25TdHViKFZNKiB2bSwgTmF0aXZlRnVu
Y3Rpb24gZnVuY3Rpb24sIE4KICAgICAKICAgICBSZWZQdHI8SklUQ29kZT4gZm9yQ29uc3RydWN0
ID0gYWRvcHRSZWYobmV3IE5hdGl2ZUpJVENvZGUoTWFjcm9Bc3NlbWJsZXJDb2RlUmVmOjpjcmVh
dGVTZWxmTWFuYWdlZENvZGVSZWYoY3RpTmF0aXZlQ29uc3RydWN0KHZtKSksIEpJVENvZGU6Okhv
c3RDYWxsVGh1bmspKTsKICAgICAKLSAgICBOYXRpdmVFeGVjdXRhYmxlKiBuYXRpdmVFeGVjdXRh
YmxlID0gTmF0aXZlRXhlY3V0YWJsZTo6Y3JlYXRlKCp2bSwgZm9yQ2FsbCwgZnVuY3Rpb24sIGZv
ckNvbnN0cnVjdCwgY29uc3RydWN0b3IsIGludHJpbnNpYywgbmFtZSk7CisgICAgTmF0aXZlRXhl
Y3V0YWJsZSogbmF0aXZlRXhlY3V0YWJsZSA9IE5hdGl2ZUV4ZWN1dGFibGU6OmNyZWF0ZSgqdm0s
IGZvckNhbGwsIGZ1bmN0aW9uLCBmb3JDb25zdHJ1Y3QsIGNvbnN0cnVjdG9yLCBpbnRyaW5zaWMs
IHNpZ25hdHVyZSwgbmFtZSk7CiAgICAgd2Vha0FkZCgqbV9ob3N0RnVuY3Rpb25TdHViTWFwLCBz
dGQ6Om1ha2VfdHVwbGUoZnVuY3Rpb24sIGNvbnN0cnVjdG9yLCBuYW1lKSwgV2VhazxOYXRpdmVF
eGVjdXRhYmxlPihuYXRpdmVFeGVjdXRhYmxlLCB0aGlzKSk7CiAgICAgcmV0dXJuIG5hdGl2ZUV4
ZWN1dGFibGU7CiB9CiAKIE5hdGl2ZUV4ZWN1dGFibGUqIEpJVFRodW5rczo6aG9zdEZ1bmN0aW9u
U3R1YihWTSogdm0sIE5hdGl2ZUZ1bmN0aW9uIGZ1bmN0aW9uLCBUaHVua0dlbmVyYXRvciBnZW5l
cmF0b3IsIEludHJpbnNpYyBpbnRyaW5zaWMsIGNvbnN0IFN0cmluZyYgbmFtZSkKIHsKLSAgICBy
ZXR1cm4gaG9zdEZ1bmN0aW9uU3R1Yih2bSwgZnVuY3Rpb24sIGNhbGxIb3N0RnVuY3Rpb25Bc0Nv
bnN0cnVjdG9yLCBnZW5lcmF0b3IsIGludHJpbnNpYywgbmFtZSk7CisgICAgcmV0dXJuIGhvc3RG
dW5jdGlvblN0dWIodm0sIGZ1bmN0aW9uLCBjYWxsSG9zdEZ1bmN0aW9uQXNDb25zdHJ1Y3Rvciwg
Z2VuZXJhdG9yLCBpbnRyaW5zaWMsIG51bGxwdHIsIG5hbWUpOwogfQogCiB2b2lkIEpJVFRodW5r
czo6Y2xlYXJIb3N0RnVuY3Rpb25TdHVicygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVFRodW5rcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRUaHVu
a3MuaAppbmRleCAzZjhmZTgwM2Y5ODcxMGY2OTIzNTI3YmM4ZjY1NTBmNGVkZDFjN2FlLi5hZGRj
ZjIzMGMzNDVkNDI3MWI2MzdmMDhiOTRjNDE2YTNlZDE4MmE0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVFRodW5rcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUVGh1bmtzLmgKQEAgLTM5LDYgKzM5LDkgQEAKICNpbmNsdWRlIDx3dGYvdGV4dC9T
dHJpbmdIYXNoLmg+CiAKIG5hbWVzcGFjZSBKU0MgeworbmFtZXNwYWNlIERPTUpJVCB7CitjbGFz
cyBTaWduYXR1cmU7Cit9CiAKIGNsYXNzIFZNOwogY2xhc3MgTmF0aXZlRXhlY3V0YWJsZTsKQEAg
LTU3LDcgKzYwLDcgQEAgY2xhc3MgSklUVGh1bmtzIGZpbmFsIDogcHJpdmF0ZSBXZWFrSGFuZGxl
T3duZXIgewogICAgIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBjdGlTdHViKFZNKiwgVGh1bmtHZW5l
cmF0b3IpOwogCiAgICAgTmF0aXZlRXhlY3V0YWJsZSogaG9zdEZ1bmN0aW9uU3R1YihWTSosIE5h
dGl2ZUZ1bmN0aW9uLCBOYXRpdmVGdW5jdGlvbiBjb25zdHJ1Y3RvciwgY29uc3QgU3RyaW5nJiBu
YW1lKTsKLSAgICBOYXRpdmVFeGVjdXRhYmxlKiBob3N0RnVuY3Rpb25TdHViKFZNKiwgTmF0aXZl
RnVuY3Rpb24sIE5hdGl2ZUZ1bmN0aW9uIGNvbnN0cnVjdG9yLCBUaHVua0dlbmVyYXRvciwgSW50
cmluc2ljLCBjb25zdCBTdHJpbmcmIG5hbWUpOworICAgIE5hdGl2ZUV4ZWN1dGFibGUqIGhvc3RG
dW5jdGlvblN0dWIoVk0qLCBOYXRpdmVGdW5jdGlvbiwgTmF0aXZlRnVuY3Rpb24gY29uc3RydWN0
b3IsIFRodW5rR2VuZXJhdG9yLCBJbnRyaW5zaWMsIGNvbnN0IERPTUpJVDo6U2lnbmF0dXJlKiwg
Y29uc3QgU3RyaW5nJiBuYW1lKTsKICAgICBOYXRpdmVFeGVjdXRhYmxlKiBob3N0RnVuY3Rpb25T
dHViKFZNKiwgTmF0aXZlRnVuY3Rpb24sIFRodW5rR2VuZXJhdG9yLCBJbnRyaW5zaWMsIGNvbnN0
IFN0cmluZyYgbmFtZSk7CiAKICAgICB2b2lkIGNsZWFySG9zdEZ1bmN0aW9uU3R1YnMoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQm91bmRGdW5jdGlvbi5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0JvdW5kRnVuY3Rpb24uY3BwCmlu
ZGV4IDI2Zjk5ZDY1M2FhMTQ0YjI0MDRkZDc5NTk0MzI5M2RlOTZiNzM0YzUuLmM0Y2U0M2U3ZDU2
MGI4NzM2M2M0OGQ5NTBhMDlhZDc5ZDA1MjQ5N2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTQm91bmRGdW5jdGlvbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNCb3VuZEZ1bmN0aW9uLmNwcApAQCAtMTY4LDcgKzE2OCw3IEBAIEpT
Qm91bmRGdW5jdGlvbiogSlNCb3VuZEZ1bmN0aW9uOjpjcmVhdGUoVk0mIHZtLCBFeGVjU3RhdGUq
IGV4ZWMsIEpTR2xvYmFsT2JqZWN0CiAgICAgTmF0aXZlRXhlY3V0YWJsZSogZXhlY3V0YWJsZSA9
IHZtLmdldEhvc3RGdW5jdGlvbigKICAgICAgICAgc2xvd0Nhc2UgPyBib3VuZEZ1bmN0aW9uQ2Fs
bCA6IGJvdW5kVGhpc05vQXJnc0Z1bmN0aW9uQ2FsbCwKICAgICAgICAgc2xvd0Nhc2UgPyBOb0lu
dHJpbnNpYyA6IEJvdW5kVGhpc05vQXJnc0Z1bmN0aW9uQ2FsbEludHJpbnNpYywKLSAgICAgICAg
Y2FuQ29uc3RydWN0ID8gKHNsb3dDYXNlID8gYm91bmRGdW5jdGlvbkNvbnN0cnVjdCA6IGJvdW5k
VGhpc05vQXJnc0Z1bmN0aW9uQ29uc3RydWN0KSA6IGNhbGxIb3N0RnVuY3Rpb25Bc0NvbnN0cnVj
dG9yLAorICAgICAgICBjYW5Db25zdHJ1Y3QgPyAoc2xvd0Nhc2UgPyBib3VuZEZ1bmN0aW9uQ29u
c3RydWN0IDogYm91bmRUaGlzTm9BcmdzRnVuY3Rpb25Db25zdHJ1Y3QpIDogY2FsbEhvc3RGdW5j
dGlvbkFzQ29uc3RydWN0b3IsIG51bGxwdHIsCiAgICAgICAgIG5hbWUpOwogICAgIFN0cnVjdHVy
ZSogc3RydWN0dXJlID0gZ2V0Qm91bmRGdW5jdGlvblN0cnVjdHVyZSh2bSwgZXhlYywgZ2xvYmFs
T2JqZWN0LCB0YXJnZXRGdW5jdGlvbik7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwg
bnVsbHB0cik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Nl
bGwuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5oCmluZGV4IGM0MGYz
ZTIxOTg0MWZiNDY4OTYzNTI4NGIwNDIyNDdhZmQ1MjNjMzYuLjRlZmJmOTA3NzhjYzU3MWJiZGI4
Mjg3MWE1MWZhNDRmODU2YWU5OGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTQ2VsbC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2Vs
bC5oCkBAIC01NiwxNyArNTYsMTcgQEAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gdm9pZCogYWxsb2Nh
dGVDZWxsKEhlYXAmLCBzaXplX3QpOwogdGVtcGxhdGU8dHlwZW5hbWUgVD4gdm9pZCogYWxsb2Nh
dGVDZWxsKEhlYXAmLCBHQ0RlZmVycmFsQ29udGV4dCopOwogdGVtcGxhdGU8dHlwZW5hbWUgVD4g
dm9pZCogYWxsb2NhdGVDZWxsKEhlYXAmLCBHQ0RlZmVycmFsQ29udGV4dCosIHNpemVfdCk7CiAK
LSNkZWZpbmUgREVDTEFSRV9FWFBPUlRfSU5GTyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFwKLSAgICBwcm90ZWN0ZWQ6ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgc3RhdGljIEpTX0VY
UE9SVERBVEEgY29uc3QgOjpKU0M6OkNsYXNzSW5mbyBzX2luZm87ICAgICAgICAgICAgIFwKLSAg
ICBwdWJsaWM6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFwKLSAgICAgICAgc3RhdGljIGNvbnN0IDo6SlNDOjpDbGFzc0luZm8qIGlu
Zm8oKSB7IHJldHVybiAmc19pbmZvOyB9Ci0KLSNkZWZpbmUgREVDTEFSRV9JTkZPICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBwcm90ZWN0
ZWQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFwKLSAgICAgICAgc3RhdGljIGNvbnN0IDo6SlNDOjpDbGFzc0luZm8gc19pbmZvOyAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBwdWJsaWM6ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgc3RhdGlj
IGNvbnN0IDo6SlNDOjpDbGFzc0luZm8qIGluZm8oKSB7IHJldHVybiAmc19pbmZvOyB9CisjZGVm
aW5lIERFQ0xBUkVfRVhQT1JUX0lORk8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFwKKyAgICBwcm90ZWN0ZWQ6ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBzdGF0aWMg
SlNfRVhQT1JUREFUQSBjb25zdCA6OkpTQzo6Q2xhc3NJbmZvIHNfaW5mbzsgICAgICAgICAgICAg
ICAgICBcCisgICAgcHVibGljOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBj
b25zdCA6OkpTQzo6Q2xhc3NJbmZvKiBpbmZvKCkgeyByZXR1cm4gJnNfaW5mbzsgfQorCisjZGVm
aW5lIERFQ0xBUkVfSU5GTyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFwKKyAgICBwcm90ZWN0ZWQ6ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBzdGF0aWMg
Y29uc3QgOjpKU0M6OkNsYXNzSW5mbyBzX2luZm87ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBcCisgICAgcHVibGljOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBj
b25zdCA6OkpTQzo6Q2xhc3NJbmZvKiBpbmZvKCkgeyByZXR1cm4gJnNfaW5mbzsgfQogCiBjbGFz
cyBKU0NlbGwgOiBwdWJsaWMgSGVhcENlbGwgewogICAgIGZyaWVuZCBjbGFzcyBKU1ZhbHVlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcAppbmRleCA4NTg0
YmMyOTdhZjcyM2Y1ODI5ODE1NmUyZTJiMGE4OGFlNzE4ZmI0Li5hMzE4NDJiNjU5MDkzZWVkNDgz
MmYwYzIyNTQ3ZmZiNDQ5YzQ0Y2Q5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0Z1bmN0aW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0Z1bmN0aW9uLmNwcApAQCAtODQsOSArODQsOSBAQCBKU0Z1bmN0aW9uKiBKU0Z1bmN0aW9u
OjpjcmVhdGUoVk0mIHZtLCBXZWJBc3NlbWJseUV4ZWN1dGFibGUqIGV4ZWN1dGFibGUsIEpTU2Nv
cAogfQogI2VuZGlmCiAKLUpTRnVuY3Rpb24qIEpTRnVuY3Rpb246OmNyZWF0ZShWTSYgdm0sIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGludCBsZW5ndGgsIGNvbnN0IFN0cmluZyYgbmFt
ZSwgTmF0aXZlRnVuY3Rpb24gbmF0aXZlRnVuY3Rpb24sIEludHJpbnNpYyBpbnRyaW5zaWMsIE5h
dGl2ZUZ1bmN0aW9uIG5hdGl2ZUNvbnN0cnVjdG9yKQorSlNGdW5jdGlvbiogSlNGdW5jdGlvbjo6
Y3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgaW50IGxlbmd0aCwg
Y29uc3QgU3RyaW5nJiBuYW1lLCBOYXRpdmVGdW5jdGlvbiBuYXRpdmVGdW5jdGlvbiwgSW50cmlu
c2ljIGludHJpbnNpYywgTmF0aXZlRnVuY3Rpb24gbmF0aXZlQ29uc3RydWN0b3IsIGNvbnN0IERP
TUpJVDo6U2lnbmF0dXJlKiBzaWduYXR1cmUpCiB7Ci0gICAgTmF0aXZlRXhlY3V0YWJsZSogZXhl
Y3V0YWJsZSA9IHZtLmdldEhvc3RGdW5jdGlvbihuYXRpdmVGdW5jdGlvbiwgaW50cmluc2ljLCBu
YXRpdmVDb25zdHJ1Y3RvciwgbmFtZSk7CisgICAgTmF0aXZlRXhlY3V0YWJsZSogZXhlY3V0YWJs
ZSA9IHZtLmdldEhvc3RGdW5jdGlvbihuYXRpdmVGdW5jdGlvbiwgaW50cmluc2ljLCBuYXRpdmVD
b25zdHJ1Y3Rvciwgc2lnbmF0dXJlLCBuYW1lKTsKICAgICBKU0Z1bmN0aW9uKiBmdW5jdGlvbiA9
IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTRnVuY3Rpb24+KHZtLmhlYXApKSBKU0Z1bmN0
aW9uKHZtLCBnbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdC0+ZnVuY3Rpb25TdHJ1Y3R1cmUoKSk7
CiAgICAgLy8gQ2FuJ3QgZG8gdGhpcyBkdXJpbmcgaW5pdGlhbGl6YXRpb24gYmVjYXVzZSBnZXRI
b3N0RnVuY3Rpb24gbWlnaHQgZG8gYSBHQyBhbGxvY2F0aW9uLgogICAgIGZ1bmN0aW9uLT5maW5p
c2hDcmVhdGlvbih2bSwgZXhlY3V0YWJsZSwgbGVuZ3RoLCBuYW1lKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uaAppbmRleCA4ZGYwM2ExNGE2N2RhZTkzMDRjMGQ1
NTQ5NGY5NWE4NzdmOTc4MWU2Li5mMTFiMTJmYjNiZDE0NTYyNWY4MmJmMWZhODcyNTA0NDQ3NjU3
NjI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9u
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5oCkBAIC00
Niw2ICs0NiwxMSBAQCBjbGFzcyBTcGVjdWxhdGl2ZUpJVDsKIGNsYXNzIEpJVENvbXBpbGVyOwog
fQogCituYW1lc3BhY2UgRE9NSklUIHsKK2NsYXNzIFNpZ25hdHVyZTsKK30KKworCiBKU19FWFBP
UlRfUFJJVkFURSBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxIb3N0RnVuY3Rpb25B
c0NvbnN0cnVjdG9yKEV4ZWNTdGF0ZSopOwogCiBKU19FWFBPUlRfUFJJVkFURSBTdHJpbmcgZ2V0
Q2FsY3VsYXRlZERpc3BsYXlOYW1lKFZNJiwgSlNPYmplY3QqKTsKQEAgLTY3LDcgKzcyLDcgQEAg
Y2xhc3MgSlNGdW5jdGlvbiA6IHB1YmxpYyBKU0NhbGxlZSB7CiAgICAgICAgIHJldHVybiBzaXpl
b2YoSlNGdW5jdGlvbik7CiAgICAgfQogCi0gICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIEpT
RnVuY3Rpb24qIGNyZWF0ZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgaW50IGxlbmd0aCwgY29uc3Qg
U3RyaW5nJiBuYW1lLCBOYXRpdmVGdW5jdGlvbiwgSW50cmluc2ljID0gTm9JbnRyaW5zaWMsIE5h
dGl2ZUZ1bmN0aW9uIG5hdGl2ZUNvbnN0cnVjdG9yID0gY2FsbEhvc3RGdW5jdGlvbkFzQ29uc3Ry
dWN0b3IpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBKU0Z1bmN0aW9uKiBjcmVhdGUo
Vk0mLCBKU0dsb2JhbE9iamVjdCosIGludCBsZW5ndGgsIGNvbnN0IFN0cmluZyYgbmFtZSwgTmF0
aXZlRnVuY3Rpb24sIEludHJpbnNpYyA9IE5vSW50cmluc2ljLCBOYXRpdmVGdW5jdGlvbiBuYXRp
dmVDb25zdHJ1Y3RvciA9IGNhbGxIb3N0RnVuY3Rpb25Bc0NvbnN0cnVjdG9yLCBjb25zdCBET01K
SVQ6OlNpZ25hdHVyZSogPSBudWxscHRyKTsKICAgICAKICAgICBzdGF0aWMgSlNGdW5jdGlvbiog
Y3JlYXRlV2l0aEludmFsaWRhdGVkUmVhbGxvY2F0aW9uV2F0Y2hwb2ludChWTSYsIEZ1bmN0aW9u
RXhlY3V0YWJsZSosIEpTU2NvcGUqKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNOYXRpdmVTdGRGdW5jdGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU05hdGl2ZVN0ZEZ1bmN0aW9uLmNwcAppbmRleCA2ZGQ4NDlmMmVhZmJlYmRk
NzA3ZWU1NzM4MDA4MmRlNTQ4OTMyMGExLi5jMTI2NWIxZjA2YTkwYTA3NDQxZDdhYzVjNjA4ODMw
YTFlZmE0ZjAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU05h
dGl2ZVN0ZEZ1bmN0aW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U05hdGl2ZVN0ZEZ1bmN0aW9uLmNwcApAQCAtNjYsNyArNjYsNyBAQCBzdGF0aWMgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBydW5TdGRGdW5jdGlvbihFeGVjU3RhdGUqIHN0YXRlKQogCiBK
U05hdGl2ZVN0ZEZ1bmN0aW9uKiBKU05hdGl2ZVN0ZEZ1bmN0aW9uOjpjcmVhdGUoVk0mIHZtLCBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBpbnQgbGVuZ3RoLCBjb25zdCBTdHJpbmcmIG5h
bWUsIE5hdGl2ZVN0ZEZ1bmN0aW9uJiYgbmF0aXZlU3RkRnVuY3Rpb24sIEludHJpbnNpYyBpbnRy
aW5zaWMsIE5hdGl2ZUZ1bmN0aW9uIG5hdGl2ZUNvbnN0cnVjdG9yKQogewotICAgIE5hdGl2ZUV4
ZWN1dGFibGUqIGV4ZWN1dGFibGUgPSB2bS5nZXRIb3N0RnVuY3Rpb24ocnVuU3RkRnVuY3Rpb24s
IGludHJpbnNpYywgbmF0aXZlQ29uc3RydWN0b3IsIG5hbWUpOworICAgIE5hdGl2ZUV4ZWN1dGFi
bGUqIGV4ZWN1dGFibGUgPSB2bS5nZXRIb3N0RnVuY3Rpb24ocnVuU3RkRnVuY3Rpb24sIGludHJp
bnNpYywgbmF0aXZlQ29uc3RydWN0b3IsIG51bGxwdHIsIG5hbWUpOwogICAgIE5hdGl2ZVN0ZEZ1
bmN0aW9uQ2VsbCogZnVuY3Rpb25DZWxsID0gTmF0aXZlU3RkRnVuY3Rpb25DZWxsOjpjcmVhdGUo
dm0sIFdURk1vdmUobmF0aXZlU3RkRnVuY3Rpb24pKTsKICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSA9IGdsb2JhbE9iamVjdC0+bmF0aXZlU3RkRnVuY3Rpb25TdHJ1Y3R1cmUoKTsKICAgICBKU05h
dGl2ZVN0ZEZ1bmN0aW9uKiBmdW5jdGlvbiA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpT
TmF0aXZlU3RkRnVuY3Rpb24+KHZtLmhlYXApKSBKU05hdGl2ZVN0ZEZ1bmN0aW9uKHZtLCBnbG9i
YWxPYmplY3QsIHN0cnVjdHVyZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU09iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09i
amVjdC5jcHAKaW5kZXggZjUzZGI2MTk4NmVhZGRhYTIzYTI0NWRlNTRhZTA5YzU4ZjBhYjc2NC4u
MDhhZTc5MjBhOWVlNTJjMjRkNzVhYmUxZGE3ZjY2ZTgxMWIyYWYxYyAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcApAQCAtMjU0OSw2ICsyNTQ5LDE3IEBAIGJv
b2wgSlNPYmplY3Q6OnB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uKFZNJiB2bSwgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgY29uCiAgICAgcmV0dXJuIHB1dERpcmVjdCh2bSwgcHJvcGVydHlO
YW1lLCBmdW5jdGlvbiwgYXR0cmlidXRlcyk7CiB9CiAKK2Jvb2wgSlNPYmplY3Q6OnB1dERpcmVj
dE5hdGl2ZUZ1bmN0aW9uKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29u
c3QgUHJvcGVydHlOYW1lJiBwcm9wZXJ0eU5hbWUsIHVuc2lnbmVkIGZ1bmN0aW9uTGVuZ3RoLCBO
YXRpdmVGdW5jdGlvbiBuYXRpdmVGdW5jdGlvbiwgSW50cmluc2ljIGludHJpbnNpYywgY29uc3Qg
RE9NSklUOjpTaWduYXR1cmUqIHNpZ25hdHVyZSwgdW5zaWduZWQgYXR0cmlidXRlcykKK3sKKyAg
ICBTdHJpbmdJbXBsKiBuYW1lID0gcHJvcGVydHlOYW1lLnB1YmxpY05hbWUoKTsKKyAgICBpZiAo
IW5hbWUpCisgICAgICAgIG5hbWUgPSB2bS5wcm9wZXJ0eU5hbWVzLT5hbm9ueW1vdXMuaW1wbCgp
OworICAgIEFTU0VSVChuYW1lKTsKKworICAgIEpTRnVuY3Rpb24qIGZ1bmN0aW9uID0gSlNGdW5j
dGlvbjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIGZ1bmN0aW9uTGVuZ3RoLCBuYW1lLCBuYXRp
dmVGdW5jdGlvbiwgaW50cmluc2ljLCBjYWxsSG9zdEZ1bmN0aW9uQXNDb25zdHJ1Y3Rvciwgc2ln
bmF0dXJlKTsKKyAgICByZXR1cm4gcHV0RGlyZWN0KHZtLCBwcm9wZXJ0eU5hbWUsIGZ1bmN0aW9u
LCBhdHRyaWJ1dGVzKTsKK30KKwogSlNGdW5jdGlvbiogSlNPYmplY3Q6OnB1dERpcmVjdEJ1aWx0
aW5GdW5jdGlvbihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IFBy
b3BlcnR5TmFtZSYgcHJvcGVydHlOYW1lLCBGdW5jdGlvbkV4ZWN1dGFibGUqIGZ1bmN0aW9uRXhl
Y3V0YWJsZSwgdW5zaWduZWQgYXR0cmlidXRlcykKIHsKICAgICBTdHJpbmdJbXBsKiBuYW1lID0g
cHJvcGVydHlOYW1lLnB1YmxpY05hbWUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U09iamVjdC5oCmluZGV4IDYyMjBlYzdhMWJhOGU4YTc0OWRiNGIwNmNkNDI5M2E4ODVhZjdmOTIu
LmViZTQ4NWU4ZGYzNmRiNWNhZjM3NzA0YjhlZWRkNGE3NmNiOWM0NDMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaApAQCAtNDcsNiArNDcsOSBAQAogI2luY2x1ZGUg
PHd0Zi9TdGRMaWJFeHRyYXMuaD4KIAogbmFtZXNwYWNlIEpTQyB7CituYW1lc3BhY2UgRE9NSklU
IHsKK2NsYXNzIFNpZ25hdHVyZTsKK30KIAogaW5saW5lIEpTQ2VsbCogZ2V0SlNGdW5jdGlvbihK
U1ZhbHVlIHZhbHVlKQogewpAQCAtNzAwLDYgKzcwMyw3IEBAIGNsYXNzIEpTT2JqZWN0IDogcHVi
bGljIEpTQ2VsbCB7CiAKICAgICBKU19FWFBPUlRfUFJJVkFURSBib29sIHB1dERpcmVjdE5hdGl2
ZUludHJpbnNpY0dldHRlcihWTSYsIEpTR2xvYmFsT2JqZWN0KiwgSWRlbnRpZmllciwgTmF0aXZl
RnVuY3Rpb24sIEludHJpbnNpYywgdW5zaWduZWQgYXR0cmlidXRlcyk7CiAgICAgSlNfRVhQT1JU
X1BSSVZBVEUgYm9vbCBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbihWTSYsIEpTR2xvYmFsT2JqZWN0
KiwgY29uc3QgUHJvcGVydHlOYW1lJiwgdW5zaWduZWQgZnVuY3Rpb25MZW5ndGgsIE5hdGl2ZUZ1
bmN0aW9uLCBJbnRyaW5zaWMsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpOworICAgIEpTX0VYUE9SVF9Q
UklWQVRFIGJvb2wgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb24oVk0mLCBKU0dsb2JhbE9iamVjdCos
IGNvbnN0IFByb3BlcnR5TmFtZSYsIHVuc2lnbmVkIGZ1bmN0aW9uTGVuZ3RoLCBOYXRpdmVGdW5j
dGlvbiwgSW50cmluc2ljLCBjb25zdCBET01KSVQ6OlNpZ25hdHVyZSosIHVuc2lnbmVkIGF0dHJp
YnV0ZXMpOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIEpTRnVuY3Rpb24qIHB1dERpcmVjdEJ1aWx0
aW5GdW5jdGlvbihWTSYsIEpTR2xvYmFsT2JqZWN0KiwgY29uc3QgUHJvcGVydHlOYW1lJiwgRnVu
Y3Rpb25FeGVjdXRhYmxlKiwgdW5zaWduZWQgYXR0cmlidXRlcyk7CiAgICAgSlNGdW5jdGlvbiog
cHV0RGlyZWN0QnVpbHRpbkZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24oVk0mLCBKU0dsb2JhbE9i
amVjdCosIGNvbnN0IFByb3BlcnR5TmFtZSYsIEZ1bmN0aW9uRXhlY3V0YWJsZSosIHVuc2lnbmVk
IGF0dHJpYnV0ZXMpOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgcHV0RGlyZWN0TmF0aXZl
RnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbihWTSYsIEpTR2xvYmFsT2JqZWN0KiwgY29uc3QgUHJv
cGVydHlOYW1lJiwgdW5zaWduZWQgZnVuY3Rpb25MZW5ndGgsIE5hdGl2ZUZ1bmN0aW9uLCBJbnRy
aW5zaWMsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvTG9va3VwLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9M
b29rdXAuaAppbmRleCBlMmQxNzk1Mzg4ZTc2NTJiZDhmMWI0YjZkYWNiYjJjYmNlOWNkNDRmLi5k
NzA3Njg2ZmI1NjkzZTdmNTJmZTZkMWEyZWM0NGJkMDAyM2JlZjExIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Mb29rdXAuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Mb29rdXAuaApAQCAtMjQsNiArMjQsNyBAQAogI2luY2x1ZGUgIkNhbGxG
cmFtZS5oIgogI2luY2x1ZGUgIkN1c3RvbUdldHRlclNldHRlci5oIgogI2luY2x1ZGUgIkRPTUpJ
VEdldHRlclNldHRlci5oIgorI2luY2x1ZGUgIkRPTUpJVFNpZ25hdHVyZS5oIgogI2luY2x1ZGUg
IklkZW50aWZpZXIuaCIKICNpbmNsdWRlICJJZGVudGlmaWVySW5saW5lcy5oIgogI2luY2x1ZGUg
IkludHJpbnNpYy5oIgpAQCAtNzUsMTIgKzc2LDE5IEBAIHN0cnVjdCBIYXNoVGFibGVWYWx1ZSB7
CiAgICAgSW50cmluc2ljIGludHJpbnNpYygpIGNvbnN0IHsgQVNTRVJUKG1fYXR0cmlidXRlcyAm
IEZ1bmN0aW9uKTsgcmV0dXJuIG1faW50cmluc2ljOyB9CiAgICAgQnVpbHRpbkdlbmVyYXRvciBi
dWlsdGluR2VuZXJhdG9yKCkgY29uc3QgeyBBU1NFUlQobV9hdHRyaWJ1dGVzICYgQnVpbHRpbik7
IHJldHVybiByZWludGVycHJldF9jYXN0PEJ1aWx0aW5HZW5lcmF0b3I+KG1fdmFsdWVzLnZhbHVl
MSk7IH0KICAgICBOYXRpdmVGdW5jdGlvbiBmdW5jdGlvbigpIGNvbnN0IHsgQVNTRVJUKG1fYXR0
cmlidXRlcyAmIEZ1bmN0aW9uKTsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8TmF0aXZlRnVuY3Rp
b24+KG1fdmFsdWVzLnZhbHVlMSk7IH0KLSAgICB1bnNpZ25lZCBjaGFyIGZ1bmN0aW9uTGVuZ3Ro
KCkgY29uc3QgeyBBU1NFUlQobV9hdHRyaWJ1dGVzICYgRnVuY3Rpb24pOyByZXR1cm4gc3RhdGlj
X2Nhc3Q8dW5zaWduZWQgY2hhcj4obV92YWx1ZXMudmFsdWUyKTsgfQorICAgIHVuc2lnbmVkIGNo
YXIgZnVuY3Rpb25MZW5ndGgoKSBjb25zdAorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fYXR0cmli
dXRlcyAmIEZ1bmN0aW9uKTsKKyAgICAgICAgaWYgKG1fYXR0cmlidXRlcyAmIERPTUpJVEZ1bmN0
aW9uKQorICAgICAgICAgICAgcmV0dXJuIHNpZ25hdHVyZSgpLT5hcmd1bWVudENvdW50OworICAg
ICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4obV92YWx1ZXMudmFsdWUyKTsK
KyAgICB9CiAKICAgICBHZXRGdW5jdGlvbiBwcm9wZXJ0eUdldHRlcigpIGNvbnN0IHsgQVNTRVJU
KCEobV9hdHRyaWJ1dGVzICYgQnVpbHRpbk9yRnVuY3Rpb25PckFjY2Vzc29yT3JMYXp5UHJvcGVy
dHlPckNvbnN0YW50KSk7IHJldHVybiByZWludGVycHJldF9jYXN0PEdldEZ1bmN0aW9uPihtX3Zh
bHVlcy52YWx1ZTEpOyB9CiAgICAgUHV0RnVuY3Rpb24gcHJvcGVydHlQdXR0ZXIoKSBjb25zdCB7
IEFTU0VSVCghKG1fYXR0cmlidXRlcyAmIEJ1aWx0aW5PckZ1bmN0aW9uT3JBY2Nlc3Nvck9yTGF6
eVByb3BlcnR5T3JDb25zdGFudCkpOyByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxQdXRGdW5jdGlv
bj4obV92YWx1ZXMudmFsdWUyKTsgfQogCiAgICAgRE9NSklUOjpHZXR0ZXJTZXR0ZXIqIGRvbUpJ
VCgpIGNvbnN0IHsgQVNTRVJUKG1fYXR0cmlidXRlcyAmIERPTUpJVEF0dHJpYnV0ZSk7IHJldHVy
biByZWludGVycHJldF9jYXN0PERPTUpJVEdldHRlclNldHRlckdlbmVyYXRvcj4obV92YWx1ZXMu
dmFsdWUxKSgpOyB9CisgICAgY29uc3QgRE9NSklUOjpTaWduYXR1cmUqIHNpZ25hdHVyZSgpIGNv
bnN0IHsgQVNTRVJUKG1fYXR0cmlidXRlcyAmIERPTUpJVEZ1bmN0aW9uKTsgcmV0dXJuIHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgRE9NSklUOjpTaWduYXR1cmUqPihtX3ZhbHVlcy52YWx1ZTIpOyB9
CiAKICAgICBOYXRpdmVGdW5jdGlvbiBhY2Nlc3NvckdldHRlcigpIGNvbnN0IHsgQVNTRVJUKG1f
YXR0cmlidXRlcyAmIEFjY2Vzc29yKTsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8TmF0aXZlRnVu
Y3Rpb24+KG1fdmFsdWVzLnZhbHVlMSk7IH0KICAgICBOYXRpdmVGdW5jdGlvbiBhY2Nlc3NvclNl
dHRlcigpIGNvbnN0IHsgQVNTRVJUKG1fYXR0cmlidXRlcyAmIEFjY2Vzc29yKTsgcmV0dXJuIHJl
aW50ZXJwcmV0X2Nhc3Q8TmF0aXZlRnVuY3Rpb24+KG1fdmFsdWVzLnZhbHVlMik7IH0KQEAgLTMx
Myw2ICszMjEsMTIgQEAgaW5saW5lIHZvaWQgcmVpZnlTdGF0aWNQcm9wZXJ0eShWTSYgdm0sIGNv
bnN0IFByb3BlcnR5TmFtZSYgcHJvcGVydHlOYW1lLCBjb25zdAogICAgIH0KIAogICAgIGlmICh2
YWx1ZS5hdHRyaWJ1dGVzKCkgJiBGdW5jdGlvbikgeworICAgICAgICBpZiAodmFsdWUuYXR0cmli
dXRlcygpICYgRE9NSklURnVuY3Rpb24pIHsKKyAgICAgICAgICAgIHRoaXNPYmoucHV0RGlyZWN0
TmF0aXZlRnVuY3Rpb24oCisgICAgICAgICAgICAgICAgdm0sIHRoaXNPYmouZ2xvYmFsT2JqZWN0
KCksIHByb3BlcnR5TmFtZSwgdmFsdWUuZnVuY3Rpb25MZW5ndGgoKSwKKyAgICAgICAgICAgICAg
ICB2YWx1ZS5mdW5jdGlvbigpLCB2YWx1ZS5pbnRyaW5zaWMoKSwgdmFsdWUuc2lnbmF0dXJlKCks
IGF0dHJpYnV0ZXNGb3JTdHJ1Y3R1cmUodmFsdWUuYXR0cmlidXRlcygpKSk7CisgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgIH0KICAgICAgICAgdGhpc09iai5wdXREaXJlY3ROYXRpdmVGdW5j
dGlvbigKICAgICAgICAgICAgIHZtLCB0aGlzT2JqLmdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5h
bWUsIHZhbHVlLmZ1bmN0aW9uTGVuZ3RoKCksCiAgICAgICAgICAgICB2YWx1ZS5mdW5jdGlvbigp
LCB2YWx1ZS5pbnRyaW5zaWMoKSwgYXR0cmlidXRlc0ZvclN0cnVjdHVyZSh2YWx1ZS5hdHRyaWJ1
dGVzKCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05hdGl2
ZUV4ZWN1dGFibGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZlRXhl
Y3V0YWJsZS5jcHAKaW5kZXggMWMyYmVjNThiN2RiODk4YjgxMThiMjk3MTBiMmQ3NDI2OTNiYjIx
ZC4uYjdkYWQyYTQ2MmRkZGZjMjI3NjJmZDVjZDdjZjZhNDYxY2RkMThmNiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZlRXhlY3V0YWJsZS5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZlRXhlY3V0YWJsZS5jcHAKQEAgLTQw
LDEwICs0MCwxMCBAQCBuYW1lc3BhY2UgSlNDIHsKIAogY29uc3QgQ2xhc3NJbmZvIE5hdGl2ZUV4
ZWN1dGFibGU6OnNfaW5mbyA9IHsgIk5hdGl2ZUV4ZWN1dGFibGUiLCAmRXhlY3V0YWJsZUJhc2U6
OnNfaW5mbywgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShOYXRpdmVFeGVjdXRhYmxlKSB9OwogCi1O
YXRpdmVFeGVjdXRhYmxlKiBOYXRpdmVFeGVjdXRhYmxlOjpjcmVhdGUoVk0mIHZtLCBQYXNzUmVm
UHRyPEpJVENvZGU+IGNhbGxUaHVuaywgTmF0aXZlRnVuY3Rpb24gZnVuY3Rpb24sIFBhc3NSZWZQ
dHI8SklUQ29kZT4gY29uc3RydWN0VGh1bmssIE5hdGl2ZUZ1bmN0aW9uIGNvbnN0cnVjdG9yLCBJ
bnRyaW5zaWMgaW50cmluc2ljLCBjb25zdCBTdHJpbmcmIG5hbWUpCitOYXRpdmVFeGVjdXRhYmxl
KiBOYXRpdmVFeGVjdXRhYmxlOjpjcmVhdGUoVk0mIHZtLCBQYXNzUmVmUHRyPEpJVENvZGU+IGNh
bGxUaHVuaywgTmF0aXZlRnVuY3Rpb24gZnVuY3Rpb24sIFBhc3NSZWZQdHI8SklUQ29kZT4gY29u
c3RydWN0VGh1bmssIE5hdGl2ZUZ1bmN0aW9uIGNvbnN0cnVjdG9yLCBJbnRyaW5zaWMgaW50cmlu
c2ljLCBjb25zdCBET01KSVQ6OlNpZ25hdHVyZSogc2lnbmF0dXJlLCBjb25zdCBTdHJpbmcmIG5h
bWUpCiB7CiAgICAgTmF0aXZlRXhlY3V0YWJsZSogZXhlY3V0YWJsZTsKLSAgICBleGVjdXRhYmxl
ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8TmF0aXZlRXhlY3V0YWJsZT4odm0uaGVhcCkp
IE5hdGl2ZUV4ZWN1dGFibGUodm0sIGZ1bmN0aW9uLCBjb25zdHJ1Y3RvciwgaW50cmluc2ljKTsK
KyAgICBleGVjdXRhYmxlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8TmF0aXZlRXhlY3V0
YWJsZT4odm0uaGVhcCkpIE5hdGl2ZUV4ZWN1dGFibGUodm0sIGZ1bmN0aW9uLCBjb25zdHJ1Y3Rv
ciwgaW50cmluc2ljLCBzaWduYXR1cmUpOwogICAgIGV4ZWN1dGFibGUtPmZpbmlzaENyZWF0aW9u
KHZtLCBjYWxsVGh1bmssIGNvbnN0cnVjdFRodW5rLCBuYW1lKTsKICAgICByZXR1cm4gZXhlY3V0
YWJsZTsKIH0KQEAgLTY4LDEwICs2OCwxMSBAQCB2b2lkIE5hdGl2ZUV4ZWN1dGFibGU6OmZpbmlz
aENyZWF0aW9uKFZNJiB2bSwgUGFzc1JlZlB0cjxKSVRDb2RlPiBjYWxsVGh1bmssIFBhcwogICAg
IG1fbmFtZSA9IG5hbWU7CiB9CiAKLU5hdGl2ZUV4ZWN1dGFibGU6Ok5hdGl2ZUV4ZWN1dGFibGUo
Vk0mIHZtLCBOYXRpdmVGdW5jdGlvbiBmdW5jdGlvbiwgTmF0aXZlRnVuY3Rpb24gY29uc3RydWN0
b3IsIEludHJpbnNpYyBpbnRyaW5zaWMpCitOYXRpdmVFeGVjdXRhYmxlOjpOYXRpdmVFeGVjdXRh
YmxlKFZNJiB2bSwgTmF0aXZlRnVuY3Rpb24gZnVuY3Rpb24sIE5hdGl2ZUZ1bmN0aW9uIGNvbnN0
cnVjdG9yLCBJbnRyaW5zaWMgaW50cmluc2ljLCBjb25zdCBET01KSVQ6OlNpZ25hdHVyZSogc2ln
bmF0dXJlKQogICAgIDogRXhlY3V0YWJsZUJhc2Uodm0sIHZtLm5hdGl2ZUV4ZWN1dGFibGVTdHJ1
Y3R1cmUuZ2V0KCksIE5VTV9QQVJBTUVURVJTX0lTX0hPU1QsIGludHJpbnNpYykKICAgICAsIG1f
ZnVuY3Rpb24oZnVuY3Rpb24pCiAgICAgLCBtX2NvbnN0cnVjdG9yKGNvbnN0cnVjdG9yKQorICAg
ICwgbV9zaWduYXR1cmUoc2lnbmF0dXJlKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9OYXRpdmVFeGVjdXRhYmxlLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9OYXRpdmVFeGVjdXRhYmxlLmgKaW5kZXggNWJmMmUxMDZkYjMwYTViOGM5
NzhjODk2YTZhZDk4Y2EyYzc1NzQxNC4uZTRkM2UwNDk0NTdiNDVkMDI0NTdlOGRkYTU0NDkwYjM3
MTRhY2NlYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZl
RXhlY3V0YWJsZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05hdGl2ZUV4
ZWN1dGFibGUuaApAQCAtMjgsNiArMjgsOSBAQAogI2luY2x1ZGUgIkV4ZWN1dGFibGVCYXNlLmgi
CiAKIG5hbWVzcGFjZSBKU0MgeworbmFtZXNwYWNlIERPTUpJVCB7CitjbGFzcyBTaWduYXR1cmU7
Cit9CiAKIGNsYXNzIE5hdGl2ZUV4ZWN1dGFibGUgZmluYWwgOiBwdWJsaWMgRXhlY3V0YWJsZUJh
c2UgewogICAgIGZyaWVuZCBjbGFzcyBKSVQ7CkBAIC0zNiw3ICszOSw3IEBAIGNsYXNzIE5hdGl2
ZUV4ZWN1dGFibGUgZmluYWwgOiBwdWJsaWMgRXhlY3V0YWJsZUJhc2UgewogICAgIHR5cGVkZWYg
RXhlY3V0YWJsZUJhc2UgQmFzZTsKICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJl
RmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IFN0cnVjdHVyZUlzSW1tb3J0YWw7CiAKLSAg
ICBzdGF0aWMgTmF0aXZlRXhlY3V0YWJsZSogY3JlYXRlKFZNJiB2bSwgUGFzc1JlZlB0cjxKSVRD
b2RlPiBjYWxsVGh1bmssIE5hdGl2ZUZ1bmN0aW9uIGZ1bmN0aW9uLCBQYXNzUmVmUHRyPEpJVENv
ZGU+IGNvbnN0cnVjdFRodW5rLCBOYXRpdmVGdW5jdGlvbiBjb25zdHJ1Y3RvciwgSW50cmluc2lj
IGludHJpbnNpYywgY29uc3QgU3RyaW5nJiBuYW1lKTsKKyAgICBzdGF0aWMgTmF0aXZlRXhlY3V0
YWJsZSogY3JlYXRlKFZNJiwgUGFzc1JlZlB0cjxKSVRDb2RlPiBjYWxsVGh1bmssIE5hdGl2ZUZ1
bmN0aW9uIGZ1bmN0aW9uLCBQYXNzUmVmUHRyPEpJVENvZGU+IGNvbnN0cnVjdFRodW5rLCBOYXRp
dmVGdW5jdGlvbiBjb25zdHJ1Y3RvciwgSW50cmluc2ljLCBjb25zdCBET01KSVQ6OlNpZ25hdHVy
ZSosIGNvbnN0IFN0cmluZyYgbmFtZSk7CiAKICAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQ2Vs
bCopOwogCkBAIC02Niw2ICs2OSwxNCBAQCBjbGFzcyBOYXRpdmVFeGVjdXRhYmxlIGZpbmFsIDog
cHVibGljIEV4ZWN1dGFibGVCYXNlIHsKICAgICBERUNMQVJFX0lORk87CiAKICAgICBjb25zdCBT
dHJpbmcmIG5hbWUoKSBjb25zdCB7IHJldHVybiBtX25hbWU7IH0KKyAgICBjb25zdCBET01KSVQ6
OlNpZ25hdHVyZSogc2lnbmF0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9zaWduYXR1cmU7IH0KKwor
ICAgIGNvbnN0IERPTUpJVDo6U2lnbmF0dXJlKiBzaWduYXR1cmVGb3IoQ29kZVNwZWNpYWxpemF0
aW9uS2luZCBraW5kKSBjb25zdAorICAgIHsKKyAgICAgICAgaWYgKGlzQ2FsbChraW5kKSkKKyAg
ICAgICAgICAgIHJldHVybiBzaWduYXR1cmUoKTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7Cisg
ICAgfQogCiBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYsIFBhc3NSZWZQ
dHI8SklUQ29kZT4gY2FsbFRodW5rLCBQYXNzUmVmUHRyPEpJVENvZGU+IGNvbnN0cnVjdFRodW5r
LCBjb25zdCBTdHJpbmcmIG5hbWUpOwpAQCAtNzMsMTAgKzg0LDExIEBAIGNsYXNzIE5hdGl2ZUV4
ZWN1dGFibGUgZmluYWwgOiBwdWJsaWMgRXhlY3V0YWJsZUJhc2UgewogcHJpdmF0ZToKICAgICBm
cmllbmQgY2xhc3MgRXhlY3V0YWJsZUJhc2U7CiAKLSAgICBOYXRpdmVFeGVjdXRhYmxlKFZNJiwg
TmF0aXZlRnVuY3Rpb24gZnVuY3Rpb24sIE5hdGl2ZUZ1bmN0aW9uIGNvbnN0cnVjdG9yLCBJbnRy
aW5zaWMpOworICAgIE5hdGl2ZUV4ZWN1dGFibGUoVk0mLCBOYXRpdmVGdW5jdGlvbiBmdW5jdGlv
biwgTmF0aXZlRnVuY3Rpb24gY29uc3RydWN0b3IsIEludHJpbnNpYywgY29uc3QgRE9NSklUOjpT
aWduYXR1cmUqKTsKIAogICAgIE5hdGl2ZUZ1bmN0aW9uIG1fZnVuY3Rpb247CiAgICAgTmF0aXZl
RnVuY3Rpb24gbV9jb25zdHJ1Y3RvcjsKKyAgICBjb25zdCBET01KSVQ6OlNpZ25hdHVyZSogbV9z
aWduYXR1cmU7CiAKICAgICBTdHJpbmcgbV9uYW1lOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5U2xvdC5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvUHJvcGVydHlTbG90LmgKaW5kZXggOWRlMTUxYTU2YWEyNzU2Y2ZkMGM2MDAz
NjY4MjY2YjE5Zjk5MzJkZC4uMzg3ZTMxYjQwZTVhZWJmMmYzNWY2Y2EyNzJlMzgzYzA1ZDNmNDUy
ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlTbG90
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlTbG90LmgKQEAg
LTUxLDYgKzUxLDcgQEAgZW51bSBBdHRyaWJ1dGUgewogICAgIENsYXNzU3RydWN0dXJlICAgID0g
MSA8PCAxMiwgLy8gcHJvcGVydHkgaXMgYSBsYXp5IGNsYXNzIHN0cnVjdHVyZSAtIG9ubHkgdXNl
ZCBieSBzdGF0aWMgaGFzaHRhYmxlcwogICAgIFByb3BlcnR5Q2FsbGJhY2sgID0gMSA8PCAxMywg
Ly8gcHJvcGVydHkgdGhhdCBpcyBhIGxhenkgcHJvcGVydHkgY2FsbGJhY2sgLSBvbmx5IHVzZWQg
Ynkgc3RhdGljIGhhc2h0YWJsZXMKICAgICBET01KSVRBdHRyaWJ1dGUgICA9IDEgPDwgMTQsIC8v
IHByb3BlcnR5IGlzIGEgRE9NIEpJVCBhdHRyaWJ1dGUgLSBvbmx5IHVzZWQgYnkgc3RhdGljIGhh
c2h0YWJsZXMKKyAgICBET01KSVRGdW5jdGlvbiAgICA9IDEgPDwgMTUsIC8vIHByb3BlcnR5IGlz
IGEgRE9NIEpJVCBmdW5jdGlvbiAtIG9ubHkgdXNlZCBieSBzdGF0aWMgaGFzaHRhYmxlcwogICAg
IEJ1aWx0aW5PckZ1bmN0aW9uID0gQnVpbHRpbiB8IEZ1bmN0aW9uLCAvLyBoZWxwZXIgb25seSB1
c2VkIGJ5IHN0YXRpYyBoYXNodGFibGVzCiAgICAgQnVpbHRpbk9yRnVuY3Rpb25PckxhenlQcm9w
ZXJ0eSA9IEJ1aWx0aW4gfCBGdW5jdGlvbiB8IENlbGxQcm9wZXJ0eSB8IENsYXNzU3RydWN0dXJl
IHwgUHJvcGVydHlDYWxsYmFjaywgLy8gaGVscGVyIG9ubHkgdXNlZCBieSBzdGF0aWMgaGFzaHRh
YmxlcwogICAgIEJ1aWx0aW5PckZ1bmN0aW9uT3JBY2Nlc3Nvck9yTGF6eVByb3BlcnR5ID0gQnVp
bHRpbiB8IEZ1bmN0aW9uIHwgQWNjZXNzb3IgfCBDZWxsUHJvcGVydHkgfCBDbGFzc1N0cnVjdHVy
ZSB8IFByb3BlcnR5Q2FsbGJhY2ssIC8vIGhlbHBlciBvbmx5IHVzZWQgYnkgc3RhdGljIGhhc2h0
YWJsZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAppbmRleCA4MTIzOWM1YjkyNGI0
ZWNjOGU2ZDcwYmM4MDc3ZTgzOGFmMWUxZDYxLi5mOTI3MzQ3MzRhY2VlYzQxYTQ1ODM2MDk1NGIw
N2Q4ZmFjMTI1YmJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9W
TS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCkBAIC01MTEs
MTcgKzUxMSwxNyBAQCBzdGF0aWMgVGh1bmtHZW5lcmF0b3IgdGh1bmtHZW5lcmF0b3JGb3JJbnRy
aW5zaWMoSW50cmluc2ljIGludHJpbnNpYykKIAogTmF0aXZlRXhlY3V0YWJsZSogVk06OmdldEhv
c3RGdW5jdGlvbihOYXRpdmVGdW5jdGlvbiBmdW5jdGlvbiwgTmF0aXZlRnVuY3Rpb24gY29uc3Ry
dWN0b3IsIGNvbnN0IFN0cmluZyYgbmFtZSkKIHsKLSAgICByZXR1cm4gZ2V0SG9zdEZ1bmN0aW9u
KGZ1bmN0aW9uLCBOb0ludHJpbnNpYywgY29uc3RydWN0b3IsIG5hbWUpOworICAgIHJldHVybiBn
ZXRIb3N0RnVuY3Rpb24oZnVuY3Rpb24sIE5vSW50cmluc2ljLCBjb25zdHJ1Y3RvciwgbnVsbHB0
ciwgbmFtZSk7CiB9CiAKLU5hdGl2ZUV4ZWN1dGFibGUqIFZNOjpnZXRIb3N0RnVuY3Rpb24oTmF0
aXZlRnVuY3Rpb24gZnVuY3Rpb24sIEludHJpbnNpYyBpbnRyaW5zaWMsIE5hdGl2ZUZ1bmN0aW9u
IGNvbnN0cnVjdG9yLCBjb25zdCBTdHJpbmcmIG5hbWUpCitOYXRpdmVFeGVjdXRhYmxlKiBWTTo6
Z2V0SG9zdEZ1bmN0aW9uKE5hdGl2ZUZ1bmN0aW9uIGZ1bmN0aW9uLCBJbnRyaW5zaWMgaW50cmlu
c2ljLCBOYXRpdmVGdW5jdGlvbiBjb25zdHJ1Y3RvciwgY29uc3QgRE9NSklUOjpTaWduYXR1cmUq
IHNpZ25hdHVyZSwgY29uc3QgU3RyaW5nJiBuYW1lKQogewogI2lmIEVOQUJMRShKSVQpCiAgICAg
aWYgKGNhblVzZUpJVCgpKSB7CiAgICAgICAgIHJldHVybiBqaXRTdHVicy0+aG9zdEZ1bmN0aW9u
U3R1YigKICAgICAgICAgICAgIHRoaXMsIGZ1bmN0aW9uLCBjb25zdHJ1Y3RvciwKICAgICAgICAg
ICAgIGludHJpbnNpYyAhPSBOb0ludHJpbnNpYyA/IHRodW5rR2VuZXJhdG9yRm9ySW50cmluc2lj
KGludHJpbnNpYykgOiAwLAotICAgICAgICAgICAgaW50cmluc2ljLCBuYW1lKTsKKyAgICAgICAg
ICAgIGludHJpbnNpYywgc2lnbmF0dXJlLCBuYW1lKTsKICAgICB9CiAjZWxzZSAvLyBFTkFCTEUo
SklUKQogICAgIFVOVVNFRF9QQVJBTShpbnRyaW5zaWMpOwpAQCAtNTI5LDcgKzUyOSw3IEBAIE5h
dGl2ZUV4ZWN1dGFibGUqIFZNOjpnZXRIb3N0RnVuY3Rpb24oTmF0aXZlRnVuY3Rpb24gZnVuY3Rp
b24sIEludHJpbnNpYyBpbnRyaW5zCiAgICAgcmV0dXJuIE5hdGl2ZUV4ZWN1dGFibGU6OmNyZWF0
ZSgqdGhpcywKICAgICAgICAgYWRvcHRSZWYobmV3IE5hdGl2ZUpJVENvZGUoTWFjcm9Bc3NlbWJs
ZXJDb2RlUmVmOjpjcmVhdGVMTEludENvZGVSZWYobGxpbnRfbmF0aXZlX2NhbGxfdHJhbXBvbGlu
ZSksIEpJVENvZGU6Okhvc3RDYWxsVGh1bmspKSwgZnVuY3Rpb24sCiAgICAgICAgIGFkb3B0UmVm
KG5ldyBOYXRpdmVKSVRDb2RlKE1hY3JvQXNzZW1ibGVyQ29kZVJlZjo6Y3JlYXRlTExJbnRDb2Rl
UmVmKGxsaW50X25hdGl2ZV9jb25zdHJ1Y3RfdHJhbXBvbGluZSksIEpJVENvZGU6Okhvc3RDYWxs
VGh1bmspKSwgY29uc3RydWN0b3IsCi0gICAgICAgIE5vSW50cmluc2ljLCBuYW1lKTsKKyAgICAg
ICAgTm9JbnRyaW5zaWMsIHNpZ25hdHVyZSwgbmFtZSk7CiB9CiAKIFZNOjpDbGllbnREYXRhOjp+
Q2xpZW50RGF0YSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9W
TS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAppbmRleCA0ZmQ3ZWM0MGYw
M2VlZGViMjliZDQ5NjdkOWNkYzQzMDI0Y2ZhNDEwLi4xNWEwOGMyYTMzYmU5NzJiNGE5YTMyZGZj
MzUwZDZlMzhjYzg0MmVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9WTS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKQEAgLTQyOSw3
ICs0MjksNyBAQCBjbGFzcyBWTSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxWTT4gewog
ICAgIHN0ZDo6dW5pcXVlX3B0cjxGVEw6OlRodW5rcz4gZnRsVGh1bmtzOwogI2VuZGlmCiAgICAg
TmF0aXZlRXhlY3V0YWJsZSogZ2V0SG9zdEZ1bmN0aW9uKE5hdGl2ZUZ1bmN0aW9uLCBOYXRpdmVG
dW5jdGlvbiBjb25zdHJ1Y3RvciwgY29uc3QgU3RyaW5nJiBuYW1lKTsKLSAgICBOYXRpdmVFeGVj
dXRhYmxlKiBnZXRIb3N0RnVuY3Rpb24oTmF0aXZlRnVuY3Rpb24sIEludHJpbnNpYyBpbnRyaW5z
aWMsIE5hdGl2ZUZ1bmN0aW9uIGNvbnN0cnVjdG9yLCBjb25zdCBTdHJpbmcmIG5hbWUpOworICAg
IE5hdGl2ZUV4ZWN1dGFibGUqIGdldEhvc3RGdW5jdGlvbihOYXRpdmVGdW5jdGlvbiwgSW50cmlu
c2ljLCBOYXRpdmVGdW5jdGlvbiBjb25zdHJ1Y3RvciwgY29uc3QgRE9NSklUOjpTaWduYXR1cmUq
LCBjb25zdCBTdHJpbmcmIG5hbWUpOwogCiAgICAgc3RhdGljIHB0cmRpZmZfdCBleGNlcHRpb25P
ZmZzZXQoKQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0
IGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggNWEwOTc0ZDZiZTQ4ZjA3NDVh
ZGE2MzlmZGFiYTM0ZDRiM2RiNjVmNC4uYjdlZjRiYzdlZTUxMDA3N2Y2NDEyZTIwN2Q3OTI5ZjRi
ZDg4MzAzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIv
U291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTE1NDYsNyArMTU0Niw2IEBAIHNldChX
ZWJDb3JlX1NPVVJDRVMKIAogICAgIGRvbS9kZWZhdWx0L1BsYXRmb3JtTWVzc2FnZVBvcnRDaGFu
bmVsLmNwcAogCi0gICAgZG9taml0L0RPTUpJVEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuY3BwCiAg
ICAgZG9taml0L0RPTUpJVEhlbHBlcnMuY3BwCiAgICAgZG9taml0L0pTRG9jdW1lbnRET01KSVQu
Y3BwCiAgICAgZG9taml0L0pTTm9kZURPTUpJVC5jcHAKQEAgLTM1MTksNiArMzUxOCwxNSBAQCBN
QUtFX0hBU0hfVE9PTFMoJHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0vQ29sb3JEYXRhKQogbGlzdChB
UFBFTkQgV2ViQ29yZV9ERVJJVkVEX1NPVVJDRVMgJHtERVJJVkVEX1NPVVJDRVNfV0VCQ09SRV9E
SVJ9L0NvbG9yRGF0YS5jcHApCiAKIAorIyBHZW5lcmF0ZSBET01KSVRBYnN0cmFjdEhlYXBSZXBv
c2l0b3J5LmgKK2FkZF9jdXN0b21fY29tbWFuZCgKKyAgICBPVVRQVVQgJHtERVJJVkVEX1NPVVJD
RVNfV0VCQ09SRV9ESVJ9L0RPTUpJVEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaAorICAgIE1BSU5f
REVQRU5ERU5DWSBkb21qaXQvRE9NSklUQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS55YW1sCisgICAg
REVQRU5EUyAke1dFQkNPUkVfRElSfS9kb21qaXQvZ2VuZXJhdGUtYWJzdHJhY3QtaGVhcC5yYgor
ICAgIENPTU1BTkQgJHtSVUJZX0VYRUNVVEFCTEV9ICR7V0VCQ09SRV9ESVJ9L2RvbWppdC9nZW5l
cmF0ZS1hYnN0cmFjdC1oZWFwLnJiICR7V0VCQ09SRV9ESVJ9L2RvbWppdC9ET01KSVRBYnN0cmFj
dEhlYXBSZXBvc2l0b3J5LnlhbWwgJHtERVJJVkVEX1NPVVJDRVNfV0VCQ09SRV9ESVJ9L0RPTUpJ
VEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaAorICAgIFZFUkJBVElNKQorbGlzdChBUFBFTkQgV2Vi
Q29yZV9ERVJJVkVEX1NPVVJDRVMgJHtERVJJVkVEX1NPVVJDRVNfV0VCQ09SRV9ESVJ9L0RPTUpJ
VEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaCkKKwogIyBHZW5lcmF0ZSBYTUxWaWV3ZXJDU1MuaAog
YWRkX2N1c3RvbV9jb21tYW5kKAogICAgIE9VVFBVVCAke0RFUklWRURfU09VUkNFU19XRUJDT1JF
X0RJUn0vWE1MVmlld2VyQ1NTLmggJHtERVJJVkVEX1NPVVJDRVNfV0VCQ09SRV9ESVJ9L1hNTFZp
ZXdlci5taW4uY3NzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5t
YWtlIGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQppbmRleCAwY2JjMWRmODE1
ODZmMTQ5OWVmNDFhMmNiYjYyMTg2MTQ1NTUwYjI3Li5hZGE1YWNiNDlmY2EyYzQwZjMwZDgwNjEy
YTE2ZTM5YTJkMTY2OWFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNl
cy5tYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKQEAgLTc0Niw2
ICs3NDYsNyBAQCBKU19CSU5ESU5HX0lETFMgPSBcCiAKIFBZVEhPTiA9IHB5dGhvbgogUEVSTCA9
IHBlcmwKK1JVQlkgPSBydWJ5CiAKIGlmZXEgKCQoT1MpLFdpbmRvd3NfTlQpCiAgICAgREVMRVRF
ID0gY21kIC8vQyBkZWwKQEAgLTg1Miw2ICs4NTMsNyBAQCBhbGwgOiBcCiAgICAgQ1NTVmFsdWVL
ZXl3b3Jkcy5jcHAgXAogICAgIENTU1ZhbHVlS2V5d29yZHMuaCBcCiAgICAgQ29sb3JEYXRhLmNw
cCBcCisgICAgRE9NSklUQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5oIFwKICAgICBFdmVudEludGVy
ZmFjZXMuaCBcCiAgICAgRXZlbnRUYXJnZXRJbnRlcmZhY2VzLmggXAogICAgIEV4Y2VwdGlvbkNv
ZGVEZXNjcmlwdGlvbi5jcHAgXApAQCAtOTQxLDYgKzk0MywxNSBAQCBTZWxlY3RvclBzZXVkb0Vs
ZW1lbnRUeXBlTWFwLmNwcCA6ICQoV2ViQ29yZSkvY3NzL21ha2VTZWxlY3RvclBzZXVkb0VsZW1l
bnRzTWFwLgogCiAjIC0tLS0tLS0tCiAKKyMgRE9NSklUIEFic3RyYWN0IEhlYXAKKworYWxsIDog
RE9NSklUQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5oCisKK0RPTUpJVEFic3RyYWN0SGVhcFJlcG9z
aXRvcnkuaCA6ICQoV2ViQ29yZSkvZG9taml0L2dlbmVyYXRlLWFic3RyYWN0LWhlYXAucmIgJChX
ZWJDb3JlKS9kb21qaXQvRE9NSklUQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS55YW1sCisJJChSVUJZ
KSAiJChXZWJDb3JlKS9kb21qaXQvZ2VuZXJhdGUtYWJzdHJhY3QtaGVhcC5yYiIgJChXZWJDb3Jl
KS9kb21qaXQvRE9NSklUQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS55YW1sIC4vRE9NSklUQWJzdHJh
Y3RIZWFwUmVwb3NpdG9yeS5oCisKKyMgLS0tLS0tLS0KKwogIyBYTUxWaWV3ZXIgQ1NTCiAKIGFs
bCA6IFhNTFZpZXdlckNTUy5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5n
SGVhZGVycy9ieXRlY29kZS9TcGVjdWxhdGVkVHlwZS5oIGIvU291cmNlL1dlYkNvcmUvRm9yd2Fy
ZGluZ0hlYWRlcnMvYnl0ZWNvZGUvU3BlY3VsYXRlZFR5cGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wOTQ2NmY0
ZjAwYjgwN2RmZWRhMGZjODIwODU0NmI3MTg0NGYwOTllCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvYnl0ZWNvZGUvU3BlY3VsYXRlZFR5cGUuaApA
QCAtMCwwICsxLDI5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgor
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2lmbmRlZiBXZWJDb3JlX0ZXRF9TcGVjdWxhdGVkVHlwZV9oCisjZGVmaW5lIFdlYkNv
cmVfRldEX1NwZWN1bGF0ZWRUeXBlX2gKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TcGVjdWxh
dGVkVHlwZS5oPgorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5n
SGVhZGVycy9kb21qaXQvRE9NSklUU2lnbmF0dXJlLmggYi9Tb3VyY2UvV2ViQ29yZS9Gb3J3YXJk
aW5nSGVhZGVycy9kb21qaXQvRE9NSklUU2lnbmF0dXJlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzIwMDI3ZjZl
MDhlMzgzMGUzNTFiMWM5Y2QzMmYyMDMxMjlkMmI1ZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL2RvbWppdC9ET01KSVRTaWduYXR1cmUuaApAQCAt
MCwwICsxLDI5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2lmbmRlZiBXZWJDb3JlX0ZXRF9ET01KSVRTaWduYXR1cmVfaAorI2RlZmluZSBXZWJDb3Jl
X0ZXRF9ET01KSVRTaWduYXR1cmVfaAorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0RPTUpJVFNp
Z25hdHVyZS5oPgorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKaW5kZXggNTFhZTE4MWEzNzE1MjAxMzExNmI5YjgwMWU4NTcxMjI0
ZWNmYWVkOC4uNmRkNTBkYmExNGZjNTEyNjA0NTc1ZDZlMjEyODk4ZWE5ZjI0ZDBiOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisr
KyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAt
NjIxMywxMiArNjIxMywxMyBAQAogCQlFMzE1MEVBNzFEQTcyMTkzMDAxOTQwMTIgLyogRE9NSklU
SGVscGVycy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RTMxNTBFQTUxREE3MjE4RDAwMTk0MDEyIC8qIERPTUpJVEhlbHBlcnMuaCAqLzsgfTsKIAkJRTMx
ODAzOUQxREM0MDA5OTAwOTkzMkMyIC8qIEpTRHluYW1pY0Rvd25jYXN0LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFM0E1ODcyRTFEQzNGNTI2MDBGNjA3
QTYgLyogSlNEeW5hbWljRG93bmNhc3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQlFMzU2NUI3QjFEQzJENkM5MDAyMTdEQkQgLyogSlNFdmVudEN1
c3RvbS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM0
RUU0OUYxREMyRDU3NTAwRUFBOUQzIC8qIEpTRXZlbnRDdXN0b20uaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQlFMzVDQTE0RDFEQkMzQTNGMDBGODM1
MTYgLyogRE9NSklUQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzVDQTE0QjFEQkMzQTNDMDBGODM1MTYgLyog
RE9NSklUQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5jcHAgKi87IH07Ci0JCUUzNUNBMTRFMURCQzNB
NDIwMEY4MzUxNiAvKiBET01KSVRBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzVDQTE0QzFEQkMzQTNDMDBGODM1
MTYgLyogRE9NSklUQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5oICovOyB9OworCQlFMzU4MDJCNjFE
Qzg0MzVEMDBBOTc3M0MgLyogRE9NSklUSURMVHlwZUZpbHRlci5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM1ODAyQjUxREM4NDM1ODAwQTk3NzNDIC8q
IERPTUpJVElETFR5cGVGaWx0ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQlFMzc3RkU0RDFEQURFMTY1MDBDREQwMjUgLyogTm9kZUNvbnN0YW50
cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTNEMDQ5
OTMxREFEQzA0NTAwNzE4RjNDIC8qIE5vZGVDb25zdGFudHMuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFMzg4Mzg5ODFCQUQxNDVGMDBENjJFRTMg
LyogU2NyaXB0TW9kdWxlTG9hZGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEUzODgzODk0MUJBRDE0NUYwMEQ2MkVFMyAvKiBTY3JpcHRNb2R1bGVM
b2FkZXIuY3BwICovOyB9OwogCQlFMzg4Mzg5OTFCQUQxNDVGMDBENjJFRTMgLyogU2NyaXB0TW9k
dWxlTG9hZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBFMzg4Mzg5NTFCQUQxNDVGMDBENjJFRTMgLyogU2NyaXB0TW9kdWxlTG9hZGVyLmggKi87IH07
CiAJCUUzOThGQzI0MURDMzJBMjAwMDNDNDY4NCAvKiBET01KSVRIZWxwZXJzLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzOThGQzIzMURDMzJBMUIw
MDNDNDY4NCAvKiBET01KSVRIZWxwZXJzLmNwcCAqLzsgfTsKKwkJRTNBNzc2NjcxREM4NUQyODAw
QjY5MEQ4IC8qIERPTUpJVElETENvbnZlcnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEUzQTc3NjY1MURDODVEMjIwMEI2OTBEOCAvKiBET01KSVRJRExD
b252ZXJ0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
KwkJRTNBNzc2NjgxREM4NUQyODAwQjY5MEQ4IC8qIERPTUpJVElETFR5cGUuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzQTc3NjY2MURDODVEMjIwMEI2
OTBEOCAvKiBET01KSVRJRExUeXBlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJRTNCMkYwRUIxRDdGNEM5RDAwQjBDOUQxIC8qIExvYWRhYmxlQ2xh
c3NpY1NjcmlwdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBFM0IyRjBFMzFEN0YzNUVDMDBCMEM5RDEgLyogTG9hZGFibGVDbGFzc2ljU2NyaXB0LmNw
cCAqLzsgfTsKIAkJRTNCMkYwRUMxRDdGNENBMTAwQjBDOUQxIC8qIExvYWRhYmxlU2NyaXB0LmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzQjJGMEU5
MUQ3RjNEM0MwMEIwQzlEMSAvKiBMb2FkYWJsZVNjcmlwdC5jcHAgKi87IH07CiAJCUUzQjJGMEVE
MUQ3RjRDQTMwMEIwQzlEMSAvKiBMb2FkYWJsZVNjcmlwdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTNCMkYwRTcxRDdGMzVFQzAwQjBDOUQxIC8qIExv
YWRhYmxlU2NyaXB0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKQEAgLTE0MDYxLDEzICsxNDA2MiwxNSBAQAogCQlFMUZGOEY2QTE4MERCNUJFMDAxMzI2
NzQgLyogQ3J5cHRvQWxnb3JpdGhtUmVnaXN0cnkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gQ3J5cHRvQWxnb3JpdGhtUmVnaXN0cnkuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlFMUZGOEY2QjE4MERCNUJFMDAxMzI2NzQgLyogQ3J5cHRvQWxnb3Jp
dGhtUmVnaXN0cnkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ3J5cHRvQWxn
b3JpdGhtUmVnaXN0cnkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTMxNTBFQTUx
REE3MjE4RDAwMTk0MDEyIC8qIERPTUpJVEhlbHBlcnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gRE9NSklUSGVscGVycy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQlFMzM0ODI1RTFEQzkzQUEwMDA5Qzk1NDQgLyogRE9NSklUQWJzdHJhY3RIZWFwUmVwb3NpdG9y
eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBET01KSVRBYnN0cmFjdEhlYXBS
ZXBvc2l0b3J5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzNEVFNDlGMURDMkQ1
NzUwMEVBQTlEMyAvKiBKU0V2ZW50Q3VzdG9tLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEpTRXZlbnRDdXN0b20uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRTM1
Q0ExNEIxREJDM0EzQzAwRjgzNTE2IC8qIERPTUpJVEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRE9NSklUQWJzdHJhY3RIZWFw
UmVwb3NpdG9yeS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUUzNUNBMTRDMURC
QzNBM0MwMEY4MzUxNiAvKiBET01KSVRBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERPTUpJVEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTM1ODAyQjUxREM4NDM1ODAwQTk3NzNDIC8q
IERPTUpJVElETFR5cGVGaWx0ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
RE9NSklUSURMVHlwZUZpbHRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzg4
Mzg5NDFCQUQxNDVGMDBENjJFRTMgLyogU2NyaXB0TW9kdWxlTG9hZGVyLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNjcmlwdE1vZHVsZUxvYWRlci5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzODgzODk1MUJBRDE0NUYwMEQ2MkVFMyAvKiBTY3Jp
cHRNb2R1bGVMb2FkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2NyaXB0
TW9kdWxlTG9hZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzOThGQzIzMURD
MzJBMUIwMDNDNDY4NCAvKiBET01KSVRIZWxwZXJzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IERPTUpJVEhlbHBlcnMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlFM0E1ODcyRTFEQzNGNTI2MDBGNjA3QTYgLyogSlNEeW5hbWljRG93bmNhc3QuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNEeW5hbWljRG93bmNhc3QuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTNBNzc2NjUxREM4NUQyMjAwQjY5MEQ4IC8qIERP
TUpJVElETENvbnZlcnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRE9NSklU
SURMQ29udmVydC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFM0E3NzY2NjFEQzg1
RDIyMDBCNjkwRDggLyogRE9NSklUSURMVHlwZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBET01KSVRJRExUeXBlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUz
QUZBOTY0MURBNkU5MDgwMDI4NjFCRCAvKiBKU05vZGVET01KSVQuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNOb2RlRE9NSklULmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJRTNCMkYwRTMxRDdGMzVFQzAwQjBDOUQxIC8qIExvYWRhYmxlQ2xhc3Np
Y1NjcmlwdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBMb2FkYWJs
ZUNsYXNzaWNTY3JpcHQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFM0IyRjBF
NDFEN0YzNUVDMDBCMEM5RDEgLyogTG9hZGFibGVDbGFzc2ljU2NyaXB0LmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IExvYWRhYmxlQ2xhc3NpY1NjcmlwdC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtMTcyNTgsNiArMTcyNjEsNyBAQAogCQkJCTY1NjU4MTQ3MDlE
MTMwNDMwMDBFNjFENyAvKiBDU1NWYWx1ZUtleXdvcmRzLmdwZXJmICovLAogCQkJCTY1NjU4MTQ4
MDlEMTMwNDMwMDBFNjFENyAvKiBDU1NWYWx1ZUtleXdvcmRzLmggKi8sCiAJCQkJOUIzQTg4NzEx
NDU2MzJGOTAwM0FFOEY1IC8qIERPTURPTVNldHRhYmxlVG9rZW5MaXN0LmggKi8sCisJCQkJRTMz
NDgyNUUxREM5M0FBMDAwOUM5NTQ0IC8qIERPTUpJVEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaCAq
LywKIAkJCQlFMUM2Q0ZDMjE3NDZEMjkzMDA3Qjg3QTEgLyogRE9NV2luZG93Q29uc3RydWN0b3Jz
LmlkbCAqLywKIAkJCQk5NzBCNzJBNTE0NTAwOEVCMDBGMDBBMzcgLyogRXZlbnRIZWFkZXJzLmgg
Ki8sCiAJCQkJOTcwQjcyODkxNDRGRkFDNjAwRjAwQTM3IC8qIEV2ZW50SW50ZXJmYWNlcy5oICov
LApAQCAtMjI4NzAsMTEgKzIyODc0LDEyIEBACiAJCUUzQUZBOTYzMURBNkU4QUYwMDI4NjFCRCAv
KiBkb21qaXQgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAotCQkJ
CUUzNUNBMTRCMURCQzNBM0MwMEY4MzUxNiAvKiBET01KSVRBYnN0cmFjdEhlYXBSZXBvc2l0b3J5
LmNwcCAqLywKLQkJCQlFMzVDQTE0QzFEQkMzQTNDMDBGODM1MTYgLyogRE9NSklUQWJzdHJhY3RI
ZWFwUmVwb3NpdG9yeS5oICovLAogCQkJCUUzQzk5QTA4MURDM0Q0MTcwMDc5NEFEMyAvKiBET01K
SVRDaGVja0RPTS5oICovLAogCQkJCUUzOThGQzIzMURDMzJBMUIwMDNDNDY4NCAvKiBET01KSVRI
ZWxwZXJzLmNwcCAqLywKIAkJCQlFMzE1MEVBNTFEQTcyMThEMDAxOTQwMTIgLyogRE9NSklUSGVs
cGVycy5oICovLAorCQkJCUUzQTc3NjY1MURDODVEMjIwMEI2OTBEOCAvKiBET01KSVRJRExDb252
ZXJ0LmggKi8sCisJCQkJRTNBNzc2NjYxREM4NUQyMjAwQjY5MEQ4IC8qIERPTUpJVElETFR5cGUu
aCAqLywKKwkJCQlFMzU4MDJCNTFEQzg0MzU4MDBBOTc3M0MgLyogRE9NSklUSURMVHlwZUZpbHRl
ci5oICovLAogCQkJCUUzQjdDMDYyMURDMzQxNUEwMDFGQjBCOCAvKiBKU0RvY3VtZW50RE9NSklU
LmNwcCAqLywKIAkJCQlFM0FGQTk2NDFEQTZFOTA4MDAyODYxQkQgLyogSlNOb2RlRE9NSklULmNw
cCAqLywKIAkJCSk7CkBAIC0yNTc0MSw2ICsyNTc0Niw3IEBACiAJCQkJNDYwQ0JGMzYxRDRCQ0Qw
RTAwOTJFODhFIC8qIEpTRE9NV2luZG93UHJvcGVydGllcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QkNCRkI1M0QwRENEMjlDRjAwMTlCM0U1IC8qIEpTRE9NV2luZG93U2hlbGwuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTY1RTBFOTQ0MTEzM0M4OUYwMEI0Q0IxMCAvKiBKU0RPTVdyYXBwZXIuaCBpbiBI
ZWFkZXJzICovLAorCQkJCUUzQTc3NjY3MURDODVEMjgwMEI2OTBEOCAvKiBET01KSVRJRExDb252
ZXJ0LmggaW4gSGVhZGVycyAqLywKIAkJCQlGRDc4NjhCQTEzNkI5OTkyMDBENDAzREYgLyogSlNE
eW5hbWljc0NvbXByZXNzb3JOb2RlLmggaW4gSGVhZGVycyAqLywKIAkJCQk2NURGMzFGQTA5RDFD
QzYwMDAwQkUzMjUgLyogSlNFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlBREVDNzhGODE4
RUU1MzA4MDAxMzE1QzIgLyogSlNFbGVtZW50Q3VzdG9tLmggaW4gSGVhZGVycyAqLywKQEAgLTI3
MzA0LDYgKzI3MzEwLDcgQEAKIAkJCQkwODUyNUU2MzEyNzhDMDAxMDBBODQ3NzggLyogU1ZHQW5p
bWF0ZWRTdGF0aWNQcm9wZXJ0eVRlYXJPZmYuaCBpbiBIZWFkZXJzICovLAogCQkJCTA4NERCNTlC
MTI4MDA4Q0MwMDJBNkQ2NCAvKiBTVkdBbmltYXRlZFN0cmluZy5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMDgyNTA5MzkxMjhCRDREODAwRTJFRDhFIC8qIFNWR0FuaW1hdGVkVHJhbnNmb3JtTGlzdC5o
IGluIEhlYWRlcnMgKi8sCisJCQkJRTNBNzc2NjgxREM4NUQyODAwQjY5MEQ4IC8qIERPTUpJVElE
TFR5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTA4NUExNTkzMTI4OUE4REQwMDI3MTBFMyAvKiBT
VkdBbmltYXRlZFRyYW5zZm9ybUxpc3RQcm9wZXJ0eVRlYXJPZmYuaCBpbiBIZWFkZXJzICovLAog
CQkJCTQzOUQzMzQzMTNBNjkxMUMwMEMyMEY0RiAvKiBTVkdBbmltYXRlZFR5cGUuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTQzOUQzMzQ0MTNBNjkxMUMwMEMyMEY0RiAvKiBTVkdBbmltYXRlZFR5cGVB
bmltYXRvci5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNzg0Myw2ICsyNzg1MCw3IEBACiAJCQkJOTdB
QUJEMjMxNEZBMDlENTAwNzQ1N0FFIC8qIFdlYlNvY2tldEV4dGVuc2lvbkRpc3BhdGNoZXIuaCBp
biBIZWFkZXJzICovLAogCQkJCTRBNUEyQURDMTYxRTdFMDAwMDU4ODlERCAvKiBXZWJTb2NrZXRF
eHRlbnNpb25QYXJzZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTk3QUFCRDI0MTRGQTA5RDUwMDc0
NTdBRSAvKiBXZWJTb2NrZXRFeHRlbnNpb25Qcm9jZXNzb3IuaCBpbiBIZWFkZXJzICovLAorCQkJ
CUUzNTgwMkI2MURDODQzNUQwMEE5NzczQyAvKiBET01KSVRJRExUeXBlRmlsdGVyLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk5N0FBQkQyNTE0RkEwOUQ1MDA3NDU3QUUgLyogV2ViU29ja2V0RnJhbWUu
aCBpbiBIZWFkZXJzICovLAogCQkJCTk3QUFCRDI3MTRGQTA5RDUwMDc0NTdBRSAvKiBXZWJTb2Nr
ZXRIYW5kc2hha2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTMxREVBNDU2MUIzOUY0RDkwMEY3NzE3
OCAvKiBXZWJTeXN0ZW1CYWNrZHJvcExheWVyLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmggYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5oCmluZGV4IGMxODFmOWExNmY1
NTMwYmQ5NTNkYmY1ZjFjMTVmMTNhNjI0ZmExMmMuLjVkYzFlZTQwYzk4NTQwZThjNDcwNWI3MDk1
NzU5ZmZjZmMyNWRhMGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
RE9NR2xvYmFsT2JqZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01H
bG9iYWxPYmplY3QuaApAQCAtODEsNyArODEsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAg
cHVibGljOgogICAgICAgICB+SlNET01HbG9iYWxPYmplY3QoKTsKIAotICAgICAgICBzdGF0aWMg
Y29uc3QgSlNDOjpDbGFzc0luZm8qIGluZm8oKSB7IHJldHVybiAmc19pbmZvOyB9CisgICAgICAg
IHN0YXRpYyBjb25zdGV4cHIgY29uc3QgSlNDOjpDbGFzc0luZm8qIGluZm8oKSB7IHJldHVybiAm
c19pbmZvOyB9CiAKICAgICAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1
cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgICAgIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBt
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KaW5k
ZXggMzU0OTBkMDJjMmRhMGJlMjUwZDZmZWVhNTlmZmJlNzBiNTM1MGU1OS4uNjZlN2RlMWZkZjQ0
YjFiNjY4NTBkOGU3ZDQ3N2I2YTY2MTI1NGRhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KQEAgLTE0MzUsNyArMTQzNSw3IEBA
IHN1YiBHZW5lcmF0ZUhlYWRlcgogICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAicHJvdGVj
dGVkOlxuIik7CiAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgc3RhdGljIGNvbnN0
IEpTQzo6Q2xhc3NJbmZvIHNfaW5mbztcbiIpOwogICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50
LCAicHVibGljOlxuIik7Ci0gICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgc3RhdGlj
IGNvbnN0IEpTQzo6Q2xhc3NJbmZvKiBpbmZvKCkgeyByZXR1cm4gJnNfaW5mbzsgfVxuXG4iKTsK
KyAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICBzdGF0aWMgY29uc3RleHByIGNvbnN0
IEpTQzo6Q2xhc3NJbmZvKiBpbmZvKCkgeyByZXR1cm4gJnNfaW5mbzsgfVxuXG4iKTsKICAgICB9
IGVsc2UgewogICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiXG4iKTsKICAgICAgICAgcHVz
aChAaGVhZGVyQ29udGVudCwgIiAgICBERUNMQVJFX0lORk87XG5cbiIpOwpAQCAtMTg4OSw3ICsx
ODg5LDExIEBAIHN1YiBHZW5lcmF0ZVByb3BlcnRpZXNIYXNoVGFibGUKICAgICAgICAgIyBGSVhN
RTogUmVtb3ZlIHRoaXMgb25jZSB3ZSBjYW4gZ2V0IHJpZCBvZiB0aGUgcXVpcmsgaW50cm9kdWNl
ZCBpbiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYzOTY3LgogICAg
ICAgICAkZnVuY3Rpb25MZW5ndGggPSAzIGlmICRpbnRlcmZhY2VOYW1lIGVxICJFdmVudCIgYW5k
ICRmdW5jdGlvbi0+bmFtZSBlcSAiaW5pdEV2ZW50IjsKIAotICAgICAgICBwdXNoKEAkaGFzaFZh
bHVlMiwgJGZ1bmN0aW9uTGVuZ3RoKTsKKyAgICAgICAgaWYgKCRmdW5jdGlvbi0+ZXh0ZW5kZWRB
dHRyaWJ1dGVzLT57IkRPTUpJVCJ9KSB7CisgICAgICAgICAgICBwdXNoKEAkaGFzaFZhbHVlMiwg
IiZET01KSVRTaWduYXR1cmVGb3IiIC4gJGludGVyZmFjZS0+dHlwZS0+bmFtZSAuICRjb2RlR2Vu
ZXJhdG9yLT5XS191Y2ZpcnN0KCRmdW5jdGlvbi0+bmFtZSkpOworICAgICAgICB9IGVsc2Ugewor
ICAgICAgICAgICAgcHVzaChAJGhhc2hWYWx1ZTIsICRmdW5jdGlvbkxlbmd0aCk7CisgICAgICAg
IH0KIAogICAgICAgICBwdXNoKEAkaGFzaFNwZWNpYWxzLCBDb21wdXRlRnVuY3Rpb25TcGVjaWFs
KCRpbnRlcmZhY2UsICRmdW5jdGlvbikpOwogCkBAIC0yNTA1LDM5ICsyNTA5LDI4IEBAIHN1YiBh
ZGRVbnNjb3BhYmxlUHJvcGVydGllcwogICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHB1dERp
cmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT51bnNjb3BhYmxlc1N5
bWJvbCwgJnVuc2NvcGFibGVzLCBEb250RW51bSB8IFJlYWRPbmx5KTtcbiIpOwogfQogCi1zdWIg
R2V0UmVzdWx0VHlwZUZpbHRlcgorc3ViIEdldFVuc2FmZUFyZ3VtZW50VHlwZQogewotICAgIG15
ICgkdHlwZSkgPSBAXzsKKyAgICBteSAoJGludGVyZmFjZSwgJHR5cGUpID0gQF87CiAKLSAgICBt
eSAlVHlwZUZpbHRlcnMgPSAoCi0gICAgICAgICJhbnkiID0+ICJTcGVjSGVhcFRvcCIsCi0gICAg
ICAgICJib29sZWFuIiA9PiAiU3BlY0Jvb2xlYW4iLAotICAgICAgICAiYnl0ZSIgPT4gIlNwZWNJ
bnQzMk9ubHkiLAotICAgICAgICAib2N0ZXQiID0+ICJTcGVjSW50MzJPbmx5IiwKLSAgICAgICAg
InNob3J0IiA9PiAiU3BlY0ludDMyT25seSIsCi0gICAgICAgICJ1bnNpZ25lZCBzaG9ydCIgPT4g
IlNwZWNJbnQzMk9ubHkiLAotICAgICAgICAibG9uZyIgPT4gIlNwZWNJbnQzMk9ubHkiLAotICAg
ICAgICAidW5zaWduZWQgbG9uZyIgPT4gIlNwZWNCeXRlY29kZU51bWJlciIsCi0gICAgICAgICJs
b25nIGxvbmciID0+ICJTcGVjQnl0ZWNvZGVOdW1iZXIiLAotICAgICAgICAidW5zaWduZWQgbG9u
ZyBsb25nIiA9PiAiU3BlY0J5dGVjb2RlTnVtYmVyIiwKLSAgICAgICAgImZsb2F0IiA9PiAiU3Bl
Y0J5dGVjb2RlTnVtYmVyIiwKLSAgICAgICAgInVucmVzdHJpY3RlZCBmbG9hdCIgPT4gIlNwZWNC
eXRlY29kZU51bWJlciIsCi0gICAgICAgICJkb3VibGUiID0+ICJTcGVjQnl0ZWNvZGVOdW1iZXIi
LAotICAgICAgICAidW5yZXN0cmljdGVkIGRvdWJsZSIgPT4gIlNwZWNCeXRlY29kZU51bWJlciIs
Ci0gICAgICAgICJET01TdHJpbmciID0+ICJTcGVjU3RyaW5nIiwKLSAgICAgICAgIkJ5dGVTdHJp
bmciID0+ICJTcGVjU3RyaW5nIiwKLSAgICAgICAgIlVTVlN0cmluZyIgPT4gIlNwZWNTdHJpbmci
LAotICAgICk7CisgICAgbXkgJElETFR5cGUgPSBHZXRJRExUeXBlKCRpbnRlcmZhY2UsICR0eXBl
KTsKKyAgICByZXR1cm4gIkRPTUpJVDo6SURMSlNBcmd1bWVudFR5cGU8JHtJRExUeXBlfT4iOwor
fQogCi0gICAgaWYgKGV4aXN0cyAkVHlwZUZpbHRlcnN7JHR5cGUtPm5hbWV9KSB7Ci0gICAgICAg
IG15ICRyZXN1bHRUeXBlID0gIkpTQzo6JFR5cGVGaWx0ZXJzeyR0eXBlLT5uYW1lfSI7Ci0gICAg
ICAgIGlmICgkdHlwZS0+aXNOdWxsYWJsZSkgewotICAgICAgICAgICAgZGllICJcImFueVwiIHR5
cGUgbXVzdCBub3QgYmVjb21lIG51bGxhYmxlLiIgaWYgJHR5cGUtPm5hbWUgZXEgImFueSI7Ci0g
ICAgICAgICAgICAkcmVzdWx0VHlwZSA9ICIoJHJlc3VsdFR5cGUgfCBKU0M6OlNwZWNPdGhlciki
OwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiAkcmVzdWx0VHlwZTsKLSAgICB9Ci0gICAgcmV0
dXJuICJTcGVjSGVhcFRvcCI7CitzdWIgR2V0QXJndW1lbnRUeXBlRmlsdGVyCit7CisgICAgbXkg
KCRpbnRlcmZhY2UsICR0eXBlKSA9IEBfOworCisgICAgbXkgJElETFR5cGUgPSBHZXRJRExUeXBl
KCRpbnRlcmZhY2UsICR0eXBlKTsKKyAgICByZXR1cm4gIkRPTUpJVDo6SURMQXJndW1lbnRUeXBl
RmlsdGVyPCR7SURMVHlwZX0+Ojp2YWx1ZSI7Cit9CisKK3N1YiBHZXRSZXN1bHRUeXBlRmlsdGVy
Cit7CisgICAgbXkgKCRpbnRlcmZhY2UsICR0eXBlKSA9IEBfOworCisgICAgbXkgJElETFR5cGUg
PSBHZXRJRExUeXBlKCRpbnRlcmZhY2UsICR0eXBlKTsKKyAgICByZXR1cm4gIkRPTUpJVDo6SURM
UmVzdWx0VHlwZUZpbHRlcjwke0lETFR5cGV9Pjo6dmFsdWUiOwogfQogCiBzdWIgR2VuZXJhdGVJ
bXBsZW1lbnRhdGlvbgpAQCAtMjYwOCw2ICsyNjAxLDE3IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVu
dGF0aW9uCiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiNpZiAke2NvbmRpdGlvbmFs
U3RyaW5nfVxuIikgaWYgJGNvbmRpdGlvbmFsU3RyaW5nOwogICAgICAgICAgICAgbXkgJGZ1bmN0
aW9uTmFtZSA9IEdldEZ1bmN0aW9uTmFtZSgkaW50ZXJmYWNlLCAkY2xhc3NOYW1lLCAkZnVuY3Rp
b24pOwogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJKU0M6OkVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgJHtmdW5jdGlvbk5hbWV9KEpTQzo6RXhlY1N0YXRlKik7XG4iKTsKKyAg
ICAgICAgICAgIGlmICgkY29kZUdlbmVyYXRvci0+RXh0ZW5kZWRBdHRyaWJ1dGVDb250YWlucygk
ZnVuY3Rpb24tPmV4dGVuZGVkQXR0cmlidXRlcy0+e0RPTUpJVH0sICJTaWduYXR1cmUiKSkgewor
ICAgICAgICAgICAgICAgICRpbXBsSW5jbHVkZXN7IkRPTUpJVElETFR5cGUuaCJ9ID0gMTsKKyAg
ICAgICAgICAgICAgICBteSAkdW5zYWZlRnVuY3Rpb25OYW1lID0gInVuc2FmZSIgLiAkY29kZUdl
bmVyYXRvci0+V0tfdWNmaXJzdCgkZnVuY3Rpb25OYW1lKTsKKyAgICAgICAgICAgICAgICBteSAk
ZnVuY3Rpb25TaWduYXR1cmUgPSAiSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMICR7
dW5zYWZlRnVuY3Rpb25OYW1lfShKU0M6OkV4ZWNTdGF0ZSosICRjbGFzc05hbWUqIjsKKyAgICAg
ICAgICAgICAgICBmb3JlYWNoIG15ICRhcmd1bWVudCAoQHskZnVuY3Rpb24tPmFyZ3VtZW50c30p
IHsKKyAgICAgICAgICAgICAgICAgICAgbXkgJHR5cGUgPSAkYXJndW1lbnQtPnR5cGU7CisgICAg
ICAgICAgICAgICAgICAgIG15ICRhcmd1bWVudFR5cGUgPSBHZXRVbnNhZmVBcmd1bWVudFR5cGUo
JGludGVyZmFjZSwgJHR5cGUpOworICAgICAgICAgICAgICAgICAgICAkZnVuY3Rpb25TaWduYXR1
cmUgLj0gIiwgJHthcmd1bWVudFR5cGV9IjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICAgICAgcHVzaChAaW1wbENvbnRlbnQsICRmdW5jdGlvblNpZ25hdHVyZSAuICIpO1xuIik7Cisg
ICAgICAgICAgICB9CiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiNlbmRpZlxuIikg
aWYgJGNvbmRpdGlvbmFsU3RyaW5nOwogICAgICAgICB9CiAKQEAgLTI2NDQsNiArMjY0OCwzNyBA
QCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwg
IlxuIik7CiAgICAgfQogCisgICAgaWYgKCRudW1GdW5jdGlvbnMgPiAwKSB7CisgICAgICAgICMg
R2VuZXJhdGUgRE9NSklUOjpTaWduYXR1cmUgdmFyaWFibGVzLgorICAgICAgICBmb3JlYWNoIG15
ICRmdW5jdGlvbiAoQGZ1bmN0aW9ucykgeworICAgICAgICAgICAgbmV4dCB1bmxlc3MgJGNvZGVH
ZW5lcmF0b3ItPkV4dGVuZGVkQXR0cmlidXRlQ29udGFpbnMoJGZ1bmN0aW9uLT5leHRlbmRlZEF0
dHJpYnV0ZXMtPntET01KSVR9LCAiU2lnbmF0dXJlIik7CisgICAgICAgICAgICAkaW1wbEluY2x1
ZGVzeyJET01KSVRJRExUeXBlRmlsdGVyLmgifSA9IDE7CisgICAgICAgICAgICAkaW1wbEluY2x1
ZGVzeyJET01KSVRDaGVja0RPTS5oIn0gPSAxOworICAgICAgICAgICAgJGltcGxJbmNsdWRlc3si
RE9NSklUQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5oIn0gPSAxOworCisgICAgICAgICAgICBteSAk
aXNPdmVybG9hZGVkID0gJGZ1bmN0aW9uLT57b3ZlcmxvYWRzfSAmJiBAeyRmdW5jdGlvbi0+e292
ZXJsb2Fkc319ID4gMTsKKyAgICAgICAgICAgIGRpZSAib3ZlcmxvYWRzIGlzIG5vdCBzdXBwb3J0
ZWQgaW4gRE9NSklUIiBpZiAkaXNPdmVybG9hZGVkOworCisgICAgICAgICAgICBteSAkaW50ZXJm
YWNlTmFtZSA9ICRpbnRlcmZhY2UtPnR5cGUtPm5hbWU7CisgICAgICAgICAgICBteSAkZnVuY3Rp
b25OYW1lID0gR2V0RnVuY3Rpb25OYW1lKCRpbnRlcmZhY2UsICRjbGFzc05hbWUsICRmdW5jdGlv
bik7CisgICAgICAgICAgICBteSAkdW5zYWZlRnVuY3Rpb25OYW1lID0gInVuc2FmZSIgLiAkY29k
ZUdlbmVyYXRvci0+V0tfdWNmaXJzdCgkZnVuY3Rpb25OYW1lKTsKKyAgICAgICAgICAgIG15ICRk
b21KSVRTaWduYXR1cmVOYW1lID0gIkRPTUpJVFNpZ25hdHVyZUZvciIgLiAkaW50ZXJmYWNlLT50
eXBlLT5uYW1lIC4gJGNvZGVHZW5lcmF0b3ItPldLX3VjZmlyc3QoJGZ1bmN0aW9uLT5uYW1lKTsK
KyAgICAgICAgICAgIG15ICRjbGFzc0luZm8gPSAiSlMiIC4gJGludGVyZmFjZS0+dHlwZS0+bmFt
ZSAuICI6OmluZm8oKSI7CisgICAgICAgICAgICBteSAkcmVzdWx0VHlwZSA9IEdldFJlc3VsdFR5
cGVGaWx0ZXIoJGludGVyZmFjZSwgJGZ1bmN0aW9uLT50eXBlKTsKKyAgICAgICAgICAgIG15ICRk
b21KSVRTaWduYXR1cmUgPSAic3RhdGljIGNvbnN0IEpTQzo6RE9NSklUOjpTaWduYXR1cmUgJHtk
b21KSVRTaWduYXR1cmVOYW1lfSgodWludHB0cl90KSR7dW5zYWZlRnVuY3Rpb25OYW1lfSwgRE9N
SklUOjpjaGVja0RPTTwkaW50ZXJmYWNlTmFtZT4sICRjbGFzc0luZm8sIEpTQzo6RE9NSklUOjpF
ZmZlY3Q6OmZvclJlYWQoRE9NSklUOjpBYnN0cmFjdEhlYXBSZXBvc2l0b3J5OjpET00pLCAke3Jl
c3VsdFR5cGV9IjsKKyAgICAgICAgICAgIGZvcmVhY2ggbXkgJGFyZ3VtZW50IChAeyRmdW5jdGlv
bi0+YXJndW1lbnRzfSkgeworICAgICAgICAgICAgICAgIG15ICR0eXBlID0gJGFyZ3VtZW50LT50
eXBlOworICAgICAgICAgICAgICAgIG15ICRhcmd1bWVudFR5cGUgPSBHZXRBcmd1bWVudFR5cGVG
aWx0ZXIoJGludGVyZmFjZSwgJHR5cGUpOworICAgICAgICAgICAgICAgICRkb21KSVRTaWduYXR1
cmUgLj0gIiwgJHthcmd1bWVudFR5cGV9IjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIG15
ICRjb25kaXRpb25hbFN0cmluZyA9ICRjb2RlR2VuZXJhdG9yLT5HZW5lcmF0ZUNvbmRpdGlvbmFs
U3RyaW5nKCRmdW5jdGlvbik7CisgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiNpZiAk
e2NvbmRpdGlvbmFsU3RyaW5nfVxuIikgaWYgJGNvbmRpdGlvbmFsU3RyaW5nOworICAgICAgICAg
ICAgcHVzaChAaW1wbENvbnRlbnQsICRkb21KSVRTaWduYXR1cmUgLiAiKTtcbiIpOworICAgICAg
ICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIjZW5kaWZcbiIpIGlmICRjb25kaXRpb25hbFN0cmlu
ZzsKKyAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiXG4iKTsKKyAgICAgICAgfQorICAg
IH0KKwogICAgIEdlbmVyYXRlUHJvdG90eXBlRGVjbGFyYXRpb24oXEBpbXBsQ29udGVudCwgJGNs
YXNzTmFtZSwgJGludGVyZmFjZSkgaWYgIUhlYWRlck5lZWRzUHJvdG90eXBlRGVjbGFyYXRpb24o
JGludGVyZmFjZSk7CiAKICAgICBHZW5lcmF0ZUNvbnN0cnVjdG9yRGVjbGFyYXRpb24oXEBpbXBs
Q29udGVudCwgJGNsYXNzTmFtZSwgJGludGVyZmFjZSkgaWYgTmVlZHNDb25zdHJ1Y3RvclByb3Bl
cnR5KCRpbnRlcmZhY2UpOwpAQCAtMjc0MCw3ICsyNzc1LDExIEBAIHN1YiBHZW5lcmF0ZUltcGxl
bWVudGF0aW9uCiAgICAgICAgICAgICBwdXNoKEBoYXNoVmFsdWUxLCAkZnVuY3Rpb25OYW1lKTsK
IAogICAgICAgICAgICAgbXkgJGZ1bmN0aW9uTGVuZ3RoID0gR2V0RnVuY3Rpb25MZW5ndGgoJGZ1
bmN0aW9uKTsKLSAgICAgICAgICAgIHB1c2goQGhhc2hWYWx1ZTIsICRmdW5jdGlvbkxlbmd0aCk7
CisgICAgICAgICAgICBpZiAoJGNvZGVHZW5lcmF0b3ItPkV4dGVuZGVkQXR0cmlidXRlQ29udGFp
bnMoJGZ1bmN0aW9uLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntET01KSVR9LCAiU2lnbmF0dXJlIikp
IHsKKyAgICAgICAgICAgICAgICBwdXNoKEBoYXNoVmFsdWUyLCAiRE9NSklURnVuY3Rpb25Gb3Ii
IC4gJGludGVyZmFjZS0+dHlwZS0+bmFtZSAuICRjb2RlR2VuZXJhdG9yLT5XS191Y2ZpcnN0KCRm
dW5jdGlvbi0+bmFtZSkpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBw
dXNoKEBoYXNoVmFsdWUyLCAkZnVuY3Rpb25MZW5ndGgpOworICAgICAgICAgICAgfQogCiAgICAg
ICAgICAgICBwdXNoKEBoYXNoU3BlY2lhbHMsIENvbXB1dGVGdW5jdGlvblNwZWNpYWwoJGludGVy
ZmFjZSwgJGZ1bmN0aW9uKSk7CiAKQEAgLTMzMDcsMTMgKzMzNDYsMTQgQEAgc3ViIEdlbmVyYXRl
SW1wbGVtZW50YXRpb24KIAogICAgICAgICAgICAgaWYgKCRhdHRyaWJ1dGUtPmV4dGVuZGVkQXR0
cmlidXRlcy0+eyJET01KSVQifSkgewogICAgICAgICAgICAgICAgICRpbXBsSW5jbHVkZXN7Ijx3
dGYvTmV2ZXJEZXN0cm95ZWQuaD4ifSA9IDE7CisgICAgICAgICAgICAgICAgJGltcGxJbmNsdWRl
c3siRE9NSklUSURMVHlwZUZpbHRlci5oIn0gPSAxOwogICAgICAgICAgICAgICAgIG15ICRpbnRl
cmZhY2VOYW1lID0gJGludGVyZmFjZS0+dHlwZS0+bmFtZTsKICAgICAgICAgICAgICAgICBteSAk
YXR0cmlidXRlTmFtZSA9ICRhdHRyaWJ1dGUtPm5hbWU7CiAgICAgICAgICAgICAgICAgbXkgJGdl
bmVyYXRvck5hbWUgPSAkaW50ZXJmYWNlTmFtZSAuICRjb2RlR2VuZXJhdG9yLT5XS191Y2ZpcnN0
KCRhdHRyaWJ1dGUtPm5hbWUpOwogICAgICAgICAgICAgICAgIG15ICRkb21KSVRDbGFzc05hbWUg
PSAkZ2VuZXJhdG9yTmFtZSAuICJET01KSVQiOwogICAgICAgICAgICAgICAgIG15ICRnZXR0ZXIg
PSBHZXRBdHRyaWJ1dGVHZXR0ZXJOYW1lKCRpbnRlcmZhY2UsICRnZW5lcmF0b3JOYW1lLCAkYXR0
cmlidXRlKTsKICAgICAgICAgICAgICAgICBteSAkc2V0dGVyID0gSXNSZWFkb25seSgkYXR0cmli
dXRlKSA/ICJudWxscHRyIiA6IEdldEF0dHJpYnV0ZVNldHRlck5hbWUoJGludGVyZmFjZSwgJGdl
bmVyYXRvck5hbWUsICRhdHRyaWJ1dGUpOwotICAgICAgICAgICAgICAgIG15ICRyZXN1bHRUeXBl
ID0gR2V0UmVzdWx0VHlwZUZpbHRlcigkYXR0cmlidXRlLT50eXBlKTsKKyAgICAgICAgICAgICAg
ICBteSAkcmVzdWx0VHlwZSA9IEdldFJlc3VsdFR5cGVGaWx0ZXIoJGludGVyZmFjZSwgJGF0dHJp
YnV0ZS0+dHlwZSk7CiAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIkZG9tSklU
Q2xhc3NOYW1lOjokZG9tSklUQ2xhc3NOYW1lKClcbiIpOwogICAgICAgICAgICAgICAgIHB1c2go
QGltcGxDb250ZW50LCAiICAgIDogSlNDOjpET01KSVQ6OkdldHRlclNldHRlcigkZ2V0dGVyLCAk
c2V0dGVyLCAke2NsYXNzTmFtZX06OmluZm8oKSwgJHJlc3VsdFR5cGUpXG4iKTsKICAgICAgICAg
ICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIntcbiIpOwpAQCAtMzY4OCw2ICszNzI4LDcgQEAg
c3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KIAogICAgICAgICAgICAgbXkgJGlzQ3VzdG9tID0g
SGFzQ3VzdG9tTWV0aG9kKCRmdW5jdGlvbi0+ZXh0ZW5kZWRBdHRyaWJ1dGVzKTsKICAgICAgICAg
ICAgIG15ICRpc092ZXJsb2FkZWQgPSAkZnVuY3Rpb24tPntvdmVybG9hZHN9ICYmIEB7JGZ1bmN0
aW9uLT57b3ZlcmxvYWRzfX0gPiAxOworICAgICAgICAgICAgbXkgJGlzRE9NSklUID0gJGNvZGVH
ZW5lcmF0b3ItPkV4dGVuZGVkQXR0cmlidXRlQ29udGFpbnMoJGZ1bmN0aW9uLT5leHRlbmRlZEF0
dHJpYnV0ZXMtPntET01KSVR9LCAiU2lnbmF0dXJlIik7CiAKICAgICAgICAgICAgIG15ICRtYXlU
aHJvd0xlZ2FjeUV4Y2VwdGlvbiA9ICRmdW5jdGlvbi0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57TWF5
VGhyb3dMZWdhY3lFeGNlcHRpb259OwogCkBAIC0zODI2LDYgKzM4NjcsNzkgQEAgRU5ECiAgICAg
ICAgICAgICB9CiAKICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAifVxuXG4iKTsKKwor
ICAgICAgICAgICAgaWYgKCRpc0RPTUpJVCkgeworICAgICAgICAgICAgICAgICRpbXBsSW5jbHVk
ZXN7IjxpbnRlcnByZXRlci9GcmFtZVRyYWNlcnMuaD4ifSA9IDE7CisgICAgICAgICAgICAgICAg
bXkgJHVuc2FmZUZ1bmN0aW9uTmFtZSA9ICJ1bnNhZmUiIC4gJGNvZGVHZW5lcmF0b3ItPldLX3Vj
Zmlyc3QoJGZ1bmN0aW9uTmFtZSk7CisgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQs
ICJKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgJHt1bnNhZmVGdW5jdGlvbk5hbWV9
KEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgJGNsYXNzTmFtZSogY2FzdGVkVGhpcyIpOworICAgICAg
ICAgICAgICAgIGZvcmVhY2ggbXkgJGFyZ3VtZW50IChAeyRmdW5jdGlvbi0+YXJndW1lbnRzfSkg
eworICAgICAgICAgICAgICAgICAgICBteSAkdHlwZSA9ICRhcmd1bWVudC0+dHlwZTsKKyAgICAg
ICAgICAgICAgICAgICAgbXkgJGFyZ3VtZW50VHlwZSA9IEdldFVuc2FmZUFyZ3VtZW50VHlwZSgk
aW50ZXJmYWNlLCAkdHlwZSk7CisgICAgICAgICAgICAgICAgICAgIG15ICRuYW1lID0gJGFyZ3Vt
ZW50LT5uYW1lOworICAgICAgICAgICAgICAgICAgICBteSAkZW5jb2RlZE5hbWUgPSAiZW5jb2Rl
ZCIgLiAkY29kZUdlbmVyYXRvci0+V0tfdWNmaXJzdCgkbmFtZSk7CisgICAgICAgICAgICAgICAg
ICAgIHB1c2goQGltcGxDb250ZW50LCAiLCAke2FyZ3VtZW50VHlwZX0gJHtlbmNvZGVkTmFtZX0i
KTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQs
ICIpXG4iKTsKKyAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIntcbiIpOworICAg
ICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7
XG4iKTsKKyAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBWTSYgdm0gPSBz
dGF0ZS0+dm0oKTtcbiIpOworICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAg
IEpTQzo6TmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcigmdm0sIHN0YXRlKTtcbiIpOworICAg
ICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGF1dG8gdGhyb3dTY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pO1xuIik7CisgICAgICAgICAgICAgICAgcHVzaChAaW1wbENv
bnRlbnQsICIgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpO1xuIik7CisgICAgICAgICAgICAg
ICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBw
ZWQoKTtcbiIpOworICAgICAgICAgICAgICAgIG15IEBhcmd1bWVudHM7CisgICAgICAgICAgICAg
ICAgbXkgJGltcGxGdW5jdGlvbk5hbWU7CisgICAgICAgICAgICAgICAgbXkgJGltcGxlbWVudGVk
QnkgPSAkZnVuY3Rpb24tPmV4dGVuZGVkQXR0cmlidXRlcy0+e0ltcGxlbWVudGVkQnl9OworCisg
ICAgICAgICAgICAgICAgaWYgKCRpbXBsZW1lbnRlZEJ5KSB7CisgICAgICAgICAgICAgICAgICAg
IEFkZFRvSW1wbEluY2x1ZGVzKCIke2ltcGxlbWVudGVkQnl9LmgiLCAkZnVuY3Rpb24tPmV4dGVu
ZGVkQXR0cmlidXRlcy0+e0NvbmRpdGlvbmFsfSk7CisgICAgICAgICAgICAgICAgICAgIHVuc2hp
ZnQoQGFyZ3VtZW50cywgImltcGwiKSBpZiAhJGZ1bmN0aW9uLT5pc1N0YXRpYzsKKyAgICAgICAg
ICAgICAgICAgICAgJGltcGxGdW5jdGlvbk5hbWUgPSAiV2ViQ29yZTo6JHtpbXBsZW1lbnRlZEJ5
fTo6JHtmdW5jdGlvbkltcGxlbWVudGF0aW9uTmFtZX0iOworICAgICAgICAgICAgICAgIH0gZWxz
aWYgKCRmdW5jdGlvbi0+aXNTdGF0aWMpIHsKKyAgICAgICAgICAgICAgICAgICAgJGltcGxGdW5j
dGlvbk5hbWUgPSAiJHtpbnRlcmZhY2VOYW1lfTo6JHtmdW5jdGlvbkltcGxlbWVudGF0aW9uTmFt
ZX0iOworICAgICAgICAgICAgICAgIH0gZWxzaWYgKCRzdmdQcm9wZXJ0eU9yTGlzdFByb3BlcnR5
VHlwZSBhbmQgISRzdmdMaXN0UHJvcGVydHlUeXBlKSB7CisgICAgICAgICAgICAgICAgICAgICRp
bXBsRnVuY3Rpb25OYW1lID0gInBvZEltcGwuJHtmdW5jdGlvbkltcGxlbWVudGF0aW9uTmFtZX0i
OworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICRpbXBsRnVu
Y3Rpb25OYW1lID0gImltcGwuJHtmdW5jdGlvbkltcGxlbWVudGF0aW9uTmFtZX0iOworICAgICAg
ICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIG15ICRhcmd1bWVudEluZGV4ID0gMDsKKyAg
ICAgICAgICAgICAgICBmb3JlYWNoIG15ICRhcmd1bWVudCAoQHskZnVuY3Rpb24tPmFyZ3VtZW50
c30pIHsKKyAgICAgICAgICAgICAgICAgICAgbXkgJHZhbHVlID0gIiI7CisgICAgICAgICAgICAg
ICAgICAgIG15ICR0eXBlID0gJGFyZ3VtZW50LT50eXBlOworICAgICAgICAgICAgICAgICAgICBt
eSAkbmFtZSA9ICRhcmd1bWVudC0+bmFtZTsKKyAgICAgICAgICAgICAgICAgICAgbXkgJGVuY29k
ZWROYW1lID0gImVuY29kZWQiIC4gJGNvZGVHZW5lcmF0b3ItPldLX3VjZmlyc3QoJG5hbWUpOwor
ICAgICAgICAgICAgICAgICAgICBteSAkbmF0aXZlVHlwZSA9IEdldE5hdGl2ZVR5cGUoJGludGVy
ZmFjZSwgJGFyZ3VtZW50LT50eXBlKTsKKyAgICAgICAgICAgICAgICAgICAgbXkgJHNob3VsZFBh
c3NCeVJlZmVyZW5jZSA9IFNob3VsZFBhc3NXcmFwcGVyQnlSZWZlcmVuY2UoJGFyZ3VtZW50LCAk
aW50ZXJmYWNlKTsKKworICAgICAgICAgICAgICAgICAgICBpZiAoISRzaG91bGRQYXNzQnlSZWZl
cmVuY2UgJiYgKCRjb2RlR2VuZXJhdG9yLT5Jc1dyYXBwZXJUeXBlKCR0eXBlKSB8fCAkY29kZUdl
bmVyYXRvci0+SXNUeXBlZEFycmF5VHlwZSgkdHlwZSkpKSB7CisgICAgICAgICAgICAgICAgICAg
ICAgICAkaW1wbEluY2x1ZGVzeyI8cnVudGltZS9FcnJvci5oPiJ9ID0gMTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIG15ICgkbmF0aXZlVmFsdWUsICRtYXlUaHJvd0V4Y2VwdGlvbikgPSBVbnNh
ZmVUb05hdGl2ZSgkaW50ZXJmYWNlLCAkYXJndW1lbnQsICRlbmNvZGVkTmFtZSwgJGZ1bmN0aW9u
LT5leHRlbmRlZEF0dHJpYnV0ZXMtPntDb25kaXRpb25hbH0pOworICAgICAgICAgICAgICAgICAg
ICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgJG5hdGl2ZVR5cGUgJG5hbWUgPSBudWxscHRy
O1xuIik7CisgICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAk
bmFtZSA9ICRuYXRpdmVWYWx1ZTtcbiIpOworICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChA
aW1wbENvbnRlbnQsICIgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVk
SlNWYWx1ZSgpKTtcbiIpIGlmICRtYXlUaHJvd0V4Y2VwdGlvbjsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICR2YWx1ZSA9ICJXVEZNb3ZlKCRuYW1lKSI7CisgICAgICAgICAgICAgICAgICAgIH0g
ZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICBteSAoJG5hdGl2ZVZhbHVlLCAkbWF5VGhy
b3dFeGNlcHRpb24pID0gVW5zYWZlVG9OYXRpdmUoJGludGVyZmFjZSwgJGFyZ3VtZW50LCAkZW5j
b2RlZE5hbWUsICRmdW5jdGlvbi0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Q29uZGl0aW9uYWx9KTsK
KyAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGF1dG8gJG5h
bWUgPSAke25hdGl2ZVZhbHVlfTtcbiIpOworICAgICAgICAgICAgICAgICAgICAgICAgJHZhbHVl
ID0gIldURk1vdmUoJG5hbWUpIjsKKyAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxD
b250ZW50LCAiICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFs
dWUoKSk7XG4iKSBpZiAkbWF5VGhyb3dFeGNlcHRpb247CisgICAgICAgICAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgICAgICAgICBpZiAoJHNob3VsZFBhc3NCeVJlZmVyZW5jZSkgeworICAg
ICAgICAgICAgICAgICAgICAgICAgJHZhbHVlID0gIiokbmFtZSI7CisgICAgICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgICAgICAgICAgcHVzaChAYXJndW1lbnRzLCAkdmFsdWUpOworICAg
ICAgICAgICAgICAgICAgICAkYXJndW1lbnRJbmRleCsrOworICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgICBteSAkZnVuY3Rpb25TdHJpbmcgPSAiJGltcGxGdW5jdGlvbk5hbWUoIiAu
IGpvaW4oIiwgIiwgQGFyZ3VtZW50cykgLiAiKSI7CisgICAgICAgICAgICAgICAgJGZ1bmN0aW9u
U3RyaW5nID0gInByb3BhZ2F0ZUV4Y2VwdGlvbigqc3RhdGUsIHRocm93U2NvcGUsICRmdW5jdGlv
blN0cmluZykiIGlmIE5lZWRzRXhwbGljaXRQcm9wYWdhdGVFeGNlcHRpb25DYWxsKCRmdW5jdGlv
bik7CisgICAgICAgICAgICAgICAgbXkgJHRoaXNPYmplY3QgPSAiY2FzdGVkVGhpcyI7CisgICAg
ICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgSlNWYWx1ZSByZXN1bHQgPSAiIC4g
TmF0aXZlVG9KU1ZhbHVlVXNpbmdQb2ludGVycygkZnVuY3Rpb24sIDEsICRpbnRlcmZhY2UsICRm
dW5jdGlvblN0cmluZywgJHRoaXNPYmplY3QpIC4gIjtcbiIpOworICAgICAgICAgICAgICAgIHB1
c2goQGltcGxDb250ZW50LCAiICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTtcbiIp
OworICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAifVxuXG4iKTsKKyAgICAgICAg
ICAgIH0KKwogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIjZW5kaWZcblxuIikgaWYg
JGNvbmRpdGlvbmFsOwogCiAgICAgICAgICAgICAjIEdlbmVyYXRlIGEgZnVuY3Rpb24gZGlzcGF0
Y2hpbmcgY2FsbCB0byB0aGUgcmVzdCBvZiB0aGUgb3ZlcmxvYWRzLgpAQCAtNTMxOSw2ICs1NDMz
LDQzIEBAIHN1YiBKU1ZhbHVlVG9OYXRpdmUKICAgICByZXR1cm4gKCJKUyIgLiAkdHlwZS0+bmFt
ZSAuICI6OnRvV3JhcHBlZCgkdmFsdWUpIiwgMCk7CiB9CiAKK3N1YiBVbnNhZmVUb05hdGl2ZQor
eworICAgIG15ICgkaW50ZXJmYWNlLCAkY29udGV4dCwgJHZhbHVlLCAkY29uZGl0aW9uYWwsICRz
dGF0ZVBvaW50ZXIsICRzdGF0ZVJlZmVyZW5jZSwgJHRoaXNPYmplY3RSZWZlcmVuY2UpID0gQF87
CisKKyAgICBhc3NlcnQoIkludmFsaWQgY29udGV4dCB0eXBlIikgaWYgIUlzVmFsaWRDb250ZXh0
Rm9ySlNWYWx1ZVRvTmF0aXZlKCRjb250ZXh0KTsKKworICAgIG15ICR0eXBlID0gJGNvbnRleHQt
PnR5cGU7CisKKyAgICAjIEZJWE1FOiBSZW1vdmUgdGhlc2UgMyB2YXJpYWJsZXMgd2hlbiBhbGwg
VW5zYWZlVG9OYXRpdmUgdXNlIHJlZmVyZW5jZXMuCisgICAgJHN0YXRlUG9pbnRlciA9ICJzdGF0
ZSIgdW5sZXNzICRzdGF0ZVBvaW50ZXI7CisgICAgJHN0YXRlUmVmZXJlbmNlID0gIipzdGF0ZSIg
dW5sZXNzICRzdGF0ZVJlZmVyZW5jZTsKKyAgICAkdGhpc09iamVjdFJlZmVyZW5jZSA9ICIqY2Fz
dGVkVGhpcyIgdW5sZXNzICR0aGlzT2JqZWN0UmVmZXJlbmNlOworCisgICAgaWYgKEpTVmFsdWVU
b05hdGl2ZUlzSGFuZGxlZEJ5RE9NQ29udmVydCgkdHlwZSwgJGNvbnRleHQpKSB7CisgICAgICAg
IEFkZFRvSW1wbEluY2x1ZGVzKCJET01KSVRJRExDb252ZXJ0LmgiKTsKKyAgICAgICAgQWRkVG9J
bXBsSW5jbHVkZXNGb3JJRExUeXBlKCR0eXBlLCAkY29uZGl0aW9uYWwpOworCisgICAgICAgIG15
ICRJRExUeXBlID0gR2V0SURMVHlwZSgkaW50ZXJmYWNlLCAkdHlwZSk7CisKKyAgICAgICAgbXkg
QGNvbnZlcnNpb25Bcmd1bWVudHMgPSAoKTsKKyAgICAgICAgcHVzaChAY29udmVyc2lvbkFyZ3Vt
ZW50cywgIiRzdGF0ZVJlZmVyZW5jZSIpOworICAgICAgICBwdXNoKEBjb252ZXJzaW9uQXJndW1l
bnRzLCAiJHZhbHVlIik7CisKKyAgICAgICAgbXkgQGNvbnZlcnNpb25TdGF0aWNBcmd1bWVudHMg
PSAoKTsKKyAgICAgICAgcHVzaChAY29udmVyc2lvblN0YXRpY0FyZ3VtZW50cywgR2V0SW50ZWdl
ckNvbnZlcnNpb25Db25maWd1cmF0aW9uKCRjb250ZXh0KSkgaWYgJGNvZGVHZW5lcmF0b3ItPklz
SW50ZWdlclR5cGUoJHR5cGUpOworICAgICAgICBwdXNoKEBjb252ZXJzaW9uU3RhdGljQXJndW1l
bnRzLCBHZXRTdHJpbmdDb252ZXJzaW9uQ29uZmlndXJhdGlvbigkY29udGV4dCkpIGlmICRjb2Rl
R2VuZXJhdG9yLT5Jc1N0cmluZ1R5cGUoJHR5cGUpOworCisgICAgICAgIGlmIChzY2FsYXIoQGNv
bnZlcnNpb25TdGF0aWNBcmd1bWVudHMpID4gMCkgeworICAgICAgICAgICAgcmV0dXJuICgiRE9N
SklUOjpEaXJlY3RDb252ZXJ0ZXI8JElETFR5cGU+OjpkaXJlY3RDb252ZXJ0PCIgLiBqb2luKCIs
ICIsIEBjb252ZXJzaW9uU3RhdGljQXJndW1lbnRzKSAuICI+KCIgLiBqb2luKCIsICIsIEBjb252
ZXJzaW9uQXJndW1lbnRzKSAuICIpIiwgMSk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuICgi
RE9NSklUOjpEaXJlY3RDb252ZXJ0ZXI8JElETFR5cGU+OjpkaXJlY3RDb252ZXJ0KCIgLiBqb2lu
KCIsICIsIEBjb252ZXJzaW9uQXJndW1lbnRzKSAuICIpIiwgMSk7CisgICAgfQorCisgICAgIyBG
SVhNRTogU3VwcG9ydCBtb3JlIHR5cGVzLgorICAgIGRpZSAiT25seSBET01Db252ZXJ0IHN1cHBv
cnRlZCBvbmUgaXMgbm93IHN1cHBvcnRlZCBpbiBET01KSVQgdW5zYWZlLiI7Cit9CisKIHN1YiBO
YXRpdmVUb0pTVmFsdWVJc0hhbmRsZWRCeURPTUNvbnZlcnQKIHsKICAgICBteSAoJHR5cGUpID0g
QF87CkBAIC01NTI1LDcgKzU2NzYsMTAgQEAgc3ViIEdlbmVyYXRlSGFzaFRhYmxlVmFsdWVBcnJh
eQogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIjaWYgJHtjb25kaXRpb25hbFN0cmlu
Z31cbiIpOwogICAgICAgICB9CiAKLSAgICAgICAgaWYgKCJAJHNwZWNpYWxzWyRpXSIgPX4gbS9G
dW5jdGlvbi8pIHsKKyAgICAgICAgaWYgKCJAJHNwZWNpYWxzWyRpXSIgPX4gbS9ET01KSVRGdW5j
dGlvbi8pIHsKKyAgICAgICAgICAgICRmaXJzdFRhcmdldFR5cGUgPSAic3RhdGljX2Nhc3Q8TmF0
aXZlRnVuY3Rpb24+IjsKKyAgICAgICAgICAgICRzZWNvbmRUYXJnZXRUeXBlID0gInN0YXRpY19j
YXN0PGNvbnN0IEpTQzo6RE9NSklUOjpTaWduYXR1cmUqPiI7CisgICAgICAgIH0gZWxzaWYgKCJA
JHNwZWNpYWxzWyRpXSIgPX4gbS9GdW5jdGlvbi8pIHsKICAgICAgICAgICAgICRmaXJzdFRhcmdl
dFR5cGUgPSAic3RhdGljX2Nhc3Q8TmF0aXZlRnVuY3Rpb24+IjsKICAgICAgICAgfSBlbHNpZiAo
IkAkc3BlY2lhbHNbJGldIiA9fiBtL0J1aWx0aW4vKSB7CiAgICAgICAgICAgICAkZmlyc3RUYXJn
ZXRUeXBlID0gInN0YXRpY19jYXN0PEJ1aWx0aW5HZW5lcmF0b3I+IjsKQEAgLTYxMjMsNiArNjI3
Nyw5IEBAIHN1YiBDb21wdXRlRnVuY3Rpb25TcGVjaWFsCiAgICAgZWxzZSB7CiAgICAgICAgIHB1
c2goQHNwZWNpYWxzLCAiSlNDOjpGdW5jdGlvbiIpOwogICAgIH0KKyAgICBpZiAoJGZ1bmN0aW9u
LT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiRE9NSklUIn0pIHsKKyAgICAgICAgcHVzaChAc3BlY2lh
bHMsICJET01KSVRGdW5jdGlvbiIpIGlmICRjb2RlR2VuZXJhdG9yLT5FeHRlbmRlZEF0dHJpYnV0
ZUNvbnRhaW5zKCRmdW5jdGlvbi0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57RE9NSklUfSwgIlNpZ25h
dHVyZSIpOworICAgIH0KICAgICByZXR1cm4gKEBzcGVjaWFscyA+IDApID8gam9pbigiIHwgIiwg
QHNwZWNpYWxzKSA6ICIwIjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy9JRExBdHRyaWJ1dGVzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvSURMQXR0cmlidXRlcy50eHQKaW5kZXggYTJlNzU0MTU5MWNlM2Y1NzZlN2E3ZDJkNmQy
ZmM2MmRkZGZhMDQxYy4uMTQ2YzJiY2M4ZTBmMzc2ZDVkY2M1NDM1MzkwODMzNTljNzJkYmU2MyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9JRExBdHRyaWJ1dGVz
LnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0lETEF0dHJpYnV0ZXMu
dHh0CkBAIC01Miw3ICs1Miw3IEBAIEN1c3RvbVB1dEZ1bmN0aW9uCiBDdXN0b21TZXRQcm90b3R5
cGUKIEN1c3RvbVNldHRlcgogQ3VzdG9tVG9KU09iamVjdAotRE9NSklUCitET01KSVQ9fFNpZ25h
dHVyZQogRG9Ob3RDaGVja0NvbnN0YW50cwogRG9Ob3RDaGVja1NlY3VyaXR5CiBEb05vdENoZWNr
U2VjdXJpdHlPbkdldHRlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdERPTUpJVC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0RE9NSklULmNwcAppbmRleCAyNDg4ZGYyNmJkYjUyYjUwY2Q2
N2Q2MGNjYTU2NWIyNjUzNjdlNGNmLi41YWZhZDNmZmNmMWVmNDM5ZWZjODBlYmJlZjQwNzRkZWE0
YjczYTIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0RE9NSklULmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0RE9NSklULmNwcApAQCAtMjEsMTAgKzIxLDE4IEBACiAjaW5jbHVkZSAi
Y29uZmlnLmgiCiAjaW5jbHVkZSAiSlNUZXN0RE9NSklULmgiCiAKKyNpbmNsdWRlICJET01KSVRB
YnN0cmFjdEhlYXBSZXBvc2l0b3J5LmgiCisjaW5jbHVkZSAiRE9NSklUQ2hlY2tET00uaCIKKyNp
bmNsdWRlICJET01KSVRJRExDb252ZXJ0LmgiCisjaW5jbHVkZSAiRE9NSklUSURMVHlwZS5oIgor
I2luY2x1ZGUgIkRPTUpJVElETFR5cGVGaWx0ZXIuaCIKKyNpbmNsdWRlICJFeGNlcHRpb25Db2Rl
LmgiCiAjaW5jbHVkZSAiSlNCeXRlU3RyaW5nLmgiCiAjaW5jbHVkZSAiSlNET01CaW5kaW5nLmgi
CiAjaW5jbHVkZSAiSlNET01Db25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUgIkpTRE9NQ29udmVydC5o
IgorI2luY2x1ZGUgPGludGVycHJldGVyL0ZyYW1lVHJhY2Vycy5oPgorI2luY2x1ZGUgPHJ1bnRp
bWUvRXJyb3IuaD4KICNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+CiAjaW5jbHVkZSA8d3RmL05ldmVy
RGVzdHJveWVkLmg+CiAKQEAgLTMyLDYgKzQwLDExIEBAIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorLy8gRnVuY3Rpb25zCisKK0pTQzo6RW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RET01KSVRQcm90b3R5cGVGdW5jdGlvbkdldEF0dHJpYnV0
ZShKU0M6OkV4ZWNTdGF0ZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHVu
c2FmZUpzVGVzdERPTUpJVFByb3RvdHlwZUZ1bmN0aW9uR2V0QXR0cmlidXRlKEpTQzo6RXhlY1N0
YXRlKiwgSlNUZXN0RE9NSklUKiwgRE9NSklUOjpJRExKU0FyZ3VtZW50VHlwZTxJRExET01TdHJp
bmc+KTsKKwogLy8gQXR0cmlidXRlcwogCiBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdERPTUpJ
VEFueUF0dHIoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3Bl
cnR5TmFtZSk7CkBAIC03Miw2ICs4NSw3IEBAIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0RE9N
SklUTm9kZU51bGxhYmxlQXR0cihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTCiBKU0M6
OkVuY29kZWRKU1ZhbHVlIGpzVGVzdERPTUpJVENvbnN0cnVjdG9yKEpTQzo6RXhlY1N0YXRlKiwg
SlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwogYm9vbCBzZXRKU1Rlc3RE
T01KSVRDb25zdHJ1Y3RvcihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpT
Qzo6RW5jb2RlZEpTVmFsdWUpOwogCitzdGF0aWMgY29uc3QgSlNDOjpET01KSVQ6OlNpZ25hdHVy
ZSBET01KSVRTaWduYXR1cmVGb3JUZXN0RE9NSklUR2V0QXR0cmlidXRlKCh1aW50cHRyX3QpdW5z
YWZlSnNUZXN0RE9NSklUUHJvdG90eXBlRnVuY3Rpb25HZXRBdHRyaWJ1dGUsIERPTUpJVDo6Y2hl
Y2tET008VGVzdERPTUpJVD4sIEpTVGVzdERPTUpJVDo6aW5mbygpLCBKU0M6OkRPTUpJVDo6RWZm
ZWN0Ojpmb3JSZWFkKERPTUpJVDo6QWJzdHJhY3RIZWFwUmVwb3NpdG9yeTo6RE9NKSwgRE9NSklU
OjpJRExSZXN1bHRUeXBlRmlsdGVyPElETE51bGxhYmxlPElETERPTVN0cmluZz4+Ojp2YWx1ZSwg
RE9NSklUOjpJRExBcmd1bWVudFR5cGVGaWx0ZXI8SURMRE9NU3RyaW5nPjo6dmFsdWUpOwogY2xh
c3MgSlNUZXN0RE9NSklUUHJvdG90eXBlIDogcHVibGljIEpTQzo6SlNOb25GaW5hbE9iamVjdCB7
CiBwdWJsaWM6CiAgICAgdXNpbmcgQmFzZSA9IEpTQzo6SlNOb25GaW5hbE9iamVjdDsKQEAgLTE1
Myw2ICsxNjcsNyBAQCBzdGF0aWMgY29uc3QgSGFzaFRhYmxlVmFsdWUgSlNUZXN0RE9NSklUUHJv
dG90eXBlVGFibGVWYWx1ZXNbXSA9CiAgICAgeyAiYnl0ZVN0cmluZ051bGxhYmxlQXR0ciIsIFJl
YWRPbmx5IHwgQ3VzdG9tQWNjZXNzb3IgfCBET01KSVRBdHRyaWJ1dGUsIE5vSW50cmluc2ljLCB7
IChpbnRwdHJfdClzdGF0aWNfY2FzdDxET01KSVRHZXR0ZXJTZXR0ZXJHZW5lcmF0b3I+KGRvbUpJ
VEdldHRlclNldHRlckZvclRlc3RET01KSVRCeXRlU3RyaW5nTnVsbGFibGVBdHRyKSwgKGludHB0
cl90KSAoMCkgfSB9LAogICAgIHsgInVzdlN0cmluZ051bGxhYmxlQXR0ciIsIFJlYWRPbmx5IHwg
Q3VzdG9tQWNjZXNzb3IgfCBET01KSVRBdHRyaWJ1dGUsIE5vSW50cmluc2ljLCB7IChpbnRwdHJf
dClzdGF0aWNfY2FzdDxET01KSVRHZXR0ZXJTZXR0ZXJHZW5lcmF0b3I+KGRvbUpJVEdldHRlclNl
dHRlckZvclRlc3RET01KSVRVc3ZTdHJpbmdOdWxsYWJsZUF0dHIpLCAoaW50cHRyX3QpICgwKSB9
IH0sCiAgICAgeyAibm9kZU51bGxhYmxlQXR0ciIsIFJlYWRPbmx5IHwgQ3VzdG9tQWNjZXNzb3Ig
fCBET01KSVRBdHRyaWJ1dGUsIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxE
T01KSVRHZXR0ZXJTZXR0ZXJHZW5lcmF0b3I+KGRvbUpJVEdldHRlclNldHRlckZvclRlc3RET01K
SVROb2RlTnVsbGFibGVBdHRyKSwgKGludHB0cl90KSAoMCkgfSB9LAorICAgIHsgImdldEF0dHJp
YnV0ZSIsIEpTQzo6RnVuY3Rpb24gfCBET01KSVRGdW5jdGlvbiwgTm9JbnRyaW5zaWMsIHsgKGlu
dHB0cl90KXN0YXRpY19jYXN0PE5hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RET01KSVRQcm90b3R5cGVG
dW5jdGlvbkdldEF0dHJpYnV0ZSksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8Y29uc3QgSlNDOjpE
T01KSVQ6OlNpZ25hdHVyZSo+KCZET01KSVRTaWduYXR1cmVGb3JUZXN0RE9NSklUR2V0QXR0cmli
dXRlKSB9IH0sCiB9OwogCiBjb25zdCBDbGFzc0luZm8gSlNUZXN0RE9NSklUUHJvdG90eXBlOjpz
X2luZm8gPSB7ICJUZXN0RE9NSklUUHJvdG90eXBlIiwgJkJhc2U6OnNfaW5mbywgMCwgQ1JFQVRF
X01FVEhPRF9UQUJMRShKU1Rlc3RET01KSVRQcm90b3R5cGUpIH07CkBAIC0xODUsNiArMjAwLDEx
IEBAIHRlbXBsYXRlPD4gaW5saW5lIEpTVGVzdERPTUpJVCogQmluZGluZ0NhbGxlcjxKU1Rlc3RE
T01KSVQ+OjpjYXN0Rm9yQXR0cmlidXRlKEV4CiAgICAgcmV0dXJuIGpzRHluYW1pY0Rvd25jYXN0
PEpTVGVzdERPTUpJVCo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKIH0KIAordGVtcGxh
dGU8PiBpbmxpbmUgSlNUZXN0RE9NSklUKiBCaW5kaW5nQ2FsbGVyPEpTVGVzdERPTUpJVD46OmNh
c3RGb3JPcGVyYXRpb24oRXhlY1N0YXRlJiBzdGF0ZSkKK3sKKyAgICByZXR1cm4ganNEeW5hbWlj
RG93bmNhc3Q8SlNUZXN0RE9NSklUKj4oc3RhdGUudGhpc1ZhbHVlKCkpOworfQorCiBzdGF0aWMg
aW5saW5lIEpTVmFsdWUganNUZXN0RE9NSklUQW55QXR0ckdldHRlcihFeGVjU3RhdGUmLCBKU1Rl
c3RET01KSVQmLCBUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKTsKIAogRW5jb2RlZEpTVmFsdWUganNU
ZXN0RE9NSklUQW55QXR0cihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFs
dWUsIFByb3BlcnR5TmFtZSkKQEAgLTIwMiw3ICsyMjIsNyBAQCBzdGF0aWMgaW5saW5lIEpTVmFs
dWUganNUZXN0RE9NSklUQW55QXR0ckdldHRlcihFeGVjU3RhdGUmIHN0YXRlLCBKU1Rlc3RET01K
SVQmCiB9CiAKIFRlc3RET01KSVRBbnlBdHRyRE9NSklUOjpUZXN0RE9NSklUQW55QXR0ckRPTUpJ
VCgpCi0gICAgOiBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVyKGpzVGVzdERPTUpJVEFueUF0dHIs
IG51bGxwdHIsIEpTVGVzdERPTUpJVDo6aW5mbygpLCBKU0M6OlNwZWNIZWFwVG9wKQorICAgIDog
SlNDOjpET01KSVQ6OkdldHRlclNldHRlcihqc1Rlc3RET01KSVRBbnlBdHRyLCBudWxscHRyLCBK
U1Rlc3RET01KSVQ6OmluZm8oKSwgRE9NSklUOjpJRExSZXN1bHRUeXBlRmlsdGVyPElETEFueT46
OnZhbHVlKQogewogfQogCkBAIC0yMjksNyArMjQ5LDcgQEAgc3RhdGljIGlubGluZSBKU1ZhbHVl
IGpzVGVzdERPTUpJVEJvb2xlYW5BdHRyR2V0dGVyKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVGVzdERP
TUoKIH0KIAogVGVzdERPTUpJVEJvb2xlYW5BdHRyRE9NSklUOjpUZXN0RE9NSklUQm9vbGVhbkF0
dHJET01KSVQoKQotICAgIDogSlNDOjpET01KSVQ6OkdldHRlclNldHRlcihqc1Rlc3RET01KSVRC
b29sZWFuQXR0ciwgbnVsbHB0ciwgSlNUZXN0RE9NSklUOjppbmZvKCksIEpTQzo6U3BlY0Jvb2xl
YW4pCisgICAgOiBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVyKGpzVGVzdERPTUpJVEJvb2xlYW5B
dHRyLCBudWxscHRyLCBKU1Rlc3RET01KSVQ6OmluZm8oKSwgRE9NSklUOjpJRExSZXN1bHRUeXBl
RmlsdGVyPElETEJvb2xlYW4+Ojp2YWx1ZSkKIHsKIH0KIApAQCAtMjU2LDcgKzI3Niw3IEBAIHN0
YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RET01KSVRCeXRlQXR0ckdldHRlcihFeGVjU3RhdGUm
IHN0YXRlLCBKU1Rlc3RET01KSVQmCiB9CiAKIFRlc3RET01KSVRCeXRlQXR0ckRPTUpJVDo6VGVz
dERPTUpJVEJ5dGVBdHRyRE9NSklUKCkKLSAgICA6IEpTQzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIo
anNUZXN0RE9NSklUQnl0ZUF0dHIsIG51bGxwdHIsIEpTVGVzdERPTUpJVDo6aW5mbygpLCBKU0M6
OlNwZWNJbnQzMk9ubHkpCisgICAgOiBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVyKGpzVGVzdERP
TUpJVEJ5dGVBdHRyLCBudWxscHRyLCBKU1Rlc3RET01KSVQ6OmluZm8oKSwgRE9NSklUOjpJRExS
ZXN1bHRUeXBlRmlsdGVyPElETEJ5dGU+Ojp2YWx1ZSkKIHsKIH0KIApAQCAtMjgzLDcgKzMwMyw3
IEBAIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RET01KSVRPY3RldEF0dHJHZXR0ZXIoRXhl
Y1N0YXRlJiBzdGF0ZSwgSlNUZXN0RE9NSklUCiB9CiAKIFRlc3RET01KSVRPY3RldEF0dHJET01K
SVQ6OlRlc3RET01KSVRPY3RldEF0dHJET01KSVQoKQotICAgIDogSlNDOjpET01KSVQ6OkdldHRl
clNldHRlcihqc1Rlc3RET01KSVRPY3RldEF0dHIsIG51bGxwdHIsIEpTVGVzdERPTUpJVDo6aW5m
bygpLCBKU0M6OlNwZWNJbnQzMk9ubHkpCisgICAgOiBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVy
KGpzVGVzdERPTUpJVE9jdGV0QXR0ciwgbnVsbHB0ciwgSlNUZXN0RE9NSklUOjppbmZvKCksIERP
TUpJVDo6SURMUmVzdWx0VHlwZUZpbHRlcjxJRExPY3RldD46OnZhbHVlKQogewogfQogCkBAIC0z
MTAsNyArMzMwLDcgQEAgc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdERPTUpJVFNob3J0QXR0
ckdldHRlcihFeGVjU3RhdGUmIHN0YXRlLCBKU1Rlc3RET01KSVQKIH0KIAogVGVzdERPTUpJVFNo
b3J0QXR0ckRPTUpJVDo6VGVzdERPTUpJVFNob3J0QXR0ckRPTUpJVCgpCi0gICAgOiBKU0M6OkRP
TUpJVDo6R2V0dGVyU2V0dGVyKGpzVGVzdERPTUpJVFNob3J0QXR0ciwgbnVsbHB0ciwgSlNUZXN0
RE9NSklUOjppbmZvKCksIEpTQzo6U3BlY0ludDMyT25seSkKKyAgICA6IEpTQzo6RE9NSklUOjpH
ZXR0ZXJTZXR0ZXIoanNUZXN0RE9NSklUU2hvcnRBdHRyLCBudWxscHRyLCBKU1Rlc3RET01KSVQ6
OmluZm8oKSwgRE9NSklUOjpJRExSZXN1bHRUeXBlRmlsdGVyPElETFNob3J0Pjo6dmFsdWUpCiB7
CiB9CiAKQEAgLTMzNyw3ICszNTcsNyBAQCBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0RE9N
SklUVW5zaWduZWRTaG9ydEF0dHJHZXR0ZXIoRXhlY1N0YXRlJiBzdGF0ZSwgSlNUZQogfQogCiBU
ZXN0RE9NSklUVW5zaWduZWRTaG9ydEF0dHJET01KSVQ6OlRlc3RET01KSVRVbnNpZ25lZFNob3J0
QXR0ckRPTUpJVCgpCi0gICAgOiBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVyKGpzVGVzdERPTUpJ
VFVuc2lnbmVkU2hvcnRBdHRyLCBudWxscHRyLCBKU1Rlc3RET01KSVQ6OmluZm8oKSwgSlNDOjpT
cGVjSW50MzJPbmx5KQorICAgIDogSlNDOjpET01KSVQ6OkdldHRlclNldHRlcihqc1Rlc3RET01K
SVRVbnNpZ25lZFNob3J0QXR0ciwgbnVsbHB0ciwgSlNUZXN0RE9NSklUOjppbmZvKCksIERPTUpJ
VDo6SURMUmVzdWx0VHlwZUZpbHRlcjxJRExVbnNpZ25lZFNob3J0Pjo6dmFsdWUpCiB7CiB9CiAK
QEAgLTM2NCw3ICszODQsNyBAQCBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0RE9NSklUTG9u
Z0F0dHJHZXR0ZXIoRXhlY1N0YXRlJiBzdGF0ZSwgSlNUZXN0RE9NSklUJgogfQogCiBUZXN0RE9N
SklUTG9uZ0F0dHJET01KSVQ6OlRlc3RET01KSVRMb25nQXR0ckRPTUpJVCgpCi0gICAgOiBKU0M6
OkRPTUpJVDo6R2V0dGVyU2V0dGVyKGpzVGVzdERPTUpJVExvbmdBdHRyLCBudWxscHRyLCBKU1Rl
c3RET01KSVQ6OmluZm8oKSwgSlNDOjpTcGVjSW50MzJPbmx5KQorICAgIDogSlNDOjpET01KSVQ6
OkdldHRlclNldHRlcihqc1Rlc3RET01KSVRMb25nQXR0ciwgbnVsbHB0ciwgSlNUZXN0RE9NSklU
OjppbmZvKCksIERPTUpJVDo6SURMUmVzdWx0VHlwZUZpbHRlcjxJRExMb25nPjo6dmFsdWUpCiB7
CiB9CiAKQEAgLTM5MSw3ICs0MTEsNyBAQCBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0RE9N
SklUVW5zaWduZWRMb25nQXR0ckdldHRlcihFeGVjU3RhdGUmIHN0YXRlLCBKU1RlcwogfQogCiBU
ZXN0RE9NSklUVW5zaWduZWRMb25nQXR0ckRPTUpJVDo6VGVzdERPTUpJVFVuc2lnbmVkTG9uZ0F0
dHJET01KSVQoKQotICAgIDogSlNDOjpET01KSVQ6OkdldHRlclNldHRlcihqc1Rlc3RET01KSVRV
bnNpZ25lZExvbmdBdHRyLCBudWxscHRyLCBKU1Rlc3RET01KSVQ6OmluZm8oKSwgSlNDOjpTcGVj
Qnl0ZWNvZGVOdW1iZXIpCisgICAgOiBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVyKGpzVGVzdERP
TUpJVFVuc2lnbmVkTG9uZ0F0dHIsIG51bGxwdHIsIEpTVGVzdERPTUpJVDo6aW5mbygpLCBET01K
SVQ6OklETFJlc3VsdFR5cGVGaWx0ZXI8SURMVW5zaWduZWRMb25nPjo6dmFsdWUpCiB7CiB9CiAK
QEAgLTQxOCw3ICs0MzgsNyBAQCBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0RE9NSklUTG9u
Z0xvbmdBdHRyR2V0dGVyKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVGVzdERPTQogfQogCiBUZXN0RE9N
SklUTG9uZ0xvbmdBdHRyRE9NSklUOjpUZXN0RE9NSklUTG9uZ0xvbmdBdHRyRE9NSklUKCkKLSAg
ICA6IEpTQzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIoanNUZXN0RE9NSklUTG9uZ0xvbmdBdHRyLCBu
dWxscHRyLCBKU1Rlc3RET01KSVQ6OmluZm8oKSwgSlNDOjpTcGVjQnl0ZWNvZGVOdW1iZXIpCisg
ICAgOiBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVyKGpzVGVzdERPTUpJVExvbmdMb25nQXR0ciwg
bnVsbHB0ciwgSlNUZXN0RE9NSklUOjppbmZvKCksIERPTUpJVDo6SURMUmVzdWx0VHlwZUZpbHRl
cjxJRExMb25nTG9uZz46OnZhbHVlKQogewogfQogCkBAIC00NDUsNyArNDY1LDcgQEAgc3RhdGlj
IGlubGluZSBKU1ZhbHVlIGpzVGVzdERPTUpJVFVuc2lnbmVkTG9uZ0xvbmdBdHRyR2V0dGVyKEV4
ZWNTdGF0ZSYgc3RhdGUsIEoKIH0KIAogVGVzdERPTUpJVFVuc2lnbmVkTG9uZ0xvbmdBdHRyRE9N
SklUOjpUZXN0RE9NSklUVW5zaWduZWRMb25nTG9uZ0F0dHJET01KSVQoKQotICAgIDogSlNDOjpE
T01KSVQ6OkdldHRlclNldHRlcihqc1Rlc3RET01KSVRVbnNpZ25lZExvbmdMb25nQXR0ciwgbnVs
bHB0ciwgSlNUZXN0RE9NSklUOjppbmZvKCksIEpTQzo6U3BlY0J5dGVjb2RlTnVtYmVyKQorICAg
IDogSlNDOjpET01KSVQ6OkdldHRlclNldHRlcihqc1Rlc3RET01KSVRVbnNpZ25lZExvbmdMb25n
QXR0ciwgbnVsbHB0ciwgSlNUZXN0RE9NSklUOjppbmZvKCksIERPTUpJVDo6SURMUmVzdWx0VHlw
ZUZpbHRlcjxJRExVbnNpZ25lZExvbmdMb25nPjo6dmFsdWUpCiB7CiB9CiAKQEAgLTQ3Miw3ICs0
OTIsNyBAQCBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0RE9NSklURmxvYXRBdHRyR2V0dGVy
KEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVGVzdERPTUpJVAogfQogCiBUZXN0RE9NSklURmxvYXRBdHRy
RE9NSklUOjpUZXN0RE9NSklURmxvYXRBdHRyRE9NSklUKCkKLSAgICA6IEpTQzo6RE9NSklUOjpH
ZXR0ZXJTZXR0ZXIoanNUZXN0RE9NSklURmxvYXRBdHRyLCBudWxscHRyLCBKU1Rlc3RET01KSVQ6
OmluZm8oKSwgSlNDOjpTcGVjQnl0ZWNvZGVOdW1iZXIpCisgICAgOiBKU0M6OkRPTUpJVDo6R2V0
dGVyU2V0dGVyKGpzVGVzdERPTUpJVEZsb2F0QXR0ciwgbnVsbHB0ciwgSlNUZXN0RE9NSklUOjpp
bmZvKCksIERPTUpJVDo6SURMUmVzdWx0VHlwZUZpbHRlcjxJRExGbG9hdD46OnZhbHVlKQogewog
fQogCkBAIC00OTksNyArNTE5LDcgQEAgc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdERPTUpJ
VFVucmVzdHJpY3RlZEZsb2F0QXR0ckdldHRlcihFeGVjU3RhdGUmIHN0YXRlLAogfQogCiBUZXN0
RE9NSklUVW5yZXN0cmljdGVkRmxvYXRBdHRyRE9NSklUOjpUZXN0RE9NSklUVW5yZXN0cmljdGVk
RmxvYXRBdHRyRE9NSklUKCkKLSAgICA6IEpTQzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIoanNUZXN0
RE9NSklUVW5yZXN0cmljdGVkRmxvYXRBdHRyLCBudWxscHRyLCBKU1Rlc3RET01KSVQ6OmluZm8o
KSwgSlNDOjpTcGVjQnl0ZWNvZGVOdW1iZXIpCisgICAgOiBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0
dGVyKGpzVGVzdERPTUpJVFVucmVzdHJpY3RlZEZsb2F0QXR0ciwgbnVsbHB0ciwgSlNUZXN0RE9N
SklUOjppbmZvKCksIERPTUpJVDo6SURMUmVzdWx0VHlwZUZpbHRlcjxJRExVbnJlc3RyaWN0ZWRG
bG9hdD46OnZhbHVlKQogewogfQogCkBAIC01MjYsNyArNTQ2LDcgQEAgc3RhdGljIGlubGluZSBK
U1ZhbHVlIGpzVGVzdERPTUpJVERvdWJsZUF0dHJHZXR0ZXIoRXhlY1N0YXRlJiBzdGF0ZSwgSlNU
ZXN0RE9NSkkKIH0KIAogVGVzdERPTUpJVERvdWJsZUF0dHJET01KSVQ6OlRlc3RET01KSVREb3Vi
bGVBdHRyRE9NSklUKCkKLSAgICA6IEpTQzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIoanNUZXN0RE9N
SklURG91YmxlQXR0ciwgbnVsbHB0ciwgSlNUZXN0RE9NSklUOjppbmZvKCksIEpTQzo6U3BlY0J5
dGVjb2RlTnVtYmVyKQorICAgIDogSlNDOjpET01KSVQ6OkdldHRlclNldHRlcihqc1Rlc3RET01K
SVREb3VibGVBdHRyLCBudWxscHRyLCBKU1Rlc3RET01KSVQ6OmluZm8oKSwgRE9NSklUOjpJRExS
ZXN1bHRUeXBlRmlsdGVyPElETERvdWJsZT46OnZhbHVlKQogewogfQogCkBAIC01NTMsNyArNTcz
LDcgQEAgc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdERPTUpJVFVucmVzdHJpY3RlZERvdWJs
ZUF0dHJHZXR0ZXIoRXhlY1N0YXRlJiBzdGF0ZSwKIH0KIAogVGVzdERPTUpJVFVucmVzdHJpY3Rl
ZERvdWJsZUF0dHJET01KSVQ6OlRlc3RET01KSVRVbnJlc3RyaWN0ZWREb3VibGVBdHRyRE9NSklU
KCkKLSAgICA6IEpTQzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIoanNUZXN0RE9NSklUVW5yZXN0cmlj
dGVkRG91YmxlQXR0ciwgbnVsbHB0ciwgSlNUZXN0RE9NSklUOjppbmZvKCksIEpTQzo6U3BlY0J5
dGVjb2RlTnVtYmVyKQorICAgIDogSlNDOjpET01KSVQ6OkdldHRlclNldHRlcihqc1Rlc3RET01K
SVRVbnJlc3RyaWN0ZWREb3VibGVBdHRyLCBudWxscHRyLCBKU1Rlc3RET01KSVQ6OmluZm8oKSwg
RE9NSklUOjpJRExSZXN1bHRUeXBlRmlsdGVyPElETFVucmVzdHJpY3RlZERvdWJsZT46OnZhbHVl
KQogewogfQogCkBAIC01ODAsNyArNjAwLDcgQEAgc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVz
dERPTUpJVERvbVN0cmluZ0F0dHJHZXR0ZXIoRXhlY1N0YXRlJiBzdGF0ZSwgSlNUZXN0RE8KIH0K
IAogVGVzdERPTUpJVERvbVN0cmluZ0F0dHJET01KSVQ6OlRlc3RET01KSVREb21TdHJpbmdBdHRy
RE9NSklUKCkKLSAgICA6IEpTQzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIoanNUZXN0RE9NSklURG9t
U3RyaW5nQXR0ciwgbnVsbHB0ciwgSlNUZXN0RE9NSklUOjppbmZvKCksIEpTQzo6U3BlY1N0cmlu
ZykKKyAgICA6IEpTQzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIoanNUZXN0RE9NSklURG9tU3RyaW5n
QXR0ciwgbnVsbHB0ciwgSlNUZXN0RE9NSklUOjppbmZvKCksIERPTUpJVDo6SURMUmVzdWx0VHlw
ZUZpbHRlcjxJRExET01TdHJpbmc+Ojp2YWx1ZSkKIHsKIH0KIApAQCAtNjA3LDcgKzYyNyw3IEBA
IHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RET01KSVRCeXRlU3RyaW5nQXR0ckdldHRlcihF
eGVjU3RhdGUmIHN0YXRlLCBKU1Rlc3RECiB9CiAKIFRlc3RET01KSVRCeXRlU3RyaW5nQXR0ckRP
TUpJVDo6VGVzdERPTUpJVEJ5dGVTdHJpbmdBdHRyRE9NSklUKCkKLSAgICA6IEpTQzo6RE9NSklU
OjpHZXR0ZXJTZXR0ZXIoanNUZXN0RE9NSklUQnl0ZVN0cmluZ0F0dHIsIG51bGxwdHIsIEpTVGVz
dERPTUpJVDo6aW5mbygpLCBKU0M6OlNwZWNTdHJpbmcpCisgICAgOiBKU0M6OkRPTUpJVDo6R2V0
dGVyU2V0dGVyKGpzVGVzdERPTUpJVEJ5dGVTdHJpbmdBdHRyLCBudWxscHRyLCBKU1Rlc3RET01K
SVQ6OmluZm8oKSwgRE9NSklUOjpJRExSZXN1bHRUeXBlRmlsdGVyPElETEJ5dGVTdHJpbmc+Ojp2
YWx1ZSkKIHsKIH0KIApAQCAtNjM0LDcgKzY1NCw3IEBAIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBq
c1Rlc3RET01KSVRVc3ZTdHJpbmdBdHRyR2V0dGVyKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVGVzdERP
CiB9CiAKIFRlc3RET01KSVRVc3ZTdHJpbmdBdHRyRE9NSklUOjpUZXN0RE9NSklUVXN2U3RyaW5n
QXR0ckRPTUpJVCgpCi0gICAgOiBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVyKGpzVGVzdERPTUpJ
VFVzdlN0cmluZ0F0dHIsIG51bGxwdHIsIEpTVGVzdERPTUpJVDo6aW5mbygpLCBKU0M6OlNwZWNT
dHJpbmcpCisgICAgOiBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVyKGpzVGVzdERPTUpJVFVzdlN0
cmluZ0F0dHIsIG51bGxwdHIsIEpTVGVzdERPTUpJVDo6aW5mbygpLCBET01KSVQ6OklETFJlc3Vs
dFR5cGVGaWx0ZXI8SURMVVNWU3RyaW5nPjo6dmFsdWUpCiB7CiB9CiAKQEAgLTY2MSw3ICs2ODEs
NyBAQCBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0RE9NSklUTm9kZUF0dHJHZXR0ZXIoRXhl
Y1N0YXRlJiBzdGF0ZSwgSlNUZXN0RE9NSklUJgogfQogCiBUZXN0RE9NSklUTm9kZUF0dHJET01K
SVQ6OlRlc3RET01KSVROb2RlQXR0ckRPTUpJVCgpCi0gICAgOiBKU0M6OkRPTUpJVDo6R2V0dGVy
U2V0dGVyKGpzVGVzdERPTUpJVE5vZGVBdHRyLCBudWxscHRyLCBKU1Rlc3RET01KSVQ6OmluZm8o
KSwgU3BlY0hlYXBUb3ApCisgICAgOiBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVyKGpzVGVzdERP
TUpJVE5vZGVBdHRyLCBudWxscHRyLCBKU1Rlc3RET01KSVQ6OmluZm8oKSwgRE9NSklUOjpJRExS
ZXN1bHRUeXBlRmlsdGVyPElETEludGVyZmFjZTxOb2RlPj46OnZhbHVlKQogewogfQogCkBAIC02
ODgsNyArNzA4LDcgQEAgc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdERPTUpJVEJvb2xlYW5O
dWxsYWJsZUF0dHJHZXR0ZXIoRXhlY1N0YXRlJiBzdGF0ZSwgSlMKIH0KIAogVGVzdERPTUpJVEJv
b2xlYW5OdWxsYWJsZUF0dHJET01KSVQ6OlRlc3RET01KSVRCb29sZWFuTnVsbGFibGVBdHRyRE9N
SklUKCkKLSAgICA6IEpTQzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIoanNUZXN0RE9NSklUQm9vbGVh
bk51bGxhYmxlQXR0ciwgbnVsbHB0ciwgSlNUZXN0RE9NSklUOjppbmZvKCksIChKU0M6OlNwZWNC
b29sZWFuIHwgSlNDOjpTcGVjT3RoZXIpKQorICAgIDogSlNDOjpET01KSVQ6OkdldHRlclNldHRl
cihqc1Rlc3RET01KSVRCb29sZWFuTnVsbGFibGVBdHRyLCBudWxscHRyLCBKU1Rlc3RET01KSVQ6
OmluZm8oKSwgRE9NSklUOjpJRExSZXN1bHRUeXBlRmlsdGVyPElETE51bGxhYmxlPElETEJvb2xl
YW4+Pjo6dmFsdWUpCiB7CiB9CiAKQEAgLTcxNSw3ICs3MzUsNyBAQCBzdGF0aWMgaW5saW5lIEpT
VmFsdWUganNUZXN0RE9NSklUQnl0ZU51bGxhYmxlQXR0ckdldHRlcihFeGVjU3RhdGUmIHN0YXRl
LCBKU1RlcwogfQogCiBUZXN0RE9NSklUQnl0ZU51bGxhYmxlQXR0ckRPTUpJVDo6VGVzdERPTUpJ
VEJ5dGVOdWxsYWJsZUF0dHJET01KSVQoKQotICAgIDogSlNDOjpET01KSVQ6OkdldHRlclNldHRl
cihqc1Rlc3RET01KSVRCeXRlTnVsbGFibGVBdHRyLCBudWxscHRyLCBKU1Rlc3RET01KSVQ6Omlu
Zm8oKSwgKEpTQzo6U3BlY0ludDMyT25seSB8IEpTQzo6U3BlY090aGVyKSkKKyAgICA6IEpTQzo6
RE9NSklUOjpHZXR0ZXJTZXR0ZXIoanNUZXN0RE9NSklUQnl0ZU51bGxhYmxlQXR0ciwgbnVsbHB0
ciwgSlNUZXN0RE9NSklUOjppbmZvKCksIERPTUpJVDo6SURMUmVzdWx0VHlwZUZpbHRlcjxJRExO
dWxsYWJsZTxJRExCeXRlPj46OnZhbHVlKQogewogfQogCkBAIC03NDIsNyArNzYyLDcgQEAgc3Rh
dGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdERPTUpJVE9jdGV0TnVsbGFibGVBdHRyR2V0dGVyKEV4
ZWNTdGF0ZSYgc3RhdGUsIEpTVGUKIH0KIAogVGVzdERPTUpJVE9jdGV0TnVsbGFibGVBdHRyRE9N
SklUOjpUZXN0RE9NSklUT2N0ZXROdWxsYWJsZUF0dHJET01KSVQoKQotICAgIDogSlNDOjpET01K
SVQ6OkdldHRlclNldHRlcihqc1Rlc3RET01KSVRPY3RldE51bGxhYmxlQXR0ciwgbnVsbHB0ciwg
SlNUZXN0RE9NSklUOjppbmZvKCksIChKU0M6OlNwZWNJbnQzMk9ubHkgfCBKU0M6OlNwZWNPdGhl
cikpCisgICAgOiBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVyKGpzVGVzdERPTUpJVE9jdGV0TnVs
bGFibGVBdHRyLCBudWxscHRyLCBKU1Rlc3RET01KSVQ6OmluZm8oKSwgRE9NSklUOjpJRExSZXN1
bHRUeXBlRmlsdGVyPElETE51bGxhYmxlPElETE9jdGV0Pj46OnZhbHVlKQogewogfQogCkBAIC03
NjksNyArNzg5LDcgQEAgc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdERPTUpJVFNob3J0TnVs
bGFibGVBdHRyR2V0dGVyKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVGUKIH0KIAogVGVzdERPTUpJVFNo
b3J0TnVsbGFibGVBdHRyRE9NSklUOjpUZXN0RE9NSklUU2hvcnROdWxsYWJsZUF0dHJET01KSVQo
KQotICAgIDogSlNDOjpET01KSVQ6OkdldHRlclNldHRlcihqc1Rlc3RET01KSVRTaG9ydE51bGxh
YmxlQXR0ciwgbnVsbHB0ciwgSlNUZXN0RE9NSklUOjppbmZvKCksIChKU0M6OlNwZWNJbnQzMk9u
bHkgfCBKU0M6OlNwZWNPdGhlcikpCisgICAgOiBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVyKGpz
VGVzdERPTUpJVFNob3J0TnVsbGFibGVBdHRyLCBudWxscHRyLCBKU1Rlc3RET01KSVQ6OmluZm8o
KSwgRE9NSklUOjpJRExSZXN1bHRUeXBlRmlsdGVyPElETE51bGxhYmxlPElETFNob3J0Pj46OnZh
bHVlKQogewogfQogCkBAIC03OTYsNyArODE2LDcgQEAgc3RhdGljIGlubGluZSBKU1ZhbHVlIGpz
VGVzdERPTUpJVFVuc2lnbmVkU2hvcnROdWxsYWJsZUF0dHJHZXR0ZXIoRXhlY1N0YXRlJiBzdGEK
IH0KIAogVGVzdERPTUpJVFVuc2lnbmVkU2hvcnROdWxsYWJsZUF0dHJET01KSVQ6OlRlc3RET01K
SVRVbnNpZ25lZFNob3J0TnVsbGFibGVBdHRyRE9NSklUKCkKLSAgICA6IEpTQzo6RE9NSklUOjpH
ZXR0ZXJTZXR0ZXIoanNUZXN0RE9NSklUVW5zaWduZWRTaG9ydE51bGxhYmxlQXR0ciwgbnVsbHB0
ciwgSlNUZXN0RE9NSklUOjppbmZvKCksIChKU0M6OlNwZWNJbnQzMk9ubHkgfCBKU0M6OlNwZWNP
dGhlcikpCisgICAgOiBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVyKGpzVGVzdERPTUpJVFVuc2ln
bmVkU2hvcnROdWxsYWJsZUF0dHIsIG51bGxwdHIsIEpTVGVzdERPTUpJVDo6aW5mbygpLCBET01K
SVQ6OklETFJlc3VsdFR5cGVGaWx0ZXI8SURMTnVsbGFibGU8SURMVW5zaWduZWRTaG9ydD4+Ojp2
YWx1ZSkKIHsKIH0KIApAQCAtODIzLDcgKzg0Myw3IEBAIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBq
c1Rlc3RET01KSVRMb25nTnVsbGFibGVBdHRyR2V0dGVyKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVGVz
CiB9CiAKIFRlc3RET01KSVRMb25nTnVsbGFibGVBdHRyRE9NSklUOjpUZXN0RE9NSklUTG9uZ051
bGxhYmxlQXR0ckRPTUpJVCgpCi0gICAgOiBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVyKGpzVGVz
dERPTUpJVExvbmdOdWxsYWJsZUF0dHIsIG51bGxwdHIsIEpTVGVzdERPTUpJVDo6aW5mbygpLCAo
SlNDOjpTcGVjSW50MzJPbmx5IHwgSlNDOjpTcGVjT3RoZXIpKQorICAgIDogSlNDOjpET01KSVQ6
OkdldHRlclNldHRlcihqc1Rlc3RET01KSVRMb25nTnVsbGFibGVBdHRyLCBudWxscHRyLCBKU1Rl
c3RET01KSVQ6OmluZm8oKSwgRE9NSklUOjpJRExSZXN1bHRUeXBlRmlsdGVyPElETE51bGxhYmxl
PElETExvbmc+Pjo6dmFsdWUpCiB7CiB9CiAKQEAgLTg1MCw3ICs4NzAsNyBAQCBzdGF0aWMgaW5s
aW5lIEpTVmFsdWUganNUZXN0RE9NSklUVW5zaWduZWRMb25nTnVsbGFibGVBdHRyR2V0dGVyKEV4
ZWNTdGF0ZSYgc3RhdAogfQogCiBUZXN0RE9NSklUVW5zaWduZWRMb25nTnVsbGFibGVBdHRyRE9N
SklUOjpUZXN0RE9NSklUVW5zaWduZWRMb25nTnVsbGFibGVBdHRyRE9NSklUKCkKLSAgICA6IEpT
Qzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIoanNUZXN0RE9NSklUVW5zaWduZWRMb25nTnVsbGFibGVB
dHRyLCBudWxscHRyLCBKU1Rlc3RET01KSVQ6OmluZm8oKSwgKEpTQzo6U3BlY0J5dGVjb2RlTnVt
YmVyIHwgSlNDOjpTcGVjT3RoZXIpKQorICAgIDogSlNDOjpET01KSVQ6OkdldHRlclNldHRlcihq
c1Rlc3RET01KSVRVbnNpZ25lZExvbmdOdWxsYWJsZUF0dHIsIG51bGxwdHIsIEpTVGVzdERPTUpJ
VDo6aW5mbygpLCBET01KSVQ6OklETFJlc3VsdFR5cGVGaWx0ZXI8SURMTnVsbGFibGU8SURMVW5z
aWduZWRMb25nPj46OnZhbHVlKQogewogfQogCkBAIC04NzcsNyArODk3LDcgQEAgc3RhdGljIGlu
bGluZSBKU1ZhbHVlIGpzVGVzdERPTUpJVExvbmdMb25nTnVsbGFibGVBdHRyR2V0dGVyKEV4ZWNT
dGF0ZSYgc3RhdGUsIEoKIH0KIAogVGVzdERPTUpJVExvbmdMb25nTnVsbGFibGVBdHRyRE9NSklU
OjpUZXN0RE9NSklUTG9uZ0xvbmdOdWxsYWJsZUF0dHJET01KSVQoKQotICAgIDogSlNDOjpET01K
SVQ6OkdldHRlclNldHRlcihqc1Rlc3RET01KSVRMb25nTG9uZ051bGxhYmxlQXR0ciwgbnVsbHB0
ciwgSlNUZXN0RE9NSklUOjppbmZvKCksIChKU0M6OlNwZWNCeXRlY29kZU51bWJlciB8IEpTQzo6
U3BlY090aGVyKSkKKyAgICA6IEpTQzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIoanNUZXN0RE9NSklU
TG9uZ0xvbmdOdWxsYWJsZUF0dHIsIG51bGxwdHIsIEpTVGVzdERPTUpJVDo6aW5mbygpLCBET01K
SVQ6OklETFJlc3VsdFR5cGVGaWx0ZXI8SURMTnVsbGFibGU8SURMTG9uZ0xvbmc+Pjo6dmFsdWUp
CiB7CiB9CiAKQEAgLTkwNCw3ICs5MjQsNyBAQCBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0
RE9NSklUVW5zaWduZWRMb25nTG9uZ051bGxhYmxlQXR0ckdldHRlcihFeGVjU3RhdGUmCiB9CiAK
IFRlc3RET01KSVRVbnNpZ25lZExvbmdMb25nTnVsbGFibGVBdHRyRE9NSklUOjpUZXN0RE9NSklU
VW5zaWduZWRMb25nTG9uZ051bGxhYmxlQXR0ckRPTUpJVCgpCi0gICAgOiBKU0M6OkRPTUpJVDo6
R2V0dGVyU2V0dGVyKGpzVGVzdERPTUpJVFVuc2lnbmVkTG9uZ0xvbmdOdWxsYWJsZUF0dHIsIG51
bGxwdHIsIEpTVGVzdERPTUpJVDo6aW5mbygpLCAoSlNDOjpTcGVjQnl0ZWNvZGVOdW1iZXIgfCBK
U0M6OlNwZWNPdGhlcikpCisgICAgOiBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVyKGpzVGVzdERP
TUpJVFVuc2lnbmVkTG9uZ0xvbmdOdWxsYWJsZUF0dHIsIG51bGxwdHIsIEpTVGVzdERPTUpJVDo6
aW5mbygpLCBET01KSVQ6OklETFJlc3VsdFR5cGVGaWx0ZXI8SURMTnVsbGFibGU8SURMVW5zaWdu
ZWRMb25nTG9uZz4+Ojp2YWx1ZSkKIHsKIH0KIApAQCAtOTMxLDcgKzk1MSw3IEBAIHN0YXRpYyBp
bmxpbmUgSlNWYWx1ZSBqc1Rlc3RET01KSVRGbG9hdE51bGxhYmxlQXR0ckdldHRlcihFeGVjU3Rh
dGUmIHN0YXRlLCBKU1RlCiB9CiAKIFRlc3RET01KSVRGbG9hdE51bGxhYmxlQXR0ckRPTUpJVDo6
VGVzdERPTUpJVEZsb2F0TnVsbGFibGVBdHRyRE9NSklUKCkKLSAgICA6IEpTQzo6RE9NSklUOjpH
ZXR0ZXJTZXR0ZXIoanNUZXN0RE9NSklURmxvYXROdWxsYWJsZUF0dHIsIG51bGxwdHIsIEpTVGVz
dERPTUpJVDo6aW5mbygpLCAoSlNDOjpTcGVjQnl0ZWNvZGVOdW1iZXIgfCBKU0M6OlNwZWNPdGhl
cikpCisgICAgOiBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVyKGpzVGVzdERPTUpJVEZsb2F0TnVs
bGFibGVBdHRyLCBudWxscHRyLCBKU1Rlc3RET01KSVQ6OmluZm8oKSwgRE9NSklUOjpJRExSZXN1
bHRUeXBlRmlsdGVyPElETE51bGxhYmxlPElETEZsb2F0Pj46OnZhbHVlKQogewogfQogCkBAIC05
NTgsNyArOTc4LDcgQEAgc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdERPTUpJVFVucmVzdHJp
Y3RlZEZsb2F0TnVsbGFibGVBdHRyR2V0dGVyKEV4ZWNTdGF0ZSYKIH0KIAogVGVzdERPTUpJVFVu
cmVzdHJpY3RlZEZsb2F0TnVsbGFibGVBdHRyRE9NSklUOjpUZXN0RE9NSklUVW5yZXN0cmljdGVk
RmxvYXROdWxsYWJsZUF0dHJET01KSVQoKQotICAgIDogSlNDOjpET01KSVQ6OkdldHRlclNldHRl
cihqc1Rlc3RET01KSVRVbnJlc3RyaWN0ZWRGbG9hdE51bGxhYmxlQXR0ciwgbnVsbHB0ciwgSlNU
ZXN0RE9NSklUOjppbmZvKCksIChKU0M6OlNwZWNCeXRlY29kZU51bWJlciB8IEpTQzo6U3BlY090
aGVyKSkKKyAgICA6IEpTQzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIoanNUZXN0RE9NSklUVW5yZXN0
cmljdGVkRmxvYXROdWxsYWJsZUF0dHIsIG51bGxwdHIsIEpTVGVzdERPTUpJVDo6aW5mbygpLCBE
T01KSVQ6OklETFJlc3VsdFR5cGVGaWx0ZXI8SURMTnVsbGFibGU8SURMVW5yZXN0cmljdGVkRmxv
YXQ+Pjo6dmFsdWUpCiB7CiB9CiAKQEAgLTk4NSw3ICsxMDA1LDcgQEAgc3RhdGljIGlubGluZSBK
U1ZhbHVlIGpzVGVzdERPTUpJVERvdWJsZU51bGxhYmxlQXR0ckdldHRlcihFeGVjU3RhdGUmIHN0
YXRlLCBKU1QKIH0KIAogVGVzdERPTUpJVERvdWJsZU51bGxhYmxlQXR0ckRPTUpJVDo6VGVzdERP
TUpJVERvdWJsZU51bGxhYmxlQXR0ckRPTUpJVCgpCi0gICAgOiBKU0M6OkRPTUpJVDo6R2V0dGVy
U2V0dGVyKGpzVGVzdERPTUpJVERvdWJsZU51bGxhYmxlQXR0ciwgbnVsbHB0ciwgSlNUZXN0RE9N
SklUOjppbmZvKCksIChKU0M6OlNwZWNCeXRlY29kZU51bWJlciB8IEpTQzo6U3BlY090aGVyKSkK
KyAgICA6IEpTQzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIoanNUZXN0RE9NSklURG91YmxlTnVsbGFi
bGVBdHRyLCBudWxscHRyLCBKU1Rlc3RET01KSVQ6OmluZm8oKSwgRE9NSklUOjpJRExSZXN1bHRU
eXBlRmlsdGVyPElETE51bGxhYmxlPElETERvdWJsZT4+Ojp2YWx1ZSkKIHsKIH0KIApAQCAtMTAx
Miw3ICsxMDMyLDcgQEAgc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdERPTUpJVFVucmVzdHJp
Y3RlZERvdWJsZU51bGxhYmxlQXR0ckdldHRlcihFeGVjU3RhdGUKIH0KIAogVGVzdERPTUpJVFVu
cmVzdHJpY3RlZERvdWJsZU51bGxhYmxlQXR0ckRPTUpJVDo6VGVzdERPTUpJVFVucmVzdHJpY3Rl
ZERvdWJsZU51bGxhYmxlQXR0ckRPTUpJVCgpCi0gICAgOiBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0
dGVyKGpzVGVzdERPTUpJVFVucmVzdHJpY3RlZERvdWJsZU51bGxhYmxlQXR0ciwgbnVsbHB0ciwg
SlNUZXN0RE9NSklUOjppbmZvKCksIChKU0M6OlNwZWNCeXRlY29kZU51bWJlciB8IEpTQzo6U3Bl
Y090aGVyKSkKKyAgICA6IEpTQzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIoanNUZXN0RE9NSklUVW5y
ZXN0cmljdGVkRG91YmxlTnVsbGFibGVBdHRyLCBudWxscHRyLCBKU1Rlc3RET01KSVQ6OmluZm8o
KSwgRE9NSklUOjpJRExSZXN1bHRUeXBlRmlsdGVyPElETE51bGxhYmxlPElETFVucmVzdHJpY3Rl
ZERvdWJsZT4+Ojp2YWx1ZSkKIHsKIH0KIApAQCAtMTAzOSw3ICsxMDU5LDcgQEAgc3RhdGljIGlu
bGluZSBKU1ZhbHVlIGpzVGVzdERPTUpJVERvbVN0cmluZ051bGxhYmxlQXR0ckdldHRlcihFeGVj
U3RhdGUmIHN0YXRlLAogfQogCiBUZXN0RE9NSklURG9tU3RyaW5nTnVsbGFibGVBdHRyRE9NSklU
OjpUZXN0RE9NSklURG9tU3RyaW5nTnVsbGFibGVBdHRyRE9NSklUKCkKLSAgICA6IEpTQzo6RE9N
SklUOjpHZXR0ZXJTZXR0ZXIoanNUZXN0RE9NSklURG9tU3RyaW5nTnVsbGFibGVBdHRyLCBudWxs
cHRyLCBKU1Rlc3RET01KSVQ6OmluZm8oKSwgKEpTQzo6U3BlY1N0cmluZyB8IEpTQzo6U3BlY090
aGVyKSkKKyAgICA6IEpTQzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIoanNUZXN0RE9NSklURG9tU3Ry
aW5nTnVsbGFibGVBdHRyLCBudWxscHRyLCBKU1Rlc3RET01KSVQ6OmluZm8oKSwgRE9NSklUOjpJ
RExSZXN1bHRUeXBlRmlsdGVyPElETE51bGxhYmxlPElETERPTVN0cmluZz4+Ojp2YWx1ZSkKIHsK
IH0KIApAQCAtMTA2Niw3ICsxMDg2LDcgQEAgc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdERP
TUpJVEJ5dGVTdHJpbmdOdWxsYWJsZUF0dHJHZXR0ZXIoRXhlY1N0YXRlJiBzdGF0ZSwKIH0KIAog
VGVzdERPTUpJVEJ5dGVTdHJpbmdOdWxsYWJsZUF0dHJET01KSVQ6OlRlc3RET01KSVRCeXRlU3Ry
aW5nTnVsbGFibGVBdHRyRE9NSklUKCkKLSAgICA6IEpTQzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIo
anNUZXN0RE9NSklUQnl0ZVN0cmluZ051bGxhYmxlQXR0ciwgbnVsbHB0ciwgSlNUZXN0RE9NSklU
OjppbmZvKCksIChKU0M6OlNwZWNTdHJpbmcgfCBKU0M6OlNwZWNPdGhlcikpCisgICAgOiBKU0M6
OkRPTUpJVDo6R2V0dGVyU2V0dGVyKGpzVGVzdERPTUpJVEJ5dGVTdHJpbmdOdWxsYWJsZUF0dHIs
IG51bGxwdHIsIEpTVGVzdERPTUpJVDo6aW5mbygpLCBET01KSVQ6OklETFJlc3VsdFR5cGVGaWx0
ZXI8SURMTnVsbGFibGU8SURMQnl0ZVN0cmluZz4+Ojp2YWx1ZSkKIHsKIH0KIApAQCAtMTA5Myw3
ICsxMTEzLDcgQEAgc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdERPTUpJVFVzdlN0cmluZ051
bGxhYmxlQXR0ckdldHRlcihFeGVjU3RhdGUmIHN0YXRlLAogfQogCiBUZXN0RE9NSklUVXN2U3Ry
aW5nTnVsbGFibGVBdHRyRE9NSklUOjpUZXN0RE9NSklUVXN2U3RyaW5nTnVsbGFibGVBdHRyRE9N
SklUKCkKLSAgICA6IEpTQzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIoanNUZXN0RE9NSklUVXN2U3Ry
aW5nTnVsbGFibGVBdHRyLCBudWxscHRyLCBKU1Rlc3RET01KSVQ6OmluZm8oKSwgKEpTQzo6U3Bl
Y1N0cmluZyB8IEpTQzo6U3BlY090aGVyKSkKKyAgICA6IEpTQzo6RE9NSklUOjpHZXR0ZXJTZXR0
ZXIoanNUZXN0RE9NSklUVXN2U3RyaW5nTnVsbGFibGVBdHRyLCBudWxscHRyLCBKU1Rlc3RET01K
SVQ6OmluZm8oKSwgRE9NSklUOjpJRExSZXN1bHRUeXBlRmlsdGVyPElETE51bGxhYmxlPElETFVT
VlN0cmluZz4+Ojp2YWx1ZSkKIHsKIH0KIApAQCAtMTEyMCw3ICsxMTQwLDcgQEAgc3RhdGljIGlu
bGluZSBKU1ZhbHVlIGpzVGVzdERPTUpJVE5vZGVOdWxsYWJsZUF0dHJHZXR0ZXIoRXhlY1N0YXRl
JiBzdGF0ZSwgSlNUZXMKIH0KIAogVGVzdERPTUpJVE5vZGVOdWxsYWJsZUF0dHJET01KSVQ6OlRl
c3RET01KSVROb2RlTnVsbGFibGVBdHRyRE9NSklUKCkKLSAgICA6IEpTQzo6RE9NSklUOjpHZXR0
ZXJTZXR0ZXIoanNUZXN0RE9NSklUTm9kZU51bGxhYmxlQXR0ciwgbnVsbHB0ciwgSlNUZXN0RE9N
SklUOjppbmZvKCksIFNwZWNIZWFwVG9wKQorICAgIDogSlNDOjpET01KSVQ6OkdldHRlclNldHRl
cihqc1Rlc3RET01KSVROb2RlTnVsbGFibGVBdHRyLCBudWxscHRyLCBKU1Rlc3RET01KSVQ6Omlu
Zm8oKSwgRE9NSklUOjpJRExSZXN1bHRUeXBlRmlsdGVyPElETE51bGxhYmxlPElETEludGVyZmFj
ZTxOb2RlPj4+Ojp2YWx1ZSkKIHsKIH0KIApAQCAtMTE1OSw2ICsxMTc5LDQwIEBAIEpTVmFsdWUg
SlNUZXN0RE9NSklUOjpnZXRDb25zdHJ1Y3RvcihWTSYgdm0sIGNvbnN0IEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QpCiAgICAgcmV0dXJuIGdldERPTUNvbnN0cnVjdG9yPEpTVGVzdERPTUpJ
VENvbnN0cnVjdG9yPih2bSwgKmpzQ2FzdDxjb25zdCBKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2Jh
bE9iamVjdCkpOwogfQogCitzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0
RE9NSklUUHJvdG90eXBlRnVuY3Rpb25HZXRBdHRyaWJ1dGVDYWxsZXIoSlNDOjpFeGVjU3RhdGUq
LCBKU1Rlc3RET01KSVQqLCBKU0M6OlRocm93U2NvcGUmKTsKKworRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBqc1Rlc3RET01KSVRQcm90b3R5cGVGdW5jdGlvbkdldEF0dHJpYnV0ZShFeGVj
U3RhdGUqIHN0YXRlKQoreworICAgIHJldHVybiBCaW5kaW5nQ2FsbGVyPEpTVGVzdERPTUpJVD46
OmNhbGxPcGVyYXRpb248anNUZXN0RE9NSklUUHJvdG90eXBlRnVuY3Rpb25HZXRBdHRyaWJ1dGVD
YWxsZXI+KHN0YXRlLCAiZ2V0QXR0cmlidXRlIik7Cit9CisKK3N0YXRpYyBpbmxpbmUgSlNDOjpF
bmNvZGVkSlNWYWx1ZSBqc1Rlc3RET01KSVRQcm90b3R5cGVGdW5jdGlvbkdldEF0dHJpYnV0ZUNh
bGxlcihKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIEpTVGVzdERPTUpJVCogY2FzdGVkVGhpcywgSlND
OjpUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQoreworICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7Cisg
ICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlz
LT53cmFwcGVkKCk7CisgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5hcmd1bWVudENvdW50KCkgPCAx
KSkKKyAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgdGhyb3dTY29wZSwgY3JlYXRl
Tm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKKyAgICBhdXRvIG5hbWUgPSBjb252ZXJ0
PElETERPTVN0cmluZz4oKnN0YXRlLCBzdGF0ZS0+dW5jaGVja2VkQXJndW1lbnQoMCksIFN0cmlu
Z0NvbnZlcnNpb25Db25maWd1cmF0aW9uOjpOb3JtYWwpOworICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CisgICAgSlNWYWx1ZSByZXN1bHQgPSB0
b0pTPElETE51bGxhYmxlPElETERPTVN0cmluZz4+KCpzdGF0ZSwgaW1wbC5nZXRBdHRyaWJ1dGUo
V1RGTW92ZShuYW1lKSkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKK30K
KworSlNDOjpFbmNvZGVkSlNWYWx1ZSB1bnNhZmVKc1Rlc3RET01KSVRQcm90b3R5cGVGdW5jdGlv
bkdldEF0dHJpYnV0ZShKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIEpTVGVzdERPTUpJVCogY2FzdGVk
VGhpcywgRE9NSklUOjpJRExKU0FyZ3VtZW50VHlwZTxJRExET01TdHJpbmc+IGVuY29kZWROYW1l
KQoreworICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7
CisgICAgSlNDOjpOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKCZ2bSwgc3RhdGUpOworICAg
IGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9Q
QVJBTSh0aHJvd1Njb3BlKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgp
OworICAgIGF1dG8gbmFtZSA9IERPTUpJVDo6RGlyZWN0Q29udmVydGVyPElETERPTVN0cmluZz46
OmRpcmVjdENvbnZlcnQ8U3RyaW5nQ29udmVyc2lvbkNvbmZpZ3VyYXRpb246Ok5vcm1hbD4oKnN0
YXRlLCBlbmNvZGVkTmFtZSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBl
bmNvZGVkSlNWYWx1ZSgpKTsKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IHRvSlM8SURMTnVsbGFibGU8
SURMRE9NU3RyaW5nPj4oKnN0YXRlLCBpbXBsLmdldEF0dHJpYnV0ZShXVEZNb3ZlKG5hbWUpKSk7
CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOworfQorCiB2b2lkIEpTVGVzdERP
TUpJVDo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQog
ewogICAgIGF1dG8qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNUZXN0RE9NSklUKj4oY2VsbCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdERPTUpJ
VC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdERPTUpJVC5p
ZGwKaW5kZXggYmU3ZWQwNGZmNjNkZTY4NmJjODc2NDgyODJiNmFhZjY0YzI3NzNlNy4uYTUzMTQ4
OGRjODFjMWI4NzdmMGVlM2Y5NGY4YWFiMzhhYTY5NDM5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RET01KSVQuaWRsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0RE9NSklULmlkbApAQCAtNjMsNCArNjMs
NiBAQCBpbnRlcmZhY2UgVGVzdERPTUpJVCA6IE5vZGUgewogICAgIFtET01KSVRdIHJlYWRvbmx5
IGF0dHJpYnV0ZSBCeXRlU3RyaW5nPyBieXRlU3RyaW5nTnVsbGFibGVBdHRyOwogICAgIFtET01K
SVRdIHJlYWRvbmx5IGF0dHJpYnV0ZSBVU1ZTdHJpbmc/IHVzdlN0cmluZ051bGxhYmxlQXR0cjsK
ICAgICBbRE9NSklUXSByZWFkb25seSBhdHRyaWJ1dGUgTm9kZT8gbm9kZU51bGxhYmxlQXR0cjsK
KworICAgIFtET01KSVQ9U2lnbmF0dXJlXSBET01TdHJpbmc/IGdldEF0dHJpYnV0ZShET01TdHJp
bmcgbmFtZSk7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaWRs
IGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaWRsCmluZGV4IDcwNTYxNzM4Yjk3NDlhOGQ3
NGEwZjE3Y2E2M2E3ZjhmZjE5NWUxYzYuLjQ4OGM5OTFiNGJhNjZiNTI0ODgzODAyMTYwMWMwYzBm
MWRhMzIwMmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmlkbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5pZGwKQEAgLTI2LDIwICsyNiwyMCBAQAogXSBp
bnRlcmZhY2UgRWxlbWVudCA6IE5vZGUgewogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJp
bmc/IHRhZ05hbWU7CiAKLSAgICBET01TdHJpbmc/IGdldEF0dHJpYnV0ZShET01TdHJpbmcgbmFt
ZSk7CisgICAgW0RPTUpJVD1TaWduYXR1cmVdIERPTVN0cmluZz8gZ2V0QXR0cmlidXRlKERPTVN0
cmluZyBuYW1lKTsKIAogICAgIFtDRVJlYWN0aW9ucywgTWF5VGhyb3dFeGNlcHRpb25dIHZvaWQg
c2V0QXR0cmlidXRlKERPTVN0cmluZyBuYW1lLCBET01TdHJpbmcgdmFsdWUpOwogCiAgICAgW0NF
UmVhY3Rpb25zXSB2b2lkIHJlbW92ZUF0dHJpYnV0ZShET01TdHJpbmcgbmFtZSk7Ci0gICAgQXR0
cj8gZ2V0QXR0cmlidXRlTm9kZShET01TdHJpbmcgbmFtZSk7CisgICAgW0RPTUpJVD1TaWduYXR1
cmVdIEF0dHI/IGdldEF0dHJpYnV0ZU5vZGUoRE9NU3RyaW5nIG5hbWUpOwogCiAgICAgW0NFUmVh
Y3Rpb25zLCBNYXlUaHJvd0V4Y2VwdGlvbl0gQXR0cj8gc2V0QXR0cmlidXRlTm9kZShBdHRyIG5l
d0F0dHIpOwogICAgIFtDRVJlYWN0aW9ucywgTWF5VGhyb3dFeGNlcHRpb25dIEF0dHIgcmVtb3Zl
QXR0cmlidXRlTm9kZShBdHRyIG9sZEF0dHIpOwogCi0gICAgSFRNTENvbGxlY3Rpb24gZ2V0RWxl
bWVudHNCeVRhZ05hbWUoRE9NU3RyaW5nIG5hbWUpOworICAgIFtET01KSVQ9U2lnbmF0dXJlXSBI
VE1MQ29sbGVjdGlvbiBnZXRFbGVtZW50c0J5VGFnTmFtZShET01TdHJpbmcgbmFtZSk7CiAKICAg
ICByZWFkb25seSBhdHRyaWJ1dGUgTmFtZWROb2RlTWFwIGF0dHJpYnV0ZXM7Ci0gICAgYm9vbGVh
biBoYXNBdHRyaWJ1dGVzKCk7CisgICAgW0RPTUpJVD1TaWduYXR1cmVdIGJvb2xlYW4gaGFzQXR0
cmlidXRlcygpOwogCiAgICAgRE9NU3RyaW5nPyBnZXRBdHRyaWJ1dGVOUyhET01TdHJpbmc/IG5h
bWVzcGFjZVVSSSwgRE9NU3RyaW5nIGxvY2FsTmFtZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2RvbWppdC9ET01KSVRBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2RvbWppdC9ET01KSVRBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmNwcApkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggODNmYmE4OTcxM2I4NjYzZDRkOGYyN2VkY2JmNzRhZmU2MzE4
MmQzMS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9kb21qaXQvRE9NSklUQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5jcHAKKysrIC9k
ZXYvbnVsbApAQCAtMSw3MCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
Ci0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkRPTUpJVEFic3Ry
YWN0SGVhcFJlcG9zaXRvcnkuaCIKLQotI2luY2x1ZGUgPGRvbWppdC9ET01KSVRBYnN0cmFjdEhl
YXAuaD4KLSNpbmNsdWRlIDx3dGYvRGF0YUxvZy5oPgotI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ry
b3llZC5oPgotCi0jaWYgRU5BQkxFKEpJVCkKLQotbmFtZXNwYWNlIFdlYkNvcmUgeyBuYW1lc3Bh
Y2UgRE9NSklUIHsKLQotc3RhdGljIGNvbnN0IGJvb2wgdmVyYm9zZSA9IGZhbHNlOwotCi1BYnN0
cmFjdEhlYXBSZXBvc2l0b3J5OjpBYnN0cmFjdEhlYXBSZXBvc2l0b3J5KCkKLXsKLSAgICBKU0M6
OkRPTUpJVDo6QWJzdHJhY3RIZWFwIERPTUhlYXAoIkRPTSIpOwotI2RlZmluZSBET01KSVRfREVG
SU5FX0hFQVAobmFtZSwgcGFyZW50KSBKU0M6OkRPTUpJVDo6QWJzdHJhY3RIZWFwIG5hbWUjI0hl
YXAoI25hbWUpOwotICAgIERPTUpJVF9BQlNUUkFDVF9IRUFQX0xJU1QoRE9NSklUX0RFRklORV9I
RUFQKQotI3VuZGVmIERPTUpJVF9ERUZJTkVfSEVBUAotCi0jZGVmaW5lIERPTUpJVF9JTklUSUFM
SVpFX0hFQVAobmFtZSwgcGFyZW50KSBuYW1lIyNIZWFwLnNldFBhcmVudCgmcGFyZW50IyNIZWFw
KTsKLSAgICBET01KSVRfQUJTVFJBQ1RfSEVBUF9MSVNUKERPTUpJVF9JTklUSUFMSVpFX0hFQVAp
Ci0jdW5kZWYgRE9NSklUX0lOSVRJQUxJWkVfSEVBUAotCi0gICAgRE9NSGVhcC5jb21wdXRlKDAp
OwotCi0jZGVmaW5lIERPTUpJVF9JTklUSUFMSVpFX01FTUJFUihuYW1lLCBwYXJlbnQpIG5hbWUg
PSBuYW1lIyNIZWFwLnJhbmdlKCk7Ci0gICAgRE9NSklUX0FCU1RSQUNUX0hFQVBfTElTVChET01K
SVRfSU5JVElBTElaRV9NRU1CRVIpCi0jdW5kZWYgRE9NSklUX0lOSVRJQUxJWkVfTUVNQkVSCi0K
LSAgICBpZiAodmVyYm9zZSkgewotICAgICAgICBkYXRhTG9nKCJET01KSVQgSGVhcCBSZXBvc2l0
b3J5OlxuIik7Ci0gICAgICAgIERPTUhlYXAuZGVlcER1bXAoV1RGOjpkYXRhRmlsZSgpKTsKLSAg
ICB9Ci19Ci0KLWNvbnN0IEFic3RyYWN0SGVhcFJlcG9zaXRvcnkmIEFic3RyYWN0SGVhcFJlcG9z
aXRvcnk6OnNoYXJlZCgpCi17Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEFic3RyYWN0SGVh
cFJlcG9zaXRvcnk+IHJlcG9zaXRvcnk7Ci0gICAgcmV0dXJuIHJlcG9zaXRvcnkuZ2V0KCk7Ci19
Ci0KLX0gfQotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbWppdC9ET01K
SVRBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmggYi9Tb3VyY2UvV2ViQ29yZS9kb21qaXQvRE9NSklU
QWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4
MTkwYTFhOTRiYmM3OWRlNWYyZTNiZWQwOTk4MzQ3OWZhNGJkNjU2Li4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbWppdC9ET01K
SVRBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmgKKysrIC9kZXYvbnVsbApAQCAtMSw2NiArMCwwIEBA
Ci0vKgotICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQot
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBv
bmNlCi0KLSNpbmNsdWRlIDxkb21qaXQvRE9NSklUSGVhcFJhbmdlLmg+Ci0jaW5jbHVkZSA8d3Rm
L05ldmVyRGVzdHJveWVkLmg+Ci0jaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+Ci0KLSNpZiBF
TkFCTEUoSklUKQotCi1uYW1lc3BhY2UgV2ViQ29yZSB7IG5hbWVzcGFjZSBET01KSVQgewotCi0v
LyBEZXNjcmliZSB5b3VyIGFic3RyYWN0IGhlYXAgaGllcmFyY2h5IGhlcmUuCi0vLyBWKEFic3Ry
YWN0SGVhcE5hbWUsIFBhcmVudCkKLSNkZWZpbmUgRE9NSklUX0FCU1RSQUNUX0hFQVBfTElTVChW
KSBcCi0gICAgVihOb2RlLCBET00pIFwKLSAgICBWKE5vZGVfZmlyc3RDaGlsZCwgTm9kZSkgXAot
ICAgIFYoTm9kZV9sYXN0Q2hpbGQsIE5vZGUpIFwKLSAgICBWKE5vZGVfcGFyZW50Tm9kZSwgTm9k
ZSkgXAotICAgIFYoTm9kZV9uZXh0U2libGluZywgTm9kZSkgXAotICAgIFYoTm9kZV9wcmV2aW91
c1NpYmxpbmcsIE5vZGUpIFwKLSAgICBWKE5vZGVfb3duZXJEb2N1bWVudCwgTm9kZSkgXAotICAg
IFYoRG9jdW1lbnQsIERPTSkgXAotICAgIFYoRG9jdW1lbnRfZG9jdW1lbnRFbGVtZW50LCBEb2N1
bWVudCkgXAotCi0KLWNsYXNzIEFic3RyYWN0SGVhcFJlcG9zaXRvcnkgewotICAgIFdURl9NQUtF
X05PTkNPUFlBQkxFKEFic3RyYWN0SGVhcFJlcG9zaXRvcnkpOwotcHVibGljOgotICAgIHN0YXRp
YyBjb25zdCBBYnN0cmFjdEhlYXBSZXBvc2l0b3J5JiBzaGFyZWQoKTsKLQotICAgIEpTQzo6RE9N
SklUOjpIZWFwUmFuZ2UgRE9NOwotCi0jZGVmaW5lIERPTUpJVF9ERUZJTkVfTUVNQkVSKG5hbWUs
IHBhcmVudCkgSlNDOjpET01KSVQ6OkhlYXBSYW5nZSBuYW1lOwotICAgIERPTUpJVF9BQlNUUkFD
VF9IRUFQX0xJU1QoRE9NSklUX0RFRklORV9NRU1CRVIpCi0jdW5kZWYgRE9NSklUX0RFRklORV9N
RU1CRVIKLQotICAgIEFic3RyYWN0SGVhcFJlcG9zaXRvcnkoKTsKLX07Ci0KLX0gfQotCi0jZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbWppdC9ET01KSVRBYnN0cmFjdEhlYXBS
ZXBvc2l0b3J5LnlhbWwgYi9Tb3VyY2UvV2ViQ29yZS9kb21qaXQvRE9NSklUQWJzdHJhY3RIZWFw
UmVwb3NpdG9yeS55YW1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjUyYzU4NDVlMDc4NjcwZGRkYWM5NzcyOTk5Y2Ni
OGVhN2QwMWJkZjMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb21qaXQvRE9N
SklUQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS55YW1sCkBAIC0wLDAgKzEsMTEgQEAKK0RPTToKKyAg
ICBUcmVlOgorICAgICAgICBOb2RlOgorICAgICAgICAgICAgLSBOb2RlX2ZpcnN0Q2hpbGQKKyAg
ICAgICAgICAgIC0gTm9kZV9sYXN0Q2hpbGQKKyAgICAgICAgICAgIC0gTm9kZV9wYXJlbnROb2Rl
CisgICAgICAgICAgICAtIE5vZGVfbmV4dFNpYmxpbmcKKyAgICAgICAgICAgIC0gTm9kZV9wcmV2
aW91c1NpYmxpbmcKKyAgICAgICAgICAgIC0gTm9kZV9vd25lckRvY3VtZW50CisgICAgICAgIERv
Y3VtZW50OgorICAgICAgICAgICAgLSBEb2N1bWVudF9kb2N1bWVudEVsZW1lbnQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2RvbWppdC9ET01KSVRJRExDb252ZXJ0LmggYi9Tb3VyY2UvV2Vi
Q29yZS9kb21qaXQvRE9NSklUSURMQ29udmVydC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjVlMDBhYmZjY2I4NzZk
ZWExODMyZjFjMjBhZWUzZWQ3OGIxMzY4NDkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9kb21qaXQvRE9NSklUSURMQ29udmVydC5oCkBAIC0wLDAgKzEsNDkgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIklETFR5cGVzLmgiCisjaW5jbHVkZSA8Ynl0
ZWNvZGUvU3BlY3VsYXRlZFR5cGUuaD4KKyNpbmNsdWRlIDxkb21qaXQvRE9NSklUU2lnbmF0dXJl
Lmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsgbmFtZXNwYWNlIERPTUpJVCB7CisKK3RlbXBsYXRl
PHR5cGVuYW1lIElETFR5cGU+CitzdHJ1Y3QgRGlyZWN0Q29udmVydGVyOworCit0ZW1wbGF0ZTw+
CitzdHJ1Y3QgRGlyZWN0Q29udmVydGVyPElETERPTVN0cmluZz4geworICAgIHRlbXBsYXRlPFN0
cmluZ0NvbnZlcnNpb25Db25maWd1cmF0aW9uPgorICAgIHN0YXRpYyBTdHJpbmcgZGlyZWN0Q29u
dmVydChKU0M6OkV4ZWNTdGF0ZSYsIEpTQzo6SlNTdHJpbmcqKTsKK307CisKK3RlbXBsYXRlPD4K
K2lubGluZSBTdHJpbmcgRGlyZWN0Q29udmVydGVyPElETERPTVN0cmluZz46OmRpcmVjdENvbnZl
cnQ8U3RyaW5nQ29udmVyc2lvbkNvbmZpZ3VyYXRpb246Ok5vcm1hbD4oSlNDOjpFeGVjU3RhdGUm
IHN0YXRlLCBKU0M6OkpTU3RyaW5nKiBzdHJpbmcpCit7CisgICAgcmV0dXJuIHN0cmluZy0+dmFs
dWUoJnN0YXRlKTsKK30KKworfSB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb21qaXQv
RE9NSklUSURMVHlwZS5oIGIvU291cmNlL1dlYkNvcmUvZG9taml0L0RPTUpJVElETFR5cGUuaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi42ODkxZmJjNTBlZjRjMmQ3NjU0ZDhlNWQyYmM4ZGVhZTk3NmRmMWFjCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvZG9taml0L0RPTUpJVElETFR5cGUuaApAQCAt
MCwwICsxLDQ3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJJRExU
eXBlcy5oIgorI2luY2x1ZGUgPGJ5dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmg+CisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsgbmFtZXNwYWNlIERPTUpJVCB7CisKK3RlbXBsYXRlPHR5cGVuYW1lIElETFR5
cGU+CitzdHJ1Y3QgSURMSlNBcmd1bWVudFR5cGVTZWxlY3Q7CisKK3RlbXBsYXRlPD4gc3RydWN0
IElETEpTQXJndW1lbnRUeXBlU2VsZWN0PElETEJvb2xlYW4+IHsgdHlwZWRlZiBib29sIHR5cGU7
IH07Cit0ZW1wbGF0ZTw+IHN0cnVjdCBJRExKU0FyZ3VtZW50VHlwZVNlbGVjdDxJRExCeXRlPiB7
IHR5cGVkZWYgaW50MzJfdCB0eXBlOyB9OwordGVtcGxhdGU8PiBzdHJ1Y3QgSURMSlNBcmd1bWVu
dFR5cGVTZWxlY3Q8SURMT2N0ZXQ+IHsgdHlwZWRlZiBpbnQzMl90IHR5cGU7IH07Cit0ZW1wbGF0
ZTw+IHN0cnVjdCBJRExKU0FyZ3VtZW50VHlwZVNlbGVjdDxJRExTaG9ydD4geyB0eXBlZGVmIGlu
dDMyX3QgdHlwZTsgfTsKK3RlbXBsYXRlPD4gc3RydWN0IElETEpTQXJndW1lbnRUeXBlU2VsZWN0
PElETFVuc2lnbmVkU2hvcnQ+IHsgdHlwZWRlZiBpbnQzMl90IHR5cGU7IH07Cit0ZW1wbGF0ZTw+
IHN0cnVjdCBJRExKU0FyZ3VtZW50VHlwZVNlbGVjdDxJRExMb25nPiB7IHR5cGVkZWYgaW50MzJf
dCB0eXBlOyB9OwordGVtcGxhdGU8PiBzdHJ1Y3QgSURMSlNBcmd1bWVudFR5cGVTZWxlY3Q8SURM
RE9NU3RyaW5nPiB7IHR5cGVkZWYgSlNDOjpKU1N0cmluZyogdHlwZTsgfTsKKwordGVtcGxhdGU8
dHlwZW5hbWUgSURMVHlwZT4KK3VzaW5nIElETEpTQXJndW1lbnRUeXBlID0gdHlwZW5hbWUgSURM
SlNBcmd1bWVudFR5cGVTZWxlY3Q8SURMVHlwZT46OnR5cGU7CisKK30gfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZG9taml0L0RPTUpJVElETFR5cGVGaWx0ZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL2RvbWppdC9ET01KSVRJRExUeXBlRmlsdGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDUyZDk5Njc3YzMy
ZjdlYzJiZDUyMTIzN2FkMGU3YjhkNGUzZGI5NgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2RvbWppdC9ET01KSVRJRExUeXBlRmlsdGVyLmgKQEAgLTAsMCArMSw3MSBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8Ynl0ZWNvZGUvU3BlY3VsYXRlZFR5
cGUuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeyBuYW1lc3BhY2UgRE9NSklUIHsKKwordGVtcGxh
dGU8dHlwZW5hbWUgSURMVHlwZT4KK3N0cnVjdCBJRExBcmd1bWVudFR5cGVGaWx0ZXI7CisKK3Rl
bXBsYXRlPD4gc3RydWN0IElETEFyZ3VtZW50VHlwZUZpbHRlcjxJRExCb29sZWFuPiB7IHN0YXRp
YyBjb25zdCBjb25zdGV4cHIgSlNDOjpTcGVjdWxhdGVkVHlwZSB2YWx1ZSA9IEpTQzo6U3BlY0Jv
b2xlYW47IH07Cit0ZW1wbGF0ZTw+IHN0cnVjdCBJRExBcmd1bWVudFR5cGVGaWx0ZXI8SURMQnl0
ZT4geyBzdGF0aWMgY29uc3QgY29uc3RleHByIEpTQzo6U3BlY3VsYXRlZFR5cGUgdmFsdWUgPSBK
U0M6OlNwZWNJbnQzMk9ubHk7IH07Cit0ZW1wbGF0ZTw+IHN0cnVjdCBJRExBcmd1bWVudFR5cGVG
aWx0ZXI8SURMT2N0ZXQ+IHsgc3RhdGljIGNvbnN0IGNvbnN0ZXhwciBKU0M6OlNwZWN1bGF0ZWRU
eXBlIHZhbHVlID0gSlNDOjpTcGVjSW50MzJPbmx5OyB9OwordGVtcGxhdGU8PiBzdHJ1Y3QgSURM
QXJndW1lbnRUeXBlRmlsdGVyPElETFNob3J0PiB7IHN0YXRpYyBjb25zdCBjb25zdGV4cHIgSlND
OjpTcGVjdWxhdGVkVHlwZSB2YWx1ZSA9IEpTQzo6U3BlY0ludDMyT25seTsgfTsKK3RlbXBsYXRl
PD4gc3RydWN0IElETEFyZ3VtZW50VHlwZUZpbHRlcjxJRExVbnNpZ25lZFNob3J0PiB7IHN0YXRp
YyBjb25zdCBjb25zdGV4cHIgSlNDOjpTcGVjdWxhdGVkVHlwZSB2YWx1ZSA9IEpTQzo6U3BlY0lu
dDMyT25seTsgfTsKK3RlbXBsYXRlPD4gc3RydWN0IElETEFyZ3VtZW50VHlwZUZpbHRlcjxJRExM
b25nPiB7IHN0YXRpYyBjb25zdCBjb25zdGV4cHIgSlNDOjpTcGVjdWxhdGVkVHlwZSB2YWx1ZSA9
IEpTQzo6U3BlY0ludDMyT25seTsgfTsKK3RlbXBsYXRlPD4gc3RydWN0IElETEFyZ3VtZW50VHlw
ZUZpbHRlcjxJRExET01TdHJpbmc+IHsgc3RhdGljIGNvbnN0IGNvbnN0ZXhwciBKU0M6OlNwZWN1
bGF0ZWRUeXBlIHZhbHVlID0gSlNDOjpTcGVjU3RyaW5nOyB9OworCit0ZW1wbGF0ZTx0eXBlbmFt
ZSBJRExUeXBlPgorc3RydWN0IElETFJlc3VsdFR5cGVGaWx0ZXIgeworICAgIHN0YXRpYyBjb25z
dCBjb25zdGV4cHIgSlNDOjpTcGVjdWxhdGVkVHlwZSB2YWx1ZSA9IEpTQzo6U3BlY0hlYXBUb3A7
Cit9OworCit0ZW1wbGF0ZTw+IHN0cnVjdCBJRExSZXN1bHRUeXBlRmlsdGVyPElETEFueT4geyBz
dGF0aWMgY29uc3QgY29uc3RleHByIEpTQzo6U3BlY3VsYXRlZFR5cGUgdmFsdWUgPSBKU0M6OlNw
ZWNIZWFwVG9wOyB9OwordGVtcGxhdGU8PiBzdHJ1Y3QgSURMUmVzdWx0VHlwZUZpbHRlcjxJRExC
b29sZWFuPiB7IHN0YXRpYyBjb25zdCBjb25zdGV4cHIgSlNDOjpTcGVjdWxhdGVkVHlwZSB2YWx1
ZSA9IEpTQzo6U3BlY0Jvb2xlYW47IH07Cit0ZW1wbGF0ZTw+IHN0cnVjdCBJRExSZXN1bHRUeXBl
RmlsdGVyPElETEJ5dGU+IHsgc3RhdGljIGNvbnN0IGNvbnN0ZXhwciBKU0M6OlNwZWN1bGF0ZWRU
eXBlIHZhbHVlID0gSlNDOjpTcGVjSW50MzJPbmx5OyB9OwordGVtcGxhdGU8PiBzdHJ1Y3QgSURM
UmVzdWx0VHlwZUZpbHRlcjxJRExPY3RldD4geyBzdGF0aWMgY29uc3QgY29uc3RleHByIEpTQzo6
U3BlY3VsYXRlZFR5cGUgdmFsdWUgPSBKU0M6OlNwZWNJbnQzMk9ubHk7IH07Cit0ZW1wbGF0ZTw+
IHN0cnVjdCBJRExSZXN1bHRUeXBlRmlsdGVyPElETFNob3J0PiB7IHN0YXRpYyBjb25zdCBjb25z
dGV4cHIgSlNDOjpTcGVjdWxhdGVkVHlwZSB2YWx1ZSA9IEpTQzo6U3BlY0ludDMyT25seTsgfTsK
K3RlbXBsYXRlPD4gc3RydWN0IElETFJlc3VsdFR5cGVGaWx0ZXI8SURMVW5zaWduZWRTaG9ydD4g
eyBzdGF0aWMgY29uc3QgY29uc3RleHByIEpTQzo6U3BlY3VsYXRlZFR5cGUgdmFsdWUgPSBKU0M6
OlNwZWNJbnQzMk9ubHk7IH07Cit0ZW1wbGF0ZTw+IHN0cnVjdCBJRExSZXN1bHRUeXBlRmlsdGVy
PElETExvbmc+IHsgc3RhdGljIGNvbnN0IGNvbnN0ZXhwciBKU0M6OlNwZWN1bGF0ZWRUeXBlIHZh
bHVlID0gSlNDOjpTcGVjSW50MzJPbmx5OyB9OwordGVtcGxhdGU8PiBzdHJ1Y3QgSURMUmVzdWx0
VHlwZUZpbHRlcjxJRExVbnNpZ25lZExvbmc+IHsgc3RhdGljIGNvbnN0IGNvbnN0ZXhwciBKU0M6
OlNwZWN1bGF0ZWRUeXBlIHZhbHVlID0gSlNDOjpTcGVjQnl0ZWNvZGVOdW1iZXI7IH07Cit0ZW1w
bGF0ZTw+IHN0cnVjdCBJRExSZXN1bHRUeXBlRmlsdGVyPElETExvbmdMb25nPiB7IHN0YXRpYyBj
b25zdCBjb25zdGV4cHIgSlNDOjpTcGVjdWxhdGVkVHlwZSB2YWx1ZSA9IEpTQzo6U3BlY0J5dGVj
b2RlTnVtYmVyOyB9OwordGVtcGxhdGU8PiBzdHJ1Y3QgSURMUmVzdWx0VHlwZUZpbHRlcjxJRExV
bnNpZ25lZExvbmdMb25nPiB7IHN0YXRpYyBjb25zdCBjb25zdGV4cHIgSlNDOjpTcGVjdWxhdGVk
VHlwZSB2YWx1ZSA9IEpTQzo6U3BlY0J5dGVjb2RlTnVtYmVyOyB9OwordGVtcGxhdGU8PiBzdHJ1
Y3QgSURMUmVzdWx0VHlwZUZpbHRlcjxJRExGbG9hdD4geyBzdGF0aWMgY29uc3QgY29uc3RleHBy
IEpTQzo6U3BlY3VsYXRlZFR5cGUgdmFsdWUgPSBKU0M6OlNwZWNCeXRlY29kZU51bWJlcjsgfTsK
K3RlbXBsYXRlPD4gc3RydWN0IElETFJlc3VsdFR5cGVGaWx0ZXI8SURMVW5yZXN0cmljdGVkRmxv
YXQ+IHsgc3RhdGljIGNvbnN0IGNvbnN0ZXhwciBKU0M6OlNwZWN1bGF0ZWRUeXBlIHZhbHVlID0g
SlNDOjpTcGVjQnl0ZWNvZGVOdW1iZXI7IH07Cit0ZW1wbGF0ZTw+IHN0cnVjdCBJRExSZXN1bHRU
eXBlRmlsdGVyPElETERvdWJsZT4geyBzdGF0aWMgY29uc3QgY29uc3RleHByIEpTQzo6U3BlY3Vs
YXRlZFR5cGUgdmFsdWUgPSBKU0M6OlNwZWNCeXRlY29kZU51bWJlcjsgfTsKK3RlbXBsYXRlPD4g
c3RydWN0IElETFJlc3VsdFR5cGVGaWx0ZXI8SURMVW5yZXN0cmljdGVkRG91YmxlPiB7IHN0YXRp
YyBjb25zdCBjb25zdGV4cHIgSlNDOjpTcGVjdWxhdGVkVHlwZSB2YWx1ZSA9IEpTQzo6U3BlY0J5
dGVjb2RlTnVtYmVyOyB9OwordGVtcGxhdGU8PiBzdHJ1Y3QgSURMUmVzdWx0VHlwZUZpbHRlcjxJ
RExET01TdHJpbmc+IHsgc3RhdGljIGNvbnN0IGNvbnN0ZXhwciBKU0M6OlNwZWN1bGF0ZWRUeXBl
IHZhbHVlID0gSlNDOjpTcGVjU3RyaW5nOyB9OwordGVtcGxhdGU8PiBzdHJ1Y3QgSURMUmVzdWx0
VHlwZUZpbHRlcjxJRExCeXRlU3RyaW5nPiB7IHN0YXRpYyBjb25zdCBjb25zdGV4cHIgSlNDOjpT
cGVjdWxhdGVkVHlwZSB2YWx1ZSA9IEpTQzo6U3BlY1N0cmluZzsgfTsKK3RlbXBsYXRlPD4gc3Ry
dWN0IElETFJlc3VsdFR5cGVGaWx0ZXI8SURMVVNWU3RyaW5nPiB7IHN0YXRpYyBjb25zdCBjb25z
dGV4cHIgSlNDOjpTcGVjdWxhdGVkVHlwZSB2YWx1ZSA9IEpTQzo6U3BlY1N0cmluZzsgfTsKKwor
dGVtcGxhdGU8dHlwZW5hbWUgVD4KK3N0cnVjdCBJRExSZXN1bHRUeXBlRmlsdGVyPElETE51bGxh
YmxlPFQ+PiB7CisgICAgc3RhdGljIGNvbnN0IGNvbnN0ZXhwciBKU0M6OlNwZWN1bGF0ZWRUeXBl
IHZhbHVlID0gSlNDOjpTcGVjT3RoZXIgfCBJRExSZXN1bHRUeXBlRmlsdGVyPFQ+Ojp2YWx1ZTsK
K307CisKK30gfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9taml0L0pTRG9jdW1lbnRE
T01KSVQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9taml0L0pTRG9jdW1lbnRET01KSVQuY3BwCmlu
ZGV4IDliNDhkOWZkYTU4YTYyZDA3ZmIyM2FhYjQ1NmJmOTRiN2VkOGZjMmYuLmJiZmVlN2RjNGJi
NzgyZTczY2YyN2M5NzdiYzE4Mjk0YTU5NGI2ZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2RvbWppdC9KU0RvY3VtZW50RE9NSklULmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb21qaXQv
SlNEb2N1bWVudERPTUpJVC5jcHAKQEAgLTQ4LDcgKzQ4LDYgQEAgUmVmPEpTQzo6RE9NSklUOjpQ
YXRjaHBvaW50PiBEb2N1bWVudERvY3VtZW50RWxlbWVudERPTUpJVDo6Y2hlY2tET00oKQogCiBS
ZWY8SlNDOjpET01KSVQ6OkNhbGxET01HZXR0ZXJQYXRjaHBvaW50PiBEb2N1bWVudERvY3VtZW50
RWxlbWVudERPTUpJVDo6Y2FsbERPTUdldHRlcigpCiB7Ci0gICAgY29uc3QgYXV0byYgaGVhcCA9
IERPTUpJVDo6QWJzdHJhY3RIZWFwUmVwb3NpdG9yeTo6c2hhcmVkKCk7CiAgICAgUmVmPEpTQzo6
RE9NSklUOjpDYWxsRE9NR2V0dGVyUGF0Y2hwb2ludD4gcGF0Y2hwb2ludCA9IEpTQzo6RE9NSklU
OjpDYWxsRE9NR2V0dGVyUGF0Y2hwb2ludDo6Y3JlYXRlKCk7CiAgICAgcGF0Y2hwb2ludC0+bnVt
R1BTY3JhdGNoUmVnaXN0ZXJzID0gMTsKICAgICBwYXRjaHBvaW50LT5zZXRHZW5lcmF0b3IoWz1d
KENDYWxsSGVscGVycyYgaml0LCBKU0M6OkRPTUpJVDo6UGF0Y2hwb2ludFBhcmFtcyYgcGFyYW1z
KSB7CkBAIC03MCw3ICs2OSw3IEBAIFJlZjxKU0M6OkRPTUpJVDo6Q2FsbERPTUdldHRlclBhdGNo
cG9pbnQ+IERvY3VtZW50RG9jdW1lbnRFbGVtZW50RE9NSklUOjpjYWxsRE9NCiAKICAgICAgICAg
cmV0dXJuIENDYWxsSGVscGVyczo6SnVtcExpc3QoKTsKICAgICB9KTsKLSAgICBwYXRjaHBvaW50
LT5lZmZlY3QgPSBKU0M6OkRPTUpJVDo6RWZmZWN0Ojpmb3JEZWYoaGVhcC5Eb2N1bWVudF9kb2N1
bWVudEVsZW1lbnQpOworICAgIHBhdGNocG9pbnQtPmVmZmVjdCA9IEpTQzo6RE9NSklUOjpFZmZl
Y3Q6OmZvckRlZihET01KSVQ6OkFic3RyYWN0SGVhcFJlcG9zaXRvcnk6OkRvY3VtZW50X2RvY3Vt
ZW50RWxlbWVudCk7CiAgICAgcmV0dXJuIHBhdGNocG9pbnQ7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2RvbWppdC9KU05vZGVET01KSVQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9t
aml0L0pTTm9kZURPTUpJVC5jcHAKaW5kZXggMWQ3OTAxZWM0MWQ3YWNlZjFkMGQ3OGY2MTMyNmZi
ZThhMTNhOTFiZi4uZGIzMTBlYTM0NTI4NDkxNDI0MjhkM2Q2MTZmODFiMmM2N2M1MTY1NSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9taml0L0pTTm9kZURPTUpJVC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvZG9taml0L0pTTm9kZURPTUpJVC5jcHAKQEAgLTgzLDkgKzgzLDggQEAgUmVm
PEpTQzo6RE9NSklUOjpQYXRjaHBvaW50PiBOb2RlRmlyc3RDaGlsZERPTUpJVDo6Y2hlY2tET00o
KQogCiBSZWY8SlNDOjpET01KSVQ6OkNhbGxET01HZXR0ZXJQYXRjaHBvaW50PiBOb2RlRmlyc3RD
aGlsZERPTUpJVDo6Y2FsbERPTUdldHRlcigpCiB7Ci0gICAgY29uc3QgYXV0byYgaGVhcCA9IERP
TUpJVDo6QWJzdHJhY3RIZWFwUmVwb3NpdG9yeTo6c2hhcmVkKCk7CiAgICAgYXV0byBwYXRjaHBv
aW50ID0gY3JlYXRlQ2FsbERPTUdldHRlckZvck9mZnNldEFjY2VzczxOb2RlPihDQVNUX09GRlNF
VChOb2RlKiwgQ29udGFpbmVyTm9kZSopICsgQ29udGFpbmVyTm9kZTo6Zmlyc3RDaGlsZE1lbW9y
eU9mZnNldCgpLCBJc0NvbnRhaW5lckd1YXJkUmVxdWlyZW1lbnQ6OlJlcXVpcmVkKTsKLSAgICBw
YXRjaHBvaW50LT5lZmZlY3QgPSBKU0M6OkRPTUpJVDo6RWZmZWN0Ojpmb3JEZWYoaGVhcC5Ob2Rl
X2ZpcnN0Q2hpbGQpOworICAgIHBhdGNocG9pbnQtPmVmZmVjdCA9IEpTQzo6RE9NSklUOjpFZmZl
Y3Q6OmZvckRlZihET01KSVQ6OkFic3RyYWN0SGVhcFJlcG9zaXRvcnk6Ok5vZGVfZmlyc3RDaGls
ZCk7CiAgICAgcmV0dXJuIHBhdGNocG9pbnQ7CiB9CiAKQEAgLTk2LDkgKzk1LDggQEAgUmVmPEpT
Qzo6RE9NSklUOjpQYXRjaHBvaW50PiBOb2RlTGFzdENoaWxkRE9NSklUOjpjaGVja0RPTSgpCiAK
IFJlZjxKU0M6OkRPTUpJVDo6Q2FsbERPTUdldHRlclBhdGNocG9pbnQ+IE5vZGVMYXN0Q2hpbGRE
T01KSVQ6OmNhbGxET01HZXR0ZXIoKQogewotICAgIGNvbnN0IGF1dG8mIGhlYXAgPSBET01KSVQ6
OkFic3RyYWN0SGVhcFJlcG9zaXRvcnk6OnNoYXJlZCgpOwogICAgIGF1dG8gcGF0Y2hwb2ludCA9
IGNyZWF0ZUNhbGxET01HZXR0ZXJGb3JPZmZzZXRBY2Nlc3M8Tm9kZT4oQ0FTVF9PRkZTRVQoTm9k
ZSosIENvbnRhaW5lck5vZGUqKSArIENvbnRhaW5lck5vZGU6Omxhc3RDaGlsZE1lbW9yeU9mZnNl
dCgpLCBJc0NvbnRhaW5lckd1YXJkUmVxdWlyZW1lbnQ6OlJlcXVpcmVkKTsKLSAgICBwYXRjaHBv
aW50LT5lZmZlY3QgPSBKU0M6OkRPTUpJVDo6RWZmZWN0Ojpmb3JEZWYoaGVhcC5Ob2RlX2xhc3RD
aGlsZCk7CisgICAgcGF0Y2hwb2ludC0+ZWZmZWN0ID0gSlNDOjpET01KSVQ6OkVmZmVjdDo6Zm9y
RGVmKERPTUpJVDo6QWJzdHJhY3RIZWFwUmVwb3NpdG9yeTo6Tm9kZV9sYXN0Q2hpbGQpOwogICAg
IHJldHVybiBwYXRjaHBvaW50OwogfQogCkBAIC0xMDksOSArMTA3LDggQEAgUmVmPEpTQzo6RE9N
SklUOjpQYXRjaHBvaW50PiBOb2RlTmV4dFNpYmxpbmdET01KSVQ6OmNoZWNrRE9NKCkKIAogUmVm
PEpTQzo6RE9NSklUOjpDYWxsRE9NR2V0dGVyUGF0Y2hwb2ludD4gTm9kZU5leHRTaWJsaW5nRE9N
SklUOjpjYWxsRE9NR2V0dGVyKCkKIHsKLSAgICBjb25zdCBhdXRvJiBoZWFwID0gRE9NSklUOjpB
YnN0cmFjdEhlYXBSZXBvc2l0b3J5OjpzaGFyZWQoKTsKICAgICBhdXRvIHBhdGNocG9pbnQgPSBj
cmVhdGVDYWxsRE9NR2V0dGVyRm9yT2Zmc2V0QWNjZXNzPE5vZGU+KE5vZGU6Om5leHRTaWJsaW5n
TWVtb3J5T2Zmc2V0KCksIElzQ29udGFpbmVyR3VhcmRSZXF1aXJlbWVudDo6Tm90UmVxdWlyZWQp
OwotICAgIHBhdGNocG9pbnQtPmVmZmVjdCA9IEpTQzo6RE9NSklUOjpFZmZlY3Q6OmZvckRlZiho
ZWFwLk5vZGVfbmV4dFNpYmxpbmcpOworICAgIHBhdGNocG9pbnQtPmVmZmVjdCA9IEpTQzo6RE9N
SklUOjpFZmZlY3Q6OmZvckRlZihET01KSVQ6OkFic3RyYWN0SGVhcFJlcG9zaXRvcnk6Ok5vZGVf
bmV4dFNpYmxpbmcpOwogICAgIHJldHVybiBwYXRjaHBvaW50OwogfQogCkBAIC0xMjIsOSArMTE5
LDggQEAgUmVmPEpTQzo6RE9NSklUOjpQYXRjaHBvaW50PiBOb2RlUHJldmlvdXNTaWJsaW5nRE9N
SklUOjpjaGVja0RPTSgpCiAKIFJlZjxKU0M6OkRPTUpJVDo6Q2FsbERPTUdldHRlclBhdGNocG9p
bnQ+IE5vZGVQcmV2aW91c1NpYmxpbmdET01KSVQ6OmNhbGxET01HZXR0ZXIoKQogewotICAgIGNv
bnN0IGF1dG8mIGhlYXAgPSBET01KSVQ6OkFic3RyYWN0SGVhcFJlcG9zaXRvcnk6OnNoYXJlZCgp
OwogICAgIGF1dG8gcGF0Y2hwb2ludCA9IGNyZWF0ZUNhbGxET01HZXR0ZXJGb3JPZmZzZXRBY2Nl
c3M8Tm9kZT4oTm9kZTo6cHJldmlvdXNTaWJsaW5nTWVtb3J5T2Zmc2V0KCksIElzQ29udGFpbmVy
R3VhcmRSZXF1aXJlbWVudDo6Tm90UmVxdWlyZWQpOwotICAgIHBhdGNocG9pbnQtPmVmZmVjdCA9
IEpTQzo6RE9NSklUOjpFZmZlY3Q6OmZvckRlZihoZWFwLk5vZGVfcHJldmlvdXNTaWJsaW5nKTsK
KyAgICBwYXRjaHBvaW50LT5lZmZlY3QgPSBKU0M6OkRPTUpJVDo6RWZmZWN0Ojpmb3JEZWYoRE9N
SklUOjpBYnN0cmFjdEhlYXBSZXBvc2l0b3J5OjpOb2RlX3ByZXZpb3VzU2libGluZyk7CiAgICAg
cmV0dXJuIHBhdGNocG9pbnQ7CiB9CiAKQEAgLTEzNSw5ICsxMzEsOCBAQCBSZWY8SlNDOjpET01K
SVQ6OlBhdGNocG9pbnQ+IE5vZGVQYXJlbnROb2RlRE9NSklUOjpjaGVja0RPTSgpCiAKIFJlZjxK
U0M6OkRPTUpJVDo6Q2FsbERPTUdldHRlclBhdGNocG9pbnQ+IE5vZGVQYXJlbnROb2RlRE9NSklU
OjpjYWxsRE9NR2V0dGVyKCkKIHsKLSAgICBjb25zdCBhdXRvJiBoZWFwID0gRE9NSklUOjpBYnN0
cmFjdEhlYXBSZXBvc2l0b3J5OjpzaGFyZWQoKTsKICAgICBhdXRvIHBhdGNocG9pbnQgPSBjcmVh
dGVDYWxsRE9NR2V0dGVyRm9yT2Zmc2V0QWNjZXNzPENvbnRhaW5lck5vZGU+KE5vZGU6OnBhcmVu
dE5vZGVNZW1vcnlPZmZzZXQoKSwgSXNDb250YWluZXJHdWFyZFJlcXVpcmVtZW50OjpOb3RSZXF1
aXJlZCk7Ci0gICAgcGF0Y2hwb2ludC0+ZWZmZWN0ID0gSlNDOjpET01KSVQ6OkVmZmVjdDo6Zm9y
RGVmKGhlYXAuTm9kZV9wYXJlbnROb2RlKTsKKyAgICBwYXRjaHBvaW50LT5lZmZlY3QgPSBKU0M6
OkRPTUpJVDo6RWZmZWN0Ojpmb3JEZWYoRE9NSklUOjpBYnN0cmFjdEhlYXBSZXBvc2l0b3J5OjpO
b2RlX3BhcmVudE5vZGUpOwogICAgIHJldHVybiBwYXRjaHBvaW50OwogfQogCkBAIC0xNjksNyAr
MTY0LDYgQEAgUmVmPEpTQzo6RE9NSklUOjpQYXRjaHBvaW50PiBOb2RlT3duZXJEb2N1bWVudERP
TUpJVDo6Y2hlY2tET00oKQogCiBSZWY8SlNDOjpET01KSVQ6OkNhbGxET01HZXR0ZXJQYXRjaHBv
aW50PiBOb2RlT3duZXJEb2N1bWVudERPTUpJVDo6Y2FsbERPTUdldHRlcigpCiB7Ci0gICAgY29u
c3QgYXV0byYgaGVhcCA9IERPTUpJVDo6QWJzdHJhY3RIZWFwUmVwb3NpdG9yeTo6c2hhcmVkKCk7
CiAgICAgUmVmPEpTQzo6RE9NSklUOjpDYWxsRE9NR2V0dGVyUGF0Y2hwb2ludD4gcGF0Y2hwb2lu
dCA9IEpTQzo6RE9NSklUOjpDYWxsRE9NR2V0dGVyUGF0Y2hwb2ludDo6Y3JlYXRlKCk7CiAgICAg
cGF0Y2hwb2ludC0+bnVtR1BTY3JhdGNoUmVnaXN0ZXJzID0gMTsKICAgICBwYXRjaHBvaW50LT5z
ZXRHZW5lcmF0b3IoWz1dKENDYWxsSGVscGVycyYgaml0LCBKU0M6OkRPTUpJVDo6UGF0Y2hwb2lu
dFBhcmFtcyYgcGFyYW1zKSB7CkBAIC0xOTEsNyArMTg1LDcgQEAgUmVmPEpTQzo6RE9NSklUOjpD
YWxsRE9NR2V0dGVyUGF0Y2hwb2ludD4gTm9kZU93bmVyRG9jdW1lbnRET01KSVQ6OmNhbGxET01H
ZXR0ZXIKICAgICAgICAgZG9uZS5saW5rKCZqaXQpOwogICAgICAgICByZXR1cm4gQ0NhbGxIZWxw
ZXJzOjpKdW1wTGlzdCgpOwogICAgIH0pOwotICAgIHBhdGNocG9pbnQtPmVmZmVjdCA9IEpTQzo6
RE9NSklUOjpFZmZlY3Q6OmZvckRlZihoZWFwLk5vZGVfb3duZXJEb2N1bWVudCk7CisgICAgcGF0
Y2hwb2ludC0+ZWZmZWN0ID0gSlNDOjpET01KSVQ6OkVmZmVjdDo6Zm9yRGVmKERPTUpJVDo6QWJz
dHJhY3RIZWFwUmVwb3NpdG9yeTo6Tm9kZV9vd25lckRvY3VtZW50KTsKICAgICByZXR1cm4gcGF0
Y2hwb2ludDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9taml0L2dlbmVyYXRl
LWFic3RyYWN0LWhlYXAucmIgYi9Tb3VyY2UvV2ViQ29yZS9kb21qaXQvZ2VuZXJhdGUtYWJzdHJh
Y3QtaGVhcC5yYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iNzQxMmU4NWQ2OWY0OTFhMmVhYWJhYTYxNzhmMWIyNWEw
MmQwOWI0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvZG9taml0L2dlbmVyYXRl
LWFic3RyYWN0LWhlYXAucmIKQEAgLTAsMCArMSwxNjUgQEAKKyMhL3Vzci9iaW4vZW52IHJ1YnkK
KyMgLSotIGNvZGluZzogdXRmLTggLSotCisjIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJl
IG1ldDoKKyMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisjICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisjIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMg
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisjIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisjIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorCityZXF1aXJlICJ5YW1sIgorCitjbGFzcyBIZWFwUmFuZ2UKKyAgICBhdHRyX3JlYWRl
ciA6Zmlyc3QsIDpsYXN0CisgICAgZGVmIGluaXRpYWxpemUoZmlyc3QsIGxhc3QpCisgICAgICAg
IEBmaXJzdCA9IGZpcnN0CisgICAgICAgIEBsYXN0ID0gbGFzdAorICAgIGVuZAorZW5kCisKK2Ns
YXNzIEFic3RyYWN0SGVhcAorICAgIGF0dHJfcmVhZGVyIDpyYW5nZSwgOm5hbWUsIDpwYXJlbnQK
KyAgICBkZWYgaW5pdGlhbGl6ZShuYW1lLCB0cmVlKQorICAgICAgICBAbmFtZSA9IG5hbWUKKyAg
ICAgICAgQHBhcmVudCA9IG5pbAorICAgICAgICBpZiB0cmVlLm5pbD8KKyAgICAgICAgICAgIEBj
aGlsZHJlbiA9IFtdCisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIEBjaGlsZHJlbiA9IHRyZWUu
bWFwIHt8a2V5LCB2YWx1ZXwgQWJzdHJhY3RIZWFwLm5ldyhrZXksIHZhbHVlKSB9CisgICAgICAg
IGVuZAorICAgICAgICBAcmFuZ2UgPSBuaWwKKyAgICBlbmQKKworICAgIGRlZiBzZXRQYXJlbnQo
cGFyZW50KQorICAgICAgICBwYXJlbnQuY2hpbGRyZW4ucHVzaChzZWxmKQorICAgICAgICBAcGFy
ZW50ID0gcGFyZW50CisgICAgZW5kCisKKyAgICBkZWYgY29tcHV0ZShzdGFydCkKKyAgICAgICAg
Y3VycmVudCA9IHN0YXJ0CisgICAgICAgIGlmIEBjaGlsZHJlbi5lbXB0eT8KKyAgICAgICAgICAg
IEByYW5nZSA9IEhlYXBSYW5nZS5uZXcoc3RhcnQsIGN1cnJlbnQgKyAxKQorICAgICAgICAgICAg
cmV0dXJuCisgICAgICAgIGVuZAorCisgICAgICAgIEBjaGlsZHJlbi5lYWNoIHt8Y2hpbGR8Cisg
ICAgICAgICAgICBjaGlsZC5jb21wdXRlKGN1cnJlbnQpCisgICAgICAgICAgICBjdXJyZW50ID0g
Y2hpbGQucmFuZ2UubGFzdAorICAgICAgICB9CisKKyAgICAgICAgQHJhbmdlID0gSGVhcFJhbmdl
Lm5ldyhzdGFydCwgY3VycmVudCkKKyAgICBlbmQKKworICAgIGRlZiBkdW1wIG91dHB1dAorICAg
ICAgICBzaGFsbG93RHVtcChvdXRwdXQpCisgICAgICAgIGlmIEBwYXJlbnQKKyAgICAgICAgICAg
IG91dHB1dC5wcmludCAiLT4gIgorICAgICAgICAgICAgQHBhcmVudC5kdW1wKG91dHB1dCkKKyAg
ICAgICAgZW5kCisgICAgZW5kCisKKyAgICBkZWYgc2hhbGxvd0R1bXAob3V0cHV0KQorICAgICAg
ICBvdXRwdXQucHJpbnQgIiN7QG5hbWV9PCN7QHJhbmdlLmZpcnN0fSwje0ByYW5nZS5sYXN0fT4i
CisgICAgZW5kCisKKyAgICBkZWYgZGVlcER1bXAgb3V0cHV0LCBpbmRlbnQKKyAgICAgICAgcHJp
bnRJbmRlbnQob3V0cHV0LCBpbmRlbnQpCisgICAgICAgIHNoYWxsb3dEdW1wKG91dHB1dCkKKyAg
ICAgICAgaWYgQGNoaWxkcmVuLmVtcHR5PworICAgICAgICAgICAgb3V0cHV0LnByaW50ICJcbiIK
KyAgICAgICAgICAgIHJldHVybgorICAgICAgICBlbmQKKworICAgICAgICBvdXRwdXQucHJpbnQg
IjpcbiIKKyAgICAgICAgQGNoaWxkcmVuLmVhY2gge3xjaGlsZHwKKyAgICAgICAgICAgIGNoaWxk
LmRlZXBEdW1wKG91dHB1dCwgaW5kZW50ICsgMSkKKyAgICAgICAgfQorICAgIGVuZAorCisgICAg
ZGVmIGdlbmVyYXRlIG91dHB1dAorICAgICAgICBvdXRwdXQucHV0cyAiY29uc3RleHByIEpTQzo6
RE9NSklUOjpIZWFwUmFuZ2UgI3tAbmFtZX0oSlNDOjpET01KSVQ6OkhlYXBSYW5nZTo6Q29uc3RF
eHByLCAje0ByYW5nZS5maXJzdH0sICN7QHJhbmdlLmxhc3R9KTsiCisgICAgICAgIEBjaGlsZHJl
bi5lYWNoIHt8Y2hpbGR8CisgICAgICAgICAgICBjaGlsZC5nZW5lcmF0ZShvdXRwdXQpCisgICAg
ICAgIH0KKyAgICBlbmQKKworcHJpdmF0ZQorICAgIGRlZiBwcmludEluZGVudCBvdXRwdXQsIGlu
ZGVudAorICAgICAgICBpbmRlbnQudGltZXMgeworICAgICAgICAgICAgb3V0cHV0LnByaW50ICIg
ICAgIgorICAgICAgICB9CisgICAgZW5kCitlbmQKKworaGVhZGVyID0gPDwtRU9TCisvKgorICog
Q29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKy8vIEF1dG8tZ2VuZXJhdGVkIGZp
bGUuIERvIG5vdCBtb2RpZnkuCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8ZG9taml0L0RP
TUpJVEhlYXBSYW5nZS5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7IG5hbWVzcGFjZSBET01KSVQg
eyBuYW1lc3BhY2UgQWJzdHJhY3RIZWFwUmVwb3NpdG9yeSB7CitFT1MKKworZm9vdGVyID0gPDwt
RU9TCit9IH0gfQorRU9TCisKKyRpbnB1dEZpbGVOYW1lID0gQVJHVi5zaGlmdAorJG91dHB1dEZp
bGVOYW1lID0gQVJHVi5zaGlmdAorRmlsZS5vcGVuKCRvdXRwdXRGaWxlTmFtZSwgInciKSB7fG91
dHB1dHwKKyAgICBGaWxlLm9wZW4oJGlucHV0RmlsZU5hbWUsICJyYiIpIHt8ZmlsZXwKKyAgICAg
ICAgdHJlZSA9IFlBTUw6OmxvYWQoZmlsZS5yZWFkKCkpCisgICAgICAgIGhlYXAgPSB0cmVlLm1h
cCB7fGtleSwgdmFsdWV8CisgICAgICAgICAgICBBYnN0cmFjdEhlYXAubmV3KGtleSwgdmFsdWUp
CisgICAgICAgIH0uZmlyc3QKKyAgICAgICAgaGVhcC5jb21wdXRlKDApCisKKyAgICAgICAgb3V0
cHV0LnByaW50KGhlYWRlcikKKyAgICAgICAgb3V0cHV0LnB1dHMoIi8qIERPTUpJVCBBYnN0cmFj
dCBIZWFwIFRyZWUuIikKKyAgICAgICAgaGVhcC5kZWVwRHVtcChvdXRwdXQsIDApCisgICAgICAg
IG91dHB1dC5wdXRzKCIqLyIpCisgICAgICAgIGhlYXAuZ2VuZXJhdGUob3V0cHV0KQorICAgICAg
ICBvdXRwdXQucHJpbnQoZm9vdGVyKQorICAgIH0KK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA0N2JkYWI0MTQ4ZTJlYjJl
MDg0NDlmZDhjMjc1OWNjNmRiOGYzY2ZhLi4wMjFmZTg2ZTIxMTY1ZjY1ZDU5N2ViN2NjMGJkM2Rk
MmE2N2VhYWViIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjIgQEAKKzIwMTYtMTEtMDIgIFl1c3VrZSBTdXp1
a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisKKyAgICAgICAgW0RPTUpJVF0gQWRkIERPTUpJ
VDo6U2lnbmF0dXJlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNjI5ODAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIGpzL2RvbS9kb21qaXQtYWNjZXNzb3ItbGljbS5odG1sOgorICAgICAgICAqIGpzL2Rv
bS9kb21qaXQtZnVuY3Rpb24tZWZmZWN0LXNob3VsZC1vdmVybGFwLXdpdGgtY2FsbC1leHBlY3Rl
ZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGpzL2RvbS9kb21qaXQtZnVuY3Rpb24tZWZmZWN0LXNo
b3VsZC1vdmVybGFwLXdpdGgtY2FsbC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBqcy9kb20vZG9t
aml0LWZ1bmN0aW9uLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICoganMvZG9tL2RvbWpp
dC1mdW5jdGlvbi1saWNtLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICoganMvZG9tL2Rv
bWppdC1mdW5jdGlvbi1saWNtLmh0bWw6IENvcGllZCBmcm9tIExheW91dFRlc3RzL2pzL2RvbS9k
b21qaXQtYWNjZXNzb3ItbGljbS5odG1sLgorICAgICAgICAqIGpzL2RvbS9kb21qaXQtZnVuY3Rp
b24tdHlwZS1jb250cmFkaWN0aW9uLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICoganMv
ZG9tL2RvbWppdC1mdW5jdGlvbi10eXBlLWNvbnRyYWRpY3Rpb24uaHRtbDogQ29waWVkIGZyb20g
TGF5b3V0VGVzdHMvanMvZG9tL2RvbWppdC1hY2Nlc3Nvci1saWNtLmh0bWwuCisgICAgICAgICog
anMvZG9tL2RvbWppdC1mdW5jdGlvbi10eXBlLWZhaWx1cmUtZXhwZWN0ZWQudHh0OiBBZGRlZC4K
KyAgICAgICAgKiBqcy9kb20vZG9taml0LWZ1bmN0aW9uLXR5cGUtZmFpbHVyZS5odG1sOiBDb3Bp
ZWQgZnJvbSBMYXlvdXRUZXN0cy9qcy9kb20vZG9taml0LWFjY2Vzc29yLWxpY20uaHRtbC4KKyAg
ICAgICAgKiBqcy9kb20vZG9taml0LWZ1bmN0aW9uLmh0bWw6IEFkZGVkLgorCiAyMDE2LTExLTAx
ICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KIAogICAgICAgICBJbmRleGVkREIg
Mi4wOiBTdXBwb3J0IElEQkluZGV4IGdldEFsbC9nZXRBbGxLZXlzLgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvanMvZG9tL2RvbWppdC1hY2Nlc3Nvci1saWNtLmh0bWwgYi9MYXlvdXRUZXN0cy9q
cy9kb20vZG9taml0LWFjY2Vzc29yLWxpY20uaHRtbAppbmRleCBlNTYzZWJhODlmZmNkYTI5MWI1
MjRkY2RmNzUwZTJhMzA2YWUzMjA1Li40MGQ1NTYwZGEwNTM5Y2JmMDg0YTllMWQxZWYzZmUzZjFk
YzM1NDRkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9qcy9kb20vZG9taml0LWFjY2Vzc29yLWxp
Y20uaHRtbAorKysgYi9MYXlvdXRUZXN0cy9qcy9kb20vZG9taml0LWFjY2Vzc29yLWxpY20uaHRt
bApAQCAtMSwxNCArMSwzIEBACi08IURPQ1RZUEUgSFRNTD4KLTxodG1sIGxhbmc9ImVuIj4KLTxo
ZWFkPgotPG1ldGEgY2hhcnNldD0iVVRGLTgiPgotPC9oZWFkPgotPGJvZHk+Ci08c2NyaXB0Pgot
Ci08L3NjcmlwdD4KLTwvYm9keT4KLTwvaHRtbD4KIDwhRE9DVFlQRSBodG1sPgogPGh0bWw+CiA8
aGVhZD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL2RvbS9kb21qaXQtZnVuY3Rpb24tZWZm
ZWN0LXNob3VsZC1vdmVybGFwLXdpdGgtY2FsbC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9q
cy9kb20vZG9taml0LWZ1bmN0aW9uLWVmZmVjdC1zaG91bGQtb3ZlcmxhcC13aXRoLWNhbGwtZXhw
ZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjExZGMxOTZhMzJlMjg4YzEyZjUxNDU2MWNmYzIxNGQyOWVi
OWM4MTcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9qcy9kb20vZG9taml0LWZ1bmN0
aW9uLWVmZmVjdC1zaG91bGQtb3ZlcmxhcC13aXRoLWNhbGwtZXhwZWN0ZWQudHh0CkBAIC0wLDAg
KzEsMTAgQEAKK1Rlc3QgZnVuY3Rpb24gY2FsbHMgc2hvdWxkIG92ZXJsYXAgd2l0aCBlZmZlY3Rz
IG9mIERPTUpJVCBmdW5jdGlvbnMuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmll
cyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQ
QVNTIHRlc3QoKSBpcyB0cnVlCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RF
U1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvZG9tL2RvbWppdC1mdW5j
dGlvbi1lZmZlY3Qtc2hvdWxkLW92ZXJsYXAtd2l0aC1jYWxsLmh0bWwgYi9MYXlvdXRUZXN0cy9q
cy9kb20vZG9taml0LWZ1bmN0aW9uLWVmZmVjdC1zaG91bGQtb3ZlcmxhcC13aXRoLWNhbGwuaHRt
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4yOGNiMzkyYjI5NDFiYmI4ZDMzMWE3OTMzMWQ1OGMzZmE1ODMwNWU1Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMvZG9tL2RvbWppdC1mdW5jdGlvbi1lZmZl
Y3Qtc2hvdWxkLW92ZXJsYXAtd2l0aC1jYWxsLmh0bWwKQEAgLTAsMCArMSwzMyBAQAorPCFET0NU
WVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9q
cy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9InRhcmdl
dCI+PC9kaXY+Cis8L2Rpdj4KKworPHNjcmlwdD4KK2Rlc2NyaXB0aW9uKCdUZXN0IGZ1bmN0aW9u
IGNhbGxzIHNob3VsZCBvdmVybGFwIHdpdGggZWZmZWN0cyBvZiBET01KSVQgZnVuY3Rpb25zLicp
OworCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICB2YXIgdGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoJ3RhcmdldCcpOworICAgIHRhcmdldC5zZXRBdHRyaWJ1dGUoImNvY29hIiwgIjAi
KTsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IDFlNDsgKytpKSB7CisgICAgICAgIHZhciByZXQg
PSB0YXJnZXQuZ2V0QXR0cmlidXRlKCJjb2NvYSIpOworICAgICAgICBpZiAocmV0ICE9PSBTdHJp
bmcoaSkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHRhcmdldC5zZXRBdHRy
aWJ1dGUoImNvY29hIiwgU3RyaW5nKGkgKyAxKSk7CisgICAgICAgIHZhciByZXQgPSB0YXJnZXQu
Z2V0QXR0cmlidXRlKCJjb2NvYSIpOworICAgICAgICBpZiAocmV0ID09PSBTdHJpbmcoaSkpCisg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIHJldHVybiB0cnVlOworfQorCitz
aG91bGRCZVRydWUoYHRlc3QoKWApOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVz
b3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9qcy9kb20vZG9taml0LWZ1bmN0aW9uLWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL2pzL2RvbS9kb21qaXQtZnVuY3Rpb24tZXhwZWN0ZWQudHh0Cm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjQ1ZTU2ZWJkY2Q5ZjZmMTg2YzQ3Y2U3NjhjMTVjMjI1ZWJlMmQwYzcKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9qcy9kb20vZG9taml0LWZ1bmN0aW9uLWV4cGVjdGVkLnR4dApA
QCAtMCwwICsxLDEwIEBACitUZXN0IERPTUpJVCBmdW5jdGlvbnMgd29yay4KKworT24gc3VjY2Vz
cywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkg
IlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1MgQWxsIHRlc3RzIHBhc3NlZC4KK1BBU1Mgc3VjY2Vz
c2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9qcy9kb20vZG9taml0LWZ1bmN0aW9uLWxpY20tZXhwZWN0ZWQudHh0IGIvTGF5b3V0
VGVzdHMvanMvZG9tL2RvbWppdC1mdW5jdGlvbi1saWNtLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5mMTNjMDMzMDU5NjYyZTU1OGJjNmZiOWQ3MzlhYjM3ZTc5NjFjOGZiCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvanMvZG9tL2RvbWppdC1mdW5jdGlvbi1saWNtLWV4cGVjdGVkLnR4
dApAQCAtMCwwICsxLDggQEAKK1Rlc3QgRE9NSklUIGZ1bmN0aW9uIHdpbGwgYmUgTElDTS1lZC4K
KworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywg
Zm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBp
cyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvZG9t
L2RvbWppdC1mdW5jdGlvbi1saWNtLmh0bWwgYi9MYXlvdXRUZXN0cy9qcy9kb20vZG9taml0LWZ1
bmN0aW9uLWxpY20uaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41ZjJlMzk5ZGQzNTllMWM0ZmNiNGRmZGUyYmFj
ZTllMWEwZDQ0ZDM5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMvZG9tL2RvbWpp
dC1mdW5jdGlvbi1saWNtLmh0bWwKQEAgLTAsMCArMSwzNSBAQAorPCFET0NUWVBFIGh0bWw+Cis8
aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5q
cyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rp
dj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorCis8ZGl2IGlkPSJwYXJlbnROb2RlIj4KKzxk
aXYgaWQ9InByZXZpb3VzU2libGluZyI+PC9kaXY+PGRpdiBpZD0idGFyZ2V0Ij48ZGl2IGlkPSJm
aXJzdENoaWxkIj48L2Rpdj48ZGl2IGlkPSJsYXN0Q2hpbGQiPjwvZGl2PjwvZGl2PjxkaXYgaWQ9
Im5leHRTaWJsaW5nIj48L2Rpdj4KKzwvZGl2PgorCis8c2NyaXB0PgorZGVzY3JpcHRpb24oJ1Rl
c3QgRE9NSklUIGZ1bmN0aW9uIHdpbGwgYmUgTElDTS1lZC4nKTsKKworZnVuY3Rpb24gdGVzdCgp
IHsKKyAgICB2YXIgZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CisgICAgdmFy
IHJldCA9ICJpbnZhbGlkIjsKKyAgICBkaXYuc2V0QXR0cmlidXRlKCJjb2NvYSIsICJDb2NvYSIp
OworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMWU0OyArK2kpCisgICAgICAgIHJldCA9IGRpdi5n
ZXRBdHRyaWJ1dGUoImNvY29hIik7CisgICAgcmV0dXJuIHJldDsKK30KK3ZhciByZXN1bHQ7Ciso
ZnVuY3Rpb24gKCkgeworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMTAwOyArK2kpIHsKKyAgICAg
ICAgcmVzdWx0ID0gdGVzdCgpOworICAgICAgICBzaG91bGRCZShgcmVzdWx0YCwgYCJDb2NvYSJg
LCB0cnVlKTsKKyAgICB9Cit9KCkpOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVz
b3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9qcy9kb20vZG9taml0LWZ1bmN0aW9uLXR5cGUtY29udHJhZGlj
dGlvbi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9qcy9kb20vZG9taml0LWZ1bmN0aW9uLXR5
cGUtY29udHJhZGljdGlvbi1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2Q2ODc3ZDRhODAwNjg4
YjIxNjc3YmVmYWZmZWVmZmQ4YWIwYjc5NgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2pzL2RvbS9kb21qaXQtZnVuY3Rpb24tdHlwZS1jb250cmFkaWN0aW9uLWV4cGVjdGVkLnR4dApA
QCAtMCwwICsxLDggQEAKK1Rlc3QgRE9NSklUIGZ1bmN0aW9uIHdpbGwgY2F1c2UgdHlwZSBjb250
cmFkaWN0aW9uIGdpdmluZyB1cC4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVz
IG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCitQQVNT
IHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvanMvZG9tL2RvbWppdC1mdW5jdGlvbi10eXBlLWNvbnRyYWRpY3Rpb24u
aHRtbCBiL0xheW91dFRlc3RzL2pzL2RvbS9kb21qaXQtZnVuY3Rpb24tdHlwZS1jb250cmFkaWN0
aW9uLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uODRkYzViNjc2OTQxOGU5NjU1NWJhYjgzODdjMzA2MDM0YWY1
YzBjMAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2pzL2RvbS9kb21qaXQtZnVuY3Rp
b24tdHlwZS1jb250cmFkaWN0aW9uLmh0bWwKQEAgLTAsMCArMSwzNSBAQAorPCFET0NUWVBFIGh0
bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0
LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9u
Ij48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorCis8ZGl2IGlkPSJwYXJlbnROb2Rl
Ij4KKzxkaXYgaWQ9InByZXZpb3VzU2libGluZyI+PC9kaXY+PGRpdiBpZD0idGFyZ2V0Ij48ZGl2
IGlkPSJmaXJzdENoaWxkIj48L2Rpdj48ZGl2IGlkPSJsYXN0Q2hpbGQiPjwvZGl2PjwvZGl2Pjxk
aXYgaWQ9Im5leHRTaWJsaW5nIj48L2Rpdj4KKzwvZGl2PgorCis8c2NyaXB0PgorZGVzY3JpcHRp
b24oJ1Rlc3QgRE9NSklUIGZ1bmN0aW9uIHdpbGwgY2F1c2UgdHlwZSBjb250cmFkaWN0aW9uIGdp
dmluZyB1cC4nKTsKKwordmFyIGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOwor
ZGl2LnNldEF0dHJpYnV0ZSgiY29jb2EiLCAiQ29jb2EiKTsKK2Z1bmN0aW9uIHRlc3QoZGl2KSB7
CisgICAgdmFyIHJldCA9ICJpbnZhbGlkIjsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IDFlNDsg
KytpKQorICAgICAgICByZXQgPSBkaXYuZ2V0QXR0cmlidXRlKDIwMCk7CisgICAgcmV0dXJuIHJl
dDsKK30KK3ZhciByZXN1bHQ7CisoZnVuY3Rpb24gKCkgeworICAgIGZvciAodmFyIGkgPSAwOyBp
IDwgMTAwOyArK2kpIHsKKyAgICAgICAgcmVzdWx0ID0gdGVzdChkaXYpOworICAgICAgICBzaG91
bGRCZShgcmVzdWx0YCwgYG51bGxgLCB0cnVlKTsKKyAgICB9Cit9KCkpOworPC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8
L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9kb20vZG9taml0LWZ1
bmN0aW9uLXR5cGUtZmFpbHVyZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9qcy9kb20vZG9t
aml0LWZ1bmN0aW9uLXR5cGUtZmFpbHVyZS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmMxMDJi
Mzc2YmY4MjMyYjQyYmQxYTNjZTQxZGUxNzcxYTI3YjZjNQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2pzL2RvbS9kb21qaXQtZnVuY3Rpb24tdHlwZS1mYWlsdXJlLWV4cGVjdGVkLnR4
dApAQCAtMCwwICsxLDggQEAKK1Rlc3QgRE9NSklUIGZ1bmN0aW9uIHdpbGwgY2F1c2UgQmFkVHlw
ZSBPU1IgZXhpdHMuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFT
UyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworUEFTUyBzdWNjZXNz
ZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2pzL2RvbS9kb21qaXQtZnVuY3Rpb24tdHlwZS1mYWlsdXJlLmh0bWwgYi9MYXlvdXRU
ZXN0cy9qcy9kb20vZG9taml0LWZ1bmN0aW9uLXR5cGUtZmFpbHVyZS5odG1sCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjZiNzY2MTQxODdlZGE4N2RhYzI2YzIwYTZlMzEyMmNmMDY1NGE4MTYKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9qcy9kb20vZG9taml0LWZ1bmN0aW9uLXR5cGUtZmFpbHVyZS5odG1s
CkBAIC0wLDAgKzEsMzkgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFk
PgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xl
Ij48L2Rpdj4KKworPGRpdiBpZD0icGFyZW50Tm9kZSI+Cis8ZGl2IGlkPSJwcmV2aW91c1NpYmxp
bmciPjwvZGl2PjxkaXYgaWQ9InRhcmdldCI+PGRpdiBpZD0iZmlyc3RDaGlsZCI+PC9kaXY+PGRp
diBpZD0ibGFzdENoaWxkIj48L2Rpdj48L2Rpdj48ZGl2IGlkPSJuZXh0U2libGluZyI+PC9kaXY+
Cis8L2Rpdj4KKworPHNjcmlwdD4KK2Rlc2NyaXB0aW9uKCdUZXN0IERPTUpJVCBmdW5jdGlvbiB3
aWxsIGNhdXNlIEJhZFR5cGUgT1NSIGV4aXRzLicpOworCit2YXIgZGl2ID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudCgnZGl2Jyk7CitkaXYuc2V0QXR0cmlidXRlKCJjb2NvYSIsICJDb2NvYSIpOwor
ZnVuY3Rpb24gdGVzdChkaXYsIG5hbWUpIHsKKyAgICB2YXIgcmV0ID0gImludmFsaWQiOworICAg
IGZvciAodmFyIGkgPSAwOyBpIDwgMWU0OyArK2kpCisgICAgICAgIHJldCA9IGRpdi5nZXRBdHRy
aWJ1dGUobmFtZSk7CisgICAgcmV0dXJuIHJldDsKK30KK3ZhciByZXN1bHQ7CisoZnVuY3Rpb24g
KCkgeworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMTAwOyArK2kpIHsKKyAgICAgICAgcmVzdWx0
ID0gdGVzdChkaXYsICdjb2NvYScpOworICAgICAgICBzaG91bGRCZShgcmVzdWx0YCwgYCJDb2Nv
YSJgLCB0cnVlKTsKKyAgICB9CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxMDA7ICsraSkgewor
ICAgICAgICByZXN1bHQgPSB0ZXN0KGRpdiwgNDAwKTsKKyAgICAgICAgc2hvdWxkQmUoYHJlc3Vs
dGAsIGBudWxsYCwgdHJ1ZSk7CisgICAgfQorfSgpKTsKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9o
dG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvZG9tL2RvbWppdC1mdW5jdGlvbi5odG1s
IGIvTGF5b3V0VGVzdHMvanMvZG9tL2RvbWppdC1mdW5jdGlvbi5odG1sCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjkx
ZWE4YTU5OWQ4OTY1ZGU1YTAzYTg1NGQ0OTQzZGU1YjlhYzNkNjQKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9qcy9kb20vZG9taml0LWZ1bmN0aW9uLmh0bWwKQEAgLTAsMCArMSw1OCBA
QAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jl
c291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYg
aWQ9InRhcmdldCIgY29jb2E9ImNvY29hIj48ZGl2IGlkPSJmaXJzdENoaWxkIj48L2Rpdj48ZGl2
IGlkPSJsYXN0Q2hpbGQiPjwvZGl2PjwvZGl2PgorPC9kaXY+CisKKzxzY3JpcHQ+CitkZXNjcmlw
dGlvbignVGVzdCBET01KSVQgZnVuY3Rpb25zIHdvcmsuJyk7Cit2YXIgZGl2OworKGZ1bmN0aW9u
ICgpIHsKKyAgICBkaXYgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndGFyZ2V0Jyk7CisKKyAg
ICBmdW5jdGlvbiBhKCkKKyAgICB7CisgICAgICAgIHJldHVybiBkaXYuZ2V0QXR0cmlidXRlKCdj
b2NvYScpID09PSAnY29jb2EnOworICAgIH0KKworICAgIGZ1bmN0aW9uIGIoKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIGRpdi5nZXRBdHRyaWJ1dGVOb2RlKCdjb2NvYScpLm5vZGVUeXBlID09PSBO
b2RlLkFUVFJJQlVURV9OT0RFOworICAgIH0KKworICAgIGZ1bmN0aW9uIGMoKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIGRpdi5nZXRFbGVtZW50c0J5VGFnTmFtZSgnZGl2JykubGVuZ3RoID09PSAy
OworICAgIH0KKworICAgIGZ1bmN0aW9uIGQoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGRpdi5o
YXNBdHRyaWJ1dGUoJ2NvY29hJykgPT09IHRydWU7CisgICAgfQorCisgICAgZnVuY3Rpb24gbWFp
bigpCisgICAgeworICAgICAgICBpZiAoIWEoKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICAgICAgaWYgKCFiKCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIGlm
ICghYygpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBpZiAoIWQoKSkKKyAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisg
ICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxZTQ7ICsraSkgeworICAgICAgICBpZiAoIW1haW4oKSkK
KyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiZXJyb3IiKTsKKyAgICB9CisgICAgdGVzdFBh
c3NlZCgiQWxsIHRlc3RzIHBhc3NlZC4iKTsKK30oKSk7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwv
aHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>293682</attachid>
            <date>2016-11-02 11:41:34 -0700</date>
            <delta_ts>2016-11-02 13:07:08 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-162980-20161102113735.patch</filename>
            <type>text/plain</type>
            <size>179059</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA4MjcwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBk
ZWFmOGMwYmI4YTZkOGM5ZjEwYmE4MDllY2VmZTJkOWI0MDE2ZDljLi4xMzk1ZTQ5NWEzZjY0NmI0
MTEzYTBiMDY4ZTViZDViMjcxZGRmZTNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMzQgQEAKKzIwMTYtMTEtMDIgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFp
bC5jb20+CisKKyAgICAgICAgW0RPTUpJVF0gQWRkIERPTUpJVDo6U2lnbmF0dXJlCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjI5ODAKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGludHJv
ZHVjZXMgYSBuZXcgbWVjaGFuaXNtIGNhbGxlZCBET01KSVQ6OlNpZ25hdHVyZS4gV2UgY2FuIGFu
bm90YXRlIHRoZSBmdW5jdGlvbiB3aXRoIERPTUpJVDo6U2lnbmF0dXJlLgorICAgICAgICBET01K
SVQ6OlNpZ25hdHVyZSBoYXMgdHlwZSBpbmZvcm1hdGlvbiBvZiB0aGF0IGZ1bmN0aW9uLiBBbmQg
aXQgYWxzbyBtYWludGFpbnMgdGhlIGVmZmVjdCBvZiB0aGUgZnVuY3Rpb24gYW5kIHRoZQorICAg
ICAgICBwb2ludGVyIHRvIHRoZSB1bnNhZmUgZnVuY3Rpb24uIFRoZSB1bnNhZmUgZnVuY3Rpb24g
bWVhbnMgdGhlIGZ1bmN0aW9uIHdpdGhvdXQgdHlwZSBhbmQgYXJndW1lbnQgY291bnQgY2hlY2tz
LgorICAgICAgICBCeSB1c2luZyB0aGVzZSBpbmZvcm1hdGlvbiwgd2UgY2FuIHNlcGFyYXRlIHR5
cGUgYW5kIGFyZ3VtZW50IGNvdW50IGNoZWNrcyBmcm9tIHRoZSBmdW5jdGlvbi4gQW5kIHdlIGNh
biBlbWl0CisgICAgICAgIHRoZXNlIHRoaW5ncyBhcyBERkcgY2hlY2tzIGFuZCBjb252ZXJ0IHRo
ZSBmdW5jdGlvbiBjYWxsIGl0c2VsZiB0byBDYWxsRE9NIG5vZGUuIENhbGxET00gbm9kZSBjYW4g
Y2FsbCB0aGUgdW5zYWZlCisgICAgICAgIGZ1bmN0aW9uIGRpcmVjdGx5IHdpdGhvdXQgYW55IGNo
ZWNrcy4gRnVydGhlcm1vcmUsIHRoaXMgQ2FsbERPTSBub2RlIGNhbiByZXByZXNlbnQgaXRzIG93
biBjbG9iYmVyaXppbmcgcnVsZXMgYmFzZWQKKyAgICAgICAgb24gRE9NSklUOjpFZmZlY3QgbWFp
bnRhaW5lZCBieSBET01KSVQ6OlNpZ25hdHVyZS4gSXQgYWxsb3dzIHVzIHRvIG1ha2Ugb3BhcXVl
IENhbGwgbm9kZSB0byBhIENhbGxET00gbm9kZSB0aGF0CisgICAgICAgIG1lcmVseSByZWFkcyBz
b21lIHBhcnQgb2YgaGVhcC4gVGhlc2UgY2hhbmdlcyAoMSkgY2FuIGRyb3AgZHVwbGljYXRlIHR5
cGUgY2hlY2tzIGluIERGRywgKDIpIG9mZmVyIGFiaWxpdHkgdG8gbW92ZQorICAgICAgICBDYWxs
RE9NIG5vZGUgdG8gc29tZXdoZXJlLCBhbmQgKDMpIHRyYWNrIG1vcmUgZGV0YWlsZWQgaGVhcCBy
ZWFkcyBhbmQgd3JpdGVzIG9mIENhbGxET00gbm9kZXMuCisKKyAgICAgICAgV2UgZmlyc3QgZW1p
dCBDYWxsIG5vZGUgd2l0aCBET01KSVQ6OlNpZ25hdHVyZSBpbiBERkdCeXRlQ29kZVBhcnNlci4g
QW5kIGluIHRoZSBmaXh1cCBwaGFzZSwgd2UgYXR0ZW1wdCB0byBsb3dlcgorICAgICAgICBDYWxs
IG5vZGUgdG8gQ2FsbERPTSBub2RlIHdpdGggY2hlY2tzICYgZWRnZSBmaWx0ZXJzLiBUaGlzIGlz
IGJlY2F1c2Ugd2UgZG8gbm90IGtub3cgdGhlIHR5cGUgcHJlZGljdGlvbnMgaW4KKyAgICAgICAg
REZHQnl0ZUNvZGVQYXJzZXIgcGhhc2UuIElmIHdlIGFsd2F5cyBlbWl0IENhbGxET00gbm9kZSBp
biBERkdCeXRlQ29kZVBhcnNlciwgaWYgd2UgZXZhbHVhdGUgYGRpdi5nZXRBdHRyaWJ1dGUodHJ1
ZSlgCisgICAgICAgIHRoaW5neSwgdGhlIFVuY291bnRhYmxlIE9TUiBleGl0cyByZXBlYXRlZGx5
IGhhcHBlbiBiZWNhdXNlIEFJIGZpZ3VyZXMgb3V0IHRoZSBhYnN0cmFjdCB2YWx1ZSBpcyBjbGVh
cmVkLgorCisgICAgICAgIEN1cnJlbnRseSwgRE9NSklUIHNpZ25hdHVyZSBvbmx5IGFsbG93cyB0
aGUgdHlwZXMgdGhhdCBjYW4gcmVzaWRlIGluIEdQUi4gVGhpcyBpcyBiZWNhdXNlIHRoZSB0eXBl
cyBvZiB0aGUgdW5zYWZlCisgICAgICAgIGZ1bmN0aW9uIGFyZ3VtZW50cyBhcmUgcmVwcmVzZW50
ZWQgYXMgdGhlIHNlcXVlbmNlIG9mIHZvaWQqLiBJbiB0aGUgZnV0dXJlLCB3ZSB3aWxsIGV4dGVu
ZCB0byBhY2NlcHQgb3RoZXIgdHlwZXMgbGlrZQorICAgICAgICBmbG9hdCwgZG91YmxlIGV0Yy4K
KworICAgICAgICBXZSBhbm5vdGF0ZSBzZXZlcmFsIGZ1bmN0aW9ucyBpbiBFbGVtZW50LiBJbiBw
YXJ0aWN1bGFyLCB3ZSBhbm5vdGF0ZSBFbGVtZW50OjpnZXRBdHRyaWJ1dGUuIFRoaXMgYWxsb3dz
IHVzIHRvIHBlcmZvcm0KKyAgICAgICAgTElDTSBpbiBEcm9tYWVvIGRvbS1hdHRyIHRlc3QuIElu
IHRoZSBEcm9tYWVvIGRvbS1hdHRyIGdldEF0dHJpYnV0ZSB0ZXN0LCB3ZSBjYW4gc2VlIDMyeCBp
bXByb3ZlbWVudC4gKDEzNDk3NC44IHYucy4gNDIwMy40KQorCisgICAgICAgICogSmF2YVNjcmlw
dENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBieXRlY29kZS9DYWxs
VmFyaWFudC5oOgorICAgICAgICAoSlNDOjpDYWxsVmFyaWFudDo6ZnVuY3Rpb25FeGVjdXRhYmxl
KToKKyAgICAgICAgKEpTQzo6Q2FsbFZhcmlhbnQ6Om5hdGl2ZUV4ZWN1dGFibGUpOgorICAgICAg
ICAoSlNDOjpDYWxsVmFyaWFudDo6c2lnbmF0dXJlRm9yKToKKyAgICAgICAgKiBieXRlY29kZS9T
cGVjdWxhdGVkVHlwZS5oOgorICAgICAgICAoSlNDOjppc05vdFN0cmluZ1NwZWN1bGF0aW9uKToK
KyAgICAgICAgKEpTQzo6aXNOb3RJbnQzMlNwZWN1bGF0aW9uKToKKyAgICAgICAgKEpTQzo6aXNO
b3RCb29sZWFuU3BlY3VsYXRpb24pOgorICAgICAgICAqIGRmZy9ERkdBYnN0cmFjdEludGVycHJl
dGVySW5saW5lcy5oOgorICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0SW50ZXJwcmV0ZXI8QWJz
dHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyk6CisgICAgICAgICogZGZnL0RGR0J5dGVD
b2RlUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6YWRkQ2Fs
bCk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUNhbGwpOgorICAg
ICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjphdHRlbXB0VG9JbmxpbmVDYWxsKToKKyAg
ICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW5saW5pbmcpOgorICAgICAg
ICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVET01KSVRDYWxsKToKKyAgICAgICAg
KEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayk6CisgICAgICAgICogZGZnL0RG
R0Nsb2JiZXJpemUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpjbG9iYmVyaXplKToKKyAgICAgICAg
KiBkZmcvREZHRG9lc0dDLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpkb2VzR0MpOgorICAgICAg
ICAqIGRmZy9ERkdGaXh1cFBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpGaXh1cFBoYXNl
OjpmaXh1cE5vZGUpOgorICAgICAgICAoSlNDOjpERkc6OkZpeHVwUGhhc2U6OmF0dGVtcHRUb01h
a2VDYWxsRE9NKToKKyAgICAgICAgKEpTQzo6REZHOjpGaXh1cFBoYXNlOjpmaXh1cENoZWNrRE9N
KToKKyAgICAgICAgKEpTQzo6REZHOjpGaXh1cFBoYXNlOjpmaXh1cENhbGxET00pOgorICAgICAg
ICAqIGRmZy9ERkdOb2RlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpjb252ZXJ0VG9D
YWxsRE9NKToKKyAgICAgICAgKiBkZmcvREZHTm9kZS5oOgorICAgICAgICAoSlNDOjpERkc6Ok5v
ZGU6Omhhc0hlYXBQcmVkaWN0aW9uKToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpzaG91bGRT
cGVjdWxhdGVOb3RJbnQzMik6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6c2hvdWxkU3BlY3Vs
YXRlTm90Qm9vbGVhbik6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6c2hvdWxkU3BlY3VsYXRl
Tm90U3RyaW5nKToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpoYXNTaWduYXR1cmUpOgorICAg
ICAgICAoSlNDOjpERkc6Ok5vZGU6OnNpZ25hdHVyZSk6CisgICAgICAgICogZGZnL0RGR05vZGVU
eXBlLmg6CisgICAgICAgICogZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcDoK
KyAgICAgICAgKiBkZmcvREZHU2FmZVRvRXhlY3V0ZS5oOgorICAgICAgICAoSlNDOjpERkc6OnNh
ZmVUb0V4ZWN1dGUpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHA6CisgICAg
ICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVDYWxsRE9NKToKKyAgICAgICAg
KiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuaDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2
ZUpJVDo6Y2FsbE9wZXJhdGlvbik6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJf
NjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToKKyAg
ICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGRvbWppdC9ET01KSVRFZmZlY3Qu
aDoKKyAgICAgICAgKEpTQzo6RE9NSklUOjpFZmZlY3Q6OkVmZmVjdCk6CisgICAgICAgIChKU0M6
OkRPTUpJVDo6RWZmZWN0Ojpmb3JXcml0ZSk6CisgICAgICAgIChKU0M6OkRPTUpJVDo6RWZmZWN0
Ojpmb3JSZWFkKToKKyAgICAgICAgKEpTQzo6RE9NSklUOjpFZmZlY3Q6OmZvclJlYWRXcml0ZSk6
CisgICAgICAgIChKU0M6OkRPTUpJVDo6RWZmZWN0Ojpmb3JQdXJlKToKKyAgICAgICAgKEpTQzo6
RE9NSklUOjpFZmZlY3Q6OmZvckRlZik6CisgICAgICAgIChKU0M6OkRPTUpJVDo6RWZmZWN0Ojpt
dXN0R2VuZXJhdGUpOgorICAgICAgICBJbiBjbGFuZywgd2UgY2Fubm90IG1ha2UgdGhpcyBFZmZl
Y3QgY29uc3RydWN0b3IgY29uc3RleHByIGlmIHdlIHVzZSBPcHRpb25hbDxIZWFwUmFuZ2U+Lgor
ICAgICAgICBTbyB3ZSB1c2UgSGVhcFJhbmdlOjp0b3AoKSBmb3IgTnVsbG9wdCBkZWYgbm93Lgor
CisgICAgICAgICogZG9taml0L0RPTUpJVEhlYXBSYW5nZS5oOgorICAgICAgICAoSlNDOjpET01K
SVQ6OkhlYXBSYW5nZTo6ZnJvbVJhdyk6CisgICAgICAgIChKU0M6OkRPTUpJVDo6SGVhcFJhbmdl
OjpvcGVyYXRvciBib29sKToKKyAgICAgICAgKEpTQzo6RE9NSklUOjpIZWFwUmFuZ2U6Om9wZXJh
dG9yPT0pOgorICAgICAgICAoSlNDOjpET01KSVQ6OkhlYXBSYW5nZTo6b3BlcmF0b3IhPSk6Cisg
ICAgICAgIChKU0M6OkRPTUpJVDo6SGVhcFJhbmdlOjpmcm9tQ29uc3RhbnQpOgorICAgICAgICAq
IGRvbWppdC9ET01KSVRTaWduYXR1cmUuaDogQ29waWVkIGZyb20gU291cmNlL0phdmFTY3JpcHRD
b3JlL2RvbWppdC9ET01KSVRFZmZlY3QuaC4KKyAgICAgICAgKEpTQzo6RE9NSklUOjpTaWduYXR1
cmU6OlNpZ25hdHVyZSk6CisgICAgICAgIChKU0M6OkRPTUpJVDo6U2lnbmF0dXJlOjphcmd1bWVu
dENvdW50KToKKyAgICAgICAgKEpTQzo6RE9NSklUOjpTaWduYXR1cmU6OmNoZWNrRE9NKToKKyAg
ICAgICAgKiBmdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpjYW5D
b21waWxlKToKKyAgICAgICAgKiBmdGwvRlRMTG93ZXJERkdUb0IzLmNwcDoKKyAgICAgICAgKEpT
Qzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZU5vZGUpOgorICAgICAgICAoSlNDOjpG
VEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlQ2FsbERPTSk6CisgICAgICAgICogaml0L0pJ
VE9wZXJhdGlvbnMuaDoKKyAgICAgICAgKiBqaXQvSklUVGh1bmtzLmNwcDoKKyAgICAgICAgKEpT
Qzo6SklUVGh1bmtzOjpob3N0RnVuY3Rpb25TdHViKToKKyAgICAgICAgKiBqaXQvSklUVGh1bmtz
Lmg6CisgICAgICAgICogcnVudGltZS9KU0JvdW5kRnVuY3Rpb24uY3BwOgorICAgICAgICAoSlND
OjpKU0JvdW5kRnVuY3Rpb246OmNyZWF0ZSk6CisgICAgICAgICogcnVudGltZS9KU0NlbGwuaDoK
KyAgICAgICAgKiBydW50aW1lL0pTRnVuY3Rpb24uY3BwOgorICAgICAgICAoSlNDOjpKU0Z1bmN0
aW9uOjpjcmVhdGUpOgorICAgICAgICAqIHJ1bnRpbWUvSlNGdW5jdGlvbi5oOgorICAgICAgICAq
IHJ1bnRpbWUvSlNOYXRpdmVTdGRGdW5jdGlvbi5jcHA6CisgICAgICAgIChKU0M6OkpTTmF0aXZl
U3RkRnVuY3Rpb246OmNyZWF0ZSk6CisgICAgICAgICogcnVudGltZS9KU09iamVjdC5jcHA6Cisg
ICAgICAgIChKU0M6OkpTT2JqZWN0OjpwdXREaXJlY3ROYXRpdmVGdW5jdGlvbik6CisgICAgICAg
ICogcnVudGltZS9KU09iamVjdC5oOgorICAgICAgICAqIHJ1bnRpbWUvTG9va3VwLmg6CisgICAg
ICAgIChKU0M6Okhhc2hUYWJsZVZhbHVlOjpmdW5jdGlvbkxlbmd0aCk6CisgICAgICAgIChKU0M6
Okhhc2hUYWJsZVZhbHVlOjpzaWduYXR1cmUpOgorICAgICAgICAoSlNDOjpyZWlmeVN0YXRpY1By
b3BlcnR5KToKKyAgICAgICAgKiBydW50aW1lL05hdGl2ZUV4ZWN1dGFibGUuY3BwOgorICAgICAg
ICAoSlNDOjpOYXRpdmVFeGVjdXRhYmxlOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpOYXRpdmVF
eGVjdXRhYmxlOjpOYXRpdmVFeGVjdXRhYmxlKToKKyAgICAgICAgKiBydW50aW1lL05hdGl2ZUV4
ZWN1dGFibGUuaDoKKyAgICAgICAgKiBydW50aW1lL1Byb3BlcnR5U2xvdC5oOgorICAgICAgICAq
IHJ1bnRpbWUvVk0uY3BwOgorICAgICAgICAoSlNDOjpWTTo6Z2V0SG9zdEZ1bmN0aW9uKToKKyAg
ICAgICAgKiBydW50aW1lL1ZNLmg6CisKIDIwMTYtMTEtMDEgIFJ5b3N1a2UgTml3YSAgPHJuaXdh
QHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmVtb3ZlIENVU1RPTV9FTEVNRU5UUyBidWlsZCBmbGFn
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cKaW5kZXggOWFlZGU3NjM2MWNkNDU1YjAxNzBkMjIxOTVjNDkyNWNiZGU1NDNiMC4u
Y2NjMjQ5NWVlYjZmNzdhOGY2YjlmODJlYjc3NWE4N2QwMTlhOTlhOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDk4IEBACisyMDE2LTExLTAyICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21h
aWwuY29tPgorCisgICAgICAgIFtET01KSVRdIEFkZCBET01KSVQ6OlNpZ25hdHVyZQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYyOTgwCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2UgaW50cm9kdWNlIERP
TUpJVDo6U2lnbmF0dXJlLiBUaGlzIHNpZ25hdHVyZSBvYmplY3QgaXMgYXV0b21hdGljYWxseSBn
ZW5lcmF0ZWQgYnkgSURMIGNvZGUgZ2VuZXJhdG9yLgorICAgICAgICBJdCBob2xkcyAoMSkgdHlw
ZXMsICgyKSBwb2ludGVyIHRvIHRoZSB1bnNhZmUgZnVuY3Rpb24gKHRoZSBmdW5jdGlvbiB3aXRo
b3V0IGNoZWNrcyksIGFuZCAoMykgdGhlIGVmZmVjdAorICAgICAgICBvZiB0aGUgZnVuY3Rpb24u
IFdlIHVzZSBjb25zdGV4cHIgdG8gaW5pdGlhbGl6ZSBET01KSVQ6OlNpZ25hdHVyZSB3aXRob3V0
IGludm9raW5nIGdsb2JhbCBjb25zdHJ1Y3RvcnMuCisgICAgICAgIFRodXMgdGhlIGNvbnRlbnQg
aXMgZW1iZWRkZWQgaW50byB0aGUgYmluYXJ5IGFzIHRoZSBjb25zdGFudCB2YWx1ZXMuCisKKyAg
ICAgICAgV2UgYWxzbyBjbGVhbiB1cCB0aGUgSURMIGNvZGUgZ2VuZXJhdG9yIHJlbGF0ZWQgdG8g
RE9NSklUIHBhcnQuIEluc3RlYWQgb2Ygc3dpdGNoaW5nIHRoaW5ncyBpbnNpZGUgSURMCisgICAg
ICAgIGNvZGUgZ2VuZXJhdG9yLCB3ZSB1c2UgQysrIHRlbXBsYXRlIHRvIGRpc3BhdGNoIHRoaW5n
cyBhdCBjb21waWxlIHRpbWUuIFRoaXMgdGVtcGxhdGUgbWV0YSBwcm9ncmFtbWluZworICAgICAg
ICBpcyBoaWdobHkgdXRpbGl6ZWQgaW4gSURMIHRoZXNlIGRheXMuCisKKyAgICAgICAgVG8gbWFr
ZSBET01KSVQ6OlNpZ25hdHVyZSBjb25zdGV4cHIsIHdlIGFsc28gbmVlZCB0byBkZWZpbmUgRE9N
SklUIGFic3RyYWN0IGhlYXAgdGhpbmdzIGluIHRoZSBidWlsZCB0aW1lLgorICAgICAgICBUbyBk
byBzbywgd2UgaW50cm9kdWNlIGEgdGlueSBSdWJ5IHNjcmlwdCB0byBjYWxjdWxhdGUgdGhlIHJh
bmdlIG9mIGFic3RyYWN0IGhlYXBzLiBXZSBjYW4gb2ZmZXIgdGhlIGFic3RyYWN0CisgICAgICAg
IGhlYXAgdHJlZSBhcyBZQU1MIGZvcm1hdCBhbmQgdGhlIHNjcmlwdCB3aWxsIHByb2R1Y2UgYSBD
KysgaGVhZGVyIGhvbGRpbmcgdGhlIGNhbGN1bGF0ZWQgYWJzdHJhY3QgaGVhcCByYW5nZXMKKwor
ICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLm1ha2U6
CisgICAgICAgICogRm9yd2FyZGluZ0hlYWRlcnMvYnl0ZWNvZGUvU3BlY3VsYXRlZFR5cGUuaDog
UmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL2RvbWppdC9ET01KSVRBYnN0cmFjdEhlYXBSZXBv
c2l0b3J5LmguCisgICAgICAgICogRm9yd2FyZGluZ0hlYWRlcnMvZG9taml0L0RPTUpJVFNpZ25h
dHVyZS5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvZG9taml0L0RPTUpJVEFic3RyYWN0
SGVhcFJlcG9zaXRvcnkuY3BwLgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvajoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5oOgorICAg
ICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtOgorICAgICAgICAoR2Vu
ZXJhdGVIZWFkZXIpOgorICAgICAgICAoR2VuZXJhdGVQcm9wZXJ0aWVzSGFzaFRhYmxlKToKKyAg
ICAgICAgKEdldFVuc2FmZUFyZ3VtZW50VHlwZSk6CisgICAgICAgIChHZXRBcmd1bWVudFR5cGVG
aWx0ZXIpOgorICAgICAgICAoR2V0UmVzdWx0VHlwZUZpbHRlcik6CisgICAgICAgIChHZW5lcmF0
ZUltcGxlbWVudGF0aW9uKToKKyAgICAgICAgKFVuc2FmZVRvTmF0aXZlKToKKyAgICAgICAgKEdl
bmVyYXRlSGFzaFRhYmxlVmFsdWVBcnJheSk6CisgICAgICAgIChDb21wdXRlRnVuY3Rpb25TcGVj
aWFsKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0lETEF0dHJpYnV0ZXMudHh0OgorICAg
ICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RET01KSVQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6QmluZGluZ0NhbGxlcjxKU1Rlc3RET01KSVQ+OjpjYXN0Rm9yT3BlcmF0aW9u
KToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RET01KSVRBbnlBdHRyRE9NSklUOjpUZXN0RE9NSklU
QW55QXR0ckRPTUpJVCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0RE9NSklUQm9vbGVhbkF0dHJE
T01KSVQ6OlRlc3RET01KSVRCb29sZWFuQXR0ckRPTUpJVCk6CisgICAgICAgIChXZWJDb3JlOjpU
ZXN0RE9NSklUQnl0ZUF0dHJET01KSVQ6OlRlc3RET01KSVRCeXRlQXR0ckRPTUpJVCk6CisgICAg
ICAgIChXZWJDb3JlOjpUZXN0RE9NSklUT2N0ZXRBdHRyRE9NSklUOjpUZXN0RE9NSklUT2N0ZXRB
dHRyRE9NSklUKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RET01KSVRTaG9ydEF0dHJET01KSVQ6
OlRlc3RET01KSVRTaG9ydEF0dHJET01KSVQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdERPTUpJ
VFVuc2lnbmVkU2hvcnRBdHRyRE9NSklUOjpUZXN0RE9NSklUVW5zaWduZWRTaG9ydEF0dHJET01K
SVQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdERPTUpJVExvbmdBdHRyRE9NSklUOjpUZXN0RE9N
SklUTG9uZ0F0dHJET01KSVQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdERPTUpJVFVuc2lnbmVk
TG9uZ0F0dHJET01KSVQ6OlRlc3RET01KSVRVbnNpZ25lZExvbmdBdHRyRE9NSklUKToKKyAgICAg
ICAgKFdlYkNvcmU6OlRlc3RET01KSVRMb25nTG9uZ0F0dHJET01KSVQ6OlRlc3RET01KSVRMb25n
TG9uZ0F0dHJET01KSVQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdERPTUpJVFVuc2lnbmVkTG9u
Z0xvbmdBdHRyRE9NSklUOjpUZXN0RE9NSklUVW5zaWduZWRMb25nTG9uZ0F0dHJET01KSVQpOgor
ICAgICAgICAoV2ViQ29yZTo6VGVzdERPTUpJVEZsb2F0QXR0ckRPTUpJVDo6VGVzdERPTUpJVEZs
b2F0QXR0ckRPTUpJVCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0RE9NSklUVW5yZXN0cmljdGVk
RmxvYXRBdHRyRE9NSklUOjpUZXN0RE9NSklUVW5yZXN0cmljdGVkRmxvYXRBdHRyRE9NSklUKToK
KyAgICAgICAgKFdlYkNvcmU6OlRlc3RET01KSVREb3VibGVBdHRyRE9NSklUOjpUZXN0RE9NSklU
RG91YmxlQXR0ckRPTUpJVCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0RE9NSklUVW5yZXN0cmlj
dGVkRG91YmxlQXR0ckRPTUpJVDo6VGVzdERPTUpJVFVucmVzdHJpY3RlZERvdWJsZUF0dHJET01K
SVQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdERPTUpJVERvbVN0cmluZ0F0dHJET01KSVQ6OlRl
c3RET01KSVREb21TdHJpbmdBdHRyRE9NSklUKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RET01K
SVRCeXRlU3RyaW5nQXR0ckRPTUpJVDo6VGVzdERPTUpJVEJ5dGVTdHJpbmdBdHRyRE9NSklUKToK
KyAgICAgICAgKFdlYkNvcmU6OlRlc3RET01KSVRVc3ZTdHJpbmdBdHRyRE9NSklUOjpUZXN0RE9N
SklUVXN2U3RyaW5nQXR0ckRPTUpJVCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0RE9NSklUTm9k
ZUF0dHJET01KSVQ6OlRlc3RET01KSVROb2RlQXR0ckRPTUpJVCk6CisgICAgICAgIChXZWJDb3Jl
OjpUZXN0RE9NSklUQm9vbGVhbk51bGxhYmxlQXR0ckRPTUpJVDo6VGVzdERPTUpJVEJvb2xlYW5O
dWxsYWJsZUF0dHJET01KSVQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdERPTUpJVEJ5dGVOdWxs
YWJsZUF0dHJET01KSVQ6OlRlc3RET01KSVRCeXRlTnVsbGFibGVBdHRyRE9NSklUKToKKyAgICAg
ICAgKFdlYkNvcmU6OlRlc3RET01KSVRPY3RldE51bGxhYmxlQXR0ckRPTUpJVDo6VGVzdERPTUpJ
VE9jdGV0TnVsbGFibGVBdHRyRE9NSklUKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RET01KSVRT
aG9ydE51bGxhYmxlQXR0ckRPTUpJVDo6VGVzdERPTUpJVFNob3J0TnVsbGFibGVBdHRyRE9NSklU
KToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RET01KSVRVbnNpZ25lZFNob3J0TnVsbGFibGVBdHRy
RE9NSklUOjpUZXN0RE9NSklUVW5zaWduZWRTaG9ydE51bGxhYmxlQXR0ckRPTUpJVCk6CisgICAg
ICAgIChXZWJDb3JlOjpUZXN0RE9NSklUTG9uZ051bGxhYmxlQXR0ckRPTUpJVDo6VGVzdERPTUpJ
VExvbmdOdWxsYWJsZUF0dHJET01KSVQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdERPTUpJVFVu
c2lnbmVkTG9uZ051bGxhYmxlQXR0ckRPTUpJVDo6VGVzdERPTUpJVFVuc2lnbmVkTG9uZ051bGxh
YmxlQXR0ckRPTUpJVCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0RE9NSklUTG9uZ0xvbmdOdWxs
YWJsZUF0dHJET01KSVQ6OlRlc3RET01KSVRMb25nTG9uZ051bGxhYmxlQXR0ckRPTUpJVCk6Cisg
ICAgICAgIChXZWJDb3JlOjpUZXN0RE9NSklUVW5zaWduZWRMb25nTG9uZ051bGxhYmxlQXR0ckRP
TUpJVDo6VGVzdERPTUpJVFVuc2lnbmVkTG9uZ0xvbmdOdWxsYWJsZUF0dHJET01KSVQpOgorICAg
ICAgICAoV2ViQ29yZTo6VGVzdERPTUpJVEZsb2F0TnVsbGFibGVBdHRyRE9NSklUOjpUZXN0RE9N
SklURmxvYXROdWxsYWJsZUF0dHJET01KSVQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdERPTUpJ
VFVucmVzdHJpY3RlZEZsb2F0TnVsbGFibGVBdHRyRE9NSklUOjpUZXN0RE9NSklUVW5yZXN0cmlj
dGVkRmxvYXROdWxsYWJsZUF0dHJET01KSVQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdERPTUpJ
VERvdWJsZU51bGxhYmxlQXR0ckRPTUpJVDo6VGVzdERPTUpJVERvdWJsZU51bGxhYmxlQXR0ckRP
TUpJVCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0RE9NSklUVW5yZXN0cmljdGVkRG91YmxlTnVs
bGFibGVBdHRyRE9NSklUOjpUZXN0RE9NSklUVW5yZXN0cmljdGVkRG91YmxlTnVsbGFibGVBdHRy
RE9NSklUKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RET01KSVREb21TdHJpbmdOdWxsYWJsZUF0
dHJET01KSVQ6OlRlc3RET01KSVREb21TdHJpbmdOdWxsYWJsZUF0dHJET01KSVQpOgorICAgICAg
ICAoV2ViQ29yZTo6VGVzdERPTUpJVEJ5dGVTdHJpbmdOdWxsYWJsZUF0dHJET01KSVQ6OlRlc3RE
T01KSVRCeXRlU3RyaW5nTnVsbGFibGVBdHRyRE9NSklUKToKKyAgICAgICAgKFdlYkNvcmU6OlRl
c3RET01KSVRVc3ZTdHJpbmdOdWxsYWJsZUF0dHJET01KSVQ6OlRlc3RET01KSVRVc3ZTdHJpbmdO
dWxsYWJsZUF0dHJET01KSVQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdERPTUpJVE5vZGVOdWxs
YWJsZUF0dHJET01KSVQ6OlRlc3RET01KSVROb2RlTnVsbGFibGVBdHRyRE9NSklUKToKKyAgICAg
ICAgKFdlYkNvcmU6OmpzVGVzdERPTUpJVFByb3RvdHlwZUZ1bmN0aW9uR2V0QXR0cmlidXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdERPTUpJVFByb3RvdHlwZUZ1bmN0aW9uR2V0QXR0cmli
dXRlQ2FsbGVyKToKKyAgICAgICAgKFdlYkNvcmU6OnVuc2FmZUpzVGVzdERPTUpJVFByb3RvdHlw
ZUZ1bmN0aW9uR2V0QXR0cmlidXRlKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
VGVzdERPTUpJVC5pZGw6CisgICAgICAgICogZG9tL0VsZW1lbnQuaWRsOgorICAgICAgICAqIGRv
bWppdC9ET01KSVRBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LnlhbWw6IEFkZGVkLgorICAgICAgICAq
IGRvbWppdC9ET01KSVRJRExDb252ZXJ0Lmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6RE9N
SklUOjpEaXJlY3RDb252ZXJ0ZXI8SURMRE9NU3RyaW5nPjo6ZGlyZWN0Q29udmVydDxTdHJpbmdD
b252ZXJzaW9uQ29uZmlndXJhdGlvbjo6Tm9ybWFsPik6CisgICAgICAgICogZG9taml0L0RPTUpJ
VElETFR5cGUuaDogQWRkZWQuCisgICAgICAgICogZG9taml0L0RPTUpJVElETFR5cGVGaWx0ZXIu
aDogQWRkZWQuCisgICAgICAgICogZG9taml0L0pTRG9jdW1lbnRET01KSVQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RG9jdW1lbnREb2N1bWVudEVsZW1lbnRET01KSVQ6OmNhbGxET01HZXR0ZXIp
OgorICAgICAgICAqIGRvbWppdC9KU05vZGVET01KSVQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Tm9kZUZpcnN0Q2hpbGRET01KSVQ6OmNhbGxET01HZXR0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6
Tm9kZUxhc3RDaGlsZERPTUpJVDo6Y2FsbERPTUdldHRlcik6CisgICAgICAgIChXZWJDb3JlOjpO
b2RlTmV4dFNpYmxpbmdET01KSVQ6OmNhbGxET01HZXR0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6
Tm9kZVByZXZpb3VzU2libGluZ0RPTUpJVDo6Y2FsbERPTUdldHRlcik6CisgICAgICAgIChXZWJD
b3JlOjpOb2RlUGFyZW50Tm9kZURPTUpJVDo6Y2FsbERPTUdldHRlcik6CisgICAgICAgIChXZWJD
b3JlOjpOb2RlT3duZXJEb2N1bWVudERPTUpJVDo6Y2FsbERPTUdldHRlcik6CisgICAgICAgICog
ZG9taml0L2dlbmVyYXRlLWFic3RyYWN0LWhlYXAucmI6IEFkZGVkLgorCiAyMDE2LTExLTAxICBE
YXZlIEh5YXR0ICA8aHlhdHRAYXBwbGUuY29tPgogCiAgICAgICAgIFtDU1MgUGFyc2VyXSBTdXBw
b3J0IHRoZSBzaGFkb3cgRE9NCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2
YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDJmYmQy
ZTRjZjMxN2MyZjg0ZTJlMTM5N2Q4NTE0MTFiNTk2N2UwZTIuLmJmNGExOWQ1OTI3ZGZkZTFhOWZm
NmYyNGEzZTliNWY2Yzc4MGJlOWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9K
YXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0y
MTg0LDYgKzIxODQsNyBAQAogCQlFMzNGNTA4NTFCODQzN0EwMDA0MTM4NTYgLyogSlNJbnRlcm5h
bFByb21pc2VEZWZlcnJlZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRTMzRjUwODMxQjg0MzdBMDAwNDEzODU2IC8qIEpTSW50ZXJuYWxQcm9taXNlRGVm
ZXJyZWQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQlFMzNGNTA4NzFCODQ0OUVGMDA0MTM4NTYgLyogSlNJbnRlcm5hbFByb21pc2VDb25zdHJ1Y3Rv
ci5sdXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUz
M0Y1MDg2MUI4NDQ5RUYwMDQxMzg1NiAvKiBKU0ludGVybmFsUHJvbWlzZUNvbnN0cnVjdG9yLmx1
dC5oICovOyB9OwogCQlFMzRFREJGNzFEQjVGRkM5MDBEQzg3QTUgLyogRnJhbWVUcmFjZXJzLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzRFREJGNjFE
QjVGRkMxMDBEQzg3QTUgLyogRnJhbWVUcmFjZXJzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJRTM1MDcwOEExREM0OUJCRjAwODlCQ0Q2IC8qIERP
TUpJVFNpZ25hdHVyZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gRTM1MDcwODkxREM0OUJCNjAwODlCQ0Q2IC8qIERPTUpJVFNpZ25hdHVyZS5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUUzNTQ2MjJCMUI2
MDY1RDEwMDU0NTM4NiAvKiBDb25zdHJ1Y3RBYmlsaXR5LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzU0NjIyQTFCNjA2NUQxMDA1NDUzODYgLyogQ29u
c3RydWN0QWJpbGl0eS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCUUzNTU1QjhBMURBRTAzQTUwMEYzNjkyMSAvKiBET01KSVRDYWxsRE9NR2V0dGVy
UGF0Y2hwb2ludC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRTM1NTVCODkxREFFMDNBMjAwRjM2OTIxIC8qIERPTUpJVENhbGxET01HZXR0ZXJQYXRjaHBv
aW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
RTM1NUYzNTIxQjdEQzg1MzAwQzUwREM1IC8qIE1vZHVsZUxvYWRlclByb3RvdHlwZS5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzU1RjM1MDFCN0RD
ODUzMDBDNTBEQzUgLyogTW9kdWxlTG9hZGVyUHJvdG90eXBlLmNwcCAqLzsgfTsKQEAgLTQ1ODYs
NiArNDU4Nyw3IEBACiAJCUUzM0Y1MDg2MUI4NDQ5RUYwMDQxMzg1NiAvKiBKU0ludGVybmFsUHJv
bWlzZUNvbnN0cnVjdG9yLmx1dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBK
U0ludGVybmFsUHJvbWlzZUNvbnN0cnVjdG9yLmx1dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlFMzNGNTA4ODFCODQ0QTFBMDA0MTM4NTYgLyogSW50ZXJuYWxQcm9taXNlQ29uc3Ry
dWN0b3IuanMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmphdmFzY3JpcHQ7IHBhdGggPSBJbnRlcm5h
bFByb21pc2VDb25zdHJ1Y3Rvci5qczsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM0
RURCRjYxREI1RkZDMTAwREM4N0E1IC8qIEZyYW1lVHJhY2Vycy5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBGcmFtZVRyYWNlcnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJRTM1MDcwODkxREM0OUJCNjAwODlCQ0Q2IC8qIERPTUpJVFNpZ25hdHVyZS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBET01KSVRTaWduYXR1cmUuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM1NDYyMkExQjYwNjVEMTAwNTQ1Mzg2IC8qIENvbnN0cnVj
dEFiaWxpdHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29uc3RydWN0QWJp
bGl0eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzU1NUI4OTFEQUUwM0EyMDBG
MzY5MjEgLyogRE9NSklUQ2FsbERPTUdldHRlclBhdGNocG9pbnQuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gRE9NSklUQ2FsbERPTUdldHRlclBhdGNocG9pbnQuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM1NUYzNTAxQjdEQzg1MzAwQzUwREM1IC8qIE1vZHVs
ZUxvYWRlclByb3RvdHlwZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBNb2R1bGVMb2FkZXJQcm90b3R5cGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpA
QCAtNzUwMyw2ICs3NTA1LDcgQEAKIAkJCQlFMzdBRDgzQTFEQTQ5MjgwMDBGM0Q0MTIgLyogRE9N
SklUUGF0Y2hwb2ludFBhcmFtcy5oICovLAogCQkJCUUzN0FEODNCMURBNDkyODAwMEYzRDQxMiAv
KiBET01KSVRSZWcuaCAqLywKIAkJCQlFM0NCMUUyNDFEQTc1NDBBMDBGQTFFNTYgLyogRE9NSklU
U2xvd1BhdGhDYWxscy5oICovLAorCQkJCUUzNTA3MDg5MURDNDlCQjYwMDg5QkNENiAvKiBET01K
SVRTaWduYXR1cmUuaCAqLywKIAkJCQlFM0ZGQzg1MjFEQUQ3RDEwMDBERUE1M0UgLyogRE9NSklU
VmFsdWUuaCAqLywKIAkJCSk7CiAJCQlwYXRoID0gZG9taml0OwpAQCAtODQyMyw2ICs4NDI2LDcg
QEAKIAkJCQk0M0FCMjZDNjFDMUE1MzU5MDBEODJBRTYgLyogQjNNYXRoRXh0cmFzLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlBRDJGQ0JGMzFEQjU4REFEMDBCM0U3MzYgLyogV2ViQXNzZW1ibHlJbnN0
YW5jZVByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxOEM0MjkwRTE2RjVDRDAwQjM0
NDYwIC8qIEpTU3RyaW5nUmVmQ0YuaCBpbiBIZWFkZXJzICovLAorCQkJCUUzNTA3MDhBMURDNDlC
QkYwMDg5QkNENiAvKiBET01KSVRTaWduYXR1cmUuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBMjhE
NEE4MTc3QjcxQzgwMDA3RkEzQyAvKiBKU1N0cmluZ1JlZlByaXZhdGUuaCBpbiBIZWFkZXJzICov
LAogCQkJCTBGOTE5RDBEMTU3RUUwQTIwMDRBNEU3RCAvKiBKU1N5bWJvbFRhYmxlT2JqZWN0Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQk3MEVDQTYwNjFBRkRCRUEyMDA0NDk3MzkgLyogSlNUZW1wbGF0
ZVJlZ2lzdHJ5S2V5LmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9DYWxsVmFyaWFudC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0NhbGxWYXJpYW50LmgKaW5kZXggZGU2ODgwMDZlZjFhOTllOWRkNjBiMDFhNmUwMTc3
Y2I5OGVjN2I1MS4uY2IyODhjNjBiN2E0ZjEzOGJhZjIxNDI4NDllMTM5MWE4ZDExMWJhNyAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxWYXJpYW50LmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxWYXJpYW50LmgKQEAgLTI4LDYg
KzI4LDcgQEAKICNpbmNsdWRlICJGdW5jdGlvbkV4ZWN1dGFibGUuaCIKICNpbmNsdWRlICJKU0Nl
bGwuaCIKICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCisjaW5jbHVkZSAiTmF0aXZlRXhlY3V0YWJs
ZS5oIgogCiBuYW1lc3BhY2UgSlNDIHsKIApAQCAtMTIwLDYgKzEyMSwyMCBAQCBjbGFzcyBDYWxs
VmFyaWFudCB7CiAgICAgICAgICAgICByZXR1cm4ganNEeW5hbWljQ2FzdDxGdW5jdGlvbkV4ZWN1
dGFibGUqPihleGVjdXRhYmxlKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQorCisg
ICAgTmF0aXZlRXhlY3V0YWJsZSogbmF0aXZlRXhlY3V0YWJsZSgpIGNvbnN0CisgICAgeworICAg
ICAgICBpZiAoRXhlY3V0YWJsZUJhc2UqIGV4ZWN1dGFibGUgPSB0aGlzLT5leGVjdXRhYmxlKCkp
CisgICAgICAgICAgICByZXR1cm4ganNEeW5hbWljQ2FzdDxOYXRpdmVFeGVjdXRhYmxlKj4oZXhl
Y3V0YWJsZSk7CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KKworICAgIGNvbnN0IERP
TUpJVDo6U2lnbmF0dXJlKiBzaWduYXR1cmVGb3IoQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5k
KSBjb25zdAorICAgIHsKKyAgICAgICAgaWYgKE5hdGl2ZUV4ZWN1dGFibGUqIG5hdGl2ZUV4ZWN1
dGFibGUgPSB0aGlzLT5uYXRpdmVFeGVjdXRhYmxlKCkpCisgICAgICAgICAgICByZXR1cm4gbmF0
aXZlRXhlY3V0YWJsZS0+c2lnbmF0dXJlRm9yKGtpbmQpOworICAgICAgICByZXR1cm4gbnVsbHB0
cjsKKyAgICB9CiAgICAgCiAgICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0Owog
ICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NwZWN1bGF0
ZWRUeXBlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3BlY3VsYXRlZFR5cGUu
aAppbmRleCBmNDNkZmNkMzE1ODcxZTk4OTUzZWEyZGRkYzRiZjMzNTI1Y2NkZmRmLi5lMjNmZDJj
NWY1NGNlZTA5YzdhMjNiZGMxNDk5OTBiNjA5YjAxOTAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3BlY3VsYXRlZFR5cGUuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvU3BlY3VsYXRlZFR5cGUuaApAQCAtMTUxLDYgKzE1MSwxMSBAQCBp
bmxpbmUgYm9vbCBpc1N0cmluZ1NwZWN1bGF0aW9uKFNwZWN1bGF0ZWRUeXBlIHZhbHVlKQogICAg
IHJldHVybiAhIXZhbHVlICYmICh2YWx1ZSAmIFNwZWNTdHJpbmcpID09IHZhbHVlOwogfQogCitp
bmxpbmUgYm9vbCBpc05vdFN0cmluZ1NwZWN1bGF0aW9uKFNwZWN1bGF0ZWRUeXBlIHZhbHVlKQor
eworICAgIHJldHVybiB2YWx1ZSAmJiAhKHZhbHVlICYgU3BlY1N0cmluZyk7Cit9CisKIGlubGlu
ZSBib29sIGlzU3RyaW5nT3JPdGhlclNwZWN1bGF0aW9uKFNwZWN1bGF0ZWRUeXBlIHZhbHVlKQog
ewogICAgIHJldHVybiAhIXZhbHVlICYmICh2YWx1ZSAmIChTcGVjU3RyaW5nIHwgU3BlY090aGVy
KSkgPT0gdmFsdWU7CkBAIC0zMDMsNiArMzA4LDExIEBAIGlubGluZSBib29sIGlzSW50MzJTcGVj
dWxhdGlvbihTcGVjdWxhdGVkVHlwZSB2YWx1ZSkKICAgICByZXR1cm4gdmFsdWUgJiYgISh2YWx1
ZSAmIH5TcGVjSW50MzJPbmx5KTsKIH0KIAoraW5saW5lIGJvb2wgaXNOb3RJbnQzMlNwZWN1bGF0
aW9uKFNwZWN1bGF0ZWRUeXBlIHZhbHVlKQoreworICAgIHJldHVybiB2YWx1ZSAmJiAhKHZhbHVl
ICYgU3BlY0ludDMyT25seSk7Cit9CisKIGlubGluZSBib29sIGlzSW50MzJPckJvb2xlYW5TcGVj
dWxhdGlvbihTcGVjdWxhdGVkVHlwZSB2YWx1ZSkKIHsKICAgICByZXR1cm4gdmFsdWUgJiYgISh2
YWx1ZSAmIH4oU3BlY0Jvb2xlYW4gfCBTcGVjSW50MzJPbmx5KSk7CkBAIC0zODgsNiArMzk4LDEx
IEBAIGlubGluZSBib29sIGlzQm9vbGVhblNwZWN1bGF0aW9uKFNwZWN1bGF0ZWRUeXBlIHZhbHVl
KQogICAgIHJldHVybiB2YWx1ZSA9PSBTcGVjQm9vbGVhbjsKIH0KIAoraW5saW5lIGJvb2wgaXNO
b3RCb29sZWFuU3BlY3VsYXRpb24oU3BlY3VsYXRlZFR5cGUgdmFsdWUpCit7CisgICAgcmV0dXJu
IHZhbHVlICYmICEodmFsdWUgJiBTcGVjQm9vbGVhbik7Cit9CisKIGlubGluZSBib29sIGlzT3Ro
ZXJTcGVjdWxhdGlvbihTcGVjdWxhdGVkVHlwZSB2YWx1ZSkKIHsKICAgICByZXR1cm4gdmFsdWUg
PT0gU3BlY090aGVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdB
YnN0cmFjdEludGVycHJldGVySW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCmluZGV4IDQzYjUxYTE2ZWNiYWRhNTBmOWQ3
Zjg4ZWVlM2NmMTEyNmI3YTIyNGEuLjdhZGJhNzE2MDE0NjE1MTA3MmVmNjk5ZDIyNmEyYWYzY2Vh
MDhkMDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJ
bnRlcnByZXRlcklubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fi
c3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJB
cnJheUNvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAiREZHQWJzdHJhY3RJbnRlcnByZXRlci5oIgog
I2luY2x1ZGUgIkRPTUpJVEdldHRlclNldHRlci5oIgorI2luY2x1ZGUgIkRPTUpJVFNpZ25hdHVy
ZS5oIgogI2luY2x1ZGUgIkdldEJ5SWRTdGF0dXMuaCIKICNpbmNsdWRlICJHZXR0ZXJTZXR0ZXIu
aCIKICNpbmNsdWRlICJIYXNoTWFwSW1wbC5oIgpAQCAtMjMwMyw2ICsyMzA0LDEzIEBAIGJvb2wg
QWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3RzKHVu
c2lnbmVkIGNsb2JiZXJMaW1pCiAgICAgICAgIGZvck5vZGUobm9kZSkuc2V0VHlwZShtX2dyYXBo
LCBjYWxsRE9NR2V0dGVyRGF0YS0+ZG9tSklULT5yZXN1bHRUeXBlKCkpOwogICAgICAgICBicmVh
azsKICAgICB9CisgICAgY2FzZSBDYWxsRE9NOiB7CisgICAgICAgIGNvbnN0IERPTUpJVDo6U2ln
bmF0dXJlKiBzaWduYXR1cmUgPSBub2RlLT5zaWduYXR1cmUoKTsKKyAgICAgICAgaWYgKHNpZ25h
dHVyZS0+ZWZmZWN0LndyaXRlcykKKyAgICAgICAgICAgIGNsb2JiZXJXb3JsZChub2RlLT5vcmln
aW4uc2VtYW50aWMsIGNsb2JiZXJMaW1pdCk7CisgICAgICAgIGZvck5vZGUobm9kZSkuc2V0VHlw
ZShtX2dyYXBoLCBzaWduYXR1cmUtPnJlc3VsdCk7CisgICAgICAgIGJyZWFrOworICAgIH0KICAg
ICBjYXNlIENoZWNrQXJyYXk6IHsKICAgICAgICAgaWYgKG5vZGUtPmFycmF5TW9kZSgpLmFscmVh
ZHlDaGVja2VkKG1fZ3JhcGgsIG5vZGUsIGZvck5vZGUobm9kZS0+Y2hpbGQxKCkpKSkgewogICAg
ICAgICAgICAgbV9zdGF0ZS5zZXRGb3VuZENvbnN0YW50cyh0cnVlKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKaW5kZXggMzVkYzA3ODZhODkz
Nzg1ZjcwZjdiMzJjMGNmN2JjZGRlOWE3ZWRkOS4uMGMyNjFkMWM5NDlhYzFkODM5Y2MxZDkzZTdl
Yjk3Y2NiNDBiZDQxNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdC
eXRlQ29kZVBhcnNlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRl
Q29kZVBhcnNlci5jcHAKQEAgLTIxMiw2ICsyMTIsOCBAQCBjbGFzcyBCeXRlQ29kZVBhcnNlciB7
CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hlY2tzRnVuY3Rvcj4KICAgICBib29sIGhhbmRsZUlu
dHJpbnNpY0NhbGwoTm9kZSogY2FsbGVlLCBpbnQgcmVzdWx0T3BlcmFuZCwgSW50cmluc2ljLCBp
bnQgcmVnaXN0ZXJPZmZzZXQsIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgU3BlY3Vs
YXRlZFR5cGUgcHJlZGljdGlvbiwgY29uc3QgQ2hlY2tzRnVuY3RvciYgaW5zZXJ0Q2hlY2tzKTsK
ICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGVja3NGdW5jdG9yPgorICAgIGJvb2wgaGFuZGxlRE9N
SklUQ2FsbChOb2RlKiBjYWxsZWUsIGludCByZXN1bHRPcGVyYW5kLCBjb25zdCBET01KSVQ6OlNp
Z25hdHVyZSosIGludCByZWdpc3Rlck9mZnNldCwgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdU
aGlzLCBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uLCBjb25zdCBDaGVja3NGdW5jdG9yJiBpbnNl
cnRDaGVja3MpOworICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoZWNrc0Z1bmN0b3I+CiAgICAgYm9v
bCBoYW5kbGVJbnRyaW5zaWNHZXR0ZXIoaW50IHJlc3VsdE9wZXJhbmQsIGNvbnN0IEdldEJ5SWRW
YXJpYW50JiBpbnRyaW5zaWNWYXJpYW50LCBOb2RlKiB0aGlzTm9kZSwgY29uc3QgQ2hlY2tzRnVu
Y3RvciYgaW5zZXJ0Q2hlY2tzKTsKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGVja3NGdW5jdG9y
PgogICAgIGJvb2wgaGFuZGxlVHlwZWRBcnJheUNvbnN0cnVjdG9yKGludCByZXN1bHRPcGVyYW5k
LCBJbnRlcm5hbEZ1bmN0aW9uKiwgaW50IHJlZ2lzdGVyT2Zmc2V0LCBpbnQgYXJndW1lbnRDb3Vu
dEluY2x1ZGluZ1RoaXMsIFR5cGVkQXJyYXlUeXBlLCBjb25zdCBDaGVja3NGdW5jdG9yJiBpbnNl
cnRDaGVja3MpOwpAQCAtODE3LDE4ICs4MTksMTggQEAgY2xhc3MgQnl0ZUNvZGVQYXJzZXIgewog
ICAgIH0KICAgICAKICAgICBOb2RlKiBhZGRDYWxsKAotICAgICAgICBpbnQgcmVzdWx0LCBOb2Rl
VHlwZSBvcCwgT3BJbmZvIG9wSW5mbywgTm9kZSogY2FsbGVlLCBpbnQgYXJnQ291bnQsIGludCBy
ZWdpc3Rlck9mZnNldCwKKyAgICAgICAgaW50IHJlc3VsdCwgTm9kZVR5cGUgb3AsIGNvbnN0IERP
TUpJVDo6U2lnbmF0dXJlKiBzaWduYXR1cmUsIE5vZGUqIGNhbGxlZSwgaW50IGFyZ0NvdW50LCBp
bnQgcmVnaXN0ZXJPZmZzZXQsCiAgICAgICAgIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24pCiAg
ICAgewogICAgICAgICBpZiAob3AgPT0gVGFpbENhbGwpIHsKICAgICAgICAgICAgIGlmIChhbGxJ
bmxpbmVGcmFtZXNBcmVUYWlsQ2FsbHMoKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gYWRkQ2Fs
bFdpdGhvdXRTZXR0aW5nUmVzdWx0KG9wLCBPcEluZm8oKSwgY2FsbGVlLCBhcmdDb3VudCwgcmVn
aXN0ZXJPZmZzZXQsIE9wSW5mbygpKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gYWRkQ2FsbFdp
dGhvdXRTZXR0aW5nUmVzdWx0KG9wLCBPcEluZm8oc2lnbmF0dXJlKSwgY2FsbGVlLCBhcmdDb3Vu
dCwgcmVnaXN0ZXJPZmZzZXQsIE9wSW5mbygpKTsKICAgICAgICAgICAgIG9wID0gVGFpbENhbGxJ
bmxpbmVkQ2FsbGVyOwogICAgICAgICB9CiAKIAogICAgICAgICBOb2RlKiBjYWxsID0gYWRkQ2Fs
bFdpdGhvdXRTZXR0aW5nUmVzdWx0KAotICAgICAgICAgICAgb3AsIG9wSW5mbywgY2FsbGVlLCBh
cmdDb3VudCwgcmVnaXN0ZXJPZmZzZXQsIE9wSW5mbyhwcmVkaWN0aW9uKSk7CisgICAgICAgICAg
ICBvcCwgT3BJbmZvKHNpZ25hdHVyZSksIGNhbGxlZSwgYXJnQ291bnQsIHJlZ2lzdGVyT2Zmc2V0
LCBPcEluZm8ocHJlZGljdGlvbikpOwogICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgcmVzdWx0UmVn
KHJlc3VsdCk7CiAgICAgICAgIGlmIChyZXN1bHRSZWcuaXNWYWxpZCgpKQogICAgICAgICAgICAg
c2V0KHJlc3VsdFJlZywgY2FsbCk7CkBAIC0xMjgzLDcgKzEyODUsNyBAQCBCeXRlQ29kZVBhcnNl
cjo6VGVybWluYWxpdHkgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUNhbGwoCiAgICAgICAgIC8vIE9k
ZGx5LCB0aGlzIGNvbmZsYXRlcyBjYWxscyB0aGF0IGhhdmVuJ3QgZXhlY3V0ZWQgd2l0aCBjYWxs
cyB0aGF0IGJlaGF2ZWQgc3VmZmljaWVudGx5IHBvbHltb3JwaGljYWxseQogICAgICAgICAvLyB0
aGF0IHdlIGNhbm5vdCBvcHRpbWl6ZSB0aGVtLgogCi0gICAgICAgIE5vZGUqIGNhbGxOb2RlID0g
YWRkQ2FsbChyZXN1bHQsIG9wLCBPcEluZm8oKSwgY2FsbFRhcmdldCwgYXJndW1lbnRDb3VudElu
Y2x1ZGluZ1RoaXMsIHJlZ2lzdGVyT2Zmc2V0LCBwcmVkaWN0aW9uKTsKKyAgICAgICAgTm9kZSog
Y2FsbE5vZGUgPSBhZGRDYWxsKHJlc3VsdCwgb3AsIG51bGxwdHIsIGNhbGxUYXJnZXQsIGFyZ3Vt
ZW50Q291bnRJbmNsdWRpbmdUaGlzLCByZWdpc3Rlck9mZnNldCwgcHJlZGljdGlvbik7CiAgICAg
ICAgIGlmIChjYWxsTm9kZS0+b3AoKSA9PSBUYWlsQ2FsbCkKICAgICAgICAgICAgIHJldHVybiBU
ZXJtaW5hbDsKICAgICAgICAgQVNTRVJUKGNhbGxOb2RlLT5vcCgpICE9IFRhaWxDYWxsVmFyYXJn
cyAmJiBjYWxsTm9kZS0+b3AoKSAhPSBUYWlsQ2FsbEZvcndhcmRWYXJhcmdzKTsKQEAgLTEyOTgs
NyArMTMwMCw3IEBAIEJ5dGVDb2RlUGFyc2VyOjpUZXJtaW5hbGl0eSBCeXRlQ29kZVBhcnNlcjo6
aGFuZGxlQ2FsbCgKICAgICAgICAgcmV0dXJuIE5vblRlcm1pbmFsOwogICAgIH0KICAgICAKLSAg
ICBOb2RlKiBjYWxsTm9kZSA9IGFkZENhbGwocmVzdWx0LCBvcCwgT3BJbmZvKCksIGNhbGxUYXJn
ZXQsIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCByZWdpc3Rlck9mZnNldCwgcHJlZGljdGlv
bik7CisgICAgTm9kZSogY2FsbE5vZGUgPSBhZGRDYWxsKHJlc3VsdCwgb3AsIG51bGxwdHIsIGNh
bGxUYXJnZXQsIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCByZWdpc3Rlck9mZnNldCwgcHJl
ZGljdGlvbik7CiAgICAgaWYgKGNhbGxOb2RlLT5vcCgpID09IFRhaWxDYWxsKQogICAgICAgICBy
ZXR1cm4gVGVybWluYWw7CiAgICAgQVNTRVJUKGNhbGxOb2RlLT5vcCgpICE9IFRhaWxDYWxsVmFy
YXJncyAmJiBjYWxsTm9kZS0+b3AoKSAhPSBUYWlsQ2FsbEZvcndhcmRWYXJhcmdzKTsKQEAgLTE3
MjUsNiArMTcyNywxOSBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjphdHRlbXB0VG9JbmxpbmVDYWxs
KE5vZGUqIGNhbGxUYXJnZXROb2RlLCBpbnQgcmVzdWx0T3BlcmFuZAogICAgICAgICAgICAgUkVM
RUFTRV9BU1NFUlQoIWRpZEluc2VydENoZWNrcyk7CiAgICAgICAgICAgICAvLyBXZSBtaWdodCBz
dGlsbCB0cnkgdG8gaW5saW5lIHRoZSBJbnRyaW5zaWMgYmVjYXVzZSBpdCBtaWdodCBiZSBhIGJ1
aWx0aW4gSlMgZnVuY3Rpb24uCiAgICAgICAgIH0KKworICAgICAgICBpZiAoT3B0aW9uczo6dXNl
RE9NSklUKCkpIHsKKyAgICAgICAgICAgIGlmIChjb25zdCBET01KSVQ6OlNpZ25hdHVyZSogc2ln
bmF0dXJlID0gY2FsbGVlLnNpZ25hdHVyZUZvcihzcGVjaWFsaXphdGlvbktpbmQpKSB7CisgICAg
ICAgICAgICAgICAgaWYgKGhhbmRsZURPTUpJVENhbGwoY2FsbFRhcmdldE5vZGUsIHJlc3VsdE9w
ZXJhbmQsIHNpZ25hdHVyZSwgcmVnaXN0ZXJPZmZzZXQsIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdU
aGlzLCBwcmVkaWN0aW9uLCBpbnNlcnRDaGVja3NXaXRoQWNjb3VudGluZykpIHsKKyAgICAgICAg
ICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoZGlkSW5zZXJ0Q2hlY2tzKTsKKyAgICAgICAgICAg
ICAgICAgICAgYWRkVG9HcmFwaChQaGFudG9tLCBjYWxsVGFyZ2V0Tm9kZSk7CisgICAgICAgICAg
ICAgICAgICAgIGVtaXRBcmd1bWVudFBoYW50b21zKHJlZ2lzdGVyT2Zmc2V0LCBhcmd1bWVudENv
dW50SW5jbHVkaW5nVGhpcyk7CisgICAgICAgICAgICAgICAgICAgIGlubGluaW5nQmFsYW5jZS0t
OworICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoIWRpZEluc2VydENoZWNrcyk7CisgICAgICAg
ICAgICB9CisgICAgICAgIH0KICAgICB9CiAgICAgCiAgICAgdW5zaWduZWQgbXlJbmxpbmluZ0Nv
c3QgPSBpbmxpbmluZ0Nvc3QoY2FsbGVlLCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgSW5s
aW5lQ2FsbEZyYW1lOjpjYWxsTW9kZUZvcihraW5kKSk7CkBAIC0yMDUwLDcgKzIwNjUsNyBAQCBi
b29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbmxpbmluZygKICAgICBOb2RlKiBteUNhbGxUYXJn
ZXROb2RlID0gZ2V0RGlyZWN0KGNhbGxlZVJlZyk7CiAgICAgaWYgKGNvdWxkVGFrZVNsb3dQYXRo
KSB7CiAgICAgICAgIGFkZENhbGwoCi0gICAgICAgICAgICByZXN1bHRPcGVyYW5kLCBjYWxsT3As
IE9wSW5mbygpLCBteUNhbGxUYXJnZXROb2RlLCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywK
KyAgICAgICAgICAgIHJlc3VsdE9wZXJhbmQsIGNhbGxPcCwgbnVsbHB0ciwgbXlDYWxsVGFyZ2V0
Tm9kZSwgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsCiAgICAgICAgICAgICByZWdpc3Rlck9m
ZnNldCwgcHJlZGljdGlvbik7CiAgICAgfSBlbHNlIHsKICAgICAgICAgYWRkVG9HcmFwaChDaGVj
a0JhZENlbGwpOwpAQCAtMjYwMCw2ICsyNjE1LDIwIEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6Omhh
bmRsZUludHJpbnNpY0NhbGwoTm9kZSogY2FsbGVlLCBpbnQgcmVzdWx0T3BlcmFuZCwgSW50cmlu
CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIENoZWNrc0Z1bmN0b3I+Citib29sIEJ5dGVDb2RlUGFy
c2VyOjpoYW5kbGVET01KSVRDYWxsKE5vZGUqIGNhbGxUYXJnZXQsIGludCByZXN1bHRPcGVyYW5k
LCBjb25zdCBET01KSVQ6OlNpZ25hdHVyZSogc2lnbmF0dXJlLCBpbnQgcmVnaXN0ZXJPZmZzZXQs
IGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlv
biwgY29uc3QgQ2hlY2tzRnVuY3RvciYgaW5zZXJ0Q2hlY2tzKQoreworICAgIGlmIChhcmd1bWVu
dENvdW50SW5jbHVkaW5nVGhpcyAhPSBzdGF0aWNfY2FzdDxpbnQ+KDEgKyBzaWduYXR1cmUtPmFy
Z3VtZW50Q291bnQpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKG1faW5saW5lU3Rh
Y2tUb3AtPm1fZXhpdFByb2ZpbGUuaGFzRXhpdFNpdGUobV9jdXJyZW50SW5kZXgsIEJhZFR5cGUp
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpbnNlcnRDaGVja3MoKTsKKyAgICBhZGRD
YWxsKHJlc3VsdE9wZXJhbmQsIENhbGwsIHNpZ25hdHVyZSwgY2FsbFRhcmdldCwgYXJndW1lbnRD
b3VudEluY2x1ZGluZ1RoaXMsIHJlZ2lzdGVyT2Zmc2V0LCBwcmVkaWN0aW9uKTsKKyAgICByZXR1
cm4gdHJ1ZTsKK30KKworCit0ZW1wbGF0ZTx0eXBlbmFtZSBDaGVja3NGdW5jdG9yPgogYm9vbCBC
eXRlQ29kZVBhcnNlcjo6aGFuZGxlSW50cmluc2ljR2V0dGVyKGludCByZXN1bHRPcGVyYW5kLCBj
b25zdCBHZXRCeUlkVmFyaWFudCYgdmFyaWFudCwgTm9kZSogdGhpc05vZGUsIGNvbnN0IENoZWNr
c0Z1bmN0b3ImIGluc2VydENoZWNrcykKIHsKICAgICBzd2l0Y2ggKHZhcmlhbnQuaW50cmluc2lj
KCkpIHsKQEAgLTQ3OTEsNyArNDgyMCw3IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxv
Y2sodW5zaWduZWQgbGltaXQpCiAgICAgICAgICAgICBpbnQgY2FsbGVlID0gY3VycmVudEluc3Ry
dWN0aW9uWzJdLnUub3BlcmFuZDsKICAgICAgICAgICAgIGludCBhcmd1bWVudENvdW50SW5jbHVk
aW5nVGhpcyA9IGN1cnJlbnRJbnN0cnVjdGlvblszXS51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBp
bnQgcmVnaXN0ZXJPZmZzZXQgPSAtY3VycmVudEluc3RydWN0aW9uWzRdLnUub3BlcmFuZDsKLSAg
ICAgICAgICAgIGFkZENhbGwocmVzdWx0LCBDYWxsRXZhbCwgT3BJbmZvKCksIGdldChWaXJ0dWFs
UmVnaXN0ZXIoY2FsbGVlKSksIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCByZWdpc3Rlck9m
ZnNldCwgZ2V0UHJlZGljdGlvbigpKTsKKyAgICAgICAgICAgIGFkZENhbGwocmVzdWx0LCBDYWxs
RXZhbCwgbnVsbHB0ciwgZ2V0KFZpcnR1YWxSZWdpc3RlcihjYWxsZWUpKSwgYXJndW1lbnRDb3Vu
dEluY2x1ZGluZ1RoaXMsIHJlZ2lzdGVyT2Zmc2V0LCBnZXRQcmVkaWN0aW9uKCkpOwogICAgICAg
ICAgICAgTkVYVF9PUENPREUob3BfY2FsbF9ldmFsKTsKICAgICAgICAgfQogICAgICAgICAgICAg
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCmluZGV4IGI2MjFlZjAy
MmQ4ODY1ZTJlN2EyMDExNmNkMjA4YzVjMjQ2YzlmZmIuLmU1ZDIxNzJmOWFlMGU3OTFhYWEyYTY4
MmJhYjE0ZWJhOTMwNjdkYmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQ2xvYmJlcml6ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJl
cml6ZS5oCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAiREZHTGF6eU5vZGUuaCIKICNpbmNs
dWRlICJERkdQdXJlVmFsdWUuaCIKICNpbmNsdWRlICJET01KSVRDYWxsRE9NR2V0dGVyUGF0Y2hw
b2ludC5oIgorI2luY2x1ZGUgIkRPTUpJVFNpZ25hdHVyZS5oIgogCiBuYW1lc3BhY2UgSlNDIHsg
bmFtZXNwYWNlIERGRyB7CiAKQEAgLTk1OCwyMCArOTU5LDM4IEBAIHZvaWQgY2xvYmJlcml6ZShH
cmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUsIGNvbnN0IFJlYWRGdW5jdG9yJiByZWFkLCBjb25zdCBX
cml0ZUZ1CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgd3JpdGUoQWJzdHJhY3RI
ZWFwKERPTVN0YXRlLCBlZmZlY3Qud3JpdGVzLnJhd1JlcHJlc2VudGF0aW9uKCkpKTsKICAgICAg
ICAgfQotICAgICAgICBpZiAoZWZmZWN0LmRlZikgewotICAgICAgICAgICAgRE9NSklUOjpIZWFw
UmFuZ2UgcmFuZ2UgPSBlZmZlY3QuZGVmLnZhbHVlKCk7CisgICAgICAgIGlmIChlZmZlY3QuZGVm
ICE9IERPTUpJVDo6SGVhcFJhbmdlOjp0b3AoKSkgeworICAgICAgICAgICAgRE9NSklUOjpIZWFw
UmFuZ2UgcmFuZ2UgPSBlZmZlY3QuZGVmOwogICAgICAgICAgICAgaWYgKHJhbmdlID09IERPTUpJ
VDo6SGVhcFJhbmdlOjpub25lKCkpCiAgICAgICAgICAgICAgICAgZGVmKFB1cmVWYWx1ZShub2Rl
LCBub2RlLT5jYWxsRE9NR2V0dGVyRGF0YSgpLT5kb21KSVQpKTsKICAgICAgICAgICAgIGVsc2Ug
ewogICAgICAgICAgICAgICAgIC8vIERlZiB3aXRoIGhlYXAgbG9jYXRpb24uIFdlIGRvIG5vdCBp
bmNsdWRlICJHbG9iYWxPYmplY3QiIGZvciB0aGF0IHNpbmNlIHRoaXMgaW5mb3JtYXRpb24gaXMg
aW5jbHVkZWQgaW4gdGhlIGJhc2Ugbm9kZS4KLSAgICAgICAgICAgICAgICAvLyBGSVhNRTogV2hl
biBzdXBwb3J0aW5nIHRoZSBvdGhlciBub2RlcyBsaWtlIGdldEVsZW1lbnRCeUlkKCJzdHJpbmci
KSwgd2Ugc2hvdWxkIGluY2x1ZGUgdGhlIGJhc2UgYW5kIHRoZSBpZCBzdHJpbmcuCi0gICAgICAg
ICAgICAgICAgLy8gQ3VycmVudGx5LCB3ZSBvbmx5IHNlZSB0aGUgRE9NSklUIGdldHRlciBoZXJl
LiBTbyBqdXN0IGluY2x1ZGluZyAiYmFzZSIgaXMgb2suCisgICAgICAgICAgICAgICAgLy8gV2Ug
b25seSBzZWUgdGhlIERPTUpJVCBnZXR0ZXIgaGVyZS4gU28ganVzdCBpbmNsdWRpbmcgImJhc2Ui
IGlzIG9rLgogICAgICAgICAgICAgICAgIGRlZihIZWFwTG9jYXRpb24oRE9NU3RhdGVMb2MsIEFi
c3RyYWN0SGVhcChET01TdGF0ZSwgcmFuZ2UucmF3UmVwcmVzZW50YXRpb24oKSksIG5vZGUtPmNo
aWxkMSgpKSwgTGF6eU5vZGUobm9kZSkpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKKyAgICBjYXNlIENhbGxET006IHsKKyAgICAgICAgY29uc3Qg
RE9NSklUOjpTaWduYXR1cmUqIHNpZ25hdHVyZSA9IG5vZGUtPnNpZ25hdHVyZSgpOworICAgICAg
ICBET01KSVQ6OkVmZmVjdCBlZmZlY3QgPSBzaWduYXR1cmUtPmVmZmVjdDsKKyAgICAgICAgaWYg
KGVmZmVjdC5yZWFkcykgeworICAgICAgICAgICAgaWYgKGVmZmVjdC5yZWFkcyA9PSBET01KSVQ6
OkhlYXBSYW5nZTo6dG9wKCkpCisgICAgICAgICAgICAgICAgcmVhZChXb3JsZCk7CisgICAgICAg
ICAgICBlbHNlCisgICAgICAgICAgICAgICAgcmVhZChBYnN0cmFjdEhlYXAoRE9NU3RhdGUsIGVm
ZmVjdC5yZWFkcy5yYXdSZXByZXNlbnRhdGlvbigpKSk7CisgICAgICAgIH0KKyAgICAgICAgaWYg
KGVmZmVjdC53cml0ZXMpIHsKKyAgICAgICAgICAgIGlmIChlZmZlY3Qud3JpdGVzID09IERPTUpJ
VDo6SGVhcFJhbmdlOjp0b3AoKSkKKyAgICAgICAgICAgICAgICB3cml0ZShIZWFwKTsKKyAgICAg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB3cml0ZShBYnN0cmFjdEhlYXAoRE9NU3RhdGUs
IGVmZmVjdC53cml0ZXMucmF3UmVwcmVzZW50YXRpb24oKSkpOworICAgICAgICB9CisgICAgICAg
IEFTU0VSVF9XSVRIX01FU1NBR0UoZWZmZWN0LmRlZiA9PSBET01KSVQ6OkhlYXBSYW5nZTo6dG9w
KCksICJDdXJyZW50bHksIHdlIGRvIG5vdCBhY2NlcHQgYW55IGRlZiBmb3IgQ2FsbERPTS4iKTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKwogICAgIGNhc2UgQXJyYXlpZnk6CiAgICAgY2FzZSBB
cnJheWlmeVRvU3RydWN0dXJlOgogICAgICAgICByZWFkKEpTQ2VsbF9zdHJ1Y3R1cmVJRCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAKaW5kZXggOTdjZDg0ODc0NzdhYzkw
ODRmZTkwZGRiOThkMzBmNDY2ZTVjYTE2Zi4uOWU2YWE1NTBhNDRlMGUxYzYyMTc1ZTUxOWY2MGEz
ZTg1MTVhN2I3YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2Vz
R0MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcApAQCAt
MzAxLDYgKzMwMSw3IEBAIGJvb2wgZG9lc0dDKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSkKICAg
ICBjYXNlIENyZWF0ZVJlc3Q6CiAgICAgY2FzZSBUb0xvd2VyQ2FzZToKICAgICBjYXNlIENhbGxE
T01HZXR0ZXI6CisgICAgY2FzZSBDYWxsRE9NOgogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAg
ICAgCiAgICAgY2FzZSBNdWx0aVB1dEJ5T2Zmc2V0OgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHRml4dXBQaGFzZS5jcHAKaW5kZXggMWQ0ZTkwN2E3ZjJmZmNjMmQ5YTJhMDM3NzExNDZh
NzkxMDFmM2NkMy4uMTJlZjRjZDhhNGQ5ODI3YjFlMmI0Y2U4YmU5MDdjOGIzNjA2ODcyNSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCkBAIC0xNzA4LDkg
KzE3MDgsMTAgQEAgY2xhc3MgRml4dXBQaGFzZSA6IHB1YmxpYyBQaGFzZSB7CiAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgfQogCi0gICAgICAgIGNhc2UgQ2hlY2tET006Ci0gICAgICAgICAg
ICBmaXhFZGdlPENlbGxVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgY2FzZSBDaGVja0RP
TTogeworICAgICAgICAgICAgZml4dXBDaGVja0RPTShub2RlKTsKICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICB9CiAKICAgICAgICAgY2FzZSBDYWxsRE9NR2V0dGVyOiB7CiAgICAgICAgICAg
ICBET01KSVQ6OkNhbGxET01HZXR0ZXJQYXRjaHBvaW50KiBwYXRjaHBvaW50ID0gbm9kZS0+Y2Fs
bERPTUdldHRlckRhdGEoKS0+cGF0Y2hwb2ludDsKQEAgLTE3MjAsNiArMTcyMSwxNiBAQCBjbGFz
cyBGaXh1cFBoYXNlIDogcHVibGljIFBoYXNlIHsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICB9CiAKKyAgICAgICAgY2FzZSBDYWxsRE9NOiB7CisgICAgICAgICAgICBmaXh1cENhbGxET00o
bm9kZSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAgIGNhc2UgQ2Fs
bDogeworICAgICAgICAgICAgYXR0ZW1wdFRvTWFrZUNhbGxET00obm9kZSk7CisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgfQorCiAjaWYgIUFTU0VSVF9ESVNBQkxFRAogICAgICAgICAvLyBI
YXZlIHRoZXNlIG5vLW9wIGNhc2VzIGhlcmUgdG8gZW5zdXJlIHRoYXQgbm9ib2R5IGZvcmdldHMg
dG8gYWRkIGhhbmRsZXJzIGZvciBuZXcgb3Bjb2Rlcy4KICAgICAgICAgY2FzZSBTZXRBcmd1bWVu
dDoKQEAgLTE3MzYsNyArMTc0Nyw2IEBAIGNsYXNzIEZpeHVwUGhhc2UgOiBwdWJsaWMgUGhhc2Ug
ewogICAgICAgICBjYXNlIEdldEdsb2JhbFZhcjoKICAgICAgICAgY2FzZSBHZXRHbG9iYWxMZXhp
Y2FsVmFyaWFibGU6CiAgICAgICAgIGNhc2UgTm90aWZ5V3JpdGU6Ci0gICAgICAgIGNhc2UgQ2Fs
bDoKICAgICAgICAgY2FzZSBEaXJlY3RDYWxsOgogICAgICAgICBjYXNlIENoZWNrVHlwZUluZm9G
bGFnczoKICAgICAgICAgY2FzZSBUYWlsQ2FsbElubGluZWRDYWxsZXI6CkBAIC0yNjU5LDYgKzI2
NjksOTAgQEAgY2xhc3MgRml4dXBQaGFzZSA6IHB1YmxpYyBQaGFzZSB7CiAgICAgICAgICAgICBP
cEluZm8oYXJyYXlNb2RlLmFzV29yZCgpKSwgRWRnZShjaGlsZCwgS25vd25DZWxsVXNlKSwgRWRn
ZShzdG9yYWdlKSk7CiAgICAgfQogICAgIAorICAgIGJvb2wgYXR0ZW1wdFRvTWFrZUNhbGxET00o
Tm9kZSogbm9kZSkKKyAgICB7CisgICAgICAgIGlmIChtX2dyYXBoLmhhc0V4aXRTaXRlKG5vZGUt
Pm9yaWdpbi5zZW1hbnRpYywgQmFkVHlwZSkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisK
KyAgICAgICAgY29uc3QgRE9NSklUOjpTaWduYXR1cmUqIHNpZ25hdHVyZSA9IG5vZGUtPnNpZ25h
dHVyZSgpOworICAgICAgICBpZiAoIXNpZ25hdHVyZSkKKyAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKKworICAgICAgICB7CisgICAgICAgICAgICB1bnNpZ25lZCBpbmRleCA9IDA7CisgICAgICAg
ICAgICBib29sIHNob3VsZENvbnZlcnRUb0NhbGxET00gPSB0cnVlOworICAgICAgICAgICAgbV9n
cmFwaC5kb1RvQ2hpbGRyZW4obm9kZSwgWyZdKEVkZ2UmIGVkZ2UpIHsKKyAgICAgICAgICAgICAg
ICAvLyBDYWxsZWUuIElnbm9yZSB0aGlzLiBERkdCeXRlQ29kZVBhcnNlciBhbHJlYWR5IGVtaXQg
YXBwcm9wcmlhdGUgY2hlY2tzLgorICAgICAgICAgICAgICAgIGlmICghaW5kZXgpCisgICAgICAg
ICAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICAgICAgICAgIGlmIChpbmRleCA9PSAxKSB7
CisgICAgICAgICAgICAgICAgICAgIC8vIERPTSBub2RlIGNhc2UuCisgICAgICAgICAgICAgICAg
ICAgIGlmIChlZGdlLT5zaG91bGRTcGVjdWxhdGVOb3RDZWxsKCkpCisgICAgICAgICAgICAgICAg
ICAgICAgICBzaG91bGRDb252ZXJ0VG9DYWxsRE9NID0gZmFsc2U7CisgICAgICAgICAgICAgICAg
fSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChzaWduYXR1cmUtPmFyZ3VtZW50
c1tpbmRleCAtIDJdKSB7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgU3BlY1N0cmluZzoKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGlmIChlZGdlLT5zaG91bGRTcGVjdWxhdGVOb3RTdHJpbmco
KSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaG91bGRDb252ZXJ0VG9DYWxsRE9NID0g
ZmFsc2U7CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAg
ICAgY2FzZSBTcGVjSW50MzJPbmx5OgorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVkZ2Ut
PnNob3VsZFNwZWN1bGF0ZU5vdEludDMyKCkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c2hvdWxkQ29udmVydFRvQ2FsbERPTSA9IGZhbHNlOworICAgICAgICAgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgU3BlY0Jvb2xlYW46CisgICAgICAgICAg
ICAgICAgICAgICAgICBpZiAoZWRnZS0+c2hvdWxkU3BlY3VsYXRlTm90Qm9vbGVhbigpKQorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHNob3VsZENvbnZlcnRUb0NhbGxET00gPSBmYWxzZTsK
KyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICsraW5kZXg7CisgICAgICAgICAgICB9
KTsKKyAgICAgICAgICAgIGlmICghc2hvdWxkQ29udmVydFRvQ2FsbERPTSkKKyAgICAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKworICAgICAgICBOb2RlKiB0aGlzTm9kZSA9
IG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMSkubm9kZSgpOworICAgICAgICBSZWY8RE9NSklU
OjpQYXRjaHBvaW50PiBjaGVja0RPTVBhdGNocG9pbnQgPSBzaWduYXR1cmUtPmNoZWNrRE9NKCk7
CisgICAgICAgIG1fZ3JhcGgubV9kb21KSVRQYXRjaHBvaW50cy5hcHBlbmQoY2hlY2tET01QYXRj
aHBvaW50LnB0cigpKTsKKyAgICAgICAgTm9kZSogY2hlY2tET00gPSBtX2luc2VydGlvblNldC5p
bnNlcnROb2RlKG1faW5kZXhJbkJsb2NrLCBTcGVjTm9uZSwgQ2hlY2tET00sIG5vZGUtPm9yaWdp
biwgT3BJbmZvKGNoZWNrRE9NUGF0Y2hwb2ludC5wdHIoKSksIE9wSW5mbyhzaWduYXR1cmUtPmNs
YXNzSW5mbyksIEVkZ2UodGhpc05vZGUpKTsKKyAgICAgICAgbm9kZS0+Y29udmVydFRvQ2FsbERP
TShtX2dyYXBoKTsKKyAgICAgICAgZml4dXBDaGVja0RPTShjaGVja0RPTSk7CisgICAgICAgIGZp
eHVwQ2FsbERPTShub2RlKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgdm9p
ZCBmaXh1cENoZWNrRE9NKE5vZGUqIG5vZGUpCisgICAgeworICAgICAgICBmaXhFZGdlPENlbGxV
c2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICB9CisKKyAgICB2b2lkIGZpeHVwQ2FsbERPTShOb2Rl
KiBub2RlKQorICAgIHsKKyAgICAgICAgY29uc3QgRE9NSklUOjpTaWduYXR1cmUqIHNpZ25hdHVy
ZSA9IG5vZGUtPnNpZ25hdHVyZSgpOworICAgICAgICBhdXRvIGZpeHVwID0gWyZdKEVkZ2UmIGVk
Z2UsIGludCBhcmd1bWVudEluZGV4KSB7CisgICAgICAgICAgICBpZiAoIWVkZ2UpCisgICAgICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgc3dpdGNoIChzaWduYXR1cmUtPmFyZ3VtZW50
c1thcmd1bWVudEluZGV4XSkgeworICAgICAgICAgICAgY2FzZSBTcGVjU3RyaW5nOgorICAgICAg
ICAgICAgICAgIGZpeEVkZ2U8U3RyaW5nVXNlPihlZGdlKTsKKyAgICAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICAgIGNhc2UgU3BlY0ludDMyT25seToKKyAgICAgICAgICAgICAgICBmaXhF
ZGdlPEludDMyVXNlPihlZGdlKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg
IGNhc2UgU3BlY0Jvb2xlYW46CisgICAgICAgICAgICAgICAgZml4RWRnZTxCb29sZWFuVXNlPihl
ZGdlKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAg
ICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfTsKKyAgICAgICAgZml4RWRnZTxDZWxs
VXNlPihub2RlLT5jaGlsZDEoKSk7IC8vIERPTS4KKyAgICAgICAgZml4dXAobm9kZS0+Y2hpbGQy
KCksIDApOworICAgICAgICBmaXh1cChub2RlLT5jaGlsZDMoKSwgMSk7CisgICAgfQorCiAgICAg
dm9pZCBmaXh1cENoZWNrc0luQmxvY2soQmFzaWNCbG9jayogYmxvY2spCiAgICAgewogICAgICAg
ICBpZiAoIWJsb2NrKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdO
b2RlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5jcHAKaW5kZXggZjM3
MTE3YmY5NjlmZTRiNjlkOTVmMDAxZDU2ODgwNDZiZGNkOTQ1MC4uY2UyNWMwZGQxMzIxMGJlMTJh
Yjk1NzkwMmRiYTY2OWE3YmQ4NmRmYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdOb2RlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUu
Y3BwCkBAIC0yMjAsNiArMjIwLDI1IEBAIHZvaWQgTm9kZTo6Y29udmVydFRvRGlyZWN0Q2FsbChG
cm96ZW5WYWx1ZSogZXhlY3V0YWJsZSkKICAgICBtX29wSW5mbyA9IGV4ZWN1dGFibGU7CiB9CiAK
K3ZvaWQgTm9kZTo6Y29udmVydFRvQ2FsbERPTShHcmFwaCYgZ3JhcGgpCit7CisgICAgQVNTRVJU
KG9wKCkgPT0gQ2FsbCk7CisgICAgQVNTRVJUKHNpZ25hdHVyZSgpKTsKKworICAgIEVkZ2UgZWRn
ZXNbM107CisgICAgLy8gU2tpcCB0aGUgZmlyc3Qgb25lLiBUaGlzIGlzIGNhbGxlZS4KKyAgICBm
b3IgKHVuc2lnbmVkIGkgPSAxLCBpeiA9IG51bUNoaWxkcmVuKCk7IGkgPCBpejsgKytpKQorICAg
ICAgICBlZGdlc1tpIC0gMV0gPSBncmFwaC52YXJBcmdDaGlsZCh0aGlzLCBpKTsKKworICAgIHNl
dE9wQW5kRGVmYXVsdEZsYWdzKENhbGxET00pOworICAgIGNoaWxkcmVuLnNldENoaWxkMShlZGdl
c1swXSk7CisgICAgY2hpbGRyZW4uc2V0Q2hpbGQyKGVkZ2VzWzFdKTsKKyAgICBjaGlsZHJlbi5z
ZXRDaGlsZDMoZWRnZXNbMl0pOworCisgICAgaWYgKCFzaWduYXR1cmUoKS0+ZWZmZWN0Lm11c3RH
ZW5lcmF0ZSgpKQorICAgICAgICBjbGVhckZsYWdzKE5vZGVNdXN0R2VuZXJhdGUpOworfQorCiBT
dHJpbmcgTm9kZTo6dHJ5R2V0U3RyaW5nKEdyYXBoJiBncmFwaCkKIHsKICAgICBpZiAoaGFzQ29u
c3RhbnQoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgKaW5kZXggODhmODgxMTg5MGUx
NzczZWExZDYwMmU5Y2FjOWM1ODFkYTRmOWI5Yi4uODMwOWFhMzA5YTBhOWU2MTQyY2NhMjk1MTky
OGVhZGFiOTcyYTViMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdO
b2RlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgKQEAgLTYyLDYg
KzYyLDcgQEAgbmFtZXNwYWNlIERPTUpJVCB7CiBjbGFzcyBHZXR0ZXJTZXR0ZXI7CiBjbGFzcyBQ
YXRjaHBvaW50OwogY2xhc3MgQ2FsbERPTUdldHRlclBhdGNocG9pbnQ7CitjbGFzcyBTaWduYXR1
cmU7CiB9CiAKIG5hbWVzcGFjZSBQcm9maWxlciB7CkBAIC02NTIsNiArNjUzLDggQEAgc3RydWN0
IE5vZGUgewogICAgIH0KICAgICAKICAgICB2b2lkIGNvbnZlcnRUb0RpcmVjdENhbGwoRnJvemVu
VmFsdWUqKTsKKworICAgIHZvaWQgY29udmVydFRvQ2FsbERPTShHcmFwaCYpOwogICAgIAogICAg
IEpTVmFsdWUgYXNKU1ZhbHVlKCkKICAgICB7CkBAIC0xNDY0LDYgKzE0NjcsNyBAQCBzdHJ1Y3Qg
Tm9kZSB7CiAgICAgICAgIGNhc2UgVG9OdW1iZXI6CiAgICAgICAgIGNhc2UgTG9hZEZyb21KU01h
cEJ1Y2tldDoKICAgICAgICAgY2FzZSBDYWxsRE9NR2V0dGVyOgorICAgICAgICBjYXNlIENhbGxE
T006CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKQEAgLTE5ODEsNiArMTk4NSwxMSBAQCBzdHJ1Y3QgTm9kZSB7CiAg
ICAgewogICAgICAgICByZXR1cm4gaXNJbnQzMlNwZWN1bGF0aW9uKHByZWRpY3Rpb24oKSk7CiAg
ICAgfQorCisgICAgYm9vbCBzaG91bGRTcGVjdWxhdGVOb3RJbnQzMigpCisgICAgeworICAgICAg
ICByZXR1cm4gaXNOb3RJbnQzMlNwZWN1bGF0aW9uKHByZWRpY3Rpb24oKSk7CisgICAgfQogICAg
IAogICAgIGJvb2wgc2F3Qm9vbGVhbnMoKQogICAgIHsKQEAgLTIwNDEsNiArMjA1MCwxMSBAQCBz
dHJ1Y3QgTm9kZSB7CiAgICAgewogICAgICAgICByZXR1cm4gaXNCb29sZWFuU3BlY3VsYXRpb24o
cHJlZGljdGlvbigpKTsKICAgICB9CisKKyAgICBib29sIHNob3VsZFNwZWN1bGF0ZU5vdEJvb2xl
YW4oKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGlzTm90Qm9vbGVhblNwZWN1bGF0aW9uKHByZWRp
Y3Rpb24oKSk7CisgICAgfQogICAgIAogICAgIGJvb2wgc2hvdWxkU3BlY3VsYXRlT3RoZXIoKQog
ICAgIHsKQEAgLTIwNjYsNiArMjA4MCwxMSBAQCBzdHJ1Y3QgTm9kZSB7CiAgICAgewogICAgICAg
ICByZXR1cm4gaXNTdHJpbmdTcGVjdWxhdGlvbihwcmVkaWN0aW9uKCkpOwogICAgIH0KKworICAg
IGJvb2wgc2hvdWxkU3BlY3VsYXRlTm90U3RyaW5nKCkKKyAgICB7CisgICAgICAgIHJldHVybiBp
c05vdFN0cmluZ1NwZWN1bGF0aW9uKHByZWRpY3Rpb24oKSk7CisgICAgfQogIAogICAgIGJvb2wg
c2hvdWxkU3BlY3VsYXRlU3RyaW5nT3JPdGhlcigpCiAgICAgewpAQCAtMjM2OCw2ICsyMzg3LDE4
IEBAIHN0cnVjdCBOb2RlIHsKICAgICAgICAgcmV0dXJuIG1fb3BJbmZvMi5hczxjb25zdCBDbGFz
c0luZm8qPigpOwogICAgIH0KIAorICAgIGJvb2wgaGFzU2lnbmF0dXJlKCkgY29uc3QKKyAgICB7
CisgICAgICAgIC8vIE5vdGUgdGhhdCB0aGlzIGRvZXMgbm90IGluY2x1ZGUgVGFpbENhbGwgdGhp
bmd5IGludGVudGlvbmFsbHkuCisgICAgICAgIC8vIENhbGxET00gdGhpbmd5IGFyZSBhbHdheXMg
Y29udmVydGVkIGZyb20gQ2FsbC4KKyAgICAgICAgcmV0dXJuIG9wKCkgPT0gQ2FsbCB8fCBvcCgp
ID09IENhbGxET007CisgICAgfQorCisgICAgY29uc3QgRE9NSklUOjpTaWduYXR1cmUqIHNpZ25h
dHVyZSgpCisgICAgeworICAgICAgICByZXR1cm4gbV9vcEluZm8uYXM8Y29uc3QgRE9NSklUOjpT
aWduYXR1cmUqPigpOworICAgIH0KKwogICAgIE5vZGUqIHJlcGxhY2VtZW50KCkgY29uc3QKICAg
ICB7CiAgICAgICAgIHJldHVybiBtX21pc2MucmVwbGFjZW1lbnQ7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR05vZGVUeXBlLmgKaW5kZXggZDk3NWI3NjIyMGMwMmMxMzExYzE5MmVhOWFkMDJl
NjAxYTUyMDRlMC4uZjM3NDIzY2VlYjIyODYyYjZjMmZhYTViYmEwMzQ1YTMzNmVmNjM5ZSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaApAQCAtNDA3LDYgKzQwNyw3IEBA
IG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKICAgICAvKiBOb2RlcyBmb3IgRE9NIEpJ
VCAqL1wKICAgICBtYWNybyhDaGVja0RPTSwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3Jv
KENhbGxET01HZXR0ZXIsIE5vZGVSZXN1bHRKUyB8IE5vZGVNdXN0R2VuZXJhdGUpIFwKKyAgICBt
YWNybyhDYWxsRE9NLCBOb2RlUmVzdWx0SlMgfCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAKIC8vIFRo
aXMgZW51bSBnZW5lcmF0ZXMgYSBtb25vdG9uaWNhbGx5IGluY3JlYXNpbmcgaWQgZm9yIGFsbCBO
b2RlIHR5cGVzLAogLy8gYW5kIGlzIHVzZWQgYnkgdGhlIHN1YnNlcXVlbnQgZW51bSB0byBmaWxs
IG91dCB0aGUgaWQgKGFzIGFjY2Vzc2VkIHZpYSB0aGUgTm9kZUlkTWFzaykuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNl
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9u
UGhhc2UuY3BwCmluZGV4IDZlZDcyOWIzYjg1NzMxYzBhNmU1MDk2NzA5Zjk4MDE2YTRiMWY4ZTAu
LmMwZmRlOTY5ZmJjMjQ2YzZiOTE4NjAwZGM0N2FmNzlhYWQxYTZmZjkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9u
UGhhc2UuY3BwCkBAIC03MTAsNyArNzEwLDggQEAgY2xhc3MgUHJlZGljdGlvblByb3BhZ2F0aW9u
UGhhc2UgOiBwdWJsaWMgUGhhc2UgewogICAgICAgICBjYXNlIEdldEZyb21Bcmd1bWVudHM6CiAg
ICAgICAgIGNhc2UgTG9hZEZyb21KU01hcEJ1Y2tldDoKICAgICAgICAgY2FzZSBUb051bWJlcjoK
LSAgICAgICAgY2FzZSBDYWxsRE9NR2V0dGVyOiB7CisgICAgICAgIGNhc2UgQ2FsbERPTUdldHRl
cjoKKyAgICAgICAgY2FzZSBDYWxsRE9NOiB7CiAgICAgICAgICAgICBzZXRQcmVkaWN0aW9uKG1f
Y3VycmVudE5vZGUtPmdldEhlYXBQcmVkaWN0aW9uKCkpOwogICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRv
RXhlY3V0ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgK
aW5kZXggMmM5OTgwMjI1NjY3ZGYzNDA1MGRjYTZhMzRlODdmMzRkNTk4ZWQyYi4uM2ZlOWRjMTVk
ZWUxN2I4MWQyMmZmNjQ0M2ZlZDY3ZjQ3Njk2M2NhMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgKQEAgLTIyMCw2ICsyMjAsNyBAQCBib29sIHNhZmVU
b0V4ZWN1dGUoQWJzdHJhY3RTdGF0ZVR5cGUmIHN0YXRlLCBHcmFwaCYgZ3JhcGgsIE5vZGUqIG5v
ZGUpCiAgICAgY2FzZSBHZXRFeGVjdXRhYmxlOgogICAgIGNhc2UgR2V0QnV0dGVyZmx5OgogICAg
IGNhc2UgQ2FsbERPTUdldHRlcjoKKyAgICBjYXNlIENhbGxET006CiAgICAgY2FzZSBDaGVja0RP
TToKICAgICBjYXNlIENoZWNrQXJyYXk6CiAgICAgY2FzZSBBcnJheWlmeToKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKaW5kZXggMjczMmZlODU4
NDRlNTFmNDY3MGIwYWU0MDNmMmFjMjM1MDRjODcxYy4uOWZkZTU1NTQ0Y2ExYTIwZWU4NWU4NWY1
MjUwZWY2MGY3YjU4YjFhNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTcGVjdWxhdGl2ZUpJVC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
cGVjdWxhdGl2ZUpJVC5jcHAKQEAgLTcyNjAsNiArNzI2MCw4NiBAQCBzdGF0aWMgdm9pZCBhbGxv
Y2F0ZVRlbXBvcmFyeVJlZ2lzdGVyc0ZvclBhdGNocG9pbnQoU3BlY3VsYXRpdmVKSVQqIGppdCwg
VmVjdG9yPAogICAgIH0KIH0KIAordm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUNhbGxET00o
Tm9kZSogbm9kZSkKK3sKKyAgICBjb25zdCBET01KSVQ6OlNpZ25hdHVyZSogc2lnbmF0dXJlID0g
bm9kZS0+c2lnbmF0dXJlKCk7CisKKyAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGhhdmUgYSB3YXkg
dG8gY2FsbCBmdW5jdGlvbnMgd2l0aCB0aGUgdmVjdG9yIG9mIHJlZ2lzdGVycy4KKyAgICAvLyBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYzMDk5CisgICAgVmVjdG9y
PFZhcmlhbnQ8U3BlY3VsYXRlQ2VsbE9wZXJhbmQsIFNwZWN1bGF0ZUludDMyT3BlcmFuZCwgU3Bl
Y3VsYXRlQm9vbGVhbk9wZXJhbmQ+PiBvcGVyYW5kczsKKyAgICBWZWN0b3I8R1BSUmVnPiByZWdz
OworCisgICAgYXV0byBhcHBlbmRDZWxsID0gWyZdKEVkZ2UmIGVkZ2UpIHsKKyAgICAgICAgU3Bl
Y3VsYXRlQ2VsbE9wZXJhbmQgb3BlcmFuZCh0aGlzLCBlZGdlKTsKKyAgICAgICAgcmVncy5hcHBl
bmQob3BlcmFuZC5ncHIoKSk7CisgICAgICAgIG9wZXJhbmRzLmFwcGVuZChXVEZNb3ZlKG9wZXJh
bmQpKTsKKyAgICB9OworCisgICAgYXV0byBhcHBlbmRTdHJpbmcgPSBbJl0oRWRnZSYgZWRnZSkg
eworICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBvcGVyYW5kKHRoaXMsIGVkZ2UpOworICAg
ICAgICBHUFJSZWcgZ3ByID0gb3BlcmFuZC5ncHIoKTsKKyAgICAgICAgcmVncy5hcHBlbmQoZ3By
KTsKKyAgICAgICAgc3BlY3VsYXRlU3RyaW5nKGVkZ2UsIGdwcik7CisgICAgICAgIG9wZXJhbmRz
LmFwcGVuZChXVEZNb3ZlKG9wZXJhbmQpKTsKKyAgICB9OworCisgICAgYXV0byBhcHBlbmRJbnQz
MiA9IFsmXShFZGdlJiBlZGdlKSB7CisgICAgICAgIFNwZWN1bGF0ZUludDMyT3BlcmFuZCBvcGVy
YW5kKHRoaXMsIGVkZ2UpOworICAgICAgICByZWdzLmFwcGVuZChvcGVyYW5kLmdwcigpKTsKKyAg
ICAgICAgb3BlcmFuZHMuYXBwZW5kKFdURk1vdmUob3BlcmFuZCkpOworICAgIH07CisKKyAgICBh
dXRvIGFwcGVuZEJvb2xlYW4gPSBbJl0oRWRnZSYgZWRnZSkgeworICAgICAgICBTcGVjdWxhdGVC
b29sZWFuT3BlcmFuZCBvcGVyYW5kKHRoaXMsIGVkZ2UpOworICAgICAgICByZWdzLmFwcGVuZChv
cGVyYW5kLmdwcigpKTsKKyAgICAgICAgb3BlcmFuZHMuYXBwZW5kKFdURk1vdmUob3BlcmFuZCkp
OworICAgIH07CisKKyAgICB1bnNpZ25lZCBpbmRleCA9IDA7CisgICAgbV9qaXQuZ3JhcGgoKS5k
b1RvQ2hpbGRyZW4obm9kZSwgWyZdKEVkZ2UgZWRnZSkgeworICAgICAgICBpZiAoIWluZGV4KQor
ICAgICAgICAgICAgYXBwZW5kQ2VsbChlZGdlKTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAg
ICBzd2l0Y2ggKHNpZ25hdHVyZS0+YXJndW1lbnRzW2luZGV4IC0gMV0pIHsKKyAgICAgICAgICAg
IGNhc2UgU3BlY1N0cmluZzoKKyAgICAgICAgICAgICAgICBhcHBlbmRTdHJpbmcoZWRnZSk7Cisg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIFNwZWNJbnQzMk9ubHk6Cisg
ICAgICAgICAgICAgICAgYXBwZW5kSW50MzIoZWRnZSk7CisgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICBjYXNlIFNwZWNCb29sZWFuOgorICAgICAgICAgICAgICAgIGFwcGVuZEJv
b2xlYW4oZWRnZSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAg
ICAgIH0KKyAgICAgICAgKytpbmRleDsKKyAgICB9KTsKKworICAgIEpTVmFsdWVSZWdzVGVtcG9y
YXJ5IHJlc3VsdCh0aGlzKTsKKyAgICBKU1ZhbHVlUmVncyByZXN1bHRSZWdzID0gcmVzdWx0LnJl
Z3MoKTsKKworICAgIHNpbGVudFNwaWxsQWxsUmVnaXN0ZXJzKHJlc3VsdFJlZ3MpOworICAgIGlu
dCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyA9IHNpZ25hdHVyZS0+YXJndW1lbnRDb3VudCAr
IDE7CisgICAgc3dpdGNoIChhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcykgeworICAgIGNhc2Ug
MToKKyAgICAgICAgY2FsbE9wZXJhdGlvbihyZWludGVycHJldF9jYXN0PEpfSklUT3BlcmF0aW9u
X0VQPihzaWduYXR1cmUtPnVuc2FmZUZ1bmN0aW9uKSwgZXh0cmFjdFJlc3VsdChyZXN1bHRSZWdz
KSwgcmVnc1swXSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgMjoKKyAgICAgICAgY2FsbE9w
ZXJhdGlvbihyZWludGVycHJldF9jYXN0PEpfSklUT3BlcmF0aW9uX0VQUD4oc2lnbmF0dXJlLT51
bnNhZmVGdW5jdGlvbiksIGV4dHJhY3RSZXN1bHQocmVzdWx0UmVncyksIHJlZ3NbMF0sIHJlZ3Nb
MV0pOworICAgICAgICBicmVhazsKKyAgICBjYXNlIDM6CisgICAgICAgIGNhbGxPcGVyYXRpb24o
cmVpbnRlcnByZXRfY2FzdDxKX0pJVE9wZXJhdGlvbl9FUFBQPihzaWduYXR1cmUtPnVuc2FmZUZ1
bmN0aW9uKSwgZXh0cmFjdFJlc3VsdChyZXN1bHRSZWdzKSwgcmVnc1swXSwgcmVnc1sxXSwgcmVn
c1syXSk7CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIFJFTEVBU0VfQVNT
RVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIHNpbGVudEZp
bGxBbGxSZWdpc3RlcnMocmVzdWx0UmVncyk7CisgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsK
KyAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdFJlZ3MsIG5vZGUpOworfQorCiB2b2lkIFNwZWN1bGF0
aXZlSklUOjpjb21waWxlQ2FsbERPTUdldHRlcihOb2RlKiBub2RlKQogewogICAgIERPTUpJVDo6
Q2FsbERPTUdldHRlclBhdGNocG9pbnQqIHBhdGNocG9pbnQgPSBub2RlLT5jYWxsRE9NR2V0dGVy
RGF0YSgpLT5wYXRjaHBvaW50OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTcGVjdWxhdGl2ZUpJVC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVj
dWxhdGl2ZUpJVC5oCmluZGV4IDU2NTM4YTI5NDZlNDAzMDBmMDUwZjMzNTUyYTczY2NhNzU5Y2Vh
Y2EuLjc5NmE4YTM1ZTZkMzA1N2ZhYWJlYTA3OWEwMjAzZDVkNDk5YTk1YjEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKQEAgLTE2NTEsNiArMTY1
MSwxMSBAQCBjbGFzcyBTcGVjdWxhdGl2ZUpJVCB7CiAgICAgICAgIG1faml0LnNldHVwQXJndW1l
bnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyKTsKICAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxT
ZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOwogICAgIH0KKyAgICBKSVRDb21waWxlcjo6Q2Fs
bCBjYWxsT3BlcmF0aW9uKEpfSklUT3BlcmF0aW9uX0VQUFAgb3BlcmF0aW9uLCBHUFJSZWcgcmVz
dWx0LCBHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIsIEdQUlJlZyBhcmczKQorICAgIHsKKyAgICAg
ICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIsIGFyZzMpOwor
ICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7Cisg
ICAgfQogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9KSVRPcGVyYXRpb25f
RUdQIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyKQog
ICAgIHsKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFy
ZzIpOwpAQCAtMTkxNSw2ICsxOTIwLDE2IEBAIGNsYXNzIFNwZWN1bGF0aXZlSklUIHsKICAgICAg
ICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIFRydXN0ZWRJbW1QdHIo
cG9pbnRlcikpOwogICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb24s
IHJlc3VsdC5wYXlsb2FkR1BSKCksIHJlc3VsdC50YWdHUFIoKSk7CiAgICAgfQorICAgIEpJVENv
bXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9KSVRPcGVyYXRpb25fRVBQIG9wZXJhdGlvbiwg
SlNWYWx1ZVJlZ3MgcmVzdWx0LCBHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIpCisgICAgeworICAg
ICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMik7CisgICAg
ICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0LnBheWxvYWRH
UFIoKSwgcmVzdWx0LnRhZ0dQUigpKTsKKyAgICB9CisgICAgSklUQ29tcGlsZXI6OkNhbGwgY2Fs
bE9wZXJhdGlvbihKX0pJVE9wZXJhdGlvbl9FUFBQIG9wZXJhdGlvbiwgSlNWYWx1ZVJlZ3MgcmVz
dWx0LCBHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIsIEdQUlJlZyBhcmczKQorICAgIHsKKyAgICAg
ICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIsIGFyZzMpOwor
ICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdC5wYXls
b2FkR1BSKCksIHJlc3VsdC50YWdHUFIoKSk7CisgICAgfQogICAgIEpJVENvbXBpbGVyOjpDYWxs
IGNhbGxPcGVyYXRpb24oSl9KSVRPcGVyYXRpb25fRUdQIG9wZXJhdGlvbiwgSlNWYWx1ZVJlZ3Mg
cmVzdWx0LCBHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIpCiAgICAgewogICAgICAgICBtX2ppdC5z
ZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMik7CkBAIC0yNTYyLDYgKzI1Nzcs
NyBAQCBjbGFzcyBTcGVjdWxhdGl2ZUpJVCB7CiAgICAgdm9pZCBjb21waWxlUmVhbGxvY2F0ZVBy
b3BlcnR5U3RvcmFnZShOb2RlKik7CiAgICAgdm9pZCBjb21waWxlR2V0QnV0dGVyZmx5KE5vZGUq
KTsKICAgICB2b2lkIGNvbXBpbGVDYWxsRE9NR2V0dGVyKE5vZGUqKTsKKyAgICB2b2lkIGNvbXBp
bGVDYWxsRE9NKE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVDaGVja0RPTShOb2RlKik7CiAgICAg
CiAjaWYgVVNFKEpTVkFMVUUzMl82NCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCmluZGV4IGNiMDRhNWE2NWM3NTBlMjNmMTdj
OWRiMjM0MTViNzM0YWVmNWI0YTQuLjEwMjQyOWRlMDAwYjMyYWRmZGQwMjc0M2VjNmRmZGRlZTgx
ZjUzYWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRp
dmVKSVQzMl82NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxh
dGl2ZUpJVDMyXzY0LmNwcApAQCAtNTU2MSw2ICs1NTYxLDEwIEBAIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgYnJlYWs7CiAgICAgfQogCisgICAgY2Fz
ZSBDYWxsRE9NOgorICAgICAgICBjb21waWxlQ2FsbERPTShub2RlKTsKKyAgICAgICAgYnJlYWs7
CisKICAgICBjYXNlIENhbGxET01HZXR0ZXI6CiAgICAgICAgIGNvbXBpbGVDYWxsRE9NR2V0dGVy
KG5vZGUpOwogICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCmluZGV4IGI0MWM2ZjMyYjMzZDgzYzY1ZTg1NGY4NjA3
OGQ3NGE1MjQwMjk4MTMuLjgzMGJmYWRjYWYyODY2N2EwOGIxYjgyZWU1OTg4YzBjNjVkMmNhYjkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2
NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0
LmNwcApAQCAtNTY5Myw2ICs1NjkzLDEwIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUo
Tm9kZSogbm9kZSkKICAgICAgICAgY29tcGlsZU1hdGVyaWFsaXplTmV3T2JqZWN0KG5vZGUpOwog
ICAgICAgICBicmVhazsKIAorICAgIGNhc2UgQ2FsbERPTToKKyAgICAgICAgY29tcGlsZUNhbGxE
T00obm9kZSk7CisgICAgICAgIGJyZWFrOworCiAgICAgY2FzZSBDYWxsRE9NR2V0dGVyOgogICAg
ICAgICBjb21waWxlQ2FsbERPTUdldHRlcihub2RlKTsKICAgICAgICAgYnJlYWs7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZG9taml0L0RPTUpJVEVmZmVjdC5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RvbWppdC9ET01KSVRFZmZlY3QuaAppbmRleCA1OWUzMDBjMzkyNjEw
NDdhMTEyMjkwZGE4NmI0ZmExNjhkOWM2MzA2Li42MWNmM2I3MWFiYmNlMzFlNDUxMzZhZjI4NmM2
YzdhZjIzNjY4YTZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZG9taml0L0RP
TUpJVEVmZmVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kb21qaXQvRE9NSklURWZm
ZWN0LmgKQEAgLTI4LDU2ICsyOCw2MiBAQAogI2luY2x1ZGUgIkRPTUpJVEhlYXBSYW5nZS5oIgog
I2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgogCi0jaWYgRU5BQkxFKEpJVCkKLQogbmFtZXNwYWNl
IEpTQyB7IG5hbWVzcGFjZSBET01KSVQgewogCi1zdHJ1Y3QgRWZmZWN0IHsKK2NsYXNzIEVmZmVj
dCB7CitwdWJsaWM6CiAgICAgSGVhcFJhbmdlIHJlYWRzIHsgSGVhcFJhbmdlOjp0b3AoKSB9Owog
ICAgIEhlYXBSYW5nZSB3cml0ZXMgeyBIZWFwUmFuZ2U6OnRvcCgpIH07Ci0gICAgT3B0aW9uYWw8
SGVhcFJhbmdlPiBkZWY7CisgICAgSGVhcFJhbmdlIGRlZiB7IEhlYXBSYW5nZTo6dG9wKCkgfTsK
KworICAgIGNvbnN0ZXhwciBFZmZlY3QoKSA9IGRlZmF1bHQ7CisgICAgY29uc3RleHByIEVmZmVj
dChIZWFwUmFuZ2UgcmVhZHMsIEhlYXBSYW5nZSB3cml0ZXMpCisgICAgICAgIDogcmVhZHMocmVh
ZHMpCisgICAgICAgICwgd3JpdGVzKHdyaXRlcykKKyAgICB7CisgICAgfQorCisgICAgY29uc3Rl
eHByIEVmZmVjdChIZWFwUmFuZ2UgcmVhZHMsIEhlYXBSYW5nZSB3cml0ZXMsIEhlYXBSYW5nZSBk
ZWYpCisgICAgICAgIDogcmVhZHMocmVhZHMpCisgICAgICAgICwgd3JpdGVzKHdyaXRlcykKKyAg
ICAgICAgLCBkZWYoZGVmKQorICAgIHsKKyAgICB9CiAKLSAgICBzdGF0aWMgRWZmZWN0IGZvclJl
YWRXcml0ZShIZWFwUmFuZ2UgcmVhZFJhbmdlLCBIZWFwUmFuZ2Ugd3JpdGVSYW5nZSkKKyAgICBj
b25zdGV4cHIgc3RhdGljIEVmZmVjdCBmb3JXcml0ZShIZWFwUmFuZ2Ugd3JpdGVSYW5nZSkKICAg
ICB7Ci0gICAgICAgIEVmZmVjdCBlZmZlY3Q7Ci0gICAgICAgIGVmZmVjdC5yZWFkcyA9IHJlYWRS
YW5nZTsKLSAgICAgICAgZWZmZWN0LndyaXRlcyA9IHdyaXRlUmFuZ2U7Ci0gICAgICAgIHJldHVy
biBlZmZlY3Q7CisgICAgICAgIHJldHVybiBFZmZlY3QoSGVhcFJhbmdlOjpub25lKCksIHdyaXRl
UmFuZ2UpOwogICAgIH0KIAotICAgIHN0YXRpYyBFZmZlY3QgZm9yUHVyZSgpCisgICAgY29uc3Rl
eHByIHN0YXRpYyBFZmZlY3QgZm9yUmVhZChIZWFwUmFuZ2UgcmVhZFJhbmdlKQogICAgIHsKLSAg
ICAgICAgRWZmZWN0IGVmZmVjdDsKLSAgICAgICAgZWZmZWN0LnJlYWRzID0gSGVhcFJhbmdlOjpu
b25lKCk7Ci0gICAgICAgIGVmZmVjdC53cml0ZXMgPSBIZWFwUmFuZ2U6Om5vbmUoKTsKLSAgICAg
ICAgZWZmZWN0LmRlZiA9IEhlYXBSYW5nZTo6bm9uZSgpOwotICAgICAgICByZXR1cm4gZWZmZWN0
OworICAgICAgICByZXR1cm4gRWZmZWN0KHJlYWRSYW5nZSwgSGVhcFJhbmdlOjpub25lKCkpOwog
ICAgIH0KIAotICAgIHN0YXRpYyBFZmZlY3QgZm9yRGVmKEhlYXBSYW5nZSBkZWYpCisgICAgY29u
c3RleHByIHN0YXRpYyBFZmZlY3QgZm9yUmVhZFdyaXRlKEhlYXBSYW5nZSByZWFkUmFuZ2UsIEhl
YXBSYW5nZSB3cml0ZVJhbmdlKQogICAgIHsKLSAgICAgICAgRWZmZWN0IGVmZmVjdDsKLSAgICAg
ICAgZWZmZWN0LnJlYWRzID0gZGVmOwotICAgICAgICBlZmZlY3Qud3JpdGVzID0gSGVhcFJhbmdl
Ojpub25lKCk7Ci0gICAgICAgIGVmZmVjdC5kZWYgPSBkZWY7Ci0gICAgICAgIHJldHVybiBlZmZl
Y3Q7CisgICAgICAgIHJldHVybiBFZmZlY3QocmVhZFJhbmdlLCB3cml0ZVJhbmdlKTsKICAgICB9
CiAKLSAgICBzdGF0aWMgRWZmZWN0IGZvckRlZihIZWFwUmFuZ2UgZGVmLCBIZWFwUmFuZ2UgcmVh
ZFJhbmdlLCBIZWFwUmFuZ2Ugd3JpdGVSYW5nZSkKKyAgICBjb25zdGV4cHIgc3RhdGljIEVmZmVj
dCBmb3JQdXJlKCkKICAgICB7Ci0gICAgICAgIEVmZmVjdCBlZmZlY3Q7Ci0gICAgICAgIGVmZmVj
dC5yZWFkcyA9IHJlYWRSYW5nZTsKLSAgICAgICAgZWZmZWN0LndyaXRlcyA9IHdyaXRlUmFuZ2U7
Ci0gICAgICAgIGVmZmVjdC5kZWYgPSBkZWY7Ci0gICAgICAgIHJldHVybiBlZmZlY3Q7CisgICAg
ICAgIHJldHVybiBFZmZlY3QoSGVhcFJhbmdlOjpub25lKCksIEhlYXBSYW5nZTo6bm9uZSgpLCBI
ZWFwUmFuZ2U6Om5vbmUoKSk7CiAgICAgfQogCi0gICAgYm9vbCBtdXN0R2VuZXJhdGUoKSBjb25z
dAorICAgIGNvbnN0ZXhwciBzdGF0aWMgRWZmZWN0IGZvckRlZihIZWFwUmFuZ2UgZGVmKQorICAg
IHsKKyAgICAgICAgcmV0dXJuIEVmZmVjdChkZWYsIEhlYXBSYW5nZTo6bm9uZSgpLCBkZWYpOwor
ICAgIH0KKworICAgIGNvbnN0ZXhwciBzdGF0aWMgRWZmZWN0IGZvckRlZihIZWFwUmFuZ2UgZGVm
LCBIZWFwUmFuZ2UgcmVhZFJhbmdlLCBIZWFwUmFuZ2Ugd3JpdGVSYW5nZSkKKyAgICB7CisgICAg
ICAgIHJldHVybiBFZmZlY3QocmVhZFJhbmdlLCB3cml0ZVJhbmdlLCBkZWYpOworICAgIH0KKwor
ICAgIGNvbnN0ZXhwciBib29sIG11c3RHZW5lcmF0ZSgpIGNvbnN0CiAgICAgewogICAgICAgICBy
ZXR1cm4gISF3cml0ZXM7CiAgICAgfQogfTsKIAogfSB9Ci0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RvbWppdC9ET01KSVRIZWFwUmFuZ2UuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kb21qaXQvRE9NSklUSGVhcFJhbmdlLmgKaW5kZXggZmI5Mzk5OWZmNzg1
YzA2ZjdkYWNkNmRhOWM4ZDZlMGE5NTY3ODY3NC4uZjcwZmVjYzY5MDZkZDViZTA1NDI5NWU3MDhl
OTRiNzc5MzExNjQwZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RvbWppdC9E
T01KSVRIZWFwUmFuZ2UuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZG9taml0L0RPTUpJ
VEhlYXBSYW5nZS5oCkBAIC0yOCw4ICsyOCw2IEBACiAjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMu
aD4KICNpbmNsdWRlIDx3dGYvUHJpbnRTdHJlYW0uaD4KIAotI2lmIEVOQUJMRShKSVQpCi0KIG5h
bWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgRE9NSklUIHsKIAogY2xhc3MgSGVhcFJhbmdlIHsKQEAg
LTQ3LDcgKzQ1LDYgQEAgY2xhc3MgSGVhcFJhbmdlIHsKICAgICAgICAgQVNTRVJUX1dJVEhfTUVT
U0FHRShiZWdpbiA8PSBlbmQsICJiZWdpbiA8PSBlbmQgaXMgdGhlIGludmFyaWFudCBvZiB0aGlz
IEhlYXBSYW5nZS4iKTsKICAgICB9CiAKLXByaXZhdGU6CiAgICAgZW51bSBDb25zdEV4cHJUYWcg
eyBDb25zdEV4cHIgfTsKICAgICBjb25zdGV4cHIgSGVhcFJhbmdlKENvbnN0RXhwclRhZywgdWlu
dDE2X3QgYmVnaW4sIHVpbnQxNl90IGVuZCkKICAgICAgICAgOiBtX2JlZ2luKGJlZ2luKQpAQCAt
NTUsMjEgKzUyLDEzIEBAIGNsYXNzIEhlYXBSYW5nZSB7CiAgICAgewogICAgIH0KIAotICAgIHRl
bXBsYXRlPHVpbnQxNl90IGJlZ2luLCB1aW50MTZfdCBlbmQ+Ci0gICAgc3RhdGljIGNvbnN0ZXhw
ciBIZWFwUmFuZ2UgZnJvbUNvbnN0YW50KCkKLSAgICB7Ci0gICAgICAgIHN0YXRpY19hc3NlcnQo
YmVnaW4gPD0gZW5kLCAiYmVnaW4gPD0gZW5kIGlzIHRoZSBpbnZhcmlhbnQgb2YgdGhpcyBIZWFw
UmFuZ2UuIik7Ci0gICAgICAgIHJldHVybiBIZWFwUmFuZ2UoQ29uc3RFeHByLCBiZWdpbiwgZW5k
KTsKLSAgICB9Ci0KLXB1YmxpYzoKICAgICBlbnVtIFJhd1JlcHJlc2VudGF0aW9uVGFnIHsgUmF3
UmVwcmVzZW50YXRpb24gfTsKICAgICBleHBsaWNpdCBjb25zdGV4cHIgSGVhcFJhbmdlKFJhd1Jl
cHJlc2VudGF0aW9uVGFnLCB1aW50MzJfdCB2YWx1ZSkKICAgICAgICAgOiBtX3Jhdyh2YWx1ZSkK
ICAgICB7CiAgICAgfQogCi0gICAgc3RhdGljIEhlYXBSYW5nZSBmcm9tUmF3KHVpbnQzMl90IHZh
bHVlKQorICAgIGNvbnN0ZXhwciBzdGF0aWMgSGVhcFJhbmdlIGZyb21SYXcodWludDMyX3QgdmFs
dWUpCiAgICAgewogICAgICAgICByZXR1cm4gSGVhcFJhbmdlKFJhd1JlcHJlc2VudGF0aW9uLCB2
YWx1ZSk7CiAgICAgfQpAQCAtNzgsMTYgKzY3LDI4IEBAIGNsYXNzIEhlYXBSYW5nZSB7CiAgICAg
dWludDE2X3QgZW5kKCkgY29uc3QgeyByZXR1cm4gbV9lbmQ7IH0KICAgICB1aW50MzJfdCByYXdS
ZXByZXNlbnRhdGlvbigpIHsgcmV0dXJuIG1fcmF3OyB9CiAKLSAgICBleHBsaWNpdCBvcGVyYXRv
ciBib29sKCkgY29uc3QKKyAgICBjb25zdGV4cHIgZXhwbGljaXQgb3BlcmF0b3IgYm9vbCgpIGNv
bnN0CiAgICAgewogICAgICAgICByZXR1cm4gbV9iZWdpbiAhPSBtX2VuZDsKICAgICB9CiAKLSAg
ICBib29sIG9wZXJhdG9yPT0oY29uc3QgSGVhcFJhbmdlJiBvdGhlcikgY29uc3QKKyAgICBjb25z
dGV4cHIgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEhlYXBSYW5nZSYgb3RoZXIpIGNvbnN0CiAgICAg
ewogICAgICAgICByZXR1cm4gbV9iZWdpbiA9PSBvdGhlci5tX2JlZ2luICYmIG1fZW5kID09IG90
aGVyLm1fZW5kOwogICAgIH0KIAorICAgIGNvbnN0ZXhwciBib29sIG9wZXJhdG9yIT0oY29uc3Qg
SGVhcFJhbmdlJiBvdGhlcikgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiAhb3BlcmF0b3I9
PShvdGhlcik7CisgICAgfQorCisgICAgdGVtcGxhdGU8dWludDE2X3QgYmVnaW4sIHVpbnQxNl90
IGVuZD4KKyAgICBzdGF0aWMgY29uc3RleHByIEhlYXBSYW5nZSBmcm9tQ29uc3RhbnQoKQorICAg
IHsKKyAgICAgICAgc3RhdGljX2Fzc2VydChiZWdpbiA8PSBlbmQsICJiZWdpbiA8PSBlbmQgaXMg
dGhlIGludmFyaWFudCBvZiB0aGlzIEhlYXBSYW5nZS4iKTsKKyAgICAgICAgcmV0dXJuIEhlYXBS
YW5nZShDb25zdEV4cHIsIGJlZ2luLCBlbmQpOworICAgIH0KKwogICAgIHN0YXRpYyBjb25zdGV4
cHIgSGVhcFJhbmdlIHRvcCgpIHsgcmV0dXJuIGZyb21Db25zdGFudDwwLCBVSU5UMTZfTUFYPigp
OyB9CiAgICAgc3RhdGljIGNvbnN0ZXhwciBIZWFwUmFuZ2Ugbm9uZSgpIHsgcmV0dXJuIGZyb21D
b25zdGFudDxVSU5UMTZfTUFYLCBVSU5UMTZfTUFYPigpOyB9IC8vIEVtcHR5IHJhbmdlLgogCkBA
IC0xMjcsNSArMTI4LDMgQEAgY2xhc3MgSGVhcFJhbmdlIHsKIH07CiAKIH0gfQotCi0jZW5kaWYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kb21qaXQvRE9NSklUU2lnbmF0dXJl
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZG9taml0L0RPTUpJVFNpZ25hdHVyZS5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjM3ZDYwZWQ3ZjNlYWYwNjNkOWIwYzlkODllZDYzNDg3YzRjYmI1YTMKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZG9taml0L0RPTUpJVFNpZ25hdHVyZS5o
CkBAIC0wLDAgKzEsNzAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
CisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkNsYXNzSW5mby5oIgorI2luY2x1ZGUg
IkRPTUpJVEVmZmVjdC5oIgorI2luY2x1ZGUgIlNwZWN1bGF0ZWRUeXBlLmgiCisKK25hbWVzcGFj
ZSBKU0MgeyBuYW1lc3BhY2UgRE9NSklUIHsKKworLy8gQ3VycmVudGx5LCB3ZSBvbmx5IHN1cHBv
cnQgZnVuY3Rpb25zIHdoaWNoIGFyZ3VtZW50cyB1cCB0byAyLgorLy8gRXZlbnR1YWxseSwgd2Ug
c2hvdWxkIGV4dGVuZCB0aGlzLiBCdXQgcG9zc2libHksIDIgb3IgMyBjYW4gY292ZXIgdHlwaWNh
bCB1c2UgY2FzZXMuCisjZGVmaW5lIEpTQ19ET01KSVRfU0lHTkFUVVJFX01BWF9BUkdVTUVOVFMg
MgorCitjbGFzcyBQYXRjaHBvaW50OworCit0eXBlZGVmIFJlZjxQYXRjaHBvaW50PiBDaGVja0RP
TUdlbmVyYXRvckZ1bmN0aW9uKHZvaWQpOworCitjbGFzcyBTaWduYXR1cmUgeworcHVibGljOgor
ICAgIHRlbXBsYXRlPHR5cGVuYW1lLi4uIEFyZ3VtZW50cz4KKyAgICBjb25zdGV4cHIgU2lnbmF0
dXJlKHVpbnRwdHJfdCB1bnNhZmVGdW5jdGlvbiwgQ2hlY2tET01HZW5lcmF0b3JGdW5jdGlvbiog
Y2hlY2tET01HZW5lcmF0b3JGdW5jdGlvbiwgY29uc3QgQ2xhc3NJbmZvKiBjbGFzc0luZm8sIEVm
ZmVjdCBlZmZlY3QsIFNwZWN1bGF0ZWRUeXBlIHJlc3VsdCwgQXJndW1lbnRzLi4uIGFyZ3VtZW50
cykKKyAgICAgICAgOiB1bnNhZmVGdW5jdGlvbih1bnNhZmVGdW5jdGlvbikKKyAgICAgICAgLCBj
aGVja0RPTUdlbmVyYXRvckZ1bmN0aW9uKGNoZWNrRE9NR2VuZXJhdG9yRnVuY3Rpb24pCisgICAg
ICAgICwgY2xhc3NJbmZvKGNsYXNzSW5mbykKKyAgICAgICAgLCBlZmZlY3QoZWZmZWN0KQorICAg
ICAgICAsIHJlc3VsdChyZXN1bHQpCisgICAgICAgICwgYXJndW1lbnRzIHtzdGF0aWNfY2FzdDxT
cGVjdWxhdGVkVHlwZT4oYXJndW1lbnRzKS4uLn0KKyAgICAgICAgLCBhcmd1bWVudENvdW50KHNp
emVvZi4uLihhcmd1bWVudHMpKQorICAgIHsKKyAgICB9CisKKyAgICBSZWY8UGF0Y2hwb2ludD4g
Y2hlY2tET00oKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIGNoZWNrRE9NR2VuZXJhdG9y
RnVuY3Rpb24oKTsKKyAgICB9CisKKyAgICB1aW50cHRyX3QgdW5zYWZlRnVuY3Rpb247CisgICAg
Q2hlY2tET01HZW5lcmF0b3JGdW5jdGlvbiogY2hlY2tET01HZW5lcmF0b3JGdW5jdGlvbjsKKyAg
ICBjb25zdCBDbGFzc0luZm8qIGNvbnN0IGNsYXNzSW5mbzsKKyAgICBjb25zdCBFZmZlY3QgZWZm
ZWN0OworICAgIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIHJlc3VsdDsKKyAgICBjb25zdCBTcGVjdWxh
dGVkVHlwZSBhcmd1bWVudHNbSlNDX0RPTUpJVF9TSUdOQVRVUkVfTUFYX0FSR1VNRU5UU107Cisg
ICAgY29uc3QgdW5zaWduZWQgYXJndW1lbnRDb3VudDsKK307CisKK30gfQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCmluZGV4IDU0ZjRlNzJlNjQxOWJm
ZTI1NTY1M2UzNjVmYmFjODIwMzJmZmRlOTcuLjNiYTE1ZTZlMjg0NGQzMDQwM2U4ZGQ0ZTAxNmMy
NGIwYzA0NmRmYzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2Fw
YWJpbGl0aWVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxp
dGllcy5jcHAKQEAgLTI3Myw2ICsyNzMsNyBAQCBpbmxpbmUgQ2FwYWJpbGl0eUxldmVsIGNhbkNv
bXBpbGUoTm9kZSogbm9kZSkKICAgICBjYXNlIERlZmluZUFjY2Vzc29yUHJvcGVydHk6CiAgICAg
Y2FzZSBUb0xvd2VyQ2FzZToKICAgICBjYXNlIENoZWNrRE9NOgorICAgIGNhc2UgQ2FsbERPTToK
ICAgICBjYXNlIENhbGxET01HZXR0ZXI6CiAgICAgICAgIC8vIFRoZXNlIGFyZSBPSy4KICAgICAg
ICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2Vy
REZHVG9CMy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5j
cHAKaW5kZXggYWQxNjE1NzIwMjdjNDFmMzAwNjgzZGMxMjI0MmY5Yjk1ZDQ1OTBjMi4uNDBlYmMx
NTc5MGNkMGQ0NTM4N2ZjNTBkZGZmMmQ4NTExZTZlN2YwZCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcApAQCAtMTA2MCw2ICsxMDYwLDkgQEAgY2xh
c3MgTG93ZXJERkdUb0IzIHsKICAgICAgICAgY2FzZSBDaGVja0RPTToKICAgICAgICAgICAgIGNv
bXBpbGVDaGVja0RPTSgpOwogICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQ2FsbERP
TToKKyAgICAgICAgICAgIGNvbXBpbGVDYWxsRE9NKCk7CisgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgY2FzZSBDYWxsRE9NR2V0dGVyOgogICAgICAgICAgICAgY29tcGlsZUNhbGxET01HZXR0
ZXIoKTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtOTEwMCw2ICs5MTAzLDU0IEBAIGNsYXNzIExv
d2VyREZHVG9CMyB7CiAgICAgICAgIHBhdGNocG9pbnQtPmVmZmVjdHMgPSBFZmZlY3RzOjpmb3JD
aGVjaygpOwogICAgIH0KIAorICAgIHZvaWQgY29tcGlsZUNhbGxET00oKQorICAgIHsKKyAgICAg
ICAgY29uc3QgRE9NSklUOjpTaWduYXR1cmUqIHNpZ25hdHVyZSA9IG1fbm9kZS0+c2lnbmF0dXJl
KCk7CisKKyAgICAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBoYXZlIGEgd2F5IHRvIGNhbGwgZnVu
Y3Rpb25zIHdpdGggdGhlIHZlY3RvciBvZiByZWdpc3RlcnMuCisgICAgICAgIC8vIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjMwOTkKKyAgICAgICAgVmVjdG9yPExW
YWx1ZT4gb3BlcmFuZHM7CisKKyAgICAgICAgdW5zaWduZWQgaW5kZXggPSAwOworICAgICAgICBE
RkdfTk9ERV9ET19UT19DSElMRFJFTihtX2dyYXBoLCBtX25vZGUsIFsmXShOb2RlKiwgRWRnZSBl
ZGdlKSB7CisgICAgICAgICAgICBpZiAoIWluZGV4KQorICAgICAgICAgICAgICAgIG9wZXJhbmRz
LmFwcGVuZChsb3dDZWxsKGVkZ2UpKTsKKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAg
ICAgIHN3aXRjaCAoc2lnbmF0dXJlLT5hcmd1bWVudHNbaW5kZXggLSAxXSkgeworICAgICAgICAg
ICAgICAgIGNhc2UgU3BlY1N0cmluZzoKKyAgICAgICAgICAgICAgICAgICAgb3BlcmFuZHMuYXBw
ZW5kKGxvd1N0cmluZyhlZGdlKSk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgICAgIGNhc2UgU3BlY0ludDMyT25seToKKyAgICAgICAgICAgICAgICAgICAgb3BlcmFu
ZHMuYXBwZW5kKGxvd0ludDMyKGVkZ2UpKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICAgICAgY2FzZSBTcGVjQm9vbGVhbjoKKyAgICAgICAgICAgICAgICAgICAgb3Bl
cmFuZHMuYXBwZW5kKGxvd0Jvb2xlYW4oZWRnZSkpOworICAgICAgICAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICArK2luZGV4
OworICAgICAgICB9KTsKKworICAgICAgICBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMg
PSBzaWduYXR1cmUtPmFyZ3VtZW50Q291bnQgKyAxOworICAgICAgICBMVmFsdWUgcmVzdWx0Owor
ICAgICAgICBzd2l0Y2ggKGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKSB7CisgICAgICAgIGNh
c2UgMToKKyAgICAgICAgICAgIHJlc3VsdCA9IHZtQ2FsbChJbnQ2NCwgbV9vdXQub3BlcmF0aW9u
KHJlaW50ZXJwcmV0X2Nhc3Q8Sl9KSVRPcGVyYXRpb25fRVA+KHNpZ25hdHVyZS0+dW5zYWZlRnVu
Y3Rpb24pKSwgbV9jYWxsRnJhbWUsIG9wZXJhbmRzWzBdKTsKKyAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICBjYXNlIDI6CisgICAgICAgICAgICByZXN1bHQgPSB2bUNhbGwoSW50NjQsIG1fb3V0
Lm9wZXJhdGlvbihyZWludGVycHJldF9jYXN0PEpfSklUT3BlcmF0aW9uX0VQUD4oc2lnbmF0dXJl
LT51bnNhZmVGdW5jdGlvbikpLCBtX2NhbGxGcmFtZSwgb3BlcmFuZHNbMF0sIG9wZXJhbmRzWzFd
KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIDM6CisgICAgICAgICAgICByZXN1
bHQgPSB2bUNhbGwoSW50NjQsIG1fb3V0Lm9wZXJhdGlvbihyZWludGVycHJldF9jYXN0PEpfSklU
T3BlcmF0aW9uX0VQUFA+KHNpZ25hdHVyZS0+dW5zYWZlRnVuY3Rpb24pKSwgbV9jYWxsRnJhbWUs
IG9wZXJhbmRzWzBdLCBvcGVyYW5kc1sxXSwgb3BlcmFuZHNbMl0pOworICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVB
Q0hFRCgpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAgICBzZXRKU1Zh
bHVlKHJlc3VsdCk7CisgICAgfQorCiAgICAgdm9pZCBjb21waWxlQ2FsbERPTUdldHRlcigpCiAg
ICAgewogICAgICAgICBET01KSVQ6OkNhbGxET01HZXR0ZXJQYXRjaHBvaW50KiBkb21KSVQgPSBt
X25vZGUtPmNhbGxET01HZXR0ZXJEYXRhKCktPnBhdGNocG9pbnQ7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCmluZGV4IDhmNmM2OTcxYTZiZWU5ZjFmYjZmYzM2OGRl
NWEyY2I4NDc2NDRhNjguLjIwYjcxZjQ1MmNlNDRiNWNjNTZjYzcxYzJkNzZiMTdiNTg4ZmU2NjUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCkBAIC0xNTgsNiAr
MTU4LDcgQEAgdHlwZWRlZiBFbmNvZGVkSlNWYWx1ZSAoSklUX09QRVJBVElPTiAqSl9KSVRPcGVy
YXRpb25fRUpQKShFeGVjU3RhdGUqLCBFbmNvZGVkSlMKIHR5cGVkZWYgRW5jb2RlZEpTVmFsdWUg
KEpJVF9PUEVSQVRJT04gKkpfSklUT3BlcmF0aW9uX0VHUCkoRXhlY1N0YXRlKiwgSlNHbG9iYWxP
YmplY3QqLCB2b2lkKik7CiB0eXBlZGVmIEVuY29kZWRKU1ZhbHVlIChKSVRfT1BFUkFUSU9OICpK
X0pJVE9wZXJhdGlvbl9FUCkoRXhlY1N0YXRlKiwgdm9pZCopOwogdHlwZWRlZiBFbmNvZGVkSlNW
YWx1ZSAoSklUX09QRVJBVElPTiAqSl9KSVRPcGVyYXRpb25fRVBQKShFeGVjU3RhdGUqLCB2b2lk
Kiwgdm9pZCopOwordHlwZWRlZiBFbmNvZGVkSlNWYWx1ZSAoSklUX09QRVJBVElPTiAqSl9KSVRP
cGVyYXRpb25fRVBQUCkoRXhlY1N0YXRlKiwgdm9pZCosIHZvaWQqLCB2b2lkKik7CiB0eXBlZGVm
IEVuY29kZWRKU1ZhbHVlIChKSVRfT1BFUkFUSU9OICpKX0pJVE9wZXJhdGlvbl9FUFMpKEV4ZWNT
dGF0ZSosIHZvaWQqLCBzaXplX3QpOwogdHlwZWRlZiBFbmNvZGVkSlNWYWx1ZSAoSklUX09QRVJB
VElPTiAqSl9KSVRPcGVyYXRpb25fRVBjKShFeGVjU3RhdGUqLCBJbnN0cnVjdGlvbiopOwogdHlw
ZWRlZiBFbmNvZGVkSlNWYWx1ZSAoSklUX09QRVJBVElPTiAqSl9KSVRPcGVyYXRpb25fRUpzY0Mp
KEV4ZWNTdGF0ZSosIEpTU2NvcGUqLCBKU0NlbGwqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUVGh1bmtzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUVGh1bmtzLmNwcAppbmRleCBiZjBhN2Y5MDkxOWE1YjZkMGJlZWQ5MjhhYmRhZjcxMGM5ZGM5
ZDBiLi40MGMxMmNlYzk0ZTAxYTA4NDA0ZjdiNmQ5NjcyMWYxMDUxZjQ4MzE5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFRodW5rcy5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRUaHVua3MuY3BwCkBAIC05MCwxMCArOTAsMTAgQEAgdm9pZCBK
SVRUaHVua3M6OmZpbmFsaXplKEhhbmRsZTxVbmtub3duPiBoYW5kbGUsIHZvaWQqKQogCiBOYXRp
dmVFeGVjdXRhYmxlKiBKSVRUaHVua3M6Omhvc3RGdW5jdGlvblN0dWIoVk0qIHZtLCBOYXRpdmVG
dW5jdGlvbiBmdW5jdGlvbiwgTmF0aXZlRnVuY3Rpb24gY29uc3RydWN0b3IsIGNvbnN0IFN0cmlu
ZyYgbmFtZSkKIHsKLSAgICByZXR1cm4gaG9zdEZ1bmN0aW9uU3R1Yih2bSwgZnVuY3Rpb24sIGNv
bnN0cnVjdG9yLCBudWxscHRyLCBOb0ludHJpbnNpYywgbmFtZSk7CisgICAgcmV0dXJuIGhvc3RG
dW5jdGlvblN0dWIodm0sIGZ1bmN0aW9uLCBjb25zdHJ1Y3RvciwgbnVsbHB0ciwgTm9JbnRyaW5z
aWMsIG51bGxwdHIsIG5hbWUpOwogfQogCi1OYXRpdmVFeGVjdXRhYmxlKiBKSVRUaHVua3M6Omhv
c3RGdW5jdGlvblN0dWIoVk0qIHZtLCBOYXRpdmVGdW5jdGlvbiBmdW5jdGlvbiwgTmF0aXZlRnVu
Y3Rpb24gY29uc3RydWN0b3IsIFRodW5rR2VuZXJhdG9yIGdlbmVyYXRvciwgSW50cmluc2ljIGlu
dHJpbnNpYywgY29uc3QgU3RyaW5nJiBuYW1lKQorTmF0aXZlRXhlY3V0YWJsZSogSklUVGh1bmtz
Ojpob3N0RnVuY3Rpb25TdHViKFZNKiB2bSwgTmF0aXZlRnVuY3Rpb24gZnVuY3Rpb24sIE5hdGl2
ZUZ1bmN0aW9uIGNvbnN0cnVjdG9yLCBUaHVua0dlbmVyYXRvciBnZW5lcmF0b3IsIEludHJpbnNp
YyBpbnRyaW5zaWMsIGNvbnN0IERPTUpJVDo6U2lnbmF0dXJlKiBzaWduYXR1cmUsIGNvbnN0IFN0
cmluZyYgbmFtZSkKIHsKICAgICBBU1NFUlQoIWlzQ29tcGlsYXRpb25UaHJlYWQoKSk7ICAgIAog
ICAgIEFTU0VSVCh2bS0+Y2FuVXNlSklUKCkpOwpAQCAtMTEwLDE0ICsxMTAsMTQgQEAgTmF0aXZl
RXhlY3V0YWJsZSogSklUVGh1bmtzOjpob3N0RnVuY3Rpb25TdHViKFZNKiB2bSwgTmF0aXZlRnVu
Y3Rpb24gZnVuY3Rpb24sIE4KICAgICAKICAgICBSZWZQdHI8SklUQ29kZT4gZm9yQ29uc3RydWN0
ID0gYWRvcHRSZWYobmV3IE5hdGl2ZUpJVENvZGUoTWFjcm9Bc3NlbWJsZXJDb2RlUmVmOjpjcmVh
dGVTZWxmTWFuYWdlZENvZGVSZWYoY3RpTmF0aXZlQ29uc3RydWN0KHZtKSksIEpJVENvZGU6Okhv
c3RDYWxsVGh1bmspKTsKICAgICAKLSAgICBOYXRpdmVFeGVjdXRhYmxlKiBuYXRpdmVFeGVjdXRh
YmxlID0gTmF0aXZlRXhlY3V0YWJsZTo6Y3JlYXRlKCp2bSwgZm9yQ2FsbCwgZnVuY3Rpb24sIGZv
ckNvbnN0cnVjdCwgY29uc3RydWN0b3IsIGludHJpbnNpYywgbmFtZSk7CisgICAgTmF0aXZlRXhl
Y3V0YWJsZSogbmF0aXZlRXhlY3V0YWJsZSA9IE5hdGl2ZUV4ZWN1dGFibGU6OmNyZWF0ZSgqdm0s
IGZvckNhbGwsIGZ1bmN0aW9uLCBmb3JDb25zdHJ1Y3QsIGNvbnN0cnVjdG9yLCBpbnRyaW5zaWMs
IHNpZ25hdHVyZSwgbmFtZSk7CiAgICAgd2Vha0FkZCgqbV9ob3N0RnVuY3Rpb25TdHViTWFwLCBz
dGQ6Om1ha2VfdHVwbGUoZnVuY3Rpb24sIGNvbnN0cnVjdG9yLCBuYW1lKSwgV2VhazxOYXRpdmVF
eGVjdXRhYmxlPihuYXRpdmVFeGVjdXRhYmxlLCB0aGlzKSk7CiAgICAgcmV0dXJuIG5hdGl2ZUV4
ZWN1dGFibGU7CiB9CiAKIE5hdGl2ZUV4ZWN1dGFibGUqIEpJVFRodW5rczo6aG9zdEZ1bmN0aW9u
U3R1YihWTSogdm0sIE5hdGl2ZUZ1bmN0aW9uIGZ1bmN0aW9uLCBUaHVua0dlbmVyYXRvciBnZW5l
cmF0b3IsIEludHJpbnNpYyBpbnRyaW5zaWMsIGNvbnN0IFN0cmluZyYgbmFtZSkKIHsKLSAgICBy
ZXR1cm4gaG9zdEZ1bmN0aW9uU3R1Yih2bSwgZnVuY3Rpb24sIGNhbGxIb3N0RnVuY3Rpb25Bc0Nv
bnN0cnVjdG9yLCBnZW5lcmF0b3IsIGludHJpbnNpYywgbmFtZSk7CisgICAgcmV0dXJuIGhvc3RG
dW5jdGlvblN0dWIodm0sIGZ1bmN0aW9uLCBjYWxsSG9zdEZ1bmN0aW9uQXNDb25zdHJ1Y3Rvciwg
Z2VuZXJhdG9yLCBpbnRyaW5zaWMsIG51bGxwdHIsIG5hbWUpOwogfQogCiB2b2lkIEpJVFRodW5r
czo6Y2xlYXJIb3N0RnVuY3Rpb25TdHVicygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVFRodW5rcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRUaHVu
a3MuaAppbmRleCAzZjhmZTgwM2Y5ODcxMGY2OTIzNTI3YmM4ZjY1NTBmNGVkZDFjN2FlLi5hZGRj
ZjIzMGMzNDVkNDI3MWI2MzdmMDhiOTRjNDE2YTNlZDE4MmE0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVFRodW5rcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUVGh1bmtzLmgKQEAgLTM5LDYgKzM5LDkgQEAKICNpbmNsdWRlIDx3dGYvdGV4dC9T
dHJpbmdIYXNoLmg+CiAKIG5hbWVzcGFjZSBKU0MgeworbmFtZXNwYWNlIERPTUpJVCB7CitjbGFz
cyBTaWduYXR1cmU7Cit9CiAKIGNsYXNzIFZNOwogY2xhc3MgTmF0aXZlRXhlY3V0YWJsZTsKQEAg
LTU3LDcgKzYwLDcgQEAgY2xhc3MgSklUVGh1bmtzIGZpbmFsIDogcHJpdmF0ZSBXZWFrSGFuZGxl
T3duZXIgewogICAgIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBjdGlTdHViKFZNKiwgVGh1bmtHZW5l
cmF0b3IpOwogCiAgICAgTmF0aXZlRXhlY3V0YWJsZSogaG9zdEZ1bmN0aW9uU3R1YihWTSosIE5h
dGl2ZUZ1bmN0aW9uLCBOYXRpdmVGdW5jdGlvbiBjb25zdHJ1Y3RvciwgY29uc3QgU3RyaW5nJiBu
YW1lKTsKLSAgICBOYXRpdmVFeGVjdXRhYmxlKiBob3N0RnVuY3Rpb25TdHViKFZNKiwgTmF0aXZl
RnVuY3Rpb24sIE5hdGl2ZUZ1bmN0aW9uIGNvbnN0cnVjdG9yLCBUaHVua0dlbmVyYXRvciwgSW50
cmluc2ljLCBjb25zdCBTdHJpbmcmIG5hbWUpOworICAgIE5hdGl2ZUV4ZWN1dGFibGUqIGhvc3RG
dW5jdGlvblN0dWIoVk0qLCBOYXRpdmVGdW5jdGlvbiwgTmF0aXZlRnVuY3Rpb24gY29uc3RydWN0
b3IsIFRodW5rR2VuZXJhdG9yLCBJbnRyaW5zaWMsIGNvbnN0IERPTUpJVDo6U2lnbmF0dXJlKiwg
Y29uc3QgU3RyaW5nJiBuYW1lKTsKICAgICBOYXRpdmVFeGVjdXRhYmxlKiBob3N0RnVuY3Rpb25T
dHViKFZNKiwgTmF0aXZlRnVuY3Rpb24sIFRodW5rR2VuZXJhdG9yLCBJbnRyaW5zaWMsIGNvbnN0
IFN0cmluZyYgbmFtZSk7CiAKICAgICB2b2lkIGNsZWFySG9zdEZ1bmN0aW9uU3R1YnMoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQm91bmRGdW5jdGlvbi5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0JvdW5kRnVuY3Rpb24uY3BwCmlu
ZGV4IDI2Zjk5ZDY1M2FhMTQ0YjI0MDRkZDc5NTk0MzI5M2RlOTZiNzM0YzUuLmM0Y2U0M2U3ZDU2
MGI4NzM2M2M0OGQ5NTBhMDlhZDc5ZDA1MjQ5N2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTQm91bmRGdW5jdGlvbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNCb3VuZEZ1bmN0aW9uLmNwcApAQCAtMTY4LDcgKzE2OCw3IEBAIEpT
Qm91bmRGdW5jdGlvbiogSlNCb3VuZEZ1bmN0aW9uOjpjcmVhdGUoVk0mIHZtLCBFeGVjU3RhdGUq
IGV4ZWMsIEpTR2xvYmFsT2JqZWN0CiAgICAgTmF0aXZlRXhlY3V0YWJsZSogZXhlY3V0YWJsZSA9
IHZtLmdldEhvc3RGdW5jdGlvbigKICAgICAgICAgc2xvd0Nhc2UgPyBib3VuZEZ1bmN0aW9uQ2Fs
bCA6IGJvdW5kVGhpc05vQXJnc0Z1bmN0aW9uQ2FsbCwKICAgICAgICAgc2xvd0Nhc2UgPyBOb0lu
dHJpbnNpYyA6IEJvdW5kVGhpc05vQXJnc0Z1bmN0aW9uQ2FsbEludHJpbnNpYywKLSAgICAgICAg
Y2FuQ29uc3RydWN0ID8gKHNsb3dDYXNlID8gYm91bmRGdW5jdGlvbkNvbnN0cnVjdCA6IGJvdW5k
VGhpc05vQXJnc0Z1bmN0aW9uQ29uc3RydWN0KSA6IGNhbGxIb3N0RnVuY3Rpb25Bc0NvbnN0cnVj
dG9yLAorICAgICAgICBjYW5Db25zdHJ1Y3QgPyAoc2xvd0Nhc2UgPyBib3VuZEZ1bmN0aW9uQ29u
c3RydWN0IDogYm91bmRUaGlzTm9BcmdzRnVuY3Rpb25Db25zdHJ1Y3QpIDogY2FsbEhvc3RGdW5j
dGlvbkFzQ29uc3RydWN0b3IsIG51bGxwdHIsCiAgICAgICAgIG5hbWUpOwogICAgIFN0cnVjdHVy
ZSogc3RydWN0dXJlID0gZ2V0Qm91bmRGdW5jdGlvblN0cnVjdHVyZSh2bSwgZXhlYywgZ2xvYmFs
T2JqZWN0LCB0YXJnZXRGdW5jdGlvbik7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwg
bnVsbHB0cik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Nl
bGwuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5oCmluZGV4IGM0MGYz
ZTIxOTg0MWZiNDY4OTYzNTI4NGIwNDIyNDdhZmQ1MjNjMzYuLjRlZmJmOTA3NzhjYzU3MWJiZGI4
Mjg3MWE1MWZhNDRmODU2YWU5OGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTQ2VsbC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2Vs
bC5oCkBAIC01NiwxNyArNTYsMTcgQEAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gdm9pZCogYWxsb2Nh
dGVDZWxsKEhlYXAmLCBzaXplX3QpOwogdGVtcGxhdGU8dHlwZW5hbWUgVD4gdm9pZCogYWxsb2Nh
dGVDZWxsKEhlYXAmLCBHQ0RlZmVycmFsQ29udGV4dCopOwogdGVtcGxhdGU8dHlwZW5hbWUgVD4g
dm9pZCogYWxsb2NhdGVDZWxsKEhlYXAmLCBHQ0RlZmVycmFsQ29udGV4dCosIHNpemVfdCk7CiAK
LSNkZWZpbmUgREVDTEFSRV9FWFBPUlRfSU5GTyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFwKLSAgICBwcm90ZWN0ZWQ6ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgc3RhdGljIEpTX0VY
UE9SVERBVEEgY29uc3QgOjpKU0M6OkNsYXNzSW5mbyBzX2luZm87ICAgICAgICAgICAgIFwKLSAg
ICBwdWJsaWM6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFwKLSAgICAgICAgc3RhdGljIGNvbnN0IDo6SlNDOjpDbGFzc0luZm8qIGlu
Zm8oKSB7IHJldHVybiAmc19pbmZvOyB9Ci0KLSNkZWZpbmUgREVDTEFSRV9JTkZPICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBwcm90ZWN0
ZWQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFwKLSAgICAgICAgc3RhdGljIGNvbnN0IDo6SlNDOjpDbGFzc0luZm8gc19pbmZvOyAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBwdWJsaWM6ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgc3RhdGlj
IGNvbnN0IDo6SlNDOjpDbGFzc0luZm8qIGluZm8oKSB7IHJldHVybiAmc19pbmZvOyB9CisjZGVm
aW5lIERFQ0xBUkVfRVhQT1JUX0lORk8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFwKKyAgICBwcm90ZWN0ZWQ6ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBzdGF0aWMg
SlNfRVhQT1JUREFUQSBjb25zdCA6OkpTQzo6Q2xhc3NJbmZvIHNfaW5mbzsgICAgICAgICAgICAg
ICAgICBcCisgICAgcHVibGljOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBj
b25zdCA6OkpTQzo6Q2xhc3NJbmZvKiBpbmZvKCkgeyByZXR1cm4gJnNfaW5mbzsgfQorCisjZGVm
aW5lIERFQ0xBUkVfSU5GTyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFwKKyAgICBwcm90ZWN0ZWQ6ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBzdGF0aWMg
Y29uc3QgOjpKU0M6OkNsYXNzSW5mbyBzX2luZm87ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBcCisgICAgcHVibGljOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBj
b25zdCA6OkpTQzo6Q2xhc3NJbmZvKiBpbmZvKCkgeyByZXR1cm4gJnNfaW5mbzsgfQogCiBjbGFz
cyBKU0NlbGwgOiBwdWJsaWMgSGVhcENlbGwgewogICAgIGZyaWVuZCBjbGFzcyBKU1ZhbHVlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcAppbmRleCA4NTg0
YmMyOTdhZjcyM2Y1ODI5ODE1NmUyZTJiMGE4OGFlNzE4ZmI0Li5hMzE4NDJiNjU5MDkzZWVkNDgz
MmYwYzIyNTQ3ZmZiNDQ5YzQ0Y2Q5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0Z1bmN0aW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0Z1bmN0aW9uLmNwcApAQCAtODQsOSArODQsOSBAQCBKU0Z1bmN0aW9uKiBKU0Z1bmN0aW9u
OjpjcmVhdGUoVk0mIHZtLCBXZWJBc3NlbWJseUV4ZWN1dGFibGUqIGV4ZWN1dGFibGUsIEpTU2Nv
cAogfQogI2VuZGlmCiAKLUpTRnVuY3Rpb24qIEpTRnVuY3Rpb246OmNyZWF0ZShWTSYgdm0sIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGludCBsZW5ndGgsIGNvbnN0IFN0cmluZyYgbmFt
ZSwgTmF0aXZlRnVuY3Rpb24gbmF0aXZlRnVuY3Rpb24sIEludHJpbnNpYyBpbnRyaW5zaWMsIE5h
dGl2ZUZ1bmN0aW9uIG5hdGl2ZUNvbnN0cnVjdG9yKQorSlNGdW5jdGlvbiogSlNGdW5jdGlvbjo6
Y3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgaW50IGxlbmd0aCwg
Y29uc3QgU3RyaW5nJiBuYW1lLCBOYXRpdmVGdW5jdGlvbiBuYXRpdmVGdW5jdGlvbiwgSW50cmlu
c2ljIGludHJpbnNpYywgTmF0aXZlRnVuY3Rpb24gbmF0aXZlQ29uc3RydWN0b3IsIGNvbnN0IERP
TUpJVDo6U2lnbmF0dXJlKiBzaWduYXR1cmUpCiB7Ci0gICAgTmF0aXZlRXhlY3V0YWJsZSogZXhl
Y3V0YWJsZSA9IHZtLmdldEhvc3RGdW5jdGlvbihuYXRpdmVGdW5jdGlvbiwgaW50cmluc2ljLCBu
YXRpdmVDb25zdHJ1Y3RvciwgbmFtZSk7CisgICAgTmF0aXZlRXhlY3V0YWJsZSogZXhlY3V0YWJs
ZSA9IHZtLmdldEhvc3RGdW5jdGlvbihuYXRpdmVGdW5jdGlvbiwgaW50cmluc2ljLCBuYXRpdmVD
b25zdHJ1Y3Rvciwgc2lnbmF0dXJlLCBuYW1lKTsKICAgICBKU0Z1bmN0aW9uKiBmdW5jdGlvbiA9
IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTRnVuY3Rpb24+KHZtLmhlYXApKSBKU0Z1bmN0
aW9uKHZtLCBnbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdC0+ZnVuY3Rpb25TdHJ1Y3R1cmUoKSk7
CiAgICAgLy8gQ2FuJ3QgZG8gdGhpcyBkdXJpbmcgaW5pdGlhbGl6YXRpb24gYmVjYXVzZSBnZXRI
b3N0RnVuY3Rpb24gbWlnaHQgZG8gYSBHQyBhbGxvY2F0aW9uLgogICAgIGZ1bmN0aW9uLT5maW5p
c2hDcmVhdGlvbih2bSwgZXhlY3V0YWJsZSwgbGVuZ3RoLCBuYW1lKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uaAppbmRleCA4ZGYwM2ExNGE2N2RhZTkzMDRjMGQ1
NTQ5NGY5NWE4NzdmOTc4MWU2Li5mMTFiMTJmYjNiZDE0NTYyNWY4MmJmMWZhODcyNTA0NDQ3NjU3
NjI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9u
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5oCkBAIC00
Niw2ICs0NiwxMSBAQCBjbGFzcyBTcGVjdWxhdGl2ZUpJVDsKIGNsYXNzIEpJVENvbXBpbGVyOwog
fQogCituYW1lc3BhY2UgRE9NSklUIHsKK2NsYXNzIFNpZ25hdHVyZTsKK30KKworCiBKU19FWFBP
UlRfUFJJVkFURSBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxIb3N0RnVuY3Rpb25B
c0NvbnN0cnVjdG9yKEV4ZWNTdGF0ZSopOwogCiBKU19FWFBPUlRfUFJJVkFURSBTdHJpbmcgZ2V0
Q2FsY3VsYXRlZERpc3BsYXlOYW1lKFZNJiwgSlNPYmplY3QqKTsKQEAgLTY3LDcgKzcyLDcgQEAg
Y2xhc3MgSlNGdW5jdGlvbiA6IHB1YmxpYyBKU0NhbGxlZSB7CiAgICAgICAgIHJldHVybiBzaXpl
b2YoSlNGdW5jdGlvbik7CiAgICAgfQogCi0gICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIEpT
RnVuY3Rpb24qIGNyZWF0ZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgaW50IGxlbmd0aCwgY29uc3Qg
U3RyaW5nJiBuYW1lLCBOYXRpdmVGdW5jdGlvbiwgSW50cmluc2ljID0gTm9JbnRyaW5zaWMsIE5h
dGl2ZUZ1bmN0aW9uIG5hdGl2ZUNvbnN0cnVjdG9yID0gY2FsbEhvc3RGdW5jdGlvbkFzQ29uc3Ry
dWN0b3IpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBKU0Z1bmN0aW9uKiBjcmVhdGUo
Vk0mLCBKU0dsb2JhbE9iamVjdCosIGludCBsZW5ndGgsIGNvbnN0IFN0cmluZyYgbmFtZSwgTmF0
aXZlRnVuY3Rpb24sIEludHJpbnNpYyA9IE5vSW50cmluc2ljLCBOYXRpdmVGdW5jdGlvbiBuYXRp
dmVDb25zdHJ1Y3RvciA9IGNhbGxIb3N0RnVuY3Rpb25Bc0NvbnN0cnVjdG9yLCBjb25zdCBET01K
SVQ6OlNpZ25hdHVyZSogPSBudWxscHRyKTsKICAgICAKICAgICBzdGF0aWMgSlNGdW5jdGlvbiog
Y3JlYXRlV2l0aEludmFsaWRhdGVkUmVhbGxvY2F0aW9uV2F0Y2hwb2ludChWTSYsIEZ1bmN0aW9u
RXhlY3V0YWJsZSosIEpTU2NvcGUqKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNOYXRpdmVTdGRGdW5jdGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU05hdGl2ZVN0ZEZ1bmN0aW9uLmNwcAppbmRleCA2ZGQ4NDlmMmVhZmJlYmRk
NzA3ZWU1NzM4MDA4MmRlNTQ4OTMyMGExLi5jMTI2NWIxZjA2YTkwYTA3NDQxZDdhYzVjNjA4ODMw
YTFlZmE0ZjAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU05h
dGl2ZVN0ZEZ1bmN0aW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U05hdGl2ZVN0ZEZ1bmN0aW9uLmNwcApAQCAtNjYsNyArNjYsNyBAQCBzdGF0aWMgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBydW5TdGRGdW5jdGlvbihFeGVjU3RhdGUqIHN0YXRlKQogCiBK
U05hdGl2ZVN0ZEZ1bmN0aW9uKiBKU05hdGl2ZVN0ZEZ1bmN0aW9uOjpjcmVhdGUoVk0mIHZtLCBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBpbnQgbGVuZ3RoLCBjb25zdCBTdHJpbmcmIG5h
bWUsIE5hdGl2ZVN0ZEZ1bmN0aW9uJiYgbmF0aXZlU3RkRnVuY3Rpb24sIEludHJpbnNpYyBpbnRy
aW5zaWMsIE5hdGl2ZUZ1bmN0aW9uIG5hdGl2ZUNvbnN0cnVjdG9yKQogewotICAgIE5hdGl2ZUV4
ZWN1dGFibGUqIGV4ZWN1dGFibGUgPSB2bS5nZXRIb3N0RnVuY3Rpb24ocnVuU3RkRnVuY3Rpb24s
IGludHJpbnNpYywgbmF0aXZlQ29uc3RydWN0b3IsIG5hbWUpOworICAgIE5hdGl2ZUV4ZWN1dGFi
bGUqIGV4ZWN1dGFibGUgPSB2bS5nZXRIb3N0RnVuY3Rpb24ocnVuU3RkRnVuY3Rpb24sIGludHJp
bnNpYywgbmF0aXZlQ29uc3RydWN0b3IsIG51bGxwdHIsIG5hbWUpOwogICAgIE5hdGl2ZVN0ZEZ1
bmN0aW9uQ2VsbCogZnVuY3Rpb25DZWxsID0gTmF0aXZlU3RkRnVuY3Rpb25DZWxsOjpjcmVhdGUo
dm0sIFdURk1vdmUobmF0aXZlU3RkRnVuY3Rpb24pKTsKICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSA9IGdsb2JhbE9iamVjdC0+bmF0aXZlU3RkRnVuY3Rpb25TdHJ1Y3R1cmUoKTsKICAgICBKU05h
dGl2ZVN0ZEZ1bmN0aW9uKiBmdW5jdGlvbiA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpT
TmF0aXZlU3RkRnVuY3Rpb24+KHZtLmhlYXApKSBKU05hdGl2ZVN0ZEZ1bmN0aW9uKHZtLCBnbG9i
YWxPYmplY3QsIHN0cnVjdHVyZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU09iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09i
amVjdC5jcHAKaW5kZXggZjUzZGI2MTk4NmVhZGRhYTIzYTI0NWRlNTRhZTA5YzU4ZjBhYjc2NC4u
MDhhZTc5MjBhOWVlNTJjMjRkNzVhYmUxZGE3ZjY2ZTgxMWIyYWYxYyAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcApAQCAtMjU0OSw2ICsyNTQ5LDE3IEBAIGJv
b2wgSlNPYmplY3Q6OnB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uKFZNJiB2bSwgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgY29uCiAgICAgcmV0dXJuIHB1dERpcmVjdCh2bSwgcHJvcGVydHlO
YW1lLCBmdW5jdGlvbiwgYXR0cmlidXRlcyk7CiB9CiAKK2Jvb2wgSlNPYmplY3Q6OnB1dERpcmVj
dE5hdGl2ZUZ1bmN0aW9uKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29u
c3QgUHJvcGVydHlOYW1lJiBwcm9wZXJ0eU5hbWUsIHVuc2lnbmVkIGZ1bmN0aW9uTGVuZ3RoLCBO
YXRpdmVGdW5jdGlvbiBuYXRpdmVGdW5jdGlvbiwgSW50cmluc2ljIGludHJpbnNpYywgY29uc3Qg
RE9NSklUOjpTaWduYXR1cmUqIHNpZ25hdHVyZSwgdW5zaWduZWQgYXR0cmlidXRlcykKK3sKKyAg
ICBTdHJpbmdJbXBsKiBuYW1lID0gcHJvcGVydHlOYW1lLnB1YmxpY05hbWUoKTsKKyAgICBpZiAo
IW5hbWUpCisgICAgICAgIG5hbWUgPSB2bS5wcm9wZXJ0eU5hbWVzLT5hbm9ueW1vdXMuaW1wbCgp
OworICAgIEFTU0VSVChuYW1lKTsKKworICAgIEpTRnVuY3Rpb24qIGZ1bmN0aW9uID0gSlNGdW5j
dGlvbjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIGZ1bmN0aW9uTGVuZ3RoLCBuYW1lLCBuYXRp
dmVGdW5jdGlvbiwgaW50cmluc2ljLCBjYWxsSG9zdEZ1bmN0aW9uQXNDb25zdHJ1Y3Rvciwgc2ln
bmF0dXJlKTsKKyAgICByZXR1cm4gcHV0RGlyZWN0KHZtLCBwcm9wZXJ0eU5hbWUsIGZ1bmN0aW9u
LCBhdHRyaWJ1dGVzKTsKK30KKwogSlNGdW5jdGlvbiogSlNPYmplY3Q6OnB1dERpcmVjdEJ1aWx0
aW5GdW5jdGlvbihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IFBy
b3BlcnR5TmFtZSYgcHJvcGVydHlOYW1lLCBGdW5jdGlvbkV4ZWN1dGFibGUqIGZ1bmN0aW9uRXhl
Y3V0YWJsZSwgdW5zaWduZWQgYXR0cmlidXRlcykKIHsKICAgICBTdHJpbmdJbXBsKiBuYW1lID0g
cHJvcGVydHlOYW1lLnB1YmxpY05hbWUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U09iamVjdC5oCmluZGV4IDYyMjBlYzdhMWJhOGU4YTc0OWRiNGIwNmNkNDI5M2E4ODVhZjdmOTIu
LmViZTQ4NWU4ZGYzNmRiNWNhZjM3NzA0YjhlZWRkNGE3NmNiOWM0NDMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaApAQCAtNDcsNiArNDcsOSBAQAogI2luY2x1ZGUg
PHd0Zi9TdGRMaWJFeHRyYXMuaD4KIAogbmFtZXNwYWNlIEpTQyB7CituYW1lc3BhY2UgRE9NSklU
IHsKK2NsYXNzIFNpZ25hdHVyZTsKK30KIAogaW5saW5lIEpTQ2VsbCogZ2V0SlNGdW5jdGlvbihK
U1ZhbHVlIHZhbHVlKQogewpAQCAtNzAwLDYgKzcwMyw3IEBAIGNsYXNzIEpTT2JqZWN0IDogcHVi
bGljIEpTQ2VsbCB7CiAKICAgICBKU19FWFBPUlRfUFJJVkFURSBib29sIHB1dERpcmVjdE5hdGl2
ZUludHJpbnNpY0dldHRlcihWTSYsIEpTR2xvYmFsT2JqZWN0KiwgSWRlbnRpZmllciwgTmF0aXZl
RnVuY3Rpb24sIEludHJpbnNpYywgdW5zaWduZWQgYXR0cmlidXRlcyk7CiAgICAgSlNfRVhQT1JU
X1BSSVZBVEUgYm9vbCBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbihWTSYsIEpTR2xvYmFsT2JqZWN0
KiwgY29uc3QgUHJvcGVydHlOYW1lJiwgdW5zaWduZWQgZnVuY3Rpb25MZW5ndGgsIE5hdGl2ZUZ1
bmN0aW9uLCBJbnRyaW5zaWMsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpOworICAgIEpTX0VYUE9SVF9Q
UklWQVRFIGJvb2wgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb24oVk0mLCBKU0dsb2JhbE9iamVjdCos
IGNvbnN0IFByb3BlcnR5TmFtZSYsIHVuc2lnbmVkIGZ1bmN0aW9uTGVuZ3RoLCBOYXRpdmVGdW5j
dGlvbiwgSW50cmluc2ljLCBjb25zdCBET01KSVQ6OlNpZ25hdHVyZSosIHVuc2lnbmVkIGF0dHJp
YnV0ZXMpOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIEpTRnVuY3Rpb24qIHB1dERpcmVjdEJ1aWx0
aW5GdW5jdGlvbihWTSYsIEpTR2xvYmFsT2JqZWN0KiwgY29uc3QgUHJvcGVydHlOYW1lJiwgRnVu
Y3Rpb25FeGVjdXRhYmxlKiwgdW5zaWduZWQgYXR0cmlidXRlcyk7CiAgICAgSlNGdW5jdGlvbiog
cHV0RGlyZWN0QnVpbHRpbkZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24oVk0mLCBKU0dsb2JhbE9i
amVjdCosIGNvbnN0IFByb3BlcnR5TmFtZSYsIEZ1bmN0aW9uRXhlY3V0YWJsZSosIHVuc2lnbmVk
IGF0dHJpYnV0ZXMpOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgcHV0RGlyZWN0TmF0aXZl
RnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbihWTSYsIEpTR2xvYmFsT2JqZWN0KiwgY29uc3QgUHJv
cGVydHlOYW1lJiwgdW5zaWduZWQgZnVuY3Rpb25MZW5ndGgsIE5hdGl2ZUZ1bmN0aW9uLCBJbnRy
aW5zaWMsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvTG9va3VwLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9M
b29rdXAuaAppbmRleCBlMmQxNzk1Mzg4ZTc2NTJiZDhmMWI0YjZkYWNiYjJjYmNlOWNkNDRmLi5k
NzA3Njg2ZmI1NjkzZTdmNTJmZTZkMWEyZWM0NGJkMDAyM2JlZjExIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Mb29rdXAuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Mb29rdXAuaApAQCAtMjQsNiArMjQsNyBAQAogI2luY2x1ZGUgIkNhbGxG
cmFtZS5oIgogI2luY2x1ZGUgIkN1c3RvbUdldHRlclNldHRlci5oIgogI2luY2x1ZGUgIkRPTUpJ
VEdldHRlclNldHRlci5oIgorI2luY2x1ZGUgIkRPTUpJVFNpZ25hdHVyZS5oIgogI2luY2x1ZGUg
IklkZW50aWZpZXIuaCIKICNpbmNsdWRlICJJZGVudGlmaWVySW5saW5lcy5oIgogI2luY2x1ZGUg
IkludHJpbnNpYy5oIgpAQCAtNzUsMTIgKzc2LDE5IEBAIHN0cnVjdCBIYXNoVGFibGVWYWx1ZSB7
CiAgICAgSW50cmluc2ljIGludHJpbnNpYygpIGNvbnN0IHsgQVNTRVJUKG1fYXR0cmlidXRlcyAm
IEZ1bmN0aW9uKTsgcmV0dXJuIG1faW50cmluc2ljOyB9CiAgICAgQnVpbHRpbkdlbmVyYXRvciBi
dWlsdGluR2VuZXJhdG9yKCkgY29uc3QgeyBBU1NFUlQobV9hdHRyaWJ1dGVzICYgQnVpbHRpbik7
IHJldHVybiByZWludGVycHJldF9jYXN0PEJ1aWx0aW5HZW5lcmF0b3I+KG1fdmFsdWVzLnZhbHVl
MSk7IH0KICAgICBOYXRpdmVGdW5jdGlvbiBmdW5jdGlvbigpIGNvbnN0IHsgQVNTRVJUKG1fYXR0
cmlidXRlcyAmIEZ1bmN0aW9uKTsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8TmF0aXZlRnVuY3Rp
b24+KG1fdmFsdWVzLnZhbHVlMSk7IH0KLSAgICB1bnNpZ25lZCBjaGFyIGZ1bmN0aW9uTGVuZ3Ro
KCkgY29uc3QgeyBBU1NFUlQobV9hdHRyaWJ1dGVzICYgRnVuY3Rpb24pOyByZXR1cm4gc3RhdGlj
X2Nhc3Q8dW5zaWduZWQgY2hhcj4obV92YWx1ZXMudmFsdWUyKTsgfQorICAgIHVuc2lnbmVkIGNo
YXIgZnVuY3Rpb25MZW5ndGgoKSBjb25zdAorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fYXR0cmli
dXRlcyAmIEZ1bmN0aW9uKTsKKyAgICAgICAgaWYgKG1fYXR0cmlidXRlcyAmIERPTUpJVEZ1bmN0
aW9uKQorICAgICAgICAgICAgcmV0dXJuIHNpZ25hdHVyZSgpLT5hcmd1bWVudENvdW50OworICAg
ICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4obV92YWx1ZXMudmFsdWUyKTsK
KyAgICB9CiAKICAgICBHZXRGdW5jdGlvbiBwcm9wZXJ0eUdldHRlcigpIGNvbnN0IHsgQVNTRVJU
KCEobV9hdHRyaWJ1dGVzICYgQnVpbHRpbk9yRnVuY3Rpb25PckFjY2Vzc29yT3JMYXp5UHJvcGVy
dHlPckNvbnN0YW50KSk7IHJldHVybiByZWludGVycHJldF9jYXN0PEdldEZ1bmN0aW9uPihtX3Zh
bHVlcy52YWx1ZTEpOyB9CiAgICAgUHV0RnVuY3Rpb24gcHJvcGVydHlQdXR0ZXIoKSBjb25zdCB7
IEFTU0VSVCghKG1fYXR0cmlidXRlcyAmIEJ1aWx0aW5PckZ1bmN0aW9uT3JBY2Nlc3Nvck9yTGF6
eVByb3BlcnR5T3JDb25zdGFudCkpOyByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxQdXRGdW5jdGlv
bj4obV92YWx1ZXMudmFsdWUyKTsgfQogCiAgICAgRE9NSklUOjpHZXR0ZXJTZXR0ZXIqIGRvbUpJ
VCgpIGNvbnN0IHsgQVNTRVJUKG1fYXR0cmlidXRlcyAmIERPTUpJVEF0dHJpYnV0ZSk7IHJldHVy
biByZWludGVycHJldF9jYXN0PERPTUpJVEdldHRlclNldHRlckdlbmVyYXRvcj4obV92YWx1ZXMu
dmFsdWUxKSgpOyB9CisgICAgY29uc3QgRE9NSklUOjpTaWduYXR1cmUqIHNpZ25hdHVyZSgpIGNv
bnN0IHsgQVNTRVJUKG1fYXR0cmlidXRlcyAmIERPTUpJVEZ1bmN0aW9uKTsgcmV0dXJuIHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgRE9NSklUOjpTaWduYXR1cmUqPihtX3ZhbHVlcy52YWx1ZTIpOyB9
CiAKICAgICBOYXRpdmVGdW5jdGlvbiBhY2Nlc3NvckdldHRlcigpIGNvbnN0IHsgQVNTRVJUKG1f
YXR0cmlidXRlcyAmIEFjY2Vzc29yKTsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8TmF0aXZlRnVu
Y3Rpb24+KG1fdmFsdWVzLnZhbHVlMSk7IH0KICAgICBOYXRpdmVGdW5jdGlvbiBhY2Nlc3NvclNl
dHRlcigpIGNvbnN0IHsgQVNTRVJUKG1fYXR0cmlidXRlcyAmIEFjY2Vzc29yKTsgcmV0dXJuIHJl
aW50ZXJwcmV0X2Nhc3Q8TmF0aXZlRnVuY3Rpb24+KG1fdmFsdWVzLnZhbHVlMik7IH0KQEAgLTMx
Myw2ICszMjEsMTIgQEAgaW5saW5lIHZvaWQgcmVpZnlTdGF0aWNQcm9wZXJ0eShWTSYgdm0sIGNv
bnN0IFByb3BlcnR5TmFtZSYgcHJvcGVydHlOYW1lLCBjb25zdAogICAgIH0KIAogICAgIGlmICh2
YWx1ZS5hdHRyaWJ1dGVzKCkgJiBGdW5jdGlvbikgeworICAgICAgICBpZiAodmFsdWUuYXR0cmli
dXRlcygpICYgRE9NSklURnVuY3Rpb24pIHsKKyAgICAgICAgICAgIHRoaXNPYmoucHV0RGlyZWN0
TmF0aXZlRnVuY3Rpb24oCisgICAgICAgICAgICAgICAgdm0sIHRoaXNPYmouZ2xvYmFsT2JqZWN0
KCksIHByb3BlcnR5TmFtZSwgdmFsdWUuZnVuY3Rpb25MZW5ndGgoKSwKKyAgICAgICAgICAgICAg
ICB2YWx1ZS5mdW5jdGlvbigpLCB2YWx1ZS5pbnRyaW5zaWMoKSwgdmFsdWUuc2lnbmF0dXJlKCks
IGF0dHJpYnV0ZXNGb3JTdHJ1Y3R1cmUodmFsdWUuYXR0cmlidXRlcygpKSk7CisgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgIH0KICAgICAgICAgdGhpc09iai5wdXREaXJlY3ROYXRpdmVGdW5j
dGlvbigKICAgICAgICAgICAgIHZtLCB0aGlzT2JqLmdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5h
bWUsIHZhbHVlLmZ1bmN0aW9uTGVuZ3RoKCksCiAgICAgICAgICAgICB2YWx1ZS5mdW5jdGlvbigp
LCB2YWx1ZS5pbnRyaW5zaWMoKSwgYXR0cmlidXRlc0ZvclN0cnVjdHVyZSh2YWx1ZS5hdHRyaWJ1
dGVzKCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05hdGl2
ZUV4ZWN1dGFibGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZlRXhl
Y3V0YWJsZS5jcHAKaW5kZXggMWMyYmVjNThiN2RiODk4YjgxMThiMjk3MTBiMmQ3NDI2OTNiYjIx
ZC4uYjdkYWQyYTQ2MmRkZGZjMjI3NjJmZDVjZDdjZjZhNDYxY2RkMThmNiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZlRXhlY3V0YWJsZS5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZlRXhlY3V0YWJsZS5jcHAKQEAgLTQw
LDEwICs0MCwxMCBAQCBuYW1lc3BhY2UgSlNDIHsKIAogY29uc3QgQ2xhc3NJbmZvIE5hdGl2ZUV4
ZWN1dGFibGU6OnNfaW5mbyA9IHsgIk5hdGl2ZUV4ZWN1dGFibGUiLCAmRXhlY3V0YWJsZUJhc2U6
OnNfaW5mbywgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShOYXRpdmVFeGVjdXRhYmxlKSB9OwogCi1O
YXRpdmVFeGVjdXRhYmxlKiBOYXRpdmVFeGVjdXRhYmxlOjpjcmVhdGUoVk0mIHZtLCBQYXNzUmVm
UHRyPEpJVENvZGU+IGNhbGxUaHVuaywgTmF0aXZlRnVuY3Rpb24gZnVuY3Rpb24sIFBhc3NSZWZQ
dHI8SklUQ29kZT4gY29uc3RydWN0VGh1bmssIE5hdGl2ZUZ1bmN0aW9uIGNvbnN0cnVjdG9yLCBJ
bnRyaW5zaWMgaW50cmluc2ljLCBjb25zdCBTdHJpbmcmIG5hbWUpCitOYXRpdmVFeGVjdXRhYmxl
KiBOYXRpdmVFeGVjdXRhYmxlOjpjcmVhdGUoVk0mIHZtLCBQYXNzUmVmUHRyPEpJVENvZGU+IGNh
bGxUaHVuaywgTmF0aXZlRnVuY3Rpb24gZnVuY3Rpb24sIFBhc3NSZWZQdHI8SklUQ29kZT4gY29u
c3RydWN0VGh1bmssIE5hdGl2ZUZ1bmN0aW9uIGNvbnN0cnVjdG9yLCBJbnRyaW5zaWMgaW50cmlu
c2ljLCBjb25zdCBET01KSVQ6OlNpZ25hdHVyZSogc2lnbmF0dXJlLCBjb25zdCBTdHJpbmcmIG5h
bWUpCiB7CiAgICAgTmF0aXZlRXhlY3V0YWJsZSogZXhlY3V0YWJsZTsKLSAgICBleGVjdXRhYmxl
ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8TmF0aXZlRXhlY3V0YWJsZT4odm0uaGVhcCkp
IE5hdGl2ZUV4ZWN1dGFibGUodm0sIGZ1bmN0aW9uLCBjb25zdHJ1Y3RvciwgaW50cmluc2ljKTsK
KyAgICBleGVjdXRhYmxlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8TmF0aXZlRXhlY3V0
YWJsZT4odm0uaGVhcCkpIE5hdGl2ZUV4ZWN1dGFibGUodm0sIGZ1bmN0aW9uLCBjb25zdHJ1Y3Rv
ciwgaW50cmluc2ljLCBzaWduYXR1cmUpOwogICAgIGV4ZWN1dGFibGUtPmZpbmlzaENyZWF0aW9u
KHZtLCBjYWxsVGh1bmssIGNvbnN0cnVjdFRodW5rLCBuYW1lKTsKICAgICByZXR1cm4gZXhlY3V0
YWJsZTsKIH0KQEAgLTY4LDEwICs2OCwxMSBAQCB2b2lkIE5hdGl2ZUV4ZWN1dGFibGU6OmZpbmlz
aENyZWF0aW9uKFZNJiB2bSwgUGFzc1JlZlB0cjxKSVRDb2RlPiBjYWxsVGh1bmssIFBhcwogICAg
IG1fbmFtZSA9IG5hbWU7CiB9CiAKLU5hdGl2ZUV4ZWN1dGFibGU6Ok5hdGl2ZUV4ZWN1dGFibGUo
Vk0mIHZtLCBOYXRpdmVGdW5jdGlvbiBmdW5jdGlvbiwgTmF0aXZlRnVuY3Rpb24gY29uc3RydWN0
b3IsIEludHJpbnNpYyBpbnRyaW5zaWMpCitOYXRpdmVFeGVjdXRhYmxlOjpOYXRpdmVFeGVjdXRh
YmxlKFZNJiB2bSwgTmF0aXZlRnVuY3Rpb24gZnVuY3Rpb24sIE5hdGl2ZUZ1bmN0aW9uIGNvbnN0
cnVjdG9yLCBJbnRyaW5zaWMgaW50cmluc2ljLCBjb25zdCBET01KSVQ6OlNpZ25hdHVyZSogc2ln
bmF0dXJlKQogICAgIDogRXhlY3V0YWJsZUJhc2Uodm0sIHZtLm5hdGl2ZUV4ZWN1dGFibGVTdHJ1
Y3R1cmUuZ2V0KCksIE5VTV9QQVJBTUVURVJTX0lTX0hPU1QsIGludHJpbnNpYykKICAgICAsIG1f
ZnVuY3Rpb24oZnVuY3Rpb24pCiAgICAgLCBtX2NvbnN0cnVjdG9yKGNvbnN0cnVjdG9yKQorICAg
ICwgbV9zaWduYXR1cmUoc2lnbmF0dXJlKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9OYXRpdmVFeGVjdXRhYmxlLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9OYXRpdmVFeGVjdXRhYmxlLmgKaW5kZXggNWJmMmUxMDZkYjMwYTViOGM5
NzhjODk2YTZhZDk4Y2EyYzc1NzQxNC4uZTRkM2UwNDk0NTdiNDVkMDI0NTdlOGRkYTU0NDkwYjM3
MTRhY2NlYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZl
RXhlY3V0YWJsZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05hdGl2ZUV4
ZWN1dGFibGUuaApAQCAtMjgsNiArMjgsOSBAQAogI2luY2x1ZGUgIkV4ZWN1dGFibGVCYXNlLmgi
CiAKIG5hbWVzcGFjZSBKU0MgeworbmFtZXNwYWNlIERPTUpJVCB7CitjbGFzcyBTaWduYXR1cmU7
Cit9CiAKIGNsYXNzIE5hdGl2ZUV4ZWN1dGFibGUgZmluYWwgOiBwdWJsaWMgRXhlY3V0YWJsZUJh
c2UgewogICAgIGZyaWVuZCBjbGFzcyBKSVQ7CkBAIC0zNiw3ICszOSw3IEBAIGNsYXNzIE5hdGl2
ZUV4ZWN1dGFibGUgZmluYWwgOiBwdWJsaWMgRXhlY3V0YWJsZUJhc2UgewogICAgIHR5cGVkZWYg
RXhlY3V0YWJsZUJhc2UgQmFzZTsKICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJl
RmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IFN0cnVjdHVyZUlzSW1tb3J0YWw7CiAKLSAg
ICBzdGF0aWMgTmF0aXZlRXhlY3V0YWJsZSogY3JlYXRlKFZNJiB2bSwgUGFzc1JlZlB0cjxKSVRD
b2RlPiBjYWxsVGh1bmssIE5hdGl2ZUZ1bmN0aW9uIGZ1bmN0aW9uLCBQYXNzUmVmUHRyPEpJVENv
ZGU+IGNvbnN0cnVjdFRodW5rLCBOYXRpdmVGdW5jdGlvbiBjb25zdHJ1Y3RvciwgSW50cmluc2lj
IGludHJpbnNpYywgY29uc3QgU3RyaW5nJiBuYW1lKTsKKyAgICBzdGF0aWMgTmF0aXZlRXhlY3V0
YWJsZSogY3JlYXRlKFZNJiwgUGFzc1JlZlB0cjxKSVRDb2RlPiBjYWxsVGh1bmssIE5hdGl2ZUZ1
bmN0aW9uIGZ1bmN0aW9uLCBQYXNzUmVmUHRyPEpJVENvZGU+IGNvbnN0cnVjdFRodW5rLCBOYXRp
dmVGdW5jdGlvbiBjb25zdHJ1Y3RvciwgSW50cmluc2ljLCBjb25zdCBET01KSVQ6OlNpZ25hdHVy
ZSosIGNvbnN0IFN0cmluZyYgbmFtZSk7CiAKICAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQ2Vs
bCopOwogCkBAIC02Niw2ICs2OSwxNCBAQCBjbGFzcyBOYXRpdmVFeGVjdXRhYmxlIGZpbmFsIDog
cHVibGljIEV4ZWN1dGFibGVCYXNlIHsKICAgICBERUNMQVJFX0lORk87CiAKICAgICBjb25zdCBT
dHJpbmcmIG5hbWUoKSBjb25zdCB7IHJldHVybiBtX25hbWU7IH0KKyAgICBjb25zdCBET01KSVQ6
OlNpZ25hdHVyZSogc2lnbmF0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9zaWduYXR1cmU7IH0KKwor
ICAgIGNvbnN0IERPTUpJVDo6U2lnbmF0dXJlKiBzaWduYXR1cmVGb3IoQ29kZVNwZWNpYWxpemF0
aW9uS2luZCBraW5kKSBjb25zdAorICAgIHsKKyAgICAgICAgaWYgKGlzQ2FsbChraW5kKSkKKyAg
ICAgICAgICAgIHJldHVybiBzaWduYXR1cmUoKTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7Cisg
ICAgfQogCiBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYsIFBhc3NSZWZQ
dHI8SklUQ29kZT4gY2FsbFRodW5rLCBQYXNzUmVmUHRyPEpJVENvZGU+IGNvbnN0cnVjdFRodW5r
LCBjb25zdCBTdHJpbmcmIG5hbWUpOwpAQCAtNzMsMTAgKzg0LDExIEBAIGNsYXNzIE5hdGl2ZUV4
ZWN1dGFibGUgZmluYWwgOiBwdWJsaWMgRXhlY3V0YWJsZUJhc2UgewogcHJpdmF0ZToKICAgICBm
cmllbmQgY2xhc3MgRXhlY3V0YWJsZUJhc2U7CiAKLSAgICBOYXRpdmVFeGVjdXRhYmxlKFZNJiwg
TmF0aXZlRnVuY3Rpb24gZnVuY3Rpb24sIE5hdGl2ZUZ1bmN0aW9uIGNvbnN0cnVjdG9yLCBJbnRy
aW5zaWMpOworICAgIE5hdGl2ZUV4ZWN1dGFibGUoVk0mLCBOYXRpdmVGdW5jdGlvbiBmdW5jdGlv
biwgTmF0aXZlRnVuY3Rpb24gY29uc3RydWN0b3IsIEludHJpbnNpYywgY29uc3QgRE9NSklUOjpT
aWduYXR1cmUqKTsKIAogICAgIE5hdGl2ZUZ1bmN0aW9uIG1fZnVuY3Rpb247CiAgICAgTmF0aXZl
RnVuY3Rpb24gbV9jb25zdHJ1Y3RvcjsKKyAgICBjb25zdCBET01KSVQ6OlNpZ25hdHVyZSogbV9z
aWduYXR1cmU7CiAKICAgICBTdHJpbmcgbV9uYW1lOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5U2xvdC5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvUHJvcGVydHlTbG90LmgKaW5kZXggOWRlMTUxYTU2YWEyNzU2Y2ZkMGM2MDAz
NjY4MjY2YjE5Zjk5MzJkZC4uMzg3ZTMxYjQwZTVhZWJmMmYzNWY2Y2EyNzJlMzgzYzA1ZDNmNDUy
ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlTbG90
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlTbG90LmgKQEAg
LTUxLDYgKzUxLDcgQEAgZW51bSBBdHRyaWJ1dGUgewogICAgIENsYXNzU3RydWN0dXJlICAgID0g
MSA8PCAxMiwgLy8gcHJvcGVydHkgaXMgYSBsYXp5IGNsYXNzIHN0cnVjdHVyZSAtIG9ubHkgdXNl
ZCBieSBzdGF0aWMgaGFzaHRhYmxlcwogICAgIFByb3BlcnR5Q2FsbGJhY2sgID0gMSA8PCAxMywg
Ly8gcHJvcGVydHkgdGhhdCBpcyBhIGxhenkgcHJvcGVydHkgY2FsbGJhY2sgLSBvbmx5IHVzZWQg
Ynkgc3RhdGljIGhhc2h0YWJsZXMKICAgICBET01KSVRBdHRyaWJ1dGUgICA9IDEgPDwgMTQsIC8v
IHByb3BlcnR5IGlzIGEgRE9NIEpJVCBhdHRyaWJ1dGUgLSBvbmx5IHVzZWQgYnkgc3RhdGljIGhh
c2h0YWJsZXMKKyAgICBET01KSVRGdW5jdGlvbiAgICA9IDEgPDwgMTUsIC8vIHByb3BlcnR5IGlz
IGEgRE9NIEpJVCBmdW5jdGlvbiAtIG9ubHkgdXNlZCBieSBzdGF0aWMgaGFzaHRhYmxlcwogICAg
IEJ1aWx0aW5PckZ1bmN0aW9uID0gQnVpbHRpbiB8IEZ1bmN0aW9uLCAvLyBoZWxwZXIgb25seSB1
c2VkIGJ5IHN0YXRpYyBoYXNodGFibGVzCiAgICAgQnVpbHRpbk9yRnVuY3Rpb25PckxhenlQcm9w
ZXJ0eSA9IEJ1aWx0aW4gfCBGdW5jdGlvbiB8IENlbGxQcm9wZXJ0eSB8IENsYXNzU3RydWN0dXJl
IHwgUHJvcGVydHlDYWxsYmFjaywgLy8gaGVscGVyIG9ubHkgdXNlZCBieSBzdGF0aWMgaGFzaHRh
YmxlcwogICAgIEJ1aWx0aW5PckZ1bmN0aW9uT3JBY2Nlc3Nvck9yTGF6eVByb3BlcnR5ID0gQnVp
bHRpbiB8IEZ1bmN0aW9uIHwgQWNjZXNzb3IgfCBDZWxsUHJvcGVydHkgfCBDbGFzc1N0cnVjdHVy
ZSB8IFByb3BlcnR5Q2FsbGJhY2ssIC8vIGhlbHBlciBvbmx5IHVzZWQgYnkgc3RhdGljIGhhc2h0
YWJsZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAppbmRleCA4MTIzOWM1YjkyNGI0
ZWNjOGU2ZDcwYmM4MDc3ZTgzOGFmMWUxZDYxLi5mOTI3MzQ3MzRhY2VlYzQxYTQ1ODM2MDk1NGIw
N2Q4ZmFjMTI1YmJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9W
TS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCkBAIC01MTEs
MTcgKzUxMSwxNyBAQCBzdGF0aWMgVGh1bmtHZW5lcmF0b3IgdGh1bmtHZW5lcmF0b3JGb3JJbnRy
aW5zaWMoSW50cmluc2ljIGludHJpbnNpYykKIAogTmF0aXZlRXhlY3V0YWJsZSogVk06OmdldEhv
c3RGdW5jdGlvbihOYXRpdmVGdW5jdGlvbiBmdW5jdGlvbiwgTmF0aXZlRnVuY3Rpb24gY29uc3Ry
dWN0b3IsIGNvbnN0IFN0cmluZyYgbmFtZSkKIHsKLSAgICByZXR1cm4gZ2V0SG9zdEZ1bmN0aW9u
KGZ1bmN0aW9uLCBOb0ludHJpbnNpYywgY29uc3RydWN0b3IsIG5hbWUpOworICAgIHJldHVybiBn
ZXRIb3N0RnVuY3Rpb24oZnVuY3Rpb24sIE5vSW50cmluc2ljLCBjb25zdHJ1Y3RvciwgbnVsbHB0
ciwgbmFtZSk7CiB9CiAKLU5hdGl2ZUV4ZWN1dGFibGUqIFZNOjpnZXRIb3N0RnVuY3Rpb24oTmF0
aXZlRnVuY3Rpb24gZnVuY3Rpb24sIEludHJpbnNpYyBpbnRyaW5zaWMsIE5hdGl2ZUZ1bmN0aW9u
IGNvbnN0cnVjdG9yLCBjb25zdCBTdHJpbmcmIG5hbWUpCitOYXRpdmVFeGVjdXRhYmxlKiBWTTo6
Z2V0SG9zdEZ1bmN0aW9uKE5hdGl2ZUZ1bmN0aW9uIGZ1bmN0aW9uLCBJbnRyaW5zaWMgaW50cmlu
c2ljLCBOYXRpdmVGdW5jdGlvbiBjb25zdHJ1Y3RvciwgY29uc3QgRE9NSklUOjpTaWduYXR1cmUq
IHNpZ25hdHVyZSwgY29uc3QgU3RyaW5nJiBuYW1lKQogewogI2lmIEVOQUJMRShKSVQpCiAgICAg
aWYgKGNhblVzZUpJVCgpKSB7CiAgICAgICAgIHJldHVybiBqaXRTdHVicy0+aG9zdEZ1bmN0aW9u
U3R1YigKICAgICAgICAgICAgIHRoaXMsIGZ1bmN0aW9uLCBjb25zdHJ1Y3RvciwKICAgICAgICAg
ICAgIGludHJpbnNpYyAhPSBOb0ludHJpbnNpYyA/IHRodW5rR2VuZXJhdG9yRm9ySW50cmluc2lj
KGludHJpbnNpYykgOiAwLAotICAgICAgICAgICAgaW50cmluc2ljLCBuYW1lKTsKKyAgICAgICAg
ICAgIGludHJpbnNpYywgc2lnbmF0dXJlLCBuYW1lKTsKICAgICB9CiAjZWxzZSAvLyBFTkFCTEUo
SklUKQogICAgIFVOVVNFRF9QQVJBTShpbnRyaW5zaWMpOwpAQCAtNTI5LDcgKzUyOSw3IEBAIE5h
dGl2ZUV4ZWN1dGFibGUqIFZNOjpnZXRIb3N0RnVuY3Rpb24oTmF0aXZlRnVuY3Rpb24gZnVuY3Rp
b24sIEludHJpbnNpYyBpbnRyaW5zCiAgICAgcmV0dXJuIE5hdGl2ZUV4ZWN1dGFibGU6OmNyZWF0
ZSgqdGhpcywKICAgICAgICAgYWRvcHRSZWYobmV3IE5hdGl2ZUpJVENvZGUoTWFjcm9Bc3NlbWJs
ZXJDb2RlUmVmOjpjcmVhdGVMTEludENvZGVSZWYobGxpbnRfbmF0aXZlX2NhbGxfdHJhbXBvbGlu
ZSksIEpJVENvZGU6Okhvc3RDYWxsVGh1bmspKSwgZnVuY3Rpb24sCiAgICAgICAgIGFkb3B0UmVm
KG5ldyBOYXRpdmVKSVRDb2RlKE1hY3JvQXNzZW1ibGVyQ29kZVJlZjo6Y3JlYXRlTExJbnRDb2Rl
UmVmKGxsaW50X25hdGl2ZV9jb25zdHJ1Y3RfdHJhbXBvbGluZSksIEpJVENvZGU6Okhvc3RDYWxs
VGh1bmspKSwgY29uc3RydWN0b3IsCi0gICAgICAgIE5vSW50cmluc2ljLCBuYW1lKTsKKyAgICAg
ICAgTm9JbnRyaW5zaWMsIHNpZ25hdHVyZSwgbmFtZSk7CiB9CiAKIFZNOjpDbGllbnREYXRhOjp+
Q2xpZW50RGF0YSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9W
TS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAppbmRleCA0ZmQ3ZWM0MGYw
M2VlZGViMjliZDQ5NjdkOWNkYzQzMDI0Y2ZhNDEwLi4xNWEwOGMyYTMzYmU5NzJiNGE5YTMyZGZj
MzUwZDZlMzhjYzg0MmVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9WTS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKQEAgLTQyOSw3
ICs0MjksNyBAQCBjbGFzcyBWTSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxWTT4gewog
ICAgIHN0ZDo6dW5pcXVlX3B0cjxGVEw6OlRodW5rcz4gZnRsVGh1bmtzOwogI2VuZGlmCiAgICAg
TmF0aXZlRXhlY3V0YWJsZSogZ2V0SG9zdEZ1bmN0aW9uKE5hdGl2ZUZ1bmN0aW9uLCBOYXRpdmVG
dW5jdGlvbiBjb25zdHJ1Y3RvciwgY29uc3QgU3RyaW5nJiBuYW1lKTsKLSAgICBOYXRpdmVFeGVj
dXRhYmxlKiBnZXRIb3N0RnVuY3Rpb24oTmF0aXZlRnVuY3Rpb24sIEludHJpbnNpYyBpbnRyaW5z
aWMsIE5hdGl2ZUZ1bmN0aW9uIGNvbnN0cnVjdG9yLCBjb25zdCBTdHJpbmcmIG5hbWUpOworICAg
IE5hdGl2ZUV4ZWN1dGFibGUqIGdldEhvc3RGdW5jdGlvbihOYXRpdmVGdW5jdGlvbiwgSW50cmlu
c2ljLCBOYXRpdmVGdW5jdGlvbiBjb25zdHJ1Y3RvciwgY29uc3QgRE9NSklUOjpTaWduYXR1cmUq
LCBjb25zdCBTdHJpbmcmIG5hbWUpOwogCiAgICAgc3RhdGljIHB0cmRpZmZfdCBleGNlcHRpb25P
ZmZzZXQoKQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0
IGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggNWEwOTc0ZDZiZTQ4ZjA3NDVh
ZGE2MzlmZGFiYTM0ZDRiM2RiNjVmNC4uYjdlZjRiYzdlZTUxMDA3N2Y2NDEyZTIwN2Q3OTI5ZjRi
ZDg4MzAzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIv
U291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTE1NDYsNyArMTU0Niw2IEBAIHNldChX
ZWJDb3JlX1NPVVJDRVMKIAogICAgIGRvbS9kZWZhdWx0L1BsYXRmb3JtTWVzc2FnZVBvcnRDaGFu
bmVsLmNwcAogCi0gICAgZG9taml0L0RPTUpJVEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuY3BwCiAg
ICAgZG9taml0L0RPTUpJVEhlbHBlcnMuY3BwCiAgICAgZG9taml0L0pTRG9jdW1lbnRET01KSVQu
Y3BwCiAgICAgZG9taml0L0pTTm9kZURPTUpJVC5jcHAKQEAgLTM1MTksNiArMzUxOCwxNSBAQCBN
QUtFX0hBU0hfVE9PTFMoJHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0vQ29sb3JEYXRhKQogbGlzdChB
UFBFTkQgV2ViQ29yZV9ERVJJVkVEX1NPVVJDRVMgJHtERVJJVkVEX1NPVVJDRVNfV0VCQ09SRV9E
SVJ9L0NvbG9yRGF0YS5jcHApCiAKIAorIyBHZW5lcmF0ZSBET01KSVRBYnN0cmFjdEhlYXBSZXBv
c2l0b3J5LmgKK2FkZF9jdXN0b21fY29tbWFuZCgKKyAgICBPVVRQVVQgJHtERVJJVkVEX1NPVVJD
RVNfV0VCQ09SRV9ESVJ9L0RPTUpJVEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaAorICAgIE1BSU5f
REVQRU5ERU5DWSBkb21qaXQvRE9NSklUQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS55YW1sCisgICAg
REVQRU5EUyAke1dFQkNPUkVfRElSfS9kb21qaXQvZ2VuZXJhdGUtYWJzdHJhY3QtaGVhcC5yYgor
ICAgIENPTU1BTkQgJHtSVUJZX0VYRUNVVEFCTEV9ICR7V0VCQ09SRV9ESVJ9L2RvbWppdC9nZW5l
cmF0ZS1hYnN0cmFjdC1oZWFwLnJiICR7V0VCQ09SRV9ESVJ9L2RvbWppdC9ET01KSVRBYnN0cmFj
dEhlYXBSZXBvc2l0b3J5LnlhbWwgJHtERVJJVkVEX1NPVVJDRVNfV0VCQ09SRV9ESVJ9L0RPTUpJ
VEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaAorICAgIFZFUkJBVElNKQorbGlzdChBUFBFTkQgV2Vi
Q29yZV9ERVJJVkVEX1NPVVJDRVMgJHtERVJJVkVEX1NPVVJDRVNfV0VCQ09SRV9ESVJ9L0RPTUpJ
VEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaCkKKwogIyBHZW5lcmF0ZSBYTUxWaWV3ZXJDU1MuaAog
YWRkX2N1c3RvbV9jb21tYW5kKAogICAgIE9VVFBVVCAke0RFUklWRURfU09VUkNFU19XRUJDT1JF
X0RJUn0vWE1MVmlld2VyQ1NTLmggJHtERVJJVkVEX1NPVVJDRVNfV0VCQ09SRV9ESVJ9L1hNTFZp
ZXdlci5taW4uY3NzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5t
YWtlIGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQppbmRleCAwY2JjMWRmODE1
ODZmMTQ5OWVmNDFhMmNiYjYyMTg2MTQ1NTUwYjI3Li5hZGE1YWNiNDlmY2EyYzQwZjMwZDgwNjEy
YTE2ZTM5YTJkMTY2OWFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNl
cy5tYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKQEAgLTc0Niw2
ICs3NDYsNyBAQCBKU19CSU5ESU5HX0lETFMgPSBcCiAKIFBZVEhPTiA9IHB5dGhvbgogUEVSTCA9
IHBlcmwKK1JVQlkgPSBydWJ5CiAKIGlmZXEgKCQoT1MpLFdpbmRvd3NfTlQpCiAgICAgREVMRVRF
ID0gY21kIC8vQyBkZWwKQEAgLTg1Miw2ICs4NTMsNyBAQCBhbGwgOiBcCiAgICAgQ1NTVmFsdWVL
ZXl3b3Jkcy5jcHAgXAogICAgIENTU1ZhbHVlS2V5d29yZHMuaCBcCiAgICAgQ29sb3JEYXRhLmNw
cCBcCisgICAgRE9NSklUQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5oIFwKICAgICBFdmVudEludGVy
ZmFjZXMuaCBcCiAgICAgRXZlbnRUYXJnZXRJbnRlcmZhY2VzLmggXAogICAgIEV4Y2VwdGlvbkNv
ZGVEZXNjcmlwdGlvbi5jcHAgXApAQCAtOTQxLDYgKzk0MywxNSBAQCBTZWxlY3RvclBzZXVkb0Vs
ZW1lbnRUeXBlTWFwLmNwcCA6ICQoV2ViQ29yZSkvY3NzL21ha2VTZWxlY3RvclBzZXVkb0VsZW1l
bnRzTWFwLgogCiAjIC0tLS0tLS0tCiAKKyMgRE9NSklUIEFic3RyYWN0IEhlYXAKKworYWxsIDog
RE9NSklUQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5oCisKK0RPTUpJVEFic3RyYWN0SGVhcFJlcG9z
aXRvcnkuaCA6ICQoV2ViQ29yZSkvZG9taml0L2dlbmVyYXRlLWFic3RyYWN0LWhlYXAucmIgJChX
ZWJDb3JlKS9kb21qaXQvRE9NSklUQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS55YW1sCisJJChSVUJZ
KSAiJChXZWJDb3JlKS9kb21qaXQvZ2VuZXJhdGUtYWJzdHJhY3QtaGVhcC5yYiIgJChXZWJDb3Jl
KS9kb21qaXQvRE9NSklUQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS55YW1sIC4vRE9NSklUQWJzdHJh
Y3RIZWFwUmVwb3NpdG9yeS5oCisKKyMgLS0tLS0tLS0KKwogIyBYTUxWaWV3ZXIgQ1NTCiAKIGFs
bCA6IFhNTFZpZXdlckNTUy5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5n
SGVhZGVycy9ieXRlY29kZS9TcGVjdWxhdGVkVHlwZS5oIGIvU291cmNlL1dlYkNvcmUvRm9yd2Fy
ZGluZ0hlYWRlcnMvYnl0ZWNvZGUvU3BlY3VsYXRlZFR5cGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wOTQ2NmY0
ZjAwYjgwN2RmZWRhMGZjODIwODU0NmI3MTg0NGYwOTllCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvYnl0ZWNvZGUvU3BlY3VsYXRlZFR5cGUuaApA
QCAtMCwwICsxLDI5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgor
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2lmbmRlZiBXZWJDb3JlX0ZXRF9TcGVjdWxhdGVkVHlwZV9oCisjZGVmaW5lIFdlYkNv
cmVfRldEX1NwZWN1bGF0ZWRUeXBlX2gKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TcGVjdWxh
dGVkVHlwZS5oPgorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5n
SGVhZGVycy9kb21qaXQvRE9NSklUU2lnbmF0dXJlLmggYi9Tb3VyY2UvV2ViQ29yZS9Gb3J3YXJk
aW5nSGVhZGVycy9kb21qaXQvRE9NSklUU2lnbmF0dXJlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzIwMDI3ZjZl
MDhlMzgzMGUzNTFiMWM5Y2QzMmYyMDMxMjlkMmI1ZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL2RvbWppdC9ET01KSVRTaWduYXR1cmUuaApAQCAt
MCwwICsxLDI5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2lmbmRlZiBXZWJDb3JlX0ZXRF9ET01KSVRTaWduYXR1cmVfaAorI2RlZmluZSBXZWJDb3Jl
X0ZXRF9ET01KSVRTaWduYXR1cmVfaAorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0RPTUpJVFNp
Z25hdHVyZS5oPgorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKaW5kZXggNTFhZTE4MWEzNzE1MjAxMzExNmI5YjgwMWU4NTcxMjI0
ZWNmYWVkOC4uNmRkNTBkYmExNGZjNTEyNjA0NTc1ZDZlMjEyODk4ZWE5ZjI0ZDBiOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisr
KyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAt
NjIxMywxMiArNjIxMywxMyBAQAogCQlFMzE1MEVBNzFEQTcyMTkzMDAxOTQwMTIgLyogRE9NSklU
SGVscGVycy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RTMxNTBFQTUxREE3MjE4RDAwMTk0MDEyIC8qIERPTUpJVEhlbHBlcnMuaCAqLzsgfTsKIAkJRTMx
ODAzOUQxREM0MDA5OTAwOTkzMkMyIC8qIEpTRHluYW1pY0Rvd25jYXN0LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFM0E1ODcyRTFEQzNGNTI2MDBGNjA3
QTYgLyogSlNEeW5hbWljRG93bmNhc3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQlFMzU2NUI3QjFEQzJENkM5MDAyMTdEQkQgLyogSlNFdmVudEN1
c3RvbS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM0
RUU0OUYxREMyRDU3NTAwRUFBOUQzIC8qIEpTRXZlbnRDdXN0b20uaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQlFMzVDQTE0RDFEQkMzQTNGMDBGODM1
MTYgLyogRE9NSklUQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzVDQTE0QjFEQkMzQTNDMDBGODM1MTYgLyog
RE9NSklUQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5jcHAgKi87IH07Ci0JCUUzNUNBMTRFMURCQzNB
NDIwMEY4MzUxNiAvKiBET01KSVRBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzVDQTE0QzFEQkMzQTNDMDBGODM1
MTYgLyogRE9NSklUQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5oICovOyB9OworCQlFMzU4MDJCNjFE
Qzg0MzVEMDBBOTc3M0MgLyogRE9NSklUSURMVHlwZUZpbHRlci5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM1ODAyQjUxREM4NDM1ODAwQTk3NzNDIC8q
IERPTUpJVElETFR5cGVGaWx0ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQlFMzc3RkU0RDFEQURFMTY1MDBDREQwMjUgLyogTm9kZUNvbnN0YW50
cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTNEMDQ5
OTMxREFEQzA0NTAwNzE4RjNDIC8qIE5vZGVDb25zdGFudHMuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFMzg4Mzg5ODFCQUQxNDVGMDBENjJFRTMg
LyogU2NyaXB0TW9kdWxlTG9hZGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEUzODgzODk0MUJBRDE0NUYwMEQ2MkVFMyAvKiBTY3JpcHRNb2R1bGVM
b2FkZXIuY3BwICovOyB9OwogCQlFMzg4Mzg5OTFCQUQxNDVGMDBENjJFRTMgLyogU2NyaXB0TW9k
dWxlTG9hZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBFMzg4Mzg5NTFCQUQxNDVGMDBENjJFRTMgLyogU2NyaXB0TW9kdWxlTG9hZGVyLmggKi87IH07
CiAJCUUzOThGQzI0MURDMzJBMjAwMDNDNDY4NCAvKiBET01KSVRIZWxwZXJzLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzOThGQzIzMURDMzJBMUIw
MDNDNDY4NCAvKiBET01KSVRIZWxwZXJzLmNwcCAqLzsgfTsKKwkJRTNBNzc2NjcxREM4NUQyODAw
QjY5MEQ4IC8qIERPTUpJVElETENvbnZlcnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEUzQTc3NjY1MURDODVEMjIwMEI2OTBEOCAvKiBET01KSVRJRExD
b252ZXJ0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
KwkJRTNBNzc2NjgxREM4NUQyODAwQjY5MEQ4IC8qIERPTUpJVElETFR5cGUuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzQTc3NjY2MURDODVEMjIwMEI2
OTBEOCAvKiBET01KSVRJRExUeXBlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJRTNCMkYwRUIxRDdGNEM5RDAwQjBDOUQxIC8qIExvYWRhYmxlQ2xh
c3NpY1NjcmlwdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBFM0IyRjBFMzFEN0YzNUVDMDBCMEM5RDEgLyogTG9hZGFibGVDbGFzc2ljU2NyaXB0LmNw
cCAqLzsgfTsKIAkJRTNCMkYwRUMxRDdGNENBMTAwQjBDOUQxIC8qIExvYWRhYmxlU2NyaXB0LmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzQjJGMEU5
MUQ3RjNEM0MwMEIwQzlEMSAvKiBMb2FkYWJsZVNjcmlwdC5jcHAgKi87IH07CiAJCUUzQjJGMEVE
MUQ3RjRDQTMwMEIwQzlEMSAvKiBMb2FkYWJsZVNjcmlwdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTNCMkYwRTcxRDdGMzVFQzAwQjBDOUQxIC8qIExv
YWRhYmxlU2NyaXB0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKQEAgLTE0MDYxLDEzICsxNDA2MiwxNSBAQAogCQlFMUZGOEY2QTE4MERCNUJFMDAxMzI2
NzQgLyogQ3J5cHRvQWxnb3JpdGhtUmVnaXN0cnkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gQ3J5cHRvQWxnb3JpdGhtUmVnaXN0cnkuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlFMUZGOEY2QjE4MERCNUJFMDAxMzI2NzQgLyogQ3J5cHRvQWxnb3Jp
dGhtUmVnaXN0cnkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ3J5cHRvQWxn
b3JpdGhtUmVnaXN0cnkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTMxNTBFQTUx
REE3MjE4RDAwMTk0MDEyIC8qIERPTUpJVEhlbHBlcnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gRE9NSklUSGVscGVycy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQlFMzM0ODI1RTFEQzkzQUEwMDA5Qzk1NDQgLyogRE9NSklUQWJzdHJhY3RIZWFwUmVwb3NpdG9y
eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBET01KSVRBYnN0cmFjdEhlYXBS
ZXBvc2l0b3J5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzNEVFNDlGMURDMkQ1
NzUwMEVBQTlEMyAvKiBKU0V2ZW50Q3VzdG9tLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEpTRXZlbnRDdXN0b20uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRTM1
Q0ExNEIxREJDM0EzQzAwRjgzNTE2IC8qIERPTUpJVEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRE9NSklUQWJzdHJhY3RIZWFw
UmVwb3NpdG9yeS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUUzNUNBMTRDMURC
QzNBM0MwMEY4MzUxNiAvKiBET01KSVRBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERPTUpJVEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTM1ODAyQjUxREM4NDM1ODAwQTk3NzNDIC8q
IERPTUpJVElETFR5cGVGaWx0ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
RE9NSklUSURMVHlwZUZpbHRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzg4
Mzg5NDFCQUQxNDVGMDBENjJFRTMgLyogU2NyaXB0TW9kdWxlTG9hZGVyLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNjcmlwdE1vZHVsZUxvYWRlci5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzODgzODk1MUJBRDE0NUYwMEQ2MkVFMyAvKiBTY3Jp
cHRNb2R1bGVMb2FkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2NyaXB0
TW9kdWxlTG9hZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzOThGQzIzMURD
MzJBMUIwMDNDNDY4NCAvKiBET01KSVRIZWxwZXJzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IERPTUpJVEhlbHBlcnMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlFM0E1ODcyRTFEQzNGNTI2MDBGNjA3QTYgLyogSlNEeW5hbWljRG93bmNhc3QuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNEeW5hbWljRG93bmNhc3QuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTNBNzc2NjUxREM4NUQyMjAwQjY5MEQ4IC8qIERP
TUpJVElETENvbnZlcnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRE9NSklU
SURMQ29udmVydC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFM0E3NzY2NjFEQzg1
RDIyMDBCNjkwRDggLyogRE9NSklUSURMVHlwZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBET01KSVRJRExUeXBlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUz
QUZBOTY0MURBNkU5MDgwMDI4NjFCRCAvKiBKU05vZGVET01KSVQuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNOb2RlRE9NSklULmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJRTNCMkYwRTMxRDdGMzVFQzAwQjBDOUQxIC8qIExvYWRhYmxlQ2xhc3Np
Y1NjcmlwdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBMb2FkYWJs
ZUNsYXNzaWNTY3JpcHQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFM0IyRjBF
NDFEN0YzNUVDMDBCMEM5RDEgLyogTG9hZGFibGVDbGFzc2ljU2NyaXB0LmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IExvYWRhYmxlQ2xhc3NpY1NjcmlwdC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtMTcyNTgsNiArMTcyNjEsNyBAQAogCQkJCTY1NjU4MTQ3MDlE
MTMwNDMwMDBFNjFENyAvKiBDU1NWYWx1ZUtleXdvcmRzLmdwZXJmICovLAogCQkJCTY1NjU4MTQ4
MDlEMTMwNDMwMDBFNjFENyAvKiBDU1NWYWx1ZUtleXdvcmRzLmggKi8sCiAJCQkJOUIzQTg4NzEx
NDU2MzJGOTAwM0FFOEY1IC8qIERPTURPTVNldHRhYmxlVG9rZW5MaXN0LmggKi8sCisJCQkJRTMz
NDgyNUUxREM5M0FBMDAwOUM5NTQ0IC8qIERPTUpJVEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaCAq
LywKIAkJCQlFMUM2Q0ZDMjE3NDZEMjkzMDA3Qjg3QTEgLyogRE9NV2luZG93Q29uc3RydWN0b3Jz
LmlkbCAqLywKIAkJCQk5NzBCNzJBNTE0NTAwOEVCMDBGMDBBMzcgLyogRXZlbnRIZWFkZXJzLmgg
Ki8sCiAJCQkJOTcwQjcyODkxNDRGRkFDNjAwRjAwQTM3IC8qIEV2ZW50SW50ZXJmYWNlcy5oICov
LApAQCAtMjI4NzAsMTEgKzIyODc0LDEyIEBACiAJCUUzQUZBOTYzMURBNkU4QUYwMDI4NjFCRCAv
KiBkb21qaXQgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAotCQkJ
CUUzNUNBMTRCMURCQzNBM0MwMEY4MzUxNiAvKiBET01KSVRBYnN0cmFjdEhlYXBSZXBvc2l0b3J5
LmNwcCAqLywKLQkJCQlFMzVDQTE0QzFEQkMzQTNDMDBGODM1MTYgLyogRE9NSklUQWJzdHJhY3RI
ZWFwUmVwb3NpdG9yeS5oICovLAogCQkJCUUzQzk5QTA4MURDM0Q0MTcwMDc5NEFEMyAvKiBET01K
SVRDaGVja0RPTS5oICovLAogCQkJCUUzOThGQzIzMURDMzJBMUIwMDNDNDY4NCAvKiBET01KSVRI
ZWxwZXJzLmNwcCAqLywKIAkJCQlFMzE1MEVBNTFEQTcyMThEMDAxOTQwMTIgLyogRE9NSklUSGVs
cGVycy5oICovLAorCQkJCUUzQTc3NjY1MURDODVEMjIwMEI2OTBEOCAvKiBET01KSVRJRExDb252
ZXJ0LmggKi8sCisJCQkJRTNBNzc2NjYxREM4NUQyMjAwQjY5MEQ4IC8qIERPTUpJVElETFR5cGUu
aCAqLywKKwkJCQlFMzU4MDJCNTFEQzg0MzU4MDBBOTc3M0MgLyogRE9NSklUSURMVHlwZUZpbHRl
ci5oICovLAogCQkJCUUzQjdDMDYyMURDMzQxNUEwMDFGQjBCOCAvKiBKU0RvY3VtZW50RE9NSklU
LmNwcCAqLywKIAkJCQlFM0FGQTk2NDFEQTZFOTA4MDAyODYxQkQgLyogSlNOb2RlRE9NSklULmNw
cCAqLywKIAkJCSk7CkBAIC0yNTc0MSw2ICsyNTc0Niw3IEBACiAJCQkJNDYwQ0JGMzYxRDRCQ0Qw
RTAwOTJFODhFIC8qIEpTRE9NV2luZG93UHJvcGVydGllcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QkNCRkI1M0QwRENEMjlDRjAwMTlCM0U1IC8qIEpTRE9NV2luZG93U2hlbGwuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTY1RTBFOTQ0MTEzM0M4OUYwMEI0Q0IxMCAvKiBKU0RPTVdyYXBwZXIuaCBpbiBI
ZWFkZXJzICovLAorCQkJCUUzQTc3NjY3MURDODVEMjgwMEI2OTBEOCAvKiBET01KSVRJRExDb252
ZXJ0LmggaW4gSGVhZGVycyAqLywKIAkJCQlGRDc4NjhCQTEzNkI5OTkyMDBENDAzREYgLyogSlNE
eW5hbWljc0NvbXByZXNzb3JOb2RlLmggaW4gSGVhZGVycyAqLywKIAkJCQk2NURGMzFGQTA5RDFD
QzYwMDAwQkUzMjUgLyogSlNFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlBREVDNzhGODE4
RUU1MzA4MDAxMzE1QzIgLyogSlNFbGVtZW50Q3VzdG9tLmggaW4gSGVhZGVycyAqLywKQEAgLTI3
MzA0LDYgKzI3MzEwLDcgQEAKIAkJCQkwODUyNUU2MzEyNzhDMDAxMDBBODQ3NzggLyogU1ZHQW5p
bWF0ZWRTdGF0aWNQcm9wZXJ0eVRlYXJPZmYuaCBpbiBIZWFkZXJzICovLAogCQkJCTA4NERCNTlC
MTI4MDA4Q0MwMDJBNkQ2NCAvKiBTVkdBbmltYXRlZFN0cmluZy5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMDgyNTA5MzkxMjhCRDREODAwRTJFRDhFIC8qIFNWR0FuaW1hdGVkVHJhbnNmb3JtTGlzdC5o
IGluIEhlYWRlcnMgKi8sCisJCQkJRTNBNzc2NjgxREM4NUQyODAwQjY5MEQ4IC8qIERPTUpJVElE
TFR5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTA4NUExNTkzMTI4OUE4REQwMDI3MTBFMyAvKiBT
VkdBbmltYXRlZFRyYW5zZm9ybUxpc3RQcm9wZXJ0eVRlYXJPZmYuaCBpbiBIZWFkZXJzICovLAog
CQkJCTQzOUQzMzQzMTNBNjkxMUMwMEMyMEY0RiAvKiBTVkdBbmltYXRlZFR5cGUuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTQzOUQzMzQ0MTNBNjkxMUMwMEMyMEY0RiAvKiBTVkdBbmltYXRlZFR5cGVB
bmltYXRvci5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNzg0Myw2ICsyNzg1MCw3IEBACiAJCQkJOTdB
QUJEMjMxNEZBMDlENTAwNzQ1N0FFIC8qIFdlYlNvY2tldEV4dGVuc2lvbkRpc3BhdGNoZXIuaCBp
biBIZWFkZXJzICovLAogCQkJCTRBNUEyQURDMTYxRTdFMDAwMDU4ODlERCAvKiBXZWJTb2NrZXRF
eHRlbnNpb25QYXJzZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTk3QUFCRDI0MTRGQTA5RDUwMDc0
NTdBRSAvKiBXZWJTb2NrZXRFeHRlbnNpb25Qcm9jZXNzb3IuaCBpbiBIZWFkZXJzICovLAorCQkJ
CUUzNTgwMkI2MURDODQzNUQwMEE5NzczQyAvKiBET01KSVRJRExUeXBlRmlsdGVyLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk5N0FBQkQyNTE0RkEwOUQ1MDA3NDU3QUUgLyogV2ViU29ja2V0RnJhbWUu
aCBpbiBIZWFkZXJzICovLAogCQkJCTk3QUFCRDI3MTRGQTA5RDUwMDc0NTdBRSAvKiBXZWJTb2Nr
ZXRIYW5kc2hha2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTMxREVBNDU2MUIzOUY0RDkwMEY3NzE3
OCAvKiBXZWJTeXN0ZW1CYWNrZHJvcExheWVyLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmggYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5oCmluZGV4IGMxODFmOWExNmY1
NTMwYmQ5NTNkYmY1ZjFjMTVmMTNhNjI0ZmExMmMuLjVkYzFlZTQwYzk4NTQwZThjNDcwNWI3MDk1
NzU5ZmZjZmMyNWRhMGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
RE9NR2xvYmFsT2JqZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01H
bG9iYWxPYmplY3QuaApAQCAtODEsNyArODEsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAg
cHVibGljOgogICAgICAgICB+SlNET01HbG9iYWxPYmplY3QoKTsKIAotICAgICAgICBzdGF0aWMg
Y29uc3QgSlNDOjpDbGFzc0luZm8qIGluZm8oKSB7IHJldHVybiAmc19pbmZvOyB9CisgICAgICAg
IHN0YXRpYyBjb25zdGV4cHIgY29uc3QgSlNDOjpDbGFzc0luZm8qIGluZm8oKSB7IHJldHVybiAm
c19pbmZvOyB9CiAKICAgICAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1
cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgICAgIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBt
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KaW5k
ZXggMzU0OTBkMDJjMmRhMGJlMjUwZDZmZWVhNTlmZmJlNzBiNTM1MGU1OS4uNjZlN2RlMWZkZjQ0
YjFiNjY4NTBkOGU3ZDQ3N2I2YTY2MTI1NGRhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KQEAgLTE0MzUsNyArMTQzNSw3IEBA
IHN1YiBHZW5lcmF0ZUhlYWRlcgogICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAicHJvdGVj
dGVkOlxuIik7CiAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgc3RhdGljIGNvbnN0
IEpTQzo6Q2xhc3NJbmZvIHNfaW5mbztcbiIpOwogICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50
LCAicHVibGljOlxuIik7Ci0gICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgc3RhdGlj
IGNvbnN0IEpTQzo6Q2xhc3NJbmZvKiBpbmZvKCkgeyByZXR1cm4gJnNfaW5mbzsgfVxuXG4iKTsK
KyAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICBzdGF0aWMgY29uc3RleHByIGNvbnN0
IEpTQzo6Q2xhc3NJbmZvKiBpbmZvKCkgeyByZXR1cm4gJnNfaW5mbzsgfVxuXG4iKTsKICAgICB9
IGVsc2UgewogICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiXG4iKTsKICAgICAgICAgcHVz
aChAaGVhZGVyQ29udGVudCwgIiAgICBERUNMQVJFX0lORk87XG5cbiIpOwpAQCAtMTg4OSw3ICsx
ODg5LDExIEBAIHN1YiBHZW5lcmF0ZVByb3BlcnRpZXNIYXNoVGFibGUKICAgICAgICAgIyBGSVhN
RTogUmVtb3ZlIHRoaXMgb25jZSB3ZSBjYW4gZ2V0IHJpZCBvZiB0aGUgcXVpcmsgaW50cm9kdWNl
ZCBpbiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYzOTY3LgogICAg
ICAgICAkZnVuY3Rpb25MZW5ndGggPSAzIGlmICRpbnRlcmZhY2VOYW1lIGVxICJFdmVudCIgYW5k
ICRmdW5jdGlvbi0+bmFtZSBlcSAiaW5pdEV2ZW50IjsKIAotICAgICAgICBwdXNoKEAkaGFzaFZh
bHVlMiwgJGZ1bmN0aW9uTGVuZ3RoKTsKKyAgICAgICAgaWYgKCRmdW5jdGlvbi0+ZXh0ZW5kZWRB
dHRyaWJ1dGVzLT57IkRPTUpJVCJ9KSB7CisgICAgICAgICAgICBwdXNoKEAkaGFzaFZhbHVlMiwg
IiZET01KSVRTaWduYXR1cmVGb3IiIC4gJGludGVyZmFjZS0+dHlwZS0+bmFtZSAuICRjb2RlR2Vu
ZXJhdG9yLT5XS191Y2ZpcnN0KCRmdW5jdGlvbi0+bmFtZSkpOworICAgICAgICB9IGVsc2Ugewor
ICAgICAgICAgICAgcHVzaChAJGhhc2hWYWx1ZTIsICRmdW5jdGlvbkxlbmd0aCk7CisgICAgICAg
IH0KIAogICAgICAgICBwdXNoKEAkaGFzaFNwZWNpYWxzLCBDb21wdXRlRnVuY3Rpb25TcGVjaWFs
KCRpbnRlcmZhY2UsICRmdW5jdGlvbikpOwogCkBAIC0yNTA1LDM5ICsyNTA5LDI4IEBAIHN1YiBh
ZGRVbnNjb3BhYmxlUHJvcGVydGllcwogICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHB1dERp
cmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT51bnNjb3BhYmxlc1N5
bWJvbCwgJnVuc2NvcGFibGVzLCBEb250RW51bSB8IFJlYWRPbmx5KTtcbiIpOwogfQogCi1zdWIg
R2V0UmVzdWx0VHlwZUZpbHRlcgorc3ViIEdldFVuc2FmZUFyZ3VtZW50VHlwZQogewotICAgIG15
ICgkdHlwZSkgPSBAXzsKKyAgICBteSAoJGludGVyZmFjZSwgJHR5cGUpID0gQF87CiAKLSAgICBt
eSAlVHlwZUZpbHRlcnMgPSAoCi0gICAgICAgICJhbnkiID0+ICJTcGVjSGVhcFRvcCIsCi0gICAg
ICAgICJib29sZWFuIiA9PiAiU3BlY0Jvb2xlYW4iLAotICAgICAgICAiYnl0ZSIgPT4gIlNwZWNJ
bnQzMk9ubHkiLAotICAgICAgICAib2N0ZXQiID0+ICJTcGVjSW50MzJPbmx5IiwKLSAgICAgICAg
InNob3J0IiA9PiAiU3BlY0ludDMyT25seSIsCi0gICAgICAgICJ1bnNpZ25lZCBzaG9ydCIgPT4g
IlNwZWNJbnQzMk9ubHkiLAotICAgICAgICAibG9uZyIgPT4gIlNwZWNJbnQzMk9ubHkiLAotICAg
ICAgICAidW5zaWduZWQgbG9uZyIgPT4gIlNwZWNCeXRlY29kZU51bWJlciIsCi0gICAgICAgICJs
b25nIGxvbmciID0+ICJTcGVjQnl0ZWNvZGVOdW1iZXIiLAotICAgICAgICAidW5zaWduZWQgbG9u
ZyBsb25nIiA9PiAiU3BlY0J5dGVjb2RlTnVtYmVyIiwKLSAgICAgICAgImZsb2F0IiA9PiAiU3Bl
Y0J5dGVjb2RlTnVtYmVyIiwKLSAgICAgICAgInVucmVzdHJpY3RlZCBmbG9hdCIgPT4gIlNwZWNC
eXRlY29kZU51bWJlciIsCi0gICAgICAgICJkb3VibGUiID0+ICJTcGVjQnl0ZWNvZGVOdW1iZXIi
LAotICAgICAgICAidW5yZXN0cmljdGVkIGRvdWJsZSIgPT4gIlNwZWNCeXRlY29kZU51bWJlciIs
Ci0gICAgICAgICJET01TdHJpbmciID0+ICJTcGVjU3RyaW5nIiwKLSAgICAgICAgIkJ5dGVTdHJp
bmciID0+ICJTcGVjU3RyaW5nIiwKLSAgICAgICAgIlVTVlN0cmluZyIgPT4gIlNwZWNTdHJpbmci
LAotICAgICk7CisgICAgbXkgJElETFR5cGUgPSBHZXRJRExUeXBlKCRpbnRlcmZhY2UsICR0eXBl
KTsKKyAgICByZXR1cm4gIkRPTUpJVDo6SURMSlNBcmd1bWVudFR5cGU8JHtJRExUeXBlfT4iOwor
fQogCi0gICAgaWYgKGV4aXN0cyAkVHlwZUZpbHRlcnN7JHR5cGUtPm5hbWV9KSB7Ci0gICAgICAg
IG15ICRyZXN1bHRUeXBlID0gIkpTQzo6JFR5cGVGaWx0ZXJzeyR0eXBlLT5uYW1lfSI7Ci0gICAg
ICAgIGlmICgkdHlwZS0+aXNOdWxsYWJsZSkgewotICAgICAgICAgICAgZGllICJcImFueVwiIHR5
cGUgbXVzdCBub3QgYmVjb21lIG51bGxhYmxlLiIgaWYgJHR5cGUtPm5hbWUgZXEgImFueSI7Ci0g
ICAgICAgICAgICAkcmVzdWx0VHlwZSA9ICIoJHJlc3VsdFR5cGUgfCBKU0M6OlNwZWNPdGhlciki
OwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiAkcmVzdWx0VHlwZTsKLSAgICB9Ci0gICAgcmV0
dXJuICJTcGVjSGVhcFRvcCI7CitzdWIgR2V0QXJndW1lbnRUeXBlRmlsdGVyCit7CisgICAgbXkg
KCRpbnRlcmZhY2UsICR0eXBlKSA9IEBfOworCisgICAgbXkgJElETFR5cGUgPSBHZXRJRExUeXBl
KCRpbnRlcmZhY2UsICR0eXBlKTsKKyAgICByZXR1cm4gIkRPTUpJVDo6SURMQXJndW1lbnRUeXBl
RmlsdGVyPCR7SURMVHlwZX0+Ojp2YWx1ZSI7Cit9CisKK3N1YiBHZXRSZXN1bHRUeXBlRmlsdGVy
Cit7CisgICAgbXkgKCRpbnRlcmZhY2UsICR0eXBlKSA9IEBfOworCisgICAgbXkgJElETFR5cGUg
PSBHZXRJRExUeXBlKCRpbnRlcmZhY2UsICR0eXBlKTsKKyAgICByZXR1cm4gIkRPTUpJVDo6SURM
UmVzdWx0VHlwZUZpbHRlcjwke0lETFR5cGV9Pjo6dmFsdWUiOwogfQogCiBzdWIgR2VuZXJhdGVJ
bXBsZW1lbnRhdGlvbgpAQCAtMjYwOCw2ICsyNjAxLDE3IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVu
dGF0aW9uCiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiNpZiAke2NvbmRpdGlvbmFs
U3RyaW5nfVxuIikgaWYgJGNvbmRpdGlvbmFsU3RyaW5nOwogICAgICAgICAgICAgbXkgJGZ1bmN0
aW9uTmFtZSA9IEdldEZ1bmN0aW9uTmFtZSgkaW50ZXJmYWNlLCAkY2xhc3NOYW1lLCAkZnVuY3Rp
b24pOwogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJKU0M6OkVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgJHtmdW5jdGlvbk5hbWV9KEpTQzo6RXhlY1N0YXRlKik7XG4iKTsKKyAg
ICAgICAgICAgIGlmICgkY29kZUdlbmVyYXRvci0+RXh0ZW5kZWRBdHRyaWJ1dGVDb250YWlucygk
ZnVuY3Rpb24tPmV4dGVuZGVkQXR0cmlidXRlcy0+e0RPTUpJVH0sICJTaWduYXR1cmUiKSkgewor
ICAgICAgICAgICAgICAgICRpbXBsSW5jbHVkZXN7IkRPTUpJVElETFR5cGUuaCJ9ID0gMTsKKyAg
ICAgICAgICAgICAgICBteSAkdW5zYWZlRnVuY3Rpb25OYW1lID0gInVuc2FmZSIgLiAkY29kZUdl
bmVyYXRvci0+V0tfdWNmaXJzdCgkZnVuY3Rpb25OYW1lKTsKKyAgICAgICAgICAgICAgICBteSAk
ZnVuY3Rpb25TaWduYXR1cmUgPSAiSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMICR7
dW5zYWZlRnVuY3Rpb25OYW1lfShKU0M6OkV4ZWNTdGF0ZSosICRjbGFzc05hbWUqIjsKKyAgICAg
ICAgICAgICAgICBmb3JlYWNoIG15ICRhcmd1bWVudCAoQHskZnVuY3Rpb24tPmFyZ3VtZW50c30p
IHsKKyAgICAgICAgICAgICAgICAgICAgbXkgJHR5cGUgPSAkYXJndW1lbnQtPnR5cGU7CisgICAg
ICAgICAgICAgICAgICAgIG15ICRhcmd1bWVudFR5cGUgPSBHZXRVbnNhZmVBcmd1bWVudFR5cGUo
JGludGVyZmFjZSwgJHR5cGUpOworICAgICAgICAgICAgICAgICAgICAkZnVuY3Rpb25TaWduYXR1
cmUgLj0gIiwgJHthcmd1bWVudFR5cGV9IjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICAgICAgcHVzaChAaW1wbENvbnRlbnQsICRmdW5jdGlvblNpZ25hdHVyZSAuICIpO1xuIik7Cisg
ICAgICAgICAgICB9CiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiNlbmRpZlxuIikg
aWYgJGNvbmRpdGlvbmFsU3RyaW5nOwogICAgICAgICB9CiAKQEAgLTI2NDQsNiArMjY0OCwzNyBA
QCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwg
IlxuIik7CiAgICAgfQogCisgICAgaWYgKCRudW1GdW5jdGlvbnMgPiAwKSB7CisgICAgICAgICMg
R2VuZXJhdGUgRE9NSklUOjpTaWduYXR1cmUgdmFyaWFibGVzLgorICAgICAgICBmb3JlYWNoIG15
ICRmdW5jdGlvbiAoQGZ1bmN0aW9ucykgeworICAgICAgICAgICAgbmV4dCB1bmxlc3MgJGNvZGVH
ZW5lcmF0b3ItPkV4dGVuZGVkQXR0cmlidXRlQ29udGFpbnMoJGZ1bmN0aW9uLT5leHRlbmRlZEF0
dHJpYnV0ZXMtPntET01KSVR9LCAiU2lnbmF0dXJlIik7CisgICAgICAgICAgICAkaW1wbEluY2x1
ZGVzeyJET01KSVRJRExUeXBlRmlsdGVyLmgifSA9IDE7CisgICAgICAgICAgICAkaW1wbEluY2x1
ZGVzeyJET01KSVRDaGVja0RPTS5oIn0gPSAxOworICAgICAgICAgICAgJGltcGxJbmNsdWRlc3si
RE9NSklUQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5oIn0gPSAxOworCisgICAgICAgICAgICBteSAk
aXNPdmVybG9hZGVkID0gJGZ1bmN0aW9uLT57b3ZlcmxvYWRzfSAmJiBAeyRmdW5jdGlvbi0+e292
ZXJsb2Fkc319ID4gMTsKKyAgICAgICAgICAgIGRpZSAib3ZlcmxvYWRzIGlzIG5vdCBzdXBwb3J0
ZWQgaW4gRE9NSklUIiBpZiAkaXNPdmVybG9hZGVkOworCisgICAgICAgICAgICBteSAkaW50ZXJm
YWNlTmFtZSA9ICRpbnRlcmZhY2UtPnR5cGUtPm5hbWU7CisgICAgICAgICAgICBteSAkZnVuY3Rp
b25OYW1lID0gR2V0RnVuY3Rpb25OYW1lKCRpbnRlcmZhY2UsICRjbGFzc05hbWUsICRmdW5jdGlv
bik7CisgICAgICAgICAgICBteSAkdW5zYWZlRnVuY3Rpb25OYW1lID0gInVuc2FmZSIgLiAkY29k
ZUdlbmVyYXRvci0+V0tfdWNmaXJzdCgkZnVuY3Rpb25OYW1lKTsKKyAgICAgICAgICAgIG15ICRk
b21KSVRTaWduYXR1cmVOYW1lID0gIkRPTUpJVFNpZ25hdHVyZUZvciIgLiAkaW50ZXJmYWNlLT50
eXBlLT5uYW1lIC4gJGNvZGVHZW5lcmF0b3ItPldLX3VjZmlyc3QoJGZ1bmN0aW9uLT5uYW1lKTsK
KyAgICAgICAgICAgIG15ICRjbGFzc0luZm8gPSAiSlMiIC4gJGludGVyZmFjZS0+dHlwZS0+bmFt
ZSAuICI6OmluZm8oKSI7CisgICAgICAgICAgICBteSAkcmVzdWx0VHlwZSA9IEdldFJlc3VsdFR5
cGVGaWx0ZXIoJGludGVyZmFjZSwgJGZ1bmN0aW9uLT50eXBlKTsKKyAgICAgICAgICAgIG15ICRk
b21KSVRTaWduYXR1cmUgPSAic3RhdGljIGNvbnN0IEpTQzo6RE9NSklUOjpTaWduYXR1cmUgJHtk
b21KSVRTaWduYXR1cmVOYW1lfSgodWludHB0cl90KSR7dW5zYWZlRnVuY3Rpb25OYW1lfSwgRE9N
SklUOjpjaGVja0RPTTwkaW50ZXJmYWNlTmFtZT4sICRjbGFzc0luZm8sIEpTQzo6RE9NSklUOjpF
ZmZlY3Q6OmZvclJlYWQoRE9NSklUOjpBYnN0cmFjdEhlYXBSZXBvc2l0b3J5OjpET00pLCAke3Jl
c3VsdFR5cGV9IjsKKyAgICAgICAgICAgIGZvcmVhY2ggbXkgJGFyZ3VtZW50IChAeyRmdW5jdGlv
bi0+YXJndW1lbnRzfSkgeworICAgICAgICAgICAgICAgIG15ICR0eXBlID0gJGFyZ3VtZW50LT50
eXBlOworICAgICAgICAgICAgICAgIG15ICRhcmd1bWVudFR5cGUgPSBHZXRBcmd1bWVudFR5cGVG
aWx0ZXIoJGludGVyZmFjZSwgJHR5cGUpOworICAgICAgICAgICAgICAgICRkb21KSVRTaWduYXR1
cmUgLj0gIiwgJHthcmd1bWVudFR5cGV9IjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIG15
ICRjb25kaXRpb25hbFN0cmluZyA9ICRjb2RlR2VuZXJhdG9yLT5HZW5lcmF0ZUNvbmRpdGlvbmFs
U3RyaW5nKCRmdW5jdGlvbik7CisgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiNpZiAk
e2NvbmRpdGlvbmFsU3RyaW5nfVxuIikgaWYgJGNvbmRpdGlvbmFsU3RyaW5nOworICAgICAgICAg
ICAgcHVzaChAaW1wbENvbnRlbnQsICRkb21KSVRTaWduYXR1cmUgLiAiKTtcbiIpOworICAgICAg
ICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIjZW5kaWZcbiIpIGlmICRjb25kaXRpb25hbFN0cmlu
ZzsKKyAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiXG4iKTsKKyAgICAgICAgfQorICAg
IH0KKwogICAgIEdlbmVyYXRlUHJvdG90eXBlRGVjbGFyYXRpb24oXEBpbXBsQ29udGVudCwgJGNs
YXNzTmFtZSwgJGludGVyZmFjZSkgaWYgIUhlYWRlck5lZWRzUHJvdG90eXBlRGVjbGFyYXRpb24o
JGludGVyZmFjZSk7CiAKICAgICBHZW5lcmF0ZUNvbnN0cnVjdG9yRGVjbGFyYXRpb24oXEBpbXBs
Q29udGVudCwgJGNsYXNzTmFtZSwgJGludGVyZmFjZSkgaWYgTmVlZHNDb25zdHJ1Y3RvclByb3Bl
cnR5KCRpbnRlcmZhY2UpOwpAQCAtMjc0MCw3ICsyNzc1LDExIEBAIHN1YiBHZW5lcmF0ZUltcGxl
bWVudGF0aW9uCiAgICAgICAgICAgICBwdXNoKEBoYXNoVmFsdWUxLCAkZnVuY3Rpb25OYW1lKTsK
IAogICAgICAgICAgICAgbXkgJGZ1bmN0aW9uTGVuZ3RoID0gR2V0RnVuY3Rpb25MZW5ndGgoJGZ1
bmN0aW9uKTsKLSAgICAgICAgICAgIHB1c2goQGhhc2hWYWx1ZTIsICRmdW5jdGlvbkxlbmd0aCk7
CisgICAgICAgICAgICBpZiAoJGNvZGVHZW5lcmF0b3ItPkV4dGVuZGVkQXR0cmlidXRlQ29udGFp
bnMoJGZ1bmN0aW9uLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntET01KSVR9LCAiU2lnbmF0dXJlIikp
IHsKKyAgICAgICAgICAgICAgICBwdXNoKEBoYXNoVmFsdWUyLCAiRE9NSklURnVuY3Rpb25Gb3Ii
IC4gJGludGVyZmFjZS0+dHlwZS0+bmFtZSAuICRjb2RlR2VuZXJhdG9yLT5XS191Y2ZpcnN0KCRm
dW5jdGlvbi0+bmFtZSkpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBw
dXNoKEBoYXNoVmFsdWUyLCAkZnVuY3Rpb25MZW5ndGgpOworICAgICAgICAgICAgfQogCiAgICAg
ICAgICAgICBwdXNoKEBoYXNoU3BlY2lhbHMsIENvbXB1dGVGdW5jdGlvblNwZWNpYWwoJGludGVy
ZmFjZSwgJGZ1bmN0aW9uKSk7CiAKQEAgLTMzMDcsMTMgKzMzNDYsMTQgQEAgc3ViIEdlbmVyYXRl
SW1wbGVtZW50YXRpb24KIAogICAgICAgICAgICAgaWYgKCRhdHRyaWJ1dGUtPmV4dGVuZGVkQXR0
cmlidXRlcy0+eyJET01KSVQifSkgewogICAgICAgICAgICAgICAgICRpbXBsSW5jbHVkZXN7Ijx3
dGYvTmV2ZXJEZXN0cm95ZWQuaD4ifSA9IDE7CisgICAgICAgICAgICAgICAgJGltcGxJbmNsdWRl
c3siRE9NSklUSURMVHlwZUZpbHRlci5oIn0gPSAxOwogICAgICAgICAgICAgICAgIG15ICRpbnRl
cmZhY2VOYW1lID0gJGludGVyZmFjZS0+dHlwZS0+bmFtZTsKICAgICAgICAgICAgICAgICBteSAk
YXR0cmlidXRlTmFtZSA9ICRhdHRyaWJ1dGUtPm5hbWU7CiAgICAgICAgICAgICAgICAgbXkgJGdl
bmVyYXRvck5hbWUgPSAkaW50ZXJmYWNlTmFtZSAuICRjb2RlR2VuZXJhdG9yLT5XS191Y2ZpcnN0
KCRhdHRyaWJ1dGUtPm5hbWUpOwogICAgICAgICAgICAgICAgIG15ICRkb21KSVRDbGFzc05hbWUg
PSAkZ2VuZXJhdG9yTmFtZSAuICJET01KSVQiOwogICAgICAgICAgICAgICAgIG15ICRnZXR0ZXIg
PSBHZXRBdHRyaWJ1dGVHZXR0ZXJOYW1lKCRpbnRlcmZhY2UsICRnZW5lcmF0b3JOYW1lLCAkYXR0
cmlidXRlKTsKICAgICAgICAgICAgICAgICBteSAkc2V0dGVyID0gSXNSZWFkb25seSgkYXR0cmli
dXRlKSA/ICJudWxscHRyIiA6IEdldEF0dHJpYnV0ZVNldHRlck5hbWUoJGludGVyZmFjZSwgJGdl
bmVyYXRvck5hbWUsICRhdHRyaWJ1dGUpOwotICAgICAgICAgICAgICAgIG15ICRyZXN1bHRUeXBl
ID0gR2V0UmVzdWx0VHlwZUZpbHRlcigkYXR0cmlidXRlLT50eXBlKTsKKyAgICAgICAgICAgICAg
ICBteSAkcmVzdWx0VHlwZSA9IEdldFJlc3VsdFR5cGVGaWx0ZXIoJGludGVyZmFjZSwgJGF0dHJp
YnV0ZS0+dHlwZSk7CiAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIkZG9tSklU
Q2xhc3NOYW1lOjokZG9tSklUQ2xhc3NOYW1lKClcbiIpOwogICAgICAgICAgICAgICAgIHB1c2go
QGltcGxDb250ZW50LCAiICAgIDogSlNDOjpET01KSVQ6OkdldHRlclNldHRlcigkZ2V0dGVyLCAk
c2V0dGVyLCAke2NsYXNzTmFtZX06OmluZm8oKSwgJHJlc3VsdFR5cGUpXG4iKTsKICAgICAgICAg
ICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIntcbiIpOwpAQCAtMzY4OCw2ICszNzI4LDcgQEAg
c3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KIAogICAgICAgICAgICAgbXkgJGlzQ3VzdG9tID0g
SGFzQ3VzdG9tTWV0aG9kKCRmdW5jdGlvbi0+ZXh0ZW5kZWRBdHRyaWJ1dGVzKTsKICAgICAgICAg
ICAgIG15ICRpc092ZXJsb2FkZWQgPSAkZnVuY3Rpb24tPntvdmVybG9hZHN9ICYmIEB7JGZ1bmN0
aW9uLT57b3ZlcmxvYWRzfX0gPiAxOworICAgICAgICAgICAgbXkgJGlzRE9NSklUID0gJGNvZGVH
ZW5lcmF0b3ItPkV4dGVuZGVkQXR0cmlidXRlQ29udGFpbnMoJGZ1bmN0aW9uLT5leHRlbmRlZEF0
dHJpYnV0ZXMtPntET01KSVR9LCAiU2lnbmF0dXJlIik7CiAKICAgICAgICAgICAgIG15ICRtYXlU
aHJvd0xlZ2FjeUV4Y2VwdGlvbiA9ICRmdW5jdGlvbi0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57TWF5
VGhyb3dMZWdhY3lFeGNlcHRpb259OwogCkBAIC0zODI2LDYgKzM4NjcsNzkgQEAgRU5ECiAgICAg
ICAgICAgICB9CiAKICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAifVxuXG4iKTsKKwor
ICAgICAgICAgICAgaWYgKCRpc0RPTUpJVCkgeworICAgICAgICAgICAgICAgICRpbXBsSW5jbHVk
ZXN7IjxpbnRlcnByZXRlci9GcmFtZVRyYWNlcnMuaD4ifSA9IDE7CisgICAgICAgICAgICAgICAg
bXkgJHVuc2FmZUZ1bmN0aW9uTmFtZSA9ICJ1bnNhZmUiIC4gJGNvZGVHZW5lcmF0b3ItPldLX3Vj
Zmlyc3QoJGZ1bmN0aW9uTmFtZSk7CisgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQs
ICJKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgJHt1bnNhZmVGdW5jdGlvbk5hbWV9
KEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgJGNsYXNzTmFtZSogY2FzdGVkVGhpcyIpOworICAgICAg
ICAgICAgICAgIGZvcmVhY2ggbXkgJGFyZ3VtZW50IChAeyRmdW5jdGlvbi0+YXJndW1lbnRzfSkg
eworICAgICAgICAgICAgICAgICAgICBteSAkdHlwZSA9ICRhcmd1bWVudC0+dHlwZTsKKyAgICAg
ICAgICAgICAgICAgICAgbXkgJGFyZ3VtZW50VHlwZSA9IEdldFVuc2FmZUFyZ3VtZW50VHlwZSgk
aW50ZXJmYWNlLCAkdHlwZSk7CisgICAgICAgICAgICAgICAgICAgIG15ICRuYW1lID0gJGFyZ3Vt
ZW50LT5uYW1lOworICAgICAgICAgICAgICAgICAgICBteSAkZW5jb2RlZE5hbWUgPSAiZW5jb2Rl
ZCIgLiAkY29kZUdlbmVyYXRvci0+V0tfdWNmaXJzdCgkbmFtZSk7CisgICAgICAgICAgICAgICAg
ICAgIHB1c2goQGltcGxDb250ZW50LCAiLCAke2FyZ3VtZW50VHlwZX0gJHtlbmNvZGVkTmFtZX0i
KTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQs
ICIpXG4iKTsKKyAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIntcbiIpOworICAg
ICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7
XG4iKTsKKyAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBWTSYgdm0gPSBz
dGF0ZS0+dm0oKTtcbiIpOworICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAg
IEpTQzo6TmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcigmdm0sIHN0YXRlKTtcbiIpOworICAg
ICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGF1dG8gdGhyb3dTY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pO1xuIik7CisgICAgICAgICAgICAgICAgcHVzaChAaW1wbENv
bnRlbnQsICIgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpO1xuIik7CisgICAgICAgICAgICAg
ICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBw
ZWQoKTtcbiIpOworICAgICAgICAgICAgICAgIG15IEBhcmd1bWVudHM7CisgICAgICAgICAgICAg
ICAgbXkgJGltcGxGdW5jdGlvbk5hbWU7CisgICAgICAgICAgICAgICAgbXkgJGltcGxlbWVudGVk
QnkgPSAkZnVuY3Rpb24tPmV4dGVuZGVkQXR0cmlidXRlcy0+e0ltcGxlbWVudGVkQnl9OworCisg
ICAgICAgICAgICAgICAgaWYgKCRpbXBsZW1lbnRlZEJ5KSB7CisgICAgICAgICAgICAgICAgICAg
IEFkZFRvSW1wbEluY2x1ZGVzKCIke2ltcGxlbWVudGVkQnl9LmgiLCAkZnVuY3Rpb24tPmV4dGVu
ZGVkQXR0cmlidXRlcy0+e0NvbmRpdGlvbmFsfSk7CisgICAgICAgICAgICAgICAgICAgIHVuc2hp
ZnQoQGFyZ3VtZW50cywgImltcGwiKSBpZiAhJGZ1bmN0aW9uLT5pc1N0YXRpYzsKKyAgICAgICAg
ICAgICAgICAgICAgJGltcGxGdW5jdGlvbk5hbWUgPSAiV2ViQ29yZTo6JHtpbXBsZW1lbnRlZEJ5
fTo6JHtmdW5jdGlvbkltcGxlbWVudGF0aW9uTmFtZX0iOworICAgICAgICAgICAgICAgIH0gZWxz
aWYgKCRmdW5jdGlvbi0+aXNTdGF0aWMpIHsKKyAgICAgICAgICAgICAgICAgICAgJGltcGxGdW5j
dGlvbk5hbWUgPSAiJHtpbnRlcmZhY2VOYW1lfTo6JHtmdW5jdGlvbkltcGxlbWVudGF0aW9uTmFt
ZX0iOworICAgICAgICAgICAgICAgIH0gZWxzaWYgKCRzdmdQcm9wZXJ0eU9yTGlzdFByb3BlcnR5
VHlwZSBhbmQgISRzdmdMaXN0UHJvcGVydHlUeXBlKSB7CisgICAgICAgICAgICAgICAgICAgICRp
bXBsRnVuY3Rpb25OYW1lID0gInBvZEltcGwuJHtmdW5jdGlvbkltcGxlbWVudGF0aW9uTmFtZX0i
OworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICRpbXBsRnVu
Y3Rpb25OYW1lID0gImltcGwuJHtmdW5jdGlvbkltcGxlbWVudGF0aW9uTmFtZX0iOworICAgICAg
ICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIG15ICRhcmd1bWVudEluZGV4ID0gMDsKKyAg
ICAgICAgICAgICAgICBmb3JlYWNoIG15ICRhcmd1bWVudCAoQHskZnVuY3Rpb24tPmFyZ3VtZW50
c30pIHsKKyAgICAgICAgICAgICAgICAgICAgbXkgJHZhbHVlID0gIiI7CisgICAgICAgICAgICAg
ICAgICAgIG15ICR0eXBlID0gJGFyZ3VtZW50LT50eXBlOworICAgICAgICAgICAgICAgICAgICBt
eSAkbmFtZSA9ICRhcmd1bWVudC0+bmFtZTsKKyAgICAgICAgICAgICAgICAgICAgbXkgJGVuY29k
ZWROYW1lID0gImVuY29kZWQiIC4gJGNvZGVHZW5lcmF0b3ItPldLX3VjZmlyc3QoJG5hbWUpOwor
ICAgICAgICAgICAgICAgICAgICBteSAkbmF0aXZlVHlwZSA9IEdldE5hdGl2ZVR5cGUoJGludGVy
ZmFjZSwgJGFyZ3VtZW50LT50eXBlKTsKKyAgICAgICAgICAgICAgICAgICAgbXkgJHNob3VsZFBh
c3NCeVJlZmVyZW5jZSA9IFNob3VsZFBhc3NXcmFwcGVyQnlSZWZlcmVuY2UoJGFyZ3VtZW50LCAk
aW50ZXJmYWNlKTsKKworICAgICAgICAgICAgICAgICAgICBpZiAoISRzaG91bGRQYXNzQnlSZWZl
cmVuY2UgJiYgKCRjb2RlR2VuZXJhdG9yLT5Jc1dyYXBwZXJUeXBlKCR0eXBlKSB8fCAkY29kZUdl
bmVyYXRvci0+SXNUeXBlZEFycmF5VHlwZSgkdHlwZSkpKSB7CisgICAgICAgICAgICAgICAgICAg
ICAgICAkaW1wbEluY2x1ZGVzeyI8cnVudGltZS9FcnJvci5oPiJ9ID0gMTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIG15ICgkbmF0aXZlVmFsdWUsICRtYXlUaHJvd0V4Y2VwdGlvbikgPSBVbnNh
ZmVUb05hdGl2ZSgkaW50ZXJmYWNlLCAkYXJndW1lbnQsICRlbmNvZGVkTmFtZSwgJGZ1bmN0aW9u
LT5leHRlbmRlZEF0dHJpYnV0ZXMtPntDb25kaXRpb25hbH0pOworICAgICAgICAgICAgICAgICAg
ICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgJG5hdGl2ZVR5cGUgJG5hbWUgPSBudWxscHRy
O1xuIik7CisgICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAk
bmFtZSA9ICRuYXRpdmVWYWx1ZTtcbiIpOworICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChA
aW1wbENvbnRlbnQsICIgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVk
SlNWYWx1ZSgpKTtcbiIpIGlmICRtYXlUaHJvd0V4Y2VwdGlvbjsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICR2YWx1ZSA9ICJXVEZNb3ZlKCRuYW1lKSI7CisgICAgICAgICAgICAgICAgICAgIH0g
ZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICBteSAoJG5hdGl2ZVZhbHVlLCAkbWF5VGhy
b3dFeGNlcHRpb24pID0gVW5zYWZlVG9OYXRpdmUoJGludGVyZmFjZSwgJGFyZ3VtZW50LCAkZW5j
b2RlZE5hbWUsICRmdW5jdGlvbi0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Q29uZGl0aW9uYWx9KTsK
KyAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGF1dG8gJG5h
bWUgPSAke25hdGl2ZVZhbHVlfTtcbiIpOworICAgICAgICAgICAgICAgICAgICAgICAgJHZhbHVl
ID0gIldURk1vdmUoJG5hbWUpIjsKKyAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxD
b250ZW50LCAiICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFs
dWUoKSk7XG4iKSBpZiAkbWF5VGhyb3dFeGNlcHRpb247CisgICAgICAgICAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgICAgICAgICBpZiAoJHNob3VsZFBhc3NCeVJlZmVyZW5jZSkgeworICAg
ICAgICAgICAgICAgICAgICAgICAgJHZhbHVlID0gIiokbmFtZSI7CisgICAgICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgICAgICAgICAgcHVzaChAYXJndW1lbnRzLCAkdmFsdWUpOworICAg
ICAgICAgICAgICAgICAgICAkYXJndW1lbnRJbmRleCsrOworICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgICBteSAkZnVuY3Rpb25TdHJpbmcgPSAiJGltcGxGdW5jdGlvbk5hbWUoIiAu
IGpvaW4oIiwgIiwgQGFyZ3VtZW50cykgLiAiKSI7CisgICAgICAgICAgICAgICAgJGZ1bmN0aW9u
U3RyaW5nID0gInByb3BhZ2F0ZUV4Y2VwdGlvbigqc3RhdGUsIHRocm93U2NvcGUsICRmdW5jdGlv
blN0cmluZykiIGlmIE5lZWRzRXhwbGljaXRQcm9wYWdhdGVFeGNlcHRpb25DYWxsKCRmdW5jdGlv
bik7CisgICAgICAgICAgICAgICAgbXkgJHRoaXNPYmplY3QgPSAiY2FzdGVkVGhpcyI7CisgICAg
ICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgSlNWYWx1ZSByZXN1bHQgPSAiIC4g
TmF0aXZlVG9KU1ZhbHVlVXNpbmdQb2ludGVycygkZnVuY3Rpb24sIDEsICRpbnRlcmZhY2UsICRm
dW5jdGlvblN0cmluZywgJHRoaXNPYmplY3QpIC4gIjtcbiIpOworICAgICAgICAgICAgICAgIHB1
c2goQGltcGxDb250ZW50LCAiICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTtcbiIp
OworICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAifVxuXG4iKTsKKyAgICAgICAg
ICAgIH0KKwogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIjZW5kaWZcblxuIikgaWYg
JGNvbmRpdGlvbmFsOwogCiAgICAgICAgICAgICAjIEdlbmVyYXRlIGEgZnVuY3Rpb24gZGlzcGF0
Y2hpbmcgY2FsbCB0byB0aGUgcmVzdCBvZiB0aGUgb3ZlcmxvYWRzLgpAQCAtNTMxOSw2ICs1NDMz
LDQzIEBAIHN1YiBKU1ZhbHVlVG9OYXRpdmUKICAgICByZXR1cm4gKCJKUyIgLiAkdHlwZS0+bmFt
ZSAuICI6OnRvV3JhcHBlZCgkdmFsdWUpIiwgMCk7CiB9CiAKK3N1YiBVbnNhZmVUb05hdGl2ZQor
eworICAgIG15ICgkaW50ZXJmYWNlLCAkY29udGV4dCwgJHZhbHVlLCAkY29uZGl0aW9uYWwsICRz
dGF0ZVBvaW50ZXIsICRzdGF0ZVJlZmVyZW5jZSwgJHRoaXNPYmplY3RSZWZlcmVuY2UpID0gQF87
CisKKyAgICBhc3NlcnQoIkludmFsaWQgY29udGV4dCB0eXBlIikgaWYgIUlzVmFsaWRDb250ZXh0
Rm9ySlNWYWx1ZVRvTmF0aXZlKCRjb250ZXh0KTsKKworICAgIG15ICR0eXBlID0gJGNvbnRleHQt
PnR5cGU7CisKKyAgICAjIEZJWE1FOiBSZW1vdmUgdGhlc2UgMyB2YXJpYWJsZXMgd2hlbiBhbGwg
VW5zYWZlVG9OYXRpdmUgdXNlIHJlZmVyZW5jZXMuCisgICAgJHN0YXRlUG9pbnRlciA9ICJzdGF0
ZSIgdW5sZXNzICRzdGF0ZVBvaW50ZXI7CisgICAgJHN0YXRlUmVmZXJlbmNlID0gIipzdGF0ZSIg
dW5sZXNzICRzdGF0ZVJlZmVyZW5jZTsKKyAgICAkdGhpc09iamVjdFJlZmVyZW5jZSA9ICIqY2Fz
dGVkVGhpcyIgdW5sZXNzICR0aGlzT2JqZWN0UmVmZXJlbmNlOworCisgICAgaWYgKEpTVmFsdWVU
b05hdGl2ZUlzSGFuZGxlZEJ5RE9NQ29udmVydCgkdHlwZSwgJGNvbnRleHQpKSB7CisgICAgICAg
IEFkZFRvSW1wbEluY2x1ZGVzKCJET01KSVRJRExDb252ZXJ0LmgiKTsKKyAgICAgICAgQWRkVG9J
bXBsSW5jbHVkZXNGb3JJRExUeXBlKCR0eXBlLCAkY29uZGl0aW9uYWwpOworCisgICAgICAgIG15
ICRJRExUeXBlID0gR2V0SURMVHlwZSgkaW50ZXJmYWNlLCAkdHlwZSk7CisKKyAgICAgICAgbXkg
QGNvbnZlcnNpb25Bcmd1bWVudHMgPSAoKTsKKyAgICAgICAgcHVzaChAY29udmVyc2lvbkFyZ3Vt
ZW50cywgIiRzdGF0ZVJlZmVyZW5jZSIpOworICAgICAgICBwdXNoKEBjb252ZXJzaW9uQXJndW1l
bnRzLCAiJHZhbHVlIik7CisKKyAgICAgICAgbXkgQGNvbnZlcnNpb25TdGF0aWNBcmd1bWVudHMg
PSAoKTsKKyAgICAgICAgcHVzaChAY29udmVyc2lvblN0YXRpY0FyZ3VtZW50cywgR2V0SW50ZWdl
ckNvbnZlcnNpb25Db25maWd1cmF0aW9uKCRjb250ZXh0KSkgaWYgJGNvZGVHZW5lcmF0b3ItPklz
SW50ZWdlclR5cGUoJHR5cGUpOworICAgICAgICBwdXNoKEBjb252ZXJzaW9uU3RhdGljQXJndW1l
bnRzLCBHZXRTdHJpbmdDb252ZXJzaW9uQ29uZmlndXJhdGlvbigkY29udGV4dCkpIGlmICRjb2Rl
R2VuZXJhdG9yLT5Jc1N0cmluZ1R5cGUoJHR5cGUpOworCisgICAgICAgIGlmIChzY2FsYXIoQGNv
bnZlcnNpb25TdGF0aWNBcmd1bWVudHMpID4gMCkgeworICAgICAgICAgICAgcmV0dXJuICgiRE9N
SklUOjpEaXJlY3RDb252ZXJ0ZXI8JElETFR5cGU+OjpkaXJlY3RDb252ZXJ0PCIgLiBqb2luKCIs
ICIsIEBjb252ZXJzaW9uU3RhdGljQXJndW1lbnRzKSAuICI+KCIgLiBqb2luKCIsICIsIEBjb252
ZXJzaW9uQXJndW1lbnRzKSAuICIpIiwgMSk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuICgi
RE9NSklUOjpEaXJlY3RDb252ZXJ0ZXI8JElETFR5cGU+OjpkaXJlY3RDb252ZXJ0KCIgLiBqb2lu
KCIsICIsIEBjb252ZXJzaW9uQXJndW1lbnRzKSAuICIpIiwgMSk7CisgICAgfQorCisgICAgIyBG
SVhNRTogU3VwcG9ydCBtb3JlIHR5cGVzLgorICAgIGRpZSAiT25seSBET01Db252ZXJ0IHN1cHBv
cnRlZCBvbmUgaXMgbm93IHN1cHBvcnRlZCBpbiBET01KSVQgdW5zYWZlLiI7Cit9CisKIHN1YiBO
YXRpdmVUb0pTVmFsdWVJc0hhbmRsZWRCeURPTUNvbnZlcnQKIHsKICAgICBteSAoJHR5cGUpID0g
QF87CkBAIC01NTI1LDcgKzU2NzYsMTAgQEAgc3ViIEdlbmVyYXRlSGFzaFRhYmxlVmFsdWVBcnJh
eQogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIjaWYgJHtjb25kaXRpb25hbFN0cmlu
Z31cbiIpOwogICAgICAgICB9CiAKLSAgICAgICAgaWYgKCJAJHNwZWNpYWxzWyRpXSIgPX4gbS9G
dW5jdGlvbi8pIHsKKyAgICAgICAgaWYgKCJAJHNwZWNpYWxzWyRpXSIgPX4gbS9ET01KSVRGdW5j
dGlvbi8pIHsKKyAgICAgICAgICAgICRmaXJzdFRhcmdldFR5cGUgPSAic3RhdGljX2Nhc3Q8TmF0
aXZlRnVuY3Rpb24+IjsKKyAgICAgICAgICAgICRzZWNvbmRUYXJnZXRUeXBlID0gInN0YXRpY19j
YXN0PGNvbnN0IEpTQzo6RE9NSklUOjpTaWduYXR1cmUqPiI7CisgICAgICAgIH0gZWxzaWYgKCJA
JHNwZWNpYWxzWyRpXSIgPX4gbS9GdW5jdGlvbi8pIHsKICAgICAgICAgICAgICRmaXJzdFRhcmdl
dFR5cGUgPSAic3RhdGljX2Nhc3Q8TmF0aXZlRnVuY3Rpb24+IjsKICAgICAgICAgfSBlbHNpZiAo
IkAkc3BlY2lhbHNbJGldIiA9fiBtL0J1aWx0aW4vKSB7CiAgICAgICAgICAgICAkZmlyc3RUYXJn
ZXRUeXBlID0gInN0YXRpY19jYXN0PEJ1aWx0aW5HZW5lcmF0b3I+IjsKQEAgLTYxMjMsNiArNjI3
Nyw5IEBAIHN1YiBDb21wdXRlRnVuY3Rpb25TcGVjaWFsCiAgICAgZWxzZSB7CiAgICAgICAgIHB1
c2goQHNwZWNpYWxzLCAiSlNDOjpGdW5jdGlvbiIpOwogICAgIH0KKyAgICBpZiAoJGZ1bmN0aW9u
LT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiRE9NSklUIn0pIHsKKyAgICAgICAgcHVzaChAc3BlY2lh
bHMsICJET01KSVRGdW5jdGlvbiIpIGlmICRjb2RlR2VuZXJhdG9yLT5FeHRlbmRlZEF0dHJpYnV0
ZUNvbnRhaW5zKCRmdW5jdGlvbi0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57RE9NSklUfSwgIlNpZ25h
dHVyZSIpOworICAgIH0KICAgICByZXR1cm4gKEBzcGVjaWFscyA+IDApID8gam9pbigiIHwgIiwg
QHNwZWNpYWxzKSA6ICIwIjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy9JRExBdHRyaWJ1dGVzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvSURMQXR0cmlidXRlcy50eHQKaW5kZXggYTJlNzU0MTU5MWNlM2Y1NzZlN2E3ZDJkNmQy
ZmM2MmRkZGZhMDQxYy4uMTQ2YzJiY2M4ZTBmMzc2ZDVkY2M1NDM1MzkwODMzNTljNzJkYmU2MyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9JRExBdHRyaWJ1dGVz
LnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0lETEF0dHJpYnV0ZXMu
dHh0CkBAIC01Miw3ICs1Miw3IEBAIEN1c3RvbVB1dEZ1bmN0aW9uCiBDdXN0b21TZXRQcm90b3R5
cGUKIEN1c3RvbVNldHRlcgogQ3VzdG9tVG9KU09iamVjdAotRE9NSklUCitET01KSVQ9fFNpZ25h
dHVyZQogRG9Ob3RDaGVja0NvbnN0YW50cwogRG9Ob3RDaGVja1NlY3VyaXR5CiBEb05vdENoZWNr
U2VjdXJpdHlPbkdldHRlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdERPTUpJVC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0RE9NSklULmNwcAppbmRleCAyNDg4ZGYyNmJkYjUyYjUwY2Q2
N2Q2MGNjYTU2NWIyNjUzNjdlNGNmLi45NTk2MWE0YmZkZTIwYWE2ZjMxOWQ4YjU3YzZhYzBlYmQy
MDVjODA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0RE9NSklULmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0RE9NSklULmNwcApAQCAtMjEsMTAgKzIxLDE4IEBACiAjaW5jbHVkZSAi
Y29uZmlnLmgiCiAjaW5jbHVkZSAiSlNUZXN0RE9NSklULmgiCiAKKyNpbmNsdWRlICJET01KSVRB
YnN0cmFjdEhlYXBSZXBvc2l0b3J5LmgiCisjaW5jbHVkZSAiRE9NSklUQ2hlY2tET00uaCIKKyNp
bmNsdWRlICJET01KSVRJRExDb252ZXJ0LmgiCisjaW5jbHVkZSAiRE9NSklUSURMVHlwZS5oIgor
I2luY2x1ZGUgIkRPTUpJVElETFR5cGVGaWx0ZXIuaCIKKyNpbmNsdWRlICJFeGNlcHRpb25Db2Rl
LmgiCiAjaW5jbHVkZSAiSlNCeXRlU3RyaW5nLmgiCiAjaW5jbHVkZSAiSlNET01CaW5kaW5nLmgi
CiAjaW5jbHVkZSAiSlNET01Db25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUgIkpTRE9NQ29udmVydC5o
IgorI2luY2x1ZGUgPGludGVycHJldGVyL0ZyYW1lVHJhY2Vycy5oPgorI2luY2x1ZGUgPHJ1bnRp
bWUvRXJyb3IuaD4KICNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+CiAjaW5jbHVkZSA8d3RmL05ldmVy
RGVzdHJveWVkLmg+CiAKQEAgLTMyLDYgKzQwLDExIEBAIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorLy8gRnVuY3Rpb25zCisKK0pTQzo6RW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RET01KSVRQcm90b3R5cGVGdW5jdGlvbkdldEF0dHJpYnV0
ZShKU0M6OkV4ZWNTdGF0ZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHVu
c2FmZUpzVGVzdERPTUpJVFByb3RvdHlwZUZ1bmN0aW9uR2V0QXR0cmlidXRlKEpTQzo6RXhlY1N0
YXRlKiwgSlNUZXN0RE9NSklUKiwgRE9NSklUOjpJRExKU0FyZ3VtZW50VHlwZTxJRExET01TdHJp
bmc+KTsKKwogLy8gQXR0cmlidXRlcwogCiBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdERPTUpJ
VEFueUF0dHIoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3Bl
cnR5TmFtZSk7CkBAIC03Miw2ICs4NSw4IEBAIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0RE9N
SklUTm9kZU51bGxhYmxlQXR0cihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTCiBKU0M6
OkVuY29kZWRKU1ZhbHVlIGpzVGVzdERPTUpJVENvbnN0cnVjdG9yKEpTQzo6RXhlY1N0YXRlKiwg
SlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwogYm9vbCBzZXRKU1Rlc3RE
T01KSVRDb25zdHJ1Y3RvcihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpT
Qzo6RW5jb2RlZEpTVmFsdWUpOwogCitzdGF0aWMgY29uc3QgSlNDOjpET01KSVQ6OlNpZ25hdHVy
ZSBET01KSVRTaWduYXR1cmVGb3JUZXN0RE9NSklUR2V0QXR0cmlidXRlKCh1aW50cHRyX3QpdW5z
YWZlSnNUZXN0RE9NSklUUHJvdG90eXBlRnVuY3Rpb25HZXRBdHRyaWJ1dGUsIERPTUpJVDo6Y2hl
Y2tET008VGVzdERPTUpJVD4sIEpTVGVzdERPTUpJVDo6aW5mbygpLCBKU0M6OkRPTUpJVDo6RWZm
ZWN0Ojpmb3JSZWFkKERPTUpJVDo6QWJzdHJhY3RIZWFwUmVwb3NpdG9yeTo6RE9NKSwgRE9NSklU
OjpJRExSZXN1bHRUeXBlRmlsdGVyPElETE51bGxhYmxlPElETERPTVN0cmluZz4+Ojp2YWx1ZSwg
RE9NSklUOjpJRExBcmd1bWVudFR5cGVGaWx0ZXI8SURMRE9NU3RyaW5nPjo6dmFsdWUpOworCiBj
bGFzcyBKU1Rlc3RET01KSVRQcm90b3R5cGUgOiBwdWJsaWMgSlNDOjpKU05vbkZpbmFsT2JqZWN0
IHsKIHB1YmxpYzoKICAgICB1c2luZyBCYXNlID0gSlNDOjpKU05vbkZpbmFsT2JqZWN0OwpAQCAt
MTUzLDYgKzE2OCw3IEBAIHN0YXRpYyBjb25zdCBIYXNoVGFibGVWYWx1ZSBKU1Rlc3RET01KSVRQ
cm90b3R5cGVUYWJsZVZhbHVlc1tdID0KICAgICB7ICJieXRlU3RyaW5nTnVsbGFibGVBdHRyIiwg
UmVhZE9ubHkgfCBDdXN0b21BY2Nlc3NvciB8IERPTUpJVEF0dHJpYnV0ZSwgTm9JbnRyaW5zaWMs
IHsgKGludHB0cl90KXN0YXRpY19jYXN0PERPTUpJVEdldHRlclNldHRlckdlbmVyYXRvcj4oZG9t
SklUR2V0dGVyU2V0dGVyRm9yVGVzdERPTUpJVEJ5dGVTdHJpbmdOdWxsYWJsZUF0dHIpLCAoaW50
cHRyX3QpICgwKSB9IH0sCiAgICAgeyAidXN2U3RyaW5nTnVsbGFibGVBdHRyIiwgUmVhZE9ubHkg
fCBDdXN0b21BY2Nlc3NvciB8IERPTUpJVEF0dHJpYnV0ZSwgTm9JbnRyaW5zaWMsIHsgKGludHB0
cl90KXN0YXRpY19jYXN0PERPTUpJVEdldHRlclNldHRlckdlbmVyYXRvcj4oZG9tSklUR2V0dGVy
U2V0dGVyRm9yVGVzdERPTUpJVFVzdlN0cmluZ051bGxhYmxlQXR0ciksIChpbnRwdHJfdCkgKDAp
IH0gfSwKICAgICB7ICJub2RlTnVsbGFibGVBdHRyIiwgUmVhZE9ubHkgfCBDdXN0b21BY2Nlc3Nv
ciB8IERPTUpJVEF0dHJpYnV0ZSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0
PERPTUpJVEdldHRlclNldHRlckdlbmVyYXRvcj4oZG9tSklUR2V0dGVyU2V0dGVyRm9yVGVzdERP
TUpJVE5vZGVOdWxsYWJsZUF0dHIpLCAoaW50cHRyX3QpICgwKSB9IH0sCisgICAgeyAiZ2V0QXR0
cmlidXRlIiwgSlNDOjpGdW5jdGlvbiB8IERPTUpJVEZ1bmN0aW9uLCBOb0ludHJpbnNpYywgeyAo
aW50cHRyX3Qpc3RhdGljX2Nhc3Q8TmF0aXZlRnVuY3Rpb24+KGpzVGVzdERPTUpJVFByb3RvdHlw
ZUZ1bmN0aW9uR2V0QXR0cmlidXRlKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxjb25zdCBKU0M6
OkRPTUpJVDo6U2lnbmF0dXJlKj4oJkRPTUpJVFNpZ25hdHVyZUZvclRlc3RET01KSVRHZXRBdHRy
aWJ1dGUpIH0gfSwKIH07CiAKIGNvbnN0IENsYXNzSW5mbyBKU1Rlc3RET01KSVRQcm90b3R5cGU6
OnNfaW5mbyA9IHsgIlRlc3RET01KSVRQcm90b3R5cGUiLCAmQmFzZTo6c19pbmZvLCAwLCBDUkVB
VEVfTUVUSE9EX1RBQkxFKEpTVGVzdERPTUpJVFByb3RvdHlwZSkgfTsKQEAgLTE4NSw2ICsyMDEs
MTEgQEAgdGVtcGxhdGU8PiBpbmxpbmUgSlNUZXN0RE9NSklUKiBCaW5kaW5nQ2FsbGVyPEpTVGVz
dERPTUpJVD46OmNhc3RGb3JBdHRyaWJ1dGUoRXgKICAgICByZXR1cm4ganNEeW5hbWljRG93bmNh
c3Q8SlNUZXN0RE9NSklUKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogfQogCit0ZW1w
bGF0ZTw+IGlubGluZSBKU1Rlc3RET01KSVQqIEJpbmRpbmdDYWxsZXI8SlNUZXN0RE9NSklUPjo6
Y2FzdEZvck9wZXJhdGlvbihFeGVjU3RhdGUmIHN0YXRlKQoreworICAgIHJldHVybiBqc0R5bmFt
aWNEb3duY2FzdDxKU1Rlc3RET01KSVQqPihzdGF0ZS50aGlzVmFsdWUoKSk7Cit9CisKIHN0YXRp
YyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RET01KSVRBbnlBdHRyR2V0dGVyKEV4ZWNTdGF0ZSYsIEpT
VGVzdERPTUpJVCYsIFRocm93U2NvcGUmIHRocm93U2NvcGUpOwogCiBFbmNvZGVkSlNWYWx1ZSBq
c1Rlc3RET01KSVRBbnlBdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNW
YWx1ZSwgUHJvcGVydHlOYW1lKQpAQCAtMjAyLDcgKzIyMyw3IEBAIHN0YXRpYyBpbmxpbmUgSlNW
YWx1ZSBqc1Rlc3RET01KSVRBbnlBdHRyR2V0dGVyKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVGVzdERP
TUpJVCYKIH0KIAogVGVzdERPTUpJVEFueUF0dHJET01KSVQ6OlRlc3RET01KSVRBbnlBdHRyRE9N
SklUKCkKLSAgICA6IEpTQzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIoanNUZXN0RE9NSklUQW55QXR0
ciwgbnVsbHB0ciwgSlNUZXN0RE9NSklUOjppbmZvKCksIEpTQzo6U3BlY0hlYXBUb3ApCisgICAg
OiBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVyKGpzVGVzdERPTUpJVEFueUF0dHIsIG51bGxwdHIs
IEpTVGVzdERPTUpJVDo6aW5mbygpLCBET01KSVQ6OklETFJlc3VsdFR5cGVGaWx0ZXI8SURMQW55
Pjo6dmFsdWUpCiB7CiB9CiAKQEAgLTIyOSw3ICsyNTAsNyBAQCBzdGF0aWMgaW5saW5lIEpTVmFs
dWUganNUZXN0RE9NSklUQm9vbGVhbkF0dHJHZXR0ZXIoRXhlY1N0YXRlJiBzdGF0ZSwgSlNUZXN0
RE9NSgogfQogCiBUZXN0RE9NSklUQm9vbGVhbkF0dHJET01KSVQ6OlRlc3RET01KSVRCb29sZWFu
QXR0ckRPTUpJVCgpCi0gICAgOiBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVyKGpzVGVzdERPTUpJ
VEJvb2xlYW5BdHRyLCBudWxscHRyLCBKU1Rlc3RET01KSVQ6OmluZm8oKSwgSlNDOjpTcGVjQm9v
bGVhbikKKyAgICA6IEpTQzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIoanNUZXN0RE9NSklUQm9vbGVh
bkF0dHIsIG51bGxwdHIsIEpTVGVzdERPTUpJVDo6aW5mbygpLCBET01KSVQ6OklETFJlc3VsdFR5
cGVGaWx0ZXI8SURMQm9vbGVhbj46OnZhbHVlKQogewogfQogCkBAIC0yNTYsNyArMjc3LDcgQEAg
c3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdERPTUpJVEJ5dGVBdHRyR2V0dGVyKEV4ZWNTdGF0
ZSYgc3RhdGUsIEpTVGVzdERPTUpJVCYKIH0KIAogVGVzdERPTUpJVEJ5dGVBdHRyRE9NSklUOjpU
ZXN0RE9NSklUQnl0ZUF0dHJET01KSVQoKQotICAgIDogSlNDOjpET01KSVQ6OkdldHRlclNldHRl
cihqc1Rlc3RET01KSVRCeXRlQXR0ciwgbnVsbHB0ciwgSlNUZXN0RE9NSklUOjppbmZvKCksIEpT
Qzo6U3BlY0ludDMyT25seSkKKyAgICA6IEpTQzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIoanNUZXN0
RE9NSklUQnl0ZUF0dHIsIG51bGxwdHIsIEpTVGVzdERPTUpJVDo6aW5mbygpLCBET01KSVQ6OklE
TFJlc3VsdFR5cGVGaWx0ZXI8SURMQnl0ZT46OnZhbHVlKQogewogfQogCkBAIC0yODMsNyArMzA0
LDcgQEAgc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdERPTUpJVE9jdGV0QXR0ckdldHRlcihF
eGVjU3RhdGUmIHN0YXRlLCBKU1Rlc3RET01KSVQKIH0KIAogVGVzdERPTUpJVE9jdGV0QXR0ckRP
TUpJVDo6VGVzdERPTUpJVE9jdGV0QXR0ckRPTUpJVCgpCi0gICAgOiBKU0M6OkRPTUpJVDo6R2V0
dGVyU2V0dGVyKGpzVGVzdERPTUpJVE9jdGV0QXR0ciwgbnVsbHB0ciwgSlNUZXN0RE9NSklUOjpp
bmZvKCksIEpTQzo6U3BlY0ludDMyT25seSkKKyAgICA6IEpTQzo6RE9NSklUOjpHZXR0ZXJTZXR0
ZXIoanNUZXN0RE9NSklUT2N0ZXRBdHRyLCBudWxscHRyLCBKU1Rlc3RET01KSVQ6OmluZm8oKSwg
RE9NSklUOjpJRExSZXN1bHRUeXBlRmlsdGVyPElETE9jdGV0Pjo6dmFsdWUpCiB7CiB9CiAKQEAg
LTMxMCw3ICszMzEsNyBAQCBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0RE9NSklUU2hvcnRB
dHRyR2V0dGVyKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVGVzdERPTUpJVAogfQogCiBUZXN0RE9NSklU
U2hvcnRBdHRyRE9NSklUOjpUZXN0RE9NSklUU2hvcnRBdHRyRE9NSklUKCkKLSAgICA6IEpTQzo6
RE9NSklUOjpHZXR0ZXJTZXR0ZXIoanNUZXN0RE9NSklUU2hvcnRBdHRyLCBudWxscHRyLCBKU1Rl
c3RET01KSVQ6OmluZm8oKSwgSlNDOjpTcGVjSW50MzJPbmx5KQorICAgIDogSlNDOjpET01KSVQ6
OkdldHRlclNldHRlcihqc1Rlc3RET01KSVRTaG9ydEF0dHIsIG51bGxwdHIsIEpTVGVzdERPTUpJ
VDo6aW5mbygpLCBET01KSVQ6OklETFJlc3VsdFR5cGVGaWx0ZXI8SURMU2hvcnQ+Ojp2YWx1ZSkK
IHsKIH0KIApAQCAtMzM3LDcgKzM1OCw3IEBAIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RE
T01KSVRVbnNpZ25lZFNob3J0QXR0ckdldHRlcihFeGVjU3RhdGUmIHN0YXRlLCBKU1RlCiB9CiAK
IFRlc3RET01KSVRVbnNpZ25lZFNob3J0QXR0ckRPTUpJVDo6VGVzdERPTUpJVFVuc2lnbmVkU2hv
cnRBdHRyRE9NSklUKCkKLSAgICA6IEpTQzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIoanNUZXN0RE9N
SklUVW5zaWduZWRTaG9ydEF0dHIsIG51bGxwdHIsIEpTVGVzdERPTUpJVDo6aW5mbygpLCBKU0M6
OlNwZWNJbnQzMk9ubHkpCisgICAgOiBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVyKGpzVGVzdERP
TUpJVFVuc2lnbmVkU2hvcnRBdHRyLCBudWxscHRyLCBKU1Rlc3RET01KSVQ6OmluZm8oKSwgRE9N
SklUOjpJRExSZXN1bHRUeXBlRmlsdGVyPElETFVuc2lnbmVkU2hvcnQ+Ojp2YWx1ZSkKIHsKIH0K
IApAQCAtMzY0LDcgKzM4NSw3IEBAIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RET01KSVRM
b25nQXR0ckdldHRlcihFeGVjU3RhdGUmIHN0YXRlLCBKU1Rlc3RET01KSVQmCiB9CiAKIFRlc3RE
T01KSVRMb25nQXR0ckRPTUpJVDo6VGVzdERPTUpJVExvbmdBdHRyRE9NSklUKCkKLSAgICA6IEpT
Qzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIoanNUZXN0RE9NSklUTG9uZ0F0dHIsIG51bGxwdHIsIEpT
VGVzdERPTUpJVDo6aW5mbygpLCBKU0M6OlNwZWNJbnQzMk9ubHkpCisgICAgOiBKU0M6OkRPTUpJ
VDo6R2V0dGVyU2V0dGVyKGpzVGVzdERPTUpJVExvbmdBdHRyLCBudWxscHRyLCBKU1Rlc3RET01K
SVQ6OmluZm8oKSwgRE9NSklUOjpJRExSZXN1bHRUeXBlRmlsdGVyPElETExvbmc+Ojp2YWx1ZSkK
IHsKIH0KIApAQCAtMzkxLDcgKzQxMiw3IEBAIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RE
T01KSVRVbnNpZ25lZExvbmdBdHRyR2V0dGVyKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVGVzCiB9CiAK
IFRlc3RET01KSVRVbnNpZ25lZExvbmdBdHRyRE9NSklUOjpUZXN0RE9NSklUVW5zaWduZWRMb25n
QXR0ckRPTUpJVCgpCi0gICAgOiBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVyKGpzVGVzdERPTUpJ
VFVuc2lnbmVkTG9uZ0F0dHIsIG51bGxwdHIsIEpTVGVzdERPTUpJVDo6aW5mbygpLCBKU0M6OlNw
ZWNCeXRlY29kZU51bWJlcikKKyAgICA6IEpTQzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIoanNUZXN0
RE9NSklUVW5zaWduZWRMb25nQXR0ciwgbnVsbHB0ciwgSlNUZXN0RE9NSklUOjppbmZvKCksIERP
TUpJVDo6SURMUmVzdWx0VHlwZUZpbHRlcjxJRExVbnNpZ25lZExvbmc+Ojp2YWx1ZSkKIHsKIH0K
IApAQCAtNDE4LDcgKzQzOSw3IEBAIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RET01KSVRM
b25nTG9uZ0F0dHJHZXR0ZXIoRXhlY1N0YXRlJiBzdGF0ZSwgSlNUZXN0RE9NCiB9CiAKIFRlc3RE
T01KSVRMb25nTG9uZ0F0dHJET01KSVQ6OlRlc3RET01KSVRMb25nTG9uZ0F0dHJET01KSVQoKQot
ICAgIDogSlNDOjpET01KSVQ6OkdldHRlclNldHRlcihqc1Rlc3RET01KSVRMb25nTG9uZ0F0dHIs
IG51bGxwdHIsIEpTVGVzdERPTUpJVDo6aW5mbygpLCBKU0M6OlNwZWNCeXRlY29kZU51bWJlcikK
KyAgICA6IEpTQzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIoanNUZXN0RE9NSklUTG9uZ0xvbmdBdHRy
LCBudWxscHRyLCBKU1Rlc3RET01KSVQ6OmluZm8oKSwgRE9NSklUOjpJRExSZXN1bHRUeXBlRmls
dGVyPElETExvbmdMb25nPjo6dmFsdWUpCiB7CiB9CiAKQEAgLTQ0NSw3ICs0NjYsNyBAQCBzdGF0
aWMgaW5saW5lIEpTVmFsdWUganNUZXN0RE9NSklUVW5zaWduZWRMb25nTG9uZ0F0dHJHZXR0ZXIo
RXhlY1N0YXRlJiBzdGF0ZSwgSgogfQogCiBUZXN0RE9NSklUVW5zaWduZWRMb25nTG9uZ0F0dHJE
T01KSVQ6OlRlc3RET01KSVRVbnNpZ25lZExvbmdMb25nQXR0ckRPTUpJVCgpCi0gICAgOiBKU0M6
OkRPTUpJVDo6R2V0dGVyU2V0dGVyKGpzVGVzdERPTUpJVFVuc2lnbmVkTG9uZ0xvbmdBdHRyLCBu
dWxscHRyLCBKU1Rlc3RET01KSVQ6OmluZm8oKSwgSlNDOjpTcGVjQnl0ZWNvZGVOdW1iZXIpCisg
ICAgOiBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVyKGpzVGVzdERPTUpJVFVuc2lnbmVkTG9uZ0xv
bmdBdHRyLCBudWxscHRyLCBKU1Rlc3RET01KSVQ6OmluZm8oKSwgRE9NSklUOjpJRExSZXN1bHRU
eXBlRmlsdGVyPElETFVuc2lnbmVkTG9uZ0xvbmc+Ojp2YWx1ZSkKIHsKIH0KIApAQCAtNDcyLDcg
KzQ5Myw3IEBAIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RET01KSVRGbG9hdEF0dHJHZXR0
ZXIoRXhlY1N0YXRlJiBzdGF0ZSwgSlNUZXN0RE9NSklUCiB9CiAKIFRlc3RET01KSVRGbG9hdEF0
dHJET01KSVQ6OlRlc3RET01KSVRGbG9hdEF0dHJET01KSVQoKQotICAgIDogSlNDOjpET01KSVQ6
OkdldHRlclNldHRlcihqc1Rlc3RET01KSVRGbG9hdEF0dHIsIG51bGxwdHIsIEpTVGVzdERPTUpJ
VDo6aW5mbygpLCBKU0M6OlNwZWNCeXRlY29kZU51bWJlcikKKyAgICA6IEpTQzo6RE9NSklUOjpH
ZXR0ZXJTZXR0ZXIoanNUZXN0RE9NSklURmxvYXRBdHRyLCBudWxscHRyLCBKU1Rlc3RET01KSVQ6
OmluZm8oKSwgRE9NSklUOjpJRExSZXN1bHRUeXBlRmlsdGVyPElETEZsb2F0Pjo6dmFsdWUpCiB7
CiB9CiAKQEAgLTQ5OSw3ICs1MjAsNyBAQCBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0RE9N
SklUVW5yZXN0cmljdGVkRmxvYXRBdHRyR2V0dGVyKEV4ZWNTdGF0ZSYgc3RhdGUsCiB9CiAKIFRl
c3RET01KSVRVbnJlc3RyaWN0ZWRGbG9hdEF0dHJET01KSVQ6OlRlc3RET01KSVRVbnJlc3RyaWN0
ZWRGbG9hdEF0dHJET01KSVQoKQotICAgIDogSlNDOjpET01KSVQ6OkdldHRlclNldHRlcihqc1Rl
c3RET01KSVRVbnJlc3RyaWN0ZWRGbG9hdEF0dHIsIG51bGxwdHIsIEpTVGVzdERPTUpJVDo6aW5m
bygpLCBKU0M6OlNwZWNCeXRlY29kZU51bWJlcikKKyAgICA6IEpTQzo6RE9NSklUOjpHZXR0ZXJT
ZXR0ZXIoanNUZXN0RE9NSklUVW5yZXN0cmljdGVkRmxvYXRBdHRyLCBudWxscHRyLCBKU1Rlc3RE
T01KSVQ6OmluZm8oKSwgRE9NSklUOjpJRExSZXN1bHRUeXBlRmlsdGVyPElETFVucmVzdHJpY3Rl
ZEZsb2F0Pjo6dmFsdWUpCiB7CiB9CiAKQEAgLTUyNiw3ICs1NDcsNyBAQCBzdGF0aWMgaW5saW5l
IEpTVmFsdWUganNUZXN0RE9NSklURG91YmxlQXR0ckdldHRlcihFeGVjU3RhdGUmIHN0YXRlLCBK
U1Rlc3RET01KSQogfQogCiBUZXN0RE9NSklURG91YmxlQXR0ckRPTUpJVDo6VGVzdERPTUpJVERv
dWJsZUF0dHJET01KSVQoKQotICAgIDogSlNDOjpET01KSVQ6OkdldHRlclNldHRlcihqc1Rlc3RE
T01KSVREb3VibGVBdHRyLCBudWxscHRyLCBKU1Rlc3RET01KSVQ6OmluZm8oKSwgSlNDOjpTcGVj
Qnl0ZWNvZGVOdW1iZXIpCisgICAgOiBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVyKGpzVGVzdERP
TUpJVERvdWJsZUF0dHIsIG51bGxwdHIsIEpTVGVzdERPTUpJVDo6aW5mbygpLCBET01KSVQ6OklE
TFJlc3VsdFR5cGVGaWx0ZXI8SURMRG91YmxlPjo6dmFsdWUpCiB7CiB9CiAKQEAgLTU1Myw3ICs1
NzQsNyBAQCBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0RE9NSklUVW5yZXN0cmljdGVkRG91
YmxlQXR0ckdldHRlcihFeGVjU3RhdGUmIHN0YXRlLAogfQogCiBUZXN0RE9NSklUVW5yZXN0cmlj
dGVkRG91YmxlQXR0ckRPTUpJVDo6VGVzdERPTUpJVFVucmVzdHJpY3RlZERvdWJsZUF0dHJET01K
SVQoKQotICAgIDogSlNDOjpET01KSVQ6OkdldHRlclNldHRlcihqc1Rlc3RET01KSVRVbnJlc3Ry
aWN0ZWREb3VibGVBdHRyLCBudWxscHRyLCBKU1Rlc3RET01KSVQ6OmluZm8oKSwgSlNDOjpTcGVj
Qnl0ZWNvZGVOdW1iZXIpCisgICAgOiBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVyKGpzVGVzdERP
TUpJVFVucmVzdHJpY3RlZERvdWJsZUF0dHIsIG51bGxwdHIsIEpTVGVzdERPTUpJVDo6aW5mbygp
LCBET01KSVQ6OklETFJlc3VsdFR5cGVGaWx0ZXI8SURMVW5yZXN0cmljdGVkRG91YmxlPjo6dmFs
dWUpCiB7CiB9CiAKQEAgLTU4MCw3ICs2MDEsNyBAQCBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNU
ZXN0RE9NSklURG9tU3RyaW5nQXR0ckdldHRlcihFeGVjU3RhdGUmIHN0YXRlLCBKU1Rlc3RETwog
fQogCiBUZXN0RE9NSklURG9tU3RyaW5nQXR0ckRPTUpJVDo6VGVzdERPTUpJVERvbVN0cmluZ0F0
dHJET01KSVQoKQotICAgIDogSlNDOjpET01KSVQ6OkdldHRlclNldHRlcihqc1Rlc3RET01KSVRE
b21TdHJpbmdBdHRyLCBudWxscHRyLCBKU1Rlc3RET01KSVQ6OmluZm8oKSwgSlNDOjpTcGVjU3Ry
aW5nKQorICAgIDogSlNDOjpET01KSVQ6OkdldHRlclNldHRlcihqc1Rlc3RET01KSVREb21TdHJp
bmdBdHRyLCBudWxscHRyLCBKU1Rlc3RET01KSVQ6OmluZm8oKSwgRE9NSklUOjpJRExSZXN1bHRU
eXBlRmlsdGVyPElETERPTVN0cmluZz46OnZhbHVlKQogewogfQogCkBAIC02MDcsNyArNjI4LDcg
QEAgc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdERPTUpJVEJ5dGVTdHJpbmdBdHRyR2V0dGVy
KEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVGVzdEQKIH0KIAogVGVzdERPTUpJVEJ5dGVTdHJpbmdBdHRy
RE9NSklUOjpUZXN0RE9NSklUQnl0ZVN0cmluZ0F0dHJET01KSVQoKQotICAgIDogSlNDOjpET01K
SVQ6OkdldHRlclNldHRlcihqc1Rlc3RET01KSVRCeXRlU3RyaW5nQXR0ciwgbnVsbHB0ciwgSlNU
ZXN0RE9NSklUOjppbmZvKCksIEpTQzo6U3BlY1N0cmluZykKKyAgICA6IEpTQzo6RE9NSklUOjpH
ZXR0ZXJTZXR0ZXIoanNUZXN0RE9NSklUQnl0ZVN0cmluZ0F0dHIsIG51bGxwdHIsIEpTVGVzdERP
TUpJVDo6aW5mbygpLCBET01KSVQ6OklETFJlc3VsdFR5cGVGaWx0ZXI8SURMQnl0ZVN0cmluZz46
OnZhbHVlKQogewogfQogCkBAIC02MzQsNyArNjU1LDcgQEAgc3RhdGljIGlubGluZSBKU1ZhbHVl
IGpzVGVzdERPTUpJVFVzdlN0cmluZ0F0dHJHZXR0ZXIoRXhlY1N0YXRlJiBzdGF0ZSwgSlNUZXN0
RE8KIH0KIAogVGVzdERPTUpJVFVzdlN0cmluZ0F0dHJET01KSVQ6OlRlc3RET01KSVRVc3ZTdHJp
bmdBdHRyRE9NSklUKCkKLSAgICA6IEpTQzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIoanNUZXN0RE9N
SklUVXN2U3RyaW5nQXR0ciwgbnVsbHB0ciwgSlNUZXN0RE9NSklUOjppbmZvKCksIEpTQzo6U3Bl
Y1N0cmluZykKKyAgICA6IEpTQzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIoanNUZXN0RE9NSklUVXN2
U3RyaW5nQXR0ciwgbnVsbHB0ciwgSlNUZXN0RE9NSklUOjppbmZvKCksIERPTUpJVDo6SURMUmVz
dWx0VHlwZUZpbHRlcjxJRExVU1ZTdHJpbmc+Ojp2YWx1ZSkKIHsKIH0KIApAQCAtNjYxLDcgKzY4
Miw3IEBAIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RET01KSVROb2RlQXR0ckdldHRlcihF
eGVjU3RhdGUmIHN0YXRlLCBKU1Rlc3RET01KSVQmCiB9CiAKIFRlc3RET01KSVROb2RlQXR0ckRP
TUpJVDo6VGVzdERPTUpJVE5vZGVBdHRyRE9NSklUKCkKLSAgICA6IEpTQzo6RE9NSklUOjpHZXR0
ZXJTZXR0ZXIoanNUZXN0RE9NSklUTm9kZUF0dHIsIG51bGxwdHIsIEpTVGVzdERPTUpJVDo6aW5m
bygpLCBTcGVjSGVhcFRvcCkKKyAgICA6IEpTQzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIoanNUZXN0
RE9NSklUTm9kZUF0dHIsIG51bGxwdHIsIEpTVGVzdERPTUpJVDo6aW5mbygpLCBET01KSVQ6OklE
TFJlc3VsdFR5cGVGaWx0ZXI8SURMSW50ZXJmYWNlPE5vZGU+Pjo6dmFsdWUpCiB7CiB9CiAKQEAg
LTY4OCw3ICs3MDksNyBAQCBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0RE9NSklUQm9vbGVh
bk51bGxhYmxlQXR0ckdldHRlcihFeGVjU3RhdGUmIHN0YXRlLCBKUwogfQogCiBUZXN0RE9NSklU
Qm9vbGVhbk51bGxhYmxlQXR0ckRPTUpJVDo6VGVzdERPTUpJVEJvb2xlYW5OdWxsYWJsZUF0dHJE
T01KSVQoKQotICAgIDogSlNDOjpET01KSVQ6OkdldHRlclNldHRlcihqc1Rlc3RET01KSVRCb29s
ZWFuTnVsbGFibGVBdHRyLCBudWxscHRyLCBKU1Rlc3RET01KSVQ6OmluZm8oKSwgKEpTQzo6U3Bl
Y0Jvb2xlYW4gfCBKU0M6OlNwZWNPdGhlcikpCisgICAgOiBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0
dGVyKGpzVGVzdERPTUpJVEJvb2xlYW5OdWxsYWJsZUF0dHIsIG51bGxwdHIsIEpTVGVzdERPTUpJ
VDo6aW5mbygpLCBET01KSVQ6OklETFJlc3VsdFR5cGVGaWx0ZXI8SURMTnVsbGFibGU8SURMQm9v
bGVhbj4+Ojp2YWx1ZSkKIHsKIH0KIApAQCAtNzE1LDcgKzczNiw3IEBAIHN0YXRpYyBpbmxpbmUg
SlNWYWx1ZSBqc1Rlc3RET01KSVRCeXRlTnVsbGFibGVBdHRyR2V0dGVyKEV4ZWNTdGF0ZSYgc3Rh
dGUsIEpTVGVzCiB9CiAKIFRlc3RET01KSVRCeXRlTnVsbGFibGVBdHRyRE9NSklUOjpUZXN0RE9N
SklUQnl0ZU51bGxhYmxlQXR0ckRPTUpJVCgpCi0gICAgOiBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0
dGVyKGpzVGVzdERPTUpJVEJ5dGVOdWxsYWJsZUF0dHIsIG51bGxwdHIsIEpTVGVzdERPTUpJVDo6
aW5mbygpLCAoSlNDOjpTcGVjSW50MzJPbmx5IHwgSlNDOjpTcGVjT3RoZXIpKQorICAgIDogSlND
OjpET01KSVQ6OkdldHRlclNldHRlcihqc1Rlc3RET01KSVRCeXRlTnVsbGFibGVBdHRyLCBudWxs
cHRyLCBKU1Rlc3RET01KSVQ6OmluZm8oKSwgRE9NSklUOjpJRExSZXN1bHRUeXBlRmlsdGVyPElE
TE51bGxhYmxlPElETEJ5dGU+Pjo6dmFsdWUpCiB7CiB9CiAKQEAgLTc0Miw3ICs3NjMsNyBAQCBz
dGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0RE9NSklUT2N0ZXROdWxsYWJsZUF0dHJHZXR0ZXIo
RXhlY1N0YXRlJiBzdGF0ZSwgSlNUZQogfQogCiBUZXN0RE9NSklUT2N0ZXROdWxsYWJsZUF0dHJE
T01KSVQ6OlRlc3RET01KSVRPY3RldE51bGxhYmxlQXR0ckRPTUpJVCgpCi0gICAgOiBKU0M6OkRP
TUpJVDo6R2V0dGVyU2V0dGVyKGpzVGVzdERPTUpJVE9jdGV0TnVsbGFibGVBdHRyLCBudWxscHRy
LCBKU1Rlc3RET01KSVQ6OmluZm8oKSwgKEpTQzo6U3BlY0ludDMyT25seSB8IEpTQzo6U3BlY090
aGVyKSkKKyAgICA6IEpTQzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIoanNUZXN0RE9NSklUT2N0ZXRO
dWxsYWJsZUF0dHIsIG51bGxwdHIsIEpTVGVzdERPTUpJVDo6aW5mbygpLCBET01KSVQ6OklETFJl
c3VsdFR5cGVGaWx0ZXI8SURMTnVsbGFibGU8SURMT2N0ZXQ+Pjo6dmFsdWUpCiB7CiB9CiAKQEAg
LTc2OSw3ICs3OTAsNyBAQCBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0RE9NSklUU2hvcnRO
dWxsYWJsZUF0dHJHZXR0ZXIoRXhlY1N0YXRlJiBzdGF0ZSwgSlNUZQogfQogCiBUZXN0RE9NSklU
U2hvcnROdWxsYWJsZUF0dHJET01KSVQ6OlRlc3RET01KSVRTaG9ydE51bGxhYmxlQXR0ckRPTUpJ
VCgpCi0gICAgOiBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVyKGpzVGVzdERPTUpJVFNob3J0TnVs
bGFibGVBdHRyLCBudWxscHRyLCBKU1Rlc3RET01KSVQ6OmluZm8oKSwgKEpTQzo6U3BlY0ludDMy
T25seSB8IEpTQzo6U3BlY090aGVyKSkKKyAgICA6IEpTQzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIo
anNUZXN0RE9NSklUU2hvcnROdWxsYWJsZUF0dHIsIG51bGxwdHIsIEpTVGVzdERPTUpJVDo6aW5m
bygpLCBET01KSVQ6OklETFJlc3VsdFR5cGVGaWx0ZXI8SURMTnVsbGFibGU8SURMU2hvcnQ+Pjo6
dmFsdWUpCiB7CiB9CiAKQEAgLTc5Niw3ICs4MTcsNyBAQCBzdGF0aWMgaW5saW5lIEpTVmFsdWUg
anNUZXN0RE9NSklUVW5zaWduZWRTaG9ydE51bGxhYmxlQXR0ckdldHRlcihFeGVjU3RhdGUmIHN0
YQogfQogCiBUZXN0RE9NSklUVW5zaWduZWRTaG9ydE51bGxhYmxlQXR0ckRPTUpJVDo6VGVzdERP
TUpJVFVuc2lnbmVkU2hvcnROdWxsYWJsZUF0dHJET01KSVQoKQotICAgIDogSlNDOjpET01KSVQ6
OkdldHRlclNldHRlcihqc1Rlc3RET01KSVRVbnNpZ25lZFNob3J0TnVsbGFibGVBdHRyLCBudWxs
cHRyLCBKU1Rlc3RET01KSVQ6OmluZm8oKSwgKEpTQzo6U3BlY0ludDMyT25seSB8IEpTQzo6U3Bl
Y090aGVyKSkKKyAgICA6IEpTQzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIoanNUZXN0RE9NSklUVW5z
aWduZWRTaG9ydE51bGxhYmxlQXR0ciwgbnVsbHB0ciwgSlNUZXN0RE9NSklUOjppbmZvKCksIERP
TUpJVDo6SURMUmVzdWx0VHlwZUZpbHRlcjxJRExOdWxsYWJsZTxJRExVbnNpZ25lZFNob3J0Pj46
OnZhbHVlKQogewogfQogCkBAIC04MjMsNyArODQ0LDcgQEAgc3RhdGljIGlubGluZSBKU1ZhbHVl
IGpzVGVzdERPTUpJVExvbmdOdWxsYWJsZUF0dHJHZXR0ZXIoRXhlY1N0YXRlJiBzdGF0ZSwgSlNU
ZXMKIH0KIAogVGVzdERPTUpJVExvbmdOdWxsYWJsZUF0dHJET01KSVQ6OlRlc3RET01KSVRMb25n
TnVsbGFibGVBdHRyRE9NSklUKCkKLSAgICA6IEpTQzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIoanNU
ZXN0RE9NSklUTG9uZ051bGxhYmxlQXR0ciwgbnVsbHB0ciwgSlNUZXN0RE9NSklUOjppbmZvKCks
IChKU0M6OlNwZWNJbnQzMk9ubHkgfCBKU0M6OlNwZWNPdGhlcikpCisgICAgOiBKU0M6OkRPTUpJ
VDo6R2V0dGVyU2V0dGVyKGpzVGVzdERPTUpJVExvbmdOdWxsYWJsZUF0dHIsIG51bGxwdHIsIEpT
VGVzdERPTUpJVDo6aW5mbygpLCBET01KSVQ6OklETFJlc3VsdFR5cGVGaWx0ZXI8SURMTnVsbGFi
bGU8SURMTG9uZz4+Ojp2YWx1ZSkKIHsKIH0KIApAQCAtODUwLDcgKzg3MSw3IEBAIHN0YXRpYyBp
bmxpbmUgSlNWYWx1ZSBqc1Rlc3RET01KSVRVbnNpZ25lZExvbmdOdWxsYWJsZUF0dHJHZXR0ZXIo
RXhlY1N0YXRlJiBzdGF0CiB9CiAKIFRlc3RET01KSVRVbnNpZ25lZExvbmdOdWxsYWJsZUF0dHJE
T01KSVQ6OlRlc3RET01KSVRVbnNpZ25lZExvbmdOdWxsYWJsZUF0dHJET01KSVQoKQotICAgIDog
SlNDOjpET01KSVQ6OkdldHRlclNldHRlcihqc1Rlc3RET01KSVRVbnNpZ25lZExvbmdOdWxsYWJs
ZUF0dHIsIG51bGxwdHIsIEpTVGVzdERPTUpJVDo6aW5mbygpLCAoSlNDOjpTcGVjQnl0ZWNvZGVO
dW1iZXIgfCBKU0M6OlNwZWNPdGhlcikpCisgICAgOiBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVy
KGpzVGVzdERPTUpJVFVuc2lnbmVkTG9uZ051bGxhYmxlQXR0ciwgbnVsbHB0ciwgSlNUZXN0RE9N
SklUOjppbmZvKCksIERPTUpJVDo6SURMUmVzdWx0VHlwZUZpbHRlcjxJRExOdWxsYWJsZTxJRExV
bnNpZ25lZExvbmc+Pjo6dmFsdWUpCiB7CiB9CiAKQEAgLTg3Nyw3ICs4OTgsNyBAQCBzdGF0aWMg
aW5saW5lIEpTVmFsdWUganNUZXN0RE9NSklUTG9uZ0xvbmdOdWxsYWJsZUF0dHJHZXR0ZXIoRXhl
Y1N0YXRlJiBzdGF0ZSwgSgogfQogCiBUZXN0RE9NSklUTG9uZ0xvbmdOdWxsYWJsZUF0dHJET01K
SVQ6OlRlc3RET01KSVRMb25nTG9uZ051bGxhYmxlQXR0ckRPTUpJVCgpCi0gICAgOiBKU0M6OkRP
TUpJVDo6R2V0dGVyU2V0dGVyKGpzVGVzdERPTUpJVExvbmdMb25nTnVsbGFibGVBdHRyLCBudWxs
cHRyLCBKU1Rlc3RET01KSVQ6OmluZm8oKSwgKEpTQzo6U3BlY0J5dGVjb2RlTnVtYmVyIHwgSlND
OjpTcGVjT3RoZXIpKQorICAgIDogSlNDOjpET01KSVQ6OkdldHRlclNldHRlcihqc1Rlc3RET01K
SVRMb25nTG9uZ051bGxhYmxlQXR0ciwgbnVsbHB0ciwgSlNUZXN0RE9NSklUOjppbmZvKCksIERP
TUpJVDo6SURMUmVzdWx0VHlwZUZpbHRlcjxJRExOdWxsYWJsZTxJRExMb25nTG9uZz4+Ojp2YWx1
ZSkKIHsKIH0KIApAQCAtOTA0LDcgKzkyNSw3IEBAIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rl
c3RET01KSVRVbnNpZ25lZExvbmdMb25nTnVsbGFibGVBdHRyR2V0dGVyKEV4ZWNTdGF0ZSYKIH0K
IAogVGVzdERPTUpJVFVuc2lnbmVkTG9uZ0xvbmdOdWxsYWJsZUF0dHJET01KSVQ6OlRlc3RET01K
SVRVbnNpZ25lZExvbmdMb25nTnVsbGFibGVBdHRyRE9NSklUKCkKLSAgICA6IEpTQzo6RE9NSklU
OjpHZXR0ZXJTZXR0ZXIoanNUZXN0RE9NSklUVW5zaWduZWRMb25nTG9uZ051bGxhYmxlQXR0ciwg
bnVsbHB0ciwgSlNUZXN0RE9NSklUOjppbmZvKCksIChKU0M6OlNwZWNCeXRlY29kZU51bWJlciB8
IEpTQzo6U3BlY090aGVyKSkKKyAgICA6IEpTQzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIoanNUZXN0
RE9NSklUVW5zaWduZWRMb25nTG9uZ051bGxhYmxlQXR0ciwgbnVsbHB0ciwgSlNUZXN0RE9NSklU
OjppbmZvKCksIERPTUpJVDo6SURMUmVzdWx0VHlwZUZpbHRlcjxJRExOdWxsYWJsZTxJRExVbnNp
Z25lZExvbmdMb25nPj46OnZhbHVlKQogewogfQogCkBAIC05MzEsNyArOTUyLDcgQEAgc3RhdGlj
IGlubGluZSBKU1ZhbHVlIGpzVGVzdERPTUpJVEZsb2F0TnVsbGFibGVBdHRyR2V0dGVyKEV4ZWNT
dGF0ZSYgc3RhdGUsIEpTVGUKIH0KIAogVGVzdERPTUpJVEZsb2F0TnVsbGFibGVBdHRyRE9NSklU
OjpUZXN0RE9NSklURmxvYXROdWxsYWJsZUF0dHJET01KSVQoKQotICAgIDogSlNDOjpET01KSVQ6
OkdldHRlclNldHRlcihqc1Rlc3RET01KSVRGbG9hdE51bGxhYmxlQXR0ciwgbnVsbHB0ciwgSlNU
ZXN0RE9NSklUOjppbmZvKCksIChKU0M6OlNwZWNCeXRlY29kZU51bWJlciB8IEpTQzo6U3BlY090
aGVyKSkKKyAgICA6IEpTQzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIoanNUZXN0RE9NSklURmxvYXRO
dWxsYWJsZUF0dHIsIG51bGxwdHIsIEpTVGVzdERPTUpJVDo6aW5mbygpLCBET01KSVQ6OklETFJl
c3VsdFR5cGVGaWx0ZXI8SURMTnVsbGFibGU8SURMRmxvYXQ+Pjo6dmFsdWUpCiB7CiB9CiAKQEAg
LTk1OCw3ICs5NzksNyBAQCBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0RE9NSklUVW5yZXN0
cmljdGVkRmxvYXROdWxsYWJsZUF0dHJHZXR0ZXIoRXhlY1N0YXRlJgogfQogCiBUZXN0RE9NSklU
VW5yZXN0cmljdGVkRmxvYXROdWxsYWJsZUF0dHJET01KSVQ6OlRlc3RET01KSVRVbnJlc3RyaWN0
ZWRGbG9hdE51bGxhYmxlQXR0ckRPTUpJVCgpCi0gICAgOiBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0
dGVyKGpzVGVzdERPTUpJVFVucmVzdHJpY3RlZEZsb2F0TnVsbGFibGVBdHRyLCBudWxscHRyLCBK
U1Rlc3RET01KSVQ6OmluZm8oKSwgKEpTQzo6U3BlY0J5dGVjb2RlTnVtYmVyIHwgSlNDOjpTcGVj
T3RoZXIpKQorICAgIDogSlNDOjpET01KSVQ6OkdldHRlclNldHRlcihqc1Rlc3RET01KSVRVbnJl
c3RyaWN0ZWRGbG9hdE51bGxhYmxlQXR0ciwgbnVsbHB0ciwgSlNUZXN0RE9NSklUOjppbmZvKCks
IERPTUpJVDo6SURMUmVzdWx0VHlwZUZpbHRlcjxJRExOdWxsYWJsZTxJRExVbnJlc3RyaWN0ZWRG
bG9hdD4+Ojp2YWx1ZSkKIHsKIH0KIApAQCAtOTg1LDcgKzEwMDYsNyBAQCBzdGF0aWMgaW5saW5l
IEpTVmFsdWUganNUZXN0RE9NSklURG91YmxlTnVsbGFibGVBdHRyR2V0dGVyKEV4ZWNTdGF0ZSYg
c3RhdGUsIEpTVAogfQogCiBUZXN0RE9NSklURG91YmxlTnVsbGFibGVBdHRyRE9NSklUOjpUZXN0
RE9NSklURG91YmxlTnVsbGFibGVBdHRyRE9NSklUKCkKLSAgICA6IEpTQzo6RE9NSklUOjpHZXR0
ZXJTZXR0ZXIoanNUZXN0RE9NSklURG91YmxlTnVsbGFibGVBdHRyLCBudWxscHRyLCBKU1Rlc3RE
T01KSVQ6OmluZm8oKSwgKEpTQzo6U3BlY0J5dGVjb2RlTnVtYmVyIHwgSlNDOjpTcGVjT3RoZXIp
KQorICAgIDogSlNDOjpET01KSVQ6OkdldHRlclNldHRlcihqc1Rlc3RET01KSVREb3VibGVOdWxs
YWJsZUF0dHIsIG51bGxwdHIsIEpTVGVzdERPTUpJVDo6aW5mbygpLCBET01KSVQ6OklETFJlc3Vs
dFR5cGVGaWx0ZXI8SURMTnVsbGFibGU8SURMRG91YmxlPj46OnZhbHVlKQogewogfQogCkBAIC0x
MDEyLDcgKzEwMzMsNyBAQCBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0RE9NSklUVW5yZXN0
cmljdGVkRG91YmxlTnVsbGFibGVBdHRyR2V0dGVyKEV4ZWNTdGF0ZQogfQogCiBUZXN0RE9NSklU
VW5yZXN0cmljdGVkRG91YmxlTnVsbGFibGVBdHRyRE9NSklUOjpUZXN0RE9NSklUVW5yZXN0cmlj
dGVkRG91YmxlTnVsbGFibGVBdHRyRE9NSklUKCkKLSAgICA6IEpTQzo6RE9NSklUOjpHZXR0ZXJT
ZXR0ZXIoanNUZXN0RE9NSklUVW5yZXN0cmljdGVkRG91YmxlTnVsbGFibGVBdHRyLCBudWxscHRy
LCBKU1Rlc3RET01KSVQ6OmluZm8oKSwgKEpTQzo6U3BlY0J5dGVjb2RlTnVtYmVyIHwgSlNDOjpT
cGVjT3RoZXIpKQorICAgIDogSlNDOjpET01KSVQ6OkdldHRlclNldHRlcihqc1Rlc3RET01KSVRV
bnJlc3RyaWN0ZWREb3VibGVOdWxsYWJsZUF0dHIsIG51bGxwdHIsIEpTVGVzdERPTUpJVDo6aW5m
bygpLCBET01KSVQ6OklETFJlc3VsdFR5cGVGaWx0ZXI8SURMTnVsbGFibGU8SURMVW5yZXN0cmlj
dGVkRG91YmxlPj46OnZhbHVlKQogewogfQogCkBAIC0xMDM5LDcgKzEwNjAsNyBAQCBzdGF0aWMg
aW5saW5lIEpTVmFsdWUganNUZXN0RE9NSklURG9tU3RyaW5nTnVsbGFibGVBdHRyR2V0dGVyKEV4
ZWNTdGF0ZSYgc3RhdGUsCiB9CiAKIFRlc3RET01KSVREb21TdHJpbmdOdWxsYWJsZUF0dHJET01K
SVQ6OlRlc3RET01KSVREb21TdHJpbmdOdWxsYWJsZUF0dHJET01KSVQoKQotICAgIDogSlNDOjpE
T01KSVQ6OkdldHRlclNldHRlcihqc1Rlc3RET01KSVREb21TdHJpbmdOdWxsYWJsZUF0dHIsIG51
bGxwdHIsIEpTVGVzdERPTUpJVDo6aW5mbygpLCAoSlNDOjpTcGVjU3RyaW5nIHwgSlNDOjpTcGVj
T3RoZXIpKQorICAgIDogSlNDOjpET01KSVQ6OkdldHRlclNldHRlcihqc1Rlc3RET01KSVREb21T
dHJpbmdOdWxsYWJsZUF0dHIsIG51bGxwdHIsIEpTVGVzdERPTUpJVDo6aW5mbygpLCBET01KSVQ6
OklETFJlc3VsdFR5cGVGaWx0ZXI8SURMTnVsbGFibGU8SURMRE9NU3RyaW5nPj46OnZhbHVlKQog
ewogfQogCkBAIC0xMDY2LDcgKzEwODcsNyBAQCBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0
RE9NSklUQnl0ZVN0cmluZ051bGxhYmxlQXR0ckdldHRlcihFeGVjU3RhdGUmIHN0YXRlLAogfQog
CiBUZXN0RE9NSklUQnl0ZVN0cmluZ051bGxhYmxlQXR0ckRPTUpJVDo6VGVzdERPTUpJVEJ5dGVT
dHJpbmdOdWxsYWJsZUF0dHJET01KSVQoKQotICAgIDogSlNDOjpET01KSVQ6OkdldHRlclNldHRl
cihqc1Rlc3RET01KSVRCeXRlU3RyaW5nTnVsbGFibGVBdHRyLCBudWxscHRyLCBKU1Rlc3RET01K
SVQ6OmluZm8oKSwgKEpTQzo6U3BlY1N0cmluZyB8IEpTQzo6U3BlY090aGVyKSkKKyAgICA6IEpT
Qzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIoanNUZXN0RE9NSklUQnl0ZVN0cmluZ051bGxhYmxlQXR0
ciwgbnVsbHB0ciwgSlNUZXN0RE9NSklUOjppbmZvKCksIERPTUpJVDo6SURMUmVzdWx0VHlwZUZp
bHRlcjxJRExOdWxsYWJsZTxJRExCeXRlU3RyaW5nPj46OnZhbHVlKQogewogfQogCkBAIC0xMDkz
LDcgKzExMTQsNyBAQCBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0RE9NSklUVXN2U3RyaW5n
TnVsbGFibGVBdHRyR2V0dGVyKEV4ZWNTdGF0ZSYgc3RhdGUsCiB9CiAKIFRlc3RET01KSVRVc3ZT
dHJpbmdOdWxsYWJsZUF0dHJET01KSVQ6OlRlc3RET01KSVRVc3ZTdHJpbmdOdWxsYWJsZUF0dHJE
T01KSVQoKQotICAgIDogSlNDOjpET01KSVQ6OkdldHRlclNldHRlcihqc1Rlc3RET01KSVRVc3ZT
dHJpbmdOdWxsYWJsZUF0dHIsIG51bGxwdHIsIEpTVGVzdERPTUpJVDo6aW5mbygpLCAoSlNDOjpT
cGVjU3RyaW5nIHwgSlNDOjpTcGVjT3RoZXIpKQorICAgIDogSlNDOjpET01KSVQ6OkdldHRlclNl
dHRlcihqc1Rlc3RET01KSVRVc3ZTdHJpbmdOdWxsYWJsZUF0dHIsIG51bGxwdHIsIEpTVGVzdERP
TUpJVDo6aW5mbygpLCBET01KSVQ6OklETFJlc3VsdFR5cGVGaWx0ZXI8SURMTnVsbGFibGU8SURM
VVNWU3RyaW5nPj46OnZhbHVlKQogewogfQogCkBAIC0xMTIwLDcgKzExNDEsNyBAQCBzdGF0aWMg
aW5saW5lIEpTVmFsdWUganNUZXN0RE9NSklUTm9kZU51bGxhYmxlQXR0ckdldHRlcihFeGVjU3Rh
dGUmIHN0YXRlLCBKU1RlcwogfQogCiBUZXN0RE9NSklUTm9kZU51bGxhYmxlQXR0ckRPTUpJVDo6
VGVzdERPTUpJVE5vZGVOdWxsYWJsZUF0dHJET01KSVQoKQotICAgIDogSlNDOjpET01KSVQ6Okdl
dHRlclNldHRlcihqc1Rlc3RET01KSVROb2RlTnVsbGFibGVBdHRyLCBudWxscHRyLCBKU1Rlc3RE
T01KSVQ6OmluZm8oKSwgU3BlY0hlYXBUb3ApCisgICAgOiBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0
dGVyKGpzVGVzdERPTUpJVE5vZGVOdWxsYWJsZUF0dHIsIG51bGxwdHIsIEpTVGVzdERPTUpJVDo6
aW5mbygpLCBET01KSVQ6OklETFJlc3VsdFR5cGVGaWx0ZXI8SURMTnVsbGFibGU8SURMSW50ZXJm
YWNlPE5vZGU+Pj46OnZhbHVlKQogewogfQogCkBAIC0xMTU5LDYgKzExODAsNDAgQEAgSlNWYWx1
ZSBKU1Rlc3RET01KSVQ6OmdldENvbnN0cnVjdG9yKFZNJiB2bSwgY29uc3QgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCkKICAgICByZXR1cm4gZ2V0RE9NQ29uc3RydWN0b3I8SlNUZXN0RE9N
SklUQ29uc3RydWN0b3I+KHZtLCAqanNDYXN0PGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xv
YmFsT2JqZWN0KSk7CiB9CiAKK3N0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rl
c3RET01KSVRQcm90b3R5cGVGdW5jdGlvbkdldEF0dHJpYnV0ZUNhbGxlcihKU0M6OkV4ZWNTdGF0
ZSosIEpTVGVzdERPTUpJVCosIEpTQzo6VGhyb3dTY29wZSYpOworCitFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGpzVGVzdERPTUpJVFByb3RvdHlwZUZ1bmN0aW9uR2V0QXR0cmlidXRlKEV4
ZWNTdGF0ZSogc3RhdGUpCit7CisgICAgcmV0dXJuIEJpbmRpbmdDYWxsZXI8SlNUZXN0RE9NSklU
Pjo6Y2FsbE9wZXJhdGlvbjxqc1Rlc3RET01KSVRQcm90b3R5cGVGdW5jdGlvbkdldEF0dHJpYnV0
ZUNhbGxlcj4oc3RhdGUsICJnZXRBdHRyaWJ1dGUiKTsKK30KKworc3RhdGljIGlubGluZSBKU0M6
OkVuY29kZWRKU1ZhbHVlIGpzVGVzdERPTUpJVFByb3RvdHlwZUZ1bmN0aW9uR2V0QXR0cmlidXRl
Q2FsbGVyKEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgSlNUZXN0RE9NSklUKiBjYXN0ZWRUaGlzLCBK
U0M6OlRocm93U2NvcGUmIHRocm93U2NvcGUpCit7CisgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsK
KyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRo
aXMtPndyYXBwZWQoKTsKKyAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmFyZ3VtZW50Q291bnQoKSA8
IDEpKQorICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlLCBjcmVh
dGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOworICAgIGF1dG8gbmFtZSA9IGNvbnZl
cnQ8SURMRE9NU3RyaW5nPigqc3RhdGUsIHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgwKSwgU3Ry
aW5nQ29udmVyc2lvbkNvbmZpZ3VyYXRpb246Ok5vcm1hbCk7CisgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKKyAgICBKU1ZhbHVlIHJlc3VsdCA9
IHRvSlM8SURMTnVsbGFibGU8SURMRE9NU3RyaW5nPj4oKnN0YXRlLCBpbXBsLmdldEF0dHJpYnV0
ZShXVEZNb3ZlKG5hbWUpKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwor
fQorCitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgdW5zYWZlSnNUZXN0RE9NSklU
UHJvdG90eXBlRnVuY3Rpb25HZXRBdHRyaWJ1dGUoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCBKU1Rl
c3RET01KSVQqIGNhc3RlZFRoaXMsIERPTUpJVDo6SURMSlNBcmd1bWVudFR5cGU8SURMRE9NU3Ry
aW5nPiBlbmNvZGVkTmFtZSkKK3sKKyAgICBVTlVTRURfUEFSQU0oc3RhdGUpOworICAgIFZNJiB2
bSA9IHN0YXRlLT52bSgpOworICAgIEpTQzo6TmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcigm
dm0sIHN0YXRlKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CisgICAgYXV0byYgaW1wbCA9IGNhc3Rl
ZFRoaXMtPndyYXBwZWQoKTsKKyAgICBhdXRvIG5hbWUgPSBET01KSVQ6OkRpcmVjdENvbnZlcnRl
cjxJRExET01TdHJpbmc+OjpkaXJlY3RDb252ZXJ0PFN0cmluZ0NvbnZlcnNpb25Db25maWd1cmF0
aW9uOjpOb3JtYWw+KCpzdGF0ZSwgZW5jb2RlZE5hbWUpOworICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CisgICAgSlNWYWx1ZSByZXN1bHQgPSB0
b0pTPElETE51bGxhYmxlPElETERPTVN0cmluZz4+KCpzdGF0ZSwgaW1wbC5nZXRBdHRyaWJ1dGUo
V1RGTW92ZShuYW1lKSkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKK30K
Kwogdm9pZCBKU1Rlc3RET01KSVQ6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90Vmlz
aXRvciYgdmlzaXRvcikKIHsKICAgICBhdXRvKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTVGVzdERP
TUpJVCo+KGNlbGwpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L1Rlc3RET01KSVQuaWRsIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L1Rlc3RET01KSVQuaWRsCmluZGV4IGJlN2VkMDRmZjYzZGU2ODZiYzg3NjQ4MjgyYjZhYWY2
NGMyNzczZTcuLmE1MzE0ODhkYzgxYzFiODc3ZjBlZTNmOTRmOGFhYjM4YWE2OTQzOWIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0RE9NSklULmlk
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdERPTUpJVC5p
ZGwKQEAgLTYzLDQgKzYzLDYgQEAgaW50ZXJmYWNlIFRlc3RET01KSVQgOiBOb2RlIHsKICAgICBb
RE9NSklUXSByZWFkb25seSBhdHRyaWJ1dGUgQnl0ZVN0cmluZz8gYnl0ZVN0cmluZ051bGxhYmxl
QXR0cjsKICAgICBbRE9NSklUXSByZWFkb25seSBhdHRyaWJ1dGUgVVNWU3RyaW5nPyB1c3ZTdHJp
bmdOdWxsYWJsZUF0dHI7CiAgICAgW0RPTUpJVF0gcmVhZG9ubHkgYXR0cmlidXRlIE5vZGU/IG5v
ZGVOdWxsYWJsZUF0dHI7CisKKyAgICBbRE9NSklUPVNpZ25hdHVyZV0gRE9NU3RyaW5nPyBnZXRB
dHRyaWJ1dGUoRE9NU3RyaW5nIG5hbWUpOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9FbGVtZW50LmlkbCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmlkbAppbmRleCA3
MDU2MTczOGI5NzQ5YThkNzRhMGYxN2NhNjNhN2Y4ZmYxOTVlMWM2Li40ODhjOTkxYjRiYTY2YjUy
NDg4MzgwMjE2MDFjMGMwZjFkYTMyMDJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20v
RWxlbWVudC5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaWRsCkBAIC0yNiwy
MCArMjYsMjAgQEAKIF0gaW50ZXJmYWNlIEVsZW1lbnQgOiBOb2RlIHsKICAgICByZWFkb25seSBh
dHRyaWJ1dGUgRE9NU3RyaW5nPyB0YWdOYW1lOwogCi0gICAgRE9NU3RyaW5nPyBnZXRBdHRyaWJ1
dGUoRE9NU3RyaW5nIG5hbWUpOworICAgIFtET01KSVQ9U2lnbmF0dXJlXSBET01TdHJpbmc/IGdl
dEF0dHJpYnV0ZShET01TdHJpbmcgbmFtZSk7CiAKICAgICBbQ0VSZWFjdGlvbnMsIE1heVRocm93
RXhjZXB0aW9uXSB2b2lkIHNldEF0dHJpYnV0ZShET01TdHJpbmcgbmFtZSwgRE9NU3RyaW5nIHZh
bHVlKTsKIAogICAgIFtDRVJlYWN0aW9uc10gdm9pZCByZW1vdmVBdHRyaWJ1dGUoRE9NU3RyaW5n
IG5hbWUpOwotICAgIEF0dHI/IGdldEF0dHJpYnV0ZU5vZGUoRE9NU3RyaW5nIG5hbWUpOworICAg
IFtET01KSVQ9U2lnbmF0dXJlXSBBdHRyPyBnZXRBdHRyaWJ1dGVOb2RlKERPTVN0cmluZyBuYW1l
KTsKIAogICAgIFtDRVJlYWN0aW9ucywgTWF5VGhyb3dFeGNlcHRpb25dIEF0dHI/IHNldEF0dHJp
YnV0ZU5vZGUoQXR0ciBuZXdBdHRyKTsKICAgICBbQ0VSZWFjdGlvbnMsIE1heVRocm93RXhjZXB0
aW9uXSBBdHRyIHJlbW92ZUF0dHJpYnV0ZU5vZGUoQXR0ciBvbGRBdHRyKTsKIAotICAgIEhUTUxD
b2xsZWN0aW9uIGdldEVsZW1lbnRzQnlUYWdOYW1lKERPTVN0cmluZyBuYW1lKTsKKyAgICBbRE9N
SklUPVNpZ25hdHVyZV0gSFRNTENvbGxlY3Rpb24gZ2V0RWxlbWVudHNCeVRhZ05hbWUoRE9NU3Ry
aW5nIG5hbWUpOwogCiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIE5hbWVkTm9kZU1hcCBhdHRyaWJ1
dGVzOwotICAgIGJvb2xlYW4gaGFzQXR0cmlidXRlcygpOworICAgIFtET01KSVQ9U2lnbmF0dXJl
XSBib29sZWFuIGhhc0F0dHJpYnV0ZXMoKTsKIAogICAgIERPTVN0cmluZz8gZ2V0QXR0cmlidXRl
TlMoRE9NU3RyaW5nPyBuYW1lc3BhY2VVUkksIERPTVN0cmluZyBsb2NhbE5hbWUpOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb21qaXQvRE9NSklUQWJzdHJhY3RIZWFwUmVwb3NpdG9y
eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb21qaXQvRE9NSklUQWJzdHJhY3RIZWFwUmVwb3NpdG9y
eS5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDgzZmJhODk3MTNiODY2M2Q0ZDhm
MjdlZGNiZjc0YWZlNjMxODJkMzEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9taml0L0RPTUpJVEFic3RyYWN0SGVhcFJlcG9z
aXRvcnkuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNzAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgot
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgot
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNs
dWRlICJET01KSVRBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmgiCi0KLSNpbmNsdWRlIDxkb21qaXQv
RE9NSklUQWJzdHJhY3RIZWFwLmg+Ci0jaW5jbHVkZSA8d3RmL0RhdGFMb2cuaD4KLSNpbmNsdWRl
IDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KLQotI2lmIEVOQUJMRShKSVQpCi0KLW5hbWVzcGFjZSBX
ZWJDb3JlIHsgbmFtZXNwYWNlIERPTUpJVCB7Ci0KLXN0YXRpYyBjb25zdCBib29sIHZlcmJvc2Ug
PSBmYWxzZTsKLQotQWJzdHJhY3RIZWFwUmVwb3NpdG9yeTo6QWJzdHJhY3RIZWFwUmVwb3NpdG9y
eSgpCi17Ci0gICAgSlNDOjpET01KSVQ6OkFic3RyYWN0SGVhcCBET01IZWFwKCJET00iKTsKLSNk
ZWZpbmUgRE9NSklUX0RFRklORV9IRUFQKG5hbWUsIHBhcmVudCkgSlNDOjpET01KSVQ6OkFic3Ry
YWN0SGVhcCBuYW1lIyNIZWFwKCNuYW1lKTsKLSAgICBET01KSVRfQUJTVFJBQ1RfSEVBUF9MSVNU
KERPTUpJVF9ERUZJTkVfSEVBUCkKLSN1bmRlZiBET01KSVRfREVGSU5FX0hFQVAKLQotI2RlZmlu
ZSBET01KSVRfSU5JVElBTElaRV9IRUFQKG5hbWUsIHBhcmVudCkgbmFtZSMjSGVhcC5zZXRQYXJl
bnQoJnBhcmVudCMjSGVhcCk7Ci0gICAgRE9NSklUX0FCU1RSQUNUX0hFQVBfTElTVChET01KSVRf
SU5JVElBTElaRV9IRUFQKQotI3VuZGVmIERPTUpJVF9JTklUSUFMSVpFX0hFQVAKLQotICAgIERP
TUhlYXAuY29tcHV0ZSgwKTsKLQotI2RlZmluZSBET01KSVRfSU5JVElBTElaRV9NRU1CRVIobmFt
ZSwgcGFyZW50KSBuYW1lID0gbmFtZSMjSGVhcC5yYW5nZSgpOwotICAgIERPTUpJVF9BQlNUUkFD
VF9IRUFQX0xJU1QoRE9NSklUX0lOSVRJQUxJWkVfTUVNQkVSKQotI3VuZGVmIERPTUpJVF9JTklU
SUFMSVpFX01FTUJFUgotCi0gICAgaWYgKHZlcmJvc2UpIHsKLSAgICAgICAgZGF0YUxvZygiRE9N
SklUIEhlYXAgUmVwb3NpdG9yeTpcbiIpOwotICAgICAgICBET01IZWFwLmRlZXBEdW1wKFdURjo6
ZGF0YUZpbGUoKSk7Ci0gICAgfQotfQotCi1jb25zdCBBYnN0cmFjdEhlYXBSZXBvc2l0b3J5JiBB
YnN0cmFjdEhlYXBSZXBvc2l0b3J5OjpzaGFyZWQoKQotewotICAgIHN0YXRpYyBOZXZlckRlc3Ry
b3llZDxBYnN0cmFjdEhlYXBSZXBvc2l0b3J5PiByZXBvc2l0b3J5OwotICAgIHJldHVybiByZXBv
c2l0b3J5LmdldCgpOwotfQotCi19IH0KLQotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9kb21qaXQvRE9NSklUQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5oIGIvU291cmNlL1dlYkNv
cmUvZG9taml0L0RPTUpJVEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaApkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggODE5MGExYTk0YmJjNzlkZTVmMmUzYmVkMDk5ODM0NzlmYTRiZDY1Ni4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9kb21qaXQvRE9NSklUQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5oCisrKyAvZGV2L251bGwK
QEAgLTEsNjYgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFy
ZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
LSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgot
ICovCi0KLSNwcmFnbWEgb25jZQotCi0jaW5jbHVkZSA8ZG9taml0L0RPTUpJVEhlYXBSYW5nZS5o
PgotI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgotI2luY2x1ZGUgPHd0Zi9Ob25jb3B5
YWJsZS5oPgotCi0jaWYgRU5BQkxFKEpJVCkKLQotbmFtZXNwYWNlIFdlYkNvcmUgeyBuYW1lc3Bh
Y2UgRE9NSklUIHsKLQotLy8gRGVzY3JpYmUgeW91ciBhYnN0cmFjdCBoZWFwIGhpZXJhcmNoeSBo
ZXJlLgotLy8gVihBYnN0cmFjdEhlYXBOYW1lLCBQYXJlbnQpCi0jZGVmaW5lIERPTUpJVF9BQlNU
UkFDVF9IRUFQX0xJU1QoVikgXAotICAgIFYoTm9kZSwgRE9NKSBcCi0gICAgVihOb2RlX2ZpcnN0
Q2hpbGQsIE5vZGUpIFwKLSAgICBWKE5vZGVfbGFzdENoaWxkLCBOb2RlKSBcCi0gICAgVihOb2Rl
X3BhcmVudE5vZGUsIE5vZGUpIFwKLSAgICBWKE5vZGVfbmV4dFNpYmxpbmcsIE5vZGUpIFwKLSAg
ICBWKE5vZGVfcHJldmlvdXNTaWJsaW5nLCBOb2RlKSBcCi0gICAgVihOb2RlX293bmVyRG9jdW1l
bnQsIE5vZGUpIFwKLSAgICBWKERvY3VtZW50LCBET00pIFwKLSAgICBWKERvY3VtZW50X2RvY3Vt
ZW50RWxlbWVudCwgRG9jdW1lbnQpIFwKLQotCi1jbGFzcyBBYnN0cmFjdEhlYXBSZXBvc2l0b3J5
IHsKLSAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShBYnN0cmFjdEhlYXBSZXBvc2l0b3J5KTsKLXB1
YmxpYzoKLSAgICBzdGF0aWMgY29uc3QgQWJzdHJhY3RIZWFwUmVwb3NpdG9yeSYgc2hhcmVkKCk7
Ci0KLSAgICBKU0M6OkRPTUpJVDo6SGVhcFJhbmdlIERPTTsKLQotI2RlZmluZSBET01KSVRfREVG
SU5FX01FTUJFUihuYW1lLCBwYXJlbnQpIEpTQzo6RE9NSklUOjpIZWFwUmFuZ2UgbmFtZTsKLSAg
ICBET01KSVRfQUJTVFJBQ1RfSEVBUF9MSVNUKERPTUpJVF9ERUZJTkVfTUVNQkVSKQotI3VuZGVm
IERPTUpJVF9ERUZJTkVfTUVNQkVSCi0KLSAgICBBYnN0cmFjdEhlYXBSZXBvc2l0b3J5KCk7Ci19
OwotCi19IH0KLQotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb21qaXQvRE9N
SklUQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS55YW1sIGIvU291cmNlL1dlYkNvcmUvZG9taml0L0RP
TUpJVEFic3RyYWN0SGVhcFJlcG9zaXRvcnkueWFtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41MmM1ODQ1ZTA3ODY3
MGRkZGFjOTc3Mjk5OWNjYjhlYTdkMDFiZGYzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YkNvcmUvZG9taml0L0RPTUpJVEFic3RyYWN0SGVhcFJlcG9zaXRvcnkueWFtbApAQCAtMCwwICsx
LDExIEBACitET006CisgICAgVHJlZToKKyAgICAgICAgTm9kZToKKyAgICAgICAgICAgIC0gTm9k
ZV9maXJzdENoaWxkCisgICAgICAgICAgICAtIE5vZGVfbGFzdENoaWxkCisgICAgICAgICAgICAt
IE5vZGVfcGFyZW50Tm9kZQorICAgICAgICAgICAgLSBOb2RlX25leHRTaWJsaW5nCisgICAgICAg
ICAgICAtIE5vZGVfcHJldmlvdXNTaWJsaW5nCisgICAgICAgICAgICAtIE5vZGVfb3duZXJEb2N1
bWVudAorICAgICAgICBEb2N1bWVudDoKKyAgICAgICAgICAgIC0gRG9jdW1lbnRfZG9jdW1lbnRF
bGVtZW50CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb21qaXQvRE9NSklUSURMQ29udmVy
dC5oIGIvU291cmNlL1dlYkNvcmUvZG9taml0L0RPTUpJVElETENvbnZlcnQuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li41ZTAwYWJmY2NiODc2ZGVhMTgzMmYxYzIwYWVlM2VkNzhiMTM2ODQ5Ci0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYkNvcmUvZG9taml0L0RPTUpJVElETENvbnZlcnQuaApAQCAtMCwwICsx
LDQ5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJJRExUeXBlcy5o
IgorI2luY2x1ZGUgPGJ5dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmg+CisjaW5jbHVkZSA8ZG9taml0
L0RPTUpJVFNpZ25hdHVyZS5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7IG5hbWVzcGFjZSBET01K
SVQgeworCit0ZW1wbGF0ZTx0eXBlbmFtZSBJRExUeXBlPgorc3RydWN0IERpcmVjdENvbnZlcnRl
cjsKKwordGVtcGxhdGU8Pgorc3RydWN0IERpcmVjdENvbnZlcnRlcjxJRExET01TdHJpbmc+IHsK
KyAgICB0ZW1wbGF0ZTxTdHJpbmdDb252ZXJzaW9uQ29uZmlndXJhdGlvbj4KKyAgICBzdGF0aWMg
U3RyaW5nIGRpcmVjdENvbnZlcnQoSlNDOjpFeGVjU3RhdGUmLCBKU0M6OkpTU3RyaW5nKik7Cit9
OworCit0ZW1wbGF0ZTw+CitpbmxpbmUgU3RyaW5nIERpcmVjdENvbnZlcnRlcjxJRExET01TdHJp
bmc+OjpkaXJlY3RDb252ZXJ0PFN0cmluZ0NvbnZlcnNpb25Db25maWd1cmF0aW9uOjpOb3JtYWw+
KEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgSlNDOjpKU1N0cmluZyogc3RyaW5nKQoreworICAgIHJl
dHVybiBzdHJpbmctPnZhbHVlKCZzdGF0ZSk7Cit9CisKK30gfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZG9taml0L0RPTUpJVElETFR5cGUuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbWppdC9E
T01KSVRJRExUeXBlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjg5MWZiYzUwZWY0YzJkNzY1NGQ4ZTVkMmJjOGRl
YWU5NzZkZjFhYwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbWppdC9ET01K
SVRJRExUeXBlLmgKQEAgLTAsMCArMSw0NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQor
CisjaW5jbHVkZSAiSURMVHlwZXMuaCIKKyNpbmNsdWRlIDxieXRlY29kZS9TcGVjdWxhdGVkVHlw
ZS5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7IG5hbWVzcGFjZSBET01KSVQgeworCit0ZW1wbGF0
ZTx0eXBlbmFtZSBJRExUeXBlPgorc3RydWN0IElETEpTQXJndW1lbnRUeXBlU2VsZWN0OworCit0
ZW1wbGF0ZTw+IHN0cnVjdCBJRExKU0FyZ3VtZW50VHlwZVNlbGVjdDxJRExCb29sZWFuPiB7IHR5
cGVkZWYgYm9vbCB0eXBlOyB9OwordGVtcGxhdGU8PiBzdHJ1Y3QgSURMSlNBcmd1bWVudFR5cGVT
ZWxlY3Q8SURMQnl0ZT4geyB0eXBlZGVmIGludDMyX3QgdHlwZTsgfTsKK3RlbXBsYXRlPD4gc3Ry
dWN0IElETEpTQXJndW1lbnRUeXBlU2VsZWN0PElETE9jdGV0PiB7IHR5cGVkZWYgaW50MzJfdCB0
eXBlOyB9OwordGVtcGxhdGU8PiBzdHJ1Y3QgSURMSlNBcmd1bWVudFR5cGVTZWxlY3Q8SURMU2hv
cnQ+IHsgdHlwZWRlZiBpbnQzMl90IHR5cGU7IH07Cit0ZW1wbGF0ZTw+IHN0cnVjdCBJRExKU0Fy
Z3VtZW50VHlwZVNlbGVjdDxJRExVbnNpZ25lZFNob3J0PiB7IHR5cGVkZWYgaW50MzJfdCB0eXBl
OyB9OwordGVtcGxhdGU8PiBzdHJ1Y3QgSURMSlNBcmd1bWVudFR5cGVTZWxlY3Q8SURMTG9uZz4g
eyB0eXBlZGVmIGludDMyX3QgdHlwZTsgfTsKK3RlbXBsYXRlPD4gc3RydWN0IElETEpTQXJndW1l
bnRUeXBlU2VsZWN0PElETERPTVN0cmluZz4geyB0eXBlZGVmIEpTQzo6SlNTdHJpbmcqIHR5cGU7
IH07CisKK3RlbXBsYXRlPHR5cGVuYW1lIElETFR5cGU+Cit1c2luZyBJRExKU0FyZ3VtZW50VHlw
ZSA9IHR5cGVuYW1lIElETEpTQXJndW1lbnRUeXBlU2VsZWN0PElETFR5cGU+Ojp0eXBlOworCit9
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbWppdC9ET01KSVRJRExUeXBlRmlsdGVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9kb21qaXQvRE9NSklUSURMVHlwZUZpbHRlci5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmQ1MmQ5OTY3N2MzMmY3ZWMyYmQ1MjEyMzdhZDBlN2I4ZDRlM2RiOTYKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb21qaXQvRE9NSklUSURMVHlwZUZpbHRlci5oCkBAIC0w
LDAgKzEsNzEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPGJ5dGVj
b2RlL1NwZWN1bGF0ZWRUeXBlLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsgbmFtZXNwYWNlIERP
TUpJVCB7CisKK3RlbXBsYXRlPHR5cGVuYW1lIElETFR5cGU+CitzdHJ1Y3QgSURMQXJndW1lbnRU
eXBlRmlsdGVyOworCit0ZW1wbGF0ZTw+IHN0cnVjdCBJRExBcmd1bWVudFR5cGVGaWx0ZXI8SURM
Qm9vbGVhbj4geyBzdGF0aWMgY29uc3QgY29uc3RleHByIEpTQzo6U3BlY3VsYXRlZFR5cGUgdmFs
dWUgPSBKU0M6OlNwZWNCb29sZWFuOyB9OwordGVtcGxhdGU8PiBzdHJ1Y3QgSURMQXJndW1lbnRU
eXBlRmlsdGVyPElETEJ5dGU+IHsgc3RhdGljIGNvbnN0IGNvbnN0ZXhwciBKU0M6OlNwZWN1bGF0
ZWRUeXBlIHZhbHVlID0gSlNDOjpTcGVjSW50MzJPbmx5OyB9OwordGVtcGxhdGU8PiBzdHJ1Y3Qg
SURMQXJndW1lbnRUeXBlRmlsdGVyPElETE9jdGV0PiB7IHN0YXRpYyBjb25zdCBjb25zdGV4cHIg
SlNDOjpTcGVjdWxhdGVkVHlwZSB2YWx1ZSA9IEpTQzo6U3BlY0ludDMyT25seTsgfTsKK3RlbXBs
YXRlPD4gc3RydWN0IElETEFyZ3VtZW50VHlwZUZpbHRlcjxJRExTaG9ydD4geyBzdGF0aWMgY29u
c3QgY29uc3RleHByIEpTQzo6U3BlY3VsYXRlZFR5cGUgdmFsdWUgPSBKU0M6OlNwZWNJbnQzMk9u
bHk7IH07Cit0ZW1wbGF0ZTw+IHN0cnVjdCBJRExBcmd1bWVudFR5cGVGaWx0ZXI8SURMVW5zaWdu
ZWRTaG9ydD4geyBzdGF0aWMgY29uc3QgY29uc3RleHByIEpTQzo6U3BlY3VsYXRlZFR5cGUgdmFs
dWUgPSBKU0M6OlNwZWNJbnQzMk9ubHk7IH07Cit0ZW1wbGF0ZTw+IHN0cnVjdCBJRExBcmd1bWVu
dFR5cGVGaWx0ZXI8SURMTG9uZz4geyBzdGF0aWMgY29uc3QgY29uc3RleHByIEpTQzo6U3BlY3Vs
YXRlZFR5cGUgdmFsdWUgPSBKU0M6OlNwZWNJbnQzMk9ubHk7IH07Cit0ZW1wbGF0ZTw+IHN0cnVj
dCBJRExBcmd1bWVudFR5cGVGaWx0ZXI8SURMRE9NU3RyaW5nPiB7IHN0YXRpYyBjb25zdCBjb25z
dGV4cHIgSlNDOjpTcGVjdWxhdGVkVHlwZSB2YWx1ZSA9IEpTQzo6U3BlY1N0cmluZzsgfTsKKwor
dGVtcGxhdGU8dHlwZW5hbWUgSURMVHlwZT4KK3N0cnVjdCBJRExSZXN1bHRUeXBlRmlsdGVyIHsK
KyAgICBzdGF0aWMgY29uc3QgY29uc3RleHByIEpTQzo6U3BlY3VsYXRlZFR5cGUgdmFsdWUgPSBK
U0M6OlNwZWNIZWFwVG9wOworfTsKKwordGVtcGxhdGU8PiBzdHJ1Y3QgSURMUmVzdWx0VHlwZUZp
bHRlcjxJRExBbnk+IHsgc3RhdGljIGNvbnN0IGNvbnN0ZXhwciBKU0M6OlNwZWN1bGF0ZWRUeXBl
IHZhbHVlID0gSlNDOjpTcGVjSGVhcFRvcDsgfTsKK3RlbXBsYXRlPD4gc3RydWN0IElETFJlc3Vs
dFR5cGVGaWx0ZXI8SURMQm9vbGVhbj4geyBzdGF0aWMgY29uc3QgY29uc3RleHByIEpTQzo6U3Bl
Y3VsYXRlZFR5cGUgdmFsdWUgPSBKU0M6OlNwZWNCb29sZWFuOyB9OwordGVtcGxhdGU8PiBzdHJ1
Y3QgSURMUmVzdWx0VHlwZUZpbHRlcjxJRExCeXRlPiB7IHN0YXRpYyBjb25zdCBjb25zdGV4cHIg
SlNDOjpTcGVjdWxhdGVkVHlwZSB2YWx1ZSA9IEpTQzo6U3BlY0ludDMyT25seTsgfTsKK3RlbXBs
YXRlPD4gc3RydWN0IElETFJlc3VsdFR5cGVGaWx0ZXI8SURMT2N0ZXQ+IHsgc3RhdGljIGNvbnN0
IGNvbnN0ZXhwciBKU0M6OlNwZWN1bGF0ZWRUeXBlIHZhbHVlID0gSlNDOjpTcGVjSW50MzJPbmx5
OyB9OwordGVtcGxhdGU8PiBzdHJ1Y3QgSURMUmVzdWx0VHlwZUZpbHRlcjxJRExTaG9ydD4geyBz
dGF0aWMgY29uc3QgY29uc3RleHByIEpTQzo6U3BlY3VsYXRlZFR5cGUgdmFsdWUgPSBKU0M6OlNw
ZWNJbnQzMk9ubHk7IH07Cit0ZW1wbGF0ZTw+IHN0cnVjdCBJRExSZXN1bHRUeXBlRmlsdGVyPElE
TFVuc2lnbmVkU2hvcnQ+IHsgc3RhdGljIGNvbnN0IGNvbnN0ZXhwciBKU0M6OlNwZWN1bGF0ZWRU
eXBlIHZhbHVlID0gSlNDOjpTcGVjSW50MzJPbmx5OyB9OwordGVtcGxhdGU8PiBzdHJ1Y3QgSURM
UmVzdWx0VHlwZUZpbHRlcjxJRExMb25nPiB7IHN0YXRpYyBjb25zdCBjb25zdGV4cHIgSlNDOjpT
cGVjdWxhdGVkVHlwZSB2YWx1ZSA9IEpTQzo6U3BlY0ludDMyT25seTsgfTsKK3RlbXBsYXRlPD4g
c3RydWN0IElETFJlc3VsdFR5cGVGaWx0ZXI8SURMVW5zaWduZWRMb25nPiB7IHN0YXRpYyBjb25z
dCBjb25zdGV4cHIgSlNDOjpTcGVjdWxhdGVkVHlwZSB2YWx1ZSA9IEpTQzo6U3BlY0J5dGVjb2Rl
TnVtYmVyOyB9OwordGVtcGxhdGU8PiBzdHJ1Y3QgSURMUmVzdWx0VHlwZUZpbHRlcjxJRExMb25n
TG9uZz4geyBzdGF0aWMgY29uc3QgY29uc3RleHByIEpTQzo6U3BlY3VsYXRlZFR5cGUgdmFsdWUg
PSBKU0M6OlNwZWNCeXRlY29kZU51bWJlcjsgfTsKK3RlbXBsYXRlPD4gc3RydWN0IElETFJlc3Vs
dFR5cGVGaWx0ZXI8SURMVW5zaWduZWRMb25nTG9uZz4geyBzdGF0aWMgY29uc3QgY29uc3RleHBy
IEpTQzo6U3BlY3VsYXRlZFR5cGUgdmFsdWUgPSBKU0M6OlNwZWNCeXRlY29kZU51bWJlcjsgfTsK
K3RlbXBsYXRlPD4gc3RydWN0IElETFJlc3VsdFR5cGVGaWx0ZXI8SURMRmxvYXQ+IHsgc3RhdGlj
IGNvbnN0IGNvbnN0ZXhwciBKU0M6OlNwZWN1bGF0ZWRUeXBlIHZhbHVlID0gSlNDOjpTcGVjQnl0
ZWNvZGVOdW1iZXI7IH07Cit0ZW1wbGF0ZTw+IHN0cnVjdCBJRExSZXN1bHRUeXBlRmlsdGVyPElE
TFVucmVzdHJpY3RlZEZsb2F0PiB7IHN0YXRpYyBjb25zdCBjb25zdGV4cHIgSlNDOjpTcGVjdWxh
dGVkVHlwZSB2YWx1ZSA9IEpTQzo6U3BlY0J5dGVjb2RlTnVtYmVyOyB9OwordGVtcGxhdGU8PiBz
dHJ1Y3QgSURMUmVzdWx0VHlwZUZpbHRlcjxJRExEb3VibGU+IHsgc3RhdGljIGNvbnN0IGNvbnN0
ZXhwciBKU0M6OlNwZWN1bGF0ZWRUeXBlIHZhbHVlID0gSlNDOjpTcGVjQnl0ZWNvZGVOdW1iZXI7
IH07Cit0ZW1wbGF0ZTw+IHN0cnVjdCBJRExSZXN1bHRUeXBlRmlsdGVyPElETFVucmVzdHJpY3Rl
ZERvdWJsZT4geyBzdGF0aWMgY29uc3QgY29uc3RleHByIEpTQzo6U3BlY3VsYXRlZFR5cGUgdmFs
dWUgPSBKU0M6OlNwZWNCeXRlY29kZU51bWJlcjsgfTsKK3RlbXBsYXRlPD4gc3RydWN0IElETFJl
c3VsdFR5cGVGaWx0ZXI8SURMRE9NU3RyaW5nPiB7IHN0YXRpYyBjb25zdCBjb25zdGV4cHIgSlND
OjpTcGVjdWxhdGVkVHlwZSB2YWx1ZSA9IEpTQzo6U3BlY1N0cmluZzsgfTsKK3RlbXBsYXRlPD4g
c3RydWN0IElETFJlc3VsdFR5cGVGaWx0ZXI8SURMQnl0ZVN0cmluZz4geyBzdGF0aWMgY29uc3Qg
Y29uc3RleHByIEpTQzo6U3BlY3VsYXRlZFR5cGUgdmFsdWUgPSBKU0M6OlNwZWNTdHJpbmc7IH07
Cit0ZW1wbGF0ZTw+IHN0cnVjdCBJRExSZXN1bHRUeXBlRmlsdGVyPElETFVTVlN0cmluZz4geyBz
dGF0aWMgY29uc3QgY29uc3RleHByIEpTQzo6U3BlY3VsYXRlZFR5cGUgdmFsdWUgPSBKU0M6OlNw
ZWNTdHJpbmc7IH07CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+CitzdHJ1Y3QgSURMUmVzdWx0VHlw
ZUZpbHRlcjxJRExOdWxsYWJsZTxUPj4geworICAgIHN0YXRpYyBjb25zdCBjb25zdGV4cHIgSlND
OjpTcGVjdWxhdGVkVHlwZSB2YWx1ZSA9IEpTQzo6U3BlY090aGVyIHwgSURMUmVzdWx0VHlwZUZp
bHRlcjxUPjo6dmFsdWU7Cit9OworCit9IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bWppdC9KU0RvY3VtZW50RE9NSklULmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbWppdC9KU0RvY3Vt
ZW50RE9NSklULmNwcAppbmRleCA5YjQ4ZDlmZGE1OGE2MmQwN2ZiMjNhYWI0NTZiZjk0YjdlZDhm
YzJmLi5iYmZlZTdkYzRiYjc4MmU3M2NmMjdjOTc3YmMxODI5NGE1OTRiNmQ4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9kb21qaXQvSlNEb2N1bWVudERPTUpJVC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvZG9taml0L0pTRG9jdW1lbnRET01KSVQuY3BwCkBAIC00OCw3ICs0OCw2IEBAIFJl
ZjxKU0M6OkRPTUpJVDo6UGF0Y2hwb2ludD4gRG9jdW1lbnREb2N1bWVudEVsZW1lbnRET01KSVQ6
OmNoZWNrRE9NKCkKIAogUmVmPEpTQzo6RE9NSklUOjpDYWxsRE9NR2V0dGVyUGF0Y2hwb2ludD4g
RG9jdW1lbnREb2N1bWVudEVsZW1lbnRET01KSVQ6OmNhbGxET01HZXR0ZXIoKQogewotICAgIGNv
bnN0IGF1dG8mIGhlYXAgPSBET01KSVQ6OkFic3RyYWN0SGVhcFJlcG9zaXRvcnk6OnNoYXJlZCgp
OwogICAgIFJlZjxKU0M6OkRPTUpJVDo6Q2FsbERPTUdldHRlclBhdGNocG9pbnQ+IHBhdGNocG9p
bnQgPSBKU0M6OkRPTUpJVDo6Q2FsbERPTUdldHRlclBhdGNocG9pbnQ6OmNyZWF0ZSgpOwogICAg
IHBhdGNocG9pbnQtPm51bUdQU2NyYXRjaFJlZ2lzdGVycyA9IDE7CiAgICAgcGF0Y2hwb2ludC0+
c2V0R2VuZXJhdG9yKFs9XShDQ2FsbEhlbHBlcnMmIGppdCwgSlNDOjpET01KSVQ6OlBhdGNocG9p
bnRQYXJhbXMmIHBhcmFtcykgewpAQCAtNzAsNyArNjksNyBAQCBSZWY8SlNDOjpET01KSVQ6OkNh
bGxET01HZXR0ZXJQYXRjaHBvaW50PiBEb2N1bWVudERvY3VtZW50RWxlbWVudERPTUpJVDo6Y2Fs
bERPTQogCiAgICAgICAgIHJldHVybiBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0KCk7CiAgICAgfSk7
Ci0gICAgcGF0Y2hwb2ludC0+ZWZmZWN0ID0gSlNDOjpET01KSVQ6OkVmZmVjdDo6Zm9yRGVmKGhl
YXAuRG9jdW1lbnRfZG9jdW1lbnRFbGVtZW50KTsKKyAgICBwYXRjaHBvaW50LT5lZmZlY3QgPSBK
U0M6OkRPTUpJVDo6RWZmZWN0Ojpmb3JEZWYoRE9NSklUOjpBYnN0cmFjdEhlYXBSZXBvc2l0b3J5
OjpEb2N1bWVudF9kb2N1bWVudEVsZW1lbnQpOwogICAgIHJldHVybiBwYXRjaHBvaW50OwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb21qaXQvSlNOb2RlRE9NSklULmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2RvbWppdC9KU05vZGVET01KSVQuY3BwCmluZGV4IDFkNzkwMWVjNDFkN2Fj
ZWYxZDBkNzhmNjEzMjZmYmU4YTEzYTkxYmYuLmRiMzEwZWEzNDUyODQ5MTQyNDI4ZDNkNjE2Zjgx
YjJjNjdjNTE2NTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbWppdC9KU05vZGVET01K
SVQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbWppdC9KU05vZGVET01KSVQuY3BwCkBAIC04
Myw5ICs4Myw4IEBAIFJlZjxKU0M6OkRPTUpJVDo6UGF0Y2hwb2ludD4gTm9kZUZpcnN0Q2hpbGRE
T01KSVQ6OmNoZWNrRE9NKCkKIAogUmVmPEpTQzo6RE9NSklUOjpDYWxsRE9NR2V0dGVyUGF0Y2hw
b2ludD4gTm9kZUZpcnN0Q2hpbGRET01KSVQ6OmNhbGxET01HZXR0ZXIoKQogewotICAgIGNvbnN0
IGF1dG8mIGhlYXAgPSBET01KSVQ6OkFic3RyYWN0SGVhcFJlcG9zaXRvcnk6OnNoYXJlZCgpOwog
ICAgIGF1dG8gcGF0Y2hwb2ludCA9IGNyZWF0ZUNhbGxET01HZXR0ZXJGb3JPZmZzZXRBY2Nlc3M8
Tm9kZT4oQ0FTVF9PRkZTRVQoTm9kZSosIENvbnRhaW5lck5vZGUqKSArIENvbnRhaW5lck5vZGU6
OmZpcnN0Q2hpbGRNZW1vcnlPZmZzZXQoKSwgSXNDb250YWluZXJHdWFyZFJlcXVpcmVtZW50OjpS
ZXF1aXJlZCk7Ci0gICAgcGF0Y2hwb2ludC0+ZWZmZWN0ID0gSlNDOjpET01KSVQ6OkVmZmVjdDo6
Zm9yRGVmKGhlYXAuTm9kZV9maXJzdENoaWxkKTsKKyAgICBwYXRjaHBvaW50LT5lZmZlY3QgPSBK
U0M6OkRPTUpJVDo6RWZmZWN0Ojpmb3JEZWYoRE9NSklUOjpBYnN0cmFjdEhlYXBSZXBvc2l0b3J5
OjpOb2RlX2ZpcnN0Q2hpbGQpOwogICAgIHJldHVybiBwYXRjaHBvaW50OwogfQogCkBAIC05Niw5
ICs5NSw4IEBAIFJlZjxKU0M6OkRPTUpJVDo6UGF0Y2hwb2ludD4gTm9kZUxhc3RDaGlsZERPTUpJ
VDo6Y2hlY2tET00oKQogCiBSZWY8SlNDOjpET01KSVQ6OkNhbGxET01HZXR0ZXJQYXRjaHBvaW50
PiBOb2RlTGFzdENoaWxkRE9NSklUOjpjYWxsRE9NR2V0dGVyKCkKIHsKLSAgICBjb25zdCBhdXRv
JiBoZWFwID0gRE9NSklUOjpBYnN0cmFjdEhlYXBSZXBvc2l0b3J5OjpzaGFyZWQoKTsKICAgICBh
dXRvIHBhdGNocG9pbnQgPSBjcmVhdGVDYWxsRE9NR2V0dGVyRm9yT2Zmc2V0QWNjZXNzPE5vZGU+
KENBU1RfT0ZGU0VUKE5vZGUqLCBDb250YWluZXJOb2RlKikgKyBDb250YWluZXJOb2RlOjpsYXN0
Q2hpbGRNZW1vcnlPZmZzZXQoKSwgSXNDb250YWluZXJHdWFyZFJlcXVpcmVtZW50OjpSZXF1aXJl
ZCk7Ci0gICAgcGF0Y2hwb2ludC0+ZWZmZWN0ID0gSlNDOjpET01KSVQ6OkVmZmVjdDo6Zm9yRGVm
KGhlYXAuTm9kZV9sYXN0Q2hpbGQpOworICAgIHBhdGNocG9pbnQtPmVmZmVjdCA9IEpTQzo6RE9N
SklUOjpFZmZlY3Q6OmZvckRlZihET01KSVQ6OkFic3RyYWN0SGVhcFJlcG9zaXRvcnk6Ok5vZGVf
bGFzdENoaWxkKTsKICAgICByZXR1cm4gcGF0Y2hwb2ludDsKIH0KIApAQCAtMTA5LDkgKzEwNyw4
IEBAIFJlZjxKU0M6OkRPTUpJVDo6UGF0Y2hwb2ludD4gTm9kZU5leHRTaWJsaW5nRE9NSklUOjpj
aGVja0RPTSgpCiAKIFJlZjxKU0M6OkRPTUpJVDo6Q2FsbERPTUdldHRlclBhdGNocG9pbnQ+IE5v
ZGVOZXh0U2libGluZ0RPTUpJVDo6Y2FsbERPTUdldHRlcigpCiB7Ci0gICAgY29uc3QgYXV0byYg
aGVhcCA9IERPTUpJVDo6QWJzdHJhY3RIZWFwUmVwb3NpdG9yeTo6c2hhcmVkKCk7CiAgICAgYXV0
byBwYXRjaHBvaW50ID0gY3JlYXRlQ2FsbERPTUdldHRlckZvck9mZnNldEFjY2VzczxOb2RlPihO
b2RlOjpuZXh0U2libGluZ01lbW9yeU9mZnNldCgpLCBJc0NvbnRhaW5lckd1YXJkUmVxdWlyZW1l
bnQ6Ok5vdFJlcXVpcmVkKTsKLSAgICBwYXRjaHBvaW50LT5lZmZlY3QgPSBKU0M6OkRPTUpJVDo6
RWZmZWN0Ojpmb3JEZWYoaGVhcC5Ob2RlX25leHRTaWJsaW5nKTsKKyAgICBwYXRjaHBvaW50LT5l
ZmZlY3QgPSBKU0M6OkRPTUpJVDo6RWZmZWN0Ojpmb3JEZWYoRE9NSklUOjpBYnN0cmFjdEhlYXBS
ZXBvc2l0b3J5OjpOb2RlX25leHRTaWJsaW5nKTsKICAgICByZXR1cm4gcGF0Y2hwb2ludDsKIH0K
IApAQCAtMTIyLDkgKzExOSw4IEBAIFJlZjxKU0M6OkRPTUpJVDo6UGF0Y2hwb2ludD4gTm9kZVBy
ZXZpb3VzU2libGluZ0RPTUpJVDo6Y2hlY2tET00oKQogCiBSZWY8SlNDOjpET01KSVQ6OkNhbGxE
T01HZXR0ZXJQYXRjaHBvaW50PiBOb2RlUHJldmlvdXNTaWJsaW5nRE9NSklUOjpjYWxsRE9NR2V0
dGVyKCkKIHsKLSAgICBjb25zdCBhdXRvJiBoZWFwID0gRE9NSklUOjpBYnN0cmFjdEhlYXBSZXBv
c2l0b3J5OjpzaGFyZWQoKTsKICAgICBhdXRvIHBhdGNocG9pbnQgPSBjcmVhdGVDYWxsRE9NR2V0
dGVyRm9yT2Zmc2V0QWNjZXNzPE5vZGU+KE5vZGU6OnByZXZpb3VzU2libGluZ01lbW9yeU9mZnNl
dCgpLCBJc0NvbnRhaW5lckd1YXJkUmVxdWlyZW1lbnQ6Ok5vdFJlcXVpcmVkKTsKLSAgICBwYXRj
aHBvaW50LT5lZmZlY3QgPSBKU0M6OkRPTUpJVDo6RWZmZWN0Ojpmb3JEZWYoaGVhcC5Ob2RlX3By
ZXZpb3VzU2libGluZyk7CisgICAgcGF0Y2hwb2ludC0+ZWZmZWN0ID0gSlNDOjpET01KSVQ6OkVm
ZmVjdDo6Zm9yRGVmKERPTUpJVDo6QWJzdHJhY3RIZWFwUmVwb3NpdG9yeTo6Tm9kZV9wcmV2aW91
c1NpYmxpbmcpOwogICAgIHJldHVybiBwYXRjaHBvaW50OwogfQogCkBAIC0xMzUsOSArMTMxLDgg
QEAgUmVmPEpTQzo6RE9NSklUOjpQYXRjaHBvaW50PiBOb2RlUGFyZW50Tm9kZURPTUpJVDo6Y2hl
Y2tET00oKQogCiBSZWY8SlNDOjpET01KSVQ6OkNhbGxET01HZXR0ZXJQYXRjaHBvaW50PiBOb2Rl
UGFyZW50Tm9kZURPTUpJVDo6Y2FsbERPTUdldHRlcigpCiB7Ci0gICAgY29uc3QgYXV0byYgaGVh
cCA9IERPTUpJVDo6QWJzdHJhY3RIZWFwUmVwb3NpdG9yeTo6c2hhcmVkKCk7CiAgICAgYXV0byBw
YXRjaHBvaW50ID0gY3JlYXRlQ2FsbERPTUdldHRlckZvck9mZnNldEFjY2VzczxDb250YWluZXJO
b2RlPihOb2RlOjpwYXJlbnROb2RlTWVtb3J5T2Zmc2V0KCksIElzQ29udGFpbmVyR3VhcmRSZXF1
aXJlbWVudDo6Tm90UmVxdWlyZWQpOwotICAgIHBhdGNocG9pbnQtPmVmZmVjdCA9IEpTQzo6RE9N
SklUOjpFZmZlY3Q6OmZvckRlZihoZWFwLk5vZGVfcGFyZW50Tm9kZSk7CisgICAgcGF0Y2hwb2lu
dC0+ZWZmZWN0ID0gSlNDOjpET01KSVQ6OkVmZmVjdDo6Zm9yRGVmKERPTUpJVDo6QWJzdHJhY3RI
ZWFwUmVwb3NpdG9yeTo6Tm9kZV9wYXJlbnROb2RlKTsKICAgICByZXR1cm4gcGF0Y2hwb2ludDsK
IH0KIApAQCAtMTY5LDcgKzE2NCw2IEBAIFJlZjxKU0M6OkRPTUpJVDo6UGF0Y2hwb2ludD4gTm9k
ZU93bmVyRG9jdW1lbnRET01KSVQ6OmNoZWNrRE9NKCkKIAogUmVmPEpTQzo6RE9NSklUOjpDYWxs
RE9NR2V0dGVyUGF0Y2hwb2ludD4gTm9kZU93bmVyRG9jdW1lbnRET01KSVQ6OmNhbGxET01HZXR0
ZXIoKQogewotICAgIGNvbnN0IGF1dG8mIGhlYXAgPSBET01KSVQ6OkFic3RyYWN0SGVhcFJlcG9z
aXRvcnk6OnNoYXJlZCgpOwogICAgIFJlZjxKU0M6OkRPTUpJVDo6Q2FsbERPTUdldHRlclBhdGNo
cG9pbnQ+IHBhdGNocG9pbnQgPSBKU0M6OkRPTUpJVDo6Q2FsbERPTUdldHRlclBhdGNocG9pbnQ6
OmNyZWF0ZSgpOwogICAgIHBhdGNocG9pbnQtPm51bUdQU2NyYXRjaFJlZ2lzdGVycyA9IDE7CiAg
ICAgcGF0Y2hwb2ludC0+c2V0R2VuZXJhdG9yKFs9XShDQ2FsbEhlbHBlcnMmIGppdCwgSlNDOjpE
T01KSVQ6OlBhdGNocG9pbnRQYXJhbXMmIHBhcmFtcykgewpAQCAtMTkxLDcgKzE4NSw3IEBAIFJl
ZjxKU0M6OkRPTUpJVDo6Q2FsbERPTUdldHRlclBhdGNocG9pbnQ+IE5vZGVPd25lckRvY3VtZW50
RE9NSklUOjpjYWxsRE9NR2V0dGVyCiAgICAgICAgIGRvbmUubGluaygmaml0KTsKICAgICAgICAg
cmV0dXJuIENDYWxsSGVscGVyczo6SnVtcExpc3QoKTsKICAgICB9KTsKLSAgICBwYXRjaHBvaW50
LT5lZmZlY3QgPSBKU0M6OkRPTUpJVDo6RWZmZWN0Ojpmb3JEZWYoaGVhcC5Ob2RlX293bmVyRG9j
dW1lbnQpOworICAgIHBhdGNocG9pbnQtPmVmZmVjdCA9IEpTQzo6RE9NSklUOjpFZmZlY3Q6OmZv
ckRlZihET01KSVQ6OkFic3RyYWN0SGVhcFJlcG9zaXRvcnk6Ok5vZGVfb3duZXJEb2N1bWVudCk7
CiAgICAgcmV0dXJuIHBhdGNocG9pbnQ7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2RvbWppdC9nZW5lcmF0ZS1hYnN0cmFjdC1oZWFwLnJiIGIvU291cmNlL1dlYkNvcmUvZG9taml0
L2dlbmVyYXRlLWFic3RyYWN0LWhlYXAucmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjc0MTJlODVkNjlmNDkxYTJl
YWFiYWE2MTc4ZjFiMjVhMDJkMDliNAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2RvbWppdC9nZW5lcmF0ZS1hYnN0cmFjdC1oZWFwLnJiCkBAIC0wLDAgKzEsMTY1IEBACisjIS91
c3IvYmluL2VudiBydWJ5CisjIC0qLSBjb2Rpbmc6IHV0Zi04IC0qLQorIyBDb3B5cmlnaHQgKEMp
IDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMg
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisjIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorIyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisjIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworIyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisjIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisjIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworIyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorIyBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorIyBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisjIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKworcmVxdWlyZSAieWFtbCIKKworY2xhc3MgSGVhcFJhbmdl
CisgICAgYXR0cl9yZWFkZXIgOmZpcnN0LCA6bGFzdAorICAgIGRlZiBpbml0aWFsaXplKGZpcnN0
LCBsYXN0KQorICAgICAgICBAZmlyc3QgPSBmaXJzdAorICAgICAgICBAbGFzdCA9IGxhc3QKKyAg
ICBlbmQKK2VuZAorCitjbGFzcyBBYnN0cmFjdEhlYXAKKyAgICBhdHRyX3JlYWRlciA6cmFuZ2Us
IDpuYW1lLCA6cGFyZW50CisgICAgZGVmIGluaXRpYWxpemUobmFtZSwgdHJlZSkKKyAgICAgICAg
QG5hbWUgPSBuYW1lCisgICAgICAgIEBwYXJlbnQgPSBuaWwKKyAgICAgICAgaWYgdHJlZS5uaWw/
CisgICAgICAgICAgICBAY2hpbGRyZW4gPSBbXQorICAgICAgICBlbHNlCisgICAgICAgICAgICBA
Y2hpbGRyZW4gPSB0cmVlLm1hcCB7fGtleSwgdmFsdWV8IEFic3RyYWN0SGVhcC5uZXcoa2V5LCB2
YWx1ZSkgfQorICAgICAgICBlbmQKKyAgICAgICAgQHJhbmdlID0gbmlsCisgICAgZW5kCisKKyAg
ICBkZWYgc2V0UGFyZW50KHBhcmVudCkKKyAgICAgICAgcGFyZW50LmNoaWxkcmVuLnB1c2goc2Vs
ZikKKyAgICAgICAgQHBhcmVudCA9IHBhcmVudAorICAgIGVuZAorCisgICAgZGVmIGNvbXB1dGUo
c3RhcnQpCisgICAgICAgIGN1cnJlbnQgPSBzdGFydAorICAgICAgICBpZiBAY2hpbGRyZW4uZW1w
dHk/CisgICAgICAgICAgICBAcmFuZ2UgPSBIZWFwUmFuZ2UubmV3KHN0YXJ0LCBjdXJyZW50ICsg
MSkKKyAgICAgICAgICAgIHJldHVybgorICAgICAgICBlbmQKKworICAgICAgICBAY2hpbGRyZW4u
ZWFjaCB7fGNoaWxkfAorICAgICAgICAgICAgY2hpbGQuY29tcHV0ZShjdXJyZW50KQorICAgICAg
ICAgICAgY3VycmVudCA9IGNoaWxkLnJhbmdlLmxhc3QKKyAgICAgICAgfQorCisgICAgICAgIEBy
YW5nZSA9IEhlYXBSYW5nZS5uZXcoc3RhcnQsIGN1cnJlbnQpCisgICAgZW5kCisKKyAgICBkZWYg
ZHVtcCBvdXRwdXQKKyAgICAgICAgc2hhbGxvd0R1bXAob3V0cHV0KQorICAgICAgICBpZiBAcGFy
ZW50CisgICAgICAgICAgICBvdXRwdXQucHJpbnQgIi0+ICIKKyAgICAgICAgICAgIEBwYXJlbnQu
ZHVtcChvdXRwdXQpCisgICAgICAgIGVuZAorICAgIGVuZAorCisgICAgZGVmIHNoYWxsb3dEdW1w
KG91dHB1dCkKKyAgICAgICAgb3V0cHV0LnByaW50ICIje0BuYW1lfTwje0ByYW5nZS5maXJzdH0s
I3tAcmFuZ2UubGFzdH0+IgorICAgIGVuZAorCisgICAgZGVmIGRlZXBEdW1wIG91dHB1dCwgaW5k
ZW50CisgICAgICAgIHByaW50SW5kZW50KG91dHB1dCwgaW5kZW50KQorICAgICAgICBzaGFsbG93
RHVtcChvdXRwdXQpCisgICAgICAgIGlmIEBjaGlsZHJlbi5lbXB0eT8KKyAgICAgICAgICAgIG91
dHB1dC5wcmludCAiXG4iCisgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgZW5kCisKKyAgICAg
ICAgb3V0cHV0LnByaW50ICI6XG4iCisgICAgICAgIEBjaGlsZHJlbi5lYWNoIHt8Y2hpbGR8Cisg
ICAgICAgICAgICBjaGlsZC5kZWVwRHVtcChvdXRwdXQsIGluZGVudCArIDEpCisgICAgICAgIH0K
KyAgICBlbmQKKworICAgIGRlZiBnZW5lcmF0ZSBvdXRwdXQKKyAgICAgICAgb3V0cHV0LnB1dHMg
ImNvbnN0ZXhwciBKU0M6OkRPTUpJVDo6SGVhcFJhbmdlICN7QG5hbWV9KEpTQzo6RE9NSklUOjpI
ZWFwUmFuZ2U6OkNvbnN0RXhwciwgI3tAcmFuZ2UuZmlyc3R9LCAje0ByYW5nZS5sYXN0fSk7Igor
ICAgICAgICBAY2hpbGRyZW4uZWFjaCB7fGNoaWxkfAorICAgICAgICAgICAgY2hpbGQuZ2VuZXJh
dGUob3V0cHV0KQorICAgICAgICB9CisgICAgZW5kCisKK3ByaXZhdGUKKyAgICBkZWYgcHJpbnRJ
bmRlbnQgb3V0cHV0LCBpbmRlbnQKKyAgICAgICAgaW5kZW50LnRpbWVzIHsKKyAgICAgICAgICAg
IG91dHB1dC5wcmludCAiICAgICIKKyAgICAgICAgfQorICAgIGVuZAorZW5kCisKK2hlYWRlciA9
IDw8LUVPUworLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisvLyBB
dXRvLWdlbmVyYXRlZCBmaWxlLiBEbyBub3QgbW9kaWZ5LgorCisjcHJhZ21hIG9uY2UKKworI2lu
Y2x1ZGUgPGRvbWppdC9ET01KSVRIZWFwUmFuZ2UuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeyBu
YW1lc3BhY2UgRE9NSklUIHsgbmFtZXNwYWNlIEFic3RyYWN0SGVhcFJlcG9zaXRvcnkgeworRU9T
CisKK2Zvb3RlciA9IDw8LUVPUworfSB9IH0KK0VPUworCiskaW5wdXRGaWxlTmFtZSA9IEFSR1Yu
c2hpZnQKKyRvdXRwdXRGaWxlTmFtZSA9IEFSR1Yuc2hpZnQKK0ZpbGUub3Blbigkb3V0cHV0Rmls
ZU5hbWUsICJ3Iikge3xvdXRwdXR8CisgICAgRmlsZS5vcGVuKCRpbnB1dEZpbGVOYW1lLCAicmIi
KSB7fGZpbGV8CisgICAgICAgIHRyZWUgPSBZQU1MOjpsb2FkKGZpbGUucmVhZCgpKQorICAgICAg
ICBoZWFwID0gdHJlZS5tYXAge3xrZXksIHZhbHVlfAorICAgICAgICAgICAgQWJzdHJhY3RIZWFw
Lm5ldyhrZXksIHZhbHVlKQorICAgICAgICB9LmZpcnN0CisgICAgICAgIGhlYXAuY29tcHV0ZSgw
KQorCisgICAgICAgIG91dHB1dC5wcmludChoZWFkZXIpCisgICAgICAgIG91dHB1dC5wdXRzKCIv
KiBET01KSVQgQWJzdHJhY3QgSGVhcCBUcmVlLiIpCisgICAgICAgIGhlYXAuZGVlcER1bXAob3V0
cHV0LCAwKQorICAgICAgICBvdXRwdXQucHV0cygiKi8iKQorICAgICAgICBoZWFwLmdlbmVyYXRl
KG91dHB1dCkKKyAgICAgICAgb3V0cHV0LnByaW50KGZvb3RlcikKKyAgICB9Cit9CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXgg
NDdiZGFiNDE0OGUyZWIyZTA4NDQ5ZmQ4YzI3NTljYzZkYjhmM2NmYS4uMDIxZmU4NmUyMTE2NWY2
NWQ1OTdlYjdjYzBiZDNkZDJhNjdlYWFlYiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDE2LTEx
LTAyICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgorCisgICAgICAgIFtE
T01KSVRdIEFkZCBET01KSVQ6OlNpZ25hdHVyZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYyOTgwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBqcy9kb20vZG9taml0LWFjY2Vzc29yLWxpY20uaHRtbDoK
KyAgICAgICAgKiBqcy9kb20vZG9taml0LWZ1bmN0aW9uLWVmZmVjdC1zaG91bGQtb3ZlcmxhcC13
aXRoLWNhbGwtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBqcy9kb20vZG9taml0LWZ1
bmN0aW9uLWVmZmVjdC1zaG91bGQtb3ZlcmxhcC13aXRoLWNhbGwuaHRtbDogQWRkZWQuCisgICAg
ICAgICoganMvZG9tL2RvbWppdC1mdW5jdGlvbi1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAg
ICAqIGpzL2RvbS9kb21qaXQtZnVuY3Rpb24tbGljbS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAg
ICAgICAqIGpzL2RvbS9kb21qaXQtZnVuY3Rpb24tbGljbS5odG1sOiBDb3BpZWQgZnJvbSBMYXlv
dXRUZXN0cy9qcy9kb20vZG9taml0LWFjY2Vzc29yLWxpY20uaHRtbC4KKyAgICAgICAgKiBqcy9k
b20vZG9taml0LWZ1bmN0aW9uLXR5cGUtY29udHJhZGljdGlvbi1leHBlY3RlZC50eHQ6IEFkZGVk
LgorICAgICAgICAqIGpzL2RvbS9kb21qaXQtZnVuY3Rpb24tdHlwZS1jb250cmFkaWN0aW9uLmh0
bWw6IENvcGllZCBmcm9tIExheW91dFRlc3RzL2pzL2RvbS9kb21qaXQtYWNjZXNzb3ItbGljbS5o
dG1sLgorICAgICAgICAqIGpzL2RvbS9kb21qaXQtZnVuY3Rpb24tdHlwZS1mYWlsdXJlLWV4cGVj
dGVkLnR4dDogQWRkZWQuCisgICAgICAgICoganMvZG9tL2RvbWppdC1mdW5jdGlvbi10eXBlLWZh
aWx1cmUuaHRtbDogQ29waWVkIGZyb20gTGF5b3V0VGVzdHMvanMvZG9tL2RvbWppdC1hY2Nlc3Nv
ci1saWNtLmh0bWwuCisgICAgICAgICoganMvZG9tL2RvbWppdC1mdW5jdGlvbi5odG1sOiBBZGRl
ZC4KKwogMjAxNi0xMS0wMSAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CiAKICAg
ICAgICAgSW5kZXhlZERCIDIuMDogU3VwcG9ydCBJREJJbmRleCBnZXRBbGwvZ2V0QWxsS2V5cy4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL2RvbS9kb21qaXQtYWNjZXNzb3ItbGljbS5odG1s
IGIvTGF5b3V0VGVzdHMvanMvZG9tL2RvbWppdC1hY2Nlc3Nvci1saWNtLmh0bWwKaW5kZXggZTU2
M2ViYTg5ZmZjZGEyOTFiNTI0ZGNkZjc1MGUyYTMwNmFlMzIwNS4uNDBkNTU2MGRhMDUzOWNiZjA4
NGE5ZTFkMWVmM2ZlM2YxZGMzNTQ0ZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvanMvZG9tL2Rv
bWppdC1hY2Nlc3Nvci1saWNtLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvanMvZG9tL2RvbWppdC1h
Y2Nlc3Nvci1saWNtLmh0bWwKQEAgLTEsMTQgKzEsMyBAQAotPCFET0NUWVBFIEhUTUw+Ci08aHRt
bCBsYW5nPSJlbiI+Ci08aGVhZD4KLTxtZXRhIGNoYXJzZXQ9IlVURi04Ij4KLTwvaGVhZD4KLTxi
b2R5PgotPHNjcmlwdD4KLQotPC9zY3JpcHQ+Ci08L2JvZHk+Ci08L2h0bWw+CiA8IURPQ1RZUEUg
aHRtbD4KIDxodG1sPgogPGhlYWQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9kb20vZG9t
aml0LWZ1bmN0aW9uLWVmZmVjdC1zaG91bGQtb3ZlcmxhcC13aXRoLWNhbGwtZXhwZWN0ZWQudHh0
IGIvTGF5b3V0VGVzdHMvanMvZG9tL2RvbWppdC1mdW5jdGlvbi1lZmZlY3Qtc2hvdWxkLW92ZXJs
YXAtd2l0aC1jYWxsLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xMWRjMTk2YTMyZTI4OGMxMmY1
MTQ1NjFjZmMyMTRkMjllYjljODE3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMv
ZG9tL2RvbWppdC1mdW5jdGlvbi1lZmZlY3Qtc2hvdWxkLW92ZXJsYXAtd2l0aC1jYWxsLWV4cGVj
dGVkLnR4dApAQCAtMCwwICsxLDEwIEBACitUZXN0IGZ1bmN0aW9uIGNhbGxzIHNob3VsZCBvdmVy
bGFwIHdpdGggZWZmZWN0cyBvZiBET01KSVQgZnVuY3Rpb25zLgorCitPbiBzdWNjZXNzLCB5b3Ug
d2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBD
T01QTEVURSIuCisKKworUEFTUyB0ZXN0KCkgaXMgdHJ1ZQorUEFTUyBzdWNjZXNzZnVsbHlQYXJz
ZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pz
L2RvbS9kb21qaXQtZnVuY3Rpb24tZWZmZWN0LXNob3VsZC1vdmVybGFwLXdpdGgtY2FsbC5odG1s
IGIvTGF5b3V0VGVzdHMvanMvZG9tL2RvbWppdC1mdW5jdGlvbi1lZmZlY3Qtc2hvdWxkLW92ZXJs
YXAtd2l0aC1jYWxsLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjhjYjM5MmIyOTQxYmJiOGQzMzFhNzkzMzFk
NThjM2ZhNTgzMDVlNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2pzL2RvbS9kb21q
aXQtZnVuY3Rpb24tZWZmZWN0LXNob3VsZC1vdmVybGFwLXdpdGgtY2FsbC5odG1sCkBAIC0wLDAg
KzEsMzMgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIu
Li8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+
Cis8ZGl2IGlkPSJ0YXJnZXQiPjwvZGl2PgorPC9kaXY+CisKKzxzY3JpcHQ+CitkZXNjcmlwdGlv
bignVGVzdCBmdW5jdGlvbiBjYWxscyBzaG91bGQgb3ZlcmxhcCB3aXRoIGVmZmVjdHMgb2YgRE9N
SklUIGZ1bmN0aW9ucy4nKTsKKworZnVuY3Rpb24gdGVzdCgpCit7CisgICAgdmFyIHRhcmdldCA9
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0YXJnZXQnKTsKKyAgICB0YXJnZXQuc2V0QXR0cmli
dXRlKCJjb2NvYSIsICIwIik7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxZTQ7ICsraSkgewor
ICAgICAgICB2YXIgcmV0ID0gdGFyZ2V0LmdldEF0dHJpYnV0ZSgiY29jb2EiKTsKKyAgICAgICAg
aWYgKHJldCAhPT0gU3RyaW5nKGkpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAg
ICB0YXJnZXQuc2V0QXR0cmlidXRlKCJjb2NvYSIsIFN0cmluZyhpICsgMSkpOworICAgICAgICB2
YXIgcmV0ID0gdGFyZ2V0LmdldEF0dHJpYnV0ZSgiY29jb2EiKTsKKyAgICAgICAgaWYgKHJldCA9
PT0gU3RyaW5nKGkpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICByZXR1
cm4gdHJ1ZTsKK30KKworc2hvdWxkQmVUcnVlKGB0ZXN0KClgKTsKKzwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5
PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvZG9tL2RvbWppdC1mdW5jdGlv
bi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9qcy9kb20vZG9taml0LWZ1bmN0aW9uLWV4cGVj
dGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi40NWU1NmViZGNkOWY2ZjE4NmM0N2NlNzY4YzE1YzIyNWViZTJk
MGM3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMvZG9tL2RvbWppdC1mdW5jdGlv
bi1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMCBAQAorVGVzdCBET01KSVQgZnVuY3Rpb25zIHdv
cmsuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2Fn
ZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIEFsbCB0ZXN0cyBwYXNz
ZWQuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvZG9tL2RvbWppdC1mdW5jdGlvbi1saWNtLWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL2pzL2RvbS9kb21qaXQtZnVuY3Rpb24tbGljbS1leHBlY3Rl
ZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uZjEzYzAzMzA1OTY2MmU1NThiYzZmYjlkNzM5YWIzN2U3OTYxYzhm
YgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2pzL2RvbS9kb21qaXQtZnVuY3Rpb24t
bGljbS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw4IEBACitUZXN0IERPTUpJVCBmdW5jdGlvbiB3
aWxsIGJlIExJQ00tZWQuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAi
UEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworUEFTUyBzdWNj
ZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2pzL2RvbS9kb21qaXQtZnVuY3Rpb24tbGljbS5odG1sIGIvTGF5b3V0VGVzdHMv
anMvZG9tL2RvbWppdC1mdW5jdGlvbi1saWNtLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWYyZTM5OWRkMzU5
ZTFjNGZjYjRkZmRlMmJhY2U5ZTFhMGQ0NGQzOQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2pzL2RvbS9kb21qaXQtZnVuY3Rpb24tbGljbS5odG1sCkBAIC0wLDAgKzEsMzUgQEAKKzwh
RE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJj
ZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJk
ZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKworPGRpdiBpZD0i
cGFyZW50Tm9kZSI+Cis8ZGl2IGlkPSJwcmV2aW91c1NpYmxpbmciPjwvZGl2PjxkaXYgaWQ9InRh
cmdldCI+PGRpdiBpZD0iZmlyc3RDaGlsZCI+PC9kaXY+PGRpdiBpZD0ibGFzdENoaWxkIj48L2Rp
dj48L2Rpdj48ZGl2IGlkPSJuZXh0U2libGluZyI+PC9kaXY+Cis8L2Rpdj4KKworPHNjcmlwdD4K
K2Rlc2NyaXB0aW9uKCdUZXN0IERPTUpJVCBmdW5jdGlvbiB3aWxsIGJlIExJQ00tZWQuJyk7CisK
K2Z1bmN0aW9uIHRlc3QoKSB7CisgICAgdmFyIGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo
J2RpdicpOworICAgIHZhciByZXQgPSAiaW52YWxpZCI7CisgICAgZGl2LnNldEF0dHJpYnV0ZSgi
Y29jb2EiLCAiQ29jb2EiKTsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IDFlNDsgKytpKQorICAg
ICAgICByZXQgPSBkaXYuZ2V0QXR0cmlidXRlKCJjb2NvYSIpOworICAgIHJldHVybiByZXQ7Cit9
Cit2YXIgcmVzdWx0OworKGZ1bmN0aW9uICgpIHsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IDEw
MDsgKytpKSB7CisgICAgICAgIHJlc3VsdCA9IHRlc3QoKTsKKyAgICAgICAgc2hvdWxkQmUoYHJl
c3VsdGAsIGAiQ29jb2EiYCwgdHJ1ZSk7CisgICAgfQorfSgpKTsKKzwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5
PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvZG9tL2RvbWppdC1mdW5jdGlv
bi10eXBlLWNvbnRyYWRpY3Rpb24tZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvanMvZG9tL2Rv
bWppdC1mdW5jdGlvbi10eXBlLWNvbnRyYWRpY3Rpb24tZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjNkNjg3N2Q0YTgwMDY4OGIyMTY3N2JlZmFmZmVlZmZkOGFiMGI3OTYKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9qcy9kb20vZG9taml0LWZ1bmN0aW9uLXR5cGUtY29udHJhZGljdGlv
bi1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw4IEBACitUZXN0IERPTUpJVCBmdW5jdGlvbiB3aWxs
IGNhdXNlIHR5cGUgY29udHJhZGljdGlvbiBnaXZpbmcgdXAuCisKK09uIHN1Y2Nlc3MsIHlvdSB3
aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENP
TVBMRVRFIi4KKworUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBM
RVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL2RvbS9kb21qaXQtZnVuY3Rpb24tdHlw
ZS1jb250cmFkaWN0aW9uLmh0bWwgYi9MYXlvdXRUZXN0cy9qcy9kb20vZG9taml0LWZ1bmN0aW9u
LXR5cGUtY29udHJhZGljdGlvbi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg0ZGM1YjY3Njk0MThlOTY1NTVi
YWI4Mzg3YzMwNjAzNGFmNWMwYzAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9qcy9k
b20vZG9taml0LWZ1bmN0aW9uLXR5cGUtY29udHJhZGljdGlvbi5odG1sCkBAIC0wLDAgKzEsMzUg
QEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9y
ZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2
IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKworPGRp
diBpZD0icGFyZW50Tm9kZSI+Cis8ZGl2IGlkPSJwcmV2aW91c1NpYmxpbmciPjwvZGl2PjxkaXYg
aWQ9InRhcmdldCI+PGRpdiBpZD0iZmlyc3RDaGlsZCI+PC9kaXY+PGRpdiBpZD0ibGFzdENoaWxk
Ij48L2Rpdj48L2Rpdj48ZGl2IGlkPSJuZXh0U2libGluZyI+PC9kaXY+Cis8L2Rpdj4KKworPHNj
cmlwdD4KK2Rlc2NyaXB0aW9uKCdUZXN0IERPTUpJVCBmdW5jdGlvbiB3aWxsIGNhdXNlIHR5cGUg
Y29udHJhZGljdGlvbiBnaXZpbmcgdXAuJyk7CisKK3ZhciBkaXYgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50KCdkaXYnKTsKK2Rpdi5zZXRBdHRyaWJ1dGUoImNvY29hIiwgIkNvY29hIik7CitmdW5j
dGlvbiB0ZXN0KGRpdikgeworICAgIHZhciByZXQgPSAiaW52YWxpZCI7CisgICAgZm9yICh2YXIg
aSA9IDA7IGkgPCAxZTQ7ICsraSkKKyAgICAgICAgcmV0ID0gZGl2LmdldEF0dHJpYnV0ZSgyMDAp
OworICAgIHJldHVybiByZXQ7Cit9Cit2YXIgcmVzdWx0OworKGZ1bmN0aW9uICgpIHsKKyAgICBm
b3IgKHZhciBpID0gMDsgaSA8IDEwMDsgKytpKSB7CisgICAgICAgIHJlc3VsdCA9IHRlc3QoZGl2
KTsKKyAgICAgICAgc2hvdWxkQmUoYHJlc3VsdGAsIGBudWxsYCwgdHJ1ZSk7CisgICAgfQorfSgp
KTsKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3Qu
anMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
anMvZG9tL2RvbWppdC1mdW5jdGlvbi10eXBlLWZhaWx1cmUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0
VGVzdHMvanMvZG9tL2RvbWppdC1mdW5jdGlvbi10eXBlLWZhaWx1cmUtZXhwZWN0ZWQudHh0Cm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjJjMTAyYjM3NmJmODIzMmI0MmJkMWEzY2U0MWRlMTc3MWEyN2I2YzUKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9qcy9kb20vZG9taml0LWZ1bmN0aW9uLXR5cGUtZmFp
bHVyZS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw4IEBACitUZXN0IERPTUpJVCBmdW5jdGlvbiB3
aWxsIGNhdXNlIEJhZFR5cGUgT1NSIGV4aXRzLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUg
YSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIu
CisKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9kb20vZG9taml0LWZ1bmN0aW9uLXR5cGUtZmFpbHVy
ZS5odG1sIGIvTGF5b3V0VGVzdHMvanMvZG9tL2RvbWppdC1mdW5jdGlvbi10eXBlLWZhaWx1cmUu
aHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi42Yjc2NjE0MTg3ZWRhODdkYWMyNmMyMGE2ZTMxMjJjZjA2NTRhODE2
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMvZG9tL2RvbWppdC1mdW5jdGlvbi10
eXBlLWZhaWx1cmUuaHRtbApAQCAtMCwwICsxLDM5IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1s
PgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48
L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2Pgor
PGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisKKzxkaXYgaWQ9InBhcmVudE5vZGUiPgorPGRpdiBp
ZD0icHJldmlvdXNTaWJsaW5nIj48L2Rpdj48ZGl2IGlkPSJ0YXJnZXQiPjxkaXYgaWQ9ImZpcnN0
Q2hpbGQiPjwvZGl2PjxkaXYgaWQ9Imxhc3RDaGlsZCI+PC9kaXY+PC9kaXY+PGRpdiBpZD0ibmV4
dFNpYmxpbmciPjwvZGl2PgorPC9kaXY+CisKKzxzY3JpcHQ+CitkZXNjcmlwdGlvbignVGVzdCBE
T01KSVQgZnVuY3Rpb24gd2lsbCBjYXVzZSBCYWRUeXBlIE9TUiBleGl0cy4nKTsKKwordmFyIGRp
diA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOworZGl2LnNldEF0dHJpYnV0ZSgiY29j
b2EiLCAiQ29jb2EiKTsKK2Z1bmN0aW9uIHRlc3QoZGl2LCBuYW1lKSB7CisgICAgdmFyIHJldCA9
ICJpbnZhbGlkIjsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IDFlNDsgKytpKQorICAgICAgICBy
ZXQgPSBkaXYuZ2V0QXR0cmlidXRlKG5hbWUpOworICAgIHJldHVybiByZXQ7Cit9Cit2YXIgcmVz
dWx0OworKGZ1bmN0aW9uICgpIHsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IDEwMDsgKytpKSB7
CisgICAgICAgIHJlc3VsdCA9IHRlc3QoZGl2LCAnY29jb2EnKTsKKyAgICAgICAgc2hvdWxkQmUo
YHJlc3VsdGAsIGAiQ29jb2EiYCwgdHJ1ZSk7CisgICAgfQorICAgIGZvciAodmFyIGkgPSAwOyBp
IDwgMTAwOyArK2kpIHsKKyAgICAgICAgcmVzdWx0ID0gdGVzdChkaXYsIDQwMCk7CisgICAgICAg
IHNob3VsZEJlKGByZXN1bHRgLCBgbnVsbGAsIHRydWUpOworICAgIH0KK30oKSk7Cis8L3Njcmlw
dD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3Njcmlw
dD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL2RvbS9kb21q
aXQtZnVuY3Rpb24uaHRtbCBiL0xheW91dFRlc3RzL2pzL2RvbS9kb21qaXQtZnVuY3Rpb24uaHRt
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi45MWVhOGE1OTlkODk2NWRlNWEwM2E4NTRkNDk0M2RlNWI5YWMzZDY0Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMvZG9tL2RvbWppdC1mdW5jdGlvbi5odG1s
CkBAIC0wLDAgKzEsNTggQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFk
PgorPGJvZHk+Cis8ZGl2IGlkPSJ0YXJnZXQiIGNvY29hPSJjb2NvYSI+PGRpdiBpZD0iZmlyc3RD
aGlsZCI+PC9kaXY+PGRpdiBpZD0ibGFzdENoaWxkIj48L2Rpdj48L2Rpdj4KKzwvZGl2PgorCis8
c2NyaXB0PgorZGVzY3JpcHRpb24oJ1Rlc3QgRE9NSklUIGZ1bmN0aW9ucyB3b3JrLicpOwordmFy
IGRpdjsKKyhmdW5jdGlvbiAoKSB7CisgICAgZGl2ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
J3RhcmdldCcpOworCisgICAgZnVuY3Rpb24gYSgpCisgICAgeworICAgICAgICByZXR1cm4gZGl2
LmdldEF0dHJpYnV0ZSgnY29jb2EnKSA9PT0gJ2NvY29hJzsKKyAgICB9CisKKyAgICBmdW5jdGlv
biBiKCkKKyAgICB7CisgICAgICAgIHJldHVybiBkaXYuZ2V0QXR0cmlidXRlTm9kZSgnY29jb2En
KS5ub2RlVHlwZSA9PT0gTm9kZS5BVFRSSUJVVEVfTk9ERTsKKyAgICB9CisKKyAgICBmdW5jdGlv
biBjKCkKKyAgICB7CisgICAgICAgIHJldHVybiBkaXYuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2Rp
dicpLmxlbmd0aCA9PT0gMjsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBkKCkKKyAgICB7CisgICAg
ICAgIHJldHVybiBkaXYuaGFzQXR0cmlidXRlKCdjb2NvYScpID09PSB0cnVlOworICAgIH0KKwor
ICAgIGZ1bmN0aW9uIG1haW4oKQorICAgIHsKKyAgICAgICAgaWYgKCFhKCkpCisgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgICAgIGlmICghYigpKQorICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgICAgICBpZiAoIWMoKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAg
ICAgaWYgKCFkKCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHJldHVybiB0
cnVlOworICAgIH0KKworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMWU0OyArK2kpIHsKKyAgICAg
ICAgaWYgKCFtYWluKCkpCisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoImVycm9yIik7Cisg
ICAgfQorICAgIHRlc3RQYXNzZWQoIkFsbCB0ZXN0cyBwYXNzZWQuIik7Cit9KCkpOworPC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3Jp
cHQ+Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>293688</attachid>
            <date>2016-11-02 13:07:11 -0700</date>
            <delta_ts>2016-11-02 16:55:45 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-162980-20161102130311.patch</filename>
            <type>text/plain</type>
            <size>179059</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA4MjcwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBk
ZWFmOGMwYmI4YTZkOGM5ZjEwYmE4MDllY2VmZTJkOWI0MDE2ZDljLi4xMzk1ZTQ5NWEzZjY0NmI0
MTEzYTBiMDY4ZTViZDViMjcxZGRmZTNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMzQgQEAKKzIwMTYtMTEtMDIgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFp
bC5jb20+CisKKyAgICAgICAgW0RPTUpJVF0gQWRkIERPTUpJVDo6U2lnbmF0dXJlCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjI5ODAKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGludHJv
ZHVjZXMgYSBuZXcgbWVjaGFuaXNtIGNhbGxlZCBET01KSVQ6OlNpZ25hdHVyZS4gV2UgY2FuIGFu
bm90YXRlIHRoZSBmdW5jdGlvbiB3aXRoIERPTUpJVDo6U2lnbmF0dXJlLgorICAgICAgICBET01K
SVQ6OlNpZ25hdHVyZSBoYXMgdHlwZSBpbmZvcm1hdGlvbiBvZiB0aGF0IGZ1bmN0aW9uLiBBbmQg
aXQgYWxzbyBtYWludGFpbnMgdGhlIGVmZmVjdCBvZiB0aGUgZnVuY3Rpb24gYW5kIHRoZQorICAg
ICAgICBwb2ludGVyIHRvIHRoZSB1bnNhZmUgZnVuY3Rpb24uIFRoZSB1bnNhZmUgZnVuY3Rpb24g
bWVhbnMgdGhlIGZ1bmN0aW9uIHdpdGhvdXQgdHlwZSBhbmQgYXJndW1lbnQgY291bnQgY2hlY2tz
LgorICAgICAgICBCeSB1c2luZyB0aGVzZSBpbmZvcm1hdGlvbiwgd2UgY2FuIHNlcGFyYXRlIHR5
cGUgYW5kIGFyZ3VtZW50IGNvdW50IGNoZWNrcyBmcm9tIHRoZSBmdW5jdGlvbi4gQW5kIHdlIGNh
biBlbWl0CisgICAgICAgIHRoZXNlIHRoaW5ncyBhcyBERkcgY2hlY2tzIGFuZCBjb252ZXJ0IHRo
ZSBmdW5jdGlvbiBjYWxsIGl0c2VsZiB0byBDYWxsRE9NIG5vZGUuIENhbGxET00gbm9kZSBjYW4g
Y2FsbCB0aGUgdW5zYWZlCisgICAgICAgIGZ1bmN0aW9uIGRpcmVjdGx5IHdpdGhvdXQgYW55IGNo
ZWNrcy4gRnVydGhlcm1vcmUsIHRoaXMgQ2FsbERPTSBub2RlIGNhbiByZXByZXNlbnQgaXRzIG93
biBjbG9iYmVyaXppbmcgcnVsZXMgYmFzZWQKKyAgICAgICAgb24gRE9NSklUOjpFZmZlY3QgbWFp
bnRhaW5lZCBieSBET01KSVQ6OlNpZ25hdHVyZS4gSXQgYWxsb3dzIHVzIHRvIG1ha2Ugb3BhcXVl
IENhbGwgbm9kZSB0byBhIENhbGxET00gbm9kZSB0aGF0CisgICAgICAgIG1lcmVseSByZWFkcyBz
b21lIHBhcnQgb2YgaGVhcC4gVGhlc2UgY2hhbmdlcyAoMSkgY2FuIGRyb3AgZHVwbGljYXRlIHR5
cGUgY2hlY2tzIGluIERGRywgKDIpIG9mZmVyIGFiaWxpdHkgdG8gbW92ZQorICAgICAgICBDYWxs
RE9NIG5vZGUgdG8gc29tZXdoZXJlLCBhbmQgKDMpIHRyYWNrIG1vcmUgZGV0YWlsZWQgaGVhcCBy
ZWFkcyBhbmQgd3JpdGVzIG9mIENhbGxET00gbm9kZXMuCisKKyAgICAgICAgV2UgZmlyc3QgZW1p
dCBDYWxsIG5vZGUgd2l0aCBET01KSVQ6OlNpZ25hdHVyZSBpbiBERkdCeXRlQ29kZVBhcnNlci4g
QW5kIGluIHRoZSBmaXh1cCBwaGFzZSwgd2UgYXR0ZW1wdCB0byBsb3dlcgorICAgICAgICBDYWxs
IG5vZGUgdG8gQ2FsbERPTSBub2RlIHdpdGggY2hlY2tzICYgZWRnZSBmaWx0ZXJzLiBUaGlzIGlz
IGJlY2F1c2Ugd2UgZG8gbm90IGtub3cgdGhlIHR5cGUgcHJlZGljdGlvbnMgaW4KKyAgICAgICAg
REZHQnl0ZUNvZGVQYXJzZXIgcGhhc2UuIElmIHdlIGFsd2F5cyBlbWl0IENhbGxET00gbm9kZSBp
biBERkdCeXRlQ29kZVBhcnNlciwgaWYgd2UgZXZhbHVhdGUgYGRpdi5nZXRBdHRyaWJ1dGUodHJ1
ZSlgCisgICAgICAgIHRoaW5neSwgdGhlIFVuY291bnRhYmxlIE9TUiBleGl0cyByZXBlYXRlZGx5
IGhhcHBlbiBiZWNhdXNlIEFJIGZpZ3VyZXMgb3V0IHRoZSBhYnN0cmFjdCB2YWx1ZSBpcyBjbGVh
cmVkLgorCisgICAgICAgIEN1cnJlbnRseSwgRE9NSklUIHNpZ25hdHVyZSBvbmx5IGFsbG93cyB0
aGUgdHlwZXMgdGhhdCBjYW4gcmVzaWRlIGluIEdQUi4gVGhpcyBpcyBiZWNhdXNlIHRoZSB0eXBl
cyBvZiB0aGUgdW5zYWZlCisgICAgICAgIGZ1bmN0aW9uIGFyZ3VtZW50cyBhcmUgcmVwcmVzZW50
ZWQgYXMgdGhlIHNlcXVlbmNlIG9mIHZvaWQqLiBJbiB0aGUgZnV0dXJlLCB3ZSB3aWxsIGV4dGVu
ZCB0byBhY2NlcHQgb3RoZXIgdHlwZXMgbGlrZQorICAgICAgICBmbG9hdCwgZG91YmxlIGV0Yy4K
KworICAgICAgICBXZSBhbm5vdGF0ZSBzZXZlcmFsIGZ1bmN0aW9ucyBpbiBFbGVtZW50LiBJbiBw
YXJ0aWN1bGFyLCB3ZSBhbm5vdGF0ZSBFbGVtZW50OjpnZXRBdHRyaWJ1dGUuIFRoaXMgYWxsb3dz
IHVzIHRvIHBlcmZvcm0KKyAgICAgICAgTElDTSBpbiBEcm9tYWVvIGRvbS1hdHRyIHRlc3QuIElu
IHRoZSBEcm9tYWVvIGRvbS1hdHRyIGdldEF0dHJpYnV0ZSB0ZXN0LCB3ZSBjYW4gc2VlIDMyeCBp
bXByb3ZlbWVudC4gKDEzNDk3NC44IHYucy4gNDIwMy40KQorCisgICAgICAgICogSmF2YVNjcmlw
dENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBieXRlY29kZS9DYWxs
VmFyaWFudC5oOgorICAgICAgICAoSlNDOjpDYWxsVmFyaWFudDo6ZnVuY3Rpb25FeGVjdXRhYmxl
KToKKyAgICAgICAgKEpTQzo6Q2FsbFZhcmlhbnQ6Om5hdGl2ZUV4ZWN1dGFibGUpOgorICAgICAg
ICAoSlNDOjpDYWxsVmFyaWFudDo6c2lnbmF0dXJlRm9yKToKKyAgICAgICAgKiBieXRlY29kZS9T
cGVjdWxhdGVkVHlwZS5oOgorICAgICAgICAoSlNDOjppc05vdFN0cmluZ1NwZWN1bGF0aW9uKToK
KyAgICAgICAgKEpTQzo6aXNOb3RJbnQzMlNwZWN1bGF0aW9uKToKKyAgICAgICAgKEpTQzo6aXNO
b3RCb29sZWFuU3BlY3VsYXRpb24pOgorICAgICAgICAqIGRmZy9ERkdBYnN0cmFjdEludGVycHJl
dGVySW5saW5lcy5oOgorICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0SW50ZXJwcmV0ZXI8QWJz
dHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyk6CisgICAgICAgICogZGZnL0RGR0J5dGVD
b2RlUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6YWRkQ2Fs
bCk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUNhbGwpOgorICAg
ICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjphdHRlbXB0VG9JbmxpbmVDYWxsKToKKyAg
ICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW5saW5pbmcpOgorICAgICAg
ICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVET01KSVRDYWxsKToKKyAgICAgICAg
KEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayk6CisgICAgICAgICogZGZnL0RG
R0Nsb2JiZXJpemUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpjbG9iYmVyaXplKToKKyAgICAgICAg
KiBkZmcvREZHRG9lc0dDLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpkb2VzR0MpOgorICAgICAg
ICAqIGRmZy9ERkdGaXh1cFBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpGaXh1cFBoYXNl
OjpmaXh1cE5vZGUpOgorICAgICAgICAoSlNDOjpERkc6OkZpeHVwUGhhc2U6OmF0dGVtcHRUb01h
a2VDYWxsRE9NKToKKyAgICAgICAgKEpTQzo6REZHOjpGaXh1cFBoYXNlOjpmaXh1cENoZWNrRE9N
KToKKyAgICAgICAgKEpTQzo6REZHOjpGaXh1cFBoYXNlOjpmaXh1cENhbGxET00pOgorICAgICAg
ICAqIGRmZy9ERkdOb2RlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpjb252ZXJ0VG9D
YWxsRE9NKToKKyAgICAgICAgKiBkZmcvREZHTm9kZS5oOgorICAgICAgICAoSlNDOjpERkc6Ok5v
ZGU6Omhhc0hlYXBQcmVkaWN0aW9uKToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpzaG91bGRT
cGVjdWxhdGVOb3RJbnQzMik6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6c2hvdWxkU3BlY3Vs
YXRlTm90Qm9vbGVhbik6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6c2hvdWxkU3BlY3VsYXRl
Tm90U3RyaW5nKToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpoYXNTaWduYXR1cmUpOgorICAg
ICAgICAoSlNDOjpERkc6Ok5vZGU6OnNpZ25hdHVyZSk6CisgICAgICAgICogZGZnL0RGR05vZGVU
eXBlLmg6CisgICAgICAgICogZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcDoK
KyAgICAgICAgKiBkZmcvREZHU2FmZVRvRXhlY3V0ZS5oOgorICAgICAgICAoSlNDOjpERkc6OnNh
ZmVUb0V4ZWN1dGUpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHA6CisgICAg
ICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVDYWxsRE9NKToKKyAgICAgICAg
KiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuaDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2
ZUpJVDo6Y2FsbE9wZXJhdGlvbik6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJf
NjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToKKyAg
ICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGRvbWppdC9ET01KSVRFZmZlY3Qu
aDoKKyAgICAgICAgKEpTQzo6RE9NSklUOjpFZmZlY3Q6OkVmZmVjdCk6CisgICAgICAgIChKU0M6
OkRPTUpJVDo6RWZmZWN0Ojpmb3JXcml0ZSk6CisgICAgICAgIChKU0M6OkRPTUpJVDo6RWZmZWN0
Ojpmb3JSZWFkKToKKyAgICAgICAgKEpTQzo6RE9NSklUOjpFZmZlY3Q6OmZvclJlYWRXcml0ZSk6
CisgICAgICAgIChKU0M6OkRPTUpJVDo6RWZmZWN0Ojpmb3JQdXJlKToKKyAgICAgICAgKEpTQzo6
RE9NSklUOjpFZmZlY3Q6OmZvckRlZik6CisgICAgICAgIChKU0M6OkRPTUpJVDo6RWZmZWN0Ojpt
dXN0R2VuZXJhdGUpOgorICAgICAgICBJbiBjbGFuZywgd2UgY2Fubm90IG1ha2UgdGhpcyBFZmZl
Y3QgY29uc3RydWN0b3IgY29uc3RleHByIGlmIHdlIHVzZSBPcHRpb25hbDxIZWFwUmFuZ2U+Lgor
ICAgICAgICBTbyB3ZSB1c2UgSGVhcFJhbmdlOjp0b3AoKSBmb3IgTnVsbG9wdCBkZWYgbm93Lgor
CisgICAgICAgICogZG9taml0L0RPTUpJVEhlYXBSYW5nZS5oOgorICAgICAgICAoSlNDOjpET01K
SVQ6OkhlYXBSYW5nZTo6ZnJvbVJhdyk6CisgICAgICAgIChKU0M6OkRPTUpJVDo6SGVhcFJhbmdl
OjpvcGVyYXRvciBib29sKToKKyAgICAgICAgKEpTQzo6RE9NSklUOjpIZWFwUmFuZ2U6Om9wZXJh
dG9yPT0pOgorICAgICAgICAoSlNDOjpET01KSVQ6OkhlYXBSYW5nZTo6b3BlcmF0b3IhPSk6Cisg
ICAgICAgIChKU0M6OkRPTUpJVDo6SGVhcFJhbmdlOjpmcm9tQ29uc3RhbnQpOgorICAgICAgICAq
IGRvbWppdC9ET01KSVRTaWduYXR1cmUuaDogQ29waWVkIGZyb20gU291cmNlL0phdmFTY3JpcHRD
b3JlL2RvbWppdC9ET01KSVRFZmZlY3QuaC4KKyAgICAgICAgKEpTQzo6RE9NSklUOjpTaWduYXR1
cmU6OlNpZ25hdHVyZSk6CisgICAgICAgIChKU0M6OkRPTUpJVDo6U2lnbmF0dXJlOjphcmd1bWVu
dENvdW50KToKKyAgICAgICAgKEpTQzo6RE9NSklUOjpTaWduYXR1cmU6OmNoZWNrRE9NKToKKyAg
ICAgICAgKiBmdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpjYW5D
b21waWxlKToKKyAgICAgICAgKiBmdGwvRlRMTG93ZXJERkdUb0IzLmNwcDoKKyAgICAgICAgKEpT
Qzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZU5vZGUpOgorICAgICAgICAoSlNDOjpG
VEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlQ2FsbERPTSk6CisgICAgICAgICogaml0L0pJ
VE9wZXJhdGlvbnMuaDoKKyAgICAgICAgKiBqaXQvSklUVGh1bmtzLmNwcDoKKyAgICAgICAgKEpT
Qzo6SklUVGh1bmtzOjpob3N0RnVuY3Rpb25TdHViKToKKyAgICAgICAgKiBqaXQvSklUVGh1bmtz
Lmg6CisgICAgICAgICogcnVudGltZS9KU0JvdW5kRnVuY3Rpb24uY3BwOgorICAgICAgICAoSlND
OjpKU0JvdW5kRnVuY3Rpb246OmNyZWF0ZSk6CisgICAgICAgICogcnVudGltZS9KU0NlbGwuaDoK
KyAgICAgICAgKiBydW50aW1lL0pTRnVuY3Rpb24uY3BwOgorICAgICAgICAoSlNDOjpKU0Z1bmN0
aW9uOjpjcmVhdGUpOgorICAgICAgICAqIHJ1bnRpbWUvSlNGdW5jdGlvbi5oOgorICAgICAgICAq
IHJ1bnRpbWUvSlNOYXRpdmVTdGRGdW5jdGlvbi5jcHA6CisgICAgICAgIChKU0M6OkpTTmF0aXZl
U3RkRnVuY3Rpb246OmNyZWF0ZSk6CisgICAgICAgICogcnVudGltZS9KU09iamVjdC5jcHA6Cisg
ICAgICAgIChKU0M6OkpTT2JqZWN0OjpwdXREaXJlY3ROYXRpdmVGdW5jdGlvbik6CisgICAgICAg
ICogcnVudGltZS9KU09iamVjdC5oOgorICAgICAgICAqIHJ1bnRpbWUvTG9va3VwLmg6CisgICAg
ICAgIChKU0M6Okhhc2hUYWJsZVZhbHVlOjpmdW5jdGlvbkxlbmd0aCk6CisgICAgICAgIChKU0M6
Okhhc2hUYWJsZVZhbHVlOjpzaWduYXR1cmUpOgorICAgICAgICAoSlNDOjpyZWlmeVN0YXRpY1By
b3BlcnR5KToKKyAgICAgICAgKiBydW50aW1lL05hdGl2ZUV4ZWN1dGFibGUuY3BwOgorICAgICAg
ICAoSlNDOjpOYXRpdmVFeGVjdXRhYmxlOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpOYXRpdmVF
eGVjdXRhYmxlOjpOYXRpdmVFeGVjdXRhYmxlKToKKyAgICAgICAgKiBydW50aW1lL05hdGl2ZUV4
ZWN1dGFibGUuaDoKKyAgICAgICAgKiBydW50aW1lL1Byb3BlcnR5U2xvdC5oOgorICAgICAgICAq
IHJ1bnRpbWUvVk0uY3BwOgorICAgICAgICAoSlNDOjpWTTo6Z2V0SG9zdEZ1bmN0aW9uKToKKyAg
ICAgICAgKiBydW50aW1lL1ZNLmg6CisKIDIwMTYtMTEtMDEgIFJ5b3N1a2UgTml3YSAgPHJuaXdh
QHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmVtb3ZlIENVU1RPTV9FTEVNRU5UUyBidWlsZCBmbGFn
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cKaW5kZXggOWFlZGU3NjM2MWNkNDU1YjAxNzBkMjIxOTVjNDkyNWNiZGU1NDNiMC4u
Y2NjMjQ5NWVlYjZmNzdhOGY2YjlmODJlYjc3NWE4N2QwMTlhOTlhOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDk4IEBACisyMDE2LTExLTAyICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21h
aWwuY29tPgorCisgICAgICAgIFtET01KSVRdIEFkZCBET01KSVQ6OlNpZ25hdHVyZQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYyOTgwCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2UgaW50cm9kdWNlIERP
TUpJVDo6U2lnbmF0dXJlLiBUaGlzIHNpZ25hdHVyZSBvYmplY3QgaXMgYXV0b21hdGljYWxseSBn
ZW5lcmF0ZWQgYnkgSURMIGNvZGUgZ2VuZXJhdG9yLgorICAgICAgICBJdCBob2xkcyAoMSkgdHlw
ZXMsICgyKSBwb2ludGVyIHRvIHRoZSB1bnNhZmUgZnVuY3Rpb24gKHRoZSBmdW5jdGlvbiB3aXRo
b3V0IGNoZWNrcyksIGFuZCAoMykgdGhlIGVmZmVjdAorICAgICAgICBvZiB0aGUgZnVuY3Rpb24u
IFdlIHVzZSBjb25zdGV4cHIgdG8gaW5pdGlhbGl6ZSBET01KSVQ6OlNpZ25hdHVyZSB3aXRob3V0
IGludm9raW5nIGdsb2JhbCBjb25zdHJ1Y3RvcnMuCisgICAgICAgIFRodXMgdGhlIGNvbnRlbnQg
aXMgZW1iZWRkZWQgaW50byB0aGUgYmluYXJ5IGFzIHRoZSBjb25zdGFudCB2YWx1ZXMuCisKKyAg
ICAgICAgV2UgYWxzbyBjbGVhbiB1cCB0aGUgSURMIGNvZGUgZ2VuZXJhdG9yIHJlbGF0ZWQgdG8g
RE9NSklUIHBhcnQuIEluc3RlYWQgb2Ygc3dpdGNoaW5nIHRoaW5ncyBpbnNpZGUgSURMCisgICAg
ICAgIGNvZGUgZ2VuZXJhdG9yLCB3ZSB1c2UgQysrIHRlbXBsYXRlIHRvIGRpc3BhdGNoIHRoaW5n
cyBhdCBjb21waWxlIHRpbWUuIFRoaXMgdGVtcGxhdGUgbWV0YSBwcm9ncmFtbWluZworICAgICAg
ICBpcyBoaWdobHkgdXRpbGl6ZWQgaW4gSURMIHRoZXNlIGRheXMuCisKKyAgICAgICAgVG8gbWFr
ZSBET01KSVQ6OlNpZ25hdHVyZSBjb25zdGV4cHIsIHdlIGFsc28gbmVlZCB0byBkZWZpbmUgRE9N
SklUIGFic3RyYWN0IGhlYXAgdGhpbmdzIGluIHRoZSBidWlsZCB0aW1lLgorICAgICAgICBUbyBk
byBzbywgd2UgaW50cm9kdWNlIGEgdGlueSBSdWJ5IHNjcmlwdCB0byBjYWxjdWxhdGUgdGhlIHJh
bmdlIG9mIGFic3RyYWN0IGhlYXBzLiBXZSBjYW4gb2ZmZXIgdGhlIGFic3RyYWN0CisgICAgICAg
IGhlYXAgdHJlZSBhcyBZQU1MIGZvcm1hdCBhbmQgdGhlIHNjcmlwdCB3aWxsIHByb2R1Y2UgYSBD
KysgaGVhZGVyIGhvbGRpbmcgdGhlIGNhbGN1bGF0ZWQgYWJzdHJhY3QgaGVhcCByYW5nZXMKKwor
ICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLm1ha2U6
CisgICAgICAgICogRm9yd2FyZGluZ0hlYWRlcnMvYnl0ZWNvZGUvU3BlY3VsYXRlZFR5cGUuaDog
UmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL2RvbWppdC9ET01KSVRBYnN0cmFjdEhlYXBSZXBv
c2l0b3J5LmguCisgICAgICAgICogRm9yd2FyZGluZ0hlYWRlcnMvZG9taml0L0RPTUpJVFNpZ25h
dHVyZS5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvZG9taml0L0RPTUpJVEFic3RyYWN0
SGVhcFJlcG9zaXRvcnkuY3BwLgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvajoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5oOgorICAg
ICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtOgorICAgICAgICAoR2Vu
ZXJhdGVIZWFkZXIpOgorICAgICAgICAoR2VuZXJhdGVQcm9wZXJ0aWVzSGFzaFRhYmxlKToKKyAg
ICAgICAgKEdldFVuc2FmZUFyZ3VtZW50VHlwZSk6CisgICAgICAgIChHZXRBcmd1bWVudFR5cGVG
aWx0ZXIpOgorICAgICAgICAoR2V0UmVzdWx0VHlwZUZpbHRlcik6CisgICAgICAgIChHZW5lcmF0
ZUltcGxlbWVudGF0aW9uKToKKyAgICAgICAgKFVuc2FmZVRvTmF0aXZlKToKKyAgICAgICAgKEdl
bmVyYXRlSGFzaFRhYmxlVmFsdWVBcnJheSk6CisgICAgICAgIChDb21wdXRlRnVuY3Rpb25TcGVj
aWFsKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0lETEF0dHJpYnV0ZXMudHh0OgorICAg
ICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RET01KSVQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6QmluZGluZ0NhbGxlcjxKU1Rlc3RET01KSVQ+OjpjYXN0Rm9yT3BlcmF0aW9u
KToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RET01KSVRBbnlBdHRyRE9NSklUOjpUZXN0RE9NSklU
QW55QXR0ckRPTUpJVCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0RE9NSklUQm9vbGVhbkF0dHJE
T01KSVQ6OlRlc3RET01KSVRCb29sZWFuQXR0ckRPTUpJVCk6CisgICAgICAgIChXZWJDb3JlOjpU
ZXN0RE9NSklUQnl0ZUF0dHJET01KSVQ6OlRlc3RET01KSVRCeXRlQXR0ckRPTUpJVCk6CisgICAg
ICAgIChXZWJDb3JlOjpUZXN0RE9NSklUT2N0ZXRBdHRyRE9NSklUOjpUZXN0RE9NSklUT2N0ZXRB
dHRyRE9NSklUKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RET01KSVRTaG9ydEF0dHJET01KSVQ6
OlRlc3RET01KSVRTaG9ydEF0dHJET01KSVQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdERPTUpJ
VFVuc2lnbmVkU2hvcnRBdHRyRE9NSklUOjpUZXN0RE9NSklUVW5zaWduZWRTaG9ydEF0dHJET01K
SVQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdERPTUpJVExvbmdBdHRyRE9NSklUOjpUZXN0RE9N
SklUTG9uZ0F0dHJET01KSVQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdERPTUpJVFVuc2lnbmVk
TG9uZ0F0dHJET01KSVQ6OlRlc3RET01KSVRVbnNpZ25lZExvbmdBdHRyRE9NSklUKToKKyAgICAg
ICAgKFdlYkNvcmU6OlRlc3RET01KSVRMb25nTG9uZ0F0dHJET01KSVQ6OlRlc3RET01KSVRMb25n
TG9uZ0F0dHJET01KSVQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdERPTUpJVFVuc2lnbmVkTG9u
Z0xvbmdBdHRyRE9NSklUOjpUZXN0RE9NSklUVW5zaWduZWRMb25nTG9uZ0F0dHJET01KSVQpOgor
ICAgICAgICAoV2ViQ29yZTo6VGVzdERPTUpJVEZsb2F0QXR0ckRPTUpJVDo6VGVzdERPTUpJVEZs
b2F0QXR0ckRPTUpJVCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0RE9NSklUVW5yZXN0cmljdGVk
RmxvYXRBdHRyRE9NSklUOjpUZXN0RE9NSklUVW5yZXN0cmljdGVkRmxvYXRBdHRyRE9NSklUKToK
KyAgICAgICAgKFdlYkNvcmU6OlRlc3RET01KSVREb3VibGVBdHRyRE9NSklUOjpUZXN0RE9NSklU
RG91YmxlQXR0ckRPTUpJVCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0RE9NSklUVW5yZXN0cmlj
dGVkRG91YmxlQXR0ckRPTUpJVDo6VGVzdERPTUpJVFVucmVzdHJpY3RlZERvdWJsZUF0dHJET01K
SVQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdERPTUpJVERvbVN0cmluZ0F0dHJET01KSVQ6OlRl
c3RET01KSVREb21TdHJpbmdBdHRyRE9NSklUKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RET01K
SVRCeXRlU3RyaW5nQXR0ckRPTUpJVDo6VGVzdERPTUpJVEJ5dGVTdHJpbmdBdHRyRE9NSklUKToK
KyAgICAgICAgKFdlYkNvcmU6OlRlc3RET01KSVRVc3ZTdHJpbmdBdHRyRE9NSklUOjpUZXN0RE9N
SklUVXN2U3RyaW5nQXR0ckRPTUpJVCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0RE9NSklUTm9k
ZUF0dHJET01KSVQ6OlRlc3RET01KSVROb2RlQXR0ckRPTUpJVCk6CisgICAgICAgIChXZWJDb3Jl
OjpUZXN0RE9NSklUQm9vbGVhbk51bGxhYmxlQXR0ckRPTUpJVDo6VGVzdERPTUpJVEJvb2xlYW5O
dWxsYWJsZUF0dHJET01KSVQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdERPTUpJVEJ5dGVOdWxs
YWJsZUF0dHJET01KSVQ6OlRlc3RET01KSVRCeXRlTnVsbGFibGVBdHRyRE9NSklUKToKKyAgICAg
ICAgKFdlYkNvcmU6OlRlc3RET01KSVRPY3RldE51bGxhYmxlQXR0ckRPTUpJVDo6VGVzdERPTUpJ
VE9jdGV0TnVsbGFibGVBdHRyRE9NSklUKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RET01KSVRT
aG9ydE51bGxhYmxlQXR0ckRPTUpJVDo6VGVzdERPTUpJVFNob3J0TnVsbGFibGVBdHRyRE9NSklU
KToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RET01KSVRVbnNpZ25lZFNob3J0TnVsbGFibGVBdHRy
RE9NSklUOjpUZXN0RE9NSklUVW5zaWduZWRTaG9ydE51bGxhYmxlQXR0ckRPTUpJVCk6CisgICAg
ICAgIChXZWJDb3JlOjpUZXN0RE9NSklUTG9uZ051bGxhYmxlQXR0ckRPTUpJVDo6VGVzdERPTUpJ
VExvbmdOdWxsYWJsZUF0dHJET01KSVQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdERPTUpJVFVu
c2lnbmVkTG9uZ051bGxhYmxlQXR0ckRPTUpJVDo6VGVzdERPTUpJVFVuc2lnbmVkTG9uZ051bGxh
YmxlQXR0ckRPTUpJVCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0RE9NSklUTG9uZ0xvbmdOdWxs
YWJsZUF0dHJET01KSVQ6OlRlc3RET01KSVRMb25nTG9uZ051bGxhYmxlQXR0ckRPTUpJVCk6Cisg
ICAgICAgIChXZWJDb3JlOjpUZXN0RE9NSklUVW5zaWduZWRMb25nTG9uZ051bGxhYmxlQXR0ckRP
TUpJVDo6VGVzdERPTUpJVFVuc2lnbmVkTG9uZ0xvbmdOdWxsYWJsZUF0dHJET01KSVQpOgorICAg
ICAgICAoV2ViQ29yZTo6VGVzdERPTUpJVEZsb2F0TnVsbGFibGVBdHRyRE9NSklUOjpUZXN0RE9N
SklURmxvYXROdWxsYWJsZUF0dHJET01KSVQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdERPTUpJ
VFVucmVzdHJpY3RlZEZsb2F0TnVsbGFibGVBdHRyRE9NSklUOjpUZXN0RE9NSklUVW5yZXN0cmlj
dGVkRmxvYXROdWxsYWJsZUF0dHJET01KSVQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdERPTUpJ
VERvdWJsZU51bGxhYmxlQXR0ckRPTUpJVDo6VGVzdERPTUpJVERvdWJsZU51bGxhYmxlQXR0ckRP
TUpJVCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0RE9NSklUVW5yZXN0cmljdGVkRG91YmxlTnVs
bGFibGVBdHRyRE9NSklUOjpUZXN0RE9NSklUVW5yZXN0cmljdGVkRG91YmxlTnVsbGFibGVBdHRy
RE9NSklUKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RET01KSVREb21TdHJpbmdOdWxsYWJsZUF0
dHJET01KSVQ6OlRlc3RET01KSVREb21TdHJpbmdOdWxsYWJsZUF0dHJET01KSVQpOgorICAgICAg
ICAoV2ViQ29yZTo6VGVzdERPTUpJVEJ5dGVTdHJpbmdOdWxsYWJsZUF0dHJET01KSVQ6OlRlc3RE
T01KSVRCeXRlU3RyaW5nTnVsbGFibGVBdHRyRE9NSklUKToKKyAgICAgICAgKFdlYkNvcmU6OlRl
c3RET01KSVRVc3ZTdHJpbmdOdWxsYWJsZUF0dHJET01KSVQ6OlRlc3RET01KSVRVc3ZTdHJpbmdO
dWxsYWJsZUF0dHJET01KSVQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdERPTUpJVE5vZGVOdWxs
YWJsZUF0dHJET01KSVQ6OlRlc3RET01KSVROb2RlTnVsbGFibGVBdHRyRE9NSklUKToKKyAgICAg
ICAgKFdlYkNvcmU6OmpzVGVzdERPTUpJVFByb3RvdHlwZUZ1bmN0aW9uR2V0QXR0cmlidXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdERPTUpJVFByb3RvdHlwZUZ1bmN0aW9uR2V0QXR0cmli
dXRlQ2FsbGVyKToKKyAgICAgICAgKFdlYkNvcmU6OnVuc2FmZUpzVGVzdERPTUpJVFByb3RvdHlw
ZUZ1bmN0aW9uR2V0QXR0cmlidXRlKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
VGVzdERPTUpJVC5pZGw6CisgICAgICAgICogZG9tL0VsZW1lbnQuaWRsOgorICAgICAgICAqIGRv
bWppdC9ET01KSVRBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LnlhbWw6IEFkZGVkLgorICAgICAgICAq
IGRvbWppdC9ET01KSVRJRExDb252ZXJ0Lmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6RE9N
SklUOjpEaXJlY3RDb252ZXJ0ZXI8SURMRE9NU3RyaW5nPjo6ZGlyZWN0Q29udmVydDxTdHJpbmdD
b252ZXJzaW9uQ29uZmlndXJhdGlvbjo6Tm9ybWFsPik6CisgICAgICAgICogZG9taml0L0RPTUpJ
VElETFR5cGUuaDogQWRkZWQuCisgICAgICAgICogZG9taml0L0RPTUpJVElETFR5cGVGaWx0ZXIu
aDogQWRkZWQuCisgICAgICAgICogZG9taml0L0pTRG9jdW1lbnRET01KSVQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RG9jdW1lbnREb2N1bWVudEVsZW1lbnRET01KSVQ6OmNhbGxET01HZXR0ZXIp
OgorICAgICAgICAqIGRvbWppdC9KU05vZGVET01KSVQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Tm9kZUZpcnN0Q2hpbGRET01KSVQ6OmNhbGxET01HZXR0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6
Tm9kZUxhc3RDaGlsZERPTUpJVDo6Y2FsbERPTUdldHRlcik6CisgICAgICAgIChXZWJDb3JlOjpO
b2RlTmV4dFNpYmxpbmdET01KSVQ6OmNhbGxET01HZXR0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6
Tm9kZVByZXZpb3VzU2libGluZ0RPTUpJVDo6Y2FsbERPTUdldHRlcik6CisgICAgICAgIChXZWJD
b3JlOjpOb2RlUGFyZW50Tm9kZURPTUpJVDo6Y2FsbERPTUdldHRlcik6CisgICAgICAgIChXZWJD
b3JlOjpOb2RlT3duZXJEb2N1bWVudERPTUpJVDo6Y2FsbERPTUdldHRlcik6CisgICAgICAgICog
ZG9taml0L2dlbmVyYXRlLWFic3RyYWN0LWhlYXAucmI6IEFkZGVkLgorCiAyMDE2LTExLTAxICBE
YXZlIEh5YXR0ICA8aHlhdHRAYXBwbGUuY29tPgogCiAgICAgICAgIFtDU1MgUGFyc2VyXSBTdXBw
b3J0IHRoZSBzaGFkb3cgRE9NCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2
YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDJmYmQy
ZTRjZjMxN2MyZjg0ZTJlMTM5N2Q4NTE0MTFiNTk2N2UwZTIuLmJmNGExOWQ1OTI3ZGZkZTFhOWZm
NmYyNGEzZTliNWY2Yzc4MGJlOWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9K
YXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0y
MTg0LDYgKzIxODQsNyBAQAogCQlFMzNGNTA4NTFCODQzN0EwMDA0MTM4NTYgLyogSlNJbnRlcm5h
bFByb21pc2VEZWZlcnJlZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRTMzRjUwODMxQjg0MzdBMDAwNDEzODU2IC8qIEpTSW50ZXJuYWxQcm9taXNlRGVm
ZXJyZWQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQlFMzNGNTA4NzFCODQ0OUVGMDA0MTM4NTYgLyogSlNJbnRlcm5hbFByb21pc2VDb25zdHJ1Y3Rv
ci5sdXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUz
M0Y1MDg2MUI4NDQ5RUYwMDQxMzg1NiAvKiBKU0ludGVybmFsUHJvbWlzZUNvbnN0cnVjdG9yLmx1
dC5oICovOyB9OwogCQlFMzRFREJGNzFEQjVGRkM5MDBEQzg3QTUgLyogRnJhbWVUcmFjZXJzLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzRFREJGNjFE
QjVGRkMxMDBEQzg3QTUgLyogRnJhbWVUcmFjZXJzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJRTM1MDcwOEExREM0OUJCRjAwODlCQ0Q2IC8qIERP
TUpJVFNpZ25hdHVyZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gRTM1MDcwODkxREM0OUJCNjAwODlCQ0Q2IC8qIERPTUpJVFNpZ25hdHVyZS5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUUzNTQ2MjJCMUI2
MDY1RDEwMDU0NTM4NiAvKiBDb25zdHJ1Y3RBYmlsaXR5LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzU0NjIyQTFCNjA2NUQxMDA1NDUzODYgLyogQ29u
c3RydWN0QWJpbGl0eS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCUUzNTU1QjhBMURBRTAzQTUwMEYzNjkyMSAvKiBET01KSVRDYWxsRE9NR2V0dGVy
UGF0Y2hwb2ludC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRTM1NTVCODkxREFFMDNBMjAwRjM2OTIxIC8qIERPTUpJVENhbGxET01HZXR0ZXJQYXRjaHBv
aW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
RTM1NUYzNTIxQjdEQzg1MzAwQzUwREM1IC8qIE1vZHVsZUxvYWRlclByb3RvdHlwZS5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzU1RjM1MDFCN0RD
ODUzMDBDNTBEQzUgLyogTW9kdWxlTG9hZGVyUHJvdG90eXBlLmNwcCAqLzsgfTsKQEAgLTQ1ODYs
NiArNDU4Nyw3IEBACiAJCUUzM0Y1MDg2MUI4NDQ5RUYwMDQxMzg1NiAvKiBKU0ludGVybmFsUHJv
bWlzZUNvbnN0cnVjdG9yLmx1dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBK
U0ludGVybmFsUHJvbWlzZUNvbnN0cnVjdG9yLmx1dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlFMzNGNTA4ODFCODQ0QTFBMDA0MTM4NTYgLyogSW50ZXJuYWxQcm9taXNlQ29uc3Ry
dWN0b3IuanMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmphdmFzY3JpcHQ7IHBhdGggPSBJbnRlcm5h
bFByb21pc2VDb25zdHJ1Y3Rvci5qczsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM0
RURCRjYxREI1RkZDMTAwREM4N0E1IC8qIEZyYW1lVHJhY2Vycy5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBGcmFtZVRyYWNlcnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJRTM1MDcwODkxREM0OUJCNjAwODlCQ0Q2IC8qIERPTUpJVFNpZ25hdHVyZS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBET01KSVRTaWduYXR1cmUuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM1NDYyMkExQjYwNjVEMTAwNTQ1Mzg2IC8qIENvbnN0cnVj
dEFiaWxpdHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29uc3RydWN0QWJp
bGl0eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzU1NUI4OTFEQUUwM0EyMDBG
MzY5MjEgLyogRE9NSklUQ2FsbERPTUdldHRlclBhdGNocG9pbnQuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gRE9NSklUQ2FsbERPTUdldHRlclBhdGNocG9pbnQuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM1NUYzNTAxQjdEQzg1MzAwQzUwREM1IC8qIE1vZHVs
ZUxvYWRlclByb3RvdHlwZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBNb2R1bGVMb2FkZXJQcm90b3R5cGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpA
QCAtNzUwMyw2ICs3NTA1LDcgQEAKIAkJCQlFMzdBRDgzQTFEQTQ5MjgwMDBGM0Q0MTIgLyogRE9N
SklUUGF0Y2hwb2ludFBhcmFtcy5oICovLAogCQkJCUUzN0FEODNCMURBNDkyODAwMEYzRDQxMiAv
KiBET01KSVRSZWcuaCAqLywKIAkJCQlFM0NCMUUyNDFEQTc1NDBBMDBGQTFFNTYgLyogRE9NSklU
U2xvd1BhdGhDYWxscy5oICovLAorCQkJCUUzNTA3MDg5MURDNDlCQjYwMDg5QkNENiAvKiBET01K
SVRTaWduYXR1cmUuaCAqLywKIAkJCQlFM0ZGQzg1MjFEQUQ3RDEwMDBERUE1M0UgLyogRE9NSklU
VmFsdWUuaCAqLywKIAkJCSk7CiAJCQlwYXRoID0gZG9taml0OwpAQCAtODQyMyw2ICs4NDI2LDcg
QEAKIAkJCQk0M0FCMjZDNjFDMUE1MzU5MDBEODJBRTYgLyogQjNNYXRoRXh0cmFzLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlBRDJGQ0JGMzFEQjU4REFEMDBCM0U3MzYgLyogV2ViQXNzZW1ibHlJbnN0
YW5jZVByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxOEM0MjkwRTE2RjVDRDAwQjM0
NDYwIC8qIEpTU3RyaW5nUmVmQ0YuaCBpbiBIZWFkZXJzICovLAorCQkJCUUzNTA3MDhBMURDNDlC
QkYwMDg5QkNENiAvKiBET01KSVRTaWduYXR1cmUuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBMjhE
NEE4MTc3QjcxQzgwMDA3RkEzQyAvKiBKU1N0cmluZ1JlZlByaXZhdGUuaCBpbiBIZWFkZXJzICov
LAogCQkJCTBGOTE5RDBEMTU3RUUwQTIwMDRBNEU3RCAvKiBKU1N5bWJvbFRhYmxlT2JqZWN0Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQk3MEVDQTYwNjFBRkRCRUEyMDA0NDk3MzkgLyogSlNUZW1wbGF0
ZVJlZ2lzdHJ5S2V5LmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9DYWxsVmFyaWFudC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0NhbGxWYXJpYW50LmgKaW5kZXggZGU2ODgwMDZlZjFhOTllOWRkNjBiMDFhNmUwMTc3
Y2I5OGVjN2I1MS4uY2IyODhjNjBiN2E0ZjEzOGJhZjIxNDI4NDllMTM5MWE4ZDExMWJhNyAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxWYXJpYW50LmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxWYXJpYW50LmgKQEAgLTI4LDYg
KzI4LDcgQEAKICNpbmNsdWRlICJGdW5jdGlvbkV4ZWN1dGFibGUuaCIKICNpbmNsdWRlICJKU0Nl
bGwuaCIKICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCisjaW5jbHVkZSAiTmF0aXZlRXhlY3V0YWJs
ZS5oIgogCiBuYW1lc3BhY2UgSlNDIHsKIApAQCAtMTIwLDYgKzEyMSwyMCBAQCBjbGFzcyBDYWxs
VmFyaWFudCB7CiAgICAgICAgICAgICByZXR1cm4ganNEeW5hbWljQ2FzdDxGdW5jdGlvbkV4ZWN1
dGFibGUqPihleGVjdXRhYmxlKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQorCisg
ICAgTmF0aXZlRXhlY3V0YWJsZSogbmF0aXZlRXhlY3V0YWJsZSgpIGNvbnN0CisgICAgeworICAg
ICAgICBpZiAoRXhlY3V0YWJsZUJhc2UqIGV4ZWN1dGFibGUgPSB0aGlzLT5leGVjdXRhYmxlKCkp
CisgICAgICAgICAgICByZXR1cm4ganNEeW5hbWljQ2FzdDxOYXRpdmVFeGVjdXRhYmxlKj4oZXhl
Y3V0YWJsZSk7CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KKworICAgIGNvbnN0IERP
TUpJVDo6U2lnbmF0dXJlKiBzaWduYXR1cmVGb3IoQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5k
KSBjb25zdAorICAgIHsKKyAgICAgICAgaWYgKE5hdGl2ZUV4ZWN1dGFibGUqIG5hdGl2ZUV4ZWN1
dGFibGUgPSB0aGlzLT5uYXRpdmVFeGVjdXRhYmxlKCkpCisgICAgICAgICAgICByZXR1cm4gbmF0
aXZlRXhlY3V0YWJsZS0+c2lnbmF0dXJlRm9yKGtpbmQpOworICAgICAgICByZXR1cm4gbnVsbHB0
cjsKKyAgICB9CiAgICAgCiAgICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0Owog
ICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NwZWN1bGF0
ZWRUeXBlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3BlY3VsYXRlZFR5cGUu
aAppbmRleCBmNDNkZmNkMzE1ODcxZTk4OTUzZWEyZGRkYzRiZjMzNTI1Y2NkZmRmLi5lMjNmZDJj
NWY1NGNlZTA5YzdhMjNiZGMxNDk5OTBiNjA5YjAxOTAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3BlY3VsYXRlZFR5cGUuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvU3BlY3VsYXRlZFR5cGUuaApAQCAtMTUxLDYgKzE1MSwxMSBAQCBp
bmxpbmUgYm9vbCBpc1N0cmluZ1NwZWN1bGF0aW9uKFNwZWN1bGF0ZWRUeXBlIHZhbHVlKQogICAg
IHJldHVybiAhIXZhbHVlICYmICh2YWx1ZSAmIFNwZWNTdHJpbmcpID09IHZhbHVlOwogfQogCitp
bmxpbmUgYm9vbCBpc05vdFN0cmluZ1NwZWN1bGF0aW9uKFNwZWN1bGF0ZWRUeXBlIHZhbHVlKQor
eworICAgIHJldHVybiB2YWx1ZSAmJiAhKHZhbHVlICYgU3BlY1N0cmluZyk7Cit9CisKIGlubGlu
ZSBib29sIGlzU3RyaW5nT3JPdGhlclNwZWN1bGF0aW9uKFNwZWN1bGF0ZWRUeXBlIHZhbHVlKQog
ewogICAgIHJldHVybiAhIXZhbHVlICYmICh2YWx1ZSAmIChTcGVjU3RyaW5nIHwgU3BlY090aGVy
KSkgPT0gdmFsdWU7CkBAIC0zMDMsNiArMzA4LDExIEBAIGlubGluZSBib29sIGlzSW50MzJTcGVj
dWxhdGlvbihTcGVjdWxhdGVkVHlwZSB2YWx1ZSkKICAgICByZXR1cm4gdmFsdWUgJiYgISh2YWx1
ZSAmIH5TcGVjSW50MzJPbmx5KTsKIH0KIAoraW5saW5lIGJvb2wgaXNOb3RJbnQzMlNwZWN1bGF0
aW9uKFNwZWN1bGF0ZWRUeXBlIHZhbHVlKQoreworICAgIHJldHVybiB2YWx1ZSAmJiAhKHZhbHVl
ICYgU3BlY0ludDMyT25seSk7Cit9CisKIGlubGluZSBib29sIGlzSW50MzJPckJvb2xlYW5TcGVj
dWxhdGlvbihTcGVjdWxhdGVkVHlwZSB2YWx1ZSkKIHsKICAgICByZXR1cm4gdmFsdWUgJiYgISh2
YWx1ZSAmIH4oU3BlY0Jvb2xlYW4gfCBTcGVjSW50MzJPbmx5KSk7CkBAIC0zODgsNiArMzk4LDEx
IEBAIGlubGluZSBib29sIGlzQm9vbGVhblNwZWN1bGF0aW9uKFNwZWN1bGF0ZWRUeXBlIHZhbHVl
KQogICAgIHJldHVybiB2YWx1ZSA9PSBTcGVjQm9vbGVhbjsKIH0KIAoraW5saW5lIGJvb2wgaXNO
b3RCb29sZWFuU3BlY3VsYXRpb24oU3BlY3VsYXRlZFR5cGUgdmFsdWUpCit7CisgICAgcmV0dXJu
IHZhbHVlICYmICEodmFsdWUgJiBTcGVjQm9vbGVhbik7Cit9CisKIGlubGluZSBib29sIGlzT3Ro
ZXJTcGVjdWxhdGlvbihTcGVjdWxhdGVkVHlwZSB2YWx1ZSkKIHsKICAgICByZXR1cm4gdmFsdWUg
PT0gU3BlY090aGVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdB
YnN0cmFjdEludGVycHJldGVySW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCmluZGV4IDQzYjUxYTE2ZWNiYWRhNTBmOWQ3
Zjg4ZWVlM2NmMTEyNmI3YTIyNGEuLjdhZGJhNzE2MDE0NjE1MTA3MmVmNjk5ZDIyNmEyYWYzY2Vh
MDhkMDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJ
bnRlcnByZXRlcklubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fi
c3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJB
cnJheUNvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAiREZHQWJzdHJhY3RJbnRlcnByZXRlci5oIgog
I2luY2x1ZGUgIkRPTUpJVEdldHRlclNldHRlci5oIgorI2luY2x1ZGUgIkRPTUpJVFNpZ25hdHVy
ZS5oIgogI2luY2x1ZGUgIkdldEJ5SWRTdGF0dXMuaCIKICNpbmNsdWRlICJHZXR0ZXJTZXR0ZXIu
aCIKICNpbmNsdWRlICJIYXNoTWFwSW1wbC5oIgpAQCAtMjMwMyw2ICsyMzA0LDEzIEBAIGJvb2wg
QWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3RzKHVu
c2lnbmVkIGNsb2JiZXJMaW1pCiAgICAgICAgIGZvck5vZGUobm9kZSkuc2V0VHlwZShtX2dyYXBo
LCBjYWxsRE9NR2V0dGVyRGF0YS0+ZG9tSklULT5yZXN1bHRUeXBlKCkpOwogICAgICAgICBicmVh
azsKICAgICB9CisgICAgY2FzZSBDYWxsRE9NOiB7CisgICAgICAgIGNvbnN0IERPTUpJVDo6U2ln
bmF0dXJlKiBzaWduYXR1cmUgPSBub2RlLT5zaWduYXR1cmUoKTsKKyAgICAgICAgaWYgKHNpZ25h
dHVyZS0+ZWZmZWN0LndyaXRlcykKKyAgICAgICAgICAgIGNsb2JiZXJXb3JsZChub2RlLT5vcmln
aW4uc2VtYW50aWMsIGNsb2JiZXJMaW1pdCk7CisgICAgICAgIGZvck5vZGUobm9kZSkuc2V0VHlw
ZShtX2dyYXBoLCBzaWduYXR1cmUtPnJlc3VsdCk7CisgICAgICAgIGJyZWFrOworICAgIH0KICAg
ICBjYXNlIENoZWNrQXJyYXk6IHsKICAgICAgICAgaWYgKG5vZGUtPmFycmF5TW9kZSgpLmFscmVh
ZHlDaGVja2VkKG1fZ3JhcGgsIG5vZGUsIGZvck5vZGUobm9kZS0+Y2hpbGQxKCkpKSkgewogICAg
ICAgICAgICAgbV9zdGF0ZS5zZXRGb3VuZENvbnN0YW50cyh0cnVlKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKaW5kZXggMzVkYzA3ODZhODkz
Nzg1ZjcwZjdiMzJjMGNmN2JjZGRlOWE3ZWRkOS4uMGMyNjFkMWM5NDlhYzFkODM5Y2MxZDkzZTdl
Yjk3Y2NiNDBiZDQxNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdC
eXRlQ29kZVBhcnNlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRl
Q29kZVBhcnNlci5jcHAKQEAgLTIxMiw2ICsyMTIsOCBAQCBjbGFzcyBCeXRlQ29kZVBhcnNlciB7
CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hlY2tzRnVuY3Rvcj4KICAgICBib29sIGhhbmRsZUlu
dHJpbnNpY0NhbGwoTm9kZSogY2FsbGVlLCBpbnQgcmVzdWx0T3BlcmFuZCwgSW50cmluc2ljLCBp
bnQgcmVnaXN0ZXJPZmZzZXQsIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgU3BlY3Vs
YXRlZFR5cGUgcHJlZGljdGlvbiwgY29uc3QgQ2hlY2tzRnVuY3RvciYgaW5zZXJ0Q2hlY2tzKTsK
ICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGVja3NGdW5jdG9yPgorICAgIGJvb2wgaGFuZGxlRE9N
SklUQ2FsbChOb2RlKiBjYWxsZWUsIGludCByZXN1bHRPcGVyYW5kLCBjb25zdCBET01KSVQ6OlNp
Z25hdHVyZSosIGludCByZWdpc3Rlck9mZnNldCwgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdU
aGlzLCBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uLCBjb25zdCBDaGVja3NGdW5jdG9yJiBpbnNl
cnRDaGVja3MpOworICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoZWNrc0Z1bmN0b3I+CiAgICAgYm9v
bCBoYW5kbGVJbnRyaW5zaWNHZXR0ZXIoaW50IHJlc3VsdE9wZXJhbmQsIGNvbnN0IEdldEJ5SWRW
YXJpYW50JiBpbnRyaW5zaWNWYXJpYW50LCBOb2RlKiB0aGlzTm9kZSwgY29uc3QgQ2hlY2tzRnVu
Y3RvciYgaW5zZXJ0Q2hlY2tzKTsKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGVja3NGdW5jdG9y
PgogICAgIGJvb2wgaGFuZGxlVHlwZWRBcnJheUNvbnN0cnVjdG9yKGludCByZXN1bHRPcGVyYW5k
LCBJbnRlcm5hbEZ1bmN0aW9uKiwgaW50IHJlZ2lzdGVyT2Zmc2V0LCBpbnQgYXJndW1lbnRDb3Vu
dEluY2x1ZGluZ1RoaXMsIFR5cGVkQXJyYXlUeXBlLCBjb25zdCBDaGVja3NGdW5jdG9yJiBpbnNl
cnRDaGVja3MpOwpAQCAtODE3LDE4ICs4MTksMTggQEAgY2xhc3MgQnl0ZUNvZGVQYXJzZXIgewog
ICAgIH0KICAgICAKICAgICBOb2RlKiBhZGRDYWxsKAotICAgICAgICBpbnQgcmVzdWx0LCBOb2Rl
VHlwZSBvcCwgT3BJbmZvIG9wSW5mbywgTm9kZSogY2FsbGVlLCBpbnQgYXJnQ291bnQsIGludCBy
ZWdpc3Rlck9mZnNldCwKKyAgICAgICAgaW50IHJlc3VsdCwgTm9kZVR5cGUgb3AsIGNvbnN0IERP
TUpJVDo6U2lnbmF0dXJlKiBzaWduYXR1cmUsIE5vZGUqIGNhbGxlZSwgaW50IGFyZ0NvdW50LCBp
bnQgcmVnaXN0ZXJPZmZzZXQsCiAgICAgICAgIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24pCiAg
ICAgewogICAgICAgICBpZiAob3AgPT0gVGFpbENhbGwpIHsKICAgICAgICAgICAgIGlmIChhbGxJ
bmxpbmVGcmFtZXNBcmVUYWlsQ2FsbHMoKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gYWRkQ2Fs
bFdpdGhvdXRTZXR0aW5nUmVzdWx0KG9wLCBPcEluZm8oKSwgY2FsbGVlLCBhcmdDb3VudCwgcmVn
aXN0ZXJPZmZzZXQsIE9wSW5mbygpKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gYWRkQ2FsbFdp
dGhvdXRTZXR0aW5nUmVzdWx0KG9wLCBPcEluZm8oc2lnbmF0dXJlKSwgY2FsbGVlLCBhcmdDb3Vu
dCwgcmVnaXN0ZXJPZmZzZXQsIE9wSW5mbygpKTsKICAgICAgICAgICAgIG9wID0gVGFpbENhbGxJ
bmxpbmVkQ2FsbGVyOwogICAgICAgICB9CiAKIAogICAgICAgICBOb2RlKiBjYWxsID0gYWRkQ2Fs
bFdpdGhvdXRTZXR0aW5nUmVzdWx0KAotICAgICAgICAgICAgb3AsIG9wSW5mbywgY2FsbGVlLCBh
cmdDb3VudCwgcmVnaXN0ZXJPZmZzZXQsIE9wSW5mbyhwcmVkaWN0aW9uKSk7CisgICAgICAgICAg
ICBvcCwgT3BJbmZvKHNpZ25hdHVyZSksIGNhbGxlZSwgYXJnQ291bnQsIHJlZ2lzdGVyT2Zmc2V0
LCBPcEluZm8ocHJlZGljdGlvbikpOwogICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgcmVzdWx0UmVn
KHJlc3VsdCk7CiAgICAgICAgIGlmIChyZXN1bHRSZWcuaXNWYWxpZCgpKQogICAgICAgICAgICAg
c2V0KHJlc3VsdFJlZywgY2FsbCk7CkBAIC0xMjgzLDcgKzEyODUsNyBAQCBCeXRlQ29kZVBhcnNl
cjo6VGVybWluYWxpdHkgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUNhbGwoCiAgICAgICAgIC8vIE9k
ZGx5LCB0aGlzIGNvbmZsYXRlcyBjYWxscyB0aGF0IGhhdmVuJ3QgZXhlY3V0ZWQgd2l0aCBjYWxs
cyB0aGF0IGJlaGF2ZWQgc3VmZmljaWVudGx5IHBvbHltb3JwaGljYWxseQogICAgICAgICAvLyB0
aGF0IHdlIGNhbm5vdCBvcHRpbWl6ZSB0aGVtLgogCi0gICAgICAgIE5vZGUqIGNhbGxOb2RlID0g
YWRkQ2FsbChyZXN1bHQsIG9wLCBPcEluZm8oKSwgY2FsbFRhcmdldCwgYXJndW1lbnRDb3VudElu
Y2x1ZGluZ1RoaXMsIHJlZ2lzdGVyT2Zmc2V0LCBwcmVkaWN0aW9uKTsKKyAgICAgICAgTm9kZSog
Y2FsbE5vZGUgPSBhZGRDYWxsKHJlc3VsdCwgb3AsIG51bGxwdHIsIGNhbGxUYXJnZXQsIGFyZ3Vt
ZW50Q291bnRJbmNsdWRpbmdUaGlzLCByZWdpc3Rlck9mZnNldCwgcHJlZGljdGlvbik7CiAgICAg
ICAgIGlmIChjYWxsTm9kZS0+b3AoKSA9PSBUYWlsQ2FsbCkKICAgICAgICAgICAgIHJldHVybiBU
ZXJtaW5hbDsKICAgICAgICAgQVNTRVJUKGNhbGxOb2RlLT5vcCgpICE9IFRhaWxDYWxsVmFyYXJn
cyAmJiBjYWxsTm9kZS0+b3AoKSAhPSBUYWlsQ2FsbEZvcndhcmRWYXJhcmdzKTsKQEAgLTEyOTgs
NyArMTMwMCw3IEBAIEJ5dGVDb2RlUGFyc2VyOjpUZXJtaW5hbGl0eSBCeXRlQ29kZVBhcnNlcjo6
aGFuZGxlQ2FsbCgKICAgICAgICAgcmV0dXJuIE5vblRlcm1pbmFsOwogICAgIH0KICAgICAKLSAg
ICBOb2RlKiBjYWxsTm9kZSA9IGFkZENhbGwocmVzdWx0LCBvcCwgT3BJbmZvKCksIGNhbGxUYXJn
ZXQsIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCByZWdpc3Rlck9mZnNldCwgcHJlZGljdGlv
bik7CisgICAgTm9kZSogY2FsbE5vZGUgPSBhZGRDYWxsKHJlc3VsdCwgb3AsIG51bGxwdHIsIGNh
bGxUYXJnZXQsIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCByZWdpc3Rlck9mZnNldCwgcHJl
ZGljdGlvbik7CiAgICAgaWYgKGNhbGxOb2RlLT5vcCgpID09IFRhaWxDYWxsKQogICAgICAgICBy
ZXR1cm4gVGVybWluYWw7CiAgICAgQVNTRVJUKGNhbGxOb2RlLT5vcCgpICE9IFRhaWxDYWxsVmFy
YXJncyAmJiBjYWxsTm9kZS0+b3AoKSAhPSBUYWlsQ2FsbEZvcndhcmRWYXJhcmdzKTsKQEAgLTE3
MjUsNiArMTcyNywxOSBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjphdHRlbXB0VG9JbmxpbmVDYWxs
KE5vZGUqIGNhbGxUYXJnZXROb2RlLCBpbnQgcmVzdWx0T3BlcmFuZAogICAgICAgICAgICAgUkVM
RUFTRV9BU1NFUlQoIWRpZEluc2VydENoZWNrcyk7CiAgICAgICAgICAgICAvLyBXZSBtaWdodCBz
dGlsbCB0cnkgdG8gaW5saW5lIHRoZSBJbnRyaW5zaWMgYmVjYXVzZSBpdCBtaWdodCBiZSBhIGJ1
aWx0aW4gSlMgZnVuY3Rpb24uCiAgICAgICAgIH0KKworICAgICAgICBpZiAoT3B0aW9uczo6dXNl
RE9NSklUKCkpIHsKKyAgICAgICAgICAgIGlmIChjb25zdCBET01KSVQ6OlNpZ25hdHVyZSogc2ln
bmF0dXJlID0gY2FsbGVlLnNpZ25hdHVyZUZvcihzcGVjaWFsaXphdGlvbktpbmQpKSB7CisgICAg
ICAgICAgICAgICAgaWYgKGhhbmRsZURPTUpJVENhbGwoY2FsbFRhcmdldE5vZGUsIHJlc3VsdE9w
ZXJhbmQsIHNpZ25hdHVyZSwgcmVnaXN0ZXJPZmZzZXQsIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdU
aGlzLCBwcmVkaWN0aW9uLCBpbnNlcnRDaGVja3NXaXRoQWNjb3VudGluZykpIHsKKyAgICAgICAg
ICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoZGlkSW5zZXJ0Q2hlY2tzKTsKKyAgICAgICAgICAg
ICAgICAgICAgYWRkVG9HcmFwaChQaGFudG9tLCBjYWxsVGFyZ2V0Tm9kZSk7CisgICAgICAgICAg
ICAgICAgICAgIGVtaXRBcmd1bWVudFBoYW50b21zKHJlZ2lzdGVyT2Zmc2V0LCBhcmd1bWVudENv
dW50SW5jbHVkaW5nVGhpcyk7CisgICAgICAgICAgICAgICAgICAgIGlubGluaW5nQmFsYW5jZS0t
OworICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoIWRpZEluc2VydENoZWNrcyk7CisgICAgICAg
ICAgICB9CisgICAgICAgIH0KICAgICB9CiAgICAgCiAgICAgdW5zaWduZWQgbXlJbmxpbmluZ0Nv
c3QgPSBpbmxpbmluZ0Nvc3QoY2FsbGVlLCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgSW5s
aW5lQ2FsbEZyYW1lOjpjYWxsTW9kZUZvcihraW5kKSk7CkBAIC0yMDUwLDcgKzIwNjUsNyBAQCBi
b29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbmxpbmluZygKICAgICBOb2RlKiBteUNhbGxUYXJn
ZXROb2RlID0gZ2V0RGlyZWN0KGNhbGxlZVJlZyk7CiAgICAgaWYgKGNvdWxkVGFrZVNsb3dQYXRo
KSB7CiAgICAgICAgIGFkZENhbGwoCi0gICAgICAgICAgICByZXN1bHRPcGVyYW5kLCBjYWxsT3As
IE9wSW5mbygpLCBteUNhbGxUYXJnZXROb2RlLCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywK
KyAgICAgICAgICAgIHJlc3VsdE9wZXJhbmQsIGNhbGxPcCwgbnVsbHB0ciwgbXlDYWxsVGFyZ2V0
Tm9kZSwgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsCiAgICAgICAgICAgICByZWdpc3Rlck9m
ZnNldCwgcHJlZGljdGlvbik7CiAgICAgfSBlbHNlIHsKICAgICAgICAgYWRkVG9HcmFwaChDaGVj
a0JhZENlbGwpOwpAQCAtMjYwMCw2ICsyNjE1LDIwIEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6Omhh
bmRsZUludHJpbnNpY0NhbGwoTm9kZSogY2FsbGVlLCBpbnQgcmVzdWx0T3BlcmFuZCwgSW50cmlu
CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIENoZWNrc0Z1bmN0b3I+Citib29sIEJ5dGVDb2RlUGFy
c2VyOjpoYW5kbGVET01KSVRDYWxsKE5vZGUqIGNhbGxUYXJnZXQsIGludCByZXN1bHRPcGVyYW5k
LCBjb25zdCBET01KSVQ6OlNpZ25hdHVyZSogc2lnbmF0dXJlLCBpbnQgcmVnaXN0ZXJPZmZzZXQs
IGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlv
biwgY29uc3QgQ2hlY2tzRnVuY3RvciYgaW5zZXJ0Q2hlY2tzKQoreworICAgIGlmIChhcmd1bWVu
dENvdW50SW5jbHVkaW5nVGhpcyAhPSBzdGF0aWNfY2FzdDxpbnQ+KDEgKyBzaWduYXR1cmUtPmFy
Z3VtZW50Q291bnQpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKG1faW5saW5lU3Rh
Y2tUb3AtPm1fZXhpdFByb2ZpbGUuaGFzRXhpdFNpdGUobV9jdXJyZW50SW5kZXgsIEJhZFR5cGUp
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpbnNlcnRDaGVja3MoKTsKKyAgICBhZGRD
YWxsKHJlc3VsdE9wZXJhbmQsIENhbGwsIHNpZ25hdHVyZSwgY2FsbFRhcmdldCwgYXJndW1lbnRD
b3VudEluY2x1ZGluZ1RoaXMsIHJlZ2lzdGVyT2Zmc2V0LCBwcmVkaWN0aW9uKTsKKyAgICByZXR1
cm4gdHJ1ZTsKK30KKworCit0ZW1wbGF0ZTx0eXBlbmFtZSBDaGVja3NGdW5jdG9yPgogYm9vbCBC
eXRlQ29kZVBhcnNlcjo6aGFuZGxlSW50cmluc2ljR2V0dGVyKGludCByZXN1bHRPcGVyYW5kLCBj
b25zdCBHZXRCeUlkVmFyaWFudCYgdmFyaWFudCwgTm9kZSogdGhpc05vZGUsIGNvbnN0IENoZWNr
c0Z1bmN0b3ImIGluc2VydENoZWNrcykKIHsKICAgICBzd2l0Y2ggKHZhcmlhbnQuaW50cmluc2lj
KCkpIHsKQEAgLTQ3OTEsNyArNDgyMCw3IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxv
Y2sodW5zaWduZWQgbGltaXQpCiAgICAgICAgICAgICBpbnQgY2FsbGVlID0gY3VycmVudEluc3Ry
dWN0aW9uWzJdLnUub3BlcmFuZDsKICAgICAgICAgICAgIGludCBhcmd1bWVudENvdW50SW5jbHVk
aW5nVGhpcyA9IGN1cnJlbnRJbnN0cnVjdGlvblszXS51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBp
bnQgcmVnaXN0ZXJPZmZzZXQgPSAtY3VycmVudEluc3RydWN0aW9uWzRdLnUub3BlcmFuZDsKLSAg
ICAgICAgICAgIGFkZENhbGwocmVzdWx0LCBDYWxsRXZhbCwgT3BJbmZvKCksIGdldChWaXJ0dWFs
UmVnaXN0ZXIoY2FsbGVlKSksIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCByZWdpc3Rlck9m
ZnNldCwgZ2V0UHJlZGljdGlvbigpKTsKKyAgICAgICAgICAgIGFkZENhbGwocmVzdWx0LCBDYWxs
RXZhbCwgbnVsbHB0ciwgZ2V0KFZpcnR1YWxSZWdpc3RlcihjYWxsZWUpKSwgYXJndW1lbnRDb3Vu
dEluY2x1ZGluZ1RoaXMsIHJlZ2lzdGVyT2Zmc2V0LCBnZXRQcmVkaWN0aW9uKCkpOwogICAgICAg
ICAgICAgTkVYVF9PUENPREUob3BfY2FsbF9ldmFsKTsKICAgICAgICAgfQogICAgICAgICAgICAg
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCmluZGV4IGI2MjFlZjAy
MmQ4ODY1ZTJlN2EyMDExNmNkMjA4YzVjMjQ2YzlmZmIuLmU1ZDIxNzJmOWFlMGU3OTFhYWEyYTY4
MmJhYjE0ZWJhOTMwNjdkYmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQ2xvYmJlcml6ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJl
cml6ZS5oCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAiREZHTGF6eU5vZGUuaCIKICNpbmNs
dWRlICJERkdQdXJlVmFsdWUuaCIKICNpbmNsdWRlICJET01KSVRDYWxsRE9NR2V0dGVyUGF0Y2hw
b2ludC5oIgorI2luY2x1ZGUgIkRPTUpJVFNpZ25hdHVyZS5oIgogCiBuYW1lc3BhY2UgSlNDIHsg
bmFtZXNwYWNlIERGRyB7CiAKQEAgLTk1OCwyMCArOTU5LDM4IEBAIHZvaWQgY2xvYmJlcml6ZShH
cmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUsIGNvbnN0IFJlYWRGdW5jdG9yJiByZWFkLCBjb25zdCBX
cml0ZUZ1CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgd3JpdGUoQWJzdHJhY3RI
ZWFwKERPTVN0YXRlLCBlZmZlY3Qud3JpdGVzLnJhd1JlcHJlc2VudGF0aW9uKCkpKTsKICAgICAg
ICAgfQotICAgICAgICBpZiAoZWZmZWN0LmRlZikgewotICAgICAgICAgICAgRE9NSklUOjpIZWFw
UmFuZ2UgcmFuZ2UgPSBlZmZlY3QuZGVmLnZhbHVlKCk7CisgICAgICAgIGlmIChlZmZlY3QuZGVm
ICE9IERPTUpJVDo6SGVhcFJhbmdlOjp0b3AoKSkgeworICAgICAgICAgICAgRE9NSklUOjpIZWFw
UmFuZ2UgcmFuZ2UgPSBlZmZlY3QuZGVmOwogICAgICAgICAgICAgaWYgKHJhbmdlID09IERPTUpJ
VDo6SGVhcFJhbmdlOjpub25lKCkpCiAgICAgICAgICAgICAgICAgZGVmKFB1cmVWYWx1ZShub2Rl
LCBub2RlLT5jYWxsRE9NR2V0dGVyRGF0YSgpLT5kb21KSVQpKTsKICAgICAgICAgICAgIGVsc2Ug
ewogICAgICAgICAgICAgICAgIC8vIERlZiB3aXRoIGhlYXAgbG9jYXRpb24uIFdlIGRvIG5vdCBp
bmNsdWRlICJHbG9iYWxPYmplY3QiIGZvciB0aGF0IHNpbmNlIHRoaXMgaW5mb3JtYXRpb24gaXMg
aW5jbHVkZWQgaW4gdGhlIGJhc2Ugbm9kZS4KLSAgICAgICAgICAgICAgICAvLyBGSVhNRTogV2hl
biBzdXBwb3J0aW5nIHRoZSBvdGhlciBub2RlcyBsaWtlIGdldEVsZW1lbnRCeUlkKCJzdHJpbmci
KSwgd2Ugc2hvdWxkIGluY2x1ZGUgdGhlIGJhc2UgYW5kIHRoZSBpZCBzdHJpbmcuCi0gICAgICAg
ICAgICAgICAgLy8gQ3VycmVudGx5LCB3ZSBvbmx5IHNlZSB0aGUgRE9NSklUIGdldHRlciBoZXJl
LiBTbyBqdXN0IGluY2x1ZGluZyAiYmFzZSIgaXMgb2suCisgICAgICAgICAgICAgICAgLy8gV2Ug
b25seSBzZWUgdGhlIERPTUpJVCBnZXR0ZXIgaGVyZS4gU28ganVzdCBpbmNsdWRpbmcgImJhc2Ui
IGlzIG9rLgogICAgICAgICAgICAgICAgIGRlZihIZWFwTG9jYXRpb24oRE9NU3RhdGVMb2MsIEFi
c3RyYWN0SGVhcChET01TdGF0ZSwgcmFuZ2UucmF3UmVwcmVzZW50YXRpb24oKSksIG5vZGUtPmNo
aWxkMSgpKSwgTGF6eU5vZGUobm9kZSkpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKKyAgICBjYXNlIENhbGxET006IHsKKyAgICAgICAgY29uc3Qg
RE9NSklUOjpTaWduYXR1cmUqIHNpZ25hdHVyZSA9IG5vZGUtPnNpZ25hdHVyZSgpOworICAgICAg
ICBET01KSVQ6OkVmZmVjdCBlZmZlY3QgPSBzaWduYXR1cmUtPmVmZmVjdDsKKyAgICAgICAgaWYg
KGVmZmVjdC5yZWFkcykgeworICAgICAgICAgICAgaWYgKGVmZmVjdC5yZWFkcyA9PSBET01KSVQ6
OkhlYXBSYW5nZTo6dG9wKCkpCisgICAgICAgICAgICAgICAgcmVhZChXb3JsZCk7CisgICAgICAg
ICAgICBlbHNlCisgICAgICAgICAgICAgICAgcmVhZChBYnN0cmFjdEhlYXAoRE9NU3RhdGUsIGVm
ZmVjdC5yZWFkcy5yYXdSZXByZXNlbnRhdGlvbigpKSk7CisgICAgICAgIH0KKyAgICAgICAgaWYg
KGVmZmVjdC53cml0ZXMpIHsKKyAgICAgICAgICAgIGlmIChlZmZlY3Qud3JpdGVzID09IERPTUpJ
VDo6SGVhcFJhbmdlOjp0b3AoKSkKKyAgICAgICAgICAgICAgICB3cml0ZShIZWFwKTsKKyAgICAg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB3cml0ZShBYnN0cmFjdEhlYXAoRE9NU3RhdGUs
IGVmZmVjdC53cml0ZXMucmF3UmVwcmVzZW50YXRpb24oKSkpOworICAgICAgICB9CisgICAgICAg
IEFTU0VSVF9XSVRIX01FU1NBR0UoZWZmZWN0LmRlZiA9PSBET01KSVQ6OkhlYXBSYW5nZTo6dG9w
KCksICJDdXJyZW50bHksIHdlIGRvIG5vdCBhY2NlcHQgYW55IGRlZiBmb3IgQ2FsbERPTS4iKTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKwogICAgIGNhc2UgQXJyYXlpZnk6CiAgICAgY2FzZSBB
cnJheWlmeVRvU3RydWN0dXJlOgogICAgICAgICByZWFkKEpTQ2VsbF9zdHJ1Y3R1cmVJRCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAKaW5kZXggOTdjZDg0ODc0NzdhYzkw
ODRmZTkwZGRiOThkMzBmNDY2ZTVjYTE2Zi4uOWU2YWE1NTBhNDRlMGUxYzYyMTc1ZTUxOWY2MGEz
ZTg1MTVhN2I3YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2Vz
R0MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcApAQCAt
MzAxLDYgKzMwMSw3IEBAIGJvb2wgZG9lc0dDKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSkKICAg
ICBjYXNlIENyZWF0ZVJlc3Q6CiAgICAgY2FzZSBUb0xvd2VyQ2FzZToKICAgICBjYXNlIENhbGxE
T01HZXR0ZXI6CisgICAgY2FzZSBDYWxsRE9NOgogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAg
ICAgCiAgICAgY2FzZSBNdWx0aVB1dEJ5T2Zmc2V0OgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHRml4dXBQaGFzZS5jcHAKaW5kZXggMWQ0ZTkwN2E3ZjJmZmNjMmQ5YTJhMDM3NzExNDZh
NzkxMDFmM2NkMy4uMTJlZjRjZDhhNGQ5ODI3YjFlMmI0Y2U4YmU5MDdjOGIzNjA2ODcyNSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCkBAIC0xNzA4LDkg
KzE3MDgsMTAgQEAgY2xhc3MgRml4dXBQaGFzZSA6IHB1YmxpYyBQaGFzZSB7CiAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgfQogCi0gICAgICAgIGNhc2UgQ2hlY2tET006Ci0gICAgICAgICAg
ICBmaXhFZGdlPENlbGxVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgY2FzZSBDaGVja0RP
TTogeworICAgICAgICAgICAgZml4dXBDaGVja0RPTShub2RlKTsKICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICB9CiAKICAgICAgICAgY2FzZSBDYWxsRE9NR2V0dGVyOiB7CiAgICAgICAgICAg
ICBET01KSVQ6OkNhbGxET01HZXR0ZXJQYXRjaHBvaW50KiBwYXRjaHBvaW50ID0gbm9kZS0+Y2Fs
bERPTUdldHRlckRhdGEoKS0+cGF0Y2hwb2ludDsKQEAgLTE3MjAsNiArMTcyMSwxNiBAQCBjbGFz
cyBGaXh1cFBoYXNlIDogcHVibGljIFBoYXNlIHsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICB9CiAKKyAgICAgICAgY2FzZSBDYWxsRE9NOiB7CisgICAgICAgICAgICBmaXh1cENhbGxET00o
bm9kZSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAgIGNhc2UgQ2Fs
bDogeworICAgICAgICAgICAgYXR0ZW1wdFRvTWFrZUNhbGxET00obm9kZSk7CisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgfQorCiAjaWYgIUFTU0VSVF9ESVNBQkxFRAogICAgICAgICAvLyBI
YXZlIHRoZXNlIG5vLW9wIGNhc2VzIGhlcmUgdG8gZW5zdXJlIHRoYXQgbm9ib2R5IGZvcmdldHMg
dG8gYWRkIGhhbmRsZXJzIGZvciBuZXcgb3Bjb2Rlcy4KICAgICAgICAgY2FzZSBTZXRBcmd1bWVu
dDoKQEAgLTE3MzYsNyArMTc0Nyw2IEBAIGNsYXNzIEZpeHVwUGhhc2UgOiBwdWJsaWMgUGhhc2Ug
ewogICAgICAgICBjYXNlIEdldEdsb2JhbFZhcjoKICAgICAgICAgY2FzZSBHZXRHbG9iYWxMZXhp
Y2FsVmFyaWFibGU6CiAgICAgICAgIGNhc2UgTm90aWZ5V3JpdGU6Ci0gICAgICAgIGNhc2UgQ2Fs
bDoKICAgICAgICAgY2FzZSBEaXJlY3RDYWxsOgogICAgICAgICBjYXNlIENoZWNrVHlwZUluZm9G
bGFnczoKICAgICAgICAgY2FzZSBUYWlsQ2FsbElubGluZWRDYWxsZXI6CkBAIC0yNjU5LDYgKzI2
NjksOTAgQEAgY2xhc3MgRml4dXBQaGFzZSA6IHB1YmxpYyBQaGFzZSB7CiAgICAgICAgICAgICBP
cEluZm8oYXJyYXlNb2RlLmFzV29yZCgpKSwgRWRnZShjaGlsZCwgS25vd25DZWxsVXNlKSwgRWRn
ZShzdG9yYWdlKSk7CiAgICAgfQogICAgIAorICAgIGJvb2wgYXR0ZW1wdFRvTWFrZUNhbGxET00o
Tm9kZSogbm9kZSkKKyAgICB7CisgICAgICAgIGlmIChtX2dyYXBoLmhhc0V4aXRTaXRlKG5vZGUt
Pm9yaWdpbi5zZW1hbnRpYywgQmFkVHlwZSkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisK
KyAgICAgICAgY29uc3QgRE9NSklUOjpTaWduYXR1cmUqIHNpZ25hdHVyZSA9IG5vZGUtPnNpZ25h
dHVyZSgpOworICAgICAgICBpZiAoIXNpZ25hdHVyZSkKKyAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKKworICAgICAgICB7CisgICAgICAgICAgICB1bnNpZ25lZCBpbmRleCA9IDA7CisgICAgICAg
ICAgICBib29sIHNob3VsZENvbnZlcnRUb0NhbGxET00gPSB0cnVlOworICAgICAgICAgICAgbV9n
cmFwaC5kb1RvQ2hpbGRyZW4obm9kZSwgWyZdKEVkZ2UmIGVkZ2UpIHsKKyAgICAgICAgICAgICAg
ICAvLyBDYWxsZWUuIElnbm9yZSB0aGlzLiBERkdCeXRlQ29kZVBhcnNlciBhbHJlYWR5IGVtaXQg
YXBwcm9wcmlhdGUgY2hlY2tzLgorICAgICAgICAgICAgICAgIGlmICghaW5kZXgpCisgICAgICAg
ICAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICAgICAgICAgIGlmIChpbmRleCA9PSAxKSB7
CisgICAgICAgICAgICAgICAgICAgIC8vIERPTSBub2RlIGNhc2UuCisgICAgICAgICAgICAgICAg
ICAgIGlmIChlZGdlLT5zaG91bGRTcGVjdWxhdGVOb3RDZWxsKCkpCisgICAgICAgICAgICAgICAg
ICAgICAgICBzaG91bGRDb252ZXJ0VG9DYWxsRE9NID0gZmFsc2U7CisgICAgICAgICAgICAgICAg
fSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChzaWduYXR1cmUtPmFyZ3VtZW50
c1tpbmRleCAtIDJdKSB7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgU3BlY1N0cmluZzoKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGlmIChlZGdlLT5zaG91bGRTcGVjdWxhdGVOb3RTdHJpbmco
KSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaG91bGRDb252ZXJ0VG9DYWxsRE9NID0g
ZmFsc2U7CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAg
ICAgY2FzZSBTcGVjSW50MzJPbmx5OgorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVkZ2Ut
PnNob3VsZFNwZWN1bGF0ZU5vdEludDMyKCkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c2hvdWxkQ29udmVydFRvQ2FsbERPTSA9IGZhbHNlOworICAgICAgICAgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgU3BlY0Jvb2xlYW46CisgICAgICAgICAg
ICAgICAgICAgICAgICBpZiAoZWRnZS0+c2hvdWxkU3BlY3VsYXRlTm90Qm9vbGVhbigpKQorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHNob3VsZENvbnZlcnRUb0NhbGxET00gPSBmYWxzZTsK
KyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICsraW5kZXg7CisgICAgICAgICAgICB9
KTsKKyAgICAgICAgICAgIGlmICghc2hvdWxkQ29udmVydFRvQ2FsbERPTSkKKyAgICAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKworICAgICAgICBOb2RlKiB0aGlzTm9kZSA9
IG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMSkubm9kZSgpOworICAgICAgICBSZWY8RE9NSklU
OjpQYXRjaHBvaW50PiBjaGVja0RPTVBhdGNocG9pbnQgPSBzaWduYXR1cmUtPmNoZWNrRE9NKCk7
CisgICAgICAgIG1fZ3JhcGgubV9kb21KSVRQYXRjaHBvaW50cy5hcHBlbmQoY2hlY2tET01QYXRj
aHBvaW50LnB0cigpKTsKKyAgICAgICAgTm9kZSogY2hlY2tET00gPSBtX2luc2VydGlvblNldC5p
bnNlcnROb2RlKG1faW5kZXhJbkJsb2NrLCBTcGVjTm9uZSwgQ2hlY2tET00sIG5vZGUtPm9yaWdp
biwgT3BJbmZvKGNoZWNrRE9NUGF0Y2hwb2ludC5wdHIoKSksIE9wSW5mbyhzaWduYXR1cmUtPmNs
YXNzSW5mbyksIEVkZ2UodGhpc05vZGUpKTsKKyAgICAgICAgbm9kZS0+Y29udmVydFRvQ2FsbERP
TShtX2dyYXBoKTsKKyAgICAgICAgZml4dXBDaGVja0RPTShjaGVja0RPTSk7CisgICAgICAgIGZp
eHVwQ2FsbERPTShub2RlKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgdm9p
ZCBmaXh1cENoZWNrRE9NKE5vZGUqIG5vZGUpCisgICAgeworICAgICAgICBmaXhFZGdlPENlbGxV
c2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICB9CisKKyAgICB2b2lkIGZpeHVwQ2FsbERPTShOb2Rl
KiBub2RlKQorICAgIHsKKyAgICAgICAgY29uc3QgRE9NSklUOjpTaWduYXR1cmUqIHNpZ25hdHVy
ZSA9IG5vZGUtPnNpZ25hdHVyZSgpOworICAgICAgICBhdXRvIGZpeHVwID0gWyZdKEVkZ2UmIGVk
Z2UsIGludCBhcmd1bWVudEluZGV4KSB7CisgICAgICAgICAgICBpZiAoIWVkZ2UpCisgICAgICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgc3dpdGNoIChzaWduYXR1cmUtPmFyZ3VtZW50
c1thcmd1bWVudEluZGV4XSkgeworICAgICAgICAgICAgY2FzZSBTcGVjU3RyaW5nOgorICAgICAg
ICAgICAgICAgIGZpeEVkZ2U8U3RyaW5nVXNlPihlZGdlKTsKKyAgICAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICAgIGNhc2UgU3BlY0ludDMyT25seToKKyAgICAgICAgICAgICAgICBmaXhF
ZGdlPEludDMyVXNlPihlZGdlKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg
IGNhc2UgU3BlY0Jvb2xlYW46CisgICAgICAgICAgICAgICAgZml4RWRnZTxCb29sZWFuVXNlPihl
ZGdlKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAg
ICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfTsKKyAgICAgICAgZml4RWRnZTxDZWxs
VXNlPihub2RlLT5jaGlsZDEoKSk7IC8vIERPTS4KKyAgICAgICAgZml4dXAobm9kZS0+Y2hpbGQy
KCksIDApOworICAgICAgICBmaXh1cChub2RlLT5jaGlsZDMoKSwgMSk7CisgICAgfQorCiAgICAg
dm9pZCBmaXh1cENoZWNrc0luQmxvY2soQmFzaWNCbG9jayogYmxvY2spCiAgICAgewogICAgICAg
ICBpZiAoIWJsb2NrKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdO
b2RlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5jcHAKaW5kZXggZjM3
MTE3YmY5NjlmZTRiNjlkOTVmMDAxZDU2ODgwNDZiZGNkOTQ1MC4uY2UyNWMwZGQxMzIxMGJlMTJh
Yjk1NzkwMmRiYTY2OWE3YmQ4NmRmYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdOb2RlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUu
Y3BwCkBAIC0yMjAsNiArMjIwLDI1IEBAIHZvaWQgTm9kZTo6Y29udmVydFRvRGlyZWN0Q2FsbChG
cm96ZW5WYWx1ZSogZXhlY3V0YWJsZSkKICAgICBtX29wSW5mbyA9IGV4ZWN1dGFibGU7CiB9CiAK
K3ZvaWQgTm9kZTo6Y29udmVydFRvQ2FsbERPTShHcmFwaCYgZ3JhcGgpCit7CisgICAgQVNTRVJU
KG9wKCkgPT0gQ2FsbCk7CisgICAgQVNTRVJUKHNpZ25hdHVyZSgpKTsKKworICAgIEVkZ2UgZWRn
ZXNbM107CisgICAgLy8gU2tpcCB0aGUgZmlyc3Qgb25lLiBUaGlzIGlzIGNhbGxlZS4KKyAgICBm
b3IgKHVuc2lnbmVkIGkgPSAxLCBpeiA9IG51bUNoaWxkcmVuKCk7IGkgPCBpejsgKytpKQorICAg
ICAgICBlZGdlc1tpIC0gMV0gPSBncmFwaC52YXJBcmdDaGlsZCh0aGlzLCBpKTsKKworICAgIHNl
dE9wQW5kRGVmYXVsdEZsYWdzKENhbGxET00pOworICAgIGNoaWxkcmVuLnNldENoaWxkMShlZGdl
c1swXSk7CisgICAgY2hpbGRyZW4uc2V0Q2hpbGQyKGVkZ2VzWzFdKTsKKyAgICBjaGlsZHJlbi5z
ZXRDaGlsZDMoZWRnZXNbMl0pOworCisgICAgaWYgKCFzaWduYXR1cmUoKS0+ZWZmZWN0Lm11c3RH
ZW5lcmF0ZSgpKQorICAgICAgICBjbGVhckZsYWdzKE5vZGVNdXN0R2VuZXJhdGUpOworfQorCiBT
dHJpbmcgTm9kZTo6dHJ5R2V0U3RyaW5nKEdyYXBoJiBncmFwaCkKIHsKICAgICBpZiAoaGFzQ29u
c3RhbnQoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgKaW5kZXggODhmODgxMTg5MGUx
NzczZWExZDYwMmU5Y2FjOWM1ODFkYTRmOWI5Yi4uODMwOWFhMzA5YTBhOWU2MTQyY2NhMjk1MTky
OGVhZGFiOTcyYTViMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdO
b2RlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgKQEAgLTYyLDYg
KzYyLDcgQEAgbmFtZXNwYWNlIERPTUpJVCB7CiBjbGFzcyBHZXR0ZXJTZXR0ZXI7CiBjbGFzcyBQ
YXRjaHBvaW50OwogY2xhc3MgQ2FsbERPTUdldHRlclBhdGNocG9pbnQ7CitjbGFzcyBTaWduYXR1
cmU7CiB9CiAKIG5hbWVzcGFjZSBQcm9maWxlciB7CkBAIC02NTIsNiArNjUzLDggQEAgc3RydWN0
IE5vZGUgewogICAgIH0KICAgICAKICAgICB2b2lkIGNvbnZlcnRUb0RpcmVjdENhbGwoRnJvemVu
VmFsdWUqKTsKKworICAgIHZvaWQgY29udmVydFRvQ2FsbERPTShHcmFwaCYpOwogICAgIAogICAg
IEpTVmFsdWUgYXNKU1ZhbHVlKCkKICAgICB7CkBAIC0xNDY0LDYgKzE0NjcsNyBAQCBzdHJ1Y3Qg
Tm9kZSB7CiAgICAgICAgIGNhc2UgVG9OdW1iZXI6CiAgICAgICAgIGNhc2UgTG9hZEZyb21KU01h
cEJ1Y2tldDoKICAgICAgICAgY2FzZSBDYWxsRE9NR2V0dGVyOgorICAgICAgICBjYXNlIENhbGxE
T006CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKQEAgLTE5ODEsNiArMTk4NSwxMSBAQCBzdHJ1Y3QgTm9kZSB7CiAg
ICAgewogICAgICAgICByZXR1cm4gaXNJbnQzMlNwZWN1bGF0aW9uKHByZWRpY3Rpb24oKSk7CiAg
ICAgfQorCisgICAgYm9vbCBzaG91bGRTcGVjdWxhdGVOb3RJbnQzMigpCisgICAgeworICAgICAg
ICByZXR1cm4gaXNOb3RJbnQzMlNwZWN1bGF0aW9uKHByZWRpY3Rpb24oKSk7CisgICAgfQogICAg
IAogICAgIGJvb2wgc2F3Qm9vbGVhbnMoKQogICAgIHsKQEAgLTIwNDEsNiArMjA1MCwxMSBAQCBz
dHJ1Y3QgTm9kZSB7CiAgICAgewogICAgICAgICByZXR1cm4gaXNCb29sZWFuU3BlY3VsYXRpb24o
cHJlZGljdGlvbigpKTsKICAgICB9CisKKyAgICBib29sIHNob3VsZFNwZWN1bGF0ZU5vdEJvb2xl
YW4oKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGlzTm90Qm9vbGVhblNwZWN1bGF0aW9uKHByZWRp
Y3Rpb24oKSk7CisgICAgfQogICAgIAogICAgIGJvb2wgc2hvdWxkU3BlY3VsYXRlT3RoZXIoKQog
ICAgIHsKQEAgLTIwNjYsNiArMjA4MCwxMSBAQCBzdHJ1Y3QgTm9kZSB7CiAgICAgewogICAgICAg
ICByZXR1cm4gaXNTdHJpbmdTcGVjdWxhdGlvbihwcmVkaWN0aW9uKCkpOwogICAgIH0KKworICAg
IGJvb2wgc2hvdWxkU3BlY3VsYXRlTm90U3RyaW5nKCkKKyAgICB7CisgICAgICAgIHJldHVybiBp
c05vdFN0cmluZ1NwZWN1bGF0aW9uKHByZWRpY3Rpb24oKSk7CisgICAgfQogIAogICAgIGJvb2wg
c2hvdWxkU3BlY3VsYXRlU3RyaW5nT3JPdGhlcigpCiAgICAgewpAQCAtMjM2OCw2ICsyMzg3LDE4
IEBAIHN0cnVjdCBOb2RlIHsKICAgICAgICAgcmV0dXJuIG1fb3BJbmZvMi5hczxjb25zdCBDbGFz
c0luZm8qPigpOwogICAgIH0KIAorICAgIGJvb2wgaGFzU2lnbmF0dXJlKCkgY29uc3QKKyAgICB7
CisgICAgICAgIC8vIE5vdGUgdGhhdCB0aGlzIGRvZXMgbm90IGluY2x1ZGUgVGFpbENhbGwgdGhp
bmd5IGludGVudGlvbmFsbHkuCisgICAgICAgIC8vIENhbGxET00gdGhpbmd5IGFyZSBhbHdheXMg
Y29udmVydGVkIGZyb20gQ2FsbC4KKyAgICAgICAgcmV0dXJuIG9wKCkgPT0gQ2FsbCB8fCBvcCgp
ID09IENhbGxET007CisgICAgfQorCisgICAgY29uc3QgRE9NSklUOjpTaWduYXR1cmUqIHNpZ25h
dHVyZSgpCisgICAgeworICAgICAgICByZXR1cm4gbV9vcEluZm8uYXM8Y29uc3QgRE9NSklUOjpT
aWduYXR1cmUqPigpOworICAgIH0KKwogICAgIE5vZGUqIHJlcGxhY2VtZW50KCkgY29uc3QKICAg
ICB7CiAgICAgICAgIHJldHVybiBtX21pc2MucmVwbGFjZW1lbnQ7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR05vZGVUeXBlLmgKaW5kZXggZDk3NWI3NjIyMGMwMmMxMzExYzE5MmVhOWFkMDJl
NjAxYTUyMDRlMC4uZjM3NDIzY2VlYjIyODYyYjZjMmZhYTViYmEwMzQ1YTMzNmVmNjM5ZSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaApAQCAtNDA3LDYgKzQwNyw3IEBA
IG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKICAgICAvKiBOb2RlcyBmb3IgRE9NIEpJ
VCAqL1wKICAgICBtYWNybyhDaGVja0RPTSwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3Jv
KENhbGxET01HZXR0ZXIsIE5vZGVSZXN1bHRKUyB8IE5vZGVNdXN0R2VuZXJhdGUpIFwKKyAgICBt
YWNybyhDYWxsRE9NLCBOb2RlUmVzdWx0SlMgfCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAKIC8vIFRo
aXMgZW51bSBnZW5lcmF0ZXMgYSBtb25vdG9uaWNhbGx5IGluY3JlYXNpbmcgaWQgZm9yIGFsbCBO
b2RlIHR5cGVzLAogLy8gYW5kIGlzIHVzZWQgYnkgdGhlIHN1YnNlcXVlbnQgZW51bSB0byBmaWxs
IG91dCB0aGUgaWQgKGFzIGFjY2Vzc2VkIHZpYSB0aGUgTm9kZUlkTWFzaykuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNl
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9u
UGhhc2UuY3BwCmluZGV4IDZlZDcyOWIzYjg1NzMxYzBhNmU1MDk2NzA5Zjk4MDE2YTRiMWY4ZTAu
LmMwZmRlOTY5ZmJjMjQ2YzZiOTE4NjAwZGM0N2FmNzlhYWQxYTZmZjkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9u
UGhhc2UuY3BwCkBAIC03MTAsNyArNzEwLDggQEAgY2xhc3MgUHJlZGljdGlvblByb3BhZ2F0aW9u
UGhhc2UgOiBwdWJsaWMgUGhhc2UgewogICAgICAgICBjYXNlIEdldEZyb21Bcmd1bWVudHM6CiAg
ICAgICAgIGNhc2UgTG9hZEZyb21KU01hcEJ1Y2tldDoKICAgICAgICAgY2FzZSBUb051bWJlcjoK
LSAgICAgICAgY2FzZSBDYWxsRE9NR2V0dGVyOiB7CisgICAgICAgIGNhc2UgQ2FsbERPTUdldHRl
cjoKKyAgICAgICAgY2FzZSBDYWxsRE9NOiB7CiAgICAgICAgICAgICBzZXRQcmVkaWN0aW9uKG1f
Y3VycmVudE5vZGUtPmdldEhlYXBQcmVkaWN0aW9uKCkpOwogICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRv
RXhlY3V0ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgK
aW5kZXggMmM5OTgwMjI1NjY3ZGYzNDA1MGRjYTZhMzRlODdmMzRkNTk4ZWQyYi4uM2ZlOWRjMTVk
ZWUxN2I4MWQyMmZmNjQ0M2ZlZDY3ZjQ3Njk2M2NhMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgKQEAgLTIyMCw2ICsyMjAsNyBAQCBib29sIHNhZmVU
b0V4ZWN1dGUoQWJzdHJhY3RTdGF0ZVR5cGUmIHN0YXRlLCBHcmFwaCYgZ3JhcGgsIE5vZGUqIG5v
ZGUpCiAgICAgY2FzZSBHZXRFeGVjdXRhYmxlOgogICAgIGNhc2UgR2V0QnV0dGVyZmx5OgogICAg
IGNhc2UgQ2FsbERPTUdldHRlcjoKKyAgICBjYXNlIENhbGxET006CiAgICAgY2FzZSBDaGVja0RP
TToKICAgICBjYXNlIENoZWNrQXJyYXk6CiAgICAgY2FzZSBBcnJheWlmeToKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKaW5kZXggMjczMmZlODU4
NDRlNTFmNDY3MGIwYWU0MDNmMmFjMjM1MDRjODcxYy4uOWZkZTU1NTQ0Y2ExYTIwZWU4NWU4NWY1
MjUwZWY2MGY3YjU4YjFhNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTcGVjdWxhdGl2ZUpJVC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
cGVjdWxhdGl2ZUpJVC5jcHAKQEAgLTcyNjAsNiArNzI2MCw4NiBAQCBzdGF0aWMgdm9pZCBhbGxv
Y2F0ZVRlbXBvcmFyeVJlZ2lzdGVyc0ZvclBhdGNocG9pbnQoU3BlY3VsYXRpdmVKSVQqIGppdCwg
VmVjdG9yPAogICAgIH0KIH0KIAordm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUNhbGxET00o
Tm9kZSogbm9kZSkKK3sKKyAgICBjb25zdCBET01KSVQ6OlNpZ25hdHVyZSogc2lnbmF0dXJlID0g
bm9kZS0+c2lnbmF0dXJlKCk7CisKKyAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGhhdmUgYSB3YXkg
dG8gY2FsbCBmdW5jdGlvbnMgd2l0aCB0aGUgdmVjdG9yIG9mIHJlZ2lzdGVycy4KKyAgICAvLyBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYzMDk5CisgICAgVmVjdG9y
PFZhcmlhbnQ8U3BlY3VsYXRlQ2VsbE9wZXJhbmQsIFNwZWN1bGF0ZUludDMyT3BlcmFuZCwgU3Bl
Y3VsYXRlQm9vbGVhbk9wZXJhbmQ+PiBvcGVyYW5kczsKKyAgICBWZWN0b3I8R1BSUmVnPiByZWdz
OworCisgICAgYXV0byBhcHBlbmRDZWxsID0gWyZdKEVkZ2UmIGVkZ2UpIHsKKyAgICAgICAgU3Bl
Y3VsYXRlQ2VsbE9wZXJhbmQgb3BlcmFuZCh0aGlzLCBlZGdlKTsKKyAgICAgICAgcmVncy5hcHBl
bmQob3BlcmFuZC5ncHIoKSk7CisgICAgICAgIG9wZXJhbmRzLmFwcGVuZChXVEZNb3ZlKG9wZXJh
bmQpKTsKKyAgICB9OworCisgICAgYXV0byBhcHBlbmRTdHJpbmcgPSBbJl0oRWRnZSYgZWRnZSkg
eworICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBvcGVyYW5kKHRoaXMsIGVkZ2UpOworICAg
ICAgICBHUFJSZWcgZ3ByID0gb3BlcmFuZC5ncHIoKTsKKyAgICAgICAgcmVncy5hcHBlbmQoZ3By
KTsKKyAgICAgICAgc3BlY3VsYXRlU3RyaW5nKGVkZ2UsIGdwcik7CisgICAgICAgIG9wZXJhbmRz
LmFwcGVuZChXVEZNb3ZlKG9wZXJhbmQpKTsKKyAgICB9OworCisgICAgYXV0byBhcHBlbmRJbnQz
MiA9IFsmXShFZGdlJiBlZGdlKSB7CisgICAgICAgIFNwZWN1bGF0ZUludDMyT3BlcmFuZCBvcGVy
YW5kKHRoaXMsIGVkZ2UpOworICAgICAgICByZWdzLmFwcGVuZChvcGVyYW5kLmdwcigpKTsKKyAg
ICAgICAgb3BlcmFuZHMuYXBwZW5kKFdURk1vdmUob3BlcmFuZCkpOworICAgIH07CisKKyAgICBh
dXRvIGFwcGVuZEJvb2xlYW4gPSBbJl0oRWRnZSYgZWRnZSkgeworICAgICAgICBTcGVjdWxhdGVC
b29sZWFuT3BlcmFuZCBvcGVyYW5kKHRoaXMsIGVkZ2UpOworICAgICAgICByZWdzLmFwcGVuZChv
cGVyYW5kLmdwcigpKTsKKyAgICAgICAgb3BlcmFuZHMuYXBwZW5kKFdURk1vdmUob3BlcmFuZCkp
OworICAgIH07CisKKyAgICB1bnNpZ25lZCBpbmRleCA9IDA7CisgICAgbV9qaXQuZ3JhcGgoKS5k
b1RvQ2hpbGRyZW4obm9kZSwgWyZdKEVkZ2UgZWRnZSkgeworICAgICAgICBpZiAoIWluZGV4KQor
ICAgICAgICAgICAgYXBwZW5kQ2VsbChlZGdlKTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAg
ICBzd2l0Y2ggKHNpZ25hdHVyZS0+YXJndW1lbnRzW2luZGV4IC0gMV0pIHsKKyAgICAgICAgICAg
IGNhc2UgU3BlY1N0cmluZzoKKyAgICAgICAgICAgICAgICBhcHBlbmRTdHJpbmcoZWRnZSk7Cisg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIFNwZWNJbnQzMk9ubHk6Cisg
ICAgICAgICAgICAgICAgYXBwZW5kSW50MzIoZWRnZSk7CisgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICBjYXNlIFNwZWNCb29sZWFuOgorICAgICAgICAgICAgICAgIGFwcGVuZEJv
b2xlYW4oZWRnZSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAg
ICAgIH0KKyAgICAgICAgKytpbmRleDsKKyAgICB9KTsKKworICAgIEpTVmFsdWVSZWdzVGVtcG9y
YXJ5IHJlc3VsdCh0aGlzKTsKKyAgICBKU1ZhbHVlUmVncyByZXN1bHRSZWdzID0gcmVzdWx0LnJl
Z3MoKTsKKworICAgIHNpbGVudFNwaWxsQWxsUmVnaXN0ZXJzKHJlc3VsdFJlZ3MpOworICAgIGlu
dCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyA9IHNpZ25hdHVyZS0+YXJndW1lbnRDb3VudCAr
IDE7CisgICAgc3dpdGNoIChhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcykgeworICAgIGNhc2Ug
MToKKyAgICAgICAgY2FsbE9wZXJhdGlvbihyZWludGVycHJldF9jYXN0PEpfSklUT3BlcmF0aW9u
X0VQPihzaWduYXR1cmUtPnVuc2FmZUZ1bmN0aW9uKSwgZXh0cmFjdFJlc3VsdChyZXN1bHRSZWdz
KSwgcmVnc1swXSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgMjoKKyAgICAgICAgY2FsbE9w
ZXJhdGlvbihyZWludGVycHJldF9jYXN0PEpfSklUT3BlcmF0aW9uX0VQUD4oc2lnbmF0dXJlLT51
bnNhZmVGdW5jdGlvbiksIGV4dHJhY3RSZXN1bHQocmVzdWx0UmVncyksIHJlZ3NbMF0sIHJlZ3Nb
MV0pOworICAgICAgICBicmVhazsKKyAgICBjYXNlIDM6CisgICAgICAgIGNhbGxPcGVyYXRpb24o
cmVpbnRlcnByZXRfY2FzdDxKX0pJVE9wZXJhdGlvbl9FUFBQPihzaWduYXR1cmUtPnVuc2FmZUZ1
bmN0aW9uKSwgZXh0cmFjdFJlc3VsdChyZXN1bHRSZWdzKSwgcmVnc1swXSwgcmVnc1sxXSwgcmVn
c1syXSk7CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIFJFTEVBU0VfQVNT
RVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIHNpbGVudEZp
bGxBbGxSZWdpc3RlcnMocmVzdWx0UmVncyk7CisgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsK
KyAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdFJlZ3MsIG5vZGUpOworfQorCiB2b2lkIFNwZWN1bGF0
aXZlSklUOjpjb21waWxlQ2FsbERPTUdldHRlcihOb2RlKiBub2RlKQogewogICAgIERPTUpJVDo6
Q2FsbERPTUdldHRlclBhdGNocG9pbnQqIHBhdGNocG9pbnQgPSBub2RlLT5jYWxsRE9NR2V0dGVy
RGF0YSgpLT5wYXRjaHBvaW50OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTcGVjdWxhdGl2ZUpJVC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVj
dWxhdGl2ZUpJVC5oCmluZGV4IDU2NTM4YTI5NDZlNDAzMDBmMDUwZjMzNTUyYTczY2NhNzU5Y2Vh
Y2EuLjc5NmE4YTM1ZTZkMzA1N2ZhYWJlYTA3OWEwMjAzZDVkNDk5YTk1YjEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKQEAgLTE2NTEsNiArMTY1
MSwxMSBAQCBjbGFzcyBTcGVjdWxhdGl2ZUpJVCB7CiAgICAgICAgIG1faml0LnNldHVwQXJndW1l
bnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyKTsKICAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxT
ZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOwogICAgIH0KKyAgICBKSVRDb21waWxlcjo6Q2Fs
bCBjYWxsT3BlcmF0aW9uKEpfSklUT3BlcmF0aW9uX0VQUFAgb3BlcmF0aW9uLCBHUFJSZWcgcmVz
dWx0LCBHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIsIEdQUlJlZyBhcmczKQorICAgIHsKKyAgICAg
ICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIsIGFyZzMpOwor
ICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7Cisg
ICAgfQogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9KSVRPcGVyYXRpb25f
RUdQIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyKQog
ICAgIHsKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFy
ZzIpOwpAQCAtMTkxNSw2ICsxOTIwLDE2IEBAIGNsYXNzIFNwZWN1bGF0aXZlSklUIHsKICAgICAg
ICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIFRydXN0ZWRJbW1QdHIo
cG9pbnRlcikpOwogICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb24s
IHJlc3VsdC5wYXlsb2FkR1BSKCksIHJlc3VsdC50YWdHUFIoKSk7CiAgICAgfQorICAgIEpJVENv
bXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9KSVRPcGVyYXRpb25fRVBQIG9wZXJhdGlvbiwg
SlNWYWx1ZVJlZ3MgcmVzdWx0LCBHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIpCisgICAgeworICAg
ICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMik7CisgICAg
ICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0LnBheWxvYWRH
UFIoKSwgcmVzdWx0LnRhZ0dQUigpKTsKKyAgICB9CisgICAgSklUQ29tcGlsZXI6OkNhbGwgY2Fs
bE9wZXJhdGlvbihKX0pJVE9wZXJhdGlvbl9FUFBQIG9wZXJhdGlvbiwgSlNWYWx1ZVJlZ3MgcmVz
dWx0LCBHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIsIEdQUlJlZyBhcmczKQorICAgIHsKKyAgICAg
ICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIsIGFyZzMpOwor
ICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdC5wYXls
b2FkR1BSKCksIHJlc3VsdC50YWdHUFIoKSk7CisgICAgfQogICAgIEpJVENvbXBpbGVyOjpDYWxs
IGNhbGxPcGVyYXRpb24oSl9KSVRPcGVyYXRpb25fRUdQIG9wZXJhdGlvbiwgSlNWYWx1ZVJlZ3Mg
cmVzdWx0LCBHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIpCiAgICAgewogICAgICAgICBtX2ppdC5z
ZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMik7CkBAIC0yNTYyLDYgKzI1Nzcs
NyBAQCBjbGFzcyBTcGVjdWxhdGl2ZUpJVCB7CiAgICAgdm9pZCBjb21waWxlUmVhbGxvY2F0ZVBy
b3BlcnR5U3RvcmFnZShOb2RlKik7CiAgICAgdm9pZCBjb21waWxlR2V0QnV0dGVyZmx5KE5vZGUq
KTsKICAgICB2b2lkIGNvbXBpbGVDYWxsRE9NR2V0dGVyKE5vZGUqKTsKKyAgICB2b2lkIGNvbXBp
bGVDYWxsRE9NKE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVDaGVja0RPTShOb2RlKik7CiAgICAg
CiAjaWYgVVNFKEpTVkFMVUUzMl82NCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCmluZGV4IGNiMDRhNWE2NWM3NTBlMjNmMTdj
OWRiMjM0MTViNzM0YWVmNWI0YTQuLjEwMjQyOWRlMDAwYjMyYWRmZGQwMjc0M2VjNmRmZGRlZTgx
ZjUzYWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRp
dmVKSVQzMl82NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxh
dGl2ZUpJVDMyXzY0LmNwcApAQCAtNTU2MSw2ICs1NTYxLDEwIEBAIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgYnJlYWs7CiAgICAgfQogCisgICAgY2Fz
ZSBDYWxsRE9NOgorICAgICAgICBjb21waWxlQ2FsbERPTShub2RlKTsKKyAgICAgICAgYnJlYWs7
CisKICAgICBjYXNlIENhbGxET01HZXR0ZXI6CiAgICAgICAgIGNvbXBpbGVDYWxsRE9NR2V0dGVy
KG5vZGUpOwogICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCmluZGV4IGI0MWM2ZjMyYjMzZDgzYzY1ZTg1NGY4NjA3
OGQ3NGE1MjQwMjk4MTMuLjgzMGJmYWRjYWYyODY2N2EwOGIxYjgyZWU1OTg4YzBjNjVkMmNhYjkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2
NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0
LmNwcApAQCAtNTY5Myw2ICs1NjkzLDEwIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUo
Tm9kZSogbm9kZSkKICAgICAgICAgY29tcGlsZU1hdGVyaWFsaXplTmV3T2JqZWN0KG5vZGUpOwog
ICAgICAgICBicmVhazsKIAorICAgIGNhc2UgQ2FsbERPTToKKyAgICAgICAgY29tcGlsZUNhbGxE
T00obm9kZSk7CisgICAgICAgIGJyZWFrOworCiAgICAgY2FzZSBDYWxsRE9NR2V0dGVyOgogICAg
ICAgICBjb21waWxlQ2FsbERPTUdldHRlcihub2RlKTsKICAgICAgICAgYnJlYWs7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZG9taml0L0RPTUpJVEVmZmVjdC5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RvbWppdC9ET01KSVRFZmZlY3QuaAppbmRleCA1OWUzMDBjMzkyNjEw
NDdhMTEyMjkwZGE4NmI0ZmExNjhkOWM2MzA2Li42MWNmM2I3MWFiYmNlMzFlNDUxMzZhZjI4NmM2
YzdhZjIzNjY4YTZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZG9taml0L0RP
TUpJVEVmZmVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kb21qaXQvRE9NSklURWZm
ZWN0LmgKQEAgLTI4LDU2ICsyOCw2MiBAQAogI2luY2x1ZGUgIkRPTUpJVEhlYXBSYW5nZS5oIgog
I2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgogCi0jaWYgRU5BQkxFKEpJVCkKLQogbmFtZXNwYWNl
IEpTQyB7IG5hbWVzcGFjZSBET01KSVQgewogCi1zdHJ1Y3QgRWZmZWN0IHsKK2NsYXNzIEVmZmVj
dCB7CitwdWJsaWM6CiAgICAgSGVhcFJhbmdlIHJlYWRzIHsgSGVhcFJhbmdlOjp0b3AoKSB9Owog
ICAgIEhlYXBSYW5nZSB3cml0ZXMgeyBIZWFwUmFuZ2U6OnRvcCgpIH07Ci0gICAgT3B0aW9uYWw8
SGVhcFJhbmdlPiBkZWY7CisgICAgSGVhcFJhbmdlIGRlZiB7IEhlYXBSYW5nZTo6dG9wKCkgfTsK
KworICAgIGNvbnN0ZXhwciBFZmZlY3QoKSA9IGRlZmF1bHQ7CisgICAgY29uc3RleHByIEVmZmVj
dChIZWFwUmFuZ2UgcmVhZHMsIEhlYXBSYW5nZSB3cml0ZXMpCisgICAgICAgIDogcmVhZHMocmVh
ZHMpCisgICAgICAgICwgd3JpdGVzKHdyaXRlcykKKyAgICB7CisgICAgfQorCisgICAgY29uc3Rl
eHByIEVmZmVjdChIZWFwUmFuZ2UgcmVhZHMsIEhlYXBSYW5nZSB3cml0ZXMsIEhlYXBSYW5nZSBk
ZWYpCisgICAgICAgIDogcmVhZHMocmVhZHMpCisgICAgICAgICwgd3JpdGVzKHdyaXRlcykKKyAg
ICAgICAgLCBkZWYoZGVmKQorICAgIHsKKyAgICB9CiAKLSAgICBzdGF0aWMgRWZmZWN0IGZvclJl
YWRXcml0ZShIZWFwUmFuZ2UgcmVhZFJhbmdlLCBIZWFwUmFuZ2Ugd3JpdGVSYW5nZSkKKyAgICBj
b25zdGV4cHIgc3RhdGljIEVmZmVjdCBmb3JXcml0ZShIZWFwUmFuZ2Ugd3JpdGVSYW5nZSkKICAg
ICB7Ci0gICAgICAgIEVmZmVjdCBlZmZlY3Q7Ci0gICAgICAgIGVmZmVjdC5yZWFkcyA9IHJlYWRS
YW5nZTsKLSAgICAgICAgZWZmZWN0LndyaXRlcyA9IHdyaXRlUmFuZ2U7Ci0gICAgICAgIHJldHVy
biBlZmZlY3Q7CisgICAgICAgIHJldHVybiBFZmZlY3QoSGVhcFJhbmdlOjpub25lKCksIHdyaXRl
UmFuZ2UpOwogICAgIH0KIAotICAgIHN0YXRpYyBFZmZlY3QgZm9yUHVyZSgpCisgICAgY29uc3Rl
eHByIHN0YXRpYyBFZmZlY3QgZm9yUmVhZChIZWFwUmFuZ2UgcmVhZFJhbmdlKQogICAgIHsKLSAg
ICAgICAgRWZmZWN0IGVmZmVjdDsKLSAgICAgICAgZWZmZWN0LnJlYWRzID0gSGVhcFJhbmdlOjpu
b25lKCk7Ci0gICAgICAgIGVmZmVjdC53cml0ZXMgPSBIZWFwUmFuZ2U6Om5vbmUoKTsKLSAgICAg
ICAgZWZmZWN0LmRlZiA9IEhlYXBSYW5nZTo6bm9uZSgpOwotICAgICAgICByZXR1cm4gZWZmZWN0
OworICAgICAgICByZXR1cm4gRWZmZWN0KHJlYWRSYW5nZSwgSGVhcFJhbmdlOjpub25lKCkpOwog
ICAgIH0KIAotICAgIHN0YXRpYyBFZmZlY3QgZm9yRGVmKEhlYXBSYW5nZSBkZWYpCisgICAgY29u
c3RleHByIHN0YXRpYyBFZmZlY3QgZm9yUmVhZFdyaXRlKEhlYXBSYW5nZSByZWFkUmFuZ2UsIEhl
YXBSYW5nZSB3cml0ZVJhbmdlKQogICAgIHsKLSAgICAgICAgRWZmZWN0IGVmZmVjdDsKLSAgICAg
ICAgZWZmZWN0LnJlYWRzID0gZGVmOwotICAgICAgICBlZmZlY3Qud3JpdGVzID0gSGVhcFJhbmdl
Ojpub25lKCk7Ci0gICAgICAgIGVmZmVjdC5kZWYgPSBkZWY7Ci0gICAgICAgIHJldHVybiBlZmZl
Y3Q7CisgICAgICAgIHJldHVybiBFZmZlY3QocmVhZFJhbmdlLCB3cml0ZVJhbmdlKTsKICAgICB9
CiAKLSAgICBzdGF0aWMgRWZmZWN0IGZvckRlZihIZWFwUmFuZ2UgZGVmLCBIZWFwUmFuZ2UgcmVh
ZFJhbmdlLCBIZWFwUmFuZ2Ugd3JpdGVSYW5nZSkKKyAgICBjb25zdGV4cHIgc3RhdGljIEVmZmVj
dCBmb3JQdXJlKCkKICAgICB7Ci0gICAgICAgIEVmZmVjdCBlZmZlY3Q7Ci0gICAgICAgIGVmZmVj
dC5yZWFkcyA9IHJlYWRSYW5nZTsKLSAgICAgICAgZWZmZWN0LndyaXRlcyA9IHdyaXRlUmFuZ2U7
Ci0gICAgICAgIGVmZmVjdC5kZWYgPSBkZWY7Ci0gICAgICAgIHJldHVybiBlZmZlY3Q7CisgICAg
ICAgIHJldHVybiBFZmZlY3QoSGVhcFJhbmdlOjpub25lKCksIEhlYXBSYW5nZTo6bm9uZSgpLCBI
ZWFwUmFuZ2U6Om5vbmUoKSk7CiAgICAgfQogCi0gICAgYm9vbCBtdXN0R2VuZXJhdGUoKSBjb25z
dAorICAgIGNvbnN0ZXhwciBzdGF0aWMgRWZmZWN0IGZvckRlZihIZWFwUmFuZ2UgZGVmKQorICAg
IHsKKyAgICAgICAgcmV0dXJuIEVmZmVjdChkZWYsIEhlYXBSYW5nZTo6bm9uZSgpLCBkZWYpOwor
ICAgIH0KKworICAgIGNvbnN0ZXhwciBzdGF0aWMgRWZmZWN0IGZvckRlZihIZWFwUmFuZ2UgZGVm
LCBIZWFwUmFuZ2UgcmVhZFJhbmdlLCBIZWFwUmFuZ2Ugd3JpdGVSYW5nZSkKKyAgICB7CisgICAg
ICAgIHJldHVybiBFZmZlY3QocmVhZFJhbmdlLCB3cml0ZVJhbmdlLCBkZWYpOworICAgIH0KKwor
ICAgIGNvbnN0ZXhwciBib29sIG11c3RHZW5lcmF0ZSgpIGNvbnN0CiAgICAgewogICAgICAgICBy
ZXR1cm4gISF3cml0ZXM7CiAgICAgfQogfTsKIAogfSB9Ci0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RvbWppdC9ET01KSVRIZWFwUmFuZ2UuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kb21qaXQvRE9NSklUSGVhcFJhbmdlLmgKaW5kZXggZmI5Mzk5OWZmNzg1
YzA2ZjdkYWNkNmRhOWM4ZDZlMGE5NTY3ODY3NC4uZjcwZmVjYzY5MDZkZDViZTA1NDI5NWU3MDhl
OTRiNzc5MzExNjQwZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RvbWppdC9E
T01KSVRIZWFwUmFuZ2UuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZG9taml0L0RPTUpJ
VEhlYXBSYW5nZS5oCkBAIC0yOCw4ICsyOCw2IEBACiAjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMu
aD4KICNpbmNsdWRlIDx3dGYvUHJpbnRTdHJlYW0uaD4KIAotI2lmIEVOQUJMRShKSVQpCi0KIG5h
bWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgRE9NSklUIHsKIAogY2xhc3MgSGVhcFJhbmdlIHsKQEAg
LTQ3LDcgKzQ1LDYgQEAgY2xhc3MgSGVhcFJhbmdlIHsKICAgICAgICAgQVNTRVJUX1dJVEhfTUVT
U0FHRShiZWdpbiA8PSBlbmQsICJiZWdpbiA8PSBlbmQgaXMgdGhlIGludmFyaWFudCBvZiB0aGlz
IEhlYXBSYW5nZS4iKTsKICAgICB9CiAKLXByaXZhdGU6CiAgICAgZW51bSBDb25zdEV4cHJUYWcg
eyBDb25zdEV4cHIgfTsKICAgICBjb25zdGV4cHIgSGVhcFJhbmdlKENvbnN0RXhwclRhZywgdWlu
dDE2X3QgYmVnaW4sIHVpbnQxNl90IGVuZCkKICAgICAgICAgOiBtX2JlZ2luKGJlZ2luKQpAQCAt
NTUsMjEgKzUyLDEzIEBAIGNsYXNzIEhlYXBSYW5nZSB7CiAgICAgewogICAgIH0KIAotICAgIHRl
bXBsYXRlPHVpbnQxNl90IGJlZ2luLCB1aW50MTZfdCBlbmQ+Ci0gICAgc3RhdGljIGNvbnN0ZXhw
ciBIZWFwUmFuZ2UgZnJvbUNvbnN0YW50KCkKLSAgICB7Ci0gICAgICAgIHN0YXRpY19hc3NlcnQo
YmVnaW4gPD0gZW5kLCAiYmVnaW4gPD0gZW5kIGlzIHRoZSBpbnZhcmlhbnQgb2YgdGhpcyBIZWFw
UmFuZ2UuIik7Ci0gICAgICAgIHJldHVybiBIZWFwUmFuZ2UoQ29uc3RFeHByLCBiZWdpbiwgZW5k
KTsKLSAgICB9Ci0KLXB1YmxpYzoKICAgICBlbnVtIFJhd1JlcHJlc2VudGF0aW9uVGFnIHsgUmF3
UmVwcmVzZW50YXRpb24gfTsKICAgICBleHBsaWNpdCBjb25zdGV4cHIgSGVhcFJhbmdlKFJhd1Jl
cHJlc2VudGF0aW9uVGFnLCB1aW50MzJfdCB2YWx1ZSkKICAgICAgICAgOiBtX3Jhdyh2YWx1ZSkK
ICAgICB7CiAgICAgfQogCi0gICAgc3RhdGljIEhlYXBSYW5nZSBmcm9tUmF3KHVpbnQzMl90IHZh
bHVlKQorICAgIGNvbnN0ZXhwciBzdGF0aWMgSGVhcFJhbmdlIGZyb21SYXcodWludDMyX3QgdmFs
dWUpCiAgICAgewogICAgICAgICByZXR1cm4gSGVhcFJhbmdlKFJhd1JlcHJlc2VudGF0aW9uLCB2
YWx1ZSk7CiAgICAgfQpAQCAtNzgsMTYgKzY3LDI4IEBAIGNsYXNzIEhlYXBSYW5nZSB7CiAgICAg
dWludDE2X3QgZW5kKCkgY29uc3QgeyByZXR1cm4gbV9lbmQ7IH0KICAgICB1aW50MzJfdCByYXdS
ZXByZXNlbnRhdGlvbigpIHsgcmV0dXJuIG1fcmF3OyB9CiAKLSAgICBleHBsaWNpdCBvcGVyYXRv
ciBib29sKCkgY29uc3QKKyAgICBjb25zdGV4cHIgZXhwbGljaXQgb3BlcmF0b3IgYm9vbCgpIGNv
bnN0CiAgICAgewogICAgICAgICByZXR1cm4gbV9iZWdpbiAhPSBtX2VuZDsKICAgICB9CiAKLSAg
ICBib29sIG9wZXJhdG9yPT0oY29uc3QgSGVhcFJhbmdlJiBvdGhlcikgY29uc3QKKyAgICBjb25z
dGV4cHIgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEhlYXBSYW5nZSYgb3RoZXIpIGNvbnN0CiAgICAg
ewogICAgICAgICByZXR1cm4gbV9iZWdpbiA9PSBvdGhlci5tX2JlZ2luICYmIG1fZW5kID09IG90
aGVyLm1fZW5kOwogICAgIH0KIAorICAgIGNvbnN0ZXhwciBib29sIG9wZXJhdG9yIT0oY29uc3Qg
SGVhcFJhbmdlJiBvdGhlcikgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiAhb3BlcmF0b3I9
PShvdGhlcik7CisgICAgfQorCisgICAgdGVtcGxhdGU8dWludDE2X3QgYmVnaW4sIHVpbnQxNl90
IGVuZD4KKyAgICBzdGF0aWMgY29uc3RleHByIEhlYXBSYW5nZSBmcm9tQ29uc3RhbnQoKQorICAg
IHsKKyAgICAgICAgc3RhdGljX2Fzc2VydChiZWdpbiA8PSBlbmQsICJiZWdpbiA8PSBlbmQgaXMg
dGhlIGludmFyaWFudCBvZiB0aGlzIEhlYXBSYW5nZS4iKTsKKyAgICAgICAgcmV0dXJuIEhlYXBS
YW5nZShDb25zdEV4cHIsIGJlZ2luLCBlbmQpOworICAgIH0KKwogICAgIHN0YXRpYyBjb25zdGV4
cHIgSGVhcFJhbmdlIHRvcCgpIHsgcmV0dXJuIGZyb21Db25zdGFudDwwLCBVSU5UMTZfTUFYPigp
OyB9CiAgICAgc3RhdGljIGNvbnN0ZXhwciBIZWFwUmFuZ2Ugbm9uZSgpIHsgcmV0dXJuIGZyb21D
b25zdGFudDxVSU5UMTZfTUFYLCBVSU5UMTZfTUFYPigpOyB9IC8vIEVtcHR5IHJhbmdlLgogCkBA
IC0xMjcsNSArMTI4LDMgQEAgY2xhc3MgSGVhcFJhbmdlIHsKIH07CiAKIH0gfQotCi0jZW5kaWYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kb21qaXQvRE9NSklUU2lnbmF0dXJl
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZG9taml0L0RPTUpJVFNpZ25hdHVyZS5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmIxOGRkZGJlZThmMjAwMWYwOTRhYThmYTY5MzE4NjY5MWVmZjI2ZDUKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZG9taml0L0RPTUpJVFNpZ25hdHVyZS5o
CkBAIC0wLDAgKzEsNzAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
CisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkNsYXNzSW5mby5oIgorI2luY2x1ZGUg
IkRPTUpJVEVmZmVjdC5oIgorI2luY2x1ZGUgIlNwZWN1bGF0ZWRUeXBlLmgiCisKK25hbWVzcGFj
ZSBKU0MgeyBuYW1lc3BhY2UgRE9NSklUIHsKKworLy8gQ3VycmVudGx5LCB3ZSBvbmx5IHN1cHBv
cnQgZnVuY3Rpb25zIHdoaWNoIGFyZ3VtZW50cyB1cCB0byAyLgorLy8gRXZlbnR1YWxseSwgd2Ug
c2hvdWxkIGV4dGVuZCB0aGlzLiBCdXQgcG9zc2libHksIDIgb3IgMyBjYW4gY292ZXIgdHlwaWNh
bCB1c2UgY2FzZXMuCisjZGVmaW5lIEpTQ19ET01KSVRfU0lHTkFUVVJFX01BWF9BUkdVTUVOVFMg
MgorCitjbGFzcyBQYXRjaHBvaW50OworCit0eXBlZGVmIFJlZjxQYXRjaHBvaW50PiBDaGVja0RP
TUdlbmVyYXRvckZ1bmN0aW9uKHZvaWQpOworCitjbGFzcyBTaWduYXR1cmUgeworcHVibGljOgor
ICAgIHRlbXBsYXRlPHR5cGVuYW1lLi4uIEFyZ3VtZW50cz4KKyAgICBjb25zdGV4cHIgU2lnbmF0
dXJlKHVpbnRwdHJfdCB1bnNhZmVGdW5jdGlvbiwgQ2hlY2tET01HZW5lcmF0b3JGdW5jdGlvbiog
Y2hlY2tET01HZW5lcmF0b3JGdW5jdGlvbiwgY29uc3QgQ2xhc3NJbmZvKiBjbGFzc0luZm8sIEVm
ZmVjdCBlZmZlY3QsIFNwZWN1bGF0ZWRUeXBlIHJlc3VsdCwgQXJndW1lbnRzLi4uIGFyZ3VtZW50
cykKKyAgICAgICAgOiB1bnNhZmVGdW5jdGlvbih1bnNhZmVGdW5jdGlvbikKKyAgICAgICAgLCBj
aGVja0RPTUdlbmVyYXRvckZ1bmN0aW9uKGNoZWNrRE9NR2VuZXJhdG9yRnVuY3Rpb24pCisgICAg
ICAgICwgY2xhc3NJbmZvKGNsYXNzSW5mbykKKyAgICAgICAgLCBlZmZlY3QoZWZmZWN0KQorICAg
ICAgICAsIHJlc3VsdChyZXN1bHQpCisgICAgICAgICwgYXJndW1lbnRzIHtzdGF0aWNfY2FzdDxT
cGVjdWxhdGVkVHlwZT4oYXJndW1lbnRzKS4uLn0KKyAgICAgICAgLCBhcmd1bWVudENvdW50KHNp
emVvZi4uLihBcmd1bWVudHMpKQorICAgIHsKKyAgICB9CisKKyAgICBSZWY8UGF0Y2hwb2ludD4g
Y2hlY2tET00oKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIGNoZWNrRE9NR2VuZXJhdG9y
RnVuY3Rpb24oKTsKKyAgICB9CisKKyAgICB1aW50cHRyX3QgdW5zYWZlRnVuY3Rpb247CisgICAg
Q2hlY2tET01HZW5lcmF0b3JGdW5jdGlvbiogY2hlY2tET01HZW5lcmF0b3JGdW5jdGlvbjsKKyAg
ICBjb25zdCBDbGFzc0luZm8qIGNvbnN0IGNsYXNzSW5mbzsKKyAgICBjb25zdCBFZmZlY3QgZWZm
ZWN0OworICAgIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIHJlc3VsdDsKKyAgICBjb25zdCBTcGVjdWxh
dGVkVHlwZSBhcmd1bWVudHNbSlNDX0RPTUpJVF9TSUdOQVRVUkVfTUFYX0FSR1VNRU5UU107Cisg
ICAgY29uc3QgdW5zaWduZWQgYXJndW1lbnRDb3VudDsKK307CisKK30gfQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCmluZGV4IDU0ZjRlNzJlNjQxOWJm
ZTI1NTY1M2UzNjVmYmFjODIwMzJmZmRlOTcuLjNiYTE1ZTZlMjg0NGQzMDQwM2U4ZGQ0ZTAxNmMy
NGIwYzA0NmRmYzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2Fw
YWJpbGl0aWVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxp
dGllcy5jcHAKQEAgLTI3Myw2ICsyNzMsNyBAQCBpbmxpbmUgQ2FwYWJpbGl0eUxldmVsIGNhbkNv
bXBpbGUoTm9kZSogbm9kZSkKICAgICBjYXNlIERlZmluZUFjY2Vzc29yUHJvcGVydHk6CiAgICAg
Y2FzZSBUb0xvd2VyQ2FzZToKICAgICBjYXNlIENoZWNrRE9NOgorICAgIGNhc2UgQ2FsbERPTToK
ICAgICBjYXNlIENhbGxET01HZXR0ZXI6CiAgICAgICAgIC8vIFRoZXNlIGFyZSBPSy4KICAgICAg
ICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2Vy
REZHVG9CMy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5j
cHAKaW5kZXggYWQxNjE1NzIwMjdjNDFmMzAwNjgzZGMxMjI0MmY5Yjk1ZDQ1OTBjMi4uNDBlYmMx
NTc5MGNkMGQ0NTM4N2ZjNTBkZGZmMmQ4NTExZTZlN2YwZCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcApAQCAtMTA2MCw2ICsxMDYwLDkgQEAgY2xh
c3MgTG93ZXJERkdUb0IzIHsKICAgICAgICAgY2FzZSBDaGVja0RPTToKICAgICAgICAgICAgIGNv
bXBpbGVDaGVja0RPTSgpOwogICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQ2FsbERP
TToKKyAgICAgICAgICAgIGNvbXBpbGVDYWxsRE9NKCk7CisgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgY2FzZSBDYWxsRE9NR2V0dGVyOgogICAgICAgICAgICAgY29tcGlsZUNhbGxET01HZXR0
ZXIoKTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtOTEwMCw2ICs5MTAzLDU0IEBAIGNsYXNzIExv
d2VyREZHVG9CMyB7CiAgICAgICAgIHBhdGNocG9pbnQtPmVmZmVjdHMgPSBFZmZlY3RzOjpmb3JD
aGVjaygpOwogICAgIH0KIAorICAgIHZvaWQgY29tcGlsZUNhbGxET00oKQorICAgIHsKKyAgICAg
ICAgY29uc3QgRE9NSklUOjpTaWduYXR1cmUqIHNpZ25hdHVyZSA9IG1fbm9kZS0+c2lnbmF0dXJl
KCk7CisKKyAgICAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBoYXZlIGEgd2F5IHRvIGNhbGwgZnVu
Y3Rpb25zIHdpdGggdGhlIHZlY3RvciBvZiByZWdpc3RlcnMuCisgICAgICAgIC8vIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjMwOTkKKyAgICAgICAgVmVjdG9yPExW
YWx1ZT4gb3BlcmFuZHM7CisKKyAgICAgICAgdW5zaWduZWQgaW5kZXggPSAwOworICAgICAgICBE
RkdfTk9ERV9ET19UT19DSElMRFJFTihtX2dyYXBoLCBtX25vZGUsIFsmXShOb2RlKiwgRWRnZSBl
ZGdlKSB7CisgICAgICAgICAgICBpZiAoIWluZGV4KQorICAgICAgICAgICAgICAgIG9wZXJhbmRz
LmFwcGVuZChsb3dDZWxsKGVkZ2UpKTsKKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAg
ICAgIHN3aXRjaCAoc2lnbmF0dXJlLT5hcmd1bWVudHNbaW5kZXggLSAxXSkgeworICAgICAgICAg
ICAgICAgIGNhc2UgU3BlY1N0cmluZzoKKyAgICAgICAgICAgICAgICAgICAgb3BlcmFuZHMuYXBw
ZW5kKGxvd1N0cmluZyhlZGdlKSk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgICAgIGNhc2UgU3BlY0ludDMyT25seToKKyAgICAgICAgICAgICAgICAgICAgb3BlcmFu
ZHMuYXBwZW5kKGxvd0ludDMyKGVkZ2UpKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICAgICAgY2FzZSBTcGVjQm9vbGVhbjoKKyAgICAgICAgICAgICAgICAgICAgb3Bl
cmFuZHMuYXBwZW5kKGxvd0Jvb2xlYW4oZWRnZSkpOworICAgICAgICAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICArK2luZGV4
OworICAgICAgICB9KTsKKworICAgICAgICBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMg
PSBzaWduYXR1cmUtPmFyZ3VtZW50Q291bnQgKyAxOworICAgICAgICBMVmFsdWUgcmVzdWx0Owor
ICAgICAgICBzd2l0Y2ggKGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKSB7CisgICAgICAgIGNh
c2UgMToKKyAgICAgICAgICAgIHJlc3VsdCA9IHZtQ2FsbChJbnQ2NCwgbV9vdXQub3BlcmF0aW9u
KHJlaW50ZXJwcmV0X2Nhc3Q8Sl9KSVRPcGVyYXRpb25fRVA+KHNpZ25hdHVyZS0+dW5zYWZlRnVu
Y3Rpb24pKSwgbV9jYWxsRnJhbWUsIG9wZXJhbmRzWzBdKTsKKyAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICBjYXNlIDI6CisgICAgICAgICAgICByZXN1bHQgPSB2bUNhbGwoSW50NjQsIG1fb3V0
Lm9wZXJhdGlvbihyZWludGVycHJldF9jYXN0PEpfSklUT3BlcmF0aW9uX0VQUD4oc2lnbmF0dXJl
LT51bnNhZmVGdW5jdGlvbikpLCBtX2NhbGxGcmFtZSwgb3BlcmFuZHNbMF0sIG9wZXJhbmRzWzFd
KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIDM6CisgICAgICAgICAgICByZXN1
bHQgPSB2bUNhbGwoSW50NjQsIG1fb3V0Lm9wZXJhdGlvbihyZWludGVycHJldF9jYXN0PEpfSklU
T3BlcmF0aW9uX0VQUFA+KHNpZ25hdHVyZS0+dW5zYWZlRnVuY3Rpb24pKSwgbV9jYWxsRnJhbWUs
IG9wZXJhbmRzWzBdLCBvcGVyYW5kc1sxXSwgb3BlcmFuZHNbMl0pOworICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVB
Q0hFRCgpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAgICBzZXRKU1Zh
bHVlKHJlc3VsdCk7CisgICAgfQorCiAgICAgdm9pZCBjb21waWxlQ2FsbERPTUdldHRlcigpCiAg
ICAgewogICAgICAgICBET01KSVQ6OkNhbGxET01HZXR0ZXJQYXRjaHBvaW50KiBkb21KSVQgPSBt
X25vZGUtPmNhbGxET01HZXR0ZXJEYXRhKCktPnBhdGNocG9pbnQ7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCmluZGV4IDhmNmM2OTcxYTZiZWU5ZjFmYjZmYzM2OGRl
NWEyY2I4NDc2NDRhNjguLjIwYjcxZjQ1MmNlNDRiNWNjNTZjYzcxYzJkNzZiMTdiNTg4ZmU2NjUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCkBAIC0xNTgsNiAr
MTU4LDcgQEAgdHlwZWRlZiBFbmNvZGVkSlNWYWx1ZSAoSklUX09QRVJBVElPTiAqSl9KSVRPcGVy
YXRpb25fRUpQKShFeGVjU3RhdGUqLCBFbmNvZGVkSlMKIHR5cGVkZWYgRW5jb2RlZEpTVmFsdWUg
KEpJVF9PUEVSQVRJT04gKkpfSklUT3BlcmF0aW9uX0VHUCkoRXhlY1N0YXRlKiwgSlNHbG9iYWxP
YmplY3QqLCB2b2lkKik7CiB0eXBlZGVmIEVuY29kZWRKU1ZhbHVlIChKSVRfT1BFUkFUSU9OICpK
X0pJVE9wZXJhdGlvbl9FUCkoRXhlY1N0YXRlKiwgdm9pZCopOwogdHlwZWRlZiBFbmNvZGVkSlNW
YWx1ZSAoSklUX09QRVJBVElPTiAqSl9KSVRPcGVyYXRpb25fRVBQKShFeGVjU3RhdGUqLCB2b2lk
Kiwgdm9pZCopOwordHlwZWRlZiBFbmNvZGVkSlNWYWx1ZSAoSklUX09QRVJBVElPTiAqSl9KSVRP
cGVyYXRpb25fRVBQUCkoRXhlY1N0YXRlKiwgdm9pZCosIHZvaWQqLCB2b2lkKik7CiB0eXBlZGVm
IEVuY29kZWRKU1ZhbHVlIChKSVRfT1BFUkFUSU9OICpKX0pJVE9wZXJhdGlvbl9FUFMpKEV4ZWNT
dGF0ZSosIHZvaWQqLCBzaXplX3QpOwogdHlwZWRlZiBFbmNvZGVkSlNWYWx1ZSAoSklUX09QRVJB
VElPTiAqSl9KSVRPcGVyYXRpb25fRVBjKShFeGVjU3RhdGUqLCBJbnN0cnVjdGlvbiopOwogdHlw
ZWRlZiBFbmNvZGVkSlNWYWx1ZSAoSklUX09QRVJBVElPTiAqSl9KSVRPcGVyYXRpb25fRUpzY0Mp
KEV4ZWNTdGF0ZSosIEpTU2NvcGUqLCBKU0NlbGwqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUVGh1bmtzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUVGh1bmtzLmNwcAppbmRleCBiZjBhN2Y5MDkxOWE1YjZkMGJlZWQ5MjhhYmRhZjcxMGM5ZGM5
ZDBiLi40MGMxMmNlYzk0ZTAxYTA4NDA0ZjdiNmQ5NjcyMWYxMDUxZjQ4MzE5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFRodW5rcy5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRUaHVua3MuY3BwCkBAIC05MCwxMCArOTAsMTAgQEAgdm9pZCBK
SVRUaHVua3M6OmZpbmFsaXplKEhhbmRsZTxVbmtub3duPiBoYW5kbGUsIHZvaWQqKQogCiBOYXRp
dmVFeGVjdXRhYmxlKiBKSVRUaHVua3M6Omhvc3RGdW5jdGlvblN0dWIoVk0qIHZtLCBOYXRpdmVG
dW5jdGlvbiBmdW5jdGlvbiwgTmF0aXZlRnVuY3Rpb24gY29uc3RydWN0b3IsIGNvbnN0IFN0cmlu
ZyYgbmFtZSkKIHsKLSAgICByZXR1cm4gaG9zdEZ1bmN0aW9uU3R1Yih2bSwgZnVuY3Rpb24sIGNv
bnN0cnVjdG9yLCBudWxscHRyLCBOb0ludHJpbnNpYywgbmFtZSk7CisgICAgcmV0dXJuIGhvc3RG
dW5jdGlvblN0dWIodm0sIGZ1bmN0aW9uLCBjb25zdHJ1Y3RvciwgbnVsbHB0ciwgTm9JbnRyaW5z
aWMsIG51bGxwdHIsIG5hbWUpOwogfQogCi1OYXRpdmVFeGVjdXRhYmxlKiBKSVRUaHVua3M6Omhv
c3RGdW5jdGlvblN0dWIoVk0qIHZtLCBOYXRpdmVGdW5jdGlvbiBmdW5jdGlvbiwgTmF0aXZlRnVu
Y3Rpb24gY29uc3RydWN0b3IsIFRodW5rR2VuZXJhdG9yIGdlbmVyYXRvciwgSW50cmluc2ljIGlu
dHJpbnNpYywgY29uc3QgU3RyaW5nJiBuYW1lKQorTmF0aXZlRXhlY3V0YWJsZSogSklUVGh1bmtz
Ojpob3N0RnVuY3Rpb25TdHViKFZNKiB2bSwgTmF0aXZlRnVuY3Rpb24gZnVuY3Rpb24sIE5hdGl2
ZUZ1bmN0aW9uIGNvbnN0cnVjdG9yLCBUaHVua0dlbmVyYXRvciBnZW5lcmF0b3IsIEludHJpbnNp
YyBpbnRyaW5zaWMsIGNvbnN0IERPTUpJVDo6U2lnbmF0dXJlKiBzaWduYXR1cmUsIGNvbnN0IFN0
cmluZyYgbmFtZSkKIHsKICAgICBBU1NFUlQoIWlzQ29tcGlsYXRpb25UaHJlYWQoKSk7ICAgIAog
ICAgIEFTU0VSVCh2bS0+Y2FuVXNlSklUKCkpOwpAQCAtMTEwLDE0ICsxMTAsMTQgQEAgTmF0aXZl
RXhlY3V0YWJsZSogSklUVGh1bmtzOjpob3N0RnVuY3Rpb25TdHViKFZNKiB2bSwgTmF0aXZlRnVu
Y3Rpb24gZnVuY3Rpb24sIE4KICAgICAKICAgICBSZWZQdHI8SklUQ29kZT4gZm9yQ29uc3RydWN0
ID0gYWRvcHRSZWYobmV3IE5hdGl2ZUpJVENvZGUoTWFjcm9Bc3NlbWJsZXJDb2RlUmVmOjpjcmVh
dGVTZWxmTWFuYWdlZENvZGVSZWYoY3RpTmF0aXZlQ29uc3RydWN0KHZtKSksIEpJVENvZGU6Okhv
c3RDYWxsVGh1bmspKTsKICAgICAKLSAgICBOYXRpdmVFeGVjdXRhYmxlKiBuYXRpdmVFeGVjdXRh
YmxlID0gTmF0aXZlRXhlY3V0YWJsZTo6Y3JlYXRlKCp2bSwgZm9yQ2FsbCwgZnVuY3Rpb24sIGZv
ckNvbnN0cnVjdCwgY29uc3RydWN0b3IsIGludHJpbnNpYywgbmFtZSk7CisgICAgTmF0aXZlRXhl
Y3V0YWJsZSogbmF0aXZlRXhlY3V0YWJsZSA9IE5hdGl2ZUV4ZWN1dGFibGU6OmNyZWF0ZSgqdm0s
IGZvckNhbGwsIGZ1bmN0aW9uLCBmb3JDb25zdHJ1Y3QsIGNvbnN0cnVjdG9yLCBpbnRyaW5zaWMs
IHNpZ25hdHVyZSwgbmFtZSk7CiAgICAgd2Vha0FkZCgqbV9ob3N0RnVuY3Rpb25TdHViTWFwLCBz
dGQ6Om1ha2VfdHVwbGUoZnVuY3Rpb24sIGNvbnN0cnVjdG9yLCBuYW1lKSwgV2VhazxOYXRpdmVF
eGVjdXRhYmxlPihuYXRpdmVFeGVjdXRhYmxlLCB0aGlzKSk7CiAgICAgcmV0dXJuIG5hdGl2ZUV4
ZWN1dGFibGU7CiB9CiAKIE5hdGl2ZUV4ZWN1dGFibGUqIEpJVFRodW5rczo6aG9zdEZ1bmN0aW9u
U3R1YihWTSogdm0sIE5hdGl2ZUZ1bmN0aW9uIGZ1bmN0aW9uLCBUaHVua0dlbmVyYXRvciBnZW5l
cmF0b3IsIEludHJpbnNpYyBpbnRyaW5zaWMsIGNvbnN0IFN0cmluZyYgbmFtZSkKIHsKLSAgICBy
ZXR1cm4gaG9zdEZ1bmN0aW9uU3R1Yih2bSwgZnVuY3Rpb24sIGNhbGxIb3N0RnVuY3Rpb25Bc0Nv
bnN0cnVjdG9yLCBnZW5lcmF0b3IsIGludHJpbnNpYywgbmFtZSk7CisgICAgcmV0dXJuIGhvc3RG
dW5jdGlvblN0dWIodm0sIGZ1bmN0aW9uLCBjYWxsSG9zdEZ1bmN0aW9uQXNDb25zdHJ1Y3Rvciwg
Z2VuZXJhdG9yLCBpbnRyaW5zaWMsIG51bGxwdHIsIG5hbWUpOwogfQogCiB2b2lkIEpJVFRodW5r
czo6Y2xlYXJIb3N0RnVuY3Rpb25TdHVicygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVFRodW5rcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRUaHVu
a3MuaAppbmRleCAzZjhmZTgwM2Y5ODcxMGY2OTIzNTI3YmM4ZjY1NTBmNGVkZDFjN2FlLi5hZGRj
ZjIzMGMzNDVkNDI3MWI2MzdmMDhiOTRjNDE2YTNlZDE4MmE0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVFRodW5rcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUVGh1bmtzLmgKQEAgLTM5LDYgKzM5LDkgQEAKICNpbmNsdWRlIDx3dGYvdGV4dC9T
dHJpbmdIYXNoLmg+CiAKIG5hbWVzcGFjZSBKU0MgeworbmFtZXNwYWNlIERPTUpJVCB7CitjbGFz
cyBTaWduYXR1cmU7Cit9CiAKIGNsYXNzIFZNOwogY2xhc3MgTmF0aXZlRXhlY3V0YWJsZTsKQEAg
LTU3LDcgKzYwLDcgQEAgY2xhc3MgSklUVGh1bmtzIGZpbmFsIDogcHJpdmF0ZSBXZWFrSGFuZGxl
T3duZXIgewogICAgIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBjdGlTdHViKFZNKiwgVGh1bmtHZW5l
cmF0b3IpOwogCiAgICAgTmF0aXZlRXhlY3V0YWJsZSogaG9zdEZ1bmN0aW9uU3R1YihWTSosIE5h
dGl2ZUZ1bmN0aW9uLCBOYXRpdmVGdW5jdGlvbiBjb25zdHJ1Y3RvciwgY29uc3QgU3RyaW5nJiBu
YW1lKTsKLSAgICBOYXRpdmVFeGVjdXRhYmxlKiBob3N0RnVuY3Rpb25TdHViKFZNKiwgTmF0aXZl
RnVuY3Rpb24sIE5hdGl2ZUZ1bmN0aW9uIGNvbnN0cnVjdG9yLCBUaHVua0dlbmVyYXRvciwgSW50
cmluc2ljLCBjb25zdCBTdHJpbmcmIG5hbWUpOworICAgIE5hdGl2ZUV4ZWN1dGFibGUqIGhvc3RG
dW5jdGlvblN0dWIoVk0qLCBOYXRpdmVGdW5jdGlvbiwgTmF0aXZlRnVuY3Rpb24gY29uc3RydWN0
b3IsIFRodW5rR2VuZXJhdG9yLCBJbnRyaW5zaWMsIGNvbnN0IERPTUpJVDo6U2lnbmF0dXJlKiwg
Y29uc3QgU3RyaW5nJiBuYW1lKTsKICAgICBOYXRpdmVFeGVjdXRhYmxlKiBob3N0RnVuY3Rpb25T
dHViKFZNKiwgTmF0aXZlRnVuY3Rpb24sIFRodW5rR2VuZXJhdG9yLCBJbnRyaW5zaWMsIGNvbnN0
IFN0cmluZyYgbmFtZSk7CiAKICAgICB2b2lkIGNsZWFySG9zdEZ1bmN0aW9uU3R1YnMoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQm91bmRGdW5jdGlvbi5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0JvdW5kRnVuY3Rpb24uY3BwCmlu
ZGV4IDI2Zjk5ZDY1M2FhMTQ0YjI0MDRkZDc5NTk0MzI5M2RlOTZiNzM0YzUuLmM0Y2U0M2U3ZDU2
MGI4NzM2M2M0OGQ5NTBhMDlhZDc5ZDA1MjQ5N2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTQm91bmRGdW5jdGlvbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNCb3VuZEZ1bmN0aW9uLmNwcApAQCAtMTY4LDcgKzE2OCw3IEBAIEpT
Qm91bmRGdW5jdGlvbiogSlNCb3VuZEZ1bmN0aW9uOjpjcmVhdGUoVk0mIHZtLCBFeGVjU3RhdGUq
IGV4ZWMsIEpTR2xvYmFsT2JqZWN0CiAgICAgTmF0aXZlRXhlY3V0YWJsZSogZXhlY3V0YWJsZSA9
IHZtLmdldEhvc3RGdW5jdGlvbigKICAgICAgICAgc2xvd0Nhc2UgPyBib3VuZEZ1bmN0aW9uQ2Fs
bCA6IGJvdW5kVGhpc05vQXJnc0Z1bmN0aW9uQ2FsbCwKICAgICAgICAgc2xvd0Nhc2UgPyBOb0lu
dHJpbnNpYyA6IEJvdW5kVGhpc05vQXJnc0Z1bmN0aW9uQ2FsbEludHJpbnNpYywKLSAgICAgICAg
Y2FuQ29uc3RydWN0ID8gKHNsb3dDYXNlID8gYm91bmRGdW5jdGlvbkNvbnN0cnVjdCA6IGJvdW5k
VGhpc05vQXJnc0Z1bmN0aW9uQ29uc3RydWN0KSA6IGNhbGxIb3N0RnVuY3Rpb25Bc0NvbnN0cnVj
dG9yLAorICAgICAgICBjYW5Db25zdHJ1Y3QgPyAoc2xvd0Nhc2UgPyBib3VuZEZ1bmN0aW9uQ29u
c3RydWN0IDogYm91bmRUaGlzTm9BcmdzRnVuY3Rpb25Db25zdHJ1Y3QpIDogY2FsbEhvc3RGdW5j
dGlvbkFzQ29uc3RydWN0b3IsIG51bGxwdHIsCiAgICAgICAgIG5hbWUpOwogICAgIFN0cnVjdHVy
ZSogc3RydWN0dXJlID0gZ2V0Qm91bmRGdW5jdGlvblN0cnVjdHVyZSh2bSwgZXhlYywgZ2xvYmFs
T2JqZWN0LCB0YXJnZXRGdW5jdGlvbik7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwg
bnVsbHB0cik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Nl
bGwuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5oCmluZGV4IGM0MGYz
ZTIxOTg0MWZiNDY4OTYzNTI4NGIwNDIyNDdhZmQ1MjNjMzYuLjRlZmJmOTA3NzhjYzU3MWJiZGI4
Mjg3MWE1MWZhNDRmODU2YWU5OGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTQ2VsbC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2Vs
bC5oCkBAIC01NiwxNyArNTYsMTcgQEAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gdm9pZCogYWxsb2Nh
dGVDZWxsKEhlYXAmLCBzaXplX3QpOwogdGVtcGxhdGU8dHlwZW5hbWUgVD4gdm9pZCogYWxsb2Nh
dGVDZWxsKEhlYXAmLCBHQ0RlZmVycmFsQ29udGV4dCopOwogdGVtcGxhdGU8dHlwZW5hbWUgVD4g
dm9pZCogYWxsb2NhdGVDZWxsKEhlYXAmLCBHQ0RlZmVycmFsQ29udGV4dCosIHNpemVfdCk7CiAK
LSNkZWZpbmUgREVDTEFSRV9FWFBPUlRfSU5GTyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFwKLSAgICBwcm90ZWN0ZWQ6ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgc3RhdGljIEpTX0VY
UE9SVERBVEEgY29uc3QgOjpKU0M6OkNsYXNzSW5mbyBzX2luZm87ICAgICAgICAgICAgIFwKLSAg
ICBwdWJsaWM6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFwKLSAgICAgICAgc3RhdGljIGNvbnN0IDo6SlNDOjpDbGFzc0luZm8qIGlu
Zm8oKSB7IHJldHVybiAmc19pbmZvOyB9Ci0KLSNkZWZpbmUgREVDTEFSRV9JTkZPICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBwcm90ZWN0
ZWQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFwKLSAgICAgICAgc3RhdGljIGNvbnN0IDo6SlNDOjpDbGFzc0luZm8gc19pbmZvOyAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBwdWJsaWM6ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgc3RhdGlj
IGNvbnN0IDo6SlNDOjpDbGFzc0luZm8qIGluZm8oKSB7IHJldHVybiAmc19pbmZvOyB9CisjZGVm
aW5lIERFQ0xBUkVfRVhQT1JUX0lORk8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFwKKyAgICBwcm90ZWN0ZWQ6ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBzdGF0aWMg
SlNfRVhQT1JUREFUQSBjb25zdCA6OkpTQzo6Q2xhc3NJbmZvIHNfaW5mbzsgICAgICAgICAgICAg
ICAgICBcCisgICAgcHVibGljOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBj
b25zdCA6OkpTQzo6Q2xhc3NJbmZvKiBpbmZvKCkgeyByZXR1cm4gJnNfaW5mbzsgfQorCisjZGVm
aW5lIERFQ0xBUkVfSU5GTyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFwKKyAgICBwcm90ZWN0ZWQ6ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBzdGF0aWMg
Y29uc3QgOjpKU0M6OkNsYXNzSW5mbyBzX2luZm87ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBcCisgICAgcHVibGljOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBj
b25zdCA6OkpTQzo6Q2xhc3NJbmZvKiBpbmZvKCkgeyByZXR1cm4gJnNfaW5mbzsgfQogCiBjbGFz
cyBKU0NlbGwgOiBwdWJsaWMgSGVhcENlbGwgewogICAgIGZyaWVuZCBjbGFzcyBKU1ZhbHVlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcAppbmRleCA4NTg0
YmMyOTdhZjcyM2Y1ODI5ODE1NmUyZTJiMGE4OGFlNzE4ZmI0Li5hMzE4NDJiNjU5MDkzZWVkNDgz
MmYwYzIyNTQ3ZmZiNDQ5YzQ0Y2Q5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0Z1bmN0aW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0Z1bmN0aW9uLmNwcApAQCAtODQsOSArODQsOSBAQCBKU0Z1bmN0aW9uKiBKU0Z1bmN0aW9u
OjpjcmVhdGUoVk0mIHZtLCBXZWJBc3NlbWJseUV4ZWN1dGFibGUqIGV4ZWN1dGFibGUsIEpTU2Nv
cAogfQogI2VuZGlmCiAKLUpTRnVuY3Rpb24qIEpTRnVuY3Rpb246OmNyZWF0ZShWTSYgdm0sIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGludCBsZW5ndGgsIGNvbnN0IFN0cmluZyYgbmFt
ZSwgTmF0aXZlRnVuY3Rpb24gbmF0aXZlRnVuY3Rpb24sIEludHJpbnNpYyBpbnRyaW5zaWMsIE5h
dGl2ZUZ1bmN0aW9uIG5hdGl2ZUNvbnN0cnVjdG9yKQorSlNGdW5jdGlvbiogSlNGdW5jdGlvbjo6
Y3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgaW50IGxlbmd0aCwg
Y29uc3QgU3RyaW5nJiBuYW1lLCBOYXRpdmVGdW5jdGlvbiBuYXRpdmVGdW5jdGlvbiwgSW50cmlu
c2ljIGludHJpbnNpYywgTmF0aXZlRnVuY3Rpb24gbmF0aXZlQ29uc3RydWN0b3IsIGNvbnN0IERP
TUpJVDo6U2lnbmF0dXJlKiBzaWduYXR1cmUpCiB7Ci0gICAgTmF0aXZlRXhlY3V0YWJsZSogZXhl
Y3V0YWJsZSA9IHZtLmdldEhvc3RGdW5jdGlvbihuYXRpdmVGdW5jdGlvbiwgaW50cmluc2ljLCBu
YXRpdmVDb25zdHJ1Y3RvciwgbmFtZSk7CisgICAgTmF0aXZlRXhlY3V0YWJsZSogZXhlY3V0YWJs
ZSA9IHZtLmdldEhvc3RGdW5jdGlvbihuYXRpdmVGdW5jdGlvbiwgaW50cmluc2ljLCBuYXRpdmVD
b25zdHJ1Y3Rvciwgc2lnbmF0dXJlLCBuYW1lKTsKICAgICBKU0Z1bmN0aW9uKiBmdW5jdGlvbiA9
IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTRnVuY3Rpb24+KHZtLmhlYXApKSBKU0Z1bmN0
aW9uKHZtLCBnbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdC0+ZnVuY3Rpb25TdHJ1Y3R1cmUoKSk7
CiAgICAgLy8gQ2FuJ3QgZG8gdGhpcyBkdXJpbmcgaW5pdGlhbGl6YXRpb24gYmVjYXVzZSBnZXRI
b3N0RnVuY3Rpb24gbWlnaHQgZG8gYSBHQyBhbGxvY2F0aW9uLgogICAgIGZ1bmN0aW9uLT5maW5p
c2hDcmVhdGlvbih2bSwgZXhlY3V0YWJsZSwgbGVuZ3RoLCBuYW1lKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uaAppbmRleCA4ZGYwM2ExNGE2N2RhZTkzMDRjMGQ1
NTQ5NGY5NWE4NzdmOTc4MWU2Li5mMTFiMTJmYjNiZDE0NTYyNWY4MmJmMWZhODcyNTA0NDQ3NjU3
NjI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9u
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5oCkBAIC00
Niw2ICs0NiwxMSBAQCBjbGFzcyBTcGVjdWxhdGl2ZUpJVDsKIGNsYXNzIEpJVENvbXBpbGVyOwog
fQogCituYW1lc3BhY2UgRE9NSklUIHsKK2NsYXNzIFNpZ25hdHVyZTsKK30KKworCiBKU19FWFBP
UlRfUFJJVkFURSBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxIb3N0RnVuY3Rpb25B
c0NvbnN0cnVjdG9yKEV4ZWNTdGF0ZSopOwogCiBKU19FWFBPUlRfUFJJVkFURSBTdHJpbmcgZ2V0
Q2FsY3VsYXRlZERpc3BsYXlOYW1lKFZNJiwgSlNPYmplY3QqKTsKQEAgLTY3LDcgKzcyLDcgQEAg
Y2xhc3MgSlNGdW5jdGlvbiA6IHB1YmxpYyBKU0NhbGxlZSB7CiAgICAgICAgIHJldHVybiBzaXpl
b2YoSlNGdW5jdGlvbik7CiAgICAgfQogCi0gICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIEpT
RnVuY3Rpb24qIGNyZWF0ZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgaW50IGxlbmd0aCwgY29uc3Qg
U3RyaW5nJiBuYW1lLCBOYXRpdmVGdW5jdGlvbiwgSW50cmluc2ljID0gTm9JbnRyaW5zaWMsIE5h
dGl2ZUZ1bmN0aW9uIG5hdGl2ZUNvbnN0cnVjdG9yID0gY2FsbEhvc3RGdW5jdGlvbkFzQ29uc3Ry
dWN0b3IpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBKU0Z1bmN0aW9uKiBjcmVhdGUo
Vk0mLCBKU0dsb2JhbE9iamVjdCosIGludCBsZW5ndGgsIGNvbnN0IFN0cmluZyYgbmFtZSwgTmF0
aXZlRnVuY3Rpb24sIEludHJpbnNpYyA9IE5vSW50cmluc2ljLCBOYXRpdmVGdW5jdGlvbiBuYXRp
dmVDb25zdHJ1Y3RvciA9IGNhbGxIb3N0RnVuY3Rpb25Bc0NvbnN0cnVjdG9yLCBjb25zdCBET01K
SVQ6OlNpZ25hdHVyZSogPSBudWxscHRyKTsKICAgICAKICAgICBzdGF0aWMgSlNGdW5jdGlvbiog
Y3JlYXRlV2l0aEludmFsaWRhdGVkUmVhbGxvY2F0aW9uV2F0Y2hwb2ludChWTSYsIEZ1bmN0aW9u
RXhlY3V0YWJsZSosIEpTU2NvcGUqKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNOYXRpdmVTdGRGdW5jdGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU05hdGl2ZVN0ZEZ1bmN0aW9uLmNwcAppbmRleCA2ZGQ4NDlmMmVhZmJlYmRk
NzA3ZWU1NzM4MDA4MmRlNTQ4OTMyMGExLi5jMTI2NWIxZjA2YTkwYTA3NDQxZDdhYzVjNjA4ODMw
YTFlZmE0ZjAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU05h
dGl2ZVN0ZEZ1bmN0aW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U05hdGl2ZVN0ZEZ1bmN0aW9uLmNwcApAQCAtNjYsNyArNjYsNyBAQCBzdGF0aWMgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBydW5TdGRGdW5jdGlvbihFeGVjU3RhdGUqIHN0YXRlKQogCiBK
U05hdGl2ZVN0ZEZ1bmN0aW9uKiBKU05hdGl2ZVN0ZEZ1bmN0aW9uOjpjcmVhdGUoVk0mIHZtLCBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBpbnQgbGVuZ3RoLCBjb25zdCBTdHJpbmcmIG5h
bWUsIE5hdGl2ZVN0ZEZ1bmN0aW9uJiYgbmF0aXZlU3RkRnVuY3Rpb24sIEludHJpbnNpYyBpbnRy
aW5zaWMsIE5hdGl2ZUZ1bmN0aW9uIG5hdGl2ZUNvbnN0cnVjdG9yKQogewotICAgIE5hdGl2ZUV4
ZWN1dGFibGUqIGV4ZWN1dGFibGUgPSB2bS5nZXRIb3N0RnVuY3Rpb24ocnVuU3RkRnVuY3Rpb24s
IGludHJpbnNpYywgbmF0aXZlQ29uc3RydWN0b3IsIG5hbWUpOworICAgIE5hdGl2ZUV4ZWN1dGFi
bGUqIGV4ZWN1dGFibGUgPSB2bS5nZXRIb3N0RnVuY3Rpb24ocnVuU3RkRnVuY3Rpb24sIGludHJp
bnNpYywgbmF0aXZlQ29uc3RydWN0b3IsIG51bGxwdHIsIG5hbWUpOwogICAgIE5hdGl2ZVN0ZEZ1
bmN0aW9uQ2VsbCogZnVuY3Rpb25DZWxsID0gTmF0aXZlU3RkRnVuY3Rpb25DZWxsOjpjcmVhdGUo
dm0sIFdURk1vdmUobmF0aXZlU3RkRnVuY3Rpb24pKTsKICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSA9IGdsb2JhbE9iamVjdC0+bmF0aXZlU3RkRnVuY3Rpb25TdHJ1Y3R1cmUoKTsKICAgICBKU05h
dGl2ZVN0ZEZ1bmN0aW9uKiBmdW5jdGlvbiA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpT
TmF0aXZlU3RkRnVuY3Rpb24+KHZtLmhlYXApKSBKU05hdGl2ZVN0ZEZ1bmN0aW9uKHZtLCBnbG9i
YWxPYmplY3QsIHN0cnVjdHVyZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU09iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09i
amVjdC5jcHAKaW5kZXggZjUzZGI2MTk4NmVhZGRhYTIzYTI0NWRlNTRhZTA5YzU4ZjBhYjc2NC4u
MDhhZTc5MjBhOWVlNTJjMjRkNzVhYmUxZGE3ZjY2ZTgxMWIyYWYxYyAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcApAQCAtMjU0OSw2ICsyNTQ5LDE3IEBAIGJv
b2wgSlNPYmplY3Q6OnB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uKFZNJiB2bSwgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgY29uCiAgICAgcmV0dXJuIHB1dERpcmVjdCh2bSwgcHJvcGVydHlO
YW1lLCBmdW5jdGlvbiwgYXR0cmlidXRlcyk7CiB9CiAKK2Jvb2wgSlNPYmplY3Q6OnB1dERpcmVj
dE5hdGl2ZUZ1bmN0aW9uKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29u
c3QgUHJvcGVydHlOYW1lJiBwcm9wZXJ0eU5hbWUsIHVuc2lnbmVkIGZ1bmN0aW9uTGVuZ3RoLCBO
YXRpdmVGdW5jdGlvbiBuYXRpdmVGdW5jdGlvbiwgSW50cmluc2ljIGludHJpbnNpYywgY29uc3Qg
RE9NSklUOjpTaWduYXR1cmUqIHNpZ25hdHVyZSwgdW5zaWduZWQgYXR0cmlidXRlcykKK3sKKyAg
ICBTdHJpbmdJbXBsKiBuYW1lID0gcHJvcGVydHlOYW1lLnB1YmxpY05hbWUoKTsKKyAgICBpZiAo
IW5hbWUpCisgICAgICAgIG5hbWUgPSB2bS5wcm9wZXJ0eU5hbWVzLT5hbm9ueW1vdXMuaW1wbCgp
OworICAgIEFTU0VSVChuYW1lKTsKKworICAgIEpTRnVuY3Rpb24qIGZ1bmN0aW9uID0gSlNGdW5j
dGlvbjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIGZ1bmN0aW9uTGVuZ3RoLCBuYW1lLCBuYXRp
dmVGdW5jdGlvbiwgaW50cmluc2ljLCBjYWxsSG9zdEZ1bmN0aW9uQXNDb25zdHJ1Y3Rvciwgc2ln
bmF0dXJlKTsKKyAgICByZXR1cm4gcHV0RGlyZWN0KHZtLCBwcm9wZXJ0eU5hbWUsIGZ1bmN0aW9u
LCBhdHRyaWJ1dGVzKTsKK30KKwogSlNGdW5jdGlvbiogSlNPYmplY3Q6OnB1dERpcmVjdEJ1aWx0
aW5GdW5jdGlvbihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IFBy
b3BlcnR5TmFtZSYgcHJvcGVydHlOYW1lLCBGdW5jdGlvbkV4ZWN1dGFibGUqIGZ1bmN0aW9uRXhl
Y3V0YWJsZSwgdW5zaWduZWQgYXR0cmlidXRlcykKIHsKICAgICBTdHJpbmdJbXBsKiBuYW1lID0g
cHJvcGVydHlOYW1lLnB1YmxpY05hbWUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U09iamVjdC5oCmluZGV4IDYyMjBlYzdhMWJhOGU4YTc0OWRiNGIwNmNkNDI5M2E4ODVhZjdmOTIu
LmViZTQ4NWU4ZGYzNmRiNWNhZjM3NzA0YjhlZWRkNGE3NmNiOWM0NDMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaApAQCAtNDcsNiArNDcsOSBAQAogI2luY2x1ZGUg
PHd0Zi9TdGRMaWJFeHRyYXMuaD4KIAogbmFtZXNwYWNlIEpTQyB7CituYW1lc3BhY2UgRE9NSklU
IHsKK2NsYXNzIFNpZ25hdHVyZTsKK30KIAogaW5saW5lIEpTQ2VsbCogZ2V0SlNGdW5jdGlvbihK
U1ZhbHVlIHZhbHVlKQogewpAQCAtNzAwLDYgKzcwMyw3IEBAIGNsYXNzIEpTT2JqZWN0IDogcHVi
bGljIEpTQ2VsbCB7CiAKICAgICBKU19FWFBPUlRfUFJJVkFURSBib29sIHB1dERpcmVjdE5hdGl2
ZUludHJpbnNpY0dldHRlcihWTSYsIEpTR2xvYmFsT2JqZWN0KiwgSWRlbnRpZmllciwgTmF0aXZl
RnVuY3Rpb24sIEludHJpbnNpYywgdW5zaWduZWQgYXR0cmlidXRlcyk7CiAgICAgSlNfRVhQT1JU
X1BSSVZBVEUgYm9vbCBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbihWTSYsIEpTR2xvYmFsT2JqZWN0
KiwgY29uc3QgUHJvcGVydHlOYW1lJiwgdW5zaWduZWQgZnVuY3Rpb25MZW5ndGgsIE5hdGl2ZUZ1
bmN0aW9uLCBJbnRyaW5zaWMsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpOworICAgIEpTX0VYUE9SVF9Q
UklWQVRFIGJvb2wgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb24oVk0mLCBKU0dsb2JhbE9iamVjdCos
IGNvbnN0IFByb3BlcnR5TmFtZSYsIHVuc2lnbmVkIGZ1bmN0aW9uTGVuZ3RoLCBOYXRpdmVGdW5j
dGlvbiwgSW50cmluc2ljLCBjb25zdCBET01KSVQ6OlNpZ25hdHVyZSosIHVuc2lnbmVkIGF0dHJp
YnV0ZXMpOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIEpTRnVuY3Rpb24qIHB1dERpcmVjdEJ1aWx0
aW5GdW5jdGlvbihWTSYsIEpTR2xvYmFsT2JqZWN0KiwgY29uc3QgUHJvcGVydHlOYW1lJiwgRnVu
Y3Rpb25FeGVjdXRhYmxlKiwgdW5zaWduZWQgYXR0cmlidXRlcyk7CiAgICAgSlNGdW5jdGlvbiog
cHV0RGlyZWN0QnVpbHRpbkZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24oVk0mLCBKU0dsb2JhbE9i
amVjdCosIGNvbnN0IFByb3BlcnR5TmFtZSYsIEZ1bmN0aW9uRXhlY3V0YWJsZSosIHVuc2lnbmVk
IGF0dHJpYnV0ZXMpOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgcHV0RGlyZWN0TmF0aXZl
RnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbihWTSYsIEpTR2xvYmFsT2JqZWN0KiwgY29uc3QgUHJv
cGVydHlOYW1lJiwgdW5zaWduZWQgZnVuY3Rpb25MZW5ndGgsIE5hdGl2ZUZ1bmN0aW9uLCBJbnRy
aW5zaWMsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvTG9va3VwLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9M
b29rdXAuaAppbmRleCBlMmQxNzk1Mzg4ZTc2NTJiZDhmMWI0YjZkYWNiYjJjYmNlOWNkNDRmLi5k
NzA3Njg2ZmI1NjkzZTdmNTJmZTZkMWEyZWM0NGJkMDAyM2JlZjExIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Mb29rdXAuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Mb29rdXAuaApAQCAtMjQsNiArMjQsNyBAQAogI2luY2x1ZGUgIkNhbGxG
cmFtZS5oIgogI2luY2x1ZGUgIkN1c3RvbUdldHRlclNldHRlci5oIgogI2luY2x1ZGUgIkRPTUpJ
VEdldHRlclNldHRlci5oIgorI2luY2x1ZGUgIkRPTUpJVFNpZ25hdHVyZS5oIgogI2luY2x1ZGUg
IklkZW50aWZpZXIuaCIKICNpbmNsdWRlICJJZGVudGlmaWVySW5saW5lcy5oIgogI2luY2x1ZGUg
IkludHJpbnNpYy5oIgpAQCAtNzUsMTIgKzc2LDE5IEBAIHN0cnVjdCBIYXNoVGFibGVWYWx1ZSB7
CiAgICAgSW50cmluc2ljIGludHJpbnNpYygpIGNvbnN0IHsgQVNTRVJUKG1fYXR0cmlidXRlcyAm
IEZ1bmN0aW9uKTsgcmV0dXJuIG1faW50cmluc2ljOyB9CiAgICAgQnVpbHRpbkdlbmVyYXRvciBi
dWlsdGluR2VuZXJhdG9yKCkgY29uc3QgeyBBU1NFUlQobV9hdHRyaWJ1dGVzICYgQnVpbHRpbik7
IHJldHVybiByZWludGVycHJldF9jYXN0PEJ1aWx0aW5HZW5lcmF0b3I+KG1fdmFsdWVzLnZhbHVl
MSk7IH0KICAgICBOYXRpdmVGdW5jdGlvbiBmdW5jdGlvbigpIGNvbnN0IHsgQVNTRVJUKG1fYXR0
cmlidXRlcyAmIEZ1bmN0aW9uKTsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8TmF0aXZlRnVuY3Rp
b24+KG1fdmFsdWVzLnZhbHVlMSk7IH0KLSAgICB1bnNpZ25lZCBjaGFyIGZ1bmN0aW9uTGVuZ3Ro
KCkgY29uc3QgeyBBU1NFUlQobV9hdHRyaWJ1dGVzICYgRnVuY3Rpb24pOyByZXR1cm4gc3RhdGlj
X2Nhc3Q8dW5zaWduZWQgY2hhcj4obV92YWx1ZXMudmFsdWUyKTsgfQorICAgIHVuc2lnbmVkIGNo
YXIgZnVuY3Rpb25MZW5ndGgoKSBjb25zdAorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fYXR0cmli
dXRlcyAmIEZ1bmN0aW9uKTsKKyAgICAgICAgaWYgKG1fYXR0cmlidXRlcyAmIERPTUpJVEZ1bmN0
aW9uKQorICAgICAgICAgICAgcmV0dXJuIHNpZ25hdHVyZSgpLT5hcmd1bWVudENvdW50OworICAg
ICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4obV92YWx1ZXMudmFsdWUyKTsK
KyAgICB9CiAKICAgICBHZXRGdW5jdGlvbiBwcm9wZXJ0eUdldHRlcigpIGNvbnN0IHsgQVNTRVJU
KCEobV9hdHRyaWJ1dGVzICYgQnVpbHRpbk9yRnVuY3Rpb25PckFjY2Vzc29yT3JMYXp5UHJvcGVy
dHlPckNvbnN0YW50KSk7IHJldHVybiByZWludGVycHJldF9jYXN0PEdldEZ1bmN0aW9uPihtX3Zh
bHVlcy52YWx1ZTEpOyB9CiAgICAgUHV0RnVuY3Rpb24gcHJvcGVydHlQdXR0ZXIoKSBjb25zdCB7
IEFTU0VSVCghKG1fYXR0cmlidXRlcyAmIEJ1aWx0aW5PckZ1bmN0aW9uT3JBY2Nlc3Nvck9yTGF6
eVByb3BlcnR5T3JDb25zdGFudCkpOyByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxQdXRGdW5jdGlv
bj4obV92YWx1ZXMudmFsdWUyKTsgfQogCiAgICAgRE9NSklUOjpHZXR0ZXJTZXR0ZXIqIGRvbUpJ
VCgpIGNvbnN0IHsgQVNTRVJUKG1fYXR0cmlidXRlcyAmIERPTUpJVEF0dHJpYnV0ZSk7IHJldHVy
biByZWludGVycHJldF9jYXN0PERPTUpJVEdldHRlclNldHRlckdlbmVyYXRvcj4obV92YWx1ZXMu
dmFsdWUxKSgpOyB9CisgICAgY29uc3QgRE9NSklUOjpTaWduYXR1cmUqIHNpZ25hdHVyZSgpIGNv
bnN0IHsgQVNTRVJUKG1fYXR0cmlidXRlcyAmIERPTUpJVEZ1bmN0aW9uKTsgcmV0dXJuIHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgRE9NSklUOjpTaWduYXR1cmUqPihtX3ZhbHVlcy52YWx1ZTIpOyB9
CiAKICAgICBOYXRpdmVGdW5jdGlvbiBhY2Nlc3NvckdldHRlcigpIGNvbnN0IHsgQVNTRVJUKG1f
YXR0cmlidXRlcyAmIEFjY2Vzc29yKTsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8TmF0aXZlRnVu
Y3Rpb24+KG1fdmFsdWVzLnZhbHVlMSk7IH0KICAgICBOYXRpdmVGdW5jdGlvbiBhY2Nlc3NvclNl
dHRlcigpIGNvbnN0IHsgQVNTRVJUKG1fYXR0cmlidXRlcyAmIEFjY2Vzc29yKTsgcmV0dXJuIHJl
aW50ZXJwcmV0X2Nhc3Q8TmF0aXZlRnVuY3Rpb24+KG1fdmFsdWVzLnZhbHVlMik7IH0KQEAgLTMx
Myw2ICszMjEsMTIgQEAgaW5saW5lIHZvaWQgcmVpZnlTdGF0aWNQcm9wZXJ0eShWTSYgdm0sIGNv
bnN0IFByb3BlcnR5TmFtZSYgcHJvcGVydHlOYW1lLCBjb25zdAogICAgIH0KIAogICAgIGlmICh2
YWx1ZS5hdHRyaWJ1dGVzKCkgJiBGdW5jdGlvbikgeworICAgICAgICBpZiAodmFsdWUuYXR0cmli
dXRlcygpICYgRE9NSklURnVuY3Rpb24pIHsKKyAgICAgICAgICAgIHRoaXNPYmoucHV0RGlyZWN0
TmF0aXZlRnVuY3Rpb24oCisgICAgICAgICAgICAgICAgdm0sIHRoaXNPYmouZ2xvYmFsT2JqZWN0
KCksIHByb3BlcnR5TmFtZSwgdmFsdWUuZnVuY3Rpb25MZW5ndGgoKSwKKyAgICAgICAgICAgICAg
ICB2YWx1ZS5mdW5jdGlvbigpLCB2YWx1ZS5pbnRyaW5zaWMoKSwgdmFsdWUuc2lnbmF0dXJlKCks
IGF0dHJpYnV0ZXNGb3JTdHJ1Y3R1cmUodmFsdWUuYXR0cmlidXRlcygpKSk7CisgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgIH0KICAgICAgICAgdGhpc09iai5wdXREaXJlY3ROYXRpdmVGdW5j
dGlvbigKICAgICAgICAgICAgIHZtLCB0aGlzT2JqLmdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5h
bWUsIHZhbHVlLmZ1bmN0aW9uTGVuZ3RoKCksCiAgICAgICAgICAgICB2YWx1ZS5mdW5jdGlvbigp
LCB2YWx1ZS5pbnRyaW5zaWMoKSwgYXR0cmlidXRlc0ZvclN0cnVjdHVyZSh2YWx1ZS5hdHRyaWJ1
dGVzKCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05hdGl2
ZUV4ZWN1dGFibGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZlRXhl
Y3V0YWJsZS5jcHAKaW5kZXggMWMyYmVjNThiN2RiODk4YjgxMThiMjk3MTBiMmQ3NDI2OTNiYjIx
ZC4uYjdkYWQyYTQ2MmRkZGZjMjI3NjJmZDVjZDdjZjZhNDYxY2RkMThmNiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZlRXhlY3V0YWJsZS5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZlRXhlY3V0YWJsZS5jcHAKQEAgLTQw
LDEwICs0MCwxMCBAQCBuYW1lc3BhY2UgSlNDIHsKIAogY29uc3QgQ2xhc3NJbmZvIE5hdGl2ZUV4
ZWN1dGFibGU6OnNfaW5mbyA9IHsgIk5hdGl2ZUV4ZWN1dGFibGUiLCAmRXhlY3V0YWJsZUJhc2U6
OnNfaW5mbywgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShOYXRpdmVFeGVjdXRhYmxlKSB9OwogCi1O
YXRpdmVFeGVjdXRhYmxlKiBOYXRpdmVFeGVjdXRhYmxlOjpjcmVhdGUoVk0mIHZtLCBQYXNzUmVm
UHRyPEpJVENvZGU+IGNhbGxUaHVuaywgTmF0aXZlRnVuY3Rpb24gZnVuY3Rpb24sIFBhc3NSZWZQ
dHI8SklUQ29kZT4gY29uc3RydWN0VGh1bmssIE5hdGl2ZUZ1bmN0aW9uIGNvbnN0cnVjdG9yLCBJ
bnRyaW5zaWMgaW50cmluc2ljLCBjb25zdCBTdHJpbmcmIG5hbWUpCitOYXRpdmVFeGVjdXRhYmxl
KiBOYXRpdmVFeGVjdXRhYmxlOjpjcmVhdGUoVk0mIHZtLCBQYXNzUmVmUHRyPEpJVENvZGU+IGNh
bGxUaHVuaywgTmF0aXZlRnVuY3Rpb24gZnVuY3Rpb24sIFBhc3NSZWZQdHI8SklUQ29kZT4gY29u
c3RydWN0VGh1bmssIE5hdGl2ZUZ1bmN0aW9uIGNvbnN0cnVjdG9yLCBJbnRyaW5zaWMgaW50cmlu
c2ljLCBjb25zdCBET01KSVQ6OlNpZ25hdHVyZSogc2lnbmF0dXJlLCBjb25zdCBTdHJpbmcmIG5h
bWUpCiB7CiAgICAgTmF0aXZlRXhlY3V0YWJsZSogZXhlY3V0YWJsZTsKLSAgICBleGVjdXRhYmxl
ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8TmF0aXZlRXhlY3V0YWJsZT4odm0uaGVhcCkp
IE5hdGl2ZUV4ZWN1dGFibGUodm0sIGZ1bmN0aW9uLCBjb25zdHJ1Y3RvciwgaW50cmluc2ljKTsK
KyAgICBleGVjdXRhYmxlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8TmF0aXZlRXhlY3V0
YWJsZT4odm0uaGVhcCkpIE5hdGl2ZUV4ZWN1dGFibGUodm0sIGZ1bmN0aW9uLCBjb25zdHJ1Y3Rv
ciwgaW50cmluc2ljLCBzaWduYXR1cmUpOwogICAgIGV4ZWN1dGFibGUtPmZpbmlzaENyZWF0aW9u
KHZtLCBjYWxsVGh1bmssIGNvbnN0cnVjdFRodW5rLCBuYW1lKTsKICAgICByZXR1cm4gZXhlY3V0
YWJsZTsKIH0KQEAgLTY4LDEwICs2OCwxMSBAQCB2b2lkIE5hdGl2ZUV4ZWN1dGFibGU6OmZpbmlz
aENyZWF0aW9uKFZNJiB2bSwgUGFzc1JlZlB0cjxKSVRDb2RlPiBjYWxsVGh1bmssIFBhcwogICAg
IG1fbmFtZSA9IG5hbWU7CiB9CiAKLU5hdGl2ZUV4ZWN1dGFibGU6Ok5hdGl2ZUV4ZWN1dGFibGUo
Vk0mIHZtLCBOYXRpdmVGdW5jdGlvbiBmdW5jdGlvbiwgTmF0aXZlRnVuY3Rpb24gY29uc3RydWN0
b3IsIEludHJpbnNpYyBpbnRyaW5zaWMpCitOYXRpdmVFeGVjdXRhYmxlOjpOYXRpdmVFeGVjdXRh
YmxlKFZNJiB2bSwgTmF0aXZlRnVuY3Rpb24gZnVuY3Rpb24sIE5hdGl2ZUZ1bmN0aW9uIGNvbnN0
cnVjdG9yLCBJbnRyaW5zaWMgaW50cmluc2ljLCBjb25zdCBET01KSVQ6OlNpZ25hdHVyZSogc2ln
bmF0dXJlKQogICAgIDogRXhlY3V0YWJsZUJhc2Uodm0sIHZtLm5hdGl2ZUV4ZWN1dGFibGVTdHJ1
Y3R1cmUuZ2V0KCksIE5VTV9QQVJBTUVURVJTX0lTX0hPU1QsIGludHJpbnNpYykKICAgICAsIG1f
ZnVuY3Rpb24oZnVuY3Rpb24pCiAgICAgLCBtX2NvbnN0cnVjdG9yKGNvbnN0cnVjdG9yKQorICAg
ICwgbV9zaWduYXR1cmUoc2lnbmF0dXJlKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9OYXRpdmVFeGVjdXRhYmxlLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9OYXRpdmVFeGVjdXRhYmxlLmgKaW5kZXggNWJmMmUxMDZkYjMwYTViOGM5
NzhjODk2YTZhZDk4Y2EyYzc1NzQxNC4uZTRkM2UwNDk0NTdiNDVkMDI0NTdlOGRkYTU0NDkwYjM3
MTRhY2NlYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZl
RXhlY3V0YWJsZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05hdGl2ZUV4
ZWN1dGFibGUuaApAQCAtMjgsNiArMjgsOSBAQAogI2luY2x1ZGUgIkV4ZWN1dGFibGVCYXNlLmgi
CiAKIG5hbWVzcGFjZSBKU0MgeworbmFtZXNwYWNlIERPTUpJVCB7CitjbGFzcyBTaWduYXR1cmU7
Cit9CiAKIGNsYXNzIE5hdGl2ZUV4ZWN1dGFibGUgZmluYWwgOiBwdWJsaWMgRXhlY3V0YWJsZUJh
c2UgewogICAgIGZyaWVuZCBjbGFzcyBKSVQ7CkBAIC0zNiw3ICszOSw3IEBAIGNsYXNzIE5hdGl2
ZUV4ZWN1dGFibGUgZmluYWwgOiBwdWJsaWMgRXhlY3V0YWJsZUJhc2UgewogICAgIHR5cGVkZWYg
RXhlY3V0YWJsZUJhc2UgQmFzZTsKICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJl
RmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IFN0cnVjdHVyZUlzSW1tb3J0YWw7CiAKLSAg
ICBzdGF0aWMgTmF0aXZlRXhlY3V0YWJsZSogY3JlYXRlKFZNJiB2bSwgUGFzc1JlZlB0cjxKSVRD
b2RlPiBjYWxsVGh1bmssIE5hdGl2ZUZ1bmN0aW9uIGZ1bmN0aW9uLCBQYXNzUmVmUHRyPEpJVENv
ZGU+IGNvbnN0cnVjdFRodW5rLCBOYXRpdmVGdW5jdGlvbiBjb25zdHJ1Y3RvciwgSW50cmluc2lj
IGludHJpbnNpYywgY29uc3QgU3RyaW5nJiBuYW1lKTsKKyAgICBzdGF0aWMgTmF0aXZlRXhlY3V0
YWJsZSogY3JlYXRlKFZNJiwgUGFzc1JlZlB0cjxKSVRDb2RlPiBjYWxsVGh1bmssIE5hdGl2ZUZ1
bmN0aW9uIGZ1bmN0aW9uLCBQYXNzUmVmUHRyPEpJVENvZGU+IGNvbnN0cnVjdFRodW5rLCBOYXRp
dmVGdW5jdGlvbiBjb25zdHJ1Y3RvciwgSW50cmluc2ljLCBjb25zdCBET01KSVQ6OlNpZ25hdHVy
ZSosIGNvbnN0IFN0cmluZyYgbmFtZSk7CiAKICAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQ2Vs
bCopOwogCkBAIC02Niw2ICs2OSwxNCBAQCBjbGFzcyBOYXRpdmVFeGVjdXRhYmxlIGZpbmFsIDog
cHVibGljIEV4ZWN1dGFibGVCYXNlIHsKICAgICBERUNMQVJFX0lORk87CiAKICAgICBjb25zdCBT
dHJpbmcmIG5hbWUoKSBjb25zdCB7IHJldHVybiBtX25hbWU7IH0KKyAgICBjb25zdCBET01KSVQ6
OlNpZ25hdHVyZSogc2lnbmF0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9zaWduYXR1cmU7IH0KKwor
ICAgIGNvbnN0IERPTUpJVDo6U2lnbmF0dXJlKiBzaWduYXR1cmVGb3IoQ29kZVNwZWNpYWxpemF0
aW9uS2luZCBraW5kKSBjb25zdAorICAgIHsKKyAgICAgICAgaWYgKGlzQ2FsbChraW5kKSkKKyAg
ICAgICAgICAgIHJldHVybiBzaWduYXR1cmUoKTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7Cisg
ICAgfQogCiBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYsIFBhc3NSZWZQ
dHI8SklUQ29kZT4gY2FsbFRodW5rLCBQYXNzUmVmUHRyPEpJVENvZGU+IGNvbnN0cnVjdFRodW5r
LCBjb25zdCBTdHJpbmcmIG5hbWUpOwpAQCAtNzMsMTAgKzg0LDExIEBAIGNsYXNzIE5hdGl2ZUV4
ZWN1dGFibGUgZmluYWwgOiBwdWJsaWMgRXhlY3V0YWJsZUJhc2UgewogcHJpdmF0ZToKICAgICBm
cmllbmQgY2xhc3MgRXhlY3V0YWJsZUJhc2U7CiAKLSAgICBOYXRpdmVFeGVjdXRhYmxlKFZNJiwg
TmF0aXZlRnVuY3Rpb24gZnVuY3Rpb24sIE5hdGl2ZUZ1bmN0aW9uIGNvbnN0cnVjdG9yLCBJbnRy
aW5zaWMpOworICAgIE5hdGl2ZUV4ZWN1dGFibGUoVk0mLCBOYXRpdmVGdW5jdGlvbiBmdW5jdGlv
biwgTmF0aXZlRnVuY3Rpb24gY29uc3RydWN0b3IsIEludHJpbnNpYywgY29uc3QgRE9NSklUOjpT
aWduYXR1cmUqKTsKIAogICAgIE5hdGl2ZUZ1bmN0aW9uIG1fZnVuY3Rpb247CiAgICAgTmF0aXZl
RnVuY3Rpb24gbV9jb25zdHJ1Y3RvcjsKKyAgICBjb25zdCBET01KSVQ6OlNpZ25hdHVyZSogbV9z
aWduYXR1cmU7CiAKICAgICBTdHJpbmcgbV9uYW1lOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5U2xvdC5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvUHJvcGVydHlTbG90LmgKaW5kZXggOWRlMTUxYTU2YWEyNzU2Y2ZkMGM2MDAz
NjY4MjY2YjE5Zjk5MzJkZC4uMzg3ZTMxYjQwZTVhZWJmMmYzNWY2Y2EyNzJlMzgzYzA1ZDNmNDUy
ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlTbG90
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlTbG90LmgKQEAg
LTUxLDYgKzUxLDcgQEAgZW51bSBBdHRyaWJ1dGUgewogICAgIENsYXNzU3RydWN0dXJlICAgID0g
MSA8PCAxMiwgLy8gcHJvcGVydHkgaXMgYSBsYXp5IGNsYXNzIHN0cnVjdHVyZSAtIG9ubHkgdXNl
ZCBieSBzdGF0aWMgaGFzaHRhYmxlcwogICAgIFByb3BlcnR5Q2FsbGJhY2sgID0gMSA8PCAxMywg
Ly8gcHJvcGVydHkgdGhhdCBpcyBhIGxhenkgcHJvcGVydHkgY2FsbGJhY2sgLSBvbmx5IHVzZWQg
Ynkgc3RhdGljIGhhc2h0YWJsZXMKICAgICBET01KSVRBdHRyaWJ1dGUgICA9IDEgPDwgMTQsIC8v
IHByb3BlcnR5IGlzIGEgRE9NIEpJVCBhdHRyaWJ1dGUgLSBvbmx5IHVzZWQgYnkgc3RhdGljIGhh
c2h0YWJsZXMKKyAgICBET01KSVRGdW5jdGlvbiAgICA9IDEgPDwgMTUsIC8vIHByb3BlcnR5IGlz
IGEgRE9NIEpJVCBmdW5jdGlvbiAtIG9ubHkgdXNlZCBieSBzdGF0aWMgaGFzaHRhYmxlcwogICAg
IEJ1aWx0aW5PckZ1bmN0aW9uID0gQnVpbHRpbiB8IEZ1bmN0aW9uLCAvLyBoZWxwZXIgb25seSB1
c2VkIGJ5IHN0YXRpYyBoYXNodGFibGVzCiAgICAgQnVpbHRpbk9yRnVuY3Rpb25PckxhenlQcm9w
ZXJ0eSA9IEJ1aWx0aW4gfCBGdW5jdGlvbiB8IENlbGxQcm9wZXJ0eSB8IENsYXNzU3RydWN0dXJl
IHwgUHJvcGVydHlDYWxsYmFjaywgLy8gaGVscGVyIG9ubHkgdXNlZCBieSBzdGF0aWMgaGFzaHRh
YmxlcwogICAgIEJ1aWx0aW5PckZ1bmN0aW9uT3JBY2Nlc3Nvck9yTGF6eVByb3BlcnR5ID0gQnVp
bHRpbiB8IEZ1bmN0aW9uIHwgQWNjZXNzb3IgfCBDZWxsUHJvcGVydHkgfCBDbGFzc1N0cnVjdHVy
ZSB8IFByb3BlcnR5Q2FsbGJhY2ssIC8vIGhlbHBlciBvbmx5IHVzZWQgYnkgc3RhdGljIGhhc2h0
YWJsZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAppbmRleCA4MTIzOWM1YjkyNGI0
ZWNjOGU2ZDcwYmM4MDc3ZTgzOGFmMWUxZDYxLi5mOTI3MzQ3MzRhY2VlYzQxYTQ1ODM2MDk1NGIw
N2Q4ZmFjMTI1YmJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9W
TS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCkBAIC01MTEs
MTcgKzUxMSwxNyBAQCBzdGF0aWMgVGh1bmtHZW5lcmF0b3IgdGh1bmtHZW5lcmF0b3JGb3JJbnRy
aW5zaWMoSW50cmluc2ljIGludHJpbnNpYykKIAogTmF0aXZlRXhlY3V0YWJsZSogVk06OmdldEhv
c3RGdW5jdGlvbihOYXRpdmVGdW5jdGlvbiBmdW5jdGlvbiwgTmF0aXZlRnVuY3Rpb24gY29uc3Ry
dWN0b3IsIGNvbnN0IFN0cmluZyYgbmFtZSkKIHsKLSAgICByZXR1cm4gZ2V0SG9zdEZ1bmN0aW9u
KGZ1bmN0aW9uLCBOb0ludHJpbnNpYywgY29uc3RydWN0b3IsIG5hbWUpOworICAgIHJldHVybiBn
ZXRIb3N0RnVuY3Rpb24oZnVuY3Rpb24sIE5vSW50cmluc2ljLCBjb25zdHJ1Y3RvciwgbnVsbHB0
ciwgbmFtZSk7CiB9CiAKLU5hdGl2ZUV4ZWN1dGFibGUqIFZNOjpnZXRIb3N0RnVuY3Rpb24oTmF0
aXZlRnVuY3Rpb24gZnVuY3Rpb24sIEludHJpbnNpYyBpbnRyaW5zaWMsIE5hdGl2ZUZ1bmN0aW9u
IGNvbnN0cnVjdG9yLCBjb25zdCBTdHJpbmcmIG5hbWUpCitOYXRpdmVFeGVjdXRhYmxlKiBWTTo6
Z2V0SG9zdEZ1bmN0aW9uKE5hdGl2ZUZ1bmN0aW9uIGZ1bmN0aW9uLCBJbnRyaW5zaWMgaW50cmlu
c2ljLCBOYXRpdmVGdW5jdGlvbiBjb25zdHJ1Y3RvciwgY29uc3QgRE9NSklUOjpTaWduYXR1cmUq
IHNpZ25hdHVyZSwgY29uc3QgU3RyaW5nJiBuYW1lKQogewogI2lmIEVOQUJMRShKSVQpCiAgICAg
aWYgKGNhblVzZUpJVCgpKSB7CiAgICAgICAgIHJldHVybiBqaXRTdHVicy0+aG9zdEZ1bmN0aW9u
U3R1YigKICAgICAgICAgICAgIHRoaXMsIGZ1bmN0aW9uLCBjb25zdHJ1Y3RvciwKICAgICAgICAg
ICAgIGludHJpbnNpYyAhPSBOb0ludHJpbnNpYyA/IHRodW5rR2VuZXJhdG9yRm9ySW50cmluc2lj
KGludHJpbnNpYykgOiAwLAotICAgICAgICAgICAgaW50cmluc2ljLCBuYW1lKTsKKyAgICAgICAg
ICAgIGludHJpbnNpYywgc2lnbmF0dXJlLCBuYW1lKTsKICAgICB9CiAjZWxzZSAvLyBFTkFCTEUo
SklUKQogICAgIFVOVVNFRF9QQVJBTShpbnRyaW5zaWMpOwpAQCAtNTI5LDcgKzUyOSw3IEBAIE5h
dGl2ZUV4ZWN1dGFibGUqIFZNOjpnZXRIb3N0RnVuY3Rpb24oTmF0aXZlRnVuY3Rpb24gZnVuY3Rp
b24sIEludHJpbnNpYyBpbnRyaW5zCiAgICAgcmV0dXJuIE5hdGl2ZUV4ZWN1dGFibGU6OmNyZWF0
ZSgqdGhpcywKICAgICAgICAgYWRvcHRSZWYobmV3IE5hdGl2ZUpJVENvZGUoTWFjcm9Bc3NlbWJs
ZXJDb2RlUmVmOjpjcmVhdGVMTEludENvZGVSZWYobGxpbnRfbmF0aXZlX2NhbGxfdHJhbXBvbGlu
ZSksIEpJVENvZGU6Okhvc3RDYWxsVGh1bmspKSwgZnVuY3Rpb24sCiAgICAgICAgIGFkb3B0UmVm
KG5ldyBOYXRpdmVKSVRDb2RlKE1hY3JvQXNzZW1ibGVyQ29kZVJlZjo6Y3JlYXRlTExJbnRDb2Rl
UmVmKGxsaW50X25hdGl2ZV9jb25zdHJ1Y3RfdHJhbXBvbGluZSksIEpJVENvZGU6Okhvc3RDYWxs
VGh1bmspKSwgY29uc3RydWN0b3IsCi0gICAgICAgIE5vSW50cmluc2ljLCBuYW1lKTsKKyAgICAg
ICAgTm9JbnRyaW5zaWMsIHNpZ25hdHVyZSwgbmFtZSk7CiB9CiAKIFZNOjpDbGllbnREYXRhOjp+
Q2xpZW50RGF0YSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9W
TS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAppbmRleCA0ZmQ3ZWM0MGYw
M2VlZGViMjliZDQ5NjdkOWNkYzQzMDI0Y2ZhNDEwLi4xNWEwOGMyYTMzYmU5NzJiNGE5YTMyZGZj
MzUwZDZlMzhjYzg0MmVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9WTS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKQEAgLTQyOSw3
ICs0MjksNyBAQCBjbGFzcyBWTSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxWTT4gewog
ICAgIHN0ZDo6dW5pcXVlX3B0cjxGVEw6OlRodW5rcz4gZnRsVGh1bmtzOwogI2VuZGlmCiAgICAg
TmF0aXZlRXhlY3V0YWJsZSogZ2V0SG9zdEZ1bmN0aW9uKE5hdGl2ZUZ1bmN0aW9uLCBOYXRpdmVG
dW5jdGlvbiBjb25zdHJ1Y3RvciwgY29uc3QgU3RyaW5nJiBuYW1lKTsKLSAgICBOYXRpdmVFeGVj
dXRhYmxlKiBnZXRIb3N0RnVuY3Rpb24oTmF0aXZlRnVuY3Rpb24sIEludHJpbnNpYyBpbnRyaW5z
aWMsIE5hdGl2ZUZ1bmN0aW9uIGNvbnN0cnVjdG9yLCBjb25zdCBTdHJpbmcmIG5hbWUpOworICAg
IE5hdGl2ZUV4ZWN1dGFibGUqIGdldEhvc3RGdW5jdGlvbihOYXRpdmVGdW5jdGlvbiwgSW50cmlu
c2ljLCBOYXRpdmVGdW5jdGlvbiBjb25zdHJ1Y3RvciwgY29uc3QgRE9NSklUOjpTaWduYXR1cmUq
LCBjb25zdCBTdHJpbmcmIG5hbWUpOwogCiAgICAgc3RhdGljIHB0cmRpZmZfdCBleGNlcHRpb25P
ZmZzZXQoKQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0
IGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggNWEwOTc0ZDZiZTQ4ZjA3NDVh
ZGE2MzlmZGFiYTM0ZDRiM2RiNjVmNC4uYjdlZjRiYzdlZTUxMDA3N2Y2NDEyZTIwN2Q3OTI5ZjRi
ZDg4MzAzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIv
U291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTE1NDYsNyArMTU0Niw2IEBAIHNldChX
ZWJDb3JlX1NPVVJDRVMKIAogICAgIGRvbS9kZWZhdWx0L1BsYXRmb3JtTWVzc2FnZVBvcnRDaGFu
bmVsLmNwcAogCi0gICAgZG9taml0L0RPTUpJVEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuY3BwCiAg
ICAgZG9taml0L0RPTUpJVEhlbHBlcnMuY3BwCiAgICAgZG9taml0L0pTRG9jdW1lbnRET01KSVQu
Y3BwCiAgICAgZG9taml0L0pTTm9kZURPTUpJVC5jcHAKQEAgLTM1MTksNiArMzUxOCwxNSBAQCBN
QUtFX0hBU0hfVE9PTFMoJHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0vQ29sb3JEYXRhKQogbGlzdChB
UFBFTkQgV2ViQ29yZV9ERVJJVkVEX1NPVVJDRVMgJHtERVJJVkVEX1NPVVJDRVNfV0VCQ09SRV9E
SVJ9L0NvbG9yRGF0YS5jcHApCiAKIAorIyBHZW5lcmF0ZSBET01KSVRBYnN0cmFjdEhlYXBSZXBv
c2l0b3J5LmgKK2FkZF9jdXN0b21fY29tbWFuZCgKKyAgICBPVVRQVVQgJHtERVJJVkVEX1NPVVJD
RVNfV0VCQ09SRV9ESVJ9L0RPTUpJVEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaAorICAgIE1BSU5f
REVQRU5ERU5DWSBkb21qaXQvRE9NSklUQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS55YW1sCisgICAg
REVQRU5EUyAke1dFQkNPUkVfRElSfS9kb21qaXQvZ2VuZXJhdGUtYWJzdHJhY3QtaGVhcC5yYgor
ICAgIENPTU1BTkQgJHtSVUJZX0VYRUNVVEFCTEV9ICR7V0VCQ09SRV9ESVJ9L2RvbWppdC9nZW5l
cmF0ZS1hYnN0cmFjdC1oZWFwLnJiICR7V0VCQ09SRV9ESVJ9L2RvbWppdC9ET01KSVRBYnN0cmFj
dEhlYXBSZXBvc2l0b3J5LnlhbWwgJHtERVJJVkVEX1NPVVJDRVNfV0VCQ09SRV9ESVJ9L0RPTUpJ
VEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaAorICAgIFZFUkJBVElNKQorbGlzdChBUFBFTkQgV2Vi
Q29yZV9ERVJJVkVEX1NPVVJDRVMgJHtERVJJVkVEX1NPVVJDRVNfV0VCQ09SRV9ESVJ9L0RPTUpJ
VEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaCkKKwogIyBHZW5lcmF0ZSBYTUxWaWV3ZXJDU1MuaAog
YWRkX2N1c3RvbV9jb21tYW5kKAogICAgIE9VVFBVVCAke0RFUklWRURfU09VUkNFU19XRUJDT1JF
X0RJUn0vWE1MVmlld2VyQ1NTLmggJHtERVJJVkVEX1NPVVJDRVNfV0VCQ09SRV9ESVJ9L1hNTFZp
ZXdlci5taW4uY3NzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5t
YWtlIGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQppbmRleCAwY2JjMWRmODE1
ODZmMTQ5OWVmNDFhMmNiYjYyMTg2MTQ1NTUwYjI3Li5hZGE1YWNiNDlmY2EyYzQwZjMwZDgwNjEy
YTE2ZTM5YTJkMTY2OWFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNl
cy5tYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKQEAgLTc0Niw2
ICs3NDYsNyBAQCBKU19CSU5ESU5HX0lETFMgPSBcCiAKIFBZVEhPTiA9IHB5dGhvbgogUEVSTCA9
IHBlcmwKK1JVQlkgPSBydWJ5CiAKIGlmZXEgKCQoT1MpLFdpbmRvd3NfTlQpCiAgICAgREVMRVRF
ID0gY21kIC8vQyBkZWwKQEAgLTg1Miw2ICs4NTMsNyBAQCBhbGwgOiBcCiAgICAgQ1NTVmFsdWVL
ZXl3b3Jkcy5jcHAgXAogICAgIENTU1ZhbHVlS2V5d29yZHMuaCBcCiAgICAgQ29sb3JEYXRhLmNw
cCBcCisgICAgRE9NSklUQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5oIFwKICAgICBFdmVudEludGVy
ZmFjZXMuaCBcCiAgICAgRXZlbnRUYXJnZXRJbnRlcmZhY2VzLmggXAogICAgIEV4Y2VwdGlvbkNv
ZGVEZXNjcmlwdGlvbi5jcHAgXApAQCAtOTQxLDYgKzk0MywxNSBAQCBTZWxlY3RvclBzZXVkb0Vs
ZW1lbnRUeXBlTWFwLmNwcCA6ICQoV2ViQ29yZSkvY3NzL21ha2VTZWxlY3RvclBzZXVkb0VsZW1l
bnRzTWFwLgogCiAjIC0tLS0tLS0tCiAKKyMgRE9NSklUIEFic3RyYWN0IEhlYXAKKworYWxsIDog
RE9NSklUQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5oCisKK0RPTUpJVEFic3RyYWN0SGVhcFJlcG9z
aXRvcnkuaCA6ICQoV2ViQ29yZSkvZG9taml0L2dlbmVyYXRlLWFic3RyYWN0LWhlYXAucmIgJChX
ZWJDb3JlKS9kb21qaXQvRE9NSklUQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS55YW1sCisJJChSVUJZ
KSAiJChXZWJDb3JlKS9kb21qaXQvZ2VuZXJhdGUtYWJzdHJhY3QtaGVhcC5yYiIgJChXZWJDb3Jl
KS9kb21qaXQvRE9NSklUQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS55YW1sIC4vRE9NSklUQWJzdHJh
Y3RIZWFwUmVwb3NpdG9yeS5oCisKKyMgLS0tLS0tLS0KKwogIyBYTUxWaWV3ZXIgQ1NTCiAKIGFs
bCA6IFhNTFZpZXdlckNTUy5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5n
SGVhZGVycy9ieXRlY29kZS9TcGVjdWxhdGVkVHlwZS5oIGIvU291cmNlL1dlYkNvcmUvRm9yd2Fy
ZGluZ0hlYWRlcnMvYnl0ZWNvZGUvU3BlY3VsYXRlZFR5cGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wOTQ2NmY0
ZjAwYjgwN2RmZWRhMGZjODIwODU0NmI3MTg0NGYwOTllCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvYnl0ZWNvZGUvU3BlY3VsYXRlZFR5cGUuaApA
QCAtMCwwICsxLDI5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgor
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2lmbmRlZiBXZWJDb3JlX0ZXRF9TcGVjdWxhdGVkVHlwZV9oCisjZGVmaW5lIFdlYkNv
cmVfRldEX1NwZWN1bGF0ZWRUeXBlX2gKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TcGVjdWxh
dGVkVHlwZS5oPgorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5n
SGVhZGVycy9kb21qaXQvRE9NSklUU2lnbmF0dXJlLmggYi9Tb3VyY2UvV2ViQ29yZS9Gb3J3YXJk
aW5nSGVhZGVycy9kb21qaXQvRE9NSklUU2lnbmF0dXJlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzIwMDI3ZjZl
MDhlMzgzMGUzNTFiMWM5Y2QzMmYyMDMxMjlkMmI1ZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL2RvbWppdC9ET01KSVRTaWduYXR1cmUuaApAQCAt
MCwwICsxLDI5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2lmbmRlZiBXZWJDb3JlX0ZXRF9ET01KSVRTaWduYXR1cmVfaAorI2RlZmluZSBXZWJDb3Jl
X0ZXRF9ET01KSVRTaWduYXR1cmVfaAorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0RPTUpJVFNp
Z25hdHVyZS5oPgorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKaW5kZXggNTFhZTE4MWEzNzE1MjAxMzExNmI5YjgwMWU4NTcxMjI0
ZWNmYWVkOC4uNmRkNTBkYmExNGZjNTEyNjA0NTc1ZDZlMjEyODk4ZWE5ZjI0ZDBiOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisr
KyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAt
NjIxMywxMiArNjIxMywxMyBAQAogCQlFMzE1MEVBNzFEQTcyMTkzMDAxOTQwMTIgLyogRE9NSklU
SGVscGVycy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RTMxNTBFQTUxREE3MjE4RDAwMTk0MDEyIC8qIERPTUpJVEhlbHBlcnMuaCAqLzsgfTsKIAkJRTMx
ODAzOUQxREM0MDA5OTAwOTkzMkMyIC8qIEpTRHluYW1pY0Rvd25jYXN0LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFM0E1ODcyRTFEQzNGNTI2MDBGNjA3
QTYgLyogSlNEeW5hbWljRG93bmNhc3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQlFMzU2NUI3QjFEQzJENkM5MDAyMTdEQkQgLyogSlNFdmVudEN1
c3RvbS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM0
RUU0OUYxREMyRDU3NTAwRUFBOUQzIC8qIEpTRXZlbnRDdXN0b20uaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQlFMzVDQTE0RDFEQkMzQTNGMDBGODM1
MTYgLyogRE9NSklUQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzVDQTE0QjFEQkMzQTNDMDBGODM1MTYgLyog
RE9NSklUQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5jcHAgKi87IH07Ci0JCUUzNUNBMTRFMURCQzNB
NDIwMEY4MzUxNiAvKiBET01KSVRBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzVDQTE0QzFEQkMzQTNDMDBGODM1
MTYgLyogRE9NSklUQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5oICovOyB9OworCQlFMzU4MDJCNjFE
Qzg0MzVEMDBBOTc3M0MgLyogRE9NSklUSURMVHlwZUZpbHRlci5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM1ODAyQjUxREM4NDM1ODAwQTk3NzNDIC8q
IERPTUpJVElETFR5cGVGaWx0ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQlFMzc3RkU0RDFEQURFMTY1MDBDREQwMjUgLyogTm9kZUNvbnN0YW50
cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTNEMDQ5
OTMxREFEQzA0NTAwNzE4RjNDIC8qIE5vZGVDb25zdGFudHMuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFMzg4Mzg5ODFCQUQxNDVGMDBENjJFRTMg
LyogU2NyaXB0TW9kdWxlTG9hZGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEUzODgzODk0MUJBRDE0NUYwMEQ2MkVFMyAvKiBTY3JpcHRNb2R1bGVM
b2FkZXIuY3BwICovOyB9OwogCQlFMzg4Mzg5OTFCQUQxNDVGMDBENjJFRTMgLyogU2NyaXB0TW9k
dWxlTG9hZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBFMzg4Mzg5NTFCQUQxNDVGMDBENjJFRTMgLyogU2NyaXB0TW9kdWxlTG9hZGVyLmggKi87IH07
CiAJCUUzOThGQzI0MURDMzJBMjAwMDNDNDY4NCAvKiBET01KSVRIZWxwZXJzLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzOThGQzIzMURDMzJBMUIw
MDNDNDY4NCAvKiBET01KSVRIZWxwZXJzLmNwcCAqLzsgfTsKKwkJRTNBNzc2NjcxREM4NUQyODAw
QjY5MEQ4IC8qIERPTUpJVElETENvbnZlcnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEUzQTc3NjY1MURDODVEMjIwMEI2OTBEOCAvKiBET01KSVRJRExD
b252ZXJ0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
KwkJRTNBNzc2NjgxREM4NUQyODAwQjY5MEQ4IC8qIERPTUpJVElETFR5cGUuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzQTc3NjY2MURDODVEMjIwMEI2
OTBEOCAvKiBET01KSVRJRExUeXBlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJRTNCMkYwRUIxRDdGNEM5RDAwQjBDOUQxIC8qIExvYWRhYmxlQ2xh
c3NpY1NjcmlwdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBFM0IyRjBFMzFEN0YzNUVDMDBCMEM5RDEgLyogTG9hZGFibGVDbGFzc2ljU2NyaXB0LmNw
cCAqLzsgfTsKIAkJRTNCMkYwRUMxRDdGNENBMTAwQjBDOUQxIC8qIExvYWRhYmxlU2NyaXB0LmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzQjJGMEU5
MUQ3RjNEM0MwMEIwQzlEMSAvKiBMb2FkYWJsZVNjcmlwdC5jcHAgKi87IH07CiAJCUUzQjJGMEVE
MUQ3RjRDQTMwMEIwQzlEMSAvKiBMb2FkYWJsZVNjcmlwdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTNCMkYwRTcxRDdGMzVFQzAwQjBDOUQxIC8qIExv
YWRhYmxlU2NyaXB0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKQEAgLTE0MDYxLDEzICsxNDA2MiwxNSBAQAogCQlFMUZGOEY2QTE4MERCNUJFMDAxMzI2
NzQgLyogQ3J5cHRvQWxnb3JpdGhtUmVnaXN0cnkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gQ3J5cHRvQWxnb3JpdGhtUmVnaXN0cnkuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlFMUZGOEY2QjE4MERCNUJFMDAxMzI2NzQgLyogQ3J5cHRvQWxnb3Jp
dGhtUmVnaXN0cnkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ3J5cHRvQWxn
b3JpdGhtUmVnaXN0cnkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTMxNTBFQTUx
REE3MjE4RDAwMTk0MDEyIC8qIERPTUpJVEhlbHBlcnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gRE9NSklUSGVscGVycy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQlFMzM0ODI1RTFEQzkzQUEwMDA5Qzk1NDQgLyogRE9NSklUQWJzdHJhY3RIZWFwUmVwb3NpdG9y
eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBET01KSVRBYnN0cmFjdEhlYXBS
ZXBvc2l0b3J5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzNEVFNDlGMURDMkQ1
NzUwMEVBQTlEMyAvKiBKU0V2ZW50Q3VzdG9tLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEpTRXZlbnRDdXN0b20uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRTM1
Q0ExNEIxREJDM0EzQzAwRjgzNTE2IC8qIERPTUpJVEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRE9NSklUQWJzdHJhY3RIZWFw
UmVwb3NpdG9yeS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUUzNUNBMTRDMURC
QzNBM0MwMEY4MzUxNiAvKiBET01KSVRBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERPTUpJVEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTM1ODAyQjUxREM4NDM1ODAwQTk3NzNDIC8q
IERPTUpJVElETFR5cGVGaWx0ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
RE9NSklUSURMVHlwZUZpbHRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzg4
Mzg5NDFCQUQxNDVGMDBENjJFRTMgLyogU2NyaXB0TW9kdWxlTG9hZGVyLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNjcmlwdE1vZHVsZUxvYWRlci5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzODgzODk1MUJBRDE0NUYwMEQ2MkVFMyAvKiBTY3Jp
cHRNb2R1bGVMb2FkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2NyaXB0
TW9kdWxlTG9hZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzOThGQzIzMURD
MzJBMUIwMDNDNDY4NCAvKiBET01KSVRIZWxwZXJzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IERPTUpJVEhlbHBlcnMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlFM0E1ODcyRTFEQzNGNTI2MDBGNjA3QTYgLyogSlNEeW5hbWljRG93bmNhc3QuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNEeW5hbWljRG93bmNhc3QuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTNBNzc2NjUxREM4NUQyMjAwQjY5MEQ4IC8qIERP
TUpJVElETENvbnZlcnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRE9NSklU
SURMQ29udmVydC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFM0E3NzY2NjFEQzg1
RDIyMDBCNjkwRDggLyogRE9NSklUSURMVHlwZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBET01KSVRJRExUeXBlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUz
QUZBOTY0MURBNkU5MDgwMDI4NjFCRCAvKiBKU05vZGVET01KSVQuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNOb2RlRE9NSklULmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJRTNCMkYwRTMxRDdGMzVFQzAwQjBDOUQxIC8qIExvYWRhYmxlQ2xhc3Np
Y1NjcmlwdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBMb2FkYWJs
ZUNsYXNzaWNTY3JpcHQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFM0IyRjBF
NDFEN0YzNUVDMDBCMEM5RDEgLyogTG9hZGFibGVDbGFzc2ljU2NyaXB0LmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IExvYWRhYmxlQ2xhc3NpY1NjcmlwdC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtMTcyNTgsNiArMTcyNjEsNyBAQAogCQkJCTY1NjU4MTQ3MDlE
MTMwNDMwMDBFNjFENyAvKiBDU1NWYWx1ZUtleXdvcmRzLmdwZXJmICovLAogCQkJCTY1NjU4MTQ4
MDlEMTMwNDMwMDBFNjFENyAvKiBDU1NWYWx1ZUtleXdvcmRzLmggKi8sCiAJCQkJOUIzQTg4NzEx
NDU2MzJGOTAwM0FFOEY1IC8qIERPTURPTVNldHRhYmxlVG9rZW5MaXN0LmggKi8sCisJCQkJRTMz
NDgyNUUxREM5M0FBMDAwOUM5NTQ0IC8qIERPTUpJVEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaCAq
LywKIAkJCQlFMUM2Q0ZDMjE3NDZEMjkzMDA3Qjg3QTEgLyogRE9NV2luZG93Q29uc3RydWN0b3Jz
LmlkbCAqLywKIAkJCQk5NzBCNzJBNTE0NTAwOEVCMDBGMDBBMzcgLyogRXZlbnRIZWFkZXJzLmgg
Ki8sCiAJCQkJOTcwQjcyODkxNDRGRkFDNjAwRjAwQTM3IC8qIEV2ZW50SW50ZXJmYWNlcy5oICov
LApAQCAtMjI4NzAsMTEgKzIyODc0LDEyIEBACiAJCUUzQUZBOTYzMURBNkU4QUYwMDI4NjFCRCAv
KiBkb21qaXQgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAotCQkJ
CUUzNUNBMTRCMURCQzNBM0MwMEY4MzUxNiAvKiBET01KSVRBYnN0cmFjdEhlYXBSZXBvc2l0b3J5
LmNwcCAqLywKLQkJCQlFMzVDQTE0QzFEQkMzQTNDMDBGODM1MTYgLyogRE9NSklUQWJzdHJhY3RI
ZWFwUmVwb3NpdG9yeS5oICovLAogCQkJCUUzQzk5QTA4MURDM0Q0MTcwMDc5NEFEMyAvKiBET01K
SVRDaGVja0RPTS5oICovLAogCQkJCUUzOThGQzIzMURDMzJBMUIwMDNDNDY4NCAvKiBET01KSVRI
ZWxwZXJzLmNwcCAqLywKIAkJCQlFMzE1MEVBNTFEQTcyMThEMDAxOTQwMTIgLyogRE9NSklUSGVs
cGVycy5oICovLAorCQkJCUUzQTc3NjY1MURDODVEMjIwMEI2OTBEOCAvKiBET01KSVRJRExDb252
ZXJ0LmggKi8sCisJCQkJRTNBNzc2NjYxREM4NUQyMjAwQjY5MEQ4IC8qIERPTUpJVElETFR5cGUu
aCAqLywKKwkJCQlFMzU4MDJCNTFEQzg0MzU4MDBBOTc3M0MgLyogRE9NSklUSURMVHlwZUZpbHRl
ci5oICovLAogCQkJCUUzQjdDMDYyMURDMzQxNUEwMDFGQjBCOCAvKiBKU0RvY3VtZW50RE9NSklU
LmNwcCAqLywKIAkJCQlFM0FGQTk2NDFEQTZFOTA4MDAyODYxQkQgLyogSlNOb2RlRE9NSklULmNw
cCAqLywKIAkJCSk7CkBAIC0yNTc0MSw2ICsyNTc0Niw3IEBACiAJCQkJNDYwQ0JGMzYxRDRCQ0Qw
RTAwOTJFODhFIC8qIEpTRE9NV2luZG93UHJvcGVydGllcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QkNCRkI1M0QwRENEMjlDRjAwMTlCM0U1IC8qIEpTRE9NV2luZG93U2hlbGwuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTY1RTBFOTQ0MTEzM0M4OUYwMEI0Q0IxMCAvKiBKU0RPTVdyYXBwZXIuaCBpbiBI
ZWFkZXJzICovLAorCQkJCUUzQTc3NjY3MURDODVEMjgwMEI2OTBEOCAvKiBET01KSVRJRExDb252
ZXJ0LmggaW4gSGVhZGVycyAqLywKIAkJCQlGRDc4NjhCQTEzNkI5OTkyMDBENDAzREYgLyogSlNE
eW5hbWljc0NvbXByZXNzb3JOb2RlLmggaW4gSGVhZGVycyAqLywKIAkJCQk2NURGMzFGQTA5RDFD
QzYwMDAwQkUzMjUgLyogSlNFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlBREVDNzhGODE4
RUU1MzA4MDAxMzE1QzIgLyogSlNFbGVtZW50Q3VzdG9tLmggaW4gSGVhZGVycyAqLywKQEAgLTI3
MzA0LDYgKzI3MzEwLDcgQEAKIAkJCQkwODUyNUU2MzEyNzhDMDAxMDBBODQ3NzggLyogU1ZHQW5p
bWF0ZWRTdGF0aWNQcm9wZXJ0eVRlYXJPZmYuaCBpbiBIZWFkZXJzICovLAogCQkJCTA4NERCNTlC
MTI4MDA4Q0MwMDJBNkQ2NCAvKiBTVkdBbmltYXRlZFN0cmluZy5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMDgyNTA5MzkxMjhCRDREODAwRTJFRDhFIC8qIFNWR0FuaW1hdGVkVHJhbnNmb3JtTGlzdC5o
IGluIEhlYWRlcnMgKi8sCisJCQkJRTNBNzc2NjgxREM4NUQyODAwQjY5MEQ4IC8qIERPTUpJVElE
TFR5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTA4NUExNTkzMTI4OUE4REQwMDI3MTBFMyAvKiBT
VkdBbmltYXRlZFRyYW5zZm9ybUxpc3RQcm9wZXJ0eVRlYXJPZmYuaCBpbiBIZWFkZXJzICovLAog
CQkJCTQzOUQzMzQzMTNBNjkxMUMwMEMyMEY0RiAvKiBTVkdBbmltYXRlZFR5cGUuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTQzOUQzMzQ0MTNBNjkxMUMwMEMyMEY0RiAvKiBTVkdBbmltYXRlZFR5cGVB
bmltYXRvci5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNzg0Myw2ICsyNzg1MCw3IEBACiAJCQkJOTdB
QUJEMjMxNEZBMDlENTAwNzQ1N0FFIC8qIFdlYlNvY2tldEV4dGVuc2lvbkRpc3BhdGNoZXIuaCBp
biBIZWFkZXJzICovLAogCQkJCTRBNUEyQURDMTYxRTdFMDAwMDU4ODlERCAvKiBXZWJTb2NrZXRF
eHRlbnNpb25QYXJzZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTk3QUFCRDI0MTRGQTA5RDUwMDc0
NTdBRSAvKiBXZWJTb2NrZXRFeHRlbnNpb25Qcm9jZXNzb3IuaCBpbiBIZWFkZXJzICovLAorCQkJ
CUUzNTgwMkI2MURDODQzNUQwMEE5NzczQyAvKiBET01KSVRJRExUeXBlRmlsdGVyLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk5N0FBQkQyNTE0RkEwOUQ1MDA3NDU3QUUgLyogV2ViU29ja2V0RnJhbWUu
aCBpbiBIZWFkZXJzICovLAogCQkJCTk3QUFCRDI3MTRGQTA5RDUwMDc0NTdBRSAvKiBXZWJTb2Nr
ZXRIYW5kc2hha2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTMxREVBNDU2MUIzOUY0RDkwMEY3NzE3
OCAvKiBXZWJTeXN0ZW1CYWNrZHJvcExheWVyLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmggYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5oCmluZGV4IGMxODFmOWExNmY1
NTMwYmQ5NTNkYmY1ZjFjMTVmMTNhNjI0ZmExMmMuLjVkYzFlZTQwYzk4NTQwZThjNDcwNWI3MDk1
NzU5ZmZjZmMyNWRhMGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
RE9NR2xvYmFsT2JqZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01H
bG9iYWxPYmplY3QuaApAQCAtODEsNyArODEsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAg
cHVibGljOgogICAgICAgICB+SlNET01HbG9iYWxPYmplY3QoKTsKIAotICAgICAgICBzdGF0aWMg
Y29uc3QgSlNDOjpDbGFzc0luZm8qIGluZm8oKSB7IHJldHVybiAmc19pbmZvOyB9CisgICAgICAg
IHN0YXRpYyBjb25zdGV4cHIgY29uc3QgSlNDOjpDbGFzc0luZm8qIGluZm8oKSB7IHJldHVybiAm
c19pbmZvOyB9CiAKICAgICAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1
cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgICAgIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBt
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KaW5k
ZXggMzU0OTBkMDJjMmRhMGJlMjUwZDZmZWVhNTlmZmJlNzBiNTM1MGU1OS4uNjZlN2RlMWZkZjQ0
YjFiNjY4NTBkOGU3ZDQ3N2I2YTY2MTI1NGRhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KQEAgLTE0MzUsNyArMTQzNSw3IEBA
IHN1YiBHZW5lcmF0ZUhlYWRlcgogICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAicHJvdGVj
dGVkOlxuIik7CiAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgc3RhdGljIGNvbnN0
IEpTQzo6Q2xhc3NJbmZvIHNfaW5mbztcbiIpOwogICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50
LCAicHVibGljOlxuIik7Ci0gICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgc3RhdGlj
IGNvbnN0IEpTQzo6Q2xhc3NJbmZvKiBpbmZvKCkgeyByZXR1cm4gJnNfaW5mbzsgfVxuXG4iKTsK
KyAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICBzdGF0aWMgY29uc3RleHByIGNvbnN0
IEpTQzo6Q2xhc3NJbmZvKiBpbmZvKCkgeyByZXR1cm4gJnNfaW5mbzsgfVxuXG4iKTsKICAgICB9
IGVsc2UgewogICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiXG4iKTsKICAgICAgICAgcHVz
aChAaGVhZGVyQ29udGVudCwgIiAgICBERUNMQVJFX0lORk87XG5cbiIpOwpAQCAtMTg4OSw3ICsx
ODg5LDExIEBAIHN1YiBHZW5lcmF0ZVByb3BlcnRpZXNIYXNoVGFibGUKICAgICAgICAgIyBGSVhN
RTogUmVtb3ZlIHRoaXMgb25jZSB3ZSBjYW4gZ2V0IHJpZCBvZiB0aGUgcXVpcmsgaW50cm9kdWNl
ZCBpbiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYzOTY3LgogICAg
ICAgICAkZnVuY3Rpb25MZW5ndGggPSAzIGlmICRpbnRlcmZhY2VOYW1lIGVxICJFdmVudCIgYW5k
ICRmdW5jdGlvbi0+bmFtZSBlcSAiaW5pdEV2ZW50IjsKIAotICAgICAgICBwdXNoKEAkaGFzaFZh
bHVlMiwgJGZ1bmN0aW9uTGVuZ3RoKTsKKyAgICAgICAgaWYgKCRmdW5jdGlvbi0+ZXh0ZW5kZWRB
dHRyaWJ1dGVzLT57IkRPTUpJVCJ9KSB7CisgICAgICAgICAgICBwdXNoKEAkaGFzaFZhbHVlMiwg
IiZET01KSVRTaWduYXR1cmVGb3IiIC4gJGludGVyZmFjZS0+dHlwZS0+bmFtZSAuICRjb2RlR2Vu
ZXJhdG9yLT5XS191Y2ZpcnN0KCRmdW5jdGlvbi0+bmFtZSkpOworICAgICAgICB9IGVsc2Ugewor
ICAgICAgICAgICAgcHVzaChAJGhhc2hWYWx1ZTIsICRmdW5jdGlvbkxlbmd0aCk7CisgICAgICAg
IH0KIAogICAgICAgICBwdXNoKEAkaGFzaFNwZWNpYWxzLCBDb21wdXRlRnVuY3Rpb25TcGVjaWFs
KCRpbnRlcmZhY2UsICRmdW5jdGlvbikpOwogCkBAIC0yNTA1LDM5ICsyNTA5LDI4IEBAIHN1YiBh
ZGRVbnNjb3BhYmxlUHJvcGVydGllcwogICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHB1dERp
cmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT51bnNjb3BhYmxlc1N5
bWJvbCwgJnVuc2NvcGFibGVzLCBEb250RW51bSB8IFJlYWRPbmx5KTtcbiIpOwogfQogCi1zdWIg
R2V0UmVzdWx0VHlwZUZpbHRlcgorc3ViIEdldFVuc2FmZUFyZ3VtZW50VHlwZQogewotICAgIG15
ICgkdHlwZSkgPSBAXzsKKyAgICBteSAoJGludGVyZmFjZSwgJHR5cGUpID0gQF87CiAKLSAgICBt
eSAlVHlwZUZpbHRlcnMgPSAoCi0gICAgICAgICJhbnkiID0+ICJTcGVjSGVhcFRvcCIsCi0gICAg
ICAgICJib29sZWFuIiA9PiAiU3BlY0Jvb2xlYW4iLAotICAgICAgICAiYnl0ZSIgPT4gIlNwZWNJ
bnQzMk9ubHkiLAotICAgICAgICAib2N0ZXQiID0+ICJTcGVjSW50MzJPbmx5IiwKLSAgICAgICAg
InNob3J0IiA9PiAiU3BlY0ludDMyT25seSIsCi0gICAgICAgICJ1bnNpZ25lZCBzaG9ydCIgPT4g
IlNwZWNJbnQzMk9ubHkiLAotICAgICAgICAibG9uZyIgPT4gIlNwZWNJbnQzMk9ubHkiLAotICAg
ICAgICAidW5zaWduZWQgbG9uZyIgPT4gIlNwZWNCeXRlY29kZU51bWJlciIsCi0gICAgICAgICJs
b25nIGxvbmciID0+ICJTcGVjQnl0ZWNvZGVOdW1iZXIiLAotICAgICAgICAidW5zaWduZWQgbG9u
ZyBsb25nIiA9PiAiU3BlY0J5dGVjb2RlTnVtYmVyIiwKLSAgICAgICAgImZsb2F0IiA9PiAiU3Bl
Y0J5dGVjb2RlTnVtYmVyIiwKLSAgICAgICAgInVucmVzdHJpY3RlZCBmbG9hdCIgPT4gIlNwZWNC
eXRlY29kZU51bWJlciIsCi0gICAgICAgICJkb3VibGUiID0+ICJTcGVjQnl0ZWNvZGVOdW1iZXIi
LAotICAgICAgICAidW5yZXN0cmljdGVkIGRvdWJsZSIgPT4gIlNwZWNCeXRlY29kZU51bWJlciIs
Ci0gICAgICAgICJET01TdHJpbmciID0+ICJTcGVjU3RyaW5nIiwKLSAgICAgICAgIkJ5dGVTdHJp
bmciID0+ICJTcGVjU3RyaW5nIiwKLSAgICAgICAgIlVTVlN0cmluZyIgPT4gIlNwZWNTdHJpbmci
LAotICAgICk7CisgICAgbXkgJElETFR5cGUgPSBHZXRJRExUeXBlKCRpbnRlcmZhY2UsICR0eXBl
KTsKKyAgICByZXR1cm4gIkRPTUpJVDo6SURMSlNBcmd1bWVudFR5cGU8JHtJRExUeXBlfT4iOwor
fQogCi0gICAgaWYgKGV4aXN0cyAkVHlwZUZpbHRlcnN7JHR5cGUtPm5hbWV9KSB7Ci0gICAgICAg
IG15ICRyZXN1bHRUeXBlID0gIkpTQzo6JFR5cGVGaWx0ZXJzeyR0eXBlLT5uYW1lfSI7Ci0gICAg
ICAgIGlmICgkdHlwZS0+aXNOdWxsYWJsZSkgewotICAgICAgICAgICAgZGllICJcImFueVwiIHR5
cGUgbXVzdCBub3QgYmVjb21lIG51bGxhYmxlLiIgaWYgJHR5cGUtPm5hbWUgZXEgImFueSI7Ci0g
ICAgICAgICAgICAkcmVzdWx0VHlwZSA9ICIoJHJlc3VsdFR5cGUgfCBKU0M6OlNwZWNPdGhlciki
OwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiAkcmVzdWx0VHlwZTsKLSAgICB9Ci0gICAgcmV0
dXJuICJTcGVjSGVhcFRvcCI7CitzdWIgR2V0QXJndW1lbnRUeXBlRmlsdGVyCit7CisgICAgbXkg
KCRpbnRlcmZhY2UsICR0eXBlKSA9IEBfOworCisgICAgbXkgJElETFR5cGUgPSBHZXRJRExUeXBl
KCRpbnRlcmZhY2UsICR0eXBlKTsKKyAgICByZXR1cm4gIkRPTUpJVDo6SURMQXJndW1lbnRUeXBl
RmlsdGVyPCR7SURMVHlwZX0+Ojp2YWx1ZSI7Cit9CisKK3N1YiBHZXRSZXN1bHRUeXBlRmlsdGVy
Cit7CisgICAgbXkgKCRpbnRlcmZhY2UsICR0eXBlKSA9IEBfOworCisgICAgbXkgJElETFR5cGUg
PSBHZXRJRExUeXBlKCRpbnRlcmZhY2UsICR0eXBlKTsKKyAgICByZXR1cm4gIkRPTUpJVDo6SURM
UmVzdWx0VHlwZUZpbHRlcjwke0lETFR5cGV9Pjo6dmFsdWUiOwogfQogCiBzdWIgR2VuZXJhdGVJ
bXBsZW1lbnRhdGlvbgpAQCAtMjYwOCw2ICsyNjAxLDE3IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVu
dGF0aW9uCiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiNpZiAke2NvbmRpdGlvbmFs
U3RyaW5nfVxuIikgaWYgJGNvbmRpdGlvbmFsU3RyaW5nOwogICAgICAgICAgICAgbXkgJGZ1bmN0
aW9uTmFtZSA9IEdldEZ1bmN0aW9uTmFtZSgkaW50ZXJmYWNlLCAkY2xhc3NOYW1lLCAkZnVuY3Rp
b24pOwogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJKU0M6OkVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgJHtmdW5jdGlvbk5hbWV9KEpTQzo6RXhlY1N0YXRlKik7XG4iKTsKKyAg
ICAgICAgICAgIGlmICgkY29kZUdlbmVyYXRvci0+RXh0ZW5kZWRBdHRyaWJ1dGVDb250YWlucygk
ZnVuY3Rpb24tPmV4dGVuZGVkQXR0cmlidXRlcy0+e0RPTUpJVH0sICJTaWduYXR1cmUiKSkgewor
ICAgICAgICAgICAgICAgICRpbXBsSW5jbHVkZXN7IkRPTUpJVElETFR5cGUuaCJ9ID0gMTsKKyAg
ICAgICAgICAgICAgICBteSAkdW5zYWZlRnVuY3Rpb25OYW1lID0gInVuc2FmZSIgLiAkY29kZUdl
bmVyYXRvci0+V0tfdWNmaXJzdCgkZnVuY3Rpb25OYW1lKTsKKyAgICAgICAgICAgICAgICBteSAk
ZnVuY3Rpb25TaWduYXR1cmUgPSAiSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMICR7
dW5zYWZlRnVuY3Rpb25OYW1lfShKU0M6OkV4ZWNTdGF0ZSosICRjbGFzc05hbWUqIjsKKyAgICAg
ICAgICAgICAgICBmb3JlYWNoIG15ICRhcmd1bWVudCAoQHskZnVuY3Rpb24tPmFyZ3VtZW50c30p
IHsKKyAgICAgICAgICAgICAgICAgICAgbXkgJHR5cGUgPSAkYXJndW1lbnQtPnR5cGU7CisgICAg
ICAgICAgICAgICAgICAgIG15ICRhcmd1bWVudFR5cGUgPSBHZXRVbnNhZmVBcmd1bWVudFR5cGUo
JGludGVyZmFjZSwgJHR5cGUpOworICAgICAgICAgICAgICAgICAgICAkZnVuY3Rpb25TaWduYXR1
cmUgLj0gIiwgJHthcmd1bWVudFR5cGV9IjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICAgICAgcHVzaChAaW1wbENvbnRlbnQsICRmdW5jdGlvblNpZ25hdHVyZSAuICIpO1xuIik7Cisg
ICAgICAgICAgICB9CiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiNlbmRpZlxuIikg
aWYgJGNvbmRpdGlvbmFsU3RyaW5nOwogICAgICAgICB9CiAKQEAgLTI2NDQsNiArMjY0OCwzNyBA
QCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwg
IlxuIik7CiAgICAgfQogCisgICAgaWYgKCRudW1GdW5jdGlvbnMgPiAwKSB7CisgICAgICAgICMg
R2VuZXJhdGUgRE9NSklUOjpTaWduYXR1cmUgdmFyaWFibGVzLgorICAgICAgICBmb3JlYWNoIG15
ICRmdW5jdGlvbiAoQGZ1bmN0aW9ucykgeworICAgICAgICAgICAgbmV4dCB1bmxlc3MgJGNvZGVH
ZW5lcmF0b3ItPkV4dGVuZGVkQXR0cmlidXRlQ29udGFpbnMoJGZ1bmN0aW9uLT5leHRlbmRlZEF0
dHJpYnV0ZXMtPntET01KSVR9LCAiU2lnbmF0dXJlIik7CisgICAgICAgICAgICAkaW1wbEluY2x1
ZGVzeyJET01KSVRJRExUeXBlRmlsdGVyLmgifSA9IDE7CisgICAgICAgICAgICAkaW1wbEluY2x1
ZGVzeyJET01KSVRDaGVja0RPTS5oIn0gPSAxOworICAgICAgICAgICAgJGltcGxJbmNsdWRlc3si
RE9NSklUQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5oIn0gPSAxOworCisgICAgICAgICAgICBteSAk
aXNPdmVybG9hZGVkID0gJGZ1bmN0aW9uLT57b3ZlcmxvYWRzfSAmJiBAeyRmdW5jdGlvbi0+e292
ZXJsb2Fkc319ID4gMTsKKyAgICAgICAgICAgIGRpZSAib3ZlcmxvYWRzIGlzIG5vdCBzdXBwb3J0
ZWQgaW4gRE9NSklUIiBpZiAkaXNPdmVybG9hZGVkOworCisgICAgICAgICAgICBteSAkaW50ZXJm
YWNlTmFtZSA9ICRpbnRlcmZhY2UtPnR5cGUtPm5hbWU7CisgICAgICAgICAgICBteSAkZnVuY3Rp
b25OYW1lID0gR2V0RnVuY3Rpb25OYW1lKCRpbnRlcmZhY2UsICRjbGFzc05hbWUsICRmdW5jdGlv
bik7CisgICAgICAgICAgICBteSAkdW5zYWZlRnVuY3Rpb25OYW1lID0gInVuc2FmZSIgLiAkY29k
ZUdlbmVyYXRvci0+V0tfdWNmaXJzdCgkZnVuY3Rpb25OYW1lKTsKKyAgICAgICAgICAgIG15ICRk
b21KSVRTaWduYXR1cmVOYW1lID0gIkRPTUpJVFNpZ25hdHVyZUZvciIgLiAkaW50ZXJmYWNlLT50
eXBlLT5uYW1lIC4gJGNvZGVHZW5lcmF0b3ItPldLX3VjZmlyc3QoJGZ1bmN0aW9uLT5uYW1lKTsK
KyAgICAgICAgICAgIG15ICRjbGFzc0luZm8gPSAiSlMiIC4gJGludGVyZmFjZS0+dHlwZS0+bmFt
ZSAuICI6OmluZm8oKSI7CisgICAgICAgICAgICBteSAkcmVzdWx0VHlwZSA9IEdldFJlc3VsdFR5
cGVGaWx0ZXIoJGludGVyZmFjZSwgJGZ1bmN0aW9uLT50eXBlKTsKKyAgICAgICAgICAgIG15ICRk
b21KSVRTaWduYXR1cmUgPSAic3RhdGljIGNvbnN0IEpTQzo6RE9NSklUOjpTaWduYXR1cmUgJHtk
b21KSVRTaWduYXR1cmVOYW1lfSgodWludHB0cl90KSR7dW5zYWZlRnVuY3Rpb25OYW1lfSwgRE9N
SklUOjpjaGVja0RPTTwkaW50ZXJmYWNlTmFtZT4sICRjbGFzc0luZm8sIEpTQzo6RE9NSklUOjpF
ZmZlY3Q6OmZvclJlYWQoRE9NSklUOjpBYnN0cmFjdEhlYXBSZXBvc2l0b3J5OjpET00pLCAke3Jl
c3VsdFR5cGV9IjsKKyAgICAgICAgICAgIGZvcmVhY2ggbXkgJGFyZ3VtZW50IChAeyRmdW5jdGlv
bi0+YXJndW1lbnRzfSkgeworICAgICAgICAgICAgICAgIG15ICR0eXBlID0gJGFyZ3VtZW50LT50
eXBlOworICAgICAgICAgICAgICAgIG15ICRhcmd1bWVudFR5cGUgPSBHZXRBcmd1bWVudFR5cGVG
aWx0ZXIoJGludGVyZmFjZSwgJHR5cGUpOworICAgICAgICAgICAgICAgICRkb21KSVRTaWduYXR1
cmUgLj0gIiwgJHthcmd1bWVudFR5cGV9IjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIG15
ICRjb25kaXRpb25hbFN0cmluZyA9ICRjb2RlR2VuZXJhdG9yLT5HZW5lcmF0ZUNvbmRpdGlvbmFs
U3RyaW5nKCRmdW5jdGlvbik7CisgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiNpZiAk
e2NvbmRpdGlvbmFsU3RyaW5nfVxuIikgaWYgJGNvbmRpdGlvbmFsU3RyaW5nOworICAgICAgICAg
ICAgcHVzaChAaW1wbENvbnRlbnQsICRkb21KSVRTaWduYXR1cmUgLiAiKTtcbiIpOworICAgICAg
ICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIjZW5kaWZcbiIpIGlmICRjb25kaXRpb25hbFN0cmlu
ZzsKKyAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiXG4iKTsKKyAgICAgICAgfQorICAg
IH0KKwogICAgIEdlbmVyYXRlUHJvdG90eXBlRGVjbGFyYXRpb24oXEBpbXBsQ29udGVudCwgJGNs
YXNzTmFtZSwgJGludGVyZmFjZSkgaWYgIUhlYWRlck5lZWRzUHJvdG90eXBlRGVjbGFyYXRpb24o
JGludGVyZmFjZSk7CiAKICAgICBHZW5lcmF0ZUNvbnN0cnVjdG9yRGVjbGFyYXRpb24oXEBpbXBs
Q29udGVudCwgJGNsYXNzTmFtZSwgJGludGVyZmFjZSkgaWYgTmVlZHNDb25zdHJ1Y3RvclByb3Bl
cnR5KCRpbnRlcmZhY2UpOwpAQCAtMjc0MCw3ICsyNzc1LDExIEBAIHN1YiBHZW5lcmF0ZUltcGxl
bWVudGF0aW9uCiAgICAgICAgICAgICBwdXNoKEBoYXNoVmFsdWUxLCAkZnVuY3Rpb25OYW1lKTsK
IAogICAgICAgICAgICAgbXkgJGZ1bmN0aW9uTGVuZ3RoID0gR2V0RnVuY3Rpb25MZW5ndGgoJGZ1
bmN0aW9uKTsKLSAgICAgICAgICAgIHB1c2goQGhhc2hWYWx1ZTIsICRmdW5jdGlvbkxlbmd0aCk7
CisgICAgICAgICAgICBpZiAoJGNvZGVHZW5lcmF0b3ItPkV4dGVuZGVkQXR0cmlidXRlQ29udGFp
bnMoJGZ1bmN0aW9uLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntET01KSVR9LCAiU2lnbmF0dXJlIikp
IHsKKyAgICAgICAgICAgICAgICBwdXNoKEBoYXNoVmFsdWUyLCAiRE9NSklURnVuY3Rpb25Gb3Ii
IC4gJGludGVyZmFjZS0+dHlwZS0+bmFtZSAuICRjb2RlR2VuZXJhdG9yLT5XS191Y2ZpcnN0KCRm
dW5jdGlvbi0+bmFtZSkpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBw
dXNoKEBoYXNoVmFsdWUyLCAkZnVuY3Rpb25MZW5ndGgpOworICAgICAgICAgICAgfQogCiAgICAg
ICAgICAgICBwdXNoKEBoYXNoU3BlY2lhbHMsIENvbXB1dGVGdW5jdGlvblNwZWNpYWwoJGludGVy
ZmFjZSwgJGZ1bmN0aW9uKSk7CiAKQEAgLTMzMDcsMTMgKzMzNDYsMTQgQEAgc3ViIEdlbmVyYXRl
SW1wbGVtZW50YXRpb24KIAogICAgICAgICAgICAgaWYgKCRhdHRyaWJ1dGUtPmV4dGVuZGVkQXR0
cmlidXRlcy0+eyJET01KSVQifSkgewogICAgICAgICAgICAgICAgICRpbXBsSW5jbHVkZXN7Ijx3
dGYvTmV2ZXJEZXN0cm95ZWQuaD4ifSA9IDE7CisgICAgICAgICAgICAgICAgJGltcGxJbmNsdWRl
c3siRE9NSklUSURMVHlwZUZpbHRlci5oIn0gPSAxOwogICAgICAgICAgICAgICAgIG15ICRpbnRl
cmZhY2VOYW1lID0gJGludGVyZmFjZS0+dHlwZS0+bmFtZTsKICAgICAgICAgICAgICAgICBteSAk
YXR0cmlidXRlTmFtZSA9ICRhdHRyaWJ1dGUtPm5hbWU7CiAgICAgICAgICAgICAgICAgbXkgJGdl
bmVyYXRvck5hbWUgPSAkaW50ZXJmYWNlTmFtZSAuICRjb2RlR2VuZXJhdG9yLT5XS191Y2ZpcnN0
KCRhdHRyaWJ1dGUtPm5hbWUpOwogICAgICAgICAgICAgICAgIG15ICRkb21KSVRDbGFzc05hbWUg
PSAkZ2VuZXJhdG9yTmFtZSAuICJET01KSVQiOwogICAgICAgICAgICAgICAgIG15ICRnZXR0ZXIg
PSBHZXRBdHRyaWJ1dGVHZXR0ZXJOYW1lKCRpbnRlcmZhY2UsICRnZW5lcmF0b3JOYW1lLCAkYXR0
cmlidXRlKTsKICAgICAgICAgICAgICAgICBteSAkc2V0dGVyID0gSXNSZWFkb25seSgkYXR0cmli
dXRlKSA/ICJudWxscHRyIiA6IEdldEF0dHJpYnV0ZVNldHRlck5hbWUoJGludGVyZmFjZSwgJGdl
bmVyYXRvck5hbWUsICRhdHRyaWJ1dGUpOwotICAgICAgICAgICAgICAgIG15ICRyZXN1bHRUeXBl
ID0gR2V0UmVzdWx0VHlwZUZpbHRlcigkYXR0cmlidXRlLT50eXBlKTsKKyAgICAgICAgICAgICAg
ICBteSAkcmVzdWx0VHlwZSA9IEdldFJlc3VsdFR5cGVGaWx0ZXIoJGludGVyZmFjZSwgJGF0dHJp
YnV0ZS0+dHlwZSk7CiAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIkZG9tSklU
Q2xhc3NOYW1lOjokZG9tSklUQ2xhc3NOYW1lKClcbiIpOwogICAgICAgICAgICAgICAgIHB1c2go
QGltcGxDb250ZW50LCAiICAgIDogSlNDOjpET01KSVQ6OkdldHRlclNldHRlcigkZ2V0dGVyLCAk
c2V0dGVyLCAke2NsYXNzTmFtZX06OmluZm8oKSwgJHJlc3VsdFR5cGUpXG4iKTsKICAgICAgICAg
ICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIntcbiIpOwpAQCAtMzY4OCw2ICszNzI4LDcgQEAg
c3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KIAogICAgICAgICAgICAgbXkgJGlzQ3VzdG9tID0g
SGFzQ3VzdG9tTWV0aG9kKCRmdW5jdGlvbi0+ZXh0ZW5kZWRBdHRyaWJ1dGVzKTsKICAgICAgICAg
ICAgIG15ICRpc092ZXJsb2FkZWQgPSAkZnVuY3Rpb24tPntvdmVybG9hZHN9ICYmIEB7JGZ1bmN0
aW9uLT57b3ZlcmxvYWRzfX0gPiAxOworICAgICAgICAgICAgbXkgJGlzRE9NSklUID0gJGNvZGVH
ZW5lcmF0b3ItPkV4dGVuZGVkQXR0cmlidXRlQ29udGFpbnMoJGZ1bmN0aW9uLT5leHRlbmRlZEF0
dHJpYnV0ZXMtPntET01KSVR9LCAiU2lnbmF0dXJlIik7CiAKICAgICAgICAgICAgIG15ICRtYXlU
aHJvd0xlZ2FjeUV4Y2VwdGlvbiA9ICRmdW5jdGlvbi0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57TWF5
VGhyb3dMZWdhY3lFeGNlcHRpb259OwogCkBAIC0zODI2LDYgKzM4NjcsNzkgQEAgRU5ECiAgICAg
ICAgICAgICB9CiAKICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAifVxuXG4iKTsKKwor
ICAgICAgICAgICAgaWYgKCRpc0RPTUpJVCkgeworICAgICAgICAgICAgICAgICRpbXBsSW5jbHVk
ZXN7IjxpbnRlcnByZXRlci9GcmFtZVRyYWNlcnMuaD4ifSA9IDE7CisgICAgICAgICAgICAgICAg
bXkgJHVuc2FmZUZ1bmN0aW9uTmFtZSA9ICJ1bnNhZmUiIC4gJGNvZGVHZW5lcmF0b3ItPldLX3Vj
Zmlyc3QoJGZ1bmN0aW9uTmFtZSk7CisgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQs
ICJKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgJHt1bnNhZmVGdW5jdGlvbk5hbWV9
KEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgJGNsYXNzTmFtZSogY2FzdGVkVGhpcyIpOworICAgICAg
ICAgICAgICAgIGZvcmVhY2ggbXkgJGFyZ3VtZW50IChAeyRmdW5jdGlvbi0+YXJndW1lbnRzfSkg
eworICAgICAgICAgICAgICAgICAgICBteSAkdHlwZSA9ICRhcmd1bWVudC0+dHlwZTsKKyAgICAg
ICAgICAgICAgICAgICAgbXkgJGFyZ3VtZW50VHlwZSA9IEdldFVuc2FmZUFyZ3VtZW50VHlwZSgk
aW50ZXJmYWNlLCAkdHlwZSk7CisgICAgICAgICAgICAgICAgICAgIG15ICRuYW1lID0gJGFyZ3Vt
ZW50LT5uYW1lOworICAgICAgICAgICAgICAgICAgICBteSAkZW5jb2RlZE5hbWUgPSAiZW5jb2Rl
ZCIgLiAkY29kZUdlbmVyYXRvci0+V0tfdWNmaXJzdCgkbmFtZSk7CisgICAgICAgICAgICAgICAg
ICAgIHB1c2goQGltcGxDb250ZW50LCAiLCAke2FyZ3VtZW50VHlwZX0gJHtlbmNvZGVkTmFtZX0i
KTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQs
ICIpXG4iKTsKKyAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIntcbiIpOworICAg
ICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7
XG4iKTsKKyAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBWTSYgdm0gPSBz
dGF0ZS0+dm0oKTtcbiIpOworICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAg
IEpTQzo6TmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcigmdm0sIHN0YXRlKTtcbiIpOworICAg
ICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGF1dG8gdGhyb3dTY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pO1xuIik7CisgICAgICAgICAgICAgICAgcHVzaChAaW1wbENv
bnRlbnQsICIgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpO1xuIik7CisgICAgICAgICAgICAg
ICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBw
ZWQoKTtcbiIpOworICAgICAgICAgICAgICAgIG15IEBhcmd1bWVudHM7CisgICAgICAgICAgICAg
ICAgbXkgJGltcGxGdW5jdGlvbk5hbWU7CisgICAgICAgICAgICAgICAgbXkgJGltcGxlbWVudGVk
QnkgPSAkZnVuY3Rpb24tPmV4dGVuZGVkQXR0cmlidXRlcy0+e0ltcGxlbWVudGVkQnl9OworCisg
ICAgICAgICAgICAgICAgaWYgKCRpbXBsZW1lbnRlZEJ5KSB7CisgICAgICAgICAgICAgICAgICAg
IEFkZFRvSW1wbEluY2x1ZGVzKCIke2ltcGxlbWVudGVkQnl9LmgiLCAkZnVuY3Rpb24tPmV4dGVu
ZGVkQXR0cmlidXRlcy0+e0NvbmRpdGlvbmFsfSk7CisgICAgICAgICAgICAgICAgICAgIHVuc2hp
ZnQoQGFyZ3VtZW50cywgImltcGwiKSBpZiAhJGZ1bmN0aW9uLT5pc1N0YXRpYzsKKyAgICAgICAg
ICAgICAgICAgICAgJGltcGxGdW5jdGlvbk5hbWUgPSAiV2ViQ29yZTo6JHtpbXBsZW1lbnRlZEJ5
fTo6JHtmdW5jdGlvbkltcGxlbWVudGF0aW9uTmFtZX0iOworICAgICAgICAgICAgICAgIH0gZWxz
aWYgKCRmdW5jdGlvbi0+aXNTdGF0aWMpIHsKKyAgICAgICAgICAgICAgICAgICAgJGltcGxGdW5j
dGlvbk5hbWUgPSAiJHtpbnRlcmZhY2VOYW1lfTo6JHtmdW5jdGlvbkltcGxlbWVudGF0aW9uTmFt
ZX0iOworICAgICAgICAgICAgICAgIH0gZWxzaWYgKCRzdmdQcm9wZXJ0eU9yTGlzdFByb3BlcnR5
VHlwZSBhbmQgISRzdmdMaXN0UHJvcGVydHlUeXBlKSB7CisgICAgICAgICAgICAgICAgICAgICRp
bXBsRnVuY3Rpb25OYW1lID0gInBvZEltcGwuJHtmdW5jdGlvbkltcGxlbWVudGF0aW9uTmFtZX0i
OworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICRpbXBsRnVu
Y3Rpb25OYW1lID0gImltcGwuJHtmdW5jdGlvbkltcGxlbWVudGF0aW9uTmFtZX0iOworICAgICAg
ICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIG15ICRhcmd1bWVudEluZGV4ID0gMDsKKyAg
ICAgICAgICAgICAgICBmb3JlYWNoIG15ICRhcmd1bWVudCAoQHskZnVuY3Rpb24tPmFyZ3VtZW50
c30pIHsKKyAgICAgICAgICAgICAgICAgICAgbXkgJHZhbHVlID0gIiI7CisgICAgICAgICAgICAg
ICAgICAgIG15ICR0eXBlID0gJGFyZ3VtZW50LT50eXBlOworICAgICAgICAgICAgICAgICAgICBt
eSAkbmFtZSA9ICRhcmd1bWVudC0+bmFtZTsKKyAgICAgICAgICAgICAgICAgICAgbXkgJGVuY29k
ZWROYW1lID0gImVuY29kZWQiIC4gJGNvZGVHZW5lcmF0b3ItPldLX3VjZmlyc3QoJG5hbWUpOwor
ICAgICAgICAgICAgICAgICAgICBteSAkbmF0aXZlVHlwZSA9IEdldE5hdGl2ZVR5cGUoJGludGVy
ZmFjZSwgJGFyZ3VtZW50LT50eXBlKTsKKyAgICAgICAgICAgICAgICAgICAgbXkgJHNob3VsZFBh
c3NCeVJlZmVyZW5jZSA9IFNob3VsZFBhc3NXcmFwcGVyQnlSZWZlcmVuY2UoJGFyZ3VtZW50LCAk
aW50ZXJmYWNlKTsKKworICAgICAgICAgICAgICAgICAgICBpZiAoISRzaG91bGRQYXNzQnlSZWZl
cmVuY2UgJiYgKCRjb2RlR2VuZXJhdG9yLT5Jc1dyYXBwZXJUeXBlKCR0eXBlKSB8fCAkY29kZUdl
bmVyYXRvci0+SXNUeXBlZEFycmF5VHlwZSgkdHlwZSkpKSB7CisgICAgICAgICAgICAgICAgICAg
ICAgICAkaW1wbEluY2x1ZGVzeyI8cnVudGltZS9FcnJvci5oPiJ9ID0gMTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIG15ICgkbmF0aXZlVmFsdWUsICRtYXlUaHJvd0V4Y2VwdGlvbikgPSBVbnNh
ZmVUb05hdGl2ZSgkaW50ZXJmYWNlLCAkYXJndW1lbnQsICRlbmNvZGVkTmFtZSwgJGZ1bmN0aW9u
LT5leHRlbmRlZEF0dHJpYnV0ZXMtPntDb25kaXRpb25hbH0pOworICAgICAgICAgICAgICAgICAg
ICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgJG5hdGl2ZVR5cGUgJG5hbWUgPSBudWxscHRy
O1xuIik7CisgICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAk
bmFtZSA9ICRuYXRpdmVWYWx1ZTtcbiIpOworICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChA
aW1wbENvbnRlbnQsICIgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVk
SlNWYWx1ZSgpKTtcbiIpIGlmICRtYXlUaHJvd0V4Y2VwdGlvbjsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICR2YWx1ZSA9ICJXVEZNb3ZlKCRuYW1lKSI7CisgICAgICAgICAgICAgICAgICAgIH0g
ZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICBteSAoJG5hdGl2ZVZhbHVlLCAkbWF5VGhy
b3dFeGNlcHRpb24pID0gVW5zYWZlVG9OYXRpdmUoJGludGVyZmFjZSwgJGFyZ3VtZW50LCAkZW5j
b2RlZE5hbWUsICRmdW5jdGlvbi0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Q29uZGl0aW9uYWx9KTsK
KyAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGF1dG8gJG5h
bWUgPSAke25hdGl2ZVZhbHVlfTtcbiIpOworICAgICAgICAgICAgICAgICAgICAgICAgJHZhbHVl
ID0gIldURk1vdmUoJG5hbWUpIjsKKyAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxD
b250ZW50LCAiICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFs
dWUoKSk7XG4iKSBpZiAkbWF5VGhyb3dFeGNlcHRpb247CisgICAgICAgICAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgICAgICAgICBpZiAoJHNob3VsZFBhc3NCeVJlZmVyZW5jZSkgeworICAg
ICAgICAgICAgICAgICAgICAgICAgJHZhbHVlID0gIiokbmFtZSI7CisgICAgICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgICAgICAgICAgcHVzaChAYXJndW1lbnRzLCAkdmFsdWUpOworICAg
ICAgICAgICAgICAgICAgICAkYXJndW1lbnRJbmRleCsrOworICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgICBteSAkZnVuY3Rpb25TdHJpbmcgPSAiJGltcGxGdW5jdGlvbk5hbWUoIiAu
IGpvaW4oIiwgIiwgQGFyZ3VtZW50cykgLiAiKSI7CisgICAgICAgICAgICAgICAgJGZ1bmN0aW9u
U3RyaW5nID0gInByb3BhZ2F0ZUV4Y2VwdGlvbigqc3RhdGUsIHRocm93U2NvcGUsICRmdW5jdGlv
blN0cmluZykiIGlmIE5lZWRzRXhwbGljaXRQcm9wYWdhdGVFeGNlcHRpb25DYWxsKCRmdW5jdGlv
bik7CisgICAgICAgICAgICAgICAgbXkgJHRoaXNPYmplY3QgPSAiY2FzdGVkVGhpcyI7CisgICAg
ICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgSlNWYWx1ZSByZXN1bHQgPSAiIC4g
TmF0aXZlVG9KU1ZhbHVlVXNpbmdQb2ludGVycygkZnVuY3Rpb24sIDEsICRpbnRlcmZhY2UsICRm
dW5jdGlvblN0cmluZywgJHRoaXNPYmplY3QpIC4gIjtcbiIpOworICAgICAgICAgICAgICAgIHB1
c2goQGltcGxDb250ZW50LCAiICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTtcbiIp
OworICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAifVxuXG4iKTsKKyAgICAgICAg
ICAgIH0KKwogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIjZW5kaWZcblxuIikgaWYg
JGNvbmRpdGlvbmFsOwogCiAgICAgICAgICAgICAjIEdlbmVyYXRlIGEgZnVuY3Rpb24gZGlzcGF0
Y2hpbmcgY2FsbCB0byB0aGUgcmVzdCBvZiB0aGUgb3ZlcmxvYWRzLgpAQCAtNTMxOSw2ICs1NDMz
LDQzIEBAIHN1YiBKU1ZhbHVlVG9OYXRpdmUKICAgICByZXR1cm4gKCJKUyIgLiAkdHlwZS0+bmFt
ZSAuICI6OnRvV3JhcHBlZCgkdmFsdWUpIiwgMCk7CiB9CiAKK3N1YiBVbnNhZmVUb05hdGl2ZQor
eworICAgIG15ICgkaW50ZXJmYWNlLCAkY29udGV4dCwgJHZhbHVlLCAkY29uZGl0aW9uYWwsICRz
dGF0ZVBvaW50ZXIsICRzdGF0ZVJlZmVyZW5jZSwgJHRoaXNPYmplY3RSZWZlcmVuY2UpID0gQF87
CisKKyAgICBhc3NlcnQoIkludmFsaWQgY29udGV4dCB0eXBlIikgaWYgIUlzVmFsaWRDb250ZXh0
Rm9ySlNWYWx1ZVRvTmF0aXZlKCRjb250ZXh0KTsKKworICAgIG15ICR0eXBlID0gJGNvbnRleHQt
PnR5cGU7CisKKyAgICAjIEZJWE1FOiBSZW1vdmUgdGhlc2UgMyB2YXJpYWJsZXMgd2hlbiBhbGwg
VW5zYWZlVG9OYXRpdmUgdXNlIHJlZmVyZW5jZXMuCisgICAgJHN0YXRlUG9pbnRlciA9ICJzdGF0
ZSIgdW5sZXNzICRzdGF0ZVBvaW50ZXI7CisgICAgJHN0YXRlUmVmZXJlbmNlID0gIipzdGF0ZSIg
dW5sZXNzICRzdGF0ZVJlZmVyZW5jZTsKKyAgICAkdGhpc09iamVjdFJlZmVyZW5jZSA9ICIqY2Fz
dGVkVGhpcyIgdW5sZXNzICR0aGlzT2JqZWN0UmVmZXJlbmNlOworCisgICAgaWYgKEpTVmFsdWVU
b05hdGl2ZUlzSGFuZGxlZEJ5RE9NQ29udmVydCgkdHlwZSwgJGNvbnRleHQpKSB7CisgICAgICAg
IEFkZFRvSW1wbEluY2x1ZGVzKCJET01KSVRJRExDb252ZXJ0LmgiKTsKKyAgICAgICAgQWRkVG9J
bXBsSW5jbHVkZXNGb3JJRExUeXBlKCR0eXBlLCAkY29uZGl0aW9uYWwpOworCisgICAgICAgIG15
ICRJRExUeXBlID0gR2V0SURMVHlwZSgkaW50ZXJmYWNlLCAkdHlwZSk7CisKKyAgICAgICAgbXkg
QGNvbnZlcnNpb25Bcmd1bWVudHMgPSAoKTsKKyAgICAgICAgcHVzaChAY29udmVyc2lvbkFyZ3Vt
ZW50cywgIiRzdGF0ZVJlZmVyZW5jZSIpOworICAgICAgICBwdXNoKEBjb252ZXJzaW9uQXJndW1l
bnRzLCAiJHZhbHVlIik7CisKKyAgICAgICAgbXkgQGNvbnZlcnNpb25TdGF0aWNBcmd1bWVudHMg
PSAoKTsKKyAgICAgICAgcHVzaChAY29udmVyc2lvblN0YXRpY0FyZ3VtZW50cywgR2V0SW50ZWdl
ckNvbnZlcnNpb25Db25maWd1cmF0aW9uKCRjb250ZXh0KSkgaWYgJGNvZGVHZW5lcmF0b3ItPklz
SW50ZWdlclR5cGUoJHR5cGUpOworICAgICAgICBwdXNoKEBjb252ZXJzaW9uU3RhdGljQXJndW1l
bnRzLCBHZXRTdHJpbmdDb252ZXJzaW9uQ29uZmlndXJhdGlvbigkY29udGV4dCkpIGlmICRjb2Rl
R2VuZXJhdG9yLT5Jc1N0cmluZ1R5cGUoJHR5cGUpOworCisgICAgICAgIGlmIChzY2FsYXIoQGNv
bnZlcnNpb25TdGF0aWNBcmd1bWVudHMpID4gMCkgeworICAgICAgICAgICAgcmV0dXJuICgiRE9N
SklUOjpEaXJlY3RDb252ZXJ0ZXI8JElETFR5cGU+OjpkaXJlY3RDb252ZXJ0PCIgLiBqb2luKCIs
ICIsIEBjb252ZXJzaW9uU3RhdGljQXJndW1lbnRzKSAuICI+KCIgLiBqb2luKCIsICIsIEBjb252
ZXJzaW9uQXJndW1lbnRzKSAuICIpIiwgMSk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuICgi
RE9NSklUOjpEaXJlY3RDb252ZXJ0ZXI8JElETFR5cGU+OjpkaXJlY3RDb252ZXJ0KCIgLiBqb2lu
KCIsICIsIEBjb252ZXJzaW9uQXJndW1lbnRzKSAuICIpIiwgMSk7CisgICAgfQorCisgICAgIyBG
SVhNRTogU3VwcG9ydCBtb3JlIHR5cGVzLgorICAgIGRpZSAiT25seSBET01Db252ZXJ0IHN1cHBv
cnRlZCBvbmUgaXMgbm93IHN1cHBvcnRlZCBpbiBET01KSVQgdW5zYWZlLiI7Cit9CisKIHN1YiBO
YXRpdmVUb0pTVmFsdWVJc0hhbmRsZWRCeURPTUNvbnZlcnQKIHsKICAgICBteSAoJHR5cGUpID0g
QF87CkBAIC01NTI1LDcgKzU2NzYsMTAgQEAgc3ViIEdlbmVyYXRlSGFzaFRhYmxlVmFsdWVBcnJh
eQogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIjaWYgJHtjb25kaXRpb25hbFN0cmlu
Z31cbiIpOwogICAgICAgICB9CiAKLSAgICAgICAgaWYgKCJAJHNwZWNpYWxzWyRpXSIgPX4gbS9G
dW5jdGlvbi8pIHsKKyAgICAgICAgaWYgKCJAJHNwZWNpYWxzWyRpXSIgPX4gbS9ET01KSVRGdW5j
dGlvbi8pIHsKKyAgICAgICAgICAgICRmaXJzdFRhcmdldFR5cGUgPSAic3RhdGljX2Nhc3Q8TmF0
aXZlRnVuY3Rpb24+IjsKKyAgICAgICAgICAgICRzZWNvbmRUYXJnZXRUeXBlID0gInN0YXRpY19j
YXN0PGNvbnN0IEpTQzo6RE9NSklUOjpTaWduYXR1cmUqPiI7CisgICAgICAgIH0gZWxzaWYgKCJA
JHNwZWNpYWxzWyRpXSIgPX4gbS9GdW5jdGlvbi8pIHsKICAgICAgICAgICAgICRmaXJzdFRhcmdl
dFR5cGUgPSAic3RhdGljX2Nhc3Q8TmF0aXZlRnVuY3Rpb24+IjsKICAgICAgICAgfSBlbHNpZiAo
IkAkc3BlY2lhbHNbJGldIiA9fiBtL0J1aWx0aW4vKSB7CiAgICAgICAgICAgICAkZmlyc3RUYXJn
ZXRUeXBlID0gInN0YXRpY19jYXN0PEJ1aWx0aW5HZW5lcmF0b3I+IjsKQEAgLTYxMjMsNiArNjI3
Nyw5IEBAIHN1YiBDb21wdXRlRnVuY3Rpb25TcGVjaWFsCiAgICAgZWxzZSB7CiAgICAgICAgIHB1
c2goQHNwZWNpYWxzLCAiSlNDOjpGdW5jdGlvbiIpOwogICAgIH0KKyAgICBpZiAoJGZ1bmN0aW9u
LT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiRE9NSklUIn0pIHsKKyAgICAgICAgcHVzaChAc3BlY2lh
bHMsICJET01KSVRGdW5jdGlvbiIpIGlmICRjb2RlR2VuZXJhdG9yLT5FeHRlbmRlZEF0dHJpYnV0
ZUNvbnRhaW5zKCRmdW5jdGlvbi0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57RE9NSklUfSwgIlNpZ25h
dHVyZSIpOworICAgIH0KICAgICByZXR1cm4gKEBzcGVjaWFscyA+IDApID8gam9pbigiIHwgIiwg
QHNwZWNpYWxzKSA6ICIwIjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy9JRExBdHRyaWJ1dGVzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvSURMQXR0cmlidXRlcy50eHQKaW5kZXggYTJlNzU0MTU5MWNlM2Y1NzZlN2E3ZDJkNmQy
ZmM2MmRkZGZhMDQxYy4uMTQ2YzJiY2M4ZTBmMzc2ZDVkY2M1NDM1MzkwODMzNTljNzJkYmU2MyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9JRExBdHRyaWJ1dGVz
LnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0lETEF0dHJpYnV0ZXMu
dHh0CkBAIC01Miw3ICs1Miw3IEBAIEN1c3RvbVB1dEZ1bmN0aW9uCiBDdXN0b21TZXRQcm90b3R5
cGUKIEN1c3RvbVNldHRlcgogQ3VzdG9tVG9KU09iamVjdAotRE9NSklUCitET01KSVQ9fFNpZ25h
dHVyZQogRG9Ob3RDaGVja0NvbnN0YW50cwogRG9Ob3RDaGVja1NlY3VyaXR5CiBEb05vdENoZWNr
U2VjdXJpdHlPbkdldHRlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdERPTUpJVC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0RE9NSklULmNwcAppbmRleCAyNDg4ZGYyNmJkYjUyYjUwY2Q2
N2Q2MGNjYTU2NWIyNjUzNjdlNGNmLi45NTk2MWE0YmZkZTIwYWE2ZjMxOWQ4YjU3YzZhYzBlYmQy
MDVjODA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0RE9NSklULmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0RE9NSklULmNwcApAQCAtMjEsMTAgKzIxLDE4IEBACiAjaW5jbHVkZSAi
Y29uZmlnLmgiCiAjaW5jbHVkZSAiSlNUZXN0RE9NSklULmgiCiAKKyNpbmNsdWRlICJET01KSVRB
YnN0cmFjdEhlYXBSZXBvc2l0b3J5LmgiCisjaW5jbHVkZSAiRE9NSklUQ2hlY2tET00uaCIKKyNp
bmNsdWRlICJET01KSVRJRExDb252ZXJ0LmgiCisjaW5jbHVkZSAiRE9NSklUSURMVHlwZS5oIgor
I2luY2x1ZGUgIkRPTUpJVElETFR5cGVGaWx0ZXIuaCIKKyNpbmNsdWRlICJFeGNlcHRpb25Db2Rl
LmgiCiAjaW5jbHVkZSAiSlNCeXRlU3RyaW5nLmgiCiAjaW5jbHVkZSAiSlNET01CaW5kaW5nLmgi
CiAjaW5jbHVkZSAiSlNET01Db25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUgIkpTRE9NQ29udmVydC5o
IgorI2luY2x1ZGUgPGludGVycHJldGVyL0ZyYW1lVHJhY2Vycy5oPgorI2luY2x1ZGUgPHJ1bnRp
bWUvRXJyb3IuaD4KICNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+CiAjaW5jbHVkZSA8d3RmL05ldmVy
RGVzdHJveWVkLmg+CiAKQEAgLTMyLDYgKzQwLDExIEBAIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorLy8gRnVuY3Rpb25zCisKK0pTQzo6RW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RET01KSVRQcm90b3R5cGVGdW5jdGlvbkdldEF0dHJpYnV0
ZShKU0M6OkV4ZWNTdGF0ZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHVu
c2FmZUpzVGVzdERPTUpJVFByb3RvdHlwZUZ1bmN0aW9uR2V0QXR0cmlidXRlKEpTQzo6RXhlY1N0
YXRlKiwgSlNUZXN0RE9NSklUKiwgRE9NSklUOjpJRExKU0FyZ3VtZW50VHlwZTxJRExET01TdHJp
bmc+KTsKKwogLy8gQXR0cmlidXRlcwogCiBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdERPTUpJ
VEFueUF0dHIoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3Bl
cnR5TmFtZSk7CkBAIC03Miw2ICs4NSw4IEBAIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0RE9N
SklUTm9kZU51bGxhYmxlQXR0cihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTCiBKU0M6
OkVuY29kZWRKU1ZhbHVlIGpzVGVzdERPTUpJVENvbnN0cnVjdG9yKEpTQzo6RXhlY1N0YXRlKiwg
SlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwogYm9vbCBzZXRKU1Rlc3RE
T01KSVRDb25zdHJ1Y3RvcihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpT
Qzo6RW5jb2RlZEpTVmFsdWUpOwogCitzdGF0aWMgY29uc3QgSlNDOjpET01KSVQ6OlNpZ25hdHVy
ZSBET01KSVRTaWduYXR1cmVGb3JUZXN0RE9NSklUR2V0QXR0cmlidXRlKCh1aW50cHRyX3QpdW5z
YWZlSnNUZXN0RE9NSklUUHJvdG90eXBlRnVuY3Rpb25HZXRBdHRyaWJ1dGUsIERPTUpJVDo6Y2hl
Y2tET008VGVzdERPTUpJVD4sIEpTVGVzdERPTUpJVDo6aW5mbygpLCBKU0M6OkRPTUpJVDo6RWZm
ZWN0Ojpmb3JSZWFkKERPTUpJVDo6QWJzdHJhY3RIZWFwUmVwb3NpdG9yeTo6RE9NKSwgRE9NSklU
OjpJRExSZXN1bHRUeXBlRmlsdGVyPElETE51bGxhYmxlPElETERPTVN0cmluZz4+Ojp2YWx1ZSwg
RE9NSklUOjpJRExBcmd1bWVudFR5cGVGaWx0ZXI8SURMRE9NU3RyaW5nPjo6dmFsdWUpOworCiBj
bGFzcyBKU1Rlc3RET01KSVRQcm90b3R5cGUgOiBwdWJsaWMgSlNDOjpKU05vbkZpbmFsT2JqZWN0
IHsKIHB1YmxpYzoKICAgICB1c2luZyBCYXNlID0gSlNDOjpKU05vbkZpbmFsT2JqZWN0OwpAQCAt
MTUzLDYgKzE2OCw3IEBAIHN0YXRpYyBjb25zdCBIYXNoVGFibGVWYWx1ZSBKU1Rlc3RET01KSVRQ
cm90b3R5cGVUYWJsZVZhbHVlc1tdID0KICAgICB7ICJieXRlU3RyaW5nTnVsbGFibGVBdHRyIiwg
UmVhZE9ubHkgfCBDdXN0b21BY2Nlc3NvciB8IERPTUpJVEF0dHJpYnV0ZSwgTm9JbnRyaW5zaWMs
IHsgKGludHB0cl90KXN0YXRpY19jYXN0PERPTUpJVEdldHRlclNldHRlckdlbmVyYXRvcj4oZG9t
SklUR2V0dGVyU2V0dGVyRm9yVGVzdERPTUpJVEJ5dGVTdHJpbmdOdWxsYWJsZUF0dHIpLCAoaW50
cHRyX3QpICgwKSB9IH0sCiAgICAgeyAidXN2U3RyaW5nTnVsbGFibGVBdHRyIiwgUmVhZE9ubHkg
fCBDdXN0b21BY2Nlc3NvciB8IERPTUpJVEF0dHJpYnV0ZSwgTm9JbnRyaW5zaWMsIHsgKGludHB0
cl90KXN0YXRpY19jYXN0PERPTUpJVEdldHRlclNldHRlckdlbmVyYXRvcj4oZG9tSklUR2V0dGVy
U2V0dGVyRm9yVGVzdERPTUpJVFVzdlN0cmluZ051bGxhYmxlQXR0ciksIChpbnRwdHJfdCkgKDAp
IH0gfSwKICAgICB7ICJub2RlTnVsbGFibGVBdHRyIiwgUmVhZE9ubHkgfCBDdXN0b21BY2Nlc3Nv
ciB8IERPTUpJVEF0dHJpYnV0ZSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0
PERPTUpJVEdldHRlclNldHRlckdlbmVyYXRvcj4oZG9tSklUR2V0dGVyU2V0dGVyRm9yVGVzdERP
TUpJVE5vZGVOdWxsYWJsZUF0dHIpLCAoaW50cHRyX3QpICgwKSB9IH0sCisgICAgeyAiZ2V0QXR0
cmlidXRlIiwgSlNDOjpGdW5jdGlvbiB8IERPTUpJVEZ1bmN0aW9uLCBOb0ludHJpbnNpYywgeyAo
aW50cHRyX3Qpc3RhdGljX2Nhc3Q8TmF0aXZlRnVuY3Rpb24+KGpzVGVzdERPTUpJVFByb3RvdHlw
ZUZ1bmN0aW9uR2V0QXR0cmlidXRlKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxjb25zdCBKU0M6
OkRPTUpJVDo6U2lnbmF0dXJlKj4oJkRPTUpJVFNpZ25hdHVyZUZvclRlc3RET01KSVRHZXRBdHRy
aWJ1dGUpIH0gfSwKIH07CiAKIGNvbnN0IENsYXNzSW5mbyBKU1Rlc3RET01KSVRQcm90b3R5cGU6
OnNfaW5mbyA9IHsgIlRlc3RET01KSVRQcm90b3R5cGUiLCAmQmFzZTo6c19pbmZvLCAwLCBDUkVB
VEVfTUVUSE9EX1RBQkxFKEpTVGVzdERPTUpJVFByb3RvdHlwZSkgfTsKQEAgLTE4NSw2ICsyMDEs
MTEgQEAgdGVtcGxhdGU8PiBpbmxpbmUgSlNUZXN0RE9NSklUKiBCaW5kaW5nQ2FsbGVyPEpTVGVz
dERPTUpJVD46OmNhc3RGb3JBdHRyaWJ1dGUoRXgKICAgICByZXR1cm4ganNEeW5hbWljRG93bmNh
c3Q8SlNUZXN0RE9NSklUKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogfQogCit0ZW1w
bGF0ZTw+IGlubGluZSBKU1Rlc3RET01KSVQqIEJpbmRpbmdDYWxsZXI8SlNUZXN0RE9NSklUPjo6
Y2FzdEZvck9wZXJhdGlvbihFeGVjU3RhdGUmIHN0YXRlKQoreworICAgIHJldHVybiBqc0R5bmFt
aWNEb3duY2FzdDxKU1Rlc3RET01KSVQqPihzdGF0ZS50aGlzVmFsdWUoKSk7Cit9CisKIHN0YXRp
YyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RET01KSVRBbnlBdHRyR2V0dGVyKEV4ZWNTdGF0ZSYsIEpT
VGVzdERPTUpJVCYsIFRocm93U2NvcGUmIHRocm93U2NvcGUpOwogCiBFbmNvZGVkSlNWYWx1ZSBq
c1Rlc3RET01KSVRBbnlBdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNW
YWx1ZSwgUHJvcGVydHlOYW1lKQpAQCAtMjAyLDcgKzIyMyw3IEBAIHN0YXRpYyBpbmxpbmUgSlNW
YWx1ZSBqc1Rlc3RET01KSVRBbnlBdHRyR2V0dGVyKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVGVzdERP
TUpJVCYKIH0KIAogVGVzdERPTUpJVEFueUF0dHJET01KSVQ6OlRlc3RET01KSVRBbnlBdHRyRE9N
SklUKCkKLSAgICA6IEpTQzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIoanNUZXN0RE9NSklUQW55QXR0
ciwgbnVsbHB0ciwgSlNUZXN0RE9NSklUOjppbmZvKCksIEpTQzo6U3BlY0hlYXBUb3ApCisgICAg
OiBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVyKGpzVGVzdERPTUpJVEFueUF0dHIsIG51bGxwdHIs
IEpTVGVzdERPTUpJVDo6aW5mbygpLCBET01KSVQ6OklETFJlc3VsdFR5cGVGaWx0ZXI8SURMQW55
Pjo6dmFsdWUpCiB7CiB9CiAKQEAgLTIyOSw3ICsyNTAsNyBAQCBzdGF0aWMgaW5saW5lIEpTVmFs
dWUganNUZXN0RE9NSklUQm9vbGVhbkF0dHJHZXR0ZXIoRXhlY1N0YXRlJiBzdGF0ZSwgSlNUZXN0
RE9NSgogfQogCiBUZXN0RE9NSklUQm9vbGVhbkF0dHJET01KSVQ6OlRlc3RET01KSVRCb29sZWFu
QXR0ckRPTUpJVCgpCi0gICAgOiBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVyKGpzVGVzdERPTUpJ
VEJvb2xlYW5BdHRyLCBudWxscHRyLCBKU1Rlc3RET01KSVQ6OmluZm8oKSwgSlNDOjpTcGVjQm9v
bGVhbikKKyAgICA6IEpTQzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIoanNUZXN0RE9NSklUQm9vbGVh
bkF0dHIsIG51bGxwdHIsIEpTVGVzdERPTUpJVDo6aW5mbygpLCBET01KSVQ6OklETFJlc3VsdFR5
cGVGaWx0ZXI8SURMQm9vbGVhbj46OnZhbHVlKQogewogfQogCkBAIC0yNTYsNyArMjc3LDcgQEAg
c3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdERPTUpJVEJ5dGVBdHRyR2V0dGVyKEV4ZWNTdGF0
ZSYgc3RhdGUsIEpTVGVzdERPTUpJVCYKIH0KIAogVGVzdERPTUpJVEJ5dGVBdHRyRE9NSklUOjpU
ZXN0RE9NSklUQnl0ZUF0dHJET01KSVQoKQotICAgIDogSlNDOjpET01KSVQ6OkdldHRlclNldHRl
cihqc1Rlc3RET01KSVRCeXRlQXR0ciwgbnVsbHB0ciwgSlNUZXN0RE9NSklUOjppbmZvKCksIEpT
Qzo6U3BlY0ludDMyT25seSkKKyAgICA6IEpTQzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIoanNUZXN0
RE9NSklUQnl0ZUF0dHIsIG51bGxwdHIsIEpTVGVzdERPTUpJVDo6aW5mbygpLCBET01KSVQ6OklE
TFJlc3VsdFR5cGVGaWx0ZXI8SURMQnl0ZT46OnZhbHVlKQogewogfQogCkBAIC0yODMsNyArMzA0
LDcgQEAgc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdERPTUpJVE9jdGV0QXR0ckdldHRlcihF
eGVjU3RhdGUmIHN0YXRlLCBKU1Rlc3RET01KSVQKIH0KIAogVGVzdERPTUpJVE9jdGV0QXR0ckRP
TUpJVDo6VGVzdERPTUpJVE9jdGV0QXR0ckRPTUpJVCgpCi0gICAgOiBKU0M6OkRPTUpJVDo6R2V0
dGVyU2V0dGVyKGpzVGVzdERPTUpJVE9jdGV0QXR0ciwgbnVsbHB0ciwgSlNUZXN0RE9NSklUOjpp
bmZvKCksIEpTQzo6U3BlY0ludDMyT25seSkKKyAgICA6IEpTQzo6RE9NSklUOjpHZXR0ZXJTZXR0
ZXIoanNUZXN0RE9NSklUT2N0ZXRBdHRyLCBudWxscHRyLCBKU1Rlc3RET01KSVQ6OmluZm8oKSwg
RE9NSklUOjpJRExSZXN1bHRUeXBlRmlsdGVyPElETE9jdGV0Pjo6dmFsdWUpCiB7CiB9CiAKQEAg
LTMxMCw3ICszMzEsNyBAQCBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0RE9NSklUU2hvcnRB
dHRyR2V0dGVyKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVGVzdERPTUpJVAogfQogCiBUZXN0RE9NSklU
U2hvcnRBdHRyRE9NSklUOjpUZXN0RE9NSklUU2hvcnRBdHRyRE9NSklUKCkKLSAgICA6IEpTQzo6
RE9NSklUOjpHZXR0ZXJTZXR0ZXIoanNUZXN0RE9NSklUU2hvcnRBdHRyLCBudWxscHRyLCBKU1Rl
c3RET01KSVQ6OmluZm8oKSwgSlNDOjpTcGVjSW50MzJPbmx5KQorICAgIDogSlNDOjpET01KSVQ6
OkdldHRlclNldHRlcihqc1Rlc3RET01KSVRTaG9ydEF0dHIsIG51bGxwdHIsIEpTVGVzdERPTUpJ
VDo6aW5mbygpLCBET01KSVQ6OklETFJlc3VsdFR5cGVGaWx0ZXI8SURMU2hvcnQ+Ojp2YWx1ZSkK
IHsKIH0KIApAQCAtMzM3LDcgKzM1OCw3IEBAIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RE
T01KSVRVbnNpZ25lZFNob3J0QXR0ckdldHRlcihFeGVjU3RhdGUmIHN0YXRlLCBKU1RlCiB9CiAK
IFRlc3RET01KSVRVbnNpZ25lZFNob3J0QXR0ckRPTUpJVDo6VGVzdERPTUpJVFVuc2lnbmVkU2hv
cnRBdHRyRE9NSklUKCkKLSAgICA6IEpTQzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIoanNUZXN0RE9N
SklUVW5zaWduZWRTaG9ydEF0dHIsIG51bGxwdHIsIEpTVGVzdERPTUpJVDo6aW5mbygpLCBKU0M6
OlNwZWNJbnQzMk9ubHkpCisgICAgOiBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVyKGpzVGVzdERP
TUpJVFVuc2lnbmVkU2hvcnRBdHRyLCBudWxscHRyLCBKU1Rlc3RET01KSVQ6OmluZm8oKSwgRE9N
SklUOjpJRExSZXN1bHRUeXBlRmlsdGVyPElETFVuc2lnbmVkU2hvcnQ+Ojp2YWx1ZSkKIHsKIH0K
IApAQCAtMzY0LDcgKzM4NSw3IEBAIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RET01KSVRM
b25nQXR0ckdldHRlcihFeGVjU3RhdGUmIHN0YXRlLCBKU1Rlc3RET01KSVQmCiB9CiAKIFRlc3RE
T01KSVRMb25nQXR0ckRPTUpJVDo6VGVzdERPTUpJVExvbmdBdHRyRE9NSklUKCkKLSAgICA6IEpT
Qzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIoanNUZXN0RE9NSklUTG9uZ0F0dHIsIG51bGxwdHIsIEpT
VGVzdERPTUpJVDo6aW5mbygpLCBKU0M6OlNwZWNJbnQzMk9ubHkpCisgICAgOiBKU0M6OkRPTUpJ
VDo6R2V0dGVyU2V0dGVyKGpzVGVzdERPTUpJVExvbmdBdHRyLCBudWxscHRyLCBKU1Rlc3RET01K
SVQ6OmluZm8oKSwgRE9NSklUOjpJRExSZXN1bHRUeXBlRmlsdGVyPElETExvbmc+Ojp2YWx1ZSkK
IHsKIH0KIApAQCAtMzkxLDcgKzQxMiw3IEBAIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RE
T01KSVRVbnNpZ25lZExvbmdBdHRyR2V0dGVyKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVGVzCiB9CiAK
IFRlc3RET01KSVRVbnNpZ25lZExvbmdBdHRyRE9NSklUOjpUZXN0RE9NSklUVW5zaWduZWRMb25n
QXR0ckRPTUpJVCgpCi0gICAgOiBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVyKGpzVGVzdERPTUpJ
VFVuc2lnbmVkTG9uZ0F0dHIsIG51bGxwdHIsIEpTVGVzdERPTUpJVDo6aW5mbygpLCBKU0M6OlNw
ZWNCeXRlY29kZU51bWJlcikKKyAgICA6IEpTQzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIoanNUZXN0
RE9NSklUVW5zaWduZWRMb25nQXR0ciwgbnVsbHB0ciwgSlNUZXN0RE9NSklUOjppbmZvKCksIERP
TUpJVDo6SURMUmVzdWx0VHlwZUZpbHRlcjxJRExVbnNpZ25lZExvbmc+Ojp2YWx1ZSkKIHsKIH0K
IApAQCAtNDE4LDcgKzQzOSw3IEBAIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RET01KSVRM
b25nTG9uZ0F0dHJHZXR0ZXIoRXhlY1N0YXRlJiBzdGF0ZSwgSlNUZXN0RE9NCiB9CiAKIFRlc3RE
T01KSVRMb25nTG9uZ0F0dHJET01KSVQ6OlRlc3RET01KSVRMb25nTG9uZ0F0dHJET01KSVQoKQot
ICAgIDogSlNDOjpET01KSVQ6OkdldHRlclNldHRlcihqc1Rlc3RET01KSVRMb25nTG9uZ0F0dHIs
IG51bGxwdHIsIEpTVGVzdERPTUpJVDo6aW5mbygpLCBKU0M6OlNwZWNCeXRlY29kZU51bWJlcikK
KyAgICA6IEpTQzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIoanNUZXN0RE9NSklUTG9uZ0xvbmdBdHRy
LCBudWxscHRyLCBKU1Rlc3RET01KSVQ6OmluZm8oKSwgRE9NSklUOjpJRExSZXN1bHRUeXBlRmls
dGVyPElETExvbmdMb25nPjo6dmFsdWUpCiB7CiB9CiAKQEAgLTQ0NSw3ICs0NjYsNyBAQCBzdGF0
aWMgaW5saW5lIEpTVmFsdWUganNUZXN0RE9NSklUVW5zaWduZWRMb25nTG9uZ0F0dHJHZXR0ZXIo
RXhlY1N0YXRlJiBzdGF0ZSwgSgogfQogCiBUZXN0RE9NSklUVW5zaWduZWRMb25nTG9uZ0F0dHJE
T01KSVQ6OlRlc3RET01KSVRVbnNpZ25lZExvbmdMb25nQXR0ckRPTUpJVCgpCi0gICAgOiBKU0M6
OkRPTUpJVDo6R2V0dGVyU2V0dGVyKGpzVGVzdERPTUpJVFVuc2lnbmVkTG9uZ0xvbmdBdHRyLCBu
dWxscHRyLCBKU1Rlc3RET01KSVQ6OmluZm8oKSwgSlNDOjpTcGVjQnl0ZWNvZGVOdW1iZXIpCisg
ICAgOiBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVyKGpzVGVzdERPTUpJVFVuc2lnbmVkTG9uZ0xv
bmdBdHRyLCBudWxscHRyLCBKU1Rlc3RET01KSVQ6OmluZm8oKSwgRE9NSklUOjpJRExSZXN1bHRU
eXBlRmlsdGVyPElETFVuc2lnbmVkTG9uZ0xvbmc+Ojp2YWx1ZSkKIHsKIH0KIApAQCAtNDcyLDcg
KzQ5Myw3IEBAIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RET01KSVRGbG9hdEF0dHJHZXR0
ZXIoRXhlY1N0YXRlJiBzdGF0ZSwgSlNUZXN0RE9NSklUCiB9CiAKIFRlc3RET01KSVRGbG9hdEF0
dHJET01KSVQ6OlRlc3RET01KSVRGbG9hdEF0dHJET01KSVQoKQotICAgIDogSlNDOjpET01KSVQ6
OkdldHRlclNldHRlcihqc1Rlc3RET01KSVRGbG9hdEF0dHIsIG51bGxwdHIsIEpTVGVzdERPTUpJ
VDo6aW5mbygpLCBKU0M6OlNwZWNCeXRlY29kZU51bWJlcikKKyAgICA6IEpTQzo6RE9NSklUOjpH
ZXR0ZXJTZXR0ZXIoanNUZXN0RE9NSklURmxvYXRBdHRyLCBudWxscHRyLCBKU1Rlc3RET01KSVQ6
OmluZm8oKSwgRE9NSklUOjpJRExSZXN1bHRUeXBlRmlsdGVyPElETEZsb2F0Pjo6dmFsdWUpCiB7
CiB9CiAKQEAgLTQ5OSw3ICs1MjAsNyBAQCBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0RE9N
SklUVW5yZXN0cmljdGVkRmxvYXRBdHRyR2V0dGVyKEV4ZWNTdGF0ZSYgc3RhdGUsCiB9CiAKIFRl
c3RET01KSVRVbnJlc3RyaWN0ZWRGbG9hdEF0dHJET01KSVQ6OlRlc3RET01KSVRVbnJlc3RyaWN0
ZWRGbG9hdEF0dHJET01KSVQoKQotICAgIDogSlNDOjpET01KSVQ6OkdldHRlclNldHRlcihqc1Rl
c3RET01KSVRVbnJlc3RyaWN0ZWRGbG9hdEF0dHIsIG51bGxwdHIsIEpTVGVzdERPTUpJVDo6aW5m
bygpLCBKU0M6OlNwZWNCeXRlY29kZU51bWJlcikKKyAgICA6IEpTQzo6RE9NSklUOjpHZXR0ZXJT
ZXR0ZXIoanNUZXN0RE9NSklUVW5yZXN0cmljdGVkRmxvYXRBdHRyLCBudWxscHRyLCBKU1Rlc3RE
T01KSVQ6OmluZm8oKSwgRE9NSklUOjpJRExSZXN1bHRUeXBlRmlsdGVyPElETFVucmVzdHJpY3Rl
ZEZsb2F0Pjo6dmFsdWUpCiB7CiB9CiAKQEAgLTUyNiw3ICs1NDcsNyBAQCBzdGF0aWMgaW5saW5l
IEpTVmFsdWUganNUZXN0RE9NSklURG91YmxlQXR0ckdldHRlcihFeGVjU3RhdGUmIHN0YXRlLCBK
U1Rlc3RET01KSQogfQogCiBUZXN0RE9NSklURG91YmxlQXR0ckRPTUpJVDo6VGVzdERPTUpJVERv
dWJsZUF0dHJET01KSVQoKQotICAgIDogSlNDOjpET01KSVQ6OkdldHRlclNldHRlcihqc1Rlc3RE
T01KSVREb3VibGVBdHRyLCBudWxscHRyLCBKU1Rlc3RET01KSVQ6OmluZm8oKSwgSlNDOjpTcGVj
Qnl0ZWNvZGVOdW1iZXIpCisgICAgOiBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVyKGpzVGVzdERP
TUpJVERvdWJsZUF0dHIsIG51bGxwdHIsIEpTVGVzdERPTUpJVDo6aW5mbygpLCBET01KSVQ6OklE
TFJlc3VsdFR5cGVGaWx0ZXI8SURMRG91YmxlPjo6dmFsdWUpCiB7CiB9CiAKQEAgLTU1Myw3ICs1
NzQsNyBAQCBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0RE9NSklUVW5yZXN0cmljdGVkRG91
YmxlQXR0ckdldHRlcihFeGVjU3RhdGUmIHN0YXRlLAogfQogCiBUZXN0RE9NSklUVW5yZXN0cmlj
dGVkRG91YmxlQXR0ckRPTUpJVDo6VGVzdERPTUpJVFVucmVzdHJpY3RlZERvdWJsZUF0dHJET01K
SVQoKQotICAgIDogSlNDOjpET01KSVQ6OkdldHRlclNldHRlcihqc1Rlc3RET01KSVRVbnJlc3Ry
aWN0ZWREb3VibGVBdHRyLCBudWxscHRyLCBKU1Rlc3RET01KSVQ6OmluZm8oKSwgSlNDOjpTcGVj
Qnl0ZWNvZGVOdW1iZXIpCisgICAgOiBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVyKGpzVGVzdERP
TUpJVFVucmVzdHJpY3RlZERvdWJsZUF0dHIsIG51bGxwdHIsIEpTVGVzdERPTUpJVDo6aW5mbygp
LCBET01KSVQ6OklETFJlc3VsdFR5cGVGaWx0ZXI8SURMVW5yZXN0cmljdGVkRG91YmxlPjo6dmFs
dWUpCiB7CiB9CiAKQEAgLTU4MCw3ICs2MDEsNyBAQCBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNU
ZXN0RE9NSklURG9tU3RyaW5nQXR0ckdldHRlcihFeGVjU3RhdGUmIHN0YXRlLCBKU1Rlc3RETwog
fQogCiBUZXN0RE9NSklURG9tU3RyaW5nQXR0ckRPTUpJVDo6VGVzdERPTUpJVERvbVN0cmluZ0F0
dHJET01KSVQoKQotICAgIDogSlNDOjpET01KSVQ6OkdldHRlclNldHRlcihqc1Rlc3RET01KSVRE
b21TdHJpbmdBdHRyLCBudWxscHRyLCBKU1Rlc3RET01KSVQ6OmluZm8oKSwgSlNDOjpTcGVjU3Ry
aW5nKQorICAgIDogSlNDOjpET01KSVQ6OkdldHRlclNldHRlcihqc1Rlc3RET01KSVREb21TdHJp
bmdBdHRyLCBudWxscHRyLCBKU1Rlc3RET01KSVQ6OmluZm8oKSwgRE9NSklUOjpJRExSZXN1bHRU
eXBlRmlsdGVyPElETERPTVN0cmluZz46OnZhbHVlKQogewogfQogCkBAIC02MDcsNyArNjI4LDcg
QEAgc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdERPTUpJVEJ5dGVTdHJpbmdBdHRyR2V0dGVy
KEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVGVzdEQKIH0KIAogVGVzdERPTUpJVEJ5dGVTdHJpbmdBdHRy
RE9NSklUOjpUZXN0RE9NSklUQnl0ZVN0cmluZ0F0dHJET01KSVQoKQotICAgIDogSlNDOjpET01K
SVQ6OkdldHRlclNldHRlcihqc1Rlc3RET01KSVRCeXRlU3RyaW5nQXR0ciwgbnVsbHB0ciwgSlNU
ZXN0RE9NSklUOjppbmZvKCksIEpTQzo6U3BlY1N0cmluZykKKyAgICA6IEpTQzo6RE9NSklUOjpH
ZXR0ZXJTZXR0ZXIoanNUZXN0RE9NSklUQnl0ZVN0cmluZ0F0dHIsIG51bGxwdHIsIEpTVGVzdERP
TUpJVDo6aW5mbygpLCBET01KSVQ6OklETFJlc3VsdFR5cGVGaWx0ZXI8SURMQnl0ZVN0cmluZz46
OnZhbHVlKQogewogfQogCkBAIC02MzQsNyArNjU1LDcgQEAgc3RhdGljIGlubGluZSBKU1ZhbHVl
IGpzVGVzdERPTUpJVFVzdlN0cmluZ0F0dHJHZXR0ZXIoRXhlY1N0YXRlJiBzdGF0ZSwgSlNUZXN0
RE8KIH0KIAogVGVzdERPTUpJVFVzdlN0cmluZ0F0dHJET01KSVQ6OlRlc3RET01KSVRVc3ZTdHJp
bmdBdHRyRE9NSklUKCkKLSAgICA6IEpTQzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIoanNUZXN0RE9N
SklUVXN2U3RyaW5nQXR0ciwgbnVsbHB0ciwgSlNUZXN0RE9NSklUOjppbmZvKCksIEpTQzo6U3Bl
Y1N0cmluZykKKyAgICA6IEpTQzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIoanNUZXN0RE9NSklUVXN2
U3RyaW5nQXR0ciwgbnVsbHB0ciwgSlNUZXN0RE9NSklUOjppbmZvKCksIERPTUpJVDo6SURMUmVz
dWx0VHlwZUZpbHRlcjxJRExVU1ZTdHJpbmc+Ojp2YWx1ZSkKIHsKIH0KIApAQCAtNjYxLDcgKzY4
Miw3IEBAIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RET01KSVROb2RlQXR0ckdldHRlcihF
eGVjU3RhdGUmIHN0YXRlLCBKU1Rlc3RET01KSVQmCiB9CiAKIFRlc3RET01KSVROb2RlQXR0ckRP
TUpJVDo6VGVzdERPTUpJVE5vZGVBdHRyRE9NSklUKCkKLSAgICA6IEpTQzo6RE9NSklUOjpHZXR0
ZXJTZXR0ZXIoanNUZXN0RE9NSklUTm9kZUF0dHIsIG51bGxwdHIsIEpTVGVzdERPTUpJVDo6aW5m
bygpLCBTcGVjSGVhcFRvcCkKKyAgICA6IEpTQzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIoanNUZXN0
RE9NSklUTm9kZUF0dHIsIG51bGxwdHIsIEpTVGVzdERPTUpJVDo6aW5mbygpLCBET01KSVQ6OklE
TFJlc3VsdFR5cGVGaWx0ZXI8SURMSW50ZXJmYWNlPE5vZGU+Pjo6dmFsdWUpCiB7CiB9CiAKQEAg
LTY4OCw3ICs3MDksNyBAQCBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0RE9NSklUQm9vbGVh
bk51bGxhYmxlQXR0ckdldHRlcihFeGVjU3RhdGUmIHN0YXRlLCBKUwogfQogCiBUZXN0RE9NSklU
Qm9vbGVhbk51bGxhYmxlQXR0ckRPTUpJVDo6VGVzdERPTUpJVEJvb2xlYW5OdWxsYWJsZUF0dHJE
T01KSVQoKQotICAgIDogSlNDOjpET01KSVQ6OkdldHRlclNldHRlcihqc1Rlc3RET01KSVRCb29s
ZWFuTnVsbGFibGVBdHRyLCBudWxscHRyLCBKU1Rlc3RET01KSVQ6OmluZm8oKSwgKEpTQzo6U3Bl
Y0Jvb2xlYW4gfCBKU0M6OlNwZWNPdGhlcikpCisgICAgOiBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0
dGVyKGpzVGVzdERPTUpJVEJvb2xlYW5OdWxsYWJsZUF0dHIsIG51bGxwdHIsIEpTVGVzdERPTUpJ
VDo6aW5mbygpLCBET01KSVQ6OklETFJlc3VsdFR5cGVGaWx0ZXI8SURMTnVsbGFibGU8SURMQm9v
bGVhbj4+Ojp2YWx1ZSkKIHsKIH0KIApAQCAtNzE1LDcgKzczNiw3IEBAIHN0YXRpYyBpbmxpbmUg
SlNWYWx1ZSBqc1Rlc3RET01KSVRCeXRlTnVsbGFibGVBdHRyR2V0dGVyKEV4ZWNTdGF0ZSYgc3Rh
dGUsIEpTVGVzCiB9CiAKIFRlc3RET01KSVRCeXRlTnVsbGFibGVBdHRyRE9NSklUOjpUZXN0RE9N
SklUQnl0ZU51bGxhYmxlQXR0ckRPTUpJVCgpCi0gICAgOiBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0
dGVyKGpzVGVzdERPTUpJVEJ5dGVOdWxsYWJsZUF0dHIsIG51bGxwdHIsIEpTVGVzdERPTUpJVDo6
aW5mbygpLCAoSlNDOjpTcGVjSW50MzJPbmx5IHwgSlNDOjpTcGVjT3RoZXIpKQorICAgIDogSlND
OjpET01KSVQ6OkdldHRlclNldHRlcihqc1Rlc3RET01KSVRCeXRlTnVsbGFibGVBdHRyLCBudWxs
cHRyLCBKU1Rlc3RET01KSVQ6OmluZm8oKSwgRE9NSklUOjpJRExSZXN1bHRUeXBlRmlsdGVyPElE
TE51bGxhYmxlPElETEJ5dGU+Pjo6dmFsdWUpCiB7CiB9CiAKQEAgLTc0Miw3ICs3NjMsNyBAQCBz
dGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0RE9NSklUT2N0ZXROdWxsYWJsZUF0dHJHZXR0ZXIo
RXhlY1N0YXRlJiBzdGF0ZSwgSlNUZQogfQogCiBUZXN0RE9NSklUT2N0ZXROdWxsYWJsZUF0dHJE
T01KSVQ6OlRlc3RET01KSVRPY3RldE51bGxhYmxlQXR0ckRPTUpJVCgpCi0gICAgOiBKU0M6OkRP
TUpJVDo6R2V0dGVyU2V0dGVyKGpzVGVzdERPTUpJVE9jdGV0TnVsbGFibGVBdHRyLCBudWxscHRy
LCBKU1Rlc3RET01KSVQ6OmluZm8oKSwgKEpTQzo6U3BlY0ludDMyT25seSB8IEpTQzo6U3BlY090
aGVyKSkKKyAgICA6IEpTQzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIoanNUZXN0RE9NSklUT2N0ZXRO
dWxsYWJsZUF0dHIsIG51bGxwdHIsIEpTVGVzdERPTUpJVDo6aW5mbygpLCBET01KSVQ6OklETFJl
c3VsdFR5cGVGaWx0ZXI8SURMTnVsbGFibGU8SURMT2N0ZXQ+Pjo6dmFsdWUpCiB7CiB9CiAKQEAg
LTc2OSw3ICs3OTAsNyBAQCBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0RE9NSklUU2hvcnRO
dWxsYWJsZUF0dHJHZXR0ZXIoRXhlY1N0YXRlJiBzdGF0ZSwgSlNUZQogfQogCiBUZXN0RE9NSklU
U2hvcnROdWxsYWJsZUF0dHJET01KSVQ6OlRlc3RET01KSVRTaG9ydE51bGxhYmxlQXR0ckRPTUpJ
VCgpCi0gICAgOiBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVyKGpzVGVzdERPTUpJVFNob3J0TnVs
bGFibGVBdHRyLCBudWxscHRyLCBKU1Rlc3RET01KSVQ6OmluZm8oKSwgKEpTQzo6U3BlY0ludDMy
T25seSB8IEpTQzo6U3BlY090aGVyKSkKKyAgICA6IEpTQzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIo
anNUZXN0RE9NSklUU2hvcnROdWxsYWJsZUF0dHIsIG51bGxwdHIsIEpTVGVzdERPTUpJVDo6aW5m
bygpLCBET01KSVQ6OklETFJlc3VsdFR5cGVGaWx0ZXI8SURMTnVsbGFibGU8SURMU2hvcnQ+Pjo6
dmFsdWUpCiB7CiB9CiAKQEAgLTc5Niw3ICs4MTcsNyBAQCBzdGF0aWMgaW5saW5lIEpTVmFsdWUg
anNUZXN0RE9NSklUVW5zaWduZWRTaG9ydE51bGxhYmxlQXR0ckdldHRlcihFeGVjU3RhdGUmIHN0
YQogfQogCiBUZXN0RE9NSklUVW5zaWduZWRTaG9ydE51bGxhYmxlQXR0ckRPTUpJVDo6VGVzdERP
TUpJVFVuc2lnbmVkU2hvcnROdWxsYWJsZUF0dHJET01KSVQoKQotICAgIDogSlNDOjpET01KSVQ6
OkdldHRlclNldHRlcihqc1Rlc3RET01KSVRVbnNpZ25lZFNob3J0TnVsbGFibGVBdHRyLCBudWxs
cHRyLCBKU1Rlc3RET01KSVQ6OmluZm8oKSwgKEpTQzo6U3BlY0ludDMyT25seSB8IEpTQzo6U3Bl
Y090aGVyKSkKKyAgICA6IEpTQzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIoanNUZXN0RE9NSklUVW5z
aWduZWRTaG9ydE51bGxhYmxlQXR0ciwgbnVsbHB0ciwgSlNUZXN0RE9NSklUOjppbmZvKCksIERP
TUpJVDo6SURMUmVzdWx0VHlwZUZpbHRlcjxJRExOdWxsYWJsZTxJRExVbnNpZ25lZFNob3J0Pj46
OnZhbHVlKQogewogfQogCkBAIC04MjMsNyArODQ0LDcgQEAgc3RhdGljIGlubGluZSBKU1ZhbHVl
IGpzVGVzdERPTUpJVExvbmdOdWxsYWJsZUF0dHJHZXR0ZXIoRXhlY1N0YXRlJiBzdGF0ZSwgSlNU
ZXMKIH0KIAogVGVzdERPTUpJVExvbmdOdWxsYWJsZUF0dHJET01KSVQ6OlRlc3RET01KSVRMb25n
TnVsbGFibGVBdHRyRE9NSklUKCkKLSAgICA6IEpTQzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIoanNU
ZXN0RE9NSklUTG9uZ051bGxhYmxlQXR0ciwgbnVsbHB0ciwgSlNUZXN0RE9NSklUOjppbmZvKCks
IChKU0M6OlNwZWNJbnQzMk9ubHkgfCBKU0M6OlNwZWNPdGhlcikpCisgICAgOiBKU0M6OkRPTUpJ
VDo6R2V0dGVyU2V0dGVyKGpzVGVzdERPTUpJVExvbmdOdWxsYWJsZUF0dHIsIG51bGxwdHIsIEpT
VGVzdERPTUpJVDo6aW5mbygpLCBET01KSVQ6OklETFJlc3VsdFR5cGVGaWx0ZXI8SURMTnVsbGFi
bGU8SURMTG9uZz4+Ojp2YWx1ZSkKIHsKIH0KIApAQCAtODUwLDcgKzg3MSw3IEBAIHN0YXRpYyBp
bmxpbmUgSlNWYWx1ZSBqc1Rlc3RET01KSVRVbnNpZ25lZExvbmdOdWxsYWJsZUF0dHJHZXR0ZXIo
RXhlY1N0YXRlJiBzdGF0CiB9CiAKIFRlc3RET01KSVRVbnNpZ25lZExvbmdOdWxsYWJsZUF0dHJE
T01KSVQ6OlRlc3RET01KSVRVbnNpZ25lZExvbmdOdWxsYWJsZUF0dHJET01KSVQoKQotICAgIDog
SlNDOjpET01KSVQ6OkdldHRlclNldHRlcihqc1Rlc3RET01KSVRVbnNpZ25lZExvbmdOdWxsYWJs
ZUF0dHIsIG51bGxwdHIsIEpTVGVzdERPTUpJVDo6aW5mbygpLCAoSlNDOjpTcGVjQnl0ZWNvZGVO
dW1iZXIgfCBKU0M6OlNwZWNPdGhlcikpCisgICAgOiBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVy
KGpzVGVzdERPTUpJVFVuc2lnbmVkTG9uZ051bGxhYmxlQXR0ciwgbnVsbHB0ciwgSlNUZXN0RE9N
SklUOjppbmZvKCksIERPTUpJVDo6SURMUmVzdWx0VHlwZUZpbHRlcjxJRExOdWxsYWJsZTxJRExV
bnNpZ25lZExvbmc+Pjo6dmFsdWUpCiB7CiB9CiAKQEAgLTg3Nyw3ICs4OTgsNyBAQCBzdGF0aWMg
aW5saW5lIEpTVmFsdWUganNUZXN0RE9NSklUTG9uZ0xvbmdOdWxsYWJsZUF0dHJHZXR0ZXIoRXhl
Y1N0YXRlJiBzdGF0ZSwgSgogfQogCiBUZXN0RE9NSklUTG9uZ0xvbmdOdWxsYWJsZUF0dHJET01K
SVQ6OlRlc3RET01KSVRMb25nTG9uZ051bGxhYmxlQXR0ckRPTUpJVCgpCi0gICAgOiBKU0M6OkRP
TUpJVDo6R2V0dGVyU2V0dGVyKGpzVGVzdERPTUpJVExvbmdMb25nTnVsbGFibGVBdHRyLCBudWxs
cHRyLCBKU1Rlc3RET01KSVQ6OmluZm8oKSwgKEpTQzo6U3BlY0J5dGVjb2RlTnVtYmVyIHwgSlND
OjpTcGVjT3RoZXIpKQorICAgIDogSlNDOjpET01KSVQ6OkdldHRlclNldHRlcihqc1Rlc3RET01K
SVRMb25nTG9uZ051bGxhYmxlQXR0ciwgbnVsbHB0ciwgSlNUZXN0RE9NSklUOjppbmZvKCksIERP
TUpJVDo6SURMUmVzdWx0VHlwZUZpbHRlcjxJRExOdWxsYWJsZTxJRExMb25nTG9uZz4+Ojp2YWx1
ZSkKIHsKIH0KIApAQCAtOTA0LDcgKzkyNSw3IEBAIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rl
c3RET01KSVRVbnNpZ25lZExvbmdMb25nTnVsbGFibGVBdHRyR2V0dGVyKEV4ZWNTdGF0ZSYKIH0K
IAogVGVzdERPTUpJVFVuc2lnbmVkTG9uZ0xvbmdOdWxsYWJsZUF0dHJET01KSVQ6OlRlc3RET01K
SVRVbnNpZ25lZExvbmdMb25nTnVsbGFibGVBdHRyRE9NSklUKCkKLSAgICA6IEpTQzo6RE9NSklU
OjpHZXR0ZXJTZXR0ZXIoanNUZXN0RE9NSklUVW5zaWduZWRMb25nTG9uZ051bGxhYmxlQXR0ciwg
bnVsbHB0ciwgSlNUZXN0RE9NSklUOjppbmZvKCksIChKU0M6OlNwZWNCeXRlY29kZU51bWJlciB8
IEpTQzo6U3BlY090aGVyKSkKKyAgICA6IEpTQzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIoanNUZXN0
RE9NSklUVW5zaWduZWRMb25nTG9uZ051bGxhYmxlQXR0ciwgbnVsbHB0ciwgSlNUZXN0RE9NSklU
OjppbmZvKCksIERPTUpJVDo6SURMUmVzdWx0VHlwZUZpbHRlcjxJRExOdWxsYWJsZTxJRExVbnNp
Z25lZExvbmdMb25nPj46OnZhbHVlKQogewogfQogCkBAIC05MzEsNyArOTUyLDcgQEAgc3RhdGlj
IGlubGluZSBKU1ZhbHVlIGpzVGVzdERPTUpJVEZsb2F0TnVsbGFibGVBdHRyR2V0dGVyKEV4ZWNT
dGF0ZSYgc3RhdGUsIEpTVGUKIH0KIAogVGVzdERPTUpJVEZsb2F0TnVsbGFibGVBdHRyRE9NSklU
OjpUZXN0RE9NSklURmxvYXROdWxsYWJsZUF0dHJET01KSVQoKQotICAgIDogSlNDOjpET01KSVQ6
OkdldHRlclNldHRlcihqc1Rlc3RET01KSVRGbG9hdE51bGxhYmxlQXR0ciwgbnVsbHB0ciwgSlNU
ZXN0RE9NSklUOjppbmZvKCksIChKU0M6OlNwZWNCeXRlY29kZU51bWJlciB8IEpTQzo6U3BlY090
aGVyKSkKKyAgICA6IEpTQzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIoanNUZXN0RE9NSklURmxvYXRO
dWxsYWJsZUF0dHIsIG51bGxwdHIsIEpTVGVzdERPTUpJVDo6aW5mbygpLCBET01KSVQ6OklETFJl
c3VsdFR5cGVGaWx0ZXI8SURMTnVsbGFibGU8SURMRmxvYXQ+Pjo6dmFsdWUpCiB7CiB9CiAKQEAg
LTk1OCw3ICs5NzksNyBAQCBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0RE9NSklUVW5yZXN0
cmljdGVkRmxvYXROdWxsYWJsZUF0dHJHZXR0ZXIoRXhlY1N0YXRlJgogfQogCiBUZXN0RE9NSklU
VW5yZXN0cmljdGVkRmxvYXROdWxsYWJsZUF0dHJET01KSVQ6OlRlc3RET01KSVRVbnJlc3RyaWN0
ZWRGbG9hdE51bGxhYmxlQXR0ckRPTUpJVCgpCi0gICAgOiBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0
dGVyKGpzVGVzdERPTUpJVFVucmVzdHJpY3RlZEZsb2F0TnVsbGFibGVBdHRyLCBudWxscHRyLCBK
U1Rlc3RET01KSVQ6OmluZm8oKSwgKEpTQzo6U3BlY0J5dGVjb2RlTnVtYmVyIHwgSlNDOjpTcGVj
T3RoZXIpKQorICAgIDogSlNDOjpET01KSVQ6OkdldHRlclNldHRlcihqc1Rlc3RET01KSVRVbnJl
c3RyaWN0ZWRGbG9hdE51bGxhYmxlQXR0ciwgbnVsbHB0ciwgSlNUZXN0RE9NSklUOjppbmZvKCks
IERPTUpJVDo6SURMUmVzdWx0VHlwZUZpbHRlcjxJRExOdWxsYWJsZTxJRExVbnJlc3RyaWN0ZWRG
bG9hdD4+Ojp2YWx1ZSkKIHsKIH0KIApAQCAtOTg1LDcgKzEwMDYsNyBAQCBzdGF0aWMgaW5saW5l
IEpTVmFsdWUganNUZXN0RE9NSklURG91YmxlTnVsbGFibGVBdHRyR2V0dGVyKEV4ZWNTdGF0ZSYg
c3RhdGUsIEpTVAogfQogCiBUZXN0RE9NSklURG91YmxlTnVsbGFibGVBdHRyRE9NSklUOjpUZXN0
RE9NSklURG91YmxlTnVsbGFibGVBdHRyRE9NSklUKCkKLSAgICA6IEpTQzo6RE9NSklUOjpHZXR0
ZXJTZXR0ZXIoanNUZXN0RE9NSklURG91YmxlTnVsbGFibGVBdHRyLCBudWxscHRyLCBKU1Rlc3RE
T01KSVQ6OmluZm8oKSwgKEpTQzo6U3BlY0J5dGVjb2RlTnVtYmVyIHwgSlNDOjpTcGVjT3RoZXIp
KQorICAgIDogSlNDOjpET01KSVQ6OkdldHRlclNldHRlcihqc1Rlc3RET01KSVREb3VibGVOdWxs
YWJsZUF0dHIsIG51bGxwdHIsIEpTVGVzdERPTUpJVDo6aW5mbygpLCBET01KSVQ6OklETFJlc3Vs
dFR5cGVGaWx0ZXI8SURMTnVsbGFibGU8SURMRG91YmxlPj46OnZhbHVlKQogewogfQogCkBAIC0x
MDEyLDcgKzEwMzMsNyBAQCBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0RE9NSklUVW5yZXN0
cmljdGVkRG91YmxlTnVsbGFibGVBdHRyR2V0dGVyKEV4ZWNTdGF0ZQogfQogCiBUZXN0RE9NSklU
VW5yZXN0cmljdGVkRG91YmxlTnVsbGFibGVBdHRyRE9NSklUOjpUZXN0RE9NSklUVW5yZXN0cmlj
dGVkRG91YmxlTnVsbGFibGVBdHRyRE9NSklUKCkKLSAgICA6IEpTQzo6RE9NSklUOjpHZXR0ZXJT
ZXR0ZXIoanNUZXN0RE9NSklUVW5yZXN0cmljdGVkRG91YmxlTnVsbGFibGVBdHRyLCBudWxscHRy
LCBKU1Rlc3RET01KSVQ6OmluZm8oKSwgKEpTQzo6U3BlY0J5dGVjb2RlTnVtYmVyIHwgSlNDOjpT
cGVjT3RoZXIpKQorICAgIDogSlNDOjpET01KSVQ6OkdldHRlclNldHRlcihqc1Rlc3RET01KSVRV
bnJlc3RyaWN0ZWREb3VibGVOdWxsYWJsZUF0dHIsIG51bGxwdHIsIEpTVGVzdERPTUpJVDo6aW5m
bygpLCBET01KSVQ6OklETFJlc3VsdFR5cGVGaWx0ZXI8SURMTnVsbGFibGU8SURMVW5yZXN0cmlj
dGVkRG91YmxlPj46OnZhbHVlKQogewogfQogCkBAIC0xMDM5LDcgKzEwNjAsNyBAQCBzdGF0aWMg
aW5saW5lIEpTVmFsdWUganNUZXN0RE9NSklURG9tU3RyaW5nTnVsbGFibGVBdHRyR2V0dGVyKEV4
ZWNTdGF0ZSYgc3RhdGUsCiB9CiAKIFRlc3RET01KSVREb21TdHJpbmdOdWxsYWJsZUF0dHJET01K
SVQ6OlRlc3RET01KSVREb21TdHJpbmdOdWxsYWJsZUF0dHJET01KSVQoKQotICAgIDogSlNDOjpE
T01KSVQ6OkdldHRlclNldHRlcihqc1Rlc3RET01KSVREb21TdHJpbmdOdWxsYWJsZUF0dHIsIG51
bGxwdHIsIEpTVGVzdERPTUpJVDo6aW5mbygpLCAoSlNDOjpTcGVjU3RyaW5nIHwgSlNDOjpTcGVj
T3RoZXIpKQorICAgIDogSlNDOjpET01KSVQ6OkdldHRlclNldHRlcihqc1Rlc3RET01KSVREb21T
dHJpbmdOdWxsYWJsZUF0dHIsIG51bGxwdHIsIEpTVGVzdERPTUpJVDo6aW5mbygpLCBET01KSVQ6
OklETFJlc3VsdFR5cGVGaWx0ZXI8SURMTnVsbGFibGU8SURMRE9NU3RyaW5nPj46OnZhbHVlKQog
ewogfQogCkBAIC0xMDY2LDcgKzEwODcsNyBAQCBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0
RE9NSklUQnl0ZVN0cmluZ051bGxhYmxlQXR0ckdldHRlcihFeGVjU3RhdGUmIHN0YXRlLAogfQog
CiBUZXN0RE9NSklUQnl0ZVN0cmluZ051bGxhYmxlQXR0ckRPTUpJVDo6VGVzdERPTUpJVEJ5dGVT
dHJpbmdOdWxsYWJsZUF0dHJET01KSVQoKQotICAgIDogSlNDOjpET01KSVQ6OkdldHRlclNldHRl
cihqc1Rlc3RET01KSVRCeXRlU3RyaW5nTnVsbGFibGVBdHRyLCBudWxscHRyLCBKU1Rlc3RET01K
SVQ6OmluZm8oKSwgKEpTQzo6U3BlY1N0cmluZyB8IEpTQzo6U3BlY090aGVyKSkKKyAgICA6IEpT
Qzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIoanNUZXN0RE9NSklUQnl0ZVN0cmluZ051bGxhYmxlQXR0
ciwgbnVsbHB0ciwgSlNUZXN0RE9NSklUOjppbmZvKCksIERPTUpJVDo6SURMUmVzdWx0VHlwZUZp
bHRlcjxJRExOdWxsYWJsZTxJRExCeXRlU3RyaW5nPj46OnZhbHVlKQogewogfQogCkBAIC0xMDkz
LDcgKzExMTQsNyBAQCBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0RE9NSklUVXN2U3RyaW5n
TnVsbGFibGVBdHRyR2V0dGVyKEV4ZWNTdGF0ZSYgc3RhdGUsCiB9CiAKIFRlc3RET01KSVRVc3ZT
dHJpbmdOdWxsYWJsZUF0dHJET01KSVQ6OlRlc3RET01KSVRVc3ZTdHJpbmdOdWxsYWJsZUF0dHJE
T01KSVQoKQotICAgIDogSlNDOjpET01KSVQ6OkdldHRlclNldHRlcihqc1Rlc3RET01KSVRVc3ZT
dHJpbmdOdWxsYWJsZUF0dHIsIG51bGxwdHIsIEpTVGVzdERPTUpJVDo6aW5mbygpLCAoSlNDOjpT
cGVjU3RyaW5nIHwgSlNDOjpTcGVjT3RoZXIpKQorICAgIDogSlNDOjpET01KSVQ6OkdldHRlclNl
dHRlcihqc1Rlc3RET01KSVRVc3ZTdHJpbmdOdWxsYWJsZUF0dHIsIG51bGxwdHIsIEpTVGVzdERP
TUpJVDo6aW5mbygpLCBET01KSVQ6OklETFJlc3VsdFR5cGVGaWx0ZXI8SURMTnVsbGFibGU8SURM
VVNWU3RyaW5nPj46OnZhbHVlKQogewogfQogCkBAIC0xMTIwLDcgKzExNDEsNyBAQCBzdGF0aWMg
aW5saW5lIEpTVmFsdWUganNUZXN0RE9NSklUTm9kZU51bGxhYmxlQXR0ckdldHRlcihFeGVjU3Rh
dGUmIHN0YXRlLCBKU1RlcwogfQogCiBUZXN0RE9NSklUTm9kZU51bGxhYmxlQXR0ckRPTUpJVDo6
VGVzdERPTUpJVE5vZGVOdWxsYWJsZUF0dHJET01KSVQoKQotICAgIDogSlNDOjpET01KSVQ6Okdl
dHRlclNldHRlcihqc1Rlc3RET01KSVROb2RlTnVsbGFibGVBdHRyLCBudWxscHRyLCBKU1Rlc3RE
T01KSVQ6OmluZm8oKSwgU3BlY0hlYXBUb3ApCisgICAgOiBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0
dGVyKGpzVGVzdERPTUpJVE5vZGVOdWxsYWJsZUF0dHIsIG51bGxwdHIsIEpTVGVzdERPTUpJVDo6
aW5mbygpLCBET01KSVQ6OklETFJlc3VsdFR5cGVGaWx0ZXI8SURMTnVsbGFibGU8SURMSW50ZXJm
YWNlPE5vZGU+Pj46OnZhbHVlKQogewogfQogCkBAIC0xMTU5LDYgKzExODAsNDAgQEAgSlNWYWx1
ZSBKU1Rlc3RET01KSVQ6OmdldENvbnN0cnVjdG9yKFZNJiB2bSwgY29uc3QgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCkKICAgICByZXR1cm4gZ2V0RE9NQ29uc3RydWN0b3I8SlNUZXN0RE9N
SklUQ29uc3RydWN0b3I+KHZtLCAqanNDYXN0PGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xv
YmFsT2JqZWN0KSk7CiB9CiAKK3N0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rl
c3RET01KSVRQcm90b3R5cGVGdW5jdGlvbkdldEF0dHJpYnV0ZUNhbGxlcihKU0M6OkV4ZWNTdGF0
ZSosIEpTVGVzdERPTUpJVCosIEpTQzo6VGhyb3dTY29wZSYpOworCitFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGpzVGVzdERPTUpJVFByb3RvdHlwZUZ1bmN0aW9uR2V0QXR0cmlidXRlKEV4
ZWNTdGF0ZSogc3RhdGUpCit7CisgICAgcmV0dXJuIEJpbmRpbmdDYWxsZXI8SlNUZXN0RE9NSklU
Pjo6Y2FsbE9wZXJhdGlvbjxqc1Rlc3RET01KSVRQcm90b3R5cGVGdW5jdGlvbkdldEF0dHJpYnV0
ZUNhbGxlcj4oc3RhdGUsICJnZXRBdHRyaWJ1dGUiKTsKK30KKworc3RhdGljIGlubGluZSBKU0M6
OkVuY29kZWRKU1ZhbHVlIGpzVGVzdERPTUpJVFByb3RvdHlwZUZ1bmN0aW9uR2V0QXR0cmlidXRl
Q2FsbGVyKEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgSlNUZXN0RE9NSklUKiBjYXN0ZWRUaGlzLCBK
U0M6OlRocm93U2NvcGUmIHRocm93U2NvcGUpCit7CisgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsK
KyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRo
aXMtPndyYXBwZWQoKTsKKyAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmFyZ3VtZW50Q291bnQoKSA8
IDEpKQorICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlLCBjcmVh
dGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOworICAgIGF1dG8gbmFtZSA9IGNvbnZl
cnQ8SURMRE9NU3RyaW5nPigqc3RhdGUsIHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgwKSwgU3Ry
aW5nQ29udmVyc2lvbkNvbmZpZ3VyYXRpb246Ok5vcm1hbCk7CisgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKKyAgICBKU1ZhbHVlIHJlc3VsdCA9
IHRvSlM8SURMTnVsbGFibGU8SURMRE9NU3RyaW5nPj4oKnN0YXRlLCBpbXBsLmdldEF0dHJpYnV0
ZShXVEZNb3ZlKG5hbWUpKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwor
fQorCitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgdW5zYWZlSnNUZXN0RE9NSklU
UHJvdG90eXBlRnVuY3Rpb25HZXRBdHRyaWJ1dGUoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCBKU1Rl
c3RET01KSVQqIGNhc3RlZFRoaXMsIERPTUpJVDo6SURMSlNBcmd1bWVudFR5cGU8SURMRE9NU3Ry
aW5nPiBlbmNvZGVkTmFtZSkKK3sKKyAgICBVTlVTRURfUEFSQU0oc3RhdGUpOworICAgIFZNJiB2
bSA9IHN0YXRlLT52bSgpOworICAgIEpTQzo6TmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcigm
dm0sIHN0YXRlKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CisgICAgYXV0byYgaW1wbCA9IGNhc3Rl
ZFRoaXMtPndyYXBwZWQoKTsKKyAgICBhdXRvIG5hbWUgPSBET01KSVQ6OkRpcmVjdENvbnZlcnRl
cjxJRExET01TdHJpbmc+OjpkaXJlY3RDb252ZXJ0PFN0cmluZ0NvbnZlcnNpb25Db25maWd1cmF0
aW9uOjpOb3JtYWw+KCpzdGF0ZSwgZW5jb2RlZE5hbWUpOworICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CisgICAgSlNWYWx1ZSByZXN1bHQgPSB0
b0pTPElETE51bGxhYmxlPElETERPTVN0cmluZz4+KCpzdGF0ZSwgaW1wbC5nZXRBdHRyaWJ1dGUo
V1RGTW92ZShuYW1lKSkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKK30K
Kwogdm9pZCBKU1Rlc3RET01KSVQ6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90Vmlz
aXRvciYgdmlzaXRvcikKIHsKICAgICBhdXRvKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTVGVzdERP
TUpJVCo+KGNlbGwpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L1Rlc3RET01KSVQuaWRsIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L1Rlc3RET01KSVQuaWRsCmluZGV4IGJlN2VkMDRmZjYzZGU2ODZiYzg3NjQ4MjgyYjZhYWY2
NGMyNzczZTcuLmE1MzE0ODhkYzgxYzFiODc3ZjBlZTNmOTRmOGFhYjM4YWE2OTQzOWIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0RE9NSklULmlk
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdERPTUpJVC5p
ZGwKQEAgLTYzLDQgKzYzLDYgQEAgaW50ZXJmYWNlIFRlc3RET01KSVQgOiBOb2RlIHsKICAgICBb
RE9NSklUXSByZWFkb25seSBhdHRyaWJ1dGUgQnl0ZVN0cmluZz8gYnl0ZVN0cmluZ051bGxhYmxl
QXR0cjsKICAgICBbRE9NSklUXSByZWFkb25seSBhdHRyaWJ1dGUgVVNWU3RyaW5nPyB1c3ZTdHJp
bmdOdWxsYWJsZUF0dHI7CiAgICAgW0RPTUpJVF0gcmVhZG9ubHkgYXR0cmlidXRlIE5vZGU/IG5v
ZGVOdWxsYWJsZUF0dHI7CisKKyAgICBbRE9NSklUPVNpZ25hdHVyZV0gRE9NU3RyaW5nPyBnZXRB
dHRyaWJ1dGUoRE9NU3RyaW5nIG5hbWUpOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9FbGVtZW50LmlkbCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmlkbAppbmRleCA3
MDU2MTczOGI5NzQ5YThkNzRhMGYxN2NhNjNhN2Y4ZmYxOTVlMWM2Li40ODhjOTkxYjRiYTY2YjUy
NDg4MzgwMjE2MDFjMGMwZjFkYTMyMDJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20v
RWxlbWVudC5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaWRsCkBAIC0yNiwy
MCArMjYsMjAgQEAKIF0gaW50ZXJmYWNlIEVsZW1lbnQgOiBOb2RlIHsKICAgICByZWFkb25seSBh
dHRyaWJ1dGUgRE9NU3RyaW5nPyB0YWdOYW1lOwogCi0gICAgRE9NU3RyaW5nPyBnZXRBdHRyaWJ1
dGUoRE9NU3RyaW5nIG5hbWUpOworICAgIFtET01KSVQ9U2lnbmF0dXJlXSBET01TdHJpbmc/IGdl
dEF0dHJpYnV0ZShET01TdHJpbmcgbmFtZSk7CiAKICAgICBbQ0VSZWFjdGlvbnMsIE1heVRocm93
RXhjZXB0aW9uXSB2b2lkIHNldEF0dHJpYnV0ZShET01TdHJpbmcgbmFtZSwgRE9NU3RyaW5nIHZh
bHVlKTsKIAogICAgIFtDRVJlYWN0aW9uc10gdm9pZCByZW1vdmVBdHRyaWJ1dGUoRE9NU3RyaW5n
IG5hbWUpOwotICAgIEF0dHI/IGdldEF0dHJpYnV0ZU5vZGUoRE9NU3RyaW5nIG5hbWUpOworICAg
IFtET01KSVQ9U2lnbmF0dXJlXSBBdHRyPyBnZXRBdHRyaWJ1dGVOb2RlKERPTVN0cmluZyBuYW1l
KTsKIAogICAgIFtDRVJlYWN0aW9ucywgTWF5VGhyb3dFeGNlcHRpb25dIEF0dHI/IHNldEF0dHJp
YnV0ZU5vZGUoQXR0ciBuZXdBdHRyKTsKICAgICBbQ0VSZWFjdGlvbnMsIE1heVRocm93RXhjZXB0
aW9uXSBBdHRyIHJlbW92ZUF0dHJpYnV0ZU5vZGUoQXR0ciBvbGRBdHRyKTsKIAotICAgIEhUTUxD
b2xsZWN0aW9uIGdldEVsZW1lbnRzQnlUYWdOYW1lKERPTVN0cmluZyBuYW1lKTsKKyAgICBbRE9N
SklUPVNpZ25hdHVyZV0gSFRNTENvbGxlY3Rpb24gZ2V0RWxlbWVudHNCeVRhZ05hbWUoRE9NU3Ry
aW5nIG5hbWUpOwogCiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIE5hbWVkTm9kZU1hcCBhdHRyaWJ1
dGVzOwotICAgIGJvb2xlYW4gaGFzQXR0cmlidXRlcygpOworICAgIFtET01KSVQ9U2lnbmF0dXJl
XSBib29sZWFuIGhhc0F0dHJpYnV0ZXMoKTsKIAogICAgIERPTVN0cmluZz8gZ2V0QXR0cmlidXRl
TlMoRE9NU3RyaW5nPyBuYW1lc3BhY2VVUkksIERPTVN0cmluZyBsb2NhbE5hbWUpOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb21qaXQvRE9NSklUQWJzdHJhY3RIZWFwUmVwb3NpdG9y
eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb21qaXQvRE9NSklUQWJzdHJhY3RIZWFwUmVwb3NpdG9y
eS5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDgzZmJhODk3MTNiODY2M2Q0ZDhm
MjdlZGNiZjc0YWZlNjMxODJkMzEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9taml0L0RPTUpJVEFic3RyYWN0SGVhcFJlcG9z
aXRvcnkuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNzAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgot
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgot
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNs
dWRlICJET01KSVRBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmgiCi0KLSNpbmNsdWRlIDxkb21qaXQv
RE9NSklUQWJzdHJhY3RIZWFwLmg+Ci0jaW5jbHVkZSA8d3RmL0RhdGFMb2cuaD4KLSNpbmNsdWRl
IDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KLQotI2lmIEVOQUJMRShKSVQpCi0KLW5hbWVzcGFjZSBX
ZWJDb3JlIHsgbmFtZXNwYWNlIERPTUpJVCB7Ci0KLXN0YXRpYyBjb25zdCBib29sIHZlcmJvc2Ug
PSBmYWxzZTsKLQotQWJzdHJhY3RIZWFwUmVwb3NpdG9yeTo6QWJzdHJhY3RIZWFwUmVwb3NpdG9y
eSgpCi17Ci0gICAgSlNDOjpET01KSVQ6OkFic3RyYWN0SGVhcCBET01IZWFwKCJET00iKTsKLSNk
ZWZpbmUgRE9NSklUX0RFRklORV9IRUFQKG5hbWUsIHBhcmVudCkgSlNDOjpET01KSVQ6OkFic3Ry
YWN0SGVhcCBuYW1lIyNIZWFwKCNuYW1lKTsKLSAgICBET01KSVRfQUJTVFJBQ1RfSEVBUF9MSVNU
KERPTUpJVF9ERUZJTkVfSEVBUCkKLSN1bmRlZiBET01KSVRfREVGSU5FX0hFQVAKLQotI2RlZmlu
ZSBET01KSVRfSU5JVElBTElaRV9IRUFQKG5hbWUsIHBhcmVudCkgbmFtZSMjSGVhcC5zZXRQYXJl
bnQoJnBhcmVudCMjSGVhcCk7Ci0gICAgRE9NSklUX0FCU1RSQUNUX0hFQVBfTElTVChET01KSVRf
SU5JVElBTElaRV9IRUFQKQotI3VuZGVmIERPTUpJVF9JTklUSUFMSVpFX0hFQVAKLQotICAgIERP
TUhlYXAuY29tcHV0ZSgwKTsKLQotI2RlZmluZSBET01KSVRfSU5JVElBTElaRV9NRU1CRVIobmFt
ZSwgcGFyZW50KSBuYW1lID0gbmFtZSMjSGVhcC5yYW5nZSgpOwotICAgIERPTUpJVF9BQlNUUkFD
VF9IRUFQX0xJU1QoRE9NSklUX0lOSVRJQUxJWkVfTUVNQkVSKQotI3VuZGVmIERPTUpJVF9JTklU
SUFMSVpFX01FTUJFUgotCi0gICAgaWYgKHZlcmJvc2UpIHsKLSAgICAgICAgZGF0YUxvZygiRE9N
SklUIEhlYXAgUmVwb3NpdG9yeTpcbiIpOwotICAgICAgICBET01IZWFwLmRlZXBEdW1wKFdURjo6
ZGF0YUZpbGUoKSk7Ci0gICAgfQotfQotCi1jb25zdCBBYnN0cmFjdEhlYXBSZXBvc2l0b3J5JiBB
YnN0cmFjdEhlYXBSZXBvc2l0b3J5OjpzaGFyZWQoKQotewotICAgIHN0YXRpYyBOZXZlckRlc3Ry
b3llZDxBYnN0cmFjdEhlYXBSZXBvc2l0b3J5PiByZXBvc2l0b3J5OwotICAgIHJldHVybiByZXBv
c2l0b3J5LmdldCgpOwotfQotCi19IH0KLQotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9kb21qaXQvRE9NSklUQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5oIGIvU291cmNlL1dlYkNv
cmUvZG9taml0L0RPTUpJVEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaApkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggODE5MGExYTk0YmJjNzlkZTVmMmUzYmVkMDk5ODM0NzlmYTRiZDY1Ni4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9kb21qaXQvRE9NSklUQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5oCisrKyAvZGV2L251bGwK
QEAgLTEsNjYgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFy
ZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
LSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgot
ICovCi0KLSNwcmFnbWEgb25jZQotCi0jaW5jbHVkZSA8ZG9taml0L0RPTUpJVEhlYXBSYW5nZS5o
PgotI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgotI2luY2x1ZGUgPHd0Zi9Ob25jb3B5
YWJsZS5oPgotCi0jaWYgRU5BQkxFKEpJVCkKLQotbmFtZXNwYWNlIFdlYkNvcmUgeyBuYW1lc3Bh
Y2UgRE9NSklUIHsKLQotLy8gRGVzY3JpYmUgeW91ciBhYnN0cmFjdCBoZWFwIGhpZXJhcmNoeSBo
ZXJlLgotLy8gVihBYnN0cmFjdEhlYXBOYW1lLCBQYXJlbnQpCi0jZGVmaW5lIERPTUpJVF9BQlNU
UkFDVF9IRUFQX0xJU1QoVikgXAotICAgIFYoTm9kZSwgRE9NKSBcCi0gICAgVihOb2RlX2ZpcnN0
Q2hpbGQsIE5vZGUpIFwKLSAgICBWKE5vZGVfbGFzdENoaWxkLCBOb2RlKSBcCi0gICAgVihOb2Rl
X3BhcmVudE5vZGUsIE5vZGUpIFwKLSAgICBWKE5vZGVfbmV4dFNpYmxpbmcsIE5vZGUpIFwKLSAg
ICBWKE5vZGVfcHJldmlvdXNTaWJsaW5nLCBOb2RlKSBcCi0gICAgVihOb2RlX293bmVyRG9jdW1l
bnQsIE5vZGUpIFwKLSAgICBWKERvY3VtZW50LCBET00pIFwKLSAgICBWKERvY3VtZW50X2RvY3Vt
ZW50RWxlbWVudCwgRG9jdW1lbnQpIFwKLQotCi1jbGFzcyBBYnN0cmFjdEhlYXBSZXBvc2l0b3J5
IHsKLSAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShBYnN0cmFjdEhlYXBSZXBvc2l0b3J5KTsKLXB1
YmxpYzoKLSAgICBzdGF0aWMgY29uc3QgQWJzdHJhY3RIZWFwUmVwb3NpdG9yeSYgc2hhcmVkKCk7
Ci0KLSAgICBKU0M6OkRPTUpJVDo6SGVhcFJhbmdlIERPTTsKLQotI2RlZmluZSBET01KSVRfREVG
SU5FX01FTUJFUihuYW1lLCBwYXJlbnQpIEpTQzo6RE9NSklUOjpIZWFwUmFuZ2UgbmFtZTsKLSAg
ICBET01KSVRfQUJTVFJBQ1RfSEVBUF9MSVNUKERPTUpJVF9ERUZJTkVfTUVNQkVSKQotI3VuZGVm
IERPTUpJVF9ERUZJTkVfTUVNQkVSCi0KLSAgICBBYnN0cmFjdEhlYXBSZXBvc2l0b3J5KCk7Ci19
OwotCi19IH0KLQotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb21qaXQvRE9N
SklUQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS55YW1sIGIvU291cmNlL1dlYkNvcmUvZG9taml0L0RP
TUpJVEFic3RyYWN0SGVhcFJlcG9zaXRvcnkueWFtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41MmM1ODQ1ZTA3ODY3
MGRkZGFjOTc3Mjk5OWNjYjhlYTdkMDFiZGYzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YkNvcmUvZG9taml0L0RPTUpJVEFic3RyYWN0SGVhcFJlcG9zaXRvcnkueWFtbApAQCAtMCwwICsx
LDExIEBACitET006CisgICAgVHJlZToKKyAgICAgICAgTm9kZToKKyAgICAgICAgICAgIC0gTm9k
ZV9maXJzdENoaWxkCisgICAgICAgICAgICAtIE5vZGVfbGFzdENoaWxkCisgICAgICAgICAgICAt
IE5vZGVfcGFyZW50Tm9kZQorICAgICAgICAgICAgLSBOb2RlX25leHRTaWJsaW5nCisgICAgICAg
ICAgICAtIE5vZGVfcHJldmlvdXNTaWJsaW5nCisgICAgICAgICAgICAtIE5vZGVfb3duZXJEb2N1
bWVudAorICAgICAgICBEb2N1bWVudDoKKyAgICAgICAgICAgIC0gRG9jdW1lbnRfZG9jdW1lbnRF
bGVtZW50CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb21qaXQvRE9NSklUSURMQ29udmVy
dC5oIGIvU291cmNlL1dlYkNvcmUvZG9taml0L0RPTUpJVElETENvbnZlcnQuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li41ZTAwYWJmY2NiODc2ZGVhMTgzMmYxYzIwYWVlM2VkNzhiMTM2ODQ5Ci0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYkNvcmUvZG9taml0L0RPTUpJVElETENvbnZlcnQuaApAQCAtMCwwICsx
LDQ5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJJRExUeXBlcy5o
IgorI2luY2x1ZGUgPGJ5dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmg+CisjaW5jbHVkZSA8ZG9taml0
L0RPTUpJVFNpZ25hdHVyZS5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7IG5hbWVzcGFjZSBET01K
SVQgeworCit0ZW1wbGF0ZTx0eXBlbmFtZSBJRExUeXBlPgorc3RydWN0IERpcmVjdENvbnZlcnRl
cjsKKwordGVtcGxhdGU8Pgorc3RydWN0IERpcmVjdENvbnZlcnRlcjxJRExET01TdHJpbmc+IHsK
KyAgICB0ZW1wbGF0ZTxTdHJpbmdDb252ZXJzaW9uQ29uZmlndXJhdGlvbj4KKyAgICBzdGF0aWMg
U3RyaW5nIGRpcmVjdENvbnZlcnQoSlNDOjpFeGVjU3RhdGUmLCBKU0M6OkpTU3RyaW5nKik7Cit9
OworCit0ZW1wbGF0ZTw+CitpbmxpbmUgU3RyaW5nIERpcmVjdENvbnZlcnRlcjxJRExET01TdHJp
bmc+OjpkaXJlY3RDb252ZXJ0PFN0cmluZ0NvbnZlcnNpb25Db25maWd1cmF0aW9uOjpOb3JtYWw+
KEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgSlNDOjpKU1N0cmluZyogc3RyaW5nKQoreworICAgIHJl
dHVybiBzdHJpbmctPnZhbHVlKCZzdGF0ZSk7Cit9CisKK30gfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZG9taml0L0RPTUpJVElETFR5cGUuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbWppdC9E
T01KSVRJRExUeXBlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjg5MWZiYzUwZWY0YzJkNzY1NGQ4ZTVkMmJjOGRl
YWU5NzZkZjFhYwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbWppdC9ET01K
SVRJRExUeXBlLmgKQEAgLTAsMCArMSw0NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQor
CisjaW5jbHVkZSAiSURMVHlwZXMuaCIKKyNpbmNsdWRlIDxieXRlY29kZS9TcGVjdWxhdGVkVHlw
ZS5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7IG5hbWVzcGFjZSBET01KSVQgeworCit0ZW1wbGF0
ZTx0eXBlbmFtZSBJRExUeXBlPgorc3RydWN0IElETEpTQXJndW1lbnRUeXBlU2VsZWN0OworCit0
ZW1wbGF0ZTw+IHN0cnVjdCBJRExKU0FyZ3VtZW50VHlwZVNlbGVjdDxJRExCb29sZWFuPiB7IHR5
cGVkZWYgYm9vbCB0eXBlOyB9OwordGVtcGxhdGU8PiBzdHJ1Y3QgSURMSlNBcmd1bWVudFR5cGVT
ZWxlY3Q8SURMQnl0ZT4geyB0eXBlZGVmIGludDMyX3QgdHlwZTsgfTsKK3RlbXBsYXRlPD4gc3Ry
dWN0IElETEpTQXJndW1lbnRUeXBlU2VsZWN0PElETE9jdGV0PiB7IHR5cGVkZWYgaW50MzJfdCB0
eXBlOyB9OwordGVtcGxhdGU8PiBzdHJ1Y3QgSURMSlNBcmd1bWVudFR5cGVTZWxlY3Q8SURMU2hv
cnQ+IHsgdHlwZWRlZiBpbnQzMl90IHR5cGU7IH07Cit0ZW1wbGF0ZTw+IHN0cnVjdCBJRExKU0Fy
Z3VtZW50VHlwZVNlbGVjdDxJRExVbnNpZ25lZFNob3J0PiB7IHR5cGVkZWYgaW50MzJfdCB0eXBl
OyB9OwordGVtcGxhdGU8PiBzdHJ1Y3QgSURMSlNBcmd1bWVudFR5cGVTZWxlY3Q8SURMTG9uZz4g
eyB0eXBlZGVmIGludDMyX3QgdHlwZTsgfTsKK3RlbXBsYXRlPD4gc3RydWN0IElETEpTQXJndW1l
bnRUeXBlU2VsZWN0PElETERPTVN0cmluZz4geyB0eXBlZGVmIEpTQzo6SlNTdHJpbmcqIHR5cGU7
IH07CisKK3RlbXBsYXRlPHR5cGVuYW1lIElETFR5cGU+Cit1c2luZyBJRExKU0FyZ3VtZW50VHlw
ZSA9IHR5cGVuYW1lIElETEpTQXJndW1lbnRUeXBlU2VsZWN0PElETFR5cGU+Ojp0eXBlOworCit9
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbWppdC9ET01KSVRJRExUeXBlRmlsdGVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9kb21qaXQvRE9NSklUSURMVHlwZUZpbHRlci5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmQ1MmQ5OTY3N2MzMmY3ZWMyYmQ1MjEyMzdhZDBlN2I4ZDRlM2RiOTYKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb21qaXQvRE9NSklUSURMVHlwZUZpbHRlci5oCkBAIC0w
LDAgKzEsNzEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPGJ5dGVj
b2RlL1NwZWN1bGF0ZWRUeXBlLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsgbmFtZXNwYWNlIERP
TUpJVCB7CisKK3RlbXBsYXRlPHR5cGVuYW1lIElETFR5cGU+CitzdHJ1Y3QgSURMQXJndW1lbnRU
eXBlRmlsdGVyOworCit0ZW1wbGF0ZTw+IHN0cnVjdCBJRExBcmd1bWVudFR5cGVGaWx0ZXI8SURM
Qm9vbGVhbj4geyBzdGF0aWMgY29uc3QgY29uc3RleHByIEpTQzo6U3BlY3VsYXRlZFR5cGUgdmFs
dWUgPSBKU0M6OlNwZWNCb29sZWFuOyB9OwordGVtcGxhdGU8PiBzdHJ1Y3QgSURMQXJndW1lbnRU
eXBlRmlsdGVyPElETEJ5dGU+IHsgc3RhdGljIGNvbnN0IGNvbnN0ZXhwciBKU0M6OlNwZWN1bGF0
ZWRUeXBlIHZhbHVlID0gSlNDOjpTcGVjSW50MzJPbmx5OyB9OwordGVtcGxhdGU8PiBzdHJ1Y3Qg
SURMQXJndW1lbnRUeXBlRmlsdGVyPElETE9jdGV0PiB7IHN0YXRpYyBjb25zdCBjb25zdGV4cHIg
SlNDOjpTcGVjdWxhdGVkVHlwZSB2YWx1ZSA9IEpTQzo6U3BlY0ludDMyT25seTsgfTsKK3RlbXBs
YXRlPD4gc3RydWN0IElETEFyZ3VtZW50VHlwZUZpbHRlcjxJRExTaG9ydD4geyBzdGF0aWMgY29u
c3QgY29uc3RleHByIEpTQzo6U3BlY3VsYXRlZFR5cGUgdmFsdWUgPSBKU0M6OlNwZWNJbnQzMk9u
bHk7IH07Cit0ZW1wbGF0ZTw+IHN0cnVjdCBJRExBcmd1bWVudFR5cGVGaWx0ZXI8SURMVW5zaWdu
ZWRTaG9ydD4geyBzdGF0aWMgY29uc3QgY29uc3RleHByIEpTQzo6U3BlY3VsYXRlZFR5cGUgdmFs
dWUgPSBKU0M6OlNwZWNJbnQzMk9ubHk7IH07Cit0ZW1wbGF0ZTw+IHN0cnVjdCBJRExBcmd1bWVu
dFR5cGVGaWx0ZXI8SURMTG9uZz4geyBzdGF0aWMgY29uc3QgY29uc3RleHByIEpTQzo6U3BlY3Vs
YXRlZFR5cGUgdmFsdWUgPSBKU0M6OlNwZWNJbnQzMk9ubHk7IH07Cit0ZW1wbGF0ZTw+IHN0cnVj
dCBJRExBcmd1bWVudFR5cGVGaWx0ZXI8SURMRE9NU3RyaW5nPiB7IHN0YXRpYyBjb25zdCBjb25z
dGV4cHIgSlNDOjpTcGVjdWxhdGVkVHlwZSB2YWx1ZSA9IEpTQzo6U3BlY1N0cmluZzsgfTsKKwor
dGVtcGxhdGU8dHlwZW5hbWUgSURMVHlwZT4KK3N0cnVjdCBJRExSZXN1bHRUeXBlRmlsdGVyIHsK
KyAgICBzdGF0aWMgY29uc3QgY29uc3RleHByIEpTQzo6U3BlY3VsYXRlZFR5cGUgdmFsdWUgPSBK
U0M6OlNwZWNIZWFwVG9wOworfTsKKwordGVtcGxhdGU8PiBzdHJ1Y3QgSURMUmVzdWx0VHlwZUZp
bHRlcjxJRExBbnk+IHsgc3RhdGljIGNvbnN0IGNvbnN0ZXhwciBKU0M6OlNwZWN1bGF0ZWRUeXBl
IHZhbHVlID0gSlNDOjpTcGVjSGVhcFRvcDsgfTsKK3RlbXBsYXRlPD4gc3RydWN0IElETFJlc3Vs
dFR5cGVGaWx0ZXI8SURMQm9vbGVhbj4geyBzdGF0aWMgY29uc3QgY29uc3RleHByIEpTQzo6U3Bl
Y3VsYXRlZFR5cGUgdmFsdWUgPSBKU0M6OlNwZWNCb29sZWFuOyB9OwordGVtcGxhdGU8PiBzdHJ1
Y3QgSURMUmVzdWx0VHlwZUZpbHRlcjxJRExCeXRlPiB7IHN0YXRpYyBjb25zdCBjb25zdGV4cHIg
SlNDOjpTcGVjdWxhdGVkVHlwZSB2YWx1ZSA9IEpTQzo6U3BlY0ludDMyT25seTsgfTsKK3RlbXBs
YXRlPD4gc3RydWN0IElETFJlc3VsdFR5cGVGaWx0ZXI8SURMT2N0ZXQ+IHsgc3RhdGljIGNvbnN0
IGNvbnN0ZXhwciBKU0M6OlNwZWN1bGF0ZWRUeXBlIHZhbHVlID0gSlNDOjpTcGVjSW50MzJPbmx5
OyB9OwordGVtcGxhdGU8PiBzdHJ1Y3QgSURMUmVzdWx0VHlwZUZpbHRlcjxJRExTaG9ydD4geyBz
dGF0aWMgY29uc3QgY29uc3RleHByIEpTQzo6U3BlY3VsYXRlZFR5cGUgdmFsdWUgPSBKU0M6OlNw
ZWNJbnQzMk9ubHk7IH07Cit0ZW1wbGF0ZTw+IHN0cnVjdCBJRExSZXN1bHRUeXBlRmlsdGVyPElE
TFVuc2lnbmVkU2hvcnQ+IHsgc3RhdGljIGNvbnN0IGNvbnN0ZXhwciBKU0M6OlNwZWN1bGF0ZWRU
eXBlIHZhbHVlID0gSlNDOjpTcGVjSW50MzJPbmx5OyB9OwordGVtcGxhdGU8PiBzdHJ1Y3QgSURM
UmVzdWx0VHlwZUZpbHRlcjxJRExMb25nPiB7IHN0YXRpYyBjb25zdCBjb25zdGV4cHIgSlNDOjpT
cGVjdWxhdGVkVHlwZSB2YWx1ZSA9IEpTQzo6U3BlY0ludDMyT25seTsgfTsKK3RlbXBsYXRlPD4g
c3RydWN0IElETFJlc3VsdFR5cGVGaWx0ZXI8SURMVW5zaWduZWRMb25nPiB7IHN0YXRpYyBjb25z
dCBjb25zdGV4cHIgSlNDOjpTcGVjdWxhdGVkVHlwZSB2YWx1ZSA9IEpTQzo6U3BlY0J5dGVjb2Rl
TnVtYmVyOyB9OwordGVtcGxhdGU8PiBzdHJ1Y3QgSURMUmVzdWx0VHlwZUZpbHRlcjxJRExMb25n
TG9uZz4geyBzdGF0aWMgY29uc3QgY29uc3RleHByIEpTQzo6U3BlY3VsYXRlZFR5cGUgdmFsdWUg
PSBKU0M6OlNwZWNCeXRlY29kZU51bWJlcjsgfTsKK3RlbXBsYXRlPD4gc3RydWN0IElETFJlc3Vs
dFR5cGVGaWx0ZXI8SURMVW5zaWduZWRMb25nTG9uZz4geyBzdGF0aWMgY29uc3QgY29uc3RleHBy
IEpTQzo6U3BlY3VsYXRlZFR5cGUgdmFsdWUgPSBKU0M6OlNwZWNCeXRlY29kZU51bWJlcjsgfTsK
K3RlbXBsYXRlPD4gc3RydWN0IElETFJlc3VsdFR5cGVGaWx0ZXI8SURMRmxvYXQ+IHsgc3RhdGlj
IGNvbnN0IGNvbnN0ZXhwciBKU0M6OlNwZWN1bGF0ZWRUeXBlIHZhbHVlID0gSlNDOjpTcGVjQnl0
ZWNvZGVOdW1iZXI7IH07Cit0ZW1wbGF0ZTw+IHN0cnVjdCBJRExSZXN1bHRUeXBlRmlsdGVyPElE
TFVucmVzdHJpY3RlZEZsb2F0PiB7IHN0YXRpYyBjb25zdCBjb25zdGV4cHIgSlNDOjpTcGVjdWxh
dGVkVHlwZSB2YWx1ZSA9IEpTQzo6U3BlY0J5dGVjb2RlTnVtYmVyOyB9OwordGVtcGxhdGU8PiBz
dHJ1Y3QgSURMUmVzdWx0VHlwZUZpbHRlcjxJRExEb3VibGU+IHsgc3RhdGljIGNvbnN0IGNvbnN0
ZXhwciBKU0M6OlNwZWN1bGF0ZWRUeXBlIHZhbHVlID0gSlNDOjpTcGVjQnl0ZWNvZGVOdW1iZXI7
IH07Cit0ZW1wbGF0ZTw+IHN0cnVjdCBJRExSZXN1bHRUeXBlRmlsdGVyPElETFVucmVzdHJpY3Rl
ZERvdWJsZT4geyBzdGF0aWMgY29uc3QgY29uc3RleHByIEpTQzo6U3BlY3VsYXRlZFR5cGUgdmFs
dWUgPSBKU0M6OlNwZWNCeXRlY29kZU51bWJlcjsgfTsKK3RlbXBsYXRlPD4gc3RydWN0IElETFJl
c3VsdFR5cGVGaWx0ZXI8SURMRE9NU3RyaW5nPiB7IHN0YXRpYyBjb25zdCBjb25zdGV4cHIgSlND
OjpTcGVjdWxhdGVkVHlwZSB2YWx1ZSA9IEpTQzo6U3BlY1N0cmluZzsgfTsKK3RlbXBsYXRlPD4g
c3RydWN0IElETFJlc3VsdFR5cGVGaWx0ZXI8SURMQnl0ZVN0cmluZz4geyBzdGF0aWMgY29uc3Qg
Y29uc3RleHByIEpTQzo6U3BlY3VsYXRlZFR5cGUgdmFsdWUgPSBKU0M6OlNwZWNTdHJpbmc7IH07
Cit0ZW1wbGF0ZTw+IHN0cnVjdCBJRExSZXN1bHRUeXBlRmlsdGVyPElETFVTVlN0cmluZz4geyBz
dGF0aWMgY29uc3QgY29uc3RleHByIEpTQzo6U3BlY3VsYXRlZFR5cGUgdmFsdWUgPSBKU0M6OlNw
ZWNTdHJpbmc7IH07CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+CitzdHJ1Y3QgSURMUmVzdWx0VHlw
ZUZpbHRlcjxJRExOdWxsYWJsZTxUPj4geworICAgIHN0YXRpYyBjb25zdCBjb25zdGV4cHIgSlND
OjpTcGVjdWxhdGVkVHlwZSB2YWx1ZSA9IEpTQzo6U3BlY090aGVyIHwgSURMUmVzdWx0VHlwZUZp
bHRlcjxUPjo6dmFsdWU7Cit9OworCit9IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bWppdC9KU0RvY3VtZW50RE9NSklULmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbWppdC9KU0RvY3Vt
ZW50RE9NSklULmNwcAppbmRleCA5YjQ4ZDlmZGE1OGE2MmQwN2ZiMjNhYWI0NTZiZjk0YjdlZDhm
YzJmLi5iYmZlZTdkYzRiYjc4MmU3M2NmMjdjOTc3YmMxODI5NGE1OTRiNmQ4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9kb21qaXQvSlNEb2N1bWVudERPTUpJVC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvZG9taml0L0pTRG9jdW1lbnRET01KSVQuY3BwCkBAIC00OCw3ICs0OCw2IEBAIFJl
ZjxKU0M6OkRPTUpJVDo6UGF0Y2hwb2ludD4gRG9jdW1lbnREb2N1bWVudEVsZW1lbnRET01KSVQ6
OmNoZWNrRE9NKCkKIAogUmVmPEpTQzo6RE9NSklUOjpDYWxsRE9NR2V0dGVyUGF0Y2hwb2ludD4g
RG9jdW1lbnREb2N1bWVudEVsZW1lbnRET01KSVQ6OmNhbGxET01HZXR0ZXIoKQogewotICAgIGNv
bnN0IGF1dG8mIGhlYXAgPSBET01KSVQ6OkFic3RyYWN0SGVhcFJlcG9zaXRvcnk6OnNoYXJlZCgp
OwogICAgIFJlZjxKU0M6OkRPTUpJVDo6Q2FsbERPTUdldHRlclBhdGNocG9pbnQ+IHBhdGNocG9p
bnQgPSBKU0M6OkRPTUpJVDo6Q2FsbERPTUdldHRlclBhdGNocG9pbnQ6OmNyZWF0ZSgpOwogICAg
IHBhdGNocG9pbnQtPm51bUdQU2NyYXRjaFJlZ2lzdGVycyA9IDE7CiAgICAgcGF0Y2hwb2ludC0+
c2V0R2VuZXJhdG9yKFs9XShDQ2FsbEhlbHBlcnMmIGppdCwgSlNDOjpET01KSVQ6OlBhdGNocG9p
bnRQYXJhbXMmIHBhcmFtcykgewpAQCAtNzAsNyArNjksNyBAQCBSZWY8SlNDOjpET01KSVQ6OkNh
bGxET01HZXR0ZXJQYXRjaHBvaW50PiBEb2N1bWVudERvY3VtZW50RWxlbWVudERPTUpJVDo6Y2Fs
bERPTQogCiAgICAgICAgIHJldHVybiBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0KCk7CiAgICAgfSk7
Ci0gICAgcGF0Y2hwb2ludC0+ZWZmZWN0ID0gSlNDOjpET01KSVQ6OkVmZmVjdDo6Zm9yRGVmKGhl
YXAuRG9jdW1lbnRfZG9jdW1lbnRFbGVtZW50KTsKKyAgICBwYXRjaHBvaW50LT5lZmZlY3QgPSBK
U0M6OkRPTUpJVDo6RWZmZWN0Ojpmb3JEZWYoRE9NSklUOjpBYnN0cmFjdEhlYXBSZXBvc2l0b3J5
OjpEb2N1bWVudF9kb2N1bWVudEVsZW1lbnQpOwogICAgIHJldHVybiBwYXRjaHBvaW50OwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb21qaXQvSlNOb2RlRE9NSklULmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2RvbWppdC9KU05vZGVET01KSVQuY3BwCmluZGV4IDFkNzkwMWVjNDFkN2Fj
ZWYxZDBkNzhmNjEzMjZmYmU4YTEzYTkxYmYuLmRiMzEwZWEzNDUyODQ5MTQyNDI4ZDNkNjE2Zjgx
YjJjNjdjNTE2NTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbWppdC9KU05vZGVET01K
SVQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbWppdC9KU05vZGVET01KSVQuY3BwCkBAIC04
Myw5ICs4Myw4IEBAIFJlZjxKU0M6OkRPTUpJVDo6UGF0Y2hwb2ludD4gTm9kZUZpcnN0Q2hpbGRE
T01KSVQ6OmNoZWNrRE9NKCkKIAogUmVmPEpTQzo6RE9NSklUOjpDYWxsRE9NR2V0dGVyUGF0Y2hw
b2ludD4gTm9kZUZpcnN0Q2hpbGRET01KSVQ6OmNhbGxET01HZXR0ZXIoKQogewotICAgIGNvbnN0
IGF1dG8mIGhlYXAgPSBET01KSVQ6OkFic3RyYWN0SGVhcFJlcG9zaXRvcnk6OnNoYXJlZCgpOwog
ICAgIGF1dG8gcGF0Y2hwb2ludCA9IGNyZWF0ZUNhbGxET01HZXR0ZXJGb3JPZmZzZXRBY2Nlc3M8
Tm9kZT4oQ0FTVF9PRkZTRVQoTm9kZSosIENvbnRhaW5lck5vZGUqKSArIENvbnRhaW5lck5vZGU6
OmZpcnN0Q2hpbGRNZW1vcnlPZmZzZXQoKSwgSXNDb250YWluZXJHdWFyZFJlcXVpcmVtZW50OjpS
ZXF1aXJlZCk7Ci0gICAgcGF0Y2hwb2ludC0+ZWZmZWN0ID0gSlNDOjpET01KSVQ6OkVmZmVjdDo6
Zm9yRGVmKGhlYXAuTm9kZV9maXJzdENoaWxkKTsKKyAgICBwYXRjaHBvaW50LT5lZmZlY3QgPSBK
U0M6OkRPTUpJVDo6RWZmZWN0Ojpmb3JEZWYoRE9NSklUOjpBYnN0cmFjdEhlYXBSZXBvc2l0b3J5
OjpOb2RlX2ZpcnN0Q2hpbGQpOwogICAgIHJldHVybiBwYXRjaHBvaW50OwogfQogCkBAIC05Niw5
ICs5NSw4IEBAIFJlZjxKU0M6OkRPTUpJVDo6UGF0Y2hwb2ludD4gTm9kZUxhc3RDaGlsZERPTUpJ
VDo6Y2hlY2tET00oKQogCiBSZWY8SlNDOjpET01KSVQ6OkNhbGxET01HZXR0ZXJQYXRjaHBvaW50
PiBOb2RlTGFzdENoaWxkRE9NSklUOjpjYWxsRE9NR2V0dGVyKCkKIHsKLSAgICBjb25zdCBhdXRv
JiBoZWFwID0gRE9NSklUOjpBYnN0cmFjdEhlYXBSZXBvc2l0b3J5OjpzaGFyZWQoKTsKICAgICBh
dXRvIHBhdGNocG9pbnQgPSBjcmVhdGVDYWxsRE9NR2V0dGVyRm9yT2Zmc2V0QWNjZXNzPE5vZGU+
KENBU1RfT0ZGU0VUKE5vZGUqLCBDb250YWluZXJOb2RlKikgKyBDb250YWluZXJOb2RlOjpsYXN0
Q2hpbGRNZW1vcnlPZmZzZXQoKSwgSXNDb250YWluZXJHdWFyZFJlcXVpcmVtZW50OjpSZXF1aXJl
ZCk7Ci0gICAgcGF0Y2hwb2ludC0+ZWZmZWN0ID0gSlNDOjpET01KSVQ6OkVmZmVjdDo6Zm9yRGVm
KGhlYXAuTm9kZV9sYXN0Q2hpbGQpOworICAgIHBhdGNocG9pbnQtPmVmZmVjdCA9IEpTQzo6RE9N
SklUOjpFZmZlY3Q6OmZvckRlZihET01KSVQ6OkFic3RyYWN0SGVhcFJlcG9zaXRvcnk6Ok5vZGVf
bGFzdENoaWxkKTsKICAgICByZXR1cm4gcGF0Y2hwb2ludDsKIH0KIApAQCAtMTA5LDkgKzEwNyw4
IEBAIFJlZjxKU0M6OkRPTUpJVDo6UGF0Y2hwb2ludD4gTm9kZU5leHRTaWJsaW5nRE9NSklUOjpj
aGVja0RPTSgpCiAKIFJlZjxKU0M6OkRPTUpJVDo6Q2FsbERPTUdldHRlclBhdGNocG9pbnQ+IE5v
ZGVOZXh0U2libGluZ0RPTUpJVDo6Y2FsbERPTUdldHRlcigpCiB7Ci0gICAgY29uc3QgYXV0byYg
aGVhcCA9IERPTUpJVDo6QWJzdHJhY3RIZWFwUmVwb3NpdG9yeTo6c2hhcmVkKCk7CiAgICAgYXV0
byBwYXRjaHBvaW50ID0gY3JlYXRlQ2FsbERPTUdldHRlckZvck9mZnNldEFjY2VzczxOb2RlPihO
b2RlOjpuZXh0U2libGluZ01lbW9yeU9mZnNldCgpLCBJc0NvbnRhaW5lckd1YXJkUmVxdWlyZW1l
bnQ6Ok5vdFJlcXVpcmVkKTsKLSAgICBwYXRjaHBvaW50LT5lZmZlY3QgPSBKU0M6OkRPTUpJVDo6
RWZmZWN0Ojpmb3JEZWYoaGVhcC5Ob2RlX25leHRTaWJsaW5nKTsKKyAgICBwYXRjaHBvaW50LT5l
ZmZlY3QgPSBKU0M6OkRPTUpJVDo6RWZmZWN0Ojpmb3JEZWYoRE9NSklUOjpBYnN0cmFjdEhlYXBS
ZXBvc2l0b3J5OjpOb2RlX25leHRTaWJsaW5nKTsKICAgICByZXR1cm4gcGF0Y2hwb2ludDsKIH0K
IApAQCAtMTIyLDkgKzExOSw4IEBAIFJlZjxKU0M6OkRPTUpJVDo6UGF0Y2hwb2ludD4gTm9kZVBy
ZXZpb3VzU2libGluZ0RPTUpJVDo6Y2hlY2tET00oKQogCiBSZWY8SlNDOjpET01KSVQ6OkNhbGxE
T01HZXR0ZXJQYXRjaHBvaW50PiBOb2RlUHJldmlvdXNTaWJsaW5nRE9NSklUOjpjYWxsRE9NR2V0
dGVyKCkKIHsKLSAgICBjb25zdCBhdXRvJiBoZWFwID0gRE9NSklUOjpBYnN0cmFjdEhlYXBSZXBv
c2l0b3J5OjpzaGFyZWQoKTsKICAgICBhdXRvIHBhdGNocG9pbnQgPSBjcmVhdGVDYWxsRE9NR2V0
dGVyRm9yT2Zmc2V0QWNjZXNzPE5vZGU+KE5vZGU6OnByZXZpb3VzU2libGluZ01lbW9yeU9mZnNl
dCgpLCBJc0NvbnRhaW5lckd1YXJkUmVxdWlyZW1lbnQ6Ok5vdFJlcXVpcmVkKTsKLSAgICBwYXRj
aHBvaW50LT5lZmZlY3QgPSBKU0M6OkRPTUpJVDo6RWZmZWN0Ojpmb3JEZWYoaGVhcC5Ob2RlX3By
ZXZpb3VzU2libGluZyk7CisgICAgcGF0Y2hwb2ludC0+ZWZmZWN0ID0gSlNDOjpET01KSVQ6OkVm
ZmVjdDo6Zm9yRGVmKERPTUpJVDo6QWJzdHJhY3RIZWFwUmVwb3NpdG9yeTo6Tm9kZV9wcmV2aW91
c1NpYmxpbmcpOwogICAgIHJldHVybiBwYXRjaHBvaW50OwogfQogCkBAIC0xMzUsOSArMTMxLDgg
QEAgUmVmPEpTQzo6RE9NSklUOjpQYXRjaHBvaW50PiBOb2RlUGFyZW50Tm9kZURPTUpJVDo6Y2hl
Y2tET00oKQogCiBSZWY8SlNDOjpET01KSVQ6OkNhbGxET01HZXR0ZXJQYXRjaHBvaW50PiBOb2Rl
UGFyZW50Tm9kZURPTUpJVDo6Y2FsbERPTUdldHRlcigpCiB7Ci0gICAgY29uc3QgYXV0byYgaGVh
cCA9IERPTUpJVDo6QWJzdHJhY3RIZWFwUmVwb3NpdG9yeTo6c2hhcmVkKCk7CiAgICAgYXV0byBw
YXRjaHBvaW50ID0gY3JlYXRlQ2FsbERPTUdldHRlckZvck9mZnNldEFjY2VzczxDb250YWluZXJO
b2RlPihOb2RlOjpwYXJlbnROb2RlTWVtb3J5T2Zmc2V0KCksIElzQ29udGFpbmVyR3VhcmRSZXF1
aXJlbWVudDo6Tm90UmVxdWlyZWQpOwotICAgIHBhdGNocG9pbnQtPmVmZmVjdCA9IEpTQzo6RE9N
SklUOjpFZmZlY3Q6OmZvckRlZihoZWFwLk5vZGVfcGFyZW50Tm9kZSk7CisgICAgcGF0Y2hwb2lu
dC0+ZWZmZWN0ID0gSlNDOjpET01KSVQ6OkVmZmVjdDo6Zm9yRGVmKERPTUpJVDo6QWJzdHJhY3RI
ZWFwUmVwb3NpdG9yeTo6Tm9kZV9wYXJlbnROb2RlKTsKICAgICByZXR1cm4gcGF0Y2hwb2ludDsK
IH0KIApAQCAtMTY5LDcgKzE2NCw2IEBAIFJlZjxKU0M6OkRPTUpJVDo6UGF0Y2hwb2ludD4gTm9k
ZU93bmVyRG9jdW1lbnRET01KSVQ6OmNoZWNrRE9NKCkKIAogUmVmPEpTQzo6RE9NSklUOjpDYWxs
RE9NR2V0dGVyUGF0Y2hwb2ludD4gTm9kZU93bmVyRG9jdW1lbnRET01KSVQ6OmNhbGxET01HZXR0
ZXIoKQogewotICAgIGNvbnN0IGF1dG8mIGhlYXAgPSBET01KSVQ6OkFic3RyYWN0SGVhcFJlcG9z
aXRvcnk6OnNoYXJlZCgpOwogICAgIFJlZjxKU0M6OkRPTUpJVDo6Q2FsbERPTUdldHRlclBhdGNo
cG9pbnQ+IHBhdGNocG9pbnQgPSBKU0M6OkRPTUpJVDo6Q2FsbERPTUdldHRlclBhdGNocG9pbnQ6
OmNyZWF0ZSgpOwogICAgIHBhdGNocG9pbnQtPm51bUdQU2NyYXRjaFJlZ2lzdGVycyA9IDE7CiAg
ICAgcGF0Y2hwb2ludC0+c2V0R2VuZXJhdG9yKFs9XShDQ2FsbEhlbHBlcnMmIGppdCwgSlNDOjpE
T01KSVQ6OlBhdGNocG9pbnRQYXJhbXMmIHBhcmFtcykgewpAQCAtMTkxLDcgKzE4NSw3IEBAIFJl
ZjxKU0M6OkRPTUpJVDo6Q2FsbERPTUdldHRlclBhdGNocG9pbnQ+IE5vZGVPd25lckRvY3VtZW50
RE9NSklUOjpjYWxsRE9NR2V0dGVyCiAgICAgICAgIGRvbmUubGluaygmaml0KTsKICAgICAgICAg
cmV0dXJuIENDYWxsSGVscGVyczo6SnVtcExpc3QoKTsKICAgICB9KTsKLSAgICBwYXRjaHBvaW50
LT5lZmZlY3QgPSBKU0M6OkRPTUpJVDo6RWZmZWN0Ojpmb3JEZWYoaGVhcC5Ob2RlX293bmVyRG9j
dW1lbnQpOworICAgIHBhdGNocG9pbnQtPmVmZmVjdCA9IEpTQzo6RE9NSklUOjpFZmZlY3Q6OmZv
ckRlZihET01KSVQ6OkFic3RyYWN0SGVhcFJlcG9zaXRvcnk6Ok5vZGVfb3duZXJEb2N1bWVudCk7
CiAgICAgcmV0dXJuIHBhdGNocG9pbnQ7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2RvbWppdC9nZW5lcmF0ZS1hYnN0cmFjdC1oZWFwLnJiIGIvU291cmNlL1dlYkNvcmUvZG9taml0
L2dlbmVyYXRlLWFic3RyYWN0LWhlYXAucmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjc0MTJlODVkNjlmNDkxYTJl
YWFiYWE2MTc4ZjFiMjVhMDJkMDliNAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2RvbWppdC9nZW5lcmF0ZS1hYnN0cmFjdC1oZWFwLnJiCkBAIC0wLDAgKzEsMTY1IEBACisjIS91
c3IvYmluL2VudiBydWJ5CisjIC0qLSBjb2Rpbmc6IHV0Zi04IC0qLQorIyBDb3B5cmlnaHQgKEMp
IDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMg
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisjIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorIyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisjIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworIyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisjIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisjIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworIyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorIyBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorIyBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisjIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKworcmVxdWlyZSAieWFtbCIKKworY2xhc3MgSGVhcFJhbmdl
CisgICAgYXR0cl9yZWFkZXIgOmZpcnN0LCA6bGFzdAorICAgIGRlZiBpbml0aWFsaXplKGZpcnN0
LCBsYXN0KQorICAgICAgICBAZmlyc3QgPSBmaXJzdAorICAgICAgICBAbGFzdCA9IGxhc3QKKyAg
ICBlbmQKK2VuZAorCitjbGFzcyBBYnN0cmFjdEhlYXAKKyAgICBhdHRyX3JlYWRlciA6cmFuZ2Us
IDpuYW1lLCA6cGFyZW50CisgICAgZGVmIGluaXRpYWxpemUobmFtZSwgdHJlZSkKKyAgICAgICAg
QG5hbWUgPSBuYW1lCisgICAgICAgIEBwYXJlbnQgPSBuaWwKKyAgICAgICAgaWYgdHJlZS5uaWw/
CisgICAgICAgICAgICBAY2hpbGRyZW4gPSBbXQorICAgICAgICBlbHNlCisgICAgICAgICAgICBA
Y2hpbGRyZW4gPSB0cmVlLm1hcCB7fGtleSwgdmFsdWV8IEFic3RyYWN0SGVhcC5uZXcoa2V5LCB2
YWx1ZSkgfQorICAgICAgICBlbmQKKyAgICAgICAgQHJhbmdlID0gbmlsCisgICAgZW5kCisKKyAg
ICBkZWYgc2V0UGFyZW50KHBhcmVudCkKKyAgICAgICAgcGFyZW50LmNoaWxkcmVuLnB1c2goc2Vs
ZikKKyAgICAgICAgQHBhcmVudCA9IHBhcmVudAorICAgIGVuZAorCisgICAgZGVmIGNvbXB1dGUo
c3RhcnQpCisgICAgICAgIGN1cnJlbnQgPSBzdGFydAorICAgICAgICBpZiBAY2hpbGRyZW4uZW1w
dHk/CisgICAgICAgICAgICBAcmFuZ2UgPSBIZWFwUmFuZ2UubmV3KHN0YXJ0LCBjdXJyZW50ICsg
MSkKKyAgICAgICAgICAgIHJldHVybgorICAgICAgICBlbmQKKworICAgICAgICBAY2hpbGRyZW4u
ZWFjaCB7fGNoaWxkfAorICAgICAgICAgICAgY2hpbGQuY29tcHV0ZShjdXJyZW50KQorICAgICAg
ICAgICAgY3VycmVudCA9IGNoaWxkLnJhbmdlLmxhc3QKKyAgICAgICAgfQorCisgICAgICAgIEBy
YW5nZSA9IEhlYXBSYW5nZS5uZXcoc3RhcnQsIGN1cnJlbnQpCisgICAgZW5kCisKKyAgICBkZWYg
ZHVtcCBvdXRwdXQKKyAgICAgICAgc2hhbGxvd0R1bXAob3V0cHV0KQorICAgICAgICBpZiBAcGFy
ZW50CisgICAgICAgICAgICBvdXRwdXQucHJpbnQgIi0+ICIKKyAgICAgICAgICAgIEBwYXJlbnQu
ZHVtcChvdXRwdXQpCisgICAgICAgIGVuZAorICAgIGVuZAorCisgICAgZGVmIHNoYWxsb3dEdW1w
KG91dHB1dCkKKyAgICAgICAgb3V0cHV0LnByaW50ICIje0BuYW1lfTwje0ByYW5nZS5maXJzdH0s
I3tAcmFuZ2UubGFzdH0+IgorICAgIGVuZAorCisgICAgZGVmIGRlZXBEdW1wIG91dHB1dCwgaW5k
ZW50CisgICAgICAgIHByaW50SW5kZW50KG91dHB1dCwgaW5kZW50KQorICAgICAgICBzaGFsbG93
RHVtcChvdXRwdXQpCisgICAgICAgIGlmIEBjaGlsZHJlbi5lbXB0eT8KKyAgICAgICAgICAgIG91
dHB1dC5wcmludCAiXG4iCisgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgZW5kCisKKyAgICAg
ICAgb3V0cHV0LnByaW50ICI6XG4iCisgICAgICAgIEBjaGlsZHJlbi5lYWNoIHt8Y2hpbGR8Cisg
ICAgICAgICAgICBjaGlsZC5kZWVwRHVtcChvdXRwdXQsIGluZGVudCArIDEpCisgICAgICAgIH0K
KyAgICBlbmQKKworICAgIGRlZiBnZW5lcmF0ZSBvdXRwdXQKKyAgICAgICAgb3V0cHV0LnB1dHMg
ImNvbnN0ZXhwciBKU0M6OkRPTUpJVDo6SGVhcFJhbmdlICN7QG5hbWV9KEpTQzo6RE9NSklUOjpI
ZWFwUmFuZ2U6OkNvbnN0RXhwciwgI3tAcmFuZ2UuZmlyc3R9LCAje0ByYW5nZS5sYXN0fSk7Igor
ICAgICAgICBAY2hpbGRyZW4uZWFjaCB7fGNoaWxkfAorICAgICAgICAgICAgY2hpbGQuZ2VuZXJh
dGUob3V0cHV0KQorICAgICAgICB9CisgICAgZW5kCisKK3ByaXZhdGUKKyAgICBkZWYgcHJpbnRJ
bmRlbnQgb3V0cHV0LCBpbmRlbnQKKyAgICAgICAgaW5kZW50LnRpbWVzIHsKKyAgICAgICAgICAg
IG91dHB1dC5wcmludCAiICAgICIKKyAgICAgICAgfQorICAgIGVuZAorZW5kCisKK2hlYWRlciA9
IDw8LUVPUworLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisvLyBB
dXRvLWdlbmVyYXRlZCBmaWxlLiBEbyBub3QgbW9kaWZ5LgorCisjcHJhZ21hIG9uY2UKKworI2lu
Y2x1ZGUgPGRvbWppdC9ET01KSVRIZWFwUmFuZ2UuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeyBu
YW1lc3BhY2UgRE9NSklUIHsgbmFtZXNwYWNlIEFic3RyYWN0SGVhcFJlcG9zaXRvcnkgeworRU9T
CisKK2Zvb3RlciA9IDw8LUVPUworfSB9IH0KK0VPUworCiskaW5wdXRGaWxlTmFtZSA9IEFSR1Yu
c2hpZnQKKyRvdXRwdXRGaWxlTmFtZSA9IEFSR1Yuc2hpZnQKK0ZpbGUub3Blbigkb3V0cHV0Rmls
ZU5hbWUsICJ3Iikge3xvdXRwdXR8CisgICAgRmlsZS5vcGVuKCRpbnB1dEZpbGVOYW1lLCAicmIi
KSB7fGZpbGV8CisgICAgICAgIHRyZWUgPSBZQU1MOjpsb2FkKGZpbGUucmVhZCgpKQorICAgICAg
ICBoZWFwID0gdHJlZS5tYXAge3xrZXksIHZhbHVlfAorICAgICAgICAgICAgQWJzdHJhY3RIZWFw
Lm5ldyhrZXksIHZhbHVlKQorICAgICAgICB9LmZpcnN0CisgICAgICAgIGhlYXAuY29tcHV0ZSgw
KQorCisgICAgICAgIG91dHB1dC5wcmludChoZWFkZXIpCisgICAgICAgIG91dHB1dC5wdXRzKCIv
KiBET01KSVQgQWJzdHJhY3QgSGVhcCBUcmVlLiIpCisgICAgICAgIGhlYXAuZGVlcER1bXAob3V0
cHV0LCAwKQorICAgICAgICBvdXRwdXQucHV0cygiKi8iKQorICAgICAgICBoZWFwLmdlbmVyYXRl
KG91dHB1dCkKKyAgICAgICAgb3V0cHV0LnByaW50KGZvb3RlcikKKyAgICB9Cit9CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXgg
NDdiZGFiNDE0OGUyZWIyZTA4NDQ5ZmQ4YzI3NTljYzZkYjhmM2NmYS4uMDIxZmU4NmUyMTE2NWY2
NWQ1OTdlYjdjYzBiZDNkZDJhNjdlYWFlYiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDE2LTEx
LTAyICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgorCisgICAgICAgIFtE
T01KSVRdIEFkZCBET01KSVQ6OlNpZ25hdHVyZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYyOTgwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBqcy9kb20vZG9taml0LWFjY2Vzc29yLWxpY20uaHRtbDoK
KyAgICAgICAgKiBqcy9kb20vZG9taml0LWZ1bmN0aW9uLWVmZmVjdC1zaG91bGQtb3ZlcmxhcC13
aXRoLWNhbGwtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBqcy9kb20vZG9taml0LWZ1
bmN0aW9uLWVmZmVjdC1zaG91bGQtb3ZlcmxhcC13aXRoLWNhbGwuaHRtbDogQWRkZWQuCisgICAg
ICAgICoganMvZG9tL2RvbWppdC1mdW5jdGlvbi1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAg
ICAqIGpzL2RvbS9kb21qaXQtZnVuY3Rpb24tbGljbS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAg
ICAgICAqIGpzL2RvbS9kb21qaXQtZnVuY3Rpb24tbGljbS5odG1sOiBDb3BpZWQgZnJvbSBMYXlv
dXRUZXN0cy9qcy9kb20vZG9taml0LWFjY2Vzc29yLWxpY20uaHRtbC4KKyAgICAgICAgKiBqcy9k
b20vZG9taml0LWZ1bmN0aW9uLXR5cGUtY29udHJhZGljdGlvbi1leHBlY3RlZC50eHQ6IEFkZGVk
LgorICAgICAgICAqIGpzL2RvbS9kb21qaXQtZnVuY3Rpb24tdHlwZS1jb250cmFkaWN0aW9uLmh0
bWw6IENvcGllZCBmcm9tIExheW91dFRlc3RzL2pzL2RvbS9kb21qaXQtYWNjZXNzb3ItbGljbS5o
dG1sLgorICAgICAgICAqIGpzL2RvbS9kb21qaXQtZnVuY3Rpb24tdHlwZS1mYWlsdXJlLWV4cGVj
dGVkLnR4dDogQWRkZWQuCisgICAgICAgICoganMvZG9tL2RvbWppdC1mdW5jdGlvbi10eXBlLWZh
aWx1cmUuaHRtbDogQ29waWVkIGZyb20gTGF5b3V0VGVzdHMvanMvZG9tL2RvbWppdC1hY2Nlc3Nv
ci1saWNtLmh0bWwuCisgICAgICAgICoganMvZG9tL2RvbWppdC1mdW5jdGlvbi5odG1sOiBBZGRl
ZC4KKwogMjAxNi0xMS0wMSAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CiAKICAg
ICAgICAgSW5kZXhlZERCIDIuMDogU3VwcG9ydCBJREJJbmRleCBnZXRBbGwvZ2V0QWxsS2V5cy4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL2RvbS9kb21qaXQtYWNjZXNzb3ItbGljbS5odG1s
IGIvTGF5b3V0VGVzdHMvanMvZG9tL2RvbWppdC1hY2Nlc3Nvci1saWNtLmh0bWwKaW5kZXggZTU2
M2ViYTg5ZmZjZGEyOTFiNTI0ZGNkZjc1MGUyYTMwNmFlMzIwNS4uNDBkNTU2MGRhMDUzOWNiZjA4
NGE5ZTFkMWVmM2ZlM2YxZGMzNTQ0ZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvanMvZG9tL2Rv
bWppdC1hY2Nlc3Nvci1saWNtLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvanMvZG9tL2RvbWppdC1h
Y2Nlc3Nvci1saWNtLmh0bWwKQEAgLTEsMTQgKzEsMyBAQAotPCFET0NUWVBFIEhUTUw+Ci08aHRt
bCBsYW5nPSJlbiI+Ci08aGVhZD4KLTxtZXRhIGNoYXJzZXQ9IlVURi04Ij4KLTwvaGVhZD4KLTxi
b2R5PgotPHNjcmlwdD4KLQotPC9zY3JpcHQ+Ci08L2JvZHk+Ci08L2h0bWw+CiA8IURPQ1RZUEUg
aHRtbD4KIDxodG1sPgogPGhlYWQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9kb20vZG9t
aml0LWZ1bmN0aW9uLWVmZmVjdC1zaG91bGQtb3ZlcmxhcC13aXRoLWNhbGwtZXhwZWN0ZWQudHh0
IGIvTGF5b3V0VGVzdHMvanMvZG9tL2RvbWppdC1mdW5jdGlvbi1lZmZlY3Qtc2hvdWxkLW92ZXJs
YXAtd2l0aC1jYWxsLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xMWRjMTk2YTMyZTI4OGMxMmY1
MTQ1NjFjZmMyMTRkMjllYjljODE3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMv
ZG9tL2RvbWppdC1mdW5jdGlvbi1lZmZlY3Qtc2hvdWxkLW92ZXJsYXAtd2l0aC1jYWxsLWV4cGVj
dGVkLnR4dApAQCAtMCwwICsxLDEwIEBACitUZXN0IGZ1bmN0aW9uIGNhbGxzIHNob3VsZCBvdmVy
bGFwIHdpdGggZWZmZWN0cyBvZiBET01KSVQgZnVuY3Rpb25zLgorCitPbiBzdWNjZXNzLCB5b3Ug
d2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBD
T01QTEVURSIuCisKKworUEFTUyB0ZXN0KCkgaXMgdHJ1ZQorUEFTUyBzdWNjZXNzZnVsbHlQYXJz
ZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pz
L2RvbS9kb21qaXQtZnVuY3Rpb24tZWZmZWN0LXNob3VsZC1vdmVybGFwLXdpdGgtY2FsbC5odG1s
IGIvTGF5b3V0VGVzdHMvanMvZG9tL2RvbWppdC1mdW5jdGlvbi1lZmZlY3Qtc2hvdWxkLW92ZXJs
YXAtd2l0aC1jYWxsLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjhjYjM5MmIyOTQxYmJiOGQzMzFhNzkzMzFk
NThjM2ZhNTgzMDVlNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2pzL2RvbS9kb21q
aXQtZnVuY3Rpb24tZWZmZWN0LXNob3VsZC1vdmVybGFwLXdpdGgtY2FsbC5odG1sCkBAIC0wLDAg
KzEsMzMgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIu
Li8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+
Cis8ZGl2IGlkPSJ0YXJnZXQiPjwvZGl2PgorPC9kaXY+CisKKzxzY3JpcHQ+CitkZXNjcmlwdGlv
bignVGVzdCBmdW5jdGlvbiBjYWxscyBzaG91bGQgb3ZlcmxhcCB3aXRoIGVmZmVjdHMgb2YgRE9N
SklUIGZ1bmN0aW9ucy4nKTsKKworZnVuY3Rpb24gdGVzdCgpCit7CisgICAgdmFyIHRhcmdldCA9
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0YXJnZXQnKTsKKyAgICB0YXJnZXQuc2V0QXR0cmli
dXRlKCJjb2NvYSIsICIwIik7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxZTQ7ICsraSkgewor
ICAgICAgICB2YXIgcmV0ID0gdGFyZ2V0LmdldEF0dHJpYnV0ZSgiY29jb2EiKTsKKyAgICAgICAg
aWYgKHJldCAhPT0gU3RyaW5nKGkpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAg
ICB0YXJnZXQuc2V0QXR0cmlidXRlKCJjb2NvYSIsIFN0cmluZyhpICsgMSkpOworICAgICAgICB2
YXIgcmV0ID0gdGFyZ2V0LmdldEF0dHJpYnV0ZSgiY29jb2EiKTsKKyAgICAgICAgaWYgKHJldCA9
PT0gU3RyaW5nKGkpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICByZXR1
cm4gdHJ1ZTsKK30KKworc2hvdWxkQmVUcnVlKGB0ZXN0KClgKTsKKzwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5
PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvZG9tL2RvbWppdC1mdW5jdGlv
bi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9qcy9kb20vZG9taml0LWZ1bmN0aW9uLWV4cGVj
dGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi40NWU1NmViZGNkOWY2ZjE4NmM0N2NlNzY4YzE1YzIyNWViZTJk
MGM3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMvZG9tL2RvbWppdC1mdW5jdGlv
bi1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMCBAQAorVGVzdCBET01KSVQgZnVuY3Rpb25zIHdv
cmsuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2Fn
ZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIEFsbCB0ZXN0cyBwYXNz
ZWQuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvZG9tL2RvbWppdC1mdW5jdGlvbi1saWNtLWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL2pzL2RvbS9kb21qaXQtZnVuY3Rpb24tbGljbS1leHBlY3Rl
ZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uZjEzYzAzMzA1OTY2MmU1NThiYzZmYjlkNzM5YWIzN2U3OTYxYzhm
YgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2pzL2RvbS9kb21qaXQtZnVuY3Rpb24t
bGljbS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw4IEBACitUZXN0IERPTUpJVCBmdW5jdGlvbiB3
aWxsIGJlIExJQ00tZWQuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAi
UEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworUEFTUyBzdWNj
ZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2pzL2RvbS9kb21qaXQtZnVuY3Rpb24tbGljbS5odG1sIGIvTGF5b3V0VGVzdHMv
anMvZG9tL2RvbWppdC1mdW5jdGlvbi1saWNtLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWYyZTM5OWRkMzU5
ZTFjNGZjYjRkZmRlMmJhY2U5ZTFhMGQ0NGQzOQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2pzL2RvbS9kb21qaXQtZnVuY3Rpb24tbGljbS5odG1sCkBAIC0wLDAgKzEsMzUgQEAKKzwh
RE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJj
ZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJk
ZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKworPGRpdiBpZD0i
cGFyZW50Tm9kZSI+Cis8ZGl2IGlkPSJwcmV2aW91c1NpYmxpbmciPjwvZGl2PjxkaXYgaWQ9InRh
cmdldCI+PGRpdiBpZD0iZmlyc3RDaGlsZCI+PC9kaXY+PGRpdiBpZD0ibGFzdENoaWxkIj48L2Rp
dj48L2Rpdj48ZGl2IGlkPSJuZXh0U2libGluZyI+PC9kaXY+Cis8L2Rpdj4KKworPHNjcmlwdD4K
K2Rlc2NyaXB0aW9uKCdUZXN0IERPTUpJVCBmdW5jdGlvbiB3aWxsIGJlIExJQ00tZWQuJyk7CisK
K2Z1bmN0aW9uIHRlc3QoKSB7CisgICAgdmFyIGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo
J2RpdicpOworICAgIHZhciByZXQgPSAiaW52YWxpZCI7CisgICAgZGl2LnNldEF0dHJpYnV0ZSgi
Y29jb2EiLCAiQ29jb2EiKTsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IDFlNDsgKytpKQorICAg
ICAgICByZXQgPSBkaXYuZ2V0QXR0cmlidXRlKCJjb2NvYSIpOworICAgIHJldHVybiByZXQ7Cit9
Cit2YXIgcmVzdWx0OworKGZ1bmN0aW9uICgpIHsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IDEw
MDsgKytpKSB7CisgICAgICAgIHJlc3VsdCA9IHRlc3QoKTsKKyAgICAgICAgc2hvdWxkQmUoYHJl
c3VsdGAsIGAiQ29jb2EiYCwgdHJ1ZSk7CisgICAgfQorfSgpKTsKKzwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5
PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvZG9tL2RvbWppdC1mdW5jdGlv
bi10eXBlLWNvbnRyYWRpY3Rpb24tZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvanMvZG9tL2Rv
bWppdC1mdW5jdGlvbi10eXBlLWNvbnRyYWRpY3Rpb24tZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjNkNjg3N2Q0YTgwMDY4OGIyMTY3N2JlZmFmZmVlZmZkOGFiMGI3OTYKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9qcy9kb20vZG9taml0LWZ1bmN0aW9uLXR5cGUtY29udHJhZGljdGlv
bi1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw4IEBACitUZXN0IERPTUpJVCBmdW5jdGlvbiB3aWxs
IGNhdXNlIHR5cGUgY29udHJhZGljdGlvbiBnaXZpbmcgdXAuCisKK09uIHN1Y2Nlc3MsIHlvdSB3
aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENP
TVBMRVRFIi4KKworUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBM
RVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL2RvbS9kb21qaXQtZnVuY3Rpb24tdHlw
ZS1jb250cmFkaWN0aW9uLmh0bWwgYi9MYXlvdXRUZXN0cy9qcy9kb20vZG9taml0LWZ1bmN0aW9u
LXR5cGUtY29udHJhZGljdGlvbi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg0ZGM1YjY3Njk0MThlOTY1NTVi
YWI4Mzg3YzMwNjAzNGFmNWMwYzAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9qcy9k
b20vZG9taml0LWZ1bmN0aW9uLXR5cGUtY29udHJhZGljdGlvbi5odG1sCkBAIC0wLDAgKzEsMzUg
QEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9y
ZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2
IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKworPGRp
diBpZD0icGFyZW50Tm9kZSI+Cis8ZGl2IGlkPSJwcmV2aW91c1NpYmxpbmciPjwvZGl2PjxkaXYg
aWQ9InRhcmdldCI+PGRpdiBpZD0iZmlyc3RDaGlsZCI+PC9kaXY+PGRpdiBpZD0ibGFzdENoaWxk
Ij48L2Rpdj48L2Rpdj48ZGl2IGlkPSJuZXh0U2libGluZyI+PC9kaXY+Cis8L2Rpdj4KKworPHNj
cmlwdD4KK2Rlc2NyaXB0aW9uKCdUZXN0IERPTUpJVCBmdW5jdGlvbiB3aWxsIGNhdXNlIHR5cGUg
Y29udHJhZGljdGlvbiBnaXZpbmcgdXAuJyk7CisKK3ZhciBkaXYgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50KCdkaXYnKTsKK2Rpdi5zZXRBdHRyaWJ1dGUoImNvY29hIiwgIkNvY29hIik7CitmdW5j
dGlvbiB0ZXN0KGRpdikgeworICAgIHZhciByZXQgPSAiaW52YWxpZCI7CisgICAgZm9yICh2YXIg
aSA9IDA7IGkgPCAxZTQ7ICsraSkKKyAgICAgICAgcmV0ID0gZGl2LmdldEF0dHJpYnV0ZSgyMDAp
OworICAgIHJldHVybiByZXQ7Cit9Cit2YXIgcmVzdWx0OworKGZ1bmN0aW9uICgpIHsKKyAgICBm
b3IgKHZhciBpID0gMDsgaSA8IDEwMDsgKytpKSB7CisgICAgICAgIHJlc3VsdCA9IHRlc3QoZGl2
KTsKKyAgICAgICAgc2hvdWxkQmUoYHJlc3VsdGAsIGBudWxsYCwgdHJ1ZSk7CisgICAgfQorfSgp
KTsKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3Qu
anMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
anMvZG9tL2RvbWppdC1mdW5jdGlvbi10eXBlLWZhaWx1cmUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0
VGVzdHMvanMvZG9tL2RvbWppdC1mdW5jdGlvbi10eXBlLWZhaWx1cmUtZXhwZWN0ZWQudHh0Cm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjJjMTAyYjM3NmJmODIzMmI0MmJkMWEzY2U0MWRlMTc3MWEyN2I2YzUKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9qcy9kb20vZG9taml0LWZ1bmN0aW9uLXR5cGUtZmFp
bHVyZS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw4IEBACitUZXN0IERPTUpJVCBmdW5jdGlvbiB3
aWxsIGNhdXNlIEJhZFR5cGUgT1NSIGV4aXRzLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUg
YSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIu
CisKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9kb20vZG9taml0LWZ1bmN0aW9uLXR5cGUtZmFpbHVy
ZS5odG1sIGIvTGF5b3V0VGVzdHMvanMvZG9tL2RvbWppdC1mdW5jdGlvbi10eXBlLWZhaWx1cmUu
aHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi42Yjc2NjE0MTg3ZWRhODdkYWMyNmMyMGE2ZTMxMjJjZjA2NTRhODE2
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMvZG9tL2RvbWppdC1mdW5jdGlvbi10
eXBlLWZhaWx1cmUuaHRtbApAQCAtMCwwICsxLDM5IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1s
PgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48
L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2Pgor
PGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisKKzxkaXYgaWQ9InBhcmVudE5vZGUiPgorPGRpdiBp
ZD0icHJldmlvdXNTaWJsaW5nIj48L2Rpdj48ZGl2IGlkPSJ0YXJnZXQiPjxkaXYgaWQ9ImZpcnN0
Q2hpbGQiPjwvZGl2PjxkaXYgaWQ9Imxhc3RDaGlsZCI+PC9kaXY+PC9kaXY+PGRpdiBpZD0ibmV4
dFNpYmxpbmciPjwvZGl2PgorPC9kaXY+CisKKzxzY3JpcHQ+CitkZXNjcmlwdGlvbignVGVzdCBE
T01KSVQgZnVuY3Rpb24gd2lsbCBjYXVzZSBCYWRUeXBlIE9TUiBleGl0cy4nKTsKKwordmFyIGRp
diA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOworZGl2LnNldEF0dHJpYnV0ZSgiY29j
b2EiLCAiQ29jb2EiKTsKK2Z1bmN0aW9uIHRlc3QoZGl2LCBuYW1lKSB7CisgICAgdmFyIHJldCA9
ICJpbnZhbGlkIjsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IDFlNDsgKytpKQorICAgICAgICBy
ZXQgPSBkaXYuZ2V0QXR0cmlidXRlKG5hbWUpOworICAgIHJldHVybiByZXQ7Cit9Cit2YXIgcmVz
dWx0OworKGZ1bmN0aW9uICgpIHsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IDEwMDsgKytpKSB7
CisgICAgICAgIHJlc3VsdCA9IHRlc3QoZGl2LCAnY29jb2EnKTsKKyAgICAgICAgc2hvdWxkQmUo
YHJlc3VsdGAsIGAiQ29jb2EiYCwgdHJ1ZSk7CisgICAgfQorICAgIGZvciAodmFyIGkgPSAwOyBp
IDwgMTAwOyArK2kpIHsKKyAgICAgICAgcmVzdWx0ID0gdGVzdChkaXYsIDQwMCk7CisgICAgICAg
IHNob3VsZEJlKGByZXN1bHRgLCBgbnVsbGAsIHRydWUpOworICAgIH0KK30oKSk7Cis8L3Njcmlw
dD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3Njcmlw
dD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL2RvbS9kb21q
aXQtZnVuY3Rpb24uaHRtbCBiL0xheW91dFRlc3RzL2pzL2RvbS9kb21qaXQtZnVuY3Rpb24uaHRt
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi45MWVhOGE1OTlkODk2NWRlNWEwM2E4NTRkNDk0M2RlNWI5YWMzZDY0Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMvZG9tL2RvbWppdC1mdW5jdGlvbi5odG1s
CkBAIC0wLDAgKzEsNTggQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFk
PgorPGJvZHk+Cis8ZGl2IGlkPSJ0YXJnZXQiIGNvY29hPSJjb2NvYSI+PGRpdiBpZD0iZmlyc3RD
aGlsZCI+PC9kaXY+PGRpdiBpZD0ibGFzdENoaWxkIj48L2Rpdj48L2Rpdj4KKzwvZGl2PgorCis8
c2NyaXB0PgorZGVzY3JpcHRpb24oJ1Rlc3QgRE9NSklUIGZ1bmN0aW9ucyB3b3JrLicpOwordmFy
IGRpdjsKKyhmdW5jdGlvbiAoKSB7CisgICAgZGl2ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
J3RhcmdldCcpOworCisgICAgZnVuY3Rpb24gYSgpCisgICAgeworICAgICAgICByZXR1cm4gZGl2
LmdldEF0dHJpYnV0ZSgnY29jb2EnKSA9PT0gJ2NvY29hJzsKKyAgICB9CisKKyAgICBmdW5jdGlv
biBiKCkKKyAgICB7CisgICAgICAgIHJldHVybiBkaXYuZ2V0QXR0cmlidXRlTm9kZSgnY29jb2En
KS5ub2RlVHlwZSA9PT0gTm9kZS5BVFRSSUJVVEVfTk9ERTsKKyAgICB9CisKKyAgICBmdW5jdGlv
biBjKCkKKyAgICB7CisgICAgICAgIHJldHVybiBkaXYuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2Rp
dicpLmxlbmd0aCA9PT0gMjsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBkKCkKKyAgICB7CisgICAg
ICAgIHJldHVybiBkaXYuaGFzQXR0cmlidXRlKCdjb2NvYScpID09PSB0cnVlOworICAgIH0KKwor
ICAgIGZ1bmN0aW9uIG1haW4oKQorICAgIHsKKyAgICAgICAgaWYgKCFhKCkpCisgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgICAgIGlmICghYigpKQorICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgICAgICBpZiAoIWMoKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAg
ICAgaWYgKCFkKCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHJldHVybiB0
cnVlOworICAgIH0KKworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMWU0OyArK2kpIHsKKyAgICAg
ICAgaWYgKCFtYWluKCkpCisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoImVycm9yIik7Cisg
ICAgfQorICAgIHRlc3RQYXNzZWQoIkFsbCB0ZXN0cyBwYXNzZWQuIik7Cit9KCkpOworPC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3Jp
cHQ+Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>293717</attachid>
            <date>2016-11-02 16:55:48 -0700</date>
            <delta_ts>2016-11-02 17:30:46 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-162980-20161102165149.patch</filename>
            <type>text/plain</type>
            <size>184082</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA4Mjk4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA0
NjMzZTdhZjU1NDJkYmFhYzYzZGZhOGEzNjg3YjExMTcxZGNmNWM5Li45MDBiNTUyYTEwODYwZDMw
NjA5NDRkZWNlZDJiYmFjZWFkNTFmZDhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMzMgQEAKKzIwMTYtMTEtMDIgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFp
bC5jb20+CisKKyAgICAgICAgW0RPTUpJVF0gQWRkIERPTUpJVDo6U2lnbmF0dXJlCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjI5ODAKKworICAgICAg
ICBSZXZpZXdlZCBieSBTYWFtIEJhcmF0aS4KKworICAgICAgICBUaGlzIHBhdGNoIGludHJvZHVj
ZXMgYSBuZXcgbWVjaGFuaXNtIGNhbGxlZCBET01KSVQ6OlNpZ25hdHVyZS4gV2UgY2FuIGFubm90
YXRlIHRoZSBmdW5jdGlvbiB3aXRoIERPTUpJVDo6U2lnbmF0dXJlLgorICAgICAgICBET01KSVQ6
OlNpZ25hdHVyZSBoYXMgdHlwZSBpbmZvcm1hdGlvbiBvZiB0aGF0IGZ1bmN0aW9uLiBBbmQgaXQg
YWxzbyBtYWludGFpbnMgdGhlIGVmZmVjdCBvZiB0aGUgZnVuY3Rpb24gYW5kIHRoZQorICAgICAg
ICBwb2ludGVyIHRvIHRoZSB1bnNhZmUgZnVuY3Rpb24uIFRoZSB1bnNhZmUgZnVuY3Rpb24gbWVh
bnMgdGhlIGZ1bmN0aW9uIHdpdGhvdXQgdHlwZSBhbmQgYXJndW1lbnQgY291bnQgY2hlY2tzLgor
ICAgICAgICBCeSB1c2luZyB0aGVzZSBpbmZvcm1hdGlvbiwgd2UgY2FuIHNlcGFyYXRlIHR5cGUg
YW5kIGFyZ3VtZW50IGNvdW50IGNoZWNrcyBmcm9tIHRoZSBmdW5jdGlvbi4gQW5kIHdlIGNhbiBl
bWl0CisgICAgICAgIHRoZXNlIHRoaW5ncyBhcyBERkcgY2hlY2tzIGFuZCBjb252ZXJ0IHRoZSBm
dW5jdGlvbiBjYWxsIGl0c2VsZiB0byBDYWxsRE9NIG5vZGUuIENhbGxET00gbm9kZSBjYW4gY2Fs
bCB0aGUgdW5zYWZlCisgICAgICAgIGZ1bmN0aW9uIGRpcmVjdGx5IHdpdGhvdXQgYW55IGNoZWNr
cy4gRnVydGhlcm1vcmUsIHRoaXMgQ2FsbERPTSBub2RlIGNhbiByZXByZXNlbnQgaXRzIG93biBj
bG9iYmVyaXppbmcgcnVsZXMgYmFzZWQKKyAgICAgICAgb24gRE9NSklUOjpFZmZlY3QgbWFpbnRh
aW5lZCBieSBET01KSVQ6OlNpZ25hdHVyZS4gSXQgYWxsb3dzIHVzIHRvIG1ha2Ugb3BhcXVlIENh
bGwgbm9kZSB0byBhIENhbGxET00gbm9kZSB0aGF0CisgICAgICAgIG1lcmVseSByZWFkcyBzb21l
IHBhcnQgb2YgaGVhcC4gVGhlc2UgY2hhbmdlcyAoMSkgY2FuIGRyb3AgZHVwbGljYXRlIHR5cGUg
Y2hlY2tzIGluIERGRywgKDIpIG9mZmVyIGFiaWxpdHkgdG8gbW92ZQorICAgICAgICBDYWxsRE9N
IG5vZGUgdG8gc29tZXdoZXJlLCBhbmQgKDMpIHRyYWNrIG1vcmUgZGV0YWlsZWQgaGVhcCByZWFk
cyBhbmQgd3JpdGVzIG9mIENhbGxET00gbm9kZXMuCisKKyAgICAgICAgV2UgZmlyc3QgZW1pdCBD
YWxsIG5vZGUgd2l0aCBET01KSVQ6OlNpZ25hdHVyZSBpbiBERkdCeXRlQ29kZVBhcnNlci4gQW5k
IGluIHRoZSBmaXh1cCBwaGFzZSwgd2UgYXR0ZW1wdCB0byBsb3dlcgorICAgICAgICBDYWxsIG5v
ZGUgdG8gQ2FsbERPTSBub2RlIHdpdGggY2hlY2tzICYgZWRnZSBmaWx0ZXJzLiBUaGlzIGlzIGJl
Y2F1c2Ugd2UgZG8gbm90IGtub3cgdGhlIHR5cGUgcHJlZGljdGlvbnMgaW4KKyAgICAgICAgREZH
Qnl0ZUNvZGVQYXJzZXIgcGhhc2UuIElmIHdlIGFsd2F5cyBlbWl0IENhbGxET00gbm9kZSBpbiBE
RkdCeXRlQ29kZVBhcnNlciwgaWYgd2UgZXZhbHVhdGUgYGRpdi5nZXRBdHRyaWJ1dGUodHJ1ZSlg
CisgICAgICAgIHRoaW5neSwgdGhlIFVuY291bnRhYmxlIE9TUiBleGl0cyByZXBlYXRlZGx5IGhh
cHBlbiBiZWNhdXNlIEFJIGZpZ3VyZXMgb3V0IHRoZSBhYnN0cmFjdCB2YWx1ZSBpcyBjbGVhcmVk
LgorCisgICAgICAgIEN1cnJlbnRseSwgRE9NSklUIHNpZ25hdHVyZSBvbmx5IGFsbG93cyB0aGUg
dHlwZXMgdGhhdCBjYW4gcmVzaWRlIGluIEdQUi4gVGhpcyBpcyBiZWNhdXNlIHRoZSB0eXBlcyBv
ZiB0aGUgdW5zYWZlCisgICAgICAgIGZ1bmN0aW9uIGFyZ3VtZW50cyBhcmUgcmVwcmVzZW50ZWQg
YXMgdGhlIHNlcXVlbmNlIG9mIHZvaWQqLiBJbiB0aGUgZnV0dXJlLCB3ZSB3aWxsIGV4dGVuZCB0
byBhY2NlcHQgb3RoZXIgdHlwZXMgbGlrZQorICAgICAgICBmbG9hdCwgZG91YmxlIGV0Yy4KKwor
ICAgICAgICBXZSBhbm5vdGF0ZSBzZXZlcmFsIGZ1bmN0aW9ucyBpbiBFbGVtZW50LiBJbiBwYXJ0
aWN1bGFyLCB3ZSBhbm5vdGF0ZSBFbGVtZW50OjpnZXRBdHRyaWJ1dGUuIFRoaXMgYWxsb3dzIHVz
IHRvIHBlcmZvcm0KKyAgICAgICAgTElDTSBpbiBEcm9tYWVvIGRvbS1hdHRyIHRlc3QuIEluIHRo
ZSBEcm9tYWVvIGRvbS1hdHRyIGdldEF0dHJpYnV0ZSB0ZXN0LCB3ZSBjYW4gc2VlIDMyeCBpbXBy
b3ZlbWVudC4gKDEzNDk3NC44IHYucy4gNDIwMy40KQorCisgICAgICAgICogSmF2YVNjcmlwdENv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBieXRlY29kZS9DYWxsVmFy
aWFudC5oOgorICAgICAgICAoSlNDOjpDYWxsVmFyaWFudDo6ZnVuY3Rpb25FeGVjdXRhYmxlKToK
KyAgICAgICAgKEpTQzo6Q2FsbFZhcmlhbnQ6Om5hdGl2ZUV4ZWN1dGFibGUpOgorICAgICAgICAo
SlNDOjpDYWxsVmFyaWFudDo6c2lnbmF0dXJlRm9yKToKKyAgICAgICAgKiBieXRlY29kZS9TcGVj
dWxhdGVkVHlwZS5oOgorICAgICAgICAoSlNDOjppc05vdFN0cmluZ1NwZWN1bGF0aW9uKToKKyAg
ICAgICAgKEpTQzo6aXNOb3RJbnQzMlNwZWN1bGF0aW9uKToKKyAgICAgICAgKEpTQzo6aXNOb3RC
b29sZWFuU3BlY3VsYXRpb24pOgorICAgICAgICAqIGRmZy9ERkdBYnN0cmFjdEludGVycHJldGVy
SW5saW5lcy5oOgorICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJh
Y3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyk6CisgICAgICAgICogZGZnL0RGR0J5dGVDb2Rl
UGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6YWRkQ2FsbCk6
CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUNhbGwpOgorICAgICAg
ICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjphdHRlbXB0VG9JbmxpbmVDYWxsKToKKyAgICAg
ICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW5saW5pbmcpOgorICAgICAgICAo
SlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVET01KSVRDYWxsKToKKyAgICAgICAgKEpT
Qzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayk6CisgICAgICAgICogZGZnL0RGR0Ns
b2JiZXJpemUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpjbG9iYmVyaXplKToKKyAgICAgICAgKiBk
ZmcvREZHRG9lc0dDLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpkb2VzR0MpOgorICAgICAgICAq
IGRmZy9ERkdGaXh1cFBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpGaXh1cFBoYXNlOjpm
aXh1cE5vZGUpOgorICAgICAgICAoSlNDOjpERkc6OkZpeHVwUGhhc2U6OmF0dGVtcHRUb01ha2VD
YWxsRE9NKToKKyAgICAgICAgKEpTQzo6REZHOjpGaXh1cFBoYXNlOjpmaXh1cENoZWNrRE9NKToK
KyAgICAgICAgKEpTQzo6REZHOjpGaXh1cFBoYXNlOjpmaXh1cENhbGxET00pOgorICAgICAgICAq
IGRmZy9ERkdOb2RlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpjb252ZXJ0VG9DYWxs
RE9NKToKKyAgICAgICAgKiBkZmcvREZHTm9kZS5oOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6
Omhhc0hlYXBQcmVkaWN0aW9uKToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpzaG91bGRTcGVj
dWxhdGVOb3RJbnQzMik6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6c2hvdWxkU3BlY3VsYXRl
Tm90Qm9vbGVhbik6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6c2hvdWxkU3BlY3VsYXRlTm90
U3RyaW5nKToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpoYXNTaWduYXR1cmUpOgorICAgICAg
ICAoSlNDOjpERkc6Ok5vZGU6OnNpZ25hdHVyZSk6CisgICAgICAgICogZGZnL0RGR05vZGVUeXBl
Lmg6CisgICAgICAgICogZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcDoKKyAg
ICAgICAgKiBkZmcvREZHU2FmZVRvRXhlY3V0ZS5oOgorICAgICAgICAoSlNDOjpERkc6OnNhZmVU
b0V4ZWN1dGUpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHA6CisgICAgICAg
IChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVDYWxsRE9NKToKKyAgICAgICAgKiBk
ZmcvREZHU3BlY3VsYXRpdmVKSVQuaDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJ
VDo6Y2FsbE9wZXJhdGlvbik6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQu
Y3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToKKyAgICAg
ICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGRvbWppdC9ET01KSVRFZmZlY3QuaDoK
KyAgICAgICAgKEpTQzo6RE9NSklUOjpFZmZlY3Q6OkVmZmVjdCk6CisgICAgICAgIChKU0M6OkRP
TUpJVDo6RWZmZWN0Ojpmb3JXcml0ZSk6CisgICAgICAgIChKU0M6OkRPTUpJVDo6RWZmZWN0Ojpm
b3JSZWFkKToKKyAgICAgICAgKEpTQzo6RE9NSklUOjpFZmZlY3Q6OmZvclJlYWRXcml0ZSk6Cisg
ICAgICAgIChKU0M6OkRPTUpJVDo6RWZmZWN0Ojpmb3JQdXJlKToKKyAgICAgICAgKEpTQzo6RE9N
SklUOjpFZmZlY3Q6OmZvckRlZik6CisgICAgICAgIChKU0M6OkRPTUpJVDo6RWZmZWN0OjptdXN0
R2VuZXJhdGUpOgorICAgICAgICBJbiBjbGFuZywgd2UgY2Fubm90IG1ha2UgdGhpcyBFZmZlY3Qg
Y29uc3RydWN0b3IgY29uc3RleHByIGlmIHdlIHVzZSBPcHRpb25hbDxIZWFwUmFuZ2U+LgorICAg
ICAgICBTbyB3ZSB1c2UgSGVhcFJhbmdlOjp0b3AoKSBmb3IgTnVsbG9wdCBkZWYgbm93LgorCisg
ICAgICAgICogZG9taml0L0RPTUpJVEhlYXBSYW5nZS5oOgorICAgICAgICAoSlNDOjpET01KSVQ6
OkhlYXBSYW5nZTo6ZnJvbVJhdyk6CisgICAgICAgIChKU0M6OkRPTUpJVDo6SGVhcFJhbmdlOjpv
cGVyYXRvcj09KToKKyAgICAgICAgKEpTQzo6RE9NSklUOjpIZWFwUmFuZ2U6Om9wZXJhdG9yIT0p
OgorICAgICAgICAoSlNDOjpET01KSVQ6OkhlYXBSYW5nZTo6ZnJvbUNvbnN0YW50KToKKyAgICAg
ICAgKiBkb21qaXQvRE9NSklUU2lnbmF0dXJlLmg6IENvcGllZCBmcm9tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kb21qaXQvRE9NSklURWZmZWN0LmguCisgICAgICAgIChKU0M6OkRPTUpJVDo6U2ln
bmF0dXJlOjpTaWduYXR1cmUpOgorICAgICAgICAoSlNDOjpET01KSVQ6OlNpZ25hdHVyZTo6YXJn
dW1lbnRDb3VudCk6CisgICAgICAgIChKU0M6OkRPTUpJVDo6U2lnbmF0dXJlOjpjaGVja0RPTSk6
CisgICAgICAgICogZnRsL0ZUTENhcGFiaWxpdGllcy5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6
Y2FuQ29tcGlsZSk6CisgICAgICAgICogZnRsL0ZUTExvd2VyREZHVG9CMy5jcHA6CisgICAgICAg
IChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVOb2RlKToKKyAgICAgICAgKEpT
Qzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZUNhbGxET00pOgorICAgICAgICAqIGpp
dC9KSVRPcGVyYXRpb25zLmg6CisgICAgICAgICogaml0L0pJVFRodW5rcy5jcHA6CisgICAgICAg
IChKU0M6OkpJVFRodW5rczo6aG9zdEZ1bmN0aW9uU3R1Yik6CisgICAgICAgICogaml0L0pJVFRo
dW5rcy5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNCb3VuZEZ1bmN0aW9uLmNwcDoKKyAgICAgICAg
KEpTQzo6SlNCb3VuZEZ1bmN0aW9uOjpjcmVhdGUpOgorICAgICAgICAqIHJ1bnRpbWUvSlNDZWxs
Lmg6CisgICAgICAgICogcnVudGltZS9KU0Z1bmN0aW9uLmNwcDoKKyAgICAgICAgKEpTQzo6SlNG
dW5jdGlvbjo6Y3JlYXRlKToKKyAgICAgICAgKiBydW50aW1lL0pTRnVuY3Rpb24uaDoKKyAgICAg
ICAgKiBydW50aW1lL0pTTmF0aXZlU3RkRnVuY3Rpb24uY3BwOgorICAgICAgICAoSlNDOjpKU05h
dGl2ZVN0ZEZ1bmN0aW9uOjpjcmVhdGUpOgorICAgICAgICAqIHJ1bnRpbWUvSlNPYmplY3QuY3Bw
OgorICAgICAgICAoSlNDOjpKU09iamVjdDo6cHV0RGlyZWN0TmF0aXZlRnVuY3Rpb24pOgorICAg
ICAgICAqIHJ1bnRpbWUvSlNPYmplY3QuaDoKKyAgICAgICAgKiBydW50aW1lL0xvb2t1cC5oOgor
ICAgICAgICAoSlNDOjpIYXNoVGFibGVWYWx1ZTo6ZnVuY3Rpb25MZW5ndGgpOgorICAgICAgICAo
SlNDOjpIYXNoVGFibGVWYWx1ZTo6c2lnbmF0dXJlKToKKyAgICAgICAgKEpTQzo6cmVpZnlTdGF0
aWNQcm9wZXJ0eSk6CisgICAgICAgICogcnVudGltZS9OYXRpdmVFeGVjdXRhYmxlLmNwcDoKKyAg
ICAgICAgKEpTQzo6TmF0aXZlRXhlY3V0YWJsZTo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6TmF0
aXZlRXhlY3V0YWJsZTo6TmF0aXZlRXhlY3V0YWJsZSk6CisgICAgICAgICogcnVudGltZS9OYXRp
dmVFeGVjdXRhYmxlLmg6CisgICAgICAgICogcnVudGltZS9Qcm9wZXJ0eVNsb3QuaDoKKyAgICAg
ICAgKiBydW50aW1lL1ZNLmNwcDoKKyAgICAgICAgKEpTQzo6Vk06OmdldEhvc3RGdW5jdGlvbik6
CisgICAgICAgICogcnVudGltZS9WTS5oOgorCiAyMDE2LTExLTAyICBLZWl0aCBNaWxsZXIgIDxr
ZWl0aF9taWxsZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFdlIHNob3VsZCBub3QgcG9wIGZyb20g
YW4gZW1wdHkgc3RhY2sgaW4gdGhlIFdhc20gZnVuY3Rpb24gcGFyc2VyLgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4
IDRlOTkzNzM5Y2JhNmExMTlkM2VhYTdlYjAzZDAwYjA5MGEzNjcyMTcuLjIwODM5OTJiZGFjZjM2
NzY2ZTQzNGQ0ZDAxNzVlZjRjYjk0NDFlYzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMDQgQEAK
KzIwMTYtMTEtMDIgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisKKyAg
ICAgICAgW0RPTUpJVF0gQWRkIERPTUpJVDo6U2lnbmF0dXJlCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjI5ODAKKworICAgICAgICBSZXZpZXdlZCBi
eSBTYWFtIEJhcmF0aS4KKworICAgICAgICBXZSBpbnRyb2R1Y2UgRE9NSklUOjpTaWduYXR1cmUu
IFRoaXMgc2lnbmF0dXJlIG9iamVjdCBpcyBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBieSBJREwg
Y29kZSBnZW5lcmF0b3IuCisgICAgICAgIEl0IGhvbGRzICgxKSB0eXBlcywgKDIpIHBvaW50ZXIg
dG8gdGhlIHVuc2FmZSBmdW5jdGlvbiAodGhlIGZ1bmN0aW9uIHdpdGhvdXQgY2hlY2tzKSwgYW5k
ICgzKSB0aGUgZWZmZWN0CisgICAgICAgIG9mIHRoZSBmdW5jdGlvbi4gV2UgdXNlIGNvbnN0ZXhw
ciB0byBpbml0aWFsaXplIERPTUpJVDo6U2lnbmF0dXJlIHdpdGhvdXQgaW52b2tpbmcgZ2xvYmFs
IGNvbnN0cnVjdG9ycy4KKyAgICAgICAgVGh1cyB0aGUgY29udGVudCBpcyBlbWJlZGRlZCBpbnRv
IHRoZSBiaW5hcnkgYXMgdGhlIGNvbnN0YW50IHZhbHVlcy4KKworICAgICAgICBXZSBhbHNvIGNs
ZWFuIHVwIHRoZSBJREwgY29kZSBnZW5lcmF0b3IgcmVsYXRlZCB0byBET01KSVQgcGFydC4gSW5z
dGVhZCBvZiBzd2l0Y2hpbmcgdGhpbmdzIGluc2lkZSBJREwKKyAgICAgICAgY29kZSBnZW5lcmF0
b3IsIHdlIHVzZSBDKysgdGVtcGxhdGUgdG8gZGlzcGF0Y2ggdGhpbmdzIGF0IGNvbXBpbGUgdGlt
ZS4gVGhpcyB0ZW1wbGF0ZSBtZXRhIHByb2dyYW1taW5nCisgICAgICAgIGlzIGhpZ2hseSB1dGls
aXplZCBpbiBJREwgdGhlc2UgZGF5cy4KKworICAgICAgICBUbyBtYWtlIERPTUpJVDo6U2lnbmF0
dXJlIGNvbnN0ZXhwciwgd2UgYWxzbyBuZWVkIHRvIGRlZmluZSBET01KSVQgYWJzdHJhY3QgaGVh
cCB0aGluZ3MgaW4gdGhlIGJ1aWxkIHRpbWUuCisgICAgICAgIFRvIGRvIHNvLCB3ZSBpbnRyb2R1
Y2UgYSB0aW55IFJ1Ynkgc2NyaXB0IHRvIGNhbGN1bGF0ZSB0aGUgcmFuZ2Ugb2YgYWJzdHJhY3Qg
aGVhcHMuIFdlIGNhbiBvZmZlciB0aGUgYWJzdHJhY3QKKyAgICAgICAgaGVhcCB0cmVlIGFzIFlB
TUwgZm9ybWF0IGFuZCB0aGUgc2NyaXB0IHdpbGwgcHJvZHVjZSBhIEMrKyBoZWFkZXIgaG9sZGlu
ZyB0aGUgY2FsY3VsYXRlZCBhYnN0cmFjdCBoZWFwIHJhbmdlcworCisgICAgICAgICogQ01ha2VM
aXN0cy50eHQ6CisgICAgICAgICogRGVyaXZlZFNvdXJjZXMubWFrZToKKyAgICAgICAgKiBGb3J3
YXJkaW5nSGVhZGVycy9ieXRlY29kZS9TcGVjdWxhdGVkVHlwZS5oOiBSZW5hbWVkIGZyb20gU291
cmNlL1dlYkNvcmUvZG9taml0L0RPTUpJVEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaC4KKyAgICAg
ICAgKiBGb3J3YXJkaW5nSGVhZGVycy9kb21qaXQvRE9NSklUU2lnbmF0dXJlLmg6IFJlbmFtZWQg
ZnJvbSBTb3VyY2UvV2ViQ29yZS9kb21qaXQvRE9NSklUQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5j
cHAuCisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAg
ICAqIGJpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0Lmg6CisgICAgICAgICogYmluZGluZ3Mv
c2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG06CisgICAgICAgIChHZW5lcmF0ZUhlYWRlcik6Cisg
ICAgICAgIChHZW5lcmF0ZVByb3BlcnRpZXNIYXNoVGFibGUpOgorICAgICAgICAoR2V0VW5zYWZl
QXJndW1lbnRUeXBlKToKKyAgICAgICAgKEdldEFyZ3VtZW50VHlwZUZpbHRlcik6CisgICAgICAg
IChHZXRSZXN1bHRUeXBlRmlsdGVyKToKKyAgICAgICAgKEdlbmVyYXRlSW1wbGVtZW50YXRpb24p
OgorICAgICAgICAoVW5zYWZlVG9OYXRpdmUpOgorICAgICAgICAoR2VuZXJhdGVIYXNoVGFibGVW
YWx1ZUFycmF5KToKKyAgICAgICAgKENvbXB1dGVGdW5jdGlvblNwZWNpYWwpOgorICAgICAgICAq
IGJpbmRpbmdzL3NjcmlwdHMvSURMQXR0cmlidXRlcy50eHQ6CisgICAgICAgICogYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdERPTUpJVC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCaW5k
aW5nQ2FsbGVyPEpTVGVzdERPTUpJVD46OmNhc3RGb3JPcGVyYXRpb24pOgorICAgICAgICAoV2Vi
Q29yZTo6VGVzdERPTUpJVEFueUF0dHJET01KSVQ6OlRlc3RET01KSVRBbnlBdHRyRE9NSklUKToK
KyAgICAgICAgKFdlYkNvcmU6OlRlc3RET01KSVRCb29sZWFuQXR0ckRPTUpJVDo6VGVzdERPTUpJ
VEJvb2xlYW5BdHRyRE9NSklUKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RET01KSVRCeXRlQXR0
ckRPTUpJVDo6VGVzdERPTUpJVEJ5dGVBdHRyRE9NSklUKToKKyAgICAgICAgKFdlYkNvcmU6OlRl
c3RET01KSVRPY3RldEF0dHJET01KSVQ6OlRlc3RET01KSVRPY3RldEF0dHJET01KSVQpOgorICAg
ICAgICAoV2ViQ29yZTo6VGVzdERPTUpJVFNob3J0QXR0ckRPTUpJVDo6VGVzdERPTUpJVFNob3J0
QXR0ckRPTUpJVCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0RE9NSklUVW5zaWduZWRTaG9ydEF0
dHJET01KSVQ6OlRlc3RET01KSVRVbnNpZ25lZFNob3J0QXR0ckRPTUpJVCk6CisgICAgICAgIChX
ZWJDb3JlOjpUZXN0RE9NSklUTG9uZ0F0dHJET01KSVQ6OlRlc3RET01KSVRMb25nQXR0ckRPTUpJ
VCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0RE9NSklUVW5zaWduZWRMb25nQXR0ckRPTUpJVDo6
VGVzdERPTUpJVFVuc2lnbmVkTG9uZ0F0dHJET01KSVQpOgorICAgICAgICAoV2ViQ29yZTo6VGVz
dERPTUpJVExvbmdMb25nQXR0ckRPTUpJVDo6VGVzdERPTUpJVExvbmdMb25nQXR0ckRPTUpJVCk6
CisgICAgICAgIChXZWJDb3JlOjpUZXN0RE9NSklUVW5zaWduZWRMb25nTG9uZ0F0dHJET01KSVQ6
OlRlc3RET01KSVRVbnNpZ25lZExvbmdMb25nQXR0ckRPTUpJVCk6CisgICAgICAgIChXZWJDb3Jl
OjpUZXN0RE9NSklURmxvYXRBdHRyRE9NSklUOjpUZXN0RE9NSklURmxvYXRBdHRyRE9NSklUKToK
KyAgICAgICAgKFdlYkNvcmU6OlRlc3RET01KSVRVbnJlc3RyaWN0ZWRGbG9hdEF0dHJET01KSVQ6
OlRlc3RET01KSVRVbnJlc3RyaWN0ZWRGbG9hdEF0dHJET01KSVQpOgorICAgICAgICAoV2ViQ29y
ZTo6VGVzdERPTUpJVERvdWJsZUF0dHJET01KSVQ6OlRlc3RET01KSVREb3VibGVBdHRyRE9NSklU
KToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RET01KSVRVbnJlc3RyaWN0ZWREb3VibGVBdHRyRE9N
SklUOjpUZXN0RE9NSklUVW5yZXN0cmljdGVkRG91YmxlQXR0ckRPTUpJVCk6CisgICAgICAgIChX
ZWJDb3JlOjpUZXN0RE9NSklURG9tU3RyaW5nQXR0ckRPTUpJVDo6VGVzdERPTUpJVERvbVN0cmlu
Z0F0dHJET01KSVQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdERPTUpJVEJ5dGVTdHJpbmdBdHRy
RE9NSklUOjpUZXN0RE9NSklUQnl0ZVN0cmluZ0F0dHJET01KSVQpOgorICAgICAgICAoV2ViQ29y
ZTo6VGVzdERPTUpJVFVzdlN0cmluZ0F0dHJET01KSVQ6OlRlc3RET01KSVRVc3ZTdHJpbmdBdHRy
RE9NSklUKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RET01KSVROb2RlQXR0ckRPTUpJVDo6VGVz
dERPTUpJVE5vZGVBdHRyRE9NSklUKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RET01KSVRCb29s
ZWFuTnVsbGFibGVBdHRyRE9NSklUOjpUZXN0RE9NSklUQm9vbGVhbk51bGxhYmxlQXR0ckRPTUpJ
VCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0RE9NSklUQnl0ZU51bGxhYmxlQXR0ckRPTUpJVDo6
VGVzdERPTUpJVEJ5dGVOdWxsYWJsZUF0dHJET01KSVQpOgorICAgICAgICAoV2ViQ29yZTo6VGVz
dERPTUpJVE9jdGV0TnVsbGFibGVBdHRyRE9NSklUOjpUZXN0RE9NSklUT2N0ZXROdWxsYWJsZUF0
dHJET01KSVQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdERPTUpJVFNob3J0TnVsbGFibGVBdHRy
RE9NSklUOjpUZXN0RE9NSklUU2hvcnROdWxsYWJsZUF0dHJET01KSVQpOgorICAgICAgICAoV2Vi
Q29yZTo6VGVzdERPTUpJVFVuc2lnbmVkU2hvcnROdWxsYWJsZUF0dHJET01KSVQ6OlRlc3RET01K
SVRVbnNpZ25lZFNob3J0TnVsbGFibGVBdHRyRE9NSklUKToKKyAgICAgICAgKFdlYkNvcmU6OlRl
c3RET01KSVRMb25nTnVsbGFibGVBdHRyRE9NSklUOjpUZXN0RE9NSklUTG9uZ051bGxhYmxlQXR0
ckRPTUpJVCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0RE9NSklUVW5zaWduZWRMb25nTnVsbGFi
bGVBdHRyRE9NSklUOjpUZXN0RE9NSklUVW5zaWduZWRMb25nTnVsbGFibGVBdHRyRE9NSklUKToK
KyAgICAgICAgKFdlYkNvcmU6OlRlc3RET01KSVRMb25nTG9uZ051bGxhYmxlQXR0ckRPTUpJVDo6
VGVzdERPTUpJVExvbmdMb25nTnVsbGFibGVBdHRyRE9NSklUKToKKyAgICAgICAgKFdlYkNvcmU6
OlRlc3RET01KSVRVbnNpZ25lZExvbmdMb25nTnVsbGFibGVBdHRyRE9NSklUOjpUZXN0RE9NSklU
VW5zaWduZWRMb25nTG9uZ051bGxhYmxlQXR0ckRPTUpJVCk6CisgICAgICAgIChXZWJDb3JlOjpU
ZXN0RE9NSklURmxvYXROdWxsYWJsZUF0dHJET01KSVQ6OlRlc3RET01KSVRGbG9hdE51bGxhYmxl
QXR0ckRPTUpJVCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0RE9NSklUVW5yZXN0cmljdGVkRmxv
YXROdWxsYWJsZUF0dHJET01KSVQ6OlRlc3RET01KSVRVbnJlc3RyaWN0ZWRGbG9hdE51bGxhYmxl
QXR0ckRPTUpJVCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0RE9NSklURG91YmxlTnVsbGFibGVB
dHRyRE9NSklUOjpUZXN0RE9NSklURG91YmxlTnVsbGFibGVBdHRyRE9NSklUKToKKyAgICAgICAg
KFdlYkNvcmU6OlRlc3RET01KSVRVbnJlc3RyaWN0ZWREb3VibGVOdWxsYWJsZUF0dHJET01KSVQ6
OlRlc3RET01KSVRVbnJlc3RyaWN0ZWREb3VibGVOdWxsYWJsZUF0dHJET01KSVQpOgorICAgICAg
ICAoV2ViQ29yZTo6VGVzdERPTUpJVERvbVN0cmluZ051bGxhYmxlQXR0ckRPTUpJVDo6VGVzdERP
TUpJVERvbVN0cmluZ051bGxhYmxlQXR0ckRPTUpJVCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0
RE9NSklUQnl0ZVN0cmluZ051bGxhYmxlQXR0ckRPTUpJVDo6VGVzdERPTUpJVEJ5dGVTdHJpbmdO
dWxsYWJsZUF0dHJET01KSVQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdERPTUpJVFVzdlN0cmlu
Z051bGxhYmxlQXR0ckRPTUpJVDo6VGVzdERPTUpJVFVzdlN0cmluZ051bGxhYmxlQXR0ckRPTUpJ
VCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0RE9NSklUTm9kZU51bGxhYmxlQXR0ckRPTUpJVDo6
VGVzdERPTUpJVE5vZGVOdWxsYWJsZUF0dHJET01KSVQpOgorICAgICAgICAoV2ViQ29yZTo6anNU
ZXN0RE9NSklUUHJvdG90eXBlRnVuY3Rpb25HZXRBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29y
ZTo6anNUZXN0RE9NSklUUHJvdG90eXBlRnVuY3Rpb25HZXRBdHRyaWJ1dGVDYWxsZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6dW5zYWZlSnNUZXN0RE9NSklUUHJvdG90eXBlRnVuY3Rpb25HZXRBdHRy
aWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0RE9NSklUUHJvdG90eXBlRnVuY3Rpb25J
dGVtKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdERPTUpJVFByb3RvdHlwZUZ1bmN0aW9uSXRl
bUNhbGxlcik6CisgICAgICAgIChXZWJDb3JlOjp1bnNhZmVKc1Rlc3RET01KSVRQcm90b3R5cGVG
dW5jdGlvbkl0ZW0pOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0RE9NSklUUHJvdG90eXBlRnVu
Y3Rpb25IYXNBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0RE9NSklUUHJvdG90
eXBlRnVuY3Rpb25IYXNBdHRyaWJ1dGVDYWxsZXIpOgorICAgICAgICAoV2ViQ29yZTo6dW5zYWZl
SnNUZXN0RE9NSklUUHJvdG90eXBlRnVuY3Rpb25IYXNBdHRyaWJ1dGUpOgorICAgICAgICAqIGJp
bmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0RE9NSklULmlkbDoKKyAgICAgICAgKiBkb20vRWxlbWVu
dC5pZGw6CisgICAgICAgICogZG9taml0L0RPTUpJVEFic3RyYWN0SGVhcFJlcG9zaXRvcnkueWFt
bDogQWRkZWQuCisgICAgICAgICogZG9taml0L0RPTUpJVElETENvbnZlcnQuaDogQWRkZWQuCisg
ICAgICAgIChXZWJDb3JlOjpET01KSVQ6OkRpcmVjdENvbnZlcnRlcjxJRExET01TdHJpbmc+Ojpk
aXJlY3RDb252ZXJ0PFN0cmluZ0NvbnZlcnNpb25Db25maWd1cmF0aW9uOjpOb3JtYWw+KToKKyAg
ICAgICAgKiBkb21qaXQvRE9NSklUSURMVHlwZS5oOiBBZGRlZC4KKyAgICAgICAgKiBkb21qaXQv
RE9NSklUSURMVHlwZUZpbHRlci5oOiBBZGRlZC4KKyAgICAgICAgKiBkb21qaXQvSlNEb2N1bWVu
dERPTUpJVC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudERvY3VtZW50RWxlbWVudERP
TUpJVDo6Y2FsbERPTUdldHRlcik6CisgICAgICAgICogZG9taml0L0pTTm9kZURPTUpJVC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpOb2RlRmlyc3RDaGlsZERPTUpJVDo6Y2FsbERPTUdldHRlcik6
CisgICAgICAgIChXZWJDb3JlOjpOb2RlTGFzdENoaWxkRE9NSklUOjpjYWxsRE9NR2V0dGVyKToK
KyAgICAgICAgKFdlYkNvcmU6Ok5vZGVOZXh0U2libGluZ0RPTUpJVDo6Y2FsbERPTUdldHRlcik6
CisgICAgICAgIChXZWJDb3JlOjpOb2RlUHJldmlvdXNTaWJsaW5nRE9NSklUOjpjYWxsRE9NR2V0
dGVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVQYXJlbnROb2RlRE9NSklUOjpjYWxsRE9NR2V0
dGVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVPd25lckRvY3VtZW50RE9NSklUOjpjYWxsRE9N
R2V0dGVyKToKKyAgICAgICAgKiBkb21qaXQvZ2VuZXJhdGUtYWJzdHJhY3QtaGVhcC5yYjogQWRk
ZWQuCisKIDIwMTYtMTEtMDIgIEtlaXRoIFJvbGxpbiAgPGtyb2xsaW5AYXBwbGUuY29tPgogCiAg
ICAgICAgIE5ldHdvcmtTZXNzaW9uOiBBZGQgTmV0d29ya0RhdGFUYXNrIGltcGxlbWVudGF0aW9u
IGZvciBibG9icwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2
YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAyZmJkMmU0Y2YzMTdj
MmY4NGUyZTEzOTdkODUxNDExYjU5NjdlMGUyLi5iZjRhMTlkNTkyN2RmZGUxYTlmZjZmMjRhM2U5
YjVmNmM3ODBiZTlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlw
dENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMjE4NCw2ICsy
MTg0LDcgQEAKIAkJRTMzRjUwODUxQjg0MzdBMDAwNDEzODU2IC8qIEpTSW50ZXJuYWxQcm9taXNl
RGVmZXJyZWQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEUzM0Y1MDgzMUI4NDM3QTAwMDQxMzg1NiAvKiBKU0ludGVybmFsUHJvbWlzZURlZmVycmVkLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTMzRjUw
ODcxQjg0NDlFRjAwNDEzODU2IC8qIEpTSW50ZXJuYWxQcm9taXNlQ29uc3RydWN0b3IubHV0Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzNGNTA4NjFC
ODQ0OUVGMDA0MTM4NTYgLyogSlNJbnRlcm5hbFByb21pc2VDb25zdHJ1Y3Rvci5sdXQuaCAqLzsg
fTsKIAkJRTM0RURCRjcxREI1RkZDOTAwREM4N0E1IC8qIEZyYW1lVHJhY2Vycy5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM0RURCRjYxREI1RkZDMTAw
REM4N0E1IC8qIEZyYW1lVHJhY2Vycy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CisJCUUzNTA3MDhBMURDNDlCQkYwMDg5QkNENiAvKiBET01KSVRTaWdu
YXR1cmUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUz
NTA3MDg5MURDNDlCQjYwMDg5QkNENiAvKiBET01KSVRTaWduYXR1cmUuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFMzU0NjIyQjFCNjA2NUQxMDA1
NDUzODYgLyogQ29uc3RydWN0QWJpbGl0eS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRTM1NDYyMkExQjYwNjVEMTAwNTQ1Mzg2IC8qIENvbnN0cnVjdEFi
aWxpdHkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQlFMzU1NUI4QTFEQUUwM0E1MDBGMzY5MjEgLyogRE9NSklUQ2FsbERPTUdldHRlclBhdGNocG9p
bnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzNTU1
Qjg5MURBRTAzQTIwMEYzNjkyMSAvKiBET01KSVRDYWxsRE9NR2V0dGVyUGF0Y2hwb2ludC5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUUzNTVGMzUy
MUI3REM4NTMwMEM1MERDNSAvKiBNb2R1bGVMb2FkZXJQcm90b3R5cGUuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM1NUYzNTAxQjdEQzg1MzAwQzUw
REM1IC8qIE1vZHVsZUxvYWRlclByb3RvdHlwZS5jcHAgKi87IH07CkBAIC00NTg2LDYgKzQ1ODcs
NyBAQAogCQlFMzNGNTA4NjFCODQ0OUVGMDA0MTM4NTYgLyogSlNJbnRlcm5hbFByb21pc2VDb25z
dHJ1Y3Rvci5sdXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNJbnRlcm5h
bFByb21pc2VDb25zdHJ1Y3Rvci5sdXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
RTMzRjUwODgxQjg0NEExQTAwNDEzODU2IC8qIEludGVybmFsUHJvbWlzZUNvbnN0cnVjdG9yLmpz
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5qYXZhc2NyaXB0OyBwYXRoID0gSW50ZXJuYWxQcm9taXNl
Q29uc3RydWN0b3IuanM7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzNEVEQkY2MURC
NUZGQzEwMERDODdBNSAvKiBGcmFtZVRyYWNlcnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gRnJhbWVUcmFjZXJzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUz
NTA3MDg5MURDNDlCQjYwMDg5QkNENiAvKiBET01KSVRTaWduYXR1cmUuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gRE9NSklUU2lnbmF0dXJlLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUUzNTQ2MjJBMUI2MDY1RDEwMDU0NTM4NiAvKiBDb25zdHJ1Y3RBYmlsaXR5
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvbnN0cnVjdEFiaWxpdHkuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM1NTVCODkxREFFMDNBMjAwRjM2OTIxIC8q
IERPTUpJVENhbGxET01HZXR0ZXJQYXRjaHBvaW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IERPTUpJVENhbGxET01HZXR0ZXJQYXRjaHBvaW50Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUUzNTVGMzUwMUI3REM4NTMwMEM1MERDNSAvKiBNb2R1bGVMb2FkZXJQ
cm90b3R5cGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTW9kdWxl
TG9hZGVyUHJvdG90eXBlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTc1MDMs
NiArNzUwNSw3IEBACiAJCQkJRTM3QUQ4M0ExREE0OTI4MDAwRjNENDEyIC8qIERPTUpJVFBhdGNo
cG9pbnRQYXJhbXMuaCAqLywKIAkJCQlFMzdBRDgzQjFEQTQ5MjgwMDBGM0Q0MTIgLyogRE9NSklU
UmVnLmggKi8sCiAJCQkJRTNDQjFFMjQxREE3NTQwQTAwRkExRTU2IC8qIERPTUpJVFNsb3dQYXRo
Q2FsbHMuaCAqLywKKwkJCQlFMzUwNzA4OTFEQzQ5QkI2MDA4OUJDRDYgLyogRE9NSklUU2lnbmF0
dXJlLmggKi8sCiAJCQkJRTNGRkM4NTIxREFEN0QxMDAwREVBNTNFIC8qIERPTUpJVFZhbHVlLmgg
Ki8sCiAJCQkpOwogCQkJcGF0aCA9IGRvbWppdDsKQEAgLTg0MjMsNiArODQyNiw3IEBACiAJCQkJ
NDNBQjI2QzYxQzFBNTM1OTAwRDgyQUU2IC8qIEIzTWF0aEV4dHJhcy5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQUQyRkNCRjMxREI1OERBRDAwQjNFNzM2IC8qIFdlYkFzc2VtYmx5SW5zdGFuY2VQcm90
b3R5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDNDI5MEUxNkY1Q0QwMEIzNDQ2MCAvKiBK
U1N0cmluZ1JlZkNGLmggaW4gSGVhZGVycyAqLywKKwkJCQlFMzUwNzA4QTFEQzQ5QkJGMDA4OUJD
RDYgLyogRE9NSklUU2lnbmF0dXJlLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTI4RDRBODE3N0I3
MUM4MDAwN0ZBM0MgLyogSlNTdHJpbmdSZWZQcml2YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQkw
RjkxOUQwRDE1N0VFMEEyMDA0QTRFN0QgLyogSlNTeW1ib2xUYWJsZU9iamVjdC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJNzBFQ0E2MDYxQUZEQkVBMjAwNDQ5NzM5IC8qIEpTVGVtcGxhdGVSZWdpc3Ry
eUtleS5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQ2FsbFZhcmlhbnQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9D
YWxsVmFyaWFudC5oCmluZGV4IGRlNjg4MDA2ZWYxYTk5ZTlkZDYwYjAxYTZlMDE3N2NiOThlYzdi
NTEuLmNiMjg4YzYwYjdhNGYxMzhiYWYyMTQyODQ5ZTEzOTFhOGQxMTFiYTcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsVmFyaWFudC5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsVmFyaWFudC5oCkBAIC0yOCw2ICsyOCw3IEBA
CiAjaW5jbHVkZSAiRnVuY3Rpb25FeGVjdXRhYmxlLmgiCiAjaW5jbHVkZSAiSlNDZWxsLmgiCiAj
aW5jbHVkZSAiSlNGdW5jdGlvbi5oIgorI2luY2x1ZGUgIk5hdGl2ZUV4ZWN1dGFibGUuaCIKIAog
bmFtZXNwYWNlIEpTQyB7CiAKQEAgLTEyMCw2ICsxMjEsMjAgQEAgY2xhc3MgQ2FsbFZhcmlhbnQg
ewogICAgICAgICAgICAgcmV0dXJuIGpzRHluYW1pY0Nhc3Q8RnVuY3Rpb25FeGVjdXRhYmxlKj4o
ZXhlY3V0YWJsZSk7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KKworICAgIE5hdGl2
ZUV4ZWN1dGFibGUqIG5hdGl2ZUV4ZWN1dGFibGUoKSBjb25zdAorICAgIHsKKyAgICAgICAgaWYg
KEV4ZWN1dGFibGVCYXNlKiBleGVjdXRhYmxlID0gdGhpcy0+ZXhlY3V0YWJsZSgpKQorICAgICAg
ICAgICAgcmV0dXJuIGpzRHluYW1pY0Nhc3Q8TmF0aXZlRXhlY3V0YWJsZSo+KGV4ZWN1dGFibGUp
OworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisKKyAgICBjb25zdCBET01KSVQ6OlNp
Z25hdHVyZSogc2lnbmF0dXJlRm9yKENvZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCkgY29uc3QK
KyAgICB7CisgICAgICAgIGlmIChOYXRpdmVFeGVjdXRhYmxlKiBuYXRpdmVFeGVjdXRhYmxlID0g
dGhpcy0+bmF0aXZlRXhlY3V0YWJsZSgpKQorICAgICAgICAgICAgcmV0dXJuIG5hdGl2ZUV4ZWN1
dGFibGUtPnNpZ25hdHVyZUZvcihraW5kKTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAg
fQogICAgIAogICAgIHZvaWQgZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdDsKICAgICAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TcGVjdWxhdGVkVHlwZS5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmgKaW5kZXgg
ZjQzZGZjZDMxNTg3MWU5ODk1M2VhMmRkZGM0YmYzMzUyNWNjZGZkZi4uZTIzZmQyYzVmNTRjZWUw
OWM3YTIzYmRjMTQ5OTkwYjYwOWIwMTkwMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmgKQEAgLTE1MSw2ICsxNTEsMTEgQEAgaW5saW5lIGJv
b2wgaXNTdHJpbmdTcGVjdWxhdGlvbihTcGVjdWxhdGVkVHlwZSB2YWx1ZSkKICAgICByZXR1cm4g
ISF2YWx1ZSAmJiAodmFsdWUgJiBTcGVjU3RyaW5nKSA9PSB2YWx1ZTsKIH0KIAoraW5saW5lIGJv
b2wgaXNOb3RTdHJpbmdTcGVjdWxhdGlvbihTcGVjdWxhdGVkVHlwZSB2YWx1ZSkKK3sKKyAgICBy
ZXR1cm4gdmFsdWUgJiYgISh2YWx1ZSAmIFNwZWNTdHJpbmcpOworfQorCiBpbmxpbmUgYm9vbCBp
c1N0cmluZ09yT3RoZXJTcGVjdWxhdGlvbihTcGVjdWxhdGVkVHlwZSB2YWx1ZSkKIHsKICAgICBy
ZXR1cm4gISF2YWx1ZSAmJiAodmFsdWUgJiAoU3BlY1N0cmluZyB8IFNwZWNPdGhlcikpID09IHZh
bHVlOwpAQCAtMzAzLDYgKzMwOCwxMSBAQCBpbmxpbmUgYm9vbCBpc0ludDMyU3BlY3VsYXRpb24o
U3BlY3VsYXRlZFR5cGUgdmFsdWUpCiAgICAgcmV0dXJuIHZhbHVlICYmICEodmFsdWUgJiB+U3Bl
Y0ludDMyT25seSk7CiB9CiAKK2lubGluZSBib29sIGlzTm90SW50MzJTcGVjdWxhdGlvbihTcGVj
dWxhdGVkVHlwZSB2YWx1ZSkKK3sKKyAgICByZXR1cm4gdmFsdWUgJiYgISh2YWx1ZSAmIFNwZWNJ
bnQzMk9ubHkpOworfQorCiBpbmxpbmUgYm9vbCBpc0ludDMyT3JCb29sZWFuU3BlY3VsYXRpb24o
U3BlY3VsYXRlZFR5cGUgdmFsdWUpCiB7CiAgICAgcmV0dXJuIHZhbHVlICYmICEodmFsdWUgJiB+
KFNwZWNCb29sZWFuIHwgU3BlY0ludDMyT25seSkpOwpAQCAtMzg4LDYgKzM5OCwxMSBAQCBpbmxp
bmUgYm9vbCBpc0Jvb2xlYW5TcGVjdWxhdGlvbihTcGVjdWxhdGVkVHlwZSB2YWx1ZSkKICAgICBy
ZXR1cm4gdmFsdWUgPT0gU3BlY0Jvb2xlYW47CiB9CiAKK2lubGluZSBib29sIGlzTm90Qm9vbGVh
blNwZWN1bGF0aW9uKFNwZWN1bGF0ZWRUeXBlIHZhbHVlKQoreworICAgIHJldHVybiB2YWx1ZSAm
JiAhKHZhbHVlICYgU3BlY0Jvb2xlYW4pOworfQorCiBpbmxpbmUgYm9vbCBpc090aGVyU3BlY3Vs
YXRpb24oU3BlY3VsYXRlZFR5cGUgdmFsdWUpCiB7CiAgICAgcmV0dXJuIHZhbHVlID09IFNwZWNP
dGhlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJ
bnRlcnByZXRlcklubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJh
Y3RJbnRlcnByZXRlcklubGluZXMuaAppbmRleCA0M2I1MWExNmVjYmFkYTUwZjlkN2Y4OGVlZTNj
ZjExMjZiN2EyMjRhLi43YWRiYTcxNjAxNDYxNTEwNzJlZjY5OWQyMjZhMmFmM2NlYTA4ZDAyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0
ZXJJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdElu
dGVycHJldGVySW5saW5lcy5oCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiQXJyYXlDb25z
dHJ1Y3Rvci5oIgogI2luY2x1ZGUgIkRGR0Fic3RyYWN0SW50ZXJwcmV0ZXIuaCIKICNpbmNsdWRl
ICJET01KSVRHZXR0ZXJTZXR0ZXIuaCIKKyNpbmNsdWRlICJET01KSVRTaWduYXR1cmUuaCIKICNp
bmNsdWRlICJHZXRCeUlkU3RhdHVzLmgiCiAjaW5jbHVkZSAiR2V0dGVyU2V0dGVyLmgiCiAjaW5j
bHVkZSAiSGFzaE1hcEltcGwuaCIKQEAgLTIzMDMsNiArMjMwNCwxMyBAQCBib29sIEFic3RyYWN0
SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyh1bnNpZ25lZCBj
bG9iYmVyTGltaQogICAgICAgICBmb3JOb2RlKG5vZGUpLnNldFR5cGUobV9ncmFwaCwgY2FsbERP
TUdldHRlckRhdGEtPmRvbUpJVC0+cmVzdWx0VHlwZSgpKTsKICAgICAgICAgYnJlYWs7CiAgICAg
fQorICAgIGNhc2UgQ2FsbERPTTogeworICAgICAgICBjb25zdCBET01KSVQ6OlNpZ25hdHVyZSog
c2lnbmF0dXJlID0gbm9kZS0+c2lnbmF0dXJlKCk7CisgICAgICAgIGlmIChzaWduYXR1cmUtPmVm
ZmVjdC53cml0ZXMpCisgICAgICAgICAgICBjbG9iYmVyV29ybGQobm9kZS0+b3JpZ2luLnNlbWFu
dGljLCBjbG9iYmVyTGltaXQpOworICAgICAgICBmb3JOb2RlKG5vZGUpLnNldFR5cGUobV9ncmFw
aCwgc2lnbmF0dXJlLT5yZXN1bHQpOworICAgICAgICBicmVhazsKKyAgICB9CiAgICAgY2FzZSBD
aGVja0FycmF5OiB7CiAgICAgICAgIGlmIChub2RlLT5hcnJheU1vZGUoKS5hbHJlYWR5Q2hlY2tl
ZChtX2dyYXBoLCBub2RlLCBmb3JOb2RlKG5vZGUtPmNoaWxkMSgpKSkpIHsKICAgICAgICAgICAg
IG1fc3RhdGUuc2V0Rm91bmRDb25zdGFudHModHJ1ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCmluZGV4IDM1ZGMwNzg2YTg5Mzc4NWY3MGY3
YjMyYzBjZjdiY2RkZTlhN2VkZDkuLjk4MmIxODhlZmVjNmI3YzM2MDA4YTA0ZWRjMjllNGE3MTlm
ZWQwYWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQ
YXJzZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJz
ZXIuY3BwCkBAIC0yMTIsNiArMjEyLDggQEAgY2xhc3MgQnl0ZUNvZGVQYXJzZXIgewogICAgIHRl
bXBsYXRlPHR5cGVuYW1lIENoZWNrc0Z1bmN0b3I+CiAgICAgYm9vbCBoYW5kbGVJbnRyaW5zaWND
YWxsKE5vZGUqIGNhbGxlZSwgaW50IHJlc3VsdE9wZXJhbmQsIEludHJpbnNpYywgaW50IHJlZ2lz
dGVyT2Zmc2V0LCBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIFNwZWN1bGF0ZWRUeXBl
IHByZWRpY3Rpb24sIGNvbnN0IENoZWNrc0Z1bmN0b3ImIGluc2VydENoZWNrcyk7CiAgICAgdGVt
cGxhdGU8dHlwZW5hbWUgQ2hlY2tzRnVuY3Rvcj4KKyAgICBib29sIGhhbmRsZURPTUpJVENhbGwo
Tm9kZSogY2FsbGVlLCBpbnQgcmVzdWx0T3BlcmFuZCwgY29uc3QgRE9NSklUOjpTaWduYXR1cmUq
LCBpbnQgcmVnaXN0ZXJPZmZzZXQsIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgU3Bl
Y3VsYXRlZFR5cGUgcHJlZGljdGlvbiwgY29uc3QgQ2hlY2tzRnVuY3RvciYgaW5zZXJ0Q2hlY2tz
KTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGVja3NGdW5jdG9yPgogICAgIGJvb2wgaGFuZGxl
SW50cmluc2ljR2V0dGVyKGludCByZXN1bHRPcGVyYW5kLCBjb25zdCBHZXRCeUlkVmFyaWFudCYg
aW50cmluc2ljVmFyaWFudCwgTm9kZSogdGhpc05vZGUsIGNvbnN0IENoZWNrc0Z1bmN0b3ImIGlu
c2VydENoZWNrcyk7CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hlY2tzRnVuY3Rvcj4KICAgICBi
b29sIGhhbmRsZVR5cGVkQXJyYXlDb25zdHJ1Y3RvcihpbnQgcmVzdWx0T3BlcmFuZCwgSW50ZXJu
YWxGdW5jdGlvbiosIGludCByZWdpc3Rlck9mZnNldCwgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRp
bmdUaGlzLCBUeXBlZEFycmF5VHlwZSwgY29uc3QgQ2hlY2tzRnVuY3RvciYgaW5zZXJ0Q2hlY2tz
KTsKQEAgLTgxNywxOCArODE5LDE4IEBAIGNsYXNzIEJ5dGVDb2RlUGFyc2VyIHsKICAgICB9CiAg
ICAgCiAgICAgTm9kZSogYWRkQ2FsbCgKLSAgICAgICAgaW50IHJlc3VsdCwgTm9kZVR5cGUgb3As
IE9wSW5mbyBvcEluZm8sIE5vZGUqIGNhbGxlZSwgaW50IGFyZ0NvdW50LCBpbnQgcmVnaXN0ZXJP
ZmZzZXQsCisgICAgICAgIGludCByZXN1bHQsIE5vZGVUeXBlIG9wLCBjb25zdCBET01KSVQ6OlNp
Z25hdHVyZSogc2lnbmF0dXJlLCBOb2RlKiBjYWxsZWUsIGludCBhcmdDb3VudCwgaW50IHJlZ2lz
dGVyT2Zmc2V0LAogICAgICAgICBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uKQogICAgIHsKICAg
ICAgICAgaWYgKG9wID09IFRhaWxDYWxsKSB7CiAgICAgICAgICAgICBpZiAoYWxsSW5saW5lRnJh
bWVzQXJlVGFpbENhbGxzKCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGFkZENhbGxXaXRob3V0
U2V0dGluZ1Jlc3VsdChvcCwgT3BJbmZvKCksIGNhbGxlZSwgYXJnQ291bnQsIHJlZ2lzdGVyT2Zm
c2V0LCBPcEluZm8oKSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIGFkZENhbGxXaXRob3V0U2V0
dGluZ1Jlc3VsdChvcCwgT3BJbmZvKHNpZ25hdHVyZSksIGNhbGxlZSwgYXJnQ291bnQsIHJlZ2lz
dGVyT2Zmc2V0LCBPcEluZm8oKSk7CiAgICAgICAgICAgICBvcCA9IFRhaWxDYWxsSW5saW5lZENh
bGxlcjsKICAgICAgICAgfQogCiAKICAgICAgICAgTm9kZSogY2FsbCA9IGFkZENhbGxXaXRob3V0
U2V0dGluZ1Jlc3VsdCgKLSAgICAgICAgICAgIG9wLCBvcEluZm8sIGNhbGxlZSwgYXJnQ291bnQs
IHJlZ2lzdGVyT2Zmc2V0LCBPcEluZm8ocHJlZGljdGlvbikpOworICAgICAgICAgICAgb3AsIE9w
SW5mbyhzaWduYXR1cmUpLCBjYWxsZWUsIGFyZ0NvdW50LCByZWdpc3Rlck9mZnNldCwgT3BJbmZv
KHByZWRpY3Rpb24pKTsKICAgICAgICAgVmlydHVhbFJlZ2lzdGVyIHJlc3VsdFJlZyhyZXN1bHQp
OwogICAgICAgICBpZiAocmVzdWx0UmVnLmlzVmFsaWQoKSkKICAgICAgICAgICAgIHNldChyZXN1
bHRSZWcsIGNhbGwpOwpAQCAtMTI4Myw3ICsxMjg1LDcgQEAgQnl0ZUNvZGVQYXJzZXI6OlRlcm1p
bmFsaXR5IEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVDYWxsKAogICAgICAgICAvLyBPZGRseSwgdGhp
cyBjb25mbGF0ZXMgY2FsbHMgdGhhdCBoYXZlbid0IGV4ZWN1dGVkIHdpdGggY2FsbHMgdGhhdCBi
ZWhhdmVkIHN1ZmZpY2llbnRseSBwb2x5bW9ycGhpY2FsbHkKICAgICAgICAgLy8gdGhhdCB3ZSBj
YW5ub3Qgb3B0aW1pemUgdGhlbS4KIAotICAgICAgICBOb2RlKiBjYWxsTm9kZSA9IGFkZENhbGwo
cmVzdWx0LCBvcCwgT3BJbmZvKCksIGNhbGxUYXJnZXQsIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdU
aGlzLCByZWdpc3Rlck9mZnNldCwgcHJlZGljdGlvbik7CisgICAgICAgIE5vZGUqIGNhbGxOb2Rl
ID0gYWRkQ2FsbChyZXN1bHQsIG9wLCBudWxscHRyLCBjYWxsVGFyZ2V0LCBhcmd1bWVudENvdW50
SW5jbHVkaW5nVGhpcywgcmVnaXN0ZXJPZmZzZXQsIHByZWRpY3Rpb24pOwogICAgICAgICBpZiAo
Y2FsbE5vZGUtPm9wKCkgPT0gVGFpbENhbGwpCiAgICAgICAgICAgICByZXR1cm4gVGVybWluYWw7
CiAgICAgICAgIEFTU0VSVChjYWxsTm9kZS0+b3AoKSAhPSBUYWlsQ2FsbFZhcmFyZ3MgJiYgY2Fs
bE5vZGUtPm9wKCkgIT0gVGFpbENhbGxGb3J3YXJkVmFyYXJncyk7CkBAIC0xMjk4LDcgKzEzMDAs
NyBAQCBCeXRlQ29kZVBhcnNlcjo6VGVybWluYWxpdHkgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUNh
bGwoCiAgICAgICAgIHJldHVybiBOb25UZXJtaW5hbDsKICAgICB9CiAgICAgCi0gICAgTm9kZSog
Y2FsbE5vZGUgPSBhZGRDYWxsKHJlc3VsdCwgb3AsIE9wSW5mbygpLCBjYWxsVGFyZ2V0LCBhcmd1
bWVudENvdW50SW5jbHVkaW5nVGhpcywgcmVnaXN0ZXJPZmZzZXQsIHByZWRpY3Rpb24pOworICAg
IE5vZGUqIGNhbGxOb2RlID0gYWRkQ2FsbChyZXN1bHQsIG9wLCBudWxscHRyLCBjYWxsVGFyZ2V0
LCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgcmVnaXN0ZXJPZmZzZXQsIHByZWRpY3Rpb24p
OwogICAgIGlmIChjYWxsTm9kZS0+b3AoKSA9PSBUYWlsQ2FsbCkKICAgICAgICAgcmV0dXJuIFRl
cm1pbmFsOwogICAgIEFTU0VSVChjYWxsTm9kZS0+b3AoKSAhPSBUYWlsQ2FsbFZhcmFyZ3MgJiYg
Y2FsbE5vZGUtPm9wKCkgIT0gVGFpbENhbGxGb3J3YXJkVmFyYXJncyk7CkBAIC0xNzI1LDYgKzE3
MjcsMTkgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6YXR0ZW1wdFRvSW5saW5lQ2FsbChOb2RlKiBj
YWxsVGFyZ2V0Tm9kZSwgaW50IHJlc3VsdE9wZXJhbmQKICAgICAgICAgICAgIFJFTEVBU0VfQVNT
RVJUKCFkaWRJbnNlcnRDaGVja3MpOwogICAgICAgICAgICAgLy8gV2UgbWlnaHQgc3RpbGwgdHJ5
IHRvIGlubGluZSB0aGUgSW50cmluc2ljIGJlY2F1c2UgaXQgbWlnaHQgYmUgYSBidWlsdGluIEpT
IGZ1bmN0aW9uLgogICAgICAgICB9CisKKyAgICAgICAgaWYgKE9wdGlvbnM6OnVzZURPTUpJVCgp
KSB7CisgICAgICAgICAgICBpZiAoY29uc3QgRE9NSklUOjpTaWduYXR1cmUqIHNpZ25hdHVyZSA9
IGNhbGxlZS5zaWduYXR1cmVGb3Ioc3BlY2lhbGl6YXRpb25LaW5kKSkgeworICAgICAgICAgICAg
ICAgIGlmIChoYW5kbGVET01KSVRDYWxsKGNhbGxUYXJnZXROb2RlLCByZXN1bHRPcGVyYW5kLCBz
aWduYXR1cmUsIHJlZ2lzdGVyT2Zmc2V0LCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgcHJl
ZGljdGlvbiwgaW5zZXJ0Q2hlY2tzV2l0aEFjY291bnRpbmcpKSB7CisgICAgICAgICAgICAgICAg
ICAgIFJFTEVBU0VfQVNTRVJUKGRpZEluc2VydENoZWNrcyk7CisgICAgICAgICAgICAgICAgICAg
IGFkZFRvR3JhcGgoUGhhbnRvbSwgY2FsbFRhcmdldE5vZGUpOworICAgICAgICAgICAgICAgICAg
ICBlbWl0QXJndW1lbnRQaGFudG9tcyhyZWdpc3Rlck9mZnNldCwgYXJndW1lbnRDb3VudEluY2x1
ZGluZ1RoaXMpOworICAgICAgICAgICAgICAgICAgICBpbmxpbmluZ0JhbGFuY2UtLTsKKyAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgICAgIFJFTEVBU0VfQVNTRVJUKCFkaWRJbnNlcnRDaGVja3MpOworICAgICAgICAgICAgfQor
ICAgICAgICB9CiAgICAgfQogICAgIAogICAgIHVuc2lnbmVkIG15SW5saW5pbmdDb3N0ID0gaW5s
aW5pbmdDb3N0KGNhbGxlZSwgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIElubGluZUNhbGxG
cmFtZTo6Y2FsbE1vZGVGb3Ioa2luZCkpOwpAQCAtMjA1MCw3ICsyMDY1LDcgQEAgYm9vbCBCeXRl
Q29kZVBhcnNlcjo6aGFuZGxlSW5saW5pbmcoCiAgICAgTm9kZSogbXlDYWxsVGFyZ2V0Tm9kZSA9
IGdldERpcmVjdChjYWxsZWVSZWcpOwogICAgIGlmIChjb3VsZFRha2VTbG93UGF0aCkgewogICAg
ICAgICBhZGRDYWxsKAotICAgICAgICAgICAgcmVzdWx0T3BlcmFuZCwgY2FsbE9wLCBPcEluZm8o
KSwgbXlDYWxsVGFyZ2V0Tm9kZSwgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsCisgICAgICAg
ICAgICByZXN1bHRPcGVyYW5kLCBjYWxsT3AsIG51bGxwdHIsIG15Q2FsbFRhcmdldE5vZGUsIGFy
Z3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLAogICAgICAgICAgICAgcmVnaXN0ZXJPZmZzZXQsIHBy
ZWRpY3Rpb24pOwogICAgIH0gZWxzZSB7CiAgICAgICAgIGFkZFRvR3JhcGgoQ2hlY2tCYWRDZWxs
KTsKQEAgLTI2MDAsNiArMjYxNSwyNSBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbnRy
aW5zaWNDYWxsKE5vZGUqIGNhbGxlZSwgaW50IHJlc3VsdE9wZXJhbmQsIEludHJpbgogfQogCiB0
ZW1wbGF0ZTx0eXBlbmFtZSBDaGVja3NGdW5jdG9yPgorYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFu
ZGxlRE9NSklUQ2FsbChOb2RlKiBjYWxsVGFyZ2V0LCBpbnQgcmVzdWx0T3BlcmFuZCwgY29uc3Qg
RE9NSklUOjpTaWduYXR1cmUqIHNpZ25hdHVyZSwgaW50IHJlZ2lzdGVyT2Zmc2V0LCBpbnQgYXJn
dW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24sIGNvbnN0
IENoZWNrc0Z1bmN0b3ImIGluc2VydENoZWNrcykKK3sKKyAgICBpZiAoYXJndW1lbnRDb3VudElu
Y2x1ZGluZ1RoaXMgIT0gc3RhdGljX2Nhc3Q8aW50PigxICsgc2lnbmF0dXJlLT5hcmd1bWVudENv
dW50KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmIChtX2lubGluZVN0YWNrVG9wLT5t
X2V4aXRQcm9maWxlLmhhc0V4aXRTaXRlKG1fY3VycmVudEluZGV4LCBCYWRUeXBlKSkKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworCisgICAgLy8gRklYTUU6IEN1cnJlbnRseSwgd2Ugb25seSBzdXBw
b3J0IGZ1bmN0aW9ucyB3aGljaCBhcmd1bWVudHMgYXJlIHVwIHRvIDIuCisgICAgLy8gRXZlbnR1
YWxseSwgd2Ugc2hvdWxkIGV4dGVuZCB0aGlzLiBCdXQgcG9zc2libHksIDIgb3IgMyBjYW4gY292
ZXIgdHlwaWNhbCB1c2UgY2FzZXMuCisgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE2NDM0NgorICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoYXJndW1lbnRDb3Vu
dEluY2x1ZGluZ1RoaXMgPD0gSlNDX0RPTUpJVF9TSUdOQVRVUkVfTUFYX0FSR1VNRU5UU19JTkNM
VURJTkdfVEhJUywgIkN1cnJlbnRseSBDYWxsRE9NIGRvZXMgbm90IHN1cHBvcnQgYW4gYXJiaXRy
YXJ5IGxlbmd0aCBhcmd1bWVudHMuIik7CisKKyAgICBpbnNlcnRDaGVja3MoKTsKKyAgICBhZGRD
YWxsKHJlc3VsdE9wZXJhbmQsIENhbGwsIHNpZ25hdHVyZSwgY2FsbFRhcmdldCwgYXJndW1lbnRD
b3VudEluY2x1ZGluZ1RoaXMsIHJlZ2lzdGVyT2Zmc2V0LCBwcmVkaWN0aW9uKTsKKyAgICByZXR1
cm4gdHJ1ZTsKK30KKworCit0ZW1wbGF0ZTx0eXBlbmFtZSBDaGVja3NGdW5jdG9yPgogYm9vbCBC
eXRlQ29kZVBhcnNlcjo6aGFuZGxlSW50cmluc2ljR2V0dGVyKGludCByZXN1bHRPcGVyYW5kLCBj
b25zdCBHZXRCeUlkVmFyaWFudCYgdmFyaWFudCwgTm9kZSogdGhpc05vZGUsIGNvbnN0IENoZWNr
c0Z1bmN0b3ImIGluc2VydENoZWNrcykKIHsKICAgICBzd2l0Y2ggKHZhcmlhbnQuaW50cmluc2lj
KCkpIHsKQEAgLTQ3OTEsNyArNDgyNSw3IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxv
Y2sodW5zaWduZWQgbGltaXQpCiAgICAgICAgICAgICBpbnQgY2FsbGVlID0gY3VycmVudEluc3Ry
dWN0aW9uWzJdLnUub3BlcmFuZDsKICAgICAgICAgICAgIGludCBhcmd1bWVudENvdW50SW5jbHVk
aW5nVGhpcyA9IGN1cnJlbnRJbnN0cnVjdGlvblszXS51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBp
bnQgcmVnaXN0ZXJPZmZzZXQgPSAtY3VycmVudEluc3RydWN0aW9uWzRdLnUub3BlcmFuZDsKLSAg
ICAgICAgICAgIGFkZENhbGwocmVzdWx0LCBDYWxsRXZhbCwgT3BJbmZvKCksIGdldChWaXJ0dWFs
UmVnaXN0ZXIoY2FsbGVlKSksIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCByZWdpc3Rlck9m
ZnNldCwgZ2V0UHJlZGljdGlvbigpKTsKKyAgICAgICAgICAgIGFkZENhbGwocmVzdWx0LCBDYWxs
RXZhbCwgbnVsbHB0ciwgZ2V0KFZpcnR1YWxSZWdpc3RlcihjYWxsZWUpKSwgYXJndW1lbnRDb3Vu
dEluY2x1ZGluZ1RoaXMsIHJlZ2lzdGVyT2Zmc2V0LCBnZXRQcmVkaWN0aW9uKCkpOwogICAgICAg
ICAgICAgTkVYVF9PUENPREUob3BfY2FsbF9ldmFsKTsKICAgICAgICAgfQogICAgICAgICAgICAg
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCmluZGV4IGI2MjFlZjAy
MmQ4ODY1ZTJlN2EyMDExNmNkMjA4YzVjMjQ2YzlmZmIuLmU1ZDIxNzJmOWFlMGU3OTFhYWEyYTY4
MmJhYjE0ZWJhOTMwNjdkYmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQ2xvYmJlcml6ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJl
cml6ZS5oCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAiREZHTGF6eU5vZGUuaCIKICNpbmNs
dWRlICJERkdQdXJlVmFsdWUuaCIKICNpbmNsdWRlICJET01KSVRDYWxsRE9NR2V0dGVyUGF0Y2hw
b2ludC5oIgorI2luY2x1ZGUgIkRPTUpJVFNpZ25hdHVyZS5oIgogCiBuYW1lc3BhY2UgSlNDIHsg
bmFtZXNwYWNlIERGRyB7CiAKQEAgLTk1OCwyMCArOTU5LDM4IEBAIHZvaWQgY2xvYmJlcml6ZShH
cmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUsIGNvbnN0IFJlYWRGdW5jdG9yJiByZWFkLCBjb25zdCBX
cml0ZUZ1CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgd3JpdGUoQWJzdHJhY3RI
ZWFwKERPTVN0YXRlLCBlZmZlY3Qud3JpdGVzLnJhd1JlcHJlc2VudGF0aW9uKCkpKTsKICAgICAg
ICAgfQotICAgICAgICBpZiAoZWZmZWN0LmRlZikgewotICAgICAgICAgICAgRE9NSklUOjpIZWFw
UmFuZ2UgcmFuZ2UgPSBlZmZlY3QuZGVmLnZhbHVlKCk7CisgICAgICAgIGlmIChlZmZlY3QuZGVm
ICE9IERPTUpJVDo6SGVhcFJhbmdlOjp0b3AoKSkgeworICAgICAgICAgICAgRE9NSklUOjpIZWFw
UmFuZ2UgcmFuZ2UgPSBlZmZlY3QuZGVmOwogICAgICAgICAgICAgaWYgKHJhbmdlID09IERPTUpJ
VDo6SGVhcFJhbmdlOjpub25lKCkpCiAgICAgICAgICAgICAgICAgZGVmKFB1cmVWYWx1ZShub2Rl
LCBub2RlLT5jYWxsRE9NR2V0dGVyRGF0YSgpLT5kb21KSVQpKTsKICAgICAgICAgICAgIGVsc2Ug
ewogICAgICAgICAgICAgICAgIC8vIERlZiB3aXRoIGhlYXAgbG9jYXRpb24uIFdlIGRvIG5vdCBp
bmNsdWRlICJHbG9iYWxPYmplY3QiIGZvciB0aGF0IHNpbmNlIHRoaXMgaW5mb3JtYXRpb24gaXMg
aW5jbHVkZWQgaW4gdGhlIGJhc2Ugbm9kZS4KLSAgICAgICAgICAgICAgICAvLyBGSVhNRTogV2hl
biBzdXBwb3J0aW5nIHRoZSBvdGhlciBub2RlcyBsaWtlIGdldEVsZW1lbnRCeUlkKCJzdHJpbmci
KSwgd2Ugc2hvdWxkIGluY2x1ZGUgdGhlIGJhc2UgYW5kIHRoZSBpZCBzdHJpbmcuCi0gICAgICAg
ICAgICAgICAgLy8gQ3VycmVudGx5LCB3ZSBvbmx5IHNlZSB0aGUgRE9NSklUIGdldHRlciBoZXJl
LiBTbyBqdXN0IGluY2x1ZGluZyAiYmFzZSIgaXMgb2suCisgICAgICAgICAgICAgICAgLy8gV2Ug
b25seSBzZWUgdGhlIERPTUpJVCBnZXR0ZXIgaGVyZS4gU28ganVzdCBpbmNsdWRpbmcgImJhc2Ui
IGlzIG9rLgogICAgICAgICAgICAgICAgIGRlZihIZWFwTG9jYXRpb24oRE9NU3RhdGVMb2MsIEFi
c3RyYWN0SGVhcChET01TdGF0ZSwgcmFuZ2UucmF3UmVwcmVzZW50YXRpb24oKSksIG5vZGUtPmNo
aWxkMSgpKSwgTGF6eU5vZGUobm9kZSkpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKKyAgICBjYXNlIENhbGxET006IHsKKyAgICAgICAgY29uc3Qg
RE9NSklUOjpTaWduYXR1cmUqIHNpZ25hdHVyZSA9IG5vZGUtPnNpZ25hdHVyZSgpOworICAgICAg
ICBET01KSVQ6OkVmZmVjdCBlZmZlY3QgPSBzaWduYXR1cmUtPmVmZmVjdDsKKyAgICAgICAgaWYg
KGVmZmVjdC5yZWFkcykgeworICAgICAgICAgICAgaWYgKGVmZmVjdC5yZWFkcyA9PSBET01KSVQ6
OkhlYXBSYW5nZTo6dG9wKCkpCisgICAgICAgICAgICAgICAgcmVhZChXb3JsZCk7CisgICAgICAg
ICAgICBlbHNlCisgICAgICAgICAgICAgICAgcmVhZChBYnN0cmFjdEhlYXAoRE9NU3RhdGUsIGVm
ZmVjdC5yZWFkcy5yYXdSZXByZXNlbnRhdGlvbigpKSk7CisgICAgICAgIH0KKyAgICAgICAgaWYg
KGVmZmVjdC53cml0ZXMpIHsKKyAgICAgICAgICAgIGlmIChlZmZlY3Qud3JpdGVzID09IERPTUpJ
VDo6SGVhcFJhbmdlOjp0b3AoKSkKKyAgICAgICAgICAgICAgICB3cml0ZShIZWFwKTsKKyAgICAg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB3cml0ZShBYnN0cmFjdEhlYXAoRE9NU3RhdGUs
IGVmZmVjdC53cml0ZXMucmF3UmVwcmVzZW50YXRpb24oKSkpOworICAgICAgICB9CisgICAgICAg
IEFTU0VSVF9XSVRIX01FU1NBR0UoZWZmZWN0LmRlZiA9PSBET01KSVQ6OkhlYXBSYW5nZTo6dG9w
KCksICJDdXJyZW50bHksIHdlIGRvIG5vdCBhY2NlcHQgYW55IGRlZiBmb3IgQ2FsbERPTS4iKTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKwogICAgIGNhc2UgQXJyYXlpZnk6CiAgICAgY2FzZSBB
cnJheWlmeVRvU3RydWN0dXJlOgogICAgICAgICByZWFkKEpTQ2VsbF9zdHJ1Y3R1cmVJRCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAKaW5kZXggOTdjZDg0ODc0NzdhYzkw
ODRmZTkwZGRiOThkMzBmNDY2ZTVjYTE2Zi4uOWU2YWE1NTBhNDRlMGUxYzYyMTc1ZTUxOWY2MGEz
ZTg1MTVhN2I3YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2Vz
R0MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcApAQCAt
MzAxLDYgKzMwMSw3IEBAIGJvb2wgZG9lc0dDKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSkKICAg
ICBjYXNlIENyZWF0ZVJlc3Q6CiAgICAgY2FzZSBUb0xvd2VyQ2FzZToKICAgICBjYXNlIENhbGxE
T01HZXR0ZXI6CisgICAgY2FzZSBDYWxsRE9NOgogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAg
ICAgCiAgICAgY2FzZSBNdWx0aVB1dEJ5T2Zmc2V0OgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHRml4dXBQaGFzZS5jcHAKaW5kZXggMWQ0ZTkwN2E3ZjJmZmNjMmQ5YTJhMDM3NzExNDZh
NzkxMDFmM2NkMy4uYzhkZDU2Mjc4OGYwOTk1M2NjYjExNjEwYTA5NDI0YjliZTExN2E4YiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCkBAIC0xNzA4LDkg
KzE3MDgsMTAgQEAgY2xhc3MgRml4dXBQaGFzZSA6IHB1YmxpYyBQaGFzZSB7CiAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgfQogCi0gICAgICAgIGNhc2UgQ2hlY2tET006Ci0gICAgICAgICAg
ICBmaXhFZGdlPENlbGxVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgY2FzZSBDaGVja0RP
TTogeworICAgICAgICAgICAgZml4dXBDaGVja0RPTShub2RlKTsKICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICB9CiAKICAgICAgICAgY2FzZSBDYWxsRE9NR2V0dGVyOiB7CiAgICAgICAgICAg
ICBET01KSVQ6OkNhbGxET01HZXR0ZXJQYXRjaHBvaW50KiBwYXRjaHBvaW50ID0gbm9kZS0+Y2Fs
bERPTUdldHRlckRhdGEoKS0+cGF0Y2hwb2ludDsKQEAgLTE3MjAsNiArMTcyMSwxNiBAQCBjbGFz
cyBGaXh1cFBoYXNlIDogcHVibGljIFBoYXNlIHsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICB9CiAKKyAgICAgICAgY2FzZSBDYWxsRE9NOiB7CisgICAgICAgICAgICBmaXh1cENhbGxET00o
bm9kZSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAgIGNhc2UgQ2Fs
bDogeworICAgICAgICAgICAgYXR0ZW1wdFRvTWFrZUNhbGxET00obm9kZSk7CisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgfQorCiAjaWYgIUFTU0VSVF9ESVNBQkxFRAogICAgICAgICAvLyBI
YXZlIHRoZXNlIG5vLW9wIGNhc2VzIGhlcmUgdG8gZW5zdXJlIHRoYXQgbm9ib2R5IGZvcmdldHMg
dG8gYWRkIGhhbmRsZXJzIGZvciBuZXcgb3Bjb2Rlcy4KICAgICAgICAgY2FzZSBTZXRBcmd1bWVu
dDoKQEAgLTE3MzYsNyArMTc0Nyw2IEBAIGNsYXNzIEZpeHVwUGhhc2UgOiBwdWJsaWMgUGhhc2Ug
ewogICAgICAgICBjYXNlIEdldEdsb2JhbFZhcjoKICAgICAgICAgY2FzZSBHZXRHbG9iYWxMZXhp
Y2FsVmFyaWFibGU6CiAgICAgICAgIGNhc2UgTm90aWZ5V3JpdGU6Ci0gICAgICAgIGNhc2UgQ2Fs
bDoKICAgICAgICAgY2FzZSBEaXJlY3RDYWxsOgogICAgICAgICBjYXNlIENoZWNrVHlwZUluZm9G
bGFnczoKICAgICAgICAgY2FzZSBUYWlsQ2FsbElubGluZWRDYWxsZXI6CkBAIC0yNjU5LDYgKzI2
NjksOTMgQEAgY2xhc3MgRml4dXBQaGFzZSA6IHB1YmxpYyBQaGFzZSB7CiAgICAgICAgICAgICBP
cEluZm8oYXJyYXlNb2RlLmFzV29yZCgpKSwgRWRnZShjaGlsZCwgS25vd25DZWxsVXNlKSwgRWRn
ZShzdG9yYWdlKSk7CiAgICAgfQogICAgIAorICAgIGJvb2wgYXR0ZW1wdFRvTWFrZUNhbGxET00o
Tm9kZSogbm9kZSkKKyAgICB7CisgICAgICAgIGlmIChtX2dyYXBoLmhhc0V4aXRTaXRlKG5vZGUt
Pm9yaWdpbi5zZW1hbnRpYywgQmFkVHlwZSkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisK
KyAgICAgICAgY29uc3QgRE9NSklUOjpTaWduYXR1cmUqIHNpZ25hdHVyZSA9IG5vZGUtPnNpZ25h
dHVyZSgpOworICAgICAgICBpZiAoIXNpZ25hdHVyZSkKKyAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKKworICAgICAgICB7CisgICAgICAgICAgICB1bnNpZ25lZCBpbmRleCA9IDA7CisgICAgICAg
ICAgICBib29sIHNob3VsZENvbnZlcnRUb0NhbGxET00gPSB0cnVlOworICAgICAgICAgICAgbV9n
cmFwaC5kb1RvQ2hpbGRyZW4obm9kZSwgWyZdKEVkZ2UmIGVkZ2UpIHsKKyAgICAgICAgICAgICAg
ICAvLyBDYWxsZWUuIElnbm9yZSB0aGlzLiBERkdCeXRlQ29kZVBhcnNlciBhbHJlYWR5IGVtaXQg
YXBwcm9wcmlhdGUgY2hlY2tzLgorICAgICAgICAgICAgICAgIGlmICghaW5kZXgpCisgICAgICAg
ICAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICAgICAgICAgIGlmIChpbmRleCA9PSAxKSB7
CisgICAgICAgICAgICAgICAgICAgIC8vIERPTSBub2RlIGNhc2UuCisgICAgICAgICAgICAgICAg
ICAgIGlmIChlZGdlLT5zaG91bGRTcGVjdWxhdGVOb3RDZWxsKCkpCisgICAgICAgICAgICAgICAg
ICAgICAgICBzaG91bGRDb252ZXJ0VG9DYWxsRE9NID0gZmFsc2U7CisgICAgICAgICAgICAgICAg
fSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChzaWduYXR1cmUtPmFyZ3VtZW50
c1tpbmRleCAtIDJdKSB7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgU3BlY1N0cmluZzoKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGlmIChlZGdlLT5zaG91bGRTcGVjdWxhdGVOb3RTdHJpbmco
KSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaG91bGRDb252ZXJ0VG9DYWxsRE9NID0g
ZmFsc2U7CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAg
ICAgY2FzZSBTcGVjSW50MzJPbmx5OgorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVkZ2Ut
PnNob3VsZFNwZWN1bGF0ZU5vdEludDMyKCkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c2hvdWxkQ29udmVydFRvQ2FsbERPTSA9IGZhbHNlOworICAgICAgICAgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgU3BlY0Jvb2xlYW46CisgICAgICAgICAg
ICAgICAgICAgICAgICBpZiAoZWRnZS0+c2hvdWxkU3BlY3VsYXRlTm90Qm9vbGVhbigpKQorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHNob3VsZENvbnZlcnRUb0NhbGxET00gPSBmYWxzZTsK
KyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICBkZWZh
dWx0OgorICAgICAgICAgICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQo
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICsraW5kZXg7CisgICAgICAgICAg
ICB9KTsKKyAgICAgICAgICAgIGlmICghc2hvdWxkQ29udmVydFRvQ2FsbERPTSkKKyAgICAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKworICAgICAgICBOb2RlKiB0aGlzTm9k
ZSA9IG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMSkubm9kZSgpOworICAgICAgICBSZWY8RE9N
SklUOjpQYXRjaHBvaW50PiBjaGVja0RPTVBhdGNocG9pbnQgPSBzaWduYXR1cmUtPmNoZWNrRE9N
KCk7CisgICAgICAgIG1fZ3JhcGgubV9kb21KSVRQYXRjaHBvaW50cy5hcHBlbmQoY2hlY2tET01Q
YXRjaHBvaW50LnB0cigpKTsKKyAgICAgICAgTm9kZSogY2hlY2tET00gPSBtX2luc2VydGlvblNl
dC5pbnNlcnROb2RlKG1faW5kZXhJbkJsb2NrLCBTcGVjTm9uZSwgQ2hlY2tET00sIG5vZGUtPm9y
aWdpbiwgT3BJbmZvKGNoZWNrRE9NUGF0Y2hwb2ludC5wdHIoKSksIE9wSW5mbyhzaWduYXR1cmUt
PmNsYXNzSW5mbyksIEVkZ2UodGhpc05vZGUpKTsKKyAgICAgICAgbm9kZS0+Y29udmVydFRvQ2Fs
bERPTShtX2dyYXBoKTsKKyAgICAgICAgZml4dXBDaGVja0RPTShjaGVja0RPTSk7CisgICAgICAg
IGZpeHVwQ2FsbERPTShub2RlKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAg
dm9pZCBmaXh1cENoZWNrRE9NKE5vZGUqIG5vZGUpCisgICAgeworICAgICAgICBmaXhFZGdlPENl
bGxVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICB9CisKKyAgICB2b2lkIGZpeHVwQ2FsbERPTShO
b2RlKiBub2RlKQorICAgIHsKKyAgICAgICAgY29uc3QgRE9NSklUOjpTaWduYXR1cmUqIHNpZ25h
dHVyZSA9IG5vZGUtPnNpZ25hdHVyZSgpOworICAgICAgICBhdXRvIGZpeHVwID0gWyZdKEVkZ2Um
IGVkZ2UsIHVuc2lnbmVkIGFyZ3VtZW50SW5kZXgpIHsKKyAgICAgICAgICAgIGlmICghZWRnZSkK
KyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICBzd2l0Y2ggKHNpZ25hdHVyZS0+
YXJndW1lbnRzW2FyZ3VtZW50SW5kZXhdKSB7CisgICAgICAgICAgICBjYXNlIFNwZWNTdHJpbmc6
CisgICAgICAgICAgICAgICAgZml4RWRnZTxTdHJpbmdVc2U+KGVkZ2UpOworICAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBTcGVjSW50MzJPbmx5OgorICAgICAgICAgICAg
ICAgIGZpeEVkZ2U8SW50MzJVc2U+KGVkZ2UpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgY2FzZSBTcGVjQm9vbGVhbjoKKyAgICAgICAgICAgICAgICBmaXhFZGdlPEJvb2xl
YW5Vc2U+KGVkZ2UpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgZGVmYXVs
dDoKKyAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9OworICAgICAgICBmaXhF
ZGdlPENlbGxVc2U+KG5vZGUtPmNoaWxkMSgpKTsgLy8gRE9NLgorICAgICAgICBmaXh1cChub2Rl
LT5jaGlsZDIoKSwgMCk7CisgICAgICAgIGZpeHVwKG5vZGUtPmNoaWxkMygpLCAxKTsKKyAgICB9
CisKICAgICB2b2lkIGZpeHVwQ2hlY2tzSW5CbG9jayhCYXNpY0Jsb2NrKiBibG9jaykKICAgICB7
CiAgICAgICAgIGlmICghYmxvY2spCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR05vZGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmNwcApp
bmRleCBmMzcxMTdiZjk2OWZlNGI2OWQ5NWYwMDFkNTY4ODA0NmJkY2Q5NDUwLi42YTk0YjU5OWQ4
N2E4ODFkNDU5OTA5OGM2YzNlYmNmZDQ2MDc2ZjY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR05vZGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHTm9kZS5jcHAKQEAgLTIyMCw2ICsyMjAsMjYgQEAgdm9pZCBOb2RlOjpjb252ZXJ0VG9EaXJl
Y3RDYWxsKEZyb3plblZhbHVlKiBleGVjdXRhYmxlKQogICAgIG1fb3BJbmZvID0gZXhlY3V0YWJs
ZTsKIH0KIAordm9pZCBOb2RlOjpjb252ZXJ0VG9DYWxsRE9NKEdyYXBoJiBncmFwaCkKK3sKKyAg
ICBBU1NFUlQob3AoKSA9PSBDYWxsKTsKKyAgICBBU1NFUlQoc2lnbmF0dXJlKCkpOworCisgICAg
RWRnZSBlZGdlc1szXTsKKyAgICAvLyBTa2lwIHRoZSBmaXJzdCBvbmUuIFRoaXMgaXMgY2FsbGVl
LgorICAgIFJFTEVBU0VfQVNTRVJUKG51bUNoaWxkcmVuKCkgPD0gNCk7CisgICAgZm9yICh1bnNp
Z25lZCBpID0gMTsgaSA8IG51bUNoaWxkcmVuKCk7ICsraSkKKyAgICAgICAgZWRnZXNbaSAtIDFd
ID0gZ3JhcGgudmFyQXJnQ2hpbGQodGhpcywgaSk7CisKKyAgICBzZXRPcEFuZERlZmF1bHRGbGFn
cyhDYWxsRE9NKTsKKyAgICBjaGlsZHJlbi5zZXRDaGlsZDEoZWRnZXNbMF0pOworICAgIGNoaWxk
cmVuLnNldENoaWxkMihlZGdlc1sxXSk7CisgICAgY2hpbGRyZW4uc2V0Q2hpbGQzKGVkZ2VzWzJd
KTsKKworICAgIGlmICghc2lnbmF0dXJlKCktPmVmZmVjdC5tdXN0R2VuZXJhdGUoKSkKKyAgICAg
ICAgY2xlYXJGbGFncyhOb2RlTXVzdEdlbmVyYXRlKTsKK30KKwogU3RyaW5nIE5vZGU6OnRyeUdl
dFN0cmluZyhHcmFwaCYgZ3JhcGgpCiB7CiAgICAgaWYgKGhhc0NvbnN0YW50KCkpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHTm9kZS5oCmluZGV4IDg4Zjg4MTE4OTBlMTc3M2VhMWQ2MDJlOWNhYzlj
NTgxZGE0ZjliOWIuLjA3ZDY0NGYzZDNjNTg0YjdiZmNiYzhmYmVlNWM1MmVkNjA4NWU5YjEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCkBAIC02Miw2ICs2Miw3IEBAIG5hbWVzcGFj
ZSBET01KSVQgewogY2xhc3MgR2V0dGVyU2V0dGVyOwogY2xhc3MgUGF0Y2hwb2ludDsKIGNsYXNz
IENhbGxET01HZXR0ZXJQYXRjaHBvaW50OworY2xhc3MgU2lnbmF0dXJlOwogfQogCiBuYW1lc3Bh
Y2UgUHJvZmlsZXIgewpAQCAtNjUyLDYgKzY1Myw4IEBAIHN0cnVjdCBOb2RlIHsKICAgICB9CiAg
ICAgCiAgICAgdm9pZCBjb252ZXJ0VG9EaXJlY3RDYWxsKEZyb3plblZhbHVlKik7CisKKyAgICB2
b2lkIGNvbnZlcnRUb0NhbGxET00oR3JhcGgmKTsKICAgICAKICAgICBKU1ZhbHVlIGFzSlNWYWx1
ZSgpCiAgICAgewpAQCAtMTQ2NCw2ICsxNDY3LDcgQEAgc3RydWN0IE5vZGUgewogICAgICAgICBj
YXNlIFRvTnVtYmVyOgogICAgICAgICBjYXNlIExvYWRGcm9tSlNNYXBCdWNrZXQ6CiAgICAgICAg
IGNhc2UgQ2FsbERPTUdldHRlcjoKKyAgICAgICAgY2FzZSBDYWxsRE9NOgogICAgICAgICAgICAg
cmV0dXJuIHRydWU7CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CkBAIC0xOTgxLDYgKzE5ODUsMTEgQEAgc3RydWN0IE5vZGUgewogICAgIHsKICAgICAgICAgcmV0
dXJuIGlzSW50MzJTcGVjdWxhdGlvbihwcmVkaWN0aW9uKCkpOwogICAgIH0KKworICAgIGJvb2wg
c2hvdWxkU3BlY3VsYXRlTm90SW50MzIoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGlzTm90SW50
MzJTcGVjdWxhdGlvbihwcmVkaWN0aW9uKCkpOworICAgIH0KICAgICAKICAgICBib29sIHNhd0Jv
b2xlYW5zKCkKICAgICB7CkBAIC0yMDQxLDYgKzIwNTAsMTEgQEAgc3RydWN0IE5vZGUgewogICAg
IHsKICAgICAgICAgcmV0dXJuIGlzQm9vbGVhblNwZWN1bGF0aW9uKHByZWRpY3Rpb24oKSk7CiAg
ICAgfQorCisgICAgYm9vbCBzaG91bGRTcGVjdWxhdGVOb3RCb29sZWFuKCkKKyAgICB7CisgICAg
ICAgIHJldHVybiBpc05vdEJvb2xlYW5TcGVjdWxhdGlvbihwcmVkaWN0aW9uKCkpOworICAgIH0K
ICAgICAKICAgICBib29sIHNob3VsZFNwZWN1bGF0ZU90aGVyKCkKICAgICB7CkBAIC0yMDY2LDYg
KzIwODAsMTEgQEAgc3RydWN0IE5vZGUgewogICAgIHsKICAgICAgICAgcmV0dXJuIGlzU3RyaW5n
U3BlY3VsYXRpb24ocHJlZGljdGlvbigpKTsKICAgICB9CisKKyAgICBib29sIHNob3VsZFNwZWN1
bGF0ZU5vdFN0cmluZygpCisgICAgeworICAgICAgICByZXR1cm4gaXNOb3RTdHJpbmdTcGVjdWxh
dGlvbihwcmVkaWN0aW9uKCkpOworICAgIH0KICAKICAgICBib29sIHNob3VsZFNwZWN1bGF0ZVN0
cmluZ09yT3RoZXIoKQogICAgIHsKQEAgLTIzNjgsNiArMjM4NywxOCBAQCBzdHJ1Y3QgTm9kZSB7
CiAgICAgICAgIHJldHVybiBtX29wSW5mbzIuYXM8Y29uc3QgQ2xhc3NJbmZvKj4oKTsKICAgICB9
CiAKKyAgICBib29sIGhhc1NpZ25hdHVyZSgpIGNvbnN0CisgICAgeworICAgICAgICAvLyBOb3Rl
IHRoYXQgdGhpcyBkb2VzIG5vdCBpbmNsdWRlIFRhaWxDYWxsIG5vZGUgdHlwZXMgaW50ZW50aW9u
YWxseS4KKyAgICAgICAgLy8gQ2FsbERPTSBub2RlIHR5cGVzIGFyZSBhbHdheXMgY29udmVydGVk
IGZyb20gQ2FsbC4KKyAgICAgICAgcmV0dXJuIG9wKCkgPT0gQ2FsbCB8fCBvcCgpID09IENhbGxE
T007CisgICAgfQorCisgICAgY29uc3QgRE9NSklUOjpTaWduYXR1cmUqIHNpZ25hdHVyZSgpCisg
ICAgeworICAgICAgICByZXR1cm4gbV9vcEluZm8uYXM8Y29uc3QgRE9NSklUOjpTaWduYXR1cmUq
PigpOworICAgIH0KKwogICAgIE5vZGUqIHJlcGxhY2VtZW50KCkgY29uc3QKICAgICB7CiAgICAg
ICAgIHJldHVybiBtX21pc2MucmVwbGFjZW1lbnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R05vZGVUeXBlLmgKaW5kZXggZDk3NWI3NjIyMGMwMmMxMzExYzE5MmVhOWFkMDJlNjAxYTUyMDRl
MC4uZjM3NDIzY2VlYjIyODYyYjZjMmZhYTViYmEwMzQ1YTMzNmVmNjM5ZSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaApAQCAtNDA3LDYgKzQwNyw3IEBAIG5hbWVzcGFj
ZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKICAgICAvKiBOb2RlcyBmb3IgRE9NIEpJVCAqL1wKICAg
ICBtYWNybyhDaGVja0RPTSwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKENhbGxET01H
ZXR0ZXIsIE5vZGVSZXN1bHRKUyB8IE5vZGVNdXN0R2VuZXJhdGUpIFwKKyAgICBtYWNybyhDYWxs
RE9NLCBOb2RlUmVzdWx0SlMgfCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAKIC8vIFRoaXMgZW51bSBn
ZW5lcmF0ZXMgYSBtb25vdG9uaWNhbGx5IGluY3JlYXNpbmcgaWQgZm9yIGFsbCBOb2RlIHR5cGVz
LAogLy8gYW5kIGlzIHVzZWQgYnkgdGhlIHN1YnNlcXVlbnQgZW51bSB0byBmaWxsIG91dCB0aGUg
aWQgKGFzIGFjY2Vzc2VkIHZpYSB0aGUgTm9kZUlkTWFzaykuCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3Bw
CmluZGV4IDZlZDcyOWIzYjg1NzMxYzBhNmU1MDk2NzA5Zjk4MDE2YTRiMWY4ZTAuLjIwNTMxYTA5
MzQyYTVlYmYwMTNkYzNiZTA5YTU3ZDAyNmVhNDRkNzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3Bw
CkBAIC0xMDIwLDcgKzEwMjAsOCBAQCBjbGFzcyBQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZSA6
IHB1YmxpYyBQaGFzZSB7CiAgICAgICAgIGNhc2UgR2V0UmVnRXhwT2JqZWN0TGFzdEluZGV4Ogog
ICAgICAgICBjYXNlIFNldFJlZ0V4cE9iamVjdExhc3RJbmRleDoKICAgICAgICAgY2FzZSBSZWNv
cmRSZWdFeHBDYWNoZWRSZXN1bHQ6Ci0gICAgICAgIGNhc2UgTGF6eUpTQ29uc3RhbnQ6IHsKKyAg
ICAgICAgY2FzZSBMYXp5SlNDb25zdGFudDoKKyAgICAgICAgY2FzZSBDYWxsRE9NOiB7CiAgICAg
ICAgICAgICAvLyBUaGlzIG5vZGUgc2hvdWxkIG5ldmVyIGJlIHZpc2libGUgYXQgdGhpcyBzdGFn
ZSBvZiBjb21waWxhdGlvbi4gSXQgaXMKICAgICAgICAgICAgIC8vIGluc2VydGVkIGJ5IGZpeHVw
KCksIHdoaWNoIGZvbGxvd3MgdGhpcyBwaGFzZS4KICAgICAgICAgICAgIERGR19DUkFTSChtX2dy
YXBoLCBtX2N1cnJlbnROb2RlLCAiVW5leHBlY3RlZCBub2RlIGR1cmluZyBwcmVkaWN0aW9uIHBy
b3BhZ2F0aW9uIik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nh
ZmVUb0V4ZWN1dGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0
ZS5oCmluZGV4IDJjOTk4MDIyNTY2N2RmMzQwNTBkY2E2YTM0ZTg3ZjM0ZDU5OGVkMmIuLjNmZTlk
YzE1ZGVlMTdiODFkMjJmZjY0NDNmZWQ2N2Y0NzY5NjNjYTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCkBAIC0yMjAsNiArMjIwLDcgQEAgYm9vbCBz
YWZlVG9FeGVjdXRlKEFic3RyYWN0U3RhdGVUeXBlJiBzdGF0ZSwgR3JhcGgmIGdyYXBoLCBOb2Rl
KiBub2RlKQogICAgIGNhc2UgR2V0RXhlY3V0YWJsZToKICAgICBjYXNlIEdldEJ1dHRlcmZseToK
ICAgICBjYXNlIENhbGxET01HZXR0ZXI6CisgICAgY2FzZSBDYWxsRE9NOgogICAgIGNhc2UgQ2hl
Y2tET006CiAgICAgY2FzZSBDaGVja0FycmF5OgogICAgIGNhc2UgQXJyYXlpZnk6CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCmluZGV4IDI3MzJm
ZTg1ODQ0ZTUxZjQ2NzBiMGFlNDAzZjJhYzIzNTA0Yzg3MWMuLjM0MTliNzAyZjgxZGQ5OTA1NmM5
N2FiMTQ0OGEzMGE5YjI5N2M3YjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU3BlY3VsYXRpdmVKSVQuY3BwCkBAIC03MjYwLDYgKzcyNjAsODggQEAgc3RhdGljIHZvaWQg
YWxsb2NhdGVUZW1wb3JhcnlSZWdpc3RlcnNGb3JQYXRjaHBvaW50KFNwZWN1bGF0aXZlSklUKiBq
aXQsIFZlY3RvcjwKICAgICB9CiB9CiAKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVDYWxs
RE9NKE5vZGUqIG5vZGUpCit7CisgICAgY29uc3QgRE9NSklUOjpTaWduYXR1cmUqIHNpZ25hdHVy
ZSA9IG5vZGUtPnNpZ25hdHVyZSgpOworCisgICAgLy8gRklYTUU6IFdlIHNob3VsZCBoYXZlIGEg
d2F5IHRvIGNhbGwgZnVuY3Rpb25zIHdpdGggdGhlIHZlY3RvciBvZiByZWdpc3RlcnMuCisgICAg
Ly8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MzA5OQorICAgIFZl
Y3RvcjxWYXJpYW50PFNwZWN1bGF0ZUNlbGxPcGVyYW5kLCBTcGVjdWxhdGVJbnQzMk9wZXJhbmQs
IFNwZWN1bGF0ZUJvb2xlYW5PcGVyYW5kPiwgSlNDX0RPTUpJVF9TSUdOQVRVUkVfTUFYX0FSR1VN
RU5UU19JTkNMVURJTkdfVEhJUz4gb3BlcmFuZHM7CisgICAgVmVjdG9yPEdQUlJlZywgSlNDX0RP
TUpJVF9TSUdOQVRVUkVfTUFYX0FSR1VNRU5UU19JTkNMVURJTkdfVEhJUz4gcmVnczsKKworICAg
IGF1dG8gYXBwZW5kQ2VsbCA9IFsmXShFZGdlJiBlZGdlKSB7CisgICAgICAgIFNwZWN1bGF0ZUNl
bGxPcGVyYW5kIG9wZXJhbmQodGhpcywgZWRnZSk7CisgICAgICAgIHJlZ3MuYXBwZW5kKG9wZXJh
bmQuZ3ByKCkpOworICAgICAgICBvcGVyYW5kcy5hcHBlbmQoV1RGTW92ZShvcGVyYW5kKSk7Cisg
ICAgfTsKKworICAgIGF1dG8gYXBwZW5kU3RyaW5nID0gWyZdKEVkZ2UmIGVkZ2UpIHsKKyAgICAg
ICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgb3BlcmFuZCh0aGlzLCBlZGdlKTsKKyAgICAgICAgR1BS
UmVnIGdwciA9IG9wZXJhbmQuZ3ByKCk7CisgICAgICAgIHJlZ3MuYXBwZW5kKGdwcik7CisgICAg
ICAgIHNwZWN1bGF0ZVN0cmluZyhlZGdlLCBncHIpOworICAgICAgICBvcGVyYW5kcy5hcHBlbmQo
V1RGTW92ZShvcGVyYW5kKSk7CisgICAgfTsKKworICAgIGF1dG8gYXBwZW5kSW50MzIgPSBbJl0o
RWRnZSYgZWRnZSkgeworICAgICAgICBTcGVjdWxhdGVJbnQzMk9wZXJhbmQgb3BlcmFuZCh0aGlz
LCBlZGdlKTsKKyAgICAgICAgcmVncy5hcHBlbmQob3BlcmFuZC5ncHIoKSk7CisgICAgICAgIG9w
ZXJhbmRzLmFwcGVuZChXVEZNb3ZlKG9wZXJhbmQpKTsKKyAgICB9OworCisgICAgYXV0byBhcHBl
bmRCb29sZWFuID0gWyZdKEVkZ2UmIGVkZ2UpIHsKKyAgICAgICAgU3BlY3VsYXRlQm9vbGVhbk9w
ZXJhbmQgb3BlcmFuZCh0aGlzLCBlZGdlKTsKKyAgICAgICAgcmVncy5hcHBlbmQob3BlcmFuZC5n
cHIoKSk7CisgICAgICAgIG9wZXJhbmRzLmFwcGVuZChXVEZNb3ZlKG9wZXJhbmQpKTsKKyAgICB9
OworCisgICAgdW5zaWduZWQgaW5kZXggPSAwOworICAgIG1faml0LmdyYXBoKCkuZG9Ub0NoaWxk
cmVuKG5vZGUsIFsmXShFZGdlIGVkZ2UpIHsKKyAgICAgICAgaWYgKCFpbmRleCkKKyAgICAgICAg
ICAgIGFwcGVuZENlbGwoZWRnZSk7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgc3dpdGNo
IChzaWduYXR1cmUtPmFyZ3VtZW50c1tpbmRleCAtIDFdKSB7CisgICAgICAgICAgICBjYXNlIFNw
ZWNTdHJpbmc6CisgICAgICAgICAgICAgICAgYXBwZW5kU3RyaW5nKGVkZ2UpOworICAgICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBTcGVjSW50MzJPbmx5OgorICAgICAgICAg
ICAgICAgIGFwcGVuZEludDMyKGVkZ2UpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgY2FzZSBTcGVjQm9vbGVhbjoKKyAgICAgICAgICAgICAgICBhcHBlbmRCb29sZWFuKGVk
Z2UpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAg
ICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgICsraW5kZXg7CisgICAg
fSk7CisKKyAgICBKU1ZhbHVlUmVnc1RlbXBvcmFyeSByZXN1bHQodGhpcyk7CisgICAgSlNWYWx1
ZVJlZ3MgcmVzdWx0UmVncyA9IHJlc3VsdC5yZWdzKCk7CisKKyAgICBmbHVzaFJlZ2lzdGVycygp
OworICAgIHVuc2lnbmVkIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzID0gc2lnbmF0dXJlLT5h
cmd1bWVudENvdW50ICsgMTsKKyAgICBzd2l0Y2ggKGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlz
KSB7CisgICAgY2FzZSAxOgorICAgICAgICBjYWxsT3BlcmF0aW9uKHJlaW50ZXJwcmV0X2Nhc3Q8
Sl9KSVRPcGVyYXRpb25fRVA+KHNpZ25hdHVyZS0+dW5zYWZlRnVuY3Rpb24pLCBleHRyYWN0UmVz
dWx0KHJlc3VsdFJlZ3MpLCByZWdzWzBdKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSAyOgor
ICAgICAgICBjYWxsT3BlcmF0aW9uKHJlaW50ZXJwcmV0X2Nhc3Q8Sl9KSVRPcGVyYXRpb25fRVBQ
PihzaWduYXR1cmUtPnVuc2FmZUZ1bmN0aW9uKSwgZXh0cmFjdFJlc3VsdChyZXN1bHRSZWdzKSwg
cmVnc1swXSwgcmVnc1sxXSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgMzoKKyAgICAgICAg
Y2FsbE9wZXJhdGlvbihyZWludGVycHJldF9jYXN0PEpfSklUT3BlcmF0aW9uX0VQUFA+KHNpZ25h
dHVyZS0+dW5zYWZlRnVuY3Rpb24pLCBleHRyYWN0UmVzdWx0KHJlc3VsdFJlZ3MpLCByZWdzWzBd
LCByZWdzWzFdLCByZWdzWzJdKTsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAg
ICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQor
CisgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKKyAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdFJl
Z3MsIG5vZGUpOworfQorCiB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlQ2FsbERPTUdldHRl
cihOb2RlKiBub2RlKQogewogICAgIERPTUpJVDo6Q2FsbERPTUdldHRlclBhdGNocG9pbnQqIHBh
dGNocG9pbnQgPSBub2RlLT5jYWxsRE9NR2V0dGVyRGF0YSgpLT5wYXRjaHBvaW50OwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCmluZGV4IDU2NTM4YTI5
NDZlNDAzMDBmMDUwZjMzNTUyYTczY2NhNzU5Y2VhY2EuLjc5NmE4YTM1ZTZkMzA1N2ZhYWJlYTA3
OWEwMjAzZDVkNDk5YTk1YjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU3BlY3VsYXRpdmVKSVQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nw
ZWN1bGF0aXZlSklULmgKQEAgLTE2NTEsNiArMTY1MSwxMSBAQCBjbGFzcyBTcGVjdWxhdGl2ZUpJ
VCB7CiAgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcy
KTsKICAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQp
OwogICAgIH0KKyAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpfSklUT3BlcmF0
aW9uX0VQUFAgb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBHUFJSZWcgYXJnMSwgR1BSUmVnIGFy
ZzIsIEdQUlJlZyBhcmczKQorICAgIHsKKyAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRo
RXhlY1N0YXRlKGFyZzEsIGFyZzIsIGFyZzMpOworICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNl
dFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CisgICAgfQogICAgIEpJVENvbXBpbGVyOjpDYWxs
IGNhbGxPcGVyYXRpb24oSl9KSVRPcGVyYXRpb25fRUdQIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3Vs
dCwgR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyKQogICAgIHsKICAgICAgICAgbV9qaXQuc2V0dXBB
cmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIpOwpAQCAtMTkxNSw2ICsxOTIwLDE2IEBA
IGNsYXNzIFNwZWN1bGF0aXZlSklUIHsKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRo
RXhlY1N0YXRlKGFyZzEsIFRydXN0ZWRJbW1QdHIocG9pbnRlcikpOwogICAgICAgICByZXR1cm4g
YXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdC5wYXlsb2FkR1BSKCksIHJlc3Vs
dC50YWdHUFIoKSk7CiAgICAgfQorICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24o
Sl9KSVRPcGVyYXRpb25fRVBQIG9wZXJhdGlvbiwgSlNWYWx1ZVJlZ3MgcmVzdWx0LCBHUFJSZWcg
YXJnMSwgR1BSUmVnIGFyZzIpCisgICAgeworICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dp
dGhFeGVjU3RhdGUoYXJnMSwgYXJnMik7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVz
dWx0KG9wZXJhdGlvbiwgcmVzdWx0LnBheWxvYWRHUFIoKSwgcmVzdWx0LnRhZ0dQUigpKTsKKyAg
ICB9CisgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihKX0pJVE9wZXJhdGlvbl9F
UFBQIG9wZXJhdGlvbiwgSlNWYWx1ZVJlZ3MgcmVzdWx0LCBHUFJSZWcgYXJnMSwgR1BSUmVnIGFy
ZzIsIEdQUlJlZyBhcmczKQorICAgIHsKKyAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRo
RXhlY1N0YXRlKGFyZzEsIGFyZzIsIGFyZzMpOworICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNl
dFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdC5wYXlsb2FkR1BSKCksIHJlc3VsdC50YWdHUFIoKSk7
CisgICAgfQogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9KSVRPcGVyYXRp
b25fRUdQIG9wZXJhdGlvbiwgSlNWYWx1ZVJlZ3MgcmVzdWx0LCBHUFJSZWcgYXJnMSwgR1BSUmVn
IGFyZzIpCiAgICAgewogICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUo
YXJnMSwgYXJnMik7CkBAIC0yNTYyLDYgKzI1NzcsNyBAQCBjbGFzcyBTcGVjdWxhdGl2ZUpJVCB7
CiAgICAgdm9pZCBjb21waWxlUmVhbGxvY2F0ZVByb3BlcnR5U3RvcmFnZShOb2RlKik7CiAgICAg
dm9pZCBjb21waWxlR2V0QnV0dGVyZmx5KE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVDYWxsRE9N
R2V0dGVyKE5vZGUqKTsKKyAgICB2b2lkIGNvbXBpbGVDYWxsRE9NKE5vZGUqKTsKICAgICB2b2lk
IGNvbXBpbGVDaGVja0RPTShOb2RlKik7CiAgICAgCiAjaWYgVVNFKEpTVkFMVUUzMl82NCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82
NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQu
Y3BwCmluZGV4IGNiMDRhNWE2NWM3NTBlMjNmMTdjOWRiMjM0MTViNzM0YWVmNWI0YTQuLjEwMjQy
OWRlMDAwYjMyYWRmZGQwMjc0M2VjNmRmZGRlZTgxZjUzYWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcApAQCAtNTU2MSw2
ICs1NTYxLDEwIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAg
ICAgICAgYnJlYWs7CiAgICAgfQogCisgICAgY2FzZSBDYWxsRE9NOgorICAgICAgICBjb21waWxl
Q2FsbERPTShub2RlKTsKKyAgICAgICAgYnJlYWs7CisKICAgICBjYXNlIENhbGxET01HZXR0ZXI6
CiAgICAgICAgIGNvbXBpbGVDYWxsRE9NR2V0dGVyKG5vZGUpOwogICAgICAgICBicmVhazsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCmlu
ZGV4IGI0MWM2ZjMyYjMzZDgzYzY1ZTg1NGY4NjA3OGQ3NGE1MjQwMjk4MTMuLjgzMGJmYWRjYWYy
ODY2N2EwOGIxYjgyZWU1OTg4YzBjNjVkMmNhYjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcApAQCAtNTY5Myw2ICs1NjkzLDEwIEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgY29tcGls
ZU1hdGVyaWFsaXplTmV3T2JqZWN0KG5vZGUpOwogICAgICAgICBicmVhazsKIAorICAgIGNhc2Ug
Q2FsbERPTToKKyAgICAgICAgY29tcGlsZUNhbGxET00obm9kZSk7CisgICAgICAgIGJyZWFrOwor
CiAgICAgY2FzZSBDYWxsRE9NR2V0dGVyOgogICAgICAgICBjb21waWxlQ2FsbERPTUdldHRlcihu
b2RlKTsKICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZG9taml0L0RPTUpJVEVmZmVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RvbWppdC9ET01K
SVRFZmZlY3QuaAppbmRleCA1OWUzMDBjMzkyNjEwNDdhMTEyMjkwZGE4NmI0ZmExNjhkOWM2MzA2
Li42MWNmM2I3MWFiYmNlMzFlNDUxMzZhZjI4NmM2YzdhZjIzNjY4YTZiIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZG9taml0L0RPTUpJVEVmZmVjdC5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kb21qaXQvRE9NSklURWZmZWN0LmgKQEAgLTI4LDU2ICsyOCw2MiBAQAog
I2luY2x1ZGUgIkRPTUpJVEhlYXBSYW5nZS5oIgogI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgog
Ci0jaWYgRU5BQkxFKEpJVCkKLQogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBET01KSVQgewog
Ci1zdHJ1Y3QgRWZmZWN0IHsKK2NsYXNzIEVmZmVjdCB7CitwdWJsaWM6CiAgICAgSGVhcFJhbmdl
IHJlYWRzIHsgSGVhcFJhbmdlOjp0b3AoKSB9OwogICAgIEhlYXBSYW5nZSB3cml0ZXMgeyBIZWFw
UmFuZ2U6OnRvcCgpIH07Ci0gICAgT3B0aW9uYWw8SGVhcFJhbmdlPiBkZWY7CisgICAgSGVhcFJh
bmdlIGRlZiB7IEhlYXBSYW5nZTo6dG9wKCkgfTsKKworICAgIGNvbnN0ZXhwciBFZmZlY3QoKSA9
IGRlZmF1bHQ7CisgICAgY29uc3RleHByIEVmZmVjdChIZWFwUmFuZ2UgcmVhZHMsIEhlYXBSYW5n
ZSB3cml0ZXMpCisgICAgICAgIDogcmVhZHMocmVhZHMpCisgICAgICAgICwgd3JpdGVzKHdyaXRl
cykKKyAgICB7CisgICAgfQorCisgICAgY29uc3RleHByIEVmZmVjdChIZWFwUmFuZ2UgcmVhZHMs
IEhlYXBSYW5nZSB3cml0ZXMsIEhlYXBSYW5nZSBkZWYpCisgICAgICAgIDogcmVhZHMocmVhZHMp
CisgICAgICAgICwgd3JpdGVzKHdyaXRlcykKKyAgICAgICAgLCBkZWYoZGVmKQorICAgIHsKKyAg
ICB9CiAKLSAgICBzdGF0aWMgRWZmZWN0IGZvclJlYWRXcml0ZShIZWFwUmFuZ2UgcmVhZFJhbmdl
LCBIZWFwUmFuZ2Ugd3JpdGVSYW5nZSkKKyAgICBjb25zdGV4cHIgc3RhdGljIEVmZmVjdCBmb3JX
cml0ZShIZWFwUmFuZ2Ugd3JpdGVSYW5nZSkKICAgICB7Ci0gICAgICAgIEVmZmVjdCBlZmZlY3Q7
Ci0gICAgICAgIGVmZmVjdC5yZWFkcyA9IHJlYWRSYW5nZTsKLSAgICAgICAgZWZmZWN0LndyaXRl
cyA9IHdyaXRlUmFuZ2U7Ci0gICAgICAgIHJldHVybiBlZmZlY3Q7CisgICAgICAgIHJldHVybiBF
ZmZlY3QoSGVhcFJhbmdlOjpub25lKCksIHdyaXRlUmFuZ2UpOwogICAgIH0KIAotICAgIHN0YXRp
YyBFZmZlY3QgZm9yUHVyZSgpCisgICAgY29uc3RleHByIHN0YXRpYyBFZmZlY3QgZm9yUmVhZChI
ZWFwUmFuZ2UgcmVhZFJhbmdlKQogICAgIHsKLSAgICAgICAgRWZmZWN0IGVmZmVjdDsKLSAgICAg
ICAgZWZmZWN0LnJlYWRzID0gSGVhcFJhbmdlOjpub25lKCk7Ci0gICAgICAgIGVmZmVjdC53cml0
ZXMgPSBIZWFwUmFuZ2U6Om5vbmUoKTsKLSAgICAgICAgZWZmZWN0LmRlZiA9IEhlYXBSYW5nZTo6
bm9uZSgpOwotICAgICAgICByZXR1cm4gZWZmZWN0OworICAgICAgICByZXR1cm4gRWZmZWN0KHJl
YWRSYW5nZSwgSGVhcFJhbmdlOjpub25lKCkpOwogICAgIH0KIAotICAgIHN0YXRpYyBFZmZlY3Qg
Zm9yRGVmKEhlYXBSYW5nZSBkZWYpCisgICAgY29uc3RleHByIHN0YXRpYyBFZmZlY3QgZm9yUmVh
ZFdyaXRlKEhlYXBSYW5nZSByZWFkUmFuZ2UsIEhlYXBSYW5nZSB3cml0ZVJhbmdlKQogICAgIHsK
LSAgICAgICAgRWZmZWN0IGVmZmVjdDsKLSAgICAgICAgZWZmZWN0LnJlYWRzID0gZGVmOwotICAg
ICAgICBlZmZlY3Qud3JpdGVzID0gSGVhcFJhbmdlOjpub25lKCk7Ci0gICAgICAgIGVmZmVjdC5k
ZWYgPSBkZWY7Ci0gICAgICAgIHJldHVybiBlZmZlY3Q7CisgICAgICAgIHJldHVybiBFZmZlY3Qo
cmVhZFJhbmdlLCB3cml0ZVJhbmdlKTsKICAgICB9CiAKLSAgICBzdGF0aWMgRWZmZWN0IGZvckRl
ZihIZWFwUmFuZ2UgZGVmLCBIZWFwUmFuZ2UgcmVhZFJhbmdlLCBIZWFwUmFuZ2Ugd3JpdGVSYW5n
ZSkKKyAgICBjb25zdGV4cHIgc3RhdGljIEVmZmVjdCBmb3JQdXJlKCkKICAgICB7Ci0gICAgICAg
IEVmZmVjdCBlZmZlY3Q7Ci0gICAgICAgIGVmZmVjdC5yZWFkcyA9IHJlYWRSYW5nZTsKLSAgICAg
ICAgZWZmZWN0LndyaXRlcyA9IHdyaXRlUmFuZ2U7Ci0gICAgICAgIGVmZmVjdC5kZWYgPSBkZWY7
Ci0gICAgICAgIHJldHVybiBlZmZlY3Q7CisgICAgICAgIHJldHVybiBFZmZlY3QoSGVhcFJhbmdl
Ojpub25lKCksIEhlYXBSYW5nZTo6bm9uZSgpLCBIZWFwUmFuZ2U6Om5vbmUoKSk7CiAgICAgfQog
Ci0gICAgYm9vbCBtdXN0R2VuZXJhdGUoKSBjb25zdAorICAgIGNvbnN0ZXhwciBzdGF0aWMgRWZm
ZWN0IGZvckRlZihIZWFwUmFuZ2UgZGVmKQorICAgIHsKKyAgICAgICAgcmV0dXJuIEVmZmVjdChk
ZWYsIEhlYXBSYW5nZTo6bm9uZSgpLCBkZWYpOworICAgIH0KKworICAgIGNvbnN0ZXhwciBzdGF0
aWMgRWZmZWN0IGZvckRlZihIZWFwUmFuZ2UgZGVmLCBIZWFwUmFuZ2UgcmVhZFJhbmdlLCBIZWFw
UmFuZ2Ugd3JpdGVSYW5nZSkKKyAgICB7CisgICAgICAgIHJldHVybiBFZmZlY3QocmVhZFJhbmdl
LCB3cml0ZVJhbmdlLCBkZWYpOworICAgIH0KKworICAgIGNvbnN0ZXhwciBib29sIG11c3RHZW5l
cmF0ZSgpIGNvbnN0CiAgICAgewogICAgICAgICByZXR1cm4gISF3cml0ZXM7CiAgICAgfQogfTsK
IAogfSB9Ci0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RvbWpp
dC9ET01KSVRIZWFwUmFuZ2UuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kb21qaXQvRE9NSklU
SGVhcFJhbmdlLmgKaW5kZXggZmI5Mzk5OWZmNzg1YzA2ZjdkYWNkNmRhOWM4ZDZlMGE5NTY3ODY3
NC4uMjYxYTdhZjJjYzU4NDk1N2IxZWFlMDgxZTM4ZDBiZGYyZGVmMzBiMyAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RvbWppdC9ET01KSVRIZWFwUmFuZ2UuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZG9taml0L0RPTUpJVEhlYXBSYW5nZS5oCkBAIC0yOCw4ICsyOCw2
IEBACiAjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvUHJpbnRTdHJl
YW0uaD4KIAotI2lmIEVOQUJMRShKSVQpCi0KIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgRE9N
SklUIHsKIAogY2xhc3MgSGVhcFJhbmdlIHsKQEAgLTQ3LDcgKzQ1LDYgQEAgY2xhc3MgSGVhcFJh
bmdlIHsKICAgICAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRShiZWdpbiA8PSBlbmQsICJiZWdpbiA8
PSBlbmQgaXMgdGhlIGludmFyaWFudCBvZiB0aGlzIEhlYXBSYW5nZS4iKTsKICAgICB9CiAKLXBy
aXZhdGU6CiAgICAgZW51bSBDb25zdEV4cHJUYWcgeyBDb25zdEV4cHIgfTsKICAgICBjb25zdGV4
cHIgSGVhcFJhbmdlKENvbnN0RXhwclRhZywgdWludDE2X3QgYmVnaW4sIHVpbnQxNl90IGVuZCkK
ICAgICAgICAgOiBtX2JlZ2luKGJlZ2luKQpAQCAtNTUsMjEgKzUyLDEzIEBAIGNsYXNzIEhlYXBS
YW5nZSB7CiAgICAgewogICAgIH0KIAotICAgIHRlbXBsYXRlPHVpbnQxNl90IGJlZ2luLCB1aW50
MTZfdCBlbmQ+Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBIZWFwUmFuZ2UgZnJvbUNvbnN0YW50KCkK
LSAgICB7Ci0gICAgICAgIHN0YXRpY19hc3NlcnQoYmVnaW4gPD0gZW5kLCAiYmVnaW4gPD0gZW5k
IGlzIHRoZSBpbnZhcmlhbnQgb2YgdGhpcyBIZWFwUmFuZ2UuIik7Ci0gICAgICAgIHJldHVybiBI
ZWFwUmFuZ2UoQ29uc3RFeHByLCBiZWdpbiwgZW5kKTsKLSAgICB9Ci0KLXB1YmxpYzoKICAgICBl
bnVtIFJhd1JlcHJlc2VudGF0aW9uVGFnIHsgUmF3UmVwcmVzZW50YXRpb24gfTsKICAgICBleHBs
aWNpdCBjb25zdGV4cHIgSGVhcFJhbmdlKFJhd1JlcHJlc2VudGF0aW9uVGFnLCB1aW50MzJfdCB2
YWx1ZSkKICAgICAgICAgOiBtX3Jhdyh2YWx1ZSkKICAgICB7CiAgICAgfQogCi0gICAgc3RhdGlj
IEhlYXBSYW5nZSBmcm9tUmF3KHVpbnQzMl90IHZhbHVlKQorICAgIGNvbnN0ZXhwciBzdGF0aWMg
SGVhcFJhbmdlIGZyb21SYXcodWludDMyX3QgdmFsdWUpCiAgICAgewogICAgICAgICByZXR1cm4g
SGVhcFJhbmdlKFJhd1JlcHJlc2VudGF0aW9uLCB2YWx1ZSk7CiAgICAgfQpAQCAtODMsMTEgKzcy
LDIzIEBAIGNsYXNzIEhlYXBSYW5nZSB7CiAgICAgICAgIHJldHVybiBtX2JlZ2luICE9IG1fZW5k
OwogICAgIH0KIAotICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBIZWFwUmFuZ2UmIG90aGVyKSBj
b25zdAorICAgIGNvbnN0ZXhwciBib29sIG9wZXJhdG9yPT0oY29uc3QgSGVhcFJhbmdlJiBvdGhl
cikgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVybiBtX2JlZ2luID09IG90aGVyLm1fYmVnaW4g
JiYgbV9lbmQgPT0gb3RoZXIubV9lbmQ7CiAgICAgfQogCisgICAgY29uc3RleHByIGJvb2wgb3Bl
cmF0b3IhPShjb25zdCBIZWFwUmFuZ2UmIG90aGVyKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0
dXJuICFvcGVyYXRvcj09KG90aGVyKTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTx1aW50MTZfdCBi
ZWdpbiwgdWludDE2X3QgZW5kPgorICAgIHN0YXRpYyBjb25zdGV4cHIgSGVhcFJhbmdlIGZyb21D
b25zdGFudCgpCisgICAgeworICAgICAgICBzdGF0aWNfYXNzZXJ0KGJlZ2luIDwgZW5kIHx8IChi
ZWdpbiA9PSBVSU5UMTZfTUFYICYmIGVuZCA9PSBVSU5UMTZfTUFYKSwgImJlZ2luIDwgZW5kIG9y
IHRoZSBib3RoIGFyZSBVSU5UMTZfTUFYIGlzIHRoZSBpbnZhcmlhbnQgb2YgdGhpcyBIZWFwUmFu
Z2UuIik7CisgICAgICAgIHJldHVybiBIZWFwUmFuZ2UoQ29uc3RFeHByLCBiZWdpbiwgZW5kKTsK
KyAgICB9CisKICAgICBzdGF0aWMgY29uc3RleHByIEhlYXBSYW5nZSB0b3AoKSB7IHJldHVybiBm
cm9tQ29uc3RhbnQ8MCwgVUlOVDE2X01BWD4oKTsgfQogICAgIHN0YXRpYyBjb25zdGV4cHIgSGVh
cFJhbmdlIG5vbmUoKSB7IHJldHVybiBmcm9tQ29uc3RhbnQ8VUlOVDE2X01BWCwgVUlOVDE2X01B
WD4oKTsgfSAvLyBFbXB0eSByYW5nZS4KIApAQCAtMTI3LDUgKzEyOCwzIEBAIGNsYXNzIEhlYXBS
YW5nZSB7CiB9OwogCiB9IH0KLQotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZG9taml0L0RPTUpJVFNpZ25hdHVyZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rv
bWppdC9ET01KSVRTaWduYXR1cmUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45NTE1MjZhYWU4NmUxNWQxMTlkM2U5
OTI0YzMwZDdkNjIxNjhjNTQ4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RvbWppdC9ET01KSVRTaWduYXR1cmUuaApAQCAtMCwwICsxLDcyIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNs
dWRlICJDbGFzc0luZm8uaCIKKyNpbmNsdWRlICJET01KSVRFZmZlY3QuaCIKKyNpbmNsdWRlICJT
cGVjdWxhdGVkVHlwZS5oIgorCituYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERPTUpJVCB7CisK
Ky8vIEZJWE1FOiBDdXJyZW50bHksIHdlIG9ubHkgc3VwcG9ydCBmdW5jdGlvbnMgd2hpY2ggYXJn
dW1lbnRzIGFyZSB1cCB0byAyLgorLy8gRXZlbnR1YWxseSwgd2Ugc2hvdWxkIGV4dGVuZCB0aGlz
LiBCdXQgcG9zc2libHksIDIgb3IgMyBjYW4gY292ZXIgdHlwaWNhbCB1c2UgY2FzZXMuCisvLyBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY0MzQ2CisjZGVmaW5lIEpT
Q19ET01KSVRfU0lHTkFUVVJFX01BWF9BUkdVTUVOVFMgMgorI2RlZmluZSBKU0NfRE9NSklUX1NJ
R05BVFVSRV9NQVhfQVJHVU1FTlRTX0lOQ0xVRElOR19USElTICgxICsgSlNDX0RPTUpJVF9TSUdO
QVRVUkVfTUFYX0FSR1VNRU5UUykKKworY2xhc3MgUGF0Y2hwb2ludDsKKwordHlwZWRlZiBSZWY8
UGF0Y2hwb2ludD4gQ2hlY2tET01HZW5lcmF0b3JGdW5jdGlvbih2b2lkKTsKKworY2xhc3MgU2ln
bmF0dXJlIHsKK3B1YmxpYzoKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBBcmd1bWVudHM+Cisg
ICAgY29uc3RleHByIFNpZ25hdHVyZSh1aW50cHRyX3QgdW5zYWZlRnVuY3Rpb24sIENoZWNrRE9N
R2VuZXJhdG9yRnVuY3Rpb24qIGNoZWNrRE9NR2VuZXJhdG9yRnVuY3Rpb24sIGNvbnN0IENsYXNz
SW5mbyogY2xhc3NJbmZvLCBFZmZlY3QgZWZmZWN0LCBTcGVjdWxhdGVkVHlwZSByZXN1bHQsIEFy
Z3VtZW50cy4uLiBhcmd1bWVudHMpCisgICAgICAgIDogdW5zYWZlRnVuY3Rpb24odW5zYWZlRnVu
Y3Rpb24pCisgICAgICAgICwgY2hlY2tET01HZW5lcmF0b3JGdW5jdGlvbihjaGVja0RPTUdlbmVy
YXRvckZ1bmN0aW9uKQorICAgICAgICAsIGNsYXNzSW5mbyhjbGFzc0luZm8pCisgICAgICAgICwg
ZWZmZWN0KGVmZmVjdCkKKyAgICAgICAgLCByZXN1bHQocmVzdWx0KQorICAgICAgICAsIGFyZ3Vt
ZW50cyB7c3RhdGljX2Nhc3Q8U3BlY3VsYXRlZFR5cGU+KGFyZ3VtZW50cykuLi59CisgICAgICAg
ICwgYXJndW1lbnRDb3VudChzaXplb2YuLi4oYXJndW1lbnRzKSkKKyAgICB7CisgICAgfQorCisg
ICAgUmVmPFBhdGNocG9pbnQ+IGNoZWNrRE9NKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVy
biBjaGVja0RPTUdlbmVyYXRvckZ1bmN0aW9uKCk7CisgICAgfQorCisgICAgdWludHB0cl90IHVu
c2FmZUZ1bmN0aW9uOworICAgIENoZWNrRE9NR2VuZXJhdG9yRnVuY3Rpb24qIGNoZWNrRE9NR2Vu
ZXJhdG9yRnVuY3Rpb247CisgICAgY29uc3QgQ2xhc3NJbmZvKiBjb25zdCBjbGFzc0luZm87Cisg
ICAgY29uc3QgRWZmZWN0IGVmZmVjdDsKKyAgICBjb25zdCBTcGVjdWxhdGVkVHlwZSByZXN1bHQ7
CisgICAgY29uc3QgU3BlY3VsYXRlZFR5cGUgYXJndW1lbnRzW0pTQ19ET01KSVRfU0lHTkFUVVJF
X01BWF9BUkdVTUVOVFNdOworICAgIGNvbnN0IHVuc2lnbmVkIGFyZ3VtZW50Q291bnQ7Cit9Owor
Cit9IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0
aWVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcApp
bmRleCA1NGY0ZTcyZTY0MTliZmUyNTU2NTNlMzY1ZmJhYzgyMDMyZmZkZTk3Li4zYmExNWU2ZTI4
NDRkMzA0MDNlOGRkNGUwMTZjMjRiMGMwNDZkZmMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCkBAIC0yNzMsNiArMjczLDcgQEAgaW5saW5lIENh
cGFiaWxpdHlMZXZlbCBjYW5Db21waWxlKE5vZGUqIG5vZGUpCiAgICAgY2FzZSBEZWZpbmVBY2Nl
c3NvclByb3BlcnR5OgogICAgIGNhc2UgVG9Mb3dlckNhc2U6CiAgICAgY2FzZSBDaGVja0RPTToK
KyAgICBjYXNlIENhbGxET006CiAgICAgY2FzZSBDYWxsRE9NR2V0dGVyOgogICAgICAgICAvLyBU
aGVzZSBhcmUgT0suCiAgICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0
bC9GVExMb3dlckRGR1RvQjMuY3BwCmluZGV4IGFkMTYxNTcyMDI3YzQxZjMwMDY4M2RjMTIyNDJm
OWI5NWQ0NTkwYzIuLjc5ZDk3YmI2MDM4MWYzNDEyOWViZWIwMmNlZDhlNTg0ZDI0MThhMmUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKQEAgLTEw
NjAsNiArMTA2MCw5IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAgICAgICAgIGNhc2UgQ2hlY2tE
T006CiAgICAgICAgICAgICBjb21waWxlQ2hlY2tET00oKTsKICAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICBjYXNlIENhbGxET006CisgICAgICAgICAgICBjb21waWxlQ2FsbERPTSgpOworICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQ2FsbERPTUdldHRlcjoKICAgICAgICAgICAg
IGNvbXBpbGVDYWxsRE9NR2V0dGVyKCk7CiAgICAgICAgICAgICBicmVhazsKQEAgLTkxMDAsNiAr
OTEwMyw1NyBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogICAgICAgICBwYXRjaHBvaW50LT5lZmZl
Y3RzID0gRWZmZWN0czo6Zm9yQ2hlY2soKTsKICAgICB9CiAKKyAgICB2b2lkIGNvbXBpbGVDYWxs
RE9NKCkKKyAgICB7CisgICAgICAgIGNvbnN0IERPTUpJVDo6U2lnbmF0dXJlKiBzaWduYXR1cmUg
PSBtX25vZGUtPnNpZ25hdHVyZSgpOworCisgICAgICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgaGF2
ZSBhIHdheSB0byBjYWxsIGZ1bmN0aW9ucyB3aXRoIHRoZSB2ZWN0b3Igb2YgcmVnaXN0ZXJzLgor
ICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYzMDk5
CisgICAgICAgIFZlY3RvcjxMVmFsdWUsIEpTQ19ET01KSVRfU0lHTkFUVVJFX01BWF9BUkdVTUVO
VFNfSU5DTFVESU5HX1RISVM+IG9wZXJhbmRzOworCisgICAgICAgIHVuc2lnbmVkIGluZGV4ID0g
MDsKKyAgICAgICAgREZHX05PREVfRE9fVE9fQ0hJTERSRU4obV9ncmFwaCwgbV9ub2RlLCBbJl0o
Tm9kZSosIEVkZ2UgZWRnZSkgeworICAgICAgICAgICAgaWYgKCFpbmRleCkKKyAgICAgICAgICAg
ICAgICBvcGVyYW5kcy5hcHBlbmQobG93Q2VsbChlZGdlKSk7CisgICAgICAgICAgICBlbHNlIHsK
KyAgICAgICAgICAgICAgICBzd2l0Y2ggKHNpZ25hdHVyZS0+YXJndW1lbnRzW2luZGV4IC0gMV0p
IHsKKyAgICAgICAgICAgICAgICBjYXNlIFNwZWNTdHJpbmc6CisgICAgICAgICAgICAgICAgICAg
IG9wZXJhbmRzLmFwcGVuZChsb3dTdHJpbmcoZWRnZSkpOworICAgICAgICAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIFNwZWNJbnQzMk9ubHk6CisgICAgICAgICAgICAg
ICAgICAgIG9wZXJhbmRzLmFwcGVuZChsb3dJbnQzMihlZGdlKSk7CisgICAgICAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgU3BlY0Jvb2xlYW46CisgICAgICAgICAg
ICAgICAgICAgIG9wZXJhbmRzLmFwcGVuZChsb3dCb29sZWFuKGVkZ2UpKTsKKyAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAg
ICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgKytp
bmRleDsKKyAgICAgICAgfSk7CisKKyAgICAgICAgdW5zaWduZWQgYXJndW1lbnRDb3VudEluY2x1
ZGluZ1RoaXMgPSBzaWduYXR1cmUtPmFyZ3VtZW50Q291bnQgKyAxOworICAgICAgICBMVmFsdWUg
cmVzdWx0OworICAgICAgICBzd2l0Y2ggKGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKSB7Cisg
ICAgICAgIGNhc2UgMToKKyAgICAgICAgICAgIHJlc3VsdCA9IHZtQ2FsbChJbnQ2NCwgbV9vdXQu
b3BlcmF0aW9uKHJlaW50ZXJwcmV0X2Nhc3Q8Sl9KSVRPcGVyYXRpb25fRVA+KHNpZ25hdHVyZS0+
dW5zYWZlRnVuY3Rpb24pKSwgbV9jYWxsRnJhbWUsIG9wZXJhbmRzWzBdKTsKKyAgICAgICAgICAg
IGJyZWFrOworICAgICAgICBjYXNlIDI6CisgICAgICAgICAgICByZXN1bHQgPSB2bUNhbGwoSW50
NjQsIG1fb3V0Lm9wZXJhdGlvbihyZWludGVycHJldF9jYXN0PEpfSklUT3BlcmF0aW9uX0VQUD4o
c2lnbmF0dXJlLT51bnNhZmVGdW5jdGlvbikpLCBtX2NhbGxGcmFtZSwgb3BlcmFuZHNbMF0sIG9w
ZXJhbmRzWzFdKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIDM6CisgICAgICAg
ICAgICByZXN1bHQgPSB2bUNhbGwoSW50NjQsIG1fb3V0Lm9wZXJhdGlvbihyZWludGVycHJldF9j
YXN0PEpfSklUT3BlcmF0aW9uX0VQUFA+KHNpZ25hdHVyZS0+dW5zYWZlRnVuY3Rpb24pKSwgbV9j
YWxsRnJhbWUsIG9wZXJhbmRzWzBdLCBvcGVyYW5kc1sxXSwgb3BlcmFuZHNbMl0pOworICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VS
VF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAg
ICBzZXRKU1ZhbHVlKHJlc3VsdCk7CisgICAgfQorCiAgICAgdm9pZCBjb21waWxlQ2FsbERPTUdl
dHRlcigpCiAgICAgewogICAgICAgICBET01KSVQ6OkNhbGxET01HZXR0ZXJQYXRjaHBvaW50KiBk
b21KSVQgPSBtX25vZGUtPmNhbGxET01HZXR0ZXJEYXRhKCktPnBhdGNocG9pbnQ7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCmluZGV4IDhmNmM2OTcxYTZiZWU5ZjFm
YjZmYzM2OGRlNWEyY2I4NDc2NDRhNjguLjIwYjcxZjQ1MmNlNDRiNWNjNTZjYzcxYzJkNzZiMTdi
NTg4ZmU2NjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0
aW9ucy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCkBA
IC0xNTgsNiArMTU4LDcgQEAgdHlwZWRlZiBFbmNvZGVkSlNWYWx1ZSAoSklUX09QRVJBVElPTiAq
Sl9KSVRPcGVyYXRpb25fRUpQKShFeGVjU3RhdGUqLCBFbmNvZGVkSlMKIHR5cGVkZWYgRW5jb2Rl
ZEpTVmFsdWUgKEpJVF9PUEVSQVRJT04gKkpfSklUT3BlcmF0aW9uX0VHUCkoRXhlY1N0YXRlKiwg
SlNHbG9iYWxPYmplY3QqLCB2b2lkKik7CiB0eXBlZGVmIEVuY29kZWRKU1ZhbHVlIChKSVRfT1BF
UkFUSU9OICpKX0pJVE9wZXJhdGlvbl9FUCkoRXhlY1N0YXRlKiwgdm9pZCopOwogdHlwZWRlZiBF
bmNvZGVkSlNWYWx1ZSAoSklUX09QRVJBVElPTiAqSl9KSVRPcGVyYXRpb25fRVBQKShFeGVjU3Rh
dGUqLCB2b2lkKiwgdm9pZCopOwordHlwZWRlZiBFbmNvZGVkSlNWYWx1ZSAoSklUX09QRVJBVElP
TiAqSl9KSVRPcGVyYXRpb25fRVBQUCkoRXhlY1N0YXRlKiwgdm9pZCosIHZvaWQqLCB2b2lkKik7
CiB0eXBlZGVmIEVuY29kZWRKU1ZhbHVlIChKSVRfT1BFUkFUSU9OICpKX0pJVE9wZXJhdGlvbl9F
UFMpKEV4ZWNTdGF0ZSosIHZvaWQqLCBzaXplX3QpOwogdHlwZWRlZiBFbmNvZGVkSlNWYWx1ZSAo
SklUX09QRVJBVElPTiAqSl9KSVRPcGVyYXRpb25fRVBjKShFeGVjU3RhdGUqLCBJbnN0cnVjdGlv
biopOwogdHlwZWRlZiBFbmNvZGVkSlNWYWx1ZSAoSklUX09QRVJBVElPTiAqSl9KSVRPcGVyYXRp
b25fRUpzY0MpKEV4ZWNTdGF0ZSosIEpTU2NvcGUqLCBKU0NlbGwqKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUVGh1bmtzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUVGh1bmtzLmNwcAppbmRleCBiZjBhN2Y5MDkxOWE1YjZkMGJlZWQ5MjhhYmRh
ZjcxMGM5ZGM5ZDBiLi40MGMxMmNlYzk0ZTAxYTA4NDA0ZjdiNmQ5NjcyMWYxMDUxZjQ4MzE5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFRodW5rcy5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRUaHVua3MuY3BwCkBAIC05MCwxMCArOTAsMTAg
QEAgdm9pZCBKSVRUaHVua3M6OmZpbmFsaXplKEhhbmRsZTxVbmtub3duPiBoYW5kbGUsIHZvaWQq
KQogCiBOYXRpdmVFeGVjdXRhYmxlKiBKSVRUaHVua3M6Omhvc3RGdW5jdGlvblN0dWIoVk0qIHZt
LCBOYXRpdmVGdW5jdGlvbiBmdW5jdGlvbiwgTmF0aXZlRnVuY3Rpb24gY29uc3RydWN0b3IsIGNv
bnN0IFN0cmluZyYgbmFtZSkKIHsKLSAgICByZXR1cm4gaG9zdEZ1bmN0aW9uU3R1Yih2bSwgZnVu
Y3Rpb24sIGNvbnN0cnVjdG9yLCBudWxscHRyLCBOb0ludHJpbnNpYywgbmFtZSk7CisgICAgcmV0
dXJuIGhvc3RGdW5jdGlvblN0dWIodm0sIGZ1bmN0aW9uLCBjb25zdHJ1Y3RvciwgbnVsbHB0ciwg
Tm9JbnRyaW5zaWMsIG51bGxwdHIsIG5hbWUpOwogfQogCi1OYXRpdmVFeGVjdXRhYmxlKiBKSVRU
aHVua3M6Omhvc3RGdW5jdGlvblN0dWIoVk0qIHZtLCBOYXRpdmVGdW5jdGlvbiBmdW5jdGlvbiwg
TmF0aXZlRnVuY3Rpb24gY29uc3RydWN0b3IsIFRodW5rR2VuZXJhdG9yIGdlbmVyYXRvciwgSW50
cmluc2ljIGludHJpbnNpYywgY29uc3QgU3RyaW5nJiBuYW1lKQorTmF0aXZlRXhlY3V0YWJsZSog
SklUVGh1bmtzOjpob3N0RnVuY3Rpb25TdHViKFZNKiB2bSwgTmF0aXZlRnVuY3Rpb24gZnVuY3Rp
b24sIE5hdGl2ZUZ1bmN0aW9uIGNvbnN0cnVjdG9yLCBUaHVua0dlbmVyYXRvciBnZW5lcmF0b3Is
IEludHJpbnNpYyBpbnRyaW5zaWMsIGNvbnN0IERPTUpJVDo6U2lnbmF0dXJlKiBzaWduYXR1cmUs
IGNvbnN0IFN0cmluZyYgbmFtZSkKIHsKICAgICBBU1NFUlQoIWlzQ29tcGlsYXRpb25UaHJlYWQo
KSk7ICAgIAogICAgIEFTU0VSVCh2bS0+Y2FuVXNlSklUKCkpOwpAQCAtMTEwLDE0ICsxMTAsMTQg
QEAgTmF0aXZlRXhlY3V0YWJsZSogSklUVGh1bmtzOjpob3N0RnVuY3Rpb25TdHViKFZNKiB2bSwg
TmF0aXZlRnVuY3Rpb24gZnVuY3Rpb24sIE4KICAgICAKICAgICBSZWZQdHI8SklUQ29kZT4gZm9y
Q29uc3RydWN0ID0gYWRvcHRSZWYobmV3IE5hdGl2ZUpJVENvZGUoTWFjcm9Bc3NlbWJsZXJDb2Rl
UmVmOjpjcmVhdGVTZWxmTWFuYWdlZENvZGVSZWYoY3RpTmF0aXZlQ29uc3RydWN0KHZtKSksIEpJ
VENvZGU6Okhvc3RDYWxsVGh1bmspKTsKICAgICAKLSAgICBOYXRpdmVFeGVjdXRhYmxlKiBuYXRp
dmVFeGVjdXRhYmxlID0gTmF0aXZlRXhlY3V0YWJsZTo6Y3JlYXRlKCp2bSwgZm9yQ2FsbCwgZnVu
Y3Rpb24sIGZvckNvbnN0cnVjdCwgY29uc3RydWN0b3IsIGludHJpbnNpYywgbmFtZSk7CisgICAg
TmF0aXZlRXhlY3V0YWJsZSogbmF0aXZlRXhlY3V0YWJsZSA9IE5hdGl2ZUV4ZWN1dGFibGU6OmNy
ZWF0ZSgqdm0sIGZvckNhbGwsIGZ1bmN0aW9uLCBmb3JDb25zdHJ1Y3QsIGNvbnN0cnVjdG9yLCBp
bnRyaW5zaWMsIHNpZ25hdHVyZSwgbmFtZSk7CiAgICAgd2Vha0FkZCgqbV9ob3N0RnVuY3Rpb25T
dHViTWFwLCBzdGQ6Om1ha2VfdHVwbGUoZnVuY3Rpb24sIGNvbnN0cnVjdG9yLCBuYW1lKSwgV2Vh
azxOYXRpdmVFeGVjdXRhYmxlPihuYXRpdmVFeGVjdXRhYmxlLCB0aGlzKSk7CiAgICAgcmV0dXJu
IG5hdGl2ZUV4ZWN1dGFibGU7CiB9CiAKIE5hdGl2ZUV4ZWN1dGFibGUqIEpJVFRodW5rczo6aG9z
dEZ1bmN0aW9uU3R1YihWTSogdm0sIE5hdGl2ZUZ1bmN0aW9uIGZ1bmN0aW9uLCBUaHVua0dlbmVy
YXRvciBnZW5lcmF0b3IsIEludHJpbnNpYyBpbnRyaW5zaWMsIGNvbnN0IFN0cmluZyYgbmFtZSkK
IHsKLSAgICByZXR1cm4gaG9zdEZ1bmN0aW9uU3R1Yih2bSwgZnVuY3Rpb24sIGNhbGxIb3N0RnVu
Y3Rpb25Bc0NvbnN0cnVjdG9yLCBnZW5lcmF0b3IsIGludHJpbnNpYywgbmFtZSk7CisgICAgcmV0
dXJuIGhvc3RGdW5jdGlvblN0dWIodm0sIGZ1bmN0aW9uLCBjYWxsSG9zdEZ1bmN0aW9uQXNDb25z
dHJ1Y3RvciwgZ2VuZXJhdG9yLCBpbnRyaW5zaWMsIG51bGxwdHIsIG5hbWUpOwogfQogCiB2b2lk
IEpJVFRodW5rczo6Y2xlYXJIb3N0RnVuY3Rpb25TdHVicygpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVFRodW5rcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRUaHVua3MuaAppbmRleCAzZjhmZTgwM2Y5ODcxMGY2OTIzNTI3YmM4ZjY1NTBmNGVkZDFj
N2FlLi5hZGRjZjIzMGMzNDVkNDI3MWI2MzdmMDhiOTRjNDE2YTNlZDE4MmE0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFRodW5rcy5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUVGh1bmtzLmgKQEAgLTM5LDYgKzM5LDkgQEAKICNpbmNsdWRlIDx3
dGYvdGV4dC9TdHJpbmdIYXNoLmg+CiAKIG5hbWVzcGFjZSBKU0MgeworbmFtZXNwYWNlIERPTUpJ
VCB7CitjbGFzcyBTaWduYXR1cmU7Cit9CiAKIGNsYXNzIFZNOwogY2xhc3MgTmF0aXZlRXhlY3V0
YWJsZTsKQEAgLTU3LDcgKzYwLDcgQEAgY2xhc3MgSklUVGh1bmtzIGZpbmFsIDogcHJpdmF0ZSBX
ZWFrSGFuZGxlT3duZXIgewogICAgIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBjdGlTdHViKFZNKiwg
VGh1bmtHZW5lcmF0b3IpOwogCiAgICAgTmF0aXZlRXhlY3V0YWJsZSogaG9zdEZ1bmN0aW9uU3R1
YihWTSosIE5hdGl2ZUZ1bmN0aW9uLCBOYXRpdmVGdW5jdGlvbiBjb25zdHJ1Y3RvciwgY29uc3Qg
U3RyaW5nJiBuYW1lKTsKLSAgICBOYXRpdmVFeGVjdXRhYmxlKiBob3N0RnVuY3Rpb25TdHViKFZN
KiwgTmF0aXZlRnVuY3Rpb24sIE5hdGl2ZUZ1bmN0aW9uIGNvbnN0cnVjdG9yLCBUaHVua0dlbmVy
YXRvciwgSW50cmluc2ljLCBjb25zdCBTdHJpbmcmIG5hbWUpOworICAgIE5hdGl2ZUV4ZWN1dGFi
bGUqIGhvc3RGdW5jdGlvblN0dWIoVk0qLCBOYXRpdmVGdW5jdGlvbiwgTmF0aXZlRnVuY3Rpb24g
Y29uc3RydWN0b3IsIFRodW5rR2VuZXJhdG9yLCBJbnRyaW5zaWMsIGNvbnN0IERPTUpJVDo6U2ln
bmF0dXJlKiwgY29uc3QgU3RyaW5nJiBuYW1lKTsKICAgICBOYXRpdmVFeGVjdXRhYmxlKiBob3N0
RnVuY3Rpb25TdHViKFZNKiwgTmF0aXZlRnVuY3Rpb24sIFRodW5rR2VuZXJhdG9yLCBJbnRyaW5z
aWMsIGNvbnN0IFN0cmluZyYgbmFtZSk7CiAKICAgICB2b2lkIGNsZWFySG9zdEZ1bmN0aW9uU3R1
YnMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQm91bmRG
dW5jdGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0JvdW5kRnVuY3Rp
b24uY3BwCmluZGV4IDI2Zjk5ZDY1M2FhMTQ0YjI0MDRkZDc5NTk0MzI5M2RlOTZiNzM0YzUuLmM0
Y2U0M2U3ZDU2MGI4NzM2M2M0OGQ5NTBhMDlhZDc5ZDA1MjQ5N2EgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQm91bmRGdW5jdGlvbi5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCb3VuZEZ1bmN0aW9uLmNwcApAQCAtMTY4LDcgKzE2
OCw3IEBAIEpTQm91bmRGdW5jdGlvbiogSlNCb3VuZEZ1bmN0aW9uOjpjcmVhdGUoVk0mIHZtLCBF
eGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0CiAgICAgTmF0aXZlRXhlY3V0YWJsZSogZXhl
Y3V0YWJsZSA9IHZtLmdldEhvc3RGdW5jdGlvbigKICAgICAgICAgc2xvd0Nhc2UgPyBib3VuZEZ1
bmN0aW9uQ2FsbCA6IGJvdW5kVGhpc05vQXJnc0Z1bmN0aW9uQ2FsbCwKICAgICAgICAgc2xvd0Nh
c2UgPyBOb0ludHJpbnNpYyA6IEJvdW5kVGhpc05vQXJnc0Z1bmN0aW9uQ2FsbEludHJpbnNpYywK
LSAgICAgICAgY2FuQ29uc3RydWN0ID8gKHNsb3dDYXNlID8gYm91bmRGdW5jdGlvbkNvbnN0cnVj
dCA6IGJvdW5kVGhpc05vQXJnc0Z1bmN0aW9uQ29uc3RydWN0KSA6IGNhbGxIb3N0RnVuY3Rpb25B
c0NvbnN0cnVjdG9yLAorICAgICAgICBjYW5Db25zdHJ1Y3QgPyAoc2xvd0Nhc2UgPyBib3VuZEZ1
bmN0aW9uQ29uc3RydWN0IDogYm91bmRUaGlzTm9BcmdzRnVuY3Rpb25Db25zdHJ1Y3QpIDogY2Fs
bEhvc3RGdW5jdGlvbkFzQ29uc3RydWN0b3IsIG51bGxwdHIsCiAgICAgICAgIG5hbWUpOwogICAg
IFN0cnVjdHVyZSogc3RydWN0dXJlID0gZ2V0Qm91bmRGdW5jdGlvblN0cnVjdHVyZSh2bSwgZXhl
YywgZ2xvYmFsT2JqZWN0LCB0YXJnZXRGdW5jdGlvbik7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElP
TihzY29wZSwgbnVsbHB0cik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0NlbGwuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5oCmlu
ZGV4IGM0MGYzZTIxOTg0MWZiNDY4OTYzNTI4NGIwNDIyNDdhZmQ1MjNjMzYuLjRlZmJmOTA3Nzhj
YzU3MWJiZGI4Mjg3MWE1MWZhNDRmODU2YWU5OGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTQ2VsbC5oCkBAIC01NiwxNyArNTYsMTcgQEAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gdm9p
ZCogYWxsb2NhdGVDZWxsKEhlYXAmLCBzaXplX3QpOwogdGVtcGxhdGU8dHlwZW5hbWUgVD4gdm9p
ZCogYWxsb2NhdGVDZWxsKEhlYXAmLCBHQ0RlZmVycmFsQ29udGV4dCopOwogdGVtcGxhdGU8dHlw
ZW5hbWUgVD4gdm9pZCogYWxsb2NhdGVDZWxsKEhlYXAmLCBHQ0RlZmVycmFsQ29udGV4dCosIHNp
emVfdCk7CiAKLSNkZWZpbmUgREVDTEFSRV9FWFBPUlRfSU5GTyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBwcm90ZWN0ZWQ6ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgc3Rh
dGljIEpTX0VYUE9SVERBVEEgY29uc3QgOjpKU0M6OkNsYXNzSW5mbyBzX2luZm87ICAgICAgICAg
ICAgIFwKLSAgICBwdWJsaWM6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgc3RhdGljIGNvbnN0IDo6SlNDOjpDbGFz
c0luZm8qIGluZm8oKSB7IHJldHVybiAmc19pbmZvOyB9Ci0KLSNkZWZpbmUgREVDTEFSRV9JTkZP
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAg
ICBwcm90ZWN0ZWQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFwKLSAgICAgICAgc3RhdGljIGNvbnN0IDo6SlNDOjpDbGFzc0luZm8gc19p
bmZvOyAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBwdWJsaWM6ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAg
ICAgc3RhdGljIGNvbnN0IDo6SlNDOjpDbGFzc0luZm8qIGluZm8oKSB7IHJldHVybiAmc19pbmZv
OyB9CisjZGVmaW5lIERFQ0xBUkVfRVhQT1JUX0lORk8gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBwcm90ZWN0ZWQ6ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAg
ICBzdGF0aWMgSlNfRVhQT1JUREFUQSBjb25zdCA6OkpTQzo6Q2xhc3NJbmZvIHNfaW5mbzsgICAg
ICAgICAgICAgICAgICBcCisgICAgcHVibGljOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgc3RhdGljIGNv
bnN0ZXhwciBjb25zdCA6OkpTQzo6Q2xhc3NJbmZvKiBpbmZvKCkgeyByZXR1cm4gJnNfaW5mbzsg
fQorCisjZGVmaW5lIERFQ0xBUkVfSU5GTyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBwcm90ZWN0ZWQ6ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAg
ICBzdGF0aWMgY29uc3QgOjpKU0M6OkNsYXNzSW5mbyBzX2luZm87ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBcCisgICAgcHVibGljOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgc3RhdGljIGNv
bnN0ZXhwciBjb25zdCA6OkpTQzo6Q2xhc3NJbmZvKiBpbmZvKCkgeyByZXR1cm4gJnNfaW5mbzsg
fQogCiBjbGFzcyBKU0NlbGwgOiBwdWJsaWMgSGVhcENlbGwgewogICAgIGZyaWVuZCBjbGFzcyBK
U1ZhbHVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5j
dGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcApp
bmRleCA4NTg0YmMyOTdhZjcyM2Y1ODI5ODE1NmUyZTJiMGE4OGFlNzE4ZmI0Li5hMzE4NDJiNjU5
MDkzZWVkNDgzMmYwYzIyNTQ3ZmZiNDQ5YzQ0Y2Q5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcApAQCAtODQsOSArODQsOSBAQCBKU0Z1bmN0aW9uKiBK
U0Z1bmN0aW9uOjpjcmVhdGUoVk0mIHZtLCBXZWJBc3NlbWJseUV4ZWN1dGFibGUqIGV4ZWN1dGFi
bGUsIEpTU2NvcAogfQogI2VuZGlmCiAKLUpTRnVuY3Rpb24qIEpTRnVuY3Rpb246OmNyZWF0ZShW
TSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGludCBsZW5ndGgsIGNvbnN0IFN0
cmluZyYgbmFtZSwgTmF0aXZlRnVuY3Rpb24gbmF0aXZlRnVuY3Rpb24sIEludHJpbnNpYyBpbnRy
aW5zaWMsIE5hdGl2ZUZ1bmN0aW9uIG5hdGl2ZUNvbnN0cnVjdG9yKQorSlNGdW5jdGlvbiogSlNG
dW5jdGlvbjo6Y3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgaW50
IGxlbmd0aCwgY29uc3QgU3RyaW5nJiBuYW1lLCBOYXRpdmVGdW5jdGlvbiBuYXRpdmVGdW5jdGlv
biwgSW50cmluc2ljIGludHJpbnNpYywgTmF0aXZlRnVuY3Rpb24gbmF0aXZlQ29uc3RydWN0b3Is
IGNvbnN0IERPTUpJVDo6U2lnbmF0dXJlKiBzaWduYXR1cmUpCiB7Ci0gICAgTmF0aXZlRXhlY3V0
YWJsZSogZXhlY3V0YWJsZSA9IHZtLmdldEhvc3RGdW5jdGlvbihuYXRpdmVGdW5jdGlvbiwgaW50
cmluc2ljLCBuYXRpdmVDb25zdHJ1Y3RvciwgbmFtZSk7CisgICAgTmF0aXZlRXhlY3V0YWJsZSog
ZXhlY3V0YWJsZSA9IHZtLmdldEhvc3RGdW5jdGlvbihuYXRpdmVGdW5jdGlvbiwgaW50cmluc2lj
LCBuYXRpdmVDb25zdHJ1Y3Rvciwgc2lnbmF0dXJlLCBuYW1lKTsKICAgICBKU0Z1bmN0aW9uKiBm
dW5jdGlvbiA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTRnVuY3Rpb24+KHZtLmhlYXAp
KSBKU0Z1bmN0aW9uKHZtLCBnbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdC0+ZnVuY3Rpb25TdHJ1
Y3R1cmUoKSk7CiAgICAgLy8gQ2FuJ3QgZG8gdGhpcyBkdXJpbmcgaW5pdGlhbGl6YXRpb24gYmVj
YXVzZSBnZXRIb3N0RnVuY3Rpb24gbWlnaHQgZG8gYSBHQyBhbGxvY2F0aW9uLgogICAgIGZ1bmN0
aW9uLT5maW5pc2hDcmVhdGlvbih2bSwgZXhlY3V0YWJsZSwgbGVuZ3RoLCBuYW1lKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uaAppbmRleCA4ZGYwM2ExNGE2N2Rh
ZTkzMDRjMGQ1NTQ5NGY5NWE4NzdmOTc4MWU2Li5mMTFiMTJmYjNiZDE0NTYyNWY4MmJmMWZhODcy
NTA0NDQ3NjU3NjI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0Z1bmN0aW9uLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlv
bi5oCkBAIC00Niw2ICs0NiwxMSBAQCBjbGFzcyBTcGVjdWxhdGl2ZUpJVDsKIGNsYXNzIEpJVENv
bXBpbGVyOwogfQogCituYW1lc3BhY2UgRE9NSklUIHsKK2NsYXNzIFNpZ25hdHVyZTsKK30KKwor
CiBKU19FWFBPUlRfUFJJVkFURSBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxIb3N0
RnVuY3Rpb25Bc0NvbnN0cnVjdG9yKEV4ZWNTdGF0ZSopOwogCiBKU19FWFBPUlRfUFJJVkFURSBT
dHJpbmcgZ2V0Q2FsY3VsYXRlZERpc3BsYXlOYW1lKFZNJiwgSlNPYmplY3QqKTsKQEAgLTY3LDcg
KzcyLDcgQEAgY2xhc3MgSlNGdW5jdGlvbiA6IHB1YmxpYyBKU0NhbGxlZSB7CiAgICAgICAgIHJl
dHVybiBzaXplb2YoSlNGdW5jdGlvbik7CiAgICAgfQogCi0gICAgSlNfRVhQT1JUX1BSSVZBVEUg
c3RhdGljIEpTRnVuY3Rpb24qIGNyZWF0ZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgaW50IGxlbmd0
aCwgY29uc3QgU3RyaW5nJiBuYW1lLCBOYXRpdmVGdW5jdGlvbiwgSW50cmluc2ljID0gTm9JbnRy
aW5zaWMsIE5hdGl2ZUZ1bmN0aW9uIG5hdGl2ZUNvbnN0cnVjdG9yID0gY2FsbEhvc3RGdW5jdGlv
bkFzQ29uc3RydWN0b3IpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBKU0Z1bmN0aW9u
KiBjcmVhdGUoVk0mLCBKU0dsb2JhbE9iamVjdCosIGludCBsZW5ndGgsIGNvbnN0IFN0cmluZyYg
bmFtZSwgTmF0aXZlRnVuY3Rpb24sIEludHJpbnNpYyA9IE5vSW50cmluc2ljLCBOYXRpdmVGdW5j
dGlvbiBuYXRpdmVDb25zdHJ1Y3RvciA9IGNhbGxIb3N0RnVuY3Rpb25Bc0NvbnN0cnVjdG9yLCBj
b25zdCBET01KSVQ6OlNpZ25hdHVyZSogPSBudWxscHRyKTsKICAgICAKICAgICBzdGF0aWMgSlNG
dW5jdGlvbiogY3JlYXRlV2l0aEludmFsaWRhdGVkUmVhbGxvY2F0aW9uV2F0Y2hwb2ludChWTSYs
IEZ1bmN0aW9uRXhlY3V0YWJsZSosIEpTU2NvcGUqKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNOYXRpdmVTdGRGdW5jdGlvbi5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU05hdGl2ZVN0ZEZ1bmN0aW9uLmNwcAppbmRleCA2ZGQ4NDlm
MmVhZmJlYmRkNzA3ZWU1NzM4MDA4MmRlNTQ4OTMyMGExLi5jMTI2NWIxZjA2YTkwYTA3NDQxZDdh
YzVjNjA4ODMwYTFlZmE0ZjAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU05hdGl2ZVN0ZEZ1bmN0aW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU05hdGl2ZVN0ZEZ1bmN0aW9uLmNwcApAQCAtNjYsNyArNjYsNyBAQCBzdGF0aWMg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBydW5TdGRGdW5jdGlvbihFeGVjU3RhdGUqIHN0
YXRlKQogCiBKU05hdGl2ZVN0ZEZ1bmN0aW9uKiBKU05hdGl2ZVN0ZEZ1bmN0aW9uOjpjcmVhdGUo
Vk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBpbnQgbGVuZ3RoLCBjb25zdCBT
dHJpbmcmIG5hbWUsIE5hdGl2ZVN0ZEZ1bmN0aW9uJiYgbmF0aXZlU3RkRnVuY3Rpb24sIEludHJp
bnNpYyBpbnRyaW5zaWMsIE5hdGl2ZUZ1bmN0aW9uIG5hdGl2ZUNvbnN0cnVjdG9yKQogewotICAg
IE5hdGl2ZUV4ZWN1dGFibGUqIGV4ZWN1dGFibGUgPSB2bS5nZXRIb3N0RnVuY3Rpb24ocnVuU3Rk
RnVuY3Rpb24sIGludHJpbnNpYywgbmF0aXZlQ29uc3RydWN0b3IsIG5hbWUpOworICAgIE5hdGl2
ZUV4ZWN1dGFibGUqIGV4ZWN1dGFibGUgPSB2bS5nZXRIb3N0RnVuY3Rpb24ocnVuU3RkRnVuY3Rp
b24sIGludHJpbnNpYywgbmF0aXZlQ29uc3RydWN0b3IsIG51bGxwdHIsIG5hbWUpOwogICAgIE5h
dGl2ZVN0ZEZ1bmN0aW9uQ2VsbCogZnVuY3Rpb25DZWxsID0gTmF0aXZlU3RkRnVuY3Rpb25DZWxs
OjpjcmVhdGUodm0sIFdURk1vdmUobmF0aXZlU3RkRnVuY3Rpb24pKTsKICAgICBTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSA9IGdsb2JhbE9iamVjdC0+bmF0aXZlU3RkRnVuY3Rpb25TdHJ1Y3R1cmUoKTsK
ICAgICBKU05hdGl2ZVN0ZEZ1bmN0aW9uKiBmdW5jdGlvbiA9IG5ldyAoTm90TnVsbCwgYWxsb2Nh
dGVDZWxsPEpTTmF0aXZlU3RkRnVuY3Rpb24+KHZtLmhlYXApKSBKU05hdGl2ZVN0ZEZ1bmN0aW9u
KHZtLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU09iamVjdC5jcHAKaW5kZXggZjUzZGI2MTk4NmVhZGRhYTIzYTI0NWRlNTRhZTA5YzU4
ZjBhYjc2NC4uMDhhZTc5MjBhOWVlNTJjMjRkNzVhYmUxZGE3ZjY2ZTgxMWIyYWYxYyAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcApAQCAtMjU0OSw2ICsyNTQ5
LDE3IEBAIGJvb2wgSlNPYmplY3Q6OnB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uKFZNJiB2bSwgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uCiAgICAgcmV0dXJuIHB1dERpcmVjdCh2bSwg
cHJvcGVydHlOYW1lLCBmdW5jdGlvbiwgYXR0cmlidXRlcyk7CiB9CiAKK2Jvb2wgSlNPYmplY3Q6
OnB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgY29uc3QgUHJvcGVydHlOYW1lJiBwcm9wZXJ0eU5hbWUsIHVuc2lnbmVkIGZ1bmN0aW9u
TGVuZ3RoLCBOYXRpdmVGdW5jdGlvbiBuYXRpdmVGdW5jdGlvbiwgSW50cmluc2ljIGludHJpbnNp
YywgY29uc3QgRE9NSklUOjpTaWduYXR1cmUqIHNpZ25hdHVyZSwgdW5zaWduZWQgYXR0cmlidXRl
cykKK3sKKyAgICBTdHJpbmdJbXBsKiBuYW1lID0gcHJvcGVydHlOYW1lLnB1YmxpY05hbWUoKTsK
KyAgICBpZiAoIW5hbWUpCisgICAgICAgIG5hbWUgPSB2bS5wcm9wZXJ0eU5hbWVzLT5hbm9ueW1v
dXMuaW1wbCgpOworICAgIEFTU0VSVChuYW1lKTsKKworICAgIEpTRnVuY3Rpb24qIGZ1bmN0aW9u
ID0gSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIGZ1bmN0aW9uTGVuZ3RoLCBu
YW1lLCBuYXRpdmVGdW5jdGlvbiwgaW50cmluc2ljLCBjYWxsSG9zdEZ1bmN0aW9uQXNDb25zdHJ1
Y3Rvciwgc2lnbmF0dXJlKTsKKyAgICByZXR1cm4gcHV0RGlyZWN0KHZtLCBwcm9wZXJ0eU5hbWUs
IGZ1bmN0aW9uLCBhdHRyaWJ1dGVzKTsKK30KKwogSlNGdW5jdGlvbiogSlNPYmplY3Q6OnB1dERp
cmVjdEJ1aWx0aW5GdW5jdGlvbihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IGNvbnN0IFByb3BlcnR5TmFtZSYgcHJvcGVydHlOYW1lLCBGdW5jdGlvbkV4ZWN1dGFibGUqIGZ1
bmN0aW9uRXhlY3V0YWJsZSwgdW5zaWduZWQgYXR0cmlidXRlcykKIHsKICAgICBTdHJpbmdJbXBs
KiBuYW1lID0gcHJvcGVydHlOYW1lLnB1YmxpY05hbWUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU09iamVjdC5oCmluZGV4IDYyMjBlYzdhMWJhOGU4YTc0OWRiNGIwNmNkNDI5M2E4
ODVhZjdmOTIuLmViZTQ4NWU4ZGYzNmRiNWNhZjM3NzA0YjhlZWRkNGE3NmNiOWM0NDMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaApAQCAtNDcsNiArNDcsOSBAQAog
I2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KIAogbmFtZXNwYWNlIEpTQyB7CituYW1lc3Bh
Y2UgRE9NSklUIHsKK2NsYXNzIFNpZ25hdHVyZTsKK30KIAogaW5saW5lIEpTQ2VsbCogZ2V0SlNG
dW5jdGlvbihKU1ZhbHVlIHZhbHVlKQogewpAQCAtNzAwLDYgKzcwMyw3IEBAIGNsYXNzIEpTT2Jq
ZWN0IDogcHVibGljIEpTQ2VsbCB7CiAKICAgICBKU19FWFBPUlRfUFJJVkFURSBib29sIHB1dERp
cmVjdE5hdGl2ZUludHJpbnNpY0dldHRlcihWTSYsIEpTR2xvYmFsT2JqZWN0KiwgSWRlbnRpZmll
ciwgTmF0aXZlRnVuY3Rpb24sIEludHJpbnNpYywgdW5zaWduZWQgYXR0cmlidXRlcyk7CiAgICAg
SlNfRVhQT1JUX1BSSVZBVEUgYm9vbCBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbihWTSYsIEpTR2xv
YmFsT2JqZWN0KiwgY29uc3QgUHJvcGVydHlOYW1lJiwgdW5zaWduZWQgZnVuY3Rpb25MZW5ndGgs
IE5hdGl2ZUZ1bmN0aW9uLCBJbnRyaW5zaWMsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpOworICAgIEpT
X0VYUE9SVF9QUklWQVRFIGJvb2wgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb24oVk0mLCBKU0dsb2Jh
bE9iamVjdCosIGNvbnN0IFByb3BlcnR5TmFtZSYsIHVuc2lnbmVkIGZ1bmN0aW9uTGVuZ3RoLCBO
YXRpdmVGdW5jdGlvbiwgSW50cmluc2ljLCBjb25zdCBET01KSVQ6OlNpZ25hdHVyZSosIHVuc2ln
bmVkIGF0dHJpYnV0ZXMpOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIEpTRnVuY3Rpb24qIHB1dERp
cmVjdEJ1aWx0aW5GdW5jdGlvbihWTSYsIEpTR2xvYmFsT2JqZWN0KiwgY29uc3QgUHJvcGVydHlO
YW1lJiwgRnVuY3Rpb25FeGVjdXRhYmxlKiwgdW5zaWduZWQgYXR0cmlidXRlcyk7CiAgICAgSlNG
dW5jdGlvbiogcHV0RGlyZWN0QnVpbHRpbkZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24oVk0mLCBK
U0dsb2JhbE9iamVjdCosIGNvbnN0IFByb3BlcnR5TmFtZSYsIEZ1bmN0aW9uRXhlY3V0YWJsZSos
IHVuc2lnbmVkIGF0dHJpYnV0ZXMpOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgcHV0RGly
ZWN0TmF0aXZlRnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbihWTSYsIEpTR2xvYmFsT2JqZWN0Kiwg
Y29uc3QgUHJvcGVydHlOYW1lJiwgdW5zaWduZWQgZnVuY3Rpb25MZW5ndGgsIE5hdGl2ZUZ1bmN0
aW9uLCBJbnRyaW5zaWMsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTG9va3VwLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Mb29rdXAuaAppbmRleCBlMmQxNzk1Mzg4ZTc2NTJiZDhmMWI0YjZkYWNiYjJjYmNl
OWNkNDRmLi5kNzA3Njg2ZmI1NjkzZTdmNTJmZTZkMWEyZWM0NGJkMDAyM2JlZjExIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Mb29rdXAuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Mb29rdXAuaApAQCAtMjQsNiArMjQsNyBAQAogI2luY2x1
ZGUgIkNhbGxGcmFtZS5oIgogI2luY2x1ZGUgIkN1c3RvbUdldHRlclNldHRlci5oIgogI2luY2x1
ZGUgIkRPTUpJVEdldHRlclNldHRlci5oIgorI2luY2x1ZGUgIkRPTUpJVFNpZ25hdHVyZS5oIgog
I2luY2x1ZGUgIklkZW50aWZpZXIuaCIKICNpbmNsdWRlICJJZGVudGlmaWVySW5saW5lcy5oIgog
I2luY2x1ZGUgIkludHJpbnNpYy5oIgpAQCAtNzUsMTIgKzc2LDE5IEBAIHN0cnVjdCBIYXNoVGFi
bGVWYWx1ZSB7CiAgICAgSW50cmluc2ljIGludHJpbnNpYygpIGNvbnN0IHsgQVNTRVJUKG1fYXR0
cmlidXRlcyAmIEZ1bmN0aW9uKTsgcmV0dXJuIG1faW50cmluc2ljOyB9CiAgICAgQnVpbHRpbkdl
bmVyYXRvciBidWlsdGluR2VuZXJhdG9yKCkgY29uc3QgeyBBU1NFUlQobV9hdHRyaWJ1dGVzICYg
QnVpbHRpbik7IHJldHVybiByZWludGVycHJldF9jYXN0PEJ1aWx0aW5HZW5lcmF0b3I+KG1fdmFs
dWVzLnZhbHVlMSk7IH0KICAgICBOYXRpdmVGdW5jdGlvbiBmdW5jdGlvbigpIGNvbnN0IHsgQVNT
RVJUKG1fYXR0cmlidXRlcyAmIEZ1bmN0aW9uKTsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8TmF0
aXZlRnVuY3Rpb24+KG1fdmFsdWVzLnZhbHVlMSk7IH0KLSAgICB1bnNpZ25lZCBjaGFyIGZ1bmN0
aW9uTGVuZ3RoKCkgY29uc3QgeyBBU1NFUlQobV9hdHRyaWJ1dGVzICYgRnVuY3Rpb24pOyByZXR1
cm4gc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4obV92YWx1ZXMudmFsdWUyKTsgfQorICAgIHVu
c2lnbmVkIGNoYXIgZnVuY3Rpb25MZW5ndGgoKSBjb25zdAorICAgIHsKKyAgICAgICAgQVNTRVJU
KG1fYXR0cmlidXRlcyAmIEZ1bmN0aW9uKTsKKyAgICAgICAgaWYgKG1fYXR0cmlidXRlcyAmIERP
TUpJVEZ1bmN0aW9uKQorICAgICAgICAgICAgcmV0dXJuIHNpZ25hdHVyZSgpLT5hcmd1bWVudENv
dW50OworICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4obV92YWx1ZXMu
dmFsdWUyKTsKKyAgICB9CiAKICAgICBHZXRGdW5jdGlvbiBwcm9wZXJ0eUdldHRlcigpIGNvbnN0
IHsgQVNTRVJUKCEobV9hdHRyaWJ1dGVzICYgQnVpbHRpbk9yRnVuY3Rpb25PckFjY2Vzc29yT3JM
YXp5UHJvcGVydHlPckNvbnN0YW50KSk7IHJldHVybiByZWludGVycHJldF9jYXN0PEdldEZ1bmN0
aW9uPihtX3ZhbHVlcy52YWx1ZTEpOyB9CiAgICAgUHV0RnVuY3Rpb24gcHJvcGVydHlQdXR0ZXIo
KSBjb25zdCB7IEFTU0VSVCghKG1fYXR0cmlidXRlcyAmIEJ1aWx0aW5PckZ1bmN0aW9uT3JBY2Nl
c3Nvck9yTGF6eVByb3BlcnR5T3JDb25zdGFudCkpOyByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxQ
dXRGdW5jdGlvbj4obV92YWx1ZXMudmFsdWUyKTsgfQogCiAgICAgRE9NSklUOjpHZXR0ZXJTZXR0
ZXIqIGRvbUpJVCgpIGNvbnN0IHsgQVNTRVJUKG1fYXR0cmlidXRlcyAmIERPTUpJVEF0dHJpYnV0
ZSk7IHJldHVybiByZWludGVycHJldF9jYXN0PERPTUpJVEdldHRlclNldHRlckdlbmVyYXRvcj4o
bV92YWx1ZXMudmFsdWUxKSgpOyB9CisgICAgY29uc3QgRE9NSklUOjpTaWduYXR1cmUqIHNpZ25h
dHVyZSgpIGNvbnN0IHsgQVNTRVJUKG1fYXR0cmlidXRlcyAmIERPTUpJVEZ1bmN0aW9uKTsgcmV0
dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgRE9NSklUOjpTaWduYXR1cmUqPihtX3ZhbHVlcy52
YWx1ZTIpOyB9CiAKICAgICBOYXRpdmVGdW5jdGlvbiBhY2Nlc3NvckdldHRlcigpIGNvbnN0IHsg
QVNTRVJUKG1fYXR0cmlidXRlcyAmIEFjY2Vzc29yKTsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8
TmF0aXZlRnVuY3Rpb24+KG1fdmFsdWVzLnZhbHVlMSk7IH0KICAgICBOYXRpdmVGdW5jdGlvbiBh
Y2Nlc3NvclNldHRlcigpIGNvbnN0IHsgQVNTRVJUKG1fYXR0cmlidXRlcyAmIEFjY2Vzc29yKTsg
cmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8TmF0aXZlRnVuY3Rpb24+KG1fdmFsdWVzLnZhbHVlMik7
IH0KQEAgLTMxMyw2ICszMjEsMTIgQEAgaW5saW5lIHZvaWQgcmVpZnlTdGF0aWNQcm9wZXJ0eShW
TSYgdm0sIGNvbnN0IFByb3BlcnR5TmFtZSYgcHJvcGVydHlOYW1lLCBjb25zdAogICAgIH0KIAog
ICAgIGlmICh2YWx1ZS5hdHRyaWJ1dGVzKCkgJiBGdW5jdGlvbikgeworICAgICAgICBpZiAodmFs
dWUuYXR0cmlidXRlcygpICYgRE9NSklURnVuY3Rpb24pIHsKKyAgICAgICAgICAgIHRoaXNPYmou
cHV0RGlyZWN0TmF0aXZlRnVuY3Rpb24oCisgICAgICAgICAgICAgICAgdm0sIHRoaXNPYmouZ2xv
YmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZSwgdmFsdWUuZnVuY3Rpb25MZW5ndGgoKSwKKyAgICAg
ICAgICAgICAgICB2YWx1ZS5mdW5jdGlvbigpLCB2YWx1ZS5pbnRyaW5zaWMoKSwgdmFsdWUuc2ln
bmF0dXJlKCksIGF0dHJpYnV0ZXNGb3JTdHJ1Y3R1cmUodmFsdWUuYXR0cmlidXRlcygpKSk7Cisg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KICAgICAgICAgdGhpc09iai5wdXREaXJlY3RO
YXRpdmVGdW5jdGlvbigKICAgICAgICAgICAgIHZtLCB0aGlzT2JqLmdsb2JhbE9iamVjdCgpLCBw
cm9wZXJ0eU5hbWUsIHZhbHVlLmZ1bmN0aW9uTGVuZ3RoKCksCiAgICAgICAgICAgICB2YWx1ZS5m
dW5jdGlvbigpLCB2YWx1ZS5pbnRyaW5zaWMoKSwgYXR0cmlidXRlc0ZvclN0cnVjdHVyZSh2YWx1
ZS5hdHRyaWJ1dGVzKCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL05hdGl2ZUV4ZWN1dGFibGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
TmF0aXZlRXhlY3V0YWJsZS5jcHAKaW5kZXggMWMyYmVjNThiN2RiODk4YjgxMThiMjk3MTBiMmQ3
NDI2OTNiYjIxZC4uYjdkYWQyYTQ2MmRkZGZjMjI3NjJmZDVjZDdjZjZhNDYxY2RkMThmNiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZlRXhlY3V0YWJsZS5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZlRXhlY3V0YWJsZS5j
cHAKQEAgLTQwLDEwICs0MCwxMCBAQCBuYW1lc3BhY2UgSlNDIHsKIAogY29uc3QgQ2xhc3NJbmZv
IE5hdGl2ZUV4ZWN1dGFibGU6OnNfaW5mbyA9IHsgIk5hdGl2ZUV4ZWN1dGFibGUiLCAmRXhlY3V0
YWJsZUJhc2U6OnNfaW5mbywgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShOYXRpdmVFeGVjdXRhYmxl
KSB9OwogCi1OYXRpdmVFeGVjdXRhYmxlKiBOYXRpdmVFeGVjdXRhYmxlOjpjcmVhdGUoVk0mIHZt
LCBQYXNzUmVmUHRyPEpJVENvZGU+IGNhbGxUaHVuaywgTmF0aXZlRnVuY3Rpb24gZnVuY3Rpb24s
IFBhc3NSZWZQdHI8SklUQ29kZT4gY29uc3RydWN0VGh1bmssIE5hdGl2ZUZ1bmN0aW9uIGNvbnN0
cnVjdG9yLCBJbnRyaW5zaWMgaW50cmluc2ljLCBjb25zdCBTdHJpbmcmIG5hbWUpCitOYXRpdmVF
eGVjdXRhYmxlKiBOYXRpdmVFeGVjdXRhYmxlOjpjcmVhdGUoVk0mIHZtLCBQYXNzUmVmUHRyPEpJ
VENvZGU+IGNhbGxUaHVuaywgTmF0aXZlRnVuY3Rpb24gZnVuY3Rpb24sIFBhc3NSZWZQdHI8SklU
Q29kZT4gY29uc3RydWN0VGh1bmssIE5hdGl2ZUZ1bmN0aW9uIGNvbnN0cnVjdG9yLCBJbnRyaW5z
aWMgaW50cmluc2ljLCBjb25zdCBET01KSVQ6OlNpZ25hdHVyZSogc2lnbmF0dXJlLCBjb25zdCBT
dHJpbmcmIG5hbWUpCiB7CiAgICAgTmF0aXZlRXhlY3V0YWJsZSogZXhlY3V0YWJsZTsKLSAgICBl
eGVjdXRhYmxlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8TmF0aXZlRXhlY3V0YWJsZT4o
dm0uaGVhcCkpIE5hdGl2ZUV4ZWN1dGFibGUodm0sIGZ1bmN0aW9uLCBjb25zdHJ1Y3RvciwgaW50
cmluc2ljKTsKKyAgICBleGVjdXRhYmxlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8TmF0
aXZlRXhlY3V0YWJsZT4odm0uaGVhcCkpIE5hdGl2ZUV4ZWN1dGFibGUodm0sIGZ1bmN0aW9uLCBj
b25zdHJ1Y3RvciwgaW50cmluc2ljLCBzaWduYXR1cmUpOwogICAgIGV4ZWN1dGFibGUtPmZpbmlz
aENyZWF0aW9uKHZtLCBjYWxsVGh1bmssIGNvbnN0cnVjdFRodW5rLCBuYW1lKTsKICAgICByZXR1
cm4gZXhlY3V0YWJsZTsKIH0KQEAgLTY4LDEwICs2OCwxMSBAQCB2b2lkIE5hdGl2ZUV4ZWN1dGFi
bGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgUGFzc1JlZlB0cjxKSVRDb2RlPiBjYWxsVGh1bmss
IFBhcwogICAgIG1fbmFtZSA9IG5hbWU7CiB9CiAKLU5hdGl2ZUV4ZWN1dGFibGU6Ok5hdGl2ZUV4
ZWN1dGFibGUoVk0mIHZtLCBOYXRpdmVGdW5jdGlvbiBmdW5jdGlvbiwgTmF0aXZlRnVuY3Rpb24g
Y29uc3RydWN0b3IsIEludHJpbnNpYyBpbnRyaW5zaWMpCitOYXRpdmVFeGVjdXRhYmxlOjpOYXRp
dmVFeGVjdXRhYmxlKFZNJiB2bSwgTmF0aXZlRnVuY3Rpb24gZnVuY3Rpb24sIE5hdGl2ZUZ1bmN0
aW9uIGNvbnN0cnVjdG9yLCBJbnRyaW5zaWMgaW50cmluc2ljLCBjb25zdCBET01KSVQ6OlNpZ25h
dHVyZSogc2lnbmF0dXJlKQogICAgIDogRXhlY3V0YWJsZUJhc2Uodm0sIHZtLm5hdGl2ZUV4ZWN1
dGFibGVTdHJ1Y3R1cmUuZ2V0KCksIE5VTV9QQVJBTUVURVJTX0lTX0hPU1QsIGludHJpbnNpYykK
ICAgICAsIG1fZnVuY3Rpb24oZnVuY3Rpb24pCiAgICAgLCBtX2NvbnN0cnVjdG9yKGNvbnN0cnVj
dG9yKQorICAgICwgbV9zaWduYXR1cmUoc2lnbmF0dXJlKQogewogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OYXRpdmVFeGVjdXRhYmxlLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9OYXRpdmVFeGVjdXRhYmxlLmgKaW5kZXggNWJmMmUxMDZk
YjMwYTViOGM5NzhjODk2YTZhZDk4Y2EyYzc1NzQxNC4uZTRkM2UwNDk0NTdiNDVkMDI0NTdlOGRk
YTU0NDkwYjM3MTRhY2NlYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvTmF0aXZlRXhlY3V0YWJsZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L05hdGl2ZUV4ZWN1dGFibGUuaApAQCAtMjgsNiArMjgsOSBAQAogI2luY2x1ZGUgIkV4ZWN1dGFi
bGVCYXNlLmgiCiAKIG5hbWVzcGFjZSBKU0MgeworbmFtZXNwYWNlIERPTUpJVCB7CitjbGFzcyBT
aWduYXR1cmU7Cit9CiAKIGNsYXNzIE5hdGl2ZUV4ZWN1dGFibGUgZmluYWwgOiBwdWJsaWMgRXhl
Y3V0YWJsZUJhc2UgewogICAgIGZyaWVuZCBjbGFzcyBKSVQ7CkBAIC0zNiw3ICszOSw3IEBAIGNs
YXNzIE5hdGl2ZUV4ZWN1dGFibGUgZmluYWwgOiBwdWJsaWMgRXhlY3V0YWJsZUJhc2UgewogICAg
IHR5cGVkZWYgRXhlY3V0YWJsZUJhc2UgQmFzZTsKICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQg
U3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IFN0cnVjdHVyZUlzSW1tb3J0
YWw7CiAKLSAgICBzdGF0aWMgTmF0aXZlRXhlY3V0YWJsZSogY3JlYXRlKFZNJiB2bSwgUGFzc1Jl
ZlB0cjxKSVRDb2RlPiBjYWxsVGh1bmssIE5hdGl2ZUZ1bmN0aW9uIGZ1bmN0aW9uLCBQYXNzUmVm
UHRyPEpJVENvZGU+IGNvbnN0cnVjdFRodW5rLCBOYXRpdmVGdW5jdGlvbiBjb25zdHJ1Y3Rvciwg
SW50cmluc2ljIGludHJpbnNpYywgY29uc3QgU3RyaW5nJiBuYW1lKTsKKyAgICBzdGF0aWMgTmF0
aXZlRXhlY3V0YWJsZSogY3JlYXRlKFZNJiwgUGFzc1JlZlB0cjxKSVRDb2RlPiBjYWxsVGh1bmss
IE5hdGl2ZUZ1bmN0aW9uIGZ1bmN0aW9uLCBQYXNzUmVmUHRyPEpJVENvZGU+IGNvbnN0cnVjdFRo
dW5rLCBOYXRpdmVGdW5jdGlvbiBjb25zdHJ1Y3RvciwgSW50cmluc2ljLCBjb25zdCBET01KSVQ6
OlNpZ25hdHVyZSosIGNvbnN0IFN0cmluZyYgbmFtZSk7CiAKICAgICBzdGF0aWMgdm9pZCBkZXN0
cm95KEpTQ2VsbCopOwogCkBAIC02Niw2ICs2OSwxNCBAQCBjbGFzcyBOYXRpdmVFeGVjdXRhYmxl
IGZpbmFsIDogcHVibGljIEV4ZWN1dGFibGVCYXNlIHsKICAgICBERUNMQVJFX0lORk87CiAKICAg
ICBjb25zdCBTdHJpbmcmIG5hbWUoKSBjb25zdCB7IHJldHVybiBtX25hbWU7IH0KKyAgICBjb25z
dCBET01KSVQ6OlNpZ25hdHVyZSogc2lnbmF0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9zaWduYXR1
cmU7IH0KKworICAgIGNvbnN0IERPTUpJVDo6U2lnbmF0dXJlKiBzaWduYXR1cmVGb3IoQ29kZVNw
ZWNpYWxpemF0aW9uS2luZCBraW5kKSBjb25zdAorICAgIHsKKyAgICAgICAgaWYgKGlzQ2FsbChr
aW5kKSkKKyAgICAgICAgICAgIHJldHVybiBzaWduYXR1cmUoKTsKKyAgICAgICAgcmV0dXJuIG51
bGxwdHI7CisgICAgfQogCiBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYs
IFBhc3NSZWZQdHI8SklUQ29kZT4gY2FsbFRodW5rLCBQYXNzUmVmUHRyPEpJVENvZGU+IGNvbnN0
cnVjdFRodW5rLCBjb25zdCBTdHJpbmcmIG5hbWUpOwpAQCAtNzMsMTAgKzg0LDExIEBAIGNsYXNz
IE5hdGl2ZUV4ZWN1dGFibGUgZmluYWwgOiBwdWJsaWMgRXhlY3V0YWJsZUJhc2UgewogcHJpdmF0
ZToKICAgICBmcmllbmQgY2xhc3MgRXhlY3V0YWJsZUJhc2U7CiAKLSAgICBOYXRpdmVFeGVjdXRh
YmxlKFZNJiwgTmF0aXZlRnVuY3Rpb24gZnVuY3Rpb24sIE5hdGl2ZUZ1bmN0aW9uIGNvbnN0cnVj
dG9yLCBJbnRyaW5zaWMpOworICAgIE5hdGl2ZUV4ZWN1dGFibGUoVk0mLCBOYXRpdmVGdW5jdGlv
biBmdW5jdGlvbiwgTmF0aXZlRnVuY3Rpb24gY29uc3RydWN0b3IsIEludHJpbnNpYywgY29uc3Qg
RE9NSklUOjpTaWduYXR1cmUqKTsKIAogICAgIE5hdGl2ZUZ1bmN0aW9uIG1fZnVuY3Rpb247CiAg
ICAgTmF0aXZlRnVuY3Rpb24gbV9jb25zdHJ1Y3RvcjsKKyAgICBjb25zdCBET01KSVQ6OlNpZ25h
dHVyZSogbV9zaWduYXR1cmU7CiAKICAgICBTdHJpbmcgbV9uYW1lOwogfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5U2xvdC5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlTbG90LmgKaW5kZXggOWRlMTUxYTU2YWEyNzU2
Y2ZkMGM2MDAzNjY4MjY2YjE5Zjk5MzJkZC4uMzg3ZTMxYjQwZTVhZWJmMmYzNWY2Y2EyNzJlMzgz
YzA1ZDNmNDUyZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJv
cGVydHlTbG90LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlT
bG90LmgKQEAgLTUxLDYgKzUxLDcgQEAgZW51bSBBdHRyaWJ1dGUgewogICAgIENsYXNzU3RydWN0
dXJlICAgID0gMSA8PCAxMiwgLy8gcHJvcGVydHkgaXMgYSBsYXp5IGNsYXNzIHN0cnVjdHVyZSAt
IG9ubHkgdXNlZCBieSBzdGF0aWMgaGFzaHRhYmxlcwogICAgIFByb3BlcnR5Q2FsbGJhY2sgID0g
MSA8PCAxMywgLy8gcHJvcGVydHkgdGhhdCBpcyBhIGxhenkgcHJvcGVydHkgY2FsbGJhY2sgLSBv
bmx5IHVzZWQgYnkgc3RhdGljIGhhc2h0YWJsZXMKICAgICBET01KSVRBdHRyaWJ1dGUgICA9IDEg
PDwgMTQsIC8vIHByb3BlcnR5IGlzIGEgRE9NIEpJVCBhdHRyaWJ1dGUgLSBvbmx5IHVzZWQgYnkg
c3RhdGljIGhhc2h0YWJsZXMKKyAgICBET01KSVRGdW5jdGlvbiAgICA9IDEgPDwgMTUsIC8vIHBy
b3BlcnR5IGlzIGEgRE9NIEpJVCBmdW5jdGlvbiAtIG9ubHkgdXNlZCBieSBzdGF0aWMgaGFzaHRh
YmxlcwogICAgIEJ1aWx0aW5PckZ1bmN0aW9uID0gQnVpbHRpbiB8IEZ1bmN0aW9uLCAvLyBoZWxw
ZXIgb25seSB1c2VkIGJ5IHN0YXRpYyBoYXNodGFibGVzCiAgICAgQnVpbHRpbk9yRnVuY3Rpb25P
ckxhenlQcm9wZXJ0eSA9IEJ1aWx0aW4gfCBGdW5jdGlvbiB8IENlbGxQcm9wZXJ0eSB8IENsYXNz
U3RydWN0dXJlIHwgUHJvcGVydHlDYWxsYmFjaywgLy8gaGVscGVyIG9ubHkgdXNlZCBieSBzdGF0
aWMgaGFzaHRhYmxlcwogICAgIEJ1aWx0aW5PckZ1bmN0aW9uT3JBY2Nlc3Nvck9yTGF6eVByb3Bl
cnR5ID0gQnVpbHRpbiB8IEZ1bmN0aW9uIHwgQWNjZXNzb3IgfCBDZWxsUHJvcGVydHkgfCBDbGFz
c1N0cnVjdHVyZSB8IFByb3BlcnR5Q2FsbGJhY2ssIC8vIGhlbHBlciBvbmx5IHVzZWQgYnkgc3Rh
dGljIGhhc2h0YWJsZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1ZNLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAppbmRleCA4MTIz
OWM1YjkyNGI0ZWNjOGU2ZDcwYmM4MDc3ZTgzOGFmMWUxZDYxLi5mOTI3MzQ3MzRhY2VlYzQxYTQ1
ODM2MDk1NGIwN2Q4ZmFjMTI1YmJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9WTS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3Bw
CkBAIC01MTEsMTcgKzUxMSwxNyBAQCBzdGF0aWMgVGh1bmtHZW5lcmF0b3IgdGh1bmtHZW5lcmF0
b3JGb3JJbnRyaW5zaWMoSW50cmluc2ljIGludHJpbnNpYykKIAogTmF0aXZlRXhlY3V0YWJsZSog
Vk06OmdldEhvc3RGdW5jdGlvbihOYXRpdmVGdW5jdGlvbiBmdW5jdGlvbiwgTmF0aXZlRnVuY3Rp
b24gY29uc3RydWN0b3IsIGNvbnN0IFN0cmluZyYgbmFtZSkKIHsKLSAgICByZXR1cm4gZ2V0SG9z
dEZ1bmN0aW9uKGZ1bmN0aW9uLCBOb0ludHJpbnNpYywgY29uc3RydWN0b3IsIG5hbWUpOworICAg
IHJldHVybiBnZXRIb3N0RnVuY3Rpb24oZnVuY3Rpb24sIE5vSW50cmluc2ljLCBjb25zdHJ1Y3Rv
ciwgbnVsbHB0ciwgbmFtZSk7CiB9CiAKLU5hdGl2ZUV4ZWN1dGFibGUqIFZNOjpnZXRIb3N0RnVu
Y3Rpb24oTmF0aXZlRnVuY3Rpb24gZnVuY3Rpb24sIEludHJpbnNpYyBpbnRyaW5zaWMsIE5hdGl2
ZUZ1bmN0aW9uIGNvbnN0cnVjdG9yLCBjb25zdCBTdHJpbmcmIG5hbWUpCitOYXRpdmVFeGVjdXRh
YmxlKiBWTTo6Z2V0SG9zdEZ1bmN0aW9uKE5hdGl2ZUZ1bmN0aW9uIGZ1bmN0aW9uLCBJbnRyaW5z
aWMgaW50cmluc2ljLCBOYXRpdmVGdW5jdGlvbiBjb25zdHJ1Y3RvciwgY29uc3QgRE9NSklUOjpT
aWduYXR1cmUqIHNpZ25hdHVyZSwgY29uc3QgU3RyaW5nJiBuYW1lKQogewogI2lmIEVOQUJMRShK
SVQpCiAgICAgaWYgKGNhblVzZUpJVCgpKSB7CiAgICAgICAgIHJldHVybiBqaXRTdHVicy0+aG9z
dEZ1bmN0aW9uU3R1YigKICAgICAgICAgICAgIHRoaXMsIGZ1bmN0aW9uLCBjb25zdHJ1Y3RvciwK
ICAgICAgICAgICAgIGludHJpbnNpYyAhPSBOb0ludHJpbnNpYyA/IHRodW5rR2VuZXJhdG9yRm9y
SW50cmluc2ljKGludHJpbnNpYykgOiAwLAotICAgICAgICAgICAgaW50cmluc2ljLCBuYW1lKTsK
KyAgICAgICAgICAgIGludHJpbnNpYywgc2lnbmF0dXJlLCBuYW1lKTsKICAgICB9CiAjZWxzZSAv
LyBFTkFCTEUoSklUKQogICAgIFVOVVNFRF9QQVJBTShpbnRyaW5zaWMpOwpAQCAtNTI5LDcgKzUy
OSw3IEBAIE5hdGl2ZUV4ZWN1dGFibGUqIFZNOjpnZXRIb3N0RnVuY3Rpb24oTmF0aXZlRnVuY3Rp
b24gZnVuY3Rpb24sIEludHJpbnNpYyBpbnRyaW5zCiAgICAgcmV0dXJuIE5hdGl2ZUV4ZWN1dGFi
bGU6OmNyZWF0ZSgqdGhpcywKICAgICAgICAgYWRvcHRSZWYobmV3IE5hdGl2ZUpJVENvZGUoTWFj
cm9Bc3NlbWJsZXJDb2RlUmVmOjpjcmVhdGVMTEludENvZGVSZWYobGxpbnRfbmF0aXZlX2NhbGxf
dHJhbXBvbGluZSksIEpJVENvZGU6Okhvc3RDYWxsVGh1bmspKSwgZnVuY3Rpb24sCiAgICAgICAg
IGFkb3B0UmVmKG5ldyBOYXRpdmVKSVRDb2RlKE1hY3JvQXNzZW1ibGVyQ29kZVJlZjo6Y3JlYXRl
TExJbnRDb2RlUmVmKGxsaW50X25hdGl2ZV9jb25zdHJ1Y3RfdHJhbXBvbGluZSksIEpJVENvZGU6
Okhvc3RDYWxsVGh1bmspKSwgY29uc3RydWN0b3IsCi0gICAgICAgIE5vSW50cmluc2ljLCBuYW1l
KTsKKyAgICAgICAgTm9JbnRyaW5zaWMsIHNpZ25hdHVyZSwgbmFtZSk7CiB9CiAKIFZNOjpDbGll
bnREYXRhOjp+Q2xpZW50RGF0YSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9WTS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAppbmRleCA0
ZmQ3ZWM0MGYwM2VlZGViMjliZDQ5NjdkOWNkYzQzMDI0Y2ZhNDEwLi4xNWEwOGMyYTMzYmU5NzJi
NGE5YTMyZGZjMzUwZDZlMzhjYzg0MmVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9WTS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgK
QEAgLTQyOSw3ICs0MjksNyBAQCBjbGFzcyBWTSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRl
ZDxWTT4gewogICAgIHN0ZDo6dW5pcXVlX3B0cjxGVEw6OlRodW5rcz4gZnRsVGh1bmtzOwogI2Vu
ZGlmCiAgICAgTmF0aXZlRXhlY3V0YWJsZSogZ2V0SG9zdEZ1bmN0aW9uKE5hdGl2ZUZ1bmN0aW9u
LCBOYXRpdmVGdW5jdGlvbiBjb25zdHJ1Y3RvciwgY29uc3QgU3RyaW5nJiBuYW1lKTsKLSAgICBO
YXRpdmVFeGVjdXRhYmxlKiBnZXRIb3N0RnVuY3Rpb24oTmF0aXZlRnVuY3Rpb24sIEludHJpbnNp
YyBpbnRyaW5zaWMsIE5hdGl2ZUZ1bmN0aW9uIGNvbnN0cnVjdG9yLCBjb25zdCBTdHJpbmcmIG5h
bWUpOworICAgIE5hdGl2ZUV4ZWN1dGFibGUqIGdldEhvc3RGdW5jdGlvbihOYXRpdmVGdW5jdGlv
biwgSW50cmluc2ljLCBOYXRpdmVGdW5jdGlvbiBjb25zdHJ1Y3RvciwgY29uc3QgRE9NSklUOjpT
aWduYXR1cmUqLCBjb25zdCBTdHJpbmcmIG5hbWUpOwogCiAgICAgc3RhdGljIHB0cmRpZmZfdCBl
eGNlcHRpb25PZmZzZXQoKQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtl
TGlzdHMudHh0IGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggYTgyNzkxZjJh
ZDdhM2I2ZTBjNDNjNWQ2NWIwZGNjNzk0OTEwZmUxNS4uOTYxNTgwNWIwYzc0NzBmMDM2M2VkZGE1
ZjFiYWYxYTIyYWU0NjcyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50
eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTM1MjAsNiArMzUyMCwx
NSBAQCBNQUtFX0hBU0hfVE9PTFMoJHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0vQ29sb3JEYXRhKQog
bGlzdChBUFBFTkQgV2ViQ29yZV9ERVJJVkVEX1NPVVJDRVMgJHtERVJJVkVEX1NPVVJDRVNfV0VC
Q09SRV9ESVJ9L0NvbG9yRGF0YS5jcHApCiAKIAorIyBHZW5lcmF0ZSBET01KSVRBYnN0cmFjdEhl
YXBSZXBvc2l0b3J5LmgKK2FkZF9jdXN0b21fY29tbWFuZCgKKyAgICBPVVRQVVQgJHtERVJJVkVE
X1NPVVJDRVNfV0VCQ09SRV9ESVJ9L0RPTUpJVEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaAorICAg
IE1BSU5fREVQRU5ERU5DWSBkb21qaXQvRE9NSklUQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS55YW1s
CisgICAgREVQRU5EUyAke1dFQkNPUkVfRElSfS9kb21qaXQvZ2VuZXJhdGUtYWJzdHJhY3QtaGVh
cC5yYgorICAgIENPTU1BTkQgJHtSVUJZX0VYRUNVVEFCTEV9ICR7V0VCQ09SRV9ESVJ9L2RvbWpp
dC9nZW5lcmF0ZS1hYnN0cmFjdC1oZWFwLnJiICR7V0VCQ09SRV9ESVJ9L2RvbWppdC9ET01KSVRB
YnN0cmFjdEhlYXBSZXBvc2l0b3J5LnlhbWwgJHtERVJJVkVEX1NPVVJDRVNfV0VCQ09SRV9ESVJ9
L0RPTUpJVEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaAorICAgIFZFUkJBVElNKQorbGlzdChBUFBF
TkQgV2ViQ29yZV9ERVJJVkVEX1NPVVJDRVMgJHtERVJJVkVEX1NPVVJDRVNfV0VCQ09SRV9ESVJ9
L0RPTUpJVEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaCkKKwogIyBHZW5lcmF0ZSBYTUxWaWV3ZXJD
U1MuaAogYWRkX2N1c3RvbV9jb21tYW5kKAogICAgIE9VVFBVVCAke0RFUklWRURfU09VUkNFU19X
RUJDT1JFX0RJUn0vWE1MVmlld2VyQ1NTLmggJHtERVJJVkVEX1NPVVJDRVNfV0VCQ09SRV9ESVJ9
L1hNTFZpZXdlci5taW4uY3NzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291
cmNlcy5tYWtlIGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQppbmRleCA1NjVl
MmQ5MmMyNzgyMDBlNDRiMWE4NjcwZGQxMWNhYTcyOGQwOWQzLi5jZmMyMjc2OGQ3NWFjZThlZTYw
ZTA0ODZjMjYyODRhMThjYTJlNWVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVk
U291cmNlcy5tYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKQEAg
LTc0Nyw2ICs3NDcsNyBAQCBKU19CSU5ESU5HX0lETFMgPSBcCiAKIFBZVEhPTiA9IHB5dGhvbgog
UEVSTCA9IHBlcmwKK1JVQlkgPSBydWJ5CiAKIGlmZXEgKCQoT1MpLFdpbmRvd3NfTlQpCiAgICAg
REVMRVRFID0gY21kIC8vQyBkZWwKQEAgLTg1Myw2ICs4NTQsNyBAQCBhbGwgOiBcCiAgICAgQ1NT
VmFsdWVLZXl3b3Jkcy5jcHAgXAogICAgIENTU1ZhbHVlS2V5d29yZHMuaCBcCiAgICAgQ29sb3JE
YXRhLmNwcCBcCisgICAgRE9NSklUQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5oIFwKICAgICBFdmVu
dEludGVyZmFjZXMuaCBcCiAgICAgRXZlbnRUYXJnZXRJbnRlcmZhY2VzLmggXAogICAgIEV4Y2Vw
dGlvbkNvZGVEZXNjcmlwdGlvbi5jcHAgXApAQCAtOTQyLDYgKzk0NCwxNSBAQCBTZWxlY3RvclBz
ZXVkb0VsZW1lbnRUeXBlTWFwLmNwcCA6ICQoV2ViQ29yZSkvY3NzL21ha2VTZWxlY3RvclBzZXVk
b0VsZW1lbnRzTWFwLgogCiAjIC0tLS0tLS0tCiAKKyMgRE9NSklUIEFic3RyYWN0IEhlYXAKKwor
YWxsIDogRE9NSklUQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5oCisKK0RPTUpJVEFic3RyYWN0SGVh
cFJlcG9zaXRvcnkuaCA6ICQoV2ViQ29yZSkvZG9taml0L2dlbmVyYXRlLWFic3RyYWN0LWhlYXAu
cmIgJChXZWJDb3JlKS9kb21qaXQvRE9NSklUQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS55YW1sCisJ
JChSVUJZKSAiJChXZWJDb3JlKS9kb21qaXQvZ2VuZXJhdGUtYWJzdHJhY3QtaGVhcC5yYiIgJChX
ZWJDb3JlKS9kb21qaXQvRE9NSklUQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS55YW1sIC4vRE9NSklU
QWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5oCisKKyMgLS0tLS0tLS0KKwogIyBYTUxWaWV3ZXIgQ1NT
CiAKIGFsbCA6IFhNTFZpZXdlckNTUy5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Gb3J3
YXJkaW5nSGVhZGVycy9ieXRlY29kZS9TcGVjdWxhdGVkVHlwZS5oIGIvU291cmNlL1dlYkNvcmUv
Rm9yd2FyZGluZ0hlYWRlcnMvYnl0ZWNvZGUvU3BlY3VsYXRlZFR5cGUuaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4w
OTQ2NmY0ZjAwYjgwN2RmZWRhMGZjODIwODU0NmI3MTg0NGYwOTllCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvYnl0ZWNvZGUvU3BlY3VsYXRlZFR5
cGUuaApAQCAtMCwwICsxLDI5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisg
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2lmbmRlZiBXZWJDb3JlX0ZXRF9TcGVjdWxhdGVkVHlwZV9oCisjZGVmaW5l
IFdlYkNvcmVfRldEX1NwZWN1bGF0ZWRUeXBlX2gKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9T
cGVjdWxhdGVkVHlwZS5oPgorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Gb3J3
YXJkaW5nSGVhZGVycy9kb21qaXQvRE9NSklUU2lnbmF0dXJlLmggYi9Tb3VyY2UvV2ViQ29yZS9G
b3J3YXJkaW5nSGVhZGVycy9kb21qaXQvRE9NSklUU2lnbmF0dXJlLmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzIw
MDI3ZjZlMDhlMzgzMGUzNTFiMWM5Y2QzMmYyMDMxMjlkMmI1ZAotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL2RvbWppdC9ET01KSVRTaWduYXR1cmUu
aApAQCAtMCwwICsxLDI5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2lmbmRlZiBXZWJDb3JlX0ZXRF9ET01KSVRTaWduYXR1cmVfaAorI2RlZmluZSBX
ZWJDb3JlX0ZXRF9ET01KSVRTaWduYXR1cmVfaAorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0RP
TUpJVFNpZ25hdHVyZS5oPgorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMGE2OGQ2ZWExNGVkMmYxNTg1ZTg3YTA3MzYw
Y2IxMzdjYTU5Mzg2Yy4uODhhYjc5OGU2NjM5M2ZjOWFmOGEyOGJhMGQ0ZjlkNzYyMWJkNzZjYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agpAQCAtNjIxNiwxMiArNjIxNiwxMyBAQAogCQlFMzE1MEVBNzFEQTcyMTkzMDAxOTQwMTIgLyog
RE9NSklUSGVscGVycy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gRTMxNTBFQTUxREE3MjE4RDAwMTk0MDEyIC8qIERPTUpJVEhlbHBlcnMuaCAqLzsgfTsK
IAkJRTMxODAzOUQxREM0MDA5OTAwOTkzMkMyIC8qIEpTRHluYW1pY0Rvd25jYXN0LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFM0E1ODcyRTFEQzNGNTI2
MDBGNjA3QTYgLyogSlNEeW5hbWljRG93bmNhc3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFMzU2NUI3QjFEQzJENkM5MDAyMTdEQkQgLyogSlNF
dmVudEN1c3RvbS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRTM0RUU0OUYxREMyRDU3NTAwRUFBOUQzIC8qIEpTRXZlbnRDdXN0b20uaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQlFMzVDQTE0RDFEQkMzQTNG
MDBGODM1MTYgLyogRE9NSklUQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzVDQTE0QjFEQkMzQTNDMDBGODM1
MTYgLyogRE9NSklUQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5jcHAgKi87IH07Ci0JCUUzNUNBMTRF
MURCQzNBNDIwMEY4MzUxNiAvKiBET01KSVRBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzVDQTE0QzFEQkMzQTND
MDBGODM1MTYgLyogRE9NSklUQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5oICovOyB9OworCQlFMzU4
MDJCNjFEQzg0MzVEMDBBOTc3M0MgLyogRE9NSklUSURMVHlwZUZpbHRlci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM1ODAyQjUxREM4NDM1ODAwQTk3
NzNDIC8qIERPTUpJVElETFR5cGVGaWx0ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQlFMzc3RkU0RDFEQURFMTY1MDBDREQwMjUgLyogTm9kZUNv
bnN0YW50cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RTNEMDQ5OTMxREFEQzA0NTAwNzE4RjNDIC8qIE5vZGVDb25zdGFudHMuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFMzg4Mzg5ODFCQUQxNDVGMDBE
NjJFRTMgLyogU2NyaXB0TW9kdWxlTG9hZGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzODgzODk0MUJBRDE0NUYwMEQ2MkVFMyAvKiBTY3JpcHRN
b2R1bGVMb2FkZXIuY3BwICovOyB9OwogCQlFMzg4Mzg5OTFCQUQxNDVGMDBENjJFRTMgLyogU2Ny
aXB0TW9kdWxlTG9hZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBFMzg4Mzg5NTFCQUQxNDVGMDBENjJFRTMgLyogU2NyaXB0TW9kdWxlTG9hZGVyLmgg
Ki87IH07CiAJCUUzOThGQzI0MURDMzJBMjAwMDNDNDY4NCAvKiBET01KSVRIZWxwZXJzLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzOThGQzIzMURD
MzJBMUIwMDNDNDY4NCAvKiBET01KSVRIZWxwZXJzLmNwcCAqLzsgfTsKKwkJRTNBNzc2NjcxREM4
NUQyODAwQjY5MEQ4IC8qIERPTUpJVElETENvbnZlcnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzQTc3NjY1MURDODVEMjIwMEI2OTBEOCAvKiBET01K
SVRJRExDb252ZXJ0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKKwkJRTNBNzc2NjgxREM4NUQyODAwQjY5MEQ4IC8qIERPTUpJVElETFR5cGUuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzQTc3NjY2MURDODVE
MjIwMEI2OTBEOCAvKiBET01KSVRJRExUeXBlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTNCMkYwRUIxRDdGNEM5RDAwQjBDOUQxIC8qIExvYWRh
YmxlQ2xhc3NpY1NjcmlwdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBFM0IyRjBFMzFEN0YzNUVDMDBCMEM5RDEgLyogTG9hZGFibGVDbGFzc2ljU2Ny
aXB0LmNwcCAqLzsgfTsKIAkJRTNCMkYwRUMxRDdGNENBMTAwQjBDOUQxIC8qIExvYWRhYmxlU2Ny
aXB0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUz
QjJGMEU5MUQ3RjNEM0MwMEIwQzlEMSAvKiBMb2FkYWJsZVNjcmlwdC5jcHAgKi87IH07CiAJCUUz
QjJGMEVEMUQ3RjRDQTMwMEIwQzlEMSAvKiBMb2FkYWJsZVNjcmlwdC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTNCMkYwRTcxRDdGMzVFQzAwQjBDOUQx
IC8qIExvYWRhYmxlU2NyaXB0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKQEAgLTE0MDc2LDEzICsxNDA3NywxNSBAQAogCQlFMUZGOEY2QTE4MERCNUJF
MDAxMzI2NzQgLyogQ3J5cHRvQWxnb3JpdGhtUmVnaXN0cnkuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gQ3J5cHRvQWxnb3JpdGhtUmVnaXN0cnkuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlFMUZGOEY2QjE4MERCNUJFMDAxMzI2NzQgLyogQ3J5cHRv
QWxnb3JpdGhtUmVnaXN0cnkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ3J5
cHRvQWxnb3JpdGhtUmVnaXN0cnkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTMx
NTBFQTUxREE3MjE4RDAwMTk0MDEyIC8qIERPTUpJVEhlbHBlcnMuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gRE9NSklUSGVscGVycy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQlFMzM0ODI1RTFEQzkzQUEwMDA5Qzk1NDQgLyogRE9NSklUQWJzdHJhY3RIZWFwUmVw
b3NpdG9yeS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBET01KSVRBYnN0cmFj
dEhlYXBSZXBvc2l0b3J5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzNEVFNDlG
MURDMkQ1NzUwMEVBQTlEMyAvKiBKU0V2ZW50Q3VzdG9tLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEpTRXZlbnRDdXN0b20uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
LQkJRTM1Q0ExNEIxREJDM0EzQzAwRjgzNTE2IC8qIERPTUpJVEFic3RyYWN0SGVhcFJlcG9zaXRv
cnkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRE9NSklUQWJzdHJh
Y3RIZWFwUmVwb3NpdG9yeS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUUzNUNB
MTRDMURCQzNBM0MwMEY4MzUxNiAvKiBET01KSVRBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERPTUpJVEFic3RyYWN0SGVhcFJlcG9zaXRv
cnkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTM1ODAyQjUxREM4NDM1ODAwQTk3
NzNDIC8qIERPTUpJVElETFR5cGVGaWx0ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gRE9NSklUSURMVHlwZUZpbHRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlFMzg4Mzg5NDFCQUQxNDVGMDBENjJFRTMgLyogU2NyaXB0TW9kdWxlTG9hZGVyLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNjcmlwdE1vZHVsZUxvYWRlci5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzODgzODk1MUJBRDE0NUYwMEQ2MkVFMyAv
KiBTY3JpcHRNb2R1bGVMb2FkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
U2NyaXB0TW9kdWxlTG9hZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzOThG
QzIzMURDMzJBMUIwMDNDNDY4NCAvKiBET01KSVRIZWxwZXJzLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERPTUpJVEhlbHBlcnMuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlFM0E1ODcyRTFEQzNGNTI2MDBGNjA3QTYgLyogSlNEeW5hbWljRG93bmNh
c3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNEeW5hbWljRG93bmNhc3Qu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTNBNzc2NjUxREM4NUQyMjAwQjY5MEQ4
IC8qIERPTUpJVElETENvbnZlcnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
RE9NSklUSURMQ29udmVydC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFM0E3NzY2
NjFEQzg1RDIyMDBCNjkwRDggLyogRE9NSklUSURMVHlwZS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBET01KSVRJRExUeXBlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUUzQUZBOTY0MURBNkU5MDgwMDI4NjFCRCAvKiBKU05vZGVET01KSVQuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNOb2RlRE9NSklULmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTNCMkYwRTMxRDdGMzVFQzAwQjBDOUQxIC8qIExvYWRhYmxl
Q2xhc3NpY1NjcmlwdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBM
b2FkYWJsZUNsYXNzaWNTY3JpcHQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlF
M0IyRjBFNDFEN0YzNUVDMDBCMEM5RDEgLyogTG9hZGFibGVDbGFzc2ljU2NyaXB0LmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IExvYWRhYmxlQ2xhc3NpY1NjcmlwdC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTcyNzgsNiArMTcyODEsNyBAQAogCQkJCTY1NjU4
MTQ3MDlEMTMwNDMwMDBFNjFENyAvKiBDU1NWYWx1ZUtleXdvcmRzLmdwZXJmICovLAogCQkJCTY1
NjU4MTQ4MDlEMTMwNDMwMDBFNjFENyAvKiBDU1NWYWx1ZUtleXdvcmRzLmggKi8sCiAJCQkJOUIz
QTg4NzExNDU2MzJGOTAwM0FFOEY1IC8qIERPTURPTVNldHRhYmxlVG9rZW5MaXN0LmggKi8sCisJ
CQkJRTMzNDgyNUUxREM5M0FBMDAwOUM5NTQ0IC8qIERPTUpJVEFic3RyYWN0SGVhcFJlcG9zaXRv
cnkuaCAqLywKIAkJCQlFMUM2Q0ZDMjE3NDZEMjkzMDA3Qjg3QTEgLyogRE9NV2luZG93Q29uc3Ry
dWN0b3JzLmlkbCAqLywKIAkJCQk5NzBCNzJBNTE0NTAwOEVCMDBGMDBBMzcgLyogRXZlbnRIZWFk
ZXJzLmggKi8sCiAJCQkJOTcwQjcyODkxNDRGRkFDNjAwRjAwQTM3IC8qIEV2ZW50SW50ZXJmYWNl
cy5oICovLApAQCAtMjI4OTcsMTEgKzIyOTAxLDEyIEBACiAJCUUzQUZBOTYzMURBNkU4QUYwMDI4
NjFCRCAvKiBkb21qaXQgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0g
KAotCQkJCUUzNUNBMTRCMURCQzNBM0MwMEY4MzUxNiAvKiBET01KSVRBYnN0cmFjdEhlYXBSZXBv
c2l0b3J5LmNwcCAqLywKLQkJCQlFMzVDQTE0QzFEQkMzQTNDMDBGODM1MTYgLyogRE9NSklUQWJz
dHJhY3RIZWFwUmVwb3NpdG9yeS5oICovLAogCQkJCUUzQzk5QTA4MURDM0Q0MTcwMDc5NEFEMyAv
KiBET01KSVRDaGVja0RPTS5oICovLAogCQkJCUUzOThGQzIzMURDMzJBMUIwMDNDNDY4NCAvKiBE
T01KSVRIZWxwZXJzLmNwcCAqLywKIAkJCQlFMzE1MEVBNTFEQTcyMThEMDAxOTQwMTIgLyogRE9N
SklUSGVscGVycy5oICovLAorCQkJCUUzQTc3NjY1MURDODVEMjIwMEI2OTBEOCAvKiBET01KSVRJ
RExDb252ZXJ0LmggKi8sCisJCQkJRTNBNzc2NjYxREM4NUQyMjAwQjY5MEQ4IC8qIERPTUpJVElE
TFR5cGUuaCAqLywKKwkJCQlFMzU4MDJCNTFEQzg0MzU4MDBBOTc3M0MgLyogRE9NSklUSURMVHlw
ZUZpbHRlci5oICovLAogCQkJCUUzQjdDMDYyMURDMzQxNUEwMDFGQjBCOCAvKiBKU0RvY3VtZW50
RE9NSklULmNwcCAqLywKIAkJCQlFM0FGQTk2NDFEQTZFOTA4MDAyODYxQkQgLyogSlNOb2RlRE9N
SklULmNwcCAqLywKIAkJCSk7CkBAIC0yNTc2OCw2ICsyNTc3Myw3IEBACiAJCQkJNDYwQ0JGMzYx
RDRCQ0QwRTAwOTJFODhFIC8qIEpTRE9NV2luZG93UHJvcGVydGllcy5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQkNCRkI1M0QwRENEMjlDRjAwMTlCM0U1IC8qIEpTRE9NV2luZG93U2hlbGwuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTY1RTBFOTQ0MTEzM0M4OUYwMEI0Q0IxMCAvKiBKU0RPTVdyYXBwZXIu
aCBpbiBIZWFkZXJzICovLAorCQkJCUUzQTc3NjY3MURDODVEMjgwMEI2OTBEOCAvKiBET01KSVRJ
RExDb252ZXJ0LmggaW4gSGVhZGVycyAqLywKIAkJCQlGRDc4NjhCQTEzNkI5OTkyMDBENDAzREYg
LyogSlNEeW5hbWljc0NvbXByZXNzb3JOb2RlLmggaW4gSGVhZGVycyAqLywKIAkJCQk2NURGMzFG
QTA5RDFDQzYwMDAwQkUzMjUgLyogSlNFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlBREVD
NzhGODE4RUU1MzA4MDAxMzE1QzIgLyogSlNFbGVtZW50Q3VzdG9tLmggaW4gSGVhZGVycyAqLywK
QEAgLTI3MzMzLDYgKzI3MzM5LDcgQEAKIAkJCQkwODUyNUU2MzEyNzhDMDAxMDBBODQ3NzggLyog
U1ZHQW5pbWF0ZWRTdGF0aWNQcm9wZXJ0eVRlYXJPZmYuaCBpbiBIZWFkZXJzICovLAogCQkJCTA4
NERCNTlCMTI4MDA4Q0MwMDJBNkQ2NCAvKiBTVkdBbmltYXRlZFN0cmluZy5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMDgyNTA5MzkxMjhCRDREODAwRTJFRDhFIC8qIFNWR0FuaW1hdGVkVHJhbnNmb3Jt
TGlzdC5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTNBNzc2NjgxREM4NUQyODAwQjY5MEQ4IC8qIERP
TUpJVElETFR5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTA4NUExNTkzMTI4OUE4REQwMDI3MTBF
MyAvKiBTVkdBbmltYXRlZFRyYW5zZm9ybUxpc3RQcm9wZXJ0eVRlYXJPZmYuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTQzOUQzMzQzMTNBNjkxMUMwMEMyMEY0RiAvKiBTVkdBbmltYXRlZFR5cGUuaCBp
biBIZWFkZXJzICovLAogCQkJCTQzOUQzMzQ0MTNBNjkxMUMwMEMyMEY0RiAvKiBTVkdBbmltYXRl
ZFR5cGVBbmltYXRvci5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNzg3Miw2ICsyNzg3OSw3IEBACiAJ
CQkJOTdBQUJEMjMxNEZBMDlENTAwNzQ1N0FFIC8qIFdlYlNvY2tldEV4dGVuc2lvbkRpc3BhdGNo
ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTRBNUEyQURDMTYxRTdFMDAwMDU4ODlERCAvKiBXZWJT
b2NrZXRFeHRlbnNpb25QYXJzZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTk3QUFCRDI0MTRGQTA5
RDUwMDc0NTdBRSAvKiBXZWJTb2NrZXRFeHRlbnNpb25Qcm9jZXNzb3IuaCBpbiBIZWFkZXJzICov
LAorCQkJCUUzNTgwMkI2MURDODQzNUQwMEE5NzczQyAvKiBET01KSVRJRExUeXBlRmlsdGVyLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk5N0FBQkQyNTE0RkEwOUQ1MDA3NDU3QUUgLyogV2ViU29ja2V0
RnJhbWUuaCBpbiBIZWFkZXJzICovLAogCQkJCTk3QUFCRDI3MTRGQTA5RDUwMDc0NTdBRSAvKiBX
ZWJTb2NrZXRIYW5kc2hha2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTMxREVBNDU2MUIzOUY0RDkw
MEY3NzE3OCAvKiBXZWJTeXN0ZW1CYWNrZHJvcExheWVyLmggaW4gSGVhZGVycyAqLywKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmggYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5oCmluZGV4IGMxODFm
OWExNmY1NTMwYmQ5NTNkYmY1ZjFjMTVmMTNhNjI0ZmExMmMuLjVkYzFlZTQwYzk4NTQwZThjNDcw
NWI3MDk1NzU5ZmZjZmMyNWRhMGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTRE9NR2xvYmFsT2JqZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNET01HbG9iYWxPYmplY3QuaApAQCAtODEsNyArODEsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAgICAgcHVibGljOgogICAgICAgICB+SlNET01HbG9iYWxPYmplY3QoKTsKIAotICAgICAgICBz
dGF0aWMgY29uc3QgSlNDOjpDbGFzc0luZm8qIGluZm8oKSB7IHJldHVybiAmc19pbmZvOyB9Cisg
ICAgICAgIHN0YXRpYyBjb25zdGV4cHIgY29uc3QgSlNDOjpDbGFzc0luZm8qIGluZm8oKSB7IHJl
dHVybiAmc19pbmZvOyB9CiAKICAgICAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVT
dHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgICAgIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRv
ckpTLnBtIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMu
cG0KaW5kZXggMzU0OTBkMDJjMmRhMGJlMjUwZDZmZWVhNTlmZmJlNzBiNTM1MGU1OS4uOTBiNTcz
NmNlMDI4ZmNiNmMwODQ0ZDEwODNlMjMyYWQ5NGRjMmQwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KQEAgLTE0MzUsNyArMTQz
NSw3IEBAIHN1YiBHZW5lcmF0ZUhlYWRlcgogICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAi
cHJvdGVjdGVkOlxuIik7CiAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgc3RhdGlj
IGNvbnN0IEpTQzo6Q2xhc3NJbmZvIHNfaW5mbztcbiIpOwogICAgICAgICBwdXNoKEBoZWFkZXJD
b250ZW50LCAicHVibGljOlxuIik7Ci0gICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAg
c3RhdGljIGNvbnN0IEpTQzo6Q2xhc3NJbmZvKiBpbmZvKCkgeyByZXR1cm4gJnNfaW5mbzsgfVxu
XG4iKTsKKyAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICBzdGF0aWMgY29uc3RleHBy
IGNvbnN0IEpTQzo6Q2xhc3NJbmZvKiBpbmZvKCkgeyByZXR1cm4gJnNfaW5mbzsgfVxuXG4iKTsK
ICAgICB9IGVsc2UgewogICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiXG4iKTsKICAgICAg
ICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICBERUNMQVJFX0lORk87XG5cbiIpOwpAQCAtMTg4
OSw3ICsxODg5LDExIEBAIHN1YiBHZW5lcmF0ZVByb3BlcnRpZXNIYXNoVGFibGUKICAgICAgICAg
IyBGSVhNRTogUmVtb3ZlIHRoaXMgb25jZSB3ZSBjYW4gZ2V0IHJpZCBvZiB0aGUgcXVpcmsgaW50
cm9kdWNlZCBpbiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYzOTY3
LgogICAgICAgICAkZnVuY3Rpb25MZW5ndGggPSAzIGlmICRpbnRlcmZhY2VOYW1lIGVxICJFdmVu
dCIgYW5kICRmdW5jdGlvbi0+bmFtZSBlcSAiaW5pdEV2ZW50IjsKIAotICAgICAgICBwdXNoKEAk
aGFzaFZhbHVlMiwgJGZ1bmN0aW9uTGVuZ3RoKTsKKyAgICAgICAgaWYgKCRmdW5jdGlvbi0+ZXh0
ZW5kZWRBdHRyaWJ1dGVzLT57IkRPTUpJVCJ9KSB7CisgICAgICAgICAgICBwdXNoKEAkaGFzaFZh
bHVlMiwgIiZET01KSVRTaWduYXR1cmVGb3IiIC4gJGludGVyZmFjZS0+dHlwZS0+bmFtZSAuICRj
b2RlR2VuZXJhdG9yLT5XS191Y2ZpcnN0KCRmdW5jdGlvbi0+bmFtZSkpOworICAgICAgICB9IGVs
c2UgeworICAgICAgICAgICAgcHVzaChAJGhhc2hWYWx1ZTIsICRmdW5jdGlvbkxlbmd0aCk7Cisg
ICAgICAgIH0KIAogICAgICAgICBwdXNoKEAkaGFzaFNwZWNpYWxzLCBDb21wdXRlRnVuY3Rpb25T
cGVjaWFsKCRpbnRlcmZhY2UsICRmdW5jdGlvbikpOwogCkBAIC0yNTA1LDM5ICsyNTA5LDI4IEBA
IHN1YiBhZGRVbnNjb3BhYmxlUHJvcGVydGllcwogICAgIHB1c2goQGltcGxDb250ZW50LCAiICAg
IHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT51bnNjb3Bh
Ymxlc1N5bWJvbCwgJnVuc2NvcGFibGVzLCBEb250RW51bSB8IFJlYWRPbmx5KTtcbiIpOwogfQog
Ci1zdWIgR2V0UmVzdWx0VHlwZUZpbHRlcgorc3ViIEdldFVuc2FmZUFyZ3VtZW50VHlwZQogewot
ICAgIG15ICgkdHlwZSkgPSBAXzsKKyAgICBteSAoJGludGVyZmFjZSwgJHR5cGUpID0gQF87CiAK
LSAgICBteSAlVHlwZUZpbHRlcnMgPSAoCi0gICAgICAgICJhbnkiID0+ICJTcGVjSGVhcFRvcCIs
Ci0gICAgICAgICJib29sZWFuIiA9PiAiU3BlY0Jvb2xlYW4iLAotICAgICAgICAiYnl0ZSIgPT4g
IlNwZWNJbnQzMk9ubHkiLAotICAgICAgICAib2N0ZXQiID0+ICJTcGVjSW50MzJPbmx5IiwKLSAg
ICAgICAgInNob3J0IiA9PiAiU3BlY0ludDMyT25seSIsCi0gICAgICAgICJ1bnNpZ25lZCBzaG9y
dCIgPT4gIlNwZWNJbnQzMk9ubHkiLAotICAgICAgICAibG9uZyIgPT4gIlNwZWNJbnQzMk9ubHki
LAotICAgICAgICAidW5zaWduZWQgbG9uZyIgPT4gIlNwZWNCeXRlY29kZU51bWJlciIsCi0gICAg
ICAgICJsb25nIGxvbmciID0+ICJTcGVjQnl0ZWNvZGVOdW1iZXIiLAotICAgICAgICAidW5zaWdu
ZWQgbG9uZyBsb25nIiA9PiAiU3BlY0J5dGVjb2RlTnVtYmVyIiwKLSAgICAgICAgImZsb2F0IiA9
PiAiU3BlY0J5dGVjb2RlTnVtYmVyIiwKLSAgICAgICAgInVucmVzdHJpY3RlZCBmbG9hdCIgPT4g
IlNwZWNCeXRlY29kZU51bWJlciIsCi0gICAgICAgICJkb3VibGUiID0+ICJTcGVjQnl0ZWNvZGVO
dW1iZXIiLAotICAgICAgICAidW5yZXN0cmljdGVkIGRvdWJsZSIgPT4gIlNwZWNCeXRlY29kZU51
bWJlciIsCi0gICAgICAgICJET01TdHJpbmciID0+ICJTcGVjU3RyaW5nIiwKLSAgICAgICAgIkJ5
dGVTdHJpbmciID0+ICJTcGVjU3RyaW5nIiwKLSAgICAgICAgIlVTVlN0cmluZyIgPT4gIlNwZWNT
dHJpbmciLAotICAgICk7CisgICAgbXkgJElETFR5cGUgPSBHZXRJRExUeXBlKCRpbnRlcmZhY2Us
ICR0eXBlKTsKKyAgICByZXR1cm4gIkRPTUpJVDo6SURMSlNBcmd1bWVudFR5cGU8JHtJRExUeXBl
fT4iOworfQogCi0gICAgaWYgKGV4aXN0cyAkVHlwZUZpbHRlcnN7JHR5cGUtPm5hbWV9KSB7Ci0g
ICAgICAgIG15ICRyZXN1bHRUeXBlID0gIkpTQzo6JFR5cGVGaWx0ZXJzeyR0eXBlLT5uYW1lfSI7
Ci0gICAgICAgIGlmICgkdHlwZS0+aXNOdWxsYWJsZSkgewotICAgICAgICAgICAgZGllICJcImFu
eVwiIHR5cGUgbXVzdCBub3QgYmVjb21lIG51bGxhYmxlLiIgaWYgJHR5cGUtPm5hbWUgZXEgImFu
eSI7Ci0gICAgICAgICAgICAkcmVzdWx0VHlwZSA9ICIoJHJlc3VsdFR5cGUgfCBKU0M6OlNwZWNP
dGhlcikiOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiAkcmVzdWx0VHlwZTsKLSAgICB9Ci0g
ICAgcmV0dXJuICJTcGVjSGVhcFRvcCI7CitzdWIgR2V0QXJndW1lbnRUeXBlRmlsdGVyCit7Cisg
ICAgbXkgKCRpbnRlcmZhY2UsICR0eXBlKSA9IEBfOworCisgICAgbXkgJElETFR5cGUgPSBHZXRJ
RExUeXBlKCRpbnRlcmZhY2UsICR0eXBlKTsKKyAgICByZXR1cm4gIkRPTUpJVDo6SURMQXJndW1l
bnRUeXBlRmlsdGVyPCR7SURMVHlwZX0+IjsKK30KKworc3ViIEdldFJlc3VsdFR5cGVGaWx0ZXIK
K3sKKyAgICBteSAoJGludGVyZmFjZSwgJHR5cGUpID0gQF87CisKKyAgICBteSAkSURMVHlwZSA9
IEdldElETFR5cGUoJGludGVyZmFjZSwgJHR5cGUpOworICAgIHJldHVybiAiRE9NSklUOjpJRExS
ZXN1bHRUeXBlRmlsdGVyPCR7SURMVHlwZX0+IjsKIH0KIAogc3ViIEdlbmVyYXRlSW1wbGVtZW50
YXRpb24KQEAgLTI2MDgsNiArMjYwMSwxNyBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgog
ICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIjaWYgJHtjb25kaXRpb25hbFN0cmluZ31c
biIpIGlmICRjb25kaXRpb25hbFN0cmluZzsKICAgICAgICAgICAgIG15ICRmdW5jdGlvbk5hbWUg
PSBHZXRGdW5jdGlvbk5hbWUoJGludGVyZmFjZSwgJGNsYXNzTmFtZSwgJGZ1bmN0aW9uKTsKICAg
ICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMICR7ZnVuY3Rpb25OYW1lfShKU0M6OkV4ZWNTdGF0ZSopO1xuIik7CisgICAgICAgICAg
ICBpZiAoJGZ1bmN0aW9uLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntET01KSVR9KSB7CisgICAgICAg
ICAgICAgICAgJGltcGxJbmNsdWRlc3siRE9NSklUSURMVHlwZS5oIn0gPSAxOworICAgICAgICAg
ICAgICAgIG15ICR1bnNhZmVGdW5jdGlvbk5hbWUgPSAidW5zYWZlIiAuICRjb2RlR2VuZXJhdG9y
LT5XS191Y2ZpcnN0KCRmdW5jdGlvbk5hbWUpOworICAgICAgICAgICAgICAgIG15ICRmdW5jdGlv
blNpZ25hdHVyZSA9ICJKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgJHt1bnNhZmVG
dW5jdGlvbk5hbWV9KEpTQzo6RXhlY1N0YXRlKiwgJGNsYXNzTmFtZSoiOworICAgICAgICAgICAg
ICAgIGZvcmVhY2ggbXkgJGFyZ3VtZW50IChAeyRmdW5jdGlvbi0+YXJndW1lbnRzfSkgeworICAg
ICAgICAgICAgICAgICAgICBteSAkdHlwZSA9ICRhcmd1bWVudC0+dHlwZTsKKyAgICAgICAgICAg
ICAgICAgICAgbXkgJGFyZ3VtZW50VHlwZSA9IEdldFVuc2FmZUFyZ3VtZW50VHlwZSgkaW50ZXJm
YWNlLCAkdHlwZSk7CisgICAgICAgICAgICAgICAgICAgICRmdW5jdGlvblNpZ25hdHVyZSAuPSAi
LCAke2FyZ3VtZW50VHlwZX0iOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBw
dXNoKEBpbXBsQ29udGVudCwgJGZ1bmN0aW9uU2lnbmF0dXJlIC4gIik7XG4iKTsKKyAgICAgICAg
ICAgIH0KICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiI2VuZGlmXG4iKSBpZiAkY29u
ZGl0aW9uYWxTdHJpbmc7CiAgICAgICAgIH0KIApAQCAtMjY0NCw2ICsyNjQ4LDM3IEBAIHN1YiBH
ZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiXG4iKTsK
ICAgICB9CiAKKyAgICBpZiAoJG51bUZ1bmN0aW9ucyA+IDApIHsKKyAgICAgICAgZm9yZWFjaCBt
eSAkZnVuY3Rpb24gKEBmdW5jdGlvbnMpIHsKKyAgICAgICAgICAgIG5leHQgdW5sZXNzICRmdW5j
dGlvbi0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57RE9NSklUfTsKKyAgICAgICAgICAgICRpbXBsSW5j
bHVkZXN7IkRPTUpJVElETFR5cGVGaWx0ZXIuaCJ9ID0gMTsKKyAgICAgICAgICAgICRpbXBsSW5j
bHVkZXN7IkRPTUpJVENoZWNrRE9NLmgifSA9IDE7CisgICAgICAgICAgICAkaW1wbEluY2x1ZGVz
eyJET01KSVRBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmgifSA9IDE7CisKKyAgICAgICAgICAgIG15
ICRpc092ZXJsb2FkZWQgPSAkZnVuY3Rpb24tPntvdmVybG9hZHN9ICYmIEB7JGZ1bmN0aW9uLT57
b3ZlcmxvYWRzfX0gPiAxOworICAgICAgICAgICAgZGllICJPdmVybG9hZHMgaXMgbm90IHN1cHBv
cnRlZCBpbiBET01KSVQiIGlmICRpc092ZXJsb2FkZWQ7CisgICAgICAgICAgICBkaWUgIkN1cnJl
bnRseSBSZWFkRE9NIHZhbHVlIGlzIG9ubHkgYWxsb3dlZCIgdW5sZXNzICRjb2RlR2VuZXJhdG9y
LT5FeHRlbmRlZEF0dHJpYnV0ZUNvbnRhaW5zKCRmdW5jdGlvbi0+ZXh0ZW5kZWRBdHRyaWJ1dGVz
LT57RE9NSklUfSwgIlJlYWRET00iKTsKKworICAgICAgICAgICAgbXkgJGludGVyZmFjZU5hbWUg
PSAkaW50ZXJmYWNlLT50eXBlLT5uYW1lOworICAgICAgICAgICAgbXkgJGZ1bmN0aW9uTmFtZSA9
IEdldEZ1bmN0aW9uTmFtZSgkaW50ZXJmYWNlLCAkY2xhc3NOYW1lLCAkZnVuY3Rpb24pOworICAg
ICAgICAgICAgbXkgJHVuc2FmZUZ1bmN0aW9uTmFtZSA9ICJ1bnNhZmUiIC4gJGNvZGVHZW5lcmF0
b3ItPldLX3VjZmlyc3QoJGZ1bmN0aW9uTmFtZSk7CisgICAgICAgICAgICBteSAkZG9tSklUU2ln
bmF0dXJlTmFtZSA9ICJET01KSVRTaWduYXR1cmVGb3IiIC4gJGludGVyZmFjZS0+dHlwZS0+bmFt
ZSAuICRjb2RlR2VuZXJhdG9yLT5XS191Y2ZpcnN0KCRmdW5jdGlvbi0+bmFtZSk7CisgICAgICAg
ICAgICBteSAkY2xhc3NJbmZvID0gIkpTIiAuICRpbnRlcmZhY2UtPnR5cGUtPm5hbWUgLiAiOjpp
bmZvKCkiOworICAgICAgICAgICAgbXkgJHJlc3VsdFR5cGUgPSBHZXRSZXN1bHRUeXBlRmlsdGVy
KCRpbnRlcmZhY2UsICRmdW5jdGlvbi0+dHlwZSk7CisgICAgICAgICAgICBteSAkZG9tSklUU2ln
bmF0dXJlID0gInN0YXRpYyBjb25zdCBKU0M6OkRPTUpJVDo6U2lnbmF0dXJlICR7ZG9tSklUU2ln
bmF0dXJlTmFtZX0oKHVpbnRwdHJfdCkke3Vuc2FmZUZ1bmN0aW9uTmFtZX0sIERPTUpJVDo6Y2hl
Y2tET008JGludGVyZmFjZU5hbWU+LCAkY2xhc3NJbmZvLCBKU0M6OkRPTUpJVDo6RWZmZWN0Ojpm
b3JSZWFkKERPTUpJVDo6QWJzdHJhY3RIZWFwUmVwb3NpdG9yeTo6RE9NKSwgJHtyZXN1bHRUeXBl
fSI7CisgICAgICAgICAgICBmb3JlYWNoIG15ICRhcmd1bWVudCAoQHskZnVuY3Rpb24tPmFyZ3Vt
ZW50c30pIHsKKyAgICAgICAgICAgICAgICBteSAkdHlwZSA9ICRhcmd1bWVudC0+dHlwZTsKKyAg
ICAgICAgICAgICAgICBteSAkYXJndW1lbnRUeXBlID0gR2V0QXJndW1lbnRUeXBlRmlsdGVyKCRp
bnRlcmZhY2UsICR0eXBlKTsKKyAgICAgICAgICAgICAgICAkZG9tSklUU2lnbmF0dXJlIC49ICIs
ICR7YXJndW1lbnRUeXBlfSI7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBteSAkY29uZGl0
aW9uYWxTdHJpbmcgPSAkY29kZUdlbmVyYXRvci0+R2VuZXJhdGVDb25kaXRpb25hbFN0cmluZygk
ZnVuY3Rpb24pOworICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIjaWYgJHtjb25kaXRp
b25hbFN0cmluZ31cbiIpIGlmICRjb25kaXRpb25hbFN0cmluZzsKKyAgICAgICAgICAgIHB1c2go
QGltcGxDb250ZW50LCAkZG9tSklUU2lnbmF0dXJlIC4gIik7XG4iKTsKKyAgICAgICAgICAgIHB1
c2goQGltcGxDb250ZW50LCAiI2VuZGlmXG4iKSBpZiAkY29uZGl0aW9uYWxTdHJpbmc7CisgICAg
ICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIlxuIik7CisgICAgICAgIH0KKyAgICB9CisKICAg
ICBHZW5lcmF0ZVByb3RvdHlwZURlY2xhcmF0aW9uKFxAaW1wbENvbnRlbnQsICRjbGFzc05hbWUs
ICRpbnRlcmZhY2UpIGlmICFIZWFkZXJOZWVkc1Byb3RvdHlwZURlY2xhcmF0aW9uKCRpbnRlcmZh
Y2UpOwogCiAgICAgR2VuZXJhdGVDb25zdHJ1Y3RvckRlY2xhcmF0aW9uKFxAaW1wbENvbnRlbnQs
ICRjbGFzc05hbWUsICRpbnRlcmZhY2UpIGlmIE5lZWRzQ29uc3RydWN0b3JQcm9wZXJ0eSgkaW50
ZXJmYWNlKTsKQEAgLTI3NDAsNyArMjc3NSwxMSBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlv
bgogICAgICAgICAgICAgcHVzaChAaGFzaFZhbHVlMSwgJGZ1bmN0aW9uTmFtZSk7CiAKICAgICAg
ICAgICAgIG15ICRmdW5jdGlvbkxlbmd0aCA9IEdldEZ1bmN0aW9uTGVuZ3RoKCRmdW5jdGlvbik7
Ci0gICAgICAgICAgICBwdXNoKEBoYXNoVmFsdWUyLCAkZnVuY3Rpb25MZW5ndGgpOworICAgICAg
ICAgICAgaWYgKCRmdW5jdGlvbi0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57RE9NSklUfSkgeworICAg
ICAgICAgICAgICAgIHB1c2goQGhhc2hWYWx1ZTIsICJET01KSVRGdW5jdGlvbkZvciIgLiAkaW50
ZXJmYWNlLT50eXBlLT5uYW1lIC4gJGNvZGVHZW5lcmF0b3ItPldLX3VjZmlyc3QoJGZ1bmN0aW9u
LT5uYW1lKSk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHB1c2goQGhh
c2hWYWx1ZTIsICRmdW5jdGlvbkxlbmd0aCk7CisgICAgICAgICAgICB9CiAKICAgICAgICAgICAg
IHB1c2goQGhhc2hTcGVjaWFscywgQ29tcHV0ZUZ1bmN0aW9uU3BlY2lhbCgkaW50ZXJmYWNlLCAk
ZnVuY3Rpb24pKTsKIApAQCAtMzMwNywxMyArMzM0NiwxNCBAQCBzdWIgR2VuZXJhdGVJbXBsZW1l
bnRhdGlvbgogCiAgICAgICAgICAgICBpZiAoJGF0dHJpYnV0ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVz
LT57IkRPTUpJVCJ9KSB7CiAgICAgICAgICAgICAgICAgJGltcGxJbmNsdWRlc3siPHd0Zi9OZXZl
ckRlc3Ryb3llZC5oPiJ9ID0gMTsKKyAgICAgICAgICAgICAgICAkaW1wbEluY2x1ZGVzeyJET01K
SVRJRExUeXBlRmlsdGVyLmgifSA9IDE7CiAgICAgICAgICAgICAgICAgbXkgJGludGVyZmFjZU5h
bWUgPSAkaW50ZXJmYWNlLT50eXBlLT5uYW1lOwogICAgICAgICAgICAgICAgIG15ICRhdHRyaWJ1
dGVOYW1lID0gJGF0dHJpYnV0ZS0+bmFtZTsKICAgICAgICAgICAgICAgICBteSAkZ2VuZXJhdG9y
TmFtZSA9ICRpbnRlcmZhY2VOYW1lIC4gJGNvZGVHZW5lcmF0b3ItPldLX3VjZmlyc3QoJGF0dHJp
YnV0ZS0+bmFtZSk7CiAgICAgICAgICAgICAgICAgbXkgJGRvbUpJVENsYXNzTmFtZSA9ICRnZW5l
cmF0b3JOYW1lIC4gIkRPTUpJVCI7CiAgICAgICAgICAgICAgICAgbXkgJGdldHRlciA9IEdldEF0
dHJpYnV0ZUdldHRlck5hbWUoJGludGVyZmFjZSwgJGdlbmVyYXRvck5hbWUsICRhdHRyaWJ1dGUp
OwogICAgICAgICAgICAgICAgIG15ICRzZXR0ZXIgPSBJc1JlYWRvbmx5KCRhdHRyaWJ1dGUpID8g
Im51bGxwdHIiIDogR2V0QXR0cmlidXRlU2V0dGVyTmFtZSgkaW50ZXJmYWNlLCAkZ2VuZXJhdG9y
TmFtZSwgJGF0dHJpYnV0ZSk7Ci0gICAgICAgICAgICAgICAgbXkgJHJlc3VsdFR5cGUgPSBHZXRS
ZXN1bHRUeXBlRmlsdGVyKCRhdHRyaWJ1dGUtPnR5cGUpOworICAgICAgICAgICAgICAgIG15ICRy
ZXN1bHRUeXBlID0gR2V0UmVzdWx0VHlwZUZpbHRlcigkaW50ZXJmYWNlLCAkYXR0cmlidXRlLT50
eXBlKTsKICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiRkb21KSVRDbGFzc05h
bWU6OiRkb21KSVRDbGFzc05hbWUoKVxuIik7CiAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENv
bnRlbnQsICIgICAgOiBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVyKCRnZXR0ZXIsICRzZXR0ZXIs
ICR7Y2xhc3NOYW1lfTo6aW5mbygpLCAkcmVzdWx0VHlwZSlcbiIpOwogICAgICAgICAgICAgICAg
IHB1c2goQGltcGxDb250ZW50LCAie1xuIik7CkBAIC0zODI2LDYgKzM4NjYsNzcgQEAgRU5ECiAg
ICAgICAgICAgICB9CiAKICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAifVxuXG4iKTsK
KworICAgICAgICAgICAgaWYgKCRmdW5jdGlvbi0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57RE9NSklU
fSkgeworICAgICAgICAgICAgICAgICRpbXBsSW5jbHVkZXN7IjxpbnRlcnByZXRlci9GcmFtZVRy
YWNlcnMuaD4ifSA9IDE7CisgICAgICAgICAgICAgICAgbXkgJHVuc2FmZUZ1bmN0aW9uTmFtZSA9
ICJ1bnNhZmUiIC4gJGNvZGVHZW5lcmF0b3ItPldLX3VjZmlyc3QoJGZ1bmN0aW9uTmFtZSk7Cisg
ICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJKU0M6OkVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgJHt1bnNhZmVGdW5jdGlvbk5hbWV9KEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwg
JGNsYXNzTmFtZSogY2FzdGVkVGhpcyIpOworICAgICAgICAgICAgICAgIGZvcmVhY2ggbXkgJGFy
Z3VtZW50IChAeyRmdW5jdGlvbi0+YXJndW1lbnRzfSkgeworICAgICAgICAgICAgICAgICAgICBt
eSAkdHlwZSA9ICRhcmd1bWVudC0+dHlwZTsKKyAgICAgICAgICAgICAgICAgICAgbXkgJGFyZ3Vt
ZW50VHlwZSA9IEdldFVuc2FmZUFyZ3VtZW50VHlwZSgkaW50ZXJmYWNlLCAkdHlwZSk7CisgICAg
ICAgICAgICAgICAgICAgIG15ICRuYW1lID0gJGFyZ3VtZW50LT5uYW1lOworICAgICAgICAgICAg
ICAgICAgICBteSAkZW5jb2RlZE5hbWUgPSAiZW5jb2RlZCIgLiAkY29kZUdlbmVyYXRvci0+V0tf
dWNmaXJzdCgkbmFtZSk7CisgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAi
LCAke2FyZ3VtZW50VHlwZX0gJHtlbmNvZGVkTmFtZX0iKTsKKyAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIpXG4iKTsKKyAgICAgICAgICAgICAg
ICBwdXNoKEBpbXBsQ29udGVudCwgIntcbiIpOworICAgICAgICAgICAgICAgIHB1c2goQGltcGxD
b250ZW50LCAiICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7XG4iKTsKKyAgICAgICAgICAgICAgICBw
dXNoKEBpbXBsQ29udGVudCwgIiAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTtcbiIpOworICAgICAg
ICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIEpTQzo6TmF0aXZlQ2FsbEZyYW1lVHJh
Y2VyIHRyYWNlcigmdm0sIHN0YXRlKTtcbiIpOworICAgICAgICAgICAgICAgIHB1c2goQGltcGxD
b250ZW50LCAiICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pO1xu
Iik7CisgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgYXV0byYgaW1wbCA9
IGNhc3RlZFRoaXMtPndyYXBwZWQoKTtcbiIpOworICAgICAgICAgICAgICAgIG15IEBhcmd1bWVu
dHM7CisgICAgICAgICAgICAgICAgbXkgJGltcGxGdW5jdGlvbk5hbWU7CisgICAgICAgICAgICAg
ICAgbXkgJGltcGxlbWVudGVkQnkgPSAkZnVuY3Rpb24tPmV4dGVuZGVkQXR0cmlidXRlcy0+e0lt
cGxlbWVudGVkQnl9OworCisgICAgICAgICAgICAgICAgaWYgKCRpbXBsZW1lbnRlZEJ5KSB7Cisg
ICAgICAgICAgICAgICAgICAgIEFkZFRvSW1wbEluY2x1ZGVzKCIke2ltcGxlbWVudGVkQnl9Lmgi
LCAkZnVuY3Rpb24tPmV4dGVuZGVkQXR0cmlidXRlcy0+e0NvbmRpdGlvbmFsfSk7CisgICAgICAg
ICAgICAgICAgICAgIHVuc2hpZnQoQGFyZ3VtZW50cywgImltcGwiKSBpZiAhJGZ1bmN0aW9uLT5p
c1N0YXRpYzsKKyAgICAgICAgICAgICAgICAgICAgJGltcGxGdW5jdGlvbk5hbWUgPSAiV2ViQ29y
ZTo6JHtpbXBsZW1lbnRlZEJ5fTo6JHtmdW5jdGlvbkltcGxlbWVudGF0aW9uTmFtZX0iOworICAg
ICAgICAgICAgICAgIH0gZWxzaWYgKCRmdW5jdGlvbi0+aXNTdGF0aWMpIHsKKyAgICAgICAgICAg
ICAgICAgICAgJGltcGxGdW5jdGlvbk5hbWUgPSAiJHtpbnRlcmZhY2VOYW1lfTo6JHtmdW5jdGlv
bkltcGxlbWVudGF0aW9uTmFtZX0iOworICAgICAgICAgICAgICAgIH0gZWxzaWYgKCRzdmdQcm9w
ZXJ0eU9yTGlzdFByb3BlcnR5VHlwZSBhbmQgISRzdmdMaXN0UHJvcGVydHlUeXBlKSB7CisgICAg
ICAgICAgICAgICAgICAgICRpbXBsRnVuY3Rpb25OYW1lID0gInBvZEltcGwuJHtmdW5jdGlvbklt
cGxlbWVudGF0aW9uTmFtZX0iOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAg
ICAgICAgICAgICRpbXBsRnVuY3Rpb25OYW1lID0gImltcGwuJHtmdW5jdGlvbkltcGxlbWVudGF0
aW9uTmFtZX0iOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIGZvcmVhY2gg
bXkgJGFyZ3VtZW50IChAeyRmdW5jdGlvbi0+YXJndW1lbnRzfSkgeworICAgICAgICAgICAgICAg
ICAgICBteSAkdmFsdWUgPSAiIjsKKyAgICAgICAgICAgICAgICAgICAgbXkgJHR5cGUgPSAkYXJn
dW1lbnQtPnR5cGU7CisgICAgICAgICAgICAgICAgICAgIG15ICRuYW1lID0gJGFyZ3VtZW50LT5u
YW1lOworICAgICAgICAgICAgICAgICAgICBteSAkZW5jb2RlZE5hbWUgPSAiZW5jb2RlZCIgLiAk
Y29kZUdlbmVyYXRvci0+V0tfdWNmaXJzdCgkbmFtZSk7CisgICAgICAgICAgICAgICAgICAgIG15
ICRuYXRpdmVUeXBlID0gR2V0TmF0aXZlVHlwZSgkaW50ZXJmYWNlLCAkYXJndW1lbnQtPnR5cGUp
OworICAgICAgICAgICAgICAgICAgICBteSAkaXNUZWFyT2ZmID0gJGNvZGVHZW5lcmF0b3ItPklz
U1ZHVHlwZU5lZWRpbmdUZWFyT2ZmKCR0eXBlKSAmJiAkaW50ZXJmYWNlTmFtZSAhfiAvTGlzdCQv
OworICAgICAgICAgICAgICAgICAgICBkaWUgIlRlYXJPZmYgdHlwZSBpcyBub3QgYWxsb3dlZCIg
aWYgJGlzVGVhck9mZjsKKyAgICAgICAgICAgICAgICAgICAgbXkgJHNob3VsZFBhc3NCeVJlZmVy
ZW5jZSA9IFNob3VsZFBhc3NXcmFwcGVyQnlSZWZlcmVuY2UoJGFyZ3VtZW50LCAkaW50ZXJmYWNl
KTsKKworICAgICAgICAgICAgICAgICAgICBpZiAoISRzaG91bGRQYXNzQnlSZWZlcmVuY2UgJiYg
KCRjb2RlR2VuZXJhdG9yLT5Jc1dyYXBwZXJUeXBlKCR0eXBlKSB8fCAkY29kZUdlbmVyYXRvci0+
SXNUeXBlZEFycmF5VHlwZSgkdHlwZSkpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAkaW1w
bEluY2x1ZGVzeyI8cnVudGltZS9FcnJvci5oPiJ9ID0gMTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIG15ICgkbmF0aXZlVmFsdWUsICRtYXlUaHJvd0V4Y2VwdGlvbikgPSBVbnNhZmVUb05hdGl2
ZSgkaW50ZXJmYWNlLCAkYXJndW1lbnQsICRlbmNvZGVkTmFtZSwgJGZ1bmN0aW9uLT5leHRlbmRl
ZEF0dHJpYnV0ZXMtPntDb25kaXRpb25hbH0pOworICAgICAgICAgICAgICAgICAgICAgICAgcHVz
aChAaW1wbENvbnRlbnQsICIgICAgJG5hdGl2ZVR5cGUgJG5hbWUgPSBudWxscHRyO1xuIik7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAkbmFtZSA9ICRu
YXRpdmVWYWx1ZTtcbiIpOworICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsICIgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgp
KTtcbiIpIGlmICRtYXlUaHJvd0V4Y2VwdGlvbjsKKyAgICAgICAgICAgICAgICAgICAgICAgICR2
YWx1ZSA9ICJXVEZNb3ZlKCRuYW1lKSI7CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBteSAoJG5hdGl2ZVZhbHVlLCAkbWF5VGhyb3dFeGNlcHRp
b24pID0gVW5zYWZlVG9OYXRpdmUoJGludGVyZmFjZSwgJGFyZ3VtZW50LCAkZW5jb2RlZE5hbWUs
ICRmdW5jdGlvbi0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Q29uZGl0aW9uYWx9KTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGF1dG8gJG5hbWUgPSAke25h
dGl2ZVZhbHVlfTtcbiIpOworICAgICAgICAgICAgICAgICAgICAgICAgJHZhbHVlID0gIldURk1v
dmUoJG5hbWUpIjsKKyAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAi
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7XG4i
KSBpZiAkbWF5VGhyb3dFeGNlcHRpb247CisgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgICAgICAgICBpZiAoJHNob3VsZFBhc3NCeVJlZmVyZW5jZSkgeworICAgICAgICAgICAg
ICAgICAgICAgICAgJHZhbHVlID0gIiokbmFtZSI7CisgICAgICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgICAgICAgcHVzaChAYXJndW1lbnRzLCAkdmFsdWUpOworICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgICAgICBteSAkZnVuY3Rpb25TdHJpbmcgPSAiJGltcGxGdW5jdGlv
bk5hbWUoIiAuIGpvaW4oIiwgIiwgQGFyZ3VtZW50cykgLiAiKSI7CisgICAgICAgICAgICAgICAg
JGZ1bmN0aW9uU3RyaW5nID0gInByb3BhZ2F0ZUV4Y2VwdGlvbigqc3RhdGUsIHRocm93U2NvcGUs
ICRmdW5jdGlvblN0cmluZykiIGlmIE5lZWRzRXhwbGljaXRQcm9wYWdhdGVFeGNlcHRpb25DYWxs
KCRmdW5jdGlvbik7CisgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgSlNW
YWx1ZSByZXN1bHQgPSAiIC4gTmF0aXZlVG9KU1ZhbHVlVXNpbmdQb2ludGVycygkZnVuY3Rpb24s
IDEsICRpbnRlcmZhY2UsICRmdW5jdGlvblN0cmluZywgImNhc3RlZFRoaXMiKSAuICI7XG4iKTsK
KyAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKHJlc3VsdCk7XG4iKTsKKyAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwg
In1cblxuIik7CisgICAgICAgICAgICB9CisKICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50
LCAiI2VuZGlmXG5cbiIpIGlmICRjb25kaXRpb25hbDsKIAogICAgICAgICAgICAgIyBHZW5lcmF0
ZSBhIGZ1bmN0aW9uIGRpc3BhdGNoaW5nIGNhbGwgdG8gdGhlIHJlc3Qgb2YgdGhlIG92ZXJsb2Fk
cy4KQEAgLTUzMTksNiArNTQzMCw0MyBAQCBzdWIgSlNWYWx1ZVRvTmF0aXZlCiAgICAgcmV0dXJu
ICgiSlMiIC4gJHR5cGUtPm5hbWUgLiAiOjp0b1dyYXBwZWQoJHZhbHVlKSIsIDApOwogfQogCitz
dWIgVW5zYWZlVG9OYXRpdmUKK3sKKyAgICBteSAoJGludGVyZmFjZSwgJGNvbnRleHQsICR2YWx1
ZSwgJGNvbmRpdGlvbmFsLCAkc3RhdGVQb2ludGVyLCAkc3RhdGVSZWZlcmVuY2UsICR0aGlzT2Jq
ZWN0UmVmZXJlbmNlKSA9IEBfOworCisgICAgYXNzZXJ0KCJJbnZhbGlkIGNvbnRleHQgdHlwZSIp
IGlmICFJc1ZhbGlkQ29udGV4dEZvckpTVmFsdWVUb05hdGl2ZSgkY29udGV4dCk7CisKKyAgICBt
eSAkdHlwZSA9ICRjb250ZXh0LT50eXBlOworCisgICAgIyBGSVhNRTogUmVtb3ZlIHRoZXNlIDMg
dmFyaWFibGVzIHdoZW4gYWxsIFVuc2FmZVRvTmF0aXZlIHVzZSByZWZlcmVuY2VzLgorICAgICRz
dGF0ZVBvaW50ZXIgPSAic3RhdGUiIHVubGVzcyAkc3RhdGVQb2ludGVyOworICAgICRzdGF0ZVJl
ZmVyZW5jZSA9ICIqc3RhdGUiIHVubGVzcyAkc3RhdGVSZWZlcmVuY2U7CisgICAgJHRoaXNPYmpl
Y3RSZWZlcmVuY2UgPSAiKmNhc3RlZFRoaXMiIHVubGVzcyAkdGhpc09iamVjdFJlZmVyZW5jZTsK
KworICAgIGlmIChKU1ZhbHVlVG9OYXRpdmVJc0hhbmRsZWRCeURPTUNvbnZlcnQoJHR5cGUsICRj
b250ZXh0KSkgeworICAgICAgICBBZGRUb0ltcGxJbmNsdWRlcygiRE9NSklUSURMQ29udmVydC5o
Iik7CisgICAgICAgIEFkZFRvSW1wbEluY2x1ZGVzRm9ySURMVHlwZSgkdHlwZSwgJGNvbmRpdGlv
bmFsKTsKKworICAgICAgICBteSAkSURMVHlwZSA9IEdldElETFR5cGUoJGludGVyZmFjZSwgJHR5
cGUpOworCisgICAgICAgIG15IEBjb252ZXJzaW9uQXJndW1lbnRzID0gKCk7CisgICAgICAgIHB1
c2goQGNvbnZlcnNpb25Bcmd1bWVudHMsICIkc3RhdGVSZWZlcmVuY2UiKTsKKyAgICAgICAgcHVz
aChAY29udmVyc2lvbkFyZ3VtZW50cywgIiR2YWx1ZSIpOworCisgICAgICAgIG15IEBjb252ZXJz
aW9uU3RhdGljQXJndW1lbnRzID0gKCk7CisgICAgICAgIHB1c2goQGNvbnZlcnNpb25TdGF0aWNB
cmd1bWVudHMsIEdldEludGVnZXJDb252ZXJzaW9uQ29uZmlndXJhdGlvbigkY29udGV4dCkpIGlm
ICRjb2RlR2VuZXJhdG9yLT5Jc0ludGVnZXJUeXBlKCR0eXBlKTsKKyAgICAgICAgcHVzaChAY29u
dmVyc2lvblN0YXRpY0FyZ3VtZW50cywgR2V0U3RyaW5nQ29udmVyc2lvbkNvbmZpZ3VyYXRpb24o
JGNvbnRleHQpKSBpZiAkY29kZUdlbmVyYXRvci0+SXNTdHJpbmdUeXBlKCR0eXBlKTsKKworICAg
ICAgICBpZiAoc2NhbGFyKEBjb252ZXJzaW9uU3RhdGljQXJndW1lbnRzKSA+IDApIHsKKyAgICAg
ICAgICAgIHJldHVybiAoIkRPTUpJVDo6RGlyZWN0Q29udmVydGVyPCRJRExUeXBlPjo6ZGlyZWN0
Q29udmVydDwiIC4gam9pbigiLCAiLCBAY29udmVyc2lvblN0YXRpY0FyZ3VtZW50cykgLiAiPigi
IC4gam9pbigiLCAiLCBAY29udmVyc2lvbkFyZ3VtZW50cykgLiAiKSIsIDEpOworICAgICAgICB9
CisgICAgICAgIHJldHVybiAoIkRPTUpJVDo6RGlyZWN0Q29udmVydGVyPCRJRExUeXBlPjo6ZGly
ZWN0Q29udmVydCgiIC4gam9pbigiLCAiLCBAY29udmVyc2lvbkFyZ3VtZW50cykgLiAiKSIsIDEp
OworICAgIH0KKworICAgICMgRklYTUU6IFN1cHBvcnQgbW9yZSB0eXBlcy4KKyAgICBkaWUgIk9u
bHkgRE9NQ29udmVydCBzdXBwb3J0ZWQgb25lIGlzIG5vdyBzdXBwb3J0ZWQgaW4gRE9NSklUIHVu
c2FmZS4iOworfQorCiBzdWIgTmF0aXZlVG9KU1ZhbHVlSXNIYW5kbGVkQnlET01Db252ZXJ0CiB7
CiAgICAgbXkgKCR0eXBlKSA9IEBfOwpAQCAtNTUyNSw3ICs1NjczLDEwIEBAIHN1YiBHZW5lcmF0
ZUhhc2hUYWJsZVZhbHVlQXJyYXkKICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiI2lm
ICR7Y29uZGl0aW9uYWxTdHJpbmd9XG4iKTsKICAgICAgICAgfQogCi0gICAgICAgIGlmICgiQCRz
cGVjaWFsc1skaV0iID1+IG0vRnVuY3Rpb24vKSB7CisgICAgICAgIGlmICgiQCRzcGVjaWFsc1sk
aV0iID1+IG0vRE9NSklURnVuY3Rpb24vKSB7CisgICAgICAgICAgICAkZmlyc3RUYXJnZXRUeXBl
ID0gInN0YXRpY19jYXN0PE5hdGl2ZUZ1bmN0aW9uPiI7CisgICAgICAgICAgICAkc2Vjb25kVGFy
Z2V0VHlwZSA9ICJzdGF0aWNfY2FzdDxjb25zdCBKU0M6OkRPTUpJVDo6U2lnbmF0dXJlKj4iOwor
ICAgICAgICB9IGVsc2lmICgiQCRzcGVjaWFsc1skaV0iID1+IG0vRnVuY3Rpb24vKSB7CiAgICAg
ICAgICAgICAkZmlyc3RUYXJnZXRUeXBlID0gInN0YXRpY19jYXN0PE5hdGl2ZUZ1bmN0aW9uPiI7
CiAgICAgICAgIH0gZWxzaWYgKCJAJHNwZWNpYWxzWyRpXSIgPX4gbS9CdWlsdGluLykgewogICAg
ICAgICAgICAgJGZpcnN0VGFyZ2V0VHlwZSA9ICJzdGF0aWNfY2FzdDxCdWlsdGluR2VuZXJhdG9y
PiI7CkBAIC02MTIzLDYgKzYyNzQsOSBAQCBzdWIgQ29tcHV0ZUZ1bmN0aW9uU3BlY2lhbAogICAg
IGVsc2UgewogICAgICAgICBwdXNoKEBzcGVjaWFscywgIkpTQzo6RnVuY3Rpb24iKTsKICAgICB9
CisgICAgaWYgKCRmdW5jdGlvbi0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkRPTUpJVCJ9KSB7Cisg
ICAgICAgIHB1c2goQHNwZWNpYWxzLCAiRE9NSklURnVuY3Rpb24iKSBpZiAkZnVuY3Rpb24tPmV4
dGVuZGVkQXR0cmlidXRlcy0+e0RPTUpJVH07CisgICAgfQogICAgIHJldHVybiAoQHNwZWNpYWxz
ID4gMCkgPyBqb2luKCIgfCAiLCBAc3BlY2lhbHMpIDogIjAiOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0lETEF0dHJpYnV0ZXMudHh0IGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9JRExBdHRyaWJ1dGVzLnR4dAppbmRleCBhMmU3NTQx
NTkxY2UzZjU3NmU3YTdkMmQ2ZDJmYzYyZGRkZmEwNDFjLi4xMzk4ZDk0M2ViY2U0ODJlMGQxMTRj
OTIyZjBkNDkyMmY1YjI1ODBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL0lETEF0dHJpYnV0ZXMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvSURMQXR0cmlidXRlcy50eHQKQEAgLTUyLDcgKzUyLDcgQEAgQ3VzdG9tUHV0RnVuY3Rp
b24KIEN1c3RvbVNldFByb3RvdHlwZQogQ3VzdG9tU2V0dGVyCiBDdXN0b21Ub0pTT2JqZWN0Ci1E
T01KSVQKK0RPTUpJVD18UmVhZERPTQogRG9Ob3RDaGVja0NvbnN0YW50cwogRG9Ob3RDaGVja1Nl
Y3VyaXR5CiBEb05vdENoZWNrU2VjdXJpdHlPbkdldHRlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERPTUpJVC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RE9NSklULmNwcAppbmRleCAy
NDg4ZGYyNmJkYjUyYjUwY2Q2N2Q2MGNjYTU2NWIyNjUzNjdlNGNmLi4wYjg5ZWE3MWU5MDQ2MmNh
Y2MxZWUxYjc4NjY2ZmIyOGYyYWViOGExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RE9NSklULmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RE9NSklULmNwcApAQCAtMjEsMTAgKzIx
LDE4IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiSlNUZXN0RE9NSklULmgiCiAK
KyNpbmNsdWRlICJET01KSVRBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmgiCisjaW5jbHVkZSAiRE9N
SklUQ2hlY2tET00uaCIKKyNpbmNsdWRlICJET01KSVRJRExDb252ZXJ0LmgiCisjaW5jbHVkZSAi
RE9NSklUSURMVHlwZS5oIgorI2luY2x1ZGUgIkRPTUpJVElETFR5cGVGaWx0ZXIuaCIKKyNpbmNs
dWRlICJFeGNlcHRpb25Db2RlLmgiCiAjaW5jbHVkZSAiSlNCeXRlU3RyaW5nLmgiCiAjaW5jbHVk
ZSAiSlNET01CaW5kaW5nLmgiCiAjaW5jbHVkZSAiSlNET01Db25zdHJ1Y3Rvci5oIgogI2luY2x1
ZGUgIkpTRE9NQ29udmVydC5oIgorI2luY2x1ZGUgPGludGVycHJldGVyL0ZyYW1lVHJhY2Vycy5o
PgorI2luY2x1ZGUgPHJ1bnRpbWUvRXJyb3IuaD4KICNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+CiAj
aW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAKQEAgLTMyLDYgKzQwLDE1IEBAIHVzaW5n
IG5hbWVzcGFjZSBKU0M7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorLy8gRnVuY3Rpb25zCisK
K0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RET01KSVRQcm90b3R5cGVG
dW5jdGlvbkdldEF0dHJpYnV0ZShKU0M6OkV4ZWNTdGF0ZSopOworSlNDOjpFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIHVuc2FmZUpzVGVzdERPTUpJVFByb3RvdHlwZUZ1bmN0aW9uR2V0QXR0
cmlidXRlKEpTQzo6RXhlY1N0YXRlKiwgSlNUZXN0RE9NSklUKiwgRE9NSklUOjpJRExKU0FyZ3Vt
ZW50VHlwZTxJRExET01TdHJpbmc+KTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBqc1Rlc3RET01KSVRQcm90b3R5cGVGdW5jdGlvbkl0ZW0oSlNDOjpFeGVjU3RhdGUqKTsKK0pT
Qzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCB1bnNhZmVKc1Rlc3RET01KSVRQcm90b3R5
cGVGdW5jdGlvbkl0ZW0oSlNDOjpFeGVjU3RhdGUqLCBKU1Rlc3RET01KSVQqLCBET01KSVQ6OklE
TEpTQXJndW1lbnRUeXBlPElETFVuc2lnbmVkU2hvcnQ+LCBET01KSVQ6OklETEpTQXJndW1lbnRU
eXBlPElETFVuc2lnbmVkU2hvcnQ+KTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBqc1Rlc3RET01KSVRQcm90b3R5cGVGdW5jdGlvbkhhc0F0dHJpYnV0ZShKU0M6OkV4ZWNTdGF0
ZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHVuc2FmZUpzVGVzdERPTUpJ
VFByb3RvdHlwZUZ1bmN0aW9uSGFzQXR0cmlidXRlKEpTQzo6RXhlY1N0YXRlKiwgSlNUZXN0RE9N
SklUKik7CisKIC8vIEF0dHJpYnV0ZXMKIAogSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RET01K
SVRBbnlBdHRyKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9w
ZXJ0eU5hbWUpOwpAQCAtNzIsNiArODksMTIgQEAgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RE
T01KSVROb2RlTnVsbGFibGVBdHRyKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlMKIEpT
Qzo6RW5jb2RlZEpTVmFsdWUganNUZXN0RE9NSklUQ29uc3RydWN0b3IoSlNDOjpFeGVjU3RhdGUq
LCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7CiBib29sIHNldEpTVGVz
dERPTUpJVENvbnN0cnVjdG9yKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwg
SlNDOjpFbmNvZGVkSlNWYWx1ZSk7CiAKK3N0YXRpYyBjb25zdCBKU0M6OkRPTUpJVDo6U2lnbmF0
dXJlIERPTUpJVFNpZ25hdHVyZUZvclRlc3RET01KSVRHZXRBdHRyaWJ1dGUoKHVpbnRwdHJfdCl1
bnNhZmVKc1Rlc3RET01KSVRQcm90b3R5cGVGdW5jdGlvbkdldEF0dHJpYnV0ZSwgRE9NSklUOjpj
aGVja0RPTTxUZXN0RE9NSklUPiwgSlNUZXN0RE9NSklUOjppbmZvKCksIEpTQzo6RE9NSklUOjpF
ZmZlY3Q6OmZvclJlYWQoRE9NSklUOjpBYnN0cmFjdEhlYXBSZXBvc2l0b3J5OjpET00pLCBET01K
SVQ6OklETFJlc3VsdFR5cGVGaWx0ZXI8SURMTnVsbGFibGU8SURMRE9NU3RyaW5nPj4sIERPTUpJ
VDo6SURMQXJndW1lbnRUeXBlRmlsdGVyPElETERPTVN0cmluZz4pOworCitzdGF0aWMgY29uc3Qg
SlNDOjpET01KSVQ6OlNpZ25hdHVyZSBET01KSVRTaWduYXR1cmVGb3JUZXN0RE9NSklUSXRlbSgo
dWludHB0cl90KXVuc2FmZUpzVGVzdERPTUpJVFByb3RvdHlwZUZ1bmN0aW9uSXRlbSwgRE9NSklU
OjpjaGVja0RPTTxUZXN0RE9NSklUPiwgSlNUZXN0RE9NSklUOjppbmZvKCksIEpTQzo6RE9NSklU
OjpFZmZlY3Q6OmZvclJlYWQoRE9NSklUOjpBYnN0cmFjdEhlYXBSZXBvc2l0b3J5OjpET00pLCBE
T01KSVQ6OklETFJlc3VsdFR5cGVGaWx0ZXI8SURMRE9NU3RyaW5nPiwgRE9NSklUOjpJRExBcmd1
bWVudFR5cGVGaWx0ZXI8SURMVW5zaWduZWRTaG9ydD4sIERPTUpJVDo6SURMQXJndW1lbnRUeXBl
RmlsdGVyPElETFVuc2lnbmVkU2hvcnQ+KTsKKworc3RhdGljIGNvbnN0IEpTQzo6RE9NSklUOjpT
aWduYXR1cmUgRE9NSklUU2lnbmF0dXJlRm9yVGVzdERPTUpJVEhhc0F0dHJpYnV0ZSgodWludHB0
cl90KXVuc2FmZUpzVGVzdERPTUpJVFByb3RvdHlwZUZ1bmN0aW9uSGFzQXR0cmlidXRlLCBET01K
SVQ6OmNoZWNrRE9NPFRlc3RET01KSVQ+LCBKU1Rlc3RET01KSVQ6OmluZm8oKSwgSlNDOjpET01K
SVQ6OkVmZmVjdDo6Zm9yUmVhZChET01KSVQ6OkFic3RyYWN0SGVhcFJlcG9zaXRvcnk6OkRPTSks
IERPTUpJVDo6SURMUmVzdWx0VHlwZUZpbHRlcjxJRExCb29sZWFuPik7CisKIGNsYXNzIEpTVGVz
dERPTUpJVFByb3RvdHlwZSA6IHB1YmxpYyBKU0M6OkpTTm9uRmluYWxPYmplY3QgewogcHVibGlj
OgogICAgIHVzaW5nIEJhc2UgPSBKU0M6OkpTTm9uRmluYWxPYmplY3Q7CkBAIC0xNTMsNiArMTc2
LDkgQEAgc3RhdGljIGNvbnN0IEhhc2hUYWJsZVZhbHVlIEpTVGVzdERPTUpJVFByb3RvdHlwZVRh
YmxlVmFsdWVzW10gPQogICAgIHsgImJ5dGVTdHJpbmdOdWxsYWJsZUF0dHIiLCBSZWFkT25seSB8
IEN1c3RvbUFjY2Vzc29yIHwgRE9NSklUQXR0cmlidXRlLCBOb0ludHJpbnNpYywgeyAoaW50cHRy
X3Qpc3RhdGljX2Nhc3Q8RE9NSklUR2V0dGVyU2V0dGVyR2VuZXJhdG9yPihkb21KSVRHZXR0ZXJT
ZXR0ZXJGb3JUZXN0RE9NSklUQnl0ZVN0cmluZ051bGxhYmxlQXR0ciksIChpbnRwdHJfdCkgKDAp
IH0gfSwKICAgICB7ICJ1c3ZTdHJpbmdOdWxsYWJsZUF0dHIiLCBSZWFkT25seSB8IEN1c3RvbUFj
Y2Vzc29yIHwgRE9NSklUQXR0cmlidXRlLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGlj
X2Nhc3Q8RE9NSklUR2V0dGVyU2V0dGVyR2VuZXJhdG9yPihkb21KSVRHZXR0ZXJTZXR0ZXJGb3JU
ZXN0RE9NSklUVXN2U3RyaW5nTnVsbGFibGVBdHRyKSwgKGludHB0cl90KSAoMCkgfSB9LAogICAg
IHsgIm5vZGVOdWxsYWJsZUF0dHIiLCBSZWFkT25seSB8IEN1c3RvbUFjY2Vzc29yIHwgRE9NSklU
QXR0cmlidXRlLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8RE9NSklUR2V0
dGVyU2V0dGVyR2VuZXJhdG9yPihkb21KSVRHZXR0ZXJTZXR0ZXJGb3JUZXN0RE9NSklUTm9kZU51
bGxhYmxlQXR0ciksIChpbnRwdHJfdCkgKDApIH0gfSwKKyAgICB7ICJnZXRBdHRyaWJ1dGUiLCBK
U0M6OkZ1bmN0aW9uIHwgRE9NSklURnVuY3Rpb24sIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClz
dGF0aWNfY2FzdDxOYXRpdmVGdW5jdGlvbj4oanNUZXN0RE9NSklUUHJvdG90eXBlRnVuY3Rpb25H
ZXRBdHRyaWJ1dGUpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PGNvbnN0IEpTQzo6RE9NSklUOjpT
aWduYXR1cmUqPigmRE9NSklUU2lnbmF0dXJlRm9yVGVzdERPTUpJVEdldEF0dHJpYnV0ZSkgfSB9
LAorICAgIHsgIml0ZW0iLCBKU0M6OkZ1bmN0aW9uIHwgRE9NSklURnVuY3Rpb24sIE5vSW50cmlu
c2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxOYXRpdmVGdW5jdGlvbj4oanNUZXN0RE9NSklU
UHJvdG90eXBlRnVuY3Rpb25JdGVtKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxjb25zdCBKU0M6
OkRPTUpJVDo6U2lnbmF0dXJlKj4oJkRPTUpJVFNpZ25hdHVyZUZvclRlc3RET01KSVRJdGVtKSB9
IH0sCisgICAgeyAiaGFzQXR0cmlidXRlIiwgSlNDOjpGdW5jdGlvbiB8IERPTUpJVEZ1bmN0aW9u
LCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8TmF0aXZlRnVuY3Rpb24+KGpz
VGVzdERPTUpJVFByb3RvdHlwZUZ1bmN0aW9uSGFzQXR0cmlidXRlKSwgKGludHB0cl90KSBzdGF0
aWNfY2FzdDxjb25zdCBKU0M6OkRPTUpJVDo6U2lnbmF0dXJlKj4oJkRPTUpJVFNpZ25hdHVyZUZv
clRlc3RET01KSVRIYXNBdHRyaWJ1dGUpIH0gfSwKIH07CiAKIGNvbnN0IENsYXNzSW5mbyBKU1Rl
c3RET01KSVRQcm90b3R5cGU6OnNfaW5mbyA9IHsgIlRlc3RET01KSVRQcm90b3R5cGUiLCAmQmFz
ZTo6c19pbmZvLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdERPTUpJVFByb3RvdHlwZSkg
fTsKQEAgLTE4NSw2ICsyMTEsMTEgQEAgdGVtcGxhdGU8PiBpbmxpbmUgSlNUZXN0RE9NSklUKiBC
aW5kaW5nQ2FsbGVyPEpTVGVzdERPTUpJVD46OmNhc3RGb3JBdHRyaWJ1dGUoRXgKICAgICByZXR1
cm4ganNEeW5hbWljRG93bmNhc3Q8SlNUZXN0RE9NSklUKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNW
YWx1ZSkpOwogfQogCit0ZW1wbGF0ZTw+IGlubGluZSBKU1Rlc3RET01KSVQqIEJpbmRpbmdDYWxs
ZXI8SlNUZXN0RE9NSklUPjo6Y2FzdEZvck9wZXJhdGlvbihFeGVjU3RhdGUmIHN0YXRlKQorewor
ICAgIHJldHVybiBqc0R5bmFtaWNEb3duY2FzdDxKU1Rlc3RET01KSVQqPihzdGF0ZS50aGlzVmFs
dWUoKSk7Cit9CisKIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RET01KSVRBbnlBdHRyR2V0
dGVyKEV4ZWNTdGF0ZSYsIEpTVGVzdERPTUpJVCYsIFRocm93U2NvcGUmIHRocm93U2NvcGUpOwog
CiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RET01KSVRBbnlBdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEVu
Y29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQpAQCAtMjAyLDcgKzIzMyw3IEBA
IHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RET01KSVRBbnlBdHRyR2V0dGVyKEV4ZWNTdGF0
ZSYgc3RhdGUsIEpTVGVzdERPTUpJVCYKIH0KIAogVGVzdERPTUpJVEFueUF0dHJET01KSVQ6OlRl
c3RET01KSVRBbnlBdHRyRE9NSklUKCkKLSAgICA6IEpTQzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIo
anNUZXN0RE9NSklUQW55QXR0ciwgbnVsbHB0ciwgSlNUZXN0RE9NSklUOjppbmZvKCksIEpTQzo6
U3BlY0hlYXBUb3ApCisgICAgOiBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVyKGpzVGVzdERPTUpJ
VEFueUF0dHIsIG51bGxwdHIsIEpTVGVzdERPTUpJVDo6aW5mbygpLCBET01KSVQ6OklETFJlc3Vs
dFR5cGVGaWx0ZXI8SURMQW55PikKIHsKIH0KIApAQCAtMjI5LDcgKzI2MCw3IEBAIHN0YXRpYyBp
bmxpbmUgSlNWYWx1ZSBqc1Rlc3RET01KSVRCb29sZWFuQXR0ckdldHRlcihFeGVjU3RhdGUmIHN0
YXRlLCBKU1Rlc3RET01KCiB9CiAKIFRlc3RET01KSVRCb29sZWFuQXR0ckRPTUpJVDo6VGVzdERP
TUpJVEJvb2xlYW5BdHRyRE9NSklUKCkKLSAgICA6IEpTQzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIo
anNUZXN0RE9NSklUQm9vbGVhbkF0dHIsIG51bGxwdHIsIEpTVGVzdERPTUpJVDo6aW5mbygpLCBK
U0M6OlNwZWNCb29sZWFuKQorICAgIDogSlNDOjpET01KSVQ6OkdldHRlclNldHRlcihqc1Rlc3RE
T01KSVRCb29sZWFuQXR0ciwgbnVsbHB0ciwgSlNUZXN0RE9NSklUOjppbmZvKCksIERPTUpJVDo6
SURMUmVzdWx0VHlwZUZpbHRlcjxJRExCb29sZWFuPikKIHsKIH0KIApAQCAtMjU2LDcgKzI4Nyw3
IEBAIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RET01KSVRCeXRlQXR0ckdldHRlcihFeGVj
U3RhdGUmIHN0YXRlLCBKU1Rlc3RET01KSVQmCiB9CiAKIFRlc3RET01KSVRCeXRlQXR0ckRPTUpJ
VDo6VGVzdERPTUpJVEJ5dGVBdHRyRE9NSklUKCkKLSAgICA6IEpTQzo6RE9NSklUOjpHZXR0ZXJT
ZXR0ZXIoanNUZXN0RE9NSklUQnl0ZUF0dHIsIG51bGxwdHIsIEpTVGVzdERPTUpJVDo6aW5mbygp
LCBKU0M6OlNwZWNJbnQzMk9ubHkpCisgICAgOiBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVyKGpz
VGVzdERPTUpJVEJ5dGVBdHRyLCBudWxscHRyLCBKU1Rlc3RET01KSVQ6OmluZm8oKSwgRE9NSklU
OjpJRExSZXN1bHRUeXBlRmlsdGVyPElETEJ5dGU+KQogewogfQogCkBAIC0yODMsNyArMzE0LDcg
QEAgc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdERPTUpJVE9jdGV0QXR0ckdldHRlcihFeGVj
U3RhdGUmIHN0YXRlLCBKU1Rlc3RET01KSVQKIH0KIAogVGVzdERPTUpJVE9jdGV0QXR0ckRPTUpJ
VDo6VGVzdERPTUpJVE9jdGV0QXR0ckRPTUpJVCgpCi0gICAgOiBKU0M6OkRPTUpJVDo6R2V0dGVy
U2V0dGVyKGpzVGVzdERPTUpJVE9jdGV0QXR0ciwgbnVsbHB0ciwgSlNUZXN0RE9NSklUOjppbmZv
KCksIEpTQzo6U3BlY0ludDMyT25seSkKKyAgICA6IEpTQzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIo
anNUZXN0RE9NSklUT2N0ZXRBdHRyLCBudWxscHRyLCBKU1Rlc3RET01KSVQ6OmluZm8oKSwgRE9N
SklUOjpJRExSZXN1bHRUeXBlRmlsdGVyPElETE9jdGV0PikKIHsKIH0KIApAQCAtMzEwLDcgKzM0
MSw3IEBAIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RET01KSVRTaG9ydEF0dHJHZXR0ZXIo
RXhlY1N0YXRlJiBzdGF0ZSwgSlNUZXN0RE9NSklUCiB9CiAKIFRlc3RET01KSVRTaG9ydEF0dHJE
T01KSVQ6OlRlc3RET01KSVRTaG9ydEF0dHJET01KSVQoKQotICAgIDogSlNDOjpET01KSVQ6Okdl
dHRlclNldHRlcihqc1Rlc3RET01KSVRTaG9ydEF0dHIsIG51bGxwdHIsIEpTVGVzdERPTUpJVDo6
aW5mbygpLCBKU0M6OlNwZWNJbnQzMk9ubHkpCisgICAgOiBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0
dGVyKGpzVGVzdERPTUpJVFNob3J0QXR0ciwgbnVsbHB0ciwgSlNUZXN0RE9NSklUOjppbmZvKCks
IERPTUpJVDo6SURMUmVzdWx0VHlwZUZpbHRlcjxJRExTaG9ydD4pCiB7CiB9CiAKQEAgLTMzNyw3
ICszNjgsNyBAQCBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0RE9NSklUVW5zaWduZWRTaG9y
dEF0dHJHZXR0ZXIoRXhlY1N0YXRlJiBzdGF0ZSwgSlNUZQogfQogCiBUZXN0RE9NSklUVW5zaWdu
ZWRTaG9ydEF0dHJET01KSVQ6OlRlc3RET01KSVRVbnNpZ25lZFNob3J0QXR0ckRPTUpJVCgpCi0g
ICAgOiBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVyKGpzVGVzdERPTUpJVFVuc2lnbmVkU2hvcnRB
dHRyLCBudWxscHRyLCBKU1Rlc3RET01KSVQ6OmluZm8oKSwgSlNDOjpTcGVjSW50MzJPbmx5KQor
ICAgIDogSlNDOjpET01KSVQ6OkdldHRlclNldHRlcihqc1Rlc3RET01KSVRVbnNpZ25lZFNob3J0
QXR0ciwgbnVsbHB0ciwgSlNUZXN0RE9NSklUOjppbmZvKCksIERPTUpJVDo6SURMUmVzdWx0VHlw
ZUZpbHRlcjxJRExVbnNpZ25lZFNob3J0PikKIHsKIH0KIApAQCAtMzY0LDcgKzM5NSw3IEBAIHN0
YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RET01KSVRMb25nQXR0ckdldHRlcihFeGVjU3RhdGUm
IHN0YXRlLCBKU1Rlc3RET01KSVQmCiB9CiAKIFRlc3RET01KSVRMb25nQXR0ckRPTUpJVDo6VGVz
dERPTUpJVExvbmdBdHRyRE9NSklUKCkKLSAgICA6IEpTQzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIo
anNUZXN0RE9NSklUTG9uZ0F0dHIsIG51bGxwdHIsIEpTVGVzdERPTUpJVDo6aW5mbygpLCBKU0M6
OlNwZWNJbnQzMk9ubHkpCisgICAgOiBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVyKGpzVGVzdERP
TUpJVExvbmdBdHRyLCBudWxscHRyLCBKU1Rlc3RET01KSVQ6OmluZm8oKSwgRE9NSklUOjpJRExS
ZXN1bHRUeXBlRmlsdGVyPElETExvbmc+KQogewogfQogCkBAIC0zOTEsNyArNDIyLDcgQEAgc3Rh
dGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdERPTUpJVFVuc2lnbmVkTG9uZ0F0dHJHZXR0ZXIoRXhl
Y1N0YXRlJiBzdGF0ZSwgSlNUZXMKIH0KIAogVGVzdERPTUpJVFVuc2lnbmVkTG9uZ0F0dHJET01K
SVQ6OlRlc3RET01KSVRVbnNpZ25lZExvbmdBdHRyRE9NSklUKCkKLSAgICA6IEpTQzo6RE9NSklU
OjpHZXR0ZXJTZXR0ZXIoanNUZXN0RE9NSklUVW5zaWduZWRMb25nQXR0ciwgbnVsbHB0ciwgSlNU
ZXN0RE9NSklUOjppbmZvKCksIEpTQzo6U3BlY0J5dGVjb2RlTnVtYmVyKQorICAgIDogSlNDOjpE
T01KSVQ6OkdldHRlclNldHRlcihqc1Rlc3RET01KSVRVbnNpZ25lZExvbmdBdHRyLCBudWxscHRy
LCBKU1Rlc3RET01KSVQ6OmluZm8oKSwgRE9NSklUOjpJRExSZXN1bHRUeXBlRmlsdGVyPElETFVu
c2lnbmVkTG9uZz4pCiB7CiB9CiAKQEAgLTQxOCw3ICs0NDksNyBAQCBzdGF0aWMgaW5saW5lIEpT
VmFsdWUganNUZXN0RE9NSklUTG9uZ0xvbmdBdHRyR2V0dGVyKEV4ZWNTdGF0ZSYgc3RhdGUsIEpT
VGVzdERPTQogfQogCiBUZXN0RE9NSklUTG9uZ0xvbmdBdHRyRE9NSklUOjpUZXN0RE9NSklUTG9u
Z0xvbmdBdHRyRE9NSklUKCkKLSAgICA6IEpTQzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIoanNUZXN0
RE9NSklUTG9uZ0xvbmdBdHRyLCBudWxscHRyLCBKU1Rlc3RET01KSVQ6OmluZm8oKSwgSlNDOjpT
cGVjQnl0ZWNvZGVOdW1iZXIpCisgICAgOiBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVyKGpzVGVz
dERPTUpJVExvbmdMb25nQXR0ciwgbnVsbHB0ciwgSlNUZXN0RE9NSklUOjppbmZvKCksIERPTUpJ
VDo6SURMUmVzdWx0VHlwZUZpbHRlcjxJRExMb25nTG9uZz4pCiB7CiB9CiAKQEAgLTQ0NSw3ICs0
NzYsNyBAQCBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0RE9NSklUVW5zaWduZWRMb25nTG9u
Z0F0dHJHZXR0ZXIoRXhlY1N0YXRlJiBzdGF0ZSwgSgogfQogCiBUZXN0RE9NSklUVW5zaWduZWRM
b25nTG9uZ0F0dHJET01KSVQ6OlRlc3RET01KSVRVbnNpZ25lZExvbmdMb25nQXR0ckRPTUpJVCgp
Ci0gICAgOiBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVyKGpzVGVzdERPTUpJVFVuc2lnbmVkTG9u
Z0xvbmdBdHRyLCBudWxscHRyLCBKU1Rlc3RET01KSVQ6OmluZm8oKSwgSlNDOjpTcGVjQnl0ZWNv
ZGVOdW1iZXIpCisgICAgOiBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVyKGpzVGVzdERPTUpJVFVu
c2lnbmVkTG9uZ0xvbmdBdHRyLCBudWxscHRyLCBKU1Rlc3RET01KSVQ6OmluZm8oKSwgRE9NSklU
OjpJRExSZXN1bHRUeXBlRmlsdGVyPElETFVuc2lnbmVkTG9uZ0xvbmc+KQogewogfQogCkBAIC00
NzIsNyArNTAzLDcgQEAgc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdERPTUpJVEZsb2F0QXR0
ckdldHRlcihFeGVjU3RhdGUmIHN0YXRlLCBKU1Rlc3RET01KSVQKIH0KIAogVGVzdERPTUpJVEZs
b2F0QXR0ckRPTUpJVDo6VGVzdERPTUpJVEZsb2F0QXR0ckRPTUpJVCgpCi0gICAgOiBKU0M6OkRP
TUpJVDo6R2V0dGVyU2V0dGVyKGpzVGVzdERPTUpJVEZsb2F0QXR0ciwgbnVsbHB0ciwgSlNUZXN0
RE9NSklUOjppbmZvKCksIEpTQzo6U3BlY0J5dGVjb2RlTnVtYmVyKQorICAgIDogSlNDOjpET01K
SVQ6OkdldHRlclNldHRlcihqc1Rlc3RET01KSVRGbG9hdEF0dHIsIG51bGxwdHIsIEpTVGVzdERP
TUpJVDo6aW5mbygpLCBET01KSVQ6OklETFJlc3VsdFR5cGVGaWx0ZXI8SURMRmxvYXQ+KQogewog
fQogCkBAIC00OTksNyArNTMwLDcgQEAgc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdERPTUpJ
VFVucmVzdHJpY3RlZEZsb2F0QXR0ckdldHRlcihFeGVjU3RhdGUmIHN0YXRlLAogfQogCiBUZXN0
RE9NSklUVW5yZXN0cmljdGVkRmxvYXRBdHRyRE9NSklUOjpUZXN0RE9NSklUVW5yZXN0cmljdGVk
RmxvYXRBdHRyRE9NSklUKCkKLSAgICA6IEpTQzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIoanNUZXN0
RE9NSklUVW5yZXN0cmljdGVkRmxvYXRBdHRyLCBudWxscHRyLCBKU1Rlc3RET01KSVQ6OmluZm8o
KSwgSlNDOjpTcGVjQnl0ZWNvZGVOdW1iZXIpCisgICAgOiBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0
dGVyKGpzVGVzdERPTUpJVFVucmVzdHJpY3RlZEZsb2F0QXR0ciwgbnVsbHB0ciwgSlNUZXN0RE9N
SklUOjppbmZvKCksIERPTUpJVDo6SURMUmVzdWx0VHlwZUZpbHRlcjxJRExVbnJlc3RyaWN0ZWRG
bG9hdD4pCiB7CiB9CiAKQEAgLTUyNiw3ICs1NTcsNyBAQCBzdGF0aWMgaW5saW5lIEpTVmFsdWUg
anNUZXN0RE9NSklURG91YmxlQXR0ckdldHRlcihFeGVjU3RhdGUmIHN0YXRlLCBKU1Rlc3RET01K
SQogfQogCiBUZXN0RE9NSklURG91YmxlQXR0ckRPTUpJVDo6VGVzdERPTUpJVERvdWJsZUF0dHJE
T01KSVQoKQotICAgIDogSlNDOjpET01KSVQ6OkdldHRlclNldHRlcihqc1Rlc3RET01KSVREb3Vi
bGVBdHRyLCBudWxscHRyLCBKU1Rlc3RET01KSVQ6OmluZm8oKSwgSlNDOjpTcGVjQnl0ZWNvZGVO
dW1iZXIpCisgICAgOiBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVyKGpzVGVzdERPTUpJVERvdWJs
ZUF0dHIsIG51bGxwdHIsIEpTVGVzdERPTUpJVDo6aW5mbygpLCBET01KSVQ6OklETFJlc3VsdFR5
cGVGaWx0ZXI8SURMRG91YmxlPikKIHsKIH0KIApAQCAtNTUzLDcgKzU4NCw3IEBAIHN0YXRpYyBp
bmxpbmUgSlNWYWx1ZSBqc1Rlc3RET01KSVRVbnJlc3RyaWN0ZWREb3VibGVBdHRyR2V0dGVyKEV4
ZWNTdGF0ZSYgc3RhdGUsCiB9CiAKIFRlc3RET01KSVRVbnJlc3RyaWN0ZWREb3VibGVBdHRyRE9N
SklUOjpUZXN0RE9NSklUVW5yZXN0cmljdGVkRG91YmxlQXR0ckRPTUpJVCgpCi0gICAgOiBKU0M6
OkRPTUpJVDo6R2V0dGVyU2V0dGVyKGpzVGVzdERPTUpJVFVucmVzdHJpY3RlZERvdWJsZUF0dHIs
IG51bGxwdHIsIEpTVGVzdERPTUpJVDo6aW5mbygpLCBKU0M6OlNwZWNCeXRlY29kZU51bWJlcikK
KyAgICA6IEpTQzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIoanNUZXN0RE9NSklUVW5yZXN0cmljdGVk
RG91YmxlQXR0ciwgbnVsbHB0ciwgSlNUZXN0RE9NSklUOjppbmZvKCksIERPTUpJVDo6SURMUmVz
dWx0VHlwZUZpbHRlcjxJRExVbnJlc3RyaWN0ZWREb3VibGU+KQogewogfQogCkBAIC01ODAsNyAr
NjExLDcgQEAgc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdERPTUpJVERvbVN0cmluZ0F0dHJH
ZXR0ZXIoRXhlY1N0YXRlJiBzdGF0ZSwgSlNUZXN0RE8KIH0KIAogVGVzdERPTUpJVERvbVN0cmlu
Z0F0dHJET01KSVQ6OlRlc3RET01KSVREb21TdHJpbmdBdHRyRE9NSklUKCkKLSAgICA6IEpTQzo6
RE9NSklUOjpHZXR0ZXJTZXR0ZXIoanNUZXN0RE9NSklURG9tU3RyaW5nQXR0ciwgbnVsbHB0ciwg
SlNUZXN0RE9NSklUOjppbmZvKCksIEpTQzo6U3BlY1N0cmluZykKKyAgICA6IEpTQzo6RE9NSklU
OjpHZXR0ZXJTZXR0ZXIoanNUZXN0RE9NSklURG9tU3RyaW5nQXR0ciwgbnVsbHB0ciwgSlNUZXN0
RE9NSklUOjppbmZvKCksIERPTUpJVDo6SURMUmVzdWx0VHlwZUZpbHRlcjxJRExET01TdHJpbmc+
KQogewogfQogCkBAIC02MDcsNyArNjM4LDcgQEAgc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVz
dERPTUpJVEJ5dGVTdHJpbmdBdHRyR2V0dGVyKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVGVzdEQKIH0K
IAogVGVzdERPTUpJVEJ5dGVTdHJpbmdBdHRyRE9NSklUOjpUZXN0RE9NSklUQnl0ZVN0cmluZ0F0
dHJET01KSVQoKQotICAgIDogSlNDOjpET01KSVQ6OkdldHRlclNldHRlcihqc1Rlc3RET01KSVRC
eXRlU3RyaW5nQXR0ciwgbnVsbHB0ciwgSlNUZXN0RE9NSklUOjppbmZvKCksIEpTQzo6U3BlY1N0
cmluZykKKyAgICA6IEpTQzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIoanNUZXN0RE9NSklUQnl0ZVN0
cmluZ0F0dHIsIG51bGxwdHIsIEpTVGVzdERPTUpJVDo6aW5mbygpLCBET01KSVQ6OklETFJlc3Vs
dFR5cGVGaWx0ZXI8SURMQnl0ZVN0cmluZz4pCiB7CiB9CiAKQEAgLTYzNCw3ICs2NjUsNyBAQCBz
dGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0RE9NSklUVXN2U3RyaW5nQXR0ckdldHRlcihFeGVj
U3RhdGUmIHN0YXRlLCBKU1Rlc3RETwogfQogCiBUZXN0RE9NSklUVXN2U3RyaW5nQXR0ckRPTUpJ
VDo6VGVzdERPTUpJVFVzdlN0cmluZ0F0dHJET01KSVQoKQotICAgIDogSlNDOjpET01KSVQ6Okdl
dHRlclNldHRlcihqc1Rlc3RET01KSVRVc3ZTdHJpbmdBdHRyLCBudWxscHRyLCBKU1Rlc3RET01K
SVQ6OmluZm8oKSwgSlNDOjpTcGVjU3RyaW5nKQorICAgIDogSlNDOjpET01KSVQ6OkdldHRlclNl
dHRlcihqc1Rlc3RET01KSVRVc3ZTdHJpbmdBdHRyLCBudWxscHRyLCBKU1Rlc3RET01KSVQ6Omlu
Zm8oKSwgRE9NSklUOjpJRExSZXN1bHRUeXBlRmlsdGVyPElETFVTVlN0cmluZz4pCiB7CiB9CiAK
QEAgLTY2MSw3ICs2OTIsNyBAQCBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0RE9NSklUTm9k
ZUF0dHJHZXR0ZXIoRXhlY1N0YXRlJiBzdGF0ZSwgSlNUZXN0RE9NSklUJgogfQogCiBUZXN0RE9N
SklUTm9kZUF0dHJET01KSVQ6OlRlc3RET01KSVROb2RlQXR0ckRPTUpJVCgpCi0gICAgOiBKU0M6
OkRPTUpJVDo6R2V0dGVyU2V0dGVyKGpzVGVzdERPTUpJVE5vZGVBdHRyLCBudWxscHRyLCBKU1Rl
c3RET01KSVQ6OmluZm8oKSwgU3BlY0hlYXBUb3ApCisgICAgOiBKU0M6OkRPTUpJVDo6R2V0dGVy
U2V0dGVyKGpzVGVzdERPTUpJVE5vZGVBdHRyLCBudWxscHRyLCBKU1Rlc3RET01KSVQ6OmluZm8o
KSwgRE9NSklUOjpJRExSZXN1bHRUeXBlRmlsdGVyPElETEludGVyZmFjZTxOb2RlPj4pCiB7CiB9
CiAKQEAgLTY4OCw3ICs3MTksNyBAQCBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0RE9NSklU
Qm9vbGVhbk51bGxhYmxlQXR0ckdldHRlcihFeGVjU3RhdGUmIHN0YXRlLCBKUwogfQogCiBUZXN0
RE9NSklUQm9vbGVhbk51bGxhYmxlQXR0ckRPTUpJVDo6VGVzdERPTUpJVEJvb2xlYW5OdWxsYWJs
ZUF0dHJET01KSVQoKQotICAgIDogSlNDOjpET01KSVQ6OkdldHRlclNldHRlcihqc1Rlc3RET01K
SVRCb29sZWFuTnVsbGFibGVBdHRyLCBudWxscHRyLCBKU1Rlc3RET01KSVQ6OmluZm8oKSwgKEpT
Qzo6U3BlY0Jvb2xlYW4gfCBKU0M6OlNwZWNPdGhlcikpCisgICAgOiBKU0M6OkRPTUpJVDo6R2V0
dGVyU2V0dGVyKGpzVGVzdERPTUpJVEJvb2xlYW5OdWxsYWJsZUF0dHIsIG51bGxwdHIsIEpTVGVz
dERPTUpJVDo6aW5mbygpLCBET01KSVQ6OklETFJlc3VsdFR5cGVGaWx0ZXI8SURMTnVsbGFibGU8
SURMQm9vbGVhbj4+KQogewogfQogCkBAIC03MTUsNyArNzQ2LDcgQEAgc3RhdGljIGlubGluZSBK
U1ZhbHVlIGpzVGVzdERPTUpJVEJ5dGVOdWxsYWJsZUF0dHJHZXR0ZXIoRXhlY1N0YXRlJiBzdGF0
ZSwgSlNUZXMKIH0KIAogVGVzdERPTUpJVEJ5dGVOdWxsYWJsZUF0dHJET01KSVQ6OlRlc3RET01K
SVRCeXRlTnVsbGFibGVBdHRyRE9NSklUKCkKLSAgICA6IEpTQzo6RE9NSklUOjpHZXR0ZXJTZXR0
ZXIoanNUZXN0RE9NSklUQnl0ZU51bGxhYmxlQXR0ciwgbnVsbHB0ciwgSlNUZXN0RE9NSklUOjpp
bmZvKCksIChKU0M6OlNwZWNJbnQzMk9ubHkgfCBKU0M6OlNwZWNPdGhlcikpCisgICAgOiBKU0M6
OkRPTUpJVDo6R2V0dGVyU2V0dGVyKGpzVGVzdERPTUpJVEJ5dGVOdWxsYWJsZUF0dHIsIG51bGxw
dHIsIEpTVGVzdERPTUpJVDo6aW5mbygpLCBET01KSVQ6OklETFJlc3VsdFR5cGVGaWx0ZXI8SURM
TnVsbGFibGU8SURMQnl0ZT4+KQogewogfQogCkBAIC03NDIsNyArNzczLDcgQEAgc3RhdGljIGlu
bGluZSBKU1ZhbHVlIGpzVGVzdERPTUpJVE9jdGV0TnVsbGFibGVBdHRyR2V0dGVyKEV4ZWNTdGF0
ZSYgc3RhdGUsIEpTVGUKIH0KIAogVGVzdERPTUpJVE9jdGV0TnVsbGFibGVBdHRyRE9NSklUOjpU
ZXN0RE9NSklUT2N0ZXROdWxsYWJsZUF0dHJET01KSVQoKQotICAgIDogSlNDOjpET01KSVQ6Okdl
dHRlclNldHRlcihqc1Rlc3RET01KSVRPY3RldE51bGxhYmxlQXR0ciwgbnVsbHB0ciwgSlNUZXN0
RE9NSklUOjppbmZvKCksIChKU0M6OlNwZWNJbnQzMk9ubHkgfCBKU0M6OlNwZWNPdGhlcikpCisg
ICAgOiBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVyKGpzVGVzdERPTUpJVE9jdGV0TnVsbGFibGVB
dHRyLCBudWxscHRyLCBKU1Rlc3RET01KSVQ6OmluZm8oKSwgRE9NSklUOjpJRExSZXN1bHRUeXBl
RmlsdGVyPElETE51bGxhYmxlPElETE9jdGV0Pj4pCiB7CiB9CiAKQEAgLTc2OSw3ICs4MDAsNyBA
QCBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0RE9NSklUU2hvcnROdWxsYWJsZUF0dHJHZXR0
ZXIoRXhlY1N0YXRlJiBzdGF0ZSwgSlNUZQogfQogCiBUZXN0RE9NSklUU2hvcnROdWxsYWJsZUF0
dHJET01KSVQ6OlRlc3RET01KSVRTaG9ydE51bGxhYmxlQXR0ckRPTUpJVCgpCi0gICAgOiBKU0M6
OkRPTUpJVDo6R2V0dGVyU2V0dGVyKGpzVGVzdERPTUpJVFNob3J0TnVsbGFibGVBdHRyLCBudWxs
cHRyLCBKU1Rlc3RET01KSVQ6OmluZm8oKSwgKEpTQzo6U3BlY0ludDMyT25seSB8IEpTQzo6U3Bl
Y090aGVyKSkKKyAgICA6IEpTQzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIoanNUZXN0RE9NSklUU2hv
cnROdWxsYWJsZUF0dHIsIG51bGxwdHIsIEpTVGVzdERPTUpJVDo6aW5mbygpLCBET01KSVQ6OklE
TFJlc3VsdFR5cGVGaWx0ZXI8SURMTnVsbGFibGU8SURMU2hvcnQ+PikKIHsKIH0KIApAQCAtNzk2
LDcgKzgyNyw3IEBAIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RET01KSVRVbnNpZ25lZFNo
b3J0TnVsbGFibGVBdHRyR2V0dGVyKEV4ZWNTdGF0ZSYgc3RhCiB9CiAKIFRlc3RET01KSVRVbnNp
Z25lZFNob3J0TnVsbGFibGVBdHRyRE9NSklUOjpUZXN0RE9NSklUVW5zaWduZWRTaG9ydE51bGxh
YmxlQXR0ckRPTUpJVCgpCi0gICAgOiBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVyKGpzVGVzdERP
TUpJVFVuc2lnbmVkU2hvcnROdWxsYWJsZUF0dHIsIG51bGxwdHIsIEpTVGVzdERPTUpJVDo6aW5m
bygpLCAoSlNDOjpTcGVjSW50MzJPbmx5IHwgSlNDOjpTcGVjT3RoZXIpKQorICAgIDogSlNDOjpE
T01KSVQ6OkdldHRlclNldHRlcihqc1Rlc3RET01KSVRVbnNpZ25lZFNob3J0TnVsbGFibGVBdHRy
LCBudWxscHRyLCBKU1Rlc3RET01KSVQ6OmluZm8oKSwgRE9NSklUOjpJRExSZXN1bHRUeXBlRmls
dGVyPElETE51bGxhYmxlPElETFVuc2lnbmVkU2hvcnQ+PikKIHsKIH0KIApAQCAtODIzLDcgKzg1
NCw3IEBAIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RET01KSVRMb25nTnVsbGFibGVBdHRy
R2V0dGVyKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVGVzCiB9CiAKIFRlc3RET01KSVRMb25nTnVsbGFi
bGVBdHRyRE9NSklUOjpUZXN0RE9NSklUTG9uZ051bGxhYmxlQXR0ckRPTUpJVCgpCi0gICAgOiBK
U0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVyKGpzVGVzdERPTUpJVExvbmdOdWxsYWJsZUF0dHIsIG51
bGxwdHIsIEpTVGVzdERPTUpJVDo6aW5mbygpLCAoSlNDOjpTcGVjSW50MzJPbmx5IHwgSlNDOjpT
cGVjT3RoZXIpKQorICAgIDogSlNDOjpET01KSVQ6OkdldHRlclNldHRlcihqc1Rlc3RET01KSVRM
b25nTnVsbGFibGVBdHRyLCBudWxscHRyLCBKU1Rlc3RET01KSVQ6OmluZm8oKSwgRE9NSklUOjpJ
RExSZXN1bHRUeXBlRmlsdGVyPElETE51bGxhYmxlPElETExvbmc+PikKIHsKIH0KIApAQCAtODUw
LDcgKzg4MSw3IEBAIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RET01KSVRVbnNpZ25lZExv
bmdOdWxsYWJsZUF0dHJHZXR0ZXIoRXhlY1N0YXRlJiBzdGF0CiB9CiAKIFRlc3RET01KSVRVbnNp
Z25lZExvbmdOdWxsYWJsZUF0dHJET01KSVQ6OlRlc3RET01KSVRVbnNpZ25lZExvbmdOdWxsYWJs
ZUF0dHJET01KSVQoKQotICAgIDogSlNDOjpET01KSVQ6OkdldHRlclNldHRlcihqc1Rlc3RET01K
SVRVbnNpZ25lZExvbmdOdWxsYWJsZUF0dHIsIG51bGxwdHIsIEpTVGVzdERPTUpJVDo6aW5mbygp
LCAoSlNDOjpTcGVjQnl0ZWNvZGVOdW1iZXIgfCBKU0M6OlNwZWNPdGhlcikpCisgICAgOiBKU0M6
OkRPTUpJVDo6R2V0dGVyU2V0dGVyKGpzVGVzdERPTUpJVFVuc2lnbmVkTG9uZ051bGxhYmxlQXR0
ciwgbnVsbHB0ciwgSlNUZXN0RE9NSklUOjppbmZvKCksIERPTUpJVDo6SURMUmVzdWx0VHlwZUZp
bHRlcjxJRExOdWxsYWJsZTxJRExVbnNpZ25lZExvbmc+PikKIHsKIH0KIApAQCAtODc3LDcgKzkw
OCw3IEBAIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RET01KSVRMb25nTG9uZ051bGxhYmxl
QXR0ckdldHRlcihFeGVjU3RhdGUmIHN0YXRlLCBKCiB9CiAKIFRlc3RET01KSVRMb25nTG9uZ051
bGxhYmxlQXR0ckRPTUpJVDo6VGVzdERPTUpJVExvbmdMb25nTnVsbGFibGVBdHRyRE9NSklUKCkK
LSAgICA6IEpTQzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIoanNUZXN0RE9NSklUTG9uZ0xvbmdOdWxs
YWJsZUF0dHIsIG51bGxwdHIsIEpTVGVzdERPTUpJVDo6aW5mbygpLCAoSlNDOjpTcGVjQnl0ZWNv
ZGVOdW1iZXIgfCBKU0M6OlNwZWNPdGhlcikpCisgICAgOiBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0
dGVyKGpzVGVzdERPTUpJVExvbmdMb25nTnVsbGFibGVBdHRyLCBudWxscHRyLCBKU1Rlc3RET01K
SVQ6OmluZm8oKSwgRE9NSklUOjpJRExSZXN1bHRUeXBlRmlsdGVyPElETE51bGxhYmxlPElETExv
bmdMb25nPj4pCiB7CiB9CiAKQEAgLTkwNCw3ICs5MzUsNyBAQCBzdGF0aWMgaW5saW5lIEpTVmFs
dWUganNUZXN0RE9NSklUVW5zaWduZWRMb25nTG9uZ051bGxhYmxlQXR0ckdldHRlcihFeGVjU3Rh
dGUmCiB9CiAKIFRlc3RET01KSVRVbnNpZ25lZExvbmdMb25nTnVsbGFibGVBdHRyRE9NSklUOjpU
ZXN0RE9NSklUVW5zaWduZWRMb25nTG9uZ051bGxhYmxlQXR0ckRPTUpJVCgpCi0gICAgOiBKU0M6
OkRPTUpJVDo6R2V0dGVyU2V0dGVyKGpzVGVzdERPTUpJVFVuc2lnbmVkTG9uZ0xvbmdOdWxsYWJs
ZUF0dHIsIG51bGxwdHIsIEpTVGVzdERPTUpJVDo6aW5mbygpLCAoSlNDOjpTcGVjQnl0ZWNvZGVO
dW1iZXIgfCBKU0M6OlNwZWNPdGhlcikpCisgICAgOiBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVy
KGpzVGVzdERPTUpJVFVuc2lnbmVkTG9uZ0xvbmdOdWxsYWJsZUF0dHIsIG51bGxwdHIsIEpTVGVz
dERPTUpJVDo6aW5mbygpLCBET01KSVQ6OklETFJlc3VsdFR5cGVGaWx0ZXI8SURMTnVsbGFibGU8
SURMVW5zaWduZWRMb25nTG9uZz4+KQogewogfQogCkBAIC05MzEsNyArOTYyLDcgQEAgc3RhdGlj
IGlubGluZSBKU1ZhbHVlIGpzVGVzdERPTUpJVEZsb2F0TnVsbGFibGVBdHRyR2V0dGVyKEV4ZWNT
dGF0ZSYgc3RhdGUsIEpTVGUKIH0KIAogVGVzdERPTUpJVEZsb2F0TnVsbGFibGVBdHRyRE9NSklU
OjpUZXN0RE9NSklURmxvYXROdWxsYWJsZUF0dHJET01KSVQoKQotICAgIDogSlNDOjpET01KSVQ6
OkdldHRlclNldHRlcihqc1Rlc3RET01KSVRGbG9hdE51bGxhYmxlQXR0ciwgbnVsbHB0ciwgSlNU
ZXN0RE9NSklUOjppbmZvKCksIChKU0M6OlNwZWNCeXRlY29kZU51bWJlciB8IEpTQzo6U3BlY090
aGVyKSkKKyAgICA6IEpTQzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIoanNUZXN0RE9NSklURmxvYXRO
dWxsYWJsZUF0dHIsIG51bGxwdHIsIEpTVGVzdERPTUpJVDo6aW5mbygpLCBET01KSVQ6OklETFJl
c3VsdFR5cGVGaWx0ZXI8SURMTnVsbGFibGU8SURMRmxvYXQ+PikKIHsKIH0KIApAQCAtOTU4LDcg
Kzk4OSw3IEBAIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RET01KSVRVbnJlc3RyaWN0ZWRG
bG9hdE51bGxhYmxlQXR0ckdldHRlcihFeGVjU3RhdGUmCiB9CiAKIFRlc3RET01KSVRVbnJlc3Ry
aWN0ZWRGbG9hdE51bGxhYmxlQXR0ckRPTUpJVDo6VGVzdERPTUpJVFVucmVzdHJpY3RlZEZsb2F0
TnVsbGFibGVBdHRyRE9NSklUKCkKLSAgICA6IEpTQzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIoanNU
ZXN0RE9NSklUVW5yZXN0cmljdGVkRmxvYXROdWxsYWJsZUF0dHIsIG51bGxwdHIsIEpTVGVzdERP
TUpJVDo6aW5mbygpLCAoSlNDOjpTcGVjQnl0ZWNvZGVOdW1iZXIgfCBKU0M6OlNwZWNPdGhlcikp
CisgICAgOiBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVyKGpzVGVzdERPTUpJVFVucmVzdHJpY3Rl
ZEZsb2F0TnVsbGFibGVBdHRyLCBudWxscHRyLCBKU1Rlc3RET01KSVQ6OmluZm8oKSwgRE9NSklU
OjpJRExSZXN1bHRUeXBlRmlsdGVyPElETE51bGxhYmxlPElETFVucmVzdHJpY3RlZEZsb2F0Pj4p
CiB7CiB9CiAKQEAgLTk4NSw3ICsxMDE2LDcgQEAgc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVz
dERPTUpJVERvdWJsZU51bGxhYmxlQXR0ckdldHRlcihFeGVjU3RhdGUmIHN0YXRlLCBKU1QKIH0K
IAogVGVzdERPTUpJVERvdWJsZU51bGxhYmxlQXR0ckRPTUpJVDo6VGVzdERPTUpJVERvdWJsZU51
bGxhYmxlQXR0ckRPTUpJVCgpCi0gICAgOiBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVyKGpzVGVz
dERPTUpJVERvdWJsZU51bGxhYmxlQXR0ciwgbnVsbHB0ciwgSlNUZXN0RE9NSklUOjppbmZvKCks
IChKU0M6OlNwZWNCeXRlY29kZU51bWJlciB8IEpTQzo6U3BlY090aGVyKSkKKyAgICA6IEpTQzo6
RE9NSklUOjpHZXR0ZXJTZXR0ZXIoanNUZXN0RE9NSklURG91YmxlTnVsbGFibGVBdHRyLCBudWxs
cHRyLCBKU1Rlc3RET01KSVQ6OmluZm8oKSwgRE9NSklUOjpJRExSZXN1bHRUeXBlRmlsdGVyPElE
TE51bGxhYmxlPElETERvdWJsZT4+KQogewogfQogCkBAIC0xMDEyLDcgKzEwNDMsNyBAQCBzdGF0
aWMgaW5saW5lIEpTVmFsdWUganNUZXN0RE9NSklUVW5yZXN0cmljdGVkRG91YmxlTnVsbGFibGVB
dHRyR2V0dGVyKEV4ZWNTdGF0ZQogfQogCiBUZXN0RE9NSklUVW5yZXN0cmljdGVkRG91YmxlTnVs
bGFibGVBdHRyRE9NSklUOjpUZXN0RE9NSklUVW5yZXN0cmljdGVkRG91YmxlTnVsbGFibGVBdHRy
RE9NSklUKCkKLSAgICA6IEpTQzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIoanNUZXN0RE9NSklUVW5y
ZXN0cmljdGVkRG91YmxlTnVsbGFibGVBdHRyLCBudWxscHRyLCBKU1Rlc3RET01KSVQ6OmluZm8o
KSwgKEpTQzo6U3BlY0J5dGVjb2RlTnVtYmVyIHwgSlNDOjpTcGVjT3RoZXIpKQorICAgIDogSlND
OjpET01KSVQ6OkdldHRlclNldHRlcihqc1Rlc3RET01KSVRVbnJlc3RyaWN0ZWREb3VibGVOdWxs
YWJsZUF0dHIsIG51bGxwdHIsIEpTVGVzdERPTUpJVDo6aW5mbygpLCBET01KSVQ6OklETFJlc3Vs
dFR5cGVGaWx0ZXI8SURMTnVsbGFibGU8SURMVW5yZXN0cmljdGVkRG91YmxlPj4pCiB7CiB9CiAK
QEAgLTEwMzksNyArMTA3MCw3IEBAIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RET01KSVRE
b21TdHJpbmdOdWxsYWJsZUF0dHJHZXR0ZXIoRXhlY1N0YXRlJiBzdGF0ZSwKIH0KIAogVGVzdERP
TUpJVERvbVN0cmluZ051bGxhYmxlQXR0ckRPTUpJVDo6VGVzdERPTUpJVERvbVN0cmluZ051bGxh
YmxlQXR0ckRPTUpJVCgpCi0gICAgOiBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVyKGpzVGVzdERP
TUpJVERvbVN0cmluZ051bGxhYmxlQXR0ciwgbnVsbHB0ciwgSlNUZXN0RE9NSklUOjppbmZvKCks
IChKU0M6OlNwZWNTdHJpbmcgfCBKU0M6OlNwZWNPdGhlcikpCisgICAgOiBKU0M6OkRPTUpJVDo6
R2V0dGVyU2V0dGVyKGpzVGVzdERPTUpJVERvbVN0cmluZ051bGxhYmxlQXR0ciwgbnVsbHB0ciwg
SlNUZXN0RE9NSklUOjppbmZvKCksIERPTUpJVDo6SURMUmVzdWx0VHlwZUZpbHRlcjxJRExOdWxs
YWJsZTxJRExET01TdHJpbmc+PikKIHsKIH0KIApAQCAtMTA2Niw3ICsxMDk3LDcgQEAgc3RhdGlj
IGlubGluZSBKU1ZhbHVlIGpzVGVzdERPTUpJVEJ5dGVTdHJpbmdOdWxsYWJsZUF0dHJHZXR0ZXIo
RXhlY1N0YXRlJiBzdGF0ZSwKIH0KIAogVGVzdERPTUpJVEJ5dGVTdHJpbmdOdWxsYWJsZUF0dHJE
T01KSVQ6OlRlc3RET01KSVRCeXRlU3RyaW5nTnVsbGFibGVBdHRyRE9NSklUKCkKLSAgICA6IEpT
Qzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIoanNUZXN0RE9NSklUQnl0ZVN0cmluZ051bGxhYmxlQXR0
ciwgbnVsbHB0ciwgSlNUZXN0RE9NSklUOjppbmZvKCksIChKU0M6OlNwZWNTdHJpbmcgfCBKU0M6
OlNwZWNPdGhlcikpCisgICAgOiBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVyKGpzVGVzdERPTUpJ
VEJ5dGVTdHJpbmdOdWxsYWJsZUF0dHIsIG51bGxwdHIsIEpTVGVzdERPTUpJVDo6aW5mbygpLCBE
T01KSVQ6OklETFJlc3VsdFR5cGVGaWx0ZXI8SURMTnVsbGFibGU8SURMQnl0ZVN0cmluZz4+KQog
ewogfQogCkBAIC0xMDkzLDcgKzExMjQsNyBAQCBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0
RE9NSklUVXN2U3RyaW5nTnVsbGFibGVBdHRyR2V0dGVyKEV4ZWNTdGF0ZSYgc3RhdGUsCiB9CiAK
IFRlc3RET01KSVRVc3ZTdHJpbmdOdWxsYWJsZUF0dHJET01KSVQ6OlRlc3RET01KSVRVc3ZTdHJp
bmdOdWxsYWJsZUF0dHJET01KSVQoKQotICAgIDogSlNDOjpET01KSVQ6OkdldHRlclNldHRlcihq
c1Rlc3RET01KSVRVc3ZTdHJpbmdOdWxsYWJsZUF0dHIsIG51bGxwdHIsIEpTVGVzdERPTUpJVDo6
aW5mbygpLCAoSlNDOjpTcGVjU3RyaW5nIHwgSlNDOjpTcGVjT3RoZXIpKQorICAgIDogSlNDOjpE
T01KSVQ6OkdldHRlclNldHRlcihqc1Rlc3RET01KSVRVc3ZTdHJpbmdOdWxsYWJsZUF0dHIsIG51
bGxwdHIsIEpTVGVzdERPTUpJVDo6aW5mbygpLCBET01KSVQ6OklETFJlc3VsdFR5cGVGaWx0ZXI8
SURMTnVsbGFibGU8SURMVVNWU3RyaW5nPj4pCiB7CiB9CiAKQEAgLTExMjAsNyArMTE1MSw3IEBA
IHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RET01KSVROb2RlTnVsbGFibGVBdHRyR2V0dGVy
KEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVGVzCiB9CiAKIFRlc3RET01KSVROb2RlTnVsbGFibGVBdHRy
RE9NSklUOjpUZXN0RE9NSklUTm9kZU51bGxhYmxlQXR0ckRPTUpJVCgpCi0gICAgOiBKU0M6OkRP
TUpJVDo6R2V0dGVyU2V0dGVyKGpzVGVzdERPTUpJVE5vZGVOdWxsYWJsZUF0dHIsIG51bGxwdHIs
IEpTVGVzdERPTUpJVDo6aW5mbygpLCBTcGVjSGVhcFRvcCkKKyAgICA6IEpTQzo6RE9NSklUOjpH
ZXR0ZXJTZXR0ZXIoanNUZXN0RE9NSklUTm9kZU51bGxhYmxlQXR0ciwgbnVsbHB0ciwgSlNUZXN0
RE9NSklUOjppbmZvKCksIERPTUpJVDo6SURMUmVzdWx0VHlwZUZpbHRlcjxJRExOdWxsYWJsZTxJ
RExJbnRlcmZhY2U8Tm9kZT4+PikKIHsKIH0KIApAQCAtMTE1OSw2ICsxMTkwLDEwMyBAQCBKU1Zh
bHVlIEpTVGVzdERPTUpJVDo6Z2V0Q29uc3RydWN0b3IoVk0mIHZtLCBjb25zdCBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0KQogICAgIHJldHVybiBnZXRET01Db25zdHJ1Y3RvcjxKU1Rlc3RE
T01KSVRDb25zdHJ1Y3Rvcj4odm0sICpqc0Nhc3Q8Y29uc3QgSlNET01HbG9iYWxPYmplY3QqPihn
bG9iYWxPYmplY3QpKTsKIH0KIAorc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpz
VGVzdERPTUpJVFByb3RvdHlwZUZ1bmN0aW9uR2V0QXR0cmlidXRlQ2FsbGVyKEpTQzo6RXhlY1N0
YXRlKiwgSlNUZXN0RE9NSklUKiwgSlNDOjpUaHJvd1Njb3BlJik7CisKK0VuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwganNUZXN0RE9NSklUUHJvdG90eXBlRnVuY3Rpb25HZXRBdHRyaWJ1dGUo
RXhlY1N0YXRlKiBzdGF0ZSkKK3sKKyAgICByZXR1cm4gQmluZGluZ0NhbGxlcjxKU1Rlc3RET01K
SVQ+OjpjYWxsT3BlcmF0aW9uPGpzVGVzdERPTUpJVFByb3RvdHlwZUZ1bmN0aW9uR2V0QXR0cmli
dXRlQ2FsbGVyPihzdGF0ZSwgImdldEF0dHJpYnV0ZSIpOworfQorCitzdGF0aWMgaW5saW5lIEpT
Qzo6RW5jb2RlZEpTVmFsdWUganNUZXN0RE9NSklUUHJvdG90eXBlRnVuY3Rpb25HZXRBdHRyaWJ1
dGVDYWxsZXIoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCBKU1Rlc3RET01KSVQqIGNhc3RlZFRoaXMs
IEpTQzo6VGhyb3dTY29wZSYgdGhyb3dTY29wZSkKK3sKKyAgICBVTlVTRURfUEFSQU0oc3RhdGUp
OworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVk
VGhpcy0+d3JhcHBlZCgpOworICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+YXJndW1lbnRDb3VudCgp
IDwgMSkpCisgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUsIGNy
ZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CisgICAgYXV0byBuYW1lID0gY29u
dmVydDxJRExET01TdHJpbmc+KCpzdGF0ZSwgc3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50KDApLCBT
dHJpbmdDb252ZXJzaW9uQ29uZmlndXJhdGlvbjo6Tm9ybWFsKTsKKyAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOworICAgIEpTVmFsdWUgcmVzdWx0
ID0gdG9KUzxJRExOdWxsYWJsZTxJRExET01TdHJpbmc+Pigqc3RhdGUsIGltcGwuZ2V0QXR0cmli
dXRlKFdURk1vdmUobmFtZSkpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7
Cit9CisKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCB1bnNhZmVKc1Rlc3RET01K
SVRQcm90b3R5cGVGdW5jdGlvbkdldEF0dHJpYnV0ZShKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIEpT
VGVzdERPTUpJVCogY2FzdGVkVGhpcywgRE9NSklUOjpJRExKU0FyZ3VtZW50VHlwZTxJRExET01T
dHJpbmc+IGVuY29kZWROYW1lKQoreworICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CisgICAgVk0m
IHZtID0gc3RhdGUtPnZtKCk7CisgICAgSlNDOjpOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2Vy
KCZ2bSwgc3RhdGUpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CisgICAgYXV0byBu
YW1lID0gRE9NSklUOjpEaXJlY3RDb252ZXJ0ZXI8SURMRE9NU3RyaW5nPjo6ZGlyZWN0Q29udmVy
dDxTdHJpbmdDb252ZXJzaW9uQ29uZmlndXJhdGlvbjo6Tm9ybWFsPigqc3RhdGUsIGVuY29kZWRO
YW1lKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVl
KCkpOworICAgIEpTVmFsdWUgcmVzdWx0ID0gdG9KUzxJRExOdWxsYWJsZTxJRExET01TdHJpbmc+
Pigqc3RhdGUsIGltcGwuZ2V0QXR0cmlidXRlKFdURk1vdmUobmFtZSkpKTsKKyAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7Cit9CisKK3N0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVk
SlNWYWx1ZSBqc1Rlc3RET01KSVRQcm90b3R5cGVGdW5jdGlvbkl0ZW1DYWxsZXIoSlNDOjpFeGVj
U3RhdGUqLCBKU1Rlc3RET01KSVQqLCBKU0M6OlRocm93U2NvcGUmKTsKKworRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RET01KSVRQcm90b3R5cGVGdW5jdGlvbkl0ZW0oRXhlY1N0
YXRlKiBzdGF0ZSkKK3sKKyAgICByZXR1cm4gQmluZGluZ0NhbGxlcjxKU1Rlc3RET01KSVQ+Ojpj
YWxsT3BlcmF0aW9uPGpzVGVzdERPTUpJVFByb3RvdHlwZUZ1bmN0aW9uSXRlbUNhbGxlcj4oc3Rh
dGUsICJpdGVtIik7Cit9CisKK3N0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rl
c3RET01KSVRQcm90b3R5cGVGdW5jdGlvbkl0ZW1DYWxsZXIoSlNDOjpFeGVjU3RhdGUqIHN0YXRl
LCBKU1Rlc3RET01KSVQqIGNhc3RlZFRoaXMsIEpTQzo6VGhyb3dTY29wZSYgdGhyb3dTY29wZSkK
K3sKKyAgICBVTlVTRURfUEFSQU0oc3RhdGUpOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3Bl
KTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOworICAgIGlmIChVTkxJ
S0VMWShzdGF0ZS0+YXJndW1lbnRDb3VudCgpIDwgMikpCisgICAgICAgIHJldHVybiB0aHJvd1ZN
RXJyb3Ioc3RhdGUsIHRocm93U2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0
YXRlKSk7CisgICAgYXV0byB4ID0gY29udmVydDxJRExVbnNpZ25lZFNob3J0Pigqc3RhdGUsIHN0
YXRlLT51bmNoZWNrZWRBcmd1bWVudCgwKSwgSW50ZWdlckNvbnZlcnNpb25Db25maWd1cmF0aW9u
OjpOb3JtYWwpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpT
VmFsdWUoKSk7CisgICAgYXV0byB5ID0gY29udmVydDxJRExVbnNpZ25lZFNob3J0Pigqc3RhdGUs
IHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgxKSwgSW50ZWdlckNvbnZlcnNpb25Db25maWd1cmF0
aW9uOjpOb3JtYWwpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2Rl
ZEpTVmFsdWUoKSk7CisgICAgSlNWYWx1ZSByZXN1bHQgPSB0b0pTPElETERPTVN0cmluZz4oKnN0
YXRlLCBpbXBsLml0ZW0oV1RGTW92ZSh4KSwgV1RGTW92ZSh5KSkpOworICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUocmVzdWx0KTsKK30KKworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIHVuc2FmZUpzVGVzdERPTUpJVFByb3RvdHlwZUZ1bmN0aW9uSXRlbShKU0M6OkV4ZWNTdGF0
ZSogc3RhdGUsIEpTVGVzdERPTUpJVCogY2FzdGVkVGhpcywgRE9NSklUOjpJRExKU0FyZ3VtZW50
VHlwZTxJRExVbnNpZ25lZFNob3J0PiBlbmNvZGVkWCwgRE9NSklUOjpJRExKU0FyZ3VtZW50VHlw
ZTxJRExVbnNpZ25lZFNob3J0PiBlbmNvZGVkWSkKK3sKKyAgICBVTlVTRURfUEFSQU0oc3RhdGUp
OworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIEpTQzo6TmF0aXZlQ2FsbEZyYW1lVHJh
Y2VyIHRyYWNlcigmdm0sIHN0YXRlKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwor
ICAgIGF1dG8geCA9IERPTUpJVDo6RGlyZWN0Q29udmVydGVyPElETFVuc2lnbmVkU2hvcnQ+Ojpk
aXJlY3RDb252ZXJ0PEludGVnZXJDb252ZXJzaW9uQ29uZmlndXJhdGlvbjo6Tm9ybWFsPigqc3Rh
dGUsIGVuY29kZWRYKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29k
ZWRKU1ZhbHVlKCkpOworICAgIGF1dG8geSA9IERPTUpJVDo6RGlyZWN0Q29udmVydGVyPElETFVu
c2lnbmVkU2hvcnQ+OjpkaXJlY3RDb252ZXJ0PEludGVnZXJDb252ZXJzaW9uQ29uZmlndXJhdGlv
bjo6Tm9ybWFsPigqc3RhdGUsIGVuY29kZWRZKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRo
cm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOworICAgIEpTVmFsdWUgcmVzdWx0ID0gdG9KUzxJ
RExET01TdHJpbmc+KCpzdGF0ZSwgaW1wbC5pdGVtKFdURk1vdmUoeCksIFdURk1vdmUoeSkpKTsK
KyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7Cit9CisKK3N0YXRpYyBpbmxpbmUg
SlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RET01KSVRQcm90b3R5cGVGdW5jdGlvbkhhc0F0dHJp
YnV0ZUNhbGxlcihKU0M6OkV4ZWNTdGF0ZSosIEpTVGVzdERPTUpJVCosIEpTQzo6VGhyb3dTY29w
ZSYpOworCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdERPTUpJVFByb3RvdHlw
ZUZ1bmN0aW9uSGFzQXR0cmlidXRlKEV4ZWNTdGF0ZSogc3RhdGUpCit7CisgICAgcmV0dXJuIEJp
bmRpbmdDYWxsZXI8SlNUZXN0RE9NSklUPjo6Y2FsbE9wZXJhdGlvbjxqc1Rlc3RET01KSVRQcm90
b3R5cGVGdW5jdGlvbkhhc0F0dHJpYnV0ZUNhbGxlcj4oc3RhdGUsICJoYXNBdHRyaWJ1dGUiKTsK
K30KKworc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdERPTUpJVFByb3Rv
dHlwZUZ1bmN0aW9uSGFzQXR0cmlidXRlQ2FsbGVyKEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgSlNU
ZXN0RE9NSklUKiBjYXN0ZWRUaGlzLCBKU0M6OlRocm93U2NvcGUmIHRocm93U2NvcGUpCit7Cisg
ICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7Cisg
ICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKKyAgICBKU1ZhbHVlIHJlc3Vs
dCA9IHRvSlM8SURMQm9vbGVhbj4oaW1wbC5oYXNBdHRyaWJ1dGUoKSk7CisgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShyZXN1bHQpOworfQorCitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgdW5zYWZlSnNUZXN0RE9NSklUUHJvdG90eXBlRnVuY3Rpb25IYXNBdHRyaWJ1dGUoSlND
OjpFeGVjU3RhdGUqIHN0YXRlLCBKU1Rlc3RET01KSVQqIGNhc3RlZFRoaXMpCit7CisgICAgVU5V
U0VEX1BBUkFNKHN0YXRlKTsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBKU0M6Ok5h
dGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIoJnZtLCBzdGF0ZSk7CisgICAgYXV0byB0aHJvd1Nj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRo
aXMtPndyYXBwZWQoKTsKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IHRvSlM8SURMQm9vbGVhbj4oaW1w
bC5oYXNBdHRyaWJ1dGUoKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwor
fQorCiB2b2lkIEpTVGVzdERPTUpJVDo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RW
aXNpdG9yJiB2aXNpdG9yKQogewogICAgIGF1dG8qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNUZXN0
RE9NSklUKj4oY2VsbCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvVGVzdERPTUpJVC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvVGVzdERPTUpJVC5pZGwKaW5kZXggYmU3ZWQwNGZmNjNkZTY4NmJjODc2NDgyODJiNmFh
ZjY0YzI3NzNlNy4uNmM5YTY2OGFjNzQwM2NkOGQ0NTEzMTgzNWI0ZTU3ZWE1YmI3NzQ0NCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RET01KSVQu
aWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0RE9NSklU
LmlkbApAQCAtNjMsNCArNjMsOCBAQCBpbnRlcmZhY2UgVGVzdERPTUpJVCA6IE5vZGUgewogICAg
IFtET01KSVRdIHJlYWRvbmx5IGF0dHJpYnV0ZSBCeXRlU3RyaW5nPyBieXRlU3RyaW5nTnVsbGFi
bGVBdHRyOwogICAgIFtET01KSVRdIHJlYWRvbmx5IGF0dHJpYnV0ZSBVU1ZTdHJpbmc/IHVzdlN0
cmluZ051bGxhYmxlQXR0cjsKICAgICBbRE9NSklUXSByZWFkb25seSBhdHRyaWJ1dGUgTm9kZT8g
bm9kZU51bGxhYmxlQXR0cjsKKworICAgIFtET01KSVQ9UmVhZERPTV0gRE9NU3RyaW5nPyBnZXRB
dHRyaWJ1dGUoRE9NU3RyaW5nIG5hbWUpOworICAgIFtET01KSVQ9UmVhZERPTV0gRE9NU3RyaW5n
IGl0ZW0odW5zaWduZWQgc2hvcnQgeCwgdW5zaWduZWQgc2hvcnQgeSk7CisgICAgW0RPTUpJVD1S
ZWFkRE9NXSBib29sZWFuIGhhc0F0dHJpYnV0ZSgpOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9FbGVtZW50LmlkbCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmlkbApp
bmRleCA3MDU2MTczOGI5NzQ5YThkNzRhMGYxN2NhNjNhN2Y4ZmYxOTVlMWM2Li44MTk3NTE1NzU5
MTcwYjQxYjQzMzFkZmVmODYxZDEzZjEzOWNlZDUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vRWxlbWVudC5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaWRsCkBA
IC0yNiwyMCArMjYsMjAgQEAKIF0gaW50ZXJmYWNlIEVsZW1lbnQgOiBOb2RlIHsKICAgICByZWFk
b25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nPyB0YWdOYW1lOwogCi0gICAgRE9NU3RyaW5nPyBnZXRB
dHRyaWJ1dGUoRE9NU3RyaW5nIG5hbWUpOworICAgIFtET01KSVQ9UmVhZERPTV0gRE9NU3RyaW5n
PyBnZXRBdHRyaWJ1dGUoRE9NU3RyaW5nIG5hbWUpOwogCiAgICAgW0NFUmVhY3Rpb25zLCBNYXlU
aHJvd0V4Y2VwdGlvbl0gdm9pZCBzZXRBdHRyaWJ1dGUoRE9NU3RyaW5nIG5hbWUsIERPTVN0cmlu
ZyB2YWx1ZSk7CiAKICAgICBbQ0VSZWFjdGlvbnNdIHZvaWQgcmVtb3ZlQXR0cmlidXRlKERPTVN0
cmluZyBuYW1lKTsKLSAgICBBdHRyPyBnZXRBdHRyaWJ1dGVOb2RlKERPTVN0cmluZyBuYW1lKTsK
KyAgICBbRE9NSklUPVJlYWRET01dIEF0dHI/IGdldEF0dHJpYnV0ZU5vZGUoRE9NU3RyaW5nIG5h
bWUpOwogCiAgICAgW0NFUmVhY3Rpb25zLCBNYXlUaHJvd0V4Y2VwdGlvbl0gQXR0cj8gc2V0QXR0
cmlidXRlTm9kZShBdHRyIG5ld0F0dHIpOwogICAgIFtDRVJlYWN0aW9ucywgTWF5VGhyb3dFeGNl
cHRpb25dIEF0dHIgcmVtb3ZlQXR0cmlidXRlTm9kZShBdHRyIG9sZEF0dHIpOwogCi0gICAgSFRN
TENvbGxlY3Rpb24gZ2V0RWxlbWVudHNCeVRhZ05hbWUoRE9NU3RyaW5nIG5hbWUpOworICAgIFtE
T01KSVQ9UmVhZERPTV0gSFRNTENvbGxlY3Rpb24gZ2V0RWxlbWVudHNCeVRhZ05hbWUoRE9NU3Ry
aW5nIG5hbWUpOwogCiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIE5hbWVkTm9kZU1hcCBhdHRyaWJ1
dGVzOwotICAgIGJvb2xlYW4gaGFzQXR0cmlidXRlcygpOworICAgIFtET01KSVQ9UmVhZERPTV0g
Ym9vbGVhbiBoYXNBdHRyaWJ1dGVzKCk7CiAKICAgICBET01TdHJpbmc/IGdldEF0dHJpYnV0ZU5T
KERPTVN0cmluZz8gbmFtZXNwYWNlVVJJLCBET01TdHJpbmcgbG9jYWxOYW1lKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZG9taml0L0RPTUpJVEFic3RyYWN0SGVhcFJlcG9zaXRvcnku
Y3BwIGIvU291cmNlL1dlYkNvcmUvZG9taml0L0RPTUpJVEFic3RyYWN0SGVhcFJlcG9zaXRvcnku
Y3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4M2ZiYTg5NzEzYjg2NjNkNGQ4ZjI3
ZWRjYmY3NGFmZTYzMTgyZDMxLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbWppdC9ET01KSVRBYnN0cmFjdEhlYXBSZXBvc2l0
b3J5LmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDcwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVk
ZSAiRE9NSklUQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5oIgotCi0jaW5jbHVkZSA8ZG9taml0L0RP
TUpJVEFic3RyYWN0SGVhcC5oPgotI2luY2x1ZGUgPHd0Zi9EYXRhTG9nLmg+Ci0jaW5jbHVkZSA8
d3RmL05ldmVyRGVzdHJveWVkLmg+Ci0KLSNpZiBFTkFCTEUoSklUKQotCi1uYW1lc3BhY2UgV2Vi
Q29yZSB7IG5hbWVzcGFjZSBET01KSVQgewotCi1zdGF0aWMgY29uc3QgYm9vbCB2ZXJib3NlID0g
ZmFsc2U7Ci0KLUFic3RyYWN0SGVhcFJlcG9zaXRvcnk6OkFic3RyYWN0SGVhcFJlcG9zaXRvcnko
KQotewotICAgIEpTQzo6RE9NSklUOjpBYnN0cmFjdEhlYXAgRE9NSGVhcCgiRE9NIik7Ci0jZGVm
aW5lIERPTUpJVF9ERUZJTkVfSEVBUChuYW1lLCBwYXJlbnQpIEpTQzo6RE9NSklUOjpBYnN0cmFj
dEhlYXAgbmFtZSMjSGVhcCgjbmFtZSk7Ci0gICAgRE9NSklUX0FCU1RSQUNUX0hFQVBfTElTVChE
T01KSVRfREVGSU5FX0hFQVApCi0jdW5kZWYgRE9NSklUX0RFRklORV9IRUFQCi0KLSNkZWZpbmUg
RE9NSklUX0lOSVRJQUxJWkVfSEVBUChuYW1lLCBwYXJlbnQpIG5hbWUjI0hlYXAuc2V0UGFyZW50
KCZwYXJlbnQjI0hlYXApOwotICAgIERPTUpJVF9BQlNUUkFDVF9IRUFQX0xJU1QoRE9NSklUX0lO
SVRJQUxJWkVfSEVBUCkKLSN1bmRlZiBET01KSVRfSU5JVElBTElaRV9IRUFQCi0KLSAgICBET01I
ZWFwLmNvbXB1dGUoMCk7Ci0KLSNkZWZpbmUgRE9NSklUX0lOSVRJQUxJWkVfTUVNQkVSKG5hbWUs
IHBhcmVudCkgbmFtZSA9IG5hbWUjI0hlYXAucmFuZ2UoKTsKLSAgICBET01KSVRfQUJTVFJBQ1Rf
SEVBUF9MSVNUKERPTUpJVF9JTklUSUFMSVpFX01FTUJFUikKLSN1bmRlZiBET01KSVRfSU5JVElB
TElaRV9NRU1CRVIKLQotICAgIGlmICh2ZXJib3NlKSB7Ci0gICAgICAgIGRhdGFMb2coIkRPTUpJ
VCBIZWFwIFJlcG9zaXRvcnk6XG4iKTsKLSAgICAgICAgRE9NSGVhcC5kZWVwRHVtcChXVEY6OmRh
dGFGaWxlKCkpOwotICAgIH0KLX0KLQotY29uc3QgQWJzdHJhY3RIZWFwUmVwb3NpdG9yeSYgQWJz
dHJhY3RIZWFwUmVwb3NpdG9yeTo6c2hhcmVkKCkKLXsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95
ZWQ8QWJzdHJhY3RIZWFwUmVwb3NpdG9yeT4gcmVwb3NpdG9yeTsKLSAgICByZXR1cm4gcmVwb3Np
dG9yeS5nZXQoKTsKLX0KLQotfSB9Ci0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZG9taml0L0RPTUpJVEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaCBiL1NvdXJjZS9XZWJDb3Jl
L2RvbWppdC9ET01KSVRBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmgKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDgxOTBhMWE5NGJiYzc5ZGU1ZjJlM2JlZDA5OTgzNDc5ZmE0YmQ2NTYuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNv
cmUvZG9taml0L0RPTUpJVEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaAorKysgL2Rldi9udWxsCkBA
IC0xLDY2ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUg
bWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0g
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAq
LwotCi0jcHJhZ21hIG9uY2UKLQotI2luY2x1ZGUgPGRvbWppdC9ET01KSVRIZWFwUmFuZ2UuaD4K
LSNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KLSNpbmNsdWRlIDx3dGYvTm9uY29weWFi
bGUuaD4KLQotI2lmIEVOQUJMRShKSVQpCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsgbmFtZXNwYWNl
IERPTUpJVCB7Ci0KLS8vIERlc2NyaWJlIHlvdXIgYWJzdHJhY3QgaGVhcCBoaWVyYXJjaHkgaGVy
ZS4KLS8vIFYoQWJzdHJhY3RIZWFwTmFtZSwgUGFyZW50KQotI2RlZmluZSBET01KSVRfQUJTVFJB
Q1RfSEVBUF9MSVNUKFYpIFwKLSAgICBWKE5vZGUsIERPTSkgXAotICAgIFYoTm9kZV9maXJzdENo
aWxkLCBOb2RlKSBcCi0gICAgVihOb2RlX2xhc3RDaGlsZCwgTm9kZSkgXAotICAgIFYoTm9kZV9w
YXJlbnROb2RlLCBOb2RlKSBcCi0gICAgVihOb2RlX25leHRTaWJsaW5nLCBOb2RlKSBcCi0gICAg
VihOb2RlX3ByZXZpb3VzU2libGluZywgTm9kZSkgXAotICAgIFYoTm9kZV9vd25lckRvY3VtZW50
LCBOb2RlKSBcCi0gICAgVihEb2N1bWVudCwgRE9NKSBcCi0gICAgVihEb2N1bWVudF9kb2N1bWVu
dEVsZW1lbnQsIERvY3VtZW50KSBcCi0KLQotY2xhc3MgQWJzdHJhY3RIZWFwUmVwb3NpdG9yeSB7
Ci0gICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQWJzdHJhY3RIZWFwUmVwb3NpdG9yeSk7Ci1wdWJs
aWM6Ci0gICAgc3RhdGljIGNvbnN0IEFic3RyYWN0SGVhcFJlcG9zaXRvcnkmIHNoYXJlZCgpOwot
Ci0gICAgSlNDOjpET01KSVQ6OkhlYXBSYW5nZSBET007Ci0KLSNkZWZpbmUgRE9NSklUX0RFRklO
RV9NRU1CRVIobmFtZSwgcGFyZW50KSBKU0M6OkRPTUpJVDo6SGVhcFJhbmdlIG5hbWU7Ci0gICAg
RE9NSklUX0FCU1RSQUNUX0hFQVBfTElTVChET01KSVRfREVGSU5FX01FTUJFUikKLSN1bmRlZiBE
T01KSVRfREVGSU5FX01FTUJFUgotCi0gICAgQWJzdHJhY3RIZWFwUmVwb3NpdG9yeSgpOwotfTsK
LQotfSB9Ci0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9taml0L0RPTUpJ
VEFic3RyYWN0SGVhcFJlcG9zaXRvcnkueWFtbCBiL1NvdXJjZS9XZWJDb3JlL2RvbWppdC9ET01K
SVRBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LnlhbWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTJjNTg0NWUwNzg2NzBk
ZGRhYzk3NzI5OTljY2I4ZWE3ZDAxYmRmMwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2RvbWppdC9ET01KSVRBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LnlhbWwKQEAgLTAsMCArMSwx
MSBAQAorRE9NOgorICAgIFRyZWU6CisgICAgICAgIE5vZGU6CisgICAgICAgICAgICAtIE5vZGVf
Zmlyc3RDaGlsZAorICAgICAgICAgICAgLSBOb2RlX2xhc3RDaGlsZAorICAgICAgICAgICAgLSBO
b2RlX3BhcmVudE5vZGUKKyAgICAgICAgICAgIC0gTm9kZV9uZXh0U2libGluZworICAgICAgICAg
ICAgLSBOb2RlX3ByZXZpb3VzU2libGluZworICAgICAgICAgICAgLSBOb2RlX293bmVyRG9jdW1l
bnQKKyAgICAgICAgRG9jdW1lbnQ6CisgICAgICAgICAgICAtIERvY3VtZW50X2RvY3VtZW50RWxl
bWVudApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9taml0L0RPTUpJVElETENvbnZlcnQu
aCBiL1NvdXJjZS9XZWJDb3JlL2RvbWppdC9ET01KSVRJRExDb252ZXJ0LmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NWUwMGFiZmNjYjg3NmRlYTE4MzJmMWMyMGFlZTNlZDc4YjEzNjg0OQotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2RvbWppdC9ET01KSVRJRExDb252ZXJ0LmgKQEAgLTAsMCArMSw0
OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiSURMVHlwZXMuaCIK
KyNpbmNsdWRlIDxieXRlY29kZS9TcGVjdWxhdGVkVHlwZS5oPgorI2luY2x1ZGUgPGRvbWppdC9E
T01KSVRTaWduYXR1cmUuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeyBuYW1lc3BhY2UgRE9NSklU
IHsKKwordGVtcGxhdGU8dHlwZW5hbWUgSURMVHlwZT4KK3N0cnVjdCBEaXJlY3RDb252ZXJ0ZXI7
CisKK3RlbXBsYXRlPD4KK3N0cnVjdCBEaXJlY3RDb252ZXJ0ZXI8SURMRE9NU3RyaW5nPiB7Cisg
ICAgdGVtcGxhdGU8U3RyaW5nQ29udmVyc2lvbkNvbmZpZ3VyYXRpb24+CisgICAgc3RhdGljIFN0
cmluZyBkaXJlY3RDb252ZXJ0KEpTQzo6RXhlY1N0YXRlJiwgSlNDOjpKU1N0cmluZyopOworfTsK
KwordGVtcGxhdGU8PgoraW5saW5lIFN0cmluZyBEaXJlY3RDb252ZXJ0ZXI8SURMRE9NU3RyaW5n
Pjo6ZGlyZWN0Q29udmVydDxTdHJpbmdDb252ZXJzaW9uQ29uZmlndXJhdGlvbjo6Tm9ybWFsPihK
U0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIEpTQzo6SlNTdHJpbmcqIHN0cmluZykKK3sKKyAgICByZXR1
cm4gc3RyaW5nLT52YWx1ZSgmc3RhdGUpOworfQorCit9IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2RvbWppdC9ET01KSVRJRExUeXBlLmggYi9Tb3VyY2UvV2ViQ29yZS9kb21qaXQvRE9N
SklUSURMVHlwZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY4OTFmYmM1MGVmNGMyZDc2NTRkOGU1ZDJiYzhkZWFl
OTc2ZGYxYWMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb21qaXQvRE9NSklU
SURMVHlwZS5oCkBAIC0wLDAgKzEsNDcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKwor
I2luY2x1ZGUgIklETFR5cGVzLmgiCisjaW5jbHVkZSA8Ynl0ZWNvZGUvU3BlY3VsYXRlZFR5cGUu
aD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeyBuYW1lc3BhY2UgRE9NSklUIHsKKwordGVtcGxhdGU8
dHlwZW5hbWUgSURMVHlwZT4KK3N0cnVjdCBJRExKU0FyZ3VtZW50VHlwZVNlbGVjdDsKKwordGVt
cGxhdGU8PiBzdHJ1Y3QgSURMSlNBcmd1bWVudFR5cGVTZWxlY3Q8SURMQm9vbGVhbj4geyB0eXBl
ZGVmIGJvb2wgdHlwZTsgfTsKK3RlbXBsYXRlPD4gc3RydWN0IElETEpTQXJndW1lbnRUeXBlU2Vs
ZWN0PElETEJ5dGU+IHsgdHlwZWRlZiBpbnQzMl90IHR5cGU7IH07Cit0ZW1wbGF0ZTw+IHN0cnVj
dCBJRExKU0FyZ3VtZW50VHlwZVNlbGVjdDxJRExPY3RldD4geyB0eXBlZGVmIGludDMyX3QgdHlw
ZTsgfTsKK3RlbXBsYXRlPD4gc3RydWN0IElETEpTQXJndW1lbnRUeXBlU2VsZWN0PElETFNob3J0
PiB7IHR5cGVkZWYgaW50MzJfdCB0eXBlOyB9OwordGVtcGxhdGU8PiBzdHJ1Y3QgSURMSlNBcmd1
bWVudFR5cGVTZWxlY3Q8SURMVW5zaWduZWRTaG9ydD4geyB0eXBlZGVmIGludDMyX3QgdHlwZTsg
fTsKK3RlbXBsYXRlPD4gc3RydWN0IElETEpTQXJndW1lbnRUeXBlU2VsZWN0PElETExvbmc+IHsg
dHlwZWRlZiBpbnQzMl90IHR5cGU7IH07Cit0ZW1wbGF0ZTw+IHN0cnVjdCBJRExKU0FyZ3VtZW50
VHlwZVNlbGVjdDxJRExET01TdHJpbmc+IHsgdHlwZWRlZiBKU0M6OkpTU3RyaW5nKiB0eXBlOyB9
OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBJRExUeXBlPgordXNpbmcgSURMSlNBcmd1bWVudFR5cGUg
PSB0eXBlbmFtZSBJRExKU0FyZ3VtZW50VHlwZVNlbGVjdDxJRExUeXBlPjo6dHlwZTsKKworfSB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb21qaXQvRE9NSklUSURMVHlwZUZpbHRlci5o
IGIvU291cmNlL1dlYkNvcmUvZG9taml0L0RPTUpJVElETFR5cGVGaWx0ZXIuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li44YWY2MzZkZTliNmZlNDFjMzZjNzcwODcwMjQ2ZTg3YWJmZmI3ODAyCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYkNvcmUvZG9taml0L0RPTUpJVElETFR5cGVGaWx0ZXIuaApAQCAtMCww
ICsxLDcwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDxieXRlY29k
ZS9TcGVjdWxhdGVkVHlwZS5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7IG5hbWVzcGFjZSBET01K
SVQgeworCit0ZW1wbGF0ZTx0eXBlbmFtZSBJRExUeXBlPgorc3RydWN0IElETEFyZ3VtZW50VHlw
ZUZpbHRlclNlbGVjdDsKKwordGVtcGxhdGU8PiBzdHJ1Y3QgSURMQXJndW1lbnRUeXBlRmlsdGVy
U2VsZWN0PElETEJvb2xlYW4+IHsgc3RhdGljIGNvbnN0ZXhwciBKU0M6OlNwZWN1bGF0ZWRUeXBl
IHZhbHVlID0gSlNDOjpTcGVjQm9vbGVhbjsgfTsKK3RlbXBsYXRlPD4gc3RydWN0IElETEFyZ3Vt
ZW50VHlwZUZpbHRlclNlbGVjdDxJRExCeXRlPiB7IHN0YXRpYyBjb25zdGV4cHIgSlNDOjpTcGVj
dWxhdGVkVHlwZSB2YWx1ZSA9IEpTQzo6U3BlY0ludDMyT25seTsgfTsKK3RlbXBsYXRlPD4gc3Ry
dWN0IElETEFyZ3VtZW50VHlwZUZpbHRlclNlbGVjdDxJRExPY3RldD4geyBzdGF0aWMgY29uc3Rl
eHByIEpTQzo6U3BlY3VsYXRlZFR5cGUgdmFsdWUgPSBKU0M6OlNwZWNJbnQzMk9ubHk7IH07Cit0
ZW1wbGF0ZTw+IHN0cnVjdCBJRExBcmd1bWVudFR5cGVGaWx0ZXJTZWxlY3Q8SURMU2hvcnQ+IHsg
c3RhdGljIGNvbnN0ZXhwciBKU0M6OlNwZWN1bGF0ZWRUeXBlIHZhbHVlID0gSlNDOjpTcGVjSW50
MzJPbmx5OyB9OwordGVtcGxhdGU8PiBzdHJ1Y3QgSURMQXJndW1lbnRUeXBlRmlsdGVyU2VsZWN0
PElETFVuc2lnbmVkU2hvcnQ+IHsgc3RhdGljIGNvbnN0ZXhwciBKU0M6OlNwZWN1bGF0ZWRUeXBl
IHZhbHVlID0gSlNDOjpTcGVjSW50MzJPbmx5OyB9OwordGVtcGxhdGU8PiBzdHJ1Y3QgSURMQXJn
dW1lbnRUeXBlRmlsdGVyU2VsZWN0PElETExvbmc+IHsgc3RhdGljIGNvbnN0ZXhwciBKU0M6OlNw
ZWN1bGF0ZWRUeXBlIHZhbHVlID0gSlNDOjpTcGVjSW50MzJPbmx5OyB9OwordGVtcGxhdGU8PiBz
dHJ1Y3QgSURMQXJndW1lbnRUeXBlRmlsdGVyU2VsZWN0PElETERPTVN0cmluZz4geyBzdGF0aWMg
Y29uc3RleHByIEpTQzo6U3BlY3VsYXRlZFR5cGUgdmFsdWUgPSBKU0M6OlNwZWNTdHJpbmc7IH07
CisKK3RlbXBsYXRlPHR5cGVuYW1lIElETFR5cGU+Citjb25zdGV4cHIgSlNDOjpTcGVjdWxhdGVk
VHlwZSBJRExBcmd1bWVudFR5cGVGaWx0ZXIgPSBJRExBcmd1bWVudFR5cGVGaWx0ZXJTZWxlY3Q8
SURMVHlwZT46OnZhbHVlOworCit0ZW1wbGF0ZTx0eXBlbmFtZSBJRExUeXBlPgorY29uc3RleHBy
IEpTQzo6U3BlY3VsYXRlZFR5cGUgSURMUmVzdWx0VHlwZUZpbHRlciA9IEpTQzo6U3BlY0hlYXBU
b3A7CisKK3RlbXBsYXRlPD4gY29uc3RleHByIEpTQzo6U3BlY3VsYXRlZFR5cGUgSURMUmVzdWx0
VHlwZUZpbHRlcjxJRExBbnk+ID0gSlNDOjpTcGVjSGVhcFRvcDsKK3RlbXBsYXRlPD4gY29uc3Rl
eHByIEpTQzo6U3BlY3VsYXRlZFR5cGUgSURMUmVzdWx0VHlwZUZpbHRlcjxJRExCb29sZWFuPiA9
IEpTQzo6U3BlY0Jvb2xlYW47Cit0ZW1wbGF0ZTw+IGNvbnN0ZXhwciBKU0M6OlNwZWN1bGF0ZWRU
eXBlIElETFJlc3VsdFR5cGVGaWx0ZXI8SURMQnl0ZT4gPSBKU0M6OlNwZWNJbnQzMk9ubHk7Cit0
ZW1wbGF0ZTw+IGNvbnN0ZXhwciBKU0M6OlNwZWN1bGF0ZWRUeXBlIElETFJlc3VsdFR5cGVGaWx0
ZXI8SURMT2N0ZXQ+ID0gSlNDOjpTcGVjSW50MzJPbmx5OwordGVtcGxhdGU8PiBjb25zdGV4cHIg
SlNDOjpTcGVjdWxhdGVkVHlwZSBJRExSZXN1bHRUeXBlRmlsdGVyPElETFNob3J0PiA9IEpTQzo6
U3BlY0ludDMyT25seTsKK3RlbXBsYXRlPD4gY29uc3RleHByIEpTQzo6U3BlY3VsYXRlZFR5cGUg
SURMUmVzdWx0VHlwZUZpbHRlcjxJRExVbnNpZ25lZFNob3J0PiA9IEpTQzo6U3BlY0ludDMyT25s
eTsKK3RlbXBsYXRlPD4gY29uc3RleHByIEpTQzo6U3BlY3VsYXRlZFR5cGUgSURMUmVzdWx0VHlw
ZUZpbHRlcjxJRExMb25nPiA9IEpTQzo6U3BlY0ludDMyT25seTsKK3RlbXBsYXRlPD4gY29uc3Rl
eHByIEpTQzo6U3BlY3VsYXRlZFR5cGUgSURMUmVzdWx0VHlwZUZpbHRlcjxJRExVbnNpZ25lZExv
bmc+ID0gSlNDOjpTcGVjQnl0ZWNvZGVOdW1iZXI7Cit0ZW1wbGF0ZTw+IGNvbnN0ZXhwciBKU0M6
OlNwZWN1bGF0ZWRUeXBlIElETFJlc3VsdFR5cGVGaWx0ZXI8SURMTG9uZ0xvbmc+ID0gSlNDOjpT
cGVjQnl0ZWNvZGVOdW1iZXI7Cit0ZW1wbGF0ZTw+IGNvbnN0ZXhwciBKU0M6OlNwZWN1bGF0ZWRU
eXBlIElETFJlc3VsdFR5cGVGaWx0ZXI8SURMVW5zaWduZWRMb25nTG9uZz4gPSBKU0M6OlNwZWNC
eXRlY29kZU51bWJlcjsKK3RlbXBsYXRlPD4gY29uc3RleHByIEpTQzo6U3BlY3VsYXRlZFR5cGUg
SURMUmVzdWx0VHlwZUZpbHRlcjxJRExGbG9hdD4gPSBKU0M6OlNwZWNCeXRlY29kZU51bWJlcjsK
K3RlbXBsYXRlPD4gY29uc3RleHByIEpTQzo6U3BlY3VsYXRlZFR5cGUgSURMUmVzdWx0VHlwZUZp
bHRlcjxJRExVbnJlc3RyaWN0ZWRGbG9hdD4gPSBKU0M6OlNwZWNCeXRlY29kZU51bWJlcjsKK3Rl
bXBsYXRlPD4gY29uc3RleHByIEpTQzo6U3BlY3VsYXRlZFR5cGUgSURMUmVzdWx0VHlwZUZpbHRl
cjxJRExEb3VibGU+ID0gSlNDOjpTcGVjQnl0ZWNvZGVOdW1iZXI7Cit0ZW1wbGF0ZTw+IGNvbnN0
ZXhwciBKU0M6OlNwZWN1bGF0ZWRUeXBlIElETFJlc3VsdFR5cGVGaWx0ZXI8SURMVW5yZXN0cmlj
dGVkRG91YmxlPiA9IEpTQzo6U3BlY0J5dGVjb2RlTnVtYmVyOwordGVtcGxhdGU8PiBjb25zdGV4
cHIgSlNDOjpTcGVjdWxhdGVkVHlwZSBJRExSZXN1bHRUeXBlRmlsdGVyPElETERPTVN0cmluZz4g
PSBKU0M6OlNwZWNTdHJpbmc7Cit0ZW1wbGF0ZTw+IGNvbnN0ZXhwciBKU0M6OlNwZWN1bGF0ZWRU
eXBlIElETFJlc3VsdFR5cGVGaWx0ZXI8SURMQnl0ZVN0cmluZz4gPSBKU0M6OlNwZWNTdHJpbmc7
Cit0ZW1wbGF0ZTw+IGNvbnN0ZXhwciBKU0M6OlNwZWN1bGF0ZWRUeXBlIElETFJlc3VsdFR5cGVG
aWx0ZXI8SURMVVNWU3RyaW5nPiA9IEpTQzo6U3BlY1N0cmluZzsKKwordGVtcGxhdGU8dHlwZW5h
bWUgVD4KK2NvbnN0ZXhwciBKU0M6OlNwZWN1bGF0ZWRUeXBlIElETFJlc3VsdFR5cGVGaWx0ZXI8
SURMTnVsbGFibGU8VD4+ID0gSlNDOjpTcGVjT3RoZXIgfCBJRExSZXN1bHRUeXBlRmlsdGVyPFQ+
OworCit9IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbWppdC9KU0RvY3VtZW50RE9N
SklULmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbWppdC9KU0RvY3VtZW50RE9NSklULmNwcAppbmRl
eCA5YjQ4ZDlmZGE1OGE2MmQwN2ZiMjNhYWI0NTZiZjk0YjdlZDhmYzJmLi5iYmZlZTdkYzRiYjc4
MmU3M2NmMjdjOTc3YmMxODI5NGE1OTRiNmQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9k
b21qaXQvSlNEb2N1bWVudERPTUpJVC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9taml0L0pT
RG9jdW1lbnRET01KSVQuY3BwCkBAIC00OCw3ICs0OCw2IEBAIFJlZjxKU0M6OkRPTUpJVDo6UGF0
Y2hwb2ludD4gRG9jdW1lbnREb2N1bWVudEVsZW1lbnRET01KSVQ6OmNoZWNrRE9NKCkKIAogUmVm
PEpTQzo6RE9NSklUOjpDYWxsRE9NR2V0dGVyUGF0Y2hwb2ludD4gRG9jdW1lbnREb2N1bWVudEVs
ZW1lbnRET01KSVQ6OmNhbGxET01HZXR0ZXIoKQogewotICAgIGNvbnN0IGF1dG8mIGhlYXAgPSBE
T01KSVQ6OkFic3RyYWN0SGVhcFJlcG9zaXRvcnk6OnNoYXJlZCgpOwogICAgIFJlZjxKU0M6OkRP
TUpJVDo6Q2FsbERPTUdldHRlclBhdGNocG9pbnQ+IHBhdGNocG9pbnQgPSBKU0M6OkRPTUpJVDo6
Q2FsbERPTUdldHRlclBhdGNocG9pbnQ6OmNyZWF0ZSgpOwogICAgIHBhdGNocG9pbnQtPm51bUdQ
U2NyYXRjaFJlZ2lzdGVycyA9IDE7CiAgICAgcGF0Y2hwb2ludC0+c2V0R2VuZXJhdG9yKFs9XShD
Q2FsbEhlbHBlcnMmIGppdCwgSlNDOjpET01KSVQ6OlBhdGNocG9pbnRQYXJhbXMmIHBhcmFtcykg
ewpAQCAtNzAsNyArNjksNyBAQCBSZWY8SlNDOjpET01KSVQ6OkNhbGxET01HZXR0ZXJQYXRjaHBv
aW50PiBEb2N1bWVudERvY3VtZW50RWxlbWVudERPTUpJVDo6Y2FsbERPTQogCiAgICAgICAgIHJl
dHVybiBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0KCk7CiAgICAgfSk7Ci0gICAgcGF0Y2hwb2ludC0+
ZWZmZWN0ID0gSlNDOjpET01KSVQ6OkVmZmVjdDo6Zm9yRGVmKGhlYXAuRG9jdW1lbnRfZG9jdW1l
bnRFbGVtZW50KTsKKyAgICBwYXRjaHBvaW50LT5lZmZlY3QgPSBKU0M6OkRPTUpJVDo6RWZmZWN0
Ojpmb3JEZWYoRE9NSklUOjpBYnN0cmFjdEhlYXBSZXBvc2l0b3J5OjpEb2N1bWVudF9kb2N1bWVu
dEVsZW1lbnQpOwogICAgIHJldHVybiBwYXRjaHBvaW50OwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9kb21qaXQvSlNOb2RlRE9NSklULmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbWpp
dC9KU05vZGVET01KSVQuY3BwCmluZGV4IDFkNzkwMWVjNDFkN2FjZWYxZDBkNzhmNjEzMjZmYmU4
YTEzYTkxYmYuLmRiMzEwZWEzNDUyODQ5MTQyNDI4ZDNkNjE2ZjgxYjJjNjdjNTE2NTUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbWppdC9KU05vZGVET01KSVQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbWppdC9KU05vZGVET01KSVQuY3BwCkBAIC04Myw5ICs4Myw4IEBAIFJlZjxK
U0M6OkRPTUpJVDo6UGF0Y2hwb2ludD4gTm9kZUZpcnN0Q2hpbGRET01KSVQ6OmNoZWNrRE9NKCkK
IAogUmVmPEpTQzo6RE9NSklUOjpDYWxsRE9NR2V0dGVyUGF0Y2hwb2ludD4gTm9kZUZpcnN0Q2hp
bGRET01KSVQ6OmNhbGxET01HZXR0ZXIoKQogewotICAgIGNvbnN0IGF1dG8mIGhlYXAgPSBET01K
SVQ6OkFic3RyYWN0SGVhcFJlcG9zaXRvcnk6OnNoYXJlZCgpOwogICAgIGF1dG8gcGF0Y2hwb2lu
dCA9IGNyZWF0ZUNhbGxET01HZXR0ZXJGb3JPZmZzZXRBY2Nlc3M8Tm9kZT4oQ0FTVF9PRkZTRVQo
Tm9kZSosIENvbnRhaW5lck5vZGUqKSArIENvbnRhaW5lck5vZGU6OmZpcnN0Q2hpbGRNZW1vcnlP
ZmZzZXQoKSwgSXNDb250YWluZXJHdWFyZFJlcXVpcmVtZW50OjpSZXF1aXJlZCk7Ci0gICAgcGF0
Y2hwb2ludC0+ZWZmZWN0ID0gSlNDOjpET01KSVQ6OkVmZmVjdDo6Zm9yRGVmKGhlYXAuTm9kZV9m
aXJzdENoaWxkKTsKKyAgICBwYXRjaHBvaW50LT5lZmZlY3QgPSBKU0M6OkRPTUpJVDo6RWZmZWN0
Ojpmb3JEZWYoRE9NSklUOjpBYnN0cmFjdEhlYXBSZXBvc2l0b3J5OjpOb2RlX2ZpcnN0Q2hpbGQp
OwogICAgIHJldHVybiBwYXRjaHBvaW50OwogfQogCkBAIC05Niw5ICs5NSw4IEBAIFJlZjxKU0M6
OkRPTUpJVDo6UGF0Y2hwb2ludD4gTm9kZUxhc3RDaGlsZERPTUpJVDo6Y2hlY2tET00oKQogCiBS
ZWY8SlNDOjpET01KSVQ6OkNhbGxET01HZXR0ZXJQYXRjaHBvaW50PiBOb2RlTGFzdENoaWxkRE9N
SklUOjpjYWxsRE9NR2V0dGVyKCkKIHsKLSAgICBjb25zdCBhdXRvJiBoZWFwID0gRE9NSklUOjpB
YnN0cmFjdEhlYXBSZXBvc2l0b3J5OjpzaGFyZWQoKTsKICAgICBhdXRvIHBhdGNocG9pbnQgPSBj
cmVhdGVDYWxsRE9NR2V0dGVyRm9yT2Zmc2V0QWNjZXNzPE5vZGU+KENBU1RfT0ZGU0VUKE5vZGUq
LCBDb250YWluZXJOb2RlKikgKyBDb250YWluZXJOb2RlOjpsYXN0Q2hpbGRNZW1vcnlPZmZzZXQo
KSwgSXNDb250YWluZXJHdWFyZFJlcXVpcmVtZW50OjpSZXF1aXJlZCk7Ci0gICAgcGF0Y2hwb2lu
dC0+ZWZmZWN0ID0gSlNDOjpET01KSVQ6OkVmZmVjdDo6Zm9yRGVmKGhlYXAuTm9kZV9sYXN0Q2hp
bGQpOworICAgIHBhdGNocG9pbnQtPmVmZmVjdCA9IEpTQzo6RE9NSklUOjpFZmZlY3Q6OmZvckRl
ZihET01KSVQ6OkFic3RyYWN0SGVhcFJlcG9zaXRvcnk6Ok5vZGVfbGFzdENoaWxkKTsKICAgICBy
ZXR1cm4gcGF0Y2hwb2ludDsKIH0KIApAQCAtMTA5LDkgKzEwNyw4IEBAIFJlZjxKU0M6OkRPTUpJ
VDo6UGF0Y2hwb2ludD4gTm9kZU5leHRTaWJsaW5nRE9NSklUOjpjaGVja0RPTSgpCiAKIFJlZjxK
U0M6OkRPTUpJVDo6Q2FsbERPTUdldHRlclBhdGNocG9pbnQ+IE5vZGVOZXh0U2libGluZ0RPTUpJ
VDo6Y2FsbERPTUdldHRlcigpCiB7Ci0gICAgY29uc3QgYXV0byYgaGVhcCA9IERPTUpJVDo6QWJz
dHJhY3RIZWFwUmVwb3NpdG9yeTo6c2hhcmVkKCk7CiAgICAgYXV0byBwYXRjaHBvaW50ID0gY3Jl
YXRlQ2FsbERPTUdldHRlckZvck9mZnNldEFjY2VzczxOb2RlPihOb2RlOjpuZXh0U2libGluZ01l
bW9yeU9mZnNldCgpLCBJc0NvbnRhaW5lckd1YXJkUmVxdWlyZW1lbnQ6Ok5vdFJlcXVpcmVkKTsK
LSAgICBwYXRjaHBvaW50LT5lZmZlY3QgPSBKU0M6OkRPTUpJVDo6RWZmZWN0Ojpmb3JEZWYoaGVh
cC5Ob2RlX25leHRTaWJsaW5nKTsKKyAgICBwYXRjaHBvaW50LT5lZmZlY3QgPSBKU0M6OkRPTUpJ
VDo6RWZmZWN0Ojpmb3JEZWYoRE9NSklUOjpBYnN0cmFjdEhlYXBSZXBvc2l0b3J5OjpOb2RlX25l
eHRTaWJsaW5nKTsKICAgICByZXR1cm4gcGF0Y2hwb2ludDsKIH0KIApAQCAtMTIyLDkgKzExOSw4
IEBAIFJlZjxKU0M6OkRPTUpJVDo6UGF0Y2hwb2ludD4gTm9kZVByZXZpb3VzU2libGluZ0RPTUpJ
VDo6Y2hlY2tET00oKQogCiBSZWY8SlNDOjpET01KSVQ6OkNhbGxET01HZXR0ZXJQYXRjaHBvaW50
PiBOb2RlUHJldmlvdXNTaWJsaW5nRE9NSklUOjpjYWxsRE9NR2V0dGVyKCkKIHsKLSAgICBjb25z
dCBhdXRvJiBoZWFwID0gRE9NSklUOjpBYnN0cmFjdEhlYXBSZXBvc2l0b3J5OjpzaGFyZWQoKTsK
ICAgICBhdXRvIHBhdGNocG9pbnQgPSBjcmVhdGVDYWxsRE9NR2V0dGVyRm9yT2Zmc2V0QWNjZXNz
PE5vZGU+KE5vZGU6OnByZXZpb3VzU2libGluZ01lbW9yeU9mZnNldCgpLCBJc0NvbnRhaW5lckd1
YXJkUmVxdWlyZW1lbnQ6Ok5vdFJlcXVpcmVkKTsKLSAgICBwYXRjaHBvaW50LT5lZmZlY3QgPSBK
U0M6OkRPTUpJVDo6RWZmZWN0Ojpmb3JEZWYoaGVhcC5Ob2RlX3ByZXZpb3VzU2libGluZyk7Cisg
ICAgcGF0Y2hwb2ludC0+ZWZmZWN0ID0gSlNDOjpET01KSVQ6OkVmZmVjdDo6Zm9yRGVmKERPTUpJ
VDo6QWJzdHJhY3RIZWFwUmVwb3NpdG9yeTo6Tm9kZV9wcmV2aW91c1NpYmxpbmcpOwogICAgIHJl
dHVybiBwYXRjaHBvaW50OwogfQogCkBAIC0xMzUsOSArMTMxLDggQEAgUmVmPEpTQzo6RE9NSklU
OjpQYXRjaHBvaW50PiBOb2RlUGFyZW50Tm9kZURPTUpJVDo6Y2hlY2tET00oKQogCiBSZWY8SlND
OjpET01KSVQ6OkNhbGxET01HZXR0ZXJQYXRjaHBvaW50PiBOb2RlUGFyZW50Tm9kZURPTUpJVDo6
Y2FsbERPTUdldHRlcigpCiB7Ci0gICAgY29uc3QgYXV0byYgaGVhcCA9IERPTUpJVDo6QWJzdHJh
Y3RIZWFwUmVwb3NpdG9yeTo6c2hhcmVkKCk7CiAgICAgYXV0byBwYXRjaHBvaW50ID0gY3JlYXRl
Q2FsbERPTUdldHRlckZvck9mZnNldEFjY2VzczxDb250YWluZXJOb2RlPihOb2RlOjpwYXJlbnRO
b2RlTWVtb3J5T2Zmc2V0KCksIElzQ29udGFpbmVyR3VhcmRSZXF1aXJlbWVudDo6Tm90UmVxdWly
ZWQpOwotICAgIHBhdGNocG9pbnQtPmVmZmVjdCA9IEpTQzo6RE9NSklUOjpFZmZlY3Q6OmZvckRl
ZihoZWFwLk5vZGVfcGFyZW50Tm9kZSk7CisgICAgcGF0Y2hwb2ludC0+ZWZmZWN0ID0gSlNDOjpE
T01KSVQ6OkVmZmVjdDo6Zm9yRGVmKERPTUpJVDo6QWJzdHJhY3RIZWFwUmVwb3NpdG9yeTo6Tm9k
ZV9wYXJlbnROb2RlKTsKICAgICByZXR1cm4gcGF0Y2hwb2ludDsKIH0KIApAQCAtMTY5LDcgKzE2
NCw2IEBAIFJlZjxKU0M6OkRPTUpJVDo6UGF0Y2hwb2ludD4gTm9kZU93bmVyRG9jdW1lbnRET01K
SVQ6OmNoZWNrRE9NKCkKIAogUmVmPEpTQzo6RE9NSklUOjpDYWxsRE9NR2V0dGVyUGF0Y2hwb2lu
dD4gTm9kZU93bmVyRG9jdW1lbnRET01KSVQ6OmNhbGxET01HZXR0ZXIoKQogewotICAgIGNvbnN0
IGF1dG8mIGhlYXAgPSBET01KSVQ6OkFic3RyYWN0SGVhcFJlcG9zaXRvcnk6OnNoYXJlZCgpOwog
ICAgIFJlZjxKU0M6OkRPTUpJVDo6Q2FsbERPTUdldHRlclBhdGNocG9pbnQ+IHBhdGNocG9pbnQg
PSBKU0M6OkRPTUpJVDo6Q2FsbERPTUdldHRlclBhdGNocG9pbnQ6OmNyZWF0ZSgpOwogICAgIHBh
dGNocG9pbnQtPm51bUdQU2NyYXRjaFJlZ2lzdGVycyA9IDE7CiAgICAgcGF0Y2hwb2ludC0+c2V0
R2VuZXJhdG9yKFs9XShDQ2FsbEhlbHBlcnMmIGppdCwgSlNDOjpET01KSVQ6OlBhdGNocG9pbnRQ
YXJhbXMmIHBhcmFtcykgewpAQCAtMTkxLDcgKzE4NSw3IEBAIFJlZjxKU0M6OkRPTUpJVDo6Q2Fs
bERPTUdldHRlclBhdGNocG9pbnQ+IE5vZGVPd25lckRvY3VtZW50RE9NSklUOjpjYWxsRE9NR2V0
dGVyCiAgICAgICAgIGRvbmUubGluaygmaml0KTsKICAgICAgICAgcmV0dXJuIENDYWxsSGVscGVy
czo6SnVtcExpc3QoKTsKICAgICB9KTsKLSAgICBwYXRjaHBvaW50LT5lZmZlY3QgPSBKU0M6OkRP
TUpJVDo6RWZmZWN0Ojpmb3JEZWYoaGVhcC5Ob2RlX293bmVyRG9jdW1lbnQpOworICAgIHBhdGNo
cG9pbnQtPmVmZmVjdCA9IEpTQzo6RE9NSklUOjpFZmZlY3Q6OmZvckRlZihET01KSVQ6OkFic3Ry
YWN0SGVhcFJlcG9zaXRvcnk6Ok5vZGVfb3duZXJEb2N1bWVudCk7CiAgICAgcmV0dXJuIHBhdGNo
cG9pbnQ7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbWppdC9nZW5lcmF0ZS1h
YnN0cmFjdC1oZWFwLnJiIGIvU291cmNlL1dlYkNvcmUvZG9taml0L2dlbmVyYXRlLWFic3RyYWN0
LWhlYXAucmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uYjc0MTJlODVkNjlmNDkxYTJlYWFiYWE2MTc4ZjFiMjVhMDJk
MDliNAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbWppdC9nZW5lcmF0ZS1h
YnN0cmFjdC1oZWFwLnJiCkBAIC0wLDAgKzEsMTY1IEBACisjIS91c3IvYmluL2VudiBydWJ5Cisj
IC0qLSBjb2Rpbmc6IHV0Zi04IC0qLQorIyBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBt
ZXQ6CisjIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisjIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
IyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisjIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworIyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisjIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisjIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworIyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorIyBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorIyBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisjIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKworcmVxdWlyZSAieWFtbCIKKworY2xhc3MgSGVhcFJhbmdlCisgICAgYXR0cl9yZWFkZXIg
OmZpcnN0LCA6bGFzdAorICAgIGRlZiBpbml0aWFsaXplKGZpcnN0LCBsYXN0KQorICAgICAgICBA
Zmlyc3QgPSBmaXJzdAorICAgICAgICBAbGFzdCA9IGxhc3QKKyAgICBlbmQKK2VuZAorCitjbGFz
cyBBYnN0cmFjdEhlYXAKKyAgICBhdHRyX3JlYWRlciA6cmFuZ2UsIDpuYW1lLCA6cGFyZW50Cisg
ICAgZGVmIGluaXRpYWxpemUobmFtZSwgdHJlZSkKKyAgICAgICAgQG5hbWUgPSBuYW1lCisgICAg
ICAgIEBwYXJlbnQgPSBuaWwKKyAgICAgICAgaWYgdHJlZS5uaWw/CisgICAgICAgICAgICBAY2hp
bGRyZW4gPSBbXQorICAgICAgICBlbHNlCisgICAgICAgICAgICBAY2hpbGRyZW4gPSB0cmVlLm1h
cCB7fGtleSwgdmFsdWV8IEFic3RyYWN0SGVhcC5uZXcoa2V5LCB2YWx1ZSkgfQorICAgICAgICBl
bmQKKyAgICAgICAgQHJhbmdlID0gbmlsCisgICAgZW5kCisKKyAgICBkZWYgc2V0UGFyZW50KHBh
cmVudCkKKyAgICAgICAgcGFyZW50LmNoaWxkcmVuLnB1c2goc2VsZikKKyAgICAgICAgQHBhcmVu
dCA9IHBhcmVudAorICAgIGVuZAorCisgICAgZGVmIGNvbXB1dGUoc3RhcnQpCisgICAgICAgIGN1
cnJlbnQgPSBzdGFydAorICAgICAgICBpZiBAY2hpbGRyZW4uZW1wdHk/CisgICAgICAgICAgICBA
cmFuZ2UgPSBIZWFwUmFuZ2UubmV3KHN0YXJ0LCBjdXJyZW50ICsgMSkKKyAgICAgICAgICAgIHJl
dHVybgorICAgICAgICBlbmQKKworICAgICAgICBAY2hpbGRyZW4uZWFjaCB7fGNoaWxkfAorICAg
ICAgICAgICAgY2hpbGQuY29tcHV0ZShjdXJyZW50KQorICAgICAgICAgICAgY3VycmVudCA9IGNo
aWxkLnJhbmdlLmxhc3QKKyAgICAgICAgfQorCisgICAgICAgIEByYW5nZSA9IEhlYXBSYW5nZS5u
ZXcoc3RhcnQsIGN1cnJlbnQpCisgICAgZW5kCisKKyAgICBkZWYgZHVtcCBvdXRwdXQKKyAgICAg
ICAgc2hhbGxvd0R1bXAob3V0cHV0KQorICAgICAgICBpZiBAcGFyZW50CisgICAgICAgICAgICBv
dXRwdXQucHJpbnQgIi0+ICIKKyAgICAgICAgICAgIEBwYXJlbnQuZHVtcChvdXRwdXQpCisgICAg
ICAgIGVuZAorICAgIGVuZAorCisgICAgZGVmIHNoYWxsb3dEdW1wKG91dHB1dCkKKyAgICAgICAg
b3V0cHV0LnByaW50ICIje0BuYW1lfTwje0ByYW5nZS5maXJzdH0sI3tAcmFuZ2UubGFzdH0+Igor
ICAgIGVuZAorCisgICAgZGVmIGRlZXBEdW1wIG91dHB1dCwgaW5kZW50CisgICAgICAgIHByaW50
SW5kZW50KG91dHB1dCwgaW5kZW50KQorICAgICAgICBzaGFsbG93RHVtcChvdXRwdXQpCisgICAg
ICAgIGlmIEBjaGlsZHJlbi5lbXB0eT8KKyAgICAgICAgICAgIG91dHB1dC5wcmludCAiXG4iCisg
ICAgICAgICAgICByZXR1cm4KKyAgICAgICAgZW5kCisKKyAgICAgICAgb3V0cHV0LnByaW50ICI6
XG4iCisgICAgICAgIEBjaGlsZHJlbi5lYWNoIHt8Y2hpbGR8CisgICAgICAgICAgICBjaGlsZC5k
ZWVwRHVtcChvdXRwdXQsIGluZGVudCArIDEpCisgICAgICAgIH0KKyAgICBlbmQKKworICAgIGRl
ZiBnZW5lcmF0ZSBvdXRwdXQKKyAgICAgICAgb3V0cHV0LnB1dHMgImNvbnN0ZXhwciBKU0M6OkRP
TUpJVDo6SGVhcFJhbmdlICN7QG5hbWV9KEpTQzo6RE9NSklUOjpIZWFwUmFuZ2U6OkNvbnN0RXhw
ciwgI3tAcmFuZ2UuZmlyc3R9LCAje0ByYW5nZS5sYXN0fSk7IgorICAgICAgICBAY2hpbGRyZW4u
ZWFjaCB7fGNoaWxkfAorICAgICAgICAgICAgY2hpbGQuZ2VuZXJhdGUob3V0cHV0KQorICAgICAg
ICB9CisgICAgZW5kCisKK3ByaXZhdGUKKyAgICBkZWYgcHJpbnRJbmRlbnQgb3V0cHV0LCBpbmRl
bnQKKyAgICAgICAgaW5kZW50LnRpbWVzIHsKKyAgICAgICAgICAgIG91dHB1dC5wcmludCAiICAg
ICIKKyAgICAgICAgfQorICAgIGVuZAorZW5kCisKK2hlYWRlciA9IDw8LUVPUworLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
CisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisvLyBBdXRvLWdlbmVyYXRlZCBmaWxl
LiBEbyBub3QgbW9kaWZ5LgorCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPGRvbWppdC9ET01K
SVRIZWFwUmFuZ2UuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeyBuYW1lc3BhY2UgRE9NSklUIHsg
bmFtZXNwYWNlIEFic3RyYWN0SGVhcFJlcG9zaXRvcnkgeworRU9TCisKK2Zvb3RlciA9IDw8LUVP
UworfSB9IH0KK0VPUworCiskaW5wdXRGaWxlTmFtZSA9IEFSR1Yuc2hpZnQKKyRvdXRwdXRGaWxl
TmFtZSA9IEFSR1Yuc2hpZnQKK0ZpbGUub3Blbigkb3V0cHV0RmlsZU5hbWUsICJ3Iikge3xvdXRw
dXR8CisgICAgRmlsZS5vcGVuKCRpbnB1dEZpbGVOYW1lLCAicmIiKSB7fGZpbGV8CisgICAgICAg
IHRyZWUgPSBZQU1MOjpsb2FkKGZpbGUucmVhZCgpKQorICAgICAgICBoZWFwID0gdHJlZS5tYXAg
e3xrZXksIHZhbHVlfAorICAgICAgICAgICAgQWJzdHJhY3RIZWFwLm5ldyhrZXksIHZhbHVlKQor
ICAgICAgICB9LmZpcnN0CisgICAgICAgIGhlYXAuY29tcHV0ZSgwKQorCisgICAgICAgIG91dHB1
dC5wcmludChoZWFkZXIpCisgICAgICAgIG91dHB1dC5wdXRzKCIvKiBET01KSVQgQWJzdHJhY3Qg
SGVhcCBUcmVlLiIpCisgICAgICAgIGhlYXAuZGVlcER1bXAob3V0cHV0LCAwKQorICAgICAgICBv
dXRwdXQucHV0cygiKi8iKQorICAgICAgICBoZWFwLmdlbmVyYXRlKG91dHB1dCkKKyAgICAgICAg
b3V0cHV0LnByaW50KGZvb3RlcikKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNjNlNzMyNTE2NDJhY2RmZGE2
MGFmMmFiN2FhYzMzYWY3ZTdiNTdhYi4uMDBjMWIxMGFlZjAxODhmMWRkYzAxZDRhZGMxZDNkM2U5
MDM3NjZkMCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRl
c3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDE2LTExLTAyICBZdXN1a2UgU3V6dWtp
ICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgorCisgICAgICAgIFtET01KSVRdIEFkZCBET01KSVQ6
OlNpZ25hdHVyZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTYyOTgwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2FhbSBCYXJhdGkuCisKKyAgICAgICAg
KiBqcy9kb20vZG9taml0LWFjY2Vzc29yLWxpY20uaHRtbDoKKyAgICAgICAgKiBqcy9kb20vZG9t
aml0LWZ1bmN0aW9uLWVmZmVjdC1zaG91bGQtb3ZlcmxhcC13aXRoLWNhbGwtZXhwZWN0ZWQudHh0
OiBBZGRlZC4KKyAgICAgICAgKiBqcy9kb20vZG9taml0LWZ1bmN0aW9uLWVmZmVjdC1zaG91bGQt
b3ZlcmxhcC13aXRoLWNhbGwuaHRtbDogQWRkZWQuCisgICAgICAgICoganMvZG9tL2RvbWppdC1m
dW5jdGlvbi1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGpzL2RvbS9kb21qaXQtZnVu
Y3Rpb24tbGljbS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGpzL2RvbS9kb21qaXQt
ZnVuY3Rpb24tbGljbS5odG1sOiBDb3BpZWQgZnJvbSBMYXlvdXRUZXN0cy9qcy9kb20vZG9taml0
LWFjY2Vzc29yLWxpY20uaHRtbC4KKyAgICAgICAgKiBqcy9kb20vZG9taml0LWZ1bmN0aW9uLXR5
cGUtY29udHJhZGljdGlvbi1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGpzL2RvbS9k
b21qaXQtZnVuY3Rpb24tdHlwZS1jb250cmFkaWN0aW9uLmh0bWw6IENvcGllZCBmcm9tIExheW91
dFRlc3RzL2pzL2RvbS9kb21qaXQtYWNjZXNzb3ItbGljbS5odG1sLgorICAgICAgICAqIGpzL2Rv
bS9kb21qaXQtZnVuY3Rpb24tdHlwZS1mYWlsdXJlLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAg
ICAgICoganMvZG9tL2RvbWppdC1mdW5jdGlvbi10eXBlLWZhaWx1cmUuaHRtbDogQ29waWVkIGZy
b20gTGF5b3V0VGVzdHMvanMvZG9tL2RvbWppdC1hY2Nlc3Nvci1saWNtLmh0bWwuCisgICAgICAg
ICoganMvZG9tL2RvbWppdC1mdW5jdGlvbi5odG1sOiBBZGRlZC4KKwogMjAxNi0xMS0wMiAgQnJl
bnQgRnVsZ2hhbSAgPGJmdWxnaGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBSRUdSRVNTSU9OKHIy
MDMyODkpOkFzc2VydGlvbiBpbiBNYXRoT3BlcmF0b3I6OnN0cmV0Y2hUbygpIG9uIFdpa2lwZWRp
YSBQYWdlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9kb20vZG9taml0LWFjY2Vzc29yLWxp
Y20uaHRtbCBiL0xheW91dFRlc3RzL2pzL2RvbS9kb21qaXQtYWNjZXNzb3ItbGljbS5odG1sCmlu
ZGV4IGU1NjNlYmE4OWZmY2RhMjkxYjUyNGRjZGY3NTBlMmEzMDZhZTMyMDUuLjQwZDU1NjBkYTA1
MzljYmYwODRhOWUxZDFlZjNmZTNmMWRjMzU0NGQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2pz
L2RvbS9kb21qaXQtYWNjZXNzb3ItbGljbS5odG1sCisrKyBiL0xheW91dFRlc3RzL2pzL2RvbS9k
b21qaXQtYWNjZXNzb3ItbGljbS5odG1sCkBAIC0xLDE0ICsxLDMgQEAKLTwhRE9DVFlQRSBIVE1M
PgotPGh0bWwgbGFuZz0iZW4iPgotPGhlYWQ+Ci08bWV0YSBjaGFyc2V0PSJVVEYtOCI+Ci08L2hl
YWQ+Ci08Ym9keT4KLTxzY3JpcHQ+Ci0KLTwvc2NyaXB0PgotPC9ib2R5PgotPC9odG1sPgogPCFE
T0NUWVBFIGh0bWw+CiA8aHRtbD4KIDxoZWFkPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMv
ZG9tL2RvbWppdC1mdW5jdGlvbi1lZmZlY3Qtc2hvdWxkLW92ZXJsYXAtd2l0aC1jYWxsLWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL2pzL2RvbS9kb21qaXQtZnVuY3Rpb24tZWZmZWN0LXNob3Vs
ZC1vdmVybGFwLXdpdGgtY2FsbC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTFkYzE5NmEzMmUy
ODhjMTJmNTE0NTYxY2ZjMjE0ZDI5ZWI5YzgxNwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2pzL2RvbS9kb21qaXQtZnVuY3Rpb24tZWZmZWN0LXNob3VsZC1vdmVybGFwLXdpdGgtY2Fs
bC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMCBAQAorVGVzdCBmdW5jdGlvbiBjYWxscyBzaG91
bGQgb3ZlcmxhcCB3aXRoIGVmZmVjdHMgb2YgRE9NSklUIGZ1bmN0aW9ucy4KKworT24gc3VjY2Vz
cywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkg
IlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1MgdGVzdCgpIGlzIHRydWUKK1BBU1Mgc3VjY2Vzc2Z1
bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9qcy9kb20vZG9taml0LWZ1bmN0aW9uLWVmZmVjdC1zaG91bGQtb3ZlcmxhcC13aXRoLWNh
bGwuaHRtbCBiL0xheW91dFRlc3RzL2pzL2RvbS9kb21qaXQtZnVuY3Rpb24tZWZmZWN0LXNob3Vs
ZC1vdmVybGFwLXdpdGgtY2FsbC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI4Y2IzOTJiMjk0MWJiYjhkMzMx
YTc5MzMxZDU4YzNmYTU4MzA1ZTUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9qcy9k
b20vZG9taml0LWZ1bmN0aW9uLWVmZmVjdC1zaG91bGQtb3ZlcmxhcC13aXRoLWNhbGwuaHRtbApA
QCAtMCwwICsxLDMzIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4K
Kzxib2R5PgorPGRpdiBpZD0idGFyZ2V0Ij48L2Rpdj4KKzwvZGl2PgorCis8c2NyaXB0PgorZGVz
Y3JpcHRpb24oJ1Rlc3QgZnVuY3Rpb24gY2FsbHMgc2hvdWxkIG92ZXJsYXAgd2l0aCBlZmZlY3Rz
IG9mIERPTUpJVCBmdW5jdGlvbnMuJyk7CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIHZhciB0
YXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndGFyZ2V0Jyk7CisgICAgdGFyZ2V0LnNl
dEF0dHJpYnV0ZSgiY29jb2EiLCAiMCIpOworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMWU0OyAr
K2kpIHsKKyAgICAgICAgdmFyIHJldCA9IHRhcmdldC5nZXRBdHRyaWJ1dGUoImNvY29hIik7Cisg
ICAgICAgIGlmIChyZXQgIT09IFN0cmluZyhpKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICAgICAgdGFyZ2V0LnNldEF0dHJpYnV0ZSgiY29jb2EiLCBTdHJpbmcoaSArIDEpKTsKKyAg
ICAgICAgdmFyIHJldCA9IHRhcmdldC5nZXRBdHRyaWJ1dGUoImNvY29hIik7CisgICAgICAgIGlm
IChyZXQgPT09IFN0cmluZyhpKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9Cisg
ICAgcmV0dXJuIHRydWU7Cit9CisKK3Nob3VsZEJlVHJ1ZShgdGVzdCgpYCk7Cis8L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4K
KzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL2RvbS9kb21qaXQt
ZnVuY3Rpb24tZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvanMvZG9tL2RvbWppdC1mdW5jdGlv
bi1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDVlNTZlYmRjZDlmNmYxODZjNDdjZTc2OGMxNWMy
MjVlYmUyZDBjNwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2pzL2RvbS9kb21qaXQt
ZnVuY3Rpb24tZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTAgQEAKK1Rlc3QgRE9NSklUIGZ1bmN0
aW9ucyB3b3JrLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1Mi
IG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBBbGwgdGVz
dHMgcGFzc2VkLgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBM
RVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL2RvbS9kb21qaXQtZnVuY3Rpb24tbGlj
bS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9qcy9kb20vZG9taml0LWZ1bmN0aW9uLWxpY20t
ZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmYxM2MwMzMwNTk2NjJlNTU4YmM2ZmI5ZDczOWFiMzdl
Nzk2MWM4ZmIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9qcy9kb20vZG9taml0LWZ1
bmN0aW9uLWxpY20tZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsOCBAQAorVGVzdCBET01KSVQgZnVu
Y3Rpb24gd2lsbCBiZSBMSUNNLWVkLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJp
ZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKK1BB
U1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9qcy9kb20vZG9taml0LWZ1bmN0aW9uLWxpY20uaHRtbCBiL0xheW91
dFRlc3RzL2pzL2RvbS9kb21qaXQtZnVuY3Rpb24tbGljbS5odG1sCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjVmMmUz
OTlkZDM1OWUxYzRmY2I0ZGZkZTJiYWNlOWUxYTBkNDRkMzkKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9qcy9kb20vZG9taml0LWZ1bmN0aW9uLWxpY20uaHRtbApAQCAtMCwwICsxLDM1
IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
cmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRp
diBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisKKzxk
aXYgaWQ9InBhcmVudE5vZGUiPgorPGRpdiBpZD0icHJldmlvdXNTaWJsaW5nIj48L2Rpdj48ZGl2
IGlkPSJ0YXJnZXQiPjxkaXYgaWQ9ImZpcnN0Q2hpbGQiPjwvZGl2PjxkaXYgaWQ9Imxhc3RDaGls
ZCI+PC9kaXY+PC9kaXY+PGRpdiBpZD0ibmV4dFNpYmxpbmciPjwvZGl2PgorPC9kaXY+CisKKzxz
Y3JpcHQ+CitkZXNjcmlwdGlvbignVGVzdCBET01KSVQgZnVuY3Rpb24gd2lsbCBiZSBMSUNNLWVk
LicpOworCitmdW5jdGlvbiB0ZXN0KCkgeworICAgIHZhciBkaXYgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50KCdkaXYnKTsKKyAgICB2YXIgcmV0ID0gImludmFsaWQiOworICAgIGRpdi5zZXRBdHRy
aWJ1dGUoImNvY29hIiwgIkNvY29hIik7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxZTQ7ICsr
aSkKKyAgICAgICAgcmV0ID0gZGl2LmdldEF0dHJpYnV0ZSgiY29jb2EiKTsKKyAgICByZXR1cm4g
cmV0OworfQordmFyIHJlc3VsdDsKKyhmdW5jdGlvbiAoKSB7CisgICAgZm9yICh2YXIgaSA9IDA7
IGkgPCAxMDA7ICsraSkgeworICAgICAgICByZXN1bHQgPSB0ZXN0KCk7CisgICAgICAgIHNob3Vs
ZEJlKGByZXN1bHRgLCBgIkNvY29hImAsIHRydWUpOworICAgIH0KK30oKSk7Cis8L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4K
KzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL2RvbS9kb21qaXQt
ZnVuY3Rpb24tdHlwZS1jb250cmFkaWN0aW9uLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2pz
L2RvbS9kb21qaXQtZnVuY3Rpb24tdHlwZS1jb250cmFkaWN0aW9uLWV4cGVjdGVkLnR4dApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4zZDY4NzdkNGE4MDA2ODhiMjE2NzdiZWZhZmZlZWZmZDhhYjBiNzk2Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMvZG9tL2RvbWppdC1mdW5jdGlvbi10eXBlLWNvbnRy
YWRpY3Rpb24tZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsOCBAQAorVGVzdCBET01KSVQgZnVuY3Rp
b24gd2lsbCBjYXVzZSB0eXBlIGNvbnRyYWRpY3Rpb24gZ2l2aW5nIHVwLgorCitPbiBzdWNjZXNz
LCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAi
VEVTVCBDT01QTEVURSIuCisKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVT
VCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9kb20vZG9taml0LWZ1bmN0
aW9uLXR5cGUtY29udHJhZGljdGlvbi5odG1sIGIvTGF5b3V0VGVzdHMvanMvZG9tL2RvbWppdC1m
dW5jdGlvbi10eXBlLWNvbnRyYWRpY3Rpb24uaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44NGRjNWI2NzY5NDE4
ZTk2NTU1YmFiODM4N2MzMDYwMzRhZjVjMGMwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvanMvZG9tL2RvbWppdC1mdW5jdGlvbi10eXBlLWNvbnRyYWRpY3Rpb24uaHRtbApAQCAtMCww
ICsxLDM1IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5
PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+
CisKKzxkaXYgaWQ9InBhcmVudE5vZGUiPgorPGRpdiBpZD0icHJldmlvdXNTaWJsaW5nIj48L2Rp
dj48ZGl2IGlkPSJ0YXJnZXQiPjxkaXYgaWQ9ImZpcnN0Q2hpbGQiPjwvZGl2PjxkaXYgaWQ9Imxh
c3RDaGlsZCI+PC9kaXY+PC9kaXY+PGRpdiBpZD0ibmV4dFNpYmxpbmciPjwvZGl2PgorPC9kaXY+
CisKKzxzY3JpcHQ+CitkZXNjcmlwdGlvbignVGVzdCBET01KSVQgZnVuY3Rpb24gd2lsbCBjYXVz
ZSB0eXBlIGNvbnRyYWRpY3Rpb24gZ2l2aW5nIHVwLicpOworCit2YXIgZGl2ID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudCgnZGl2Jyk7CitkaXYuc2V0QXR0cmlidXRlKCJjb2NvYSIsICJDb2NvYSIp
OworZnVuY3Rpb24gdGVzdChkaXYpIHsKKyAgICB2YXIgcmV0ID0gImludmFsaWQiOworICAgIGZv
ciAodmFyIGkgPSAwOyBpIDwgMWU0OyArK2kpCisgICAgICAgIHJldCA9IGRpdi5nZXRBdHRyaWJ1
dGUoMjAwKTsKKyAgICByZXR1cm4gcmV0OworfQordmFyIHJlc3VsdDsKKyhmdW5jdGlvbiAoKSB7
CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxMDA7ICsraSkgeworICAgICAgICByZXN1bHQgPSB0
ZXN0KGRpdik7CisgICAgICAgIHNob3VsZEJlKGByZXN1bHRgLCBgbnVsbGAsIHRydWUpOworICAg
IH0KK30oKSk7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVz
dC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2pzL2RvbS9kb21qaXQtZnVuY3Rpb24tdHlwZS1mYWlsdXJlLWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL2pzL2RvbS9kb21qaXQtZnVuY3Rpb24tdHlwZS1mYWlsdXJlLWV4cGVjdGVk
LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4yYzEwMmIzNzZiZjgyMzJiNDJiZDFhM2NlNDFkZTE3NzFhMjdiNmM1
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMvZG9tL2RvbWppdC1mdW5jdGlvbi10
eXBlLWZhaWx1cmUtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsOCBAQAorVGVzdCBET01KSVQgZnVu
Y3Rpb24gd2lsbCBjYXVzZSBCYWRUeXBlIE9TUiBleGl0cy4KKworT24gc3VjY2VzcywgeW91IHdp
bGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09N
UExFVEUiLgorCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExF
VEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvZG9tL2RvbWppdC1mdW5jdGlvbi10eXBl
LWZhaWx1cmUuaHRtbCBiL0xheW91dFRlc3RzL2pzL2RvbS9kb21qaXQtZnVuY3Rpb24tdHlwZS1m
YWlsdXJlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmI3NjYxNDE4N2VkYTg3ZGFjMjZjMjBhNmUzMTIyY2Yw
NjU0YTgxNgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2pzL2RvbS9kb21qaXQtZnVu
Y3Rpb24tdHlwZS1mYWlsdXJlLmh0bWwKQEAgLTAsMCArMSwzOSBAQAorPCFET0NUWVBFIGh0bWw+
Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBy
ZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48
L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorCis8ZGl2IGlkPSJwYXJlbnROb2RlIj4K
KzxkaXYgaWQ9InByZXZpb3VzU2libGluZyI+PC9kaXY+PGRpdiBpZD0idGFyZ2V0Ij48ZGl2IGlk
PSJmaXJzdENoaWxkIj48L2Rpdj48ZGl2IGlkPSJsYXN0Q2hpbGQiPjwvZGl2PjwvZGl2PjxkaXYg
aWQ9Im5leHRTaWJsaW5nIj48L2Rpdj4KKzwvZGl2PgorCis8c2NyaXB0PgorZGVzY3JpcHRpb24o
J1Rlc3QgRE9NSklUIGZ1bmN0aW9uIHdpbGwgY2F1c2UgQmFkVHlwZSBPU1IgZXhpdHMuJyk7CisK
K3ZhciBkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKK2Rpdi5zZXRBdHRyaWJ1
dGUoImNvY29hIiwgIkNvY29hIik7CitmdW5jdGlvbiB0ZXN0KGRpdiwgbmFtZSkgeworICAgIHZh
ciByZXQgPSAiaW52YWxpZCI7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxZTQ7ICsraSkKKyAg
ICAgICAgcmV0ID0gZGl2LmdldEF0dHJpYnV0ZShuYW1lKTsKKyAgICByZXR1cm4gcmV0OworfQor
dmFyIHJlc3VsdDsKKyhmdW5jdGlvbiAoKSB7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxMDA7
ICsraSkgeworICAgICAgICByZXN1bHQgPSB0ZXN0KGRpdiwgJ2NvY29hJyk7CisgICAgICAgIHNo
b3VsZEJlKGByZXN1bHRgLCBgIkNvY29hImAsIHRydWUpOworICAgIH0KKyAgICBmb3IgKHZhciBp
ID0gMDsgaSA8IDEwMDsgKytpKSB7CisgICAgICAgIHJlc3VsdCA9IHRlc3QoZGl2LCA0MDApOwor
ICAgICAgICBzaG91bGRCZShgcmVzdWx0YCwgYG51bGxgLCB0cnVlKTsKKyAgICB9Cit9KCkpOwor
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+
PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9k
b20vZG9taml0LWZ1bmN0aW9uLmh0bWwgYi9MYXlvdXRUZXN0cy9qcy9kb20vZG9taml0LWZ1bmN0
aW9uLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uOTFlYThhNTk5ZDg5NjVkZTVhMDNhODU0ZDQ5NDNkZTViOWFj
M2Q2NAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2pzL2RvbS9kb21qaXQtZnVuY3Rp
b24uaHRtbApAQCAtMCwwICsxLDU4IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4K
KzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0idGFyZ2V0IiBjb2NvYT0iY29jb2EiPjxkaXYgaWQ9
ImZpcnN0Q2hpbGQiPjwvZGl2PjxkaXYgaWQ9Imxhc3RDaGlsZCI+PC9kaXY+PC9kaXY+Cis8L2Rp
dj4KKworPHNjcmlwdD4KK2Rlc2NyaXB0aW9uKCdUZXN0IERPTUpJVCBmdW5jdGlvbnMgd29yay4n
KTsKK3ZhciBkaXY7CisoZnVuY3Rpb24gKCkgeworICAgIGRpdiA9IGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCd0YXJnZXQnKTsKKworICAgIGZ1bmN0aW9uIGEoKQorICAgIHsKKyAgICAgICAgcmV0
dXJuIGRpdi5nZXRBdHRyaWJ1dGUoJ2NvY29hJykgPT09ICdjb2NvYSc7CisgICAgfQorCisgICAg
ZnVuY3Rpb24gYigpCisgICAgeworICAgICAgICByZXR1cm4gZGl2LmdldEF0dHJpYnV0ZU5vZGUo
J2NvY29hJykubm9kZVR5cGUgPT09IE5vZGUuQVRUUklCVVRFX05PREU7CisgICAgfQorCisgICAg
ZnVuY3Rpb24gYygpCisgICAgeworICAgICAgICByZXR1cm4gZGl2LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCdkaXYnKS5sZW5ndGggPT09IDI7CisgICAgfQorCisgICAgZnVuY3Rpb24gZCgpCisgICAg
eworICAgICAgICByZXR1cm4gZGl2Lmhhc0F0dHJpYnV0ZSgnY29jb2EnKSA9PT0gdHJ1ZTsKKyAg
ICB9CisKKyAgICBmdW5jdGlvbiBtYWluKCkKKyAgICB7CisgICAgICAgIGlmICghYSgpKQorICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBpZiAoIWIoKSkKKyAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICAgICAgaWYgKCFjKCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgICAgIGlmICghZCgpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IDFlNDsgKytpKSB7
CisgICAgICAgIGlmICghbWFpbigpKQorICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJlcnJv
ciIpOworICAgIH0KKyAgICB0ZXN0UGFzc2VkKCJBbGwgdGVzdHMgcGFzc2VkLiIpOworfSgpKTsK
Kzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMi
Pjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>293724</attachid>
            <date>2016-11-02 17:30:50 -0700</date>
            <delta_ts>2016-11-02 17:56:34 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-162980-20161102172651.patch</filename>
            <type>text/plain</type>
            <size>190231</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA4MzEzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAw
YjVkZGU5N2JiMjkxZDkwYjdkNzMxYmJhYzE3NGE0MDE2YmUzYjg0Li40NWIwYWQ0YzZlMGM2ODIw
OTc5ZmM4OGE5YmM1NzZlOGYzODA4YWIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMzMgQEAKKzIwMTYtMTEtMDIgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFp
bC5jb20+CisKKyAgICAgICAgW0RPTUpJVF0gQWRkIERPTUpJVDo6U2lnbmF0dXJlCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjI5ODAKKworICAgICAg
ICBSZXZpZXdlZCBieSBTYWFtIEJhcmF0aS4KKworICAgICAgICBUaGlzIHBhdGNoIGludHJvZHVj
ZXMgYSBuZXcgbWVjaGFuaXNtIGNhbGxlZCBET01KSVQ6OlNpZ25hdHVyZS4gV2UgY2FuIGFubm90
YXRlIHRoZSBmdW5jdGlvbiB3aXRoIERPTUpJVDo6U2lnbmF0dXJlLgorICAgICAgICBET01KSVQ6
OlNpZ25hdHVyZSBoYXMgdHlwZSBpbmZvcm1hdGlvbiBvZiB0aGF0IGZ1bmN0aW9uLiBBbmQgaXQg
YWxzbyBtYWludGFpbnMgdGhlIGVmZmVjdCBvZiB0aGUgZnVuY3Rpb24gYW5kIHRoZQorICAgICAg
ICBwb2ludGVyIHRvIHRoZSB1bnNhZmUgZnVuY3Rpb24uIFRoZSB1bnNhZmUgZnVuY3Rpb24gbWVh
bnMgdGhlIGZ1bmN0aW9uIHdpdGhvdXQgdHlwZSBhbmQgYXJndW1lbnQgY291bnQgY2hlY2tzLgor
ICAgICAgICBCeSB1c2luZyB0aGVzZSBpbmZvcm1hdGlvbiwgd2UgY2FuIHNlcGFyYXRlIHR5cGUg
YW5kIGFyZ3VtZW50IGNvdW50IGNoZWNrcyBmcm9tIHRoZSBmdW5jdGlvbi4gQW5kIHdlIGNhbiBl
bWl0CisgICAgICAgIHRoZXNlIHRoaW5ncyBhcyBERkcgY2hlY2tzIGFuZCBjb252ZXJ0IHRoZSBm
dW5jdGlvbiBjYWxsIGl0c2VsZiB0byBDYWxsRE9NIG5vZGUuIENhbGxET00gbm9kZSBjYW4gY2Fs
bCB0aGUgdW5zYWZlCisgICAgICAgIGZ1bmN0aW9uIGRpcmVjdGx5IHdpdGhvdXQgYW55IGNoZWNr
cy4gRnVydGhlcm1vcmUsIHRoaXMgQ2FsbERPTSBub2RlIGNhbiByZXByZXNlbnQgaXRzIG93biBj
bG9iYmVyaXppbmcgcnVsZXMgYmFzZWQKKyAgICAgICAgb24gRE9NSklUOjpFZmZlY3QgbWFpbnRh
aW5lZCBieSBET01KSVQ6OlNpZ25hdHVyZS4gSXQgYWxsb3dzIHVzIHRvIG1ha2Ugb3BhcXVlIENh
bGwgbm9kZSB0byBhIENhbGxET00gbm9kZSB0aGF0CisgICAgICAgIG1lcmVseSByZWFkcyBzb21l
IHBhcnQgb2YgaGVhcC4gVGhlc2UgY2hhbmdlcyAoMSkgY2FuIGRyb3AgZHVwbGljYXRlIHR5cGUg
Y2hlY2tzIGluIERGRywgKDIpIG9mZmVyIGFiaWxpdHkgdG8gbW92ZQorICAgICAgICBDYWxsRE9N
IG5vZGUgdG8gc29tZXdoZXJlLCBhbmQgKDMpIHRyYWNrIG1vcmUgZGV0YWlsZWQgaGVhcCByZWFk
cyBhbmQgd3JpdGVzIG9mIENhbGxET00gbm9kZXMuCisKKyAgICAgICAgV2UgZmlyc3QgZW1pdCBD
YWxsIG5vZGUgd2l0aCBET01KSVQ6OlNpZ25hdHVyZSBpbiBERkdCeXRlQ29kZVBhcnNlci4gQW5k
IGluIHRoZSBmaXh1cCBwaGFzZSwgd2UgYXR0ZW1wdCB0byBsb3dlcgorICAgICAgICBDYWxsIG5v
ZGUgdG8gQ2FsbERPTSBub2RlIHdpdGggY2hlY2tzICYgZWRnZSBmaWx0ZXJzLiBUaGlzIGlzIGJl
Y2F1c2Ugd2UgZG8gbm90IGtub3cgdGhlIHR5cGUgcHJlZGljdGlvbnMgaW4KKyAgICAgICAgREZH
Qnl0ZUNvZGVQYXJzZXIgcGhhc2UuIElmIHdlIGFsd2F5cyBlbWl0IENhbGxET00gbm9kZSBpbiBE
RkdCeXRlQ29kZVBhcnNlciwgaWYgd2UgZXZhbHVhdGUgYGRpdi5nZXRBdHRyaWJ1dGUodHJ1ZSlg
CisgICAgICAgIHRoaW5neSwgdGhlIFVuY291bnRhYmxlIE9TUiBleGl0cyByZXBlYXRlZGx5IGhh
cHBlbiBiZWNhdXNlIEFJIGZpZ3VyZXMgb3V0IHRoZSBhYnN0cmFjdCB2YWx1ZSBpcyBjbGVhcmVk
LgorCisgICAgICAgIEN1cnJlbnRseSwgRE9NSklUIHNpZ25hdHVyZSBvbmx5IGFsbG93cyB0aGUg
dHlwZXMgdGhhdCBjYW4gcmVzaWRlIGluIEdQUi4gVGhpcyBpcyBiZWNhdXNlIHRoZSB0eXBlcyBv
ZiB0aGUgdW5zYWZlCisgICAgICAgIGZ1bmN0aW9uIGFyZ3VtZW50cyBhcmUgcmVwcmVzZW50ZWQg
YXMgdGhlIHNlcXVlbmNlIG9mIHZvaWQqLiBJbiB0aGUgZnV0dXJlLCB3ZSB3aWxsIGV4dGVuZCB0
byBhY2NlcHQgb3RoZXIgdHlwZXMgbGlrZQorICAgICAgICBmbG9hdCwgZG91YmxlIGV0Yy4KKwor
ICAgICAgICBXZSBhbm5vdGF0ZSBzZXZlcmFsIGZ1bmN0aW9ucyBpbiBFbGVtZW50LiBJbiBwYXJ0
aWN1bGFyLCB3ZSBhbm5vdGF0ZSBFbGVtZW50OjpnZXRBdHRyaWJ1dGUuIFRoaXMgYWxsb3dzIHVz
IHRvIHBlcmZvcm0KKyAgICAgICAgTElDTSBpbiBEcm9tYWVvIGRvbS1hdHRyIHRlc3QuIEluIHRo
ZSBEcm9tYWVvIGRvbS1hdHRyIGdldEF0dHJpYnV0ZSB0ZXN0LCB3ZSBjYW4gc2VlIDMyeCBpbXBy
b3ZlbWVudC4gKDEzNDk3NC44IHYucy4gNDIwMy40KQorCisgICAgICAgICogSmF2YVNjcmlwdENv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBieXRlY29kZS9DYWxsVmFy
aWFudC5oOgorICAgICAgICAoSlNDOjpDYWxsVmFyaWFudDo6ZnVuY3Rpb25FeGVjdXRhYmxlKToK
KyAgICAgICAgKEpTQzo6Q2FsbFZhcmlhbnQ6Om5hdGl2ZUV4ZWN1dGFibGUpOgorICAgICAgICAo
SlNDOjpDYWxsVmFyaWFudDo6c2lnbmF0dXJlRm9yKToKKyAgICAgICAgKiBieXRlY29kZS9TcGVj
dWxhdGVkVHlwZS5oOgorICAgICAgICAoSlNDOjppc05vdFN0cmluZ1NwZWN1bGF0aW9uKToKKyAg
ICAgICAgKEpTQzo6aXNOb3RJbnQzMlNwZWN1bGF0aW9uKToKKyAgICAgICAgKEpTQzo6aXNOb3RC
b29sZWFuU3BlY3VsYXRpb24pOgorICAgICAgICAqIGRmZy9ERkdBYnN0cmFjdEludGVycHJldGVy
SW5saW5lcy5oOgorICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJh
Y3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyk6CisgICAgICAgICogZGZnL0RGR0J5dGVDb2Rl
UGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6YWRkQ2FsbCk6
CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUNhbGwpOgorICAgICAg
ICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjphdHRlbXB0VG9JbmxpbmVDYWxsKToKKyAgICAg
ICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW5saW5pbmcpOgorICAgICAgICAo
SlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVET01KSVRDYWxsKToKKyAgICAgICAgKEpT
Qzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayk6CisgICAgICAgICogZGZnL0RGR0Ns
b2JiZXJpemUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpjbG9iYmVyaXplKToKKyAgICAgICAgKiBk
ZmcvREZHRG9lc0dDLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpkb2VzR0MpOgorICAgICAgICAq
IGRmZy9ERkdGaXh1cFBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpGaXh1cFBoYXNlOjpm
aXh1cE5vZGUpOgorICAgICAgICAoSlNDOjpERkc6OkZpeHVwUGhhc2U6OmF0dGVtcHRUb01ha2VD
YWxsRE9NKToKKyAgICAgICAgKEpTQzo6REZHOjpGaXh1cFBoYXNlOjpmaXh1cENoZWNrRE9NKToK
KyAgICAgICAgKEpTQzo6REZHOjpGaXh1cFBoYXNlOjpmaXh1cENhbGxET00pOgorICAgICAgICAq
IGRmZy9ERkdOb2RlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpjb252ZXJ0VG9DYWxs
RE9NKToKKyAgICAgICAgKiBkZmcvREZHTm9kZS5oOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6
Omhhc0hlYXBQcmVkaWN0aW9uKToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpzaG91bGRTcGVj
dWxhdGVOb3RJbnQzMik6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6c2hvdWxkU3BlY3VsYXRl
Tm90Qm9vbGVhbik6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6c2hvdWxkU3BlY3VsYXRlTm90
U3RyaW5nKToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpoYXNTaWduYXR1cmUpOgorICAgICAg
ICAoSlNDOjpERkc6Ok5vZGU6OnNpZ25hdHVyZSk6CisgICAgICAgICogZGZnL0RGR05vZGVUeXBl
Lmg6CisgICAgICAgICogZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcDoKKyAg
ICAgICAgKiBkZmcvREZHU2FmZVRvRXhlY3V0ZS5oOgorICAgICAgICAoSlNDOjpERkc6OnNhZmVU
b0V4ZWN1dGUpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHA6CisgICAgICAg
IChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVDYWxsRE9NKToKKyAgICAgICAgKiBk
ZmcvREZHU3BlY3VsYXRpdmVKSVQuaDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJ
VDo6Y2FsbE9wZXJhdGlvbik6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQu
Y3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToKKyAgICAg
ICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGRvbWppdC9ET01KSVRFZmZlY3QuaDoK
KyAgICAgICAgKEpTQzo6RE9NSklUOjpFZmZlY3Q6OkVmZmVjdCk6CisgICAgICAgIChKU0M6OkRP
TUpJVDo6RWZmZWN0Ojpmb3JXcml0ZSk6CisgICAgICAgIChKU0M6OkRPTUpJVDo6RWZmZWN0Ojpm
b3JSZWFkKToKKyAgICAgICAgKEpTQzo6RE9NSklUOjpFZmZlY3Q6OmZvclJlYWRXcml0ZSk6Cisg
ICAgICAgIChKU0M6OkRPTUpJVDo6RWZmZWN0Ojpmb3JQdXJlKToKKyAgICAgICAgKEpTQzo6RE9N
SklUOjpFZmZlY3Q6OmZvckRlZik6CisgICAgICAgIChKU0M6OkRPTUpJVDo6RWZmZWN0OjptdXN0
R2VuZXJhdGUpOgorICAgICAgICBJbiBjbGFuZywgd2UgY2Fubm90IG1ha2UgdGhpcyBFZmZlY3Qg
Y29uc3RydWN0b3IgY29uc3RleHByIGlmIHdlIHVzZSBPcHRpb25hbDxIZWFwUmFuZ2U+LgorICAg
ICAgICBTbyB3ZSB1c2UgSGVhcFJhbmdlOjp0b3AoKSBmb3IgTnVsbG9wdCBkZWYgbm93LgorCisg
ICAgICAgICogZG9taml0L0RPTUpJVEhlYXBSYW5nZS5oOgorICAgICAgICAoSlNDOjpET01KSVQ6
OkhlYXBSYW5nZTo6ZnJvbVJhdyk6CisgICAgICAgIChKU0M6OkRPTUpJVDo6SGVhcFJhbmdlOjpv
cGVyYXRvcj09KToKKyAgICAgICAgKEpTQzo6RE9NSklUOjpIZWFwUmFuZ2U6Om9wZXJhdG9yIT0p
OgorICAgICAgICAoSlNDOjpET01KSVQ6OkhlYXBSYW5nZTo6ZnJvbUNvbnN0YW50KToKKyAgICAg
ICAgKiBkb21qaXQvRE9NSklUU2lnbmF0dXJlLmg6IENvcGllZCBmcm9tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kb21qaXQvRE9NSklURWZmZWN0LmguCisgICAgICAgIChKU0M6OkRPTUpJVDo6U2ln
bmF0dXJlOjpTaWduYXR1cmUpOgorICAgICAgICAoSlNDOjpET01KSVQ6OlNpZ25hdHVyZTo6YXJn
dW1lbnRDb3VudCk6CisgICAgICAgIChKU0M6OkRPTUpJVDo6U2lnbmF0dXJlOjpjaGVja0RPTSk6
CisgICAgICAgICogZnRsL0ZUTENhcGFiaWxpdGllcy5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6
Y2FuQ29tcGlsZSk6CisgICAgICAgICogZnRsL0ZUTExvd2VyREZHVG9CMy5jcHA6CisgICAgICAg
IChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVOb2RlKToKKyAgICAgICAgKEpT
Qzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZUNhbGxET00pOgorICAgICAgICAqIGpp
dC9KSVRPcGVyYXRpb25zLmg6CisgICAgICAgICogaml0L0pJVFRodW5rcy5jcHA6CisgICAgICAg
IChKU0M6OkpJVFRodW5rczo6aG9zdEZ1bmN0aW9uU3R1Yik6CisgICAgICAgICogaml0L0pJVFRo
dW5rcy5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNCb3VuZEZ1bmN0aW9uLmNwcDoKKyAgICAgICAg
KEpTQzo6SlNCb3VuZEZ1bmN0aW9uOjpjcmVhdGUpOgorICAgICAgICAqIHJ1bnRpbWUvSlNDZWxs
Lmg6CisgICAgICAgICogcnVudGltZS9KU0Z1bmN0aW9uLmNwcDoKKyAgICAgICAgKEpTQzo6SlNG
dW5jdGlvbjo6Y3JlYXRlKToKKyAgICAgICAgKiBydW50aW1lL0pTRnVuY3Rpb24uaDoKKyAgICAg
ICAgKiBydW50aW1lL0pTTmF0aXZlU3RkRnVuY3Rpb24uY3BwOgorICAgICAgICAoSlNDOjpKU05h
dGl2ZVN0ZEZ1bmN0aW9uOjpjcmVhdGUpOgorICAgICAgICAqIHJ1bnRpbWUvSlNPYmplY3QuY3Bw
OgorICAgICAgICAoSlNDOjpKU09iamVjdDo6cHV0RGlyZWN0TmF0aXZlRnVuY3Rpb24pOgorICAg
ICAgICAqIHJ1bnRpbWUvSlNPYmplY3QuaDoKKyAgICAgICAgKiBydW50aW1lL0xvb2t1cC5oOgor
ICAgICAgICAoSlNDOjpIYXNoVGFibGVWYWx1ZTo6ZnVuY3Rpb25MZW5ndGgpOgorICAgICAgICAo
SlNDOjpIYXNoVGFibGVWYWx1ZTo6c2lnbmF0dXJlKToKKyAgICAgICAgKEpTQzo6cmVpZnlTdGF0
aWNQcm9wZXJ0eSk6CisgICAgICAgICogcnVudGltZS9OYXRpdmVFeGVjdXRhYmxlLmNwcDoKKyAg
ICAgICAgKEpTQzo6TmF0aXZlRXhlY3V0YWJsZTo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6TmF0
aXZlRXhlY3V0YWJsZTo6TmF0aXZlRXhlY3V0YWJsZSk6CisgICAgICAgICogcnVudGltZS9OYXRp
dmVFeGVjdXRhYmxlLmg6CisgICAgICAgICogcnVudGltZS9Qcm9wZXJ0eVNsb3QuaDoKKyAgICAg
ICAgKiBydW50aW1lL1ZNLmNwcDoKKyAgICAgICAgKEpTQzo6Vk06OmdldEhvc3RGdW5jdGlvbik6
CisgICAgICAgICogcnVudGltZS9WTS5oOgorCiAyMDE2LTExLTAyICBHZW9mZnJleSBHYXJlbiAg
PGdnYXJlbkBhcHBsZS5jb20+CiAKICAgICAgICAgT25lIGZpbGUgcGVyIGNsYXNzIGZvciBVbmxp
bmtlZENvZGVCbG9jay5oLy5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAzNGYxZGRkZjU1NWE0MmM3M2Q5Mjll
OTI3YTVhMTFmZjczY2FiMmJkLi40MWJhYzU1YmM4NTU3NTFlZDdjZDlkNWI4NWQ4NTM0MzQ2ZDNi
YzFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTEwIEBACisyMDE2LTExLTAyICBZdXN1a2UgU3V6
dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgorCisgICAgICAgIFtET01KSVRdIEFkZCBET01K
SVQ6OlNpZ25hdHVyZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTYyOTgwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2FhbSBCYXJhdGkuCisKKyAgICAg
ICAgV2UgaW50cm9kdWNlIERPTUpJVDo6U2lnbmF0dXJlLiBUaGlzIHNpZ25hdHVyZSBvYmplY3Qg
aXMgYXV0b21hdGljYWxseSBnZW5lcmF0ZWQgYnkgSURMIGNvZGUgZ2VuZXJhdG9yLgorICAgICAg
ICBJdCBob2xkcyAoMSkgdHlwZXMsICgyKSBwb2ludGVyIHRvIHRoZSB1bnNhZmUgZnVuY3Rpb24g
KHRoZSBmdW5jdGlvbiB3aXRob3V0IGNoZWNrcyksIGFuZCAoMykgdGhlIGVmZmVjdAorICAgICAg
ICBvZiB0aGUgZnVuY3Rpb24uIFdlIHVzZSBjb25zdGV4cHIgdG8gaW5pdGlhbGl6ZSBET01KSVQ6
OlNpZ25hdHVyZSB3aXRob3V0IGludm9raW5nIGdsb2JhbCBjb25zdHJ1Y3RvcnMuCisgICAgICAg
IFRodXMgdGhlIGNvbnRlbnQgaXMgZW1iZWRkZWQgaW50byB0aGUgYmluYXJ5IGFzIHRoZSBjb25z
dGFudCB2YWx1ZXMuCisKKyAgICAgICAgV2UgYWxzbyBjbGVhbiB1cCB0aGUgSURMIGNvZGUgZ2Vu
ZXJhdG9yIHJlbGF0ZWQgdG8gRE9NSklUIHBhcnQuIEluc3RlYWQgb2Ygc3dpdGNoaW5nIHRoaW5n
cyBpbnNpZGUgSURMCisgICAgICAgIGNvZGUgZ2VuZXJhdG9yLCB3ZSB1c2UgQysrIHRlbXBsYXRl
IHRvIGRpc3BhdGNoIHRoaW5ncyBhdCBjb21waWxlIHRpbWUuIFRoaXMgdGVtcGxhdGUgbWV0YSBw
cm9ncmFtbWluZworICAgICAgICBpcyBoaWdobHkgdXRpbGl6ZWQgaW4gSURMIHRoZXNlIGRheXMu
CisKKyAgICAgICAgVG8gbWFrZSBET01KSVQ6OlNpZ25hdHVyZSBjb25zdGV4cHIsIHdlIGFsc28g
bmVlZCB0byBkZWZpbmUgRE9NSklUIGFic3RyYWN0IGhlYXAgdGhpbmdzIGluIHRoZSBidWlsZCB0
aW1lLgorICAgICAgICBUbyBkbyBzbywgd2UgaW50cm9kdWNlIGEgdGlueSBSdWJ5IHNjcmlwdCB0
byBjYWxjdWxhdGUgdGhlIHJhbmdlIG9mIGFic3RyYWN0IGhlYXBzLiBXZSBjYW4gb2ZmZXIgdGhl
IGFic3RyYWN0CisgICAgICAgIGhlYXAgdHJlZSBhcyBZQU1MIGZvcm1hdCBhbmQgdGhlIHNjcmlw
dCB3aWxsIHByb2R1Y2UgYSBDKysgaGVhZGVyIGhvbGRpbmcgdGhlIGNhbGN1bGF0ZWQgYWJzdHJh
Y3QgaGVhcCByYW5nZXMKKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIERl
cml2ZWRTb3VyY2VzLm1ha2U6CisgICAgICAgICogRm9yd2FyZGluZ0hlYWRlcnMvYnl0ZWNvZGUv
U3BlY3VsYXRlZFR5cGUuaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL2RvbWppdC9ET01K
SVRBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmguCisgICAgICAgICogRm9yd2FyZGluZ0hlYWRlcnMv
ZG9taml0L0RPTUpJVFNpZ25hdHVyZS5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvZG9t
aml0L0RPTUpJVEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuY3BwLgorICAgICAgICAqIFdlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUds
b2JhbE9iamVjdC5oOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpT
LnBtOgorICAgICAgICAoR2VuZXJhdGVIZWFkZXIpOgorICAgICAgICAoR2VuZXJhdGVQcm9wZXJ0
aWVzSGFzaFRhYmxlKToKKyAgICAgICAgKEdldFVuc2FmZUFyZ3VtZW50VHlwZSk6CisgICAgICAg
IChHZXRBcmd1bWVudFR5cGVGaWx0ZXIpOgorICAgICAgICAoR2V0UmVzdWx0VHlwZUZpbHRlcik6
CisgICAgICAgIChHZW5lcmF0ZUltcGxlbWVudGF0aW9uKToKKyAgICAgICAgKFVuc2FmZVRvTmF0
aXZlKToKKyAgICAgICAgKEdlbmVyYXRlSGFzaFRhYmxlVmFsdWVBcnJheSk6CisgICAgICAgIChD
b21wdXRlRnVuY3Rpb25TcGVjaWFsKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0lETEF0
dHJpYnV0ZXMudHh0OgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RE
T01KSVQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QmluZGluZ0NhbGxlcjxKU1Rlc3RET01KSVQ+
OjpjYXN0Rm9yT3BlcmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RET01KSVRBbnlBdHRy
RE9NSklUOjpUZXN0RE9NSklUQW55QXR0ckRPTUpJVCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0
RE9NSklUQm9vbGVhbkF0dHJET01KSVQ6OlRlc3RET01KSVRCb29sZWFuQXR0ckRPTUpJVCk6Cisg
ICAgICAgIChXZWJDb3JlOjpUZXN0RE9NSklUQnl0ZUF0dHJET01KSVQ6OlRlc3RET01KSVRCeXRl
QXR0ckRPTUpJVCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0RE9NSklUT2N0ZXRBdHRyRE9NSklU
OjpUZXN0RE9NSklUT2N0ZXRBdHRyRE9NSklUKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RET01K
SVRTaG9ydEF0dHJET01KSVQ6OlRlc3RET01KSVRTaG9ydEF0dHJET01KSVQpOgorICAgICAgICAo
V2ViQ29yZTo6VGVzdERPTUpJVFVuc2lnbmVkU2hvcnRBdHRyRE9NSklUOjpUZXN0RE9NSklUVW5z
aWduZWRTaG9ydEF0dHJET01KSVQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdERPTUpJVExvbmdB
dHRyRE9NSklUOjpUZXN0RE9NSklUTG9uZ0F0dHJET01KSVQpOgorICAgICAgICAoV2ViQ29yZTo6
VGVzdERPTUpJVFVuc2lnbmVkTG9uZ0F0dHJET01KSVQ6OlRlc3RET01KSVRVbnNpZ25lZExvbmdB
dHRyRE9NSklUKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RET01KSVRMb25nTG9uZ0F0dHJET01K
SVQ6OlRlc3RET01KSVRMb25nTG9uZ0F0dHJET01KSVQpOgorICAgICAgICAoV2ViQ29yZTo6VGVz
dERPTUpJVFVuc2lnbmVkTG9uZ0xvbmdBdHRyRE9NSklUOjpUZXN0RE9NSklUVW5zaWduZWRMb25n
TG9uZ0F0dHJET01KSVQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdERPTUpJVEZsb2F0QXR0ckRP
TUpJVDo6VGVzdERPTUpJVEZsb2F0QXR0ckRPTUpJVCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0
RE9NSklUVW5yZXN0cmljdGVkRmxvYXRBdHRyRE9NSklUOjpUZXN0RE9NSklUVW5yZXN0cmljdGVk
RmxvYXRBdHRyRE9NSklUKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RET01KSVREb3VibGVBdHRy
RE9NSklUOjpUZXN0RE9NSklURG91YmxlQXR0ckRPTUpJVCk6CisgICAgICAgIChXZWJDb3JlOjpU
ZXN0RE9NSklUVW5yZXN0cmljdGVkRG91YmxlQXR0ckRPTUpJVDo6VGVzdERPTUpJVFVucmVzdHJp
Y3RlZERvdWJsZUF0dHJET01KSVQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdERPTUpJVERvbVN0
cmluZ0F0dHJET01KSVQ6OlRlc3RET01KSVREb21TdHJpbmdBdHRyRE9NSklUKToKKyAgICAgICAg
KFdlYkNvcmU6OlRlc3RET01KSVRCeXRlU3RyaW5nQXR0ckRPTUpJVDo6VGVzdERPTUpJVEJ5dGVT
dHJpbmdBdHRyRE9NSklUKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RET01KSVRVc3ZTdHJpbmdB
dHRyRE9NSklUOjpUZXN0RE9NSklUVXN2U3RyaW5nQXR0ckRPTUpJVCk6CisgICAgICAgIChXZWJD
b3JlOjpUZXN0RE9NSklUTm9kZUF0dHJET01KSVQ6OlRlc3RET01KSVROb2RlQXR0ckRPTUpJVCk6
CisgICAgICAgIChXZWJDb3JlOjpUZXN0RE9NSklUQm9vbGVhbk51bGxhYmxlQXR0ckRPTUpJVDo6
VGVzdERPTUpJVEJvb2xlYW5OdWxsYWJsZUF0dHJET01KSVQpOgorICAgICAgICAoV2ViQ29yZTo6
VGVzdERPTUpJVEJ5dGVOdWxsYWJsZUF0dHJET01KSVQ6OlRlc3RET01KSVRCeXRlTnVsbGFibGVB
dHRyRE9NSklUKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RET01KSVRPY3RldE51bGxhYmxlQXR0
ckRPTUpJVDo6VGVzdERPTUpJVE9jdGV0TnVsbGFibGVBdHRyRE9NSklUKToKKyAgICAgICAgKFdl
YkNvcmU6OlRlc3RET01KSVRTaG9ydE51bGxhYmxlQXR0ckRPTUpJVDo6VGVzdERPTUpJVFNob3J0
TnVsbGFibGVBdHRyRE9NSklUKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RET01KSVRVbnNpZ25l
ZFNob3J0TnVsbGFibGVBdHRyRE9NSklUOjpUZXN0RE9NSklUVW5zaWduZWRTaG9ydE51bGxhYmxl
QXR0ckRPTUpJVCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0RE9NSklUTG9uZ051bGxhYmxlQXR0
ckRPTUpJVDo6VGVzdERPTUpJVExvbmdOdWxsYWJsZUF0dHJET01KSVQpOgorICAgICAgICAoV2Vi
Q29yZTo6VGVzdERPTUpJVFVuc2lnbmVkTG9uZ051bGxhYmxlQXR0ckRPTUpJVDo6VGVzdERPTUpJ
VFVuc2lnbmVkTG9uZ051bGxhYmxlQXR0ckRPTUpJVCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0
RE9NSklUTG9uZ0xvbmdOdWxsYWJsZUF0dHJET01KSVQ6OlRlc3RET01KSVRMb25nTG9uZ051bGxh
YmxlQXR0ckRPTUpJVCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0RE9NSklUVW5zaWduZWRMb25n
TG9uZ051bGxhYmxlQXR0ckRPTUpJVDo6VGVzdERPTUpJVFVuc2lnbmVkTG9uZ0xvbmdOdWxsYWJs
ZUF0dHJET01KSVQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdERPTUpJVEZsb2F0TnVsbGFibGVB
dHRyRE9NSklUOjpUZXN0RE9NSklURmxvYXROdWxsYWJsZUF0dHJET01KSVQpOgorICAgICAgICAo
V2ViQ29yZTo6VGVzdERPTUpJVFVucmVzdHJpY3RlZEZsb2F0TnVsbGFibGVBdHRyRE9NSklUOjpU
ZXN0RE9NSklUVW5yZXN0cmljdGVkRmxvYXROdWxsYWJsZUF0dHJET01KSVQpOgorICAgICAgICAo
V2ViQ29yZTo6VGVzdERPTUpJVERvdWJsZU51bGxhYmxlQXR0ckRPTUpJVDo6VGVzdERPTUpJVERv
dWJsZU51bGxhYmxlQXR0ckRPTUpJVCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0RE9NSklUVW5y
ZXN0cmljdGVkRG91YmxlTnVsbGFibGVBdHRyRE9NSklUOjpUZXN0RE9NSklUVW5yZXN0cmljdGVk
RG91YmxlTnVsbGFibGVBdHRyRE9NSklUKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RET01KSVRE
b21TdHJpbmdOdWxsYWJsZUF0dHJET01KSVQ6OlRlc3RET01KSVREb21TdHJpbmdOdWxsYWJsZUF0
dHJET01KSVQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdERPTUpJVEJ5dGVTdHJpbmdOdWxsYWJs
ZUF0dHJET01KSVQ6OlRlc3RET01KSVRCeXRlU3RyaW5nTnVsbGFibGVBdHRyRE9NSklUKToKKyAg
ICAgICAgKFdlYkNvcmU6OlRlc3RET01KSVRVc3ZTdHJpbmdOdWxsYWJsZUF0dHJET01KSVQ6OlRl
c3RET01KSVRVc3ZTdHJpbmdOdWxsYWJsZUF0dHJET01KSVQpOgorICAgICAgICAoV2ViQ29yZTo6
VGVzdERPTUpJVE5vZGVOdWxsYWJsZUF0dHJET01KSVQ6OlRlc3RET01KSVROb2RlTnVsbGFibGVB
dHRyRE9NSklUKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdERPTUpJVFByb3RvdHlwZUZ1bmN0
aW9uR2V0QXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdERPTUpJVFByb3RvdHlw
ZUZ1bmN0aW9uR2V0QXR0cmlidXRlQ2FsbGVyKToKKyAgICAgICAgKFdlYkNvcmU6OnVuc2FmZUpz
VGVzdERPTUpJVFByb3RvdHlwZUZ1bmN0aW9uR2V0QXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNv
cmU6OmpzVGVzdERPTUpJVFByb3RvdHlwZUZ1bmN0aW9uSXRlbSk6CisgICAgICAgIChXZWJDb3Jl
Ojpqc1Rlc3RET01KSVRQcm90b3R5cGVGdW5jdGlvbkl0ZW1DYWxsZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6dW5zYWZlSnNUZXN0RE9NSklUUHJvdG90eXBlRnVuY3Rpb25JdGVtKToKKyAgICAgICAg
KFdlYkNvcmU6OmpzVGVzdERPTUpJVFByb3RvdHlwZUZ1bmN0aW9uSGFzQXR0cmlidXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6OmpzVGVzdERPTUpJVFByb3RvdHlwZUZ1bmN0aW9uSGFzQXR0cmlidXRl
Q2FsbGVyKToKKyAgICAgICAgKFdlYkNvcmU6OnVuc2FmZUpzVGVzdERPTUpJVFByb3RvdHlwZUZ1
bmN0aW9uSGFzQXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdERPTUpJVFByb3Rv
dHlwZUZ1bmN0aW9uR2V0RWxlbWVudEJ5SWQpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0RE9N
SklUUHJvdG90eXBlRnVuY3Rpb25HZXRFbGVtZW50QnlJZENhbGxlcik6CisgICAgICAgIChXZWJD
b3JlOjp1bnNhZmVKc1Rlc3RET01KSVRQcm90b3R5cGVGdW5jdGlvbkdldEVsZW1lbnRCeUlkKToK
KyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdERPTUpJVFByb3RvdHlwZUZ1bmN0aW9uR2V0RWxlbWVu
dHNCeU5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0RE9NSklUUHJvdG90eXBlRnVuY3Rp
b25HZXRFbGVtZW50c0J5TmFtZUNhbGxlcik6CisgICAgICAgIChXZWJDb3JlOjp1bnNhZmVKc1Rl
c3RET01KSVRQcm90b3R5cGVGdW5jdGlvbkdldEVsZW1lbnRzQnlOYW1lKToKKyAgICAgICAgKiBi
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdERPTUpJVC5pZGw6CisgICAgICAgICogZG9tL0VsZW1l
bnQuaWRsOgorICAgICAgICAqIGRvbWppdC9ET01KSVRBYnN0cmFjdEhlYXBSZXBvc2l0b3J5Lnlh
bWw6IEFkZGVkLgorICAgICAgICAqIGRvbWppdC9ET01KSVRJRExDb252ZXJ0Lmg6IEFkZGVkLgor
ICAgICAgICAoV2ViQ29yZTo6RE9NSklUOjpEaXJlY3RDb252ZXJ0ZXI8SURMRE9NU3RyaW5nPjo6
ZGlyZWN0Q29udmVydDxTdHJpbmdDb252ZXJzaW9uQ29uZmlndXJhdGlvbjo6Tm9ybWFsPik6Cisg
ICAgICAgICogZG9taml0L0RPTUpJVElETFR5cGUuaDogQWRkZWQuCisgICAgICAgICogZG9taml0
L0RPTUpJVElETFR5cGVGaWx0ZXIuaDogQWRkZWQuCisgICAgICAgICogZG9taml0L0pTRG9jdW1l
bnRET01KSVQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnREb2N1bWVudEVsZW1lbnRE
T01KSVQ6OmNhbGxET01HZXR0ZXIpOgorICAgICAgICAqIGRvbWppdC9KU05vZGVET01KSVQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Tm9kZUZpcnN0Q2hpbGRET01KSVQ6OmNhbGxET01HZXR0ZXIp
OgorICAgICAgICAoV2ViQ29yZTo6Tm9kZUxhc3RDaGlsZERPTUpJVDo6Y2FsbERPTUdldHRlcik6
CisgICAgICAgIChXZWJDb3JlOjpOb2RlTmV4dFNpYmxpbmdET01KSVQ6OmNhbGxET01HZXR0ZXIp
OgorICAgICAgICAoV2ViQ29yZTo6Tm9kZVByZXZpb3VzU2libGluZ0RPTUpJVDo6Y2FsbERPTUdl
dHRlcik6CisgICAgICAgIChXZWJDb3JlOjpOb2RlUGFyZW50Tm9kZURPTUpJVDo6Y2FsbERPTUdl
dHRlcik6CisgICAgICAgIChXZWJDb3JlOjpOb2RlT3duZXJEb2N1bWVudERPTUpJVDo6Y2FsbERP
TUdldHRlcik6CisgICAgICAgICogZG9taml0L2dlbmVyYXRlLWFic3RyYWN0LWhlYXAucmI6IEFk
ZGVkLgorCiAyMDE2LTExLTAyICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5j
b20+CiAKICAgICAgICAgW2lPU10gW1dlYkdMXSBNdWx0aXNhbXBsZSByZXNvbHZlIHN0ZXAgbWF5
IG9wZXJhdGUgb24gc3RhbGUgZGF0YQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAz
YjA0YTE4NmY1ODEwNjdjM2E4MmZiYWEzMmU0NjBjODcxNTgwMzVmLi4wMTZlNGY5ZjY2ZTE4NjRh
NWI3MTIyNjc1NjQyZTFkZDZmZGRhZGY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpA
QCAtMjIwOCw2ICsyMjA4LDcgQEAKIAkJRTMzRjUwODUxQjg0MzdBMDAwNDEzODU2IC8qIEpTSW50
ZXJuYWxQcm9taXNlRGVmZXJyZWQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEUzM0Y1MDgzMUI4NDM3QTAwMDQxMzg1NiAvKiBKU0ludGVybmFsUHJvbWlz
ZURlZmVycmVkLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJRTMzRjUwODcxQjg0NDlFRjAwNDEzODU2IC8qIEpTSW50ZXJuYWxQcm9taXNlQ29uc3Ry
dWN0b3IubHV0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBFMzNGNTA4NjFCODQ0OUVGMDA0MTM4NTYgLyogSlNJbnRlcm5hbFByb21pc2VDb25zdHJ1Y3Rv
ci5sdXQuaCAqLzsgfTsKIAkJRTM0RURCRjcxREI1RkZDOTAwREM4N0E1IC8qIEZyYW1lVHJhY2Vy
cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM0RURC
RjYxREI1RkZDMTAwREM4N0E1IC8qIEZyYW1lVHJhY2Vycy5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUUzNTA3MDhBMURDNDlCQkYwMDg5QkNENiAv
KiBET01KSVRTaWduYXR1cmUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEUzNTA3MDg5MURDNDlCQjYwMDg5QkNENiAvKiBET01KSVRTaWduYXR1cmUuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFMzU0NjIy
QjFCNjA2NUQxMDA1NDUzODYgLyogQ29uc3RydWN0QWJpbGl0eS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM1NDYyMkExQjYwNjVEMTAwNTQ1Mzg2IC8q
IENvbnN0cnVjdEFiaWxpdHkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQlFMzU1NUI4QTFEQUUwM0E1MDBGMzY5MjEgLyogRE9NSklUQ2FsbERPTUdl
dHRlclBhdGNocG9pbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEUzNTU1Qjg5MURBRTAzQTIwMEYzNjkyMSAvKiBET01KSVRDYWxsRE9NR2V0dGVyUGF0
Y2hwb2ludC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCUUzNTVGMzUyMUI3REM4NTMwMEM1MERDNSAvKiBNb2R1bGVMb2FkZXJQcm90b3R5cGUuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM1NUYzNTAx
QjdEQzg1MzAwQzUwREM1IC8qIE1vZHVsZUxvYWRlclByb3RvdHlwZS5jcHAgKi87IH07CkBAIC00
NjM0LDYgKzQ2MzUsNyBAQAogCQlFMzNGNTA4NjFCODQ0OUVGMDA0MTM4NTYgLyogSlNJbnRlcm5h
bFByb21pc2VDb25zdHJ1Y3Rvci5sdXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gSlNJbnRlcm5hbFByb21pc2VDb25zdHJ1Y3Rvci5sdXQuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJRTMzRjUwODgxQjg0NEExQTAwNDEzODU2IC8qIEludGVybmFsUHJvbWlzZUNv
bnN0cnVjdG9yLmpzICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5qYXZhc2NyaXB0OyBwYXRoID0gSW50
ZXJuYWxQcm9taXNlQ29uc3RydWN0b3IuanM7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUUzNEVEQkY2MURCNUZGQzEwMERDODdBNSAvKiBGcmFtZVRyYWNlcnMuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gRnJhbWVUcmFjZXJzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCUUzNTA3MDg5MURDNDlCQjYwMDg5QkNENiAvKiBET01KSVRTaWduYXR1cmUuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRE9NSklUU2lnbmF0dXJlLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzNTQ2MjJBMUI2MDY1RDEwMDU0NTM4NiAvKiBDb25z
dHJ1Y3RBYmlsaXR5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvbnN0cnVj
dEFiaWxpdHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM1NTVCODkxREFFMDNB
MjAwRjM2OTIxIC8qIERPTUpJVENhbGxET01HZXR0ZXJQYXRjaHBvaW50LmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERPTUpJVENhbGxET01HZXR0ZXJQYXRjaHBvaW50Lmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzNTVGMzUwMUI3REM4NTMwMEM1MERDNSAvKiBN
b2R1bGVMb2FkZXJQcm90b3R5cGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gTW9kdWxlTG9hZGVyUHJvdG90eXBlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKQEAgLTc1NzUsNiArNzU3Nyw3IEBACiAJCQkJRTM3QUQ4M0ExREE0OTI4MDAwRjNENDEyIC8q
IERPTUpJVFBhdGNocG9pbnRQYXJhbXMuaCAqLywKIAkJCQlFMzdBRDgzQjFEQTQ5MjgwMDBGM0Q0
MTIgLyogRE9NSklUUmVnLmggKi8sCiAJCQkJRTNDQjFFMjQxREE3NTQwQTAwRkExRTU2IC8qIERP
TUpJVFNsb3dQYXRoQ2FsbHMuaCAqLywKKwkJCQlFMzUwNzA4OTFEQzQ5QkI2MDA4OUJDRDYgLyog
RE9NSklUU2lnbmF0dXJlLmggKi8sCiAJCQkJRTNGRkM4NTIxREFEN0QxMDAwREVBNTNFIC8qIERP
TUpJVFZhbHVlLmggKi8sCiAJCQkpOwogCQkJcGF0aCA9IGRvbWppdDsKQEAgLTg1MDMsNiArODUw
Niw3IEBACiAJCQkJNDNBQjI2QzYxQzFBNTM1OTAwRDgyQUU2IC8qIEIzTWF0aEV4dHJhcy5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQUQyRkNCRjMxREI1OERBRDAwQjNFNzM2IC8qIFdlYkFzc2VtYmx5
SW5zdGFuY2VQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDNDI5MEUxNkY1Q0Qw
MEIzNDQ2MCAvKiBKU1N0cmluZ1JlZkNGLmggaW4gSGVhZGVycyAqLywKKwkJCQlFMzUwNzA4QTFE
QzQ5QkJGMDA4OUJDRDYgLyogRE9NSklUU2lnbmF0dXJlLmggaW4gSGVhZGVycyAqLywKIAkJCQkx
QTI4RDRBODE3N0I3MUM4MDAwN0ZBM0MgLyogSlNTdHJpbmdSZWZQcml2YXRlLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkwRjkxOUQwRDE1N0VFMEEyMDA0QTRFN0QgLyogSlNTeW1ib2xUYWJsZU9iamVj
dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNzBFQ0E2MDYxQUZEQkVBMjAwNDQ5NzM5IC8qIEpTVGVt
cGxhdGVSZWdpc3RyeUtleS5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbFZhcmlhbnQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9DYWxsVmFyaWFudC5oCmluZGV4IGRlNjg4MDA2ZWYxYTk5ZTlkZDYwYjAxYTZl
MDE3N2NiOThlYzdiNTEuLmNiMjg4YzYwYjdhNGYxMzhiYWYyMTQyODQ5ZTEzOTFhOGQxMTFiYTcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsVmFyaWFudC5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsVmFyaWFudC5oCkBAIC0y
OCw2ICsyOCw3IEBACiAjaW5jbHVkZSAiRnVuY3Rpb25FeGVjdXRhYmxlLmgiCiAjaW5jbHVkZSAi
SlNDZWxsLmgiCiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgorI2luY2x1ZGUgIk5hdGl2ZUV4ZWN1
dGFibGUuaCIKIAogbmFtZXNwYWNlIEpTQyB7CiAKQEAgLTEyMCw2ICsxMjEsMjAgQEAgY2xhc3Mg
Q2FsbFZhcmlhbnQgewogICAgICAgICAgICAgcmV0dXJuIGpzRHluYW1pY0Nhc3Q8RnVuY3Rpb25F
eGVjdXRhYmxlKj4oZXhlY3V0YWJsZSk7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0K
KworICAgIE5hdGl2ZUV4ZWN1dGFibGUqIG5hdGl2ZUV4ZWN1dGFibGUoKSBjb25zdAorICAgIHsK
KyAgICAgICAgaWYgKEV4ZWN1dGFibGVCYXNlKiBleGVjdXRhYmxlID0gdGhpcy0+ZXhlY3V0YWJs
ZSgpKQorICAgICAgICAgICAgcmV0dXJuIGpzRHluYW1pY0Nhc3Q8TmF0aXZlRXhlY3V0YWJsZSo+
KGV4ZWN1dGFibGUpOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisKKyAgICBjb25z
dCBET01KSVQ6OlNpZ25hdHVyZSogc2lnbmF0dXJlRm9yKENvZGVTcGVjaWFsaXphdGlvbktpbmQg
a2luZCkgY29uc3QKKyAgICB7CisgICAgICAgIGlmIChOYXRpdmVFeGVjdXRhYmxlKiBuYXRpdmVF
eGVjdXRhYmxlID0gdGhpcy0+bmF0aXZlRXhlY3V0YWJsZSgpKQorICAgICAgICAgICAgcmV0dXJu
IG5hdGl2ZUV4ZWN1dGFibGUtPnNpZ25hdHVyZUZvcihraW5kKTsKKyAgICAgICAgcmV0dXJuIG51
bGxwdHI7CisgICAgfQogICAgIAogICAgIHZvaWQgZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25z
dDsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TcGVj
dWxhdGVkVHlwZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NwZWN1bGF0ZWRU
eXBlLmgKaW5kZXggZjQzZGZjZDMxNTg3MWU5ODk1M2VhMmRkZGM0YmYzMzUyNWNjZGZkZi4uZTIz
ZmQyYzVmNTRjZWUwOWM3YTIzYmRjMTQ5OTkwYjYwOWIwMTkwMCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmgKQEAgLTE1MSw2ICsxNTEsMTEg
QEAgaW5saW5lIGJvb2wgaXNTdHJpbmdTcGVjdWxhdGlvbihTcGVjdWxhdGVkVHlwZSB2YWx1ZSkK
ICAgICByZXR1cm4gISF2YWx1ZSAmJiAodmFsdWUgJiBTcGVjU3RyaW5nKSA9PSB2YWx1ZTsKIH0K
IAoraW5saW5lIGJvb2wgaXNOb3RTdHJpbmdTcGVjdWxhdGlvbihTcGVjdWxhdGVkVHlwZSB2YWx1
ZSkKK3sKKyAgICByZXR1cm4gdmFsdWUgJiYgISh2YWx1ZSAmIFNwZWNTdHJpbmcpOworfQorCiBp
bmxpbmUgYm9vbCBpc1N0cmluZ09yT3RoZXJTcGVjdWxhdGlvbihTcGVjdWxhdGVkVHlwZSB2YWx1
ZSkKIHsKICAgICByZXR1cm4gISF2YWx1ZSAmJiAodmFsdWUgJiAoU3BlY1N0cmluZyB8IFNwZWNP
dGhlcikpID09IHZhbHVlOwpAQCAtMzAzLDYgKzMwOCwxMSBAQCBpbmxpbmUgYm9vbCBpc0ludDMy
U3BlY3VsYXRpb24oU3BlY3VsYXRlZFR5cGUgdmFsdWUpCiAgICAgcmV0dXJuIHZhbHVlICYmICEo
dmFsdWUgJiB+U3BlY0ludDMyT25seSk7CiB9CiAKK2lubGluZSBib29sIGlzTm90SW50MzJTcGVj
dWxhdGlvbihTcGVjdWxhdGVkVHlwZSB2YWx1ZSkKK3sKKyAgICByZXR1cm4gdmFsdWUgJiYgISh2
YWx1ZSAmIFNwZWNJbnQzMk9ubHkpOworfQorCiBpbmxpbmUgYm9vbCBpc0ludDMyT3JCb29sZWFu
U3BlY3VsYXRpb24oU3BlY3VsYXRlZFR5cGUgdmFsdWUpCiB7CiAgICAgcmV0dXJuIHZhbHVlICYm
ICEodmFsdWUgJiB+KFNwZWNCb29sZWFuIHwgU3BlY0ludDMyT25seSkpOwpAQCAtMzg4LDYgKzM5
OCwxMSBAQCBpbmxpbmUgYm9vbCBpc0Jvb2xlYW5TcGVjdWxhdGlvbihTcGVjdWxhdGVkVHlwZSB2
YWx1ZSkKICAgICByZXR1cm4gdmFsdWUgPT0gU3BlY0Jvb2xlYW47CiB9CiAKK2lubGluZSBib29s
IGlzTm90Qm9vbGVhblNwZWN1bGF0aW9uKFNwZWN1bGF0ZWRUeXBlIHZhbHVlKQoreworICAgIHJl
dHVybiB2YWx1ZSAmJiAhKHZhbHVlICYgU3BlY0Jvb2xlYW4pOworfQorCiBpbmxpbmUgYm9vbCBp
c090aGVyU3BlY3VsYXRpb24oU3BlY3VsYXRlZFR5cGUgdmFsdWUpCiB7CiAgICAgcmV0dXJuIHZh
bHVlID09IFNwZWNPdGhlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAppbmRleCA0M2I1MWExNmVjYmFkYTUw
ZjlkN2Y4OGVlZTNjZjExMjZiN2EyMjRhLi43YWRiYTcxNjAxNDYxNTEwNzJlZjY5OWQyMjZhMmFm
M2NlYTA4ZDAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3Ry
YWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVk
ZSAiQXJyYXlDb25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUgIkRGR0Fic3RyYWN0SW50ZXJwcmV0ZXIu
aCIKICNpbmNsdWRlICJET01KSVRHZXR0ZXJTZXR0ZXIuaCIKKyNpbmNsdWRlICJET01KSVRTaWdu
YXR1cmUuaCIKICNpbmNsdWRlICJHZXRCeUlkU3RhdHVzLmgiCiAjaW5jbHVkZSAiR2V0dGVyU2V0
dGVyLmgiCiAjaW5jbHVkZSAiSGFzaE1hcEltcGwuaCIKQEAgLTIzMDMsNiArMjMwNCwxMyBAQCBi
b29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0
cyh1bnNpZ25lZCBjbG9iYmVyTGltaQogICAgICAgICBmb3JOb2RlKG5vZGUpLnNldFR5cGUobV9n
cmFwaCwgY2FsbERPTUdldHRlckRhdGEtPmRvbUpJVC0+cmVzdWx0VHlwZSgpKTsKICAgICAgICAg
YnJlYWs7CiAgICAgfQorICAgIGNhc2UgQ2FsbERPTTogeworICAgICAgICBjb25zdCBET01KSVQ6
OlNpZ25hdHVyZSogc2lnbmF0dXJlID0gbm9kZS0+c2lnbmF0dXJlKCk7CisgICAgICAgIGlmIChz
aWduYXR1cmUtPmVmZmVjdC53cml0ZXMpCisgICAgICAgICAgICBjbG9iYmVyV29ybGQobm9kZS0+
b3JpZ2luLnNlbWFudGljLCBjbG9iYmVyTGltaXQpOworICAgICAgICBmb3JOb2RlKG5vZGUpLnNl
dFR5cGUobV9ncmFwaCwgc2lnbmF0dXJlLT5yZXN1bHQpOworICAgICAgICBicmVhazsKKyAgICB9
CiAgICAgY2FzZSBDaGVja0FycmF5OiB7CiAgICAgICAgIGlmIChub2RlLT5hcnJheU1vZGUoKS5h
bHJlYWR5Q2hlY2tlZChtX2dyYXBoLCBub2RlLCBmb3JOb2RlKG5vZGUtPmNoaWxkMSgpKSkpIHsK
ICAgICAgICAgICAgIG1fc3RhdGUuc2V0Rm91bmRDb25zdGFudHModHJ1ZSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCmluZGV4IGU1MTRlZTFk
MzFhY2E3NzFiMzU4NWZjNzZkOTU2ZTc5NTBiMDBiMzMuLjdmMjFmYTYyNjgwZWZkZGY2ODBjMGRj
NzE3MDNiMjNlNjhiNzc4YjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQnl0ZUNvZGVQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Qnl0ZUNvZGVQYXJzZXIuY3BwCkBAIC0yMTMsNiArMjEzLDggQEAgY2xhc3MgQnl0ZUNvZGVQYXJz
ZXIgewogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoZWNrc0Z1bmN0b3I+CiAgICAgYm9vbCBoYW5k
bGVJbnRyaW5zaWNDYWxsKE5vZGUqIGNhbGxlZSwgaW50IHJlc3VsdE9wZXJhbmQsIEludHJpbnNp
YywgaW50IHJlZ2lzdGVyT2Zmc2V0LCBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIFNw
ZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24sIGNvbnN0IENoZWNrc0Z1bmN0b3ImIGluc2VydENoZWNr
cyk7CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hlY2tzRnVuY3Rvcj4KKyAgICBib29sIGhhbmRs
ZURPTUpJVENhbGwoTm9kZSogY2FsbGVlLCBpbnQgcmVzdWx0T3BlcmFuZCwgY29uc3QgRE9NSklU
OjpTaWduYXR1cmUqLCBpbnQgcmVnaXN0ZXJPZmZzZXQsIGludCBhcmd1bWVudENvdW50SW5jbHVk
aW5nVGhpcywgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbiwgY29uc3QgQ2hlY2tzRnVuY3RvciYg
aW5zZXJ0Q2hlY2tzKTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGVja3NGdW5jdG9yPgogICAg
IGJvb2wgaGFuZGxlSW50cmluc2ljR2V0dGVyKGludCByZXN1bHRPcGVyYW5kLCBjb25zdCBHZXRC
eUlkVmFyaWFudCYgaW50cmluc2ljVmFyaWFudCwgTm9kZSogdGhpc05vZGUsIGNvbnN0IENoZWNr
c0Z1bmN0b3ImIGluc2VydENoZWNrcyk7CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hlY2tzRnVu
Y3Rvcj4KICAgICBib29sIGhhbmRsZVR5cGVkQXJyYXlDb25zdHJ1Y3RvcihpbnQgcmVzdWx0T3Bl
cmFuZCwgSW50ZXJuYWxGdW5jdGlvbiosIGludCByZWdpc3Rlck9mZnNldCwgaW50IGFyZ3VtZW50
Q291bnRJbmNsdWRpbmdUaGlzLCBUeXBlZEFycmF5VHlwZSwgY29uc3QgQ2hlY2tzRnVuY3RvciYg
aW5zZXJ0Q2hlY2tzKTsKQEAgLTgxOCwxOCArODIwLDE4IEBAIGNsYXNzIEJ5dGVDb2RlUGFyc2Vy
IHsKICAgICB9CiAgICAgCiAgICAgTm9kZSogYWRkQ2FsbCgKLSAgICAgICAgaW50IHJlc3VsdCwg
Tm9kZVR5cGUgb3AsIE9wSW5mbyBvcEluZm8sIE5vZGUqIGNhbGxlZSwgaW50IGFyZ0NvdW50LCBp
bnQgcmVnaXN0ZXJPZmZzZXQsCisgICAgICAgIGludCByZXN1bHQsIE5vZGVUeXBlIG9wLCBjb25z
dCBET01KSVQ6OlNpZ25hdHVyZSogc2lnbmF0dXJlLCBOb2RlKiBjYWxsZWUsIGludCBhcmdDb3Vu
dCwgaW50IHJlZ2lzdGVyT2Zmc2V0LAogICAgICAgICBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9u
KQogICAgIHsKICAgICAgICAgaWYgKG9wID09IFRhaWxDYWxsKSB7CiAgICAgICAgICAgICBpZiAo
YWxsSW5saW5lRnJhbWVzQXJlVGFpbENhbGxzKCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGFk
ZENhbGxXaXRob3V0U2V0dGluZ1Jlc3VsdChvcCwgT3BJbmZvKCksIGNhbGxlZSwgYXJnQ291bnQs
IHJlZ2lzdGVyT2Zmc2V0LCBPcEluZm8oKSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIGFkZENh
bGxXaXRob3V0U2V0dGluZ1Jlc3VsdChvcCwgT3BJbmZvKHNpZ25hdHVyZSksIGNhbGxlZSwgYXJn
Q291bnQsIHJlZ2lzdGVyT2Zmc2V0LCBPcEluZm8oKSk7CiAgICAgICAgICAgICBvcCA9IFRhaWxD
YWxsSW5saW5lZENhbGxlcjsKICAgICAgICAgfQogCiAKICAgICAgICAgTm9kZSogY2FsbCA9IGFk
ZENhbGxXaXRob3V0U2V0dGluZ1Jlc3VsdCgKLSAgICAgICAgICAgIG9wLCBvcEluZm8sIGNhbGxl
ZSwgYXJnQ291bnQsIHJlZ2lzdGVyT2Zmc2V0LCBPcEluZm8ocHJlZGljdGlvbikpOworICAgICAg
ICAgICAgb3AsIE9wSW5mbyhzaWduYXR1cmUpLCBjYWxsZWUsIGFyZ0NvdW50LCByZWdpc3Rlck9m
ZnNldCwgT3BJbmZvKHByZWRpY3Rpb24pKTsKICAgICAgICAgVmlydHVhbFJlZ2lzdGVyIHJlc3Vs
dFJlZyhyZXN1bHQpOwogICAgICAgICBpZiAocmVzdWx0UmVnLmlzVmFsaWQoKSkKICAgICAgICAg
ICAgIHNldChyZXN1bHRSZWcsIGNhbGwpOwpAQCAtMTI4NCw3ICsxMjg2LDcgQEAgQnl0ZUNvZGVQ
YXJzZXI6OlRlcm1pbmFsaXR5IEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVDYWxsKAogICAgICAgICAv
LyBPZGRseSwgdGhpcyBjb25mbGF0ZXMgY2FsbHMgdGhhdCBoYXZlbid0IGV4ZWN1dGVkIHdpdGgg
Y2FsbHMgdGhhdCBiZWhhdmVkIHN1ZmZpY2llbnRseSBwb2x5bW9ycGhpY2FsbHkKICAgICAgICAg
Ly8gdGhhdCB3ZSBjYW5ub3Qgb3B0aW1pemUgdGhlbS4KIAotICAgICAgICBOb2RlKiBjYWxsTm9k
ZSA9IGFkZENhbGwocmVzdWx0LCBvcCwgT3BJbmZvKCksIGNhbGxUYXJnZXQsIGFyZ3VtZW50Q291
bnRJbmNsdWRpbmdUaGlzLCByZWdpc3Rlck9mZnNldCwgcHJlZGljdGlvbik7CisgICAgICAgIE5v
ZGUqIGNhbGxOb2RlID0gYWRkQ2FsbChyZXN1bHQsIG9wLCBudWxscHRyLCBjYWxsVGFyZ2V0LCBh
cmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgcmVnaXN0ZXJPZmZzZXQsIHByZWRpY3Rpb24pOwog
ICAgICAgICBpZiAoY2FsbE5vZGUtPm9wKCkgPT0gVGFpbENhbGwpCiAgICAgICAgICAgICByZXR1
cm4gVGVybWluYWw7CiAgICAgICAgIEFTU0VSVChjYWxsTm9kZS0+b3AoKSAhPSBUYWlsQ2FsbFZh
cmFyZ3MgJiYgY2FsbE5vZGUtPm9wKCkgIT0gVGFpbENhbGxGb3J3YXJkVmFyYXJncyk7CkBAIC0x
Mjk5LDcgKzEzMDEsNyBAQCBCeXRlQ29kZVBhcnNlcjo6VGVybWluYWxpdHkgQnl0ZUNvZGVQYXJz
ZXI6OmhhbmRsZUNhbGwoCiAgICAgICAgIHJldHVybiBOb25UZXJtaW5hbDsKICAgICB9CiAgICAg
Ci0gICAgTm9kZSogY2FsbE5vZGUgPSBhZGRDYWxsKHJlc3VsdCwgb3AsIE9wSW5mbygpLCBjYWxs
VGFyZ2V0LCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgcmVnaXN0ZXJPZmZzZXQsIHByZWRp
Y3Rpb24pOworICAgIE5vZGUqIGNhbGxOb2RlID0gYWRkQ2FsbChyZXN1bHQsIG9wLCBudWxscHRy
LCBjYWxsVGFyZ2V0LCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgcmVnaXN0ZXJPZmZzZXQs
IHByZWRpY3Rpb24pOwogICAgIGlmIChjYWxsTm9kZS0+b3AoKSA9PSBUYWlsQ2FsbCkKICAgICAg
ICAgcmV0dXJuIFRlcm1pbmFsOwogICAgIEFTU0VSVChjYWxsTm9kZS0+b3AoKSAhPSBUYWlsQ2Fs
bFZhcmFyZ3MgJiYgY2FsbE5vZGUtPm9wKCkgIT0gVGFpbENhbGxGb3J3YXJkVmFyYXJncyk7CkBA
IC0xNzI2LDYgKzE3MjgsMTkgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6YXR0ZW1wdFRvSW5saW5l
Q2FsbChOb2RlKiBjYWxsVGFyZ2V0Tm9kZSwgaW50IHJlc3VsdE9wZXJhbmQKICAgICAgICAgICAg
IFJFTEVBU0VfQVNTRVJUKCFkaWRJbnNlcnRDaGVja3MpOwogICAgICAgICAgICAgLy8gV2UgbWln
aHQgc3RpbGwgdHJ5IHRvIGlubGluZSB0aGUgSW50cmluc2ljIGJlY2F1c2UgaXQgbWlnaHQgYmUg
YSBidWlsdGluIEpTIGZ1bmN0aW9uLgogICAgICAgICB9CisKKyAgICAgICAgaWYgKE9wdGlvbnM6
OnVzZURPTUpJVCgpKSB7CisgICAgICAgICAgICBpZiAoY29uc3QgRE9NSklUOjpTaWduYXR1cmUq
IHNpZ25hdHVyZSA9IGNhbGxlZS5zaWduYXR1cmVGb3Ioc3BlY2lhbGl6YXRpb25LaW5kKSkgewor
ICAgICAgICAgICAgICAgIGlmIChoYW5kbGVET01KSVRDYWxsKGNhbGxUYXJnZXROb2RlLCByZXN1
bHRPcGVyYW5kLCBzaWduYXR1cmUsIHJlZ2lzdGVyT2Zmc2V0LCBhcmd1bWVudENvdW50SW5jbHVk
aW5nVGhpcywgcHJlZGljdGlvbiwgaW5zZXJ0Q2hlY2tzV2l0aEFjY291bnRpbmcpKSB7CisgICAg
ICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGRpZEluc2VydENoZWNrcyk7CisgICAgICAg
ICAgICAgICAgICAgIGFkZFRvR3JhcGgoUGhhbnRvbSwgY2FsbFRhcmdldE5vZGUpOworICAgICAg
ICAgICAgICAgICAgICBlbWl0QXJndW1lbnRQaGFudG9tcyhyZWdpc3Rlck9mZnNldCwgYXJndW1l
bnRDb3VudEluY2x1ZGluZ1RoaXMpOworICAgICAgICAgICAgICAgICAgICBpbmxpbmluZ0JhbGFu
Y2UtLTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKCFkaWRJbnNlcnRDaGVja3MpOworICAg
ICAgICAgICAgfQorICAgICAgICB9CiAgICAgfQogICAgIAogICAgIHVuc2lnbmVkIG15SW5saW5p
bmdDb3N0ID0gaW5saW5pbmdDb3N0KGNhbGxlZSwgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMs
IElubGluZUNhbGxGcmFtZTo6Y2FsbE1vZGVGb3Ioa2luZCkpOwpAQCAtMjA1MSw3ICsyMDY2LDcg
QEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW5saW5pbmcoCiAgICAgTm9kZSogbXlDYWxs
VGFyZ2V0Tm9kZSA9IGdldERpcmVjdChjYWxsZWVSZWcpOwogICAgIGlmIChjb3VsZFRha2VTbG93
UGF0aCkgewogICAgICAgICBhZGRDYWxsKAotICAgICAgICAgICAgcmVzdWx0T3BlcmFuZCwgY2Fs
bE9wLCBPcEluZm8oKSwgbXlDYWxsVGFyZ2V0Tm9kZSwgYXJndW1lbnRDb3VudEluY2x1ZGluZ1Ro
aXMsCisgICAgICAgICAgICByZXN1bHRPcGVyYW5kLCBjYWxsT3AsIG51bGxwdHIsIG15Q2FsbFRh
cmdldE5vZGUsIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLAogICAgICAgICAgICAgcmVnaXN0
ZXJPZmZzZXQsIHByZWRpY3Rpb24pOwogICAgIH0gZWxzZSB7CiAgICAgICAgIGFkZFRvR3JhcGgo
Q2hlY2tCYWRDZWxsKTsKQEAgLTI2MDEsNiArMjYxNiwyNSBAQCBib29sIEJ5dGVDb2RlUGFyc2Vy
OjpoYW5kbGVJbnRyaW5zaWNDYWxsKE5vZGUqIGNhbGxlZSwgaW50IHJlc3VsdE9wZXJhbmQsIElu
dHJpbgogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGVja3NGdW5jdG9yPgorYm9vbCBCeXRlQ29k
ZVBhcnNlcjo6aGFuZGxlRE9NSklUQ2FsbChOb2RlKiBjYWxsVGFyZ2V0LCBpbnQgcmVzdWx0T3Bl
cmFuZCwgY29uc3QgRE9NSklUOjpTaWduYXR1cmUqIHNpZ25hdHVyZSwgaW50IHJlZ2lzdGVyT2Zm
c2V0LCBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIFNwZWN1bGF0ZWRUeXBlIHByZWRp
Y3Rpb24sIGNvbnN0IENoZWNrc0Z1bmN0b3ImIGluc2VydENoZWNrcykKK3sKKyAgICBpZiAoYXJn
dW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgIT0gc3RhdGljX2Nhc3Q8aW50PigxICsgc2lnbmF0dXJl
LT5hcmd1bWVudENvdW50KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmIChtX2lubGlu
ZVN0YWNrVG9wLT5tX2V4aXRQcm9maWxlLmhhc0V4aXRTaXRlKG1fY3VycmVudEluZGV4LCBCYWRU
eXBlKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgLy8gRklYTUU6IEN1cnJlbnRseSwg
d2Ugb25seSBzdXBwb3J0IGZ1bmN0aW9ucyB3aGljaCBhcmd1bWVudHMgYXJlIHVwIHRvIDIuCisg
ICAgLy8gRXZlbnR1YWxseSwgd2Ugc2hvdWxkIGV4dGVuZCB0aGlzLiBCdXQgcG9zc2libHksIDIg
b3IgMyBjYW4gY292ZXIgdHlwaWNhbCB1c2UgY2FzZXMuCisgICAgLy8gaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NDM0NgorICAgIEFTU0VSVF9XSVRIX01FU1NBR0Uo
YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgPD0gSlNDX0RPTUpJVF9TSUdOQVRVUkVfTUFYX0FS
R1VNRU5UU19JTkNMVURJTkdfVEhJUywgIkN1cnJlbnRseSBDYWxsRE9NIGRvZXMgbm90IHN1cHBv
cnQgYW4gYXJiaXRyYXJ5IGxlbmd0aCBhcmd1bWVudHMuIik7CisKKyAgICBpbnNlcnRDaGVja3Mo
KTsKKyAgICBhZGRDYWxsKHJlc3VsdE9wZXJhbmQsIENhbGwsIHNpZ25hdHVyZSwgY2FsbFRhcmdl
dCwgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIHJlZ2lzdGVyT2Zmc2V0LCBwcmVkaWN0aW9u
KTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworCit0ZW1wbGF0ZTx0eXBlbmFtZSBDaGVja3NGdW5j
dG9yPgogYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW50cmluc2ljR2V0dGVyKGludCByZXN1
bHRPcGVyYW5kLCBjb25zdCBHZXRCeUlkVmFyaWFudCYgdmFyaWFudCwgTm9kZSogdGhpc05vZGUs
IGNvbnN0IENoZWNrc0Z1bmN0b3ImIGluc2VydENoZWNrcykKIHsKICAgICBzd2l0Y2ggKHZhcmlh
bnQuaW50cmluc2ljKCkpIHsKQEAgLTQ3OTIsNyArNDgyNiw3IEBAIGJvb2wgQnl0ZUNvZGVQYXJz
ZXI6OnBhcnNlQmxvY2sodW5zaWduZWQgbGltaXQpCiAgICAgICAgICAgICBpbnQgY2FsbGVlID0g
Y3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZDsKICAgICAgICAgICAgIGludCBhcmd1bWVu
dENvdW50SW5jbHVkaW5nVGhpcyA9IGN1cnJlbnRJbnN0cnVjdGlvblszXS51Lm9wZXJhbmQ7CiAg
ICAgICAgICAgICBpbnQgcmVnaXN0ZXJPZmZzZXQgPSAtY3VycmVudEluc3RydWN0aW9uWzRdLnUu
b3BlcmFuZDsKLSAgICAgICAgICAgIGFkZENhbGwocmVzdWx0LCBDYWxsRXZhbCwgT3BJbmZvKCks
IGdldChWaXJ0dWFsUmVnaXN0ZXIoY2FsbGVlKSksIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlz
LCByZWdpc3Rlck9mZnNldCwgZ2V0UHJlZGljdGlvbigpKTsKKyAgICAgICAgICAgIGFkZENhbGwo
cmVzdWx0LCBDYWxsRXZhbCwgbnVsbHB0ciwgZ2V0KFZpcnR1YWxSZWdpc3RlcihjYWxsZWUpKSwg
YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIHJlZ2lzdGVyT2Zmc2V0LCBnZXRQcmVkaWN0aW9u
KCkpOwogICAgICAgICAgICAgTkVYVF9PUENPREUob3BfY2FsbF9ldmFsKTsKICAgICAgICAgfQog
ICAgICAgICAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Ns
b2JiZXJpemUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCmlu
ZGV4IGI2MjFlZjAyMmQ4ODY1ZTJlN2EyMDExNmNkMjA4YzVjMjQ2YzlmZmIuLmU1ZDIxNzJmOWFl
MGU3OTFhYWEyYTY4MmJhYjE0ZWJhOTMwNjdkYmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQ2xvYmJlcml6ZS5oCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAiREZHTGF6eU5v
ZGUuaCIKICNpbmNsdWRlICJERkdQdXJlVmFsdWUuaCIKICNpbmNsdWRlICJET01KSVRDYWxsRE9N
R2V0dGVyUGF0Y2hwb2ludC5oIgorI2luY2x1ZGUgIkRPTUpJVFNpZ25hdHVyZS5oIgogCiBuYW1l
c3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAKQEAgLTk1OCwyMCArOTU5LDM4IEBAIHZvaWQg
Y2xvYmJlcml6ZShHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUsIGNvbnN0IFJlYWRGdW5jdG9yJiBy
ZWFkLCBjb25zdCBXcml0ZUZ1CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgd3Jp
dGUoQWJzdHJhY3RIZWFwKERPTVN0YXRlLCBlZmZlY3Qud3JpdGVzLnJhd1JlcHJlc2VudGF0aW9u
KCkpKTsKICAgICAgICAgfQotICAgICAgICBpZiAoZWZmZWN0LmRlZikgewotICAgICAgICAgICAg
RE9NSklUOjpIZWFwUmFuZ2UgcmFuZ2UgPSBlZmZlY3QuZGVmLnZhbHVlKCk7CisgICAgICAgIGlm
IChlZmZlY3QuZGVmICE9IERPTUpJVDo6SGVhcFJhbmdlOjp0b3AoKSkgeworICAgICAgICAgICAg
RE9NSklUOjpIZWFwUmFuZ2UgcmFuZ2UgPSBlZmZlY3QuZGVmOwogICAgICAgICAgICAgaWYgKHJh
bmdlID09IERPTUpJVDo6SGVhcFJhbmdlOjpub25lKCkpCiAgICAgICAgICAgICAgICAgZGVmKFB1
cmVWYWx1ZShub2RlLCBub2RlLT5jYWxsRE9NR2V0dGVyRGF0YSgpLT5kb21KSVQpKTsKICAgICAg
ICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgIC8vIERlZiB3aXRoIGhlYXAgbG9jYXRpb24u
IFdlIGRvIG5vdCBpbmNsdWRlICJHbG9iYWxPYmplY3QiIGZvciB0aGF0IHNpbmNlIHRoaXMgaW5m
b3JtYXRpb24gaXMgaW5jbHVkZWQgaW4gdGhlIGJhc2Ugbm9kZS4KLSAgICAgICAgICAgICAgICAv
LyBGSVhNRTogV2hlbiBzdXBwb3J0aW5nIHRoZSBvdGhlciBub2RlcyBsaWtlIGdldEVsZW1lbnRC
eUlkKCJzdHJpbmciKSwgd2Ugc2hvdWxkIGluY2x1ZGUgdGhlIGJhc2UgYW5kIHRoZSBpZCBzdHJp
bmcuCi0gICAgICAgICAgICAgICAgLy8gQ3VycmVudGx5LCB3ZSBvbmx5IHNlZSB0aGUgRE9NSklU
IGdldHRlciBoZXJlLiBTbyBqdXN0IGluY2x1ZGluZyAiYmFzZSIgaXMgb2suCisgICAgICAgICAg
ICAgICAgLy8gV2Ugb25seSBzZWUgdGhlIERPTUpJVCBnZXR0ZXIgaGVyZS4gU28ganVzdCBpbmNs
dWRpbmcgImJhc2UiIGlzIG9rLgogICAgICAgICAgICAgICAgIGRlZihIZWFwTG9jYXRpb24oRE9N
U3RhdGVMb2MsIEFic3RyYWN0SGVhcChET01TdGF0ZSwgcmFuZ2UucmF3UmVwcmVzZW50YXRpb24o
KSksIG5vZGUtPmNoaWxkMSgpKSwgTGF6eU5vZGUobm9kZSkpOwogICAgICAgICAgICAgfQogICAg
ICAgICB9CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKKyAgICBjYXNlIENhbGxET006IHsKKyAg
ICAgICAgY29uc3QgRE9NSklUOjpTaWduYXR1cmUqIHNpZ25hdHVyZSA9IG5vZGUtPnNpZ25hdHVy
ZSgpOworICAgICAgICBET01KSVQ6OkVmZmVjdCBlZmZlY3QgPSBzaWduYXR1cmUtPmVmZmVjdDsK
KyAgICAgICAgaWYgKGVmZmVjdC5yZWFkcykgeworICAgICAgICAgICAgaWYgKGVmZmVjdC5yZWFk
cyA9PSBET01KSVQ6OkhlYXBSYW5nZTo6dG9wKCkpCisgICAgICAgICAgICAgICAgcmVhZChXb3Js
ZCk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgcmVhZChBYnN0cmFjdEhlYXAo
RE9NU3RhdGUsIGVmZmVjdC5yZWFkcy5yYXdSZXByZXNlbnRhdGlvbigpKSk7CisgICAgICAgIH0K
KyAgICAgICAgaWYgKGVmZmVjdC53cml0ZXMpIHsKKyAgICAgICAgICAgIGlmIChlZmZlY3Qud3Jp
dGVzID09IERPTUpJVDo6SGVhcFJhbmdlOjp0b3AoKSkKKyAgICAgICAgICAgICAgICB3cml0ZShI
ZWFwKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB3cml0ZShBYnN0cmFjdEhl
YXAoRE9NU3RhdGUsIGVmZmVjdC53cml0ZXMucmF3UmVwcmVzZW50YXRpb24oKSkpOworICAgICAg
ICB9CisgICAgICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoZWZmZWN0LmRlZiA9PSBET01KSVQ6Okhl
YXBSYW5nZTo6dG9wKCksICJDdXJyZW50bHksIHdlIGRvIG5vdCBhY2NlcHQgYW55IGRlZiBmb3Ig
Q2FsbERPTS4iKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwogICAgIGNhc2UgQXJyYXlpZnk6
CiAgICAgY2FzZSBBcnJheWlmeVRvU3RydWN0dXJlOgogICAgICAgICByZWFkKEpTQ2VsbF9zdHJ1
Y3R1cmVJRCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNH
Qy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAKaW5kZXggOTdj
ZDg0ODc0NzdhYzkwODRmZTkwZGRiOThkMzBmNDY2ZTVjYTE2Zi4uOWU2YWE1NTBhNDRlMGUxYzYy
MTc1ZTUxOWY2MGEzZTg1MTVhN2I3YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdEb2VzR0MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9l
c0dDLmNwcApAQCAtMzAxLDYgKzMwMSw3IEBAIGJvb2wgZG9lc0dDKEdyYXBoJiBncmFwaCwgTm9k
ZSogbm9kZSkKICAgICBjYXNlIENyZWF0ZVJlc3Q6CiAgICAgY2FzZSBUb0xvd2VyQ2FzZToKICAg
ICBjYXNlIENhbGxET01HZXR0ZXI6CisgICAgY2FzZSBDYWxsRE9NOgogICAgICAgICByZXR1cm4g
dHJ1ZTsKICAgICAgICAgCiAgICAgY2FzZSBNdWx0aVB1dEJ5T2Zmc2V0OgpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKaW5kZXggMWQ0ZTkwN2E3ZjJmZmNjMmQ5
YTJhMDM3NzExNDZhNzkxMDFmM2NkMy4uYzhkZDU2Mjc4OGYwOTk1M2NjYjExNjEwYTA5NDI0Yjli
ZTExN2E4YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBo
YXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3Bw
CkBAIC0xNzA4LDkgKzE3MDgsMTAgQEAgY2xhc3MgRml4dXBQaGFzZSA6IHB1YmxpYyBQaGFzZSB7
CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogCi0gICAgICAgIGNhc2UgQ2hlY2tET006
Ci0gICAgICAgICAgICBmaXhFZGdlPENlbGxVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAg
Y2FzZSBDaGVja0RPTTogeworICAgICAgICAgICAgZml4dXBDaGVja0RPTShub2RlKTsKICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICB9CiAKICAgICAgICAgY2FzZSBDYWxsRE9NR2V0dGVyOiB7
CiAgICAgICAgICAgICBET01KSVQ6OkNhbGxET01HZXR0ZXJQYXRjaHBvaW50KiBwYXRjaHBvaW50
ID0gbm9kZS0+Y2FsbERPTUdldHRlckRhdGEoKS0+cGF0Y2hwb2ludDsKQEAgLTE3MjAsNiArMTcy
MSwxNiBAQCBjbGFzcyBGaXh1cFBoYXNlIDogcHVibGljIFBoYXNlIHsKICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICB9CiAKKyAgICAgICAgY2FzZSBDYWxsRE9NOiB7CisgICAgICAgICAgICBm
aXh1cENhbGxET00obm9kZSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAg
ICAgIGNhc2UgQ2FsbDogeworICAgICAgICAgICAgYXR0ZW1wdFRvTWFrZUNhbGxET00obm9kZSk7
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCiAjaWYgIUFTU0VSVF9ESVNBQkxFRAog
ICAgICAgICAvLyBIYXZlIHRoZXNlIG5vLW9wIGNhc2VzIGhlcmUgdG8gZW5zdXJlIHRoYXQgbm9i
b2R5IGZvcmdldHMgdG8gYWRkIGhhbmRsZXJzIGZvciBuZXcgb3Bjb2Rlcy4KICAgICAgICAgY2Fz
ZSBTZXRBcmd1bWVudDoKQEAgLTE3MzYsNyArMTc0Nyw2IEBAIGNsYXNzIEZpeHVwUGhhc2UgOiBw
dWJsaWMgUGhhc2UgewogICAgICAgICBjYXNlIEdldEdsb2JhbFZhcjoKICAgICAgICAgY2FzZSBH
ZXRHbG9iYWxMZXhpY2FsVmFyaWFibGU6CiAgICAgICAgIGNhc2UgTm90aWZ5V3JpdGU6Ci0gICAg
ICAgIGNhc2UgQ2FsbDoKICAgICAgICAgY2FzZSBEaXJlY3RDYWxsOgogICAgICAgICBjYXNlIENo
ZWNrVHlwZUluZm9GbGFnczoKICAgICAgICAgY2FzZSBUYWlsQ2FsbElubGluZWRDYWxsZXI6CkBA
IC0yNjU5LDYgKzI2NjksOTMgQEAgY2xhc3MgRml4dXBQaGFzZSA6IHB1YmxpYyBQaGFzZSB7CiAg
ICAgICAgICAgICBPcEluZm8oYXJyYXlNb2RlLmFzV29yZCgpKSwgRWRnZShjaGlsZCwgS25vd25D
ZWxsVXNlKSwgRWRnZShzdG9yYWdlKSk7CiAgICAgfQogICAgIAorICAgIGJvb2wgYXR0ZW1wdFRv
TWFrZUNhbGxET00oTm9kZSogbm9kZSkKKyAgICB7CisgICAgICAgIGlmIChtX2dyYXBoLmhhc0V4
aXRTaXRlKG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgQmFkVHlwZSkpCisgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CisKKyAgICAgICAgY29uc3QgRE9NSklUOjpTaWduYXR1cmUqIHNpZ25hdHVyZSA9
IG5vZGUtPnNpZ25hdHVyZSgpOworICAgICAgICBpZiAoIXNpZ25hdHVyZSkKKyAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKKworICAgICAgICB7CisgICAgICAgICAgICB1bnNpZ25lZCBpbmRleCA9
IDA7CisgICAgICAgICAgICBib29sIHNob3VsZENvbnZlcnRUb0NhbGxET00gPSB0cnVlOworICAg
ICAgICAgICAgbV9ncmFwaC5kb1RvQ2hpbGRyZW4obm9kZSwgWyZdKEVkZ2UmIGVkZ2UpIHsKKyAg
ICAgICAgICAgICAgICAvLyBDYWxsZWUuIElnbm9yZSB0aGlzLiBERkdCeXRlQ29kZVBhcnNlciBh
bHJlYWR5IGVtaXQgYXBwcm9wcmlhdGUgY2hlY2tzLgorICAgICAgICAgICAgICAgIGlmICghaW5k
ZXgpCisgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICAgICAgICAgIGlmIChp
bmRleCA9PSAxKSB7CisgICAgICAgICAgICAgICAgICAgIC8vIERPTSBub2RlIGNhc2UuCisgICAg
ICAgICAgICAgICAgICAgIGlmIChlZGdlLT5zaG91bGRTcGVjdWxhdGVOb3RDZWxsKCkpCisgICAg
ICAgICAgICAgICAgICAgICAgICBzaG91bGRDb252ZXJ0VG9DYWxsRE9NID0gZmFsc2U7CisgICAg
ICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChzaWduYXR1
cmUtPmFyZ3VtZW50c1tpbmRleCAtIDJdKSB7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgU3Bl
Y1N0cmluZzoKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlZGdlLT5zaG91bGRTcGVjdWxh
dGVOb3RTdHJpbmcoKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaG91bGRDb252ZXJ0
VG9DYWxsRE9NID0gZmFsc2U7CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgICAgICAgICAgY2FzZSBTcGVjSW50MzJPbmx5OgorICAgICAgICAgICAgICAgICAgICAg
ICAgaWYgKGVkZ2UtPnNob3VsZFNwZWN1bGF0ZU5vdEludDMyKCkpCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc2hvdWxkQ29udmVydFRvQ2FsbERPTSA9IGZhbHNlOworICAgICAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgU3BlY0Jvb2xlYW46
CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZWRnZS0+c2hvdWxkU3BlY3VsYXRlTm90Qm9v
bGVhbigpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNob3VsZENvbnZlcnRUb0NhbGxE
T00gPSBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg
ICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICsraW5kZXg7
CisgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIGlmICghc2hvdWxkQ29udmVydFRvQ2FsbERP
TSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKworICAgICAgICBO
b2RlKiB0aGlzTm9kZSA9IG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMSkubm9kZSgpOworICAg
ICAgICBSZWY8RE9NSklUOjpQYXRjaHBvaW50PiBjaGVja0RPTVBhdGNocG9pbnQgPSBzaWduYXR1
cmUtPmNoZWNrRE9NKCk7CisgICAgICAgIG1fZ3JhcGgubV9kb21KSVRQYXRjaHBvaW50cy5hcHBl
bmQoY2hlY2tET01QYXRjaHBvaW50LnB0cigpKTsKKyAgICAgICAgTm9kZSogY2hlY2tET00gPSBt
X2luc2VydGlvblNldC5pbnNlcnROb2RlKG1faW5kZXhJbkJsb2NrLCBTcGVjTm9uZSwgQ2hlY2tE
T00sIG5vZGUtPm9yaWdpbiwgT3BJbmZvKGNoZWNrRE9NUGF0Y2hwb2ludC5wdHIoKSksIE9wSW5m
byhzaWduYXR1cmUtPmNsYXNzSW5mbyksIEVkZ2UodGhpc05vZGUpKTsKKyAgICAgICAgbm9kZS0+
Y29udmVydFRvQ2FsbERPTShtX2dyYXBoKTsKKyAgICAgICAgZml4dXBDaGVja0RPTShjaGVja0RP
TSk7CisgICAgICAgIGZpeHVwQ2FsbERPTShub2RlKTsKKyAgICAgICAgcmV0dXJuIHRydWU7Cisg
ICAgfQorCisgICAgdm9pZCBmaXh1cENoZWNrRE9NKE5vZGUqIG5vZGUpCisgICAgeworICAgICAg
ICBmaXhFZGdlPENlbGxVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICB9CisKKyAgICB2b2lkIGZp
eHVwQ2FsbERPTShOb2RlKiBub2RlKQorICAgIHsKKyAgICAgICAgY29uc3QgRE9NSklUOjpTaWdu
YXR1cmUqIHNpZ25hdHVyZSA9IG5vZGUtPnNpZ25hdHVyZSgpOworICAgICAgICBhdXRvIGZpeHVw
ID0gWyZdKEVkZ2UmIGVkZ2UsIHVuc2lnbmVkIGFyZ3VtZW50SW5kZXgpIHsKKyAgICAgICAgICAg
IGlmICghZWRnZSkKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICBzd2l0Y2gg
KHNpZ25hdHVyZS0+YXJndW1lbnRzW2FyZ3VtZW50SW5kZXhdKSB7CisgICAgICAgICAgICBjYXNl
IFNwZWNTdHJpbmc6CisgICAgICAgICAgICAgICAgZml4RWRnZTxTdHJpbmdVc2U+KGVkZ2UpOwor
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBTcGVjSW50MzJPbmx5Ogor
ICAgICAgICAgICAgICAgIGZpeEVkZ2U8SW50MzJVc2U+KGVkZ2UpOworICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgY2FzZSBTcGVjQm9vbGVhbjoKKyAgICAgICAgICAgICAgICBm
aXhFZGdlPEJvb2xlYW5Vc2U+KGVkZ2UpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hF
RCgpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9Owor
ICAgICAgICBmaXhFZGdlPENlbGxVc2U+KG5vZGUtPmNoaWxkMSgpKTsgLy8gRE9NLgorICAgICAg
ICBmaXh1cChub2RlLT5jaGlsZDIoKSwgMCk7CisgICAgICAgIGZpeHVwKG5vZGUtPmNoaWxkMygp
LCAxKTsKKyAgICB9CisKICAgICB2b2lkIGZpeHVwQ2hlY2tzSW5CbG9jayhCYXNpY0Jsb2NrKiBi
bG9jaykKICAgICB7CiAgICAgICAgIGlmICghYmxvY2spCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdOb2RlLmNwcAppbmRleCBmMzcxMTdiZjk2OWZlNGI2OWQ5NWYwMDFkNTY4ODA0NmJkY2Q5NDUw
Li42YTk0YjU5OWQ4N2E4ODFkNDU5OTA5OGM2YzNlYmNmZDQ2MDc2ZjY3IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHTm9kZS5jcHAKQEAgLTIyMCw2ICsyMjAsMjYgQEAgdm9pZCBOb2RlOjpj
b252ZXJ0VG9EaXJlY3RDYWxsKEZyb3plblZhbHVlKiBleGVjdXRhYmxlKQogICAgIG1fb3BJbmZv
ID0gZXhlY3V0YWJsZTsKIH0KIAordm9pZCBOb2RlOjpjb252ZXJ0VG9DYWxsRE9NKEdyYXBoJiBn
cmFwaCkKK3sKKyAgICBBU1NFUlQob3AoKSA9PSBDYWxsKTsKKyAgICBBU1NFUlQoc2lnbmF0dXJl
KCkpOworCisgICAgRWRnZSBlZGdlc1szXTsKKyAgICAvLyBTa2lwIHRoZSBmaXJzdCBvbmUuIFRo
aXMgaXMgY2FsbGVlLgorICAgIFJFTEVBU0VfQVNTRVJUKG51bUNoaWxkcmVuKCkgPD0gNCk7Cisg
ICAgZm9yICh1bnNpZ25lZCBpID0gMTsgaSA8IG51bUNoaWxkcmVuKCk7ICsraSkKKyAgICAgICAg
ZWRnZXNbaSAtIDFdID0gZ3JhcGgudmFyQXJnQ2hpbGQodGhpcywgaSk7CisKKyAgICBzZXRPcEFu
ZERlZmF1bHRGbGFncyhDYWxsRE9NKTsKKyAgICBjaGlsZHJlbi5zZXRDaGlsZDEoZWRnZXNbMF0p
OworICAgIGNoaWxkcmVuLnNldENoaWxkMihlZGdlc1sxXSk7CisgICAgY2hpbGRyZW4uc2V0Q2hp
bGQzKGVkZ2VzWzJdKTsKKworICAgIGlmICghc2lnbmF0dXJlKCktPmVmZmVjdC5tdXN0R2VuZXJh
dGUoKSkKKyAgICAgICAgY2xlYXJGbGFncyhOb2RlTXVzdEdlbmVyYXRlKTsKK30KKwogU3RyaW5n
IE5vZGU6OnRyeUdldFN0cmluZyhHcmFwaCYgZ3JhcGgpCiB7CiAgICAgaWYgKGhhc0NvbnN0YW50
KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCmluZGV4IDg4Zjg4MTE4OTBlMTc3M2Vh
MWQ2MDJlOWNhYzljNTgxZGE0ZjliOWIuLjA3ZDY0NGYzZDNjNTg0YjdiZmNiYzhmYmVlNWM1MmVk
NjA4NWU5YjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCkBAIC02Miw2ICs2Miw3
IEBAIG5hbWVzcGFjZSBET01KSVQgewogY2xhc3MgR2V0dGVyU2V0dGVyOwogY2xhc3MgUGF0Y2hw
b2ludDsKIGNsYXNzIENhbGxET01HZXR0ZXJQYXRjaHBvaW50OworY2xhc3MgU2lnbmF0dXJlOwog
fQogCiBuYW1lc3BhY2UgUHJvZmlsZXIgewpAQCAtNjUyLDYgKzY1Myw4IEBAIHN0cnVjdCBOb2Rl
IHsKICAgICB9CiAgICAgCiAgICAgdm9pZCBjb252ZXJ0VG9EaXJlY3RDYWxsKEZyb3plblZhbHVl
Kik7CisKKyAgICB2b2lkIGNvbnZlcnRUb0NhbGxET00oR3JhcGgmKTsKICAgICAKICAgICBKU1Zh
bHVlIGFzSlNWYWx1ZSgpCiAgICAgewpAQCAtMTQ2NCw2ICsxNDY3LDcgQEAgc3RydWN0IE5vZGUg
ewogICAgICAgICBjYXNlIFRvTnVtYmVyOgogICAgICAgICBjYXNlIExvYWRGcm9tSlNNYXBCdWNr
ZXQ6CiAgICAgICAgIGNhc2UgQ2FsbERPTUdldHRlcjoKKyAgICAgICAgY2FzZSBDYWxsRE9NOgog
ICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CkBAIC0xOTgxLDYgKzE5ODUsMTEgQEAgc3RydWN0IE5vZGUgewogICAgIHsK
ICAgICAgICAgcmV0dXJuIGlzSW50MzJTcGVjdWxhdGlvbihwcmVkaWN0aW9uKCkpOwogICAgIH0K
KworICAgIGJvb2wgc2hvdWxkU3BlY3VsYXRlTm90SW50MzIoKQorICAgIHsKKyAgICAgICAgcmV0
dXJuIGlzTm90SW50MzJTcGVjdWxhdGlvbihwcmVkaWN0aW9uKCkpOworICAgIH0KICAgICAKICAg
ICBib29sIHNhd0Jvb2xlYW5zKCkKICAgICB7CkBAIC0yMDQxLDYgKzIwNTAsMTEgQEAgc3RydWN0
IE5vZGUgewogICAgIHsKICAgICAgICAgcmV0dXJuIGlzQm9vbGVhblNwZWN1bGF0aW9uKHByZWRp
Y3Rpb24oKSk7CiAgICAgfQorCisgICAgYm9vbCBzaG91bGRTcGVjdWxhdGVOb3RCb29sZWFuKCkK
KyAgICB7CisgICAgICAgIHJldHVybiBpc05vdEJvb2xlYW5TcGVjdWxhdGlvbihwcmVkaWN0aW9u
KCkpOworICAgIH0KICAgICAKICAgICBib29sIHNob3VsZFNwZWN1bGF0ZU90aGVyKCkKICAgICB7
CkBAIC0yMDY2LDYgKzIwODAsMTEgQEAgc3RydWN0IE5vZGUgewogICAgIHsKICAgICAgICAgcmV0
dXJuIGlzU3RyaW5nU3BlY3VsYXRpb24ocHJlZGljdGlvbigpKTsKICAgICB9CisKKyAgICBib29s
IHNob3VsZFNwZWN1bGF0ZU5vdFN0cmluZygpCisgICAgeworICAgICAgICByZXR1cm4gaXNOb3RT
dHJpbmdTcGVjdWxhdGlvbihwcmVkaWN0aW9uKCkpOworICAgIH0KICAKICAgICBib29sIHNob3Vs
ZFNwZWN1bGF0ZVN0cmluZ09yT3RoZXIoKQogICAgIHsKQEAgLTIzNjgsNiArMjM4NywxOCBAQCBz
dHJ1Y3QgTm9kZSB7CiAgICAgICAgIHJldHVybiBtX29wSW5mbzIuYXM8Y29uc3QgQ2xhc3NJbmZv
Kj4oKTsKICAgICB9CiAKKyAgICBib29sIGhhc1NpZ25hdHVyZSgpIGNvbnN0CisgICAgeworICAg
ICAgICAvLyBOb3RlIHRoYXQgdGhpcyBkb2VzIG5vdCBpbmNsdWRlIFRhaWxDYWxsIG5vZGUgdHlw
ZXMgaW50ZW50aW9uYWxseS4KKyAgICAgICAgLy8gQ2FsbERPTSBub2RlIHR5cGVzIGFyZSBhbHdh
eXMgY29udmVydGVkIGZyb20gQ2FsbC4KKyAgICAgICAgcmV0dXJuIG9wKCkgPT0gQ2FsbCB8fCBv
cCgpID09IENhbGxET007CisgICAgfQorCisgICAgY29uc3QgRE9NSklUOjpTaWduYXR1cmUqIHNp
Z25hdHVyZSgpCisgICAgeworICAgICAgICByZXR1cm4gbV9vcEluZm8uYXM8Y29uc3QgRE9NSklU
OjpTaWduYXR1cmUqPigpOworICAgIH0KKwogICAgIE5vZGUqIHJlcGxhY2VtZW50KCkgY29uc3QK
ICAgICB7CiAgICAgICAgIHJldHVybiBtX21pc2MucmVwbGFjZW1lbnQ7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR05vZGVUeXBlLmgKaW5kZXggZDk3NWI3NjIyMGMwMmMxMzExYzE5MmVhOWFk
MDJlNjAxYTUyMDRlMC4uZjM3NDIzY2VlYjIyODYyYjZjMmZhYTViYmEwMzQ1YTMzNmVmNjM5ZSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaApAQCAtNDA3LDYgKzQwNyw3
IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKICAgICAvKiBOb2RlcyBmb3IgRE9N
IEpJVCAqL1wKICAgICBtYWNybyhDaGVja0RPTSwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1h
Y3JvKENhbGxET01HZXR0ZXIsIE5vZGVSZXN1bHRKUyB8IE5vZGVNdXN0R2VuZXJhdGUpIFwKKyAg
ICBtYWNybyhDYWxsRE9NLCBOb2RlUmVzdWx0SlMgfCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAKIC8v
IFRoaXMgZW51bSBnZW5lcmF0ZXMgYSBtb25vdG9uaWNhbGx5IGluY3JlYXNpbmcgaWQgZm9yIGFs
bCBOb2RlIHR5cGVzLAogLy8gYW5kIGlzIHVzZWQgYnkgdGhlIHN1YnNlcXVlbnQgZW51bSB0byBm
aWxsIG91dCB0aGUgaWQgKGFzIGFjY2Vzc2VkIHZpYSB0aGUgTm9kZUlkTWFzaykuCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBo
YXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0
aW9uUGhhc2UuY3BwCmluZGV4IDZlZDcyOWIzYjg1NzMxYzBhNmU1MDk2NzA5Zjk4MDE2YTRiMWY4
ZTAuLjIwNTMxYTA5MzQyYTVlYmYwMTNkYzNiZTA5YTU3ZDAyNmVhNDRkNzMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2Uu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0
aW9uUGhhc2UuY3BwCkBAIC0xMDIwLDcgKzEwMjAsOCBAQCBjbGFzcyBQcmVkaWN0aW9uUHJvcGFn
YXRpb25QaGFzZSA6IHB1YmxpYyBQaGFzZSB7CiAgICAgICAgIGNhc2UgR2V0UmVnRXhwT2JqZWN0
TGFzdEluZGV4OgogICAgICAgICBjYXNlIFNldFJlZ0V4cE9iamVjdExhc3RJbmRleDoKICAgICAg
ICAgY2FzZSBSZWNvcmRSZWdFeHBDYWNoZWRSZXN1bHQ6Ci0gICAgICAgIGNhc2UgTGF6eUpTQ29u
c3RhbnQ6IHsKKyAgICAgICAgY2FzZSBMYXp5SlNDb25zdGFudDoKKyAgICAgICAgY2FzZSBDYWxs
RE9NOiB7CiAgICAgICAgICAgICAvLyBUaGlzIG5vZGUgc2hvdWxkIG5ldmVyIGJlIHZpc2libGUg
YXQgdGhpcyBzdGFnZSBvZiBjb21waWxhdGlvbi4gSXQgaXMKICAgICAgICAgICAgIC8vIGluc2Vy
dGVkIGJ5IGZpeHVwKCksIHdoaWNoIGZvbGxvd3MgdGhpcyBwaGFzZS4KICAgICAgICAgICAgIERG
R19DUkFTSChtX2dyYXBoLCBtX2N1cnJlbnROb2RlLCAiVW5leHBlY3RlZCBub2RlIGR1cmluZyBw
cmVkaWN0aW9uIHByb3BhZ2F0aW9uIik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U2FmZVRvRXhlY3V0ZS5oCmluZGV4IDJjOTk4MDIyNTY2N2RmMzQwNTBkY2E2YTM0ZTg3ZjM0ZDU5
OGVkMmIuLjNmZTlkYzE1ZGVlMTdiODFkMjJmZjY0NDNmZWQ2N2Y0NzY5NjNjYTAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCkBAIC0yMjAsNiArMjIw
LDcgQEAgYm9vbCBzYWZlVG9FeGVjdXRlKEFic3RyYWN0U3RhdGVUeXBlJiBzdGF0ZSwgR3JhcGgm
IGdyYXBoLCBOb2RlKiBub2RlKQogICAgIGNhc2UgR2V0RXhlY3V0YWJsZToKICAgICBjYXNlIEdl
dEJ1dHRlcmZseToKICAgICBjYXNlIENhbGxET01HZXR0ZXI6CisgICAgY2FzZSBDYWxsRE9NOgog
ICAgIGNhc2UgQ2hlY2tET006CiAgICAgY2FzZSBDaGVja0FycmF5OgogICAgIGNhc2UgQXJyYXlp
Znk6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZl
SklULmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3Bw
CmluZGV4IDI3MzJmZTg1ODQ0ZTUxZjQ2NzBiMGFlNDAzZjJhYzIzNTA0Yzg3MWMuLjM0MTliNzAy
ZjgxZGQ5OTA1NmM5N2FiMTQ0OGEzMGE5YjI5N2M3YjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCkBAIC03MjYwLDYgKzcyNjAsODggQEAg
c3RhdGljIHZvaWQgYWxsb2NhdGVUZW1wb3JhcnlSZWdpc3RlcnNGb3JQYXRjaHBvaW50KFNwZWN1
bGF0aXZlSklUKiBqaXQsIFZlY3RvcjwKICAgICB9CiB9CiAKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGVDYWxsRE9NKE5vZGUqIG5vZGUpCit7CisgICAgY29uc3QgRE9NSklUOjpTaWduYXR1
cmUqIHNpZ25hdHVyZSA9IG5vZGUtPnNpZ25hdHVyZSgpOworCisgICAgLy8gRklYTUU6IFdlIHNo
b3VsZCBoYXZlIGEgd2F5IHRvIGNhbGwgZnVuY3Rpb25zIHdpdGggdGhlIHZlY3RvciBvZiByZWdp
c3RlcnMuCisgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2
MzA5OQorICAgIFZlY3RvcjxWYXJpYW50PFNwZWN1bGF0ZUNlbGxPcGVyYW5kLCBTcGVjdWxhdGVJ
bnQzMk9wZXJhbmQsIFNwZWN1bGF0ZUJvb2xlYW5PcGVyYW5kPiwgSlNDX0RPTUpJVF9TSUdOQVRV
UkVfTUFYX0FSR1VNRU5UU19JTkNMVURJTkdfVEhJUz4gb3BlcmFuZHM7CisgICAgVmVjdG9yPEdQ
UlJlZywgSlNDX0RPTUpJVF9TSUdOQVRVUkVfTUFYX0FSR1VNRU5UU19JTkNMVURJTkdfVEhJUz4g
cmVnczsKKworICAgIGF1dG8gYXBwZW5kQ2VsbCA9IFsmXShFZGdlJiBlZGdlKSB7CisgICAgICAg
IFNwZWN1bGF0ZUNlbGxPcGVyYW5kIG9wZXJhbmQodGhpcywgZWRnZSk7CisgICAgICAgIHJlZ3Mu
YXBwZW5kKG9wZXJhbmQuZ3ByKCkpOworICAgICAgICBvcGVyYW5kcy5hcHBlbmQoV1RGTW92ZShv
cGVyYW5kKSk7CisgICAgfTsKKworICAgIGF1dG8gYXBwZW5kU3RyaW5nID0gWyZdKEVkZ2UmIGVk
Z2UpIHsKKyAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgb3BlcmFuZCh0aGlzLCBlZGdlKTsK
KyAgICAgICAgR1BSUmVnIGdwciA9IG9wZXJhbmQuZ3ByKCk7CisgICAgICAgIHJlZ3MuYXBwZW5k
KGdwcik7CisgICAgICAgIHNwZWN1bGF0ZVN0cmluZyhlZGdlLCBncHIpOworICAgICAgICBvcGVy
YW5kcy5hcHBlbmQoV1RGTW92ZShvcGVyYW5kKSk7CisgICAgfTsKKworICAgIGF1dG8gYXBwZW5k
SW50MzIgPSBbJl0oRWRnZSYgZWRnZSkgeworICAgICAgICBTcGVjdWxhdGVJbnQzMk9wZXJhbmQg
b3BlcmFuZCh0aGlzLCBlZGdlKTsKKyAgICAgICAgcmVncy5hcHBlbmQob3BlcmFuZC5ncHIoKSk7
CisgICAgICAgIG9wZXJhbmRzLmFwcGVuZChXVEZNb3ZlKG9wZXJhbmQpKTsKKyAgICB9OworCisg
ICAgYXV0byBhcHBlbmRCb29sZWFuID0gWyZdKEVkZ2UmIGVkZ2UpIHsKKyAgICAgICAgU3BlY3Vs
YXRlQm9vbGVhbk9wZXJhbmQgb3BlcmFuZCh0aGlzLCBlZGdlKTsKKyAgICAgICAgcmVncy5hcHBl
bmQob3BlcmFuZC5ncHIoKSk7CisgICAgICAgIG9wZXJhbmRzLmFwcGVuZChXVEZNb3ZlKG9wZXJh
bmQpKTsKKyAgICB9OworCisgICAgdW5zaWduZWQgaW5kZXggPSAwOworICAgIG1faml0LmdyYXBo
KCkuZG9Ub0NoaWxkcmVuKG5vZGUsIFsmXShFZGdlIGVkZ2UpIHsKKyAgICAgICAgaWYgKCFpbmRl
eCkKKyAgICAgICAgICAgIGFwcGVuZENlbGwoZWRnZSk7CisgICAgICAgIGVsc2UgeworICAgICAg
ICAgICAgc3dpdGNoIChzaWduYXR1cmUtPmFyZ3VtZW50c1tpbmRleCAtIDFdKSB7CisgICAgICAg
ICAgICBjYXNlIFNwZWNTdHJpbmc6CisgICAgICAgICAgICAgICAgYXBwZW5kU3RyaW5nKGVkZ2Up
OworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBTcGVjSW50MzJPbmx5
OgorICAgICAgICAgICAgICAgIGFwcGVuZEludDMyKGVkZ2UpOworICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgY2FzZSBTcGVjQm9vbGVhbjoKKyAgICAgICAgICAgICAgICBhcHBl
bmRCb29sZWFuKGVkZ2UpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgZGVm
YXVsdDoKKyAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAg
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgICsr
aW5kZXg7CisgICAgfSk7CisKKyAgICBKU1ZhbHVlUmVnc1RlbXBvcmFyeSByZXN1bHQodGhpcyk7
CisgICAgSlNWYWx1ZVJlZ3MgcmVzdWx0UmVncyA9IHJlc3VsdC5yZWdzKCk7CisKKyAgICBmbHVz
aFJlZ2lzdGVycygpOworICAgIHVuc2lnbmVkIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzID0g
c2lnbmF0dXJlLT5hcmd1bWVudENvdW50ICsgMTsKKyAgICBzd2l0Y2ggKGFyZ3VtZW50Q291bnRJ
bmNsdWRpbmdUaGlzKSB7CisgICAgY2FzZSAxOgorICAgICAgICBjYWxsT3BlcmF0aW9uKHJlaW50
ZXJwcmV0X2Nhc3Q8Sl9KSVRPcGVyYXRpb25fRVA+KHNpZ25hdHVyZS0+dW5zYWZlRnVuY3Rpb24p
LCBleHRyYWN0UmVzdWx0KHJlc3VsdFJlZ3MpLCByZWdzWzBdKTsKKyAgICAgICAgYnJlYWs7Cisg
ICAgY2FzZSAyOgorICAgICAgICBjYWxsT3BlcmF0aW9uKHJlaW50ZXJwcmV0X2Nhc3Q8Sl9KSVRP
cGVyYXRpb25fRVBQPihzaWduYXR1cmUtPnVuc2FmZUZ1bmN0aW9uKSwgZXh0cmFjdFJlc3VsdChy
ZXN1bHRSZWdzKSwgcmVnc1swXSwgcmVnc1sxXSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2Ug
MzoKKyAgICAgICAgY2FsbE9wZXJhdGlvbihyZWludGVycHJldF9jYXN0PEpfSklUT3BlcmF0aW9u
X0VQUFA+KHNpZ25hdHVyZS0+dW5zYWZlRnVuY3Rpb24pLCBleHRyYWN0UmVzdWx0KHJlc3VsdFJl
Z3MpLCByZWdzWzBdLCByZWdzWzFdLCByZWdzWzJdKTsKKyAgICAgICAgYnJlYWs7CisgICAgZGVm
YXVsdDoKKyAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgYnJl
YWs7CisgICAgfQorCisgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKKyAgICBqc1ZhbHVlUmVz
dWx0KHJlc3VsdFJlZ3MsIG5vZGUpOworfQorCiB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxl
Q2FsbERPTUdldHRlcihOb2RlKiBub2RlKQogewogICAgIERPTUpJVDo6Q2FsbERPTUdldHRlclBh
dGNocG9pbnQqIHBhdGNocG9pbnQgPSBub2RlLT5jYWxsRE9NR2V0dGVyRGF0YSgpLT5wYXRjaHBv
aW50OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2
ZUpJVC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCmlu
ZGV4IDU2NTM4YTI5NDZlNDAzMDBmMDUwZjMzNTUyYTczY2NhNzU5Y2VhY2EuLjc5NmE4YTM1ZTZk
MzA1N2ZhYWJlYTA3OWEwMjAzZDVkNDk5YTk1YjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKQEAgLTE2NTEsNiArMTY1MSwxMSBAQCBjbGFzcyBT
cGVjdWxhdGl2ZUpJVCB7CiAgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0
ZShhcmcxLCBhcmcyKTsKICAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0
aW9uLCByZXN1bHQpOwogICAgIH0KKyAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9u
KEpfSklUT3BlcmF0aW9uX0VQUFAgb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBHUFJSZWcgYXJn
MSwgR1BSUmVnIGFyZzIsIEdQUlJlZyBhcmczKQorICAgIHsKKyAgICAgICAgbV9qaXQuc2V0dXBB
cmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIsIGFyZzMpOworICAgICAgICByZXR1cm4g
YXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CisgICAgfQogICAgIEpJVENv
bXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9KSVRPcGVyYXRpb25fRUdQIG9wZXJhdGlvbiwg
R1BSUmVnIHJlc3VsdCwgR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyKQogICAgIHsKICAgICAgICAg
bV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIpOwpAQCAtMTkxNSw2
ICsxOTIwLDE2IEBAIGNsYXNzIFNwZWN1bGF0aXZlSklUIHsKICAgICAgICAgbV9qaXQuc2V0dXBB
cmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIFRydXN0ZWRJbW1QdHIocG9pbnRlcikpOwogICAg
ICAgICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdC5wYXlsb2Fk
R1BSKCksIHJlc3VsdC50YWdHUFIoKSk7CiAgICAgfQorICAgIEpJVENvbXBpbGVyOjpDYWxsIGNh
bGxPcGVyYXRpb24oSl9KSVRPcGVyYXRpb25fRVBQIG9wZXJhdGlvbiwgSlNWYWx1ZVJlZ3MgcmVz
dWx0LCBHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIpCisgICAgeworICAgICAgICBtX2ppdC5zZXR1
cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMik7CisgICAgICAgIHJldHVybiBhcHBl
bmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0LnBheWxvYWRHUFIoKSwgcmVzdWx0LnRh
Z0dQUigpKTsKKyAgICB9CisgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihKX0pJ
VE9wZXJhdGlvbl9FUFBQIG9wZXJhdGlvbiwgSlNWYWx1ZVJlZ3MgcmVzdWx0LCBHUFJSZWcgYXJn
MSwgR1BSUmVnIGFyZzIsIEdQUlJlZyBhcmczKQorICAgIHsKKyAgICAgICAgbV9qaXQuc2V0dXBB
cmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIsIGFyZzMpOworICAgICAgICByZXR1cm4g
YXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdC5wYXlsb2FkR1BSKCksIHJlc3Vs
dC50YWdHUFIoKSk7CisgICAgfQogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24o
Sl9KSVRPcGVyYXRpb25fRUdQIG9wZXJhdGlvbiwgSlNWYWx1ZVJlZ3MgcmVzdWx0LCBHUFJSZWcg
YXJnMSwgR1BSUmVnIGFyZzIpCiAgICAgewogICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dp
dGhFeGVjU3RhdGUoYXJnMSwgYXJnMik7CkBAIC0yNTYyLDYgKzI1NzcsNyBAQCBjbGFzcyBTcGVj
dWxhdGl2ZUpJVCB7CiAgICAgdm9pZCBjb21waWxlUmVhbGxvY2F0ZVByb3BlcnR5U3RvcmFnZShO
b2RlKik7CiAgICAgdm9pZCBjb21waWxlR2V0QnV0dGVyZmx5KE5vZGUqKTsKICAgICB2b2lkIGNv
bXBpbGVDYWxsRE9NR2V0dGVyKE5vZGUqKTsKKyAgICB2b2lkIGNvbXBpbGVDYWxsRE9NKE5vZGUq
KTsKICAgICB2b2lkIGNvbXBpbGVDaGVja0RPTShOb2RlKik7CiAgICAgCiAjaWYgVVNFKEpTVkFM
VUUzMl82NCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3Vs
YXRpdmVKSVQzMl82NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0
aXZlSklUMzJfNjQuY3BwCmluZGV4IGNiMDRhNWE2NWM3NTBlMjNmMTdjOWRiMjM0MTViNzM0YWVm
NWI0YTQuLjEwMjQyOWRlMDAwYjMyYWRmZGQwMjc0M2VjNmRmZGRlZTgxZjUzYWMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNw
cApAQCAtNTU2MSw2ICs1NTYxLDEwIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9k
ZSogbm9kZSkKICAgICAgICAgYnJlYWs7CiAgICAgfQogCisgICAgY2FzZSBDYWxsRE9NOgorICAg
ICAgICBjb21waWxlQ2FsbERPTShub2RlKTsKKyAgICAgICAgYnJlYWs7CisKICAgICBjYXNlIENh
bGxET01HZXR0ZXI6CiAgICAgICAgIGNvbXBpbGVDYWxsRE9NR2V0dGVyKG5vZGUpOwogICAgICAg
ICBicmVhazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3Vs
YXRpdmVKSVQ2NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZl
SklUNjQuY3BwCmluZGV4IGI0MWM2ZjMyYjMzZDgzYzY1ZTg1NGY4NjA3OGQ3NGE1MjQwMjk4MTMu
LjgzMGJmYWRjYWYyODY2N2EwOGIxYjgyZWU1OTg4YzBjNjVkMmNhYjkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcApAQCAtNTY5Myw2
ICs1NjkzLDEwIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAg
ICAgICAgY29tcGlsZU1hdGVyaWFsaXplTmV3T2JqZWN0KG5vZGUpOwogICAgICAgICBicmVhazsK
IAorICAgIGNhc2UgQ2FsbERPTToKKyAgICAgICAgY29tcGlsZUNhbGxET00obm9kZSk7CisgICAg
ICAgIGJyZWFrOworCiAgICAgY2FzZSBDYWxsRE9NR2V0dGVyOgogICAgICAgICBjb21waWxlQ2Fs
bERPTUdldHRlcihub2RlKTsKICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZG9taml0L0RPTUpJVEVmZmVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RvbWppdC9ET01KSVRFZmZlY3QuaAppbmRleCA1OWUzMDBjMzkyNjEwNDdhMTEyMjkwZGE4NmI0
ZmExNjhkOWM2MzA2Li42MWNmM2I3MWFiYmNlMzFlNDUxMzZhZjI4NmM2YzdhZjIzNjY4YTZiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZG9taml0L0RPTUpJVEVmZmVjdC5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kb21qaXQvRE9NSklURWZmZWN0LmgKQEAgLTI4LDU2
ICsyOCw2MiBAQAogI2luY2x1ZGUgIkRPTUpJVEhlYXBSYW5nZS5oIgogI2luY2x1ZGUgPHd0Zi9P
cHRpb25hbC5oPgogCi0jaWYgRU5BQkxFKEpJVCkKLQogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFj
ZSBET01KSVQgewogCi1zdHJ1Y3QgRWZmZWN0IHsKK2NsYXNzIEVmZmVjdCB7CitwdWJsaWM6CiAg
ICAgSGVhcFJhbmdlIHJlYWRzIHsgSGVhcFJhbmdlOjp0b3AoKSB9OwogICAgIEhlYXBSYW5nZSB3
cml0ZXMgeyBIZWFwUmFuZ2U6OnRvcCgpIH07Ci0gICAgT3B0aW9uYWw8SGVhcFJhbmdlPiBkZWY7
CisgICAgSGVhcFJhbmdlIGRlZiB7IEhlYXBSYW5nZTo6dG9wKCkgfTsKKworICAgIGNvbnN0ZXhw
ciBFZmZlY3QoKSA9IGRlZmF1bHQ7CisgICAgY29uc3RleHByIEVmZmVjdChIZWFwUmFuZ2UgcmVh
ZHMsIEhlYXBSYW5nZSB3cml0ZXMpCisgICAgICAgIDogcmVhZHMocmVhZHMpCisgICAgICAgICwg
d3JpdGVzKHdyaXRlcykKKyAgICB7CisgICAgfQorCisgICAgY29uc3RleHByIEVmZmVjdChIZWFw
UmFuZ2UgcmVhZHMsIEhlYXBSYW5nZSB3cml0ZXMsIEhlYXBSYW5nZSBkZWYpCisgICAgICAgIDog
cmVhZHMocmVhZHMpCisgICAgICAgICwgd3JpdGVzKHdyaXRlcykKKyAgICAgICAgLCBkZWYoZGVm
KQorICAgIHsKKyAgICB9CiAKLSAgICBzdGF0aWMgRWZmZWN0IGZvclJlYWRXcml0ZShIZWFwUmFu
Z2UgcmVhZFJhbmdlLCBIZWFwUmFuZ2Ugd3JpdGVSYW5nZSkKKyAgICBjb25zdGV4cHIgc3RhdGlj
IEVmZmVjdCBmb3JXcml0ZShIZWFwUmFuZ2Ugd3JpdGVSYW5nZSkKICAgICB7Ci0gICAgICAgIEVm
ZmVjdCBlZmZlY3Q7Ci0gICAgICAgIGVmZmVjdC5yZWFkcyA9IHJlYWRSYW5nZTsKLSAgICAgICAg
ZWZmZWN0LndyaXRlcyA9IHdyaXRlUmFuZ2U7Ci0gICAgICAgIHJldHVybiBlZmZlY3Q7CisgICAg
ICAgIHJldHVybiBFZmZlY3QoSGVhcFJhbmdlOjpub25lKCksIHdyaXRlUmFuZ2UpOwogICAgIH0K
IAotICAgIHN0YXRpYyBFZmZlY3QgZm9yUHVyZSgpCisgICAgY29uc3RleHByIHN0YXRpYyBFZmZl
Y3QgZm9yUmVhZChIZWFwUmFuZ2UgcmVhZFJhbmdlKQogICAgIHsKLSAgICAgICAgRWZmZWN0IGVm
ZmVjdDsKLSAgICAgICAgZWZmZWN0LnJlYWRzID0gSGVhcFJhbmdlOjpub25lKCk7Ci0gICAgICAg
IGVmZmVjdC53cml0ZXMgPSBIZWFwUmFuZ2U6Om5vbmUoKTsKLSAgICAgICAgZWZmZWN0LmRlZiA9
IEhlYXBSYW5nZTo6bm9uZSgpOwotICAgICAgICByZXR1cm4gZWZmZWN0OworICAgICAgICByZXR1
cm4gRWZmZWN0KHJlYWRSYW5nZSwgSGVhcFJhbmdlOjpub25lKCkpOwogICAgIH0KIAotICAgIHN0
YXRpYyBFZmZlY3QgZm9yRGVmKEhlYXBSYW5nZSBkZWYpCisgICAgY29uc3RleHByIHN0YXRpYyBF
ZmZlY3QgZm9yUmVhZFdyaXRlKEhlYXBSYW5nZSByZWFkUmFuZ2UsIEhlYXBSYW5nZSB3cml0ZVJh
bmdlKQogICAgIHsKLSAgICAgICAgRWZmZWN0IGVmZmVjdDsKLSAgICAgICAgZWZmZWN0LnJlYWRz
ID0gZGVmOwotICAgICAgICBlZmZlY3Qud3JpdGVzID0gSGVhcFJhbmdlOjpub25lKCk7Ci0gICAg
ICAgIGVmZmVjdC5kZWYgPSBkZWY7Ci0gICAgICAgIHJldHVybiBlZmZlY3Q7CisgICAgICAgIHJl
dHVybiBFZmZlY3QocmVhZFJhbmdlLCB3cml0ZVJhbmdlKTsKICAgICB9CiAKLSAgICBzdGF0aWMg
RWZmZWN0IGZvckRlZihIZWFwUmFuZ2UgZGVmLCBIZWFwUmFuZ2UgcmVhZFJhbmdlLCBIZWFwUmFu
Z2Ugd3JpdGVSYW5nZSkKKyAgICBjb25zdGV4cHIgc3RhdGljIEVmZmVjdCBmb3JQdXJlKCkKICAg
ICB7Ci0gICAgICAgIEVmZmVjdCBlZmZlY3Q7Ci0gICAgICAgIGVmZmVjdC5yZWFkcyA9IHJlYWRS
YW5nZTsKLSAgICAgICAgZWZmZWN0LndyaXRlcyA9IHdyaXRlUmFuZ2U7Ci0gICAgICAgIGVmZmVj
dC5kZWYgPSBkZWY7Ci0gICAgICAgIHJldHVybiBlZmZlY3Q7CisgICAgICAgIHJldHVybiBFZmZl
Y3QoSGVhcFJhbmdlOjpub25lKCksIEhlYXBSYW5nZTo6bm9uZSgpLCBIZWFwUmFuZ2U6Om5vbmUo
KSk7CiAgICAgfQogCi0gICAgYm9vbCBtdXN0R2VuZXJhdGUoKSBjb25zdAorICAgIGNvbnN0ZXhw
ciBzdGF0aWMgRWZmZWN0IGZvckRlZihIZWFwUmFuZ2UgZGVmKQorICAgIHsKKyAgICAgICAgcmV0
dXJuIEVmZmVjdChkZWYsIEhlYXBSYW5nZTo6bm9uZSgpLCBkZWYpOworICAgIH0KKworICAgIGNv
bnN0ZXhwciBzdGF0aWMgRWZmZWN0IGZvckRlZihIZWFwUmFuZ2UgZGVmLCBIZWFwUmFuZ2UgcmVh
ZFJhbmdlLCBIZWFwUmFuZ2Ugd3JpdGVSYW5nZSkKKyAgICB7CisgICAgICAgIHJldHVybiBFZmZl
Y3QocmVhZFJhbmdlLCB3cml0ZVJhbmdlLCBkZWYpOworICAgIH0KKworICAgIGNvbnN0ZXhwciBi
b29sIG11c3RHZW5lcmF0ZSgpIGNvbnN0CiAgICAgewogICAgICAgICByZXR1cm4gISF3cml0ZXM7
CiAgICAgfQogfTsKIAogfSB9Ci0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RvbWppdC9ET01KSVRIZWFwUmFuZ2UuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
b21qaXQvRE9NSklUSGVhcFJhbmdlLmgKaW5kZXggZmI5Mzk5OWZmNzg1YzA2ZjdkYWNkNmRhOWM4
ZDZlMGE5NTY3ODY3NC4uMjYxYTdhZjJjYzU4NDk1N2IxZWFlMDgxZTM4ZDBiZGYyZGVmMzBiMyAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RvbWppdC9ET01KSVRIZWFwUmFuZ2Uu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZG9taml0L0RPTUpJVEhlYXBSYW5nZS5oCkBA
IC0yOCw4ICsyOCw2IEBACiAjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KICNpbmNsdWRlIDx3
dGYvUHJpbnRTdHJlYW0uaD4KIAotI2lmIEVOQUJMRShKSVQpCi0KIG5hbWVzcGFjZSBKU0MgeyBu
YW1lc3BhY2UgRE9NSklUIHsKIAogY2xhc3MgSGVhcFJhbmdlIHsKQEAgLTQ3LDcgKzQ1LDYgQEAg
Y2xhc3MgSGVhcFJhbmdlIHsKICAgICAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRShiZWdpbiA8PSBl
bmQsICJiZWdpbiA8PSBlbmQgaXMgdGhlIGludmFyaWFudCBvZiB0aGlzIEhlYXBSYW5nZS4iKTsK
ICAgICB9CiAKLXByaXZhdGU6CiAgICAgZW51bSBDb25zdEV4cHJUYWcgeyBDb25zdEV4cHIgfTsK
ICAgICBjb25zdGV4cHIgSGVhcFJhbmdlKENvbnN0RXhwclRhZywgdWludDE2X3QgYmVnaW4sIHVp
bnQxNl90IGVuZCkKICAgICAgICAgOiBtX2JlZ2luKGJlZ2luKQpAQCAtNTUsMjEgKzUyLDEzIEBA
IGNsYXNzIEhlYXBSYW5nZSB7CiAgICAgewogICAgIH0KIAotICAgIHRlbXBsYXRlPHVpbnQxNl90
IGJlZ2luLCB1aW50MTZfdCBlbmQ+Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBIZWFwUmFuZ2UgZnJv
bUNvbnN0YW50KCkKLSAgICB7Ci0gICAgICAgIHN0YXRpY19hc3NlcnQoYmVnaW4gPD0gZW5kLCAi
YmVnaW4gPD0gZW5kIGlzIHRoZSBpbnZhcmlhbnQgb2YgdGhpcyBIZWFwUmFuZ2UuIik7Ci0gICAg
ICAgIHJldHVybiBIZWFwUmFuZ2UoQ29uc3RFeHByLCBiZWdpbiwgZW5kKTsKLSAgICB9Ci0KLXB1
YmxpYzoKICAgICBlbnVtIFJhd1JlcHJlc2VudGF0aW9uVGFnIHsgUmF3UmVwcmVzZW50YXRpb24g
fTsKICAgICBleHBsaWNpdCBjb25zdGV4cHIgSGVhcFJhbmdlKFJhd1JlcHJlc2VudGF0aW9uVGFn
LCB1aW50MzJfdCB2YWx1ZSkKICAgICAgICAgOiBtX3Jhdyh2YWx1ZSkKICAgICB7CiAgICAgfQog
Ci0gICAgc3RhdGljIEhlYXBSYW5nZSBmcm9tUmF3KHVpbnQzMl90IHZhbHVlKQorICAgIGNvbnN0
ZXhwciBzdGF0aWMgSGVhcFJhbmdlIGZyb21SYXcodWludDMyX3QgdmFsdWUpCiAgICAgewogICAg
ICAgICByZXR1cm4gSGVhcFJhbmdlKFJhd1JlcHJlc2VudGF0aW9uLCB2YWx1ZSk7CiAgICAgfQpA
QCAtODMsMTEgKzcyLDIzIEBAIGNsYXNzIEhlYXBSYW5nZSB7CiAgICAgICAgIHJldHVybiBtX2Jl
Z2luICE9IG1fZW5kOwogICAgIH0KIAotICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBIZWFwUmFu
Z2UmIG90aGVyKSBjb25zdAorICAgIGNvbnN0ZXhwciBib29sIG9wZXJhdG9yPT0oY29uc3QgSGVh
cFJhbmdlJiBvdGhlcikgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVybiBtX2JlZ2luID09IG90
aGVyLm1fYmVnaW4gJiYgbV9lbmQgPT0gb3RoZXIubV9lbmQ7CiAgICAgfQogCisgICAgY29uc3Rl
eHByIGJvb2wgb3BlcmF0b3IhPShjb25zdCBIZWFwUmFuZ2UmIG90aGVyKSBjb25zdAorICAgIHsK
KyAgICAgICAgcmV0dXJuICFvcGVyYXRvcj09KG90aGVyKTsKKyAgICB9CisKKyAgICB0ZW1wbGF0
ZTx1aW50MTZfdCBiZWdpbiwgdWludDE2X3QgZW5kPgorICAgIHN0YXRpYyBjb25zdGV4cHIgSGVh
cFJhbmdlIGZyb21Db25zdGFudCgpCisgICAgeworICAgICAgICBzdGF0aWNfYXNzZXJ0KGJlZ2lu
IDwgZW5kIHx8IChiZWdpbiA9PSBVSU5UMTZfTUFYICYmIGVuZCA9PSBVSU5UMTZfTUFYKSwgImJl
Z2luIDwgZW5kIG9yIHRoZSBib3RoIGFyZSBVSU5UMTZfTUFYIGlzIHRoZSBpbnZhcmlhbnQgb2Yg
dGhpcyBIZWFwUmFuZ2UuIik7CisgICAgICAgIHJldHVybiBIZWFwUmFuZ2UoQ29uc3RFeHByLCBi
ZWdpbiwgZW5kKTsKKyAgICB9CisKICAgICBzdGF0aWMgY29uc3RleHByIEhlYXBSYW5nZSB0b3Ao
KSB7IHJldHVybiBmcm9tQ29uc3RhbnQ8MCwgVUlOVDE2X01BWD4oKTsgfQogICAgIHN0YXRpYyBj
b25zdGV4cHIgSGVhcFJhbmdlIG5vbmUoKSB7IHJldHVybiBmcm9tQ29uc3RhbnQ8VUlOVDE2X01B
WCwgVUlOVDE2X01BWD4oKTsgfSAvLyBFbXB0eSByYW5nZS4KIApAQCAtMTI3LDUgKzEyOCwzIEBA
IGNsYXNzIEhlYXBSYW5nZSB7CiB9OwogCiB9IH0KLQotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZG9taml0L0RPTUpJVFNpZ25hdHVyZS5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RvbWppdC9ET01KSVRTaWduYXR1cmUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45NTE1MjZhYWU4
NmUxNWQxMTlkM2U5OTI0YzMwZDdkNjIxNjhjNTQ4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RvbWppdC9ET01KSVRTaWduYXR1cmUuaApAQCAtMCwwICsxLDcyIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQor
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBv
bmNlCisKKyNpbmNsdWRlICJDbGFzc0luZm8uaCIKKyNpbmNsdWRlICJET01KSVRFZmZlY3QuaCIK
KyNpbmNsdWRlICJTcGVjdWxhdGVkVHlwZS5oIgorCituYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNl
IERPTUpJVCB7CisKKy8vIEZJWE1FOiBDdXJyZW50bHksIHdlIG9ubHkgc3VwcG9ydCBmdW5jdGlv
bnMgd2hpY2ggYXJndW1lbnRzIGFyZSB1cCB0byAyLgorLy8gRXZlbnR1YWxseSwgd2Ugc2hvdWxk
IGV4dGVuZCB0aGlzLiBCdXQgcG9zc2libHksIDIgb3IgMyBjYW4gY292ZXIgdHlwaWNhbCB1c2Ug
Y2FzZXMuCisvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY0MzQ2
CisjZGVmaW5lIEpTQ19ET01KSVRfU0lHTkFUVVJFX01BWF9BUkdVTUVOVFMgMgorI2RlZmluZSBK
U0NfRE9NSklUX1NJR05BVFVSRV9NQVhfQVJHVU1FTlRTX0lOQ0xVRElOR19USElTICgxICsgSlND
X0RPTUpJVF9TSUdOQVRVUkVfTUFYX0FSR1VNRU5UUykKKworY2xhc3MgUGF0Y2hwb2ludDsKKwor
dHlwZWRlZiBSZWY8UGF0Y2hwb2ludD4gQ2hlY2tET01HZW5lcmF0b3JGdW5jdGlvbih2b2lkKTsK
KworY2xhc3MgU2lnbmF0dXJlIHsKK3B1YmxpYzoKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBB
cmd1bWVudHM+CisgICAgY29uc3RleHByIFNpZ25hdHVyZSh1aW50cHRyX3QgdW5zYWZlRnVuY3Rp
b24sIENoZWNrRE9NR2VuZXJhdG9yRnVuY3Rpb24qIGNoZWNrRE9NR2VuZXJhdG9yRnVuY3Rpb24s
IGNvbnN0IENsYXNzSW5mbyogY2xhc3NJbmZvLCBFZmZlY3QgZWZmZWN0LCBTcGVjdWxhdGVkVHlw
ZSByZXN1bHQsIEFyZ3VtZW50cy4uLiBhcmd1bWVudHMpCisgICAgICAgIDogdW5zYWZlRnVuY3Rp
b24odW5zYWZlRnVuY3Rpb24pCisgICAgICAgICwgY2hlY2tET01HZW5lcmF0b3JGdW5jdGlvbihj
aGVja0RPTUdlbmVyYXRvckZ1bmN0aW9uKQorICAgICAgICAsIGNsYXNzSW5mbyhjbGFzc0luZm8p
CisgICAgICAgICwgZWZmZWN0KGVmZmVjdCkKKyAgICAgICAgLCByZXN1bHQocmVzdWx0KQorICAg
ICAgICAsIGFyZ3VtZW50cyB7c3RhdGljX2Nhc3Q8U3BlY3VsYXRlZFR5cGU+KGFyZ3VtZW50cyku
Li59CisgICAgICAgICwgYXJndW1lbnRDb3VudChzaXplb2YuLi4oYXJndW1lbnRzKSkKKyAgICB7
CisgICAgfQorCisgICAgUmVmPFBhdGNocG9pbnQ+IGNoZWNrRE9NKCkgY29uc3QKKyAgICB7Cisg
ICAgICAgIHJldHVybiBjaGVja0RPTUdlbmVyYXRvckZ1bmN0aW9uKCk7CisgICAgfQorCisgICAg
dWludHB0cl90IHVuc2FmZUZ1bmN0aW9uOworICAgIENoZWNrRE9NR2VuZXJhdG9yRnVuY3Rpb24q
IGNoZWNrRE9NR2VuZXJhdG9yRnVuY3Rpb247CisgICAgY29uc3QgQ2xhc3NJbmZvKiBjb25zdCBj
bGFzc0luZm87CisgICAgY29uc3QgRWZmZWN0IGVmZmVjdDsKKyAgICBjb25zdCBTcGVjdWxhdGVk
VHlwZSByZXN1bHQ7CisgICAgY29uc3QgU3BlY3VsYXRlZFR5cGUgYXJndW1lbnRzW0pTQ19ET01K
SVRfU0lHTkFUVVJFX01BWF9BUkdVTUVOVFNdOworICAgIGNvbnN0IHVuc2lnbmVkIGFyZ3VtZW50
Q291bnQ7Cit9OworCit9IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwv
RlRMQ2FwYWJpbGl0aWVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJp
bGl0aWVzLmNwcAppbmRleCA1NGY0ZTcyZTY0MTliZmUyNTU2NTNlMzY1ZmJhYzgyMDMyZmZkZTk3
Li4zYmExNWU2ZTI4NDRkMzA0MDNlOGRkNGUwMTZjMjRiMGMwNDZkZmMxIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCkBAIC0yNzMsNiArMjczLDcg
QEAgaW5saW5lIENhcGFiaWxpdHlMZXZlbCBjYW5Db21waWxlKE5vZGUqIG5vZGUpCiAgICAgY2Fz
ZSBEZWZpbmVBY2Nlc3NvclByb3BlcnR5OgogICAgIGNhc2UgVG9Mb3dlckNhc2U6CiAgICAgY2Fz
ZSBDaGVja0RPTToKKyAgICBjYXNlIENhbGxET006CiAgICAgY2FzZSBDYWxsRE9NR2V0dGVyOgog
ICAgICAgICAvLyBUaGVzZSBhcmUgT0suCiAgICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCmluZGV4IGFkMTYxNTcyMDI3YzQxZjMw
MDY4M2RjMTIyNDJmOWI5NWQ0NTkwYzIuLjc5ZDk3YmI2MDM4MWYzNDEyOWViZWIwMmNlZDhlNTg0
ZDI0MThhMmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJE
RkdUb0IzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9C
My5jcHAKQEAgLTEwNjAsNiArMTA2MCw5IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAgICAgICAg
IGNhc2UgQ2hlY2tET006CiAgICAgICAgICAgICBjb21waWxlQ2hlY2tET00oKTsKICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICBjYXNlIENhbGxET006CisgICAgICAgICAgICBjb21waWxlQ2Fs
bERPTSgpOworICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQ2FsbERPTUdldHRlcjoK
ICAgICAgICAgICAgIGNvbXBpbGVDYWxsRE9NR2V0dGVyKCk7CiAgICAgICAgICAgICBicmVhazsK
QEAgLTkxMDAsNiArOTEwMyw1NyBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogICAgICAgICBwYXRj
aHBvaW50LT5lZmZlY3RzID0gRWZmZWN0czo6Zm9yQ2hlY2soKTsKICAgICB9CiAKKyAgICB2b2lk
IGNvbXBpbGVDYWxsRE9NKCkKKyAgICB7CisgICAgICAgIGNvbnN0IERPTUpJVDo6U2lnbmF0dXJl
KiBzaWduYXR1cmUgPSBtX25vZGUtPnNpZ25hdHVyZSgpOworCisgICAgICAgIC8vIEZJWE1FOiBX
ZSBzaG91bGQgaGF2ZSBhIHdheSB0byBjYWxsIGZ1bmN0aW9ucyB3aXRoIHRoZSB2ZWN0b3Igb2Yg
cmVnaXN0ZXJzLgorICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTYzMDk5CisgICAgICAgIFZlY3RvcjxMVmFsdWUsIEpTQ19ET01KSVRfU0lHTkFUVVJF
X01BWF9BUkdVTUVOVFNfSU5DTFVESU5HX1RISVM+IG9wZXJhbmRzOworCisgICAgICAgIHVuc2ln
bmVkIGluZGV4ID0gMDsKKyAgICAgICAgREZHX05PREVfRE9fVE9fQ0hJTERSRU4obV9ncmFwaCwg
bV9ub2RlLCBbJl0oTm9kZSosIEVkZ2UgZWRnZSkgeworICAgICAgICAgICAgaWYgKCFpbmRleCkK
KyAgICAgICAgICAgICAgICBvcGVyYW5kcy5hcHBlbmQobG93Q2VsbChlZGdlKSk7CisgICAgICAg
ICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBzd2l0Y2ggKHNpZ25hdHVyZS0+YXJndW1lbnRz
W2luZGV4IC0gMV0pIHsKKyAgICAgICAgICAgICAgICBjYXNlIFNwZWNTdHJpbmc6CisgICAgICAg
ICAgICAgICAgICAgIG9wZXJhbmRzLmFwcGVuZChsb3dTdHJpbmcoZWRnZSkpOworICAgICAgICAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIFNwZWNJbnQzMk9ubHk6Cisg
ICAgICAgICAgICAgICAgICAgIG9wZXJhbmRzLmFwcGVuZChsb3dJbnQzMihlZGdlKSk7CisgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgU3BlY0Jvb2xlYW46
CisgICAgICAgICAgICAgICAgICAgIG9wZXJhbmRzLmFwcGVuZChsb3dCb29sZWFuKGVkZ2UpKTsK
KyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAg
ICAgICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAg
ICAgICAgICAgKytpbmRleDsKKyAgICAgICAgfSk7CisKKyAgICAgICAgdW5zaWduZWQgYXJndW1l
bnRDb3VudEluY2x1ZGluZ1RoaXMgPSBzaWduYXR1cmUtPmFyZ3VtZW50Q291bnQgKyAxOworICAg
ICAgICBMVmFsdWUgcmVzdWx0OworICAgICAgICBzd2l0Y2ggKGFyZ3VtZW50Q291bnRJbmNsdWRp
bmdUaGlzKSB7CisgICAgICAgIGNhc2UgMToKKyAgICAgICAgICAgIHJlc3VsdCA9IHZtQ2FsbChJ
bnQ2NCwgbV9vdXQub3BlcmF0aW9uKHJlaW50ZXJwcmV0X2Nhc3Q8Sl9KSVRPcGVyYXRpb25fRVA+
KHNpZ25hdHVyZS0+dW5zYWZlRnVuY3Rpb24pKSwgbV9jYWxsRnJhbWUsIG9wZXJhbmRzWzBdKTsK
KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIDI6CisgICAgICAgICAgICByZXN1bHQg
PSB2bUNhbGwoSW50NjQsIG1fb3V0Lm9wZXJhdGlvbihyZWludGVycHJldF9jYXN0PEpfSklUT3Bl
cmF0aW9uX0VQUD4oc2lnbmF0dXJlLT51bnNhZmVGdW5jdGlvbikpLCBtX2NhbGxGcmFtZSwgb3Bl
cmFuZHNbMF0sIG9wZXJhbmRzWzFdKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNl
IDM6CisgICAgICAgICAgICByZXN1bHQgPSB2bUNhbGwoSW50NjQsIG1fb3V0Lm9wZXJhdGlvbihy
ZWludGVycHJldF9jYXN0PEpfSklUT3BlcmF0aW9uX0VQUFA+KHNpZ25hdHVyZS0+dW5zYWZlRnVu
Y3Rpb24pKSwgbV9jYWxsRnJhbWUsIG9wZXJhbmRzWzBdLCBvcGVyYW5kc1sxXSwgb3BlcmFuZHNb
Ml0pOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBS
RUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IH0KKworICAgICAgICBzZXRKU1ZhbHVlKHJlc3VsdCk7CisgICAgfQorCiAgICAgdm9pZCBjb21w
aWxlQ2FsbERPTUdldHRlcigpCiAgICAgewogICAgICAgICBET01KSVQ6OkNhbGxET01HZXR0ZXJQ
YXRjaHBvaW50KiBkb21KSVQgPSBtX25vZGUtPmNhbGxET01HZXR0ZXJEYXRhKCktPnBhdGNocG9p
bnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCmluZGV4IDhmNmM2
OTcxYTZiZWU5ZjFmYjZmYzM2OGRlNWEyY2I4NDc2NDRhNjguLjIwYjcxZjQ1MmNlNDRiNWNjNTZj
YzcxYzJkNzZiMTdiNTg4ZmU2NjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUT3BlcmF0aW9ucy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bl
cmF0aW9ucy5oCkBAIC0xNTgsNiArMTU4LDcgQEAgdHlwZWRlZiBFbmNvZGVkSlNWYWx1ZSAoSklU
X09QRVJBVElPTiAqSl9KSVRPcGVyYXRpb25fRUpQKShFeGVjU3RhdGUqLCBFbmNvZGVkSlMKIHR5
cGVkZWYgRW5jb2RlZEpTVmFsdWUgKEpJVF9PUEVSQVRJT04gKkpfSklUT3BlcmF0aW9uX0VHUCko
RXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqLCB2b2lkKik7CiB0eXBlZGVmIEVuY29kZWRKU1Zh
bHVlIChKSVRfT1BFUkFUSU9OICpKX0pJVE9wZXJhdGlvbl9FUCkoRXhlY1N0YXRlKiwgdm9pZCop
OwogdHlwZWRlZiBFbmNvZGVkSlNWYWx1ZSAoSklUX09QRVJBVElPTiAqSl9KSVRPcGVyYXRpb25f
RVBQKShFeGVjU3RhdGUqLCB2b2lkKiwgdm9pZCopOwordHlwZWRlZiBFbmNvZGVkSlNWYWx1ZSAo
SklUX09QRVJBVElPTiAqSl9KSVRPcGVyYXRpb25fRVBQUCkoRXhlY1N0YXRlKiwgdm9pZCosIHZv
aWQqLCB2b2lkKik7CiB0eXBlZGVmIEVuY29kZWRKU1ZhbHVlIChKSVRfT1BFUkFUSU9OICpKX0pJ
VE9wZXJhdGlvbl9FUFMpKEV4ZWNTdGF0ZSosIHZvaWQqLCBzaXplX3QpOwogdHlwZWRlZiBFbmNv
ZGVkSlNWYWx1ZSAoSklUX09QRVJBVElPTiAqSl9KSVRPcGVyYXRpb25fRVBjKShFeGVjU3RhdGUq
LCBJbnN0cnVjdGlvbiopOwogdHlwZWRlZiBFbmNvZGVkSlNWYWx1ZSAoSklUX09QRVJBVElPTiAq
Sl9KSVRPcGVyYXRpb25fRUpzY0MpKEV4ZWNTdGF0ZSosIEpTU2NvcGUqLCBKU0NlbGwqKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUVGh1bmtzLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUVGh1bmtzLmNwcAppbmRleCBiZjBhN2Y5MDkxOWE1YjZk
MGJlZWQ5MjhhYmRhZjcxMGM5ZGM5ZDBiLi40MGMxMmNlYzk0ZTAxYTA4NDA0ZjdiNmQ5NjcyMWYx
MDUxZjQ4MzE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFRodW5r
cy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRUaHVua3MuY3BwCkBAIC05
MCwxMCArOTAsMTAgQEAgdm9pZCBKSVRUaHVua3M6OmZpbmFsaXplKEhhbmRsZTxVbmtub3duPiBo
YW5kbGUsIHZvaWQqKQogCiBOYXRpdmVFeGVjdXRhYmxlKiBKSVRUaHVua3M6Omhvc3RGdW5jdGlv
blN0dWIoVk0qIHZtLCBOYXRpdmVGdW5jdGlvbiBmdW5jdGlvbiwgTmF0aXZlRnVuY3Rpb24gY29u
c3RydWN0b3IsIGNvbnN0IFN0cmluZyYgbmFtZSkKIHsKLSAgICByZXR1cm4gaG9zdEZ1bmN0aW9u
U3R1Yih2bSwgZnVuY3Rpb24sIGNvbnN0cnVjdG9yLCBudWxscHRyLCBOb0ludHJpbnNpYywgbmFt
ZSk7CisgICAgcmV0dXJuIGhvc3RGdW5jdGlvblN0dWIodm0sIGZ1bmN0aW9uLCBjb25zdHJ1Y3Rv
ciwgbnVsbHB0ciwgTm9JbnRyaW5zaWMsIG51bGxwdHIsIG5hbWUpOwogfQogCi1OYXRpdmVFeGVj
dXRhYmxlKiBKSVRUaHVua3M6Omhvc3RGdW5jdGlvblN0dWIoVk0qIHZtLCBOYXRpdmVGdW5jdGlv
biBmdW5jdGlvbiwgTmF0aXZlRnVuY3Rpb24gY29uc3RydWN0b3IsIFRodW5rR2VuZXJhdG9yIGdl
bmVyYXRvciwgSW50cmluc2ljIGludHJpbnNpYywgY29uc3QgU3RyaW5nJiBuYW1lKQorTmF0aXZl
RXhlY3V0YWJsZSogSklUVGh1bmtzOjpob3N0RnVuY3Rpb25TdHViKFZNKiB2bSwgTmF0aXZlRnVu
Y3Rpb24gZnVuY3Rpb24sIE5hdGl2ZUZ1bmN0aW9uIGNvbnN0cnVjdG9yLCBUaHVua0dlbmVyYXRv
ciBnZW5lcmF0b3IsIEludHJpbnNpYyBpbnRyaW5zaWMsIGNvbnN0IERPTUpJVDo6U2lnbmF0dXJl
KiBzaWduYXR1cmUsIGNvbnN0IFN0cmluZyYgbmFtZSkKIHsKICAgICBBU1NFUlQoIWlzQ29tcGls
YXRpb25UaHJlYWQoKSk7ICAgIAogICAgIEFTU0VSVCh2bS0+Y2FuVXNlSklUKCkpOwpAQCAtMTEw
LDE0ICsxMTAsMTQgQEAgTmF0aXZlRXhlY3V0YWJsZSogSklUVGh1bmtzOjpob3N0RnVuY3Rpb25T
dHViKFZNKiB2bSwgTmF0aXZlRnVuY3Rpb24gZnVuY3Rpb24sIE4KICAgICAKICAgICBSZWZQdHI8
SklUQ29kZT4gZm9yQ29uc3RydWN0ID0gYWRvcHRSZWYobmV3IE5hdGl2ZUpJVENvZGUoTWFjcm9B
c3NlbWJsZXJDb2RlUmVmOjpjcmVhdGVTZWxmTWFuYWdlZENvZGVSZWYoY3RpTmF0aXZlQ29uc3Ry
dWN0KHZtKSksIEpJVENvZGU6Okhvc3RDYWxsVGh1bmspKTsKICAgICAKLSAgICBOYXRpdmVFeGVj
dXRhYmxlKiBuYXRpdmVFeGVjdXRhYmxlID0gTmF0aXZlRXhlY3V0YWJsZTo6Y3JlYXRlKCp2bSwg
Zm9yQ2FsbCwgZnVuY3Rpb24sIGZvckNvbnN0cnVjdCwgY29uc3RydWN0b3IsIGludHJpbnNpYywg
bmFtZSk7CisgICAgTmF0aXZlRXhlY3V0YWJsZSogbmF0aXZlRXhlY3V0YWJsZSA9IE5hdGl2ZUV4
ZWN1dGFibGU6OmNyZWF0ZSgqdm0sIGZvckNhbGwsIGZ1bmN0aW9uLCBmb3JDb25zdHJ1Y3QsIGNv
bnN0cnVjdG9yLCBpbnRyaW5zaWMsIHNpZ25hdHVyZSwgbmFtZSk7CiAgICAgd2Vha0FkZCgqbV9o
b3N0RnVuY3Rpb25TdHViTWFwLCBzdGQ6Om1ha2VfdHVwbGUoZnVuY3Rpb24sIGNvbnN0cnVjdG9y
LCBuYW1lKSwgV2VhazxOYXRpdmVFeGVjdXRhYmxlPihuYXRpdmVFeGVjdXRhYmxlLCB0aGlzKSk7
CiAgICAgcmV0dXJuIG5hdGl2ZUV4ZWN1dGFibGU7CiB9CiAKIE5hdGl2ZUV4ZWN1dGFibGUqIEpJ
VFRodW5rczo6aG9zdEZ1bmN0aW9uU3R1YihWTSogdm0sIE5hdGl2ZUZ1bmN0aW9uIGZ1bmN0aW9u
LCBUaHVua0dlbmVyYXRvciBnZW5lcmF0b3IsIEludHJpbnNpYyBpbnRyaW5zaWMsIGNvbnN0IFN0
cmluZyYgbmFtZSkKIHsKLSAgICByZXR1cm4gaG9zdEZ1bmN0aW9uU3R1Yih2bSwgZnVuY3Rpb24s
IGNhbGxIb3N0RnVuY3Rpb25Bc0NvbnN0cnVjdG9yLCBnZW5lcmF0b3IsIGludHJpbnNpYywgbmFt
ZSk7CisgICAgcmV0dXJuIGhvc3RGdW5jdGlvblN0dWIodm0sIGZ1bmN0aW9uLCBjYWxsSG9zdEZ1
bmN0aW9uQXNDb25zdHJ1Y3RvciwgZ2VuZXJhdG9yLCBpbnRyaW5zaWMsIG51bGxwdHIsIG5hbWUp
OwogfQogCiB2b2lkIEpJVFRodW5rczo6Y2xlYXJIb3N0RnVuY3Rpb25TdHVicygpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFRodW5rcy5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRUaHVua3MuaAppbmRleCAzZjhmZTgwM2Y5ODcxMGY2OTIzNTI3YmM4
ZjY1NTBmNGVkZDFjN2FlLi5hZGRjZjIzMGMzNDVkNDI3MWI2MzdmMDhiOTRjNDE2YTNlZDE4MmE0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFRodW5rcy5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUVGh1bmtzLmgKQEAgLTM5LDYgKzM5LDkgQEAK
ICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CiAKIG5hbWVzcGFjZSBKU0MgeworbmFt
ZXNwYWNlIERPTUpJVCB7CitjbGFzcyBTaWduYXR1cmU7Cit9CiAKIGNsYXNzIFZNOwogY2xhc3Mg
TmF0aXZlRXhlY3V0YWJsZTsKQEAgLTU3LDcgKzYwLDcgQEAgY2xhc3MgSklUVGh1bmtzIGZpbmFs
IDogcHJpdmF0ZSBXZWFrSGFuZGxlT3duZXIgewogICAgIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBj
dGlTdHViKFZNKiwgVGh1bmtHZW5lcmF0b3IpOwogCiAgICAgTmF0aXZlRXhlY3V0YWJsZSogaG9z
dEZ1bmN0aW9uU3R1YihWTSosIE5hdGl2ZUZ1bmN0aW9uLCBOYXRpdmVGdW5jdGlvbiBjb25zdHJ1
Y3RvciwgY29uc3QgU3RyaW5nJiBuYW1lKTsKLSAgICBOYXRpdmVFeGVjdXRhYmxlKiBob3N0RnVu
Y3Rpb25TdHViKFZNKiwgTmF0aXZlRnVuY3Rpb24sIE5hdGl2ZUZ1bmN0aW9uIGNvbnN0cnVjdG9y
LCBUaHVua0dlbmVyYXRvciwgSW50cmluc2ljLCBjb25zdCBTdHJpbmcmIG5hbWUpOworICAgIE5h
dGl2ZUV4ZWN1dGFibGUqIGhvc3RGdW5jdGlvblN0dWIoVk0qLCBOYXRpdmVGdW5jdGlvbiwgTmF0
aXZlRnVuY3Rpb24gY29uc3RydWN0b3IsIFRodW5rR2VuZXJhdG9yLCBJbnRyaW5zaWMsIGNvbnN0
IERPTUpJVDo6U2lnbmF0dXJlKiwgY29uc3QgU3RyaW5nJiBuYW1lKTsKICAgICBOYXRpdmVFeGVj
dXRhYmxlKiBob3N0RnVuY3Rpb25TdHViKFZNKiwgTmF0aXZlRnVuY3Rpb24sIFRodW5rR2VuZXJh
dG9yLCBJbnRyaW5zaWMsIGNvbnN0IFN0cmluZyYgbmFtZSk7CiAKICAgICB2b2lkIGNsZWFySG9z
dEZ1bmN0aW9uU3R1YnMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTQm91bmRGdW5jdGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0JvdW5kRnVuY3Rpb24uY3BwCmluZGV4IDI2Zjk5ZDY1M2FhMTQ0YjI0MDRkZDc5NTk0MzI5M2Rl
OTZiNzM0YzUuLmM0Y2U0M2U3ZDU2MGI4NzM2M2M0OGQ5NTBhMDlhZDc5ZDA1MjQ5N2EgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQm91bmRGdW5jdGlvbi5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCb3VuZEZ1bmN0aW9uLmNwcApA
QCAtMTY4LDcgKzE2OCw3IEBAIEpTQm91bmRGdW5jdGlvbiogSlNCb3VuZEZ1bmN0aW9uOjpjcmVh
dGUoVk0mIHZtLCBFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0CiAgICAgTmF0aXZlRXhl
Y3V0YWJsZSogZXhlY3V0YWJsZSA9IHZtLmdldEhvc3RGdW5jdGlvbigKICAgICAgICAgc2xvd0Nh
c2UgPyBib3VuZEZ1bmN0aW9uQ2FsbCA6IGJvdW5kVGhpc05vQXJnc0Z1bmN0aW9uQ2FsbCwKICAg
ICAgICAgc2xvd0Nhc2UgPyBOb0ludHJpbnNpYyA6IEJvdW5kVGhpc05vQXJnc0Z1bmN0aW9uQ2Fs
bEludHJpbnNpYywKLSAgICAgICAgY2FuQ29uc3RydWN0ID8gKHNsb3dDYXNlID8gYm91bmRGdW5j
dGlvbkNvbnN0cnVjdCA6IGJvdW5kVGhpc05vQXJnc0Z1bmN0aW9uQ29uc3RydWN0KSA6IGNhbGxI
b3N0RnVuY3Rpb25Bc0NvbnN0cnVjdG9yLAorICAgICAgICBjYW5Db25zdHJ1Y3QgPyAoc2xvd0Nh
c2UgPyBib3VuZEZ1bmN0aW9uQ29uc3RydWN0IDogYm91bmRUaGlzTm9BcmdzRnVuY3Rpb25Db25z
dHJ1Y3QpIDogY2FsbEhvc3RGdW5jdGlvbkFzQ29uc3RydWN0b3IsIG51bGxwdHIsCiAgICAgICAg
IG5hbWUpOwogICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gZ2V0Qm91bmRGdW5jdGlvblN0cnVj
dHVyZSh2bSwgZXhlYywgZ2xvYmFsT2JqZWN0LCB0YXJnZXRGdW5jdGlvbik7CiAgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTihzY29wZSwgbnVsbHB0cik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0NlbGwuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTQ2VsbC5oCmluZGV4IGM0MGYzZTIxOTg0MWZiNDY4OTYzNTI4NGIwNDIyNDdhZmQ1MjNjMzYu
LjRlZmJmOTA3NzhjYzU3MWJiZGI4Mjg3MWE1MWZhNDRmODU2YWU5OGIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5oCkBAIC01NiwxNyArNTYsMTcgQEAgdGVtcGxhdGU8dHlw
ZW5hbWUgVD4gdm9pZCogYWxsb2NhdGVDZWxsKEhlYXAmLCBzaXplX3QpOwogdGVtcGxhdGU8dHlw
ZW5hbWUgVD4gdm9pZCogYWxsb2NhdGVDZWxsKEhlYXAmLCBHQ0RlZmVycmFsQ29udGV4dCopOwog
dGVtcGxhdGU8dHlwZW5hbWUgVD4gdm9pZCogYWxsb2NhdGVDZWxsKEhlYXAmLCBHQ0RlZmVycmFs
Q29udGV4dCosIHNpemVfdCk7CiAKLSNkZWZpbmUgREVDTEFSRV9FWFBPUlRfSU5GTyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBwcm90ZWN0ZWQ6ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK
LSAgICAgICAgc3RhdGljIEpTX0VYUE9SVERBVEEgY29uc3QgOjpKU0M6OkNsYXNzSW5mbyBzX2lu
Zm87ICAgICAgICAgICAgIFwKLSAgICBwdWJsaWM6ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgc3RhdGljIGNvbnN0
IDo6SlNDOjpDbGFzc0luZm8qIGluZm8oKSB7IHJldHVybiAmc19pbmZvOyB9Ci0KLSNkZWZpbmUg
REVDTEFSRV9JTkZPICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFwKLSAgICBwcm90ZWN0ZWQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgc3RhdGljIGNvbnN0IDo6SlNDOjpD
bGFzc0luZm8gc19pbmZvOyAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBwdWJsaWM6
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFwKLSAgICAgICAgc3RhdGljIGNvbnN0IDo6SlNDOjpDbGFzc0luZm8qIGluZm8oKSB7IHJl
dHVybiAmc19pbmZvOyB9CisjZGVmaW5lIERFQ0xBUkVfRVhQT1JUX0lORk8gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBwcm90ZWN0ZWQ6ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgXAorICAgICAgICBzdGF0aWMgSlNfRVhQT1JUREFUQSBjb25zdCA6OkpTQzo6Q2xhc3NJbmZv
IHNfaW5mbzsgICAgICAgICAgICAgICAgICBcCisgICAgcHVibGljOiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAg
ICAgc3RhdGljIGNvbnN0ZXhwciBjb25zdCA6OkpTQzo6Q2xhc3NJbmZvKiBpbmZvKCkgeyByZXR1
cm4gJnNfaW5mbzsgfQorCisjZGVmaW5lIERFQ0xBUkVfSU5GTyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBwcm90ZWN0ZWQ6ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgXAorICAgICAgICBzdGF0aWMgY29uc3QgOjpKU0M6OkNsYXNzSW5mbyBzX2luZm87ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgcHVibGljOiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAg
ICAgc3RhdGljIGNvbnN0ZXhwciBjb25zdCA6OkpTQzo6Q2xhc3NJbmZvKiBpbmZvKCkgeyByZXR1
cm4gJnNfaW5mbzsgfQogCiBjbGFzcyBKU0NlbGwgOiBwdWJsaWMgSGVhcENlbGwgewogICAgIGZy
aWVuZCBjbGFzcyBKU1ZhbHVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNGdW5jdGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1
bmN0aW9uLmNwcAppbmRleCA4NTg0YmMyOTdhZjcyM2Y1ODI5ODE1NmUyZTJiMGE4OGFlNzE4ZmI0
Li5hMzE4NDJiNjU5MDkzZWVkNDgzMmYwYzIyNTQ3ZmZiNDQ5YzQ0Y2Q5IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcApAQCAtODQsOSArODQsOSBAQCBK
U0Z1bmN0aW9uKiBKU0Z1bmN0aW9uOjpjcmVhdGUoVk0mIHZtLCBXZWJBc3NlbWJseUV4ZWN1dGFi
bGUqIGV4ZWN1dGFibGUsIEpTU2NvcAogfQogI2VuZGlmCiAKLUpTRnVuY3Rpb24qIEpTRnVuY3Rp
b246OmNyZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGludCBsZW5n
dGgsIGNvbnN0IFN0cmluZyYgbmFtZSwgTmF0aXZlRnVuY3Rpb24gbmF0aXZlRnVuY3Rpb24sIElu
dHJpbnNpYyBpbnRyaW5zaWMsIE5hdGl2ZUZ1bmN0aW9uIG5hdGl2ZUNvbnN0cnVjdG9yKQorSlNG
dW5jdGlvbiogSlNGdW5jdGlvbjo6Y3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgaW50IGxlbmd0aCwgY29uc3QgU3RyaW5nJiBuYW1lLCBOYXRpdmVGdW5jdGlvbiBu
YXRpdmVGdW5jdGlvbiwgSW50cmluc2ljIGludHJpbnNpYywgTmF0aXZlRnVuY3Rpb24gbmF0aXZl
Q29uc3RydWN0b3IsIGNvbnN0IERPTUpJVDo6U2lnbmF0dXJlKiBzaWduYXR1cmUpCiB7Ci0gICAg
TmF0aXZlRXhlY3V0YWJsZSogZXhlY3V0YWJsZSA9IHZtLmdldEhvc3RGdW5jdGlvbihuYXRpdmVG
dW5jdGlvbiwgaW50cmluc2ljLCBuYXRpdmVDb25zdHJ1Y3RvciwgbmFtZSk7CisgICAgTmF0aXZl
RXhlY3V0YWJsZSogZXhlY3V0YWJsZSA9IHZtLmdldEhvc3RGdW5jdGlvbihuYXRpdmVGdW5jdGlv
biwgaW50cmluc2ljLCBuYXRpdmVDb25zdHJ1Y3Rvciwgc2lnbmF0dXJlLCBuYW1lKTsKICAgICBK
U0Z1bmN0aW9uKiBmdW5jdGlvbiA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTRnVuY3Rp
b24+KHZtLmhlYXApKSBKU0Z1bmN0aW9uKHZtLCBnbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdC0+
ZnVuY3Rpb25TdHJ1Y3R1cmUoKSk7CiAgICAgLy8gQ2FuJ3QgZG8gdGhpcyBkdXJpbmcgaW5pdGlh
bGl6YXRpb24gYmVjYXVzZSBnZXRIb3N0RnVuY3Rpb24gbWlnaHQgZG8gYSBHQyBhbGxvY2F0aW9u
LgogICAgIGZ1bmN0aW9uLT5maW5pc2hDcmVhdGlvbih2bSwgZXhlY3V0YWJsZSwgbGVuZ3RoLCBu
YW1lKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rp
b24uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uaAppbmRleCA4
ZGYwM2ExNGE2N2RhZTkzMDRjMGQ1NTQ5NGY5NWE4NzdmOTc4MWU2Li5mMTFiMTJmYjNiZDE0NTYy
NWY4MmJmMWZhODcyNTA0NDQ3NjU3NjI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0Z1bmN0aW9uLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNGdW5jdGlvbi5oCkBAIC00Niw2ICs0NiwxMSBAQCBjbGFzcyBTcGVjdWxhdGl2ZUpJVDsK
IGNsYXNzIEpJVENvbXBpbGVyOwogfQogCituYW1lc3BhY2UgRE9NSklUIHsKK2NsYXNzIFNpZ25h
dHVyZTsKK30KKworCiBKU19FWFBPUlRfUFJJVkFURSBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGNhbGxIb3N0RnVuY3Rpb25Bc0NvbnN0cnVjdG9yKEV4ZWNTdGF0ZSopOwogCiBKU19FWFBP
UlRfUFJJVkFURSBTdHJpbmcgZ2V0Q2FsY3VsYXRlZERpc3BsYXlOYW1lKFZNJiwgSlNPYmplY3Qq
KTsKQEAgLTY3LDcgKzcyLDcgQEAgY2xhc3MgSlNGdW5jdGlvbiA6IHB1YmxpYyBKU0NhbGxlZSB7
CiAgICAgICAgIHJldHVybiBzaXplb2YoSlNGdW5jdGlvbik7CiAgICAgfQogCi0gICAgSlNfRVhQ
T1JUX1BSSVZBVEUgc3RhdGljIEpTRnVuY3Rpb24qIGNyZWF0ZShWTSYsIEpTR2xvYmFsT2JqZWN0
KiwgaW50IGxlbmd0aCwgY29uc3QgU3RyaW5nJiBuYW1lLCBOYXRpdmVGdW5jdGlvbiwgSW50cmlu
c2ljID0gTm9JbnRyaW5zaWMsIE5hdGl2ZUZ1bmN0aW9uIG5hdGl2ZUNvbnN0cnVjdG9yID0gY2Fs
bEhvc3RGdW5jdGlvbkFzQ29uc3RydWN0b3IpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRp
YyBKU0Z1bmN0aW9uKiBjcmVhdGUoVk0mLCBKU0dsb2JhbE9iamVjdCosIGludCBsZW5ndGgsIGNv
bnN0IFN0cmluZyYgbmFtZSwgTmF0aXZlRnVuY3Rpb24sIEludHJpbnNpYyA9IE5vSW50cmluc2lj
LCBOYXRpdmVGdW5jdGlvbiBuYXRpdmVDb25zdHJ1Y3RvciA9IGNhbGxIb3N0RnVuY3Rpb25Bc0Nv
bnN0cnVjdG9yLCBjb25zdCBET01KSVQ6OlNpZ25hdHVyZSogPSBudWxscHRyKTsKICAgICAKICAg
ICBzdGF0aWMgSlNGdW5jdGlvbiogY3JlYXRlV2l0aEludmFsaWRhdGVkUmVhbGxvY2F0aW9uV2F0
Y2hwb2ludChWTSYsIEZ1bmN0aW9uRXhlY3V0YWJsZSosIEpTU2NvcGUqKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNOYXRpdmVTdGRGdW5jdGlvbi5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU05hdGl2ZVN0ZEZ1bmN0aW9uLmNwcApp
bmRleCA2ZGQ4NDlmMmVhZmJlYmRkNzA3ZWU1NzM4MDA4MmRlNTQ4OTMyMGExLi5jMTI2NWIxZjA2
YTkwYTA3NDQxZDdhYzVjNjA4ODMwYTFlZmE0ZjAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU05hdGl2ZVN0ZEZ1bmN0aW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU05hdGl2ZVN0ZEZ1bmN0aW9uLmNwcApAQCAtNjYsNyArNjYs
NyBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBydW5TdGRGdW5jdGlvbihF
eGVjU3RhdGUqIHN0YXRlKQogCiBKU05hdGl2ZVN0ZEZ1bmN0aW9uKiBKU05hdGl2ZVN0ZEZ1bmN0
aW9uOjpjcmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBpbnQgbGVu
Z3RoLCBjb25zdCBTdHJpbmcmIG5hbWUsIE5hdGl2ZVN0ZEZ1bmN0aW9uJiYgbmF0aXZlU3RkRnVu
Y3Rpb24sIEludHJpbnNpYyBpbnRyaW5zaWMsIE5hdGl2ZUZ1bmN0aW9uIG5hdGl2ZUNvbnN0cnVj
dG9yKQogewotICAgIE5hdGl2ZUV4ZWN1dGFibGUqIGV4ZWN1dGFibGUgPSB2bS5nZXRIb3N0RnVu
Y3Rpb24ocnVuU3RkRnVuY3Rpb24sIGludHJpbnNpYywgbmF0aXZlQ29uc3RydWN0b3IsIG5hbWUp
OworICAgIE5hdGl2ZUV4ZWN1dGFibGUqIGV4ZWN1dGFibGUgPSB2bS5nZXRIb3N0RnVuY3Rpb24o
cnVuU3RkRnVuY3Rpb24sIGludHJpbnNpYywgbmF0aXZlQ29uc3RydWN0b3IsIG51bGxwdHIsIG5h
bWUpOwogICAgIE5hdGl2ZVN0ZEZ1bmN0aW9uQ2VsbCogZnVuY3Rpb25DZWxsID0gTmF0aXZlU3Rk
RnVuY3Rpb25DZWxsOjpjcmVhdGUodm0sIFdURk1vdmUobmF0aXZlU3RkRnVuY3Rpb24pKTsKICAg
ICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGdsb2JhbE9iamVjdC0+bmF0aXZlU3RkRnVuY3Rpb25T
dHJ1Y3R1cmUoKTsKICAgICBKU05hdGl2ZVN0ZEZ1bmN0aW9uKiBmdW5jdGlvbiA9IG5ldyAoTm90
TnVsbCwgYWxsb2NhdGVDZWxsPEpTTmF0aXZlU3RkRnVuY3Rpb24+KHZtLmhlYXApKSBKU05hdGl2
ZVN0ZEZ1bmN0aW9uKHZtLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAKaW5kZXggZjUzZGI2MTk4NmVhZGRhYTIzYTI0
NWRlNTRhZTA5YzU4ZjBhYjc2NC4uMDhhZTc5MjBhOWVlNTJjMjRkNzVhYmUxZGE3ZjY2ZTgxMWIy
YWYxYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3Qu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcApAQCAt
MjU0OSw2ICsyNTQ5LDE3IEBAIGJvb2wgSlNPYmplY3Q6OnB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9u
KFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uCiAgICAgcmV0dXJuIHB1
dERpcmVjdCh2bSwgcHJvcGVydHlOYW1lLCBmdW5jdGlvbiwgYXR0cmlidXRlcyk7CiB9CiAKK2Jv
b2wgSlNPYmplY3Q6OnB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uKFZNJiB2bSwgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgY29uc3QgUHJvcGVydHlOYW1lJiBwcm9wZXJ0eU5hbWUsIHVuc2ln
bmVkIGZ1bmN0aW9uTGVuZ3RoLCBOYXRpdmVGdW5jdGlvbiBuYXRpdmVGdW5jdGlvbiwgSW50cmlu
c2ljIGludHJpbnNpYywgY29uc3QgRE9NSklUOjpTaWduYXR1cmUqIHNpZ25hdHVyZSwgdW5zaWdu
ZWQgYXR0cmlidXRlcykKK3sKKyAgICBTdHJpbmdJbXBsKiBuYW1lID0gcHJvcGVydHlOYW1lLnB1
YmxpY05hbWUoKTsKKyAgICBpZiAoIW5hbWUpCisgICAgICAgIG5hbWUgPSB2bS5wcm9wZXJ0eU5h
bWVzLT5hbm9ueW1vdXMuaW1wbCgpOworICAgIEFTU0VSVChuYW1lKTsKKworICAgIEpTRnVuY3Rp
b24qIGZ1bmN0aW9uID0gSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIGZ1bmN0
aW9uTGVuZ3RoLCBuYW1lLCBuYXRpdmVGdW5jdGlvbiwgaW50cmluc2ljLCBjYWxsSG9zdEZ1bmN0
aW9uQXNDb25zdHJ1Y3Rvciwgc2lnbmF0dXJlKTsKKyAgICByZXR1cm4gcHV0RGlyZWN0KHZtLCBw
cm9wZXJ0eU5hbWUsIGZ1bmN0aW9uLCBhdHRyaWJ1dGVzKTsKK30KKwogSlNGdW5jdGlvbiogSlNP
YmplY3Q6OnB1dERpcmVjdEJ1aWx0aW5GdW5jdGlvbihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIGNvbnN0IFByb3BlcnR5TmFtZSYgcHJvcGVydHlOYW1lLCBGdW5jdGlvbkV4
ZWN1dGFibGUqIGZ1bmN0aW9uRXhlY3V0YWJsZSwgdW5zaWduZWQgYXR0cmlidXRlcykKIHsKICAg
ICBTdHJpbmdJbXBsKiBuYW1lID0gcHJvcGVydHlOYW1lLnB1YmxpY05hbWUoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCmluZGV4IDYyMjBlYzdhMWJhOGU4YTc0OWRi
NGIwNmNkNDI5M2E4ODVhZjdmOTIuLmViZTQ4NWU4ZGYzNmRiNWNhZjM3NzA0YjhlZWRkNGE3NmNi
OWM0NDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaApAQCAtNDcs
NiArNDcsOSBAQAogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KIAogbmFtZXNwYWNlIEpT
QyB7CituYW1lc3BhY2UgRE9NSklUIHsKK2NsYXNzIFNpZ25hdHVyZTsKK30KIAogaW5saW5lIEpT
Q2VsbCogZ2V0SlNGdW5jdGlvbihKU1ZhbHVlIHZhbHVlKQogewpAQCAtNzAwLDYgKzcwMyw3IEBA
IGNsYXNzIEpTT2JqZWN0IDogcHVibGljIEpTQ2VsbCB7CiAKICAgICBKU19FWFBPUlRfUFJJVkFU
RSBib29sIHB1dERpcmVjdE5hdGl2ZUludHJpbnNpY0dldHRlcihWTSYsIEpTR2xvYmFsT2JqZWN0
KiwgSWRlbnRpZmllciwgTmF0aXZlRnVuY3Rpb24sIEludHJpbnNpYywgdW5zaWduZWQgYXR0cmli
dXRlcyk7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgYm9vbCBwdXREaXJlY3ROYXRpdmVGdW5jdGlv
bihWTSYsIEpTR2xvYmFsT2JqZWN0KiwgY29uc3QgUHJvcGVydHlOYW1lJiwgdW5zaWduZWQgZnVu
Y3Rpb25MZW5ndGgsIE5hdGl2ZUZ1bmN0aW9uLCBJbnRyaW5zaWMsIHVuc2lnbmVkIGF0dHJpYnV0
ZXMpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIGJvb2wgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb24o
Vk0mLCBKU0dsb2JhbE9iamVjdCosIGNvbnN0IFByb3BlcnR5TmFtZSYsIHVuc2lnbmVkIGZ1bmN0
aW9uTGVuZ3RoLCBOYXRpdmVGdW5jdGlvbiwgSW50cmluc2ljLCBjb25zdCBET01KSVQ6OlNpZ25h
dHVyZSosIHVuc2lnbmVkIGF0dHJpYnV0ZXMpOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIEpTRnVu
Y3Rpb24qIHB1dERpcmVjdEJ1aWx0aW5GdW5jdGlvbihWTSYsIEpTR2xvYmFsT2JqZWN0KiwgY29u
c3QgUHJvcGVydHlOYW1lJiwgRnVuY3Rpb25FeGVjdXRhYmxlKiwgdW5zaWduZWQgYXR0cmlidXRl
cyk7CiAgICAgSlNGdW5jdGlvbiogcHV0RGlyZWN0QnVpbHRpbkZ1bmN0aW9uV2l0aG91dFRyYW5z
aXRpb24oVk0mLCBKU0dsb2JhbE9iamVjdCosIGNvbnN0IFByb3BlcnR5TmFtZSYsIEZ1bmN0aW9u
RXhlY3V0YWJsZSosIHVuc2lnbmVkIGF0dHJpYnV0ZXMpOwogICAgIEpTX0VYUE9SVF9QUklWQVRF
IHZvaWQgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbihWTSYsIEpTR2xv
YmFsT2JqZWN0KiwgY29uc3QgUHJvcGVydHlOYW1lJiwgdW5zaWduZWQgZnVuY3Rpb25MZW5ndGgs
IE5hdGl2ZUZ1bmN0aW9uLCBJbnRyaW5zaWMsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTG9va3VwLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Mb29rdXAuaAppbmRleCBlMmQxNzk1Mzg4ZTc2NTJiZDhmMWI0
YjZkYWNiYjJjYmNlOWNkNDRmLi5kNzA3Njg2ZmI1NjkzZTdmNTJmZTZkMWEyZWM0NGJkMDAyM2Jl
ZjExIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Mb29rdXAuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Mb29rdXAuaApAQCAtMjQsNiArMjQs
NyBAQAogI2luY2x1ZGUgIkNhbGxGcmFtZS5oIgogI2luY2x1ZGUgIkN1c3RvbUdldHRlclNldHRl
ci5oIgogI2luY2x1ZGUgIkRPTUpJVEdldHRlclNldHRlci5oIgorI2luY2x1ZGUgIkRPTUpJVFNp
Z25hdHVyZS5oIgogI2luY2x1ZGUgIklkZW50aWZpZXIuaCIKICNpbmNsdWRlICJJZGVudGlmaWVy
SW5saW5lcy5oIgogI2luY2x1ZGUgIkludHJpbnNpYy5oIgpAQCAtNzUsMTIgKzc2LDE5IEBAIHN0
cnVjdCBIYXNoVGFibGVWYWx1ZSB7CiAgICAgSW50cmluc2ljIGludHJpbnNpYygpIGNvbnN0IHsg
QVNTRVJUKG1fYXR0cmlidXRlcyAmIEZ1bmN0aW9uKTsgcmV0dXJuIG1faW50cmluc2ljOyB9CiAg
ICAgQnVpbHRpbkdlbmVyYXRvciBidWlsdGluR2VuZXJhdG9yKCkgY29uc3QgeyBBU1NFUlQobV9h
dHRyaWJ1dGVzICYgQnVpbHRpbik7IHJldHVybiByZWludGVycHJldF9jYXN0PEJ1aWx0aW5HZW5l
cmF0b3I+KG1fdmFsdWVzLnZhbHVlMSk7IH0KICAgICBOYXRpdmVGdW5jdGlvbiBmdW5jdGlvbigp
IGNvbnN0IHsgQVNTRVJUKG1fYXR0cmlidXRlcyAmIEZ1bmN0aW9uKTsgcmV0dXJuIHJlaW50ZXJw
cmV0X2Nhc3Q8TmF0aXZlRnVuY3Rpb24+KG1fdmFsdWVzLnZhbHVlMSk7IH0KLSAgICB1bnNpZ25l
ZCBjaGFyIGZ1bmN0aW9uTGVuZ3RoKCkgY29uc3QgeyBBU1NFUlQobV9hdHRyaWJ1dGVzICYgRnVu
Y3Rpb24pOyByZXR1cm4gc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4obV92YWx1ZXMudmFsdWUy
KTsgfQorICAgIHVuc2lnbmVkIGNoYXIgZnVuY3Rpb25MZW5ndGgoKSBjb25zdAorICAgIHsKKyAg
ICAgICAgQVNTRVJUKG1fYXR0cmlidXRlcyAmIEZ1bmN0aW9uKTsKKyAgICAgICAgaWYgKG1fYXR0
cmlidXRlcyAmIERPTUpJVEZ1bmN0aW9uKQorICAgICAgICAgICAgcmV0dXJuIHNpZ25hdHVyZSgp
LT5hcmd1bWVudENvdW50OworICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hh
cj4obV92YWx1ZXMudmFsdWUyKTsKKyAgICB9CiAKICAgICBHZXRGdW5jdGlvbiBwcm9wZXJ0eUdl
dHRlcigpIGNvbnN0IHsgQVNTRVJUKCEobV9hdHRyaWJ1dGVzICYgQnVpbHRpbk9yRnVuY3Rpb25P
ckFjY2Vzc29yT3JMYXp5UHJvcGVydHlPckNvbnN0YW50KSk7IHJldHVybiByZWludGVycHJldF9j
YXN0PEdldEZ1bmN0aW9uPihtX3ZhbHVlcy52YWx1ZTEpOyB9CiAgICAgUHV0RnVuY3Rpb24gcHJv
cGVydHlQdXR0ZXIoKSBjb25zdCB7IEFTU0VSVCghKG1fYXR0cmlidXRlcyAmIEJ1aWx0aW5PckZ1
bmN0aW9uT3JBY2Nlc3Nvck9yTGF6eVByb3BlcnR5T3JDb25zdGFudCkpOyByZXR1cm4gcmVpbnRl
cnByZXRfY2FzdDxQdXRGdW5jdGlvbj4obV92YWx1ZXMudmFsdWUyKTsgfQogCiAgICAgRE9NSklU
OjpHZXR0ZXJTZXR0ZXIqIGRvbUpJVCgpIGNvbnN0IHsgQVNTRVJUKG1fYXR0cmlidXRlcyAmIERP
TUpJVEF0dHJpYnV0ZSk7IHJldHVybiByZWludGVycHJldF9jYXN0PERPTUpJVEdldHRlclNldHRl
ckdlbmVyYXRvcj4obV92YWx1ZXMudmFsdWUxKSgpOyB9CisgICAgY29uc3QgRE9NSklUOjpTaWdu
YXR1cmUqIHNpZ25hdHVyZSgpIGNvbnN0IHsgQVNTRVJUKG1fYXR0cmlidXRlcyAmIERPTUpJVEZ1
bmN0aW9uKTsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgRE9NSklUOjpTaWduYXR1cmUq
PihtX3ZhbHVlcy52YWx1ZTIpOyB9CiAKICAgICBOYXRpdmVGdW5jdGlvbiBhY2Nlc3NvckdldHRl
cigpIGNvbnN0IHsgQVNTRVJUKG1fYXR0cmlidXRlcyAmIEFjY2Vzc29yKTsgcmV0dXJuIHJlaW50
ZXJwcmV0X2Nhc3Q8TmF0aXZlRnVuY3Rpb24+KG1fdmFsdWVzLnZhbHVlMSk7IH0KICAgICBOYXRp
dmVGdW5jdGlvbiBhY2Nlc3NvclNldHRlcigpIGNvbnN0IHsgQVNTRVJUKG1fYXR0cmlidXRlcyAm
IEFjY2Vzc29yKTsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8TmF0aXZlRnVuY3Rpb24+KG1fdmFs
dWVzLnZhbHVlMik7IH0KQEAgLTMxMyw2ICszMjEsMTIgQEAgaW5saW5lIHZvaWQgcmVpZnlTdGF0
aWNQcm9wZXJ0eShWTSYgdm0sIGNvbnN0IFByb3BlcnR5TmFtZSYgcHJvcGVydHlOYW1lLCBjb25z
dAogICAgIH0KIAogICAgIGlmICh2YWx1ZS5hdHRyaWJ1dGVzKCkgJiBGdW5jdGlvbikgeworICAg
ICAgICBpZiAodmFsdWUuYXR0cmlidXRlcygpICYgRE9NSklURnVuY3Rpb24pIHsKKyAgICAgICAg
ICAgIHRoaXNPYmoucHV0RGlyZWN0TmF0aXZlRnVuY3Rpb24oCisgICAgICAgICAgICAgICAgdm0s
IHRoaXNPYmouZ2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZSwgdmFsdWUuZnVuY3Rpb25MZW5n
dGgoKSwKKyAgICAgICAgICAgICAgICB2YWx1ZS5mdW5jdGlvbigpLCB2YWx1ZS5pbnRyaW5zaWMo
KSwgdmFsdWUuc2lnbmF0dXJlKCksIGF0dHJpYnV0ZXNGb3JTdHJ1Y3R1cmUodmFsdWUuYXR0cmli
dXRlcygpKSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KICAgICAgICAgdGhpc09i
ai5wdXREaXJlY3ROYXRpdmVGdW5jdGlvbigKICAgICAgICAgICAgIHZtLCB0aGlzT2JqLmdsb2Jh
bE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLmZ1bmN0aW9uTGVuZ3RoKCksCiAgICAgICAg
ICAgICB2YWx1ZS5mdW5jdGlvbigpLCB2YWx1ZS5pbnRyaW5zaWMoKSwgYXR0cmlidXRlc0ZvclN0
cnVjdHVyZSh2YWx1ZS5hdHRyaWJ1dGVzKCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL05hdGl2ZUV4ZWN1dGFibGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvTmF0aXZlRXhlY3V0YWJsZS5jcHAKaW5kZXggMWMyYmVjNThiN2RiODk4Yjgx
MThiMjk3MTBiMmQ3NDI2OTNiYjIxZC4uYjdkYWQyYTQ2MmRkZGZjMjI3NjJmZDVjZDdjZjZhNDYx
Y2RkMThmNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZl
RXhlY3V0YWJsZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZl
RXhlY3V0YWJsZS5jcHAKQEAgLTQwLDEwICs0MCwxMCBAQCBuYW1lc3BhY2UgSlNDIHsKIAogY29u
c3QgQ2xhc3NJbmZvIE5hdGl2ZUV4ZWN1dGFibGU6OnNfaW5mbyA9IHsgIk5hdGl2ZUV4ZWN1dGFi
bGUiLCAmRXhlY3V0YWJsZUJhc2U6OnNfaW5mbywgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShOYXRp
dmVFeGVjdXRhYmxlKSB9OwogCi1OYXRpdmVFeGVjdXRhYmxlKiBOYXRpdmVFeGVjdXRhYmxlOjpj
cmVhdGUoVk0mIHZtLCBQYXNzUmVmUHRyPEpJVENvZGU+IGNhbGxUaHVuaywgTmF0aXZlRnVuY3Rp
b24gZnVuY3Rpb24sIFBhc3NSZWZQdHI8SklUQ29kZT4gY29uc3RydWN0VGh1bmssIE5hdGl2ZUZ1
bmN0aW9uIGNvbnN0cnVjdG9yLCBJbnRyaW5zaWMgaW50cmluc2ljLCBjb25zdCBTdHJpbmcmIG5h
bWUpCitOYXRpdmVFeGVjdXRhYmxlKiBOYXRpdmVFeGVjdXRhYmxlOjpjcmVhdGUoVk0mIHZtLCBQ
YXNzUmVmUHRyPEpJVENvZGU+IGNhbGxUaHVuaywgTmF0aXZlRnVuY3Rpb24gZnVuY3Rpb24sIFBh
c3NSZWZQdHI8SklUQ29kZT4gY29uc3RydWN0VGh1bmssIE5hdGl2ZUZ1bmN0aW9uIGNvbnN0cnVj
dG9yLCBJbnRyaW5zaWMgaW50cmluc2ljLCBjb25zdCBET01KSVQ6OlNpZ25hdHVyZSogc2lnbmF0
dXJlLCBjb25zdCBTdHJpbmcmIG5hbWUpCiB7CiAgICAgTmF0aXZlRXhlY3V0YWJsZSogZXhlY3V0
YWJsZTsKLSAgICBleGVjdXRhYmxlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8TmF0aXZl
RXhlY3V0YWJsZT4odm0uaGVhcCkpIE5hdGl2ZUV4ZWN1dGFibGUodm0sIGZ1bmN0aW9uLCBjb25z
dHJ1Y3RvciwgaW50cmluc2ljKTsKKyAgICBleGVjdXRhYmxlID0gbmV3IChOb3ROdWxsLCBhbGxv
Y2F0ZUNlbGw8TmF0aXZlRXhlY3V0YWJsZT4odm0uaGVhcCkpIE5hdGl2ZUV4ZWN1dGFibGUodm0s
IGZ1bmN0aW9uLCBjb25zdHJ1Y3RvciwgaW50cmluc2ljLCBzaWduYXR1cmUpOwogICAgIGV4ZWN1
dGFibGUtPmZpbmlzaENyZWF0aW9uKHZtLCBjYWxsVGh1bmssIGNvbnN0cnVjdFRodW5rLCBuYW1l
KTsKICAgICByZXR1cm4gZXhlY3V0YWJsZTsKIH0KQEAgLTY4LDEwICs2OCwxMSBAQCB2b2lkIE5h
dGl2ZUV4ZWN1dGFibGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgUGFzc1JlZlB0cjxKSVRDb2Rl
PiBjYWxsVGh1bmssIFBhcwogICAgIG1fbmFtZSA9IG5hbWU7CiB9CiAKLU5hdGl2ZUV4ZWN1dGFi
bGU6Ok5hdGl2ZUV4ZWN1dGFibGUoVk0mIHZtLCBOYXRpdmVGdW5jdGlvbiBmdW5jdGlvbiwgTmF0
aXZlRnVuY3Rpb24gY29uc3RydWN0b3IsIEludHJpbnNpYyBpbnRyaW5zaWMpCitOYXRpdmVFeGVj
dXRhYmxlOjpOYXRpdmVFeGVjdXRhYmxlKFZNJiB2bSwgTmF0aXZlRnVuY3Rpb24gZnVuY3Rpb24s
IE5hdGl2ZUZ1bmN0aW9uIGNvbnN0cnVjdG9yLCBJbnRyaW5zaWMgaW50cmluc2ljLCBjb25zdCBE
T01KSVQ6OlNpZ25hdHVyZSogc2lnbmF0dXJlKQogICAgIDogRXhlY3V0YWJsZUJhc2Uodm0sIHZt
Lm5hdGl2ZUV4ZWN1dGFibGVTdHJ1Y3R1cmUuZ2V0KCksIE5VTV9QQVJBTUVURVJTX0lTX0hPU1Qs
IGludHJpbnNpYykKICAgICAsIG1fZnVuY3Rpb24oZnVuY3Rpb24pCiAgICAgLCBtX2NvbnN0cnVj
dG9yKGNvbnN0cnVjdG9yKQorICAgICwgbV9zaWduYXR1cmUoc2lnbmF0dXJlKQogewogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OYXRpdmVFeGVjdXRhYmxl
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OYXRpdmVFeGVjdXRhYmxlLmgKaW5k
ZXggNWJmMmUxMDZkYjMwYTViOGM5NzhjODk2YTZhZDk4Y2EyYzc1NzQxNC4uZTRkM2UwNDk0NTdi
NDVkMDI0NTdlOGRkYTU0NDkwYjM3MTRhY2NlYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvTmF0aXZlRXhlY3V0YWJsZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL05hdGl2ZUV4ZWN1dGFibGUuaApAQCAtMjgsNiArMjgsOSBAQAogI2luY2x1
ZGUgIkV4ZWN1dGFibGVCYXNlLmgiCiAKIG5hbWVzcGFjZSBKU0MgeworbmFtZXNwYWNlIERPTUpJ
VCB7CitjbGFzcyBTaWduYXR1cmU7Cit9CiAKIGNsYXNzIE5hdGl2ZUV4ZWN1dGFibGUgZmluYWwg
OiBwdWJsaWMgRXhlY3V0YWJsZUJhc2UgewogICAgIGZyaWVuZCBjbGFzcyBKSVQ7CkBAIC0zNiw3
ICszOSw3IEBAIGNsYXNzIE5hdGl2ZUV4ZWN1dGFibGUgZmluYWwgOiBwdWJsaWMgRXhlY3V0YWJs
ZUJhc2UgewogICAgIHR5cGVkZWYgRXhlY3V0YWJsZUJhc2UgQmFzZTsKICAgICBzdGF0aWMgY29u
c3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IFN0cnVj
dHVyZUlzSW1tb3J0YWw7CiAKLSAgICBzdGF0aWMgTmF0aXZlRXhlY3V0YWJsZSogY3JlYXRlKFZN
JiB2bSwgUGFzc1JlZlB0cjxKSVRDb2RlPiBjYWxsVGh1bmssIE5hdGl2ZUZ1bmN0aW9uIGZ1bmN0
aW9uLCBQYXNzUmVmUHRyPEpJVENvZGU+IGNvbnN0cnVjdFRodW5rLCBOYXRpdmVGdW5jdGlvbiBj
b25zdHJ1Y3RvciwgSW50cmluc2ljIGludHJpbnNpYywgY29uc3QgU3RyaW5nJiBuYW1lKTsKKyAg
ICBzdGF0aWMgTmF0aXZlRXhlY3V0YWJsZSogY3JlYXRlKFZNJiwgUGFzc1JlZlB0cjxKSVRDb2Rl
PiBjYWxsVGh1bmssIE5hdGl2ZUZ1bmN0aW9uIGZ1bmN0aW9uLCBQYXNzUmVmUHRyPEpJVENvZGU+
IGNvbnN0cnVjdFRodW5rLCBOYXRpdmVGdW5jdGlvbiBjb25zdHJ1Y3RvciwgSW50cmluc2ljLCBj
b25zdCBET01KSVQ6OlNpZ25hdHVyZSosIGNvbnN0IFN0cmluZyYgbmFtZSk7CiAKICAgICBzdGF0
aWMgdm9pZCBkZXN0cm95KEpTQ2VsbCopOwogCkBAIC02Niw2ICs2OSwxNCBAQCBjbGFzcyBOYXRp
dmVFeGVjdXRhYmxlIGZpbmFsIDogcHVibGljIEV4ZWN1dGFibGVCYXNlIHsKICAgICBERUNMQVJF
X0lORk87CiAKICAgICBjb25zdCBTdHJpbmcmIG5hbWUoKSBjb25zdCB7IHJldHVybiBtX25hbWU7
IH0KKyAgICBjb25zdCBET01KSVQ6OlNpZ25hdHVyZSogc2lnbmF0dXJlKCkgY29uc3QgeyByZXR1
cm4gbV9zaWduYXR1cmU7IH0KKworICAgIGNvbnN0IERPTUpJVDo6U2lnbmF0dXJlKiBzaWduYXR1
cmVGb3IoQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kKSBjb25zdAorICAgIHsKKyAgICAgICAg
aWYgKGlzQ2FsbChraW5kKSkKKyAgICAgICAgICAgIHJldHVybiBzaWduYXR1cmUoKTsKKyAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQogCiBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBmaW5pc2hD
cmVhdGlvbihWTSYsIFBhc3NSZWZQdHI8SklUQ29kZT4gY2FsbFRodW5rLCBQYXNzUmVmUHRyPEpJ
VENvZGU+IGNvbnN0cnVjdFRodW5rLCBjb25zdCBTdHJpbmcmIG5hbWUpOwpAQCAtNzMsMTAgKzg0
LDExIEBAIGNsYXNzIE5hdGl2ZUV4ZWN1dGFibGUgZmluYWwgOiBwdWJsaWMgRXhlY3V0YWJsZUJh
c2UgewogcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgRXhlY3V0YWJsZUJhc2U7CiAKLSAgICBO
YXRpdmVFeGVjdXRhYmxlKFZNJiwgTmF0aXZlRnVuY3Rpb24gZnVuY3Rpb24sIE5hdGl2ZUZ1bmN0
aW9uIGNvbnN0cnVjdG9yLCBJbnRyaW5zaWMpOworICAgIE5hdGl2ZUV4ZWN1dGFibGUoVk0mLCBO
YXRpdmVGdW5jdGlvbiBmdW5jdGlvbiwgTmF0aXZlRnVuY3Rpb24gY29uc3RydWN0b3IsIEludHJp
bnNpYywgY29uc3QgRE9NSklUOjpTaWduYXR1cmUqKTsKIAogICAgIE5hdGl2ZUZ1bmN0aW9uIG1f
ZnVuY3Rpb247CiAgICAgTmF0aXZlRnVuY3Rpb24gbV9jb25zdHJ1Y3RvcjsKKyAgICBjb25zdCBE
T01KSVQ6OlNpZ25hdHVyZSogbV9zaWduYXR1cmU7CiAKICAgICBTdHJpbmcgbV9uYW1lOwogfTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5U2xvdC5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlTbG90LmgKaW5kZXggOWRl
MTUxYTU2YWEyNzU2Y2ZkMGM2MDAzNjY4MjY2YjE5Zjk5MzJkZC4uMzg3ZTMxYjQwZTVhZWJmMmYz
NWY2Y2EyNzJlMzgzYzA1ZDNmNDUyZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvUHJvcGVydHlTbG90LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvUHJvcGVydHlTbG90LmgKQEAgLTUxLDYgKzUxLDcgQEAgZW51bSBBdHRyaWJ1dGUgewogICAg
IENsYXNzU3RydWN0dXJlICAgID0gMSA8PCAxMiwgLy8gcHJvcGVydHkgaXMgYSBsYXp5IGNsYXNz
IHN0cnVjdHVyZSAtIG9ubHkgdXNlZCBieSBzdGF0aWMgaGFzaHRhYmxlcwogICAgIFByb3BlcnR5
Q2FsbGJhY2sgID0gMSA8PCAxMywgLy8gcHJvcGVydHkgdGhhdCBpcyBhIGxhenkgcHJvcGVydHkg
Y2FsbGJhY2sgLSBvbmx5IHVzZWQgYnkgc3RhdGljIGhhc2h0YWJsZXMKICAgICBET01KSVRBdHRy
aWJ1dGUgICA9IDEgPDwgMTQsIC8vIHByb3BlcnR5IGlzIGEgRE9NIEpJVCBhdHRyaWJ1dGUgLSBv
bmx5IHVzZWQgYnkgc3RhdGljIGhhc2h0YWJsZXMKKyAgICBET01KSVRGdW5jdGlvbiAgICA9IDEg
PDwgMTUsIC8vIHByb3BlcnR5IGlzIGEgRE9NIEpJVCBmdW5jdGlvbiAtIG9ubHkgdXNlZCBieSBz
dGF0aWMgaGFzaHRhYmxlcwogICAgIEJ1aWx0aW5PckZ1bmN0aW9uID0gQnVpbHRpbiB8IEZ1bmN0
aW9uLCAvLyBoZWxwZXIgb25seSB1c2VkIGJ5IHN0YXRpYyBoYXNodGFibGVzCiAgICAgQnVpbHRp
bk9yRnVuY3Rpb25PckxhenlQcm9wZXJ0eSA9IEJ1aWx0aW4gfCBGdW5jdGlvbiB8IENlbGxQcm9w
ZXJ0eSB8IENsYXNzU3RydWN0dXJlIHwgUHJvcGVydHlDYWxsYmFjaywgLy8gaGVscGVyIG9ubHkg
dXNlZCBieSBzdGF0aWMgaGFzaHRhYmxlcwogICAgIEJ1aWx0aW5PckZ1bmN0aW9uT3JBY2Nlc3Nv
ck9yTGF6eVByb3BlcnR5ID0gQnVpbHRpbiB8IEZ1bmN0aW9uIHwgQWNjZXNzb3IgfCBDZWxsUHJv
cGVydHkgfCBDbGFzc1N0cnVjdHVyZSB8IFByb3BlcnR5Q2FsbGJhY2ssIC8vIGhlbHBlciBvbmx5
IHVzZWQgYnkgc3RhdGljIGhhc2h0YWJsZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1ZNLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNw
cAppbmRleCBlNmJkOGRmNTg4OWQ4NzMxY2U1ZmI2ZGNjZGU5YWRmODQ1NmMwMmU5Li43YTJmMGYy
Njk0YWMwMTZiZDkzZDFjODZhNGFmOTllZDFlNWVlZWY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvVk0uY3BwCkBAIC01MTYsMTcgKzUxNiwxNyBAQCBzdGF0aWMgVGh1bmtHZW5lcmF0b3Ig
dGh1bmtHZW5lcmF0b3JGb3JJbnRyaW5zaWMoSW50cmluc2ljIGludHJpbnNpYykKIAogTmF0aXZl
RXhlY3V0YWJsZSogVk06OmdldEhvc3RGdW5jdGlvbihOYXRpdmVGdW5jdGlvbiBmdW5jdGlvbiwg
TmF0aXZlRnVuY3Rpb24gY29uc3RydWN0b3IsIGNvbnN0IFN0cmluZyYgbmFtZSkKIHsKLSAgICBy
ZXR1cm4gZ2V0SG9zdEZ1bmN0aW9uKGZ1bmN0aW9uLCBOb0ludHJpbnNpYywgY29uc3RydWN0b3Is
IG5hbWUpOworICAgIHJldHVybiBnZXRIb3N0RnVuY3Rpb24oZnVuY3Rpb24sIE5vSW50cmluc2lj
LCBjb25zdHJ1Y3RvciwgbnVsbHB0ciwgbmFtZSk7CiB9CiAKLU5hdGl2ZUV4ZWN1dGFibGUqIFZN
OjpnZXRIb3N0RnVuY3Rpb24oTmF0aXZlRnVuY3Rpb24gZnVuY3Rpb24sIEludHJpbnNpYyBpbnRy
aW5zaWMsIE5hdGl2ZUZ1bmN0aW9uIGNvbnN0cnVjdG9yLCBjb25zdCBTdHJpbmcmIG5hbWUpCitO
YXRpdmVFeGVjdXRhYmxlKiBWTTo6Z2V0SG9zdEZ1bmN0aW9uKE5hdGl2ZUZ1bmN0aW9uIGZ1bmN0
aW9uLCBJbnRyaW5zaWMgaW50cmluc2ljLCBOYXRpdmVGdW5jdGlvbiBjb25zdHJ1Y3RvciwgY29u
c3QgRE9NSklUOjpTaWduYXR1cmUqIHNpZ25hdHVyZSwgY29uc3QgU3RyaW5nJiBuYW1lKQogewog
I2lmIEVOQUJMRShKSVQpCiAgICAgaWYgKGNhblVzZUpJVCgpKSB7CiAgICAgICAgIHJldHVybiBq
aXRTdHVicy0+aG9zdEZ1bmN0aW9uU3R1YigKICAgICAgICAgICAgIHRoaXMsIGZ1bmN0aW9uLCBj
b25zdHJ1Y3RvciwKICAgICAgICAgICAgIGludHJpbnNpYyAhPSBOb0ludHJpbnNpYyA/IHRodW5r
R2VuZXJhdG9yRm9ySW50cmluc2ljKGludHJpbnNpYykgOiAwLAotICAgICAgICAgICAgaW50cmlu
c2ljLCBuYW1lKTsKKyAgICAgICAgICAgIGludHJpbnNpYywgc2lnbmF0dXJlLCBuYW1lKTsKICAg
ICB9CiAjZWxzZSAvLyBFTkFCTEUoSklUKQogICAgIFVOVVNFRF9QQVJBTShpbnRyaW5zaWMpOwpA
QCAtNTM0LDcgKzUzNCw3IEBAIE5hdGl2ZUV4ZWN1dGFibGUqIFZNOjpnZXRIb3N0RnVuY3Rpb24o
TmF0aXZlRnVuY3Rpb24gZnVuY3Rpb24sIEludHJpbnNpYyBpbnRyaW5zCiAgICAgcmV0dXJuIE5h
dGl2ZUV4ZWN1dGFibGU6OmNyZWF0ZSgqdGhpcywKICAgICAgICAgYWRvcHRSZWYobmV3IE5hdGl2
ZUpJVENvZGUoTWFjcm9Bc3NlbWJsZXJDb2RlUmVmOjpjcmVhdGVMTEludENvZGVSZWYobGxpbnRf
bmF0aXZlX2NhbGxfdHJhbXBvbGluZSksIEpJVENvZGU6Okhvc3RDYWxsVGh1bmspKSwgZnVuY3Rp
b24sCiAgICAgICAgIGFkb3B0UmVmKG5ldyBOYXRpdmVKSVRDb2RlKE1hY3JvQXNzZW1ibGVyQ29k
ZVJlZjo6Y3JlYXRlTExJbnRDb2RlUmVmKGxsaW50X25hdGl2ZV9jb25zdHJ1Y3RfdHJhbXBvbGlu
ZSksIEpJVENvZGU6Okhvc3RDYWxsVGh1bmspKSwgY29uc3RydWN0b3IsCi0gICAgICAgIE5vSW50
cmluc2ljLCBuYW1lKTsKKyAgICAgICAgTm9JbnRyaW5zaWMsIHNpZ25hdHVyZSwgbmFtZSk7CiB9
CiAKIFZNOjpDbGllbnREYXRhOjp+Q2xpZW50RGF0YSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9WTS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Vk0uaAppbmRleCA0ZmQ3ZWM0MGYwM2VlZGViMjliZDQ5NjdkOWNkYzQzMDI0Y2ZhNDEwLi4xNWEw
OGMyYTMzYmU5NzJiNGE5YTMyZGZjMzUwZDZlMzhjYzg0MmVlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1ZNLmgKQEAgLTQyOSw3ICs0MjksNyBAQCBjbGFzcyBWTSA6IHB1YmxpYyBUaHJlYWRT
YWZlUmVmQ291bnRlZDxWTT4gewogICAgIHN0ZDo6dW5pcXVlX3B0cjxGVEw6OlRodW5rcz4gZnRs
VGh1bmtzOwogI2VuZGlmCiAgICAgTmF0aXZlRXhlY3V0YWJsZSogZ2V0SG9zdEZ1bmN0aW9uKE5h
dGl2ZUZ1bmN0aW9uLCBOYXRpdmVGdW5jdGlvbiBjb25zdHJ1Y3RvciwgY29uc3QgU3RyaW5nJiBu
YW1lKTsKLSAgICBOYXRpdmVFeGVjdXRhYmxlKiBnZXRIb3N0RnVuY3Rpb24oTmF0aXZlRnVuY3Rp
b24sIEludHJpbnNpYyBpbnRyaW5zaWMsIE5hdGl2ZUZ1bmN0aW9uIGNvbnN0cnVjdG9yLCBjb25z
dCBTdHJpbmcmIG5hbWUpOworICAgIE5hdGl2ZUV4ZWN1dGFibGUqIGdldEhvc3RGdW5jdGlvbihO
YXRpdmVGdW5jdGlvbiwgSW50cmluc2ljLCBOYXRpdmVGdW5jdGlvbiBjb25zdHJ1Y3RvciwgY29u
c3QgRE9NSklUOjpTaWduYXR1cmUqLCBjb25zdCBTdHJpbmcmIG5hbWUpOwogCiAgICAgc3RhdGlj
IHB0cmRpZmZfdCBleGNlcHRpb25PZmZzZXQoKQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKaW5k
ZXggNDJlMmYyMTExYTkwODY0MmVkMjc0NDE5NDZlMTc4MmY1ZDA2ODE3Yi4uYzU4NDMzOWRhZjZm
MWQ1ZjQ5MTIxNTcyNzVkNmJhZDY1MTMzNDJjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Q01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTM1
MTEsNiArMzUxMSwxNSBAQCBNQUtFX0hBU0hfVE9PTFMoJHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0v
Q29sb3JEYXRhKQogbGlzdChBUFBFTkQgV2ViQ29yZV9ERVJJVkVEX1NPVVJDRVMgJHtERVJJVkVE
X1NPVVJDRVNfV0VCQ09SRV9ESVJ9L0NvbG9yRGF0YS5jcHApCiAKIAorIyBHZW5lcmF0ZSBET01K
SVRBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmgKK2FkZF9jdXN0b21fY29tbWFuZCgKKyAgICBPVVRQ
VVQgJHtERVJJVkVEX1NPVVJDRVNfV0VCQ09SRV9ESVJ9L0RPTUpJVEFic3RyYWN0SGVhcFJlcG9z
aXRvcnkuaAorICAgIE1BSU5fREVQRU5ERU5DWSBkb21qaXQvRE9NSklUQWJzdHJhY3RIZWFwUmVw
b3NpdG9yeS55YW1sCisgICAgREVQRU5EUyAke1dFQkNPUkVfRElSfS9kb21qaXQvZ2VuZXJhdGUt
YWJzdHJhY3QtaGVhcC5yYgorICAgIENPTU1BTkQgJHtSVUJZX0VYRUNVVEFCTEV9ICR7V0VCQ09S
RV9ESVJ9L2RvbWppdC9nZW5lcmF0ZS1hYnN0cmFjdC1oZWFwLnJiICR7V0VCQ09SRV9ESVJ9L2Rv
bWppdC9ET01KSVRBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LnlhbWwgJHtERVJJVkVEX1NPVVJDRVNf
V0VCQ09SRV9ESVJ9L0RPTUpJVEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaAorICAgIFZFUkJBVElN
KQorbGlzdChBUFBFTkQgV2ViQ29yZV9ERVJJVkVEX1NPVVJDRVMgJHtERVJJVkVEX1NPVVJDRVNf
V0VCQ09SRV9ESVJ9L0RPTUpJVEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaCkKKwogIyBHZW5lcmF0
ZSBYTUxWaWV3ZXJDU1MuaAogYWRkX2N1c3RvbV9jb21tYW5kKAogICAgIE9VVFBVVCAke0RFUklW
RURfU09VUkNFU19XRUJDT1JFX0RJUn0vWE1MVmlld2VyQ1NTLmggJHtERVJJVkVEX1NPVVJDRVNf
V0VCQ09SRV9ESVJ9L1hNTFZpZXdlci5taW4uY3NzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9EZXJpdmVkU291cmNlcy5tYWtlIGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFr
ZQppbmRleCA1NjVlMmQ5MmMyNzgyMDBlNDRiMWE4NjcwZGQxMWNhYTcyOGQwOWQzLi5jZmMyMjc2
OGQ3NWFjZThlZTYwZTA0ODZjMjYyODRhMThjYTJlNWVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9EZXJpdmVkU291cmNlcy5tYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3Vy
Y2VzLm1ha2UKQEAgLTc0Nyw2ICs3NDcsNyBAQCBKU19CSU5ESU5HX0lETFMgPSBcCiAKIFBZVEhP
TiA9IHB5dGhvbgogUEVSTCA9IHBlcmwKK1JVQlkgPSBydWJ5CiAKIGlmZXEgKCQoT1MpLFdpbmRv
d3NfTlQpCiAgICAgREVMRVRFID0gY21kIC8vQyBkZWwKQEAgLTg1Myw2ICs4NTQsNyBAQCBhbGwg
OiBcCiAgICAgQ1NTVmFsdWVLZXl3b3Jkcy5jcHAgXAogICAgIENTU1ZhbHVlS2V5d29yZHMuaCBc
CiAgICAgQ29sb3JEYXRhLmNwcCBcCisgICAgRE9NSklUQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5o
IFwKICAgICBFdmVudEludGVyZmFjZXMuaCBcCiAgICAgRXZlbnRUYXJnZXRJbnRlcmZhY2VzLmgg
XAogICAgIEV4Y2VwdGlvbkNvZGVEZXNjcmlwdGlvbi5jcHAgXApAQCAtOTQyLDYgKzk0NCwxNSBA
QCBTZWxlY3RvclBzZXVkb0VsZW1lbnRUeXBlTWFwLmNwcCA6ICQoV2ViQ29yZSkvY3NzL21ha2VT
ZWxlY3RvclBzZXVkb0VsZW1lbnRzTWFwLgogCiAjIC0tLS0tLS0tCiAKKyMgRE9NSklUIEFic3Ry
YWN0IEhlYXAKKworYWxsIDogRE9NSklUQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5oCisKK0RPTUpJ
VEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaCA6ICQoV2ViQ29yZSkvZG9taml0L2dlbmVyYXRlLWFi
c3RyYWN0LWhlYXAucmIgJChXZWJDb3JlKS9kb21qaXQvRE9NSklUQWJzdHJhY3RIZWFwUmVwb3Np
dG9yeS55YW1sCisJJChSVUJZKSAiJChXZWJDb3JlKS9kb21qaXQvZ2VuZXJhdGUtYWJzdHJhY3Qt
aGVhcC5yYiIgJChXZWJDb3JlKS9kb21qaXQvRE9NSklUQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS55
YW1sIC4vRE9NSklUQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5oCisKKyMgLS0tLS0tLS0KKwogIyBY
TUxWaWV3ZXIgQ1NTCiAKIGFsbCA6IFhNTFZpZXdlckNTUy5oCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy9ieXRlY29kZS9TcGVjdWxhdGVkVHlwZS5oIGIvU291
cmNlL1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvYnl0ZWNvZGUvU3BlY3VsYXRlZFR5cGUuaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4wOTQ2NmY0ZjAwYjgwN2RmZWRhMGZjODIwODU0NmI3MTg0NGYwOTllCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvYnl0ZWNvZGUv
U3BlY3VsYXRlZFR5cGUuaApAQCAtMCwwICsxLDI5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJDb3JlX0ZXRF9TcGVjdWxhdGVkVHlw
ZV9oCisjZGVmaW5lIFdlYkNvcmVfRldEX1NwZWN1bGF0ZWRUeXBlX2gKKyNpbmNsdWRlIDxKYXZh
U2NyaXB0Q29yZS9TcGVjdWxhdGVkVHlwZS5oPgorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy9kb21qaXQvRE9NSklUU2lnbmF0dXJlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy9kb21qaXQvRE9NSklUU2lnbmF0dXJlLmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNzIwMDI3ZjZlMDhlMzgzMGUzNTFiMWM5Y2QzMmYyMDMxMjlkMmI1ZAotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL2RvbWppdC9ET01K
SVRTaWduYXR1cmUuaApAQCAtMCwwICsxLDI5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJDb3JlX0ZXRF9ET01KSVRTaWduYXR1cmVf
aAorI2RlZmluZSBXZWJDb3JlX0ZXRF9ET01KSVRTaWduYXR1cmVfaAorI2luY2x1ZGUgPEphdmFT
Y3JpcHRDb3JlL0RPTUpJVFNpZ25hdHVyZS5oPgorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggM2UwOTM3YTQ2NzBiN2Zl
MzBkOWE2MzdhMWUzNjIxMmJlNGQ3NTM1ZC4uODc4MGVmNTA3MWJmMTQxOTg0M2MyNjFmYWE5Nzc1
NzkyMjNhZTI2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagpAQCAtNjIxNiwxMiArNjIxNiwxMyBAQAogCQlFMzE1MEVBNzFEQTcyMTkz
MDAxOTQwMTIgLyogRE9NSklUSGVscGVycy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRTMxNTBFQTUxREE3MjE4RDAwMTk0MDEyIC8qIERPTUpJVEhlbHBl
cnMuaCAqLzsgfTsKIAkJRTMxODAzOUQxREM0MDA5OTAwOTkzMkMyIC8qIEpTRHluYW1pY0Rvd25j
YXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFM0E1
ODcyRTFEQzNGNTI2MDBGNjA3QTYgLyogSlNEeW5hbWljRG93bmNhc3QuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFMzU2NUI3QjFEQzJENkM5MDAy
MTdEQkQgLyogSlNFdmVudEN1c3RvbS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRTM0RUU0OUYxREMyRDU3NTAwRUFBOUQzIC8qIEpTRXZlbnRDdXN0b20u
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQlFMzVD
QTE0RDFEQkMzQTNGMDBGODM1MTYgLyogRE9NSklUQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzVDQTE0QjFE
QkMzQTNDMDBGODM1MTYgLyogRE9NSklUQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5jcHAgKi87IH07
Ci0JCUUzNUNBMTRFMURCQzNBNDIwMEY4MzUxNiAvKiBET01KSVRBYnN0cmFjdEhlYXBSZXBvc2l0
b3J5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzVD
QTE0QzFEQkMzQTNDMDBGODM1MTYgLyogRE9NSklUQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5oICov
OyB9OworCQlFMzU4MDJCNjFEQzg0MzVEMDBBOTc3M0MgLyogRE9NSklUSURMVHlwZUZpbHRlci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM1ODAyQjUx
REM4NDM1ODAwQTk3NzNDIC8qIERPTUpJVElETFR5cGVGaWx0ZXIuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFMzc3RkU0RDFEQURFMTY1MDBDREQw
MjUgLyogTm9kZUNvbnN0YW50cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRTNEMDQ5OTMxREFEQzA0NTAwNzE4RjNDIC8qIE5vZGVDb25zdGFudHMuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFMzg4Mzg5
ODFCQUQxNDVGMDBENjJFRTMgLyogU2NyaXB0TW9kdWxlTG9hZGVyLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzODgzODk0MUJBRDE0NUYwMEQ2MkVF
MyAvKiBTY3JpcHRNb2R1bGVMb2FkZXIuY3BwICovOyB9OwogCQlFMzg4Mzg5OTFCQUQxNDVGMDBE
NjJFRTMgLyogU2NyaXB0TW9kdWxlTG9hZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBFMzg4Mzg5NTFCQUQxNDVGMDBENjJFRTMgLyogU2NyaXB0TW9k
dWxlTG9hZGVyLmggKi87IH07CiAJCUUzOThGQzI0MURDMzJBMjAwMDNDNDY4NCAvKiBET01KSVRI
ZWxwZXJzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEUzOThGQzIzMURDMzJBMUIwMDNDNDY4NCAvKiBET01KSVRIZWxwZXJzLmNwcCAqLzsgfTsKKwkJ
RTNBNzc2NjcxREM4NUQyODAwQjY5MEQ4IC8qIERPTUpJVElETENvbnZlcnQuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzQTc3NjY1MURDODVEMjIwMEI2
OTBEOCAvKiBET01KSVRJRExDb252ZXJ0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKKwkJRTNBNzc2NjgxREM4NUQyODAwQjY5MEQ4IC8qIERPTUpJVElE
TFR5cGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUz
QTc3NjY2MURDODVEMjIwMEI2OTBEOCAvKiBET01KSVRJRExUeXBlLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTNCMkYwRUIxRDdGNEM5RDAwQjBD
OUQxIC8qIExvYWRhYmxlQ2xhc3NpY1NjcmlwdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFM0IyRjBFMzFEN0YzNUVDMDBCMEM5RDEgLyogTG9hZGFi
bGVDbGFzc2ljU2NyaXB0LmNwcCAqLzsgfTsKIAkJRTNCMkYwRUMxRDdGNENBMTAwQjBDOUQxIC8q
IExvYWRhYmxlU2NyaXB0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEUzQjJGMEU5MUQ3RjNEM0MwMEIwQzlEMSAvKiBMb2FkYWJsZVNjcmlwdC5jcHAg
Ki87IH07CiAJCUUzQjJGMEVEMUQ3RjRDQTMwMEIwQzlEMSAvKiBMb2FkYWJsZVNjcmlwdC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTNCMkYwRTcxRDdG
MzVFQzAwQjBDOUQxIC8qIExvYWRhYmxlU2NyaXB0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTE0MDc2LDEzICsxNDA3NywxNSBAQAogCQlFMUZG
OEY2QTE4MERCNUJFMDAxMzI2NzQgLyogQ3J5cHRvQWxnb3JpdGhtUmVnaXN0cnkuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ3J5cHRvQWxnb3JpdGhtUmVnaXN0cnku
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMUZGOEY2QjE4MERCNUJFMDAxMzI2
NzQgLyogQ3J5cHRvQWxnb3JpdGhtUmVnaXN0cnkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gQ3J5cHRvQWxnb3JpdGhtUmVnaXN0cnkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJRTMxNTBFQTUxREE3MjE4RDAwMTk0MDEyIC8qIERPTUpJVEhlbHBlcnMuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRE9NSklUSGVscGVycy5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQlFMzM0ODI1RTFEQzkzQUEwMDA5Qzk1NDQgLyogRE9NSklUQWJz
dHJhY3RIZWFwUmVwb3NpdG9yeS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBE
T01KSVRBYnN0cmFjdEhlYXBSZXBvc2l0b3J5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUUzNEVFNDlGMURDMkQ1NzUwMEVBQTlEMyAvKiBKU0V2ZW50Q3VzdG9tLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTRXZlbnRDdXN0b20uaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKLQkJRTM1Q0ExNEIxREJDM0EzQzAwRjgzNTE2IC8qIERPTUpJVEFic3RyYWN0
SGVhcFJlcG9zaXRvcnkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
RE9NSklUQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07Ci0JCUUzNUNBMTRDMURCQzNBM0MwMEY4MzUxNiAvKiBET01KSVRBYnN0cmFjdEhlYXBSZXBv
c2l0b3J5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERPTUpJVEFic3RyYWN0
SGVhcFJlcG9zaXRvcnkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTM1ODAyQjUx
REM4NDM1ODAwQTk3NzNDIC8qIERPTUpJVElETFR5cGVGaWx0ZXIuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gRE9NSklUSURMVHlwZUZpbHRlci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlFMzg4Mzg5NDFCQUQxNDVGMDBENjJFRTMgLyogU2NyaXB0TW9kdWxlTG9h
ZGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNjcmlwdE1vZHVs
ZUxvYWRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzODgzODk1MUJBRDE0
NUYwMEQ2MkVFMyAvKiBTY3JpcHRNb2R1bGVMb2FkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gU2NyaXB0TW9kdWxlTG9hZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUUzOThGQzIzMURDMzJBMUIwMDNDNDY4NCAvKiBET01KSVRIZWxwZXJzLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERPTUpJVEhlbHBlcnMuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFM0E1ODcyRTFEQzNGNTI2MDBGNjA3QTYgLyogSlNE
eW5hbWljRG93bmNhc3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNEeW5h
bWljRG93bmNhc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTNBNzc2NjUxREM4
NUQyMjAwQjY5MEQ4IC8qIERPTUpJVElETENvbnZlcnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gRE9NSklUSURMQ29udmVydC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQlFM0E3NzY2NjFEQzg1RDIyMDBCNjkwRDggLyogRE9NSklUSURMVHlwZS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBET01KSVRJRExUeXBlLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUUzQUZBOTY0MURBNkU5MDgwMDI4NjFCRCAvKiBKU05vZGVET01KSVQu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNOb2RlRE9NSklULmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTNCMkYwRTMxRDdGMzVFQzAwQjBDOUQx
IC8qIExvYWRhYmxlQ2xhc3NpY1NjcmlwdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBMb2FkYWJsZUNsYXNzaWNTY3JpcHQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlFM0IyRjBFNDFEN0YzNUVDMDBCMEM5RDEgLyogTG9hZGFibGVDbGFzc2ljU2Ny
aXB0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IExvYWRhYmxlQ2xhc3NpY1Nj
cmlwdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTcyODAsNiArMTcyODMsNyBA
QAogCQkJCTY1NjU4MTQ3MDlEMTMwNDMwMDBFNjFENyAvKiBDU1NWYWx1ZUtleXdvcmRzLmdwZXJm
ICovLAogCQkJCTY1NjU4MTQ4MDlEMTMwNDMwMDBFNjFENyAvKiBDU1NWYWx1ZUtleXdvcmRzLmgg
Ki8sCiAJCQkJOUIzQTg4NzExNDU2MzJGOTAwM0FFOEY1IC8qIERPTURPTVNldHRhYmxlVG9rZW5M
aXN0LmggKi8sCisJCQkJRTMzNDgyNUUxREM5M0FBMDAwOUM5NTQ0IC8qIERPTUpJVEFic3RyYWN0
SGVhcFJlcG9zaXRvcnkuaCAqLywKIAkJCQlFMUM2Q0ZDMjE3NDZEMjkzMDA3Qjg3QTEgLyogRE9N
V2luZG93Q29uc3RydWN0b3JzLmlkbCAqLywKIAkJCQk5NzBCNzJBNTE0NTAwOEVCMDBGMDBBMzcg
LyogRXZlbnRIZWFkZXJzLmggKi8sCiAJCQkJOTcwQjcyODkxNDRGRkFDNjAwRjAwQTM3IC8qIEV2
ZW50SW50ZXJmYWNlcy5oICovLApAQCAtMjI4OTcsMTEgKzIyOTAxLDEyIEBACiAJCUUzQUZBOTYz
MURBNkU4QUYwMDI4NjFCRCAvKiBkb21qaXQgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJ
CWNoaWxkcmVuID0gKAotCQkJCUUzNUNBMTRCMURCQzNBM0MwMEY4MzUxNiAvKiBET01KSVRBYnN0
cmFjdEhlYXBSZXBvc2l0b3J5LmNwcCAqLywKLQkJCQlFMzVDQTE0QzFEQkMzQTNDMDBGODM1MTYg
LyogRE9NSklUQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5oICovLAogCQkJCUUzQzk5QTA4MURDM0Q0
MTcwMDc5NEFEMyAvKiBET01KSVRDaGVja0RPTS5oICovLAogCQkJCUUzOThGQzIzMURDMzJBMUIw
MDNDNDY4NCAvKiBET01KSVRIZWxwZXJzLmNwcCAqLywKIAkJCQlFMzE1MEVBNTFEQTcyMThEMDAx
OTQwMTIgLyogRE9NSklUSGVscGVycy5oICovLAorCQkJCUUzQTc3NjY1MURDODVEMjIwMEI2OTBE
OCAvKiBET01KSVRJRExDb252ZXJ0LmggKi8sCisJCQkJRTNBNzc2NjYxREM4NUQyMjAwQjY5MEQ4
IC8qIERPTUpJVElETFR5cGUuaCAqLywKKwkJCQlFMzU4MDJCNTFEQzg0MzU4MDBBOTc3M0MgLyog
RE9NSklUSURMVHlwZUZpbHRlci5oICovLAogCQkJCUUzQjdDMDYyMURDMzQxNUEwMDFGQjBCOCAv
KiBKU0RvY3VtZW50RE9NSklULmNwcCAqLywKIAkJCQlFM0FGQTk2NDFEQTZFOTA4MDAyODYxQkQg
LyogSlNOb2RlRE9NSklULmNwcCAqLywKIAkJCSk7CkBAIC0yNTc2OCw2ICsyNTc3Myw3IEBACiAJ
CQkJNDYwQ0JGMzYxRDRCQ0QwRTAwOTJFODhFIC8qIEpTRE9NV2luZG93UHJvcGVydGllcy5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQkNCRkI1M0QwRENEMjlDRjAwMTlCM0U1IC8qIEpTRE9NV2luZG93
U2hlbGwuaCBpbiBIZWFkZXJzICovLAogCQkJCTY1RTBFOTQ0MTEzM0M4OUYwMEI0Q0IxMCAvKiBK
U0RPTVdyYXBwZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCUUzQTc3NjY3MURDODVEMjgwMEI2OTBE
OCAvKiBET01KSVRJRExDb252ZXJ0LmggaW4gSGVhZGVycyAqLywKIAkJCQlGRDc4NjhCQTEzNkI5
OTkyMDBENDAzREYgLyogSlNEeW5hbWljc0NvbXByZXNzb3JOb2RlLmggaW4gSGVhZGVycyAqLywK
IAkJCQk2NURGMzFGQTA5RDFDQzYwMDAwQkUzMjUgLyogSlNFbGVtZW50LmggaW4gSGVhZGVycyAq
LywKIAkJCQlBREVDNzhGODE4RUU1MzA4MDAxMzE1QzIgLyogSlNFbGVtZW50Q3VzdG9tLmggaW4g
SGVhZGVycyAqLywKQEAgLTI3MzMzLDYgKzI3MzM5LDcgQEAKIAkJCQkwODUyNUU2MzEyNzhDMDAx
MDBBODQ3NzggLyogU1ZHQW5pbWF0ZWRTdGF0aWNQcm9wZXJ0eVRlYXJPZmYuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTA4NERCNTlCMTI4MDA4Q0MwMDJBNkQ2NCAvKiBTVkdBbmltYXRlZFN0cmluZy5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMDgyNTA5MzkxMjhCRDREODAwRTJFRDhFIC8qIFNWR0FuaW1h
dGVkVHJhbnNmb3JtTGlzdC5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTNBNzc2NjgxREM4NUQyODAw
QjY5MEQ4IC8qIERPTUpJVElETFR5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTA4NUExNTkzMTI4
OUE4REQwMDI3MTBFMyAvKiBTVkdBbmltYXRlZFRyYW5zZm9ybUxpc3RQcm9wZXJ0eVRlYXJPZmYu
aCBpbiBIZWFkZXJzICovLAogCQkJCTQzOUQzMzQzMTNBNjkxMUMwMEMyMEY0RiAvKiBTVkdBbmlt
YXRlZFR5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTQzOUQzMzQ0MTNBNjkxMUMwMEMyMEY0RiAv
KiBTVkdBbmltYXRlZFR5cGVBbmltYXRvci5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNzg3MCw2ICsy
Nzg3Nyw3IEBACiAJCQkJOTdBQUJEMjMxNEZBMDlENTAwNzQ1N0FFIC8qIFdlYlNvY2tldEV4dGVu
c2lvbkRpc3BhdGNoZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTRBNUEyQURDMTYxRTdFMDAwMDU4
ODlERCAvKiBXZWJTb2NrZXRFeHRlbnNpb25QYXJzZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTk3
QUFCRDI0MTRGQTA5RDUwMDc0NTdBRSAvKiBXZWJTb2NrZXRFeHRlbnNpb25Qcm9jZXNzb3IuaCBp
biBIZWFkZXJzICovLAorCQkJCUUzNTgwMkI2MURDODQzNUQwMEE5NzczQyAvKiBET01KSVRJRExU
eXBlRmlsdGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk5N0FBQkQyNTE0RkEwOUQ1MDA3NDU3QUUg
LyogV2ViU29ja2V0RnJhbWUuaCBpbiBIZWFkZXJzICovLAogCQkJCTk3QUFCRDI3MTRGQTA5RDUw
MDc0NTdBRSAvKiBXZWJTb2NrZXRIYW5kc2hha2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTMxREVB
NDU2MUIzOUY0RDkwMEY3NzE3OCAvKiBXZWJTeXN0ZW1CYWNrZHJvcExheWVyLmggaW4gSGVhZGVy
cyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFs
T2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5o
CmluZGV4IGMxODFmOWExNmY1NTMwYmQ5NTNkYmY1ZjFjMTVmMTNhNjI0ZmExMmMuLjVkYzFlZTQw
Yzk4NTQwZThjNDcwNWI3MDk1NzU5ZmZjZmMyNWRhMGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuaApAQCAtODEsNyArODEsNyBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAgICAgcHVibGljOgogICAgICAgICB+SlNET01HbG9iYWxPYmplY3QoKTsK
IAotICAgICAgICBzdGF0aWMgY29uc3QgSlNDOjpDbGFzc0luZm8qIGluZm8oKSB7IHJldHVybiAm
c19pbmZvOyB9CisgICAgICAgIHN0YXRpYyBjb25zdGV4cHIgY29uc3QgSlNDOjpDbGFzc0luZm8q
IGluZm8oKSB7IHJldHVybiAmc19pbmZvOyB9CiAKICAgICAgICAgc3RhdGljIEpTQzo6U3RydWN0
dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUp
CiAgICAgICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
Q29kZUdlbmVyYXRvckpTLnBtIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2Rl
R2VuZXJhdG9ySlMucG0KaW5kZXggZjBlNDI4NzkxNzQ5ZjQ1YjFiNDc2NDliNjFlMTQ3ZmE3ZmJk
YmE1ZC4uYTU1ZDVlMWQ5NTFhZjE4MzM3NjM3ZjY3OWVhOTA5NDU4MzcyZWE4MCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KQEAg
LTE0NzEsNyArMTQ3MSw3IEBAIHN1YiBHZW5lcmF0ZUhlYWRlcgogICAgICAgICBwdXNoKEBoZWFk
ZXJDb250ZW50LCAicHJvdGVjdGVkOlxuIik7CiAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQs
ICIgICAgc3RhdGljIGNvbnN0IEpTQzo6Q2xhc3NJbmZvIHNfaW5mbztcbiIpOwogICAgICAgICBw
dXNoKEBoZWFkZXJDb250ZW50LCAicHVibGljOlxuIik7Ci0gICAgICAgIHB1c2goQGhlYWRlckNv
bnRlbnQsICIgICAgc3RhdGljIGNvbnN0IEpTQzo6Q2xhc3NJbmZvKiBpbmZvKCkgeyByZXR1cm4g
JnNfaW5mbzsgfVxuXG4iKTsKKyAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICBzdGF0
aWMgY29uc3RleHByIGNvbnN0IEpTQzo6Q2xhc3NJbmZvKiBpbmZvKCkgeyByZXR1cm4gJnNfaW5m
bzsgfVxuXG4iKTsKICAgICB9IGVsc2UgewogICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAi
XG4iKTsKICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICBERUNMQVJFX0lORk87XG5c
biIpOwpAQCAtMTkyNSw3ICsxOTI1LDExIEBAIHN1YiBHZW5lcmF0ZVByb3BlcnRpZXNIYXNoVGFi
bGUKICAgICAgICAgIyBGSVhNRTogUmVtb3ZlIHRoaXMgb25jZSB3ZSBjYW4gZ2V0IHJpZCBvZiB0
aGUgcXVpcmsgaW50cm9kdWNlZCBpbiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTYzOTY3LgogICAgICAgICAkZnVuY3Rpb25MZW5ndGggPSAzIGlmICRpbnRlcmZhY2VO
YW1lIGVxICJFdmVudCIgYW5kICRmdW5jdGlvbi0+bmFtZSBlcSAiaW5pdEV2ZW50IjsKIAotICAg
ICAgICBwdXNoKEAkaGFzaFZhbHVlMiwgJGZ1bmN0aW9uTGVuZ3RoKTsKKyAgICAgICAgaWYgKCRm
dW5jdGlvbi0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkRPTUpJVCJ9KSB7CisgICAgICAgICAgICBw
dXNoKEAkaGFzaFZhbHVlMiwgIiZET01KSVRTaWduYXR1cmVGb3IiIC4gJGludGVyZmFjZS0+dHlw
ZS0+bmFtZSAuICRjb2RlR2VuZXJhdG9yLT5XS191Y2ZpcnN0KCRmdW5jdGlvbi0+bmFtZSkpOwor
ICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgcHVzaChAJGhhc2hWYWx1ZTIsICRmdW5jdGlv
bkxlbmd0aCk7CisgICAgICAgIH0KIAogICAgICAgICBwdXNoKEAkaGFzaFNwZWNpYWxzLCBDb21w
dXRlRnVuY3Rpb25TcGVjaWFsKCRpbnRlcmZhY2UsICRmdW5jdGlvbikpOwogCkBAIC0yNTQxLDM5
ICsyNTQ1LDI4IEBAIHN1YiBhZGRVbnNjb3BhYmxlUHJvcGVydGllcwogICAgIHB1c2goQGltcGxD
b250ZW50LCAiICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5h
bWVzLT51bnNjb3BhYmxlc1N5bWJvbCwgJnVuc2NvcGFibGVzLCBEb250RW51bSB8IFJlYWRPbmx5
KTtcbiIpOwogfQogCi1zdWIgR2V0UmVzdWx0VHlwZUZpbHRlcgorc3ViIEdldFVuc2FmZUFyZ3Vt
ZW50VHlwZQogewotICAgIG15ICgkdHlwZSkgPSBAXzsKKyAgICBteSAoJGludGVyZmFjZSwgJHR5
cGUpID0gQF87CiAKLSAgICBteSAlVHlwZUZpbHRlcnMgPSAoCi0gICAgICAgICJhbnkiID0+ICJT
cGVjSGVhcFRvcCIsCi0gICAgICAgICJib29sZWFuIiA9PiAiU3BlY0Jvb2xlYW4iLAotICAgICAg
ICAiYnl0ZSIgPT4gIlNwZWNJbnQzMk9ubHkiLAotICAgICAgICAib2N0ZXQiID0+ICJTcGVjSW50
MzJPbmx5IiwKLSAgICAgICAgInNob3J0IiA9PiAiU3BlY0ludDMyT25seSIsCi0gICAgICAgICJ1
bnNpZ25lZCBzaG9ydCIgPT4gIlNwZWNJbnQzMk9ubHkiLAotICAgICAgICAibG9uZyIgPT4gIlNw
ZWNJbnQzMk9ubHkiLAotICAgICAgICAidW5zaWduZWQgbG9uZyIgPT4gIlNwZWNCeXRlY29kZU51
bWJlciIsCi0gICAgICAgICJsb25nIGxvbmciID0+ICJTcGVjQnl0ZWNvZGVOdW1iZXIiLAotICAg
ICAgICAidW5zaWduZWQgbG9uZyBsb25nIiA9PiAiU3BlY0J5dGVjb2RlTnVtYmVyIiwKLSAgICAg
ICAgImZsb2F0IiA9PiAiU3BlY0J5dGVjb2RlTnVtYmVyIiwKLSAgICAgICAgInVucmVzdHJpY3Rl
ZCBmbG9hdCIgPT4gIlNwZWNCeXRlY29kZU51bWJlciIsCi0gICAgICAgICJkb3VibGUiID0+ICJT
cGVjQnl0ZWNvZGVOdW1iZXIiLAotICAgICAgICAidW5yZXN0cmljdGVkIGRvdWJsZSIgPT4gIlNw
ZWNCeXRlY29kZU51bWJlciIsCi0gICAgICAgICJET01TdHJpbmciID0+ICJTcGVjU3RyaW5nIiwK
LSAgICAgICAgIkJ5dGVTdHJpbmciID0+ICJTcGVjU3RyaW5nIiwKLSAgICAgICAgIlVTVlN0cmlu
ZyIgPT4gIlNwZWNTdHJpbmciLAotICAgICk7CisgICAgbXkgJElETFR5cGUgPSBHZXRJRExUeXBl
KCRpbnRlcmZhY2UsICR0eXBlKTsKKyAgICByZXR1cm4gIkRPTUpJVDo6SURMSlNBcmd1bWVudFR5
cGU8JHtJRExUeXBlfT4iOworfQogCi0gICAgaWYgKGV4aXN0cyAkVHlwZUZpbHRlcnN7JHR5cGUt
Pm5hbWV9KSB7Ci0gICAgICAgIG15ICRyZXN1bHRUeXBlID0gIkpTQzo6JFR5cGVGaWx0ZXJzeyR0
eXBlLT5uYW1lfSI7Ci0gICAgICAgIGlmICgkdHlwZS0+aXNOdWxsYWJsZSkgewotICAgICAgICAg
ICAgZGllICJcImFueVwiIHR5cGUgbXVzdCBub3QgYmVjb21lIG51bGxhYmxlLiIgaWYgJHR5cGUt
Pm5hbWUgZXEgImFueSI7Ci0gICAgICAgICAgICAkcmVzdWx0VHlwZSA9ICIoJHJlc3VsdFR5cGUg
fCBKU0M6OlNwZWNPdGhlcikiOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiAkcmVzdWx0VHlw
ZTsKLSAgICB9Ci0gICAgcmV0dXJuICJTcGVjSGVhcFRvcCI7CitzdWIgR2V0QXJndW1lbnRUeXBl
RmlsdGVyCit7CisgICAgbXkgKCRpbnRlcmZhY2UsICR0eXBlKSA9IEBfOworCisgICAgbXkgJElE
TFR5cGUgPSBHZXRJRExUeXBlKCRpbnRlcmZhY2UsICR0eXBlKTsKKyAgICByZXR1cm4gIkRPTUpJ
VDo6SURMQXJndW1lbnRUeXBlRmlsdGVyPCR7SURMVHlwZX0+IjsKK30KKworc3ViIEdldFJlc3Vs
dFR5cGVGaWx0ZXIKK3sKKyAgICBteSAoJGludGVyZmFjZSwgJHR5cGUpID0gQF87CisKKyAgICBt
eSAkSURMVHlwZSA9IEdldElETFR5cGUoJGludGVyZmFjZSwgJHR5cGUpOworICAgIHJldHVybiAi
RE9NSklUOjpJRExSZXN1bHRUeXBlRmlsdGVyPCR7SURMVHlwZX0+IjsKIH0KIAogc3ViIEdlbmVy
YXRlSW1wbGVtZW50YXRpb24KQEAgLTI2NDQsNiArMjYzNywxNyBAQCBzdWIgR2VuZXJhdGVJbXBs
ZW1lbnRhdGlvbgogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIjaWYgJHtjb25kaXRp
b25hbFN0cmluZ31cbiIpIGlmICRjb25kaXRpb25hbFN0cmluZzsKICAgICAgICAgICAgIG15ICRm
dW5jdGlvbk5hbWUgPSBHZXRGdW5jdGlvbk5hbWUoJGludGVyZmFjZSwgJGNsYXNzTmFtZSwgJGZ1
bmN0aW9uKTsKICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiSlNDOjpFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMICR7ZnVuY3Rpb25OYW1lfShKU0M6OkV4ZWNTdGF0ZSopO1xuIik7
CisgICAgICAgICAgICBpZiAoJGZ1bmN0aW9uLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntET01KSVR9
KSB7CisgICAgICAgICAgICAgICAgJGltcGxJbmNsdWRlc3siRE9NSklUSURMVHlwZS5oIn0gPSAx
OworICAgICAgICAgICAgICAgIG15ICR1bnNhZmVGdW5jdGlvbk5hbWUgPSAidW5zYWZlIiAuICRj
b2RlR2VuZXJhdG9yLT5XS191Y2ZpcnN0KCRmdW5jdGlvbk5hbWUpOworICAgICAgICAgICAgICAg
IG15ICRmdW5jdGlvblNpZ25hdHVyZSA9ICJKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgJHt1bnNhZmVGdW5jdGlvbk5hbWV9KEpTQzo6RXhlY1N0YXRlKiwgJGNsYXNzTmFtZSoiOwor
ICAgICAgICAgICAgICAgIGZvcmVhY2ggbXkgJGFyZ3VtZW50IChAeyRmdW5jdGlvbi0+YXJndW1l
bnRzfSkgeworICAgICAgICAgICAgICAgICAgICBteSAkdHlwZSA9ICRhcmd1bWVudC0+dHlwZTsK
KyAgICAgICAgICAgICAgICAgICAgbXkgJGFyZ3VtZW50VHlwZSA9IEdldFVuc2FmZUFyZ3VtZW50
VHlwZSgkaW50ZXJmYWNlLCAkdHlwZSk7CisgICAgICAgICAgICAgICAgICAgICRmdW5jdGlvblNp
Z25hdHVyZSAuPSAiLCAke2FyZ3VtZW50VHlwZX0iOworICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgJGZ1bmN0aW9uU2lnbmF0dXJlIC4gIik7XG4i
KTsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiI2VuZGlm
XG4iKSBpZiAkY29uZGl0aW9uYWxTdHJpbmc7CiAgICAgICAgIH0KIApAQCAtMjY4MCw2ICsyNjg0
LDM3IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgIHB1c2goQGltcGxDb250
ZW50LCAiXG4iKTsKICAgICB9CiAKKyAgICBpZiAoJG51bUZ1bmN0aW9ucyA+IDApIHsKKyAgICAg
ICAgZm9yZWFjaCBteSAkZnVuY3Rpb24gKEBmdW5jdGlvbnMpIHsKKyAgICAgICAgICAgIG5leHQg
dW5sZXNzICRmdW5jdGlvbi0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57RE9NSklUfTsKKyAgICAgICAg
ICAgICRpbXBsSW5jbHVkZXN7IkRPTUpJVElETFR5cGVGaWx0ZXIuaCJ9ID0gMTsKKyAgICAgICAg
ICAgICRpbXBsSW5jbHVkZXN7IkRPTUpJVENoZWNrRE9NLmgifSA9IDE7CisgICAgICAgICAgICAk
aW1wbEluY2x1ZGVzeyJET01KSVRBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmgifSA9IDE7CisKKyAg
ICAgICAgICAgIG15ICRpc092ZXJsb2FkZWQgPSAkZnVuY3Rpb24tPntvdmVybG9hZHN9ICYmIEB7
JGZ1bmN0aW9uLT57b3ZlcmxvYWRzfX0gPiAxOworICAgICAgICAgICAgZGllICJPdmVybG9hZHMg
aXMgbm90IHN1cHBvcnRlZCBpbiBET01KSVQiIGlmICRpc092ZXJsb2FkZWQ7CisgICAgICAgICAg
ICBkaWUgIkN1cnJlbnRseSBSZWFkRE9NIHZhbHVlIGlzIG9ubHkgYWxsb3dlZCIgdW5sZXNzICRj
b2RlR2VuZXJhdG9yLT5FeHRlbmRlZEF0dHJpYnV0ZUNvbnRhaW5zKCRmdW5jdGlvbi0+ZXh0ZW5k
ZWRBdHRyaWJ1dGVzLT57RE9NSklUfSwgIlJlYWRET00iKTsKKworICAgICAgICAgICAgbXkgJGlu
dGVyZmFjZU5hbWUgPSAkaW50ZXJmYWNlLT50eXBlLT5uYW1lOworICAgICAgICAgICAgbXkgJGZ1
bmN0aW9uTmFtZSA9IEdldEZ1bmN0aW9uTmFtZSgkaW50ZXJmYWNlLCAkY2xhc3NOYW1lLCAkZnVu
Y3Rpb24pOworICAgICAgICAgICAgbXkgJHVuc2FmZUZ1bmN0aW9uTmFtZSA9ICJ1bnNhZmUiIC4g
JGNvZGVHZW5lcmF0b3ItPldLX3VjZmlyc3QoJGZ1bmN0aW9uTmFtZSk7CisgICAgICAgICAgICBt
eSAkZG9tSklUU2lnbmF0dXJlTmFtZSA9ICJET01KSVRTaWduYXR1cmVGb3IiIC4gJGludGVyZmFj
ZS0+dHlwZS0+bmFtZSAuICRjb2RlR2VuZXJhdG9yLT5XS191Y2ZpcnN0KCRmdW5jdGlvbi0+bmFt
ZSk7CisgICAgICAgICAgICBteSAkY2xhc3NJbmZvID0gIkpTIiAuICRpbnRlcmZhY2UtPnR5cGUt
Pm5hbWUgLiAiOjppbmZvKCkiOworICAgICAgICAgICAgbXkgJHJlc3VsdFR5cGUgPSBHZXRSZXN1
bHRUeXBlRmlsdGVyKCRpbnRlcmZhY2UsICRmdW5jdGlvbi0+dHlwZSk7CisgICAgICAgICAgICBt
eSAkZG9tSklUU2lnbmF0dXJlID0gInN0YXRpYyBjb25zdCBKU0M6OkRPTUpJVDo6U2lnbmF0dXJl
ICR7ZG9tSklUU2lnbmF0dXJlTmFtZX0oKHVpbnRwdHJfdCkke3Vuc2FmZUZ1bmN0aW9uTmFtZX0s
IERPTUpJVDo6Y2hlY2tET008JGludGVyZmFjZU5hbWU+LCAkY2xhc3NJbmZvLCBKU0M6OkRPTUpJ
VDo6RWZmZWN0Ojpmb3JSZWFkKERPTUpJVDo6QWJzdHJhY3RIZWFwUmVwb3NpdG9yeTo6RE9NKSwg
JHtyZXN1bHRUeXBlfSI7CisgICAgICAgICAgICBmb3JlYWNoIG15ICRhcmd1bWVudCAoQHskZnVu
Y3Rpb24tPmFyZ3VtZW50c30pIHsKKyAgICAgICAgICAgICAgICBteSAkdHlwZSA9ICRhcmd1bWVu
dC0+dHlwZTsKKyAgICAgICAgICAgICAgICBteSAkYXJndW1lbnRUeXBlID0gR2V0QXJndW1lbnRU
eXBlRmlsdGVyKCRpbnRlcmZhY2UsICR0eXBlKTsKKyAgICAgICAgICAgICAgICAkZG9tSklUU2ln
bmF0dXJlIC49ICIsICR7YXJndW1lbnRUeXBlfSI7CisgICAgICAgICAgICB9CisgICAgICAgICAg
ICBteSAkY29uZGl0aW9uYWxTdHJpbmcgPSAkY29kZUdlbmVyYXRvci0+R2VuZXJhdGVDb25kaXRp
b25hbFN0cmluZygkZnVuY3Rpb24pOworICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIj
aWYgJHtjb25kaXRpb25hbFN0cmluZ31cbiIpIGlmICRjb25kaXRpb25hbFN0cmluZzsKKyAgICAg
ICAgICAgIHB1c2goQGltcGxDb250ZW50LCAkZG9tSklUU2lnbmF0dXJlIC4gIik7XG4iKTsKKyAg
ICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiI2VuZGlmXG4iKSBpZiAkY29uZGl0aW9uYWxT
dHJpbmc7CisgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIlxuIik7CisgICAgICAgIH0K
KyAgICB9CisKICAgICBHZW5lcmF0ZVByb3RvdHlwZURlY2xhcmF0aW9uKFxAaW1wbENvbnRlbnQs
ICRjbGFzc05hbWUsICRpbnRlcmZhY2UpIGlmICFIZWFkZXJOZWVkc1Byb3RvdHlwZURlY2xhcmF0
aW9uKCRpbnRlcmZhY2UpOwogCiAgICAgR2VuZXJhdGVDb25zdHJ1Y3RvckRlY2xhcmF0aW9uKFxA
aW1wbENvbnRlbnQsICRjbGFzc05hbWUsICRpbnRlcmZhY2UpIGlmIE5lZWRzQ29uc3RydWN0b3JQ
cm9wZXJ0eSgkaW50ZXJmYWNlKTsKQEAgLTI3NzYsNyArMjgxMSwxMSBAQCBzdWIgR2VuZXJhdGVJ
bXBsZW1lbnRhdGlvbgogICAgICAgICAgICAgcHVzaChAaGFzaFZhbHVlMSwgJGZ1bmN0aW9uTmFt
ZSk7CiAKICAgICAgICAgICAgIG15ICRmdW5jdGlvbkxlbmd0aCA9IEdldEZ1bmN0aW9uTGVuZ3Ro
KCRmdW5jdGlvbik7Ci0gICAgICAgICAgICBwdXNoKEBoYXNoVmFsdWUyLCAkZnVuY3Rpb25MZW5n
dGgpOworICAgICAgICAgICAgaWYgKCRmdW5jdGlvbi0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57RE9N
SklUfSkgeworICAgICAgICAgICAgICAgIHB1c2goQGhhc2hWYWx1ZTIsICJET01KSVRGdW5jdGlv
bkZvciIgLiAkaW50ZXJmYWNlLT50eXBlLT5uYW1lIC4gJGNvZGVHZW5lcmF0b3ItPldLX3VjZmly
c3QoJGZ1bmN0aW9uLT5uYW1lKSk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAg
ICAgIHB1c2goQGhhc2hWYWx1ZTIsICRmdW5jdGlvbkxlbmd0aCk7CisgICAgICAgICAgICB9CiAK
ICAgICAgICAgICAgIHB1c2goQGhhc2hTcGVjaWFscywgQ29tcHV0ZUZ1bmN0aW9uU3BlY2lhbCgk
aW50ZXJmYWNlLCAkZnVuY3Rpb24pKTsKIApAQCAtMzMzOCwxMyArMzM3NywxNCBAQCBzdWIgR2Vu
ZXJhdGVJbXBsZW1lbnRhdGlvbgogCiAgICAgICAgICAgICBpZiAoJGF0dHJpYnV0ZS0+ZXh0ZW5k
ZWRBdHRyaWJ1dGVzLT57IkRPTUpJVCJ9KSB7CiAgICAgICAgICAgICAgICAgJGltcGxJbmNsdWRl
c3siPHd0Zi9OZXZlckRlc3Ryb3llZC5oPiJ9ID0gMTsKKyAgICAgICAgICAgICAgICAkaW1wbElu
Y2x1ZGVzeyJET01KSVRJRExUeXBlRmlsdGVyLmgifSA9IDE7CiAgICAgICAgICAgICAgICAgbXkg
JGludGVyZmFjZU5hbWUgPSAkaW50ZXJmYWNlLT50eXBlLT5uYW1lOwogICAgICAgICAgICAgICAg
IG15ICRhdHRyaWJ1dGVOYW1lID0gJGF0dHJpYnV0ZS0+bmFtZTsKICAgICAgICAgICAgICAgICBt
eSAkZ2VuZXJhdG9yTmFtZSA9ICRpbnRlcmZhY2VOYW1lIC4gJGNvZGVHZW5lcmF0b3ItPldLX3Vj
Zmlyc3QoJGF0dHJpYnV0ZS0+bmFtZSk7CiAgICAgICAgICAgICAgICAgbXkgJGRvbUpJVENsYXNz
TmFtZSA9ICRnZW5lcmF0b3JOYW1lIC4gIkRPTUpJVCI7CiAgICAgICAgICAgICAgICAgbXkgJGdl
dHRlciA9IEdldEF0dHJpYnV0ZUdldHRlck5hbWUoJGludGVyZmFjZSwgJGdlbmVyYXRvck5hbWUs
ICRhdHRyaWJ1dGUpOwogICAgICAgICAgICAgICAgIG15ICRzZXR0ZXIgPSBJc1JlYWRvbmx5KCRh
dHRyaWJ1dGUpID8gIm51bGxwdHIiIDogR2V0QXR0cmlidXRlU2V0dGVyTmFtZSgkaW50ZXJmYWNl
LCAkZ2VuZXJhdG9yTmFtZSwgJGF0dHJpYnV0ZSk7Ci0gICAgICAgICAgICAgICAgbXkgJHJlc3Vs
dFR5cGUgPSBHZXRSZXN1bHRUeXBlRmlsdGVyKCRhdHRyaWJ1dGUtPnR5cGUpOworICAgICAgICAg
ICAgICAgIG15ICRyZXN1bHRUeXBlID0gR2V0UmVzdWx0VHlwZUZpbHRlcigkaW50ZXJmYWNlLCAk
YXR0cmlidXRlLT50eXBlKTsKICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiRk
b21KSVRDbGFzc05hbWU6OiRkb21KSVRDbGFzc05hbWUoKVxuIik7CiAgICAgICAgICAgICAgICAg
cHVzaChAaW1wbENvbnRlbnQsICIgICAgOiBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVyKCRnZXR0
ZXIsICRzZXR0ZXIsICR7Y2xhc3NOYW1lfTo6aW5mbygpLCAkcmVzdWx0VHlwZSlcbiIpOwogICAg
ICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAie1xuIik7CkBAIC0zODM4LDYgKzM4Nzgs
NzcgQEAgRU5ECiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50
LCAifVxuXG4iKTsKKworICAgICAgICAgICAgaWYgKCRmdW5jdGlvbi0+ZXh0ZW5kZWRBdHRyaWJ1
dGVzLT57RE9NSklUfSkgeworICAgICAgICAgICAgICAgICRpbXBsSW5jbHVkZXN7IjxpbnRlcnBy
ZXRlci9GcmFtZVRyYWNlcnMuaD4ifSA9IDE7CisgICAgICAgICAgICAgICAgbXkgJHVuc2FmZUZ1
bmN0aW9uTmFtZSA9ICJ1bnNhZmUiIC4gJGNvZGVHZW5lcmF0b3ItPldLX3VjZmlyc3QoJGZ1bmN0
aW9uTmFtZSk7CisgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJKU0M6OkVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgJHt1bnNhZmVGdW5jdGlvbk5hbWV9KEpTQzo6RXhlY1N0
YXRlKiBzdGF0ZSwgJGNsYXNzTmFtZSogY2FzdGVkVGhpcyIpOworICAgICAgICAgICAgICAgIGZv
cmVhY2ggbXkgJGFyZ3VtZW50IChAeyRmdW5jdGlvbi0+YXJndW1lbnRzfSkgeworICAgICAgICAg
ICAgICAgICAgICBteSAkdHlwZSA9ICRhcmd1bWVudC0+dHlwZTsKKyAgICAgICAgICAgICAgICAg
ICAgbXkgJGFyZ3VtZW50VHlwZSA9IEdldFVuc2FmZUFyZ3VtZW50VHlwZSgkaW50ZXJmYWNlLCAk
dHlwZSk7CisgICAgICAgICAgICAgICAgICAgIG15ICRuYW1lID0gJGFyZ3VtZW50LT5uYW1lOwor
ICAgICAgICAgICAgICAgICAgICBteSAkZW5jb2RlZE5hbWUgPSAiZW5jb2RlZCIgLiAkY29kZUdl
bmVyYXRvci0+V0tfdWNmaXJzdCgkbmFtZSk7CisgICAgICAgICAgICAgICAgICAgIHB1c2goQGlt
cGxDb250ZW50LCAiLCAke2FyZ3VtZW50VHlwZX0gJHtlbmNvZGVkTmFtZX0iKTsKKyAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIpXG4iKTsKKyAg
ICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIntcbiIpOworICAgICAgICAgICAgICAg
IHB1c2goQGltcGxDb250ZW50LCAiICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7XG4iKTsKKyAgICAg
ICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTtc
biIpOworICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIEpTQzo6TmF0aXZl
Q2FsbEZyYW1lVHJhY2VyIHRyYWNlcigmdm0sIHN0YXRlKTtcbiIpOworICAgICAgICAgICAgICAg
IHB1c2goQGltcGxDb250ZW50LCAiICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pO1xuIik7CisgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAg
YXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTtcbiIpOworICAgICAgICAgICAgICAg
IG15IEBhcmd1bWVudHM7CisgICAgICAgICAgICAgICAgbXkgJGltcGxGdW5jdGlvbk5hbWU7Cisg
ICAgICAgICAgICAgICAgbXkgJGltcGxlbWVudGVkQnkgPSAkZnVuY3Rpb24tPmV4dGVuZGVkQXR0
cmlidXRlcy0+e0ltcGxlbWVudGVkQnl9OworCisgICAgICAgICAgICAgICAgaWYgKCRpbXBsZW1l
bnRlZEJ5KSB7CisgICAgICAgICAgICAgICAgICAgIEFkZFRvSW1wbEluY2x1ZGVzKCIke2ltcGxl
bWVudGVkQnl9LmgiLCAkZnVuY3Rpb24tPmV4dGVuZGVkQXR0cmlidXRlcy0+e0NvbmRpdGlvbmFs
fSk7CisgICAgICAgICAgICAgICAgICAgIHVuc2hpZnQoQGFyZ3VtZW50cywgImltcGwiKSBpZiAh
JGZ1bmN0aW9uLT5pc1N0YXRpYzsKKyAgICAgICAgICAgICAgICAgICAgJGltcGxGdW5jdGlvbk5h
bWUgPSAiV2ViQ29yZTo6JHtpbXBsZW1lbnRlZEJ5fTo6JHtmdW5jdGlvbkltcGxlbWVudGF0aW9u
TmFtZX0iOworICAgICAgICAgICAgICAgIH0gZWxzaWYgKCRmdW5jdGlvbi0+aXNTdGF0aWMpIHsK
KyAgICAgICAgICAgICAgICAgICAgJGltcGxGdW5jdGlvbk5hbWUgPSAiJHtpbnRlcmZhY2VOYW1l
fTo6JHtmdW5jdGlvbkltcGxlbWVudGF0aW9uTmFtZX0iOworICAgICAgICAgICAgICAgIH0gZWxz
aWYgKCRzdmdQcm9wZXJ0eU9yTGlzdFByb3BlcnR5VHlwZSBhbmQgISRzdmdMaXN0UHJvcGVydHlU
eXBlKSB7CisgICAgICAgICAgICAgICAgICAgICRpbXBsRnVuY3Rpb25OYW1lID0gInBvZEltcGwu
JHtmdW5jdGlvbkltcGxlbWVudGF0aW9uTmFtZX0iOworICAgICAgICAgICAgICAgIH0gZWxzZSB7
CisgICAgICAgICAgICAgICAgICAgICRpbXBsRnVuY3Rpb25OYW1lID0gImltcGwuJHtmdW5jdGlv
bkltcGxlbWVudGF0aW9uTmFtZX0iOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
ICAgIGZvcmVhY2ggbXkgJGFyZ3VtZW50IChAeyRmdW5jdGlvbi0+YXJndW1lbnRzfSkgeworICAg
ICAgICAgICAgICAgICAgICBteSAkdmFsdWUgPSAiIjsKKyAgICAgICAgICAgICAgICAgICAgbXkg
JHR5cGUgPSAkYXJndW1lbnQtPnR5cGU7CisgICAgICAgICAgICAgICAgICAgIG15ICRuYW1lID0g
JGFyZ3VtZW50LT5uYW1lOworICAgICAgICAgICAgICAgICAgICBteSAkZW5jb2RlZE5hbWUgPSAi
ZW5jb2RlZCIgLiAkY29kZUdlbmVyYXRvci0+V0tfdWNmaXJzdCgkbmFtZSk7CisgICAgICAgICAg
ICAgICAgICAgIG15ICRuYXRpdmVUeXBlID0gR2V0TmF0aXZlVHlwZSgkaW50ZXJmYWNlLCAkYXJn
dW1lbnQtPnR5cGUpOworICAgICAgICAgICAgICAgICAgICBteSAkaXNUZWFyT2ZmID0gJGNvZGVH
ZW5lcmF0b3ItPklzU1ZHVHlwZU5lZWRpbmdUZWFyT2ZmKCR0eXBlKSAmJiAkaW50ZXJmYWNlTmFt
ZSAhfiAvTGlzdCQvOworICAgICAgICAgICAgICAgICAgICBkaWUgIlRlYXJPZmYgdHlwZSBpcyBu
b3QgYWxsb3dlZCIgaWYgJGlzVGVhck9mZjsKKyAgICAgICAgICAgICAgICAgICAgbXkgJHNob3Vs
ZFBhc3NCeVJlZmVyZW5jZSA9IFNob3VsZFBhc3NXcmFwcGVyQnlSZWZlcmVuY2UoJGFyZ3VtZW50
LCAkaW50ZXJmYWNlKTsKKworICAgICAgICAgICAgICAgICAgICBpZiAoISRzaG91bGRQYXNzQnlS
ZWZlcmVuY2UgJiYgKCRjb2RlR2VuZXJhdG9yLT5Jc1dyYXBwZXJUeXBlKCR0eXBlKSB8fCAkY29k
ZUdlbmVyYXRvci0+SXNUeXBlZEFycmF5VHlwZSgkdHlwZSkpKSB7CisgICAgICAgICAgICAgICAg
ICAgICAgICAkaW1wbEluY2x1ZGVzeyI8cnVudGltZS9FcnJvci5oPiJ9ID0gMTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIG15ICgkbmF0aXZlVmFsdWUsICRtYXlUaHJvd0V4Y2VwdGlvbikgPSBV
bnNhZmVUb05hdGl2ZSgkaW50ZXJmYWNlLCAkYXJndW1lbnQsICRlbmNvZGVkTmFtZSwgJGZ1bmN0
aW9uLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntDb25kaXRpb25hbH0pOworICAgICAgICAgICAgICAg
ICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgJG5hdGl2ZVR5cGUgJG5hbWUgPSBudWxs
cHRyO1xuIik7CisgICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAg
ICAkbmFtZSA9ICRuYXRpdmVWYWx1ZTtcbiIpOworICAgICAgICAgICAgICAgICAgICAgICAgcHVz
aChAaW1wbENvbnRlbnQsICIgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNv
ZGVkSlNWYWx1ZSgpKTtcbiIpIGlmICRtYXlUaHJvd0V4Y2VwdGlvbjsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICR2YWx1ZSA9ICJXVEZNb3ZlKCRuYW1lKSI7CisgICAgICAgICAgICAgICAgICAg
IH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICBteSAoJG5hdGl2ZVZhbHVlLCAkbWF5
VGhyb3dFeGNlcHRpb24pID0gVW5zYWZlVG9OYXRpdmUoJGludGVyZmFjZSwgJGFyZ3VtZW50LCAk
ZW5jb2RlZE5hbWUsICRmdW5jdGlvbi0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Q29uZGl0aW9uYWx9
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGF1dG8g
JG5hbWUgPSAke25hdGl2ZVZhbHVlfTtcbiIpOworICAgICAgICAgICAgICAgICAgICAgICAgJHZh
bHVlID0gIldURk1vdmUoJG5hbWUpIjsKKyAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGlt
cGxDb250ZW50LCAiICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpT
VmFsdWUoKSk7XG4iKSBpZiAkbWF5VGhyb3dFeGNlcHRpb247CisgICAgICAgICAgICAgICAgICAg
IH0KKworICAgICAgICAgICAgICAgICAgICBpZiAoJHNob3VsZFBhc3NCeVJlZmVyZW5jZSkgewor
ICAgICAgICAgICAgICAgICAgICAgICAgJHZhbHVlID0gIiokbmFtZSI7CisgICAgICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgcHVzaChAYXJndW1lbnRzLCAkdmFsdWUpOwor
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBteSAkZnVuY3Rpb25TdHJpbmcgPSAi
JGltcGxGdW5jdGlvbk5hbWUoIiAuIGpvaW4oIiwgIiwgQGFyZ3VtZW50cykgLiAiKSI7CisgICAg
ICAgICAgICAgICAgJGZ1bmN0aW9uU3RyaW5nID0gInByb3BhZ2F0ZUV4Y2VwdGlvbigqc3RhdGUs
IHRocm93U2NvcGUsICRmdW5jdGlvblN0cmluZykiIGlmIE5lZWRzRXhwbGljaXRQcm9wYWdhdGVF
eGNlcHRpb25DYWxsKCRmdW5jdGlvbik7CisgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsICIgICAgSlNWYWx1ZSByZXN1bHQgPSAiIC4gTmF0aXZlVG9KU1ZhbHVlVXNpbmdQb2ludGVy
cygkZnVuY3Rpb24sIDEsICRpbnRlcmZhY2UsICRmdW5jdGlvblN0cmluZywgImNhc3RlZFRoaXMi
KSAuICI7XG4iKTsKKyAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7XG4iKTsKKyAgICAgICAgICAgICAgICBwdXNoKEBp
bXBsQ29udGVudCwgIn1cblxuIik7CisgICAgICAgICAgICB9CisKICAgICAgICAgICAgIHB1c2go
QGltcGxDb250ZW50LCAiI2VuZGlmXG5cbiIpIGlmICRjb25kaXRpb25hbDsKIAogICAgICAgICAg
ICAgIyBHZW5lcmF0ZSBhIGZ1bmN0aW9uIGRpc3BhdGNoaW5nIGNhbGwgdG8gdGhlIHJlc3Qgb2Yg
dGhlIG92ZXJsb2Fkcy4KQEAgLTUzMjQsNiArNTQzNSw0NiBAQCBzdWIgSlNWYWx1ZVRvTmF0aXZl
CiAgICAgcmV0dXJuICgiY29udmVydDwkSURMVHlwZT4oIiAuIGpvaW4oIiwgIiwgQGNvbnZlcnNp
b25Bcmd1bWVudHMpIC4gIikiLCAxKTsKIH0KIAorc3ViIFVuc2FmZVRvTmF0aXZlCit7CisgICAg
bXkgKCRpbnRlcmZhY2UsICRjb250ZXh0LCAkdmFsdWUsICRjb25kaXRpb25hbCwgJHN0YXRlUG9p
bnRlciwgJHN0YXRlUmVmZXJlbmNlLCAkdGhpc09iamVjdFJlZmVyZW5jZSkgPSBAXzsKKworICAg
IGFzc2VydCgiSW52YWxpZCBjb250ZXh0IHR5cGUiKSBpZiAhSXNWYWxpZENvbnRleHRGb3JKU1Zh
bHVlVG9OYXRpdmUoJGNvbnRleHQpOworCisgICAgbXkgJHR5cGUgPSAkY29udGV4dC0+dHlwZTsK
KworICAgICMgRklYTUU6IFJlbW92ZSB0aGVzZSAzIHZhcmlhYmxlcyB3aGVuIGFsbCBVbnNhZmVU
b05hdGl2ZSB1c2UgcmVmZXJlbmNlcy4KKyAgICAkc3RhdGVQb2ludGVyID0gInN0YXRlIiB1bmxl
c3MgJHN0YXRlUG9pbnRlcjsKKyAgICAkc3RhdGVSZWZlcmVuY2UgPSAiKnN0YXRlIiB1bmxlc3Mg
JHN0YXRlUmVmZXJlbmNlOworICAgICR0aGlzT2JqZWN0UmVmZXJlbmNlID0gIipjYXN0ZWRUaGlz
IiB1bmxlc3MgJHRoaXNPYmplY3RSZWZlcmVuY2U7CisKKyAgICBBZGRUb0ltcGxJbmNsdWRlc0Zv
cklETFR5cGUoJHR5cGUsICRjb25kaXRpb25hbCk7CisKKyAgICAjIEZJWE1FOiBFeHRlbmQgbW9y
ZS4KKworICAgIGlmICgkdHlwZS0+bmFtZSBlcSAiRE9NU3RyaW5nIikgeworICAgICAgICByZXR1
cm4gKCJBdG9taWNTdHJpbmcoJHt2YWx1ZX0tPnRvRXhpc3RpbmdBdG9taWNTdHJpbmcoJHN0YXRl
UG9pbnRlcikpIiwgMSkgaWYgJGNvbnRleHQtPmV4dGVuZGVkQXR0cmlidXRlcy0+e1JlcXVpcmVz
RXhpc3RpbmdBdG9taWNTdHJpbmd9OworICAgICAgICByZXR1cm4gKCIke3ZhbHVlfS0+dG9BdG9t
aWNTdHJpbmcoJHN0YXRlUG9pbnRlcikiLCAxKSBpZiAkY29udGV4dC0+ZXh0ZW5kZWRBdHRyaWJ1
dGVzLT57QXRvbWljU3RyaW5nfTsKKyAgICB9CisKKyAgICBBZGRUb0ltcGxJbmNsdWRlcygiRE9N
SklUSURMQ29udmVydC5oIik7CisKKyAgICBteSAkSURMVHlwZSA9IEdldElETFR5cGUoJGludGVy
ZmFjZSwgJHR5cGUpOworCisgICAgbXkgQGNvbnZlcnNpb25Bcmd1bWVudHMgPSAoKTsKKyAgICBw
dXNoKEBjb252ZXJzaW9uQXJndW1lbnRzLCAiJHN0YXRlUmVmZXJlbmNlIik7CisgICAgcHVzaChA
Y29udmVyc2lvbkFyZ3VtZW50cywgIiR2YWx1ZSIpOworCisgICAgbXkgQGNvbnZlcnNpb25TdGF0
aWNBcmd1bWVudHMgPSAoKTsKKyAgICBwdXNoKEBjb252ZXJzaW9uU3RhdGljQXJndW1lbnRzLCBH
ZXRJbnRlZ2VyQ29udmVyc2lvbkNvbmZpZ3VyYXRpb24oJGNvbnRleHQpKSBpZiAkY29kZUdlbmVy
YXRvci0+SXNJbnRlZ2VyVHlwZSgkdHlwZSk7CisgICAgcHVzaChAY29udmVyc2lvblN0YXRpY0Fy
Z3VtZW50cywgR2V0U3RyaW5nQ29udmVyc2lvbkNvbmZpZ3VyYXRpb24oJGNvbnRleHQpKSBpZiAk
Y29kZUdlbmVyYXRvci0+SXNTdHJpbmdUeXBlKCR0eXBlKTsKKworICAgIGlmIChzY2FsYXIoQGNv
bnZlcnNpb25TdGF0aWNBcmd1bWVudHMpID4gMCkgeworICAgICAgICByZXR1cm4gKCJET01KSVQ6
OkRpcmVjdENvbnZlcnRlcjwkSURMVHlwZT46OmRpcmVjdENvbnZlcnQ8IiAuIGpvaW4oIiwgIiwg
QGNvbnZlcnNpb25TdGF0aWNBcmd1bWVudHMpIC4gIj4oIiAuIGpvaW4oIiwgIiwgQGNvbnZlcnNp
b25Bcmd1bWVudHMpIC4gIikiLCAxKTsKKyAgICB9CisgICAgcmV0dXJuICgiRE9NSklUOjpEaXJl
Y3RDb252ZXJ0ZXI8JElETFR5cGU+OjpkaXJlY3RDb252ZXJ0KCIgLiBqb2luKCIsICIsIEBjb252
ZXJzaW9uQXJndW1lbnRzKSAuICIpIiwgMSk7Cit9CisKIHN1YiBOYXRpdmVUb0pTVmFsdWVET01D
b252ZXJ0TmVlZHNTdGF0ZQogewogICAgIG15ICgkdHlwZSkgPSBAXzsKQEAgLTU1MDgsNyArNTY1
OSwxMCBAQCBzdWIgR2VuZXJhdGVIYXNoVGFibGVWYWx1ZUFycmF5CiAgICAgICAgICAgICBwdXNo
KEBpbXBsQ29udGVudCwgIiNpZiAke2NvbmRpdGlvbmFsU3RyaW5nfVxuIik7CiAgICAgICAgIH0K
IAotICAgICAgICBpZiAoIkAkc3BlY2lhbHNbJGldIiA9fiBtL0Z1bmN0aW9uLykgeworICAgICAg
ICBpZiAoIkAkc3BlY2lhbHNbJGldIiA9fiBtL0RPTUpJVEZ1bmN0aW9uLykgeworICAgICAgICAg
ICAgJGZpcnN0VGFyZ2V0VHlwZSA9ICJzdGF0aWNfY2FzdDxOYXRpdmVGdW5jdGlvbj4iOworICAg
ICAgICAgICAgJHNlY29uZFRhcmdldFR5cGUgPSAic3RhdGljX2Nhc3Q8Y29uc3QgSlNDOjpET01K
SVQ6OlNpZ25hdHVyZSo+IjsKKyAgICAgICAgfSBlbHNpZiAoIkAkc3BlY2lhbHNbJGldIiA9fiBt
L0Z1bmN0aW9uLykgewogICAgICAgICAgICAgJGZpcnN0VGFyZ2V0VHlwZSA9ICJzdGF0aWNfY2Fz
dDxOYXRpdmVGdW5jdGlvbj4iOwogICAgICAgICB9IGVsc2lmICgiQCRzcGVjaWFsc1skaV0iID1+
IG0vQnVpbHRpbi8pIHsKICAgICAgICAgICAgICRmaXJzdFRhcmdldFR5cGUgPSAic3RhdGljX2Nh
c3Q8QnVpbHRpbkdlbmVyYXRvcj4iOwpAQCAtNjEwNiw2ICs2MjYwLDkgQEAgc3ViIENvbXB1dGVG
dW5jdGlvblNwZWNpYWwKICAgICBlbHNlIHsKICAgICAgICAgcHVzaChAc3BlY2lhbHMsICJKU0M6
OkZ1bmN0aW9uIik7CiAgICAgfQorICAgIGlmICgkZnVuY3Rpb24tPmV4dGVuZGVkQXR0cmlidXRl
cy0+eyJET01KSVQifSkgeworICAgICAgICBwdXNoKEBzcGVjaWFscywgIkRPTUpJVEZ1bmN0aW9u
IikgaWYgJGZ1bmN0aW9uLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntET01KSVR9OworICAgIH0KICAg
ICByZXR1cm4gKEBzcGVjaWFscyA+IDApID8gam9pbigiIHwgIiwgQHNwZWNpYWxzKSA6ICIwIjsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9JRExBdHRy
aWJ1dGVzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvSURMQXR0cmlidXRl
cy50eHQKaW5kZXggYTJlNzU0MTU5MWNlM2Y1NzZlN2E3ZDJkNmQyZmM2MmRkZGZhMDQxYy4uMTM5
OGQ5NDNlYmNlNDgyZTBkMTE0YzkyMmYwZDQ5MjJmNWIyNTgwYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9JRExBdHRyaWJ1dGVzLnR4dAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0lETEF0dHJpYnV0ZXMudHh0CkBAIC01Miw3ICs1Miw3
IEBAIEN1c3RvbVB1dEZ1bmN0aW9uCiBDdXN0b21TZXRQcm90b3R5cGUKIEN1c3RvbVNldHRlcgog
Q3VzdG9tVG9KU09iamVjdAotRE9NSklUCitET01KSVQ9fFJlYWRET00KIERvTm90Q2hlY2tDb25z
dGFudHMKIERvTm90Q2hlY2tTZWN1cml0eQogRG9Ob3RDaGVja1NlY3VyaXR5T25HZXR0ZXIKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RE
T01KSVQuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dERPTUpJVC5jcHAKaW5kZXggMTc4N2UzNTU5YzkxOTI5N2FkNWM2YjE0NWY2ZjdkYmE1NmEyZTUw
MC4uZjllN2ZlOGQxOGU2ZDM1ZDU5OGViZGMwYzI4ZjY1OGEyZjc0ODNiZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERPTUpJVC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERPTUpJ
VC5jcHAKQEAgLTIxLDEwICsyMSwyMCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUg
IkpTVGVzdERPTUpJVC5oIgogCisjaW5jbHVkZSAiRE9NSklUQWJzdHJhY3RIZWFwUmVwb3NpdG9y
eS5oIgorI2luY2x1ZGUgIkRPTUpJVENoZWNrRE9NLmgiCisjaW5jbHVkZSAiRE9NSklUSURMQ29u
dmVydC5oIgorI2luY2x1ZGUgIkRPTUpJVElETFR5cGUuaCIKKyNpbmNsdWRlICJET01KSVRJRExU
eXBlRmlsdGVyLmgiCisjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgogI2luY2x1ZGUgIkpTQnl0
ZVN0cmluZy5oIgogI2luY2x1ZGUgIkpTRE9NQmluZGluZy5oIgogI2luY2x1ZGUgIkpTRE9NQ29u
c3RydWN0b3IuaCIKICNpbmNsdWRlICJKU0RPTUNvbnZlcnQuaCIKKyNpbmNsdWRlICJKU0VsZW1l
bnQuaCIKKyNpbmNsdWRlICJKU05vZGVMaXN0LmgiCisjaW5jbHVkZSA8aW50ZXJwcmV0ZXIvRnJh
bWVUcmFjZXJzLmg+CisjaW5jbHVkZSA8cnVudGltZS9FcnJvci5oPgogI2luY2x1ZGUgPHd0Zi9H
ZXRQdHIuaD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KIApAQCAtMzIsNiArNDIs
MTkgQEAgdXNpbmcgbmFtZXNwYWNlIEpTQzsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCisvLyBG
dW5jdGlvbnMKKworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdERPTUpJ
VFByb3RvdHlwZUZ1bmN0aW9uR2V0QXR0cmlidXRlKEpTQzo6RXhlY1N0YXRlKik7CitKU0M6OkVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgdW5zYWZlSnNUZXN0RE9NSklUUHJvdG90eXBlRnVu
Y3Rpb25HZXRBdHRyaWJ1dGUoSlNDOjpFeGVjU3RhdGUqLCBKU1Rlc3RET01KSVQqLCBET01KSVQ6
OklETEpTQXJndW1lbnRUeXBlPElETERPTVN0cmluZz4pOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGpzVGVzdERPTUpJVFByb3RvdHlwZUZ1bmN0aW9uSXRlbShKU0M6OkV4ZWNT
dGF0ZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHVuc2FmZUpzVGVzdERP
TUpJVFByb3RvdHlwZUZ1bmN0aW9uSXRlbShKU0M6OkV4ZWNTdGF0ZSosIEpTVGVzdERPTUpJVCos
IERPTUpJVDo6SURMSlNBcmd1bWVudFR5cGU8SURMVW5zaWduZWRTaG9ydD4sIERPTUpJVDo6SURM
SlNBcmd1bWVudFR5cGU8SURMVW5zaWduZWRTaG9ydD4pOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGpzVGVzdERPTUpJVFByb3RvdHlwZUZ1bmN0aW9uSGFzQXR0cmlidXRlKEpT
Qzo6RXhlY1N0YXRlKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgdW5zYWZl
SnNUZXN0RE9NSklUUHJvdG90eXBlRnVuY3Rpb25IYXNBdHRyaWJ1dGUoSlNDOjpFeGVjU3RhdGUq
LCBKU1Rlc3RET01KSVQqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rl
c3RET01KSVRQcm90b3R5cGVGdW5jdGlvbkdldEVsZW1lbnRCeUlkKEpTQzo6RXhlY1N0YXRlKik7
CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgdW5zYWZlSnNUZXN0RE9NSklUUHJv
dG90eXBlRnVuY3Rpb25HZXRFbGVtZW50QnlJZChKU0M6OkV4ZWNTdGF0ZSosIEpTVGVzdERPTUpJ
VCosIERPTUpJVDo6SURMSlNBcmd1bWVudFR5cGU8SURMRE9NU3RyaW5nPik7CitKU0M6OkVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0RE9NSklUUHJvdG90eXBlRnVuY3Rpb25HZXRF
bGVtZW50c0J5TmFtZShKU0M6OkV4ZWNTdGF0ZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIHVuc2FmZUpzVGVzdERPTUpJVFByb3RvdHlwZUZ1bmN0aW9uR2V0RWxlbWVudHNC
eU5hbWUoSlNDOjpFeGVjU3RhdGUqLCBKU1Rlc3RET01KSVQqLCBET01KSVQ6OklETEpTQXJndW1l
bnRUeXBlPElETERPTVN0cmluZz4pOworCiAvLyBBdHRyaWJ1dGVzCiAKIEpTQzo6RW5jb2RlZEpT
VmFsdWUganNUZXN0RE9NSklUQW55QXR0cihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpT
VmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKQEAgLTcyLDYgKzk1LDE2IEBAIEpTQzo6RW5jb2Rl
ZEpTVmFsdWUganNUZXN0RE9NSklUTm9kZU51bGxhYmxlQXR0cihKU0M6OkV4ZWNTdGF0ZSosIEpT
Qzo6RW5jb2RlZEpTCiBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdERPTUpJVENvbnN0cnVjdG9y
KEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUp
OwogYm9vbCBzZXRKU1Rlc3RET01KSVRDb25zdHJ1Y3RvcihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6
RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOwogCitzdGF0aWMgY29uc3QgSlND
OjpET01KSVQ6OlNpZ25hdHVyZSBET01KSVRTaWduYXR1cmVGb3JUZXN0RE9NSklUR2V0QXR0cmli
dXRlKCh1aW50cHRyX3QpdW5zYWZlSnNUZXN0RE9NSklUUHJvdG90eXBlRnVuY3Rpb25HZXRBdHRy
aWJ1dGUsIERPTUpJVDo6Y2hlY2tET008VGVzdERPTUpJVD4sIEpTVGVzdERPTUpJVDo6aW5mbygp
LCBKU0M6OkRPTUpJVDo6RWZmZWN0Ojpmb3JSZWFkKERPTUpJVDo6QWJzdHJhY3RIZWFwUmVwb3Np
dG9yeTo6RE9NKSwgRE9NSklUOjpJRExSZXN1bHRUeXBlRmlsdGVyPElETE51bGxhYmxlPElETERP
TVN0cmluZz4+LCBET01KSVQ6OklETEFyZ3VtZW50VHlwZUZpbHRlcjxJRExET01TdHJpbmc+KTsK
Kworc3RhdGljIGNvbnN0IEpTQzo6RE9NSklUOjpTaWduYXR1cmUgRE9NSklUU2lnbmF0dXJlRm9y
VGVzdERPTUpJVEl0ZW0oKHVpbnRwdHJfdCl1bnNhZmVKc1Rlc3RET01KSVRQcm90b3R5cGVGdW5j
dGlvbkl0ZW0sIERPTUpJVDo6Y2hlY2tET008VGVzdERPTUpJVD4sIEpTVGVzdERPTUpJVDo6aW5m
bygpLCBKU0M6OkRPTUpJVDo6RWZmZWN0Ojpmb3JSZWFkKERPTUpJVDo6QWJzdHJhY3RIZWFwUmVw
b3NpdG9yeTo6RE9NKSwgRE9NSklUOjpJRExSZXN1bHRUeXBlRmlsdGVyPElETERPTVN0cmluZz4s
IERPTUpJVDo6SURMQXJndW1lbnRUeXBlRmlsdGVyPElETFVuc2lnbmVkU2hvcnQ+LCBET01KSVQ6
OklETEFyZ3VtZW50VHlwZUZpbHRlcjxJRExVbnNpZ25lZFNob3J0Pik7CisKK3N0YXRpYyBjb25z
dCBKU0M6OkRPTUpJVDo6U2lnbmF0dXJlIERPTUpJVFNpZ25hdHVyZUZvclRlc3RET01KSVRIYXNB
dHRyaWJ1dGUoKHVpbnRwdHJfdCl1bnNhZmVKc1Rlc3RET01KSVRQcm90b3R5cGVGdW5jdGlvbkhh
c0F0dHJpYnV0ZSwgRE9NSklUOjpjaGVja0RPTTxUZXN0RE9NSklUPiwgSlNUZXN0RE9NSklUOjpp
bmZvKCksIEpTQzo6RE9NSklUOjpFZmZlY3Q6OmZvclJlYWQoRE9NSklUOjpBYnN0cmFjdEhlYXBS
ZXBvc2l0b3J5OjpET00pLCBET01KSVQ6OklETFJlc3VsdFR5cGVGaWx0ZXI8SURMQm9vbGVhbj4p
OworCitzdGF0aWMgY29uc3QgSlNDOjpET01KSVQ6OlNpZ25hdHVyZSBET01KSVRTaWduYXR1cmVG
b3JUZXN0RE9NSklUR2V0RWxlbWVudEJ5SWQoKHVpbnRwdHJfdCl1bnNhZmVKc1Rlc3RET01KSVRQ
cm90b3R5cGVGdW5jdGlvbkdldEVsZW1lbnRCeUlkLCBET01KSVQ6OmNoZWNrRE9NPFRlc3RET01K
SVQ+LCBKU1Rlc3RET01KSVQ6OmluZm8oKSwgSlNDOjpET01KSVQ6OkVmZmVjdDo6Zm9yUmVhZChE
T01KSVQ6OkFic3RyYWN0SGVhcFJlcG9zaXRvcnk6OkRPTSksIERPTUpJVDo6SURMUmVzdWx0VHlw
ZUZpbHRlcjxJRExJbnRlcmZhY2U8RWxlbWVudD4+LCBET01KSVQ6OklETEFyZ3VtZW50VHlwZUZp
bHRlcjxJRExET01TdHJpbmc+KTsKKworc3RhdGljIGNvbnN0IEpTQzo6RE9NSklUOjpTaWduYXR1
cmUgRE9NSklUU2lnbmF0dXJlRm9yVGVzdERPTUpJVEdldEVsZW1lbnRzQnlOYW1lKCh1aW50cHRy
X3QpdW5zYWZlSnNUZXN0RE9NSklUUHJvdG90eXBlRnVuY3Rpb25HZXRFbGVtZW50c0J5TmFtZSwg
RE9NSklUOjpjaGVja0RPTTxUZXN0RE9NSklUPiwgSlNUZXN0RE9NSklUOjppbmZvKCksIEpTQzo6
RE9NSklUOjpFZmZlY3Q6OmZvclJlYWQoRE9NSklUOjpBYnN0cmFjdEhlYXBSZXBvc2l0b3J5OjpE
T00pLCBET01KSVQ6OklETFJlc3VsdFR5cGVGaWx0ZXI8SURMSW50ZXJmYWNlPE5vZGVMaXN0Pj4s
IERPTUpJVDo6SURMQXJndW1lbnRUeXBlRmlsdGVyPElETERPTVN0cmluZz4pOworCiBjbGFzcyBK
U1Rlc3RET01KSVRQcm90b3R5cGUgOiBwdWJsaWMgSlNDOjpKU05vbkZpbmFsT2JqZWN0IHsKIHB1
YmxpYzoKICAgICB1c2luZyBCYXNlID0gSlNDOjpKU05vbkZpbmFsT2JqZWN0OwpAQCAtMTUzLDYg
KzE4NiwxMSBAQCBzdGF0aWMgY29uc3QgSGFzaFRhYmxlVmFsdWUgSlNUZXN0RE9NSklUUHJvdG90
eXBlVGFibGVWYWx1ZXNbXSA9CiAgICAgeyAiYnl0ZVN0cmluZ051bGxhYmxlQXR0ciIsIFJlYWRP
bmx5IHwgQ3VzdG9tQWNjZXNzb3IgfCBET01KSVRBdHRyaWJ1dGUsIE5vSW50cmluc2ljLCB7IChp
bnRwdHJfdClzdGF0aWNfY2FzdDxET01KSVRHZXR0ZXJTZXR0ZXJHZW5lcmF0b3I+KGRvbUpJVEdl
dHRlclNldHRlckZvclRlc3RET01KSVRCeXRlU3RyaW5nTnVsbGFibGVBdHRyKSwgKGludHB0cl90
KSAoMCkgfSB9LAogICAgIHsgInVzdlN0cmluZ051bGxhYmxlQXR0ciIsIFJlYWRPbmx5IHwgQ3Vz
dG9tQWNjZXNzb3IgfCBET01KSVRBdHRyaWJ1dGUsIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClz
dGF0aWNfY2FzdDxET01KSVRHZXR0ZXJTZXR0ZXJHZW5lcmF0b3I+KGRvbUpJVEdldHRlclNldHRl
ckZvclRlc3RET01KSVRVc3ZTdHJpbmdOdWxsYWJsZUF0dHIpLCAoaW50cHRyX3QpICgwKSB9IH0s
CiAgICAgeyAibm9kZU51bGxhYmxlQXR0ciIsIFJlYWRPbmx5IHwgQ3VzdG9tQWNjZXNzb3IgfCBE
T01KSVRBdHRyaWJ1dGUsIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxET01K
SVRHZXR0ZXJTZXR0ZXJHZW5lcmF0b3I+KGRvbUpJVEdldHRlclNldHRlckZvclRlc3RET01KSVRO
b2RlTnVsbGFibGVBdHRyKSwgKGludHB0cl90KSAoMCkgfSB9LAorICAgIHsgImdldEF0dHJpYnV0
ZSIsIEpTQzo6RnVuY3Rpb24gfCBET01KSVRGdW5jdGlvbiwgTm9JbnRyaW5zaWMsIHsgKGludHB0
cl90KXN0YXRpY19jYXN0PE5hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RET01KSVRQcm90b3R5cGVGdW5j
dGlvbkdldEF0dHJpYnV0ZSksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8Y29uc3QgSlNDOjpET01K
SVQ6OlNpZ25hdHVyZSo+KCZET01KSVRTaWduYXR1cmVGb3JUZXN0RE9NSklUR2V0QXR0cmlidXRl
KSB9IH0sCisgICAgeyAiaXRlbSIsIEpTQzo6RnVuY3Rpb24gfCBET01KSVRGdW5jdGlvbiwgTm9J
bnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PE5hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RE
T01KSVRQcm90b3R5cGVGdW5jdGlvbkl0ZW0pLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PGNvbnN0
IEpTQzo6RE9NSklUOjpTaWduYXR1cmUqPigmRE9NSklUU2lnbmF0dXJlRm9yVGVzdERPTUpJVEl0
ZW0pIH0gfSwKKyAgICB7ICJoYXNBdHRyaWJ1dGUiLCBKU0M6OkZ1bmN0aW9uIHwgRE9NSklURnVu
Y3Rpb24sIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxOYXRpdmVGdW5jdGlv
bj4oanNUZXN0RE9NSklUUHJvdG90eXBlRnVuY3Rpb25IYXNBdHRyaWJ1dGUpLCAoaW50cHRyX3Qp
IHN0YXRpY19jYXN0PGNvbnN0IEpTQzo6RE9NSklUOjpTaWduYXR1cmUqPigmRE9NSklUU2lnbmF0
dXJlRm9yVGVzdERPTUpJVEhhc0F0dHJpYnV0ZSkgfSB9LAorICAgIHsgImdldEVsZW1lbnRCeUlk
IiwgSlNDOjpGdW5jdGlvbiB8IERPTUpJVEZ1bmN0aW9uLCBOb0ludHJpbnNpYywgeyAoaW50cHRy
X3Qpc3RhdGljX2Nhc3Q8TmF0aXZlRnVuY3Rpb24+KGpzVGVzdERPTUpJVFByb3RvdHlwZUZ1bmN0
aW9uR2V0RWxlbWVudEJ5SWQpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PGNvbnN0IEpTQzo6RE9N
SklUOjpTaWduYXR1cmUqPigmRE9NSklUU2lnbmF0dXJlRm9yVGVzdERPTUpJVEdldEVsZW1lbnRC
eUlkKSB9IH0sCisgICAgeyAiZ2V0RWxlbWVudHNCeU5hbWUiLCBKU0M6OkZ1bmN0aW9uIHwgRE9N
SklURnVuY3Rpb24sIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxOYXRpdmVG
dW5jdGlvbj4oanNUZXN0RE9NSklUUHJvdG90eXBlRnVuY3Rpb25HZXRFbGVtZW50c0J5TmFtZSks
IChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8Y29uc3QgSlNDOjpET01KSVQ6OlNpZ25hdHVyZSo+KCZE
T01KSVRTaWduYXR1cmVGb3JUZXN0RE9NSklUR2V0RWxlbWVudHNCeU5hbWUpIH0gfSwKIH07CiAK
IGNvbnN0IENsYXNzSW5mbyBKU1Rlc3RET01KSVRQcm90b3R5cGU6OnNfaW5mbyA9IHsgIlRlc3RE
T01KSVRQcm90b3R5cGUiLCAmQmFzZTo6c19pbmZvLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpT
VGVzdERPTUpJVFByb3RvdHlwZSkgfTsKQEAgLTE4NSw2ICsyMjMsMTEgQEAgdGVtcGxhdGU8PiBp
bmxpbmUgSlNUZXN0RE9NSklUKiBCaW5kaW5nQ2FsbGVyPEpTVGVzdERPTUpJVD46OmNhc3RGb3JB
dHRyaWJ1dGUoRXgKICAgICByZXR1cm4ganNEeW5hbWljRG93bmNhc3Q8SlNUZXN0RE9NSklUKj4o
SlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogfQogCit0ZW1wbGF0ZTw+IGlubGluZSBKU1Rl
c3RET01KSVQqIEJpbmRpbmdDYWxsZXI8SlNUZXN0RE9NSklUPjo6Y2FzdEZvck9wZXJhdGlvbihF
eGVjU3RhdGUmIHN0YXRlKQoreworICAgIHJldHVybiBqc0R5bmFtaWNEb3duY2FzdDxKU1Rlc3RE
T01KSVQqPihzdGF0ZS50aGlzVmFsdWUoKSk7Cit9CisKIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBq
c1Rlc3RET01KSVRBbnlBdHRyR2V0dGVyKEV4ZWNTdGF0ZSYsIEpTVGVzdERPTUpJVCYsIFRocm93
U2NvcGUmIHRocm93U2NvcGUpOwogCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RET01KSVRBbnlBdHRy
KEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1l
KQpAQCAtMjAyLDcgKzI0NSw3IEBAIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RET01KSVRB
bnlBdHRyR2V0dGVyKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVGVzdERPTUpJVCYKIH0KIAogVGVzdERP
TUpJVEFueUF0dHJET01KSVQ6OlRlc3RET01KSVRBbnlBdHRyRE9NSklUKCkKLSAgICA6IEpTQzo6
RE9NSklUOjpHZXR0ZXJTZXR0ZXIoanNUZXN0RE9NSklUQW55QXR0ciwgbnVsbHB0ciwgSlNUZXN0
RE9NSklUOjppbmZvKCksIEpTQzo6U3BlY0hlYXBUb3ApCisgICAgOiBKU0M6OkRPTUpJVDo6R2V0
dGVyU2V0dGVyKGpzVGVzdERPTUpJVEFueUF0dHIsIG51bGxwdHIsIEpTVGVzdERPTUpJVDo6aW5m
bygpLCBET01KSVQ6OklETFJlc3VsdFR5cGVGaWx0ZXI8SURMQW55PikKIHsKIH0KIApAQCAtMjI5
LDcgKzI3Miw3IEBAIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RET01KSVRCb29sZWFuQXR0
ckdldHRlcihFeGVjU3RhdGUmIHN0YXRlLCBKU1Rlc3RET01KCiB9CiAKIFRlc3RET01KSVRCb29s
ZWFuQXR0ckRPTUpJVDo6VGVzdERPTUpJVEJvb2xlYW5BdHRyRE9NSklUKCkKLSAgICA6IEpTQzo6
RE9NSklUOjpHZXR0ZXJTZXR0ZXIoanNUZXN0RE9NSklUQm9vbGVhbkF0dHIsIG51bGxwdHIsIEpT
VGVzdERPTUpJVDo6aW5mbygpLCBKU0M6OlNwZWNCb29sZWFuKQorICAgIDogSlNDOjpET01KSVQ6
OkdldHRlclNldHRlcihqc1Rlc3RET01KSVRCb29sZWFuQXR0ciwgbnVsbHB0ciwgSlNUZXN0RE9N
SklUOjppbmZvKCksIERPTUpJVDo6SURMUmVzdWx0VHlwZUZpbHRlcjxJRExCb29sZWFuPikKIHsK
IH0KIApAQCAtMjU2LDcgKzI5OSw3IEBAIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RET01K
SVRCeXRlQXR0ckdldHRlcihFeGVjU3RhdGUmIHN0YXRlLCBKU1Rlc3RET01KSVQmCiB9CiAKIFRl
c3RET01KSVRCeXRlQXR0ckRPTUpJVDo6VGVzdERPTUpJVEJ5dGVBdHRyRE9NSklUKCkKLSAgICA6
IEpTQzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIoanNUZXN0RE9NSklUQnl0ZUF0dHIsIG51bGxwdHIs
IEpTVGVzdERPTUpJVDo6aW5mbygpLCBKU0M6OlNwZWNJbnQzMk9ubHkpCisgICAgOiBKU0M6OkRP
TUpJVDo6R2V0dGVyU2V0dGVyKGpzVGVzdERPTUpJVEJ5dGVBdHRyLCBudWxscHRyLCBKU1Rlc3RE
T01KSVQ6OmluZm8oKSwgRE9NSklUOjpJRExSZXN1bHRUeXBlRmlsdGVyPElETEJ5dGU+KQogewog
fQogCkBAIC0yODMsNyArMzI2LDcgQEAgc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdERPTUpJ
VE9jdGV0QXR0ckdldHRlcihFeGVjU3RhdGUmIHN0YXRlLCBKU1Rlc3RET01KSVQKIH0KIAogVGVz
dERPTUpJVE9jdGV0QXR0ckRPTUpJVDo6VGVzdERPTUpJVE9jdGV0QXR0ckRPTUpJVCgpCi0gICAg
OiBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVyKGpzVGVzdERPTUpJVE9jdGV0QXR0ciwgbnVsbHB0
ciwgSlNUZXN0RE9NSklUOjppbmZvKCksIEpTQzo6U3BlY0ludDMyT25seSkKKyAgICA6IEpTQzo6
RE9NSklUOjpHZXR0ZXJTZXR0ZXIoanNUZXN0RE9NSklUT2N0ZXRBdHRyLCBudWxscHRyLCBKU1Rl
c3RET01KSVQ6OmluZm8oKSwgRE9NSklUOjpJRExSZXN1bHRUeXBlRmlsdGVyPElETE9jdGV0PikK
IHsKIH0KIApAQCAtMzEwLDcgKzM1Myw3IEBAIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RE
T01KSVRTaG9ydEF0dHJHZXR0ZXIoRXhlY1N0YXRlJiBzdGF0ZSwgSlNUZXN0RE9NSklUCiB9CiAK
IFRlc3RET01KSVRTaG9ydEF0dHJET01KSVQ6OlRlc3RET01KSVRTaG9ydEF0dHJET01KSVQoKQot
ICAgIDogSlNDOjpET01KSVQ6OkdldHRlclNldHRlcihqc1Rlc3RET01KSVRTaG9ydEF0dHIsIG51
bGxwdHIsIEpTVGVzdERPTUpJVDo6aW5mbygpLCBKU0M6OlNwZWNJbnQzMk9ubHkpCisgICAgOiBK
U0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVyKGpzVGVzdERPTUpJVFNob3J0QXR0ciwgbnVsbHB0ciwg
SlNUZXN0RE9NSklUOjppbmZvKCksIERPTUpJVDo6SURMUmVzdWx0VHlwZUZpbHRlcjxJRExTaG9y
dD4pCiB7CiB9CiAKQEAgLTMzNyw3ICszODAsNyBAQCBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNU
ZXN0RE9NSklUVW5zaWduZWRTaG9ydEF0dHJHZXR0ZXIoRXhlY1N0YXRlJiBzdGF0ZSwgSlNUZQog
fQogCiBUZXN0RE9NSklUVW5zaWduZWRTaG9ydEF0dHJET01KSVQ6OlRlc3RET01KSVRVbnNpZ25l
ZFNob3J0QXR0ckRPTUpJVCgpCi0gICAgOiBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVyKGpzVGVz
dERPTUpJVFVuc2lnbmVkU2hvcnRBdHRyLCBudWxscHRyLCBKU1Rlc3RET01KSVQ6OmluZm8oKSwg
SlNDOjpTcGVjSW50MzJPbmx5KQorICAgIDogSlNDOjpET01KSVQ6OkdldHRlclNldHRlcihqc1Rl
c3RET01KSVRVbnNpZ25lZFNob3J0QXR0ciwgbnVsbHB0ciwgSlNUZXN0RE9NSklUOjppbmZvKCks
IERPTUpJVDo6SURMUmVzdWx0VHlwZUZpbHRlcjxJRExVbnNpZ25lZFNob3J0PikKIHsKIH0KIApA
QCAtMzY0LDcgKzQwNyw3IEBAIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RET01KSVRMb25n
QXR0ckdldHRlcihFeGVjU3RhdGUmIHN0YXRlLCBKU1Rlc3RET01KSVQmCiB9CiAKIFRlc3RET01K
SVRMb25nQXR0ckRPTUpJVDo6VGVzdERPTUpJVExvbmdBdHRyRE9NSklUKCkKLSAgICA6IEpTQzo6
RE9NSklUOjpHZXR0ZXJTZXR0ZXIoanNUZXN0RE9NSklUTG9uZ0F0dHIsIG51bGxwdHIsIEpTVGVz
dERPTUpJVDo6aW5mbygpLCBKU0M6OlNwZWNJbnQzMk9ubHkpCisgICAgOiBKU0M6OkRPTUpJVDo6
R2V0dGVyU2V0dGVyKGpzVGVzdERPTUpJVExvbmdBdHRyLCBudWxscHRyLCBKU1Rlc3RET01KSVQ6
OmluZm8oKSwgRE9NSklUOjpJRExSZXN1bHRUeXBlRmlsdGVyPElETExvbmc+KQogewogfQogCkBA
IC0zOTEsNyArNDM0LDcgQEAgc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdERPTUpJVFVuc2ln
bmVkTG9uZ0F0dHJHZXR0ZXIoRXhlY1N0YXRlJiBzdGF0ZSwgSlNUZXMKIH0KIAogVGVzdERPTUpJ
VFVuc2lnbmVkTG9uZ0F0dHJET01KSVQ6OlRlc3RET01KSVRVbnNpZ25lZExvbmdBdHRyRE9NSklU
KCkKLSAgICA6IEpTQzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIoanNUZXN0RE9NSklUVW5zaWduZWRM
b25nQXR0ciwgbnVsbHB0ciwgSlNUZXN0RE9NSklUOjppbmZvKCksIEpTQzo6U3BlY0J5dGVjb2Rl
TnVtYmVyKQorICAgIDogSlNDOjpET01KSVQ6OkdldHRlclNldHRlcihqc1Rlc3RET01KSVRVbnNp
Z25lZExvbmdBdHRyLCBudWxscHRyLCBKU1Rlc3RET01KSVQ6OmluZm8oKSwgRE9NSklUOjpJRExS
ZXN1bHRUeXBlRmlsdGVyPElETFVuc2lnbmVkTG9uZz4pCiB7CiB9CiAKQEAgLTQxOCw3ICs0NjEs
NyBAQCBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0RE9NSklUTG9uZ0xvbmdBdHRyR2V0dGVy
KEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVGVzdERPTQogfQogCiBUZXN0RE9NSklUTG9uZ0xvbmdBdHRy
RE9NSklUOjpUZXN0RE9NSklUTG9uZ0xvbmdBdHRyRE9NSklUKCkKLSAgICA6IEpTQzo6RE9NSklU
OjpHZXR0ZXJTZXR0ZXIoanNUZXN0RE9NSklUTG9uZ0xvbmdBdHRyLCBudWxscHRyLCBKU1Rlc3RE
T01KSVQ6OmluZm8oKSwgSlNDOjpTcGVjQnl0ZWNvZGVOdW1iZXIpCisgICAgOiBKU0M6OkRPTUpJ
VDo6R2V0dGVyU2V0dGVyKGpzVGVzdERPTUpJVExvbmdMb25nQXR0ciwgbnVsbHB0ciwgSlNUZXN0
RE9NSklUOjppbmZvKCksIERPTUpJVDo6SURMUmVzdWx0VHlwZUZpbHRlcjxJRExMb25nTG9uZz4p
CiB7CiB9CiAKQEAgLTQ0NSw3ICs0ODgsNyBAQCBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0
RE9NSklUVW5zaWduZWRMb25nTG9uZ0F0dHJHZXR0ZXIoRXhlY1N0YXRlJiBzdGF0ZSwgSgogfQog
CiBUZXN0RE9NSklUVW5zaWduZWRMb25nTG9uZ0F0dHJET01KSVQ6OlRlc3RET01KSVRVbnNpZ25l
ZExvbmdMb25nQXR0ckRPTUpJVCgpCi0gICAgOiBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVyKGpz
VGVzdERPTUpJVFVuc2lnbmVkTG9uZ0xvbmdBdHRyLCBudWxscHRyLCBKU1Rlc3RET01KSVQ6Omlu
Zm8oKSwgSlNDOjpTcGVjQnl0ZWNvZGVOdW1iZXIpCisgICAgOiBKU0M6OkRPTUpJVDo6R2V0dGVy
U2V0dGVyKGpzVGVzdERPTUpJVFVuc2lnbmVkTG9uZ0xvbmdBdHRyLCBudWxscHRyLCBKU1Rlc3RE
T01KSVQ6OmluZm8oKSwgRE9NSklUOjpJRExSZXN1bHRUeXBlRmlsdGVyPElETFVuc2lnbmVkTG9u
Z0xvbmc+KQogewogfQogCkBAIC00NzIsNyArNTE1LDcgQEAgc3RhdGljIGlubGluZSBKU1ZhbHVl
IGpzVGVzdERPTUpJVEZsb2F0QXR0ckdldHRlcihFeGVjU3RhdGUmIHN0YXRlLCBKU1Rlc3RET01K
SVQKIH0KIAogVGVzdERPTUpJVEZsb2F0QXR0ckRPTUpJVDo6VGVzdERPTUpJVEZsb2F0QXR0ckRP
TUpJVCgpCi0gICAgOiBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVyKGpzVGVzdERPTUpJVEZsb2F0
QXR0ciwgbnVsbHB0ciwgSlNUZXN0RE9NSklUOjppbmZvKCksIEpTQzo6U3BlY0J5dGVjb2RlTnVt
YmVyKQorICAgIDogSlNDOjpET01KSVQ6OkdldHRlclNldHRlcihqc1Rlc3RET01KSVRGbG9hdEF0
dHIsIG51bGxwdHIsIEpTVGVzdERPTUpJVDo6aW5mbygpLCBET01KSVQ6OklETFJlc3VsdFR5cGVG
aWx0ZXI8SURMRmxvYXQ+KQogewogfQogCkBAIC00OTksNyArNTQyLDcgQEAgc3RhdGljIGlubGlu
ZSBKU1ZhbHVlIGpzVGVzdERPTUpJVFVucmVzdHJpY3RlZEZsb2F0QXR0ckdldHRlcihFeGVjU3Rh
dGUmIHN0YXRlLAogfQogCiBUZXN0RE9NSklUVW5yZXN0cmljdGVkRmxvYXRBdHRyRE9NSklUOjpU
ZXN0RE9NSklUVW5yZXN0cmljdGVkRmxvYXRBdHRyRE9NSklUKCkKLSAgICA6IEpTQzo6RE9NSklU
OjpHZXR0ZXJTZXR0ZXIoanNUZXN0RE9NSklUVW5yZXN0cmljdGVkRmxvYXRBdHRyLCBudWxscHRy
LCBKU1Rlc3RET01KSVQ6OmluZm8oKSwgSlNDOjpTcGVjQnl0ZWNvZGVOdW1iZXIpCisgICAgOiBK
U0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVyKGpzVGVzdERPTUpJVFVucmVzdHJpY3RlZEZsb2F0QXR0
ciwgbnVsbHB0ciwgSlNUZXN0RE9NSklUOjppbmZvKCksIERPTUpJVDo6SURMUmVzdWx0VHlwZUZp
bHRlcjxJRExVbnJlc3RyaWN0ZWRGbG9hdD4pCiB7CiB9CiAKQEAgLTUyNiw3ICs1NjksNyBAQCBz
dGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0RE9NSklURG91YmxlQXR0ckdldHRlcihFeGVjU3Rh
dGUmIHN0YXRlLCBKU1Rlc3RET01KSQogfQogCiBUZXN0RE9NSklURG91YmxlQXR0ckRPTUpJVDo6
VGVzdERPTUpJVERvdWJsZUF0dHJET01KSVQoKQotICAgIDogSlNDOjpET01KSVQ6OkdldHRlclNl
dHRlcihqc1Rlc3RET01KSVREb3VibGVBdHRyLCBudWxscHRyLCBKU1Rlc3RET01KSVQ6OmluZm8o
KSwgSlNDOjpTcGVjQnl0ZWNvZGVOdW1iZXIpCisgICAgOiBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0
dGVyKGpzVGVzdERPTUpJVERvdWJsZUF0dHIsIG51bGxwdHIsIEpTVGVzdERPTUpJVDo6aW5mbygp
LCBET01KSVQ6OklETFJlc3VsdFR5cGVGaWx0ZXI8SURMRG91YmxlPikKIHsKIH0KIApAQCAtNTUz
LDcgKzU5Niw3IEBAIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RET01KSVRVbnJlc3RyaWN0
ZWREb3VibGVBdHRyR2V0dGVyKEV4ZWNTdGF0ZSYgc3RhdGUsCiB9CiAKIFRlc3RET01KSVRVbnJl
c3RyaWN0ZWREb3VibGVBdHRyRE9NSklUOjpUZXN0RE9NSklUVW5yZXN0cmljdGVkRG91YmxlQXR0
ckRPTUpJVCgpCi0gICAgOiBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVyKGpzVGVzdERPTUpJVFVu
cmVzdHJpY3RlZERvdWJsZUF0dHIsIG51bGxwdHIsIEpTVGVzdERPTUpJVDo6aW5mbygpLCBKU0M6
OlNwZWNCeXRlY29kZU51bWJlcikKKyAgICA6IEpTQzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIoanNU
ZXN0RE9NSklUVW5yZXN0cmljdGVkRG91YmxlQXR0ciwgbnVsbHB0ciwgSlNUZXN0RE9NSklUOjpp
bmZvKCksIERPTUpJVDo6SURMUmVzdWx0VHlwZUZpbHRlcjxJRExVbnJlc3RyaWN0ZWREb3VibGU+
KQogewogfQogCkBAIC01ODAsNyArNjIzLDcgQEAgc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVz
dERPTUpJVERvbVN0cmluZ0F0dHJHZXR0ZXIoRXhlY1N0YXRlJiBzdGF0ZSwgSlNUZXN0RE8KIH0K
IAogVGVzdERPTUpJVERvbVN0cmluZ0F0dHJET01KSVQ6OlRlc3RET01KSVREb21TdHJpbmdBdHRy
RE9NSklUKCkKLSAgICA6IEpTQzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIoanNUZXN0RE9NSklURG9t
U3RyaW5nQXR0ciwgbnVsbHB0ciwgSlNUZXN0RE9NSklUOjppbmZvKCksIEpTQzo6U3BlY1N0cmlu
ZykKKyAgICA6IEpTQzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIoanNUZXN0RE9NSklURG9tU3RyaW5n
QXR0ciwgbnVsbHB0ciwgSlNUZXN0RE9NSklUOjppbmZvKCksIERPTUpJVDo6SURMUmVzdWx0VHlw
ZUZpbHRlcjxJRExET01TdHJpbmc+KQogewogfQogCkBAIC02MDcsNyArNjUwLDcgQEAgc3RhdGlj
IGlubGluZSBKU1ZhbHVlIGpzVGVzdERPTUpJVEJ5dGVTdHJpbmdBdHRyR2V0dGVyKEV4ZWNTdGF0
ZSYgc3RhdGUsIEpTVGVzdEQKIH0KIAogVGVzdERPTUpJVEJ5dGVTdHJpbmdBdHRyRE9NSklUOjpU
ZXN0RE9NSklUQnl0ZVN0cmluZ0F0dHJET01KSVQoKQotICAgIDogSlNDOjpET01KSVQ6OkdldHRl
clNldHRlcihqc1Rlc3RET01KSVRCeXRlU3RyaW5nQXR0ciwgbnVsbHB0ciwgSlNUZXN0RE9NSklU
OjppbmZvKCksIEpTQzo6U3BlY1N0cmluZykKKyAgICA6IEpTQzo6RE9NSklUOjpHZXR0ZXJTZXR0
ZXIoanNUZXN0RE9NSklUQnl0ZVN0cmluZ0F0dHIsIG51bGxwdHIsIEpTVGVzdERPTUpJVDo6aW5m
bygpLCBET01KSVQ6OklETFJlc3VsdFR5cGVGaWx0ZXI8SURMQnl0ZVN0cmluZz4pCiB7CiB9CiAK
QEAgLTYzNCw3ICs2NzcsNyBAQCBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0RE9NSklUVXN2
U3RyaW5nQXR0ckdldHRlcihFeGVjU3RhdGUmIHN0YXRlLCBKU1Rlc3RETwogfQogCiBUZXN0RE9N
SklUVXN2U3RyaW5nQXR0ckRPTUpJVDo6VGVzdERPTUpJVFVzdlN0cmluZ0F0dHJET01KSVQoKQot
ICAgIDogSlNDOjpET01KSVQ6OkdldHRlclNldHRlcihqc1Rlc3RET01KSVRVc3ZTdHJpbmdBdHRy
LCBudWxscHRyLCBKU1Rlc3RET01KSVQ6OmluZm8oKSwgSlNDOjpTcGVjU3RyaW5nKQorICAgIDog
SlNDOjpET01KSVQ6OkdldHRlclNldHRlcihqc1Rlc3RET01KSVRVc3ZTdHJpbmdBdHRyLCBudWxs
cHRyLCBKU1Rlc3RET01KSVQ6OmluZm8oKSwgRE9NSklUOjpJRExSZXN1bHRUeXBlRmlsdGVyPElE
TFVTVlN0cmluZz4pCiB7CiB9CiAKQEAgLTY2MSw3ICs3MDQsNyBAQCBzdGF0aWMgaW5saW5lIEpT
VmFsdWUganNUZXN0RE9NSklUTm9kZUF0dHJHZXR0ZXIoRXhlY1N0YXRlJiBzdGF0ZSwgSlNUZXN0
RE9NSklUJgogfQogCiBUZXN0RE9NSklUTm9kZUF0dHJET01KSVQ6OlRlc3RET01KSVROb2RlQXR0
ckRPTUpJVCgpCi0gICAgOiBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVyKGpzVGVzdERPTUpJVE5v
ZGVBdHRyLCBudWxscHRyLCBKU1Rlc3RET01KSVQ6OmluZm8oKSwgU3BlY0hlYXBUb3ApCisgICAg
OiBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVyKGpzVGVzdERPTUpJVE5vZGVBdHRyLCBudWxscHRy
LCBKU1Rlc3RET01KSVQ6OmluZm8oKSwgRE9NSklUOjpJRExSZXN1bHRUeXBlRmlsdGVyPElETElu
dGVyZmFjZTxOb2RlPj4pCiB7CiB9CiAKQEAgLTY4OCw3ICs3MzEsNyBAQCBzdGF0aWMgaW5saW5l
IEpTVmFsdWUganNUZXN0RE9NSklUQm9vbGVhbk51bGxhYmxlQXR0ckdldHRlcihFeGVjU3RhdGUm
IHN0YXRlLCBKUwogfQogCiBUZXN0RE9NSklUQm9vbGVhbk51bGxhYmxlQXR0ckRPTUpJVDo6VGVz
dERPTUpJVEJvb2xlYW5OdWxsYWJsZUF0dHJET01KSVQoKQotICAgIDogSlNDOjpET01KSVQ6Okdl
dHRlclNldHRlcihqc1Rlc3RET01KSVRCb29sZWFuTnVsbGFibGVBdHRyLCBudWxscHRyLCBKU1Rl
c3RET01KSVQ6OmluZm8oKSwgKEpTQzo6U3BlY0Jvb2xlYW4gfCBKU0M6OlNwZWNPdGhlcikpCisg
ICAgOiBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVyKGpzVGVzdERPTUpJVEJvb2xlYW5OdWxsYWJs
ZUF0dHIsIG51bGxwdHIsIEpTVGVzdERPTUpJVDo6aW5mbygpLCBET01KSVQ6OklETFJlc3VsdFR5
cGVGaWx0ZXI8SURMTnVsbGFibGU8SURMQm9vbGVhbj4+KQogewogfQogCkBAIC03MTUsNyArNzU4
LDcgQEAgc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdERPTUpJVEJ5dGVOdWxsYWJsZUF0dHJH
ZXR0ZXIoRXhlY1N0YXRlJiBzdGF0ZSwgSlNUZXMKIH0KIAogVGVzdERPTUpJVEJ5dGVOdWxsYWJs
ZUF0dHJET01KSVQ6OlRlc3RET01KSVRCeXRlTnVsbGFibGVBdHRyRE9NSklUKCkKLSAgICA6IEpT
Qzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIoanNUZXN0RE9NSklUQnl0ZU51bGxhYmxlQXR0ciwgbnVs
bHB0ciwgSlNUZXN0RE9NSklUOjppbmZvKCksIChKU0M6OlNwZWNJbnQzMk9ubHkgfCBKU0M6OlNw
ZWNPdGhlcikpCisgICAgOiBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVyKGpzVGVzdERPTUpJVEJ5
dGVOdWxsYWJsZUF0dHIsIG51bGxwdHIsIEpTVGVzdERPTUpJVDo6aW5mbygpLCBET01KSVQ6OklE
TFJlc3VsdFR5cGVGaWx0ZXI8SURMTnVsbGFibGU8SURMQnl0ZT4+KQogewogfQogCkBAIC03NDIs
NyArNzg1LDcgQEAgc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdERPTUpJVE9jdGV0TnVsbGFi
bGVBdHRyR2V0dGVyKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVGUKIH0KIAogVGVzdERPTUpJVE9jdGV0
TnVsbGFibGVBdHRyRE9NSklUOjpUZXN0RE9NSklUT2N0ZXROdWxsYWJsZUF0dHJET01KSVQoKQot
ICAgIDogSlNDOjpET01KSVQ6OkdldHRlclNldHRlcihqc1Rlc3RET01KSVRPY3RldE51bGxhYmxl
QXR0ciwgbnVsbHB0ciwgSlNUZXN0RE9NSklUOjppbmZvKCksIChKU0M6OlNwZWNJbnQzMk9ubHkg
fCBKU0M6OlNwZWNPdGhlcikpCisgICAgOiBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVyKGpzVGVz
dERPTUpJVE9jdGV0TnVsbGFibGVBdHRyLCBudWxscHRyLCBKU1Rlc3RET01KSVQ6OmluZm8oKSwg
RE9NSklUOjpJRExSZXN1bHRUeXBlRmlsdGVyPElETE51bGxhYmxlPElETE9jdGV0Pj4pCiB7CiB9
CiAKQEAgLTc2OSw3ICs4MTIsNyBAQCBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0RE9NSklU
U2hvcnROdWxsYWJsZUF0dHJHZXR0ZXIoRXhlY1N0YXRlJiBzdGF0ZSwgSlNUZQogfQogCiBUZXN0
RE9NSklUU2hvcnROdWxsYWJsZUF0dHJET01KSVQ6OlRlc3RET01KSVRTaG9ydE51bGxhYmxlQXR0
ckRPTUpJVCgpCi0gICAgOiBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVyKGpzVGVzdERPTUpJVFNo
b3J0TnVsbGFibGVBdHRyLCBudWxscHRyLCBKU1Rlc3RET01KSVQ6OmluZm8oKSwgKEpTQzo6U3Bl
Y0ludDMyT25seSB8IEpTQzo6U3BlY090aGVyKSkKKyAgICA6IEpTQzo6RE9NSklUOjpHZXR0ZXJT
ZXR0ZXIoanNUZXN0RE9NSklUU2hvcnROdWxsYWJsZUF0dHIsIG51bGxwdHIsIEpTVGVzdERPTUpJ
VDo6aW5mbygpLCBET01KSVQ6OklETFJlc3VsdFR5cGVGaWx0ZXI8SURMTnVsbGFibGU8SURMU2hv
cnQ+PikKIHsKIH0KIApAQCAtNzk2LDcgKzgzOSw3IEBAIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBq
c1Rlc3RET01KSVRVbnNpZ25lZFNob3J0TnVsbGFibGVBdHRyR2V0dGVyKEV4ZWNTdGF0ZSYgc3Rh
CiB9CiAKIFRlc3RET01KSVRVbnNpZ25lZFNob3J0TnVsbGFibGVBdHRyRE9NSklUOjpUZXN0RE9N
SklUVW5zaWduZWRTaG9ydE51bGxhYmxlQXR0ckRPTUpJVCgpCi0gICAgOiBKU0M6OkRPTUpJVDo6
R2V0dGVyU2V0dGVyKGpzVGVzdERPTUpJVFVuc2lnbmVkU2hvcnROdWxsYWJsZUF0dHIsIG51bGxw
dHIsIEpTVGVzdERPTUpJVDo6aW5mbygpLCAoSlNDOjpTcGVjSW50MzJPbmx5IHwgSlNDOjpTcGVj
T3RoZXIpKQorICAgIDogSlNDOjpET01KSVQ6OkdldHRlclNldHRlcihqc1Rlc3RET01KSVRVbnNp
Z25lZFNob3J0TnVsbGFibGVBdHRyLCBudWxscHRyLCBKU1Rlc3RET01KSVQ6OmluZm8oKSwgRE9N
SklUOjpJRExSZXN1bHRUeXBlRmlsdGVyPElETE51bGxhYmxlPElETFVuc2lnbmVkU2hvcnQ+PikK
IHsKIH0KIApAQCAtODIzLDcgKzg2Niw3IEBAIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RE
T01KSVRMb25nTnVsbGFibGVBdHRyR2V0dGVyKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVGVzCiB9CiAK
IFRlc3RET01KSVRMb25nTnVsbGFibGVBdHRyRE9NSklUOjpUZXN0RE9NSklUTG9uZ051bGxhYmxl
QXR0ckRPTUpJVCgpCi0gICAgOiBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVyKGpzVGVzdERPTUpJ
VExvbmdOdWxsYWJsZUF0dHIsIG51bGxwdHIsIEpTVGVzdERPTUpJVDo6aW5mbygpLCAoSlNDOjpT
cGVjSW50MzJPbmx5IHwgSlNDOjpTcGVjT3RoZXIpKQorICAgIDogSlNDOjpET01KSVQ6OkdldHRl
clNldHRlcihqc1Rlc3RET01KSVRMb25nTnVsbGFibGVBdHRyLCBudWxscHRyLCBKU1Rlc3RET01K
SVQ6OmluZm8oKSwgRE9NSklUOjpJRExSZXN1bHRUeXBlRmlsdGVyPElETE51bGxhYmxlPElETExv
bmc+PikKIHsKIH0KIApAQCAtODUwLDcgKzg5Myw3IEBAIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBq
c1Rlc3RET01KSVRVbnNpZ25lZExvbmdOdWxsYWJsZUF0dHJHZXR0ZXIoRXhlY1N0YXRlJiBzdGF0
CiB9CiAKIFRlc3RET01KSVRVbnNpZ25lZExvbmdOdWxsYWJsZUF0dHJET01KSVQ6OlRlc3RET01K
SVRVbnNpZ25lZExvbmdOdWxsYWJsZUF0dHJET01KSVQoKQotICAgIDogSlNDOjpET01KSVQ6Okdl
dHRlclNldHRlcihqc1Rlc3RET01KSVRVbnNpZ25lZExvbmdOdWxsYWJsZUF0dHIsIG51bGxwdHIs
IEpTVGVzdERPTUpJVDo6aW5mbygpLCAoSlNDOjpTcGVjQnl0ZWNvZGVOdW1iZXIgfCBKU0M6OlNw
ZWNPdGhlcikpCisgICAgOiBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVyKGpzVGVzdERPTUpJVFVu
c2lnbmVkTG9uZ051bGxhYmxlQXR0ciwgbnVsbHB0ciwgSlNUZXN0RE9NSklUOjppbmZvKCksIERP
TUpJVDo6SURMUmVzdWx0VHlwZUZpbHRlcjxJRExOdWxsYWJsZTxJRExVbnNpZ25lZExvbmc+PikK
IHsKIH0KIApAQCAtODc3LDcgKzkyMCw3IEBAIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RE
T01KSVRMb25nTG9uZ051bGxhYmxlQXR0ckdldHRlcihFeGVjU3RhdGUmIHN0YXRlLCBKCiB9CiAK
IFRlc3RET01KSVRMb25nTG9uZ051bGxhYmxlQXR0ckRPTUpJVDo6VGVzdERPTUpJVExvbmdMb25n
TnVsbGFibGVBdHRyRE9NSklUKCkKLSAgICA6IEpTQzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIoanNU
ZXN0RE9NSklUTG9uZ0xvbmdOdWxsYWJsZUF0dHIsIG51bGxwdHIsIEpTVGVzdERPTUpJVDo6aW5m
bygpLCAoSlNDOjpTcGVjQnl0ZWNvZGVOdW1iZXIgfCBKU0M6OlNwZWNPdGhlcikpCisgICAgOiBK
U0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVyKGpzVGVzdERPTUpJVExvbmdMb25nTnVsbGFibGVBdHRy
LCBudWxscHRyLCBKU1Rlc3RET01KSVQ6OmluZm8oKSwgRE9NSklUOjpJRExSZXN1bHRUeXBlRmls
dGVyPElETE51bGxhYmxlPElETExvbmdMb25nPj4pCiB7CiB9CiAKQEAgLTkwNCw3ICs5NDcsNyBA
QCBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0RE9NSklUVW5zaWduZWRMb25nTG9uZ051bGxh
YmxlQXR0ckdldHRlcihFeGVjU3RhdGUmCiB9CiAKIFRlc3RET01KSVRVbnNpZ25lZExvbmdMb25n
TnVsbGFibGVBdHRyRE9NSklUOjpUZXN0RE9NSklUVW5zaWduZWRMb25nTG9uZ051bGxhYmxlQXR0
ckRPTUpJVCgpCi0gICAgOiBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVyKGpzVGVzdERPTUpJVFVu
c2lnbmVkTG9uZ0xvbmdOdWxsYWJsZUF0dHIsIG51bGxwdHIsIEpTVGVzdERPTUpJVDo6aW5mbygp
LCAoSlNDOjpTcGVjQnl0ZWNvZGVOdW1iZXIgfCBKU0M6OlNwZWNPdGhlcikpCisgICAgOiBKU0M6
OkRPTUpJVDo6R2V0dGVyU2V0dGVyKGpzVGVzdERPTUpJVFVuc2lnbmVkTG9uZ0xvbmdOdWxsYWJs
ZUF0dHIsIG51bGxwdHIsIEpTVGVzdERPTUpJVDo6aW5mbygpLCBET01KSVQ6OklETFJlc3VsdFR5
cGVGaWx0ZXI8SURMTnVsbGFibGU8SURMVW5zaWduZWRMb25nTG9uZz4+KQogewogfQogCkBAIC05
MzEsNyArOTc0LDcgQEAgc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdERPTUpJVEZsb2F0TnVs
bGFibGVBdHRyR2V0dGVyKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVGUKIH0KIAogVGVzdERPTUpJVEZs
b2F0TnVsbGFibGVBdHRyRE9NSklUOjpUZXN0RE9NSklURmxvYXROdWxsYWJsZUF0dHJET01KSVQo
KQotICAgIDogSlNDOjpET01KSVQ6OkdldHRlclNldHRlcihqc1Rlc3RET01KSVRGbG9hdE51bGxh
YmxlQXR0ciwgbnVsbHB0ciwgSlNUZXN0RE9NSklUOjppbmZvKCksIChKU0M6OlNwZWNCeXRlY29k
ZU51bWJlciB8IEpTQzo6U3BlY090aGVyKSkKKyAgICA6IEpTQzo6RE9NSklUOjpHZXR0ZXJTZXR0
ZXIoanNUZXN0RE9NSklURmxvYXROdWxsYWJsZUF0dHIsIG51bGxwdHIsIEpTVGVzdERPTUpJVDo6
aW5mbygpLCBET01KSVQ6OklETFJlc3VsdFR5cGVGaWx0ZXI8SURMTnVsbGFibGU8SURMRmxvYXQ+
PikKIHsKIH0KIApAQCAtOTU4LDcgKzEwMDEsNyBAQCBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNU
ZXN0RE9NSklUVW5yZXN0cmljdGVkRmxvYXROdWxsYWJsZUF0dHJHZXR0ZXIoRXhlY1N0YXRlJgog
fQogCiBUZXN0RE9NSklUVW5yZXN0cmljdGVkRmxvYXROdWxsYWJsZUF0dHJET01KSVQ6OlRlc3RE
T01KSVRVbnJlc3RyaWN0ZWRGbG9hdE51bGxhYmxlQXR0ckRPTUpJVCgpCi0gICAgOiBKU0M6OkRP
TUpJVDo6R2V0dGVyU2V0dGVyKGpzVGVzdERPTUpJVFVucmVzdHJpY3RlZEZsb2F0TnVsbGFibGVB
dHRyLCBudWxscHRyLCBKU1Rlc3RET01KSVQ6OmluZm8oKSwgKEpTQzo6U3BlY0J5dGVjb2RlTnVt
YmVyIHwgSlNDOjpTcGVjT3RoZXIpKQorICAgIDogSlNDOjpET01KSVQ6OkdldHRlclNldHRlcihq
c1Rlc3RET01KSVRVbnJlc3RyaWN0ZWRGbG9hdE51bGxhYmxlQXR0ciwgbnVsbHB0ciwgSlNUZXN0
RE9NSklUOjppbmZvKCksIERPTUpJVDo6SURMUmVzdWx0VHlwZUZpbHRlcjxJRExOdWxsYWJsZTxJ
RExVbnJlc3RyaWN0ZWRGbG9hdD4+KQogewogfQogCkBAIC05ODUsNyArMTAyOCw3IEBAIHN0YXRp
YyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RET01KSVREb3VibGVOdWxsYWJsZUF0dHJHZXR0ZXIoRXhl
Y1N0YXRlJiBzdGF0ZSwgSlNUCiB9CiAKIFRlc3RET01KSVREb3VibGVOdWxsYWJsZUF0dHJET01K
SVQ6OlRlc3RET01KSVREb3VibGVOdWxsYWJsZUF0dHJET01KSVQoKQotICAgIDogSlNDOjpET01K
SVQ6OkdldHRlclNldHRlcihqc1Rlc3RET01KSVREb3VibGVOdWxsYWJsZUF0dHIsIG51bGxwdHIs
IEpTVGVzdERPTUpJVDo6aW5mbygpLCAoSlNDOjpTcGVjQnl0ZWNvZGVOdW1iZXIgfCBKU0M6OlNw
ZWNPdGhlcikpCisgICAgOiBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVyKGpzVGVzdERPTUpJVERv
dWJsZU51bGxhYmxlQXR0ciwgbnVsbHB0ciwgSlNUZXN0RE9NSklUOjppbmZvKCksIERPTUpJVDo6
SURMUmVzdWx0VHlwZUZpbHRlcjxJRExOdWxsYWJsZTxJRExEb3VibGU+PikKIHsKIH0KIApAQCAt
MTAxMiw3ICsxMDU1LDcgQEAgc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdERPTUpJVFVucmVz
dHJpY3RlZERvdWJsZU51bGxhYmxlQXR0ckdldHRlcihFeGVjU3RhdGUKIH0KIAogVGVzdERPTUpJ
VFVucmVzdHJpY3RlZERvdWJsZU51bGxhYmxlQXR0ckRPTUpJVDo6VGVzdERPTUpJVFVucmVzdHJp
Y3RlZERvdWJsZU51bGxhYmxlQXR0ckRPTUpJVCgpCi0gICAgOiBKU0M6OkRPTUpJVDo6R2V0dGVy
U2V0dGVyKGpzVGVzdERPTUpJVFVucmVzdHJpY3RlZERvdWJsZU51bGxhYmxlQXR0ciwgbnVsbHB0
ciwgSlNUZXN0RE9NSklUOjppbmZvKCksIChKU0M6OlNwZWNCeXRlY29kZU51bWJlciB8IEpTQzo6
U3BlY090aGVyKSkKKyAgICA6IEpTQzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIoanNUZXN0RE9NSklU
VW5yZXN0cmljdGVkRG91YmxlTnVsbGFibGVBdHRyLCBudWxscHRyLCBKU1Rlc3RET01KSVQ6Omlu
Zm8oKSwgRE9NSklUOjpJRExSZXN1bHRUeXBlRmlsdGVyPElETE51bGxhYmxlPElETFVucmVzdHJp
Y3RlZERvdWJsZT4+KQogewogfQogCkBAIC0xMDM5LDcgKzEwODIsNyBAQCBzdGF0aWMgaW5saW5l
IEpTVmFsdWUganNUZXN0RE9NSklURG9tU3RyaW5nTnVsbGFibGVBdHRyR2V0dGVyKEV4ZWNTdGF0
ZSYgc3RhdGUsCiB9CiAKIFRlc3RET01KSVREb21TdHJpbmdOdWxsYWJsZUF0dHJET01KSVQ6OlRl
c3RET01KSVREb21TdHJpbmdOdWxsYWJsZUF0dHJET01KSVQoKQotICAgIDogSlNDOjpET01KSVQ6
OkdldHRlclNldHRlcihqc1Rlc3RET01KSVREb21TdHJpbmdOdWxsYWJsZUF0dHIsIG51bGxwdHIs
IEpTVGVzdERPTUpJVDo6aW5mbygpLCAoSlNDOjpTcGVjU3RyaW5nIHwgSlNDOjpTcGVjT3RoZXIp
KQorICAgIDogSlNDOjpET01KSVQ6OkdldHRlclNldHRlcihqc1Rlc3RET01KSVREb21TdHJpbmdO
dWxsYWJsZUF0dHIsIG51bGxwdHIsIEpTVGVzdERPTUpJVDo6aW5mbygpLCBET01KSVQ6OklETFJl
c3VsdFR5cGVGaWx0ZXI8SURMTnVsbGFibGU8SURMRE9NU3RyaW5nPj4pCiB7CiB9CiAKQEAgLTEw
NjYsNyArMTEwOSw3IEBAIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RET01KSVRCeXRlU3Ry
aW5nTnVsbGFibGVBdHRyR2V0dGVyKEV4ZWNTdGF0ZSYgc3RhdGUsCiB9CiAKIFRlc3RET01KSVRC
eXRlU3RyaW5nTnVsbGFibGVBdHRyRE9NSklUOjpUZXN0RE9NSklUQnl0ZVN0cmluZ051bGxhYmxl
QXR0ckRPTUpJVCgpCi0gICAgOiBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVyKGpzVGVzdERPTUpJ
VEJ5dGVTdHJpbmdOdWxsYWJsZUF0dHIsIG51bGxwdHIsIEpTVGVzdERPTUpJVDo6aW5mbygpLCAo
SlNDOjpTcGVjU3RyaW5nIHwgSlNDOjpTcGVjT3RoZXIpKQorICAgIDogSlNDOjpET01KSVQ6Okdl
dHRlclNldHRlcihqc1Rlc3RET01KSVRCeXRlU3RyaW5nTnVsbGFibGVBdHRyLCBudWxscHRyLCBK
U1Rlc3RET01KSVQ6OmluZm8oKSwgRE9NSklUOjpJRExSZXN1bHRUeXBlRmlsdGVyPElETE51bGxh
YmxlPElETEJ5dGVTdHJpbmc+PikKIHsKIH0KIApAQCAtMTA5Myw3ICsxMTM2LDcgQEAgc3RhdGlj
IGlubGluZSBKU1ZhbHVlIGpzVGVzdERPTUpJVFVzdlN0cmluZ051bGxhYmxlQXR0ckdldHRlcihF
eGVjU3RhdGUmIHN0YXRlLAogfQogCiBUZXN0RE9NSklUVXN2U3RyaW5nTnVsbGFibGVBdHRyRE9N
SklUOjpUZXN0RE9NSklUVXN2U3RyaW5nTnVsbGFibGVBdHRyRE9NSklUKCkKLSAgICA6IEpTQzo6
RE9NSklUOjpHZXR0ZXJTZXR0ZXIoanNUZXN0RE9NSklUVXN2U3RyaW5nTnVsbGFibGVBdHRyLCBu
dWxscHRyLCBKU1Rlc3RET01KSVQ6OmluZm8oKSwgKEpTQzo6U3BlY1N0cmluZyB8IEpTQzo6U3Bl
Y090aGVyKSkKKyAgICA6IEpTQzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIoanNUZXN0RE9NSklUVXN2
U3RyaW5nTnVsbGFibGVBdHRyLCBudWxscHRyLCBKU1Rlc3RET01KSVQ6OmluZm8oKSwgRE9NSklU
OjpJRExSZXN1bHRUeXBlRmlsdGVyPElETE51bGxhYmxlPElETFVTVlN0cmluZz4+KQogewogfQog
CkBAIC0xMTIwLDcgKzExNjMsNyBAQCBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0RE9NSklU
Tm9kZU51bGxhYmxlQXR0ckdldHRlcihFeGVjU3RhdGUmIHN0YXRlLCBKU1RlcwogfQogCiBUZXN0
RE9NSklUTm9kZU51bGxhYmxlQXR0ckRPTUpJVDo6VGVzdERPTUpJVE5vZGVOdWxsYWJsZUF0dHJE
T01KSVQoKQotICAgIDogSlNDOjpET01KSVQ6OkdldHRlclNldHRlcihqc1Rlc3RET01KSVROb2Rl
TnVsbGFibGVBdHRyLCBudWxscHRyLCBKU1Rlc3RET01KSVQ6OmluZm8oKSwgU3BlY0hlYXBUb3Ap
CisgICAgOiBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVyKGpzVGVzdERPTUpJVE5vZGVOdWxsYWJs
ZUF0dHIsIG51bGxwdHIsIEpTVGVzdERPTUpJVDo6aW5mbygpLCBET01KSVQ6OklETFJlc3VsdFR5
cGVGaWx0ZXI8SURMTnVsbGFibGU8SURMSW50ZXJmYWNlPE5vZGU+Pj4pCiB7CiB9CiAKQEAgLTEx
NTksNiArMTIwMiwxNjkgQEAgSlNWYWx1ZSBKU1Rlc3RET01KSVQ6OmdldENvbnN0cnVjdG9yKFZN
JiB2bSwgY29uc3QgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKICAgICByZXR1cm4gZ2V0
RE9NQ29uc3RydWN0b3I8SlNUZXN0RE9NSklUQ29uc3RydWN0b3I+KHZtLCAqanNDYXN0PGNvbnN0
IEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KSk7CiB9CiAKK3N0YXRpYyBpbmxpbmUg
SlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RET01KSVRQcm90b3R5cGVGdW5jdGlvbkdldEF0dHJp
YnV0ZUNhbGxlcihKU0M6OkV4ZWNTdGF0ZSosIEpTVGVzdERPTUpJVCosIEpTQzo6VGhyb3dTY29w
ZSYpOworCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdERPTUpJVFByb3RvdHlw
ZUZ1bmN0aW9uR2V0QXR0cmlidXRlKEV4ZWNTdGF0ZSogc3RhdGUpCit7CisgICAgcmV0dXJuIEJp
bmRpbmdDYWxsZXI8SlNUZXN0RE9NSklUPjo6Y2FsbE9wZXJhdGlvbjxqc1Rlc3RET01KSVRQcm90
b3R5cGVGdW5jdGlvbkdldEF0dHJpYnV0ZUNhbGxlcj4oc3RhdGUsICJnZXRBdHRyaWJ1dGUiKTsK
K30KKworc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdERPTUpJVFByb3Rv
dHlwZUZ1bmN0aW9uR2V0QXR0cmlidXRlQ2FsbGVyKEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgSlNU
ZXN0RE9NSklUKiBjYXN0ZWRUaGlzLCBKU0M6OlRocm93U2NvcGUmIHRocm93U2NvcGUpCit7Cisg
ICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7Cisg
ICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKKyAgICBpZiAoVU5MSUtFTFko
c3RhdGUtPmFyZ3VtZW50Q291bnQoKSA8IDEpKQorICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9y
KHN0YXRlLCB0aHJvd1Njb3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkp
OworICAgIGF1dG8gbmFtZSA9IGNvbnZlcnQ8SURMRE9NU3RyaW5nPigqc3RhdGUsIHN0YXRlLT51
bmNoZWNrZWRBcmd1bWVudCgwKSwgU3RyaW5nQ29udmVyc2lvbkNvbmZpZ3VyYXRpb246Ok5vcm1h
bCk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgp
KTsKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IHRvSlM8SURMTnVsbGFibGU8SURMRE9NU3RyaW5nPj4o
KnN0YXRlLCBpbXBsLmdldEF0dHJpYnV0ZShXVEZNb3ZlKG5hbWUpKSk7CisgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShyZXN1bHQpOworfQorCitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgdW5zYWZlSnNUZXN0RE9NSklUUHJvdG90eXBlRnVuY3Rpb25HZXRBdHRyaWJ1dGUoSlND
OjpFeGVjU3RhdGUqIHN0YXRlLCBKU1Rlc3RET01KSVQqIGNhc3RlZFRoaXMsIERPTUpJVDo6SURM
SlNBcmd1bWVudFR5cGU8SURMRE9NU3RyaW5nPiBlbmNvZGVkTmFtZSkKK3sKKyAgICBVTlVTRURf
UEFSQU0oc3RhdGUpOworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIEpTQzo6TmF0aXZl
Q2FsbEZyYW1lVHJhY2VyIHRyYWNlcigmdm0sIHN0YXRlKTsKKyAgICBhdXRvIHRocm93U2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+
d3JhcHBlZCgpOworICAgIGF1dG8gbmFtZSA9IERPTUpJVDo6RGlyZWN0Q29udmVydGVyPElETERP
TVN0cmluZz46OmRpcmVjdENvbnZlcnQ8U3RyaW5nQ29udmVyc2lvbkNvbmZpZ3VyYXRpb246Ok5v
cm1hbD4oKnN0YXRlLCBlbmNvZGVkTmFtZSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJv
d1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IHRvSlM8SURM
TnVsbGFibGU8SURMRE9NU3RyaW5nPj4oKnN0YXRlLCBpbXBsLmdldEF0dHJpYnV0ZShXVEZNb3Zl
KG5hbWUpKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOworfQorCitzdGF0
aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0RE9NSklUUHJvdG90eXBlRnVuY3Rp
b25JdGVtQ2FsbGVyKEpTQzo6RXhlY1N0YXRlKiwgSlNUZXN0RE9NSklUKiwgSlNDOjpUaHJvd1Nj
b3BlJik7CisKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0RE9NSklUUHJvdG90
eXBlRnVuY3Rpb25JdGVtKEV4ZWNTdGF0ZSogc3RhdGUpCit7CisgICAgcmV0dXJuIEJpbmRpbmdD
YWxsZXI8SlNUZXN0RE9NSklUPjo6Y2FsbE9wZXJhdGlvbjxqc1Rlc3RET01KSVRQcm90b3R5cGVG
dW5jdGlvbkl0ZW1DYWxsZXI+KHN0YXRlLCAiaXRlbSIpOworfQorCitzdGF0aWMgaW5saW5lIEpT
Qzo6RW5jb2RlZEpTVmFsdWUganNUZXN0RE9NSklUUHJvdG90eXBlRnVuY3Rpb25JdGVtQ2FsbGVy
KEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgSlNUZXN0RE9NSklUKiBjYXN0ZWRUaGlzLCBKU0M6OlRo
cm93U2NvcGUmIHRocm93U2NvcGUpCit7CisgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKKyAgICBV
TlVTRURfUEFSQU0odGhyb3dTY29wZSk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndy
YXBwZWQoKTsKKyAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmFyZ3VtZW50Q291bnQoKSA8IDIpKQor
ICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlLCBjcmVhdGVOb3RF
bm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOworICAgIGF1dG8geCA9IGNvbnZlcnQ8SURMVW5z
aWduZWRTaG9ydD4oKnN0YXRlLCBzdGF0ZS0+dW5jaGVja2VkQXJndW1lbnQoMCksIEludGVnZXJD
b252ZXJzaW9uQ29uZmlndXJhdGlvbjo6Tm9ybWFsKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOworICAgIGF1dG8geSA9IGNvbnZlcnQ8SURM
VW5zaWduZWRTaG9ydD4oKnN0YXRlLCBzdGF0ZS0+dW5jaGVja2VkQXJndW1lbnQoMSksIEludGVn
ZXJDb252ZXJzaW9uQ29uZmlndXJhdGlvbjo6Tm9ybWFsKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOworICAgIEpTVmFsdWUgcmVzdWx0ID0g
dG9KUzxJRExET01TdHJpbmc+KCpzdGF0ZSwgaW1wbC5pdGVtKFdURk1vdmUoeCksIFdURk1vdmUo
eSkpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7Cit9CisKK0pTQzo6RW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCB1bnNhZmVKc1Rlc3RET01KSVRQcm90b3R5cGVGdW5j
dGlvbkl0ZW0oSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCBKU1Rlc3RET01KSVQqIGNhc3RlZFRoaXMs
IERPTUpJVDo6SURMSlNBcmd1bWVudFR5cGU8SURMVW5zaWduZWRTaG9ydD4gZW5jb2RlZFgsIERP
TUpJVDo6SURMSlNBcmd1bWVudFR5cGU8SURMVW5zaWduZWRTaG9ydD4gZW5jb2RlZFkpCit7Cisg
ICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBK
U0M6Ok5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIoJnZtLCBzdGF0ZSk7CisgICAgYXV0byB0
aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgYXV0byYgaW1wbCA9IGNh
c3RlZFRoaXMtPndyYXBwZWQoKTsKKyAgICBhdXRvIHggPSBET01KSVQ6OkRpcmVjdENvbnZlcnRl
cjxJRExVbnNpZ25lZFNob3J0Pjo6ZGlyZWN0Q29udmVydDxJbnRlZ2VyQ29udmVyc2lvbkNvbmZp
Z3VyYXRpb246Ok5vcm1hbD4oKnN0YXRlLCBlbmNvZGVkWCk7CisgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKKyAgICBhdXRvIHkgPSBET01KSVQ6
OkRpcmVjdENvbnZlcnRlcjxJRExVbnNpZ25lZFNob3J0Pjo6ZGlyZWN0Q29udmVydDxJbnRlZ2Vy
Q29udmVyc2lvbkNvbmZpZ3VyYXRpb246Ok5vcm1hbD4oKnN0YXRlLCBlbmNvZGVkWSk7CisgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKKyAgICBK
U1ZhbHVlIHJlc3VsdCA9IHRvSlM8SURMRE9NU3RyaW5nPigqc3RhdGUsIGltcGwuaXRlbShXVEZN
b3ZlKHgpLCBXVEZNb3ZlKHkpKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQp
OworfQorCitzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0RE9NSklUUHJv
dG90eXBlRnVuY3Rpb25IYXNBdHRyaWJ1dGVDYWxsZXIoSlNDOjpFeGVjU3RhdGUqLCBKU1Rlc3RE
T01KSVQqLCBKU0M6OlRocm93U2NvcGUmKTsKKworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBqc1Rlc3RET01KSVRQcm90b3R5cGVGdW5jdGlvbkhhc0F0dHJpYnV0ZShFeGVjU3RhdGUqIHN0
YXRlKQoreworICAgIHJldHVybiBCaW5kaW5nQ2FsbGVyPEpTVGVzdERPTUpJVD46OmNhbGxPcGVy
YXRpb248anNUZXN0RE9NSklUUHJvdG90eXBlRnVuY3Rpb25IYXNBdHRyaWJ1dGVDYWxsZXI+KHN0
YXRlLCAiaGFzQXR0cmlidXRlIik7Cit9CisKK3N0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNW
YWx1ZSBqc1Rlc3RET01KSVRQcm90b3R5cGVGdW5jdGlvbkhhc0F0dHJpYnV0ZUNhbGxlcihKU0M6
OkV4ZWNTdGF0ZSogc3RhdGUsIEpTVGVzdERPTUpJVCogY2FzdGVkVGhpcywgSlNDOjpUaHJvd1Nj
b3BlJiB0aHJvd1Njb3BlKQoreworICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CisgICAgVU5VU0VE
X1BBUkFNKHRocm93U2NvcGUpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVk
KCk7CisgICAgSlNWYWx1ZSByZXN1bHQgPSB0b0pTPElETEJvb2xlYW4+KGltcGwuaGFzQXR0cmli
dXRlKCkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKK30KKworSlNDOjpF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHVuc2FmZUpzVGVzdERPTUpJVFByb3RvdHlwZUZ1
bmN0aW9uSGFzQXR0cmlidXRlKEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgSlNUZXN0RE9NSklUKiBj
YXN0ZWRUaGlzKQoreworICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CisgICAgVk0mIHZtID0gc3Rh
dGUtPnZtKCk7CisgICAgSlNDOjpOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKCZ2bSwgc3Rh
dGUpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAg
IGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CisgICAgSlNWYWx1ZSByZXN1bHQg
PSB0b0pTPElETEJvb2xlYW4+KGltcGwuaGFzQXR0cmlidXRlKCkpOworICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUocmVzdWx0KTsKK30KKworc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1Zh
bHVlIGpzVGVzdERPTUpJVFByb3RvdHlwZUZ1bmN0aW9uR2V0RWxlbWVudEJ5SWRDYWxsZXIoSlND
OjpFeGVjU3RhdGUqLCBKU1Rlc3RET01KSVQqLCBKU0M6OlRocm93U2NvcGUmKTsKKworRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RET01KSVRQcm90b3R5cGVGdW5jdGlvbkdldEVs
ZW1lbnRCeUlkKEV4ZWNTdGF0ZSogc3RhdGUpCit7CisgICAgcmV0dXJuIEJpbmRpbmdDYWxsZXI8
SlNUZXN0RE9NSklUPjo6Y2FsbE9wZXJhdGlvbjxqc1Rlc3RET01KSVRQcm90b3R5cGVGdW5jdGlv
bkdldEVsZW1lbnRCeUlkQ2FsbGVyPihzdGF0ZSwgImdldEVsZW1lbnRCeUlkIik7Cit9CisKK3N0
YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RET01KSVRQcm90b3R5cGVGdW5j
dGlvbkdldEVsZW1lbnRCeUlkQ2FsbGVyKEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgSlNUZXN0RE9N
SklUKiBjYXN0ZWRUaGlzLCBKU0M6OlRocm93U2NvcGUmIHRocm93U2NvcGUpCit7CisgICAgVU5V
U0VEX1BBUkFNKHN0YXRlKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CisgICAgYXV0
byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKKyAgICBpZiAoVU5MSUtFTFkoc3RhdGUt
PmFyZ3VtZW50Q291bnQoKSA8IDEpKQorICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRl
LCB0aHJvd1Njb3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOworICAg
IGF1dG8gZWxlbWVudElkID0gQXRvbWljU3RyaW5nKHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgw
KS50b1N0cmluZyhzdGF0ZSktPnRvRXhpc3RpbmdBdG9taWNTdHJpbmcoc3RhdGUpKTsKKyAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOworICAgIEpT
VmFsdWUgcmVzdWx0ID0gdG9KUzxJRExJbnRlcmZhY2U8RWxlbWVudD4+KCpzdGF0ZSwgKmNhc3Rl
ZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBpbXBsLmdldEVsZW1lbnRCeUlkKFdURk1vdmUoZWxlbWVu
dElkKSkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKK30KKworSlNDOjpF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHVuc2FmZUpzVGVzdERPTUpJVFByb3RvdHlwZUZ1
bmN0aW9uR2V0RWxlbWVudEJ5SWQoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCBKU1Rlc3RET01KSVQq
IGNhc3RlZFRoaXMsIERPTUpJVDo6SURMSlNBcmd1bWVudFR5cGU8SURMRE9NU3RyaW5nPiBlbmNv
ZGVkRWxlbWVudElkKQoreworICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CisgICAgVk0mIHZtID0g
c3RhdGUtPnZtKCk7CisgICAgSlNDOjpOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKCZ2bSwg
c3RhdGUpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwor
ICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CisgICAgYXV0byBlbGVtZW50
SWQgPSBBdG9taWNTdHJpbmcoZW5jb2RlZEVsZW1lbnRJZC0+dG9FeGlzdGluZ0F0b21pY1N0cmlu
ZyhzdGF0ZSkpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpT
VmFsdWUoKSk7CisgICAgSlNWYWx1ZSByZXN1bHQgPSB0b0pTPElETEludGVyZmFjZTxFbGVtZW50
Pj4oKnN0YXRlLCAqY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIGltcGwuZ2V0RWxlbWVudEJ5
SWQoV1RGTW92ZShlbGVtZW50SWQpKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1
bHQpOworfQorCitzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0RE9NSklU
UHJvdG90eXBlRnVuY3Rpb25HZXRFbGVtZW50c0J5TmFtZUNhbGxlcihKU0M6OkV4ZWNTdGF0ZSos
IEpTVGVzdERPTUpJVCosIEpTQzo6VGhyb3dTY29wZSYpOworCitFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGpzVGVzdERPTUpJVFByb3RvdHlwZUZ1bmN0aW9uR2V0RWxlbWVudHNCeU5hbWUo
RXhlY1N0YXRlKiBzdGF0ZSkKK3sKKyAgICByZXR1cm4gQmluZGluZ0NhbGxlcjxKU1Rlc3RET01K
SVQ+OjpjYWxsT3BlcmF0aW9uPGpzVGVzdERPTUpJVFByb3RvdHlwZUZ1bmN0aW9uR2V0RWxlbWVu
dHNCeU5hbWVDYWxsZXI+KHN0YXRlLCAiZ2V0RWxlbWVudHNCeU5hbWUiKTsKK30KKworc3RhdGlj
IGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdERPTUpJVFByb3RvdHlwZUZ1bmN0aW9u
R2V0RWxlbWVudHNCeU5hbWVDYWxsZXIoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCBKU1Rlc3RET01K
SVQqIGNhc3RlZFRoaXMsIEpTQzo6VGhyb3dTY29wZSYgdGhyb3dTY29wZSkKK3sKKyAgICBVTlVT
RURfUEFSQU0oc3RhdGUpOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKKyAgICBhdXRv
JiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOworICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+
YXJndW1lbnRDb3VudCgpIDwgMSkpCisgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUs
IHRocm93U2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CisgICAg
YXV0byBlbGVtZW50TmFtZSA9IHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgwKS50b1N0cmluZyhz
dGF0ZSktPnRvQXRvbWljU3RyaW5nKHN0YXRlKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRo
cm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOworICAgIEpTVmFsdWUgcmVzdWx0ID0gdG9KUzxJ
RExJbnRlcmZhY2U8Tm9kZUxpc3Q+Pigqc3RhdGUsICpjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3Qo
KSwgaW1wbC5nZXRFbGVtZW50c0J5TmFtZShXVEZNb3ZlKGVsZW1lbnROYW1lKSkpOworICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKK30KKworSlNDOjpFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIHVuc2FmZUpzVGVzdERPTUpJVFByb3RvdHlwZUZ1bmN0aW9uR2V0RWxlbWVu
dHNCeU5hbWUoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCBKU1Rlc3RET01KSVQqIGNhc3RlZFRoaXMs
IERPTUpJVDo6SURMSlNBcmd1bWVudFR5cGU8SURMRE9NU3RyaW5nPiBlbmNvZGVkRWxlbWVudE5h
bWUpCit7CisgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0o
KTsKKyAgICBKU0M6Ok5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIoJnZtLCBzdGF0ZSk7Cisg
ICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgYXV0byYg
aW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKKyAgICBhdXRvIGVsZW1lbnROYW1lID0gZW5j
b2RlZEVsZW1lbnROYW1lLT50b0F0b21pY1N0cmluZyhzdGF0ZSk7CisgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKKyAgICBKU1ZhbHVlIHJlc3Vs
dCA9IHRvSlM8SURMSW50ZXJmYWNlPE5vZGVMaXN0Pj4oKnN0YXRlLCAqY2FzdGVkVGhpcy0+Z2xv
YmFsT2JqZWN0KCksIGltcGwuZ2V0RWxlbWVudHNCeU5hbWUoV1RGTW92ZShlbGVtZW50TmFtZSkp
KTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7Cit9CisKIHZvaWQgSlNUZXN0
RE9NSklUOjp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3Ip
CiB7CiAgICAgYXV0byogdGhpc09iamVjdCA9IGpzQ2FzdDxKU1Rlc3RET01KSVQqPihjZWxsKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0RE9N
SklULmlkbCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0RE9NSklU
LmlkbAppbmRleCBiZTdlZDA0ZmY2M2RlNjg2YmM4NzY0ODI4MmI2YWFmNjRjMjc3M2U3Li5iMzMz
NjZiMTRhNDc0MTA3N2Y2MzFmNWMyZTg1MzdlNDE3NzA5MWIyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdERPTUpJVC5pZGwKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RET01KSVQuaWRsCkBAIC02Myw0ICs2
MywxMCBAQCBpbnRlcmZhY2UgVGVzdERPTUpJVCA6IE5vZGUgewogICAgIFtET01KSVRdIHJlYWRv
bmx5IGF0dHJpYnV0ZSBCeXRlU3RyaW5nPyBieXRlU3RyaW5nTnVsbGFibGVBdHRyOwogICAgIFtE
T01KSVRdIHJlYWRvbmx5IGF0dHJpYnV0ZSBVU1ZTdHJpbmc/IHVzdlN0cmluZ051bGxhYmxlQXR0
cjsKICAgICBbRE9NSklUXSByZWFkb25seSBhdHRyaWJ1dGUgTm9kZT8gbm9kZU51bGxhYmxlQXR0
cjsKKworICAgIFtET01KSVQ9UmVhZERPTV0gRE9NU3RyaW5nPyBnZXRBdHRyaWJ1dGUoRE9NU3Ry
aW5nIG5hbWUpOworICAgIFtET01KSVQ9UmVhZERPTV0gRE9NU3RyaW5nIGl0ZW0odW5zaWduZWQg
c2hvcnQgeCwgdW5zaWduZWQgc2hvcnQgeSk7CisgICAgW0RPTUpJVD1SZWFkRE9NXSBib29sZWFu
IGhhc0F0dHJpYnV0ZSgpOworICAgIFtET01KSVQ9UmVhZERPTV0gRWxlbWVudCBnZXRFbGVtZW50
QnlJZChbUmVxdWlyZXNFeGlzdGluZ0F0b21pY1N0cmluZ10gRE9NU3RyaW5nIGVsZW1lbnRJZCk7
CisgICAgW0RPTUpJVD1SZWFkRE9NXSBOb2RlTGlzdCBnZXRFbGVtZW50c0J5TmFtZShbQXRvbWlj
U3RyaW5nXSBET01TdHJpbmcgZWxlbWVudE5hbWUpOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9FbGVtZW50LmlkbCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmlkbApp
bmRleCA3MDU2MTczOGI5NzQ5YThkNzRhMGYxN2NhNjNhN2Y4ZmYxOTVlMWM2Li44MTk3NTE1NzU5
MTcwYjQxYjQzMzFkZmVmODYxZDEzZjEzOWNlZDUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vRWxlbWVudC5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaWRsCkBA
IC0yNiwyMCArMjYsMjAgQEAKIF0gaW50ZXJmYWNlIEVsZW1lbnQgOiBOb2RlIHsKICAgICByZWFk
b25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nPyB0YWdOYW1lOwogCi0gICAgRE9NU3RyaW5nPyBnZXRB
dHRyaWJ1dGUoRE9NU3RyaW5nIG5hbWUpOworICAgIFtET01KSVQ9UmVhZERPTV0gRE9NU3RyaW5n
PyBnZXRBdHRyaWJ1dGUoRE9NU3RyaW5nIG5hbWUpOwogCiAgICAgW0NFUmVhY3Rpb25zLCBNYXlU
aHJvd0V4Y2VwdGlvbl0gdm9pZCBzZXRBdHRyaWJ1dGUoRE9NU3RyaW5nIG5hbWUsIERPTVN0cmlu
ZyB2YWx1ZSk7CiAKICAgICBbQ0VSZWFjdGlvbnNdIHZvaWQgcmVtb3ZlQXR0cmlidXRlKERPTVN0
cmluZyBuYW1lKTsKLSAgICBBdHRyPyBnZXRBdHRyaWJ1dGVOb2RlKERPTVN0cmluZyBuYW1lKTsK
KyAgICBbRE9NSklUPVJlYWRET01dIEF0dHI/IGdldEF0dHJpYnV0ZU5vZGUoRE9NU3RyaW5nIG5h
bWUpOwogCiAgICAgW0NFUmVhY3Rpb25zLCBNYXlUaHJvd0V4Y2VwdGlvbl0gQXR0cj8gc2V0QXR0
cmlidXRlTm9kZShBdHRyIG5ld0F0dHIpOwogICAgIFtDRVJlYWN0aW9ucywgTWF5VGhyb3dFeGNl
cHRpb25dIEF0dHIgcmVtb3ZlQXR0cmlidXRlTm9kZShBdHRyIG9sZEF0dHIpOwogCi0gICAgSFRN
TENvbGxlY3Rpb24gZ2V0RWxlbWVudHNCeVRhZ05hbWUoRE9NU3RyaW5nIG5hbWUpOworICAgIFtE
T01KSVQ9UmVhZERPTV0gSFRNTENvbGxlY3Rpb24gZ2V0RWxlbWVudHNCeVRhZ05hbWUoRE9NU3Ry
aW5nIG5hbWUpOwogCiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIE5hbWVkTm9kZU1hcCBhdHRyaWJ1
dGVzOwotICAgIGJvb2xlYW4gaGFzQXR0cmlidXRlcygpOworICAgIFtET01KSVQ9UmVhZERPTV0g
Ym9vbGVhbiBoYXNBdHRyaWJ1dGVzKCk7CiAKICAgICBET01TdHJpbmc/IGdldEF0dHJpYnV0ZU5T
KERPTVN0cmluZz8gbmFtZXNwYWNlVVJJLCBET01TdHJpbmcgbG9jYWxOYW1lKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZG9taml0L0RPTUpJVEFic3RyYWN0SGVhcFJlcG9zaXRvcnku
Y3BwIGIvU291cmNlL1dlYkNvcmUvZG9taml0L0RPTUpJVEFic3RyYWN0SGVhcFJlcG9zaXRvcnku
Y3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4M2ZiYTg5NzEzYjg2NjNkNGQ4ZjI3
ZWRjYmY3NGFmZTYzMTgyZDMxLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbWppdC9ET01KSVRBYnN0cmFjdEhlYXBSZXBvc2l0
b3J5LmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDcwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVk
ZSAiRE9NSklUQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5oIgotCi0jaW5jbHVkZSA8ZG9taml0L0RP
TUpJVEFic3RyYWN0SGVhcC5oPgotI2luY2x1ZGUgPHd0Zi9EYXRhTG9nLmg+Ci0jaW5jbHVkZSA8
d3RmL05ldmVyRGVzdHJveWVkLmg+Ci0KLSNpZiBFTkFCTEUoSklUKQotCi1uYW1lc3BhY2UgV2Vi
Q29yZSB7IG5hbWVzcGFjZSBET01KSVQgewotCi1zdGF0aWMgY29uc3QgYm9vbCB2ZXJib3NlID0g
ZmFsc2U7Ci0KLUFic3RyYWN0SGVhcFJlcG9zaXRvcnk6OkFic3RyYWN0SGVhcFJlcG9zaXRvcnko
KQotewotICAgIEpTQzo6RE9NSklUOjpBYnN0cmFjdEhlYXAgRE9NSGVhcCgiRE9NIik7Ci0jZGVm
aW5lIERPTUpJVF9ERUZJTkVfSEVBUChuYW1lLCBwYXJlbnQpIEpTQzo6RE9NSklUOjpBYnN0cmFj
dEhlYXAgbmFtZSMjSGVhcCgjbmFtZSk7Ci0gICAgRE9NSklUX0FCU1RSQUNUX0hFQVBfTElTVChE
T01KSVRfREVGSU5FX0hFQVApCi0jdW5kZWYgRE9NSklUX0RFRklORV9IRUFQCi0KLSNkZWZpbmUg
RE9NSklUX0lOSVRJQUxJWkVfSEVBUChuYW1lLCBwYXJlbnQpIG5hbWUjI0hlYXAuc2V0UGFyZW50
KCZwYXJlbnQjI0hlYXApOwotICAgIERPTUpJVF9BQlNUUkFDVF9IRUFQX0xJU1QoRE9NSklUX0lO
SVRJQUxJWkVfSEVBUCkKLSN1bmRlZiBET01KSVRfSU5JVElBTElaRV9IRUFQCi0KLSAgICBET01I
ZWFwLmNvbXB1dGUoMCk7Ci0KLSNkZWZpbmUgRE9NSklUX0lOSVRJQUxJWkVfTUVNQkVSKG5hbWUs
IHBhcmVudCkgbmFtZSA9IG5hbWUjI0hlYXAucmFuZ2UoKTsKLSAgICBET01KSVRfQUJTVFJBQ1Rf
SEVBUF9MSVNUKERPTUpJVF9JTklUSUFMSVpFX01FTUJFUikKLSN1bmRlZiBET01KSVRfSU5JVElB
TElaRV9NRU1CRVIKLQotICAgIGlmICh2ZXJib3NlKSB7Ci0gICAgICAgIGRhdGFMb2coIkRPTUpJ
VCBIZWFwIFJlcG9zaXRvcnk6XG4iKTsKLSAgICAgICAgRE9NSGVhcC5kZWVwRHVtcChXVEY6OmRh
dGFGaWxlKCkpOwotICAgIH0KLX0KLQotY29uc3QgQWJzdHJhY3RIZWFwUmVwb3NpdG9yeSYgQWJz
dHJhY3RIZWFwUmVwb3NpdG9yeTo6c2hhcmVkKCkKLXsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95
ZWQ8QWJzdHJhY3RIZWFwUmVwb3NpdG9yeT4gcmVwb3NpdG9yeTsKLSAgICByZXR1cm4gcmVwb3Np
dG9yeS5nZXQoKTsKLX0KLQotfSB9Ci0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZG9taml0L0RPTUpJVEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaCBiL1NvdXJjZS9XZWJDb3Jl
L2RvbWppdC9ET01KSVRBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmgKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDgxOTBhMWE5NGJiYzc5ZGU1ZjJlM2JlZDA5OTgzNDc5ZmE0YmQ2NTYuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNv
cmUvZG9taml0L0RPTUpJVEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaAorKysgL2Rldi9udWxsCkBA
IC0xLDY2ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUg
bWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0g
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAq
LwotCi0jcHJhZ21hIG9uY2UKLQotI2luY2x1ZGUgPGRvbWppdC9ET01KSVRIZWFwUmFuZ2UuaD4K
LSNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KLSNpbmNsdWRlIDx3dGYvTm9uY29weWFi
bGUuaD4KLQotI2lmIEVOQUJMRShKSVQpCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsgbmFtZXNwYWNl
IERPTUpJVCB7Ci0KLS8vIERlc2NyaWJlIHlvdXIgYWJzdHJhY3QgaGVhcCBoaWVyYXJjaHkgaGVy
ZS4KLS8vIFYoQWJzdHJhY3RIZWFwTmFtZSwgUGFyZW50KQotI2RlZmluZSBET01KSVRfQUJTVFJB
Q1RfSEVBUF9MSVNUKFYpIFwKLSAgICBWKE5vZGUsIERPTSkgXAotICAgIFYoTm9kZV9maXJzdENo
aWxkLCBOb2RlKSBcCi0gICAgVihOb2RlX2xhc3RDaGlsZCwgTm9kZSkgXAotICAgIFYoTm9kZV9w
YXJlbnROb2RlLCBOb2RlKSBcCi0gICAgVihOb2RlX25leHRTaWJsaW5nLCBOb2RlKSBcCi0gICAg
VihOb2RlX3ByZXZpb3VzU2libGluZywgTm9kZSkgXAotICAgIFYoTm9kZV9vd25lckRvY3VtZW50
LCBOb2RlKSBcCi0gICAgVihEb2N1bWVudCwgRE9NKSBcCi0gICAgVihEb2N1bWVudF9kb2N1bWVu
dEVsZW1lbnQsIERvY3VtZW50KSBcCi0KLQotY2xhc3MgQWJzdHJhY3RIZWFwUmVwb3NpdG9yeSB7
Ci0gICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQWJzdHJhY3RIZWFwUmVwb3NpdG9yeSk7Ci1wdWJs
aWM6Ci0gICAgc3RhdGljIGNvbnN0IEFic3RyYWN0SGVhcFJlcG9zaXRvcnkmIHNoYXJlZCgpOwot
Ci0gICAgSlNDOjpET01KSVQ6OkhlYXBSYW5nZSBET007Ci0KLSNkZWZpbmUgRE9NSklUX0RFRklO
RV9NRU1CRVIobmFtZSwgcGFyZW50KSBKU0M6OkRPTUpJVDo6SGVhcFJhbmdlIG5hbWU7Ci0gICAg
RE9NSklUX0FCU1RSQUNUX0hFQVBfTElTVChET01KSVRfREVGSU5FX01FTUJFUikKLSN1bmRlZiBE
T01KSVRfREVGSU5FX01FTUJFUgotCi0gICAgQWJzdHJhY3RIZWFwUmVwb3NpdG9yeSgpOwotfTsK
LQotfSB9Ci0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9taml0L0RPTUpJ
VEFic3RyYWN0SGVhcFJlcG9zaXRvcnkueWFtbCBiL1NvdXJjZS9XZWJDb3JlL2RvbWppdC9ET01K
SVRBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LnlhbWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTJjNTg0NWUwNzg2NzBk
ZGRhYzk3NzI5OTljY2I4ZWE3ZDAxYmRmMwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2RvbWppdC9ET01KSVRBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LnlhbWwKQEAgLTAsMCArMSwx
MSBAQAorRE9NOgorICAgIFRyZWU6CisgICAgICAgIE5vZGU6CisgICAgICAgICAgICAtIE5vZGVf
Zmlyc3RDaGlsZAorICAgICAgICAgICAgLSBOb2RlX2xhc3RDaGlsZAorICAgICAgICAgICAgLSBO
b2RlX3BhcmVudE5vZGUKKyAgICAgICAgICAgIC0gTm9kZV9uZXh0U2libGluZworICAgICAgICAg
ICAgLSBOb2RlX3ByZXZpb3VzU2libGluZworICAgICAgICAgICAgLSBOb2RlX293bmVyRG9jdW1l
bnQKKyAgICAgICAgRG9jdW1lbnQ6CisgICAgICAgICAgICAtIERvY3VtZW50X2RvY3VtZW50RWxl
bWVudApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9taml0L0RPTUpJVElETENvbnZlcnQu
aCBiL1NvdXJjZS9XZWJDb3JlL2RvbWppdC9ET01KSVRJRExDb252ZXJ0LmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NWUwMGFiZmNjYjg3NmRlYTE4MzJmMWMyMGFlZTNlZDc4YjEzNjg0OQotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2RvbWppdC9ET01KSVRJRExDb252ZXJ0LmgKQEAgLTAsMCArMSw0
OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiSURMVHlwZXMuaCIK
KyNpbmNsdWRlIDxieXRlY29kZS9TcGVjdWxhdGVkVHlwZS5oPgorI2luY2x1ZGUgPGRvbWppdC9E
T01KSVRTaWduYXR1cmUuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeyBuYW1lc3BhY2UgRE9NSklU
IHsKKwordGVtcGxhdGU8dHlwZW5hbWUgSURMVHlwZT4KK3N0cnVjdCBEaXJlY3RDb252ZXJ0ZXI7
CisKK3RlbXBsYXRlPD4KK3N0cnVjdCBEaXJlY3RDb252ZXJ0ZXI8SURMRE9NU3RyaW5nPiB7Cisg
ICAgdGVtcGxhdGU8U3RyaW5nQ29udmVyc2lvbkNvbmZpZ3VyYXRpb24+CisgICAgc3RhdGljIFN0
cmluZyBkaXJlY3RDb252ZXJ0KEpTQzo6RXhlY1N0YXRlJiwgSlNDOjpKU1N0cmluZyopOworfTsK
KwordGVtcGxhdGU8PgoraW5saW5lIFN0cmluZyBEaXJlY3RDb252ZXJ0ZXI8SURMRE9NU3RyaW5n
Pjo6ZGlyZWN0Q29udmVydDxTdHJpbmdDb252ZXJzaW9uQ29uZmlndXJhdGlvbjo6Tm9ybWFsPihK
U0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIEpTQzo6SlNTdHJpbmcqIHN0cmluZykKK3sKKyAgICByZXR1
cm4gc3RyaW5nLT52YWx1ZSgmc3RhdGUpOworfQorCit9IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2RvbWppdC9ET01KSVRJRExUeXBlLmggYi9Tb3VyY2UvV2ViQ29yZS9kb21qaXQvRE9N
SklUSURMVHlwZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY4OTFmYmM1MGVmNGMyZDc2NTRkOGU1ZDJiYzhkZWFl
OTc2ZGYxYWMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb21qaXQvRE9NSklU
SURMVHlwZS5oCkBAIC0wLDAgKzEsNDcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKwor
I2luY2x1ZGUgIklETFR5cGVzLmgiCisjaW5jbHVkZSA8Ynl0ZWNvZGUvU3BlY3VsYXRlZFR5cGUu
aD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeyBuYW1lc3BhY2UgRE9NSklUIHsKKwordGVtcGxhdGU8
dHlwZW5hbWUgSURMVHlwZT4KK3N0cnVjdCBJRExKU0FyZ3VtZW50VHlwZVNlbGVjdDsKKwordGVt
cGxhdGU8PiBzdHJ1Y3QgSURMSlNBcmd1bWVudFR5cGVTZWxlY3Q8SURMQm9vbGVhbj4geyB0eXBl
ZGVmIGJvb2wgdHlwZTsgfTsKK3RlbXBsYXRlPD4gc3RydWN0IElETEpTQXJndW1lbnRUeXBlU2Vs
ZWN0PElETEJ5dGU+IHsgdHlwZWRlZiBpbnQzMl90IHR5cGU7IH07Cit0ZW1wbGF0ZTw+IHN0cnVj
dCBJRExKU0FyZ3VtZW50VHlwZVNlbGVjdDxJRExPY3RldD4geyB0eXBlZGVmIGludDMyX3QgdHlw
ZTsgfTsKK3RlbXBsYXRlPD4gc3RydWN0IElETEpTQXJndW1lbnRUeXBlU2VsZWN0PElETFNob3J0
PiB7IHR5cGVkZWYgaW50MzJfdCB0eXBlOyB9OwordGVtcGxhdGU8PiBzdHJ1Y3QgSURMSlNBcmd1
bWVudFR5cGVTZWxlY3Q8SURMVW5zaWduZWRTaG9ydD4geyB0eXBlZGVmIGludDMyX3QgdHlwZTsg
fTsKK3RlbXBsYXRlPD4gc3RydWN0IElETEpTQXJndW1lbnRUeXBlU2VsZWN0PElETExvbmc+IHsg
dHlwZWRlZiBpbnQzMl90IHR5cGU7IH07Cit0ZW1wbGF0ZTw+IHN0cnVjdCBJRExKU0FyZ3VtZW50
VHlwZVNlbGVjdDxJRExET01TdHJpbmc+IHsgdHlwZWRlZiBKU0M6OkpTU3RyaW5nKiB0eXBlOyB9
OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBJRExUeXBlPgordXNpbmcgSURMSlNBcmd1bWVudFR5cGUg
PSB0eXBlbmFtZSBJRExKU0FyZ3VtZW50VHlwZVNlbGVjdDxJRExUeXBlPjo6dHlwZTsKKworfSB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb21qaXQvRE9NSklUSURMVHlwZUZpbHRlci5o
IGIvU291cmNlL1dlYkNvcmUvZG9taml0L0RPTUpJVElETFR5cGVGaWx0ZXIuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li44YWY2MzZkZTliNmZlNDFjMzZjNzcwODcwMjQ2ZTg3YWJmZmI3ODAyCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYkNvcmUvZG9taml0L0RPTUpJVElETFR5cGVGaWx0ZXIuaApAQCAtMCww
ICsxLDcwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDxieXRlY29k
ZS9TcGVjdWxhdGVkVHlwZS5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7IG5hbWVzcGFjZSBET01K
SVQgeworCit0ZW1wbGF0ZTx0eXBlbmFtZSBJRExUeXBlPgorc3RydWN0IElETEFyZ3VtZW50VHlw
ZUZpbHRlclNlbGVjdDsKKwordGVtcGxhdGU8PiBzdHJ1Y3QgSURMQXJndW1lbnRUeXBlRmlsdGVy
U2VsZWN0PElETEJvb2xlYW4+IHsgc3RhdGljIGNvbnN0ZXhwciBKU0M6OlNwZWN1bGF0ZWRUeXBl
IHZhbHVlID0gSlNDOjpTcGVjQm9vbGVhbjsgfTsKK3RlbXBsYXRlPD4gc3RydWN0IElETEFyZ3Vt
ZW50VHlwZUZpbHRlclNlbGVjdDxJRExCeXRlPiB7IHN0YXRpYyBjb25zdGV4cHIgSlNDOjpTcGVj
dWxhdGVkVHlwZSB2YWx1ZSA9IEpTQzo6U3BlY0ludDMyT25seTsgfTsKK3RlbXBsYXRlPD4gc3Ry
dWN0IElETEFyZ3VtZW50VHlwZUZpbHRlclNlbGVjdDxJRExPY3RldD4geyBzdGF0aWMgY29uc3Rl
eHByIEpTQzo6U3BlY3VsYXRlZFR5cGUgdmFsdWUgPSBKU0M6OlNwZWNJbnQzMk9ubHk7IH07Cit0
ZW1wbGF0ZTw+IHN0cnVjdCBJRExBcmd1bWVudFR5cGVGaWx0ZXJTZWxlY3Q8SURMU2hvcnQ+IHsg
c3RhdGljIGNvbnN0ZXhwciBKU0M6OlNwZWN1bGF0ZWRUeXBlIHZhbHVlID0gSlNDOjpTcGVjSW50
MzJPbmx5OyB9OwordGVtcGxhdGU8PiBzdHJ1Y3QgSURMQXJndW1lbnRUeXBlRmlsdGVyU2VsZWN0
PElETFVuc2lnbmVkU2hvcnQ+IHsgc3RhdGljIGNvbnN0ZXhwciBKU0M6OlNwZWN1bGF0ZWRUeXBl
IHZhbHVlID0gSlNDOjpTcGVjSW50MzJPbmx5OyB9OwordGVtcGxhdGU8PiBzdHJ1Y3QgSURMQXJn
dW1lbnRUeXBlRmlsdGVyU2VsZWN0PElETExvbmc+IHsgc3RhdGljIGNvbnN0ZXhwciBKU0M6OlNw
ZWN1bGF0ZWRUeXBlIHZhbHVlID0gSlNDOjpTcGVjSW50MzJPbmx5OyB9OwordGVtcGxhdGU8PiBz
dHJ1Y3QgSURMQXJndW1lbnRUeXBlRmlsdGVyU2VsZWN0PElETERPTVN0cmluZz4geyBzdGF0aWMg
Y29uc3RleHByIEpTQzo6U3BlY3VsYXRlZFR5cGUgdmFsdWUgPSBKU0M6OlNwZWNTdHJpbmc7IH07
CisKK3RlbXBsYXRlPHR5cGVuYW1lIElETFR5cGU+Citjb25zdGV4cHIgSlNDOjpTcGVjdWxhdGVk
VHlwZSBJRExBcmd1bWVudFR5cGVGaWx0ZXIgPSBJRExBcmd1bWVudFR5cGVGaWx0ZXJTZWxlY3Q8
SURMVHlwZT46OnZhbHVlOworCit0ZW1wbGF0ZTx0eXBlbmFtZSBJRExUeXBlPgorY29uc3RleHBy
IEpTQzo6U3BlY3VsYXRlZFR5cGUgSURMUmVzdWx0VHlwZUZpbHRlciA9IEpTQzo6U3BlY0hlYXBU
b3A7CisKK3RlbXBsYXRlPD4gY29uc3RleHByIEpTQzo6U3BlY3VsYXRlZFR5cGUgSURMUmVzdWx0
VHlwZUZpbHRlcjxJRExBbnk+ID0gSlNDOjpTcGVjSGVhcFRvcDsKK3RlbXBsYXRlPD4gY29uc3Rl
eHByIEpTQzo6U3BlY3VsYXRlZFR5cGUgSURMUmVzdWx0VHlwZUZpbHRlcjxJRExCb29sZWFuPiA9
IEpTQzo6U3BlY0Jvb2xlYW47Cit0ZW1wbGF0ZTw+IGNvbnN0ZXhwciBKU0M6OlNwZWN1bGF0ZWRU
eXBlIElETFJlc3VsdFR5cGVGaWx0ZXI8SURMQnl0ZT4gPSBKU0M6OlNwZWNJbnQzMk9ubHk7Cit0
ZW1wbGF0ZTw+IGNvbnN0ZXhwciBKU0M6OlNwZWN1bGF0ZWRUeXBlIElETFJlc3VsdFR5cGVGaWx0
ZXI8SURMT2N0ZXQ+ID0gSlNDOjpTcGVjSW50MzJPbmx5OwordGVtcGxhdGU8PiBjb25zdGV4cHIg
SlNDOjpTcGVjdWxhdGVkVHlwZSBJRExSZXN1bHRUeXBlRmlsdGVyPElETFNob3J0PiA9IEpTQzo6
U3BlY0ludDMyT25seTsKK3RlbXBsYXRlPD4gY29uc3RleHByIEpTQzo6U3BlY3VsYXRlZFR5cGUg
SURMUmVzdWx0VHlwZUZpbHRlcjxJRExVbnNpZ25lZFNob3J0PiA9IEpTQzo6U3BlY0ludDMyT25s
eTsKK3RlbXBsYXRlPD4gY29uc3RleHByIEpTQzo6U3BlY3VsYXRlZFR5cGUgSURMUmVzdWx0VHlw
ZUZpbHRlcjxJRExMb25nPiA9IEpTQzo6U3BlY0ludDMyT25seTsKK3RlbXBsYXRlPD4gY29uc3Rl
eHByIEpTQzo6U3BlY3VsYXRlZFR5cGUgSURMUmVzdWx0VHlwZUZpbHRlcjxJRExVbnNpZ25lZExv
bmc+ID0gSlNDOjpTcGVjQnl0ZWNvZGVOdW1iZXI7Cit0ZW1wbGF0ZTw+IGNvbnN0ZXhwciBKU0M6
OlNwZWN1bGF0ZWRUeXBlIElETFJlc3VsdFR5cGVGaWx0ZXI8SURMTG9uZ0xvbmc+ID0gSlNDOjpT
cGVjQnl0ZWNvZGVOdW1iZXI7Cit0ZW1wbGF0ZTw+IGNvbnN0ZXhwciBKU0M6OlNwZWN1bGF0ZWRU
eXBlIElETFJlc3VsdFR5cGVGaWx0ZXI8SURMVW5zaWduZWRMb25nTG9uZz4gPSBKU0M6OlNwZWNC
eXRlY29kZU51bWJlcjsKK3RlbXBsYXRlPD4gY29uc3RleHByIEpTQzo6U3BlY3VsYXRlZFR5cGUg
SURMUmVzdWx0VHlwZUZpbHRlcjxJRExGbG9hdD4gPSBKU0M6OlNwZWNCeXRlY29kZU51bWJlcjsK
K3RlbXBsYXRlPD4gY29uc3RleHByIEpTQzo6U3BlY3VsYXRlZFR5cGUgSURMUmVzdWx0VHlwZUZp
bHRlcjxJRExVbnJlc3RyaWN0ZWRGbG9hdD4gPSBKU0M6OlNwZWNCeXRlY29kZU51bWJlcjsKK3Rl
bXBsYXRlPD4gY29uc3RleHByIEpTQzo6U3BlY3VsYXRlZFR5cGUgSURMUmVzdWx0VHlwZUZpbHRl
cjxJRExEb3VibGU+ID0gSlNDOjpTcGVjQnl0ZWNvZGVOdW1iZXI7Cit0ZW1wbGF0ZTw+IGNvbnN0
ZXhwciBKU0M6OlNwZWN1bGF0ZWRUeXBlIElETFJlc3VsdFR5cGVGaWx0ZXI8SURMVW5yZXN0cmlj
dGVkRG91YmxlPiA9IEpTQzo6U3BlY0J5dGVjb2RlTnVtYmVyOwordGVtcGxhdGU8PiBjb25zdGV4
cHIgSlNDOjpTcGVjdWxhdGVkVHlwZSBJRExSZXN1bHRUeXBlRmlsdGVyPElETERPTVN0cmluZz4g
PSBKU0M6OlNwZWNTdHJpbmc7Cit0ZW1wbGF0ZTw+IGNvbnN0ZXhwciBKU0M6OlNwZWN1bGF0ZWRU
eXBlIElETFJlc3VsdFR5cGVGaWx0ZXI8SURMQnl0ZVN0cmluZz4gPSBKU0M6OlNwZWNTdHJpbmc7
Cit0ZW1wbGF0ZTw+IGNvbnN0ZXhwciBKU0M6OlNwZWN1bGF0ZWRUeXBlIElETFJlc3VsdFR5cGVG
aWx0ZXI8SURMVVNWU3RyaW5nPiA9IEpTQzo6U3BlY1N0cmluZzsKKwordGVtcGxhdGU8dHlwZW5h
bWUgVD4KK2NvbnN0ZXhwciBKU0M6OlNwZWN1bGF0ZWRUeXBlIElETFJlc3VsdFR5cGVGaWx0ZXI8
SURMTnVsbGFibGU8VD4+ID0gSlNDOjpTcGVjT3RoZXIgfCBJRExSZXN1bHRUeXBlRmlsdGVyPFQ+
OworCit9IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbWppdC9KU0RvY3VtZW50RE9N
SklULmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbWppdC9KU0RvY3VtZW50RE9NSklULmNwcAppbmRl
eCA5YjQ4ZDlmZGE1OGE2MmQwN2ZiMjNhYWI0NTZiZjk0YjdlZDhmYzJmLi5iYmZlZTdkYzRiYjc4
MmU3M2NmMjdjOTc3YmMxODI5NGE1OTRiNmQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9k
b21qaXQvSlNEb2N1bWVudERPTUpJVC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9taml0L0pT
RG9jdW1lbnRET01KSVQuY3BwCkBAIC00OCw3ICs0OCw2IEBAIFJlZjxKU0M6OkRPTUpJVDo6UGF0
Y2hwb2ludD4gRG9jdW1lbnREb2N1bWVudEVsZW1lbnRET01KSVQ6OmNoZWNrRE9NKCkKIAogUmVm
PEpTQzo6RE9NSklUOjpDYWxsRE9NR2V0dGVyUGF0Y2hwb2ludD4gRG9jdW1lbnREb2N1bWVudEVs
ZW1lbnRET01KSVQ6OmNhbGxET01HZXR0ZXIoKQogewotICAgIGNvbnN0IGF1dG8mIGhlYXAgPSBE
T01KSVQ6OkFic3RyYWN0SGVhcFJlcG9zaXRvcnk6OnNoYXJlZCgpOwogICAgIFJlZjxKU0M6OkRP
TUpJVDo6Q2FsbERPTUdldHRlclBhdGNocG9pbnQ+IHBhdGNocG9pbnQgPSBKU0M6OkRPTUpJVDo6
Q2FsbERPTUdldHRlclBhdGNocG9pbnQ6OmNyZWF0ZSgpOwogICAgIHBhdGNocG9pbnQtPm51bUdQ
U2NyYXRjaFJlZ2lzdGVycyA9IDE7CiAgICAgcGF0Y2hwb2ludC0+c2V0R2VuZXJhdG9yKFs9XShD
Q2FsbEhlbHBlcnMmIGppdCwgSlNDOjpET01KSVQ6OlBhdGNocG9pbnRQYXJhbXMmIHBhcmFtcykg
ewpAQCAtNzAsNyArNjksNyBAQCBSZWY8SlNDOjpET01KSVQ6OkNhbGxET01HZXR0ZXJQYXRjaHBv
aW50PiBEb2N1bWVudERvY3VtZW50RWxlbWVudERPTUpJVDo6Y2FsbERPTQogCiAgICAgICAgIHJl
dHVybiBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0KCk7CiAgICAgfSk7Ci0gICAgcGF0Y2hwb2ludC0+
ZWZmZWN0ID0gSlNDOjpET01KSVQ6OkVmZmVjdDo6Zm9yRGVmKGhlYXAuRG9jdW1lbnRfZG9jdW1l
bnRFbGVtZW50KTsKKyAgICBwYXRjaHBvaW50LT5lZmZlY3QgPSBKU0M6OkRPTUpJVDo6RWZmZWN0
Ojpmb3JEZWYoRE9NSklUOjpBYnN0cmFjdEhlYXBSZXBvc2l0b3J5OjpEb2N1bWVudF9kb2N1bWVu
dEVsZW1lbnQpOwogICAgIHJldHVybiBwYXRjaHBvaW50OwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9kb21qaXQvSlNOb2RlRE9NSklULmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbWpp
dC9KU05vZGVET01KSVQuY3BwCmluZGV4IDFkNzkwMWVjNDFkN2FjZWYxZDBkNzhmNjEzMjZmYmU4
YTEzYTkxYmYuLmRiMzEwZWEzNDUyODQ5MTQyNDI4ZDNkNjE2ZjgxYjJjNjdjNTE2NTUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbWppdC9KU05vZGVET01KSVQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbWppdC9KU05vZGVET01KSVQuY3BwCkBAIC04Myw5ICs4Myw4IEBAIFJlZjxK
U0M6OkRPTUpJVDo6UGF0Y2hwb2ludD4gTm9kZUZpcnN0Q2hpbGRET01KSVQ6OmNoZWNrRE9NKCkK
IAogUmVmPEpTQzo6RE9NSklUOjpDYWxsRE9NR2V0dGVyUGF0Y2hwb2ludD4gTm9kZUZpcnN0Q2hp
bGRET01KSVQ6OmNhbGxET01HZXR0ZXIoKQogewotICAgIGNvbnN0IGF1dG8mIGhlYXAgPSBET01K
SVQ6OkFic3RyYWN0SGVhcFJlcG9zaXRvcnk6OnNoYXJlZCgpOwogICAgIGF1dG8gcGF0Y2hwb2lu
dCA9IGNyZWF0ZUNhbGxET01HZXR0ZXJGb3JPZmZzZXRBY2Nlc3M8Tm9kZT4oQ0FTVF9PRkZTRVQo
Tm9kZSosIENvbnRhaW5lck5vZGUqKSArIENvbnRhaW5lck5vZGU6OmZpcnN0Q2hpbGRNZW1vcnlP
ZmZzZXQoKSwgSXNDb250YWluZXJHdWFyZFJlcXVpcmVtZW50OjpSZXF1aXJlZCk7Ci0gICAgcGF0
Y2hwb2ludC0+ZWZmZWN0ID0gSlNDOjpET01KSVQ6OkVmZmVjdDo6Zm9yRGVmKGhlYXAuTm9kZV9m
aXJzdENoaWxkKTsKKyAgICBwYXRjaHBvaW50LT5lZmZlY3QgPSBKU0M6OkRPTUpJVDo6RWZmZWN0
Ojpmb3JEZWYoRE9NSklUOjpBYnN0cmFjdEhlYXBSZXBvc2l0b3J5OjpOb2RlX2ZpcnN0Q2hpbGQp
OwogICAgIHJldHVybiBwYXRjaHBvaW50OwogfQogCkBAIC05Niw5ICs5NSw4IEBAIFJlZjxKU0M6
OkRPTUpJVDo6UGF0Y2hwb2ludD4gTm9kZUxhc3RDaGlsZERPTUpJVDo6Y2hlY2tET00oKQogCiBS
ZWY8SlNDOjpET01KSVQ6OkNhbGxET01HZXR0ZXJQYXRjaHBvaW50PiBOb2RlTGFzdENoaWxkRE9N
SklUOjpjYWxsRE9NR2V0dGVyKCkKIHsKLSAgICBjb25zdCBhdXRvJiBoZWFwID0gRE9NSklUOjpB
YnN0cmFjdEhlYXBSZXBvc2l0b3J5OjpzaGFyZWQoKTsKICAgICBhdXRvIHBhdGNocG9pbnQgPSBj
cmVhdGVDYWxsRE9NR2V0dGVyRm9yT2Zmc2V0QWNjZXNzPE5vZGU+KENBU1RfT0ZGU0VUKE5vZGUq
LCBDb250YWluZXJOb2RlKikgKyBDb250YWluZXJOb2RlOjpsYXN0Q2hpbGRNZW1vcnlPZmZzZXQo
KSwgSXNDb250YWluZXJHdWFyZFJlcXVpcmVtZW50OjpSZXF1aXJlZCk7Ci0gICAgcGF0Y2hwb2lu
dC0+ZWZmZWN0ID0gSlNDOjpET01KSVQ6OkVmZmVjdDo6Zm9yRGVmKGhlYXAuTm9kZV9sYXN0Q2hp
bGQpOworICAgIHBhdGNocG9pbnQtPmVmZmVjdCA9IEpTQzo6RE9NSklUOjpFZmZlY3Q6OmZvckRl
ZihET01KSVQ6OkFic3RyYWN0SGVhcFJlcG9zaXRvcnk6Ok5vZGVfbGFzdENoaWxkKTsKICAgICBy
ZXR1cm4gcGF0Y2hwb2ludDsKIH0KIApAQCAtMTA5LDkgKzEwNyw4IEBAIFJlZjxKU0M6OkRPTUpJ
VDo6UGF0Y2hwb2ludD4gTm9kZU5leHRTaWJsaW5nRE9NSklUOjpjaGVja0RPTSgpCiAKIFJlZjxK
U0M6OkRPTUpJVDo6Q2FsbERPTUdldHRlclBhdGNocG9pbnQ+IE5vZGVOZXh0U2libGluZ0RPTUpJ
VDo6Y2FsbERPTUdldHRlcigpCiB7Ci0gICAgY29uc3QgYXV0byYgaGVhcCA9IERPTUpJVDo6QWJz
dHJhY3RIZWFwUmVwb3NpdG9yeTo6c2hhcmVkKCk7CiAgICAgYXV0byBwYXRjaHBvaW50ID0gY3Jl
YXRlQ2FsbERPTUdldHRlckZvck9mZnNldEFjY2VzczxOb2RlPihOb2RlOjpuZXh0U2libGluZ01l
bW9yeU9mZnNldCgpLCBJc0NvbnRhaW5lckd1YXJkUmVxdWlyZW1lbnQ6Ok5vdFJlcXVpcmVkKTsK
LSAgICBwYXRjaHBvaW50LT5lZmZlY3QgPSBKU0M6OkRPTUpJVDo6RWZmZWN0Ojpmb3JEZWYoaGVh
cC5Ob2RlX25leHRTaWJsaW5nKTsKKyAgICBwYXRjaHBvaW50LT5lZmZlY3QgPSBKU0M6OkRPTUpJ
VDo6RWZmZWN0Ojpmb3JEZWYoRE9NSklUOjpBYnN0cmFjdEhlYXBSZXBvc2l0b3J5OjpOb2RlX25l
eHRTaWJsaW5nKTsKICAgICByZXR1cm4gcGF0Y2hwb2ludDsKIH0KIApAQCAtMTIyLDkgKzExOSw4
IEBAIFJlZjxKU0M6OkRPTUpJVDo6UGF0Y2hwb2ludD4gTm9kZVByZXZpb3VzU2libGluZ0RPTUpJ
VDo6Y2hlY2tET00oKQogCiBSZWY8SlNDOjpET01KSVQ6OkNhbGxET01HZXR0ZXJQYXRjaHBvaW50
PiBOb2RlUHJldmlvdXNTaWJsaW5nRE9NSklUOjpjYWxsRE9NR2V0dGVyKCkKIHsKLSAgICBjb25z
dCBhdXRvJiBoZWFwID0gRE9NSklUOjpBYnN0cmFjdEhlYXBSZXBvc2l0b3J5OjpzaGFyZWQoKTsK
ICAgICBhdXRvIHBhdGNocG9pbnQgPSBjcmVhdGVDYWxsRE9NR2V0dGVyRm9yT2Zmc2V0QWNjZXNz
PE5vZGU+KE5vZGU6OnByZXZpb3VzU2libGluZ01lbW9yeU9mZnNldCgpLCBJc0NvbnRhaW5lckd1
YXJkUmVxdWlyZW1lbnQ6Ok5vdFJlcXVpcmVkKTsKLSAgICBwYXRjaHBvaW50LT5lZmZlY3QgPSBK
U0M6OkRPTUpJVDo6RWZmZWN0Ojpmb3JEZWYoaGVhcC5Ob2RlX3ByZXZpb3VzU2libGluZyk7Cisg
ICAgcGF0Y2hwb2ludC0+ZWZmZWN0ID0gSlNDOjpET01KSVQ6OkVmZmVjdDo6Zm9yRGVmKERPTUpJ
VDo6QWJzdHJhY3RIZWFwUmVwb3NpdG9yeTo6Tm9kZV9wcmV2aW91c1NpYmxpbmcpOwogICAgIHJl
dHVybiBwYXRjaHBvaW50OwogfQogCkBAIC0xMzUsOSArMTMxLDggQEAgUmVmPEpTQzo6RE9NSklU
OjpQYXRjaHBvaW50PiBOb2RlUGFyZW50Tm9kZURPTUpJVDo6Y2hlY2tET00oKQogCiBSZWY8SlND
OjpET01KSVQ6OkNhbGxET01HZXR0ZXJQYXRjaHBvaW50PiBOb2RlUGFyZW50Tm9kZURPTUpJVDo6
Y2FsbERPTUdldHRlcigpCiB7Ci0gICAgY29uc3QgYXV0byYgaGVhcCA9IERPTUpJVDo6QWJzdHJh
Y3RIZWFwUmVwb3NpdG9yeTo6c2hhcmVkKCk7CiAgICAgYXV0byBwYXRjaHBvaW50ID0gY3JlYXRl
Q2FsbERPTUdldHRlckZvck9mZnNldEFjY2VzczxDb250YWluZXJOb2RlPihOb2RlOjpwYXJlbnRO
b2RlTWVtb3J5T2Zmc2V0KCksIElzQ29udGFpbmVyR3VhcmRSZXF1aXJlbWVudDo6Tm90UmVxdWly
ZWQpOwotICAgIHBhdGNocG9pbnQtPmVmZmVjdCA9IEpTQzo6RE9NSklUOjpFZmZlY3Q6OmZvckRl
ZihoZWFwLk5vZGVfcGFyZW50Tm9kZSk7CisgICAgcGF0Y2hwb2ludC0+ZWZmZWN0ID0gSlNDOjpE
T01KSVQ6OkVmZmVjdDo6Zm9yRGVmKERPTUpJVDo6QWJzdHJhY3RIZWFwUmVwb3NpdG9yeTo6Tm9k
ZV9wYXJlbnROb2RlKTsKICAgICByZXR1cm4gcGF0Y2hwb2ludDsKIH0KIApAQCAtMTY5LDcgKzE2
NCw2IEBAIFJlZjxKU0M6OkRPTUpJVDo6UGF0Y2hwb2ludD4gTm9kZU93bmVyRG9jdW1lbnRET01K
SVQ6OmNoZWNrRE9NKCkKIAogUmVmPEpTQzo6RE9NSklUOjpDYWxsRE9NR2V0dGVyUGF0Y2hwb2lu
dD4gTm9kZU93bmVyRG9jdW1lbnRET01KSVQ6OmNhbGxET01HZXR0ZXIoKQogewotICAgIGNvbnN0
IGF1dG8mIGhlYXAgPSBET01KSVQ6OkFic3RyYWN0SGVhcFJlcG9zaXRvcnk6OnNoYXJlZCgpOwog
ICAgIFJlZjxKU0M6OkRPTUpJVDo6Q2FsbERPTUdldHRlclBhdGNocG9pbnQ+IHBhdGNocG9pbnQg
PSBKU0M6OkRPTUpJVDo6Q2FsbERPTUdldHRlclBhdGNocG9pbnQ6OmNyZWF0ZSgpOwogICAgIHBh
dGNocG9pbnQtPm51bUdQU2NyYXRjaFJlZ2lzdGVycyA9IDE7CiAgICAgcGF0Y2hwb2ludC0+c2V0
R2VuZXJhdG9yKFs9XShDQ2FsbEhlbHBlcnMmIGppdCwgSlNDOjpET01KSVQ6OlBhdGNocG9pbnRQ
YXJhbXMmIHBhcmFtcykgewpAQCAtMTkxLDcgKzE4NSw3IEBAIFJlZjxKU0M6OkRPTUpJVDo6Q2Fs
bERPTUdldHRlclBhdGNocG9pbnQ+IE5vZGVPd25lckRvY3VtZW50RE9NSklUOjpjYWxsRE9NR2V0
dGVyCiAgICAgICAgIGRvbmUubGluaygmaml0KTsKICAgICAgICAgcmV0dXJuIENDYWxsSGVscGVy
czo6SnVtcExpc3QoKTsKICAgICB9KTsKLSAgICBwYXRjaHBvaW50LT5lZmZlY3QgPSBKU0M6OkRP
TUpJVDo6RWZmZWN0Ojpmb3JEZWYoaGVhcC5Ob2RlX293bmVyRG9jdW1lbnQpOworICAgIHBhdGNo
cG9pbnQtPmVmZmVjdCA9IEpTQzo6RE9NSklUOjpFZmZlY3Q6OmZvckRlZihET01KSVQ6OkFic3Ry
YWN0SGVhcFJlcG9zaXRvcnk6Ok5vZGVfb3duZXJEb2N1bWVudCk7CiAgICAgcmV0dXJuIHBhdGNo
cG9pbnQ7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbWppdC9nZW5lcmF0ZS1h
YnN0cmFjdC1oZWFwLnJiIGIvU291cmNlL1dlYkNvcmUvZG9taml0L2dlbmVyYXRlLWFic3RyYWN0
LWhlYXAucmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uYjc0MTJlODVkNjlmNDkxYTJlYWFiYWE2MTc4ZjFiMjVhMDJk
MDliNAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbWppdC9nZW5lcmF0ZS1h
YnN0cmFjdC1oZWFwLnJiCkBAIC0wLDAgKzEsMTY1IEBACisjIS91c3IvYmluL2VudiBydWJ5Cisj
IC0qLSBjb2Rpbmc6IHV0Zi04IC0qLQorIyBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBt
ZXQ6CisjIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisjIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
IyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisjIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworIyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisjIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisjIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworIyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorIyBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorIyBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisjIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKworcmVxdWlyZSAieWFtbCIKKworY2xhc3MgSGVhcFJhbmdlCisgICAgYXR0cl9yZWFkZXIg
OmZpcnN0LCA6bGFzdAorICAgIGRlZiBpbml0aWFsaXplKGZpcnN0LCBsYXN0KQorICAgICAgICBA
Zmlyc3QgPSBmaXJzdAorICAgICAgICBAbGFzdCA9IGxhc3QKKyAgICBlbmQKK2VuZAorCitjbGFz
cyBBYnN0cmFjdEhlYXAKKyAgICBhdHRyX3JlYWRlciA6cmFuZ2UsIDpuYW1lLCA6cGFyZW50Cisg
ICAgZGVmIGluaXRpYWxpemUobmFtZSwgdHJlZSkKKyAgICAgICAgQG5hbWUgPSBuYW1lCisgICAg
ICAgIEBwYXJlbnQgPSBuaWwKKyAgICAgICAgaWYgdHJlZS5uaWw/CisgICAgICAgICAgICBAY2hp
bGRyZW4gPSBbXQorICAgICAgICBlbHNlCisgICAgICAgICAgICBAY2hpbGRyZW4gPSB0cmVlLm1h
cCB7fGtleSwgdmFsdWV8IEFic3RyYWN0SGVhcC5uZXcoa2V5LCB2YWx1ZSkgfQorICAgICAgICBl
bmQKKyAgICAgICAgQHJhbmdlID0gbmlsCisgICAgZW5kCisKKyAgICBkZWYgc2V0UGFyZW50KHBh
cmVudCkKKyAgICAgICAgcGFyZW50LmNoaWxkcmVuLnB1c2goc2VsZikKKyAgICAgICAgQHBhcmVu
dCA9IHBhcmVudAorICAgIGVuZAorCisgICAgZGVmIGNvbXB1dGUoc3RhcnQpCisgICAgICAgIGN1
cnJlbnQgPSBzdGFydAorICAgICAgICBpZiBAY2hpbGRyZW4uZW1wdHk/CisgICAgICAgICAgICBA
cmFuZ2UgPSBIZWFwUmFuZ2UubmV3KHN0YXJ0LCBjdXJyZW50ICsgMSkKKyAgICAgICAgICAgIHJl
dHVybgorICAgICAgICBlbmQKKworICAgICAgICBAY2hpbGRyZW4uZWFjaCB7fGNoaWxkfAorICAg
ICAgICAgICAgY2hpbGQuY29tcHV0ZShjdXJyZW50KQorICAgICAgICAgICAgY3VycmVudCA9IGNo
aWxkLnJhbmdlLmxhc3QKKyAgICAgICAgfQorCisgICAgICAgIEByYW5nZSA9IEhlYXBSYW5nZS5u
ZXcoc3RhcnQsIGN1cnJlbnQpCisgICAgZW5kCisKKyAgICBkZWYgZHVtcCBvdXRwdXQKKyAgICAg
ICAgc2hhbGxvd0R1bXAob3V0cHV0KQorICAgICAgICBpZiBAcGFyZW50CisgICAgICAgICAgICBv
dXRwdXQucHJpbnQgIi0+ICIKKyAgICAgICAgICAgIEBwYXJlbnQuZHVtcChvdXRwdXQpCisgICAg
ICAgIGVuZAorICAgIGVuZAorCisgICAgZGVmIHNoYWxsb3dEdW1wKG91dHB1dCkKKyAgICAgICAg
b3V0cHV0LnByaW50ICIje0BuYW1lfTwje0ByYW5nZS5maXJzdH0sI3tAcmFuZ2UubGFzdH0+Igor
ICAgIGVuZAorCisgICAgZGVmIGRlZXBEdW1wIG91dHB1dCwgaW5kZW50CisgICAgICAgIHByaW50
SW5kZW50KG91dHB1dCwgaW5kZW50KQorICAgICAgICBzaGFsbG93RHVtcChvdXRwdXQpCisgICAg
ICAgIGlmIEBjaGlsZHJlbi5lbXB0eT8KKyAgICAgICAgICAgIG91dHB1dC5wcmludCAiXG4iCisg
ICAgICAgICAgICByZXR1cm4KKyAgICAgICAgZW5kCisKKyAgICAgICAgb3V0cHV0LnByaW50ICI6
XG4iCisgICAgICAgIEBjaGlsZHJlbi5lYWNoIHt8Y2hpbGR8CisgICAgICAgICAgICBjaGlsZC5k
ZWVwRHVtcChvdXRwdXQsIGluZGVudCArIDEpCisgICAgICAgIH0KKyAgICBlbmQKKworICAgIGRl
ZiBnZW5lcmF0ZSBvdXRwdXQKKyAgICAgICAgb3V0cHV0LnB1dHMgImNvbnN0ZXhwciBKU0M6OkRP
TUpJVDo6SGVhcFJhbmdlICN7QG5hbWV9KEpTQzo6RE9NSklUOjpIZWFwUmFuZ2U6OkNvbnN0RXhw
ciwgI3tAcmFuZ2UuZmlyc3R9LCAje0ByYW5nZS5sYXN0fSk7IgorICAgICAgICBAY2hpbGRyZW4u
ZWFjaCB7fGNoaWxkfAorICAgICAgICAgICAgY2hpbGQuZ2VuZXJhdGUob3V0cHV0KQorICAgICAg
ICB9CisgICAgZW5kCisKK3ByaXZhdGUKKyAgICBkZWYgcHJpbnRJbmRlbnQgb3V0cHV0LCBpbmRl
bnQKKyAgICAgICAgaW5kZW50LnRpbWVzIHsKKyAgICAgICAgICAgIG91dHB1dC5wcmludCAiICAg
ICIKKyAgICAgICAgfQorICAgIGVuZAorZW5kCisKK2hlYWRlciA9IDw8LUVPUworLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
CisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisvLyBBdXRvLWdlbmVyYXRlZCBmaWxl
LiBEbyBub3QgbW9kaWZ5LgorCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPGRvbWppdC9ET01K
SVRIZWFwUmFuZ2UuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeyBuYW1lc3BhY2UgRE9NSklUIHsg
bmFtZXNwYWNlIEFic3RyYWN0SGVhcFJlcG9zaXRvcnkgeworRU9TCisKK2Zvb3RlciA9IDw8LUVP
UworfSB9IH0KK0VPUworCiskaW5wdXRGaWxlTmFtZSA9IEFSR1Yuc2hpZnQKKyRvdXRwdXRGaWxl
TmFtZSA9IEFSR1Yuc2hpZnQKK0ZpbGUub3Blbigkb3V0cHV0RmlsZU5hbWUsICJ3Iikge3xvdXRw
dXR8CisgICAgRmlsZS5vcGVuKCRpbnB1dEZpbGVOYW1lLCAicmIiKSB7fGZpbGV8CisgICAgICAg
IHRyZWUgPSBZQU1MOjpsb2FkKGZpbGUucmVhZCgpKQorICAgICAgICBoZWFwID0gdHJlZS5tYXAg
e3xrZXksIHZhbHVlfAorICAgICAgICAgICAgQWJzdHJhY3RIZWFwLm5ldyhrZXksIHZhbHVlKQor
ICAgICAgICB9LmZpcnN0CisgICAgICAgIGhlYXAuY29tcHV0ZSgwKQorCisgICAgICAgIG91dHB1
dC5wcmludChoZWFkZXIpCisgICAgICAgIG91dHB1dC5wdXRzKCIvKiBET01KSVQgQWJzdHJhY3Qg
SGVhcCBUcmVlLiIpCisgICAgICAgIGhlYXAuZGVlcER1bXAob3V0cHV0LCAwKQorICAgICAgICBv
dXRwdXQucHV0cygiKi8iKQorICAgICAgICBoZWFwLmdlbmVyYXRlKG91dHB1dCkKKyAgICAgICAg
b3V0cHV0LnByaW50KGZvb3RlcikKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggODhkMDY0NjQ4Yjg3MmQ4MzJh
YWJlZjAwM2E1MWNlMGI5OTJkOWYwYi4uMGQzZjk5NDhkYTc2Y2M5NjBhYzhkNzNiNTNiNzY4MjBk
NzY1MzlhNyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRl
c3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDE2LTExLTAyICBZdXN1a2UgU3V6dWtp
ICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgorCisgICAgICAgIFtET01KSVRdIEFkZCBET01KSVQ6
OlNpZ25hdHVyZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTYyOTgwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2FhbSBCYXJhdGkuCisKKyAgICAgICAg
KiBqcy9kb20vZG9taml0LWFjY2Vzc29yLWxpY20uaHRtbDoKKyAgICAgICAgKiBqcy9kb20vZG9t
aml0LWZ1bmN0aW9uLWVmZmVjdC1zaG91bGQtb3ZlcmxhcC13aXRoLWNhbGwtZXhwZWN0ZWQudHh0
OiBBZGRlZC4KKyAgICAgICAgKiBqcy9kb20vZG9taml0LWZ1bmN0aW9uLWVmZmVjdC1zaG91bGQt
b3ZlcmxhcC13aXRoLWNhbGwuaHRtbDogQWRkZWQuCisgICAgICAgICoganMvZG9tL2RvbWppdC1m
dW5jdGlvbi1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGpzL2RvbS9kb21qaXQtZnVu
Y3Rpb24tbGljbS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGpzL2RvbS9kb21qaXQt
ZnVuY3Rpb24tbGljbS5odG1sOiBDb3BpZWQgZnJvbSBMYXlvdXRUZXN0cy9qcy9kb20vZG9taml0
LWFjY2Vzc29yLWxpY20uaHRtbC4KKyAgICAgICAgKiBqcy9kb20vZG9taml0LWZ1bmN0aW9uLXR5
cGUtY29udHJhZGljdGlvbi1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGpzL2RvbS9k
b21qaXQtZnVuY3Rpb24tdHlwZS1jb250cmFkaWN0aW9uLmh0bWw6IENvcGllZCBmcm9tIExheW91
dFRlc3RzL2pzL2RvbS9kb21qaXQtYWNjZXNzb3ItbGljbS5odG1sLgorICAgICAgICAqIGpzL2Rv
bS9kb21qaXQtZnVuY3Rpb24tdHlwZS1mYWlsdXJlLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAg
ICAgICoganMvZG9tL2RvbWppdC1mdW5jdGlvbi10eXBlLWZhaWx1cmUuaHRtbDogQ29waWVkIGZy
b20gTGF5b3V0VGVzdHMvanMvZG9tL2RvbWppdC1hY2Nlc3Nvci1saWNtLmh0bWwuCisgICAgICAg
ICoganMvZG9tL2RvbWppdC1mdW5jdGlvbi5odG1sOiBBZGRlZC4KKwogMjAxNi0xMS0wMiAgTXls
ZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgogCiAgICAgICAgIFtpT1NdIFtX
ZWJHTF0gTXVsdGlzYW1wbGUgcmVzb2x2ZSBzdGVwIG1heSBvcGVyYXRlIG9uIHN0YWxlIGRhdGEK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL2RvbS9kb21qaXQtYWNjZXNzb3ItbGljbS5odG1s
IGIvTGF5b3V0VGVzdHMvanMvZG9tL2RvbWppdC1hY2Nlc3Nvci1saWNtLmh0bWwKaW5kZXggZTU2
M2ViYTg5ZmZjZGEyOTFiNTI0ZGNkZjc1MGUyYTMwNmFlMzIwNS4uNDBkNTU2MGRhMDUzOWNiZjA4
NGE5ZTFkMWVmM2ZlM2YxZGMzNTQ0ZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvanMvZG9tL2Rv
bWppdC1hY2Nlc3Nvci1saWNtLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvanMvZG9tL2RvbWppdC1h
Y2Nlc3Nvci1saWNtLmh0bWwKQEAgLTEsMTQgKzEsMyBAQAotPCFET0NUWVBFIEhUTUw+Ci08aHRt
bCBsYW5nPSJlbiI+Ci08aGVhZD4KLTxtZXRhIGNoYXJzZXQ9IlVURi04Ij4KLTwvaGVhZD4KLTxi
b2R5PgotPHNjcmlwdD4KLQotPC9zY3JpcHQ+Ci08L2JvZHk+Ci08L2h0bWw+CiA8IURPQ1RZUEUg
aHRtbD4KIDxodG1sPgogPGhlYWQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9kb20vZG9t
aml0LWZ1bmN0aW9uLWVmZmVjdC1zaG91bGQtb3ZlcmxhcC13aXRoLWNhbGwtZXhwZWN0ZWQudHh0
IGIvTGF5b3V0VGVzdHMvanMvZG9tL2RvbWppdC1mdW5jdGlvbi1lZmZlY3Qtc2hvdWxkLW92ZXJs
YXAtd2l0aC1jYWxsLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xMWRjMTk2YTMyZTI4OGMxMmY1
MTQ1NjFjZmMyMTRkMjllYjljODE3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMv
ZG9tL2RvbWppdC1mdW5jdGlvbi1lZmZlY3Qtc2hvdWxkLW92ZXJsYXAtd2l0aC1jYWxsLWV4cGVj
dGVkLnR4dApAQCAtMCwwICsxLDEwIEBACitUZXN0IGZ1bmN0aW9uIGNhbGxzIHNob3VsZCBvdmVy
bGFwIHdpdGggZWZmZWN0cyBvZiBET01KSVQgZnVuY3Rpb25zLgorCitPbiBzdWNjZXNzLCB5b3Ug
d2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBD
T01QTEVURSIuCisKKworUEFTUyB0ZXN0KCkgaXMgdHJ1ZQorUEFTUyBzdWNjZXNzZnVsbHlQYXJz
ZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pz
L2RvbS9kb21qaXQtZnVuY3Rpb24tZWZmZWN0LXNob3VsZC1vdmVybGFwLXdpdGgtY2FsbC5odG1s
IGIvTGF5b3V0VGVzdHMvanMvZG9tL2RvbWppdC1mdW5jdGlvbi1lZmZlY3Qtc2hvdWxkLW92ZXJs
YXAtd2l0aC1jYWxsLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjhjYjM5MmIyOTQxYmJiOGQzMzFhNzkzMzFk
NThjM2ZhNTgzMDVlNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2pzL2RvbS9kb21q
aXQtZnVuY3Rpb24tZWZmZWN0LXNob3VsZC1vdmVybGFwLXdpdGgtY2FsbC5odG1sCkBAIC0wLDAg
KzEsMzMgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIu
Li8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+
Cis8ZGl2IGlkPSJ0YXJnZXQiPjwvZGl2PgorPC9kaXY+CisKKzxzY3JpcHQ+CitkZXNjcmlwdGlv
bignVGVzdCBmdW5jdGlvbiBjYWxscyBzaG91bGQgb3ZlcmxhcCB3aXRoIGVmZmVjdHMgb2YgRE9N
SklUIGZ1bmN0aW9ucy4nKTsKKworZnVuY3Rpb24gdGVzdCgpCit7CisgICAgdmFyIHRhcmdldCA9
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0YXJnZXQnKTsKKyAgICB0YXJnZXQuc2V0QXR0cmli
dXRlKCJjb2NvYSIsICIwIik7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxZTQ7ICsraSkgewor
ICAgICAgICB2YXIgcmV0ID0gdGFyZ2V0LmdldEF0dHJpYnV0ZSgiY29jb2EiKTsKKyAgICAgICAg
aWYgKHJldCAhPT0gU3RyaW5nKGkpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAg
ICB0YXJnZXQuc2V0QXR0cmlidXRlKCJjb2NvYSIsIFN0cmluZyhpICsgMSkpOworICAgICAgICB2
YXIgcmV0ID0gdGFyZ2V0LmdldEF0dHJpYnV0ZSgiY29jb2EiKTsKKyAgICAgICAgaWYgKHJldCA9
PT0gU3RyaW5nKGkpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICByZXR1
cm4gdHJ1ZTsKK30KKworc2hvdWxkQmVUcnVlKGB0ZXN0KClgKTsKKzwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5
PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvZG9tL2RvbWppdC1mdW5jdGlv
bi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9qcy9kb20vZG9taml0LWZ1bmN0aW9uLWV4cGVj
dGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi40NWU1NmViZGNkOWY2ZjE4NmM0N2NlNzY4YzE1YzIyNWViZTJk
MGM3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMvZG9tL2RvbWppdC1mdW5jdGlv
bi1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMCBAQAorVGVzdCBET01KSVQgZnVuY3Rpb25zIHdv
cmsuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2Fn
ZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIEFsbCB0ZXN0cyBwYXNz
ZWQuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvZG9tL2RvbWppdC1mdW5jdGlvbi1saWNtLWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL2pzL2RvbS9kb21qaXQtZnVuY3Rpb24tbGljbS1leHBlY3Rl
ZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uZjEzYzAzMzA1OTY2MmU1NThiYzZmYjlkNzM5YWIzN2U3OTYxYzhm
YgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2pzL2RvbS9kb21qaXQtZnVuY3Rpb24t
bGljbS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw4IEBACitUZXN0IERPTUpJVCBmdW5jdGlvbiB3
aWxsIGJlIExJQ00tZWQuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAi
UEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworUEFTUyBzdWNj
ZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2pzL2RvbS9kb21qaXQtZnVuY3Rpb24tbGljbS5odG1sIGIvTGF5b3V0VGVzdHMv
anMvZG9tL2RvbWppdC1mdW5jdGlvbi1saWNtLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWYyZTM5OWRkMzU5
ZTFjNGZjYjRkZmRlMmJhY2U5ZTFhMGQ0NGQzOQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2pzL2RvbS9kb21qaXQtZnVuY3Rpb24tbGljbS5odG1sCkBAIC0wLDAgKzEsMzUgQEAKKzwh
RE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJj
ZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJk
ZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKworPGRpdiBpZD0i
cGFyZW50Tm9kZSI+Cis8ZGl2IGlkPSJwcmV2aW91c1NpYmxpbmciPjwvZGl2PjxkaXYgaWQ9InRh
cmdldCI+PGRpdiBpZD0iZmlyc3RDaGlsZCI+PC9kaXY+PGRpdiBpZD0ibGFzdENoaWxkIj48L2Rp
dj48L2Rpdj48ZGl2IGlkPSJuZXh0U2libGluZyI+PC9kaXY+Cis8L2Rpdj4KKworPHNjcmlwdD4K
K2Rlc2NyaXB0aW9uKCdUZXN0IERPTUpJVCBmdW5jdGlvbiB3aWxsIGJlIExJQ00tZWQuJyk7CisK
K2Z1bmN0aW9uIHRlc3QoKSB7CisgICAgdmFyIGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo
J2RpdicpOworICAgIHZhciByZXQgPSAiaW52YWxpZCI7CisgICAgZGl2LnNldEF0dHJpYnV0ZSgi
Y29jb2EiLCAiQ29jb2EiKTsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IDFlNDsgKytpKQorICAg
ICAgICByZXQgPSBkaXYuZ2V0QXR0cmlidXRlKCJjb2NvYSIpOworICAgIHJldHVybiByZXQ7Cit9
Cit2YXIgcmVzdWx0OworKGZ1bmN0aW9uICgpIHsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IDEw
MDsgKytpKSB7CisgICAgICAgIHJlc3VsdCA9IHRlc3QoKTsKKyAgICAgICAgc2hvdWxkQmUoYHJl
c3VsdGAsIGAiQ29jb2EiYCwgdHJ1ZSk7CisgICAgfQorfSgpKTsKKzwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5
PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvZG9tL2RvbWppdC1mdW5jdGlv
bi10eXBlLWNvbnRyYWRpY3Rpb24tZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvanMvZG9tL2Rv
bWppdC1mdW5jdGlvbi10eXBlLWNvbnRyYWRpY3Rpb24tZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjNkNjg3N2Q0YTgwMDY4OGIyMTY3N2JlZmFmZmVlZmZkOGFiMGI3OTYKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9qcy9kb20vZG9taml0LWZ1bmN0aW9uLXR5cGUtY29udHJhZGljdGlv
bi1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw4IEBACitUZXN0IERPTUpJVCBmdW5jdGlvbiB3aWxs
IGNhdXNlIHR5cGUgY29udHJhZGljdGlvbiBnaXZpbmcgdXAuCisKK09uIHN1Y2Nlc3MsIHlvdSB3
aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENP
TVBMRVRFIi4KKworUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBM
RVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL2RvbS9kb21qaXQtZnVuY3Rpb24tdHlw
ZS1jb250cmFkaWN0aW9uLmh0bWwgYi9MYXlvdXRUZXN0cy9qcy9kb20vZG9taml0LWZ1bmN0aW9u
LXR5cGUtY29udHJhZGljdGlvbi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg0ZGM1YjY3Njk0MThlOTY1NTVi
YWI4Mzg3YzMwNjAzNGFmNWMwYzAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9qcy9k
b20vZG9taml0LWZ1bmN0aW9uLXR5cGUtY29udHJhZGljdGlvbi5odG1sCkBAIC0wLDAgKzEsMzUg
QEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9y
ZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2
IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKworPGRp
diBpZD0icGFyZW50Tm9kZSI+Cis8ZGl2IGlkPSJwcmV2aW91c1NpYmxpbmciPjwvZGl2PjxkaXYg
aWQ9InRhcmdldCI+PGRpdiBpZD0iZmlyc3RDaGlsZCI+PC9kaXY+PGRpdiBpZD0ibGFzdENoaWxk
Ij48L2Rpdj48L2Rpdj48ZGl2IGlkPSJuZXh0U2libGluZyI+PC9kaXY+Cis8L2Rpdj4KKworPHNj
cmlwdD4KK2Rlc2NyaXB0aW9uKCdUZXN0IERPTUpJVCBmdW5jdGlvbiB3aWxsIGNhdXNlIHR5cGUg
Y29udHJhZGljdGlvbiBnaXZpbmcgdXAuJyk7CisKK3ZhciBkaXYgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50KCdkaXYnKTsKK2Rpdi5zZXRBdHRyaWJ1dGUoImNvY29hIiwgIkNvY29hIik7CitmdW5j
dGlvbiB0ZXN0KGRpdikgeworICAgIHZhciByZXQgPSAiaW52YWxpZCI7CisgICAgZm9yICh2YXIg
aSA9IDA7IGkgPCAxZTQ7ICsraSkKKyAgICAgICAgcmV0ID0gZGl2LmdldEF0dHJpYnV0ZSgyMDAp
OworICAgIHJldHVybiByZXQ7Cit9Cit2YXIgcmVzdWx0OworKGZ1bmN0aW9uICgpIHsKKyAgICBm
b3IgKHZhciBpID0gMDsgaSA8IDEwMDsgKytpKSB7CisgICAgICAgIHJlc3VsdCA9IHRlc3QoZGl2
KTsKKyAgICAgICAgc2hvdWxkQmUoYHJlc3VsdGAsIGBudWxsYCwgdHJ1ZSk7CisgICAgfQorfSgp
KTsKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3Qu
anMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
anMvZG9tL2RvbWppdC1mdW5jdGlvbi10eXBlLWZhaWx1cmUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0
VGVzdHMvanMvZG9tL2RvbWppdC1mdW5jdGlvbi10eXBlLWZhaWx1cmUtZXhwZWN0ZWQudHh0Cm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjJjMTAyYjM3NmJmODIzMmI0MmJkMWEzY2U0MWRlMTc3MWEyN2I2YzUKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9qcy9kb20vZG9taml0LWZ1bmN0aW9uLXR5cGUtZmFp
bHVyZS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw4IEBACitUZXN0IERPTUpJVCBmdW5jdGlvbiB3
aWxsIGNhdXNlIEJhZFR5cGUgT1NSIGV4aXRzLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUg
YSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIu
CisKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9kb20vZG9taml0LWZ1bmN0aW9uLXR5cGUtZmFpbHVy
ZS5odG1sIGIvTGF5b3V0VGVzdHMvanMvZG9tL2RvbWppdC1mdW5jdGlvbi10eXBlLWZhaWx1cmUu
aHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi42Yjc2NjE0MTg3ZWRhODdkYWMyNmMyMGE2ZTMxMjJjZjA2NTRhODE2
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMvZG9tL2RvbWppdC1mdW5jdGlvbi10
eXBlLWZhaWx1cmUuaHRtbApAQCAtMCwwICsxLDM5IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1s
PgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48
L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2Pgor
PGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisKKzxkaXYgaWQ9InBhcmVudE5vZGUiPgorPGRpdiBp
ZD0icHJldmlvdXNTaWJsaW5nIj48L2Rpdj48ZGl2IGlkPSJ0YXJnZXQiPjxkaXYgaWQ9ImZpcnN0
Q2hpbGQiPjwvZGl2PjxkaXYgaWQ9Imxhc3RDaGlsZCI+PC9kaXY+PC9kaXY+PGRpdiBpZD0ibmV4
dFNpYmxpbmciPjwvZGl2PgorPC9kaXY+CisKKzxzY3JpcHQ+CitkZXNjcmlwdGlvbignVGVzdCBE
T01KSVQgZnVuY3Rpb24gd2lsbCBjYXVzZSBCYWRUeXBlIE9TUiBleGl0cy4nKTsKKwordmFyIGRp
diA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOworZGl2LnNldEF0dHJpYnV0ZSgiY29j
b2EiLCAiQ29jb2EiKTsKK2Z1bmN0aW9uIHRlc3QoZGl2LCBuYW1lKSB7CisgICAgdmFyIHJldCA9
ICJpbnZhbGlkIjsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IDFlNDsgKytpKQorICAgICAgICBy
ZXQgPSBkaXYuZ2V0QXR0cmlidXRlKG5hbWUpOworICAgIHJldHVybiByZXQ7Cit9Cit2YXIgcmVz
dWx0OworKGZ1bmN0aW9uICgpIHsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IDEwMDsgKytpKSB7
CisgICAgICAgIHJlc3VsdCA9IHRlc3QoZGl2LCAnY29jb2EnKTsKKyAgICAgICAgc2hvdWxkQmUo
YHJlc3VsdGAsIGAiQ29jb2EiYCwgdHJ1ZSk7CisgICAgfQorICAgIGZvciAodmFyIGkgPSAwOyBp
IDwgMTAwOyArK2kpIHsKKyAgICAgICAgcmVzdWx0ID0gdGVzdChkaXYsIDQwMCk7CisgICAgICAg
IHNob3VsZEJlKGByZXN1bHRgLCBgbnVsbGAsIHRydWUpOworICAgIH0KK30oKSk7Cis8L3Njcmlw
dD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3Njcmlw
dD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL2RvbS9kb21q
aXQtZnVuY3Rpb24uaHRtbCBiL0xheW91dFRlc3RzL2pzL2RvbS9kb21qaXQtZnVuY3Rpb24uaHRt
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi45MWVhOGE1OTlkODk2NWRlNWEwM2E4NTRkNDk0M2RlNWI5YWMzZDY0Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMvZG9tL2RvbWppdC1mdW5jdGlvbi5odG1s
CkBAIC0wLDAgKzEsNTggQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFk
PgorPGJvZHk+Cis8ZGl2IGlkPSJ0YXJnZXQiIGNvY29hPSJjb2NvYSI+PGRpdiBpZD0iZmlyc3RD
aGlsZCI+PC9kaXY+PGRpdiBpZD0ibGFzdENoaWxkIj48L2Rpdj48L2Rpdj4KKzwvZGl2PgorCis8
c2NyaXB0PgorZGVzY3JpcHRpb24oJ1Rlc3QgRE9NSklUIGZ1bmN0aW9ucyB3b3JrLicpOwordmFy
IGRpdjsKKyhmdW5jdGlvbiAoKSB7CisgICAgZGl2ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
J3RhcmdldCcpOworCisgICAgZnVuY3Rpb24gYSgpCisgICAgeworICAgICAgICByZXR1cm4gZGl2
LmdldEF0dHJpYnV0ZSgnY29jb2EnKSA9PT0gJ2NvY29hJzsKKyAgICB9CisKKyAgICBmdW5jdGlv
biBiKCkKKyAgICB7CisgICAgICAgIHJldHVybiBkaXYuZ2V0QXR0cmlidXRlTm9kZSgnY29jb2En
KS5ub2RlVHlwZSA9PT0gTm9kZS5BVFRSSUJVVEVfTk9ERTsKKyAgICB9CisKKyAgICBmdW5jdGlv
biBjKCkKKyAgICB7CisgICAgICAgIHJldHVybiBkaXYuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2Rp
dicpLmxlbmd0aCA9PT0gMjsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBkKCkKKyAgICB7CisgICAg
ICAgIHJldHVybiBkaXYuaGFzQXR0cmlidXRlKCdjb2NvYScpID09PSB0cnVlOworICAgIH0KKwor
ICAgIGZ1bmN0aW9uIG1haW4oKQorICAgIHsKKyAgICAgICAgaWYgKCFhKCkpCisgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgICAgIGlmICghYigpKQorICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgICAgICBpZiAoIWMoKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAg
ICAgaWYgKCFkKCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHJldHVybiB0
cnVlOworICAgIH0KKworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMWU0OyArK2kpIHsKKyAgICAg
ICAgaWYgKCFtYWluKCkpCisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoImVycm9yIik7Cisg
ICAgfQorICAgIHRlc3RQYXNzZWQoIkFsbCB0ZXN0cyBwYXNzZWQuIik7Cit9KCkpOworPC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3Jp
cHQ+Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>293728</attachid>
            <date>2016-11-02 17:56:38 -0700</date>
            <delta_ts>2016-11-02 18:45:13 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-162980-20161102175238.patch</filename>
            <type>text/plain</type>
            <size>190462</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA4MzEzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAw
YjVkZGU5N2JiMjkxZDkwYjdkNzMxYmJhYzE3NGE0MDE2YmUzYjg0Li40NWIwYWQ0YzZlMGM2ODIw
OTc5ZmM4OGE5YmM1NzZlOGYzODA4YWIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMzMgQEAKKzIwMTYtMTEtMDIgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFp
bC5jb20+CisKKyAgICAgICAgW0RPTUpJVF0gQWRkIERPTUpJVDo6U2lnbmF0dXJlCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjI5ODAKKworICAgICAg
ICBSZXZpZXdlZCBieSBTYWFtIEJhcmF0aS4KKworICAgICAgICBUaGlzIHBhdGNoIGludHJvZHVj
ZXMgYSBuZXcgbWVjaGFuaXNtIGNhbGxlZCBET01KSVQ6OlNpZ25hdHVyZS4gV2UgY2FuIGFubm90
YXRlIHRoZSBmdW5jdGlvbiB3aXRoIERPTUpJVDo6U2lnbmF0dXJlLgorICAgICAgICBET01KSVQ6
OlNpZ25hdHVyZSBoYXMgdHlwZSBpbmZvcm1hdGlvbiBvZiB0aGF0IGZ1bmN0aW9uLiBBbmQgaXQg
YWxzbyBtYWludGFpbnMgdGhlIGVmZmVjdCBvZiB0aGUgZnVuY3Rpb24gYW5kIHRoZQorICAgICAg
ICBwb2ludGVyIHRvIHRoZSB1bnNhZmUgZnVuY3Rpb24uIFRoZSB1bnNhZmUgZnVuY3Rpb24gbWVh
bnMgdGhlIGZ1bmN0aW9uIHdpdGhvdXQgdHlwZSBhbmQgYXJndW1lbnQgY291bnQgY2hlY2tzLgor
ICAgICAgICBCeSB1c2luZyB0aGVzZSBpbmZvcm1hdGlvbiwgd2UgY2FuIHNlcGFyYXRlIHR5cGUg
YW5kIGFyZ3VtZW50IGNvdW50IGNoZWNrcyBmcm9tIHRoZSBmdW5jdGlvbi4gQW5kIHdlIGNhbiBl
bWl0CisgICAgICAgIHRoZXNlIHRoaW5ncyBhcyBERkcgY2hlY2tzIGFuZCBjb252ZXJ0IHRoZSBm
dW5jdGlvbiBjYWxsIGl0c2VsZiB0byBDYWxsRE9NIG5vZGUuIENhbGxET00gbm9kZSBjYW4gY2Fs
bCB0aGUgdW5zYWZlCisgICAgICAgIGZ1bmN0aW9uIGRpcmVjdGx5IHdpdGhvdXQgYW55IGNoZWNr
cy4gRnVydGhlcm1vcmUsIHRoaXMgQ2FsbERPTSBub2RlIGNhbiByZXByZXNlbnQgaXRzIG93biBj
bG9iYmVyaXppbmcgcnVsZXMgYmFzZWQKKyAgICAgICAgb24gRE9NSklUOjpFZmZlY3QgbWFpbnRh
aW5lZCBieSBET01KSVQ6OlNpZ25hdHVyZS4gSXQgYWxsb3dzIHVzIHRvIG1ha2Ugb3BhcXVlIENh
bGwgbm9kZSB0byBhIENhbGxET00gbm9kZSB0aGF0CisgICAgICAgIG1lcmVseSByZWFkcyBzb21l
IHBhcnQgb2YgaGVhcC4gVGhlc2UgY2hhbmdlcyAoMSkgY2FuIGRyb3AgZHVwbGljYXRlIHR5cGUg
Y2hlY2tzIGluIERGRywgKDIpIG9mZmVyIGFiaWxpdHkgdG8gbW92ZQorICAgICAgICBDYWxsRE9N
IG5vZGUgdG8gc29tZXdoZXJlLCBhbmQgKDMpIHRyYWNrIG1vcmUgZGV0YWlsZWQgaGVhcCByZWFk
cyBhbmQgd3JpdGVzIG9mIENhbGxET00gbm9kZXMuCisKKyAgICAgICAgV2UgZmlyc3QgZW1pdCBD
YWxsIG5vZGUgd2l0aCBET01KSVQ6OlNpZ25hdHVyZSBpbiBERkdCeXRlQ29kZVBhcnNlci4gQW5k
IGluIHRoZSBmaXh1cCBwaGFzZSwgd2UgYXR0ZW1wdCB0byBsb3dlcgorICAgICAgICBDYWxsIG5v
ZGUgdG8gQ2FsbERPTSBub2RlIHdpdGggY2hlY2tzICYgZWRnZSBmaWx0ZXJzLiBUaGlzIGlzIGJl
Y2F1c2Ugd2UgZG8gbm90IGtub3cgdGhlIHR5cGUgcHJlZGljdGlvbnMgaW4KKyAgICAgICAgREZH
Qnl0ZUNvZGVQYXJzZXIgcGhhc2UuIElmIHdlIGFsd2F5cyBlbWl0IENhbGxET00gbm9kZSBpbiBE
RkdCeXRlQ29kZVBhcnNlciwgaWYgd2UgZXZhbHVhdGUgYGRpdi5nZXRBdHRyaWJ1dGUodHJ1ZSlg
CisgICAgICAgIHRoaW5neSwgdGhlIFVuY291bnRhYmxlIE9TUiBleGl0cyByZXBlYXRlZGx5IGhh
cHBlbiBiZWNhdXNlIEFJIGZpZ3VyZXMgb3V0IHRoZSBhYnN0cmFjdCB2YWx1ZSBpcyBjbGVhcmVk
LgorCisgICAgICAgIEN1cnJlbnRseSwgRE9NSklUIHNpZ25hdHVyZSBvbmx5IGFsbG93cyB0aGUg
dHlwZXMgdGhhdCBjYW4gcmVzaWRlIGluIEdQUi4gVGhpcyBpcyBiZWNhdXNlIHRoZSB0eXBlcyBv
ZiB0aGUgdW5zYWZlCisgICAgICAgIGZ1bmN0aW9uIGFyZ3VtZW50cyBhcmUgcmVwcmVzZW50ZWQg
YXMgdGhlIHNlcXVlbmNlIG9mIHZvaWQqLiBJbiB0aGUgZnV0dXJlLCB3ZSB3aWxsIGV4dGVuZCB0
byBhY2NlcHQgb3RoZXIgdHlwZXMgbGlrZQorICAgICAgICBmbG9hdCwgZG91YmxlIGV0Yy4KKwor
ICAgICAgICBXZSBhbm5vdGF0ZSBzZXZlcmFsIGZ1bmN0aW9ucyBpbiBFbGVtZW50LiBJbiBwYXJ0
aWN1bGFyLCB3ZSBhbm5vdGF0ZSBFbGVtZW50OjpnZXRBdHRyaWJ1dGUuIFRoaXMgYWxsb3dzIHVz
IHRvIHBlcmZvcm0KKyAgICAgICAgTElDTSBpbiBEcm9tYWVvIGRvbS1hdHRyIHRlc3QuIEluIHRo
ZSBEcm9tYWVvIGRvbS1hdHRyIGdldEF0dHJpYnV0ZSB0ZXN0LCB3ZSBjYW4gc2VlIDMyeCBpbXBy
b3ZlbWVudC4gKDEzNDk3NC44IHYucy4gNDIwMy40KQorCisgICAgICAgICogSmF2YVNjcmlwdENv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBieXRlY29kZS9DYWxsVmFy
aWFudC5oOgorICAgICAgICAoSlNDOjpDYWxsVmFyaWFudDo6ZnVuY3Rpb25FeGVjdXRhYmxlKToK
KyAgICAgICAgKEpTQzo6Q2FsbFZhcmlhbnQ6Om5hdGl2ZUV4ZWN1dGFibGUpOgorICAgICAgICAo
SlNDOjpDYWxsVmFyaWFudDo6c2lnbmF0dXJlRm9yKToKKyAgICAgICAgKiBieXRlY29kZS9TcGVj
dWxhdGVkVHlwZS5oOgorICAgICAgICAoSlNDOjppc05vdFN0cmluZ1NwZWN1bGF0aW9uKToKKyAg
ICAgICAgKEpTQzo6aXNOb3RJbnQzMlNwZWN1bGF0aW9uKToKKyAgICAgICAgKEpTQzo6aXNOb3RC
b29sZWFuU3BlY3VsYXRpb24pOgorICAgICAgICAqIGRmZy9ERkdBYnN0cmFjdEludGVycHJldGVy
SW5saW5lcy5oOgorICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJh
Y3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyk6CisgICAgICAgICogZGZnL0RGR0J5dGVDb2Rl
UGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6YWRkQ2FsbCk6
CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUNhbGwpOgorICAgICAg
ICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjphdHRlbXB0VG9JbmxpbmVDYWxsKToKKyAgICAg
ICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW5saW5pbmcpOgorICAgICAgICAo
SlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVET01KSVRDYWxsKToKKyAgICAgICAgKEpT
Qzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayk6CisgICAgICAgICogZGZnL0RGR0Ns
b2JiZXJpemUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpjbG9iYmVyaXplKToKKyAgICAgICAgKiBk
ZmcvREZHRG9lc0dDLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpkb2VzR0MpOgorICAgICAgICAq
IGRmZy9ERkdGaXh1cFBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpGaXh1cFBoYXNlOjpm
aXh1cE5vZGUpOgorICAgICAgICAoSlNDOjpERkc6OkZpeHVwUGhhc2U6OmF0dGVtcHRUb01ha2VD
YWxsRE9NKToKKyAgICAgICAgKEpTQzo6REZHOjpGaXh1cFBoYXNlOjpmaXh1cENoZWNrRE9NKToK
KyAgICAgICAgKEpTQzo6REZHOjpGaXh1cFBoYXNlOjpmaXh1cENhbGxET00pOgorICAgICAgICAq
IGRmZy9ERkdOb2RlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpjb252ZXJ0VG9DYWxs
RE9NKToKKyAgICAgICAgKiBkZmcvREZHTm9kZS5oOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6
Omhhc0hlYXBQcmVkaWN0aW9uKToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpzaG91bGRTcGVj
dWxhdGVOb3RJbnQzMik6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6c2hvdWxkU3BlY3VsYXRl
Tm90Qm9vbGVhbik6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6c2hvdWxkU3BlY3VsYXRlTm90
U3RyaW5nKToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpoYXNTaWduYXR1cmUpOgorICAgICAg
ICAoSlNDOjpERkc6Ok5vZGU6OnNpZ25hdHVyZSk6CisgICAgICAgICogZGZnL0RGR05vZGVUeXBl
Lmg6CisgICAgICAgICogZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcDoKKyAg
ICAgICAgKiBkZmcvREZHU2FmZVRvRXhlY3V0ZS5oOgorICAgICAgICAoSlNDOjpERkc6OnNhZmVU
b0V4ZWN1dGUpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHA6CisgICAgICAg
IChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVDYWxsRE9NKToKKyAgICAgICAgKiBk
ZmcvREZHU3BlY3VsYXRpdmVKSVQuaDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJ
VDo6Y2FsbE9wZXJhdGlvbik6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQu
Y3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToKKyAgICAg
ICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGRvbWppdC9ET01KSVRFZmZlY3QuaDoK
KyAgICAgICAgKEpTQzo6RE9NSklUOjpFZmZlY3Q6OkVmZmVjdCk6CisgICAgICAgIChKU0M6OkRP
TUpJVDo6RWZmZWN0Ojpmb3JXcml0ZSk6CisgICAgICAgIChKU0M6OkRPTUpJVDo6RWZmZWN0Ojpm
b3JSZWFkKToKKyAgICAgICAgKEpTQzo6RE9NSklUOjpFZmZlY3Q6OmZvclJlYWRXcml0ZSk6Cisg
ICAgICAgIChKU0M6OkRPTUpJVDo6RWZmZWN0Ojpmb3JQdXJlKToKKyAgICAgICAgKEpTQzo6RE9N
SklUOjpFZmZlY3Q6OmZvckRlZik6CisgICAgICAgIChKU0M6OkRPTUpJVDo6RWZmZWN0OjptdXN0
R2VuZXJhdGUpOgorICAgICAgICBJbiBjbGFuZywgd2UgY2Fubm90IG1ha2UgdGhpcyBFZmZlY3Qg
Y29uc3RydWN0b3IgY29uc3RleHByIGlmIHdlIHVzZSBPcHRpb25hbDxIZWFwUmFuZ2U+LgorICAg
ICAgICBTbyB3ZSB1c2UgSGVhcFJhbmdlOjp0b3AoKSBmb3IgTnVsbG9wdCBkZWYgbm93LgorCisg
ICAgICAgICogZG9taml0L0RPTUpJVEhlYXBSYW5nZS5oOgorICAgICAgICAoSlNDOjpET01KSVQ6
OkhlYXBSYW5nZTo6ZnJvbVJhdyk6CisgICAgICAgIChKU0M6OkRPTUpJVDo6SGVhcFJhbmdlOjpv
cGVyYXRvcj09KToKKyAgICAgICAgKEpTQzo6RE9NSklUOjpIZWFwUmFuZ2U6Om9wZXJhdG9yIT0p
OgorICAgICAgICAoSlNDOjpET01KSVQ6OkhlYXBSYW5nZTo6ZnJvbUNvbnN0YW50KToKKyAgICAg
ICAgKiBkb21qaXQvRE9NSklUU2lnbmF0dXJlLmg6IENvcGllZCBmcm9tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kb21qaXQvRE9NSklURWZmZWN0LmguCisgICAgICAgIChKU0M6OkRPTUpJVDo6U2ln
bmF0dXJlOjpTaWduYXR1cmUpOgorICAgICAgICAoSlNDOjpET01KSVQ6OlNpZ25hdHVyZTo6YXJn
dW1lbnRDb3VudCk6CisgICAgICAgIChKU0M6OkRPTUpJVDo6U2lnbmF0dXJlOjpjaGVja0RPTSk6
CisgICAgICAgICogZnRsL0ZUTENhcGFiaWxpdGllcy5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6
Y2FuQ29tcGlsZSk6CisgICAgICAgICogZnRsL0ZUTExvd2VyREZHVG9CMy5jcHA6CisgICAgICAg
IChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVOb2RlKToKKyAgICAgICAgKEpT
Qzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZUNhbGxET00pOgorICAgICAgICAqIGpp
dC9KSVRPcGVyYXRpb25zLmg6CisgICAgICAgICogaml0L0pJVFRodW5rcy5jcHA6CisgICAgICAg
IChKU0M6OkpJVFRodW5rczo6aG9zdEZ1bmN0aW9uU3R1Yik6CisgICAgICAgICogaml0L0pJVFRo
dW5rcy5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNCb3VuZEZ1bmN0aW9uLmNwcDoKKyAgICAgICAg
KEpTQzo6SlNCb3VuZEZ1bmN0aW9uOjpjcmVhdGUpOgorICAgICAgICAqIHJ1bnRpbWUvSlNDZWxs
Lmg6CisgICAgICAgICogcnVudGltZS9KU0Z1bmN0aW9uLmNwcDoKKyAgICAgICAgKEpTQzo6SlNG
dW5jdGlvbjo6Y3JlYXRlKToKKyAgICAgICAgKiBydW50aW1lL0pTRnVuY3Rpb24uaDoKKyAgICAg
ICAgKiBydW50aW1lL0pTTmF0aXZlU3RkRnVuY3Rpb24uY3BwOgorICAgICAgICAoSlNDOjpKU05h
dGl2ZVN0ZEZ1bmN0aW9uOjpjcmVhdGUpOgorICAgICAgICAqIHJ1bnRpbWUvSlNPYmplY3QuY3Bw
OgorICAgICAgICAoSlNDOjpKU09iamVjdDo6cHV0RGlyZWN0TmF0aXZlRnVuY3Rpb24pOgorICAg
ICAgICAqIHJ1bnRpbWUvSlNPYmplY3QuaDoKKyAgICAgICAgKiBydW50aW1lL0xvb2t1cC5oOgor
ICAgICAgICAoSlNDOjpIYXNoVGFibGVWYWx1ZTo6ZnVuY3Rpb25MZW5ndGgpOgorICAgICAgICAo
SlNDOjpIYXNoVGFibGVWYWx1ZTo6c2lnbmF0dXJlKToKKyAgICAgICAgKEpTQzo6cmVpZnlTdGF0
aWNQcm9wZXJ0eSk6CisgICAgICAgICogcnVudGltZS9OYXRpdmVFeGVjdXRhYmxlLmNwcDoKKyAg
ICAgICAgKEpTQzo6TmF0aXZlRXhlY3V0YWJsZTo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6TmF0
aXZlRXhlY3V0YWJsZTo6TmF0aXZlRXhlY3V0YWJsZSk6CisgICAgICAgICogcnVudGltZS9OYXRp
dmVFeGVjdXRhYmxlLmg6CisgICAgICAgICogcnVudGltZS9Qcm9wZXJ0eVNsb3QuaDoKKyAgICAg
ICAgKiBydW50aW1lL1ZNLmNwcDoKKyAgICAgICAgKEpTQzo6Vk06OmdldEhvc3RGdW5jdGlvbik6
CisgICAgICAgICogcnVudGltZS9WTS5oOgorCiAyMDE2LTExLTAyICBHZW9mZnJleSBHYXJlbiAg
PGdnYXJlbkBhcHBsZS5jb20+CiAKICAgICAgICAgT25lIGZpbGUgcGVyIGNsYXNzIGZvciBVbmxp
bmtlZENvZGVCbG9jay5oLy5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAzNGYxZGRkZjU1NWE0MmM3M2Q5Mjll
OTI3YTVhMTFmZjczY2FiMmJkLi40MWJhYzU1YmM4NTU3NTFlZDdjZDlkNWI4NWQ4NTM0MzQ2ZDNi
YzFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTEwIEBACisyMDE2LTExLTAyICBZdXN1a2UgU3V6
dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgorCisgICAgICAgIFtET01KSVRdIEFkZCBET01K
SVQ6OlNpZ25hdHVyZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTYyOTgwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2FhbSBCYXJhdGkuCisKKyAgICAg
ICAgV2UgaW50cm9kdWNlIERPTUpJVDo6U2lnbmF0dXJlLiBUaGlzIHNpZ25hdHVyZSBvYmplY3Qg
aXMgYXV0b21hdGljYWxseSBnZW5lcmF0ZWQgYnkgSURMIGNvZGUgZ2VuZXJhdG9yLgorICAgICAg
ICBJdCBob2xkcyAoMSkgdHlwZXMsICgyKSBwb2ludGVyIHRvIHRoZSB1bnNhZmUgZnVuY3Rpb24g
KHRoZSBmdW5jdGlvbiB3aXRob3V0IGNoZWNrcyksIGFuZCAoMykgdGhlIGVmZmVjdAorICAgICAg
ICBvZiB0aGUgZnVuY3Rpb24uIFdlIHVzZSBjb25zdGV4cHIgdG8gaW5pdGlhbGl6ZSBET01KSVQ6
OlNpZ25hdHVyZSB3aXRob3V0IGludm9raW5nIGdsb2JhbCBjb25zdHJ1Y3RvcnMuCisgICAgICAg
IFRodXMgdGhlIGNvbnRlbnQgaXMgZW1iZWRkZWQgaW50byB0aGUgYmluYXJ5IGFzIHRoZSBjb25z
dGFudCB2YWx1ZXMuCisKKyAgICAgICAgV2UgYWxzbyBjbGVhbiB1cCB0aGUgSURMIGNvZGUgZ2Vu
ZXJhdG9yIHJlbGF0ZWQgdG8gRE9NSklUIHBhcnQuIEluc3RlYWQgb2Ygc3dpdGNoaW5nIHRoaW5n
cyBpbnNpZGUgSURMCisgICAgICAgIGNvZGUgZ2VuZXJhdG9yLCB3ZSB1c2UgQysrIHRlbXBsYXRl
IHRvIGRpc3BhdGNoIHRoaW5ncyBhdCBjb21waWxlIHRpbWUuIFRoaXMgdGVtcGxhdGUgbWV0YSBw
cm9ncmFtbWluZworICAgICAgICBpcyBoaWdobHkgdXRpbGl6ZWQgaW4gSURMIHRoZXNlIGRheXMu
CisKKyAgICAgICAgVG8gbWFrZSBET01KSVQ6OlNpZ25hdHVyZSBjb25zdGV4cHIsIHdlIGFsc28g
bmVlZCB0byBkZWZpbmUgRE9NSklUIGFic3RyYWN0IGhlYXAgdGhpbmdzIGluIHRoZSBidWlsZCB0
aW1lLgorICAgICAgICBUbyBkbyBzbywgd2UgaW50cm9kdWNlIGEgdGlueSBSdWJ5IHNjcmlwdCB0
byBjYWxjdWxhdGUgdGhlIHJhbmdlIG9mIGFic3RyYWN0IGhlYXBzLiBXZSBjYW4gb2ZmZXIgdGhl
IGFic3RyYWN0CisgICAgICAgIGhlYXAgdHJlZSBhcyBZQU1MIGZvcm1hdCBhbmQgdGhlIHNjcmlw
dCB3aWxsIHByb2R1Y2UgYSBDKysgaGVhZGVyIGhvbGRpbmcgdGhlIGNhbGN1bGF0ZWQgYWJzdHJh
Y3QgaGVhcCByYW5nZXMKKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIERl
cml2ZWRTb3VyY2VzLm1ha2U6CisgICAgICAgICogRm9yd2FyZGluZ0hlYWRlcnMvYnl0ZWNvZGUv
U3BlY3VsYXRlZFR5cGUuaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL2RvbWppdC9ET01K
SVRBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmguCisgICAgICAgICogRm9yd2FyZGluZ0hlYWRlcnMv
ZG9taml0L0RPTUpJVFNpZ25hdHVyZS5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvZG9t
aml0L0RPTUpJVEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuY3BwLgorICAgICAgICAqIFdlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUds
b2JhbE9iamVjdC5oOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpT
LnBtOgorICAgICAgICAoR2VuZXJhdGVIZWFkZXIpOgorICAgICAgICAoR2VuZXJhdGVQcm9wZXJ0
aWVzSGFzaFRhYmxlKToKKyAgICAgICAgKEdldFVuc2FmZUFyZ3VtZW50VHlwZSk6CisgICAgICAg
IChHZXRBcmd1bWVudFR5cGVGaWx0ZXIpOgorICAgICAgICAoR2V0UmVzdWx0VHlwZUZpbHRlcik6
CisgICAgICAgIChHZW5lcmF0ZUltcGxlbWVudGF0aW9uKToKKyAgICAgICAgKFVuc2FmZVRvTmF0
aXZlKToKKyAgICAgICAgKEdlbmVyYXRlSGFzaFRhYmxlVmFsdWVBcnJheSk6CisgICAgICAgIChD
b21wdXRlRnVuY3Rpb25TcGVjaWFsKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0lETEF0
dHJpYnV0ZXMudHh0OgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RE
T01KSVQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QmluZGluZ0NhbGxlcjxKU1Rlc3RET01KSVQ+
OjpjYXN0Rm9yT3BlcmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RET01KSVRBbnlBdHRy
RE9NSklUOjpUZXN0RE9NSklUQW55QXR0ckRPTUpJVCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0
RE9NSklUQm9vbGVhbkF0dHJET01KSVQ6OlRlc3RET01KSVRCb29sZWFuQXR0ckRPTUpJVCk6Cisg
ICAgICAgIChXZWJDb3JlOjpUZXN0RE9NSklUQnl0ZUF0dHJET01KSVQ6OlRlc3RET01KSVRCeXRl
QXR0ckRPTUpJVCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0RE9NSklUT2N0ZXRBdHRyRE9NSklU
OjpUZXN0RE9NSklUT2N0ZXRBdHRyRE9NSklUKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RET01K
SVRTaG9ydEF0dHJET01KSVQ6OlRlc3RET01KSVRTaG9ydEF0dHJET01KSVQpOgorICAgICAgICAo
V2ViQ29yZTo6VGVzdERPTUpJVFVuc2lnbmVkU2hvcnRBdHRyRE9NSklUOjpUZXN0RE9NSklUVW5z
aWduZWRTaG9ydEF0dHJET01KSVQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdERPTUpJVExvbmdB
dHRyRE9NSklUOjpUZXN0RE9NSklUTG9uZ0F0dHJET01KSVQpOgorICAgICAgICAoV2ViQ29yZTo6
VGVzdERPTUpJVFVuc2lnbmVkTG9uZ0F0dHJET01KSVQ6OlRlc3RET01KSVRVbnNpZ25lZExvbmdB
dHRyRE9NSklUKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RET01KSVRMb25nTG9uZ0F0dHJET01K
SVQ6OlRlc3RET01KSVRMb25nTG9uZ0F0dHJET01KSVQpOgorICAgICAgICAoV2ViQ29yZTo6VGVz
dERPTUpJVFVuc2lnbmVkTG9uZ0xvbmdBdHRyRE9NSklUOjpUZXN0RE9NSklUVW5zaWduZWRMb25n
TG9uZ0F0dHJET01KSVQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdERPTUpJVEZsb2F0QXR0ckRP
TUpJVDo6VGVzdERPTUpJVEZsb2F0QXR0ckRPTUpJVCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0
RE9NSklUVW5yZXN0cmljdGVkRmxvYXRBdHRyRE9NSklUOjpUZXN0RE9NSklUVW5yZXN0cmljdGVk
RmxvYXRBdHRyRE9NSklUKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RET01KSVREb3VibGVBdHRy
RE9NSklUOjpUZXN0RE9NSklURG91YmxlQXR0ckRPTUpJVCk6CisgICAgICAgIChXZWJDb3JlOjpU
ZXN0RE9NSklUVW5yZXN0cmljdGVkRG91YmxlQXR0ckRPTUpJVDo6VGVzdERPTUpJVFVucmVzdHJp
Y3RlZERvdWJsZUF0dHJET01KSVQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdERPTUpJVERvbVN0
cmluZ0F0dHJET01KSVQ6OlRlc3RET01KSVREb21TdHJpbmdBdHRyRE9NSklUKToKKyAgICAgICAg
KFdlYkNvcmU6OlRlc3RET01KSVRCeXRlU3RyaW5nQXR0ckRPTUpJVDo6VGVzdERPTUpJVEJ5dGVT
dHJpbmdBdHRyRE9NSklUKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RET01KSVRVc3ZTdHJpbmdB
dHRyRE9NSklUOjpUZXN0RE9NSklUVXN2U3RyaW5nQXR0ckRPTUpJVCk6CisgICAgICAgIChXZWJD
b3JlOjpUZXN0RE9NSklUTm9kZUF0dHJET01KSVQ6OlRlc3RET01KSVROb2RlQXR0ckRPTUpJVCk6
CisgICAgICAgIChXZWJDb3JlOjpUZXN0RE9NSklUQm9vbGVhbk51bGxhYmxlQXR0ckRPTUpJVDo6
VGVzdERPTUpJVEJvb2xlYW5OdWxsYWJsZUF0dHJET01KSVQpOgorICAgICAgICAoV2ViQ29yZTo6
VGVzdERPTUpJVEJ5dGVOdWxsYWJsZUF0dHJET01KSVQ6OlRlc3RET01KSVRCeXRlTnVsbGFibGVB
dHRyRE9NSklUKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RET01KSVRPY3RldE51bGxhYmxlQXR0
ckRPTUpJVDo6VGVzdERPTUpJVE9jdGV0TnVsbGFibGVBdHRyRE9NSklUKToKKyAgICAgICAgKFdl
YkNvcmU6OlRlc3RET01KSVRTaG9ydE51bGxhYmxlQXR0ckRPTUpJVDo6VGVzdERPTUpJVFNob3J0
TnVsbGFibGVBdHRyRE9NSklUKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RET01KSVRVbnNpZ25l
ZFNob3J0TnVsbGFibGVBdHRyRE9NSklUOjpUZXN0RE9NSklUVW5zaWduZWRTaG9ydE51bGxhYmxl
QXR0ckRPTUpJVCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0RE9NSklUTG9uZ051bGxhYmxlQXR0
ckRPTUpJVDo6VGVzdERPTUpJVExvbmdOdWxsYWJsZUF0dHJET01KSVQpOgorICAgICAgICAoV2Vi
Q29yZTo6VGVzdERPTUpJVFVuc2lnbmVkTG9uZ051bGxhYmxlQXR0ckRPTUpJVDo6VGVzdERPTUpJ
VFVuc2lnbmVkTG9uZ051bGxhYmxlQXR0ckRPTUpJVCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0
RE9NSklUTG9uZ0xvbmdOdWxsYWJsZUF0dHJET01KSVQ6OlRlc3RET01KSVRMb25nTG9uZ051bGxh
YmxlQXR0ckRPTUpJVCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0RE9NSklUVW5zaWduZWRMb25n
TG9uZ051bGxhYmxlQXR0ckRPTUpJVDo6VGVzdERPTUpJVFVuc2lnbmVkTG9uZ0xvbmdOdWxsYWJs
ZUF0dHJET01KSVQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdERPTUpJVEZsb2F0TnVsbGFibGVB
dHRyRE9NSklUOjpUZXN0RE9NSklURmxvYXROdWxsYWJsZUF0dHJET01KSVQpOgorICAgICAgICAo
V2ViQ29yZTo6VGVzdERPTUpJVFVucmVzdHJpY3RlZEZsb2F0TnVsbGFibGVBdHRyRE9NSklUOjpU
ZXN0RE9NSklUVW5yZXN0cmljdGVkRmxvYXROdWxsYWJsZUF0dHJET01KSVQpOgorICAgICAgICAo
V2ViQ29yZTo6VGVzdERPTUpJVERvdWJsZU51bGxhYmxlQXR0ckRPTUpJVDo6VGVzdERPTUpJVERv
dWJsZU51bGxhYmxlQXR0ckRPTUpJVCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0RE9NSklUVW5y
ZXN0cmljdGVkRG91YmxlTnVsbGFibGVBdHRyRE9NSklUOjpUZXN0RE9NSklUVW5yZXN0cmljdGVk
RG91YmxlTnVsbGFibGVBdHRyRE9NSklUKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RET01KSVRE
b21TdHJpbmdOdWxsYWJsZUF0dHJET01KSVQ6OlRlc3RET01KSVREb21TdHJpbmdOdWxsYWJsZUF0
dHJET01KSVQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdERPTUpJVEJ5dGVTdHJpbmdOdWxsYWJs
ZUF0dHJET01KSVQ6OlRlc3RET01KSVRCeXRlU3RyaW5nTnVsbGFibGVBdHRyRE9NSklUKToKKyAg
ICAgICAgKFdlYkNvcmU6OlRlc3RET01KSVRVc3ZTdHJpbmdOdWxsYWJsZUF0dHJET01KSVQ6OlRl
c3RET01KSVRVc3ZTdHJpbmdOdWxsYWJsZUF0dHJET01KSVQpOgorICAgICAgICAoV2ViQ29yZTo6
VGVzdERPTUpJVE5vZGVOdWxsYWJsZUF0dHJET01KSVQ6OlRlc3RET01KSVROb2RlTnVsbGFibGVB
dHRyRE9NSklUKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdERPTUpJVFByb3RvdHlwZUZ1bmN0
aW9uR2V0QXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdERPTUpJVFByb3RvdHlw
ZUZ1bmN0aW9uR2V0QXR0cmlidXRlQ2FsbGVyKToKKyAgICAgICAgKFdlYkNvcmU6OnVuc2FmZUpz
VGVzdERPTUpJVFByb3RvdHlwZUZ1bmN0aW9uR2V0QXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNv
cmU6OmpzVGVzdERPTUpJVFByb3RvdHlwZUZ1bmN0aW9uSXRlbSk6CisgICAgICAgIChXZWJDb3Jl
Ojpqc1Rlc3RET01KSVRQcm90b3R5cGVGdW5jdGlvbkl0ZW1DYWxsZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6dW5zYWZlSnNUZXN0RE9NSklUUHJvdG90eXBlRnVuY3Rpb25JdGVtKToKKyAgICAgICAg
KFdlYkNvcmU6OmpzVGVzdERPTUpJVFByb3RvdHlwZUZ1bmN0aW9uSGFzQXR0cmlidXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6OmpzVGVzdERPTUpJVFByb3RvdHlwZUZ1bmN0aW9uSGFzQXR0cmlidXRl
Q2FsbGVyKToKKyAgICAgICAgKFdlYkNvcmU6OnVuc2FmZUpzVGVzdERPTUpJVFByb3RvdHlwZUZ1
bmN0aW9uSGFzQXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdERPTUpJVFByb3Rv
dHlwZUZ1bmN0aW9uR2V0RWxlbWVudEJ5SWQpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0RE9N
SklUUHJvdG90eXBlRnVuY3Rpb25HZXRFbGVtZW50QnlJZENhbGxlcik6CisgICAgICAgIChXZWJD
b3JlOjp1bnNhZmVKc1Rlc3RET01KSVRQcm90b3R5cGVGdW5jdGlvbkdldEVsZW1lbnRCeUlkKToK
KyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdERPTUpJVFByb3RvdHlwZUZ1bmN0aW9uR2V0RWxlbWVu
dHNCeU5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0RE9NSklUUHJvdG90eXBlRnVuY3Rp
b25HZXRFbGVtZW50c0J5TmFtZUNhbGxlcik6CisgICAgICAgIChXZWJDb3JlOjp1bnNhZmVKc1Rl
c3RET01KSVRQcm90b3R5cGVGdW5jdGlvbkdldEVsZW1lbnRzQnlOYW1lKToKKyAgICAgICAgKiBi
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdERPTUpJVC5pZGw6CisgICAgICAgICogZG9tL0VsZW1l
bnQuaWRsOgorICAgICAgICAqIGRvbWppdC9ET01KSVRBYnN0cmFjdEhlYXBSZXBvc2l0b3J5Lnlh
bWw6IEFkZGVkLgorICAgICAgICAqIGRvbWppdC9ET01KSVRJRExDb252ZXJ0Lmg6IEFkZGVkLgor
ICAgICAgICAoV2ViQ29yZTo6RE9NSklUOjpEaXJlY3RDb252ZXJ0ZXI8SURMRE9NU3RyaW5nPjo6
ZGlyZWN0Q29udmVydDxTdHJpbmdDb252ZXJzaW9uQ29uZmlndXJhdGlvbjo6Tm9ybWFsPik6Cisg
ICAgICAgICogZG9taml0L0RPTUpJVElETFR5cGUuaDogQWRkZWQuCisgICAgICAgICogZG9taml0
L0RPTUpJVElETFR5cGVGaWx0ZXIuaDogQWRkZWQuCisgICAgICAgICogZG9taml0L0pTRG9jdW1l
bnRET01KSVQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnREb2N1bWVudEVsZW1lbnRE
T01KSVQ6OmNhbGxET01HZXR0ZXIpOgorICAgICAgICAqIGRvbWppdC9KU05vZGVET01KSVQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Tm9kZUZpcnN0Q2hpbGRET01KSVQ6OmNhbGxET01HZXR0ZXIp
OgorICAgICAgICAoV2ViQ29yZTo6Tm9kZUxhc3RDaGlsZERPTUpJVDo6Y2FsbERPTUdldHRlcik6
CisgICAgICAgIChXZWJDb3JlOjpOb2RlTmV4dFNpYmxpbmdET01KSVQ6OmNhbGxET01HZXR0ZXIp
OgorICAgICAgICAoV2ViQ29yZTo6Tm9kZVByZXZpb3VzU2libGluZ0RPTUpJVDo6Y2FsbERPTUdl
dHRlcik6CisgICAgICAgIChXZWJDb3JlOjpOb2RlUGFyZW50Tm9kZURPTUpJVDo6Y2FsbERPTUdl
dHRlcik6CisgICAgICAgIChXZWJDb3JlOjpOb2RlT3duZXJEb2N1bWVudERPTUpJVDo6Y2FsbERP
TUdldHRlcik6CisgICAgICAgICogZG9taml0L2dlbmVyYXRlLWFic3RyYWN0LWhlYXAucmI6IEFk
ZGVkLgorCiAyMDE2LTExLTAyICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5j
b20+CiAKICAgICAgICAgW2lPU10gW1dlYkdMXSBNdWx0aXNhbXBsZSByZXNvbHZlIHN0ZXAgbWF5
IG9wZXJhdGUgb24gc3RhbGUgZGF0YQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAz
YjA0YTE4NmY1ODEwNjdjM2E4MmZiYWEzMmU0NjBjODcxNTgwMzVmLi4wMTZlNGY5ZjY2ZTE4NjRh
NWI3MTIyNjc1NjQyZTFkZDZmZGRhZGY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpA
QCAtMjIwOCw2ICsyMjA4LDcgQEAKIAkJRTMzRjUwODUxQjg0MzdBMDAwNDEzODU2IC8qIEpTSW50
ZXJuYWxQcm9taXNlRGVmZXJyZWQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEUzM0Y1MDgzMUI4NDM3QTAwMDQxMzg1NiAvKiBKU0ludGVybmFsUHJvbWlz
ZURlZmVycmVkLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJRTMzRjUwODcxQjg0NDlFRjAwNDEzODU2IC8qIEpTSW50ZXJuYWxQcm9taXNlQ29uc3Ry
dWN0b3IubHV0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBFMzNGNTA4NjFCODQ0OUVGMDA0MTM4NTYgLyogSlNJbnRlcm5hbFByb21pc2VDb25zdHJ1Y3Rv
ci5sdXQuaCAqLzsgfTsKIAkJRTM0RURCRjcxREI1RkZDOTAwREM4N0E1IC8qIEZyYW1lVHJhY2Vy
cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM0RURC
RjYxREI1RkZDMTAwREM4N0E1IC8qIEZyYW1lVHJhY2Vycy5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUUzNTA3MDhBMURDNDlCQkYwMDg5QkNENiAv
KiBET01KSVRTaWduYXR1cmUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEUzNTA3MDg5MURDNDlCQjYwMDg5QkNENiAvKiBET01KSVRTaWduYXR1cmUuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFMzU0NjIy
QjFCNjA2NUQxMDA1NDUzODYgLyogQ29uc3RydWN0QWJpbGl0eS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM1NDYyMkExQjYwNjVEMTAwNTQ1Mzg2IC8q
IENvbnN0cnVjdEFiaWxpdHkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQlFMzU1NUI4QTFEQUUwM0E1MDBGMzY5MjEgLyogRE9NSklUQ2FsbERPTUdl
dHRlclBhdGNocG9pbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEUzNTU1Qjg5MURBRTAzQTIwMEYzNjkyMSAvKiBET01KSVRDYWxsRE9NR2V0dGVyUGF0
Y2hwb2ludC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCUUzNTVGMzUyMUI3REM4NTMwMEM1MERDNSAvKiBNb2R1bGVMb2FkZXJQcm90b3R5cGUuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM1NUYzNTAx
QjdEQzg1MzAwQzUwREM1IC8qIE1vZHVsZUxvYWRlclByb3RvdHlwZS5jcHAgKi87IH07CkBAIC00
NjM0LDYgKzQ2MzUsNyBAQAogCQlFMzNGNTA4NjFCODQ0OUVGMDA0MTM4NTYgLyogSlNJbnRlcm5h
bFByb21pc2VDb25zdHJ1Y3Rvci5sdXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gSlNJbnRlcm5hbFByb21pc2VDb25zdHJ1Y3Rvci5sdXQuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJRTMzRjUwODgxQjg0NEExQTAwNDEzODU2IC8qIEludGVybmFsUHJvbWlzZUNv
bnN0cnVjdG9yLmpzICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5qYXZhc2NyaXB0OyBwYXRoID0gSW50
ZXJuYWxQcm9taXNlQ29uc3RydWN0b3IuanM7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUUzNEVEQkY2MURCNUZGQzEwMERDODdBNSAvKiBGcmFtZVRyYWNlcnMuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gRnJhbWVUcmFjZXJzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCUUzNTA3MDg5MURDNDlCQjYwMDg5QkNENiAvKiBET01KSVRTaWduYXR1cmUuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRE9NSklUU2lnbmF0dXJlLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzNTQ2MjJBMUI2MDY1RDEwMDU0NTM4NiAvKiBDb25z
dHJ1Y3RBYmlsaXR5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvbnN0cnVj
dEFiaWxpdHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM1NTVCODkxREFFMDNB
MjAwRjM2OTIxIC8qIERPTUpJVENhbGxET01HZXR0ZXJQYXRjaHBvaW50LmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERPTUpJVENhbGxET01HZXR0ZXJQYXRjaHBvaW50Lmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzNTVGMzUwMUI3REM4NTMwMEM1MERDNSAvKiBN
b2R1bGVMb2FkZXJQcm90b3R5cGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gTW9kdWxlTG9hZGVyUHJvdG90eXBlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKQEAgLTc1NzUsNiArNzU3Nyw3IEBACiAJCQkJRTM3QUQ4M0ExREE0OTI4MDAwRjNENDEyIC8q
IERPTUpJVFBhdGNocG9pbnRQYXJhbXMuaCAqLywKIAkJCQlFMzdBRDgzQjFEQTQ5MjgwMDBGM0Q0
MTIgLyogRE9NSklUUmVnLmggKi8sCiAJCQkJRTNDQjFFMjQxREE3NTQwQTAwRkExRTU2IC8qIERP
TUpJVFNsb3dQYXRoQ2FsbHMuaCAqLywKKwkJCQlFMzUwNzA4OTFEQzQ5QkI2MDA4OUJDRDYgLyog
RE9NSklUU2lnbmF0dXJlLmggKi8sCiAJCQkJRTNGRkM4NTIxREFEN0QxMDAwREVBNTNFIC8qIERP
TUpJVFZhbHVlLmggKi8sCiAJCQkpOwogCQkJcGF0aCA9IGRvbWppdDsKQEAgLTg1MDMsNiArODUw
Niw3IEBACiAJCQkJNDNBQjI2QzYxQzFBNTM1OTAwRDgyQUU2IC8qIEIzTWF0aEV4dHJhcy5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQUQyRkNCRjMxREI1OERBRDAwQjNFNzM2IC8qIFdlYkFzc2VtYmx5
SW5zdGFuY2VQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDNDI5MEUxNkY1Q0Qw
MEIzNDQ2MCAvKiBKU1N0cmluZ1JlZkNGLmggaW4gSGVhZGVycyAqLywKKwkJCQlFMzUwNzA4QTFE
QzQ5QkJGMDA4OUJDRDYgLyogRE9NSklUU2lnbmF0dXJlLmggaW4gSGVhZGVycyAqLywKIAkJCQkx
QTI4RDRBODE3N0I3MUM4MDAwN0ZBM0MgLyogSlNTdHJpbmdSZWZQcml2YXRlLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkwRjkxOUQwRDE1N0VFMEEyMDA0QTRFN0QgLyogSlNTeW1ib2xUYWJsZU9iamVj
dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNzBFQ0E2MDYxQUZEQkVBMjAwNDQ5NzM5IC8qIEpTVGVt
cGxhdGVSZWdpc3RyeUtleS5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbFZhcmlhbnQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9DYWxsVmFyaWFudC5oCmluZGV4IGRlNjg4MDA2ZWYxYTk5ZTlkZDYwYjAxYTZl
MDE3N2NiOThlYzdiNTEuLmNiMjg4YzYwYjdhNGYxMzhiYWYyMTQyODQ5ZTEzOTFhOGQxMTFiYTcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsVmFyaWFudC5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsVmFyaWFudC5oCkBAIC0y
OCw2ICsyOCw3IEBACiAjaW5jbHVkZSAiRnVuY3Rpb25FeGVjdXRhYmxlLmgiCiAjaW5jbHVkZSAi
SlNDZWxsLmgiCiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgorI2luY2x1ZGUgIk5hdGl2ZUV4ZWN1
dGFibGUuaCIKIAogbmFtZXNwYWNlIEpTQyB7CiAKQEAgLTEyMCw2ICsxMjEsMjAgQEAgY2xhc3Mg
Q2FsbFZhcmlhbnQgewogICAgICAgICAgICAgcmV0dXJuIGpzRHluYW1pY0Nhc3Q8RnVuY3Rpb25F
eGVjdXRhYmxlKj4oZXhlY3V0YWJsZSk7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0K
KworICAgIE5hdGl2ZUV4ZWN1dGFibGUqIG5hdGl2ZUV4ZWN1dGFibGUoKSBjb25zdAorICAgIHsK
KyAgICAgICAgaWYgKEV4ZWN1dGFibGVCYXNlKiBleGVjdXRhYmxlID0gdGhpcy0+ZXhlY3V0YWJs
ZSgpKQorICAgICAgICAgICAgcmV0dXJuIGpzRHluYW1pY0Nhc3Q8TmF0aXZlRXhlY3V0YWJsZSo+
KGV4ZWN1dGFibGUpOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisKKyAgICBjb25z
dCBET01KSVQ6OlNpZ25hdHVyZSogc2lnbmF0dXJlRm9yKENvZGVTcGVjaWFsaXphdGlvbktpbmQg
a2luZCkgY29uc3QKKyAgICB7CisgICAgICAgIGlmIChOYXRpdmVFeGVjdXRhYmxlKiBuYXRpdmVF
eGVjdXRhYmxlID0gdGhpcy0+bmF0aXZlRXhlY3V0YWJsZSgpKQorICAgICAgICAgICAgcmV0dXJu
IG5hdGl2ZUV4ZWN1dGFibGUtPnNpZ25hdHVyZUZvcihraW5kKTsKKyAgICAgICAgcmV0dXJuIG51
bGxwdHI7CisgICAgfQogICAgIAogICAgIHZvaWQgZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25z
dDsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TcGVj
dWxhdGVkVHlwZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NwZWN1bGF0ZWRU
eXBlLmgKaW5kZXggZjQzZGZjZDMxNTg3MWU5ODk1M2VhMmRkZGM0YmYzMzUyNWNjZGZkZi4uZTIz
ZmQyYzVmNTRjZWUwOWM3YTIzYmRjMTQ5OTkwYjYwOWIwMTkwMCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmgKQEAgLTE1MSw2ICsxNTEsMTEg
QEAgaW5saW5lIGJvb2wgaXNTdHJpbmdTcGVjdWxhdGlvbihTcGVjdWxhdGVkVHlwZSB2YWx1ZSkK
ICAgICByZXR1cm4gISF2YWx1ZSAmJiAodmFsdWUgJiBTcGVjU3RyaW5nKSA9PSB2YWx1ZTsKIH0K
IAoraW5saW5lIGJvb2wgaXNOb3RTdHJpbmdTcGVjdWxhdGlvbihTcGVjdWxhdGVkVHlwZSB2YWx1
ZSkKK3sKKyAgICByZXR1cm4gdmFsdWUgJiYgISh2YWx1ZSAmIFNwZWNTdHJpbmcpOworfQorCiBp
bmxpbmUgYm9vbCBpc1N0cmluZ09yT3RoZXJTcGVjdWxhdGlvbihTcGVjdWxhdGVkVHlwZSB2YWx1
ZSkKIHsKICAgICByZXR1cm4gISF2YWx1ZSAmJiAodmFsdWUgJiAoU3BlY1N0cmluZyB8IFNwZWNP
dGhlcikpID09IHZhbHVlOwpAQCAtMzAzLDYgKzMwOCwxMSBAQCBpbmxpbmUgYm9vbCBpc0ludDMy
U3BlY3VsYXRpb24oU3BlY3VsYXRlZFR5cGUgdmFsdWUpCiAgICAgcmV0dXJuIHZhbHVlICYmICEo
dmFsdWUgJiB+U3BlY0ludDMyT25seSk7CiB9CiAKK2lubGluZSBib29sIGlzTm90SW50MzJTcGVj
dWxhdGlvbihTcGVjdWxhdGVkVHlwZSB2YWx1ZSkKK3sKKyAgICByZXR1cm4gdmFsdWUgJiYgISh2
YWx1ZSAmIFNwZWNJbnQzMk9ubHkpOworfQorCiBpbmxpbmUgYm9vbCBpc0ludDMyT3JCb29sZWFu
U3BlY3VsYXRpb24oU3BlY3VsYXRlZFR5cGUgdmFsdWUpCiB7CiAgICAgcmV0dXJuIHZhbHVlICYm
ICEodmFsdWUgJiB+KFNwZWNCb29sZWFuIHwgU3BlY0ludDMyT25seSkpOwpAQCAtMzg4LDYgKzM5
OCwxMSBAQCBpbmxpbmUgYm9vbCBpc0Jvb2xlYW5TcGVjdWxhdGlvbihTcGVjdWxhdGVkVHlwZSB2
YWx1ZSkKICAgICByZXR1cm4gdmFsdWUgPT0gU3BlY0Jvb2xlYW47CiB9CiAKK2lubGluZSBib29s
IGlzTm90Qm9vbGVhblNwZWN1bGF0aW9uKFNwZWN1bGF0ZWRUeXBlIHZhbHVlKQoreworICAgIHJl
dHVybiB2YWx1ZSAmJiAhKHZhbHVlICYgU3BlY0Jvb2xlYW4pOworfQorCiBpbmxpbmUgYm9vbCBp
c090aGVyU3BlY3VsYXRpb24oU3BlY3VsYXRlZFR5cGUgdmFsdWUpCiB7CiAgICAgcmV0dXJuIHZh
bHVlID09IFNwZWNPdGhlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAppbmRleCA0M2I1MWExNmVjYmFkYTUw
ZjlkN2Y4OGVlZTNjZjExMjZiN2EyMjRhLi43YWRiYTcxNjAxNDYxNTEwNzJlZjY5OWQyMjZhMmFm
M2NlYTA4ZDAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3Ry
YWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVk
ZSAiQXJyYXlDb25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUgIkRGR0Fic3RyYWN0SW50ZXJwcmV0ZXIu
aCIKICNpbmNsdWRlICJET01KSVRHZXR0ZXJTZXR0ZXIuaCIKKyNpbmNsdWRlICJET01KSVRTaWdu
YXR1cmUuaCIKICNpbmNsdWRlICJHZXRCeUlkU3RhdHVzLmgiCiAjaW5jbHVkZSAiR2V0dGVyU2V0
dGVyLmgiCiAjaW5jbHVkZSAiSGFzaE1hcEltcGwuaCIKQEAgLTIzMDMsNiArMjMwNCwxMyBAQCBi
b29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0
cyh1bnNpZ25lZCBjbG9iYmVyTGltaQogICAgICAgICBmb3JOb2RlKG5vZGUpLnNldFR5cGUobV9n
cmFwaCwgY2FsbERPTUdldHRlckRhdGEtPmRvbUpJVC0+cmVzdWx0VHlwZSgpKTsKICAgICAgICAg
YnJlYWs7CiAgICAgfQorICAgIGNhc2UgQ2FsbERPTTogeworICAgICAgICBjb25zdCBET01KSVQ6
OlNpZ25hdHVyZSogc2lnbmF0dXJlID0gbm9kZS0+c2lnbmF0dXJlKCk7CisgICAgICAgIGlmIChz
aWduYXR1cmUtPmVmZmVjdC53cml0ZXMpCisgICAgICAgICAgICBjbG9iYmVyV29ybGQobm9kZS0+
b3JpZ2luLnNlbWFudGljLCBjbG9iYmVyTGltaXQpOworICAgICAgICBmb3JOb2RlKG5vZGUpLnNl
dFR5cGUobV9ncmFwaCwgc2lnbmF0dXJlLT5yZXN1bHQpOworICAgICAgICBicmVhazsKKyAgICB9
CiAgICAgY2FzZSBDaGVja0FycmF5OiB7CiAgICAgICAgIGlmIChub2RlLT5hcnJheU1vZGUoKS5h
bHJlYWR5Q2hlY2tlZChtX2dyYXBoLCBub2RlLCBmb3JOb2RlKG5vZGUtPmNoaWxkMSgpKSkpIHsK
ICAgICAgICAgICAgIG1fc3RhdGUuc2V0Rm91bmRDb25zdGFudHModHJ1ZSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCmluZGV4IGU1MTRlZTFk
MzFhY2E3NzFiMzU4NWZjNzZkOTU2ZTc5NTBiMDBiMzMuLjdmMjFmYTYyNjgwZWZkZGY2ODBjMGRj
NzE3MDNiMjNlNjhiNzc4YjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQnl0ZUNvZGVQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Qnl0ZUNvZGVQYXJzZXIuY3BwCkBAIC0yMTMsNiArMjEzLDggQEAgY2xhc3MgQnl0ZUNvZGVQYXJz
ZXIgewogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoZWNrc0Z1bmN0b3I+CiAgICAgYm9vbCBoYW5k
bGVJbnRyaW5zaWNDYWxsKE5vZGUqIGNhbGxlZSwgaW50IHJlc3VsdE9wZXJhbmQsIEludHJpbnNp
YywgaW50IHJlZ2lzdGVyT2Zmc2V0LCBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIFNw
ZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24sIGNvbnN0IENoZWNrc0Z1bmN0b3ImIGluc2VydENoZWNr
cyk7CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hlY2tzRnVuY3Rvcj4KKyAgICBib29sIGhhbmRs
ZURPTUpJVENhbGwoTm9kZSogY2FsbGVlLCBpbnQgcmVzdWx0T3BlcmFuZCwgY29uc3QgRE9NSklU
OjpTaWduYXR1cmUqLCBpbnQgcmVnaXN0ZXJPZmZzZXQsIGludCBhcmd1bWVudENvdW50SW5jbHVk
aW5nVGhpcywgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbiwgY29uc3QgQ2hlY2tzRnVuY3RvciYg
aW5zZXJ0Q2hlY2tzKTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGVja3NGdW5jdG9yPgogICAg
IGJvb2wgaGFuZGxlSW50cmluc2ljR2V0dGVyKGludCByZXN1bHRPcGVyYW5kLCBjb25zdCBHZXRC
eUlkVmFyaWFudCYgaW50cmluc2ljVmFyaWFudCwgTm9kZSogdGhpc05vZGUsIGNvbnN0IENoZWNr
c0Z1bmN0b3ImIGluc2VydENoZWNrcyk7CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hlY2tzRnVu
Y3Rvcj4KICAgICBib29sIGhhbmRsZVR5cGVkQXJyYXlDb25zdHJ1Y3RvcihpbnQgcmVzdWx0T3Bl
cmFuZCwgSW50ZXJuYWxGdW5jdGlvbiosIGludCByZWdpc3Rlck9mZnNldCwgaW50IGFyZ3VtZW50
Q291bnRJbmNsdWRpbmdUaGlzLCBUeXBlZEFycmF5VHlwZSwgY29uc3QgQ2hlY2tzRnVuY3RvciYg
aW5zZXJ0Q2hlY2tzKTsKQEAgLTgxOCwxOCArODIwLDE4IEBAIGNsYXNzIEJ5dGVDb2RlUGFyc2Vy
IHsKICAgICB9CiAgICAgCiAgICAgTm9kZSogYWRkQ2FsbCgKLSAgICAgICAgaW50IHJlc3VsdCwg
Tm9kZVR5cGUgb3AsIE9wSW5mbyBvcEluZm8sIE5vZGUqIGNhbGxlZSwgaW50IGFyZ0NvdW50LCBp
bnQgcmVnaXN0ZXJPZmZzZXQsCisgICAgICAgIGludCByZXN1bHQsIE5vZGVUeXBlIG9wLCBjb25z
dCBET01KSVQ6OlNpZ25hdHVyZSogc2lnbmF0dXJlLCBOb2RlKiBjYWxsZWUsIGludCBhcmdDb3Vu
dCwgaW50IHJlZ2lzdGVyT2Zmc2V0LAogICAgICAgICBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9u
KQogICAgIHsKICAgICAgICAgaWYgKG9wID09IFRhaWxDYWxsKSB7CiAgICAgICAgICAgICBpZiAo
YWxsSW5saW5lRnJhbWVzQXJlVGFpbENhbGxzKCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGFk
ZENhbGxXaXRob3V0U2V0dGluZ1Jlc3VsdChvcCwgT3BJbmZvKCksIGNhbGxlZSwgYXJnQ291bnQs
IHJlZ2lzdGVyT2Zmc2V0LCBPcEluZm8oKSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIGFkZENh
bGxXaXRob3V0U2V0dGluZ1Jlc3VsdChvcCwgT3BJbmZvKHNpZ25hdHVyZSksIGNhbGxlZSwgYXJn
Q291bnQsIHJlZ2lzdGVyT2Zmc2V0LCBPcEluZm8oKSk7CiAgICAgICAgICAgICBvcCA9IFRhaWxD
YWxsSW5saW5lZENhbGxlcjsKICAgICAgICAgfQogCiAKICAgICAgICAgTm9kZSogY2FsbCA9IGFk
ZENhbGxXaXRob3V0U2V0dGluZ1Jlc3VsdCgKLSAgICAgICAgICAgIG9wLCBvcEluZm8sIGNhbGxl
ZSwgYXJnQ291bnQsIHJlZ2lzdGVyT2Zmc2V0LCBPcEluZm8ocHJlZGljdGlvbikpOworICAgICAg
ICAgICAgb3AsIE9wSW5mbyhzaWduYXR1cmUpLCBjYWxsZWUsIGFyZ0NvdW50LCByZWdpc3Rlck9m
ZnNldCwgT3BJbmZvKHByZWRpY3Rpb24pKTsKICAgICAgICAgVmlydHVhbFJlZ2lzdGVyIHJlc3Vs
dFJlZyhyZXN1bHQpOwogICAgICAgICBpZiAocmVzdWx0UmVnLmlzVmFsaWQoKSkKICAgICAgICAg
ICAgIHNldChyZXN1bHRSZWcsIGNhbGwpOwpAQCAtMTI4NCw3ICsxMjg2LDcgQEAgQnl0ZUNvZGVQ
YXJzZXI6OlRlcm1pbmFsaXR5IEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVDYWxsKAogICAgICAgICAv
LyBPZGRseSwgdGhpcyBjb25mbGF0ZXMgY2FsbHMgdGhhdCBoYXZlbid0IGV4ZWN1dGVkIHdpdGgg
Y2FsbHMgdGhhdCBiZWhhdmVkIHN1ZmZpY2llbnRseSBwb2x5bW9ycGhpY2FsbHkKICAgICAgICAg
Ly8gdGhhdCB3ZSBjYW5ub3Qgb3B0aW1pemUgdGhlbS4KIAotICAgICAgICBOb2RlKiBjYWxsTm9k
ZSA9IGFkZENhbGwocmVzdWx0LCBvcCwgT3BJbmZvKCksIGNhbGxUYXJnZXQsIGFyZ3VtZW50Q291
bnRJbmNsdWRpbmdUaGlzLCByZWdpc3Rlck9mZnNldCwgcHJlZGljdGlvbik7CisgICAgICAgIE5v
ZGUqIGNhbGxOb2RlID0gYWRkQ2FsbChyZXN1bHQsIG9wLCBudWxscHRyLCBjYWxsVGFyZ2V0LCBh
cmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgcmVnaXN0ZXJPZmZzZXQsIHByZWRpY3Rpb24pOwog
ICAgICAgICBpZiAoY2FsbE5vZGUtPm9wKCkgPT0gVGFpbENhbGwpCiAgICAgICAgICAgICByZXR1
cm4gVGVybWluYWw7CiAgICAgICAgIEFTU0VSVChjYWxsTm9kZS0+b3AoKSAhPSBUYWlsQ2FsbFZh
cmFyZ3MgJiYgY2FsbE5vZGUtPm9wKCkgIT0gVGFpbENhbGxGb3J3YXJkVmFyYXJncyk7CkBAIC0x
Mjk5LDcgKzEzMDEsNyBAQCBCeXRlQ29kZVBhcnNlcjo6VGVybWluYWxpdHkgQnl0ZUNvZGVQYXJz
ZXI6OmhhbmRsZUNhbGwoCiAgICAgICAgIHJldHVybiBOb25UZXJtaW5hbDsKICAgICB9CiAgICAg
Ci0gICAgTm9kZSogY2FsbE5vZGUgPSBhZGRDYWxsKHJlc3VsdCwgb3AsIE9wSW5mbygpLCBjYWxs
VGFyZ2V0LCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgcmVnaXN0ZXJPZmZzZXQsIHByZWRp
Y3Rpb24pOworICAgIE5vZGUqIGNhbGxOb2RlID0gYWRkQ2FsbChyZXN1bHQsIG9wLCBudWxscHRy
LCBjYWxsVGFyZ2V0LCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgcmVnaXN0ZXJPZmZzZXQs
IHByZWRpY3Rpb24pOwogICAgIGlmIChjYWxsTm9kZS0+b3AoKSA9PSBUYWlsQ2FsbCkKICAgICAg
ICAgcmV0dXJuIFRlcm1pbmFsOwogICAgIEFTU0VSVChjYWxsTm9kZS0+b3AoKSAhPSBUYWlsQ2Fs
bFZhcmFyZ3MgJiYgY2FsbE5vZGUtPm9wKCkgIT0gVGFpbENhbGxGb3J3YXJkVmFyYXJncyk7CkBA
IC0xNzI2LDYgKzE3MjgsMTkgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6YXR0ZW1wdFRvSW5saW5l
Q2FsbChOb2RlKiBjYWxsVGFyZ2V0Tm9kZSwgaW50IHJlc3VsdE9wZXJhbmQKICAgICAgICAgICAg
IFJFTEVBU0VfQVNTRVJUKCFkaWRJbnNlcnRDaGVja3MpOwogICAgICAgICAgICAgLy8gV2UgbWln
aHQgc3RpbGwgdHJ5IHRvIGlubGluZSB0aGUgSW50cmluc2ljIGJlY2F1c2UgaXQgbWlnaHQgYmUg
YSBidWlsdGluIEpTIGZ1bmN0aW9uLgogICAgICAgICB9CisKKyAgICAgICAgaWYgKE9wdGlvbnM6
OnVzZURPTUpJVCgpKSB7CisgICAgICAgICAgICBpZiAoY29uc3QgRE9NSklUOjpTaWduYXR1cmUq
IHNpZ25hdHVyZSA9IGNhbGxlZS5zaWduYXR1cmVGb3Ioc3BlY2lhbGl6YXRpb25LaW5kKSkgewor
ICAgICAgICAgICAgICAgIGlmIChoYW5kbGVET01KSVRDYWxsKGNhbGxUYXJnZXROb2RlLCByZXN1
bHRPcGVyYW5kLCBzaWduYXR1cmUsIHJlZ2lzdGVyT2Zmc2V0LCBhcmd1bWVudENvdW50SW5jbHVk
aW5nVGhpcywgcHJlZGljdGlvbiwgaW5zZXJ0Q2hlY2tzV2l0aEFjY291bnRpbmcpKSB7CisgICAg
ICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGRpZEluc2VydENoZWNrcyk7CisgICAgICAg
ICAgICAgICAgICAgIGFkZFRvR3JhcGgoUGhhbnRvbSwgY2FsbFRhcmdldE5vZGUpOworICAgICAg
ICAgICAgICAgICAgICBlbWl0QXJndW1lbnRQaGFudG9tcyhyZWdpc3Rlck9mZnNldCwgYXJndW1l
bnRDb3VudEluY2x1ZGluZ1RoaXMpOworICAgICAgICAgICAgICAgICAgICBpbmxpbmluZ0JhbGFu
Y2UtLTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKCFkaWRJbnNlcnRDaGVja3MpOworICAg
ICAgICAgICAgfQorICAgICAgICB9CiAgICAgfQogICAgIAogICAgIHVuc2lnbmVkIG15SW5saW5p
bmdDb3N0ID0gaW5saW5pbmdDb3N0KGNhbGxlZSwgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMs
IElubGluZUNhbGxGcmFtZTo6Y2FsbE1vZGVGb3Ioa2luZCkpOwpAQCAtMjA1MSw3ICsyMDY2LDcg
QEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW5saW5pbmcoCiAgICAgTm9kZSogbXlDYWxs
VGFyZ2V0Tm9kZSA9IGdldERpcmVjdChjYWxsZWVSZWcpOwogICAgIGlmIChjb3VsZFRha2VTbG93
UGF0aCkgewogICAgICAgICBhZGRDYWxsKAotICAgICAgICAgICAgcmVzdWx0T3BlcmFuZCwgY2Fs
bE9wLCBPcEluZm8oKSwgbXlDYWxsVGFyZ2V0Tm9kZSwgYXJndW1lbnRDb3VudEluY2x1ZGluZ1Ro
aXMsCisgICAgICAgICAgICByZXN1bHRPcGVyYW5kLCBjYWxsT3AsIG51bGxwdHIsIG15Q2FsbFRh
cmdldE5vZGUsIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLAogICAgICAgICAgICAgcmVnaXN0
ZXJPZmZzZXQsIHByZWRpY3Rpb24pOwogICAgIH0gZWxzZSB7CiAgICAgICAgIGFkZFRvR3JhcGgo
Q2hlY2tCYWRDZWxsKTsKQEAgLTI2MDEsNiArMjYxNiwyNSBAQCBib29sIEJ5dGVDb2RlUGFyc2Vy
OjpoYW5kbGVJbnRyaW5zaWNDYWxsKE5vZGUqIGNhbGxlZSwgaW50IHJlc3VsdE9wZXJhbmQsIElu
dHJpbgogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGVja3NGdW5jdG9yPgorYm9vbCBCeXRlQ29k
ZVBhcnNlcjo6aGFuZGxlRE9NSklUQ2FsbChOb2RlKiBjYWxsVGFyZ2V0LCBpbnQgcmVzdWx0T3Bl
cmFuZCwgY29uc3QgRE9NSklUOjpTaWduYXR1cmUqIHNpZ25hdHVyZSwgaW50IHJlZ2lzdGVyT2Zm
c2V0LCBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIFNwZWN1bGF0ZWRUeXBlIHByZWRp
Y3Rpb24sIGNvbnN0IENoZWNrc0Z1bmN0b3ImIGluc2VydENoZWNrcykKK3sKKyAgICBpZiAoYXJn
dW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgIT0gc3RhdGljX2Nhc3Q8aW50PigxICsgc2lnbmF0dXJl
LT5hcmd1bWVudENvdW50KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmIChtX2lubGlu
ZVN0YWNrVG9wLT5tX2V4aXRQcm9maWxlLmhhc0V4aXRTaXRlKG1fY3VycmVudEluZGV4LCBCYWRU
eXBlKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgLy8gRklYTUU6IEN1cnJlbnRseSwg
d2Ugb25seSBzdXBwb3J0IGZ1bmN0aW9ucyB3aGljaCBhcmd1bWVudHMgYXJlIHVwIHRvIDIuCisg
ICAgLy8gRXZlbnR1YWxseSwgd2Ugc2hvdWxkIGV4dGVuZCB0aGlzLiBCdXQgcG9zc2libHksIDIg
b3IgMyBjYW4gY292ZXIgdHlwaWNhbCB1c2UgY2FzZXMuCisgICAgLy8gaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NDM0NgorICAgIEFTU0VSVF9XSVRIX01FU1NBR0Uo
YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgPD0gSlNDX0RPTUpJVF9TSUdOQVRVUkVfTUFYX0FS
R1VNRU5UU19JTkNMVURJTkdfVEhJUywgIkN1cnJlbnRseSBDYWxsRE9NIGRvZXMgbm90IHN1cHBv
cnQgYW4gYXJiaXRyYXJ5IGxlbmd0aCBhcmd1bWVudHMuIik7CisKKyAgICBpbnNlcnRDaGVja3Mo
KTsKKyAgICBhZGRDYWxsKHJlc3VsdE9wZXJhbmQsIENhbGwsIHNpZ25hdHVyZSwgY2FsbFRhcmdl
dCwgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIHJlZ2lzdGVyT2Zmc2V0LCBwcmVkaWN0aW9u
KTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworCit0ZW1wbGF0ZTx0eXBlbmFtZSBDaGVja3NGdW5j
dG9yPgogYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW50cmluc2ljR2V0dGVyKGludCByZXN1
bHRPcGVyYW5kLCBjb25zdCBHZXRCeUlkVmFyaWFudCYgdmFyaWFudCwgTm9kZSogdGhpc05vZGUs
IGNvbnN0IENoZWNrc0Z1bmN0b3ImIGluc2VydENoZWNrcykKIHsKICAgICBzd2l0Y2ggKHZhcmlh
bnQuaW50cmluc2ljKCkpIHsKQEAgLTQ3OTIsNyArNDgyNiw3IEBAIGJvb2wgQnl0ZUNvZGVQYXJz
ZXI6OnBhcnNlQmxvY2sodW5zaWduZWQgbGltaXQpCiAgICAgICAgICAgICBpbnQgY2FsbGVlID0g
Y3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZDsKICAgICAgICAgICAgIGludCBhcmd1bWVu
dENvdW50SW5jbHVkaW5nVGhpcyA9IGN1cnJlbnRJbnN0cnVjdGlvblszXS51Lm9wZXJhbmQ7CiAg
ICAgICAgICAgICBpbnQgcmVnaXN0ZXJPZmZzZXQgPSAtY3VycmVudEluc3RydWN0aW9uWzRdLnUu
b3BlcmFuZDsKLSAgICAgICAgICAgIGFkZENhbGwocmVzdWx0LCBDYWxsRXZhbCwgT3BJbmZvKCks
IGdldChWaXJ0dWFsUmVnaXN0ZXIoY2FsbGVlKSksIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlz
LCByZWdpc3Rlck9mZnNldCwgZ2V0UHJlZGljdGlvbigpKTsKKyAgICAgICAgICAgIGFkZENhbGwo
cmVzdWx0LCBDYWxsRXZhbCwgbnVsbHB0ciwgZ2V0KFZpcnR1YWxSZWdpc3RlcihjYWxsZWUpKSwg
YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIHJlZ2lzdGVyT2Zmc2V0LCBnZXRQcmVkaWN0aW9u
KCkpOwogICAgICAgICAgICAgTkVYVF9PUENPREUob3BfY2FsbF9ldmFsKTsKICAgICAgICAgfQog
ICAgICAgICAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Ns
b2JiZXJpemUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCmlu
ZGV4IGI2MjFlZjAyMmQ4ODY1ZTJlN2EyMDExNmNkMjA4YzVjMjQ2YzlmZmIuLmU1ZDIxNzJmOWFl
MGU3OTFhYWEyYTY4MmJhYjE0ZWJhOTMwNjdkYmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQ2xvYmJlcml6ZS5oCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAiREZHTGF6eU5v
ZGUuaCIKICNpbmNsdWRlICJERkdQdXJlVmFsdWUuaCIKICNpbmNsdWRlICJET01KSVRDYWxsRE9N
R2V0dGVyUGF0Y2hwb2ludC5oIgorI2luY2x1ZGUgIkRPTUpJVFNpZ25hdHVyZS5oIgogCiBuYW1l
c3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAKQEAgLTk1OCwyMCArOTU5LDM4IEBAIHZvaWQg
Y2xvYmJlcml6ZShHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUsIGNvbnN0IFJlYWRGdW5jdG9yJiBy
ZWFkLCBjb25zdCBXcml0ZUZ1CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgd3Jp
dGUoQWJzdHJhY3RIZWFwKERPTVN0YXRlLCBlZmZlY3Qud3JpdGVzLnJhd1JlcHJlc2VudGF0aW9u
KCkpKTsKICAgICAgICAgfQotICAgICAgICBpZiAoZWZmZWN0LmRlZikgewotICAgICAgICAgICAg
RE9NSklUOjpIZWFwUmFuZ2UgcmFuZ2UgPSBlZmZlY3QuZGVmLnZhbHVlKCk7CisgICAgICAgIGlm
IChlZmZlY3QuZGVmICE9IERPTUpJVDo6SGVhcFJhbmdlOjp0b3AoKSkgeworICAgICAgICAgICAg
RE9NSklUOjpIZWFwUmFuZ2UgcmFuZ2UgPSBlZmZlY3QuZGVmOwogICAgICAgICAgICAgaWYgKHJh
bmdlID09IERPTUpJVDo6SGVhcFJhbmdlOjpub25lKCkpCiAgICAgICAgICAgICAgICAgZGVmKFB1
cmVWYWx1ZShub2RlLCBub2RlLT5jYWxsRE9NR2V0dGVyRGF0YSgpLT5kb21KSVQpKTsKICAgICAg
ICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgIC8vIERlZiB3aXRoIGhlYXAgbG9jYXRpb24u
IFdlIGRvIG5vdCBpbmNsdWRlICJHbG9iYWxPYmplY3QiIGZvciB0aGF0IHNpbmNlIHRoaXMgaW5m
b3JtYXRpb24gaXMgaW5jbHVkZWQgaW4gdGhlIGJhc2Ugbm9kZS4KLSAgICAgICAgICAgICAgICAv
LyBGSVhNRTogV2hlbiBzdXBwb3J0aW5nIHRoZSBvdGhlciBub2RlcyBsaWtlIGdldEVsZW1lbnRC
eUlkKCJzdHJpbmciKSwgd2Ugc2hvdWxkIGluY2x1ZGUgdGhlIGJhc2UgYW5kIHRoZSBpZCBzdHJp
bmcuCi0gICAgICAgICAgICAgICAgLy8gQ3VycmVudGx5LCB3ZSBvbmx5IHNlZSB0aGUgRE9NSklU
IGdldHRlciBoZXJlLiBTbyBqdXN0IGluY2x1ZGluZyAiYmFzZSIgaXMgb2suCisgICAgICAgICAg
ICAgICAgLy8gV2Ugb25seSBzZWUgdGhlIERPTUpJVCBnZXR0ZXIgaGVyZS4gU28ganVzdCBpbmNs
dWRpbmcgImJhc2UiIGlzIG9rLgogICAgICAgICAgICAgICAgIGRlZihIZWFwTG9jYXRpb24oRE9N
U3RhdGVMb2MsIEFic3RyYWN0SGVhcChET01TdGF0ZSwgcmFuZ2UucmF3UmVwcmVzZW50YXRpb24o
KSksIG5vZGUtPmNoaWxkMSgpKSwgTGF6eU5vZGUobm9kZSkpOwogICAgICAgICAgICAgfQogICAg
ICAgICB9CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKKyAgICBjYXNlIENhbGxET006IHsKKyAg
ICAgICAgY29uc3QgRE9NSklUOjpTaWduYXR1cmUqIHNpZ25hdHVyZSA9IG5vZGUtPnNpZ25hdHVy
ZSgpOworICAgICAgICBET01KSVQ6OkVmZmVjdCBlZmZlY3QgPSBzaWduYXR1cmUtPmVmZmVjdDsK
KyAgICAgICAgaWYgKGVmZmVjdC5yZWFkcykgeworICAgICAgICAgICAgaWYgKGVmZmVjdC5yZWFk
cyA9PSBET01KSVQ6OkhlYXBSYW5nZTo6dG9wKCkpCisgICAgICAgICAgICAgICAgcmVhZChXb3Js
ZCk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgcmVhZChBYnN0cmFjdEhlYXAo
RE9NU3RhdGUsIGVmZmVjdC5yZWFkcy5yYXdSZXByZXNlbnRhdGlvbigpKSk7CisgICAgICAgIH0K
KyAgICAgICAgaWYgKGVmZmVjdC53cml0ZXMpIHsKKyAgICAgICAgICAgIGlmIChlZmZlY3Qud3Jp
dGVzID09IERPTUpJVDo6SGVhcFJhbmdlOjp0b3AoKSkKKyAgICAgICAgICAgICAgICB3cml0ZShI
ZWFwKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB3cml0ZShBYnN0cmFjdEhl
YXAoRE9NU3RhdGUsIGVmZmVjdC53cml0ZXMucmF3UmVwcmVzZW50YXRpb24oKSkpOworICAgICAg
ICB9CisgICAgICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoZWZmZWN0LmRlZiA9PSBET01KSVQ6Okhl
YXBSYW5nZTo6dG9wKCksICJDdXJyZW50bHksIHdlIGRvIG5vdCBhY2NlcHQgYW55IGRlZiBmb3Ig
Q2FsbERPTS4iKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwogICAgIGNhc2UgQXJyYXlpZnk6
CiAgICAgY2FzZSBBcnJheWlmeVRvU3RydWN0dXJlOgogICAgICAgICByZWFkKEpTQ2VsbF9zdHJ1
Y3R1cmVJRCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNH
Qy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAKaW5kZXggOTdj
ZDg0ODc0NzdhYzkwODRmZTkwZGRiOThkMzBmNDY2ZTVjYTE2Zi4uOWU2YWE1NTBhNDRlMGUxYzYy
MTc1ZTUxOWY2MGEzZTg1MTVhN2I3YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdEb2VzR0MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9l
c0dDLmNwcApAQCAtMzAxLDYgKzMwMSw3IEBAIGJvb2wgZG9lc0dDKEdyYXBoJiBncmFwaCwgTm9k
ZSogbm9kZSkKICAgICBjYXNlIENyZWF0ZVJlc3Q6CiAgICAgY2FzZSBUb0xvd2VyQ2FzZToKICAg
ICBjYXNlIENhbGxET01HZXR0ZXI6CisgICAgY2FzZSBDYWxsRE9NOgogICAgICAgICByZXR1cm4g
dHJ1ZTsKICAgICAgICAgCiAgICAgY2FzZSBNdWx0aVB1dEJ5T2Zmc2V0OgpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKaW5kZXggMWQ0ZTkwN2E3ZjJmZmNjMmQ5
YTJhMDM3NzExNDZhNzkxMDFmM2NkMy4uYzhkZDU2Mjc4OGYwOTk1M2NjYjExNjEwYTA5NDI0Yjli
ZTExN2E4YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBo
YXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3Bw
CkBAIC0xNzA4LDkgKzE3MDgsMTAgQEAgY2xhc3MgRml4dXBQaGFzZSA6IHB1YmxpYyBQaGFzZSB7
CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogCi0gICAgICAgIGNhc2UgQ2hlY2tET006
Ci0gICAgICAgICAgICBmaXhFZGdlPENlbGxVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAg
Y2FzZSBDaGVja0RPTTogeworICAgICAgICAgICAgZml4dXBDaGVja0RPTShub2RlKTsKICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICB9CiAKICAgICAgICAgY2FzZSBDYWxsRE9NR2V0dGVyOiB7
CiAgICAgICAgICAgICBET01KSVQ6OkNhbGxET01HZXR0ZXJQYXRjaHBvaW50KiBwYXRjaHBvaW50
ID0gbm9kZS0+Y2FsbERPTUdldHRlckRhdGEoKS0+cGF0Y2hwb2ludDsKQEAgLTE3MjAsNiArMTcy
MSwxNiBAQCBjbGFzcyBGaXh1cFBoYXNlIDogcHVibGljIFBoYXNlIHsKICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICB9CiAKKyAgICAgICAgY2FzZSBDYWxsRE9NOiB7CisgICAgICAgICAgICBm
aXh1cENhbGxET00obm9kZSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAg
ICAgIGNhc2UgQ2FsbDogeworICAgICAgICAgICAgYXR0ZW1wdFRvTWFrZUNhbGxET00obm9kZSk7
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCiAjaWYgIUFTU0VSVF9ESVNBQkxFRAog
ICAgICAgICAvLyBIYXZlIHRoZXNlIG5vLW9wIGNhc2VzIGhlcmUgdG8gZW5zdXJlIHRoYXQgbm9i
b2R5IGZvcmdldHMgdG8gYWRkIGhhbmRsZXJzIGZvciBuZXcgb3Bjb2Rlcy4KICAgICAgICAgY2Fz
ZSBTZXRBcmd1bWVudDoKQEAgLTE3MzYsNyArMTc0Nyw2IEBAIGNsYXNzIEZpeHVwUGhhc2UgOiBw
dWJsaWMgUGhhc2UgewogICAgICAgICBjYXNlIEdldEdsb2JhbFZhcjoKICAgICAgICAgY2FzZSBH
ZXRHbG9iYWxMZXhpY2FsVmFyaWFibGU6CiAgICAgICAgIGNhc2UgTm90aWZ5V3JpdGU6Ci0gICAg
ICAgIGNhc2UgQ2FsbDoKICAgICAgICAgY2FzZSBEaXJlY3RDYWxsOgogICAgICAgICBjYXNlIENo
ZWNrVHlwZUluZm9GbGFnczoKICAgICAgICAgY2FzZSBUYWlsQ2FsbElubGluZWRDYWxsZXI6CkBA
IC0yNjU5LDYgKzI2NjksOTMgQEAgY2xhc3MgRml4dXBQaGFzZSA6IHB1YmxpYyBQaGFzZSB7CiAg
ICAgICAgICAgICBPcEluZm8oYXJyYXlNb2RlLmFzV29yZCgpKSwgRWRnZShjaGlsZCwgS25vd25D
ZWxsVXNlKSwgRWRnZShzdG9yYWdlKSk7CiAgICAgfQogICAgIAorICAgIGJvb2wgYXR0ZW1wdFRv
TWFrZUNhbGxET00oTm9kZSogbm9kZSkKKyAgICB7CisgICAgICAgIGlmIChtX2dyYXBoLmhhc0V4
aXRTaXRlKG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgQmFkVHlwZSkpCisgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CisKKyAgICAgICAgY29uc3QgRE9NSklUOjpTaWduYXR1cmUqIHNpZ25hdHVyZSA9
IG5vZGUtPnNpZ25hdHVyZSgpOworICAgICAgICBpZiAoIXNpZ25hdHVyZSkKKyAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKKworICAgICAgICB7CisgICAgICAgICAgICB1bnNpZ25lZCBpbmRleCA9
IDA7CisgICAgICAgICAgICBib29sIHNob3VsZENvbnZlcnRUb0NhbGxET00gPSB0cnVlOworICAg
ICAgICAgICAgbV9ncmFwaC5kb1RvQ2hpbGRyZW4obm9kZSwgWyZdKEVkZ2UmIGVkZ2UpIHsKKyAg
ICAgICAgICAgICAgICAvLyBDYWxsZWUuIElnbm9yZSB0aGlzLiBERkdCeXRlQ29kZVBhcnNlciBh
bHJlYWR5IGVtaXQgYXBwcm9wcmlhdGUgY2hlY2tzLgorICAgICAgICAgICAgICAgIGlmICghaW5k
ZXgpCisgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICAgICAgICAgIGlmIChp
bmRleCA9PSAxKSB7CisgICAgICAgICAgICAgICAgICAgIC8vIERPTSBub2RlIGNhc2UuCisgICAg
ICAgICAgICAgICAgICAgIGlmIChlZGdlLT5zaG91bGRTcGVjdWxhdGVOb3RDZWxsKCkpCisgICAg
ICAgICAgICAgICAgICAgICAgICBzaG91bGRDb252ZXJ0VG9DYWxsRE9NID0gZmFsc2U7CisgICAg
ICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChzaWduYXR1
cmUtPmFyZ3VtZW50c1tpbmRleCAtIDJdKSB7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgU3Bl
Y1N0cmluZzoKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlZGdlLT5zaG91bGRTcGVjdWxh
dGVOb3RTdHJpbmcoKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaG91bGRDb252ZXJ0
VG9DYWxsRE9NID0gZmFsc2U7CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgICAgICAgICAgY2FzZSBTcGVjSW50MzJPbmx5OgorICAgICAgICAgICAgICAgICAgICAg
ICAgaWYgKGVkZ2UtPnNob3VsZFNwZWN1bGF0ZU5vdEludDMyKCkpCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc2hvdWxkQ29udmVydFRvQ2FsbERPTSA9IGZhbHNlOworICAgICAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgU3BlY0Jvb2xlYW46
CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZWRnZS0+c2hvdWxkU3BlY3VsYXRlTm90Qm9v
bGVhbigpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNob3VsZENvbnZlcnRUb0NhbGxE
T00gPSBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg
ICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICsraW5kZXg7
CisgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIGlmICghc2hvdWxkQ29udmVydFRvQ2FsbERP
TSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKworICAgICAgICBO
b2RlKiB0aGlzTm9kZSA9IG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMSkubm9kZSgpOworICAg
ICAgICBSZWY8RE9NSklUOjpQYXRjaHBvaW50PiBjaGVja0RPTVBhdGNocG9pbnQgPSBzaWduYXR1
cmUtPmNoZWNrRE9NKCk7CisgICAgICAgIG1fZ3JhcGgubV9kb21KSVRQYXRjaHBvaW50cy5hcHBl
bmQoY2hlY2tET01QYXRjaHBvaW50LnB0cigpKTsKKyAgICAgICAgTm9kZSogY2hlY2tET00gPSBt
X2luc2VydGlvblNldC5pbnNlcnROb2RlKG1faW5kZXhJbkJsb2NrLCBTcGVjTm9uZSwgQ2hlY2tE
T00sIG5vZGUtPm9yaWdpbiwgT3BJbmZvKGNoZWNrRE9NUGF0Y2hwb2ludC5wdHIoKSksIE9wSW5m
byhzaWduYXR1cmUtPmNsYXNzSW5mbyksIEVkZ2UodGhpc05vZGUpKTsKKyAgICAgICAgbm9kZS0+
Y29udmVydFRvQ2FsbERPTShtX2dyYXBoKTsKKyAgICAgICAgZml4dXBDaGVja0RPTShjaGVja0RP
TSk7CisgICAgICAgIGZpeHVwQ2FsbERPTShub2RlKTsKKyAgICAgICAgcmV0dXJuIHRydWU7Cisg
ICAgfQorCisgICAgdm9pZCBmaXh1cENoZWNrRE9NKE5vZGUqIG5vZGUpCisgICAgeworICAgICAg
ICBmaXhFZGdlPENlbGxVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICB9CisKKyAgICB2b2lkIGZp
eHVwQ2FsbERPTShOb2RlKiBub2RlKQorICAgIHsKKyAgICAgICAgY29uc3QgRE9NSklUOjpTaWdu
YXR1cmUqIHNpZ25hdHVyZSA9IG5vZGUtPnNpZ25hdHVyZSgpOworICAgICAgICBhdXRvIGZpeHVw
ID0gWyZdKEVkZ2UmIGVkZ2UsIHVuc2lnbmVkIGFyZ3VtZW50SW5kZXgpIHsKKyAgICAgICAgICAg
IGlmICghZWRnZSkKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICBzd2l0Y2gg
KHNpZ25hdHVyZS0+YXJndW1lbnRzW2FyZ3VtZW50SW5kZXhdKSB7CisgICAgICAgICAgICBjYXNl
IFNwZWNTdHJpbmc6CisgICAgICAgICAgICAgICAgZml4RWRnZTxTdHJpbmdVc2U+KGVkZ2UpOwor
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBTcGVjSW50MzJPbmx5Ogor
ICAgICAgICAgICAgICAgIGZpeEVkZ2U8SW50MzJVc2U+KGVkZ2UpOworICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgY2FzZSBTcGVjQm9vbGVhbjoKKyAgICAgICAgICAgICAgICBm
aXhFZGdlPEJvb2xlYW5Vc2U+KGVkZ2UpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hF
RCgpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9Owor
ICAgICAgICBmaXhFZGdlPENlbGxVc2U+KG5vZGUtPmNoaWxkMSgpKTsgLy8gRE9NLgorICAgICAg
ICBmaXh1cChub2RlLT5jaGlsZDIoKSwgMCk7CisgICAgICAgIGZpeHVwKG5vZGUtPmNoaWxkMygp
LCAxKTsKKyAgICB9CisKICAgICB2b2lkIGZpeHVwQ2hlY2tzSW5CbG9jayhCYXNpY0Jsb2NrKiBi
bG9jaykKICAgICB7CiAgICAgICAgIGlmICghYmxvY2spCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdOb2RlLmNwcAppbmRleCBmMzcxMTdiZjk2OWZlNGI2OWQ5NWYwMDFkNTY4ODA0NmJkY2Q5NDUw
Li42YTk0YjU5OWQ4N2E4ODFkNDU5OTA5OGM2YzNlYmNmZDQ2MDc2ZjY3IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHTm9kZS5jcHAKQEAgLTIyMCw2ICsyMjAsMjYgQEAgdm9pZCBOb2RlOjpj
b252ZXJ0VG9EaXJlY3RDYWxsKEZyb3plblZhbHVlKiBleGVjdXRhYmxlKQogICAgIG1fb3BJbmZv
ID0gZXhlY3V0YWJsZTsKIH0KIAordm9pZCBOb2RlOjpjb252ZXJ0VG9DYWxsRE9NKEdyYXBoJiBn
cmFwaCkKK3sKKyAgICBBU1NFUlQob3AoKSA9PSBDYWxsKTsKKyAgICBBU1NFUlQoc2lnbmF0dXJl
KCkpOworCisgICAgRWRnZSBlZGdlc1szXTsKKyAgICAvLyBTa2lwIHRoZSBmaXJzdCBvbmUuIFRo
aXMgaXMgY2FsbGVlLgorICAgIFJFTEVBU0VfQVNTRVJUKG51bUNoaWxkcmVuKCkgPD0gNCk7Cisg
ICAgZm9yICh1bnNpZ25lZCBpID0gMTsgaSA8IG51bUNoaWxkcmVuKCk7ICsraSkKKyAgICAgICAg
ZWRnZXNbaSAtIDFdID0gZ3JhcGgudmFyQXJnQ2hpbGQodGhpcywgaSk7CisKKyAgICBzZXRPcEFu
ZERlZmF1bHRGbGFncyhDYWxsRE9NKTsKKyAgICBjaGlsZHJlbi5zZXRDaGlsZDEoZWRnZXNbMF0p
OworICAgIGNoaWxkcmVuLnNldENoaWxkMihlZGdlc1sxXSk7CisgICAgY2hpbGRyZW4uc2V0Q2hp
bGQzKGVkZ2VzWzJdKTsKKworICAgIGlmICghc2lnbmF0dXJlKCktPmVmZmVjdC5tdXN0R2VuZXJh
dGUoKSkKKyAgICAgICAgY2xlYXJGbGFncyhOb2RlTXVzdEdlbmVyYXRlKTsKK30KKwogU3RyaW5n
IE5vZGU6OnRyeUdldFN0cmluZyhHcmFwaCYgZ3JhcGgpCiB7CiAgICAgaWYgKGhhc0NvbnN0YW50
KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCmluZGV4IDg4Zjg4MTE4OTBlMTc3M2Vh
MWQ2MDJlOWNhYzljNTgxZGE0ZjliOWIuLjA3ZDY0NGYzZDNjNTg0YjdiZmNiYzhmYmVlNWM1MmVk
NjA4NWU5YjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCkBAIC02Miw2ICs2Miw3
IEBAIG5hbWVzcGFjZSBET01KSVQgewogY2xhc3MgR2V0dGVyU2V0dGVyOwogY2xhc3MgUGF0Y2hw
b2ludDsKIGNsYXNzIENhbGxET01HZXR0ZXJQYXRjaHBvaW50OworY2xhc3MgU2lnbmF0dXJlOwog
fQogCiBuYW1lc3BhY2UgUHJvZmlsZXIgewpAQCAtNjUyLDYgKzY1Myw4IEBAIHN0cnVjdCBOb2Rl
IHsKICAgICB9CiAgICAgCiAgICAgdm9pZCBjb252ZXJ0VG9EaXJlY3RDYWxsKEZyb3plblZhbHVl
Kik7CisKKyAgICB2b2lkIGNvbnZlcnRUb0NhbGxET00oR3JhcGgmKTsKICAgICAKICAgICBKU1Zh
bHVlIGFzSlNWYWx1ZSgpCiAgICAgewpAQCAtMTQ2NCw2ICsxNDY3LDcgQEAgc3RydWN0IE5vZGUg
ewogICAgICAgICBjYXNlIFRvTnVtYmVyOgogICAgICAgICBjYXNlIExvYWRGcm9tSlNNYXBCdWNr
ZXQ6CiAgICAgICAgIGNhc2UgQ2FsbERPTUdldHRlcjoKKyAgICAgICAgY2FzZSBDYWxsRE9NOgog
ICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CkBAIC0xOTgxLDYgKzE5ODUsMTEgQEAgc3RydWN0IE5vZGUgewogICAgIHsK
ICAgICAgICAgcmV0dXJuIGlzSW50MzJTcGVjdWxhdGlvbihwcmVkaWN0aW9uKCkpOwogICAgIH0K
KworICAgIGJvb2wgc2hvdWxkU3BlY3VsYXRlTm90SW50MzIoKQorICAgIHsKKyAgICAgICAgcmV0
dXJuIGlzTm90SW50MzJTcGVjdWxhdGlvbihwcmVkaWN0aW9uKCkpOworICAgIH0KICAgICAKICAg
ICBib29sIHNhd0Jvb2xlYW5zKCkKICAgICB7CkBAIC0yMDQxLDYgKzIwNTAsMTEgQEAgc3RydWN0
IE5vZGUgewogICAgIHsKICAgICAgICAgcmV0dXJuIGlzQm9vbGVhblNwZWN1bGF0aW9uKHByZWRp
Y3Rpb24oKSk7CiAgICAgfQorCisgICAgYm9vbCBzaG91bGRTcGVjdWxhdGVOb3RCb29sZWFuKCkK
KyAgICB7CisgICAgICAgIHJldHVybiBpc05vdEJvb2xlYW5TcGVjdWxhdGlvbihwcmVkaWN0aW9u
KCkpOworICAgIH0KICAgICAKICAgICBib29sIHNob3VsZFNwZWN1bGF0ZU90aGVyKCkKICAgICB7
CkBAIC0yMDY2LDYgKzIwODAsMTEgQEAgc3RydWN0IE5vZGUgewogICAgIHsKICAgICAgICAgcmV0
dXJuIGlzU3RyaW5nU3BlY3VsYXRpb24ocHJlZGljdGlvbigpKTsKICAgICB9CisKKyAgICBib29s
IHNob3VsZFNwZWN1bGF0ZU5vdFN0cmluZygpCisgICAgeworICAgICAgICByZXR1cm4gaXNOb3RT
dHJpbmdTcGVjdWxhdGlvbihwcmVkaWN0aW9uKCkpOworICAgIH0KICAKICAgICBib29sIHNob3Vs
ZFNwZWN1bGF0ZVN0cmluZ09yT3RoZXIoKQogICAgIHsKQEAgLTIzNjgsNiArMjM4NywxOCBAQCBz
dHJ1Y3QgTm9kZSB7CiAgICAgICAgIHJldHVybiBtX29wSW5mbzIuYXM8Y29uc3QgQ2xhc3NJbmZv
Kj4oKTsKICAgICB9CiAKKyAgICBib29sIGhhc1NpZ25hdHVyZSgpIGNvbnN0CisgICAgeworICAg
ICAgICAvLyBOb3RlIHRoYXQgdGhpcyBkb2VzIG5vdCBpbmNsdWRlIFRhaWxDYWxsIG5vZGUgdHlw
ZXMgaW50ZW50aW9uYWxseS4KKyAgICAgICAgLy8gQ2FsbERPTSBub2RlIHR5cGVzIGFyZSBhbHdh
eXMgY29udmVydGVkIGZyb20gQ2FsbC4KKyAgICAgICAgcmV0dXJuIG9wKCkgPT0gQ2FsbCB8fCBv
cCgpID09IENhbGxET007CisgICAgfQorCisgICAgY29uc3QgRE9NSklUOjpTaWduYXR1cmUqIHNp
Z25hdHVyZSgpCisgICAgeworICAgICAgICByZXR1cm4gbV9vcEluZm8uYXM8Y29uc3QgRE9NSklU
OjpTaWduYXR1cmUqPigpOworICAgIH0KKwogICAgIE5vZGUqIHJlcGxhY2VtZW50KCkgY29uc3QK
ICAgICB7CiAgICAgICAgIHJldHVybiBtX21pc2MucmVwbGFjZW1lbnQ7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR05vZGVUeXBlLmgKaW5kZXggZDk3NWI3NjIyMGMwMmMxMzExYzE5MmVhOWFk
MDJlNjAxYTUyMDRlMC4uZjM3NDIzY2VlYjIyODYyYjZjMmZhYTViYmEwMzQ1YTMzNmVmNjM5ZSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaApAQCAtNDA3LDYgKzQwNyw3
IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKICAgICAvKiBOb2RlcyBmb3IgRE9N
IEpJVCAqL1wKICAgICBtYWNybyhDaGVja0RPTSwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1h
Y3JvKENhbGxET01HZXR0ZXIsIE5vZGVSZXN1bHRKUyB8IE5vZGVNdXN0R2VuZXJhdGUpIFwKKyAg
ICBtYWNybyhDYWxsRE9NLCBOb2RlUmVzdWx0SlMgfCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAKIC8v
IFRoaXMgZW51bSBnZW5lcmF0ZXMgYSBtb25vdG9uaWNhbGx5IGluY3JlYXNpbmcgaWQgZm9yIGFs
bCBOb2RlIHR5cGVzLAogLy8gYW5kIGlzIHVzZWQgYnkgdGhlIHN1YnNlcXVlbnQgZW51bSB0byBm
aWxsIG91dCB0aGUgaWQgKGFzIGFjY2Vzc2VkIHZpYSB0aGUgTm9kZUlkTWFzaykuCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBo
YXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0
aW9uUGhhc2UuY3BwCmluZGV4IDZlZDcyOWIzYjg1NzMxYzBhNmU1MDk2NzA5Zjk4MDE2YTRiMWY4
ZTAuLjIwNTMxYTA5MzQyYTVlYmYwMTNkYzNiZTA5YTU3ZDAyNmVhNDRkNzMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2Uu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0
aW9uUGhhc2UuY3BwCkBAIC0xMDIwLDcgKzEwMjAsOCBAQCBjbGFzcyBQcmVkaWN0aW9uUHJvcGFn
YXRpb25QaGFzZSA6IHB1YmxpYyBQaGFzZSB7CiAgICAgICAgIGNhc2UgR2V0UmVnRXhwT2JqZWN0
TGFzdEluZGV4OgogICAgICAgICBjYXNlIFNldFJlZ0V4cE9iamVjdExhc3RJbmRleDoKICAgICAg
ICAgY2FzZSBSZWNvcmRSZWdFeHBDYWNoZWRSZXN1bHQ6Ci0gICAgICAgIGNhc2UgTGF6eUpTQ29u
c3RhbnQ6IHsKKyAgICAgICAgY2FzZSBMYXp5SlNDb25zdGFudDoKKyAgICAgICAgY2FzZSBDYWxs
RE9NOiB7CiAgICAgICAgICAgICAvLyBUaGlzIG5vZGUgc2hvdWxkIG5ldmVyIGJlIHZpc2libGUg
YXQgdGhpcyBzdGFnZSBvZiBjb21waWxhdGlvbi4gSXQgaXMKICAgICAgICAgICAgIC8vIGluc2Vy
dGVkIGJ5IGZpeHVwKCksIHdoaWNoIGZvbGxvd3MgdGhpcyBwaGFzZS4KICAgICAgICAgICAgIERG
R19DUkFTSChtX2dyYXBoLCBtX2N1cnJlbnROb2RlLCAiVW5leHBlY3RlZCBub2RlIGR1cmluZyBw
cmVkaWN0aW9uIHByb3BhZ2F0aW9uIik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U2FmZVRvRXhlY3V0ZS5oCmluZGV4IDJjOTk4MDIyNTY2N2RmMzQwNTBkY2E2YTM0ZTg3ZjM0ZDU5
OGVkMmIuLjNmZTlkYzE1ZGVlMTdiODFkMjJmZjY0NDNmZWQ2N2Y0NzY5NjNjYTAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCkBAIC0yMjAsNiArMjIw
LDcgQEAgYm9vbCBzYWZlVG9FeGVjdXRlKEFic3RyYWN0U3RhdGVUeXBlJiBzdGF0ZSwgR3JhcGgm
IGdyYXBoLCBOb2RlKiBub2RlKQogICAgIGNhc2UgR2V0RXhlY3V0YWJsZToKICAgICBjYXNlIEdl
dEJ1dHRlcmZseToKICAgICBjYXNlIENhbGxET01HZXR0ZXI6CisgICAgY2FzZSBDYWxsRE9NOgog
ICAgIGNhc2UgQ2hlY2tET006CiAgICAgY2FzZSBDaGVja0FycmF5OgogICAgIGNhc2UgQXJyYXlp
Znk6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZl
SklULmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3Bw
CmluZGV4IDI3MzJmZTg1ODQ0ZTUxZjQ2NzBiMGFlNDAzZjJhYzIzNTA0Yzg3MWMuLjM0MTliNzAy
ZjgxZGQ5OTA1NmM5N2FiMTQ0OGEzMGE5YjI5N2M3YjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCkBAIC03MjYwLDYgKzcyNjAsODggQEAg
c3RhdGljIHZvaWQgYWxsb2NhdGVUZW1wb3JhcnlSZWdpc3RlcnNGb3JQYXRjaHBvaW50KFNwZWN1
bGF0aXZlSklUKiBqaXQsIFZlY3RvcjwKICAgICB9CiB9CiAKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGVDYWxsRE9NKE5vZGUqIG5vZGUpCit7CisgICAgY29uc3QgRE9NSklUOjpTaWduYXR1
cmUqIHNpZ25hdHVyZSA9IG5vZGUtPnNpZ25hdHVyZSgpOworCisgICAgLy8gRklYTUU6IFdlIHNo
b3VsZCBoYXZlIGEgd2F5IHRvIGNhbGwgZnVuY3Rpb25zIHdpdGggdGhlIHZlY3RvciBvZiByZWdp
c3RlcnMuCisgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2
MzA5OQorICAgIFZlY3RvcjxWYXJpYW50PFNwZWN1bGF0ZUNlbGxPcGVyYW5kLCBTcGVjdWxhdGVJ
bnQzMk9wZXJhbmQsIFNwZWN1bGF0ZUJvb2xlYW5PcGVyYW5kPiwgSlNDX0RPTUpJVF9TSUdOQVRV
UkVfTUFYX0FSR1VNRU5UU19JTkNMVURJTkdfVEhJUz4gb3BlcmFuZHM7CisgICAgVmVjdG9yPEdQ
UlJlZywgSlNDX0RPTUpJVF9TSUdOQVRVUkVfTUFYX0FSR1VNRU5UU19JTkNMVURJTkdfVEhJUz4g
cmVnczsKKworICAgIGF1dG8gYXBwZW5kQ2VsbCA9IFsmXShFZGdlJiBlZGdlKSB7CisgICAgICAg
IFNwZWN1bGF0ZUNlbGxPcGVyYW5kIG9wZXJhbmQodGhpcywgZWRnZSk7CisgICAgICAgIHJlZ3Mu
YXBwZW5kKG9wZXJhbmQuZ3ByKCkpOworICAgICAgICBvcGVyYW5kcy5hcHBlbmQoV1RGTW92ZShv
cGVyYW5kKSk7CisgICAgfTsKKworICAgIGF1dG8gYXBwZW5kU3RyaW5nID0gWyZdKEVkZ2UmIGVk
Z2UpIHsKKyAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgb3BlcmFuZCh0aGlzLCBlZGdlKTsK
KyAgICAgICAgR1BSUmVnIGdwciA9IG9wZXJhbmQuZ3ByKCk7CisgICAgICAgIHJlZ3MuYXBwZW5k
KGdwcik7CisgICAgICAgIHNwZWN1bGF0ZVN0cmluZyhlZGdlLCBncHIpOworICAgICAgICBvcGVy
YW5kcy5hcHBlbmQoV1RGTW92ZShvcGVyYW5kKSk7CisgICAgfTsKKworICAgIGF1dG8gYXBwZW5k
SW50MzIgPSBbJl0oRWRnZSYgZWRnZSkgeworICAgICAgICBTcGVjdWxhdGVJbnQzMk9wZXJhbmQg
b3BlcmFuZCh0aGlzLCBlZGdlKTsKKyAgICAgICAgcmVncy5hcHBlbmQob3BlcmFuZC5ncHIoKSk7
CisgICAgICAgIG9wZXJhbmRzLmFwcGVuZChXVEZNb3ZlKG9wZXJhbmQpKTsKKyAgICB9OworCisg
ICAgYXV0byBhcHBlbmRCb29sZWFuID0gWyZdKEVkZ2UmIGVkZ2UpIHsKKyAgICAgICAgU3BlY3Vs
YXRlQm9vbGVhbk9wZXJhbmQgb3BlcmFuZCh0aGlzLCBlZGdlKTsKKyAgICAgICAgcmVncy5hcHBl
bmQob3BlcmFuZC5ncHIoKSk7CisgICAgICAgIG9wZXJhbmRzLmFwcGVuZChXVEZNb3ZlKG9wZXJh
bmQpKTsKKyAgICB9OworCisgICAgdW5zaWduZWQgaW5kZXggPSAwOworICAgIG1faml0LmdyYXBo
KCkuZG9Ub0NoaWxkcmVuKG5vZGUsIFsmXShFZGdlIGVkZ2UpIHsKKyAgICAgICAgaWYgKCFpbmRl
eCkKKyAgICAgICAgICAgIGFwcGVuZENlbGwoZWRnZSk7CisgICAgICAgIGVsc2UgeworICAgICAg
ICAgICAgc3dpdGNoIChzaWduYXR1cmUtPmFyZ3VtZW50c1tpbmRleCAtIDFdKSB7CisgICAgICAg
ICAgICBjYXNlIFNwZWNTdHJpbmc6CisgICAgICAgICAgICAgICAgYXBwZW5kU3RyaW5nKGVkZ2Up
OworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBTcGVjSW50MzJPbmx5
OgorICAgICAgICAgICAgICAgIGFwcGVuZEludDMyKGVkZ2UpOworICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgY2FzZSBTcGVjQm9vbGVhbjoKKyAgICAgICAgICAgICAgICBhcHBl
bmRCb29sZWFuKGVkZ2UpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgZGVm
YXVsdDoKKyAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAg
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgICsr
aW5kZXg7CisgICAgfSk7CisKKyAgICBKU1ZhbHVlUmVnc1RlbXBvcmFyeSByZXN1bHQodGhpcyk7
CisgICAgSlNWYWx1ZVJlZ3MgcmVzdWx0UmVncyA9IHJlc3VsdC5yZWdzKCk7CisKKyAgICBmbHVz
aFJlZ2lzdGVycygpOworICAgIHVuc2lnbmVkIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzID0g
c2lnbmF0dXJlLT5hcmd1bWVudENvdW50ICsgMTsKKyAgICBzd2l0Y2ggKGFyZ3VtZW50Q291bnRJ
bmNsdWRpbmdUaGlzKSB7CisgICAgY2FzZSAxOgorICAgICAgICBjYWxsT3BlcmF0aW9uKHJlaW50
ZXJwcmV0X2Nhc3Q8Sl9KSVRPcGVyYXRpb25fRVA+KHNpZ25hdHVyZS0+dW5zYWZlRnVuY3Rpb24p
LCBleHRyYWN0UmVzdWx0KHJlc3VsdFJlZ3MpLCByZWdzWzBdKTsKKyAgICAgICAgYnJlYWs7Cisg
ICAgY2FzZSAyOgorICAgICAgICBjYWxsT3BlcmF0aW9uKHJlaW50ZXJwcmV0X2Nhc3Q8Sl9KSVRP
cGVyYXRpb25fRVBQPihzaWduYXR1cmUtPnVuc2FmZUZ1bmN0aW9uKSwgZXh0cmFjdFJlc3VsdChy
ZXN1bHRSZWdzKSwgcmVnc1swXSwgcmVnc1sxXSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2Ug
MzoKKyAgICAgICAgY2FsbE9wZXJhdGlvbihyZWludGVycHJldF9jYXN0PEpfSklUT3BlcmF0aW9u
X0VQUFA+KHNpZ25hdHVyZS0+dW5zYWZlRnVuY3Rpb24pLCBleHRyYWN0UmVzdWx0KHJlc3VsdFJl
Z3MpLCByZWdzWzBdLCByZWdzWzFdLCByZWdzWzJdKTsKKyAgICAgICAgYnJlYWs7CisgICAgZGVm
YXVsdDoKKyAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgYnJl
YWs7CisgICAgfQorCisgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKKyAgICBqc1ZhbHVlUmVz
dWx0KHJlc3VsdFJlZ3MsIG5vZGUpOworfQorCiB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxl
Q2FsbERPTUdldHRlcihOb2RlKiBub2RlKQogewogICAgIERPTUpJVDo6Q2FsbERPTUdldHRlclBh
dGNocG9pbnQqIHBhdGNocG9pbnQgPSBub2RlLT5jYWxsRE9NR2V0dGVyRGF0YSgpLT5wYXRjaHBv
aW50OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2
ZUpJVC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCmlu
ZGV4IDU2NTM4YTI5NDZlNDAzMDBmMDUwZjMzNTUyYTczY2NhNzU5Y2VhY2EuLjc5NmE4YTM1ZTZk
MzA1N2ZhYWJlYTA3OWEwMjAzZDVkNDk5YTk1YjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKQEAgLTE2NTEsNiArMTY1MSwxMSBAQCBjbGFzcyBT
cGVjdWxhdGl2ZUpJVCB7CiAgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0
ZShhcmcxLCBhcmcyKTsKICAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0
aW9uLCByZXN1bHQpOwogICAgIH0KKyAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9u
KEpfSklUT3BlcmF0aW9uX0VQUFAgb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBHUFJSZWcgYXJn
MSwgR1BSUmVnIGFyZzIsIEdQUlJlZyBhcmczKQorICAgIHsKKyAgICAgICAgbV9qaXQuc2V0dXBB
cmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIsIGFyZzMpOworICAgICAgICByZXR1cm4g
YXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CisgICAgfQogICAgIEpJVENv
bXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9KSVRPcGVyYXRpb25fRUdQIG9wZXJhdGlvbiwg
R1BSUmVnIHJlc3VsdCwgR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyKQogICAgIHsKICAgICAgICAg
bV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIpOwpAQCAtMTkxNSw2
ICsxOTIwLDE2IEBAIGNsYXNzIFNwZWN1bGF0aXZlSklUIHsKICAgICAgICAgbV9qaXQuc2V0dXBB
cmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIFRydXN0ZWRJbW1QdHIocG9pbnRlcikpOwogICAg
ICAgICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdC5wYXlsb2Fk
R1BSKCksIHJlc3VsdC50YWdHUFIoKSk7CiAgICAgfQorICAgIEpJVENvbXBpbGVyOjpDYWxsIGNh
bGxPcGVyYXRpb24oSl9KSVRPcGVyYXRpb25fRVBQIG9wZXJhdGlvbiwgSlNWYWx1ZVJlZ3MgcmVz
dWx0LCBHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIpCisgICAgeworICAgICAgICBtX2ppdC5zZXR1
cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMik7CisgICAgICAgIHJldHVybiBhcHBl
bmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0LnBheWxvYWRHUFIoKSwgcmVzdWx0LnRh
Z0dQUigpKTsKKyAgICB9CisgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihKX0pJ
VE9wZXJhdGlvbl9FUFBQIG9wZXJhdGlvbiwgSlNWYWx1ZVJlZ3MgcmVzdWx0LCBHUFJSZWcgYXJn
MSwgR1BSUmVnIGFyZzIsIEdQUlJlZyBhcmczKQorICAgIHsKKyAgICAgICAgbV9qaXQuc2V0dXBB
cmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIsIGFyZzMpOworICAgICAgICByZXR1cm4g
YXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdC5wYXlsb2FkR1BSKCksIHJlc3Vs
dC50YWdHUFIoKSk7CisgICAgfQogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24o
Sl9KSVRPcGVyYXRpb25fRUdQIG9wZXJhdGlvbiwgSlNWYWx1ZVJlZ3MgcmVzdWx0LCBHUFJSZWcg
YXJnMSwgR1BSUmVnIGFyZzIpCiAgICAgewogICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dp
dGhFeGVjU3RhdGUoYXJnMSwgYXJnMik7CkBAIC0yNTYyLDYgKzI1NzcsNyBAQCBjbGFzcyBTcGVj
dWxhdGl2ZUpJVCB7CiAgICAgdm9pZCBjb21waWxlUmVhbGxvY2F0ZVByb3BlcnR5U3RvcmFnZShO
b2RlKik7CiAgICAgdm9pZCBjb21waWxlR2V0QnV0dGVyZmx5KE5vZGUqKTsKICAgICB2b2lkIGNv
bXBpbGVDYWxsRE9NR2V0dGVyKE5vZGUqKTsKKyAgICB2b2lkIGNvbXBpbGVDYWxsRE9NKE5vZGUq
KTsKICAgICB2b2lkIGNvbXBpbGVDaGVja0RPTShOb2RlKik7CiAgICAgCiAjaWYgVVNFKEpTVkFM
VUUzMl82NCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3Vs
YXRpdmVKSVQzMl82NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0
aXZlSklUMzJfNjQuY3BwCmluZGV4IGNiMDRhNWE2NWM3NTBlMjNmMTdjOWRiMjM0MTViNzM0YWVm
NWI0YTQuLjEwMjQyOWRlMDAwYjMyYWRmZGQwMjc0M2VjNmRmZGRlZTgxZjUzYWMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNw
cApAQCAtNTU2MSw2ICs1NTYxLDEwIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9k
ZSogbm9kZSkKICAgICAgICAgYnJlYWs7CiAgICAgfQogCisgICAgY2FzZSBDYWxsRE9NOgorICAg
ICAgICBjb21waWxlQ2FsbERPTShub2RlKTsKKyAgICAgICAgYnJlYWs7CisKICAgICBjYXNlIENh
bGxET01HZXR0ZXI6CiAgICAgICAgIGNvbXBpbGVDYWxsRE9NR2V0dGVyKG5vZGUpOwogICAgICAg
ICBicmVhazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3Vs
YXRpdmVKSVQ2NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZl
SklUNjQuY3BwCmluZGV4IGI0MWM2ZjMyYjMzZDgzYzY1ZTg1NGY4NjA3OGQ3NGE1MjQwMjk4MTMu
LjgzMGJmYWRjYWYyODY2N2EwOGIxYjgyZWU1OTg4YzBjNjVkMmNhYjkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcApAQCAtNTY5Myw2
ICs1NjkzLDEwIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAg
ICAgICAgY29tcGlsZU1hdGVyaWFsaXplTmV3T2JqZWN0KG5vZGUpOwogICAgICAgICBicmVhazsK
IAorICAgIGNhc2UgQ2FsbERPTToKKyAgICAgICAgY29tcGlsZUNhbGxET00obm9kZSk7CisgICAg
ICAgIGJyZWFrOworCiAgICAgY2FzZSBDYWxsRE9NR2V0dGVyOgogICAgICAgICBjb21waWxlQ2Fs
bERPTUdldHRlcihub2RlKTsKICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZG9taml0L0RPTUpJVEVmZmVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RvbWppdC9ET01KSVRFZmZlY3QuaAppbmRleCA1OWUzMDBjMzkyNjEwNDdhMTEyMjkwZGE4NmI0
ZmExNjhkOWM2MzA2Li42MWNmM2I3MWFiYmNlMzFlNDUxMzZhZjI4NmM2YzdhZjIzNjY4YTZiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZG9taml0L0RPTUpJVEVmZmVjdC5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kb21qaXQvRE9NSklURWZmZWN0LmgKQEAgLTI4LDU2
ICsyOCw2MiBAQAogI2luY2x1ZGUgIkRPTUpJVEhlYXBSYW5nZS5oIgogI2luY2x1ZGUgPHd0Zi9P
cHRpb25hbC5oPgogCi0jaWYgRU5BQkxFKEpJVCkKLQogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFj
ZSBET01KSVQgewogCi1zdHJ1Y3QgRWZmZWN0IHsKK2NsYXNzIEVmZmVjdCB7CitwdWJsaWM6CiAg
ICAgSGVhcFJhbmdlIHJlYWRzIHsgSGVhcFJhbmdlOjp0b3AoKSB9OwogICAgIEhlYXBSYW5nZSB3
cml0ZXMgeyBIZWFwUmFuZ2U6OnRvcCgpIH07Ci0gICAgT3B0aW9uYWw8SGVhcFJhbmdlPiBkZWY7
CisgICAgSGVhcFJhbmdlIGRlZiB7IEhlYXBSYW5nZTo6dG9wKCkgfTsKKworICAgIGNvbnN0ZXhw
ciBFZmZlY3QoKSA9IGRlZmF1bHQ7CisgICAgY29uc3RleHByIEVmZmVjdChIZWFwUmFuZ2UgcmVh
ZHMsIEhlYXBSYW5nZSB3cml0ZXMpCisgICAgICAgIDogcmVhZHMocmVhZHMpCisgICAgICAgICwg
d3JpdGVzKHdyaXRlcykKKyAgICB7CisgICAgfQorCisgICAgY29uc3RleHByIEVmZmVjdChIZWFw
UmFuZ2UgcmVhZHMsIEhlYXBSYW5nZSB3cml0ZXMsIEhlYXBSYW5nZSBkZWYpCisgICAgICAgIDog
cmVhZHMocmVhZHMpCisgICAgICAgICwgd3JpdGVzKHdyaXRlcykKKyAgICAgICAgLCBkZWYoZGVm
KQorICAgIHsKKyAgICB9CiAKLSAgICBzdGF0aWMgRWZmZWN0IGZvclJlYWRXcml0ZShIZWFwUmFu
Z2UgcmVhZFJhbmdlLCBIZWFwUmFuZ2Ugd3JpdGVSYW5nZSkKKyAgICBjb25zdGV4cHIgc3RhdGlj
IEVmZmVjdCBmb3JXcml0ZShIZWFwUmFuZ2Ugd3JpdGVSYW5nZSkKICAgICB7Ci0gICAgICAgIEVm
ZmVjdCBlZmZlY3Q7Ci0gICAgICAgIGVmZmVjdC5yZWFkcyA9IHJlYWRSYW5nZTsKLSAgICAgICAg
ZWZmZWN0LndyaXRlcyA9IHdyaXRlUmFuZ2U7Ci0gICAgICAgIHJldHVybiBlZmZlY3Q7CisgICAg
ICAgIHJldHVybiBFZmZlY3QoSGVhcFJhbmdlOjpub25lKCksIHdyaXRlUmFuZ2UpOwogICAgIH0K
IAotICAgIHN0YXRpYyBFZmZlY3QgZm9yUHVyZSgpCisgICAgY29uc3RleHByIHN0YXRpYyBFZmZl
Y3QgZm9yUmVhZChIZWFwUmFuZ2UgcmVhZFJhbmdlKQogICAgIHsKLSAgICAgICAgRWZmZWN0IGVm
ZmVjdDsKLSAgICAgICAgZWZmZWN0LnJlYWRzID0gSGVhcFJhbmdlOjpub25lKCk7Ci0gICAgICAg
IGVmZmVjdC53cml0ZXMgPSBIZWFwUmFuZ2U6Om5vbmUoKTsKLSAgICAgICAgZWZmZWN0LmRlZiA9
IEhlYXBSYW5nZTo6bm9uZSgpOwotICAgICAgICByZXR1cm4gZWZmZWN0OworICAgICAgICByZXR1
cm4gRWZmZWN0KHJlYWRSYW5nZSwgSGVhcFJhbmdlOjpub25lKCkpOwogICAgIH0KIAotICAgIHN0
YXRpYyBFZmZlY3QgZm9yRGVmKEhlYXBSYW5nZSBkZWYpCisgICAgY29uc3RleHByIHN0YXRpYyBF
ZmZlY3QgZm9yUmVhZFdyaXRlKEhlYXBSYW5nZSByZWFkUmFuZ2UsIEhlYXBSYW5nZSB3cml0ZVJh
bmdlKQogICAgIHsKLSAgICAgICAgRWZmZWN0IGVmZmVjdDsKLSAgICAgICAgZWZmZWN0LnJlYWRz
ID0gZGVmOwotICAgICAgICBlZmZlY3Qud3JpdGVzID0gSGVhcFJhbmdlOjpub25lKCk7Ci0gICAg
ICAgIGVmZmVjdC5kZWYgPSBkZWY7Ci0gICAgICAgIHJldHVybiBlZmZlY3Q7CisgICAgICAgIHJl
dHVybiBFZmZlY3QocmVhZFJhbmdlLCB3cml0ZVJhbmdlKTsKICAgICB9CiAKLSAgICBzdGF0aWMg
RWZmZWN0IGZvckRlZihIZWFwUmFuZ2UgZGVmLCBIZWFwUmFuZ2UgcmVhZFJhbmdlLCBIZWFwUmFu
Z2Ugd3JpdGVSYW5nZSkKKyAgICBjb25zdGV4cHIgc3RhdGljIEVmZmVjdCBmb3JQdXJlKCkKICAg
ICB7Ci0gICAgICAgIEVmZmVjdCBlZmZlY3Q7Ci0gICAgICAgIGVmZmVjdC5yZWFkcyA9IHJlYWRS
YW5nZTsKLSAgICAgICAgZWZmZWN0LndyaXRlcyA9IHdyaXRlUmFuZ2U7Ci0gICAgICAgIGVmZmVj
dC5kZWYgPSBkZWY7Ci0gICAgICAgIHJldHVybiBlZmZlY3Q7CisgICAgICAgIHJldHVybiBFZmZl
Y3QoSGVhcFJhbmdlOjpub25lKCksIEhlYXBSYW5nZTo6bm9uZSgpLCBIZWFwUmFuZ2U6Om5vbmUo
KSk7CiAgICAgfQogCi0gICAgYm9vbCBtdXN0R2VuZXJhdGUoKSBjb25zdAorICAgIGNvbnN0ZXhw
ciBzdGF0aWMgRWZmZWN0IGZvckRlZihIZWFwUmFuZ2UgZGVmKQorICAgIHsKKyAgICAgICAgcmV0
dXJuIEVmZmVjdChkZWYsIEhlYXBSYW5nZTo6bm9uZSgpLCBkZWYpOworICAgIH0KKworICAgIGNv
bnN0ZXhwciBzdGF0aWMgRWZmZWN0IGZvckRlZihIZWFwUmFuZ2UgZGVmLCBIZWFwUmFuZ2UgcmVh
ZFJhbmdlLCBIZWFwUmFuZ2Ugd3JpdGVSYW5nZSkKKyAgICB7CisgICAgICAgIHJldHVybiBFZmZl
Y3QocmVhZFJhbmdlLCB3cml0ZVJhbmdlLCBkZWYpOworICAgIH0KKworICAgIGNvbnN0ZXhwciBi
b29sIG11c3RHZW5lcmF0ZSgpIGNvbnN0CiAgICAgewogICAgICAgICByZXR1cm4gISF3cml0ZXM7
CiAgICAgfQogfTsKIAogfSB9Ci0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RvbWppdC9ET01KSVRIZWFwUmFuZ2UuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
b21qaXQvRE9NSklUSGVhcFJhbmdlLmgKaW5kZXggZmI5Mzk5OWZmNzg1YzA2ZjdkYWNkNmRhOWM4
ZDZlMGE5NTY3ODY3NC4uMjYxYTdhZjJjYzU4NDk1N2IxZWFlMDgxZTM4ZDBiZGYyZGVmMzBiMyAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RvbWppdC9ET01KSVRIZWFwUmFuZ2Uu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZG9taml0L0RPTUpJVEhlYXBSYW5nZS5oCkBA
IC0yOCw4ICsyOCw2IEBACiAjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KICNpbmNsdWRlIDx3
dGYvUHJpbnRTdHJlYW0uaD4KIAotI2lmIEVOQUJMRShKSVQpCi0KIG5hbWVzcGFjZSBKU0MgeyBu
YW1lc3BhY2UgRE9NSklUIHsKIAogY2xhc3MgSGVhcFJhbmdlIHsKQEAgLTQ3LDcgKzQ1LDYgQEAg
Y2xhc3MgSGVhcFJhbmdlIHsKICAgICAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRShiZWdpbiA8PSBl
bmQsICJiZWdpbiA8PSBlbmQgaXMgdGhlIGludmFyaWFudCBvZiB0aGlzIEhlYXBSYW5nZS4iKTsK
ICAgICB9CiAKLXByaXZhdGU6CiAgICAgZW51bSBDb25zdEV4cHJUYWcgeyBDb25zdEV4cHIgfTsK
ICAgICBjb25zdGV4cHIgSGVhcFJhbmdlKENvbnN0RXhwclRhZywgdWludDE2X3QgYmVnaW4sIHVp
bnQxNl90IGVuZCkKICAgICAgICAgOiBtX2JlZ2luKGJlZ2luKQpAQCAtNTUsMjEgKzUyLDEzIEBA
IGNsYXNzIEhlYXBSYW5nZSB7CiAgICAgewogICAgIH0KIAotICAgIHRlbXBsYXRlPHVpbnQxNl90
IGJlZ2luLCB1aW50MTZfdCBlbmQ+Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBIZWFwUmFuZ2UgZnJv
bUNvbnN0YW50KCkKLSAgICB7Ci0gICAgICAgIHN0YXRpY19hc3NlcnQoYmVnaW4gPD0gZW5kLCAi
YmVnaW4gPD0gZW5kIGlzIHRoZSBpbnZhcmlhbnQgb2YgdGhpcyBIZWFwUmFuZ2UuIik7Ci0gICAg
ICAgIHJldHVybiBIZWFwUmFuZ2UoQ29uc3RFeHByLCBiZWdpbiwgZW5kKTsKLSAgICB9Ci0KLXB1
YmxpYzoKICAgICBlbnVtIFJhd1JlcHJlc2VudGF0aW9uVGFnIHsgUmF3UmVwcmVzZW50YXRpb24g
fTsKICAgICBleHBsaWNpdCBjb25zdGV4cHIgSGVhcFJhbmdlKFJhd1JlcHJlc2VudGF0aW9uVGFn
LCB1aW50MzJfdCB2YWx1ZSkKICAgICAgICAgOiBtX3Jhdyh2YWx1ZSkKICAgICB7CiAgICAgfQog
Ci0gICAgc3RhdGljIEhlYXBSYW5nZSBmcm9tUmF3KHVpbnQzMl90IHZhbHVlKQorICAgIGNvbnN0
ZXhwciBzdGF0aWMgSGVhcFJhbmdlIGZyb21SYXcodWludDMyX3QgdmFsdWUpCiAgICAgewogICAg
ICAgICByZXR1cm4gSGVhcFJhbmdlKFJhd1JlcHJlc2VudGF0aW9uLCB2YWx1ZSk7CiAgICAgfQpA
QCAtODMsMTEgKzcyLDIzIEBAIGNsYXNzIEhlYXBSYW5nZSB7CiAgICAgICAgIHJldHVybiBtX2Jl
Z2luICE9IG1fZW5kOwogICAgIH0KIAotICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBIZWFwUmFu
Z2UmIG90aGVyKSBjb25zdAorICAgIGNvbnN0ZXhwciBib29sIG9wZXJhdG9yPT0oY29uc3QgSGVh
cFJhbmdlJiBvdGhlcikgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVybiBtX2JlZ2luID09IG90
aGVyLm1fYmVnaW4gJiYgbV9lbmQgPT0gb3RoZXIubV9lbmQ7CiAgICAgfQogCisgICAgY29uc3Rl
eHByIGJvb2wgb3BlcmF0b3IhPShjb25zdCBIZWFwUmFuZ2UmIG90aGVyKSBjb25zdAorICAgIHsK
KyAgICAgICAgcmV0dXJuICFvcGVyYXRvcj09KG90aGVyKTsKKyAgICB9CisKKyAgICB0ZW1wbGF0
ZTx1aW50MTZfdCBiZWdpbiwgdWludDE2X3QgZW5kPgorICAgIHN0YXRpYyBjb25zdGV4cHIgSGVh
cFJhbmdlIGZyb21Db25zdGFudCgpCisgICAgeworICAgICAgICBzdGF0aWNfYXNzZXJ0KGJlZ2lu
IDwgZW5kIHx8IChiZWdpbiA9PSBVSU5UMTZfTUFYICYmIGVuZCA9PSBVSU5UMTZfTUFYKSwgImJl
Z2luIDwgZW5kIG9yIHRoZSBib3RoIGFyZSBVSU5UMTZfTUFYIGlzIHRoZSBpbnZhcmlhbnQgb2Yg
dGhpcyBIZWFwUmFuZ2UuIik7CisgICAgICAgIHJldHVybiBIZWFwUmFuZ2UoQ29uc3RFeHByLCBi
ZWdpbiwgZW5kKTsKKyAgICB9CisKICAgICBzdGF0aWMgY29uc3RleHByIEhlYXBSYW5nZSB0b3Ao
KSB7IHJldHVybiBmcm9tQ29uc3RhbnQ8MCwgVUlOVDE2X01BWD4oKTsgfQogICAgIHN0YXRpYyBj
b25zdGV4cHIgSGVhcFJhbmdlIG5vbmUoKSB7IHJldHVybiBmcm9tQ29uc3RhbnQ8VUlOVDE2X01B
WCwgVUlOVDE2X01BWD4oKTsgfSAvLyBFbXB0eSByYW5nZS4KIApAQCAtMTI3LDUgKzEyOCwzIEBA
IGNsYXNzIEhlYXBSYW5nZSB7CiB9OwogCiB9IH0KLQotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZG9taml0L0RPTUpJVFNpZ25hdHVyZS5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RvbWppdC9ET01KSVRTaWduYXR1cmUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45NTE1MjZhYWU4
NmUxNWQxMTlkM2U5OTI0YzMwZDdkNjIxNjhjNTQ4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RvbWppdC9ET01KSVRTaWduYXR1cmUuaApAQCAtMCwwICsxLDcyIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQor
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBv
bmNlCisKKyNpbmNsdWRlICJDbGFzc0luZm8uaCIKKyNpbmNsdWRlICJET01KSVRFZmZlY3QuaCIK
KyNpbmNsdWRlICJTcGVjdWxhdGVkVHlwZS5oIgorCituYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNl
IERPTUpJVCB7CisKKy8vIEZJWE1FOiBDdXJyZW50bHksIHdlIG9ubHkgc3VwcG9ydCBmdW5jdGlv
bnMgd2hpY2ggYXJndW1lbnRzIGFyZSB1cCB0byAyLgorLy8gRXZlbnR1YWxseSwgd2Ugc2hvdWxk
IGV4dGVuZCB0aGlzLiBCdXQgcG9zc2libHksIDIgb3IgMyBjYW4gY292ZXIgdHlwaWNhbCB1c2Ug
Y2FzZXMuCisvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY0MzQ2
CisjZGVmaW5lIEpTQ19ET01KSVRfU0lHTkFUVVJFX01BWF9BUkdVTUVOVFMgMgorI2RlZmluZSBK
U0NfRE9NSklUX1NJR05BVFVSRV9NQVhfQVJHVU1FTlRTX0lOQ0xVRElOR19USElTICgxICsgSlND
X0RPTUpJVF9TSUdOQVRVUkVfTUFYX0FSR1VNRU5UUykKKworY2xhc3MgUGF0Y2hwb2ludDsKKwor
dHlwZWRlZiBSZWY8UGF0Y2hwb2ludD4gQ2hlY2tET01HZW5lcmF0b3JGdW5jdGlvbih2b2lkKTsK
KworY2xhc3MgU2lnbmF0dXJlIHsKK3B1YmxpYzoKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBB
cmd1bWVudHM+CisgICAgY29uc3RleHByIFNpZ25hdHVyZSh1aW50cHRyX3QgdW5zYWZlRnVuY3Rp
b24sIENoZWNrRE9NR2VuZXJhdG9yRnVuY3Rpb24qIGNoZWNrRE9NR2VuZXJhdG9yRnVuY3Rpb24s
IGNvbnN0IENsYXNzSW5mbyogY2xhc3NJbmZvLCBFZmZlY3QgZWZmZWN0LCBTcGVjdWxhdGVkVHlw
ZSByZXN1bHQsIEFyZ3VtZW50cy4uLiBhcmd1bWVudHMpCisgICAgICAgIDogdW5zYWZlRnVuY3Rp
b24odW5zYWZlRnVuY3Rpb24pCisgICAgICAgICwgY2hlY2tET01HZW5lcmF0b3JGdW5jdGlvbihj
aGVja0RPTUdlbmVyYXRvckZ1bmN0aW9uKQorICAgICAgICAsIGNsYXNzSW5mbyhjbGFzc0luZm8p
CisgICAgICAgICwgZWZmZWN0KGVmZmVjdCkKKyAgICAgICAgLCByZXN1bHQocmVzdWx0KQorICAg
ICAgICAsIGFyZ3VtZW50cyB7c3RhdGljX2Nhc3Q8U3BlY3VsYXRlZFR5cGU+KGFyZ3VtZW50cyku
Li59CisgICAgICAgICwgYXJndW1lbnRDb3VudChzaXplb2YuLi4oYXJndW1lbnRzKSkKKyAgICB7
CisgICAgfQorCisgICAgUmVmPFBhdGNocG9pbnQ+IGNoZWNrRE9NKCkgY29uc3QKKyAgICB7Cisg
ICAgICAgIHJldHVybiBjaGVja0RPTUdlbmVyYXRvckZ1bmN0aW9uKCk7CisgICAgfQorCisgICAg
dWludHB0cl90IHVuc2FmZUZ1bmN0aW9uOworICAgIENoZWNrRE9NR2VuZXJhdG9yRnVuY3Rpb24q
IGNoZWNrRE9NR2VuZXJhdG9yRnVuY3Rpb247CisgICAgY29uc3QgQ2xhc3NJbmZvKiBjb25zdCBj
bGFzc0luZm87CisgICAgY29uc3QgRWZmZWN0IGVmZmVjdDsKKyAgICBjb25zdCBTcGVjdWxhdGVk
VHlwZSByZXN1bHQ7CisgICAgY29uc3QgU3BlY3VsYXRlZFR5cGUgYXJndW1lbnRzW0pTQ19ET01K
SVRfU0lHTkFUVVJFX01BWF9BUkdVTUVOVFNdOworICAgIGNvbnN0IHVuc2lnbmVkIGFyZ3VtZW50
Q291bnQ7Cit9OworCit9IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwv
RlRMQ2FwYWJpbGl0aWVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJp
bGl0aWVzLmNwcAppbmRleCA1NGY0ZTcyZTY0MTliZmUyNTU2NTNlMzY1ZmJhYzgyMDMyZmZkZTk3
Li4zYmExNWU2ZTI4NDRkMzA0MDNlOGRkNGUwMTZjMjRiMGMwNDZkZmMxIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCkBAIC0yNzMsNiArMjczLDcg
QEAgaW5saW5lIENhcGFiaWxpdHlMZXZlbCBjYW5Db21waWxlKE5vZGUqIG5vZGUpCiAgICAgY2Fz
ZSBEZWZpbmVBY2Nlc3NvclByb3BlcnR5OgogICAgIGNhc2UgVG9Mb3dlckNhc2U6CiAgICAgY2Fz
ZSBDaGVja0RPTToKKyAgICBjYXNlIENhbGxET006CiAgICAgY2FzZSBDYWxsRE9NR2V0dGVyOgog
ICAgICAgICAvLyBUaGVzZSBhcmUgT0suCiAgICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCmluZGV4IGFkMTYxNTcyMDI3YzQxZjMw
MDY4M2RjMTIyNDJmOWI5NWQ0NTkwYzIuLjc5ZDk3YmI2MDM4MWYzNDEyOWViZWIwMmNlZDhlNTg0
ZDI0MThhMmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJE
RkdUb0IzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9C
My5jcHAKQEAgLTEwNjAsNiArMTA2MCw5IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAgICAgICAg
IGNhc2UgQ2hlY2tET006CiAgICAgICAgICAgICBjb21waWxlQ2hlY2tET00oKTsKICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICBjYXNlIENhbGxET006CisgICAgICAgICAgICBjb21waWxlQ2Fs
bERPTSgpOworICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQ2FsbERPTUdldHRlcjoK
ICAgICAgICAgICAgIGNvbXBpbGVDYWxsRE9NR2V0dGVyKCk7CiAgICAgICAgICAgICBicmVhazsK
QEAgLTkxMDAsNiArOTEwMyw1NyBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogICAgICAgICBwYXRj
aHBvaW50LT5lZmZlY3RzID0gRWZmZWN0czo6Zm9yQ2hlY2soKTsKICAgICB9CiAKKyAgICB2b2lk
IGNvbXBpbGVDYWxsRE9NKCkKKyAgICB7CisgICAgICAgIGNvbnN0IERPTUpJVDo6U2lnbmF0dXJl
KiBzaWduYXR1cmUgPSBtX25vZGUtPnNpZ25hdHVyZSgpOworCisgICAgICAgIC8vIEZJWE1FOiBX
ZSBzaG91bGQgaGF2ZSBhIHdheSB0byBjYWxsIGZ1bmN0aW9ucyB3aXRoIHRoZSB2ZWN0b3Igb2Yg
cmVnaXN0ZXJzLgorICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTYzMDk5CisgICAgICAgIFZlY3RvcjxMVmFsdWUsIEpTQ19ET01KSVRfU0lHTkFUVVJF
X01BWF9BUkdVTUVOVFNfSU5DTFVESU5HX1RISVM+IG9wZXJhbmRzOworCisgICAgICAgIHVuc2ln
bmVkIGluZGV4ID0gMDsKKyAgICAgICAgREZHX05PREVfRE9fVE9fQ0hJTERSRU4obV9ncmFwaCwg
bV9ub2RlLCBbJl0oTm9kZSosIEVkZ2UgZWRnZSkgeworICAgICAgICAgICAgaWYgKCFpbmRleCkK
KyAgICAgICAgICAgICAgICBvcGVyYW5kcy5hcHBlbmQobG93Q2VsbChlZGdlKSk7CisgICAgICAg
ICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBzd2l0Y2ggKHNpZ25hdHVyZS0+YXJndW1lbnRz
W2luZGV4IC0gMV0pIHsKKyAgICAgICAgICAgICAgICBjYXNlIFNwZWNTdHJpbmc6CisgICAgICAg
ICAgICAgICAgICAgIG9wZXJhbmRzLmFwcGVuZChsb3dTdHJpbmcoZWRnZSkpOworICAgICAgICAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIFNwZWNJbnQzMk9ubHk6Cisg
ICAgICAgICAgICAgICAgICAgIG9wZXJhbmRzLmFwcGVuZChsb3dJbnQzMihlZGdlKSk7CisgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgU3BlY0Jvb2xlYW46
CisgICAgICAgICAgICAgICAgICAgIG9wZXJhbmRzLmFwcGVuZChsb3dCb29sZWFuKGVkZ2UpKTsK
KyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAg
ICAgICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAg
ICAgICAgICAgKytpbmRleDsKKyAgICAgICAgfSk7CisKKyAgICAgICAgdW5zaWduZWQgYXJndW1l
bnRDb3VudEluY2x1ZGluZ1RoaXMgPSBzaWduYXR1cmUtPmFyZ3VtZW50Q291bnQgKyAxOworICAg
ICAgICBMVmFsdWUgcmVzdWx0OworICAgICAgICBzd2l0Y2ggKGFyZ3VtZW50Q291bnRJbmNsdWRp
bmdUaGlzKSB7CisgICAgICAgIGNhc2UgMToKKyAgICAgICAgICAgIHJlc3VsdCA9IHZtQ2FsbChJ
bnQ2NCwgbV9vdXQub3BlcmF0aW9uKHJlaW50ZXJwcmV0X2Nhc3Q8Sl9KSVRPcGVyYXRpb25fRVA+
KHNpZ25hdHVyZS0+dW5zYWZlRnVuY3Rpb24pKSwgbV9jYWxsRnJhbWUsIG9wZXJhbmRzWzBdKTsK
KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIDI6CisgICAgICAgICAgICByZXN1bHQg
PSB2bUNhbGwoSW50NjQsIG1fb3V0Lm9wZXJhdGlvbihyZWludGVycHJldF9jYXN0PEpfSklUT3Bl
cmF0aW9uX0VQUD4oc2lnbmF0dXJlLT51bnNhZmVGdW5jdGlvbikpLCBtX2NhbGxGcmFtZSwgb3Bl
cmFuZHNbMF0sIG9wZXJhbmRzWzFdKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNl
IDM6CisgICAgICAgICAgICByZXN1bHQgPSB2bUNhbGwoSW50NjQsIG1fb3V0Lm9wZXJhdGlvbihy
ZWludGVycHJldF9jYXN0PEpfSklUT3BlcmF0aW9uX0VQUFA+KHNpZ25hdHVyZS0+dW5zYWZlRnVu
Y3Rpb24pKSwgbV9jYWxsRnJhbWUsIG9wZXJhbmRzWzBdLCBvcGVyYW5kc1sxXSwgb3BlcmFuZHNb
Ml0pOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBS
RUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IH0KKworICAgICAgICBzZXRKU1ZhbHVlKHJlc3VsdCk7CisgICAgfQorCiAgICAgdm9pZCBjb21w
aWxlQ2FsbERPTUdldHRlcigpCiAgICAgewogICAgICAgICBET01KSVQ6OkNhbGxET01HZXR0ZXJQ
YXRjaHBvaW50KiBkb21KSVQgPSBtX25vZGUtPmNhbGxET01HZXR0ZXJEYXRhKCktPnBhdGNocG9p
bnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCmluZGV4IDhmNmM2
OTcxYTZiZWU5ZjFmYjZmYzM2OGRlNWEyY2I4NDc2NDRhNjguLjIwYjcxZjQ1MmNlNDRiNWNjNTZj
YzcxYzJkNzZiMTdiNTg4ZmU2NjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUT3BlcmF0aW9ucy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bl
cmF0aW9ucy5oCkBAIC0xNTgsNiArMTU4LDcgQEAgdHlwZWRlZiBFbmNvZGVkSlNWYWx1ZSAoSklU
X09QRVJBVElPTiAqSl9KSVRPcGVyYXRpb25fRUpQKShFeGVjU3RhdGUqLCBFbmNvZGVkSlMKIHR5
cGVkZWYgRW5jb2RlZEpTVmFsdWUgKEpJVF9PUEVSQVRJT04gKkpfSklUT3BlcmF0aW9uX0VHUCko
RXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqLCB2b2lkKik7CiB0eXBlZGVmIEVuY29kZWRKU1Zh
bHVlIChKSVRfT1BFUkFUSU9OICpKX0pJVE9wZXJhdGlvbl9FUCkoRXhlY1N0YXRlKiwgdm9pZCop
OwogdHlwZWRlZiBFbmNvZGVkSlNWYWx1ZSAoSklUX09QRVJBVElPTiAqSl9KSVRPcGVyYXRpb25f
RVBQKShFeGVjU3RhdGUqLCB2b2lkKiwgdm9pZCopOwordHlwZWRlZiBFbmNvZGVkSlNWYWx1ZSAo
SklUX09QRVJBVElPTiAqSl9KSVRPcGVyYXRpb25fRVBQUCkoRXhlY1N0YXRlKiwgdm9pZCosIHZv
aWQqLCB2b2lkKik7CiB0eXBlZGVmIEVuY29kZWRKU1ZhbHVlIChKSVRfT1BFUkFUSU9OICpKX0pJ
VE9wZXJhdGlvbl9FUFMpKEV4ZWNTdGF0ZSosIHZvaWQqLCBzaXplX3QpOwogdHlwZWRlZiBFbmNv
ZGVkSlNWYWx1ZSAoSklUX09QRVJBVElPTiAqSl9KSVRPcGVyYXRpb25fRVBjKShFeGVjU3RhdGUq
LCBJbnN0cnVjdGlvbiopOwogdHlwZWRlZiBFbmNvZGVkSlNWYWx1ZSAoSklUX09QRVJBVElPTiAq
Sl9KSVRPcGVyYXRpb25fRUpzY0MpKEV4ZWNTdGF0ZSosIEpTU2NvcGUqLCBKU0NlbGwqKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUVGh1bmtzLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUVGh1bmtzLmNwcAppbmRleCBiZjBhN2Y5MDkxOWE1YjZk
MGJlZWQ5MjhhYmRhZjcxMGM5ZGM5ZDBiLi40MGMxMmNlYzk0ZTAxYTA4NDA0ZjdiNmQ5NjcyMWYx
MDUxZjQ4MzE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFRodW5r
cy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRUaHVua3MuY3BwCkBAIC05
MCwxMCArOTAsMTAgQEAgdm9pZCBKSVRUaHVua3M6OmZpbmFsaXplKEhhbmRsZTxVbmtub3duPiBo
YW5kbGUsIHZvaWQqKQogCiBOYXRpdmVFeGVjdXRhYmxlKiBKSVRUaHVua3M6Omhvc3RGdW5jdGlv
blN0dWIoVk0qIHZtLCBOYXRpdmVGdW5jdGlvbiBmdW5jdGlvbiwgTmF0aXZlRnVuY3Rpb24gY29u
c3RydWN0b3IsIGNvbnN0IFN0cmluZyYgbmFtZSkKIHsKLSAgICByZXR1cm4gaG9zdEZ1bmN0aW9u
U3R1Yih2bSwgZnVuY3Rpb24sIGNvbnN0cnVjdG9yLCBudWxscHRyLCBOb0ludHJpbnNpYywgbmFt
ZSk7CisgICAgcmV0dXJuIGhvc3RGdW5jdGlvblN0dWIodm0sIGZ1bmN0aW9uLCBjb25zdHJ1Y3Rv
ciwgbnVsbHB0ciwgTm9JbnRyaW5zaWMsIG51bGxwdHIsIG5hbWUpOwogfQogCi1OYXRpdmVFeGVj
dXRhYmxlKiBKSVRUaHVua3M6Omhvc3RGdW5jdGlvblN0dWIoVk0qIHZtLCBOYXRpdmVGdW5jdGlv
biBmdW5jdGlvbiwgTmF0aXZlRnVuY3Rpb24gY29uc3RydWN0b3IsIFRodW5rR2VuZXJhdG9yIGdl
bmVyYXRvciwgSW50cmluc2ljIGludHJpbnNpYywgY29uc3QgU3RyaW5nJiBuYW1lKQorTmF0aXZl
RXhlY3V0YWJsZSogSklUVGh1bmtzOjpob3N0RnVuY3Rpb25TdHViKFZNKiB2bSwgTmF0aXZlRnVu
Y3Rpb24gZnVuY3Rpb24sIE5hdGl2ZUZ1bmN0aW9uIGNvbnN0cnVjdG9yLCBUaHVua0dlbmVyYXRv
ciBnZW5lcmF0b3IsIEludHJpbnNpYyBpbnRyaW5zaWMsIGNvbnN0IERPTUpJVDo6U2lnbmF0dXJl
KiBzaWduYXR1cmUsIGNvbnN0IFN0cmluZyYgbmFtZSkKIHsKICAgICBBU1NFUlQoIWlzQ29tcGls
YXRpb25UaHJlYWQoKSk7ICAgIAogICAgIEFTU0VSVCh2bS0+Y2FuVXNlSklUKCkpOwpAQCAtMTEw
LDE0ICsxMTAsMTQgQEAgTmF0aXZlRXhlY3V0YWJsZSogSklUVGh1bmtzOjpob3N0RnVuY3Rpb25T
dHViKFZNKiB2bSwgTmF0aXZlRnVuY3Rpb24gZnVuY3Rpb24sIE4KICAgICAKICAgICBSZWZQdHI8
SklUQ29kZT4gZm9yQ29uc3RydWN0ID0gYWRvcHRSZWYobmV3IE5hdGl2ZUpJVENvZGUoTWFjcm9B
c3NlbWJsZXJDb2RlUmVmOjpjcmVhdGVTZWxmTWFuYWdlZENvZGVSZWYoY3RpTmF0aXZlQ29uc3Ry
dWN0KHZtKSksIEpJVENvZGU6Okhvc3RDYWxsVGh1bmspKTsKICAgICAKLSAgICBOYXRpdmVFeGVj
dXRhYmxlKiBuYXRpdmVFeGVjdXRhYmxlID0gTmF0aXZlRXhlY3V0YWJsZTo6Y3JlYXRlKCp2bSwg
Zm9yQ2FsbCwgZnVuY3Rpb24sIGZvckNvbnN0cnVjdCwgY29uc3RydWN0b3IsIGludHJpbnNpYywg
bmFtZSk7CisgICAgTmF0aXZlRXhlY3V0YWJsZSogbmF0aXZlRXhlY3V0YWJsZSA9IE5hdGl2ZUV4
ZWN1dGFibGU6OmNyZWF0ZSgqdm0sIGZvckNhbGwsIGZ1bmN0aW9uLCBmb3JDb25zdHJ1Y3QsIGNv
bnN0cnVjdG9yLCBpbnRyaW5zaWMsIHNpZ25hdHVyZSwgbmFtZSk7CiAgICAgd2Vha0FkZCgqbV9o
b3N0RnVuY3Rpb25TdHViTWFwLCBzdGQ6Om1ha2VfdHVwbGUoZnVuY3Rpb24sIGNvbnN0cnVjdG9y
LCBuYW1lKSwgV2VhazxOYXRpdmVFeGVjdXRhYmxlPihuYXRpdmVFeGVjdXRhYmxlLCB0aGlzKSk7
CiAgICAgcmV0dXJuIG5hdGl2ZUV4ZWN1dGFibGU7CiB9CiAKIE5hdGl2ZUV4ZWN1dGFibGUqIEpJ
VFRodW5rczo6aG9zdEZ1bmN0aW9uU3R1YihWTSogdm0sIE5hdGl2ZUZ1bmN0aW9uIGZ1bmN0aW9u
LCBUaHVua0dlbmVyYXRvciBnZW5lcmF0b3IsIEludHJpbnNpYyBpbnRyaW5zaWMsIGNvbnN0IFN0
cmluZyYgbmFtZSkKIHsKLSAgICByZXR1cm4gaG9zdEZ1bmN0aW9uU3R1Yih2bSwgZnVuY3Rpb24s
IGNhbGxIb3N0RnVuY3Rpb25Bc0NvbnN0cnVjdG9yLCBnZW5lcmF0b3IsIGludHJpbnNpYywgbmFt
ZSk7CisgICAgcmV0dXJuIGhvc3RGdW5jdGlvblN0dWIodm0sIGZ1bmN0aW9uLCBjYWxsSG9zdEZ1
bmN0aW9uQXNDb25zdHJ1Y3RvciwgZ2VuZXJhdG9yLCBpbnRyaW5zaWMsIG51bGxwdHIsIG5hbWUp
OwogfQogCiB2b2lkIEpJVFRodW5rczo6Y2xlYXJIb3N0RnVuY3Rpb25TdHVicygpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFRodW5rcy5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRUaHVua3MuaAppbmRleCAzZjhmZTgwM2Y5ODcxMGY2OTIzNTI3YmM4
ZjY1NTBmNGVkZDFjN2FlLi5hZGRjZjIzMGMzNDVkNDI3MWI2MzdmMDhiOTRjNDE2YTNlZDE4MmE0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFRodW5rcy5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUVGh1bmtzLmgKQEAgLTM5LDYgKzM5LDkgQEAK
ICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CiAKIG5hbWVzcGFjZSBKU0MgeworbmFt
ZXNwYWNlIERPTUpJVCB7CitjbGFzcyBTaWduYXR1cmU7Cit9CiAKIGNsYXNzIFZNOwogY2xhc3Mg
TmF0aXZlRXhlY3V0YWJsZTsKQEAgLTU3LDcgKzYwLDcgQEAgY2xhc3MgSklUVGh1bmtzIGZpbmFs
IDogcHJpdmF0ZSBXZWFrSGFuZGxlT3duZXIgewogICAgIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBj
dGlTdHViKFZNKiwgVGh1bmtHZW5lcmF0b3IpOwogCiAgICAgTmF0aXZlRXhlY3V0YWJsZSogaG9z
dEZ1bmN0aW9uU3R1YihWTSosIE5hdGl2ZUZ1bmN0aW9uLCBOYXRpdmVGdW5jdGlvbiBjb25zdHJ1
Y3RvciwgY29uc3QgU3RyaW5nJiBuYW1lKTsKLSAgICBOYXRpdmVFeGVjdXRhYmxlKiBob3N0RnVu
Y3Rpb25TdHViKFZNKiwgTmF0aXZlRnVuY3Rpb24sIE5hdGl2ZUZ1bmN0aW9uIGNvbnN0cnVjdG9y
LCBUaHVua0dlbmVyYXRvciwgSW50cmluc2ljLCBjb25zdCBTdHJpbmcmIG5hbWUpOworICAgIE5h
dGl2ZUV4ZWN1dGFibGUqIGhvc3RGdW5jdGlvblN0dWIoVk0qLCBOYXRpdmVGdW5jdGlvbiwgTmF0
aXZlRnVuY3Rpb24gY29uc3RydWN0b3IsIFRodW5rR2VuZXJhdG9yLCBJbnRyaW5zaWMsIGNvbnN0
IERPTUpJVDo6U2lnbmF0dXJlKiwgY29uc3QgU3RyaW5nJiBuYW1lKTsKICAgICBOYXRpdmVFeGVj
dXRhYmxlKiBob3N0RnVuY3Rpb25TdHViKFZNKiwgTmF0aXZlRnVuY3Rpb24sIFRodW5rR2VuZXJh
dG9yLCBJbnRyaW5zaWMsIGNvbnN0IFN0cmluZyYgbmFtZSk7CiAKICAgICB2b2lkIGNsZWFySG9z
dEZ1bmN0aW9uU3R1YnMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTQm91bmRGdW5jdGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0JvdW5kRnVuY3Rpb24uY3BwCmluZGV4IDI2Zjk5ZDY1M2FhMTQ0YjI0MDRkZDc5NTk0MzI5M2Rl
OTZiNzM0YzUuLmM0Y2U0M2U3ZDU2MGI4NzM2M2M0OGQ5NTBhMDlhZDc5ZDA1MjQ5N2EgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQm91bmRGdW5jdGlvbi5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCb3VuZEZ1bmN0aW9uLmNwcApA
QCAtMTY4LDcgKzE2OCw3IEBAIEpTQm91bmRGdW5jdGlvbiogSlNCb3VuZEZ1bmN0aW9uOjpjcmVh
dGUoVk0mIHZtLCBFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0CiAgICAgTmF0aXZlRXhl
Y3V0YWJsZSogZXhlY3V0YWJsZSA9IHZtLmdldEhvc3RGdW5jdGlvbigKICAgICAgICAgc2xvd0Nh
c2UgPyBib3VuZEZ1bmN0aW9uQ2FsbCA6IGJvdW5kVGhpc05vQXJnc0Z1bmN0aW9uQ2FsbCwKICAg
ICAgICAgc2xvd0Nhc2UgPyBOb0ludHJpbnNpYyA6IEJvdW5kVGhpc05vQXJnc0Z1bmN0aW9uQ2Fs
bEludHJpbnNpYywKLSAgICAgICAgY2FuQ29uc3RydWN0ID8gKHNsb3dDYXNlID8gYm91bmRGdW5j
dGlvbkNvbnN0cnVjdCA6IGJvdW5kVGhpc05vQXJnc0Z1bmN0aW9uQ29uc3RydWN0KSA6IGNhbGxI
b3N0RnVuY3Rpb25Bc0NvbnN0cnVjdG9yLAorICAgICAgICBjYW5Db25zdHJ1Y3QgPyAoc2xvd0Nh
c2UgPyBib3VuZEZ1bmN0aW9uQ29uc3RydWN0IDogYm91bmRUaGlzTm9BcmdzRnVuY3Rpb25Db25z
dHJ1Y3QpIDogY2FsbEhvc3RGdW5jdGlvbkFzQ29uc3RydWN0b3IsIG51bGxwdHIsCiAgICAgICAg
IG5hbWUpOwogICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gZ2V0Qm91bmRGdW5jdGlvblN0cnVj
dHVyZSh2bSwgZXhlYywgZ2xvYmFsT2JqZWN0LCB0YXJnZXRGdW5jdGlvbik7CiAgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTihzY29wZSwgbnVsbHB0cik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0NlbGwuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTQ2VsbC5oCmluZGV4IGM0MGYzZTIxOTg0MWZiNDY4OTYzNTI4NGIwNDIyNDdhZmQ1MjNjMzYu
LjRlZmJmOTA3NzhjYzU3MWJiZGI4Mjg3MWE1MWZhNDRmODU2YWU5OGIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5oCkBAIC01NiwxNyArNTYsMTcgQEAgdGVtcGxhdGU8dHlw
ZW5hbWUgVD4gdm9pZCogYWxsb2NhdGVDZWxsKEhlYXAmLCBzaXplX3QpOwogdGVtcGxhdGU8dHlw
ZW5hbWUgVD4gdm9pZCogYWxsb2NhdGVDZWxsKEhlYXAmLCBHQ0RlZmVycmFsQ29udGV4dCopOwog
dGVtcGxhdGU8dHlwZW5hbWUgVD4gdm9pZCogYWxsb2NhdGVDZWxsKEhlYXAmLCBHQ0RlZmVycmFs
Q29udGV4dCosIHNpemVfdCk7CiAKLSNkZWZpbmUgREVDTEFSRV9FWFBPUlRfSU5GTyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBwcm90ZWN0ZWQ6ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK
LSAgICAgICAgc3RhdGljIEpTX0VYUE9SVERBVEEgY29uc3QgOjpKU0M6OkNsYXNzSW5mbyBzX2lu
Zm87ICAgICAgICAgICAgIFwKLSAgICBwdWJsaWM6ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgc3RhdGljIGNvbnN0
IDo6SlNDOjpDbGFzc0luZm8qIGluZm8oKSB7IHJldHVybiAmc19pbmZvOyB9Ci0KLSNkZWZpbmUg
REVDTEFSRV9JTkZPICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFwKLSAgICBwcm90ZWN0ZWQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgc3RhdGljIGNvbnN0IDo6SlNDOjpD
bGFzc0luZm8gc19pbmZvOyAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBwdWJsaWM6
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFwKLSAgICAgICAgc3RhdGljIGNvbnN0IDo6SlNDOjpDbGFzc0luZm8qIGluZm8oKSB7IHJl
dHVybiAmc19pbmZvOyB9CisjZGVmaW5lIERFQ0xBUkVfRVhQT1JUX0lORk8gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBwcm90ZWN0ZWQ6ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgXAorICAgICAgICBzdGF0aWMgSlNfRVhQT1JUREFUQSBjb25zdCA6OkpTQzo6Q2xhc3NJbmZv
IHNfaW5mbzsgICAgICAgICAgICAgICAgICBcCisgICAgcHVibGljOiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAg
ICAgc3RhdGljIGNvbnN0ZXhwciBjb25zdCA6OkpTQzo6Q2xhc3NJbmZvKiBpbmZvKCkgeyByZXR1
cm4gJnNfaW5mbzsgfQorCisjZGVmaW5lIERFQ0xBUkVfSU5GTyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBwcm90ZWN0ZWQ6ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgXAorICAgICAgICBzdGF0aWMgY29uc3QgOjpKU0M6OkNsYXNzSW5mbyBzX2luZm87ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgcHVibGljOiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAg
ICAgc3RhdGljIGNvbnN0ZXhwciBjb25zdCA6OkpTQzo6Q2xhc3NJbmZvKiBpbmZvKCkgeyByZXR1
cm4gJnNfaW5mbzsgfQogCiBjbGFzcyBKU0NlbGwgOiBwdWJsaWMgSGVhcENlbGwgewogICAgIGZy
aWVuZCBjbGFzcyBKU1ZhbHVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNGdW5jdGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1
bmN0aW9uLmNwcAppbmRleCA4NTg0YmMyOTdhZjcyM2Y1ODI5ODE1NmUyZTJiMGE4OGFlNzE4ZmI0
Li5hMzE4NDJiNjU5MDkzZWVkNDgzMmYwYzIyNTQ3ZmZiNDQ5YzQ0Y2Q5IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcApAQCAtODQsOSArODQsOSBAQCBK
U0Z1bmN0aW9uKiBKU0Z1bmN0aW9uOjpjcmVhdGUoVk0mIHZtLCBXZWJBc3NlbWJseUV4ZWN1dGFi
bGUqIGV4ZWN1dGFibGUsIEpTU2NvcAogfQogI2VuZGlmCiAKLUpTRnVuY3Rpb24qIEpTRnVuY3Rp
b246OmNyZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGludCBsZW5n
dGgsIGNvbnN0IFN0cmluZyYgbmFtZSwgTmF0aXZlRnVuY3Rpb24gbmF0aXZlRnVuY3Rpb24sIElu
dHJpbnNpYyBpbnRyaW5zaWMsIE5hdGl2ZUZ1bmN0aW9uIG5hdGl2ZUNvbnN0cnVjdG9yKQorSlNG
dW5jdGlvbiogSlNGdW5jdGlvbjo6Y3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgaW50IGxlbmd0aCwgY29uc3QgU3RyaW5nJiBuYW1lLCBOYXRpdmVGdW5jdGlvbiBu
YXRpdmVGdW5jdGlvbiwgSW50cmluc2ljIGludHJpbnNpYywgTmF0aXZlRnVuY3Rpb24gbmF0aXZl
Q29uc3RydWN0b3IsIGNvbnN0IERPTUpJVDo6U2lnbmF0dXJlKiBzaWduYXR1cmUpCiB7Ci0gICAg
TmF0aXZlRXhlY3V0YWJsZSogZXhlY3V0YWJsZSA9IHZtLmdldEhvc3RGdW5jdGlvbihuYXRpdmVG
dW5jdGlvbiwgaW50cmluc2ljLCBuYXRpdmVDb25zdHJ1Y3RvciwgbmFtZSk7CisgICAgTmF0aXZl
RXhlY3V0YWJsZSogZXhlY3V0YWJsZSA9IHZtLmdldEhvc3RGdW5jdGlvbihuYXRpdmVGdW5jdGlv
biwgaW50cmluc2ljLCBuYXRpdmVDb25zdHJ1Y3Rvciwgc2lnbmF0dXJlLCBuYW1lKTsKICAgICBK
U0Z1bmN0aW9uKiBmdW5jdGlvbiA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTRnVuY3Rp
b24+KHZtLmhlYXApKSBKU0Z1bmN0aW9uKHZtLCBnbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdC0+
ZnVuY3Rpb25TdHJ1Y3R1cmUoKSk7CiAgICAgLy8gQ2FuJ3QgZG8gdGhpcyBkdXJpbmcgaW5pdGlh
bGl6YXRpb24gYmVjYXVzZSBnZXRIb3N0RnVuY3Rpb24gbWlnaHQgZG8gYSBHQyBhbGxvY2F0aW9u
LgogICAgIGZ1bmN0aW9uLT5maW5pc2hDcmVhdGlvbih2bSwgZXhlY3V0YWJsZSwgbGVuZ3RoLCBu
YW1lKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rp
b24uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uaAppbmRleCA4
ZGYwM2ExNGE2N2RhZTkzMDRjMGQ1NTQ5NGY5NWE4NzdmOTc4MWU2Li5mMTFiMTJmYjNiZDE0NTYy
NWY4MmJmMWZhODcyNTA0NDQ3NjU3NjI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0Z1bmN0aW9uLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNGdW5jdGlvbi5oCkBAIC00Niw2ICs0NiwxMSBAQCBjbGFzcyBTcGVjdWxhdGl2ZUpJVDsK
IGNsYXNzIEpJVENvbXBpbGVyOwogfQogCituYW1lc3BhY2UgRE9NSklUIHsKK2NsYXNzIFNpZ25h
dHVyZTsKK30KKworCiBKU19FWFBPUlRfUFJJVkFURSBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGNhbGxIb3N0RnVuY3Rpb25Bc0NvbnN0cnVjdG9yKEV4ZWNTdGF0ZSopOwogCiBKU19FWFBP
UlRfUFJJVkFURSBTdHJpbmcgZ2V0Q2FsY3VsYXRlZERpc3BsYXlOYW1lKFZNJiwgSlNPYmplY3Qq
KTsKQEAgLTY3LDcgKzcyLDcgQEAgY2xhc3MgSlNGdW5jdGlvbiA6IHB1YmxpYyBKU0NhbGxlZSB7
CiAgICAgICAgIHJldHVybiBzaXplb2YoSlNGdW5jdGlvbik7CiAgICAgfQogCi0gICAgSlNfRVhQ
T1JUX1BSSVZBVEUgc3RhdGljIEpTRnVuY3Rpb24qIGNyZWF0ZShWTSYsIEpTR2xvYmFsT2JqZWN0
KiwgaW50IGxlbmd0aCwgY29uc3QgU3RyaW5nJiBuYW1lLCBOYXRpdmVGdW5jdGlvbiwgSW50cmlu
c2ljID0gTm9JbnRyaW5zaWMsIE5hdGl2ZUZ1bmN0aW9uIG5hdGl2ZUNvbnN0cnVjdG9yID0gY2Fs
bEhvc3RGdW5jdGlvbkFzQ29uc3RydWN0b3IpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRp
YyBKU0Z1bmN0aW9uKiBjcmVhdGUoVk0mLCBKU0dsb2JhbE9iamVjdCosIGludCBsZW5ndGgsIGNv
bnN0IFN0cmluZyYgbmFtZSwgTmF0aXZlRnVuY3Rpb24sIEludHJpbnNpYyA9IE5vSW50cmluc2lj
LCBOYXRpdmVGdW5jdGlvbiBuYXRpdmVDb25zdHJ1Y3RvciA9IGNhbGxIb3N0RnVuY3Rpb25Bc0Nv
bnN0cnVjdG9yLCBjb25zdCBET01KSVQ6OlNpZ25hdHVyZSogPSBudWxscHRyKTsKICAgICAKICAg
ICBzdGF0aWMgSlNGdW5jdGlvbiogY3JlYXRlV2l0aEludmFsaWRhdGVkUmVhbGxvY2F0aW9uV2F0
Y2hwb2ludChWTSYsIEZ1bmN0aW9uRXhlY3V0YWJsZSosIEpTU2NvcGUqKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNOYXRpdmVTdGRGdW5jdGlvbi5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU05hdGl2ZVN0ZEZ1bmN0aW9uLmNwcApp
bmRleCA2ZGQ4NDlmMmVhZmJlYmRkNzA3ZWU1NzM4MDA4MmRlNTQ4OTMyMGExLi5jMTI2NWIxZjA2
YTkwYTA3NDQxZDdhYzVjNjA4ODMwYTFlZmE0ZjAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU05hdGl2ZVN0ZEZ1bmN0aW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU05hdGl2ZVN0ZEZ1bmN0aW9uLmNwcApAQCAtNjYsNyArNjYs
NyBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBydW5TdGRGdW5jdGlvbihF
eGVjU3RhdGUqIHN0YXRlKQogCiBKU05hdGl2ZVN0ZEZ1bmN0aW9uKiBKU05hdGl2ZVN0ZEZ1bmN0
aW9uOjpjcmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBpbnQgbGVu
Z3RoLCBjb25zdCBTdHJpbmcmIG5hbWUsIE5hdGl2ZVN0ZEZ1bmN0aW9uJiYgbmF0aXZlU3RkRnVu
Y3Rpb24sIEludHJpbnNpYyBpbnRyaW5zaWMsIE5hdGl2ZUZ1bmN0aW9uIG5hdGl2ZUNvbnN0cnVj
dG9yKQogewotICAgIE5hdGl2ZUV4ZWN1dGFibGUqIGV4ZWN1dGFibGUgPSB2bS5nZXRIb3N0RnVu
Y3Rpb24ocnVuU3RkRnVuY3Rpb24sIGludHJpbnNpYywgbmF0aXZlQ29uc3RydWN0b3IsIG5hbWUp
OworICAgIE5hdGl2ZUV4ZWN1dGFibGUqIGV4ZWN1dGFibGUgPSB2bS5nZXRIb3N0RnVuY3Rpb24o
cnVuU3RkRnVuY3Rpb24sIGludHJpbnNpYywgbmF0aXZlQ29uc3RydWN0b3IsIG51bGxwdHIsIG5h
bWUpOwogICAgIE5hdGl2ZVN0ZEZ1bmN0aW9uQ2VsbCogZnVuY3Rpb25DZWxsID0gTmF0aXZlU3Rk
RnVuY3Rpb25DZWxsOjpjcmVhdGUodm0sIFdURk1vdmUobmF0aXZlU3RkRnVuY3Rpb24pKTsKICAg
ICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGdsb2JhbE9iamVjdC0+bmF0aXZlU3RkRnVuY3Rpb25T
dHJ1Y3R1cmUoKTsKICAgICBKU05hdGl2ZVN0ZEZ1bmN0aW9uKiBmdW5jdGlvbiA9IG5ldyAoTm90
TnVsbCwgYWxsb2NhdGVDZWxsPEpTTmF0aXZlU3RkRnVuY3Rpb24+KHZtLmhlYXApKSBKU05hdGl2
ZVN0ZEZ1bmN0aW9uKHZtLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAKaW5kZXggZjUzZGI2MTk4NmVhZGRhYTIzYTI0
NWRlNTRhZTA5YzU4ZjBhYjc2NC4uMDhhZTc5MjBhOWVlNTJjMjRkNzVhYmUxZGE3ZjY2ZTgxMWIy
YWYxYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3Qu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcApAQCAt
MjU0OSw2ICsyNTQ5LDE3IEBAIGJvb2wgSlNPYmplY3Q6OnB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9u
KFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uCiAgICAgcmV0dXJuIHB1
dERpcmVjdCh2bSwgcHJvcGVydHlOYW1lLCBmdW5jdGlvbiwgYXR0cmlidXRlcyk7CiB9CiAKK2Jv
b2wgSlNPYmplY3Q6OnB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uKFZNJiB2bSwgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgY29uc3QgUHJvcGVydHlOYW1lJiBwcm9wZXJ0eU5hbWUsIHVuc2ln
bmVkIGZ1bmN0aW9uTGVuZ3RoLCBOYXRpdmVGdW5jdGlvbiBuYXRpdmVGdW5jdGlvbiwgSW50cmlu
c2ljIGludHJpbnNpYywgY29uc3QgRE9NSklUOjpTaWduYXR1cmUqIHNpZ25hdHVyZSwgdW5zaWdu
ZWQgYXR0cmlidXRlcykKK3sKKyAgICBTdHJpbmdJbXBsKiBuYW1lID0gcHJvcGVydHlOYW1lLnB1
YmxpY05hbWUoKTsKKyAgICBpZiAoIW5hbWUpCisgICAgICAgIG5hbWUgPSB2bS5wcm9wZXJ0eU5h
bWVzLT5hbm9ueW1vdXMuaW1wbCgpOworICAgIEFTU0VSVChuYW1lKTsKKworICAgIEpTRnVuY3Rp
b24qIGZ1bmN0aW9uID0gSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIGZ1bmN0
aW9uTGVuZ3RoLCBuYW1lLCBuYXRpdmVGdW5jdGlvbiwgaW50cmluc2ljLCBjYWxsSG9zdEZ1bmN0
aW9uQXNDb25zdHJ1Y3Rvciwgc2lnbmF0dXJlKTsKKyAgICByZXR1cm4gcHV0RGlyZWN0KHZtLCBw
cm9wZXJ0eU5hbWUsIGZ1bmN0aW9uLCBhdHRyaWJ1dGVzKTsKK30KKwogSlNGdW5jdGlvbiogSlNP
YmplY3Q6OnB1dERpcmVjdEJ1aWx0aW5GdW5jdGlvbihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIGNvbnN0IFByb3BlcnR5TmFtZSYgcHJvcGVydHlOYW1lLCBGdW5jdGlvbkV4
ZWN1dGFibGUqIGZ1bmN0aW9uRXhlY3V0YWJsZSwgdW5zaWduZWQgYXR0cmlidXRlcykKIHsKICAg
ICBTdHJpbmdJbXBsKiBuYW1lID0gcHJvcGVydHlOYW1lLnB1YmxpY05hbWUoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCmluZGV4IDYyMjBlYzdhMWJhOGU4YTc0OWRi
NGIwNmNkNDI5M2E4ODVhZjdmOTIuLmViZTQ4NWU4ZGYzNmRiNWNhZjM3NzA0YjhlZWRkNGE3NmNi
OWM0NDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaApAQCAtNDcs
NiArNDcsOSBAQAogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KIAogbmFtZXNwYWNlIEpT
QyB7CituYW1lc3BhY2UgRE9NSklUIHsKK2NsYXNzIFNpZ25hdHVyZTsKK30KIAogaW5saW5lIEpT
Q2VsbCogZ2V0SlNGdW5jdGlvbihKU1ZhbHVlIHZhbHVlKQogewpAQCAtNzAwLDYgKzcwMyw3IEBA
IGNsYXNzIEpTT2JqZWN0IDogcHVibGljIEpTQ2VsbCB7CiAKICAgICBKU19FWFBPUlRfUFJJVkFU
RSBib29sIHB1dERpcmVjdE5hdGl2ZUludHJpbnNpY0dldHRlcihWTSYsIEpTR2xvYmFsT2JqZWN0
KiwgSWRlbnRpZmllciwgTmF0aXZlRnVuY3Rpb24sIEludHJpbnNpYywgdW5zaWduZWQgYXR0cmli
dXRlcyk7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgYm9vbCBwdXREaXJlY3ROYXRpdmVGdW5jdGlv
bihWTSYsIEpTR2xvYmFsT2JqZWN0KiwgY29uc3QgUHJvcGVydHlOYW1lJiwgdW5zaWduZWQgZnVu
Y3Rpb25MZW5ndGgsIE5hdGl2ZUZ1bmN0aW9uLCBJbnRyaW5zaWMsIHVuc2lnbmVkIGF0dHJpYnV0
ZXMpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIGJvb2wgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb24o
Vk0mLCBKU0dsb2JhbE9iamVjdCosIGNvbnN0IFByb3BlcnR5TmFtZSYsIHVuc2lnbmVkIGZ1bmN0
aW9uTGVuZ3RoLCBOYXRpdmVGdW5jdGlvbiwgSW50cmluc2ljLCBjb25zdCBET01KSVQ6OlNpZ25h
dHVyZSosIHVuc2lnbmVkIGF0dHJpYnV0ZXMpOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIEpTRnVu
Y3Rpb24qIHB1dERpcmVjdEJ1aWx0aW5GdW5jdGlvbihWTSYsIEpTR2xvYmFsT2JqZWN0KiwgY29u
c3QgUHJvcGVydHlOYW1lJiwgRnVuY3Rpb25FeGVjdXRhYmxlKiwgdW5zaWduZWQgYXR0cmlidXRl
cyk7CiAgICAgSlNGdW5jdGlvbiogcHV0RGlyZWN0QnVpbHRpbkZ1bmN0aW9uV2l0aG91dFRyYW5z
aXRpb24oVk0mLCBKU0dsb2JhbE9iamVjdCosIGNvbnN0IFByb3BlcnR5TmFtZSYsIEZ1bmN0aW9u
RXhlY3V0YWJsZSosIHVuc2lnbmVkIGF0dHJpYnV0ZXMpOwogICAgIEpTX0VYUE9SVF9QUklWQVRF
IHZvaWQgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbihWTSYsIEpTR2xv
YmFsT2JqZWN0KiwgY29uc3QgUHJvcGVydHlOYW1lJiwgdW5zaWduZWQgZnVuY3Rpb25MZW5ndGgs
IE5hdGl2ZUZ1bmN0aW9uLCBJbnRyaW5zaWMsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTG9va3VwLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Mb29rdXAuaAppbmRleCBlMmQxNzk1Mzg4ZTc2NTJiZDhmMWI0
YjZkYWNiYjJjYmNlOWNkNDRmLi5kNzA3Njg2ZmI1NjkzZTdmNTJmZTZkMWEyZWM0NGJkMDAyM2Jl
ZjExIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Mb29rdXAuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Mb29rdXAuaApAQCAtMjQsNiArMjQs
NyBAQAogI2luY2x1ZGUgIkNhbGxGcmFtZS5oIgogI2luY2x1ZGUgIkN1c3RvbUdldHRlclNldHRl
ci5oIgogI2luY2x1ZGUgIkRPTUpJVEdldHRlclNldHRlci5oIgorI2luY2x1ZGUgIkRPTUpJVFNp
Z25hdHVyZS5oIgogI2luY2x1ZGUgIklkZW50aWZpZXIuaCIKICNpbmNsdWRlICJJZGVudGlmaWVy
SW5saW5lcy5oIgogI2luY2x1ZGUgIkludHJpbnNpYy5oIgpAQCAtNzUsMTIgKzc2LDE5IEBAIHN0
cnVjdCBIYXNoVGFibGVWYWx1ZSB7CiAgICAgSW50cmluc2ljIGludHJpbnNpYygpIGNvbnN0IHsg
QVNTRVJUKG1fYXR0cmlidXRlcyAmIEZ1bmN0aW9uKTsgcmV0dXJuIG1faW50cmluc2ljOyB9CiAg
ICAgQnVpbHRpbkdlbmVyYXRvciBidWlsdGluR2VuZXJhdG9yKCkgY29uc3QgeyBBU1NFUlQobV9h
dHRyaWJ1dGVzICYgQnVpbHRpbik7IHJldHVybiByZWludGVycHJldF9jYXN0PEJ1aWx0aW5HZW5l
cmF0b3I+KG1fdmFsdWVzLnZhbHVlMSk7IH0KICAgICBOYXRpdmVGdW5jdGlvbiBmdW5jdGlvbigp
IGNvbnN0IHsgQVNTRVJUKG1fYXR0cmlidXRlcyAmIEZ1bmN0aW9uKTsgcmV0dXJuIHJlaW50ZXJw
cmV0X2Nhc3Q8TmF0aXZlRnVuY3Rpb24+KG1fdmFsdWVzLnZhbHVlMSk7IH0KLSAgICB1bnNpZ25l
ZCBjaGFyIGZ1bmN0aW9uTGVuZ3RoKCkgY29uc3QgeyBBU1NFUlQobV9hdHRyaWJ1dGVzICYgRnVu
Y3Rpb24pOyByZXR1cm4gc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4obV92YWx1ZXMudmFsdWUy
KTsgfQorICAgIHVuc2lnbmVkIGNoYXIgZnVuY3Rpb25MZW5ndGgoKSBjb25zdAorICAgIHsKKyAg
ICAgICAgQVNTRVJUKG1fYXR0cmlidXRlcyAmIEZ1bmN0aW9uKTsKKyAgICAgICAgaWYgKG1fYXR0
cmlidXRlcyAmIERPTUpJVEZ1bmN0aW9uKQorICAgICAgICAgICAgcmV0dXJuIHNpZ25hdHVyZSgp
LT5hcmd1bWVudENvdW50OworICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hh
cj4obV92YWx1ZXMudmFsdWUyKTsKKyAgICB9CiAKICAgICBHZXRGdW5jdGlvbiBwcm9wZXJ0eUdl
dHRlcigpIGNvbnN0IHsgQVNTRVJUKCEobV9hdHRyaWJ1dGVzICYgQnVpbHRpbk9yRnVuY3Rpb25P
ckFjY2Vzc29yT3JMYXp5UHJvcGVydHlPckNvbnN0YW50KSk7IHJldHVybiByZWludGVycHJldF9j
YXN0PEdldEZ1bmN0aW9uPihtX3ZhbHVlcy52YWx1ZTEpOyB9CiAgICAgUHV0RnVuY3Rpb24gcHJv
cGVydHlQdXR0ZXIoKSBjb25zdCB7IEFTU0VSVCghKG1fYXR0cmlidXRlcyAmIEJ1aWx0aW5PckZ1
bmN0aW9uT3JBY2Nlc3Nvck9yTGF6eVByb3BlcnR5T3JDb25zdGFudCkpOyByZXR1cm4gcmVpbnRl
cnByZXRfY2FzdDxQdXRGdW5jdGlvbj4obV92YWx1ZXMudmFsdWUyKTsgfQogCiAgICAgRE9NSklU
OjpHZXR0ZXJTZXR0ZXIqIGRvbUpJVCgpIGNvbnN0IHsgQVNTRVJUKG1fYXR0cmlidXRlcyAmIERP
TUpJVEF0dHJpYnV0ZSk7IHJldHVybiByZWludGVycHJldF9jYXN0PERPTUpJVEdldHRlclNldHRl
ckdlbmVyYXRvcj4obV92YWx1ZXMudmFsdWUxKSgpOyB9CisgICAgY29uc3QgRE9NSklUOjpTaWdu
YXR1cmUqIHNpZ25hdHVyZSgpIGNvbnN0IHsgQVNTRVJUKG1fYXR0cmlidXRlcyAmIERPTUpJVEZ1
bmN0aW9uKTsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgRE9NSklUOjpTaWduYXR1cmUq
PihtX3ZhbHVlcy52YWx1ZTIpOyB9CiAKICAgICBOYXRpdmVGdW5jdGlvbiBhY2Nlc3NvckdldHRl
cigpIGNvbnN0IHsgQVNTRVJUKG1fYXR0cmlidXRlcyAmIEFjY2Vzc29yKTsgcmV0dXJuIHJlaW50
ZXJwcmV0X2Nhc3Q8TmF0aXZlRnVuY3Rpb24+KG1fdmFsdWVzLnZhbHVlMSk7IH0KICAgICBOYXRp
dmVGdW5jdGlvbiBhY2Nlc3NvclNldHRlcigpIGNvbnN0IHsgQVNTRVJUKG1fYXR0cmlidXRlcyAm
IEFjY2Vzc29yKTsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8TmF0aXZlRnVuY3Rpb24+KG1fdmFs
dWVzLnZhbHVlMik7IH0KQEAgLTMxMyw2ICszMjEsMTIgQEAgaW5saW5lIHZvaWQgcmVpZnlTdGF0
aWNQcm9wZXJ0eShWTSYgdm0sIGNvbnN0IFByb3BlcnR5TmFtZSYgcHJvcGVydHlOYW1lLCBjb25z
dAogICAgIH0KIAogICAgIGlmICh2YWx1ZS5hdHRyaWJ1dGVzKCkgJiBGdW5jdGlvbikgeworICAg
ICAgICBpZiAodmFsdWUuYXR0cmlidXRlcygpICYgRE9NSklURnVuY3Rpb24pIHsKKyAgICAgICAg
ICAgIHRoaXNPYmoucHV0RGlyZWN0TmF0aXZlRnVuY3Rpb24oCisgICAgICAgICAgICAgICAgdm0s
IHRoaXNPYmouZ2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZSwgdmFsdWUuZnVuY3Rpb25MZW5n
dGgoKSwKKyAgICAgICAgICAgICAgICB2YWx1ZS5mdW5jdGlvbigpLCB2YWx1ZS5pbnRyaW5zaWMo
KSwgdmFsdWUuc2lnbmF0dXJlKCksIGF0dHJpYnV0ZXNGb3JTdHJ1Y3R1cmUodmFsdWUuYXR0cmli
dXRlcygpKSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KICAgICAgICAgdGhpc09i
ai5wdXREaXJlY3ROYXRpdmVGdW5jdGlvbigKICAgICAgICAgICAgIHZtLCB0aGlzT2JqLmdsb2Jh
bE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLmZ1bmN0aW9uTGVuZ3RoKCksCiAgICAgICAg
ICAgICB2YWx1ZS5mdW5jdGlvbigpLCB2YWx1ZS5pbnRyaW5zaWMoKSwgYXR0cmlidXRlc0ZvclN0
cnVjdHVyZSh2YWx1ZS5hdHRyaWJ1dGVzKCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL05hdGl2ZUV4ZWN1dGFibGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvTmF0aXZlRXhlY3V0YWJsZS5jcHAKaW5kZXggMWMyYmVjNThiN2RiODk4Yjgx
MThiMjk3MTBiMmQ3NDI2OTNiYjIxZC4uYjdkYWQyYTQ2MmRkZGZjMjI3NjJmZDVjZDdjZjZhNDYx
Y2RkMThmNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZl
RXhlY3V0YWJsZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZl
RXhlY3V0YWJsZS5jcHAKQEAgLTQwLDEwICs0MCwxMCBAQCBuYW1lc3BhY2UgSlNDIHsKIAogY29u
c3QgQ2xhc3NJbmZvIE5hdGl2ZUV4ZWN1dGFibGU6OnNfaW5mbyA9IHsgIk5hdGl2ZUV4ZWN1dGFi
bGUiLCAmRXhlY3V0YWJsZUJhc2U6OnNfaW5mbywgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShOYXRp
dmVFeGVjdXRhYmxlKSB9OwogCi1OYXRpdmVFeGVjdXRhYmxlKiBOYXRpdmVFeGVjdXRhYmxlOjpj
cmVhdGUoVk0mIHZtLCBQYXNzUmVmUHRyPEpJVENvZGU+IGNhbGxUaHVuaywgTmF0aXZlRnVuY3Rp
b24gZnVuY3Rpb24sIFBhc3NSZWZQdHI8SklUQ29kZT4gY29uc3RydWN0VGh1bmssIE5hdGl2ZUZ1
bmN0aW9uIGNvbnN0cnVjdG9yLCBJbnRyaW5zaWMgaW50cmluc2ljLCBjb25zdCBTdHJpbmcmIG5h
bWUpCitOYXRpdmVFeGVjdXRhYmxlKiBOYXRpdmVFeGVjdXRhYmxlOjpjcmVhdGUoVk0mIHZtLCBQ
YXNzUmVmUHRyPEpJVENvZGU+IGNhbGxUaHVuaywgTmF0aXZlRnVuY3Rpb24gZnVuY3Rpb24sIFBh
c3NSZWZQdHI8SklUQ29kZT4gY29uc3RydWN0VGh1bmssIE5hdGl2ZUZ1bmN0aW9uIGNvbnN0cnVj
dG9yLCBJbnRyaW5zaWMgaW50cmluc2ljLCBjb25zdCBET01KSVQ6OlNpZ25hdHVyZSogc2lnbmF0
dXJlLCBjb25zdCBTdHJpbmcmIG5hbWUpCiB7CiAgICAgTmF0aXZlRXhlY3V0YWJsZSogZXhlY3V0
YWJsZTsKLSAgICBleGVjdXRhYmxlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8TmF0aXZl
RXhlY3V0YWJsZT4odm0uaGVhcCkpIE5hdGl2ZUV4ZWN1dGFibGUodm0sIGZ1bmN0aW9uLCBjb25z
dHJ1Y3RvciwgaW50cmluc2ljKTsKKyAgICBleGVjdXRhYmxlID0gbmV3IChOb3ROdWxsLCBhbGxv
Y2F0ZUNlbGw8TmF0aXZlRXhlY3V0YWJsZT4odm0uaGVhcCkpIE5hdGl2ZUV4ZWN1dGFibGUodm0s
IGZ1bmN0aW9uLCBjb25zdHJ1Y3RvciwgaW50cmluc2ljLCBzaWduYXR1cmUpOwogICAgIGV4ZWN1
dGFibGUtPmZpbmlzaENyZWF0aW9uKHZtLCBjYWxsVGh1bmssIGNvbnN0cnVjdFRodW5rLCBuYW1l
KTsKICAgICByZXR1cm4gZXhlY3V0YWJsZTsKIH0KQEAgLTY4LDEwICs2OCwxMSBAQCB2b2lkIE5h
dGl2ZUV4ZWN1dGFibGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgUGFzc1JlZlB0cjxKSVRDb2Rl
PiBjYWxsVGh1bmssIFBhcwogICAgIG1fbmFtZSA9IG5hbWU7CiB9CiAKLU5hdGl2ZUV4ZWN1dGFi
bGU6Ok5hdGl2ZUV4ZWN1dGFibGUoVk0mIHZtLCBOYXRpdmVGdW5jdGlvbiBmdW5jdGlvbiwgTmF0
aXZlRnVuY3Rpb24gY29uc3RydWN0b3IsIEludHJpbnNpYyBpbnRyaW5zaWMpCitOYXRpdmVFeGVj
dXRhYmxlOjpOYXRpdmVFeGVjdXRhYmxlKFZNJiB2bSwgTmF0aXZlRnVuY3Rpb24gZnVuY3Rpb24s
IE5hdGl2ZUZ1bmN0aW9uIGNvbnN0cnVjdG9yLCBJbnRyaW5zaWMgaW50cmluc2ljLCBjb25zdCBE
T01KSVQ6OlNpZ25hdHVyZSogc2lnbmF0dXJlKQogICAgIDogRXhlY3V0YWJsZUJhc2Uodm0sIHZt
Lm5hdGl2ZUV4ZWN1dGFibGVTdHJ1Y3R1cmUuZ2V0KCksIE5VTV9QQVJBTUVURVJTX0lTX0hPU1Qs
IGludHJpbnNpYykKICAgICAsIG1fZnVuY3Rpb24oZnVuY3Rpb24pCiAgICAgLCBtX2NvbnN0cnVj
dG9yKGNvbnN0cnVjdG9yKQorICAgICwgbV9zaWduYXR1cmUoc2lnbmF0dXJlKQogewogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OYXRpdmVFeGVjdXRhYmxl
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OYXRpdmVFeGVjdXRhYmxlLmgKaW5k
ZXggNWJmMmUxMDZkYjMwYTViOGM5NzhjODk2YTZhZDk4Y2EyYzc1NzQxNC4uZTRkM2UwNDk0NTdi
NDVkMDI0NTdlOGRkYTU0NDkwYjM3MTRhY2NlYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvTmF0aXZlRXhlY3V0YWJsZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL05hdGl2ZUV4ZWN1dGFibGUuaApAQCAtMjgsNiArMjgsOSBAQAogI2luY2x1
ZGUgIkV4ZWN1dGFibGVCYXNlLmgiCiAKIG5hbWVzcGFjZSBKU0MgeworbmFtZXNwYWNlIERPTUpJ
VCB7CitjbGFzcyBTaWduYXR1cmU7Cit9CiAKIGNsYXNzIE5hdGl2ZUV4ZWN1dGFibGUgZmluYWwg
OiBwdWJsaWMgRXhlY3V0YWJsZUJhc2UgewogICAgIGZyaWVuZCBjbGFzcyBKSVQ7CkBAIC0zNiw3
ICszOSw3IEBAIGNsYXNzIE5hdGl2ZUV4ZWN1dGFibGUgZmluYWwgOiBwdWJsaWMgRXhlY3V0YWJs
ZUJhc2UgewogICAgIHR5cGVkZWYgRXhlY3V0YWJsZUJhc2UgQmFzZTsKICAgICBzdGF0aWMgY29u
c3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IFN0cnVj
dHVyZUlzSW1tb3J0YWw7CiAKLSAgICBzdGF0aWMgTmF0aXZlRXhlY3V0YWJsZSogY3JlYXRlKFZN
JiB2bSwgUGFzc1JlZlB0cjxKSVRDb2RlPiBjYWxsVGh1bmssIE5hdGl2ZUZ1bmN0aW9uIGZ1bmN0
aW9uLCBQYXNzUmVmUHRyPEpJVENvZGU+IGNvbnN0cnVjdFRodW5rLCBOYXRpdmVGdW5jdGlvbiBj
b25zdHJ1Y3RvciwgSW50cmluc2ljIGludHJpbnNpYywgY29uc3QgU3RyaW5nJiBuYW1lKTsKKyAg
ICBzdGF0aWMgTmF0aXZlRXhlY3V0YWJsZSogY3JlYXRlKFZNJiwgUGFzc1JlZlB0cjxKSVRDb2Rl
PiBjYWxsVGh1bmssIE5hdGl2ZUZ1bmN0aW9uIGZ1bmN0aW9uLCBQYXNzUmVmUHRyPEpJVENvZGU+
IGNvbnN0cnVjdFRodW5rLCBOYXRpdmVGdW5jdGlvbiBjb25zdHJ1Y3RvciwgSW50cmluc2ljLCBj
b25zdCBET01KSVQ6OlNpZ25hdHVyZSosIGNvbnN0IFN0cmluZyYgbmFtZSk7CiAKICAgICBzdGF0
aWMgdm9pZCBkZXN0cm95KEpTQ2VsbCopOwogCkBAIC02Niw2ICs2OSwxNCBAQCBjbGFzcyBOYXRp
dmVFeGVjdXRhYmxlIGZpbmFsIDogcHVibGljIEV4ZWN1dGFibGVCYXNlIHsKICAgICBERUNMQVJF
X0lORk87CiAKICAgICBjb25zdCBTdHJpbmcmIG5hbWUoKSBjb25zdCB7IHJldHVybiBtX25hbWU7
IH0KKyAgICBjb25zdCBET01KSVQ6OlNpZ25hdHVyZSogc2lnbmF0dXJlKCkgY29uc3QgeyByZXR1
cm4gbV9zaWduYXR1cmU7IH0KKworICAgIGNvbnN0IERPTUpJVDo6U2lnbmF0dXJlKiBzaWduYXR1
cmVGb3IoQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kKSBjb25zdAorICAgIHsKKyAgICAgICAg
aWYgKGlzQ2FsbChraW5kKSkKKyAgICAgICAgICAgIHJldHVybiBzaWduYXR1cmUoKTsKKyAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQogCiBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBmaW5pc2hD
cmVhdGlvbihWTSYsIFBhc3NSZWZQdHI8SklUQ29kZT4gY2FsbFRodW5rLCBQYXNzUmVmUHRyPEpJ
VENvZGU+IGNvbnN0cnVjdFRodW5rLCBjb25zdCBTdHJpbmcmIG5hbWUpOwpAQCAtNzMsMTAgKzg0
LDExIEBAIGNsYXNzIE5hdGl2ZUV4ZWN1dGFibGUgZmluYWwgOiBwdWJsaWMgRXhlY3V0YWJsZUJh
c2UgewogcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgRXhlY3V0YWJsZUJhc2U7CiAKLSAgICBO
YXRpdmVFeGVjdXRhYmxlKFZNJiwgTmF0aXZlRnVuY3Rpb24gZnVuY3Rpb24sIE5hdGl2ZUZ1bmN0
aW9uIGNvbnN0cnVjdG9yLCBJbnRyaW5zaWMpOworICAgIE5hdGl2ZUV4ZWN1dGFibGUoVk0mLCBO
YXRpdmVGdW5jdGlvbiBmdW5jdGlvbiwgTmF0aXZlRnVuY3Rpb24gY29uc3RydWN0b3IsIEludHJp
bnNpYywgY29uc3QgRE9NSklUOjpTaWduYXR1cmUqKTsKIAogICAgIE5hdGl2ZUZ1bmN0aW9uIG1f
ZnVuY3Rpb247CiAgICAgTmF0aXZlRnVuY3Rpb24gbV9jb25zdHJ1Y3RvcjsKKyAgICBjb25zdCBE
T01KSVQ6OlNpZ25hdHVyZSogbV9zaWduYXR1cmU7CiAKICAgICBTdHJpbmcgbV9uYW1lOwogfTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5U2xvdC5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlTbG90LmgKaW5kZXggOWRl
MTUxYTU2YWEyNzU2Y2ZkMGM2MDAzNjY4MjY2YjE5Zjk5MzJkZC4uMzg3ZTMxYjQwZTVhZWJmMmYz
NWY2Y2EyNzJlMzgzYzA1ZDNmNDUyZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvUHJvcGVydHlTbG90LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvUHJvcGVydHlTbG90LmgKQEAgLTUxLDYgKzUxLDcgQEAgZW51bSBBdHRyaWJ1dGUgewogICAg
IENsYXNzU3RydWN0dXJlICAgID0gMSA8PCAxMiwgLy8gcHJvcGVydHkgaXMgYSBsYXp5IGNsYXNz
IHN0cnVjdHVyZSAtIG9ubHkgdXNlZCBieSBzdGF0aWMgaGFzaHRhYmxlcwogICAgIFByb3BlcnR5
Q2FsbGJhY2sgID0gMSA8PCAxMywgLy8gcHJvcGVydHkgdGhhdCBpcyBhIGxhenkgcHJvcGVydHkg
Y2FsbGJhY2sgLSBvbmx5IHVzZWQgYnkgc3RhdGljIGhhc2h0YWJsZXMKICAgICBET01KSVRBdHRy
aWJ1dGUgICA9IDEgPDwgMTQsIC8vIHByb3BlcnR5IGlzIGEgRE9NIEpJVCBhdHRyaWJ1dGUgLSBv
bmx5IHVzZWQgYnkgc3RhdGljIGhhc2h0YWJsZXMKKyAgICBET01KSVRGdW5jdGlvbiAgICA9IDEg
PDwgMTUsIC8vIHByb3BlcnR5IGlzIGEgRE9NIEpJVCBmdW5jdGlvbiAtIG9ubHkgdXNlZCBieSBz
dGF0aWMgaGFzaHRhYmxlcwogICAgIEJ1aWx0aW5PckZ1bmN0aW9uID0gQnVpbHRpbiB8IEZ1bmN0
aW9uLCAvLyBoZWxwZXIgb25seSB1c2VkIGJ5IHN0YXRpYyBoYXNodGFibGVzCiAgICAgQnVpbHRp
bk9yRnVuY3Rpb25PckxhenlQcm9wZXJ0eSA9IEJ1aWx0aW4gfCBGdW5jdGlvbiB8IENlbGxQcm9w
ZXJ0eSB8IENsYXNzU3RydWN0dXJlIHwgUHJvcGVydHlDYWxsYmFjaywgLy8gaGVscGVyIG9ubHkg
dXNlZCBieSBzdGF0aWMgaGFzaHRhYmxlcwogICAgIEJ1aWx0aW5PckZ1bmN0aW9uT3JBY2Nlc3Nv
ck9yTGF6eVByb3BlcnR5ID0gQnVpbHRpbiB8IEZ1bmN0aW9uIHwgQWNjZXNzb3IgfCBDZWxsUHJv
cGVydHkgfCBDbGFzc1N0cnVjdHVyZSB8IFByb3BlcnR5Q2FsbGJhY2ssIC8vIGhlbHBlciBvbmx5
IHVzZWQgYnkgc3RhdGljIGhhc2h0YWJsZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1ZNLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNw
cAppbmRleCBlNmJkOGRmNTg4OWQ4NzMxY2U1ZmI2ZGNjZGU5YWRmODQ1NmMwMmU5Li43YTJmMGYy
Njk0YWMwMTZiZDkzZDFjODZhNGFmOTllZDFlNWVlZWY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvVk0uY3BwCkBAIC01MTYsMTcgKzUxNiwxNyBAQCBzdGF0aWMgVGh1bmtHZW5lcmF0b3Ig
dGh1bmtHZW5lcmF0b3JGb3JJbnRyaW5zaWMoSW50cmluc2ljIGludHJpbnNpYykKIAogTmF0aXZl
RXhlY3V0YWJsZSogVk06OmdldEhvc3RGdW5jdGlvbihOYXRpdmVGdW5jdGlvbiBmdW5jdGlvbiwg
TmF0aXZlRnVuY3Rpb24gY29uc3RydWN0b3IsIGNvbnN0IFN0cmluZyYgbmFtZSkKIHsKLSAgICBy
ZXR1cm4gZ2V0SG9zdEZ1bmN0aW9uKGZ1bmN0aW9uLCBOb0ludHJpbnNpYywgY29uc3RydWN0b3Is
IG5hbWUpOworICAgIHJldHVybiBnZXRIb3N0RnVuY3Rpb24oZnVuY3Rpb24sIE5vSW50cmluc2lj
LCBjb25zdHJ1Y3RvciwgbnVsbHB0ciwgbmFtZSk7CiB9CiAKLU5hdGl2ZUV4ZWN1dGFibGUqIFZN
OjpnZXRIb3N0RnVuY3Rpb24oTmF0aXZlRnVuY3Rpb24gZnVuY3Rpb24sIEludHJpbnNpYyBpbnRy
aW5zaWMsIE5hdGl2ZUZ1bmN0aW9uIGNvbnN0cnVjdG9yLCBjb25zdCBTdHJpbmcmIG5hbWUpCitO
YXRpdmVFeGVjdXRhYmxlKiBWTTo6Z2V0SG9zdEZ1bmN0aW9uKE5hdGl2ZUZ1bmN0aW9uIGZ1bmN0
aW9uLCBJbnRyaW5zaWMgaW50cmluc2ljLCBOYXRpdmVGdW5jdGlvbiBjb25zdHJ1Y3RvciwgY29u
c3QgRE9NSklUOjpTaWduYXR1cmUqIHNpZ25hdHVyZSwgY29uc3QgU3RyaW5nJiBuYW1lKQogewog
I2lmIEVOQUJMRShKSVQpCiAgICAgaWYgKGNhblVzZUpJVCgpKSB7CiAgICAgICAgIHJldHVybiBq
aXRTdHVicy0+aG9zdEZ1bmN0aW9uU3R1YigKICAgICAgICAgICAgIHRoaXMsIGZ1bmN0aW9uLCBj
b25zdHJ1Y3RvciwKICAgICAgICAgICAgIGludHJpbnNpYyAhPSBOb0ludHJpbnNpYyA/IHRodW5r
R2VuZXJhdG9yRm9ySW50cmluc2ljKGludHJpbnNpYykgOiAwLAotICAgICAgICAgICAgaW50cmlu
c2ljLCBuYW1lKTsKKyAgICAgICAgICAgIGludHJpbnNpYywgc2lnbmF0dXJlLCBuYW1lKTsKICAg
ICB9CiAjZWxzZSAvLyBFTkFCTEUoSklUKQogICAgIFVOVVNFRF9QQVJBTShpbnRyaW5zaWMpOwpA
QCAtNTM0LDcgKzUzNCw3IEBAIE5hdGl2ZUV4ZWN1dGFibGUqIFZNOjpnZXRIb3N0RnVuY3Rpb24o
TmF0aXZlRnVuY3Rpb24gZnVuY3Rpb24sIEludHJpbnNpYyBpbnRyaW5zCiAgICAgcmV0dXJuIE5h
dGl2ZUV4ZWN1dGFibGU6OmNyZWF0ZSgqdGhpcywKICAgICAgICAgYWRvcHRSZWYobmV3IE5hdGl2
ZUpJVENvZGUoTWFjcm9Bc3NlbWJsZXJDb2RlUmVmOjpjcmVhdGVMTEludENvZGVSZWYobGxpbnRf
bmF0aXZlX2NhbGxfdHJhbXBvbGluZSksIEpJVENvZGU6Okhvc3RDYWxsVGh1bmspKSwgZnVuY3Rp
b24sCiAgICAgICAgIGFkb3B0UmVmKG5ldyBOYXRpdmVKSVRDb2RlKE1hY3JvQXNzZW1ibGVyQ29k
ZVJlZjo6Y3JlYXRlTExJbnRDb2RlUmVmKGxsaW50X25hdGl2ZV9jb25zdHJ1Y3RfdHJhbXBvbGlu
ZSksIEpJVENvZGU6Okhvc3RDYWxsVGh1bmspKSwgY29uc3RydWN0b3IsCi0gICAgICAgIE5vSW50
cmluc2ljLCBuYW1lKTsKKyAgICAgICAgTm9JbnRyaW5zaWMsIHNpZ25hdHVyZSwgbmFtZSk7CiB9
CiAKIFZNOjpDbGllbnREYXRhOjp+Q2xpZW50RGF0YSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9WTS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Vk0uaAppbmRleCA0ZmQ3ZWM0MGYwM2VlZGViMjliZDQ5NjdkOWNkYzQzMDI0Y2ZhNDEwLi4xNWEw
OGMyYTMzYmU5NzJiNGE5YTMyZGZjMzUwZDZlMzhjYzg0MmVlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1ZNLmgKQEAgLTQyOSw3ICs0MjksNyBAQCBjbGFzcyBWTSA6IHB1YmxpYyBUaHJlYWRT
YWZlUmVmQ291bnRlZDxWTT4gewogICAgIHN0ZDo6dW5pcXVlX3B0cjxGVEw6OlRodW5rcz4gZnRs
VGh1bmtzOwogI2VuZGlmCiAgICAgTmF0aXZlRXhlY3V0YWJsZSogZ2V0SG9zdEZ1bmN0aW9uKE5h
dGl2ZUZ1bmN0aW9uLCBOYXRpdmVGdW5jdGlvbiBjb25zdHJ1Y3RvciwgY29uc3QgU3RyaW5nJiBu
YW1lKTsKLSAgICBOYXRpdmVFeGVjdXRhYmxlKiBnZXRIb3N0RnVuY3Rpb24oTmF0aXZlRnVuY3Rp
b24sIEludHJpbnNpYyBpbnRyaW5zaWMsIE5hdGl2ZUZ1bmN0aW9uIGNvbnN0cnVjdG9yLCBjb25z
dCBTdHJpbmcmIG5hbWUpOworICAgIE5hdGl2ZUV4ZWN1dGFibGUqIGdldEhvc3RGdW5jdGlvbihO
YXRpdmVGdW5jdGlvbiwgSW50cmluc2ljLCBOYXRpdmVGdW5jdGlvbiBjb25zdHJ1Y3RvciwgY29u
c3QgRE9NSklUOjpTaWduYXR1cmUqLCBjb25zdCBTdHJpbmcmIG5hbWUpOwogCiAgICAgc3RhdGlj
IHB0cmRpZmZfdCBleGNlcHRpb25PZmZzZXQoKQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKaW5k
ZXggNDJlMmYyMTExYTkwODY0MmVkMjc0NDE5NDZlMTc4MmY1ZDA2ODE3Yi4uNzhhYTFmNzEwMDgw
YzZjYjI3YmUyYjYzYzQ4YmQ2YWQ1ZjMzZGFhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Q01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTE1
MzcsNyArMTUzNyw2IEBAIHNldChXZWJDb3JlX1NPVVJDRVMKIAogICAgIGRvbS9kZWZhdWx0L1Bs
YXRmb3JtTWVzc2FnZVBvcnRDaGFubmVsLmNwcAogCi0gICAgZG9taml0L0RPTUpJVEFic3RyYWN0
SGVhcFJlcG9zaXRvcnkuY3BwCiAgICAgZG9taml0L0RPTUpJVEhlbHBlcnMuY3BwCiAgICAgZG9t
aml0L0pTRG9jdW1lbnRET01KSVQuY3BwCiAgICAgZG9taml0L0pTTm9kZURPTUpJVC5jcHAKQEAg
LTM1MTEsNiArMzUxMCwxNSBAQCBNQUtFX0hBU0hfVE9PTFMoJHtXRUJDT1JFX0RJUn0vcGxhdGZv
cm0vQ29sb3JEYXRhKQogbGlzdChBUFBFTkQgV2ViQ29yZV9ERVJJVkVEX1NPVVJDRVMgJHtERVJJ
VkVEX1NPVVJDRVNfV0VCQ09SRV9ESVJ9L0NvbG9yRGF0YS5jcHApCiAKIAorIyBHZW5lcmF0ZSBE
T01KSVRBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmgKK2FkZF9jdXN0b21fY29tbWFuZCgKKyAgICBP
VVRQVVQgJHtERVJJVkVEX1NPVVJDRVNfV0VCQ09SRV9ESVJ9L0RPTUpJVEFic3RyYWN0SGVhcFJl
cG9zaXRvcnkuaAorICAgIE1BSU5fREVQRU5ERU5DWSBkb21qaXQvRE9NSklUQWJzdHJhY3RIZWFw
UmVwb3NpdG9yeS55YW1sCisgICAgREVQRU5EUyAke1dFQkNPUkVfRElSfS9kb21qaXQvZ2VuZXJh
dGUtYWJzdHJhY3QtaGVhcC5yYgorICAgIENPTU1BTkQgJHtSVUJZX0VYRUNVVEFCTEV9ICR7V0VC
Q09SRV9ESVJ9L2RvbWppdC9nZW5lcmF0ZS1hYnN0cmFjdC1oZWFwLnJiICR7V0VCQ09SRV9ESVJ9
L2RvbWppdC9ET01KSVRBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LnlhbWwgJHtERVJJVkVEX1NPVVJD
RVNfV0VCQ09SRV9ESVJ9L0RPTUpJVEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaAorICAgIFZFUkJB
VElNKQorbGlzdChBUFBFTkQgV2ViQ29yZV9ERVJJVkVEX1NPVVJDRVMgJHtERVJJVkVEX1NPVVJD
RVNfV0VCQ09SRV9ESVJ9L0RPTUpJVEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaCkKKwogIyBHZW5l
cmF0ZSBYTUxWaWV3ZXJDU1MuaAogYWRkX2N1c3RvbV9jb21tYW5kKAogICAgIE9VVFBVVCAke0RF
UklWRURfU09VUkNFU19XRUJDT1JFX0RJUn0vWE1MVmlld2VyQ1NTLmggJHtERVJJVkVEX1NPVVJD
RVNfV0VCQ09SRV9ESVJ9L1hNTFZpZXdlci5taW4uY3NzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9EZXJpdmVkU291cmNlcy5tYWtlIGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMu
bWFrZQppbmRleCA1NjVlMmQ5MmMyNzgyMDBlNDRiMWE4NjcwZGQxMWNhYTcyOGQwOWQzLi5jZmMy
Mjc2OGQ3NWFjZThlZTYwZTA0ODZjMjYyODRhMThjYTJlNWVhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRT
b3VyY2VzLm1ha2UKQEAgLTc0Nyw2ICs3NDcsNyBAQCBKU19CSU5ESU5HX0lETFMgPSBcCiAKIFBZ
VEhPTiA9IHB5dGhvbgogUEVSTCA9IHBlcmwKK1JVQlkgPSBydWJ5CiAKIGlmZXEgKCQoT1MpLFdp
bmRvd3NfTlQpCiAgICAgREVMRVRFID0gY21kIC8vQyBkZWwKQEAgLTg1Myw2ICs4NTQsNyBAQCBh
bGwgOiBcCiAgICAgQ1NTVmFsdWVLZXl3b3Jkcy5jcHAgXAogICAgIENTU1ZhbHVlS2V5d29yZHMu
aCBcCiAgICAgQ29sb3JEYXRhLmNwcCBcCisgICAgRE9NSklUQWJzdHJhY3RIZWFwUmVwb3NpdG9y
eS5oIFwKICAgICBFdmVudEludGVyZmFjZXMuaCBcCiAgICAgRXZlbnRUYXJnZXRJbnRlcmZhY2Vz
LmggXAogICAgIEV4Y2VwdGlvbkNvZGVEZXNjcmlwdGlvbi5jcHAgXApAQCAtOTQyLDYgKzk0NCwx
NSBAQCBTZWxlY3RvclBzZXVkb0VsZW1lbnRUeXBlTWFwLmNwcCA6ICQoV2ViQ29yZSkvY3NzL21h
a2VTZWxlY3RvclBzZXVkb0VsZW1lbnRzTWFwLgogCiAjIC0tLS0tLS0tCiAKKyMgRE9NSklUIEFi
c3RyYWN0IEhlYXAKKworYWxsIDogRE9NSklUQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5oCisKK0RP
TUpJVEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaCA6ICQoV2ViQ29yZSkvZG9taml0L2dlbmVyYXRl
LWFic3RyYWN0LWhlYXAucmIgJChXZWJDb3JlKS9kb21qaXQvRE9NSklUQWJzdHJhY3RIZWFwUmVw
b3NpdG9yeS55YW1sCisJJChSVUJZKSAiJChXZWJDb3JlKS9kb21qaXQvZ2VuZXJhdGUtYWJzdHJh
Y3QtaGVhcC5yYiIgJChXZWJDb3JlKS9kb21qaXQvRE9NSklUQWJzdHJhY3RIZWFwUmVwb3NpdG9y
eS55YW1sIC4vRE9NSklUQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5oCisKKyMgLS0tLS0tLS0KKwog
IyBYTUxWaWV3ZXIgQ1NTCiAKIGFsbCA6IFhNTFZpZXdlckNTUy5oCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy9ieXRlY29kZS9TcGVjdWxhdGVkVHlwZS5oIGIv
U291cmNlL1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvYnl0ZWNvZGUvU3BlY3VsYXRlZFR5cGUu
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4wOTQ2NmY0ZjAwYjgwN2RmZWRhMGZjODIwODU0NmI3MTg0NGYwOTllCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvYnl0ZWNv
ZGUvU3BlY3VsYXRlZFR5cGUuaApAQCAtMCwwICsxLDI5IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJDb3JlX0ZXRF9TcGVjdWxhdGVk
VHlwZV9oCisjZGVmaW5lIFdlYkNvcmVfRldEX1NwZWN1bGF0ZWRUeXBlX2gKKyNpbmNsdWRlIDxK
YXZhU2NyaXB0Q29yZS9TcGVjdWxhdGVkVHlwZS5oPgorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy9kb21qaXQvRE9NSklUU2lnbmF0dXJlLmggYi9T
b3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy9kb21qaXQvRE9NSklUU2lnbmF0dXJlLmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNzIwMDI3ZjZlMDhlMzgzMGUzNTFiMWM5Y2QzMmYyMDMxMjlkMmI1ZAotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL2RvbWppdC9E
T01KSVRTaWduYXR1cmUuaApAQCAtMCwwICsxLDI5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJDb3JlX0ZXRF9ET01KSVRTaWduYXR1
cmVfaAorI2RlZmluZSBXZWJDb3JlX0ZXRF9ET01KSVRTaWduYXR1cmVfaAorI2luY2x1ZGUgPEph
dmFTY3JpcHRDb3JlL0RPTUpJVFNpZ25hdHVyZS5oPgorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggM2UwOTM3YTQ2NzBi
N2ZlMzBkOWE2MzdhMWUzNjIxMmJlNGQ3NTM1ZC4uODc4MGVmNTA3MWJmMTQxOTg0M2MyNjFmYWE5
Nzc1NzkyMjNhZTI2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagpAQCAtNjIxNiwxMiArNjIxNiwxMyBAQAogCQlFMzE1MEVBNzFEQTcy
MTkzMDAxOTQwMTIgLyogRE9NSklUSGVscGVycy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRTMxNTBFQTUxREE3MjE4RDAwMTk0MDEyIC8qIERPTUpJVEhl
bHBlcnMuaCAqLzsgfTsKIAkJRTMxODAzOUQxREM0MDA5OTAwOTkzMkMyIC8qIEpTRHluYW1pY0Rv
d25jYXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBF
M0E1ODcyRTFEQzNGNTI2MDBGNjA3QTYgLyogSlNEeW5hbWljRG93bmNhc3QuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFMzU2NUI3QjFEQzJENkM5
MDAyMTdEQkQgLyogSlNFdmVudEN1c3RvbS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRTM0RUU0OUYxREMyRDU3NTAwRUFBOUQzIC8qIEpTRXZlbnRDdXN0
b20uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQlF
MzVDQTE0RDFEQkMzQTNGMDBGODM1MTYgLyogRE9NSklUQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzVDQTE0
QjFEQkMzQTNDMDBGODM1MTYgLyogRE9NSklUQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5jcHAgKi87
IH07Ci0JCUUzNUNBMTRFMURCQzNBNDIwMEY4MzUxNiAvKiBET01KSVRBYnN0cmFjdEhlYXBSZXBv
c2l0b3J5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBF
MzVDQTE0QzFEQkMzQTNDMDBGODM1MTYgLyogRE9NSklUQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5o
ICovOyB9OworCQlFMzU4MDJCNjFEQzg0MzVEMDBBOTc3M0MgLyogRE9NSklUSURMVHlwZUZpbHRl
ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM1ODAy
QjUxREM4NDM1ODAwQTk3NzNDIC8qIERPTUpJVElETFR5cGVGaWx0ZXIuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFMzc3RkU0RDFEQURFMTY1MDBD
REQwMjUgLyogTm9kZUNvbnN0YW50cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRTNEMDQ5OTMxREFEQzA0NTAwNzE4RjNDIC8qIE5vZGVDb25zdGFudHMu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFMzg4
Mzg5ODFCQUQxNDVGMDBENjJFRTMgLyogU2NyaXB0TW9kdWxlTG9hZGVyLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzODgzODk0MUJBRDE0NUYwMEQ2
MkVFMyAvKiBTY3JpcHRNb2R1bGVMb2FkZXIuY3BwICovOyB9OwogCQlFMzg4Mzg5OTFCQUQxNDVG
MDBENjJFRTMgLyogU2NyaXB0TW9kdWxlTG9hZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzg4Mzg5NTFCQUQxNDVGMDBENjJFRTMgLyogU2NyaXB0
TW9kdWxlTG9hZGVyLmggKi87IH07CiAJCUUzOThGQzI0MURDMzJBMjAwMDNDNDY4NCAvKiBET01K
SVRIZWxwZXJzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEUzOThGQzIzMURDMzJBMUIwMDNDNDY4NCAvKiBET01KSVRIZWxwZXJzLmNwcCAqLzsgfTsK
KwkJRTNBNzc2NjcxREM4NUQyODAwQjY5MEQ4IC8qIERPTUpJVElETENvbnZlcnQuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzQTc3NjY1MURDODVEMjIw
MEI2OTBEOCAvKiBET01KSVRJRExDb252ZXJ0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJRTNBNzc2NjgxREM4NUQyODAwQjY5MEQ4IC8qIERPTUpJ
VElETFR5cGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEUzQTc3NjY2MURDODVEMjIwMEI2OTBEOCAvKiBET01KSVRJRExUeXBlLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTNCMkYwRUIxRDdGNEM5RDAw
QjBDOUQxIC8qIExvYWRhYmxlQ2xhc3NpY1NjcmlwdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFM0IyRjBFMzFEN0YzNUVDMDBCMEM5RDEgLyogTG9h
ZGFibGVDbGFzc2ljU2NyaXB0LmNwcCAqLzsgfTsKIAkJRTNCMkYwRUMxRDdGNENBMTAwQjBDOUQx
IC8qIExvYWRhYmxlU2NyaXB0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEUzQjJGMEU5MUQ3RjNEM0MwMEIwQzlEMSAvKiBMb2FkYWJsZVNjcmlwdC5j
cHAgKi87IH07CiAJCUUzQjJGMEVEMUQ3RjRDQTMwMEIwQzlEMSAvKiBMb2FkYWJsZVNjcmlwdC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTNCMkYwRTcx
RDdGMzVFQzAwQjBDOUQxIC8qIExvYWRhYmxlU2NyaXB0LmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTE0MDc2LDEzICsxNDA3NywxNSBAQAogCQlF
MUZGOEY2QTE4MERCNUJFMDAxMzI2NzQgLyogQ3J5cHRvQWxnb3JpdGhtUmVnaXN0cnkuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ3J5cHRvQWxnb3JpdGhtUmVnaXN0
cnkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMUZGOEY2QjE4MERCNUJFMDAx
MzI2NzQgLyogQ3J5cHRvQWxnb3JpdGhtUmVnaXN0cnkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gQ3J5cHRvQWxnb3JpdGhtUmVnaXN0cnkuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJRTMxNTBFQTUxREE3MjE4RDAwMTk0MDEyIC8qIERPTUpJVEhlbHBlcnMuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRE9NSklUSGVscGVycy5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQlFMzM0ODI1RTFEQzkzQUEwMDA5Qzk1NDQgLyogRE9NSklU
QWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBET01KSVRBYnN0cmFjdEhlYXBSZXBvc2l0b3J5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUUzNEVFNDlGMURDMkQ1NzUwMEVBQTlEMyAvKiBKU0V2ZW50Q3VzdG9tLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTRXZlbnRDdXN0b20uaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKLQkJRTM1Q0ExNEIxREJDM0EzQzAwRjgzNTE2IC8qIERPTUpJVEFic3Ry
YWN0SGVhcFJlcG9zaXRvcnkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gRE9NSklUQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07Ci0JCUUzNUNBMTRDMURCQzNBM0MwMEY4MzUxNiAvKiBET01KSVRBYnN0cmFjdEhlYXBS
ZXBvc2l0b3J5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERPTUpJVEFic3Ry
YWN0SGVhcFJlcG9zaXRvcnkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTM1ODAy
QjUxREM4NDM1ODAwQTk3NzNDIC8qIERPTUpJVElETFR5cGVGaWx0ZXIuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gRE9NSklUSURMVHlwZUZpbHRlci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlFMzg4Mzg5NDFCQUQxNDVGMDBENjJFRTMgLyogU2NyaXB0TW9kdWxl
TG9hZGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNjcmlwdE1v
ZHVsZUxvYWRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzODgzODk1MUJB
RDE0NUYwMEQ2MkVFMyAvKiBTY3JpcHRNb2R1bGVMb2FkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gU2NyaXB0TW9kdWxlTG9hZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUUzOThGQzIzMURDMzJBMUIwMDNDNDY4NCAvKiBET01KSVRIZWxwZXJzLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERPTUpJVEhlbHBlcnMuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFM0E1ODcyRTFEQzNGNTI2MDBGNjA3QTYgLyog
SlNEeW5hbWljRG93bmNhc3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNE
eW5hbWljRG93bmNhc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTNBNzc2NjUx
REM4NUQyMjAwQjY5MEQ4IC8qIERPTUpJVElETENvbnZlcnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gRE9NSklUSURMQ29udmVydC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQlFM0E3NzY2NjFEQzg1RDIyMDBCNjkwRDggLyogRE9NSklUSURMVHlwZS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBET01KSVRJRExUeXBlLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUUzQUZBOTY0MURBNkU5MDgwMDI4NjFCRCAvKiBKU05vZGVET01K
SVQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNOb2RlRE9NSklU
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTNCMkYwRTMxRDdGMzVFQzAwQjBD
OUQxIC8qIExvYWRhYmxlQ2xhc3NpY1NjcmlwdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBMb2FkYWJsZUNsYXNzaWNTY3JpcHQuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlFM0IyRjBFNDFEN0YzNUVDMDBCMEM5RDEgLyogTG9hZGFibGVDbGFzc2lj
U2NyaXB0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IExvYWRhYmxlQ2xhc3Np
Y1NjcmlwdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTcyODAsNiArMTcyODMs
NyBAQAogCQkJCTY1NjU4MTQ3MDlEMTMwNDMwMDBFNjFENyAvKiBDU1NWYWx1ZUtleXdvcmRzLmdw
ZXJmICovLAogCQkJCTY1NjU4MTQ4MDlEMTMwNDMwMDBFNjFENyAvKiBDU1NWYWx1ZUtleXdvcmRz
LmggKi8sCiAJCQkJOUIzQTg4NzExNDU2MzJGOTAwM0FFOEY1IC8qIERPTURPTVNldHRhYmxlVG9r
ZW5MaXN0LmggKi8sCisJCQkJRTMzNDgyNUUxREM5M0FBMDAwOUM5NTQ0IC8qIERPTUpJVEFic3Ry
YWN0SGVhcFJlcG9zaXRvcnkuaCAqLywKIAkJCQlFMUM2Q0ZDMjE3NDZEMjkzMDA3Qjg3QTEgLyog
RE9NV2luZG93Q29uc3RydWN0b3JzLmlkbCAqLywKIAkJCQk5NzBCNzJBNTE0NTAwOEVCMDBGMDBB
MzcgLyogRXZlbnRIZWFkZXJzLmggKi8sCiAJCQkJOTcwQjcyODkxNDRGRkFDNjAwRjAwQTM3IC8q
IEV2ZW50SW50ZXJmYWNlcy5oICovLApAQCAtMjI4OTcsMTEgKzIyOTAxLDEyIEBACiAJCUUzQUZB
OTYzMURBNkU4QUYwMDI4NjFCRCAvKiBkb21qaXQgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsK
IAkJCWNoaWxkcmVuID0gKAotCQkJCUUzNUNBMTRCMURCQzNBM0MwMEY4MzUxNiAvKiBET01KSVRB
YnN0cmFjdEhlYXBSZXBvc2l0b3J5LmNwcCAqLywKLQkJCQlFMzVDQTE0QzFEQkMzQTNDMDBGODM1
MTYgLyogRE9NSklUQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5oICovLAogCQkJCUUzQzk5QTA4MURD
M0Q0MTcwMDc5NEFEMyAvKiBET01KSVRDaGVja0RPTS5oICovLAogCQkJCUUzOThGQzIzMURDMzJB
MUIwMDNDNDY4NCAvKiBET01KSVRIZWxwZXJzLmNwcCAqLywKIAkJCQlFMzE1MEVBNTFEQTcyMThE
MDAxOTQwMTIgLyogRE9NSklUSGVscGVycy5oICovLAorCQkJCUUzQTc3NjY1MURDODVEMjIwMEI2
OTBEOCAvKiBET01KSVRJRExDb252ZXJ0LmggKi8sCisJCQkJRTNBNzc2NjYxREM4NUQyMjAwQjY5
MEQ4IC8qIERPTUpJVElETFR5cGUuaCAqLywKKwkJCQlFMzU4MDJCNTFEQzg0MzU4MDBBOTc3M0Mg
LyogRE9NSklUSURMVHlwZUZpbHRlci5oICovLAogCQkJCUUzQjdDMDYyMURDMzQxNUEwMDFGQjBC
OCAvKiBKU0RvY3VtZW50RE9NSklULmNwcCAqLywKIAkJCQlFM0FGQTk2NDFEQTZFOTA4MDAyODYx
QkQgLyogSlNOb2RlRE9NSklULmNwcCAqLywKIAkJCSk7CkBAIC0yNTc2OCw2ICsyNTc3Myw3IEBA
CiAJCQkJNDYwQ0JGMzYxRDRCQ0QwRTAwOTJFODhFIC8qIEpTRE9NV2luZG93UHJvcGVydGllcy5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQkNCRkI1M0QwRENEMjlDRjAwMTlCM0U1IC8qIEpTRE9NV2lu
ZG93U2hlbGwuaCBpbiBIZWFkZXJzICovLAogCQkJCTY1RTBFOTQ0MTEzM0M4OUYwMEI0Q0IxMCAv
KiBKU0RPTVdyYXBwZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCUUzQTc3NjY3MURDODVEMjgwMEI2
OTBEOCAvKiBET01KSVRJRExDb252ZXJ0LmggaW4gSGVhZGVycyAqLywKIAkJCQlGRDc4NjhCQTEz
NkI5OTkyMDBENDAzREYgLyogSlNEeW5hbWljc0NvbXByZXNzb3JOb2RlLmggaW4gSGVhZGVycyAq
LywKIAkJCQk2NURGMzFGQTA5RDFDQzYwMDAwQkUzMjUgLyogSlNFbGVtZW50LmggaW4gSGVhZGVy
cyAqLywKIAkJCQlBREVDNzhGODE4RUU1MzA4MDAxMzE1QzIgLyogSlNFbGVtZW50Q3VzdG9tLmgg
aW4gSGVhZGVycyAqLywKQEAgLTI3MzMzLDYgKzI3MzM5LDcgQEAKIAkJCQkwODUyNUU2MzEyNzhD
MDAxMDBBODQ3NzggLyogU1ZHQW5pbWF0ZWRTdGF0aWNQcm9wZXJ0eVRlYXJPZmYuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTA4NERCNTlCMTI4MDA4Q0MwMDJBNkQ2NCAvKiBTVkdBbmltYXRlZFN0cmlu
Zy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDgyNTA5MzkxMjhCRDREODAwRTJFRDhFIC8qIFNWR0Fu
aW1hdGVkVHJhbnNmb3JtTGlzdC5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTNBNzc2NjgxREM4NUQy
ODAwQjY5MEQ4IC8qIERPTUpJVElETFR5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTA4NUExNTkz
MTI4OUE4REQwMDI3MTBFMyAvKiBTVkdBbmltYXRlZFRyYW5zZm9ybUxpc3RQcm9wZXJ0eVRlYXJP
ZmYuaCBpbiBIZWFkZXJzICovLAogCQkJCTQzOUQzMzQzMTNBNjkxMUMwMEMyMEY0RiAvKiBTVkdB
bmltYXRlZFR5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTQzOUQzMzQ0MTNBNjkxMUMwMEMyMEY0
RiAvKiBTVkdBbmltYXRlZFR5cGVBbmltYXRvci5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNzg3MCw2
ICsyNzg3Nyw3IEBACiAJCQkJOTdBQUJEMjMxNEZBMDlENTAwNzQ1N0FFIC8qIFdlYlNvY2tldEV4
dGVuc2lvbkRpc3BhdGNoZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTRBNUEyQURDMTYxRTdFMDAw
MDU4ODlERCAvKiBXZWJTb2NrZXRFeHRlbnNpb25QYXJzZXIuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTk3QUFCRDI0MTRGQTA5RDUwMDc0NTdBRSAvKiBXZWJTb2NrZXRFeHRlbnNpb25Qcm9jZXNzb3Iu
aCBpbiBIZWFkZXJzICovLAorCQkJCUUzNTgwMkI2MURDODQzNUQwMEE5NzczQyAvKiBET01KSVRJ
RExUeXBlRmlsdGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk5N0FBQkQyNTE0RkEwOUQ1MDA3NDU3
QUUgLyogV2ViU29ja2V0RnJhbWUuaCBpbiBIZWFkZXJzICovLAogCQkJCTk3QUFCRDI3MTRGQTA5
RDUwMDc0NTdBRSAvKiBXZWJTb2NrZXRIYW5kc2hha2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTMx
REVBNDU2MUIzOUY0RDkwMEY3NzE3OCAvKiBXZWJTeXN0ZW1CYWNrZHJvcExheWVyLmggaW4gSGVh
ZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xv
YmFsT2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVj
dC5oCmluZGV4IGMxODFmOWExNmY1NTMwYmQ5NTNkYmY1ZjFjMTVmMTNhNjI0ZmExMmMuLjVkYzFl
ZTQwYzk4NTQwZThjNDcwNWI3MDk1NzU5ZmZjZmMyNWRhMGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuaApAQCAtODEsNyArODEsNyBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAgICAgcHVibGljOgogICAgICAgICB+SlNET01HbG9iYWxPYmplY3Qo
KTsKIAotICAgICAgICBzdGF0aWMgY29uc3QgSlNDOjpDbGFzc0luZm8qIGluZm8oKSB7IHJldHVy
biAmc19pbmZvOyB9CisgICAgICAgIHN0YXRpYyBjb25zdGV4cHIgY29uc3QgSlNDOjpDbGFzc0lu
Zm8qIGluZm8oKSB7IHJldHVybiAmc19pbmZvOyB9CiAKICAgICAgICAgc3RhdGljIEpTQzo6U3Ry
dWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNWYWx1ZSBwcm90b3R5
cGUpCiAgICAgICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvQ29kZUdlbmVyYXRvckpTLnBtIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9D
b2RlR2VuZXJhdG9ySlMucG0KaW5kZXggZjBlNDI4NzkxNzQ5ZjQ1YjFiNDc2NDliNjFlMTQ3ZmE3
ZmJkYmE1ZC4uYTU1ZDVlMWQ5NTFhZjE4MzM3NjM3ZjY3OWVhOTA5NDU4MzcyZWE4MCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0K
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0K
QEAgLTE0NzEsNyArMTQ3MSw3IEBAIHN1YiBHZW5lcmF0ZUhlYWRlcgogICAgICAgICBwdXNoKEBo
ZWFkZXJDb250ZW50LCAicHJvdGVjdGVkOlxuIik7CiAgICAgICAgIHB1c2goQGhlYWRlckNvbnRl
bnQsICIgICAgc3RhdGljIGNvbnN0IEpTQzo6Q2xhc3NJbmZvIHNfaW5mbztcbiIpOwogICAgICAg
ICBwdXNoKEBoZWFkZXJDb250ZW50LCAicHVibGljOlxuIik7Ci0gICAgICAgIHB1c2goQGhlYWRl
ckNvbnRlbnQsICIgICAgc3RhdGljIGNvbnN0IEpTQzo6Q2xhc3NJbmZvKiBpbmZvKCkgeyByZXR1
cm4gJnNfaW5mbzsgfVxuXG4iKTsKKyAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICBz
dGF0aWMgY29uc3RleHByIGNvbnN0IEpTQzo6Q2xhc3NJbmZvKiBpbmZvKCkgeyByZXR1cm4gJnNf
aW5mbzsgfVxuXG4iKTsKICAgICB9IGVsc2UgewogICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50
LCAiXG4iKTsKICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICBERUNMQVJFX0lORk87
XG5cbiIpOwpAQCAtMTkyNSw3ICsxOTI1LDExIEBAIHN1YiBHZW5lcmF0ZVByb3BlcnRpZXNIYXNo
VGFibGUKICAgICAgICAgIyBGSVhNRTogUmVtb3ZlIHRoaXMgb25jZSB3ZSBjYW4gZ2V0IHJpZCBv
ZiB0aGUgcXVpcmsgaW50cm9kdWNlZCBpbiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTYzOTY3LgogICAgICAgICAkZnVuY3Rpb25MZW5ndGggPSAzIGlmICRpbnRlcmZh
Y2VOYW1lIGVxICJFdmVudCIgYW5kICRmdW5jdGlvbi0+bmFtZSBlcSAiaW5pdEV2ZW50IjsKIAot
ICAgICAgICBwdXNoKEAkaGFzaFZhbHVlMiwgJGZ1bmN0aW9uTGVuZ3RoKTsKKyAgICAgICAgaWYg
KCRmdW5jdGlvbi0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkRPTUpJVCJ9KSB7CisgICAgICAgICAg
ICBwdXNoKEAkaGFzaFZhbHVlMiwgIiZET01KSVRTaWduYXR1cmVGb3IiIC4gJGludGVyZmFjZS0+
dHlwZS0+bmFtZSAuICRjb2RlR2VuZXJhdG9yLT5XS191Y2ZpcnN0KCRmdW5jdGlvbi0+bmFtZSkp
OworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgcHVzaChAJGhhc2hWYWx1ZTIsICRmdW5j
dGlvbkxlbmd0aCk7CisgICAgICAgIH0KIAogICAgICAgICBwdXNoKEAkaGFzaFNwZWNpYWxzLCBD
b21wdXRlRnVuY3Rpb25TcGVjaWFsKCRpbnRlcmZhY2UsICRmdW5jdGlvbikpOwogCkBAIC0yNTQx
LDM5ICsyNTQ1LDI4IEBAIHN1YiBhZGRVbnNjb3BhYmxlUHJvcGVydGllcwogICAgIHB1c2goQGlt
cGxDb250ZW50LCAiICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0
eU5hbWVzLT51bnNjb3BhYmxlc1N5bWJvbCwgJnVuc2NvcGFibGVzLCBEb250RW51bSB8IFJlYWRP
bmx5KTtcbiIpOwogfQogCi1zdWIgR2V0UmVzdWx0VHlwZUZpbHRlcgorc3ViIEdldFVuc2FmZUFy
Z3VtZW50VHlwZQogewotICAgIG15ICgkdHlwZSkgPSBAXzsKKyAgICBteSAoJGludGVyZmFjZSwg
JHR5cGUpID0gQF87CiAKLSAgICBteSAlVHlwZUZpbHRlcnMgPSAoCi0gICAgICAgICJhbnkiID0+
ICJTcGVjSGVhcFRvcCIsCi0gICAgICAgICJib29sZWFuIiA9PiAiU3BlY0Jvb2xlYW4iLAotICAg
ICAgICAiYnl0ZSIgPT4gIlNwZWNJbnQzMk9ubHkiLAotICAgICAgICAib2N0ZXQiID0+ICJTcGVj
SW50MzJPbmx5IiwKLSAgICAgICAgInNob3J0IiA9PiAiU3BlY0ludDMyT25seSIsCi0gICAgICAg
ICJ1bnNpZ25lZCBzaG9ydCIgPT4gIlNwZWNJbnQzMk9ubHkiLAotICAgICAgICAibG9uZyIgPT4g
IlNwZWNJbnQzMk9ubHkiLAotICAgICAgICAidW5zaWduZWQgbG9uZyIgPT4gIlNwZWNCeXRlY29k
ZU51bWJlciIsCi0gICAgICAgICJsb25nIGxvbmciID0+ICJTcGVjQnl0ZWNvZGVOdW1iZXIiLAot
ICAgICAgICAidW5zaWduZWQgbG9uZyBsb25nIiA9PiAiU3BlY0J5dGVjb2RlTnVtYmVyIiwKLSAg
ICAgICAgImZsb2F0IiA9PiAiU3BlY0J5dGVjb2RlTnVtYmVyIiwKLSAgICAgICAgInVucmVzdHJp
Y3RlZCBmbG9hdCIgPT4gIlNwZWNCeXRlY29kZU51bWJlciIsCi0gICAgICAgICJkb3VibGUiID0+
ICJTcGVjQnl0ZWNvZGVOdW1iZXIiLAotICAgICAgICAidW5yZXN0cmljdGVkIGRvdWJsZSIgPT4g
IlNwZWNCeXRlY29kZU51bWJlciIsCi0gICAgICAgICJET01TdHJpbmciID0+ICJTcGVjU3RyaW5n
IiwKLSAgICAgICAgIkJ5dGVTdHJpbmciID0+ICJTcGVjU3RyaW5nIiwKLSAgICAgICAgIlVTVlN0
cmluZyIgPT4gIlNwZWNTdHJpbmciLAotICAgICk7CisgICAgbXkgJElETFR5cGUgPSBHZXRJRExU
eXBlKCRpbnRlcmZhY2UsICR0eXBlKTsKKyAgICByZXR1cm4gIkRPTUpJVDo6SURMSlNBcmd1bWVu
dFR5cGU8JHtJRExUeXBlfT4iOworfQogCi0gICAgaWYgKGV4aXN0cyAkVHlwZUZpbHRlcnN7JHR5
cGUtPm5hbWV9KSB7Ci0gICAgICAgIG15ICRyZXN1bHRUeXBlID0gIkpTQzo6JFR5cGVGaWx0ZXJz
eyR0eXBlLT5uYW1lfSI7Ci0gICAgICAgIGlmICgkdHlwZS0+aXNOdWxsYWJsZSkgewotICAgICAg
ICAgICAgZGllICJcImFueVwiIHR5cGUgbXVzdCBub3QgYmVjb21lIG51bGxhYmxlLiIgaWYgJHR5
cGUtPm5hbWUgZXEgImFueSI7Ci0gICAgICAgICAgICAkcmVzdWx0VHlwZSA9ICIoJHJlc3VsdFR5
cGUgfCBKU0M6OlNwZWNPdGhlcikiOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiAkcmVzdWx0
VHlwZTsKLSAgICB9Ci0gICAgcmV0dXJuICJTcGVjSGVhcFRvcCI7CitzdWIgR2V0QXJndW1lbnRU
eXBlRmlsdGVyCit7CisgICAgbXkgKCRpbnRlcmZhY2UsICR0eXBlKSA9IEBfOworCisgICAgbXkg
JElETFR5cGUgPSBHZXRJRExUeXBlKCRpbnRlcmZhY2UsICR0eXBlKTsKKyAgICByZXR1cm4gIkRP
TUpJVDo6SURMQXJndW1lbnRUeXBlRmlsdGVyPCR7SURMVHlwZX0+IjsKK30KKworc3ViIEdldFJl
c3VsdFR5cGVGaWx0ZXIKK3sKKyAgICBteSAoJGludGVyZmFjZSwgJHR5cGUpID0gQF87CisKKyAg
ICBteSAkSURMVHlwZSA9IEdldElETFR5cGUoJGludGVyZmFjZSwgJHR5cGUpOworICAgIHJldHVy
biAiRE9NSklUOjpJRExSZXN1bHRUeXBlRmlsdGVyPCR7SURMVHlwZX0+IjsKIH0KIAogc3ViIEdl
bmVyYXRlSW1wbGVtZW50YXRpb24KQEAgLTI2NDQsNiArMjYzNywxNyBAQCBzdWIgR2VuZXJhdGVJ
bXBsZW1lbnRhdGlvbgogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIjaWYgJHtjb25k
aXRpb25hbFN0cmluZ31cbiIpIGlmICRjb25kaXRpb25hbFN0cmluZzsKICAgICAgICAgICAgIG15
ICRmdW5jdGlvbk5hbWUgPSBHZXRGdW5jdGlvbk5hbWUoJGludGVyZmFjZSwgJGNsYXNzTmFtZSwg
JGZ1bmN0aW9uKTsKICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiSlNDOjpFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMICR7ZnVuY3Rpb25OYW1lfShKU0M6OkV4ZWNTdGF0ZSopO1xu
Iik7CisgICAgICAgICAgICBpZiAoJGZ1bmN0aW9uLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntET01K
SVR9KSB7CisgICAgICAgICAgICAgICAgJGltcGxJbmNsdWRlc3siRE9NSklUSURMVHlwZS5oIn0g
PSAxOworICAgICAgICAgICAgICAgIG15ICR1bnNhZmVGdW5jdGlvbk5hbWUgPSAidW5zYWZlIiAu
ICRjb2RlR2VuZXJhdG9yLT5XS191Y2ZpcnN0KCRmdW5jdGlvbk5hbWUpOworICAgICAgICAgICAg
ICAgIG15ICRmdW5jdGlvblNpZ25hdHVyZSA9ICJKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgJHt1bnNhZmVGdW5jdGlvbk5hbWV9KEpTQzo6RXhlY1N0YXRlKiwgJGNsYXNzTmFtZSoi
OworICAgICAgICAgICAgICAgIGZvcmVhY2ggbXkgJGFyZ3VtZW50IChAeyRmdW5jdGlvbi0+YXJn
dW1lbnRzfSkgeworICAgICAgICAgICAgICAgICAgICBteSAkdHlwZSA9ICRhcmd1bWVudC0+dHlw
ZTsKKyAgICAgICAgICAgICAgICAgICAgbXkgJGFyZ3VtZW50VHlwZSA9IEdldFVuc2FmZUFyZ3Vt
ZW50VHlwZSgkaW50ZXJmYWNlLCAkdHlwZSk7CisgICAgICAgICAgICAgICAgICAgICRmdW5jdGlv
blNpZ25hdHVyZSAuPSAiLCAke2FyZ3VtZW50VHlwZX0iOworICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgJGZ1bmN0aW9uU2lnbmF0dXJlIC4gIik7
XG4iKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiI2Vu
ZGlmXG4iKSBpZiAkY29uZGl0aW9uYWxTdHJpbmc7CiAgICAgICAgIH0KIApAQCAtMjY4MCw2ICsy
Njg0LDM3IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgIHB1c2goQGltcGxD
b250ZW50LCAiXG4iKTsKICAgICB9CiAKKyAgICBpZiAoJG51bUZ1bmN0aW9ucyA+IDApIHsKKyAg
ICAgICAgZm9yZWFjaCBteSAkZnVuY3Rpb24gKEBmdW5jdGlvbnMpIHsKKyAgICAgICAgICAgIG5l
eHQgdW5sZXNzICRmdW5jdGlvbi0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57RE9NSklUfTsKKyAgICAg
ICAgICAgICRpbXBsSW5jbHVkZXN7IkRPTUpJVElETFR5cGVGaWx0ZXIuaCJ9ID0gMTsKKyAgICAg
ICAgICAgICRpbXBsSW5jbHVkZXN7IkRPTUpJVENoZWNrRE9NLmgifSA9IDE7CisgICAgICAgICAg
ICAkaW1wbEluY2x1ZGVzeyJET01KSVRBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmgifSA9IDE7CisK
KyAgICAgICAgICAgIG15ICRpc092ZXJsb2FkZWQgPSAkZnVuY3Rpb24tPntvdmVybG9hZHN9ICYm
IEB7JGZ1bmN0aW9uLT57b3ZlcmxvYWRzfX0gPiAxOworICAgICAgICAgICAgZGllICJPdmVybG9h
ZHMgaXMgbm90IHN1cHBvcnRlZCBpbiBET01KSVQiIGlmICRpc092ZXJsb2FkZWQ7CisgICAgICAg
ICAgICBkaWUgIkN1cnJlbnRseSBSZWFkRE9NIHZhbHVlIGlzIG9ubHkgYWxsb3dlZCIgdW5sZXNz
ICRjb2RlR2VuZXJhdG9yLT5FeHRlbmRlZEF0dHJpYnV0ZUNvbnRhaW5zKCRmdW5jdGlvbi0+ZXh0
ZW5kZWRBdHRyaWJ1dGVzLT57RE9NSklUfSwgIlJlYWRET00iKTsKKworICAgICAgICAgICAgbXkg
JGludGVyZmFjZU5hbWUgPSAkaW50ZXJmYWNlLT50eXBlLT5uYW1lOworICAgICAgICAgICAgbXkg
JGZ1bmN0aW9uTmFtZSA9IEdldEZ1bmN0aW9uTmFtZSgkaW50ZXJmYWNlLCAkY2xhc3NOYW1lLCAk
ZnVuY3Rpb24pOworICAgICAgICAgICAgbXkgJHVuc2FmZUZ1bmN0aW9uTmFtZSA9ICJ1bnNhZmUi
IC4gJGNvZGVHZW5lcmF0b3ItPldLX3VjZmlyc3QoJGZ1bmN0aW9uTmFtZSk7CisgICAgICAgICAg
ICBteSAkZG9tSklUU2lnbmF0dXJlTmFtZSA9ICJET01KSVRTaWduYXR1cmVGb3IiIC4gJGludGVy
ZmFjZS0+dHlwZS0+bmFtZSAuICRjb2RlR2VuZXJhdG9yLT5XS191Y2ZpcnN0KCRmdW5jdGlvbi0+
bmFtZSk7CisgICAgICAgICAgICBteSAkY2xhc3NJbmZvID0gIkpTIiAuICRpbnRlcmZhY2UtPnR5
cGUtPm5hbWUgLiAiOjppbmZvKCkiOworICAgICAgICAgICAgbXkgJHJlc3VsdFR5cGUgPSBHZXRS
ZXN1bHRUeXBlRmlsdGVyKCRpbnRlcmZhY2UsICRmdW5jdGlvbi0+dHlwZSk7CisgICAgICAgICAg
ICBteSAkZG9tSklUU2lnbmF0dXJlID0gInN0YXRpYyBjb25zdCBKU0M6OkRPTUpJVDo6U2lnbmF0
dXJlICR7ZG9tSklUU2lnbmF0dXJlTmFtZX0oKHVpbnRwdHJfdCkke3Vuc2FmZUZ1bmN0aW9uTmFt
ZX0sIERPTUpJVDo6Y2hlY2tET008JGludGVyZmFjZU5hbWU+LCAkY2xhc3NJbmZvLCBKU0M6OkRP
TUpJVDo6RWZmZWN0Ojpmb3JSZWFkKERPTUpJVDo6QWJzdHJhY3RIZWFwUmVwb3NpdG9yeTo6RE9N
KSwgJHtyZXN1bHRUeXBlfSI7CisgICAgICAgICAgICBmb3JlYWNoIG15ICRhcmd1bWVudCAoQHsk
ZnVuY3Rpb24tPmFyZ3VtZW50c30pIHsKKyAgICAgICAgICAgICAgICBteSAkdHlwZSA9ICRhcmd1
bWVudC0+dHlwZTsKKyAgICAgICAgICAgICAgICBteSAkYXJndW1lbnRUeXBlID0gR2V0QXJndW1l
bnRUeXBlRmlsdGVyKCRpbnRlcmZhY2UsICR0eXBlKTsKKyAgICAgICAgICAgICAgICAkZG9tSklU
U2lnbmF0dXJlIC49ICIsICR7YXJndW1lbnRUeXBlfSI7CisgICAgICAgICAgICB9CisgICAgICAg
ICAgICBteSAkY29uZGl0aW9uYWxTdHJpbmcgPSAkY29kZUdlbmVyYXRvci0+R2VuZXJhdGVDb25k
aXRpb25hbFN0cmluZygkZnVuY3Rpb24pOworICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQs
ICIjaWYgJHtjb25kaXRpb25hbFN0cmluZ31cbiIpIGlmICRjb25kaXRpb25hbFN0cmluZzsKKyAg
ICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAkZG9tSklUU2lnbmF0dXJlIC4gIik7XG4iKTsK
KyAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiI2VuZGlmXG4iKSBpZiAkY29uZGl0aW9u
YWxTdHJpbmc7CisgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIlxuIik7CisgICAgICAg
IH0KKyAgICB9CisKICAgICBHZW5lcmF0ZVByb3RvdHlwZURlY2xhcmF0aW9uKFxAaW1wbENvbnRl
bnQsICRjbGFzc05hbWUsICRpbnRlcmZhY2UpIGlmICFIZWFkZXJOZWVkc1Byb3RvdHlwZURlY2xh
cmF0aW9uKCRpbnRlcmZhY2UpOwogCiAgICAgR2VuZXJhdGVDb25zdHJ1Y3RvckRlY2xhcmF0aW9u
KFxAaW1wbENvbnRlbnQsICRjbGFzc05hbWUsICRpbnRlcmZhY2UpIGlmIE5lZWRzQ29uc3RydWN0
b3JQcm9wZXJ0eSgkaW50ZXJmYWNlKTsKQEAgLTI3NzYsNyArMjgxMSwxMSBAQCBzdWIgR2VuZXJh
dGVJbXBsZW1lbnRhdGlvbgogICAgICAgICAgICAgcHVzaChAaGFzaFZhbHVlMSwgJGZ1bmN0aW9u
TmFtZSk7CiAKICAgICAgICAgICAgIG15ICRmdW5jdGlvbkxlbmd0aCA9IEdldEZ1bmN0aW9uTGVu
Z3RoKCRmdW5jdGlvbik7Ci0gICAgICAgICAgICBwdXNoKEBoYXNoVmFsdWUyLCAkZnVuY3Rpb25M
ZW5ndGgpOworICAgICAgICAgICAgaWYgKCRmdW5jdGlvbi0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57
RE9NSklUfSkgeworICAgICAgICAgICAgICAgIHB1c2goQGhhc2hWYWx1ZTIsICJET01KSVRGdW5j
dGlvbkZvciIgLiAkaW50ZXJmYWNlLT50eXBlLT5uYW1lIC4gJGNvZGVHZW5lcmF0b3ItPldLX3Vj
Zmlyc3QoJGZ1bmN0aW9uLT5uYW1lKSk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAg
ICAgICAgIHB1c2goQGhhc2hWYWx1ZTIsICRmdW5jdGlvbkxlbmd0aCk7CisgICAgICAgICAgICB9
CiAKICAgICAgICAgICAgIHB1c2goQGhhc2hTcGVjaWFscywgQ29tcHV0ZUZ1bmN0aW9uU3BlY2lh
bCgkaW50ZXJmYWNlLCAkZnVuY3Rpb24pKTsKIApAQCAtMzMzOCwxMyArMzM3NywxNCBAQCBzdWIg
R2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogCiAgICAgICAgICAgICBpZiAoJGF0dHJpYnV0ZS0+ZXh0
ZW5kZWRBdHRyaWJ1dGVzLT57IkRPTUpJVCJ9KSB7CiAgICAgICAgICAgICAgICAgJGltcGxJbmNs
dWRlc3siPHd0Zi9OZXZlckRlc3Ryb3llZC5oPiJ9ID0gMTsKKyAgICAgICAgICAgICAgICAkaW1w
bEluY2x1ZGVzeyJET01KSVRJRExUeXBlRmlsdGVyLmgifSA9IDE7CiAgICAgICAgICAgICAgICAg
bXkgJGludGVyZmFjZU5hbWUgPSAkaW50ZXJmYWNlLT50eXBlLT5uYW1lOwogICAgICAgICAgICAg
ICAgIG15ICRhdHRyaWJ1dGVOYW1lID0gJGF0dHJpYnV0ZS0+bmFtZTsKICAgICAgICAgICAgICAg
ICBteSAkZ2VuZXJhdG9yTmFtZSA9ICRpbnRlcmZhY2VOYW1lIC4gJGNvZGVHZW5lcmF0b3ItPldL
X3VjZmlyc3QoJGF0dHJpYnV0ZS0+bmFtZSk7CiAgICAgICAgICAgICAgICAgbXkgJGRvbUpJVENs
YXNzTmFtZSA9ICRnZW5lcmF0b3JOYW1lIC4gIkRPTUpJVCI7CiAgICAgICAgICAgICAgICAgbXkg
JGdldHRlciA9IEdldEF0dHJpYnV0ZUdldHRlck5hbWUoJGludGVyZmFjZSwgJGdlbmVyYXRvck5h
bWUsICRhdHRyaWJ1dGUpOwogICAgICAgICAgICAgICAgIG15ICRzZXR0ZXIgPSBJc1JlYWRvbmx5
KCRhdHRyaWJ1dGUpID8gIm51bGxwdHIiIDogR2V0QXR0cmlidXRlU2V0dGVyTmFtZSgkaW50ZXJm
YWNlLCAkZ2VuZXJhdG9yTmFtZSwgJGF0dHJpYnV0ZSk7Ci0gICAgICAgICAgICAgICAgbXkgJHJl
c3VsdFR5cGUgPSBHZXRSZXN1bHRUeXBlRmlsdGVyKCRhdHRyaWJ1dGUtPnR5cGUpOworICAgICAg
ICAgICAgICAgIG15ICRyZXN1bHRUeXBlID0gR2V0UmVzdWx0VHlwZUZpbHRlcigkaW50ZXJmYWNl
LCAkYXR0cmlidXRlLT50eXBlKTsKICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwg
IiRkb21KSVRDbGFzc05hbWU6OiRkb21KSVRDbGFzc05hbWUoKVxuIik7CiAgICAgICAgICAgICAg
ICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgOiBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVyKCRn
ZXR0ZXIsICRzZXR0ZXIsICR7Y2xhc3NOYW1lfTo6aW5mbygpLCAkcmVzdWx0VHlwZSlcbiIpOwog
ICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAie1xuIik7CkBAIC0zODM4LDYgKzM4
NzgsNzcgQEAgRU5ECiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIHB1c2goQGltcGxDb250
ZW50LCAifVxuXG4iKTsKKworICAgICAgICAgICAgaWYgKCRmdW5jdGlvbi0+ZXh0ZW5kZWRBdHRy
aWJ1dGVzLT57RE9NSklUfSkgeworICAgICAgICAgICAgICAgICRpbXBsSW5jbHVkZXN7IjxpbnRl
cnByZXRlci9GcmFtZVRyYWNlcnMuaD4ifSA9IDE7CisgICAgICAgICAgICAgICAgbXkgJHVuc2Fm
ZUZ1bmN0aW9uTmFtZSA9ICJ1bnNhZmUiIC4gJGNvZGVHZW5lcmF0b3ItPldLX3VjZmlyc3QoJGZ1
bmN0aW9uTmFtZSk7CisgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJKU0M6OkVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgJHt1bnNhZmVGdW5jdGlvbk5hbWV9KEpTQzo6RXhl
Y1N0YXRlKiBzdGF0ZSwgJGNsYXNzTmFtZSogY2FzdGVkVGhpcyIpOworICAgICAgICAgICAgICAg
IGZvcmVhY2ggbXkgJGFyZ3VtZW50IChAeyRmdW5jdGlvbi0+YXJndW1lbnRzfSkgeworICAgICAg
ICAgICAgICAgICAgICBteSAkdHlwZSA9ICRhcmd1bWVudC0+dHlwZTsKKyAgICAgICAgICAgICAg
ICAgICAgbXkgJGFyZ3VtZW50VHlwZSA9IEdldFVuc2FmZUFyZ3VtZW50VHlwZSgkaW50ZXJmYWNl
LCAkdHlwZSk7CisgICAgICAgICAgICAgICAgICAgIG15ICRuYW1lID0gJGFyZ3VtZW50LT5uYW1l
OworICAgICAgICAgICAgICAgICAgICBteSAkZW5jb2RlZE5hbWUgPSAiZW5jb2RlZCIgLiAkY29k
ZUdlbmVyYXRvci0+V0tfdWNmaXJzdCgkbmFtZSk7CisgICAgICAgICAgICAgICAgICAgIHB1c2go
QGltcGxDb250ZW50LCAiLCAke2FyZ3VtZW50VHlwZX0gJHtlbmNvZGVkTmFtZX0iKTsKKyAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIpXG4iKTsK
KyAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIntcbiIpOworICAgICAgICAgICAg
ICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7XG4iKTsKKyAg
ICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBWTSYgdm0gPSBzdGF0ZS0+dm0o
KTtcbiIpOworICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIEpTQzo6TmF0
aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcigmdm0sIHN0YXRlKTtcbiIpOworICAgICAgICAgICAg
ICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pO1xuIik7CisgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIg
ICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTtcbiIpOworICAgICAgICAgICAg
ICAgIG15IEBhcmd1bWVudHM7CisgICAgICAgICAgICAgICAgbXkgJGltcGxGdW5jdGlvbk5hbWU7
CisgICAgICAgICAgICAgICAgbXkgJGltcGxlbWVudGVkQnkgPSAkZnVuY3Rpb24tPmV4dGVuZGVk
QXR0cmlidXRlcy0+e0ltcGxlbWVudGVkQnl9OworCisgICAgICAgICAgICAgICAgaWYgKCRpbXBs
ZW1lbnRlZEJ5KSB7CisgICAgICAgICAgICAgICAgICAgIEFkZFRvSW1wbEluY2x1ZGVzKCIke2lt
cGxlbWVudGVkQnl9LmgiLCAkZnVuY3Rpb24tPmV4dGVuZGVkQXR0cmlidXRlcy0+e0NvbmRpdGlv
bmFsfSk7CisgICAgICAgICAgICAgICAgICAgIHVuc2hpZnQoQGFyZ3VtZW50cywgImltcGwiKSBp
ZiAhJGZ1bmN0aW9uLT5pc1N0YXRpYzsKKyAgICAgICAgICAgICAgICAgICAgJGltcGxGdW5jdGlv
bk5hbWUgPSAiV2ViQ29yZTo6JHtpbXBsZW1lbnRlZEJ5fTo6JHtmdW5jdGlvbkltcGxlbWVudGF0
aW9uTmFtZX0iOworICAgICAgICAgICAgICAgIH0gZWxzaWYgKCRmdW5jdGlvbi0+aXNTdGF0aWMp
IHsKKyAgICAgICAgICAgICAgICAgICAgJGltcGxGdW5jdGlvbk5hbWUgPSAiJHtpbnRlcmZhY2VO
YW1lfTo6JHtmdW5jdGlvbkltcGxlbWVudGF0aW9uTmFtZX0iOworICAgICAgICAgICAgICAgIH0g
ZWxzaWYgKCRzdmdQcm9wZXJ0eU9yTGlzdFByb3BlcnR5VHlwZSBhbmQgISRzdmdMaXN0UHJvcGVy
dHlUeXBlKSB7CisgICAgICAgICAgICAgICAgICAgICRpbXBsRnVuY3Rpb25OYW1lID0gInBvZElt
cGwuJHtmdW5jdGlvbkltcGxlbWVudGF0aW9uTmFtZX0iOworICAgICAgICAgICAgICAgIH0gZWxz
ZSB7CisgICAgICAgICAgICAgICAgICAgICRpbXBsRnVuY3Rpb25OYW1lID0gImltcGwuJHtmdW5j
dGlvbkltcGxlbWVudGF0aW9uTmFtZX0iOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAg
ICAgICAgIGZvcmVhY2ggbXkgJGFyZ3VtZW50IChAeyRmdW5jdGlvbi0+YXJndW1lbnRzfSkgewor
ICAgICAgICAgICAgICAgICAgICBteSAkdmFsdWUgPSAiIjsKKyAgICAgICAgICAgICAgICAgICAg
bXkgJHR5cGUgPSAkYXJndW1lbnQtPnR5cGU7CisgICAgICAgICAgICAgICAgICAgIG15ICRuYW1l
ID0gJGFyZ3VtZW50LT5uYW1lOworICAgICAgICAgICAgICAgICAgICBteSAkZW5jb2RlZE5hbWUg
PSAiZW5jb2RlZCIgLiAkY29kZUdlbmVyYXRvci0+V0tfdWNmaXJzdCgkbmFtZSk7CisgICAgICAg
ICAgICAgICAgICAgIG15ICRuYXRpdmVUeXBlID0gR2V0TmF0aXZlVHlwZSgkaW50ZXJmYWNlLCAk
YXJndW1lbnQtPnR5cGUpOworICAgICAgICAgICAgICAgICAgICBteSAkaXNUZWFyT2ZmID0gJGNv
ZGVHZW5lcmF0b3ItPklzU1ZHVHlwZU5lZWRpbmdUZWFyT2ZmKCR0eXBlKSAmJiAkaW50ZXJmYWNl
TmFtZSAhfiAvTGlzdCQvOworICAgICAgICAgICAgICAgICAgICBkaWUgIlRlYXJPZmYgdHlwZSBp
cyBub3QgYWxsb3dlZCIgaWYgJGlzVGVhck9mZjsKKyAgICAgICAgICAgICAgICAgICAgbXkgJHNo
b3VsZFBhc3NCeVJlZmVyZW5jZSA9IFNob3VsZFBhc3NXcmFwcGVyQnlSZWZlcmVuY2UoJGFyZ3Vt
ZW50LCAkaW50ZXJmYWNlKTsKKworICAgICAgICAgICAgICAgICAgICBpZiAoISRzaG91bGRQYXNz
QnlSZWZlcmVuY2UgJiYgKCRjb2RlR2VuZXJhdG9yLT5Jc1dyYXBwZXJUeXBlKCR0eXBlKSB8fCAk
Y29kZUdlbmVyYXRvci0+SXNUeXBlZEFycmF5VHlwZSgkdHlwZSkpKSB7CisgICAgICAgICAgICAg
ICAgICAgICAgICAkaW1wbEluY2x1ZGVzeyI8cnVudGltZS9FcnJvci5oPiJ9ID0gMTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIG15ICgkbmF0aXZlVmFsdWUsICRtYXlUaHJvd0V4Y2VwdGlvbikg
PSBVbnNhZmVUb05hdGl2ZSgkaW50ZXJmYWNlLCAkYXJndW1lbnQsICRlbmNvZGVkTmFtZSwgJGZ1
bmN0aW9uLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntDb25kaXRpb25hbH0pOworICAgICAgICAgICAg
ICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgJG5hdGl2ZVR5cGUgJG5hbWUgPSBu
dWxscHRyO1xuIik7CisgICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwg
IiAgICAkbmFtZSA9ICRuYXRpdmVWYWx1ZTtcbiIpOworICAgICAgICAgICAgICAgICAgICAgICAg
cHVzaChAaW1wbENvbnRlbnQsICIgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBl
bmNvZGVkSlNWYWx1ZSgpKTtcbiIpIGlmICRtYXlUaHJvd0V4Y2VwdGlvbjsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICR2YWx1ZSA9ICJXVEZNb3ZlKCRuYW1lKSI7CisgICAgICAgICAgICAgICAg
ICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICBteSAoJG5hdGl2ZVZhbHVlLCAk
bWF5VGhyb3dFeGNlcHRpb24pID0gVW5zYWZlVG9OYXRpdmUoJGludGVyZmFjZSwgJGFyZ3VtZW50
LCAkZW5jb2RlZE5hbWUsICRmdW5jdGlvbi0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Q29uZGl0aW9u
YWx9KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGF1
dG8gJG5hbWUgPSAke25hdGl2ZVZhbHVlfTtcbiIpOworICAgICAgICAgICAgICAgICAgICAgICAg
JHZhbHVlID0gIldURk1vdmUoJG5hbWUpIjsKKyAgICAgICAgICAgICAgICAgICAgICAgIHB1c2go
QGltcGxDb250ZW50LCAiICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2Rl
ZEpTVmFsdWUoKSk7XG4iKSBpZiAkbWF5VGhyb3dFeGNlcHRpb247CisgICAgICAgICAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgICAgICAgICBpZiAoJHNob3VsZFBhc3NCeVJlZmVyZW5jZSkg
eworICAgICAgICAgICAgICAgICAgICAgICAgJHZhbHVlID0gIiokbmFtZSI7CisgICAgICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgcHVzaChAYXJndW1lbnRzLCAkdmFsdWUp
OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBteSAkZnVuY3Rpb25TdHJpbmcg
PSAiJGltcGxGdW5jdGlvbk5hbWUoIiAuIGpvaW4oIiwgIiwgQGFyZ3VtZW50cykgLiAiKSI7Cisg
ICAgICAgICAgICAgICAgJGZ1bmN0aW9uU3RyaW5nID0gInByb3BhZ2F0ZUV4Y2VwdGlvbigqc3Rh
dGUsIHRocm93U2NvcGUsICRmdW5jdGlvblN0cmluZykiIGlmIE5lZWRzRXhwbGljaXRQcm9wYWdh
dGVFeGNlcHRpb25DYWxsKCRmdW5jdGlvbik7CisgICAgICAgICAgICAgICAgcHVzaChAaW1wbENv
bnRlbnQsICIgICAgSlNWYWx1ZSByZXN1bHQgPSAiIC4gTmF0aXZlVG9KU1ZhbHVlVXNpbmdQb2lu
dGVycygkZnVuY3Rpb24sIDEsICRpbnRlcmZhY2UsICRmdW5jdGlvblN0cmluZywgImNhc3RlZFRo
aXMiKSAuICI7XG4iKTsKKyAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7XG4iKTsKKyAgICAgICAgICAgICAgICBwdXNo
KEBpbXBsQ29udGVudCwgIn1cblxuIik7CisgICAgICAgICAgICB9CisKICAgICAgICAgICAgIHB1
c2goQGltcGxDb250ZW50LCAiI2VuZGlmXG5cbiIpIGlmICRjb25kaXRpb25hbDsKIAogICAgICAg
ICAgICAgIyBHZW5lcmF0ZSBhIGZ1bmN0aW9uIGRpc3BhdGNoaW5nIGNhbGwgdG8gdGhlIHJlc3Qg
b2YgdGhlIG92ZXJsb2Fkcy4KQEAgLTUzMjQsNiArNTQzNSw0NiBAQCBzdWIgSlNWYWx1ZVRvTmF0
aXZlCiAgICAgcmV0dXJuICgiY29udmVydDwkSURMVHlwZT4oIiAuIGpvaW4oIiwgIiwgQGNvbnZl
cnNpb25Bcmd1bWVudHMpIC4gIikiLCAxKTsKIH0KIAorc3ViIFVuc2FmZVRvTmF0aXZlCit7Cisg
ICAgbXkgKCRpbnRlcmZhY2UsICRjb250ZXh0LCAkdmFsdWUsICRjb25kaXRpb25hbCwgJHN0YXRl
UG9pbnRlciwgJHN0YXRlUmVmZXJlbmNlLCAkdGhpc09iamVjdFJlZmVyZW5jZSkgPSBAXzsKKwor
ICAgIGFzc2VydCgiSW52YWxpZCBjb250ZXh0IHR5cGUiKSBpZiAhSXNWYWxpZENvbnRleHRGb3JK
U1ZhbHVlVG9OYXRpdmUoJGNvbnRleHQpOworCisgICAgbXkgJHR5cGUgPSAkY29udGV4dC0+dHlw
ZTsKKworICAgICMgRklYTUU6IFJlbW92ZSB0aGVzZSAzIHZhcmlhYmxlcyB3aGVuIGFsbCBVbnNh
ZmVUb05hdGl2ZSB1c2UgcmVmZXJlbmNlcy4KKyAgICAkc3RhdGVQb2ludGVyID0gInN0YXRlIiB1
bmxlc3MgJHN0YXRlUG9pbnRlcjsKKyAgICAkc3RhdGVSZWZlcmVuY2UgPSAiKnN0YXRlIiB1bmxl
c3MgJHN0YXRlUmVmZXJlbmNlOworICAgICR0aGlzT2JqZWN0UmVmZXJlbmNlID0gIipjYXN0ZWRU
aGlzIiB1bmxlc3MgJHRoaXNPYmplY3RSZWZlcmVuY2U7CisKKyAgICBBZGRUb0ltcGxJbmNsdWRl
c0ZvcklETFR5cGUoJHR5cGUsICRjb25kaXRpb25hbCk7CisKKyAgICAjIEZJWE1FOiBFeHRlbmQg
bW9yZS4KKworICAgIGlmICgkdHlwZS0+bmFtZSBlcSAiRE9NU3RyaW5nIikgeworICAgICAgICBy
ZXR1cm4gKCJBdG9taWNTdHJpbmcoJHt2YWx1ZX0tPnRvRXhpc3RpbmdBdG9taWNTdHJpbmcoJHN0
YXRlUG9pbnRlcikpIiwgMSkgaWYgJGNvbnRleHQtPmV4dGVuZGVkQXR0cmlidXRlcy0+e1JlcXVp
cmVzRXhpc3RpbmdBdG9taWNTdHJpbmd9OworICAgICAgICByZXR1cm4gKCIke3ZhbHVlfS0+dG9B
dG9taWNTdHJpbmcoJHN0YXRlUG9pbnRlcikiLCAxKSBpZiAkY29udGV4dC0+ZXh0ZW5kZWRBdHRy
aWJ1dGVzLT57QXRvbWljU3RyaW5nfTsKKyAgICB9CisKKyAgICBBZGRUb0ltcGxJbmNsdWRlcygi
RE9NSklUSURMQ29udmVydC5oIik7CisKKyAgICBteSAkSURMVHlwZSA9IEdldElETFR5cGUoJGlu
dGVyZmFjZSwgJHR5cGUpOworCisgICAgbXkgQGNvbnZlcnNpb25Bcmd1bWVudHMgPSAoKTsKKyAg
ICBwdXNoKEBjb252ZXJzaW9uQXJndW1lbnRzLCAiJHN0YXRlUmVmZXJlbmNlIik7CisgICAgcHVz
aChAY29udmVyc2lvbkFyZ3VtZW50cywgIiR2YWx1ZSIpOworCisgICAgbXkgQGNvbnZlcnNpb25T
dGF0aWNBcmd1bWVudHMgPSAoKTsKKyAgICBwdXNoKEBjb252ZXJzaW9uU3RhdGljQXJndW1lbnRz
LCBHZXRJbnRlZ2VyQ29udmVyc2lvbkNvbmZpZ3VyYXRpb24oJGNvbnRleHQpKSBpZiAkY29kZUdl
bmVyYXRvci0+SXNJbnRlZ2VyVHlwZSgkdHlwZSk7CisgICAgcHVzaChAY29udmVyc2lvblN0YXRp
Y0FyZ3VtZW50cywgR2V0U3RyaW5nQ29udmVyc2lvbkNvbmZpZ3VyYXRpb24oJGNvbnRleHQpKSBp
ZiAkY29kZUdlbmVyYXRvci0+SXNTdHJpbmdUeXBlKCR0eXBlKTsKKworICAgIGlmIChzY2FsYXIo
QGNvbnZlcnNpb25TdGF0aWNBcmd1bWVudHMpID4gMCkgeworICAgICAgICByZXR1cm4gKCJET01K
SVQ6OkRpcmVjdENvbnZlcnRlcjwkSURMVHlwZT46OmRpcmVjdENvbnZlcnQ8IiAuIGpvaW4oIiwg
IiwgQGNvbnZlcnNpb25TdGF0aWNBcmd1bWVudHMpIC4gIj4oIiAuIGpvaW4oIiwgIiwgQGNvbnZl
cnNpb25Bcmd1bWVudHMpIC4gIikiLCAxKTsKKyAgICB9CisgICAgcmV0dXJuICgiRE9NSklUOjpE
aXJlY3RDb252ZXJ0ZXI8JElETFR5cGU+OjpkaXJlY3RDb252ZXJ0KCIgLiBqb2luKCIsICIsIEBj
b252ZXJzaW9uQXJndW1lbnRzKSAuICIpIiwgMSk7Cit9CisKIHN1YiBOYXRpdmVUb0pTVmFsdWVE
T01Db252ZXJ0TmVlZHNTdGF0ZQogewogICAgIG15ICgkdHlwZSkgPSBAXzsKQEAgLTU1MDgsNyAr
NTY1OSwxMCBAQCBzdWIgR2VuZXJhdGVIYXNoVGFibGVWYWx1ZUFycmF5CiAgICAgICAgICAgICBw
dXNoKEBpbXBsQ29udGVudCwgIiNpZiAke2NvbmRpdGlvbmFsU3RyaW5nfVxuIik7CiAgICAgICAg
IH0KIAotICAgICAgICBpZiAoIkAkc3BlY2lhbHNbJGldIiA9fiBtL0Z1bmN0aW9uLykgeworICAg
ICAgICBpZiAoIkAkc3BlY2lhbHNbJGldIiA9fiBtL0RPTUpJVEZ1bmN0aW9uLykgeworICAgICAg
ICAgICAgJGZpcnN0VGFyZ2V0VHlwZSA9ICJzdGF0aWNfY2FzdDxOYXRpdmVGdW5jdGlvbj4iOwor
ICAgICAgICAgICAgJHNlY29uZFRhcmdldFR5cGUgPSAic3RhdGljX2Nhc3Q8Y29uc3QgSlNDOjpE
T01KSVQ6OlNpZ25hdHVyZSo+IjsKKyAgICAgICAgfSBlbHNpZiAoIkAkc3BlY2lhbHNbJGldIiA9
fiBtL0Z1bmN0aW9uLykgewogICAgICAgICAgICAgJGZpcnN0VGFyZ2V0VHlwZSA9ICJzdGF0aWNf
Y2FzdDxOYXRpdmVGdW5jdGlvbj4iOwogICAgICAgICB9IGVsc2lmICgiQCRzcGVjaWFsc1skaV0i
ID1+IG0vQnVpbHRpbi8pIHsKICAgICAgICAgICAgICRmaXJzdFRhcmdldFR5cGUgPSAic3RhdGlj
X2Nhc3Q8QnVpbHRpbkdlbmVyYXRvcj4iOwpAQCAtNjEwNiw2ICs2MjYwLDkgQEAgc3ViIENvbXB1
dGVGdW5jdGlvblNwZWNpYWwKICAgICBlbHNlIHsKICAgICAgICAgcHVzaChAc3BlY2lhbHMsICJK
U0M6OkZ1bmN0aW9uIik7CiAgICAgfQorICAgIGlmICgkZnVuY3Rpb24tPmV4dGVuZGVkQXR0cmli
dXRlcy0+eyJET01KSVQifSkgeworICAgICAgICBwdXNoKEBzcGVjaWFscywgIkRPTUpJVEZ1bmN0
aW9uIikgaWYgJGZ1bmN0aW9uLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntET01KSVR9OworICAgIH0K
ICAgICByZXR1cm4gKEBzcGVjaWFscyA+IDApID8gam9pbigiIHwgIiwgQHNwZWNpYWxzKSA6ICIw
IjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9JRExB
dHRyaWJ1dGVzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvSURMQXR0cmli
dXRlcy50eHQKaW5kZXggYTJlNzU0MTU5MWNlM2Y1NzZlN2E3ZDJkNmQyZmM2MmRkZGZhMDQxYy4u
MTM5OGQ5NDNlYmNlNDgyZTBkMTE0YzkyMmYwZDQ5MjJmNWIyNTgwYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9JRExBdHRyaWJ1dGVzLnR4dAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0lETEF0dHJpYnV0ZXMudHh0CkBAIC01Miw3ICs1
Miw3IEBAIEN1c3RvbVB1dEZ1bmN0aW9uCiBDdXN0b21TZXRQcm90b3R5cGUKIEN1c3RvbVNldHRl
cgogQ3VzdG9tVG9KU09iamVjdAotRE9NSklUCitET01KSVQ9fFJlYWRET00KIERvTm90Q2hlY2tD
b25zdGFudHMKIERvTm90Q2hlY2tTZWN1cml0eQogRG9Ob3RDaGVja1NlY3VyaXR5T25HZXR0ZXIK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RET01KSVQuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdERPTUpJVC5jcHAKaW5kZXggMTc4N2UzNTU5YzkxOTI5N2FkNWM2YjE0NWY2ZjdkYmE1NmEy
ZTUwMC4uZjllN2ZlOGQxOGU2ZDM1ZDU5OGViZGMwYzI4ZjY1OGEyZjc0ODNiZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERPTUpJVC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERP
TUpJVC5jcHAKQEAgLTIxLDEwICsyMSwyMCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1
ZGUgIkpTVGVzdERPTUpJVC5oIgogCisjaW5jbHVkZSAiRE9NSklUQWJzdHJhY3RIZWFwUmVwb3Np
dG9yeS5oIgorI2luY2x1ZGUgIkRPTUpJVENoZWNrRE9NLmgiCisjaW5jbHVkZSAiRE9NSklUSURM
Q29udmVydC5oIgorI2luY2x1ZGUgIkRPTUpJVElETFR5cGUuaCIKKyNpbmNsdWRlICJET01KSVRJ
RExUeXBlRmlsdGVyLmgiCisjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgogI2luY2x1ZGUgIkpT
Qnl0ZVN0cmluZy5oIgogI2luY2x1ZGUgIkpTRE9NQmluZGluZy5oIgogI2luY2x1ZGUgIkpTRE9N
Q29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJKU0RPTUNvbnZlcnQuaCIKKyNpbmNsdWRlICJKU0Vs
ZW1lbnQuaCIKKyNpbmNsdWRlICJKU05vZGVMaXN0LmgiCisjaW5jbHVkZSA8aW50ZXJwcmV0ZXIv
RnJhbWVUcmFjZXJzLmg+CisjaW5jbHVkZSA8cnVudGltZS9FcnJvci5oPgogI2luY2x1ZGUgPHd0
Zi9HZXRQdHIuaD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KIApAQCAtMzIsNiAr
NDIsMTkgQEAgdXNpbmcgbmFtZXNwYWNlIEpTQzsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCisv
LyBGdW5jdGlvbnMKKworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdERP
TUpJVFByb3RvdHlwZUZ1bmN0aW9uR2V0QXR0cmlidXRlKEpTQzo6RXhlY1N0YXRlKik7CitKU0M6
OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgdW5zYWZlSnNUZXN0RE9NSklUUHJvdG90eXBl
RnVuY3Rpb25HZXRBdHRyaWJ1dGUoSlNDOjpFeGVjU3RhdGUqLCBKU1Rlc3RET01KSVQqLCBET01K
SVQ6OklETEpTQXJndW1lbnRUeXBlPElETERPTVN0cmluZz4pOworSlNDOjpFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdERPTUpJVFByb3RvdHlwZUZ1bmN0aW9uSXRlbShKU0M6OkV4
ZWNTdGF0ZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHVuc2FmZUpzVGVz
dERPTUpJVFByb3RvdHlwZUZ1bmN0aW9uSXRlbShKU0M6OkV4ZWNTdGF0ZSosIEpTVGVzdERPTUpJ
VCosIERPTUpJVDo6SURMSlNBcmd1bWVudFR5cGU8SURMVW5zaWduZWRTaG9ydD4sIERPTUpJVDo6
SURMSlNBcmd1bWVudFR5cGU8SURMVW5zaWduZWRTaG9ydD4pOworSlNDOjpFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdERPTUpJVFByb3RvdHlwZUZ1bmN0aW9uSGFzQXR0cmlidXRl
KEpTQzo6RXhlY1N0YXRlKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgdW5z
YWZlSnNUZXN0RE9NSklUUHJvdG90eXBlRnVuY3Rpb25IYXNBdHRyaWJ1dGUoSlNDOjpFeGVjU3Rh
dGUqLCBKU1Rlc3RET01KSVQqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBq
c1Rlc3RET01KSVRQcm90b3R5cGVGdW5jdGlvbkdldEVsZW1lbnRCeUlkKEpTQzo6RXhlY1N0YXRl
Kik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgdW5zYWZlSnNUZXN0RE9NSklU
UHJvdG90eXBlRnVuY3Rpb25HZXRFbGVtZW50QnlJZChKU0M6OkV4ZWNTdGF0ZSosIEpTVGVzdERP
TUpJVCosIERPTUpJVDo6SURMSlNBcmd1bWVudFR5cGU8SURMRE9NU3RyaW5nPik7CitKU0M6OkVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0RE9NSklUUHJvdG90eXBlRnVuY3Rpb25H
ZXRFbGVtZW50c0J5TmFtZShKU0M6OkV4ZWNTdGF0ZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIHVuc2FmZUpzVGVzdERPTUpJVFByb3RvdHlwZUZ1bmN0aW9uR2V0RWxlbWVu
dHNCeU5hbWUoSlNDOjpFeGVjU3RhdGUqLCBKU1Rlc3RET01KSVQqLCBET01KSVQ6OklETEpTQXJn
dW1lbnRUeXBlPElETERPTVN0cmluZz4pOworCiAvLyBBdHRyaWJ1dGVzCiAKIEpTQzo6RW5jb2Rl
ZEpTVmFsdWUganNUZXN0RE9NSklUQW55QXR0cihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2Rl
ZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKQEAgLTcyLDYgKzk1LDE2IEBAIEpTQzo6RW5j
b2RlZEpTVmFsdWUganNUZXN0RE9NSklUTm9kZU51bGxhYmxlQXR0cihKU0M6OkV4ZWNTdGF0ZSos
IEpTQzo6RW5jb2RlZEpTCiBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdERPTUpJVENvbnN0cnVj
dG9yKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5h
bWUpOwogYm9vbCBzZXRKU1Rlc3RET01KSVRDb25zdHJ1Y3RvcihKU0M6OkV4ZWNTdGF0ZSosIEpT
Qzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOwogCitzdGF0aWMgY29uc3Qg
SlNDOjpET01KSVQ6OlNpZ25hdHVyZSBET01KSVRTaWduYXR1cmVGb3JUZXN0RE9NSklUR2V0QXR0
cmlidXRlKCh1aW50cHRyX3QpdW5zYWZlSnNUZXN0RE9NSklUUHJvdG90eXBlRnVuY3Rpb25HZXRB
dHRyaWJ1dGUsIERPTUpJVDo6Y2hlY2tET008VGVzdERPTUpJVD4sIEpTVGVzdERPTUpJVDo6aW5m
bygpLCBKU0M6OkRPTUpJVDo6RWZmZWN0Ojpmb3JSZWFkKERPTUpJVDo6QWJzdHJhY3RIZWFwUmVw
b3NpdG9yeTo6RE9NKSwgRE9NSklUOjpJRExSZXN1bHRUeXBlRmlsdGVyPElETE51bGxhYmxlPElE
TERPTVN0cmluZz4+LCBET01KSVQ6OklETEFyZ3VtZW50VHlwZUZpbHRlcjxJRExET01TdHJpbmc+
KTsKKworc3RhdGljIGNvbnN0IEpTQzo6RE9NSklUOjpTaWduYXR1cmUgRE9NSklUU2lnbmF0dXJl
Rm9yVGVzdERPTUpJVEl0ZW0oKHVpbnRwdHJfdCl1bnNhZmVKc1Rlc3RET01KSVRQcm90b3R5cGVG
dW5jdGlvbkl0ZW0sIERPTUpJVDo6Y2hlY2tET008VGVzdERPTUpJVD4sIEpTVGVzdERPTUpJVDo6
aW5mbygpLCBKU0M6OkRPTUpJVDo6RWZmZWN0Ojpmb3JSZWFkKERPTUpJVDo6QWJzdHJhY3RIZWFw
UmVwb3NpdG9yeTo6RE9NKSwgRE9NSklUOjpJRExSZXN1bHRUeXBlRmlsdGVyPElETERPTVN0cmlu
Zz4sIERPTUpJVDo6SURMQXJndW1lbnRUeXBlRmlsdGVyPElETFVuc2lnbmVkU2hvcnQ+LCBET01K
SVQ6OklETEFyZ3VtZW50VHlwZUZpbHRlcjxJRExVbnNpZ25lZFNob3J0Pik7CisKK3N0YXRpYyBj
b25zdCBKU0M6OkRPTUpJVDo6U2lnbmF0dXJlIERPTUpJVFNpZ25hdHVyZUZvclRlc3RET01KSVRI
YXNBdHRyaWJ1dGUoKHVpbnRwdHJfdCl1bnNhZmVKc1Rlc3RET01KSVRQcm90b3R5cGVGdW5jdGlv
bkhhc0F0dHJpYnV0ZSwgRE9NSklUOjpjaGVja0RPTTxUZXN0RE9NSklUPiwgSlNUZXN0RE9NSklU
OjppbmZvKCksIEpTQzo6RE9NSklUOjpFZmZlY3Q6OmZvclJlYWQoRE9NSklUOjpBYnN0cmFjdEhl
YXBSZXBvc2l0b3J5OjpET00pLCBET01KSVQ6OklETFJlc3VsdFR5cGVGaWx0ZXI8SURMQm9vbGVh
bj4pOworCitzdGF0aWMgY29uc3QgSlNDOjpET01KSVQ6OlNpZ25hdHVyZSBET01KSVRTaWduYXR1
cmVGb3JUZXN0RE9NSklUR2V0RWxlbWVudEJ5SWQoKHVpbnRwdHJfdCl1bnNhZmVKc1Rlc3RET01K
SVRQcm90b3R5cGVGdW5jdGlvbkdldEVsZW1lbnRCeUlkLCBET01KSVQ6OmNoZWNrRE9NPFRlc3RE
T01KSVQ+LCBKU1Rlc3RET01KSVQ6OmluZm8oKSwgSlNDOjpET01KSVQ6OkVmZmVjdDo6Zm9yUmVh
ZChET01KSVQ6OkFic3RyYWN0SGVhcFJlcG9zaXRvcnk6OkRPTSksIERPTUpJVDo6SURMUmVzdWx0
VHlwZUZpbHRlcjxJRExJbnRlcmZhY2U8RWxlbWVudD4+LCBET01KSVQ6OklETEFyZ3VtZW50VHlw
ZUZpbHRlcjxJRExET01TdHJpbmc+KTsKKworc3RhdGljIGNvbnN0IEpTQzo6RE9NSklUOjpTaWdu
YXR1cmUgRE9NSklUU2lnbmF0dXJlRm9yVGVzdERPTUpJVEdldEVsZW1lbnRzQnlOYW1lKCh1aW50
cHRyX3QpdW5zYWZlSnNUZXN0RE9NSklUUHJvdG90eXBlRnVuY3Rpb25HZXRFbGVtZW50c0J5TmFt
ZSwgRE9NSklUOjpjaGVja0RPTTxUZXN0RE9NSklUPiwgSlNUZXN0RE9NSklUOjppbmZvKCksIEpT
Qzo6RE9NSklUOjpFZmZlY3Q6OmZvclJlYWQoRE9NSklUOjpBYnN0cmFjdEhlYXBSZXBvc2l0b3J5
OjpET00pLCBET01KSVQ6OklETFJlc3VsdFR5cGVGaWx0ZXI8SURMSW50ZXJmYWNlPE5vZGVMaXN0
Pj4sIERPTUpJVDo6SURMQXJndW1lbnRUeXBlRmlsdGVyPElETERPTVN0cmluZz4pOworCiBjbGFz
cyBKU1Rlc3RET01KSVRQcm90b3R5cGUgOiBwdWJsaWMgSlNDOjpKU05vbkZpbmFsT2JqZWN0IHsK
IHB1YmxpYzoKICAgICB1c2luZyBCYXNlID0gSlNDOjpKU05vbkZpbmFsT2JqZWN0OwpAQCAtMTUz
LDYgKzE4NiwxMSBAQCBzdGF0aWMgY29uc3QgSGFzaFRhYmxlVmFsdWUgSlNUZXN0RE9NSklUUHJv
dG90eXBlVGFibGVWYWx1ZXNbXSA9CiAgICAgeyAiYnl0ZVN0cmluZ051bGxhYmxlQXR0ciIsIFJl
YWRPbmx5IHwgQ3VzdG9tQWNjZXNzb3IgfCBET01KSVRBdHRyaWJ1dGUsIE5vSW50cmluc2ljLCB7
IChpbnRwdHJfdClzdGF0aWNfY2FzdDxET01KSVRHZXR0ZXJTZXR0ZXJHZW5lcmF0b3I+KGRvbUpJ
VEdldHRlclNldHRlckZvclRlc3RET01KSVRCeXRlU3RyaW5nTnVsbGFibGVBdHRyKSwgKGludHB0
cl90KSAoMCkgfSB9LAogICAgIHsgInVzdlN0cmluZ051bGxhYmxlQXR0ciIsIFJlYWRPbmx5IHwg
Q3VzdG9tQWNjZXNzb3IgfCBET01KSVRBdHRyaWJ1dGUsIE5vSW50cmluc2ljLCB7IChpbnRwdHJf
dClzdGF0aWNfY2FzdDxET01KSVRHZXR0ZXJTZXR0ZXJHZW5lcmF0b3I+KGRvbUpJVEdldHRlclNl
dHRlckZvclRlc3RET01KSVRVc3ZTdHJpbmdOdWxsYWJsZUF0dHIpLCAoaW50cHRyX3QpICgwKSB9
IH0sCiAgICAgeyAibm9kZU51bGxhYmxlQXR0ciIsIFJlYWRPbmx5IHwgQ3VzdG9tQWNjZXNzb3Ig
fCBET01KSVRBdHRyaWJ1dGUsIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxE
T01KSVRHZXR0ZXJTZXR0ZXJHZW5lcmF0b3I+KGRvbUpJVEdldHRlclNldHRlckZvclRlc3RET01K
SVROb2RlTnVsbGFibGVBdHRyKSwgKGludHB0cl90KSAoMCkgfSB9LAorICAgIHsgImdldEF0dHJp
YnV0ZSIsIEpTQzo6RnVuY3Rpb24gfCBET01KSVRGdW5jdGlvbiwgTm9JbnRyaW5zaWMsIHsgKGlu
dHB0cl90KXN0YXRpY19jYXN0PE5hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RET01KSVRQcm90b3R5cGVG
dW5jdGlvbkdldEF0dHJpYnV0ZSksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8Y29uc3QgSlNDOjpE
T01KSVQ6OlNpZ25hdHVyZSo+KCZET01KSVRTaWduYXR1cmVGb3JUZXN0RE9NSklUR2V0QXR0cmli
dXRlKSB9IH0sCisgICAgeyAiaXRlbSIsIEpTQzo6RnVuY3Rpb24gfCBET01KSVRGdW5jdGlvbiwg
Tm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PE5hdGl2ZUZ1bmN0aW9uPihqc1Rl
c3RET01KSVRQcm90b3R5cGVGdW5jdGlvbkl0ZW0pLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PGNv
bnN0IEpTQzo6RE9NSklUOjpTaWduYXR1cmUqPigmRE9NSklUU2lnbmF0dXJlRm9yVGVzdERPTUpJ
VEl0ZW0pIH0gfSwKKyAgICB7ICJoYXNBdHRyaWJ1dGUiLCBKU0M6OkZ1bmN0aW9uIHwgRE9NSklU
RnVuY3Rpb24sIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxOYXRpdmVGdW5j
dGlvbj4oanNUZXN0RE9NSklUUHJvdG90eXBlRnVuY3Rpb25IYXNBdHRyaWJ1dGUpLCAoaW50cHRy
X3QpIHN0YXRpY19jYXN0PGNvbnN0IEpTQzo6RE9NSklUOjpTaWduYXR1cmUqPigmRE9NSklUU2ln
bmF0dXJlRm9yVGVzdERPTUpJVEhhc0F0dHJpYnV0ZSkgfSB9LAorICAgIHsgImdldEVsZW1lbnRC
eUlkIiwgSlNDOjpGdW5jdGlvbiB8IERPTUpJVEZ1bmN0aW9uLCBOb0ludHJpbnNpYywgeyAoaW50
cHRyX3Qpc3RhdGljX2Nhc3Q8TmF0aXZlRnVuY3Rpb24+KGpzVGVzdERPTUpJVFByb3RvdHlwZUZ1
bmN0aW9uR2V0RWxlbWVudEJ5SWQpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PGNvbnN0IEpTQzo6
RE9NSklUOjpTaWduYXR1cmUqPigmRE9NSklUU2lnbmF0dXJlRm9yVGVzdERPTUpJVEdldEVsZW1l
bnRCeUlkKSB9IH0sCisgICAgeyAiZ2V0RWxlbWVudHNCeU5hbWUiLCBKU0M6OkZ1bmN0aW9uIHwg
RE9NSklURnVuY3Rpb24sIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxOYXRp
dmVGdW5jdGlvbj4oanNUZXN0RE9NSklUUHJvdG90eXBlRnVuY3Rpb25HZXRFbGVtZW50c0J5TmFt
ZSksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8Y29uc3QgSlNDOjpET01KSVQ6OlNpZ25hdHVyZSo+
KCZET01KSVRTaWduYXR1cmVGb3JUZXN0RE9NSklUR2V0RWxlbWVudHNCeU5hbWUpIH0gfSwKIH07
CiAKIGNvbnN0IENsYXNzSW5mbyBKU1Rlc3RET01KSVRQcm90b3R5cGU6OnNfaW5mbyA9IHsgIlRl
c3RET01KSVRQcm90b3R5cGUiLCAmQmFzZTo6c19pbmZvLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxF
KEpTVGVzdERPTUpJVFByb3RvdHlwZSkgfTsKQEAgLTE4NSw2ICsyMjMsMTEgQEAgdGVtcGxhdGU8
PiBpbmxpbmUgSlNUZXN0RE9NSklUKiBCaW5kaW5nQ2FsbGVyPEpTVGVzdERPTUpJVD46OmNhc3RG
b3JBdHRyaWJ1dGUoRXgKICAgICByZXR1cm4ganNEeW5hbWljRG93bmNhc3Q8SlNUZXN0RE9NSklU
Kj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogfQogCit0ZW1wbGF0ZTw+IGlubGluZSBK
U1Rlc3RET01KSVQqIEJpbmRpbmdDYWxsZXI8SlNUZXN0RE9NSklUPjo6Y2FzdEZvck9wZXJhdGlv
bihFeGVjU3RhdGUmIHN0YXRlKQoreworICAgIHJldHVybiBqc0R5bmFtaWNEb3duY2FzdDxKU1Rl
c3RET01KSVQqPihzdGF0ZS50aGlzVmFsdWUoKSk7Cit9CisKIHN0YXRpYyBpbmxpbmUgSlNWYWx1
ZSBqc1Rlc3RET01KSVRBbnlBdHRyR2V0dGVyKEV4ZWNTdGF0ZSYsIEpTVGVzdERPTUpJVCYsIFRo
cm93U2NvcGUmIHRocm93U2NvcGUpOwogCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RET01KSVRBbnlB
dHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlO
YW1lKQpAQCAtMjAyLDcgKzI0NSw3IEBAIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RET01K
SVRBbnlBdHRyR2V0dGVyKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVGVzdERPTUpJVCYKIH0KIAogVGVz
dERPTUpJVEFueUF0dHJET01KSVQ6OlRlc3RET01KSVRBbnlBdHRyRE9NSklUKCkKLSAgICA6IEpT
Qzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIoanNUZXN0RE9NSklUQW55QXR0ciwgbnVsbHB0ciwgSlNU
ZXN0RE9NSklUOjppbmZvKCksIEpTQzo6U3BlY0hlYXBUb3ApCisgICAgOiBKU0M6OkRPTUpJVDo6
R2V0dGVyU2V0dGVyKGpzVGVzdERPTUpJVEFueUF0dHIsIG51bGxwdHIsIEpTVGVzdERPTUpJVDo6
aW5mbygpLCBET01KSVQ6OklETFJlc3VsdFR5cGVGaWx0ZXI8SURMQW55PikKIHsKIH0KIApAQCAt
MjI5LDcgKzI3Miw3IEBAIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RET01KSVRCb29sZWFu
QXR0ckdldHRlcihFeGVjU3RhdGUmIHN0YXRlLCBKU1Rlc3RET01KCiB9CiAKIFRlc3RET01KSVRC
b29sZWFuQXR0ckRPTUpJVDo6VGVzdERPTUpJVEJvb2xlYW5BdHRyRE9NSklUKCkKLSAgICA6IEpT
Qzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIoanNUZXN0RE9NSklUQm9vbGVhbkF0dHIsIG51bGxwdHIs
IEpTVGVzdERPTUpJVDo6aW5mbygpLCBKU0M6OlNwZWNCb29sZWFuKQorICAgIDogSlNDOjpET01K
SVQ6OkdldHRlclNldHRlcihqc1Rlc3RET01KSVRCb29sZWFuQXR0ciwgbnVsbHB0ciwgSlNUZXN0
RE9NSklUOjppbmZvKCksIERPTUpJVDo6SURMUmVzdWx0VHlwZUZpbHRlcjxJRExCb29sZWFuPikK
IHsKIH0KIApAQCAtMjU2LDcgKzI5OSw3IEBAIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RE
T01KSVRCeXRlQXR0ckdldHRlcihFeGVjU3RhdGUmIHN0YXRlLCBKU1Rlc3RET01KSVQmCiB9CiAK
IFRlc3RET01KSVRCeXRlQXR0ckRPTUpJVDo6VGVzdERPTUpJVEJ5dGVBdHRyRE9NSklUKCkKLSAg
ICA6IEpTQzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIoanNUZXN0RE9NSklUQnl0ZUF0dHIsIG51bGxw
dHIsIEpTVGVzdERPTUpJVDo6aW5mbygpLCBKU0M6OlNwZWNJbnQzMk9ubHkpCisgICAgOiBKU0M6
OkRPTUpJVDo6R2V0dGVyU2V0dGVyKGpzVGVzdERPTUpJVEJ5dGVBdHRyLCBudWxscHRyLCBKU1Rl
c3RET01KSVQ6OmluZm8oKSwgRE9NSklUOjpJRExSZXN1bHRUeXBlRmlsdGVyPElETEJ5dGU+KQog
ewogfQogCkBAIC0yODMsNyArMzI2LDcgQEAgc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdERP
TUpJVE9jdGV0QXR0ckdldHRlcihFeGVjU3RhdGUmIHN0YXRlLCBKU1Rlc3RET01KSVQKIH0KIAog
VGVzdERPTUpJVE9jdGV0QXR0ckRPTUpJVDo6VGVzdERPTUpJVE9jdGV0QXR0ckRPTUpJVCgpCi0g
ICAgOiBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVyKGpzVGVzdERPTUpJVE9jdGV0QXR0ciwgbnVs
bHB0ciwgSlNUZXN0RE9NSklUOjppbmZvKCksIEpTQzo6U3BlY0ludDMyT25seSkKKyAgICA6IEpT
Qzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIoanNUZXN0RE9NSklUT2N0ZXRBdHRyLCBudWxscHRyLCBK
U1Rlc3RET01KSVQ6OmluZm8oKSwgRE9NSklUOjpJRExSZXN1bHRUeXBlRmlsdGVyPElETE9jdGV0
PikKIHsKIH0KIApAQCAtMzEwLDcgKzM1Myw3IEBAIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rl
c3RET01KSVRTaG9ydEF0dHJHZXR0ZXIoRXhlY1N0YXRlJiBzdGF0ZSwgSlNUZXN0RE9NSklUCiB9
CiAKIFRlc3RET01KSVRTaG9ydEF0dHJET01KSVQ6OlRlc3RET01KSVRTaG9ydEF0dHJET01KSVQo
KQotICAgIDogSlNDOjpET01KSVQ6OkdldHRlclNldHRlcihqc1Rlc3RET01KSVRTaG9ydEF0dHIs
IG51bGxwdHIsIEpTVGVzdERPTUpJVDo6aW5mbygpLCBKU0M6OlNwZWNJbnQzMk9ubHkpCisgICAg
OiBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVyKGpzVGVzdERPTUpJVFNob3J0QXR0ciwgbnVsbHB0
ciwgSlNUZXN0RE9NSklUOjppbmZvKCksIERPTUpJVDo6SURMUmVzdWx0VHlwZUZpbHRlcjxJRExT
aG9ydD4pCiB7CiB9CiAKQEAgLTMzNyw3ICszODAsNyBAQCBzdGF0aWMgaW5saW5lIEpTVmFsdWUg
anNUZXN0RE9NSklUVW5zaWduZWRTaG9ydEF0dHJHZXR0ZXIoRXhlY1N0YXRlJiBzdGF0ZSwgSlNU
ZQogfQogCiBUZXN0RE9NSklUVW5zaWduZWRTaG9ydEF0dHJET01KSVQ6OlRlc3RET01KSVRVbnNp
Z25lZFNob3J0QXR0ckRPTUpJVCgpCi0gICAgOiBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVyKGpz
VGVzdERPTUpJVFVuc2lnbmVkU2hvcnRBdHRyLCBudWxscHRyLCBKU1Rlc3RET01KSVQ6OmluZm8o
KSwgSlNDOjpTcGVjSW50MzJPbmx5KQorICAgIDogSlNDOjpET01KSVQ6OkdldHRlclNldHRlcihq
c1Rlc3RET01KSVRVbnNpZ25lZFNob3J0QXR0ciwgbnVsbHB0ciwgSlNUZXN0RE9NSklUOjppbmZv
KCksIERPTUpJVDo6SURMUmVzdWx0VHlwZUZpbHRlcjxJRExVbnNpZ25lZFNob3J0PikKIHsKIH0K
IApAQCAtMzY0LDcgKzQwNyw3IEBAIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RET01KSVRM
b25nQXR0ckdldHRlcihFeGVjU3RhdGUmIHN0YXRlLCBKU1Rlc3RET01KSVQmCiB9CiAKIFRlc3RE
T01KSVRMb25nQXR0ckRPTUpJVDo6VGVzdERPTUpJVExvbmdBdHRyRE9NSklUKCkKLSAgICA6IEpT
Qzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIoanNUZXN0RE9NSklUTG9uZ0F0dHIsIG51bGxwdHIsIEpT
VGVzdERPTUpJVDo6aW5mbygpLCBKU0M6OlNwZWNJbnQzMk9ubHkpCisgICAgOiBKU0M6OkRPTUpJ
VDo6R2V0dGVyU2V0dGVyKGpzVGVzdERPTUpJVExvbmdBdHRyLCBudWxscHRyLCBKU1Rlc3RET01K
SVQ6OmluZm8oKSwgRE9NSklUOjpJRExSZXN1bHRUeXBlRmlsdGVyPElETExvbmc+KQogewogfQog
CkBAIC0zOTEsNyArNDM0LDcgQEAgc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdERPTUpJVFVu
c2lnbmVkTG9uZ0F0dHJHZXR0ZXIoRXhlY1N0YXRlJiBzdGF0ZSwgSlNUZXMKIH0KIAogVGVzdERP
TUpJVFVuc2lnbmVkTG9uZ0F0dHJET01KSVQ6OlRlc3RET01KSVRVbnNpZ25lZExvbmdBdHRyRE9N
SklUKCkKLSAgICA6IEpTQzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIoanNUZXN0RE9NSklUVW5zaWdu
ZWRMb25nQXR0ciwgbnVsbHB0ciwgSlNUZXN0RE9NSklUOjppbmZvKCksIEpTQzo6U3BlY0J5dGVj
b2RlTnVtYmVyKQorICAgIDogSlNDOjpET01KSVQ6OkdldHRlclNldHRlcihqc1Rlc3RET01KSVRV
bnNpZ25lZExvbmdBdHRyLCBudWxscHRyLCBKU1Rlc3RET01KSVQ6OmluZm8oKSwgRE9NSklUOjpJ
RExSZXN1bHRUeXBlRmlsdGVyPElETFVuc2lnbmVkTG9uZz4pCiB7CiB9CiAKQEAgLTQxOCw3ICs0
NjEsNyBAQCBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0RE9NSklUTG9uZ0xvbmdBdHRyR2V0
dGVyKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVGVzdERPTQogfQogCiBUZXN0RE9NSklUTG9uZ0xvbmdB
dHRyRE9NSklUOjpUZXN0RE9NSklUTG9uZ0xvbmdBdHRyRE9NSklUKCkKLSAgICA6IEpTQzo6RE9N
SklUOjpHZXR0ZXJTZXR0ZXIoanNUZXN0RE9NSklUTG9uZ0xvbmdBdHRyLCBudWxscHRyLCBKU1Rl
c3RET01KSVQ6OmluZm8oKSwgSlNDOjpTcGVjQnl0ZWNvZGVOdW1iZXIpCisgICAgOiBKU0M6OkRP
TUpJVDo6R2V0dGVyU2V0dGVyKGpzVGVzdERPTUpJVExvbmdMb25nQXR0ciwgbnVsbHB0ciwgSlNU
ZXN0RE9NSklUOjppbmZvKCksIERPTUpJVDo6SURMUmVzdWx0VHlwZUZpbHRlcjxJRExMb25nTG9u
Zz4pCiB7CiB9CiAKQEAgLTQ0NSw3ICs0ODgsNyBAQCBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNU
ZXN0RE9NSklUVW5zaWduZWRMb25nTG9uZ0F0dHJHZXR0ZXIoRXhlY1N0YXRlJiBzdGF0ZSwgSgog
fQogCiBUZXN0RE9NSklUVW5zaWduZWRMb25nTG9uZ0F0dHJET01KSVQ6OlRlc3RET01KSVRVbnNp
Z25lZExvbmdMb25nQXR0ckRPTUpJVCgpCi0gICAgOiBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVy
KGpzVGVzdERPTUpJVFVuc2lnbmVkTG9uZ0xvbmdBdHRyLCBudWxscHRyLCBKU1Rlc3RET01KSVQ6
OmluZm8oKSwgSlNDOjpTcGVjQnl0ZWNvZGVOdW1iZXIpCisgICAgOiBKU0M6OkRPTUpJVDo6R2V0
dGVyU2V0dGVyKGpzVGVzdERPTUpJVFVuc2lnbmVkTG9uZ0xvbmdBdHRyLCBudWxscHRyLCBKU1Rl
c3RET01KSVQ6OmluZm8oKSwgRE9NSklUOjpJRExSZXN1bHRUeXBlRmlsdGVyPElETFVuc2lnbmVk
TG9uZ0xvbmc+KQogewogfQogCkBAIC00NzIsNyArNTE1LDcgQEAgc3RhdGljIGlubGluZSBKU1Zh
bHVlIGpzVGVzdERPTUpJVEZsb2F0QXR0ckdldHRlcihFeGVjU3RhdGUmIHN0YXRlLCBKU1Rlc3RE
T01KSVQKIH0KIAogVGVzdERPTUpJVEZsb2F0QXR0ckRPTUpJVDo6VGVzdERPTUpJVEZsb2F0QXR0
ckRPTUpJVCgpCi0gICAgOiBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVyKGpzVGVzdERPTUpJVEZs
b2F0QXR0ciwgbnVsbHB0ciwgSlNUZXN0RE9NSklUOjppbmZvKCksIEpTQzo6U3BlY0J5dGVjb2Rl
TnVtYmVyKQorICAgIDogSlNDOjpET01KSVQ6OkdldHRlclNldHRlcihqc1Rlc3RET01KSVRGbG9h
dEF0dHIsIG51bGxwdHIsIEpTVGVzdERPTUpJVDo6aW5mbygpLCBET01KSVQ6OklETFJlc3VsdFR5
cGVGaWx0ZXI8SURMRmxvYXQ+KQogewogfQogCkBAIC00OTksNyArNTQyLDcgQEAgc3RhdGljIGlu
bGluZSBKU1ZhbHVlIGpzVGVzdERPTUpJVFVucmVzdHJpY3RlZEZsb2F0QXR0ckdldHRlcihFeGVj
U3RhdGUmIHN0YXRlLAogfQogCiBUZXN0RE9NSklUVW5yZXN0cmljdGVkRmxvYXRBdHRyRE9NSklU
OjpUZXN0RE9NSklUVW5yZXN0cmljdGVkRmxvYXRBdHRyRE9NSklUKCkKLSAgICA6IEpTQzo6RE9N
SklUOjpHZXR0ZXJTZXR0ZXIoanNUZXN0RE9NSklUVW5yZXN0cmljdGVkRmxvYXRBdHRyLCBudWxs
cHRyLCBKU1Rlc3RET01KSVQ6OmluZm8oKSwgSlNDOjpTcGVjQnl0ZWNvZGVOdW1iZXIpCisgICAg
OiBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVyKGpzVGVzdERPTUpJVFVucmVzdHJpY3RlZEZsb2F0
QXR0ciwgbnVsbHB0ciwgSlNUZXN0RE9NSklUOjppbmZvKCksIERPTUpJVDo6SURMUmVzdWx0VHlw
ZUZpbHRlcjxJRExVbnJlc3RyaWN0ZWRGbG9hdD4pCiB7CiB9CiAKQEAgLTUyNiw3ICs1NjksNyBA
QCBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0RE9NSklURG91YmxlQXR0ckdldHRlcihFeGVj
U3RhdGUmIHN0YXRlLCBKU1Rlc3RET01KSQogfQogCiBUZXN0RE9NSklURG91YmxlQXR0ckRPTUpJ
VDo6VGVzdERPTUpJVERvdWJsZUF0dHJET01KSVQoKQotICAgIDogSlNDOjpET01KSVQ6OkdldHRl
clNldHRlcihqc1Rlc3RET01KSVREb3VibGVBdHRyLCBudWxscHRyLCBKU1Rlc3RET01KSVQ6Omlu
Zm8oKSwgSlNDOjpTcGVjQnl0ZWNvZGVOdW1iZXIpCisgICAgOiBKU0M6OkRPTUpJVDo6R2V0dGVy
U2V0dGVyKGpzVGVzdERPTUpJVERvdWJsZUF0dHIsIG51bGxwdHIsIEpTVGVzdERPTUpJVDo6aW5m
bygpLCBET01KSVQ6OklETFJlc3VsdFR5cGVGaWx0ZXI8SURMRG91YmxlPikKIHsKIH0KIApAQCAt
NTUzLDcgKzU5Niw3IEBAIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RET01KSVRVbnJlc3Ry
aWN0ZWREb3VibGVBdHRyR2V0dGVyKEV4ZWNTdGF0ZSYgc3RhdGUsCiB9CiAKIFRlc3RET01KSVRV
bnJlc3RyaWN0ZWREb3VibGVBdHRyRE9NSklUOjpUZXN0RE9NSklUVW5yZXN0cmljdGVkRG91Ymxl
QXR0ckRPTUpJVCgpCi0gICAgOiBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVyKGpzVGVzdERPTUpJ
VFVucmVzdHJpY3RlZERvdWJsZUF0dHIsIG51bGxwdHIsIEpTVGVzdERPTUpJVDo6aW5mbygpLCBK
U0M6OlNwZWNCeXRlY29kZU51bWJlcikKKyAgICA6IEpTQzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIo
anNUZXN0RE9NSklUVW5yZXN0cmljdGVkRG91YmxlQXR0ciwgbnVsbHB0ciwgSlNUZXN0RE9NSklU
OjppbmZvKCksIERPTUpJVDo6SURMUmVzdWx0VHlwZUZpbHRlcjxJRExVbnJlc3RyaWN0ZWREb3Vi
bGU+KQogewogfQogCkBAIC01ODAsNyArNjIzLDcgQEAgc3RhdGljIGlubGluZSBKU1ZhbHVlIGpz
VGVzdERPTUpJVERvbVN0cmluZ0F0dHJHZXR0ZXIoRXhlY1N0YXRlJiBzdGF0ZSwgSlNUZXN0RE8K
IH0KIAogVGVzdERPTUpJVERvbVN0cmluZ0F0dHJET01KSVQ6OlRlc3RET01KSVREb21TdHJpbmdB
dHRyRE9NSklUKCkKLSAgICA6IEpTQzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIoanNUZXN0RE9NSklU
RG9tU3RyaW5nQXR0ciwgbnVsbHB0ciwgSlNUZXN0RE9NSklUOjppbmZvKCksIEpTQzo6U3BlY1N0
cmluZykKKyAgICA6IEpTQzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIoanNUZXN0RE9NSklURG9tU3Ry
aW5nQXR0ciwgbnVsbHB0ciwgSlNUZXN0RE9NSklUOjppbmZvKCksIERPTUpJVDo6SURMUmVzdWx0
VHlwZUZpbHRlcjxJRExET01TdHJpbmc+KQogewogfQogCkBAIC02MDcsNyArNjUwLDcgQEAgc3Rh
dGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdERPTUpJVEJ5dGVTdHJpbmdBdHRyR2V0dGVyKEV4ZWNT
dGF0ZSYgc3RhdGUsIEpTVGVzdEQKIH0KIAogVGVzdERPTUpJVEJ5dGVTdHJpbmdBdHRyRE9NSklU
OjpUZXN0RE9NSklUQnl0ZVN0cmluZ0F0dHJET01KSVQoKQotICAgIDogSlNDOjpET01KSVQ6Okdl
dHRlclNldHRlcihqc1Rlc3RET01KSVRCeXRlU3RyaW5nQXR0ciwgbnVsbHB0ciwgSlNUZXN0RE9N
SklUOjppbmZvKCksIEpTQzo6U3BlY1N0cmluZykKKyAgICA6IEpTQzo6RE9NSklUOjpHZXR0ZXJT
ZXR0ZXIoanNUZXN0RE9NSklUQnl0ZVN0cmluZ0F0dHIsIG51bGxwdHIsIEpTVGVzdERPTUpJVDo6
aW5mbygpLCBET01KSVQ6OklETFJlc3VsdFR5cGVGaWx0ZXI8SURMQnl0ZVN0cmluZz4pCiB7CiB9
CiAKQEAgLTYzNCw3ICs2NzcsNyBAQCBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0RE9NSklU
VXN2U3RyaW5nQXR0ckdldHRlcihFeGVjU3RhdGUmIHN0YXRlLCBKU1Rlc3RETwogfQogCiBUZXN0
RE9NSklUVXN2U3RyaW5nQXR0ckRPTUpJVDo6VGVzdERPTUpJVFVzdlN0cmluZ0F0dHJET01KSVQo
KQotICAgIDogSlNDOjpET01KSVQ6OkdldHRlclNldHRlcihqc1Rlc3RET01KSVRVc3ZTdHJpbmdB
dHRyLCBudWxscHRyLCBKU1Rlc3RET01KSVQ6OmluZm8oKSwgSlNDOjpTcGVjU3RyaW5nKQorICAg
IDogSlNDOjpET01KSVQ6OkdldHRlclNldHRlcihqc1Rlc3RET01KSVRVc3ZTdHJpbmdBdHRyLCBu
dWxscHRyLCBKU1Rlc3RET01KSVQ6OmluZm8oKSwgRE9NSklUOjpJRExSZXN1bHRUeXBlRmlsdGVy
PElETFVTVlN0cmluZz4pCiB7CiB9CiAKQEAgLTY2MSw3ICs3MDQsNyBAQCBzdGF0aWMgaW5saW5l
IEpTVmFsdWUganNUZXN0RE9NSklUTm9kZUF0dHJHZXR0ZXIoRXhlY1N0YXRlJiBzdGF0ZSwgSlNU
ZXN0RE9NSklUJgogfQogCiBUZXN0RE9NSklUTm9kZUF0dHJET01KSVQ6OlRlc3RET01KSVROb2Rl
QXR0ckRPTUpJVCgpCi0gICAgOiBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVyKGpzVGVzdERPTUpJ
VE5vZGVBdHRyLCBudWxscHRyLCBKU1Rlc3RET01KSVQ6OmluZm8oKSwgU3BlY0hlYXBUb3ApCisg
ICAgOiBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVyKGpzVGVzdERPTUpJVE5vZGVBdHRyLCBudWxs
cHRyLCBKU1Rlc3RET01KSVQ6OmluZm8oKSwgRE9NSklUOjpJRExSZXN1bHRUeXBlRmlsdGVyPElE
TEludGVyZmFjZTxOb2RlPj4pCiB7CiB9CiAKQEAgLTY4OCw3ICs3MzEsNyBAQCBzdGF0aWMgaW5s
aW5lIEpTVmFsdWUganNUZXN0RE9NSklUQm9vbGVhbk51bGxhYmxlQXR0ckdldHRlcihFeGVjU3Rh
dGUmIHN0YXRlLCBKUwogfQogCiBUZXN0RE9NSklUQm9vbGVhbk51bGxhYmxlQXR0ckRPTUpJVDo6
VGVzdERPTUpJVEJvb2xlYW5OdWxsYWJsZUF0dHJET01KSVQoKQotICAgIDogSlNDOjpET01KSVQ6
OkdldHRlclNldHRlcihqc1Rlc3RET01KSVRCb29sZWFuTnVsbGFibGVBdHRyLCBudWxscHRyLCBK
U1Rlc3RET01KSVQ6OmluZm8oKSwgKEpTQzo6U3BlY0Jvb2xlYW4gfCBKU0M6OlNwZWNPdGhlcikp
CisgICAgOiBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVyKGpzVGVzdERPTUpJVEJvb2xlYW5OdWxs
YWJsZUF0dHIsIG51bGxwdHIsIEpTVGVzdERPTUpJVDo6aW5mbygpLCBET01KSVQ6OklETFJlc3Vs
dFR5cGVGaWx0ZXI8SURMTnVsbGFibGU8SURMQm9vbGVhbj4+KQogewogfQogCkBAIC03MTUsNyAr
NzU4LDcgQEAgc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdERPTUpJVEJ5dGVOdWxsYWJsZUF0
dHJHZXR0ZXIoRXhlY1N0YXRlJiBzdGF0ZSwgSlNUZXMKIH0KIAogVGVzdERPTUpJVEJ5dGVOdWxs
YWJsZUF0dHJET01KSVQ6OlRlc3RET01KSVRCeXRlTnVsbGFibGVBdHRyRE9NSklUKCkKLSAgICA6
IEpTQzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIoanNUZXN0RE9NSklUQnl0ZU51bGxhYmxlQXR0ciwg
bnVsbHB0ciwgSlNUZXN0RE9NSklUOjppbmZvKCksIChKU0M6OlNwZWNJbnQzMk9ubHkgfCBKU0M6
OlNwZWNPdGhlcikpCisgICAgOiBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVyKGpzVGVzdERPTUpJ
VEJ5dGVOdWxsYWJsZUF0dHIsIG51bGxwdHIsIEpTVGVzdERPTUpJVDo6aW5mbygpLCBET01KSVQ6
OklETFJlc3VsdFR5cGVGaWx0ZXI8SURMTnVsbGFibGU8SURMQnl0ZT4+KQogewogfQogCkBAIC03
NDIsNyArNzg1LDcgQEAgc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdERPTUpJVE9jdGV0TnVs
bGFibGVBdHRyR2V0dGVyKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVGUKIH0KIAogVGVzdERPTUpJVE9j
dGV0TnVsbGFibGVBdHRyRE9NSklUOjpUZXN0RE9NSklUT2N0ZXROdWxsYWJsZUF0dHJET01KSVQo
KQotICAgIDogSlNDOjpET01KSVQ6OkdldHRlclNldHRlcihqc1Rlc3RET01KSVRPY3RldE51bGxh
YmxlQXR0ciwgbnVsbHB0ciwgSlNUZXN0RE9NSklUOjppbmZvKCksIChKU0M6OlNwZWNJbnQzMk9u
bHkgfCBKU0M6OlNwZWNPdGhlcikpCisgICAgOiBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVyKGpz
VGVzdERPTUpJVE9jdGV0TnVsbGFibGVBdHRyLCBudWxscHRyLCBKU1Rlc3RET01KSVQ6OmluZm8o
KSwgRE9NSklUOjpJRExSZXN1bHRUeXBlRmlsdGVyPElETE51bGxhYmxlPElETE9jdGV0Pj4pCiB7
CiB9CiAKQEAgLTc2OSw3ICs4MTIsNyBAQCBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0RE9N
SklUU2hvcnROdWxsYWJsZUF0dHJHZXR0ZXIoRXhlY1N0YXRlJiBzdGF0ZSwgSlNUZQogfQogCiBU
ZXN0RE9NSklUU2hvcnROdWxsYWJsZUF0dHJET01KSVQ6OlRlc3RET01KSVRTaG9ydE51bGxhYmxl
QXR0ckRPTUpJVCgpCi0gICAgOiBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVyKGpzVGVzdERPTUpJ
VFNob3J0TnVsbGFibGVBdHRyLCBudWxscHRyLCBKU1Rlc3RET01KSVQ6OmluZm8oKSwgKEpTQzo6
U3BlY0ludDMyT25seSB8IEpTQzo6U3BlY090aGVyKSkKKyAgICA6IEpTQzo6RE9NSklUOjpHZXR0
ZXJTZXR0ZXIoanNUZXN0RE9NSklUU2hvcnROdWxsYWJsZUF0dHIsIG51bGxwdHIsIEpTVGVzdERP
TUpJVDo6aW5mbygpLCBET01KSVQ6OklETFJlc3VsdFR5cGVGaWx0ZXI8SURMTnVsbGFibGU8SURM
U2hvcnQ+PikKIHsKIH0KIApAQCAtNzk2LDcgKzgzOSw3IEBAIHN0YXRpYyBpbmxpbmUgSlNWYWx1
ZSBqc1Rlc3RET01KSVRVbnNpZ25lZFNob3J0TnVsbGFibGVBdHRyR2V0dGVyKEV4ZWNTdGF0ZSYg
c3RhCiB9CiAKIFRlc3RET01KSVRVbnNpZ25lZFNob3J0TnVsbGFibGVBdHRyRE9NSklUOjpUZXN0
RE9NSklUVW5zaWduZWRTaG9ydE51bGxhYmxlQXR0ckRPTUpJVCgpCi0gICAgOiBKU0M6OkRPTUpJ
VDo6R2V0dGVyU2V0dGVyKGpzVGVzdERPTUpJVFVuc2lnbmVkU2hvcnROdWxsYWJsZUF0dHIsIG51
bGxwdHIsIEpTVGVzdERPTUpJVDo6aW5mbygpLCAoSlNDOjpTcGVjSW50MzJPbmx5IHwgSlNDOjpT
cGVjT3RoZXIpKQorICAgIDogSlNDOjpET01KSVQ6OkdldHRlclNldHRlcihqc1Rlc3RET01KSVRV
bnNpZ25lZFNob3J0TnVsbGFibGVBdHRyLCBudWxscHRyLCBKU1Rlc3RET01KSVQ6OmluZm8oKSwg
RE9NSklUOjpJRExSZXN1bHRUeXBlRmlsdGVyPElETE51bGxhYmxlPElETFVuc2lnbmVkU2hvcnQ+
PikKIHsKIH0KIApAQCAtODIzLDcgKzg2Niw3IEBAIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rl
c3RET01KSVRMb25nTnVsbGFibGVBdHRyR2V0dGVyKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVGVzCiB9
CiAKIFRlc3RET01KSVRMb25nTnVsbGFibGVBdHRyRE9NSklUOjpUZXN0RE9NSklUTG9uZ051bGxh
YmxlQXR0ckRPTUpJVCgpCi0gICAgOiBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVyKGpzVGVzdERP
TUpJVExvbmdOdWxsYWJsZUF0dHIsIG51bGxwdHIsIEpTVGVzdERPTUpJVDo6aW5mbygpLCAoSlND
OjpTcGVjSW50MzJPbmx5IHwgSlNDOjpTcGVjT3RoZXIpKQorICAgIDogSlNDOjpET01KSVQ6Okdl
dHRlclNldHRlcihqc1Rlc3RET01KSVRMb25nTnVsbGFibGVBdHRyLCBudWxscHRyLCBKU1Rlc3RE
T01KSVQ6OmluZm8oKSwgRE9NSklUOjpJRExSZXN1bHRUeXBlRmlsdGVyPElETE51bGxhYmxlPElE
TExvbmc+PikKIHsKIH0KIApAQCAtODUwLDcgKzg5Myw3IEBAIHN0YXRpYyBpbmxpbmUgSlNWYWx1
ZSBqc1Rlc3RET01KSVRVbnNpZ25lZExvbmdOdWxsYWJsZUF0dHJHZXR0ZXIoRXhlY1N0YXRlJiBz
dGF0CiB9CiAKIFRlc3RET01KSVRVbnNpZ25lZExvbmdOdWxsYWJsZUF0dHJET01KSVQ6OlRlc3RE
T01KSVRVbnNpZ25lZExvbmdOdWxsYWJsZUF0dHJET01KSVQoKQotICAgIDogSlNDOjpET01KSVQ6
OkdldHRlclNldHRlcihqc1Rlc3RET01KSVRVbnNpZ25lZExvbmdOdWxsYWJsZUF0dHIsIG51bGxw
dHIsIEpTVGVzdERPTUpJVDo6aW5mbygpLCAoSlNDOjpTcGVjQnl0ZWNvZGVOdW1iZXIgfCBKU0M6
OlNwZWNPdGhlcikpCisgICAgOiBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVyKGpzVGVzdERPTUpJ
VFVuc2lnbmVkTG9uZ051bGxhYmxlQXR0ciwgbnVsbHB0ciwgSlNUZXN0RE9NSklUOjppbmZvKCks
IERPTUpJVDo6SURMUmVzdWx0VHlwZUZpbHRlcjxJRExOdWxsYWJsZTxJRExVbnNpZ25lZExvbmc+
PikKIHsKIH0KIApAQCAtODc3LDcgKzkyMCw3IEBAIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rl
c3RET01KSVRMb25nTG9uZ051bGxhYmxlQXR0ckdldHRlcihFeGVjU3RhdGUmIHN0YXRlLCBKCiB9
CiAKIFRlc3RET01KSVRMb25nTG9uZ051bGxhYmxlQXR0ckRPTUpJVDo6VGVzdERPTUpJVExvbmdM
b25nTnVsbGFibGVBdHRyRE9NSklUKCkKLSAgICA6IEpTQzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIo
anNUZXN0RE9NSklUTG9uZ0xvbmdOdWxsYWJsZUF0dHIsIG51bGxwdHIsIEpTVGVzdERPTUpJVDo6
aW5mbygpLCAoSlNDOjpTcGVjQnl0ZWNvZGVOdW1iZXIgfCBKU0M6OlNwZWNPdGhlcikpCisgICAg
OiBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVyKGpzVGVzdERPTUpJVExvbmdMb25nTnVsbGFibGVB
dHRyLCBudWxscHRyLCBKU1Rlc3RET01KSVQ6OmluZm8oKSwgRE9NSklUOjpJRExSZXN1bHRUeXBl
RmlsdGVyPElETE51bGxhYmxlPElETExvbmdMb25nPj4pCiB7CiB9CiAKQEAgLTkwNCw3ICs5NDcs
NyBAQCBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0RE9NSklUVW5zaWduZWRMb25nTG9uZ051
bGxhYmxlQXR0ckdldHRlcihFeGVjU3RhdGUmCiB9CiAKIFRlc3RET01KSVRVbnNpZ25lZExvbmdM
b25nTnVsbGFibGVBdHRyRE9NSklUOjpUZXN0RE9NSklUVW5zaWduZWRMb25nTG9uZ051bGxhYmxl
QXR0ckRPTUpJVCgpCi0gICAgOiBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVyKGpzVGVzdERPTUpJ
VFVuc2lnbmVkTG9uZ0xvbmdOdWxsYWJsZUF0dHIsIG51bGxwdHIsIEpTVGVzdERPTUpJVDo6aW5m
bygpLCAoSlNDOjpTcGVjQnl0ZWNvZGVOdW1iZXIgfCBKU0M6OlNwZWNPdGhlcikpCisgICAgOiBK
U0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVyKGpzVGVzdERPTUpJVFVuc2lnbmVkTG9uZ0xvbmdOdWxs
YWJsZUF0dHIsIG51bGxwdHIsIEpTVGVzdERPTUpJVDo6aW5mbygpLCBET01KSVQ6OklETFJlc3Vs
dFR5cGVGaWx0ZXI8SURMTnVsbGFibGU8SURMVW5zaWduZWRMb25nTG9uZz4+KQogewogfQogCkBA
IC05MzEsNyArOTc0LDcgQEAgc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdERPTUpJVEZsb2F0
TnVsbGFibGVBdHRyR2V0dGVyKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVGUKIH0KIAogVGVzdERPTUpJ
VEZsb2F0TnVsbGFibGVBdHRyRE9NSklUOjpUZXN0RE9NSklURmxvYXROdWxsYWJsZUF0dHJET01K
SVQoKQotICAgIDogSlNDOjpET01KSVQ6OkdldHRlclNldHRlcihqc1Rlc3RET01KSVRGbG9hdE51
bGxhYmxlQXR0ciwgbnVsbHB0ciwgSlNUZXN0RE9NSklUOjppbmZvKCksIChKU0M6OlNwZWNCeXRl
Y29kZU51bWJlciB8IEpTQzo6U3BlY090aGVyKSkKKyAgICA6IEpTQzo6RE9NSklUOjpHZXR0ZXJT
ZXR0ZXIoanNUZXN0RE9NSklURmxvYXROdWxsYWJsZUF0dHIsIG51bGxwdHIsIEpTVGVzdERPTUpJ
VDo6aW5mbygpLCBET01KSVQ6OklETFJlc3VsdFR5cGVGaWx0ZXI8SURMTnVsbGFibGU8SURMRmxv
YXQ+PikKIHsKIH0KIApAQCAtOTU4LDcgKzEwMDEsNyBAQCBzdGF0aWMgaW5saW5lIEpTVmFsdWUg
anNUZXN0RE9NSklUVW5yZXN0cmljdGVkRmxvYXROdWxsYWJsZUF0dHJHZXR0ZXIoRXhlY1N0YXRl
JgogfQogCiBUZXN0RE9NSklUVW5yZXN0cmljdGVkRmxvYXROdWxsYWJsZUF0dHJET01KSVQ6OlRl
c3RET01KSVRVbnJlc3RyaWN0ZWRGbG9hdE51bGxhYmxlQXR0ckRPTUpJVCgpCi0gICAgOiBKU0M6
OkRPTUpJVDo6R2V0dGVyU2V0dGVyKGpzVGVzdERPTUpJVFVucmVzdHJpY3RlZEZsb2F0TnVsbGFi
bGVBdHRyLCBudWxscHRyLCBKU1Rlc3RET01KSVQ6OmluZm8oKSwgKEpTQzo6U3BlY0J5dGVjb2Rl
TnVtYmVyIHwgSlNDOjpTcGVjT3RoZXIpKQorICAgIDogSlNDOjpET01KSVQ6OkdldHRlclNldHRl
cihqc1Rlc3RET01KSVRVbnJlc3RyaWN0ZWRGbG9hdE51bGxhYmxlQXR0ciwgbnVsbHB0ciwgSlNU
ZXN0RE9NSklUOjppbmZvKCksIERPTUpJVDo6SURMUmVzdWx0VHlwZUZpbHRlcjxJRExOdWxsYWJs
ZTxJRExVbnJlc3RyaWN0ZWRGbG9hdD4+KQogewogfQogCkBAIC05ODUsNyArMTAyOCw3IEBAIHN0
YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RET01KSVREb3VibGVOdWxsYWJsZUF0dHJHZXR0ZXIo
RXhlY1N0YXRlJiBzdGF0ZSwgSlNUCiB9CiAKIFRlc3RET01KSVREb3VibGVOdWxsYWJsZUF0dHJE
T01KSVQ6OlRlc3RET01KSVREb3VibGVOdWxsYWJsZUF0dHJET01KSVQoKQotICAgIDogSlNDOjpE
T01KSVQ6OkdldHRlclNldHRlcihqc1Rlc3RET01KSVREb3VibGVOdWxsYWJsZUF0dHIsIG51bGxw
dHIsIEpTVGVzdERPTUpJVDo6aW5mbygpLCAoSlNDOjpTcGVjQnl0ZWNvZGVOdW1iZXIgfCBKU0M6
OlNwZWNPdGhlcikpCisgICAgOiBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVyKGpzVGVzdERPTUpJ
VERvdWJsZU51bGxhYmxlQXR0ciwgbnVsbHB0ciwgSlNUZXN0RE9NSklUOjppbmZvKCksIERPTUpJ
VDo6SURMUmVzdWx0VHlwZUZpbHRlcjxJRExOdWxsYWJsZTxJRExEb3VibGU+PikKIHsKIH0KIApA
QCAtMTAxMiw3ICsxMDU1LDcgQEAgc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdERPTUpJVFVu
cmVzdHJpY3RlZERvdWJsZU51bGxhYmxlQXR0ckdldHRlcihFeGVjU3RhdGUKIH0KIAogVGVzdERP
TUpJVFVucmVzdHJpY3RlZERvdWJsZU51bGxhYmxlQXR0ckRPTUpJVDo6VGVzdERPTUpJVFVucmVz
dHJpY3RlZERvdWJsZU51bGxhYmxlQXR0ckRPTUpJVCgpCi0gICAgOiBKU0M6OkRPTUpJVDo6R2V0
dGVyU2V0dGVyKGpzVGVzdERPTUpJVFVucmVzdHJpY3RlZERvdWJsZU51bGxhYmxlQXR0ciwgbnVs
bHB0ciwgSlNUZXN0RE9NSklUOjppbmZvKCksIChKU0M6OlNwZWNCeXRlY29kZU51bWJlciB8IEpT
Qzo6U3BlY090aGVyKSkKKyAgICA6IEpTQzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIoanNUZXN0RE9N
SklUVW5yZXN0cmljdGVkRG91YmxlTnVsbGFibGVBdHRyLCBudWxscHRyLCBKU1Rlc3RET01KSVQ6
OmluZm8oKSwgRE9NSklUOjpJRExSZXN1bHRUeXBlRmlsdGVyPElETE51bGxhYmxlPElETFVucmVz
dHJpY3RlZERvdWJsZT4+KQogewogfQogCkBAIC0xMDM5LDcgKzEwODIsNyBAQCBzdGF0aWMgaW5s
aW5lIEpTVmFsdWUganNUZXN0RE9NSklURG9tU3RyaW5nTnVsbGFibGVBdHRyR2V0dGVyKEV4ZWNT
dGF0ZSYgc3RhdGUsCiB9CiAKIFRlc3RET01KSVREb21TdHJpbmdOdWxsYWJsZUF0dHJET01KSVQ6
OlRlc3RET01KSVREb21TdHJpbmdOdWxsYWJsZUF0dHJET01KSVQoKQotICAgIDogSlNDOjpET01K
SVQ6OkdldHRlclNldHRlcihqc1Rlc3RET01KSVREb21TdHJpbmdOdWxsYWJsZUF0dHIsIG51bGxw
dHIsIEpTVGVzdERPTUpJVDo6aW5mbygpLCAoSlNDOjpTcGVjU3RyaW5nIHwgSlNDOjpTcGVjT3Ro
ZXIpKQorICAgIDogSlNDOjpET01KSVQ6OkdldHRlclNldHRlcihqc1Rlc3RET01KSVREb21TdHJp
bmdOdWxsYWJsZUF0dHIsIG51bGxwdHIsIEpTVGVzdERPTUpJVDo6aW5mbygpLCBET01KSVQ6OklE
TFJlc3VsdFR5cGVGaWx0ZXI8SURMTnVsbGFibGU8SURMRE9NU3RyaW5nPj4pCiB7CiB9CiAKQEAg
LTEwNjYsNyArMTEwOSw3IEBAIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RET01KSVRCeXRl
U3RyaW5nTnVsbGFibGVBdHRyR2V0dGVyKEV4ZWNTdGF0ZSYgc3RhdGUsCiB9CiAKIFRlc3RET01K
SVRCeXRlU3RyaW5nTnVsbGFibGVBdHRyRE9NSklUOjpUZXN0RE9NSklUQnl0ZVN0cmluZ051bGxh
YmxlQXR0ckRPTUpJVCgpCi0gICAgOiBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVyKGpzVGVzdERP
TUpJVEJ5dGVTdHJpbmdOdWxsYWJsZUF0dHIsIG51bGxwdHIsIEpTVGVzdERPTUpJVDo6aW5mbygp
LCAoSlNDOjpTcGVjU3RyaW5nIHwgSlNDOjpTcGVjT3RoZXIpKQorICAgIDogSlNDOjpET01KSVQ6
OkdldHRlclNldHRlcihqc1Rlc3RET01KSVRCeXRlU3RyaW5nTnVsbGFibGVBdHRyLCBudWxscHRy
LCBKU1Rlc3RET01KSVQ6OmluZm8oKSwgRE9NSklUOjpJRExSZXN1bHRUeXBlRmlsdGVyPElETE51
bGxhYmxlPElETEJ5dGVTdHJpbmc+PikKIHsKIH0KIApAQCAtMTA5Myw3ICsxMTM2LDcgQEAgc3Rh
dGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdERPTUpJVFVzdlN0cmluZ051bGxhYmxlQXR0ckdldHRl
cihFeGVjU3RhdGUmIHN0YXRlLAogfQogCiBUZXN0RE9NSklUVXN2U3RyaW5nTnVsbGFibGVBdHRy
RE9NSklUOjpUZXN0RE9NSklUVXN2U3RyaW5nTnVsbGFibGVBdHRyRE9NSklUKCkKLSAgICA6IEpT
Qzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIoanNUZXN0RE9NSklUVXN2U3RyaW5nTnVsbGFibGVBdHRy
LCBudWxscHRyLCBKU1Rlc3RET01KSVQ6OmluZm8oKSwgKEpTQzo6U3BlY1N0cmluZyB8IEpTQzo6
U3BlY090aGVyKSkKKyAgICA6IEpTQzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIoanNUZXN0RE9NSklU
VXN2U3RyaW5nTnVsbGFibGVBdHRyLCBudWxscHRyLCBKU1Rlc3RET01KSVQ6OmluZm8oKSwgRE9N
SklUOjpJRExSZXN1bHRUeXBlRmlsdGVyPElETE51bGxhYmxlPElETFVTVlN0cmluZz4+KQogewog
fQogCkBAIC0xMTIwLDcgKzExNjMsNyBAQCBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0RE9N
SklUTm9kZU51bGxhYmxlQXR0ckdldHRlcihFeGVjU3RhdGUmIHN0YXRlLCBKU1RlcwogfQogCiBU
ZXN0RE9NSklUTm9kZU51bGxhYmxlQXR0ckRPTUpJVDo6VGVzdERPTUpJVE5vZGVOdWxsYWJsZUF0
dHJET01KSVQoKQotICAgIDogSlNDOjpET01KSVQ6OkdldHRlclNldHRlcihqc1Rlc3RET01KSVRO
b2RlTnVsbGFibGVBdHRyLCBudWxscHRyLCBKU1Rlc3RET01KSVQ6OmluZm8oKSwgU3BlY0hlYXBU
b3ApCisgICAgOiBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVyKGpzVGVzdERPTUpJVE5vZGVOdWxs
YWJsZUF0dHIsIG51bGxwdHIsIEpTVGVzdERPTUpJVDo6aW5mbygpLCBET01KSVQ6OklETFJlc3Vs
dFR5cGVGaWx0ZXI8SURMTnVsbGFibGU8SURMSW50ZXJmYWNlPE5vZGU+Pj4pCiB7CiB9CiAKQEAg
LTExNTksNiArMTIwMiwxNjkgQEAgSlNWYWx1ZSBKU1Rlc3RET01KSVQ6OmdldENvbnN0cnVjdG9y
KFZNJiB2bSwgY29uc3QgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKICAgICByZXR1cm4g
Z2V0RE9NQ29uc3RydWN0b3I8SlNUZXN0RE9NSklUQ29uc3RydWN0b3I+KHZtLCAqanNDYXN0PGNv
bnN0IEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KSk7CiB9CiAKK3N0YXRpYyBpbmxp
bmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RET01KSVRQcm90b3R5cGVGdW5jdGlvbkdldEF0
dHJpYnV0ZUNhbGxlcihKU0M6OkV4ZWNTdGF0ZSosIEpTVGVzdERPTUpJVCosIEpTQzo6VGhyb3dT
Y29wZSYpOworCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdERPTUpJVFByb3Rv
dHlwZUZ1bmN0aW9uR2V0QXR0cmlidXRlKEV4ZWNTdGF0ZSogc3RhdGUpCit7CisgICAgcmV0dXJu
IEJpbmRpbmdDYWxsZXI8SlNUZXN0RE9NSklUPjo6Y2FsbE9wZXJhdGlvbjxqc1Rlc3RET01KSVRQ
cm90b3R5cGVGdW5jdGlvbkdldEF0dHJpYnV0ZUNhbGxlcj4oc3RhdGUsICJnZXRBdHRyaWJ1dGUi
KTsKK30KKworc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdERPTUpJVFBy
b3RvdHlwZUZ1bmN0aW9uR2V0QXR0cmlidXRlQ2FsbGVyKEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwg
SlNUZXN0RE9NSklUKiBjYXN0ZWRUaGlzLCBKU0M6OlRocm93U2NvcGUmIHRocm93U2NvcGUpCit7
CisgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7
CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKKyAgICBpZiAoVU5MSUtF
TFkoc3RhdGUtPmFyZ3VtZW50Q291bnQoKSA8IDEpKQorICAgICAgICByZXR1cm4gdGhyb3dWTUVy
cm9yKHN0YXRlLCB0aHJvd1Njb3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0
ZSkpOworICAgIGF1dG8gbmFtZSA9IGNvbnZlcnQ8SURMRE9NU3RyaW5nPigqc3RhdGUsIHN0YXRl
LT51bmNoZWNrZWRBcmd1bWVudCgwKSwgU3RyaW5nQ29udmVyc2lvbkNvbmZpZ3VyYXRpb246Ok5v
cm1hbCk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1
ZSgpKTsKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IHRvSlM8SURMTnVsbGFibGU8SURMRE9NU3RyaW5n
Pj4oKnN0YXRlLCBpbXBsLmdldEF0dHJpYnV0ZShXVEZNb3ZlKG5hbWUpKSk7CisgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOworfQorCitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgdW5zYWZlSnNUZXN0RE9NSklUUHJvdG90eXBlRnVuY3Rpb25HZXRBdHRyaWJ1dGUo
SlNDOjpFeGVjU3RhdGUqIHN0YXRlLCBKU1Rlc3RET01KSVQqIGNhc3RlZFRoaXMsIERPTUpJVDo6
SURMSlNBcmd1bWVudFR5cGU8SURMRE9NU3RyaW5nPiBlbmNvZGVkTmFtZSkKK3sKKyAgICBVTlVT
RURfUEFSQU0oc3RhdGUpOworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIEpTQzo6TmF0
aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcigmdm0sIHN0YXRlKTsKKyAgICBhdXRvIHRocm93U2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhp
cy0+d3JhcHBlZCgpOworICAgIGF1dG8gbmFtZSA9IERPTUpJVDo6RGlyZWN0Q29udmVydGVyPElE
TERPTVN0cmluZz46OmRpcmVjdENvbnZlcnQ8U3RyaW5nQ29udmVyc2lvbkNvbmZpZ3VyYXRpb246
Ok5vcm1hbD4oKnN0YXRlLCBlbmNvZGVkTmFtZSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0
aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IHRvSlM8
SURMTnVsbGFibGU8SURMRE9NU3RyaW5nPj4oKnN0YXRlLCBpbXBsLmdldEF0dHJpYnV0ZShXVEZN
b3ZlKG5hbWUpKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOworfQorCitz
dGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0RE9NSklUUHJvdG90eXBlRnVu
Y3Rpb25JdGVtQ2FsbGVyKEpTQzo6RXhlY1N0YXRlKiwgSlNUZXN0RE9NSklUKiwgSlNDOjpUaHJv
d1Njb3BlJik7CisKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0RE9NSklUUHJv
dG90eXBlRnVuY3Rpb25JdGVtKEV4ZWNTdGF0ZSogc3RhdGUpCit7CisgICAgcmV0dXJuIEJpbmRp
bmdDYWxsZXI8SlNUZXN0RE9NSklUPjo6Y2FsbE9wZXJhdGlvbjxqc1Rlc3RET01KSVRQcm90b3R5
cGVGdW5jdGlvbkl0ZW1DYWxsZXI+KHN0YXRlLCAiaXRlbSIpOworfQorCitzdGF0aWMgaW5saW5l
IEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0RE9NSklUUHJvdG90eXBlRnVuY3Rpb25JdGVtQ2Fs
bGVyKEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgSlNUZXN0RE9NSklUKiBjYXN0ZWRUaGlzLCBKU0M6
OlRocm93U2NvcGUmIHRocm93U2NvcGUpCit7CisgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKKyAg
ICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMt
PndyYXBwZWQoKTsKKyAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmFyZ3VtZW50Q291bnQoKSA8IDIp
KQorICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlLCBjcmVhdGVO
b3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOworICAgIGF1dG8geCA9IGNvbnZlcnQ8SURM
VW5zaWduZWRTaG9ydD4oKnN0YXRlLCBzdGF0ZS0+dW5jaGVja2VkQXJndW1lbnQoMCksIEludGVn
ZXJDb252ZXJzaW9uQ29uZmlndXJhdGlvbjo6Tm9ybWFsKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOworICAgIGF1dG8geSA9IGNvbnZlcnQ8
SURMVW5zaWduZWRTaG9ydD4oKnN0YXRlLCBzdGF0ZS0+dW5jaGVja2VkQXJndW1lbnQoMSksIElu
dGVnZXJDb252ZXJzaW9uQ29uZmlndXJhdGlvbjo6Tm9ybWFsKTsKKyAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOworICAgIEpTVmFsdWUgcmVzdWx0
ID0gdG9KUzxJRExET01TdHJpbmc+KCpzdGF0ZSwgaW1wbC5pdGVtKFdURk1vdmUoeCksIFdURk1v
dmUoeSkpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7Cit9CisKK0pTQzo6
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCB1bnNhZmVKc1Rlc3RET01KSVRQcm90b3R5cGVG
dW5jdGlvbkl0ZW0oSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCBKU1Rlc3RET01KSVQqIGNhc3RlZFRo
aXMsIERPTUpJVDo6SURMSlNBcmd1bWVudFR5cGU8SURMVW5zaWduZWRTaG9ydD4gZW5jb2RlZFgs
IERPTUpJVDo6SURMSlNBcmd1bWVudFR5cGU8SURMVW5zaWduZWRTaG9ydD4gZW5jb2RlZFkpCit7
CisgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAg
ICBKU0M6Ok5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIoJnZtLCBzdGF0ZSk7CisgICAgYXV0
byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgYXV0byYgaW1wbCA9
IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKKyAgICBhdXRvIHggPSBET01KSVQ6OkRpcmVjdENvbnZl
cnRlcjxJRExVbnNpZ25lZFNob3J0Pjo6ZGlyZWN0Q29udmVydDxJbnRlZ2VyQ29udmVyc2lvbkNv
bmZpZ3VyYXRpb246Ok5vcm1hbD4oKnN0YXRlLCBlbmNvZGVkWCk7CisgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKKyAgICBhdXRvIHkgPSBET01K
SVQ6OkRpcmVjdENvbnZlcnRlcjxJRExVbnNpZ25lZFNob3J0Pjo6ZGlyZWN0Q29udmVydDxJbnRl
Z2VyQ29udmVyc2lvbkNvbmZpZ3VyYXRpb246Ok5vcm1hbD4oKnN0YXRlLCBlbmNvZGVkWSk7Cisg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKKyAg
ICBKU1ZhbHVlIHJlc3VsdCA9IHRvSlM8SURMRE9NU3RyaW5nPigqc3RhdGUsIGltcGwuaXRlbShX
VEZNb3ZlKHgpLCBXVEZNb3ZlKHkpKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1
bHQpOworfQorCitzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0RE9NSklU
UHJvdG90eXBlRnVuY3Rpb25IYXNBdHRyaWJ1dGVDYWxsZXIoSlNDOjpFeGVjU3RhdGUqLCBKU1Rl
c3RET01KSVQqLCBKU0M6OlRocm93U2NvcGUmKTsKKworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBqc1Rlc3RET01KSVRQcm90b3R5cGVGdW5jdGlvbkhhc0F0dHJpYnV0ZShFeGVjU3RhdGUq
IHN0YXRlKQoreworICAgIHJldHVybiBCaW5kaW5nQ2FsbGVyPEpTVGVzdERPTUpJVD46OmNhbGxP
cGVyYXRpb248anNUZXN0RE9NSklUUHJvdG90eXBlRnVuY3Rpb25IYXNBdHRyaWJ1dGVDYWxsZXI+
KHN0YXRlLCAiaGFzQXR0cmlidXRlIik7Cit9CisKK3N0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVk
SlNWYWx1ZSBqc1Rlc3RET01KSVRQcm90b3R5cGVGdW5jdGlvbkhhc0F0dHJpYnV0ZUNhbGxlcihK
U0M6OkV4ZWNTdGF0ZSogc3RhdGUsIEpTVGVzdERPTUpJVCogY2FzdGVkVGhpcywgSlNDOjpUaHJv
d1Njb3BlJiB0aHJvd1Njb3BlKQoreworICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CisgICAgVU5V
U0VEX1BBUkFNKHRocm93U2NvcGUpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFw
cGVkKCk7CisgICAgSlNWYWx1ZSByZXN1bHQgPSB0b0pTPElETEJvb2xlYW4+KGltcGwuaGFzQXR0
cmlidXRlKCkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKK30KKworSlND
OjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHVuc2FmZUpzVGVzdERPTUpJVFByb3RvdHlw
ZUZ1bmN0aW9uSGFzQXR0cmlidXRlKEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgSlNUZXN0RE9NSklU
KiBjYXN0ZWRUaGlzKQoreworICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CisgICAgVk0mIHZtID0g
c3RhdGUtPnZtKCk7CisgICAgSlNDOjpOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKCZ2bSwg
c3RhdGUpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwor
ICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CisgICAgSlNWYWx1ZSByZXN1
bHQgPSB0b0pTPElETEJvb2xlYW4+KGltcGwuaGFzQXR0cmlidXRlKCkpOworICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKK30KKworc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRK
U1ZhbHVlIGpzVGVzdERPTUpJVFByb3RvdHlwZUZ1bmN0aW9uR2V0RWxlbWVudEJ5SWRDYWxsZXIo
SlNDOjpFeGVjU3RhdGUqLCBKU1Rlc3RET01KSVQqLCBKU0M6OlRocm93U2NvcGUmKTsKKworRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RET01KSVRQcm90b3R5cGVGdW5jdGlvbkdl
dEVsZW1lbnRCeUlkKEV4ZWNTdGF0ZSogc3RhdGUpCit7CisgICAgcmV0dXJuIEJpbmRpbmdDYWxs
ZXI8SlNUZXN0RE9NSklUPjo6Y2FsbE9wZXJhdGlvbjxqc1Rlc3RET01KSVRQcm90b3R5cGVGdW5j
dGlvbkdldEVsZW1lbnRCeUlkQ2FsbGVyPihzdGF0ZSwgImdldEVsZW1lbnRCeUlkIik7Cit9CisK
K3N0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RET01KSVRQcm90b3R5cGVG
dW5jdGlvbkdldEVsZW1lbnRCeUlkQ2FsbGVyKEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgSlNUZXN0
RE9NSklUKiBjYXN0ZWRUaGlzLCBKU0M6OlRocm93U2NvcGUmIHRocm93U2NvcGUpCit7CisgICAg
VU5VU0VEX1BBUkFNKHN0YXRlKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CisgICAg
YXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKKyAgICBpZiAoVU5MSUtFTFkoc3Rh
dGUtPmFyZ3VtZW50Q291bnQoKSA8IDEpKQorICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0
YXRlLCB0aHJvd1Njb3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOwor
ICAgIGF1dG8gZWxlbWVudElkID0gQXRvbWljU3RyaW5nKHN0YXRlLT51bmNoZWNrZWRBcmd1bWVu
dCgwKS50b1N0cmluZyhzdGF0ZSktPnRvRXhpc3RpbmdBdG9taWNTdHJpbmcoc3RhdGUpKTsKKyAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOworICAg
IEpTVmFsdWUgcmVzdWx0ID0gdG9KUzxJRExJbnRlcmZhY2U8RWxlbWVudD4+KCpzdGF0ZSwgKmNh
c3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBpbXBsLmdldEVsZW1lbnRCeUlkKFdURk1vdmUoZWxl
bWVudElkKSkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKK30KKworSlND
OjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHVuc2FmZUpzVGVzdERPTUpJVFByb3RvdHlw
ZUZ1bmN0aW9uR2V0RWxlbWVudEJ5SWQoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCBKU1Rlc3RET01K
SVQqIGNhc3RlZFRoaXMsIERPTUpJVDo6SURMSlNBcmd1bWVudFR5cGU8SURMRE9NU3RyaW5nPiBl
bmNvZGVkRWxlbWVudElkKQoreworICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CisgICAgVk0mIHZt
ID0gc3RhdGUtPnZtKCk7CisgICAgSlNDOjpOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKCZ2
bSwgc3RhdGUpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CisgICAgYXV0byBlbGVt
ZW50SWQgPSBBdG9taWNTdHJpbmcoZW5jb2RlZEVsZW1lbnRJZC0+dG9FeGlzdGluZ0F0b21pY1N0
cmluZyhzdGF0ZSkpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2Rl
ZEpTVmFsdWUoKSk7CisgICAgSlNWYWx1ZSByZXN1bHQgPSB0b0pTPElETEludGVyZmFjZTxFbGVt
ZW50Pj4oKnN0YXRlLCAqY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIGltcGwuZ2V0RWxlbWVu
dEJ5SWQoV1RGTW92ZShlbGVtZW50SWQpKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShy
ZXN1bHQpOworfQorCitzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0RE9N
SklUUHJvdG90eXBlRnVuY3Rpb25HZXRFbGVtZW50c0J5TmFtZUNhbGxlcihKU0M6OkV4ZWNTdGF0
ZSosIEpTVGVzdERPTUpJVCosIEpTQzo6VGhyb3dTY29wZSYpOworCitFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGpzVGVzdERPTUpJVFByb3RvdHlwZUZ1bmN0aW9uR2V0RWxlbWVudHNCeU5h
bWUoRXhlY1N0YXRlKiBzdGF0ZSkKK3sKKyAgICByZXR1cm4gQmluZGluZ0NhbGxlcjxKU1Rlc3RE
T01KSVQ+OjpjYWxsT3BlcmF0aW9uPGpzVGVzdERPTUpJVFByb3RvdHlwZUZ1bmN0aW9uR2V0RWxl
bWVudHNCeU5hbWVDYWxsZXI+KHN0YXRlLCAiZ2V0RWxlbWVudHNCeU5hbWUiKTsKK30KKworc3Rh
dGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdERPTUpJVFByb3RvdHlwZUZ1bmN0
aW9uR2V0RWxlbWVudHNCeU5hbWVDYWxsZXIoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCBKU1Rlc3RE
T01KSVQqIGNhc3RlZFRoaXMsIEpTQzo6VGhyb3dTY29wZSYgdGhyb3dTY29wZSkKK3sKKyAgICBV
TlVTRURfUEFSQU0oc3RhdGUpOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKKyAgICBh
dXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOworICAgIGlmIChVTkxJS0VMWShzdGF0
ZS0+YXJndW1lbnRDb3VudCgpIDwgMSkpCisgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3Rh
dGUsIHRocm93U2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7Cisg
ICAgYXV0byBlbGVtZW50TmFtZSA9IHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgwKS50b1N0cmlu
ZyhzdGF0ZSktPnRvQXRvbWljU3RyaW5nKHN0YXRlKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOworICAgIEpTVmFsdWUgcmVzdWx0ID0gdG9K
UzxJRExJbnRlcmZhY2U8Tm9kZUxpc3Q+Pigqc3RhdGUsICpjYXN0ZWRUaGlzLT5nbG9iYWxPYmpl
Y3QoKSwgaW1wbC5nZXRFbGVtZW50c0J5TmFtZShXVEZNb3ZlKGVsZW1lbnROYW1lKSkpOworICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKK30KKworSlNDOjpFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIHVuc2FmZUpzVGVzdERPTUpJVFByb3RvdHlwZUZ1bmN0aW9uR2V0RWxl
bWVudHNCeU5hbWUoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCBKU1Rlc3RET01KSVQqIGNhc3RlZFRo
aXMsIERPTUpJVDo6SURMSlNBcmd1bWVudFR5cGU8SURMRE9NU3RyaW5nPiBlbmNvZGVkRWxlbWVu
dE5hbWUpCit7CisgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+
dm0oKTsKKyAgICBKU0M6Ok5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIoJnZtLCBzdGF0ZSk7
CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgYXV0
byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKKyAgICBhdXRvIGVsZW1lbnROYW1lID0g
ZW5jb2RlZEVsZW1lbnROYW1lLT50b0F0b21pY1N0cmluZyhzdGF0ZSk7CisgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKKyAgICBKU1ZhbHVlIHJl
c3VsdCA9IHRvSlM8SURMSW50ZXJmYWNlPE5vZGVMaXN0Pj4oKnN0YXRlLCAqY2FzdGVkVGhpcy0+
Z2xvYmFsT2JqZWN0KCksIGltcGwuZ2V0RWxlbWVudHNCeU5hbWUoV1RGTW92ZShlbGVtZW50TmFt
ZSkpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7Cit9CisKIHZvaWQgSlNU
ZXN0RE9NSklUOjp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0
b3IpCiB7CiAgICAgYXV0byogdGhpc09iamVjdCA9IGpzQ2FzdDxKU1Rlc3RET01KSVQqPihjZWxs
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0
RE9NSklULmlkbCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0RE9N
SklULmlkbAppbmRleCBiZTdlZDA0ZmY2M2RlNjg2YmM4NzY0ODI4MmI2YWFmNjRjMjc3M2U3Li5i
MzMzNjZiMTRhNDc0MTA3N2Y2MzFmNWMyZTg1MzdlNDE3NzA5MWIyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdERPTUpJVC5pZGwKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RET01KSVQuaWRsCkBAIC02Myw0
ICs2MywxMCBAQCBpbnRlcmZhY2UgVGVzdERPTUpJVCA6IE5vZGUgewogICAgIFtET01KSVRdIHJl
YWRvbmx5IGF0dHJpYnV0ZSBCeXRlU3RyaW5nPyBieXRlU3RyaW5nTnVsbGFibGVBdHRyOwogICAg
IFtET01KSVRdIHJlYWRvbmx5IGF0dHJpYnV0ZSBVU1ZTdHJpbmc/IHVzdlN0cmluZ051bGxhYmxl
QXR0cjsKICAgICBbRE9NSklUXSByZWFkb25seSBhdHRyaWJ1dGUgTm9kZT8gbm9kZU51bGxhYmxl
QXR0cjsKKworICAgIFtET01KSVQ9UmVhZERPTV0gRE9NU3RyaW5nPyBnZXRBdHRyaWJ1dGUoRE9N
U3RyaW5nIG5hbWUpOworICAgIFtET01KSVQ9UmVhZERPTV0gRE9NU3RyaW5nIGl0ZW0odW5zaWdu
ZWQgc2hvcnQgeCwgdW5zaWduZWQgc2hvcnQgeSk7CisgICAgW0RPTUpJVD1SZWFkRE9NXSBib29s
ZWFuIGhhc0F0dHJpYnV0ZSgpOworICAgIFtET01KSVQ9UmVhZERPTV0gRWxlbWVudCBnZXRFbGVt
ZW50QnlJZChbUmVxdWlyZXNFeGlzdGluZ0F0b21pY1N0cmluZ10gRE9NU3RyaW5nIGVsZW1lbnRJ
ZCk7CisgICAgW0RPTUpJVD1SZWFkRE9NXSBOb2RlTGlzdCBnZXRFbGVtZW50c0J5TmFtZShbQXRv
bWljU3RyaW5nXSBET01TdHJpbmcgZWxlbWVudE5hbWUpOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9FbGVtZW50LmlkbCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50Lmlk
bAppbmRleCA3MDU2MTczOGI5NzQ5YThkNzRhMGYxN2NhNjNhN2Y4ZmYxOTVlMWM2Li44MTk3NTE1
NzU5MTcwYjQxYjQzMzFkZmVmODYxZDEzZjEzOWNlZDUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vRWxlbWVudC5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaWRs
CkBAIC0yNiwyMCArMjYsMjAgQEAKIF0gaW50ZXJmYWNlIEVsZW1lbnQgOiBOb2RlIHsKICAgICBy
ZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nPyB0YWdOYW1lOwogCi0gICAgRE9NU3RyaW5nPyBn
ZXRBdHRyaWJ1dGUoRE9NU3RyaW5nIG5hbWUpOworICAgIFtET01KSVQ9UmVhZERPTV0gRE9NU3Ry
aW5nPyBnZXRBdHRyaWJ1dGUoRE9NU3RyaW5nIG5hbWUpOwogCiAgICAgW0NFUmVhY3Rpb25zLCBN
YXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCBzZXRBdHRyaWJ1dGUoRE9NU3RyaW5nIG5hbWUsIERPTVN0
cmluZyB2YWx1ZSk7CiAKICAgICBbQ0VSZWFjdGlvbnNdIHZvaWQgcmVtb3ZlQXR0cmlidXRlKERP
TVN0cmluZyBuYW1lKTsKLSAgICBBdHRyPyBnZXRBdHRyaWJ1dGVOb2RlKERPTVN0cmluZyBuYW1l
KTsKKyAgICBbRE9NSklUPVJlYWRET01dIEF0dHI/IGdldEF0dHJpYnV0ZU5vZGUoRE9NU3RyaW5n
IG5hbWUpOwogCiAgICAgW0NFUmVhY3Rpb25zLCBNYXlUaHJvd0V4Y2VwdGlvbl0gQXR0cj8gc2V0
QXR0cmlidXRlTm9kZShBdHRyIG5ld0F0dHIpOwogICAgIFtDRVJlYWN0aW9ucywgTWF5VGhyb3dF
eGNlcHRpb25dIEF0dHIgcmVtb3ZlQXR0cmlidXRlTm9kZShBdHRyIG9sZEF0dHIpOwogCi0gICAg
SFRNTENvbGxlY3Rpb24gZ2V0RWxlbWVudHNCeVRhZ05hbWUoRE9NU3RyaW5nIG5hbWUpOworICAg
IFtET01KSVQ9UmVhZERPTV0gSFRNTENvbGxlY3Rpb24gZ2V0RWxlbWVudHNCeVRhZ05hbWUoRE9N
U3RyaW5nIG5hbWUpOwogCiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIE5hbWVkTm9kZU1hcCBhdHRy
aWJ1dGVzOwotICAgIGJvb2xlYW4gaGFzQXR0cmlidXRlcygpOworICAgIFtET01KSVQ9UmVhZERP
TV0gYm9vbGVhbiBoYXNBdHRyaWJ1dGVzKCk7CiAKICAgICBET01TdHJpbmc/IGdldEF0dHJpYnV0
ZU5TKERPTVN0cmluZz8gbmFtZXNwYWNlVVJJLCBET01TdHJpbmcgbG9jYWxOYW1lKTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9taml0L0RPTUpJVEFic3RyYWN0SGVhcFJlcG9zaXRv
cnkuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9taml0L0RPTUpJVEFic3RyYWN0SGVhcFJlcG9zaXRv
cnkuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4M2ZiYTg5NzEzYjg2NjNkNGQ4
ZjI3ZWRjYmY3NGFmZTYzMTgyZDMxLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbWppdC9ET01KSVRBYnN0cmFjdEhlYXBSZXBv
c2l0b3J5LmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDcwICswLDAgQEAKLS8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
LSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoK
LSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5j
bHVkZSAiRE9NSklUQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5oIgotCi0jaW5jbHVkZSA8ZG9taml0
L0RPTUpJVEFic3RyYWN0SGVhcC5oPgotI2luY2x1ZGUgPHd0Zi9EYXRhTG9nLmg+Ci0jaW5jbHVk
ZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+Ci0KLSNpZiBFTkFCTEUoSklUKQotCi1uYW1lc3BhY2Ug
V2ViQ29yZSB7IG5hbWVzcGFjZSBET01KSVQgewotCi1zdGF0aWMgY29uc3QgYm9vbCB2ZXJib3Nl
ID0gZmFsc2U7Ci0KLUFic3RyYWN0SGVhcFJlcG9zaXRvcnk6OkFic3RyYWN0SGVhcFJlcG9zaXRv
cnkoKQotewotICAgIEpTQzo6RE9NSklUOjpBYnN0cmFjdEhlYXAgRE9NSGVhcCgiRE9NIik7Ci0j
ZGVmaW5lIERPTUpJVF9ERUZJTkVfSEVBUChuYW1lLCBwYXJlbnQpIEpTQzo6RE9NSklUOjpBYnN0
cmFjdEhlYXAgbmFtZSMjSGVhcCgjbmFtZSk7Ci0gICAgRE9NSklUX0FCU1RSQUNUX0hFQVBfTElT
VChET01KSVRfREVGSU5FX0hFQVApCi0jdW5kZWYgRE9NSklUX0RFRklORV9IRUFQCi0KLSNkZWZp
bmUgRE9NSklUX0lOSVRJQUxJWkVfSEVBUChuYW1lLCBwYXJlbnQpIG5hbWUjI0hlYXAuc2V0UGFy
ZW50KCZwYXJlbnQjI0hlYXApOwotICAgIERPTUpJVF9BQlNUUkFDVF9IRUFQX0xJU1QoRE9NSklU
X0lOSVRJQUxJWkVfSEVBUCkKLSN1bmRlZiBET01KSVRfSU5JVElBTElaRV9IRUFQCi0KLSAgICBE
T01IZWFwLmNvbXB1dGUoMCk7Ci0KLSNkZWZpbmUgRE9NSklUX0lOSVRJQUxJWkVfTUVNQkVSKG5h
bWUsIHBhcmVudCkgbmFtZSA9IG5hbWUjI0hlYXAucmFuZ2UoKTsKLSAgICBET01KSVRfQUJTVFJB
Q1RfSEVBUF9MSVNUKERPTUpJVF9JTklUSUFMSVpFX01FTUJFUikKLSN1bmRlZiBET01KSVRfSU5J
VElBTElaRV9NRU1CRVIKLQotICAgIGlmICh2ZXJib3NlKSB7Ci0gICAgICAgIGRhdGFMb2coIkRP
TUpJVCBIZWFwIFJlcG9zaXRvcnk6XG4iKTsKLSAgICAgICAgRE9NSGVhcC5kZWVwRHVtcChXVEY6
OmRhdGFGaWxlKCkpOwotICAgIH0KLX0KLQotY29uc3QgQWJzdHJhY3RIZWFwUmVwb3NpdG9yeSYg
QWJzdHJhY3RIZWFwUmVwb3NpdG9yeTo6c2hhcmVkKCkKLXsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0
cm95ZWQ8QWJzdHJhY3RIZWFwUmVwb3NpdG9yeT4gcmVwb3NpdG9yeTsKLSAgICByZXR1cm4gcmVw
b3NpdG9yeS5nZXQoKTsKLX0KLQotfSB9Ci0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZG9taml0L0RPTUpJVEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaCBiL1NvdXJjZS9XZWJD
b3JlL2RvbWppdC9ET01KSVRBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmgKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDgxOTBhMWE5NGJiYzc5ZGU1ZjJlM2JlZDA5OTgzNDc5ZmE0YmQ2NTYu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dl
YkNvcmUvZG9taml0L0RPTUpJVEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaAorKysgL2Rldi9udWxs
CkBAIC0xLDY2ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBh
cmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
Ci0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
LSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2luY2x1ZGUgPGRvbWppdC9ET01KSVRIZWFwUmFuZ2Uu
aD4KLSNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KLSNpbmNsdWRlIDx3dGYvTm9uY29w
eWFibGUuaD4KLQotI2lmIEVOQUJMRShKSVQpCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsgbmFtZXNw
YWNlIERPTUpJVCB7Ci0KLS8vIERlc2NyaWJlIHlvdXIgYWJzdHJhY3QgaGVhcCBoaWVyYXJjaHkg
aGVyZS4KLS8vIFYoQWJzdHJhY3RIZWFwTmFtZSwgUGFyZW50KQotI2RlZmluZSBET01KSVRfQUJT
VFJBQ1RfSEVBUF9MSVNUKFYpIFwKLSAgICBWKE5vZGUsIERPTSkgXAotICAgIFYoTm9kZV9maXJz
dENoaWxkLCBOb2RlKSBcCi0gICAgVihOb2RlX2xhc3RDaGlsZCwgTm9kZSkgXAotICAgIFYoTm9k
ZV9wYXJlbnROb2RlLCBOb2RlKSBcCi0gICAgVihOb2RlX25leHRTaWJsaW5nLCBOb2RlKSBcCi0g
ICAgVihOb2RlX3ByZXZpb3VzU2libGluZywgTm9kZSkgXAotICAgIFYoTm9kZV9vd25lckRvY3Vt
ZW50LCBOb2RlKSBcCi0gICAgVihEb2N1bWVudCwgRE9NKSBcCi0gICAgVihEb2N1bWVudF9kb2N1
bWVudEVsZW1lbnQsIERvY3VtZW50KSBcCi0KLQotY2xhc3MgQWJzdHJhY3RIZWFwUmVwb3NpdG9y
eSB7Ci0gICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQWJzdHJhY3RIZWFwUmVwb3NpdG9yeSk7Ci1w
dWJsaWM6Ci0gICAgc3RhdGljIGNvbnN0IEFic3RyYWN0SGVhcFJlcG9zaXRvcnkmIHNoYXJlZCgp
OwotCi0gICAgSlNDOjpET01KSVQ6OkhlYXBSYW5nZSBET007Ci0KLSNkZWZpbmUgRE9NSklUX0RF
RklORV9NRU1CRVIobmFtZSwgcGFyZW50KSBKU0M6OkRPTUpJVDo6SGVhcFJhbmdlIG5hbWU7Ci0g
ICAgRE9NSklUX0FCU1RSQUNUX0hFQVBfTElTVChET01KSVRfREVGSU5FX01FTUJFUikKLSN1bmRl
ZiBET01KSVRfREVGSU5FX01FTUJFUgotCi0gICAgQWJzdHJhY3RIZWFwUmVwb3NpdG9yeSgpOwot
fTsKLQotfSB9Ci0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9taml0L0RP
TUpJVEFic3RyYWN0SGVhcFJlcG9zaXRvcnkueWFtbCBiL1NvdXJjZS9XZWJDb3JlL2RvbWppdC9E
T01KSVRBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LnlhbWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTJjNTg0NWUwNzg2
NzBkZGRhYzk3NzI5OTljY2I4ZWE3ZDAxYmRmMwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2RvbWppdC9ET01KSVRBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LnlhbWwKQEAgLTAsMCAr
MSwxMSBAQAorRE9NOgorICAgIFRyZWU6CisgICAgICAgIE5vZGU6CisgICAgICAgICAgICAtIE5v
ZGVfZmlyc3RDaGlsZAorICAgICAgICAgICAgLSBOb2RlX2xhc3RDaGlsZAorICAgICAgICAgICAg
LSBOb2RlX3BhcmVudE5vZGUKKyAgICAgICAgICAgIC0gTm9kZV9uZXh0U2libGluZworICAgICAg
ICAgICAgLSBOb2RlX3ByZXZpb3VzU2libGluZworICAgICAgICAgICAgLSBOb2RlX293bmVyRG9j
dW1lbnQKKyAgICAgICAgRG9jdW1lbnQ6CisgICAgICAgICAgICAtIERvY3VtZW50X2RvY3VtZW50
RWxlbWVudApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9taml0L0RPTUpJVElETENvbnZl
cnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbWppdC9ET01KSVRJRExDb252ZXJ0LmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNWUwMGFiZmNjYjg3NmRlYTE4MzJmMWMyMGFlZTNlZDc4YjEzNjg0OQotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbWppdC9ET01KSVRJRExDb252ZXJ0LmgKQEAgLTAsMCAr
MSw0OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiSURMVHlwZXMu
aCIKKyNpbmNsdWRlIDxieXRlY29kZS9TcGVjdWxhdGVkVHlwZS5oPgorI2luY2x1ZGUgPGRvbWpp
dC9ET01KSVRTaWduYXR1cmUuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeyBuYW1lc3BhY2UgRE9N
SklUIHsKKwordGVtcGxhdGU8dHlwZW5hbWUgSURMVHlwZT4KK3N0cnVjdCBEaXJlY3RDb252ZXJ0
ZXI7CisKK3RlbXBsYXRlPD4KK3N0cnVjdCBEaXJlY3RDb252ZXJ0ZXI8SURMRE9NU3RyaW5nPiB7
CisgICAgdGVtcGxhdGU8U3RyaW5nQ29udmVyc2lvbkNvbmZpZ3VyYXRpb24+CisgICAgc3RhdGlj
IFN0cmluZyBkaXJlY3RDb252ZXJ0KEpTQzo6RXhlY1N0YXRlJiwgSlNDOjpKU1N0cmluZyopOwor
fTsKKwordGVtcGxhdGU8PgoraW5saW5lIFN0cmluZyBEaXJlY3RDb252ZXJ0ZXI8SURMRE9NU3Ry
aW5nPjo6ZGlyZWN0Q29udmVydDxTdHJpbmdDb252ZXJzaW9uQ29uZmlndXJhdGlvbjo6Tm9ybWFs
PihKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIEpTQzo6SlNTdHJpbmcqIHN0cmluZykKK3sKKyAgICBy
ZXR1cm4gc3RyaW5nLT52YWx1ZSgmc3RhdGUpOworfQorCit9IH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2RvbWppdC9ET01KSVRJRExUeXBlLmggYi9Tb3VyY2UvV2ViQ29yZS9kb21qaXQv
RE9NSklUSURMVHlwZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY4OTFmYmM1MGVmNGMyZDc2NTRkOGU1ZDJiYzhk
ZWFlOTc2ZGYxYWMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb21qaXQvRE9N
SklUSURMVHlwZS5oCkBAIC0wLDAgKzEsNDcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UK
KworI2luY2x1ZGUgIklETFR5cGVzLmgiCisjaW5jbHVkZSA8Ynl0ZWNvZGUvU3BlY3VsYXRlZFR5
cGUuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeyBuYW1lc3BhY2UgRE9NSklUIHsKKwordGVtcGxh
dGU8dHlwZW5hbWUgSURMVHlwZT4KK3N0cnVjdCBJRExKU0FyZ3VtZW50VHlwZVNlbGVjdDsKKwor
dGVtcGxhdGU8PiBzdHJ1Y3QgSURMSlNBcmd1bWVudFR5cGVTZWxlY3Q8SURMQm9vbGVhbj4geyB0
eXBlZGVmIGJvb2wgdHlwZTsgfTsKK3RlbXBsYXRlPD4gc3RydWN0IElETEpTQXJndW1lbnRUeXBl
U2VsZWN0PElETEJ5dGU+IHsgdHlwZWRlZiBpbnQzMl90IHR5cGU7IH07Cit0ZW1wbGF0ZTw+IHN0
cnVjdCBJRExKU0FyZ3VtZW50VHlwZVNlbGVjdDxJRExPY3RldD4geyB0eXBlZGVmIGludDMyX3Qg
dHlwZTsgfTsKK3RlbXBsYXRlPD4gc3RydWN0IElETEpTQXJndW1lbnRUeXBlU2VsZWN0PElETFNo
b3J0PiB7IHR5cGVkZWYgaW50MzJfdCB0eXBlOyB9OwordGVtcGxhdGU8PiBzdHJ1Y3QgSURMSlNB
cmd1bWVudFR5cGVTZWxlY3Q8SURMVW5zaWduZWRTaG9ydD4geyB0eXBlZGVmIGludDMyX3QgdHlw
ZTsgfTsKK3RlbXBsYXRlPD4gc3RydWN0IElETEpTQXJndW1lbnRUeXBlU2VsZWN0PElETExvbmc+
IHsgdHlwZWRlZiBpbnQzMl90IHR5cGU7IH07Cit0ZW1wbGF0ZTw+IHN0cnVjdCBJRExKU0FyZ3Vt
ZW50VHlwZVNlbGVjdDxJRExET01TdHJpbmc+IHsgdHlwZWRlZiBKU0M6OkpTU3RyaW5nKiB0eXBl
OyB9OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBJRExUeXBlPgordXNpbmcgSURMSlNBcmd1bWVudFR5
cGUgPSB0eXBlbmFtZSBJRExKU0FyZ3VtZW50VHlwZVNlbGVjdDxJRExUeXBlPjo6dHlwZTsKKwor
fSB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb21qaXQvRE9NSklUSURMVHlwZUZpbHRl
ci5oIGIvU291cmNlL1dlYkNvcmUvZG9taml0L0RPTUpJVElETFR5cGVGaWx0ZXIuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi44YWY2MzZkZTliNmZlNDFjMzZjNzcwODcwMjQ2ZTg3YWJmZmI3ODAyCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYkNvcmUvZG9taml0L0RPTUpJVElETFR5cGVGaWx0ZXIuaApAQCAt
MCwwICsxLDcwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDxieXRl
Y29kZS9TcGVjdWxhdGVkVHlwZS5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7IG5hbWVzcGFjZSBE
T01KSVQgeworCit0ZW1wbGF0ZTx0eXBlbmFtZSBJRExUeXBlPgorc3RydWN0IElETEFyZ3VtZW50
VHlwZUZpbHRlclNlbGVjdDsKKwordGVtcGxhdGU8PiBzdHJ1Y3QgSURMQXJndW1lbnRUeXBlRmls
dGVyU2VsZWN0PElETEJvb2xlYW4+IHsgc3RhdGljIGNvbnN0ZXhwciBKU0M6OlNwZWN1bGF0ZWRU
eXBlIHZhbHVlID0gSlNDOjpTcGVjQm9vbGVhbjsgfTsKK3RlbXBsYXRlPD4gc3RydWN0IElETEFy
Z3VtZW50VHlwZUZpbHRlclNlbGVjdDxJRExCeXRlPiB7IHN0YXRpYyBjb25zdGV4cHIgSlNDOjpT
cGVjdWxhdGVkVHlwZSB2YWx1ZSA9IEpTQzo6U3BlY0ludDMyT25seTsgfTsKK3RlbXBsYXRlPD4g
c3RydWN0IElETEFyZ3VtZW50VHlwZUZpbHRlclNlbGVjdDxJRExPY3RldD4geyBzdGF0aWMgY29u
c3RleHByIEpTQzo6U3BlY3VsYXRlZFR5cGUgdmFsdWUgPSBKU0M6OlNwZWNJbnQzMk9ubHk7IH07
Cit0ZW1wbGF0ZTw+IHN0cnVjdCBJRExBcmd1bWVudFR5cGVGaWx0ZXJTZWxlY3Q8SURMU2hvcnQ+
IHsgc3RhdGljIGNvbnN0ZXhwciBKU0M6OlNwZWN1bGF0ZWRUeXBlIHZhbHVlID0gSlNDOjpTcGVj
SW50MzJPbmx5OyB9OwordGVtcGxhdGU8PiBzdHJ1Y3QgSURMQXJndW1lbnRUeXBlRmlsdGVyU2Vs
ZWN0PElETFVuc2lnbmVkU2hvcnQ+IHsgc3RhdGljIGNvbnN0ZXhwciBKU0M6OlNwZWN1bGF0ZWRU
eXBlIHZhbHVlID0gSlNDOjpTcGVjSW50MzJPbmx5OyB9OwordGVtcGxhdGU8PiBzdHJ1Y3QgSURM
QXJndW1lbnRUeXBlRmlsdGVyU2VsZWN0PElETExvbmc+IHsgc3RhdGljIGNvbnN0ZXhwciBKU0M6
OlNwZWN1bGF0ZWRUeXBlIHZhbHVlID0gSlNDOjpTcGVjSW50MzJPbmx5OyB9OwordGVtcGxhdGU8
PiBzdHJ1Y3QgSURMQXJndW1lbnRUeXBlRmlsdGVyU2VsZWN0PElETERPTVN0cmluZz4geyBzdGF0
aWMgY29uc3RleHByIEpTQzo6U3BlY3VsYXRlZFR5cGUgdmFsdWUgPSBKU0M6OlNwZWNTdHJpbmc7
IH07CisKK3RlbXBsYXRlPHR5cGVuYW1lIElETFR5cGU+Citjb25zdGV4cHIgSlNDOjpTcGVjdWxh
dGVkVHlwZSBJRExBcmd1bWVudFR5cGVGaWx0ZXIgPSBJRExBcmd1bWVudFR5cGVGaWx0ZXJTZWxl
Y3Q8SURMVHlwZT46OnZhbHVlOworCit0ZW1wbGF0ZTx0eXBlbmFtZSBJRExUeXBlPgorY29uc3Rl
eHByIEpTQzo6U3BlY3VsYXRlZFR5cGUgSURMUmVzdWx0VHlwZUZpbHRlciA9IEpTQzo6U3BlY0hl
YXBUb3A7CisKK3RlbXBsYXRlPD4gY29uc3RleHByIEpTQzo6U3BlY3VsYXRlZFR5cGUgSURMUmVz
dWx0VHlwZUZpbHRlcjxJRExBbnk+ID0gSlNDOjpTcGVjSGVhcFRvcDsKK3RlbXBsYXRlPD4gY29u
c3RleHByIEpTQzo6U3BlY3VsYXRlZFR5cGUgSURMUmVzdWx0VHlwZUZpbHRlcjxJRExCb29sZWFu
PiA9IEpTQzo6U3BlY0Jvb2xlYW47Cit0ZW1wbGF0ZTw+IGNvbnN0ZXhwciBKU0M6OlNwZWN1bGF0
ZWRUeXBlIElETFJlc3VsdFR5cGVGaWx0ZXI8SURMQnl0ZT4gPSBKU0M6OlNwZWNJbnQzMk9ubHk7
Cit0ZW1wbGF0ZTw+IGNvbnN0ZXhwciBKU0M6OlNwZWN1bGF0ZWRUeXBlIElETFJlc3VsdFR5cGVG
aWx0ZXI8SURMT2N0ZXQ+ID0gSlNDOjpTcGVjSW50MzJPbmx5OwordGVtcGxhdGU8PiBjb25zdGV4
cHIgSlNDOjpTcGVjdWxhdGVkVHlwZSBJRExSZXN1bHRUeXBlRmlsdGVyPElETFNob3J0PiA9IEpT
Qzo6U3BlY0ludDMyT25seTsKK3RlbXBsYXRlPD4gY29uc3RleHByIEpTQzo6U3BlY3VsYXRlZFR5
cGUgSURMUmVzdWx0VHlwZUZpbHRlcjxJRExVbnNpZ25lZFNob3J0PiA9IEpTQzo6U3BlY0ludDMy
T25seTsKK3RlbXBsYXRlPD4gY29uc3RleHByIEpTQzo6U3BlY3VsYXRlZFR5cGUgSURMUmVzdWx0
VHlwZUZpbHRlcjxJRExMb25nPiA9IEpTQzo6U3BlY0ludDMyT25seTsKK3RlbXBsYXRlPD4gY29u
c3RleHByIEpTQzo6U3BlY3VsYXRlZFR5cGUgSURMUmVzdWx0VHlwZUZpbHRlcjxJRExVbnNpZ25l
ZExvbmc+ID0gSlNDOjpTcGVjQnl0ZWNvZGVOdW1iZXI7Cit0ZW1wbGF0ZTw+IGNvbnN0ZXhwciBK
U0M6OlNwZWN1bGF0ZWRUeXBlIElETFJlc3VsdFR5cGVGaWx0ZXI8SURMTG9uZ0xvbmc+ID0gSlND
OjpTcGVjQnl0ZWNvZGVOdW1iZXI7Cit0ZW1wbGF0ZTw+IGNvbnN0ZXhwciBKU0M6OlNwZWN1bGF0
ZWRUeXBlIElETFJlc3VsdFR5cGVGaWx0ZXI8SURMVW5zaWduZWRMb25nTG9uZz4gPSBKU0M6OlNw
ZWNCeXRlY29kZU51bWJlcjsKK3RlbXBsYXRlPD4gY29uc3RleHByIEpTQzo6U3BlY3VsYXRlZFR5
cGUgSURMUmVzdWx0VHlwZUZpbHRlcjxJRExGbG9hdD4gPSBKU0M6OlNwZWNCeXRlY29kZU51bWJl
cjsKK3RlbXBsYXRlPD4gY29uc3RleHByIEpTQzo6U3BlY3VsYXRlZFR5cGUgSURMUmVzdWx0VHlw
ZUZpbHRlcjxJRExVbnJlc3RyaWN0ZWRGbG9hdD4gPSBKU0M6OlNwZWNCeXRlY29kZU51bWJlcjsK
K3RlbXBsYXRlPD4gY29uc3RleHByIEpTQzo6U3BlY3VsYXRlZFR5cGUgSURMUmVzdWx0VHlwZUZp
bHRlcjxJRExEb3VibGU+ID0gSlNDOjpTcGVjQnl0ZWNvZGVOdW1iZXI7Cit0ZW1wbGF0ZTw+IGNv
bnN0ZXhwciBKU0M6OlNwZWN1bGF0ZWRUeXBlIElETFJlc3VsdFR5cGVGaWx0ZXI8SURMVW5yZXN0
cmljdGVkRG91YmxlPiA9IEpTQzo6U3BlY0J5dGVjb2RlTnVtYmVyOwordGVtcGxhdGU8PiBjb25z
dGV4cHIgSlNDOjpTcGVjdWxhdGVkVHlwZSBJRExSZXN1bHRUeXBlRmlsdGVyPElETERPTVN0cmlu
Zz4gPSBKU0M6OlNwZWNTdHJpbmc7Cit0ZW1wbGF0ZTw+IGNvbnN0ZXhwciBKU0M6OlNwZWN1bGF0
ZWRUeXBlIElETFJlc3VsdFR5cGVGaWx0ZXI8SURMQnl0ZVN0cmluZz4gPSBKU0M6OlNwZWNTdHJp
bmc7Cit0ZW1wbGF0ZTw+IGNvbnN0ZXhwciBKU0M6OlNwZWN1bGF0ZWRUeXBlIElETFJlc3VsdFR5
cGVGaWx0ZXI8SURMVVNWU3RyaW5nPiA9IEpTQzo6U3BlY1N0cmluZzsKKwordGVtcGxhdGU8dHlw
ZW5hbWUgVD4KK2NvbnN0ZXhwciBKU0M6OlNwZWN1bGF0ZWRUeXBlIElETFJlc3VsdFR5cGVGaWx0
ZXI8SURMTnVsbGFibGU8VD4+ID0gSlNDOjpTcGVjT3RoZXIgfCBJRExSZXN1bHRUeXBlRmlsdGVy
PFQ+OworCit9IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbWppdC9KU0RvY3VtZW50
RE9NSklULmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbWppdC9KU0RvY3VtZW50RE9NSklULmNwcApp
bmRleCA5YjQ4ZDlmZGE1OGE2MmQwN2ZiMjNhYWI0NTZiZjk0YjdlZDhmYzJmLi5iYmZlZTdkYzRi
Yjc4MmU3M2NmMjdjOTc3YmMxODI5NGE1OTRiNmQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9kb21qaXQvSlNEb2N1bWVudERPTUpJVC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9taml0
L0pTRG9jdW1lbnRET01KSVQuY3BwCkBAIC00OCw3ICs0OCw2IEBAIFJlZjxKU0M6OkRPTUpJVDo6
UGF0Y2hwb2ludD4gRG9jdW1lbnREb2N1bWVudEVsZW1lbnRET01KSVQ6OmNoZWNrRE9NKCkKIAog
UmVmPEpTQzo6RE9NSklUOjpDYWxsRE9NR2V0dGVyUGF0Y2hwb2ludD4gRG9jdW1lbnREb2N1bWVu
dEVsZW1lbnRET01KSVQ6OmNhbGxET01HZXR0ZXIoKQogewotICAgIGNvbnN0IGF1dG8mIGhlYXAg
PSBET01KSVQ6OkFic3RyYWN0SGVhcFJlcG9zaXRvcnk6OnNoYXJlZCgpOwogICAgIFJlZjxKU0M6
OkRPTUpJVDo6Q2FsbERPTUdldHRlclBhdGNocG9pbnQ+IHBhdGNocG9pbnQgPSBKU0M6OkRPTUpJ
VDo6Q2FsbERPTUdldHRlclBhdGNocG9pbnQ6OmNyZWF0ZSgpOwogICAgIHBhdGNocG9pbnQtPm51
bUdQU2NyYXRjaFJlZ2lzdGVycyA9IDE7CiAgICAgcGF0Y2hwb2ludC0+c2V0R2VuZXJhdG9yKFs9
XShDQ2FsbEhlbHBlcnMmIGppdCwgSlNDOjpET01KSVQ6OlBhdGNocG9pbnRQYXJhbXMmIHBhcmFt
cykgewpAQCAtNzAsNyArNjksNyBAQCBSZWY8SlNDOjpET01KSVQ6OkNhbGxET01HZXR0ZXJQYXRj
aHBvaW50PiBEb2N1bWVudERvY3VtZW50RWxlbWVudERPTUpJVDo6Y2FsbERPTQogCiAgICAgICAg
IHJldHVybiBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0KCk7CiAgICAgfSk7Ci0gICAgcGF0Y2hwb2lu
dC0+ZWZmZWN0ID0gSlNDOjpET01KSVQ6OkVmZmVjdDo6Zm9yRGVmKGhlYXAuRG9jdW1lbnRfZG9j
dW1lbnRFbGVtZW50KTsKKyAgICBwYXRjaHBvaW50LT5lZmZlY3QgPSBKU0M6OkRPTUpJVDo6RWZm
ZWN0Ojpmb3JEZWYoRE9NSklUOjpBYnN0cmFjdEhlYXBSZXBvc2l0b3J5OjpEb2N1bWVudF9kb2N1
bWVudEVsZW1lbnQpOwogICAgIHJldHVybiBwYXRjaHBvaW50OwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9kb21qaXQvSlNOb2RlRE9NSklULmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Rv
bWppdC9KU05vZGVET01KSVQuY3BwCmluZGV4IDFkNzkwMWVjNDFkN2FjZWYxZDBkNzhmNjEzMjZm
YmU4YTEzYTkxYmYuLmRiMzEwZWEzNDUyODQ5MTQyNDI4ZDNkNjE2ZjgxYjJjNjdjNTE2NTUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbWppdC9KU05vZGVET01KSVQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2RvbWppdC9KU05vZGVET01KSVQuY3BwCkBAIC04Myw5ICs4Myw4IEBAIFJl
ZjxKU0M6OkRPTUpJVDo6UGF0Y2hwb2ludD4gTm9kZUZpcnN0Q2hpbGRET01KSVQ6OmNoZWNrRE9N
KCkKIAogUmVmPEpTQzo6RE9NSklUOjpDYWxsRE9NR2V0dGVyUGF0Y2hwb2ludD4gTm9kZUZpcnN0
Q2hpbGRET01KSVQ6OmNhbGxET01HZXR0ZXIoKQogewotICAgIGNvbnN0IGF1dG8mIGhlYXAgPSBE
T01KSVQ6OkFic3RyYWN0SGVhcFJlcG9zaXRvcnk6OnNoYXJlZCgpOwogICAgIGF1dG8gcGF0Y2hw
b2ludCA9IGNyZWF0ZUNhbGxET01HZXR0ZXJGb3JPZmZzZXRBY2Nlc3M8Tm9kZT4oQ0FTVF9PRkZT
RVQoTm9kZSosIENvbnRhaW5lck5vZGUqKSArIENvbnRhaW5lck5vZGU6OmZpcnN0Q2hpbGRNZW1v
cnlPZmZzZXQoKSwgSXNDb250YWluZXJHdWFyZFJlcXVpcmVtZW50OjpSZXF1aXJlZCk7Ci0gICAg
cGF0Y2hwb2ludC0+ZWZmZWN0ID0gSlNDOjpET01KSVQ6OkVmZmVjdDo6Zm9yRGVmKGhlYXAuTm9k
ZV9maXJzdENoaWxkKTsKKyAgICBwYXRjaHBvaW50LT5lZmZlY3QgPSBKU0M6OkRPTUpJVDo6RWZm
ZWN0Ojpmb3JEZWYoRE9NSklUOjpBYnN0cmFjdEhlYXBSZXBvc2l0b3J5OjpOb2RlX2ZpcnN0Q2hp
bGQpOwogICAgIHJldHVybiBwYXRjaHBvaW50OwogfQogCkBAIC05Niw5ICs5NSw4IEBAIFJlZjxK
U0M6OkRPTUpJVDo6UGF0Y2hwb2ludD4gTm9kZUxhc3RDaGlsZERPTUpJVDo6Y2hlY2tET00oKQog
CiBSZWY8SlNDOjpET01KSVQ6OkNhbGxET01HZXR0ZXJQYXRjaHBvaW50PiBOb2RlTGFzdENoaWxk
RE9NSklUOjpjYWxsRE9NR2V0dGVyKCkKIHsKLSAgICBjb25zdCBhdXRvJiBoZWFwID0gRE9NSklU
OjpBYnN0cmFjdEhlYXBSZXBvc2l0b3J5OjpzaGFyZWQoKTsKICAgICBhdXRvIHBhdGNocG9pbnQg
PSBjcmVhdGVDYWxsRE9NR2V0dGVyRm9yT2Zmc2V0QWNjZXNzPE5vZGU+KENBU1RfT0ZGU0VUKE5v
ZGUqLCBDb250YWluZXJOb2RlKikgKyBDb250YWluZXJOb2RlOjpsYXN0Q2hpbGRNZW1vcnlPZmZz
ZXQoKSwgSXNDb250YWluZXJHdWFyZFJlcXVpcmVtZW50OjpSZXF1aXJlZCk7Ci0gICAgcGF0Y2hw
b2ludC0+ZWZmZWN0ID0gSlNDOjpET01KSVQ6OkVmZmVjdDo6Zm9yRGVmKGhlYXAuTm9kZV9sYXN0
Q2hpbGQpOworICAgIHBhdGNocG9pbnQtPmVmZmVjdCA9IEpTQzo6RE9NSklUOjpFZmZlY3Q6OmZv
ckRlZihET01KSVQ6OkFic3RyYWN0SGVhcFJlcG9zaXRvcnk6Ok5vZGVfbGFzdENoaWxkKTsKICAg
ICByZXR1cm4gcGF0Y2hwb2ludDsKIH0KIApAQCAtMTA5LDkgKzEwNyw4IEBAIFJlZjxKU0M6OkRP
TUpJVDo6UGF0Y2hwb2ludD4gTm9kZU5leHRTaWJsaW5nRE9NSklUOjpjaGVja0RPTSgpCiAKIFJl
ZjxKU0M6OkRPTUpJVDo6Q2FsbERPTUdldHRlclBhdGNocG9pbnQ+IE5vZGVOZXh0U2libGluZ0RP
TUpJVDo6Y2FsbERPTUdldHRlcigpCiB7Ci0gICAgY29uc3QgYXV0byYgaGVhcCA9IERPTUpJVDo6
QWJzdHJhY3RIZWFwUmVwb3NpdG9yeTo6c2hhcmVkKCk7CiAgICAgYXV0byBwYXRjaHBvaW50ID0g
Y3JlYXRlQ2FsbERPTUdldHRlckZvck9mZnNldEFjY2VzczxOb2RlPihOb2RlOjpuZXh0U2libGlu
Z01lbW9yeU9mZnNldCgpLCBJc0NvbnRhaW5lckd1YXJkUmVxdWlyZW1lbnQ6Ok5vdFJlcXVpcmVk
KTsKLSAgICBwYXRjaHBvaW50LT5lZmZlY3QgPSBKU0M6OkRPTUpJVDo6RWZmZWN0Ojpmb3JEZWYo
aGVhcC5Ob2RlX25leHRTaWJsaW5nKTsKKyAgICBwYXRjaHBvaW50LT5lZmZlY3QgPSBKU0M6OkRP
TUpJVDo6RWZmZWN0Ojpmb3JEZWYoRE9NSklUOjpBYnN0cmFjdEhlYXBSZXBvc2l0b3J5OjpOb2Rl
X25leHRTaWJsaW5nKTsKICAgICByZXR1cm4gcGF0Y2hwb2ludDsKIH0KIApAQCAtMTIyLDkgKzEx
OSw4IEBAIFJlZjxKU0M6OkRPTUpJVDo6UGF0Y2hwb2ludD4gTm9kZVByZXZpb3VzU2libGluZ0RP
TUpJVDo6Y2hlY2tET00oKQogCiBSZWY8SlNDOjpET01KSVQ6OkNhbGxET01HZXR0ZXJQYXRjaHBv
aW50PiBOb2RlUHJldmlvdXNTaWJsaW5nRE9NSklUOjpjYWxsRE9NR2V0dGVyKCkKIHsKLSAgICBj
b25zdCBhdXRvJiBoZWFwID0gRE9NSklUOjpBYnN0cmFjdEhlYXBSZXBvc2l0b3J5OjpzaGFyZWQo
KTsKICAgICBhdXRvIHBhdGNocG9pbnQgPSBjcmVhdGVDYWxsRE9NR2V0dGVyRm9yT2Zmc2V0QWNj
ZXNzPE5vZGU+KE5vZGU6OnByZXZpb3VzU2libGluZ01lbW9yeU9mZnNldCgpLCBJc0NvbnRhaW5l
ckd1YXJkUmVxdWlyZW1lbnQ6Ok5vdFJlcXVpcmVkKTsKLSAgICBwYXRjaHBvaW50LT5lZmZlY3Qg
PSBKU0M6OkRPTUpJVDo6RWZmZWN0Ojpmb3JEZWYoaGVhcC5Ob2RlX3ByZXZpb3VzU2libGluZyk7
CisgICAgcGF0Y2hwb2ludC0+ZWZmZWN0ID0gSlNDOjpET01KSVQ6OkVmZmVjdDo6Zm9yRGVmKERP
TUpJVDo6QWJzdHJhY3RIZWFwUmVwb3NpdG9yeTo6Tm9kZV9wcmV2aW91c1NpYmxpbmcpOwogICAg
IHJldHVybiBwYXRjaHBvaW50OwogfQogCkBAIC0xMzUsOSArMTMxLDggQEAgUmVmPEpTQzo6RE9N
SklUOjpQYXRjaHBvaW50PiBOb2RlUGFyZW50Tm9kZURPTUpJVDo6Y2hlY2tET00oKQogCiBSZWY8
SlNDOjpET01KSVQ6OkNhbGxET01HZXR0ZXJQYXRjaHBvaW50PiBOb2RlUGFyZW50Tm9kZURPTUpJ
VDo6Y2FsbERPTUdldHRlcigpCiB7Ci0gICAgY29uc3QgYXV0byYgaGVhcCA9IERPTUpJVDo6QWJz
dHJhY3RIZWFwUmVwb3NpdG9yeTo6c2hhcmVkKCk7CiAgICAgYXV0byBwYXRjaHBvaW50ID0gY3Jl
YXRlQ2FsbERPTUdldHRlckZvck9mZnNldEFjY2VzczxDb250YWluZXJOb2RlPihOb2RlOjpwYXJl
bnROb2RlTWVtb3J5T2Zmc2V0KCksIElzQ29udGFpbmVyR3VhcmRSZXF1aXJlbWVudDo6Tm90UmVx
dWlyZWQpOwotICAgIHBhdGNocG9pbnQtPmVmZmVjdCA9IEpTQzo6RE9NSklUOjpFZmZlY3Q6OmZv
ckRlZihoZWFwLk5vZGVfcGFyZW50Tm9kZSk7CisgICAgcGF0Y2hwb2ludC0+ZWZmZWN0ID0gSlND
OjpET01KSVQ6OkVmZmVjdDo6Zm9yRGVmKERPTUpJVDo6QWJzdHJhY3RIZWFwUmVwb3NpdG9yeTo6
Tm9kZV9wYXJlbnROb2RlKTsKICAgICByZXR1cm4gcGF0Y2hwb2ludDsKIH0KIApAQCAtMTY5LDcg
KzE2NCw2IEBAIFJlZjxKU0M6OkRPTUpJVDo6UGF0Y2hwb2ludD4gTm9kZU93bmVyRG9jdW1lbnRE
T01KSVQ6OmNoZWNrRE9NKCkKIAogUmVmPEpTQzo6RE9NSklUOjpDYWxsRE9NR2V0dGVyUGF0Y2hw
b2ludD4gTm9kZU93bmVyRG9jdW1lbnRET01KSVQ6OmNhbGxET01HZXR0ZXIoKQogewotICAgIGNv
bnN0IGF1dG8mIGhlYXAgPSBET01KSVQ6OkFic3RyYWN0SGVhcFJlcG9zaXRvcnk6OnNoYXJlZCgp
OwogICAgIFJlZjxKU0M6OkRPTUpJVDo6Q2FsbERPTUdldHRlclBhdGNocG9pbnQ+IHBhdGNocG9p
bnQgPSBKU0M6OkRPTUpJVDo6Q2FsbERPTUdldHRlclBhdGNocG9pbnQ6OmNyZWF0ZSgpOwogICAg
IHBhdGNocG9pbnQtPm51bUdQU2NyYXRjaFJlZ2lzdGVycyA9IDE7CiAgICAgcGF0Y2hwb2ludC0+
c2V0R2VuZXJhdG9yKFs9XShDQ2FsbEhlbHBlcnMmIGppdCwgSlNDOjpET01KSVQ6OlBhdGNocG9p
bnRQYXJhbXMmIHBhcmFtcykgewpAQCAtMTkxLDcgKzE4NSw3IEBAIFJlZjxKU0M6OkRPTUpJVDo6
Q2FsbERPTUdldHRlclBhdGNocG9pbnQ+IE5vZGVPd25lckRvY3VtZW50RE9NSklUOjpjYWxsRE9N
R2V0dGVyCiAgICAgICAgIGRvbmUubGluaygmaml0KTsKICAgICAgICAgcmV0dXJuIENDYWxsSGVs
cGVyczo6SnVtcExpc3QoKTsKICAgICB9KTsKLSAgICBwYXRjaHBvaW50LT5lZmZlY3QgPSBKU0M6
OkRPTUpJVDo6RWZmZWN0Ojpmb3JEZWYoaGVhcC5Ob2RlX293bmVyRG9jdW1lbnQpOworICAgIHBh
dGNocG9pbnQtPmVmZmVjdCA9IEpTQzo6RE9NSklUOjpFZmZlY3Q6OmZvckRlZihET01KSVQ6OkFi
c3RyYWN0SGVhcFJlcG9zaXRvcnk6Ok5vZGVfb3duZXJEb2N1bWVudCk7CiAgICAgcmV0dXJuIHBh
dGNocG9pbnQ7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbWppdC9nZW5lcmF0
ZS1hYnN0cmFjdC1oZWFwLnJiIGIvU291cmNlL1dlYkNvcmUvZG9taml0L2dlbmVyYXRlLWFic3Ry
YWN0LWhlYXAucmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjc0MTJlODVkNjlmNDkxYTJlYWFiYWE2MTc4ZjFiMjVh
MDJkMDliNAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbWppdC9nZW5lcmF0
ZS1hYnN0cmFjdC1oZWFwLnJiCkBAIC0wLDAgKzEsMTY1IEBACisjIS91c3IvYmluL2VudiBydWJ5
CisjIC0qLSBjb2Rpbmc6IHV0Zi04IC0qLQorIyBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFy
ZSBtZXQ6CisjIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisjIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorIyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisjIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworIyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisj
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisjIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworIyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorIyBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorIyBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisjIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKworcmVxdWlyZSAieWFtbCIKKworY2xhc3MgSGVhcFJhbmdlCisgICAgYXR0cl9yZWFk
ZXIgOmZpcnN0LCA6bGFzdAorICAgIGRlZiBpbml0aWFsaXplKGZpcnN0LCBsYXN0KQorICAgICAg
ICBAZmlyc3QgPSBmaXJzdAorICAgICAgICBAbGFzdCA9IGxhc3QKKyAgICBlbmQKK2VuZAorCitj
bGFzcyBBYnN0cmFjdEhlYXAKKyAgICBhdHRyX3JlYWRlciA6cmFuZ2UsIDpuYW1lLCA6cGFyZW50
CisgICAgZGVmIGluaXRpYWxpemUobmFtZSwgdHJlZSkKKyAgICAgICAgQG5hbWUgPSBuYW1lCisg
ICAgICAgIEBwYXJlbnQgPSBuaWwKKyAgICAgICAgaWYgdHJlZS5uaWw/CisgICAgICAgICAgICBA
Y2hpbGRyZW4gPSBbXQorICAgICAgICBlbHNlCisgICAgICAgICAgICBAY2hpbGRyZW4gPSB0cmVl
Lm1hcCB7fGtleSwgdmFsdWV8IEFic3RyYWN0SGVhcC5uZXcoa2V5LCB2YWx1ZSkgfQorICAgICAg
ICBlbmQKKyAgICAgICAgQHJhbmdlID0gbmlsCisgICAgZW5kCisKKyAgICBkZWYgc2V0UGFyZW50
KHBhcmVudCkKKyAgICAgICAgcGFyZW50LmNoaWxkcmVuLnB1c2goc2VsZikKKyAgICAgICAgQHBh
cmVudCA9IHBhcmVudAorICAgIGVuZAorCisgICAgZGVmIGNvbXB1dGUoc3RhcnQpCisgICAgICAg
IGN1cnJlbnQgPSBzdGFydAorICAgICAgICBpZiBAY2hpbGRyZW4uZW1wdHk/CisgICAgICAgICAg
ICBAcmFuZ2UgPSBIZWFwUmFuZ2UubmV3KHN0YXJ0LCBjdXJyZW50ICsgMSkKKyAgICAgICAgICAg
IHJldHVybgorICAgICAgICBlbmQKKworICAgICAgICBAY2hpbGRyZW4uZWFjaCB7fGNoaWxkfAor
ICAgICAgICAgICAgY2hpbGQuY29tcHV0ZShjdXJyZW50KQorICAgICAgICAgICAgY3VycmVudCA9
IGNoaWxkLnJhbmdlLmxhc3QKKyAgICAgICAgfQorCisgICAgICAgIEByYW5nZSA9IEhlYXBSYW5n
ZS5uZXcoc3RhcnQsIGN1cnJlbnQpCisgICAgZW5kCisKKyAgICBkZWYgZHVtcCBvdXRwdXQKKyAg
ICAgICAgc2hhbGxvd0R1bXAob3V0cHV0KQorICAgICAgICBpZiBAcGFyZW50CisgICAgICAgICAg
ICBvdXRwdXQucHJpbnQgIi0+ICIKKyAgICAgICAgICAgIEBwYXJlbnQuZHVtcChvdXRwdXQpCisg
ICAgICAgIGVuZAorICAgIGVuZAorCisgICAgZGVmIHNoYWxsb3dEdW1wKG91dHB1dCkKKyAgICAg
ICAgb3V0cHV0LnByaW50ICIje0BuYW1lfTwje0ByYW5nZS5maXJzdH0sI3tAcmFuZ2UubGFzdH0+
IgorICAgIGVuZAorCisgICAgZGVmIGRlZXBEdW1wIG91dHB1dCwgaW5kZW50CisgICAgICAgIHBy
aW50SW5kZW50KG91dHB1dCwgaW5kZW50KQorICAgICAgICBzaGFsbG93RHVtcChvdXRwdXQpCisg
ICAgICAgIGlmIEBjaGlsZHJlbi5lbXB0eT8KKyAgICAgICAgICAgIG91dHB1dC5wcmludCAiXG4i
CisgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgZW5kCisKKyAgICAgICAgb3V0cHV0LnByaW50
ICI6XG4iCisgICAgICAgIEBjaGlsZHJlbi5lYWNoIHt8Y2hpbGR8CisgICAgICAgICAgICBjaGls
ZC5kZWVwRHVtcChvdXRwdXQsIGluZGVudCArIDEpCisgICAgICAgIH0KKyAgICBlbmQKKworICAg
IGRlZiBnZW5lcmF0ZSBvdXRwdXQKKyAgICAgICAgb3V0cHV0LnB1dHMgImNvbnN0ZXhwciBKU0M6
OkRPTUpJVDo6SGVhcFJhbmdlICN7QG5hbWV9KEpTQzo6RE9NSklUOjpIZWFwUmFuZ2U6OkNvbnN0
RXhwciwgI3tAcmFuZ2UuZmlyc3R9LCAje0ByYW5nZS5sYXN0fSk7IgorICAgICAgICBAY2hpbGRy
ZW4uZWFjaCB7fGNoaWxkfAorICAgICAgICAgICAgY2hpbGQuZ2VuZXJhdGUob3V0cHV0KQorICAg
ICAgICB9CisgICAgZW5kCisKK3ByaXZhdGUKKyAgICBkZWYgcHJpbnRJbmRlbnQgb3V0cHV0LCBp
bmRlbnQKKyAgICAgICAgaW5kZW50LnRpbWVzIHsKKyAgICAgICAgICAgIG91dHB1dC5wcmludCAi
ICAgICIKKyAgICAgICAgfQorICAgIGVuZAorZW5kCisKK2hlYWRlciA9IDw8LUVPUworLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisvLyBBdXRvLWdlbmVyYXRlZCBm
aWxlLiBEbyBub3QgbW9kaWZ5LgorCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPGRvbWppdC9E
T01KSVRIZWFwUmFuZ2UuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeyBuYW1lc3BhY2UgRE9NSklU
IHsgbmFtZXNwYWNlIEFic3RyYWN0SGVhcFJlcG9zaXRvcnkgeworRU9TCisKK2Zvb3RlciA9IDw8
LUVPUworfSB9IH0KK0VPUworCiskaW5wdXRGaWxlTmFtZSA9IEFSR1Yuc2hpZnQKKyRvdXRwdXRG
aWxlTmFtZSA9IEFSR1Yuc2hpZnQKK0ZpbGUub3Blbigkb3V0cHV0RmlsZU5hbWUsICJ3Iikge3xv
dXRwdXR8CisgICAgRmlsZS5vcGVuKCRpbnB1dEZpbGVOYW1lLCAicmIiKSB7fGZpbGV8CisgICAg
ICAgIHRyZWUgPSBZQU1MOjpsb2FkKGZpbGUucmVhZCgpKQorICAgICAgICBoZWFwID0gdHJlZS5t
YXAge3xrZXksIHZhbHVlfAorICAgICAgICAgICAgQWJzdHJhY3RIZWFwLm5ldyhrZXksIHZhbHVl
KQorICAgICAgICB9LmZpcnN0CisgICAgICAgIGhlYXAuY29tcHV0ZSgwKQorCisgICAgICAgIG91
dHB1dC5wcmludChoZWFkZXIpCisgICAgICAgIG91dHB1dC5wdXRzKCIvKiBET01KSVQgQWJzdHJh
Y3QgSGVhcCBUcmVlLiIpCisgICAgICAgIGhlYXAuZGVlcER1bXAob3V0cHV0LCAwKQorICAgICAg
ICBvdXRwdXQucHV0cygiKi8iKQorICAgICAgICBoZWFwLmdlbmVyYXRlKG91dHB1dCkKKyAgICAg
ICAgb3V0cHV0LnByaW50KGZvb3RlcikKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggODhkMDY0NjQ4Yjg3MmQ4
MzJhYWJlZjAwM2E1MWNlMGI5OTJkOWYwYi4uMGQzZjk5NDhkYTc2Y2M5NjBhYzhkNzNiNTNiNzY4
MjBkNzY1MzlhNyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91
dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDE2LTExLTAyICBZdXN1a2UgU3V6
dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgorCisgICAgICAgIFtET01KSVRdIEFkZCBET01K
SVQ6OlNpZ25hdHVyZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTYyOTgwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2FhbSBCYXJhdGkuCisKKyAgICAg
ICAgKiBqcy9kb20vZG9taml0LWFjY2Vzc29yLWxpY20uaHRtbDoKKyAgICAgICAgKiBqcy9kb20v
ZG9taml0LWZ1bmN0aW9uLWVmZmVjdC1zaG91bGQtb3ZlcmxhcC13aXRoLWNhbGwtZXhwZWN0ZWQu
dHh0OiBBZGRlZC4KKyAgICAgICAgKiBqcy9kb20vZG9taml0LWZ1bmN0aW9uLWVmZmVjdC1zaG91
bGQtb3ZlcmxhcC13aXRoLWNhbGwuaHRtbDogQWRkZWQuCisgICAgICAgICoganMvZG9tL2RvbWpp
dC1mdW5jdGlvbi1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGpzL2RvbS9kb21qaXQt
ZnVuY3Rpb24tbGljbS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGpzL2RvbS9kb21q
aXQtZnVuY3Rpb24tbGljbS5odG1sOiBDb3BpZWQgZnJvbSBMYXlvdXRUZXN0cy9qcy9kb20vZG9t
aml0LWFjY2Vzc29yLWxpY20uaHRtbC4KKyAgICAgICAgKiBqcy9kb20vZG9taml0LWZ1bmN0aW9u
LXR5cGUtY29udHJhZGljdGlvbi1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGpzL2Rv
bS9kb21qaXQtZnVuY3Rpb24tdHlwZS1jb250cmFkaWN0aW9uLmh0bWw6IENvcGllZCBmcm9tIExh
eW91dFRlc3RzL2pzL2RvbS9kb21qaXQtYWNjZXNzb3ItbGljbS5odG1sLgorICAgICAgICAqIGpz
L2RvbS9kb21qaXQtZnVuY3Rpb24tdHlwZS1mYWlsdXJlLWV4cGVjdGVkLnR4dDogQWRkZWQuCisg
ICAgICAgICoganMvZG9tL2RvbWppdC1mdW5jdGlvbi10eXBlLWZhaWx1cmUuaHRtbDogQ29waWVk
IGZyb20gTGF5b3V0VGVzdHMvanMvZG9tL2RvbWppdC1hY2Nlc3Nvci1saWNtLmh0bWwuCisgICAg
ICAgICoganMvZG9tL2RvbWppdC1mdW5jdGlvbi5odG1sOiBBZGRlZC4KKwogMjAxNi0xMS0wMiAg
TXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgogCiAgICAgICAgIFtpT1Nd
IFtXZWJHTF0gTXVsdGlzYW1wbGUgcmVzb2x2ZSBzdGVwIG1heSBvcGVyYXRlIG9uIHN0YWxlIGRh
dGEKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL2RvbS9kb21qaXQtYWNjZXNzb3ItbGljbS5o
dG1sIGIvTGF5b3V0VGVzdHMvanMvZG9tL2RvbWppdC1hY2Nlc3Nvci1saWNtLmh0bWwKaW5kZXgg
ZTU2M2ViYTg5ZmZjZGEyOTFiNTI0ZGNkZjc1MGUyYTMwNmFlMzIwNS4uNDBkNTU2MGRhMDUzOWNi
ZjA4NGE5ZTFkMWVmM2ZlM2YxZGMzNTQ0ZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvanMvZG9t
L2RvbWppdC1hY2Nlc3Nvci1saWNtLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvanMvZG9tL2RvbWpp
dC1hY2Nlc3Nvci1saWNtLmh0bWwKQEAgLTEsMTQgKzEsMyBAQAotPCFET0NUWVBFIEhUTUw+Ci08
aHRtbCBsYW5nPSJlbiI+Ci08aGVhZD4KLTxtZXRhIGNoYXJzZXQ9IlVURi04Ij4KLTwvaGVhZD4K
LTxib2R5PgotPHNjcmlwdD4KLQotPC9zY3JpcHQ+Ci08L2JvZHk+Ci08L2h0bWw+CiA8IURPQ1RZ
UEUgaHRtbD4KIDxodG1sPgogPGhlYWQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9kb20v
ZG9taml0LWZ1bmN0aW9uLWVmZmVjdC1zaG91bGQtb3ZlcmxhcC13aXRoLWNhbGwtZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvanMvZG9tL2RvbWppdC1mdW5jdGlvbi1lZmZlY3Qtc2hvdWxkLW92
ZXJsYXAtd2l0aC1jYWxsLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xMWRjMTk2YTMyZTI4OGMx
MmY1MTQ1NjFjZmMyMTRkMjllYjljODE3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
anMvZG9tL2RvbWppdC1mdW5jdGlvbi1lZmZlY3Qtc2hvdWxkLW92ZXJsYXAtd2l0aC1jYWxsLWV4
cGVjdGVkLnR4dApAQCAtMCwwICsxLDEwIEBACitUZXN0IGZ1bmN0aW9uIGNhbGxzIHNob3VsZCBv
dmVybGFwIHdpdGggZWZmZWN0cyBvZiBET01KSVQgZnVuY3Rpb25zLgorCitPbiBzdWNjZXNzLCB5
b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVT
VCBDT01QTEVURSIuCisKKworUEFTUyB0ZXN0KCkgaXMgdHJ1ZQorUEFTUyBzdWNjZXNzZnVsbHlQ
YXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2pzL2RvbS9kb21qaXQtZnVuY3Rpb24tZWZmZWN0LXNob3VsZC1vdmVybGFwLXdpdGgtY2FsbC5o
dG1sIGIvTGF5b3V0VGVzdHMvanMvZG9tL2RvbWppdC1mdW5jdGlvbi1lZmZlY3Qtc2hvdWxkLW92
ZXJsYXAtd2l0aC1jYWxsLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjhjYjM5MmIyOTQxYmJiOGQzMzFhNzkz
MzFkNThjM2ZhNTgzMDVlNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2pzL2RvbS9k
b21qaXQtZnVuY3Rpb24tZWZmZWN0LXNob3VsZC1vdmVybGFwLXdpdGgtY2FsbC5odG1sCkBAIC0w
LDAgKzEsMzMgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJv
ZHk+Cis8ZGl2IGlkPSJ0YXJnZXQiPjwvZGl2PgorPC9kaXY+CisKKzxzY3JpcHQ+CitkZXNjcmlw
dGlvbignVGVzdCBmdW5jdGlvbiBjYWxscyBzaG91bGQgb3ZlcmxhcCB3aXRoIGVmZmVjdHMgb2Yg
RE9NSklUIGZ1bmN0aW9ucy4nKTsKKworZnVuY3Rpb24gdGVzdCgpCit7CisgICAgdmFyIHRhcmdl
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0YXJnZXQnKTsKKyAgICB0YXJnZXQuc2V0QXR0
cmlidXRlKCJjb2NvYSIsICIwIik7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxZTQ7ICsraSkg
eworICAgICAgICB2YXIgcmV0ID0gdGFyZ2V0LmdldEF0dHJpYnV0ZSgiY29jb2EiKTsKKyAgICAg
ICAgaWYgKHJldCAhPT0gU3RyaW5nKGkpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
ICAgICB0YXJnZXQuc2V0QXR0cmlidXRlKCJjb2NvYSIsIFN0cmluZyhpICsgMSkpOworICAgICAg
ICB2YXIgcmV0ID0gdGFyZ2V0LmdldEF0dHJpYnV0ZSgiY29jb2EiKTsKKyAgICAgICAgaWYgKHJl
dCA9PT0gU3RyaW5nKGkpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICBy
ZXR1cm4gdHJ1ZTsKK30KKworc2hvdWxkQmVUcnVlKGB0ZXN0KClgKTsKKzwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9i
b2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvZG9tL2RvbWppdC1mdW5j
dGlvbi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9qcy9kb20vZG9taml0LWZ1bmN0aW9uLWV4
cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40NWU1NmViZGNkOWY2ZjE4NmM0N2NlNzY4YzE1YzIyNWVi
ZTJkMGM3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMvZG9tL2RvbWppdC1mdW5j
dGlvbi1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMCBAQAorVGVzdCBET01KSVQgZnVuY3Rpb25z
IHdvcmsuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVz
c2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIEFsbCB0ZXN0cyBw
YXNzZWQuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUK
KwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvZG9tL2RvbWppdC1mdW5jdGlvbi1saWNtLWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2pzL2RvbS9kb21qaXQtZnVuY3Rpb24tbGljbS1leHBl
Y3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uZjEzYzAzMzA1OTY2MmU1NThiYzZmYjlkNzM5YWIzN2U3OTYx
YzhmYgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2pzL2RvbS9kb21qaXQtZnVuY3Rp
b24tbGljbS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw4IEBACitUZXN0IERPTUpJVCBmdW5jdGlv
biB3aWxsIGJlIExJQ00tZWQuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBv
ZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworUEFTUyBz
dWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2pzL2RvbS9kb21qaXQtZnVuY3Rpb24tbGljbS5odG1sIGIvTGF5b3V0VGVz
dHMvanMvZG9tL2RvbWppdC1mdW5jdGlvbi1saWNtLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWYyZTM5OWRk
MzU5ZTFjNGZjYjRkZmRlMmJhY2U5ZTFhMGQ0NGQzOQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2pzL2RvbS9kb21qaXQtZnVuY3Rpb24tbGljbS5odG1sCkBAIC0wLDAgKzEsMzUgQEAK
KzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNv
dXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlk
PSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKworPGRpdiBp
ZD0icGFyZW50Tm9kZSI+Cis8ZGl2IGlkPSJwcmV2aW91c1NpYmxpbmciPjwvZGl2PjxkaXYgaWQ9
InRhcmdldCI+PGRpdiBpZD0iZmlyc3RDaGlsZCI+PC9kaXY+PGRpdiBpZD0ibGFzdENoaWxkIj48
L2Rpdj48L2Rpdj48ZGl2IGlkPSJuZXh0U2libGluZyI+PC9kaXY+Cis8L2Rpdj4KKworPHNjcmlw
dD4KK2Rlc2NyaXB0aW9uKCdUZXN0IERPTUpJVCBmdW5jdGlvbiB3aWxsIGJlIExJQ00tZWQuJyk7
CisKK2Z1bmN0aW9uIHRlc3QoKSB7CisgICAgdmFyIGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnQoJ2RpdicpOworICAgIHZhciByZXQgPSAiaW52YWxpZCI7CisgICAgZGl2LnNldEF0dHJpYnV0
ZSgiY29jb2EiLCAiQ29jb2EiKTsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IDFlNDsgKytpKQor
ICAgICAgICByZXQgPSBkaXYuZ2V0QXR0cmlidXRlKCJjb2NvYSIpOworICAgIHJldHVybiByZXQ7
Cit9Cit2YXIgcmVzdWx0OworKGZ1bmN0aW9uICgpIHsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8
IDEwMDsgKytpKSB7CisgICAgICAgIHJlc3VsdCA9IHRlc3QoKTsKKyAgICAgICAgc2hvdWxkQmUo
YHJlc3VsdGAsIGAiQ29jb2EiYCwgdHJ1ZSk7CisgICAgfQorfSgpKTsKKzwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9i
b2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvZG9tL2RvbWppdC1mdW5j
dGlvbi10eXBlLWNvbnRyYWRpY3Rpb24tZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvanMvZG9t
L2RvbWppdC1mdW5jdGlvbi10eXBlLWNvbnRyYWRpY3Rpb24tZXhwZWN0ZWQudHh0Cm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjNkNjg3N2Q0YTgwMDY4OGIyMTY3N2JlZmFmZmVlZmZkOGFiMGI3OTYKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9qcy9kb20vZG9taml0LWZ1bmN0aW9uLXR5cGUtY29udHJhZGlj
dGlvbi1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw4IEBACitUZXN0IERPTUpJVCBmdW5jdGlvbiB3
aWxsIGNhdXNlIHR5cGUgY29udHJhZGljdGlvbiBnaXZpbmcgdXAuCisKK09uIHN1Y2Nlc3MsIHlv
dSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNU
IENPTVBMRVRFIi4KKworUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENP
TVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL2RvbS9kb21qaXQtZnVuY3Rpb24t
dHlwZS1jb250cmFkaWN0aW9uLmh0bWwgYi9MYXlvdXRUZXN0cy9qcy9kb20vZG9taml0LWZ1bmN0
aW9uLXR5cGUtY29udHJhZGljdGlvbi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg0ZGM1YjY3Njk0MThlOTY1
NTViYWI4Mzg3YzMwNjAzNGFmNWMwYzAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9q
cy9kb20vZG9taml0LWZ1bmN0aW9uLXR5cGUtY29udHJhZGljdGlvbi5odG1sCkBAIC0wLDAgKzEs
MzUgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8u
Li9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8
ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKwor
PGRpdiBpZD0icGFyZW50Tm9kZSI+Cis8ZGl2IGlkPSJwcmV2aW91c1NpYmxpbmciPjwvZGl2Pjxk
aXYgaWQ9InRhcmdldCI+PGRpdiBpZD0iZmlyc3RDaGlsZCI+PC9kaXY+PGRpdiBpZD0ibGFzdENo
aWxkIj48L2Rpdj48L2Rpdj48ZGl2IGlkPSJuZXh0U2libGluZyI+PC9kaXY+Cis8L2Rpdj4KKwor
PHNjcmlwdD4KK2Rlc2NyaXB0aW9uKCdUZXN0IERPTUpJVCBmdW5jdGlvbiB3aWxsIGNhdXNlIHR5
cGUgY29udHJhZGljdGlvbiBnaXZpbmcgdXAuJyk7CisKK3ZhciBkaXYgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50KCdkaXYnKTsKK2Rpdi5zZXRBdHRyaWJ1dGUoImNvY29hIiwgIkNvY29hIik7Citm
dW5jdGlvbiB0ZXN0KGRpdikgeworICAgIHZhciByZXQgPSAiaW52YWxpZCI7CisgICAgZm9yICh2
YXIgaSA9IDA7IGkgPCAxZTQ7ICsraSkKKyAgICAgICAgcmV0ID0gZGl2LmdldEF0dHJpYnV0ZSgy
MDApOworICAgIHJldHVybiByZXQ7Cit9Cit2YXIgcmVzdWx0OworKGZ1bmN0aW9uICgpIHsKKyAg
ICBmb3IgKHZhciBpID0gMDsgaSA8IDEwMDsgKytpKSB7CisgICAgICAgIHJlc3VsdCA9IHRlc3Qo
ZGl2KTsKKyAgICAgICAgc2hvdWxkQmUoYHJlc3VsdGAsIGBudWxsYCwgdHJ1ZSk7CisgICAgfQor
fSgpKTsKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBv
c3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvanMvZG9tL2RvbWppdC1mdW5jdGlvbi10eXBlLWZhaWx1cmUtZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvanMvZG9tL2RvbWppdC1mdW5jdGlvbi10eXBlLWZhaWx1cmUtZXhwZWN0ZWQudHh0
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjJjMTAyYjM3NmJmODIzMmI0MmJkMWEzY2U0MWRlMTc3MWEyN2I2YzUKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9qcy9kb20vZG9taml0LWZ1bmN0aW9uLXR5cGUt
ZmFpbHVyZS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw4IEBACitUZXN0IERPTUpJVCBmdW5jdGlv
biB3aWxsIGNhdXNlIEJhZFR5cGUgT1NSIGV4aXRzLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBz
ZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVU
RSIuCisKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQor
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9kb20vZG9taml0LWZ1bmN0aW9uLXR5cGUtZmFp
bHVyZS5odG1sIGIvTGF5b3V0VGVzdHMvanMvZG9tL2RvbWppdC1mdW5jdGlvbi10eXBlLWZhaWx1
cmUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi42Yjc2NjE0MTg3ZWRhODdkYWMyNmMyMGE2ZTMxMjJjZjA2NTRh
ODE2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMvZG9tL2RvbWppdC1mdW5jdGlv
bi10eXBlLWZhaWx1cmUuaHRtbApAQCAtMCwwICsxLDM5IEBACis8IURPQ1RZUEUgaHRtbD4KKzxo
dG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpz
Ij48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2
PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisKKzxkaXYgaWQ9InBhcmVudE5vZGUiPgorPGRp
diBpZD0icHJldmlvdXNTaWJsaW5nIj48L2Rpdj48ZGl2IGlkPSJ0YXJnZXQiPjxkaXYgaWQ9ImZp
cnN0Q2hpbGQiPjwvZGl2PjxkaXYgaWQ9Imxhc3RDaGlsZCI+PC9kaXY+PC9kaXY+PGRpdiBpZD0i
bmV4dFNpYmxpbmciPjwvZGl2PgorPC9kaXY+CisKKzxzY3JpcHQ+CitkZXNjcmlwdGlvbignVGVz
dCBET01KSVQgZnVuY3Rpb24gd2lsbCBjYXVzZSBCYWRUeXBlIE9TUiBleGl0cy4nKTsKKwordmFy
IGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOworZGl2LnNldEF0dHJpYnV0ZSgi
Y29jb2EiLCAiQ29jb2EiKTsKK2Z1bmN0aW9uIHRlc3QoZGl2LCBuYW1lKSB7CisgICAgdmFyIHJl
dCA9ICJpbnZhbGlkIjsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IDFlNDsgKytpKQorICAgICAg
ICByZXQgPSBkaXYuZ2V0QXR0cmlidXRlKG5hbWUpOworICAgIHJldHVybiByZXQ7Cit9Cit2YXIg
cmVzdWx0OworKGZ1bmN0aW9uICgpIHsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IDEwMDsgKytp
KSB7CisgICAgICAgIHJlc3VsdCA9IHRlc3QoZGl2LCAnY29jb2EnKTsKKyAgICAgICAgc2hvdWxk
QmUoYHJlc3VsdGAsIGAiQ29jb2EiYCwgdHJ1ZSk7CisgICAgfQorICAgIGZvciAodmFyIGkgPSAw
OyBpIDwgMTAwOyArK2kpIHsKKyAgICAgICAgcmVzdWx0ID0gdGVzdChkaXYsIDQwMCk7CisgICAg
ICAgIHNob3VsZEJlKGByZXN1bHRgLCBgbnVsbGAsIHRydWUpOworICAgIH0KK30oKSk7Cis8L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3Nj
cmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL2RvbS9k
b21qaXQtZnVuY3Rpb24uaHRtbCBiL0xheW91dFRlc3RzL2pzL2RvbS9kb21qaXQtZnVuY3Rpb24u
aHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi45MWVhOGE1OTlkODk2NWRlNWEwM2E4NTRkNDk0M2RlNWI5YWMzZDY0
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMvZG9tL2RvbWppdC1mdW5jdGlvbi5o
dG1sCkBAIC0wLDAgKzEsNTggQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9o
ZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJ0YXJnZXQiIGNvY29hPSJjb2NvYSI+PGRpdiBpZD0iZmly
c3RDaGlsZCI+PC9kaXY+PGRpdiBpZD0ibGFzdENoaWxkIj48L2Rpdj48L2Rpdj4KKzwvZGl2Pgor
Cis8c2NyaXB0PgorZGVzY3JpcHRpb24oJ1Rlc3QgRE9NSklUIGZ1bmN0aW9ucyB3b3JrLicpOwor
dmFyIGRpdjsKKyhmdW5jdGlvbiAoKSB7CisgICAgZGl2ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoJ3RhcmdldCcpOworCisgICAgZnVuY3Rpb24gYSgpCisgICAgeworICAgICAgICByZXR1cm4g
ZGl2LmdldEF0dHJpYnV0ZSgnY29jb2EnKSA9PT0gJ2NvY29hJzsKKyAgICB9CisKKyAgICBmdW5j
dGlvbiBiKCkKKyAgICB7CisgICAgICAgIHJldHVybiBkaXYuZ2V0QXR0cmlidXRlTm9kZSgnY29j
b2EnKS5ub2RlVHlwZSA9PT0gTm9kZS5BVFRSSUJVVEVfTk9ERTsKKyAgICB9CisKKyAgICBmdW5j
dGlvbiBjKCkKKyAgICB7CisgICAgICAgIHJldHVybiBkaXYuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
J2RpdicpLmxlbmd0aCA9PT0gMjsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBkKCkKKyAgICB7Cisg
ICAgICAgIHJldHVybiBkaXYuaGFzQXR0cmlidXRlKCdjb2NvYScpID09PSB0cnVlOworICAgIH0K
KworICAgIGZ1bmN0aW9uIG1haW4oKQorICAgIHsKKyAgICAgICAgaWYgKCFhKCkpCisgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIGlmICghYigpKQorICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgICAgICBpZiAoIWMoKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICAgICAgaWYgKCFkKCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHJldHVy
biB0cnVlOworICAgIH0KKworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMWU0OyArK2kpIHsKKyAg
ICAgICAgaWYgKCFtYWluKCkpCisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoImVycm9yIik7
CisgICAgfQorICAgIHRlc3RQYXNzZWQoIkFsbCB0ZXN0cyBwYXNzZWQuIik7Cit9KCkpOworPC9z
Y3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9z
Y3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>293733</attachid>
            <date>2016-11-02 18:45:17 -0700</date>
            <delta_ts>2016-11-02 20:09:39 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-162980-20161102184117.patch</filename>
            <type>text/plain</type>
            <size>191881</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA4MzE4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA2
YmYyMzQ3ZGVhYjQ1NDFmZGY1OWQ5NDVkNmM1MzFmYjQxMGIxNDA2Li40MWYyOTQzYzBiMDM3Nzk5
OGEzMDViZjE3MjIyY2Y3OWU1MmRlYWYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMzQgQEAKKzIwMTYtMTEtMDIgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFp
bC5jb20+CisKKyAgICAgICAgW0RPTUpJVF0gQWRkIERPTUpJVDo6U2lnbmF0dXJlCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjI5ODAKKworICAgICAg
ICBSZXZpZXdlZCBieSBTYWFtIEJhcmF0aS4KKworICAgICAgICBUaGlzIHBhdGNoIGludHJvZHVj
ZXMgYSBuZXcgbWVjaGFuaXNtIGNhbGxlZCBET01KSVQ6OlNpZ25hdHVyZS4gV2UgY2FuIGFubm90
YXRlIHRoZSBmdW5jdGlvbiB3aXRoIERPTUpJVDo6U2lnbmF0dXJlLgorICAgICAgICBET01KSVQ6
OlNpZ25hdHVyZSBoYXMgdHlwZSBpbmZvcm1hdGlvbiBvZiB0aGF0IGZ1bmN0aW9uLiBBbmQgaXQg
YWxzbyBtYWludGFpbnMgdGhlIGVmZmVjdCBvZiB0aGUgZnVuY3Rpb24gYW5kIHRoZQorICAgICAg
ICBwb2ludGVyIHRvIHRoZSB1bnNhZmUgZnVuY3Rpb24uIFRoZSB1bnNhZmUgZnVuY3Rpb24gbWVh
bnMgdGhlIGZ1bmN0aW9uIHdpdGhvdXQgdHlwZSBhbmQgYXJndW1lbnQgY291bnQgY2hlY2tzLgor
ICAgICAgICBCeSB1c2luZyB0aGVzZSBpbmZvcm1hdGlvbiwgd2UgY2FuIHNlcGFyYXRlIHR5cGUg
YW5kIGFyZ3VtZW50IGNvdW50IGNoZWNrcyBmcm9tIHRoZSBmdW5jdGlvbi4gQW5kIHdlIGNhbiBl
bWl0CisgICAgICAgIHRoZXNlIHRoaW5ncyBhcyBERkcgY2hlY2tzIGFuZCBjb252ZXJ0IHRoZSBm
dW5jdGlvbiBjYWxsIGl0c2VsZiB0byBDYWxsRE9NIG5vZGUuIENhbGxET00gbm9kZSBjYW4gY2Fs
bCB0aGUgdW5zYWZlCisgICAgICAgIGZ1bmN0aW9uIGRpcmVjdGx5IHdpdGhvdXQgYW55IGNoZWNr
cy4gRnVydGhlcm1vcmUsIHRoaXMgQ2FsbERPTSBub2RlIGNhbiByZXByZXNlbnQgaXRzIG93biBj
bG9iYmVyaXppbmcgcnVsZXMgYmFzZWQKKyAgICAgICAgb24gRE9NSklUOjpFZmZlY3QgbWFpbnRh
aW5lZCBieSBET01KSVQ6OlNpZ25hdHVyZS4gSXQgYWxsb3dzIHVzIHRvIG1ha2Ugb3BhcXVlIENh
bGwgbm9kZSB0byBhIENhbGxET00gbm9kZSB0aGF0CisgICAgICAgIG1lcmVseSByZWFkcyBzb21l
IHBhcnQgb2YgaGVhcC4gVGhlc2UgY2hhbmdlcyAoMSkgY2FuIGRyb3AgZHVwbGljYXRlIHR5cGUg
Y2hlY2tzIGluIERGRywgKDIpIG9mZmVyIGFiaWxpdHkgdG8gbW92ZQorICAgICAgICBDYWxsRE9N
IG5vZGUgdG8gc29tZXdoZXJlLCBhbmQgKDMpIHRyYWNrIG1vcmUgZGV0YWlsZWQgaGVhcCByZWFk
cyBhbmQgd3JpdGVzIG9mIENhbGxET00gbm9kZXMuCisKKyAgICAgICAgV2UgZmlyc3QgZW1pdCBD
YWxsIG5vZGUgd2l0aCBET01KSVQ6OlNpZ25hdHVyZSBpbiBERkdCeXRlQ29kZVBhcnNlci4gQW5k
IGluIHRoZSBmaXh1cCBwaGFzZSwgd2UgYXR0ZW1wdCB0byBsb3dlcgorICAgICAgICBDYWxsIG5v
ZGUgdG8gQ2FsbERPTSBub2RlIHdpdGggY2hlY2tzICYgZWRnZSBmaWx0ZXJzLiBUaGlzIGlzIGJl
Y2F1c2Ugd2UgZG8gbm90IGtub3cgdGhlIHR5cGUgcHJlZGljdGlvbnMgaW4KKyAgICAgICAgREZH
Qnl0ZUNvZGVQYXJzZXIgcGhhc2UuIElmIHdlIGFsd2F5cyBlbWl0IENhbGxET00gbm9kZSBpbiBE
RkdCeXRlQ29kZVBhcnNlciwgaWYgd2UgZXZhbHVhdGUgYGRpdi5nZXRBdHRyaWJ1dGUodHJ1ZSlg
CisgICAgICAgIHRoaW5neSwgdGhlIFVuY291bnRhYmxlIE9TUiBleGl0cyByZXBlYXRlZGx5IGhh
cHBlbiBiZWNhdXNlIEFJIGZpZ3VyZXMgb3V0IHRoZSBhYnN0cmFjdCB2YWx1ZSBpcyBjbGVhcmVk
LgorCisgICAgICAgIEN1cnJlbnRseSwgRE9NSklUIHNpZ25hdHVyZSBvbmx5IGFsbG93cyB0aGUg
dHlwZXMgdGhhdCBjYW4gcmVzaWRlIGluIEdQUi4gVGhpcyBpcyBiZWNhdXNlIHRoZSB0eXBlcyBv
ZiB0aGUgdW5zYWZlCisgICAgICAgIGZ1bmN0aW9uIGFyZ3VtZW50cyBhcmUgcmVwcmVzZW50ZWQg
YXMgdGhlIHNlcXVlbmNlIG9mIHZvaWQqLiBJbiB0aGUgZnV0dXJlLCB3ZSB3aWxsIGV4dGVuZCB0
byBhY2NlcHQgb3RoZXIgdHlwZXMgbGlrZQorICAgICAgICBmbG9hdCwgZG91YmxlIGV0Yy4KKwor
ICAgICAgICBXZSBhbm5vdGF0ZSBzZXZlcmFsIGZ1bmN0aW9ucyBpbiBFbGVtZW50LiBJbiBwYXJ0
aWN1bGFyLCB3ZSBhbm5vdGF0ZSBFbGVtZW50OjpnZXRBdHRyaWJ1dGUuIFRoaXMgYWxsb3dzIHVz
IHRvIHBlcmZvcm0KKyAgICAgICAgTElDTSBpbiBEcm9tYWVvIGRvbS1hdHRyIHRlc3QuIEluIHRo
ZSBEcm9tYWVvIGRvbS1hdHRyIGdldEF0dHJpYnV0ZSB0ZXN0LCB3ZSBjYW4gc2VlIDMyeCBpbXBy
b3ZlbWVudC4gKDEzNDk3NC44IHYucy4gNDIwMy40KQorCisgICAgICAgICogSmF2YVNjcmlwdENv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBieXRlY29kZS9DYWxsVmFy
aWFudC5oOgorICAgICAgICAoSlNDOjpDYWxsVmFyaWFudDo6ZnVuY3Rpb25FeGVjdXRhYmxlKToK
KyAgICAgICAgKEpTQzo6Q2FsbFZhcmlhbnQ6Om5hdGl2ZUV4ZWN1dGFibGUpOgorICAgICAgICAo
SlNDOjpDYWxsVmFyaWFudDo6c2lnbmF0dXJlRm9yKToKKyAgICAgICAgKiBieXRlY29kZS9TcGVj
dWxhdGVkVHlwZS5oOgorICAgICAgICAoSlNDOjppc05vdFN0cmluZ1NwZWN1bGF0aW9uKToKKyAg
ICAgICAgKEpTQzo6aXNOb3RJbnQzMlNwZWN1bGF0aW9uKToKKyAgICAgICAgKEpTQzo6aXNOb3RC
b29sZWFuU3BlY3VsYXRpb24pOgorICAgICAgICAqIGRmZy9ERkdBYnN0cmFjdEludGVycHJldGVy
SW5saW5lcy5oOgorICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJh
Y3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyk6CisgICAgICAgICogZGZnL0RGR0J5dGVDb2Rl
UGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6YWRkQ2FsbCk6
CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUNhbGwpOgorICAgICAg
ICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjphdHRlbXB0VG9JbmxpbmVDYWxsKToKKyAgICAg
ICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW5saW5pbmcpOgorICAgICAgICAo
SlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVET01KSVRDYWxsKToKKyAgICAgICAgKEpT
Qzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayk6CisgICAgICAgICogZGZnL0RGR0Ns
b2JiZXJpemUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpjbG9iYmVyaXplKToKKyAgICAgICAgKiBk
ZmcvREZHRG9lc0dDLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpkb2VzR0MpOgorICAgICAgICAq
IGRmZy9ERkdGaXh1cFBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpGaXh1cFBoYXNlOjpm
aXh1cE5vZGUpOgorICAgICAgICAoSlNDOjpERkc6OkZpeHVwUGhhc2U6OmF0dGVtcHRUb01ha2VD
YWxsRE9NKToKKyAgICAgICAgKEpTQzo6REZHOjpGaXh1cFBoYXNlOjpmaXh1cENoZWNrRE9NKToK
KyAgICAgICAgKEpTQzo6REZHOjpGaXh1cFBoYXNlOjpmaXh1cENhbGxET00pOgorICAgICAgICAq
IGRmZy9ERkdOb2RlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpjb252ZXJ0VG9DYWxs
RE9NKToKKyAgICAgICAgKiBkZmcvREZHTm9kZS5oOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6
Omhhc0hlYXBQcmVkaWN0aW9uKToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpzaG91bGRTcGVj
dWxhdGVOb3RJbnQzMik6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6c2hvdWxkU3BlY3VsYXRl
Tm90Qm9vbGVhbik6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6c2hvdWxkU3BlY3VsYXRlTm90
U3RyaW5nKToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpoYXNTaWduYXR1cmUpOgorICAgICAg
ICAoSlNDOjpERkc6Ok5vZGU6OnNpZ25hdHVyZSk6CisgICAgICAgICogZGZnL0RGR05vZGVUeXBl
Lmg6CisgICAgICAgICogZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcDoKKyAg
ICAgICAgKiBkZmcvREZHU2FmZVRvRXhlY3V0ZS5oOgorICAgICAgICAoSlNDOjpERkc6OnNhZmVU
b0V4ZWN1dGUpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHA6CisgICAgICAg
IChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVDYWxsRE9NKToKKyAgICAgICAgKiBk
ZmcvREZHU3BlY3VsYXRpdmVKSVQuaDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJ
VDo6Y2FsbE9wZXJhdGlvbik6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQu
Y3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToKKyAgICAg
ICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGRvbWppdC9ET01KSVRFZmZlY3QuaDoK
KyAgICAgICAgKEpTQzo6RE9NSklUOjpFZmZlY3Q6OkVmZmVjdCk6CisgICAgICAgIChKU0M6OkRP
TUpJVDo6RWZmZWN0Ojpmb3JXcml0ZSk6CisgICAgICAgIChKU0M6OkRPTUpJVDo6RWZmZWN0Ojpm
b3JSZWFkKToKKyAgICAgICAgKEpTQzo6RE9NSklUOjpFZmZlY3Q6OmZvclJlYWRXcml0ZSk6Cisg
ICAgICAgIChKU0M6OkRPTUpJVDo6RWZmZWN0Ojpmb3JQdXJlKToKKyAgICAgICAgKEpTQzo6RE9N
SklUOjpFZmZlY3Q6OmZvckRlZik6CisgICAgICAgIChKU0M6OkRPTUpJVDo6RWZmZWN0OjptdXN0
R2VuZXJhdGUpOgorICAgICAgICBJbiBjbGFuZywgd2UgY2Fubm90IG1ha2UgdGhpcyBFZmZlY3Qg
Y29uc3RydWN0b3IgY29uc3RleHByIGlmIHdlIHVzZSBPcHRpb25hbDxIZWFwUmFuZ2U+LgorICAg
ICAgICBTbyB3ZSB1c2UgSGVhcFJhbmdlOjp0b3AoKSBmb3IgTnVsbG9wdCBkZWYgbm93LgorCisg
ICAgICAgICogZG9taml0L0RPTUpJVEhlYXBSYW5nZS5oOgorICAgICAgICAoSlNDOjpET01KSVQ6
OkhlYXBSYW5nZTo6ZnJvbVJhdyk6CisgICAgICAgIChKU0M6OkRPTUpJVDo6SGVhcFJhbmdlOjpv
cGVyYXRvciBib29sKToKKyAgICAgICAgKEpTQzo6RE9NSklUOjpIZWFwUmFuZ2U6Om9wZXJhdG9y
PT0pOgorICAgICAgICAoSlNDOjpET01KSVQ6OkhlYXBSYW5nZTo6b3BlcmF0b3IhPSk6CisgICAg
ICAgIChKU0M6OkRPTUpJVDo6SGVhcFJhbmdlOjpmcm9tQ29uc3RhbnQpOgorICAgICAgICAqIGRv
bWppdC9ET01KSVRTaWduYXR1cmUuaDogQ29waWVkIGZyb20gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RvbWppdC9ET01KSVRFZmZlY3QuaC4KKyAgICAgICAgKEpTQzo6RE9NSklUOjpTaWduYXR1cmU6
OlNpZ25hdHVyZSk6CisgICAgICAgIChKU0M6OkRPTUpJVDo6U2lnbmF0dXJlOjphcmd1bWVudENv
dW50KToKKyAgICAgICAgKEpTQzo6RE9NSklUOjpTaWduYXR1cmU6OmNoZWNrRE9NKToKKyAgICAg
ICAgKiBmdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpjYW5Db21w
aWxlKToKKyAgICAgICAgKiBmdGwvRlRMTG93ZXJERkdUb0IzLmNwcDoKKyAgICAgICAgKEpTQzo6
RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZU5vZGUpOgorICAgICAgICAoSlNDOjpGVEw6
OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlQ2FsbERPTSk6CisgICAgICAgICogaml0L0pJVE9w
ZXJhdGlvbnMuaDoKKyAgICAgICAgKiBqaXQvSklUVGh1bmtzLmNwcDoKKyAgICAgICAgKEpTQzo6
SklUVGh1bmtzOjpob3N0RnVuY3Rpb25TdHViKToKKyAgICAgICAgKiBqaXQvSklUVGh1bmtzLmg6
CisgICAgICAgICogcnVudGltZS9KU0JvdW5kRnVuY3Rpb24uY3BwOgorICAgICAgICAoSlNDOjpK
U0JvdW5kRnVuY3Rpb246OmNyZWF0ZSk6CisgICAgICAgICogcnVudGltZS9KU0NlbGwuaDoKKyAg
ICAgICAgKiBydW50aW1lL0pTRnVuY3Rpb24uY3BwOgorICAgICAgICAoSlNDOjpKU0Z1bmN0aW9u
OjpjcmVhdGUpOgorICAgICAgICAqIHJ1bnRpbWUvSlNGdW5jdGlvbi5oOgorICAgICAgICAqIHJ1
bnRpbWUvSlNOYXRpdmVTdGRGdW5jdGlvbi5jcHA6CisgICAgICAgIChKU0M6OkpTTmF0aXZlU3Rk
RnVuY3Rpb246OmNyZWF0ZSk6CisgICAgICAgICogcnVudGltZS9KU09iamVjdC5jcHA6CisgICAg
ICAgIChKU0M6OkpTT2JqZWN0OjpwdXREaXJlY3ROYXRpdmVGdW5jdGlvbik6CisgICAgICAgICog
cnVudGltZS9KU09iamVjdC5oOgorICAgICAgICAqIHJ1bnRpbWUvTG9va3VwLmg6CisgICAgICAg
IChKU0M6Okhhc2hUYWJsZVZhbHVlOjpmdW5jdGlvbkxlbmd0aCk6CisgICAgICAgIChKU0M6Okhh
c2hUYWJsZVZhbHVlOjpzaWduYXR1cmUpOgorICAgICAgICAoSlNDOjpyZWlmeVN0YXRpY1Byb3Bl
cnR5KToKKyAgICAgICAgKiBydW50aW1lL05hdGl2ZUV4ZWN1dGFibGUuY3BwOgorICAgICAgICAo
SlNDOjpOYXRpdmVFeGVjdXRhYmxlOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpOYXRpdmVFeGVj
dXRhYmxlOjpOYXRpdmVFeGVjdXRhYmxlKToKKyAgICAgICAgKiBydW50aW1lL05hdGl2ZUV4ZWN1
dGFibGUuaDoKKyAgICAgICAgKiBydW50aW1lL1Byb3BlcnR5U2xvdC5oOgorICAgICAgICAqIHJ1
bnRpbWUvVk0uY3BwOgorICAgICAgICAoSlNDOjpWTTo6Z2V0SG9zdEZ1bmN0aW9uKToKKyAgICAg
ICAgKiBydW50aW1lL1ZNLmg6CisKIDIwMTYtMTEtMDIgIEFuZHJlYXMgS2xpbmcgIDxha2xpbmdA
YXBwbGUuY29tPgogCiAgICAgICAgIE1hcmtlZFNwYWNlIHNob3VsZCBoYXZlIHNwZWNpYWxpemVk
IHNpemUgY2xhc3NlcyBmb3IgcG9wdWxhciBlbmdpbmUgb2JqZWN0cy4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBh
YTc0Mzc4MjRjM2JkNzVjMmM3ZmRmYmEwOWMzMzYxNjU5MzMxNmRlLi5jNTZmOWE5ZGRkYWJjM2Ix
NDNmYWUyM2QwZjg0NmYwMjkzMDI5YzI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTEwIEBACisy
MDE2LTExLTAyICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgorCisgICAg
ICAgIFtET01KSVRdIEFkZCBET01KSVQ6OlNpZ25hdHVyZQorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYyOTgwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
U2FhbSBCYXJhdGkuCisKKyAgICAgICAgV2UgaW50cm9kdWNlIERPTUpJVDo6U2lnbmF0dXJlLiBU
aGlzIHNpZ25hdHVyZSBvYmplY3QgaXMgYXV0b21hdGljYWxseSBnZW5lcmF0ZWQgYnkgSURMIGNv
ZGUgZ2VuZXJhdG9yLgorICAgICAgICBJdCBob2xkcyAoMSkgdHlwZXMsICgyKSBwb2ludGVyIHRv
IHRoZSB1bnNhZmUgZnVuY3Rpb24gKHRoZSBmdW5jdGlvbiB3aXRob3V0IGNoZWNrcyksIGFuZCAo
MykgdGhlIGVmZmVjdAorICAgICAgICBvZiB0aGUgZnVuY3Rpb24uIFdlIHVzZSBjb25zdGV4cHIg
dG8gaW5pdGlhbGl6ZSBET01KSVQ6OlNpZ25hdHVyZSB3aXRob3V0IGludm9raW5nIGdsb2JhbCBj
b25zdHJ1Y3RvcnMuCisgICAgICAgIFRodXMgdGhlIGNvbnRlbnQgaXMgZW1iZWRkZWQgaW50byB0
aGUgYmluYXJ5IGFzIHRoZSBjb25zdGFudCB2YWx1ZXMuCisKKyAgICAgICAgV2UgYWxzbyBjbGVh
biB1cCB0aGUgSURMIGNvZGUgZ2VuZXJhdG9yIHJlbGF0ZWQgdG8gRE9NSklUIHBhcnQuIEluc3Rl
YWQgb2Ygc3dpdGNoaW5nIHRoaW5ncyBpbnNpZGUgSURMCisgICAgICAgIGNvZGUgZ2VuZXJhdG9y
LCB3ZSB1c2UgQysrIHRlbXBsYXRlIHRvIGRpc3BhdGNoIHRoaW5ncyBhdCBjb21waWxlIHRpbWUu
IFRoaXMgdGVtcGxhdGUgbWV0YSBwcm9ncmFtbWluZworICAgICAgICBpcyBoaWdobHkgdXRpbGl6
ZWQgaW4gSURMIHRoZXNlIGRheXMuCisKKyAgICAgICAgVG8gbWFrZSBET01KSVQ6OlNpZ25hdHVy
ZSBjb25zdGV4cHIsIHdlIGFsc28gbmVlZCB0byBkZWZpbmUgRE9NSklUIGFic3RyYWN0IGhlYXAg
dGhpbmdzIGluIHRoZSBidWlsZCB0aW1lLgorICAgICAgICBUbyBkbyBzbywgd2UgaW50cm9kdWNl
IGEgdGlueSBSdWJ5IHNjcmlwdCB0byBjYWxjdWxhdGUgdGhlIHJhbmdlIG9mIGFic3RyYWN0IGhl
YXBzLiBXZSBjYW4gb2ZmZXIgdGhlIGFic3RyYWN0CisgICAgICAgIGhlYXAgdHJlZSBhcyBZQU1M
IGZvcm1hdCBhbmQgdGhlIHNjcmlwdCB3aWxsIHByb2R1Y2UgYSBDKysgaGVhZGVyIGhvbGRpbmcg
dGhlIGNhbGN1bGF0ZWQgYWJzdHJhY3QgaGVhcCByYW5nZXMKKworICAgICAgICAqIENNYWtlTGlz
dHMudHh0OgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLm1ha2U6CisgICAgICAgICogRm9yd2Fy
ZGluZ0hlYWRlcnMvYnl0ZWNvZGUvU3BlY3VsYXRlZFR5cGUuaDogUmVuYW1lZCBmcm9tIFNvdXJj
ZS9XZWJDb3JlL2RvbWppdC9ET01KSVRBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmguCisgICAgICAg
ICogRm9yd2FyZGluZ0hlYWRlcnMvZG9taml0L0RPTUpJVFNpZ25hdHVyZS5oOiBSZW5hbWVkIGZy
b20gU291cmNlL1dlYkNvcmUvZG9taml0L0RPTUpJVEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuY3Bw
LgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAg
KiBiaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5oOgorICAgICAgICAqIGJpbmRpbmdzL3Nj
cmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtOgorICAgICAgICAoR2VuZXJhdGVIZWFkZXIpOgorICAg
ICAgICAoR2VuZXJhdGVQcm9wZXJ0aWVzSGFzaFRhYmxlKToKKyAgICAgICAgKEdldFVuc2FmZUFy
Z3VtZW50VHlwZSk6CisgICAgICAgIChHZXRBcmd1bWVudFR5cGVGaWx0ZXIpOgorICAgICAgICAo
R2V0UmVzdWx0VHlwZUZpbHRlcik6CisgICAgICAgIChHZW5lcmF0ZUltcGxlbWVudGF0aW9uKToK
KyAgICAgICAgKFVuc2FmZVRvTmF0aXZlKToKKyAgICAgICAgKEdlbmVyYXRlSGFzaFRhYmxlVmFs
dWVBcnJheSk6CisgICAgICAgIChDb21wdXRlRnVuY3Rpb25TcGVjaWFsKToKKyAgICAgICAgKiBi
aW5kaW5ncy9zY3JpcHRzL0lETEF0dHJpYnV0ZXMudHh0OgorICAgICAgICAqIGJpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RET01KSVQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QmluZGlu
Z0NhbGxlcjxKU1Rlc3RET01KSVQ+OjpjYXN0Rm9yT3BlcmF0aW9uKToKKyAgICAgICAgKFdlYkNv
cmU6OlRlc3RET01KSVRBbnlBdHRyRE9NSklUOjpUZXN0RE9NSklUQW55QXR0ckRPTUpJVCk6Cisg
ICAgICAgIChXZWJDb3JlOjpUZXN0RE9NSklUQm9vbGVhbkF0dHJET01KSVQ6OlRlc3RET01KSVRC
b29sZWFuQXR0ckRPTUpJVCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0RE9NSklUQnl0ZUF0dHJE
T01KSVQ6OlRlc3RET01KSVRCeXRlQXR0ckRPTUpJVCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0
RE9NSklUT2N0ZXRBdHRyRE9NSklUOjpUZXN0RE9NSklUT2N0ZXRBdHRyRE9NSklUKToKKyAgICAg
ICAgKFdlYkNvcmU6OlRlc3RET01KSVRTaG9ydEF0dHJET01KSVQ6OlRlc3RET01KSVRTaG9ydEF0
dHJET01KSVQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdERPTUpJVFVuc2lnbmVkU2hvcnRBdHRy
RE9NSklUOjpUZXN0RE9NSklUVW5zaWduZWRTaG9ydEF0dHJET01KSVQpOgorICAgICAgICAoV2Vi
Q29yZTo6VGVzdERPTUpJVExvbmdBdHRyRE9NSklUOjpUZXN0RE9NSklUTG9uZ0F0dHJET01KSVQp
OgorICAgICAgICAoV2ViQ29yZTo6VGVzdERPTUpJVFVuc2lnbmVkTG9uZ0F0dHJET01KSVQ6OlRl
c3RET01KSVRVbnNpZ25lZExvbmdBdHRyRE9NSklUKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RE
T01KSVRMb25nTG9uZ0F0dHJET01KSVQ6OlRlc3RET01KSVRMb25nTG9uZ0F0dHJET01KSVQpOgor
ICAgICAgICAoV2ViQ29yZTo6VGVzdERPTUpJVFVuc2lnbmVkTG9uZ0xvbmdBdHRyRE9NSklUOjpU
ZXN0RE9NSklUVW5zaWduZWRMb25nTG9uZ0F0dHJET01KSVQpOgorICAgICAgICAoV2ViQ29yZTo6
VGVzdERPTUpJVEZsb2F0QXR0ckRPTUpJVDo6VGVzdERPTUpJVEZsb2F0QXR0ckRPTUpJVCk6Cisg
ICAgICAgIChXZWJDb3JlOjpUZXN0RE9NSklUVW5yZXN0cmljdGVkRmxvYXRBdHRyRE9NSklUOjpU
ZXN0RE9NSklUVW5yZXN0cmljdGVkRmxvYXRBdHRyRE9NSklUKToKKyAgICAgICAgKFdlYkNvcmU6
OlRlc3RET01KSVREb3VibGVBdHRyRE9NSklUOjpUZXN0RE9NSklURG91YmxlQXR0ckRPTUpJVCk6
CisgICAgICAgIChXZWJDb3JlOjpUZXN0RE9NSklUVW5yZXN0cmljdGVkRG91YmxlQXR0ckRPTUpJ
VDo6VGVzdERPTUpJVFVucmVzdHJpY3RlZERvdWJsZUF0dHJET01KSVQpOgorICAgICAgICAoV2Vi
Q29yZTo6VGVzdERPTUpJVERvbVN0cmluZ0F0dHJET01KSVQ6OlRlc3RET01KSVREb21TdHJpbmdB
dHRyRE9NSklUKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RET01KSVRCeXRlU3RyaW5nQXR0ckRP
TUpJVDo6VGVzdERPTUpJVEJ5dGVTdHJpbmdBdHRyRE9NSklUKToKKyAgICAgICAgKFdlYkNvcmU6
OlRlc3RET01KSVRVc3ZTdHJpbmdBdHRyRE9NSklUOjpUZXN0RE9NSklUVXN2U3RyaW5nQXR0ckRP
TUpJVCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0RE9NSklUTm9kZUF0dHJET01KSVQ6OlRlc3RE
T01KSVROb2RlQXR0ckRPTUpJVCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0RE9NSklUQm9vbGVh
bk51bGxhYmxlQXR0ckRPTUpJVDo6VGVzdERPTUpJVEJvb2xlYW5OdWxsYWJsZUF0dHJET01KSVQp
OgorICAgICAgICAoV2ViQ29yZTo6VGVzdERPTUpJVEJ5dGVOdWxsYWJsZUF0dHJET01KSVQ6OlRl
c3RET01KSVRCeXRlTnVsbGFibGVBdHRyRE9NSklUKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RE
T01KSVRPY3RldE51bGxhYmxlQXR0ckRPTUpJVDo6VGVzdERPTUpJVE9jdGV0TnVsbGFibGVBdHRy
RE9NSklUKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RET01KSVRTaG9ydE51bGxhYmxlQXR0ckRP
TUpJVDo6VGVzdERPTUpJVFNob3J0TnVsbGFibGVBdHRyRE9NSklUKToKKyAgICAgICAgKFdlYkNv
cmU6OlRlc3RET01KSVRVbnNpZ25lZFNob3J0TnVsbGFibGVBdHRyRE9NSklUOjpUZXN0RE9NSklU
VW5zaWduZWRTaG9ydE51bGxhYmxlQXR0ckRPTUpJVCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0
RE9NSklUTG9uZ051bGxhYmxlQXR0ckRPTUpJVDo6VGVzdERPTUpJVExvbmdOdWxsYWJsZUF0dHJE
T01KSVQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdERPTUpJVFVuc2lnbmVkTG9uZ051bGxhYmxl
QXR0ckRPTUpJVDo6VGVzdERPTUpJVFVuc2lnbmVkTG9uZ051bGxhYmxlQXR0ckRPTUpJVCk6Cisg
ICAgICAgIChXZWJDb3JlOjpUZXN0RE9NSklUTG9uZ0xvbmdOdWxsYWJsZUF0dHJET01KSVQ6OlRl
c3RET01KSVRMb25nTG9uZ051bGxhYmxlQXR0ckRPTUpJVCk6CisgICAgICAgIChXZWJDb3JlOjpU
ZXN0RE9NSklUVW5zaWduZWRMb25nTG9uZ051bGxhYmxlQXR0ckRPTUpJVDo6VGVzdERPTUpJVFVu
c2lnbmVkTG9uZ0xvbmdOdWxsYWJsZUF0dHJET01KSVQpOgorICAgICAgICAoV2ViQ29yZTo6VGVz
dERPTUpJVEZsb2F0TnVsbGFibGVBdHRyRE9NSklUOjpUZXN0RE9NSklURmxvYXROdWxsYWJsZUF0
dHJET01KSVQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdERPTUpJVFVucmVzdHJpY3RlZEZsb2F0
TnVsbGFibGVBdHRyRE9NSklUOjpUZXN0RE9NSklUVW5yZXN0cmljdGVkRmxvYXROdWxsYWJsZUF0
dHJET01KSVQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdERPTUpJVERvdWJsZU51bGxhYmxlQXR0
ckRPTUpJVDo6VGVzdERPTUpJVERvdWJsZU51bGxhYmxlQXR0ckRPTUpJVCk6CisgICAgICAgIChX
ZWJDb3JlOjpUZXN0RE9NSklUVW5yZXN0cmljdGVkRG91YmxlTnVsbGFibGVBdHRyRE9NSklUOjpU
ZXN0RE9NSklUVW5yZXN0cmljdGVkRG91YmxlTnVsbGFibGVBdHRyRE9NSklUKToKKyAgICAgICAg
KFdlYkNvcmU6OlRlc3RET01KSVREb21TdHJpbmdOdWxsYWJsZUF0dHJET01KSVQ6OlRlc3RET01K
SVREb21TdHJpbmdOdWxsYWJsZUF0dHJET01KSVQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdERP
TUpJVEJ5dGVTdHJpbmdOdWxsYWJsZUF0dHJET01KSVQ6OlRlc3RET01KSVRCeXRlU3RyaW5nTnVs
bGFibGVBdHRyRE9NSklUKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RET01KSVRVc3ZTdHJpbmdO
dWxsYWJsZUF0dHJET01KSVQ6OlRlc3RET01KSVRVc3ZTdHJpbmdOdWxsYWJsZUF0dHJET01KSVQp
OgorICAgICAgICAoV2ViQ29yZTo6VGVzdERPTUpJVE5vZGVOdWxsYWJsZUF0dHJET01KSVQ6OlRl
c3RET01KSVROb2RlTnVsbGFibGVBdHRyRE9NSklUKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVz
dERPTUpJVFByb3RvdHlwZUZ1bmN0aW9uR2V0QXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6
OmpzVGVzdERPTUpJVFByb3RvdHlwZUZ1bmN0aW9uR2V0QXR0cmlidXRlQ2FsbGVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OnVuc2FmZUpzVGVzdERPTUpJVFByb3RvdHlwZUZ1bmN0aW9uR2V0QXR0cmli
dXRlKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdERPTUpJVFByb3RvdHlwZUZ1bmN0aW9uSXRl
bSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RET01KSVRQcm90b3R5cGVGdW5jdGlvbkl0ZW1D
YWxsZXIpOgorICAgICAgICAoV2ViQ29yZTo6dW5zYWZlSnNUZXN0RE9NSklUUHJvdG90eXBlRnVu
Y3Rpb25JdGVtKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdERPTUpJVFByb3RvdHlwZUZ1bmN0
aW9uSGFzQXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdERPTUpJVFByb3RvdHlw
ZUZ1bmN0aW9uSGFzQXR0cmlidXRlQ2FsbGVyKToKKyAgICAgICAgKFdlYkNvcmU6OnVuc2FmZUpz
VGVzdERPTUpJVFByb3RvdHlwZUZ1bmN0aW9uSGFzQXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNv
cmU6OmpzVGVzdERPTUpJVFByb3RvdHlwZUZ1bmN0aW9uR2V0RWxlbWVudEJ5SWQpOgorICAgICAg
ICAoV2ViQ29yZTo6anNUZXN0RE9NSklUUHJvdG90eXBlRnVuY3Rpb25HZXRFbGVtZW50QnlJZENh
bGxlcik6CisgICAgICAgIChXZWJDb3JlOjp1bnNhZmVKc1Rlc3RET01KSVRQcm90b3R5cGVGdW5j
dGlvbkdldEVsZW1lbnRCeUlkKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdERPTUpJVFByb3Rv
dHlwZUZ1bmN0aW9uR2V0RWxlbWVudHNCeU5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0
RE9NSklUUHJvdG90eXBlRnVuY3Rpb25HZXRFbGVtZW50c0J5TmFtZUNhbGxlcik6CisgICAgICAg
IChXZWJDb3JlOjp1bnNhZmVKc1Rlc3RET01KSVRQcm90b3R5cGVGdW5jdGlvbkdldEVsZW1lbnRz
QnlOYW1lKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdERPTUpJVC5pZGw6
CisgICAgICAgICogZG9tL0VsZW1lbnQuaWRsOgorICAgICAgICAqIGRvbWppdC9ET01KSVRBYnN0
cmFjdEhlYXBSZXBvc2l0b3J5LnlhbWw6IEFkZGVkLgorICAgICAgICAqIGRvbWppdC9ET01KSVRJ
RExDb252ZXJ0Lmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6RE9NSklUOjpEaXJlY3RDb252
ZXJ0ZXI8SURMRE9NU3RyaW5nPjo6ZGlyZWN0Q29udmVydDxTdHJpbmdDb252ZXJzaW9uQ29uZmln
dXJhdGlvbjo6Tm9ybWFsPik6CisgICAgICAgICogZG9taml0L0RPTUpJVElETFR5cGUuaDogQWRk
ZWQuCisgICAgICAgICogZG9taml0L0RPTUpJVElETFR5cGVGaWx0ZXIuaDogQWRkZWQuCisgICAg
ICAgICogZG9taml0L0pTRG9jdW1lbnRET01KSVQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9j
dW1lbnREb2N1bWVudEVsZW1lbnRET01KSVQ6OmNhbGxET01HZXR0ZXIpOgorICAgICAgICAqIGRv
bWppdC9KU05vZGVET01KSVQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZUZpcnN0Q2hpbGRE
T01KSVQ6OmNhbGxET01HZXR0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZUxhc3RDaGlsZERP
TUpJVDo6Y2FsbERPTUdldHRlcik6CisgICAgICAgIChXZWJDb3JlOjpOb2RlTmV4dFNpYmxpbmdE
T01KSVQ6OmNhbGxET01HZXR0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZVByZXZpb3VzU2li
bGluZ0RPTUpJVDo6Y2FsbERPTUdldHRlcik6CisgICAgICAgIChXZWJDb3JlOjpOb2RlUGFyZW50
Tm9kZURPTUpJVDo6Y2FsbERPTUdldHRlcik6CisgICAgICAgIChXZWJDb3JlOjpOb2RlT3duZXJE
b2N1bWVudERPTUpJVDo6Y2FsbERPTUdldHRlcik6CisgICAgICAgICogZG9taml0L2dlbmVyYXRl
LWFic3RyYWN0LWhlYXAucmI6IEFkZGVkLgorCiAyMDE2LTExLTAyICBTaW1vbiBGcmFzZXIgIDxz
aW1vbi5mcmFzZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFJFR1JFU1NJT04gKHIyMDgwMjUpIEdy
YXBoaWNzQ29udGV4dCBzdGF0ZSBzdGFjayBhc3NlcnRpb25zIGxvYWRpbmcgd2Via2l0Lm9yZwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAzYjA0YTE4NmY1ODEwNjdjM2E4MmZiYWEz
MmU0NjBjODcxNTgwMzVmLi4wMTZlNGY5ZjY2ZTE4NjRhNWI3MTIyNjc1NjQyZTFkZDZmZGRhZGY4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlw
dENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMjIwOCw2ICsyMjA4LDcgQEAKIAkJ
RTMzRjUwODUxQjg0MzdBMDAwNDEzODU2IC8qIEpTSW50ZXJuYWxQcm9taXNlRGVmZXJyZWQuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzM0Y1MDgzMUI4
NDM3QTAwMDQxMzg1NiAvKiBKU0ludGVybmFsUHJvbWlzZURlZmVycmVkLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTMzRjUwODcxQjg0NDlFRjAw
NDEzODU2IC8qIEpTSW50ZXJuYWxQcm9taXNlQ29uc3RydWN0b3IubHV0LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzNGNTA4NjFCODQ0OUVGMDA0MTM4
NTYgLyogSlNJbnRlcm5hbFByb21pc2VDb25zdHJ1Y3Rvci5sdXQuaCAqLzsgfTsKIAkJRTM0RURC
RjcxREI1RkZDOTAwREM4N0E1IC8qIEZyYW1lVHJhY2Vycy5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM0RURCRjYxREI1RkZDMTAwREM4N0E1IC8qIEZy
YW1lVHJhY2Vycy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CisJCUUzNTA3MDhBMURDNDlCQkYwMDg5QkNENiAvKiBET01KSVRTaWduYXR1cmUuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzNTA3MDg5MURDNDlC
QjYwMDg5QkNENiAvKiBET01KSVRTaWduYXR1cmUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFMzU0NjIyQjFCNjA2NUQxMDA1NDUzODYgLyogQ29u
c3RydWN0QWJpbGl0eS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gRTM1NDYyMkExQjYwNjVEMTAwNTQ1Mzg2IC8qIENvbnN0cnVjdEFiaWxpdHkuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFMzU1NUI4QTFE
QUUwM0E1MDBGMzY5MjEgLyogRE9NSklUQ2FsbERPTUdldHRlclBhdGNocG9pbnQuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzNTU1Qjg5MURBRTAzQTIw
MEYzNjkyMSAvKiBET01KSVRDYWxsRE9NR2V0dGVyUGF0Y2hwb2ludC5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUUzNTVGMzUyMUI3REM4NTMwMEM1
MERDNSAvKiBNb2R1bGVMb2FkZXJQcm90b3R5cGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM1NUYzNTAxQjdEQzg1MzAwQzUwREM1IC8qIE1vZHVs
ZUxvYWRlclByb3RvdHlwZS5jcHAgKi87IH07CkBAIC00NjM0LDYgKzQ2MzUsNyBAQAogCQlFMzNG
NTA4NjFCODQ0OUVGMDA0MTM4NTYgLyogSlNJbnRlcm5hbFByb21pc2VDb25zdHJ1Y3Rvci5sdXQu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNJbnRlcm5hbFByb21pc2VDb25z
dHJ1Y3Rvci5sdXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTMzRjUwODgxQjg0
NEExQTAwNDEzODU2IC8qIEludGVybmFsUHJvbWlzZUNvbnN0cnVjdG9yLmpzICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5qYXZhc2NyaXB0OyBwYXRoID0gSW50ZXJuYWxQcm9taXNlQ29uc3RydWN0b3Iu
anM7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzNEVEQkY2MURCNUZGQzEwMERDODdB
NSAvKiBGcmFtZVRyYWNlcnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRnJh
bWVUcmFjZXJzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzNTA3MDg5MURDNDlC
QjYwMDg5QkNENiAvKiBET01KSVRTaWduYXR1cmUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gRE9NSklUU2lnbmF0dXJlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUUzNTQ2MjJBMUI2MDY1RDEwMDU0NTM4NiAvKiBDb25zdHJ1Y3RBYmlsaXR5LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvbnN0cnVjdEFiaWxpdHkuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJRTM1NTVCODkxREFFMDNBMjAwRjM2OTIxIC8qIERPTUpJVENhbGxE
T01HZXR0ZXJQYXRjaHBvaW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERP
TUpJVENhbGxET01HZXR0ZXJQYXRjaHBvaW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUUzNTVGMzUwMUI3REM4NTMwMEM1MERDNSAvKiBNb2R1bGVMb2FkZXJQcm90b3R5cGUuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTW9kdWxlTG9hZGVyUHJvdG90
eXBlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTc1NzUsNiArNzU3Nyw3IEBA
CiAJCQkJRTM3QUQ4M0ExREE0OTI4MDAwRjNENDEyIC8qIERPTUpJVFBhdGNocG9pbnRQYXJhbXMu
aCAqLywKIAkJCQlFMzdBRDgzQjFEQTQ5MjgwMDBGM0Q0MTIgLyogRE9NSklUUmVnLmggKi8sCiAJ
CQkJRTNDQjFFMjQxREE3NTQwQTAwRkExRTU2IC8qIERPTUpJVFNsb3dQYXRoQ2FsbHMuaCAqLywK
KwkJCQlFMzUwNzA4OTFEQzQ5QkI2MDA4OUJDRDYgLyogRE9NSklUU2lnbmF0dXJlLmggKi8sCiAJ
CQkJRTNGRkM4NTIxREFEN0QxMDAwREVBNTNFIC8qIERPTUpJVFZhbHVlLmggKi8sCiAJCQkpOwog
CQkJcGF0aCA9IGRvbWppdDsKQEAgLTg1MDMsNiArODUwNiw3IEBACiAJCQkJNDNBQjI2QzYxQzFB
NTM1OTAwRDgyQUU2IC8qIEIzTWF0aEV4dHJhcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQUQyRkNC
RjMxREI1OERBRDAwQjNFNzM2IC8qIFdlYkFzc2VtYmx5SW5zdGFuY2VQcm90b3R5cGUuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUJDMThDNDI5MEUxNkY1Q0QwMEIzNDQ2MCAvKiBKU1N0cmluZ1JlZkNG
LmggaW4gSGVhZGVycyAqLywKKwkJCQlFMzUwNzA4QTFEQzQ5QkJGMDA4OUJDRDYgLyogRE9NSklU
U2lnbmF0dXJlLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTI4RDRBODE3N0I3MUM4MDAwN0ZBM0Mg
LyogSlNTdHJpbmdSZWZQcml2YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjkxOUQwRDE1N0VF
MEEyMDA0QTRFN0QgLyogSlNTeW1ib2xUYWJsZU9iamVjdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
NzBFQ0E2MDYxQUZEQkVBMjAwNDQ5NzM5IC8qIEpTVGVtcGxhdGVSZWdpc3RyeUtleS5oIGluIEhl
YWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2Fs
bFZhcmlhbnQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsVmFyaWFudC5o
CmluZGV4IGRlNjg4MDA2ZWYxYTk5ZTlkZDYwYjAxYTZlMDE3N2NiOThlYzdiNTEuLmNiMjg4YzYw
YjdhNGYxMzhiYWYyMTQyODQ5ZTEzOTFhOGQxMTFiYTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsVmFyaWFudC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9DYWxsVmFyaWFudC5oCkBAIC0yOCw2ICsyOCw3IEBACiAjaW5jbHVkZSAi
RnVuY3Rpb25FeGVjdXRhYmxlLmgiCiAjaW5jbHVkZSAiSlNDZWxsLmgiCiAjaW5jbHVkZSAiSlNG
dW5jdGlvbi5oIgorI2luY2x1ZGUgIk5hdGl2ZUV4ZWN1dGFibGUuaCIKIAogbmFtZXNwYWNlIEpT
QyB7CiAKQEAgLTEyMCw2ICsxMjEsMjAgQEAgY2xhc3MgQ2FsbFZhcmlhbnQgewogICAgICAgICAg
ICAgcmV0dXJuIGpzRHluYW1pY0Nhc3Q8RnVuY3Rpb25FeGVjdXRhYmxlKj4oZXhlY3V0YWJsZSk7
CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KKworICAgIE5hdGl2ZUV4ZWN1dGFibGUq
IG5hdGl2ZUV4ZWN1dGFibGUoKSBjb25zdAorICAgIHsKKyAgICAgICAgaWYgKEV4ZWN1dGFibGVC
YXNlKiBleGVjdXRhYmxlID0gdGhpcy0+ZXhlY3V0YWJsZSgpKQorICAgICAgICAgICAgcmV0dXJu
IGpzRHluYW1pY0Nhc3Q8TmF0aXZlRXhlY3V0YWJsZSo+KGV4ZWN1dGFibGUpOworICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKKyAgICB9CisKKyAgICBjb25zdCBET01KSVQ6OlNpZ25hdHVyZSogc2ln
bmF0dXJlRm9yKENvZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCkgY29uc3QKKyAgICB7CisgICAg
ICAgIGlmIChOYXRpdmVFeGVjdXRhYmxlKiBuYXRpdmVFeGVjdXRhYmxlID0gdGhpcy0+bmF0aXZl
RXhlY3V0YWJsZSgpKQorICAgICAgICAgICAgcmV0dXJuIG5hdGl2ZUV4ZWN1dGFibGUtPnNpZ25h
dHVyZUZvcihraW5kKTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQogICAgIAogICAg
IHZvaWQgZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdDsKICAgICAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TcGVjdWxhdGVkVHlwZS5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmgKaW5kZXggZjQzZGZjZDMxNTg3
MWU5ODk1M2VhMmRkZGM0YmYzMzUyNWNjZGZkZi4uZTIzZmQyYzVmNTRjZWUwOWM3YTIzYmRjMTQ5
OTkwYjYwOWIwMTkwMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1NwZWN1bGF0ZWRUeXBlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Nw
ZWN1bGF0ZWRUeXBlLmgKQEAgLTE1MSw2ICsxNTEsMTEgQEAgaW5saW5lIGJvb2wgaXNTdHJpbmdT
cGVjdWxhdGlvbihTcGVjdWxhdGVkVHlwZSB2YWx1ZSkKICAgICByZXR1cm4gISF2YWx1ZSAmJiAo
dmFsdWUgJiBTcGVjU3RyaW5nKSA9PSB2YWx1ZTsKIH0KIAoraW5saW5lIGJvb2wgaXNOb3RTdHJp
bmdTcGVjdWxhdGlvbihTcGVjdWxhdGVkVHlwZSB2YWx1ZSkKK3sKKyAgICByZXR1cm4gdmFsdWUg
JiYgISh2YWx1ZSAmIFNwZWNTdHJpbmcpOworfQorCiBpbmxpbmUgYm9vbCBpc1N0cmluZ09yT3Ro
ZXJTcGVjdWxhdGlvbihTcGVjdWxhdGVkVHlwZSB2YWx1ZSkKIHsKICAgICByZXR1cm4gISF2YWx1
ZSAmJiAodmFsdWUgJiAoU3BlY1N0cmluZyB8IFNwZWNPdGhlcikpID09IHZhbHVlOwpAQCAtMzAz
LDYgKzMwOCwxMSBAQCBpbmxpbmUgYm9vbCBpc0ludDMyU3BlY3VsYXRpb24oU3BlY3VsYXRlZFR5
cGUgdmFsdWUpCiAgICAgcmV0dXJuIHZhbHVlICYmICEodmFsdWUgJiB+U3BlY0ludDMyT25seSk7
CiB9CiAKK2lubGluZSBib29sIGlzTm90SW50MzJTcGVjdWxhdGlvbihTcGVjdWxhdGVkVHlwZSB2
YWx1ZSkKK3sKKyAgICByZXR1cm4gdmFsdWUgJiYgISh2YWx1ZSAmIFNwZWNJbnQzMk9ubHkpOwor
fQorCiBpbmxpbmUgYm9vbCBpc0ludDMyT3JCb29sZWFuU3BlY3VsYXRpb24oU3BlY3VsYXRlZFR5
cGUgdmFsdWUpCiB7CiAgICAgcmV0dXJuIHZhbHVlICYmICEodmFsdWUgJiB+KFNwZWNCb29sZWFu
IHwgU3BlY0ludDMyT25seSkpOwpAQCAtMzg4LDYgKzM5OCwxMSBAQCBpbmxpbmUgYm9vbCBpc0Jv
b2xlYW5TcGVjdWxhdGlvbihTcGVjdWxhdGVkVHlwZSB2YWx1ZSkKICAgICByZXR1cm4gdmFsdWUg
PT0gU3BlY0Jvb2xlYW47CiB9CiAKK2lubGluZSBib29sIGlzTm90Qm9vbGVhblNwZWN1bGF0aW9u
KFNwZWN1bGF0ZWRUeXBlIHZhbHVlKQoreworICAgIHJldHVybiB2YWx1ZSAmJiAhKHZhbHVlICYg
U3BlY0Jvb2xlYW4pOworfQorCiBpbmxpbmUgYm9vbCBpc090aGVyU3BlY3VsYXRpb24oU3BlY3Vs
YXRlZFR5cGUgdmFsdWUpCiB7CiAgICAgcmV0dXJuIHZhbHVlID09IFNwZWNPdGhlcjsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklu
bGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRl
cklubGluZXMuaAppbmRleCA0M2I1MWExNmVjYmFkYTUwZjlkN2Y4OGVlZTNjZjExMjZiN2EyMjRh
Li43YWRiYTcxNjAxNDYxNTEwNzJlZjY5OWQyMjZhMmFmM2NlYTA4ZDAyIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5s
aW5lcy5oCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiQXJyYXlDb25zdHJ1Y3Rvci5oIgog
I2luY2x1ZGUgIkRGR0Fic3RyYWN0SW50ZXJwcmV0ZXIuaCIKICNpbmNsdWRlICJET01KSVRHZXR0
ZXJTZXR0ZXIuaCIKKyNpbmNsdWRlICJET01KSVRTaWduYXR1cmUuaCIKICNpbmNsdWRlICJHZXRC
eUlkU3RhdHVzLmgiCiAjaW5jbHVkZSAiR2V0dGVyU2V0dGVyLmgiCiAjaW5jbHVkZSAiSGFzaE1h
cEltcGwuaCIKQEAgLTIzMDMsNiArMjMwNCwxMyBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8
QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyh1bnNpZ25lZCBjbG9iYmVyTGltaQog
ICAgICAgICBmb3JOb2RlKG5vZGUpLnNldFR5cGUobV9ncmFwaCwgY2FsbERPTUdldHRlckRhdGEt
PmRvbUpJVC0+cmVzdWx0VHlwZSgpKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQorICAgIGNhc2Ug
Q2FsbERPTTogeworICAgICAgICBjb25zdCBET01KSVQ6OlNpZ25hdHVyZSogc2lnbmF0dXJlID0g
bm9kZS0+c2lnbmF0dXJlKCk7CisgICAgICAgIGlmIChzaWduYXR1cmUtPmVmZmVjdC53cml0ZXMp
CisgICAgICAgICAgICBjbG9iYmVyV29ybGQobm9kZS0+b3JpZ2luLnNlbWFudGljLCBjbG9iYmVy
TGltaXQpOworICAgICAgICBmb3JOb2RlKG5vZGUpLnNldFR5cGUobV9ncmFwaCwgc2lnbmF0dXJl
LT5yZXN1bHQpOworICAgICAgICBicmVhazsKKyAgICB9CiAgICAgY2FzZSBDaGVja0FycmF5OiB7
CiAgICAgICAgIGlmIChub2RlLT5hcnJheU1vZGUoKS5hbHJlYWR5Q2hlY2tlZChtX2dyYXBoLCBu
b2RlLCBmb3JOb2RlKG5vZGUtPmNoaWxkMSgpKSkpIHsKICAgICAgICAgICAgIG1fc3RhdGUuc2V0
Rm91bmRDb25zdGFudHModHJ1ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Qnl0ZUNvZGVQYXJzZXIuY3BwCmluZGV4IGU1MTRlZTFkMzFhY2E3NzFiMzU4NWZjNzZkOTU2ZTc5
NTBiMDBiMzMuLjdmMjFmYTYyNjgwZWZkZGY2ODBjMGRjNzE3MDNiMjNlNjhiNzc4YjQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCkBAIC0y
MTMsNiArMjEzLDggQEAgY2xhc3MgQnl0ZUNvZGVQYXJzZXIgewogICAgIHRlbXBsYXRlPHR5cGVu
YW1lIENoZWNrc0Z1bmN0b3I+CiAgICAgYm9vbCBoYW5kbGVJbnRyaW5zaWNDYWxsKE5vZGUqIGNh
bGxlZSwgaW50IHJlc3VsdE9wZXJhbmQsIEludHJpbnNpYywgaW50IHJlZ2lzdGVyT2Zmc2V0LCBp
bnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24s
IGNvbnN0IENoZWNrc0Z1bmN0b3ImIGluc2VydENoZWNrcyk7CiAgICAgdGVtcGxhdGU8dHlwZW5h
bWUgQ2hlY2tzRnVuY3Rvcj4KKyAgICBib29sIGhhbmRsZURPTUpJVENhbGwoTm9kZSogY2FsbGVl
LCBpbnQgcmVzdWx0T3BlcmFuZCwgY29uc3QgRE9NSklUOjpTaWduYXR1cmUqLCBpbnQgcmVnaXN0
ZXJPZmZzZXQsIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgU3BlY3VsYXRlZFR5cGUg
cHJlZGljdGlvbiwgY29uc3QgQ2hlY2tzRnVuY3RvciYgaW5zZXJ0Q2hlY2tzKTsKKyAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBDaGVja3NGdW5jdG9yPgogICAgIGJvb2wgaGFuZGxlSW50cmluc2ljR2V0
dGVyKGludCByZXN1bHRPcGVyYW5kLCBjb25zdCBHZXRCeUlkVmFyaWFudCYgaW50cmluc2ljVmFy
aWFudCwgTm9kZSogdGhpc05vZGUsIGNvbnN0IENoZWNrc0Z1bmN0b3ImIGluc2VydENoZWNrcyk7
CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hlY2tzRnVuY3Rvcj4KICAgICBib29sIGhhbmRsZVR5
cGVkQXJyYXlDb25zdHJ1Y3RvcihpbnQgcmVzdWx0T3BlcmFuZCwgSW50ZXJuYWxGdW5jdGlvbios
IGludCByZWdpc3Rlck9mZnNldCwgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBUeXBl
ZEFycmF5VHlwZSwgY29uc3QgQ2hlY2tzRnVuY3RvciYgaW5zZXJ0Q2hlY2tzKTsKQEAgLTgxOCwx
OCArODIwLDE4IEBAIGNsYXNzIEJ5dGVDb2RlUGFyc2VyIHsKICAgICB9CiAgICAgCiAgICAgTm9k
ZSogYWRkQ2FsbCgKLSAgICAgICAgaW50IHJlc3VsdCwgTm9kZVR5cGUgb3AsIE9wSW5mbyBvcElu
Zm8sIE5vZGUqIGNhbGxlZSwgaW50IGFyZ0NvdW50LCBpbnQgcmVnaXN0ZXJPZmZzZXQsCisgICAg
ICAgIGludCByZXN1bHQsIE5vZGVUeXBlIG9wLCBjb25zdCBET01KSVQ6OlNpZ25hdHVyZSogc2ln
bmF0dXJlLCBOb2RlKiBjYWxsZWUsIGludCBhcmdDb3VudCwgaW50IHJlZ2lzdGVyT2Zmc2V0LAog
ICAgICAgICBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uKQogICAgIHsKICAgICAgICAgaWYgKG9w
ID09IFRhaWxDYWxsKSB7CiAgICAgICAgICAgICBpZiAoYWxsSW5saW5lRnJhbWVzQXJlVGFpbENh
bGxzKCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGFkZENhbGxXaXRob3V0U2V0dGluZ1Jlc3Vs
dChvcCwgT3BJbmZvKCksIGNhbGxlZSwgYXJnQ291bnQsIHJlZ2lzdGVyT2Zmc2V0LCBPcEluZm8o
KSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIGFkZENhbGxXaXRob3V0U2V0dGluZ1Jlc3VsdChv
cCwgT3BJbmZvKHNpZ25hdHVyZSksIGNhbGxlZSwgYXJnQ291bnQsIHJlZ2lzdGVyT2Zmc2V0LCBP
cEluZm8oKSk7CiAgICAgICAgICAgICBvcCA9IFRhaWxDYWxsSW5saW5lZENhbGxlcjsKICAgICAg
ICAgfQogCiAKICAgICAgICAgTm9kZSogY2FsbCA9IGFkZENhbGxXaXRob3V0U2V0dGluZ1Jlc3Vs
dCgKLSAgICAgICAgICAgIG9wLCBvcEluZm8sIGNhbGxlZSwgYXJnQ291bnQsIHJlZ2lzdGVyT2Zm
c2V0LCBPcEluZm8ocHJlZGljdGlvbikpOworICAgICAgICAgICAgb3AsIE9wSW5mbyhzaWduYXR1
cmUpLCBjYWxsZWUsIGFyZ0NvdW50LCByZWdpc3Rlck9mZnNldCwgT3BJbmZvKHByZWRpY3Rpb24p
KTsKICAgICAgICAgVmlydHVhbFJlZ2lzdGVyIHJlc3VsdFJlZyhyZXN1bHQpOwogICAgICAgICBp
ZiAocmVzdWx0UmVnLmlzVmFsaWQoKSkKICAgICAgICAgICAgIHNldChyZXN1bHRSZWcsIGNhbGwp
OwpAQCAtMTI4NCw3ICsxMjg2LDcgQEAgQnl0ZUNvZGVQYXJzZXI6OlRlcm1pbmFsaXR5IEJ5dGVD
b2RlUGFyc2VyOjpoYW5kbGVDYWxsKAogICAgICAgICAvLyBPZGRseSwgdGhpcyBjb25mbGF0ZXMg
Y2FsbHMgdGhhdCBoYXZlbid0IGV4ZWN1dGVkIHdpdGggY2FsbHMgdGhhdCBiZWhhdmVkIHN1ZmZp
Y2llbnRseSBwb2x5bW9ycGhpY2FsbHkKICAgICAgICAgLy8gdGhhdCB3ZSBjYW5ub3Qgb3B0aW1p
emUgdGhlbS4KIAotICAgICAgICBOb2RlKiBjYWxsTm9kZSA9IGFkZENhbGwocmVzdWx0LCBvcCwg
T3BJbmZvKCksIGNhbGxUYXJnZXQsIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCByZWdpc3Rl
ck9mZnNldCwgcHJlZGljdGlvbik7CisgICAgICAgIE5vZGUqIGNhbGxOb2RlID0gYWRkQ2FsbChy
ZXN1bHQsIG9wLCBudWxscHRyLCBjYWxsVGFyZ2V0LCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhp
cywgcmVnaXN0ZXJPZmZzZXQsIHByZWRpY3Rpb24pOwogICAgICAgICBpZiAoY2FsbE5vZGUtPm9w
KCkgPT0gVGFpbENhbGwpCiAgICAgICAgICAgICByZXR1cm4gVGVybWluYWw7CiAgICAgICAgIEFT
U0VSVChjYWxsTm9kZS0+b3AoKSAhPSBUYWlsQ2FsbFZhcmFyZ3MgJiYgY2FsbE5vZGUtPm9wKCkg
IT0gVGFpbENhbGxGb3J3YXJkVmFyYXJncyk7CkBAIC0xMjk5LDcgKzEzMDEsNyBAQCBCeXRlQ29k
ZVBhcnNlcjo6VGVybWluYWxpdHkgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUNhbGwoCiAgICAgICAg
IHJldHVybiBOb25UZXJtaW5hbDsKICAgICB9CiAgICAgCi0gICAgTm9kZSogY2FsbE5vZGUgPSBh
ZGRDYWxsKHJlc3VsdCwgb3AsIE9wSW5mbygpLCBjYWxsVGFyZ2V0LCBhcmd1bWVudENvdW50SW5j
bHVkaW5nVGhpcywgcmVnaXN0ZXJPZmZzZXQsIHByZWRpY3Rpb24pOworICAgIE5vZGUqIGNhbGxO
b2RlID0gYWRkQ2FsbChyZXN1bHQsIG9wLCBudWxscHRyLCBjYWxsVGFyZ2V0LCBhcmd1bWVudENv
dW50SW5jbHVkaW5nVGhpcywgcmVnaXN0ZXJPZmZzZXQsIHByZWRpY3Rpb24pOwogICAgIGlmIChj
YWxsTm9kZS0+b3AoKSA9PSBUYWlsQ2FsbCkKICAgICAgICAgcmV0dXJuIFRlcm1pbmFsOwogICAg
IEFTU0VSVChjYWxsTm9kZS0+b3AoKSAhPSBUYWlsQ2FsbFZhcmFyZ3MgJiYgY2FsbE5vZGUtPm9w
KCkgIT0gVGFpbENhbGxGb3J3YXJkVmFyYXJncyk7CkBAIC0xNzI2LDYgKzE3MjgsMTkgQEAgYm9v
bCBCeXRlQ29kZVBhcnNlcjo6YXR0ZW1wdFRvSW5saW5lQ2FsbChOb2RlKiBjYWxsVGFyZ2V0Tm9k
ZSwgaW50IHJlc3VsdE9wZXJhbmQKICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKCFkaWRJbnNl
cnRDaGVja3MpOwogICAgICAgICAgICAgLy8gV2UgbWlnaHQgc3RpbGwgdHJ5IHRvIGlubGluZSB0
aGUgSW50cmluc2ljIGJlY2F1c2UgaXQgbWlnaHQgYmUgYSBidWlsdGluIEpTIGZ1bmN0aW9uLgog
ICAgICAgICB9CisKKyAgICAgICAgaWYgKE9wdGlvbnM6OnVzZURPTUpJVCgpKSB7CisgICAgICAg
ICAgICBpZiAoY29uc3QgRE9NSklUOjpTaWduYXR1cmUqIHNpZ25hdHVyZSA9IGNhbGxlZS5zaWdu
YXR1cmVGb3Ioc3BlY2lhbGl6YXRpb25LaW5kKSkgeworICAgICAgICAgICAgICAgIGlmIChoYW5k
bGVET01KSVRDYWxsKGNhbGxUYXJnZXROb2RlLCByZXN1bHRPcGVyYW5kLCBzaWduYXR1cmUsIHJl
Z2lzdGVyT2Zmc2V0LCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgcHJlZGljdGlvbiwgaW5z
ZXJ0Q2hlY2tzV2l0aEFjY291bnRpbmcpKSB7CisgICAgICAgICAgICAgICAgICAgIFJFTEVBU0Vf
QVNTRVJUKGRpZEluc2VydENoZWNrcyk7CisgICAgICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgo
UGhhbnRvbSwgY2FsbFRhcmdldE5vZGUpOworICAgICAgICAgICAgICAgICAgICBlbWl0QXJndW1l
bnRQaGFudG9tcyhyZWdpc3Rlck9mZnNldCwgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpOwor
ICAgICAgICAgICAgICAgICAgICBpbmxpbmluZ0JhbGFuY2UtLTsKKyAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIFJFTEVB
U0VfQVNTRVJUKCFkaWRJbnNlcnRDaGVja3MpOworICAgICAgICAgICAgfQorICAgICAgICB9CiAg
ICAgfQogICAgIAogICAgIHVuc2lnbmVkIG15SW5saW5pbmdDb3N0ID0gaW5saW5pbmdDb3N0KGNh
bGxlZSwgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIElubGluZUNhbGxGcmFtZTo6Y2FsbE1v
ZGVGb3Ioa2luZCkpOwpAQCAtMjA1MSw3ICsyMDY2LDcgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6
aGFuZGxlSW5saW5pbmcoCiAgICAgTm9kZSogbXlDYWxsVGFyZ2V0Tm9kZSA9IGdldERpcmVjdChj
YWxsZWVSZWcpOwogICAgIGlmIChjb3VsZFRha2VTbG93UGF0aCkgewogICAgICAgICBhZGRDYWxs
KAotICAgICAgICAgICAgcmVzdWx0T3BlcmFuZCwgY2FsbE9wLCBPcEluZm8oKSwgbXlDYWxsVGFy
Z2V0Tm9kZSwgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsCisgICAgICAgICAgICByZXN1bHRP
cGVyYW5kLCBjYWxsT3AsIG51bGxwdHIsIG15Q2FsbFRhcmdldE5vZGUsIGFyZ3VtZW50Q291bnRJ
bmNsdWRpbmdUaGlzLAogICAgICAgICAgICAgcmVnaXN0ZXJPZmZzZXQsIHByZWRpY3Rpb24pOwog
ICAgIH0gZWxzZSB7CiAgICAgICAgIGFkZFRvR3JhcGgoQ2hlY2tCYWRDZWxsKTsKQEAgLTI2MDEs
NiArMjYxNiwyNSBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbnRyaW5zaWNDYWxsKE5v
ZGUqIGNhbGxlZSwgaW50IHJlc3VsdE9wZXJhbmQsIEludHJpbgogfQogCiB0ZW1wbGF0ZTx0eXBl
bmFtZSBDaGVja3NGdW5jdG9yPgorYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlRE9NSklUQ2Fs
bChOb2RlKiBjYWxsVGFyZ2V0LCBpbnQgcmVzdWx0T3BlcmFuZCwgY29uc3QgRE9NSklUOjpTaWdu
YXR1cmUqIHNpZ25hdHVyZSwgaW50IHJlZ2lzdGVyT2Zmc2V0LCBpbnQgYXJndW1lbnRDb3VudElu
Y2x1ZGluZ1RoaXMsIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24sIGNvbnN0IENoZWNrc0Z1bmN0
b3ImIGluc2VydENoZWNrcykKK3sKKyAgICBpZiAoYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMg
IT0gc3RhdGljX2Nhc3Q8aW50PigxICsgc2lnbmF0dXJlLT5hcmd1bWVudENvdW50KSkKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgIGlmIChtX2lubGluZVN0YWNrVG9wLT5tX2V4aXRQcm9maWxl
Lmhhc0V4aXRTaXRlKG1fY3VycmVudEluZGV4LCBCYWRUeXBlKSkKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworCisgICAgLy8gRklYTUU6IEN1cnJlbnRseSwgd2Ugb25seSBzdXBwb3J0IGZ1bmN0aW9u
cyB3aGljaCBhcmd1bWVudHMgYXJlIHVwIHRvIDIuCisgICAgLy8gRXZlbnR1YWxseSwgd2Ugc2hv
dWxkIGV4dGVuZCB0aGlzLiBCdXQgcG9zc2libHksIDIgb3IgMyBjYW4gY292ZXIgdHlwaWNhbCB1
c2UgY2FzZXMuCisgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE2NDM0NgorICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoYXJndW1lbnRDb3VudEluY2x1ZGluZ1Ro
aXMgPD0gSlNDX0RPTUpJVF9TSUdOQVRVUkVfTUFYX0FSR1VNRU5UU19JTkNMVURJTkdfVEhJUywg
IkN1cnJlbnRseSBDYWxsRE9NIGRvZXMgbm90IHN1cHBvcnQgYW4gYXJiaXRyYXJ5IGxlbmd0aCBh
cmd1bWVudHMuIik7CisKKyAgICBpbnNlcnRDaGVja3MoKTsKKyAgICBhZGRDYWxsKHJlc3VsdE9w
ZXJhbmQsIENhbGwsIHNpZ25hdHVyZSwgY2FsbFRhcmdldCwgYXJndW1lbnRDb3VudEluY2x1ZGlu
Z1RoaXMsIHJlZ2lzdGVyT2Zmc2V0LCBwcmVkaWN0aW9uKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30K
KworCit0ZW1wbGF0ZTx0eXBlbmFtZSBDaGVja3NGdW5jdG9yPgogYm9vbCBCeXRlQ29kZVBhcnNl
cjo6aGFuZGxlSW50cmluc2ljR2V0dGVyKGludCByZXN1bHRPcGVyYW5kLCBjb25zdCBHZXRCeUlk
VmFyaWFudCYgdmFyaWFudCwgTm9kZSogdGhpc05vZGUsIGNvbnN0IENoZWNrc0Z1bmN0b3ImIGlu
c2VydENoZWNrcykKIHsKICAgICBzd2l0Y2ggKHZhcmlhbnQuaW50cmluc2ljKCkpIHsKQEAgLTQ3
OTIsNyArNDgyNiw3IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQg
bGltaXQpCiAgICAgICAgICAgICBpbnQgY2FsbGVlID0gY3VycmVudEluc3RydWN0aW9uWzJdLnUu
b3BlcmFuZDsKICAgICAgICAgICAgIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyA9IGN1
cnJlbnRJbnN0cnVjdGlvblszXS51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBpbnQgcmVnaXN0ZXJP
ZmZzZXQgPSAtY3VycmVudEluc3RydWN0aW9uWzRdLnUub3BlcmFuZDsKLSAgICAgICAgICAgIGFk
ZENhbGwocmVzdWx0LCBDYWxsRXZhbCwgT3BJbmZvKCksIGdldChWaXJ0dWFsUmVnaXN0ZXIoY2Fs
bGVlKSksIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCByZWdpc3Rlck9mZnNldCwgZ2V0UHJl
ZGljdGlvbigpKTsKKyAgICAgICAgICAgIGFkZENhbGwocmVzdWx0LCBDYWxsRXZhbCwgbnVsbHB0
ciwgZ2V0KFZpcnR1YWxSZWdpc3RlcihjYWxsZWUpKSwgYXJndW1lbnRDb3VudEluY2x1ZGluZ1Ro
aXMsIHJlZ2lzdGVyT2Zmc2V0LCBnZXRQcmVkaWN0aW9uKCkpOwogICAgICAgICAgICAgTkVYVF9P
UENPREUob3BfY2FsbF9ldmFsKTsKICAgICAgICAgfQogICAgICAgICAgICAgCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCmluZGV4IGI2MjFlZjAyMmQ4ODY1ZTJlN2Ey
MDExNmNkMjA4YzVjMjQ2YzlmZmIuLmU1ZDIxNzJmOWFlMGU3OTFhYWEyYTY4MmJhYjE0ZWJhOTMw
NjdkYmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6
ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCkBAIC0z
NCw2ICszNCw3IEBACiAjaW5jbHVkZSAiREZHTGF6eU5vZGUuaCIKICNpbmNsdWRlICJERkdQdXJl
VmFsdWUuaCIKICNpbmNsdWRlICJET01KSVRDYWxsRE9NR2V0dGVyUGF0Y2hwb2ludC5oIgorI2lu
Y2x1ZGUgIkRPTUpJVFNpZ25hdHVyZS5oIgogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERG
RyB7CiAKQEAgLTk1OCwyMCArOTU5LDM4IEBAIHZvaWQgY2xvYmJlcml6ZShHcmFwaCYgZ3JhcGgs
IE5vZGUqIG5vZGUsIGNvbnN0IFJlYWRGdW5jdG9yJiByZWFkLCBjb25zdCBXcml0ZUZ1CiAgICAg
ICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgd3JpdGUoQWJzdHJhY3RIZWFwKERPTVN0YXRl
LCBlZmZlY3Qud3JpdGVzLnJhd1JlcHJlc2VudGF0aW9uKCkpKTsKICAgICAgICAgfQotICAgICAg
ICBpZiAoZWZmZWN0LmRlZikgewotICAgICAgICAgICAgRE9NSklUOjpIZWFwUmFuZ2UgcmFuZ2Ug
PSBlZmZlY3QuZGVmLnZhbHVlKCk7CisgICAgICAgIGlmIChlZmZlY3QuZGVmICE9IERPTUpJVDo6
SGVhcFJhbmdlOjp0b3AoKSkgeworICAgICAgICAgICAgRE9NSklUOjpIZWFwUmFuZ2UgcmFuZ2Ug
PSBlZmZlY3QuZGVmOwogICAgICAgICAgICAgaWYgKHJhbmdlID09IERPTUpJVDo6SGVhcFJhbmdl
Ojpub25lKCkpCiAgICAgICAgICAgICAgICAgZGVmKFB1cmVWYWx1ZShub2RlLCBub2RlLT5jYWxs
RE9NR2V0dGVyRGF0YSgpLT5kb21KSVQpKTsKICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAg
ICAgICAgIC8vIERlZiB3aXRoIGhlYXAgbG9jYXRpb24uIFdlIGRvIG5vdCBpbmNsdWRlICJHbG9i
YWxPYmplY3QiIGZvciB0aGF0IHNpbmNlIHRoaXMgaW5mb3JtYXRpb24gaXMgaW5jbHVkZWQgaW4g
dGhlIGJhc2Ugbm9kZS4KLSAgICAgICAgICAgICAgICAvLyBGSVhNRTogV2hlbiBzdXBwb3J0aW5n
IHRoZSBvdGhlciBub2RlcyBsaWtlIGdldEVsZW1lbnRCeUlkKCJzdHJpbmciKSwgd2Ugc2hvdWxk
IGluY2x1ZGUgdGhlIGJhc2UgYW5kIHRoZSBpZCBzdHJpbmcuCi0gICAgICAgICAgICAgICAgLy8g
Q3VycmVudGx5LCB3ZSBvbmx5IHNlZSB0aGUgRE9NSklUIGdldHRlciBoZXJlLiBTbyBqdXN0IGlu
Y2x1ZGluZyAiYmFzZSIgaXMgb2suCisgICAgICAgICAgICAgICAgLy8gV2Ugb25seSBzZWUgdGhl
IERPTUpJVCBnZXR0ZXIgaGVyZS4gU28ganVzdCBpbmNsdWRpbmcgImJhc2UiIGlzIG9rLgogICAg
ICAgICAgICAgICAgIGRlZihIZWFwTG9jYXRpb24oRE9NU3RhdGVMb2MsIEFic3RyYWN0SGVhcChE
T01TdGF0ZSwgcmFuZ2UucmF3UmVwcmVzZW50YXRpb24oKSksIG5vZGUtPmNoaWxkMSgpKSwgTGF6
eU5vZGUobm9kZSkpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKKyAgICBjYXNlIENhbGxET006IHsKKyAgICAgICAgY29uc3QgRE9NSklUOjpTaWdu
YXR1cmUqIHNpZ25hdHVyZSA9IG5vZGUtPnNpZ25hdHVyZSgpOworICAgICAgICBET01KSVQ6OkVm
ZmVjdCBlZmZlY3QgPSBzaWduYXR1cmUtPmVmZmVjdDsKKyAgICAgICAgaWYgKGVmZmVjdC5yZWFk
cykgeworICAgICAgICAgICAgaWYgKGVmZmVjdC5yZWFkcyA9PSBET01KSVQ6OkhlYXBSYW5nZTo6
dG9wKCkpCisgICAgICAgICAgICAgICAgcmVhZChXb3JsZCk7CisgICAgICAgICAgICBlbHNlCisg
ICAgICAgICAgICAgICAgcmVhZChBYnN0cmFjdEhlYXAoRE9NU3RhdGUsIGVmZmVjdC5yZWFkcy5y
YXdSZXByZXNlbnRhdGlvbigpKSk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGVmZmVjdC53cml0
ZXMpIHsKKyAgICAgICAgICAgIGlmIChlZmZlY3Qud3JpdGVzID09IERPTUpJVDo6SGVhcFJhbmdl
Ojp0b3AoKSkKKyAgICAgICAgICAgICAgICB3cml0ZShIZWFwKTsKKyAgICAgICAgICAgIGVsc2UK
KyAgICAgICAgICAgICAgICB3cml0ZShBYnN0cmFjdEhlYXAoRE9NU3RhdGUsIGVmZmVjdC53cml0
ZXMucmF3UmVwcmVzZW50YXRpb24oKSkpOworICAgICAgICB9CisgICAgICAgIEFTU0VSVF9XSVRI
X01FU1NBR0UoZWZmZWN0LmRlZiA9PSBET01KSVQ6OkhlYXBSYW5nZTo6dG9wKCksICJDdXJyZW50
bHksIHdlIGRvIG5vdCBhY2NlcHQgYW55IGRlZiBmb3IgQ2FsbERPTS4iKTsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKwogICAgIGNhc2UgQXJyYXlpZnk6CiAgICAgY2FzZSBBcnJheWlmeVRvU3Ry
dWN0dXJlOgogICAgICAgICByZWFkKEpTQ2VsbF9zdHJ1Y3R1cmVJRCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0RvZXNHQy5jcHAKaW5kZXggOTdjZDg0ODc0NzdhYzkwODRmZTkwZGRiOThk
MzBmNDY2ZTVjYTE2Zi4uOWU2YWE1NTBhNDRlMGUxYzYyMTc1ZTUxOWY2MGEzZTg1MTVhN2I3YyAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcApAQCAtMzAxLDYgKzMwMSw3
IEBAIGJvb2wgZG9lc0dDKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSkKICAgICBjYXNlIENyZWF0
ZVJlc3Q6CiAgICAgY2FzZSBUb0xvd2VyQ2FzZToKICAgICBjYXNlIENhbGxET01HZXR0ZXI6Cisg
ICAgY2FzZSBDYWxsRE9NOgogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgCiAgICAgY2Fz
ZSBNdWx0aVB1dEJ5T2Zmc2V0OgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdGaXh1cFBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQ
aGFzZS5jcHAKaW5kZXggMWQ0ZTkwN2E3ZjJmZmNjMmQ5YTJhMDM3NzExNDZhNzkxMDFmM2NkMy4u
YzhkZDU2Mjc4OGYwOTk1M2NjYjExNjEwYTA5NDI0YjliZTExN2E4YiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCkBAIC0xNzA4LDkgKzE3MDgsMTAgQEAg
Y2xhc3MgRml4dXBQaGFzZSA6IHB1YmxpYyBQaGFzZSB7CiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgfQogCi0gICAgICAgIGNhc2UgQ2hlY2tET006Ci0gICAgICAgICAgICBmaXhFZGdlPENl
bGxVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgY2FzZSBDaGVja0RPTTogeworICAgICAg
ICAgICAgZml4dXBDaGVja0RPTShub2RlKTsKICAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9
CiAKICAgICAgICAgY2FzZSBDYWxsRE9NR2V0dGVyOiB7CiAgICAgICAgICAgICBET01KSVQ6OkNh
bGxET01HZXR0ZXJQYXRjaHBvaW50KiBwYXRjaHBvaW50ID0gbm9kZS0+Y2FsbERPTUdldHRlckRh
dGEoKS0+cGF0Y2hwb2ludDsKQEAgLTE3MjAsNiArMTcyMSwxNiBAQCBjbGFzcyBGaXh1cFBoYXNl
IDogcHVibGljIFBoYXNlIHsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKKyAgICAg
ICAgY2FzZSBDYWxsRE9NOiB7CisgICAgICAgICAgICBmaXh1cENhbGxET00obm9kZSk7CisgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAgIGNhc2UgQ2FsbDogeworICAgICAg
ICAgICAgYXR0ZW1wdFRvTWFrZUNhbGxET00obm9kZSk7CisgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgfQorCiAjaWYgIUFTU0VSVF9ESVNBQkxFRAogICAgICAgICAvLyBIYXZlIHRoZXNlIG5v
LW9wIGNhc2VzIGhlcmUgdG8gZW5zdXJlIHRoYXQgbm9ib2R5IGZvcmdldHMgdG8gYWRkIGhhbmRs
ZXJzIGZvciBuZXcgb3Bjb2Rlcy4KICAgICAgICAgY2FzZSBTZXRBcmd1bWVudDoKQEAgLTE3MzYs
NyArMTc0Nyw2IEBAIGNsYXNzIEZpeHVwUGhhc2UgOiBwdWJsaWMgUGhhc2UgewogICAgICAgICBj
YXNlIEdldEdsb2JhbFZhcjoKICAgICAgICAgY2FzZSBHZXRHbG9iYWxMZXhpY2FsVmFyaWFibGU6
CiAgICAgICAgIGNhc2UgTm90aWZ5V3JpdGU6Ci0gICAgICAgIGNhc2UgQ2FsbDoKICAgICAgICAg
Y2FzZSBEaXJlY3RDYWxsOgogICAgICAgICBjYXNlIENoZWNrVHlwZUluZm9GbGFnczoKICAgICAg
ICAgY2FzZSBUYWlsQ2FsbElubGluZWRDYWxsZXI6CkBAIC0yNjU5LDYgKzI2NjksOTMgQEAgY2xh
c3MgRml4dXBQaGFzZSA6IHB1YmxpYyBQaGFzZSB7CiAgICAgICAgICAgICBPcEluZm8oYXJyYXlN
b2RlLmFzV29yZCgpKSwgRWRnZShjaGlsZCwgS25vd25DZWxsVXNlKSwgRWRnZShzdG9yYWdlKSk7
CiAgICAgfQogICAgIAorICAgIGJvb2wgYXR0ZW1wdFRvTWFrZUNhbGxET00oTm9kZSogbm9kZSkK
KyAgICB7CisgICAgICAgIGlmIChtX2dyYXBoLmhhc0V4aXRTaXRlKG5vZGUtPm9yaWdpbi5zZW1h
bnRpYywgQmFkVHlwZSkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgY29u
c3QgRE9NSklUOjpTaWduYXR1cmUqIHNpZ25hdHVyZSA9IG5vZGUtPnNpZ25hdHVyZSgpOworICAg
ICAgICBpZiAoIXNpZ25hdHVyZSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAg
ICB7CisgICAgICAgICAgICB1bnNpZ25lZCBpbmRleCA9IDA7CisgICAgICAgICAgICBib29sIHNo
b3VsZENvbnZlcnRUb0NhbGxET00gPSB0cnVlOworICAgICAgICAgICAgbV9ncmFwaC5kb1RvQ2hp
bGRyZW4obm9kZSwgWyZdKEVkZ2UmIGVkZ2UpIHsKKyAgICAgICAgICAgICAgICAvLyBDYWxsZWUu
IElnbm9yZSB0aGlzLiBERkdCeXRlQ29kZVBhcnNlciBhbHJlYWR5IGVtaXQgYXBwcm9wcmlhdGUg
Y2hlY2tzLgorICAgICAgICAgICAgICAgIGlmICghaW5kZXgpCisgICAgICAgICAgICAgICAgICAg
IHJldHVybjsKKworICAgICAgICAgICAgICAgIGlmIChpbmRleCA9PSAxKSB7CisgICAgICAgICAg
ICAgICAgICAgIC8vIERPTSBub2RlIGNhc2UuCisgICAgICAgICAgICAgICAgICAgIGlmIChlZGdl
LT5zaG91bGRTcGVjdWxhdGVOb3RDZWxsKCkpCisgICAgICAgICAgICAgICAgICAgICAgICBzaG91
bGRDb252ZXJ0VG9DYWxsRE9NID0gZmFsc2U7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgICAgICAgICAgICAgc3dpdGNoIChzaWduYXR1cmUtPmFyZ3VtZW50c1tpbmRleCAtIDJd
KSB7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgU3BlY1N0cmluZzoKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGlmIChlZGdlLT5zaG91bGRTcGVjdWxhdGVOb3RTdHJpbmcoKSkKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzaG91bGRDb252ZXJ0VG9DYWxsRE9NID0gZmFsc2U7CisgICAg
ICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSBTcGVj
SW50MzJPbmx5OgorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVkZ2UtPnNob3VsZFNwZWN1
bGF0ZU5vdEludDMyKCkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hvdWxkQ29udmVy
dFRvQ2FsbERPTSA9IGZhbHNlOworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICAgICAgICAgIGNhc2UgU3BlY0Jvb2xlYW46CisgICAgICAgICAgICAgICAgICAgICAg
ICBpZiAoZWRnZS0+c2hvdWxkU3BlY3VsYXRlTm90Qm9vbGVhbigpKQorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHNob3VsZENvbnZlcnRUb0NhbGxET00gPSBmYWxzZTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAg
ICAgICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgICAgICsraW5kZXg7CisgICAgICAgICAgICB9KTsKKyAgICAg
ICAgICAgIGlmICghc2hvdWxkQ29udmVydFRvQ2FsbERPTSkKKyAgICAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgICAgIH0KKworICAgICAgICBOb2RlKiB0aGlzTm9kZSA9IG1fZ3JhcGgu
dmFyQXJnQ2hpbGQobm9kZSwgMSkubm9kZSgpOworICAgICAgICBSZWY8RE9NSklUOjpQYXRjaHBv
aW50PiBjaGVja0RPTVBhdGNocG9pbnQgPSBzaWduYXR1cmUtPmNoZWNrRE9NKCk7CisgICAgICAg
IG1fZ3JhcGgubV9kb21KSVRQYXRjaHBvaW50cy5hcHBlbmQoY2hlY2tET01QYXRjaHBvaW50LnB0
cigpKTsKKyAgICAgICAgTm9kZSogY2hlY2tET00gPSBtX2luc2VydGlvblNldC5pbnNlcnROb2Rl
KG1faW5kZXhJbkJsb2NrLCBTcGVjTm9uZSwgQ2hlY2tET00sIG5vZGUtPm9yaWdpbiwgT3BJbmZv
KGNoZWNrRE9NUGF0Y2hwb2ludC5wdHIoKSksIE9wSW5mbyhzaWduYXR1cmUtPmNsYXNzSW5mbyks
IEVkZ2UodGhpc05vZGUpKTsKKyAgICAgICAgbm9kZS0+Y29udmVydFRvQ2FsbERPTShtX2dyYXBo
KTsKKyAgICAgICAgZml4dXBDaGVja0RPTShjaGVja0RPTSk7CisgICAgICAgIGZpeHVwQ2FsbERP
TShub2RlKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgdm9pZCBmaXh1cENo
ZWNrRE9NKE5vZGUqIG5vZGUpCisgICAgeworICAgICAgICBmaXhFZGdlPENlbGxVc2U+KG5vZGUt
PmNoaWxkMSgpKTsKKyAgICB9CisKKyAgICB2b2lkIGZpeHVwQ2FsbERPTShOb2RlKiBub2RlKQor
ICAgIHsKKyAgICAgICAgY29uc3QgRE9NSklUOjpTaWduYXR1cmUqIHNpZ25hdHVyZSA9IG5vZGUt
PnNpZ25hdHVyZSgpOworICAgICAgICBhdXRvIGZpeHVwID0gWyZdKEVkZ2UmIGVkZ2UsIHVuc2ln
bmVkIGFyZ3VtZW50SW5kZXgpIHsKKyAgICAgICAgICAgIGlmICghZWRnZSkKKyAgICAgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgICAgICBzd2l0Y2ggKHNpZ25hdHVyZS0+YXJndW1lbnRzW2Fy
Z3VtZW50SW5kZXhdKSB7CisgICAgICAgICAgICBjYXNlIFNwZWNTdHJpbmc6CisgICAgICAgICAg
ICAgICAgZml4RWRnZTxTdHJpbmdVc2U+KGVkZ2UpOworICAgICAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICAgICAgY2FzZSBTcGVjSW50MzJPbmx5OgorICAgICAgICAgICAgICAgIGZpeEVkZ2U8
SW50MzJVc2U+KGVkZ2UpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2Fz
ZSBTcGVjQm9vbGVhbjoKKyAgICAgICAgICAgICAgICBmaXhFZGdlPEJvb2xlYW5Vc2U+KGVkZ2Up
OworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAg
ICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9OworICAgICAgICBmaXhFZGdlPENlbGxVc2U+
KG5vZGUtPmNoaWxkMSgpKTsgLy8gRE9NLgorICAgICAgICBmaXh1cChub2RlLT5jaGlsZDIoKSwg
MCk7CisgICAgICAgIGZpeHVwKG5vZGUtPmNoaWxkMygpLCAxKTsKKyAgICB9CisKICAgICB2b2lk
IGZpeHVwQ2hlY2tzSW5CbG9jayhCYXNpY0Jsb2NrKiBibG9jaykKICAgICB7CiAgICAgICAgIGlm
ICghYmxvY2spCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmNwcAppbmRleCBmMzcxMTdi
Zjk2OWZlNGI2OWQ5NWYwMDFkNTY4ODA0NmJkY2Q5NDUwLi42YTk0YjU5OWQ4N2E4ODFkNDU5OTA5
OGM2YzNlYmNmZDQ2MDc2ZjY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR05vZGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5jcHAK
QEAgLTIyMCw2ICsyMjAsMjYgQEAgdm9pZCBOb2RlOjpjb252ZXJ0VG9EaXJlY3RDYWxsKEZyb3pl
blZhbHVlKiBleGVjdXRhYmxlKQogICAgIG1fb3BJbmZvID0gZXhlY3V0YWJsZTsKIH0KIAordm9p
ZCBOb2RlOjpjb252ZXJ0VG9DYWxsRE9NKEdyYXBoJiBncmFwaCkKK3sKKyAgICBBU1NFUlQob3Ao
KSA9PSBDYWxsKTsKKyAgICBBU1NFUlQoc2lnbmF0dXJlKCkpOworCisgICAgRWRnZSBlZGdlc1sz
XTsKKyAgICAvLyBTa2lwIHRoZSBmaXJzdCBvbmUuIFRoaXMgaXMgY2FsbGVlLgorICAgIFJFTEVB
U0VfQVNTRVJUKG51bUNoaWxkcmVuKCkgPD0gNCk7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMTsg
aSA8IG51bUNoaWxkcmVuKCk7ICsraSkKKyAgICAgICAgZWRnZXNbaSAtIDFdID0gZ3JhcGgudmFy
QXJnQ2hpbGQodGhpcywgaSk7CisKKyAgICBzZXRPcEFuZERlZmF1bHRGbGFncyhDYWxsRE9NKTsK
KyAgICBjaGlsZHJlbi5zZXRDaGlsZDEoZWRnZXNbMF0pOworICAgIGNoaWxkcmVuLnNldENoaWxk
MihlZGdlc1sxXSk7CisgICAgY2hpbGRyZW4uc2V0Q2hpbGQzKGVkZ2VzWzJdKTsKKworICAgIGlm
ICghc2lnbmF0dXJlKCktPmVmZmVjdC5tdXN0R2VuZXJhdGUoKSkKKyAgICAgICAgY2xlYXJGbGFn
cyhOb2RlTXVzdEdlbmVyYXRlKTsKK30KKwogU3RyaW5nIE5vZGU6OnRyeUdldFN0cmluZyhHcmFw
aCYgZ3JhcGgpCiB7CiAgICAgaWYgKGhhc0NvbnN0YW50KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHTm9kZS5oCmluZGV4IDg4Zjg4MTE4OTBlMTc3M2VhMWQ2MDJlOWNhYzljNTgxZGE0ZjliOWIu
LjA3ZDY0NGYzZDNjNTg0YjdiZmNiYzhmYmVlNWM1MmVkNjA4NWU5YjEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHTm9kZS5oCkBAIC02Miw2ICs2Miw3IEBAIG5hbWVzcGFjZSBET01KSVQgewog
Y2xhc3MgR2V0dGVyU2V0dGVyOwogY2xhc3MgUGF0Y2hwb2ludDsKIGNsYXNzIENhbGxET01HZXR0
ZXJQYXRjaHBvaW50OworY2xhc3MgU2lnbmF0dXJlOwogfQogCiBuYW1lc3BhY2UgUHJvZmlsZXIg
ewpAQCAtNjUyLDYgKzY1Myw4IEBAIHN0cnVjdCBOb2RlIHsKICAgICB9CiAgICAgCiAgICAgdm9p
ZCBjb252ZXJ0VG9EaXJlY3RDYWxsKEZyb3plblZhbHVlKik7CisKKyAgICB2b2lkIGNvbnZlcnRU
b0NhbGxET00oR3JhcGgmKTsKICAgICAKICAgICBKU1ZhbHVlIGFzSlNWYWx1ZSgpCiAgICAgewpA
QCAtMTQ2NCw2ICsxNDY3LDcgQEAgc3RydWN0IE5vZGUgewogICAgICAgICBjYXNlIFRvTnVtYmVy
OgogICAgICAgICBjYXNlIExvYWRGcm9tSlNNYXBCdWNrZXQ6CiAgICAgICAgIGNhc2UgQ2FsbERP
TUdldHRlcjoKKyAgICAgICAgY2FzZSBDYWxsRE9NOgogICAgICAgICAgICAgcmV0dXJuIHRydWU7
CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0xOTgxLDYg
KzE5ODUsMTEgQEAgc3RydWN0IE5vZGUgewogICAgIHsKICAgICAgICAgcmV0dXJuIGlzSW50MzJT
cGVjdWxhdGlvbihwcmVkaWN0aW9uKCkpOwogICAgIH0KKworICAgIGJvb2wgc2hvdWxkU3BlY3Vs
YXRlTm90SW50MzIoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGlzTm90SW50MzJTcGVjdWxhdGlv
bihwcmVkaWN0aW9uKCkpOworICAgIH0KICAgICAKICAgICBib29sIHNhd0Jvb2xlYW5zKCkKICAg
ICB7CkBAIC0yMDQxLDYgKzIwNTAsMTEgQEAgc3RydWN0IE5vZGUgewogICAgIHsKICAgICAgICAg
cmV0dXJuIGlzQm9vbGVhblNwZWN1bGF0aW9uKHByZWRpY3Rpb24oKSk7CiAgICAgfQorCisgICAg
Ym9vbCBzaG91bGRTcGVjdWxhdGVOb3RCb29sZWFuKCkKKyAgICB7CisgICAgICAgIHJldHVybiBp
c05vdEJvb2xlYW5TcGVjdWxhdGlvbihwcmVkaWN0aW9uKCkpOworICAgIH0KICAgICAKICAgICBi
b29sIHNob3VsZFNwZWN1bGF0ZU90aGVyKCkKICAgICB7CkBAIC0yMDY2LDYgKzIwODAsMTEgQEAg
c3RydWN0IE5vZGUgewogICAgIHsKICAgICAgICAgcmV0dXJuIGlzU3RyaW5nU3BlY3VsYXRpb24o
cHJlZGljdGlvbigpKTsKICAgICB9CisKKyAgICBib29sIHNob3VsZFNwZWN1bGF0ZU5vdFN0cmlu
ZygpCisgICAgeworICAgICAgICByZXR1cm4gaXNOb3RTdHJpbmdTcGVjdWxhdGlvbihwcmVkaWN0
aW9uKCkpOworICAgIH0KICAKICAgICBib29sIHNob3VsZFNwZWN1bGF0ZVN0cmluZ09yT3RoZXIo
KQogICAgIHsKQEAgLTIzNjgsNiArMjM4NywxOCBAQCBzdHJ1Y3QgTm9kZSB7CiAgICAgICAgIHJl
dHVybiBtX29wSW5mbzIuYXM8Y29uc3QgQ2xhc3NJbmZvKj4oKTsKICAgICB9CiAKKyAgICBib29s
IGhhc1NpZ25hdHVyZSgpIGNvbnN0CisgICAgeworICAgICAgICAvLyBOb3RlIHRoYXQgdGhpcyBk
b2VzIG5vdCBpbmNsdWRlIFRhaWxDYWxsIG5vZGUgdHlwZXMgaW50ZW50aW9uYWxseS4KKyAgICAg
ICAgLy8gQ2FsbERPTSBub2RlIHR5cGVzIGFyZSBhbHdheXMgY29udmVydGVkIGZyb20gQ2FsbC4K
KyAgICAgICAgcmV0dXJuIG9wKCkgPT0gQ2FsbCB8fCBvcCgpID09IENhbGxET007CisgICAgfQor
CisgICAgY29uc3QgRE9NSklUOjpTaWduYXR1cmUqIHNpZ25hdHVyZSgpCisgICAgeworICAgICAg
ICByZXR1cm4gbV9vcEluZm8uYXM8Y29uc3QgRE9NSklUOjpTaWduYXR1cmUqPigpOworICAgIH0K
KwogICAgIE5vZGUqIHJlcGxhY2VtZW50KCkgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVybiBt
X21pc2MucmVwbGFjZW1lbnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR05vZGVUeXBlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgK
aW5kZXggZDk3NWI3NjIyMGMwMmMxMzExYzE5MmVhOWFkMDJlNjAxYTUyMDRlMC4uZjM3NDIzY2Vl
YjIyODYyYjZjMmZhYTViYmEwMzQ1YTMzNmVmNjM5ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHTm9kZVR5cGUuaApAQCAtNDA3LDYgKzQwNyw3IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1l
c3BhY2UgREZHIHsKICAgICAvKiBOb2RlcyBmb3IgRE9NIEpJVCAqL1wKICAgICBtYWNybyhDaGVj
a0RPTSwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKENhbGxET01HZXR0ZXIsIE5vZGVS
ZXN1bHRKUyB8IE5vZGVNdXN0R2VuZXJhdGUpIFwKKyAgICBtYWNybyhDYWxsRE9NLCBOb2RlUmVz
dWx0SlMgfCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAKIC8vIFRoaXMgZW51bSBnZW5lcmF0ZXMgYSBt
b25vdG9uaWNhbGx5IGluY3JlYXNpbmcgaWQgZm9yIGFsbCBOb2RlIHR5cGVzLAogLy8gYW5kIGlz
IHVzZWQgYnkgdGhlIHN1YnNlcXVlbnQgZW51bSB0byBmaWxsIG91dCB0aGUgaWQgKGFzIGFjY2Vz
c2VkIHZpYSB0aGUgTm9kZUlkTWFzaykuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCmluZGV4IDZlZDcy
OWIzYjg1NzMxYzBhNmU1MDk2NzA5Zjk4MDE2YTRiMWY4ZTAuLjIwNTMxYTA5MzQyYTVlYmYwMTNk
YzNiZTA5YTU3ZDAyNmVhNDRkNzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCkBAIC0xMDIwLDcg
KzEwMjAsOCBAQCBjbGFzcyBQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZSA6IHB1YmxpYyBQaGFz
ZSB7CiAgICAgICAgIGNhc2UgR2V0UmVnRXhwT2JqZWN0TGFzdEluZGV4OgogICAgICAgICBjYXNl
IFNldFJlZ0V4cE9iamVjdExhc3RJbmRleDoKICAgICAgICAgY2FzZSBSZWNvcmRSZWdFeHBDYWNo
ZWRSZXN1bHQ6Ci0gICAgICAgIGNhc2UgTGF6eUpTQ29uc3RhbnQ6IHsKKyAgICAgICAgY2FzZSBM
YXp5SlNDb25zdGFudDoKKyAgICAgICAgY2FzZSBDYWxsRE9NOiB7CiAgICAgICAgICAgICAvLyBU
aGlzIG5vZGUgc2hvdWxkIG5ldmVyIGJlIHZpc2libGUgYXQgdGhpcyBzdGFnZSBvZiBjb21waWxh
dGlvbi4gSXQgaXMKICAgICAgICAgICAgIC8vIGluc2VydGVkIGJ5IGZpeHVwKCksIHdoaWNoIGZv
bGxvd3MgdGhpcyBwaGFzZS4KICAgICAgICAgICAgIERGR19DUkFTSChtX2dyYXBoLCBtX2N1cnJl
bnROb2RlLCAiVW5leHBlY3RlZCBub2RlIGR1cmluZyBwcmVkaWN0aW9uIHByb3BhZ2F0aW9uIik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCmluZGV4IDJj
OTk4MDIyNTY2N2RmMzQwNTBkY2E2YTM0ZTg3ZjM0ZDU5OGVkMmIuLjNmZTlkYzE1ZGVlMTdiODFk
MjJmZjY0NDNmZWQ2N2Y0NzY5NjNjYTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU2FmZVRvRXhlY3V0ZS5oCkBAIC0yMjAsNiArMjIwLDcgQEAgYm9vbCBzYWZlVG9FeGVjdXRl
KEFic3RyYWN0U3RhdGVUeXBlJiBzdGF0ZSwgR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlKQogICAg
IGNhc2UgR2V0RXhlY3V0YWJsZToKICAgICBjYXNlIEdldEJ1dHRlcmZseToKICAgICBjYXNlIENh
bGxET01HZXR0ZXI6CisgICAgY2FzZSBDYWxsRE9NOgogICAgIGNhc2UgQ2hlY2tET006CiAgICAg
Y2FzZSBDaGVja0FycmF5OgogICAgIGNhc2UgQXJyYXlpZnk6CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCmluZGV4IDI3MzJmZTg1ODQ0ZTUxZjQ2
NzBiMGFlNDAzZjJhYzIzNTA0Yzg3MWMuLjM0MTliNzAyZjgxZGQ5OTA1NmM5N2FiMTQ0OGEzMGE5
YjI5N2M3YjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3Vs
YXRpdmVKSVQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRp
dmVKSVQuY3BwCkBAIC03MjYwLDYgKzcyNjAsODggQEAgc3RhdGljIHZvaWQgYWxsb2NhdGVUZW1w
b3JhcnlSZWdpc3RlcnNGb3JQYXRjaHBvaW50KFNwZWN1bGF0aXZlSklUKiBqaXQsIFZlY3RvcjwK
ICAgICB9CiB9CiAKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVDYWxsRE9NKE5vZGUqIG5v
ZGUpCit7CisgICAgY29uc3QgRE9NSklUOjpTaWduYXR1cmUqIHNpZ25hdHVyZSA9IG5vZGUtPnNp
Z25hdHVyZSgpOworCisgICAgLy8gRklYTUU6IFdlIHNob3VsZCBoYXZlIGEgd2F5IHRvIGNhbGwg
ZnVuY3Rpb25zIHdpdGggdGhlIHZlY3RvciBvZiByZWdpc3RlcnMuCisgICAgLy8gaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MzA5OQorICAgIFZlY3RvcjxWYXJpYW50
PFNwZWN1bGF0ZUNlbGxPcGVyYW5kLCBTcGVjdWxhdGVJbnQzMk9wZXJhbmQsIFNwZWN1bGF0ZUJv
b2xlYW5PcGVyYW5kPiwgSlNDX0RPTUpJVF9TSUdOQVRVUkVfTUFYX0FSR1VNRU5UU19JTkNMVURJ
TkdfVEhJUz4gb3BlcmFuZHM7CisgICAgVmVjdG9yPEdQUlJlZywgSlNDX0RPTUpJVF9TSUdOQVRV
UkVfTUFYX0FSR1VNRU5UU19JTkNMVURJTkdfVEhJUz4gcmVnczsKKworICAgIGF1dG8gYXBwZW5k
Q2VsbCA9IFsmXShFZGdlJiBlZGdlKSB7CisgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIG9w
ZXJhbmQodGhpcywgZWRnZSk7CisgICAgICAgIHJlZ3MuYXBwZW5kKG9wZXJhbmQuZ3ByKCkpOwor
ICAgICAgICBvcGVyYW5kcy5hcHBlbmQoV1RGTW92ZShvcGVyYW5kKSk7CisgICAgfTsKKworICAg
IGF1dG8gYXBwZW5kU3RyaW5nID0gWyZdKEVkZ2UmIGVkZ2UpIHsKKyAgICAgICAgU3BlY3VsYXRl
Q2VsbE9wZXJhbmQgb3BlcmFuZCh0aGlzLCBlZGdlKTsKKyAgICAgICAgR1BSUmVnIGdwciA9IG9w
ZXJhbmQuZ3ByKCk7CisgICAgICAgIHJlZ3MuYXBwZW5kKGdwcik7CisgICAgICAgIHNwZWN1bGF0
ZVN0cmluZyhlZGdlLCBncHIpOworICAgICAgICBvcGVyYW5kcy5hcHBlbmQoV1RGTW92ZShvcGVy
YW5kKSk7CisgICAgfTsKKworICAgIGF1dG8gYXBwZW5kSW50MzIgPSBbJl0oRWRnZSYgZWRnZSkg
eworICAgICAgICBTcGVjdWxhdGVJbnQzMk9wZXJhbmQgb3BlcmFuZCh0aGlzLCBlZGdlKTsKKyAg
ICAgICAgcmVncy5hcHBlbmQob3BlcmFuZC5ncHIoKSk7CisgICAgICAgIG9wZXJhbmRzLmFwcGVu
ZChXVEZNb3ZlKG9wZXJhbmQpKTsKKyAgICB9OworCisgICAgYXV0byBhcHBlbmRCb29sZWFuID0g
WyZdKEVkZ2UmIGVkZ2UpIHsKKyAgICAgICAgU3BlY3VsYXRlQm9vbGVhbk9wZXJhbmQgb3BlcmFu
ZCh0aGlzLCBlZGdlKTsKKyAgICAgICAgcmVncy5hcHBlbmQob3BlcmFuZC5ncHIoKSk7CisgICAg
ICAgIG9wZXJhbmRzLmFwcGVuZChXVEZNb3ZlKG9wZXJhbmQpKTsKKyAgICB9OworCisgICAgdW5z
aWduZWQgaW5kZXggPSAwOworICAgIG1faml0LmdyYXBoKCkuZG9Ub0NoaWxkcmVuKG5vZGUsIFsm
XShFZGdlIGVkZ2UpIHsKKyAgICAgICAgaWYgKCFpbmRleCkKKyAgICAgICAgICAgIGFwcGVuZENl
bGwoZWRnZSk7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgc3dpdGNoIChzaWduYXR1cmUt
PmFyZ3VtZW50c1tpbmRleCAtIDFdKSB7CisgICAgICAgICAgICBjYXNlIFNwZWNTdHJpbmc6Cisg
ICAgICAgICAgICAgICAgYXBwZW5kU3RyaW5nKGVkZ2UpOworICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgY2FzZSBTcGVjSW50MzJPbmx5OgorICAgICAgICAgICAgICAgIGFwcGVu
ZEludDMyKGVkZ2UpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBT
cGVjQm9vbGVhbjoKKyAgICAgICAgICAgICAgICBhcHBlbmRCb29sZWFuKGVkZ2UpOworICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICBS
RUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgICsraW5kZXg7CisgICAgfSk7CisKKyAgICBK
U1ZhbHVlUmVnc1RlbXBvcmFyeSByZXN1bHQodGhpcyk7CisgICAgSlNWYWx1ZVJlZ3MgcmVzdWx0
UmVncyA9IHJlc3VsdC5yZWdzKCk7CisKKyAgICBmbHVzaFJlZ2lzdGVycygpOworICAgIHVuc2ln
bmVkIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzID0gc2lnbmF0dXJlLT5hcmd1bWVudENvdW50
ICsgMTsKKyAgICBzd2l0Y2ggKGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKSB7CisgICAgY2Fz
ZSAxOgorICAgICAgICBjYWxsT3BlcmF0aW9uKHJlaW50ZXJwcmV0X2Nhc3Q8Sl9KSVRPcGVyYXRp
b25fRVA+KHNpZ25hdHVyZS0+dW5zYWZlRnVuY3Rpb24pLCBleHRyYWN0UmVzdWx0KHJlc3VsdFJl
Z3MpLCByZWdzWzBdKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSAyOgorICAgICAgICBjYWxs
T3BlcmF0aW9uKHJlaW50ZXJwcmV0X2Nhc3Q8Sl9KSVRPcGVyYXRpb25fRVBQPihzaWduYXR1cmUt
PnVuc2FmZUZ1bmN0aW9uKSwgZXh0cmFjdFJlc3VsdChyZXN1bHRSZWdzKSwgcmVnc1swXSwgcmVn
c1sxXSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgMzoKKyAgICAgICAgY2FsbE9wZXJhdGlv
bihyZWludGVycHJldF9jYXN0PEpfSklUT3BlcmF0aW9uX0VQUFA+KHNpZ25hdHVyZS0+dW5zYWZl
RnVuY3Rpb24pLCBleHRyYWN0UmVzdWx0KHJlc3VsdFJlZ3MpLCByZWdzWzBdLCByZWdzWzFdLCBy
ZWdzWzJdKTsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgUkVMRUFTRV9B
U1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgbV9qaXQu
ZXhjZXB0aW9uQ2hlY2soKTsKKyAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdFJlZ3MsIG5vZGUpOwor
fQorCiB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlQ2FsbERPTUdldHRlcihOb2RlKiBub2Rl
KQogewogICAgIERPTUpJVDo6Q2FsbERPTUdldHRlclBhdGNocG9pbnQqIHBhdGNocG9pbnQgPSBu
b2RlLT5jYWxsRE9NR2V0dGVyRGF0YSgpLT5wYXRjaHBvaW50OwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCmluZGV4IDU2NTM4YTI5NDZlNDAzMDBmMDUw
ZjMzNTUyYTczY2NhNzU5Y2VhY2EuLjc5NmE4YTM1ZTZkMzA1N2ZhYWJlYTA3OWEwMjAzZDVkNDk5
YTk1YjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRp
dmVKSVQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklU
LmgKQEAgLTE2NTEsNiArMTY1MSwxMSBAQCBjbGFzcyBTcGVjdWxhdGl2ZUpJVCB7CiAgICAgICAg
IG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyKTsKICAgICAgICAg
cmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOwogICAgIH0KKyAg
ICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpfSklUT3BlcmF0aW9uX0VQUFAgb3Bl
cmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIsIEdQUlJlZyBh
cmczKQorICAgIHsKKyAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFy
ZzEsIGFyZzIsIGFyZzMpOworICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVy
YXRpb24sIHJlc3VsdCk7CisgICAgfQogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRp
b24oSl9KSVRPcGVyYXRpb25fRUdQIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgR1BSUmVnIGFy
ZzEsIEdQUlJlZyBhcmcyKQogICAgIHsKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRo
RXhlY1N0YXRlKGFyZzEsIGFyZzIpOwpAQCAtMTkxNSw2ICsxOTIwLDE2IEBAIGNsYXNzIFNwZWN1
bGF0aXZlSklUIHsKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFy
ZzEsIFRydXN0ZWRJbW1QdHIocG9pbnRlcikpOwogICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNl
dFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdC5wYXlsb2FkR1BSKCksIHJlc3VsdC50YWdHUFIoKSk7
CiAgICAgfQorICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9KSVRPcGVyYXRp
b25fRVBQIG9wZXJhdGlvbiwgSlNWYWx1ZVJlZ3MgcmVzdWx0LCBHUFJSZWcgYXJnMSwgR1BSUmVn
IGFyZzIpCisgICAgeworICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUo
YXJnMSwgYXJnMik7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlv
biwgcmVzdWx0LnBheWxvYWRHUFIoKSwgcmVzdWx0LnRhZ0dQUigpKTsKKyAgICB9CisgICAgSklU
Q29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihKX0pJVE9wZXJhdGlvbl9FUFBQIG9wZXJhdGlv
biwgSlNWYWx1ZVJlZ3MgcmVzdWx0LCBHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIsIEdQUlJlZyBh
cmczKQorICAgIHsKKyAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFy
ZzEsIGFyZzIsIGFyZzMpOworICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVy
YXRpb24sIHJlc3VsdC5wYXlsb2FkR1BSKCksIHJlc3VsdC50YWdHUFIoKSk7CisgICAgfQogICAg
IEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9KSVRPcGVyYXRpb25fRUdQIG9wZXJh
dGlvbiwgSlNWYWx1ZVJlZ3MgcmVzdWx0LCBHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIpCiAgICAg
ewogICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMik7
CkBAIC0yNTYyLDYgKzI1NzcsNyBAQCBjbGFzcyBTcGVjdWxhdGl2ZUpJVCB7CiAgICAgdm9pZCBj
b21waWxlUmVhbGxvY2F0ZVByb3BlcnR5U3RvcmFnZShOb2RlKik7CiAgICAgdm9pZCBjb21waWxl
R2V0QnV0dGVyZmx5KE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVDYWxsRE9NR2V0dGVyKE5vZGUq
KTsKKyAgICB2b2lkIGNvbXBpbGVDYWxsRE9NKE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVDaGVj
a0RPTShOb2RlKik7CiAgICAgCiAjaWYgVVNFKEpTVkFMVUUzMl82NCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCmluZGV4IGNi
MDRhNWE2NWM3NTBlMjNmMTdjOWRiMjM0MTViNzM0YWVmNWI0YTQuLjEwMjQyOWRlMDAwYjMyYWRm
ZGQwMjc0M2VjNmRmZGRlZTgxZjUzYWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcApAQCAtNTU2MSw2ICs1NTYxLDEwIEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgYnJlYWs7
CiAgICAgfQogCisgICAgY2FzZSBDYWxsRE9NOgorICAgICAgICBjb21waWxlQ2FsbERPTShub2Rl
KTsKKyAgICAgICAgYnJlYWs7CisKICAgICBjYXNlIENhbGxET01HZXR0ZXI6CiAgICAgICAgIGNv
bXBpbGVDYWxsRE9NR2V0dGVyKG5vZGUpOwogICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCmluZGV4IGI0MWM2ZjMy
YjMzZDgzYzY1ZTg1NGY4NjA3OGQ3NGE1MjQwMjk4MTMuLjgzMGJmYWRjYWYyODY2N2EwOGIxYjgy
ZWU1OTg4YzBjNjVkMmNhYjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTcGVjdWxhdGl2ZUpJVDY0LmNwcApAQCAtNTY5Myw2ICs1NjkzLDEwIEBAIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgY29tcGlsZU1hdGVyaWFsaXpl
TmV3T2JqZWN0KG5vZGUpOwogICAgICAgICBicmVhazsKIAorICAgIGNhc2UgQ2FsbERPTToKKyAg
ICAgICAgY29tcGlsZUNhbGxET00obm9kZSk7CisgICAgICAgIGJyZWFrOworCiAgICAgY2FzZSBD
YWxsRE9NR2V0dGVyOgogICAgICAgICBjb21waWxlQ2FsbERPTUdldHRlcihub2RlKTsKICAgICAg
ICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZG9taml0L0RPTUpJ
VEVmZmVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RvbWppdC9ET01KSVRFZmZlY3QuaApp
bmRleCA1OWUzMDBjMzkyNjEwNDdhMTEyMjkwZGE4NmI0ZmExNjhkOWM2MzA2Li42MWNmM2I3MWFi
YmNlMzFlNDUxMzZhZjI4NmM2YzdhZjIzNjY4YTZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZG9taml0L0RPTUpJVEVmZmVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kb21qaXQvRE9NSklURWZmZWN0LmgKQEAgLTI4LDU2ICsyOCw2MiBAQAogI2luY2x1ZGUgIkRP
TUpJVEhlYXBSYW5nZS5oIgogI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgogCi0jaWYgRU5BQkxF
KEpJVCkKLQogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBET01KSVQgewogCi1zdHJ1Y3QgRWZm
ZWN0IHsKK2NsYXNzIEVmZmVjdCB7CitwdWJsaWM6CiAgICAgSGVhcFJhbmdlIHJlYWRzIHsgSGVh
cFJhbmdlOjp0b3AoKSB9OwogICAgIEhlYXBSYW5nZSB3cml0ZXMgeyBIZWFwUmFuZ2U6OnRvcCgp
IH07Ci0gICAgT3B0aW9uYWw8SGVhcFJhbmdlPiBkZWY7CisgICAgSGVhcFJhbmdlIGRlZiB7IEhl
YXBSYW5nZTo6dG9wKCkgfTsKKworICAgIGNvbnN0ZXhwciBFZmZlY3QoKSA9IGRlZmF1bHQ7Cisg
ICAgY29uc3RleHByIEVmZmVjdChIZWFwUmFuZ2UgcmVhZHMsIEhlYXBSYW5nZSB3cml0ZXMpCisg
ICAgICAgIDogcmVhZHMocmVhZHMpCisgICAgICAgICwgd3JpdGVzKHdyaXRlcykKKyAgICB7Cisg
ICAgfQorCisgICAgY29uc3RleHByIEVmZmVjdChIZWFwUmFuZ2UgcmVhZHMsIEhlYXBSYW5nZSB3
cml0ZXMsIEhlYXBSYW5nZSBkZWYpCisgICAgICAgIDogcmVhZHMocmVhZHMpCisgICAgICAgICwg
d3JpdGVzKHdyaXRlcykKKyAgICAgICAgLCBkZWYoZGVmKQorICAgIHsKKyAgICB9CiAKLSAgICBz
dGF0aWMgRWZmZWN0IGZvclJlYWRXcml0ZShIZWFwUmFuZ2UgcmVhZFJhbmdlLCBIZWFwUmFuZ2Ug
d3JpdGVSYW5nZSkKKyAgICBjb25zdGV4cHIgc3RhdGljIEVmZmVjdCBmb3JXcml0ZShIZWFwUmFu
Z2Ugd3JpdGVSYW5nZSkKICAgICB7Ci0gICAgICAgIEVmZmVjdCBlZmZlY3Q7Ci0gICAgICAgIGVm
ZmVjdC5yZWFkcyA9IHJlYWRSYW5nZTsKLSAgICAgICAgZWZmZWN0LndyaXRlcyA9IHdyaXRlUmFu
Z2U7Ci0gICAgICAgIHJldHVybiBlZmZlY3Q7CisgICAgICAgIHJldHVybiBFZmZlY3QoSGVhcFJh
bmdlOjpub25lKCksIHdyaXRlUmFuZ2UpOwogICAgIH0KIAotICAgIHN0YXRpYyBFZmZlY3QgZm9y
UHVyZSgpCisgICAgY29uc3RleHByIHN0YXRpYyBFZmZlY3QgZm9yUmVhZChIZWFwUmFuZ2UgcmVh
ZFJhbmdlKQogICAgIHsKLSAgICAgICAgRWZmZWN0IGVmZmVjdDsKLSAgICAgICAgZWZmZWN0LnJl
YWRzID0gSGVhcFJhbmdlOjpub25lKCk7Ci0gICAgICAgIGVmZmVjdC53cml0ZXMgPSBIZWFwUmFu
Z2U6Om5vbmUoKTsKLSAgICAgICAgZWZmZWN0LmRlZiA9IEhlYXBSYW5nZTo6bm9uZSgpOwotICAg
ICAgICByZXR1cm4gZWZmZWN0OworICAgICAgICByZXR1cm4gRWZmZWN0KHJlYWRSYW5nZSwgSGVh
cFJhbmdlOjpub25lKCkpOwogICAgIH0KIAotICAgIHN0YXRpYyBFZmZlY3QgZm9yRGVmKEhlYXBS
YW5nZSBkZWYpCisgICAgY29uc3RleHByIHN0YXRpYyBFZmZlY3QgZm9yUmVhZFdyaXRlKEhlYXBS
YW5nZSByZWFkUmFuZ2UsIEhlYXBSYW5nZSB3cml0ZVJhbmdlKQogICAgIHsKLSAgICAgICAgRWZm
ZWN0IGVmZmVjdDsKLSAgICAgICAgZWZmZWN0LnJlYWRzID0gZGVmOwotICAgICAgICBlZmZlY3Qu
d3JpdGVzID0gSGVhcFJhbmdlOjpub25lKCk7Ci0gICAgICAgIGVmZmVjdC5kZWYgPSBkZWY7Ci0g
ICAgICAgIHJldHVybiBlZmZlY3Q7CisgICAgICAgIHJldHVybiBFZmZlY3QocmVhZFJhbmdlLCB3
cml0ZVJhbmdlKTsKICAgICB9CiAKLSAgICBzdGF0aWMgRWZmZWN0IGZvckRlZihIZWFwUmFuZ2Ug
ZGVmLCBIZWFwUmFuZ2UgcmVhZFJhbmdlLCBIZWFwUmFuZ2Ugd3JpdGVSYW5nZSkKKyAgICBjb25z
dGV4cHIgc3RhdGljIEVmZmVjdCBmb3JQdXJlKCkKICAgICB7Ci0gICAgICAgIEVmZmVjdCBlZmZl
Y3Q7Ci0gICAgICAgIGVmZmVjdC5yZWFkcyA9IHJlYWRSYW5nZTsKLSAgICAgICAgZWZmZWN0Lndy
aXRlcyA9IHdyaXRlUmFuZ2U7Ci0gICAgICAgIGVmZmVjdC5kZWYgPSBkZWY7Ci0gICAgICAgIHJl
dHVybiBlZmZlY3Q7CisgICAgICAgIHJldHVybiBFZmZlY3QoSGVhcFJhbmdlOjpub25lKCksIEhl
YXBSYW5nZTo6bm9uZSgpLCBIZWFwUmFuZ2U6Om5vbmUoKSk7CiAgICAgfQogCi0gICAgYm9vbCBt
dXN0R2VuZXJhdGUoKSBjb25zdAorICAgIGNvbnN0ZXhwciBzdGF0aWMgRWZmZWN0IGZvckRlZihI
ZWFwUmFuZ2UgZGVmKQorICAgIHsKKyAgICAgICAgcmV0dXJuIEVmZmVjdChkZWYsIEhlYXBSYW5n
ZTo6bm9uZSgpLCBkZWYpOworICAgIH0KKworICAgIGNvbnN0ZXhwciBzdGF0aWMgRWZmZWN0IGZv
ckRlZihIZWFwUmFuZ2UgZGVmLCBIZWFwUmFuZ2UgcmVhZFJhbmdlLCBIZWFwUmFuZ2Ugd3JpdGVS
YW5nZSkKKyAgICB7CisgICAgICAgIHJldHVybiBFZmZlY3QocmVhZFJhbmdlLCB3cml0ZVJhbmdl
LCBkZWYpOworICAgIH0KKworICAgIGNvbnN0ZXhwciBib29sIG11c3RHZW5lcmF0ZSgpIGNvbnN0
CiAgICAgewogICAgICAgICByZXR1cm4gISF3cml0ZXM7CiAgICAgfQogfTsKIAogfSB9Ci0KLSNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RvbWppdC9ET01KSVRIZWFw
UmFuZ2UuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kb21qaXQvRE9NSklUSGVhcFJhbmdlLmgK
aW5kZXggZmI5Mzk5OWZmNzg1YzA2ZjdkYWNkNmRhOWM4ZDZlMGE5NTY3ODY3NC4uYWFiMDJiZjAx
NjUzOWRlOGUyMjVlNzg0MGRmOWQ3NTFhYzE2M2UwMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RvbWppdC9ET01KSVRIZWFwUmFuZ2UuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZG9taml0L0RPTUpJVEhlYXBSYW5nZS5oCkBAIC0yOCw4ICsyOCw2IEBACiAjaW5jbHVk
ZSA8d3RmL01hdGhFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvUHJpbnRTdHJlYW0uaD4KIAotI2lm
IEVOQUJMRShKSVQpCi0KIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgRE9NSklUIHsKIAogY2xh
c3MgSGVhcFJhbmdlIHsKQEAgLTQ3LDcgKzQ1LDYgQEAgY2xhc3MgSGVhcFJhbmdlIHsKICAgICAg
ICAgQVNTRVJUX1dJVEhfTUVTU0FHRShiZWdpbiA8PSBlbmQsICJiZWdpbiA8PSBlbmQgaXMgdGhl
IGludmFyaWFudCBvZiB0aGlzIEhlYXBSYW5nZS4iKTsKICAgICB9CiAKLXByaXZhdGU6CiAgICAg
ZW51bSBDb25zdEV4cHJUYWcgeyBDb25zdEV4cHIgfTsKICAgICBjb25zdGV4cHIgSGVhcFJhbmdl
KENvbnN0RXhwclRhZywgdWludDE2X3QgYmVnaW4sIHVpbnQxNl90IGVuZCkKICAgICAgICAgOiBt
X2JlZ2luKGJlZ2luKQpAQCAtNTUsMjEgKzUyLDEzIEBAIGNsYXNzIEhlYXBSYW5nZSB7CiAgICAg
ewogICAgIH0KIAotICAgIHRlbXBsYXRlPHVpbnQxNl90IGJlZ2luLCB1aW50MTZfdCBlbmQ+Ci0g
ICAgc3RhdGljIGNvbnN0ZXhwciBIZWFwUmFuZ2UgZnJvbUNvbnN0YW50KCkKLSAgICB7Ci0gICAg
ICAgIHN0YXRpY19hc3NlcnQoYmVnaW4gPD0gZW5kLCAiYmVnaW4gPD0gZW5kIGlzIHRoZSBpbnZh
cmlhbnQgb2YgdGhpcyBIZWFwUmFuZ2UuIik7Ci0gICAgICAgIHJldHVybiBIZWFwUmFuZ2UoQ29u
c3RFeHByLCBiZWdpbiwgZW5kKTsKLSAgICB9Ci0KLXB1YmxpYzoKICAgICBlbnVtIFJhd1JlcHJl
c2VudGF0aW9uVGFnIHsgUmF3UmVwcmVzZW50YXRpb24gfTsKICAgICBleHBsaWNpdCBjb25zdGV4
cHIgSGVhcFJhbmdlKFJhd1JlcHJlc2VudGF0aW9uVGFnLCB1aW50MzJfdCB2YWx1ZSkKICAgICAg
ICAgOiBtX3Jhdyh2YWx1ZSkKICAgICB7CiAgICAgfQogCi0gICAgc3RhdGljIEhlYXBSYW5nZSBm
cm9tUmF3KHVpbnQzMl90IHZhbHVlKQorICAgIGNvbnN0ZXhwciBzdGF0aWMgSGVhcFJhbmdlIGZy
b21SYXcodWludDMyX3QgdmFsdWUpCiAgICAgewogICAgICAgICByZXR1cm4gSGVhcFJhbmdlKFJh
d1JlcHJlc2VudGF0aW9uLCB2YWx1ZSk7CiAgICAgfQpAQCAtNzgsMTYgKzY3LDI4IEBAIGNsYXNz
IEhlYXBSYW5nZSB7CiAgICAgdWludDE2X3QgZW5kKCkgY29uc3QgeyByZXR1cm4gbV9lbmQ7IH0K
ICAgICB1aW50MzJfdCByYXdSZXByZXNlbnRhdGlvbigpIHsgcmV0dXJuIG1fcmF3OyB9CiAKLSAg
ICBleHBsaWNpdCBvcGVyYXRvciBib29sKCkgY29uc3QKKyAgICBjb25zdGV4cHIgZXhwbGljaXQg
b3BlcmF0b3IgYm9vbCgpIGNvbnN0CiAgICAgewogICAgICAgICByZXR1cm4gbV9iZWdpbiAhPSBt
X2VuZDsKICAgICB9CiAKLSAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgSGVhcFJhbmdlJiBvdGhl
cikgY29uc3QKKyAgICBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEhlYXBSYW5nZSYg
b3RoZXIpIGNvbnN0CiAgICAgewogICAgICAgICByZXR1cm4gbV9iZWdpbiA9PSBvdGhlci5tX2Jl
Z2luICYmIG1fZW5kID09IG90aGVyLm1fZW5kOwogICAgIH0KIAorICAgIGNvbnN0ZXhwciBib29s
IG9wZXJhdG9yIT0oY29uc3QgSGVhcFJhbmdlJiBvdGhlcikgY29uc3QKKyAgICB7CisgICAgICAg
IHJldHVybiAhb3BlcmF0b3I9PShvdGhlcik7CisgICAgfQorCisgICAgdGVtcGxhdGU8dWludDE2
X3QgYmVnaW4sIHVpbnQxNl90IGVuZD4KKyAgICBzdGF0aWMgY29uc3RleHByIEhlYXBSYW5nZSBm
cm9tQ29uc3RhbnQoKQorICAgIHsKKyAgICAgICAgc3RhdGljX2Fzc2VydChiZWdpbiA8IGVuZCB8
fCAoYmVnaW4gPT0gVUlOVDE2X01BWCAmJiBlbmQgPT0gVUlOVDE2X01BWCksICJiZWdpbiA8IGVu
ZCBvciB0aGUgYm90aCBhcmUgVUlOVDE2X01BWCBpcyB0aGUgaW52YXJpYW50IG9mIHRoaXMgSGVh
cFJhbmdlLiIpOworICAgICAgICByZXR1cm4gSGVhcFJhbmdlKENvbnN0RXhwciwgYmVnaW4sIGVu
ZCk7CisgICAgfQorCiAgICAgc3RhdGljIGNvbnN0ZXhwciBIZWFwUmFuZ2UgdG9wKCkgeyByZXR1
cm4gZnJvbUNvbnN0YW50PDAsIFVJTlQxNl9NQVg+KCk7IH0KICAgICBzdGF0aWMgY29uc3RleHBy
IEhlYXBSYW5nZSBub25lKCkgeyByZXR1cm4gZnJvbUNvbnN0YW50PFVJTlQxNl9NQVgsIFVJTlQx
Nl9NQVg+KCk7IH0gLy8gRW1wdHkgcmFuZ2UuCiAKQEAgLTEyNyw1ICsxMjgsMyBAQCBjbGFzcyBI
ZWFwUmFuZ2UgewogfTsKIAogfSB9Ci0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RvbWppdC9ET01KSVRTaWduYXR1cmUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kb21qaXQvRE9NSklUU2lnbmF0dXJlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjUzNDI3ODdjZTkwOTU1YWFk
ZmRkNmNjOWFlMWIzZjlhZjI2NWIxNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kb21qaXQvRE9NSklUU2lnbmF0dXJlLmgKQEAgLTAsMCArMSw3MiBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisj
aW5jbHVkZSAiQ2xhc3NJbmZvLmgiCisjaW5jbHVkZSAiRE9NSklURWZmZWN0LmgiCisjaW5jbHVk
ZSAiU3BlY3VsYXRlZFR5cGUuaCIKKworbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBET01KSVQg
eworCisvLyBGSVhNRTogQ3VycmVudGx5LCB3ZSBvbmx5IHN1cHBvcnQgZnVuY3Rpb25zIHdoaWNo
IGFyZ3VtZW50cyBhcmUgdXAgdG8gMi4KKy8vIEV2ZW50dWFsbHksIHdlIHNob3VsZCBleHRlbmQg
dGhpcy4gQnV0IHBvc3NpYmx5LCAyIG9yIDMgY2FuIGNvdmVyIHR5cGljYWwgdXNlIGNhc2VzLgor
Ly8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NDM0NgorI2RlZmlu
ZSBKU0NfRE9NSklUX1NJR05BVFVSRV9NQVhfQVJHVU1FTlRTIDIKKyNkZWZpbmUgSlNDX0RPTUpJ
VF9TSUdOQVRVUkVfTUFYX0FSR1VNRU5UU19JTkNMVURJTkdfVEhJUyAoMSArIEpTQ19ET01KSVRf
U0lHTkFUVVJFX01BWF9BUkdVTUVOVFMpCisKK2NsYXNzIFBhdGNocG9pbnQ7CisKK3R5cGVkZWYg
UmVmPFBhdGNocG9pbnQ+IENoZWNrRE9NR2VuZXJhdG9yRnVuY3Rpb24odm9pZCk7CisKK2NsYXNz
IFNpZ25hdHVyZSB7CitwdWJsaWM6CisgICAgdGVtcGxhdGU8dHlwZW5hbWUuLi4gQXJndW1lbnRz
PgorICAgIGNvbnN0ZXhwciBTaWduYXR1cmUodWludHB0cl90IHVuc2FmZUZ1bmN0aW9uLCBDaGVj
a0RPTUdlbmVyYXRvckZ1bmN0aW9uKiBjaGVja0RPTUdlbmVyYXRvckZ1bmN0aW9uLCBjb25zdCBD
bGFzc0luZm8qIGNsYXNzSW5mbywgRWZmZWN0IGVmZmVjdCwgU3BlY3VsYXRlZFR5cGUgcmVzdWx0
LCBBcmd1bWVudHMuLi4gYXJndW1lbnRzKQorICAgICAgICA6IHVuc2FmZUZ1bmN0aW9uKHVuc2Fm
ZUZ1bmN0aW9uKQorICAgICAgICAsIGNoZWNrRE9NR2VuZXJhdG9yRnVuY3Rpb24oY2hlY2tET01H
ZW5lcmF0b3JGdW5jdGlvbikKKyAgICAgICAgLCBjbGFzc0luZm8oY2xhc3NJbmZvKQorICAgICAg
ICAsIGVmZmVjdChlZmZlY3QpCisgICAgICAgICwgcmVzdWx0KHJlc3VsdCkKKyAgICAgICAgLCBh
cmd1bWVudHMge3N0YXRpY19jYXN0PFNwZWN1bGF0ZWRUeXBlPihhcmd1bWVudHMpLi4ufQorICAg
ICAgICAsIGFyZ3VtZW50Q291bnQoc2l6ZW9mLi4uKEFyZ3VtZW50cykpCisgICAgeworICAgIH0K
KworICAgIFJlZjxQYXRjaHBvaW50PiBjaGVja0RPTSgpIGNvbnN0CisgICAgeworICAgICAgICBy
ZXR1cm4gY2hlY2tET01HZW5lcmF0b3JGdW5jdGlvbigpOworICAgIH0KKworICAgIHVpbnRwdHJf
dCB1bnNhZmVGdW5jdGlvbjsKKyAgICBDaGVja0RPTUdlbmVyYXRvckZ1bmN0aW9uKiBjaGVja0RP
TUdlbmVyYXRvckZ1bmN0aW9uOworICAgIGNvbnN0IENsYXNzSW5mbyogY29uc3QgY2xhc3NJbmZv
OworICAgIGNvbnN0IEVmZmVjdCBlZmZlY3Q7CisgICAgY29uc3QgU3BlY3VsYXRlZFR5cGUgcmVz
dWx0OworICAgIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIGFyZ3VtZW50c1tKU0NfRE9NSklUX1NJR05B
VFVSRV9NQVhfQVJHVU1FTlRTXTsKKyAgICBjb25zdCB1bnNpZ25lZCBhcmd1bWVudENvdW50Owor
fTsKKworfSB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFi
aWxpdGllcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5j
cHAKaW5kZXggNTRmNGU3MmU2NDE5YmZlMjU1NjUzZTM2NWZiYWM4MjAzMmZmZGU5Ny4uM2JhMTVl
NmUyODQ0ZDMwNDAzZThkZDRlMDE2YzI0YjBjMDQ2ZGZjMSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcApAQCAtMjczLDYgKzI3Myw3IEBAIGlubGlu
ZSBDYXBhYmlsaXR5TGV2ZWwgY2FuQ29tcGlsZShOb2RlKiBub2RlKQogICAgIGNhc2UgRGVmaW5l
QWNjZXNzb3JQcm9wZXJ0eToKICAgICBjYXNlIFRvTG93ZXJDYXNlOgogICAgIGNhc2UgQ2hlY2tE
T006CisgICAgY2FzZSBDYWxsRE9NOgogICAgIGNhc2UgQ2FsbERPTUdldHRlcjoKICAgICAgICAg
Ly8gVGhlc2UgYXJlIE9LLgogICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAppbmRleCBhZDE2MTU3MjAyN2M0MWYzMDA2ODNkYzEy
MjQyZjliOTVkNDU5MGMyLi43OWQ5N2JiNjAzODFmMzQxMjllYmViMDJjZWQ4ZTU4NGQyNDE4YTJl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCkBA
IC0xMDYwLDYgKzEwNjAsOSBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogICAgICAgICBjYXNlIENo
ZWNrRE9NOgogICAgICAgICAgICAgY29tcGlsZUNoZWNrRE9NKCk7CiAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgY2FzZSBDYWxsRE9NOgorICAgICAgICAgICAgY29tcGlsZUNhbGxET00oKTsK
KyAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIENhbGxET01HZXR0ZXI6CiAgICAgICAg
ICAgICBjb21waWxlQ2FsbERPTUdldHRlcigpOwogICAgICAgICAgICAgYnJlYWs7CkBAIC05MTAw
LDYgKzkxMDMsNTcgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKICAgICAgICAgcGF0Y2hwb2ludC0+
ZWZmZWN0cyA9IEVmZmVjdHM6OmZvckNoZWNrKCk7CiAgICAgfQogCisgICAgdm9pZCBjb21waWxl
Q2FsbERPTSgpCisgICAgeworICAgICAgICBjb25zdCBET01KSVQ6OlNpZ25hdHVyZSogc2lnbmF0
dXJlID0gbV9ub2RlLT5zaWduYXR1cmUoKTsKKworICAgICAgICAvLyBGSVhNRTogV2Ugc2hvdWxk
IGhhdmUgYSB3YXkgdG8gY2FsbCBmdW5jdGlvbnMgd2l0aCB0aGUgdmVjdG9yIG9mIHJlZ2lzdGVy
cy4KKyAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2
MzA5OQorICAgICAgICBWZWN0b3I8TFZhbHVlLCBKU0NfRE9NSklUX1NJR05BVFVSRV9NQVhfQVJH
VU1FTlRTX0lOQ0xVRElOR19USElTPiBvcGVyYW5kczsKKworICAgICAgICB1bnNpZ25lZCBpbmRl
eCA9IDA7CisgICAgICAgIERGR19OT0RFX0RPX1RPX0NISUxEUkVOKG1fZ3JhcGgsIG1fbm9kZSwg
WyZdKE5vZGUqLCBFZGdlIGVkZ2UpIHsKKyAgICAgICAgICAgIGlmICghaW5kZXgpCisgICAgICAg
ICAgICAgICAgb3BlcmFuZHMuYXBwZW5kKGxvd0NlbGwoZWRnZSkpOworICAgICAgICAgICAgZWxz
ZSB7CisgICAgICAgICAgICAgICAgc3dpdGNoIChzaWduYXR1cmUtPmFyZ3VtZW50c1tpbmRleCAt
IDFdKSB7CisgICAgICAgICAgICAgICAgY2FzZSBTcGVjU3RyaW5nOgorICAgICAgICAgICAgICAg
ICAgICBvcGVyYW5kcy5hcHBlbmQobG93U3RyaW5nKGVkZ2UpKTsKKyAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSBTcGVjSW50MzJPbmx5OgorICAgICAgICAg
ICAgICAgICAgICBvcGVyYW5kcy5hcHBlbmQobG93SW50MzIoZWRnZSkpOworICAgICAgICAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIFNwZWNCb29sZWFuOgorICAgICAg
ICAgICAgICAgICAgICBvcGVyYW5kcy5hcHBlbmQobG93Qm9vbGVhbihlZGdlKSk7CisgICAgICAg
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAg
ICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAg
ICsraW5kZXg7CisgICAgICAgIH0pOworCisgICAgICAgIHVuc2lnbmVkIGFyZ3VtZW50Q291bnRJ
bmNsdWRpbmdUaGlzID0gc2lnbmF0dXJlLT5hcmd1bWVudENvdW50ICsgMTsKKyAgICAgICAgTFZh
bHVlIHJlc3VsdDsKKyAgICAgICAgc3dpdGNoIChhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcykg
eworICAgICAgICBjYXNlIDE6CisgICAgICAgICAgICByZXN1bHQgPSB2bUNhbGwoSW50NjQsIG1f
b3V0Lm9wZXJhdGlvbihyZWludGVycHJldF9jYXN0PEpfSklUT3BlcmF0aW9uX0VQPihzaWduYXR1
cmUtPnVuc2FmZUZ1bmN0aW9uKSksIG1fY2FsbEZyYW1lLCBvcGVyYW5kc1swXSk7CisgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgY2FzZSAyOgorICAgICAgICAgICAgcmVzdWx0ID0gdm1DYWxs
KEludDY0LCBtX291dC5vcGVyYXRpb24ocmVpbnRlcnByZXRfY2FzdDxKX0pJVE9wZXJhdGlvbl9F
UFA+KHNpZ25hdHVyZS0+dW5zYWZlRnVuY3Rpb24pKSwgbV9jYWxsRnJhbWUsIG9wZXJhbmRzWzBd
LCBvcGVyYW5kc1sxXSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSAzOgorICAg
ICAgICAgICAgcmVzdWx0ID0gdm1DYWxsKEludDY0LCBtX291dC5vcGVyYXRpb24ocmVpbnRlcnBy
ZXRfY2FzdDxKX0pJVE9wZXJhdGlvbl9FUFBQPihzaWduYXR1cmUtPnVuc2FmZUZ1bmN0aW9uKSks
IG1fY2FsbEZyYW1lLCBvcGVyYW5kc1swXSwgb3BlcmFuZHNbMV0sIG9wZXJhbmRzWzJdKTsKKyAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgUkVMRUFTRV9B
U1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAg
ICAgICAgc2V0SlNWYWx1ZShyZXN1bHQpOworICAgIH0KKwogICAgIHZvaWQgY29tcGlsZUNhbGxE
T01HZXR0ZXIoKQogICAgIHsKICAgICAgICAgRE9NSklUOjpDYWxsRE9NR2V0dGVyUGF0Y2hwb2lu
dCogZG9tSklUID0gbV9ub2RlLT5jYWxsRE9NR2V0dGVyRGF0YSgpLT5wYXRjaHBvaW50OwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaAppbmRleCA4ZjZjNjk3MWE2YmVl
OWYxZmI2ZmMzNjhkZTVhMmNiODQ3NjQ0YTY4Li4yMGI3MWY0NTJjZTQ0YjVjYzU2Y2M3MWMyZDc2
YjE3YjU4OGZlNjY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9w
ZXJhdGlvbnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMu
aApAQCAtMTU4LDYgKzE1OCw3IEBAIHR5cGVkZWYgRW5jb2RlZEpTVmFsdWUgKEpJVF9PUEVSQVRJ
T04gKkpfSklUT3BlcmF0aW9uX0VKUCkoRXhlY1N0YXRlKiwgRW5jb2RlZEpTCiB0eXBlZGVmIEVu
Y29kZWRKU1ZhbHVlIChKSVRfT1BFUkFUSU9OICpKX0pJVE9wZXJhdGlvbl9FR1ApKEV4ZWNTdGF0
ZSosIEpTR2xvYmFsT2JqZWN0Kiwgdm9pZCopOwogdHlwZWRlZiBFbmNvZGVkSlNWYWx1ZSAoSklU
X09QRVJBVElPTiAqSl9KSVRPcGVyYXRpb25fRVApKEV4ZWNTdGF0ZSosIHZvaWQqKTsKIHR5cGVk
ZWYgRW5jb2RlZEpTVmFsdWUgKEpJVF9PUEVSQVRJT04gKkpfSklUT3BlcmF0aW9uX0VQUCkoRXhl
Y1N0YXRlKiwgdm9pZCosIHZvaWQqKTsKK3R5cGVkZWYgRW5jb2RlZEpTVmFsdWUgKEpJVF9PUEVS
QVRJT04gKkpfSklUT3BlcmF0aW9uX0VQUFApKEV4ZWNTdGF0ZSosIHZvaWQqLCB2b2lkKiwgdm9p
ZCopOwogdHlwZWRlZiBFbmNvZGVkSlNWYWx1ZSAoSklUX09QRVJBVElPTiAqSl9KSVRPcGVyYXRp
b25fRVBTKShFeGVjU3RhdGUqLCB2b2lkKiwgc2l6ZV90KTsKIHR5cGVkZWYgRW5jb2RlZEpTVmFs
dWUgKEpJVF9PUEVSQVRJT04gKkpfSklUT3BlcmF0aW9uX0VQYykoRXhlY1N0YXRlKiwgSW5zdHJ1
Y3Rpb24qKTsKIHR5cGVkZWYgRW5jb2RlZEpTVmFsdWUgKEpJVF9PUEVSQVRJT04gKkpfSklUT3Bl
cmF0aW9uX0VKc2NDKShFeGVjU3RhdGUqLCBKU1Njb3BlKiwgSlNDZWxsKik7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFRodW5rcy5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVFRodW5rcy5jcHAKaW5kZXggYmYwYTdmOTA5MTlhNWI2ZDBiZWVkOTI4
YWJkYWY3MTBjOWRjOWQwYi4uNDBjMTJjZWM5NGUwMWEwODQwNGY3YjZkOTY3MjFmMTA1MWY0ODMx
OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRUaHVua3MuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUVGh1bmtzLmNwcApAQCAtOTAsMTAgKzkw
LDEwIEBAIHZvaWQgSklUVGh1bmtzOjpmaW5hbGl6ZShIYW5kbGU8VW5rbm93bj4gaGFuZGxlLCB2
b2lkKikKIAogTmF0aXZlRXhlY3V0YWJsZSogSklUVGh1bmtzOjpob3N0RnVuY3Rpb25TdHViKFZN
KiB2bSwgTmF0aXZlRnVuY3Rpb24gZnVuY3Rpb24sIE5hdGl2ZUZ1bmN0aW9uIGNvbnN0cnVjdG9y
LCBjb25zdCBTdHJpbmcmIG5hbWUpCiB7Ci0gICAgcmV0dXJuIGhvc3RGdW5jdGlvblN0dWIodm0s
IGZ1bmN0aW9uLCBjb25zdHJ1Y3RvciwgbnVsbHB0ciwgTm9JbnRyaW5zaWMsIG5hbWUpOworICAg
IHJldHVybiBob3N0RnVuY3Rpb25TdHViKHZtLCBmdW5jdGlvbiwgY29uc3RydWN0b3IsIG51bGxw
dHIsIE5vSW50cmluc2ljLCBudWxscHRyLCBuYW1lKTsKIH0KIAotTmF0aXZlRXhlY3V0YWJsZSog
SklUVGh1bmtzOjpob3N0RnVuY3Rpb25TdHViKFZNKiB2bSwgTmF0aXZlRnVuY3Rpb24gZnVuY3Rp
b24sIE5hdGl2ZUZ1bmN0aW9uIGNvbnN0cnVjdG9yLCBUaHVua0dlbmVyYXRvciBnZW5lcmF0b3Is
IEludHJpbnNpYyBpbnRyaW5zaWMsIGNvbnN0IFN0cmluZyYgbmFtZSkKK05hdGl2ZUV4ZWN1dGFi
bGUqIEpJVFRodW5rczo6aG9zdEZ1bmN0aW9uU3R1YihWTSogdm0sIE5hdGl2ZUZ1bmN0aW9uIGZ1
bmN0aW9uLCBOYXRpdmVGdW5jdGlvbiBjb25zdHJ1Y3RvciwgVGh1bmtHZW5lcmF0b3IgZ2VuZXJh
dG9yLCBJbnRyaW5zaWMgaW50cmluc2ljLCBjb25zdCBET01KSVQ6OlNpZ25hdHVyZSogc2lnbmF0
dXJlLCBjb25zdCBTdHJpbmcmIG5hbWUpCiB7CiAgICAgQVNTRVJUKCFpc0NvbXBpbGF0aW9uVGhy
ZWFkKCkpOyAgICAKICAgICBBU1NFUlQodm0tPmNhblVzZUpJVCgpKTsKQEAgLTExMCwxNCArMTEw
LDE0IEBAIE5hdGl2ZUV4ZWN1dGFibGUqIEpJVFRodW5rczo6aG9zdEZ1bmN0aW9uU3R1YihWTSog
dm0sIE5hdGl2ZUZ1bmN0aW9uIGZ1bmN0aW9uLCBOCiAgICAgCiAgICAgUmVmUHRyPEpJVENvZGU+
IGZvckNvbnN0cnVjdCA9IGFkb3B0UmVmKG5ldyBOYXRpdmVKSVRDb2RlKE1hY3JvQXNzZW1ibGVy
Q29kZVJlZjo6Y3JlYXRlU2VsZk1hbmFnZWRDb2RlUmVmKGN0aU5hdGl2ZUNvbnN0cnVjdCh2bSkp
LCBKSVRDb2RlOjpIb3N0Q2FsbFRodW5rKSk7CiAgICAgCi0gICAgTmF0aXZlRXhlY3V0YWJsZSog
bmF0aXZlRXhlY3V0YWJsZSA9IE5hdGl2ZUV4ZWN1dGFibGU6OmNyZWF0ZSgqdm0sIGZvckNhbGws
IGZ1bmN0aW9uLCBmb3JDb25zdHJ1Y3QsIGNvbnN0cnVjdG9yLCBpbnRyaW5zaWMsIG5hbWUpOwor
ICAgIE5hdGl2ZUV4ZWN1dGFibGUqIG5hdGl2ZUV4ZWN1dGFibGUgPSBOYXRpdmVFeGVjdXRhYmxl
OjpjcmVhdGUoKnZtLCBmb3JDYWxsLCBmdW5jdGlvbiwgZm9yQ29uc3RydWN0LCBjb25zdHJ1Y3Rv
ciwgaW50cmluc2ljLCBzaWduYXR1cmUsIG5hbWUpOwogICAgIHdlYWtBZGQoKm1faG9zdEZ1bmN0
aW9uU3R1Yk1hcCwgc3RkOjptYWtlX3R1cGxlKGZ1bmN0aW9uLCBjb25zdHJ1Y3RvciwgbmFtZSks
IFdlYWs8TmF0aXZlRXhlY3V0YWJsZT4obmF0aXZlRXhlY3V0YWJsZSwgdGhpcykpOwogICAgIHJl
dHVybiBuYXRpdmVFeGVjdXRhYmxlOwogfQogCiBOYXRpdmVFeGVjdXRhYmxlKiBKSVRUaHVua3M6
Omhvc3RGdW5jdGlvblN0dWIoVk0qIHZtLCBOYXRpdmVGdW5jdGlvbiBmdW5jdGlvbiwgVGh1bmtH
ZW5lcmF0b3IgZ2VuZXJhdG9yLCBJbnRyaW5zaWMgaW50cmluc2ljLCBjb25zdCBTdHJpbmcmIG5h
bWUpCiB7Ci0gICAgcmV0dXJuIGhvc3RGdW5jdGlvblN0dWIodm0sIGZ1bmN0aW9uLCBjYWxsSG9z
dEZ1bmN0aW9uQXNDb25zdHJ1Y3RvciwgZ2VuZXJhdG9yLCBpbnRyaW5zaWMsIG5hbWUpOworICAg
IHJldHVybiBob3N0RnVuY3Rpb25TdHViKHZtLCBmdW5jdGlvbiwgY2FsbEhvc3RGdW5jdGlvbkFz
Q29uc3RydWN0b3IsIGdlbmVyYXRvciwgaW50cmluc2ljLCBudWxscHRyLCBuYW1lKTsKIH0KIAog
dm9pZCBKSVRUaHVua3M6OmNsZWFySG9zdEZ1bmN0aW9uU3R1YnMoKQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRUaHVua3MuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUVGh1bmtzLmgKaW5kZXggM2Y4ZmU4MDNmOTg3MTBmNjkyMzUyN2JjOGY2NTUwZjRl
ZGQxYzdhZS4uYWRkY2YyMzBjMzQ1ZDQyNzFiNjM3ZjA4Yjk0YzQxNmEzZWQxODJhNCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRUaHVua3MuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVFRodW5rcy5oCkBAIC0zOSw2ICszOSw5IEBACiAjaW5jbHVk
ZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgogCiBuYW1lc3BhY2UgSlNDIHsKK25hbWVzcGFjZSBE
T01KSVQgeworY2xhc3MgU2lnbmF0dXJlOworfQogCiBjbGFzcyBWTTsKIGNsYXNzIE5hdGl2ZUV4
ZWN1dGFibGU7CkBAIC01Nyw3ICs2MCw3IEBAIGNsYXNzIEpJVFRodW5rcyBmaW5hbCA6IHByaXZh
dGUgV2Vha0hhbmRsZU93bmVyIHsKICAgICBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgY3RpU3R1YihW
TSosIFRodW5rR2VuZXJhdG9yKTsKIAogICAgIE5hdGl2ZUV4ZWN1dGFibGUqIGhvc3RGdW5jdGlv
blN0dWIoVk0qLCBOYXRpdmVGdW5jdGlvbiwgTmF0aXZlRnVuY3Rpb24gY29uc3RydWN0b3IsIGNv
bnN0IFN0cmluZyYgbmFtZSk7Ci0gICAgTmF0aXZlRXhlY3V0YWJsZSogaG9zdEZ1bmN0aW9uU3R1
YihWTSosIE5hdGl2ZUZ1bmN0aW9uLCBOYXRpdmVGdW5jdGlvbiBjb25zdHJ1Y3RvciwgVGh1bmtH
ZW5lcmF0b3IsIEludHJpbnNpYywgY29uc3QgU3RyaW5nJiBuYW1lKTsKKyAgICBOYXRpdmVFeGVj
dXRhYmxlKiBob3N0RnVuY3Rpb25TdHViKFZNKiwgTmF0aXZlRnVuY3Rpb24sIE5hdGl2ZUZ1bmN0
aW9uIGNvbnN0cnVjdG9yLCBUaHVua0dlbmVyYXRvciwgSW50cmluc2ljLCBjb25zdCBET01KSVQ6
OlNpZ25hdHVyZSosIGNvbnN0IFN0cmluZyYgbmFtZSk7CiAgICAgTmF0aXZlRXhlY3V0YWJsZSog
aG9zdEZ1bmN0aW9uU3R1YihWTSosIE5hdGl2ZUZ1bmN0aW9uLCBUaHVua0dlbmVyYXRvciwgSW50
cmluc2ljLCBjb25zdCBTdHJpbmcmIG5hbWUpOwogCiAgICAgdm9pZCBjbGVhckhvc3RGdW5jdGlv
blN0dWJzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Jv
dW5kRnVuY3Rpb24uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCb3VuZEZ1
bmN0aW9uLmNwcAppbmRleCAyNmY5OWQ2NTNhYTE0NGIyNDA0ZGQ3OTU5NDMyOTNkZTk2YjczNGM1
Li5jNGNlNDNlN2Q1NjBiODczNjNjNDhkOTUwYTA5YWQ3OWQwNTI0OTdhIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0JvdW5kRnVuY3Rpb24uY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQm91bmRGdW5jdGlvbi5jcHAKQEAgLTE2OCw3
ICsxNjgsNyBAQCBKU0JvdW5kRnVuY3Rpb24qIEpTQm91bmRGdW5jdGlvbjo6Y3JlYXRlKFZNJiB2
bSwgRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdAogICAgIE5hdGl2ZUV4ZWN1dGFibGUq
IGV4ZWN1dGFibGUgPSB2bS5nZXRIb3N0RnVuY3Rpb24oCiAgICAgICAgIHNsb3dDYXNlID8gYm91
bmRGdW5jdGlvbkNhbGwgOiBib3VuZFRoaXNOb0FyZ3NGdW5jdGlvbkNhbGwsCiAgICAgICAgIHNs
b3dDYXNlID8gTm9JbnRyaW5zaWMgOiBCb3VuZFRoaXNOb0FyZ3NGdW5jdGlvbkNhbGxJbnRyaW5z
aWMsCi0gICAgICAgIGNhbkNvbnN0cnVjdCA/IChzbG93Q2FzZSA/IGJvdW5kRnVuY3Rpb25Db25z
dHJ1Y3QgOiBib3VuZFRoaXNOb0FyZ3NGdW5jdGlvbkNvbnN0cnVjdCkgOiBjYWxsSG9zdEZ1bmN0
aW9uQXNDb25zdHJ1Y3RvciwKKyAgICAgICAgY2FuQ29uc3RydWN0ID8gKHNsb3dDYXNlID8gYm91
bmRGdW5jdGlvbkNvbnN0cnVjdCA6IGJvdW5kVGhpc05vQXJnc0Z1bmN0aW9uQ29uc3RydWN0KSA6
IGNhbGxIb3N0RnVuY3Rpb25Bc0NvbnN0cnVjdG9yLCBudWxscHRyLAogICAgICAgICBuYW1lKTsK
ICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGdldEJvdW5kRnVuY3Rpb25TdHJ1Y3R1cmUodm0s
IGV4ZWMsIGdsb2JhbE9iamVjdCwgdGFyZ2V0RnVuY3Rpb24pOwogICAgIFJFVFVSTl9JRl9FWENF
UFRJT04oc2NvcGUsIG51bGxwdHIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNDZWxsLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwu
aAppbmRleCBjNDBmM2UyMTk4NDFmYjQ2ODk2MzUyODRiMDQyMjQ3YWZkNTIzYzM2Li40ZWZiZjkw
Nzc4Y2M1NzFiYmRiODI4NzFhNTFmYTQ0Zjg1NmFlOThiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0NlbGwuaApAQCAtNTYsMTcgKzU2LDE3IEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQ+
IHZvaWQqIGFsbG9jYXRlQ2VsbChIZWFwJiwgc2l6ZV90KTsKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+
IHZvaWQqIGFsbG9jYXRlQ2VsbChIZWFwJiwgR0NEZWZlcnJhbENvbnRleHQqKTsKIHRlbXBsYXRl
PHR5cGVuYW1lIFQ+IHZvaWQqIGFsbG9jYXRlQ2VsbChIZWFwJiwgR0NEZWZlcnJhbENvbnRleHQq
LCBzaXplX3QpOwogCi0jZGVmaW5lIERFQ0xBUkVfRVhQT1JUX0lORk8gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgcHJvdGVjdGVkOiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAg
IHN0YXRpYyBKU19FWFBPUlREQVRBIGNvbnN0IDo6SlNDOjpDbGFzc0luZm8gc19pbmZvOyAgICAg
ICAgICAgICBcCi0gICAgcHVibGljOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIHN0YXRpYyBjb25zdCA6OkpTQzo6
Q2xhc3NJbmZvKiBpbmZvKCkgeyByZXR1cm4gJnNfaW5mbzsgfQotCi0jZGVmaW5lIERFQ0xBUkVf
SU5GTyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc
Ci0gICAgcHJvdGVjdGVkOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBcCi0gICAgICAgIHN0YXRpYyBjb25zdCA6OkpTQzo6Q2xhc3NJbmZv
IHNfaW5mbzsgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgcHVibGljOiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0g
ICAgICAgIHN0YXRpYyBjb25zdCA6OkpTQzo6Q2xhc3NJbmZvKiBpbmZvKCkgeyByZXR1cm4gJnNf
aW5mbzsgfQorI2RlZmluZSBERUNMQVJFX0VYUE9SVF9JTkZPICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgcHJvdGVjdGVkOiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAg
ICAgICAgc3RhdGljIEpTX0VYUE9SVERBVEEgY29uc3QgOjpKU0M6OkNsYXNzSW5mbyBzX2luZm87
ICAgICAgICAgICAgICAgICAgXAorICAgIHB1YmxpYzogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIHN0YXRp
YyBjb25zdGV4cHIgY29uc3QgOjpKU0M6OkNsYXNzSW5mbyogaW5mbygpIHsgcmV0dXJuICZzX2lu
Zm87IH0KKworI2RlZmluZSBERUNMQVJFX0lORk8gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgcHJvdGVjdGVkOiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAg
ICAgICAgc3RhdGljIGNvbnN0IDo6SlNDOjpDbGFzc0luZm8gc19pbmZvOyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgXAorICAgIHB1YmxpYzogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIHN0YXRp
YyBjb25zdGV4cHIgY29uc3QgOjpKU0M6OkNsYXNzSW5mbyogaW5mbygpIHsgcmV0dXJuICZzX2lu
Zm87IH0KIAogY2xhc3MgSlNDZWxsIDogcHVibGljIEhlYXBDZWxsIHsKICAgICBmcmllbmQgY2xh
c3MgSlNWYWx1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
RnVuY3Rpb24uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5j
cHAKaW5kZXggODU4NGJjMjk3YWY3MjNmNTgyOTgxNTZlMmUyYjBhODhhZTcxOGZiNC4uYTMxODQy
YjY1OTA5M2VlZDQ4MzJmMGMyMjU0N2ZmYjQ0OWM0NGNkOSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAKQEAgLTg0LDkgKzg0LDkgQEAgSlNGdW5jdGlv
biogSlNGdW5jdGlvbjo6Y3JlYXRlKFZNJiB2bSwgV2ViQXNzZW1ibHlFeGVjdXRhYmxlKiBleGVj
dXRhYmxlLCBKU1Njb3AKIH0KICNlbmRpZgogCi1KU0Z1bmN0aW9uKiBKU0Z1bmN0aW9uOjpjcmVh
dGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBpbnQgbGVuZ3RoLCBjb25z
dCBTdHJpbmcmIG5hbWUsIE5hdGl2ZUZ1bmN0aW9uIG5hdGl2ZUZ1bmN0aW9uLCBJbnRyaW5zaWMg
aW50cmluc2ljLCBOYXRpdmVGdW5jdGlvbiBuYXRpdmVDb25zdHJ1Y3RvcikKK0pTRnVuY3Rpb24q
IEpTRnVuY3Rpb246OmNyZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IGludCBsZW5ndGgsIGNvbnN0IFN0cmluZyYgbmFtZSwgTmF0aXZlRnVuY3Rpb24gbmF0aXZlRnVu
Y3Rpb24sIEludHJpbnNpYyBpbnRyaW5zaWMsIE5hdGl2ZUZ1bmN0aW9uIG5hdGl2ZUNvbnN0cnVj
dG9yLCBjb25zdCBET01KSVQ6OlNpZ25hdHVyZSogc2lnbmF0dXJlKQogewotICAgIE5hdGl2ZUV4
ZWN1dGFibGUqIGV4ZWN1dGFibGUgPSB2bS5nZXRIb3N0RnVuY3Rpb24obmF0aXZlRnVuY3Rpb24s
IGludHJpbnNpYywgbmF0aXZlQ29uc3RydWN0b3IsIG5hbWUpOworICAgIE5hdGl2ZUV4ZWN1dGFi
bGUqIGV4ZWN1dGFibGUgPSB2bS5nZXRIb3N0RnVuY3Rpb24obmF0aXZlRnVuY3Rpb24sIGludHJp
bnNpYywgbmF0aXZlQ29uc3RydWN0b3IsIHNpZ25hdHVyZSwgbmFtZSk7CiAgICAgSlNGdW5jdGlv
biogZnVuY3Rpb24gPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU0Z1bmN0aW9uPih2bS5o
ZWFwKSkgSlNGdW5jdGlvbih2bSwgZ2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QtPmZ1bmN0aW9u
U3RydWN0dXJlKCkpOwogICAgIC8vIENhbid0IGRvIHRoaXMgZHVyaW5nIGluaXRpYWxpemF0aW9u
IGJlY2F1c2UgZ2V0SG9zdEZ1bmN0aW9uIG1pZ2h0IGRvIGEgR0MgYWxsb2NhdGlvbi4KICAgICBm
dW5jdGlvbi0+ZmluaXNoQ3JlYXRpb24odm0sIGV4ZWN1dGFibGUsIGxlbmd0aCwgbmFtZSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmgKaW5kZXggOGRmMDNhMTRh
NjdkYWU5MzA0YzBkNTU0OTRmOTVhODc3Zjk3ODFlNi4uZjExYjEyZmIzYmQxNDU2MjVmODJiZjFm
YTg3MjUwNDQ0NzY1NzYyOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNGdW5jdGlvbi5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVu
Y3Rpb24uaApAQCAtNDYsNiArNDYsMTEgQEAgY2xhc3MgU3BlY3VsYXRpdmVKSVQ7CiBjbGFzcyBK
SVRDb21waWxlcjsKIH0KIAorbmFtZXNwYWNlIERPTUpJVCB7CitjbGFzcyBTaWduYXR1cmU7Cit9
CisKKwogSlNfRVhQT1JUX1BSSVZBVEUgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxs
SG9zdEZ1bmN0aW9uQXNDb25zdHJ1Y3RvcihFeGVjU3RhdGUqKTsKIAogSlNfRVhQT1JUX1BSSVZB
VEUgU3RyaW5nIGdldENhbGN1bGF0ZWREaXNwbGF5TmFtZShWTSYsIEpTT2JqZWN0Kik7CkBAIC02
Nyw3ICs3Miw3IEBAIGNsYXNzIEpTRnVuY3Rpb24gOiBwdWJsaWMgSlNDYWxsZWUgewogICAgICAg
ICByZXR1cm4gc2l6ZW9mKEpTRnVuY3Rpb24pOwogICAgIH0KIAotICAgIEpTX0VYUE9SVF9QUklW
QVRFIHN0YXRpYyBKU0Z1bmN0aW9uKiBjcmVhdGUoVk0mLCBKU0dsb2JhbE9iamVjdCosIGludCBs
ZW5ndGgsIGNvbnN0IFN0cmluZyYgbmFtZSwgTmF0aXZlRnVuY3Rpb24sIEludHJpbnNpYyA9IE5v
SW50cmluc2ljLCBOYXRpdmVGdW5jdGlvbiBuYXRpdmVDb25zdHJ1Y3RvciA9IGNhbGxIb3N0RnVu
Y3Rpb25Bc0NvbnN0cnVjdG9yKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgSlNGdW5j
dGlvbiogY3JlYXRlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBpbnQgbGVuZ3RoLCBjb25zdCBTdHJp
bmcmIG5hbWUsIE5hdGl2ZUZ1bmN0aW9uLCBJbnRyaW5zaWMgPSBOb0ludHJpbnNpYywgTmF0aXZl
RnVuY3Rpb24gbmF0aXZlQ29uc3RydWN0b3IgPSBjYWxsSG9zdEZ1bmN0aW9uQXNDb25zdHJ1Y3Rv
ciwgY29uc3QgRE9NSklUOjpTaWduYXR1cmUqID0gbnVsbHB0cik7CiAgICAgCiAgICAgc3RhdGlj
IEpTRnVuY3Rpb24qIGNyZWF0ZVdpdGhJbnZhbGlkYXRlZFJlYWxsb2NhdGlvbldhdGNocG9pbnQo
Vk0mLCBGdW5jdGlvbkV4ZWN1dGFibGUqLCBKU1Njb3BlKik7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTmF0aXZlU3RkRnVuY3Rpb24uY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNOYXRpdmVTdGRGdW5jdGlvbi5jcHAKaW5kZXggNmRk
ODQ5ZjJlYWZiZWJkZDcwN2VlNTczODAwODJkZTU0ODkzMjBhMS4uYzEyNjViMWYwNmE5MGEwNzQ0
MWQ3YWM1YzYwODgzMGExZWZhNGYwMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNOYXRpdmVTdGRGdW5jdGlvbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNOYXRpdmVTdGRGdW5jdGlvbi5jcHAKQEAgLTY2LDcgKzY2LDcgQEAgc3Rh
dGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcnVuU3RkRnVuY3Rpb24oRXhlY1N0YXRl
KiBzdGF0ZSkKIAogSlNOYXRpdmVTdGRGdW5jdGlvbiogSlNOYXRpdmVTdGRGdW5jdGlvbjo6Y3Jl
YXRlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgaW50IGxlbmd0aCwgY29u
c3QgU3RyaW5nJiBuYW1lLCBOYXRpdmVTdGRGdW5jdGlvbiYmIG5hdGl2ZVN0ZEZ1bmN0aW9uLCBJ
bnRyaW5zaWMgaW50cmluc2ljLCBOYXRpdmVGdW5jdGlvbiBuYXRpdmVDb25zdHJ1Y3RvcikKIHsK
LSAgICBOYXRpdmVFeGVjdXRhYmxlKiBleGVjdXRhYmxlID0gdm0uZ2V0SG9zdEZ1bmN0aW9uKHJ1
blN0ZEZ1bmN0aW9uLCBpbnRyaW5zaWMsIG5hdGl2ZUNvbnN0cnVjdG9yLCBuYW1lKTsKKyAgICBO
YXRpdmVFeGVjdXRhYmxlKiBleGVjdXRhYmxlID0gdm0uZ2V0SG9zdEZ1bmN0aW9uKHJ1blN0ZEZ1
bmN0aW9uLCBpbnRyaW5zaWMsIG5hdGl2ZUNvbnN0cnVjdG9yLCBudWxscHRyLCBuYW1lKTsKICAg
ICBOYXRpdmVTdGRGdW5jdGlvbkNlbGwqIGZ1bmN0aW9uQ2VsbCA9IE5hdGl2ZVN0ZEZ1bmN0aW9u
Q2VsbDo6Y3JlYXRlKHZtLCBXVEZNb3ZlKG5hdGl2ZVN0ZEZ1bmN0aW9uKSk7CiAgICAgU3RydWN0
dXJlKiBzdHJ1Y3R1cmUgPSBnbG9iYWxPYmplY3QtPm5hdGl2ZVN0ZEZ1bmN0aW9uU3RydWN0dXJl
KCk7CiAgICAgSlNOYXRpdmVTdGRGdW5jdGlvbiogZnVuY3Rpb24gPSBuZXcgKE5vdE51bGwsIGFs
bG9jYXRlQ2VsbDxKU05hdGl2ZVN0ZEZ1bmN0aW9uPih2bS5oZWFwKSkgSlNOYXRpdmVTdGRGdW5j
dGlvbih2bSwgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNPYmplY3QuY3BwCmluZGV4IGY1M2RiNjE5ODZlYWRkYWEyM2EyNDVkZTU0YWUw
OWM1OGYwYWI3NjQuLjA4YWU3OTIwYTllZTUyYzI0ZDc1YWJlMWRhN2Y2NmU4MTFiMmFmMWMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAKQEAgLTI1NDksNiAr
MjU0OSwxNyBAQCBib29sIEpTT2JqZWN0OjpwdXREaXJlY3ROYXRpdmVGdW5jdGlvbihWTSYgdm0s
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbgogICAgIHJldHVybiBwdXREaXJlY3Qo
dm0sIHByb3BlcnR5TmFtZSwgZnVuY3Rpb24sIGF0dHJpYnV0ZXMpOwogfQogCitib29sIEpTT2Jq
ZWN0OjpwdXREaXJlY3ROYXRpdmVGdW5jdGlvbihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIGNvbnN0IFByb3BlcnR5TmFtZSYgcHJvcGVydHlOYW1lLCB1bnNpZ25lZCBmdW5j
dGlvbkxlbmd0aCwgTmF0aXZlRnVuY3Rpb24gbmF0aXZlRnVuY3Rpb24sIEludHJpbnNpYyBpbnRy
aW5zaWMsIGNvbnN0IERPTUpJVDo6U2lnbmF0dXJlKiBzaWduYXR1cmUsIHVuc2lnbmVkIGF0dHJp
YnV0ZXMpCit7CisgICAgU3RyaW5nSW1wbCogbmFtZSA9IHByb3BlcnR5TmFtZS5wdWJsaWNOYW1l
KCk7CisgICAgaWYgKCFuYW1lKQorICAgICAgICBuYW1lID0gdm0ucHJvcGVydHlOYW1lcy0+YW5v
bnltb3VzLmltcGwoKTsKKyAgICBBU1NFUlQobmFtZSk7CisKKyAgICBKU0Z1bmN0aW9uKiBmdW5j
dGlvbiA9IEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBmdW5jdGlvbkxlbmd0
aCwgbmFtZSwgbmF0aXZlRnVuY3Rpb24sIGludHJpbnNpYywgY2FsbEhvc3RGdW5jdGlvbkFzQ29u
c3RydWN0b3IsIHNpZ25hdHVyZSk7CisgICAgcmV0dXJuIHB1dERpcmVjdCh2bSwgcHJvcGVydHlO
YW1lLCBmdW5jdGlvbiwgYXR0cmlidXRlcyk7Cit9CisKIEpTRnVuY3Rpb24qIEpTT2JqZWN0Ojpw
dXREaXJlY3RCdWlsdGluRnVuY3Rpb24oVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBjb25zdCBQcm9wZXJ0eU5hbWUmIHByb3BlcnR5TmFtZSwgRnVuY3Rpb25FeGVjdXRhYmxl
KiBmdW5jdGlvbkV4ZWN1dGFibGUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpCiB7CiAgICAgU3RyaW5n
SW1wbCogbmFtZSA9IHByb3BlcnR5TmFtZS5wdWJsaWNOYW1lKCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNPYmplY3QuaAppbmRleCA2MjIwZWM3YTFiYThlOGE3NDlkYjRiMDZjZDQy
OTNhODg1YWY3ZjkyLi5lYmU0ODVlOGRmMzZkYjVjYWYzNzcwNGI4ZWVkZDRhNzZjYjljNDQzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgKQEAgLTQ3LDYgKzQ3LDkg
QEAKICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAKIG5hbWVzcGFjZSBKU0MgeworbmFt
ZXNwYWNlIERPTUpJVCB7CitjbGFzcyBTaWduYXR1cmU7Cit9CiAKIGlubGluZSBKU0NlbGwqIGdl
dEpTRnVuY3Rpb24oSlNWYWx1ZSB2YWx1ZSkKIHsKQEAgLTcwMCw2ICs3MDMsNyBAQCBjbGFzcyBK
U09iamVjdCA6IHB1YmxpYyBKU0NlbGwgewogCiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgYm9vbCBw
dXREaXJlY3ROYXRpdmVJbnRyaW5zaWNHZXR0ZXIoVk0mLCBKU0dsb2JhbE9iamVjdCosIElkZW50
aWZpZXIsIE5hdGl2ZUZ1bmN0aW9uLCBJbnRyaW5zaWMsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpOwog
ICAgIEpTX0VYUE9SVF9QUklWQVRFIGJvb2wgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb24oVk0mLCBK
U0dsb2JhbE9iamVjdCosIGNvbnN0IFByb3BlcnR5TmFtZSYsIHVuc2lnbmVkIGZ1bmN0aW9uTGVu
Z3RoLCBOYXRpdmVGdW5jdGlvbiwgSW50cmluc2ljLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKTsKKyAg
ICBKU19FWFBPUlRfUFJJVkFURSBib29sIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uKFZNJiwgSlNH
bG9iYWxPYmplY3QqLCBjb25zdCBQcm9wZXJ0eU5hbWUmLCB1bnNpZ25lZCBmdW5jdGlvbkxlbmd0
aCwgTmF0aXZlRnVuY3Rpb24sIEludHJpbnNpYywgY29uc3QgRE9NSklUOjpTaWduYXR1cmUqLCB1
bnNpZ25lZCBhdHRyaWJ1dGVzKTsKICAgICBKU19FWFBPUlRfUFJJVkFURSBKU0Z1bmN0aW9uKiBw
dXREaXJlY3RCdWlsdGluRnVuY3Rpb24oVk0mLCBKU0dsb2JhbE9iamVjdCosIGNvbnN0IFByb3Bl
cnR5TmFtZSYsIEZ1bmN0aW9uRXhlY3V0YWJsZSosIHVuc2lnbmVkIGF0dHJpYnV0ZXMpOwogICAg
IEpTRnVuY3Rpb24qIHB1dERpcmVjdEJ1aWx0aW5GdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKFZN
JiwgSlNHbG9iYWxPYmplY3QqLCBjb25zdCBQcm9wZXJ0eU5hbWUmLCBGdW5jdGlvbkV4ZWN1dGFi
bGUqLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKTsKICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIHB1
dERpcmVjdE5hdGl2ZUZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24oVk0mLCBKU0dsb2JhbE9iamVj
dCosIGNvbnN0IFByb3BlcnR5TmFtZSYsIHVuc2lnbmVkIGZ1bmN0aW9uTGVuZ3RoLCBOYXRpdmVG
dW5jdGlvbiwgSW50cmluc2ljLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0xvb2t1cC5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvTG9va3VwLmgKaW5kZXggZTJkMTc5NTM4OGU3NjUyYmQ4ZjFiNGI2ZGFjYmIy
Y2JjZTljZDQ0Zi4uZDcwNzY4NmZiNTY5M2U3ZjUyZmU2ZDFhMmVjNDRiZDAwMjNiZWYxMSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTG9va3VwLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTG9va3VwLmgKQEAgLTI0LDYgKzI0LDcgQEAKICNp
bmNsdWRlICJDYWxsRnJhbWUuaCIKICNpbmNsdWRlICJDdXN0b21HZXR0ZXJTZXR0ZXIuaCIKICNp
bmNsdWRlICJET01KSVRHZXR0ZXJTZXR0ZXIuaCIKKyNpbmNsdWRlICJET01KSVRTaWduYXR1cmUu
aCIKICNpbmNsdWRlICJJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiSWRlbnRpZmllcklubGluZXMu
aCIKICNpbmNsdWRlICJJbnRyaW5zaWMuaCIKQEAgLTc1LDEyICs3NiwxOSBAQCBzdHJ1Y3QgSGFz
aFRhYmxlVmFsdWUgewogICAgIEludHJpbnNpYyBpbnRyaW5zaWMoKSBjb25zdCB7IEFTU0VSVCht
X2F0dHJpYnV0ZXMgJiBGdW5jdGlvbik7IHJldHVybiBtX2ludHJpbnNpYzsgfQogICAgIEJ1aWx0
aW5HZW5lcmF0b3IgYnVpbHRpbkdlbmVyYXRvcigpIGNvbnN0IHsgQVNTRVJUKG1fYXR0cmlidXRl
cyAmIEJ1aWx0aW4pOyByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxCdWlsdGluR2VuZXJhdG9yPiht
X3ZhbHVlcy52YWx1ZTEpOyB9CiAgICAgTmF0aXZlRnVuY3Rpb24gZnVuY3Rpb24oKSBjb25zdCB7
IEFTU0VSVChtX2F0dHJpYnV0ZXMgJiBGdW5jdGlvbik7IHJldHVybiByZWludGVycHJldF9jYXN0
PE5hdGl2ZUZ1bmN0aW9uPihtX3ZhbHVlcy52YWx1ZTEpOyB9Ci0gICAgdW5zaWduZWQgY2hhciBm
dW5jdGlvbkxlbmd0aCgpIGNvbnN0IHsgQVNTRVJUKG1fYXR0cmlidXRlcyAmIEZ1bmN0aW9uKTsg
cmV0dXJuIHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KG1fdmFsdWVzLnZhbHVlMik7IH0KKyAg
ICB1bnNpZ25lZCBjaGFyIGZ1bmN0aW9uTGVuZ3RoKCkgY29uc3QKKyAgICB7CisgICAgICAgIEFT
U0VSVChtX2F0dHJpYnV0ZXMgJiBGdW5jdGlvbik7CisgICAgICAgIGlmIChtX2F0dHJpYnV0ZXMg
JiBET01KSVRGdW5jdGlvbikKKyAgICAgICAgICAgIHJldHVybiBzaWduYXR1cmUoKS0+YXJndW1l
bnRDb3VudDsKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KG1fdmFs
dWVzLnZhbHVlMik7CisgICAgfQogCiAgICAgR2V0RnVuY3Rpb24gcHJvcGVydHlHZXR0ZXIoKSBj
b25zdCB7IEFTU0VSVCghKG1fYXR0cmlidXRlcyAmIEJ1aWx0aW5PckZ1bmN0aW9uT3JBY2Nlc3Nv
ck9yTGF6eVByb3BlcnR5T3JDb25zdGFudCkpOyByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxHZXRG
dW5jdGlvbj4obV92YWx1ZXMudmFsdWUxKTsgfQogICAgIFB1dEZ1bmN0aW9uIHByb3BlcnR5UHV0
dGVyKCkgY29uc3QgeyBBU1NFUlQoIShtX2F0dHJpYnV0ZXMgJiBCdWlsdGluT3JGdW5jdGlvbk9y
QWNjZXNzb3JPckxhenlQcm9wZXJ0eU9yQ29uc3RhbnQpKTsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nh
c3Q8UHV0RnVuY3Rpb24+KG1fdmFsdWVzLnZhbHVlMik7IH0KIAogICAgIERPTUpJVDo6R2V0dGVy
U2V0dGVyKiBkb21KSVQoKSBjb25zdCB7IEFTU0VSVChtX2F0dHJpYnV0ZXMgJiBET01KSVRBdHRy
aWJ1dGUpOyByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxET01KSVRHZXR0ZXJTZXR0ZXJHZW5lcmF0
b3I+KG1fdmFsdWVzLnZhbHVlMSkoKTsgfQorICAgIGNvbnN0IERPTUpJVDo6U2lnbmF0dXJlKiBz
aWduYXR1cmUoKSBjb25zdCB7IEFTU0VSVChtX2F0dHJpYnV0ZXMgJiBET01KSVRGdW5jdGlvbik7
IHJldHVybiByZWludGVycHJldF9jYXN0PGNvbnN0IERPTUpJVDo6U2lnbmF0dXJlKj4obV92YWx1
ZXMudmFsdWUyKTsgfQogCiAgICAgTmF0aXZlRnVuY3Rpb24gYWNjZXNzb3JHZXR0ZXIoKSBjb25z
dCB7IEFTU0VSVChtX2F0dHJpYnV0ZXMgJiBBY2Nlc3Nvcik7IHJldHVybiByZWludGVycHJldF9j
YXN0PE5hdGl2ZUZ1bmN0aW9uPihtX3ZhbHVlcy52YWx1ZTEpOyB9CiAgICAgTmF0aXZlRnVuY3Rp
b24gYWNjZXNzb3JTZXR0ZXIoKSBjb25zdCB7IEFTU0VSVChtX2F0dHJpYnV0ZXMgJiBBY2Nlc3Nv
cik7IHJldHVybiByZWludGVycHJldF9jYXN0PE5hdGl2ZUZ1bmN0aW9uPihtX3ZhbHVlcy52YWx1
ZTIpOyB9CkBAIC0zMTMsNiArMzIxLDEyIEBAIGlubGluZSB2b2lkIHJlaWZ5U3RhdGljUHJvcGVy
dHkoVk0mIHZtLCBjb25zdCBQcm9wZXJ0eU5hbWUmIHByb3BlcnR5TmFtZSwgY29uc3QKICAgICB9
CiAKICAgICBpZiAodmFsdWUuYXR0cmlidXRlcygpICYgRnVuY3Rpb24pIHsKKyAgICAgICAgaWYg
KHZhbHVlLmF0dHJpYnV0ZXMoKSAmIERPTUpJVEZ1bmN0aW9uKSB7CisgICAgICAgICAgICB0aGlz
T2JqLnB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uKAorICAgICAgICAgICAgICAgIHZtLCB0aGlzT2Jq
Lmdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLmZ1bmN0aW9uTGVuZ3RoKCksCisg
ICAgICAgICAgICAgICAgdmFsdWUuZnVuY3Rpb24oKSwgdmFsdWUuaW50cmluc2ljKCksIHZhbHVl
LnNpZ25hdHVyZSgpLCBhdHRyaWJ1dGVzRm9yU3RydWN0dXJlKHZhbHVlLmF0dHJpYnV0ZXMoKSkp
OworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CiAgICAgICAgIHRoaXNPYmoucHV0RGly
ZWN0TmF0aXZlRnVuY3Rpb24oCiAgICAgICAgICAgICB2bSwgdGhpc09iai5nbG9iYWxPYmplY3Qo
KSwgcHJvcGVydHlOYW1lLCB2YWx1ZS5mdW5jdGlvbkxlbmd0aCgpLAogICAgICAgICAgICAgdmFs
dWUuZnVuY3Rpb24oKSwgdmFsdWUuaW50cmluc2ljKCksIGF0dHJpYnV0ZXNGb3JTdHJ1Y3R1cmUo
dmFsdWUuYXR0cmlidXRlcygpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9OYXRpdmVFeGVjdXRhYmxlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL05hdGl2ZUV4ZWN1dGFibGUuY3BwCmluZGV4IDFjMmJlYzU4YjdkYjg5OGI4MTE4YjI5NzEw
YjJkNzQyNjkzYmIyMWQuLmI3ZGFkMmE0NjJkZGRmYzIyNzYyZmQ1Y2Q3Y2Y2YTQ2MWNkZDE4ZjYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05hdGl2ZUV4ZWN1dGFi
bGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05hdGl2ZUV4ZWN1dGFi
bGUuY3BwCkBAIC00MCwxMCArNDAsMTAgQEAgbmFtZXNwYWNlIEpTQyB7CiAKIGNvbnN0IENsYXNz
SW5mbyBOYXRpdmVFeGVjdXRhYmxlOjpzX2luZm8gPSB7ICJOYXRpdmVFeGVjdXRhYmxlIiwgJkV4
ZWN1dGFibGVCYXNlOjpzX2luZm8sIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoTmF0aXZlRXhlY3V0
YWJsZSkgfTsKIAotTmF0aXZlRXhlY3V0YWJsZSogTmF0aXZlRXhlY3V0YWJsZTo6Y3JlYXRlKFZN
JiB2bSwgUGFzc1JlZlB0cjxKSVRDb2RlPiBjYWxsVGh1bmssIE5hdGl2ZUZ1bmN0aW9uIGZ1bmN0
aW9uLCBQYXNzUmVmUHRyPEpJVENvZGU+IGNvbnN0cnVjdFRodW5rLCBOYXRpdmVGdW5jdGlvbiBj
b25zdHJ1Y3RvciwgSW50cmluc2ljIGludHJpbnNpYywgY29uc3QgU3RyaW5nJiBuYW1lKQorTmF0
aXZlRXhlY3V0YWJsZSogTmF0aXZlRXhlY3V0YWJsZTo6Y3JlYXRlKFZNJiB2bSwgUGFzc1JlZlB0
cjxKSVRDb2RlPiBjYWxsVGh1bmssIE5hdGl2ZUZ1bmN0aW9uIGZ1bmN0aW9uLCBQYXNzUmVmUHRy
PEpJVENvZGU+IGNvbnN0cnVjdFRodW5rLCBOYXRpdmVGdW5jdGlvbiBjb25zdHJ1Y3RvciwgSW50
cmluc2ljIGludHJpbnNpYywgY29uc3QgRE9NSklUOjpTaWduYXR1cmUqIHNpZ25hdHVyZSwgY29u
c3QgU3RyaW5nJiBuYW1lKQogewogICAgIE5hdGl2ZUV4ZWN1dGFibGUqIGV4ZWN1dGFibGU7Ci0g
ICAgZXhlY3V0YWJsZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPE5hdGl2ZUV4ZWN1dGFi
bGU+KHZtLmhlYXApKSBOYXRpdmVFeGVjdXRhYmxlKHZtLCBmdW5jdGlvbiwgY29uc3RydWN0b3Is
IGludHJpbnNpYyk7CisgICAgZXhlY3V0YWJsZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxs
PE5hdGl2ZUV4ZWN1dGFibGU+KHZtLmhlYXApKSBOYXRpdmVFeGVjdXRhYmxlKHZtLCBmdW5jdGlv
biwgY29uc3RydWN0b3IsIGludHJpbnNpYywgc2lnbmF0dXJlKTsKICAgICBleGVjdXRhYmxlLT5m
aW5pc2hDcmVhdGlvbih2bSwgY2FsbFRodW5rLCBjb25zdHJ1Y3RUaHVuaywgbmFtZSk7CiAgICAg
cmV0dXJuIGV4ZWN1dGFibGU7CiB9CkBAIC02OCwxMCArNjgsMTEgQEAgdm9pZCBOYXRpdmVFeGVj
dXRhYmxlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIFBhc3NSZWZQdHI8SklUQ29kZT4gY2FsbFRo
dW5rLCBQYXMKICAgICBtX25hbWUgPSBuYW1lOwogfQogCi1OYXRpdmVFeGVjdXRhYmxlOjpOYXRp
dmVFeGVjdXRhYmxlKFZNJiB2bSwgTmF0aXZlRnVuY3Rpb24gZnVuY3Rpb24sIE5hdGl2ZUZ1bmN0
aW9uIGNvbnN0cnVjdG9yLCBJbnRyaW5zaWMgaW50cmluc2ljKQorTmF0aXZlRXhlY3V0YWJsZTo6
TmF0aXZlRXhlY3V0YWJsZShWTSYgdm0sIE5hdGl2ZUZ1bmN0aW9uIGZ1bmN0aW9uLCBOYXRpdmVG
dW5jdGlvbiBjb25zdHJ1Y3RvciwgSW50cmluc2ljIGludHJpbnNpYywgY29uc3QgRE9NSklUOjpT
aWduYXR1cmUqIHNpZ25hdHVyZSkKICAgICA6IEV4ZWN1dGFibGVCYXNlKHZtLCB2bS5uYXRpdmVF
eGVjdXRhYmxlU3RydWN0dXJlLmdldCgpLCBOVU1fUEFSQU1FVEVSU19JU19IT1NULCBpbnRyaW5z
aWMpCiAgICAgLCBtX2Z1bmN0aW9uKGZ1bmN0aW9uKQogICAgICwgbV9jb25zdHJ1Y3Rvcihjb25z
dHJ1Y3RvcikKKyAgICAsIG1fc2lnbmF0dXJlKHNpZ25hdHVyZSkKIHsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZlRXhlY3V0YWJsZS5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZlRXhlY3V0YWJsZS5oCmluZGV4IDViZjJl
MTA2ZGIzMGE1YjhjOTc4Yzg5NmE2YWQ5OGNhMmM3NTc0MTQuLmU0ZDNlMDQ5NDU3YjQ1ZDAyNDU3
ZThkZGE1NDQ5MGIzNzE0YWNjZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL05hdGl2ZUV4ZWN1dGFibGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9OYXRpdmVFeGVjdXRhYmxlLmgKQEAgLTI4LDYgKzI4LDkgQEAKICNpbmNsdWRlICJFeGVj
dXRhYmxlQmFzZS5oIgogCiBuYW1lc3BhY2UgSlNDIHsKK25hbWVzcGFjZSBET01KSVQgeworY2xh
c3MgU2lnbmF0dXJlOworfQogCiBjbGFzcyBOYXRpdmVFeGVjdXRhYmxlIGZpbmFsIDogcHVibGlj
IEV4ZWN1dGFibGVCYXNlIHsKICAgICBmcmllbmQgY2xhc3MgSklUOwpAQCAtMzYsNyArMzksNyBA
QCBjbGFzcyBOYXRpdmVFeGVjdXRhYmxlIGZpbmFsIDogcHVibGljIEV4ZWN1dGFibGVCYXNlIHsK
ICAgICB0eXBlZGVmIEV4ZWN1dGFibGVCYXNlIEJhc2U7CiAgICAgc3RhdGljIGNvbnN0IHVuc2ln
bmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBTdHJ1Y3R1cmVJc0lt
bW9ydGFsOwogCi0gICAgc3RhdGljIE5hdGl2ZUV4ZWN1dGFibGUqIGNyZWF0ZShWTSYgdm0sIFBh
c3NSZWZQdHI8SklUQ29kZT4gY2FsbFRodW5rLCBOYXRpdmVGdW5jdGlvbiBmdW5jdGlvbiwgUGFz
c1JlZlB0cjxKSVRDb2RlPiBjb25zdHJ1Y3RUaHVuaywgTmF0aXZlRnVuY3Rpb24gY29uc3RydWN0
b3IsIEludHJpbnNpYyBpbnRyaW5zaWMsIGNvbnN0IFN0cmluZyYgbmFtZSk7CisgICAgc3RhdGlj
IE5hdGl2ZUV4ZWN1dGFibGUqIGNyZWF0ZShWTSYsIFBhc3NSZWZQdHI8SklUQ29kZT4gY2FsbFRo
dW5rLCBOYXRpdmVGdW5jdGlvbiBmdW5jdGlvbiwgUGFzc1JlZlB0cjxKSVRDb2RlPiBjb25zdHJ1
Y3RUaHVuaywgTmF0aXZlRnVuY3Rpb24gY29uc3RydWN0b3IsIEludHJpbnNpYywgY29uc3QgRE9N
SklUOjpTaWduYXR1cmUqLCBjb25zdCBTdHJpbmcmIG5hbWUpOwogCiAgICAgc3RhdGljIHZvaWQg
ZGVzdHJveShKU0NlbGwqKTsKIApAQCAtNjYsNiArNjksMTQgQEAgY2xhc3MgTmF0aXZlRXhlY3V0
YWJsZSBmaW5hbCA6IHB1YmxpYyBFeGVjdXRhYmxlQmFzZSB7CiAgICAgREVDTEFSRV9JTkZPOwog
CiAgICAgY29uc3QgU3RyaW5nJiBuYW1lKCkgY29uc3QgeyByZXR1cm4gbV9uYW1lOyB9CisgICAg
Y29uc3QgRE9NSklUOjpTaWduYXR1cmUqIHNpZ25hdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2ln
bmF0dXJlOyB9CisKKyAgICBjb25zdCBET01KSVQ6OlNpZ25hdHVyZSogc2lnbmF0dXJlRm9yKENv
ZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCkgY29uc3QKKyAgICB7CisgICAgICAgIGlmIChpc0Nh
bGwoa2luZCkpCisgICAgICAgICAgICByZXR1cm4gc2lnbmF0dXJlKCk7CisgICAgICAgIHJldHVy
biBudWxscHRyOworICAgIH0KIAogcHJvdGVjdGVkOgogICAgIHZvaWQgZmluaXNoQ3JlYXRpb24o
Vk0mLCBQYXNzUmVmUHRyPEpJVENvZGU+IGNhbGxUaHVuaywgUGFzc1JlZlB0cjxKSVRDb2RlPiBj
b25zdHJ1Y3RUaHVuaywgY29uc3QgU3RyaW5nJiBuYW1lKTsKQEAgLTczLDEwICs4NCwxMSBAQCBj
bGFzcyBOYXRpdmVFeGVjdXRhYmxlIGZpbmFsIDogcHVibGljIEV4ZWN1dGFibGVCYXNlIHsKIHBy
aXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIEV4ZWN1dGFibGVCYXNlOwogCi0gICAgTmF0aXZlRXhl
Y3V0YWJsZShWTSYsIE5hdGl2ZUZ1bmN0aW9uIGZ1bmN0aW9uLCBOYXRpdmVGdW5jdGlvbiBjb25z
dHJ1Y3RvciwgSW50cmluc2ljKTsKKyAgICBOYXRpdmVFeGVjdXRhYmxlKFZNJiwgTmF0aXZlRnVu
Y3Rpb24gZnVuY3Rpb24sIE5hdGl2ZUZ1bmN0aW9uIGNvbnN0cnVjdG9yLCBJbnRyaW5zaWMsIGNv
bnN0IERPTUpJVDo6U2lnbmF0dXJlKik7CiAKICAgICBOYXRpdmVGdW5jdGlvbiBtX2Z1bmN0aW9u
OwogICAgIE5hdGl2ZUZ1bmN0aW9uIG1fY29uc3RydWN0b3I7CisgICAgY29uc3QgRE9NSklUOjpT
aWduYXR1cmUqIG1fc2lnbmF0dXJlOwogCiAgICAgU3RyaW5nIG1fbmFtZTsKIH07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eVNsb3QuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5U2xvdC5oCmluZGV4IDlkZTE1MWE1NmFh
Mjc1NmNmZDBjNjAwMzY2ODI2NmIxOWY5OTMyZGQuLjM4N2UzMWI0MGU1YWViZjJmMzVmNmNhMjcy
ZTM4M2MwNWQzZjQ1MmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1Byb3BlcnR5U2xvdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3Bl
cnR5U2xvdC5oCkBAIC01MSw2ICs1MSw3IEBAIGVudW0gQXR0cmlidXRlIHsKICAgICBDbGFzc1N0
cnVjdHVyZSAgICA9IDEgPDwgMTIsIC8vIHByb3BlcnR5IGlzIGEgbGF6eSBjbGFzcyBzdHJ1Y3R1
cmUgLSBvbmx5IHVzZWQgYnkgc3RhdGljIGhhc2h0YWJsZXMKICAgICBQcm9wZXJ0eUNhbGxiYWNr
ICA9IDEgPDwgMTMsIC8vIHByb3BlcnR5IHRoYXQgaXMgYSBsYXp5IHByb3BlcnR5IGNhbGxiYWNr
IC0gb25seSB1c2VkIGJ5IHN0YXRpYyBoYXNodGFibGVzCiAgICAgRE9NSklUQXR0cmlidXRlICAg
PSAxIDw8IDE0LCAvLyBwcm9wZXJ0eSBpcyBhIERPTSBKSVQgYXR0cmlidXRlIC0gb25seSB1c2Vk
IGJ5IHN0YXRpYyBoYXNodGFibGVzCisgICAgRE9NSklURnVuY3Rpb24gICAgPSAxIDw8IDE1LCAv
LyBwcm9wZXJ0eSBpcyBhIERPTSBKSVQgZnVuY3Rpb24gLSBvbmx5IHVzZWQgYnkgc3RhdGljIGhh
c2h0YWJsZXMKICAgICBCdWlsdGluT3JGdW5jdGlvbiA9IEJ1aWx0aW4gfCBGdW5jdGlvbiwgLy8g
aGVscGVyIG9ubHkgdXNlZCBieSBzdGF0aWMgaGFzaHRhYmxlcwogICAgIEJ1aWx0aW5PckZ1bmN0
aW9uT3JMYXp5UHJvcGVydHkgPSBCdWlsdGluIHwgRnVuY3Rpb24gfCBDZWxsUHJvcGVydHkgfCBD
bGFzc1N0cnVjdHVyZSB8IFByb3BlcnR5Q2FsbGJhY2ssIC8vIGhlbHBlciBvbmx5IHVzZWQgYnkg
c3RhdGljIGhhc2h0YWJsZXMKICAgICBCdWlsdGluT3JGdW5jdGlvbk9yQWNjZXNzb3JPckxhenlQ
cm9wZXJ0eSA9IEJ1aWx0aW4gfCBGdW5jdGlvbiB8IEFjY2Vzc29yIHwgQ2VsbFByb3BlcnR5IHwg
Q2xhc3NTdHJ1Y3R1cmUgfCBQcm9wZXJ0eUNhbGxiYWNrLCAvLyBoZWxwZXIgb25seSB1c2VkIGJ5
IHN0YXRpYyBoYXNodGFibGVzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9WTS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKaW5kZXgg
ZTZiZDhkZjU4ODlkODczMWNlNWZiNmRjY2RlOWFkZjg0NTZjMDJlOS4uN2EyZjBmMjY5NGFjMDE2
YmQ5M2QxYzg2YTRhZjk5ZWQxZTVlZWVmNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvVk0uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZN
LmNwcApAQCAtNTE2LDE3ICs1MTYsMTcgQEAgc3RhdGljIFRodW5rR2VuZXJhdG9yIHRodW5rR2Vu
ZXJhdG9yRm9ySW50cmluc2ljKEludHJpbnNpYyBpbnRyaW5zaWMpCiAKIE5hdGl2ZUV4ZWN1dGFi
bGUqIFZNOjpnZXRIb3N0RnVuY3Rpb24oTmF0aXZlRnVuY3Rpb24gZnVuY3Rpb24sIE5hdGl2ZUZ1
bmN0aW9uIGNvbnN0cnVjdG9yLCBjb25zdCBTdHJpbmcmIG5hbWUpCiB7Ci0gICAgcmV0dXJuIGdl
dEhvc3RGdW5jdGlvbihmdW5jdGlvbiwgTm9JbnRyaW5zaWMsIGNvbnN0cnVjdG9yLCBuYW1lKTsK
KyAgICByZXR1cm4gZ2V0SG9zdEZ1bmN0aW9uKGZ1bmN0aW9uLCBOb0ludHJpbnNpYywgY29uc3Ry
dWN0b3IsIG51bGxwdHIsIG5hbWUpOwogfQogCi1OYXRpdmVFeGVjdXRhYmxlKiBWTTo6Z2V0SG9z
dEZ1bmN0aW9uKE5hdGl2ZUZ1bmN0aW9uIGZ1bmN0aW9uLCBJbnRyaW5zaWMgaW50cmluc2ljLCBO
YXRpdmVGdW5jdGlvbiBjb25zdHJ1Y3RvciwgY29uc3QgU3RyaW5nJiBuYW1lKQorTmF0aXZlRXhl
Y3V0YWJsZSogVk06OmdldEhvc3RGdW5jdGlvbihOYXRpdmVGdW5jdGlvbiBmdW5jdGlvbiwgSW50
cmluc2ljIGludHJpbnNpYywgTmF0aXZlRnVuY3Rpb24gY29uc3RydWN0b3IsIGNvbnN0IERPTUpJ
VDo6U2lnbmF0dXJlKiBzaWduYXR1cmUsIGNvbnN0IFN0cmluZyYgbmFtZSkKIHsKICNpZiBFTkFC
TEUoSklUKQogICAgIGlmIChjYW5Vc2VKSVQoKSkgewogICAgICAgICByZXR1cm4gaml0U3R1YnMt
Pmhvc3RGdW5jdGlvblN0dWIoCiAgICAgICAgICAgICB0aGlzLCBmdW5jdGlvbiwgY29uc3RydWN0
b3IsCiAgICAgICAgICAgICBpbnRyaW5zaWMgIT0gTm9JbnRyaW5zaWMgPyB0aHVua0dlbmVyYXRv
ckZvckludHJpbnNpYyhpbnRyaW5zaWMpIDogMCwKLSAgICAgICAgICAgIGludHJpbnNpYywgbmFt
ZSk7CisgICAgICAgICAgICBpbnRyaW5zaWMsIHNpZ25hdHVyZSwgbmFtZSk7CiAgICAgfQogI2Vs
c2UgLy8gRU5BQkxFKEpJVCkKICAgICBVTlVTRURfUEFSQU0oaW50cmluc2ljKTsKQEAgLTUzNCw3
ICs1MzQsNyBAQCBOYXRpdmVFeGVjdXRhYmxlKiBWTTo6Z2V0SG9zdEZ1bmN0aW9uKE5hdGl2ZUZ1
bmN0aW9uIGZ1bmN0aW9uLCBJbnRyaW5zaWMgaW50cmlucwogICAgIHJldHVybiBOYXRpdmVFeGVj
dXRhYmxlOjpjcmVhdGUoKnRoaXMsCiAgICAgICAgIGFkb3B0UmVmKG5ldyBOYXRpdmVKSVRDb2Rl
KE1hY3JvQXNzZW1ibGVyQ29kZVJlZjo6Y3JlYXRlTExJbnRDb2RlUmVmKGxsaW50X25hdGl2ZV9j
YWxsX3RyYW1wb2xpbmUpLCBKSVRDb2RlOjpIb3N0Q2FsbFRodW5rKSksIGZ1bmN0aW9uLAogICAg
ICAgICBhZG9wdFJlZihuZXcgTmF0aXZlSklUQ29kZShNYWNyb0Fzc2VtYmxlckNvZGVSZWY6OmNy
ZWF0ZUxMSW50Q29kZVJlZihsbGludF9uYXRpdmVfY29uc3RydWN0X3RyYW1wb2xpbmUpLCBKSVRD
b2RlOjpIb3N0Q2FsbFRodW5rKSksIGNvbnN0cnVjdG9yLAotICAgICAgICBOb0ludHJpbnNpYywg
bmFtZSk7CisgICAgICAgIE5vSW50cmluc2ljLCBzaWduYXR1cmUsIG5hbWUpOwogfQogCiBWTTo6
Q2xpZW50RGF0YTo6fkNsaWVudERhdGEoKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvVk0uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKaW5k
ZXggNGZkN2VjNDBmMDNlZWRlYjI5YmQ0OTY3ZDljZGM0MzAyNGNmYTQxMC4uMTVhMDhjMmEzM2Jl
OTcyYjRhOWEzMmRmYzM1MGQ2ZTM4Y2M4NDJlZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvVk0uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9W
TS5oCkBAIC00MjksNyArNDI5LDcgQEAgY2xhc3MgVk0gOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNv
dW50ZWQ8Vk0+IHsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8RlRMOjpUaHVua3M+IGZ0bFRodW5rczsK
ICNlbmRpZgogICAgIE5hdGl2ZUV4ZWN1dGFibGUqIGdldEhvc3RGdW5jdGlvbihOYXRpdmVGdW5j
dGlvbiwgTmF0aXZlRnVuY3Rpb24gY29uc3RydWN0b3IsIGNvbnN0IFN0cmluZyYgbmFtZSk7Ci0g
ICAgTmF0aXZlRXhlY3V0YWJsZSogZ2V0SG9zdEZ1bmN0aW9uKE5hdGl2ZUZ1bmN0aW9uLCBJbnRy
aW5zaWMgaW50cmluc2ljLCBOYXRpdmVGdW5jdGlvbiBjb25zdHJ1Y3RvciwgY29uc3QgU3RyaW5n
JiBuYW1lKTsKKyAgICBOYXRpdmVFeGVjdXRhYmxlKiBnZXRIb3N0RnVuY3Rpb24oTmF0aXZlRnVu
Y3Rpb24sIEludHJpbnNpYywgTmF0aXZlRnVuY3Rpb24gY29uc3RydWN0b3IsIGNvbnN0IERPTUpJ
VDo6U2lnbmF0dXJlKiwgY29uc3QgU3RyaW5nJiBuYW1lKTsKIAogICAgIHN0YXRpYyBwdHJkaWZm
X3QgZXhjZXB0aW9uT2Zmc2V0KCkKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
TWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IDQyZTJm
MjExMWE5MDg2NDJlZDI3NDQxOTQ2ZTE3ODJmNWQwNjgxN2IuLjc4YWExZjcxMDA4MGM2Y2IyN2Jl
MmI2M2M0OGJkNmFkNWYzM2RhYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlz
dHMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC0xNTM3LDcgKzE1
MzcsNiBAQCBzZXQoV2ViQ29yZV9TT1VSQ0VTCiAKICAgICBkb20vZGVmYXVsdC9QbGF0Zm9ybU1l
c3NhZ2VQb3J0Q2hhbm5lbC5jcHAKIAotICAgIGRvbWppdC9ET01KSVRBYnN0cmFjdEhlYXBSZXBv
c2l0b3J5LmNwcAogICAgIGRvbWppdC9ET01KSVRIZWxwZXJzLmNwcAogICAgIGRvbWppdC9KU0Rv
Y3VtZW50RE9NSklULmNwcAogICAgIGRvbWppdC9KU05vZGVET01KSVQuY3BwCkBAIC0zNTExLDYg
KzM1MTAsMTUgQEAgTUFLRV9IQVNIX1RPT0xTKCR7V0VCQ09SRV9ESVJ9L3BsYXRmb3JtL0NvbG9y
RGF0YSkKIGxpc3QoQVBQRU5EIFdlYkNvcmVfREVSSVZFRF9TT1VSQ0VTICR7REVSSVZFRF9TT1VS
Q0VTX1dFQkNPUkVfRElSfS9Db2xvckRhdGEuY3BwKQogCiAKKyMgR2VuZXJhdGUgRE9NSklUQWJz
dHJhY3RIZWFwUmVwb3NpdG9yeS5oCithZGRfY3VzdG9tX2NvbW1hbmQoCisgICAgT1VUUFVUICR7
REVSSVZFRF9TT1VSQ0VTX1dFQkNPUkVfRElSfS9ET01KSVRBYnN0cmFjdEhlYXBSZXBvc2l0b3J5
LmgKKyAgICBNQUlOX0RFUEVOREVOQ1kgZG9taml0L0RPTUpJVEFic3RyYWN0SGVhcFJlcG9zaXRv
cnkueWFtbAorICAgIERFUEVORFMgJHtXRUJDT1JFX0RJUn0vZG9taml0L2dlbmVyYXRlLWFic3Ry
YWN0LWhlYXAucmIKKyAgICBDT01NQU5EICR7UlVCWV9FWEVDVVRBQkxFfSAke1dFQkNPUkVfRElS
fS9kb21qaXQvZ2VuZXJhdGUtYWJzdHJhY3QtaGVhcC5yYiAke1dFQkNPUkVfRElSfS9kb21qaXQv
RE9NSklUQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS55YW1sICR7REVSSVZFRF9TT1VSQ0VTX1dFQkNP
UkVfRElSfS9ET01KSVRBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmgKKyAgICBWRVJCQVRJTSkKK2xp
c3QoQVBQRU5EIFdlYkNvcmVfREVSSVZFRF9TT1VSQ0VTICR7REVSSVZFRF9TT1VSQ0VTX1dFQkNP
UkVfRElSfS9ET01KSVRBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmgpCisKICMgR2VuZXJhdGUgWE1M
Vmlld2VyQ1NTLmgKIGFkZF9jdXN0b21fY29tbWFuZCgKICAgICBPVVRQVVQgJHtERVJJVkVEX1NP
VVJDRVNfV0VCQ09SRV9ESVJ9L1hNTFZpZXdlckNTUy5oICR7REVSSVZFRF9TT1VSQ0VTX1dFQkNP
UkVfRElSfS9YTUxWaWV3ZXIubWluLmNzcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvRGVy
aXZlZFNvdXJjZXMubWFrZSBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKaW5k
ZXggNTY1ZTJkOTJjMjc4MjAwZTQ0YjFhODY3MGRkMTFjYWE3MjhkMDlkMy4uY2ZjMjI3NjhkNzVh
Y2U4ZWU2MGUwNDg2YzI2Mjg0YTE4Y2EyZTVlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
RGVyaXZlZFNvdXJjZXMubWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5t
YWtlCkBAIC03NDcsNiArNzQ3LDcgQEAgSlNfQklORElOR19JRExTID0gXAogCiBQWVRIT04gPSBw
eXRob24KIFBFUkwgPSBwZXJsCitSVUJZID0gcnVieQogCiBpZmVxICgkKE9TKSxXaW5kb3dzX05U
KQogICAgIERFTEVURSA9IGNtZCAvL0MgZGVsCkBAIC04NTMsNiArODU0LDcgQEAgYWxsIDogXAog
ICAgIENTU1ZhbHVlS2V5d29yZHMuY3BwIFwKICAgICBDU1NWYWx1ZUtleXdvcmRzLmggXAogICAg
IENvbG9yRGF0YS5jcHAgXAorICAgIERPTUpJVEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaCBcCiAg
ICAgRXZlbnRJbnRlcmZhY2VzLmggXAogICAgIEV2ZW50VGFyZ2V0SW50ZXJmYWNlcy5oIFwKICAg
ICBFeGNlcHRpb25Db2RlRGVzY3JpcHRpb24uY3BwIFwKQEAgLTk0Miw2ICs5NDQsMTUgQEAgU2Vs
ZWN0b3JQc2V1ZG9FbGVtZW50VHlwZU1hcC5jcHAgOiAkKFdlYkNvcmUpL2Nzcy9tYWtlU2VsZWN0
b3JQc2V1ZG9FbGVtZW50c01hcC4KIAogIyAtLS0tLS0tLQogCisjIERPTUpJVCBBYnN0cmFjdCBI
ZWFwCisKK2FsbCA6IERPTUpJVEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaAorCitET01KSVRBYnN0
cmFjdEhlYXBSZXBvc2l0b3J5LmggOiAkKFdlYkNvcmUpL2RvbWppdC9nZW5lcmF0ZS1hYnN0cmFj
dC1oZWFwLnJiICQoV2ViQ29yZSkvZG9taml0L0RPTUpJVEFic3RyYWN0SGVhcFJlcG9zaXRvcnku
eWFtbAorCSQoUlVCWSkgIiQoV2ViQ29yZSkvZG9taml0L2dlbmVyYXRlLWFic3RyYWN0LWhlYXAu
cmIiICQoV2ViQ29yZSkvZG9taml0L0RPTUpJVEFic3RyYWN0SGVhcFJlcG9zaXRvcnkueWFtbCAu
L0RPTUpJVEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaAorCisjIC0tLS0tLS0tCisKICMgWE1MVmll
d2VyIENTUwogCiBhbGwgOiBYTUxWaWV3ZXJDU1MuaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvRm9yd2FyZGluZ0hlYWRlcnMvYnl0ZWNvZGUvU3BlY3VsYXRlZFR5cGUuaCBiL1NvdXJjZS9X
ZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL2J5dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uMDk0NjZmNGYwMGI4MDdkZmVkYTBmYzgyMDg1NDZiNzE4NDRmMDk5ZQotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL2J5dGVjb2RlL1NwZWN1
bGF0ZWRUeXBlLmgKQEAgLTAsMCArMSwyOSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViQ29yZV9GV0RfU3BlY3VsYXRlZFR5cGVfaAor
I2RlZmluZSBXZWJDb3JlX0ZXRF9TcGVjdWxhdGVkVHlwZV9oCisjaW5jbHVkZSA8SmF2YVNjcmlw
dENvcmUvU3BlY3VsYXRlZFR5cGUuaD4KKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvRm9yd2FyZGluZ0hlYWRlcnMvZG9taml0L0RPTUpJVFNpZ25hdHVyZS5oIGIvU291cmNlL1dl
YkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvZG9taml0L0RPTUpJVFNpZ25hdHVyZS5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjcyMDAyN2Y2ZTA4ZTM4MzBlMzUxYjFjOWNkMzJmMjAzMTI5ZDJiNWQKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy9kb21qaXQvRE9NSklUU2ln
bmF0dXJlLmgKQEAgLTAsMCArMSwyOSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViQ29yZV9GV0RfRE9NSklUU2lnbmF0dXJlX2gKKyNk
ZWZpbmUgV2ViQ29yZV9GV0RfRE9NSklUU2lnbmF0dXJlX2gKKyNpbmNsdWRlIDxKYXZhU2NyaXB0
Q29yZS9ET01KSVRTaWduYXR1cmUuaD4KKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDNlMDkzN2E0NjcwYjdmZTMwZDlh
NjM3YTFlMzYyMTJiZTRkNzUzNWQuLjg3ODBlZjUwNzFiZjE0MTk4NDNjMjYxZmFhOTc3NTc5MjIz
YWUyNjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKQEAgLTYyMTYsMTIgKzYyMTYsMTMgQEAKIAkJRTMxNTBFQTcxREE3MjE5MzAwMTk0
MDEyIC8qIERPTUpJVEhlbHBlcnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEUzMTUwRUE1MURBNzIxOEQwMDE5NDAxMiAvKiBET01KSVRIZWxwZXJzLmgg
Ki87IH07CiAJCUUzMTgwMzlEMURDNDAwOTkwMDk5MzJDMiAvKiBKU0R5bmFtaWNEb3duY2FzdC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTNBNTg3MkUx
REMzRjUyNjAwRjYwN0E2IC8qIEpTRHluYW1pY0Rvd25jYXN0LmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTM1NjVCN0IxREMyRDZDOTAwMjE3REJE
IC8qIEpTRXZlbnRDdXN0b20uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEUzNEVFNDlGMURDMkQ1NzUwMEVBQTlEMyAvKiBKU0V2ZW50Q3VzdG9tLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJRTM1Q0ExNEQx
REJDM0EzRjAwRjgzNTE2IC8qIERPTUpJVEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM1Q0ExNEIxREJDM0Ez
QzAwRjgzNTE2IC8qIERPTUpJVEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuY3BwICovOyB9OwotCQlF
MzVDQTE0RTFEQkMzQTQyMDBGODM1MTYgLyogRE9NSklUQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM1Q0ExNEMx
REJDM0EzQzAwRjgzNTE2IC8qIERPTUpJVEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaCAqLzsgfTsK
KwkJRTM1ODAyQjYxREM4NDM1RDAwQTk3NzNDIC8qIERPTUpJVElETFR5cGVGaWx0ZXIuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzNTgwMkI1MURDODQz
NTgwMEE5NzczQyAvKiBET01KSVRJRExUeXBlRmlsdGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTM3N0ZFNEQxREFERTE2NTAwQ0REMDI1IC8q
IE5vZGVDb25zdGFudHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEUzRDA0OTkzMURBREMwNDUwMDcxOEYzQyAvKiBOb2RlQ29uc3RhbnRzLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTM4ODM4OTgxQkFE
MTQ1RjAwRDYyRUUzIC8qIFNjcmlwdE1vZHVsZUxvYWRlci5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzg4Mzg5NDFCQUQxNDVGMDBENjJFRTMgLyog
U2NyaXB0TW9kdWxlTG9hZGVyLmNwcCAqLzsgfTsKIAkJRTM4ODM4OTkxQkFEMTQ1RjAwRDYyRUUz
IC8qIFNjcmlwdE1vZHVsZUxvYWRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRTM4ODM4OTUxQkFEMTQ1RjAwRDYyRUUzIC8qIFNjcmlwdE1vZHVsZUxv
YWRlci5oICovOyB9OwogCQlFMzk4RkMyNDFEQzMyQTIwMDAzQzQ2ODQgLyogRE9NSklUSGVscGVy
cy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzk4
RkMyMzFEQzMyQTFCMDAzQzQ2ODQgLyogRE9NSklUSGVscGVycy5jcHAgKi87IH07CisJCUUzQTc3
NjY3MURDODVEMjgwMEI2OTBEOCAvKiBET01KSVRJRExDb252ZXJ0LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFM0E3NzY2NTFEQzg1RDIyMDBCNjkwRDgg
LyogRE9NSklUSURMQ29udmVydC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CisJCUUzQTc3NjY4MURDODVEMjgwMEI2OTBEOCAvKiBET01KSVRJRExUeXBl
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFM0E3NzY2
NjFEQzg1RDIyMDBCNjkwRDggLyogRE9NSklUSURMVHlwZS5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUUzQjJGMEVCMUQ3RjRDOUQwMEIwQzlEMSAv
KiBMb2FkYWJsZUNsYXNzaWNTY3JpcHQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRTNCMkYwRTMxRDdGMzVFQzAwQjBDOUQxIC8qIExvYWRhYmxlQ2xh
c3NpY1NjcmlwdC5jcHAgKi87IH07CiAJCUUzQjJGMEVDMUQ3RjRDQTEwMEIwQzlEMSAvKiBMb2Fk
YWJsZVNjcmlwdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBFM0IyRjBFOTFEN0YzRDNDMDBCMEM5RDEgLyogTG9hZGFibGVTY3JpcHQuY3BwICovOyB9
OwogCQlFM0IyRjBFRDFEN0Y0Q0EzMDBCMEM5RDEgLyogTG9hZGFibGVTY3JpcHQuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzQjJGMEU3MUQ3RjM1RUMw
MEIwQzlEMSAvKiBMb2FkYWJsZVNjcmlwdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CkBAIC0xNDA3NiwxMyArMTQwNzcsMTUgQEAKIAkJRTFGRjhGNkEx
ODBEQjVCRTAwMTMyNjc0IC8qIENyeXB0b0FsZ29yaXRobVJlZ2lzdHJ5LmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENyeXB0b0FsZ29yaXRobVJlZ2lzdHJ5LmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTFGRjhGNkIxODBEQjVCRTAwMTMyNjc0IC8q
IENyeXB0b0FsZ29yaXRobVJlZ2lzdHJ5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IENyeXB0b0FsZ29yaXRobVJlZ2lzdHJ5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUUzMTUwRUE1MURBNzIxOEQwMDE5NDAxMiAvKiBET01KSVRIZWxwZXJzLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERPTUpJVEhlbHBlcnMuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJRTMzNDgyNUUxREM5M0FBMDAwOUM5NTQ0IC8qIERPTUpJVEFic3RyYWN0
SGVhcFJlcG9zaXRvcnkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRE9NSklU
QWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlF
MzRFRTQ5RjFEQzJENTc1MDBFQUE5RDMgLyogSlNFdmVudEN1c3RvbS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBKU0V2ZW50Q3VzdG9tLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07Ci0JCUUzNUNBMTRCMURCQzNBM0MwMEY4MzUxNiAvKiBET01KSVRBYnN0cmFjdEhlYXBS
ZXBvc2l0b3J5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERPTUpJ
VEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owot
CQlFMzVDQTE0QzFEQkMzQTNDMDBGODM1MTYgLyogRE9NSklUQWJzdHJhY3RIZWFwUmVwb3NpdG9y
eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBET01KSVRBYnN0cmFjdEhlYXBS
ZXBvc2l0b3J5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzNTgwMkI1MURDODQz
NTgwMEE5NzczQyAvKiBET01KSVRJRExUeXBlRmlsdGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IERPTUpJVElETFR5cGVGaWx0ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJRTM4ODM4OTQxQkFEMTQ1RjAwRDYyRUUzIC8qIFNjcmlwdE1vZHVsZUxvYWRlci5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTY3JpcHRNb2R1bGVMb2Fk
ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzg4Mzg5NTFCQUQxNDVGMDBE
NjJFRTMgLyogU2NyaXB0TW9kdWxlTG9hZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFNjcmlwdE1vZHVsZUxvYWRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlFMzk4RkMyMzFEQzMyQTFCMDAzQzQ2ODQgLyogRE9NSklUSGVscGVycy5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBET01KSVRIZWxwZXJzLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTNBNTg3MkUxREMzRjUyNjAwRjYwN0E2IC8qIEpTRHluYW1p
Y0Rvd25jYXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTRHluYW1pY0Rv
d25jYXN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzQTc3NjY1MURDODVEMjIw
MEI2OTBEOCAvKiBET01KSVRJRExDb252ZXJ0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IERPTUpJVElETENvbnZlcnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
RTNBNzc2NjYxREM4NUQyMjAwQjY5MEQ4IC8qIERPTUpJVElETFR5cGUuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gRE9NSklUSURMVHlwZS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlFM0FGQTk2NDFEQTZFOTA4MDAyODYxQkQgLyogSlNOb2RlRE9NSklULmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTTm9kZURPTUpJVC5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzQjJGMEUzMUQ3RjM1RUMwMEIwQzlEMSAvKiBM
b2FkYWJsZUNsYXNzaWNTY3JpcHQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gTG9hZGFibGVDbGFzc2ljU2NyaXB0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJRTNCMkYwRTQxRDdGMzVFQzAwQjBDOUQxIC8qIExvYWRhYmxlQ2xhc3NpY1NjcmlwdC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBMb2FkYWJsZUNsYXNzaWNTY3JpcHQu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE3MjgwLDYgKzE3MjgzLDcgQEAKIAkJ
CQk2NTY1ODE0NzA5RDEzMDQzMDAwRTYxRDcgLyogQ1NTVmFsdWVLZXl3b3Jkcy5ncGVyZiAqLywK
IAkJCQk2NTY1ODE0ODA5RDEzMDQzMDAwRTYxRDcgLyogQ1NTVmFsdWVLZXl3b3Jkcy5oICovLAog
CQkJCTlCM0E4ODcxMTQ1NjMyRjkwMDNBRThGNSAvKiBET01ET01TZXR0YWJsZVRva2VuTGlzdC5o
ICovLAorCQkJCUUzMzQ4MjVFMURDOTNBQTAwMDlDOTU0NCAvKiBET01KSVRBYnN0cmFjdEhlYXBS
ZXBvc2l0b3J5LmggKi8sCiAJCQkJRTFDNkNGQzIxNzQ2RDI5MzAwN0I4N0ExIC8qIERPTVdpbmRv
d0NvbnN0cnVjdG9ycy5pZGwgKi8sCiAJCQkJOTcwQjcyQTUxNDUwMDhFQjAwRjAwQTM3IC8qIEV2
ZW50SGVhZGVycy5oICovLAogCQkJCTk3MEI3Mjg5MTQ0RkZBQzYwMEYwMEEzNyAvKiBFdmVudElu
dGVyZmFjZXMuaCAqLywKQEAgLTIyODk3LDExICsyMjkwMSwxMiBAQAogCQlFM0FGQTk2MzFEQTZF
OEFGMDAyODYxQkQgLyogZG9taml0ICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGls
ZHJlbiA9ICgKLQkJCQlFMzVDQTE0QjFEQkMzQTNDMDBGODM1MTYgLyogRE9NSklUQWJzdHJhY3RI
ZWFwUmVwb3NpdG9yeS5jcHAgKi8sCi0JCQkJRTM1Q0ExNEMxREJDM0EzQzAwRjgzNTE2IC8qIERP
TUpJVEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaCAqLywKIAkJCQlFM0M5OUEwODFEQzNENDE3MDA3
OTRBRDMgLyogRE9NSklUQ2hlY2tET00uaCAqLywKIAkJCQlFMzk4RkMyMzFEQzMyQTFCMDAzQzQ2
ODQgLyogRE9NSklUSGVscGVycy5jcHAgKi8sCiAJCQkJRTMxNTBFQTUxREE3MjE4RDAwMTk0MDEy
IC8qIERPTUpJVEhlbHBlcnMuaCAqLywKKwkJCQlFM0E3NzY2NTFEQzg1RDIyMDBCNjkwRDggLyog
RE9NSklUSURMQ29udmVydC5oICovLAorCQkJCUUzQTc3NjY2MURDODVEMjIwMEI2OTBEOCAvKiBE
T01KSVRJRExUeXBlLmggKi8sCisJCQkJRTM1ODAyQjUxREM4NDM1ODAwQTk3NzNDIC8qIERPTUpJ
VElETFR5cGVGaWx0ZXIuaCAqLywKIAkJCQlFM0I3QzA2MjFEQzM0MTVBMDAxRkIwQjggLyogSlNE
b2N1bWVudERPTUpJVC5jcHAgKi8sCiAJCQkJRTNBRkE5NjQxREE2RTkwODAwMjg2MUJEIC8qIEpT
Tm9kZURPTUpJVC5jcHAgKi8sCiAJCQkpOwpAQCAtMjU3NjgsNiArMjU3NzMsNyBAQAogCQkJCTQ2
MENCRjM2MUQ0QkNEMEUwMDkyRTg4RSAvKiBKU0RPTVdpbmRvd1Byb3BlcnRpZXMuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUJDQkZCNTNEMERDRDI5Q0YwMDE5QjNFNSAvKiBKU0RPTVdpbmRvd1NoZWxs
LmggaW4gSGVhZGVycyAqLywKIAkJCQk2NUUwRTk0NDExMzNDODlGMDBCNENCMTAgLyogSlNET01X
cmFwcGVyLmggaW4gSGVhZGVycyAqLywKKwkJCQlFM0E3NzY2NzFEQzg1RDI4MDBCNjkwRDggLyog
RE9NSklUSURMQ29udmVydC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkQ3ODY4QkExMzZCOTk5MjAw
RDQwM0RGIC8qIEpTRHluYW1pY3NDb21wcmVzc29yTm9kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
NjVERjMxRkEwOUQxQ0M2MDAwMEJFMzI1IC8qIEpTRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQURFQzc4RjgxOEVFNTMwODAwMTMxNUMyIC8qIEpTRWxlbWVudEN1c3RvbS5oIGluIEhlYWRl
cnMgKi8sCkBAIC0yNzMzMyw2ICsyNzMzOSw3IEBACiAJCQkJMDg1MjVFNjMxMjc4QzAwMTAwQTg0
Nzc4IC8qIFNWR0FuaW1hdGVkU3RhdGljUHJvcGVydHlUZWFyT2ZmLmggaW4gSGVhZGVycyAqLywK
IAkJCQkwODREQjU5QjEyODAwOENDMDAyQTZENjQgLyogU1ZHQW5pbWF0ZWRTdHJpbmcuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTA4MjUwOTM5MTI4QkQ0RDgwMEUyRUQ4RSAvKiBTVkdBbmltYXRlZFRy
YW5zZm9ybUxpc3QuaCBpbiBIZWFkZXJzICovLAorCQkJCUUzQTc3NjY4MURDODVEMjgwMEI2OTBE
OCAvKiBET01KSVRJRExUeXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwODVBMTU5MzEyODlBOERE
MDAyNzEwRTMgLyogU1ZHQW5pbWF0ZWRUcmFuc2Zvcm1MaXN0UHJvcGVydHlUZWFyT2ZmLmggaW4g
SGVhZGVycyAqLywKIAkJCQk0MzlEMzM0MzEzQTY5MTFDMDBDMjBGNEYgLyogU1ZHQW5pbWF0ZWRU
eXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MzlEMzM0NDEzQTY5MTFDMDBDMjBGNEYgLyogU1ZH
QW5pbWF0ZWRUeXBlQW5pbWF0b3IuaCBpbiBIZWFkZXJzICovLApAQCAtMjc4NzAsNiArMjc4Nzcs
NyBAQAogCQkJCTk3QUFCRDIzMTRGQTA5RDUwMDc0NTdBRSAvKiBXZWJTb2NrZXRFeHRlbnNpb25E
aXNwYXRjaGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk0QTVBMkFEQzE2MUU3RTAwMDA1ODg5REQg
LyogV2ViU29ja2V0RXh0ZW5zaW9uUGFyc2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQk5N0FBQkQy
NDE0RkEwOUQ1MDA3NDU3QUUgLyogV2ViU29ja2V0RXh0ZW5zaW9uUHJvY2Vzc29yLmggaW4gSGVh
ZGVycyAqLywKKwkJCQlFMzU4MDJCNjFEQzg0MzVEMDBBOTc3M0MgLyogRE9NSklUSURMVHlwZUZp
bHRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTdBQUJEMjUxNEZBMDlENTAwNzQ1N0FFIC8qIFdl
YlNvY2tldEZyYW1lLmggaW4gSGVhZGVycyAqLywKIAkJCQk5N0FBQkQyNzE0RkEwOUQ1MDA3NDU3
QUUgLyogV2ViU29ja2V0SGFuZHNoYWtlLmggaW4gSGVhZGVycyAqLywKIAkJCQkzMURFQTQ1NjFC
MzlGNEQ5MDBGNzcxNzggLyogV2ViU3lzdGVtQmFja2Ryb3BMYXllci5oIGluIEhlYWRlcnMgKi8s
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVj
dC5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuaAppbmRl
eCBjMTgxZjlhMTZmNTUzMGJkOTUzZGJmNWYxYzE1ZjEzYTYyNGZhMTJjLi41ZGMxZWU0MGM5ODU0
MGU4YzQ3MDViNzA5NTc1OWZmY2ZjMjVkYTBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmgKQEAgLTgxLDcgKzgxLDcgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogICAgIHB1YmxpYzoKICAgICAgICAgfkpTRE9NR2xvYmFsT2JqZWN0KCk7CiAKLSAg
ICAgICAgc3RhdGljIGNvbnN0IEpTQzo6Q2xhc3NJbmZvKiBpbmZvKCkgeyByZXR1cm4gJnNfaW5m
bzsgfQorICAgICAgICBzdGF0aWMgY29uc3RleHByIGNvbnN0IEpTQzo6Q2xhc3NJbmZvKiBpbmZv
KCkgeyByZXR1cm4gJnNfaW5mbzsgfQogCiAgICAgICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSog
Y3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAg
ICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVH
ZW5lcmF0b3JKUy5wbSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVy
YXRvckpTLnBtCmluZGV4IGYwZTQyODc5MTc0OWY0NWIxYjQ3NjQ5YjYxZTE0N2ZhN2ZiZGJhNWQu
Ljc0OTllNmRiZmQ3OGEyZDAxMDBjOTAxYTIxMjgyY2FjYzNmMTUyMzkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCkBAIC0xNDcx
LDcgKzE0NzEsNyBAQCBzdWIgR2VuZXJhdGVIZWFkZXIKICAgICAgICAgcHVzaChAaGVhZGVyQ29u
dGVudCwgInByb3RlY3RlZDpcbiIpOwogICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAg
IHN0YXRpYyBjb25zdCBKU0M6OkNsYXNzSW5mbyBzX2luZm87XG4iKTsKICAgICAgICAgcHVzaChA
aGVhZGVyQ29udGVudCwgInB1YmxpYzpcbiIpOwotICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50
LCAiICAgIHN0YXRpYyBjb25zdCBKU0M6OkNsYXNzSW5mbyogaW5mbygpIHsgcmV0dXJuICZzX2lu
Zm87IH1cblxuIik7CisgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgc3RhdGljIGNv
bnN0ZXhwciBjb25zdCBKU0M6OkNsYXNzSW5mbyogaW5mbygpIHsgcmV0dXJuICZzX2luZm87IH1c
blxuIik7CiAgICAgfSBlbHNlIHsKICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIlxuIik7
CiAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgREVDTEFSRV9JTkZPO1xuXG4iKTsK
QEAgLTE5MjUsNyArMTkyNSwxMSBAQCBzdWIgR2VuZXJhdGVQcm9wZXJ0aWVzSGFzaFRhYmxlCiAg
ICAgICAgICMgRklYTUU6IFJlbW92ZSB0aGlzIG9uY2Ugd2UgY2FuIGdldCByaWQgb2YgdGhlIHF1
aXJrIGludHJvZHVjZWQgaW4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE2Mzk2Ny4KICAgICAgICAgJGZ1bmN0aW9uTGVuZ3RoID0gMyBpZiAkaW50ZXJmYWNlTmFtZSBl
cSAiRXZlbnQiIGFuZCAkZnVuY3Rpb24tPm5hbWUgZXEgImluaXRFdmVudCI7CiAKLSAgICAgICAg
cHVzaChAJGhhc2hWYWx1ZTIsICRmdW5jdGlvbkxlbmd0aCk7CisgICAgICAgIGlmICgkZnVuY3Rp
b24tPmV4dGVuZGVkQXR0cmlidXRlcy0+e0RPTUpJVH0pIHsKKyAgICAgICAgICAgIHB1c2goQCRo
YXNoVmFsdWUyLCAiJkRPTUpJVFNpZ25hdHVyZUZvciIgLiAkaW50ZXJmYWNlLT50eXBlLT5uYW1l
IC4gJGNvZGVHZW5lcmF0b3ItPldLX3VjZmlyc3QoJGZ1bmN0aW9uLT5uYW1lKSk7CisgICAgICAg
IH0gZWxzZSB7CisgICAgICAgICAgICBwdXNoKEAkaGFzaFZhbHVlMiwgJGZ1bmN0aW9uTGVuZ3Ro
KTsKKyAgICAgICAgfQogCiAgICAgICAgIHB1c2goQCRoYXNoU3BlY2lhbHMsIENvbXB1dGVGdW5j
dGlvblNwZWNpYWwoJGludGVyZmFjZSwgJGZ1bmN0aW9uKSk7CiAKQEAgLTI1NDEsMzkgKzI1NDUs
MjggQEAgc3ViIGFkZFVuc2NvcGFibGVQcm9wZXJ0aWVzCiAgICAgcHVzaChAaW1wbENvbnRlbnQs
ICIgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPnVu
c2NvcGFibGVzU3ltYm9sLCAmdW5zY29wYWJsZXMsIERvbnRFbnVtIHwgUmVhZE9ubHkpO1xuIik7
CiB9CiAKLXN1YiBHZXRSZXN1bHRUeXBlRmlsdGVyCitzdWIgR2V0VW5zYWZlQXJndW1lbnRUeXBl
CiB7Ci0gICAgbXkgKCR0eXBlKSA9IEBfOworICAgIG15ICgkaW50ZXJmYWNlLCAkdHlwZSkgPSBA
XzsKIAotICAgIG15ICVUeXBlRmlsdGVycyA9ICgKLSAgICAgICAgImFueSIgPT4gIlNwZWNIZWFw
VG9wIiwKLSAgICAgICAgImJvb2xlYW4iID0+ICJTcGVjQm9vbGVhbiIsCi0gICAgICAgICJieXRl
IiA9PiAiU3BlY0ludDMyT25seSIsCi0gICAgICAgICJvY3RldCIgPT4gIlNwZWNJbnQzMk9ubHki
LAotICAgICAgICAic2hvcnQiID0+ICJTcGVjSW50MzJPbmx5IiwKLSAgICAgICAgInVuc2lnbmVk
IHNob3J0IiA9PiAiU3BlY0ludDMyT25seSIsCi0gICAgICAgICJsb25nIiA9PiAiU3BlY0ludDMy
T25seSIsCi0gICAgICAgICJ1bnNpZ25lZCBsb25nIiA9PiAiU3BlY0J5dGVjb2RlTnVtYmVyIiwK
LSAgICAgICAgImxvbmcgbG9uZyIgPT4gIlNwZWNCeXRlY29kZU51bWJlciIsCi0gICAgICAgICJ1
bnNpZ25lZCBsb25nIGxvbmciID0+ICJTcGVjQnl0ZWNvZGVOdW1iZXIiLAotICAgICAgICAiZmxv
YXQiID0+ICJTcGVjQnl0ZWNvZGVOdW1iZXIiLAotICAgICAgICAidW5yZXN0cmljdGVkIGZsb2F0
IiA9PiAiU3BlY0J5dGVjb2RlTnVtYmVyIiwKLSAgICAgICAgImRvdWJsZSIgPT4gIlNwZWNCeXRl
Y29kZU51bWJlciIsCi0gICAgICAgICJ1bnJlc3RyaWN0ZWQgZG91YmxlIiA9PiAiU3BlY0J5dGVj
b2RlTnVtYmVyIiwKLSAgICAgICAgIkRPTVN0cmluZyIgPT4gIlNwZWNTdHJpbmciLAotICAgICAg
ICAiQnl0ZVN0cmluZyIgPT4gIlNwZWNTdHJpbmciLAotICAgICAgICAiVVNWU3RyaW5nIiA9PiAi
U3BlY1N0cmluZyIsCi0gICAgKTsKKyAgICBteSAkSURMVHlwZSA9IEdldElETFR5cGUoJGludGVy
ZmFjZSwgJHR5cGUpOworICAgIHJldHVybiAiRE9NSklUOjpJRExKU0FyZ3VtZW50VHlwZTwke0lE
TFR5cGV9PiI7Cit9CiAKLSAgICBpZiAoZXhpc3RzICRUeXBlRmlsdGVyc3skdHlwZS0+bmFtZX0p
IHsKLSAgICAgICAgbXkgJHJlc3VsdFR5cGUgPSAiSlNDOjokVHlwZUZpbHRlcnN7JHR5cGUtPm5h
bWV9IjsKLSAgICAgICAgaWYgKCR0eXBlLT5pc051bGxhYmxlKSB7Ci0gICAgICAgICAgICBkaWUg
IlwiYW55XCIgdHlwZSBtdXN0IG5vdCBiZWNvbWUgbnVsbGFibGUuIiBpZiAkdHlwZS0+bmFtZSBl
cSAiYW55IjsKLSAgICAgICAgICAgICRyZXN1bHRUeXBlID0gIigkcmVzdWx0VHlwZSB8IEpTQzo6
U3BlY090aGVyKSI7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuICRyZXN1bHRUeXBlOwotICAg
IH0KLSAgICByZXR1cm4gIlNwZWNIZWFwVG9wIjsKK3N1YiBHZXRBcmd1bWVudFR5cGVGaWx0ZXIK
K3sKKyAgICBteSAoJGludGVyZmFjZSwgJHR5cGUpID0gQF87CisKKyAgICBteSAkSURMVHlwZSA9
IEdldElETFR5cGUoJGludGVyZmFjZSwgJHR5cGUpOworICAgIHJldHVybiAiRE9NSklUOjpJRExB
cmd1bWVudFR5cGVGaWx0ZXI8JHtJRExUeXBlfT46OnZhbHVlIjsKK30KKworc3ViIEdldFJlc3Vs
dFR5cGVGaWx0ZXIKK3sKKyAgICBteSAoJGludGVyZmFjZSwgJHR5cGUpID0gQF87CisKKyAgICBt
eSAkSURMVHlwZSA9IEdldElETFR5cGUoJGludGVyZmFjZSwgJHR5cGUpOworICAgIHJldHVybiAi
RE9NSklUOjpJRExSZXN1bHRUeXBlRmlsdGVyPCR7SURMVHlwZX0+Ojp2YWx1ZSI7CiB9CiAKIHN1
YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCkBAIC0yNjQ0LDYgKzI2MzcsMTcgQEAgc3ViIEdlbmVy
YXRlSW1wbGVtZW50YXRpb24KICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiI2lmICR7
Y29uZGl0aW9uYWxTdHJpbmd9XG4iKSBpZiAkY29uZGl0aW9uYWxTdHJpbmc7CiAgICAgICAgICAg
ICBteSAkZnVuY3Rpb25OYW1lID0gR2V0RnVuY3Rpb25OYW1lKCRpbnRlcmZhY2UsICRjbGFzc05h
bWUsICRmdW5jdGlvbik7CiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIkpTQzo6RW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCAke2Z1bmN0aW9uTmFtZX0oSlNDOjpFeGVjU3RhdGUq
KTtcbiIpOworICAgICAgICAgICAgaWYgKCRmdW5jdGlvbi0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57
RE9NSklUfSkgeworICAgICAgICAgICAgICAgICRpbXBsSW5jbHVkZXN7IkRPTUpJVElETFR5cGUu
aCJ9ID0gMTsKKyAgICAgICAgICAgICAgICBteSAkdW5zYWZlRnVuY3Rpb25OYW1lID0gInVuc2Fm
ZSIgLiAkY29kZUdlbmVyYXRvci0+V0tfdWNmaXJzdCgkZnVuY3Rpb25OYW1lKTsKKyAgICAgICAg
ICAgICAgICBteSAkZnVuY3Rpb25TaWduYXR1cmUgPSAiSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMICR7dW5zYWZlRnVuY3Rpb25OYW1lfShKU0M6OkV4ZWNTdGF0ZSosICRjbGFzc05h
bWUqIjsKKyAgICAgICAgICAgICAgICBmb3JlYWNoIG15ICRhcmd1bWVudCAoQHskZnVuY3Rpb24t
PmFyZ3VtZW50c30pIHsKKyAgICAgICAgICAgICAgICAgICAgbXkgJHR5cGUgPSAkYXJndW1lbnQt
PnR5cGU7CisgICAgICAgICAgICAgICAgICAgIG15ICRhcmd1bWVudFR5cGUgPSBHZXRVbnNhZmVB
cmd1bWVudFR5cGUoJGludGVyZmFjZSwgJHR5cGUpOworICAgICAgICAgICAgICAgICAgICAkZnVu
Y3Rpb25TaWduYXR1cmUgLj0gIiwgJHthcmd1bWVudFR5cGV9IjsKKyAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICRmdW5jdGlvblNpZ25hdHVyZSAu
ICIpO1xuIik7CisgICAgICAgICAgICB9CiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwg
IiNlbmRpZlxuIikgaWYgJGNvbmRpdGlvbmFsU3RyaW5nOwogICAgICAgICB9CiAKQEAgLTI2ODAs
NiArMjY4NCwzNyBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICAgICBwdXNoKEBp
bXBsQ29udGVudCwgIlxuIik7CiAgICAgfQogCisgICAgaWYgKCRudW1GdW5jdGlvbnMgPiAwKSB7
CisgICAgICAgIGZvcmVhY2ggbXkgJGZ1bmN0aW9uIChAZnVuY3Rpb25zKSB7CisgICAgICAgICAg
ICBuZXh0IHVubGVzcyAkZnVuY3Rpb24tPmV4dGVuZGVkQXR0cmlidXRlcy0+e0RPTUpJVH07Cisg
ICAgICAgICAgICAkaW1wbEluY2x1ZGVzeyJET01KSVRJRExUeXBlRmlsdGVyLmgifSA9IDE7Cisg
ICAgICAgICAgICAkaW1wbEluY2x1ZGVzeyJET01KSVRDaGVja0RPTS5oIn0gPSAxOworICAgICAg
ICAgICAgJGltcGxJbmNsdWRlc3siRE9NSklUQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5oIn0gPSAx
OworCisgICAgICAgICAgICBteSAkaXNPdmVybG9hZGVkID0gJGZ1bmN0aW9uLT57b3ZlcmxvYWRz
fSAmJiBAeyRmdW5jdGlvbi0+e292ZXJsb2Fkc319ID4gMTsKKyAgICAgICAgICAgIGRpZSAiT3Zl
cmxvYWRzIGlzIG5vdCBzdXBwb3J0ZWQgaW4gRE9NSklUIiBpZiAkaXNPdmVybG9hZGVkOworICAg
ICAgICAgICAgZGllICJDdXJyZW50bHkgUmVhZERPTSB2YWx1ZSBpcyBvbmx5IGFsbG93ZWQiIHVu
bGVzcyAkY29kZUdlbmVyYXRvci0+RXh0ZW5kZWRBdHRyaWJ1dGVDb250YWlucygkZnVuY3Rpb24t
PmV4dGVuZGVkQXR0cmlidXRlcy0+e0RPTUpJVH0sICJSZWFkRE9NIik7CisKKyAgICAgICAgICAg
IG15ICRpbnRlcmZhY2VOYW1lID0gJGludGVyZmFjZS0+dHlwZS0+bmFtZTsKKyAgICAgICAgICAg
IG15ICRmdW5jdGlvbk5hbWUgPSBHZXRGdW5jdGlvbk5hbWUoJGludGVyZmFjZSwgJGNsYXNzTmFt
ZSwgJGZ1bmN0aW9uKTsKKyAgICAgICAgICAgIG15ICR1bnNhZmVGdW5jdGlvbk5hbWUgPSAidW5z
YWZlIiAuICRjb2RlR2VuZXJhdG9yLT5XS191Y2ZpcnN0KCRmdW5jdGlvbk5hbWUpOworICAgICAg
ICAgICAgbXkgJGRvbUpJVFNpZ25hdHVyZU5hbWUgPSAiRE9NSklUU2lnbmF0dXJlRm9yIiAuICRp
bnRlcmZhY2UtPnR5cGUtPm5hbWUgLiAkY29kZUdlbmVyYXRvci0+V0tfdWNmaXJzdCgkZnVuY3Rp
b24tPm5hbWUpOworICAgICAgICAgICAgbXkgJGNsYXNzSW5mbyA9ICJKUyIgLiAkaW50ZXJmYWNl
LT50eXBlLT5uYW1lIC4gIjo6aW5mbygpIjsKKyAgICAgICAgICAgIG15ICRyZXN1bHRUeXBlID0g
R2V0UmVzdWx0VHlwZUZpbHRlcigkaW50ZXJmYWNlLCAkZnVuY3Rpb24tPnR5cGUpOworICAgICAg
ICAgICAgbXkgJGRvbUpJVFNpZ25hdHVyZSA9ICJzdGF0aWMgY29uc3QgSlNDOjpET01KSVQ6OlNp
Z25hdHVyZSAke2RvbUpJVFNpZ25hdHVyZU5hbWV9KCh1aW50cHRyX3QpJHt1bnNhZmVGdW5jdGlv
bk5hbWV9LCBET01KSVQ6OmNoZWNrRE9NPCRpbnRlcmZhY2VOYW1lPiwgJGNsYXNzSW5mbywgSlND
OjpET01KSVQ6OkVmZmVjdDo6Zm9yUmVhZChET01KSVQ6OkFic3RyYWN0SGVhcFJlcG9zaXRvcnk6
OkRPTSksICR7cmVzdWx0VHlwZX0iOworICAgICAgICAgICAgZm9yZWFjaCBteSAkYXJndW1lbnQg
KEB7JGZ1bmN0aW9uLT5hcmd1bWVudHN9KSB7CisgICAgICAgICAgICAgICAgbXkgJHR5cGUgPSAk
YXJndW1lbnQtPnR5cGU7CisgICAgICAgICAgICAgICAgbXkgJGFyZ3VtZW50VHlwZSA9IEdldEFy
Z3VtZW50VHlwZUZpbHRlcigkaW50ZXJmYWNlLCAkdHlwZSk7CisgICAgICAgICAgICAgICAgJGRv
bUpJVFNpZ25hdHVyZSAuPSAiLCAke2FyZ3VtZW50VHlwZX0iOworICAgICAgICAgICAgfQorICAg
ICAgICAgICAgbXkgJGNvbmRpdGlvbmFsU3RyaW5nID0gJGNvZGVHZW5lcmF0b3ItPkdlbmVyYXRl
Q29uZGl0aW9uYWxTdHJpbmcoJGZ1bmN0aW9uKTsKKyAgICAgICAgICAgIHB1c2goQGltcGxDb250
ZW50LCAiI2lmICR7Y29uZGl0aW9uYWxTdHJpbmd9XG4iKSBpZiAkY29uZGl0aW9uYWxTdHJpbmc7
CisgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgJGRvbUpJVFNpZ25hdHVyZSAuICIpO1xu
Iik7CisgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiNlbmRpZlxuIikgaWYgJGNvbmRp
dGlvbmFsU3RyaW5nOworICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJcbiIpOworICAg
ICAgICB9CisgICAgfQorCiAgICAgR2VuZXJhdGVQcm90b3R5cGVEZWNsYXJhdGlvbihcQGltcGxD
b250ZW50LCAkY2xhc3NOYW1lLCAkaW50ZXJmYWNlKSBpZiAhSGVhZGVyTmVlZHNQcm90b3R5cGVE
ZWNsYXJhdGlvbigkaW50ZXJmYWNlKTsKIAogICAgIEdlbmVyYXRlQ29uc3RydWN0b3JEZWNsYXJh
dGlvbihcQGltcGxDb250ZW50LCAkY2xhc3NOYW1lLCAkaW50ZXJmYWNlKSBpZiBOZWVkc0NvbnN0
cnVjdG9yUHJvcGVydHkoJGludGVyZmFjZSk7CkBAIC0yNzc2LDcgKzI4MTEsMTEgQEAgc3ViIEdl
bmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAgICAgICAgIHB1c2goQGhhc2hWYWx1ZTEsICRmdW5j
dGlvbk5hbWUpOwogCiAgICAgICAgICAgICBteSAkZnVuY3Rpb25MZW5ndGggPSBHZXRGdW5jdGlv
bkxlbmd0aCgkZnVuY3Rpb24pOwotICAgICAgICAgICAgcHVzaChAaGFzaFZhbHVlMiwgJGZ1bmN0
aW9uTGVuZ3RoKTsKKyAgICAgICAgICAgIGlmICgkZnVuY3Rpb24tPmV4dGVuZGVkQXR0cmlidXRl
cy0+e0RPTUpJVH0pIHsKKyAgICAgICAgICAgICAgICBwdXNoKEBoYXNoVmFsdWUyLCAiRE9NSklU
RnVuY3Rpb25Gb3IiIC4gJGludGVyZmFjZS0+dHlwZS0+bmFtZSAuICRjb2RlR2VuZXJhdG9yLT5X
S191Y2ZpcnN0KCRmdW5jdGlvbi0+bmFtZSkpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgICAgICAgICBwdXNoKEBoYXNoVmFsdWUyLCAkZnVuY3Rpb25MZW5ndGgpOworICAgICAgICAg
ICAgfQogCiAgICAgICAgICAgICBwdXNoKEBoYXNoU3BlY2lhbHMsIENvbXB1dGVGdW5jdGlvblNw
ZWNpYWwoJGludGVyZmFjZSwgJGZ1bmN0aW9uKSk7CiAKQEAgLTMzMzgsMTMgKzMzNzcsMTQgQEAg
c3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KIAogICAgICAgICAgICAgaWYgKCRhdHRyaWJ1dGUt
PmV4dGVuZGVkQXR0cmlidXRlcy0+eyJET01KSVQifSkgewogICAgICAgICAgICAgICAgICRpbXBs
SW5jbHVkZXN7Ijx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4ifSA9IDE7CisgICAgICAgICAgICAgICAg
JGltcGxJbmNsdWRlc3siRE9NSklUSURMVHlwZUZpbHRlci5oIn0gPSAxOwogICAgICAgICAgICAg
ICAgIG15ICRpbnRlcmZhY2VOYW1lID0gJGludGVyZmFjZS0+dHlwZS0+bmFtZTsKICAgICAgICAg
ICAgICAgICBteSAkYXR0cmlidXRlTmFtZSA9ICRhdHRyaWJ1dGUtPm5hbWU7CiAgICAgICAgICAg
ICAgICAgbXkgJGdlbmVyYXRvck5hbWUgPSAkaW50ZXJmYWNlTmFtZSAuICRjb2RlR2VuZXJhdG9y
LT5XS191Y2ZpcnN0KCRhdHRyaWJ1dGUtPm5hbWUpOwogICAgICAgICAgICAgICAgIG15ICRkb21K
SVRDbGFzc05hbWUgPSAkZ2VuZXJhdG9yTmFtZSAuICJET01KSVQiOwogICAgICAgICAgICAgICAg
IG15ICRnZXR0ZXIgPSBHZXRBdHRyaWJ1dGVHZXR0ZXJOYW1lKCRpbnRlcmZhY2UsICRnZW5lcmF0
b3JOYW1lLCAkYXR0cmlidXRlKTsKICAgICAgICAgICAgICAgICBteSAkc2V0dGVyID0gSXNSZWFk
b25seSgkYXR0cmlidXRlKSA/ICJudWxscHRyIiA6IEdldEF0dHJpYnV0ZVNldHRlck5hbWUoJGlu
dGVyZmFjZSwgJGdlbmVyYXRvck5hbWUsICRhdHRyaWJ1dGUpOwotICAgICAgICAgICAgICAgIG15
ICRyZXN1bHRUeXBlID0gR2V0UmVzdWx0VHlwZUZpbHRlcigkYXR0cmlidXRlLT50eXBlKTsKKyAg
ICAgICAgICAgICAgICBteSAkcmVzdWx0VHlwZSA9IEdldFJlc3VsdFR5cGVGaWx0ZXIoJGludGVy
ZmFjZSwgJGF0dHJpYnV0ZS0+dHlwZSk7CiAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsICIkZG9tSklUQ2xhc3NOYW1lOjokZG9tSklUQ2xhc3NOYW1lKClcbiIpOwogICAgICAgICAg
ICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIDogSlNDOjpET01KSVQ6OkdldHRlclNldHRl
cigkZ2V0dGVyLCAkc2V0dGVyLCAke2NsYXNzTmFtZX06OmluZm8oKSwgJHJlc3VsdFR5cGUpXG4i
KTsKICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIntcbiIpOwpAQCAtMzgzOCw2
ICszODc4LDc4IEBAIEVORAogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBwdXNoKEBpbXBs
Q29udGVudCwgIn1cblxuIik7CisKKyAgICAgICAgICAgIGlmICgkZnVuY3Rpb24tPmV4dGVuZGVk
QXR0cmlidXRlcy0+e0RPTUpJVH0pIHsKKyAgICAgICAgICAgICAgICAkaW1wbEluY2x1ZGVzeyI8
aW50ZXJwcmV0ZXIvRnJhbWVUcmFjZXJzLmg+In0gPSAxOworICAgICAgICAgICAgICAgIG15ICR1
bnNhZmVGdW5jdGlvbk5hbWUgPSAidW5zYWZlIiAuICRjb2RlR2VuZXJhdG9yLT5XS191Y2ZpcnN0
KCRmdW5jdGlvbk5hbWUpOworICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiSlND
OjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMICR7dW5zYWZlRnVuY3Rpb25OYW1lfShKU0M6
OkV4ZWNTdGF0ZSogc3RhdGUsICRjbGFzc05hbWUqIGNhc3RlZFRoaXMiKTsKKyAgICAgICAgICAg
ICAgICBmb3JlYWNoIG15ICRhcmd1bWVudCAoQHskZnVuY3Rpb24tPmFyZ3VtZW50c30pIHsKKyAg
ICAgICAgICAgICAgICAgICAgbXkgJHR5cGUgPSAkYXJndW1lbnQtPnR5cGU7CisgICAgICAgICAg
ICAgICAgICAgIG15ICRhcmd1bWVudFR5cGUgPSBHZXRVbnNhZmVBcmd1bWVudFR5cGUoJGludGVy
ZmFjZSwgJHR5cGUpOworICAgICAgICAgICAgICAgICAgICBteSAkbmFtZSA9ICRhcmd1bWVudC0+
bmFtZTsKKyAgICAgICAgICAgICAgICAgICAgbXkgJGVuY29kZWROYW1lID0gImVuY29kZWQiIC4g
JGNvZGVHZW5lcmF0b3ItPldLX3VjZmlyc3QoJG5hbWUpOworICAgICAgICAgICAgICAgICAgICBw
dXNoKEBpbXBsQ29udGVudCwgIiwgJHthcmd1bWVudFR5cGV9ICR7ZW5jb2RlZE5hbWV9Iik7Cisg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiKVxu
Iik7CisgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ7XG4iKTsKKyAgICAgICAg
ICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBVTlVTRURfUEFSQU0oc3RhdGUpO1xuIik7
CisgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgVk0mIHZtID0gc3RhdGUt
PnZtKCk7XG4iKTsKKyAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBKU0M6
Ok5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIoJnZtLCBzdGF0ZSk7XG4iKTsKKyAgICAgICAg
ICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTtcbiIpOworICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50
LCAiICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTtcbiIpOworICAgICAgICAgICAgICAgIHB1
c2goQGltcGxDb250ZW50LCAiICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7
XG4iKTsKKyAgICAgICAgICAgICAgICBteSBAYXJndW1lbnRzOworICAgICAgICAgICAgICAgIG15
ICRpbXBsRnVuY3Rpb25OYW1lOworICAgICAgICAgICAgICAgIG15ICRpbXBsZW1lbnRlZEJ5ID0g
JGZ1bmN0aW9uLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntJbXBsZW1lbnRlZEJ5fTsKKworICAgICAg
ICAgICAgICAgIGlmICgkaW1wbGVtZW50ZWRCeSkgeworICAgICAgICAgICAgICAgICAgICBBZGRU
b0ltcGxJbmNsdWRlcygiJHtpbXBsZW1lbnRlZEJ5fS5oIiwgJGZ1bmN0aW9uLT5leHRlbmRlZEF0
dHJpYnV0ZXMtPntDb25kaXRpb25hbH0pOworICAgICAgICAgICAgICAgICAgICB1bnNoaWZ0KEBh
cmd1bWVudHMsICJpbXBsIikgaWYgISRmdW5jdGlvbi0+aXNTdGF0aWM7CisgICAgICAgICAgICAg
ICAgICAgICRpbXBsRnVuY3Rpb25OYW1lID0gIldlYkNvcmU6OiR7aW1wbGVtZW50ZWRCeX06OiR7
ZnVuY3Rpb25JbXBsZW1lbnRhdGlvbk5hbWV9IjsKKyAgICAgICAgICAgICAgICB9IGVsc2lmICgk
ZnVuY3Rpb24tPmlzU3RhdGljKSB7CisgICAgICAgICAgICAgICAgICAgICRpbXBsRnVuY3Rpb25O
YW1lID0gIiR7aW50ZXJmYWNlTmFtZX06OiR7ZnVuY3Rpb25JbXBsZW1lbnRhdGlvbk5hbWV9IjsK
KyAgICAgICAgICAgICAgICB9IGVsc2lmICgkc3ZnUHJvcGVydHlPckxpc3RQcm9wZXJ0eVR5cGUg
YW5kICEkc3ZnTGlzdFByb3BlcnR5VHlwZSkgeworICAgICAgICAgICAgICAgICAgICAkaW1wbEZ1
bmN0aW9uTmFtZSA9ICJwb2RJbXBsLiR7ZnVuY3Rpb25JbXBsZW1lbnRhdGlvbk5hbWV9IjsKKyAg
ICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAkaW1wbEZ1bmN0aW9u
TmFtZSA9ICJpbXBsLiR7ZnVuY3Rpb25JbXBsZW1lbnRhdGlvbk5hbWV9IjsKKyAgICAgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgICAgICBmb3JlYWNoIG15ICRhcmd1bWVudCAoQHskZnVuY3Rp
b24tPmFyZ3VtZW50c30pIHsKKyAgICAgICAgICAgICAgICAgICAgbXkgJHZhbHVlID0gIiI7Cisg
ICAgICAgICAgICAgICAgICAgIG15ICR0eXBlID0gJGFyZ3VtZW50LT50eXBlOworICAgICAgICAg
ICAgICAgICAgICBteSAkbmFtZSA9ICRhcmd1bWVudC0+bmFtZTsKKyAgICAgICAgICAgICAgICAg
ICAgbXkgJGVuY29kZWROYW1lID0gImVuY29kZWQiIC4gJGNvZGVHZW5lcmF0b3ItPldLX3VjZmly
c3QoJG5hbWUpOworICAgICAgICAgICAgICAgICAgICBteSAkbmF0aXZlVHlwZSA9IEdldE5hdGl2
ZVR5cGUoJGludGVyZmFjZSwgJGFyZ3VtZW50LT50eXBlKTsKKyAgICAgICAgICAgICAgICAgICAg
bXkgJGlzVGVhck9mZiA9ICRjb2RlR2VuZXJhdG9yLT5Jc1NWR1R5cGVOZWVkaW5nVGVhck9mZigk
dHlwZSkgJiYgJGludGVyZmFjZU5hbWUgIX4gL0xpc3QkLzsKKyAgICAgICAgICAgICAgICAgICAg
ZGllICJUZWFyT2ZmIHR5cGUgaXMgbm90IGFsbG93ZWQiIGlmICRpc1RlYXJPZmY7CisgICAgICAg
ICAgICAgICAgICAgIG15ICRzaG91bGRQYXNzQnlSZWZlcmVuY2UgPSBTaG91bGRQYXNzV3JhcHBl
ckJ5UmVmZXJlbmNlKCRhcmd1bWVudCwgJGludGVyZmFjZSk7CisKKyAgICAgICAgICAgICAgICAg
ICAgaWYgKCEkc2hvdWxkUGFzc0J5UmVmZXJlbmNlICYmICgkY29kZUdlbmVyYXRvci0+SXNXcmFw
cGVyVHlwZSgkdHlwZSkgfHwgJGNvZGVHZW5lcmF0b3ItPklzVHlwZWRBcnJheVR5cGUoJHR5cGUp
KSkgeworICAgICAgICAgICAgICAgICAgICAgICAgJGltcGxJbmNsdWRlc3siPHJ1bnRpbWUvRXJy
b3IuaD4ifSA9IDE7CisgICAgICAgICAgICAgICAgICAgICAgICBteSAoJG5hdGl2ZVZhbHVlLCAk
bWF5VGhyb3dFeGNlcHRpb24pID0gVW5zYWZlVG9OYXRpdmUoJGludGVyZmFjZSwgJGFyZ3VtZW50
LCAkZW5jb2RlZE5hbWUsICRmdW5jdGlvbi0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Q29uZGl0aW9u
YWx9KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICRu
YXRpdmVUeXBlICRuYW1lID0gbnVsbHB0cjtcbiIpOworICAgICAgICAgICAgICAgICAgICAgICAg
cHVzaChAaW1wbENvbnRlbnQsICIgICAgJG5hbWUgPSAkbmF0aXZlVmFsdWU7XG4iKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIFJFVFVSTl9JRl9FWENF
UFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7XG4iKSBpZiAkbWF5VGhyb3dFeGNl
cHRpb247CisgICAgICAgICAgICAgICAgICAgICAgICAkdmFsdWUgPSAiV1RGTW92ZSgkbmFtZSki
OworICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAg
bXkgKCRuYXRpdmVWYWx1ZSwgJG1heVRocm93RXhjZXB0aW9uKSA9IFVuc2FmZVRvTmF0aXZlKCRp
bnRlcmZhY2UsICRhcmd1bWVudCwgJGVuY29kZWROYW1lLCAkZnVuY3Rpb24tPmV4dGVuZGVkQXR0
cmlidXRlcy0+e0NvbmRpdGlvbmFsfSk7CisgICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBp
bXBsQ29udGVudCwgIiAgICBhdXRvICRuYW1lID0gJHtuYXRpdmVWYWx1ZX07XG4iKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICR2YWx1ZSA9ICJXVEZNb3ZlKCRuYW1lKSI7CisgICAgICAgICAg
ICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpO1xuIikgaWYgJG1heVRocm93RXhjZXB0aW9u
OworICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgaWYgKCRzaG91
bGRQYXNzQnlSZWZlcmVuY2UpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICR2YWx1ZSA9ICIq
JG5hbWUiOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIHB1c2go
QGFyZ3VtZW50cywgJHZhbHVlKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAg
bXkgJGZ1bmN0aW9uU3RyaW5nID0gIiRpbXBsRnVuY3Rpb25OYW1lKCIgLiBqb2luKCIsICIsIEBh
cmd1bWVudHMpIC4gIikiOworICAgICAgICAgICAgICAgICRmdW5jdGlvblN0cmluZyA9ICJwcm9w
YWdhdGVFeGNlcHRpb24oKnN0YXRlLCB0aHJvd1Njb3BlLCAkZnVuY3Rpb25TdHJpbmcpIiBpZiBO
ZWVkc0V4cGxpY2l0UHJvcGFnYXRlRXhjZXB0aW9uQ2FsbCgkZnVuY3Rpb24pOworICAgICAgICAg
ICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIEpTVmFsdWUgcmVzdWx0ID0gIiAuIE5hdGl2
ZVRvSlNWYWx1ZVVzaW5nUG9pbnRlcnMoJGZ1bmN0aW9uLCAxLCAkaW50ZXJmYWNlLCAkZnVuY3Rp
b25TdHJpbmcsICJjYXN0ZWRUaGlzIikgLiAiO1xuIik7CisgICAgICAgICAgICAgICAgcHVzaChA
aW1wbENvbnRlbnQsICIgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpO1xuIik7Cisg
ICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ9XG5cbiIpOworICAgICAgICAgICAg
fQorCiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiNlbmRpZlxuXG4iKSBpZiAkY29u
ZGl0aW9uYWw7CiAKICAgICAgICAgICAgICMgR2VuZXJhdGUgYSBmdW5jdGlvbiBkaXNwYXRjaGlu
ZyBjYWxsIHRvIHRoZSByZXN0IG9mIHRoZSBvdmVybG9hZHMuCkBAIC01MzI0LDYgKzU0MzYsNDYg
QEAgc3ViIEpTVmFsdWVUb05hdGl2ZQogICAgIHJldHVybiAoImNvbnZlcnQ8JElETFR5cGU+KCIg
LiBqb2luKCIsICIsIEBjb252ZXJzaW9uQXJndW1lbnRzKSAuICIpIiwgMSk7CiB9CiAKK3N1YiBV
bnNhZmVUb05hdGl2ZQoreworICAgIG15ICgkaW50ZXJmYWNlLCAkY29udGV4dCwgJHZhbHVlLCAk
Y29uZGl0aW9uYWwsICRzdGF0ZVBvaW50ZXIsICRzdGF0ZVJlZmVyZW5jZSwgJHRoaXNPYmplY3RS
ZWZlcmVuY2UpID0gQF87CisKKyAgICBhc3NlcnQoIkludmFsaWQgY29udGV4dCB0eXBlIikgaWYg
IUlzVmFsaWRDb250ZXh0Rm9ySlNWYWx1ZVRvTmF0aXZlKCRjb250ZXh0KTsKKworICAgIG15ICR0
eXBlID0gJGNvbnRleHQtPnR5cGU7CisKKyAgICAjIEZJWE1FOiBSZW1vdmUgdGhlc2UgMyB2YXJp
YWJsZXMgd2hlbiBhbGwgSlNWYWx1ZVRvTmF0aXZlIHVzZSByZWZlcmVuY2VzLgorICAgICRzdGF0
ZVBvaW50ZXIgPSAic3RhdGUiIHVubGVzcyAkc3RhdGVQb2ludGVyOworICAgICRzdGF0ZVJlZmVy
ZW5jZSA9ICIqc3RhdGUiIHVubGVzcyAkc3RhdGVSZWZlcmVuY2U7CisgICAgJHRoaXNPYmplY3RS
ZWZlcmVuY2UgPSAiKmNhc3RlZFRoaXMiIHVubGVzcyAkdGhpc09iamVjdFJlZmVyZW5jZTsKKwor
ICAgIEFkZFRvSW1wbEluY2x1ZGVzRm9ySURMVHlwZSgkdHlwZSwgJGNvbmRpdGlvbmFsKTsKKwor
ICAgICMgRklYTUU6IFN1cHBvcnQgbW9yZSB0eXBlcy4KKworICAgIGlmICgkdHlwZS0+bmFtZSBl
cSAiRE9NU3RyaW5nIikgeworICAgICAgICByZXR1cm4gKCJBdG9taWNTdHJpbmcoJHZhbHVlLnRv
U3RyaW5nKCRzdGF0ZVBvaW50ZXIpLT50b0V4aXN0aW5nQXRvbWljU3RyaW5nKCRzdGF0ZVBvaW50
ZXIpKSIsIDEpIGlmICRjb250ZXh0LT5leHRlbmRlZEF0dHJpYnV0ZXMtPntSZXF1aXJlc0V4aXN0
aW5nQXRvbWljU3RyaW5nfTsKKyAgICAgICAgcmV0dXJuICgiJHZhbHVlLnRvU3RyaW5nKCRzdGF0
ZVBvaW50ZXIpLT50b0F0b21pY1N0cmluZygkc3RhdGVQb2ludGVyKSIsIDEpIGlmICRjb250ZXh0
LT5leHRlbmRlZEF0dHJpYnV0ZXMtPntBdG9taWNTdHJpbmd9OworICAgIH0KKworICAgIEFkZFRv
SW1wbEluY2x1ZGVzKCJET01KSVRJRExDb252ZXJ0LmgiKTsKKworICAgIG15ICRJRExUeXBlID0g
R2V0SURMVHlwZSgkaW50ZXJmYWNlLCAkdHlwZSk7CisKKyAgICBteSBAY29udmVyc2lvbkFyZ3Vt
ZW50cyA9ICgpOworICAgIHB1c2goQGNvbnZlcnNpb25Bcmd1bWVudHMsICIkc3RhdGVSZWZlcmVu
Y2UiKTsKKyAgICBwdXNoKEBjb252ZXJzaW9uQXJndW1lbnRzLCAiJHZhbHVlIik7CisKKyAgICBt
eSBAY29udmVyc2lvblN0YXRpY0FyZ3VtZW50cyA9ICgpOworICAgIHB1c2goQGNvbnZlcnNpb25T
dGF0aWNBcmd1bWVudHMsIEdldEludGVnZXJDb252ZXJzaW9uQ29uZmlndXJhdGlvbigkY29udGV4
dCkpIGlmICRjb2RlR2VuZXJhdG9yLT5Jc0ludGVnZXJUeXBlKCR0eXBlKTsKKyAgICBwdXNoKEBj
b252ZXJzaW9uU3RhdGljQXJndW1lbnRzLCBHZXRTdHJpbmdDb252ZXJzaW9uQ29uZmlndXJhdGlv
bigkY29udGV4dCkpIGlmICRjb2RlR2VuZXJhdG9yLT5Jc1N0cmluZ1R5cGUoJHR5cGUpOworCisg
ICAgaWYgKHNjYWxhcihAY29udmVyc2lvblN0YXRpY0FyZ3VtZW50cykgPiAwKSB7CisgICAgICAg
IHJldHVybiAoIkRPTUpJVDo6RGlyZWN0Q29udmVydGVyPCRJRExUeXBlPjo6ZGlyZWN0Q29udmVy
dDwiIC4gam9pbigiLCAiLCBAY29udmVyc2lvblN0YXRpY0FyZ3VtZW50cykgLiAiPigiIC4gam9p
bigiLCAiLCBAY29udmVyc2lvbkFyZ3VtZW50cykgLiAiKSIsIDEpOworICAgIH0KKyAgICByZXR1
cm4gKCJET01KSVQ6OkRpcmVjdENvbnZlcnRlcjwkSURMVHlwZT46OmRpcmVjdENvbnZlcnQoIiAu
IGpvaW4oIiwgIiwgQGNvbnZlcnNpb25Bcmd1bWVudHMpIC4gIikiLCAxKTsKK30KKwogc3ViIE5h
dGl2ZVRvSlNWYWx1ZURPTUNvbnZlcnROZWVkc1N0YXRlCiB7CiAgICAgbXkgKCR0eXBlKSA9IEBf
OwpAQCAtNTUwOCw3ICs1NjYwLDEwIEBAIHN1YiBHZW5lcmF0ZUhhc2hUYWJsZVZhbHVlQXJyYXkK
ICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiI2lmICR7Y29uZGl0aW9uYWxTdHJpbmd9
XG4iKTsKICAgICAgICAgfQogCi0gICAgICAgIGlmICgiQCRzcGVjaWFsc1skaV0iID1+IG0vRnVu
Y3Rpb24vKSB7CisgICAgICAgIGlmICgiQCRzcGVjaWFsc1skaV0iID1+IG0vRE9NSklURnVuY3Rp
b24vKSB7CisgICAgICAgICAgICAkZmlyc3RUYXJnZXRUeXBlID0gInN0YXRpY19jYXN0PE5hdGl2
ZUZ1bmN0aW9uPiI7CisgICAgICAgICAgICAkc2Vjb25kVGFyZ2V0VHlwZSA9ICJzdGF0aWNfY2Fz
dDxjb25zdCBKU0M6OkRPTUpJVDo6U2lnbmF0dXJlKj4iOworICAgICAgICB9IGVsc2lmICgiQCRz
cGVjaWFsc1skaV0iID1+IG0vRnVuY3Rpb24vKSB7CiAgICAgICAgICAgICAkZmlyc3RUYXJnZXRU
eXBlID0gInN0YXRpY19jYXN0PE5hdGl2ZUZ1bmN0aW9uPiI7CiAgICAgICAgIH0gZWxzaWYgKCJA
JHNwZWNpYWxzWyRpXSIgPX4gbS9CdWlsdGluLykgewogICAgICAgICAgICAgJGZpcnN0VGFyZ2V0
VHlwZSA9ICJzdGF0aWNfY2FzdDxCdWlsdGluR2VuZXJhdG9yPiI7CkBAIC02MTA2LDYgKzYyNjEs
OSBAQCBzdWIgQ29tcHV0ZUZ1bmN0aW9uU3BlY2lhbAogICAgIGVsc2UgewogICAgICAgICBwdXNo
KEBzcGVjaWFscywgIkpTQzo6RnVuY3Rpb24iKTsKICAgICB9CisgICAgaWYgKCRmdW5jdGlvbi0+
ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkRPTUpJVCJ9KSB7CisgICAgICAgIHB1c2goQHNwZWNpYWxz
LCAiRE9NSklURnVuY3Rpb24iKSBpZiAkZnVuY3Rpb24tPmV4dGVuZGVkQXR0cmlidXRlcy0+e0RP
TUpJVH07CisgICAgfQogICAgIHJldHVybiAoQHNwZWNpYWxzID4gMCkgPyBqb2luKCIgfCAiLCBA
c3BlY2lhbHMpIDogIjAiOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL0lETEF0dHJpYnV0ZXMudHh0IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy9JRExBdHRyaWJ1dGVzLnR4dAppbmRleCBhMmU3NTQxNTkxY2UzZjU3NmU3YTdkMmQ2ZDJm
YzYyZGRkZmEwNDFjLi4xMzk4ZDk0M2ViY2U0ODJlMGQxMTRjOTIyZjBkNDkyMmY1YjI1ODBjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0lETEF0dHJpYnV0ZXMu
dHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvSURMQXR0cmlidXRlcy50
eHQKQEAgLTUyLDcgKzUyLDcgQEAgQ3VzdG9tUHV0RnVuY3Rpb24KIEN1c3RvbVNldFByb3RvdHlw
ZQogQ3VzdG9tU2V0dGVyCiBDdXN0b21Ub0pTT2JqZWN0Ci1ET01KSVQKK0RPTUpJVD18UmVhZERP
TQogRG9Ob3RDaGVja0NvbnN0YW50cwogRG9Ob3RDaGVja1NlY3VyaXR5CiBEb05vdENoZWNrU2Vj
dXJpdHlPbkdldHRlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdERPTUpJVC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0RE9NSklULmNwcAppbmRleCAxNzg3ZTM1NTljOTE5Mjk3YWQ1YzZi
MTQ1ZjZmN2RiYTU2YTJlNTAwLi45ZGFmMjlkZDk4YmVkNWFmODgwODllOGNmNDU4YTk5YmI1MDJm
ZGUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0RE9NSklULmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0RE9NSklULmNwcApAQCAtMjEsMTAgKzIxLDIwIEBACiAjaW5jbHVkZSAiY29u
ZmlnLmgiCiAjaW5jbHVkZSAiSlNUZXN0RE9NSklULmgiCiAKKyNpbmNsdWRlICJET01KSVRBYnN0
cmFjdEhlYXBSZXBvc2l0b3J5LmgiCisjaW5jbHVkZSAiRE9NSklUQ2hlY2tET00uaCIKKyNpbmNs
dWRlICJET01KSVRJRExDb252ZXJ0LmgiCisjaW5jbHVkZSAiRE9NSklUSURMVHlwZS5oIgorI2lu
Y2x1ZGUgIkRPTUpJVElETFR5cGVGaWx0ZXIuaCIKKyNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgi
CiAjaW5jbHVkZSAiSlNCeXRlU3RyaW5nLmgiCiAjaW5jbHVkZSAiSlNET01CaW5kaW5nLmgiCiAj
aW5jbHVkZSAiSlNET01Db25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUgIkpTRE9NQ29udmVydC5oIgor
I2luY2x1ZGUgIkpTRWxlbWVudC5oIgorI2luY2x1ZGUgIkpTTm9kZUxpc3QuaCIKKyNpbmNsdWRl
IDxpbnRlcnByZXRlci9GcmFtZVRyYWNlcnMuaD4KKyNpbmNsdWRlIDxydW50aW1lL0Vycm9yLmg+
CiAjaW5jbHVkZSA8d3RmL0dldFB0ci5oPgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5o
PgogCkBAIC0zMiw2ICs0MiwxOSBAQCB1c2luZyBuYW1lc3BhY2UgSlNDOwogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKKy8vIEZ1bmN0aW9ucworCitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwganNUZXN0RE9NSklUUHJvdG90eXBlRnVuY3Rpb25HZXRBdHRyaWJ1dGUoSlNDOjpFeGVj
U3RhdGUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCB1bnNhZmVKc1Rlc3RE
T01KSVRQcm90b3R5cGVGdW5jdGlvbkdldEF0dHJpYnV0ZShKU0M6OkV4ZWNTdGF0ZSosIEpTVGVz
dERPTUpJVCosIERPTUpJVDo6SURMSlNBcmd1bWVudFR5cGU8SURMRE9NU3RyaW5nPik7CitKU0M6
OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0RE9NSklUUHJvdG90eXBlRnVuY3Rp
b25JdGVtKEpTQzo6RXhlY1N0YXRlKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgdW5zYWZlSnNUZXN0RE9NSklUUHJvdG90eXBlRnVuY3Rpb25JdGVtKEpTQzo6RXhlY1N0YXRl
KiwgSlNUZXN0RE9NSklUKiwgRE9NSklUOjpJRExKU0FyZ3VtZW50VHlwZTxJRExVbnNpZ25lZFNo
b3J0PiwgRE9NSklUOjpJRExKU0FyZ3VtZW50VHlwZTxJRExVbnNpZ25lZFNob3J0Pik7CitKU0M6
OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0RE9NSklUUHJvdG90eXBlRnVuY3Rp
b25IYXNBdHRyaWJ1dGUoSlNDOjpFeGVjU3RhdGUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCB1bnNhZmVKc1Rlc3RET01KSVRQcm90b3R5cGVGdW5jdGlvbkhhc0F0dHJpYnV0
ZShKU0M6OkV4ZWNTdGF0ZSosIEpTVGVzdERPTUpJVCopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGpzVGVzdERPTUpJVFByb3RvdHlwZUZ1bmN0aW9uR2V0RWxlbWVudEJ5SWQo
SlNDOjpFeGVjU3RhdGUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCB1bnNh
ZmVKc1Rlc3RET01KSVRQcm90b3R5cGVGdW5jdGlvbkdldEVsZW1lbnRCeUlkKEpTQzo6RXhlY1N0
YXRlKiwgSlNUZXN0RE9NSklUKiwgRE9NSklUOjpJRExKU0FyZ3VtZW50VHlwZTxJRExET01TdHJp
bmc+KTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RET01KSVRQcm90
b3R5cGVGdW5jdGlvbkdldEVsZW1lbnRzQnlOYW1lKEpTQzo6RXhlY1N0YXRlKik7CitKU0M6OkVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgdW5zYWZlSnNUZXN0RE9NSklUUHJvdG90eXBlRnVu
Y3Rpb25HZXRFbGVtZW50c0J5TmFtZShKU0M6OkV4ZWNTdGF0ZSosIEpTVGVzdERPTUpJVCosIERP
TUpJVDo6SURMSlNBcmd1bWVudFR5cGU8SURMRE9NU3RyaW5nPik7CisKIC8vIEF0dHJpYnV0ZXMK
IAogSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RET01KSVRBbnlBdHRyKEpTQzo6RXhlY1N0YXRl
KiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwpAQCAtNzIsNiArOTUs
MTYgQEAgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RET01KSVROb2RlTnVsbGFibGVBdHRyKEpT
Qzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlMKIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0
RE9NSklUQ29uc3RydWN0b3IoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBK
U0M6OlByb3BlcnR5TmFtZSk7CiBib29sIHNldEpTVGVzdERPTUpJVENvbnN0cnVjdG9yKEpTQzo6
RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7CiAK
K3N0YXRpYyBjb25zdCBKU0M6OkRPTUpJVDo6U2lnbmF0dXJlIERPTUpJVFNpZ25hdHVyZUZvclRl
c3RET01KSVRHZXRBdHRyaWJ1dGUoKHVpbnRwdHJfdCl1bnNhZmVKc1Rlc3RET01KSVRQcm90b3R5
cGVGdW5jdGlvbkdldEF0dHJpYnV0ZSwgRE9NSklUOjpjaGVja0RPTTxUZXN0RE9NSklUPiwgSlNU
ZXN0RE9NSklUOjppbmZvKCksIEpTQzo6RE9NSklUOjpFZmZlY3Q6OmZvclJlYWQoRE9NSklUOjpB
YnN0cmFjdEhlYXBSZXBvc2l0b3J5OjpET00pLCBET01KSVQ6OklETFJlc3VsdFR5cGVGaWx0ZXI8
SURMTnVsbGFibGU8SURMRE9NU3RyaW5nPj46OnZhbHVlLCBET01KSVQ6OklETEFyZ3VtZW50VHlw
ZUZpbHRlcjxJRExET01TdHJpbmc+Ojp2YWx1ZSk7CisKK3N0YXRpYyBjb25zdCBKU0M6OkRPTUpJ
VDo6U2lnbmF0dXJlIERPTUpJVFNpZ25hdHVyZUZvclRlc3RET01KSVRJdGVtKCh1aW50cHRyX3Qp
dW5zYWZlSnNUZXN0RE9NSklUUHJvdG90eXBlRnVuY3Rpb25JdGVtLCBET01KSVQ6OmNoZWNrRE9N
PFRlc3RET01KSVQ+LCBKU1Rlc3RET01KSVQ6OmluZm8oKSwgSlNDOjpET01KSVQ6OkVmZmVjdDo6
Zm9yUmVhZChET01KSVQ6OkFic3RyYWN0SGVhcFJlcG9zaXRvcnk6OkRPTSksIERPTUpJVDo6SURM
UmVzdWx0VHlwZUZpbHRlcjxJRExET01TdHJpbmc+Ojp2YWx1ZSwgRE9NSklUOjpJRExBcmd1bWVu
dFR5cGVGaWx0ZXI8SURMVW5zaWduZWRTaG9ydD46OnZhbHVlLCBET01KSVQ6OklETEFyZ3VtZW50
VHlwZUZpbHRlcjxJRExVbnNpZ25lZFNob3J0Pjo6dmFsdWUpOworCitzdGF0aWMgY29uc3QgSlND
OjpET01KSVQ6OlNpZ25hdHVyZSBET01KSVRTaWduYXR1cmVGb3JUZXN0RE9NSklUSGFzQXR0cmli
dXRlKCh1aW50cHRyX3QpdW5zYWZlSnNUZXN0RE9NSklUUHJvdG90eXBlRnVuY3Rpb25IYXNBdHRy
aWJ1dGUsIERPTUpJVDo6Y2hlY2tET008VGVzdERPTUpJVD4sIEpTVGVzdERPTUpJVDo6aW5mbygp
LCBKU0M6OkRPTUpJVDo6RWZmZWN0Ojpmb3JSZWFkKERPTUpJVDo6QWJzdHJhY3RIZWFwUmVwb3Np
dG9yeTo6RE9NKSwgRE9NSklUOjpJRExSZXN1bHRUeXBlRmlsdGVyPElETEJvb2xlYW4+Ojp2YWx1
ZSk7CisKK3N0YXRpYyBjb25zdCBKU0M6OkRPTUpJVDo6U2lnbmF0dXJlIERPTUpJVFNpZ25hdHVy
ZUZvclRlc3RET01KSVRHZXRFbGVtZW50QnlJZCgodWludHB0cl90KXVuc2FmZUpzVGVzdERPTUpJ
VFByb3RvdHlwZUZ1bmN0aW9uR2V0RWxlbWVudEJ5SWQsIERPTUpJVDo6Y2hlY2tET008VGVzdERP
TUpJVD4sIEpTVGVzdERPTUpJVDo6aW5mbygpLCBKU0M6OkRPTUpJVDo6RWZmZWN0Ojpmb3JSZWFk
KERPTUpJVDo6QWJzdHJhY3RIZWFwUmVwb3NpdG9yeTo6RE9NKSwgRE9NSklUOjpJRExSZXN1bHRU
eXBlRmlsdGVyPElETEludGVyZmFjZTxFbGVtZW50Pj46OnZhbHVlLCBET01KSVQ6OklETEFyZ3Vt
ZW50VHlwZUZpbHRlcjxJRExET01TdHJpbmc+Ojp2YWx1ZSk7CisKK3N0YXRpYyBjb25zdCBKU0M6
OkRPTUpJVDo6U2lnbmF0dXJlIERPTUpJVFNpZ25hdHVyZUZvclRlc3RET01KSVRHZXRFbGVtZW50
c0J5TmFtZSgodWludHB0cl90KXVuc2FmZUpzVGVzdERPTUpJVFByb3RvdHlwZUZ1bmN0aW9uR2V0
RWxlbWVudHNCeU5hbWUsIERPTUpJVDo6Y2hlY2tET008VGVzdERPTUpJVD4sIEpTVGVzdERPTUpJ
VDo6aW5mbygpLCBKU0M6OkRPTUpJVDo6RWZmZWN0Ojpmb3JSZWFkKERPTUpJVDo6QWJzdHJhY3RI
ZWFwUmVwb3NpdG9yeTo6RE9NKSwgRE9NSklUOjpJRExSZXN1bHRUeXBlRmlsdGVyPElETEludGVy
ZmFjZTxOb2RlTGlzdD4+Ojp2YWx1ZSwgRE9NSklUOjpJRExBcmd1bWVudFR5cGVGaWx0ZXI8SURM
RE9NU3RyaW5nPjo6dmFsdWUpOworCiBjbGFzcyBKU1Rlc3RET01KSVRQcm90b3R5cGUgOiBwdWJs
aWMgSlNDOjpKU05vbkZpbmFsT2JqZWN0IHsKIHB1YmxpYzoKICAgICB1c2luZyBCYXNlID0gSlND
OjpKU05vbkZpbmFsT2JqZWN0OwpAQCAtMTUzLDYgKzE4NiwxMSBAQCBzdGF0aWMgY29uc3QgSGFz
aFRhYmxlVmFsdWUgSlNUZXN0RE9NSklUUHJvdG90eXBlVGFibGVWYWx1ZXNbXSA9CiAgICAgeyAi
Ynl0ZVN0cmluZ051bGxhYmxlQXR0ciIsIFJlYWRPbmx5IHwgQ3VzdG9tQWNjZXNzb3IgfCBET01K
SVRBdHRyaWJ1dGUsIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxET01KSVRH
ZXR0ZXJTZXR0ZXJHZW5lcmF0b3I+KGRvbUpJVEdldHRlclNldHRlckZvclRlc3RET01KSVRCeXRl
U3RyaW5nTnVsbGFibGVBdHRyKSwgKGludHB0cl90KSAoMCkgfSB9LAogICAgIHsgInVzdlN0cmlu
Z051bGxhYmxlQXR0ciIsIFJlYWRPbmx5IHwgQ3VzdG9tQWNjZXNzb3IgfCBET01KSVRBdHRyaWJ1
dGUsIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxET01KSVRHZXR0ZXJTZXR0
ZXJHZW5lcmF0b3I+KGRvbUpJVEdldHRlclNldHRlckZvclRlc3RET01KSVRVc3ZTdHJpbmdOdWxs
YWJsZUF0dHIpLCAoaW50cHRyX3QpICgwKSB9IH0sCiAgICAgeyAibm9kZU51bGxhYmxlQXR0ciIs
IFJlYWRPbmx5IHwgQ3VzdG9tQWNjZXNzb3IgfCBET01KSVRBdHRyaWJ1dGUsIE5vSW50cmluc2lj
LCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxET01KSVRHZXR0ZXJTZXR0ZXJHZW5lcmF0b3I+KGRv
bUpJVEdldHRlclNldHRlckZvclRlc3RET01KSVROb2RlTnVsbGFibGVBdHRyKSwgKGludHB0cl90
KSAoMCkgfSB9LAorICAgIHsgImdldEF0dHJpYnV0ZSIsIEpTQzo6RnVuY3Rpb24gfCBET01KSVRG
dW5jdGlvbiwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PE5hdGl2ZUZ1bmN0
aW9uPihqc1Rlc3RET01KSVRQcm90b3R5cGVGdW5jdGlvbkdldEF0dHJpYnV0ZSksIChpbnRwdHJf
dCkgc3RhdGljX2Nhc3Q8Y29uc3QgSlNDOjpET01KSVQ6OlNpZ25hdHVyZSo+KCZET01KSVRTaWdu
YXR1cmVGb3JUZXN0RE9NSklUR2V0QXR0cmlidXRlKSB9IH0sCisgICAgeyAiaXRlbSIsIEpTQzo6
RnVuY3Rpb24gfCBET01KSVRGdW5jdGlvbiwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRp
Y19jYXN0PE5hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RET01KSVRQcm90b3R5cGVGdW5jdGlvbkl0ZW0p
LCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PGNvbnN0IEpTQzo6RE9NSklUOjpTaWduYXR1cmUqPigm
RE9NSklUU2lnbmF0dXJlRm9yVGVzdERPTUpJVEl0ZW0pIH0gfSwKKyAgICB7ICJoYXNBdHRyaWJ1
dGUiLCBKU0M6OkZ1bmN0aW9uIHwgRE9NSklURnVuY3Rpb24sIE5vSW50cmluc2ljLCB7IChpbnRw
dHJfdClzdGF0aWNfY2FzdDxOYXRpdmVGdW5jdGlvbj4oanNUZXN0RE9NSklUUHJvdG90eXBlRnVu
Y3Rpb25IYXNBdHRyaWJ1dGUpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PGNvbnN0IEpTQzo6RE9N
SklUOjpTaWduYXR1cmUqPigmRE9NSklUU2lnbmF0dXJlRm9yVGVzdERPTUpJVEhhc0F0dHJpYnV0
ZSkgfSB9LAorICAgIHsgImdldEVsZW1lbnRCeUlkIiwgSlNDOjpGdW5jdGlvbiB8IERPTUpJVEZ1
bmN0aW9uLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8TmF0aXZlRnVuY3Rp
b24+KGpzVGVzdERPTUpJVFByb3RvdHlwZUZ1bmN0aW9uR2V0RWxlbWVudEJ5SWQpLCAoaW50cHRy
X3QpIHN0YXRpY19jYXN0PGNvbnN0IEpTQzo6RE9NSklUOjpTaWduYXR1cmUqPigmRE9NSklUU2ln
bmF0dXJlRm9yVGVzdERPTUpJVEdldEVsZW1lbnRCeUlkKSB9IH0sCisgICAgeyAiZ2V0RWxlbWVu
dHNCeU5hbWUiLCBKU0M6OkZ1bmN0aW9uIHwgRE9NSklURnVuY3Rpb24sIE5vSW50cmluc2ljLCB7
IChpbnRwdHJfdClzdGF0aWNfY2FzdDxOYXRpdmVGdW5jdGlvbj4oanNUZXN0RE9NSklUUHJvdG90
eXBlRnVuY3Rpb25HZXRFbGVtZW50c0J5TmFtZSksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8Y29u
c3QgSlNDOjpET01KSVQ6OlNpZ25hdHVyZSo+KCZET01KSVRTaWduYXR1cmVGb3JUZXN0RE9NSklU
R2V0RWxlbWVudHNCeU5hbWUpIH0gfSwKIH07CiAKIGNvbnN0IENsYXNzSW5mbyBKU1Rlc3RET01K
SVRQcm90b3R5cGU6OnNfaW5mbyA9IHsgIlRlc3RET01KSVRQcm90b3R5cGUiLCAmQmFzZTo6c19p
bmZvLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdERPTUpJVFByb3RvdHlwZSkgfTsKQEAg
LTE4NSw2ICsyMjMsMTEgQEAgdGVtcGxhdGU8PiBpbmxpbmUgSlNUZXN0RE9NSklUKiBCaW5kaW5n
Q2FsbGVyPEpTVGVzdERPTUpJVD46OmNhc3RGb3JBdHRyaWJ1dGUoRXgKICAgICByZXR1cm4ganNE
eW5hbWljRG93bmNhc3Q8SlNUZXN0RE9NSklUKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkp
OwogfQogCit0ZW1wbGF0ZTw+IGlubGluZSBKU1Rlc3RET01KSVQqIEJpbmRpbmdDYWxsZXI8SlNU
ZXN0RE9NSklUPjo6Y2FzdEZvck9wZXJhdGlvbihFeGVjU3RhdGUmIHN0YXRlKQoreworICAgIHJl
dHVybiBqc0R5bmFtaWNEb3duY2FzdDxKU1Rlc3RET01KSVQqPihzdGF0ZS50aGlzVmFsdWUoKSk7
Cit9CisKIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RET01KSVRBbnlBdHRyR2V0dGVyKEV4
ZWNTdGF0ZSYsIEpTVGVzdERPTUpJVCYsIFRocm93U2NvcGUmIHRocm93U2NvcGUpOwogCiBFbmNv
ZGVkSlNWYWx1ZSBqc1Rlc3RET01KSVRBbnlBdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRK
U1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQpAQCAtMjAyLDcgKzI0NSw3IEBAIHN0YXRp
YyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RET01KSVRBbnlBdHRyR2V0dGVyKEV4ZWNTdGF0ZSYgc3Rh
dGUsIEpTVGVzdERPTUpJVCYKIH0KIAogVGVzdERPTUpJVEFueUF0dHJET01KSVQ6OlRlc3RET01K
SVRBbnlBdHRyRE9NSklUKCkKLSAgICA6IEpTQzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIoanNUZXN0
RE9NSklUQW55QXR0ciwgbnVsbHB0ciwgSlNUZXN0RE9NSklUOjppbmZvKCksIEpTQzo6U3BlY0hl
YXBUb3ApCisgICAgOiBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVyKGpzVGVzdERPTUpJVEFueUF0
dHIsIG51bGxwdHIsIEpTVGVzdERPTUpJVDo6aW5mbygpLCBET01KSVQ6OklETFJlc3VsdFR5cGVG
aWx0ZXI8SURMQW55Pjo6dmFsdWUpCiB7CiB9CiAKQEAgLTIyOSw3ICsyNzIsNyBAQCBzdGF0aWMg
aW5saW5lIEpTVmFsdWUganNUZXN0RE9NSklUQm9vbGVhbkF0dHJHZXR0ZXIoRXhlY1N0YXRlJiBz
dGF0ZSwgSlNUZXN0RE9NSgogfQogCiBUZXN0RE9NSklUQm9vbGVhbkF0dHJET01KSVQ6OlRlc3RE
T01KSVRCb29sZWFuQXR0ckRPTUpJVCgpCi0gICAgOiBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVy
KGpzVGVzdERPTUpJVEJvb2xlYW5BdHRyLCBudWxscHRyLCBKU1Rlc3RET01KSVQ6OmluZm8oKSwg
SlNDOjpTcGVjQm9vbGVhbikKKyAgICA6IEpTQzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIoanNUZXN0
RE9NSklUQm9vbGVhbkF0dHIsIG51bGxwdHIsIEpTVGVzdERPTUpJVDo6aW5mbygpLCBET01KSVQ6
OklETFJlc3VsdFR5cGVGaWx0ZXI8SURMQm9vbGVhbj46OnZhbHVlKQogewogfQogCkBAIC0yNTYs
NyArMjk5LDcgQEAgc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdERPTUpJVEJ5dGVBdHRyR2V0
dGVyKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVGVzdERPTUpJVCYKIH0KIAogVGVzdERPTUpJVEJ5dGVB
dHRyRE9NSklUOjpUZXN0RE9NSklUQnl0ZUF0dHJET01KSVQoKQotICAgIDogSlNDOjpET01KSVQ6
OkdldHRlclNldHRlcihqc1Rlc3RET01KSVRCeXRlQXR0ciwgbnVsbHB0ciwgSlNUZXN0RE9NSklU
OjppbmZvKCksIEpTQzo6U3BlY0ludDMyT25seSkKKyAgICA6IEpTQzo6RE9NSklUOjpHZXR0ZXJT
ZXR0ZXIoanNUZXN0RE9NSklUQnl0ZUF0dHIsIG51bGxwdHIsIEpTVGVzdERPTUpJVDo6aW5mbygp
LCBET01KSVQ6OklETFJlc3VsdFR5cGVGaWx0ZXI8SURMQnl0ZT46OnZhbHVlKQogewogfQogCkBA
IC0yODMsNyArMzI2LDcgQEAgc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdERPTUpJVE9jdGV0
QXR0ckdldHRlcihFeGVjU3RhdGUmIHN0YXRlLCBKU1Rlc3RET01KSVQKIH0KIAogVGVzdERPTUpJ
VE9jdGV0QXR0ckRPTUpJVDo6VGVzdERPTUpJVE9jdGV0QXR0ckRPTUpJVCgpCi0gICAgOiBKU0M6
OkRPTUpJVDo6R2V0dGVyU2V0dGVyKGpzVGVzdERPTUpJVE9jdGV0QXR0ciwgbnVsbHB0ciwgSlNU
ZXN0RE9NSklUOjppbmZvKCksIEpTQzo6U3BlY0ludDMyT25seSkKKyAgICA6IEpTQzo6RE9NSklU
OjpHZXR0ZXJTZXR0ZXIoanNUZXN0RE9NSklUT2N0ZXRBdHRyLCBudWxscHRyLCBKU1Rlc3RET01K
SVQ6OmluZm8oKSwgRE9NSklUOjpJRExSZXN1bHRUeXBlRmlsdGVyPElETE9jdGV0Pjo6dmFsdWUp
CiB7CiB9CiAKQEAgLTMxMCw3ICszNTMsNyBAQCBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0
RE9NSklUU2hvcnRBdHRyR2V0dGVyKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVGVzdERPTUpJVAogfQog
CiBUZXN0RE9NSklUU2hvcnRBdHRyRE9NSklUOjpUZXN0RE9NSklUU2hvcnRBdHRyRE9NSklUKCkK
LSAgICA6IEpTQzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIoanNUZXN0RE9NSklUU2hvcnRBdHRyLCBu
dWxscHRyLCBKU1Rlc3RET01KSVQ6OmluZm8oKSwgSlNDOjpTcGVjSW50MzJPbmx5KQorICAgIDog
SlNDOjpET01KSVQ6OkdldHRlclNldHRlcihqc1Rlc3RET01KSVRTaG9ydEF0dHIsIG51bGxwdHIs
IEpTVGVzdERPTUpJVDo6aW5mbygpLCBET01KSVQ6OklETFJlc3VsdFR5cGVGaWx0ZXI8SURMU2hv
cnQ+Ojp2YWx1ZSkKIHsKIH0KIApAQCAtMzM3LDcgKzM4MCw3IEBAIHN0YXRpYyBpbmxpbmUgSlNW
YWx1ZSBqc1Rlc3RET01KSVRVbnNpZ25lZFNob3J0QXR0ckdldHRlcihFeGVjU3RhdGUmIHN0YXRl
LCBKU1RlCiB9CiAKIFRlc3RET01KSVRVbnNpZ25lZFNob3J0QXR0ckRPTUpJVDo6VGVzdERPTUpJ
VFVuc2lnbmVkU2hvcnRBdHRyRE9NSklUKCkKLSAgICA6IEpTQzo6RE9NSklUOjpHZXR0ZXJTZXR0
ZXIoanNUZXN0RE9NSklUVW5zaWduZWRTaG9ydEF0dHIsIG51bGxwdHIsIEpTVGVzdERPTUpJVDo6
aW5mbygpLCBKU0M6OlNwZWNJbnQzMk9ubHkpCisgICAgOiBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0
dGVyKGpzVGVzdERPTUpJVFVuc2lnbmVkU2hvcnRBdHRyLCBudWxscHRyLCBKU1Rlc3RET01KSVQ6
OmluZm8oKSwgRE9NSklUOjpJRExSZXN1bHRUeXBlRmlsdGVyPElETFVuc2lnbmVkU2hvcnQ+Ojp2
YWx1ZSkKIHsKIH0KIApAQCAtMzY0LDcgKzQwNyw3IEBAIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBq
c1Rlc3RET01KSVRMb25nQXR0ckdldHRlcihFeGVjU3RhdGUmIHN0YXRlLCBKU1Rlc3RET01KSVQm
CiB9CiAKIFRlc3RET01KSVRMb25nQXR0ckRPTUpJVDo6VGVzdERPTUpJVExvbmdBdHRyRE9NSklU
KCkKLSAgICA6IEpTQzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIoanNUZXN0RE9NSklUTG9uZ0F0dHIs
IG51bGxwdHIsIEpTVGVzdERPTUpJVDo6aW5mbygpLCBKU0M6OlNwZWNJbnQzMk9ubHkpCisgICAg
OiBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVyKGpzVGVzdERPTUpJVExvbmdBdHRyLCBudWxscHRy
LCBKU1Rlc3RET01KSVQ6OmluZm8oKSwgRE9NSklUOjpJRExSZXN1bHRUeXBlRmlsdGVyPElETExv
bmc+Ojp2YWx1ZSkKIHsKIH0KIApAQCAtMzkxLDcgKzQzNCw3IEBAIHN0YXRpYyBpbmxpbmUgSlNW
YWx1ZSBqc1Rlc3RET01KSVRVbnNpZ25lZExvbmdBdHRyR2V0dGVyKEV4ZWNTdGF0ZSYgc3RhdGUs
IEpTVGVzCiB9CiAKIFRlc3RET01KSVRVbnNpZ25lZExvbmdBdHRyRE9NSklUOjpUZXN0RE9NSklU
VW5zaWduZWRMb25nQXR0ckRPTUpJVCgpCi0gICAgOiBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVy
KGpzVGVzdERPTUpJVFVuc2lnbmVkTG9uZ0F0dHIsIG51bGxwdHIsIEpTVGVzdERPTUpJVDo6aW5m
bygpLCBKU0M6OlNwZWNCeXRlY29kZU51bWJlcikKKyAgICA6IEpTQzo6RE9NSklUOjpHZXR0ZXJT
ZXR0ZXIoanNUZXN0RE9NSklUVW5zaWduZWRMb25nQXR0ciwgbnVsbHB0ciwgSlNUZXN0RE9NSklU
OjppbmZvKCksIERPTUpJVDo6SURMUmVzdWx0VHlwZUZpbHRlcjxJRExVbnNpZ25lZExvbmc+Ojp2
YWx1ZSkKIHsKIH0KIApAQCAtNDE4LDcgKzQ2MSw3IEBAIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBq
c1Rlc3RET01KSVRMb25nTG9uZ0F0dHJHZXR0ZXIoRXhlY1N0YXRlJiBzdGF0ZSwgSlNUZXN0RE9N
CiB9CiAKIFRlc3RET01KSVRMb25nTG9uZ0F0dHJET01KSVQ6OlRlc3RET01KSVRMb25nTG9uZ0F0
dHJET01KSVQoKQotICAgIDogSlNDOjpET01KSVQ6OkdldHRlclNldHRlcihqc1Rlc3RET01KSVRM
b25nTG9uZ0F0dHIsIG51bGxwdHIsIEpTVGVzdERPTUpJVDo6aW5mbygpLCBKU0M6OlNwZWNCeXRl
Y29kZU51bWJlcikKKyAgICA6IEpTQzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIoanNUZXN0RE9NSklU
TG9uZ0xvbmdBdHRyLCBudWxscHRyLCBKU1Rlc3RET01KSVQ6OmluZm8oKSwgRE9NSklUOjpJRExS
ZXN1bHRUeXBlRmlsdGVyPElETExvbmdMb25nPjo6dmFsdWUpCiB7CiB9CiAKQEAgLTQ0NSw3ICs0
ODgsNyBAQCBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0RE9NSklUVW5zaWduZWRMb25nTG9u
Z0F0dHJHZXR0ZXIoRXhlY1N0YXRlJiBzdGF0ZSwgSgogfQogCiBUZXN0RE9NSklUVW5zaWduZWRM
b25nTG9uZ0F0dHJET01KSVQ6OlRlc3RET01KSVRVbnNpZ25lZExvbmdMb25nQXR0ckRPTUpJVCgp
Ci0gICAgOiBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVyKGpzVGVzdERPTUpJVFVuc2lnbmVkTG9u
Z0xvbmdBdHRyLCBudWxscHRyLCBKU1Rlc3RET01KSVQ6OmluZm8oKSwgSlNDOjpTcGVjQnl0ZWNv
ZGVOdW1iZXIpCisgICAgOiBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVyKGpzVGVzdERPTUpJVFVu
c2lnbmVkTG9uZ0xvbmdBdHRyLCBudWxscHRyLCBKU1Rlc3RET01KSVQ6OmluZm8oKSwgRE9NSklU
OjpJRExSZXN1bHRUeXBlRmlsdGVyPElETFVuc2lnbmVkTG9uZ0xvbmc+Ojp2YWx1ZSkKIHsKIH0K
IApAQCAtNDcyLDcgKzUxNSw3IEBAIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RET01KSVRG
bG9hdEF0dHJHZXR0ZXIoRXhlY1N0YXRlJiBzdGF0ZSwgSlNUZXN0RE9NSklUCiB9CiAKIFRlc3RE
T01KSVRGbG9hdEF0dHJET01KSVQ6OlRlc3RET01KSVRGbG9hdEF0dHJET01KSVQoKQotICAgIDog
SlNDOjpET01KSVQ6OkdldHRlclNldHRlcihqc1Rlc3RET01KSVRGbG9hdEF0dHIsIG51bGxwdHIs
IEpTVGVzdERPTUpJVDo6aW5mbygpLCBKU0M6OlNwZWNCeXRlY29kZU51bWJlcikKKyAgICA6IEpT
Qzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIoanNUZXN0RE9NSklURmxvYXRBdHRyLCBudWxscHRyLCBK
U1Rlc3RET01KSVQ6OmluZm8oKSwgRE9NSklUOjpJRExSZXN1bHRUeXBlRmlsdGVyPElETEZsb2F0
Pjo6dmFsdWUpCiB7CiB9CiAKQEAgLTQ5OSw3ICs1NDIsNyBAQCBzdGF0aWMgaW5saW5lIEpTVmFs
dWUganNUZXN0RE9NSklUVW5yZXN0cmljdGVkRmxvYXRBdHRyR2V0dGVyKEV4ZWNTdGF0ZSYgc3Rh
dGUsCiB9CiAKIFRlc3RET01KSVRVbnJlc3RyaWN0ZWRGbG9hdEF0dHJET01KSVQ6OlRlc3RET01K
SVRVbnJlc3RyaWN0ZWRGbG9hdEF0dHJET01KSVQoKQotICAgIDogSlNDOjpET01KSVQ6OkdldHRl
clNldHRlcihqc1Rlc3RET01KSVRVbnJlc3RyaWN0ZWRGbG9hdEF0dHIsIG51bGxwdHIsIEpTVGVz
dERPTUpJVDo6aW5mbygpLCBKU0M6OlNwZWNCeXRlY29kZU51bWJlcikKKyAgICA6IEpTQzo6RE9N
SklUOjpHZXR0ZXJTZXR0ZXIoanNUZXN0RE9NSklUVW5yZXN0cmljdGVkRmxvYXRBdHRyLCBudWxs
cHRyLCBKU1Rlc3RET01KSVQ6OmluZm8oKSwgRE9NSklUOjpJRExSZXN1bHRUeXBlRmlsdGVyPElE
TFVucmVzdHJpY3RlZEZsb2F0Pjo6dmFsdWUpCiB7CiB9CiAKQEAgLTUyNiw3ICs1NjksNyBAQCBz
dGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0RE9NSklURG91YmxlQXR0ckdldHRlcihFeGVjU3Rh
dGUmIHN0YXRlLCBKU1Rlc3RET01KSQogfQogCiBUZXN0RE9NSklURG91YmxlQXR0ckRPTUpJVDo6
VGVzdERPTUpJVERvdWJsZUF0dHJET01KSVQoKQotICAgIDogSlNDOjpET01KSVQ6OkdldHRlclNl
dHRlcihqc1Rlc3RET01KSVREb3VibGVBdHRyLCBudWxscHRyLCBKU1Rlc3RET01KSVQ6OmluZm8o
KSwgSlNDOjpTcGVjQnl0ZWNvZGVOdW1iZXIpCisgICAgOiBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0
dGVyKGpzVGVzdERPTUpJVERvdWJsZUF0dHIsIG51bGxwdHIsIEpTVGVzdERPTUpJVDo6aW5mbygp
LCBET01KSVQ6OklETFJlc3VsdFR5cGVGaWx0ZXI8SURMRG91YmxlPjo6dmFsdWUpCiB7CiB9CiAK
QEAgLTU1Myw3ICs1OTYsNyBAQCBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0RE9NSklUVW5y
ZXN0cmljdGVkRG91YmxlQXR0ckdldHRlcihFeGVjU3RhdGUmIHN0YXRlLAogfQogCiBUZXN0RE9N
SklUVW5yZXN0cmljdGVkRG91YmxlQXR0ckRPTUpJVDo6VGVzdERPTUpJVFVucmVzdHJpY3RlZERv
dWJsZUF0dHJET01KSVQoKQotICAgIDogSlNDOjpET01KSVQ6OkdldHRlclNldHRlcihqc1Rlc3RE
T01KSVRVbnJlc3RyaWN0ZWREb3VibGVBdHRyLCBudWxscHRyLCBKU1Rlc3RET01KSVQ6OmluZm8o
KSwgSlNDOjpTcGVjQnl0ZWNvZGVOdW1iZXIpCisgICAgOiBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0
dGVyKGpzVGVzdERPTUpJVFVucmVzdHJpY3RlZERvdWJsZUF0dHIsIG51bGxwdHIsIEpTVGVzdERP
TUpJVDo6aW5mbygpLCBET01KSVQ6OklETFJlc3VsdFR5cGVGaWx0ZXI8SURMVW5yZXN0cmljdGVk
RG91YmxlPjo6dmFsdWUpCiB7CiB9CiAKQEAgLTU4MCw3ICs2MjMsNyBAQCBzdGF0aWMgaW5saW5l
IEpTVmFsdWUganNUZXN0RE9NSklURG9tU3RyaW5nQXR0ckdldHRlcihFeGVjU3RhdGUmIHN0YXRl
LCBKU1Rlc3RETwogfQogCiBUZXN0RE9NSklURG9tU3RyaW5nQXR0ckRPTUpJVDo6VGVzdERPTUpJ
VERvbVN0cmluZ0F0dHJET01KSVQoKQotICAgIDogSlNDOjpET01KSVQ6OkdldHRlclNldHRlcihq
c1Rlc3RET01KSVREb21TdHJpbmdBdHRyLCBudWxscHRyLCBKU1Rlc3RET01KSVQ6OmluZm8oKSwg
SlNDOjpTcGVjU3RyaW5nKQorICAgIDogSlNDOjpET01KSVQ6OkdldHRlclNldHRlcihqc1Rlc3RE
T01KSVREb21TdHJpbmdBdHRyLCBudWxscHRyLCBKU1Rlc3RET01KSVQ6OmluZm8oKSwgRE9NSklU
OjpJRExSZXN1bHRUeXBlRmlsdGVyPElETERPTVN0cmluZz46OnZhbHVlKQogewogfQogCkBAIC02
MDcsNyArNjUwLDcgQEAgc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdERPTUpJVEJ5dGVTdHJp
bmdBdHRyR2V0dGVyKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVGVzdEQKIH0KIAogVGVzdERPTUpJVEJ5
dGVTdHJpbmdBdHRyRE9NSklUOjpUZXN0RE9NSklUQnl0ZVN0cmluZ0F0dHJET01KSVQoKQotICAg
IDogSlNDOjpET01KSVQ6OkdldHRlclNldHRlcihqc1Rlc3RET01KSVRCeXRlU3RyaW5nQXR0ciwg
bnVsbHB0ciwgSlNUZXN0RE9NSklUOjppbmZvKCksIEpTQzo6U3BlY1N0cmluZykKKyAgICA6IEpT
Qzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIoanNUZXN0RE9NSklUQnl0ZVN0cmluZ0F0dHIsIG51bGxw
dHIsIEpTVGVzdERPTUpJVDo6aW5mbygpLCBET01KSVQ6OklETFJlc3VsdFR5cGVGaWx0ZXI8SURM
Qnl0ZVN0cmluZz46OnZhbHVlKQogewogfQogCkBAIC02MzQsNyArNjc3LDcgQEAgc3RhdGljIGlu
bGluZSBKU1ZhbHVlIGpzVGVzdERPTUpJVFVzdlN0cmluZ0F0dHJHZXR0ZXIoRXhlY1N0YXRlJiBz
dGF0ZSwgSlNUZXN0RE8KIH0KIAogVGVzdERPTUpJVFVzdlN0cmluZ0F0dHJET01KSVQ6OlRlc3RE
T01KSVRVc3ZTdHJpbmdBdHRyRE9NSklUKCkKLSAgICA6IEpTQzo6RE9NSklUOjpHZXR0ZXJTZXR0
ZXIoanNUZXN0RE9NSklUVXN2U3RyaW5nQXR0ciwgbnVsbHB0ciwgSlNUZXN0RE9NSklUOjppbmZv
KCksIEpTQzo6U3BlY1N0cmluZykKKyAgICA6IEpTQzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIoanNU
ZXN0RE9NSklUVXN2U3RyaW5nQXR0ciwgbnVsbHB0ciwgSlNUZXN0RE9NSklUOjppbmZvKCksIERP
TUpJVDo6SURMUmVzdWx0VHlwZUZpbHRlcjxJRExVU1ZTdHJpbmc+Ojp2YWx1ZSkKIHsKIH0KIApA
QCAtNjYxLDcgKzcwNCw3IEBAIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RET01KSVROb2Rl
QXR0ckdldHRlcihFeGVjU3RhdGUmIHN0YXRlLCBKU1Rlc3RET01KSVQmCiB9CiAKIFRlc3RET01K
SVROb2RlQXR0ckRPTUpJVDo6VGVzdERPTUpJVE5vZGVBdHRyRE9NSklUKCkKLSAgICA6IEpTQzo6
RE9NSklUOjpHZXR0ZXJTZXR0ZXIoanNUZXN0RE9NSklUTm9kZUF0dHIsIG51bGxwdHIsIEpTVGVz
dERPTUpJVDo6aW5mbygpLCBTcGVjSGVhcFRvcCkKKyAgICA6IEpTQzo6RE9NSklUOjpHZXR0ZXJT
ZXR0ZXIoanNUZXN0RE9NSklUTm9kZUF0dHIsIG51bGxwdHIsIEpTVGVzdERPTUpJVDo6aW5mbygp
LCBET01KSVQ6OklETFJlc3VsdFR5cGVGaWx0ZXI8SURMSW50ZXJmYWNlPE5vZGU+Pjo6dmFsdWUp
CiB7CiB9CiAKQEAgLTY4OCw3ICs3MzEsNyBAQCBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0
RE9NSklUQm9vbGVhbk51bGxhYmxlQXR0ckdldHRlcihFeGVjU3RhdGUmIHN0YXRlLCBKUwogfQog
CiBUZXN0RE9NSklUQm9vbGVhbk51bGxhYmxlQXR0ckRPTUpJVDo6VGVzdERPTUpJVEJvb2xlYW5O
dWxsYWJsZUF0dHJET01KSVQoKQotICAgIDogSlNDOjpET01KSVQ6OkdldHRlclNldHRlcihqc1Rl
c3RET01KSVRCb29sZWFuTnVsbGFibGVBdHRyLCBudWxscHRyLCBKU1Rlc3RET01KSVQ6OmluZm8o
KSwgKEpTQzo6U3BlY0Jvb2xlYW4gfCBKU0M6OlNwZWNPdGhlcikpCisgICAgOiBKU0M6OkRPTUpJ
VDo6R2V0dGVyU2V0dGVyKGpzVGVzdERPTUpJVEJvb2xlYW5OdWxsYWJsZUF0dHIsIG51bGxwdHIs
IEpTVGVzdERPTUpJVDo6aW5mbygpLCBET01KSVQ6OklETFJlc3VsdFR5cGVGaWx0ZXI8SURMTnVs
bGFibGU8SURMQm9vbGVhbj4+Ojp2YWx1ZSkKIHsKIH0KIApAQCAtNzE1LDcgKzc1OCw3IEBAIHN0
YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RET01KSVRCeXRlTnVsbGFibGVBdHRyR2V0dGVyKEV4
ZWNTdGF0ZSYgc3RhdGUsIEpTVGVzCiB9CiAKIFRlc3RET01KSVRCeXRlTnVsbGFibGVBdHRyRE9N
SklUOjpUZXN0RE9NSklUQnl0ZU51bGxhYmxlQXR0ckRPTUpJVCgpCi0gICAgOiBKU0M6OkRPTUpJ
VDo6R2V0dGVyU2V0dGVyKGpzVGVzdERPTUpJVEJ5dGVOdWxsYWJsZUF0dHIsIG51bGxwdHIsIEpT
VGVzdERPTUpJVDo6aW5mbygpLCAoSlNDOjpTcGVjSW50MzJPbmx5IHwgSlNDOjpTcGVjT3RoZXIp
KQorICAgIDogSlNDOjpET01KSVQ6OkdldHRlclNldHRlcihqc1Rlc3RET01KSVRCeXRlTnVsbGFi
bGVBdHRyLCBudWxscHRyLCBKU1Rlc3RET01KSVQ6OmluZm8oKSwgRE9NSklUOjpJRExSZXN1bHRU
eXBlRmlsdGVyPElETE51bGxhYmxlPElETEJ5dGU+Pjo6dmFsdWUpCiB7CiB9CiAKQEAgLTc0Miw3
ICs3ODUsNyBAQCBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0RE9NSklUT2N0ZXROdWxsYWJs
ZUF0dHJHZXR0ZXIoRXhlY1N0YXRlJiBzdGF0ZSwgSlNUZQogfQogCiBUZXN0RE9NSklUT2N0ZXRO
dWxsYWJsZUF0dHJET01KSVQ6OlRlc3RET01KSVRPY3RldE51bGxhYmxlQXR0ckRPTUpJVCgpCi0g
ICAgOiBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVyKGpzVGVzdERPTUpJVE9jdGV0TnVsbGFibGVB
dHRyLCBudWxscHRyLCBKU1Rlc3RET01KSVQ6OmluZm8oKSwgKEpTQzo6U3BlY0ludDMyT25seSB8
IEpTQzo6U3BlY090aGVyKSkKKyAgICA6IEpTQzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIoanNUZXN0
RE9NSklUT2N0ZXROdWxsYWJsZUF0dHIsIG51bGxwdHIsIEpTVGVzdERPTUpJVDo6aW5mbygpLCBE
T01KSVQ6OklETFJlc3VsdFR5cGVGaWx0ZXI8SURMTnVsbGFibGU8SURMT2N0ZXQ+Pjo6dmFsdWUp
CiB7CiB9CiAKQEAgLTc2OSw3ICs4MTIsNyBAQCBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0
RE9NSklUU2hvcnROdWxsYWJsZUF0dHJHZXR0ZXIoRXhlY1N0YXRlJiBzdGF0ZSwgSlNUZQogfQog
CiBUZXN0RE9NSklUU2hvcnROdWxsYWJsZUF0dHJET01KSVQ6OlRlc3RET01KSVRTaG9ydE51bGxh
YmxlQXR0ckRPTUpJVCgpCi0gICAgOiBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVyKGpzVGVzdERP
TUpJVFNob3J0TnVsbGFibGVBdHRyLCBudWxscHRyLCBKU1Rlc3RET01KSVQ6OmluZm8oKSwgKEpT
Qzo6U3BlY0ludDMyT25seSB8IEpTQzo6U3BlY090aGVyKSkKKyAgICA6IEpTQzo6RE9NSklUOjpH
ZXR0ZXJTZXR0ZXIoanNUZXN0RE9NSklUU2hvcnROdWxsYWJsZUF0dHIsIG51bGxwdHIsIEpTVGVz
dERPTUpJVDo6aW5mbygpLCBET01KSVQ6OklETFJlc3VsdFR5cGVGaWx0ZXI8SURMTnVsbGFibGU8
SURMU2hvcnQ+Pjo6dmFsdWUpCiB7CiB9CiAKQEAgLTc5Niw3ICs4MzksNyBAQCBzdGF0aWMgaW5s
aW5lIEpTVmFsdWUganNUZXN0RE9NSklUVW5zaWduZWRTaG9ydE51bGxhYmxlQXR0ckdldHRlcihF
eGVjU3RhdGUmIHN0YQogfQogCiBUZXN0RE9NSklUVW5zaWduZWRTaG9ydE51bGxhYmxlQXR0ckRP
TUpJVDo6VGVzdERPTUpJVFVuc2lnbmVkU2hvcnROdWxsYWJsZUF0dHJET01KSVQoKQotICAgIDog
SlNDOjpET01KSVQ6OkdldHRlclNldHRlcihqc1Rlc3RET01KSVRVbnNpZ25lZFNob3J0TnVsbGFi
bGVBdHRyLCBudWxscHRyLCBKU1Rlc3RET01KSVQ6OmluZm8oKSwgKEpTQzo6U3BlY0ludDMyT25s
eSB8IEpTQzo6U3BlY090aGVyKSkKKyAgICA6IEpTQzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIoanNU
ZXN0RE9NSklUVW5zaWduZWRTaG9ydE51bGxhYmxlQXR0ciwgbnVsbHB0ciwgSlNUZXN0RE9NSklU
OjppbmZvKCksIERPTUpJVDo6SURMUmVzdWx0VHlwZUZpbHRlcjxJRExOdWxsYWJsZTxJRExVbnNp
Z25lZFNob3J0Pj46OnZhbHVlKQogewogfQogCkBAIC04MjMsNyArODY2LDcgQEAgc3RhdGljIGlu
bGluZSBKU1ZhbHVlIGpzVGVzdERPTUpJVExvbmdOdWxsYWJsZUF0dHJHZXR0ZXIoRXhlY1N0YXRl
JiBzdGF0ZSwgSlNUZXMKIH0KIAogVGVzdERPTUpJVExvbmdOdWxsYWJsZUF0dHJET01KSVQ6OlRl
c3RET01KSVRMb25nTnVsbGFibGVBdHRyRE9NSklUKCkKLSAgICA6IEpTQzo6RE9NSklUOjpHZXR0
ZXJTZXR0ZXIoanNUZXN0RE9NSklUTG9uZ051bGxhYmxlQXR0ciwgbnVsbHB0ciwgSlNUZXN0RE9N
SklUOjppbmZvKCksIChKU0M6OlNwZWNJbnQzMk9ubHkgfCBKU0M6OlNwZWNPdGhlcikpCisgICAg
OiBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVyKGpzVGVzdERPTUpJVExvbmdOdWxsYWJsZUF0dHIs
IG51bGxwdHIsIEpTVGVzdERPTUpJVDo6aW5mbygpLCBET01KSVQ6OklETFJlc3VsdFR5cGVGaWx0
ZXI8SURMTnVsbGFibGU8SURMTG9uZz4+Ojp2YWx1ZSkKIHsKIH0KIApAQCAtODUwLDcgKzg5Myw3
IEBAIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RET01KSVRVbnNpZ25lZExvbmdOdWxsYWJs
ZUF0dHJHZXR0ZXIoRXhlY1N0YXRlJiBzdGF0CiB9CiAKIFRlc3RET01KSVRVbnNpZ25lZExvbmdO
dWxsYWJsZUF0dHJET01KSVQ6OlRlc3RET01KSVRVbnNpZ25lZExvbmdOdWxsYWJsZUF0dHJET01K
SVQoKQotICAgIDogSlNDOjpET01KSVQ6OkdldHRlclNldHRlcihqc1Rlc3RET01KSVRVbnNpZ25l
ZExvbmdOdWxsYWJsZUF0dHIsIG51bGxwdHIsIEpTVGVzdERPTUpJVDo6aW5mbygpLCAoSlNDOjpT
cGVjQnl0ZWNvZGVOdW1iZXIgfCBKU0M6OlNwZWNPdGhlcikpCisgICAgOiBKU0M6OkRPTUpJVDo6
R2V0dGVyU2V0dGVyKGpzVGVzdERPTUpJVFVuc2lnbmVkTG9uZ051bGxhYmxlQXR0ciwgbnVsbHB0
ciwgSlNUZXN0RE9NSklUOjppbmZvKCksIERPTUpJVDo6SURMUmVzdWx0VHlwZUZpbHRlcjxJRExO
dWxsYWJsZTxJRExVbnNpZ25lZExvbmc+Pjo6dmFsdWUpCiB7CiB9CiAKQEAgLTg3Nyw3ICs5MjAs
NyBAQCBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0RE9NSklUTG9uZ0xvbmdOdWxsYWJsZUF0
dHJHZXR0ZXIoRXhlY1N0YXRlJiBzdGF0ZSwgSgogfQogCiBUZXN0RE9NSklUTG9uZ0xvbmdOdWxs
YWJsZUF0dHJET01KSVQ6OlRlc3RET01KSVRMb25nTG9uZ051bGxhYmxlQXR0ckRPTUpJVCgpCi0g
ICAgOiBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVyKGpzVGVzdERPTUpJVExvbmdMb25nTnVsbGFi
bGVBdHRyLCBudWxscHRyLCBKU1Rlc3RET01KSVQ6OmluZm8oKSwgKEpTQzo6U3BlY0J5dGVjb2Rl
TnVtYmVyIHwgSlNDOjpTcGVjT3RoZXIpKQorICAgIDogSlNDOjpET01KSVQ6OkdldHRlclNldHRl
cihqc1Rlc3RET01KSVRMb25nTG9uZ051bGxhYmxlQXR0ciwgbnVsbHB0ciwgSlNUZXN0RE9NSklU
OjppbmZvKCksIERPTUpJVDo6SURMUmVzdWx0VHlwZUZpbHRlcjxJRExOdWxsYWJsZTxJRExMb25n
TG9uZz4+Ojp2YWx1ZSkKIHsKIH0KIApAQCAtOTA0LDcgKzk0Nyw3IEBAIHN0YXRpYyBpbmxpbmUg
SlNWYWx1ZSBqc1Rlc3RET01KSVRVbnNpZ25lZExvbmdMb25nTnVsbGFibGVBdHRyR2V0dGVyKEV4
ZWNTdGF0ZSYKIH0KIAogVGVzdERPTUpJVFVuc2lnbmVkTG9uZ0xvbmdOdWxsYWJsZUF0dHJET01K
SVQ6OlRlc3RET01KSVRVbnNpZ25lZExvbmdMb25nTnVsbGFibGVBdHRyRE9NSklUKCkKLSAgICA6
IEpTQzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIoanNUZXN0RE9NSklUVW5zaWduZWRMb25nTG9uZ051
bGxhYmxlQXR0ciwgbnVsbHB0ciwgSlNUZXN0RE9NSklUOjppbmZvKCksIChKU0M6OlNwZWNCeXRl
Y29kZU51bWJlciB8IEpTQzo6U3BlY090aGVyKSkKKyAgICA6IEpTQzo6RE9NSklUOjpHZXR0ZXJT
ZXR0ZXIoanNUZXN0RE9NSklUVW5zaWduZWRMb25nTG9uZ051bGxhYmxlQXR0ciwgbnVsbHB0ciwg
SlNUZXN0RE9NSklUOjppbmZvKCksIERPTUpJVDo6SURMUmVzdWx0VHlwZUZpbHRlcjxJRExOdWxs
YWJsZTxJRExVbnNpZ25lZExvbmdMb25nPj46OnZhbHVlKQogewogfQogCkBAIC05MzEsNyArOTc0
LDcgQEAgc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdERPTUpJVEZsb2F0TnVsbGFibGVBdHRy
R2V0dGVyKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVGUKIH0KIAogVGVzdERPTUpJVEZsb2F0TnVsbGFi
bGVBdHRyRE9NSklUOjpUZXN0RE9NSklURmxvYXROdWxsYWJsZUF0dHJET01KSVQoKQotICAgIDog
SlNDOjpET01KSVQ6OkdldHRlclNldHRlcihqc1Rlc3RET01KSVRGbG9hdE51bGxhYmxlQXR0ciwg
bnVsbHB0ciwgSlNUZXN0RE9NSklUOjppbmZvKCksIChKU0M6OlNwZWNCeXRlY29kZU51bWJlciB8
IEpTQzo6U3BlY090aGVyKSkKKyAgICA6IEpTQzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIoanNUZXN0
RE9NSklURmxvYXROdWxsYWJsZUF0dHIsIG51bGxwdHIsIEpTVGVzdERPTUpJVDo6aW5mbygpLCBE
T01KSVQ6OklETFJlc3VsdFR5cGVGaWx0ZXI8SURMTnVsbGFibGU8SURMRmxvYXQ+Pjo6dmFsdWUp
CiB7CiB9CiAKQEAgLTk1OCw3ICsxMDAxLDcgQEAgc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVz
dERPTUpJVFVucmVzdHJpY3RlZEZsb2F0TnVsbGFibGVBdHRyR2V0dGVyKEV4ZWNTdGF0ZSYKIH0K
IAogVGVzdERPTUpJVFVucmVzdHJpY3RlZEZsb2F0TnVsbGFibGVBdHRyRE9NSklUOjpUZXN0RE9N
SklUVW5yZXN0cmljdGVkRmxvYXROdWxsYWJsZUF0dHJET01KSVQoKQotICAgIDogSlNDOjpET01K
SVQ6OkdldHRlclNldHRlcihqc1Rlc3RET01KSVRVbnJlc3RyaWN0ZWRGbG9hdE51bGxhYmxlQXR0
ciwgbnVsbHB0ciwgSlNUZXN0RE9NSklUOjppbmZvKCksIChKU0M6OlNwZWNCeXRlY29kZU51bWJl
ciB8IEpTQzo6U3BlY090aGVyKSkKKyAgICA6IEpTQzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIoanNU
ZXN0RE9NSklUVW5yZXN0cmljdGVkRmxvYXROdWxsYWJsZUF0dHIsIG51bGxwdHIsIEpTVGVzdERP
TUpJVDo6aW5mbygpLCBET01KSVQ6OklETFJlc3VsdFR5cGVGaWx0ZXI8SURMTnVsbGFibGU8SURM
VW5yZXN0cmljdGVkRmxvYXQ+Pjo6dmFsdWUpCiB7CiB9CiAKQEAgLTk4NSw3ICsxMDI4LDcgQEAg
c3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdERPTUpJVERvdWJsZU51bGxhYmxlQXR0ckdldHRl
cihFeGVjU3RhdGUmIHN0YXRlLCBKU1QKIH0KIAogVGVzdERPTUpJVERvdWJsZU51bGxhYmxlQXR0
ckRPTUpJVDo6VGVzdERPTUpJVERvdWJsZU51bGxhYmxlQXR0ckRPTUpJVCgpCi0gICAgOiBKU0M6
OkRPTUpJVDo6R2V0dGVyU2V0dGVyKGpzVGVzdERPTUpJVERvdWJsZU51bGxhYmxlQXR0ciwgbnVs
bHB0ciwgSlNUZXN0RE9NSklUOjppbmZvKCksIChKU0M6OlNwZWNCeXRlY29kZU51bWJlciB8IEpT
Qzo6U3BlY090aGVyKSkKKyAgICA6IEpTQzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIoanNUZXN0RE9N
SklURG91YmxlTnVsbGFibGVBdHRyLCBudWxscHRyLCBKU1Rlc3RET01KSVQ6OmluZm8oKSwgRE9N
SklUOjpJRExSZXN1bHRUeXBlRmlsdGVyPElETE51bGxhYmxlPElETERvdWJsZT4+Ojp2YWx1ZSkK
IHsKIH0KIApAQCAtMTAxMiw3ICsxMDU1LDcgQEAgc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVz
dERPTUpJVFVucmVzdHJpY3RlZERvdWJsZU51bGxhYmxlQXR0ckdldHRlcihFeGVjU3RhdGUKIH0K
IAogVGVzdERPTUpJVFVucmVzdHJpY3RlZERvdWJsZU51bGxhYmxlQXR0ckRPTUpJVDo6VGVzdERP
TUpJVFVucmVzdHJpY3RlZERvdWJsZU51bGxhYmxlQXR0ckRPTUpJVCgpCi0gICAgOiBKU0M6OkRP
TUpJVDo6R2V0dGVyU2V0dGVyKGpzVGVzdERPTUpJVFVucmVzdHJpY3RlZERvdWJsZU51bGxhYmxl
QXR0ciwgbnVsbHB0ciwgSlNUZXN0RE9NSklUOjppbmZvKCksIChKU0M6OlNwZWNCeXRlY29kZU51
bWJlciB8IEpTQzo6U3BlY090aGVyKSkKKyAgICA6IEpTQzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIo
anNUZXN0RE9NSklUVW5yZXN0cmljdGVkRG91YmxlTnVsbGFibGVBdHRyLCBudWxscHRyLCBKU1Rl
c3RET01KSVQ6OmluZm8oKSwgRE9NSklUOjpJRExSZXN1bHRUeXBlRmlsdGVyPElETE51bGxhYmxl
PElETFVucmVzdHJpY3RlZERvdWJsZT4+Ojp2YWx1ZSkKIHsKIH0KIApAQCAtMTAzOSw3ICsxMDgy
LDcgQEAgc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdERPTUpJVERvbVN0cmluZ051bGxhYmxl
QXR0ckdldHRlcihFeGVjU3RhdGUmIHN0YXRlLAogfQogCiBUZXN0RE9NSklURG9tU3RyaW5nTnVs
bGFibGVBdHRyRE9NSklUOjpUZXN0RE9NSklURG9tU3RyaW5nTnVsbGFibGVBdHRyRE9NSklUKCkK
LSAgICA6IEpTQzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIoanNUZXN0RE9NSklURG9tU3RyaW5nTnVs
bGFibGVBdHRyLCBudWxscHRyLCBKU1Rlc3RET01KSVQ6OmluZm8oKSwgKEpTQzo6U3BlY1N0cmlu
ZyB8IEpTQzo6U3BlY090aGVyKSkKKyAgICA6IEpTQzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIoanNU
ZXN0RE9NSklURG9tU3RyaW5nTnVsbGFibGVBdHRyLCBudWxscHRyLCBKU1Rlc3RET01KSVQ6Omlu
Zm8oKSwgRE9NSklUOjpJRExSZXN1bHRUeXBlRmlsdGVyPElETE51bGxhYmxlPElETERPTVN0cmlu
Zz4+Ojp2YWx1ZSkKIHsKIH0KIApAQCAtMTA2Niw3ICsxMTA5LDcgQEAgc3RhdGljIGlubGluZSBK
U1ZhbHVlIGpzVGVzdERPTUpJVEJ5dGVTdHJpbmdOdWxsYWJsZUF0dHJHZXR0ZXIoRXhlY1N0YXRl
JiBzdGF0ZSwKIH0KIAogVGVzdERPTUpJVEJ5dGVTdHJpbmdOdWxsYWJsZUF0dHJET01KSVQ6OlRl
c3RET01KSVRCeXRlU3RyaW5nTnVsbGFibGVBdHRyRE9NSklUKCkKLSAgICA6IEpTQzo6RE9NSklU
OjpHZXR0ZXJTZXR0ZXIoanNUZXN0RE9NSklUQnl0ZVN0cmluZ051bGxhYmxlQXR0ciwgbnVsbHB0
ciwgSlNUZXN0RE9NSklUOjppbmZvKCksIChKU0M6OlNwZWNTdHJpbmcgfCBKU0M6OlNwZWNPdGhl
cikpCisgICAgOiBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVyKGpzVGVzdERPTUpJVEJ5dGVTdHJp
bmdOdWxsYWJsZUF0dHIsIG51bGxwdHIsIEpTVGVzdERPTUpJVDo6aW5mbygpLCBET01KSVQ6OklE
TFJlc3VsdFR5cGVGaWx0ZXI8SURMTnVsbGFibGU8SURMQnl0ZVN0cmluZz4+Ojp2YWx1ZSkKIHsK
IH0KIApAQCAtMTA5Myw3ICsxMTM2LDcgQEAgc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdERP
TUpJVFVzdlN0cmluZ051bGxhYmxlQXR0ckdldHRlcihFeGVjU3RhdGUmIHN0YXRlLAogfQogCiBU
ZXN0RE9NSklUVXN2U3RyaW5nTnVsbGFibGVBdHRyRE9NSklUOjpUZXN0RE9NSklUVXN2U3RyaW5n
TnVsbGFibGVBdHRyRE9NSklUKCkKLSAgICA6IEpTQzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIoanNU
ZXN0RE9NSklUVXN2U3RyaW5nTnVsbGFibGVBdHRyLCBudWxscHRyLCBKU1Rlc3RET01KSVQ6Omlu
Zm8oKSwgKEpTQzo6U3BlY1N0cmluZyB8IEpTQzo6U3BlY090aGVyKSkKKyAgICA6IEpTQzo6RE9N
SklUOjpHZXR0ZXJTZXR0ZXIoanNUZXN0RE9NSklUVXN2U3RyaW5nTnVsbGFibGVBdHRyLCBudWxs
cHRyLCBKU1Rlc3RET01KSVQ6OmluZm8oKSwgRE9NSklUOjpJRExSZXN1bHRUeXBlRmlsdGVyPElE
TE51bGxhYmxlPElETFVTVlN0cmluZz4+Ojp2YWx1ZSkKIHsKIH0KIApAQCAtMTEyMCw3ICsxMTYz
LDcgQEAgc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdERPTUpJVE5vZGVOdWxsYWJsZUF0dHJH
ZXR0ZXIoRXhlY1N0YXRlJiBzdGF0ZSwgSlNUZXMKIH0KIAogVGVzdERPTUpJVE5vZGVOdWxsYWJs
ZUF0dHJET01KSVQ6OlRlc3RET01KSVROb2RlTnVsbGFibGVBdHRyRE9NSklUKCkKLSAgICA6IEpT
Qzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIoanNUZXN0RE9NSklUTm9kZU51bGxhYmxlQXR0ciwgbnVs
bHB0ciwgSlNUZXN0RE9NSklUOjppbmZvKCksIFNwZWNIZWFwVG9wKQorICAgIDogSlNDOjpET01K
SVQ6OkdldHRlclNldHRlcihqc1Rlc3RET01KSVROb2RlTnVsbGFibGVBdHRyLCBudWxscHRyLCBK
U1Rlc3RET01KSVQ6OmluZm8oKSwgRE9NSklUOjpJRExSZXN1bHRUeXBlRmlsdGVyPElETE51bGxh
YmxlPElETEludGVyZmFjZTxOb2RlPj4+Ojp2YWx1ZSkKIHsKIH0KIApAQCAtMTE1OSw2ICsxMjAy
LDE3NCBAQCBKU1ZhbHVlIEpTVGVzdERPTUpJVDo6Z2V0Q29uc3RydWN0b3IoVk0mIHZtLCBjb25z
dCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogICAgIHJldHVybiBnZXRET01Db25zdHJ1
Y3RvcjxKU1Rlc3RET01KSVRDb25zdHJ1Y3Rvcj4odm0sICpqc0Nhc3Q8Y29uc3QgSlNET01HbG9i
YWxPYmplY3QqPihnbG9iYWxPYmplY3QpKTsKIH0KIAorc3RhdGljIGlubGluZSBKU0M6OkVuY29k
ZWRKU1ZhbHVlIGpzVGVzdERPTUpJVFByb3RvdHlwZUZ1bmN0aW9uR2V0QXR0cmlidXRlQ2FsbGVy
KEpTQzo6RXhlY1N0YXRlKiwgSlNUZXN0RE9NSklUKiwgSlNDOjpUaHJvd1Njb3BlJik7CisKK0Vu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0RE9NSklUUHJvdG90eXBlRnVuY3Rpb25H
ZXRBdHRyaWJ1dGUoRXhlY1N0YXRlKiBzdGF0ZSkKK3sKKyAgICByZXR1cm4gQmluZGluZ0NhbGxl
cjxKU1Rlc3RET01KSVQ+OjpjYWxsT3BlcmF0aW9uPGpzVGVzdERPTUpJVFByb3RvdHlwZUZ1bmN0
aW9uR2V0QXR0cmlidXRlQ2FsbGVyPihzdGF0ZSwgImdldEF0dHJpYnV0ZSIpOworfQorCitzdGF0
aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0RE9NSklUUHJvdG90eXBlRnVuY3Rp
b25HZXRBdHRyaWJ1dGVDYWxsZXIoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCBKU1Rlc3RET01KSVQq
IGNhc3RlZFRoaXMsIEpTQzo6VGhyb3dTY29wZSYgdGhyb3dTY29wZSkKK3sKKyAgICBVTlVTRURf
UEFSQU0oc3RhdGUpOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKKyAgICBhdXRvJiBp
bXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOworICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+YXJn
dW1lbnRDb3VudCgpIDwgMSkpCisgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIHRo
cm93U2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CisgICAgYXV0
byBuYW1lID0gY29udmVydDxJRExET01TdHJpbmc+KCpzdGF0ZSwgc3RhdGUtPnVuY2hlY2tlZEFy
Z3VtZW50KDApLCBTdHJpbmdDb252ZXJzaW9uQ29uZmlndXJhdGlvbjo6Tm9ybWFsKTsKKyAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOworICAgIEpT
VmFsdWUgcmVzdWx0ID0gdG9KUzxJRExOdWxsYWJsZTxJRExET01TdHJpbmc+Pigqc3RhdGUsIGlt
cGwuZ2V0QXR0cmlidXRlKFdURk1vdmUobmFtZSkpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKHJlc3VsdCk7Cit9CisKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCB1bnNh
ZmVKc1Rlc3RET01KSVRQcm90b3R5cGVGdW5jdGlvbkdldEF0dHJpYnV0ZShKU0M6OkV4ZWNTdGF0
ZSogc3RhdGUsIEpTVGVzdERPTUpJVCogY2FzdGVkVGhpcywgRE9NSklUOjpJRExKU0FyZ3VtZW50
VHlwZTxJRExET01TdHJpbmc+IGVuY29kZWROYW1lKQoreworICAgIFVOVVNFRF9QQVJBTShzdGF0
ZSk7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgSlNDOjpOYXRpdmVDYWxsRnJhbWVU
cmFjZXIgdHJhY2VyKCZ2bSwgc3RhdGUpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKKyAgICBhdXRv
JiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOworICAgIGF1dG8gbmFtZSA9IERPTUpJVDo6
RGlyZWN0Q29udmVydGVyPElETERPTVN0cmluZz46OmRpcmVjdENvbnZlcnQ8U3RyaW5nQ29udmVy
c2lvbkNvbmZpZ3VyYXRpb246Ok5vcm1hbD4oKnN0YXRlLCBlbmNvZGVkTmFtZSk7CisgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKKyAgICBKU1Zh
bHVlIHJlc3VsdCA9IHRvSlM8SURMTnVsbGFibGU8SURMRE9NU3RyaW5nPj4oKnN0YXRlLCBpbXBs
LmdldEF0dHJpYnV0ZShXVEZNb3ZlKG5hbWUpKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShyZXN1bHQpOworfQorCitzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0
RE9NSklUUHJvdG90eXBlRnVuY3Rpb25JdGVtQ2FsbGVyKEpTQzo6RXhlY1N0YXRlKiwgSlNUZXN0
RE9NSklUKiwgSlNDOjpUaHJvd1Njb3BlJik7CisKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwganNUZXN0RE9NSklUUHJvdG90eXBlRnVuY3Rpb25JdGVtKEV4ZWNTdGF0ZSogc3RhdGUpCit7
CisgICAgcmV0dXJuIEJpbmRpbmdDYWxsZXI8SlNUZXN0RE9NSklUPjo6Y2FsbE9wZXJhdGlvbjxq
c1Rlc3RET01KSVRQcm90b3R5cGVGdW5jdGlvbkl0ZW1DYWxsZXI+KHN0YXRlLCAiaXRlbSIpOwor
fQorCitzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0RE9NSklUUHJvdG90
eXBlRnVuY3Rpb25JdGVtQ2FsbGVyKEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgSlNUZXN0RE9NSklU
KiBjYXN0ZWRUaGlzLCBKU0M6OlRocm93U2NvcGUmIHRocm93U2NvcGUpCit7CisgICAgVU5VU0VE
X1BBUkFNKHN0YXRlKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CisgICAgYXV0byYg
aW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKKyAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmFy
Z3VtZW50Q291bnQoKSA8IDIpKQorICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCB0
aHJvd1Njb3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOworICAgIGF1
dG8geCA9IGNvbnZlcnQ8SURMVW5zaWduZWRTaG9ydD4oKnN0YXRlLCBzdGF0ZS0+dW5jaGVja2Vk
QXJndW1lbnQoMCksIEludGVnZXJDb252ZXJzaW9uQ29uZmlndXJhdGlvbjo6Tm9ybWFsKTsKKyAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOworICAg
IGF1dG8geSA9IGNvbnZlcnQ8SURMVW5zaWduZWRTaG9ydD4oKnN0YXRlLCBzdGF0ZS0+dW5jaGVj
a2VkQXJndW1lbnQoMSksIEludGVnZXJDb252ZXJzaW9uQ29uZmlndXJhdGlvbjo6Tm9ybWFsKTsK
KyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwor
ICAgIEpTVmFsdWUgcmVzdWx0ID0gdG9KUzxJRExET01TdHJpbmc+KCpzdGF0ZSwgaW1wbC5pdGVt
KFdURk1vdmUoeCksIFdURk1vdmUoeSkpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJl
c3VsdCk7Cit9CisKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCB1bnNhZmVKc1Rl
c3RET01KSVRQcm90b3R5cGVGdW5jdGlvbkl0ZW0oSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCBKU1Rl
c3RET01KSVQqIGNhc3RlZFRoaXMsIERPTUpJVDo6SURMSlNBcmd1bWVudFR5cGU8SURMVW5zaWdu
ZWRTaG9ydD4gZW5jb2RlZFgsIERPTUpJVDo6SURMSlNBcmd1bWVudFR5cGU8SURMVW5zaWduZWRT
aG9ydD4gZW5jb2RlZFkpCit7CisgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKKyAgICBWTSYgdm0g
PSBzdGF0ZS0+dm0oKTsKKyAgICBKU0M6Ok5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIoJnZt
LCBzdGF0ZSk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRU
aGlzLT53cmFwcGVkKCk7CisgICAgYXV0byB4ID0gRE9NSklUOjpEaXJlY3RDb252ZXJ0ZXI8SURM
VW5zaWduZWRTaG9ydD46OmRpcmVjdENvbnZlcnQ8SW50ZWdlckNvbnZlcnNpb25Db25maWd1cmF0
aW9uOjpOb3JtYWw+KCpzdGF0ZSwgZW5jb2RlZFgpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
dGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CisgICAgYXV0byB5ID0gRE9NSklUOjpEaXJl
Y3RDb252ZXJ0ZXI8SURMVW5zaWduZWRTaG9ydD46OmRpcmVjdENvbnZlcnQ8SW50ZWdlckNvbnZl
cnNpb25Db25maWd1cmF0aW9uOjpOb3JtYWw+KCpzdGF0ZSwgZW5jb2RlZFkpOworICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CisgICAgSlNWYWx1
ZSByZXN1bHQgPSB0b0pTPElETERPTVN0cmluZz4oKnN0YXRlLCBpbXBsLml0ZW0oV1RGTW92ZSh4
KSwgV1RGTW92ZSh5KSkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKK30K
Kworc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdERPTUpJVFByb3RvdHlw
ZUZ1bmN0aW9uSGFzQXR0cmlidXRlQ2FsbGVyKEpTQzo6RXhlY1N0YXRlKiwgSlNUZXN0RE9NSklU
KiwgSlNDOjpUaHJvd1Njb3BlJik7CisKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNU
ZXN0RE9NSklUUHJvdG90eXBlRnVuY3Rpb25IYXNBdHRyaWJ1dGUoRXhlY1N0YXRlKiBzdGF0ZSkK
K3sKKyAgICByZXR1cm4gQmluZGluZ0NhbGxlcjxKU1Rlc3RET01KSVQ+OjpjYWxsT3BlcmF0aW9u
PGpzVGVzdERPTUpJVFByb3RvdHlwZUZ1bmN0aW9uSGFzQXR0cmlidXRlQ2FsbGVyPihzdGF0ZSwg
Imhhc0F0dHJpYnV0ZSIpOworfQorCitzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUg
anNUZXN0RE9NSklUUHJvdG90eXBlRnVuY3Rpb25IYXNBdHRyaWJ1dGVDYWxsZXIoSlNDOjpFeGVj
U3RhdGUqIHN0YXRlLCBKU1Rlc3RET01KSVQqIGNhc3RlZFRoaXMsIEpTQzo6VGhyb3dTY29wZSYg
dGhyb3dTY29wZSkKK3sKKyAgICBVTlVTRURfUEFSQU0oc3RhdGUpOworICAgIFVOVVNFRF9QQVJB
TSh0aHJvd1Njb3BlKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwor
ICAgIEpTVmFsdWUgcmVzdWx0ID0gdG9KUzxJRExCb29sZWFuPihpbXBsLmhhc0F0dHJpYnV0ZSgp
KTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7Cit9CisKK0pTQzo6RW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCB1bnNhZmVKc1Rlc3RET01KSVRQcm90b3R5cGVGdW5jdGlv
bkhhc0F0dHJpYnV0ZShKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIEpTVGVzdERPTUpJVCogY2FzdGVk
VGhpcykKK3sKKyAgICBVTlVTRURfUEFSQU0oc3RhdGUpOworICAgIFZNJiB2bSA9IHN0YXRlLT52
bSgpOworICAgIEpTQzo6TmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcigmdm0sIHN0YXRlKTsK
KyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVT
RURfUEFSQU0odGhyb3dTY29wZSk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBw
ZWQoKTsKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IHRvSlM8SURMQm9vbGVhbj4oaW1wbC5oYXNBdHRy
aWJ1dGUoKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOworfQorCitzdGF0
aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0RE9NSklUUHJvdG90eXBlRnVuY3Rp
b25HZXRFbGVtZW50QnlJZENhbGxlcihKU0M6OkV4ZWNTdGF0ZSosIEpTVGVzdERPTUpJVCosIEpT
Qzo6VGhyb3dTY29wZSYpOworCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdERP
TUpJVFByb3RvdHlwZUZ1bmN0aW9uR2V0RWxlbWVudEJ5SWQoRXhlY1N0YXRlKiBzdGF0ZSkKK3sK
KyAgICByZXR1cm4gQmluZGluZ0NhbGxlcjxKU1Rlc3RET01KSVQ+OjpjYWxsT3BlcmF0aW9uPGpz
VGVzdERPTUpJVFByb3RvdHlwZUZ1bmN0aW9uR2V0RWxlbWVudEJ5SWRDYWxsZXI+KHN0YXRlLCAi
Z2V0RWxlbWVudEJ5SWQiKTsKK30KKworc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVl
IGpzVGVzdERPTUpJVFByb3RvdHlwZUZ1bmN0aW9uR2V0RWxlbWVudEJ5SWRDYWxsZXIoSlNDOjpF
eGVjU3RhdGUqIHN0YXRlLCBKU1Rlc3RET01KSVQqIGNhc3RlZFRoaXMsIEpTQzo6VGhyb3dTY29w
ZSYgdGhyb3dTY29wZSkKK3sKKyAgICBVTlVTRURfUEFSQU0oc3RhdGUpOworICAgIFVOVVNFRF9Q
QVJBTSh0aHJvd1Njb3BlKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgp
OworICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+YXJndW1lbnRDb3VudCgpIDwgMSkpCisgICAgICAg
IHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFy
Z3VtZW50c0Vycm9yKHN0YXRlKSk7CisgICAgYXV0byBlbGVtZW50SWQgPSBBdG9taWNTdHJpbmco
c3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50KDApLnRvU3RyaW5nKHN0YXRlKS0+dG9FeGlzdGluZ0F0
b21pY1N0cmluZyhzdGF0ZSkpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwg
ZW5jb2RlZEpTVmFsdWUoKSk7CisgICAgSlNWYWx1ZSByZXN1bHQgPSB0b0pTPElETEludGVyZmFj
ZTxFbGVtZW50Pj4oKnN0YXRlLCAqY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIGltcGwuZ2V0
RWxlbWVudEJ5SWQoV1RGTW92ZShlbGVtZW50SWQpKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShyZXN1bHQpOworfQorCitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgdW5z
YWZlSnNUZXN0RE9NSklUUHJvdG90eXBlRnVuY3Rpb25HZXRFbGVtZW50QnlJZChKU0M6OkV4ZWNT
dGF0ZSogc3RhdGUsIEpTVGVzdERPTUpJVCogY2FzdGVkVGhpcywgRE9NSklUOjpJRExKU0FyZ3Vt
ZW50VHlwZTxJRExET01TdHJpbmc+IGVuY29kZWRFbGVtZW50SWQpCit7CisgICAgVU5VU0VEX1BB
UkFNKHN0YXRlKTsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBKU0M6Ok5hdGl2ZUNh
bGxGcmFtZVRyYWNlciB0cmFjZXIoJnZtLCBzdGF0ZSk7CisgICAgYXV0byB0aHJvd1Njb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwor
ICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CisgICAgYXV0byBlbGVtZW50
SWQgPSBBdG9taWNTdHJpbmcoZW5jb2RlZEVsZW1lbnRJZC50b1N0cmluZyhzdGF0ZSktPnRvRXhp
c3RpbmdBdG9taWNTdHJpbmcoc3RhdGUpKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93
U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOworICAgIEpTVmFsdWUgcmVzdWx0ID0gdG9KUzxJRExJ
bnRlcmZhY2U8RWxlbWVudD4+KCpzdGF0ZSwgKmNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBp
bXBsLmdldEVsZW1lbnRCeUlkKFdURk1vdmUoZWxlbWVudElkKSkpOworICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUocmVzdWx0KTsKK30KKworc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1Zh
bHVlIGpzVGVzdERPTUpJVFByb3RvdHlwZUZ1bmN0aW9uR2V0RWxlbWVudHNCeU5hbWVDYWxsZXIo
SlNDOjpFeGVjU3RhdGUqLCBKU1Rlc3RET01KSVQqLCBKU0M6OlRocm93U2NvcGUmKTsKKworRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RET01KSVRQcm90b3R5cGVGdW5jdGlvbkdl
dEVsZW1lbnRzQnlOYW1lKEV4ZWNTdGF0ZSogc3RhdGUpCit7CisgICAgcmV0dXJuIEJpbmRpbmdD
YWxsZXI8SlNUZXN0RE9NSklUPjo6Y2FsbE9wZXJhdGlvbjxqc1Rlc3RET01KSVRQcm90b3R5cGVG
dW5jdGlvbkdldEVsZW1lbnRzQnlOYW1lQ2FsbGVyPihzdGF0ZSwgImdldEVsZW1lbnRzQnlOYW1l
Iik7Cit9CisKK3N0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RET01KSVRQ
cm90b3R5cGVGdW5jdGlvbkdldEVsZW1lbnRzQnlOYW1lQ2FsbGVyKEpTQzo6RXhlY1N0YXRlKiBz
dGF0ZSwgSlNUZXN0RE9NSklUKiBjYXN0ZWRUaGlzLCBKU0M6OlRocm93U2NvcGUmIHRocm93U2Nv
cGUpCit7CisgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dT
Y29wZSk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKKyAgICBpZiAo
VU5MSUtFTFkoc3RhdGUtPmFyZ3VtZW50Q291bnQoKSA8IDEpKQorICAgICAgICByZXR1cm4gdGhy
b3dWTUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJv
cihzdGF0ZSkpOworICAgIGF1dG8gZWxlbWVudE5hbWUgPSBzdGF0ZS0+dW5jaGVja2VkQXJndW1l
bnQoMCkudG9TdHJpbmcoc3RhdGUpLT50b0F0b21pY1N0cmluZyhzdGF0ZSk7CisgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKKyAgICBKU1ZhbHVl
IHJlc3VsdCA9IHRvSlM8SURMSW50ZXJmYWNlPE5vZGVMaXN0Pj4oKnN0YXRlLCAqY2FzdGVkVGhp
cy0+Z2xvYmFsT2JqZWN0KCksIGltcGwuZ2V0RWxlbWVudHNCeU5hbWUoV1RGTW92ZShlbGVtZW50
TmFtZSkpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7Cit9CisKK0pTQzo6
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCB1bnNhZmVKc1Rlc3RET01KSVRQcm90b3R5cGVG
dW5jdGlvbkdldEVsZW1lbnRzQnlOYW1lKEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgSlNUZXN0RE9N
SklUKiBjYXN0ZWRUaGlzLCBET01KSVQ6OklETEpTQXJndW1lbnRUeXBlPElETERPTVN0cmluZz4g
ZW5jb2RlZEVsZW1lbnROYW1lKQoreworICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CisgICAgVk0m
IHZtID0gc3RhdGUtPnZtKCk7CisgICAgSlNDOjpOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2Vy
KCZ2bSwgc3RhdGUpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKKyAgICBhdXRvJiBpbXBsID0gY2Fz
dGVkVGhpcy0+d3JhcHBlZCgpOworICAgIGF1dG8gZWxlbWVudE5hbWUgPSBlbmNvZGVkRWxlbWVu
dE5hbWUudG9TdHJpbmcoc3RhdGUpLT50b0F0b21pY1N0cmluZyhzdGF0ZSk7CisgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKKyAgICBKU1ZhbHVl
IHJlc3VsdCA9IHRvSlM8SURMSW50ZXJmYWNlPE5vZGVMaXN0Pj4oKnN0YXRlLCAqY2FzdGVkVGhp
cy0+Z2xvYmFsT2JqZWN0KCksIGltcGwuZ2V0RWxlbWVudHNCeU5hbWUoV1RGTW92ZShlbGVtZW50
TmFtZSkpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7Cit9CisKIHZvaWQg
SlNUZXN0RE9NSklUOjp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZp
c2l0b3IpCiB7CiAgICAgYXV0byogdGhpc09iamVjdCA9IGpzQ2FzdDxKU1Rlc3RET01KSVQqPihj
ZWxsKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9U
ZXN0RE9NSklULmlkbCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0
RE9NSklULmlkbAppbmRleCBiZTdlZDA0ZmY2M2RlNjg2YmM4NzY0ODI4MmI2YWFmNjRjMjc3M2U3
Li5iMzMzNjZiMTRhNDc0MTA3N2Y2MzFmNWMyZTg1MzdlNDE3NzA5MWIyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdERPTUpJVC5pZGwKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RET01KSVQuaWRsCkBAIC02
Myw0ICs2MywxMCBAQCBpbnRlcmZhY2UgVGVzdERPTUpJVCA6IE5vZGUgewogICAgIFtET01KSVRd
IHJlYWRvbmx5IGF0dHJpYnV0ZSBCeXRlU3RyaW5nPyBieXRlU3RyaW5nTnVsbGFibGVBdHRyOwog
ICAgIFtET01KSVRdIHJlYWRvbmx5IGF0dHJpYnV0ZSBVU1ZTdHJpbmc/IHVzdlN0cmluZ051bGxh
YmxlQXR0cjsKICAgICBbRE9NSklUXSByZWFkb25seSBhdHRyaWJ1dGUgTm9kZT8gbm9kZU51bGxh
YmxlQXR0cjsKKworICAgIFtET01KSVQ9UmVhZERPTV0gRE9NU3RyaW5nPyBnZXRBdHRyaWJ1dGUo
RE9NU3RyaW5nIG5hbWUpOworICAgIFtET01KSVQ9UmVhZERPTV0gRE9NU3RyaW5nIGl0ZW0odW5z
aWduZWQgc2hvcnQgeCwgdW5zaWduZWQgc2hvcnQgeSk7CisgICAgW0RPTUpJVD1SZWFkRE9NXSBi
b29sZWFuIGhhc0F0dHJpYnV0ZSgpOworICAgIFtET01KSVQ9UmVhZERPTV0gRWxlbWVudCBnZXRF
bGVtZW50QnlJZChbUmVxdWlyZXNFeGlzdGluZ0F0b21pY1N0cmluZ10gRE9NU3RyaW5nIGVsZW1l
bnRJZCk7CisgICAgW0RPTUpJVD1SZWFkRE9NXSBOb2RlTGlzdCBnZXRFbGVtZW50c0J5TmFtZShb
QXRvbWljU3RyaW5nXSBET01TdHJpbmcgZWxlbWVudE5hbWUpOwogfTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmlkbCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50
LmlkbAppbmRleCA3MDU2MTczOGI5NzQ5YThkNzRhMGYxN2NhNjNhN2Y4ZmYxOTVlMWM2Li44MTk3
NTE1NzU5MTcwYjQxYjQzMzFkZmVmODYxZDEzZjEzOWNlZDUzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vRWxlbWVudC5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQu
aWRsCkBAIC0yNiwyMCArMjYsMjAgQEAKIF0gaW50ZXJmYWNlIEVsZW1lbnQgOiBOb2RlIHsKICAg
ICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nPyB0YWdOYW1lOwogCi0gICAgRE9NU3RyaW5n
PyBnZXRBdHRyaWJ1dGUoRE9NU3RyaW5nIG5hbWUpOworICAgIFtET01KSVQ9UmVhZERPTV0gRE9N
U3RyaW5nPyBnZXRBdHRyaWJ1dGUoRE9NU3RyaW5nIG5hbWUpOwogCiAgICAgW0NFUmVhY3Rpb25z
LCBNYXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCBzZXRBdHRyaWJ1dGUoRE9NU3RyaW5nIG5hbWUsIERP
TVN0cmluZyB2YWx1ZSk7CiAKICAgICBbQ0VSZWFjdGlvbnNdIHZvaWQgcmVtb3ZlQXR0cmlidXRl
KERPTVN0cmluZyBuYW1lKTsKLSAgICBBdHRyPyBnZXRBdHRyaWJ1dGVOb2RlKERPTVN0cmluZyBu
YW1lKTsKKyAgICBbRE9NSklUPVJlYWRET01dIEF0dHI/IGdldEF0dHJpYnV0ZU5vZGUoRE9NU3Ry
aW5nIG5hbWUpOwogCiAgICAgW0NFUmVhY3Rpb25zLCBNYXlUaHJvd0V4Y2VwdGlvbl0gQXR0cj8g
c2V0QXR0cmlidXRlTm9kZShBdHRyIG5ld0F0dHIpOwogICAgIFtDRVJlYWN0aW9ucywgTWF5VGhy
b3dFeGNlcHRpb25dIEF0dHIgcmVtb3ZlQXR0cmlidXRlTm9kZShBdHRyIG9sZEF0dHIpOwogCi0g
ICAgSFRNTENvbGxlY3Rpb24gZ2V0RWxlbWVudHNCeVRhZ05hbWUoRE9NU3RyaW5nIG5hbWUpOwor
ICAgIFtET01KSVQ9UmVhZERPTV0gSFRNTENvbGxlY3Rpb24gZ2V0RWxlbWVudHNCeVRhZ05hbWUo
RE9NU3RyaW5nIG5hbWUpOwogCiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIE5hbWVkTm9kZU1hcCBh
dHRyaWJ1dGVzOwotICAgIGJvb2xlYW4gaGFzQXR0cmlidXRlcygpOworICAgIFtET01KSVQ9UmVh
ZERPTV0gYm9vbGVhbiBoYXNBdHRyaWJ1dGVzKCk7CiAKICAgICBET01TdHJpbmc/IGdldEF0dHJp
YnV0ZU5TKERPTVN0cmluZz8gbmFtZXNwYWNlVVJJLCBET01TdHJpbmcgbG9jYWxOYW1lKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9taml0L0RPTUpJVEFic3RyYWN0SGVhcFJlcG9z
aXRvcnkuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9taml0L0RPTUpJVEFic3RyYWN0SGVhcFJlcG9z
aXRvcnkuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4M2ZiYTg5NzEzYjg2NjNk
NGQ4ZjI3ZWRjYmY3NGFmZTYzMTgyZDMxLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbWppdC9ET01KSVRBYnN0cmFjdEhlYXBS
ZXBvc2l0b3J5LmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDcwICswLDAgQEAKLS8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgot
ICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAot
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0j
aW5jbHVkZSAiRE9NSklUQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5oIgotCi0jaW5jbHVkZSA8ZG9t
aml0L0RPTUpJVEFic3RyYWN0SGVhcC5oPgotI2luY2x1ZGUgPHd0Zi9EYXRhTG9nLmg+Ci0jaW5j
bHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+Ci0KLSNpZiBFTkFCTEUoSklUKQotCi1uYW1lc3Bh
Y2UgV2ViQ29yZSB7IG5hbWVzcGFjZSBET01KSVQgewotCi1zdGF0aWMgY29uc3QgYm9vbCB2ZXJi
b3NlID0gZmFsc2U7Ci0KLUFic3RyYWN0SGVhcFJlcG9zaXRvcnk6OkFic3RyYWN0SGVhcFJlcG9z
aXRvcnkoKQotewotICAgIEpTQzo6RE9NSklUOjpBYnN0cmFjdEhlYXAgRE9NSGVhcCgiRE9NIik7
Ci0jZGVmaW5lIERPTUpJVF9ERUZJTkVfSEVBUChuYW1lLCBwYXJlbnQpIEpTQzo6RE9NSklUOjpB
YnN0cmFjdEhlYXAgbmFtZSMjSGVhcCgjbmFtZSk7Ci0gICAgRE9NSklUX0FCU1RSQUNUX0hFQVBf
TElTVChET01KSVRfREVGSU5FX0hFQVApCi0jdW5kZWYgRE9NSklUX0RFRklORV9IRUFQCi0KLSNk
ZWZpbmUgRE9NSklUX0lOSVRJQUxJWkVfSEVBUChuYW1lLCBwYXJlbnQpIG5hbWUjI0hlYXAuc2V0
UGFyZW50KCZwYXJlbnQjI0hlYXApOwotICAgIERPTUpJVF9BQlNUUkFDVF9IRUFQX0xJU1QoRE9N
SklUX0lOSVRJQUxJWkVfSEVBUCkKLSN1bmRlZiBET01KSVRfSU5JVElBTElaRV9IRUFQCi0KLSAg
ICBET01IZWFwLmNvbXB1dGUoMCk7Ci0KLSNkZWZpbmUgRE9NSklUX0lOSVRJQUxJWkVfTUVNQkVS
KG5hbWUsIHBhcmVudCkgbmFtZSA9IG5hbWUjI0hlYXAucmFuZ2UoKTsKLSAgICBET01KSVRfQUJT
VFJBQ1RfSEVBUF9MSVNUKERPTUpJVF9JTklUSUFMSVpFX01FTUJFUikKLSN1bmRlZiBET01KSVRf
SU5JVElBTElaRV9NRU1CRVIKLQotICAgIGlmICh2ZXJib3NlKSB7Ci0gICAgICAgIGRhdGFMb2co
IkRPTUpJVCBIZWFwIFJlcG9zaXRvcnk6XG4iKTsKLSAgICAgICAgRE9NSGVhcC5kZWVwRHVtcChX
VEY6OmRhdGFGaWxlKCkpOwotICAgIH0KLX0KLQotY29uc3QgQWJzdHJhY3RIZWFwUmVwb3NpdG9y
eSYgQWJzdHJhY3RIZWFwUmVwb3NpdG9yeTo6c2hhcmVkKCkKLXsKLSAgICBzdGF0aWMgTmV2ZXJE
ZXN0cm95ZWQ8QWJzdHJhY3RIZWFwUmVwb3NpdG9yeT4gcmVwb3NpdG9yeTsKLSAgICByZXR1cm4g
cmVwb3NpdG9yeS5nZXQoKTsKLX0KLQotfSB9Ci0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZG9taml0L0RPTUpJVEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaCBiL1NvdXJjZS9X
ZWJDb3JlL2RvbWppdC9ET01KSVRBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmgKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDgxOTBhMWE5NGJiYzc5ZGU1ZjJlM2JlZDA5OTgzNDc5ZmE0YmQ2
NTYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNl
L1dlYkNvcmUvZG9taml0L0RPTUpJVEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaAorKysgL2Rldi9u
dWxsCkBAIC0xLDY2ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0g
KiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2luY2x1ZGUgPGRvbWppdC9ET01KSVRIZWFwUmFu
Z2UuaD4KLSNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KLSNpbmNsdWRlIDx3dGYvTm9u
Y29weWFibGUuaD4KLQotI2lmIEVOQUJMRShKSVQpCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsgbmFt
ZXNwYWNlIERPTUpJVCB7Ci0KLS8vIERlc2NyaWJlIHlvdXIgYWJzdHJhY3QgaGVhcCBoaWVyYXJj
aHkgaGVyZS4KLS8vIFYoQWJzdHJhY3RIZWFwTmFtZSwgUGFyZW50KQotI2RlZmluZSBET01KSVRf
QUJTVFJBQ1RfSEVBUF9MSVNUKFYpIFwKLSAgICBWKE5vZGUsIERPTSkgXAotICAgIFYoTm9kZV9m
aXJzdENoaWxkLCBOb2RlKSBcCi0gICAgVihOb2RlX2xhc3RDaGlsZCwgTm9kZSkgXAotICAgIFYo
Tm9kZV9wYXJlbnROb2RlLCBOb2RlKSBcCi0gICAgVihOb2RlX25leHRTaWJsaW5nLCBOb2RlKSBc
Ci0gICAgVihOb2RlX3ByZXZpb3VzU2libGluZywgTm9kZSkgXAotICAgIFYoTm9kZV9vd25lckRv
Y3VtZW50LCBOb2RlKSBcCi0gICAgVihEb2N1bWVudCwgRE9NKSBcCi0gICAgVihEb2N1bWVudF9k
b2N1bWVudEVsZW1lbnQsIERvY3VtZW50KSBcCi0KLQotY2xhc3MgQWJzdHJhY3RIZWFwUmVwb3Np
dG9yeSB7Ci0gICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQWJzdHJhY3RIZWFwUmVwb3NpdG9yeSk7
Ci1wdWJsaWM6Ci0gICAgc3RhdGljIGNvbnN0IEFic3RyYWN0SGVhcFJlcG9zaXRvcnkmIHNoYXJl
ZCgpOwotCi0gICAgSlNDOjpET01KSVQ6OkhlYXBSYW5nZSBET007Ci0KLSNkZWZpbmUgRE9NSklU
X0RFRklORV9NRU1CRVIobmFtZSwgcGFyZW50KSBKU0M6OkRPTUpJVDo6SGVhcFJhbmdlIG5hbWU7
Ci0gICAgRE9NSklUX0FCU1RSQUNUX0hFQVBfTElTVChET01KSVRfREVGSU5FX01FTUJFUikKLSN1
bmRlZiBET01KSVRfREVGSU5FX01FTUJFUgotCi0gICAgQWJzdHJhY3RIZWFwUmVwb3NpdG9yeSgp
OwotfTsKLQotfSB9Ci0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9taml0
L0RPTUpJVEFic3RyYWN0SGVhcFJlcG9zaXRvcnkueWFtbCBiL1NvdXJjZS9XZWJDb3JlL2RvbWpp
dC9ET01KSVRBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LnlhbWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTJjNTg0NWUw
Nzg2NzBkZGRhYzk3NzI5OTljY2I4ZWE3ZDAxYmRmMwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbWppdC9ET01KSVRBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LnlhbWwKQEAgLTAs
MCArMSwxMSBAQAorRE9NOgorICAgIFRyZWU6CisgICAgICAgIE5vZGU6CisgICAgICAgICAgICAt
IE5vZGVfZmlyc3RDaGlsZAorICAgICAgICAgICAgLSBOb2RlX2xhc3RDaGlsZAorICAgICAgICAg
ICAgLSBOb2RlX3BhcmVudE5vZGUKKyAgICAgICAgICAgIC0gTm9kZV9uZXh0U2libGluZworICAg
ICAgICAgICAgLSBOb2RlX3ByZXZpb3VzU2libGluZworICAgICAgICAgICAgLSBOb2RlX293bmVy
RG9jdW1lbnQKKyAgICAgICAgRG9jdW1lbnQ6CisgICAgICAgICAgICAtIERvY3VtZW50X2RvY3Vt
ZW50RWxlbWVudApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9taml0L0RPTUpJVElETENv
bnZlcnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbWppdC9ET01KSVRJRExDb252ZXJ0LmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNWUwMGFiZmNjYjg3NmRlYTE4MzJmMWMyMGFlZTNlZDc4YjEzNjg0OQotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbWppdC9ET01KSVRJRExDb252ZXJ0LmgKQEAgLTAs
MCArMSw0OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiSURMVHlw
ZXMuaCIKKyNpbmNsdWRlIDxieXRlY29kZS9TcGVjdWxhdGVkVHlwZS5oPgorI2luY2x1ZGUgPGRv
bWppdC9ET01KSVRTaWduYXR1cmUuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeyBuYW1lc3BhY2Ug
RE9NSklUIHsKKwordGVtcGxhdGU8dHlwZW5hbWUgSURMVHlwZT4KK3N0cnVjdCBEaXJlY3RDb252
ZXJ0ZXI7CisKK3RlbXBsYXRlPD4KK3N0cnVjdCBEaXJlY3RDb252ZXJ0ZXI8SURMRE9NU3RyaW5n
PiB7CisgICAgdGVtcGxhdGU8U3RyaW5nQ29udmVyc2lvbkNvbmZpZ3VyYXRpb24+CisgICAgc3Rh
dGljIFN0cmluZyBkaXJlY3RDb252ZXJ0KEpTQzo6RXhlY1N0YXRlJiwgSlNDOjpKU1N0cmluZyop
OworfTsKKwordGVtcGxhdGU8PgoraW5saW5lIFN0cmluZyBEaXJlY3RDb252ZXJ0ZXI8SURMRE9N
U3RyaW5nPjo6ZGlyZWN0Q29udmVydDxTdHJpbmdDb252ZXJzaW9uQ29uZmlndXJhdGlvbjo6Tm9y
bWFsPihKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIEpTQzo6SlNTdHJpbmcqIHN0cmluZykKK3sKKyAg
ICByZXR1cm4gc3RyaW5nLT52YWx1ZSgmc3RhdGUpOworfQorCit9IH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2RvbWppdC9ET01KSVRJRExUeXBlLmggYi9Tb3VyY2UvV2ViQ29yZS9kb21q
aXQvRE9NSklUSURMVHlwZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY4OTFmYmM1MGVmNGMyZDc2NTRkOGU1ZDJi
YzhkZWFlOTc2ZGYxYWMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb21qaXQv
RE9NSklUSURMVHlwZS5oCkBAIC0wLDAgKzEsNDcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9u
Y2UKKworI2luY2x1ZGUgIklETFR5cGVzLmgiCisjaW5jbHVkZSA8Ynl0ZWNvZGUvU3BlY3VsYXRl
ZFR5cGUuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeyBuYW1lc3BhY2UgRE9NSklUIHsKKwordGVt
cGxhdGU8dHlwZW5hbWUgSURMVHlwZT4KK3N0cnVjdCBJRExKU0FyZ3VtZW50VHlwZVNlbGVjdDsK
KwordGVtcGxhdGU8PiBzdHJ1Y3QgSURMSlNBcmd1bWVudFR5cGVTZWxlY3Q8SURMQm9vbGVhbj4g
eyB0eXBlZGVmIGJvb2wgdHlwZTsgfTsKK3RlbXBsYXRlPD4gc3RydWN0IElETEpTQXJndW1lbnRU
eXBlU2VsZWN0PElETEJ5dGU+IHsgdHlwZWRlZiBpbnQzMl90IHR5cGU7IH07Cit0ZW1wbGF0ZTw+
IHN0cnVjdCBJRExKU0FyZ3VtZW50VHlwZVNlbGVjdDxJRExPY3RldD4geyB0eXBlZGVmIGludDMy
X3QgdHlwZTsgfTsKK3RlbXBsYXRlPD4gc3RydWN0IElETEpTQXJndW1lbnRUeXBlU2VsZWN0PElE
TFNob3J0PiB7IHR5cGVkZWYgaW50MzJfdCB0eXBlOyB9OwordGVtcGxhdGU8PiBzdHJ1Y3QgSURM
SlNBcmd1bWVudFR5cGVTZWxlY3Q8SURMVW5zaWduZWRTaG9ydD4geyB0eXBlZGVmIGludDMyX3Qg
dHlwZTsgfTsKK3RlbXBsYXRlPD4gc3RydWN0IElETEpTQXJndW1lbnRUeXBlU2VsZWN0PElETExv
bmc+IHsgdHlwZWRlZiBpbnQzMl90IHR5cGU7IH07Cit0ZW1wbGF0ZTw+IHN0cnVjdCBJRExKU0Fy
Z3VtZW50VHlwZVNlbGVjdDxJRExET01TdHJpbmc+IHsgdHlwZWRlZiBKU0M6OkpTU3RyaW5nKiB0
eXBlOyB9OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBJRExUeXBlPgordXNpbmcgSURMSlNBcmd1bWVu
dFR5cGUgPSB0eXBlbmFtZSBJRExKU0FyZ3VtZW50VHlwZVNlbGVjdDxJRExUeXBlPjo6dHlwZTsK
KworfSB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb21qaXQvRE9NSklUSURMVHlwZUZp
bHRlci5oIGIvU291cmNlL1dlYkNvcmUvZG9taml0L0RPTUpJVElETFR5cGVGaWx0ZXIuaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5kNTJkOTk2NzdjMzJmN2VjMmJkNTIxMjM3YWQwZTdiOGQ0ZTNkYjk2Ci0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvZG9taml0L0RPTUpJVElETFR5cGVGaWx0ZXIuaApA
QCAtMCwwICsxLDcxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDxi
eXRlY29kZS9TcGVjdWxhdGVkVHlwZS5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7IG5hbWVzcGFj
ZSBET01KSVQgeworCit0ZW1wbGF0ZTx0eXBlbmFtZSBJRExUeXBlPgorc3RydWN0IElETEFyZ3Vt
ZW50VHlwZUZpbHRlcjsKKwordGVtcGxhdGU8PiBzdHJ1Y3QgSURMQXJndW1lbnRUeXBlRmlsdGVy
PElETEJvb2xlYW4+IHsgc3RhdGljIGNvbnN0IGNvbnN0ZXhwciBKU0M6OlNwZWN1bGF0ZWRUeXBl
IHZhbHVlID0gSlNDOjpTcGVjQm9vbGVhbjsgfTsKK3RlbXBsYXRlPD4gc3RydWN0IElETEFyZ3Vt
ZW50VHlwZUZpbHRlcjxJRExCeXRlPiB7IHN0YXRpYyBjb25zdCBjb25zdGV4cHIgSlNDOjpTcGVj
dWxhdGVkVHlwZSB2YWx1ZSA9IEpTQzo6U3BlY0ludDMyT25seTsgfTsKK3RlbXBsYXRlPD4gc3Ry
dWN0IElETEFyZ3VtZW50VHlwZUZpbHRlcjxJRExPY3RldD4geyBzdGF0aWMgY29uc3QgY29uc3Rl
eHByIEpTQzo6U3BlY3VsYXRlZFR5cGUgdmFsdWUgPSBKU0M6OlNwZWNJbnQzMk9ubHk7IH07Cit0
ZW1wbGF0ZTw+IHN0cnVjdCBJRExBcmd1bWVudFR5cGVGaWx0ZXI8SURMU2hvcnQ+IHsgc3RhdGlj
IGNvbnN0IGNvbnN0ZXhwciBKU0M6OlNwZWN1bGF0ZWRUeXBlIHZhbHVlID0gSlNDOjpTcGVjSW50
MzJPbmx5OyB9OwordGVtcGxhdGU8PiBzdHJ1Y3QgSURMQXJndW1lbnRUeXBlRmlsdGVyPElETFVu
c2lnbmVkU2hvcnQ+IHsgc3RhdGljIGNvbnN0IGNvbnN0ZXhwciBKU0M6OlNwZWN1bGF0ZWRUeXBl
IHZhbHVlID0gSlNDOjpTcGVjSW50MzJPbmx5OyB9OwordGVtcGxhdGU8PiBzdHJ1Y3QgSURMQXJn
dW1lbnRUeXBlRmlsdGVyPElETExvbmc+IHsgc3RhdGljIGNvbnN0IGNvbnN0ZXhwciBKU0M6OlNw
ZWN1bGF0ZWRUeXBlIHZhbHVlID0gSlNDOjpTcGVjSW50MzJPbmx5OyB9OwordGVtcGxhdGU8PiBz
dHJ1Y3QgSURMQXJndW1lbnRUeXBlRmlsdGVyPElETERPTVN0cmluZz4geyBzdGF0aWMgY29uc3Qg
Y29uc3RleHByIEpTQzo6U3BlY3VsYXRlZFR5cGUgdmFsdWUgPSBKU0M6OlNwZWNTdHJpbmc7IH07
CisKK3RlbXBsYXRlPHR5cGVuYW1lIElETFR5cGU+CitzdHJ1Y3QgSURMUmVzdWx0VHlwZUZpbHRl
ciB7CisgICAgc3RhdGljIGNvbnN0IGNvbnN0ZXhwciBKU0M6OlNwZWN1bGF0ZWRUeXBlIHZhbHVl
ID0gSlNDOjpTcGVjSGVhcFRvcDsKK307CisKK3RlbXBsYXRlPD4gc3RydWN0IElETFJlc3VsdFR5
cGVGaWx0ZXI8SURMQW55PiB7IHN0YXRpYyBjb25zdCBjb25zdGV4cHIgSlNDOjpTcGVjdWxhdGVk
VHlwZSB2YWx1ZSA9IEpTQzo6U3BlY0hlYXBUb3A7IH07Cit0ZW1wbGF0ZTw+IHN0cnVjdCBJRExS
ZXN1bHRUeXBlRmlsdGVyPElETEJvb2xlYW4+IHsgc3RhdGljIGNvbnN0IGNvbnN0ZXhwciBKU0M6
OlNwZWN1bGF0ZWRUeXBlIHZhbHVlID0gSlNDOjpTcGVjQm9vbGVhbjsgfTsKK3RlbXBsYXRlPD4g
c3RydWN0IElETFJlc3VsdFR5cGVGaWx0ZXI8SURMQnl0ZT4geyBzdGF0aWMgY29uc3QgY29uc3Rl
eHByIEpTQzo6U3BlY3VsYXRlZFR5cGUgdmFsdWUgPSBKU0M6OlNwZWNJbnQzMk9ubHk7IH07Cit0
ZW1wbGF0ZTw+IHN0cnVjdCBJRExSZXN1bHRUeXBlRmlsdGVyPElETE9jdGV0PiB7IHN0YXRpYyBj
b25zdCBjb25zdGV4cHIgSlNDOjpTcGVjdWxhdGVkVHlwZSB2YWx1ZSA9IEpTQzo6U3BlY0ludDMy
T25seTsgfTsKK3RlbXBsYXRlPD4gc3RydWN0IElETFJlc3VsdFR5cGVGaWx0ZXI8SURMU2hvcnQ+
IHsgc3RhdGljIGNvbnN0IGNvbnN0ZXhwciBKU0M6OlNwZWN1bGF0ZWRUeXBlIHZhbHVlID0gSlND
OjpTcGVjSW50MzJPbmx5OyB9OwordGVtcGxhdGU8PiBzdHJ1Y3QgSURMUmVzdWx0VHlwZUZpbHRl
cjxJRExVbnNpZ25lZFNob3J0PiB7IHN0YXRpYyBjb25zdCBjb25zdGV4cHIgSlNDOjpTcGVjdWxh
dGVkVHlwZSB2YWx1ZSA9IEpTQzo6U3BlY0ludDMyT25seTsgfTsKK3RlbXBsYXRlPD4gc3RydWN0
IElETFJlc3VsdFR5cGVGaWx0ZXI8SURMTG9uZz4geyBzdGF0aWMgY29uc3QgY29uc3RleHByIEpT
Qzo6U3BlY3VsYXRlZFR5cGUgdmFsdWUgPSBKU0M6OlNwZWNJbnQzMk9ubHk7IH07Cit0ZW1wbGF0
ZTw+IHN0cnVjdCBJRExSZXN1bHRUeXBlRmlsdGVyPElETFVuc2lnbmVkTG9uZz4geyBzdGF0aWMg
Y29uc3QgY29uc3RleHByIEpTQzo6U3BlY3VsYXRlZFR5cGUgdmFsdWUgPSBKU0M6OlNwZWNCeXRl
Y29kZU51bWJlcjsgfTsKK3RlbXBsYXRlPD4gc3RydWN0IElETFJlc3VsdFR5cGVGaWx0ZXI8SURM
TG9uZ0xvbmc+IHsgc3RhdGljIGNvbnN0IGNvbnN0ZXhwciBKU0M6OlNwZWN1bGF0ZWRUeXBlIHZh
bHVlID0gSlNDOjpTcGVjQnl0ZWNvZGVOdW1iZXI7IH07Cit0ZW1wbGF0ZTw+IHN0cnVjdCBJRExS
ZXN1bHRUeXBlRmlsdGVyPElETFVuc2lnbmVkTG9uZ0xvbmc+IHsgc3RhdGljIGNvbnN0IGNvbnN0
ZXhwciBKU0M6OlNwZWN1bGF0ZWRUeXBlIHZhbHVlID0gSlNDOjpTcGVjQnl0ZWNvZGVOdW1iZXI7
IH07Cit0ZW1wbGF0ZTw+IHN0cnVjdCBJRExSZXN1bHRUeXBlRmlsdGVyPElETEZsb2F0PiB7IHN0
YXRpYyBjb25zdCBjb25zdGV4cHIgSlNDOjpTcGVjdWxhdGVkVHlwZSB2YWx1ZSA9IEpTQzo6U3Bl
Y0J5dGVjb2RlTnVtYmVyOyB9OwordGVtcGxhdGU8PiBzdHJ1Y3QgSURMUmVzdWx0VHlwZUZpbHRl
cjxJRExVbnJlc3RyaWN0ZWRGbG9hdD4geyBzdGF0aWMgY29uc3QgY29uc3RleHByIEpTQzo6U3Bl
Y3VsYXRlZFR5cGUgdmFsdWUgPSBKU0M6OlNwZWNCeXRlY29kZU51bWJlcjsgfTsKK3RlbXBsYXRl
PD4gc3RydWN0IElETFJlc3VsdFR5cGVGaWx0ZXI8SURMRG91YmxlPiB7IHN0YXRpYyBjb25zdCBj
b25zdGV4cHIgSlNDOjpTcGVjdWxhdGVkVHlwZSB2YWx1ZSA9IEpTQzo6U3BlY0J5dGVjb2RlTnVt
YmVyOyB9OwordGVtcGxhdGU8PiBzdHJ1Y3QgSURMUmVzdWx0VHlwZUZpbHRlcjxJRExVbnJlc3Ry
aWN0ZWREb3VibGU+IHsgc3RhdGljIGNvbnN0IGNvbnN0ZXhwciBKU0M6OlNwZWN1bGF0ZWRUeXBl
IHZhbHVlID0gSlNDOjpTcGVjQnl0ZWNvZGVOdW1iZXI7IH07Cit0ZW1wbGF0ZTw+IHN0cnVjdCBJ
RExSZXN1bHRUeXBlRmlsdGVyPElETERPTVN0cmluZz4geyBzdGF0aWMgY29uc3QgY29uc3RleHBy
IEpTQzo6U3BlY3VsYXRlZFR5cGUgdmFsdWUgPSBKU0M6OlNwZWNTdHJpbmc7IH07Cit0ZW1wbGF0
ZTw+IHN0cnVjdCBJRExSZXN1bHRUeXBlRmlsdGVyPElETEJ5dGVTdHJpbmc+IHsgc3RhdGljIGNv
bnN0IGNvbnN0ZXhwciBKU0M6OlNwZWN1bGF0ZWRUeXBlIHZhbHVlID0gSlNDOjpTcGVjU3RyaW5n
OyB9OwordGVtcGxhdGU8PiBzdHJ1Y3QgSURMUmVzdWx0VHlwZUZpbHRlcjxJRExVU1ZTdHJpbmc+
IHsgc3RhdGljIGNvbnN0IGNvbnN0ZXhwciBKU0M6OlNwZWN1bGF0ZWRUeXBlIHZhbHVlID0gSlND
OjpTcGVjU3RyaW5nOyB9OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorc3RydWN0IElETFJlc3Vs
dFR5cGVGaWx0ZXI8SURMTnVsbGFibGU8VD4+IHsKKyAgICBzdGF0aWMgY29uc3QgY29uc3RleHBy
IEpTQzo6U3BlY3VsYXRlZFR5cGUgdmFsdWUgPSBKU0M6OlNwZWNPdGhlciB8IElETFJlc3VsdFR5
cGVGaWx0ZXI8VD46OnZhbHVlOworfTsKKworfSB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9kb21qaXQvSlNEb2N1bWVudERPTUpJVC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb21qaXQvSlNE
b2N1bWVudERPTUpJVC5jcHAKaW5kZXggOWI0OGQ5ZmRhNThhNjJkMDdmYjIzYWFiNDU2YmY5NGI3
ZWQ4ZmMyZi4uYmJmZWU3ZGM0YmI3ODJlNzNjZjI3Yzk3N2JjMTgyOTRhNTk0YjZkOCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZG9taml0L0pTRG9jdW1lbnRET01KSVQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2RvbWppdC9KU0RvY3VtZW50RE9NSklULmNwcApAQCAtNDgsNyArNDgsNiBA
QCBSZWY8SlNDOjpET01KSVQ6OlBhdGNocG9pbnQ+IERvY3VtZW50RG9jdW1lbnRFbGVtZW50RE9N
SklUOjpjaGVja0RPTSgpCiAKIFJlZjxKU0M6OkRPTUpJVDo6Q2FsbERPTUdldHRlclBhdGNocG9p
bnQ+IERvY3VtZW50RG9jdW1lbnRFbGVtZW50RE9NSklUOjpjYWxsRE9NR2V0dGVyKCkKIHsKLSAg
ICBjb25zdCBhdXRvJiBoZWFwID0gRE9NSklUOjpBYnN0cmFjdEhlYXBSZXBvc2l0b3J5OjpzaGFy
ZWQoKTsKICAgICBSZWY8SlNDOjpET01KSVQ6OkNhbGxET01HZXR0ZXJQYXRjaHBvaW50PiBwYXRj
aHBvaW50ID0gSlNDOjpET01KSVQ6OkNhbGxET01HZXR0ZXJQYXRjaHBvaW50OjpjcmVhdGUoKTsK
ICAgICBwYXRjaHBvaW50LT5udW1HUFNjcmF0Y2hSZWdpc3RlcnMgPSAxOwogICAgIHBhdGNocG9p
bnQtPnNldEdlbmVyYXRvcihbPV0oQ0NhbGxIZWxwZXJzJiBqaXQsIEpTQzo6RE9NSklUOjpQYXRj
aHBvaW50UGFyYW1zJiBwYXJhbXMpIHsKQEAgLTcwLDcgKzY5LDcgQEAgUmVmPEpTQzo6RE9NSklU
OjpDYWxsRE9NR2V0dGVyUGF0Y2hwb2ludD4gRG9jdW1lbnREb2N1bWVudEVsZW1lbnRET01KSVQ6
OmNhbGxET00KIAogICAgICAgICByZXR1cm4gQ0NhbGxIZWxwZXJzOjpKdW1wTGlzdCgpOwogICAg
IH0pOwotICAgIHBhdGNocG9pbnQtPmVmZmVjdCA9IEpTQzo6RE9NSklUOjpFZmZlY3Q6OmZvckRl
ZihoZWFwLkRvY3VtZW50X2RvY3VtZW50RWxlbWVudCk7CisgICAgcGF0Y2hwb2ludC0+ZWZmZWN0
ID0gSlNDOjpET01KSVQ6OkVmZmVjdDo6Zm9yRGVmKERPTUpJVDo6QWJzdHJhY3RIZWFwUmVwb3Np
dG9yeTo6RG9jdW1lbnRfZG9jdW1lbnRFbGVtZW50KTsKICAgICByZXR1cm4gcGF0Y2hwb2ludDsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9taml0L0pTTm9kZURPTUpJVC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9kb21qaXQvSlNOb2RlRE9NSklULmNwcAppbmRleCAxZDc5MDFlYzQx
ZDdhY2VmMWQwZDc4ZjYxMzI2ZmJlOGExM2E5MWJmLi5kYjMxMGVhMzQ1Mjg0OTE0MjQyOGQzZDYx
NmY4MWIyYzY3YzUxNjU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb21qaXQvSlNOb2Rl
RE9NSklULmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb21qaXQvSlNOb2RlRE9NSklULmNwcApA
QCAtODMsOSArODMsOCBAQCBSZWY8SlNDOjpET01KSVQ6OlBhdGNocG9pbnQ+IE5vZGVGaXJzdENo
aWxkRE9NSklUOjpjaGVja0RPTSgpCiAKIFJlZjxKU0M6OkRPTUpJVDo6Q2FsbERPTUdldHRlclBh
dGNocG9pbnQ+IE5vZGVGaXJzdENoaWxkRE9NSklUOjpjYWxsRE9NR2V0dGVyKCkKIHsKLSAgICBj
b25zdCBhdXRvJiBoZWFwID0gRE9NSklUOjpBYnN0cmFjdEhlYXBSZXBvc2l0b3J5OjpzaGFyZWQo
KTsKICAgICBhdXRvIHBhdGNocG9pbnQgPSBjcmVhdGVDYWxsRE9NR2V0dGVyRm9yT2Zmc2V0QWNj
ZXNzPE5vZGU+KENBU1RfT0ZGU0VUKE5vZGUqLCBDb250YWluZXJOb2RlKikgKyBDb250YWluZXJO
b2RlOjpmaXJzdENoaWxkTWVtb3J5T2Zmc2V0KCksIElzQ29udGFpbmVyR3VhcmRSZXF1aXJlbWVu
dDo6UmVxdWlyZWQpOwotICAgIHBhdGNocG9pbnQtPmVmZmVjdCA9IEpTQzo6RE9NSklUOjpFZmZl
Y3Q6OmZvckRlZihoZWFwLk5vZGVfZmlyc3RDaGlsZCk7CisgICAgcGF0Y2hwb2ludC0+ZWZmZWN0
ID0gSlNDOjpET01KSVQ6OkVmZmVjdDo6Zm9yRGVmKERPTUpJVDo6QWJzdHJhY3RIZWFwUmVwb3Np
dG9yeTo6Tm9kZV9maXJzdENoaWxkKTsKICAgICByZXR1cm4gcGF0Y2hwb2ludDsKIH0KIApAQCAt
OTYsOSArOTUsOCBAQCBSZWY8SlNDOjpET01KSVQ6OlBhdGNocG9pbnQ+IE5vZGVMYXN0Q2hpbGRE
T01KSVQ6OmNoZWNrRE9NKCkKIAogUmVmPEpTQzo6RE9NSklUOjpDYWxsRE9NR2V0dGVyUGF0Y2hw
b2ludD4gTm9kZUxhc3RDaGlsZERPTUpJVDo6Y2FsbERPTUdldHRlcigpCiB7Ci0gICAgY29uc3Qg
YXV0byYgaGVhcCA9IERPTUpJVDo6QWJzdHJhY3RIZWFwUmVwb3NpdG9yeTo6c2hhcmVkKCk7CiAg
ICAgYXV0byBwYXRjaHBvaW50ID0gY3JlYXRlQ2FsbERPTUdldHRlckZvck9mZnNldEFjY2VzczxO
b2RlPihDQVNUX09GRlNFVChOb2RlKiwgQ29udGFpbmVyTm9kZSopICsgQ29udGFpbmVyTm9kZTo6
bGFzdENoaWxkTWVtb3J5T2Zmc2V0KCksIElzQ29udGFpbmVyR3VhcmRSZXF1aXJlbWVudDo6UmVx
dWlyZWQpOwotICAgIHBhdGNocG9pbnQtPmVmZmVjdCA9IEpTQzo6RE9NSklUOjpFZmZlY3Q6OmZv
ckRlZihoZWFwLk5vZGVfbGFzdENoaWxkKTsKKyAgICBwYXRjaHBvaW50LT5lZmZlY3QgPSBKU0M6
OkRPTUpJVDo6RWZmZWN0Ojpmb3JEZWYoRE9NSklUOjpBYnN0cmFjdEhlYXBSZXBvc2l0b3J5OjpO
b2RlX2xhc3RDaGlsZCk7CiAgICAgcmV0dXJuIHBhdGNocG9pbnQ7CiB9CiAKQEAgLTEwOSw5ICsx
MDcsOCBAQCBSZWY8SlNDOjpET01KSVQ6OlBhdGNocG9pbnQ+IE5vZGVOZXh0U2libGluZ0RPTUpJ
VDo6Y2hlY2tET00oKQogCiBSZWY8SlNDOjpET01KSVQ6OkNhbGxET01HZXR0ZXJQYXRjaHBvaW50
PiBOb2RlTmV4dFNpYmxpbmdET01KSVQ6OmNhbGxET01HZXR0ZXIoKQogewotICAgIGNvbnN0IGF1
dG8mIGhlYXAgPSBET01KSVQ6OkFic3RyYWN0SGVhcFJlcG9zaXRvcnk6OnNoYXJlZCgpOwogICAg
IGF1dG8gcGF0Y2hwb2ludCA9IGNyZWF0ZUNhbGxET01HZXR0ZXJGb3JPZmZzZXRBY2Nlc3M8Tm9k
ZT4oTm9kZTo6bmV4dFNpYmxpbmdNZW1vcnlPZmZzZXQoKSwgSXNDb250YWluZXJHdWFyZFJlcXVp
cmVtZW50OjpOb3RSZXF1aXJlZCk7Ci0gICAgcGF0Y2hwb2ludC0+ZWZmZWN0ID0gSlNDOjpET01K
SVQ6OkVmZmVjdDo6Zm9yRGVmKGhlYXAuTm9kZV9uZXh0U2libGluZyk7CisgICAgcGF0Y2hwb2lu
dC0+ZWZmZWN0ID0gSlNDOjpET01KSVQ6OkVmZmVjdDo6Zm9yRGVmKERPTUpJVDo6QWJzdHJhY3RI
ZWFwUmVwb3NpdG9yeTo6Tm9kZV9uZXh0U2libGluZyk7CiAgICAgcmV0dXJuIHBhdGNocG9pbnQ7
CiB9CiAKQEAgLTEyMiw5ICsxMTksOCBAQCBSZWY8SlNDOjpET01KSVQ6OlBhdGNocG9pbnQ+IE5v
ZGVQcmV2aW91c1NpYmxpbmdET01KSVQ6OmNoZWNrRE9NKCkKIAogUmVmPEpTQzo6RE9NSklUOjpD
YWxsRE9NR2V0dGVyUGF0Y2hwb2ludD4gTm9kZVByZXZpb3VzU2libGluZ0RPTUpJVDo6Y2FsbERP
TUdldHRlcigpCiB7Ci0gICAgY29uc3QgYXV0byYgaGVhcCA9IERPTUpJVDo6QWJzdHJhY3RIZWFw
UmVwb3NpdG9yeTo6c2hhcmVkKCk7CiAgICAgYXV0byBwYXRjaHBvaW50ID0gY3JlYXRlQ2FsbERP
TUdldHRlckZvck9mZnNldEFjY2VzczxOb2RlPihOb2RlOjpwcmV2aW91c1NpYmxpbmdNZW1vcnlP
ZmZzZXQoKSwgSXNDb250YWluZXJHdWFyZFJlcXVpcmVtZW50OjpOb3RSZXF1aXJlZCk7Ci0gICAg
cGF0Y2hwb2ludC0+ZWZmZWN0ID0gSlNDOjpET01KSVQ6OkVmZmVjdDo6Zm9yRGVmKGhlYXAuTm9k
ZV9wcmV2aW91c1NpYmxpbmcpOworICAgIHBhdGNocG9pbnQtPmVmZmVjdCA9IEpTQzo6RE9NSklU
OjpFZmZlY3Q6OmZvckRlZihET01KSVQ6OkFic3RyYWN0SGVhcFJlcG9zaXRvcnk6Ok5vZGVfcHJl
dmlvdXNTaWJsaW5nKTsKICAgICByZXR1cm4gcGF0Y2hwb2ludDsKIH0KIApAQCAtMTM1LDkgKzEz
MSw4IEBAIFJlZjxKU0M6OkRPTUpJVDo6UGF0Y2hwb2ludD4gTm9kZVBhcmVudE5vZGVET01KSVQ6
OmNoZWNrRE9NKCkKIAogUmVmPEpTQzo6RE9NSklUOjpDYWxsRE9NR2V0dGVyUGF0Y2hwb2ludD4g
Tm9kZVBhcmVudE5vZGVET01KSVQ6OmNhbGxET01HZXR0ZXIoKQogewotICAgIGNvbnN0IGF1dG8m
IGhlYXAgPSBET01KSVQ6OkFic3RyYWN0SGVhcFJlcG9zaXRvcnk6OnNoYXJlZCgpOwogICAgIGF1
dG8gcGF0Y2hwb2ludCA9IGNyZWF0ZUNhbGxET01HZXR0ZXJGb3JPZmZzZXRBY2Nlc3M8Q29udGFp
bmVyTm9kZT4oTm9kZTo6cGFyZW50Tm9kZU1lbW9yeU9mZnNldCgpLCBJc0NvbnRhaW5lckd1YXJk
UmVxdWlyZW1lbnQ6Ok5vdFJlcXVpcmVkKTsKLSAgICBwYXRjaHBvaW50LT5lZmZlY3QgPSBKU0M6
OkRPTUpJVDo6RWZmZWN0Ojpmb3JEZWYoaGVhcC5Ob2RlX3BhcmVudE5vZGUpOworICAgIHBhdGNo
cG9pbnQtPmVmZmVjdCA9IEpTQzo6RE9NSklUOjpFZmZlY3Q6OmZvckRlZihET01KSVQ6OkFic3Ry
YWN0SGVhcFJlcG9zaXRvcnk6Ok5vZGVfcGFyZW50Tm9kZSk7CiAgICAgcmV0dXJuIHBhdGNocG9p
bnQ7CiB9CiAKQEAgLTE2OSw3ICsxNjQsNiBAQCBSZWY8SlNDOjpET01KSVQ6OlBhdGNocG9pbnQ+
IE5vZGVPd25lckRvY3VtZW50RE9NSklUOjpjaGVja0RPTSgpCiAKIFJlZjxKU0M6OkRPTUpJVDo6
Q2FsbERPTUdldHRlclBhdGNocG9pbnQ+IE5vZGVPd25lckRvY3VtZW50RE9NSklUOjpjYWxsRE9N
R2V0dGVyKCkKIHsKLSAgICBjb25zdCBhdXRvJiBoZWFwID0gRE9NSklUOjpBYnN0cmFjdEhlYXBS
ZXBvc2l0b3J5OjpzaGFyZWQoKTsKICAgICBSZWY8SlNDOjpET01KSVQ6OkNhbGxET01HZXR0ZXJQ
YXRjaHBvaW50PiBwYXRjaHBvaW50ID0gSlNDOjpET01KSVQ6OkNhbGxET01HZXR0ZXJQYXRjaHBv
aW50OjpjcmVhdGUoKTsKICAgICBwYXRjaHBvaW50LT5udW1HUFNjcmF0Y2hSZWdpc3RlcnMgPSAx
OwogICAgIHBhdGNocG9pbnQtPnNldEdlbmVyYXRvcihbPV0oQ0NhbGxIZWxwZXJzJiBqaXQsIEpT
Qzo6RE9NSklUOjpQYXRjaHBvaW50UGFyYW1zJiBwYXJhbXMpIHsKQEAgLTE5MSw3ICsxODUsNyBA
QCBSZWY8SlNDOjpET01KSVQ6OkNhbGxET01HZXR0ZXJQYXRjaHBvaW50PiBOb2RlT3duZXJEb2N1
bWVudERPTUpJVDo6Y2FsbERPTUdldHRlcgogICAgICAgICBkb25lLmxpbmsoJmppdCk7CiAgICAg
ICAgIHJldHVybiBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0KCk7CiAgICAgfSk7Ci0gICAgcGF0Y2hw
b2ludC0+ZWZmZWN0ID0gSlNDOjpET01KSVQ6OkVmZmVjdDo6Zm9yRGVmKGhlYXAuTm9kZV9vd25l
ckRvY3VtZW50KTsKKyAgICBwYXRjaHBvaW50LT5lZmZlY3QgPSBKU0M6OkRPTUpJVDo6RWZmZWN0
Ojpmb3JEZWYoRE9NSklUOjpBYnN0cmFjdEhlYXBSZXBvc2l0b3J5OjpOb2RlX293bmVyRG9jdW1l
bnQpOwogICAgIHJldHVybiBwYXRjaHBvaW50OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9kb21qaXQvZ2VuZXJhdGUtYWJzdHJhY3QtaGVhcC5yYiBiL1NvdXJjZS9XZWJDb3JlL2Rv
bWppdC9nZW5lcmF0ZS1hYnN0cmFjdC1oZWFwLnJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI3NDEyZTg1ZDY5ZjQ5
MWEyZWFhYmFhNjE3OGYxYjI1YTAyZDA5YjQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9kb21qaXQvZ2VuZXJhdGUtYWJzdHJhY3QtaGVhcC5yYgpAQCAtMCwwICsxLDE2NSBAQAor
IyEvdXNyL2Jpbi9lbnYgcnVieQorIyAtKi0gY29kaW5nOiB1dGYtOCAtKi0KKyMgQ29weXJpZ2h0
IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworIyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyMgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorIyBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorIyBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorIyBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyMgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyMgQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyMgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorIyBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK3JlcXVpcmUgInlhbWwiCisKK2NsYXNzIEhlYXBS
YW5nZQorICAgIGF0dHJfcmVhZGVyIDpmaXJzdCwgOmxhc3QKKyAgICBkZWYgaW5pdGlhbGl6ZShm
aXJzdCwgbGFzdCkKKyAgICAgICAgQGZpcnN0ID0gZmlyc3QKKyAgICAgICAgQGxhc3QgPSBsYXN0
CisgICAgZW5kCitlbmQKKworY2xhc3MgQWJzdHJhY3RIZWFwCisgICAgYXR0cl9yZWFkZXIgOnJh
bmdlLCA6bmFtZSwgOnBhcmVudAorICAgIGRlZiBpbml0aWFsaXplKG5hbWUsIHRyZWUpCisgICAg
ICAgIEBuYW1lID0gbmFtZQorICAgICAgICBAcGFyZW50ID0gbmlsCisgICAgICAgIGlmIHRyZWUu
bmlsPworICAgICAgICAgICAgQGNoaWxkcmVuID0gW10KKyAgICAgICAgZWxzZQorICAgICAgICAg
ICAgQGNoaWxkcmVuID0gdHJlZS5tYXAge3xrZXksIHZhbHVlfCBBYnN0cmFjdEhlYXAubmV3KGtl
eSwgdmFsdWUpIH0KKyAgICAgICAgZW5kCisgICAgICAgIEByYW5nZSA9IG5pbAorICAgIGVuZAor
CisgICAgZGVmIHNldFBhcmVudChwYXJlbnQpCisgICAgICAgIHBhcmVudC5jaGlsZHJlbi5wdXNo
KHNlbGYpCisgICAgICAgIEBwYXJlbnQgPSBwYXJlbnQKKyAgICBlbmQKKworICAgIGRlZiBjb21w
dXRlKHN0YXJ0KQorICAgICAgICBjdXJyZW50ID0gc3RhcnQKKyAgICAgICAgaWYgQGNoaWxkcmVu
LmVtcHR5PworICAgICAgICAgICAgQHJhbmdlID0gSGVhcFJhbmdlLm5ldyhzdGFydCwgY3VycmVu
dCArIDEpCisgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgZW5kCisKKyAgICAgICAgQGNoaWxk
cmVuLmVhY2gge3xjaGlsZHwKKyAgICAgICAgICAgIGNoaWxkLmNvbXB1dGUoY3VycmVudCkKKyAg
ICAgICAgICAgIGN1cnJlbnQgPSBjaGlsZC5yYW5nZS5sYXN0CisgICAgICAgIH0KKworICAgICAg
ICBAcmFuZ2UgPSBIZWFwUmFuZ2UubmV3KHN0YXJ0LCBjdXJyZW50KQorICAgIGVuZAorCisgICAg
ZGVmIGR1bXAgb3V0cHV0CisgICAgICAgIHNoYWxsb3dEdW1wKG91dHB1dCkKKyAgICAgICAgaWYg
QHBhcmVudAorICAgICAgICAgICAgb3V0cHV0LnByaW50ICItPiAiCisgICAgICAgICAgICBAcGFy
ZW50LmR1bXAob3V0cHV0KQorICAgICAgICBlbmQKKyAgICBlbmQKKworICAgIGRlZiBzaGFsbG93
RHVtcChvdXRwdXQpCisgICAgICAgIG91dHB1dC5wcmludCAiI3tAbmFtZX08I3tAcmFuZ2UuZmly
c3R9LCN7QHJhbmdlLmxhc3R9PiIKKyAgICBlbmQKKworICAgIGRlZiBkZWVwRHVtcCBvdXRwdXQs
IGluZGVudAorICAgICAgICBwcmludEluZGVudChvdXRwdXQsIGluZGVudCkKKyAgICAgICAgc2hh
bGxvd0R1bXAob3V0cHV0KQorICAgICAgICBpZiBAY2hpbGRyZW4uZW1wdHk/CisgICAgICAgICAg
ICBvdXRwdXQucHJpbnQgIlxuIgorICAgICAgICAgICAgcmV0dXJuCisgICAgICAgIGVuZAorCisg
ICAgICAgIG91dHB1dC5wcmludCAiOlxuIgorICAgICAgICBAY2hpbGRyZW4uZWFjaCB7fGNoaWxk
fAorICAgICAgICAgICAgY2hpbGQuZGVlcER1bXAob3V0cHV0LCBpbmRlbnQgKyAxKQorICAgICAg
ICB9CisgICAgZW5kCisKKyAgICBkZWYgZ2VuZXJhdGUgb3V0cHV0CisgICAgICAgIG91dHB1dC5w
dXRzICJjb25zdGV4cHIgSlNDOjpET01KSVQ6OkhlYXBSYW5nZSAje0BuYW1lfShKU0M6OkRPTUpJ
VDo6SGVhcFJhbmdlOjpDb25zdEV4cHIsICN7QHJhbmdlLmZpcnN0fSwgI3tAcmFuZ2UubGFzdH0p
OyIKKyAgICAgICAgQGNoaWxkcmVuLmVhY2gge3xjaGlsZHwKKyAgICAgICAgICAgIGNoaWxkLmdl
bmVyYXRlKG91dHB1dCkKKyAgICAgICAgfQorICAgIGVuZAorCitwcml2YXRlCisgICAgZGVmIHBy
aW50SW5kZW50IG91dHB1dCwgaW5kZW50CisgICAgICAgIGluZGVudC50aW1lcyB7CisgICAgICAg
ICAgICBvdXRwdXQucHJpbnQgIiAgICAiCisgICAgICAgIH0KKyAgICBlbmQKK2VuZAorCitoZWFk
ZXIgPSA8PC1FT1MKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
Ly8gQXV0by1nZW5lcmF0ZWQgZmlsZS4gRG8gbm90IG1vZGlmeS4KKworI3ByYWdtYSBvbmNlCisK
KyNpbmNsdWRlIDxkb21qaXQvRE9NSklUSGVhcFJhbmdlLmg+CisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsgbmFtZXNwYWNlIERPTUpJVCB7IG5hbWVzcGFjZSBBYnN0cmFjdEhlYXBSZXBvc2l0b3J5IHsK
K0VPUworCitmb290ZXIgPSA8PC1FT1MKK30gfSB9CitFT1MKKworJGlucHV0RmlsZU5hbWUgPSBB
UkdWLnNoaWZ0Ciskb3V0cHV0RmlsZU5hbWUgPSBBUkdWLnNoaWZ0CitGaWxlLm9wZW4oJG91dHB1
dEZpbGVOYW1lLCAidyIpIHt8b3V0cHV0fAorICAgIEZpbGUub3BlbigkaW5wdXRGaWxlTmFtZSwg
InJiIikge3xmaWxlfAorICAgICAgICB0cmVlID0gWUFNTDo6bG9hZChmaWxlLnJlYWQoKSkKKyAg
ICAgICAgaGVhcCA9IHRyZWUubWFwIHt8a2V5LCB2YWx1ZXwKKyAgICAgICAgICAgIEFic3RyYWN0
SGVhcC5uZXcoa2V5LCB2YWx1ZSkKKyAgICAgICAgfS5maXJzdAorICAgICAgICBoZWFwLmNvbXB1
dGUoMCkKKworICAgICAgICBvdXRwdXQucHJpbnQoaGVhZGVyKQorICAgICAgICBvdXRwdXQucHV0
cygiLyogRE9NSklUIEFic3RyYWN0IEhlYXAgVHJlZS4iKQorICAgICAgICBoZWFwLmRlZXBEdW1w
KG91dHB1dCwgMCkKKyAgICAgICAgb3V0cHV0LnB1dHMoIiovIikKKyAgICAgICAgaGVhcC5nZW5l
cmF0ZShvdXRwdXQpCisgICAgICAgIG91dHB1dC5wcmludChmb290ZXIpCisgICAgfQorfQpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmlu
ZGV4IGQ5YzUyYjgxMjYxOWU3MmE3MTg4ZWJhMTgwMGYxZWY1NzA2MGRhNDEuLmY4MDVhYWVjYTBh
NDE1M2Y0NDQzNGZjNDdiNGRlYmYyMzQ0OGU0YmUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0No
YW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMiBAQAorMjAx
Ni0xMS0wMiAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKworICAgICAg
ICBbRE9NSklUXSBBZGQgRE9NSklUOjpTaWduYXR1cmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2Mjk4MAorCisgICAgICAgIFJldmlld2VkIGJ5IFNh
YW0gQmFyYXRpLgorCisgICAgICAgICoganMvZG9tL2RvbWppdC1hY2Nlc3Nvci1saWNtLmh0bWw6
CisgICAgICAgICoganMvZG9tL2RvbWppdC1mdW5jdGlvbi1lZmZlY3Qtc2hvdWxkLW92ZXJsYXAt
d2l0aC1jYWxsLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICoganMvZG9tL2RvbWppdC1m
dW5jdGlvbi1lZmZlY3Qtc2hvdWxkLW92ZXJsYXAtd2l0aC1jYWxsLmh0bWw6IEFkZGVkLgorICAg
ICAgICAqIGpzL2RvbS9kb21qaXQtZnVuY3Rpb24tZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAg
ICAgKiBqcy9kb20vZG9taml0LWZ1bmN0aW9uLWxpY20tZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAg
ICAgICAgKiBqcy9kb20vZG9taml0LWZ1bmN0aW9uLWxpY20uaHRtbDogQ29waWVkIGZyb20gTGF5
b3V0VGVzdHMvanMvZG9tL2RvbWppdC1hY2Nlc3Nvci1saWNtLmh0bWwuCisgICAgICAgICoganMv
ZG9tL2RvbWppdC1mdW5jdGlvbi10eXBlLWNvbnRyYWRpY3Rpb24tZXhwZWN0ZWQudHh0OiBBZGRl
ZC4KKyAgICAgICAgKiBqcy9kb20vZG9taml0LWZ1bmN0aW9uLXR5cGUtY29udHJhZGljdGlvbi5o
dG1sOiBDb3BpZWQgZnJvbSBMYXlvdXRUZXN0cy9qcy9kb20vZG9taml0LWFjY2Vzc29yLWxpY20u
aHRtbC4KKyAgICAgICAgKiBqcy9kb20vZG9taml0LWZ1bmN0aW9uLXR5cGUtZmFpbHVyZS1leHBl
Y3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGpzL2RvbS9kb21qaXQtZnVuY3Rpb24tdHlwZS1m
YWlsdXJlLmh0bWw6IENvcGllZCBmcm9tIExheW91dFRlc3RzL2pzL2RvbS9kb21qaXQtYWNjZXNz
b3ItbGljbS5odG1sLgorICAgICAgICAqIGpzL2RvbS9kb21qaXQtZnVuY3Rpb24uaHRtbDogQWRk
ZWQuCisKIDIwMTYtMTEtMDIgIFJ5YW4gSGFkZGFkICA8cnlhbmhhZGRhZEBhcHBsZS5jb20+CiAK
ICAgICAgICAgTWFya2luZyBpbXBvcnRlZC9tb3ppbGxhL3N2Zy9wYWludC1vcmRlci0wMS5zdmcg
YW5kIGltcG9ydGVkL21vemlsbGEvc3ZnL3BhaW50LW9yZGVyLTAyLnN2ZyBhcyBmbGFreS4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL2RvbS9kb21qaXQtYWNjZXNzb3ItbGljbS5odG1sIGIv
TGF5b3V0VGVzdHMvanMvZG9tL2RvbWppdC1hY2Nlc3Nvci1saWNtLmh0bWwKaW5kZXggZTU2M2Vi
YTg5ZmZjZGEyOTFiNTI0ZGNkZjc1MGUyYTMwNmFlMzIwNS4uNDBkNTU2MGRhMDUzOWNiZjA4NGE5
ZTFkMWVmM2ZlM2YxZGMzNTQ0ZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvanMvZG9tL2RvbWpp
dC1hY2Nlc3Nvci1saWNtLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvanMvZG9tL2RvbWppdC1hY2Nl
c3Nvci1saWNtLmh0bWwKQEAgLTEsMTQgKzEsMyBAQAotPCFET0NUWVBFIEhUTUw+Ci08aHRtbCBs
YW5nPSJlbiI+Ci08aGVhZD4KLTxtZXRhIGNoYXJzZXQ9IlVURi04Ij4KLTwvaGVhZD4KLTxib2R5
PgotPHNjcmlwdD4KLQotPC9zY3JpcHQ+Ci08L2JvZHk+Ci08L2h0bWw+CiA8IURPQ1RZUEUgaHRt
bD4KIDxodG1sPgogPGhlYWQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9kb20vZG9taml0
LWZ1bmN0aW9uLWVmZmVjdC1zaG91bGQtb3ZlcmxhcC13aXRoLWNhbGwtZXhwZWN0ZWQudHh0IGIv
TGF5b3V0VGVzdHMvanMvZG9tL2RvbWppdC1mdW5jdGlvbi1lZmZlY3Qtc2hvdWxkLW92ZXJsYXAt
d2l0aC1jYWxsLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xMWRjMTk2YTMyZTI4OGMxMmY1MTQ1
NjFjZmMyMTRkMjllYjljODE3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMvZG9t
L2RvbWppdC1mdW5jdGlvbi1lZmZlY3Qtc2hvdWxkLW92ZXJsYXAtd2l0aC1jYWxsLWV4cGVjdGVk
LnR4dApAQCAtMCwwICsxLDEwIEBACitUZXN0IGZ1bmN0aW9uIGNhbGxzIHNob3VsZCBvdmVybGFw
IHdpdGggZWZmZWN0cyBvZiBET01KSVQgZnVuY3Rpb25zLgorCitPbiBzdWNjZXNzLCB5b3Ugd2ls
bCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01Q
TEVURSIuCisKKworUEFTUyB0ZXN0KCkgaXMgdHJ1ZQorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQg
aXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL2Rv
bS9kb21qaXQtZnVuY3Rpb24tZWZmZWN0LXNob3VsZC1vdmVybGFwLXdpdGgtY2FsbC5odG1sIGIv
TGF5b3V0VGVzdHMvanMvZG9tL2RvbWppdC1mdW5jdGlvbi1lZmZlY3Qtc2hvdWxkLW92ZXJsYXAt
d2l0aC1jYWxsLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjhjYjM5MmIyOTQxYmJiOGQzMzFhNzkzMzFkNThj
M2ZhNTgzMDVlNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2pzL2RvbS9kb21qaXQt
ZnVuY3Rpb24tZWZmZWN0LXNob3VsZC1vdmVybGFwLXdpdGgtY2FsbC5odG1sCkBAIC0wLDAgKzEs
MzMgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8u
Li9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8
ZGl2IGlkPSJ0YXJnZXQiPjwvZGl2PgorPC9kaXY+CisKKzxzY3JpcHQ+CitkZXNjcmlwdGlvbign
VGVzdCBmdW5jdGlvbiBjYWxscyBzaG91bGQgb3ZlcmxhcCB3aXRoIGVmZmVjdHMgb2YgRE9NSklU
IGZ1bmN0aW9ucy4nKTsKKworZnVuY3Rpb24gdGVzdCgpCit7CisgICAgdmFyIHRhcmdldCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCd0YXJnZXQnKTsKKyAgICB0YXJnZXQuc2V0QXR0cmlidXRl
KCJjb2NvYSIsICIwIik7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxZTQ7ICsraSkgeworICAg
ICAgICB2YXIgcmV0ID0gdGFyZ2V0LmdldEF0dHJpYnV0ZSgiY29jb2EiKTsKKyAgICAgICAgaWYg
KHJldCAhPT0gU3RyaW5nKGkpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB0
YXJnZXQuc2V0QXR0cmlidXRlKCJjb2NvYSIsIFN0cmluZyhpICsgMSkpOworICAgICAgICB2YXIg
cmV0ID0gdGFyZ2V0LmdldEF0dHJpYnV0ZSgiY29jb2EiKTsKKyAgICAgICAgaWYgKHJldCA9PT0g
U3RyaW5nKGkpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICByZXR1cm4g
dHJ1ZTsKK30KKworc2hvdWxkQmVUcnVlKGB0ZXN0KClgKTsKKzwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5Pgor
PC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvZG9tL2RvbWppdC1mdW5jdGlvbi1l
eHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9qcy9kb20vZG9taml0LWZ1bmN0aW9uLWV4cGVjdGVk
LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi40NWU1NmViZGNkOWY2ZjE4NmM0N2NlNzY4YzE1YzIyNWViZTJkMGM3
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMvZG9tL2RvbWppdC1mdW5jdGlvbi1l
eHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMCBAQAorVGVzdCBET01KSVQgZnVuY3Rpb25zIHdvcmsu
CisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMs
IGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIEFsbCB0ZXN0cyBwYXNzZWQu
CitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvZG9tL2RvbWppdC1mdW5jdGlvbi1saWNtLWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL2pzL2RvbS9kb21qaXQtZnVuY3Rpb24tbGljbS1leHBlY3RlZC50
eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uZjEzYzAzMzA1OTY2MmU1NThiYzZmYjlkNzM5YWIzN2U3OTYxYzhmYgot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2pzL2RvbS9kb21qaXQtZnVuY3Rpb24tbGlj
bS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw4IEBACitUZXN0IERPTUpJVCBmdW5jdGlvbiB3aWxs
IGJlIExJQ00tZWQuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFT
UyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworUEFTUyBzdWNjZXNz
ZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2pzL2RvbS9kb21qaXQtZnVuY3Rpb24tbGljbS5odG1sIGIvTGF5b3V0VGVzdHMvanMv
ZG9tL2RvbWppdC1mdW5jdGlvbi1saWNtLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWYyZTM5OWRkMzU5ZTFj
NGZjYjRkZmRlMmJhY2U5ZTFhMGQ0NGQzOQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2pzL2RvbS9kb21qaXQtZnVuY3Rpb24tbGljbS5odG1sCkBAIC0wLDAgKzEsMzUgQEAKKzwhRE9D
VFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMv
anMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNj
cmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKworPGRpdiBpZD0icGFy
ZW50Tm9kZSI+Cis8ZGl2IGlkPSJwcmV2aW91c1NpYmxpbmciPjwvZGl2PjxkaXYgaWQ9InRhcmdl
dCI+PGRpdiBpZD0iZmlyc3RDaGlsZCI+PC9kaXY+PGRpdiBpZD0ibGFzdENoaWxkIj48L2Rpdj48
L2Rpdj48ZGl2IGlkPSJuZXh0U2libGluZyI+PC9kaXY+Cis8L2Rpdj4KKworPHNjcmlwdD4KK2Rl
c2NyaXB0aW9uKCdUZXN0IERPTUpJVCBmdW5jdGlvbiB3aWxsIGJlIExJQ00tZWQuJyk7CisKK2Z1
bmN0aW9uIHRlc3QoKSB7CisgICAgdmFyIGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2Rp
dicpOworICAgIHZhciByZXQgPSAiaW52YWxpZCI7CisgICAgZGl2LnNldEF0dHJpYnV0ZSgiY29j
b2EiLCAiQ29jb2EiKTsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IDFlNDsgKytpKQorICAgICAg
ICByZXQgPSBkaXYuZ2V0QXR0cmlidXRlKCJjb2NvYSIpOworICAgIHJldHVybiByZXQ7Cit9Cit2
YXIgcmVzdWx0OworKGZ1bmN0aW9uICgpIHsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IDEwMDsg
KytpKSB7CisgICAgICAgIHJlc3VsdCA9IHRlc3QoKTsKKyAgICAgICAgc2hvdWxkQmUoYHJlc3Vs
dGAsIGAiQ29jb2EiYCwgdHJ1ZSk7CisgICAgfQorfSgpKTsKKzwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5Pgor
PC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvZG9tL2RvbWppdC1mdW5jdGlvbi10
eXBlLWNvbnRyYWRpY3Rpb24tZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvanMvZG9tL2RvbWpp
dC1mdW5jdGlvbi10eXBlLWNvbnRyYWRpY3Rpb24tZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNk
Njg3N2Q0YTgwMDY4OGIyMTY3N2JlZmFmZmVlZmZkOGFiMGI3OTYKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9qcy9kb20vZG9taml0LWZ1bmN0aW9uLXR5cGUtY29udHJhZGljdGlvbi1l
eHBlY3RlZC50eHQKQEAgLTAsMCArMSw4IEBACitUZXN0IERPTUpJVCBmdW5jdGlvbiB3aWxsIGNh
dXNlIHR5cGUgY29udHJhZGljdGlvbiBnaXZpbmcgdXAuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxs
IHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBM
RVRFIi4KKworUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRF
CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL2RvbS9kb21qaXQtZnVuY3Rpb24tdHlwZS1j
b250cmFkaWN0aW9uLmh0bWwgYi9MYXlvdXRUZXN0cy9qcy9kb20vZG9taml0LWZ1bmN0aW9uLXR5
cGUtY29udHJhZGljdGlvbi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg0ZGM1YjY3Njk0MThlOTY1NTViYWI4
Mzg3YzMwNjAzNGFmNWMwYzAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9qcy9kb20v
ZG9taml0LWZ1bmN0aW9uLXR5cGUtY29udHJhZGljdGlvbi5odG1sCkBAIC0wLDAgKzEsMzUgQEAK
KzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNv
dXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlk
PSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKworPGRpdiBp
ZD0icGFyZW50Tm9kZSI+Cis8ZGl2IGlkPSJwcmV2aW91c1NpYmxpbmciPjwvZGl2PjxkaXYgaWQ9
InRhcmdldCI+PGRpdiBpZD0iZmlyc3RDaGlsZCI+PC9kaXY+PGRpdiBpZD0ibGFzdENoaWxkIj48
L2Rpdj48L2Rpdj48ZGl2IGlkPSJuZXh0U2libGluZyI+PC9kaXY+Cis8L2Rpdj4KKworPHNjcmlw
dD4KK2Rlc2NyaXB0aW9uKCdUZXN0IERPTUpJVCBmdW5jdGlvbiB3aWxsIGNhdXNlIHR5cGUgY29u
dHJhZGljdGlvbiBnaXZpbmcgdXAuJyk7CisKK3ZhciBkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCdkaXYnKTsKK2Rpdi5zZXRBdHRyaWJ1dGUoImNvY29hIiwgIkNvY29hIik7CitmdW5jdGlv
biB0ZXN0KGRpdikgeworICAgIHZhciByZXQgPSAiaW52YWxpZCI7CisgICAgZm9yICh2YXIgaSA9
IDA7IGkgPCAxZTQ7ICsraSkKKyAgICAgICAgcmV0ID0gZGl2LmdldEF0dHJpYnV0ZSgyMDApOwor
ICAgIHJldHVybiByZXQ7Cit9Cit2YXIgcmVzdWx0OworKGZ1bmN0aW9uICgpIHsKKyAgICBmb3Ig
KHZhciBpID0gMDsgaSA8IDEwMDsgKytpKSB7CisgICAgICAgIHJlc3VsdCA9IHRlc3QoZGl2KTsK
KyAgICAgICAgc2hvdWxkQmUoYHJlc3VsdGAsIGBudWxsYCwgdHJ1ZSk7CisgICAgfQorfSgpKTsK
Kzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMi
Pjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMv
ZG9tL2RvbWppdC1mdW5jdGlvbi10eXBlLWZhaWx1cmUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvanMvZG9tL2RvbWppdC1mdW5jdGlvbi10eXBlLWZhaWx1cmUtZXhwZWN0ZWQudHh0Cm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjJjMTAyYjM3NmJmODIzMmI0MmJkMWEzY2U0MWRlMTc3MWEyN2I2YzUKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9qcy9kb20vZG9taml0LWZ1bmN0aW9uLXR5cGUtZmFpbHVy
ZS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw4IEBACitUZXN0IERPTUpJVCBmdW5jdGlvbiB3aWxs
IGNhdXNlIEJhZFR5cGUgT1NSIGV4aXRzLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBz
ZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisK
K1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9qcy9kb20vZG9taml0LWZ1bmN0aW9uLXR5cGUtZmFpbHVyZS5o
dG1sIGIvTGF5b3V0VGVzdHMvanMvZG9tL2RvbWppdC1mdW5jdGlvbi10eXBlLWZhaWx1cmUuaHRt
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi42Yjc2NjE0MTg3ZWRhODdkYWMyNmMyMGE2ZTMxMjJjZjA2NTRhODE2Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMvZG9tL2RvbWppdC1mdW5jdGlvbi10eXBl
LWZhaWx1cmUuaHRtbApAQCAtMCwwICsxLDM5IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgor
PGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3Nj
cmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRp
diBpZD0iY29uc29sZSI+PC9kaXY+CisKKzxkaXYgaWQ9InBhcmVudE5vZGUiPgorPGRpdiBpZD0i
cHJldmlvdXNTaWJsaW5nIj48L2Rpdj48ZGl2IGlkPSJ0YXJnZXQiPjxkaXYgaWQ9ImZpcnN0Q2hp
bGQiPjwvZGl2PjxkaXYgaWQ9Imxhc3RDaGlsZCI+PC9kaXY+PC9kaXY+PGRpdiBpZD0ibmV4dFNp
YmxpbmciPjwvZGl2PgorPC9kaXY+CisKKzxzY3JpcHQ+CitkZXNjcmlwdGlvbignVGVzdCBET01K
SVQgZnVuY3Rpb24gd2lsbCBjYXVzZSBCYWRUeXBlIE9TUiBleGl0cy4nKTsKKwordmFyIGRpdiA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOworZGl2LnNldEF0dHJpYnV0ZSgiY29jb2Ei
LCAiQ29jb2EiKTsKK2Z1bmN0aW9uIHRlc3QoZGl2LCBuYW1lKSB7CisgICAgdmFyIHJldCA9ICJp
bnZhbGlkIjsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IDFlNDsgKytpKQorICAgICAgICByZXQg
PSBkaXYuZ2V0QXR0cmlidXRlKG5hbWUpOworICAgIHJldHVybiByZXQ7Cit9Cit2YXIgcmVzdWx0
OworKGZ1bmN0aW9uICgpIHsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IDEwMDsgKytpKSB7Cisg
ICAgICAgIHJlc3VsdCA9IHRlc3QoZGl2LCAnY29jb2EnKTsKKyAgICAgICAgc2hvdWxkQmUoYHJl
c3VsdGAsIGAiQ29jb2EiYCwgdHJ1ZSk7CisgICAgfQorICAgIGZvciAodmFyIGkgPSAwOyBpIDwg
MTAwOyArK2kpIHsKKyAgICAgICAgcmVzdWx0ID0gdGVzdChkaXYsIDQwMCk7CisgICAgICAgIHNo
b3VsZEJlKGByZXN1bHRgLCBgbnVsbGAsIHRydWUpOworICAgIH0KK30oKSk7Cis8L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4K
KzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL2RvbS9kb21qaXQt
ZnVuY3Rpb24uaHRtbCBiL0xheW91dFRlc3RzL2pzL2RvbS9kb21qaXQtZnVuY3Rpb24uaHRtbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi45MWVhOGE1OTlkODk2NWRlNWEwM2E4NTRkNDk0M2RlNWI5YWMzZDY0Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMvZG9tL2RvbWppdC1mdW5jdGlvbi5odG1sCkBA
IC0wLDAgKzEsNTggQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQg
c3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgor
PGJvZHk+Cis8ZGl2IGlkPSJ0YXJnZXQiIGNvY29hPSJjb2NvYSI+PGRpdiBpZD0iZmlyc3RDaGls
ZCI+PC9kaXY+PGRpdiBpZD0ibGFzdENoaWxkIj48L2Rpdj48L2Rpdj4KKzwvZGl2PgorCis8c2Ny
aXB0PgorZGVzY3JpcHRpb24oJ1Rlc3QgRE9NSklUIGZ1bmN0aW9ucyB3b3JrLicpOwordmFyIGRp
djsKKyhmdW5jdGlvbiAoKSB7CisgICAgZGl2ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rh
cmdldCcpOworCisgICAgZnVuY3Rpb24gYSgpCisgICAgeworICAgICAgICByZXR1cm4gZGl2Lmdl
dEF0dHJpYnV0ZSgnY29jb2EnKSA9PT0gJ2NvY29hJzsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBi
KCkKKyAgICB7CisgICAgICAgIHJldHVybiBkaXYuZ2V0QXR0cmlidXRlTm9kZSgnY29jb2EnKS5u
b2RlVHlwZSA9PT0gTm9kZS5BVFRSSUJVVEVfTk9ERTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBj
KCkKKyAgICB7CisgICAgICAgIHJldHVybiBkaXYuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2Rpdicp
Lmxlbmd0aCA9PT0gMjsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBkKCkKKyAgICB7CisgICAgICAg
IHJldHVybiBkaXYuaGFzQXR0cmlidXRlKCdjb2NvYScpID09PSB0cnVlOworICAgIH0KKworICAg
IGZ1bmN0aW9uIG1haW4oKQorICAgIHsKKyAgICAgICAgaWYgKCFhKCkpCisgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgICAgIGlmICghYigpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgICAgICBpZiAoIWMoKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAg
aWYgKCFkKCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHJldHVybiB0cnVl
OworICAgIH0KKworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMWU0OyArK2kpIHsKKyAgICAgICAg
aWYgKCFtYWluKCkpCisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoImVycm9yIik7CisgICAg
fQorICAgIHRlc3RQYXNzZWQoIkFsbCB0ZXN0cyBwYXNzZWQuIik7Cit9KCkpOworPC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+
Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>293738</attachid>
            <date>2016-11-02 20:09:44 -0700</date>
            <delta_ts>2016-11-02 20:16:21 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-162980-20161102200544.patch</filename>
            <type>text/plain</type>
            <size>191801</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA4MzE4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA2
YmYyMzQ3ZGVhYjQ1NDFmZGY1OWQ5NDVkNmM1MzFmYjQxMGIxNDA2Li40MWYyOTQzYzBiMDM3Nzk5
OGEzMDViZjE3MjIyY2Y3OWU1MmRlYWYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMzQgQEAKKzIwMTYtMTEtMDIgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFp
bC5jb20+CisKKyAgICAgICAgW0RPTUpJVF0gQWRkIERPTUpJVDo6U2lnbmF0dXJlCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjI5ODAKKworICAgICAg
ICBSZXZpZXdlZCBieSBTYWFtIEJhcmF0aS4KKworICAgICAgICBUaGlzIHBhdGNoIGludHJvZHVj
ZXMgYSBuZXcgbWVjaGFuaXNtIGNhbGxlZCBET01KSVQ6OlNpZ25hdHVyZS4gV2UgY2FuIGFubm90
YXRlIHRoZSBmdW5jdGlvbiB3aXRoIERPTUpJVDo6U2lnbmF0dXJlLgorICAgICAgICBET01KSVQ6
OlNpZ25hdHVyZSBoYXMgdHlwZSBpbmZvcm1hdGlvbiBvZiB0aGF0IGZ1bmN0aW9uLiBBbmQgaXQg
YWxzbyBtYWludGFpbnMgdGhlIGVmZmVjdCBvZiB0aGUgZnVuY3Rpb24gYW5kIHRoZQorICAgICAg
ICBwb2ludGVyIHRvIHRoZSB1bnNhZmUgZnVuY3Rpb24uIFRoZSB1bnNhZmUgZnVuY3Rpb24gbWVh
bnMgdGhlIGZ1bmN0aW9uIHdpdGhvdXQgdHlwZSBhbmQgYXJndW1lbnQgY291bnQgY2hlY2tzLgor
ICAgICAgICBCeSB1c2luZyB0aGVzZSBpbmZvcm1hdGlvbiwgd2UgY2FuIHNlcGFyYXRlIHR5cGUg
YW5kIGFyZ3VtZW50IGNvdW50IGNoZWNrcyBmcm9tIHRoZSBmdW5jdGlvbi4gQW5kIHdlIGNhbiBl
bWl0CisgICAgICAgIHRoZXNlIHRoaW5ncyBhcyBERkcgY2hlY2tzIGFuZCBjb252ZXJ0IHRoZSBm
dW5jdGlvbiBjYWxsIGl0c2VsZiB0byBDYWxsRE9NIG5vZGUuIENhbGxET00gbm9kZSBjYW4gY2Fs
bCB0aGUgdW5zYWZlCisgICAgICAgIGZ1bmN0aW9uIGRpcmVjdGx5IHdpdGhvdXQgYW55IGNoZWNr
cy4gRnVydGhlcm1vcmUsIHRoaXMgQ2FsbERPTSBub2RlIGNhbiByZXByZXNlbnQgaXRzIG93biBj
bG9iYmVyaXppbmcgcnVsZXMgYmFzZWQKKyAgICAgICAgb24gRE9NSklUOjpFZmZlY3QgbWFpbnRh
aW5lZCBieSBET01KSVQ6OlNpZ25hdHVyZS4gSXQgYWxsb3dzIHVzIHRvIG1ha2Ugb3BhcXVlIENh
bGwgbm9kZSB0byBhIENhbGxET00gbm9kZSB0aGF0CisgICAgICAgIG1lcmVseSByZWFkcyBzb21l
IHBhcnQgb2YgaGVhcC4gVGhlc2UgY2hhbmdlcyAoMSkgY2FuIGRyb3AgZHVwbGljYXRlIHR5cGUg
Y2hlY2tzIGluIERGRywgKDIpIG9mZmVyIGFiaWxpdHkgdG8gbW92ZQorICAgICAgICBDYWxsRE9N
IG5vZGUgdG8gc29tZXdoZXJlLCBhbmQgKDMpIHRyYWNrIG1vcmUgZGV0YWlsZWQgaGVhcCByZWFk
cyBhbmQgd3JpdGVzIG9mIENhbGxET00gbm9kZXMuCisKKyAgICAgICAgV2UgZmlyc3QgZW1pdCBD
YWxsIG5vZGUgd2l0aCBET01KSVQ6OlNpZ25hdHVyZSBpbiBERkdCeXRlQ29kZVBhcnNlci4gQW5k
IGluIHRoZSBmaXh1cCBwaGFzZSwgd2UgYXR0ZW1wdCB0byBsb3dlcgorICAgICAgICBDYWxsIG5v
ZGUgdG8gQ2FsbERPTSBub2RlIHdpdGggY2hlY2tzICYgZWRnZSBmaWx0ZXJzLiBUaGlzIGlzIGJl
Y2F1c2Ugd2UgZG8gbm90IGtub3cgdGhlIHR5cGUgcHJlZGljdGlvbnMgaW4KKyAgICAgICAgREZH
Qnl0ZUNvZGVQYXJzZXIgcGhhc2UuIElmIHdlIGFsd2F5cyBlbWl0IENhbGxET00gbm9kZSBpbiBE
RkdCeXRlQ29kZVBhcnNlciwgaWYgd2UgZXZhbHVhdGUgYGRpdi5nZXRBdHRyaWJ1dGUodHJ1ZSlg
CisgICAgICAgIHRoaW5neSwgdGhlIFVuY291bnRhYmxlIE9TUiBleGl0cyByZXBlYXRlZGx5IGhh
cHBlbiBiZWNhdXNlIEFJIGZpZ3VyZXMgb3V0IHRoZSBhYnN0cmFjdCB2YWx1ZSBpcyBjbGVhcmVk
LgorCisgICAgICAgIEN1cnJlbnRseSwgRE9NSklUIHNpZ25hdHVyZSBvbmx5IGFsbG93cyB0aGUg
dHlwZXMgdGhhdCBjYW4gcmVzaWRlIGluIEdQUi4gVGhpcyBpcyBiZWNhdXNlIHRoZSB0eXBlcyBv
ZiB0aGUgdW5zYWZlCisgICAgICAgIGZ1bmN0aW9uIGFyZ3VtZW50cyBhcmUgcmVwcmVzZW50ZWQg
YXMgdGhlIHNlcXVlbmNlIG9mIHZvaWQqLiBJbiB0aGUgZnV0dXJlLCB3ZSB3aWxsIGV4dGVuZCB0
byBhY2NlcHQgb3RoZXIgdHlwZXMgbGlrZQorICAgICAgICBmbG9hdCwgZG91YmxlIGV0Yy4KKwor
ICAgICAgICBXZSBhbm5vdGF0ZSBzZXZlcmFsIGZ1bmN0aW9ucyBpbiBFbGVtZW50LiBJbiBwYXJ0
aWN1bGFyLCB3ZSBhbm5vdGF0ZSBFbGVtZW50OjpnZXRBdHRyaWJ1dGUuIFRoaXMgYWxsb3dzIHVz
IHRvIHBlcmZvcm0KKyAgICAgICAgTElDTSBpbiBEcm9tYWVvIGRvbS1hdHRyIHRlc3QuIEluIHRo
ZSBEcm9tYWVvIGRvbS1hdHRyIGdldEF0dHJpYnV0ZSB0ZXN0LCB3ZSBjYW4gc2VlIDMyeCBpbXBy
b3ZlbWVudC4gKDEzNDk3NC44IHYucy4gNDIwMy40KQorCisgICAgICAgICogSmF2YVNjcmlwdENv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBieXRlY29kZS9DYWxsVmFy
aWFudC5oOgorICAgICAgICAoSlNDOjpDYWxsVmFyaWFudDo6ZnVuY3Rpb25FeGVjdXRhYmxlKToK
KyAgICAgICAgKEpTQzo6Q2FsbFZhcmlhbnQ6Om5hdGl2ZUV4ZWN1dGFibGUpOgorICAgICAgICAo
SlNDOjpDYWxsVmFyaWFudDo6c2lnbmF0dXJlRm9yKToKKyAgICAgICAgKiBieXRlY29kZS9TcGVj
dWxhdGVkVHlwZS5oOgorICAgICAgICAoSlNDOjppc05vdFN0cmluZ1NwZWN1bGF0aW9uKToKKyAg
ICAgICAgKEpTQzo6aXNOb3RJbnQzMlNwZWN1bGF0aW9uKToKKyAgICAgICAgKEpTQzo6aXNOb3RC
b29sZWFuU3BlY3VsYXRpb24pOgorICAgICAgICAqIGRmZy9ERkdBYnN0cmFjdEludGVycHJldGVy
SW5saW5lcy5oOgorICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJh
Y3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyk6CisgICAgICAgICogZGZnL0RGR0J5dGVDb2Rl
UGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6YWRkQ2FsbCk6
CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUNhbGwpOgorICAgICAg
ICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjphdHRlbXB0VG9JbmxpbmVDYWxsKToKKyAgICAg
ICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW5saW5pbmcpOgorICAgICAgICAo
SlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVET01KSVRDYWxsKToKKyAgICAgICAgKEpT
Qzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayk6CisgICAgICAgICogZGZnL0RGR0Ns
b2JiZXJpemUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpjbG9iYmVyaXplKToKKyAgICAgICAgKiBk
ZmcvREZHRG9lc0dDLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpkb2VzR0MpOgorICAgICAgICAq
IGRmZy9ERkdGaXh1cFBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpGaXh1cFBoYXNlOjpm
aXh1cE5vZGUpOgorICAgICAgICAoSlNDOjpERkc6OkZpeHVwUGhhc2U6OmF0dGVtcHRUb01ha2VD
YWxsRE9NKToKKyAgICAgICAgKEpTQzo6REZHOjpGaXh1cFBoYXNlOjpmaXh1cENoZWNrRE9NKToK
KyAgICAgICAgKEpTQzo6REZHOjpGaXh1cFBoYXNlOjpmaXh1cENhbGxET00pOgorICAgICAgICAq
IGRmZy9ERkdOb2RlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpjb252ZXJ0VG9DYWxs
RE9NKToKKyAgICAgICAgKiBkZmcvREZHTm9kZS5oOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6
Omhhc0hlYXBQcmVkaWN0aW9uKToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpzaG91bGRTcGVj
dWxhdGVOb3RJbnQzMik6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6c2hvdWxkU3BlY3VsYXRl
Tm90Qm9vbGVhbik6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6c2hvdWxkU3BlY3VsYXRlTm90
U3RyaW5nKToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpoYXNTaWduYXR1cmUpOgorICAgICAg
ICAoSlNDOjpERkc6Ok5vZGU6OnNpZ25hdHVyZSk6CisgICAgICAgICogZGZnL0RGR05vZGVUeXBl
Lmg6CisgICAgICAgICogZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcDoKKyAg
ICAgICAgKiBkZmcvREZHU2FmZVRvRXhlY3V0ZS5oOgorICAgICAgICAoSlNDOjpERkc6OnNhZmVU
b0V4ZWN1dGUpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHA6CisgICAgICAg
IChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVDYWxsRE9NKToKKyAgICAgICAgKiBk
ZmcvREZHU3BlY3VsYXRpdmVKSVQuaDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJ
VDo6Y2FsbE9wZXJhdGlvbik6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQu
Y3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToKKyAgICAg
ICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGRvbWppdC9ET01KSVRFZmZlY3QuaDoK
KyAgICAgICAgKEpTQzo6RE9NSklUOjpFZmZlY3Q6OkVmZmVjdCk6CisgICAgICAgIChKU0M6OkRP
TUpJVDo6RWZmZWN0Ojpmb3JXcml0ZSk6CisgICAgICAgIChKU0M6OkRPTUpJVDo6RWZmZWN0Ojpm
b3JSZWFkKToKKyAgICAgICAgKEpTQzo6RE9NSklUOjpFZmZlY3Q6OmZvclJlYWRXcml0ZSk6Cisg
ICAgICAgIChKU0M6OkRPTUpJVDo6RWZmZWN0Ojpmb3JQdXJlKToKKyAgICAgICAgKEpTQzo6RE9N
SklUOjpFZmZlY3Q6OmZvckRlZik6CisgICAgICAgIChKU0M6OkRPTUpJVDo6RWZmZWN0OjptdXN0
R2VuZXJhdGUpOgorICAgICAgICBJbiBjbGFuZywgd2UgY2Fubm90IG1ha2UgdGhpcyBFZmZlY3Qg
Y29uc3RydWN0b3IgY29uc3RleHByIGlmIHdlIHVzZSBPcHRpb25hbDxIZWFwUmFuZ2U+LgorICAg
ICAgICBTbyB3ZSB1c2UgSGVhcFJhbmdlOjp0b3AoKSBmb3IgTnVsbG9wdCBkZWYgbm93LgorCisg
ICAgICAgICogZG9taml0L0RPTUpJVEhlYXBSYW5nZS5oOgorICAgICAgICAoSlNDOjpET01KSVQ6
OkhlYXBSYW5nZTo6ZnJvbVJhdyk6CisgICAgICAgIChKU0M6OkRPTUpJVDo6SGVhcFJhbmdlOjpv
cGVyYXRvciBib29sKToKKyAgICAgICAgKEpTQzo6RE9NSklUOjpIZWFwUmFuZ2U6Om9wZXJhdG9y
PT0pOgorICAgICAgICAoSlNDOjpET01KSVQ6OkhlYXBSYW5nZTo6b3BlcmF0b3IhPSk6CisgICAg
ICAgIChKU0M6OkRPTUpJVDo6SGVhcFJhbmdlOjpmcm9tQ29uc3RhbnQpOgorICAgICAgICAqIGRv
bWppdC9ET01KSVRTaWduYXR1cmUuaDogQ29waWVkIGZyb20gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RvbWppdC9ET01KSVRFZmZlY3QuaC4KKyAgICAgICAgKEpTQzo6RE9NSklUOjpTaWduYXR1cmU6
OlNpZ25hdHVyZSk6CisgICAgICAgIChKU0M6OkRPTUpJVDo6U2lnbmF0dXJlOjphcmd1bWVudENv
dW50KToKKyAgICAgICAgKEpTQzo6RE9NSklUOjpTaWduYXR1cmU6OmNoZWNrRE9NKToKKyAgICAg
ICAgKiBmdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpjYW5Db21w
aWxlKToKKyAgICAgICAgKiBmdGwvRlRMTG93ZXJERkdUb0IzLmNwcDoKKyAgICAgICAgKEpTQzo6
RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZU5vZGUpOgorICAgICAgICAoSlNDOjpGVEw6
OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlQ2FsbERPTSk6CisgICAgICAgICogaml0L0pJVE9w
ZXJhdGlvbnMuaDoKKyAgICAgICAgKiBqaXQvSklUVGh1bmtzLmNwcDoKKyAgICAgICAgKEpTQzo6
SklUVGh1bmtzOjpob3N0RnVuY3Rpb25TdHViKToKKyAgICAgICAgKiBqaXQvSklUVGh1bmtzLmg6
CisgICAgICAgICogcnVudGltZS9KU0JvdW5kRnVuY3Rpb24uY3BwOgorICAgICAgICAoSlNDOjpK
U0JvdW5kRnVuY3Rpb246OmNyZWF0ZSk6CisgICAgICAgICogcnVudGltZS9KU0NlbGwuaDoKKyAg
ICAgICAgKiBydW50aW1lL0pTRnVuY3Rpb24uY3BwOgorICAgICAgICAoSlNDOjpKU0Z1bmN0aW9u
OjpjcmVhdGUpOgorICAgICAgICAqIHJ1bnRpbWUvSlNGdW5jdGlvbi5oOgorICAgICAgICAqIHJ1
bnRpbWUvSlNOYXRpdmVTdGRGdW5jdGlvbi5jcHA6CisgICAgICAgIChKU0M6OkpTTmF0aXZlU3Rk
RnVuY3Rpb246OmNyZWF0ZSk6CisgICAgICAgICogcnVudGltZS9KU09iamVjdC5jcHA6CisgICAg
ICAgIChKU0M6OkpTT2JqZWN0OjpwdXREaXJlY3ROYXRpdmVGdW5jdGlvbik6CisgICAgICAgICog
cnVudGltZS9KU09iamVjdC5oOgorICAgICAgICAqIHJ1bnRpbWUvTG9va3VwLmg6CisgICAgICAg
IChKU0M6Okhhc2hUYWJsZVZhbHVlOjpmdW5jdGlvbkxlbmd0aCk6CisgICAgICAgIChKU0M6Okhh
c2hUYWJsZVZhbHVlOjpzaWduYXR1cmUpOgorICAgICAgICAoSlNDOjpyZWlmeVN0YXRpY1Byb3Bl
cnR5KToKKyAgICAgICAgKiBydW50aW1lL05hdGl2ZUV4ZWN1dGFibGUuY3BwOgorICAgICAgICAo
SlNDOjpOYXRpdmVFeGVjdXRhYmxlOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpOYXRpdmVFeGVj
dXRhYmxlOjpOYXRpdmVFeGVjdXRhYmxlKToKKyAgICAgICAgKiBydW50aW1lL05hdGl2ZUV4ZWN1
dGFibGUuaDoKKyAgICAgICAgKiBydW50aW1lL1Byb3BlcnR5U2xvdC5oOgorICAgICAgICAqIHJ1
bnRpbWUvVk0uY3BwOgorICAgICAgICAoSlNDOjpWTTo6Z2V0SG9zdEZ1bmN0aW9uKToKKyAgICAg
ICAgKiBydW50aW1lL1ZNLmg6CisKIDIwMTYtMTEtMDIgIEFuZHJlYXMgS2xpbmcgIDxha2xpbmdA
YXBwbGUuY29tPgogCiAgICAgICAgIE1hcmtlZFNwYWNlIHNob3VsZCBoYXZlIHNwZWNpYWxpemVk
IHNpemUgY2xhc3NlcyBmb3IgcG9wdWxhciBlbmdpbmUgb2JqZWN0cy4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBh
YTc0Mzc4MjRjM2JkNzVjMmM3ZmRmYmEwOWMzMzYxNjU5MzMxNmRlLi5jNTZmOWE5ZGRkYWJjM2Ix
NDNmYWUyM2QwZjg0NmYwMjkzMDI5YzI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTEwIEBACisy
MDE2LTExLTAyICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgorCisgICAg
ICAgIFtET01KSVRdIEFkZCBET01KSVQ6OlNpZ25hdHVyZQorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYyOTgwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
U2FhbSBCYXJhdGkuCisKKyAgICAgICAgV2UgaW50cm9kdWNlIERPTUpJVDo6U2lnbmF0dXJlLiBU
aGlzIHNpZ25hdHVyZSBvYmplY3QgaXMgYXV0b21hdGljYWxseSBnZW5lcmF0ZWQgYnkgSURMIGNv
ZGUgZ2VuZXJhdG9yLgorICAgICAgICBJdCBob2xkcyAoMSkgdHlwZXMsICgyKSBwb2ludGVyIHRv
IHRoZSB1bnNhZmUgZnVuY3Rpb24gKHRoZSBmdW5jdGlvbiB3aXRob3V0IGNoZWNrcyksIGFuZCAo
MykgdGhlIGVmZmVjdAorICAgICAgICBvZiB0aGUgZnVuY3Rpb24uIFdlIHVzZSBjb25zdGV4cHIg
dG8gaW5pdGlhbGl6ZSBET01KSVQ6OlNpZ25hdHVyZSB3aXRob3V0IGludm9raW5nIGdsb2JhbCBj
b25zdHJ1Y3RvcnMuCisgICAgICAgIFRodXMgdGhlIGNvbnRlbnQgaXMgZW1iZWRkZWQgaW50byB0
aGUgYmluYXJ5IGFzIHRoZSBjb25zdGFudCB2YWx1ZXMuCisKKyAgICAgICAgV2UgYWxzbyBjbGVh
biB1cCB0aGUgSURMIGNvZGUgZ2VuZXJhdG9yIHJlbGF0ZWQgdG8gRE9NSklUIHBhcnQuIEluc3Rl
YWQgb2Ygc3dpdGNoaW5nIHRoaW5ncyBpbnNpZGUgSURMCisgICAgICAgIGNvZGUgZ2VuZXJhdG9y
LCB3ZSB1c2UgQysrIHRlbXBsYXRlIHRvIGRpc3BhdGNoIHRoaW5ncyBhdCBjb21waWxlIHRpbWUu
IFRoaXMgdGVtcGxhdGUgbWV0YSBwcm9ncmFtbWluZworICAgICAgICBpcyBoaWdobHkgdXRpbGl6
ZWQgaW4gSURMIHRoZXNlIGRheXMuCisKKyAgICAgICAgVG8gbWFrZSBET01KSVQ6OlNpZ25hdHVy
ZSBjb25zdGV4cHIsIHdlIGFsc28gbmVlZCB0byBkZWZpbmUgRE9NSklUIGFic3RyYWN0IGhlYXAg
dGhpbmdzIGluIHRoZSBidWlsZCB0aW1lLgorICAgICAgICBUbyBkbyBzbywgd2UgaW50cm9kdWNl
IGEgdGlueSBSdWJ5IHNjcmlwdCB0byBjYWxjdWxhdGUgdGhlIHJhbmdlIG9mIGFic3RyYWN0IGhl
YXBzLiBXZSBjYW4gb2ZmZXIgdGhlIGFic3RyYWN0CisgICAgICAgIGhlYXAgdHJlZSBhcyBZQU1M
IGZvcm1hdCBhbmQgdGhlIHNjcmlwdCB3aWxsIHByb2R1Y2UgYSBDKysgaGVhZGVyIGhvbGRpbmcg
dGhlIGNhbGN1bGF0ZWQgYWJzdHJhY3QgaGVhcCByYW5nZXMKKworICAgICAgICAqIENNYWtlTGlz
dHMudHh0OgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLm1ha2U6CisgICAgICAgICogRm9yd2Fy
ZGluZ0hlYWRlcnMvYnl0ZWNvZGUvU3BlY3VsYXRlZFR5cGUuaDogUmVuYW1lZCBmcm9tIFNvdXJj
ZS9XZWJDb3JlL2RvbWppdC9ET01KSVRBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmguCisgICAgICAg
ICogRm9yd2FyZGluZ0hlYWRlcnMvZG9taml0L0RPTUpJVFNpZ25hdHVyZS5oOiBSZW5hbWVkIGZy
b20gU291cmNlL1dlYkNvcmUvZG9taml0L0RPTUpJVEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuY3Bw
LgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAg
KiBiaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5oOgorICAgICAgICAqIGJpbmRpbmdzL3Nj
cmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtOgorICAgICAgICAoR2VuZXJhdGVIZWFkZXIpOgorICAg
ICAgICAoR2VuZXJhdGVQcm9wZXJ0aWVzSGFzaFRhYmxlKToKKyAgICAgICAgKEdldFVuc2FmZUFy
Z3VtZW50VHlwZSk6CisgICAgICAgIChHZXRBcmd1bWVudFR5cGVGaWx0ZXIpOgorICAgICAgICAo
R2V0UmVzdWx0VHlwZUZpbHRlcik6CisgICAgICAgIChHZW5lcmF0ZUltcGxlbWVudGF0aW9uKToK
KyAgICAgICAgKFVuc2FmZVRvTmF0aXZlKToKKyAgICAgICAgKEdlbmVyYXRlSGFzaFRhYmxlVmFs
dWVBcnJheSk6CisgICAgICAgIChDb21wdXRlRnVuY3Rpb25TcGVjaWFsKToKKyAgICAgICAgKiBi
aW5kaW5ncy9zY3JpcHRzL0lETEF0dHJpYnV0ZXMudHh0OgorICAgICAgICAqIGJpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RET01KSVQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QmluZGlu
Z0NhbGxlcjxKU1Rlc3RET01KSVQ+OjpjYXN0Rm9yT3BlcmF0aW9uKToKKyAgICAgICAgKFdlYkNv
cmU6OlRlc3RET01KSVRBbnlBdHRyRE9NSklUOjpUZXN0RE9NSklUQW55QXR0ckRPTUpJVCk6Cisg
ICAgICAgIChXZWJDb3JlOjpUZXN0RE9NSklUQm9vbGVhbkF0dHJET01KSVQ6OlRlc3RET01KSVRC
b29sZWFuQXR0ckRPTUpJVCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0RE9NSklUQnl0ZUF0dHJE
T01KSVQ6OlRlc3RET01KSVRCeXRlQXR0ckRPTUpJVCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0
RE9NSklUT2N0ZXRBdHRyRE9NSklUOjpUZXN0RE9NSklUT2N0ZXRBdHRyRE9NSklUKToKKyAgICAg
ICAgKFdlYkNvcmU6OlRlc3RET01KSVRTaG9ydEF0dHJET01KSVQ6OlRlc3RET01KSVRTaG9ydEF0
dHJET01KSVQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdERPTUpJVFVuc2lnbmVkU2hvcnRBdHRy
RE9NSklUOjpUZXN0RE9NSklUVW5zaWduZWRTaG9ydEF0dHJET01KSVQpOgorICAgICAgICAoV2Vi
Q29yZTo6VGVzdERPTUpJVExvbmdBdHRyRE9NSklUOjpUZXN0RE9NSklUTG9uZ0F0dHJET01KSVQp
OgorICAgICAgICAoV2ViQ29yZTo6VGVzdERPTUpJVFVuc2lnbmVkTG9uZ0F0dHJET01KSVQ6OlRl
c3RET01KSVRVbnNpZ25lZExvbmdBdHRyRE9NSklUKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RE
T01KSVRMb25nTG9uZ0F0dHJET01KSVQ6OlRlc3RET01KSVRMb25nTG9uZ0F0dHJET01KSVQpOgor
ICAgICAgICAoV2ViQ29yZTo6VGVzdERPTUpJVFVuc2lnbmVkTG9uZ0xvbmdBdHRyRE9NSklUOjpU
ZXN0RE9NSklUVW5zaWduZWRMb25nTG9uZ0F0dHJET01KSVQpOgorICAgICAgICAoV2ViQ29yZTo6
VGVzdERPTUpJVEZsb2F0QXR0ckRPTUpJVDo6VGVzdERPTUpJVEZsb2F0QXR0ckRPTUpJVCk6Cisg
ICAgICAgIChXZWJDb3JlOjpUZXN0RE9NSklUVW5yZXN0cmljdGVkRmxvYXRBdHRyRE9NSklUOjpU
ZXN0RE9NSklUVW5yZXN0cmljdGVkRmxvYXRBdHRyRE9NSklUKToKKyAgICAgICAgKFdlYkNvcmU6
OlRlc3RET01KSVREb3VibGVBdHRyRE9NSklUOjpUZXN0RE9NSklURG91YmxlQXR0ckRPTUpJVCk6
CisgICAgICAgIChXZWJDb3JlOjpUZXN0RE9NSklUVW5yZXN0cmljdGVkRG91YmxlQXR0ckRPTUpJ
VDo6VGVzdERPTUpJVFVucmVzdHJpY3RlZERvdWJsZUF0dHJET01KSVQpOgorICAgICAgICAoV2Vi
Q29yZTo6VGVzdERPTUpJVERvbVN0cmluZ0F0dHJET01KSVQ6OlRlc3RET01KSVREb21TdHJpbmdB
dHRyRE9NSklUKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RET01KSVRCeXRlU3RyaW5nQXR0ckRP
TUpJVDo6VGVzdERPTUpJVEJ5dGVTdHJpbmdBdHRyRE9NSklUKToKKyAgICAgICAgKFdlYkNvcmU6
OlRlc3RET01KSVRVc3ZTdHJpbmdBdHRyRE9NSklUOjpUZXN0RE9NSklUVXN2U3RyaW5nQXR0ckRP
TUpJVCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0RE9NSklUTm9kZUF0dHJET01KSVQ6OlRlc3RE
T01KSVROb2RlQXR0ckRPTUpJVCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0RE9NSklUQm9vbGVh
bk51bGxhYmxlQXR0ckRPTUpJVDo6VGVzdERPTUpJVEJvb2xlYW5OdWxsYWJsZUF0dHJET01KSVQp
OgorICAgICAgICAoV2ViQ29yZTo6VGVzdERPTUpJVEJ5dGVOdWxsYWJsZUF0dHJET01KSVQ6OlRl
c3RET01KSVRCeXRlTnVsbGFibGVBdHRyRE9NSklUKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RE
T01KSVRPY3RldE51bGxhYmxlQXR0ckRPTUpJVDo6VGVzdERPTUpJVE9jdGV0TnVsbGFibGVBdHRy
RE9NSklUKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RET01KSVRTaG9ydE51bGxhYmxlQXR0ckRP
TUpJVDo6VGVzdERPTUpJVFNob3J0TnVsbGFibGVBdHRyRE9NSklUKToKKyAgICAgICAgKFdlYkNv
cmU6OlRlc3RET01KSVRVbnNpZ25lZFNob3J0TnVsbGFibGVBdHRyRE9NSklUOjpUZXN0RE9NSklU
VW5zaWduZWRTaG9ydE51bGxhYmxlQXR0ckRPTUpJVCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0
RE9NSklUTG9uZ051bGxhYmxlQXR0ckRPTUpJVDo6VGVzdERPTUpJVExvbmdOdWxsYWJsZUF0dHJE
T01KSVQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdERPTUpJVFVuc2lnbmVkTG9uZ051bGxhYmxl
QXR0ckRPTUpJVDo6VGVzdERPTUpJVFVuc2lnbmVkTG9uZ051bGxhYmxlQXR0ckRPTUpJVCk6Cisg
ICAgICAgIChXZWJDb3JlOjpUZXN0RE9NSklUTG9uZ0xvbmdOdWxsYWJsZUF0dHJET01KSVQ6OlRl
c3RET01KSVRMb25nTG9uZ051bGxhYmxlQXR0ckRPTUpJVCk6CisgICAgICAgIChXZWJDb3JlOjpU
ZXN0RE9NSklUVW5zaWduZWRMb25nTG9uZ051bGxhYmxlQXR0ckRPTUpJVDo6VGVzdERPTUpJVFVu
c2lnbmVkTG9uZ0xvbmdOdWxsYWJsZUF0dHJET01KSVQpOgorICAgICAgICAoV2ViQ29yZTo6VGVz
dERPTUpJVEZsb2F0TnVsbGFibGVBdHRyRE9NSklUOjpUZXN0RE9NSklURmxvYXROdWxsYWJsZUF0
dHJET01KSVQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdERPTUpJVFVucmVzdHJpY3RlZEZsb2F0
TnVsbGFibGVBdHRyRE9NSklUOjpUZXN0RE9NSklUVW5yZXN0cmljdGVkRmxvYXROdWxsYWJsZUF0
dHJET01KSVQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdERPTUpJVERvdWJsZU51bGxhYmxlQXR0
ckRPTUpJVDo6VGVzdERPTUpJVERvdWJsZU51bGxhYmxlQXR0ckRPTUpJVCk6CisgICAgICAgIChX
ZWJDb3JlOjpUZXN0RE9NSklUVW5yZXN0cmljdGVkRG91YmxlTnVsbGFibGVBdHRyRE9NSklUOjpU
ZXN0RE9NSklUVW5yZXN0cmljdGVkRG91YmxlTnVsbGFibGVBdHRyRE9NSklUKToKKyAgICAgICAg
KFdlYkNvcmU6OlRlc3RET01KSVREb21TdHJpbmdOdWxsYWJsZUF0dHJET01KSVQ6OlRlc3RET01K
SVREb21TdHJpbmdOdWxsYWJsZUF0dHJET01KSVQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdERP
TUpJVEJ5dGVTdHJpbmdOdWxsYWJsZUF0dHJET01KSVQ6OlRlc3RET01KSVRCeXRlU3RyaW5nTnVs
bGFibGVBdHRyRE9NSklUKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RET01KSVRVc3ZTdHJpbmdO
dWxsYWJsZUF0dHJET01KSVQ6OlRlc3RET01KSVRVc3ZTdHJpbmdOdWxsYWJsZUF0dHJET01KSVQp
OgorICAgICAgICAoV2ViQ29yZTo6VGVzdERPTUpJVE5vZGVOdWxsYWJsZUF0dHJET01KSVQ6OlRl
c3RET01KSVROb2RlTnVsbGFibGVBdHRyRE9NSklUKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVz
dERPTUpJVFByb3RvdHlwZUZ1bmN0aW9uR2V0QXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6
OmpzVGVzdERPTUpJVFByb3RvdHlwZUZ1bmN0aW9uR2V0QXR0cmlidXRlQ2FsbGVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OnVuc2FmZUpzVGVzdERPTUpJVFByb3RvdHlwZUZ1bmN0aW9uR2V0QXR0cmli
dXRlKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdERPTUpJVFByb3RvdHlwZUZ1bmN0aW9uSXRl
bSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RET01KSVRQcm90b3R5cGVGdW5jdGlvbkl0ZW1D
YWxsZXIpOgorICAgICAgICAoV2ViQ29yZTo6dW5zYWZlSnNUZXN0RE9NSklUUHJvdG90eXBlRnVu
Y3Rpb25JdGVtKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdERPTUpJVFByb3RvdHlwZUZ1bmN0
aW9uSGFzQXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdERPTUpJVFByb3RvdHlw
ZUZ1bmN0aW9uSGFzQXR0cmlidXRlQ2FsbGVyKToKKyAgICAgICAgKFdlYkNvcmU6OnVuc2FmZUpz
VGVzdERPTUpJVFByb3RvdHlwZUZ1bmN0aW9uSGFzQXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNv
cmU6OmpzVGVzdERPTUpJVFByb3RvdHlwZUZ1bmN0aW9uR2V0RWxlbWVudEJ5SWQpOgorICAgICAg
ICAoV2ViQ29yZTo6anNUZXN0RE9NSklUUHJvdG90eXBlRnVuY3Rpb25HZXRFbGVtZW50QnlJZENh
bGxlcik6CisgICAgICAgIChXZWJDb3JlOjp1bnNhZmVKc1Rlc3RET01KSVRQcm90b3R5cGVGdW5j
dGlvbkdldEVsZW1lbnRCeUlkKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdERPTUpJVFByb3Rv
dHlwZUZ1bmN0aW9uR2V0RWxlbWVudHNCeU5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0
RE9NSklUUHJvdG90eXBlRnVuY3Rpb25HZXRFbGVtZW50c0J5TmFtZUNhbGxlcik6CisgICAgICAg
IChXZWJDb3JlOjp1bnNhZmVKc1Rlc3RET01KSVRQcm90b3R5cGVGdW5jdGlvbkdldEVsZW1lbnRz
QnlOYW1lKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdERPTUpJVC5pZGw6
CisgICAgICAgICogZG9tL0VsZW1lbnQuaWRsOgorICAgICAgICAqIGRvbWppdC9ET01KSVRBYnN0
cmFjdEhlYXBSZXBvc2l0b3J5LnlhbWw6IEFkZGVkLgorICAgICAgICAqIGRvbWppdC9ET01KSVRJ
RExDb252ZXJ0Lmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6RE9NSklUOjpEaXJlY3RDb252
ZXJ0ZXI8SURMRE9NU3RyaW5nPjo6ZGlyZWN0Q29udmVydDxTdHJpbmdDb252ZXJzaW9uQ29uZmln
dXJhdGlvbjo6Tm9ybWFsPik6CisgICAgICAgICogZG9taml0L0RPTUpJVElETFR5cGUuaDogQWRk
ZWQuCisgICAgICAgICogZG9taml0L0RPTUpJVElETFR5cGVGaWx0ZXIuaDogQWRkZWQuCisgICAg
ICAgICogZG9taml0L0pTRG9jdW1lbnRET01KSVQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9j
dW1lbnREb2N1bWVudEVsZW1lbnRET01KSVQ6OmNhbGxET01HZXR0ZXIpOgorICAgICAgICAqIGRv
bWppdC9KU05vZGVET01KSVQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZUZpcnN0Q2hpbGRE
T01KSVQ6OmNhbGxET01HZXR0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZUxhc3RDaGlsZERP
TUpJVDo6Y2FsbERPTUdldHRlcik6CisgICAgICAgIChXZWJDb3JlOjpOb2RlTmV4dFNpYmxpbmdE
T01KSVQ6OmNhbGxET01HZXR0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZVByZXZpb3VzU2li
bGluZ0RPTUpJVDo6Y2FsbERPTUdldHRlcik6CisgICAgICAgIChXZWJDb3JlOjpOb2RlUGFyZW50
Tm9kZURPTUpJVDo6Y2FsbERPTUdldHRlcik6CisgICAgICAgIChXZWJDb3JlOjpOb2RlT3duZXJE
b2N1bWVudERPTUpJVDo6Y2FsbERPTUdldHRlcik6CisgICAgICAgICogZG9taml0L2dlbmVyYXRl
LWFic3RyYWN0LWhlYXAucmI6IEFkZGVkLgorCiAyMDE2LTExLTAyICBTaW1vbiBGcmFzZXIgIDxz
aW1vbi5mcmFzZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFJFR1JFU1NJT04gKHIyMDgwMjUpIEdy
YXBoaWNzQ29udGV4dCBzdGF0ZSBzdGFjayBhc3NlcnRpb25zIGxvYWRpbmcgd2Via2l0Lm9yZwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAzYjA0YTE4NmY1ODEwNjdjM2E4MmZiYWEz
MmU0NjBjODcxNTgwMzVmLi4wMTZlNGY5ZjY2ZTE4NjRhNWI3MTIyNjc1NjQyZTFkZDZmZGRhZGY4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlw
dENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMjIwOCw2ICsyMjA4LDcgQEAKIAkJ
RTMzRjUwODUxQjg0MzdBMDAwNDEzODU2IC8qIEpTSW50ZXJuYWxQcm9taXNlRGVmZXJyZWQuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzM0Y1MDgzMUI4
NDM3QTAwMDQxMzg1NiAvKiBKU0ludGVybmFsUHJvbWlzZURlZmVycmVkLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTMzRjUwODcxQjg0NDlFRjAw
NDEzODU2IC8qIEpTSW50ZXJuYWxQcm9taXNlQ29uc3RydWN0b3IubHV0LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzNGNTA4NjFCODQ0OUVGMDA0MTM4
NTYgLyogSlNJbnRlcm5hbFByb21pc2VDb25zdHJ1Y3Rvci5sdXQuaCAqLzsgfTsKIAkJRTM0RURC
RjcxREI1RkZDOTAwREM4N0E1IC8qIEZyYW1lVHJhY2Vycy5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM0RURCRjYxREI1RkZDMTAwREM4N0E1IC8qIEZy
YW1lVHJhY2Vycy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CisJCUUzNTA3MDhBMURDNDlCQkYwMDg5QkNENiAvKiBET01KSVRTaWduYXR1cmUuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzNTA3MDg5MURDNDlC
QjYwMDg5QkNENiAvKiBET01KSVRTaWduYXR1cmUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFMzU0NjIyQjFCNjA2NUQxMDA1NDUzODYgLyogQ29u
c3RydWN0QWJpbGl0eS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gRTM1NDYyMkExQjYwNjVEMTAwNTQ1Mzg2IC8qIENvbnN0cnVjdEFiaWxpdHkuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFMzU1NUI4QTFE
QUUwM0E1MDBGMzY5MjEgLyogRE9NSklUQ2FsbERPTUdldHRlclBhdGNocG9pbnQuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzNTU1Qjg5MURBRTAzQTIw
MEYzNjkyMSAvKiBET01KSVRDYWxsRE9NR2V0dGVyUGF0Y2hwb2ludC5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUUzNTVGMzUyMUI3REM4NTMwMEM1
MERDNSAvKiBNb2R1bGVMb2FkZXJQcm90b3R5cGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM1NUYzNTAxQjdEQzg1MzAwQzUwREM1IC8qIE1vZHVs
ZUxvYWRlclByb3RvdHlwZS5jcHAgKi87IH07CkBAIC00NjM0LDYgKzQ2MzUsNyBAQAogCQlFMzNG
NTA4NjFCODQ0OUVGMDA0MTM4NTYgLyogSlNJbnRlcm5hbFByb21pc2VDb25zdHJ1Y3Rvci5sdXQu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNJbnRlcm5hbFByb21pc2VDb25z
dHJ1Y3Rvci5sdXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTMzRjUwODgxQjg0
NEExQTAwNDEzODU2IC8qIEludGVybmFsUHJvbWlzZUNvbnN0cnVjdG9yLmpzICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5qYXZhc2NyaXB0OyBwYXRoID0gSW50ZXJuYWxQcm9taXNlQ29uc3RydWN0b3Iu
anM7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzNEVEQkY2MURCNUZGQzEwMERDODdB
NSAvKiBGcmFtZVRyYWNlcnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRnJh
bWVUcmFjZXJzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzNTA3MDg5MURDNDlC
QjYwMDg5QkNENiAvKiBET01KSVRTaWduYXR1cmUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gRE9NSklUU2lnbmF0dXJlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUUzNTQ2MjJBMUI2MDY1RDEwMDU0NTM4NiAvKiBDb25zdHJ1Y3RBYmlsaXR5LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvbnN0cnVjdEFiaWxpdHkuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJRTM1NTVCODkxREFFMDNBMjAwRjM2OTIxIC8qIERPTUpJVENhbGxE
T01HZXR0ZXJQYXRjaHBvaW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERP
TUpJVENhbGxET01HZXR0ZXJQYXRjaHBvaW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUUzNTVGMzUwMUI3REM4NTMwMEM1MERDNSAvKiBNb2R1bGVMb2FkZXJQcm90b3R5cGUuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTW9kdWxlTG9hZGVyUHJvdG90
eXBlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTc1NzUsNiArNzU3Nyw3IEBA
CiAJCQkJRTM3QUQ4M0ExREE0OTI4MDAwRjNENDEyIC8qIERPTUpJVFBhdGNocG9pbnRQYXJhbXMu
aCAqLywKIAkJCQlFMzdBRDgzQjFEQTQ5MjgwMDBGM0Q0MTIgLyogRE9NSklUUmVnLmggKi8sCiAJ
CQkJRTNDQjFFMjQxREE3NTQwQTAwRkExRTU2IC8qIERPTUpJVFNsb3dQYXRoQ2FsbHMuaCAqLywK
KwkJCQlFMzUwNzA4OTFEQzQ5QkI2MDA4OUJDRDYgLyogRE9NSklUU2lnbmF0dXJlLmggKi8sCiAJ
CQkJRTNGRkM4NTIxREFEN0QxMDAwREVBNTNFIC8qIERPTUpJVFZhbHVlLmggKi8sCiAJCQkpOwog
CQkJcGF0aCA9IGRvbWppdDsKQEAgLTg1MDMsNiArODUwNiw3IEBACiAJCQkJNDNBQjI2QzYxQzFB
NTM1OTAwRDgyQUU2IC8qIEIzTWF0aEV4dHJhcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQUQyRkNC
RjMxREI1OERBRDAwQjNFNzM2IC8qIFdlYkFzc2VtYmx5SW5zdGFuY2VQcm90b3R5cGUuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUJDMThDNDI5MEUxNkY1Q0QwMEIzNDQ2MCAvKiBKU1N0cmluZ1JlZkNG
LmggaW4gSGVhZGVycyAqLywKKwkJCQlFMzUwNzA4QTFEQzQ5QkJGMDA4OUJDRDYgLyogRE9NSklU
U2lnbmF0dXJlLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTI4RDRBODE3N0I3MUM4MDAwN0ZBM0Mg
LyogSlNTdHJpbmdSZWZQcml2YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjkxOUQwRDE1N0VF
MEEyMDA0QTRFN0QgLyogSlNTeW1ib2xUYWJsZU9iamVjdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
NzBFQ0E2MDYxQUZEQkVBMjAwNDQ5NzM5IC8qIEpTVGVtcGxhdGVSZWdpc3RyeUtleS5oIGluIEhl
YWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2Fs
bFZhcmlhbnQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsVmFyaWFudC5o
CmluZGV4IGRlNjg4MDA2ZWYxYTk5ZTlkZDYwYjAxYTZlMDE3N2NiOThlYzdiNTEuLmNiMjg4YzYw
YjdhNGYxMzhiYWYyMTQyODQ5ZTEzOTFhOGQxMTFiYTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsVmFyaWFudC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9DYWxsVmFyaWFudC5oCkBAIC0yOCw2ICsyOCw3IEBACiAjaW5jbHVkZSAi
RnVuY3Rpb25FeGVjdXRhYmxlLmgiCiAjaW5jbHVkZSAiSlNDZWxsLmgiCiAjaW5jbHVkZSAiSlNG
dW5jdGlvbi5oIgorI2luY2x1ZGUgIk5hdGl2ZUV4ZWN1dGFibGUuaCIKIAogbmFtZXNwYWNlIEpT
QyB7CiAKQEAgLTEyMCw2ICsxMjEsMjAgQEAgY2xhc3MgQ2FsbFZhcmlhbnQgewogICAgICAgICAg
ICAgcmV0dXJuIGpzRHluYW1pY0Nhc3Q8RnVuY3Rpb25FeGVjdXRhYmxlKj4oZXhlY3V0YWJsZSk7
CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KKworICAgIE5hdGl2ZUV4ZWN1dGFibGUq
IG5hdGl2ZUV4ZWN1dGFibGUoKSBjb25zdAorICAgIHsKKyAgICAgICAgaWYgKEV4ZWN1dGFibGVC
YXNlKiBleGVjdXRhYmxlID0gdGhpcy0+ZXhlY3V0YWJsZSgpKQorICAgICAgICAgICAgcmV0dXJu
IGpzRHluYW1pY0Nhc3Q8TmF0aXZlRXhlY3V0YWJsZSo+KGV4ZWN1dGFibGUpOworICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKKyAgICB9CisKKyAgICBjb25zdCBET01KSVQ6OlNpZ25hdHVyZSogc2ln
bmF0dXJlRm9yKENvZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCkgY29uc3QKKyAgICB7CisgICAg
ICAgIGlmIChOYXRpdmVFeGVjdXRhYmxlKiBuYXRpdmVFeGVjdXRhYmxlID0gdGhpcy0+bmF0aXZl
RXhlY3V0YWJsZSgpKQorICAgICAgICAgICAgcmV0dXJuIG5hdGl2ZUV4ZWN1dGFibGUtPnNpZ25h
dHVyZUZvcihraW5kKTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQogICAgIAogICAg
IHZvaWQgZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdDsKICAgICAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TcGVjdWxhdGVkVHlwZS5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmgKaW5kZXggZjQzZGZjZDMxNTg3
MWU5ODk1M2VhMmRkZGM0YmYzMzUyNWNjZGZkZi4uZTIzZmQyYzVmNTRjZWUwOWM3YTIzYmRjMTQ5
OTkwYjYwOWIwMTkwMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1NwZWN1bGF0ZWRUeXBlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Nw
ZWN1bGF0ZWRUeXBlLmgKQEAgLTE1MSw2ICsxNTEsMTEgQEAgaW5saW5lIGJvb2wgaXNTdHJpbmdT
cGVjdWxhdGlvbihTcGVjdWxhdGVkVHlwZSB2YWx1ZSkKICAgICByZXR1cm4gISF2YWx1ZSAmJiAo
dmFsdWUgJiBTcGVjU3RyaW5nKSA9PSB2YWx1ZTsKIH0KIAoraW5saW5lIGJvb2wgaXNOb3RTdHJp
bmdTcGVjdWxhdGlvbihTcGVjdWxhdGVkVHlwZSB2YWx1ZSkKK3sKKyAgICByZXR1cm4gdmFsdWUg
JiYgISh2YWx1ZSAmIFNwZWNTdHJpbmcpOworfQorCiBpbmxpbmUgYm9vbCBpc1N0cmluZ09yT3Ro
ZXJTcGVjdWxhdGlvbihTcGVjdWxhdGVkVHlwZSB2YWx1ZSkKIHsKICAgICByZXR1cm4gISF2YWx1
ZSAmJiAodmFsdWUgJiAoU3BlY1N0cmluZyB8IFNwZWNPdGhlcikpID09IHZhbHVlOwpAQCAtMzAz
LDYgKzMwOCwxMSBAQCBpbmxpbmUgYm9vbCBpc0ludDMyU3BlY3VsYXRpb24oU3BlY3VsYXRlZFR5
cGUgdmFsdWUpCiAgICAgcmV0dXJuIHZhbHVlICYmICEodmFsdWUgJiB+U3BlY0ludDMyT25seSk7
CiB9CiAKK2lubGluZSBib29sIGlzTm90SW50MzJTcGVjdWxhdGlvbihTcGVjdWxhdGVkVHlwZSB2
YWx1ZSkKK3sKKyAgICByZXR1cm4gdmFsdWUgJiYgISh2YWx1ZSAmIFNwZWNJbnQzMk9ubHkpOwor
fQorCiBpbmxpbmUgYm9vbCBpc0ludDMyT3JCb29sZWFuU3BlY3VsYXRpb24oU3BlY3VsYXRlZFR5
cGUgdmFsdWUpCiB7CiAgICAgcmV0dXJuIHZhbHVlICYmICEodmFsdWUgJiB+KFNwZWNCb29sZWFu
IHwgU3BlY0ludDMyT25seSkpOwpAQCAtMzg4LDYgKzM5OCwxMSBAQCBpbmxpbmUgYm9vbCBpc0Jv
b2xlYW5TcGVjdWxhdGlvbihTcGVjdWxhdGVkVHlwZSB2YWx1ZSkKICAgICByZXR1cm4gdmFsdWUg
PT0gU3BlY0Jvb2xlYW47CiB9CiAKK2lubGluZSBib29sIGlzTm90Qm9vbGVhblNwZWN1bGF0aW9u
KFNwZWN1bGF0ZWRUeXBlIHZhbHVlKQoreworICAgIHJldHVybiB2YWx1ZSAmJiAhKHZhbHVlICYg
U3BlY0Jvb2xlYW4pOworfQorCiBpbmxpbmUgYm9vbCBpc090aGVyU3BlY3VsYXRpb24oU3BlY3Vs
YXRlZFR5cGUgdmFsdWUpCiB7CiAgICAgcmV0dXJuIHZhbHVlID09IFNwZWNPdGhlcjsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklu
bGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRl
cklubGluZXMuaAppbmRleCA0M2I1MWExNmVjYmFkYTUwZjlkN2Y4OGVlZTNjZjExMjZiN2EyMjRh
Li43YWRiYTcxNjAxNDYxNTEwNzJlZjY5OWQyMjZhMmFmM2NlYTA4ZDAyIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5s
aW5lcy5oCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiQXJyYXlDb25zdHJ1Y3Rvci5oIgog
I2luY2x1ZGUgIkRGR0Fic3RyYWN0SW50ZXJwcmV0ZXIuaCIKICNpbmNsdWRlICJET01KSVRHZXR0
ZXJTZXR0ZXIuaCIKKyNpbmNsdWRlICJET01KSVRTaWduYXR1cmUuaCIKICNpbmNsdWRlICJHZXRC
eUlkU3RhdHVzLmgiCiAjaW5jbHVkZSAiR2V0dGVyU2V0dGVyLmgiCiAjaW5jbHVkZSAiSGFzaE1h
cEltcGwuaCIKQEAgLTIzMDMsNiArMjMwNCwxMyBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8
QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyh1bnNpZ25lZCBjbG9iYmVyTGltaQog
ICAgICAgICBmb3JOb2RlKG5vZGUpLnNldFR5cGUobV9ncmFwaCwgY2FsbERPTUdldHRlckRhdGEt
PmRvbUpJVC0+cmVzdWx0VHlwZSgpKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQorICAgIGNhc2Ug
Q2FsbERPTTogeworICAgICAgICBjb25zdCBET01KSVQ6OlNpZ25hdHVyZSogc2lnbmF0dXJlID0g
bm9kZS0+c2lnbmF0dXJlKCk7CisgICAgICAgIGlmIChzaWduYXR1cmUtPmVmZmVjdC53cml0ZXMp
CisgICAgICAgICAgICBjbG9iYmVyV29ybGQobm9kZS0+b3JpZ2luLnNlbWFudGljLCBjbG9iYmVy
TGltaXQpOworICAgICAgICBmb3JOb2RlKG5vZGUpLnNldFR5cGUobV9ncmFwaCwgc2lnbmF0dXJl
LT5yZXN1bHQpOworICAgICAgICBicmVhazsKKyAgICB9CiAgICAgY2FzZSBDaGVja0FycmF5OiB7
CiAgICAgICAgIGlmIChub2RlLT5hcnJheU1vZGUoKS5hbHJlYWR5Q2hlY2tlZChtX2dyYXBoLCBu
b2RlLCBmb3JOb2RlKG5vZGUtPmNoaWxkMSgpKSkpIHsKICAgICAgICAgICAgIG1fc3RhdGUuc2V0
Rm91bmRDb25zdGFudHModHJ1ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Qnl0ZUNvZGVQYXJzZXIuY3BwCmluZGV4IGU1MTRlZTFkMzFhY2E3NzFiMzU4NWZjNzZkOTU2ZTc5
NTBiMDBiMzMuLjdmMjFmYTYyNjgwZWZkZGY2ODBjMGRjNzE3MDNiMjNlNjhiNzc4YjQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCkBAIC0y
MTMsNiArMjEzLDggQEAgY2xhc3MgQnl0ZUNvZGVQYXJzZXIgewogICAgIHRlbXBsYXRlPHR5cGVu
YW1lIENoZWNrc0Z1bmN0b3I+CiAgICAgYm9vbCBoYW5kbGVJbnRyaW5zaWNDYWxsKE5vZGUqIGNh
bGxlZSwgaW50IHJlc3VsdE9wZXJhbmQsIEludHJpbnNpYywgaW50IHJlZ2lzdGVyT2Zmc2V0LCBp
bnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24s
IGNvbnN0IENoZWNrc0Z1bmN0b3ImIGluc2VydENoZWNrcyk7CiAgICAgdGVtcGxhdGU8dHlwZW5h
bWUgQ2hlY2tzRnVuY3Rvcj4KKyAgICBib29sIGhhbmRsZURPTUpJVENhbGwoTm9kZSogY2FsbGVl
LCBpbnQgcmVzdWx0T3BlcmFuZCwgY29uc3QgRE9NSklUOjpTaWduYXR1cmUqLCBpbnQgcmVnaXN0
ZXJPZmZzZXQsIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgU3BlY3VsYXRlZFR5cGUg
cHJlZGljdGlvbiwgY29uc3QgQ2hlY2tzRnVuY3RvciYgaW5zZXJ0Q2hlY2tzKTsKKyAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBDaGVja3NGdW5jdG9yPgogICAgIGJvb2wgaGFuZGxlSW50cmluc2ljR2V0
dGVyKGludCByZXN1bHRPcGVyYW5kLCBjb25zdCBHZXRCeUlkVmFyaWFudCYgaW50cmluc2ljVmFy
aWFudCwgTm9kZSogdGhpc05vZGUsIGNvbnN0IENoZWNrc0Z1bmN0b3ImIGluc2VydENoZWNrcyk7
CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hlY2tzRnVuY3Rvcj4KICAgICBib29sIGhhbmRsZVR5
cGVkQXJyYXlDb25zdHJ1Y3RvcihpbnQgcmVzdWx0T3BlcmFuZCwgSW50ZXJuYWxGdW5jdGlvbios
IGludCByZWdpc3Rlck9mZnNldCwgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBUeXBl
ZEFycmF5VHlwZSwgY29uc3QgQ2hlY2tzRnVuY3RvciYgaW5zZXJ0Q2hlY2tzKTsKQEAgLTgxOCwx
OCArODIwLDE4IEBAIGNsYXNzIEJ5dGVDb2RlUGFyc2VyIHsKICAgICB9CiAgICAgCiAgICAgTm9k
ZSogYWRkQ2FsbCgKLSAgICAgICAgaW50IHJlc3VsdCwgTm9kZVR5cGUgb3AsIE9wSW5mbyBvcElu
Zm8sIE5vZGUqIGNhbGxlZSwgaW50IGFyZ0NvdW50LCBpbnQgcmVnaXN0ZXJPZmZzZXQsCisgICAg
ICAgIGludCByZXN1bHQsIE5vZGVUeXBlIG9wLCBjb25zdCBET01KSVQ6OlNpZ25hdHVyZSogc2ln
bmF0dXJlLCBOb2RlKiBjYWxsZWUsIGludCBhcmdDb3VudCwgaW50IHJlZ2lzdGVyT2Zmc2V0LAog
ICAgICAgICBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uKQogICAgIHsKICAgICAgICAgaWYgKG9w
ID09IFRhaWxDYWxsKSB7CiAgICAgICAgICAgICBpZiAoYWxsSW5saW5lRnJhbWVzQXJlVGFpbENh
bGxzKCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGFkZENhbGxXaXRob3V0U2V0dGluZ1Jlc3Vs
dChvcCwgT3BJbmZvKCksIGNhbGxlZSwgYXJnQ291bnQsIHJlZ2lzdGVyT2Zmc2V0LCBPcEluZm8o
KSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIGFkZENhbGxXaXRob3V0U2V0dGluZ1Jlc3VsdChv
cCwgT3BJbmZvKHNpZ25hdHVyZSksIGNhbGxlZSwgYXJnQ291bnQsIHJlZ2lzdGVyT2Zmc2V0LCBP
cEluZm8oKSk7CiAgICAgICAgICAgICBvcCA9IFRhaWxDYWxsSW5saW5lZENhbGxlcjsKICAgICAg
ICAgfQogCiAKICAgICAgICAgTm9kZSogY2FsbCA9IGFkZENhbGxXaXRob3V0U2V0dGluZ1Jlc3Vs
dCgKLSAgICAgICAgICAgIG9wLCBvcEluZm8sIGNhbGxlZSwgYXJnQ291bnQsIHJlZ2lzdGVyT2Zm
c2V0LCBPcEluZm8ocHJlZGljdGlvbikpOworICAgICAgICAgICAgb3AsIE9wSW5mbyhzaWduYXR1
cmUpLCBjYWxsZWUsIGFyZ0NvdW50LCByZWdpc3Rlck9mZnNldCwgT3BJbmZvKHByZWRpY3Rpb24p
KTsKICAgICAgICAgVmlydHVhbFJlZ2lzdGVyIHJlc3VsdFJlZyhyZXN1bHQpOwogICAgICAgICBp
ZiAocmVzdWx0UmVnLmlzVmFsaWQoKSkKICAgICAgICAgICAgIHNldChyZXN1bHRSZWcsIGNhbGwp
OwpAQCAtMTI4NCw3ICsxMjg2LDcgQEAgQnl0ZUNvZGVQYXJzZXI6OlRlcm1pbmFsaXR5IEJ5dGVD
b2RlUGFyc2VyOjpoYW5kbGVDYWxsKAogICAgICAgICAvLyBPZGRseSwgdGhpcyBjb25mbGF0ZXMg
Y2FsbHMgdGhhdCBoYXZlbid0IGV4ZWN1dGVkIHdpdGggY2FsbHMgdGhhdCBiZWhhdmVkIHN1ZmZp
Y2llbnRseSBwb2x5bW9ycGhpY2FsbHkKICAgICAgICAgLy8gdGhhdCB3ZSBjYW5ub3Qgb3B0aW1p
emUgdGhlbS4KIAotICAgICAgICBOb2RlKiBjYWxsTm9kZSA9IGFkZENhbGwocmVzdWx0LCBvcCwg
T3BJbmZvKCksIGNhbGxUYXJnZXQsIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCByZWdpc3Rl
ck9mZnNldCwgcHJlZGljdGlvbik7CisgICAgICAgIE5vZGUqIGNhbGxOb2RlID0gYWRkQ2FsbChy
ZXN1bHQsIG9wLCBudWxscHRyLCBjYWxsVGFyZ2V0LCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhp
cywgcmVnaXN0ZXJPZmZzZXQsIHByZWRpY3Rpb24pOwogICAgICAgICBpZiAoY2FsbE5vZGUtPm9w
KCkgPT0gVGFpbENhbGwpCiAgICAgICAgICAgICByZXR1cm4gVGVybWluYWw7CiAgICAgICAgIEFT
U0VSVChjYWxsTm9kZS0+b3AoKSAhPSBUYWlsQ2FsbFZhcmFyZ3MgJiYgY2FsbE5vZGUtPm9wKCkg
IT0gVGFpbENhbGxGb3J3YXJkVmFyYXJncyk7CkBAIC0xMjk5LDcgKzEzMDEsNyBAQCBCeXRlQ29k
ZVBhcnNlcjo6VGVybWluYWxpdHkgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUNhbGwoCiAgICAgICAg
IHJldHVybiBOb25UZXJtaW5hbDsKICAgICB9CiAgICAgCi0gICAgTm9kZSogY2FsbE5vZGUgPSBh
ZGRDYWxsKHJlc3VsdCwgb3AsIE9wSW5mbygpLCBjYWxsVGFyZ2V0LCBhcmd1bWVudENvdW50SW5j
bHVkaW5nVGhpcywgcmVnaXN0ZXJPZmZzZXQsIHByZWRpY3Rpb24pOworICAgIE5vZGUqIGNhbGxO
b2RlID0gYWRkQ2FsbChyZXN1bHQsIG9wLCBudWxscHRyLCBjYWxsVGFyZ2V0LCBhcmd1bWVudENv
dW50SW5jbHVkaW5nVGhpcywgcmVnaXN0ZXJPZmZzZXQsIHByZWRpY3Rpb24pOwogICAgIGlmIChj
YWxsTm9kZS0+b3AoKSA9PSBUYWlsQ2FsbCkKICAgICAgICAgcmV0dXJuIFRlcm1pbmFsOwogICAg
IEFTU0VSVChjYWxsTm9kZS0+b3AoKSAhPSBUYWlsQ2FsbFZhcmFyZ3MgJiYgY2FsbE5vZGUtPm9w
KCkgIT0gVGFpbENhbGxGb3J3YXJkVmFyYXJncyk7CkBAIC0xNzI2LDYgKzE3MjgsMTkgQEAgYm9v
bCBCeXRlQ29kZVBhcnNlcjo6YXR0ZW1wdFRvSW5saW5lQ2FsbChOb2RlKiBjYWxsVGFyZ2V0Tm9k
ZSwgaW50IHJlc3VsdE9wZXJhbmQKICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKCFkaWRJbnNl
cnRDaGVja3MpOwogICAgICAgICAgICAgLy8gV2UgbWlnaHQgc3RpbGwgdHJ5IHRvIGlubGluZSB0
aGUgSW50cmluc2ljIGJlY2F1c2UgaXQgbWlnaHQgYmUgYSBidWlsdGluIEpTIGZ1bmN0aW9uLgog
ICAgICAgICB9CisKKyAgICAgICAgaWYgKE9wdGlvbnM6OnVzZURPTUpJVCgpKSB7CisgICAgICAg
ICAgICBpZiAoY29uc3QgRE9NSklUOjpTaWduYXR1cmUqIHNpZ25hdHVyZSA9IGNhbGxlZS5zaWdu
YXR1cmVGb3Ioc3BlY2lhbGl6YXRpb25LaW5kKSkgeworICAgICAgICAgICAgICAgIGlmIChoYW5k
bGVET01KSVRDYWxsKGNhbGxUYXJnZXROb2RlLCByZXN1bHRPcGVyYW5kLCBzaWduYXR1cmUsIHJl
Z2lzdGVyT2Zmc2V0LCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgcHJlZGljdGlvbiwgaW5z
ZXJ0Q2hlY2tzV2l0aEFjY291bnRpbmcpKSB7CisgICAgICAgICAgICAgICAgICAgIFJFTEVBU0Vf
QVNTRVJUKGRpZEluc2VydENoZWNrcyk7CisgICAgICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgo
UGhhbnRvbSwgY2FsbFRhcmdldE5vZGUpOworICAgICAgICAgICAgICAgICAgICBlbWl0QXJndW1l
bnRQaGFudG9tcyhyZWdpc3Rlck9mZnNldCwgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpOwor
ICAgICAgICAgICAgICAgICAgICBpbmxpbmluZ0JhbGFuY2UtLTsKKyAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIFJFTEVB
U0VfQVNTRVJUKCFkaWRJbnNlcnRDaGVja3MpOworICAgICAgICAgICAgfQorICAgICAgICB9CiAg
ICAgfQogICAgIAogICAgIHVuc2lnbmVkIG15SW5saW5pbmdDb3N0ID0gaW5saW5pbmdDb3N0KGNh
bGxlZSwgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIElubGluZUNhbGxGcmFtZTo6Y2FsbE1v
ZGVGb3Ioa2luZCkpOwpAQCAtMjA1MSw3ICsyMDY2LDcgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6
aGFuZGxlSW5saW5pbmcoCiAgICAgTm9kZSogbXlDYWxsVGFyZ2V0Tm9kZSA9IGdldERpcmVjdChj
YWxsZWVSZWcpOwogICAgIGlmIChjb3VsZFRha2VTbG93UGF0aCkgewogICAgICAgICBhZGRDYWxs
KAotICAgICAgICAgICAgcmVzdWx0T3BlcmFuZCwgY2FsbE9wLCBPcEluZm8oKSwgbXlDYWxsVGFy
Z2V0Tm9kZSwgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsCisgICAgICAgICAgICByZXN1bHRP
cGVyYW5kLCBjYWxsT3AsIG51bGxwdHIsIG15Q2FsbFRhcmdldE5vZGUsIGFyZ3VtZW50Q291bnRJ
bmNsdWRpbmdUaGlzLAogICAgICAgICAgICAgcmVnaXN0ZXJPZmZzZXQsIHByZWRpY3Rpb24pOwog
ICAgIH0gZWxzZSB7CiAgICAgICAgIGFkZFRvR3JhcGgoQ2hlY2tCYWRDZWxsKTsKQEAgLTI2MDEs
NiArMjYxNiwyNSBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbnRyaW5zaWNDYWxsKE5v
ZGUqIGNhbGxlZSwgaW50IHJlc3VsdE9wZXJhbmQsIEludHJpbgogfQogCiB0ZW1wbGF0ZTx0eXBl
bmFtZSBDaGVja3NGdW5jdG9yPgorYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlRE9NSklUQ2Fs
bChOb2RlKiBjYWxsVGFyZ2V0LCBpbnQgcmVzdWx0T3BlcmFuZCwgY29uc3QgRE9NSklUOjpTaWdu
YXR1cmUqIHNpZ25hdHVyZSwgaW50IHJlZ2lzdGVyT2Zmc2V0LCBpbnQgYXJndW1lbnRDb3VudElu
Y2x1ZGluZ1RoaXMsIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24sIGNvbnN0IENoZWNrc0Z1bmN0
b3ImIGluc2VydENoZWNrcykKK3sKKyAgICBpZiAoYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMg
IT0gc3RhdGljX2Nhc3Q8aW50PigxICsgc2lnbmF0dXJlLT5hcmd1bWVudENvdW50KSkKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgIGlmIChtX2lubGluZVN0YWNrVG9wLT5tX2V4aXRQcm9maWxl
Lmhhc0V4aXRTaXRlKG1fY3VycmVudEluZGV4LCBCYWRUeXBlKSkKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworCisgICAgLy8gRklYTUU6IEN1cnJlbnRseSwgd2Ugb25seSBzdXBwb3J0IGZ1bmN0aW9u
cyB3aGljaCBhcmd1bWVudHMgYXJlIHVwIHRvIDIuCisgICAgLy8gRXZlbnR1YWxseSwgd2Ugc2hv
dWxkIGV4dGVuZCB0aGlzLiBCdXQgcG9zc2libHksIDIgb3IgMyBjYW4gY292ZXIgdHlwaWNhbCB1
c2UgY2FzZXMuCisgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE2NDM0NgorICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoYXJndW1lbnRDb3VudEluY2x1ZGluZ1Ro
aXMgPD0gSlNDX0RPTUpJVF9TSUdOQVRVUkVfTUFYX0FSR1VNRU5UU19JTkNMVURJTkdfVEhJUywg
IkN1cnJlbnRseSBDYWxsRE9NIGRvZXMgbm90IHN1cHBvcnQgYW4gYXJiaXRyYXJ5IGxlbmd0aCBh
cmd1bWVudHMuIik7CisKKyAgICBpbnNlcnRDaGVja3MoKTsKKyAgICBhZGRDYWxsKHJlc3VsdE9w
ZXJhbmQsIENhbGwsIHNpZ25hdHVyZSwgY2FsbFRhcmdldCwgYXJndW1lbnRDb3VudEluY2x1ZGlu
Z1RoaXMsIHJlZ2lzdGVyT2Zmc2V0LCBwcmVkaWN0aW9uKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30K
KworCit0ZW1wbGF0ZTx0eXBlbmFtZSBDaGVja3NGdW5jdG9yPgogYm9vbCBCeXRlQ29kZVBhcnNl
cjo6aGFuZGxlSW50cmluc2ljR2V0dGVyKGludCByZXN1bHRPcGVyYW5kLCBjb25zdCBHZXRCeUlk
VmFyaWFudCYgdmFyaWFudCwgTm9kZSogdGhpc05vZGUsIGNvbnN0IENoZWNrc0Z1bmN0b3ImIGlu
c2VydENoZWNrcykKIHsKICAgICBzd2l0Y2ggKHZhcmlhbnQuaW50cmluc2ljKCkpIHsKQEAgLTQ3
OTIsNyArNDgyNiw3IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQg
bGltaXQpCiAgICAgICAgICAgICBpbnQgY2FsbGVlID0gY3VycmVudEluc3RydWN0aW9uWzJdLnUu
b3BlcmFuZDsKICAgICAgICAgICAgIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyA9IGN1
cnJlbnRJbnN0cnVjdGlvblszXS51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBpbnQgcmVnaXN0ZXJP
ZmZzZXQgPSAtY3VycmVudEluc3RydWN0aW9uWzRdLnUub3BlcmFuZDsKLSAgICAgICAgICAgIGFk
ZENhbGwocmVzdWx0LCBDYWxsRXZhbCwgT3BJbmZvKCksIGdldChWaXJ0dWFsUmVnaXN0ZXIoY2Fs
bGVlKSksIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCByZWdpc3Rlck9mZnNldCwgZ2V0UHJl
ZGljdGlvbigpKTsKKyAgICAgICAgICAgIGFkZENhbGwocmVzdWx0LCBDYWxsRXZhbCwgbnVsbHB0
ciwgZ2V0KFZpcnR1YWxSZWdpc3RlcihjYWxsZWUpKSwgYXJndW1lbnRDb3VudEluY2x1ZGluZ1Ro
aXMsIHJlZ2lzdGVyT2Zmc2V0LCBnZXRQcmVkaWN0aW9uKCkpOwogICAgICAgICAgICAgTkVYVF9P
UENPREUob3BfY2FsbF9ldmFsKTsKICAgICAgICAgfQogICAgICAgICAgICAgCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCmluZGV4IGI2MjFlZjAyMmQ4ODY1ZTJlN2Ey
MDExNmNkMjA4YzVjMjQ2YzlmZmIuLmU1ZDIxNzJmOWFlMGU3OTFhYWEyYTY4MmJhYjE0ZWJhOTMw
NjdkYmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6
ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCkBAIC0z
NCw2ICszNCw3IEBACiAjaW5jbHVkZSAiREZHTGF6eU5vZGUuaCIKICNpbmNsdWRlICJERkdQdXJl
VmFsdWUuaCIKICNpbmNsdWRlICJET01KSVRDYWxsRE9NR2V0dGVyUGF0Y2hwb2ludC5oIgorI2lu
Y2x1ZGUgIkRPTUpJVFNpZ25hdHVyZS5oIgogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERG
RyB7CiAKQEAgLTk1OCwyMCArOTU5LDM4IEBAIHZvaWQgY2xvYmJlcml6ZShHcmFwaCYgZ3JhcGgs
IE5vZGUqIG5vZGUsIGNvbnN0IFJlYWRGdW5jdG9yJiByZWFkLCBjb25zdCBXcml0ZUZ1CiAgICAg
ICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgd3JpdGUoQWJzdHJhY3RIZWFwKERPTVN0YXRl
LCBlZmZlY3Qud3JpdGVzLnJhd1JlcHJlc2VudGF0aW9uKCkpKTsKICAgICAgICAgfQotICAgICAg
ICBpZiAoZWZmZWN0LmRlZikgewotICAgICAgICAgICAgRE9NSklUOjpIZWFwUmFuZ2UgcmFuZ2Ug
PSBlZmZlY3QuZGVmLnZhbHVlKCk7CisgICAgICAgIGlmIChlZmZlY3QuZGVmICE9IERPTUpJVDo6
SGVhcFJhbmdlOjp0b3AoKSkgeworICAgICAgICAgICAgRE9NSklUOjpIZWFwUmFuZ2UgcmFuZ2Ug
PSBlZmZlY3QuZGVmOwogICAgICAgICAgICAgaWYgKHJhbmdlID09IERPTUpJVDo6SGVhcFJhbmdl
Ojpub25lKCkpCiAgICAgICAgICAgICAgICAgZGVmKFB1cmVWYWx1ZShub2RlLCBub2RlLT5jYWxs
RE9NR2V0dGVyRGF0YSgpLT5kb21KSVQpKTsKICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAg
ICAgICAgIC8vIERlZiB3aXRoIGhlYXAgbG9jYXRpb24uIFdlIGRvIG5vdCBpbmNsdWRlICJHbG9i
YWxPYmplY3QiIGZvciB0aGF0IHNpbmNlIHRoaXMgaW5mb3JtYXRpb24gaXMgaW5jbHVkZWQgaW4g
dGhlIGJhc2Ugbm9kZS4KLSAgICAgICAgICAgICAgICAvLyBGSVhNRTogV2hlbiBzdXBwb3J0aW5n
IHRoZSBvdGhlciBub2RlcyBsaWtlIGdldEVsZW1lbnRCeUlkKCJzdHJpbmciKSwgd2Ugc2hvdWxk
IGluY2x1ZGUgdGhlIGJhc2UgYW5kIHRoZSBpZCBzdHJpbmcuCi0gICAgICAgICAgICAgICAgLy8g
Q3VycmVudGx5LCB3ZSBvbmx5IHNlZSB0aGUgRE9NSklUIGdldHRlciBoZXJlLiBTbyBqdXN0IGlu
Y2x1ZGluZyAiYmFzZSIgaXMgb2suCisgICAgICAgICAgICAgICAgLy8gV2Ugb25seSBzZWUgdGhl
IERPTUpJVCBnZXR0ZXIgaGVyZS4gU28ganVzdCBpbmNsdWRpbmcgImJhc2UiIGlzIG9rLgogICAg
ICAgICAgICAgICAgIGRlZihIZWFwTG9jYXRpb24oRE9NU3RhdGVMb2MsIEFic3RyYWN0SGVhcChE
T01TdGF0ZSwgcmFuZ2UucmF3UmVwcmVzZW50YXRpb24oKSksIG5vZGUtPmNoaWxkMSgpKSwgTGF6
eU5vZGUobm9kZSkpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKKyAgICBjYXNlIENhbGxET006IHsKKyAgICAgICAgY29uc3QgRE9NSklUOjpTaWdu
YXR1cmUqIHNpZ25hdHVyZSA9IG5vZGUtPnNpZ25hdHVyZSgpOworICAgICAgICBET01KSVQ6OkVm
ZmVjdCBlZmZlY3QgPSBzaWduYXR1cmUtPmVmZmVjdDsKKyAgICAgICAgaWYgKGVmZmVjdC5yZWFk
cykgeworICAgICAgICAgICAgaWYgKGVmZmVjdC5yZWFkcyA9PSBET01KSVQ6OkhlYXBSYW5nZTo6
dG9wKCkpCisgICAgICAgICAgICAgICAgcmVhZChXb3JsZCk7CisgICAgICAgICAgICBlbHNlCisg
ICAgICAgICAgICAgICAgcmVhZChBYnN0cmFjdEhlYXAoRE9NU3RhdGUsIGVmZmVjdC5yZWFkcy5y
YXdSZXByZXNlbnRhdGlvbigpKSk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGVmZmVjdC53cml0
ZXMpIHsKKyAgICAgICAgICAgIGlmIChlZmZlY3Qud3JpdGVzID09IERPTUpJVDo6SGVhcFJhbmdl
Ojp0b3AoKSkKKyAgICAgICAgICAgICAgICB3cml0ZShIZWFwKTsKKyAgICAgICAgICAgIGVsc2UK
KyAgICAgICAgICAgICAgICB3cml0ZShBYnN0cmFjdEhlYXAoRE9NU3RhdGUsIGVmZmVjdC53cml0
ZXMucmF3UmVwcmVzZW50YXRpb24oKSkpOworICAgICAgICB9CisgICAgICAgIEFTU0VSVF9XSVRI
X01FU1NBR0UoZWZmZWN0LmRlZiA9PSBET01KSVQ6OkhlYXBSYW5nZTo6dG9wKCksICJDdXJyZW50
bHksIHdlIGRvIG5vdCBhY2NlcHQgYW55IGRlZiBmb3IgQ2FsbERPTS4iKTsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKwogICAgIGNhc2UgQXJyYXlpZnk6CiAgICAgY2FzZSBBcnJheWlmeVRvU3Ry
dWN0dXJlOgogICAgICAgICByZWFkKEpTQ2VsbF9zdHJ1Y3R1cmVJRCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0RvZXNHQy5jcHAKaW5kZXggOTdjZDg0ODc0NzdhYzkwODRmZTkwZGRiOThk
MzBmNDY2ZTVjYTE2Zi4uOWU2YWE1NTBhNDRlMGUxYzYyMTc1ZTUxOWY2MGEzZTg1MTVhN2I3YyAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcApAQCAtMzAxLDYgKzMwMSw3
IEBAIGJvb2wgZG9lc0dDKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSkKICAgICBjYXNlIENyZWF0
ZVJlc3Q6CiAgICAgY2FzZSBUb0xvd2VyQ2FzZToKICAgICBjYXNlIENhbGxET01HZXR0ZXI6Cisg
ICAgY2FzZSBDYWxsRE9NOgogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgCiAgICAgY2Fz
ZSBNdWx0aVB1dEJ5T2Zmc2V0OgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdGaXh1cFBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQ
aGFzZS5jcHAKaW5kZXggMWQ0ZTkwN2E3ZjJmZmNjMmQ5YTJhMDM3NzExNDZhNzkxMDFmM2NkMy4u
YzhkZDU2Mjc4OGYwOTk1M2NjYjExNjEwYTA5NDI0YjliZTExN2E4YiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCkBAIC0xNzA4LDkgKzE3MDgsMTAgQEAg
Y2xhc3MgRml4dXBQaGFzZSA6IHB1YmxpYyBQaGFzZSB7CiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgfQogCi0gICAgICAgIGNhc2UgQ2hlY2tET006Ci0gICAgICAgICAgICBmaXhFZGdlPENl
bGxVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgY2FzZSBDaGVja0RPTTogeworICAgICAg
ICAgICAgZml4dXBDaGVja0RPTShub2RlKTsKICAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9
CiAKICAgICAgICAgY2FzZSBDYWxsRE9NR2V0dGVyOiB7CiAgICAgICAgICAgICBET01KSVQ6OkNh
bGxET01HZXR0ZXJQYXRjaHBvaW50KiBwYXRjaHBvaW50ID0gbm9kZS0+Y2FsbERPTUdldHRlckRh
dGEoKS0+cGF0Y2hwb2ludDsKQEAgLTE3MjAsNiArMTcyMSwxNiBAQCBjbGFzcyBGaXh1cFBoYXNl
IDogcHVibGljIFBoYXNlIHsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKKyAgICAg
ICAgY2FzZSBDYWxsRE9NOiB7CisgICAgICAgICAgICBmaXh1cENhbGxET00obm9kZSk7CisgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAgIGNhc2UgQ2FsbDogeworICAgICAg
ICAgICAgYXR0ZW1wdFRvTWFrZUNhbGxET00obm9kZSk7CisgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgfQorCiAjaWYgIUFTU0VSVF9ESVNBQkxFRAogICAgICAgICAvLyBIYXZlIHRoZXNlIG5v
LW9wIGNhc2VzIGhlcmUgdG8gZW5zdXJlIHRoYXQgbm9ib2R5IGZvcmdldHMgdG8gYWRkIGhhbmRs
ZXJzIGZvciBuZXcgb3Bjb2Rlcy4KICAgICAgICAgY2FzZSBTZXRBcmd1bWVudDoKQEAgLTE3MzYs
NyArMTc0Nyw2IEBAIGNsYXNzIEZpeHVwUGhhc2UgOiBwdWJsaWMgUGhhc2UgewogICAgICAgICBj
YXNlIEdldEdsb2JhbFZhcjoKICAgICAgICAgY2FzZSBHZXRHbG9iYWxMZXhpY2FsVmFyaWFibGU6
CiAgICAgICAgIGNhc2UgTm90aWZ5V3JpdGU6Ci0gICAgICAgIGNhc2UgQ2FsbDoKICAgICAgICAg
Y2FzZSBEaXJlY3RDYWxsOgogICAgICAgICBjYXNlIENoZWNrVHlwZUluZm9GbGFnczoKICAgICAg
ICAgY2FzZSBUYWlsQ2FsbElubGluZWRDYWxsZXI6CkBAIC0yNjU5LDYgKzI2NjksOTMgQEAgY2xh
c3MgRml4dXBQaGFzZSA6IHB1YmxpYyBQaGFzZSB7CiAgICAgICAgICAgICBPcEluZm8oYXJyYXlN
b2RlLmFzV29yZCgpKSwgRWRnZShjaGlsZCwgS25vd25DZWxsVXNlKSwgRWRnZShzdG9yYWdlKSk7
CiAgICAgfQogICAgIAorICAgIGJvb2wgYXR0ZW1wdFRvTWFrZUNhbGxET00oTm9kZSogbm9kZSkK
KyAgICB7CisgICAgICAgIGlmIChtX2dyYXBoLmhhc0V4aXRTaXRlKG5vZGUtPm9yaWdpbi5zZW1h
bnRpYywgQmFkVHlwZSkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgY29u
c3QgRE9NSklUOjpTaWduYXR1cmUqIHNpZ25hdHVyZSA9IG5vZGUtPnNpZ25hdHVyZSgpOworICAg
ICAgICBpZiAoIXNpZ25hdHVyZSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAg
ICB7CisgICAgICAgICAgICB1bnNpZ25lZCBpbmRleCA9IDA7CisgICAgICAgICAgICBib29sIHNo
b3VsZENvbnZlcnRUb0NhbGxET00gPSB0cnVlOworICAgICAgICAgICAgbV9ncmFwaC5kb1RvQ2hp
bGRyZW4obm9kZSwgWyZdKEVkZ2UmIGVkZ2UpIHsKKyAgICAgICAgICAgICAgICAvLyBDYWxsZWUu
IElnbm9yZSB0aGlzLiBERkdCeXRlQ29kZVBhcnNlciBhbHJlYWR5IGVtaXQgYXBwcm9wcmlhdGUg
Y2hlY2tzLgorICAgICAgICAgICAgICAgIGlmICghaW5kZXgpCisgICAgICAgICAgICAgICAgICAg
IHJldHVybjsKKworICAgICAgICAgICAgICAgIGlmIChpbmRleCA9PSAxKSB7CisgICAgICAgICAg
ICAgICAgICAgIC8vIERPTSBub2RlIGNhc2UuCisgICAgICAgICAgICAgICAgICAgIGlmIChlZGdl
LT5zaG91bGRTcGVjdWxhdGVOb3RDZWxsKCkpCisgICAgICAgICAgICAgICAgICAgICAgICBzaG91
bGRDb252ZXJ0VG9DYWxsRE9NID0gZmFsc2U7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgICAgICAgICAgICAgc3dpdGNoIChzaWduYXR1cmUtPmFyZ3VtZW50c1tpbmRleCAtIDJd
KSB7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgU3BlY1N0cmluZzoKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGlmIChlZGdlLT5zaG91bGRTcGVjdWxhdGVOb3RTdHJpbmcoKSkKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzaG91bGRDb252ZXJ0VG9DYWxsRE9NID0gZmFsc2U7CisgICAg
ICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSBTcGVj
SW50MzJPbmx5OgorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVkZ2UtPnNob3VsZFNwZWN1
bGF0ZU5vdEludDMyKCkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hvdWxkQ29udmVy
dFRvQ2FsbERPTSA9IGZhbHNlOworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICAgICAgICAgIGNhc2UgU3BlY0Jvb2xlYW46CisgICAgICAgICAgICAgICAgICAgICAg
ICBpZiAoZWRnZS0+c2hvdWxkU3BlY3VsYXRlTm90Qm9vbGVhbigpKQorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHNob3VsZENvbnZlcnRUb0NhbGxET00gPSBmYWxzZTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAg
ICAgICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgICAgICsraW5kZXg7CisgICAgICAgICAgICB9KTsKKyAgICAg
ICAgICAgIGlmICghc2hvdWxkQ29udmVydFRvQ2FsbERPTSkKKyAgICAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgICAgIH0KKworICAgICAgICBOb2RlKiB0aGlzTm9kZSA9IG1fZ3JhcGgu
dmFyQXJnQ2hpbGQobm9kZSwgMSkubm9kZSgpOworICAgICAgICBSZWY8RE9NSklUOjpQYXRjaHBv
aW50PiBjaGVja0RPTVBhdGNocG9pbnQgPSBzaWduYXR1cmUtPmNoZWNrRE9NKCk7CisgICAgICAg
IG1fZ3JhcGgubV9kb21KSVRQYXRjaHBvaW50cy5hcHBlbmQoY2hlY2tET01QYXRjaHBvaW50LnB0
cigpKTsKKyAgICAgICAgTm9kZSogY2hlY2tET00gPSBtX2luc2VydGlvblNldC5pbnNlcnROb2Rl
KG1faW5kZXhJbkJsb2NrLCBTcGVjTm9uZSwgQ2hlY2tET00sIG5vZGUtPm9yaWdpbiwgT3BJbmZv
KGNoZWNrRE9NUGF0Y2hwb2ludC5wdHIoKSksIE9wSW5mbyhzaWduYXR1cmUtPmNsYXNzSW5mbyks
IEVkZ2UodGhpc05vZGUpKTsKKyAgICAgICAgbm9kZS0+Y29udmVydFRvQ2FsbERPTShtX2dyYXBo
KTsKKyAgICAgICAgZml4dXBDaGVja0RPTShjaGVja0RPTSk7CisgICAgICAgIGZpeHVwQ2FsbERP
TShub2RlKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgdm9pZCBmaXh1cENo
ZWNrRE9NKE5vZGUqIG5vZGUpCisgICAgeworICAgICAgICBmaXhFZGdlPENlbGxVc2U+KG5vZGUt
PmNoaWxkMSgpKTsKKyAgICB9CisKKyAgICB2b2lkIGZpeHVwQ2FsbERPTShOb2RlKiBub2RlKQor
ICAgIHsKKyAgICAgICAgY29uc3QgRE9NSklUOjpTaWduYXR1cmUqIHNpZ25hdHVyZSA9IG5vZGUt
PnNpZ25hdHVyZSgpOworICAgICAgICBhdXRvIGZpeHVwID0gWyZdKEVkZ2UmIGVkZ2UsIHVuc2ln
bmVkIGFyZ3VtZW50SW5kZXgpIHsKKyAgICAgICAgICAgIGlmICghZWRnZSkKKyAgICAgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgICAgICBzd2l0Y2ggKHNpZ25hdHVyZS0+YXJndW1lbnRzW2Fy
Z3VtZW50SW5kZXhdKSB7CisgICAgICAgICAgICBjYXNlIFNwZWNTdHJpbmc6CisgICAgICAgICAg
ICAgICAgZml4RWRnZTxTdHJpbmdVc2U+KGVkZ2UpOworICAgICAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICAgICAgY2FzZSBTcGVjSW50MzJPbmx5OgorICAgICAgICAgICAgICAgIGZpeEVkZ2U8
SW50MzJVc2U+KGVkZ2UpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2Fz
ZSBTcGVjQm9vbGVhbjoKKyAgICAgICAgICAgICAgICBmaXhFZGdlPEJvb2xlYW5Vc2U+KGVkZ2Up
OworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAg
ICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9OworICAgICAgICBmaXhFZGdlPENlbGxVc2U+
KG5vZGUtPmNoaWxkMSgpKTsgLy8gRE9NLgorICAgICAgICBmaXh1cChub2RlLT5jaGlsZDIoKSwg
MCk7CisgICAgICAgIGZpeHVwKG5vZGUtPmNoaWxkMygpLCAxKTsKKyAgICB9CisKICAgICB2b2lk
IGZpeHVwQ2hlY2tzSW5CbG9jayhCYXNpY0Jsb2NrKiBibG9jaykKICAgICB7CiAgICAgICAgIGlm
ICghYmxvY2spCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmNwcAppbmRleCBmMzcxMTdi
Zjk2OWZlNGI2OWQ5NWYwMDFkNTY4ODA0NmJkY2Q5NDUwLi42YTk0YjU5OWQ4N2E4ODFkNDU5OTA5
OGM2YzNlYmNmZDQ2MDc2ZjY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR05vZGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5jcHAK
QEAgLTIyMCw2ICsyMjAsMjYgQEAgdm9pZCBOb2RlOjpjb252ZXJ0VG9EaXJlY3RDYWxsKEZyb3pl
blZhbHVlKiBleGVjdXRhYmxlKQogICAgIG1fb3BJbmZvID0gZXhlY3V0YWJsZTsKIH0KIAordm9p
ZCBOb2RlOjpjb252ZXJ0VG9DYWxsRE9NKEdyYXBoJiBncmFwaCkKK3sKKyAgICBBU1NFUlQob3Ao
KSA9PSBDYWxsKTsKKyAgICBBU1NFUlQoc2lnbmF0dXJlKCkpOworCisgICAgRWRnZSBlZGdlc1sz
XTsKKyAgICAvLyBTa2lwIHRoZSBmaXJzdCBvbmUuIFRoaXMgaXMgY2FsbGVlLgorICAgIFJFTEVB
U0VfQVNTRVJUKG51bUNoaWxkcmVuKCkgPD0gNCk7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMTsg
aSA8IG51bUNoaWxkcmVuKCk7ICsraSkKKyAgICAgICAgZWRnZXNbaSAtIDFdID0gZ3JhcGgudmFy
QXJnQ2hpbGQodGhpcywgaSk7CisKKyAgICBzZXRPcEFuZERlZmF1bHRGbGFncyhDYWxsRE9NKTsK
KyAgICBjaGlsZHJlbi5zZXRDaGlsZDEoZWRnZXNbMF0pOworICAgIGNoaWxkcmVuLnNldENoaWxk
MihlZGdlc1sxXSk7CisgICAgY2hpbGRyZW4uc2V0Q2hpbGQzKGVkZ2VzWzJdKTsKKworICAgIGlm
ICghc2lnbmF0dXJlKCktPmVmZmVjdC5tdXN0R2VuZXJhdGUoKSkKKyAgICAgICAgY2xlYXJGbGFn
cyhOb2RlTXVzdEdlbmVyYXRlKTsKK30KKwogU3RyaW5nIE5vZGU6OnRyeUdldFN0cmluZyhHcmFw
aCYgZ3JhcGgpCiB7CiAgICAgaWYgKGhhc0NvbnN0YW50KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHTm9kZS5oCmluZGV4IDg4Zjg4MTE4OTBlMTc3M2VhMWQ2MDJlOWNhYzljNTgxZGE0ZjliOWIu
LjA3ZDY0NGYzZDNjNTg0YjdiZmNiYzhmYmVlNWM1MmVkNjA4NWU5YjEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHTm9kZS5oCkBAIC02Miw2ICs2Miw3IEBAIG5hbWVzcGFjZSBET01KSVQgewog
Y2xhc3MgR2V0dGVyU2V0dGVyOwogY2xhc3MgUGF0Y2hwb2ludDsKIGNsYXNzIENhbGxET01HZXR0
ZXJQYXRjaHBvaW50OworY2xhc3MgU2lnbmF0dXJlOwogfQogCiBuYW1lc3BhY2UgUHJvZmlsZXIg
ewpAQCAtNjUyLDYgKzY1Myw4IEBAIHN0cnVjdCBOb2RlIHsKICAgICB9CiAgICAgCiAgICAgdm9p
ZCBjb252ZXJ0VG9EaXJlY3RDYWxsKEZyb3plblZhbHVlKik7CisKKyAgICB2b2lkIGNvbnZlcnRU
b0NhbGxET00oR3JhcGgmKTsKICAgICAKICAgICBKU1ZhbHVlIGFzSlNWYWx1ZSgpCiAgICAgewpA
QCAtMTQ2NCw2ICsxNDY3LDcgQEAgc3RydWN0IE5vZGUgewogICAgICAgICBjYXNlIFRvTnVtYmVy
OgogICAgICAgICBjYXNlIExvYWRGcm9tSlNNYXBCdWNrZXQ6CiAgICAgICAgIGNhc2UgQ2FsbERP
TUdldHRlcjoKKyAgICAgICAgY2FzZSBDYWxsRE9NOgogICAgICAgICAgICAgcmV0dXJuIHRydWU7
CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0xOTgxLDYg
KzE5ODUsMTEgQEAgc3RydWN0IE5vZGUgewogICAgIHsKICAgICAgICAgcmV0dXJuIGlzSW50MzJT
cGVjdWxhdGlvbihwcmVkaWN0aW9uKCkpOwogICAgIH0KKworICAgIGJvb2wgc2hvdWxkU3BlY3Vs
YXRlTm90SW50MzIoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGlzTm90SW50MzJTcGVjdWxhdGlv
bihwcmVkaWN0aW9uKCkpOworICAgIH0KICAgICAKICAgICBib29sIHNhd0Jvb2xlYW5zKCkKICAg
ICB7CkBAIC0yMDQxLDYgKzIwNTAsMTEgQEAgc3RydWN0IE5vZGUgewogICAgIHsKICAgICAgICAg
cmV0dXJuIGlzQm9vbGVhblNwZWN1bGF0aW9uKHByZWRpY3Rpb24oKSk7CiAgICAgfQorCisgICAg
Ym9vbCBzaG91bGRTcGVjdWxhdGVOb3RCb29sZWFuKCkKKyAgICB7CisgICAgICAgIHJldHVybiBp
c05vdEJvb2xlYW5TcGVjdWxhdGlvbihwcmVkaWN0aW9uKCkpOworICAgIH0KICAgICAKICAgICBi
b29sIHNob3VsZFNwZWN1bGF0ZU90aGVyKCkKICAgICB7CkBAIC0yMDY2LDYgKzIwODAsMTEgQEAg
c3RydWN0IE5vZGUgewogICAgIHsKICAgICAgICAgcmV0dXJuIGlzU3RyaW5nU3BlY3VsYXRpb24o
cHJlZGljdGlvbigpKTsKICAgICB9CisKKyAgICBib29sIHNob3VsZFNwZWN1bGF0ZU5vdFN0cmlu
ZygpCisgICAgeworICAgICAgICByZXR1cm4gaXNOb3RTdHJpbmdTcGVjdWxhdGlvbihwcmVkaWN0
aW9uKCkpOworICAgIH0KICAKICAgICBib29sIHNob3VsZFNwZWN1bGF0ZVN0cmluZ09yT3RoZXIo
KQogICAgIHsKQEAgLTIzNjgsNiArMjM4NywxOCBAQCBzdHJ1Y3QgTm9kZSB7CiAgICAgICAgIHJl
dHVybiBtX29wSW5mbzIuYXM8Y29uc3QgQ2xhc3NJbmZvKj4oKTsKICAgICB9CiAKKyAgICBib29s
IGhhc1NpZ25hdHVyZSgpIGNvbnN0CisgICAgeworICAgICAgICAvLyBOb3RlIHRoYXQgdGhpcyBk
b2VzIG5vdCBpbmNsdWRlIFRhaWxDYWxsIG5vZGUgdHlwZXMgaW50ZW50aW9uYWxseS4KKyAgICAg
ICAgLy8gQ2FsbERPTSBub2RlIHR5cGVzIGFyZSBhbHdheXMgY29udmVydGVkIGZyb20gQ2FsbC4K
KyAgICAgICAgcmV0dXJuIG9wKCkgPT0gQ2FsbCB8fCBvcCgpID09IENhbGxET007CisgICAgfQor
CisgICAgY29uc3QgRE9NSklUOjpTaWduYXR1cmUqIHNpZ25hdHVyZSgpCisgICAgeworICAgICAg
ICByZXR1cm4gbV9vcEluZm8uYXM8Y29uc3QgRE9NSklUOjpTaWduYXR1cmUqPigpOworICAgIH0K
KwogICAgIE5vZGUqIHJlcGxhY2VtZW50KCkgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVybiBt
X21pc2MucmVwbGFjZW1lbnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR05vZGVUeXBlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgK
aW5kZXggZDk3NWI3NjIyMGMwMmMxMzExYzE5MmVhOWFkMDJlNjAxYTUyMDRlMC4uZjM3NDIzY2Vl
YjIyODYyYjZjMmZhYTViYmEwMzQ1YTMzNmVmNjM5ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHTm9kZVR5cGUuaApAQCAtNDA3LDYgKzQwNyw3IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1l
c3BhY2UgREZHIHsKICAgICAvKiBOb2RlcyBmb3IgRE9NIEpJVCAqL1wKICAgICBtYWNybyhDaGVj
a0RPTSwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKENhbGxET01HZXR0ZXIsIE5vZGVS
ZXN1bHRKUyB8IE5vZGVNdXN0R2VuZXJhdGUpIFwKKyAgICBtYWNybyhDYWxsRE9NLCBOb2RlUmVz
dWx0SlMgfCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAKIC8vIFRoaXMgZW51bSBnZW5lcmF0ZXMgYSBt
b25vdG9uaWNhbGx5IGluY3JlYXNpbmcgaWQgZm9yIGFsbCBOb2RlIHR5cGVzLAogLy8gYW5kIGlz
IHVzZWQgYnkgdGhlIHN1YnNlcXVlbnQgZW51bSB0byBmaWxsIG91dCB0aGUgaWQgKGFzIGFjY2Vz
c2VkIHZpYSB0aGUgTm9kZUlkTWFzaykuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCmluZGV4IDZlZDcy
OWIzYjg1NzMxYzBhNmU1MDk2NzA5Zjk4MDE2YTRiMWY4ZTAuLjIwNTMxYTA5MzQyYTVlYmYwMTNk
YzNiZTA5YTU3ZDAyNmVhNDRkNzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCkBAIC0xMDIwLDcg
KzEwMjAsOCBAQCBjbGFzcyBQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZSA6IHB1YmxpYyBQaGFz
ZSB7CiAgICAgICAgIGNhc2UgR2V0UmVnRXhwT2JqZWN0TGFzdEluZGV4OgogICAgICAgICBjYXNl
IFNldFJlZ0V4cE9iamVjdExhc3RJbmRleDoKICAgICAgICAgY2FzZSBSZWNvcmRSZWdFeHBDYWNo
ZWRSZXN1bHQ6Ci0gICAgICAgIGNhc2UgTGF6eUpTQ29uc3RhbnQ6IHsKKyAgICAgICAgY2FzZSBM
YXp5SlNDb25zdGFudDoKKyAgICAgICAgY2FzZSBDYWxsRE9NOiB7CiAgICAgICAgICAgICAvLyBU
aGlzIG5vZGUgc2hvdWxkIG5ldmVyIGJlIHZpc2libGUgYXQgdGhpcyBzdGFnZSBvZiBjb21waWxh
dGlvbi4gSXQgaXMKICAgICAgICAgICAgIC8vIGluc2VydGVkIGJ5IGZpeHVwKCksIHdoaWNoIGZv
bGxvd3MgdGhpcyBwaGFzZS4KICAgICAgICAgICAgIERGR19DUkFTSChtX2dyYXBoLCBtX2N1cnJl
bnROb2RlLCAiVW5leHBlY3RlZCBub2RlIGR1cmluZyBwcmVkaWN0aW9uIHByb3BhZ2F0aW9uIik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCmluZGV4IDJj
OTk4MDIyNTY2N2RmMzQwNTBkY2E2YTM0ZTg3ZjM0ZDU5OGVkMmIuLjNmZTlkYzE1ZGVlMTdiODFk
MjJmZjY0NDNmZWQ2N2Y0NzY5NjNjYTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU2FmZVRvRXhlY3V0ZS5oCkBAIC0yMjAsNiArMjIwLDcgQEAgYm9vbCBzYWZlVG9FeGVjdXRl
KEFic3RyYWN0U3RhdGVUeXBlJiBzdGF0ZSwgR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlKQogICAg
IGNhc2UgR2V0RXhlY3V0YWJsZToKICAgICBjYXNlIEdldEJ1dHRlcmZseToKICAgICBjYXNlIENh
bGxET01HZXR0ZXI6CisgICAgY2FzZSBDYWxsRE9NOgogICAgIGNhc2UgQ2hlY2tET006CiAgICAg
Y2FzZSBDaGVja0FycmF5OgogICAgIGNhc2UgQXJyYXlpZnk6CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCmluZGV4IDI3MzJmZTg1ODQ0ZTUxZjQ2
NzBiMGFlNDAzZjJhYzIzNTA0Yzg3MWMuLjM0MTliNzAyZjgxZGQ5OTA1NmM5N2FiMTQ0OGEzMGE5
YjI5N2M3YjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3Vs
YXRpdmVKSVQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRp
dmVKSVQuY3BwCkBAIC03MjYwLDYgKzcyNjAsODggQEAgc3RhdGljIHZvaWQgYWxsb2NhdGVUZW1w
b3JhcnlSZWdpc3RlcnNGb3JQYXRjaHBvaW50KFNwZWN1bGF0aXZlSklUKiBqaXQsIFZlY3RvcjwK
ICAgICB9CiB9CiAKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVDYWxsRE9NKE5vZGUqIG5v
ZGUpCit7CisgICAgY29uc3QgRE9NSklUOjpTaWduYXR1cmUqIHNpZ25hdHVyZSA9IG5vZGUtPnNp
Z25hdHVyZSgpOworCisgICAgLy8gRklYTUU6IFdlIHNob3VsZCBoYXZlIGEgd2F5IHRvIGNhbGwg
ZnVuY3Rpb25zIHdpdGggdGhlIHZlY3RvciBvZiByZWdpc3RlcnMuCisgICAgLy8gaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MzA5OQorICAgIFZlY3RvcjxWYXJpYW50
PFNwZWN1bGF0ZUNlbGxPcGVyYW5kLCBTcGVjdWxhdGVJbnQzMk9wZXJhbmQsIFNwZWN1bGF0ZUJv
b2xlYW5PcGVyYW5kPiwgSlNDX0RPTUpJVF9TSUdOQVRVUkVfTUFYX0FSR1VNRU5UU19JTkNMVURJ
TkdfVEhJUz4gb3BlcmFuZHM7CisgICAgVmVjdG9yPEdQUlJlZywgSlNDX0RPTUpJVF9TSUdOQVRV
UkVfTUFYX0FSR1VNRU5UU19JTkNMVURJTkdfVEhJUz4gcmVnczsKKworICAgIGF1dG8gYXBwZW5k
Q2VsbCA9IFsmXShFZGdlJiBlZGdlKSB7CisgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIG9w
ZXJhbmQodGhpcywgZWRnZSk7CisgICAgICAgIHJlZ3MuYXBwZW5kKG9wZXJhbmQuZ3ByKCkpOwor
ICAgICAgICBvcGVyYW5kcy5hcHBlbmQoV1RGTW92ZShvcGVyYW5kKSk7CisgICAgfTsKKworICAg
IGF1dG8gYXBwZW5kU3RyaW5nID0gWyZdKEVkZ2UmIGVkZ2UpIHsKKyAgICAgICAgU3BlY3VsYXRl
Q2VsbE9wZXJhbmQgb3BlcmFuZCh0aGlzLCBlZGdlKTsKKyAgICAgICAgR1BSUmVnIGdwciA9IG9w
ZXJhbmQuZ3ByKCk7CisgICAgICAgIHJlZ3MuYXBwZW5kKGdwcik7CisgICAgICAgIHNwZWN1bGF0
ZVN0cmluZyhlZGdlLCBncHIpOworICAgICAgICBvcGVyYW5kcy5hcHBlbmQoV1RGTW92ZShvcGVy
YW5kKSk7CisgICAgfTsKKworICAgIGF1dG8gYXBwZW5kSW50MzIgPSBbJl0oRWRnZSYgZWRnZSkg
eworICAgICAgICBTcGVjdWxhdGVJbnQzMk9wZXJhbmQgb3BlcmFuZCh0aGlzLCBlZGdlKTsKKyAg
ICAgICAgcmVncy5hcHBlbmQob3BlcmFuZC5ncHIoKSk7CisgICAgICAgIG9wZXJhbmRzLmFwcGVu
ZChXVEZNb3ZlKG9wZXJhbmQpKTsKKyAgICB9OworCisgICAgYXV0byBhcHBlbmRCb29sZWFuID0g
WyZdKEVkZ2UmIGVkZ2UpIHsKKyAgICAgICAgU3BlY3VsYXRlQm9vbGVhbk9wZXJhbmQgb3BlcmFu
ZCh0aGlzLCBlZGdlKTsKKyAgICAgICAgcmVncy5hcHBlbmQob3BlcmFuZC5ncHIoKSk7CisgICAg
ICAgIG9wZXJhbmRzLmFwcGVuZChXVEZNb3ZlKG9wZXJhbmQpKTsKKyAgICB9OworCisgICAgdW5z
aWduZWQgaW5kZXggPSAwOworICAgIG1faml0LmdyYXBoKCkuZG9Ub0NoaWxkcmVuKG5vZGUsIFsm
XShFZGdlIGVkZ2UpIHsKKyAgICAgICAgaWYgKCFpbmRleCkKKyAgICAgICAgICAgIGFwcGVuZENl
bGwoZWRnZSk7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgc3dpdGNoIChzaWduYXR1cmUt
PmFyZ3VtZW50c1tpbmRleCAtIDFdKSB7CisgICAgICAgICAgICBjYXNlIFNwZWNTdHJpbmc6Cisg
ICAgICAgICAgICAgICAgYXBwZW5kU3RyaW5nKGVkZ2UpOworICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgY2FzZSBTcGVjSW50MzJPbmx5OgorICAgICAgICAgICAgICAgIGFwcGVu
ZEludDMyKGVkZ2UpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBT
cGVjQm9vbGVhbjoKKyAgICAgICAgICAgICAgICBhcHBlbmRCb29sZWFuKGVkZ2UpOworICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICBS
RUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgICsraW5kZXg7CisgICAgfSk7CisKKyAgICBK
U1ZhbHVlUmVnc1RlbXBvcmFyeSByZXN1bHQodGhpcyk7CisgICAgSlNWYWx1ZVJlZ3MgcmVzdWx0
UmVncyA9IHJlc3VsdC5yZWdzKCk7CisKKyAgICBmbHVzaFJlZ2lzdGVycygpOworICAgIHVuc2ln
bmVkIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzID0gc2lnbmF0dXJlLT5hcmd1bWVudENvdW50
ICsgMTsKKyAgICBzd2l0Y2ggKGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKSB7CisgICAgY2Fz
ZSAxOgorICAgICAgICBjYWxsT3BlcmF0aW9uKHJlaW50ZXJwcmV0X2Nhc3Q8Sl9KSVRPcGVyYXRp
b25fRVA+KHNpZ25hdHVyZS0+dW5zYWZlRnVuY3Rpb24pLCBleHRyYWN0UmVzdWx0KHJlc3VsdFJl
Z3MpLCByZWdzWzBdKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSAyOgorICAgICAgICBjYWxs
T3BlcmF0aW9uKHJlaW50ZXJwcmV0X2Nhc3Q8Sl9KSVRPcGVyYXRpb25fRVBQPihzaWduYXR1cmUt
PnVuc2FmZUZ1bmN0aW9uKSwgZXh0cmFjdFJlc3VsdChyZXN1bHRSZWdzKSwgcmVnc1swXSwgcmVn
c1sxXSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgMzoKKyAgICAgICAgY2FsbE9wZXJhdGlv
bihyZWludGVycHJldF9jYXN0PEpfSklUT3BlcmF0aW9uX0VQUFA+KHNpZ25hdHVyZS0+dW5zYWZl
RnVuY3Rpb24pLCBleHRyYWN0UmVzdWx0KHJlc3VsdFJlZ3MpLCByZWdzWzBdLCByZWdzWzFdLCBy
ZWdzWzJdKTsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgUkVMRUFTRV9B
U1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgbV9qaXQu
ZXhjZXB0aW9uQ2hlY2soKTsKKyAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdFJlZ3MsIG5vZGUpOwor
fQorCiB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlQ2FsbERPTUdldHRlcihOb2RlKiBub2Rl
KQogewogICAgIERPTUpJVDo6Q2FsbERPTUdldHRlclBhdGNocG9pbnQqIHBhdGNocG9pbnQgPSBu
b2RlLT5jYWxsRE9NR2V0dGVyRGF0YSgpLT5wYXRjaHBvaW50OwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCmluZGV4IDU2NTM4YTI5NDZlNDAzMDBmMDUw
ZjMzNTUyYTczY2NhNzU5Y2VhY2EuLjc5NmE4YTM1ZTZkMzA1N2ZhYWJlYTA3OWEwMjAzZDVkNDk5
YTk1YjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRp
dmVKSVQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklU
LmgKQEAgLTE2NTEsNiArMTY1MSwxMSBAQCBjbGFzcyBTcGVjdWxhdGl2ZUpJVCB7CiAgICAgICAg
IG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyKTsKICAgICAgICAg
cmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOwogICAgIH0KKyAg
ICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpfSklUT3BlcmF0aW9uX0VQUFAgb3Bl
cmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIsIEdQUlJlZyBh
cmczKQorICAgIHsKKyAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFy
ZzEsIGFyZzIsIGFyZzMpOworICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVy
YXRpb24sIHJlc3VsdCk7CisgICAgfQogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRp
b24oSl9KSVRPcGVyYXRpb25fRUdQIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgR1BSUmVnIGFy
ZzEsIEdQUlJlZyBhcmcyKQogICAgIHsKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRo
RXhlY1N0YXRlKGFyZzEsIGFyZzIpOwpAQCAtMTkxNSw2ICsxOTIwLDE2IEBAIGNsYXNzIFNwZWN1
bGF0aXZlSklUIHsKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFy
ZzEsIFRydXN0ZWRJbW1QdHIocG9pbnRlcikpOwogICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNl
dFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdC5wYXlsb2FkR1BSKCksIHJlc3VsdC50YWdHUFIoKSk7
CiAgICAgfQorICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9KSVRPcGVyYXRp
b25fRVBQIG9wZXJhdGlvbiwgSlNWYWx1ZVJlZ3MgcmVzdWx0LCBHUFJSZWcgYXJnMSwgR1BSUmVn
IGFyZzIpCisgICAgeworICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUo
YXJnMSwgYXJnMik7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlv
biwgcmVzdWx0LnBheWxvYWRHUFIoKSwgcmVzdWx0LnRhZ0dQUigpKTsKKyAgICB9CisgICAgSklU
Q29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihKX0pJVE9wZXJhdGlvbl9FUFBQIG9wZXJhdGlv
biwgSlNWYWx1ZVJlZ3MgcmVzdWx0LCBHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIsIEdQUlJlZyBh
cmczKQorICAgIHsKKyAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFy
ZzEsIGFyZzIsIGFyZzMpOworICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVy
YXRpb24sIHJlc3VsdC5wYXlsb2FkR1BSKCksIHJlc3VsdC50YWdHUFIoKSk7CisgICAgfQogICAg
IEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9KSVRPcGVyYXRpb25fRUdQIG9wZXJh
dGlvbiwgSlNWYWx1ZVJlZ3MgcmVzdWx0LCBHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIpCiAgICAg
ewogICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMik7
CkBAIC0yNTYyLDYgKzI1NzcsNyBAQCBjbGFzcyBTcGVjdWxhdGl2ZUpJVCB7CiAgICAgdm9pZCBj
b21waWxlUmVhbGxvY2F0ZVByb3BlcnR5U3RvcmFnZShOb2RlKik7CiAgICAgdm9pZCBjb21waWxl
R2V0QnV0dGVyZmx5KE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVDYWxsRE9NR2V0dGVyKE5vZGUq
KTsKKyAgICB2b2lkIGNvbXBpbGVDYWxsRE9NKE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVDaGVj
a0RPTShOb2RlKik7CiAgICAgCiAjaWYgVVNFKEpTVkFMVUUzMl82NCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCmluZGV4IGNi
MDRhNWE2NWM3NTBlMjNmMTdjOWRiMjM0MTViNzM0YWVmNWI0YTQuLjEwMjQyOWRlMDAwYjMyYWRm
ZGQwMjc0M2VjNmRmZGRlZTgxZjUzYWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcApAQCAtNTU2MSw2ICs1NTYxLDEwIEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgYnJlYWs7
CiAgICAgfQogCisgICAgY2FzZSBDYWxsRE9NOgorICAgICAgICBjb21waWxlQ2FsbERPTShub2Rl
KTsKKyAgICAgICAgYnJlYWs7CisKICAgICBjYXNlIENhbGxET01HZXR0ZXI6CiAgICAgICAgIGNv
bXBpbGVDYWxsRE9NR2V0dGVyKG5vZGUpOwogICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCmluZGV4IGI0MWM2ZjMy
YjMzZDgzYzY1ZTg1NGY4NjA3OGQ3NGE1MjQwMjk4MTMuLjgzMGJmYWRjYWYyODY2N2EwOGIxYjgy
ZWU1OTg4YzBjNjVkMmNhYjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTcGVjdWxhdGl2ZUpJVDY0LmNwcApAQCAtNTY5Myw2ICs1NjkzLDEwIEBAIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgY29tcGlsZU1hdGVyaWFsaXpl
TmV3T2JqZWN0KG5vZGUpOwogICAgICAgICBicmVhazsKIAorICAgIGNhc2UgQ2FsbERPTToKKyAg
ICAgICAgY29tcGlsZUNhbGxET00obm9kZSk7CisgICAgICAgIGJyZWFrOworCiAgICAgY2FzZSBD
YWxsRE9NR2V0dGVyOgogICAgICAgICBjb21waWxlQ2FsbERPTUdldHRlcihub2RlKTsKICAgICAg
ICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZG9taml0L0RPTUpJ
VEVmZmVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RvbWppdC9ET01KSVRFZmZlY3QuaApp
bmRleCA1OWUzMDBjMzkyNjEwNDdhMTEyMjkwZGE4NmI0ZmExNjhkOWM2MzA2Li42MWNmM2I3MWFi
YmNlMzFlNDUxMzZhZjI4NmM2YzdhZjIzNjY4YTZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZG9taml0L0RPTUpJVEVmZmVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kb21qaXQvRE9NSklURWZmZWN0LmgKQEAgLTI4LDU2ICsyOCw2MiBAQAogI2luY2x1ZGUgIkRP
TUpJVEhlYXBSYW5nZS5oIgogI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgogCi0jaWYgRU5BQkxF
KEpJVCkKLQogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBET01KSVQgewogCi1zdHJ1Y3QgRWZm
ZWN0IHsKK2NsYXNzIEVmZmVjdCB7CitwdWJsaWM6CiAgICAgSGVhcFJhbmdlIHJlYWRzIHsgSGVh
cFJhbmdlOjp0b3AoKSB9OwogICAgIEhlYXBSYW5nZSB3cml0ZXMgeyBIZWFwUmFuZ2U6OnRvcCgp
IH07Ci0gICAgT3B0aW9uYWw8SGVhcFJhbmdlPiBkZWY7CisgICAgSGVhcFJhbmdlIGRlZiB7IEhl
YXBSYW5nZTo6dG9wKCkgfTsKKworICAgIGNvbnN0ZXhwciBFZmZlY3QoKSA9IGRlZmF1bHQ7Cisg
ICAgY29uc3RleHByIEVmZmVjdChIZWFwUmFuZ2UgcmVhZHMsIEhlYXBSYW5nZSB3cml0ZXMpCisg
ICAgICAgIDogcmVhZHMocmVhZHMpCisgICAgICAgICwgd3JpdGVzKHdyaXRlcykKKyAgICB7Cisg
ICAgfQorCisgICAgY29uc3RleHByIEVmZmVjdChIZWFwUmFuZ2UgcmVhZHMsIEhlYXBSYW5nZSB3
cml0ZXMsIEhlYXBSYW5nZSBkZWYpCisgICAgICAgIDogcmVhZHMocmVhZHMpCisgICAgICAgICwg
d3JpdGVzKHdyaXRlcykKKyAgICAgICAgLCBkZWYoZGVmKQorICAgIHsKKyAgICB9CiAKLSAgICBz
dGF0aWMgRWZmZWN0IGZvclJlYWRXcml0ZShIZWFwUmFuZ2UgcmVhZFJhbmdlLCBIZWFwUmFuZ2Ug
d3JpdGVSYW5nZSkKKyAgICBjb25zdGV4cHIgc3RhdGljIEVmZmVjdCBmb3JXcml0ZShIZWFwUmFu
Z2Ugd3JpdGVSYW5nZSkKICAgICB7Ci0gICAgICAgIEVmZmVjdCBlZmZlY3Q7Ci0gICAgICAgIGVm
ZmVjdC5yZWFkcyA9IHJlYWRSYW5nZTsKLSAgICAgICAgZWZmZWN0LndyaXRlcyA9IHdyaXRlUmFu
Z2U7Ci0gICAgICAgIHJldHVybiBlZmZlY3Q7CisgICAgICAgIHJldHVybiBFZmZlY3QoSGVhcFJh
bmdlOjpub25lKCksIHdyaXRlUmFuZ2UpOwogICAgIH0KIAotICAgIHN0YXRpYyBFZmZlY3QgZm9y
UHVyZSgpCisgICAgY29uc3RleHByIHN0YXRpYyBFZmZlY3QgZm9yUmVhZChIZWFwUmFuZ2UgcmVh
ZFJhbmdlKQogICAgIHsKLSAgICAgICAgRWZmZWN0IGVmZmVjdDsKLSAgICAgICAgZWZmZWN0LnJl
YWRzID0gSGVhcFJhbmdlOjpub25lKCk7Ci0gICAgICAgIGVmZmVjdC53cml0ZXMgPSBIZWFwUmFu
Z2U6Om5vbmUoKTsKLSAgICAgICAgZWZmZWN0LmRlZiA9IEhlYXBSYW5nZTo6bm9uZSgpOwotICAg
ICAgICByZXR1cm4gZWZmZWN0OworICAgICAgICByZXR1cm4gRWZmZWN0KHJlYWRSYW5nZSwgSGVh
cFJhbmdlOjpub25lKCkpOwogICAgIH0KIAotICAgIHN0YXRpYyBFZmZlY3QgZm9yRGVmKEhlYXBS
YW5nZSBkZWYpCisgICAgY29uc3RleHByIHN0YXRpYyBFZmZlY3QgZm9yUmVhZFdyaXRlKEhlYXBS
YW5nZSByZWFkUmFuZ2UsIEhlYXBSYW5nZSB3cml0ZVJhbmdlKQogICAgIHsKLSAgICAgICAgRWZm
ZWN0IGVmZmVjdDsKLSAgICAgICAgZWZmZWN0LnJlYWRzID0gZGVmOwotICAgICAgICBlZmZlY3Qu
d3JpdGVzID0gSGVhcFJhbmdlOjpub25lKCk7Ci0gICAgICAgIGVmZmVjdC5kZWYgPSBkZWY7Ci0g
ICAgICAgIHJldHVybiBlZmZlY3Q7CisgICAgICAgIHJldHVybiBFZmZlY3QocmVhZFJhbmdlLCB3
cml0ZVJhbmdlKTsKICAgICB9CiAKLSAgICBzdGF0aWMgRWZmZWN0IGZvckRlZihIZWFwUmFuZ2Ug
ZGVmLCBIZWFwUmFuZ2UgcmVhZFJhbmdlLCBIZWFwUmFuZ2Ugd3JpdGVSYW5nZSkKKyAgICBjb25z
dGV4cHIgc3RhdGljIEVmZmVjdCBmb3JQdXJlKCkKICAgICB7Ci0gICAgICAgIEVmZmVjdCBlZmZl
Y3Q7Ci0gICAgICAgIGVmZmVjdC5yZWFkcyA9IHJlYWRSYW5nZTsKLSAgICAgICAgZWZmZWN0Lndy
aXRlcyA9IHdyaXRlUmFuZ2U7Ci0gICAgICAgIGVmZmVjdC5kZWYgPSBkZWY7Ci0gICAgICAgIHJl
dHVybiBlZmZlY3Q7CisgICAgICAgIHJldHVybiBFZmZlY3QoSGVhcFJhbmdlOjpub25lKCksIEhl
YXBSYW5nZTo6bm9uZSgpLCBIZWFwUmFuZ2U6Om5vbmUoKSk7CiAgICAgfQogCi0gICAgYm9vbCBt
dXN0R2VuZXJhdGUoKSBjb25zdAorICAgIGNvbnN0ZXhwciBzdGF0aWMgRWZmZWN0IGZvckRlZihI
ZWFwUmFuZ2UgZGVmKQorICAgIHsKKyAgICAgICAgcmV0dXJuIEVmZmVjdChkZWYsIEhlYXBSYW5n
ZTo6bm9uZSgpLCBkZWYpOworICAgIH0KKworICAgIGNvbnN0ZXhwciBzdGF0aWMgRWZmZWN0IGZv
ckRlZihIZWFwUmFuZ2UgZGVmLCBIZWFwUmFuZ2UgcmVhZFJhbmdlLCBIZWFwUmFuZ2Ugd3JpdGVS
YW5nZSkKKyAgICB7CisgICAgICAgIHJldHVybiBFZmZlY3QocmVhZFJhbmdlLCB3cml0ZVJhbmdl
LCBkZWYpOworICAgIH0KKworICAgIGNvbnN0ZXhwciBib29sIG11c3RHZW5lcmF0ZSgpIGNvbnN0
CiAgICAgewogICAgICAgICByZXR1cm4gISF3cml0ZXM7CiAgICAgfQogfTsKIAogfSB9Ci0KLSNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RvbWppdC9ET01KSVRIZWFw
UmFuZ2UuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kb21qaXQvRE9NSklUSGVhcFJhbmdlLmgK
aW5kZXggZmI5Mzk5OWZmNzg1YzA2ZjdkYWNkNmRhOWM4ZDZlMGE5NTY3ODY3NC4uYWFiMDJiZjAx
NjUzOWRlOGUyMjVlNzg0MGRmOWQ3NTFhYzE2M2UwMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RvbWppdC9ET01KSVRIZWFwUmFuZ2UuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZG9taml0L0RPTUpJVEhlYXBSYW5nZS5oCkBAIC0yOCw4ICsyOCw2IEBACiAjaW5jbHVk
ZSA8d3RmL01hdGhFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvUHJpbnRTdHJlYW0uaD4KIAotI2lm
IEVOQUJMRShKSVQpCi0KIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgRE9NSklUIHsKIAogY2xh
c3MgSGVhcFJhbmdlIHsKQEAgLTQ3LDcgKzQ1LDYgQEAgY2xhc3MgSGVhcFJhbmdlIHsKICAgICAg
ICAgQVNTRVJUX1dJVEhfTUVTU0FHRShiZWdpbiA8PSBlbmQsICJiZWdpbiA8PSBlbmQgaXMgdGhl
IGludmFyaWFudCBvZiB0aGlzIEhlYXBSYW5nZS4iKTsKICAgICB9CiAKLXByaXZhdGU6CiAgICAg
ZW51bSBDb25zdEV4cHJUYWcgeyBDb25zdEV4cHIgfTsKICAgICBjb25zdGV4cHIgSGVhcFJhbmdl
KENvbnN0RXhwclRhZywgdWludDE2X3QgYmVnaW4sIHVpbnQxNl90IGVuZCkKICAgICAgICAgOiBt
X2JlZ2luKGJlZ2luKQpAQCAtNTUsMjEgKzUyLDEzIEBAIGNsYXNzIEhlYXBSYW5nZSB7CiAgICAg
ewogICAgIH0KIAotICAgIHRlbXBsYXRlPHVpbnQxNl90IGJlZ2luLCB1aW50MTZfdCBlbmQ+Ci0g
ICAgc3RhdGljIGNvbnN0ZXhwciBIZWFwUmFuZ2UgZnJvbUNvbnN0YW50KCkKLSAgICB7Ci0gICAg
ICAgIHN0YXRpY19hc3NlcnQoYmVnaW4gPD0gZW5kLCAiYmVnaW4gPD0gZW5kIGlzIHRoZSBpbnZh
cmlhbnQgb2YgdGhpcyBIZWFwUmFuZ2UuIik7Ci0gICAgICAgIHJldHVybiBIZWFwUmFuZ2UoQ29u
c3RFeHByLCBiZWdpbiwgZW5kKTsKLSAgICB9Ci0KLXB1YmxpYzoKICAgICBlbnVtIFJhd1JlcHJl
c2VudGF0aW9uVGFnIHsgUmF3UmVwcmVzZW50YXRpb24gfTsKICAgICBleHBsaWNpdCBjb25zdGV4
cHIgSGVhcFJhbmdlKFJhd1JlcHJlc2VudGF0aW9uVGFnLCB1aW50MzJfdCB2YWx1ZSkKICAgICAg
ICAgOiBtX3Jhdyh2YWx1ZSkKICAgICB7CiAgICAgfQogCi0gICAgc3RhdGljIEhlYXBSYW5nZSBm
cm9tUmF3KHVpbnQzMl90IHZhbHVlKQorICAgIGNvbnN0ZXhwciBzdGF0aWMgSGVhcFJhbmdlIGZy
b21SYXcodWludDMyX3QgdmFsdWUpCiAgICAgewogICAgICAgICByZXR1cm4gSGVhcFJhbmdlKFJh
d1JlcHJlc2VudGF0aW9uLCB2YWx1ZSk7CiAgICAgfQpAQCAtNzgsMTYgKzY3LDI4IEBAIGNsYXNz
IEhlYXBSYW5nZSB7CiAgICAgdWludDE2X3QgZW5kKCkgY29uc3QgeyByZXR1cm4gbV9lbmQ7IH0K
ICAgICB1aW50MzJfdCByYXdSZXByZXNlbnRhdGlvbigpIHsgcmV0dXJuIG1fcmF3OyB9CiAKLSAg
ICBleHBsaWNpdCBvcGVyYXRvciBib29sKCkgY29uc3QKKyAgICBjb25zdGV4cHIgZXhwbGljaXQg
b3BlcmF0b3IgYm9vbCgpIGNvbnN0CiAgICAgewogICAgICAgICByZXR1cm4gbV9iZWdpbiAhPSBt
X2VuZDsKICAgICB9CiAKLSAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgSGVhcFJhbmdlJiBvdGhl
cikgY29uc3QKKyAgICBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEhlYXBSYW5nZSYg
b3RoZXIpIGNvbnN0CiAgICAgewogICAgICAgICByZXR1cm4gbV9iZWdpbiA9PSBvdGhlci5tX2Jl
Z2luICYmIG1fZW5kID09IG90aGVyLm1fZW5kOwogICAgIH0KIAorICAgIGNvbnN0ZXhwciBib29s
IG9wZXJhdG9yIT0oY29uc3QgSGVhcFJhbmdlJiBvdGhlcikgY29uc3QKKyAgICB7CisgICAgICAg
IHJldHVybiAhb3BlcmF0b3I9PShvdGhlcik7CisgICAgfQorCisgICAgdGVtcGxhdGU8dWludDE2
X3QgYmVnaW4sIHVpbnQxNl90IGVuZD4KKyAgICBzdGF0aWMgY29uc3RleHByIEhlYXBSYW5nZSBm
cm9tQ29uc3RhbnQoKQorICAgIHsKKyAgICAgICAgc3RhdGljX2Fzc2VydChiZWdpbiA8IGVuZCB8
fCAoYmVnaW4gPT0gVUlOVDE2X01BWCAmJiBlbmQgPT0gVUlOVDE2X01BWCksICJiZWdpbiA8IGVu
ZCBvciB0aGUgYm90aCBhcmUgVUlOVDE2X01BWCBpcyB0aGUgaW52YXJpYW50IG9mIHRoaXMgSGVh
cFJhbmdlLiIpOworICAgICAgICByZXR1cm4gSGVhcFJhbmdlKENvbnN0RXhwciwgYmVnaW4sIGVu
ZCk7CisgICAgfQorCiAgICAgc3RhdGljIGNvbnN0ZXhwciBIZWFwUmFuZ2UgdG9wKCkgeyByZXR1
cm4gZnJvbUNvbnN0YW50PDAsIFVJTlQxNl9NQVg+KCk7IH0KICAgICBzdGF0aWMgY29uc3RleHBy
IEhlYXBSYW5nZSBub25lKCkgeyByZXR1cm4gZnJvbUNvbnN0YW50PFVJTlQxNl9NQVgsIFVJTlQx
Nl9NQVg+KCk7IH0gLy8gRW1wdHkgcmFuZ2UuCiAKQEAgLTEyNyw1ICsxMjgsMyBAQCBjbGFzcyBI
ZWFwUmFuZ2UgewogfTsKIAogfSB9Ci0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RvbWppdC9ET01KSVRTaWduYXR1cmUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kb21qaXQvRE9NSklUU2lnbmF0dXJlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjUzNDI3ODdjZTkwOTU1YWFk
ZmRkNmNjOWFlMWIzZjlhZjI2NWIxNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kb21qaXQvRE9NSklUU2lnbmF0dXJlLmgKQEAgLTAsMCArMSw3MiBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisj
aW5jbHVkZSAiQ2xhc3NJbmZvLmgiCisjaW5jbHVkZSAiRE9NSklURWZmZWN0LmgiCisjaW5jbHVk
ZSAiU3BlY3VsYXRlZFR5cGUuaCIKKworbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBET01KSVQg
eworCisvLyBGSVhNRTogQ3VycmVudGx5LCB3ZSBvbmx5IHN1cHBvcnQgZnVuY3Rpb25zIHdoaWNo
IGFyZ3VtZW50cyBhcmUgdXAgdG8gMi4KKy8vIEV2ZW50dWFsbHksIHdlIHNob3VsZCBleHRlbmQg
dGhpcy4gQnV0IHBvc3NpYmx5LCAyIG9yIDMgY2FuIGNvdmVyIHR5cGljYWwgdXNlIGNhc2VzLgor
Ly8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NDM0NgorI2RlZmlu
ZSBKU0NfRE9NSklUX1NJR05BVFVSRV9NQVhfQVJHVU1FTlRTIDIKKyNkZWZpbmUgSlNDX0RPTUpJ
VF9TSUdOQVRVUkVfTUFYX0FSR1VNRU5UU19JTkNMVURJTkdfVEhJUyAoMSArIEpTQ19ET01KSVRf
U0lHTkFUVVJFX01BWF9BUkdVTUVOVFMpCisKK2NsYXNzIFBhdGNocG9pbnQ7CisKK3R5cGVkZWYg
UmVmPFBhdGNocG9pbnQ+IENoZWNrRE9NR2VuZXJhdG9yRnVuY3Rpb24odm9pZCk7CisKK2NsYXNz
IFNpZ25hdHVyZSB7CitwdWJsaWM6CisgICAgdGVtcGxhdGU8dHlwZW5hbWUuLi4gQXJndW1lbnRz
PgorICAgIGNvbnN0ZXhwciBTaWduYXR1cmUodWludHB0cl90IHVuc2FmZUZ1bmN0aW9uLCBDaGVj
a0RPTUdlbmVyYXRvckZ1bmN0aW9uKiBjaGVja0RPTUdlbmVyYXRvckZ1bmN0aW9uLCBjb25zdCBD
bGFzc0luZm8qIGNsYXNzSW5mbywgRWZmZWN0IGVmZmVjdCwgU3BlY3VsYXRlZFR5cGUgcmVzdWx0
LCBBcmd1bWVudHMuLi4gYXJndW1lbnRzKQorICAgICAgICA6IHVuc2FmZUZ1bmN0aW9uKHVuc2Fm
ZUZ1bmN0aW9uKQorICAgICAgICAsIGNoZWNrRE9NR2VuZXJhdG9yRnVuY3Rpb24oY2hlY2tET01H
ZW5lcmF0b3JGdW5jdGlvbikKKyAgICAgICAgLCBjbGFzc0luZm8oY2xhc3NJbmZvKQorICAgICAg
ICAsIGVmZmVjdChlZmZlY3QpCisgICAgICAgICwgcmVzdWx0KHJlc3VsdCkKKyAgICAgICAgLCBh
cmd1bWVudHMge3N0YXRpY19jYXN0PFNwZWN1bGF0ZWRUeXBlPihhcmd1bWVudHMpLi4ufQorICAg
ICAgICAsIGFyZ3VtZW50Q291bnQoc2l6ZW9mLi4uKEFyZ3VtZW50cykpCisgICAgeworICAgIH0K
KworICAgIFJlZjxQYXRjaHBvaW50PiBjaGVja0RPTSgpIGNvbnN0CisgICAgeworICAgICAgICBy
ZXR1cm4gY2hlY2tET01HZW5lcmF0b3JGdW5jdGlvbigpOworICAgIH0KKworICAgIHVpbnRwdHJf
dCB1bnNhZmVGdW5jdGlvbjsKKyAgICBDaGVja0RPTUdlbmVyYXRvckZ1bmN0aW9uKiBjaGVja0RP
TUdlbmVyYXRvckZ1bmN0aW9uOworICAgIGNvbnN0IENsYXNzSW5mbyogY29uc3QgY2xhc3NJbmZv
OworICAgIGNvbnN0IEVmZmVjdCBlZmZlY3Q7CisgICAgY29uc3QgU3BlY3VsYXRlZFR5cGUgcmVz
dWx0OworICAgIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIGFyZ3VtZW50c1tKU0NfRE9NSklUX1NJR05B
VFVSRV9NQVhfQVJHVU1FTlRTXTsKKyAgICBjb25zdCB1bnNpZ25lZCBhcmd1bWVudENvdW50Owor
fTsKKworfSB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFi
aWxpdGllcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5j
cHAKaW5kZXggNTRmNGU3MmU2NDE5YmZlMjU1NjUzZTM2NWZiYWM4MjAzMmZmZGU5Ny4uM2JhMTVl
NmUyODQ0ZDMwNDAzZThkZDRlMDE2YzI0YjBjMDQ2ZGZjMSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcApAQCAtMjczLDYgKzI3Myw3IEBAIGlubGlu
ZSBDYXBhYmlsaXR5TGV2ZWwgY2FuQ29tcGlsZShOb2RlKiBub2RlKQogICAgIGNhc2UgRGVmaW5l
QWNjZXNzb3JQcm9wZXJ0eToKICAgICBjYXNlIFRvTG93ZXJDYXNlOgogICAgIGNhc2UgQ2hlY2tE
T006CisgICAgY2FzZSBDYWxsRE9NOgogICAgIGNhc2UgQ2FsbERPTUdldHRlcjoKICAgICAgICAg
Ly8gVGhlc2UgYXJlIE9LLgogICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAppbmRleCBhZDE2MTU3MjAyN2M0MWYzMDA2ODNkYzEy
MjQyZjliOTVkNDU5MGMyLi43OWQ5N2JiNjAzODFmMzQxMjllYmViMDJjZWQ4ZTU4NGQyNDE4YTJl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCkBA
IC0xMDYwLDYgKzEwNjAsOSBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogICAgICAgICBjYXNlIENo
ZWNrRE9NOgogICAgICAgICAgICAgY29tcGlsZUNoZWNrRE9NKCk7CiAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgY2FzZSBDYWxsRE9NOgorICAgICAgICAgICAgY29tcGlsZUNhbGxET00oKTsK
KyAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIENhbGxET01HZXR0ZXI6CiAgICAgICAg
ICAgICBjb21waWxlQ2FsbERPTUdldHRlcigpOwogICAgICAgICAgICAgYnJlYWs7CkBAIC05MTAw
LDYgKzkxMDMsNTcgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKICAgICAgICAgcGF0Y2hwb2ludC0+
ZWZmZWN0cyA9IEVmZmVjdHM6OmZvckNoZWNrKCk7CiAgICAgfQogCisgICAgdm9pZCBjb21waWxl
Q2FsbERPTSgpCisgICAgeworICAgICAgICBjb25zdCBET01KSVQ6OlNpZ25hdHVyZSogc2lnbmF0
dXJlID0gbV9ub2RlLT5zaWduYXR1cmUoKTsKKworICAgICAgICAvLyBGSVhNRTogV2Ugc2hvdWxk
IGhhdmUgYSB3YXkgdG8gY2FsbCBmdW5jdGlvbnMgd2l0aCB0aGUgdmVjdG9yIG9mIHJlZ2lzdGVy
cy4KKyAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2
MzA5OQorICAgICAgICBWZWN0b3I8TFZhbHVlLCBKU0NfRE9NSklUX1NJR05BVFVSRV9NQVhfQVJH
VU1FTlRTX0lOQ0xVRElOR19USElTPiBvcGVyYW5kczsKKworICAgICAgICB1bnNpZ25lZCBpbmRl
eCA9IDA7CisgICAgICAgIERGR19OT0RFX0RPX1RPX0NISUxEUkVOKG1fZ3JhcGgsIG1fbm9kZSwg
WyZdKE5vZGUqLCBFZGdlIGVkZ2UpIHsKKyAgICAgICAgICAgIGlmICghaW5kZXgpCisgICAgICAg
ICAgICAgICAgb3BlcmFuZHMuYXBwZW5kKGxvd0NlbGwoZWRnZSkpOworICAgICAgICAgICAgZWxz
ZSB7CisgICAgICAgICAgICAgICAgc3dpdGNoIChzaWduYXR1cmUtPmFyZ3VtZW50c1tpbmRleCAt
IDFdKSB7CisgICAgICAgICAgICAgICAgY2FzZSBTcGVjU3RyaW5nOgorICAgICAgICAgICAgICAg
ICAgICBvcGVyYW5kcy5hcHBlbmQobG93U3RyaW5nKGVkZ2UpKTsKKyAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSBTcGVjSW50MzJPbmx5OgorICAgICAgICAg
ICAgICAgICAgICBvcGVyYW5kcy5hcHBlbmQobG93SW50MzIoZWRnZSkpOworICAgICAgICAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIFNwZWNCb29sZWFuOgorICAgICAg
ICAgICAgICAgICAgICBvcGVyYW5kcy5hcHBlbmQobG93Qm9vbGVhbihlZGdlKSk7CisgICAgICAg
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAg
ICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAg
ICsraW5kZXg7CisgICAgICAgIH0pOworCisgICAgICAgIHVuc2lnbmVkIGFyZ3VtZW50Q291bnRJ
bmNsdWRpbmdUaGlzID0gc2lnbmF0dXJlLT5hcmd1bWVudENvdW50ICsgMTsKKyAgICAgICAgTFZh
bHVlIHJlc3VsdDsKKyAgICAgICAgc3dpdGNoIChhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcykg
eworICAgICAgICBjYXNlIDE6CisgICAgICAgICAgICByZXN1bHQgPSB2bUNhbGwoSW50NjQsIG1f
b3V0Lm9wZXJhdGlvbihyZWludGVycHJldF9jYXN0PEpfSklUT3BlcmF0aW9uX0VQPihzaWduYXR1
cmUtPnVuc2FmZUZ1bmN0aW9uKSksIG1fY2FsbEZyYW1lLCBvcGVyYW5kc1swXSk7CisgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgY2FzZSAyOgorICAgICAgICAgICAgcmVzdWx0ID0gdm1DYWxs
KEludDY0LCBtX291dC5vcGVyYXRpb24ocmVpbnRlcnByZXRfY2FzdDxKX0pJVE9wZXJhdGlvbl9F
UFA+KHNpZ25hdHVyZS0+dW5zYWZlRnVuY3Rpb24pKSwgbV9jYWxsRnJhbWUsIG9wZXJhbmRzWzBd
LCBvcGVyYW5kc1sxXSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSAzOgorICAg
ICAgICAgICAgcmVzdWx0ID0gdm1DYWxsKEludDY0LCBtX291dC5vcGVyYXRpb24ocmVpbnRlcnBy
ZXRfY2FzdDxKX0pJVE9wZXJhdGlvbl9FUFBQPihzaWduYXR1cmUtPnVuc2FmZUZ1bmN0aW9uKSks
IG1fY2FsbEZyYW1lLCBvcGVyYW5kc1swXSwgb3BlcmFuZHNbMV0sIG9wZXJhbmRzWzJdKTsKKyAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgUkVMRUFTRV9B
U1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAg
ICAgICAgc2V0SlNWYWx1ZShyZXN1bHQpOworICAgIH0KKwogICAgIHZvaWQgY29tcGlsZUNhbGxE
T01HZXR0ZXIoKQogICAgIHsKICAgICAgICAgRE9NSklUOjpDYWxsRE9NR2V0dGVyUGF0Y2hwb2lu
dCogZG9tSklUID0gbV9ub2RlLT5jYWxsRE9NR2V0dGVyRGF0YSgpLT5wYXRjaHBvaW50OwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaAppbmRleCA4ZjZjNjk3MWE2YmVl
OWYxZmI2ZmMzNjhkZTVhMmNiODQ3NjQ0YTY4Li4yMGI3MWY0NTJjZTQ0YjVjYzU2Y2M3MWMyZDc2
YjE3YjU4OGZlNjY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9w
ZXJhdGlvbnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMu
aApAQCAtMTU4LDYgKzE1OCw3IEBAIHR5cGVkZWYgRW5jb2RlZEpTVmFsdWUgKEpJVF9PUEVSQVRJ
T04gKkpfSklUT3BlcmF0aW9uX0VKUCkoRXhlY1N0YXRlKiwgRW5jb2RlZEpTCiB0eXBlZGVmIEVu
Y29kZWRKU1ZhbHVlIChKSVRfT1BFUkFUSU9OICpKX0pJVE9wZXJhdGlvbl9FR1ApKEV4ZWNTdGF0
ZSosIEpTR2xvYmFsT2JqZWN0Kiwgdm9pZCopOwogdHlwZWRlZiBFbmNvZGVkSlNWYWx1ZSAoSklU
X09QRVJBVElPTiAqSl9KSVRPcGVyYXRpb25fRVApKEV4ZWNTdGF0ZSosIHZvaWQqKTsKIHR5cGVk
ZWYgRW5jb2RlZEpTVmFsdWUgKEpJVF9PUEVSQVRJT04gKkpfSklUT3BlcmF0aW9uX0VQUCkoRXhl
Y1N0YXRlKiwgdm9pZCosIHZvaWQqKTsKK3R5cGVkZWYgRW5jb2RlZEpTVmFsdWUgKEpJVF9PUEVS
QVRJT04gKkpfSklUT3BlcmF0aW9uX0VQUFApKEV4ZWNTdGF0ZSosIHZvaWQqLCB2b2lkKiwgdm9p
ZCopOwogdHlwZWRlZiBFbmNvZGVkSlNWYWx1ZSAoSklUX09QRVJBVElPTiAqSl9KSVRPcGVyYXRp
b25fRVBTKShFeGVjU3RhdGUqLCB2b2lkKiwgc2l6ZV90KTsKIHR5cGVkZWYgRW5jb2RlZEpTVmFs
dWUgKEpJVF9PUEVSQVRJT04gKkpfSklUT3BlcmF0aW9uX0VQYykoRXhlY1N0YXRlKiwgSW5zdHJ1
Y3Rpb24qKTsKIHR5cGVkZWYgRW5jb2RlZEpTVmFsdWUgKEpJVF9PUEVSQVRJT04gKkpfSklUT3Bl
cmF0aW9uX0VKc2NDKShFeGVjU3RhdGUqLCBKU1Njb3BlKiwgSlNDZWxsKik7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFRodW5rcy5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVFRodW5rcy5jcHAKaW5kZXggYmYwYTdmOTA5MTlhNWI2ZDBiZWVkOTI4
YWJkYWY3MTBjOWRjOWQwYi4uNDBjMTJjZWM5NGUwMWEwODQwNGY3YjZkOTY3MjFmMTA1MWY0ODMx
OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRUaHVua3MuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUVGh1bmtzLmNwcApAQCAtOTAsMTAgKzkw
LDEwIEBAIHZvaWQgSklUVGh1bmtzOjpmaW5hbGl6ZShIYW5kbGU8VW5rbm93bj4gaGFuZGxlLCB2
b2lkKikKIAogTmF0aXZlRXhlY3V0YWJsZSogSklUVGh1bmtzOjpob3N0RnVuY3Rpb25TdHViKFZN
KiB2bSwgTmF0aXZlRnVuY3Rpb24gZnVuY3Rpb24sIE5hdGl2ZUZ1bmN0aW9uIGNvbnN0cnVjdG9y
LCBjb25zdCBTdHJpbmcmIG5hbWUpCiB7Ci0gICAgcmV0dXJuIGhvc3RGdW5jdGlvblN0dWIodm0s
IGZ1bmN0aW9uLCBjb25zdHJ1Y3RvciwgbnVsbHB0ciwgTm9JbnRyaW5zaWMsIG5hbWUpOworICAg
IHJldHVybiBob3N0RnVuY3Rpb25TdHViKHZtLCBmdW5jdGlvbiwgY29uc3RydWN0b3IsIG51bGxw
dHIsIE5vSW50cmluc2ljLCBudWxscHRyLCBuYW1lKTsKIH0KIAotTmF0aXZlRXhlY3V0YWJsZSog
SklUVGh1bmtzOjpob3N0RnVuY3Rpb25TdHViKFZNKiB2bSwgTmF0aXZlRnVuY3Rpb24gZnVuY3Rp
b24sIE5hdGl2ZUZ1bmN0aW9uIGNvbnN0cnVjdG9yLCBUaHVua0dlbmVyYXRvciBnZW5lcmF0b3Is
IEludHJpbnNpYyBpbnRyaW5zaWMsIGNvbnN0IFN0cmluZyYgbmFtZSkKK05hdGl2ZUV4ZWN1dGFi
bGUqIEpJVFRodW5rczo6aG9zdEZ1bmN0aW9uU3R1YihWTSogdm0sIE5hdGl2ZUZ1bmN0aW9uIGZ1
bmN0aW9uLCBOYXRpdmVGdW5jdGlvbiBjb25zdHJ1Y3RvciwgVGh1bmtHZW5lcmF0b3IgZ2VuZXJh
dG9yLCBJbnRyaW5zaWMgaW50cmluc2ljLCBjb25zdCBET01KSVQ6OlNpZ25hdHVyZSogc2lnbmF0
dXJlLCBjb25zdCBTdHJpbmcmIG5hbWUpCiB7CiAgICAgQVNTRVJUKCFpc0NvbXBpbGF0aW9uVGhy
ZWFkKCkpOyAgICAKICAgICBBU1NFUlQodm0tPmNhblVzZUpJVCgpKTsKQEAgLTExMCwxNCArMTEw
LDE0IEBAIE5hdGl2ZUV4ZWN1dGFibGUqIEpJVFRodW5rczo6aG9zdEZ1bmN0aW9uU3R1YihWTSog
dm0sIE5hdGl2ZUZ1bmN0aW9uIGZ1bmN0aW9uLCBOCiAgICAgCiAgICAgUmVmUHRyPEpJVENvZGU+
IGZvckNvbnN0cnVjdCA9IGFkb3B0UmVmKG5ldyBOYXRpdmVKSVRDb2RlKE1hY3JvQXNzZW1ibGVy
Q29kZVJlZjo6Y3JlYXRlU2VsZk1hbmFnZWRDb2RlUmVmKGN0aU5hdGl2ZUNvbnN0cnVjdCh2bSkp
LCBKSVRDb2RlOjpIb3N0Q2FsbFRodW5rKSk7CiAgICAgCi0gICAgTmF0aXZlRXhlY3V0YWJsZSog
bmF0aXZlRXhlY3V0YWJsZSA9IE5hdGl2ZUV4ZWN1dGFibGU6OmNyZWF0ZSgqdm0sIGZvckNhbGws
IGZ1bmN0aW9uLCBmb3JDb25zdHJ1Y3QsIGNvbnN0cnVjdG9yLCBpbnRyaW5zaWMsIG5hbWUpOwor
ICAgIE5hdGl2ZUV4ZWN1dGFibGUqIG5hdGl2ZUV4ZWN1dGFibGUgPSBOYXRpdmVFeGVjdXRhYmxl
OjpjcmVhdGUoKnZtLCBmb3JDYWxsLCBmdW5jdGlvbiwgZm9yQ29uc3RydWN0LCBjb25zdHJ1Y3Rv
ciwgaW50cmluc2ljLCBzaWduYXR1cmUsIG5hbWUpOwogICAgIHdlYWtBZGQoKm1faG9zdEZ1bmN0
aW9uU3R1Yk1hcCwgc3RkOjptYWtlX3R1cGxlKGZ1bmN0aW9uLCBjb25zdHJ1Y3RvciwgbmFtZSks
IFdlYWs8TmF0aXZlRXhlY3V0YWJsZT4obmF0aXZlRXhlY3V0YWJsZSwgdGhpcykpOwogICAgIHJl
dHVybiBuYXRpdmVFeGVjdXRhYmxlOwogfQogCiBOYXRpdmVFeGVjdXRhYmxlKiBKSVRUaHVua3M6
Omhvc3RGdW5jdGlvblN0dWIoVk0qIHZtLCBOYXRpdmVGdW5jdGlvbiBmdW5jdGlvbiwgVGh1bmtH
ZW5lcmF0b3IgZ2VuZXJhdG9yLCBJbnRyaW5zaWMgaW50cmluc2ljLCBjb25zdCBTdHJpbmcmIG5h
bWUpCiB7Ci0gICAgcmV0dXJuIGhvc3RGdW5jdGlvblN0dWIodm0sIGZ1bmN0aW9uLCBjYWxsSG9z
dEZ1bmN0aW9uQXNDb25zdHJ1Y3RvciwgZ2VuZXJhdG9yLCBpbnRyaW5zaWMsIG5hbWUpOworICAg
IHJldHVybiBob3N0RnVuY3Rpb25TdHViKHZtLCBmdW5jdGlvbiwgY2FsbEhvc3RGdW5jdGlvbkFz
Q29uc3RydWN0b3IsIGdlbmVyYXRvciwgaW50cmluc2ljLCBudWxscHRyLCBuYW1lKTsKIH0KIAog
dm9pZCBKSVRUaHVua3M6OmNsZWFySG9zdEZ1bmN0aW9uU3R1YnMoKQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRUaHVua3MuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUVGh1bmtzLmgKaW5kZXggM2Y4ZmU4MDNmOTg3MTBmNjkyMzUyN2JjOGY2NTUwZjRl
ZGQxYzdhZS4uYWRkY2YyMzBjMzQ1ZDQyNzFiNjM3ZjA4Yjk0YzQxNmEzZWQxODJhNCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRUaHVua3MuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVFRodW5rcy5oCkBAIC0zOSw2ICszOSw5IEBACiAjaW5jbHVk
ZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgogCiBuYW1lc3BhY2UgSlNDIHsKK25hbWVzcGFjZSBE
T01KSVQgeworY2xhc3MgU2lnbmF0dXJlOworfQogCiBjbGFzcyBWTTsKIGNsYXNzIE5hdGl2ZUV4
ZWN1dGFibGU7CkBAIC01Nyw3ICs2MCw3IEBAIGNsYXNzIEpJVFRodW5rcyBmaW5hbCA6IHByaXZh
dGUgV2Vha0hhbmRsZU93bmVyIHsKICAgICBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgY3RpU3R1YihW
TSosIFRodW5rR2VuZXJhdG9yKTsKIAogICAgIE5hdGl2ZUV4ZWN1dGFibGUqIGhvc3RGdW5jdGlv
blN0dWIoVk0qLCBOYXRpdmVGdW5jdGlvbiwgTmF0aXZlRnVuY3Rpb24gY29uc3RydWN0b3IsIGNv
bnN0IFN0cmluZyYgbmFtZSk7Ci0gICAgTmF0aXZlRXhlY3V0YWJsZSogaG9zdEZ1bmN0aW9uU3R1
YihWTSosIE5hdGl2ZUZ1bmN0aW9uLCBOYXRpdmVGdW5jdGlvbiBjb25zdHJ1Y3RvciwgVGh1bmtH
ZW5lcmF0b3IsIEludHJpbnNpYywgY29uc3QgU3RyaW5nJiBuYW1lKTsKKyAgICBOYXRpdmVFeGVj
dXRhYmxlKiBob3N0RnVuY3Rpb25TdHViKFZNKiwgTmF0aXZlRnVuY3Rpb24sIE5hdGl2ZUZ1bmN0
aW9uIGNvbnN0cnVjdG9yLCBUaHVua0dlbmVyYXRvciwgSW50cmluc2ljLCBjb25zdCBET01KSVQ6
OlNpZ25hdHVyZSosIGNvbnN0IFN0cmluZyYgbmFtZSk7CiAgICAgTmF0aXZlRXhlY3V0YWJsZSog
aG9zdEZ1bmN0aW9uU3R1YihWTSosIE5hdGl2ZUZ1bmN0aW9uLCBUaHVua0dlbmVyYXRvciwgSW50
cmluc2ljLCBjb25zdCBTdHJpbmcmIG5hbWUpOwogCiAgICAgdm9pZCBjbGVhckhvc3RGdW5jdGlv
blN0dWJzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Jv
dW5kRnVuY3Rpb24uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCb3VuZEZ1
bmN0aW9uLmNwcAppbmRleCAyNmY5OWQ2NTNhYTE0NGIyNDA0ZGQ3OTU5NDMyOTNkZTk2YjczNGM1
Li5jNGNlNDNlN2Q1NjBiODczNjNjNDhkOTUwYTA5YWQ3OWQwNTI0OTdhIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0JvdW5kRnVuY3Rpb24uY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQm91bmRGdW5jdGlvbi5jcHAKQEAgLTE2OCw3
ICsxNjgsNyBAQCBKU0JvdW5kRnVuY3Rpb24qIEpTQm91bmRGdW5jdGlvbjo6Y3JlYXRlKFZNJiB2
bSwgRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdAogICAgIE5hdGl2ZUV4ZWN1dGFibGUq
IGV4ZWN1dGFibGUgPSB2bS5nZXRIb3N0RnVuY3Rpb24oCiAgICAgICAgIHNsb3dDYXNlID8gYm91
bmRGdW5jdGlvbkNhbGwgOiBib3VuZFRoaXNOb0FyZ3NGdW5jdGlvbkNhbGwsCiAgICAgICAgIHNs
b3dDYXNlID8gTm9JbnRyaW5zaWMgOiBCb3VuZFRoaXNOb0FyZ3NGdW5jdGlvbkNhbGxJbnRyaW5z
aWMsCi0gICAgICAgIGNhbkNvbnN0cnVjdCA/IChzbG93Q2FzZSA/IGJvdW5kRnVuY3Rpb25Db25z
dHJ1Y3QgOiBib3VuZFRoaXNOb0FyZ3NGdW5jdGlvbkNvbnN0cnVjdCkgOiBjYWxsSG9zdEZ1bmN0
aW9uQXNDb25zdHJ1Y3RvciwKKyAgICAgICAgY2FuQ29uc3RydWN0ID8gKHNsb3dDYXNlID8gYm91
bmRGdW5jdGlvbkNvbnN0cnVjdCA6IGJvdW5kVGhpc05vQXJnc0Z1bmN0aW9uQ29uc3RydWN0KSA6
IGNhbGxIb3N0RnVuY3Rpb25Bc0NvbnN0cnVjdG9yLCBudWxscHRyLAogICAgICAgICBuYW1lKTsK
ICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGdldEJvdW5kRnVuY3Rpb25TdHJ1Y3R1cmUodm0s
IGV4ZWMsIGdsb2JhbE9iamVjdCwgdGFyZ2V0RnVuY3Rpb24pOwogICAgIFJFVFVSTl9JRl9FWENF
UFRJT04oc2NvcGUsIG51bGxwdHIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNDZWxsLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwu
aAppbmRleCBjNDBmM2UyMTk4NDFmYjQ2ODk2MzUyODRiMDQyMjQ3YWZkNTIzYzM2Li40ZWZiZjkw
Nzc4Y2M1NzFiYmRiODI4NzFhNTFmYTQ0Zjg1NmFlOThiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0NlbGwuaApAQCAtNTYsMTcgKzU2LDE3IEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQ+
IHZvaWQqIGFsbG9jYXRlQ2VsbChIZWFwJiwgc2l6ZV90KTsKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+
IHZvaWQqIGFsbG9jYXRlQ2VsbChIZWFwJiwgR0NEZWZlcnJhbENvbnRleHQqKTsKIHRlbXBsYXRl
PHR5cGVuYW1lIFQ+IHZvaWQqIGFsbG9jYXRlQ2VsbChIZWFwJiwgR0NEZWZlcnJhbENvbnRleHQq
LCBzaXplX3QpOwogCi0jZGVmaW5lIERFQ0xBUkVfRVhQT1JUX0lORk8gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgcHJvdGVjdGVkOiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAg
IHN0YXRpYyBKU19FWFBPUlREQVRBIGNvbnN0IDo6SlNDOjpDbGFzc0luZm8gc19pbmZvOyAgICAg
ICAgICAgICBcCi0gICAgcHVibGljOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIHN0YXRpYyBjb25zdCA6OkpTQzo6
Q2xhc3NJbmZvKiBpbmZvKCkgeyByZXR1cm4gJnNfaW5mbzsgfQotCi0jZGVmaW5lIERFQ0xBUkVf
SU5GTyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc
Ci0gICAgcHJvdGVjdGVkOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBcCi0gICAgICAgIHN0YXRpYyBjb25zdCA6OkpTQzo6Q2xhc3NJbmZv
IHNfaW5mbzsgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgcHVibGljOiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0g
ICAgICAgIHN0YXRpYyBjb25zdCA6OkpTQzo6Q2xhc3NJbmZvKiBpbmZvKCkgeyByZXR1cm4gJnNf
aW5mbzsgfQorI2RlZmluZSBERUNMQVJFX0VYUE9SVF9JTkZPICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgcHJvdGVjdGVkOiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAg
ICAgICAgc3RhdGljIEpTX0VYUE9SVERBVEEgY29uc3QgOjpKU0M6OkNsYXNzSW5mbyBzX2luZm87
ICAgICAgICAgICAgICAgICAgXAorICAgIHB1YmxpYzogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIHN0YXRp
YyBjb25zdGV4cHIgY29uc3QgOjpKU0M6OkNsYXNzSW5mbyogaW5mbygpIHsgcmV0dXJuICZzX2lu
Zm87IH0KKworI2RlZmluZSBERUNMQVJFX0lORk8gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgcHJvdGVjdGVkOiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAg
ICAgICAgc3RhdGljIGNvbnN0IDo6SlNDOjpDbGFzc0luZm8gc19pbmZvOyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgXAorICAgIHB1YmxpYzogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIHN0YXRp
YyBjb25zdGV4cHIgY29uc3QgOjpKU0M6OkNsYXNzSW5mbyogaW5mbygpIHsgcmV0dXJuICZzX2lu
Zm87IH0KIAogY2xhc3MgSlNDZWxsIDogcHVibGljIEhlYXBDZWxsIHsKICAgICBmcmllbmQgY2xh
c3MgSlNWYWx1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
RnVuY3Rpb24uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5j
cHAKaW5kZXggODU4NGJjMjk3YWY3MjNmNTgyOTgxNTZlMmUyYjBhODhhZTcxOGZiNC4uYTMxODQy
YjY1OTA5M2VlZDQ4MzJmMGMyMjU0N2ZmYjQ0OWM0NGNkOSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAKQEAgLTg0LDkgKzg0LDkgQEAgSlNGdW5jdGlv
biogSlNGdW5jdGlvbjo6Y3JlYXRlKFZNJiB2bSwgV2ViQXNzZW1ibHlFeGVjdXRhYmxlKiBleGVj
dXRhYmxlLCBKU1Njb3AKIH0KICNlbmRpZgogCi1KU0Z1bmN0aW9uKiBKU0Z1bmN0aW9uOjpjcmVh
dGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBpbnQgbGVuZ3RoLCBjb25z
dCBTdHJpbmcmIG5hbWUsIE5hdGl2ZUZ1bmN0aW9uIG5hdGl2ZUZ1bmN0aW9uLCBJbnRyaW5zaWMg
aW50cmluc2ljLCBOYXRpdmVGdW5jdGlvbiBuYXRpdmVDb25zdHJ1Y3RvcikKK0pTRnVuY3Rpb24q
IEpTRnVuY3Rpb246OmNyZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IGludCBsZW5ndGgsIGNvbnN0IFN0cmluZyYgbmFtZSwgTmF0aXZlRnVuY3Rpb24gbmF0aXZlRnVu
Y3Rpb24sIEludHJpbnNpYyBpbnRyaW5zaWMsIE5hdGl2ZUZ1bmN0aW9uIG5hdGl2ZUNvbnN0cnVj
dG9yLCBjb25zdCBET01KSVQ6OlNpZ25hdHVyZSogc2lnbmF0dXJlKQogewotICAgIE5hdGl2ZUV4
ZWN1dGFibGUqIGV4ZWN1dGFibGUgPSB2bS5nZXRIb3N0RnVuY3Rpb24obmF0aXZlRnVuY3Rpb24s
IGludHJpbnNpYywgbmF0aXZlQ29uc3RydWN0b3IsIG5hbWUpOworICAgIE5hdGl2ZUV4ZWN1dGFi
bGUqIGV4ZWN1dGFibGUgPSB2bS5nZXRIb3N0RnVuY3Rpb24obmF0aXZlRnVuY3Rpb24sIGludHJp
bnNpYywgbmF0aXZlQ29uc3RydWN0b3IsIHNpZ25hdHVyZSwgbmFtZSk7CiAgICAgSlNGdW5jdGlv
biogZnVuY3Rpb24gPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU0Z1bmN0aW9uPih2bS5o
ZWFwKSkgSlNGdW5jdGlvbih2bSwgZ2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QtPmZ1bmN0aW9u
U3RydWN0dXJlKCkpOwogICAgIC8vIENhbid0IGRvIHRoaXMgZHVyaW5nIGluaXRpYWxpemF0aW9u
IGJlY2F1c2UgZ2V0SG9zdEZ1bmN0aW9uIG1pZ2h0IGRvIGEgR0MgYWxsb2NhdGlvbi4KICAgICBm
dW5jdGlvbi0+ZmluaXNoQ3JlYXRpb24odm0sIGV4ZWN1dGFibGUsIGxlbmd0aCwgbmFtZSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmgKaW5kZXggOGRmMDNhMTRh
NjdkYWU5MzA0YzBkNTU0OTRmOTVhODc3Zjk3ODFlNi4uZjExYjEyZmIzYmQxNDU2MjVmODJiZjFm
YTg3MjUwNDQ0NzY1NzYyOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNGdW5jdGlvbi5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVu
Y3Rpb24uaApAQCAtNDYsNiArNDYsMTEgQEAgY2xhc3MgU3BlY3VsYXRpdmVKSVQ7CiBjbGFzcyBK
SVRDb21waWxlcjsKIH0KIAorbmFtZXNwYWNlIERPTUpJVCB7CitjbGFzcyBTaWduYXR1cmU7Cit9
CisKKwogSlNfRVhQT1JUX1BSSVZBVEUgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxs
SG9zdEZ1bmN0aW9uQXNDb25zdHJ1Y3RvcihFeGVjU3RhdGUqKTsKIAogSlNfRVhQT1JUX1BSSVZB
VEUgU3RyaW5nIGdldENhbGN1bGF0ZWREaXNwbGF5TmFtZShWTSYsIEpTT2JqZWN0Kik7CkBAIC02
Nyw3ICs3Miw3IEBAIGNsYXNzIEpTRnVuY3Rpb24gOiBwdWJsaWMgSlNDYWxsZWUgewogICAgICAg
ICByZXR1cm4gc2l6ZW9mKEpTRnVuY3Rpb24pOwogICAgIH0KIAotICAgIEpTX0VYUE9SVF9QUklW
QVRFIHN0YXRpYyBKU0Z1bmN0aW9uKiBjcmVhdGUoVk0mLCBKU0dsb2JhbE9iamVjdCosIGludCBs
ZW5ndGgsIGNvbnN0IFN0cmluZyYgbmFtZSwgTmF0aXZlRnVuY3Rpb24sIEludHJpbnNpYyA9IE5v
SW50cmluc2ljLCBOYXRpdmVGdW5jdGlvbiBuYXRpdmVDb25zdHJ1Y3RvciA9IGNhbGxIb3N0RnVu
Y3Rpb25Bc0NvbnN0cnVjdG9yKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgSlNGdW5j
dGlvbiogY3JlYXRlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBpbnQgbGVuZ3RoLCBjb25zdCBTdHJp
bmcmIG5hbWUsIE5hdGl2ZUZ1bmN0aW9uLCBJbnRyaW5zaWMgPSBOb0ludHJpbnNpYywgTmF0aXZl
RnVuY3Rpb24gbmF0aXZlQ29uc3RydWN0b3IgPSBjYWxsSG9zdEZ1bmN0aW9uQXNDb25zdHJ1Y3Rv
ciwgY29uc3QgRE9NSklUOjpTaWduYXR1cmUqID0gbnVsbHB0cik7CiAgICAgCiAgICAgc3RhdGlj
IEpTRnVuY3Rpb24qIGNyZWF0ZVdpdGhJbnZhbGlkYXRlZFJlYWxsb2NhdGlvbldhdGNocG9pbnQo
Vk0mLCBGdW5jdGlvbkV4ZWN1dGFibGUqLCBKU1Njb3BlKik7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTmF0aXZlU3RkRnVuY3Rpb24uY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNOYXRpdmVTdGRGdW5jdGlvbi5jcHAKaW5kZXggNmRk
ODQ5ZjJlYWZiZWJkZDcwN2VlNTczODAwODJkZTU0ODkzMjBhMS4uYzEyNjViMWYwNmE5MGEwNzQ0
MWQ3YWM1YzYwODgzMGExZWZhNGYwMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNOYXRpdmVTdGRGdW5jdGlvbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNOYXRpdmVTdGRGdW5jdGlvbi5jcHAKQEAgLTY2LDcgKzY2LDcgQEAgc3Rh
dGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcnVuU3RkRnVuY3Rpb24oRXhlY1N0YXRl
KiBzdGF0ZSkKIAogSlNOYXRpdmVTdGRGdW5jdGlvbiogSlNOYXRpdmVTdGRGdW5jdGlvbjo6Y3Jl
YXRlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgaW50IGxlbmd0aCwgY29u
c3QgU3RyaW5nJiBuYW1lLCBOYXRpdmVTdGRGdW5jdGlvbiYmIG5hdGl2ZVN0ZEZ1bmN0aW9uLCBJ
bnRyaW5zaWMgaW50cmluc2ljLCBOYXRpdmVGdW5jdGlvbiBuYXRpdmVDb25zdHJ1Y3RvcikKIHsK
LSAgICBOYXRpdmVFeGVjdXRhYmxlKiBleGVjdXRhYmxlID0gdm0uZ2V0SG9zdEZ1bmN0aW9uKHJ1
blN0ZEZ1bmN0aW9uLCBpbnRyaW5zaWMsIG5hdGl2ZUNvbnN0cnVjdG9yLCBuYW1lKTsKKyAgICBO
YXRpdmVFeGVjdXRhYmxlKiBleGVjdXRhYmxlID0gdm0uZ2V0SG9zdEZ1bmN0aW9uKHJ1blN0ZEZ1
bmN0aW9uLCBpbnRyaW5zaWMsIG5hdGl2ZUNvbnN0cnVjdG9yLCBudWxscHRyLCBuYW1lKTsKICAg
ICBOYXRpdmVTdGRGdW5jdGlvbkNlbGwqIGZ1bmN0aW9uQ2VsbCA9IE5hdGl2ZVN0ZEZ1bmN0aW9u
Q2VsbDo6Y3JlYXRlKHZtLCBXVEZNb3ZlKG5hdGl2ZVN0ZEZ1bmN0aW9uKSk7CiAgICAgU3RydWN0
dXJlKiBzdHJ1Y3R1cmUgPSBnbG9iYWxPYmplY3QtPm5hdGl2ZVN0ZEZ1bmN0aW9uU3RydWN0dXJl
KCk7CiAgICAgSlNOYXRpdmVTdGRGdW5jdGlvbiogZnVuY3Rpb24gPSBuZXcgKE5vdE51bGwsIGFs
bG9jYXRlQ2VsbDxKU05hdGl2ZVN0ZEZ1bmN0aW9uPih2bS5oZWFwKSkgSlNOYXRpdmVTdGRGdW5j
dGlvbih2bSwgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNPYmplY3QuY3BwCmluZGV4IGY1M2RiNjE5ODZlYWRkYWEyM2EyNDVkZTU0YWUw
OWM1OGYwYWI3NjQuLjA4YWU3OTIwYTllZTUyYzI0ZDc1YWJlMWRhN2Y2NmU4MTFiMmFmMWMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAKQEAgLTI1NDksNiAr
MjU0OSwxNyBAQCBib29sIEpTT2JqZWN0OjpwdXREaXJlY3ROYXRpdmVGdW5jdGlvbihWTSYgdm0s
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbgogICAgIHJldHVybiBwdXREaXJlY3Qo
dm0sIHByb3BlcnR5TmFtZSwgZnVuY3Rpb24sIGF0dHJpYnV0ZXMpOwogfQogCitib29sIEpTT2Jq
ZWN0OjpwdXREaXJlY3ROYXRpdmVGdW5jdGlvbihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIGNvbnN0IFByb3BlcnR5TmFtZSYgcHJvcGVydHlOYW1lLCB1bnNpZ25lZCBmdW5j
dGlvbkxlbmd0aCwgTmF0aXZlRnVuY3Rpb24gbmF0aXZlRnVuY3Rpb24sIEludHJpbnNpYyBpbnRy
aW5zaWMsIGNvbnN0IERPTUpJVDo6U2lnbmF0dXJlKiBzaWduYXR1cmUsIHVuc2lnbmVkIGF0dHJp
YnV0ZXMpCit7CisgICAgU3RyaW5nSW1wbCogbmFtZSA9IHByb3BlcnR5TmFtZS5wdWJsaWNOYW1l
KCk7CisgICAgaWYgKCFuYW1lKQorICAgICAgICBuYW1lID0gdm0ucHJvcGVydHlOYW1lcy0+YW5v
bnltb3VzLmltcGwoKTsKKyAgICBBU1NFUlQobmFtZSk7CisKKyAgICBKU0Z1bmN0aW9uKiBmdW5j
dGlvbiA9IEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBmdW5jdGlvbkxlbmd0
aCwgbmFtZSwgbmF0aXZlRnVuY3Rpb24sIGludHJpbnNpYywgY2FsbEhvc3RGdW5jdGlvbkFzQ29u
c3RydWN0b3IsIHNpZ25hdHVyZSk7CisgICAgcmV0dXJuIHB1dERpcmVjdCh2bSwgcHJvcGVydHlO
YW1lLCBmdW5jdGlvbiwgYXR0cmlidXRlcyk7Cit9CisKIEpTRnVuY3Rpb24qIEpTT2JqZWN0Ojpw
dXREaXJlY3RCdWlsdGluRnVuY3Rpb24oVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBjb25zdCBQcm9wZXJ0eU5hbWUmIHByb3BlcnR5TmFtZSwgRnVuY3Rpb25FeGVjdXRhYmxl
KiBmdW5jdGlvbkV4ZWN1dGFibGUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpCiB7CiAgICAgU3RyaW5n
SW1wbCogbmFtZSA9IHByb3BlcnR5TmFtZS5wdWJsaWNOYW1lKCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNPYmplY3QuaAppbmRleCA2MjIwZWM3YTFiYThlOGE3NDlkYjRiMDZjZDQy
OTNhODg1YWY3ZjkyLi5lYmU0ODVlOGRmMzZkYjVjYWYzNzcwNGI4ZWVkZDRhNzZjYjljNDQzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgKQEAgLTQ3LDYgKzQ3LDkg
QEAKICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAKIG5hbWVzcGFjZSBKU0MgeworbmFt
ZXNwYWNlIERPTUpJVCB7CitjbGFzcyBTaWduYXR1cmU7Cit9CiAKIGlubGluZSBKU0NlbGwqIGdl
dEpTRnVuY3Rpb24oSlNWYWx1ZSB2YWx1ZSkKIHsKQEAgLTcwMCw2ICs3MDMsNyBAQCBjbGFzcyBK
U09iamVjdCA6IHB1YmxpYyBKU0NlbGwgewogCiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgYm9vbCBw
dXREaXJlY3ROYXRpdmVJbnRyaW5zaWNHZXR0ZXIoVk0mLCBKU0dsb2JhbE9iamVjdCosIElkZW50
aWZpZXIsIE5hdGl2ZUZ1bmN0aW9uLCBJbnRyaW5zaWMsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpOwog
ICAgIEpTX0VYUE9SVF9QUklWQVRFIGJvb2wgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb24oVk0mLCBK
U0dsb2JhbE9iamVjdCosIGNvbnN0IFByb3BlcnR5TmFtZSYsIHVuc2lnbmVkIGZ1bmN0aW9uTGVu
Z3RoLCBOYXRpdmVGdW5jdGlvbiwgSW50cmluc2ljLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKTsKKyAg
ICBKU19FWFBPUlRfUFJJVkFURSBib29sIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uKFZNJiwgSlNH
bG9iYWxPYmplY3QqLCBjb25zdCBQcm9wZXJ0eU5hbWUmLCB1bnNpZ25lZCBmdW5jdGlvbkxlbmd0
aCwgTmF0aXZlRnVuY3Rpb24sIEludHJpbnNpYywgY29uc3QgRE9NSklUOjpTaWduYXR1cmUqLCB1
bnNpZ25lZCBhdHRyaWJ1dGVzKTsKICAgICBKU19FWFBPUlRfUFJJVkFURSBKU0Z1bmN0aW9uKiBw
dXREaXJlY3RCdWlsdGluRnVuY3Rpb24oVk0mLCBKU0dsb2JhbE9iamVjdCosIGNvbnN0IFByb3Bl
cnR5TmFtZSYsIEZ1bmN0aW9uRXhlY3V0YWJsZSosIHVuc2lnbmVkIGF0dHJpYnV0ZXMpOwogICAg
IEpTRnVuY3Rpb24qIHB1dERpcmVjdEJ1aWx0aW5GdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKFZN
JiwgSlNHbG9iYWxPYmplY3QqLCBjb25zdCBQcm9wZXJ0eU5hbWUmLCBGdW5jdGlvbkV4ZWN1dGFi
bGUqLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKTsKICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIHB1
dERpcmVjdE5hdGl2ZUZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24oVk0mLCBKU0dsb2JhbE9iamVj
dCosIGNvbnN0IFByb3BlcnR5TmFtZSYsIHVuc2lnbmVkIGZ1bmN0aW9uTGVuZ3RoLCBOYXRpdmVG
dW5jdGlvbiwgSW50cmluc2ljLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0xvb2t1cC5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvTG9va3VwLmgKaW5kZXggZTJkMTc5NTM4OGU3NjUyYmQ4ZjFiNGI2ZGFjYmIy
Y2JjZTljZDQ0Zi4uZDcwNzY4NmZiNTY5M2U3ZjUyZmU2ZDFhMmVjNDRiZDAwMjNiZWYxMSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTG9va3VwLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTG9va3VwLmgKQEAgLTI0LDYgKzI0LDcgQEAKICNp
bmNsdWRlICJDYWxsRnJhbWUuaCIKICNpbmNsdWRlICJDdXN0b21HZXR0ZXJTZXR0ZXIuaCIKICNp
bmNsdWRlICJET01KSVRHZXR0ZXJTZXR0ZXIuaCIKKyNpbmNsdWRlICJET01KSVRTaWduYXR1cmUu
aCIKICNpbmNsdWRlICJJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiSWRlbnRpZmllcklubGluZXMu
aCIKICNpbmNsdWRlICJJbnRyaW5zaWMuaCIKQEAgLTc1LDEyICs3NiwxOSBAQCBzdHJ1Y3QgSGFz
aFRhYmxlVmFsdWUgewogICAgIEludHJpbnNpYyBpbnRyaW5zaWMoKSBjb25zdCB7IEFTU0VSVCht
X2F0dHJpYnV0ZXMgJiBGdW5jdGlvbik7IHJldHVybiBtX2ludHJpbnNpYzsgfQogICAgIEJ1aWx0
aW5HZW5lcmF0b3IgYnVpbHRpbkdlbmVyYXRvcigpIGNvbnN0IHsgQVNTRVJUKG1fYXR0cmlidXRl
cyAmIEJ1aWx0aW4pOyByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxCdWlsdGluR2VuZXJhdG9yPiht
X3ZhbHVlcy52YWx1ZTEpOyB9CiAgICAgTmF0aXZlRnVuY3Rpb24gZnVuY3Rpb24oKSBjb25zdCB7
IEFTU0VSVChtX2F0dHJpYnV0ZXMgJiBGdW5jdGlvbik7IHJldHVybiByZWludGVycHJldF9jYXN0
PE5hdGl2ZUZ1bmN0aW9uPihtX3ZhbHVlcy52YWx1ZTEpOyB9Ci0gICAgdW5zaWduZWQgY2hhciBm
dW5jdGlvbkxlbmd0aCgpIGNvbnN0IHsgQVNTRVJUKG1fYXR0cmlidXRlcyAmIEZ1bmN0aW9uKTsg
cmV0dXJuIHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KG1fdmFsdWVzLnZhbHVlMik7IH0KKyAg
ICB1bnNpZ25lZCBjaGFyIGZ1bmN0aW9uTGVuZ3RoKCkgY29uc3QKKyAgICB7CisgICAgICAgIEFT
U0VSVChtX2F0dHJpYnV0ZXMgJiBGdW5jdGlvbik7CisgICAgICAgIGlmIChtX2F0dHJpYnV0ZXMg
JiBET01KSVRGdW5jdGlvbikKKyAgICAgICAgICAgIHJldHVybiBzaWduYXR1cmUoKS0+YXJndW1l
bnRDb3VudDsKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KG1fdmFs
dWVzLnZhbHVlMik7CisgICAgfQogCiAgICAgR2V0RnVuY3Rpb24gcHJvcGVydHlHZXR0ZXIoKSBj
b25zdCB7IEFTU0VSVCghKG1fYXR0cmlidXRlcyAmIEJ1aWx0aW5PckZ1bmN0aW9uT3JBY2Nlc3Nv
ck9yTGF6eVByb3BlcnR5T3JDb25zdGFudCkpOyByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxHZXRG
dW5jdGlvbj4obV92YWx1ZXMudmFsdWUxKTsgfQogICAgIFB1dEZ1bmN0aW9uIHByb3BlcnR5UHV0
dGVyKCkgY29uc3QgeyBBU1NFUlQoIShtX2F0dHJpYnV0ZXMgJiBCdWlsdGluT3JGdW5jdGlvbk9y
QWNjZXNzb3JPckxhenlQcm9wZXJ0eU9yQ29uc3RhbnQpKTsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nh
c3Q8UHV0RnVuY3Rpb24+KG1fdmFsdWVzLnZhbHVlMik7IH0KIAogICAgIERPTUpJVDo6R2V0dGVy
U2V0dGVyKiBkb21KSVQoKSBjb25zdCB7IEFTU0VSVChtX2F0dHJpYnV0ZXMgJiBET01KSVRBdHRy
aWJ1dGUpOyByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxET01KSVRHZXR0ZXJTZXR0ZXJHZW5lcmF0
b3I+KG1fdmFsdWVzLnZhbHVlMSkoKTsgfQorICAgIGNvbnN0IERPTUpJVDo6U2lnbmF0dXJlKiBz
aWduYXR1cmUoKSBjb25zdCB7IEFTU0VSVChtX2F0dHJpYnV0ZXMgJiBET01KSVRGdW5jdGlvbik7
IHJldHVybiByZWludGVycHJldF9jYXN0PGNvbnN0IERPTUpJVDo6U2lnbmF0dXJlKj4obV92YWx1
ZXMudmFsdWUyKTsgfQogCiAgICAgTmF0aXZlRnVuY3Rpb24gYWNjZXNzb3JHZXR0ZXIoKSBjb25z
dCB7IEFTU0VSVChtX2F0dHJpYnV0ZXMgJiBBY2Nlc3Nvcik7IHJldHVybiByZWludGVycHJldF9j
YXN0PE5hdGl2ZUZ1bmN0aW9uPihtX3ZhbHVlcy52YWx1ZTEpOyB9CiAgICAgTmF0aXZlRnVuY3Rp
b24gYWNjZXNzb3JTZXR0ZXIoKSBjb25zdCB7IEFTU0VSVChtX2F0dHJpYnV0ZXMgJiBBY2Nlc3Nv
cik7IHJldHVybiByZWludGVycHJldF9jYXN0PE5hdGl2ZUZ1bmN0aW9uPihtX3ZhbHVlcy52YWx1
ZTIpOyB9CkBAIC0zMTMsNiArMzIxLDEyIEBAIGlubGluZSB2b2lkIHJlaWZ5U3RhdGljUHJvcGVy
dHkoVk0mIHZtLCBjb25zdCBQcm9wZXJ0eU5hbWUmIHByb3BlcnR5TmFtZSwgY29uc3QKICAgICB9
CiAKICAgICBpZiAodmFsdWUuYXR0cmlidXRlcygpICYgRnVuY3Rpb24pIHsKKyAgICAgICAgaWYg
KHZhbHVlLmF0dHJpYnV0ZXMoKSAmIERPTUpJVEZ1bmN0aW9uKSB7CisgICAgICAgICAgICB0aGlz
T2JqLnB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uKAorICAgICAgICAgICAgICAgIHZtLCB0aGlzT2Jq
Lmdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLmZ1bmN0aW9uTGVuZ3RoKCksCisg
ICAgICAgICAgICAgICAgdmFsdWUuZnVuY3Rpb24oKSwgdmFsdWUuaW50cmluc2ljKCksIHZhbHVl
LnNpZ25hdHVyZSgpLCBhdHRyaWJ1dGVzRm9yU3RydWN0dXJlKHZhbHVlLmF0dHJpYnV0ZXMoKSkp
OworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CiAgICAgICAgIHRoaXNPYmoucHV0RGly
ZWN0TmF0aXZlRnVuY3Rpb24oCiAgICAgICAgICAgICB2bSwgdGhpc09iai5nbG9iYWxPYmplY3Qo
KSwgcHJvcGVydHlOYW1lLCB2YWx1ZS5mdW5jdGlvbkxlbmd0aCgpLAogICAgICAgICAgICAgdmFs
dWUuZnVuY3Rpb24oKSwgdmFsdWUuaW50cmluc2ljKCksIGF0dHJpYnV0ZXNGb3JTdHJ1Y3R1cmUo
dmFsdWUuYXR0cmlidXRlcygpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9OYXRpdmVFeGVjdXRhYmxlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL05hdGl2ZUV4ZWN1dGFibGUuY3BwCmluZGV4IDFjMmJlYzU4YjdkYjg5OGI4MTE4YjI5NzEw
YjJkNzQyNjkzYmIyMWQuLmI3ZGFkMmE0NjJkZGRmYzIyNzYyZmQ1Y2Q3Y2Y2YTQ2MWNkZDE4ZjYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05hdGl2ZUV4ZWN1dGFi
bGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05hdGl2ZUV4ZWN1dGFi
bGUuY3BwCkBAIC00MCwxMCArNDAsMTAgQEAgbmFtZXNwYWNlIEpTQyB7CiAKIGNvbnN0IENsYXNz
SW5mbyBOYXRpdmVFeGVjdXRhYmxlOjpzX2luZm8gPSB7ICJOYXRpdmVFeGVjdXRhYmxlIiwgJkV4
ZWN1dGFibGVCYXNlOjpzX2luZm8sIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoTmF0aXZlRXhlY3V0
YWJsZSkgfTsKIAotTmF0aXZlRXhlY3V0YWJsZSogTmF0aXZlRXhlY3V0YWJsZTo6Y3JlYXRlKFZN
JiB2bSwgUGFzc1JlZlB0cjxKSVRDb2RlPiBjYWxsVGh1bmssIE5hdGl2ZUZ1bmN0aW9uIGZ1bmN0
aW9uLCBQYXNzUmVmUHRyPEpJVENvZGU+IGNvbnN0cnVjdFRodW5rLCBOYXRpdmVGdW5jdGlvbiBj
b25zdHJ1Y3RvciwgSW50cmluc2ljIGludHJpbnNpYywgY29uc3QgU3RyaW5nJiBuYW1lKQorTmF0
aXZlRXhlY3V0YWJsZSogTmF0aXZlRXhlY3V0YWJsZTo6Y3JlYXRlKFZNJiB2bSwgUGFzc1JlZlB0
cjxKSVRDb2RlPiBjYWxsVGh1bmssIE5hdGl2ZUZ1bmN0aW9uIGZ1bmN0aW9uLCBQYXNzUmVmUHRy
PEpJVENvZGU+IGNvbnN0cnVjdFRodW5rLCBOYXRpdmVGdW5jdGlvbiBjb25zdHJ1Y3RvciwgSW50
cmluc2ljIGludHJpbnNpYywgY29uc3QgRE9NSklUOjpTaWduYXR1cmUqIHNpZ25hdHVyZSwgY29u
c3QgU3RyaW5nJiBuYW1lKQogewogICAgIE5hdGl2ZUV4ZWN1dGFibGUqIGV4ZWN1dGFibGU7Ci0g
ICAgZXhlY3V0YWJsZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPE5hdGl2ZUV4ZWN1dGFi
bGU+KHZtLmhlYXApKSBOYXRpdmVFeGVjdXRhYmxlKHZtLCBmdW5jdGlvbiwgY29uc3RydWN0b3Is
IGludHJpbnNpYyk7CisgICAgZXhlY3V0YWJsZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxs
PE5hdGl2ZUV4ZWN1dGFibGU+KHZtLmhlYXApKSBOYXRpdmVFeGVjdXRhYmxlKHZtLCBmdW5jdGlv
biwgY29uc3RydWN0b3IsIGludHJpbnNpYywgc2lnbmF0dXJlKTsKICAgICBleGVjdXRhYmxlLT5m
aW5pc2hDcmVhdGlvbih2bSwgY2FsbFRodW5rLCBjb25zdHJ1Y3RUaHVuaywgbmFtZSk7CiAgICAg
cmV0dXJuIGV4ZWN1dGFibGU7CiB9CkBAIC02OCwxMCArNjgsMTEgQEAgdm9pZCBOYXRpdmVFeGVj
dXRhYmxlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIFBhc3NSZWZQdHI8SklUQ29kZT4gY2FsbFRo
dW5rLCBQYXMKICAgICBtX25hbWUgPSBuYW1lOwogfQogCi1OYXRpdmVFeGVjdXRhYmxlOjpOYXRp
dmVFeGVjdXRhYmxlKFZNJiB2bSwgTmF0aXZlRnVuY3Rpb24gZnVuY3Rpb24sIE5hdGl2ZUZ1bmN0
aW9uIGNvbnN0cnVjdG9yLCBJbnRyaW5zaWMgaW50cmluc2ljKQorTmF0aXZlRXhlY3V0YWJsZTo6
TmF0aXZlRXhlY3V0YWJsZShWTSYgdm0sIE5hdGl2ZUZ1bmN0aW9uIGZ1bmN0aW9uLCBOYXRpdmVG
dW5jdGlvbiBjb25zdHJ1Y3RvciwgSW50cmluc2ljIGludHJpbnNpYywgY29uc3QgRE9NSklUOjpT
aWduYXR1cmUqIHNpZ25hdHVyZSkKICAgICA6IEV4ZWN1dGFibGVCYXNlKHZtLCB2bS5uYXRpdmVF
eGVjdXRhYmxlU3RydWN0dXJlLmdldCgpLCBOVU1fUEFSQU1FVEVSU19JU19IT1NULCBpbnRyaW5z
aWMpCiAgICAgLCBtX2Z1bmN0aW9uKGZ1bmN0aW9uKQogICAgICwgbV9jb25zdHJ1Y3Rvcihjb25z
dHJ1Y3RvcikKKyAgICAsIG1fc2lnbmF0dXJlKHNpZ25hdHVyZSkKIHsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZlRXhlY3V0YWJsZS5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZlRXhlY3V0YWJsZS5oCmluZGV4IDViZjJl
MTA2ZGIzMGE1YjhjOTc4Yzg5NmE2YWQ5OGNhMmM3NTc0MTQuLmU0ZDNlMDQ5NDU3YjQ1ZDAyNDU3
ZThkZGE1NDQ5MGIzNzE0YWNjZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL05hdGl2ZUV4ZWN1dGFibGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9OYXRpdmVFeGVjdXRhYmxlLmgKQEAgLTI4LDYgKzI4LDkgQEAKICNpbmNsdWRlICJFeGVj
dXRhYmxlQmFzZS5oIgogCiBuYW1lc3BhY2UgSlNDIHsKK25hbWVzcGFjZSBET01KSVQgeworY2xh
c3MgU2lnbmF0dXJlOworfQogCiBjbGFzcyBOYXRpdmVFeGVjdXRhYmxlIGZpbmFsIDogcHVibGlj
IEV4ZWN1dGFibGVCYXNlIHsKICAgICBmcmllbmQgY2xhc3MgSklUOwpAQCAtMzYsNyArMzksNyBA
QCBjbGFzcyBOYXRpdmVFeGVjdXRhYmxlIGZpbmFsIDogcHVibGljIEV4ZWN1dGFibGVCYXNlIHsK
ICAgICB0eXBlZGVmIEV4ZWN1dGFibGVCYXNlIEJhc2U7CiAgICAgc3RhdGljIGNvbnN0IHVuc2ln
bmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBTdHJ1Y3R1cmVJc0lt
bW9ydGFsOwogCi0gICAgc3RhdGljIE5hdGl2ZUV4ZWN1dGFibGUqIGNyZWF0ZShWTSYgdm0sIFBh
c3NSZWZQdHI8SklUQ29kZT4gY2FsbFRodW5rLCBOYXRpdmVGdW5jdGlvbiBmdW5jdGlvbiwgUGFz
c1JlZlB0cjxKSVRDb2RlPiBjb25zdHJ1Y3RUaHVuaywgTmF0aXZlRnVuY3Rpb24gY29uc3RydWN0
b3IsIEludHJpbnNpYyBpbnRyaW5zaWMsIGNvbnN0IFN0cmluZyYgbmFtZSk7CisgICAgc3RhdGlj
IE5hdGl2ZUV4ZWN1dGFibGUqIGNyZWF0ZShWTSYsIFBhc3NSZWZQdHI8SklUQ29kZT4gY2FsbFRo
dW5rLCBOYXRpdmVGdW5jdGlvbiBmdW5jdGlvbiwgUGFzc1JlZlB0cjxKSVRDb2RlPiBjb25zdHJ1
Y3RUaHVuaywgTmF0aXZlRnVuY3Rpb24gY29uc3RydWN0b3IsIEludHJpbnNpYywgY29uc3QgRE9N
SklUOjpTaWduYXR1cmUqLCBjb25zdCBTdHJpbmcmIG5hbWUpOwogCiAgICAgc3RhdGljIHZvaWQg
ZGVzdHJveShKU0NlbGwqKTsKIApAQCAtNjYsNiArNjksMTQgQEAgY2xhc3MgTmF0aXZlRXhlY3V0
YWJsZSBmaW5hbCA6IHB1YmxpYyBFeGVjdXRhYmxlQmFzZSB7CiAgICAgREVDTEFSRV9JTkZPOwog
CiAgICAgY29uc3QgU3RyaW5nJiBuYW1lKCkgY29uc3QgeyByZXR1cm4gbV9uYW1lOyB9CisgICAg
Y29uc3QgRE9NSklUOjpTaWduYXR1cmUqIHNpZ25hdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2ln
bmF0dXJlOyB9CisKKyAgICBjb25zdCBET01KSVQ6OlNpZ25hdHVyZSogc2lnbmF0dXJlRm9yKENv
ZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCkgY29uc3QKKyAgICB7CisgICAgICAgIGlmIChpc0Nh
bGwoa2luZCkpCisgICAgICAgICAgICByZXR1cm4gc2lnbmF0dXJlKCk7CisgICAgICAgIHJldHVy
biBudWxscHRyOworICAgIH0KIAogcHJvdGVjdGVkOgogICAgIHZvaWQgZmluaXNoQ3JlYXRpb24o
Vk0mLCBQYXNzUmVmUHRyPEpJVENvZGU+IGNhbGxUaHVuaywgUGFzc1JlZlB0cjxKSVRDb2RlPiBj
b25zdHJ1Y3RUaHVuaywgY29uc3QgU3RyaW5nJiBuYW1lKTsKQEAgLTczLDEwICs4NCwxMSBAQCBj
bGFzcyBOYXRpdmVFeGVjdXRhYmxlIGZpbmFsIDogcHVibGljIEV4ZWN1dGFibGVCYXNlIHsKIHBy
aXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIEV4ZWN1dGFibGVCYXNlOwogCi0gICAgTmF0aXZlRXhl
Y3V0YWJsZShWTSYsIE5hdGl2ZUZ1bmN0aW9uIGZ1bmN0aW9uLCBOYXRpdmVGdW5jdGlvbiBjb25z
dHJ1Y3RvciwgSW50cmluc2ljKTsKKyAgICBOYXRpdmVFeGVjdXRhYmxlKFZNJiwgTmF0aXZlRnVu
Y3Rpb24gZnVuY3Rpb24sIE5hdGl2ZUZ1bmN0aW9uIGNvbnN0cnVjdG9yLCBJbnRyaW5zaWMsIGNv
bnN0IERPTUpJVDo6U2lnbmF0dXJlKik7CiAKICAgICBOYXRpdmVGdW5jdGlvbiBtX2Z1bmN0aW9u
OwogICAgIE5hdGl2ZUZ1bmN0aW9uIG1fY29uc3RydWN0b3I7CisgICAgY29uc3QgRE9NSklUOjpT
aWduYXR1cmUqIG1fc2lnbmF0dXJlOwogCiAgICAgU3RyaW5nIG1fbmFtZTsKIH07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eVNsb3QuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5U2xvdC5oCmluZGV4IDlkZTE1MWE1NmFh
Mjc1NmNmZDBjNjAwMzY2ODI2NmIxOWY5OTMyZGQuLjM4N2UzMWI0MGU1YWViZjJmMzVmNmNhMjcy
ZTM4M2MwNWQzZjQ1MmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1Byb3BlcnR5U2xvdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3Bl
cnR5U2xvdC5oCkBAIC01MSw2ICs1MSw3IEBAIGVudW0gQXR0cmlidXRlIHsKICAgICBDbGFzc1N0
cnVjdHVyZSAgICA9IDEgPDwgMTIsIC8vIHByb3BlcnR5IGlzIGEgbGF6eSBjbGFzcyBzdHJ1Y3R1
cmUgLSBvbmx5IHVzZWQgYnkgc3RhdGljIGhhc2h0YWJsZXMKICAgICBQcm9wZXJ0eUNhbGxiYWNr
ICA9IDEgPDwgMTMsIC8vIHByb3BlcnR5IHRoYXQgaXMgYSBsYXp5IHByb3BlcnR5IGNhbGxiYWNr
IC0gb25seSB1c2VkIGJ5IHN0YXRpYyBoYXNodGFibGVzCiAgICAgRE9NSklUQXR0cmlidXRlICAg
PSAxIDw8IDE0LCAvLyBwcm9wZXJ0eSBpcyBhIERPTSBKSVQgYXR0cmlidXRlIC0gb25seSB1c2Vk
IGJ5IHN0YXRpYyBoYXNodGFibGVzCisgICAgRE9NSklURnVuY3Rpb24gICAgPSAxIDw8IDE1LCAv
LyBwcm9wZXJ0eSBpcyBhIERPTSBKSVQgZnVuY3Rpb24gLSBvbmx5IHVzZWQgYnkgc3RhdGljIGhh
c2h0YWJsZXMKICAgICBCdWlsdGluT3JGdW5jdGlvbiA9IEJ1aWx0aW4gfCBGdW5jdGlvbiwgLy8g
aGVscGVyIG9ubHkgdXNlZCBieSBzdGF0aWMgaGFzaHRhYmxlcwogICAgIEJ1aWx0aW5PckZ1bmN0
aW9uT3JMYXp5UHJvcGVydHkgPSBCdWlsdGluIHwgRnVuY3Rpb24gfCBDZWxsUHJvcGVydHkgfCBD
bGFzc1N0cnVjdHVyZSB8IFByb3BlcnR5Q2FsbGJhY2ssIC8vIGhlbHBlciBvbmx5IHVzZWQgYnkg
c3RhdGljIGhhc2h0YWJsZXMKICAgICBCdWlsdGluT3JGdW5jdGlvbk9yQWNjZXNzb3JPckxhenlQ
cm9wZXJ0eSA9IEJ1aWx0aW4gfCBGdW5jdGlvbiB8IEFjY2Vzc29yIHwgQ2VsbFByb3BlcnR5IHwg
Q2xhc3NTdHJ1Y3R1cmUgfCBQcm9wZXJ0eUNhbGxiYWNrLCAvLyBoZWxwZXIgb25seSB1c2VkIGJ5
IHN0YXRpYyBoYXNodGFibGVzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9WTS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKaW5kZXgg
ZTZiZDhkZjU4ODlkODczMWNlNWZiNmRjY2RlOWFkZjg0NTZjMDJlOS4uN2EyZjBmMjY5NGFjMDE2
YmQ5M2QxYzg2YTRhZjk5ZWQxZTVlZWVmNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvVk0uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZN
LmNwcApAQCAtNTE2LDE3ICs1MTYsMTcgQEAgc3RhdGljIFRodW5rR2VuZXJhdG9yIHRodW5rR2Vu
ZXJhdG9yRm9ySW50cmluc2ljKEludHJpbnNpYyBpbnRyaW5zaWMpCiAKIE5hdGl2ZUV4ZWN1dGFi
bGUqIFZNOjpnZXRIb3N0RnVuY3Rpb24oTmF0aXZlRnVuY3Rpb24gZnVuY3Rpb24sIE5hdGl2ZUZ1
bmN0aW9uIGNvbnN0cnVjdG9yLCBjb25zdCBTdHJpbmcmIG5hbWUpCiB7Ci0gICAgcmV0dXJuIGdl
dEhvc3RGdW5jdGlvbihmdW5jdGlvbiwgTm9JbnRyaW5zaWMsIGNvbnN0cnVjdG9yLCBuYW1lKTsK
KyAgICByZXR1cm4gZ2V0SG9zdEZ1bmN0aW9uKGZ1bmN0aW9uLCBOb0ludHJpbnNpYywgY29uc3Ry
dWN0b3IsIG51bGxwdHIsIG5hbWUpOwogfQogCi1OYXRpdmVFeGVjdXRhYmxlKiBWTTo6Z2V0SG9z
dEZ1bmN0aW9uKE5hdGl2ZUZ1bmN0aW9uIGZ1bmN0aW9uLCBJbnRyaW5zaWMgaW50cmluc2ljLCBO
YXRpdmVGdW5jdGlvbiBjb25zdHJ1Y3RvciwgY29uc3QgU3RyaW5nJiBuYW1lKQorTmF0aXZlRXhl
Y3V0YWJsZSogVk06OmdldEhvc3RGdW5jdGlvbihOYXRpdmVGdW5jdGlvbiBmdW5jdGlvbiwgSW50
cmluc2ljIGludHJpbnNpYywgTmF0aXZlRnVuY3Rpb24gY29uc3RydWN0b3IsIGNvbnN0IERPTUpJ
VDo6U2lnbmF0dXJlKiBzaWduYXR1cmUsIGNvbnN0IFN0cmluZyYgbmFtZSkKIHsKICNpZiBFTkFC
TEUoSklUKQogICAgIGlmIChjYW5Vc2VKSVQoKSkgewogICAgICAgICByZXR1cm4gaml0U3R1YnMt
Pmhvc3RGdW5jdGlvblN0dWIoCiAgICAgICAgICAgICB0aGlzLCBmdW5jdGlvbiwgY29uc3RydWN0
b3IsCiAgICAgICAgICAgICBpbnRyaW5zaWMgIT0gTm9JbnRyaW5zaWMgPyB0aHVua0dlbmVyYXRv
ckZvckludHJpbnNpYyhpbnRyaW5zaWMpIDogMCwKLSAgICAgICAgICAgIGludHJpbnNpYywgbmFt
ZSk7CisgICAgICAgICAgICBpbnRyaW5zaWMsIHNpZ25hdHVyZSwgbmFtZSk7CiAgICAgfQogI2Vs
c2UgLy8gRU5BQkxFKEpJVCkKICAgICBVTlVTRURfUEFSQU0oaW50cmluc2ljKTsKQEAgLTUzNCw3
ICs1MzQsNyBAQCBOYXRpdmVFeGVjdXRhYmxlKiBWTTo6Z2V0SG9zdEZ1bmN0aW9uKE5hdGl2ZUZ1
bmN0aW9uIGZ1bmN0aW9uLCBJbnRyaW5zaWMgaW50cmlucwogICAgIHJldHVybiBOYXRpdmVFeGVj
dXRhYmxlOjpjcmVhdGUoKnRoaXMsCiAgICAgICAgIGFkb3B0UmVmKG5ldyBOYXRpdmVKSVRDb2Rl
KE1hY3JvQXNzZW1ibGVyQ29kZVJlZjo6Y3JlYXRlTExJbnRDb2RlUmVmKGxsaW50X25hdGl2ZV9j
YWxsX3RyYW1wb2xpbmUpLCBKSVRDb2RlOjpIb3N0Q2FsbFRodW5rKSksIGZ1bmN0aW9uLAogICAg
ICAgICBhZG9wdFJlZihuZXcgTmF0aXZlSklUQ29kZShNYWNyb0Fzc2VtYmxlckNvZGVSZWY6OmNy
ZWF0ZUxMSW50Q29kZVJlZihsbGludF9uYXRpdmVfY29uc3RydWN0X3RyYW1wb2xpbmUpLCBKSVRD
b2RlOjpIb3N0Q2FsbFRodW5rKSksIGNvbnN0cnVjdG9yLAotICAgICAgICBOb0ludHJpbnNpYywg
bmFtZSk7CisgICAgICAgIE5vSW50cmluc2ljLCBzaWduYXR1cmUsIG5hbWUpOwogfQogCiBWTTo6
Q2xpZW50RGF0YTo6fkNsaWVudERhdGEoKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvVk0uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKaW5k
ZXggNGZkN2VjNDBmMDNlZWRlYjI5YmQ0OTY3ZDljZGM0MzAyNGNmYTQxMC4uMTVhMDhjMmEzM2Jl
OTcyYjRhOWEzMmRmYzM1MGQ2ZTM4Y2M4NDJlZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvVk0uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9W
TS5oCkBAIC00MjksNyArNDI5LDcgQEAgY2xhc3MgVk0gOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNv
dW50ZWQ8Vk0+IHsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8RlRMOjpUaHVua3M+IGZ0bFRodW5rczsK
ICNlbmRpZgogICAgIE5hdGl2ZUV4ZWN1dGFibGUqIGdldEhvc3RGdW5jdGlvbihOYXRpdmVGdW5j
dGlvbiwgTmF0aXZlRnVuY3Rpb24gY29uc3RydWN0b3IsIGNvbnN0IFN0cmluZyYgbmFtZSk7Ci0g
ICAgTmF0aXZlRXhlY3V0YWJsZSogZ2V0SG9zdEZ1bmN0aW9uKE5hdGl2ZUZ1bmN0aW9uLCBJbnRy
aW5zaWMgaW50cmluc2ljLCBOYXRpdmVGdW5jdGlvbiBjb25zdHJ1Y3RvciwgY29uc3QgU3RyaW5n
JiBuYW1lKTsKKyAgICBOYXRpdmVFeGVjdXRhYmxlKiBnZXRIb3N0RnVuY3Rpb24oTmF0aXZlRnVu
Y3Rpb24sIEludHJpbnNpYywgTmF0aXZlRnVuY3Rpb24gY29uc3RydWN0b3IsIGNvbnN0IERPTUpJ
VDo6U2lnbmF0dXJlKiwgY29uc3QgU3RyaW5nJiBuYW1lKTsKIAogICAgIHN0YXRpYyBwdHJkaWZm
X3QgZXhjZXB0aW9uT2Zmc2V0KCkKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
TWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IDQyZTJm
MjExMWE5MDg2NDJlZDI3NDQxOTQ2ZTE3ODJmNWQwNjgxN2IuLjc4YWExZjcxMDA4MGM2Y2IyN2Jl
MmI2M2M0OGJkNmFkNWYzM2RhYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlz
dHMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC0xNTM3LDcgKzE1
MzcsNiBAQCBzZXQoV2ViQ29yZV9TT1VSQ0VTCiAKICAgICBkb20vZGVmYXVsdC9QbGF0Zm9ybU1l
c3NhZ2VQb3J0Q2hhbm5lbC5jcHAKIAotICAgIGRvbWppdC9ET01KSVRBYnN0cmFjdEhlYXBSZXBv
c2l0b3J5LmNwcAogICAgIGRvbWppdC9ET01KSVRIZWxwZXJzLmNwcAogICAgIGRvbWppdC9KU0Rv
Y3VtZW50RE9NSklULmNwcAogICAgIGRvbWppdC9KU05vZGVET01KSVQuY3BwCkBAIC0zNTExLDYg
KzM1MTAsMTUgQEAgTUFLRV9IQVNIX1RPT0xTKCR7V0VCQ09SRV9ESVJ9L3BsYXRmb3JtL0NvbG9y
RGF0YSkKIGxpc3QoQVBQRU5EIFdlYkNvcmVfREVSSVZFRF9TT1VSQ0VTICR7REVSSVZFRF9TT1VS
Q0VTX1dFQkNPUkVfRElSfS9Db2xvckRhdGEuY3BwKQogCiAKKyMgR2VuZXJhdGUgRE9NSklUQWJz
dHJhY3RIZWFwUmVwb3NpdG9yeS5oCithZGRfY3VzdG9tX2NvbW1hbmQoCisgICAgT1VUUFVUICR7
REVSSVZFRF9TT1VSQ0VTX1dFQkNPUkVfRElSfS9ET01KSVRBYnN0cmFjdEhlYXBSZXBvc2l0b3J5
LmgKKyAgICBNQUlOX0RFUEVOREVOQ1kgZG9taml0L0RPTUpJVEFic3RyYWN0SGVhcFJlcG9zaXRv
cnkueWFtbAorICAgIERFUEVORFMgJHtXRUJDT1JFX0RJUn0vZG9taml0L2dlbmVyYXRlLWFic3Ry
YWN0LWhlYXAucmIKKyAgICBDT01NQU5EICR7UlVCWV9FWEVDVVRBQkxFfSAke1dFQkNPUkVfRElS
fS9kb21qaXQvZ2VuZXJhdGUtYWJzdHJhY3QtaGVhcC5yYiAke1dFQkNPUkVfRElSfS9kb21qaXQv
RE9NSklUQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS55YW1sICR7REVSSVZFRF9TT1VSQ0VTX1dFQkNP
UkVfRElSfS9ET01KSVRBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmgKKyAgICBWRVJCQVRJTSkKK2xp
c3QoQVBQRU5EIFdlYkNvcmVfREVSSVZFRF9TT1VSQ0VTICR7REVSSVZFRF9TT1VSQ0VTX1dFQkNP
UkVfRElSfS9ET01KSVRBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmgpCisKICMgR2VuZXJhdGUgWE1M
Vmlld2VyQ1NTLmgKIGFkZF9jdXN0b21fY29tbWFuZCgKICAgICBPVVRQVVQgJHtERVJJVkVEX1NP
VVJDRVNfV0VCQ09SRV9ESVJ9L1hNTFZpZXdlckNTUy5oICR7REVSSVZFRF9TT1VSQ0VTX1dFQkNP
UkVfRElSfS9YTUxWaWV3ZXIubWluLmNzcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvRGVy
aXZlZFNvdXJjZXMubWFrZSBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKaW5k
ZXggNTY1ZTJkOTJjMjc4MjAwZTQ0YjFhODY3MGRkMTFjYWE3MjhkMDlkMy4uY2ZjMjI3NjhkNzVh
Y2U4ZWU2MGUwNDg2YzI2Mjg0YTE4Y2EyZTVlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
RGVyaXZlZFNvdXJjZXMubWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5t
YWtlCkBAIC03NDcsNiArNzQ3LDcgQEAgSlNfQklORElOR19JRExTID0gXAogCiBQWVRIT04gPSBw
eXRob24KIFBFUkwgPSBwZXJsCitSVUJZID0gcnVieQogCiBpZmVxICgkKE9TKSxXaW5kb3dzX05U
KQogICAgIERFTEVURSA9IGNtZCAvL0MgZGVsCkBAIC04NTMsNiArODU0LDcgQEAgYWxsIDogXAog
ICAgIENTU1ZhbHVlS2V5d29yZHMuY3BwIFwKICAgICBDU1NWYWx1ZUtleXdvcmRzLmggXAogICAg
IENvbG9yRGF0YS5jcHAgXAorICAgIERPTUpJVEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaCBcCiAg
ICAgRXZlbnRJbnRlcmZhY2VzLmggXAogICAgIEV2ZW50VGFyZ2V0SW50ZXJmYWNlcy5oIFwKICAg
ICBFeGNlcHRpb25Db2RlRGVzY3JpcHRpb24uY3BwIFwKQEAgLTk0Miw2ICs5NDQsMTUgQEAgU2Vs
ZWN0b3JQc2V1ZG9FbGVtZW50VHlwZU1hcC5jcHAgOiAkKFdlYkNvcmUpL2Nzcy9tYWtlU2VsZWN0
b3JQc2V1ZG9FbGVtZW50c01hcC4KIAogIyAtLS0tLS0tLQogCisjIERPTUpJVCBBYnN0cmFjdCBI
ZWFwCisKK2FsbCA6IERPTUpJVEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaAorCitET01KSVRBYnN0
cmFjdEhlYXBSZXBvc2l0b3J5LmggOiAkKFdlYkNvcmUpL2RvbWppdC9nZW5lcmF0ZS1hYnN0cmFj
dC1oZWFwLnJiICQoV2ViQ29yZSkvZG9taml0L0RPTUpJVEFic3RyYWN0SGVhcFJlcG9zaXRvcnku
eWFtbAorCSQoUlVCWSkgIiQoV2ViQ29yZSkvZG9taml0L2dlbmVyYXRlLWFic3RyYWN0LWhlYXAu
cmIiICQoV2ViQ29yZSkvZG9taml0L0RPTUpJVEFic3RyYWN0SGVhcFJlcG9zaXRvcnkueWFtbCAu
L0RPTUpJVEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaAorCisjIC0tLS0tLS0tCisKICMgWE1MVmll
d2VyIENTUwogCiBhbGwgOiBYTUxWaWV3ZXJDU1MuaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvRm9yd2FyZGluZ0hlYWRlcnMvYnl0ZWNvZGUvU3BlY3VsYXRlZFR5cGUuaCBiL1NvdXJjZS9X
ZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL2J5dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uMDk0NjZmNGYwMGI4MDdkZmVkYTBmYzgyMDg1NDZiNzE4NDRmMDk5ZQotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL2J5dGVjb2RlL1NwZWN1
bGF0ZWRUeXBlLmgKQEAgLTAsMCArMSwyOSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViQ29yZV9GV0RfU3BlY3VsYXRlZFR5cGVfaAor
I2RlZmluZSBXZWJDb3JlX0ZXRF9TcGVjdWxhdGVkVHlwZV9oCisjaW5jbHVkZSA8SmF2YVNjcmlw
dENvcmUvU3BlY3VsYXRlZFR5cGUuaD4KKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvRm9yd2FyZGluZ0hlYWRlcnMvZG9taml0L0RPTUpJVFNpZ25hdHVyZS5oIGIvU291cmNlL1dl
YkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvZG9taml0L0RPTUpJVFNpZ25hdHVyZS5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjcyMDAyN2Y2ZTA4ZTM4MzBlMzUxYjFjOWNkMzJmMjAzMTI5ZDJiNWQKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy9kb21qaXQvRE9NSklUU2ln
bmF0dXJlLmgKQEAgLTAsMCArMSwyOSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViQ29yZV9GV0RfRE9NSklUU2lnbmF0dXJlX2gKKyNk
ZWZpbmUgV2ViQ29yZV9GV0RfRE9NSklUU2lnbmF0dXJlX2gKKyNpbmNsdWRlIDxKYXZhU2NyaXB0
Q29yZS9ET01KSVRTaWduYXR1cmUuaD4KKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDNlMDkzN2E0NjcwYjdmZTMwZDlh
NjM3YTFlMzYyMTJiZTRkNzUzNWQuLjg3ODBlZjUwNzFiZjE0MTk4NDNjMjYxZmFhOTc3NTc5MjIz
YWUyNjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKQEAgLTYyMTYsMTIgKzYyMTYsMTMgQEAKIAkJRTMxNTBFQTcxREE3MjE5MzAwMTk0
MDEyIC8qIERPTUpJVEhlbHBlcnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEUzMTUwRUE1MURBNzIxOEQwMDE5NDAxMiAvKiBET01KSVRIZWxwZXJzLmgg
Ki87IH07CiAJCUUzMTgwMzlEMURDNDAwOTkwMDk5MzJDMiAvKiBKU0R5bmFtaWNEb3duY2FzdC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTNBNTg3MkUx
REMzRjUyNjAwRjYwN0E2IC8qIEpTRHluYW1pY0Rvd25jYXN0LmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTM1NjVCN0IxREMyRDZDOTAwMjE3REJE
IC8qIEpTRXZlbnRDdXN0b20uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEUzNEVFNDlGMURDMkQ1NzUwMEVBQTlEMyAvKiBKU0V2ZW50Q3VzdG9tLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJRTM1Q0ExNEQx
REJDM0EzRjAwRjgzNTE2IC8qIERPTUpJVEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM1Q0ExNEIxREJDM0Ez
QzAwRjgzNTE2IC8qIERPTUpJVEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuY3BwICovOyB9OwotCQlF
MzVDQTE0RTFEQkMzQTQyMDBGODM1MTYgLyogRE9NSklUQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM1Q0ExNEMx
REJDM0EzQzAwRjgzNTE2IC8qIERPTUpJVEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaCAqLzsgfTsK
KwkJRTM1ODAyQjYxREM4NDM1RDAwQTk3NzNDIC8qIERPTUpJVElETFR5cGVGaWx0ZXIuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzNTgwMkI1MURDODQz
NTgwMEE5NzczQyAvKiBET01KSVRJRExUeXBlRmlsdGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTM3N0ZFNEQxREFERTE2NTAwQ0REMDI1IC8q
IE5vZGVDb25zdGFudHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEUzRDA0OTkzMURBREMwNDUwMDcxOEYzQyAvKiBOb2RlQ29uc3RhbnRzLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTM4ODM4OTgxQkFE
MTQ1RjAwRDYyRUUzIC8qIFNjcmlwdE1vZHVsZUxvYWRlci5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzg4Mzg5NDFCQUQxNDVGMDBENjJFRTMgLyog
U2NyaXB0TW9kdWxlTG9hZGVyLmNwcCAqLzsgfTsKIAkJRTM4ODM4OTkxQkFEMTQ1RjAwRDYyRUUz
IC8qIFNjcmlwdE1vZHVsZUxvYWRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRTM4ODM4OTUxQkFEMTQ1RjAwRDYyRUUzIC8qIFNjcmlwdE1vZHVsZUxv
YWRlci5oICovOyB9OwogCQlFMzk4RkMyNDFEQzMyQTIwMDAzQzQ2ODQgLyogRE9NSklUSGVscGVy
cy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzk4
RkMyMzFEQzMyQTFCMDAzQzQ2ODQgLyogRE9NSklUSGVscGVycy5jcHAgKi87IH07CisJCUUzQTc3
NjY3MURDODVEMjgwMEI2OTBEOCAvKiBET01KSVRJRExDb252ZXJ0LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFM0E3NzY2NTFEQzg1RDIyMDBCNjkwRDgg
LyogRE9NSklUSURMQ29udmVydC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CisJCUUzQTc3NjY4MURDODVEMjgwMEI2OTBEOCAvKiBET01KSVRJRExUeXBl
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFM0E3NzY2
NjFEQzg1RDIyMDBCNjkwRDggLyogRE9NSklUSURMVHlwZS5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUUzQjJGMEVCMUQ3RjRDOUQwMEIwQzlEMSAv
KiBMb2FkYWJsZUNsYXNzaWNTY3JpcHQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRTNCMkYwRTMxRDdGMzVFQzAwQjBDOUQxIC8qIExvYWRhYmxlQ2xh
c3NpY1NjcmlwdC5jcHAgKi87IH07CiAJCUUzQjJGMEVDMUQ3RjRDQTEwMEIwQzlEMSAvKiBMb2Fk
YWJsZVNjcmlwdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBFM0IyRjBFOTFEN0YzRDNDMDBCMEM5RDEgLyogTG9hZGFibGVTY3JpcHQuY3BwICovOyB9
OwogCQlFM0IyRjBFRDFEN0Y0Q0EzMDBCMEM5RDEgLyogTG9hZGFibGVTY3JpcHQuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzQjJGMEU3MUQ3RjM1RUMw
MEIwQzlEMSAvKiBMb2FkYWJsZVNjcmlwdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CkBAIC0xNDA3NiwxMyArMTQwNzcsMTUgQEAKIAkJRTFGRjhGNkEx
ODBEQjVCRTAwMTMyNjc0IC8qIENyeXB0b0FsZ29yaXRobVJlZ2lzdHJ5LmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENyeXB0b0FsZ29yaXRobVJlZ2lzdHJ5LmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTFGRjhGNkIxODBEQjVCRTAwMTMyNjc0IC8q
IENyeXB0b0FsZ29yaXRobVJlZ2lzdHJ5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IENyeXB0b0FsZ29yaXRobVJlZ2lzdHJ5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUUzMTUwRUE1MURBNzIxOEQwMDE5NDAxMiAvKiBET01KSVRIZWxwZXJzLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERPTUpJVEhlbHBlcnMuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJRTMzNDgyNUUxREM5M0FBMDAwOUM5NTQ0IC8qIERPTUpJVEFic3RyYWN0
SGVhcFJlcG9zaXRvcnkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRE9NSklU
QWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlF
MzRFRTQ5RjFEQzJENTc1MDBFQUE5RDMgLyogSlNFdmVudEN1c3RvbS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBKU0V2ZW50Q3VzdG9tLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07Ci0JCUUzNUNBMTRCMURCQzNBM0MwMEY4MzUxNiAvKiBET01KSVRBYnN0cmFjdEhlYXBS
ZXBvc2l0b3J5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERPTUpJ
VEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owot
CQlFMzVDQTE0QzFEQkMzQTNDMDBGODM1MTYgLyogRE9NSklUQWJzdHJhY3RIZWFwUmVwb3NpdG9y
eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBET01KSVRBYnN0cmFjdEhlYXBS
ZXBvc2l0b3J5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzNTgwMkI1MURDODQz
NTgwMEE5NzczQyAvKiBET01KSVRJRExUeXBlRmlsdGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IERPTUpJVElETFR5cGVGaWx0ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJRTM4ODM4OTQxQkFEMTQ1RjAwRDYyRUUzIC8qIFNjcmlwdE1vZHVsZUxvYWRlci5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTY3JpcHRNb2R1bGVMb2Fk
ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzg4Mzg5NTFCQUQxNDVGMDBE
NjJFRTMgLyogU2NyaXB0TW9kdWxlTG9hZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFNjcmlwdE1vZHVsZUxvYWRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlFMzk4RkMyMzFEQzMyQTFCMDAzQzQ2ODQgLyogRE9NSklUSGVscGVycy5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBET01KSVRIZWxwZXJzLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTNBNTg3MkUxREMzRjUyNjAwRjYwN0E2IC8qIEpTRHluYW1p
Y0Rvd25jYXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTRHluYW1pY0Rv
d25jYXN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzQTc3NjY1MURDODVEMjIw
MEI2OTBEOCAvKiBET01KSVRJRExDb252ZXJ0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IERPTUpJVElETENvbnZlcnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
RTNBNzc2NjYxREM4NUQyMjAwQjY5MEQ4IC8qIERPTUpJVElETFR5cGUuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gRE9NSklUSURMVHlwZS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlFM0FGQTk2NDFEQTZFOTA4MDAyODYxQkQgLyogSlNOb2RlRE9NSklULmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTTm9kZURPTUpJVC5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzQjJGMEUzMUQ3RjM1RUMwMEIwQzlEMSAvKiBM
b2FkYWJsZUNsYXNzaWNTY3JpcHQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gTG9hZGFibGVDbGFzc2ljU2NyaXB0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJRTNCMkYwRTQxRDdGMzVFQzAwQjBDOUQxIC8qIExvYWRhYmxlQ2xhc3NpY1NjcmlwdC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBMb2FkYWJsZUNsYXNzaWNTY3JpcHQu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE3MjgwLDYgKzE3MjgzLDcgQEAKIAkJ
CQk2NTY1ODE0NzA5RDEzMDQzMDAwRTYxRDcgLyogQ1NTVmFsdWVLZXl3b3Jkcy5ncGVyZiAqLywK
IAkJCQk2NTY1ODE0ODA5RDEzMDQzMDAwRTYxRDcgLyogQ1NTVmFsdWVLZXl3b3Jkcy5oICovLAog
CQkJCTlCM0E4ODcxMTQ1NjMyRjkwMDNBRThGNSAvKiBET01ET01TZXR0YWJsZVRva2VuTGlzdC5o
ICovLAorCQkJCUUzMzQ4MjVFMURDOTNBQTAwMDlDOTU0NCAvKiBET01KSVRBYnN0cmFjdEhlYXBS
ZXBvc2l0b3J5LmggKi8sCiAJCQkJRTFDNkNGQzIxNzQ2RDI5MzAwN0I4N0ExIC8qIERPTVdpbmRv
d0NvbnN0cnVjdG9ycy5pZGwgKi8sCiAJCQkJOTcwQjcyQTUxNDUwMDhFQjAwRjAwQTM3IC8qIEV2
ZW50SGVhZGVycy5oICovLAogCQkJCTk3MEI3Mjg5MTQ0RkZBQzYwMEYwMEEzNyAvKiBFdmVudElu
dGVyZmFjZXMuaCAqLywKQEAgLTIyODk3LDExICsyMjkwMSwxMiBAQAogCQlFM0FGQTk2MzFEQTZF
OEFGMDAyODYxQkQgLyogZG9taml0ICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGls
ZHJlbiA9ICgKLQkJCQlFMzVDQTE0QjFEQkMzQTNDMDBGODM1MTYgLyogRE9NSklUQWJzdHJhY3RI
ZWFwUmVwb3NpdG9yeS5jcHAgKi8sCi0JCQkJRTM1Q0ExNEMxREJDM0EzQzAwRjgzNTE2IC8qIERP
TUpJVEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaCAqLywKIAkJCQlFM0M5OUEwODFEQzNENDE3MDA3
OTRBRDMgLyogRE9NSklUQ2hlY2tET00uaCAqLywKIAkJCQlFMzk4RkMyMzFEQzMyQTFCMDAzQzQ2
ODQgLyogRE9NSklUSGVscGVycy5jcHAgKi8sCiAJCQkJRTMxNTBFQTUxREE3MjE4RDAwMTk0MDEy
IC8qIERPTUpJVEhlbHBlcnMuaCAqLywKKwkJCQlFM0E3NzY2NTFEQzg1RDIyMDBCNjkwRDggLyog
RE9NSklUSURMQ29udmVydC5oICovLAorCQkJCUUzQTc3NjY2MURDODVEMjIwMEI2OTBEOCAvKiBE
T01KSVRJRExUeXBlLmggKi8sCisJCQkJRTM1ODAyQjUxREM4NDM1ODAwQTk3NzNDIC8qIERPTUpJ
VElETFR5cGVGaWx0ZXIuaCAqLywKIAkJCQlFM0I3QzA2MjFEQzM0MTVBMDAxRkIwQjggLyogSlNE
b2N1bWVudERPTUpJVC5jcHAgKi8sCiAJCQkJRTNBRkE5NjQxREE2RTkwODAwMjg2MUJEIC8qIEpT
Tm9kZURPTUpJVC5jcHAgKi8sCiAJCQkpOwpAQCAtMjU3NjgsNiArMjU3NzMsNyBAQAogCQkJCTQ2
MENCRjM2MUQ0QkNEMEUwMDkyRTg4RSAvKiBKU0RPTVdpbmRvd1Byb3BlcnRpZXMuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUJDQkZCNTNEMERDRDI5Q0YwMDE5QjNFNSAvKiBKU0RPTVdpbmRvd1NoZWxs
LmggaW4gSGVhZGVycyAqLywKIAkJCQk2NUUwRTk0NDExMzNDODlGMDBCNENCMTAgLyogSlNET01X
cmFwcGVyLmggaW4gSGVhZGVycyAqLywKKwkJCQlFM0E3NzY2NzFEQzg1RDI4MDBCNjkwRDggLyog
RE9NSklUSURMQ29udmVydC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkQ3ODY4QkExMzZCOTk5MjAw
RDQwM0RGIC8qIEpTRHluYW1pY3NDb21wcmVzc29yTm9kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
NjVERjMxRkEwOUQxQ0M2MDAwMEJFMzI1IC8qIEpTRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQURFQzc4RjgxOEVFNTMwODAwMTMxNUMyIC8qIEpTRWxlbWVudEN1c3RvbS5oIGluIEhlYWRl
cnMgKi8sCkBAIC0yNzMzMyw2ICsyNzMzOSw3IEBACiAJCQkJMDg1MjVFNjMxMjc4QzAwMTAwQTg0
Nzc4IC8qIFNWR0FuaW1hdGVkU3RhdGljUHJvcGVydHlUZWFyT2ZmLmggaW4gSGVhZGVycyAqLywK
IAkJCQkwODREQjU5QjEyODAwOENDMDAyQTZENjQgLyogU1ZHQW5pbWF0ZWRTdHJpbmcuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTA4MjUwOTM5MTI4QkQ0RDgwMEUyRUQ4RSAvKiBTVkdBbmltYXRlZFRy
YW5zZm9ybUxpc3QuaCBpbiBIZWFkZXJzICovLAorCQkJCUUzQTc3NjY4MURDODVEMjgwMEI2OTBE
OCAvKiBET01KSVRJRExUeXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwODVBMTU5MzEyODlBOERE
MDAyNzEwRTMgLyogU1ZHQW5pbWF0ZWRUcmFuc2Zvcm1MaXN0UHJvcGVydHlUZWFyT2ZmLmggaW4g
SGVhZGVycyAqLywKIAkJCQk0MzlEMzM0MzEzQTY5MTFDMDBDMjBGNEYgLyogU1ZHQW5pbWF0ZWRU
eXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MzlEMzM0NDEzQTY5MTFDMDBDMjBGNEYgLyogU1ZH
QW5pbWF0ZWRUeXBlQW5pbWF0b3IuaCBpbiBIZWFkZXJzICovLApAQCAtMjc4NzAsNiArMjc4Nzcs
NyBAQAogCQkJCTk3QUFCRDIzMTRGQTA5RDUwMDc0NTdBRSAvKiBXZWJTb2NrZXRFeHRlbnNpb25E
aXNwYXRjaGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk0QTVBMkFEQzE2MUU3RTAwMDA1ODg5REQg
LyogV2ViU29ja2V0RXh0ZW5zaW9uUGFyc2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQk5N0FBQkQy
NDE0RkEwOUQ1MDA3NDU3QUUgLyogV2ViU29ja2V0RXh0ZW5zaW9uUHJvY2Vzc29yLmggaW4gSGVh
ZGVycyAqLywKKwkJCQlFMzU4MDJCNjFEQzg0MzVEMDBBOTc3M0MgLyogRE9NSklUSURMVHlwZUZp
bHRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTdBQUJEMjUxNEZBMDlENTAwNzQ1N0FFIC8qIFdl
YlNvY2tldEZyYW1lLmggaW4gSGVhZGVycyAqLywKIAkJCQk5N0FBQkQyNzE0RkEwOUQ1MDA3NDU3
QUUgLyogV2ViU29ja2V0SGFuZHNoYWtlLmggaW4gSGVhZGVycyAqLywKIAkJCQkzMURFQTQ1NjFC
MzlGNEQ5MDBGNzcxNzggLyogV2ViU3lzdGVtQmFja2Ryb3BMYXllci5oIGluIEhlYWRlcnMgKi8s
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVj
dC5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuaAppbmRl
eCBjMTgxZjlhMTZmNTUzMGJkOTUzZGJmNWYxYzE1ZjEzYTYyNGZhMTJjLi41ZGMxZWU0MGM5ODU0
MGU4YzQ3MDViNzA5NTc1OWZmY2ZjMjVkYTBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmgKQEAgLTgxLDcgKzgxLDcgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogICAgIHB1YmxpYzoKICAgICAgICAgfkpTRE9NR2xvYmFsT2JqZWN0KCk7CiAKLSAg
ICAgICAgc3RhdGljIGNvbnN0IEpTQzo6Q2xhc3NJbmZvKiBpbmZvKCkgeyByZXR1cm4gJnNfaW5m
bzsgfQorICAgICAgICBzdGF0aWMgY29uc3RleHByIGNvbnN0IEpTQzo6Q2xhc3NJbmZvKiBpbmZv
KCkgeyByZXR1cm4gJnNfaW5mbzsgfQogCiAgICAgICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSog
Y3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAg
ICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVH
ZW5lcmF0b3JKUy5wbSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVy
YXRvckpTLnBtCmluZGV4IGYwZTQyODc5MTc0OWY0NWIxYjQ3NjQ5YjYxZTE0N2ZhN2ZiZGJhNWQu
LjA0ZGY5Yjg2ZGZmNjhhZmQ0MzExYWRjNDhmMjExYmI0NmY2MjZhNDQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCkBAIC0xNDcx
LDcgKzE0NzEsNyBAQCBzdWIgR2VuZXJhdGVIZWFkZXIKICAgICAgICAgcHVzaChAaGVhZGVyQ29u
dGVudCwgInByb3RlY3RlZDpcbiIpOwogICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAg
IHN0YXRpYyBjb25zdCBKU0M6OkNsYXNzSW5mbyBzX2luZm87XG4iKTsKICAgICAgICAgcHVzaChA
aGVhZGVyQ29udGVudCwgInB1YmxpYzpcbiIpOwotICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50
LCAiICAgIHN0YXRpYyBjb25zdCBKU0M6OkNsYXNzSW5mbyogaW5mbygpIHsgcmV0dXJuICZzX2lu
Zm87IH1cblxuIik7CisgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgc3RhdGljIGNv
bnN0ZXhwciBjb25zdCBKU0M6OkNsYXNzSW5mbyogaW5mbygpIHsgcmV0dXJuICZzX2luZm87IH1c
blxuIik7CiAgICAgfSBlbHNlIHsKICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIlxuIik7
CiAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgREVDTEFSRV9JTkZPO1xuXG4iKTsK
QEAgLTE5MjUsNyArMTkyNSwxMSBAQCBzdWIgR2VuZXJhdGVQcm9wZXJ0aWVzSGFzaFRhYmxlCiAg
ICAgICAgICMgRklYTUU6IFJlbW92ZSB0aGlzIG9uY2Ugd2UgY2FuIGdldCByaWQgb2YgdGhlIHF1
aXJrIGludHJvZHVjZWQgaW4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE2Mzk2Ny4KICAgICAgICAgJGZ1bmN0aW9uTGVuZ3RoID0gMyBpZiAkaW50ZXJmYWNlTmFtZSBl
cSAiRXZlbnQiIGFuZCAkZnVuY3Rpb24tPm5hbWUgZXEgImluaXRFdmVudCI7CiAKLSAgICAgICAg
cHVzaChAJGhhc2hWYWx1ZTIsICRmdW5jdGlvbkxlbmd0aCk7CisgICAgICAgIGlmICgkZnVuY3Rp
b24tPmV4dGVuZGVkQXR0cmlidXRlcy0+e0RPTUpJVH0pIHsKKyAgICAgICAgICAgIHB1c2goQCRo
YXNoVmFsdWUyLCAiJkRPTUpJVFNpZ25hdHVyZUZvciIgLiAkaW50ZXJmYWNlLT50eXBlLT5uYW1l
IC4gJGNvZGVHZW5lcmF0b3ItPldLX3VjZmlyc3QoJGZ1bmN0aW9uLT5uYW1lKSk7CisgICAgICAg
IH0gZWxzZSB7CisgICAgICAgICAgICBwdXNoKEAkaGFzaFZhbHVlMiwgJGZ1bmN0aW9uTGVuZ3Ro
KTsKKyAgICAgICAgfQogCiAgICAgICAgIHB1c2goQCRoYXNoU3BlY2lhbHMsIENvbXB1dGVGdW5j
dGlvblNwZWNpYWwoJGludGVyZmFjZSwgJGZ1bmN0aW9uKSk7CiAKQEAgLTI1NDEsMzkgKzI1NDUs
MjggQEAgc3ViIGFkZFVuc2NvcGFibGVQcm9wZXJ0aWVzCiAgICAgcHVzaChAaW1wbENvbnRlbnQs
ICIgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPnVu
c2NvcGFibGVzU3ltYm9sLCAmdW5zY29wYWJsZXMsIERvbnRFbnVtIHwgUmVhZE9ubHkpO1xuIik7
CiB9CiAKLXN1YiBHZXRSZXN1bHRUeXBlRmlsdGVyCitzdWIgR2V0VW5zYWZlQXJndW1lbnRUeXBl
CiB7Ci0gICAgbXkgKCR0eXBlKSA9IEBfOworICAgIG15ICgkaW50ZXJmYWNlLCAkdHlwZSkgPSBA
XzsKIAotICAgIG15ICVUeXBlRmlsdGVycyA9ICgKLSAgICAgICAgImFueSIgPT4gIlNwZWNIZWFw
VG9wIiwKLSAgICAgICAgImJvb2xlYW4iID0+ICJTcGVjQm9vbGVhbiIsCi0gICAgICAgICJieXRl
IiA9PiAiU3BlY0ludDMyT25seSIsCi0gICAgICAgICJvY3RldCIgPT4gIlNwZWNJbnQzMk9ubHki
LAotICAgICAgICAic2hvcnQiID0+ICJTcGVjSW50MzJPbmx5IiwKLSAgICAgICAgInVuc2lnbmVk
IHNob3J0IiA9PiAiU3BlY0ludDMyT25seSIsCi0gICAgICAgICJsb25nIiA9PiAiU3BlY0ludDMy
T25seSIsCi0gICAgICAgICJ1bnNpZ25lZCBsb25nIiA9PiAiU3BlY0J5dGVjb2RlTnVtYmVyIiwK
LSAgICAgICAgImxvbmcgbG9uZyIgPT4gIlNwZWNCeXRlY29kZU51bWJlciIsCi0gICAgICAgICJ1
bnNpZ25lZCBsb25nIGxvbmciID0+ICJTcGVjQnl0ZWNvZGVOdW1iZXIiLAotICAgICAgICAiZmxv
YXQiID0+ICJTcGVjQnl0ZWNvZGVOdW1iZXIiLAotICAgICAgICAidW5yZXN0cmljdGVkIGZsb2F0
IiA9PiAiU3BlY0J5dGVjb2RlTnVtYmVyIiwKLSAgICAgICAgImRvdWJsZSIgPT4gIlNwZWNCeXRl
Y29kZU51bWJlciIsCi0gICAgICAgICJ1bnJlc3RyaWN0ZWQgZG91YmxlIiA9PiAiU3BlY0J5dGVj
b2RlTnVtYmVyIiwKLSAgICAgICAgIkRPTVN0cmluZyIgPT4gIlNwZWNTdHJpbmciLAotICAgICAg
ICAiQnl0ZVN0cmluZyIgPT4gIlNwZWNTdHJpbmciLAotICAgICAgICAiVVNWU3RyaW5nIiA9PiAi
U3BlY1N0cmluZyIsCi0gICAgKTsKKyAgICBteSAkSURMVHlwZSA9IEdldElETFR5cGUoJGludGVy
ZmFjZSwgJHR5cGUpOworICAgIHJldHVybiAiRE9NSklUOjpJRExKU0FyZ3VtZW50VHlwZTwke0lE
TFR5cGV9PiI7Cit9CiAKLSAgICBpZiAoZXhpc3RzICRUeXBlRmlsdGVyc3skdHlwZS0+bmFtZX0p
IHsKLSAgICAgICAgbXkgJHJlc3VsdFR5cGUgPSAiSlNDOjokVHlwZUZpbHRlcnN7JHR5cGUtPm5h
bWV9IjsKLSAgICAgICAgaWYgKCR0eXBlLT5pc051bGxhYmxlKSB7Ci0gICAgICAgICAgICBkaWUg
IlwiYW55XCIgdHlwZSBtdXN0IG5vdCBiZWNvbWUgbnVsbGFibGUuIiBpZiAkdHlwZS0+bmFtZSBl
cSAiYW55IjsKLSAgICAgICAgICAgICRyZXN1bHRUeXBlID0gIigkcmVzdWx0VHlwZSB8IEpTQzo6
U3BlY090aGVyKSI7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuICRyZXN1bHRUeXBlOwotICAg
IH0KLSAgICByZXR1cm4gIlNwZWNIZWFwVG9wIjsKK3N1YiBHZXRBcmd1bWVudFR5cGVGaWx0ZXIK
K3sKKyAgICBteSAoJGludGVyZmFjZSwgJHR5cGUpID0gQF87CisKKyAgICBteSAkSURMVHlwZSA9
IEdldElETFR5cGUoJGludGVyZmFjZSwgJHR5cGUpOworICAgIHJldHVybiAiRE9NSklUOjpJRExB
cmd1bWVudFR5cGVGaWx0ZXI8JHtJRExUeXBlfT46OnZhbHVlIjsKK30KKworc3ViIEdldFJlc3Vs
dFR5cGVGaWx0ZXIKK3sKKyAgICBteSAoJGludGVyZmFjZSwgJHR5cGUpID0gQF87CisKKyAgICBt
eSAkSURMVHlwZSA9IEdldElETFR5cGUoJGludGVyZmFjZSwgJHR5cGUpOworICAgIHJldHVybiAi
RE9NSklUOjpJRExSZXN1bHRUeXBlRmlsdGVyPCR7SURMVHlwZX0+Ojp2YWx1ZSI7CiB9CiAKIHN1
YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCkBAIC0yNjQ0LDYgKzI2MzcsMTcgQEAgc3ViIEdlbmVy
YXRlSW1wbGVtZW50YXRpb24KICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiI2lmICR7
Y29uZGl0aW9uYWxTdHJpbmd9XG4iKSBpZiAkY29uZGl0aW9uYWxTdHJpbmc7CiAgICAgICAgICAg
ICBteSAkZnVuY3Rpb25OYW1lID0gR2V0RnVuY3Rpb25OYW1lKCRpbnRlcmZhY2UsICRjbGFzc05h
bWUsICRmdW5jdGlvbik7CiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIkpTQzo6RW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCAke2Z1bmN0aW9uTmFtZX0oSlNDOjpFeGVjU3RhdGUq
KTtcbiIpOworICAgICAgICAgICAgaWYgKCRmdW5jdGlvbi0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57
RE9NSklUfSkgeworICAgICAgICAgICAgICAgICRpbXBsSW5jbHVkZXN7IkRPTUpJVElETFR5cGUu
aCJ9ID0gMTsKKyAgICAgICAgICAgICAgICBteSAkdW5zYWZlRnVuY3Rpb25OYW1lID0gInVuc2Fm
ZSIgLiAkY29kZUdlbmVyYXRvci0+V0tfdWNmaXJzdCgkZnVuY3Rpb25OYW1lKTsKKyAgICAgICAg
ICAgICAgICBteSAkZnVuY3Rpb25TaWduYXR1cmUgPSAiSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMICR7dW5zYWZlRnVuY3Rpb25OYW1lfShKU0M6OkV4ZWNTdGF0ZSosICRjbGFzc05h
bWUqIjsKKyAgICAgICAgICAgICAgICBmb3JlYWNoIG15ICRhcmd1bWVudCAoQHskZnVuY3Rpb24t
PmFyZ3VtZW50c30pIHsKKyAgICAgICAgICAgICAgICAgICAgbXkgJHR5cGUgPSAkYXJndW1lbnQt
PnR5cGU7CisgICAgICAgICAgICAgICAgICAgIG15ICRhcmd1bWVudFR5cGUgPSBHZXRVbnNhZmVB
cmd1bWVudFR5cGUoJGludGVyZmFjZSwgJHR5cGUpOworICAgICAgICAgICAgICAgICAgICAkZnVu
Y3Rpb25TaWduYXR1cmUgLj0gIiwgJHthcmd1bWVudFR5cGV9IjsKKyAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICRmdW5jdGlvblNpZ25hdHVyZSAu
ICIpO1xuIik7CisgICAgICAgICAgICB9CiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwg
IiNlbmRpZlxuIikgaWYgJGNvbmRpdGlvbmFsU3RyaW5nOwogICAgICAgICB9CiAKQEAgLTI2ODAs
NiArMjY4NCwzNyBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICAgICBwdXNoKEBp
bXBsQ29udGVudCwgIlxuIik7CiAgICAgfQogCisgICAgaWYgKCRudW1GdW5jdGlvbnMgPiAwKSB7
CisgICAgICAgIGZvcmVhY2ggbXkgJGZ1bmN0aW9uIChAZnVuY3Rpb25zKSB7CisgICAgICAgICAg
ICBuZXh0IHVubGVzcyAkZnVuY3Rpb24tPmV4dGVuZGVkQXR0cmlidXRlcy0+e0RPTUpJVH07Cisg
ICAgICAgICAgICAkaW1wbEluY2x1ZGVzeyJET01KSVRJRExUeXBlRmlsdGVyLmgifSA9IDE7Cisg
ICAgICAgICAgICAkaW1wbEluY2x1ZGVzeyJET01KSVRDaGVja0RPTS5oIn0gPSAxOworICAgICAg
ICAgICAgJGltcGxJbmNsdWRlc3siRE9NSklUQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5oIn0gPSAx
OworCisgICAgICAgICAgICBteSAkaXNPdmVybG9hZGVkID0gJGZ1bmN0aW9uLT57b3ZlcmxvYWRz
fSAmJiBAeyRmdW5jdGlvbi0+e292ZXJsb2Fkc319ID4gMTsKKyAgICAgICAgICAgIGRpZSAiT3Zl
cmxvYWRzIGlzIG5vdCBzdXBwb3J0ZWQgaW4gRE9NSklUIiBpZiAkaXNPdmVybG9hZGVkOworICAg
ICAgICAgICAgZGllICJDdXJyZW50bHkgUmVhZERPTSB2YWx1ZSBpcyBvbmx5IGFsbG93ZWQiIHVu
bGVzcyAkY29kZUdlbmVyYXRvci0+RXh0ZW5kZWRBdHRyaWJ1dGVDb250YWlucygkZnVuY3Rpb24t
PmV4dGVuZGVkQXR0cmlidXRlcy0+e0RPTUpJVH0sICJSZWFkRE9NIik7CisKKyAgICAgICAgICAg
IG15ICRpbnRlcmZhY2VOYW1lID0gJGludGVyZmFjZS0+dHlwZS0+bmFtZTsKKyAgICAgICAgICAg
IG15ICRmdW5jdGlvbk5hbWUgPSBHZXRGdW5jdGlvbk5hbWUoJGludGVyZmFjZSwgJGNsYXNzTmFt
ZSwgJGZ1bmN0aW9uKTsKKyAgICAgICAgICAgIG15ICR1bnNhZmVGdW5jdGlvbk5hbWUgPSAidW5z
YWZlIiAuICRjb2RlR2VuZXJhdG9yLT5XS191Y2ZpcnN0KCRmdW5jdGlvbk5hbWUpOworICAgICAg
ICAgICAgbXkgJGRvbUpJVFNpZ25hdHVyZU5hbWUgPSAiRE9NSklUU2lnbmF0dXJlRm9yIiAuICRp
bnRlcmZhY2UtPnR5cGUtPm5hbWUgLiAkY29kZUdlbmVyYXRvci0+V0tfdWNmaXJzdCgkZnVuY3Rp
b24tPm5hbWUpOworICAgICAgICAgICAgbXkgJGNsYXNzSW5mbyA9ICJKUyIgLiAkaW50ZXJmYWNl
LT50eXBlLT5uYW1lIC4gIjo6aW5mbygpIjsKKyAgICAgICAgICAgIG15ICRyZXN1bHRUeXBlID0g
R2V0UmVzdWx0VHlwZUZpbHRlcigkaW50ZXJmYWNlLCAkZnVuY3Rpb24tPnR5cGUpOworICAgICAg
ICAgICAgbXkgJGRvbUpJVFNpZ25hdHVyZSA9ICJzdGF0aWMgY29uc3QgSlNDOjpET01KSVQ6OlNp
Z25hdHVyZSAke2RvbUpJVFNpZ25hdHVyZU5hbWV9KCh1aW50cHRyX3QpJHt1bnNhZmVGdW5jdGlv
bk5hbWV9LCBET01KSVQ6OmNoZWNrRE9NPCRpbnRlcmZhY2VOYW1lPiwgJGNsYXNzSW5mbywgSlND
OjpET01KSVQ6OkVmZmVjdDo6Zm9yUmVhZChET01KSVQ6OkFic3RyYWN0SGVhcFJlcG9zaXRvcnk6
OkRPTSksICR7cmVzdWx0VHlwZX0iOworICAgICAgICAgICAgZm9yZWFjaCBteSAkYXJndW1lbnQg
KEB7JGZ1bmN0aW9uLT5hcmd1bWVudHN9KSB7CisgICAgICAgICAgICAgICAgbXkgJHR5cGUgPSAk
YXJndW1lbnQtPnR5cGU7CisgICAgICAgICAgICAgICAgbXkgJGFyZ3VtZW50VHlwZSA9IEdldEFy
Z3VtZW50VHlwZUZpbHRlcigkaW50ZXJmYWNlLCAkdHlwZSk7CisgICAgICAgICAgICAgICAgJGRv
bUpJVFNpZ25hdHVyZSAuPSAiLCAke2FyZ3VtZW50VHlwZX0iOworICAgICAgICAgICAgfQorICAg
ICAgICAgICAgbXkgJGNvbmRpdGlvbmFsU3RyaW5nID0gJGNvZGVHZW5lcmF0b3ItPkdlbmVyYXRl
Q29uZGl0aW9uYWxTdHJpbmcoJGZ1bmN0aW9uKTsKKyAgICAgICAgICAgIHB1c2goQGltcGxDb250
ZW50LCAiI2lmICR7Y29uZGl0aW9uYWxTdHJpbmd9XG4iKSBpZiAkY29uZGl0aW9uYWxTdHJpbmc7
CisgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgJGRvbUpJVFNpZ25hdHVyZSAuICIpO1xu
Iik7CisgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiNlbmRpZlxuIikgaWYgJGNvbmRp
dGlvbmFsU3RyaW5nOworICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJcbiIpOworICAg
ICAgICB9CisgICAgfQorCiAgICAgR2VuZXJhdGVQcm90b3R5cGVEZWNsYXJhdGlvbihcQGltcGxD
b250ZW50LCAkY2xhc3NOYW1lLCAkaW50ZXJmYWNlKSBpZiAhSGVhZGVyTmVlZHNQcm90b3R5cGVE
ZWNsYXJhdGlvbigkaW50ZXJmYWNlKTsKIAogICAgIEdlbmVyYXRlQ29uc3RydWN0b3JEZWNsYXJh
dGlvbihcQGltcGxDb250ZW50LCAkY2xhc3NOYW1lLCAkaW50ZXJmYWNlKSBpZiBOZWVkc0NvbnN0
cnVjdG9yUHJvcGVydHkoJGludGVyZmFjZSk7CkBAIC0yNzc2LDcgKzI4MTEsMTEgQEAgc3ViIEdl
bmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAgICAgICAgIHB1c2goQGhhc2hWYWx1ZTEsICRmdW5j
dGlvbk5hbWUpOwogCiAgICAgICAgICAgICBteSAkZnVuY3Rpb25MZW5ndGggPSBHZXRGdW5jdGlv
bkxlbmd0aCgkZnVuY3Rpb24pOwotICAgICAgICAgICAgcHVzaChAaGFzaFZhbHVlMiwgJGZ1bmN0
aW9uTGVuZ3RoKTsKKyAgICAgICAgICAgIGlmICgkZnVuY3Rpb24tPmV4dGVuZGVkQXR0cmlidXRl
cy0+e0RPTUpJVH0pIHsKKyAgICAgICAgICAgICAgICBwdXNoKEBoYXNoVmFsdWUyLCAiRE9NSklU
RnVuY3Rpb25Gb3IiIC4gJGludGVyZmFjZS0+dHlwZS0+bmFtZSAuICRjb2RlR2VuZXJhdG9yLT5X
S191Y2ZpcnN0KCRmdW5jdGlvbi0+bmFtZSkpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgICAgICAgICBwdXNoKEBoYXNoVmFsdWUyLCAkZnVuY3Rpb25MZW5ndGgpOworICAgICAgICAg
ICAgfQogCiAgICAgICAgICAgICBwdXNoKEBoYXNoU3BlY2lhbHMsIENvbXB1dGVGdW5jdGlvblNw
ZWNpYWwoJGludGVyZmFjZSwgJGZ1bmN0aW9uKSk7CiAKQEAgLTMzMzgsMTMgKzMzNzcsMTQgQEAg
c3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KIAogICAgICAgICAgICAgaWYgKCRhdHRyaWJ1dGUt
PmV4dGVuZGVkQXR0cmlidXRlcy0+eyJET01KSVQifSkgewogICAgICAgICAgICAgICAgICRpbXBs
SW5jbHVkZXN7Ijx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4ifSA9IDE7CisgICAgICAgICAgICAgICAg
JGltcGxJbmNsdWRlc3siRE9NSklUSURMVHlwZUZpbHRlci5oIn0gPSAxOwogICAgICAgICAgICAg
ICAgIG15ICRpbnRlcmZhY2VOYW1lID0gJGludGVyZmFjZS0+dHlwZS0+bmFtZTsKICAgICAgICAg
ICAgICAgICBteSAkYXR0cmlidXRlTmFtZSA9ICRhdHRyaWJ1dGUtPm5hbWU7CiAgICAgICAgICAg
ICAgICAgbXkgJGdlbmVyYXRvck5hbWUgPSAkaW50ZXJmYWNlTmFtZSAuICRjb2RlR2VuZXJhdG9y
LT5XS191Y2ZpcnN0KCRhdHRyaWJ1dGUtPm5hbWUpOwogICAgICAgICAgICAgICAgIG15ICRkb21K
SVRDbGFzc05hbWUgPSAkZ2VuZXJhdG9yTmFtZSAuICJET01KSVQiOwogICAgICAgICAgICAgICAg
IG15ICRnZXR0ZXIgPSBHZXRBdHRyaWJ1dGVHZXR0ZXJOYW1lKCRpbnRlcmZhY2UsICRnZW5lcmF0
b3JOYW1lLCAkYXR0cmlidXRlKTsKICAgICAgICAgICAgICAgICBteSAkc2V0dGVyID0gSXNSZWFk
b25seSgkYXR0cmlidXRlKSA/ICJudWxscHRyIiA6IEdldEF0dHJpYnV0ZVNldHRlck5hbWUoJGlu
dGVyZmFjZSwgJGdlbmVyYXRvck5hbWUsICRhdHRyaWJ1dGUpOwotICAgICAgICAgICAgICAgIG15
ICRyZXN1bHRUeXBlID0gR2V0UmVzdWx0VHlwZUZpbHRlcigkYXR0cmlidXRlLT50eXBlKTsKKyAg
ICAgICAgICAgICAgICBteSAkcmVzdWx0VHlwZSA9IEdldFJlc3VsdFR5cGVGaWx0ZXIoJGludGVy
ZmFjZSwgJGF0dHJpYnV0ZS0+dHlwZSk7CiAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsICIkZG9tSklUQ2xhc3NOYW1lOjokZG9tSklUQ2xhc3NOYW1lKClcbiIpOwogICAgICAgICAg
ICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIDogSlNDOjpET01KSVQ6OkdldHRlclNldHRl
cigkZ2V0dGVyLCAkc2V0dGVyLCAke2NsYXNzTmFtZX06OmluZm8oKSwgJHJlc3VsdFR5cGUpXG4i
KTsKICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIntcbiIpOwpAQCAtMzgzOCw2
ICszODc4LDc4IEBAIEVORAogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBwdXNoKEBpbXBs
Q29udGVudCwgIn1cblxuIik7CisKKyAgICAgICAgICAgIGlmICgkZnVuY3Rpb24tPmV4dGVuZGVk
QXR0cmlidXRlcy0+e0RPTUpJVH0pIHsKKyAgICAgICAgICAgICAgICAkaW1wbEluY2x1ZGVzeyI8
aW50ZXJwcmV0ZXIvRnJhbWVUcmFjZXJzLmg+In0gPSAxOworICAgICAgICAgICAgICAgIG15ICR1
bnNhZmVGdW5jdGlvbk5hbWUgPSAidW5zYWZlIiAuICRjb2RlR2VuZXJhdG9yLT5XS191Y2ZpcnN0
KCRmdW5jdGlvbk5hbWUpOworICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiSlND
OjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMICR7dW5zYWZlRnVuY3Rpb25OYW1lfShKU0M6
OkV4ZWNTdGF0ZSogc3RhdGUsICRjbGFzc05hbWUqIGNhc3RlZFRoaXMiKTsKKyAgICAgICAgICAg
ICAgICBmb3JlYWNoIG15ICRhcmd1bWVudCAoQHskZnVuY3Rpb24tPmFyZ3VtZW50c30pIHsKKyAg
ICAgICAgICAgICAgICAgICAgbXkgJHR5cGUgPSAkYXJndW1lbnQtPnR5cGU7CisgICAgICAgICAg
ICAgICAgICAgIG15ICRhcmd1bWVudFR5cGUgPSBHZXRVbnNhZmVBcmd1bWVudFR5cGUoJGludGVy
ZmFjZSwgJHR5cGUpOworICAgICAgICAgICAgICAgICAgICBteSAkbmFtZSA9ICRhcmd1bWVudC0+
bmFtZTsKKyAgICAgICAgICAgICAgICAgICAgbXkgJGVuY29kZWROYW1lID0gImVuY29kZWQiIC4g
JGNvZGVHZW5lcmF0b3ItPldLX3VjZmlyc3QoJG5hbWUpOworICAgICAgICAgICAgICAgICAgICBw
dXNoKEBpbXBsQ29udGVudCwgIiwgJHthcmd1bWVudFR5cGV9ICR7ZW5jb2RlZE5hbWV9Iik7Cisg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiKVxu
Iik7CisgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ7XG4iKTsKKyAgICAgICAg
ICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBVTlVTRURfUEFSQU0oc3RhdGUpO1xuIik7
CisgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgVk0mIHZtID0gc3RhdGUt
PnZtKCk7XG4iKTsKKyAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBKU0M6
Ok5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIoJnZtLCBzdGF0ZSk7XG4iKTsKKyAgICAgICAg
ICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTtcbiIpOworICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50
LCAiICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTtcbiIpOworICAgICAgICAgICAgICAgIHB1
c2goQGltcGxDb250ZW50LCAiICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7
XG4iKTsKKyAgICAgICAgICAgICAgICBteSBAYXJndW1lbnRzOworICAgICAgICAgICAgICAgIG15
ICRpbXBsRnVuY3Rpb25OYW1lOworICAgICAgICAgICAgICAgIG15ICRpbXBsZW1lbnRlZEJ5ID0g
JGZ1bmN0aW9uLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntJbXBsZW1lbnRlZEJ5fTsKKworICAgICAg
ICAgICAgICAgIGlmICgkaW1wbGVtZW50ZWRCeSkgeworICAgICAgICAgICAgICAgICAgICBBZGRU
b0ltcGxJbmNsdWRlcygiJHtpbXBsZW1lbnRlZEJ5fS5oIiwgJGZ1bmN0aW9uLT5leHRlbmRlZEF0
dHJpYnV0ZXMtPntDb25kaXRpb25hbH0pOworICAgICAgICAgICAgICAgICAgICB1bnNoaWZ0KEBh
cmd1bWVudHMsICJpbXBsIikgaWYgISRmdW5jdGlvbi0+aXNTdGF0aWM7CisgICAgICAgICAgICAg
ICAgICAgICRpbXBsRnVuY3Rpb25OYW1lID0gIldlYkNvcmU6OiR7aW1wbGVtZW50ZWRCeX06OiR7
ZnVuY3Rpb25JbXBsZW1lbnRhdGlvbk5hbWV9IjsKKyAgICAgICAgICAgICAgICB9IGVsc2lmICgk
ZnVuY3Rpb24tPmlzU3RhdGljKSB7CisgICAgICAgICAgICAgICAgICAgICRpbXBsRnVuY3Rpb25O
YW1lID0gIiR7aW50ZXJmYWNlTmFtZX06OiR7ZnVuY3Rpb25JbXBsZW1lbnRhdGlvbk5hbWV9IjsK
KyAgICAgICAgICAgICAgICB9IGVsc2lmICgkc3ZnUHJvcGVydHlPckxpc3RQcm9wZXJ0eVR5cGUg
YW5kICEkc3ZnTGlzdFByb3BlcnR5VHlwZSkgeworICAgICAgICAgICAgICAgICAgICAkaW1wbEZ1
bmN0aW9uTmFtZSA9ICJwb2RJbXBsLiR7ZnVuY3Rpb25JbXBsZW1lbnRhdGlvbk5hbWV9IjsKKyAg
ICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAkaW1wbEZ1bmN0aW9u
TmFtZSA9ICJpbXBsLiR7ZnVuY3Rpb25JbXBsZW1lbnRhdGlvbk5hbWV9IjsKKyAgICAgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgICAgICBmb3JlYWNoIG15ICRhcmd1bWVudCAoQHskZnVuY3Rp
b24tPmFyZ3VtZW50c30pIHsKKyAgICAgICAgICAgICAgICAgICAgbXkgJHZhbHVlID0gIiI7Cisg
ICAgICAgICAgICAgICAgICAgIG15ICR0eXBlID0gJGFyZ3VtZW50LT50eXBlOworICAgICAgICAg
ICAgICAgICAgICBteSAkbmFtZSA9ICRhcmd1bWVudC0+bmFtZTsKKyAgICAgICAgICAgICAgICAg
ICAgbXkgJGVuY29kZWROYW1lID0gImVuY29kZWQiIC4gJGNvZGVHZW5lcmF0b3ItPldLX3VjZmly
c3QoJG5hbWUpOworICAgICAgICAgICAgICAgICAgICBteSAkbmF0aXZlVHlwZSA9IEdldE5hdGl2
ZVR5cGUoJGludGVyZmFjZSwgJGFyZ3VtZW50LT50eXBlKTsKKyAgICAgICAgICAgICAgICAgICAg
bXkgJGlzVGVhck9mZiA9ICRjb2RlR2VuZXJhdG9yLT5Jc1NWR1R5cGVOZWVkaW5nVGVhck9mZigk
dHlwZSkgJiYgJGludGVyZmFjZU5hbWUgIX4gL0xpc3QkLzsKKyAgICAgICAgICAgICAgICAgICAg
ZGllICJUZWFyT2ZmIHR5cGUgaXMgbm90IGFsbG93ZWQiIGlmICRpc1RlYXJPZmY7CisgICAgICAg
ICAgICAgICAgICAgIG15ICRzaG91bGRQYXNzQnlSZWZlcmVuY2UgPSBTaG91bGRQYXNzV3JhcHBl
ckJ5UmVmZXJlbmNlKCRhcmd1bWVudCwgJGludGVyZmFjZSk7CisKKyAgICAgICAgICAgICAgICAg
ICAgaWYgKCEkc2hvdWxkUGFzc0J5UmVmZXJlbmNlICYmICgkY29kZUdlbmVyYXRvci0+SXNXcmFw
cGVyVHlwZSgkdHlwZSkgfHwgJGNvZGVHZW5lcmF0b3ItPklzVHlwZWRBcnJheVR5cGUoJHR5cGUp
KSkgeworICAgICAgICAgICAgICAgICAgICAgICAgJGltcGxJbmNsdWRlc3siPHJ1bnRpbWUvRXJy
b3IuaD4ifSA9IDE7CisgICAgICAgICAgICAgICAgICAgICAgICBteSAoJG5hdGl2ZVZhbHVlLCAk
bWF5VGhyb3dFeGNlcHRpb24pID0gVW5zYWZlVG9OYXRpdmUoJGludGVyZmFjZSwgJGFyZ3VtZW50
LCAkZW5jb2RlZE5hbWUsICRmdW5jdGlvbi0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Q29uZGl0aW9u
YWx9KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICRu
YXRpdmVUeXBlICRuYW1lID0gbnVsbHB0cjtcbiIpOworICAgICAgICAgICAgICAgICAgICAgICAg
cHVzaChAaW1wbENvbnRlbnQsICIgICAgJG5hbWUgPSAkbmF0aXZlVmFsdWU7XG4iKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIFJFVFVSTl9JRl9FWENF
UFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7XG4iKSBpZiAkbWF5VGhyb3dFeGNl
cHRpb247CisgICAgICAgICAgICAgICAgICAgICAgICAkdmFsdWUgPSAiV1RGTW92ZSgkbmFtZSki
OworICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAg
bXkgKCRuYXRpdmVWYWx1ZSwgJG1heVRocm93RXhjZXB0aW9uKSA9IFVuc2FmZVRvTmF0aXZlKCRp
bnRlcmZhY2UsICRhcmd1bWVudCwgJGVuY29kZWROYW1lLCAkZnVuY3Rpb24tPmV4dGVuZGVkQXR0
cmlidXRlcy0+e0NvbmRpdGlvbmFsfSk7CisgICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBp
bXBsQ29udGVudCwgIiAgICBhdXRvICRuYW1lID0gJHtuYXRpdmVWYWx1ZX07XG4iKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICR2YWx1ZSA9ICJXVEZNb3ZlKCRuYW1lKSI7CisgICAgICAgICAg
ICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpO1xuIikgaWYgJG1heVRocm93RXhjZXB0aW9u
OworICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgaWYgKCRzaG91
bGRQYXNzQnlSZWZlcmVuY2UpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICR2YWx1ZSA9ICIq
JG5hbWUiOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIHB1c2go
QGFyZ3VtZW50cywgJHZhbHVlKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAg
bXkgJGZ1bmN0aW9uU3RyaW5nID0gIiRpbXBsRnVuY3Rpb25OYW1lKCIgLiBqb2luKCIsICIsIEBh
cmd1bWVudHMpIC4gIikiOworICAgICAgICAgICAgICAgICRmdW5jdGlvblN0cmluZyA9ICJwcm9w
YWdhdGVFeGNlcHRpb24oKnN0YXRlLCB0aHJvd1Njb3BlLCAkZnVuY3Rpb25TdHJpbmcpIiBpZiBO
ZWVkc0V4cGxpY2l0UHJvcGFnYXRlRXhjZXB0aW9uQ2FsbCgkZnVuY3Rpb24pOworICAgICAgICAg
ICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIEpTVmFsdWUgcmVzdWx0ID0gIiAuIE5hdGl2
ZVRvSlNWYWx1ZVVzaW5nUG9pbnRlcnMoJGZ1bmN0aW9uLCAxLCAkaW50ZXJmYWNlLCAkZnVuY3Rp
b25TdHJpbmcsICJjYXN0ZWRUaGlzIikgLiAiO1xuIik7CisgICAgICAgICAgICAgICAgcHVzaChA
aW1wbENvbnRlbnQsICIgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpO1xuIik7Cisg
ICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ9XG5cbiIpOworICAgICAgICAgICAg
fQorCiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiNlbmRpZlxuXG4iKSBpZiAkY29u
ZGl0aW9uYWw7CiAKICAgICAgICAgICAgICMgR2VuZXJhdGUgYSBmdW5jdGlvbiBkaXNwYXRjaGlu
ZyBjYWxsIHRvIHRoZSByZXN0IG9mIHRoZSBvdmVybG9hZHMuCkBAIC01MzI0LDYgKzU0MzYsNDYg
QEAgc3ViIEpTVmFsdWVUb05hdGl2ZQogICAgIHJldHVybiAoImNvbnZlcnQ8JElETFR5cGU+KCIg
LiBqb2luKCIsICIsIEBjb252ZXJzaW9uQXJndW1lbnRzKSAuICIpIiwgMSk7CiB9CiAKK3N1YiBV
bnNhZmVUb05hdGl2ZQoreworICAgIG15ICgkaW50ZXJmYWNlLCAkY29udGV4dCwgJHZhbHVlLCAk
Y29uZGl0aW9uYWwsICRzdGF0ZVBvaW50ZXIsICRzdGF0ZVJlZmVyZW5jZSwgJHRoaXNPYmplY3RS
ZWZlcmVuY2UpID0gQF87CisKKyAgICBhc3NlcnQoIkludmFsaWQgY29udGV4dCB0eXBlIikgaWYg
IUlzVmFsaWRDb250ZXh0Rm9ySlNWYWx1ZVRvTmF0aXZlKCRjb250ZXh0KTsKKworICAgIG15ICR0
eXBlID0gJGNvbnRleHQtPnR5cGU7CisKKyAgICAjIEZJWE1FOiBSZW1vdmUgdGhlc2UgMyB2YXJp
YWJsZXMgd2hlbiBhbGwgSlNWYWx1ZVRvTmF0aXZlIHVzZSByZWZlcmVuY2VzLgorICAgICRzdGF0
ZVBvaW50ZXIgPSAic3RhdGUiIHVubGVzcyAkc3RhdGVQb2ludGVyOworICAgICRzdGF0ZVJlZmVy
ZW5jZSA9ICIqc3RhdGUiIHVubGVzcyAkc3RhdGVSZWZlcmVuY2U7CisgICAgJHRoaXNPYmplY3RS
ZWZlcmVuY2UgPSAiKmNhc3RlZFRoaXMiIHVubGVzcyAkdGhpc09iamVjdFJlZmVyZW5jZTsKKwor
ICAgIEFkZFRvSW1wbEluY2x1ZGVzRm9ySURMVHlwZSgkdHlwZSwgJGNvbmRpdGlvbmFsKTsKKwor
ICAgICMgRklYTUU6IFN1cHBvcnQgbW9yZSB0eXBlcy4KKworICAgIGlmICgkdHlwZS0+bmFtZSBl
cSAiRE9NU3RyaW5nIikgeworICAgICAgICByZXR1cm4gKCJBdG9taWNTdHJpbmcoJHZhbHVlLT50
b0V4aXN0aW5nQXRvbWljU3RyaW5nKCRzdGF0ZVBvaW50ZXIpKSIsIDEpIGlmICRjb250ZXh0LT5l
eHRlbmRlZEF0dHJpYnV0ZXMtPntSZXF1aXJlc0V4aXN0aW5nQXRvbWljU3RyaW5nfTsKKyAgICAg
ICAgcmV0dXJuICgiJHZhbHVlLT50b0F0b21pY1N0cmluZygkc3RhdGVQb2ludGVyKSIsIDEpIGlm
ICRjb250ZXh0LT5leHRlbmRlZEF0dHJpYnV0ZXMtPntBdG9taWNTdHJpbmd9OworICAgIH0KKwor
ICAgIEFkZFRvSW1wbEluY2x1ZGVzKCJET01KSVRJRExDb252ZXJ0LmgiKTsKKworICAgIG15ICRJ
RExUeXBlID0gR2V0SURMVHlwZSgkaW50ZXJmYWNlLCAkdHlwZSk7CisKKyAgICBteSBAY29udmVy
c2lvbkFyZ3VtZW50cyA9ICgpOworICAgIHB1c2goQGNvbnZlcnNpb25Bcmd1bWVudHMsICIkc3Rh
dGVSZWZlcmVuY2UiKTsKKyAgICBwdXNoKEBjb252ZXJzaW9uQXJndW1lbnRzLCAiJHZhbHVlIik7
CisKKyAgICBteSBAY29udmVyc2lvblN0YXRpY0FyZ3VtZW50cyA9ICgpOworICAgIHB1c2goQGNv
bnZlcnNpb25TdGF0aWNBcmd1bWVudHMsIEdldEludGVnZXJDb252ZXJzaW9uQ29uZmlndXJhdGlv
bigkY29udGV4dCkpIGlmICRjb2RlR2VuZXJhdG9yLT5Jc0ludGVnZXJUeXBlKCR0eXBlKTsKKyAg
ICBwdXNoKEBjb252ZXJzaW9uU3RhdGljQXJndW1lbnRzLCBHZXRTdHJpbmdDb252ZXJzaW9uQ29u
ZmlndXJhdGlvbigkY29udGV4dCkpIGlmICRjb2RlR2VuZXJhdG9yLT5Jc1N0cmluZ1R5cGUoJHR5
cGUpOworCisgICAgaWYgKHNjYWxhcihAY29udmVyc2lvblN0YXRpY0FyZ3VtZW50cykgPiAwKSB7
CisgICAgICAgIHJldHVybiAoIkRPTUpJVDo6RGlyZWN0Q29udmVydGVyPCRJRExUeXBlPjo6ZGly
ZWN0Q29udmVydDwiIC4gam9pbigiLCAiLCBAY29udmVyc2lvblN0YXRpY0FyZ3VtZW50cykgLiAi
PigiIC4gam9pbigiLCAiLCBAY29udmVyc2lvbkFyZ3VtZW50cykgLiAiKSIsIDEpOworICAgIH0K
KyAgICByZXR1cm4gKCJET01KSVQ6OkRpcmVjdENvbnZlcnRlcjwkSURMVHlwZT46OmRpcmVjdENv
bnZlcnQoIiAuIGpvaW4oIiwgIiwgQGNvbnZlcnNpb25Bcmd1bWVudHMpIC4gIikiLCAxKTsKK30K
Kwogc3ViIE5hdGl2ZVRvSlNWYWx1ZURPTUNvbnZlcnROZWVkc1N0YXRlCiB7CiAgICAgbXkgKCR0
eXBlKSA9IEBfOwpAQCAtNTUwOCw3ICs1NjYwLDEwIEBAIHN1YiBHZW5lcmF0ZUhhc2hUYWJsZVZh
bHVlQXJyYXkKICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiI2lmICR7Y29uZGl0aW9u
YWxTdHJpbmd9XG4iKTsKICAgICAgICAgfQogCi0gICAgICAgIGlmICgiQCRzcGVjaWFsc1skaV0i
ID1+IG0vRnVuY3Rpb24vKSB7CisgICAgICAgIGlmICgiQCRzcGVjaWFsc1skaV0iID1+IG0vRE9N
SklURnVuY3Rpb24vKSB7CisgICAgICAgICAgICAkZmlyc3RUYXJnZXRUeXBlID0gInN0YXRpY19j
YXN0PE5hdGl2ZUZ1bmN0aW9uPiI7CisgICAgICAgICAgICAkc2Vjb25kVGFyZ2V0VHlwZSA9ICJz
dGF0aWNfY2FzdDxjb25zdCBKU0M6OkRPTUpJVDo6U2lnbmF0dXJlKj4iOworICAgICAgICB9IGVs
c2lmICgiQCRzcGVjaWFsc1skaV0iID1+IG0vRnVuY3Rpb24vKSB7CiAgICAgICAgICAgICAkZmly
c3RUYXJnZXRUeXBlID0gInN0YXRpY19jYXN0PE5hdGl2ZUZ1bmN0aW9uPiI7CiAgICAgICAgIH0g
ZWxzaWYgKCJAJHNwZWNpYWxzWyRpXSIgPX4gbS9CdWlsdGluLykgewogICAgICAgICAgICAgJGZp
cnN0VGFyZ2V0VHlwZSA9ICJzdGF0aWNfY2FzdDxCdWlsdGluR2VuZXJhdG9yPiI7CkBAIC02MTA2
LDYgKzYyNjEsOSBAQCBzdWIgQ29tcHV0ZUZ1bmN0aW9uU3BlY2lhbAogICAgIGVsc2UgewogICAg
ICAgICBwdXNoKEBzcGVjaWFscywgIkpTQzo6RnVuY3Rpb24iKTsKICAgICB9CisgICAgaWYgKCRm
dW5jdGlvbi0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkRPTUpJVCJ9KSB7CisgICAgICAgIHB1c2go
QHNwZWNpYWxzLCAiRE9NSklURnVuY3Rpb24iKSBpZiAkZnVuY3Rpb24tPmV4dGVuZGVkQXR0cmli
dXRlcy0+e0RPTUpJVH07CisgICAgfQogICAgIHJldHVybiAoQHNwZWNpYWxzID4gMCkgPyBqb2lu
KCIgfCAiLCBAc3BlY2lhbHMpIDogIjAiOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL0lETEF0dHJpYnV0ZXMudHh0IGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy9JRExBdHRyaWJ1dGVzLnR4dAppbmRleCBhMmU3NTQxNTkxY2UzZjU3NmU3
YTdkMmQ2ZDJmYzYyZGRkZmEwNDFjLi4xMzk4ZDk0M2ViY2U0ODJlMGQxMTRjOTIyZjBkNDkyMmY1
YjI1ODBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0lETEF0
dHJpYnV0ZXMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvSURMQXR0
cmlidXRlcy50eHQKQEAgLTUyLDcgKzUyLDcgQEAgQ3VzdG9tUHV0RnVuY3Rpb24KIEN1c3RvbVNl
dFByb3RvdHlwZQogQ3VzdG9tU2V0dGVyCiBDdXN0b21Ub0pTT2JqZWN0Ci1ET01KSVQKK0RPTUpJ
VD18UmVhZERPTQogRG9Ob3RDaGVja0NvbnN0YW50cwogRG9Ob3RDaGVja1NlY3VyaXR5CiBEb05v
dENoZWNrU2VjdXJpdHlPbkdldHRlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERPTUpJVC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RE9NSklULmNwcAppbmRleCAxNzg3ZTM1NTljOTE5
Mjk3YWQ1YzZiMTQ1ZjZmN2RiYTU2YTJlNTAwLi4wNTQwNzBhYWFiZjgwYWQyNWI4ZTZkNjExNjM5
NWU3NGU2NzAxOWI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0RE9NSklULmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0RE9NSklULmNwcApAQCAtMjEsMTAgKzIxLDIwIEBACiAjaW5j
bHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiSlNUZXN0RE9NSklULmgiCiAKKyNpbmNsdWRlICJE
T01KSVRBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmgiCisjaW5jbHVkZSAiRE9NSklUQ2hlY2tET00u
aCIKKyNpbmNsdWRlICJET01KSVRJRExDb252ZXJ0LmgiCisjaW5jbHVkZSAiRE9NSklUSURMVHlw
ZS5oIgorI2luY2x1ZGUgIkRPTUpJVElETFR5cGVGaWx0ZXIuaCIKKyNpbmNsdWRlICJFeGNlcHRp
b25Db2RlLmgiCiAjaW5jbHVkZSAiSlNCeXRlU3RyaW5nLmgiCiAjaW5jbHVkZSAiSlNET01CaW5k
aW5nLmgiCiAjaW5jbHVkZSAiSlNET01Db25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUgIkpTRE9NQ29u
dmVydC5oIgorI2luY2x1ZGUgIkpTRWxlbWVudC5oIgorI2luY2x1ZGUgIkpTTm9kZUxpc3QuaCIK
KyNpbmNsdWRlIDxpbnRlcnByZXRlci9GcmFtZVRyYWNlcnMuaD4KKyNpbmNsdWRlIDxydW50aW1l
L0Vycm9yLmg+CiAjaW5jbHVkZSA8d3RmL0dldFB0ci5oPgogI2luY2x1ZGUgPHd0Zi9OZXZlckRl
c3Ryb3llZC5oPgogCkBAIC0zMiw2ICs0MiwxOSBAQCB1c2luZyBuYW1lc3BhY2UgSlNDOwogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKKy8vIEZ1bmN0aW9ucworCitKU0M6OkVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwganNUZXN0RE9NSklUUHJvdG90eXBlRnVuY3Rpb25HZXRBdHRyaWJ1dGUo
SlNDOjpFeGVjU3RhdGUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCB1bnNh
ZmVKc1Rlc3RET01KSVRQcm90b3R5cGVGdW5jdGlvbkdldEF0dHJpYnV0ZShKU0M6OkV4ZWNTdGF0
ZSosIEpTVGVzdERPTUpJVCosIERPTUpJVDo6SURMSlNBcmd1bWVudFR5cGU8SURMRE9NU3RyaW5n
Pik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0RE9NSklUUHJvdG90
eXBlRnVuY3Rpb25JdGVtKEpTQzo6RXhlY1N0YXRlKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgdW5zYWZlSnNUZXN0RE9NSklUUHJvdG90eXBlRnVuY3Rpb25JdGVtKEpTQzo6
RXhlY1N0YXRlKiwgSlNUZXN0RE9NSklUKiwgRE9NSklUOjpJRExKU0FyZ3VtZW50VHlwZTxJRExV
bnNpZ25lZFNob3J0PiwgRE9NSklUOjpJRExKU0FyZ3VtZW50VHlwZTxJRExVbnNpZ25lZFNob3J0
Pik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0RE9NSklUUHJvdG90
eXBlRnVuY3Rpb25IYXNBdHRyaWJ1dGUoSlNDOjpFeGVjU3RhdGUqKTsKK0pTQzo6RW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCB1bnNhZmVKc1Rlc3RET01KSVRQcm90b3R5cGVGdW5jdGlvbkhh
c0F0dHJpYnV0ZShKU0M6OkV4ZWNTdGF0ZSosIEpTVGVzdERPTUpJVCopOworSlNDOjpFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdERPTUpJVFByb3RvdHlwZUZ1bmN0aW9uR2V0RWxl
bWVudEJ5SWQoSlNDOjpFeGVjU3RhdGUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCB1bnNhZmVKc1Rlc3RET01KSVRQcm90b3R5cGVGdW5jdGlvbkdldEVsZW1lbnRCeUlkKEpT
Qzo6RXhlY1N0YXRlKiwgSlNUZXN0RE9NSklUKiwgRE9NSklUOjpJRExKU0FyZ3VtZW50VHlwZTxJ
RExET01TdHJpbmc+KTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RE
T01KSVRQcm90b3R5cGVGdW5jdGlvbkdldEVsZW1lbnRzQnlOYW1lKEpTQzo6RXhlY1N0YXRlKik7
CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgdW5zYWZlSnNUZXN0RE9NSklUUHJv
dG90eXBlRnVuY3Rpb25HZXRFbGVtZW50c0J5TmFtZShKU0M6OkV4ZWNTdGF0ZSosIEpTVGVzdERP
TUpJVCosIERPTUpJVDo6SURMSlNBcmd1bWVudFR5cGU8SURMRE9NU3RyaW5nPik7CisKIC8vIEF0
dHJpYnV0ZXMKIAogSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RET01KSVRBbnlBdHRyKEpTQzo6
RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwpAQCAt
NzIsNiArOTUsMTYgQEAgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RET01KSVROb2RlTnVsbGFi
bGVBdHRyKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlMKIEpTQzo6RW5jb2RlZEpTVmFs
dWUganNUZXN0RE9NSklUQ29uc3RydWN0b3IoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRK
U1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7CiBib29sIHNldEpTVGVzdERPTUpJVENvbnN0cnVj
dG9yKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNW
YWx1ZSk7CiAKK3N0YXRpYyBjb25zdCBKU0M6OkRPTUpJVDo6U2lnbmF0dXJlIERPTUpJVFNpZ25h
dHVyZUZvclRlc3RET01KSVRHZXRBdHRyaWJ1dGUoKHVpbnRwdHJfdCl1bnNhZmVKc1Rlc3RET01K
SVRQcm90b3R5cGVGdW5jdGlvbkdldEF0dHJpYnV0ZSwgRE9NSklUOjpjaGVja0RPTTxUZXN0RE9N
SklUPiwgSlNUZXN0RE9NSklUOjppbmZvKCksIEpTQzo6RE9NSklUOjpFZmZlY3Q6OmZvclJlYWQo
RE9NSklUOjpBYnN0cmFjdEhlYXBSZXBvc2l0b3J5OjpET00pLCBET01KSVQ6OklETFJlc3VsdFR5
cGVGaWx0ZXI8SURMTnVsbGFibGU8SURMRE9NU3RyaW5nPj46OnZhbHVlLCBET01KSVQ6OklETEFy
Z3VtZW50VHlwZUZpbHRlcjxJRExET01TdHJpbmc+Ojp2YWx1ZSk7CisKK3N0YXRpYyBjb25zdCBK
U0M6OkRPTUpJVDo6U2lnbmF0dXJlIERPTUpJVFNpZ25hdHVyZUZvclRlc3RET01KSVRJdGVtKCh1
aW50cHRyX3QpdW5zYWZlSnNUZXN0RE9NSklUUHJvdG90eXBlRnVuY3Rpb25JdGVtLCBET01KSVQ6
OmNoZWNrRE9NPFRlc3RET01KSVQ+LCBKU1Rlc3RET01KSVQ6OmluZm8oKSwgSlNDOjpET01KSVQ6
OkVmZmVjdDo6Zm9yUmVhZChET01KSVQ6OkFic3RyYWN0SGVhcFJlcG9zaXRvcnk6OkRPTSksIERP
TUpJVDo6SURMUmVzdWx0VHlwZUZpbHRlcjxJRExET01TdHJpbmc+Ojp2YWx1ZSwgRE9NSklUOjpJ
RExBcmd1bWVudFR5cGVGaWx0ZXI8SURMVW5zaWduZWRTaG9ydD46OnZhbHVlLCBET01KSVQ6OklE
TEFyZ3VtZW50VHlwZUZpbHRlcjxJRExVbnNpZ25lZFNob3J0Pjo6dmFsdWUpOworCitzdGF0aWMg
Y29uc3QgSlNDOjpET01KSVQ6OlNpZ25hdHVyZSBET01KSVRTaWduYXR1cmVGb3JUZXN0RE9NSklU
SGFzQXR0cmlidXRlKCh1aW50cHRyX3QpdW5zYWZlSnNUZXN0RE9NSklUUHJvdG90eXBlRnVuY3Rp
b25IYXNBdHRyaWJ1dGUsIERPTUpJVDo6Y2hlY2tET008VGVzdERPTUpJVD4sIEpTVGVzdERPTUpJ
VDo6aW5mbygpLCBKU0M6OkRPTUpJVDo6RWZmZWN0Ojpmb3JSZWFkKERPTUpJVDo6QWJzdHJhY3RI
ZWFwUmVwb3NpdG9yeTo6RE9NKSwgRE9NSklUOjpJRExSZXN1bHRUeXBlRmlsdGVyPElETEJvb2xl
YW4+Ojp2YWx1ZSk7CisKK3N0YXRpYyBjb25zdCBKU0M6OkRPTUpJVDo6U2lnbmF0dXJlIERPTUpJ
VFNpZ25hdHVyZUZvclRlc3RET01KSVRHZXRFbGVtZW50QnlJZCgodWludHB0cl90KXVuc2FmZUpz
VGVzdERPTUpJVFByb3RvdHlwZUZ1bmN0aW9uR2V0RWxlbWVudEJ5SWQsIERPTUpJVDo6Y2hlY2tE
T008VGVzdERPTUpJVD4sIEpTVGVzdERPTUpJVDo6aW5mbygpLCBKU0M6OkRPTUpJVDo6RWZmZWN0
Ojpmb3JSZWFkKERPTUpJVDo6QWJzdHJhY3RIZWFwUmVwb3NpdG9yeTo6RE9NKSwgRE9NSklUOjpJ
RExSZXN1bHRUeXBlRmlsdGVyPElETEludGVyZmFjZTxFbGVtZW50Pj46OnZhbHVlLCBET01KSVQ6
OklETEFyZ3VtZW50VHlwZUZpbHRlcjxJRExET01TdHJpbmc+Ojp2YWx1ZSk7CisKK3N0YXRpYyBj
b25zdCBKU0M6OkRPTUpJVDo6U2lnbmF0dXJlIERPTUpJVFNpZ25hdHVyZUZvclRlc3RET01KSVRH
ZXRFbGVtZW50c0J5TmFtZSgodWludHB0cl90KXVuc2FmZUpzVGVzdERPTUpJVFByb3RvdHlwZUZ1
bmN0aW9uR2V0RWxlbWVudHNCeU5hbWUsIERPTUpJVDo6Y2hlY2tET008VGVzdERPTUpJVD4sIEpT
VGVzdERPTUpJVDo6aW5mbygpLCBKU0M6OkRPTUpJVDo6RWZmZWN0Ojpmb3JSZWFkKERPTUpJVDo6
QWJzdHJhY3RIZWFwUmVwb3NpdG9yeTo6RE9NKSwgRE9NSklUOjpJRExSZXN1bHRUeXBlRmlsdGVy
PElETEludGVyZmFjZTxOb2RlTGlzdD4+Ojp2YWx1ZSwgRE9NSklUOjpJRExBcmd1bWVudFR5cGVG
aWx0ZXI8SURMRE9NU3RyaW5nPjo6dmFsdWUpOworCiBjbGFzcyBKU1Rlc3RET01KSVRQcm90b3R5
cGUgOiBwdWJsaWMgSlNDOjpKU05vbkZpbmFsT2JqZWN0IHsKIHB1YmxpYzoKICAgICB1c2luZyBC
YXNlID0gSlNDOjpKU05vbkZpbmFsT2JqZWN0OwpAQCAtMTUzLDYgKzE4NiwxMSBAQCBzdGF0aWMg
Y29uc3QgSGFzaFRhYmxlVmFsdWUgSlNUZXN0RE9NSklUUHJvdG90eXBlVGFibGVWYWx1ZXNbXSA9
CiAgICAgeyAiYnl0ZVN0cmluZ051bGxhYmxlQXR0ciIsIFJlYWRPbmx5IHwgQ3VzdG9tQWNjZXNz
b3IgfCBET01KSVRBdHRyaWJ1dGUsIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2Fz
dDxET01KSVRHZXR0ZXJTZXR0ZXJHZW5lcmF0b3I+KGRvbUpJVEdldHRlclNldHRlckZvclRlc3RE
T01KSVRCeXRlU3RyaW5nTnVsbGFibGVBdHRyKSwgKGludHB0cl90KSAoMCkgfSB9LAogICAgIHsg
InVzdlN0cmluZ051bGxhYmxlQXR0ciIsIFJlYWRPbmx5IHwgQ3VzdG9tQWNjZXNzb3IgfCBET01K
SVRBdHRyaWJ1dGUsIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxET01KSVRH
ZXR0ZXJTZXR0ZXJHZW5lcmF0b3I+KGRvbUpJVEdldHRlclNldHRlckZvclRlc3RET01KSVRVc3ZT
dHJpbmdOdWxsYWJsZUF0dHIpLCAoaW50cHRyX3QpICgwKSB9IH0sCiAgICAgeyAibm9kZU51bGxh
YmxlQXR0ciIsIFJlYWRPbmx5IHwgQ3VzdG9tQWNjZXNzb3IgfCBET01KSVRBdHRyaWJ1dGUsIE5v
SW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxET01KSVRHZXR0ZXJTZXR0ZXJHZW5l
cmF0b3I+KGRvbUpJVEdldHRlclNldHRlckZvclRlc3RET01KSVROb2RlTnVsbGFibGVBdHRyKSwg
KGludHB0cl90KSAoMCkgfSB9LAorICAgIHsgImdldEF0dHJpYnV0ZSIsIEpTQzo6RnVuY3Rpb24g
fCBET01KSVRGdW5jdGlvbiwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PE5h
dGl2ZUZ1bmN0aW9uPihqc1Rlc3RET01KSVRQcm90b3R5cGVGdW5jdGlvbkdldEF0dHJpYnV0ZSks
IChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8Y29uc3QgSlNDOjpET01KSVQ6OlNpZ25hdHVyZSo+KCZE
T01KSVRTaWduYXR1cmVGb3JUZXN0RE9NSklUR2V0QXR0cmlidXRlKSB9IH0sCisgICAgeyAiaXRl
bSIsIEpTQzo6RnVuY3Rpb24gfCBET01KSVRGdW5jdGlvbiwgTm9JbnRyaW5zaWMsIHsgKGludHB0
cl90KXN0YXRpY19jYXN0PE5hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RET01KSVRQcm90b3R5cGVGdW5j
dGlvbkl0ZW0pLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PGNvbnN0IEpTQzo6RE9NSklUOjpTaWdu
YXR1cmUqPigmRE9NSklUU2lnbmF0dXJlRm9yVGVzdERPTUpJVEl0ZW0pIH0gfSwKKyAgICB7ICJo
YXNBdHRyaWJ1dGUiLCBKU0M6OkZ1bmN0aW9uIHwgRE9NSklURnVuY3Rpb24sIE5vSW50cmluc2lj
LCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxOYXRpdmVGdW5jdGlvbj4oanNUZXN0RE9NSklUUHJv
dG90eXBlRnVuY3Rpb25IYXNBdHRyaWJ1dGUpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PGNvbnN0
IEpTQzo6RE9NSklUOjpTaWduYXR1cmUqPigmRE9NSklUU2lnbmF0dXJlRm9yVGVzdERPTUpJVEhh
c0F0dHJpYnV0ZSkgfSB9LAorICAgIHsgImdldEVsZW1lbnRCeUlkIiwgSlNDOjpGdW5jdGlvbiB8
IERPTUpJVEZ1bmN0aW9uLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8TmF0
aXZlRnVuY3Rpb24+KGpzVGVzdERPTUpJVFByb3RvdHlwZUZ1bmN0aW9uR2V0RWxlbWVudEJ5SWQp
LCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PGNvbnN0IEpTQzo6RE9NSklUOjpTaWduYXR1cmUqPigm
RE9NSklUU2lnbmF0dXJlRm9yVGVzdERPTUpJVEdldEVsZW1lbnRCeUlkKSB9IH0sCisgICAgeyAi
Z2V0RWxlbWVudHNCeU5hbWUiLCBKU0M6OkZ1bmN0aW9uIHwgRE9NSklURnVuY3Rpb24sIE5vSW50
cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxOYXRpdmVGdW5jdGlvbj4oanNUZXN0RE9N
SklUUHJvdG90eXBlRnVuY3Rpb25HZXRFbGVtZW50c0J5TmFtZSksIChpbnRwdHJfdCkgc3RhdGlj
X2Nhc3Q8Y29uc3QgSlNDOjpET01KSVQ6OlNpZ25hdHVyZSo+KCZET01KSVRTaWduYXR1cmVGb3JU
ZXN0RE9NSklUR2V0RWxlbWVudHNCeU5hbWUpIH0gfSwKIH07CiAKIGNvbnN0IENsYXNzSW5mbyBK
U1Rlc3RET01KSVRQcm90b3R5cGU6OnNfaW5mbyA9IHsgIlRlc3RET01KSVRQcm90b3R5cGUiLCAm
QmFzZTo6c19pbmZvLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdERPTUpJVFByb3RvdHlw
ZSkgfTsKQEAgLTE4NSw2ICsyMjMsMTEgQEAgdGVtcGxhdGU8PiBpbmxpbmUgSlNUZXN0RE9NSklU
KiBCaW5kaW5nQ2FsbGVyPEpTVGVzdERPTUpJVD46OmNhc3RGb3JBdHRyaWJ1dGUoRXgKICAgICBy
ZXR1cm4ganNEeW5hbWljRG93bmNhc3Q8SlNUZXN0RE9NSklUKj4oSlNWYWx1ZTo6ZGVjb2RlKHRo
aXNWYWx1ZSkpOwogfQogCit0ZW1wbGF0ZTw+IGlubGluZSBKU1Rlc3RET01KSVQqIEJpbmRpbmdD
YWxsZXI8SlNUZXN0RE9NSklUPjo6Y2FzdEZvck9wZXJhdGlvbihFeGVjU3RhdGUmIHN0YXRlKQor
eworICAgIHJldHVybiBqc0R5bmFtaWNEb3duY2FzdDxKU1Rlc3RET01KSVQqPihzdGF0ZS50aGlz
VmFsdWUoKSk7Cit9CisKIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RET01KSVRBbnlBdHRy
R2V0dGVyKEV4ZWNTdGF0ZSYsIEpTVGVzdERPTUpJVCYsIFRocm93U2NvcGUmIHRocm93U2NvcGUp
OwogCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RET01KSVRBbnlBdHRyKEV4ZWNTdGF0ZSogc3RhdGUs
IEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQpAQCAtMjAyLDcgKzI0NSw3
IEBAIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RET01KSVRBbnlBdHRyR2V0dGVyKEV4ZWNT
dGF0ZSYgc3RhdGUsIEpTVGVzdERPTUpJVCYKIH0KIAogVGVzdERPTUpJVEFueUF0dHJET01KSVQ6
OlRlc3RET01KSVRBbnlBdHRyRE9NSklUKCkKLSAgICA6IEpTQzo6RE9NSklUOjpHZXR0ZXJTZXR0
ZXIoanNUZXN0RE9NSklUQW55QXR0ciwgbnVsbHB0ciwgSlNUZXN0RE9NSklUOjppbmZvKCksIEpT
Qzo6U3BlY0hlYXBUb3ApCisgICAgOiBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVyKGpzVGVzdERP
TUpJVEFueUF0dHIsIG51bGxwdHIsIEpTVGVzdERPTUpJVDo6aW5mbygpLCBET01KSVQ6OklETFJl
c3VsdFR5cGVGaWx0ZXI8SURMQW55Pjo6dmFsdWUpCiB7CiB9CiAKQEAgLTIyOSw3ICsyNzIsNyBA
QCBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0RE9NSklUQm9vbGVhbkF0dHJHZXR0ZXIoRXhl
Y1N0YXRlJiBzdGF0ZSwgSlNUZXN0RE9NSgogfQogCiBUZXN0RE9NSklUQm9vbGVhbkF0dHJET01K
SVQ6OlRlc3RET01KSVRCb29sZWFuQXR0ckRPTUpJVCgpCi0gICAgOiBKU0M6OkRPTUpJVDo6R2V0
dGVyU2V0dGVyKGpzVGVzdERPTUpJVEJvb2xlYW5BdHRyLCBudWxscHRyLCBKU1Rlc3RET01KSVQ6
OmluZm8oKSwgSlNDOjpTcGVjQm9vbGVhbikKKyAgICA6IEpTQzo6RE9NSklUOjpHZXR0ZXJTZXR0
ZXIoanNUZXN0RE9NSklUQm9vbGVhbkF0dHIsIG51bGxwdHIsIEpTVGVzdERPTUpJVDo6aW5mbygp
LCBET01KSVQ6OklETFJlc3VsdFR5cGVGaWx0ZXI8SURMQm9vbGVhbj46OnZhbHVlKQogewogfQog
CkBAIC0yNTYsNyArMjk5LDcgQEAgc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdERPTUpJVEJ5
dGVBdHRyR2V0dGVyKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVGVzdERPTUpJVCYKIH0KIAogVGVzdERP
TUpJVEJ5dGVBdHRyRE9NSklUOjpUZXN0RE9NSklUQnl0ZUF0dHJET01KSVQoKQotICAgIDogSlND
OjpET01KSVQ6OkdldHRlclNldHRlcihqc1Rlc3RET01KSVRCeXRlQXR0ciwgbnVsbHB0ciwgSlNU
ZXN0RE9NSklUOjppbmZvKCksIEpTQzo6U3BlY0ludDMyT25seSkKKyAgICA6IEpTQzo6RE9NSklU
OjpHZXR0ZXJTZXR0ZXIoanNUZXN0RE9NSklUQnl0ZUF0dHIsIG51bGxwdHIsIEpTVGVzdERPTUpJ
VDo6aW5mbygpLCBET01KSVQ6OklETFJlc3VsdFR5cGVGaWx0ZXI8SURMQnl0ZT46OnZhbHVlKQog
ewogfQogCkBAIC0yODMsNyArMzI2LDcgQEAgc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdERP
TUpJVE9jdGV0QXR0ckdldHRlcihFeGVjU3RhdGUmIHN0YXRlLCBKU1Rlc3RET01KSVQKIH0KIAog
VGVzdERPTUpJVE9jdGV0QXR0ckRPTUpJVDo6VGVzdERPTUpJVE9jdGV0QXR0ckRPTUpJVCgpCi0g
ICAgOiBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVyKGpzVGVzdERPTUpJVE9jdGV0QXR0ciwgbnVs
bHB0ciwgSlNUZXN0RE9NSklUOjppbmZvKCksIEpTQzo6U3BlY0ludDMyT25seSkKKyAgICA6IEpT
Qzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIoanNUZXN0RE9NSklUT2N0ZXRBdHRyLCBudWxscHRyLCBK
U1Rlc3RET01KSVQ6OmluZm8oKSwgRE9NSklUOjpJRExSZXN1bHRUeXBlRmlsdGVyPElETE9jdGV0
Pjo6dmFsdWUpCiB7CiB9CiAKQEAgLTMxMCw3ICszNTMsNyBAQCBzdGF0aWMgaW5saW5lIEpTVmFs
dWUganNUZXN0RE9NSklUU2hvcnRBdHRyR2V0dGVyKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVGVzdERP
TUpJVAogfQogCiBUZXN0RE9NSklUU2hvcnRBdHRyRE9NSklUOjpUZXN0RE9NSklUU2hvcnRBdHRy
RE9NSklUKCkKLSAgICA6IEpTQzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIoanNUZXN0RE9NSklUU2hv
cnRBdHRyLCBudWxscHRyLCBKU1Rlc3RET01KSVQ6OmluZm8oKSwgSlNDOjpTcGVjSW50MzJPbmx5
KQorICAgIDogSlNDOjpET01KSVQ6OkdldHRlclNldHRlcihqc1Rlc3RET01KSVRTaG9ydEF0dHIs
IG51bGxwdHIsIEpTVGVzdERPTUpJVDo6aW5mbygpLCBET01KSVQ6OklETFJlc3VsdFR5cGVGaWx0
ZXI8SURMU2hvcnQ+Ojp2YWx1ZSkKIHsKIH0KIApAQCAtMzM3LDcgKzM4MCw3IEBAIHN0YXRpYyBp
bmxpbmUgSlNWYWx1ZSBqc1Rlc3RET01KSVRVbnNpZ25lZFNob3J0QXR0ckdldHRlcihFeGVjU3Rh
dGUmIHN0YXRlLCBKU1RlCiB9CiAKIFRlc3RET01KSVRVbnNpZ25lZFNob3J0QXR0ckRPTUpJVDo6
VGVzdERPTUpJVFVuc2lnbmVkU2hvcnRBdHRyRE9NSklUKCkKLSAgICA6IEpTQzo6RE9NSklUOjpH
ZXR0ZXJTZXR0ZXIoanNUZXN0RE9NSklUVW5zaWduZWRTaG9ydEF0dHIsIG51bGxwdHIsIEpTVGVz
dERPTUpJVDo6aW5mbygpLCBKU0M6OlNwZWNJbnQzMk9ubHkpCisgICAgOiBKU0M6OkRPTUpJVDo6
R2V0dGVyU2V0dGVyKGpzVGVzdERPTUpJVFVuc2lnbmVkU2hvcnRBdHRyLCBudWxscHRyLCBKU1Rl
c3RET01KSVQ6OmluZm8oKSwgRE9NSklUOjpJRExSZXN1bHRUeXBlRmlsdGVyPElETFVuc2lnbmVk
U2hvcnQ+Ojp2YWx1ZSkKIHsKIH0KIApAQCAtMzY0LDcgKzQwNyw3IEBAIHN0YXRpYyBpbmxpbmUg
SlNWYWx1ZSBqc1Rlc3RET01KSVRMb25nQXR0ckdldHRlcihFeGVjU3RhdGUmIHN0YXRlLCBKU1Rl
c3RET01KSVQmCiB9CiAKIFRlc3RET01KSVRMb25nQXR0ckRPTUpJVDo6VGVzdERPTUpJVExvbmdB
dHRyRE9NSklUKCkKLSAgICA6IEpTQzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIoanNUZXN0RE9NSklU
TG9uZ0F0dHIsIG51bGxwdHIsIEpTVGVzdERPTUpJVDo6aW5mbygpLCBKU0M6OlNwZWNJbnQzMk9u
bHkpCisgICAgOiBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVyKGpzVGVzdERPTUpJVExvbmdBdHRy
LCBudWxscHRyLCBKU1Rlc3RET01KSVQ6OmluZm8oKSwgRE9NSklUOjpJRExSZXN1bHRUeXBlRmls
dGVyPElETExvbmc+Ojp2YWx1ZSkKIHsKIH0KIApAQCAtMzkxLDcgKzQzNCw3IEBAIHN0YXRpYyBp
bmxpbmUgSlNWYWx1ZSBqc1Rlc3RET01KSVRVbnNpZ25lZExvbmdBdHRyR2V0dGVyKEV4ZWNTdGF0
ZSYgc3RhdGUsIEpTVGVzCiB9CiAKIFRlc3RET01KSVRVbnNpZ25lZExvbmdBdHRyRE9NSklUOjpU
ZXN0RE9NSklUVW5zaWduZWRMb25nQXR0ckRPTUpJVCgpCi0gICAgOiBKU0M6OkRPTUpJVDo6R2V0
dGVyU2V0dGVyKGpzVGVzdERPTUpJVFVuc2lnbmVkTG9uZ0F0dHIsIG51bGxwdHIsIEpTVGVzdERP
TUpJVDo6aW5mbygpLCBKU0M6OlNwZWNCeXRlY29kZU51bWJlcikKKyAgICA6IEpTQzo6RE9NSklU
OjpHZXR0ZXJTZXR0ZXIoanNUZXN0RE9NSklUVW5zaWduZWRMb25nQXR0ciwgbnVsbHB0ciwgSlNU
ZXN0RE9NSklUOjppbmZvKCksIERPTUpJVDo6SURMUmVzdWx0VHlwZUZpbHRlcjxJRExVbnNpZ25l
ZExvbmc+Ojp2YWx1ZSkKIHsKIH0KIApAQCAtNDE4LDcgKzQ2MSw3IEBAIHN0YXRpYyBpbmxpbmUg
SlNWYWx1ZSBqc1Rlc3RET01KSVRMb25nTG9uZ0F0dHJHZXR0ZXIoRXhlY1N0YXRlJiBzdGF0ZSwg
SlNUZXN0RE9NCiB9CiAKIFRlc3RET01KSVRMb25nTG9uZ0F0dHJET01KSVQ6OlRlc3RET01KSVRM
b25nTG9uZ0F0dHJET01KSVQoKQotICAgIDogSlNDOjpET01KSVQ6OkdldHRlclNldHRlcihqc1Rl
c3RET01KSVRMb25nTG9uZ0F0dHIsIG51bGxwdHIsIEpTVGVzdERPTUpJVDo6aW5mbygpLCBKU0M6
OlNwZWNCeXRlY29kZU51bWJlcikKKyAgICA6IEpTQzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIoanNU
ZXN0RE9NSklUTG9uZ0xvbmdBdHRyLCBudWxscHRyLCBKU1Rlc3RET01KSVQ6OmluZm8oKSwgRE9N
SklUOjpJRExSZXN1bHRUeXBlRmlsdGVyPElETExvbmdMb25nPjo6dmFsdWUpCiB7CiB9CiAKQEAg
LTQ0NSw3ICs0ODgsNyBAQCBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0RE9NSklUVW5zaWdu
ZWRMb25nTG9uZ0F0dHJHZXR0ZXIoRXhlY1N0YXRlJiBzdGF0ZSwgSgogfQogCiBUZXN0RE9NSklU
VW5zaWduZWRMb25nTG9uZ0F0dHJET01KSVQ6OlRlc3RET01KSVRVbnNpZ25lZExvbmdMb25nQXR0
ckRPTUpJVCgpCi0gICAgOiBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVyKGpzVGVzdERPTUpJVFVu
c2lnbmVkTG9uZ0xvbmdBdHRyLCBudWxscHRyLCBKU1Rlc3RET01KSVQ6OmluZm8oKSwgSlNDOjpT
cGVjQnl0ZWNvZGVOdW1iZXIpCisgICAgOiBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVyKGpzVGVz
dERPTUpJVFVuc2lnbmVkTG9uZ0xvbmdBdHRyLCBudWxscHRyLCBKU1Rlc3RET01KSVQ6OmluZm8o
KSwgRE9NSklUOjpJRExSZXN1bHRUeXBlRmlsdGVyPElETFVuc2lnbmVkTG9uZ0xvbmc+Ojp2YWx1
ZSkKIHsKIH0KIApAQCAtNDcyLDcgKzUxNSw3IEBAIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rl
c3RET01KSVRGbG9hdEF0dHJHZXR0ZXIoRXhlY1N0YXRlJiBzdGF0ZSwgSlNUZXN0RE9NSklUCiB9
CiAKIFRlc3RET01KSVRGbG9hdEF0dHJET01KSVQ6OlRlc3RET01KSVRGbG9hdEF0dHJET01KSVQo
KQotICAgIDogSlNDOjpET01KSVQ6OkdldHRlclNldHRlcihqc1Rlc3RET01KSVRGbG9hdEF0dHIs
IG51bGxwdHIsIEpTVGVzdERPTUpJVDo6aW5mbygpLCBKU0M6OlNwZWNCeXRlY29kZU51bWJlcikK
KyAgICA6IEpTQzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIoanNUZXN0RE9NSklURmxvYXRBdHRyLCBu
dWxscHRyLCBKU1Rlc3RET01KSVQ6OmluZm8oKSwgRE9NSklUOjpJRExSZXN1bHRUeXBlRmlsdGVy
PElETEZsb2F0Pjo6dmFsdWUpCiB7CiB9CiAKQEAgLTQ5OSw3ICs1NDIsNyBAQCBzdGF0aWMgaW5s
aW5lIEpTVmFsdWUganNUZXN0RE9NSklUVW5yZXN0cmljdGVkRmxvYXRBdHRyR2V0dGVyKEV4ZWNT
dGF0ZSYgc3RhdGUsCiB9CiAKIFRlc3RET01KSVRVbnJlc3RyaWN0ZWRGbG9hdEF0dHJET01KSVQ6
OlRlc3RET01KSVRVbnJlc3RyaWN0ZWRGbG9hdEF0dHJET01KSVQoKQotICAgIDogSlNDOjpET01K
SVQ6OkdldHRlclNldHRlcihqc1Rlc3RET01KSVRVbnJlc3RyaWN0ZWRGbG9hdEF0dHIsIG51bGxw
dHIsIEpTVGVzdERPTUpJVDo6aW5mbygpLCBKU0M6OlNwZWNCeXRlY29kZU51bWJlcikKKyAgICA6
IEpTQzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIoanNUZXN0RE9NSklUVW5yZXN0cmljdGVkRmxvYXRB
dHRyLCBudWxscHRyLCBKU1Rlc3RET01KSVQ6OmluZm8oKSwgRE9NSklUOjpJRExSZXN1bHRUeXBl
RmlsdGVyPElETFVucmVzdHJpY3RlZEZsb2F0Pjo6dmFsdWUpCiB7CiB9CiAKQEAgLTUyNiw3ICs1
NjksNyBAQCBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0RE9NSklURG91YmxlQXR0ckdldHRl
cihFeGVjU3RhdGUmIHN0YXRlLCBKU1Rlc3RET01KSQogfQogCiBUZXN0RE9NSklURG91YmxlQXR0
ckRPTUpJVDo6VGVzdERPTUpJVERvdWJsZUF0dHJET01KSVQoKQotICAgIDogSlNDOjpET01KSVQ6
OkdldHRlclNldHRlcihqc1Rlc3RET01KSVREb3VibGVBdHRyLCBudWxscHRyLCBKU1Rlc3RET01K
SVQ6OmluZm8oKSwgSlNDOjpTcGVjQnl0ZWNvZGVOdW1iZXIpCisgICAgOiBKU0M6OkRPTUpJVDo6
R2V0dGVyU2V0dGVyKGpzVGVzdERPTUpJVERvdWJsZUF0dHIsIG51bGxwdHIsIEpTVGVzdERPTUpJ
VDo6aW5mbygpLCBET01KSVQ6OklETFJlc3VsdFR5cGVGaWx0ZXI8SURMRG91YmxlPjo6dmFsdWUp
CiB7CiB9CiAKQEAgLTU1Myw3ICs1OTYsNyBAQCBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0
RE9NSklUVW5yZXN0cmljdGVkRG91YmxlQXR0ckdldHRlcihFeGVjU3RhdGUmIHN0YXRlLAogfQog
CiBUZXN0RE9NSklUVW5yZXN0cmljdGVkRG91YmxlQXR0ckRPTUpJVDo6VGVzdERPTUpJVFVucmVz
dHJpY3RlZERvdWJsZUF0dHJET01KSVQoKQotICAgIDogSlNDOjpET01KSVQ6OkdldHRlclNldHRl
cihqc1Rlc3RET01KSVRVbnJlc3RyaWN0ZWREb3VibGVBdHRyLCBudWxscHRyLCBKU1Rlc3RET01K
SVQ6OmluZm8oKSwgSlNDOjpTcGVjQnl0ZWNvZGVOdW1iZXIpCisgICAgOiBKU0M6OkRPTUpJVDo6
R2V0dGVyU2V0dGVyKGpzVGVzdERPTUpJVFVucmVzdHJpY3RlZERvdWJsZUF0dHIsIG51bGxwdHIs
IEpTVGVzdERPTUpJVDo6aW5mbygpLCBET01KSVQ6OklETFJlc3VsdFR5cGVGaWx0ZXI8SURMVW5y
ZXN0cmljdGVkRG91YmxlPjo6dmFsdWUpCiB7CiB9CiAKQEAgLTU4MCw3ICs2MjMsNyBAQCBzdGF0
aWMgaW5saW5lIEpTVmFsdWUganNUZXN0RE9NSklURG9tU3RyaW5nQXR0ckdldHRlcihFeGVjU3Rh
dGUmIHN0YXRlLCBKU1Rlc3RETwogfQogCiBUZXN0RE9NSklURG9tU3RyaW5nQXR0ckRPTUpJVDo6
VGVzdERPTUpJVERvbVN0cmluZ0F0dHJET01KSVQoKQotICAgIDogSlNDOjpET01KSVQ6OkdldHRl
clNldHRlcihqc1Rlc3RET01KSVREb21TdHJpbmdBdHRyLCBudWxscHRyLCBKU1Rlc3RET01KSVQ6
OmluZm8oKSwgSlNDOjpTcGVjU3RyaW5nKQorICAgIDogSlNDOjpET01KSVQ6OkdldHRlclNldHRl
cihqc1Rlc3RET01KSVREb21TdHJpbmdBdHRyLCBudWxscHRyLCBKU1Rlc3RET01KSVQ6OmluZm8o
KSwgRE9NSklUOjpJRExSZXN1bHRUeXBlRmlsdGVyPElETERPTVN0cmluZz46OnZhbHVlKQogewog
fQogCkBAIC02MDcsNyArNjUwLDcgQEAgc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdERPTUpJ
VEJ5dGVTdHJpbmdBdHRyR2V0dGVyKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVGVzdEQKIH0KIAogVGVz
dERPTUpJVEJ5dGVTdHJpbmdBdHRyRE9NSklUOjpUZXN0RE9NSklUQnl0ZVN0cmluZ0F0dHJET01K
SVQoKQotICAgIDogSlNDOjpET01KSVQ6OkdldHRlclNldHRlcihqc1Rlc3RET01KSVRCeXRlU3Ry
aW5nQXR0ciwgbnVsbHB0ciwgSlNUZXN0RE9NSklUOjppbmZvKCksIEpTQzo6U3BlY1N0cmluZykK
KyAgICA6IEpTQzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIoanNUZXN0RE9NSklUQnl0ZVN0cmluZ0F0
dHIsIG51bGxwdHIsIEpTVGVzdERPTUpJVDo6aW5mbygpLCBET01KSVQ6OklETFJlc3VsdFR5cGVG
aWx0ZXI8SURMQnl0ZVN0cmluZz46OnZhbHVlKQogewogfQogCkBAIC02MzQsNyArNjc3LDcgQEAg
c3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdERPTUpJVFVzdlN0cmluZ0F0dHJHZXR0ZXIoRXhl
Y1N0YXRlJiBzdGF0ZSwgSlNUZXN0RE8KIH0KIAogVGVzdERPTUpJVFVzdlN0cmluZ0F0dHJET01K
SVQ6OlRlc3RET01KSVRVc3ZTdHJpbmdBdHRyRE9NSklUKCkKLSAgICA6IEpTQzo6RE9NSklUOjpH
ZXR0ZXJTZXR0ZXIoanNUZXN0RE9NSklUVXN2U3RyaW5nQXR0ciwgbnVsbHB0ciwgSlNUZXN0RE9N
SklUOjppbmZvKCksIEpTQzo6U3BlY1N0cmluZykKKyAgICA6IEpTQzo6RE9NSklUOjpHZXR0ZXJT
ZXR0ZXIoanNUZXN0RE9NSklUVXN2U3RyaW5nQXR0ciwgbnVsbHB0ciwgSlNUZXN0RE9NSklUOjpp
bmZvKCksIERPTUpJVDo6SURMUmVzdWx0VHlwZUZpbHRlcjxJRExVU1ZTdHJpbmc+Ojp2YWx1ZSkK
IHsKIH0KIApAQCAtNjYxLDcgKzcwNCw3IEBAIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RE
T01KSVROb2RlQXR0ckdldHRlcihFeGVjU3RhdGUmIHN0YXRlLCBKU1Rlc3RET01KSVQmCiB9CiAK
IFRlc3RET01KSVROb2RlQXR0ckRPTUpJVDo6VGVzdERPTUpJVE5vZGVBdHRyRE9NSklUKCkKLSAg
ICA6IEpTQzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIoanNUZXN0RE9NSklUTm9kZUF0dHIsIG51bGxw
dHIsIEpTVGVzdERPTUpJVDo6aW5mbygpLCBTcGVjSGVhcFRvcCkKKyAgICA6IEpTQzo6RE9NSklU
OjpHZXR0ZXJTZXR0ZXIoanNUZXN0RE9NSklUTm9kZUF0dHIsIG51bGxwdHIsIEpTVGVzdERPTUpJ
VDo6aW5mbygpLCBET01KSVQ6OklETFJlc3VsdFR5cGVGaWx0ZXI8SURMSW50ZXJmYWNlPE5vZGU+
Pjo6dmFsdWUpCiB7CiB9CiAKQEAgLTY4OCw3ICs3MzEsNyBAQCBzdGF0aWMgaW5saW5lIEpTVmFs
dWUganNUZXN0RE9NSklUQm9vbGVhbk51bGxhYmxlQXR0ckdldHRlcihFeGVjU3RhdGUmIHN0YXRl
LCBKUwogfQogCiBUZXN0RE9NSklUQm9vbGVhbk51bGxhYmxlQXR0ckRPTUpJVDo6VGVzdERPTUpJ
VEJvb2xlYW5OdWxsYWJsZUF0dHJET01KSVQoKQotICAgIDogSlNDOjpET01KSVQ6OkdldHRlclNl
dHRlcihqc1Rlc3RET01KSVRCb29sZWFuTnVsbGFibGVBdHRyLCBudWxscHRyLCBKU1Rlc3RET01K
SVQ6OmluZm8oKSwgKEpTQzo6U3BlY0Jvb2xlYW4gfCBKU0M6OlNwZWNPdGhlcikpCisgICAgOiBK
U0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVyKGpzVGVzdERPTUpJVEJvb2xlYW5OdWxsYWJsZUF0dHIs
IG51bGxwdHIsIEpTVGVzdERPTUpJVDo6aW5mbygpLCBET01KSVQ6OklETFJlc3VsdFR5cGVGaWx0
ZXI8SURMTnVsbGFibGU8SURMQm9vbGVhbj4+Ojp2YWx1ZSkKIHsKIH0KIApAQCAtNzE1LDcgKzc1
OCw3IEBAIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RET01KSVRCeXRlTnVsbGFibGVBdHRy
R2V0dGVyKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVGVzCiB9CiAKIFRlc3RET01KSVRCeXRlTnVsbGFi
bGVBdHRyRE9NSklUOjpUZXN0RE9NSklUQnl0ZU51bGxhYmxlQXR0ckRPTUpJVCgpCi0gICAgOiBK
U0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVyKGpzVGVzdERPTUpJVEJ5dGVOdWxsYWJsZUF0dHIsIG51
bGxwdHIsIEpTVGVzdERPTUpJVDo6aW5mbygpLCAoSlNDOjpTcGVjSW50MzJPbmx5IHwgSlNDOjpT
cGVjT3RoZXIpKQorICAgIDogSlNDOjpET01KSVQ6OkdldHRlclNldHRlcihqc1Rlc3RET01KSVRC
eXRlTnVsbGFibGVBdHRyLCBudWxscHRyLCBKU1Rlc3RET01KSVQ6OmluZm8oKSwgRE9NSklUOjpJ
RExSZXN1bHRUeXBlRmlsdGVyPElETE51bGxhYmxlPElETEJ5dGU+Pjo6dmFsdWUpCiB7CiB9CiAK
QEAgLTc0Miw3ICs3ODUsNyBAQCBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0RE9NSklUT2N0
ZXROdWxsYWJsZUF0dHJHZXR0ZXIoRXhlY1N0YXRlJiBzdGF0ZSwgSlNUZQogfQogCiBUZXN0RE9N
SklUT2N0ZXROdWxsYWJsZUF0dHJET01KSVQ6OlRlc3RET01KSVRPY3RldE51bGxhYmxlQXR0ckRP
TUpJVCgpCi0gICAgOiBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVyKGpzVGVzdERPTUpJVE9jdGV0
TnVsbGFibGVBdHRyLCBudWxscHRyLCBKU1Rlc3RET01KSVQ6OmluZm8oKSwgKEpTQzo6U3BlY0lu
dDMyT25seSB8IEpTQzo6U3BlY090aGVyKSkKKyAgICA6IEpTQzo6RE9NSklUOjpHZXR0ZXJTZXR0
ZXIoanNUZXN0RE9NSklUT2N0ZXROdWxsYWJsZUF0dHIsIG51bGxwdHIsIEpTVGVzdERPTUpJVDo6
aW5mbygpLCBET01KSVQ6OklETFJlc3VsdFR5cGVGaWx0ZXI8SURMTnVsbGFibGU8SURMT2N0ZXQ+
Pjo6dmFsdWUpCiB7CiB9CiAKQEAgLTc2OSw3ICs4MTIsNyBAQCBzdGF0aWMgaW5saW5lIEpTVmFs
dWUganNUZXN0RE9NSklUU2hvcnROdWxsYWJsZUF0dHJHZXR0ZXIoRXhlY1N0YXRlJiBzdGF0ZSwg
SlNUZQogfQogCiBUZXN0RE9NSklUU2hvcnROdWxsYWJsZUF0dHJET01KSVQ6OlRlc3RET01KSVRT
aG9ydE51bGxhYmxlQXR0ckRPTUpJVCgpCi0gICAgOiBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVy
KGpzVGVzdERPTUpJVFNob3J0TnVsbGFibGVBdHRyLCBudWxscHRyLCBKU1Rlc3RET01KSVQ6Omlu
Zm8oKSwgKEpTQzo6U3BlY0ludDMyT25seSB8IEpTQzo6U3BlY090aGVyKSkKKyAgICA6IEpTQzo6
RE9NSklUOjpHZXR0ZXJTZXR0ZXIoanNUZXN0RE9NSklUU2hvcnROdWxsYWJsZUF0dHIsIG51bGxw
dHIsIEpTVGVzdERPTUpJVDo6aW5mbygpLCBET01KSVQ6OklETFJlc3VsdFR5cGVGaWx0ZXI8SURM
TnVsbGFibGU8SURMU2hvcnQ+Pjo6dmFsdWUpCiB7CiB9CiAKQEAgLTc5Niw3ICs4MzksNyBAQCBz
dGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0RE9NSklUVW5zaWduZWRTaG9ydE51bGxhYmxlQXR0
ckdldHRlcihFeGVjU3RhdGUmIHN0YQogfQogCiBUZXN0RE9NSklUVW5zaWduZWRTaG9ydE51bGxh
YmxlQXR0ckRPTUpJVDo6VGVzdERPTUpJVFVuc2lnbmVkU2hvcnROdWxsYWJsZUF0dHJET01KSVQo
KQotICAgIDogSlNDOjpET01KSVQ6OkdldHRlclNldHRlcihqc1Rlc3RET01KSVRVbnNpZ25lZFNo
b3J0TnVsbGFibGVBdHRyLCBudWxscHRyLCBKU1Rlc3RET01KSVQ6OmluZm8oKSwgKEpTQzo6U3Bl
Y0ludDMyT25seSB8IEpTQzo6U3BlY090aGVyKSkKKyAgICA6IEpTQzo6RE9NSklUOjpHZXR0ZXJT
ZXR0ZXIoanNUZXN0RE9NSklUVW5zaWduZWRTaG9ydE51bGxhYmxlQXR0ciwgbnVsbHB0ciwgSlNU
ZXN0RE9NSklUOjppbmZvKCksIERPTUpJVDo6SURMUmVzdWx0VHlwZUZpbHRlcjxJRExOdWxsYWJs
ZTxJRExVbnNpZ25lZFNob3J0Pj46OnZhbHVlKQogewogfQogCkBAIC04MjMsNyArODY2LDcgQEAg
c3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdERPTUpJVExvbmdOdWxsYWJsZUF0dHJHZXR0ZXIo
RXhlY1N0YXRlJiBzdGF0ZSwgSlNUZXMKIH0KIAogVGVzdERPTUpJVExvbmdOdWxsYWJsZUF0dHJE
T01KSVQ6OlRlc3RET01KSVRMb25nTnVsbGFibGVBdHRyRE9NSklUKCkKLSAgICA6IEpTQzo6RE9N
SklUOjpHZXR0ZXJTZXR0ZXIoanNUZXN0RE9NSklUTG9uZ051bGxhYmxlQXR0ciwgbnVsbHB0ciwg
SlNUZXN0RE9NSklUOjppbmZvKCksIChKU0M6OlNwZWNJbnQzMk9ubHkgfCBKU0M6OlNwZWNPdGhl
cikpCisgICAgOiBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVyKGpzVGVzdERPTUpJVExvbmdOdWxs
YWJsZUF0dHIsIG51bGxwdHIsIEpTVGVzdERPTUpJVDo6aW5mbygpLCBET01KSVQ6OklETFJlc3Vs
dFR5cGVGaWx0ZXI8SURMTnVsbGFibGU8SURMTG9uZz4+Ojp2YWx1ZSkKIHsKIH0KIApAQCAtODUw
LDcgKzg5Myw3IEBAIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RET01KSVRVbnNpZ25lZExv
bmdOdWxsYWJsZUF0dHJHZXR0ZXIoRXhlY1N0YXRlJiBzdGF0CiB9CiAKIFRlc3RET01KSVRVbnNp
Z25lZExvbmdOdWxsYWJsZUF0dHJET01KSVQ6OlRlc3RET01KSVRVbnNpZ25lZExvbmdOdWxsYWJs
ZUF0dHJET01KSVQoKQotICAgIDogSlNDOjpET01KSVQ6OkdldHRlclNldHRlcihqc1Rlc3RET01K
SVRVbnNpZ25lZExvbmdOdWxsYWJsZUF0dHIsIG51bGxwdHIsIEpTVGVzdERPTUpJVDo6aW5mbygp
LCAoSlNDOjpTcGVjQnl0ZWNvZGVOdW1iZXIgfCBKU0M6OlNwZWNPdGhlcikpCisgICAgOiBKU0M6
OkRPTUpJVDo6R2V0dGVyU2V0dGVyKGpzVGVzdERPTUpJVFVuc2lnbmVkTG9uZ051bGxhYmxlQXR0
ciwgbnVsbHB0ciwgSlNUZXN0RE9NSklUOjppbmZvKCksIERPTUpJVDo6SURMUmVzdWx0VHlwZUZp
bHRlcjxJRExOdWxsYWJsZTxJRExVbnNpZ25lZExvbmc+Pjo6dmFsdWUpCiB7CiB9CiAKQEAgLTg3
Nyw3ICs5MjAsNyBAQCBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0RE9NSklUTG9uZ0xvbmdO
dWxsYWJsZUF0dHJHZXR0ZXIoRXhlY1N0YXRlJiBzdGF0ZSwgSgogfQogCiBUZXN0RE9NSklUTG9u
Z0xvbmdOdWxsYWJsZUF0dHJET01KSVQ6OlRlc3RET01KSVRMb25nTG9uZ051bGxhYmxlQXR0ckRP
TUpJVCgpCi0gICAgOiBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVyKGpzVGVzdERPTUpJVExvbmdM
b25nTnVsbGFibGVBdHRyLCBudWxscHRyLCBKU1Rlc3RET01KSVQ6OmluZm8oKSwgKEpTQzo6U3Bl
Y0J5dGVjb2RlTnVtYmVyIHwgSlNDOjpTcGVjT3RoZXIpKQorICAgIDogSlNDOjpET01KSVQ6Okdl
dHRlclNldHRlcihqc1Rlc3RET01KSVRMb25nTG9uZ051bGxhYmxlQXR0ciwgbnVsbHB0ciwgSlNU
ZXN0RE9NSklUOjppbmZvKCksIERPTUpJVDo6SURMUmVzdWx0VHlwZUZpbHRlcjxJRExOdWxsYWJs
ZTxJRExMb25nTG9uZz4+Ojp2YWx1ZSkKIHsKIH0KIApAQCAtOTA0LDcgKzk0Nyw3IEBAIHN0YXRp
YyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RET01KSVRVbnNpZ25lZExvbmdMb25nTnVsbGFibGVBdHRy
R2V0dGVyKEV4ZWNTdGF0ZSYKIH0KIAogVGVzdERPTUpJVFVuc2lnbmVkTG9uZ0xvbmdOdWxsYWJs
ZUF0dHJET01KSVQ6OlRlc3RET01KSVRVbnNpZ25lZExvbmdMb25nTnVsbGFibGVBdHRyRE9NSklU
KCkKLSAgICA6IEpTQzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIoanNUZXN0RE9NSklUVW5zaWduZWRM
b25nTG9uZ051bGxhYmxlQXR0ciwgbnVsbHB0ciwgSlNUZXN0RE9NSklUOjppbmZvKCksIChKU0M6
OlNwZWNCeXRlY29kZU51bWJlciB8IEpTQzo6U3BlY090aGVyKSkKKyAgICA6IEpTQzo6RE9NSklU
OjpHZXR0ZXJTZXR0ZXIoanNUZXN0RE9NSklUVW5zaWduZWRMb25nTG9uZ051bGxhYmxlQXR0ciwg
bnVsbHB0ciwgSlNUZXN0RE9NSklUOjppbmZvKCksIERPTUpJVDo6SURMUmVzdWx0VHlwZUZpbHRl
cjxJRExOdWxsYWJsZTxJRExVbnNpZ25lZExvbmdMb25nPj46OnZhbHVlKQogewogfQogCkBAIC05
MzEsNyArOTc0LDcgQEAgc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdERPTUpJVEZsb2F0TnVs
bGFibGVBdHRyR2V0dGVyKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVGUKIH0KIAogVGVzdERPTUpJVEZs
b2F0TnVsbGFibGVBdHRyRE9NSklUOjpUZXN0RE9NSklURmxvYXROdWxsYWJsZUF0dHJET01KSVQo
KQotICAgIDogSlNDOjpET01KSVQ6OkdldHRlclNldHRlcihqc1Rlc3RET01KSVRGbG9hdE51bGxh
YmxlQXR0ciwgbnVsbHB0ciwgSlNUZXN0RE9NSklUOjppbmZvKCksIChKU0M6OlNwZWNCeXRlY29k
ZU51bWJlciB8IEpTQzo6U3BlY090aGVyKSkKKyAgICA6IEpTQzo6RE9NSklUOjpHZXR0ZXJTZXR0
ZXIoanNUZXN0RE9NSklURmxvYXROdWxsYWJsZUF0dHIsIG51bGxwdHIsIEpTVGVzdERPTUpJVDo6
aW5mbygpLCBET01KSVQ6OklETFJlc3VsdFR5cGVGaWx0ZXI8SURMTnVsbGFibGU8SURMRmxvYXQ+
Pjo6dmFsdWUpCiB7CiB9CiAKQEAgLTk1OCw3ICsxMDAxLDcgQEAgc3RhdGljIGlubGluZSBKU1Zh
bHVlIGpzVGVzdERPTUpJVFVucmVzdHJpY3RlZEZsb2F0TnVsbGFibGVBdHRyR2V0dGVyKEV4ZWNT
dGF0ZSYKIH0KIAogVGVzdERPTUpJVFVucmVzdHJpY3RlZEZsb2F0TnVsbGFibGVBdHRyRE9NSklU
OjpUZXN0RE9NSklUVW5yZXN0cmljdGVkRmxvYXROdWxsYWJsZUF0dHJET01KSVQoKQotICAgIDog
SlNDOjpET01KSVQ6OkdldHRlclNldHRlcihqc1Rlc3RET01KSVRVbnJlc3RyaWN0ZWRGbG9hdE51
bGxhYmxlQXR0ciwgbnVsbHB0ciwgSlNUZXN0RE9NSklUOjppbmZvKCksIChKU0M6OlNwZWNCeXRl
Y29kZU51bWJlciB8IEpTQzo6U3BlY090aGVyKSkKKyAgICA6IEpTQzo6RE9NSklUOjpHZXR0ZXJT
ZXR0ZXIoanNUZXN0RE9NSklUVW5yZXN0cmljdGVkRmxvYXROdWxsYWJsZUF0dHIsIG51bGxwdHIs
IEpTVGVzdERPTUpJVDo6aW5mbygpLCBET01KSVQ6OklETFJlc3VsdFR5cGVGaWx0ZXI8SURMTnVs
bGFibGU8SURMVW5yZXN0cmljdGVkRmxvYXQ+Pjo6dmFsdWUpCiB7CiB9CiAKQEAgLTk4NSw3ICsx
MDI4LDcgQEAgc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdERPTUpJVERvdWJsZU51bGxhYmxl
QXR0ckdldHRlcihFeGVjU3RhdGUmIHN0YXRlLCBKU1QKIH0KIAogVGVzdERPTUpJVERvdWJsZU51
bGxhYmxlQXR0ckRPTUpJVDo6VGVzdERPTUpJVERvdWJsZU51bGxhYmxlQXR0ckRPTUpJVCgpCi0g
ICAgOiBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVyKGpzVGVzdERPTUpJVERvdWJsZU51bGxhYmxl
QXR0ciwgbnVsbHB0ciwgSlNUZXN0RE9NSklUOjppbmZvKCksIChKU0M6OlNwZWNCeXRlY29kZU51
bWJlciB8IEpTQzo6U3BlY090aGVyKSkKKyAgICA6IEpTQzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIo
anNUZXN0RE9NSklURG91YmxlTnVsbGFibGVBdHRyLCBudWxscHRyLCBKU1Rlc3RET01KSVQ6Omlu
Zm8oKSwgRE9NSklUOjpJRExSZXN1bHRUeXBlRmlsdGVyPElETE51bGxhYmxlPElETERvdWJsZT4+
Ojp2YWx1ZSkKIHsKIH0KIApAQCAtMTAxMiw3ICsxMDU1LDcgQEAgc3RhdGljIGlubGluZSBKU1Zh
bHVlIGpzVGVzdERPTUpJVFVucmVzdHJpY3RlZERvdWJsZU51bGxhYmxlQXR0ckdldHRlcihFeGVj
U3RhdGUKIH0KIAogVGVzdERPTUpJVFVucmVzdHJpY3RlZERvdWJsZU51bGxhYmxlQXR0ckRPTUpJ
VDo6VGVzdERPTUpJVFVucmVzdHJpY3RlZERvdWJsZU51bGxhYmxlQXR0ckRPTUpJVCgpCi0gICAg
OiBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVyKGpzVGVzdERPTUpJVFVucmVzdHJpY3RlZERvdWJs
ZU51bGxhYmxlQXR0ciwgbnVsbHB0ciwgSlNUZXN0RE9NSklUOjppbmZvKCksIChKU0M6OlNwZWNC
eXRlY29kZU51bWJlciB8IEpTQzo6U3BlY090aGVyKSkKKyAgICA6IEpTQzo6RE9NSklUOjpHZXR0
ZXJTZXR0ZXIoanNUZXN0RE9NSklUVW5yZXN0cmljdGVkRG91YmxlTnVsbGFibGVBdHRyLCBudWxs
cHRyLCBKU1Rlc3RET01KSVQ6OmluZm8oKSwgRE9NSklUOjpJRExSZXN1bHRUeXBlRmlsdGVyPElE
TE51bGxhYmxlPElETFVucmVzdHJpY3RlZERvdWJsZT4+Ojp2YWx1ZSkKIHsKIH0KIApAQCAtMTAz
OSw3ICsxMDgyLDcgQEAgc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdERPTUpJVERvbVN0cmlu
Z051bGxhYmxlQXR0ckdldHRlcihFeGVjU3RhdGUmIHN0YXRlLAogfQogCiBUZXN0RE9NSklURG9t
U3RyaW5nTnVsbGFibGVBdHRyRE9NSklUOjpUZXN0RE9NSklURG9tU3RyaW5nTnVsbGFibGVBdHRy
RE9NSklUKCkKLSAgICA6IEpTQzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIoanNUZXN0RE9NSklURG9t
U3RyaW5nTnVsbGFibGVBdHRyLCBudWxscHRyLCBKU1Rlc3RET01KSVQ6OmluZm8oKSwgKEpTQzo6
U3BlY1N0cmluZyB8IEpTQzo6U3BlY090aGVyKSkKKyAgICA6IEpTQzo6RE9NSklUOjpHZXR0ZXJT
ZXR0ZXIoanNUZXN0RE9NSklURG9tU3RyaW5nTnVsbGFibGVBdHRyLCBudWxscHRyLCBKU1Rlc3RE
T01KSVQ6OmluZm8oKSwgRE9NSklUOjpJRExSZXN1bHRUeXBlRmlsdGVyPElETE51bGxhYmxlPElE
TERPTVN0cmluZz4+Ojp2YWx1ZSkKIHsKIH0KIApAQCAtMTA2Niw3ICsxMTA5LDcgQEAgc3RhdGlj
IGlubGluZSBKU1ZhbHVlIGpzVGVzdERPTUpJVEJ5dGVTdHJpbmdOdWxsYWJsZUF0dHJHZXR0ZXIo
RXhlY1N0YXRlJiBzdGF0ZSwKIH0KIAogVGVzdERPTUpJVEJ5dGVTdHJpbmdOdWxsYWJsZUF0dHJE
T01KSVQ6OlRlc3RET01KSVRCeXRlU3RyaW5nTnVsbGFibGVBdHRyRE9NSklUKCkKLSAgICA6IEpT
Qzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIoanNUZXN0RE9NSklUQnl0ZVN0cmluZ051bGxhYmxlQXR0
ciwgbnVsbHB0ciwgSlNUZXN0RE9NSklUOjppbmZvKCksIChKU0M6OlNwZWNTdHJpbmcgfCBKU0M6
OlNwZWNPdGhlcikpCisgICAgOiBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVyKGpzVGVzdERPTUpJ
VEJ5dGVTdHJpbmdOdWxsYWJsZUF0dHIsIG51bGxwdHIsIEpTVGVzdERPTUpJVDo6aW5mbygpLCBE
T01KSVQ6OklETFJlc3VsdFR5cGVGaWx0ZXI8SURMTnVsbGFibGU8SURMQnl0ZVN0cmluZz4+Ojp2
YWx1ZSkKIHsKIH0KIApAQCAtMTA5Myw3ICsxMTM2LDcgQEAgc3RhdGljIGlubGluZSBKU1ZhbHVl
IGpzVGVzdERPTUpJVFVzdlN0cmluZ051bGxhYmxlQXR0ckdldHRlcihFeGVjU3RhdGUmIHN0YXRl
LAogfQogCiBUZXN0RE9NSklUVXN2U3RyaW5nTnVsbGFibGVBdHRyRE9NSklUOjpUZXN0RE9NSklU
VXN2U3RyaW5nTnVsbGFibGVBdHRyRE9NSklUKCkKLSAgICA6IEpTQzo6RE9NSklUOjpHZXR0ZXJT
ZXR0ZXIoanNUZXN0RE9NSklUVXN2U3RyaW5nTnVsbGFibGVBdHRyLCBudWxscHRyLCBKU1Rlc3RE
T01KSVQ6OmluZm8oKSwgKEpTQzo6U3BlY1N0cmluZyB8IEpTQzo6U3BlY090aGVyKSkKKyAgICA6
IEpTQzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIoanNUZXN0RE9NSklUVXN2U3RyaW5nTnVsbGFibGVB
dHRyLCBudWxscHRyLCBKU1Rlc3RET01KSVQ6OmluZm8oKSwgRE9NSklUOjpJRExSZXN1bHRUeXBl
RmlsdGVyPElETE51bGxhYmxlPElETFVTVlN0cmluZz4+Ojp2YWx1ZSkKIHsKIH0KIApAQCAtMTEy
MCw3ICsxMTYzLDcgQEAgc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdERPTUpJVE5vZGVOdWxs
YWJsZUF0dHJHZXR0ZXIoRXhlY1N0YXRlJiBzdGF0ZSwgSlNUZXMKIH0KIAogVGVzdERPTUpJVE5v
ZGVOdWxsYWJsZUF0dHJET01KSVQ6OlRlc3RET01KSVROb2RlTnVsbGFibGVBdHRyRE9NSklUKCkK
LSAgICA6IEpTQzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIoanNUZXN0RE9NSklUTm9kZU51bGxhYmxl
QXR0ciwgbnVsbHB0ciwgSlNUZXN0RE9NSklUOjppbmZvKCksIFNwZWNIZWFwVG9wKQorICAgIDog
SlNDOjpET01KSVQ6OkdldHRlclNldHRlcihqc1Rlc3RET01KSVROb2RlTnVsbGFibGVBdHRyLCBu
dWxscHRyLCBKU1Rlc3RET01KSVQ6OmluZm8oKSwgRE9NSklUOjpJRExSZXN1bHRUeXBlRmlsdGVy
PElETE51bGxhYmxlPElETEludGVyZmFjZTxOb2RlPj4+Ojp2YWx1ZSkKIHsKIH0KIApAQCAtMTE1
OSw2ICsxMjAyLDE3NCBAQCBKU1ZhbHVlIEpTVGVzdERPTUpJVDo6Z2V0Q29uc3RydWN0b3IoVk0m
IHZtLCBjb25zdCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogICAgIHJldHVybiBnZXRE
T01Db25zdHJ1Y3RvcjxKU1Rlc3RET01KSVRDb25zdHJ1Y3Rvcj4odm0sICpqc0Nhc3Q8Y29uc3Qg
SlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QpKTsKIH0KIAorc3RhdGljIGlubGluZSBK
U0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdERPTUpJVFByb3RvdHlwZUZ1bmN0aW9uR2V0QXR0cmli
dXRlQ2FsbGVyKEpTQzo6RXhlY1N0YXRlKiwgSlNUZXN0RE9NSklUKiwgSlNDOjpUaHJvd1Njb3Bl
Jik7CisKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0RE9NSklUUHJvdG90eXBl
RnVuY3Rpb25HZXRBdHRyaWJ1dGUoRXhlY1N0YXRlKiBzdGF0ZSkKK3sKKyAgICByZXR1cm4gQmlu
ZGluZ0NhbGxlcjxKU1Rlc3RET01KSVQ+OjpjYWxsT3BlcmF0aW9uPGpzVGVzdERPTUpJVFByb3Rv
dHlwZUZ1bmN0aW9uR2V0QXR0cmlidXRlQ2FsbGVyPihzdGF0ZSwgImdldEF0dHJpYnV0ZSIpOwor
fQorCitzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0RE9NSklUUHJvdG90
eXBlRnVuY3Rpb25HZXRBdHRyaWJ1dGVDYWxsZXIoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCBKU1Rl
c3RET01KSVQqIGNhc3RlZFRoaXMsIEpTQzo6VGhyb3dTY29wZSYgdGhyb3dTY29wZSkKK3sKKyAg
ICBVTlVTRURfUEFSQU0oc3RhdGUpOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKKyAg
ICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOworICAgIGlmIChVTkxJS0VMWShz
dGF0ZS0+YXJndW1lbnRDb3VudCgpIDwgMSkpCisgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Io
c3RhdGUsIHRocm93U2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7
CisgICAgYXV0byBuYW1lID0gY29udmVydDxJRExET01TdHJpbmc+KCpzdGF0ZSwgc3RhdGUtPnVu
Y2hlY2tlZEFyZ3VtZW50KDApLCBTdHJpbmdDb252ZXJzaW9uQ29uZmlndXJhdGlvbjo6Tm9ybWFs
KTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkp
OworICAgIEpTVmFsdWUgcmVzdWx0ID0gdG9KUzxJRExOdWxsYWJsZTxJRExET01TdHJpbmc+Pigq
c3RhdGUsIGltcGwuZ2V0QXR0cmlidXRlKFdURk1vdmUobmFtZSkpKTsKKyAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKHJlc3VsdCk7Cit9CisKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCB1bnNhZmVKc1Rlc3RET01KSVRQcm90b3R5cGVGdW5jdGlvbkdldEF0dHJpYnV0ZShKU0M6
OkV4ZWNTdGF0ZSogc3RhdGUsIEpTVGVzdERPTUpJVCogY2FzdGVkVGhpcywgRE9NSklUOjpJRExK
U0FyZ3VtZW50VHlwZTxJRExET01TdHJpbmc+IGVuY29kZWROYW1lKQoreworICAgIFVOVVNFRF9Q
QVJBTShzdGF0ZSk7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgSlNDOjpOYXRpdmVD
YWxsRnJhbWVUcmFjZXIgdHJhY2VyKCZ2bSwgc3RhdGUpOworICAgIGF1dG8gdGhyb3dTY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsK
KyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOworICAgIGF1dG8gbmFtZSA9
IERPTUpJVDo6RGlyZWN0Q29udmVydGVyPElETERPTVN0cmluZz46OmRpcmVjdENvbnZlcnQ8U3Ry
aW5nQ29udmVyc2lvbkNvbmZpZ3VyYXRpb246Ok5vcm1hbD4oKnN0YXRlLCBlbmNvZGVkTmFtZSk7
CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsK
KyAgICBKU1ZhbHVlIHJlc3VsdCA9IHRvSlM8SURMTnVsbGFibGU8SURMRE9NU3RyaW5nPj4oKnN0
YXRlLCBpbXBsLmdldEF0dHJpYnV0ZShXVEZNb3ZlKG5hbWUpKSk7CisgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShyZXN1bHQpOworfQorCitzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFs
dWUganNUZXN0RE9NSklUUHJvdG90eXBlRnVuY3Rpb25JdGVtQ2FsbGVyKEpTQzo6RXhlY1N0YXRl
KiwgSlNUZXN0RE9NSklUKiwgSlNDOjpUaHJvd1Njb3BlJik7CisKK0VuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwganNUZXN0RE9NSklUUHJvdG90eXBlRnVuY3Rpb25JdGVtKEV4ZWNTdGF0ZSog
c3RhdGUpCit7CisgICAgcmV0dXJuIEJpbmRpbmdDYWxsZXI8SlNUZXN0RE9NSklUPjo6Y2FsbE9w
ZXJhdGlvbjxqc1Rlc3RET01KSVRQcm90b3R5cGVGdW5jdGlvbkl0ZW1DYWxsZXI+KHN0YXRlLCAi
aXRlbSIpOworfQorCitzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0RE9N
SklUUHJvdG90eXBlRnVuY3Rpb25JdGVtQ2FsbGVyKEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgSlNU
ZXN0RE9NSklUKiBjYXN0ZWRUaGlzLCBKU0M6OlRocm93U2NvcGUmIHRocm93U2NvcGUpCit7Cisg
ICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7Cisg
ICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKKyAgICBpZiAoVU5MSUtFTFko
c3RhdGUtPmFyZ3VtZW50Q291bnQoKSA8IDIpKQorICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9y
KHN0YXRlLCB0aHJvd1Njb3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkp
OworICAgIGF1dG8geCA9IGNvbnZlcnQ8SURMVW5zaWduZWRTaG9ydD4oKnN0YXRlLCBzdGF0ZS0+
dW5jaGVja2VkQXJndW1lbnQoMCksIEludGVnZXJDb252ZXJzaW9uQ29uZmlndXJhdGlvbjo6Tm9y
bWFsKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVl
KCkpOworICAgIGF1dG8geSA9IGNvbnZlcnQ8SURMVW5zaWduZWRTaG9ydD4oKnN0YXRlLCBzdGF0
ZS0+dW5jaGVja2VkQXJndW1lbnQoMSksIEludGVnZXJDb252ZXJzaW9uQ29uZmlndXJhdGlvbjo6
Tm9ybWFsKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1Zh
bHVlKCkpOworICAgIEpTVmFsdWUgcmVzdWx0ID0gdG9KUzxJRExET01TdHJpbmc+KCpzdGF0ZSwg
aW1wbC5pdGVtKFdURk1vdmUoeCksIFdURk1vdmUoeSkpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKHJlc3VsdCk7Cit9CisKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCB1
bnNhZmVKc1Rlc3RET01KSVRQcm90b3R5cGVGdW5jdGlvbkl0ZW0oSlNDOjpFeGVjU3RhdGUqIHN0
YXRlLCBKU1Rlc3RET01KSVQqIGNhc3RlZFRoaXMsIERPTUpJVDo6SURMSlNBcmd1bWVudFR5cGU8
SURMVW5zaWduZWRTaG9ydD4gZW5jb2RlZFgsIERPTUpJVDo6SURMSlNBcmd1bWVudFR5cGU8SURM
VW5zaWduZWRTaG9ydD4gZW5jb2RlZFkpCit7CisgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKKyAg
ICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBKU0M6Ok5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0
cmFjZXIoJnZtLCBzdGF0ZSk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOworICAgIGF1dG8mIGltcGwg
PSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CisgICAgYXV0byB4ID0gRE9NSklUOjpEaXJlY3RDb252
ZXJ0ZXI8SURMVW5zaWduZWRTaG9ydD46OmRpcmVjdENvbnZlcnQ8SW50ZWdlckNvbnZlcnNpb25D
b25maWd1cmF0aW9uOjpOb3JtYWw+KCpzdGF0ZSwgZW5jb2RlZFgpOworICAgIFJFVFVSTl9JRl9F
WENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CisgICAgYXV0byB5ID0gRE9N
SklUOjpEaXJlY3RDb252ZXJ0ZXI8SURMVW5zaWduZWRTaG9ydD46OmRpcmVjdENvbnZlcnQ8SW50
ZWdlckNvbnZlcnNpb25Db25maWd1cmF0aW9uOjpOb3JtYWw+KCpzdGF0ZSwgZW5jb2RlZFkpOwor
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Cisg
ICAgSlNWYWx1ZSByZXN1bHQgPSB0b0pTPElETERPTVN0cmluZz4oKnN0YXRlLCBpbXBsLml0ZW0o
V1RGTW92ZSh4KSwgV1RGTW92ZSh5KSkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVz
dWx0KTsKK30KKworc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdERPTUpJ
VFByb3RvdHlwZUZ1bmN0aW9uSGFzQXR0cmlidXRlQ2FsbGVyKEpTQzo6RXhlY1N0YXRlKiwgSlNU
ZXN0RE9NSklUKiwgSlNDOjpUaHJvd1Njb3BlJik7CisKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwganNUZXN0RE9NSklUUHJvdG90eXBlRnVuY3Rpb25IYXNBdHRyaWJ1dGUoRXhlY1N0YXRl
KiBzdGF0ZSkKK3sKKyAgICByZXR1cm4gQmluZGluZ0NhbGxlcjxKU1Rlc3RET01KSVQ+OjpjYWxs
T3BlcmF0aW9uPGpzVGVzdERPTUpJVFByb3RvdHlwZUZ1bmN0aW9uSGFzQXR0cmlidXRlQ2FsbGVy
PihzdGF0ZSwgImhhc0F0dHJpYnV0ZSIpOworfQorCitzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2Rl
ZEpTVmFsdWUganNUZXN0RE9NSklUUHJvdG90eXBlRnVuY3Rpb25IYXNBdHRyaWJ1dGVDYWxsZXIo
SlNDOjpFeGVjU3RhdGUqIHN0YXRlLCBKU1Rlc3RET01KSVQqIGNhc3RlZFRoaXMsIEpTQzo6VGhy
b3dTY29wZSYgdGhyb3dTY29wZSkKK3sKKyAgICBVTlVTRURfUEFSQU0oc3RhdGUpOworICAgIFVO
VVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3Jh
cHBlZCgpOworICAgIEpTVmFsdWUgcmVzdWx0ID0gdG9KUzxJRExCb29sZWFuPihpbXBsLmhhc0F0
dHJpYnV0ZSgpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7Cit9CisKK0pT
Qzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCB1bnNhZmVKc1Rlc3RET01KSVRQcm90b3R5
cGVGdW5jdGlvbkhhc0F0dHJpYnV0ZShKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIEpTVGVzdERPTUpJ
VCogY2FzdGVkVGhpcykKK3sKKyAgICBVTlVTRURfUEFSQU0oc3RhdGUpOworICAgIFZNJiB2bSA9
IHN0YXRlLT52bSgpOworICAgIEpTQzo6TmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcigmdm0s
IHN0YXRlKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
KyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRo
aXMtPndyYXBwZWQoKTsKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IHRvSlM8SURMQm9vbGVhbj4oaW1w
bC5oYXNBdHRyaWJ1dGUoKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwor
fQorCitzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0RE9NSklUUHJvdG90
eXBlRnVuY3Rpb25HZXRFbGVtZW50QnlJZENhbGxlcihKU0M6OkV4ZWNTdGF0ZSosIEpTVGVzdERP
TUpJVCosIEpTQzo6VGhyb3dTY29wZSYpOworCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGpzVGVzdERPTUpJVFByb3RvdHlwZUZ1bmN0aW9uR2V0RWxlbWVudEJ5SWQoRXhlY1N0YXRlKiBz
dGF0ZSkKK3sKKyAgICByZXR1cm4gQmluZGluZ0NhbGxlcjxKU1Rlc3RET01KSVQ+OjpjYWxsT3Bl
cmF0aW9uPGpzVGVzdERPTUpJVFByb3RvdHlwZUZ1bmN0aW9uR2V0RWxlbWVudEJ5SWRDYWxsZXI+
KHN0YXRlLCAiZ2V0RWxlbWVudEJ5SWQiKTsKK30KKworc3RhdGljIGlubGluZSBKU0M6OkVuY29k
ZWRKU1ZhbHVlIGpzVGVzdERPTUpJVFByb3RvdHlwZUZ1bmN0aW9uR2V0RWxlbWVudEJ5SWRDYWxs
ZXIoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCBKU1Rlc3RET01KSVQqIGNhc3RlZFRoaXMsIEpTQzo6
VGhyb3dTY29wZSYgdGhyb3dTY29wZSkKK3sKKyAgICBVTlVTRURfUEFSQU0oc3RhdGUpOworICAg
IFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+
d3JhcHBlZCgpOworICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+YXJndW1lbnRDb3VudCgpIDwgMSkp
CisgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUsIGNyZWF0ZU5v
dEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CisgICAgYXV0byBlbGVtZW50SWQgPSBBdG9t
aWNTdHJpbmcoc3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50KDApLnRvU3RyaW5nKHN0YXRlKS0+dG9F
eGlzdGluZ0F0b21pY1N0cmluZyhzdGF0ZSkpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhy
b3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CisgICAgSlNWYWx1ZSByZXN1bHQgPSB0b0pTPElE
TEludGVyZmFjZTxFbGVtZW50Pj4oKnN0YXRlLCAqY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCks
IGltcGwuZ2V0RWxlbWVudEJ5SWQoV1RGTW92ZShlbGVtZW50SWQpKSk7CisgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShyZXN1bHQpOworfQorCitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgdW5zYWZlSnNUZXN0RE9NSklUUHJvdG90eXBlRnVuY3Rpb25HZXRFbGVtZW50QnlJZChK
U0M6OkV4ZWNTdGF0ZSogc3RhdGUsIEpTVGVzdERPTUpJVCogY2FzdGVkVGhpcywgRE9NSklUOjpJ
RExKU0FyZ3VtZW50VHlwZTxJRExET01TdHJpbmc+IGVuY29kZWRFbGVtZW50SWQpCit7CisgICAg
VU5VU0VEX1BBUkFNKHN0YXRlKTsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBKU0M6
Ok5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIoJnZtLCBzdGF0ZSk7CisgICAgYXV0byB0aHJv
d1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93
U2NvcGUpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CisgICAgYXV0
byBlbGVtZW50SWQgPSBBdG9taWNTdHJpbmcoZW5jb2RlZEVsZW1lbnRJZC0+dG9FeGlzdGluZ0F0
b21pY1N0cmluZyhzdGF0ZSkpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwg
ZW5jb2RlZEpTVmFsdWUoKSk7CisgICAgSlNWYWx1ZSByZXN1bHQgPSB0b0pTPElETEludGVyZmFj
ZTxFbGVtZW50Pj4oKnN0YXRlLCAqY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIGltcGwuZ2V0
RWxlbWVudEJ5SWQoV1RGTW92ZShlbGVtZW50SWQpKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShyZXN1bHQpOworfQorCitzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNU
ZXN0RE9NSklUUHJvdG90eXBlRnVuY3Rpb25HZXRFbGVtZW50c0J5TmFtZUNhbGxlcihKU0M6OkV4
ZWNTdGF0ZSosIEpTVGVzdERPTUpJVCosIEpTQzo6VGhyb3dTY29wZSYpOworCitFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdERPTUpJVFByb3RvdHlwZUZ1bmN0aW9uR2V0RWxlbWVu
dHNCeU5hbWUoRXhlY1N0YXRlKiBzdGF0ZSkKK3sKKyAgICByZXR1cm4gQmluZGluZ0NhbGxlcjxK
U1Rlc3RET01KSVQ+OjpjYWxsT3BlcmF0aW9uPGpzVGVzdERPTUpJVFByb3RvdHlwZUZ1bmN0aW9u
R2V0RWxlbWVudHNCeU5hbWVDYWxsZXI+KHN0YXRlLCAiZ2V0RWxlbWVudHNCeU5hbWUiKTsKK30K
Kworc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdERPTUpJVFByb3RvdHlw
ZUZ1bmN0aW9uR2V0RWxlbWVudHNCeU5hbWVDYWxsZXIoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCBK
U1Rlc3RET01KSVQqIGNhc3RlZFRoaXMsIEpTQzo6VGhyb3dTY29wZSYgdGhyb3dTY29wZSkKK3sK
KyAgICBVTlVTRURfUEFSQU0oc3RhdGUpOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsK
KyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOworICAgIGlmIChVTkxJS0VM
WShzdGF0ZS0+YXJndW1lbnRDb3VudCgpIDwgMSkpCisgICAgICAgIHJldHVybiB0aHJvd1ZNRXJy
b3Ioc3RhdGUsIHRocm93U2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRl
KSk7CisgICAgYXV0byBlbGVtZW50TmFtZSA9IHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgwKS50
b1N0cmluZyhzdGF0ZSktPnRvQXRvbWljU3RyaW5nKHN0YXRlKTsKKyAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOworICAgIEpTVmFsdWUgcmVzdWx0
ID0gdG9KUzxJRExJbnRlcmZhY2U8Tm9kZUxpc3Q+Pigqc3RhdGUsICpjYXN0ZWRUaGlzLT5nbG9i
YWxPYmplY3QoKSwgaW1wbC5nZXRFbGVtZW50c0J5TmFtZShXVEZNb3ZlKGVsZW1lbnROYW1lKSkp
OworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKK30KKworSlNDOjpFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHVuc2FmZUpzVGVzdERPTUpJVFByb3RvdHlwZUZ1bmN0aW9u
R2V0RWxlbWVudHNCeU5hbWUoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCBKU1Rlc3RET01KSVQqIGNh
c3RlZFRoaXMsIERPTUpJVDo6SURMSlNBcmd1bWVudFR5cGU8SURMRE9NU3RyaW5nPiBlbmNvZGVk
RWxlbWVudE5hbWUpCit7CisgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKKyAgICBWTSYgdm0gPSBz
dGF0ZS0+dm0oKTsKKyAgICBKU0M6Ok5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIoJnZtLCBz
dGF0ZSk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Cisg
ICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlz
LT53cmFwcGVkKCk7CisgICAgYXV0byBlbGVtZW50TmFtZSA9IGVuY29kZWRFbGVtZW50TmFtZS0+
dG9BdG9taWNTdHJpbmcoc3RhdGUpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29w
ZSwgZW5jb2RlZEpTVmFsdWUoKSk7CisgICAgSlNWYWx1ZSByZXN1bHQgPSB0b0pTPElETEludGVy
ZmFjZTxOb2RlTGlzdD4+KCpzdGF0ZSwgKmNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBpbXBs
LmdldEVsZW1lbnRzQnlOYW1lKFdURk1vdmUoZWxlbWVudE5hbWUpKSk7CisgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShyZXN1bHQpOworfQorCiB2b2lkIEpTVGVzdERPTUpJVDo6dmlzaXRDaGls
ZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogewogICAgIGF1dG8qIHRo
aXNPYmplY3QgPSBqc0Nhc3Q8SlNUZXN0RE9NSklUKj4oY2VsbCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdERPTUpJVC5pZGwgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdERPTUpJVC5pZGwKaW5kZXggYmU3ZWQw
NGZmNjNkZTY4NmJjODc2NDgyODJiNmFhZjY0YzI3NzNlNy4uYjMzMzY2YjE0YTQ3NDEwNzdmNjMx
ZjVjMmU4NTM3ZTQxNzcwOTFiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L1Rlc3RET01KSVQuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9UZXN0RE9NSklULmlkbApAQCAtNjMsNCArNjMsMTAgQEAgaW50ZXJmYWNl
IFRlc3RET01KSVQgOiBOb2RlIHsKICAgICBbRE9NSklUXSByZWFkb25seSBhdHRyaWJ1dGUgQnl0
ZVN0cmluZz8gYnl0ZVN0cmluZ051bGxhYmxlQXR0cjsKICAgICBbRE9NSklUXSByZWFkb25seSBh
dHRyaWJ1dGUgVVNWU3RyaW5nPyB1c3ZTdHJpbmdOdWxsYWJsZUF0dHI7CiAgICAgW0RPTUpJVF0g
cmVhZG9ubHkgYXR0cmlidXRlIE5vZGU/IG5vZGVOdWxsYWJsZUF0dHI7CisKKyAgICBbRE9NSklU
PVJlYWRET01dIERPTVN0cmluZz8gZ2V0QXR0cmlidXRlKERPTVN0cmluZyBuYW1lKTsKKyAgICBb
RE9NSklUPVJlYWRET01dIERPTVN0cmluZyBpdGVtKHVuc2lnbmVkIHNob3J0IHgsIHVuc2lnbmVk
IHNob3J0IHkpOworICAgIFtET01KSVQ9UmVhZERPTV0gYm9vbGVhbiBoYXNBdHRyaWJ1dGUoKTsK
KyAgICBbRE9NSklUPVJlYWRET01dIEVsZW1lbnQgZ2V0RWxlbWVudEJ5SWQoW1JlcXVpcmVzRXhp
c3RpbmdBdG9taWNTdHJpbmddIERPTVN0cmluZyBlbGVtZW50SWQpOworICAgIFtET01KSVQ9UmVh
ZERPTV0gTm9kZUxpc3QgZ2V0RWxlbWVudHNCeU5hbWUoW0F0b21pY1N0cmluZ10gRE9NU3RyaW5n
IGVsZW1lbnROYW1lKTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVu
dC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5pZGwKaW5kZXggNzA1NjE3MzhiOTc0
OWE4ZDc0YTBmMTdjYTYzYTdmOGZmMTk1ZTFjNi4uODE5NzUxNTc1OTE3MGI0MWI0MzMxZGZlZjg2
MWQxM2YxMzljZWQ1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaWRs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmlkbApAQCAtMjYsMjAgKzI2LDIwIEBA
CiBdIGludGVyZmFjZSBFbGVtZW50IDogTm9kZSB7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIERP
TVN0cmluZz8gdGFnTmFtZTsKIAotICAgIERPTVN0cmluZz8gZ2V0QXR0cmlidXRlKERPTVN0cmlu
ZyBuYW1lKTsKKyAgICBbRE9NSklUPVJlYWRET01dIERPTVN0cmluZz8gZ2V0QXR0cmlidXRlKERP
TVN0cmluZyBuYW1lKTsKIAogICAgIFtDRVJlYWN0aW9ucywgTWF5VGhyb3dFeGNlcHRpb25dIHZv
aWQgc2V0QXR0cmlidXRlKERPTVN0cmluZyBuYW1lLCBET01TdHJpbmcgdmFsdWUpOwogCiAgICAg
W0NFUmVhY3Rpb25zXSB2b2lkIHJlbW92ZUF0dHJpYnV0ZShET01TdHJpbmcgbmFtZSk7Ci0gICAg
QXR0cj8gZ2V0QXR0cmlidXRlTm9kZShET01TdHJpbmcgbmFtZSk7CisgICAgW0RPTUpJVD1SZWFk
RE9NXSBBdHRyPyBnZXRBdHRyaWJ1dGVOb2RlKERPTVN0cmluZyBuYW1lKTsKIAogICAgIFtDRVJl
YWN0aW9ucywgTWF5VGhyb3dFeGNlcHRpb25dIEF0dHI/IHNldEF0dHJpYnV0ZU5vZGUoQXR0ciBu
ZXdBdHRyKTsKICAgICBbQ0VSZWFjdGlvbnMsIE1heVRocm93RXhjZXB0aW9uXSBBdHRyIHJlbW92
ZUF0dHJpYnV0ZU5vZGUoQXR0ciBvbGRBdHRyKTsKIAotICAgIEhUTUxDb2xsZWN0aW9uIGdldEVs
ZW1lbnRzQnlUYWdOYW1lKERPTVN0cmluZyBuYW1lKTsKKyAgICBbRE9NSklUPVJlYWRET01dIEhU
TUxDb2xsZWN0aW9uIGdldEVsZW1lbnRzQnlUYWdOYW1lKERPTVN0cmluZyBuYW1lKTsKIAogICAg
IHJlYWRvbmx5IGF0dHJpYnV0ZSBOYW1lZE5vZGVNYXAgYXR0cmlidXRlczsKLSAgICBib29sZWFu
IGhhc0F0dHJpYnV0ZXMoKTsKKyAgICBbRE9NSklUPVJlYWRET01dIGJvb2xlYW4gaGFzQXR0cmli
dXRlcygpOwogCiAgICAgRE9NU3RyaW5nPyBnZXRBdHRyaWJ1dGVOUyhET01TdHJpbmc/IG5hbWVz
cGFjZVVSSSwgRE9NU3RyaW5nIGxvY2FsTmFtZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2RvbWppdC9ET01KSVRBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2RvbWppdC9ET01KSVRBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmNwcApkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggODNmYmE4OTcxM2I4NjYzZDRkOGYyN2VkY2JmNzRhZmU2MzE4MmQz
MS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9kb21qaXQvRE9NSklUQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5jcHAKKysrIC9kZXYv
bnVsbApAQCAtMSw3MCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwot
ICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0g
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkRPTUpJVEFic3RyYWN0
SGVhcFJlcG9zaXRvcnkuaCIKLQotI2luY2x1ZGUgPGRvbWppdC9ET01KSVRBYnN0cmFjdEhlYXAu
aD4KLSNpbmNsdWRlIDx3dGYvRGF0YUxvZy5oPgotI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3ll
ZC5oPgotCi0jaWYgRU5BQkxFKEpJVCkKLQotbmFtZXNwYWNlIFdlYkNvcmUgeyBuYW1lc3BhY2Ug
RE9NSklUIHsKLQotc3RhdGljIGNvbnN0IGJvb2wgdmVyYm9zZSA9IGZhbHNlOwotCi1BYnN0cmFj
dEhlYXBSZXBvc2l0b3J5OjpBYnN0cmFjdEhlYXBSZXBvc2l0b3J5KCkKLXsKLSAgICBKU0M6OkRP
TUpJVDo6QWJzdHJhY3RIZWFwIERPTUhlYXAoIkRPTSIpOwotI2RlZmluZSBET01KSVRfREVGSU5F
X0hFQVAobmFtZSwgcGFyZW50KSBKU0M6OkRPTUpJVDo6QWJzdHJhY3RIZWFwIG5hbWUjI0hlYXAo
I25hbWUpOwotICAgIERPTUpJVF9BQlNUUkFDVF9IRUFQX0xJU1QoRE9NSklUX0RFRklORV9IRUFQ
KQotI3VuZGVmIERPTUpJVF9ERUZJTkVfSEVBUAotCi0jZGVmaW5lIERPTUpJVF9JTklUSUFMSVpF
X0hFQVAobmFtZSwgcGFyZW50KSBuYW1lIyNIZWFwLnNldFBhcmVudCgmcGFyZW50IyNIZWFwKTsK
LSAgICBET01KSVRfQUJTVFJBQ1RfSEVBUF9MSVNUKERPTUpJVF9JTklUSUFMSVpFX0hFQVApCi0j
dW5kZWYgRE9NSklUX0lOSVRJQUxJWkVfSEVBUAotCi0gICAgRE9NSGVhcC5jb21wdXRlKDApOwot
Ci0jZGVmaW5lIERPTUpJVF9JTklUSUFMSVpFX01FTUJFUihuYW1lLCBwYXJlbnQpIG5hbWUgPSBu
YW1lIyNIZWFwLnJhbmdlKCk7Ci0gICAgRE9NSklUX0FCU1RSQUNUX0hFQVBfTElTVChET01KSVRf
SU5JVElBTElaRV9NRU1CRVIpCi0jdW5kZWYgRE9NSklUX0lOSVRJQUxJWkVfTUVNQkVSCi0KLSAg
ICBpZiAodmVyYm9zZSkgewotICAgICAgICBkYXRhTG9nKCJET01KSVQgSGVhcCBSZXBvc2l0b3J5
OlxuIik7Ci0gICAgICAgIERPTUhlYXAuZGVlcER1bXAoV1RGOjpkYXRhRmlsZSgpKTsKLSAgICB9
Ci19Ci0KLWNvbnN0IEFic3RyYWN0SGVhcFJlcG9zaXRvcnkmIEFic3RyYWN0SGVhcFJlcG9zaXRv
cnk6OnNoYXJlZCgpCi17Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEFic3RyYWN0SGVhcFJl
cG9zaXRvcnk+IHJlcG9zaXRvcnk7Ci0gICAgcmV0dXJuIHJlcG9zaXRvcnkuZ2V0KCk7Ci19Ci0K
LX0gfQotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbWppdC9ET01KSVRB
YnN0cmFjdEhlYXBSZXBvc2l0b3J5LmggYi9Tb3VyY2UvV2ViQ29yZS9kb21qaXQvRE9NSklUQWJz
dHJhY3RIZWFwUmVwb3NpdG9yeS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4MTkw
YTFhOTRiYmM3OWRlNWYyZTNiZWQwOTk4MzQ3OWZhNGJkNjU2Li4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbWppdC9ET01KSVRB
YnN0cmFjdEhlYXBSZXBvc2l0b3J5LmgKKysrIC9kZXYvbnVsbApAQCAtMSw2NiArMCwwIEBACi0v
KgotICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNl
Ci0KLSNpbmNsdWRlIDxkb21qaXQvRE9NSklUSGVhcFJhbmdlLmg+Ci0jaW5jbHVkZSA8d3RmL05l
dmVyRGVzdHJveWVkLmg+Ci0jaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+Ci0KLSNpZiBFTkFC
TEUoSklUKQotCi1uYW1lc3BhY2UgV2ViQ29yZSB7IG5hbWVzcGFjZSBET01KSVQgewotCi0vLyBE
ZXNjcmliZSB5b3VyIGFic3RyYWN0IGhlYXAgaGllcmFyY2h5IGhlcmUuCi0vLyBWKEFic3RyYWN0
SGVhcE5hbWUsIFBhcmVudCkKLSNkZWZpbmUgRE9NSklUX0FCU1RSQUNUX0hFQVBfTElTVChWKSBc
Ci0gICAgVihOb2RlLCBET00pIFwKLSAgICBWKE5vZGVfZmlyc3RDaGlsZCwgTm9kZSkgXAotICAg
IFYoTm9kZV9sYXN0Q2hpbGQsIE5vZGUpIFwKLSAgICBWKE5vZGVfcGFyZW50Tm9kZSwgTm9kZSkg
XAotICAgIFYoTm9kZV9uZXh0U2libGluZywgTm9kZSkgXAotICAgIFYoTm9kZV9wcmV2aW91c1Np
YmxpbmcsIE5vZGUpIFwKLSAgICBWKE5vZGVfb3duZXJEb2N1bWVudCwgTm9kZSkgXAotICAgIFYo
RG9jdW1lbnQsIERPTSkgXAotICAgIFYoRG9jdW1lbnRfZG9jdW1lbnRFbGVtZW50LCBEb2N1bWVu
dCkgXAotCi0KLWNsYXNzIEFic3RyYWN0SGVhcFJlcG9zaXRvcnkgewotICAgIFdURl9NQUtFX05P
TkNPUFlBQkxFKEFic3RyYWN0SGVhcFJlcG9zaXRvcnkpOwotcHVibGljOgotICAgIHN0YXRpYyBj
b25zdCBBYnN0cmFjdEhlYXBSZXBvc2l0b3J5JiBzaGFyZWQoKTsKLQotICAgIEpTQzo6RE9NSklU
OjpIZWFwUmFuZ2UgRE9NOwotCi0jZGVmaW5lIERPTUpJVF9ERUZJTkVfTUVNQkVSKG5hbWUsIHBh
cmVudCkgSlNDOjpET01KSVQ6OkhlYXBSYW5nZSBuYW1lOwotICAgIERPTUpJVF9BQlNUUkFDVF9I
RUFQX0xJU1QoRE9NSklUX0RFRklORV9NRU1CRVIpCi0jdW5kZWYgRE9NSklUX0RFRklORV9NRU1C
RVIKLQotICAgIEFic3RyYWN0SGVhcFJlcG9zaXRvcnkoKTsKLX07Ci0KLX0gfQotCi0jZW5kaWYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbWppdC9ET01KSVRBYnN0cmFjdEhlYXBSZXBv
c2l0b3J5LnlhbWwgYi9Tb3VyY2UvV2ViQ29yZS9kb21qaXQvRE9NSklUQWJzdHJhY3RIZWFwUmVw
b3NpdG9yeS55YW1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjUyYzU4NDVlMDc4NjcwZGRkYWM5NzcyOTk5Y2NiOGVh
N2QwMWJkZjMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb21qaXQvRE9NSklU
QWJzdHJhY3RIZWFwUmVwb3NpdG9yeS55YW1sCkBAIC0wLDAgKzEsMTEgQEAKK0RPTToKKyAgICBU
cmVlOgorICAgICAgICBOb2RlOgorICAgICAgICAgICAgLSBOb2RlX2ZpcnN0Q2hpbGQKKyAgICAg
ICAgICAgIC0gTm9kZV9sYXN0Q2hpbGQKKyAgICAgICAgICAgIC0gTm9kZV9wYXJlbnROb2RlCisg
ICAgICAgICAgICAtIE5vZGVfbmV4dFNpYmxpbmcKKyAgICAgICAgICAgIC0gTm9kZV9wcmV2aW91
c1NpYmxpbmcKKyAgICAgICAgICAgIC0gTm9kZV9vd25lckRvY3VtZW50CisgICAgICAgIERvY3Vt
ZW50OgorICAgICAgICAgICAgLSBEb2N1bWVudF9kb2N1bWVudEVsZW1lbnQKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2RvbWppdC9ET01KSVRJRExDb252ZXJ0LmggYi9Tb3VyY2UvV2ViQ29y
ZS9kb21qaXQvRE9NSklUSURMQ29udmVydC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjVlMDBhYmZjY2I4NzZkZWEx
ODMyZjFjMjBhZWUzZWQ3OGIxMzY4NDkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9kb21qaXQvRE9NSklUSURMQ29udmVydC5oCkBAIC0wLDAgKzEsNDkgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIklETFR5cGVzLmgiCisjaW5jbHVkZSA8Ynl0ZWNv
ZGUvU3BlY3VsYXRlZFR5cGUuaD4KKyNpbmNsdWRlIDxkb21qaXQvRE9NSklUU2lnbmF0dXJlLmg+
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsgbmFtZXNwYWNlIERPTUpJVCB7CisKK3RlbXBsYXRlPHR5
cGVuYW1lIElETFR5cGU+CitzdHJ1Y3QgRGlyZWN0Q29udmVydGVyOworCit0ZW1wbGF0ZTw+Citz
dHJ1Y3QgRGlyZWN0Q29udmVydGVyPElETERPTVN0cmluZz4geworICAgIHRlbXBsYXRlPFN0cmlu
Z0NvbnZlcnNpb25Db25maWd1cmF0aW9uPgorICAgIHN0YXRpYyBTdHJpbmcgZGlyZWN0Q29udmVy
dChKU0M6OkV4ZWNTdGF0ZSYsIEpTQzo6SlNTdHJpbmcqKTsKK307CisKK3RlbXBsYXRlPD4KK2lu
bGluZSBTdHJpbmcgRGlyZWN0Q29udmVydGVyPElETERPTVN0cmluZz46OmRpcmVjdENvbnZlcnQ8
U3RyaW5nQ29udmVyc2lvbkNvbmZpZ3VyYXRpb246Ok5vcm1hbD4oSlNDOjpFeGVjU3RhdGUmIHN0
YXRlLCBKU0M6OkpTU3RyaW5nKiBzdHJpbmcpCit7CisgICAgcmV0dXJuIHN0cmluZy0+dmFsdWUo
JnN0YXRlKTsKK30KKworfSB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb21qaXQvRE9N
SklUSURMVHlwZS5oIGIvU291cmNlL1dlYkNvcmUvZG9taml0L0RPTUpJVElETFR5cGUuaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi42ODkxZmJjNTBlZjRjMmQ3NjU0ZDhlNWQyYmM4ZGVhZTk3NmRmMWFjCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvZG9taml0L0RPTUpJVElETFR5cGUuaApAQCAtMCww
ICsxLDQ3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJJRExUeXBl
cy5oIgorI2luY2x1ZGUgPGJ5dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmg+CisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsgbmFtZXNwYWNlIERPTUpJVCB7CisKK3RlbXBsYXRlPHR5cGVuYW1lIElETFR5cGU+
CitzdHJ1Y3QgSURMSlNBcmd1bWVudFR5cGVTZWxlY3Q7CisKK3RlbXBsYXRlPD4gc3RydWN0IElE
TEpTQXJndW1lbnRUeXBlU2VsZWN0PElETEJvb2xlYW4+IHsgdHlwZWRlZiBib29sIHR5cGU7IH07
Cit0ZW1wbGF0ZTw+IHN0cnVjdCBJRExKU0FyZ3VtZW50VHlwZVNlbGVjdDxJRExCeXRlPiB7IHR5
cGVkZWYgaW50MzJfdCB0eXBlOyB9OwordGVtcGxhdGU8PiBzdHJ1Y3QgSURMSlNBcmd1bWVudFR5
cGVTZWxlY3Q8SURMT2N0ZXQ+IHsgdHlwZWRlZiBpbnQzMl90IHR5cGU7IH07Cit0ZW1wbGF0ZTw+
IHN0cnVjdCBJRExKU0FyZ3VtZW50VHlwZVNlbGVjdDxJRExTaG9ydD4geyB0eXBlZGVmIGludDMy
X3QgdHlwZTsgfTsKK3RlbXBsYXRlPD4gc3RydWN0IElETEpTQXJndW1lbnRUeXBlU2VsZWN0PElE
TFVuc2lnbmVkU2hvcnQ+IHsgdHlwZWRlZiBpbnQzMl90IHR5cGU7IH07Cit0ZW1wbGF0ZTw+IHN0
cnVjdCBJRExKU0FyZ3VtZW50VHlwZVNlbGVjdDxJRExMb25nPiB7IHR5cGVkZWYgaW50MzJfdCB0
eXBlOyB9OwordGVtcGxhdGU8PiBzdHJ1Y3QgSURMSlNBcmd1bWVudFR5cGVTZWxlY3Q8SURMRE9N
U3RyaW5nPiB7IHR5cGVkZWYgSlNDOjpKU1N0cmluZyogdHlwZTsgfTsKKwordGVtcGxhdGU8dHlw
ZW5hbWUgSURMVHlwZT4KK3VzaW5nIElETEpTQXJndW1lbnRUeXBlID0gdHlwZW5hbWUgSURMSlNB
cmd1bWVudFR5cGVTZWxlY3Q8SURMVHlwZT46OnR5cGU7CisKK30gfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZG9taml0L0RPTUpJVElETFR5cGVGaWx0ZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L2RvbWppdC9ET01KSVRJRExUeXBlRmlsdGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDUyZDk5Njc3YzMyZjdl
YzJiZDUyMTIzN2FkMGU3YjhkNGUzZGI5NgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2RvbWppdC9ET01KSVRJRExUeXBlRmlsdGVyLmgKQEAgLTAsMCArMSw3MSBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8Ynl0ZWNvZGUvU3BlY3VsYXRlZFR5cGUu
aD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeyBuYW1lc3BhY2UgRE9NSklUIHsKKwordGVtcGxhdGU8
dHlwZW5hbWUgSURMVHlwZT4KK3N0cnVjdCBJRExBcmd1bWVudFR5cGVGaWx0ZXI7CisKK3RlbXBs
YXRlPD4gc3RydWN0IElETEFyZ3VtZW50VHlwZUZpbHRlcjxJRExCb29sZWFuPiB7IHN0YXRpYyBj
b25zdCBjb25zdGV4cHIgSlNDOjpTcGVjdWxhdGVkVHlwZSB2YWx1ZSA9IEpTQzo6U3BlY0Jvb2xl
YW47IH07Cit0ZW1wbGF0ZTw+IHN0cnVjdCBJRExBcmd1bWVudFR5cGVGaWx0ZXI8SURMQnl0ZT4g
eyBzdGF0aWMgY29uc3QgY29uc3RleHByIEpTQzo6U3BlY3VsYXRlZFR5cGUgdmFsdWUgPSBKU0M6
OlNwZWNJbnQzMk9ubHk7IH07Cit0ZW1wbGF0ZTw+IHN0cnVjdCBJRExBcmd1bWVudFR5cGVGaWx0
ZXI8SURMT2N0ZXQ+IHsgc3RhdGljIGNvbnN0IGNvbnN0ZXhwciBKU0M6OlNwZWN1bGF0ZWRUeXBl
IHZhbHVlID0gSlNDOjpTcGVjSW50MzJPbmx5OyB9OwordGVtcGxhdGU8PiBzdHJ1Y3QgSURMQXJn
dW1lbnRUeXBlRmlsdGVyPElETFNob3J0PiB7IHN0YXRpYyBjb25zdCBjb25zdGV4cHIgSlNDOjpT
cGVjdWxhdGVkVHlwZSB2YWx1ZSA9IEpTQzo6U3BlY0ludDMyT25seTsgfTsKK3RlbXBsYXRlPD4g
c3RydWN0IElETEFyZ3VtZW50VHlwZUZpbHRlcjxJRExVbnNpZ25lZFNob3J0PiB7IHN0YXRpYyBj
b25zdCBjb25zdGV4cHIgSlNDOjpTcGVjdWxhdGVkVHlwZSB2YWx1ZSA9IEpTQzo6U3BlY0ludDMy
T25seTsgfTsKK3RlbXBsYXRlPD4gc3RydWN0IElETEFyZ3VtZW50VHlwZUZpbHRlcjxJRExMb25n
PiB7IHN0YXRpYyBjb25zdCBjb25zdGV4cHIgSlNDOjpTcGVjdWxhdGVkVHlwZSB2YWx1ZSA9IEpT
Qzo6U3BlY0ludDMyT25seTsgfTsKK3RlbXBsYXRlPD4gc3RydWN0IElETEFyZ3VtZW50VHlwZUZp
bHRlcjxJRExET01TdHJpbmc+IHsgc3RhdGljIGNvbnN0IGNvbnN0ZXhwciBKU0M6OlNwZWN1bGF0
ZWRUeXBlIHZhbHVlID0gSlNDOjpTcGVjU3RyaW5nOyB9OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBJ
RExUeXBlPgorc3RydWN0IElETFJlc3VsdFR5cGVGaWx0ZXIgeworICAgIHN0YXRpYyBjb25zdCBj
b25zdGV4cHIgSlNDOjpTcGVjdWxhdGVkVHlwZSB2YWx1ZSA9IEpTQzo6U3BlY0hlYXBUb3A7Cit9
OworCit0ZW1wbGF0ZTw+IHN0cnVjdCBJRExSZXN1bHRUeXBlRmlsdGVyPElETEFueT4geyBzdGF0
aWMgY29uc3QgY29uc3RleHByIEpTQzo6U3BlY3VsYXRlZFR5cGUgdmFsdWUgPSBKU0M6OlNwZWNI
ZWFwVG9wOyB9OwordGVtcGxhdGU8PiBzdHJ1Y3QgSURMUmVzdWx0VHlwZUZpbHRlcjxJRExCb29s
ZWFuPiB7IHN0YXRpYyBjb25zdCBjb25zdGV4cHIgSlNDOjpTcGVjdWxhdGVkVHlwZSB2YWx1ZSA9
IEpTQzo6U3BlY0Jvb2xlYW47IH07Cit0ZW1wbGF0ZTw+IHN0cnVjdCBJRExSZXN1bHRUeXBlRmls
dGVyPElETEJ5dGU+IHsgc3RhdGljIGNvbnN0IGNvbnN0ZXhwciBKU0M6OlNwZWN1bGF0ZWRUeXBl
IHZhbHVlID0gSlNDOjpTcGVjSW50MzJPbmx5OyB9OwordGVtcGxhdGU8PiBzdHJ1Y3QgSURMUmVz
dWx0VHlwZUZpbHRlcjxJRExPY3RldD4geyBzdGF0aWMgY29uc3QgY29uc3RleHByIEpTQzo6U3Bl
Y3VsYXRlZFR5cGUgdmFsdWUgPSBKU0M6OlNwZWNJbnQzMk9ubHk7IH07Cit0ZW1wbGF0ZTw+IHN0
cnVjdCBJRExSZXN1bHRUeXBlRmlsdGVyPElETFNob3J0PiB7IHN0YXRpYyBjb25zdCBjb25zdGV4
cHIgSlNDOjpTcGVjdWxhdGVkVHlwZSB2YWx1ZSA9IEpTQzo6U3BlY0ludDMyT25seTsgfTsKK3Rl
bXBsYXRlPD4gc3RydWN0IElETFJlc3VsdFR5cGVGaWx0ZXI8SURMVW5zaWduZWRTaG9ydD4geyBz
dGF0aWMgY29uc3QgY29uc3RleHByIEpTQzo6U3BlY3VsYXRlZFR5cGUgdmFsdWUgPSBKU0M6OlNw
ZWNJbnQzMk9ubHk7IH07Cit0ZW1wbGF0ZTw+IHN0cnVjdCBJRExSZXN1bHRUeXBlRmlsdGVyPElE
TExvbmc+IHsgc3RhdGljIGNvbnN0IGNvbnN0ZXhwciBKU0M6OlNwZWN1bGF0ZWRUeXBlIHZhbHVl
ID0gSlNDOjpTcGVjSW50MzJPbmx5OyB9OwordGVtcGxhdGU8PiBzdHJ1Y3QgSURMUmVzdWx0VHlw
ZUZpbHRlcjxJRExVbnNpZ25lZExvbmc+IHsgc3RhdGljIGNvbnN0IGNvbnN0ZXhwciBKU0M6OlNw
ZWN1bGF0ZWRUeXBlIHZhbHVlID0gSlNDOjpTcGVjQnl0ZWNvZGVOdW1iZXI7IH07Cit0ZW1wbGF0
ZTw+IHN0cnVjdCBJRExSZXN1bHRUeXBlRmlsdGVyPElETExvbmdMb25nPiB7IHN0YXRpYyBjb25z
dCBjb25zdGV4cHIgSlNDOjpTcGVjdWxhdGVkVHlwZSB2YWx1ZSA9IEpTQzo6U3BlY0J5dGVjb2Rl
TnVtYmVyOyB9OwordGVtcGxhdGU8PiBzdHJ1Y3QgSURMUmVzdWx0VHlwZUZpbHRlcjxJRExVbnNp
Z25lZExvbmdMb25nPiB7IHN0YXRpYyBjb25zdCBjb25zdGV4cHIgSlNDOjpTcGVjdWxhdGVkVHlw
ZSB2YWx1ZSA9IEpTQzo6U3BlY0J5dGVjb2RlTnVtYmVyOyB9OwordGVtcGxhdGU8PiBzdHJ1Y3Qg
SURMUmVzdWx0VHlwZUZpbHRlcjxJRExGbG9hdD4geyBzdGF0aWMgY29uc3QgY29uc3RleHByIEpT
Qzo6U3BlY3VsYXRlZFR5cGUgdmFsdWUgPSBKU0M6OlNwZWNCeXRlY29kZU51bWJlcjsgfTsKK3Rl
bXBsYXRlPD4gc3RydWN0IElETFJlc3VsdFR5cGVGaWx0ZXI8SURMVW5yZXN0cmljdGVkRmxvYXQ+
IHsgc3RhdGljIGNvbnN0IGNvbnN0ZXhwciBKU0M6OlNwZWN1bGF0ZWRUeXBlIHZhbHVlID0gSlND
OjpTcGVjQnl0ZWNvZGVOdW1iZXI7IH07Cit0ZW1wbGF0ZTw+IHN0cnVjdCBJRExSZXN1bHRUeXBl
RmlsdGVyPElETERvdWJsZT4geyBzdGF0aWMgY29uc3QgY29uc3RleHByIEpTQzo6U3BlY3VsYXRl
ZFR5cGUgdmFsdWUgPSBKU0M6OlNwZWNCeXRlY29kZU51bWJlcjsgfTsKK3RlbXBsYXRlPD4gc3Ry
dWN0IElETFJlc3VsdFR5cGVGaWx0ZXI8SURMVW5yZXN0cmljdGVkRG91YmxlPiB7IHN0YXRpYyBj
b25zdCBjb25zdGV4cHIgSlNDOjpTcGVjdWxhdGVkVHlwZSB2YWx1ZSA9IEpTQzo6U3BlY0J5dGVj
b2RlTnVtYmVyOyB9OwordGVtcGxhdGU8PiBzdHJ1Y3QgSURMUmVzdWx0VHlwZUZpbHRlcjxJRExE
T01TdHJpbmc+IHsgc3RhdGljIGNvbnN0IGNvbnN0ZXhwciBKU0M6OlNwZWN1bGF0ZWRUeXBlIHZh
bHVlID0gSlNDOjpTcGVjU3RyaW5nOyB9OwordGVtcGxhdGU8PiBzdHJ1Y3QgSURMUmVzdWx0VHlw
ZUZpbHRlcjxJRExCeXRlU3RyaW5nPiB7IHN0YXRpYyBjb25zdCBjb25zdGV4cHIgSlNDOjpTcGVj
dWxhdGVkVHlwZSB2YWx1ZSA9IEpTQzo6U3BlY1N0cmluZzsgfTsKK3RlbXBsYXRlPD4gc3RydWN0
IElETFJlc3VsdFR5cGVGaWx0ZXI8SURMVVNWU3RyaW5nPiB7IHN0YXRpYyBjb25zdCBjb25zdGV4
cHIgSlNDOjpTcGVjdWxhdGVkVHlwZSB2YWx1ZSA9IEpTQzo6U3BlY1N0cmluZzsgfTsKKwordGVt
cGxhdGU8dHlwZW5hbWUgVD4KK3N0cnVjdCBJRExSZXN1bHRUeXBlRmlsdGVyPElETE51bGxhYmxl
PFQ+PiB7CisgICAgc3RhdGljIGNvbnN0IGNvbnN0ZXhwciBKU0M6OlNwZWN1bGF0ZWRUeXBlIHZh
bHVlID0gSlNDOjpTcGVjT3RoZXIgfCBJRExSZXN1bHRUeXBlRmlsdGVyPFQ+Ojp2YWx1ZTsKK307
CisKK30gfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9taml0L0pTRG9jdW1lbnRET01K
SVQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9taml0L0pTRG9jdW1lbnRET01KSVQuY3BwCmluZGV4
IDliNDhkOWZkYTU4YTYyZDA3ZmIyM2FhYjQ1NmJmOTRiN2VkOGZjMmYuLmJiZmVlN2RjNGJiNzgy
ZTczY2YyN2M5NzdiYzE4Mjk0YTU5NGI2ZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rv
bWppdC9KU0RvY3VtZW50RE9NSklULmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb21qaXQvSlNE
b2N1bWVudERPTUpJVC5jcHAKQEAgLTQ4LDcgKzQ4LDYgQEAgUmVmPEpTQzo6RE9NSklUOjpQYXRj
aHBvaW50PiBEb2N1bWVudERvY3VtZW50RWxlbWVudERPTUpJVDo6Y2hlY2tET00oKQogCiBSZWY8
SlNDOjpET01KSVQ6OkNhbGxET01HZXR0ZXJQYXRjaHBvaW50PiBEb2N1bWVudERvY3VtZW50RWxl
bWVudERPTUpJVDo6Y2FsbERPTUdldHRlcigpCiB7Ci0gICAgY29uc3QgYXV0byYgaGVhcCA9IERP
TUpJVDo6QWJzdHJhY3RIZWFwUmVwb3NpdG9yeTo6c2hhcmVkKCk7CiAgICAgUmVmPEpTQzo6RE9N
SklUOjpDYWxsRE9NR2V0dGVyUGF0Y2hwb2ludD4gcGF0Y2hwb2ludCA9IEpTQzo6RE9NSklUOjpD
YWxsRE9NR2V0dGVyUGF0Y2hwb2ludDo6Y3JlYXRlKCk7CiAgICAgcGF0Y2hwb2ludC0+bnVtR1BT
Y3JhdGNoUmVnaXN0ZXJzID0gMTsKICAgICBwYXRjaHBvaW50LT5zZXRHZW5lcmF0b3IoWz1dKEND
YWxsSGVscGVycyYgaml0LCBKU0M6OkRPTUpJVDo6UGF0Y2hwb2ludFBhcmFtcyYgcGFyYW1zKSB7
CkBAIC03MCw3ICs2OSw3IEBAIFJlZjxKU0M6OkRPTUpJVDo6Q2FsbERPTUdldHRlclBhdGNocG9p
bnQ+IERvY3VtZW50RG9jdW1lbnRFbGVtZW50RE9NSklUOjpjYWxsRE9NCiAKICAgICAgICAgcmV0
dXJuIENDYWxsSGVscGVyczo6SnVtcExpc3QoKTsKICAgICB9KTsKLSAgICBwYXRjaHBvaW50LT5l
ZmZlY3QgPSBKU0M6OkRPTUpJVDo6RWZmZWN0Ojpmb3JEZWYoaGVhcC5Eb2N1bWVudF9kb2N1bWVu
dEVsZW1lbnQpOworICAgIHBhdGNocG9pbnQtPmVmZmVjdCA9IEpTQzo6RE9NSklUOjpFZmZlY3Q6
OmZvckRlZihET01KSVQ6OkFic3RyYWN0SGVhcFJlcG9zaXRvcnk6OkRvY3VtZW50X2RvY3VtZW50
RWxlbWVudCk7CiAgICAgcmV0dXJuIHBhdGNocG9pbnQ7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2RvbWppdC9KU05vZGVET01KSVQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9taml0
L0pTTm9kZURPTUpJVC5jcHAKaW5kZXggMWQ3OTAxZWM0MWQ3YWNlZjFkMGQ3OGY2MTMyNmZiZThh
MTNhOTFiZi4uZGIzMTBlYTM0NTI4NDkxNDI0MjhkM2Q2MTZmODFiMmM2N2M1MTY1NSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZG9taml0L0pTTm9kZURPTUpJVC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvZG9taml0L0pTTm9kZURPTUpJVC5jcHAKQEAgLTgzLDkgKzgzLDggQEAgUmVmPEpT
Qzo6RE9NSklUOjpQYXRjaHBvaW50PiBOb2RlRmlyc3RDaGlsZERPTUpJVDo6Y2hlY2tET00oKQog
CiBSZWY8SlNDOjpET01KSVQ6OkNhbGxET01HZXR0ZXJQYXRjaHBvaW50PiBOb2RlRmlyc3RDaGls
ZERPTUpJVDo6Y2FsbERPTUdldHRlcigpCiB7Ci0gICAgY29uc3QgYXV0byYgaGVhcCA9IERPTUpJ
VDo6QWJzdHJhY3RIZWFwUmVwb3NpdG9yeTo6c2hhcmVkKCk7CiAgICAgYXV0byBwYXRjaHBvaW50
ID0gY3JlYXRlQ2FsbERPTUdldHRlckZvck9mZnNldEFjY2VzczxOb2RlPihDQVNUX09GRlNFVChO
b2RlKiwgQ29udGFpbmVyTm9kZSopICsgQ29udGFpbmVyTm9kZTo6Zmlyc3RDaGlsZE1lbW9yeU9m
ZnNldCgpLCBJc0NvbnRhaW5lckd1YXJkUmVxdWlyZW1lbnQ6OlJlcXVpcmVkKTsKLSAgICBwYXRj
aHBvaW50LT5lZmZlY3QgPSBKU0M6OkRPTUpJVDo6RWZmZWN0Ojpmb3JEZWYoaGVhcC5Ob2RlX2Zp
cnN0Q2hpbGQpOworICAgIHBhdGNocG9pbnQtPmVmZmVjdCA9IEpTQzo6RE9NSklUOjpFZmZlY3Q6
OmZvckRlZihET01KSVQ6OkFic3RyYWN0SGVhcFJlcG9zaXRvcnk6Ok5vZGVfZmlyc3RDaGlsZCk7
CiAgICAgcmV0dXJuIHBhdGNocG9pbnQ7CiB9CiAKQEAgLTk2LDkgKzk1LDggQEAgUmVmPEpTQzo6
RE9NSklUOjpQYXRjaHBvaW50PiBOb2RlTGFzdENoaWxkRE9NSklUOjpjaGVja0RPTSgpCiAKIFJl
ZjxKU0M6OkRPTUpJVDo6Q2FsbERPTUdldHRlclBhdGNocG9pbnQ+IE5vZGVMYXN0Q2hpbGRET01K
SVQ6OmNhbGxET01HZXR0ZXIoKQogewotICAgIGNvbnN0IGF1dG8mIGhlYXAgPSBET01KSVQ6OkFi
c3RyYWN0SGVhcFJlcG9zaXRvcnk6OnNoYXJlZCgpOwogICAgIGF1dG8gcGF0Y2hwb2ludCA9IGNy
ZWF0ZUNhbGxET01HZXR0ZXJGb3JPZmZzZXRBY2Nlc3M8Tm9kZT4oQ0FTVF9PRkZTRVQoTm9kZSos
IENvbnRhaW5lck5vZGUqKSArIENvbnRhaW5lck5vZGU6Omxhc3RDaGlsZE1lbW9yeU9mZnNldCgp
LCBJc0NvbnRhaW5lckd1YXJkUmVxdWlyZW1lbnQ6OlJlcXVpcmVkKTsKLSAgICBwYXRjaHBvaW50
LT5lZmZlY3QgPSBKU0M6OkRPTUpJVDo6RWZmZWN0Ojpmb3JEZWYoaGVhcC5Ob2RlX2xhc3RDaGls
ZCk7CisgICAgcGF0Y2hwb2ludC0+ZWZmZWN0ID0gSlNDOjpET01KSVQ6OkVmZmVjdDo6Zm9yRGVm
KERPTUpJVDo6QWJzdHJhY3RIZWFwUmVwb3NpdG9yeTo6Tm9kZV9sYXN0Q2hpbGQpOwogICAgIHJl
dHVybiBwYXRjaHBvaW50OwogfQogCkBAIC0xMDksOSArMTA3LDggQEAgUmVmPEpTQzo6RE9NSklU
OjpQYXRjaHBvaW50PiBOb2RlTmV4dFNpYmxpbmdET01KSVQ6OmNoZWNrRE9NKCkKIAogUmVmPEpT
Qzo6RE9NSklUOjpDYWxsRE9NR2V0dGVyUGF0Y2hwb2ludD4gTm9kZU5leHRTaWJsaW5nRE9NSklU
OjpjYWxsRE9NR2V0dGVyKCkKIHsKLSAgICBjb25zdCBhdXRvJiBoZWFwID0gRE9NSklUOjpBYnN0
cmFjdEhlYXBSZXBvc2l0b3J5OjpzaGFyZWQoKTsKICAgICBhdXRvIHBhdGNocG9pbnQgPSBjcmVh
dGVDYWxsRE9NR2V0dGVyRm9yT2Zmc2V0QWNjZXNzPE5vZGU+KE5vZGU6Om5leHRTaWJsaW5nTWVt
b3J5T2Zmc2V0KCksIElzQ29udGFpbmVyR3VhcmRSZXF1aXJlbWVudDo6Tm90UmVxdWlyZWQpOwot
ICAgIHBhdGNocG9pbnQtPmVmZmVjdCA9IEpTQzo6RE9NSklUOjpFZmZlY3Q6OmZvckRlZihoZWFw
Lk5vZGVfbmV4dFNpYmxpbmcpOworICAgIHBhdGNocG9pbnQtPmVmZmVjdCA9IEpTQzo6RE9NSklU
OjpFZmZlY3Q6OmZvckRlZihET01KSVQ6OkFic3RyYWN0SGVhcFJlcG9zaXRvcnk6Ok5vZGVfbmV4
dFNpYmxpbmcpOwogICAgIHJldHVybiBwYXRjaHBvaW50OwogfQogCkBAIC0xMjIsOSArMTE5LDgg
QEAgUmVmPEpTQzo6RE9NSklUOjpQYXRjaHBvaW50PiBOb2RlUHJldmlvdXNTaWJsaW5nRE9NSklU
OjpjaGVja0RPTSgpCiAKIFJlZjxKU0M6OkRPTUpJVDo6Q2FsbERPTUdldHRlclBhdGNocG9pbnQ+
IE5vZGVQcmV2aW91c1NpYmxpbmdET01KSVQ6OmNhbGxET01HZXR0ZXIoKQogewotICAgIGNvbnN0
IGF1dG8mIGhlYXAgPSBET01KSVQ6OkFic3RyYWN0SGVhcFJlcG9zaXRvcnk6OnNoYXJlZCgpOwog
ICAgIGF1dG8gcGF0Y2hwb2ludCA9IGNyZWF0ZUNhbGxET01HZXR0ZXJGb3JPZmZzZXRBY2Nlc3M8
Tm9kZT4oTm9kZTo6cHJldmlvdXNTaWJsaW5nTWVtb3J5T2Zmc2V0KCksIElzQ29udGFpbmVyR3Vh
cmRSZXF1aXJlbWVudDo6Tm90UmVxdWlyZWQpOwotICAgIHBhdGNocG9pbnQtPmVmZmVjdCA9IEpT
Qzo6RE9NSklUOjpFZmZlY3Q6OmZvckRlZihoZWFwLk5vZGVfcHJldmlvdXNTaWJsaW5nKTsKKyAg
ICBwYXRjaHBvaW50LT5lZmZlY3QgPSBKU0M6OkRPTUpJVDo6RWZmZWN0Ojpmb3JEZWYoRE9NSklU
OjpBYnN0cmFjdEhlYXBSZXBvc2l0b3J5OjpOb2RlX3ByZXZpb3VzU2libGluZyk7CiAgICAgcmV0
dXJuIHBhdGNocG9pbnQ7CiB9CiAKQEAgLTEzNSw5ICsxMzEsOCBAQCBSZWY8SlNDOjpET01KSVQ6
OlBhdGNocG9pbnQ+IE5vZGVQYXJlbnROb2RlRE9NSklUOjpjaGVja0RPTSgpCiAKIFJlZjxKU0M6
OkRPTUpJVDo6Q2FsbERPTUdldHRlclBhdGNocG9pbnQ+IE5vZGVQYXJlbnROb2RlRE9NSklUOjpj
YWxsRE9NR2V0dGVyKCkKIHsKLSAgICBjb25zdCBhdXRvJiBoZWFwID0gRE9NSklUOjpBYnN0cmFj
dEhlYXBSZXBvc2l0b3J5OjpzaGFyZWQoKTsKICAgICBhdXRvIHBhdGNocG9pbnQgPSBjcmVhdGVD
YWxsRE9NR2V0dGVyRm9yT2Zmc2V0QWNjZXNzPENvbnRhaW5lck5vZGU+KE5vZGU6OnBhcmVudE5v
ZGVNZW1vcnlPZmZzZXQoKSwgSXNDb250YWluZXJHdWFyZFJlcXVpcmVtZW50OjpOb3RSZXF1aXJl
ZCk7Ci0gICAgcGF0Y2hwb2ludC0+ZWZmZWN0ID0gSlNDOjpET01KSVQ6OkVmZmVjdDo6Zm9yRGVm
KGhlYXAuTm9kZV9wYXJlbnROb2RlKTsKKyAgICBwYXRjaHBvaW50LT5lZmZlY3QgPSBKU0M6OkRP
TUpJVDo6RWZmZWN0Ojpmb3JEZWYoRE9NSklUOjpBYnN0cmFjdEhlYXBSZXBvc2l0b3J5OjpOb2Rl
X3BhcmVudE5vZGUpOwogICAgIHJldHVybiBwYXRjaHBvaW50OwogfQogCkBAIC0xNjksNyArMTY0
LDYgQEAgUmVmPEpTQzo6RE9NSklUOjpQYXRjaHBvaW50PiBOb2RlT3duZXJEb2N1bWVudERPTUpJ
VDo6Y2hlY2tET00oKQogCiBSZWY8SlNDOjpET01KSVQ6OkNhbGxET01HZXR0ZXJQYXRjaHBvaW50
PiBOb2RlT3duZXJEb2N1bWVudERPTUpJVDo6Y2FsbERPTUdldHRlcigpCiB7Ci0gICAgY29uc3Qg
YXV0byYgaGVhcCA9IERPTUpJVDo6QWJzdHJhY3RIZWFwUmVwb3NpdG9yeTo6c2hhcmVkKCk7CiAg
ICAgUmVmPEpTQzo6RE9NSklUOjpDYWxsRE9NR2V0dGVyUGF0Y2hwb2ludD4gcGF0Y2hwb2ludCA9
IEpTQzo6RE9NSklUOjpDYWxsRE9NR2V0dGVyUGF0Y2hwb2ludDo6Y3JlYXRlKCk7CiAgICAgcGF0
Y2hwb2ludC0+bnVtR1BTY3JhdGNoUmVnaXN0ZXJzID0gMTsKICAgICBwYXRjaHBvaW50LT5zZXRH
ZW5lcmF0b3IoWz1dKENDYWxsSGVscGVycyYgaml0LCBKU0M6OkRPTUpJVDo6UGF0Y2hwb2ludFBh
cmFtcyYgcGFyYW1zKSB7CkBAIC0xOTEsNyArMTg1LDcgQEAgUmVmPEpTQzo6RE9NSklUOjpDYWxs
RE9NR2V0dGVyUGF0Y2hwb2ludD4gTm9kZU93bmVyRG9jdW1lbnRET01KSVQ6OmNhbGxET01HZXR0
ZXIKICAgICAgICAgZG9uZS5saW5rKCZqaXQpOwogICAgICAgICByZXR1cm4gQ0NhbGxIZWxwZXJz
OjpKdW1wTGlzdCgpOwogICAgIH0pOwotICAgIHBhdGNocG9pbnQtPmVmZmVjdCA9IEpTQzo6RE9N
SklUOjpFZmZlY3Q6OmZvckRlZihoZWFwLk5vZGVfb3duZXJEb2N1bWVudCk7CisgICAgcGF0Y2hw
b2ludC0+ZWZmZWN0ID0gSlNDOjpET01KSVQ6OkVmZmVjdDo6Zm9yRGVmKERPTUpJVDo6QWJzdHJh
Y3RIZWFwUmVwb3NpdG9yeTo6Tm9kZV9vd25lckRvY3VtZW50KTsKICAgICByZXR1cm4gcGF0Y2hw
b2ludDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9taml0L2dlbmVyYXRlLWFi
c3RyYWN0LWhlYXAucmIgYi9Tb3VyY2UvV2ViQ29yZS9kb21qaXQvZ2VuZXJhdGUtYWJzdHJhY3Qt
aGVhcC5yYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5iNzQxMmU4NWQ2OWY0OTFhMmVhYWJhYTYxNzhmMWIyNWEwMmQw
OWI0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvZG9taml0L2dlbmVyYXRlLWFi
c3RyYWN0LWhlYXAucmIKQEAgLTAsMCArMSwxNjUgQEAKKyMhL3Vzci9iaW4vZW52IHJ1YnkKKyMg
LSotIGNvZGluZzogdXRmLTggLSotCisjIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1l
dDoKKyMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisjICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisj
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisjIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisjIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorCityZXF1aXJlICJ5YW1sIgorCitjbGFzcyBIZWFwUmFuZ2UKKyAgICBhdHRyX3JlYWRlciA6
Zmlyc3QsIDpsYXN0CisgICAgZGVmIGluaXRpYWxpemUoZmlyc3QsIGxhc3QpCisgICAgICAgIEBm
aXJzdCA9IGZpcnN0CisgICAgICAgIEBsYXN0ID0gbGFzdAorICAgIGVuZAorZW5kCisKK2NsYXNz
IEFic3RyYWN0SGVhcAorICAgIGF0dHJfcmVhZGVyIDpyYW5nZSwgOm5hbWUsIDpwYXJlbnQKKyAg
ICBkZWYgaW5pdGlhbGl6ZShuYW1lLCB0cmVlKQorICAgICAgICBAbmFtZSA9IG5hbWUKKyAgICAg
ICAgQHBhcmVudCA9IG5pbAorICAgICAgICBpZiB0cmVlLm5pbD8KKyAgICAgICAgICAgIEBjaGls
ZHJlbiA9IFtdCisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIEBjaGlsZHJlbiA9IHRyZWUubWFw
IHt8a2V5LCB2YWx1ZXwgQWJzdHJhY3RIZWFwLm5ldyhrZXksIHZhbHVlKSB9CisgICAgICAgIGVu
ZAorICAgICAgICBAcmFuZ2UgPSBuaWwKKyAgICBlbmQKKworICAgIGRlZiBzZXRQYXJlbnQocGFy
ZW50KQorICAgICAgICBwYXJlbnQuY2hpbGRyZW4ucHVzaChzZWxmKQorICAgICAgICBAcGFyZW50
ID0gcGFyZW50CisgICAgZW5kCisKKyAgICBkZWYgY29tcHV0ZShzdGFydCkKKyAgICAgICAgY3Vy
cmVudCA9IHN0YXJ0CisgICAgICAgIGlmIEBjaGlsZHJlbi5lbXB0eT8KKyAgICAgICAgICAgIEBy
YW5nZSA9IEhlYXBSYW5nZS5uZXcoc3RhcnQsIGN1cnJlbnQgKyAxKQorICAgICAgICAgICAgcmV0
dXJuCisgICAgICAgIGVuZAorCisgICAgICAgIEBjaGlsZHJlbi5lYWNoIHt8Y2hpbGR8CisgICAg
ICAgICAgICBjaGlsZC5jb21wdXRlKGN1cnJlbnQpCisgICAgICAgICAgICBjdXJyZW50ID0gY2hp
bGQucmFuZ2UubGFzdAorICAgICAgICB9CisKKyAgICAgICAgQHJhbmdlID0gSGVhcFJhbmdlLm5l
dyhzdGFydCwgY3VycmVudCkKKyAgICBlbmQKKworICAgIGRlZiBkdW1wIG91dHB1dAorICAgICAg
ICBzaGFsbG93RHVtcChvdXRwdXQpCisgICAgICAgIGlmIEBwYXJlbnQKKyAgICAgICAgICAgIG91
dHB1dC5wcmludCAiLT4gIgorICAgICAgICAgICAgQHBhcmVudC5kdW1wKG91dHB1dCkKKyAgICAg
ICAgZW5kCisgICAgZW5kCisKKyAgICBkZWYgc2hhbGxvd0R1bXAob3V0cHV0KQorICAgICAgICBv
dXRwdXQucHJpbnQgIiN7QG5hbWV9PCN7QHJhbmdlLmZpcnN0fSwje0ByYW5nZS5sYXN0fT4iCisg
ICAgZW5kCisKKyAgICBkZWYgZGVlcER1bXAgb3V0cHV0LCBpbmRlbnQKKyAgICAgICAgcHJpbnRJ
bmRlbnQob3V0cHV0LCBpbmRlbnQpCisgICAgICAgIHNoYWxsb3dEdW1wKG91dHB1dCkKKyAgICAg
ICAgaWYgQGNoaWxkcmVuLmVtcHR5PworICAgICAgICAgICAgb3V0cHV0LnByaW50ICJcbiIKKyAg
ICAgICAgICAgIHJldHVybgorICAgICAgICBlbmQKKworICAgICAgICBvdXRwdXQucHJpbnQgIjpc
biIKKyAgICAgICAgQGNoaWxkcmVuLmVhY2gge3xjaGlsZHwKKyAgICAgICAgICAgIGNoaWxkLmRl
ZXBEdW1wKG91dHB1dCwgaW5kZW50ICsgMSkKKyAgICAgICAgfQorICAgIGVuZAorCisgICAgZGVm
IGdlbmVyYXRlIG91dHB1dAorICAgICAgICBvdXRwdXQucHV0cyAiY29uc3RleHByIEpTQzo6RE9N
SklUOjpIZWFwUmFuZ2UgI3tAbmFtZX0oSlNDOjpET01KSVQ6OkhlYXBSYW5nZTo6Q29uc3RFeHBy
LCAje0ByYW5nZS5maXJzdH0sICN7QHJhbmdlLmxhc3R9KTsiCisgICAgICAgIEBjaGlsZHJlbi5l
YWNoIHt8Y2hpbGR8CisgICAgICAgICAgICBjaGlsZC5nZW5lcmF0ZShvdXRwdXQpCisgICAgICAg
IH0KKyAgICBlbmQKKworcHJpdmF0ZQorICAgIGRlZiBwcmludEluZGVudCBvdXRwdXQsIGluZGVu
dAorICAgICAgICBpbmRlbnQudGltZXMgeworICAgICAgICAgICAgb3V0cHV0LnByaW50ICIgICAg
IgorICAgICAgICB9CisgICAgZW5kCitlbmQKKworaGVhZGVyID0gPDwtRU9TCisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKy8vIEF1dG8tZ2VuZXJhdGVkIGZpbGUu
IERvIG5vdCBtb2RpZnkuCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8ZG9taml0L0RPTUpJ
VEhlYXBSYW5nZS5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7IG5hbWVzcGFjZSBET01KSVQgeyBu
YW1lc3BhY2UgQWJzdHJhY3RIZWFwUmVwb3NpdG9yeSB7CitFT1MKKworZm9vdGVyID0gPDwtRU9T
Cit9IH0gfQorRU9TCisKKyRpbnB1dEZpbGVOYW1lID0gQVJHVi5zaGlmdAorJG91dHB1dEZpbGVO
YW1lID0gQVJHVi5zaGlmdAorRmlsZS5vcGVuKCRvdXRwdXRGaWxlTmFtZSwgInciKSB7fG91dHB1
dHwKKyAgICBGaWxlLm9wZW4oJGlucHV0RmlsZU5hbWUsICJyYiIpIHt8ZmlsZXwKKyAgICAgICAg
dHJlZSA9IFlBTUw6OmxvYWQoZmlsZS5yZWFkKCkpCisgICAgICAgIGhlYXAgPSB0cmVlLm1hcCB7
fGtleSwgdmFsdWV8CisgICAgICAgICAgICBBYnN0cmFjdEhlYXAubmV3KGtleSwgdmFsdWUpCisg
ICAgICAgIH0uZmlyc3QKKyAgICAgICAgaGVhcC5jb21wdXRlKDApCisKKyAgICAgICAgb3V0cHV0
LnByaW50KGhlYWRlcikKKyAgICAgICAgb3V0cHV0LnB1dHMoIi8qIERPTUpJVCBBYnN0cmFjdCBI
ZWFwIFRyZWUuIikKKyAgICAgICAgaGVhcC5kZWVwRHVtcChvdXRwdXQsIDApCisgICAgICAgIG91
dHB1dC5wdXRzKCIqLyIpCisgICAgICAgIGhlYXAuZ2VuZXJhdGUob3V0cHV0KQorICAgICAgICBv
dXRwdXQucHJpbnQoZm9vdGVyKQorICAgIH0KK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0No
YW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBkOWM1MmI4MTI2MTllNzJhNzE4
OGViYTE4MDBmMWVmNTcwNjBkYTQxLi5mODA1YWFlY2EwYTQxNTNmNDQ0MzRmYzQ3YjRkZWJmMjM0
NDhlNGJlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjIgQEAKKzIwMTYtMTEtMDIgIFl1c3VrZSBTdXp1a2kg
IDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisKKyAgICAgICAgW0RPTUpJVF0gQWRkIERPTUpJVDo6
U2lnbmF0dXJlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNjI5ODAKKworICAgICAgICBSZXZpZXdlZCBieSBTYWFtIEJhcmF0aS4KKworICAgICAgICAq
IGpzL2RvbS9kb21qaXQtYWNjZXNzb3ItbGljbS5odG1sOgorICAgICAgICAqIGpzL2RvbS9kb21q
aXQtZnVuY3Rpb24tZWZmZWN0LXNob3VsZC1vdmVybGFwLXdpdGgtY2FsbC1leHBlY3RlZC50eHQ6
IEFkZGVkLgorICAgICAgICAqIGpzL2RvbS9kb21qaXQtZnVuY3Rpb24tZWZmZWN0LXNob3VsZC1v
dmVybGFwLXdpdGgtY2FsbC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBqcy9kb20vZG9taml0LWZ1
bmN0aW9uLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICoganMvZG9tL2RvbWppdC1mdW5j
dGlvbi1saWNtLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICoganMvZG9tL2RvbWppdC1m
dW5jdGlvbi1saWNtLmh0bWw6IENvcGllZCBmcm9tIExheW91dFRlc3RzL2pzL2RvbS9kb21qaXQt
YWNjZXNzb3ItbGljbS5odG1sLgorICAgICAgICAqIGpzL2RvbS9kb21qaXQtZnVuY3Rpb24tdHlw
ZS1jb250cmFkaWN0aW9uLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICoganMvZG9tL2Rv
bWppdC1mdW5jdGlvbi10eXBlLWNvbnRyYWRpY3Rpb24uaHRtbDogQ29waWVkIGZyb20gTGF5b3V0
VGVzdHMvanMvZG9tL2RvbWppdC1hY2Nlc3Nvci1saWNtLmh0bWwuCisgICAgICAgICoganMvZG9t
L2RvbWppdC1mdW5jdGlvbi10eXBlLWZhaWx1cmUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAg
ICAgKiBqcy9kb20vZG9taml0LWZ1bmN0aW9uLXR5cGUtZmFpbHVyZS5odG1sOiBDb3BpZWQgZnJv
bSBMYXlvdXRUZXN0cy9qcy9kb20vZG9taml0LWFjY2Vzc29yLWxpY20uaHRtbC4KKyAgICAgICAg
KiBqcy9kb20vZG9taml0LWZ1bmN0aW9uLmh0bWw6IEFkZGVkLgorCiAyMDE2LTExLTAyICBSeWFu
IEhhZGRhZCAgPHJ5YW5oYWRkYWRAYXBwbGUuY29tPgogCiAgICAgICAgIE1hcmtpbmcgaW1wb3J0
ZWQvbW96aWxsYS9zdmcvcGFpbnQtb3JkZXItMDEuc3ZnIGFuZCBpbXBvcnRlZC9tb3ppbGxhL3N2
Zy9wYWludC1vcmRlci0wMi5zdmcgYXMgZmxha3kuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9q
cy9kb20vZG9taml0LWFjY2Vzc29yLWxpY20uaHRtbCBiL0xheW91dFRlc3RzL2pzL2RvbS9kb21q
aXQtYWNjZXNzb3ItbGljbS5odG1sCmluZGV4IGU1NjNlYmE4OWZmY2RhMjkxYjUyNGRjZGY3NTBl
MmEzMDZhZTMyMDUuLjQwZDU1NjBkYTA1MzljYmYwODRhOWUxZDFlZjNmZTNmMWRjMzU0NGQgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL2pzL2RvbS9kb21qaXQtYWNjZXNzb3ItbGljbS5odG1sCisr
KyBiL0xheW91dFRlc3RzL2pzL2RvbS9kb21qaXQtYWNjZXNzb3ItbGljbS5odG1sCkBAIC0xLDE0
ICsxLDMgQEAKLTwhRE9DVFlQRSBIVE1MPgotPGh0bWwgbGFuZz0iZW4iPgotPGhlYWQ+Ci08bWV0
YSBjaGFyc2V0PSJVVEYtOCI+Ci08L2hlYWQ+Ci08Ym9keT4KLTxzY3JpcHQ+Ci0KLTwvc2NyaXB0
PgotPC9ib2R5PgotPC9odG1sPgogPCFET0NUWVBFIGh0bWw+CiA8aHRtbD4KIDxoZWFkPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvZG9tL2RvbWppdC1mdW5jdGlvbi1lZmZlY3Qtc2hvdWxk
LW92ZXJsYXAtd2l0aC1jYWxsLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2pzL2RvbS9kb21q
aXQtZnVuY3Rpb24tZWZmZWN0LXNob3VsZC1vdmVybGFwLXdpdGgtY2FsbC1leHBlY3RlZC50eHQK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uMTFkYzE5NmEzMmUyODhjMTJmNTE0NTYxY2ZjMjE0ZDI5ZWI5YzgxNwotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2pzL2RvbS9kb21qaXQtZnVuY3Rpb24tZWZmZWN0
LXNob3VsZC1vdmVybGFwLXdpdGgtY2FsbC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMCBAQAor
VGVzdCBmdW5jdGlvbiBjYWxscyBzaG91bGQgb3ZlcmxhcCB3aXRoIGVmZmVjdHMgb2YgRE9NSklU
IGZ1bmN0aW9ucy4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNT
IiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1MgdGVzdCgp
IGlzIHRydWUKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVU
RQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9kb20vZG9taml0LWZ1bmN0aW9uLWVmZmVj
dC1zaG91bGQtb3ZlcmxhcC13aXRoLWNhbGwuaHRtbCBiL0xheW91dFRlc3RzL2pzL2RvbS9kb21q
aXQtZnVuY3Rpb24tZWZmZWN0LXNob3VsZC1vdmVybGFwLXdpdGgtY2FsbC5odG1sCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjI4Y2IzOTJiMjk0MWJiYjhkMzMxYTc5MzMxZDU4YzNmYTU4MzA1ZTUKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9qcy9kb20vZG9taml0LWZ1bmN0aW9uLWVmZmVjdC1zaG91bGQt
b3ZlcmxhcC13aXRoLWNhbGwuaHRtbApAQCAtMCwwICsxLDMzIEBACis8IURPQ1RZUEUgaHRtbD4K
KzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJl
LmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0idGFyZ2V0Ij48L2Rpdj4K
KzwvZGl2PgorCis8c2NyaXB0PgorZGVzY3JpcHRpb24oJ1Rlc3QgZnVuY3Rpb24gY2FsbHMgc2hv
dWxkIG92ZXJsYXAgd2l0aCBlZmZlY3RzIG9mIERPTUpJVCBmdW5jdGlvbnMuJyk7CisKK2Z1bmN0
aW9uIHRlc3QoKQoreworICAgIHZhciB0YXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgn
dGFyZ2V0Jyk7CisgICAgdGFyZ2V0LnNldEF0dHJpYnV0ZSgiY29jb2EiLCAiMCIpOworICAgIGZv
ciAodmFyIGkgPSAwOyBpIDwgMWU0OyArK2kpIHsKKyAgICAgICAgdmFyIHJldCA9IHRhcmdldC5n
ZXRBdHRyaWJ1dGUoImNvY29hIik7CisgICAgICAgIGlmIChyZXQgIT09IFN0cmluZyhpKSkKKyAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgdGFyZ2V0LnNldEF0dHJpYnV0ZSgiY29j
b2EiLCBTdHJpbmcoaSArIDEpKTsKKyAgICAgICAgdmFyIHJldCA9IHRhcmdldC5nZXRBdHRyaWJ1
dGUoImNvY29hIik7CisgICAgICAgIGlmIChyZXQgPT09IFN0cmluZyhpKSkKKyAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3Nob3VsZEJlVHJ1
ZShgdGVzdCgpYCk7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMt
dGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2pzL2RvbS9kb21qaXQtZnVuY3Rpb24tZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvanMvZG9tL2RvbWppdC1mdW5jdGlvbi1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDVlNTZl
YmRjZDlmNmYxODZjNDdjZTc2OGMxNWMyMjVlYmUyZDBjNwotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2pzL2RvbS9kb21qaXQtZnVuY3Rpb24tZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEs
MTAgQEAKK1Rlc3QgRE9NSklUIGZ1bmN0aW9ucyB3b3JrLgorCitPbiBzdWNjZXNzLCB5b3Ugd2ls
bCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01Q
TEVURSIuCisKKworUEFTUyBBbGwgdGVzdHMgcGFzc2VkLgorUEFTUyBzdWNjZXNzZnVsbHlQYXJz
ZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pz
L2RvbS9kb21qaXQtZnVuY3Rpb24tbGljbS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9qcy9k
b20vZG9taml0LWZ1bmN0aW9uLWxpY20tZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmYxM2MwMzMw
NTk2NjJlNTU4YmM2ZmI5ZDczOWFiMzdlNzk2MWM4ZmIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9qcy9kb20vZG9taml0LWZ1bmN0aW9uLWxpY20tZXhwZWN0ZWQudHh0CkBAIC0wLDAg
KzEsOCBAQAorVGVzdCBET01KSVQgZnVuY3Rpb24gd2lsbCBiZSBMSUNNLWVkLgorCitPbiBzdWNj
ZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBi
eSAiVEVTVCBDT01QTEVURSIuCisKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKwor
VEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9kb20vZG9taml0LWZ1
bmN0aW9uLWxpY20uaHRtbCBiL0xheW91dFRlc3RzL2pzL2RvbS9kb21qaXQtZnVuY3Rpb24tbGlj
bS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjVmMmUzOTlkZDM1OWUxYzRmY2I0ZGZkZTJiYWNlOWUxYTBkNDRk
MzkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9qcy9kb20vZG9taml0LWZ1bmN0aW9u
LWxpY20uaHRtbApAQCAtMCwwICsxLDM1IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhl
YWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3Njcmlw
dD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBp
ZD0iY29uc29sZSI+PC9kaXY+CisKKzxkaXYgaWQ9InBhcmVudE5vZGUiPgorPGRpdiBpZD0icHJl
dmlvdXNTaWJsaW5nIj48L2Rpdj48ZGl2IGlkPSJ0YXJnZXQiPjxkaXYgaWQ9ImZpcnN0Q2hpbGQi
PjwvZGl2PjxkaXYgaWQ9Imxhc3RDaGlsZCI+PC9kaXY+PC9kaXY+PGRpdiBpZD0ibmV4dFNpYmxp
bmciPjwvZGl2PgorPC9kaXY+CisKKzxzY3JpcHQ+CitkZXNjcmlwdGlvbignVGVzdCBET01KSVQg
ZnVuY3Rpb24gd2lsbCBiZSBMSUNNLWVkLicpOworCitmdW5jdGlvbiB0ZXN0KCkgeworICAgIHZh
ciBkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKKyAgICB2YXIgcmV0ID0gImlu
dmFsaWQiOworICAgIGRpdi5zZXRBdHRyaWJ1dGUoImNvY29hIiwgIkNvY29hIik7CisgICAgZm9y
ICh2YXIgaSA9IDA7IGkgPCAxZTQ7ICsraSkKKyAgICAgICAgcmV0ID0gZGl2LmdldEF0dHJpYnV0
ZSgiY29jb2EiKTsKKyAgICByZXR1cm4gcmV0OworfQordmFyIHJlc3VsdDsKKyhmdW5jdGlvbiAo
KSB7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxMDA7ICsraSkgeworICAgICAgICByZXN1bHQg
PSB0ZXN0KCk7CisgICAgICAgIHNob3VsZEJlKGByZXN1bHRgLCBgIkNvY29hImAsIHRydWUpOwor
ICAgIH0KK30oKSk7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMt
dGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2pzL2RvbS9kb21qaXQtZnVuY3Rpb24tdHlwZS1jb250cmFkaWN0aW9uLWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL2pzL2RvbS9kb21qaXQtZnVuY3Rpb24tdHlwZS1jb250cmFk
aWN0aW9uLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zZDY4NzdkNGE4MDA2ODhiMjE2NzdiZWZh
ZmZlZWZmZDhhYjBiNzk2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMvZG9tL2Rv
bWppdC1mdW5jdGlvbi10eXBlLWNvbnRyYWRpY3Rpb24tZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEs
OCBAQAorVGVzdCBET01KSVQgZnVuY3Rpb24gd2lsbCBjYXVzZSB0eXBlIGNvbnRyYWRpY3Rpb24g
Z2l2aW5nIHVwLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1Mi
IG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKK1BBU1Mgc3VjY2Vzc2Z1
bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9qcy9kb20vZG9taml0LWZ1bmN0aW9uLXR5cGUtY29udHJhZGljdGlvbi5odG1sIGIvTGF5
b3V0VGVzdHMvanMvZG9tL2RvbWppdC1mdW5jdGlvbi10eXBlLWNvbnRyYWRpY3Rpb24uaHRtbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi44NGRjNWI2NzY5NDE4ZTk2NTU1YmFiODM4N2MzMDYwMzRhZjVjMGMwCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMvZG9tL2RvbWppdC1mdW5jdGlvbi10eXBlLWNv
bnRyYWRpY3Rpb24uaHRtbApAQCAtMCwwICsxLDM1IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1s
PgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48
L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2Pgor
PGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisKKzxkaXYgaWQ9InBhcmVudE5vZGUiPgorPGRpdiBp
ZD0icHJldmlvdXNTaWJsaW5nIj48L2Rpdj48ZGl2IGlkPSJ0YXJnZXQiPjxkaXYgaWQ9ImZpcnN0
Q2hpbGQiPjwvZGl2PjxkaXYgaWQ9Imxhc3RDaGlsZCI+PC9kaXY+PC9kaXY+PGRpdiBpZD0ibmV4
dFNpYmxpbmciPjwvZGl2PgorPC9kaXY+CisKKzxzY3JpcHQ+CitkZXNjcmlwdGlvbignVGVzdCBE
T01KSVQgZnVuY3Rpb24gd2lsbCBjYXVzZSB0eXBlIGNvbnRyYWRpY3Rpb24gZ2l2aW5nIHVwLicp
OworCit2YXIgZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CitkaXYuc2V0QXR0
cmlidXRlKCJjb2NvYSIsICJDb2NvYSIpOworZnVuY3Rpb24gdGVzdChkaXYpIHsKKyAgICB2YXIg
cmV0ID0gImludmFsaWQiOworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMWU0OyArK2kpCisgICAg
ICAgIHJldCA9IGRpdi5nZXRBdHRyaWJ1dGUoMjAwKTsKKyAgICByZXR1cm4gcmV0OworfQordmFy
IHJlc3VsdDsKKyhmdW5jdGlvbiAoKSB7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxMDA7ICsr
aSkgeworICAgICAgICByZXN1bHQgPSB0ZXN0KGRpdik7CisgICAgICAgIHNob3VsZEJlKGByZXN1
bHRgLCBgbnVsbGAsIHRydWUpOworICAgIH0KK30oKSk7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwv
aHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL2RvbS9kb21qaXQtZnVuY3Rpb24tdHlw
ZS1mYWlsdXJlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2pzL2RvbS9kb21qaXQtZnVuY3Rp
b24tdHlwZS1mYWlsdXJlLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yYzEwMmIzNzZiZjgyMzJi
NDJiZDFhM2NlNDFkZTE3NzFhMjdiNmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
anMvZG9tL2RvbWppdC1mdW5jdGlvbi10eXBlLWZhaWx1cmUtZXhwZWN0ZWQudHh0CkBAIC0wLDAg
KzEsOCBAQAorVGVzdCBET01KSVQgZnVuY3Rpb24gd2lsbCBjYXVzZSBCYWRUeXBlIE9TUiBleGl0
cy4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdl
cywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNl
ZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMv
ZG9tL2RvbWppdC1mdW5jdGlvbi10eXBlLWZhaWx1cmUuaHRtbCBiL0xheW91dFRlc3RzL2pzL2Rv
bS9kb21qaXQtZnVuY3Rpb24tdHlwZS1mYWlsdXJlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmI3NjYxNDE4
N2VkYTg3ZGFjMjZjMjBhNmUzMTIyY2YwNjU0YTgxNgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2pzL2RvbS9kb21qaXQtZnVuY3Rpb24tdHlwZS1mYWlsdXJlLmh0bWwKQEAgLTAsMCAr
MSwzOSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4u
Ly4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4K
KzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2Pgor
Cis8ZGl2IGlkPSJwYXJlbnROb2RlIj4KKzxkaXYgaWQ9InByZXZpb3VzU2libGluZyI+PC9kaXY+
PGRpdiBpZD0idGFyZ2V0Ij48ZGl2IGlkPSJmaXJzdENoaWxkIj48L2Rpdj48ZGl2IGlkPSJsYXN0
Q2hpbGQiPjwvZGl2PjwvZGl2PjxkaXYgaWQ9Im5leHRTaWJsaW5nIj48L2Rpdj4KKzwvZGl2Pgor
Cis8c2NyaXB0PgorZGVzY3JpcHRpb24oJ1Rlc3QgRE9NSklUIGZ1bmN0aW9uIHdpbGwgY2F1c2Ug
QmFkVHlwZSBPU1IgZXhpdHMuJyk7CisKK3ZhciBkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
KCdkaXYnKTsKK2Rpdi5zZXRBdHRyaWJ1dGUoImNvY29hIiwgIkNvY29hIik7CitmdW5jdGlvbiB0
ZXN0KGRpdiwgbmFtZSkgeworICAgIHZhciByZXQgPSAiaW52YWxpZCI7CisgICAgZm9yICh2YXIg
aSA9IDA7IGkgPCAxZTQ7ICsraSkKKyAgICAgICAgcmV0ID0gZGl2LmdldEF0dHJpYnV0ZShuYW1l
KTsKKyAgICByZXR1cm4gcmV0OworfQordmFyIHJlc3VsdDsKKyhmdW5jdGlvbiAoKSB7CisgICAg
Zm9yICh2YXIgaSA9IDA7IGkgPCAxMDA7ICsraSkgeworICAgICAgICByZXN1bHQgPSB0ZXN0KGRp
diwgJ2NvY29hJyk7CisgICAgICAgIHNob3VsZEJlKGByZXN1bHRgLCBgIkNvY29hImAsIHRydWUp
OworICAgIH0KKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IDEwMDsgKytpKSB7CisgICAgICAgIHJl
c3VsdCA9IHRlc3QoZGl2LCA0MDApOworICAgICAgICBzaG91bGRCZShgcmVzdWx0YCwgYG51bGxg
LCB0cnVlKTsKKyAgICB9Cit9KCkpOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVz
b3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9qcy9kb20vZG9taml0LWZ1bmN0aW9uLmh0bWwgYi9MYXlvdXRU
ZXN0cy9qcy9kb20vZG9taml0LWZ1bmN0aW9uLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTFlYThhNTk5ZDg5
NjVkZTVhMDNhODU0ZDQ5NDNkZTViOWFjM2Q2NAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2pzL2RvbS9kb21qaXQtZnVuY3Rpb24uaHRtbApAQCAtMCwwICsxLDU4IEBACis8IURPQ1RZ
UEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pz
LXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0idGFyZ2V0
IiBjb2NvYT0iY29jb2EiPjxkaXYgaWQ9ImZpcnN0Q2hpbGQiPjwvZGl2PjxkaXYgaWQ9Imxhc3RD
aGlsZCI+PC9kaXY+PC9kaXY+Cis8L2Rpdj4KKworPHNjcmlwdD4KK2Rlc2NyaXB0aW9uKCdUZXN0
IERPTUpJVCBmdW5jdGlvbnMgd29yay4nKTsKK3ZhciBkaXY7CisoZnVuY3Rpb24gKCkgeworICAg
IGRpdiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0YXJnZXQnKTsKKworICAgIGZ1bmN0aW9u
IGEoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGRpdi5nZXRBdHRyaWJ1dGUoJ2NvY29hJykgPT09
ICdjb2NvYSc7CisgICAgfQorCisgICAgZnVuY3Rpb24gYigpCisgICAgeworICAgICAgICByZXR1
cm4gZGl2LmdldEF0dHJpYnV0ZU5vZGUoJ2NvY29hJykubm9kZVR5cGUgPT09IE5vZGUuQVRUUklC
VVRFX05PREU7CisgICAgfQorCisgICAgZnVuY3Rpb24gYygpCisgICAgeworICAgICAgICByZXR1
cm4gZGl2LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdkaXYnKS5sZW5ndGggPT09IDI7CisgICAgfQor
CisgICAgZnVuY3Rpb24gZCgpCisgICAgeworICAgICAgICByZXR1cm4gZGl2Lmhhc0F0dHJpYnV0
ZSgnY29jb2EnKSA9PT0gdHJ1ZTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBtYWluKCkKKyAgICB7
CisgICAgICAgIGlmICghYSgpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBp
ZiAoIWIoKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgaWYgKCFjKCkpCisg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIGlmICghZCgpKQorICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICBmb3IgKHZh
ciBpID0gMDsgaSA8IDFlNDsgKytpKSB7CisgICAgICAgIGlmICghbWFpbigpKQorICAgICAgICAg
ICAgdGhyb3cgbmV3IEVycm9yKCJlcnJvciIpOworICAgIH0KKyAgICB0ZXN0UGFzc2VkKCJBbGwg
dGVzdHMgcGFzc2VkLiIpOworfSgpKTsKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jl
c291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgo=
</data>
<flag name="review"
          id="316581"
          type_id="1"
          status="+"
          setter="sam"
    />
          </attachment>
      

    </bug>

</bugzilla>