<?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>110875</bug_id>
          
          <creation_ts>2013-02-26 05:38:41 -0800</creation_ts>
          <short_desc>[V8] Add a &quot;context type&quot; parameter to GetTemplate and ConfigureV8SomethingTemplate functions</short_desc>
          <delta_ts>2013-03-11 06:11:50 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>111565</dependson>
          <blocked>110874</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Marja Hölttä">marja</reporter>
          <assigned_to name="Marja Hölttä">marja</assigned_to>
          <cc>abarth</cc>
    
    <cc>ataly</cc>
    
    <cc>dcarney</cc>
    
    <cc>dcarney</cc>
    
    <cc>dglazkov</cc>
    
    <cc>haraken</cc>
    
    <cc>japhet</cc>
    
    <cc>jochen</cc>
    
    <cc>ossy</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>841921</commentid>
    <comment_count>0</comment_count>
    <who name="Marja Hölttä">marja</who>
    <bug_when>2013-02-26 05:38:41 -0800</bug_when>
    <thetext>The context type can be one of {&quot;main world&quot;, &quot;isolated world&quot;, &quot;worker&quot;}.

The added parameter will later be used for
- retrieving the correct FunctionTemplate, once we have separate ones for separate context types
- generating a FunctionTemplate specific to the context type, and it will possibly have custom generated attribute getters and callbacks (which in turn will be more efficient than the non-customized ones, because they know in which of the three case we&apos;re in, so they don&apos;t need code for checking it.

See bug 110874 for the overall plan.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>841964</commentid>
    <comment_count>1</comment_count>
      <attachid>190276</attachid>
    <who name="Marja Hölttä">marja</who>
    <bug_when>2013-02-26 06:58:22 -0800</bug_when>
    <thetext>Created attachment 190276
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>841972</commentid>
    <comment_count>2</comment_count>
    <who name="Dan Carney">dcarney</who>
    <bug_when>2013-02-26 07:19:24 -0800</bug_when>
    <thetext>Seems good.

Calls to V8DOMWindow::GetTemplate should probably use a different call like getMainIsolateContextType or something that doesn&apos;t check for workers

Run dromeao and binding performance tests and verify there are no regressions here.  If so, we might need to get tricky about how we do the checks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>842030</commentid>
    <comment_count>3</comment_count>
      <attachid>190291</attachid>
    <who name="Marja Hölttä">marja</who>
    <bug_when>2013-02-26 08:25:10 -0800</bug_when>
    <thetext>Created attachment 190291
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>842050</commentid>
    <comment_count>4</comment_count>
      <attachid>190291</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2013-02-26 08:53:56 -0800</bug_when>
    <thetext>Comment on attachment 190291
Patch

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

&gt; Source/WebCore/bindings/v8/WrapperTypeInfo.h:50
&gt; +    enum WrapperContextType {

Maybe WrapperWorldType is better?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>842374</commentid>
    <comment_count>5</comment_count>
      <attachid>190291</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2013-02-26 14:31:03 -0800</bug_when>
    <thetext>Comment on attachment 190291
Patch

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

&gt; Source/WebCore/bindings/v8/V8Binding.h:477
&gt; +    WrapperContextType getContextType(v8::Isolate*);

&quot;get&quot; &lt;--- we usually skip the &quot;get&quot; prefix since it doesn&apos;t mean much.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>842375</commentid>
    <comment_count>6</comment_count>
      <attachid>190291</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2013-02-26 14:32:56 -0800</bug_when>
    <thetext>Comment on attachment 190291
Patch

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

&gt; Source/WebCore/bindings/v8/V8Binding.cpp:316
&gt; +        DOMWrapperWorld* isolatedWorld = DOMWrapperWorld::getWorld(v8::Context::GetEntered());

Does this always work?  I wonder if there&apos;s a case where we need to do an &quot;instance of&quot; check but we aren&apos;t in a context...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>842389</commentid>
    <comment_count>7</comment_count>
      <attachid>190291</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2013-02-26 14:44:35 -0800</bug_when>
    <thetext>Comment on attachment 190291
Patch

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

&gt;&gt; Source/WebCore/bindings/v8/V8Binding.cpp:316
&gt;&gt; +        DOMWrapperWorld* isolatedWorld = DOMWrapperWorld::getWorld(v8::Context::GetEntered());
&gt; 
&gt; Does this always work?  I wonder if there&apos;s a case where we need to do an &quot;instance of&quot; check but we aren&apos;t in a context...

Yeah, v8::Context::GetEntered() can be empty, which might happen in GetTemplate()/GetRawTemplate() (I&apos;m not sure, please check).

Also, I think you can implement getContextType() more easily by using V8Binding::worldForEnteredContext().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>844040</commentid>
    <comment_count>8</comment_count>
      <attachid>190716</attachid>
    <who name="Marja Hölttä">marja</who>
    <bug_when>2013-02-28 06:50:10 -0800</bug_when>
    <thetext>Created attachment 190716
Patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>844041</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-28 06:53:02 -0800</bug_when>
    <thetext>Attachment 190716 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCore/bindings/scripts/CodeGeneratorV8.pm&apos;, u&apos;Source/WebCore/bindings/v8/DOMWrapperWorld.cpp&apos;, u&apos;Source/WebCore/bindings/v8/DOMWrapperWorld.h&apos;, u&apos;Source/WebCore/bindings/v8/Dictionary.cpp&apos;, u&apos;Source/WebCore/bindings/v8/PageScriptDebugServer.cpp&apos;, u&apos;Source/WebCore/bindings/v8/V8AdaptorFunction.cpp&apos;, u&apos;Source/WebCore/bindings/v8/V8AdaptorFunction.h&apos;, u&apos;Source/WebCore/bindings/v8/V8Binding.cpp&apos;, u&apos;Source/WebCore/bindings/v8/V8Binding.h&apos;, u&apos;Source/WebCore/bindings/v8/V8DOMWindowShell.cpp&apos;, u&apos;Source/WebCore/bindings/v8/V8DOMWrapper.cpp&apos;, u&apos;Source/WebCore/bindings/v8/V8Initializer.cpp&apos;, u&apos;Source/WebCore/bindings/v8/V8PerContextData.cpp&apos;, u&apos;Source/WebCore/bindings/v8/WorkerScriptController.cpp&apos;, u&apos;Source/WebCore/bindings/v8/WrapperTypeInfo.h&apos;, u&apos;Source/WebCore/bindings/v8/custom/V8DOMWindowCustom.cpp&apos;, u&apos;Source/WebCore/bindings/v8/custom/V8HTMLDocumentCustom.cpp&apos;, u&apos;Source/WebCore/bindings/v8/custom/V8HTMLImageElementConstructor.cpp&apos;, u&apos;Source/WebCore/bindings/v8/custom/V8HTMLImageElementConstructor.h&apos;, u&apos;Source/WebCore/bindings/v8/custom/V8InjectedScriptManager.cpp&apos;, u&apos;Source/WebCore/bindings/v8/custom/V8LocationCustom.cpp&apos;, u&apos;Source/WebCore/bindings/v8/custom/V8MessageEventCustom.cpp&apos;]&quot; exit_code: 1
Source/WebCore/bindings/v8/V8DOMWindowShell.cpp:37:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 1 in 23 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>844044</commentid>
    <comment_count>10</comment_count>
      <attachid>190718</attachid>
    <who name="Marja Hölttä">marja</who>
    <bug_when>2013-02-28 06:55:04 -0800</bug_when>
    <thetext>Created attachment 190718
Patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>844048</commentid>
    <comment_count>11</comment_count>
      <attachid>190720</attachid>
    <who name="Marja Hölttä">marja</who>
    <bug_when>2013-02-28 06:57:32 -0800</bug_when>
    <thetext>Created attachment 190720
Patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>844050</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-28 07:02:00 -0800</bug_when>
    <thetext>Attachment 190720 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCore/bindings/scripts/CodeGeneratorV8.pm&apos;, u&apos;Source/WebCore/bindings/v8/DOMWrapperWorld.cpp&apos;, u&apos;Source/WebCore/bindings/v8/DOMWrapperWorld.h&apos;, u&apos;Source/WebCore/bindings/v8/Dictionary.cpp&apos;, u&apos;Source/WebCore/bindings/v8/PageScriptDebugServer.cpp&apos;, u&apos;Source/WebCore/bindings/v8/V8AdaptorFunction.cpp&apos;, u&apos;Source/WebCore/bindings/v8/V8AdaptorFunction.h&apos;, u&apos;Source/WebCore/bindings/v8/V8Binding.cpp&apos;, u&apos;Source/WebCore/bindings/v8/V8Binding.h&apos;, u&apos;Source/WebCore/bindings/v8/V8DOMWindowShell.cpp&apos;, u&apos;Source/WebCore/bindings/v8/V8DOMWrapper.cpp&apos;, u&apos;Source/WebCore/bindings/v8/V8Initializer.cpp&apos;, u&apos;Source/WebCore/bindings/v8/V8PerContextData.cpp&apos;, u&apos;Source/WebCore/bindings/v8/WorkerScriptController.cpp&apos;, u&apos;Source/WebCore/bindings/v8/WrapperTypeInfo.h&apos;, u&apos;Source/WebCore/bindings/v8/custom/V8DOMWindowCustom.cpp&apos;, u&apos;Source/WebCore/bindings/v8/custom/V8HTMLDocumentCustom.cpp&apos;, u&apos;Source/WebCore/bindings/v8/custom/V8HTMLImageElementConstructor.cpp&apos;, u&apos;Source/WebCore/bindings/v8/custom/V8HTMLImageElementConstructor.h&apos;, u&apos;Source/WebCore/bindings/v8/custom/V8InjectedScriptManager.cpp&apos;, u&apos;Source/WebCore/bindings/v8/custom/V8LocationCustom.cpp&apos;, u&apos;Source/WebCore/bindings/v8/custom/V8MessageEventCustom.cpp&apos;]&quot; exit_code: 1
Source/WebCore/bindings/v8/V8DOMWindowShell.cpp:36:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 1 in 23 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>844127</commentid>
    <comment_count>13</comment_count>
      <attachid>190720</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-28 08:44:00 -0800</bug_when>
    <thetext>Comment on attachment 190720
Patch.

Attachment 190720 did not pass chromium-ews (chromium-xvfb):
Output: http://webkit-commit-queue.appspot.com/results/16782411

New failing tests:
fast/dom/title-directionality.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>844130</commentid>
    <comment_count>14</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2013-02-28 08:49:43 -0800</bug_when>
    <thetext>Nit: WebKit conventionally use [&lt;&lt;port&gt;&gt;] prefix in the bug title.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>844137</commentid>
    <comment_count>15</comment_count>
      <attachid>190720</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2013-02-28 09:02:19 -0800</bug_when>
    <thetext>Comment on attachment 190720
Patch.

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

&gt; Source/WebCore/bindings/v8/DOMWrapperWorld.cpp:44
&gt; +static bool initializingWindow = false;

How about changing this to &apos;windowInitialized&apos;? Then you can set false initially and flip it at the point where the initialization is completed.

&gt; Source/WebCore/bindings/v8/V8Binding.cpp:316
&gt; +    V8PerIsolateData* data = isolate ? V8PerIsolateData::from(isolate) : V8PerIsolateData::current();

When can the isolate be 0 ?

&gt; Source/WebCore/bindings/v8/V8Binding.cpp:318
&gt; +    if (UNLIKELY(!!data-&gt;domDataStore()))

Remove UNLIKELY unless you can observe any performance gain by adding UNLIKELY.

&gt; Source/WebCore/bindings/v8/V8Binding.cpp:322
&gt; +        DOMWrapperWorld* isolatedWorld = DOMWrapperWorld::getWorld(v8::Context::GetEntered());

We want to add ASSERT(!v8::Context::GetEntered().IsEmpty()).

&gt; Source/WebCore/bindings/v8/V8Binding.cpp:329
&gt; +WrapperWorldType mainIsolateWorldType(v8::Isolate* isolate)

Maybe &apos;worldTypeForMainThread&apos; is a better name?

&gt; Source/WebCore/bindings/v8/V8Binding.cpp:332
&gt; +        DOMWrapperWorld* isolatedWorld = DOMWrapperWorld::getWorld(v8::Context::GetEntered());

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>845007</commentid>
    <comment_count>16</comment_count>
      <attachid>190918</attachid>
    <who name="Marja Hölttä">marja</who>
    <bug_when>2013-03-01 03:04:58 -0800</bug_when>
    <thetext>Created attachment 190918
Patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>845010</commentid>
    <comment_count>17</comment_count>
      <attachid>190720</attachid>
    <who name="Marja Hölttä">marja</who>
    <bug_when>2013-03-01 03:07:23 -0800</bug_when>
    <thetext>Comment on attachment 190720
Patch.

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

&gt;&gt; Source/WebCore/bindings/v8/DOMWrapperWorld.cpp:44
&gt;&gt; +static bool initializingWindow = false;
&gt; 
&gt; How about changing this to &apos;windowInitialized&apos;? Then you can set false initially and flip it at the point where the initialization is completed.

As discussed: That won&apos;t work, we&apos;ll run into problems when the next DOMWindow is getting initialized (after the previous one has finished initializing).

&gt;&gt; Source/WebCore/bindings/v8/V8Binding.cpp:316
&gt;&gt; +    V8PerIsolateData* data = isolate ? V8PerIsolateData::from(isolate) : V8PerIsolateData::current();
&gt; 
&gt; When can the isolate be 0 ?

Added a TODO here to assert that it can&apos;t be -&gt; follow-up change.

&gt;&gt; Source/WebCore/bindings/v8/V8Binding.cpp:318
&gt;&gt; +    if (UNLIKELY(!!data-&gt;domDataStore()))
&gt; 
&gt; Remove UNLIKELY unless you can observe any performance gain by adding UNLIKELY.

Done.

&gt;&gt; Source/WebCore/bindings/v8/V8Binding.cpp:322
&gt;&gt; +        DOMWrapperWorld* isolatedWorld = DOMWrapperWorld::getWorld(v8::Context::GetEntered());
&gt; 
&gt; We want to add ASSERT(!v8::Context::GetEntered().IsEmpty()).

Done.

&gt;&gt; Source/WebCore/bindings/v8/V8Binding.cpp:329
&gt;&gt; +WrapperWorldType mainIsolateWorldType(v8::Isolate* isolate)
&gt; 
&gt; Maybe &apos;worldTypeForMainThread&apos; is a better name?

Chatted with dcarney -&gt; we don&apos;t think that it&apos;s a better name, but let me know if you feel strongly about this.

&gt;&gt; Source/WebCore/bindings/v8/V8Binding.cpp:332
&gt;&gt; +        DOMWrapperWorld* isolatedWorld = DOMWrapperWorld::getWorld(v8::Context::GetEntered());
&gt; 
&gt; Ditto.

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>845018</commentid>
    <comment_count>18</comment_count>
    <who name="Marja Hölttä">marja</who>
    <bug_when>2013-03-01 03:20:10 -0800</bug_when>
    <thetext>Also, a note about performance tests:

I ran the Bindings and Dromaeo perf tests locally. Most tests don&apos;t show any reproducible regression. There&apos;s one test, Bindings/gc-tree.html that seems to regress, but we verified by putting counters on the added functions, that they shouldn&apos;t be the problem. E.g., mainIsolateWorldType is called ~ 250 times during the test. So this patch shouldn&apos;t be related. And the performance gain of the separate generated bindings (which will be the next patch) should outweigh it anyway.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>845225</commentid>
    <comment_count>19</comment_count>
      <attachid>190918</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2013-03-01 09:12:29 -0800</bug_when>
    <thetext>Comment on attachment 190918
Patch.

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

Almost LGTM

&gt; Source/WebCore/ChangeLog:7
&gt; +

Please describe the rationale of the change so that others can understand what you are doing.

&gt; Source/WebCore/bindings/v8/DOMWrapperWorld.cpp:44
&gt; +static bool initializingWindow = false;

How about making this a static variable of DOMWrapperWorld?

&gt; Source/WebCore/bindings/v8/DOMWrapperWorld.cpp:51
&gt; +void DOMWrapperWorld::setInitializingWindow(bool initializing)

We normally write a simple setter in a header file.

&gt; Source/WebCore/bindings/v8/V8Binding.cpp:315
&gt; +{

You might want to add ASSERT(!initializingWindow).

&gt; Source/WebCore/bindings/v8/V8Binding.cpp:316
&gt; +    // TODO: Assert that isolate is not 0.

When can it happen? As far as I see the patch, isolate is always non-0.

&gt; Source/WebCore/bindings/v8/V8Binding.h:478
&gt; +    WrapperWorldType mainIsolateWorldType(v8::Isolate*);

At least, let&apos;s rename to mainIsolatedWorldType.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>845489</commentid>
    <comment_count>20</comment_count>
      <attachid>190918</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2013-03-01 14:09:02 -0800</bug_when>
    <thetext>Comment on attachment 190918
Patch.

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

&gt; Source/WebCore/bindings/v8/WrapperTypeInfo.h:54
&gt; +    enum WrapperWorldType {
&gt; +        MainWorld,
&gt; +        IsolatedWorld,
&gt; +        WorkerWorld
&gt; +    };

This enum already exists as DOMDataStore::Type.  We should unify them somehow.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>845780</commentid>
    <comment_count>21</comment_count>
    <who name="Dan Carney">dcarney</who>
    <bug_when>2013-03-02 02:31:06 -0800</bug_when>
    <thetext>&gt; 
&gt; &gt; Source/WebCore/bindings/v8/V8Binding.h:478
&gt; &gt; +    WrapperWorldType mainIsolateWorldType(v8::Isolate*);
&gt; 
&gt; At least, let&apos;s rename to mainIsolatedWorldType.

I don&apos;t care which it&apos;s called, except that It has to refer to either the mainThread or the mainIsolate.  It has to distinguish worker isolates from non worker isolates.  mainIsolatedWorld has no meaning.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>845781</commentid>
    <comment_count>22</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2013-03-02 02:32:55 -0800</bug_when>
    <thetext>(In reply to comment #21)
&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/bindings/v8/V8Binding.h:478
&gt; &gt; &gt; +    WrapperWorldType mainIsolateWorldType(v8::Isolate*);
&gt; &gt; 
&gt; &gt; At least, let&apos;s rename to mainIsolatedWorldType.
&gt; 
&gt; I don&apos;t care which it&apos;s called, except that It has to refer to either the mainThread or the mainIsolate.  It has to distinguish worker isolates from non worker isolates.  mainIsolatedWorld has no meaning.

I&apos;ve discussed it with marja offline, and we decided to use worldTypeInMainThread.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>845783</commentid>
    <comment_count>23</comment_count>
    <who name="Dan Carney">dcarney</who>
    <bug_when>2013-03-02 02:34:40 -0800</bug_when>
    <thetext>&gt; This enum already exists as DOMDataStore::Type.  We should unify them somehow.

It&apos;s true, the point on the patch is to be able to access the correct DOMDataStore faster, so unification makes a ton of sense.  We&apos;ll need to use the same variable in the functiontemplate caches, so it&apos;ll need to be moved somewhere that makes sense for both uses cases.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>846261</commentid>
    <comment_count>24</comment_count>
      <attachid>191182</attachid>
    <who name="Marja Hölttä">marja</who>
    <bug_when>2013-03-04 02:30:37 -0800</bug_when>
    <thetext>Created attachment 191182
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>846263</commentid>
    <comment_count>25</comment_count>
      <attachid>191182</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2013-03-04 02:37:55 -0800</bug_when>
    <thetext>Comment on attachment 191182
Patch

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

&gt; Source/WebCore/ChangeLog:7
&gt; +

For this kind of non-trivial changes, please explain your change (why you are making the change &amp; what the change is doing).

&gt; Source/WebCore/bindings/v8/V8Binding.cpp:316
&gt; +    ASSERT(isolate);

Nit: Remove this. It is already asserted in V8PerIsolateData::from().

&gt; Source/WebCore/bindings/v8/V8Binding.cpp:318
&gt; +    // TODO: Rename domDataStore() to workerDataStore().

Nit: TODO =&gt; FIXME (This is a coding style of WebKit:-)

&gt; Source/WebCore/bindings/v8/WrapperTypeInfo.h:54
&gt; +    enum WrapperWorldType {
&gt; +        MainWorld,
&gt; +        IsolatedWorld,
&gt; +        WorkerWorld
&gt; +    };

I prefer putting the enum in DOMWrapperWorld.h because it is about DOMWrapperWorld. Maybe is it hard for you due to build dependency?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>846266</commentid>
    <comment_count>26</comment_count>
    <who name="Dan Carney">dcarney</who>
    <bug_when>2013-03-04 02:43:04 -0800</bug_when>
    <thetext>
&gt; I prefer putting the enum in DOMWrapperWorld.h because it is about DOMWrapperWorld. Maybe is it hard for you due to build dependency?

It is about domwrapperworld and the functiontemplate caches.  I think DOMWrapperWorld is no longer the best place for it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>846267</commentid>
    <comment_count>27</comment_count>
    <who name="Dan Carney">dcarney</who>
    <bug_when>2013-03-04 02:45:28 -0800</bug_when>
    <thetext>(In reply to comment #26)
&gt; &gt; I prefer putting the enum in DOMWrapperWorld.h because it is about DOMWrapperWorld. Maybe is it hard for you due to build dependency?

sorry i meant to say domwrappermap and the functiontemplate caches.  domwrapperworld knows nothing about workers.  it is a main thread class, which is why the enum doesn&apos;t really makes sense there</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>846270</commentid>
    <comment_count>28</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2013-03-04 02:47:22 -0800</bug_when>
    <thetext>(In reply to comment #27)
&gt; (In reply to comment #26)
&gt; &gt; &gt; I prefer putting the enum in DOMWrapperWorld.h because it is about DOMWrapperWorld. Maybe is it hard for you due to build dependency?
&gt; 
&gt; sorry i meant to say domwrappermap and the functiontemplate caches.  domwrapperworld knows nothing about workers.  it is a main thread class, which is why the enum doesn&apos;t really makes sense there

Makes sense. (Maybe we should rename DOMWrapperWorld to DOMIsolatedWorld (anyway in a follow-up patch)?)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>846276</commentid>
    <comment_count>29</comment_count>
      <attachid>191186</attachid>
    <who name="Marja Hölttä">marja</who>
    <bug_when>2013-03-04 02:54:51 -0800</bug_when>
    <thetext>Created attachment 191186
Patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>846279</commentid>
    <comment_count>30</comment_count>
      <attachid>191186</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2013-03-04 02:58:59 -0800</bug_when>
    <thetext>Comment on attachment 191186
Patch.

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

LGTM. Thanks for the patch!

&gt; Source/WebCore/ChangeLog:9
&gt; +        The parameter will later be used for generating specialized V8
&gt; +        bindings for the 3 different world types (main world, isolated
&gt; +        work, worker).
&gt; +

We normally write the description between the &quot;Reviewed By&quot; line and the &quot;Test:&quot; line. Please do it from your next patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>846332</commentid>
    <comment_count>31</comment_count>
      <attachid>191186</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-04 04:28:54 -0800</bug_when>
    <thetext>Comment on attachment 191186
Patch.

Clearing flags on attachment: 191186

Committed r144617: &lt;http://trac.webkit.org/changeset/144617&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>846333</commentid>
    <comment_count>32</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-04 04:28:59 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>846626</commentid>
    <comment_count>33</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2013-03-04 10:46:50 -0800</bug_when>
    <thetext>(In reply to comment #31)
&gt; (From update of attachment 191186 [details])
&gt; Clearing flags on attachment: 191186
&gt; 
&gt; Committed r144617: &lt;http://trac.webkit.org/changeset/144617&gt;

It broke the bindings generation tests. Could you fix it, please?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>846720</commentid>
    <comment_count>34</comment_count>
    <who name="">jochen</who>
    <bug_when>2013-03-04 12:22:25 -0800</bug_when>
    <thetext>(In reply to comment #33)
&gt; (In reply to comment #31)
&gt; &gt; (From update of attachment 191186 [details] [details])
&gt; &gt; Clearing flags on attachment: 191186
&gt; &gt; 
&gt; &gt; Committed r144617: &lt;http://trac.webkit.org/changeset/144617&gt;
&gt; 
&gt; It broke the bindings generation tests. Could you fix it, please?

fixed in http://trac.webkit.org/changeset/144651</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>850283</commentid>
    <comment_count>35</comment_count>
    <who name="Ankur Taly">ataly</who>
    <bug_when>2013-03-07 10:55:53 -0800</bug_when>
    <thetext>I am curious to know why the WorldWrapperType is not passed to the GetRawTemplate and HasInstance methods in the generated bindings?

My understanding is as follows:
The GetTemplate method invokes GetRawTemplate, and raw templates gets cached in PerIsolateData. So going forward we will need 3 different template and raw template caches in PerIsolateData. Therefore GetRawTemplate must have the WorldWrapperType argument so that it can select the correct cache. Since HasInstance invokes GetRawTemplate, it should also have the WorldWrapperType argument.

Am I missing something?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>850311</commentid>
    <comment_count>36</comment_count>
    <who name="Marja Hölttä">marja</who>
    <bug_when>2013-03-07 11:18:03 -0800</bug_when>
    <thetext>Adding the world type parameter to GetRawTemplate and GetTemplate is the next step (patch in bug 111724). HasInstance doesn&apos;t need a world type parameter, because it already gets an isolate, and can use worldType() to figure out the world type.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>850324</commentid>
    <comment_count>37</comment_count>
    <who name="Ankur Taly">ataly</who>
    <bug_when>2013-03-07 11:31:29 -0800</bug_when>
    <thetext>Thanks for the clarification.

Another related question: Invoking the HasInstance method in the generated bindings could potentially construct a new raw FunctionTemplate (if it does not find it the rawTemplateMap cache in PerIsolateData) and then invoke the HasInstance method on it. However the HasInstance call on this new FunctionTemplate will always return false.

I wonder if we should define HasInstance so that it never constructs a new template? Furthermore, HasInstance invocations appear inside various ASSERT statements, so ideally they should all be side-effect free.

Does this make sense?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>852232</commentid>
    <comment_count>38</comment_count>
    <who name="Marja Hölttä">marja</who>
    <bug_when>2013-03-11 06:11:50 -0700</bug_when>
    <thetext>I don&apos;t have an opinion about the HasInstance; I&apos;ll let more experienced WebKit developers answer... dcarney?</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>190276</attachid>
            <date>2013-02-26 06:58:22 -0800</date>
            <delta_ts>2013-02-26 08:25:06 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-110875-20130226155436.patch</filename>
            <type>text/plain</type>
            <size>36874</size>
            <attacher name="Marja Hölttä">marja</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ0MDQ3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggY2I4OWNiYzI4NDI0ODk5
MzZmM2VmZDYzZmU2MjBhYTNkNGQ4MDdkZi4uNGVhOWZlNzcwZjE4NGFlOTkzODMzZTYzZTkzNmQ3
ZWRkMWEzYzFhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDcwIEBACisyMDEzLTAyLTI2ICBNYXJq
YSBIw7ZsdHTDpCAgPG1hcmphQGNocm9taXVtLm9yZz4KKworICAgICAgICBWOCBiaW5kaW5nczog
QWRkIGEgImNvbnRleHQgdHlwZSIgcGFyYW1ldGVyIHRvIEdldFRlbXBsYXRlIGFuZCBDb25maWd1
cmVWOFNvbWV0aGluZ1RlbXBsYXRlIGZ1bmN0aW9ucworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTEwODc1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIChubyBjaGFuZ2VzIGluIGJlaGF2
aW9yIHlldCkuCisKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5w
bToKKyAgICAgICAgKEdlbmVyYXRlSGVhZGVyKToKKyAgICAgICAgKEdlbmVyYXRlRG9tYWluU2Fm
ZUZ1bmN0aW9uR2V0dGVyKToKKyAgICAgICAgKEdlbmVyYXRlRG9tYWluU2FmZUZ1bmN0aW9uU2V0
dGVyKToKKyAgICAgICAgKEdlbmVyYXRlTm9ybWFsQXR0ckdldHRlcik6CisgICAgICAgIChHZW5l
cmF0ZU5hbWVkQ29uc3RydWN0b3IpOgorICAgICAgICAoR2VuZXJhdGVJbXBsZW1lbnRhdGlvbik6
CisgICAgICAgICogYmluZGluZ3MvdjgvRGljdGlvbmFyeS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpEaWN0aW9uYXJ5OjpnZXQpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1BhZ2VTY3JpcHREZWJ1
Z1NlcnZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpyZXRyaWV2ZUZyYW1lV2l0aEdsb2JhbE9i
amVjdENoZWNrKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9WOEFkYXB0b3JGdW5jdGlvbi5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpWOEFkYXB0b3JGdW5jdGlvbjo6Z2V0VGVtcGxhdGUpOgorICAg
ICAgICAoV2ViQ29yZTo6VjhBZGFwdG9yRnVuY3Rpb246OndyYXApOgorICAgICAgICAqIGJpbmRp
bmdzL3Y4L1Y4QWRhcHRvckZ1bmN0aW9uLmg6CisgICAgICAgIChWOEFkYXB0b3JGdW5jdGlvbik6
CisgICAgICAgICogYmluZGluZ3MvdjgvVjhCaW5kaW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OnRvRE9NV2luZG93KToKKyAgICAgICAgKFdlYkNvcmU6OnRvU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCk6CisgICAgICAgIChXZWJDb3JlOjpnZXRDb250ZXh0VHlwZSk6CisgICAgICAgIChXZWJDb3Jl
KToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9WOEJpbmRpbmcuaDoKKyAgICAgICAgKFdlYkNvcmUp
OgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4RE9NV2luZG93U2hlbGwuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6VjhET01XaW5kb3dTaGVsbDo6Y2xlYXJGb3JOYXZpZ2F0aW9uKToKKyAgICAgICAg
KiBiaW5kaW5ncy92OC9WOERPTVdyYXBwZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhET01X
cmFwcGVyOjpjcmVhdGVXcmFwcGVyKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9WOEluaXRpYWxp
emVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmZpbmRGcmFtZSk6CisgICAgICAgICogYmluZGlu
Z3MvdjgvVjhQZXJDb250ZXh0RGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOFBlckNvbnRl
eHREYXRhOjpjb25zdHJ1Y3RvckZvclR5cGVTbG93Q2FzZSk6CisgICAgICAgICogYmluZGluZ3Mv
djgvV29ya2VyU2NyaXB0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJT
Y3JpcHRDb250cm9sbGVyOjpjb250cm9sbGVyRm9yQ29udGV4dCk6CisgICAgICAgICogYmluZGlu
Z3MvdjgvV3JhcHBlclR5cGVJbmZvLmg6CisgICAgICAgIChXZWJDb3JlOjpXcmFwcGVyVHlwZUlu
Zm86OmdldFRlbXBsYXRlKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhET01XaW5k
b3dDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhET01XaW5kb3c6OmV2ZW50QXR0ckdl
dHRlckN1c3RvbSk6CisgICAgICAgIChXZWJDb3JlOjpWOERPTVdpbmRvdzo6ZXZlbnRBdHRyU2V0
dGVyQ3VzdG9tKToKKyAgICAgICAgKFdlYkNvcmU6OlY4RE9NV2luZG93Ojp0b1N0cmluZ01ldGhv
ZEN1c3RvbSk6CisgICAgICAgIChXZWJDb3JlOjpWOERPTVdpbmRvdzo6bmFtZWRTZWN1cml0eUNo
ZWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlY4RE9NV2luZG93OjppbmRleGVkU2VjdXJpdHlDaGVj
ayk6CisgICAgICAgIChXZWJDb3JlOjp0b1Y4KToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0
b20vVjhIVE1MRG9jdW1lbnRDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhIVE1MRG9j
dW1lbnQ6OndyYXBJblNoYWRvd09iamVjdCk6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9t
L1Y4SFRNTEltYWdlRWxlbWVudENvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4
SFRNTEltYWdlRWxlbWVudENvbnN0cnVjdG9yOjpHZXRUZW1wbGF0ZSk6CisgICAgICAgICogYmlu
ZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTEltYWdlRWxlbWVudENvbnN0cnVjdG9yLmg6CisgICAgICAg
IChWOEhUTUxJbWFnZUVsZW1lbnRDb25zdHJ1Y3Rvcik6CisgICAgICAgICogYmluZGluZ3Mvdjgv
Y3VzdG9tL1Y4SW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNy
ZWF0ZUluamVjdGVkU2NyaXB0SG9zdFY4V3JhcHBlcik6CisgICAgICAgIChXZWJDb3JlOjpJbmpl
Y3RlZFNjcmlwdE1hbmFnZXI6OmNhbkFjY2Vzc0luc3BlY3RlZFdpbmRvdyk6CisgICAgICAgICog
YmluZGluZ3MvdjgvY3VzdG9tL1Y4TG9jYXRpb25DdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6VjhMb2NhdGlvbjo6cmVsb2FkQXR0ckdldHRlckN1c3RvbSk6CisgICAgICAgIChXZWJDb3Jl
OjpWOExvY2F0aW9uOjpyZXBsYWNlQXR0ckdldHRlckN1c3RvbSk6CisgICAgICAgIChXZWJDb3Jl
OjpWOExvY2F0aW9uOjphc3NpZ25BdHRyR2V0dGVyQ3VzdG9tKToKKyAgICAgICAgKiBiaW5kaW5n
cy92OC9jdXN0b20vVjhNZXNzYWdlRXZlbnRDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
VjhNZXNzYWdlRXZlbnQ6OmluaXRNZXNzYWdlRXZlbnRNZXRob2RDdXN0b20pOgorCiAyMDEzLTAy
LTI2ICBWaXZlayBHYWxhdGFnZSAgPHZpdmVrLnZnQHNhbXN1bmcuY29tPgogCiAgICAgICAgIFdl
YiBJbnNwZWN0b3I6IERhdGFHcmlkIHNob3VsZCByZXZlYWwgYW5kIHNlbGVjdCBuZXh0L3ByZXZp
b3VzIERhdGFHcmlkTm9kZSB1cG9uIGRlbGV0aW9uIG9mIHNlbGVjdGVkIG5vZGUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0KaW5kZXgg
Zjc2NGM3N2Y0Y2EzYzBkNzliM2Y2ZDcwNzQwYTZhMjJiNDI5ZjE5NC4uZGI2NmQ5ZGQ0Y2Y0NTFk
MmUzMjZlYmVlMGI3ODZlMjAwYjRhMjkwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0KKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0KQEAgLTMyNCw3ICszMjQsNyBAQCBzdWIg
R2VuZXJhdGVIZWFkZXIKICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgPDxFTkQpOwogY2xh
c3MgVjgke25hdGl2ZVR5cGV9Q29uc3RydWN0b3IgewogcHVibGljOgotICAgIHN0YXRpYyB2ODo6
UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gR2V0VGVtcGxhdGUodjg6Oklzb2xhdGUq
KTsKKyAgICBzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IEdldFRl
bXBsYXRlKHY4OjpJc29sYXRlKiwgV3JhcHBlckNvbnRleHRUeXBlKTsKICAgICBzdGF0aWMgV3Jh
cHBlclR5cGVJbmZvIGluZm87CiB9OwogCkBAIC0zNjIsNyArMzYyLDcgQEAgRU5ECiAgICAgcHVz
aChAaGVhZGVyQ29udGVudCwgPDxFTkQpOwogICAgIHN0YXRpYyBib29sIEhhc0luc3RhbmNlKHY4
OjpIYW5kbGU8djg6OlZhbHVlPiwgdjg6Oklzb2xhdGUqKTsKICAgICBzdGF0aWMgdjg6OlBlcnNp
c3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IEdldFJhd1RlbXBsYXRlKHY4OjpJc29sYXRlKik7
Ci0gICAgc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBHZXRUZW1w
bGF0ZSh2ODo6SXNvbGF0ZSopOworICAgIHN0YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rp
b25UZW1wbGF0ZT4gR2V0VGVtcGxhdGUodjg6Oklzb2xhdGUqLCBXcmFwcGVyQ29udGV4dFR5cGUp
OwogICAgIHN0YXRpYyAke25hdGl2ZVR5cGV9KiB0b05hdGl2ZSh2ODo6SGFuZGxlPHY4OjpPYmpl
Y3Q+IG9iamVjdCkKICAgICB7CiAgICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PCR7bmF0
aXZlVHlwZX0qPigke2Zyb21GdW5jdGlvbk9wZW5pbmd9b2JqZWN0JHtmcm9tRnVuY3Rpb25DbG9z
aW5nfS0+R2V0QWxpZ25lZFBvaW50ZXJGcm9tSW50ZXJuYWxGaWVsZCh2OERPTVdyYXBwZXJPYmpl
Y3RJbmRleCkpOwpAQCAtNzk4LDcgKzc5OCw3IEBAIHN1YiBHZW5lcmF0ZURvbWFpblNhZmVGdW5j
dGlvbkdldHRlcgogc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiAke2Z1bmNOYW1lfUF0dHJH
ZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8m
IGluZm8pCiB7CiAgICAgc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRl
PiBwcml2YXRlVGVtcGxhdGUgPSB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT46
Ok5ldyhpbmZvLkdldElzb2xhdGUoKSwgJG5ld1RlbXBsYXRlU3RyaW5nKTsKLSAgICB2ODo6SGFu
ZGxlPHY4OjpPYmplY3Q+IGhvbGRlciA9IGluZm8uVGhpcygpLT5GaW5kSW5zdGFuY2VJblByb3Rv
dHlwZUNoYWluKCR7djhJbnRlcmZhY2VOYW1lfTo6R2V0VGVtcGxhdGUoaW5mby5HZXRJc29sYXRl
KCkpKTsKKyAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGhvbGRlciA9IGluZm8uVGhpcygpLT5G
aW5kSW5zdGFuY2VJblByb3RvdHlwZUNoYWluKCR7djhJbnRlcmZhY2VOYW1lfTo6R2V0VGVtcGxh
dGUoaW5mby5HZXRJc29sYXRlKCksIGdldENvbnRleHRUeXBlKGluZm8uR2V0SXNvbGF0ZSgpKSkp
OwogICAgIGlmIChob2xkZXIuSXNFbXB0eSgpKSB7CiAgICAgICAgIC8vIGNhbiBvbmx5IHJlYWNo
IGhlcmUgYnkgJ29iamVjdC5fX3Byb3RvX18uZnVuYycsIGFuZCBpdCBzaG91bGQgcGFzc2VkCiAg
ICAgICAgIC8vIGRvbWFpbiBzZWN1cml0eSBjaGVjayBhbHJlYWR5CkBAIC04MzMsNyArODMzLDcg
QEAgc3ViIEdlbmVyYXRlRG9tYWluU2FmZUZ1bmN0aW9uU2V0dGVyCiAgICAgcHVzaChAaW1wbENv
bnRlbnREZWNscywgPDxFTkQpOwogc3RhdGljIHZvaWQgJHtpbnRlcmZhY2VOYW1lfURvbWFpblNh
ZmVGdW5jdGlvblNldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4
OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7Ci0gICAgdjg6
OkhhbmRsZTx2ODo6T2JqZWN0PiBob2xkZXIgPSBpbmZvLlRoaXMoKS0+RmluZEluc3RhbmNlSW5Q
cm90b3R5cGVDaGFpbigke3Y4SW50ZXJmYWNlTmFtZX06OkdldFRlbXBsYXRlKGluZm8uR2V0SXNv
bGF0ZSgpKSk7CisgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBob2xkZXIgPSBpbmZvLlRoaXMo
KS0+RmluZEluc3RhbmNlSW5Qcm90b3R5cGVDaGFpbigke3Y4SW50ZXJmYWNlTmFtZX06OkdldFRl
bXBsYXRlKGluZm8uR2V0SXNvbGF0ZSgpLCBnZXRDb250ZXh0VHlwZShpbmZvLkdldElzb2xhdGUo
KSkpKTsKICAgICBpZiAoaG9sZGVyLklzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogICAgICR7
aW50ZXJmYWNlTmFtZX0qIGltcCA9ICR7djhJbnRlcmZhY2VOYW1lfTo6dG9OYXRpdmUoaG9sZGVy
KTsKQEAgLTk1Miw3ICs5NTIsNyBAQCBFTkQKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAg
ICMgcGVyZm9ybSBsb29rdXAgZmlyc3QKICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50RGVj
bHMsIDw8RU5EKTsKLSAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGhvbGRlciA9IGluZm8uVGhp
cygpLT5GaW5kSW5zdGFuY2VJblByb3RvdHlwZUNoYWluKCR7djhJbnRlcmZhY2VOYW1lfTo6R2V0
VGVtcGxhdGUoaW5mby5HZXRJc29sYXRlKCkpKTsKKyAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+
IGhvbGRlciA9IGluZm8uVGhpcygpLT5GaW5kSW5zdGFuY2VJblByb3RvdHlwZUNoYWluKCR7djhJ
bnRlcmZhY2VOYW1lfTo6R2V0VGVtcGxhdGUoaW5mby5HZXRJc29sYXRlKCksIGdldENvbnRleHRU
eXBlKGluZm8uR2V0SXNvbGF0ZSgpKSkpOwogICAgIGlmIChob2xkZXIuSXNFbXB0eSgpKQogICAg
ICAgICByZXR1cm4gdjhVbmRlZmluZWQoKTsKIEVORApAQCAtMjIzOCw3ICsyMjM4LDcgQEAgRU5E
CiAKICAgICBwdXNoKEBpbXBsQ29udGVudCwgPDxFTkQpOwogCi12ODo6UGVyc2lzdGVudDx2ODo6
RnVuY3Rpb25UZW1wbGF0ZT4gJHt2OEludGVyZmFjZU5hbWV9Q29uc3RydWN0b3I6OkdldFRlbXBs
YXRlKHY4OjpJc29sYXRlKiBpc29sYXRlKQordjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVt
cGxhdGU+ICR7djhJbnRlcmZhY2VOYW1lfUNvbnN0cnVjdG9yOjpHZXRUZW1wbGF0ZSh2ODo6SXNv
bGF0ZSogaXNvbGF0ZSwgV3JhcHBlckNvbnRleHRUeXBlIGNvbnRleHRUeXBlKQogewogICAgIHN0
YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gY2FjaGVkVGVtcGxhdGU7
CiAgICAgaWYgKCFjYWNoZWRUZW1wbGF0ZS5Jc0VtcHR5KCkpCkBAIC0yMjUwLDcgKzIyNTAsNyBA
QCB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gJHt2OEludGVyZmFjZU5hbWV9
Q29uc3RydWN0b3I6OkdldFRlbXBsYXRlKAogICAgIHY4OjpMb2NhbDx2ODo6T2JqZWN0VGVtcGxh
dGU+IGluc3RhbmNlID0gcmVzdWx0LT5JbnN0YW5jZVRlbXBsYXRlKCk7CiAgICAgaW5zdGFuY2Ut
PlNldEludGVybmFsRmllbGRDb3VudCgke3Y4SW50ZXJmYWNlTmFtZX06OmludGVybmFsRmllbGRD
b3VudCk7CiAgICAgcmVzdWx0LT5TZXRDbGFzc05hbWUodjg6OlN0cmluZzo6TmV3U3ltYm9sKCIk
e2ludGVyZmFjZU5hbWV9IikpOwotICAgIHJlc3VsdC0+SW5oZXJpdCgke3Y4SW50ZXJmYWNlTmFt
ZX06OkdldFRlbXBsYXRlKGlzb2xhdGUpKTsKKyAgICByZXN1bHQtPkluaGVyaXQoJHt2OEludGVy
ZmFjZU5hbWV9OjpHZXRUZW1wbGF0ZShpc29sYXRlLCBjb250ZXh0VHlwZSkpOwogCiAgICAgY2Fj
aGVkVGVtcGxhdGUgPSB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT46Ok5ldyhp
c29sYXRlLCByZXN1bHQpOwogICAgIHJldHVybiBjYWNoZWRUZW1wbGF0ZTsKQEAgLTI2NzQsNyAr
MjY3NCw3IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgIG15ICRwYXJlbnQg
PSAkXzsKICAgICAgICAgQWRkVG9JbXBsSW5jbHVkZXMoIlY4JHtwYXJlbnR9LmgiKTsKICAgICAg
ICAgJHBhcmVudENsYXNzID0gIlY4IiAuICRwYXJlbnQ7Ci0gICAgICAgICRwYXJlbnRDbGFzc1Rl
bXBsYXRlID0gJHBhcmVudENsYXNzIC4gIjo6R2V0VGVtcGxhdGUoaXNvbGF0ZSkiOworICAgICAg
ICAkcGFyZW50Q2xhc3NUZW1wbGF0ZSA9ICRwYXJlbnRDbGFzcyAuICI6OkdldFRlbXBsYXRlKGlz
b2xhdGUsIGNvbnRleHRUeXBlKSI7CiAgICAgICAgIGxhc3Q7CiAgICAgfQogCkBAIC0yOTgyLDcg
KzI5ODIsNyBAQCBFTkQKIAogICAgICMgR2VuZXJhdGUgdGhlIHRlbXBsYXRlIGNvbmZpZ3VyYXRp
b24gbWV0aG9kCiAgICAgcHVzaChAaW1wbENvbnRlbnQsICA8PEVORCk7Ci1zdGF0aWMgdjg6OlBl
cnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IENvbmZpZ3VyZSR7djhJbnRlcmZhY2VOYW1l
fVRlbXBsYXRlKHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBkZXNjLCB2ODo6
SXNvbGF0ZSogaXNvbGF0ZSkKK3N0YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1w
bGF0ZT4gQ29uZmlndXJlJHt2OEludGVyZmFjZU5hbWV9VGVtcGxhdGUodjg6OlBlcnNpc3RlbnQ8
djg6OkZ1bmN0aW9uVGVtcGxhdGU+IGRlc2MsIHY4OjpJc29sYXRlKiBpc29sYXRlLCBXcmFwcGVy
Q29udGV4dFR5cGUgY29udGV4dFR5cGUpCiB7CiAgICAgZGVzYy0+UmVhZE9ubHlQcm90b3R5cGUo
KTsKIApAQCAtMzE0OCw3ICszMTQ4LDcgQEAgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVt
cGxhdGU+ICR7djhJbnRlcmZhY2VOYW1lfTo6R2V0UmF3VGVtcGxhdGUodjg6Oklzb2wKICAgICBy
ZXR1cm4gdGVtcGw7CiB9CiAKLXY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiAk
e3Y4SW50ZXJmYWNlTmFtZX06OkdldFRlbXBsYXRlKHY4OjpJc29sYXRlKiBpc29sYXRlKQordjg6
OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+ICR7djhJbnRlcmZhY2VOYW1lfTo6R2V0
VGVtcGxhdGUodjg6Oklzb2xhdGUqIGlzb2xhdGUsIFdyYXBwZXJDb250ZXh0VHlwZSBjb250ZXh0
VHlwZSkKIHsKICAgICBWOFBlcklzb2xhdGVEYXRhKiBkYXRhID0gVjhQZXJJc29sYXRlRGF0YTo6
ZnJvbShpc29sYXRlKTsKICAgICBWOFBlcklzb2xhdGVEYXRhOjpUZW1wbGF0ZU1hcDo6aXRlcmF0
b3IgcmVzdWx0ID0gZGF0YS0+dGVtcGxhdGVNYXAoKS5maW5kKCZpbmZvKTsKQEAgLTMxNTcsNyAr
MzE1Nyw3IEBAIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiAke3Y4SW50ZXJm
YWNlTmFtZX06OkdldFRlbXBsYXRlKHY4OjpJc29sYXRlCiAKICAgICB2ODo6SGFuZGxlU2NvcGUg
aGFuZGxlU2NvcGU7CiAgICAgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IHRl
bXBsID0KLSAgICAgICAgQ29uZmlndXJlJHt2OEludGVyZmFjZU5hbWV9VGVtcGxhdGUoR2V0UmF3
VGVtcGxhdGUoaXNvbGF0ZSksIGlzb2xhdGUpOworICAgICAgICBDb25maWd1cmUke3Y4SW50ZXJm
YWNlTmFtZX1UZW1wbGF0ZShHZXRSYXdUZW1wbGF0ZShpc29sYXRlKSwgaXNvbGF0ZSwgY29udGV4
dFR5cGUpOwogICAgIGRhdGEtPnRlbXBsYXRlTWFwKCkuYWRkKCZpbmZvLCB0ZW1wbCk7CiAgICAg
cmV0dXJuIHRlbXBsOwogfQpAQCAtMzIwNiw3ICszMjA2LDcgQEAgdm9pZCAke3Y4SW50ZXJmYWNl
TmFtZX06Omluc3RhbGxQZXJDb250ZXh0UHJvdG90eXBlUHJvcGVydGllcyh2ODo6SGFuZGxlPHY4
OjpPYmoKIEVORAogICAgICAgICAjIFNldHVwIHRoZSBlbmFibGUtYnktc2V0dGluZ3MgZnVuY3Rp
b25zIGlmIHdlIGhhdmUgdGhlbQogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIDw8RU5EKTsK
LSAgICB2ODo6TG9jYWw8djg6OlNpZ25hdHVyZT4gZGVmYXVsdFNpZ25hdHVyZSA9IHY4OjpTaWdu
YXR1cmU6Ok5ldyhHZXRUZW1wbGF0ZShpc29sYXRlKSk7CisgICAgdjg6OkxvY2FsPHY4OjpTaWdu
YXR1cmU+IGRlZmF1bHRTaWduYXR1cmUgPSB2ODo6U2lnbmF0dXJlOjpOZXcoR2V0VGVtcGxhdGUo
aXNvbGF0ZSwgZ2V0Q29udGV4dFR5cGUoaXNvbGF0ZSkpKTsKICAgICBVTlVTRURfUEFSQU0oZGVm
YXVsdFNpZ25hdHVyZSk7IC8vIEluIHNvbWUgY2FzZXMsIGl0IHdpbGwgbm90IGJlIHVzZWQuCiAK
ICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0ID0gdG9TY3JpcHRFeGVjdXRpb25D
b250ZXh0KHByb3RvLT5DcmVhdGlvbkNvbnRleHQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9EaWN0aW9uYXJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L0RpY3Rpb25hcnkuY3BwCmluZGV4IDhhOWNmMWRmNmJiNTVkYjkyN2QzZjQxMGYzYzZiN2M5
ZDBkYTNlZDIuLmNmOWIwNTdiMWY2MTQyYTJhNWRmM2I3ZjUxYWJmMjU1NjdmY2RlYjUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0RpY3Rpb25hcnkuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0RpY3Rpb25hcnkuY3BwCkBAIC0yNTksNyArMjU5LDcg
QEAgYm9vbCBEaWN0aW9uYXJ5OjpnZXQoY29uc3QgU3RyaW5nJiBrZXksIFJlZlB0cjxET01XaW5k
b3c+JiB2YWx1ZSkgY29uc3QKICAgICB2YWx1ZSA9IDA7CiAgICAgaWYgKHY4VmFsdWUtPklzT2Jq
ZWN0KCkpIHsKICAgICAgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwcGVyID0gdjg6Okhh
bmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdCh2OFZhbHVlKTsKLSAgICAgICAgdjg6OkhhbmRsZTx2ODo6
T2JqZWN0PiB3aW5kb3cgPSB3cmFwcGVyLT5GaW5kSW5zdGFuY2VJblByb3RvdHlwZUNoYWluKFY4
RE9NV2luZG93OjpHZXRUZW1wbGF0ZShtX2lzb2xhdGUpKTsKKyAgICAgICAgdjg6OkhhbmRsZTx2
ODo6T2JqZWN0PiB3aW5kb3cgPSB3cmFwcGVyLT5GaW5kSW5zdGFuY2VJblByb3RvdHlwZUNoYWlu
KFY4RE9NV2luZG93OjpHZXRUZW1wbGF0ZShtX2lzb2xhdGUsIGdldENvbnRleHRUeXBlKG1faXNv
bGF0ZSkpKTsKICAgICAgICAgaWYgKCF3aW5kb3cuSXNFbXB0eSgpKQogICAgICAgICAgICAgdmFs
dWUgPSBWOERPTVdpbmRvdzo6dG9OYXRpdmUod2luZG93KTsKICAgICB9CkBAIC0zNjMsNyArMzYz
LDcgQEAgYm9vbCBEaWN0aW9uYXJ5OjpnZXQoY29uc3QgU3RyaW5nJiBrZXksIFJlZlB0cjxUcmFj
a0Jhc2U+JiB2YWx1ZSkgY29uc3QKIAogICAgICAgICAvLyBGSVhNRTogdGhpcyB3aWxsIG5lZWQg
dG8gYmUgY2hhbmdlZCBzbyBpdCBjYW4gYWxzbyByZXR1cm4gYW4gQXVkaW9UcmFjayBvciBhIFZp
ZGVvVHJhY2sgb25jZQogICAgICAgICAvLyB3ZSBhZGQgdGhlbS4KLSAgICAgICAgdjg6OkhhbmRs
ZTx2ODo6T2JqZWN0PiB0cmFjayA9IHdyYXBwZXItPkZpbmRJbnN0YW5jZUluUHJvdG90eXBlQ2hh
aW4oVjhUZXh0VHJhY2s6OkdldFRlbXBsYXRlKG1faXNvbGF0ZSkpOworICAgICAgICB2ODo6SGFu
ZGxlPHY4OjpPYmplY3Q+IHRyYWNrID0gd3JhcHBlci0+RmluZEluc3RhbmNlSW5Qcm90b3R5cGVD
aGFpbihWOFRleHRUcmFjazo6R2V0VGVtcGxhdGUobV9pc29sYXRlLCBnZXRDb250ZXh0VHlwZSht
X2lzb2xhdGUpKSk7CiAgICAgICAgIGlmICghdHJhY2suSXNFbXB0eSgpKQogICAgICAgICAgICAg
c291cmNlID0gVjhUZXh0VHJhY2s6OnRvTmF0aXZlKHRyYWNrKTsKICAgICB9CkBAIC00MzYsNyAr
NDM2LDcgQEAgYm9vbCBEaWN0aW9uYXJ5OjpnZXQoY29uc3QgU3RyaW5nJiBrZXksIFJlZlB0cjxF
dmVudFRhcmdldD4mIHZhbHVlKSBjb25zdAogICAgIC8vIGV4aXN0cyBvbiBhIHByb3RvdHlwZSBj
aGFpbiBvZiB2OFZhbHVlLgogICAgIGlmICh2OFZhbHVlLT5Jc09iamVjdCgpKSB7CiAgICAgICAg
IHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd3JhcHBlciA9IHY4OjpIYW5kbGU8djg6Ok9iamVjdD46
OkNhc3QodjhWYWx1ZSk7Ci0gICAgICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd2luZG93ID0g
d3JhcHBlci0+RmluZEluc3RhbmNlSW5Qcm90b3R5cGVDaGFpbihWOERPTVdpbmRvdzo6R2V0VGVt
cGxhdGUobV9pc29sYXRlKSk7CisgICAgICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd2luZG93
ID0gd3JhcHBlci0+RmluZEluc3RhbmNlSW5Qcm90b3R5cGVDaGFpbihWOERPTVdpbmRvdzo6R2V0
VGVtcGxhdGUobV9pc29sYXRlLCBnZXRDb250ZXh0VHlwZShtX2lzb2xhdGUpKSk7CiAgICAgICAg
IGlmICghd2luZG93LklzRW1wdHkoKSkgewogICAgICAgICAgICAgdmFsdWUgPSB0b1dyYXBwZXJU
eXBlSW5mbyh3aW5kb3cpLT50b0V2ZW50VGFyZ2V0KHdpbmRvdyk7CiAgICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1BhZ2VTY3Jp
cHREZWJ1Z1NlcnZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9QYWdlU2NyaXB0
RGVidWdTZXJ2ZXIuY3BwCmluZGV4IGJhNmU1ZjhjOGM5NjA0MWQ4YTczZDc2OGZiMzg2YzZhZDUz
MDUxOTguLmI5NjQzMDZjOWY3OWNjM2U1NjU3MTM0YzcyNTRhNWM1Zjk3NWNlM2QgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1BhZ2VTY3JpcHREZWJ1Z1NlcnZlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvUGFnZVNjcmlwdERlYnVnU2VydmVyLmNw
cApAQCAtNTYsNyArNTYsNyBAQCBzdGF0aWMgRnJhbWUqIHJldHJpZXZlRnJhbWVXaXRoR2xvYmFs
T2JqZWN0Q2hlY2sodjg6OkhhbmRsZTx2ODo6Q29udGV4dD4gY29udGV4dAogICAgIGlmIChnbG9i
YWwuSXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIGdsb2JhbCA9IGdsb2JhbC0+
RmluZEluc3RhbmNlSW5Qcm90b3R5cGVDaGFpbihWOERPTVdpbmRvdzo6R2V0VGVtcGxhdGUoY29u
dGV4dC0+R2V0SXNvbGF0ZSgpKSk7CisgICAgZ2xvYmFsID0gZ2xvYmFsLT5GaW5kSW5zdGFuY2VJ
blByb3RvdHlwZUNoYWluKFY4RE9NV2luZG93OjpHZXRUZW1wbGF0ZShjb250ZXh0LT5HZXRJc29s
YXRlKCksIGdldENvbnRleHRUeXBlKGNvbnRleHQtPkdldElzb2xhdGUoKSkpKTsKICAgICBpZiAo
Z2xvYmFsLklzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIDA7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4QWRhcHRvckZ1bmN0aW9uLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L1Y4QWRhcHRvckZ1bmN0aW9uLmNwcAppbmRleCBiYmMxZDMyNzRmYzdk
ODlmMWRhNjM0YWRhNzc5YmJjNmU0NjJlY2RkLi42Y2M2ODkxOWI5ZGNmMjk1NjlmOGU0OTFkMjFl
MGI0YzJjZjFjMjc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEFk
YXB0b3JGdW5jdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhBZGFw
dG9yRnVuY3Rpb24uY3BwCkBAIC00MCw3ICs0MCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
V3JhcHBlclR5cGVJbmZvIFY4QWRhcHRvckZ1bmN0aW9uOjppbmZvID0geyBWOEFkYXB0b3JGdW5j
dGlvbjo6Z2V0VGVtcGxhdGUsIDAsIDAsIDAsIDAsIDAsIDAsIFdyYXBwZXJUeXBlT2JqZWN0UHJv
dG90eXBlIH07CiAKLXY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBWOEFkYXB0
b3JGdW5jdGlvbjo6Z2V0VGVtcGxhdGUodjg6Oklzb2xhdGUqIGlzb2xhdGUpCit2ODo6UGVyc2lz
dGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gVjhBZGFwdG9yRnVuY3Rpb246OmdldFRlbXBsYXRl
KHY4OjpJc29sYXRlKiBpc29sYXRlLCBXcmFwcGVyQ29udGV4dFR5cGUgY29udGV4dFR5cGUpCiB7
CiAgICAgQVNTRVJUKGlzb2xhdGUpOwogICAgIFY4UGVySXNvbGF0ZURhdGEqIGRhdGEgPSBWOFBl
cklzb2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUpOwpAQCAtNzYsNyArNzYsNyBAQCB2ODo6SGFuZGxl
PHY4OjpGdW5jdGlvbj4gVjhBZGFwdG9yRnVuY3Rpb246OndyYXAodjg6OkhhbmRsZTx2ODo6T2Jq
ZWN0PiBvYmplY3QsCiB7CiAgICAgaWYgKG9iamVjdC5Jc0VtcHR5KCkgfHwgIW9iamVjdC0+SXNP
YmplY3QoKSkKICAgICAgICAgcmV0dXJuIHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uPigpOwotICAg
IHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uPiBhZGFwdG9yID0gdjg6OkhhbmRsZTx2ODo6RnVuY3Rp
b24+OjpDYXN0KGdldFRlbXBsYXRlKGlzb2xhdGUpLT5HZXRGdW5jdGlvbigpKTsKKyAgICB2ODo6
SGFuZGxlPHY4OjpGdW5jdGlvbj4gYWRhcHRvciA9IHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uPjo6
Q2FzdChnZXRUZW1wbGF0ZShpc29sYXRlLCBnZXRDb250ZXh0VHlwZShpc29sYXRlKSktPkdldEZ1
bmN0aW9uKCkpOwogICAgIGlmIChhZGFwdG9yLklzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIHY4
OjpIYW5kbGU8djg6OkZ1bmN0aW9uPigpOwogICAgIGFkYXB0b3ItPlNldE5hbWUodjhTdHJpbmco
bmFtZS5zdHJpbmcoKSwgaXNvbGF0ZSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvVjhBZGFwdG9yRnVuY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L1Y4QWRhcHRvckZ1bmN0aW9uLmgKaW5kZXggZTNkNmJiNTFmNDQwYTRjNzcyNGFiY2UzZGU5MzA2
OGRhZThjM2E1Ny4uZmZkZmNhMWQ5ZTVjMjY4MGU5MTJkNTgzYTAxMWEzYzg2ZDkwYzlmMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhBZGFwdG9yRnVuY3Rpb24uaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEFkYXB0b3JGdW5jdGlvbi5oCkBAIC01
NSw3ICs1NSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb24+
IHdyYXAodjg6OkhhbmRsZTx2ODo6T2JqZWN0PiwgY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCB2
ODo6SXNvbGF0ZSopOwogICAgIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpGdW5jdGlvbj4gZ2V0KHY4
OjpIYW5kbGU8djg6Ok9iamVjdD4pOwogCi0gICAgc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpG
dW5jdGlvblRlbXBsYXRlPiBnZXRUZW1wbGF0ZSh2ODo6SXNvbGF0ZSogPSAwKTsKKyAgICBzdGF0
aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IGdldFRlbXBsYXRlKHY4OjpJ
c29sYXRlKiwgV3JhcHBlckNvbnRleHRUeXBlKTsKICAgICBzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8
djg6OkZ1bmN0aW9uVGVtcGxhdGU+IGNvbmZpZ3VyZVRlbXBsYXRlKHY4OjpQZXJzaXN0ZW50PHY4
OjpGdW5jdGlvblRlbXBsYXRlPik7CiAgICAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBp
bnZvY2F0aW9uQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYpOwogfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4QmluZGluZy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy92OC9WOEJpbmRpbmcuY3BwCmluZGV4IDg2M2Y0ZmQ2YWMwYTY1NWJlOTI4NGY3
Y2Y4Y2MwNDM4ZDQyMmY1NjcuLmI2NTliNjhmOWYyM2JiNzE1MDlmYzAyYmQ2ZTFjZTM3NDE2NGM4
NGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4QmluZGluZy5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhCaW5kaW5nLmNwcApAQCAtMjIxLDcg
KzIyMSw3IEBAIERPTVdpbmRvdyogdG9ET01XaW5kb3codjg6OkhhbmRsZTx2ODo6Q29udGV4dD4g
Y29udGV4dCkKIHsKICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGdsb2JhbCA9IGNvbnRleHQt
Pkdsb2JhbCgpOwogICAgIEFTU0VSVCghZ2xvYmFsLklzRW1wdHkoKSk7Ci0gICAgZ2xvYmFsID0g
Z2xvYmFsLT5GaW5kSW5zdGFuY2VJblByb3RvdHlwZUNoYWluKFY4RE9NV2luZG93OjpHZXRUZW1w
bGF0ZShjb250ZXh0LT5HZXRJc29sYXRlKCkpKTsKKyAgICBnbG9iYWwgPSBnbG9iYWwtPkZpbmRJ
bnN0YW5jZUluUHJvdG90eXBlQ2hhaW4oVjhET01XaW5kb3c6OkdldFRlbXBsYXRlKGNvbnRleHQt
PkdldElzb2xhdGUoKSwgZ2V0Q29udGV4dFR5cGUoY29udGV4dC0+R2V0SXNvbGF0ZSgpKSkpOwog
ICAgIEFTU0VSVCghZ2xvYmFsLklzRW1wdHkoKSk7CiAgICAgcmV0dXJuIFY4RE9NV2luZG93Ojp0
b05hdGl2ZShnbG9iYWwpOwogfQpAQCAtMjI5LDExICsyMjksMTEgQEAgRE9NV2luZG93KiB0b0RP
TVdpbmRvdyh2ODo6SGFuZGxlPHY4OjpDb250ZXh0PiBjb250ZXh0KQogU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCogdG9TY3JpcHRFeGVjdXRpb25Db250ZXh0KHY4OjpIYW5kbGU8djg6OkNvbnRleHQ+
IGNvbnRleHQpCiB7CiAgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBnbG9iYWwgPSBjb250ZXh0
LT5HbG9iYWwoKTsKLSAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdpbmRvd1dyYXBwZXIgPSBn
bG9iYWwtPkZpbmRJbnN0YW5jZUluUHJvdG90eXBlQ2hhaW4oVjhET01XaW5kb3c6OkdldFRlbXBs
YXRlKGNvbnRleHQtPkdldElzb2xhdGUoKSkpOworICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4g
d2luZG93V3JhcHBlciA9IGdsb2JhbC0+RmluZEluc3RhbmNlSW5Qcm90b3R5cGVDaGFpbihWOERP
TVdpbmRvdzo6R2V0VGVtcGxhdGUoY29udGV4dC0+R2V0SXNvbGF0ZSgpLCBnZXRDb250ZXh0VHlw
ZShjb250ZXh0LT5HZXRJc29sYXRlKCkpKSk7CiAgICAgaWYgKCF3aW5kb3dXcmFwcGVyLklzRW1w
dHkoKSkKICAgICAgICAgcmV0dXJuIFY4RE9NV2luZG93Ojp0b05hdGl2ZSh3aW5kb3dXcmFwcGVy
KS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwogI2lmIEVOQUJMRShXT1JLRVJTKQotICAgIHY4
OjpIYW5kbGU8djg6Ok9iamVjdD4gd29ya2VyV3JhcHBlciA9IGdsb2JhbC0+RmluZEluc3RhbmNl
SW5Qcm90b3R5cGVDaGFpbihWOFdvcmtlckNvbnRleHQ6OkdldFRlbXBsYXRlKGNvbnRleHQtPkdl
dElzb2xhdGUoKSkpOworICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd29ya2VyV3JhcHBlciA9
IGdsb2JhbC0+RmluZEluc3RhbmNlSW5Qcm90b3R5cGVDaGFpbihWOFdvcmtlckNvbnRleHQ6Okdl
dFRlbXBsYXRlKGNvbnRleHQtPkdldElzb2xhdGUoKSwgV29ya2VyV29ybGQpKTsKICAgICBpZiAo
IXdvcmtlcldyYXBwZXIuSXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gVjhXb3JrZXJDb250ZXh0
Ojp0b05hdGl2ZSh3b3JrZXJXcmFwcGVyKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwogI2Vu
ZGlmCkBAIC0zMDUsNCArMzA1LDE5IEBAIHZvaWQgY3Jhc2hJZlY4SXNEZWFkKCkKICAgICB9CiB9
CiAKK1dyYXBwZXJDb250ZXh0VHlwZSBnZXRDb250ZXh0VHlwZSh2ODo6SXNvbGF0ZSogaXNvbGF0
ZSkKK3sKKyAgICBWOFBlcklzb2xhdGVEYXRhKiBkYXRhID0gaXNvbGF0ZSA/IFY4UGVySXNvbGF0
ZURhdGE6OmZyb20oaXNvbGF0ZSkgOiBWOFBlcklzb2xhdGVEYXRhOjpjdXJyZW50KCk7CisgICAg
Ly8gRklYTUUoZGNhcm5leSk6IFJlbmFtZSBkb21EYXRhU3RvcmUoKSB0byB3b3JrZXJEYXRhU3Rv
cmUoKS4KKyAgICBpZiAoVU5MSUtFTFkoISFkYXRhLT5kb21EYXRhU3RvcmUoKSkpCisgICAgICAg
IHJldHVybiBXb3JrZXJXb3JsZDsKKworICAgIGlmIChET01XcmFwcGVyV29ybGQ6Omlzb2xhdGVk
V29ybGRzRXhpc3QoKSkgeworICAgICAgICBET01XcmFwcGVyV29ybGQqIGlzb2xhdGVkV29ybGQg
PSBET01XcmFwcGVyV29ybGQ6OmdldFdvcmxkKHY4OjpDb250ZXh0OjpHZXRFbnRlcmVkKCkpOwor
ICAgICAgICBpZiAoVU5MSUtFTFkoISFpc29sYXRlZFdvcmxkKSkKKyAgICAgICAgICAgIHJldHVy
biBJc29sYXRlZFdvcmxkOworICAgIH0KKyAgICByZXR1cm4gTWFpbldvcmxkOworfQorCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92
OC9WOEJpbmRpbmcuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4QmluZGluZy5oCmlu
ZGV4IDk2MmIwODY5OWU4MWVmYTcwMTU0YzNkMGFhYTUxMzUxNmEyNjE5OTUuLjE5NDE4YzhkZmZm
ZTJiNGYwZTNlMmQxNGJiOWMyZTM5ZGYyMmNlZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L1Y4QmluZGluZy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L1Y4QmluZGluZy5oCkBAIC00NzQsNiArNDc0LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAg
ICAgdm9pZCBjcmFzaElmVjhJc0RlYWQoKTsKIAorICAgIFdyYXBwZXJDb250ZXh0VHlwZSBnZXRD
b250ZXh0VHlwZSh2ODo6SXNvbGF0ZSopOworCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNl
bmRpZiAvLyBWOEJpbmRpbmdfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvVjhET01XaW5kb3dTaGVsbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOERP
TVdpbmRvd1NoZWxsLmNwcAppbmRleCA5NTQ2OTA0MThkMGY1N2I1ZjdjN2Q4YTJiY2U4YTIyODZk
M2UzYTVlLi5mZjZhY2M0MmNhMDllNjM1NDE2NGIwMDFmYmQ4ZTA5Mjg1OGY4NWZjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTVdpbmRvd1NoZWxsLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTVdpbmRvd1NoZWxsLmNwcApAQCAtMTUz
LDcgKzE1Myw4IEBAIHZvaWQgVjhET01XaW5kb3dTaGVsbDo6Y2xlYXJGb3JOYXZpZ2F0aW9uKCkK
ICAgICAvLyB3aWxsIGJlIHByb3RlY3RlZCBieSB0aGUgc2VjdXJpdHkgY2hlY2tzIG9uIHRoZSBE
T01XaW5kb3cgd3JhcHBlci4KICAgICBjbGVhckRvY3VtZW50UHJvcGVydHkoKTsKIAotICAgIHY4
OjpIYW5kbGU8djg6Ok9iamVjdD4gd2luZG93V3JhcHBlciA9IG1fZ2xvYmFsLT5GaW5kSW5zdGFu
Y2VJblByb3RvdHlwZUNoYWluKFY4RE9NV2luZG93OjpHZXRUZW1wbGF0ZShtX2lzb2xhdGUpKTsK
KyAgICBXcmFwcGVyQ29udGV4dFR5cGUgY29udGV4dFR5cGUgPSBET01XcmFwcGVyV29ybGQ6Omdl
dFdvcmxkKGNvbnRleHQoKSkgPyBJc29sYXRlZFdvcmxkIDogTWFpbldvcmxkOworICAgIHY4OjpI
YW5kbGU8djg6Ok9iamVjdD4gd2luZG93V3JhcHBlciA9IG1fZ2xvYmFsLT5GaW5kSW5zdGFuY2VJ
blByb3RvdHlwZUNoYWluKFY4RE9NV2luZG93OjpHZXRUZW1wbGF0ZShtX2lzb2xhdGUsIGNvbnRl
eHRUeXBlKSk7CiAgICAgQVNTRVJUKCF3aW5kb3dXcmFwcGVyLklzRW1wdHkoKSk7CiAgICAgd2lu
ZG93V3JhcHBlci0+VHVybk9uQWNjZXNzQ2hlY2soKTsKICAgICBtX2NvbnRleHQtPkRldGFjaEds
b2JhbCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhET01XcmFw
cGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NV3JhcHBlci5jcHAKaW5k
ZXggNGQ4YzIyNmYzZTI3MmYwZTM1OTYyMWU4ZDQwNjhjMzE5NGI1M2ZiOC4uNzMwMjZkZTU5OWIy
ODRjNmFjYzMyZWI3MTQ0NWU2YjRiZmZkYzMwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvdjgvVjhET01XcmFwcGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy92OC9WOERPTVdyYXBwZXIuY3BwCkBAIC03OSw3ICs3OSw4IEBAIHY4OjpMb2NhbDx2ODo6T2Jq
ZWN0PiBWOERPTVdyYXBwZXI6OmNyZWF0ZVdyYXBwZXIodjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBj
cmVhdGlvCiAgICAgVjhXcmFwcGVySW5zdGFudGlhdGlvblNjb3BlIHNjb3BlKGNyZWF0aW9uQ29u
dGV4dCk7CiAKICAgICBWOFBlckNvbnRleHREYXRhKiBwZXJDb250ZXh0RGF0YSA9IFY4UGVyQ29u
dGV4dERhdGE6OmZyb20oc2NvcGUuY29udGV4dCgpKTsKLSAgICB2ODo6TG9jYWw8djg6Ok9iamVj
dD4gd3JhcHBlciA9IHBlckNvbnRleHREYXRhID8gcGVyQ29udGV4dERhdGEtPmNyZWF0ZVdyYXBw
ZXJGcm9tQ2FjaGUodHlwZSkgOiBWOE9iamVjdENvbnN0cnVjdG9yOjpuZXdJbnN0YW5jZSh0eXBl
LT5nZXRUZW1wbGF0ZShpc29sYXRlKS0+R2V0RnVuY3Rpb24oKSk7CisgICAgV3JhcHBlckNvbnRl
eHRUeXBlIGNvbnRleHRUeXBlID0gRE9NV3JhcHBlcldvcmxkOjpnZXRXb3JsZChzY29wZS5jb250
ZXh0KCkpID8gSXNvbGF0ZWRXb3JsZCA6IE1haW5Xb3JsZDsKKyAgICB2ODo6TG9jYWw8djg6Ok9i
amVjdD4gd3JhcHBlciA9IHBlckNvbnRleHREYXRhID8gcGVyQ29udGV4dERhdGEtPmNyZWF0ZVdy
YXBwZXJGcm9tQ2FjaGUodHlwZSkgOiBWOE9iamVjdENvbnN0cnVjdG9yOjpuZXdJbnN0YW5jZSh0
eXBlLT5nZXRUZW1wbGF0ZShpc29sYXRlLCBjb250ZXh0VHlwZSktPkdldEZ1bmN0aW9uKCkpOwog
CiAgICAgaWYgKHR5cGUgPT0gJlY4SFRNTERvY3VtZW50OjppbmZvICYmICF3cmFwcGVyLklzRW1w
dHkoKSkKICAgICAgICAgd3JhcHBlciA9IFY4SFRNTERvY3VtZW50Ojp3cmFwSW5TaGFkb3dPYmpl
Y3Qod3JhcHBlciwgc3RhdGljX2Nhc3Q8Tm9kZSo+KGltcGwpLCBpc29sYXRlKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4SW5pdGlhbGl6ZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvdjgvVjhJbml0aWFsaXplci5jcHAKaW5kZXggY2IzYmM2ZGMxZWNj
YTJhYmI5NDViOTllMzQ3NDA0NGQyMjMyOGIxNi4uMDQ1MWRiZDEwYjFjYTM3YjkwODM5ZmM1YjBh
MzlhNmUyZWRmYmE4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhJ
bml0aWFsaXplci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhJbml0aWFs
aXplci5jcHAKQEAgLTUxLDcgKzUxLDcgQEAgc3RhdGljIEZyYW1lKiBmaW5kRnJhbWUodjg6Okxv
Y2FsPHY4OjpPYmplY3Q+IGhvc3QsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IGRhdGEsIHYKICAgICBX
cmFwcGVyVHlwZUluZm8qIHR5cGUgPSBXcmFwcGVyVHlwZUluZm86OnVud3JhcChkYXRhKTsKIAog
ICAgIGlmIChWOERPTVdpbmRvdzo6aW5mby5lcXVhbHModHlwZSkpIHsKLSAgICAgICAgdjg6Okhh
bmRsZTx2ODo6T2JqZWN0PiB3aW5kb3dXcmFwcGVyID0gaG9zdC0+RmluZEluc3RhbmNlSW5Qcm90
b3R5cGVDaGFpbihWOERPTVdpbmRvdzo6R2V0VGVtcGxhdGUoaXNvbGF0ZSkpOworICAgICAgICB2
ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdpbmRvd1dyYXBwZXIgPSBob3N0LT5GaW5kSW5zdGFuY2VJ
blByb3RvdHlwZUNoYWluKFY4RE9NV2luZG93OjpHZXRUZW1wbGF0ZShpc29sYXRlLCBnZXRDb250
ZXh0VHlwZShpc29sYXRlKSkpOwogICAgICAgICBpZiAod2luZG93V3JhcHBlci5Jc0VtcHR5KCkp
CiAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgcmV0dXJuIFY4RE9NV2luZG93Ojp0b05h
dGl2ZSh3aW5kb3dXcmFwcGVyKS0+ZnJhbWUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L1Y4UGVyQ29udGV4dERhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvdjgvVjhQZXJDb250ZXh0RGF0YS5jcHAKaW5kZXggYjM5MjMyM2E4ZmRlN2VjNzRhMzNmMDJh
YTk1YzYxNjJlYTg2NTY0Ny4uZDQ1MjIyMzZkYmRkMjUxMGEwMGRjMmZlZWZlNzg3MDc5MGIwMzlm
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhQZXJDb250ZXh0RGF0
YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhQZXJDb250ZXh0RGF0YS5j
cHAKQEAgLTExNSw3ICsxMTUsNyBAQCB2ODo6TG9jYWw8djg6OkZ1bmN0aW9uPiBWOFBlckNvbnRl
eHREYXRhOjpjb25zdHJ1Y3RvckZvclR5cGVTbG93Q2FzZShXcmFwcGVyVHlwZQogICAgIEFTU0VS
VCghbV9vYmplY3RQcm90b3R5cGUuaXNFbXB0eSgpKTsKIAogICAgIHY4OjpDb250ZXh0OjpTY29w
ZSBzY29wZShtX2NvbnRleHQpOwotICAgIHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uVGVtcGxhdGU+
IGZ1bmN0aW9uVGVtcGxhdGUgPSB0eXBlLT5nZXRUZW1wbGF0ZShtX2NvbnRleHQtPkdldElzb2xh
dGUoKSk7CisgICAgdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gZnVuY3Rpb25UZW1w
bGF0ZSA9IHR5cGUtPmdldFRlbXBsYXRlKG1fY29udGV4dC0+R2V0SXNvbGF0ZSgpLCBnZXRDb250
ZXh0VHlwZShtX2NvbnRleHQtPkdldElzb2xhdGUoKSkpOwogICAgIC8vIEdldHRpbmcgdGhlIGZ1
bmN0aW9uIG1pZ2h0IGZhaWwgaWYgd2UncmUgcnVubmluZyBvdXQgb2Ygc3RhY2sgb3IgbWVtb3J5
LgogICAgIHY4OjpUcnlDYXRjaCB0cnlDYXRjaDsKICAgICB2ODo6TG9jYWw8djg6OkZ1bmN0aW9u
PiBmdW5jdGlvbiA9IGZ1bmN0aW9uVGVtcGxhdGUtPkdldEZ1bmN0aW9uKCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9Xb3JrZXJTY3JpcHRDb250cm9sbGVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1dvcmtlclNjcmlwdENvbnRyb2xsZXIuY3BwCmlu
ZGV4IGJjNDYwOTM4Mjc5ZmU0ZGYzM2EyYTgxNTAwYzY4YzFhNjMwNTc5OTEuLjczODU2MjBjZmNi
NzlhODc3OTkzZDU5MTY0YjM5ODZiYTU2ZDc5ZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L1dvcmtlclNjcmlwdENvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L1dvcmtlclNjcmlwdENvbnRyb2xsZXIuY3BwCkBAIC0yNDksNyArMjQ5
LDcgQEAgV29ya2VyU2NyaXB0Q29udHJvbGxlciogV29ya2VyU2NyaXB0Q29udHJvbGxlcjo6Y29u
dHJvbGxlckZvckNvbnRleHQoKQogICAgICAgICByZXR1cm4gMDsKICAgICB2ODo6SGFuZGxlPHY4
OjpDb250ZXh0PiBjb250ZXh0ID0gdjg6OkNvbnRleHQ6OkdldEN1cnJlbnQoKTsKICAgICB2ODo6
SGFuZGxlPHY4OjpPYmplY3Q+IGdsb2JhbCA9IGNvbnRleHQtPkdsb2JhbCgpOwotICAgIGdsb2Jh
bCA9IGdsb2JhbC0+RmluZEluc3RhbmNlSW5Qcm90b3R5cGVDaGFpbihWOFdvcmtlckNvbnRleHQ6
OkdldFRlbXBsYXRlKGNvbnRleHQtPkdldElzb2xhdGUoKSkpOworICAgIGdsb2JhbCA9IGdsb2Jh
bC0+RmluZEluc3RhbmNlSW5Qcm90b3R5cGVDaGFpbihWOFdvcmtlckNvbnRleHQ6OkdldFRlbXBs
YXRlKGNvbnRleHQtPkdldElzb2xhdGUoKSwgV29ya2VyV29ybGQpKTsKICAgICAvLyBSZXR1cm4g
MCBpZiB0aGUgY3VycmVudCBleGVjdXRpbmcgY29udGV4dCBpcyBub3QgdGhlIHdvcmtlciBjb250
ZXh0LgogICAgIGlmIChnbG9iYWwuSXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gMDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1dyYXBwZXJUeXBlSW5mby5oIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvV3JhcHBlclR5cGVJbmZvLmgKaW5kZXggYjMxMGFmOWE3
ZDJmODAxMjA0NDg3ODZhODkwZjNiZmE4NjI2NjUyNi4uZmE4N2Q1ZjZhZGU2Y2I4NTQ4MTI4Yjc4
YzNjNWQxZmUzOGQzZmMyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
V3JhcHBlclR5cGVJbmZvLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvV3JhcHBl
clR5cGVJbmZvLmgKQEAgLTQ3LDcgKzQ3LDEzIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBz
dGF0aWMgY29uc3QgdWludDE2X3QgdjhET01Ob2RlQ2xhc3NJZCA9IDE7CiAgICAgc3RhdGljIGNv
bnN0IHVpbnQxNl90IHY4RE9NT2JqZWN0Q2xhc3NJZCA9IDI7CiAKLSAgICB0eXBlZGVmIHY4OjpQ
ZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiAoKkdldFRlbXBsYXRlRnVuY3Rpb24pKHY4
OjpJc29sYXRlKik7CisgICAgZW51bSBXcmFwcGVyQ29udGV4dFR5cGUgeworICAgICAgICBNYWlu
V29ybGQgPSAwLAorICAgICAgICBJc29sYXRlZFdvcmxkLAorICAgICAgICBXb3JrZXJXb3JsZAor
ICAgIH07CisKKyAgICB0eXBlZGVmIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRl
PiAoKkdldFRlbXBsYXRlRnVuY3Rpb24pKHY4OjpJc29sYXRlKiwgV3JhcHBlckNvbnRleHRUeXBl
KTsKICAgICB0eXBlZGVmIHZvaWQgKCpEZXJlZk9iamVjdEZ1bmN0aW9uKSh2b2lkKik7CiAgICAg
dHlwZWRlZiBBY3RpdmVET01PYmplY3QqICgqVG9BY3RpdmVET01PYmplY3RGdW5jdGlvbikodjg6
OkhhbmRsZTx2ODo6T2JqZWN0Pik7CiAgICAgdHlwZWRlZiBFdmVudFRhcmdldCogKCpUb0V2ZW50
VGFyZ2V0RnVuY3Rpb24pKHY4OjpIYW5kbGU8djg6Ok9iamVjdD4pOwpAQCAtODUsNyArOTEsNyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAg
IH0KICAgICAgICAgCi0gICAgICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRl
PiBnZXRUZW1wbGF0ZSh2ODo6SXNvbGF0ZSogaXNvbGF0ZSkgeyByZXR1cm4gZ2V0VGVtcGxhdGVG
dW5jdGlvbihpc29sYXRlKTsgfQorICAgICAgICB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25U
ZW1wbGF0ZT4gZ2V0VGVtcGxhdGUodjg6Oklzb2xhdGUqIGlzb2xhdGUsIFdyYXBwZXJDb250ZXh0
VHlwZSBjb250ZXh0VHlwZSkgeyByZXR1cm4gZ2V0VGVtcGxhdGVGdW5jdGlvbihpc29sYXRlLCBj
b250ZXh0VHlwZSk7IH0KICAgICAgICAgCiAgICAgICAgIHZvaWQgZGVyZWZPYmplY3Qodm9pZCog
b2JqZWN0KQogICAgICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92
OC9jdXN0b20vVjhET01XaW5kb3dDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvY3VzdG9tL1Y4RE9NV2luZG93Q3VzdG9tLmNwcAppbmRleCAxNWQ4YmIxZDZmMGRlZTg3ZTE3
NDhlZDA1MGUzZmE4ZmNhZTE5MmQzLi5hMThjODhjMGEzMDEyZTEzNDllYTgzMzk1NTExYzExNWY5
NGY3MmMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhE
T01XaW5kb3dDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3Rv
bS9WOERPTVdpbmRvd0N1c3RvbS5jcHAKQEAgLTE0Niw3ICsxNDYsNyBAQCB2ODo6SGFuZGxlPHY4
OjpWYWx1ZT4gV2luZG93U2V0VGltZW91dEltcGwoY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncywg
Ym9vbCBzaW5nbAogCiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhET01XaW5kb3c6OmV2ZW50QXR0
ckdldHRlckN1c3RvbSh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vz
c29ySW5mbyYgaW5mbykKIHsKLSAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGhvbGRlciA9IGlu
Zm8uVGhpcygpLT5GaW5kSW5zdGFuY2VJblByb3RvdHlwZUNoYWluKFY4RE9NV2luZG93OjpHZXRU
ZW1wbGF0ZShpbmZvLkdldElzb2xhdGUoKSkpOworICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4g
aG9sZGVyID0gaW5mby5UaGlzKCktPkZpbmRJbnN0YW5jZUluUHJvdG90eXBlQ2hhaW4oVjhET01X
aW5kb3c6OkdldFRlbXBsYXRlKGluZm8uR2V0SXNvbGF0ZSgpLCBnZXRDb250ZXh0VHlwZShpbmZv
LkdldElzb2xhdGUoKSkpKTsKICAgICBpZiAoaG9sZGVyLklzRW1wdHkoKSkKICAgICAgICAgcmV0
dXJuIHY4OjpVbmRlZmluZWQoKTsKIApAQCAtMTY4LDcgKzE2OCw3IEBAIHY4OjpIYW5kbGU8djg6
OlZhbHVlPiBWOERPTVdpbmRvdzo6ZXZlbnRBdHRyR2V0dGVyQ3VzdG9tKHY4OjpMb2NhbDx2ODo6
U3RyaW5nPiBuCiAKIHZvaWQgVjhET01XaW5kb3c6OmV2ZW50QXR0clNldHRlckN1c3RvbSh2ODo6
TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0
IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7Ci0gICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBo
b2xkZXIgPSBpbmZvLlRoaXMoKS0+RmluZEluc3RhbmNlSW5Qcm90b3R5cGVDaGFpbihWOERPTVdp
bmRvdzo6R2V0VGVtcGxhdGUoaW5mby5HZXRJc29sYXRlKCkpKTsKKyAgICB2ODo6SGFuZGxlPHY4
OjpPYmplY3Q+IGhvbGRlciA9IGluZm8uVGhpcygpLT5GaW5kSW5zdGFuY2VJblByb3RvdHlwZUNo
YWluKFY4RE9NV2luZG93OjpHZXRUZW1wbGF0ZShpbmZvLkdldElzb2xhdGUoKSwgZ2V0Q29udGV4
dFR5cGUoaW5mby5HZXRJc29sYXRlKCkpKSk7CiAgICAgaWYgKGhvbGRlci5Jc0VtcHR5KCkpCiAg
ICAgICAgIHJldHVybjsKIApAQCAtMzQ0LDcgKzM0NCw3IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVl
PiBWOERPTVdpbmRvdzo6cG9zdE1lc3NhZ2VNZXRob2RDdXN0b20oY29uc3Qgdjg6OkFyZ3VtZW50
cyYKIC8vIHN3aXRjaGluZyBjb250ZXh0IG9mIHJlY2VpdmVyLiBJIGNvbnNpZGVyIGl0IGlzIGRh
bmdlcm91cy4KIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOERPTVdpbmRvdzo6dG9TdHJpbmdNZXRo
b2RDdXN0b20oY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKLSAgICB2ODo6SGFuZGxlPHY4
OjpPYmplY3Q+IGRvbVdyYXBwZXIgPSBhcmdzLlRoaXMoKS0+RmluZEluc3RhbmNlSW5Qcm90b3R5
cGVDaGFpbihWOERPTVdpbmRvdzo6R2V0VGVtcGxhdGUoYXJncy5HZXRJc29sYXRlKCkpKTsKKyAg
ICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGRvbVdyYXBwZXIgPSBhcmdzLlRoaXMoKS0+RmluZElu
c3RhbmNlSW5Qcm90b3R5cGVDaGFpbihWOERPTVdpbmRvdzo6R2V0VGVtcGxhdGUoYXJncy5HZXRJ
c29sYXRlKCksIGdldENvbnRleHRUeXBlKGFyZ3MuR2V0SXNvbGF0ZSgpKSkpOwogICAgIGlmIChk
b21XcmFwcGVyLklzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIGFyZ3MuVGhpcygpLT5PYmplY3RQ
cm90b1RvU3RyaW5nKCk7CiAgICAgcmV0dXJuIGRvbVdyYXBwZXItPk9iamVjdFByb3RvVG9TdHJp
bmcoKTsKQEAgLTUxMCw3ICs1MTAsNyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhET01XaW5k
b3c6OnNldEludGVydmFsTWV0aG9kQ3VzdG9tKGNvbnN0IHY4OjpBcmd1bWVudHMmCiBib29sIFY4
RE9NV2luZG93OjpuYW1lZFNlY3VyaXR5Q2hlY2sodjg6OkxvY2FsPHY4OjpPYmplY3Q+IGhvc3Qs
IHY4OjpMb2NhbDx2ODo6VmFsdWU+IGtleSwgdjg6OkFjY2Vzc1R5cGUgdHlwZSwgdjg6OkxvY2Fs
PHY4OjpWYWx1ZT4pCiB7CiAgICAgdjg6Oklzb2xhdGUqIGlzb2xhdGUgPSB2ODo6SXNvbGF0ZTo6
R2V0Q3VycmVudCgpOwotICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd2luZG93ID0gaG9zdC0+
RmluZEluc3RhbmNlSW5Qcm90b3R5cGVDaGFpbihWOERPTVdpbmRvdzo6R2V0VGVtcGxhdGUoaXNv
bGF0ZSkpOworICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd2luZG93ID0gaG9zdC0+RmluZElu
c3RhbmNlSW5Qcm90b3R5cGVDaGFpbihWOERPTVdpbmRvdzo6R2V0VGVtcGxhdGUoaXNvbGF0ZSwg
Z2V0Q29udGV4dFR5cGUoaXNvbGF0ZSkpKTsKICAgICBpZiAod2luZG93LklzRW1wdHkoKSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOyAgLy8gdGhlIGZyYW1lIGlzIGdvbmUuCiAKQEAgLTU0NCw3ICs1
NDQsNyBAQCBib29sIFY4RE9NV2luZG93OjpuYW1lZFNlY3VyaXR5Q2hlY2sodjg6OkxvY2FsPHY4
OjpPYmplY3Q+IGhvc3QsIHY4OjpMb2NhbDx2ODo6VgogYm9vbCBWOERPTVdpbmRvdzo6aW5kZXhl
ZFNlY3VyaXR5Q2hlY2sodjg6OkxvY2FsPHY4OjpPYmplY3Q+IGhvc3QsIHVpbnQzMl90IGluZGV4
LCB2ODo6QWNjZXNzVHlwZSB0eXBlLCB2ODo6TG9jYWw8djg6OlZhbHVlPikKIHsKICAgICB2ODo6
SXNvbGF0ZSogaXNvbGF0ZSA9IHY4OjpJc29sYXRlOjpHZXRDdXJyZW50KCk7Ci0gICAgdjg6Okhh
bmRsZTx2ODo6T2JqZWN0PiB3aW5kb3cgPSBob3N0LT5GaW5kSW5zdGFuY2VJblByb3RvdHlwZUNo
YWluKFY4RE9NV2luZG93OjpHZXRUZW1wbGF0ZShpc29sYXRlKSk7CisgICAgdjg6OkhhbmRsZTx2
ODo6T2JqZWN0PiB3aW5kb3cgPSBob3N0LT5GaW5kSW5zdGFuY2VJblByb3RvdHlwZUNoYWluKFY4
RE9NV2luZG93OjpHZXRUZW1wbGF0ZShpc29sYXRlLCBnZXRDb250ZXh0VHlwZShpc29sYXRlKSkp
OwogICAgIGlmICh3aW5kb3cuSXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKQEAg
LTU4Niw3ICs1ODYsOCBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOChET01XaW5kb3cqIHdp
bmRvdywgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVhdGlvbkNvbgogICAgIC8vIG5lY2Vzc2Fy
aWx5IHRoZSBmaXJzdCBnbG9iYWwgb2JqZWN0IGFzc29jaWF0ZWQgd2l0aCB0aGF0IERPTVdpbmRv
dy4KICAgICB2ODo6SGFuZGxlPHY4OjpDb250ZXh0PiBjdXJyZW50Q29udGV4dCA9IHY4OjpDb250
ZXh0OjpHZXRDdXJyZW50KCk7CiAgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjdXJyZW50R2xv
YmFsID0gY3VycmVudENvbnRleHQtPkdsb2JhbCgpOwotICAgIHY4OjpIYW5kbGU8djg6Ok9iamVj
dD4gd2luZG93V3JhcHBlciA9IGN1cnJlbnRHbG9iYWwtPkZpbmRJbnN0YW5jZUluUHJvdG90eXBl
Q2hhaW4oVjhET01XaW5kb3c6OkdldFRlbXBsYXRlKGlzb2xhdGUpKTsKKyAgICBXcmFwcGVyQ29u
dGV4dFR5cGUgY29udGV4dFR5cGUgPSBET01XcmFwcGVyV29ybGQ6OmdldFdvcmxkKGN1cnJlbnRD
b250ZXh0KSA/IElzb2xhdGVkV29ybGQgOiBNYWluV29ybGQ7CisgICAgdjg6OkhhbmRsZTx2ODo6
T2JqZWN0PiB3aW5kb3dXcmFwcGVyID0gY3VycmVudEdsb2JhbC0+RmluZEluc3RhbmNlSW5Qcm90
b3R5cGVDaGFpbihWOERPTVdpbmRvdzo6R2V0VGVtcGxhdGUoaXNvbGF0ZSwgY29udGV4dFR5cGUp
KTsKICAgICBpZiAoIXdpbmRvd1dyYXBwZXIuSXNFbXB0eSgpKSB7CiAgICAgICAgIGlmIChWOERP
TVdpbmRvdzo6dG9OYXRpdmUod2luZG93V3JhcHBlcikgPT0gd2luZG93KQogICAgICAgICAgICAg
cmV0dXJuIGN1cnJlbnRHbG9iYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy92OC9jdXN0b20vVjhIVE1MRG9jdW1lbnRDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTERvY3VtZW50Q3VzdG9tLmNwcAppbmRleCA1YzFmNjVmZjUx
OWRhMmVjNTc4N2U0NzIwMGU3MDY1OGZhY2E4MjE0Li42Y2UyZWM4NGVmZmNlNGY5YTVjNWZlYzAz
ZDA1YzQwOWU1OWVhNGIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9j
dXN0b20vVjhIVE1MRG9jdW1lbnRDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L2N1c3RvbS9WOEhUTUxEb2N1bWVudEN1c3RvbS5jcHAKQEAgLTYwLDcgKzYwLDkgQEAg
djg6OkxvY2FsPHY4OjpPYmplY3Q+IFY4SFRNTERvY3VtZW50Ojp3cmFwSW5TaGFkb3dPYmplY3Qo
djg6OkxvY2FsPHY4OjpPYmplY3Q+IHcKICAgICAgICAgaWYgKHNoYWRvd1RlbXBsYXRlLklzRW1w
dHkoKSkKICAgICAgICAgICAgIHJldHVybiB2ODo6TG9jYWw8djg6Ok9iamVjdD4oKTsKICAgICAg
ICAgc2hhZG93VGVtcGxhdGUtPlNldENsYXNzTmFtZSh2ODo6U3RyaW5nOjpOZXdTeW1ib2woIkhU
TUxEb2N1bWVudCIpKTsKLSAgICAgICAgc2hhZG93VGVtcGxhdGUtPkluaGVyaXQoVjhIVE1MRG9j
dW1lbnQ6OkdldFRlbXBsYXRlKGlzb2xhdGUpKTsKKyAgICAgICAgdjg6OkxvY2FsPHY4OjpDb250
ZXh0PiBjb250ZXh0KHY4OjpDb250ZXh0OjpHZXRDdXJyZW50KCkpOworICAgICAgICBXcmFwcGVy
Q29udGV4dFR5cGUgY29udGV4dFR5cGUgPSBET01XcmFwcGVyV29ybGQ6OmdldFdvcmxkKGNvbnRl
eHQpID8gSXNvbGF0ZWRXb3JsZCA6IE1haW5Xb3JsZDsKKyAgICAgICAgc2hhZG93VGVtcGxhdGUt
PkluaGVyaXQoVjhIVE1MRG9jdW1lbnQ6OkdldFRlbXBsYXRlKGlzb2xhdGUsIGNvbnRleHRUeXBl
KSk7CiAgICAgICAgIHNoYWRvd1RlbXBsYXRlLT5JbnN0YW5jZVRlbXBsYXRlKCktPlNldEludGVy
bmFsRmllbGRDb3VudChWOEhUTUxEb2N1bWVudDo6aW50ZXJuYWxGaWVsZENvdW50KTsKICAgICB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxJ
bWFnZUVsZW1lbnRDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9j
dXN0b20vVjhIVE1MSW1hZ2VFbGVtZW50Q29uc3RydWN0b3IuY3BwCmluZGV4IDkzNTVlZTNkZjVm
MDBkNmVlNDA4NTE2MmI2NTU1YzVjZjQyODFjMjUuLmVkNjM0MzQ0MjM4YmVjNjJkYTIyMGM3NmY0
Y2I0NzBkMzk0ZTA5YzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1
c3RvbS9WOEhUTUxJbWFnZUVsZW1lbnRDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTEltYWdlRWxlbWVudENvbnN0cnVjdG9yLmNwcApA
QCAtODEsNyArODEsNyBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHY4SFRNTEltYWdl
RWxlbWVudENvbnN0cnVjdG9yTWV0aG9kQ3VzdG9tKGNvbnN0IHY4OgogICAgIHJldHVybiB3cmFw
cGVyOwogfQogCi12ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gVjhIVE1MSW1h
Z2VFbGVtZW50Q29uc3RydWN0b3I6OkdldFRlbXBsYXRlKHY4OjpJc29sYXRlKiBpc29sYXRlKQor
djg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IFY4SFRNTEltYWdlRWxlbWVudENv
bnN0cnVjdG9yOjpHZXRUZW1wbGF0ZSh2ODo6SXNvbGF0ZSogaXNvbGF0ZSwgV3JhcHBlckNvbnRl
eHRUeXBlIGNvbnRleHRUeXBlKQogewogICAgIHN0YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6RnVu
Y3Rpb25UZW1wbGF0ZT4gY2FjaGVkVGVtcGxhdGU7CiAgICAgaWYgKCFjYWNoZWRUZW1wbGF0ZS5J
c0VtcHR5KCkpCkBAIC05Myw3ICs5Myw3IEBAIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRl
bXBsYXRlPiBWOEhUTUxJbWFnZUVsZW1lbnRDb25zdHJ1Y3Rvcjo6R2V0VGVtcGxhdGUoCiAgICAg
djg6OkxvY2FsPHY4OjpPYmplY3RUZW1wbGF0ZT4gaW5zdGFuY2UgPSByZXN1bHQtPkluc3RhbmNl
VGVtcGxhdGUoKTsKICAgICBpbnN0YW5jZS0+U2V0SW50ZXJuYWxGaWVsZENvdW50KFY4SFRNTElt
YWdlRWxlbWVudDo6aW50ZXJuYWxGaWVsZENvdW50KTsKICAgICByZXN1bHQtPlNldENsYXNzTmFt
ZSh2ODo6U3RyaW5nOjpOZXdTeW1ib2woIkhUTUxJbWFnZUVsZW1lbnQiKSk7Ci0gICAgcmVzdWx0
LT5Jbmhlcml0KFY4SFRNTEltYWdlRWxlbWVudDo6R2V0VGVtcGxhdGUoaXNvbGF0ZSkpOworICAg
IHJlc3VsdC0+SW5oZXJpdChWOEhUTUxJbWFnZUVsZW1lbnQ6OkdldFRlbXBsYXRlKGlzb2xhdGUs
IGNvbnRleHRUeXBlKSk7CiAKICAgICBjYWNoZWRUZW1wbGF0ZSA9IHY4OjpQZXJzaXN0ZW50PHY4
OjpGdW5jdGlvblRlbXBsYXRlPjo6TmV3KGlzb2xhdGUsIHJlc3VsdCk7CiAgICAgcmV0dXJuIGNh
Y2hlZFRlbXBsYXRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3Vz
dG9tL1Y4SFRNTEltYWdlRWxlbWVudENvbnN0cnVjdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9jdXN0b20vVjhIVE1MSW1hZ2VFbGVtZW50Q29uc3RydWN0b3IuaAppbmRleCA5NTZi
YzhkODViOWMwYzJlMTE5YjE4YWFkMTg3MDdiNTI4OWViNTkxLi40NGQwNzBjNTIxYzAyNzUwZTgw
ZGJmODNmNzkyZTM1ODQyYzc2YmI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy92OC9jdXN0b20vVjhIVE1MSW1hZ2VFbGVtZW50Q29uc3RydWN0b3IuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MSW1hZ2VFbGVtZW50Q29uc3RydWN0b3Iu
aApAQCAtMzksNyArMzksNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFY4SFRNTElt
YWdlRWxlbWVudENvbnN0cnVjdG9yIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgdjg6OlBlcnNpc3Rl
bnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IEdldFRlbXBsYXRlKHY4OjpJc29sYXRlKiA9IDApOwor
ICAgIHN0YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gR2V0VGVtcGxh
dGUodjg6Oklzb2xhdGUqLCBXcmFwcGVyQ29udGV4dFR5cGUpOwogICAgIHN0YXRpYyBXcmFwcGVy
VHlwZUluZm8gaW5mbzsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L2N1c3RvbS9WOEluamVjdGVkU2NyaXB0TWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy92OC9jdXN0b20vVjhJbmplY3RlZFNjcmlwdE1hbmFnZXIuY3BwCmluZGV4IGIyOTYx
ZTMwMDQwZGFjNjhiMjE0Y2JhNWE0OGI2MzBkZDQzOWZiNTAuLjY1ZDdiYzM5YWYyNmVmMTg4MDg5
ZWFhYjY3NGNhNDgyYTA1MzFhNmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L2N1c3RvbS9WOEluamVjdGVkU2NyaXB0TWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmNwcApAQCAtNTUs
NyArNTUsNyBAQCBzdGF0aWMgdm9pZCBXZWFrUmVmZXJlbmNlQ2FsbGJhY2sodjg6Oklzb2xhdGUq
IGlzb2xhdGUsIHY4OjpQZXJzaXN0ZW50PHY4OjpWYWx1ZQogCiBzdGF0aWMgdjg6OkxvY2FsPHY4
OjpPYmplY3Q+IGNyZWF0ZUluamVjdGVkU2NyaXB0SG9zdFY4V3JhcHBlcihJbmplY3RlZFNjcmlw
dEhvc3QqIGhvc3QsIHY4OjpJc29sYXRlKiBpc29sYXRlKQogewotICAgIHY4OjpMb2NhbDx2ODo6
RnVuY3Rpb24+IGZ1bmN0aW9uID0gVjhJbmplY3RlZFNjcmlwdEhvc3Q6OkdldFRlbXBsYXRlKGlz
b2xhdGUpLT5HZXRGdW5jdGlvbigpOworICAgIHY4OjpMb2NhbDx2ODo6RnVuY3Rpb24+IGZ1bmN0
aW9uID0gVjhJbmplY3RlZFNjcmlwdEhvc3Q6OkdldFRlbXBsYXRlKGlzb2xhdGUsIGdldENvbnRl
eHRUeXBlKGlzb2xhdGUpKS0+R2V0RnVuY3Rpb24oKTsKICAgICBpZiAoZnVuY3Rpb24uSXNFbXB0
eSgpKSB7CiAgICAgICAgIC8vIFJldHVybiBpZiBhbGxvY2F0aW9uIGZhaWxlZC4KICAgICAgICAg
cmV0dXJuIHY4OjpMb2NhbDx2ODo6T2JqZWN0PigpOwpAQCAtMTE4LDcgKzExOCw3IEBAIGJvb2wg
SW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOjpjYW5BY2Nlc3NJbnNwZWN0ZWRXaW5kb3coU2NyaXB0U3Rh
dGUqIHNjcmlwdFN0YXRlKQogICAgIHY4OjpMb2NhbDx2ODo6T2JqZWN0PiBnbG9iYWwgPSBjb250
ZXh0LT5HbG9iYWwoKTsKICAgICBpZiAoZ2xvYmFsLklzRW1wdHkoKSkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwotICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gaG9sZGVyID0gZ2xvYmFsLT5GaW5k
SW5zdGFuY2VJblByb3RvdHlwZUNoYWluKFY4RE9NV2luZG93OjpHZXRUZW1wbGF0ZShjb250ZXh0
LT5HZXRJc29sYXRlKCkpKTsKKyAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGhvbGRlciA9IGds
b2JhbC0+RmluZEluc3RhbmNlSW5Qcm90b3R5cGVDaGFpbihWOERPTVdpbmRvdzo6R2V0VGVtcGxh
dGUoY29udGV4dC0+R2V0SXNvbGF0ZSgpLCBnZXRDb250ZXh0VHlwZShjb250ZXh0LT5HZXRJc29s
YXRlKCkpKSk7CiAgICAgaWYgKGhvbGRlci5Jc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICBGcmFtZSogZnJhbWUgPSBWOERPTVdpbmRvdzo6dG9OYXRpdmUoaG9sZGVyKS0+ZnJh
bWUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOExv
Y2F0aW9uQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOExv
Y2F0aW9uQ3VzdG9tLmNwcAppbmRleCBlYzcxMjJmOGQ5MzcyNmNiODlmYzljMTU4ZjNhNTM0NDU4
YjBjMmE0Li5kM2E2NzkyMmYyNGI4NjAxMmY4MjM2N2YxOWI1MmMyMDljNzJmMjQ5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhMb2NhdGlvbkN1c3RvbS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4TG9jYXRpb25DdXN0
b20uY3BwCkBAIC0xNDAsNyArMTQwLDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4TG9jYXRp
b246OnJlbG9hZEF0dHJHZXR0ZXJDdXN0b20odjg6OkxvY2FsPHY4OjpTdHJpbmc+IG4KIHsKICAg
ICB2ODo6SXNvbGF0ZSogaXNvbGF0ZSA9IGluZm8uR2V0SXNvbGF0ZSgpOwogICAgIHN0YXRpYyB2
ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gcHJpdmF0ZVRlbXBsYXRlID0gdjg6
OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+OjpOZXcoaXNvbGF0ZSwgdjg6OkZ1bmN0
aW9uVGVtcGxhdGU6Ok5ldyhWOExvY2F0aW9uOjpyZWxvYWRNZXRob2RDdXN0b20sIHY4VW5kZWZp
bmVkKCksIHY4OjpTaWduYXR1cmU6Ok5ldyhWOExvY2F0aW9uOjpHZXRSYXdUZW1wbGF0ZShpc29s
YXRlKSkpKTsKLSAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGhvbGRlciA9IGluZm8uVGhpcygp
LT5GaW5kSW5zdGFuY2VJblByb3RvdHlwZUNoYWluKFY4TG9jYXRpb246OkdldFRlbXBsYXRlKGlz
b2xhdGUpKTsKKyAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGhvbGRlciA9IGluZm8uVGhpcygp
LT5GaW5kSW5zdGFuY2VJblByb3RvdHlwZUNoYWluKFY4TG9jYXRpb246OkdldFRlbXBsYXRlKGlz
b2xhdGUsIGdldENvbnRleHRUeXBlKGlzb2xhdGUpKSk7CiAgICAgaWYgKGhvbGRlci5Jc0VtcHR5
KCkpIHsKICAgICAgICAgLy8gY2FuIG9ubHkgcmVhY2ggaGVyZSBieSAnb2JqZWN0Ll9fcHJvdG9f
Xy5mdW5jJywgYW5kIGl0IHNob3VsZCBwYXNzZWQKICAgICAgICAgLy8gZG9tYWluIHNlY3VyaXR5
IGNoZWNrIGFscmVhZHkKQEAgLTE1OCw3ICsxNTgsNyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4g
VjhMb2NhdGlvbjo6cmVwbGFjZUF0dHJHZXR0ZXJDdXN0b20odjg6OkxvY2FsPHY4OjpTdHJpbmc+
CiB7CiAgICAgdjg6Oklzb2xhdGUqIGlzb2xhdGUgPSBpbmZvLkdldElzb2xhdGUoKTsKICAgICBz
dGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IHByaXZhdGVUZW1wbGF0
ZSA9IHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPjo6TmV3KGlzb2xhdGUsIHY4
OjpGdW5jdGlvblRlbXBsYXRlOjpOZXcoVjhMb2NhdGlvbjo6cmVwbGFjZU1ldGhvZEN1c3RvbSwg
djhVbmRlZmluZWQoKSwgdjg6OlNpZ25hdHVyZTo6TmV3KFY4TG9jYXRpb246OkdldFJhd1RlbXBs
YXRlKGlzb2xhdGUpKSkpOwotICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gaG9sZGVyID0gaW5m
by5UaGlzKCktPkZpbmRJbnN0YW5jZUluUHJvdG90eXBlQ2hhaW4oVjhMb2NhdGlvbjo6R2V0VGVt
cGxhdGUoaXNvbGF0ZSkpOworICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gaG9sZGVyID0gaW5m
by5UaGlzKCktPkZpbmRJbnN0YW5jZUluUHJvdG90eXBlQ2hhaW4oVjhMb2NhdGlvbjo6R2V0VGVt
cGxhdGUoaXNvbGF0ZSwgZ2V0Q29udGV4dFR5cGUoaXNvbGF0ZSkpKTsKICAgICBpZiAoaG9sZGVy
LklzRW1wdHkoKSkgewogICAgICAgICAvLyBjYW4gb25seSByZWFjaCBoZXJlIGJ5ICdvYmplY3Qu
X19wcm90b19fLmZ1bmMnLCBhbmQgaXQgc2hvdWxkIHBhc3NlZAogICAgICAgICAvLyBkb21haW4g
c2VjdXJpdHkgY2hlY2sgYWxyZWFkeQpAQCAtMTc3LDcgKzE3Nyw3IEBAIHY4OjpIYW5kbGU8djg6
OlZhbHVlPiBWOExvY2F0aW9uOjphc3NpZ25BdHRyR2V0dGVyQ3VzdG9tKHY4OjpMb2NhbDx2ODo6
U3RyaW5nPiBuCiAgICAgdjg6Oklzb2xhdGUqIGlzb2xhdGUgPSBpbmZvLkdldElzb2xhdGUoKTsK
ICAgICBzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IHByaXZhdGVU
ZW1wbGF0ZSA9CiAgICAgICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPjo6
TmV3KGlzb2xhdGUsIHY4OjpGdW5jdGlvblRlbXBsYXRlOjpOZXcoVjhMb2NhdGlvbjo6YXNzaWdu
TWV0aG9kQ3VzdG9tLCB2OFVuZGVmaW5lZCgpLCB2ODo6U2lnbmF0dXJlOjpOZXcoVjhMb2NhdGlv
bjo6R2V0UmF3VGVtcGxhdGUoaXNvbGF0ZSkpKSk7Ci0gICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0
PiBob2xkZXIgPSBpbmZvLlRoaXMoKS0+RmluZEluc3RhbmNlSW5Qcm90b3R5cGVDaGFpbihWOExv
Y2F0aW9uOjpHZXRUZW1wbGF0ZShpc29sYXRlKSk7CisgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0
PiBob2xkZXIgPSBpbmZvLlRoaXMoKS0+RmluZEluc3RhbmNlSW5Qcm90b3R5cGVDaGFpbihWOExv
Y2F0aW9uOjpHZXRUZW1wbGF0ZShpc29sYXRlLCBnZXRDb250ZXh0VHlwZShpc29sYXRlKSkpOwog
ICAgIGlmIChob2xkZXIuSXNFbXB0eSgpKSB7CiAgICAgICAgIC8vIGNhbiBvbmx5IHJlYWNoIGhl
cmUgYnkgJ29iamVjdC5fX3Byb3RvX18uZnVuYycsIGFuZCBpdCBzaG91bGQgcGFzc2VkCiAgICAg
ICAgIC8vIGRvbWFpbiBzZWN1cml0eSBjaGVjayBhbHJlYWR5CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhNZXNzYWdlRXZlbnRDdXN0b20uY3BwIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4TWVzc2FnZUV2ZW50Q3VzdG9tLmNwcApp
bmRleCAzODRjYmE1N2Q2OTBlNmIzOGFlN2JhZDc3M2Y3NjBlMjM4MWI3ZmE2Li4wOWIyMmFiN2U3
NGMxNWI5OTI5YTY2MTk2MzhkNGY3NDcxMzc0YzZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy92OC9jdXN0b20vVjhNZXNzYWdlRXZlbnRDdXN0b20uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOE1lc3NhZ2VFdmVudEN1c3RvbS5jcHAKQEAg
LTExNiw3ICsxMTYsNyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhNZXNzYWdlRXZlbnQ6Omlu
aXRNZXNzYWdlRXZlbnRNZXRob2RDdXN0b20oY29uc3Qgdjg6OkFyZwogICAgIERPTVdpbmRvdyog
c291cmNlQXJnID0gMDsKICAgICBpZiAoYXJnc1s2XS0+SXNPYmplY3QoKSkgewogICAgICAgICB2
ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBwZXIgPSB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+OjpD
YXN0KGFyZ3NbNl0pOwotICAgICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdpbmRvdyA9IHdy
YXBwZXItPkZpbmRJbnN0YW5jZUluUHJvdG90eXBlQ2hhaW4oVjhET01XaW5kb3c6OkdldFRlbXBs
YXRlKGFyZ3MuR2V0SXNvbGF0ZSgpKSk7CisgICAgICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4g
d2luZG93ID0gd3JhcHBlci0+RmluZEluc3RhbmNlSW5Qcm90b3R5cGVDaGFpbihWOERPTVdpbmRv
dzo6R2V0VGVtcGxhdGUoYXJncy5HZXRJc29sYXRlKCksIGdldENvbnRleHRUeXBlKGFyZ3MuR2V0
SXNvbGF0ZSgpKSkpOwogICAgICAgICBpZiAoIXdpbmRvdy5Jc0VtcHR5KCkpCiAgICAgICAgICAg
ICBzb3VyY2VBcmcgPSBWOERPTVdpbmRvdzo6dG9OYXRpdmUod2luZG93KTsKICAgICB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>190291</attachid>
            <date>2013-02-26 08:25:10 -0800</date>
            <delta_ts>2013-02-28 06:50:05 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-110875-20130226172124.patch</filename>
            <type>text/plain</type>
            <size>36918</size>
            <attacher name="Marja Hölttä">marja</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ0MDQ3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggY2I4OWNiYzI4NDI0ODk5
MzZmM2VmZDYzZmU2MjBhYTNkNGQ4MDdkZi4uNGVhOWZlNzcwZjE4NGFlOTkzODMzZTYzZTkzNmQ3
ZWRkMWEzYzFhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDcwIEBACisyMDEzLTAyLTI2ICBNYXJq
YSBIw7ZsdHTDpCAgPG1hcmphQGNocm9taXVtLm9yZz4KKworICAgICAgICBWOCBiaW5kaW5nczog
QWRkIGEgImNvbnRleHQgdHlwZSIgcGFyYW1ldGVyIHRvIEdldFRlbXBsYXRlIGFuZCBDb25maWd1
cmVWOFNvbWV0aGluZ1RlbXBsYXRlIGZ1bmN0aW9ucworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTEwODc1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIChubyBjaGFuZ2VzIGluIGJlaGF2
aW9yIHlldCkuCisKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5w
bToKKyAgICAgICAgKEdlbmVyYXRlSGVhZGVyKToKKyAgICAgICAgKEdlbmVyYXRlRG9tYWluU2Fm
ZUZ1bmN0aW9uR2V0dGVyKToKKyAgICAgICAgKEdlbmVyYXRlRG9tYWluU2FmZUZ1bmN0aW9uU2V0
dGVyKToKKyAgICAgICAgKEdlbmVyYXRlTm9ybWFsQXR0ckdldHRlcik6CisgICAgICAgIChHZW5l
cmF0ZU5hbWVkQ29uc3RydWN0b3IpOgorICAgICAgICAoR2VuZXJhdGVJbXBsZW1lbnRhdGlvbik6
CisgICAgICAgICogYmluZGluZ3MvdjgvRGljdGlvbmFyeS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpEaWN0aW9uYXJ5OjpnZXQpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1BhZ2VTY3JpcHREZWJ1
Z1NlcnZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpyZXRyaWV2ZUZyYW1lV2l0aEdsb2JhbE9i
amVjdENoZWNrKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9WOEFkYXB0b3JGdW5jdGlvbi5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpWOEFkYXB0b3JGdW5jdGlvbjo6Z2V0VGVtcGxhdGUpOgorICAg
ICAgICAoV2ViQ29yZTo6VjhBZGFwdG9yRnVuY3Rpb246OndyYXApOgorICAgICAgICAqIGJpbmRp
bmdzL3Y4L1Y4QWRhcHRvckZ1bmN0aW9uLmg6CisgICAgICAgIChWOEFkYXB0b3JGdW5jdGlvbik6
CisgICAgICAgICogYmluZGluZ3MvdjgvVjhCaW5kaW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OnRvRE9NV2luZG93KToKKyAgICAgICAgKFdlYkNvcmU6OnRvU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCk6CisgICAgICAgIChXZWJDb3JlOjpnZXRDb250ZXh0VHlwZSk6CisgICAgICAgIChXZWJDb3Jl
KToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9WOEJpbmRpbmcuaDoKKyAgICAgICAgKFdlYkNvcmUp
OgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4RE9NV2luZG93U2hlbGwuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6VjhET01XaW5kb3dTaGVsbDo6Y2xlYXJGb3JOYXZpZ2F0aW9uKToKKyAgICAgICAg
KiBiaW5kaW5ncy92OC9WOERPTVdyYXBwZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhET01X
cmFwcGVyOjpjcmVhdGVXcmFwcGVyKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9WOEluaXRpYWxp
emVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmZpbmRGcmFtZSk6CisgICAgICAgICogYmluZGlu
Z3MvdjgvVjhQZXJDb250ZXh0RGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOFBlckNvbnRl
eHREYXRhOjpjb25zdHJ1Y3RvckZvclR5cGVTbG93Q2FzZSk6CisgICAgICAgICogYmluZGluZ3Mv
djgvV29ya2VyU2NyaXB0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJT
Y3JpcHRDb250cm9sbGVyOjpjb250cm9sbGVyRm9yQ29udGV4dCk6CisgICAgICAgICogYmluZGlu
Z3MvdjgvV3JhcHBlclR5cGVJbmZvLmg6CisgICAgICAgIChXZWJDb3JlOjpXcmFwcGVyVHlwZUlu
Zm86OmdldFRlbXBsYXRlKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhET01XaW5k
b3dDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhET01XaW5kb3c6OmV2ZW50QXR0ckdl
dHRlckN1c3RvbSk6CisgICAgICAgIChXZWJDb3JlOjpWOERPTVdpbmRvdzo6ZXZlbnRBdHRyU2V0
dGVyQ3VzdG9tKToKKyAgICAgICAgKFdlYkNvcmU6OlY4RE9NV2luZG93Ojp0b1N0cmluZ01ldGhv
ZEN1c3RvbSk6CisgICAgICAgIChXZWJDb3JlOjpWOERPTVdpbmRvdzo6bmFtZWRTZWN1cml0eUNo
ZWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlY4RE9NV2luZG93OjppbmRleGVkU2VjdXJpdHlDaGVj
ayk6CisgICAgICAgIChXZWJDb3JlOjp0b1Y4KToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0
b20vVjhIVE1MRG9jdW1lbnRDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhIVE1MRG9j
dW1lbnQ6OndyYXBJblNoYWRvd09iamVjdCk6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9t
L1Y4SFRNTEltYWdlRWxlbWVudENvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4
SFRNTEltYWdlRWxlbWVudENvbnN0cnVjdG9yOjpHZXRUZW1wbGF0ZSk6CisgICAgICAgICogYmlu
ZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTEltYWdlRWxlbWVudENvbnN0cnVjdG9yLmg6CisgICAgICAg
IChWOEhUTUxJbWFnZUVsZW1lbnRDb25zdHJ1Y3Rvcik6CisgICAgICAgICogYmluZGluZ3Mvdjgv
Y3VzdG9tL1Y4SW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNy
ZWF0ZUluamVjdGVkU2NyaXB0SG9zdFY4V3JhcHBlcik6CisgICAgICAgIChXZWJDb3JlOjpJbmpl
Y3RlZFNjcmlwdE1hbmFnZXI6OmNhbkFjY2Vzc0luc3BlY3RlZFdpbmRvdyk6CisgICAgICAgICog
YmluZGluZ3MvdjgvY3VzdG9tL1Y4TG9jYXRpb25DdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6VjhMb2NhdGlvbjo6cmVsb2FkQXR0ckdldHRlckN1c3RvbSk6CisgICAgICAgIChXZWJDb3Jl
OjpWOExvY2F0aW9uOjpyZXBsYWNlQXR0ckdldHRlckN1c3RvbSk6CisgICAgICAgIChXZWJDb3Jl
OjpWOExvY2F0aW9uOjphc3NpZ25BdHRyR2V0dGVyQ3VzdG9tKToKKyAgICAgICAgKiBiaW5kaW5n
cy92OC9jdXN0b20vVjhNZXNzYWdlRXZlbnRDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
VjhNZXNzYWdlRXZlbnQ6OmluaXRNZXNzYWdlRXZlbnRNZXRob2RDdXN0b20pOgorCiAyMDEzLTAy
LTI2ICBWaXZlayBHYWxhdGFnZSAgPHZpdmVrLnZnQHNhbXN1bmcuY29tPgogCiAgICAgICAgIFdl
YiBJbnNwZWN0b3I6IERhdGFHcmlkIHNob3VsZCByZXZlYWwgYW5kIHNlbGVjdCBuZXh0L3ByZXZp
b3VzIERhdGFHcmlkTm9kZSB1cG9uIGRlbGV0aW9uIG9mIHNlbGVjdGVkIG5vZGUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0KaW5kZXgg
Zjc2NGM3N2Y0Y2EzYzBkNzliM2Y2ZDcwNzQwYTZhMjJiNDI5ZjE5NC4uZGI2NmQ5ZGQ0Y2Y0NTFk
MmUzMjZlYmVlMGI3ODZlMjAwYjRhMjkwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0KKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0KQEAgLTMyNCw3ICszMjQsNyBAQCBzdWIg
R2VuZXJhdGVIZWFkZXIKICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgPDxFTkQpOwogY2xh
c3MgVjgke25hdGl2ZVR5cGV9Q29uc3RydWN0b3IgewogcHVibGljOgotICAgIHN0YXRpYyB2ODo6
UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gR2V0VGVtcGxhdGUodjg6Oklzb2xhdGUq
KTsKKyAgICBzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IEdldFRl
bXBsYXRlKHY4OjpJc29sYXRlKiwgV3JhcHBlckNvbnRleHRUeXBlKTsKICAgICBzdGF0aWMgV3Jh
cHBlclR5cGVJbmZvIGluZm87CiB9OwogCkBAIC0zNjIsNyArMzYyLDcgQEAgRU5ECiAgICAgcHVz
aChAaGVhZGVyQ29udGVudCwgPDxFTkQpOwogICAgIHN0YXRpYyBib29sIEhhc0luc3RhbmNlKHY4
OjpIYW5kbGU8djg6OlZhbHVlPiwgdjg6Oklzb2xhdGUqKTsKICAgICBzdGF0aWMgdjg6OlBlcnNp
c3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IEdldFJhd1RlbXBsYXRlKHY4OjpJc29sYXRlKik7
Ci0gICAgc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBHZXRUZW1w
bGF0ZSh2ODo6SXNvbGF0ZSopOworICAgIHN0YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rp
b25UZW1wbGF0ZT4gR2V0VGVtcGxhdGUodjg6Oklzb2xhdGUqLCBXcmFwcGVyQ29udGV4dFR5cGUp
OwogICAgIHN0YXRpYyAke25hdGl2ZVR5cGV9KiB0b05hdGl2ZSh2ODo6SGFuZGxlPHY4OjpPYmpl
Y3Q+IG9iamVjdCkKICAgICB7CiAgICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PCR7bmF0
aXZlVHlwZX0qPigke2Zyb21GdW5jdGlvbk9wZW5pbmd9b2JqZWN0JHtmcm9tRnVuY3Rpb25DbG9z
aW5nfS0+R2V0QWxpZ25lZFBvaW50ZXJGcm9tSW50ZXJuYWxGaWVsZCh2OERPTVdyYXBwZXJPYmpl
Y3RJbmRleCkpOwpAQCAtNzk4LDcgKzc5OCw3IEBAIHN1YiBHZW5lcmF0ZURvbWFpblNhZmVGdW5j
dGlvbkdldHRlcgogc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiAke2Z1bmNOYW1lfUF0dHJH
ZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8m
IGluZm8pCiB7CiAgICAgc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRl
PiBwcml2YXRlVGVtcGxhdGUgPSB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT46
Ok5ldyhpbmZvLkdldElzb2xhdGUoKSwgJG5ld1RlbXBsYXRlU3RyaW5nKTsKLSAgICB2ODo6SGFu
ZGxlPHY4OjpPYmplY3Q+IGhvbGRlciA9IGluZm8uVGhpcygpLT5GaW5kSW5zdGFuY2VJblByb3Rv
dHlwZUNoYWluKCR7djhJbnRlcmZhY2VOYW1lfTo6R2V0VGVtcGxhdGUoaW5mby5HZXRJc29sYXRl
KCkpKTsKKyAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGhvbGRlciA9IGluZm8uVGhpcygpLT5G
aW5kSW5zdGFuY2VJblByb3RvdHlwZUNoYWluKCR7djhJbnRlcmZhY2VOYW1lfTo6R2V0VGVtcGxh
dGUoaW5mby5HZXRJc29sYXRlKCksIGdldENvbnRleHRUeXBlKGluZm8uR2V0SXNvbGF0ZSgpKSkp
OwogICAgIGlmIChob2xkZXIuSXNFbXB0eSgpKSB7CiAgICAgICAgIC8vIGNhbiBvbmx5IHJlYWNo
IGhlcmUgYnkgJ29iamVjdC5fX3Byb3RvX18uZnVuYycsIGFuZCBpdCBzaG91bGQgcGFzc2VkCiAg
ICAgICAgIC8vIGRvbWFpbiBzZWN1cml0eSBjaGVjayBhbHJlYWR5CkBAIC04MzMsNyArODMzLDcg
QEAgc3ViIEdlbmVyYXRlRG9tYWluU2FmZUZ1bmN0aW9uU2V0dGVyCiAgICAgcHVzaChAaW1wbENv
bnRlbnREZWNscywgPDxFTkQpOwogc3RhdGljIHZvaWQgJHtpbnRlcmZhY2VOYW1lfURvbWFpblNh
ZmVGdW5jdGlvblNldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4
OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7Ci0gICAgdjg6
OkhhbmRsZTx2ODo6T2JqZWN0PiBob2xkZXIgPSBpbmZvLlRoaXMoKS0+RmluZEluc3RhbmNlSW5Q
cm90b3R5cGVDaGFpbigke3Y4SW50ZXJmYWNlTmFtZX06OkdldFRlbXBsYXRlKGluZm8uR2V0SXNv
bGF0ZSgpKSk7CisgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBob2xkZXIgPSBpbmZvLlRoaXMo
KS0+RmluZEluc3RhbmNlSW5Qcm90b3R5cGVDaGFpbigke3Y4SW50ZXJmYWNlTmFtZX06OkdldFRl
bXBsYXRlKGluZm8uR2V0SXNvbGF0ZSgpLCBnZXRDb250ZXh0VHlwZShpbmZvLkdldElzb2xhdGUo
KSkpKTsKICAgICBpZiAoaG9sZGVyLklzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogICAgICR7
aW50ZXJmYWNlTmFtZX0qIGltcCA9ICR7djhJbnRlcmZhY2VOYW1lfTo6dG9OYXRpdmUoaG9sZGVy
KTsKQEAgLTk1Miw3ICs5NTIsNyBAQCBFTkQKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAg
ICMgcGVyZm9ybSBsb29rdXAgZmlyc3QKICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50RGVj
bHMsIDw8RU5EKTsKLSAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGhvbGRlciA9IGluZm8uVGhp
cygpLT5GaW5kSW5zdGFuY2VJblByb3RvdHlwZUNoYWluKCR7djhJbnRlcmZhY2VOYW1lfTo6R2V0
VGVtcGxhdGUoaW5mby5HZXRJc29sYXRlKCkpKTsKKyAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+
IGhvbGRlciA9IGluZm8uVGhpcygpLT5GaW5kSW5zdGFuY2VJblByb3RvdHlwZUNoYWluKCR7djhJ
bnRlcmZhY2VOYW1lfTo6R2V0VGVtcGxhdGUoaW5mby5HZXRJc29sYXRlKCksIGdldENvbnRleHRU
eXBlKGluZm8uR2V0SXNvbGF0ZSgpKSkpOwogICAgIGlmIChob2xkZXIuSXNFbXB0eSgpKQogICAg
ICAgICByZXR1cm4gdjhVbmRlZmluZWQoKTsKIEVORApAQCAtMjIzOCw3ICsyMjM4LDcgQEAgRU5E
CiAKICAgICBwdXNoKEBpbXBsQ29udGVudCwgPDxFTkQpOwogCi12ODo6UGVyc2lzdGVudDx2ODo6
RnVuY3Rpb25UZW1wbGF0ZT4gJHt2OEludGVyZmFjZU5hbWV9Q29uc3RydWN0b3I6OkdldFRlbXBs
YXRlKHY4OjpJc29sYXRlKiBpc29sYXRlKQordjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVt
cGxhdGU+ICR7djhJbnRlcmZhY2VOYW1lfUNvbnN0cnVjdG9yOjpHZXRUZW1wbGF0ZSh2ODo6SXNv
bGF0ZSogaXNvbGF0ZSwgV3JhcHBlckNvbnRleHRUeXBlIGNvbnRleHRUeXBlKQogewogICAgIHN0
YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gY2FjaGVkVGVtcGxhdGU7
CiAgICAgaWYgKCFjYWNoZWRUZW1wbGF0ZS5Jc0VtcHR5KCkpCkBAIC0yMjUwLDcgKzIyNTAsNyBA
QCB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gJHt2OEludGVyZmFjZU5hbWV9
Q29uc3RydWN0b3I6OkdldFRlbXBsYXRlKAogICAgIHY4OjpMb2NhbDx2ODo6T2JqZWN0VGVtcGxh
dGU+IGluc3RhbmNlID0gcmVzdWx0LT5JbnN0YW5jZVRlbXBsYXRlKCk7CiAgICAgaW5zdGFuY2Ut
PlNldEludGVybmFsRmllbGRDb3VudCgke3Y4SW50ZXJmYWNlTmFtZX06OmludGVybmFsRmllbGRD
b3VudCk7CiAgICAgcmVzdWx0LT5TZXRDbGFzc05hbWUodjg6OlN0cmluZzo6TmV3U3ltYm9sKCIk
e2ludGVyZmFjZU5hbWV9IikpOwotICAgIHJlc3VsdC0+SW5oZXJpdCgke3Y4SW50ZXJmYWNlTmFt
ZX06OkdldFRlbXBsYXRlKGlzb2xhdGUpKTsKKyAgICByZXN1bHQtPkluaGVyaXQoJHt2OEludGVy
ZmFjZU5hbWV9OjpHZXRUZW1wbGF0ZShpc29sYXRlLCBjb250ZXh0VHlwZSkpOwogCiAgICAgY2Fj
aGVkVGVtcGxhdGUgPSB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT46Ok5ldyhp
c29sYXRlLCByZXN1bHQpOwogICAgIHJldHVybiBjYWNoZWRUZW1wbGF0ZTsKQEAgLTI2NzQsNyAr
MjY3NCw3IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgIG15ICRwYXJlbnQg
PSAkXzsKICAgICAgICAgQWRkVG9JbXBsSW5jbHVkZXMoIlY4JHtwYXJlbnR9LmgiKTsKICAgICAg
ICAgJHBhcmVudENsYXNzID0gIlY4IiAuICRwYXJlbnQ7Ci0gICAgICAgICRwYXJlbnRDbGFzc1Rl
bXBsYXRlID0gJHBhcmVudENsYXNzIC4gIjo6R2V0VGVtcGxhdGUoaXNvbGF0ZSkiOworICAgICAg
ICAkcGFyZW50Q2xhc3NUZW1wbGF0ZSA9ICRwYXJlbnRDbGFzcyAuICI6OkdldFRlbXBsYXRlKGlz
b2xhdGUsIGNvbnRleHRUeXBlKSI7CiAgICAgICAgIGxhc3Q7CiAgICAgfQogCkBAIC0yOTgyLDcg
KzI5ODIsNyBAQCBFTkQKIAogICAgICMgR2VuZXJhdGUgdGhlIHRlbXBsYXRlIGNvbmZpZ3VyYXRp
b24gbWV0aG9kCiAgICAgcHVzaChAaW1wbENvbnRlbnQsICA8PEVORCk7Ci1zdGF0aWMgdjg6OlBl
cnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IENvbmZpZ3VyZSR7djhJbnRlcmZhY2VOYW1l
fVRlbXBsYXRlKHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBkZXNjLCB2ODo6
SXNvbGF0ZSogaXNvbGF0ZSkKK3N0YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1w
bGF0ZT4gQ29uZmlndXJlJHt2OEludGVyZmFjZU5hbWV9VGVtcGxhdGUodjg6OlBlcnNpc3RlbnQ8
djg6OkZ1bmN0aW9uVGVtcGxhdGU+IGRlc2MsIHY4OjpJc29sYXRlKiBpc29sYXRlLCBXcmFwcGVy
Q29udGV4dFR5cGUgY29udGV4dFR5cGUpCiB7CiAgICAgZGVzYy0+UmVhZE9ubHlQcm90b3R5cGUo
KTsKIApAQCAtMzE0OCw3ICszMTQ4LDcgQEAgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVt
cGxhdGU+ICR7djhJbnRlcmZhY2VOYW1lfTo6R2V0UmF3VGVtcGxhdGUodjg6Oklzb2wKICAgICBy
ZXR1cm4gdGVtcGw7CiB9CiAKLXY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiAk
e3Y4SW50ZXJmYWNlTmFtZX06OkdldFRlbXBsYXRlKHY4OjpJc29sYXRlKiBpc29sYXRlKQordjg6
OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+ICR7djhJbnRlcmZhY2VOYW1lfTo6R2V0
VGVtcGxhdGUodjg6Oklzb2xhdGUqIGlzb2xhdGUsIFdyYXBwZXJDb250ZXh0VHlwZSBjb250ZXh0
VHlwZSkKIHsKICAgICBWOFBlcklzb2xhdGVEYXRhKiBkYXRhID0gVjhQZXJJc29sYXRlRGF0YTo6
ZnJvbShpc29sYXRlKTsKICAgICBWOFBlcklzb2xhdGVEYXRhOjpUZW1wbGF0ZU1hcDo6aXRlcmF0
b3IgcmVzdWx0ID0gZGF0YS0+dGVtcGxhdGVNYXAoKS5maW5kKCZpbmZvKTsKQEAgLTMxNTcsNyAr
MzE1Nyw3IEBAIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiAke3Y4SW50ZXJm
YWNlTmFtZX06OkdldFRlbXBsYXRlKHY4OjpJc29sYXRlCiAKICAgICB2ODo6SGFuZGxlU2NvcGUg
aGFuZGxlU2NvcGU7CiAgICAgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IHRl
bXBsID0KLSAgICAgICAgQ29uZmlndXJlJHt2OEludGVyZmFjZU5hbWV9VGVtcGxhdGUoR2V0UmF3
VGVtcGxhdGUoaXNvbGF0ZSksIGlzb2xhdGUpOworICAgICAgICBDb25maWd1cmUke3Y4SW50ZXJm
YWNlTmFtZX1UZW1wbGF0ZShHZXRSYXdUZW1wbGF0ZShpc29sYXRlKSwgaXNvbGF0ZSwgY29udGV4
dFR5cGUpOwogICAgIGRhdGEtPnRlbXBsYXRlTWFwKCkuYWRkKCZpbmZvLCB0ZW1wbCk7CiAgICAg
cmV0dXJuIHRlbXBsOwogfQpAQCAtMzIwNiw3ICszMjA2LDcgQEAgdm9pZCAke3Y4SW50ZXJmYWNl
TmFtZX06Omluc3RhbGxQZXJDb250ZXh0UHJvdG90eXBlUHJvcGVydGllcyh2ODo6SGFuZGxlPHY4
OjpPYmoKIEVORAogICAgICAgICAjIFNldHVwIHRoZSBlbmFibGUtYnktc2V0dGluZ3MgZnVuY3Rp
b25zIGlmIHdlIGhhdmUgdGhlbQogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIDw8RU5EKTsK
LSAgICB2ODo6TG9jYWw8djg6OlNpZ25hdHVyZT4gZGVmYXVsdFNpZ25hdHVyZSA9IHY4OjpTaWdu
YXR1cmU6Ok5ldyhHZXRUZW1wbGF0ZShpc29sYXRlKSk7CisgICAgdjg6OkxvY2FsPHY4OjpTaWdu
YXR1cmU+IGRlZmF1bHRTaWduYXR1cmUgPSB2ODo6U2lnbmF0dXJlOjpOZXcoR2V0VGVtcGxhdGUo
aXNvbGF0ZSwgZ2V0Q29udGV4dFR5cGUoaXNvbGF0ZSkpKTsKICAgICBVTlVTRURfUEFSQU0oZGVm
YXVsdFNpZ25hdHVyZSk7IC8vIEluIHNvbWUgY2FzZXMsIGl0IHdpbGwgbm90IGJlIHVzZWQuCiAK
ICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0ID0gdG9TY3JpcHRFeGVjdXRpb25D
b250ZXh0KHByb3RvLT5DcmVhdGlvbkNvbnRleHQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9EaWN0aW9uYXJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L0RpY3Rpb25hcnkuY3BwCmluZGV4IDhhOWNmMWRmNmJiNTVkYjkyN2QzZjQxMGYzYzZiN2M5
ZDBkYTNlZDIuLmNmOWIwNTdiMWY2MTQyYTJhNWRmM2I3ZjUxYWJmMjU1NjdmY2RlYjUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0RpY3Rpb25hcnkuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0RpY3Rpb25hcnkuY3BwCkBAIC0yNTksNyArMjU5LDcg
QEAgYm9vbCBEaWN0aW9uYXJ5OjpnZXQoY29uc3QgU3RyaW5nJiBrZXksIFJlZlB0cjxET01XaW5k
b3c+JiB2YWx1ZSkgY29uc3QKICAgICB2YWx1ZSA9IDA7CiAgICAgaWYgKHY4VmFsdWUtPklzT2Jq
ZWN0KCkpIHsKICAgICAgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwcGVyID0gdjg6Okhh
bmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdCh2OFZhbHVlKTsKLSAgICAgICAgdjg6OkhhbmRsZTx2ODo6
T2JqZWN0PiB3aW5kb3cgPSB3cmFwcGVyLT5GaW5kSW5zdGFuY2VJblByb3RvdHlwZUNoYWluKFY4
RE9NV2luZG93OjpHZXRUZW1wbGF0ZShtX2lzb2xhdGUpKTsKKyAgICAgICAgdjg6OkhhbmRsZTx2
ODo6T2JqZWN0PiB3aW5kb3cgPSB3cmFwcGVyLT5GaW5kSW5zdGFuY2VJblByb3RvdHlwZUNoYWlu
KFY4RE9NV2luZG93OjpHZXRUZW1wbGF0ZShtX2lzb2xhdGUsIGdldENvbnRleHRUeXBlKG1faXNv
bGF0ZSkpKTsKICAgICAgICAgaWYgKCF3aW5kb3cuSXNFbXB0eSgpKQogICAgICAgICAgICAgdmFs
dWUgPSBWOERPTVdpbmRvdzo6dG9OYXRpdmUod2luZG93KTsKICAgICB9CkBAIC0zNjMsNyArMzYz
LDcgQEAgYm9vbCBEaWN0aW9uYXJ5OjpnZXQoY29uc3QgU3RyaW5nJiBrZXksIFJlZlB0cjxUcmFj
a0Jhc2U+JiB2YWx1ZSkgY29uc3QKIAogICAgICAgICAvLyBGSVhNRTogdGhpcyB3aWxsIG5lZWQg
dG8gYmUgY2hhbmdlZCBzbyBpdCBjYW4gYWxzbyByZXR1cm4gYW4gQXVkaW9UcmFjayBvciBhIFZp
ZGVvVHJhY2sgb25jZQogICAgICAgICAvLyB3ZSBhZGQgdGhlbS4KLSAgICAgICAgdjg6OkhhbmRs
ZTx2ODo6T2JqZWN0PiB0cmFjayA9IHdyYXBwZXItPkZpbmRJbnN0YW5jZUluUHJvdG90eXBlQ2hh
aW4oVjhUZXh0VHJhY2s6OkdldFRlbXBsYXRlKG1faXNvbGF0ZSkpOworICAgICAgICB2ODo6SGFu
ZGxlPHY4OjpPYmplY3Q+IHRyYWNrID0gd3JhcHBlci0+RmluZEluc3RhbmNlSW5Qcm90b3R5cGVD
aGFpbihWOFRleHRUcmFjazo6R2V0VGVtcGxhdGUobV9pc29sYXRlLCBnZXRDb250ZXh0VHlwZSht
X2lzb2xhdGUpKSk7CiAgICAgICAgIGlmICghdHJhY2suSXNFbXB0eSgpKQogICAgICAgICAgICAg
c291cmNlID0gVjhUZXh0VHJhY2s6OnRvTmF0aXZlKHRyYWNrKTsKICAgICB9CkBAIC00MzYsNyAr
NDM2LDcgQEAgYm9vbCBEaWN0aW9uYXJ5OjpnZXQoY29uc3QgU3RyaW5nJiBrZXksIFJlZlB0cjxF
dmVudFRhcmdldD4mIHZhbHVlKSBjb25zdAogICAgIC8vIGV4aXN0cyBvbiBhIHByb3RvdHlwZSBj
aGFpbiBvZiB2OFZhbHVlLgogICAgIGlmICh2OFZhbHVlLT5Jc09iamVjdCgpKSB7CiAgICAgICAg
IHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd3JhcHBlciA9IHY4OjpIYW5kbGU8djg6Ok9iamVjdD46
OkNhc3QodjhWYWx1ZSk7Ci0gICAgICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd2luZG93ID0g
d3JhcHBlci0+RmluZEluc3RhbmNlSW5Qcm90b3R5cGVDaGFpbihWOERPTVdpbmRvdzo6R2V0VGVt
cGxhdGUobV9pc29sYXRlKSk7CisgICAgICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd2luZG93
ID0gd3JhcHBlci0+RmluZEluc3RhbmNlSW5Qcm90b3R5cGVDaGFpbihWOERPTVdpbmRvdzo6R2V0
VGVtcGxhdGUobV9pc29sYXRlLCBnZXRDb250ZXh0VHlwZShtX2lzb2xhdGUpKSk7CiAgICAgICAg
IGlmICghd2luZG93LklzRW1wdHkoKSkgewogICAgICAgICAgICAgdmFsdWUgPSB0b1dyYXBwZXJU
eXBlSW5mbyh3aW5kb3cpLT50b0V2ZW50VGFyZ2V0KHdpbmRvdyk7CiAgICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1BhZ2VTY3Jp
cHREZWJ1Z1NlcnZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9QYWdlU2NyaXB0
RGVidWdTZXJ2ZXIuY3BwCmluZGV4IGJhNmU1ZjhjOGM5NjA0MWQ4YTczZDc2OGZiMzg2YzZhZDUz
MDUxOTguLmI5NjQzMDZjOWY3OWNjM2U1NjU3MTM0YzcyNTRhNWM1Zjk3NWNlM2QgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1BhZ2VTY3JpcHREZWJ1Z1NlcnZlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvUGFnZVNjcmlwdERlYnVnU2VydmVyLmNw
cApAQCAtNTYsNyArNTYsNyBAQCBzdGF0aWMgRnJhbWUqIHJldHJpZXZlRnJhbWVXaXRoR2xvYmFs
T2JqZWN0Q2hlY2sodjg6OkhhbmRsZTx2ODo6Q29udGV4dD4gY29udGV4dAogICAgIGlmIChnbG9i
YWwuSXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIGdsb2JhbCA9IGdsb2JhbC0+
RmluZEluc3RhbmNlSW5Qcm90b3R5cGVDaGFpbihWOERPTVdpbmRvdzo6R2V0VGVtcGxhdGUoY29u
dGV4dC0+R2V0SXNvbGF0ZSgpKSk7CisgICAgZ2xvYmFsID0gZ2xvYmFsLT5GaW5kSW5zdGFuY2VJ
blByb3RvdHlwZUNoYWluKFY4RE9NV2luZG93OjpHZXRUZW1wbGF0ZShjb250ZXh0LT5HZXRJc29s
YXRlKCksIGdldENvbnRleHRUeXBlKGNvbnRleHQtPkdldElzb2xhdGUoKSkpKTsKICAgICBpZiAo
Z2xvYmFsLklzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIDA7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4QWRhcHRvckZ1bmN0aW9uLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L1Y4QWRhcHRvckZ1bmN0aW9uLmNwcAppbmRleCBiYmMxZDMyNzRmYzdk
ODlmMWRhNjM0YWRhNzc5YmJjNmU0NjJlY2RkLi42Y2M2ODkxOWI5ZGNmMjk1NjlmOGU0OTFkMjFl
MGI0YzJjZjFjMjc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEFk
YXB0b3JGdW5jdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhBZGFw
dG9yRnVuY3Rpb24uY3BwCkBAIC00MCw3ICs0MCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
V3JhcHBlclR5cGVJbmZvIFY4QWRhcHRvckZ1bmN0aW9uOjppbmZvID0geyBWOEFkYXB0b3JGdW5j
dGlvbjo6Z2V0VGVtcGxhdGUsIDAsIDAsIDAsIDAsIDAsIDAsIFdyYXBwZXJUeXBlT2JqZWN0UHJv
dG90eXBlIH07CiAKLXY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBWOEFkYXB0
b3JGdW5jdGlvbjo6Z2V0VGVtcGxhdGUodjg6Oklzb2xhdGUqIGlzb2xhdGUpCit2ODo6UGVyc2lz
dGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gVjhBZGFwdG9yRnVuY3Rpb246OmdldFRlbXBsYXRl
KHY4OjpJc29sYXRlKiBpc29sYXRlLCBXcmFwcGVyQ29udGV4dFR5cGUgY29udGV4dFR5cGUpCiB7
CiAgICAgQVNTRVJUKGlzb2xhdGUpOwogICAgIFY4UGVySXNvbGF0ZURhdGEqIGRhdGEgPSBWOFBl
cklzb2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUpOwpAQCAtNzYsNyArNzYsNyBAQCB2ODo6SGFuZGxl
PHY4OjpGdW5jdGlvbj4gVjhBZGFwdG9yRnVuY3Rpb246OndyYXAodjg6OkhhbmRsZTx2ODo6T2Jq
ZWN0PiBvYmplY3QsCiB7CiAgICAgaWYgKG9iamVjdC5Jc0VtcHR5KCkgfHwgIW9iamVjdC0+SXNP
YmplY3QoKSkKICAgICAgICAgcmV0dXJuIHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uPigpOwotICAg
IHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uPiBhZGFwdG9yID0gdjg6OkhhbmRsZTx2ODo6RnVuY3Rp
b24+OjpDYXN0KGdldFRlbXBsYXRlKGlzb2xhdGUpLT5HZXRGdW5jdGlvbigpKTsKKyAgICB2ODo6
SGFuZGxlPHY4OjpGdW5jdGlvbj4gYWRhcHRvciA9IHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uPjo6
Q2FzdChnZXRUZW1wbGF0ZShpc29sYXRlLCBnZXRDb250ZXh0VHlwZShpc29sYXRlKSktPkdldEZ1
bmN0aW9uKCkpOwogICAgIGlmIChhZGFwdG9yLklzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIHY4
OjpIYW5kbGU8djg6OkZ1bmN0aW9uPigpOwogICAgIGFkYXB0b3ItPlNldE5hbWUodjhTdHJpbmco
bmFtZS5zdHJpbmcoKSwgaXNvbGF0ZSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvVjhBZGFwdG9yRnVuY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L1Y4QWRhcHRvckZ1bmN0aW9uLmgKaW5kZXggZTNkNmJiNTFmNDQwYTRjNzcyNGFiY2UzZGU5MzA2
OGRhZThjM2E1Ny4uZmZkZmNhMWQ5ZTVjMjY4MGU5MTJkNTgzYTAxMWEzYzg2ZDkwYzlmMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhBZGFwdG9yRnVuY3Rpb24uaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEFkYXB0b3JGdW5jdGlvbi5oCkBAIC01
NSw3ICs1NSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb24+
IHdyYXAodjg6OkhhbmRsZTx2ODo6T2JqZWN0PiwgY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCB2
ODo6SXNvbGF0ZSopOwogICAgIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpGdW5jdGlvbj4gZ2V0KHY4
OjpIYW5kbGU8djg6Ok9iamVjdD4pOwogCi0gICAgc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpG
dW5jdGlvblRlbXBsYXRlPiBnZXRUZW1wbGF0ZSh2ODo6SXNvbGF0ZSogPSAwKTsKKyAgICBzdGF0
aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IGdldFRlbXBsYXRlKHY4OjpJ
c29sYXRlKiwgV3JhcHBlckNvbnRleHRUeXBlKTsKICAgICBzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8
djg6OkZ1bmN0aW9uVGVtcGxhdGU+IGNvbmZpZ3VyZVRlbXBsYXRlKHY4OjpQZXJzaXN0ZW50PHY4
OjpGdW5jdGlvblRlbXBsYXRlPik7CiAgICAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBp
bnZvY2F0aW9uQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYpOwogfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4QmluZGluZy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy92OC9WOEJpbmRpbmcuY3BwCmluZGV4IDg2M2Y0ZmQ2YWMwYTY1NWJlOTI4NGY3
Y2Y4Y2MwNDM4ZDQyMmY1NjcuLjIwYTA1YzUwM2VmMDdlNGQyMTYzM2M1MGMzYmFmYTQzNDNkYTY2
MWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4QmluZGluZy5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhCaW5kaW5nLmNwcApAQCAtMjIxLDcg
KzIyMSw3IEBAIERPTVdpbmRvdyogdG9ET01XaW5kb3codjg6OkhhbmRsZTx2ODo6Q29udGV4dD4g
Y29udGV4dCkKIHsKICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGdsb2JhbCA9IGNvbnRleHQt
Pkdsb2JhbCgpOwogICAgIEFTU0VSVCghZ2xvYmFsLklzRW1wdHkoKSk7Ci0gICAgZ2xvYmFsID0g
Z2xvYmFsLT5GaW5kSW5zdGFuY2VJblByb3RvdHlwZUNoYWluKFY4RE9NV2luZG93OjpHZXRUZW1w
bGF0ZShjb250ZXh0LT5HZXRJc29sYXRlKCkpKTsKKyAgICBnbG9iYWwgPSBnbG9iYWwtPkZpbmRJ
bnN0YW5jZUluUHJvdG90eXBlQ2hhaW4oVjhET01XaW5kb3c6OkdldFRlbXBsYXRlKGNvbnRleHQt
PkdldElzb2xhdGUoKSwgZ2V0Q29udGV4dFR5cGUoY29udGV4dC0+R2V0SXNvbGF0ZSgpKSkpOwog
ICAgIEFTU0VSVCghZ2xvYmFsLklzRW1wdHkoKSk7CiAgICAgcmV0dXJuIFY4RE9NV2luZG93Ojp0
b05hdGl2ZShnbG9iYWwpOwogfQpAQCAtMjI5LDExICsyMjksMTEgQEAgRE9NV2luZG93KiB0b0RP
TVdpbmRvdyh2ODo6SGFuZGxlPHY4OjpDb250ZXh0PiBjb250ZXh0KQogU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCogdG9TY3JpcHRFeGVjdXRpb25Db250ZXh0KHY4OjpIYW5kbGU8djg6OkNvbnRleHQ+
IGNvbnRleHQpCiB7CiAgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBnbG9iYWwgPSBjb250ZXh0
LT5HbG9iYWwoKTsKLSAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdpbmRvd1dyYXBwZXIgPSBn
bG9iYWwtPkZpbmRJbnN0YW5jZUluUHJvdG90eXBlQ2hhaW4oVjhET01XaW5kb3c6OkdldFRlbXBs
YXRlKGNvbnRleHQtPkdldElzb2xhdGUoKSkpOworICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4g
d2luZG93V3JhcHBlciA9IGdsb2JhbC0+RmluZEluc3RhbmNlSW5Qcm90b3R5cGVDaGFpbihWOERP
TVdpbmRvdzo6R2V0VGVtcGxhdGUoY29udGV4dC0+R2V0SXNvbGF0ZSgpLCBnZXRDb250ZXh0VHlw
ZShjb250ZXh0LT5HZXRJc29sYXRlKCkpKSk7CiAgICAgaWYgKCF3aW5kb3dXcmFwcGVyLklzRW1w
dHkoKSkKICAgICAgICAgcmV0dXJuIFY4RE9NV2luZG93Ojp0b05hdGl2ZSh3aW5kb3dXcmFwcGVy
KS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwogI2lmIEVOQUJMRShXT1JLRVJTKQotICAgIHY4
OjpIYW5kbGU8djg6Ok9iamVjdD4gd29ya2VyV3JhcHBlciA9IGdsb2JhbC0+RmluZEluc3RhbmNl
SW5Qcm90b3R5cGVDaGFpbihWOFdvcmtlckNvbnRleHQ6OkdldFRlbXBsYXRlKGNvbnRleHQtPkdl
dElzb2xhdGUoKSkpOworICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd29ya2VyV3JhcHBlciA9
IGdsb2JhbC0+RmluZEluc3RhbmNlSW5Qcm90b3R5cGVDaGFpbihWOFdvcmtlckNvbnRleHQ6Okdl
dFRlbXBsYXRlKGNvbnRleHQtPkdldElzb2xhdGUoKSwgV29ya2VyV29ybGQpKTsKICAgICBpZiAo
IXdvcmtlcldyYXBwZXIuSXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gVjhXb3JrZXJDb250ZXh0
Ojp0b05hdGl2ZSh3b3JrZXJXcmFwcGVyKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwogI2Vu
ZGlmCkBAIC0zMDUsNCArMzA1LDI5IEBAIHZvaWQgY3Jhc2hJZlY4SXNEZWFkKCkKICAgICB9CiB9
CiAKK1dyYXBwZXJDb250ZXh0VHlwZSBnZXRDb250ZXh0VHlwZSh2ODo6SXNvbGF0ZSogaXNvbGF0
ZSkKK3sKKyAgICBWOFBlcklzb2xhdGVEYXRhKiBkYXRhID0gaXNvbGF0ZSA/IFY4UGVySXNvbGF0
ZURhdGE6OmZyb20oaXNvbGF0ZSkgOiBWOFBlcklzb2xhdGVEYXRhOjpjdXJyZW50KCk7CisgICAg
Ly8gVE9ETzogUmVuYW1lIGRvbURhdGFTdG9yZSgpIHRvIHdvcmtlckRhdGFTdG9yZSgpLgorICAg
IGlmIChVTkxJS0VMWSghIWRhdGEtPmRvbURhdGFTdG9yZSgpKSkKKyAgICAgICAgcmV0dXJuIFdv
cmtlcldvcmxkOworCisgICAgaWYgKERPTVdyYXBwZXJXb3JsZDo6aXNvbGF0ZWRXb3JsZHNFeGlz
dCgpKSB7CisgICAgICAgIERPTVdyYXBwZXJXb3JsZCogaXNvbGF0ZWRXb3JsZCA9IERPTVdyYXBw
ZXJXb3JsZDo6Z2V0V29ybGQodjg6OkNvbnRleHQ6OkdldEVudGVyZWQoKSk7CisgICAgICAgIGlm
IChVTkxJS0VMWSghIWlzb2xhdGVkV29ybGQpKQorICAgICAgICAgICAgcmV0dXJuIElzb2xhdGVk
V29ybGQ7CisgICAgfQorICAgIHJldHVybiBNYWluV29ybGQ7Cit9CisKK1dyYXBwZXJDb250ZXh0
VHlwZSBnZXRNYWluSXNvbGF0ZUNvbnRleHRUeXBlKHY4OjpJc29sYXRlKiBpc29sYXRlKQorewor
ICAgIGlmIChET01XcmFwcGVyV29ybGQ6Omlzb2xhdGVkV29ybGRzRXhpc3QoKSkgeworICAgICAg
ICBET01XcmFwcGVyV29ybGQqIGlzb2xhdGVkV29ybGQgPSBET01XcmFwcGVyV29ybGQ6OmdldFdv
cmxkKHY4OjpDb250ZXh0OjpHZXRFbnRlcmVkKCkpOworICAgICAgICBpZiAoVU5MSUtFTFkoISFp
c29sYXRlZFdvcmxkKSkKKyAgICAgICAgICAgIHJldHVybiBJc29sYXRlZFdvcmxkOworICAgIH0K
KyAgICByZXR1cm4gTWFpbldvcmxkOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEJpbmRpbmcuaCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4QmluZGluZy5oCmluZGV4IDk2MmIwODY5OWU4MWVmYTcwMTU0
YzNkMGFhYTUxMzUxNmEyNjE5OTUuLjRiYTcyYmYzYjc1MWFmZDI1NmM2NDgwYjY5ODg4OTU4YmJk
M2NhNTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4QmluZGluZy5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4QmluZGluZy5oCkBAIC00NzQsNiAr
NDc0LDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgdm9pZCBjcmFzaElmVjhJc0RlYWQo
KTsKIAorICAgIFdyYXBwZXJDb250ZXh0VHlwZSBnZXRDb250ZXh0VHlwZSh2ODo6SXNvbGF0ZSop
OworICAgIFdyYXBwZXJDb250ZXh0VHlwZSBnZXRNYWluSXNvbGF0ZUNvbnRleHRUeXBlKHY4OjpJ
c29sYXRlKik7CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIFY4QmluZGlu
Z19oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTVdpbmRvd1No
ZWxsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NV2luZG93U2hlbGwuY3Bw
CmluZGV4IDk1NDY5MDQxOGQwZjU3YjVmN2M3ZDhhMmJjZThhMjI4NmQzZTNhNWUuLjY0ZmZjMzVi
ZDk3ZTBhYjU5ZTFlMmExOTE3ZDIxNjExYmZlOTc5NGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L1Y4RE9NV2luZG93U2hlbGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L1Y4RE9NV2luZG93U2hlbGwuY3BwCkBAIC0xNTMsNyArMTUzLDcgQEAgdm9p
ZCBWOERPTVdpbmRvd1NoZWxsOjpjbGVhckZvck5hdmlnYXRpb24oKQogICAgIC8vIHdpbGwgYmUg
cHJvdGVjdGVkIGJ5IHRoZSBzZWN1cml0eSBjaGVja3Mgb24gdGhlIERPTVdpbmRvdyB3cmFwcGVy
LgogICAgIGNsZWFyRG9jdW1lbnRQcm9wZXJ0eSgpOwogCi0gICAgdjg6OkhhbmRsZTx2ODo6T2Jq
ZWN0PiB3aW5kb3dXcmFwcGVyID0gbV9nbG9iYWwtPkZpbmRJbnN0YW5jZUluUHJvdG90eXBlQ2hh
aW4oVjhET01XaW5kb3c6OkdldFRlbXBsYXRlKG1faXNvbGF0ZSkpOworICAgIHY4OjpIYW5kbGU8
djg6Ok9iamVjdD4gd2luZG93V3JhcHBlciA9IG1fZ2xvYmFsLT5GaW5kSW5zdGFuY2VJblByb3Rv
dHlwZUNoYWluKFY4RE9NV2luZG93OjpHZXRUZW1wbGF0ZShtX2lzb2xhdGUsIGdldE1haW5Jc29s
YXRlQ29udGV4dFR5cGUobV9pc29sYXRlKSkpOwogICAgIEFTU0VSVCghd2luZG93V3JhcHBlci5J
c0VtcHR5KCkpOwogICAgIHdpbmRvd1dyYXBwZXItPlR1cm5PbkFjY2Vzc0NoZWNrKCk7CiAgICAg
bV9jb250ZXh0LT5EZXRhY2hHbG9iYWwoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L1Y4RE9NV3JhcHBlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9W
OERPTVdyYXBwZXIuY3BwCmluZGV4IDRkOGMyMjZmM2UyNzJmMGUzNTk2MjFlOGQ0MDY4YzMxOTRi
NTNmYjguLjM4NzkyYmJkMDQyNTNiOTk5YjYyYjA3NjcyMzdmZDEzNmM1YzE1MGUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NV3JhcHBlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhET01XcmFwcGVyLmNwcApAQCAtNzksNyArNzksNyBA
QCB2ODo6TG9jYWw8djg6Ok9iamVjdD4gVjhET01XcmFwcGVyOjpjcmVhdGVXcmFwcGVyKHY4OjpI
YW5kbGU8djg6Ok9iamVjdD4gY3JlYXRpbwogICAgIFY4V3JhcHBlckluc3RhbnRpYXRpb25TY29w
ZSBzY29wZShjcmVhdGlvbkNvbnRleHQpOwogCiAgICAgVjhQZXJDb250ZXh0RGF0YSogcGVyQ29u
dGV4dERhdGEgPSBWOFBlckNvbnRleHREYXRhOjpmcm9tKHNjb3BlLmNvbnRleHQoKSk7Ci0gICAg
djg6OkxvY2FsPHY4OjpPYmplY3Q+IHdyYXBwZXIgPSBwZXJDb250ZXh0RGF0YSA/IHBlckNvbnRl
eHREYXRhLT5jcmVhdGVXcmFwcGVyRnJvbUNhY2hlKHR5cGUpIDogVjhPYmplY3RDb25zdHJ1Y3Rv
cjo6bmV3SW5zdGFuY2UodHlwZS0+Z2V0VGVtcGxhdGUoaXNvbGF0ZSktPkdldEZ1bmN0aW9uKCkp
OworICAgIHY4OjpMb2NhbDx2ODo6T2JqZWN0PiB3cmFwcGVyID0gcGVyQ29udGV4dERhdGEgPyBw
ZXJDb250ZXh0RGF0YS0+Y3JlYXRlV3JhcHBlckZyb21DYWNoZSh0eXBlKSA6IFY4T2JqZWN0Q29u
c3RydWN0b3I6Om5ld0luc3RhbmNlKHR5cGUtPmdldFRlbXBsYXRlKGlzb2xhdGUsIGdldE1haW5J
c29sYXRlQ29udGV4dFR5cGUoaXNvbGF0ZSkpLT5HZXRGdW5jdGlvbigpKTsKIAogICAgIGlmICh0
eXBlID09ICZWOEhUTUxEb2N1bWVudDo6aW5mbyAmJiAhd3JhcHBlci5Jc0VtcHR5KCkpCiAgICAg
ICAgIHdyYXBwZXIgPSBWOEhUTUxEb2N1bWVudDo6d3JhcEluU2hhZG93T2JqZWN0KHdyYXBwZXIs
IHN0YXRpY19jYXN0PE5vZGUqPihpbXBsKSwgaXNvbGF0ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy92OC9WOEluaXRpYWxpemVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L1Y4SW5pdGlhbGl6ZXIuY3BwCmluZGV4IGNiM2JjNmRjMWVjY2EyYWJiOTQ1Yjk5
ZTM0NzQwNDRkMjIzMjhiMTYuLjA0NTFkYmQxMGIxY2EzN2I5MDgzOWZjNWIwYTM5YTZlMmVkZmJh
ODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4SW5pdGlhbGl6ZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4SW5pdGlhbGl6ZXIuY3BwCkBA
IC01MSw3ICs1MSw3IEBAIHN0YXRpYyBGcmFtZSogZmluZEZyYW1lKHY4OjpMb2NhbDx2ODo6T2Jq
ZWN0PiBob3N0LCB2ODo6TG9jYWw8djg6OlZhbHVlPiBkYXRhLCB2CiAgICAgV3JhcHBlclR5cGVJ
bmZvKiB0eXBlID0gV3JhcHBlclR5cGVJbmZvOjp1bndyYXAoZGF0YSk7CiAKICAgICBpZiAoVjhE
T01XaW5kb3c6OmluZm8uZXF1YWxzKHR5cGUpKSB7Ci0gICAgICAgIHY4OjpIYW5kbGU8djg6Ok9i
amVjdD4gd2luZG93V3JhcHBlciA9IGhvc3QtPkZpbmRJbnN0YW5jZUluUHJvdG90eXBlQ2hhaW4o
VjhET01XaW5kb3c6OkdldFRlbXBsYXRlKGlzb2xhdGUpKTsKKyAgICAgICAgdjg6OkhhbmRsZTx2
ODo6T2JqZWN0PiB3aW5kb3dXcmFwcGVyID0gaG9zdC0+RmluZEluc3RhbmNlSW5Qcm90b3R5cGVD
aGFpbihWOERPTVdpbmRvdzo6R2V0VGVtcGxhdGUoaXNvbGF0ZSwgZ2V0Q29udGV4dFR5cGUoaXNv
bGF0ZSkpKTsKICAgICAgICAgaWYgKHdpbmRvd1dyYXBwZXIuSXNFbXB0eSgpKQogICAgICAgICAg
ICAgcmV0dXJuIDA7CiAgICAgICAgIHJldHVybiBWOERPTVdpbmRvdzo6dG9OYXRpdmUod2luZG93
V3JhcHBlciktPmZyYW1lKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92
OC9WOFBlckNvbnRleHREYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4UGVy
Q29udGV4dERhdGEuY3BwCmluZGV4IGIzOTIzMjNhOGZkZTdlYzc0YTMzZjAyYWE5NWM2MTYyZWE4
NjU2NDcuLmQ0NTIyMjM2ZGJkZDI1MTBhMDBkYzJmZWVmZTc4NzA3OTBiMDM5ZmYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4UGVyQ29udGV4dERhdGEuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4UGVyQ29udGV4dERhdGEuY3BwCkBAIC0xMTUs
NyArMTE1LDcgQEAgdjg6OkxvY2FsPHY4OjpGdW5jdGlvbj4gVjhQZXJDb250ZXh0RGF0YTo6Y29u
c3RydWN0b3JGb3JUeXBlU2xvd0Nhc2UoV3JhcHBlclR5cGUKICAgICBBU1NFUlQoIW1fb2JqZWN0
UHJvdG90eXBlLmlzRW1wdHkoKSk7CiAKICAgICB2ODo6Q29udGV4dDo6U2NvcGUgc2NvcGUobV9j
b250ZXh0KTsKLSAgICB2ODo6SGFuZGxlPHY4OjpGdW5jdGlvblRlbXBsYXRlPiBmdW5jdGlvblRl
bXBsYXRlID0gdHlwZS0+Z2V0VGVtcGxhdGUobV9jb250ZXh0LT5HZXRJc29sYXRlKCkpOworICAg
IHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IGZ1bmN0aW9uVGVtcGxhdGUgPSB0eXBl
LT5nZXRUZW1wbGF0ZShtX2NvbnRleHQtPkdldElzb2xhdGUoKSwgZ2V0Q29udGV4dFR5cGUobV9j
b250ZXh0LT5HZXRJc29sYXRlKCkpKTsKICAgICAvLyBHZXR0aW5nIHRoZSBmdW5jdGlvbiBtaWdo
dCBmYWlsIGlmIHdlJ3JlIHJ1bm5pbmcgb3V0IG9mIHN0YWNrIG9yIG1lbW9yeS4KICAgICB2ODo6
VHJ5Q2F0Y2ggdHJ5Q2F0Y2g7CiAgICAgdjg6OkxvY2FsPHY4OjpGdW5jdGlvbj4gZnVuY3Rpb24g
PSBmdW5jdGlvblRlbXBsYXRlLT5HZXRGdW5jdGlvbigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvdjgvV29ya2VyU2NyaXB0Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9Xb3JrZXJTY3JpcHRDb250cm9sbGVyLmNwcAppbmRleCBiYzQ2MDkz
ODI3OWZlNGRmMzNhMmE4MTUwMGM2OGMxYTYzMDU3OTkxLi43Mzg1NjIwY2ZjYjc5YTg3Nzk5M2Q1
OTE2NGIzOTg2YmE1NmQ3OWQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92
OC9Xb3JrZXJTY3JpcHRDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy92OC9Xb3JrZXJTY3JpcHRDb250cm9sbGVyLmNwcApAQCAtMjQ5LDcgKzI0OSw3IEBAIFdvcmtl
clNjcmlwdENvbnRyb2xsZXIqIFdvcmtlclNjcmlwdENvbnRyb2xsZXI6OmNvbnRyb2xsZXJGb3JD
b250ZXh0KCkKICAgICAgICAgcmV0dXJuIDA7CiAgICAgdjg6OkhhbmRsZTx2ODo6Q29udGV4dD4g
Y29udGV4dCA9IHY4OjpDb250ZXh0OjpHZXRDdXJyZW50KCk7CiAgICAgdjg6OkhhbmRsZTx2ODo6
T2JqZWN0PiBnbG9iYWwgPSBjb250ZXh0LT5HbG9iYWwoKTsKLSAgICBnbG9iYWwgPSBnbG9iYWwt
PkZpbmRJbnN0YW5jZUluUHJvdG90eXBlQ2hhaW4oVjhXb3JrZXJDb250ZXh0OjpHZXRUZW1wbGF0
ZShjb250ZXh0LT5HZXRJc29sYXRlKCkpKTsKKyAgICBnbG9iYWwgPSBnbG9iYWwtPkZpbmRJbnN0
YW5jZUluUHJvdG90eXBlQ2hhaW4oVjhXb3JrZXJDb250ZXh0OjpHZXRUZW1wbGF0ZShjb250ZXh0
LT5HZXRJc29sYXRlKCksIFdvcmtlcldvcmxkKSk7CiAgICAgLy8gUmV0dXJuIDAgaWYgdGhlIGN1
cnJlbnQgZXhlY3V0aW5nIGNvbnRleHQgaXMgbm90IHRoZSB3b3JrZXIgY29udGV4dC4KICAgICBp
ZiAoZ2xvYmFsLklzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIDA7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy92OC9XcmFwcGVyVHlwZUluZm8uaCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L1dyYXBwZXJUeXBlSW5mby5oCmluZGV4IGIzMTBhZjlhN2QyZjgwMTIwNDQ4
Nzg2YTg5MGYzYmZhODYyNjY1MjYuLmI5NTRmNmYxM2U5ZTdlNmFkYWVmZjUyNTMyNjAyM2YxODUx
ZDg0NGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1dyYXBwZXJUeXBl
SW5mby5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1dyYXBwZXJUeXBlSW5mby5o
CkBAIC00Nyw3ICs0NywxMyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgc3RhdGljIGNvbnN0
IHVpbnQxNl90IHY4RE9NTm9kZUNsYXNzSWQgPSAxOwogICAgIHN0YXRpYyBjb25zdCB1aW50MTZf
dCB2OERPTU9iamVjdENsYXNzSWQgPSAyOwogCi0gICAgdHlwZWRlZiB2ODo6UGVyc2lzdGVudDx2
ODo6RnVuY3Rpb25UZW1wbGF0ZT4gKCpHZXRUZW1wbGF0ZUZ1bmN0aW9uKSh2ODo6SXNvbGF0ZSop
OworICAgIGVudW0gV3JhcHBlckNvbnRleHRUeXBlIHsKKyAgICAgICAgTWFpbldvcmxkLAorICAg
ICAgICBJc29sYXRlZFdvcmxkLAorICAgICAgICBXb3JrZXJXb3JsZAorICAgIH07CisKKyAgICB0
eXBlZGVmIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiAoKkdldFRlbXBsYXRl
RnVuY3Rpb24pKHY4OjpJc29sYXRlKiwgV3JhcHBlckNvbnRleHRUeXBlKTsKICAgICB0eXBlZGVm
IHZvaWQgKCpEZXJlZk9iamVjdEZ1bmN0aW9uKSh2b2lkKik7CiAgICAgdHlwZWRlZiBBY3RpdmVE
T01PYmplY3QqICgqVG9BY3RpdmVET01PYmplY3RGdW5jdGlvbikodjg6OkhhbmRsZTx2ODo6T2Jq
ZWN0Pik7CiAgICAgdHlwZWRlZiBFdmVudFRhcmdldCogKCpUb0V2ZW50VGFyZ2V0RnVuY3Rpb24p
KHY4OjpIYW5kbGU8djg6Ok9iamVjdD4pOwpAQCAtODUsNyArOTEsNyBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KICAgICAgICAgCi0g
ICAgICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBnZXRUZW1wbGF0ZSh2
ODo6SXNvbGF0ZSogaXNvbGF0ZSkgeyByZXR1cm4gZ2V0VGVtcGxhdGVGdW5jdGlvbihpc29sYXRl
KTsgfQorICAgICAgICB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gZ2V0VGVt
cGxhdGUodjg6Oklzb2xhdGUqIGlzb2xhdGUsIFdyYXBwZXJDb250ZXh0VHlwZSBjb250ZXh0VHlw
ZSkgeyByZXR1cm4gZ2V0VGVtcGxhdGVGdW5jdGlvbihpc29sYXRlLCBjb250ZXh0VHlwZSk7IH0K
ICAgICAgICAgCiAgICAgICAgIHZvaWQgZGVyZWZPYmplY3Qodm9pZCogb2JqZWN0KQogICAgICAg
ICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhET01X
aW5kb3dDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RE9N
V2luZG93Q3VzdG9tLmNwcAppbmRleCAxNWQ4YmIxZDZmMGRlZTg3ZTE3NDhlZDA1MGUzZmE4ZmNh
ZTE5MmQzLi4xYmIzNjc5YTVkZjM4YmU1YjVkNTUyY2MxYzdkYjAzZTE5Y2E1ZjZhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhET01XaW5kb3dDdXN0b20u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERPTVdpbmRvd0N1
c3RvbS5jcHAKQEAgLTE0Niw3ICsxNDYsNyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gV2luZG93
U2V0VGltZW91dEltcGwoY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncywgYm9vbCBzaW5nbAogCiB2
ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhET01XaW5kb3c6OmV2ZW50QXR0ckdldHRlckN1c3RvbSh2
ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykK
IHsKLSAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGhvbGRlciA9IGluZm8uVGhpcygpLT5GaW5k
SW5zdGFuY2VJblByb3RvdHlwZUNoYWluKFY4RE9NV2luZG93OjpHZXRUZW1wbGF0ZShpbmZvLkdl
dElzb2xhdGUoKSkpOworICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gaG9sZGVyID0gaW5mby5U
aGlzKCktPkZpbmRJbnN0YW5jZUluUHJvdG90eXBlQ2hhaW4oVjhET01XaW5kb3c6OkdldFRlbXBs
YXRlKGluZm8uR2V0SXNvbGF0ZSgpLCBnZXRDb250ZXh0VHlwZShpbmZvLkdldElzb2xhdGUoKSkp
KTsKICAgICBpZiAoaG9sZGVyLklzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIHY4OjpVbmRlZmlu
ZWQoKTsKIApAQCAtMTY4LDcgKzE2OCw3IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOERPTVdp
bmRvdzo6ZXZlbnRBdHRyR2V0dGVyQ3VzdG9tKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuCiAKIHZv
aWQgVjhET01XaW5kb3c6OmV2ZW50QXR0clNldHRlckN1c3RvbSh2ODo6TG9jYWw8djg6OlN0cmlu
Zz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3Nvcklu
Zm8mIGluZm8pCiB7Ci0gICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBob2xkZXIgPSBpbmZvLlRo
aXMoKS0+RmluZEluc3RhbmNlSW5Qcm90b3R5cGVDaGFpbihWOERPTVdpbmRvdzo6R2V0VGVtcGxh
dGUoaW5mby5HZXRJc29sYXRlKCkpKTsKKyAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGhvbGRl
ciA9IGluZm8uVGhpcygpLT5GaW5kSW5zdGFuY2VJblByb3RvdHlwZUNoYWluKFY4RE9NV2luZG93
OjpHZXRUZW1wbGF0ZShpbmZvLkdldElzb2xhdGUoKSwgZ2V0Q29udGV4dFR5cGUoaW5mby5HZXRJ
c29sYXRlKCkpKSk7CiAgICAgaWYgKGhvbGRlci5Jc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsK
IApAQCAtMzQ0LDcgKzM0NCw3IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOERPTVdpbmRvdzo6
cG9zdE1lc3NhZ2VNZXRob2RDdXN0b20oY29uc3Qgdjg6OkFyZ3VtZW50cyYKIC8vIHN3aXRjaGlu
ZyBjb250ZXh0IG9mIHJlY2VpdmVyLiBJIGNvbnNpZGVyIGl0IGlzIGRhbmdlcm91cy4KIHY4OjpI
YW5kbGU8djg6OlZhbHVlPiBWOERPTVdpbmRvdzo6dG9TdHJpbmdNZXRob2RDdXN0b20oY29uc3Qg
djg6OkFyZ3VtZW50cyYgYXJncykKIHsKLSAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGRvbVdy
YXBwZXIgPSBhcmdzLlRoaXMoKS0+RmluZEluc3RhbmNlSW5Qcm90b3R5cGVDaGFpbihWOERPTVdp
bmRvdzo6R2V0VGVtcGxhdGUoYXJncy5HZXRJc29sYXRlKCkpKTsKKyAgICB2ODo6SGFuZGxlPHY4
OjpPYmplY3Q+IGRvbVdyYXBwZXIgPSBhcmdzLlRoaXMoKS0+RmluZEluc3RhbmNlSW5Qcm90b3R5
cGVDaGFpbihWOERPTVdpbmRvdzo6R2V0VGVtcGxhdGUoYXJncy5HZXRJc29sYXRlKCksIGdldENv
bnRleHRUeXBlKGFyZ3MuR2V0SXNvbGF0ZSgpKSkpOwogICAgIGlmIChkb21XcmFwcGVyLklzRW1w
dHkoKSkKICAgICAgICAgcmV0dXJuIGFyZ3MuVGhpcygpLT5PYmplY3RQcm90b1RvU3RyaW5nKCk7
CiAgICAgcmV0dXJuIGRvbVdyYXBwZXItPk9iamVjdFByb3RvVG9TdHJpbmcoKTsKQEAgLTUxMCw3
ICs1MTAsNyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhET01XaW5kb3c6OnNldEludGVydmFs
TWV0aG9kQ3VzdG9tKGNvbnN0IHY4OjpBcmd1bWVudHMmCiBib29sIFY4RE9NV2luZG93OjpuYW1l
ZFNlY3VyaXR5Q2hlY2sodjg6OkxvY2FsPHY4OjpPYmplY3Q+IGhvc3QsIHY4OjpMb2NhbDx2ODo6
VmFsdWU+IGtleSwgdjg6OkFjY2Vzc1R5cGUgdHlwZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4pCiB7
CiAgICAgdjg6Oklzb2xhdGUqIGlzb2xhdGUgPSB2ODo6SXNvbGF0ZTo6R2V0Q3VycmVudCgpOwot
ICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd2luZG93ID0gaG9zdC0+RmluZEluc3RhbmNlSW5Q
cm90b3R5cGVDaGFpbihWOERPTVdpbmRvdzo6R2V0VGVtcGxhdGUoaXNvbGF0ZSkpOworICAgIHY4
OjpIYW5kbGU8djg6Ok9iamVjdD4gd2luZG93ID0gaG9zdC0+RmluZEluc3RhbmNlSW5Qcm90b3R5
cGVDaGFpbihWOERPTVdpbmRvdzo6R2V0VGVtcGxhdGUoaXNvbGF0ZSwgZ2V0Q29udGV4dFR5cGUo
aXNvbGF0ZSkpKTsKICAgICBpZiAod2luZG93LklzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOyAgLy8gdGhlIGZyYW1lIGlzIGdvbmUuCiAKQEAgLTU0NCw3ICs1NDQsNyBAQCBib29sIFY4
RE9NV2luZG93OjpuYW1lZFNlY3VyaXR5Q2hlY2sodjg6OkxvY2FsPHY4OjpPYmplY3Q+IGhvc3Qs
IHY4OjpMb2NhbDx2ODo6VgogYm9vbCBWOERPTVdpbmRvdzo6aW5kZXhlZFNlY3VyaXR5Q2hlY2so
djg6OkxvY2FsPHY4OjpPYmplY3Q+IGhvc3QsIHVpbnQzMl90IGluZGV4LCB2ODo6QWNjZXNzVHlw
ZSB0eXBlLCB2ODo6TG9jYWw8djg6OlZhbHVlPikKIHsKICAgICB2ODo6SXNvbGF0ZSogaXNvbGF0
ZSA9IHY4OjpJc29sYXRlOjpHZXRDdXJyZW50KCk7Ci0gICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0
PiB3aW5kb3cgPSBob3N0LT5GaW5kSW5zdGFuY2VJblByb3RvdHlwZUNoYWluKFY4RE9NV2luZG93
OjpHZXRUZW1wbGF0ZShpc29sYXRlKSk7CisgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3aW5k
b3cgPSBob3N0LT5GaW5kSW5zdGFuY2VJblByb3RvdHlwZUNoYWluKFY4RE9NV2luZG93OjpHZXRU
ZW1wbGF0ZShpc29sYXRlLCBnZXRDb250ZXh0VHlwZShpc29sYXRlKSkpOwogICAgIGlmICh3aW5k
b3cuSXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKQEAgLTU4Niw3ICs1ODYsNyBA
QCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOChET01XaW5kb3cqIHdpbmRvdywgdjg6OkhhbmRs
ZTx2ODo6T2JqZWN0PiBjcmVhdGlvbkNvbgogICAgIC8vIG5lY2Vzc2FyaWx5IHRoZSBmaXJzdCBn
bG9iYWwgb2JqZWN0IGFzc29jaWF0ZWQgd2l0aCB0aGF0IERPTVdpbmRvdy4KICAgICB2ODo6SGFu
ZGxlPHY4OjpDb250ZXh0PiBjdXJyZW50Q29udGV4dCA9IHY4OjpDb250ZXh0OjpHZXRDdXJyZW50
KCk7CiAgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjdXJyZW50R2xvYmFsID0gY3VycmVudENv
bnRleHQtPkdsb2JhbCgpOwotICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd2luZG93V3JhcHBl
ciA9IGN1cnJlbnRHbG9iYWwtPkZpbmRJbnN0YW5jZUluUHJvdG90eXBlQ2hhaW4oVjhET01XaW5k
b3c6OkdldFRlbXBsYXRlKGlzb2xhdGUpKTsKKyAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdp
bmRvd1dyYXBwZXIgPSBjdXJyZW50R2xvYmFsLT5GaW5kSW5zdGFuY2VJblByb3RvdHlwZUNoYWlu
KFY4RE9NV2luZG93OjpHZXRUZW1wbGF0ZShpc29sYXRlLCBnZXRNYWluSXNvbGF0ZUNvbnRleHRU
eXBlKGlzb2xhdGUpKSk7CiAgICAgaWYgKCF3aW5kb3dXcmFwcGVyLklzRW1wdHkoKSkgewogICAg
ICAgICBpZiAoVjhET01XaW5kb3c6OnRvTmF0aXZlKHdpbmRvd1dyYXBwZXIpID09IHdpbmRvdykK
ICAgICAgICAgICAgIHJldHVybiBjdXJyZW50R2xvYmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTERvY3VtZW50Q3VzdG9tLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxEb2N1bWVudEN1c3RvbS5jcHAKaW5k
ZXggNWMxZjY1ZmY1MTlkYTJlYzU3ODdlNDcyMDBlNzA2NThmYWNhODIxNC4uN2IyYmZlM2Q5YzRi
YzUzYWQ0OTJkMmU0MmVkZGY4YTJkMWQwYjc5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTERvY3VtZW50Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MRG9jdW1lbnRDdXN0b20uY3BwCkBAIC02
MCw3ICs2MCw4IEBAIHY4OjpMb2NhbDx2ODo6T2JqZWN0PiBWOEhUTUxEb2N1bWVudDo6d3JhcElu
U2hhZG93T2JqZWN0KHY4OjpMb2NhbDx2ODo6T2JqZWN0PiB3CiAgICAgICAgIGlmIChzaGFkb3dU
ZW1wbGF0ZS5Jc0VtcHR5KCkpCiAgICAgICAgICAgICByZXR1cm4gdjg6OkxvY2FsPHY4OjpPYmpl
Y3Q+KCk7CiAgICAgICAgIHNoYWRvd1RlbXBsYXRlLT5TZXRDbGFzc05hbWUodjg6OlN0cmluZzo6
TmV3U3ltYm9sKCJIVE1MRG9jdW1lbnQiKSk7Ci0gICAgICAgIHNoYWRvd1RlbXBsYXRlLT5Jbmhl
cml0KFY4SFRNTERvY3VtZW50OjpHZXRUZW1wbGF0ZShpc29sYXRlKSk7CisgICAgICAgIHY4OjpM
b2NhbDx2ODo6Q29udGV4dD4gY29udGV4dCh2ODo6Q29udGV4dDo6R2V0Q3VycmVudCgpKTsKKyAg
ICAgICAgc2hhZG93VGVtcGxhdGUtPkluaGVyaXQoVjhIVE1MRG9jdW1lbnQ6OkdldFRlbXBsYXRl
KGlzb2xhdGUsIGdldE1haW5Jc29sYXRlQ29udGV4dFR5cGUoaXNvbGF0ZSkpKTsKICAgICAgICAg
c2hhZG93VGVtcGxhdGUtPkluc3RhbmNlVGVtcGxhdGUoKS0+U2V0SW50ZXJuYWxGaWVsZENvdW50
KFY4SFRNTERvY3VtZW50OjppbnRlcm5hbEZpZWxkQ291bnQpOwogICAgIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTEltYWdlRWxlbWVudENv
bnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxJ
bWFnZUVsZW1lbnRDb25zdHJ1Y3Rvci5jcHAKaW5kZXggOTM1NWVlM2RmNWYwMGQ2ZWU0MDg1MTYy
YjY1NTVjNWNmNDI4MWMyNS4uZWQ2MzQzNDQyMzhiZWM2MmRhMjIwYzc2ZjRjYjQ3MGQzOTRlMDlj
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTElt
YWdlRWxlbWVudENvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92
OC9jdXN0b20vVjhIVE1MSW1hZ2VFbGVtZW50Q29uc3RydWN0b3IuY3BwCkBAIC04MSw3ICs4MSw3
IEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdjhIVE1MSW1hZ2VFbGVtZW50Q29uc3Ry
dWN0b3JNZXRob2RDdXN0b20oY29uc3Qgdjg6CiAgICAgcmV0dXJuIHdyYXBwZXI7CiB9CiAKLXY4
OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBWOEhUTUxJbWFnZUVsZW1lbnRDb25z
dHJ1Y3Rvcjo6R2V0VGVtcGxhdGUodjg6Oklzb2xhdGUqIGlzb2xhdGUpCit2ODo6UGVyc2lzdGVu
dDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gVjhIVE1MSW1hZ2VFbGVtZW50Q29uc3RydWN0b3I6Okdl
dFRlbXBsYXRlKHY4OjpJc29sYXRlKiBpc29sYXRlLCBXcmFwcGVyQ29udGV4dFR5cGUgY29udGV4
dFR5cGUpCiB7CiAgICAgc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRl
PiBjYWNoZWRUZW1wbGF0ZTsKICAgICBpZiAoIWNhY2hlZFRlbXBsYXRlLklzRW1wdHkoKSkKQEAg
LTkzLDcgKzkzLDcgQEAgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IFY4SFRN
TEltYWdlRWxlbWVudENvbnN0cnVjdG9yOjpHZXRUZW1wbGF0ZSgKICAgICB2ODo6TG9jYWw8djg6
Ok9iamVjdFRlbXBsYXRlPiBpbnN0YW5jZSA9IHJlc3VsdC0+SW5zdGFuY2VUZW1wbGF0ZSgpOwog
ICAgIGluc3RhbmNlLT5TZXRJbnRlcm5hbEZpZWxkQ291bnQoVjhIVE1MSW1hZ2VFbGVtZW50Ojpp
bnRlcm5hbEZpZWxkQ291bnQpOwogICAgIHJlc3VsdC0+U2V0Q2xhc3NOYW1lKHY4OjpTdHJpbmc6
Ok5ld1N5bWJvbCgiSFRNTEltYWdlRWxlbWVudCIpKTsKLSAgICByZXN1bHQtPkluaGVyaXQoVjhI
VE1MSW1hZ2VFbGVtZW50OjpHZXRUZW1wbGF0ZShpc29sYXRlKSk7CisgICAgcmVzdWx0LT5Jbmhl
cml0KFY4SFRNTEltYWdlRWxlbWVudDo6R2V0VGVtcGxhdGUoaXNvbGF0ZSwgY29udGV4dFR5cGUp
KTsKIAogICAgIGNhY2hlZFRlbXBsYXRlID0gdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVt
cGxhdGU+OjpOZXcoaXNvbGF0ZSwgcmVzdWx0KTsKICAgICByZXR1cm4gY2FjaGVkVGVtcGxhdGU7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MSW1h
Z2VFbGVtZW50Q29uc3RydWN0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3Rv
bS9WOEhUTUxJbWFnZUVsZW1lbnRDb25zdHJ1Y3Rvci5oCmluZGV4IDk1NmJjOGQ4NWI5YzBjMmUx
MTliMThhYWQxODcwN2I1Mjg5ZWI1OTEuLjQ0ZDA3MGM1MjFjMDI3NTBlODBkYmY4M2Y3OTJlMzU4
NDJjNzZiYjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9W
OEhUTUxJbWFnZUVsZW1lbnRDb25zdHJ1Y3Rvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L2N1c3RvbS9WOEhUTUxJbWFnZUVsZW1lbnRDb25zdHJ1Y3Rvci5oCkBAIC0zOSw3ICsz
OSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgVjhIVE1MSW1hZ2VFbGVtZW50Q29u
c3RydWN0b3IgewogcHVibGljOgotICAgIHN0YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rp
b25UZW1wbGF0ZT4gR2V0VGVtcGxhdGUodjg6Oklzb2xhdGUqID0gMCk7CisgICAgc3RhdGljIHY4
OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBHZXRUZW1wbGF0ZSh2ODo6SXNvbGF0
ZSosIFdyYXBwZXJDb250ZXh0VHlwZSk7CiAgICAgc3RhdGljIFdyYXBwZXJUeXBlSW5mbyBpbmZv
OwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4
SW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1
c3RvbS9WOEluamVjdGVkU2NyaXB0TWFuYWdlci5jcHAKaW5kZXggYjI5NjFlMzAwNDBkYWM2OGIy
MTRjYmE1YTQ4YjYzMGRkNDM5ZmI1MC4uNjVkN2JjMzlhZjI2ZWYxODgwODllYWFiNjc0Y2E0ODJh
MDUzMWE2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4
SW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92
OC9jdXN0b20vVjhJbmplY3RlZFNjcmlwdE1hbmFnZXIuY3BwCkBAIC01NSw3ICs1NSw3IEBAIHN0
YXRpYyB2b2lkIFdlYWtSZWZlcmVuY2VDYWxsYmFjayh2ODo6SXNvbGF0ZSogaXNvbGF0ZSwgdjg6
OlBlcnNpc3RlbnQ8djg6OlZhbHVlCiAKIHN0YXRpYyB2ODo6TG9jYWw8djg6Ok9iamVjdD4gY3Jl
YXRlSW5qZWN0ZWRTY3JpcHRIb3N0VjhXcmFwcGVyKEluamVjdGVkU2NyaXB0SG9zdCogaG9zdCwg
djg6Oklzb2xhdGUqIGlzb2xhdGUpCiB7Ci0gICAgdjg6OkxvY2FsPHY4OjpGdW5jdGlvbj4gZnVu
Y3Rpb24gPSBWOEluamVjdGVkU2NyaXB0SG9zdDo6R2V0VGVtcGxhdGUoaXNvbGF0ZSktPkdldEZ1
bmN0aW9uKCk7CisgICAgdjg6OkxvY2FsPHY4OjpGdW5jdGlvbj4gZnVuY3Rpb24gPSBWOEluamVj
dGVkU2NyaXB0SG9zdDo6R2V0VGVtcGxhdGUoaXNvbGF0ZSwgZ2V0Q29udGV4dFR5cGUoaXNvbGF0
ZSkpLT5HZXRGdW5jdGlvbigpOwogICAgIGlmIChmdW5jdGlvbi5Jc0VtcHR5KCkpIHsKICAgICAg
ICAgLy8gUmV0dXJuIGlmIGFsbG9jYXRpb24gZmFpbGVkLgogICAgICAgICByZXR1cm4gdjg6Okxv
Y2FsPHY4OjpPYmplY3Q+KCk7CkBAIC0xMTgsNyArMTE4LDcgQEAgYm9vbCBJbmplY3RlZFNjcmlw
dE1hbmFnZXI6OmNhbkFjY2Vzc0luc3BlY3RlZFdpbmRvdyhTY3JpcHRTdGF0ZSogc2NyaXB0U3Rh
dGUpCiAgICAgdjg6OkxvY2FsPHY4OjpPYmplY3Q+IGdsb2JhbCA9IGNvbnRleHQtPkdsb2JhbCgp
OwogICAgIGlmIChnbG9iYWwuSXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
djg6OkhhbmRsZTx2ODo6T2JqZWN0PiBob2xkZXIgPSBnbG9iYWwtPkZpbmRJbnN0YW5jZUluUHJv
dG90eXBlQ2hhaW4oVjhET01XaW5kb3c6OkdldFRlbXBsYXRlKGNvbnRleHQtPkdldElzb2xhdGUo
KSkpOworICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gaG9sZGVyID0gZ2xvYmFsLT5GaW5kSW5z
dGFuY2VJblByb3RvdHlwZUNoYWluKFY4RE9NV2luZG93OjpHZXRUZW1wbGF0ZShjb250ZXh0LT5H
ZXRJc29sYXRlKCksIGdldENvbnRleHRUeXBlKGNvbnRleHQtPkdldElzb2xhdGUoKSkpKTsKICAg
ICBpZiAoaG9sZGVyLklzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIEZyYW1l
KiBmcmFtZSA9IFY4RE9NV2luZG93Ojp0b05hdGl2ZShob2xkZXIpLT5mcmFtZSgpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4TG9jYXRpb25DdXN0b20u
Y3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4TG9jYXRpb25DdXN0b20u
Y3BwCmluZGV4IGVjNzEyMmY4ZDkzNzI2Y2I4OWZjOWMxNThmM2E1MzQ0NThiMGMyYTQuLmQzYTY3
OTIyZjI0Yjg2MDEyZjgyMzY3ZjE5YjUyYzIwOWM3MmYyNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOExvY2F0aW9uQ3VzdG9tLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhMb2NhdGlvbkN1c3RvbS5jcHAKQEAgLTE0
MCw3ICsxNDAsNyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhMb2NhdGlvbjo6cmVsb2FkQXR0
ckdldHRlckN1c3RvbSh2ODo6TG9jYWw8djg6OlN0cmluZz4gbgogewogICAgIHY4OjpJc29sYXRl
KiBpc29sYXRlID0gaW5mby5HZXRJc29sYXRlKCk7CiAgICAgc3RhdGljIHY4OjpQZXJzaXN0ZW50
PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBwcml2YXRlVGVtcGxhdGUgPSB2ODo6UGVyc2lzdGVudDx2
ODo6RnVuY3Rpb25UZW1wbGF0ZT46Ok5ldyhpc29sYXRlLCB2ODo6RnVuY3Rpb25UZW1wbGF0ZTo6
TmV3KFY4TG9jYXRpb246OnJlbG9hZE1ldGhvZEN1c3RvbSwgdjhVbmRlZmluZWQoKSwgdjg6OlNp
Z25hdHVyZTo6TmV3KFY4TG9jYXRpb246OkdldFJhd1RlbXBsYXRlKGlzb2xhdGUpKSkpOwotICAg
IHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gaG9sZGVyID0gaW5mby5UaGlzKCktPkZpbmRJbnN0YW5j
ZUluUHJvdG90eXBlQ2hhaW4oVjhMb2NhdGlvbjo6R2V0VGVtcGxhdGUoaXNvbGF0ZSkpOworICAg
IHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gaG9sZGVyID0gaW5mby5UaGlzKCktPkZpbmRJbnN0YW5j
ZUluUHJvdG90eXBlQ2hhaW4oVjhMb2NhdGlvbjo6R2V0VGVtcGxhdGUoaXNvbGF0ZSwgZ2V0Q29u
dGV4dFR5cGUoaXNvbGF0ZSkpKTsKICAgICBpZiAoaG9sZGVyLklzRW1wdHkoKSkgewogICAgICAg
ICAvLyBjYW4gb25seSByZWFjaCBoZXJlIGJ5ICdvYmplY3QuX19wcm90b19fLmZ1bmMnLCBhbmQg
aXQgc2hvdWxkIHBhc3NlZAogICAgICAgICAvLyBkb21haW4gc2VjdXJpdHkgY2hlY2sgYWxyZWFk
eQpAQCAtMTU4LDcgKzE1OCw3IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOExvY2F0aW9uOjpy
ZXBsYWNlQXR0ckdldHRlckN1c3RvbSh2ODo6TG9jYWw8djg6OlN0cmluZz4KIHsKICAgICB2ODo6
SXNvbGF0ZSogaXNvbGF0ZSA9IGluZm8uR2V0SXNvbGF0ZSgpOwogICAgIHN0YXRpYyB2ODo6UGVy
c2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gcHJpdmF0ZVRlbXBsYXRlID0gdjg6OlBlcnNp
c3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+OjpOZXcoaXNvbGF0ZSwgdjg6OkZ1bmN0aW9uVGVt
cGxhdGU6Ok5ldyhWOExvY2F0aW9uOjpyZXBsYWNlTWV0aG9kQ3VzdG9tLCB2OFVuZGVmaW5lZCgp
LCB2ODo6U2lnbmF0dXJlOjpOZXcoVjhMb2NhdGlvbjo6R2V0UmF3VGVtcGxhdGUoaXNvbGF0ZSkp
KSk7Ci0gICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBob2xkZXIgPSBpbmZvLlRoaXMoKS0+Rmlu
ZEluc3RhbmNlSW5Qcm90b3R5cGVDaGFpbihWOExvY2F0aW9uOjpHZXRUZW1wbGF0ZShpc29sYXRl
KSk7CisgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBob2xkZXIgPSBpbmZvLlRoaXMoKS0+Rmlu
ZEluc3RhbmNlSW5Qcm90b3R5cGVDaGFpbihWOExvY2F0aW9uOjpHZXRUZW1wbGF0ZShpc29sYXRl
LCBnZXRDb250ZXh0VHlwZShpc29sYXRlKSkpOwogICAgIGlmIChob2xkZXIuSXNFbXB0eSgpKSB7
CiAgICAgICAgIC8vIGNhbiBvbmx5IHJlYWNoIGhlcmUgYnkgJ29iamVjdC5fX3Byb3RvX18uZnVu
YycsIGFuZCBpdCBzaG91bGQgcGFzc2VkCiAgICAgICAgIC8vIGRvbWFpbiBzZWN1cml0eSBjaGVj
ayBhbHJlYWR5CkBAIC0xNzcsNyArMTc3LDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4TG9j
YXRpb246OmFzc2lnbkF0dHJHZXR0ZXJDdXN0b20odjg6OkxvY2FsPHY4OjpTdHJpbmc+IG4KICAg
ICB2ODo6SXNvbGF0ZSogaXNvbGF0ZSA9IGluZm8uR2V0SXNvbGF0ZSgpOwogICAgIHN0YXRpYyB2
ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gcHJpdmF0ZVRlbXBsYXRlID0KICAg
ICAgICAgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+OjpOZXcoaXNvbGF0ZSwg
djg6OkZ1bmN0aW9uVGVtcGxhdGU6Ok5ldyhWOExvY2F0aW9uOjphc3NpZ25NZXRob2RDdXN0b20s
IHY4VW5kZWZpbmVkKCksIHY4OjpTaWduYXR1cmU6Ok5ldyhWOExvY2F0aW9uOjpHZXRSYXdUZW1w
bGF0ZShpc29sYXRlKSkpKTsKLSAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGhvbGRlciA9IGlu
Zm8uVGhpcygpLT5GaW5kSW5zdGFuY2VJblByb3RvdHlwZUNoYWluKFY4TG9jYXRpb246OkdldFRl
bXBsYXRlKGlzb2xhdGUpKTsKKyAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGhvbGRlciA9IGlu
Zm8uVGhpcygpLT5GaW5kSW5zdGFuY2VJblByb3RvdHlwZUNoYWluKFY4TG9jYXRpb246OkdldFRl
bXBsYXRlKGlzb2xhdGUsIGdldENvbnRleHRUeXBlKGlzb2xhdGUpKSk7CiAgICAgaWYgKGhvbGRl
ci5Jc0VtcHR5KCkpIHsKICAgICAgICAgLy8gY2FuIG9ubHkgcmVhY2ggaGVyZSBieSAnb2JqZWN0
Ll9fcHJvdG9fXy5mdW5jJywgYW5kIGl0IHNob3VsZCBwYXNzZWQKICAgICAgICAgLy8gZG9tYWlu
IHNlY3VyaXR5IGNoZWNrIGFscmVhZHkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L2N1c3RvbS9WOE1lc3NhZ2VFdmVudEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy92OC9jdXN0b20vVjhNZXNzYWdlRXZlbnRDdXN0b20uY3BwCmluZGV4IDM4NGNiYTU3
ZDY5MGU2YjM4YWU3YmFkNzczZjc2MGUyMzgxYjdmYTYuLjA5YjIyYWI3ZTc0YzE1Yjk5MjlhNjYx
OTYzOGQ0Zjc0NzEzNzRjNmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L2N1c3RvbS9WOE1lc3NhZ2VFdmVudEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvY3VzdG9tL1Y4TWVzc2FnZUV2ZW50Q3VzdG9tLmNwcApAQCAtMTE2LDcgKzExNiw3
IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOE1lc3NhZ2VFdmVudDo6aW5pdE1lc3NhZ2VFdmVu
dE1ldGhvZEN1c3RvbShjb25zdCB2ODo6QXJnCiAgICAgRE9NV2luZG93KiBzb3VyY2VBcmcgPSAw
OwogICAgIGlmIChhcmdzWzZdLT5Jc09iamVjdCgpKSB7CiAgICAgICAgIHY4OjpIYW5kbGU8djg6
Ok9iamVjdD4gd3JhcHBlciA9IHY4OjpIYW5kbGU8djg6Ok9iamVjdD46OkNhc3QoYXJnc1s2XSk7
Ci0gICAgICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd2luZG93ID0gd3JhcHBlci0+RmluZElu
c3RhbmNlSW5Qcm90b3R5cGVDaGFpbihWOERPTVdpbmRvdzo6R2V0VGVtcGxhdGUoYXJncy5HZXRJ
c29sYXRlKCkpKTsKKyAgICAgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3aW5kb3cgPSB3cmFw
cGVyLT5GaW5kSW5zdGFuY2VJblByb3RvdHlwZUNoYWluKFY4RE9NV2luZG93OjpHZXRUZW1wbGF0
ZShhcmdzLkdldElzb2xhdGUoKSwgZ2V0Q29udGV4dFR5cGUoYXJncy5HZXRJc29sYXRlKCkpKSk7
CiAgICAgICAgIGlmICghd2luZG93LklzRW1wdHkoKSkKICAgICAgICAgICAgIHNvdXJjZUFyZyA9
IFY4RE9NV2luZG93Ojp0b05hdGl2ZSh3aW5kb3cpOwogICAgIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>190716</attachid>
            <date>2013-02-28 06:50:10 -0800</date>
            <delta_ts>2013-02-28 06:55:00 -0800</delta_ts>
            <desc>Patch.</desc>
            <filename>bug-110875-20130228154621.patch</filename>
            <type>text/plain</type>
            <size>41402</size>
            <attacher name="Marja Hölttä">marja</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ0Mjk4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2M5ODA2NWIwMDZiNmE1
NmFjOWE1MmJhZWE5YTJkM2NlZTA4ZTBmMC4uYzc2NGRhZThjZDAzYmFkOGY0Y2YwNzEyYTJjMzdj
OWQ0MDRlODgwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDcwIEBACisyMDEzLTAyLTI2ICBNYXJq
YSBIw7ZsdHTDpCAgPG1hcmphQGNocm9taXVtLm9yZz4KKworICAgICAgICBWOCBiaW5kaW5nczog
QWRkIGEgIndvcmxkIHR5cGUiIHBhcmFtZXRlciB0byBHZXRUZW1wbGF0ZSBhbmQgQ29uZmlndXJl
VjhTb21ldGhpbmdUZW1wbGF0ZSBmdW5jdGlvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTExMDg3NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyAobm8gY2hhbmdlcyBpbiBiZWhhdmlv
ciB5ZXQpLgorCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG06
CisgICAgICAgIChHZW5lcmF0ZUhlYWRlcik6CisgICAgICAgIChHZW5lcmF0ZURvbWFpblNhZmVG
dW5jdGlvbkdldHRlcik6CisgICAgICAgIChHZW5lcmF0ZURvbWFpblNhZmVGdW5jdGlvblNldHRl
cik6CisgICAgICAgIChHZW5lcmF0ZU5vcm1hbEF0dHJHZXR0ZXIpOgorICAgICAgICAoR2VuZXJh
dGVOYW1lZENvbnN0cnVjdG9yKToKKyAgICAgICAgKEdlbmVyYXRlSW1wbGVtZW50YXRpb24pOgor
ICAgICAgICAqIGJpbmRpbmdzL3Y4L0RpY3Rpb25hcnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RGljdGlvbmFyeTo6Z2V0KToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9QYWdlU2NyaXB0RGVidWdT
ZXJ2ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cmV0cmlldmVGcmFtZVdpdGhHbG9iYWxPYmpl
Y3RDaGVjayk6CisgICAgICAgICogYmluZGluZ3MvdjgvVjhBZGFwdG9yRnVuY3Rpb24uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6VjhBZGFwdG9yRnVuY3Rpb246OmdldFRlbXBsYXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlY4QWRhcHRvckZ1bmN0aW9uOjp3cmFwKToKKyAgICAgICAgKiBiaW5kaW5n
cy92OC9WOEFkYXB0b3JGdW5jdGlvbi5oOgorICAgICAgICAoVjhBZGFwdG9yRnVuY3Rpb24pOgor
ICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4QmluZGluZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjp0
b0RPTVdpbmRvdyk6CisgICAgICAgIChXZWJDb3JlOjp0b1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQp
OgorICAgICAgICAoV2ViQ29yZTo6d29ybGRUeXBlKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAg
ICAgICAqIGJpbmRpbmdzL3Y4L1Y4QmluZGluZy5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAg
ICAgICogYmluZGluZ3MvdjgvVjhET01XaW5kb3dTaGVsbC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpWOERPTVdpbmRvd1NoZWxsOjpjbGVhckZvck5hdmlnYXRpb24pOgorICAgICAgICAqIGJpbmRp
bmdzL3Y4L1Y4RE9NV3JhcHBlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOERPTVdyYXBwZXI6
OmNyZWF0ZVdyYXBwZXIpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4SW5pdGlhbGl6ZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6ZmluZEZyYW1lKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9W
OFBlckNvbnRleHREYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4UGVyQ29udGV4dERhdGE6
OmNvbnN0cnVjdG9yRm9yVHlwZVNsb3dDYXNlKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9Xb3Jr
ZXJTY3JpcHRDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclNjcmlwdENv
bnRyb2xsZXI6OmNvbnRyb2xsZXJGb3JDb250ZXh0KToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9X
cmFwcGVyVHlwZUluZm8uaDoKKyAgICAgICAgKFdlYkNvcmU6OldyYXBwZXJUeXBlSW5mbzo6Z2V0
VGVtcGxhdGUpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOERPTVdpbmRvd0N1c3Rv
bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOERPTVdpbmRvdzo6ZXZlbnRBdHRyR2V0dGVyQ3Vz
dG9tKToKKyAgICAgICAgKFdlYkNvcmU6OlY4RE9NV2luZG93OjpldmVudEF0dHJTZXR0ZXJDdXN0
b20pOgorICAgICAgICAoV2ViQ29yZTo6VjhET01XaW5kb3c6OnRvU3RyaW5nTWV0aG9kQ3VzdG9t
KToKKyAgICAgICAgKFdlYkNvcmU6OlY4RE9NV2luZG93OjpuYW1lZFNlY3VyaXR5Q2hlY2spOgor
ICAgICAgICAoV2ViQ29yZTo6VjhET01XaW5kb3c6OmluZGV4ZWRTZWN1cml0eUNoZWNrKToKKyAg
ICAgICAgKFdlYkNvcmU6OnRvVjgpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOEhU
TUxEb2N1bWVudEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOEhUTUxEb2N1bWVudDo6
d3JhcEluU2hhZG93T2JqZWN0KToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhIVE1M
SW1hZ2VFbGVtZW50Q29uc3RydWN0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhIVE1MSW1h
Z2VFbGVtZW50Q29uc3RydWN0b3I6OkdldFRlbXBsYXRlKToKKyAgICAgICAgKiBiaW5kaW5ncy92
OC9jdXN0b20vVjhIVE1MSW1hZ2VFbGVtZW50Q29uc3RydWN0b3IuaDoKKyAgICAgICAgKFY4SFRN
TEltYWdlRWxlbWVudENvbnN0cnVjdG9yKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20v
VjhJbmplY3RlZFNjcmlwdE1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlSW5q
ZWN0ZWRTY3JpcHRIb3N0VjhXcmFwcGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkluamVjdGVkU2Ny
aXB0TWFuYWdlcjo6Y2FuQWNjZXNzSW5zcGVjdGVkV2luZG93KToKKyAgICAgICAgKiBiaW5kaW5n
cy92OC9jdXN0b20vVjhMb2NhdGlvbkN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOExv
Y2F0aW9uOjpyZWxvYWRBdHRyR2V0dGVyQ3VzdG9tKToKKyAgICAgICAgKFdlYkNvcmU6OlY4TG9j
YXRpb246OnJlcGxhY2VBdHRyR2V0dGVyQ3VzdG9tKToKKyAgICAgICAgKFdlYkNvcmU6OlY4TG9j
YXRpb246OmFzc2lnbkF0dHJHZXR0ZXJDdXN0b20pOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1
c3RvbS9WOE1lc3NhZ2VFdmVudEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOE1lc3Nh
Z2VFdmVudDo6aW5pdE1lc3NhZ2VFdmVudE1ldGhvZEN1c3RvbSk6CisKIDIwMTMtMDItMjggIEtl
aXNoaSBIYXR0b3JpICA8a2Vpc2hpQHdlYmtpdC5vcmc+CiAKICAgICAgICAgQWRkIGNhbGVuZGFy
IGhlYWRlciBmb3IgbmV3IGNhbGVuZGFyIHBpY2tlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0gYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbQppbmRleCBiODRkOTYwOThlMmU4YTg0
NzBjZDhjMWY1MTIxYTY4YWIyMzk1YTJiLi4zZDZmYjdhYTAxMDUzMDMwZWI0ZTI4MWViYmVmMzFh
OTg0NDdiZjQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0Nv
ZGVHZW5lcmF0b3JWOC5wbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0Nv
ZGVHZW5lcmF0b3JWOC5wbQpAQCAtMzI0LDcgKzMyNCw3IEBAIHN1YiBHZW5lcmF0ZUhlYWRlcgog
ICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCA8PEVORCk7CiBjbGFzcyBWOCR7bmF0aXZlVHlw
ZX1Db25zdHJ1Y3RvciB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpG
dW5jdGlvblRlbXBsYXRlPiBHZXRUZW1wbGF0ZSh2ODo6SXNvbGF0ZSopOworICAgIHN0YXRpYyB2
ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gR2V0VGVtcGxhdGUodjg6Oklzb2xh
dGUqLCBXcmFwcGVyV29ybGRUeXBlKTsKICAgICBzdGF0aWMgV3JhcHBlclR5cGVJbmZvIGluZm87
CiB9OwogCkBAIC0zNjIsNyArMzYyLDcgQEAgRU5ECiAgICAgcHVzaChAaGVhZGVyQ29udGVudCwg
PDxFTkQpOwogICAgIHN0YXRpYyBib29sIEhhc0luc3RhbmNlKHY4OjpIYW5kbGU8djg6OlZhbHVl
Piwgdjg6Oklzb2xhdGUqKTsKICAgICBzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9u
VGVtcGxhdGU+IEdldFJhd1RlbXBsYXRlKHY4OjpJc29sYXRlKik7Ci0gICAgc3RhdGljIHY4OjpQ
ZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBHZXRUZW1wbGF0ZSh2ODo6SXNvbGF0ZSop
OworICAgIHN0YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gR2V0VGVt
cGxhdGUodjg6Oklzb2xhdGUqLCBXcmFwcGVyV29ybGRUeXBlKTsKICAgICBzdGF0aWMgJHtuYXRp
dmVUeXBlfSogdG9OYXRpdmUodjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBvYmplY3QpCiAgICAgewog
ICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDwke25hdGl2ZVR5cGV9Kj4oJHtmcm9tRnVu
Y3Rpb25PcGVuaW5nfW9iamVjdCR7ZnJvbUZ1bmN0aW9uQ2xvc2luZ30tPkdldEFsaWduZWRQb2lu
dGVyRnJvbUludGVybmFsRmllbGQodjhET01XcmFwcGVyT2JqZWN0SW5kZXgpKTsKQEAgLTc5NCw3
ICs3OTQsNyBAQCBzdWIgR2VuZXJhdGVEb21haW5TYWZlRnVuY3Rpb25HZXR0ZXIKIHN0YXRpYyB2
ODo6SGFuZGxlPHY4OjpWYWx1ZT4gJHtmdW5jTmFtZX1BdHRyR2V0dGVyKHY4OjpMb2NhbDx2ODo6
U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewogICAgIHN0YXRp
YyB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gcHJpdmF0ZVRlbXBsYXRlID0g
djg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+OjpOZXcoaW5mby5HZXRJc29sYXRl
KCksICRuZXdUZW1wbGF0ZVN0cmluZyk7Ci0gICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBob2xk
ZXIgPSBpbmZvLlRoaXMoKS0+RmluZEluc3RhbmNlSW5Qcm90b3R5cGVDaGFpbigke3Y4SW50ZXJm
YWNlTmFtZX06OkdldFRlbXBsYXRlKGluZm8uR2V0SXNvbGF0ZSgpKSk7CisgICAgdjg6OkhhbmRs
ZTx2ODo6T2JqZWN0PiBob2xkZXIgPSBpbmZvLlRoaXMoKS0+RmluZEluc3RhbmNlSW5Qcm90b3R5
cGVDaGFpbigke3Y4SW50ZXJmYWNlTmFtZX06OkdldFRlbXBsYXRlKGluZm8uR2V0SXNvbGF0ZSgp
LCB3b3JsZFR5cGUoaW5mby5HZXRJc29sYXRlKCkpKSk7CiAgICAgaWYgKGhvbGRlci5Jc0VtcHR5
KCkpIHsKICAgICAgICAgLy8gY2FuIG9ubHkgcmVhY2ggaGVyZSBieSAnb2JqZWN0Ll9fcHJvdG9f
Xy5mdW5jJywgYW5kIGl0IHNob3VsZCBwYXNzZWQKICAgICAgICAgLy8gZG9tYWluIHNlY3VyaXR5
IGNoZWNrIGFscmVhZHkKQEAgLTgyOSw3ICs4MjksNyBAQCBzdWIgR2VuZXJhdGVEb21haW5TYWZl
RnVuY3Rpb25TZXR0ZXIKICAgICBwdXNoKEBpbXBsQ29udGVudERlY2xzLCA8PEVORCk7CiBzdGF0
aWMgdm9pZCAke2ludGVyZmFjZU5hbWV9RG9tYWluU2FmZUZ1bmN0aW9uU2V0dGVyKHY4OjpMb2Nh
bDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6
OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsKLSAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGhvbGRl
ciA9IGluZm8uVGhpcygpLT5GaW5kSW5zdGFuY2VJblByb3RvdHlwZUNoYWluKCR7djhJbnRlcmZh
Y2VOYW1lfTo6R2V0VGVtcGxhdGUoaW5mby5HZXRJc29sYXRlKCkpKTsKKyAgICB2ODo6SGFuZGxl
PHY4OjpPYmplY3Q+IGhvbGRlciA9IGluZm8uVGhpcygpLT5GaW5kSW5zdGFuY2VJblByb3RvdHlw
ZUNoYWluKCR7djhJbnRlcmZhY2VOYW1lfTo6R2V0VGVtcGxhdGUoaW5mby5HZXRJc29sYXRlKCks
IHdvcmxkVHlwZShpbmZvLkdldElzb2xhdGUoKSkpKTsKICAgICBpZiAoaG9sZGVyLklzRW1wdHko
KSkKICAgICAgICAgcmV0dXJuOwogICAgICR7aW50ZXJmYWNlTmFtZX0qIGltcCA9ICR7djhJbnRl
cmZhY2VOYW1lfTo6dG9OYXRpdmUoaG9sZGVyKTsKQEAgLTk0OCw3ICs5NDgsNyBAQCBFTkQKICAg
ICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICMgcGVyZm9ybSBsb29rdXAgZmlyc3QKICAgICAg
ICAgICAgIHB1c2goQGltcGxDb250ZW50RGVjbHMsIDw8RU5EKTsKLSAgICB2ODo6SGFuZGxlPHY4
OjpPYmplY3Q+IGhvbGRlciA9IGluZm8uVGhpcygpLT5GaW5kSW5zdGFuY2VJblByb3RvdHlwZUNo
YWluKCR7djhJbnRlcmZhY2VOYW1lfTo6R2V0VGVtcGxhdGUoaW5mby5HZXRJc29sYXRlKCkpKTsK
KyAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGhvbGRlciA9IGluZm8uVGhpcygpLT5GaW5kSW5z
dGFuY2VJblByb3RvdHlwZUNoYWluKCR7djhJbnRlcmZhY2VOYW1lfTo6R2V0VGVtcGxhdGUoaW5m
by5HZXRJc29sYXRlKCksIHdvcmxkVHlwZShpbmZvLkdldElzb2xhdGUoKSkpKTsKICAgICBpZiAo
aG9sZGVyLklzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIHY4VW5kZWZpbmVkKCk7CiBFTkQKQEAg
LTIyNDMsNyArMjI0Myw3IEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gbmFtZWRDb25z
dHJ1Y3RvckNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiAgICAgcmV0dXJuIG5h
bWVkQ29uc3RydWN0b3IoYXJncyk7CiB9CiAKLXY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRl
bXBsYXRlPiAke3Y4SW50ZXJmYWNlTmFtZX1Db25zdHJ1Y3Rvcjo6R2V0VGVtcGxhdGUodjg6Oklz
b2xhdGUqIGlzb2xhdGUpCit2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gJHt2
OEludGVyZmFjZU5hbWV9Q29uc3RydWN0b3I6OkdldFRlbXBsYXRlKHY4OjpJc29sYXRlKiBpc29s
YXRlLCBXcmFwcGVyV29ybGRUeXBlIHdvcmxkVHlwZSkKIHsKICAgICBzdGF0aWMgdjg6OlBlcnNp
c3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IGNhY2hlZFRlbXBsYXRlOwogICAgIGlmICghY2Fj
aGVkVGVtcGxhdGUuSXNFbXB0eSgpKQpAQCAtMjI1NSw3ICsyMjU1LDcgQEAgdjg6OlBlcnNpc3Rl
bnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+ICR7djhJbnRlcmZhY2VOYW1lfUNvbnN0cnVjdG9yOjpH
ZXRUZW1wbGF0ZSgKICAgICB2ODo6TG9jYWw8djg6Ok9iamVjdFRlbXBsYXRlPiBpbnN0YW5jZSA9
IHJlc3VsdC0+SW5zdGFuY2VUZW1wbGF0ZSgpOwogICAgIGluc3RhbmNlLT5TZXRJbnRlcm5hbEZp
ZWxkQ291bnQoJHt2OEludGVyZmFjZU5hbWV9OjppbnRlcm5hbEZpZWxkQ291bnQpOwogICAgIHJl
c3VsdC0+U2V0Q2xhc3NOYW1lKHY4OjpTdHJpbmc6Ok5ld1N5bWJvbCgiJHtpbnRlcmZhY2VOYW1l
fSIpKTsKLSAgICByZXN1bHQtPkluaGVyaXQoJHt2OEludGVyZmFjZU5hbWV9OjpHZXRUZW1wbGF0
ZShpc29sYXRlKSk7CisgICAgcmVzdWx0LT5Jbmhlcml0KCR7djhJbnRlcmZhY2VOYW1lfTo6R2V0
VGVtcGxhdGUoaXNvbGF0ZSwgd29ybGRUeXBlKSk7CiAKICAgICBjYWNoZWRUZW1wbGF0ZSA9IHY4
OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPjo6TmV3KGlzb2xhdGUsIHJlc3VsdCk7
CiAgICAgcmV0dXJuIGNhY2hlZFRlbXBsYXRlOwpAQCAtMjY3OSw3ICsyNjc5LDcgQEAgc3ViIEdl
bmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAgICAgbXkgJHBhcmVudCA9ICRfOwogICAgICAgICBB
ZGRUb0ltcGxJbmNsdWRlcygiVjgke3BhcmVudH0uaCIpOwogICAgICAgICAkcGFyZW50Q2xhc3Mg
PSAiVjgiIC4gJHBhcmVudDsKLSAgICAgICAgJHBhcmVudENsYXNzVGVtcGxhdGUgPSAkcGFyZW50
Q2xhc3MgLiAiOjpHZXRUZW1wbGF0ZShpc29sYXRlKSI7CisgICAgICAgICRwYXJlbnRDbGFzc1Rl
bXBsYXRlID0gJHBhcmVudENsYXNzIC4gIjo6R2V0VGVtcGxhdGUoaXNvbGF0ZSwgd29ybGRUeXBl
KSI7CiAgICAgICAgIGxhc3Q7CiAgICAgfQogCkBAIC0yOTg4LDcgKzI5ODgsNyBAQCBFTkQKIAog
ICAgICMgR2VuZXJhdGUgdGhlIHRlbXBsYXRlIGNvbmZpZ3VyYXRpb24gbWV0aG9kCiAgICAgcHVz
aChAaW1wbENvbnRlbnQsICA8PEVORCk7Ci1zdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0
aW9uVGVtcGxhdGU+IENvbmZpZ3VyZSR7djhJbnRlcmZhY2VOYW1lfVRlbXBsYXRlKHY4OjpQZXJz
aXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBkZXNjLCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSkK
K3N0YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gQ29uZmlndXJlJHt2
OEludGVyZmFjZU5hbWV9VGVtcGxhdGUodjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxh
dGU+IGRlc2MsIHY4OjpJc29sYXRlKiBpc29sYXRlLCBXcmFwcGVyV29ybGRUeXBlIHdvcmxkVHlw
ZSkKIHsKICAgICBkZXNjLT5SZWFkT25seVByb3RvdHlwZSgpOwogCkBAIC0zMTU0LDcgKzMxNTQs
NyBAQCB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gJHt2OEludGVyZmFjZU5h
bWV9OjpHZXRSYXdUZW1wbGF0ZSh2ODo6SXNvbAogICAgIHJldHVybiB0ZW1wbDsKIH0KIAotdjg6
OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+ICR7djhJbnRlcmZhY2VOYW1lfTo6R2V0
VGVtcGxhdGUodjg6Oklzb2xhdGUqIGlzb2xhdGUpCit2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rp
b25UZW1wbGF0ZT4gJHt2OEludGVyZmFjZU5hbWV9OjpHZXRUZW1wbGF0ZSh2ODo6SXNvbGF0ZSog
aXNvbGF0ZSwgV3JhcHBlcldvcmxkVHlwZSB3b3JsZFR5cGUpCiB7CiAgICAgVjhQZXJJc29sYXRl
RGF0YSogZGF0YSA9IFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0ZSk7CiAgICAgVjhQZXJJ
c29sYXRlRGF0YTo6VGVtcGxhdGVNYXA6Oml0ZXJhdG9yIHJlc3VsdCA9IGRhdGEtPnRlbXBsYXRl
TWFwKCkuZmluZCgmaW5mbyk7CkBAIC0zMTYzLDcgKzMxNjMsNyBAQCB2ODo6UGVyc2lzdGVudDx2
ODo6RnVuY3Rpb25UZW1wbGF0ZT4gJHt2OEludGVyZmFjZU5hbWV9OjpHZXRUZW1wbGF0ZSh2ODo6
SXNvbGF0ZQogCiAgICAgdjg6OkhhbmRsZVNjb3BlIGhhbmRsZVNjb3BlOwogICAgIHY4OjpQZXJz
aXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiB0ZW1wbCA9Ci0gICAgICAgIENvbmZpZ3VyZSR7
djhJbnRlcmZhY2VOYW1lfVRlbXBsYXRlKEdldFJhd1RlbXBsYXRlKGlzb2xhdGUpLCBpc29sYXRl
KTsKKyAgICAgICAgQ29uZmlndXJlJHt2OEludGVyZmFjZU5hbWV9VGVtcGxhdGUoR2V0UmF3VGVt
cGxhdGUoaXNvbGF0ZSksIGlzb2xhdGUsIHdvcmxkVHlwZSk7CiAgICAgZGF0YS0+dGVtcGxhdGVN
YXAoKS5hZGQoJmluZm8sIHRlbXBsKTsKICAgICByZXR1cm4gdGVtcGw7CiB9CkBAIC0zMjEyLDcg
KzMyMTIsNyBAQCB2b2lkICR7djhJbnRlcmZhY2VOYW1lfTo6aW5zdGFsbFBlckNvbnRleHRQcm90
b3R5cGVQcm9wZXJ0aWVzKHY4OjpIYW5kbGU8djg6Ok9iagogRU5ECiAgICAgICAgICMgU2V0dXAg
dGhlIGVuYWJsZS1ieS1zZXR0aW5ncyBmdW5jdGlvbnMgaWYgd2UgaGF2ZSB0aGVtCiAgICAgICAg
IHB1c2goQGltcGxDb250ZW50LCAgPDxFTkQpOwotICAgIHY4OjpMb2NhbDx2ODo6U2lnbmF0dXJl
PiBkZWZhdWx0U2lnbmF0dXJlID0gdjg6OlNpZ25hdHVyZTo6TmV3KEdldFRlbXBsYXRlKGlzb2xh
dGUpKTsKKyAgICB2ODo6TG9jYWw8djg6OlNpZ25hdHVyZT4gZGVmYXVsdFNpZ25hdHVyZSA9IHY4
OjpTaWduYXR1cmU6Ok5ldyhHZXRUZW1wbGF0ZShpc29sYXRlLCB3b3JsZFR5cGUoaXNvbGF0ZSkp
KTsKICAgICBVTlVTRURfUEFSQU0oZGVmYXVsdFNpZ25hdHVyZSk7IC8vIEluIHNvbWUgY2FzZXMs
IGl0IHdpbGwgbm90IGJlIHVzZWQuCiAKICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250
ZXh0ID0gdG9TY3JpcHRFeGVjdXRpb25Db250ZXh0KHByb3RvLT5DcmVhdGlvbkNvbnRleHQoKSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9ET01XcmFwcGVyV29ybGQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvRE9NV3JhcHBlcldvcmxkLmNwcAppbmRl
eCBjNWYxNmQ3NjI3ZjAxMDM4MzdmYWIwZjg0ZDcyN2ExMTY1Zjc5NmJhLi5hYWI0MzI3MGQ1ZTE1
NjRjYjlhNjBkMWQwNjcxMTc5MmIyOTA0MmFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy92OC9ET01XcmFwcGVyV29ybGQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L0RPTVdyYXBwZXJXb3JsZC5jcHAKQEAgLTQxLDEyICs0MSwxOCBAQAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBpbnQgRE9NV3JhcHBlcldvcmxkOjppc29sYXRlZFdvcmxkQ291bnQgPSAw
Oworc3RhdGljIGJvb2wgaW5pdGlhbGl6aW5nV2luZG93ID0gZmFsc2U7CiAKIFBhc3NSZWZQdHI8
RE9NV3JhcHBlcldvcmxkPiAgRE9NV3JhcHBlcldvcmxkOjpjcmVhdGVVbmluaXRpYWxpemVkV29y
bGQoKQogewogICAgIHJldHVybiBhZG9wdFJlZihuZXcgRE9NV3JhcHBlcldvcmxkKHVuaW5pdGlh
bGl6ZWRXb3JsZElkLCB1bmluaXRpYWxpemVkRXh0ZW5zaW9uR3JvdXApKTsKIH0KIAordm9pZCBE
T01XcmFwcGVyV29ybGQ6OnNldEluaXRpYWxpemluZ1dpbmRvdyhib29sIGluaXRpYWxpemluZykK
K3sKKyAgICBpbml0aWFsaXppbmdXaW5kb3cgPSBpbml0aWFsaXppbmc7Cit9CisKIFBhc3NSZWZQ
dHI8RE9NV3JhcHBlcldvcmxkPiBET01XcmFwcGVyV29ybGQ6OmNyZWF0ZU1haW5Xb3JsZCgpCiB7
CiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBET01XcmFwcGVyV29ybGQobWFpbldvcmxkSWQsIG1h
aW5Xb3JsZEV4dGVuc2lvbkdyb3VwKSk7CkBAIC02NywxMCArNzMsMTIgQEAgRE9NV3JhcHBlcldv
cmxkKiBtYWluVGhyZWFkTm9ybWFsV29ybGQoKQogICAgIHJldHVybiBjYWNoZWROb3JtYWxXb3Js
ZC5nZXQoKTsKIH0KIAotdm9pZCBET01XcmFwcGVyV29ybGQ6OmFzc2VydENvbnRleHRIYXNDb3Jy
ZWN0UHJvdG90eXBlKHY4OjpIYW5kbGU8djg6OkNvbnRleHQ+IGNvbnRleHQpCitib29sIERPTVdy
YXBwZXJXb3JsZDo6Y29udGV4dEhhc0NvcnJlY3RQcm90b3R5cGUodjg6OkhhbmRsZTx2ODo6Q29u
dGV4dD4gY29udGV4dCkKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwotICAgIEFTU0VS
VChWOERPTVdyYXBwZXI6OmlzV3JhcHBlck9mVHlwZSh0b0lubmVyR2xvYmFsT2JqZWN0KGNvbnRl
eHQpLCAmVjhET01XaW5kb3c6OmluZm8pKTsKKyAgICBpZiAoaW5pdGlhbGl6aW5nV2luZG93KQor
ICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICByZXR1cm4gVjhET01XcmFwcGVyOjppc1dyYXBwZXJP
ZlR5cGUodG9Jbm5lckdsb2JhbE9iamVjdChjb250ZXh0KSwgJlY4RE9NV2luZG93OjppbmZvKTsK
IH0KIAogc3RhdGljIHZvaWQgaXNvbGF0ZWRXb3JsZFdlYWtDYWxsYmFjayh2ODo6SXNvbGF0ZSog
aXNvbGF0ZSwgdjg6OlBlcnNpc3RlbnQ8djg6OlZhbHVlPiBvYmplY3QsIHZvaWQqIHBhcmFtZXRl
cikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0RPTVdyYXBwZXJXb3Js
ZC5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvRE9NV3JhcHBlcldvcmxkLmgKaW5kZXgg
NDhjMjBlNDYyNTMyZTc5M2UzY2IyMTRjMjZhYTdmZDNlZGI1NmMyMS4uYmQyYTczZjdhMTBjZDE4
MGZmODI5MzM3YzMzZTU1OTBmZTJiOTM2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvRE9NV3JhcHBlcldvcmxkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvRE9NV3JhcHBlcldvcmxkLmgKQEAgLTYxLDEwICs2MSw5IEBAIHB1YmxpYzoKICAgICB2b2lk
IG1ha2VDb250ZXh0V2Vhayh2ODo6SGFuZGxlPHY4OjpDb250ZXh0Pik7CiAgICAgdm9pZCBzZXRJ
c29sYXRlZFdvcmxkRmllbGQodjg6OkhhbmRsZTx2ODo6Q29udGV4dD4pOwogCi0gICAgc3RhdGlj
IHZvaWQgYXNzZXJ0Q29udGV4dEhhc0NvcnJlY3RQcm90b3R5cGUodjg6OkhhbmRsZTx2ODo6Q29u
dGV4dD4pOwogICAgIHN0YXRpYyBET01XcmFwcGVyV29ybGQqIGdldFdvcmxkKHY4OjpIYW5kbGU8
djg6OkNvbnRleHQ+IGNvbnRleHQpCiAgICAgewotICAgICAgICBhc3NlcnRDb250ZXh0SGFzQ29y
cmVjdFByb3RvdHlwZShjb250ZXh0KTsKKyAgICAgICAgQVNTRVJUKGNvbnRleHRIYXNDb3JyZWN0
UHJvdG90eXBlKGNvbnRleHQpKTsKICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PERPTVdyYXBw
ZXJXb3JsZCo+KGNvbnRleHQtPkdldEFsaWduZWRQb2ludGVyRnJvbUVtYmVkZGVyRGF0YSh2OENv
bnRleHRJc29sYXRlZFdvcmxkKSk7CiAgICAgfQogICAgIHN0YXRpYyBET01XcmFwcGVyV29ybGQq
IGdldFdvcmxkV2l0aG91dENvbnRleHRDaGVjayh2ODo6SGFuZGxlPHY4OjpDb250ZXh0PiBjb250
ZXh0KQpAQCAtMTA3LDkgKzEwNiwxMiBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBtX2RvbURh
dGFTdG9yZS5nZXQoKTsKICAgICB9CiAKKyAgICBzdGF0aWMgdm9pZCBzZXRJbml0aWFsaXppbmdX
aW5kb3coYm9vbCk7CisKIHByaXZhdGU6CiAgICAgc3RhdGljIGludCBpc29sYXRlZFdvcmxkQ291
bnQ7CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8RE9NV3JhcHBlcldvcmxkPiBjcmVhdGVNYWluV29y
bGQoKTsKKyAgICBzdGF0aWMgYm9vbCBjb250ZXh0SGFzQ29ycmVjdFByb3RvdHlwZSh2ODo6SGFu
ZGxlPHY4OjpDb250ZXh0Pik7CiAKICAgICBET01XcmFwcGVyV29ybGQoaW50IHdvcmxkSWQsIGlu
dCBleHRlbnNpb25Hcm91cCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L0RpY3Rpb25hcnkuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvRGljdGlvbmFy
eS5jcHAKaW5kZXggOGE5Y2YxZGY2YmI1NWRiOTI3ZDNmNDEwZjNjNmI3YzlkMGRhM2VkMi4uMzRm
MTU4YWI2ZTMzM2Q5MTBlODNhMjFjMGY1YjM4YjBhODZkOWQ1ZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvdjgvRGljdGlvbmFyeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvdjgvRGljdGlvbmFyeS5jcHAKQEAgLTI1OSw3ICsyNTksNyBAQCBib29sIERpY3Rp
b25hcnk6OmdldChjb25zdCBTdHJpbmcmIGtleSwgUmVmUHRyPERPTVdpbmRvdz4mIHZhbHVlKSBj
b25zdAogICAgIHZhbHVlID0gMDsKICAgICBpZiAodjhWYWx1ZS0+SXNPYmplY3QoKSkgewogICAg
ICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBwZXIgPSB2ODo6SGFuZGxlPHY4OjpPYmpl
Y3Q+OjpDYXN0KHY4VmFsdWUpOwotICAgICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdpbmRv
dyA9IHdyYXBwZXItPkZpbmRJbnN0YW5jZUluUHJvdG90eXBlQ2hhaW4oVjhET01XaW5kb3c6Okdl
dFRlbXBsYXRlKG1faXNvbGF0ZSkpOworICAgICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdp
bmRvdyA9IHdyYXBwZXItPkZpbmRJbnN0YW5jZUluUHJvdG90eXBlQ2hhaW4oVjhET01XaW5kb3c6
OkdldFRlbXBsYXRlKG1faXNvbGF0ZSwgd29ybGRUeXBlKG1faXNvbGF0ZSkpKTsKICAgICAgICAg
aWYgKCF3aW5kb3cuSXNFbXB0eSgpKQogICAgICAgICAgICAgdmFsdWUgPSBWOERPTVdpbmRvdzo6
dG9OYXRpdmUod2luZG93KTsKICAgICB9CkBAIC0zNjMsNyArMzYzLDcgQEAgYm9vbCBEaWN0aW9u
YXJ5OjpnZXQoY29uc3QgU3RyaW5nJiBrZXksIFJlZlB0cjxUcmFja0Jhc2U+JiB2YWx1ZSkgY29u
c3QKIAogICAgICAgICAvLyBGSVhNRTogdGhpcyB3aWxsIG5lZWQgdG8gYmUgY2hhbmdlZCBzbyBp
dCBjYW4gYWxzbyByZXR1cm4gYW4gQXVkaW9UcmFjayBvciBhIFZpZGVvVHJhY2sgb25jZQogICAg
ICAgICAvLyB3ZSBhZGQgdGhlbS4KLSAgICAgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB0cmFj
ayA9IHdyYXBwZXItPkZpbmRJbnN0YW5jZUluUHJvdG90eXBlQ2hhaW4oVjhUZXh0VHJhY2s6Okdl
dFRlbXBsYXRlKG1faXNvbGF0ZSkpOworICAgICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHRy
YWNrID0gd3JhcHBlci0+RmluZEluc3RhbmNlSW5Qcm90b3R5cGVDaGFpbihWOFRleHRUcmFjazo6
R2V0VGVtcGxhdGUobV9pc29sYXRlLCB3b3JsZFR5cGUobV9pc29sYXRlKSkpOwogICAgICAgICBp
ZiAoIXRyYWNrLklzRW1wdHkoKSkKICAgICAgICAgICAgIHNvdXJjZSA9IFY4VGV4dFRyYWNrOjp0
b05hdGl2ZSh0cmFjayk7CiAgICAgfQpAQCAtNDM2LDcgKzQzNiw3IEBAIGJvb2wgRGljdGlvbmFy
eTo6Z2V0KGNvbnN0IFN0cmluZyYga2V5LCBSZWZQdHI8RXZlbnRUYXJnZXQ+JiB2YWx1ZSkgY29u
c3QKICAgICAvLyBleGlzdHMgb24gYSBwcm90b3R5cGUgY2hhaW4gb2YgdjhWYWx1ZS4KICAgICBp
ZiAodjhWYWx1ZS0+SXNPYmplY3QoKSkgewogICAgICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+
IHdyYXBwZXIgPSB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+OjpDYXN0KHY4VmFsdWUpOwotICAgICAg
ICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdpbmRvdyA9IHdyYXBwZXItPkZpbmRJbnN0YW5jZUlu
UHJvdG90eXBlQ2hhaW4oVjhET01XaW5kb3c6OkdldFRlbXBsYXRlKG1faXNvbGF0ZSkpOworICAg
ICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdpbmRvdyA9IHdyYXBwZXItPkZpbmRJbnN0YW5j
ZUluUHJvdG90eXBlQ2hhaW4oVjhET01XaW5kb3c6OkdldFRlbXBsYXRlKG1faXNvbGF0ZSwgd29y
bGRUeXBlKG1faXNvbGF0ZSkpKTsKICAgICAgICAgaWYgKCF3aW5kb3cuSXNFbXB0eSgpKSB7CiAg
ICAgICAgICAgICB2YWx1ZSA9IHRvV3JhcHBlclR5cGVJbmZvKHdpbmRvdyktPnRvRXZlbnRUYXJn
ZXQod2luZG93KTsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvdjgvUGFnZVNjcmlwdERlYnVnU2VydmVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L1BhZ2VTY3JpcHREZWJ1Z1NlcnZlci5jcHAKaW5kZXggYmE2ZTVm
OGM4Yzk2MDQxZDhhNzNkNzY4ZmIzODZjNmFkNTMwNTE5OC4uM2MzOWM4NTkxN2RhNzIzMGVkYTE2
ZTAzNDg2NWVmN2FkNjQ0MzUyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvUGFnZVNjcmlwdERlYnVnU2VydmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy92OC9QYWdlU2NyaXB0RGVidWdTZXJ2ZXIuY3BwCkBAIC01Niw3ICs1Niw3IEBAIHN0YXRpYyBG
cmFtZSogcmV0cmlldmVGcmFtZVdpdGhHbG9iYWxPYmplY3RDaGVjayh2ODo6SGFuZGxlPHY4OjpD
b250ZXh0PiBjb250ZXh0CiAgICAgaWYgKGdsb2JhbC5Jc0VtcHR5KCkpCiAgICAgICAgIHJldHVy
biAwOwogCi0gICAgZ2xvYmFsID0gZ2xvYmFsLT5GaW5kSW5zdGFuY2VJblByb3RvdHlwZUNoYWlu
KFY4RE9NV2luZG93OjpHZXRUZW1wbGF0ZShjb250ZXh0LT5HZXRJc29sYXRlKCkpKTsKKyAgICBn
bG9iYWwgPSBnbG9iYWwtPkZpbmRJbnN0YW5jZUluUHJvdG90eXBlQ2hhaW4oVjhET01XaW5kb3c6
OkdldFRlbXBsYXRlKGNvbnRleHQtPkdldElzb2xhdGUoKSwgd29ybGRUeXBlKGNvbnRleHQtPkdl
dElzb2xhdGUoKSkpKTsKICAgICBpZiAoZ2xvYmFsLklzRW1wdHkoKSkKICAgICAgICAgcmV0dXJu
IDA7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4QWRhcHRvckZ1
bmN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4QWRhcHRvckZ1bmN0aW9u
LmNwcAppbmRleCBiYmMxZDMyNzRmYzdkODlmMWRhNjM0YWRhNzc5YmJjNmU0NjJlY2RkLi5jNzJj
NzEzZWQwN2E5NTMyZjIxMTUwZWZiY2QwNjkwY2NkY2YwMzM3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy92OC9WOEFkYXB0b3JGdW5jdGlvbi5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvdjgvVjhBZGFwdG9yRnVuY3Rpb24uY3BwCkBAIC00MCw3ICs0MCw3IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogV3JhcHBlclR5cGVJbmZvIFY4QWRhcHRvckZ1bmN0aW9u
OjppbmZvID0geyBWOEFkYXB0b3JGdW5jdGlvbjo6Z2V0VGVtcGxhdGUsIDAsIDAsIDAsIDAsIDAs
IDAsIFdyYXBwZXJUeXBlT2JqZWN0UHJvdG90eXBlIH07CiAKLXY4OjpQZXJzaXN0ZW50PHY4OjpG
dW5jdGlvblRlbXBsYXRlPiBWOEFkYXB0b3JGdW5jdGlvbjo6Z2V0VGVtcGxhdGUodjg6Oklzb2xh
dGUqIGlzb2xhdGUpCit2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gVjhBZGFw
dG9yRnVuY3Rpb246OmdldFRlbXBsYXRlKHY4OjpJc29sYXRlKiBpc29sYXRlLCBXcmFwcGVyV29y
bGRUeXBlIHdvcmxkVHlwZSkKIHsKICAgICBBU1NFUlQoaXNvbGF0ZSk7CiAgICAgVjhQZXJJc29s
YXRlRGF0YSogZGF0YSA9IFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0ZSk7CkBAIC03Niw3
ICs3Niw3IEBAIHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uPiBWOEFkYXB0b3JGdW5jdGlvbjo6d3Jh
cCh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IG9iamVjdCwKIHsKICAgICBpZiAob2JqZWN0LklzRW1w
dHkoKSB8fCAhb2JqZWN0LT5Jc09iamVjdCgpKQogICAgICAgICByZXR1cm4gdjg6OkhhbmRsZTx2
ODo6RnVuY3Rpb24+KCk7Ci0gICAgdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb24+IGFkYXB0b3IgPSB2
ODo6SGFuZGxlPHY4OjpGdW5jdGlvbj46OkNhc3QoZ2V0VGVtcGxhdGUoaXNvbGF0ZSktPkdldEZ1
bmN0aW9uKCkpOworICAgIHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uPiBhZGFwdG9yID0gdjg6Okhh
bmRsZTx2ODo6RnVuY3Rpb24+OjpDYXN0KGdldFRlbXBsYXRlKGlzb2xhdGUsIHdvcmxkVHlwZShp
c29sYXRlKSktPkdldEZ1bmN0aW9uKCkpOwogICAgIGlmIChhZGFwdG9yLklzRW1wdHkoKSkKICAg
ICAgICAgcmV0dXJuIHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uPigpOwogICAgIGFkYXB0b3ItPlNl
dE5hbWUodjhTdHJpbmcobmFtZS5zdHJpbmcoKSwgaXNvbGF0ZSkpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhBZGFwdG9yRnVuY3Rpb24uaCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L1Y4QWRhcHRvckZ1bmN0aW9uLmgKaW5kZXggZTNkNmJiNTFmNDQwYTRj
NzcyNGFiY2UzZGU5MzA2OGRhZThjM2E1Ny4uNzgzNmViNGM2NWI5NDMzNDFmYzJhMzRjN2FkM2Vl
ZTRkOWZiZTU2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhBZGFw
dG9yRnVuY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEFkYXB0b3JG
dW5jdGlvbi5oCkBAIC01NSw3ICs1NSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgdjg6OkhhbmRs
ZTx2ODo6RnVuY3Rpb24+IHdyYXAodjg6OkhhbmRsZTx2ODo6T2JqZWN0PiwgY29uc3QgQXRvbWlj
U3RyaW5nJiBuYW1lLCB2ODo6SXNvbGF0ZSopOwogICAgIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpG
dW5jdGlvbj4gZ2V0KHY4OjpIYW5kbGU8djg6Ok9iamVjdD4pOwogCi0gICAgc3RhdGljIHY4OjpQ
ZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBnZXRUZW1wbGF0ZSh2ODo6SXNvbGF0ZSog
PSAwKTsKKyAgICBzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IGdl
dFRlbXBsYXRlKHY4OjpJc29sYXRlKiwgV3JhcHBlcldvcmxkVHlwZSk7CiAgICAgc3RhdGljIHY4
OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBjb25maWd1cmVUZW1wbGF0ZSh2ODo6
UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4pOwogICAgIHN0YXRpYyB2ODo6SGFuZGxl
PHY4OjpWYWx1ZT4gaW52b2NhdGlvbkNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmKTsKIH07
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEJpbmRpbmcuY3BwIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhCaW5kaW5nLmNwcAppbmRleCA4NjNmNGZkNmFj
MGE2NTViZTkyODRmN2NmOGNjMDQzOGQ0MjJmNTY3Li5hYWU2NzY3YjA5ODc1OTc0Yjk0MTEyMDRi
ZGE2MDI3Mzk5NGE0MTRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9W
OEJpbmRpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4QmluZGluZy5j
cHAKQEAgLTIyMSw3ICsyMjEsMTAgQEAgRE9NV2luZG93KiB0b0RPTVdpbmRvdyh2ODo6SGFuZGxl
PHY4OjpDb250ZXh0PiBjb250ZXh0KQogewogICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gZ2xv
YmFsID0gY29udGV4dC0+R2xvYmFsKCk7CiAgICAgQVNTRVJUKCFnbG9iYWwuSXNFbXB0eSgpKTsK
LSAgICBnbG9iYWwgPSBnbG9iYWwtPkZpbmRJbnN0YW5jZUluUHJvdG90eXBlQ2hhaW4oVjhET01X
aW5kb3c6OkdldFRlbXBsYXRlKGNvbnRleHQtPkdldElzb2xhdGUoKSkpOworICAgIGdsb2JhbCA9
IGdsb2JhbC0+RmluZEluc3RhbmNlSW5Qcm90b3R5cGVDaGFpbihWOERPTVdpbmRvdzo6R2V0VGVt
cGxhdGUoY29udGV4dC0+R2V0SXNvbGF0ZSgpLCBNYWluV29ybGQpKTsKKyAgICBpZiAoIWdsb2Jh
bC5Jc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBWOERPTVdpbmRvdzo6dG9OYXRpdmUoZ2xvYmFs
KTsKKyAgICBnbG9iYWwgPSBnbG9iYWwtPkZpbmRJbnN0YW5jZUluUHJvdG90eXBlQ2hhaW4oVjhE
T01XaW5kb3c6OkdldFRlbXBsYXRlKGNvbnRleHQtPkdldElzb2xhdGUoKSwgSXNvbGF0ZWRXb3Js
ZCkpOwogICAgIEFTU0VSVCghZ2xvYmFsLklzRW1wdHkoKSk7CiAgICAgcmV0dXJuIFY4RE9NV2lu
ZG93Ojp0b05hdGl2ZShnbG9iYWwpOwogfQpAQCAtMjI5LDExICsyMzIsMTQgQEAgRE9NV2luZG93
KiB0b0RPTVdpbmRvdyh2ODo6SGFuZGxlPHY4OjpDb250ZXh0PiBjb250ZXh0KQogU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCogdG9TY3JpcHRFeGVjdXRpb25Db250ZXh0KHY4OjpIYW5kbGU8djg6OkNv
bnRleHQ+IGNvbnRleHQpCiB7CiAgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBnbG9iYWwgPSBj
b250ZXh0LT5HbG9iYWwoKTsKLSAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdpbmRvd1dyYXBw
ZXIgPSBnbG9iYWwtPkZpbmRJbnN0YW5jZUluUHJvdG90eXBlQ2hhaW4oVjhET01XaW5kb3c6Okdl
dFRlbXBsYXRlKGNvbnRleHQtPkdldElzb2xhdGUoKSkpOworICAgIHY4OjpIYW5kbGU8djg6Ok9i
amVjdD4gd2luZG93V3JhcHBlciA9IGdsb2JhbC0+RmluZEluc3RhbmNlSW5Qcm90b3R5cGVDaGFp
bihWOERPTVdpbmRvdzo6R2V0VGVtcGxhdGUoY29udGV4dC0+R2V0SXNvbGF0ZSgpLCBNYWluV29y
bGQpKTsKKyAgICBpZiAoIXdpbmRvd1dyYXBwZXIuSXNFbXB0eSgpKQorICAgICAgICByZXR1cm4g
VjhET01XaW5kb3c6OnRvTmF0aXZlKHdpbmRvd1dyYXBwZXIpLT5zY3JpcHRFeGVjdXRpb25Db250
ZXh0KCk7CisgICAgd2luZG93V3JhcHBlciA9IGdsb2JhbC0+RmluZEluc3RhbmNlSW5Qcm90b3R5
cGVDaGFpbihWOERPTVdpbmRvdzo6R2V0VGVtcGxhdGUoY29udGV4dC0+R2V0SXNvbGF0ZSgpLCBJ
c29sYXRlZFdvcmxkKSk7CiAgICAgaWYgKCF3aW5kb3dXcmFwcGVyLklzRW1wdHkoKSkKICAgICAg
ICAgcmV0dXJuIFY4RE9NV2luZG93Ojp0b05hdGl2ZSh3aW5kb3dXcmFwcGVyKS0+c2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpOwogI2lmIEVOQUJMRShXT1JLRVJTKQotICAgIHY4OjpIYW5kbGU8djg6
Ok9iamVjdD4gd29ya2VyV3JhcHBlciA9IGdsb2JhbC0+RmluZEluc3RhbmNlSW5Qcm90b3R5cGVD
aGFpbihWOFdvcmtlckNvbnRleHQ6OkdldFRlbXBsYXRlKGNvbnRleHQtPkdldElzb2xhdGUoKSkp
OworICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd29ya2VyV3JhcHBlciA9IGdsb2JhbC0+Rmlu
ZEluc3RhbmNlSW5Qcm90b3R5cGVDaGFpbihWOFdvcmtlckNvbnRleHQ6OkdldFRlbXBsYXRlKGNv
bnRleHQtPkdldElzb2xhdGUoKSwgV29ya2VyV29ybGQpKTsKICAgICBpZiAoIXdvcmtlcldyYXBw
ZXIuSXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gVjhXb3JrZXJDb250ZXh0Ojp0b05hdGl2ZSh3
b3JrZXJXcmFwcGVyKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwogI2VuZGlmCkBAIC0zMDUs
NCArMzExLDI5IEBAIHZvaWQgY3Jhc2hJZlY4SXNEZWFkKCkKICAgICB9CiB9CiAKK1dyYXBwZXJX
b3JsZFR5cGUgd29ybGRUeXBlKHY4OjpJc29sYXRlKiBpc29sYXRlKQoreworICAgIFY4UGVySXNv
bGF0ZURhdGEqIGRhdGEgPSBpc29sYXRlID8gVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRl
KSA6IFY4UGVySXNvbGF0ZURhdGE6OmN1cnJlbnQoKTsKKyAgICAvLyBUT0RPOiBSZW5hbWUgZG9t
RGF0YVN0b3JlKCkgdG8gd29ya2VyRGF0YVN0b3JlKCkuCisgICAgaWYgKFVOTElLRUxZKCEhZGF0
YS0+ZG9tRGF0YVN0b3JlKCkpKQorICAgICAgICByZXR1cm4gV29ya2VyV29ybGQ7CisKKyAgICBp
ZiAoRE9NV3JhcHBlcldvcmxkOjppc29sYXRlZFdvcmxkc0V4aXN0KCkpIHsKKyAgICAgICAgRE9N
V3JhcHBlcldvcmxkKiBpc29sYXRlZFdvcmxkID0gRE9NV3JhcHBlcldvcmxkOjpnZXRXb3JsZCh2
ODo6Q29udGV4dDo6R2V0RW50ZXJlZCgpKTsKKyAgICAgICAgaWYgKFVOTElLRUxZKCEhaXNvbGF0
ZWRXb3JsZCkpCisgICAgICAgICAgICByZXR1cm4gSXNvbGF0ZWRXb3JsZDsKKyAgICB9CisgICAg
cmV0dXJuIE1haW5Xb3JsZDsKK30KKworV3JhcHBlcldvcmxkVHlwZSBtYWluSXNvbGF0ZVdvcmxk
VHlwZSh2ODo6SXNvbGF0ZSogaXNvbGF0ZSkKK3sKKyAgICBpZiAoRE9NV3JhcHBlcldvcmxkOjpp
c29sYXRlZFdvcmxkc0V4aXN0KCkpIHsKKyAgICAgICAgRE9NV3JhcHBlcldvcmxkKiBpc29sYXRl
ZFdvcmxkID0gRE9NV3JhcHBlcldvcmxkOjpnZXRXb3JsZCh2ODo6Q29udGV4dDo6R2V0RW50ZXJl
ZCgpKTsKKyAgICAgICAgaWYgKFVOTElLRUxZKCEhaXNvbGF0ZWRXb3JsZCkpCisgICAgICAgICAg
ICByZXR1cm4gSXNvbGF0ZWRXb3JsZDsKKyAgICB9CisgICAgcmV0dXJuIE1haW5Xb3JsZDsKK30K
KwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvVjhCaW5kaW5nLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEJpbmRp
bmcuaAppbmRleCA5NjJiMDg2OTllODFlZmE3MDE1NGMzZDBhYWE1MTM1MTZhMjYxOTk1Li5kMjIz
NjU3Y2RlZjIyOGRjNzc1ZDdmN2E3MGNmY2NiYWFiNzM0MjA3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy92OC9WOEJpbmRpbmcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9WOEJpbmRpbmcuaApAQCAtNDc0LDYgKzQ3NCw5IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogICAgIHZvaWQgY3Jhc2hJZlY4SXNEZWFkKCk7CiAKKyAgICBXcmFwcGVyV29ybGRUeXBl
IHdvcmxkVHlwZSh2ODo6SXNvbGF0ZSopOworICAgIFdyYXBwZXJXb3JsZFR5cGUgbWFpbklzb2xh
dGVXb3JsZFR5cGUodjg6Oklzb2xhdGUqKTsKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAj
ZW5kaWYgLy8gVjhCaW5kaW5nX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L1Y4RE9NV2luZG93U2hlbGwuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhE
T01XaW5kb3dTaGVsbC5jcHAKaW5kZXggOTU0NjkwNDE4ZDBmNTdiNWY3YzdkOGEyYmNlOGEyMjg2
ZDNlM2E1ZS4uYTk4OTdmZTI0MTIzM2M4NDAyN2RkOWQyYjliZTIyZTAyOTU3YjhiYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhET01XaW5kb3dTaGVsbC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhET01XaW5kb3dTaGVsbC5jcHAKQEAgLTM0
LDYgKzM0LDcgQEAKICNpbmNsdWRlICJDb250ZW50U2VjdXJpdHlQb2xpY3kuaCIKICNpbmNsdWRl
ICJEYXRlRXh0ZW5zaW9uLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnRMb2FkZXIuaCIKKyNpbmNsdWRl
ICJET01XcmFwcGVyV29ybGQuaCIKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIkZyYW1l
TG9hZGVyQ2xpZW50LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgiCkBA
IC0xNTMsNyArMTU0LDcgQEAgdm9pZCBWOERPTVdpbmRvd1NoZWxsOjpjbGVhckZvck5hdmlnYXRp
b24oKQogICAgIC8vIHdpbGwgYmUgcHJvdGVjdGVkIGJ5IHRoZSBzZWN1cml0eSBjaGVja3Mgb24g
dGhlIERPTVdpbmRvdyB3cmFwcGVyLgogICAgIGNsZWFyRG9jdW1lbnRQcm9wZXJ0eSgpOwogCi0g
ICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3aW5kb3dXcmFwcGVyID0gbV9nbG9iYWwtPkZpbmRJ
bnN0YW5jZUluUHJvdG90eXBlQ2hhaW4oVjhET01XaW5kb3c6OkdldFRlbXBsYXRlKG1faXNvbGF0
ZSkpOworICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd2luZG93V3JhcHBlciA9IG1fZ2xvYmFs
LT5GaW5kSW5zdGFuY2VJblByb3RvdHlwZUNoYWluKFY4RE9NV2luZG93OjpHZXRUZW1wbGF0ZSht
X2lzb2xhdGUsIG1haW5Jc29sYXRlV29ybGRUeXBlKG1faXNvbGF0ZSkpKTsKICAgICBBU1NFUlQo
IXdpbmRvd1dyYXBwZXIuSXNFbXB0eSgpKTsKICAgICB3aW5kb3dXcmFwcGVyLT5UdXJuT25BY2Nl
c3NDaGVjaygpOwogICAgIG1fY29udGV4dC0+RGV0YWNoR2xvYmFsKCk7CkBAIC0zMTAsNiArMzEx
LDcgQEAgdm9pZCBWOERPTVdpbmRvd1NoZWxsOjpjcmVhdGVDb250ZXh0KCkKIAogYm9vbCBWOERP
TVdpbmRvd1NoZWxsOjppbnN0YWxsRE9NV2luZG93KCkKIHsKKyAgICBET01XcmFwcGVyV29ybGQ6
OnNldEluaXRpYWxpemluZ1dpbmRvdyh0cnVlKTsKICAgICBET01XaW5kb3cqIHdpbmRvdyA9IG1f
ZnJhbWUtPmRvY3VtZW50KCktPmRvbVdpbmRvdygpOwogICAgIHY4OjpMb2NhbDx2ODo6T2JqZWN0
PiB3aW5kb3dXcmFwcGVyID0gVjhPYmplY3RDb25zdHJ1Y3Rvcjo6bmV3SW5zdGFuY2UoVjhQZXJD
b250ZXh0RGF0YTo6ZnJvbShtX2NvbnRleHQuZ2V0KCkpLT5jb25zdHJ1Y3RvckZvclR5cGUoJlY4
RE9NV2luZG93OjppbmZvKSk7CiAgICAgaWYgKHdpbmRvd1dyYXBwZXIuSXNFbXB0eSgpKQpAQCAt
MzM2LDYgKzMzOCw3IEBAIGJvb2wgVjhET01XaW5kb3dTaGVsbDo6aW5zdGFsbERPTVdpbmRvdygp
CiAgICAgVjhET01XcmFwcGVyOjpzZXROYXRpdmVJbmZvKGlubmVyR2xvYmFsT2JqZWN0LCAmVjhE
T01XaW5kb3c6OmluZm8sIHdpbmRvdyk7CiAgICAgaW5uZXJHbG9iYWxPYmplY3QtPlNldFByb3Rv
dHlwZSh3aW5kb3dXcmFwcGVyKTsKICAgICBWOERPTVdyYXBwZXI6OmFzc29jaWF0ZU9iamVjdFdp
dGhXcmFwcGVyKFBhc3NSZWZQdHI8RE9NV2luZG93Pih3aW5kb3cpLCAmVjhET01XaW5kb3c6Omlu
Zm8sIHdpbmRvd1dyYXBwZXIsIG1faXNvbGF0ZSwgV3JhcHBlckNvbmZpZ3VyYXRpb246OkRlcGVu
ZGVudCk7CisgICAgRE9NV3JhcHBlcldvcmxkOjpzZXRJbml0aWFsaXppbmdXaW5kb3coZmFsc2Up
OwogICAgIHJldHVybiB0cnVlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9WOERPTVdyYXBwZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhE
T01XcmFwcGVyLmNwcAppbmRleCA0ZDhjMjI2ZjNlMjcyZjBlMzU5NjIxZThkNDA2OGMzMTk0YjUz
ZmI4Li5iY2YyOGVmOGM4Zjk2MDIyZTA5MDA2MDBkZWIwNTk4MGU4ZGFmYjgyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTVdyYXBwZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NV3JhcHBlci5jcHAKQEAgLTc5LDcgKzc5LDcgQEAg
djg6OkxvY2FsPHY4OjpPYmplY3Q+IFY4RE9NV3JhcHBlcjo6Y3JlYXRlV3JhcHBlcih2ODo6SGFu
ZGxlPHY4OjpPYmplY3Q+IGNyZWF0aW8KICAgICBWOFdyYXBwZXJJbnN0YW50aWF0aW9uU2NvcGUg
c2NvcGUoY3JlYXRpb25Db250ZXh0KTsKIAogICAgIFY4UGVyQ29udGV4dERhdGEqIHBlckNvbnRl
eHREYXRhID0gVjhQZXJDb250ZXh0RGF0YTo6ZnJvbShzY29wZS5jb250ZXh0KCkpOwotICAgIHY4
OjpMb2NhbDx2ODo6T2JqZWN0PiB3cmFwcGVyID0gcGVyQ29udGV4dERhdGEgPyBwZXJDb250ZXh0
RGF0YS0+Y3JlYXRlV3JhcHBlckZyb21DYWNoZSh0eXBlKSA6IFY4T2JqZWN0Q29uc3RydWN0b3I6
Om5ld0luc3RhbmNlKHR5cGUtPmdldFRlbXBsYXRlKGlzb2xhdGUpLT5HZXRGdW5jdGlvbigpKTsK
KyAgICB2ODo6TG9jYWw8djg6Ok9iamVjdD4gd3JhcHBlciA9IHBlckNvbnRleHREYXRhID8gcGVy
Q29udGV4dERhdGEtPmNyZWF0ZVdyYXBwZXJGcm9tQ2FjaGUodHlwZSkgOiBWOE9iamVjdENvbnN0
cnVjdG9yOjpuZXdJbnN0YW5jZSh0eXBlLT5nZXRUZW1wbGF0ZShpc29sYXRlLCBtYWluSXNvbGF0
ZVdvcmxkVHlwZShpc29sYXRlKSktPkdldEZ1bmN0aW9uKCkpOwogCiAgICAgaWYgKHR5cGUgPT0g
JlY4SFRNTERvY3VtZW50OjppbmZvICYmICF3cmFwcGVyLklzRW1wdHkoKSkKICAgICAgICAgd3Jh
cHBlciA9IFY4SFRNTERvY3VtZW50Ojp3cmFwSW5TaGFkb3dPYmplY3Qod3JhcHBlciwgc3RhdGlj
X2Nhc3Q8Tm9kZSo+KGltcGwpLCBpc29sYXRlKTsKQEAgLTEzMyw3ICsxMzMsNiBAQCBib29sIFY4
RE9NV3JhcHBlcjo6aXNXcmFwcGVyT2ZUeXBlKHY4OjpIYW5kbGU8djg6OlZhbHVlPiB2YWx1ZSwg
V3JhcHBlclR5cGVJbmZvKgogICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd3JhcHBlciA9IHY4
OjpIYW5kbGU8djg6Ok9iamVjdD46OkNhc3QodmFsdWUpOwogICAgIEFTU0VSVCh3cmFwcGVyLT5J
bnRlcm5hbEZpZWxkQ291bnQoKSA+PSB2OERlZmF1bHRXcmFwcGVySW50ZXJuYWxGaWVsZENvdW50
KTsKICAgICBBU1NFUlQod3JhcHBlci0+R2V0QWxpZ25lZFBvaW50ZXJGcm9tSW50ZXJuYWxGaWVs
ZCh2OERPTVdyYXBwZXJPYmplY3RJbmRleCkpOwotCiAgICAgV3JhcHBlclR5cGVJbmZvKiB0eXBl
SW5mbyA9IHN0YXRpY19jYXN0PFdyYXBwZXJUeXBlSW5mbyo+KHdyYXBwZXItPkdldEFsaWduZWRQ
b2ludGVyRnJvbUludGVybmFsRmllbGQodjhET01XcmFwcGVyVHlwZUluZGV4KSk7CiAgICAgcmV0
dXJuIHR5cGVJbmZvID09IHR5cGU7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9WOEluaXRpYWxpemVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4
SW5pdGlhbGl6ZXIuY3BwCmluZGV4IGNiM2JjNmRjMWVjY2EyYWJiOTQ1Yjk5ZTM0NzQwNDRkMjIz
MjhiMTYuLjJkZmEwYTQwM2Q3NGQyN2I2ZjdkOTA1YmU4N2FlN2Q5ODk0NTliMzggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4SW5pdGlhbGl6ZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4SW5pdGlhbGl6ZXIuY3BwCkBAIC01MSw3ICs1MSw3
IEBAIHN0YXRpYyBGcmFtZSogZmluZEZyYW1lKHY4OjpMb2NhbDx2ODo6T2JqZWN0PiBob3N0LCB2
ODo6TG9jYWw8djg6OlZhbHVlPiBkYXRhLCB2CiAgICAgV3JhcHBlclR5cGVJbmZvKiB0eXBlID0g
V3JhcHBlclR5cGVJbmZvOjp1bndyYXAoZGF0YSk7CiAKICAgICBpZiAoVjhET01XaW5kb3c6Omlu
Zm8uZXF1YWxzKHR5cGUpKSB7Ci0gICAgICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd2luZG93
V3JhcHBlciA9IGhvc3QtPkZpbmRJbnN0YW5jZUluUHJvdG90eXBlQ2hhaW4oVjhET01XaW5kb3c6
OkdldFRlbXBsYXRlKGlzb2xhdGUpKTsKKyAgICAgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3
aW5kb3dXcmFwcGVyID0gaG9zdC0+RmluZEluc3RhbmNlSW5Qcm90b3R5cGVDaGFpbihWOERPTVdp
bmRvdzo6R2V0VGVtcGxhdGUoaXNvbGF0ZSwgd29ybGRUeXBlKGlzb2xhdGUpKSk7CiAgICAgICAg
IGlmICh3aW5kb3dXcmFwcGVyLklzRW1wdHkoKSkKICAgICAgICAgICAgIHJldHVybiAwOwogICAg
ICAgICByZXR1cm4gVjhET01XaW5kb3c6OnRvTmF0aXZlKHdpbmRvd1dyYXBwZXIpLT5mcmFtZSgp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhQZXJDb250ZXh0RGF0
YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOFBlckNvbnRleHREYXRhLmNwcApp
bmRleCBiMzkyMzIzYThmZGU3ZWM3NGEzM2YwMmFhOTVjNjE2MmVhODY1NjQ3Li44NmVlYjEyM2Ni
OGM2YzYzMWQ2MmRlZThlZjU4NGRkOWQ1MDIzOGE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy92OC9WOFBlckNvbnRleHREYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy92OC9WOFBlckNvbnRleHREYXRhLmNwcApAQCAtMTE1LDcgKzExNSw3IEBAIHY4OjpM
b2NhbDx2ODo6RnVuY3Rpb24+IFY4UGVyQ29udGV4dERhdGE6OmNvbnN0cnVjdG9yRm9yVHlwZVNs
b3dDYXNlKFdyYXBwZXJUeXBlCiAgICAgQVNTRVJUKCFtX29iamVjdFByb3RvdHlwZS5pc0VtcHR5
KCkpOwogCiAgICAgdjg6OkNvbnRleHQ6OlNjb3BlIHNjb3BlKG1fY29udGV4dCk7Ci0gICAgdjg6
OkhhbmRsZTx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gZnVuY3Rpb25UZW1wbGF0ZSA9IHR5cGUtPmdl
dFRlbXBsYXRlKG1fY29udGV4dC0+R2V0SXNvbGF0ZSgpKTsKKyAgICB2ODo6SGFuZGxlPHY4OjpG
dW5jdGlvblRlbXBsYXRlPiBmdW5jdGlvblRlbXBsYXRlID0gdHlwZS0+Z2V0VGVtcGxhdGUobV9j
b250ZXh0LT5HZXRJc29sYXRlKCksIHdvcmxkVHlwZShtX2NvbnRleHQtPkdldElzb2xhdGUoKSkp
OwogICAgIC8vIEdldHRpbmcgdGhlIGZ1bmN0aW9uIG1pZ2h0IGZhaWwgaWYgd2UncmUgcnVubmlu
ZyBvdXQgb2Ygc3RhY2sgb3IgbWVtb3J5LgogICAgIHY4OjpUcnlDYXRjaCB0cnlDYXRjaDsKICAg
ICB2ODo6TG9jYWw8djg6OkZ1bmN0aW9uPiBmdW5jdGlvbiA9IGZ1bmN0aW9uVGVtcGxhdGUtPkdl
dEZ1bmN0aW9uKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9Xb3Jr
ZXJTY3JpcHRDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1dvcmtl
clNjcmlwdENvbnRyb2xsZXIuY3BwCmluZGV4IGJjNDYwOTM4Mjc5ZmU0ZGYzM2EyYTgxNTAwYzY4
YzFhNjMwNTc5OTEuLjczODU2MjBjZmNiNzlhODc3OTkzZDU5MTY0YjM5ODZiYTU2ZDc5ZDMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1dvcmtlclNjcmlwdENvbnRyb2xs
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1dvcmtlclNjcmlwdENvbnRy
b2xsZXIuY3BwCkBAIC0yNDksNyArMjQ5LDcgQEAgV29ya2VyU2NyaXB0Q29udHJvbGxlciogV29y
a2VyU2NyaXB0Q29udHJvbGxlcjo6Y29udHJvbGxlckZvckNvbnRleHQoKQogICAgICAgICByZXR1
cm4gMDsKICAgICB2ODo6SGFuZGxlPHY4OjpDb250ZXh0PiBjb250ZXh0ID0gdjg6OkNvbnRleHQ6
OkdldEN1cnJlbnQoKTsKICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGdsb2JhbCA9IGNvbnRl
eHQtPkdsb2JhbCgpOwotICAgIGdsb2JhbCA9IGdsb2JhbC0+RmluZEluc3RhbmNlSW5Qcm90b3R5
cGVDaGFpbihWOFdvcmtlckNvbnRleHQ6OkdldFRlbXBsYXRlKGNvbnRleHQtPkdldElzb2xhdGUo
KSkpOworICAgIGdsb2JhbCA9IGdsb2JhbC0+RmluZEluc3RhbmNlSW5Qcm90b3R5cGVDaGFpbihW
OFdvcmtlckNvbnRleHQ6OkdldFRlbXBsYXRlKGNvbnRleHQtPkdldElzb2xhdGUoKSwgV29ya2Vy
V29ybGQpKTsKICAgICAvLyBSZXR1cm4gMCBpZiB0aGUgY3VycmVudCBleGVjdXRpbmcgY29udGV4
dCBpcyBub3QgdGhlIHdvcmtlciBjb250ZXh0LgogICAgIGlmIChnbG9iYWwuSXNFbXB0eSgpKQog
ICAgICAgICByZXR1cm4gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L1dyYXBwZXJUeXBlSW5mby5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvV3JhcHBlclR5
cGVJbmZvLmgKaW5kZXggYjMxMGFmOWE3ZDJmODAxMjA0NDg3ODZhODkwZjNiZmE4NjI2NjUyNi4u
ZGMyYTVlZWU3MDEyYmZkNDg3MTA2M2QxNjQ2NTlkMzhlOGUyMDYyMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvV3JhcHBlclR5cGVJbmZvLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvdjgvV3JhcHBlclR5cGVJbmZvLmgKQEAgLTQ3LDcgKzQ3LDEzIEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKICAgICBzdGF0aWMgY29uc3QgdWludDE2X3QgdjhET01Ob2RlQ2xh
c3NJZCA9IDE7CiAgICAgc3RhdGljIGNvbnN0IHVpbnQxNl90IHY4RE9NT2JqZWN0Q2xhc3NJZCA9
IDI7CiAKLSAgICB0eXBlZGVmIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiAo
KkdldFRlbXBsYXRlRnVuY3Rpb24pKHY4OjpJc29sYXRlKik7CisgICAgZW51bSBXcmFwcGVyV29y
bGRUeXBlIHsKKyAgICAgICAgTWFpbldvcmxkLAorICAgICAgICBJc29sYXRlZFdvcmxkLAorICAg
ICAgICBXb3JrZXJXb3JsZAorICAgIH07CisKKyAgICB0eXBlZGVmIHY4OjpQZXJzaXN0ZW50PHY4
OjpGdW5jdGlvblRlbXBsYXRlPiAoKkdldFRlbXBsYXRlRnVuY3Rpb24pKHY4OjpJc29sYXRlKiwg
V3JhcHBlcldvcmxkVHlwZSk7CiAgICAgdHlwZWRlZiB2b2lkICgqRGVyZWZPYmplY3RGdW5jdGlv
bikodm9pZCopOwogICAgIHR5cGVkZWYgQWN0aXZlRE9NT2JqZWN0KiAoKlRvQWN0aXZlRE9NT2Jq
ZWN0RnVuY3Rpb24pKHY4OjpIYW5kbGU8djg6Ok9iamVjdD4pOwogICAgIHR5cGVkZWYgRXZlbnRU
YXJnZXQqICgqVG9FdmVudFRhcmdldEZ1bmN0aW9uKSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+KTsK
QEAgLTg1LDcgKzkxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgICAgICB9CiAgICAgICAgIAotICAgICAgICB2ODo6UGVyc2lzdGVudDx2ODo6
RnVuY3Rpb25UZW1wbGF0ZT4gZ2V0VGVtcGxhdGUodjg6Oklzb2xhdGUqIGlzb2xhdGUpIHsgcmV0
dXJuIGdldFRlbXBsYXRlRnVuY3Rpb24oaXNvbGF0ZSk7IH0KKyAgICAgICAgdjg6OlBlcnNpc3Rl
bnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IGdldFRlbXBsYXRlKHY4OjpJc29sYXRlKiBpc29sYXRl
LCBXcmFwcGVyV29ybGRUeXBlIHdvcmxkVHlwZSkgeyByZXR1cm4gZ2V0VGVtcGxhdGVGdW5jdGlv
bihpc29sYXRlLCB3b3JsZFR5cGUpOyB9CiAgICAgICAgIAogICAgICAgICB2b2lkIGRlcmVmT2Jq
ZWN0KHZvaWQqIG9iamVjdCkKICAgICAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvdjgvY3VzdG9tL1Y4RE9NV2luZG93Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERPTVdpbmRvd0N1c3RvbS5jcHAKaW5kZXggMTVkOGJiMWQ2
ZjBkZWU4N2UxNzQ4ZWQwNTBlM2ZhOGZjYWUxOTJkMy4uMDk0ZTM5MGE3NDRlY2U4MTJhODQ1YTdk
ZDRjYWRkM2IxZDY3NWI1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
Y3VzdG9tL1Y4RE9NV2luZG93Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy92OC9jdXN0b20vVjhET01XaW5kb3dDdXN0b20uY3BwCkBAIC0xNDYsNyArMTQ2LDcgQEAgdjg6
OkhhbmRsZTx2ODo6VmFsdWU+IFdpbmRvd1NldFRpbWVvdXRJbXBsKGNvbnN0IHY4OjpBcmd1bWVu
dHMmIGFyZ3MsIGJvb2wgc2luZ2wKIAogdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4RE9NV2luZG93
OjpldmVudEF0dHJHZXR0ZXJDdXN0b20odjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0
IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7Ci0gICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBo
b2xkZXIgPSBpbmZvLlRoaXMoKS0+RmluZEluc3RhbmNlSW5Qcm90b3R5cGVDaGFpbihWOERPTVdp
bmRvdzo6R2V0VGVtcGxhdGUoaW5mby5HZXRJc29sYXRlKCkpKTsKKyAgICB2ODo6SGFuZGxlPHY4
OjpPYmplY3Q+IGhvbGRlciA9IGluZm8uVGhpcygpLT5GaW5kSW5zdGFuY2VJblByb3RvdHlwZUNo
YWluKFY4RE9NV2luZG93OjpHZXRUZW1wbGF0ZShpbmZvLkdldElzb2xhdGUoKSwgd29ybGRUeXBl
KGluZm8uR2V0SXNvbGF0ZSgpKSkpOwogICAgIGlmIChob2xkZXIuSXNFbXB0eSgpKQogICAgICAg
ICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOwogCkBAIC0xNjgsNyArMTY4LDcgQEAgdjg6OkhhbmRs
ZTx2ODo6VmFsdWU+IFY4RE9NV2luZG93OjpldmVudEF0dHJHZXR0ZXJDdXN0b20odjg6OkxvY2Fs
PHY4OjpTdHJpbmc+IG4KIAogdm9pZCBWOERPTVdpbmRvdzo6ZXZlbnRBdHRyU2V0dGVyQ3VzdG9t
KHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwg
Y29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsKLSAgICB2ODo6SGFuZGxlPHY4OjpPYmpl
Y3Q+IGhvbGRlciA9IGluZm8uVGhpcygpLT5GaW5kSW5zdGFuY2VJblByb3RvdHlwZUNoYWluKFY4
RE9NV2luZG93OjpHZXRUZW1wbGF0ZShpbmZvLkdldElzb2xhdGUoKSkpOworICAgIHY4OjpIYW5k
bGU8djg6Ok9iamVjdD4gaG9sZGVyID0gaW5mby5UaGlzKCktPkZpbmRJbnN0YW5jZUluUHJvdG90
eXBlQ2hhaW4oVjhET01XaW5kb3c6OkdldFRlbXBsYXRlKGluZm8uR2V0SXNvbGF0ZSgpLCB3b3Js
ZFR5cGUoaW5mby5HZXRJc29sYXRlKCkpKSk7CiAgICAgaWYgKGhvbGRlci5Jc0VtcHR5KCkpCiAg
ICAgICAgIHJldHVybjsKIApAQCAtMzQ0LDcgKzM0NCw3IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVl
PiBWOERPTVdpbmRvdzo6cG9zdE1lc3NhZ2VNZXRob2RDdXN0b20oY29uc3Qgdjg6OkFyZ3VtZW50
cyYKIC8vIHN3aXRjaGluZyBjb250ZXh0IG9mIHJlY2VpdmVyLiBJIGNvbnNpZGVyIGl0IGlzIGRh
bmdlcm91cy4KIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOERPTVdpbmRvdzo6dG9TdHJpbmdNZXRo
b2RDdXN0b20oY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKLSAgICB2ODo6SGFuZGxlPHY4
OjpPYmplY3Q+IGRvbVdyYXBwZXIgPSBhcmdzLlRoaXMoKS0+RmluZEluc3RhbmNlSW5Qcm90b3R5
cGVDaGFpbihWOERPTVdpbmRvdzo6R2V0VGVtcGxhdGUoYXJncy5HZXRJc29sYXRlKCkpKTsKKyAg
ICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGRvbVdyYXBwZXIgPSBhcmdzLlRoaXMoKS0+RmluZElu
c3RhbmNlSW5Qcm90b3R5cGVDaGFpbihWOERPTVdpbmRvdzo6R2V0VGVtcGxhdGUoYXJncy5HZXRJ
c29sYXRlKCksIHdvcmxkVHlwZShhcmdzLkdldElzb2xhdGUoKSkpKTsKICAgICBpZiAoZG9tV3Jh
cHBlci5Jc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBhcmdzLlRoaXMoKS0+T2JqZWN0UHJvdG9U
b1N0cmluZygpOwogICAgIHJldHVybiBkb21XcmFwcGVyLT5PYmplY3RQcm90b1RvU3RyaW5nKCk7
CkBAIC01MTAsNyArNTEwLDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4RE9NV2luZG93Ojpz
ZXRJbnRlcnZhbE1ldGhvZEN1c3RvbShjb25zdCB2ODo6QXJndW1lbnRzJgogYm9vbCBWOERPTVdp
bmRvdzo6bmFtZWRTZWN1cml0eUNoZWNrKHY4OjpMb2NhbDx2ODo6T2JqZWN0PiBob3N0LCB2ODo6
TG9jYWw8djg6OlZhbHVlPiBrZXksIHY4OjpBY2Nlc3NUeXBlIHR5cGUsIHY4OjpMb2NhbDx2ODo6
VmFsdWU+KQogewogICAgIHY4OjpJc29sYXRlKiBpc29sYXRlID0gdjg6Oklzb2xhdGU6OkdldEN1
cnJlbnQoKTsKLSAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdpbmRvdyA9IGhvc3QtPkZpbmRJ
bnN0YW5jZUluUHJvdG90eXBlQ2hhaW4oVjhET01XaW5kb3c6OkdldFRlbXBsYXRlKGlzb2xhdGUp
KTsKKyAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdpbmRvdyA9IGhvc3QtPkZpbmRJbnN0YW5j
ZUluUHJvdG90eXBlQ2hhaW4oVjhET01XaW5kb3c6OkdldFRlbXBsYXRlKGlzb2xhdGUsIHdvcmxk
VHlwZShpc29sYXRlKSkpOwogICAgIGlmICh3aW5kb3cuSXNFbXB0eSgpKQogICAgICAgICByZXR1
cm4gZmFsc2U7ICAvLyB0aGUgZnJhbWUgaXMgZ29uZS4KIApAQCAtNTQ0LDcgKzU0NCw3IEBAIGJv
b2wgVjhET01XaW5kb3c6Om5hbWVkU2VjdXJpdHlDaGVjayh2ODo6TG9jYWw8djg6Ok9iamVjdD4g
aG9zdCwgdjg6OkxvY2FsPHY4OjpWCiBib29sIFY4RE9NV2luZG93OjppbmRleGVkU2VjdXJpdHlD
aGVjayh2ODo6TG9jYWw8djg6Ok9iamVjdD4gaG9zdCwgdWludDMyX3QgaW5kZXgsIHY4OjpBY2Nl
c3NUeXBlIHR5cGUsIHY4OjpMb2NhbDx2ODo6VmFsdWU+KQogewogICAgIHY4OjpJc29sYXRlKiBp
c29sYXRlID0gdjg6Oklzb2xhdGU6OkdldEN1cnJlbnQoKTsKLSAgICB2ODo6SGFuZGxlPHY4OjpP
YmplY3Q+IHdpbmRvdyA9IGhvc3QtPkZpbmRJbnN0YW5jZUluUHJvdG90eXBlQ2hhaW4oVjhET01X
aW5kb3c6OkdldFRlbXBsYXRlKGlzb2xhdGUpKTsKKyAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+
IHdpbmRvdyA9IGhvc3QtPkZpbmRJbnN0YW5jZUluUHJvdG90eXBlQ2hhaW4oVjhET01XaW5kb3c6
OkdldFRlbXBsYXRlKGlzb2xhdGUsIHdvcmxkVHlwZShpc29sYXRlKSkpOwogICAgIGlmICh3aW5k
b3cuSXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKQEAgLTU4Niw3ICs1ODYsNyBA
QCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOChET01XaW5kb3cqIHdpbmRvdywgdjg6OkhhbmRs
ZTx2ODo6T2JqZWN0PiBjcmVhdGlvbkNvbgogICAgIC8vIG5lY2Vzc2FyaWx5IHRoZSBmaXJzdCBn
bG9iYWwgb2JqZWN0IGFzc29jaWF0ZWQgd2l0aCB0aGF0IERPTVdpbmRvdy4KICAgICB2ODo6SGFu
ZGxlPHY4OjpDb250ZXh0PiBjdXJyZW50Q29udGV4dCA9IHY4OjpDb250ZXh0OjpHZXRDdXJyZW50
KCk7CiAgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjdXJyZW50R2xvYmFsID0gY3VycmVudENv
bnRleHQtPkdsb2JhbCgpOwotICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd2luZG93V3JhcHBl
ciA9IGN1cnJlbnRHbG9iYWwtPkZpbmRJbnN0YW5jZUluUHJvdG90eXBlQ2hhaW4oVjhET01XaW5k
b3c6OkdldFRlbXBsYXRlKGlzb2xhdGUpKTsKKyAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdp
bmRvd1dyYXBwZXIgPSBjdXJyZW50R2xvYmFsLT5GaW5kSW5zdGFuY2VJblByb3RvdHlwZUNoYWlu
KFY4RE9NV2luZG93OjpHZXRUZW1wbGF0ZShpc29sYXRlLCBtYWluSXNvbGF0ZVdvcmxkVHlwZShp
c29sYXRlKSkpOwogICAgIGlmICghd2luZG93V3JhcHBlci5Jc0VtcHR5KCkpIHsKICAgICAgICAg
aWYgKFY4RE9NV2luZG93Ojp0b05hdGl2ZSh3aW5kb3dXcmFwcGVyKSA9PSB3aW5kb3cpCiAgICAg
ICAgICAgICByZXR1cm4gY3VycmVudEdsb2JhbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxEb2N1bWVudEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MRG9jdW1lbnRDdXN0b20uY3BwCmluZGV4IDVj
MWY2NWZmNTE5ZGEyZWM1Nzg3ZTQ3MjAwZTcwNjU4ZmFjYTgyMTQuLjIxYTYyZDZlMjBjZDZkYzU4
M2JlMWRkMzgxYTMxYjJkMDY4YTQzYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L2N1c3RvbS9WOEhUTUxEb2N1bWVudEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTERvY3VtZW50Q3VzdG9tLmNwcApAQCAtNjAsNyAr
NjAsNyBAQCB2ODo6TG9jYWw8djg6Ok9iamVjdD4gVjhIVE1MRG9jdW1lbnQ6OndyYXBJblNoYWRv
d09iamVjdCh2ODo6TG9jYWw8djg6Ok9iamVjdD4gdwogICAgICAgICBpZiAoc2hhZG93VGVtcGxh
dGUuSXNFbXB0eSgpKQogICAgICAgICAgICAgcmV0dXJuIHY4OjpMb2NhbDx2ODo6T2JqZWN0Pigp
OwogICAgICAgICBzaGFkb3dUZW1wbGF0ZS0+U2V0Q2xhc3NOYW1lKHY4OjpTdHJpbmc6Ok5ld1N5
bWJvbCgiSFRNTERvY3VtZW50IikpOwotICAgICAgICBzaGFkb3dUZW1wbGF0ZS0+SW5oZXJpdChW
OEhUTUxEb2N1bWVudDo6R2V0VGVtcGxhdGUoaXNvbGF0ZSkpOworICAgICAgICBzaGFkb3dUZW1w
bGF0ZS0+SW5oZXJpdChWOEhUTUxEb2N1bWVudDo6R2V0VGVtcGxhdGUoaXNvbGF0ZSwgbWFpbklz
b2xhdGVXb3JsZFR5cGUoaXNvbGF0ZSkpKTsKICAgICAgICAgc2hhZG93VGVtcGxhdGUtPkluc3Rh
bmNlVGVtcGxhdGUoKS0+U2V0SW50ZXJuYWxGaWVsZENvdW50KFY4SFRNTERvY3VtZW50OjppbnRl
cm5hbEZpZWxkQ291bnQpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTEltYWdlRWxlbWVudENvbnN0cnVjdG9yLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxJbWFnZUVsZW1lbnRDb25zdHJ1Y3Rv
ci5jcHAKaW5kZXggOWUzZGNkOWUwZDc0Y2U5NzJjZTdiMWUzZTUzNzNjOTNjOWI5MjRjYy4uYzQx
NDIxYjkwYjgzYTZkMTkyYWJiNGFlNTUxYmNiNTcyMDQ1NGEyOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTEltYWdlRWxlbWVudENvbnN0cnVjdG9y
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MSW1hZ2VF
bGVtZW50Q29uc3RydWN0b3IuY3BwCkBAIC04Niw3ICs4Niw3IEBAIHN0YXRpYyB2ODo6SGFuZGxl
PHY4OjpWYWx1ZT4gbmFtZWRDb25zdHJ1Y3RvckNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMm
IGFyZ3MpCiAgICAgcmV0dXJuIG5hbWVkQ29uc3RydWN0b3IoYXJncyk7CiB9CiAKLXY4OjpQZXJz
aXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBWOEhUTUxJbWFnZUVsZW1lbnRDb25zdHJ1Y3Rv
cjo6R2V0VGVtcGxhdGUodjg6Oklzb2xhdGUqIGlzb2xhdGUpCit2ODo6UGVyc2lzdGVudDx2ODo6
RnVuY3Rpb25UZW1wbGF0ZT4gVjhIVE1MSW1hZ2VFbGVtZW50Q29uc3RydWN0b3I6OkdldFRlbXBs
YXRlKHY4OjpJc29sYXRlKiBpc29sYXRlLCBXcmFwcGVyV29ybGRUeXBlIHdvcmxkVHlwZSkKIHsK
ICAgICBzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IGNhY2hlZFRl
bXBsYXRlOwogICAgIGlmICghY2FjaGVkVGVtcGxhdGUuSXNFbXB0eSgpKQpAQCAtOTgsNyArOTgs
NyBAQCB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gVjhIVE1MSW1hZ2VFbGVt
ZW50Q29uc3RydWN0b3I6OkdldFRlbXBsYXRlKAogICAgIHY4OjpMb2NhbDx2ODo6T2JqZWN0VGVt
cGxhdGU+IGluc3RhbmNlID0gcmVzdWx0LT5JbnN0YW5jZVRlbXBsYXRlKCk7CiAgICAgaW5zdGFu
Y2UtPlNldEludGVybmFsRmllbGRDb3VudChWOEhUTUxJbWFnZUVsZW1lbnQ6OmludGVybmFsRmll
bGRDb3VudCk7CiAgICAgcmVzdWx0LT5TZXRDbGFzc05hbWUodjg6OlN0cmluZzo6TmV3U3ltYm9s
KCJIVE1MSW1hZ2VFbGVtZW50IikpOwotICAgIHJlc3VsdC0+SW5oZXJpdChWOEhUTUxJbWFnZUVs
ZW1lbnQ6OkdldFRlbXBsYXRlKGlzb2xhdGUpKTsKKyAgICByZXN1bHQtPkluaGVyaXQoVjhIVE1M
SW1hZ2VFbGVtZW50OjpHZXRUZW1wbGF0ZShpc29sYXRlLCB3b3JsZFR5cGUpKTsKIAogICAgIGNh
Y2hlZFRlbXBsYXRlID0gdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+OjpOZXco
aXNvbGF0ZSwgcmVzdWx0KTsKICAgICByZXR1cm4gY2FjaGVkVGVtcGxhdGU7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MSW1hZ2VFbGVtZW50Q29u
c3RydWN0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxJbWFn
ZUVsZW1lbnRDb25zdHJ1Y3Rvci5oCmluZGV4IDk1NmJjOGQ4NWI5YzBjMmUxMTliMThhYWQxODcw
N2I1Mjg5ZWI1OTEuLjk3YjM4ZTUwNWVmMGI4MWE4MTFlOGEzMTdmNWNjNzI1ZTg3YjkyYzIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxJbWFnZUVs
ZW1lbnRDb25zdHJ1Y3Rvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3Rv
bS9WOEhUTUxJbWFnZUVsZW1lbnRDb25zdHJ1Y3Rvci5oCkBAIC0zOSw3ICszOSw3IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgVjhIVE1MSW1hZ2VFbGVtZW50Q29uc3RydWN0b3Igewog
cHVibGljOgotICAgIHN0YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4g
R2V0VGVtcGxhdGUodjg6Oklzb2xhdGUqID0gMCk7CisgICAgc3RhdGljIHY4OjpQZXJzaXN0ZW50
PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBHZXRUZW1wbGF0ZSh2ODo6SXNvbGF0ZSosIFdyYXBwZXJX
b3JsZFR5cGUpOwogICAgIHN0YXRpYyBXcmFwcGVyVHlwZUluZm8gaW5mbzsKIH07CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEluamVjdGVkU2NyaXB0
TWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhJbmplY3Rl
ZFNjcmlwdE1hbmFnZXIuY3BwCmluZGV4IGIyOTYxZTMwMDQwZGFjNjhiMjE0Y2JhNWE0OGI2MzBk
ZDQzOWZiNTAuLjczMzkxMzk1Y2NjZTZhZDk0MWIxY2ZkYzgzZjA2YjcyYmIwYWFkMzUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEluamVjdGVkU2NyaXB0
TWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SW5q
ZWN0ZWRTY3JpcHRNYW5hZ2VyLmNwcApAQCAtNTUsNyArNTUsNyBAQCBzdGF0aWMgdm9pZCBXZWFr
UmVmZXJlbmNlQ2FsbGJhY2sodjg6Oklzb2xhdGUqIGlzb2xhdGUsIHY4OjpQZXJzaXN0ZW50PHY4
OjpWYWx1ZQogCiBzdGF0aWMgdjg6OkxvY2FsPHY4OjpPYmplY3Q+IGNyZWF0ZUluamVjdGVkU2Ny
aXB0SG9zdFY4V3JhcHBlcihJbmplY3RlZFNjcmlwdEhvc3QqIGhvc3QsIHY4OjpJc29sYXRlKiBp
c29sYXRlKQogewotICAgIHY4OjpMb2NhbDx2ODo6RnVuY3Rpb24+IGZ1bmN0aW9uID0gVjhJbmpl
Y3RlZFNjcmlwdEhvc3Q6OkdldFRlbXBsYXRlKGlzb2xhdGUpLT5HZXRGdW5jdGlvbigpOworICAg
IHY4OjpMb2NhbDx2ODo6RnVuY3Rpb24+IGZ1bmN0aW9uID0gVjhJbmplY3RlZFNjcmlwdEhvc3Q6
OkdldFRlbXBsYXRlKGlzb2xhdGUsIE1haW5Xb3JsZCktPkdldEZ1bmN0aW9uKCk7CiAgICAgaWYg
KGZ1bmN0aW9uLklzRW1wdHkoKSkgewogICAgICAgICAvLyBSZXR1cm4gaWYgYWxsb2NhdGlvbiBm
YWlsZWQuCiAgICAgICAgIHJldHVybiB2ODo6TG9jYWw8djg6Ok9iamVjdD4oKTsKQEAgLTExOCw3
ICsxMTgsNyBAQCBib29sIEluamVjdGVkU2NyaXB0TWFuYWdlcjo6Y2FuQWNjZXNzSW5zcGVjdGVk
V2luZG93KFNjcmlwdFN0YXRlKiBzY3JpcHRTdGF0ZSkKICAgICB2ODo6TG9jYWw8djg6Ok9iamVj
dD4gZ2xvYmFsID0gY29udGV4dC0+R2xvYmFsKCk7CiAgICAgaWYgKGdsb2JhbC5Jc0VtcHR5KCkp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGhvbGRl
ciA9IGdsb2JhbC0+RmluZEluc3RhbmNlSW5Qcm90b3R5cGVDaGFpbihWOERPTVdpbmRvdzo6R2V0
VGVtcGxhdGUoY29udGV4dC0+R2V0SXNvbGF0ZSgpKSk7CisgICAgdjg6OkhhbmRsZTx2ODo6T2Jq
ZWN0PiBob2xkZXIgPSBnbG9iYWwtPkZpbmRJbnN0YW5jZUluUHJvdG90eXBlQ2hhaW4oVjhET01X
aW5kb3c6OkdldFRlbXBsYXRlKGNvbnRleHQtPkdldElzb2xhdGUoKSwgTWFpbldvcmxkKSk7CiAg
ICAgaWYgKGhvbGRlci5Jc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBGcmFt
ZSogZnJhbWUgPSBWOERPTVdpbmRvdzo6dG9OYXRpdmUoaG9sZGVyKS0+ZnJhbWUoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOExvY2F0aW9uQ3VzdG9t
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOExvY2F0aW9uQ3VzdG9t
LmNwcAppbmRleCBlYzcxMjJmOGQ5MzcyNmNiODlmYzljMTU4ZjNhNTM0NDU4YjBjMmE0Li5iMmY5
ZWEzYjhlMjkyMzI3YTQzNTBkNmYxMjFlMDhkZjRiY2EyNzBlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhMb2NhdGlvbkN1c3RvbS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4TG9jYXRpb25DdXN0b20uY3BwCkBAIC0x
NDAsNyArMTQwLDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4TG9jYXRpb246OnJlbG9hZEF0
dHJHZXR0ZXJDdXN0b20odjg6OkxvY2FsPHY4OjpTdHJpbmc+IG4KIHsKICAgICB2ODo6SXNvbGF0
ZSogaXNvbGF0ZSA9IGluZm8uR2V0SXNvbGF0ZSgpOwogICAgIHN0YXRpYyB2ODo6UGVyc2lzdGVu
dDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gcHJpdmF0ZVRlbXBsYXRlID0gdjg6OlBlcnNpc3RlbnQ8
djg6OkZ1bmN0aW9uVGVtcGxhdGU+OjpOZXcoaXNvbGF0ZSwgdjg6OkZ1bmN0aW9uVGVtcGxhdGU6
Ok5ldyhWOExvY2F0aW9uOjpyZWxvYWRNZXRob2RDdXN0b20sIHY4VW5kZWZpbmVkKCksIHY4OjpT
aWduYXR1cmU6Ok5ldyhWOExvY2F0aW9uOjpHZXRSYXdUZW1wbGF0ZShpc29sYXRlKSkpKTsKLSAg
ICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGhvbGRlciA9IGluZm8uVGhpcygpLT5GaW5kSW5zdGFu
Y2VJblByb3RvdHlwZUNoYWluKFY4TG9jYXRpb246OkdldFRlbXBsYXRlKGlzb2xhdGUpKTsKKyAg
ICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGhvbGRlciA9IGluZm8uVGhpcygpLT5GaW5kSW5zdGFu
Y2VJblByb3RvdHlwZUNoYWluKFY4TG9jYXRpb246OkdldFRlbXBsYXRlKGlzb2xhdGUsIHdvcmxk
VHlwZShpc29sYXRlKSkpOwogICAgIGlmIChob2xkZXIuSXNFbXB0eSgpKSB7CiAgICAgICAgIC8v
IGNhbiBvbmx5IHJlYWNoIGhlcmUgYnkgJ29iamVjdC5fX3Byb3RvX18uZnVuYycsIGFuZCBpdCBz
aG91bGQgcGFzc2VkCiAgICAgICAgIC8vIGRvbWFpbiBzZWN1cml0eSBjaGVjayBhbHJlYWR5CkBA
IC0xNTgsNyArMTU4LDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4TG9jYXRpb246OnJlcGxh
Y2VBdHRyR2V0dGVyQ3VzdG9tKHY4OjpMb2NhbDx2ODo6U3RyaW5nPgogewogICAgIHY4OjpJc29s
YXRlKiBpc29sYXRlID0gaW5mby5HZXRJc29sYXRlKCk7CiAgICAgc3RhdGljIHY4OjpQZXJzaXN0
ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBwcml2YXRlVGVtcGxhdGUgPSB2ODo6UGVyc2lzdGVu
dDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT46Ok5ldyhpc29sYXRlLCB2ODo6RnVuY3Rpb25UZW1wbGF0
ZTo6TmV3KFY4TG9jYXRpb246OnJlcGxhY2VNZXRob2RDdXN0b20sIHY4VW5kZWZpbmVkKCksIHY4
OjpTaWduYXR1cmU6Ok5ldyhWOExvY2F0aW9uOjpHZXRSYXdUZW1wbGF0ZShpc29sYXRlKSkpKTsK
LSAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGhvbGRlciA9IGluZm8uVGhpcygpLT5GaW5kSW5z
dGFuY2VJblByb3RvdHlwZUNoYWluKFY4TG9jYXRpb246OkdldFRlbXBsYXRlKGlzb2xhdGUpKTsK
KyAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGhvbGRlciA9IGluZm8uVGhpcygpLT5GaW5kSW5z
dGFuY2VJblByb3RvdHlwZUNoYWluKFY4TG9jYXRpb246OkdldFRlbXBsYXRlKGlzb2xhdGUsIHdv
cmxkVHlwZShpc29sYXRlKSkpOwogICAgIGlmIChob2xkZXIuSXNFbXB0eSgpKSB7CiAgICAgICAg
IC8vIGNhbiBvbmx5IHJlYWNoIGhlcmUgYnkgJ29iamVjdC5fX3Byb3RvX18uZnVuYycsIGFuZCBp
dCBzaG91bGQgcGFzc2VkCiAgICAgICAgIC8vIGRvbWFpbiBzZWN1cml0eSBjaGVjayBhbHJlYWR5
CkBAIC0xNzcsNyArMTc3LDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4TG9jYXRpb246OmFz
c2lnbkF0dHJHZXR0ZXJDdXN0b20odjg6OkxvY2FsPHY4OjpTdHJpbmc+IG4KICAgICB2ODo6SXNv
bGF0ZSogaXNvbGF0ZSA9IGluZm8uR2V0SXNvbGF0ZSgpOwogICAgIHN0YXRpYyB2ODo6UGVyc2lz
dGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gcHJpdmF0ZVRlbXBsYXRlID0KICAgICAgICAgdjg6
OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+OjpOZXcoaXNvbGF0ZSwgdjg6OkZ1bmN0
aW9uVGVtcGxhdGU6Ok5ldyhWOExvY2F0aW9uOjphc3NpZ25NZXRob2RDdXN0b20sIHY4VW5kZWZp
bmVkKCksIHY4OjpTaWduYXR1cmU6Ok5ldyhWOExvY2F0aW9uOjpHZXRSYXdUZW1wbGF0ZShpc29s
YXRlKSkpKTsKLSAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGhvbGRlciA9IGluZm8uVGhpcygp
LT5GaW5kSW5zdGFuY2VJblByb3RvdHlwZUNoYWluKFY4TG9jYXRpb246OkdldFRlbXBsYXRlKGlz
b2xhdGUpKTsKKyAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGhvbGRlciA9IGluZm8uVGhpcygp
LT5GaW5kSW5zdGFuY2VJblByb3RvdHlwZUNoYWluKFY4TG9jYXRpb246OkdldFRlbXBsYXRlKGlz
b2xhdGUsIHdvcmxkVHlwZShpc29sYXRlKSkpOwogICAgIGlmIChob2xkZXIuSXNFbXB0eSgpKSB7
CiAgICAgICAgIC8vIGNhbiBvbmx5IHJlYWNoIGhlcmUgYnkgJ29iamVjdC5fX3Byb3RvX18uZnVu
YycsIGFuZCBpdCBzaG91bGQgcGFzc2VkCiAgICAgICAgIC8vIGRvbWFpbiBzZWN1cml0eSBjaGVj
ayBhbHJlYWR5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20v
VjhNZXNzYWdlRXZlbnRDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3Vz
dG9tL1Y4TWVzc2FnZUV2ZW50Q3VzdG9tLmNwcAppbmRleCAzODRjYmE1N2Q2OTBlNmIzOGFlN2Jh
ZDc3M2Y3NjBlMjM4MWI3ZmE2Li44ZGFkZDVjNmRlMDc5ZTdlZTczODQ2YmJkYjQ2NWE0NzI2OGEz
YmI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhNZXNz
YWdlRXZlbnRDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3Rv
bS9WOE1lc3NhZ2VFdmVudEN1c3RvbS5jcHAKQEAgLTExNiw3ICsxMTYsNyBAQCB2ODo6SGFuZGxl
PHY4OjpWYWx1ZT4gVjhNZXNzYWdlRXZlbnQ6OmluaXRNZXNzYWdlRXZlbnRNZXRob2RDdXN0b20o
Y29uc3Qgdjg6OkFyZwogICAgIERPTVdpbmRvdyogc291cmNlQXJnID0gMDsKICAgICBpZiAoYXJn
c1s2XS0+SXNPYmplY3QoKSkgewogICAgICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBw
ZXIgPSB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+OjpDYXN0KGFyZ3NbNl0pOwotICAgICAgICB2ODo6
SGFuZGxlPHY4OjpPYmplY3Q+IHdpbmRvdyA9IHdyYXBwZXItPkZpbmRJbnN0YW5jZUluUHJvdG90
eXBlQ2hhaW4oVjhET01XaW5kb3c6OkdldFRlbXBsYXRlKGFyZ3MuR2V0SXNvbGF0ZSgpKSk7Cisg
ICAgICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd2luZG93ID0gd3JhcHBlci0+RmluZEluc3Rh
bmNlSW5Qcm90b3R5cGVDaGFpbihWOERPTVdpbmRvdzo6R2V0VGVtcGxhdGUoYXJncy5HZXRJc29s
YXRlKCksIHdvcmxkVHlwZShhcmdzLkdldElzb2xhdGUoKSkpKTsKICAgICAgICAgaWYgKCF3aW5k
b3cuSXNFbXB0eSgpKQogICAgICAgICAgICAgc291cmNlQXJnID0gVjhET01XaW5kb3c6OnRvTmF0
aXZlKHdpbmRvdyk7CiAgICAgfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>190718</attachid>
            <date>2013-02-28 06:55:04 -0800</date>
            <delta_ts>2013-02-28 06:57:28 -0800</delta_ts>
            <desc>Patch.</desc>
            <filename>bug-110875-20130228155116.patch</filename>
            <type>text/plain</type>
            <size>40894</size>
            <attacher name="Marja Hölttä">marja</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ0Mjk4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2M5ODA2NWIwMDZiNmE1
NmFjOWE1MmJhZWE5YTJkM2NlZTA4ZTBmMC4uYzc2NGRhZThjZDAzYmFkOGY0Y2YwNzEyYTJjMzdj
OWQ0MDRlODgwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDcwIEBACisyMDEzLTAyLTI2ICBNYXJq
YSBIw7ZsdHTDpCAgPG1hcmphQGNocm9taXVtLm9yZz4KKworICAgICAgICBWOCBiaW5kaW5nczog
QWRkIGEgIndvcmxkIHR5cGUiIHBhcmFtZXRlciB0byBHZXRUZW1wbGF0ZSBhbmQgQ29uZmlndXJl
VjhTb21ldGhpbmdUZW1wbGF0ZSBmdW5jdGlvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTExMDg3NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyAobm8gY2hhbmdlcyBpbiBiZWhhdmlv
ciB5ZXQpLgorCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG06
CisgICAgICAgIChHZW5lcmF0ZUhlYWRlcik6CisgICAgICAgIChHZW5lcmF0ZURvbWFpblNhZmVG
dW5jdGlvbkdldHRlcik6CisgICAgICAgIChHZW5lcmF0ZURvbWFpblNhZmVGdW5jdGlvblNldHRl
cik6CisgICAgICAgIChHZW5lcmF0ZU5vcm1hbEF0dHJHZXR0ZXIpOgorICAgICAgICAoR2VuZXJh
dGVOYW1lZENvbnN0cnVjdG9yKToKKyAgICAgICAgKEdlbmVyYXRlSW1wbGVtZW50YXRpb24pOgor
ICAgICAgICAqIGJpbmRpbmdzL3Y4L0RpY3Rpb25hcnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RGljdGlvbmFyeTo6Z2V0KToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9QYWdlU2NyaXB0RGVidWdT
ZXJ2ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cmV0cmlldmVGcmFtZVdpdGhHbG9iYWxPYmpl
Y3RDaGVjayk6CisgICAgICAgICogYmluZGluZ3MvdjgvVjhBZGFwdG9yRnVuY3Rpb24uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6VjhBZGFwdG9yRnVuY3Rpb246OmdldFRlbXBsYXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlY4QWRhcHRvckZ1bmN0aW9uOjp3cmFwKToKKyAgICAgICAgKiBiaW5kaW5n
cy92OC9WOEFkYXB0b3JGdW5jdGlvbi5oOgorICAgICAgICAoVjhBZGFwdG9yRnVuY3Rpb24pOgor
ICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4QmluZGluZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjp0
b0RPTVdpbmRvdyk6CisgICAgICAgIChXZWJDb3JlOjp0b1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQp
OgorICAgICAgICAoV2ViQ29yZTo6d29ybGRUeXBlKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAg
ICAgICAqIGJpbmRpbmdzL3Y4L1Y4QmluZGluZy5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAg
ICAgICogYmluZGluZ3MvdjgvVjhET01XaW5kb3dTaGVsbC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpWOERPTVdpbmRvd1NoZWxsOjpjbGVhckZvck5hdmlnYXRpb24pOgorICAgICAgICAqIGJpbmRp
bmdzL3Y4L1Y4RE9NV3JhcHBlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOERPTVdyYXBwZXI6
OmNyZWF0ZVdyYXBwZXIpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4SW5pdGlhbGl6ZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6ZmluZEZyYW1lKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9W
OFBlckNvbnRleHREYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4UGVyQ29udGV4dERhdGE6
OmNvbnN0cnVjdG9yRm9yVHlwZVNsb3dDYXNlKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9Xb3Jr
ZXJTY3JpcHRDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclNjcmlwdENv
bnRyb2xsZXI6OmNvbnRyb2xsZXJGb3JDb250ZXh0KToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9X
cmFwcGVyVHlwZUluZm8uaDoKKyAgICAgICAgKFdlYkNvcmU6OldyYXBwZXJUeXBlSW5mbzo6Z2V0
VGVtcGxhdGUpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOERPTVdpbmRvd0N1c3Rv
bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOERPTVdpbmRvdzo6ZXZlbnRBdHRyR2V0dGVyQ3Vz
dG9tKToKKyAgICAgICAgKFdlYkNvcmU6OlY4RE9NV2luZG93OjpldmVudEF0dHJTZXR0ZXJDdXN0
b20pOgorICAgICAgICAoV2ViQ29yZTo6VjhET01XaW5kb3c6OnRvU3RyaW5nTWV0aG9kQ3VzdG9t
KToKKyAgICAgICAgKFdlYkNvcmU6OlY4RE9NV2luZG93OjpuYW1lZFNlY3VyaXR5Q2hlY2spOgor
ICAgICAgICAoV2ViQ29yZTo6VjhET01XaW5kb3c6OmluZGV4ZWRTZWN1cml0eUNoZWNrKToKKyAg
ICAgICAgKFdlYkNvcmU6OnRvVjgpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOEhU
TUxEb2N1bWVudEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOEhUTUxEb2N1bWVudDo6
d3JhcEluU2hhZG93T2JqZWN0KToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhIVE1M
SW1hZ2VFbGVtZW50Q29uc3RydWN0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhIVE1MSW1h
Z2VFbGVtZW50Q29uc3RydWN0b3I6OkdldFRlbXBsYXRlKToKKyAgICAgICAgKiBiaW5kaW5ncy92
OC9jdXN0b20vVjhIVE1MSW1hZ2VFbGVtZW50Q29uc3RydWN0b3IuaDoKKyAgICAgICAgKFY4SFRN
TEltYWdlRWxlbWVudENvbnN0cnVjdG9yKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20v
VjhJbmplY3RlZFNjcmlwdE1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlSW5q
ZWN0ZWRTY3JpcHRIb3N0VjhXcmFwcGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkluamVjdGVkU2Ny
aXB0TWFuYWdlcjo6Y2FuQWNjZXNzSW5zcGVjdGVkV2luZG93KToKKyAgICAgICAgKiBiaW5kaW5n
cy92OC9jdXN0b20vVjhMb2NhdGlvbkN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOExv
Y2F0aW9uOjpyZWxvYWRBdHRyR2V0dGVyQ3VzdG9tKToKKyAgICAgICAgKFdlYkNvcmU6OlY4TG9j
YXRpb246OnJlcGxhY2VBdHRyR2V0dGVyQ3VzdG9tKToKKyAgICAgICAgKFdlYkNvcmU6OlY4TG9j
YXRpb246OmFzc2lnbkF0dHJHZXR0ZXJDdXN0b20pOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1
c3RvbS9WOE1lc3NhZ2VFdmVudEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOE1lc3Nh
Z2VFdmVudDo6aW5pdE1lc3NhZ2VFdmVudE1ldGhvZEN1c3RvbSk6CisKIDIwMTMtMDItMjggIEtl
aXNoaSBIYXR0b3JpICA8a2Vpc2hpQHdlYmtpdC5vcmc+CiAKICAgICAgICAgQWRkIGNhbGVuZGFy
IGhlYWRlciBmb3IgbmV3IGNhbGVuZGFyIHBpY2tlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0gYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbQppbmRleCBiODRkOTYwOThlMmU4YTg0
NzBjZDhjMWY1MTIxYTY4YWIyMzk1YTJiLi4zZDZmYjdhYTAxMDUzMDMwZWI0ZTI4MWViYmVmMzFh
OTg0NDdiZjQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0Nv
ZGVHZW5lcmF0b3JWOC5wbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0Nv
ZGVHZW5lcmF0b3JWOC5wbQpAQCAtMzI0LDcgKzMyNCw3IEBAIHN1YiBHZW5lcmF0ZUhlYWRlcgog
ICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCA8PEVORCk7CiBjbGFzcyBWOCR7bmF0aXZlVHlw
ZX1Db25zdHJ1Y3RvciB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpG
dW5jdGlvblRlbXBsYXRlPiBHZXRUZW1wbGF0ZSh2ODo6SXNvbGF0ZSopOworICAgIHN0YXRpYyB2
ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gR2V0VGVtcGxhdGUodjg6Oklzb2xh
dGUqLCBXcmFwcGVyV29ybGRUeXBlKTsKICAgICBzdGF0aWMgV3JhcHBlclR5cGVJbmZvIGluZm87
CiB9OwogCkBAIC0zNjIsNyArMzYyLDcgQEAgRU5ECiAgICAgcHVzaChAaGVhZGVyQ29udGVudCwg
PDxFTkQpOwogICAgIHN0YXRpYyBib29sIEhhc0luc3RhbmNlKHY4OjpIYW5kbGU8djg6OlZhbHVl
Piwgdjg6Oklzb2xhdGUqKTsKICAgICBzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9u
VGVtcGxhdGU+IEdldFJhd1RlbXBsYXRlKHY4OjpJc29sYXRlKik7Ci0gICAgc3RhdGljIHY4OjpQ
ZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBHZXRUZW1wbGF0ZSh2ODo6SXNvbGF0ZSop
OworICAgIHN0YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gR2V0VGVt
cGxhdGUodjg6Oklzb2xhdGUqLCBXcmFwcGVyV29ybGRUeXBlKTsKICAgICBzdGF0aWMgJHtuYXRp
dmVUeXBlfSogdG9OYXRpdmUodjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBvYmplY3QpCiAgICAgewog
ICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDwke25hdGl2ZVR5cGV9Kj4oJHtmcm9tRnVu
Y3Rpb25PcGVuaW5nfW9iamVjdCR7ZnJvbUZ1bmN0aW9uQ2xvc2luZ30tPkdldEFsaWduZWRQb2lu
dGVyRnJvbUludGVybmFsRmllbGQodjhET01XcmFwcGVyT2JqZWN0SW5kZXgpKTsKQEAgLTc5NCw3
ICs3OTQsNyBAQCBzdWIgR2VuZXJhdGVEb21haW5TYWZlRnVuY3Rpb25HZXR0ZXIKIHN0YXRpYyB2
ODo6SGFuZGxlPHY4OjpWYWx1ZT4gJHtmdW5jTmFtZX1BdHRyR2V0dGVyKHY4OjpMb2NhbDx2ODo6
U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewogICAgIHN0YXRp
YyB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gcHJpdmF0ZVRlbXBsYXRlID0g
djg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+OjpOZXcoaW5mby5HZXRJc29sYXRl
KCksICRuZXdUZW1wbGF0ZVN0cmluZyk7Ci0gICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBob2xk
ZXIgPSBpbmZvLlRoaXMoKS0+RmluZEluc3RhbmNlSW5Qcm90b3R5cGVDaGFpbigke3Y4SW50ZXJm
YWNlTmFtZX06OkdldFRlbXBsYXRlKGluZm8uR2V0SXNvbGF0ZSgpKSk7CisgICAgdjg6OkhhbmRs
ZTx2ODo6T2JqZWN0PiBob2xkZXIgPSBpbmZvLlRoaXMoKS0+RmluZEluc3RhbmNlSW5Qcm90b3R5
cGVDaGFpbigke3Y4SW50ZXJmYWNlTmFtZX06OkdldFRlbXBsYXRlKGluZm8uR2V0SXNvbGF0ZSgp
LCB3b3JsZFR5cGUoaW5mby5HZXRJc29sYXRlKCkpKSk7CiAgICAgaWYgKGhvbGRlci5Jc0VtcHR5
KCkpIHsKICAgICAgICAgLy8gY2FuIG9ubHkgcmVhY2ggaGVyZSBieSAnb2JqZWN0Ll9fcHJvdG9f
Xy5mdW5jJywgYW5kIGl0IHNob3VsZCBwYXNzZWQKICAgICAgICAgLy8gZG9tYWluIHNlY3VyaXR5
IGNoZWNrIGFscmVhZHkKQEAgLTgyOSw3ICs4MjksNyBAQCBzdWIgR2VuZXJhdGVEb21haW5TYWZl
RnVuY3Rpb25TZXR0ZXIKICAgICBwdXNoKEBpbXBsQ29udGVudERlY2xzLCA8PEVORCk7CiBzdGF0
aWMgdm9pZCAke2ludGVyZmFjZU5hbWV9RG9tYWluU2FmZUZ1bmN0aW9uU2V0dGVyKHY4OjpMb2Nh
bDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6
OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsKLSAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGhvbGRl
ciA9IGluZm8uVGhpcygpLT5GaW5kSW5zdGFuY2VJblByb3RvdHlwZUNoYWluKCR7djhJbnRlcmZh
Y2VOYW1lfTo6R2V0VGVtcGxhdGUoaW5mby5HZXRJc29sYXRlKCkpKTsKKyAgICB2ODo6SGFuZGxl
PHY4OjpPYmplY3Q+IGhvbGRlciA9IGluZm8uVGhpcygpLT5GaW5kSW5zdGFuY2VJblByb3RvdHlw
ZUNoYWluKCR7djhJbnRlcmZhY2VOYW1lfTo6R2V0VGVtcGxhdGUoaW5mby5HZXRJc29sYXRlKCks
IHdvcmxkVHlwZShpbmZvLkdldElzb2xhdGUoKSkpKTsKICAgICBpZiAoaG9sZGVyLklzRW1wdHko
KSkKICAgICAgICAgcmV0dXJuOwogICAgICR7aW50ZXJmYWNlTmFtZX0qIGltcCA9ICR7djhJbnRl
cmZhY2VOYW1lfTo6dG9OYXRpdmUoaG9sZGVyKTsKQEAgLTk0OCw3ICs5NDgsNyBAQCBFTkQKICAg
ICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICMgcGVyZm9ybSBsb29rdXAgZmlyc3QKICAgICAg
ICAgICAgIHB1c2goQGltcGxDb250ZW50RGVjbHMsIDw8RU5EKTsKLSAgICB2ODo6SGFuZGxlPHY4
OjpPYmplY3Q+IGhvbGRlciA9IGluZm8uVGhpcygpLT5GaW5kSW5zdGFuY2VJblByb3RvdHlwZUNo
YWluKCR7djhJbnRlcmZhY2VOYW1lfTo6R2V0VGVtcGxhdGUoaW5mby5HZXRJc29sYXRlKCkpKTsK
KyAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGhvbGRlciA9IGluZm8uVGhpcygpLT5GaW5kSW5z
dGFuY2VJblByb3RvdHlwZUNoYWluKCR7djhJbnRlcmZhY2VOYW1lfTo6R2V0VGVtcGxhdGUoaW5m
by5HZXRJc29sYXRlKCksIHdvcmxkVHlwZShpbmZvLkdldElzb2xhdGUoKSkpKTsKICAgICBpZiAo
aG9sZGVyLklzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIHY4VW5kZWZpbmVkKCk7CiBFTkQKQEAg
LTIyNDMsNyArMjI0Myw3IEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gbmFtZWRDb25z
dHJ1Y3RvckNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiAgICAgcmV0dXJuIG5h
bWVkQ29uc3RydWN0b3IoYXJncyk7CiB9CiAKLXY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRl
bXBsYXRlPiAke3Y4SW50ZXJmYWNlTmFtZX1Db25zdHJ1Y3Rvcjo6R2V0VGVtcGxhdGUodjg6Oklz
b2xhdGUqIGlzb2xhdGUpCit2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gJHt2
OEludGVyZmFjZU5hbWV9Q29uc3RydWN0b3I6OkdldFRlbXBsYXRlKHY4OjpJc29sYXRlKiBpc29s
YXRlLCBXcmFwcGVyV29ybGRUeXBlIHdvcmxkVHlwZSkKIHsKICAgICBzdGF0aWMgdjg6OlBlcnNp
c3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IGNhY2hlZFRlbXBsYXRlOwogICAgIGlmICghY2Fj
aGVkVGVtcGxhdGUuSXNFbXB0eSgpKQpAQCAtMjI1NSw3ICsyMjU1LDcgQEAgdjg6OlBlcnNpc3Rl
bnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+ICR7djhJbnRlcmZhY2VOYW1lfUNvbnN0cnVjdG9yOjpH
ZXRUZW1wbGF0ZSgKICAgICB2ODo6TG9jYWw8djg6Ok9iamVjdFRlbXBsYXRlPiBpbnN0YW5jZSA9
IHJlc3VsdC0+SW5zdGFuY2VUZW1wbGF0ZSgpOwogICAgIGluc3RhbmNlLT5TZXRJbnRlcm5hbEZp
ZWxkQ291bnQoJHt2OEludGVyZmFjZU5hbWV9OjppbnRlcm5hbEZpZWxkQ291bnQpOwogICAgIHJl
c3VsdC0+U2V0Q2xhc3NOYW1lKHY4OjpTdHJpbmc6Ok5ld1N5bWJvbCgiJHtpbnRlcmZhY2VOYW1l
fSIpKTsKLSAgICByZXN1bHQtPkluaGVyaXQoJHt2OEludGVyZmFjZU5hbWV9OjpHZXRUZW1wbGF0
ZShpc29sYXRlKSk7CisgICAgcmVzdWx0LT5Jbmhlcml0KCR7djhJbnRlcmZhY2VOYW1lfTo6R2V0
VGVtcGxhdGUoaXNvbGF0ZSwgd29ybGRUeXBlKSk7CiAKICAgICBjYWNoZWRUZW1wbGF0ZSA9IHY4
OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPjo6TmV3KGlzb2xhdGUsIHJlc3VsdCk7
CiAgICAgcmV0dXJuIGNhY2hlZFRlbXBsYXRlOwpAQCAtMjY3OSw3ICsyNjc5LDcgQEAgc3ViIEdl
bmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAgICAgbXkgJHBhcmVudCA9ICRfOwogICAgICAgICBB
ZGRUb0ltcGxJbmNsdWRlcygiVjgke3BhcmVudH0uaCIpOwogICAgICAgICAkcGFyZW50Q2xhc3Mg
PSAiVjgiIC4gJHBhcmVudDsKLSAgICAgICAgJHBhcmVudENsYXNzVGVtcGxhdGUgPSAkcGFyZW50
Q2xhc3MgLiAiOjpHZXRUZW1wbGF0ZShpc29sYXRlKSI7CisgICAgICAgICRwYXJlbnRDbGFzc1Rl
bXBsYXRlID0gJHBhcmVudENsYXNzIC4gIjo6R2V0VGVtcGxhdGUoaXNvbGF0ZSwgd29ybGRUeXBl
KSI7CiAgICAgICAgIGxhc3Q7CiAgICAgfQogCkBAIC0yOTg4LDcgKzI5ODgsNyBAQCBFTkQKIAog
ICAgICMgR2VuZXJhdGUgdGhlIHRlbXBsYXRlIGNvbmZpZ3VyYXRpb24gbWV0aG9kCiAgICAgcHVz
aChAaW1wbENvbnRlbnQsICA8PEVORCk7Ci1zdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0
aW9uVGVtcGxhdGU+IENvbmZpZ3VyZSR7djhJbnRlcmZhY2VOYW1lfVRlbXBsYXRlKHY4OjpQZXJz
aXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBkZXNjLCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSkK
K3N0YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gQ29uZmlndXJlJHt2
OEludGVyZmFjZU5hbWV9VGVtcGxhdGUodjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxh
dGU+IGRlc2MsIHY4OjpJc29sYXRlKiBpc29sYXRlLCBXcmFwcGVyV29ybGRUeXBlIHdvcmxkVHlw
ZSkKIHsKICAgICBkZXNjLT5SZWFkT25seVByb3RvdHlwZSgpOwogCkBAIC0zMTU0LDcgKzMxNTQs
NyBAQCB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gJHt2OEludGVyZmFjZU5h
bWV9OjpHZXRSYXdUZW1wbGF0ZSh2ODo6SXNvbAogICAgIHJldHVybiB0ZW1wbDsKIH0KIAotdjg6
OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+ICR7djhJbnRlcmZhY2VOYW1lfTo6R2V0
VGVtcGxhdGUodjg6Oklzb2xhdGUqIGlzb2xhdGUpCit2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rp
b25UZW1wbGF0ZT4gJHt2OEludGVyZmFjZU5hbWV9OjpHZXRUZW1wbGF0ZSh2ODo6SXNvbGF0ZSog
aXNvbGF0ZSwgV3JhcHBlcldvcmxkVHlwZSB3b3JsZFR5cGUpCiB7CiAgICAgVjhQZXJJc29sYXRl
RGF0YSogZGF0YSA9IFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0ZSk7CiAgICAgVjhQZXJJ
c29sYXRlRGF0YTo6VGVtcGxhdGVNYXA6Oml0ZXJhdG9yIHJlc3VsdCA9IGRhdGEtPnRlbXBsYXRl
TWFwKCkuZmluZCgmaW5mbyk7CkBAIC0zMTYzLDcgKzMxNjMsNyBAQCB2ODo6UGVyc2lzdGVudDx2
ODo6RnVuY3Rpb25UZW1wbGF0ZT4gJHt2OEludGVyZmFjZU5hbWV9OjpHZXRUZW1wbGF0ZSh2ODo6
SXNvbGF0ZQogCiAgICAgdjg6OkhhbmRsZVNjb3BlIGhhbmRsZVNjb3BlOwogICAgIHY4OjpQZXJz
aXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiB0ZW1wbCA9Ci0gICAgICAgIENvbmZpZ3VyZSR7
djhJbnRlcmZhY2VOYW1lfVRlbXBsYXRlKEdldFJhd1RlbXBsYXRlKGlzb2xhdGUpLCBpc29sYXRl
KTsKKyAgICAgICAgQ29uZmlndXJlJHt2OEludGVyZmFjZU5hbWV9VGVtcGxhdGUoR2V0UmF3VGVt
cGxhdGUoaXNvbGF0ZSksIGlzb2xhdGUsIHdvcmxkVHlwZSk7CiAgICAgZGF0YS0+dGVtcGxhdGVN
YXAoKS5hZGQoJmluZm8sIHRlbXBsKTsKICAgICByZXR1cm4gdGVtcGw7CiB9CkBAIC0zMjEyLDcg
KzMyMTIsNyBAQCB2b2lkICR7djhJbnRlcmZhY2VOYW1lfTo6aW5zdGFsbFBlckNvbnRleHRQcm90
b3R5cGVQcm9wZXJ0aWVzKHY4OjpIYW5kbGU8djg6Ok9iagogRU5ECiAgICAgICAgICMgU2V0dXAg
dGhlIGVuYWJsZS1ieS1zZXR0aW5ncyBmdW5jdGlvbnMgaWYgd2UgaGF2ZSB0aGVtCiAgICAgICAg
IHB1c2goQGltcGxDb250ZW50LCAgPDxFTkQpOwotICAgIHY4OjpMb2NhbDx2ODo6U2lnbmF0dXJl
PiBkZWZhdWx0U2lnbmF0dXJlID0gdjg6OlNpZ25hdHVyZTo6TmV3KEdldFRlbXBsYXRlKGlzb2xh
dGUpKTsKKyAgICB2ODo6TG9jYWw8djg6OlNpZ25hdHVyZT4gZGVmYXVsdFNpZ25hdHVyZSA9IHY4
OjpTaWduYXR1cmU6Ok5ldyhHZXRUZW1wbGF0ZShpc29sYXRlLCB3b3JsZFR5cGUoaXNvbGF0ZSkp
KTsKICAgICBVTlVTRURfUEFSQU0oZGVmYXVsdFNpZ25hdHVyZSk7IC8vIEluIHNvbWUgY2FzZXMs
IGl0IHdpbGwgbm90IGJlIHVzZWQuCiAKICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250
ZXh0ID0gdG9TY3JpcHRFeGVjdXRpb25Db250ZXh0KHByb3RvLT5DcmVhdGlvbkNvbnRleHQoKSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9ET01XcmFwcGVyV29ybGQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvRE9NV3JhcHBlcldvcmxkLmNwcAppbmRl
eCBjNWYxNmQ3NjI3ZjAxMDM4MzdmYWIwZjg0ZDcyN2ExMTY1Zjc5NmJhLi5hYWI0MzI3MGQ1ZTE1
NjRjYjlhNjBkMWQwNjcxMTc5MmIyOTA0MmFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy92OC9ET01XcmFwcGVyV29ybGQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L0RPTVdyYXBwZXJXb3JsZC5jcHAKQEAgLTQxLDEyICs0MSwxOCBAQAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBpbnQgRE9NV3JhcHBlcldvcmxkOjppc29sYXRlZFdvcmxkQ291bnQgPSAw
Oworc3RhdGljIGJvb2wgaW5pdGlhbGl6aW5nV2luZG93ID0gZmFsc2U7CiAKIFBhc3NSZWZQdHI8
RE9NV3JhcHBlcldvcmxkPiAgRE9NV3JhcHBlcldvcmxkOjpjcmVhdGVVbmluaXRpYWxpemVkV29y
bGQoKQogewogICAgIHJldHVybiBhZG9wdFJlZihuZXcgRE9NV3JhcHBlcldvcmxkKHVuaW5pdGlh
bGl6ZWRXb3JsZElkLCB1bmluaXRpYWxpemVkRXh0ZW5zaW9uR3JvdXApKTsKIH0KIAordm9pZCBE
T01XcmFwcGVyV29ybGQ6OnNldEluaXRpYWxpemluZ1dpbmRvdyhib29sIGluaXRpYWxpemluZykK
K3sKKyAgICBpbml0aWFsaXppbmdXaW5kb3cgPSBpbml0aWFsaXppbmc7Cit9CisKIFBhc3NSZWZQ
dHI8RE9NV3JhcHBlcldvcmxkPiBET01XcmFwcGVyV29ybGQ6OmNyZWF0ZU1haW5Xb3JsZCgpCiB7
CiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBET01XcmFwcGVyV29ybGQobWFpbldvcmxkSWQsIG1h
aW5Xb3JsZEV4dGVuc2lvbkdyb3VwKSk7CkBAIC02NywxMCArNzMsMTIgQEAgRE9NV3JhcHBlcldv
cmxkKiBtYWluVGhyZWFkTm9ybWFsV29ybGQoKQogICAgIHJldHVybiBjYWNoZWROb3JtYWxXb3Js
ZC5nZXQoKTsKIH0KIAotdm9pZCBET01XcmFwcGVyV29ybGQ6OmFzc2VydENvbnRleHRIYXNDb3Jy
ZWN0UHJvdG90eXBlKHY4OjpIYW5kbGU8djg6OkNvbnRleHQ+IGNvbnRleHQpCitib29sIERPTVdy
YXBwZXJXb3JsZDo6Y29udGV4dEhhc0NvcnJlY3RQcm90b3R5cGUodjg6OkhhbmRsZTx2ODo6Q29u
dGV4dD4gY29udGV4dCkKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwotICAgIEFTU0VS
VChWOERPTVdyYXBwZXI6OmlzV3JhcHBlck9mVHlwZSh0b0lubmVyR2xvYmFsT2JqZWN0KGNvbnRl
eHQpLCAmVjhET01XaW5kb3c6OmluZm8pKTsKKyAgICBpZiAoaW5pdGlhbGl6aW5nV2luZG93KQor
ICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICByZXR1cm4gVjhET01XcmFwcGVyOjppc1dyYXBwZXJP
ZlR5cGUodG9Jbm5lckdsb2JhbE9iamVjdChjb250ZXh0KSwgJlY4RE9NV2luZG93OjppbmZvKTsK
IH0KIAogc3RhdGljIHZvaWQgaXNvbGF0ZWRXb3JsZFdlYWtDYWxsYmFjayh2ODo6SXNvbGF0ZSog
aXNvbGF0ZSwgdjg6OlBlcnNpc3RlbnQ8djg6OlZhbHVlPiBvYmplY3QsIHZvaWQqIHBhcmFtZXRl
cikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0RPTVdyYXBwZXJXb3Js
ZC5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvRE9NV3JhcHBlcldvcmxkLmgKaW5kZXgg
NDhjMjBlNDYyNTMyZTc5M2UzY2IyMTRjMjZhYTdmZDNlZGI1NmMyMS4uYmQyYTczZjdhMTBjZDE4
MGZmODI5MzM3YzMzZTU1OTBmZTJiOTM2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvRE9NV3JhcHBlcldvcmxkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvRE9NV3JhcHBlcldvcmxkLmgKQEAgLTYxLDEwICs2MSw5IEBAIHB1YmxpYzoKICAgICB2b2lk
IG1ha2VDb250ZXh0V2Vhayh2ODo6SGFuZGxlPHY4OjpDb250ZXh0Pik7CiAgICAgdm9pZCBzZXRJ
c29sYXRlZFdvcmxkRmllbGQodjg6OkhhbmRsZTx2ODo6Q29udGV4dD4pOwogCi0gICAgc3RhdGlj
IHZvaWQgYXNzZXJ0Q29udGV4dEhhc0NvcnJlY3RQcm90b3R5cGUodjg6OkhhbmRsZTx2ODo6Q29u
dGV4dD4pOwogICAgIHN0YXRpYyBET01XcmFwcGVyV29ybGQqIGdldFdvcmxkKHY4OjpIYW5kbGU8
djg6OkNvbnRleHQ+IGNvbnRleHQpCiAgICAgewotICAgICAgICBhc3NlcnRDb250ZXh0SGFzQ29y
cmVjdFByb3RvdHlwZShjb250ZXh0KTsKKyAgICAgICAgQVNTRVJUKGNvbnRleHRIYXNDb3JyZWN0
UHJvdG90eXBlKGNvbnRleHQpKTsKICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PERPTVdyYXBw
ZXJXb3JsZCo+KGNvbnRleHQtPkdldEFsaWduZWRQb2ludGVyRnJvbUVtYmVkZGVyRGF0YSh2OENv
bnRleHRJc29sYXRlZFdvcmxkKSk7CiAgICAgfQogICAgIHN0YXRpYyBET01XcmFwcGVyV29ybGQq
IGdldFdvcmxkV2l0aG91dENvbnRleHRDaGVjayh2ODo6SGFuZGxlPHY4OjpDb250ZXh0PiBjb250
ZXh0KQpAQCAtMTA3LDkgKzEwNiwxMiBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBtX2RvbURh
dGFTdG9yZS5nZXQoKTsKICAgICB9CiAKKyAgICBzdGF0aWMgdm9pZCBzZXRJbml0aWFsaXppbmdX
aW5kb3coYm9vbCk7CisKIHByaXZhdGU6CiAgICAgc3RhdGljIGludCBpc29sYXRlZFdvcmxkQ291
bnQ7CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8RE9NV3JhcHBlcldvcmxkPiBjcmVhdGVNYWluV29y
bGQoKTsKKyAgICBzdGF0aWMgYm9vbCBjb250ZXh0SGFzQ29ycmVjdFByb3RvdHlwZSh2ODo6SGFu
ZGxlPHY4OjpDb250ZXh0Pik7CiAKICAgICBET01XcmFwcGVyV29ybGQoaW50IHdvcmxkSWQsIGlu
dCBleHRlbnNpb25Hcm91cCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L0RpY3Rpb25hcnkuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvRGljdGlvbmFy
eS5jcHAKaW5kZXggOGE5Y2YxZGY2YmI1NWRiOTI3ZDNmNDEwZjNjNmI3YzlkMGRhM2VkMi4uMzRm
MTU4YWI2ZTMzM2Q5MTBlODNhMjFjMGY1YjM4YjBhODZkOWQ1ZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvdjgvRGljdGlvbmFyeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvdjgvRGljdGlvbmFyeS5jcHAKQEAgLTI1OSw3ICsyNTksNyBAQCBib29sIERpY3Rp
b25hcnk6OmdldChjb25zdCBTdHJpbmcmIGtleSwgUmVmUHRyPERPTVdpbmRvdz4mIHZhbHVlKSBj
b25zdAogICAgIHZhbHVlID0gMDsKICAgICBpZiAodjhWYWx1ZS0+SXNPYmplY3QoKSkgewogICAg
ICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBwZXIgPSB2ODo6SGFuZGxlPHY4OjpPYmpl
Y3Q+OjpDYXN0KHY4VmFsdWUpOwotICAgICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdpbmRv
dyA9IHdyYXBwZXItPkZpbmRJbnN0YW5jZUluUHJvdG90eXBlQ2hhaW4oVjhET01XaW5kb3c6Okdl
dFRlbXBsYXRlKG1faXNvbGF0ZSkpOworICAgICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdp
bmRvdyA9IHdyYXBwZXItPkZpbmRJbnN0YW5jZUluUHJvdG90eXBlQ2hhaW4oVjhET01XaW5kb3c6
OkdldFRlbXBsYXRlKG1faXNvbGF0ZSwgd29ybGRUeXBlKG1faXNvbGF0ZSkpKTsKICAgICAgICAg
aWYgKCF3aW5kb3cuSXNFbXB0eSgpKQogICAgICAgICAgICAgdmFsdWUgPSBWOERPTVdpbmRvdzo6
dG9OYXRpdmUod2luZG93KTsKICAgICB9CkBAIC0zNjMsNyArMzYzLDcgQEAgYm9vbCBEaWN0aW9u
YXJ5OjpnZXQoY29uc3QgU3RyaW5nJiBrZXksIFJlZlB0cjxUcmFja0Jhc2U+JiB2YWx1ZSkgY29u
c3QKIAogICAgICAgICAvLyBGSVhNRTogdGhpcyB3aWxsIG5lZWQgdG8gYmUgY2hhbmdlZCBzbyBp
dCBjYW4gYWxzbyByZXR1cm4gYW4gQXVkaW9UcmFjayBvciBhIFZpZGVvVHJhY2sgb25jZQogICAg
ICAgICAvLyB3ZSBhZGQgdGhlbS4KLSAgICAgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB0cmFj
ayA9IHdyYXBwZXItPkZpbmRJbnN0YW5jZUluUHJvdG90eXBlQ2hhaW4oVjhUZXh0VHJhY2s6Okdl
dFRlbXBsYXRlKG1faXNvbGF0ZSkpOworICAgICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHRy
YWNrID0gd3JhcHBlci0+RmluZEluc3RhbmNlSW5Qcm90b3R5cGVDaGFpbihWOFRleHRUcmFjazo6
R2V0VGVtcGxhdGUobV9pc29sYXRlLCB3b3JsZFR5cGUobV9pc29sYXRlKSkpOwogICAgICAgICBp
ZiAoIXRyYWNrLklzRW1wdHkoKSkKICAgICAgICAgICAgIHNvdXJjZSA9IFY4VGV4dFRyYWNrOjp0
b05hdGl2ZSh0cmFjayk7CiAgICAgfQpAQCAtNDM2LDcgKzQzNiw3IEBAIGJvb2wgRGljdGlvbmFy
eTo6Z2V0KGNvbnN0IFN0cmluZyYga2V5LCBSZWZQdHI8RXZlbnRUYXJnZXQ+JiB2YWx1ZSkgY29u
c3QKICAgICAvLyBleGlzdHMgb24gYSBwcm90b3R5cGUgY2hhaW4gb2YgdjhWYWx1ZS4KICAgICBp
ZiAodjhWYWx1ZS0+SXNPYmplY3QoKSkgewogICAgICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+
IHdyYXBwZXIgPSB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+OjpDYXN0KHY4VmFsdWUpOwotICAgICAg
ICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdpbmRvdyA9IHdyYXBwZXItPkZpbmRJbnN0YW5jZUlu
UHJvdG90eXBlQ2hhaW4oVjhET01XaW5kb3c6OkdldFRlbXBsYXRlKG1faXNvbGF0ZSkpOworICAg
ICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdpbmRvdyA9IHdyYXBwZXItPkZpbmRJbnN0YW5j
ZUluUHJvdG90eXBlQ2hhaW4oVjhET01XaW5kb3c6OkdldFRlbXBsYXRlKG1faXNvbGF0ZSwgd29y
bGRUeXBlKG1faXNvbGF0ZSkpKTsKICAgICAgICAgaWYgKCF3aW5kb3cuSXNFbXB0eSgpKSB7CiAg
ICAgICAgICAgICB2YWx1ZSA9IHRvV3JhcHBlclR5cGVJbmZvKHdpbmRvdyktPnRvRXZlbnRUYXJn
ZXQod2luZG93KTsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvdjgvUGFnZVNjcmlwdERlYnVnU2VydmVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L1BhZ2VTY3JpcHREZWJ1Z1NlcnZlci5jcHAKaW5kZXggYmE2ZTVm
OGM4Yzk2MDQxZDhhNzNkNzY4ZmIzODZjNmFkNTMwNTE5OC4uM2MzOWM4NTkxN2RhNzIzMGVkYTE2
ZTAzNDg2NWVmN2FkNjQ0MzUyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvUGFnZVNjcmlwdERlYnVnU2VydmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy92OC9QYWdlU2NyaXB0RGVidWdTZXJ2ZXIuY3BwCkBAIC01Niw3ICs1Niw3IEBAIHN0YXRpYyBG
cmFtZSogcmV0cmlldmVGcmFtZVdpdGhHbG9iYWxPYmplY3RDaGVjayh2ODo6SGFuZGxlPHY4OjpD
b250ZXh0PiBjb250ZXh0CiAgICAgaWYgKGdsb2JhbC5Jc0VtcHR5KCkpCiAgICAgICAgIHJldHVy
biAwOwogCi0gICAgZ2xvYmFsID0gZ2xvYmFsLT5GaW5kSW5zdGFuY2VJblByb3RvdHlwZUNoYWlu
KFY4RE9NV2luZG93OjpHZXRUZW1wbGF0ZShjb250ZXh0LT5HZXRJc29sYXRlKCkpKTsKKyAgICBn
bG9iYWwgPSBnbG9iYWwtPkZpbmRJbnN0YW5jZUluUHJvdG90eXBlQ2hhaW4oVjhET01XaW5kb3c6
OkdldFRlbXBsYXRlKGNvbnRleHQtPkdldElzb2xhdGUoKSwgd29ybGRUeXBlKGNvbnRleHQtPkdl
dElzb2xhdGUoKSkpKTsKICAgICBpZiAoZ2xvYmFsLklzRW1wdHkoKSkKICAgICAgICAgcmV0dXJu
IDA7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4QWRhcHRvckZ1
bmN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4QWRhcHRvckZ1bmN0aW9u
LmNwcAppbmRleCBiYmMxZDMyNzRmYzdkODlmMWRhNjM0YWRhNzc5YmJjNmU0NjJlY2RkLi5jNzJj
NzEzZWQwN2E5NTMyZjIxMTUwZWZiY2QwNjkwY2NkY2YwMzM3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy92OC9WOEFkYXB0b3JGdW5jdGlvbi5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvdjgvVjhBZGFwdG9yRnVuY3Rpb24uY3BwCkBAIC00MCw3ICs0MCw3IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogV3JhcHBlclR5cGVJbmZvIFY4QWRhcHRvckZ1bmN0aW9u
OjppbmZvID0geyBWOEFkYXB0b3JGdW5jdGlvbjo6Z2V0VGVtcGxhdGUsIDAsIDAsIDAsIDAsIDAs
IDAsIFdyYXBwZXJUeXBlT2JqZWN0UHJvdG90eXBlIH07CiAKLXY4OjpQZXJzaXN0ZW50PHY4OjpG
dW5jdGlvblRlbXBsYXRlPiBWOEFkYXB0b3JGdW5jdGlvbjo6Z2V0VGVtcGxhdGUodjg6Oklzb2xh
dGUqIGlzb2xhdGUpCit2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gVjhBZGFw
dG9yRnVuY3Rpb246OmdldFRlbXBsYXRlKHY4OjpJc29sYXRlKiBpc29sYXRlLCBXcmFwcGVyV29y
bGRUeXBlIHdvcmxkVHlwZSkKIHsKICAgICBBU1NFUlQoaXNvbGF0ZSk7CiAgICAgVjhQZXJJc29s
YXRlRGF0YSogZGF0YSA9IFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0ZSk7CkBAIC03Niw3
ICs3Niw3IEBAIHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uPiBWOEFkYXB0b3JGdW5jdGlvbjo6d3Jh
cCh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IG9iamVjdCwKIHsKICAgICBpZiAob2JqZWN0LklzRW1w
dHkoKSB8fCAhb2JqZWN0LT5Jc09iamVjdCgpKQogICAgICAgICByZXR1cm4gdjg6OkhhbmRsZTx2
ODo6RnVuY3Rpb24+KCk7Ci0gICAgdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb24+IGFkYXB0b3IgPSB2
ODo6SGFuZGxlPHY4OjpGdW5jdGlvbj46OkNhc3QoZ2V0VGVtcGxhdGUoaXNvbGF0ZSktPkdldEZ1
bmN0aW9uKCkpOworICAgIHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uPiBhZGFwdG9yID0gdjg6Okhh
bmRsZTx2ODo6RnVuY3Rpb24+OjpDYXN0KGdldFRlbXBsYXRlKGlzb2xhdGUsIHdvcmxkVHlwZShp
c29sYXRlKSktPkdldEZ1bmN0aW9uKCkpOwogICAgIGlmIChhZGFwdG9yLklzRW1wdHkoKSkKICAg
ICAgICAgcmV0dXJuIHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uPigpOwogICAgIGFkYXB0b3ItPlNl
dE5hbWUodjhTdHJpbmcobmFtZS5zdHJpbmcoKSwgaXNvbGF0ZSkpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhBZGFwdG9yRnVuY3Rpb24uaCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L1Y4QWRhcHRvckZ1bmN0aW9uLmgKaW5kZXggZTNkNmJiNTFmNDQwYTRj
NzcyNGFiY2UzZGU5MzA2OGRhZThjM2E1Ny4uNzgzNmViNGM2NWI5NDMzNDFmYzJhMzRjN2FkM2Vl
ZTRkOWZiZTU2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhBZGFw
dG9yRnVuY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEFkYXB0b3JG
dW5jdGlvbi5oCkBAIC01NSw3ICs1NSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgdjg6OkhhbmRs
ZTx2ODo6RnVuY3Rpb24+IHdyYXAodjg6OkhhbmRsZTx2ODo6T2JqZWN0PiwgY29uc3QgQXRvbWlj
U3RyaW5nJiBuYW1lLCB2ODo6SXNvbGF0ZSopOwogICAgIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpG
dW5jdGlvbj4gZ2V0KHY4OjpIYW5kbGU8djg6Ok9iamVjdD4pOwogCi0gICAgc3RhdGljIHY4OjpQ
ZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBnZXRUZW1wbGF0ZSh2ODo6SXNvbGF0ZSog
PSAwKTsKKyAgICBzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IGdl
dFRlbXBsYXRlKHY4OjpJc29sYXRlKiwgV3JhcHBlcldvcmxkVHlwZSk7CiAgICAgc3RhdGljIHY4
OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBjb25maWd1cmVUZW1wbGF0ZSh2ODo6
UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4pOwogICAgIHN0YXRpYyB2ODo6SGFuZGxl
PHY4OjpWYWx1ZT4gaW52b2NhdGlvbkNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmKTsKIH07
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEJpbmRpbmcuY3BwIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhCaW5kaW5nLmNwcAppbmRleCA4NjNmNGZkNmFj
MGE2NTViZTkyODRmN2NmOGNjMDQzOGQ0MjJmNTY3Li5hYWU2NzY3YjA5ODc1OTc0Yjk0MTEyMDRi
ZGE2MDI3Mzk5NGE0MTRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9W
OEJpbmRpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4QmluZGluZy5j
cHAKQEAgLTIyMSw3ICsyMjEsMTAgQEAgRE9NV2luZG93KiB0b0RPTVdpbmRvdyh2ODo6SGFuZGxl
PHY4OjpDb250ZXh0PiBjb250ZXh0KQogewogICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gZ2xv
YmFsID0gY29udGV4dC0+R2xvYmFsKCk7CiAgICAgQVNTRVJUKCFnbG9iYWwuSXNFbXB0eSgpKTsK
LSAgICBnbG9iYWwgPSBnbG9iYWwtPkZpbmRJbnN0YW5jZUluUHJvdG90eXBlQ2hhaW4oVjhET01X
aW5kb3c6OkdldFRlbXBsYXRlKGNvbnRleHQtPkdldElzb2xhdGUoKSkpOworICAgIGdsb2JhbCA9
IGdsb2JhbC0+RmluZEluc3RhbmNlSW5Qcm90b3R5cGVDaGFpbihWOERPTVdpbmRvdzo6R2V0VGVt
cGxhdGUoY29udGV4dC0+R2V0SXNvbGF0ZSgpLCBNYWluV29ybGQpKTsKKyAgICBpZiAoIWdsb2Jh
bC5Jc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBWOERPTVdpbmRvdzo6dG9OYXRpdmUoZ2xvYmFs
KTsKKyAgICBnbG9iYWwgPSBnbG9iYWwtPkZpbmRJbnN0YW5jZUluUHJvdG90eXBlQ2hhaW4oVjhE
T01XaW5kb3c6OkdldFRlbXBsYXRlKGNvbnRleHQtPkdldElzb2xhdGUoKSwgSXNvbGF0ZWRXb3Js
ZCkpOwogICAgIEFTU0VSVCghZ2xvYmFsLklzRW1wdHkoKSk7CiAgICAgcmV0dXJuIFY4RE9NV2lu
ZG93Ojp0b05hdGl2ZShnbG9iYWwpOwogfQpAQCAtMjI5LDExICsyMzIsMTQgQEAgRE9NV2luZG93
KiB0b0RPTVdpbmRvdyh2ODo6SGFuZGxlPHY4OjpDb250ZXh0PiBjb250ZXh0KQogU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCogdG9TY3JpcHRFeGVjdXRpb25Db250ZXh0KHY4OjpIYW5kbGU8djg6OkNv
bnRleHQ+IGNvbnRleHQpCiB7CiAgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBnbG9iYWwgPSBj
b250ZXh0LT5HbG9iYWwoKTsKLSAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdpbmRvd1dyYXBw
ZXIgPSBnbG9iYWwtPkZpbmRJbnN0YW5jZUluUHJvdG90eXBlQ2hhaW4oVjhET01XaW5kb3c6Okdl
dFRlbXBsYXRlKGNvbnRleHQtPkdldElzb2xhdGUoKSkpOworICAgIHY4OjpIYW5kbGU8djg6Ok9i
amVjdD4gd2luZG93V3JhcHBlciA9IGdsb2JhbC0+RmluZEluc3RhbmNlSW5Qcm90b3R5cGVDaGFp
bihWOERPTVdpbmRvdzo6R2V0VGVtcGxhdGUoY29udGV4dC0+R2V0SXNvbGF0ZSgpLCBNYWluV29y
bGQpKTsKKyAgICBpZiAoIXdpbmRvd1dyYXBwZXIuSXNFbXB0eSgpKQorICAgICAgICByZXR1cm4g
VjhET01XaW5kb3c6OnRvTmF0aXZlKHdpbmRvd1dyYXBwZXIpLT5zY3JpcHRFeGVjdXRpb25Db250
ZXh0KCk7CisgICAgd2luZG93V3JhcHBlciA9IGdsb2JhbC0+RmluZEluc3RhbmNlSW5Qcm90b3R5
cGVDaGFpbihWOERPTVdpbmRvdzo6R2V0VGVtcGxhdGUoY29udGV4dC0+R2V0SXNvbGF0ZSgpLCBJ
c29sYXRlZFdvcmxkKSk7CiAgICAgaWYgKCF3aW5kb3dXcmFwcGVyLklzRW1wdHkoKSkKICAgICAg
ICAgcmV0dXJuIFY4RE9NV2luZG93Ojp0b05hdGl2ZSh3aW5kb3dXcmFwcGVyKS0+c2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpOwogI2lmIEVOQUJMRShXT1JLRVJTKQotICAgIHY4OjpIYW5kbGU8djg6
Ok9iamVjdD4gd29ya2VyV3JhcHBlciA9IGdsb2JhbC0+RmluZEluc3RhbmNlSW5Qcm90b3R5cGVD
aGFpbihWOFdvcmtlckNvbnRleHQ6OkdldFRlbXBsYXRlKGNvbnRleHQtPkdldElzb2xhdGUoKSkp
OworICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd29ya2VyV3JhcHBlciA9IGdsb2JhbC0+Rmlu
ZEluc3RhbmNlSW5Qcm90b3R5cGVDaGFpbihWOFdvcmtlckNvbnRleHQ6OkdldFRlbXBsYXRlKGNv
bnRleHQtPkdldElzb2xhdGUoKSwgV29ya2VyV29ybGQpKTsKICAgICBpZiAoIXdvcmtlcldyYXBw
ZXIuSXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gVjhXb3JrZXJDb250ZXh0Ojp0b05hdGl2ZSh3
b3JrZXJXcmFwcGVyKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwogI2VuZGlmCkBAIC0zMDUs
NCArMzExLDI5IEBAIHZvaWQgY3Jhc2hJZlY4SXNEZWFkKCkKICAgICB9CiB9CiAKK1dyYXBwZXJX
b3JsZFR5cGUgd29ybGRUeXBlKHY4OjpJc29sYXRlKiBpc29sYXRlKQoreworICAgIFY4UGVySXNv
bGF0ZURhdGEqIGRhdGEgPSBpc29sYXRlID8gVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRl
KSA6IFY4UGVySXNvbGF0ZURhdGE6OmN1cnJlbnQoKTsKKyAgICAvLyBUT0RPOiBSZW5hbWUgZG9t
RGF0YVN0b3JlKCkgdG8gd29ya2VyRGF0YVN0b3JlKCkuCisgICAgaWYgKFVOTElLRUxZKCEhZGF0
YS0+ZG9tRGF0YVN0b3JlKCkpKQorICAgICAgICByZXR1cm4gV29ya2VyV29ybGQ7CisKKyAgICBp
ZiAoRE9NV3JhcHBlcldvcmxkOjppc29sYXRlZFdvcmxkc0V4aXN0KCkpIHsKKyAgICAgICAgRE9N
V3JhcHBlcldvcmxkKiBpc29sYXRlZFdvcmxkID0gRE9NV3JhcHBlcldvcmxkOjpnZXRXb3JsZCh2
ODo6Q29udGV4dDo6R2V0RW50ZXJlZCgpKTsKKyAgICAgICAgaWYgKFVOTElLRUxZKCEhaXNvbGF0
ZWRXb3JsZCkpCisgICAgICAgICAgICByZXR1cm4gSXNvbGF0ZWRXb3JsZDsKKyAgICB9CisgICAg
cmV0dXJuIE1haW5Xb3JsZDsKK30KKworV3JhcHBlcldvcmxkVHlwZSBtYWluSXNvbGF0ZVdvcmxk
VHlwZSh2ODo6SXNvbGF0ZSogaXNvbGF0ZSkKK3sKKyAgICBpZiAoRE9NV3JhcHBlcldvcmxkOjpp
c29sYXRlZFdvcmxkc0V4aXN0KCkpIHsKKyAgICAgICAgRE9NV3JhcHBlcldvcmxkKiBpc29sYXRl
ZFdvcmxkID0gRE9NV3JhcHBlcldvcmxkOjpnZXRXb3JsZCh2ODo6Q29udGV4dDo6R2V0RW50ZXJl
ZCgpKTsKKyAgICAgICAgaWYgKFVOTElLRUxZKCEhaXNvbGF0ZWRXb3JsZCkpCisgICAgICAgICAg
ICByZXR1cm4gSXNvbGF0ZWRXb3JsZDsKKyAgICB9CisgICAgcmV0dXJuIE1haW5Xb3JsZDsKK30K
KwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvVjhCaW5kaW5nLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEJpbmRp
bmcuaAppbmRleCA5NjJiMDg2OTllODFlZmE3MDE1NGMzZDBhYWE1MTM1MTZhMjYxOTk1Li5kMjIz
NjU3Y2RlZjIyOGRjNzc1ZDdmN2E3MGNmY2NiYWFiNzM0MjA3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy92OC9WOEJpbmRpbmcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9WOEJpbmRpbmcuaApAQCAtNDc0LDYgKzQ3NCw5IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogICAgIHZvaWQgY3Jhc2hJZlY4SXNEZWFkKCk7CiAKKyAgICBXcmFwcGVyV29ybGRUeXBl
IHdvcmxkVHlwZSh2ODo6SXNvbGF0ZSopOworICAgIFdyYXBwZXJXb3JsZFR5cGUgbWFpbklzb2xh
dGVXb3JsZFR5cGUodjg6Oklzb2xhdGUqKTsKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAj
ZW5kaWYgLy8gVjhCaW5kaW5nX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L1Y4RE9NV2luZG93U2hlbGwuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhE
T01XaW5kb3dTaGVsbC5jcHAKaW5kZXggOTU0NjkwNDE4ZDBmNTdiNWY3YzdkOGEyYmNlOGEyMjg2
ZDNlM2E1ZS4uYTk4OTdmZTI0MTIzM2M4NDAyN2RkOWQyYjliZTIyZTAyOTU3YjhiYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhET01XaW5kb3dTaGVsbC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhET01XaW5kb3dTaGVsbC5jcHAKQEAgLTM0
LDYgKzM0LDcgQEAKICNpbmNsdWRlICJDb250ZW50U2VjdXJpdHlQb2xpY3kuaCIKICNpbmNsdWRl
ICJEYXRlRXh0ZW5zaW9uLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnRMb2FkZXIuaCIKKyNpbmNsdWRl
ICJET01XcmFwcGVyV29ybGQuaCIKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIkZyYW1l
TG9hZGVyQ2xpZW50LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgiCkBA
IC0xNTMsNyArMTU0LDcgQEAgdm9pZCBWOERPTVdpbmRvd1NoZWxsOjpjbGVhckZvck5hdmlnYXRp
b24oKQogICAgIC8vIHdpbGwgYmUgcHJvdGVjdGVkIGJ5IHRoZSBzZWN1cml0eSBjaGVja3Mgb24g
dGhlIERPTVdpbmRvdyB3cmFwcGVyLgogICAgIGNsZWFyRG9jdW1lbnRQcm9wZXJ0eSgpOwogCi0g
ICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3aW5kb3dXcmFwcGVyID0gbV9nbG9iYWwtPkZpbmRJ
bnN0YW5jZUluUHJvdG90eXBlQ2hhaW4oVjhET01XaW5kb3c6OkdldFRlbXBsYXRlKG1faXNvbGF0
ZSkpOworICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd2luZG93V3JhcHBlciA9IG1fZ2xvYmFs
LT5GaW5kSW5zdGFuY2VJblByb3RvdHlwZUNoYWluKFY4RE9NV2luZG93OjpHZXRUZW1wbGF0ZSht
X2lzb2xhdGUsIG1haW5Jc29sYXRlV29ybGRUeXBlKG1faXNvbGF0ZSkpKTsKICAgICBBU1NFUlQo
IXdpbmRvd1dyYXBwZXIuSXNFbXB0eSgpKTsKICAgICB3aW5kb3dXcmFwcGVyLT5UdXJuT25BY2Nl
c3NDaGVjaygpOwogICAgIG1fY29udGV4dC0+RGV0YWNoR2xvYmFsKCk7CkBAIC0zMTAsNiArMzEx
LDcgQEAgdm9pZCBWOERPTVdpbmRvd1NoZWxsOjpjcmVhdGVDb250ZXh0KCkKIAogYm9vbCBWOERP
TVdpbmRvd1NoZWxsOjppbnN0YWxsRE9NV2luZG93KCkKIHsKKyAgICBET01XcmFwcGVyV29ybGQ6
OnNldEluaXRpYWxpemluZ1dpbmRvdyh0cnVlKTsKICAgICBET01XaW5kb3cqIHdpbmRvdyA9IG1f
ZnJhbWUtPmRvY3VtZW50KCktPmRvbVdpbmRvdygpOwogICAgIHY4OjpMb2NhbDx2ODo6T2JqZWN0
PiB3aW5kb3dXcmFwcGVyID0gVjhPYmplY3RDb25zdHJ1Y3Rvcjo6bmV3SW5zdGFuY2UoVjhQZXJD
b250ZXh0RGF0YTo6ZnJvbShtX2NvbnRleHQuZ2V0KCkpLT5jb25zdHJ1Y3RvckZvclR5cGUoJlY4
RE9NV2luZG93OjppbmZvKSk7CiAgICAgaWYgKHdpbmRvd1dyYXBwZXIuSXNFbXB0eSgpKQpAQCAt
MzM2LDYgKzMzOCw3IEBAIGJvb2wgVjhET01XaW5kb3dTaGVsbDo6aW5zdGFsbERPTVdpbmRvdygp
CiAgICAgVjhET01XcmFwcGVyOjpzZXROYXRpdmVJbmZvKGlubmVyR2xvYmFsT2JqZWN0LCAmVjhE
T01XaW5kb3c6OmluZm8sIHdpbmRvdyk7CiAgICAgaW5uZXJHbG9iYWxPYmplY3QtPlNldFByb3Rv
dHlwZSh3aW5kb3dXcmFwcGVyKTsKICAgICBWOERPTVdyYXBwZXI6OmFzc29jaWF0ZU9iamVjdFdp
dGhXcmFwcGVyKFBhc3NSZWZQdHI8RE9NV2luZG93Pih3aW5kb3cpLCAmVjhET01XaW5kb3c6Omlu
Zm8sIHdpbmRvd1dyYXBwZXIsIG1faXNvbGF0ZSwgV3JhcHBlckNvbmZpZ3VyYXRpb246OkRlcGVu
ZGVudCk7CisgICAgRE9NV3JhcHBlcldvcmxkOjpzZXRJbml0aWFsaXppbmdXaW5kb3coZmFsc2Up
OwogICAgIHJldHVybiB0cnVlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9WOERPTVdyYXBwZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhE
T01XcmFwcGVyLmNwcAppbmRleCA0ZDhjMjI2ZjNlMjcyZjBlMzU5NjIxZThkNDA2OGMzMTk0YjUz
ZmI4Li4xNmM5YjJkYjQ1NTAyMWUyNDM5NTNmOWQ2OWJhYTQwZWQ3MTllZWMxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTVdyYXBwZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NV3JhcHBlci5jcHAKQEAgLTc5LDcgKzc5LDcgQEAg
djg6OkxvY2FsPHY4OjpPYmplY3Q+IFY4RE9NV3JhcHBlcjo6Y3JlYXRlV3JhcHBlcih2ODo6SGFu
ZGxlPHY4OjpPYmplY3Q+IGNyZWF0aW8KICAgICBWOFdyYXBwZXJJbnN0YW50aWF0aW9uU2NvcGUg
c2NvcGUoY3JlYXRpb25Db250ZXh0KTsKIAogICAgIFY4UGVyQ29udGV4dERhdGEqIHBlckNvbnRl
eHREYXRhID0gVjhQZXJDb250ZXh0RGF0YTo6ZnJvbShzY29wZS5jb250ZXh0KCkpOwotICAgIHY4
OjpMb2NhbDx2ODo6T2JqZWN0PiB3cmFwcGVyID0gcGVyQ29udGV4dERhdGEgPyBwZXJDb250ZXh0
RGF0YS0+Y3JlYXRlV3JhcHBlckZyb21DYWNoZSh0eXBlKSA6IFY4T2JqZWN0Q29uc3RydWN0b3I6
Om5ld0luc3RhbmNlKHR5cGUtPmdldFRlbXBsYXRlKGlzb2xhdGUpLT5HZXRGdW5jdGlvbigpKTsK
KyAgICB2ODo6TG9jYWw8djg6Ok9iamVjdD4gd3JhcHBlciA9IHBlckNvbnRleHREYXRhID8gcGVy
Q29udGV4dERhdGEtPmNyZWF0ZVdyYXBwZXJGcm9tQ2FjaGUodHlwZSkgOiBWOE9iamVjdENvbnN0
cnVjdG9yOjpuZXdJbnN0YW5jZSh0eXBlLT5nZXRUZW1wbGF0ZShpc29sYXRlLCBtYWluSXNvbGF0
ZVdvcmxkVHlwZShpc29sYXRlKSktPkdldEZ1bmN0aW9uKCkpOwogCiAgICAgaWYgKHR5cGUgPT0g
JlY4SFRNTERvY3VtZW50OjppbmZvICYmICF3cmFwcGVyLklzRW1wdHkoKSkKICAgICAgICAgd3Jh
cHBlciA9IFY4SFRNTERvY3VtZW50Ojp3cmFwSW5TaGFkb3dPYmplY3Qod3JhcHBlciwgc3RhdGlj
X2Nhc3Q8Tm9kZSo+KGltcGwpLCBpc29sYXRlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L1Y4SW5pdGlhbGl6ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvVjhJbml0aWFsaXplci5jcHAKaW5kZXggY2IzYmM2ZGMxZWNjYTJhYmI5NDViOTllMzQ3NDA0
NGQyMjMyOGIxNi4uMmRmYTBhNDAzZDc0ZDI3YjZmN2Q5MDViZTg3YWU3ZDk4OTQ1OWIzOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhJbml0aWFsaXplci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhJbml0aWFsaXplci5jcHAKQEAgLTUxLDcg
KzUxLDcgQEAgc3RhdGljIEZyYW1lKiBmaW5kRnJhbWUodjg6OkxvY2FsPHY4OjpPYmplY3Q+IGhv
c3QsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IGRhdGEsIHYKICAgICBXcmFwcGVyVHlwZUluZm8qIHR5
cGUgPSBXcmFwcGVyVHlwZUluZm86OnVud3JhcChkYXRhKTsKIAogICAgIGlmIChWOERPTVdpbmRv
dzo6aW5mby5lcXVhbHModHlwZSkpIHsKLSAgICAgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3
aW5kb3dXcmFwcGVyID0gaG9zdC0+RmluZEluc3RhbmNlSW5Qcm90b3R5cGVDaGFpbihWOERPTVdp
bmRvdzo6R2V0VGVtcGxhdGUoaXNvbGF0ZSkpOworICAgICAgICB2ODo6SGFuZGxlPHY4OjpPYmpl
Y3Q+IHdpbmRvd1dyYXBwZXIgPSBob3N0LT5GaW5kSW5zdGFuY2VJblByb3RvdHlwZUNoYWluKFY4
RE9NV2luZG93OjpHZXRUZW1wbGF0ZShpc29sYXRlLCB3b3JsZFR5cGUoaXNvbGF0ZSkpKTsKICAg
ICAgICAgaWYgKHdpbmRvd1dyYXBwZXIuSXNFbXB0eSgpKQogICAgICAgICAgICAgcmV0dXJuIDA7
CiAgICAgICAgIHJldHVybiBWOERPTVdpbmRvdzo6dG9OYXRpdmUod2luZG93V3JhcHBlciktPmZy
YW1lKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOFBlckNvbnRl
eHREYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4UGVyQ29udGV4dERhdGEu
Y3BwCmluZGV4IGIzOTIzMjNhOGZkZTdlYzc0YTMzZjAyYWE5NWM2MTYyZWE4NjU2NDcuLjg2ZWVi
MTIzY2I4YzZjNjMxZDYyZGVlOGVmNTg0ZGQ5ZDUwMjM4YTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4UGVyQ29udGV4dERhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L1Y4UGVyQ29udGV4dERhdGEuY3BwCkBAIC0xMTUsNyArMTE1LDcgQEAg
djg6OkxvY2FsPHY4OjpGdW5jdGlvbj4gVjhQZXJDb250ZXh0RGF0YTo6Y29uc3RydWN0b3JGb3JU
eXBlU2xvd0Nhc2UoV3JhcHBlclR5cGUKICAgICBBU1NFUlQoIW1fb2JqZWN0UHJvdG90eXBlLmlz
RW1wdHkoKSk7CiAKICAgICB2ODo6Q29udGV4dDo6U2NvcGUgc2NvcGUobV9jb250ZXh0KTsKLSAg
ICB2ODo6SGFuZGxlPHY4OjpGdW5jdGlvblRlbXBsYXRlPiBmdW5jdGlvblRlbXBsYXRlID0gdHlw
ZS0+Z2V0VGVtcGxhdGUobV9jb250ZXh0LT5HZXRJc29sYXRlKCkpOworICAgIHY4OjpIYW5kbGU8
djg6OkZ1bmN0aW9uVGVtcGxhdGU+IGZ1bmN0aW9uVGVtcGxhdGUgPSB0eXBlLT5nZXRUZW1wbGF0
ZShtX2NvbnRleHQtPkdldElzb2xhdGUoKSwgd29ybGRUeXBlKG1fY29udGV4dC0+R2V0SXNvbGF0
ZSgpKSk7CiAgICAgLy8gR2V0dGluZyB0aGUgZnVuY3Rpb24gbWlnaHQgZmFpbCBpZiB3ZSdyZSBy
dW5uaW5nIG91dCBvZiBzdGFjayBvciBtZW1vcnkuCiAgICAgdjg6OlRyeUNhdGNoIHRyeUNhdGNo
OwogICAgIHY4OjpMb2NhbDx2ODo6RnVuY3Rpb24+IGZ1bmN0aW9uID0gZnVuY3Rpb25UZW1wbGF0
ZS0+R2V0RnVuY3Rpb24oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L1dvcmtlclNjcmlwdENvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
V29ya2VyU2NyaXB0Q29udHJvbGxlci5jcHAKaW5kZXggYmM0NjA5MzgyNzlmZTRkZjMzYTJhODE1
MDBjNjhjMWE2MzA1Nzk5MS4uNzM4NTYyMGNmY2I3OWE4Nzc5OTNkNTkxNjRiMzk4NmJhNTZkNzlk
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvV29ya2VyU2NyaXB0Q29u
dHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvV29ya2VyU2NyaXB0
Q29udHJvbGxlci5jcHAKQEAgLTI0OSw3ICsyNDksNyBAQCBXb3JrZXJTY3JpcHRDb250cm9sbGVy
KiBXb3JrZXJTY3JpcHRDb250cm9sbGVyOjpjb250cm9sbGVyRm9yQ29udGV4dCgpCiAgICAgICAg
IHJldHVybiAwOwogICAgIHY4OjpIYW5kbGU8djg6OkNvbnRleHQ+IGNvbnRleHQgPSB2ODo6Q29u
dGV4dDo6R2V0Q3VycmVudCgpOwogICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gZ2xvYmFsID0g
Y29udGV4dC0+R2xvYmFsKCk7Ci0gICAgZ2xvYmFsID0gZ2xvYmFsLT5GaW5kSW5zdGFuY2VJblBy
b3RvdHlwZUNoYWluKFY4V29ya2VyQ29udGV4dDo6R2V0VGVtcGxhdGUoY29udGV4dC0+R2V0SXNv
bGF0ZSgpKSk7CisgICAgZ2xvYmFsID0gZ2xvYmFsLT5GaW5kSW5zdGFuY2VJblByb3RvdHlwZUNo
YWluKFY4V29ya2VyQ29udGV4dDo6R2V0VGVtcGxhdGUoY29udGV4dC0+R2V0SXNvbGF0ZSgpLCBX
b3JrZXJXb3JsZCkpOwogICAgIC8vIFJldHVybiAwIGlmIHRoZSBjdXJyZW50IGV4ZWN1dGluZyBj
b250ZXh0IGlzIG5vdCB0aGUgd29ya2VyIGNvbnRleHQuCiAgICAgaWYgKGdsb2JhbC5Jc0VtcHR5
KCkpCiAgICAgICAgIHJldHVybiAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvdjgvV3JhcHBlclR5cGVJbmZvLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9XcmFw
cGVyVHlwZUluZm8uaAppbmRleCBiMzEwYWY5YTdkMmY4MDEyMDQ0ODc4NmE4OTBmM2JmYTg2MjY2
NTI2Li5kYzJhNWVlZTcwMTJiZmQ0ODcxMDYzZDE2NDY1OWQzOGU4ZTIwNjIyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9XcmFwcGVyVHlwZUluZm8uaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy92OC9XcmFwcGVyVHlwZUluZm8uaApAQCAtNDcsNyArNDcsMTMg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIHN0YXRpYyBjb25zdCB1aW50MTZfdCB2OERPTU5v
ZGVDbGFzc0lkID0gMTsKICAgICBzdGF0aWMgY29uc3QgdWludDE2X3QgdjhET01PYmplY3RDbGFz
c0lkID0gMjsKIAotICAgIHR5cGVkZWYgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxh
dGU+ICgqR2V0VGVtcGxhdGVGdW5jdGlvbikodjg6Oklzb2xhdGUqKTsKKyAgICBlbnVtIFdyYXBw
ZXJXb3JsZFR5cGUgeworICAgICAgICBNYWluV29ybGQsCisgICAgICAgIElzb2xhdGVkV29ybGQs
CisgICAgICAgIFdvcmtlcldvcmxkCisgICAgfTsKKworICAgIHR5cGVkZWYgdjg6OlBlcnNpc3Rl
bnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+ICgqR2V0VGVtcGxhdGVGdW5jdGlvbikodjg6Oklzb2xh
dGUqLCBXcmFwcGVyV29ybGRUeXBlKTsKICAgICB0eXBlZGVmIHZvaWQgKCpEZXJlZk9iamVjdEZ1
bmN0aW9uKSh2b2lkKik7CiAgICAgdHlwZWRlZiBBY3RpdmVET01PYmplY3QqICgqVG9BY3RpdmVE
T01PYmplY3RGdW5jdGlvbikodjg6OkhhbmRsZTx2ODo6T2JqZWN0Pik7CiAgICAgdHlwZWRlZiBF
dmVudFRhcmdldCogKCpUb0V2ZW50VGFyZ2V0RnVuY3Rpb24pKHY4OjpIYW5kbGU8djg6Ok9iamVj
dD4pOwpAQCAtODUsNyArOTEsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KICAgICAgICAgCi0gICAgICAgIHY4OjpQZXJzaXN0ZW50
PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBnZXRUZW1wbGF0ZSh2ODo6SXNvbGF0ZSogaXNvbGF0ZSkg
eyByZXR1cm4gZ2V0VGVtcGxhdGVGdW5jdGlvbihpc29sYXRlKTsgfQorICAgICAgICB2ODo6UGVy
c2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gZ2V0VGVtcGxhdGUodjg6Oklzb2xhdGUqIGlz
b2xhdGUsIFdyYXBwZXJXb3JsZFR5cGUgd29ybGRUeXBlKSB7IHJldHVybiBnZXRUZW1wbGF0ZUZ1
bmN0aW9uKGlzb2xhdGUsIHdvcmxkVHlwZSk7IH0KICAgICAgICAgCiAgICAgICAgIHZvaWQgZGVy
ZWZPYmplY3Qodm9pZCogb2JqZWN0KQogICAgICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhET01XaW5kb3dDdXN0b20uY3BwIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RE9NV2luZG93Q3VzdG9tLmNwcAppbmRleCAxNWQ4
YmIxZDZmMGRlZTg3ZTE3NDhlZDA1MGUzZmE4ZmNhZTE5MmQzLi4wOTRlMzkwYTc0NGVjZTgxMmE4
NDVhN2RkNGNhZGQzYjFkNjc1YjViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy92OC9jdXN0b20vVjhET01XaW5kb3dDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L2N1c3RvbS9WOERPTVdpbmRvd0N1c3RvbS5jcHAKQEAgLTE0Niw3ICsxNDYsNyBA
QCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gV2luZG93U2V0VGltZW91dEltcGwoY29uc3Qgdjg6OkFy
Z3VtZW50cyYgYXJncywgYm9vbCBzaW5nbAogCiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhET01X
aW5kb3c6OmV2ZW50QXR0ckdldHRlckN1c3RvbSh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwg
Y29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsKLSAgICB2ODo6SGFuZGxlPHY4OjpPYmpl
Y3Q+IGhvbGRlciA9IGluZm8uVGhpcygpLT5GaW5kSW5zdGFuY2VJblByb3RvdHlwZUNoYWluKFY4
RE9NV2luZG93OjpHZXRUZW1wbGF0ZShpbmZvLkdldElzb2xhdGUoKSkpOworICAgIHY4OjpIYW5k
bGU8djg6Ok9iamVjdD4gaG9sZGVyID0gaW5mby5UaGlzKCktPkZpbmRJbnN0YW5jZUluUHJvdG90
eXBlQ2hhaW4oVjhET01XaW5kb3c6OkdldFRlbXBsYXRlKGluZm8uR2V0SXNvbGF0ZSgpLCB3b3Js
ZFR5cGUoaW5mby5HZXRJc29sYXRlKCkpKSk7CiAgICAgaWYgKGhvbGRlci5Jc0VtcHR5KCkpCiAg
ICAgICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7CiAKQEAgLTE2OCw3ICsxNjgsNyBAQCB2ODo6
SGFuZGxlPHY4OjpWYWx1ZT4gVjhET01XaW5kb3c6OmV2ZW50QXR0ckdldHRlckN1c3RvbSh2ODo6
TG9jYWw8djg6OlN0cmluZz4gbgogCiB2b2lkIFY4RE9NV2luZG93OjpldmVudEF0dHJTZXR0ZXJD
dXN0b20odjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZh
bHVlLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewotICAgIHY4OjpIYW5kbGU8djg6
Ok9iamVjdD4gaG9sZGVyID0gaW5mby5UaGlzKCktPkZpbmRJbnN0YW5jZUluUHJvdG90eXBlQ2hh
aW4oVjhET01XaW5kb3c6OkdldFRlbXBsYXRlKGluZm8uR2V0SXNvbGF0ZSgpKSk7CisgICAgdjg6
OkhhbmRsZTx2ODo6T2JqZWN0PiBob2xkZXIgPSBpbmZvLlRoaXMoKS0+RmluZEluc3RhbmNlSW5Q
cm90b3R5cGVDaGFpbihWOERPTVdpbmRvdzo6R2V0VGVtcGxhdGUoaW5mby5HZXRJc29sYXRlKCks
IHdvcmxkVHlwZShpbmZvLkdldElzb2xhdGUoKSkpKTsKICAgICBpZiAoaG9sZGVyLklzRW1wdHko
KSkKICAgICAgICAgcmV0dXJuOwogCkBAIC0zNDQsNyArMzQ0LDcgQEAgdjg6OkhhbmRsZTx2ODo6
VmFsdWU+IFY4RE9NV2luZG93Ojpwb3N0TWVzc2FnZU1ldGhvZEN1c3RvbShjb25zdCB2ODo6QXJn
dW1lbnRzJgogLy8gc3dpdGNoaW5nIGNvbnRleHQgb2YgcmVjZWl2ZXIuIEkgY29uc2lkZXIgaXQg
aXMgZGFuZ2Vyb3VzLgogdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4RE9NV2luZG93Ojp0b1N0cmlu
Z01ldGhvZEN1c3RvbShjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewotICAgIHY4OjpIYW5k
bGU8djg6Ok9iamVjdD4gZG9tV3JhcHBlciA9IGFyZ3MuVGhpcygpLT5GaW5kSW5zdGFuY2VJblBy
b3RvdHlwZUNoYWluKFY4RE9NV2luZG93OjpHZXRUZW1wbGF0ZShhcmdzLkdldElzb2xhdGUoKSkp
OworICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gZG9tV3JhcHBlciA9IGFyZ3MuVGhpcygpLT5G
aW5kSW5zdGFuY2VJblByb3RvdHlwZUNoYWluKFY4RE9NV2luZG93OjpHZXRUZW1wbGF0ZShhcmdz
LkdldElzb2xhdGUoKSwgd29ybGRUeXBlKGFyZ3MuR2V0SXNvbGF0ZSgpKSkpOwogICAgIGlmIChk
b21XcmFwcGVyLklzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIGFyZ3MuVGhpcygpLT5PYmplY3RQ
cm90b1RvU3RyaW5nKCk7CiAgICAgcmV0dXJuIGRvbVdyYXBwZXItPk9iamVjdFByb3RvVG9TdHJp
bmcoKTsKQEAgLTUxMCw3ICs1MTAsNyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhET01XaW5k
b3c6OnNldEludGVydmFsTWV0aG9kQ3VzdG9tKGNvbnN0IHY4OjpBcmd1bWVudHMmCiBib29sIFY4
RE9NV2luZG93OjpuYW1lZFNlY3VyaXR5Q2hlY2sodjg6OkxvY2FsPHY4OjpPYmplY3Q+IGhvc3Qs
IHY4OjpMb2NhbDx2ODo6VmFsdWU+IGtleSwgdjg6OkFjY2Vzc1R5cGUgdHlwZSwgdjg6OkxvY2Fs
PHY4OjpWYWx1ZT4pCiB7CiAgICAgdjg6Oklzb2xhdGUqIGlzb2xhdGUgPSB2ODo6SXNvbGF0ZTo6
R2V0Q3VycmVudCgpOwotICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd2luZG93ID0gaG9zdC0+
RmluZEluc3RhbmNlSW5Qcm90b3R5cGVDaGFpbihWOERPTVdpbmRvdzo6R2V0VGVtcGxhdGUoaXNv
bGF0ZSkpOworICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd2luZG93ID0gaG9zdC0+RmluZElu
c3RhbmNlSW5Qcm90b3R5cGVDaGFpbihWOERPTVdpbmRvdzo6R2V0VGVtcGxhdGUoaXNvbGF0ZSwg
d29ybGRUeXBlKGlzb2xhdGUpKSk7CiAgICAgaWYgKHdpbmRvdy5Jc0VtcHR5KCkpCiAgICAgICAg
IHJldHVybiBmYWxzZTsgIC8vIHRoZSBmcmFtZSBpcyBnb25lLgogCkBAIC01NDQsNyArNTQ0LDcg
QEAgYm9vbCBWOERPTVdpbmRvdzo6bmFtZWRTZWN1cml0eUNoZWNrKHY4OjpMb2NhbDx2ODo6T2Jq
ZWN0PiBob3N0LCB2ODo6TG9jYWw8djg6OlYKIGJvb2wgVjhET01XaW5kb3c6OmluZGV4ZWRTZWN1
cml0eUNoZWNrKHY4OjpMb2NhbDx2ODo6T2JqZWN0PiBob3N0LCB1aW50MzJfdCBpbmRleCwgdjg6
OkFjY2Vzc1R5cGUgdHlwZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4pCiB7CiAgICAgdjg6Oklzb2xh
dGUqIGlzb2xhdGUgPSB2ODo6SXNvbGF0ZTo6R2V0Q3VycmVudCgpOwotICAgIHY4OjpIYW5kbGU8
djg6Ok9iamVjdD4gd2luZG93ID0gaG9zdC0+RmluZEluc3RhbmNlSW5Qcm90b3R5cGVDaGFpbihW
OERPTVdpbmRvdzo6R2V0VGVtcGxhdGUoaXNvbGF0ZSkpOworICAgIHY4OjpIYW5kbGU8djg6Ok9i
amVjdD4gd2luZG93ID0gaG9zdC0+RmluZEluc3RhbmNlSW5Qcm90b3R5cGVDaGFpbihWOERPTVdp
bmRvdzo6R2V0VGVtcGxhdGUoaXNvbGF0ZSwgd29ybGRUeXBlKGlzb2xhdGUpKSk7CiAgICAgaWYg
KHdpbmRvdy5Jc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApAQCAtNTg2LDcgKzU4
Niw3IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4KERPTVdpbmRvdyogd2luZG93LCB2ODo6
SGFuZGxlPHY4OjpPYmplY3Q+IGNyZWF0aW9uQ29uCiAgICAgLy8gbmVjZXNzYXJpbHkgdGhlIGZp
cnN0IGdsb2JhbCBvYmplY3QgYXNzb2NpYXRlZCB3aXRoIHRoYXQgRE9NV2luZG93LgogICAgIHY4
OjpIYW5kbGU8djg6OkNvbnRleHQ+IGN1cnJlbnRDb250ZXh0ID0gdjg6OkNvbnRleHQ6OkdldEN1
cnJlbnQoKTsKICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGN1cnJlbnRHbG9iYWwgPSBjdXJy
ZW50Q29udGV4dC0+R2xvYmFsKCk7Ci0gICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3aW5kb3dX
cmFwcGVyID0gY3VycmVudEdsb2JhbC0+RmluZEluc3RhbmNlSW5Qcm90b3R5cGVDaGFpbihWOERP
TVdpbmRvdzo6R2V0VGVtcGxhdGUoaXNvbGF0ZSkpOworICAgIHY4OjpIYW5kbGU8djg6Ok9iamVj
dD4gd2luZG93V3JhcHBlciA9IGN1cnJlbnRHbG9iYWwtPkZpbmRJbnN0YW5jZUluUHJvdG90eXBl
Q2hhaW4oVjhET01XaW5kb3c6OkdldFRlbXBsYXRlKGlzb2xhdGUsIG1haW5Jc29sYXRlV29ybGRU
eXBlKGlzb2xhdGUpKSk7CiAgICAgaWYgKCF3aW5kb3dXcmFwcGVyLklzRW1wdHkoKSkgewogICAg
ICAgICBpZiAoVjhET01XaW5kb3c6OnRvTmF0aXZlKHdpbmRvd1dyYXBwZXIpID09IHdpbmRvdykK
ICAgICAgICAgICAgIHJldHVybiBjdXJyZW50R2xvYmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTERvY3VtZW50Q3VzdG9tLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxEb2N1bWVudEN1c3RvbS5jcHAKaW5k
ZXggNWMxZjY1ZmY1MTlkYTJlYzU3ODdlNDcyMDBlNzA2NThmYWNhODIxNC4uMjFhNjJkNmUyMGNk
NmRjNTgzYmUxZGQzODFhMzFiMmQwNjhhNDNiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTERvY3VtZW50Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MRG9jdW1lbnRDdXN0b20uY3BwCkBAIC02
MCw3ICs2MCw3IEBAIHY4OjpMb2NhbDx2ODo6T2JqZWN0PiBWOEhUTUxEb2N1bWVudDo6d3JhcElu
U2hhZG93T2JqZWN0KHY4OjpMb2NhbDx2ODo6T2JqZWN0PiB3CiAgICAgICAgIGlmIChzaGFkb3dU
ZW1wbGF0ZS5Jc0VtcHR5KCkpCiAgICAgICAgICAgICByZXR1cm4gdjg6OkxvY2FsPHY4OjpPYmpl
Y3Q+KCk7CiAgICAgICAgIHNoYWRvd1RlbXBsYXRlLT5TZXRDbGFzc05hbWUodjg6OlN0cmluZzo6
TmV3U3ltYm9sKCJIVE1MRG9jdW1lbnQiKSk7Ci0gICAgICAgIHNoYWRvd1RlbXBsYXRlLT5Jbmhl
cml0KFY4SFRNTERvY3VtZW50OjpHZXRUZW1wbGF0ZShpc29sYXRlKSk7CisgICAgICAgIHNoYWRv
d1RlbXBsYXRlLT5Jbmhlcml0KFY4SFRNTERvY3VtZW50OjpHZXRUZW1wbGF0ZShpc29sYXRlLCBt
YWluSXNvbGF0ZVdvcmxkVHlwZShpc29sYXRlKSkpOwogICAgICAgICBzaGFkb3dUZW1wbGF0ZS0+
SW5zdGFuY2VUZW1wbGF0ZSgpLT5TZXRJbnRlcm5hbEZpZWxkQ291bnQoVjhIVE1MRG9jdW1lbnQ6
OmludGVybmFsRmllbGRDb3VudCk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MSW1hZ2VFbGVtZW50Q29uc3RydWN0b3IuY3BwIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTEltYWdlRWxlbWVudENvbnN0
cnVjdG9yLmNwcAppbmRleCA5ZTNkY2Q5ZTBkNzRjZTk3MmNlN2IxZTNlNTM3M2M5M2M5YjkyNGNj
Li5jNDE0MjFiOTBiODNhNmQxOTJhYmI0YWU1NTFiY2I1NzIwNDU0YTI5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MSW1hZ2VFbGVtZW50Q29uc3Ry
dWN0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxJ
bWFnZUVsZW1lbnRDb25zdHJ1Y3Rvci5jcHAKQEAgLTg2LDcgKzg2LDcgQEAgc3RhdGljIHY4OjpI
YW5kbGU8djg6OlZhbHVlPiBuYW1lZENvbnN0cnVjdG9yQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3Vt
ZW50cyYgYXJncykKICAgICByZXR1cm4gbmFtZWRDb25zdHJ1Y3RvcihhcmdzKTsKIH0KIAotdjg6
OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IFY4SFRNTEltYWdlRWxlbWVudENvbnN0
cnVjdG9yOjpHZXRUZW1wbGF0ZSh2ODo6SXNvbGF0ZSogaXNvbGF0ZSkKK3Y4OjpQZXJzaXN0ZW50
PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBWOEhUTUxJbWFnZUVsZW1lbnRDb25zdHJ1Y3Rvcjo6R2V0
VGVtcGxhdGUodjg6Oklzb2xhdGUqIGlzb2xhdGUsIFdyYXBwZXJXb3JsZFR5cGUgd29ybGRUeXBl
KQogewogICAgIHN0YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gY2Fj
aGVkVGVtcGxhdGU7CiAgICAgaWYgKCFjYWNoZWRUZW1wbGF0ZS5Jc0VtcHR5KCkpCkBAIC05OCw3
ICs5OCw3IEBAIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBWOEhUTUxJbWFn
ZUVsZW1lbnRDb25zdHJ1Y3Rvcjo6R2V0VGVtcGxhdGUoCiAgICAgdjg6OkxvY2FsPHY4OjpPYmpl
Y3RUZW1wbGF0ZT4gaW5zdGFuY2UgPSByZXN1bHQtPkluc3RhbmNlVGVtcGxhdGUoKTsKICAgICBp
bnN0YW5jZS0+U2V0SW50ZXJuYWxGaWVsZENvdW50KFY4SFRNTEltYWdlRWxlbWVudDo6aW50ZXJu
YWxGaWVsZENvdW50KTsKICAgICByZXN1bHQtPlNldENsYXNzTmFtZSh2ODo6U3RyaW5nOjpOZXdT
eW1ib2woIkhUTUxJbWFnZUVsZW1lbnQiKSk7Ci0gICAgcmVzdWx0LT5Jbmhlcml0KFY4SFRNTElt
YWdlRWxlbWVudDo6R2V0VGVtcGxhdGUoaXNvbGF0ZSkpOworICAgIHJlc3VsdC0+SW5oZXJpdChW
OEhUTUxJbWFnZUVsZW1lbnQ6OkdldFRlbXBsYXRlKGlzb2xhdGUsIHdvcmxkVHlwZSkpOwogCiAg
ICAgY2FjaGVkVGVtcGxhdGUgPSB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT46
Ok5ldyhpc29sYXRlLCByZXN1bHQpOwogICAgIHJldHVybiBjYWNoZWRUZW1wbGF0ZTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxJbWFnZUVsZW1l
bnRDb25zdHJ1Y3Rvci5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRN
TEltYWdlRWxlbWVudENvbnN0cnVjdG9yLmgKaW5kZXggOTU2YmM4ZDg1YjljMGMyZTExOWIxOGFh
ZDE4NzA3YjUyODllYjU5MS4uOTdiMzhlNTA1ZWYwYjgxYTgxMWU4YTMxN2Y1Y2M3MjVlODdiOTJj
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTElt
YWdlRWxlbWVudENvbnN0cnVjdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
Y3VzdG9tL1Y4SFRNTEltYWdlRWxlbWVudENvbnN0cnVjdG9yLmgKQEAgLTM5LDcgKzM5LDcgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBWOEhUTUxJbWFnZUVsZW1lbnRDb25zdHJ1Y3Rv
ciB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBs
YXRlPiBHZXRUZW1wbGF0ZSh2ODo6SXNvbGF0ZSogPSAwKTsKKyAgICBzdGF0aWMgdjg6OlBlcnNp
c3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IEdldFRlbXBsYXRlKHY4OjpJc29sYXRlKiwgV3Jh
cHBlcldvcmxkVHlwZSk7CiAgICAgc3RhdGljIFdyYXBwZXJUeXBlSW5mbyBpbmZvOwogfTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SW5qZWN0ZWRT
Y3JpcHRNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOElu
amVjdGVkU2NyaXB0TWFuYWdlci5jcHAKaW5kZXggYjI5NjFlMzAwNDBkYWM2OGIyMTRjYmE1YTQ4
YjYzMGRkNDM5ZmI1MC4uNzMzOTEzOTVjY2NlNmFkOTQxYjFjZmRjODNmMDZiNzJiYjBhYWQzNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SW5qZWN0ZWRT
Y3JpcHRNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20v
VjhJbmplY3RlZFNjcmlwdE1hbmFnZXIuY3BwCkBAIC01NSw3ICs1NSw3IEBAIHN0YXRpYyB2b2lk
IFdlYWtSZWZlcmVuY2VDYWxsYmFjayh2ODo6SXNvbGF0ZSogaXNvbGF0ZSwgdjg6OlBlcnNpc3Rl
bnQ8djg6OlZhbHVlCiAKIHN0YXRpYyB2ODo6TG9jYWw8djg6Ok9iamVjdD4gY3JlYXRlSW5qZWN0
ZWRTY3JpcHRIb3N0VjhXcmFwcGVyKEluamVjdGVkU2NyaXB0SG9zdCogaG9zdCwgdjg6Oklzb2xh
dGUqIGlzb2xhdGUpCiB7Ci0gICAgdjg6OkxvY2FsPHY4OjpGdW5jdGlvbj4gZnVuY3Rpb24gPSBW
OEluamVjdGVkU2NyaXB0SG9zdDo6R2V0VGVtcGxhdGUoaXNvbGF0ZSktPkdldEZ1bmN0aW9uKCk7
CisgICAgdjg6OkxvY2FsPHY4OjpGdW5jdGlvbj4gZnVuY3Rpb24gPSBWOEluamVjdGVkU2NyaXB0
SG9zdDo6R2V0VGVtcGxhdGUoaXNvbGF0ZSwgTWFpbldvcmxkKS0+R2V0RnVuY3Rpb24oKTsKICAg
ICBpZiAoZnVuY3Rpb24uSXNFbXB0eSgpKSB7CiAgICAgICAgIC8vIFJldHVybiBpZiBhbGxvY2F0
aW9uIGZhaWxlZC4KICAgICAgICAgcmV0dXJuIHY4OjpMb2NhbDx2ODo6T2JqZWN0PigpOwpAQCAt
MTE4LDcgKzExOCw3IEBAIGJvb2wgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOjpjYW5BY2Nlc3NJbnNw
ZWN0ZWRXaW5kb3coU2NyaXB0U3RhdGUqIHNjcmlwdFN0YXRlKQogICAgIHY4OjpMb2NhbDx2ODo6
T2JqZWN0PiBnbG9iYWwgPSBjb250ZXh0LT5HbG9iYWwoKTsKICAgICBpZiAoZ2xvYmFsLklzRW1w
dHkoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4g
aG9sZGVyID0gZ2xvYmFsLT5GaW5kSW5zdGFuY2VJblByb3RvdHlwZUNoYWluKFY4RE9NV2luZG93
OjpHZXRUZW1wbGF0ZShjb250ZXh0LT5HZXRJc29sYXRlKCkpKTsKKyAgICB2ODo6SGFuZGxlPHY4
OjpPYmplY3Q+IGhvbGRlciA9IGdsb2JhbC0+RmluZEluc3RhbmNlSW5Qcm90b3R5cGVDaGFpbihW
OERPTVdpbmRvdzo6R2V0VGVtcGxhdGUoY29udGV4dC0+R2V0SXNvbGF0ZSgpLCBNYWluV29ybGQp
KTsKICAgICBpZiAoaG9sZGVyLklzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
IEZyYW1lKiBmcmFtZSA9IFY4RE9NV2luZG93Ojp0b05hdGl2ZShob2xkZXIpLT5mcmFtZSgpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4TG9jYXRpb25D
dXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4TG9jYXRpb25D
dXN0b20uY3BwCmluZGV4IGVjNzEyMmY4ZDkzNzI2Y2I4OWZjOWMxNThmM2E1MzQ0NThiMGMyYTQu
LmIyZjllYTNiOGUyOTIzMjdhNDM1MGQ2ZjEyMWUwOGRmNGJjYTI3MGUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOExvY2F0aW9uQ3VzdG9tLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhMb2NhdGlvbkN1c3RvbS5jcHAK
QEAgLTE0MCw3ICsxNDAsNyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhMb2NhdGlvbjo6cmVs
b2FkQXR0ckdldHRlckN1c3RvbSh2ODo6TG9jYWw8djg6OlN0cmluZz4gbgogewogICAgIHY4OjpJ
c29sYXRlKiBpc29sYXRlID0gaW5mby5HZXRJc29sYXRlKCk7CiAgICAgc3RhdGljIHY4OjpQZXJz
aXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBwcml2YXRlVGVtcGxhdGUgPSB2ODo6UGVyc2lz
dGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT46Ok5ldyhpc29sYXRlLCB2ODo6RnVuY3Rpb25UZW1w
bGF0ZTo6TmV3KFY4TG9jYXRpb246OnJlbG9hZE1ldGhvZEN1c3RvbSwgdjhVbmRlZmluZWQoKSwg
djg6OlNpZ25hdHVyZTo6TmV3KFY4TG9jYXRpb246OkdldFJhd1RlbXBsYXRlKGlzb2xhdGUpKSkp
OwotICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gaG9sZGVyID0gaW5mby5UaGlzKCktPkZpbmRJ
bnN0YW5jZUluUHJvdG90eXBlQ2hhaW4oVjhMb2NhdGlvbjo6R2V0VGVtcGxhdGUoaXNvbGF0ZSkp
OworICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gaG9sZGVyID0gaW5mby5UaGlzKCktPkZpbmRJ
bnN0YW5jZUluUHJvdG90eXBlQ2hhaW4oVjhMb2NhdGlvbjo6R2V0VGVtcGxhdGUoaXNvbGF0ZSwg
d29ybGRUeXBlKGlzb2xhdGUpKSk7CiAgICAgaWYgKGhvbGRlci5Jc0VtcHR5KCkpIHsKICAgICAg
ICAgLy8gY2FuIG9ubHkgcmVhY2ggaGVyZSBieSAnb2JqZWN0Ll9fcHJvdG9fXy5mdW5jJywgYW5k
IGl0IHNob3VsZCBwYXNzZWQKICAgICAgICAgLy8gZG9tYWluIHNlY3VyaXR5IGNoZWNrIGFscmVh
ZHkKQEAgLTE1OCw3ICsxNTgsNyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhMb2NhdGlvbjo6
cmVwbGFjZUF0dHJHZXR0ZXJDdXN0b20odjg6OkxvY2FsPHY4OjpTdHJpbmc+CiB7CiAgICAgdjg6
Oklzb2xhdGUqIGlzb2xhdGUgPSBpbmZvLkdldElzb2xhdGUoKTsKICAgICBzdGF0aWMgdjg6OlBl
cnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IHByaXZhdGVUZW1wbGF0ZSA9IHY4OjpQZXJz
aXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPjo6TmV3KGlzb2xhdGUsIHY4OjpGdW5jdGlvblRl
bXBsYXRlOjpOZXcoVjhMb2NhdGlvbjo6cmVwbGFjZU1ldGhvZEN1c3RvbSwgdjhVbmRlZmluZWQo
KSwgdjg6OlNpZ25hdHVyZTo6TmV3KFY4TG9jYXRpb246OkdldFJhd1RlbXBsYXRlKGlzb2xhdGUp
KSkpOwotICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gaG9sZGVyID0gaW5mby5UaGlzKCktPkZp
bmRJbnN0YW5jZUluUHJvdG90eXBlQ2hhaW4oVjhMb2NhdGlvbjo6R2V0VGVtcGxhdGUoaXNvbGF0
ZSkpOworICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gaG9sZGVyID0gaW5mby5UaGlzKCktPkZp
bmRJbnN0YW5jZUluUHJvdG90eXBlQ2hhaW4oVjhMb2NhdGlvbjo6R2V0VGVtcGxhdGUoaXNvbGF0
ZSwgd29ybGRUeXBlKGlzb2xhdGUpKSk7CiAgICAgaWYgKGhvbGRlci5Jc0VtcHR5KCkpIHsKICAg
ICAgICAgLy8gY2FuIG9ubHkgcmVhY2ggaGVyZSBieSAnb2JqZWN0Ll9fcHJvdG9fXy5mdW5jJywg
YW5kIGl0IHNob3VsZCBwYXNzZWQKICAgICAgICAgLy8gZG9tYWluIHNlY3VyaXR5IGNoZWNrIGFs
cmVhZHkKQEAgLTE3Nyw3ICsxNzcsNyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhMb2NhdGlv
bjo6YXNzaWduQXR0ckdldHRlckN1c3RvbSh2ODo6TG9jYWw8djg6OlN0cmluZz4gbgogICAgIHY4
OjpJc29sYXRlKiBpc29sYXRlID0gaW5mby5HZXRJc29sYXRlKCk7CiAgICAgc3RhdGljIHY4OjpQ
ZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBwcml2YXRlVGVtcGxhdGUgPQogICAgICAg
ICB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT46Ok5ldyhpc29sYXRlLCB2ODo6
RnVuY3Rpb25UZW1wbGF0ZTo6TmV3KFY4TG9jYXRpb246OmFzc2lnbk1ldGhvZEN1c3RvbSwgdjhV
bmRlZmluZWQoKSwgdjg6OlNpZ25hdHVyZTo6TmV3KFY4TG9jYXRpb246OkdldFJhd1RlbXBsYXRl
KGlzb2xhdGUpKSkpOwotICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gaG9sZGVyID0gaW5mby5U
aGlzKCktPkZpbmRJbnN0YW5jZUluUHJvdG90eXBlQ2hhaW4oVjhMb2NhdGlvbjo6R2V0VGVtcGxh
dGUoaXNvbGF0ZSkpOworICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gaG9sZGVyID0gaW5mby5U
aGlzKCktPkZpbmRJbnN0YW5jZUluUHJvdG90eXBlQ2hhaW4oVjhMb2NhdGlvbjo6R2V0VGVtcGxh
dGUoaXNvbGF0ZSwgd29ybGRUeXBlKGlzb2xhdGUpKSk7CiAgICAgaWYgKGhvbGRlci5Jc0VtcHR5
KCkpIHsKICAgICAgICAgLy8gY2FuIG9ubHkgcmVhY2ggaGVyZSBieSAnb2JqZWN0Ll9fcHJvdG9f
Xy5mdW5jJywgYW5kIGl0IHNob3VsZCBwYXNzZWQKICAgICAgICAgLy8gZG9tYWluIHNlY3VyaXR5
IGNoZWNrIGFscmVhZHkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1
c3RvbS9WOE1lc3NhZ2VFdmVudEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92
OC9jdXN0b20vVjhNZXNzYWdlRXZlbnRDdXN0b20uY3BwCmluZGV4IDM4NGNiYTU3ZDY5MGU2YjM4
YWU3YmFkNzczZjc2MGUyMzgxYjdmYTYuLjhkYWRkNWM2ZGUwNzllN2VlNzM4NDZiYmRiNDY1YTQ3
MjY4YTNiYjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9W
OE1lc3NhZ2VFdmVudEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
Y3VzdG9tL1Y4TWVzc2FnZUV2ZW50Q3VzdG9tLmNwcApAQCAtMTE2LDcgKzExNiw3IEBAIHY4OjpI
YW5kbGU8djg6OlZhbHVlPiBWOE1lc3NhZ2VFdmVudDo6aW5pdE1lc3NhZ2VFdmVudE1ldGhvZEN1
c3RvbShjb25zdCB2ODo6QXJnCiAgICAgRE9NV2luZG93KiBzb3VyY2VBcmcgPSAwOwogICAgIGlm
IChhcmdzWzZdLT5Jc09iamVjdCgpKSB7CiAgICAgICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4g
d3JhcHBlciA9IHY4OjpIYW5kbGU8djg6Ok9iamVjdD46OkNhc3QoYXJnc1s2XSk7Ci0gICAgICAg
IHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd2luZG93ID0gd3JhcHBlci0+RmluZEluc3RhbmNlSW5Q
cm90b3R5cGVDaGFpbihWOERPTVdpbmRvdzo6R2V0VGVtcGxhdGUoYXJncy5HZXRJc29sYXRlKCkp
KTsKKyAgICAgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3aW5kb3cgPSB3cmFwcGVyLT5GaW5k
SW5zdGFuY2VJblByb3RvdHlwZUNoYWluKFY4RE9NV2luZG93OjpHZXRUZW1wbGF0ZShhcmdzLkdl
dElzb2xhdGUoKSwgd29ybGRUeXBlKGFyZ3MuR2V0SXNvbGF0ZSgpKSkpOwogICAgICAgICBpZiAo
IXdpbmRvdy5Jc0VtcHR5KCkpCiAgICAgICAgICAgICBzb3VyY2VBcmcgPSBWOERPTVdpbmRvdzo6
dG9OYXRpdmUod2luZG93KTsKICAgICB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>190720</attachid>
            <date>2013-02-28 06:57:32 -0800</date>
            <delta_ts>2013-03-01 03:07:22 -0800</delta_ts>
            <desc>Patch.</desc>
            <filename>bug-110875-20130228155344.patch</filename>
            <type>text/plain</type>
            <size>40857</size>
            <attacher name="Marja Hölttä">marja</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ0Mjk4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2M5ODA2NWIwMDZiNmE1
NmFjOWE1MmJhZWE5YTJkM2NlZTA4ZTBmMC4uYzc2NGRhZThjZDAzYmFkOGY0Y2YwNzEyYTJjMzdj
OWQ0MDRlODgwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDcwIEBACisyMDEzLTAyLTI2ICBNYXJq
YSBIw7ZsdHTDpCAgPG1hcmphQGNocm9taXVtLm9yZz4KKworICAgICAgICBWOCBiaW5kaW5nczog
QWRkIGEgIndvcmxkIHR5cGUiIHBhcmFtZXRlciB0byBHZXRUZW1wbGF0ZSBhbmQgQ29uZmlndXJl
VjhTb21ldGhpbmdUZW1wbGF0ZSBmdW5jdGlvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTExMDg3NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyAobm8gY2hhbmdlcyBpbiBiZWhhdmlv
ciB5ZXQpLgorCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG06
CisgICAgICAgIChHZW5lcmF0ZUhlYWRlcik6CisgICAgICAgIChHZW5lcmF0ZURvbWFpblNhZmVG
dW5jdGlvbkdldHRlcik6CisgICAgICAgIChHZW5lcmF0ZURvbWFpblNhZmVGdW5jdGlvblNldHRl
cik6CisgICAgICAgIChHZW5lcmF0ZU5vcm1hbEF0dHJHZXR0ZXIpOgorICAgICAgICAoR2VuZXJh
dGVOYW1lZENvbnN0cnVjdG9yKToKKyAgICAgICAgKEdlbmVyYXRlSW1wbGVtZW50YXRpb24pOgor
ICAgICAgICAqIGJpbmRpbmdzL3Y4L0RpY3Rpb25hcnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RGljdGlvbmFyeTo6Z2V0KToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9QYWdlU2NyaXB0RGVidWdT
ZXJ2ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cmV0cmlldmVGcmFtZVdpdGhHbG9iYWxPYmpl
Y3RDaGVjayk6CisgICAgICAgICogYmluZGluZ3MvdjgvVjhBZGFwdG9yRnVuY3Rpb24uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6VjhBZGFwdG9yRnVuY3Rpb246OmdldFRlbXBsYXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlY4QWRhcHRvckZ1bmN0aW9uOjp3cmFwKToKKyAgICAgICAgKiBiaW5kaW5n
cy92OC9WOEFkYXB0b3JGdW5jdGlvbi5oOgorICAgICAgICAoVjhBZGFwdG9yRnVuY3Rpb24pOgor
ICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4QmluZGluZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjp0
b0RPTVdpbmRvdyk6CisgICAgICAgIChXZWJDb3JlOjp0b1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQp
OgorICAgICAgICAoV2ViQ29yZTo6d29ybGRUeXBlKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAg
ICAgICAqIGJpbmRpbmdzL3Y4L1Y4QmluZGluZy5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAg
ICAgICogYmluZGluZ3MvdjgvVjhET01XaW5kb3dTaGVsbC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpWOERPTVdpbmRvd1NoZWxsOjpjbGVhckZvck5hdmlnYXRpb24pOgorICAgICAgICAqIGJpbmRp
bmdzL3Y4L1Y4RE9NV3JhcHBlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOERPTVdyYXBwZXI6
OmNyZWF0ZVdyYXBwZXIpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4SW5pdGlhbGl6ZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6ZmluZEZyYW1lKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9W
OFBlckNvbnRleHREYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4UGVyQ29udGV4dERhdGE6
OmNvbnN0cnVjdG9yRm9yVHlwZVNsb3dDYXNlKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9Xb3Jr
ZXJTY3JpcHRDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclNjcmlwdENv
bnRyb2xsZXI6OmNvbnRyb2xsZXJGb3JDb250ZXh0KToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9X
cmFwcGVyVHlwZUluZm8uaDoKKyAgICAgICAgKFdlYkNvcmU6OldyYXBwZXJUeXBlSW5mbzo6Z2V0
VGVtcGxhdGUpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOERPTVdpbmRvd0N1c3Rv
bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOERPTVdpbmRvdzo6ZXZlbnRBdHRyR2V0dGVyQ3Vz
dG9tKToKKyAgICAgICAgKFdlYkNvcmU6OlY4RE9NV2luZG93OjpldmVudEF0dHJTZXR0ZXJDdXN0
b20pOgorICAgICAgICAoV2ViQ29yZTo6VjhET01XaW5kb3c6OnRvU3RyaW5nTWV0aG9kQ3VzdG9t
KToKKyAgICAgICAgKFdlYkNvcmU6OlY4RE9NV2luZG93OjpuYW1lZFNlY3VyaXR5Q2hlY2spOgor
ICAgICAgICAoV2ViQ29yZTo6VjhET01XaW5kb3c6OmluZGV4ZWRTZWN1cml0eUNoZWNrKToKKyAg
ICAgICAgKFdlYkNvcmU6OnRvVjgpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOEhU
TUxEb2N1bWVudEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOEhUTUxEb2N1bWVudDo6
d3JhcEluU2hhZG93T2JqZWN0KToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhIVE1M
SW1hZ2VFbGVtZW50Q29uc3RydWN0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhIVE1MSW1h
Z2VFbGVtZW50Q29uc3RydWN0b3I6OkdldFRlbXBsYXRlKToKKyAgICAgICAgKiBiaW5kaW5ncy92
OC9jdXN0b20vVjhIVE1MSW1hZ2VFbGVtZW50Q29uc3RydWN0b3IuaDoKKyAgICAgICAgKFY4SFRN
TEltYWdlRWxlbWVudENvbnN0cnVjdG9yKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20v
VjhJbmplY3RlZFNjcmlwdE1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlSW5q
ZWN0ZWRTY3JpcHRIb3N0VjhXcmFwcGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkluamVjdGVkU2Ny
aXB0TWFuYWdlcjo6Y2FuQWNjZXNzSW5zcGVjdGVkV2luZG93KToKKyAgICAgICAgKiBiaW5kaW5n
cy92OC9jdXN0b20vVjhMb2NhdGlvbkN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOExv
Y2F0aW9uOjpyZWxvYWRBdHRyR2V0dGVyQ3VzdG9tKToKKyAgICAgICAgKFdlYkNvcmU6OlY4TG9j
YXRpb246OnJlcGxhY2VBdHRyR2V0dGVyQ3VzdG9tKToKKyAgICAgICAgKFdlYkNvcmU6OlY4TG9j
YXRpb246OmFzc2lnbkF0dHJHZXR0ZXJDdXN0b20pOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1
c3RvbS9WOE1lc3NhZ2VFdmVudEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOE1lc3Nh
Z2VFdmVudDo6aW5pdE1lc3NhZ2VFdmVudE1ldGhvZEN1c3RvbSk6CisKIDIwMTMtMDItMjggIEtl
aXNoaSBIYXR0b3JpICA8a2Vpc2hpQHdlYmtpdC5vcmc+CiAKICAgICAgICAgQWRkIGNhbGVuZGFy
IGhlYWRlciBmb3IgbmV3IGNhbGVuZGFyIHBpY2tlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0gYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbQppbmRleCBiODRkOTYwOThlMmU4YTg0
NzBjZDhjMWY1MTIxYTY4YWIyMzk1YTJiLi4zZDZmYjdhYTAxMDUzMDMwZWI0ZTI4MWViYmVmMzFh
OTg0NDdiZjQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0Nv
ZGVHZW5lcmF0b3JWOC5wbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0Nv
ZGVHZW5lcmF0b3JWOC5wbQpAQCAtMzI0LDcgKzMyNCw3IEBAIHN1YiBHZW5lcmF0ZUhlYWRlcgog
ICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCA8PEVORCk7CiBjbGFzcyBWOCR7bmF0aXZlVHlw
ZX1Db25zdHJ1Y3RvciB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpG
dW5jdGlvblRlbXBsYXRlPiBHZXRUZW1wbGF0ZSh2ODo6SXNvbGF0ZSopOworICAgIHN0YXRpYyB2
ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gR2V0VGVtcGxhdGUodjg6Oklzb2xh
dGUqLCBXcmFwcGVyV29ybGRUeXBlKTsKICAgICBzdGF0aWMgV3JhcHBlclR5cGVJbmZvIGluZm87
CiB9OwogCkBAIC0zNjIsNyArMzYyLDcgQEAgRU5ECiAgICAgcHVzaChAaGVhZGVyQ29udGVudCwg
PDxFTkQpOwogICAgIHN0YXRpYyBib29sIEhhc0luc3RhbmNlKHY4OjpIYW5kbGU8djg6OlZhbHVl
Piwgdjg6Oklzb2xhdGUqKTsKICAgICBzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9u
VGVtcGxhdGU+IEdldFJhd1RlbXBsYXRlKHY4OjpJc29sYXRlKik7Ci0gICAgc3RhdGljIHY4OjpQ
ZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBHZXRUZW1wbGF0ZSh2ODo6SXNvbGF0ZSop
OworICAgIHN0YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gR2V0VGVt
cGxhdGUodjg6Oklzb2xhdGUqLCBXcmFwcGVyV29ybGRUeXBlKTsKICAgICBzdGF0aWMgJHtuYXRp
dmVUeXBlfSogdG9OYXRpdmUodjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBvYmplY3QpCiAgICAgewog
ICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDwke25hdGl2ZVR5cGV9Kj4oJHtmcm9tRnVu
Y3Rpb25PcGVuaW5nfW9iamVjdCR7ZnJvbUZ1bmN0aW9uQ2xvc2luZ30tPkdldEFsaWduZWRQb2lu
dGVyRnJvbUludGVybmFsRmllbGQodjhET01XcmFwcGVyT2JqZWN0SW5kZXgpKTsKQEAgLTc5NCw3
ICs3OTQsNyBAQCBzdWIgR2VuZXJhdGVEb21haW5TYWZlRnVuY3Rpb25HZXR0ZXIKIHN0YXRpYyB2
ODo6SGFuZGxlPHY4OjpWYWx1ZT4gJHtmdW5jTmFtZX1BdHRyR2V0dGVyKHY4OjpMb2NhbDx2ODo6
U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewogICAgIHN0YXRp
YyB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gcHJpdmF0ZVRlbXBsYXRlID0g
djg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+OjpOZXcoaW5mby5HZXRJc29sYXRl
KCksICRuZXdUZW1wbGF0ZVN0cmluZyk7Ci0gICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBob2xk
ZXIgPSBpbmZvLlRoaXMoKS0+RmluZEluc3RhbmNlSW5Qcm90b3R5cGVDaGFpbigke3Y4SW50ZXJm
YWNlTmFtZX06OkdldFRlbXBsYXRlKGluZm8uR2V0SXNvbGF0ZSgpKSk7CisgICAgdjg6OkhhbmRs
ZTx2ODo6T2JqZWN0PiBob2xkZXIgPSBpbmZvLlRoaXMoKS0+RmluZEluc3RhbmNlSW5Qcm90b3R5
cGVDaGFpbigke3Y4SW50ZXJmYWNlTmFtZX06OkdldFRlbXBsYXRlKGluZm8uR2V0SXNvbGF0ZSgp
LCB3b3JsZFR5cGUoaW5mby5HZXRJc29sYXRlKCkpKSk7CiAgICAgaWYgKGhvbGRlci5Jc0VtcHR5
KCkpIHsKICAgICAgICAgLy8gY2FuIG9ubHkgcmVhY2ggaGVyZSBieSAnb2JqZWN0Ll9fcHJvdG9f
Xy5mdW5jJywgYW5kIGl0IHNob3VsZCBwYXNzZWQKICAgICAgICAgLy8gZG9tYWluIHNlY3VyaXR5
IGNoZWNrIGFscmVhZHkKQEAgLTgyOSw3ICs4MjksNyBAQCBzdWIgR2VuZXJhdGVEb21haW5TYWZl
RnVuY3Rpb25TZXR0ZXIKICAgICBwdXNoKEBpbXBsQ29udGVudERlY2xzLCA8PEVORCk7CiBzdGF0
aWMgdm9pZCAke2ludGVyZmFjZU5hbWV9RG9tYWluU2FmZUZ1bmN0aW9uU2V0dGVyKHY4OjpMb2Nh
bDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6
OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsKLSAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGhvbGRl
ciA9IGluZm8uVGhpcygpLT5GaW5kSW5zdGFuY2VJblByb3RvdHlwZUNoYWluKCR7djhJbnRlcmZh
Y2VOYW1lfTo6R2V0VGVtcGxhdGUoaW5mby5HZXRJc29sYXRlKCkpKTsKKyAgICB2ODo6SGFuZGxl
PHY4OjpPYmplY3Q+IGhvbGRlciA9IGluZm8uVGhpcygpLT5GaW5kSW5zdGFuY2VJblByb3RvdHlw
ZUNoYWluKCR7djhJbnRlcmZhY2VOYW1lfTo6R2V0VGVtcGxhdGUoaW5mby5HZXRJc29sYXRlKCks
IHdvcmxkVHlwZShpbmZvLkdldElzb2xhdGUoKSkpKTsKICAgICBpZiAoaG9sZGVyLklzRW1wdHko
KSkKICAgICAgICAgcmV0dXJuOwogICAgICR7aW50ZXJmYWNlTmFtZX0qIGltcCA9ICR7djhJbnRl
cmZhY2VOYW1lfTo6dG9OYXRpdmUoaG9sZGVyKTsKQEAgLTk0OCw3ICs5NDgsNyBAQCBFTkQKICAg
ICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICMgcGVyZm9ybSBsb29rdXAgZmlyc3QKICAgICAg
ICAgICAgIHB1c2goQGltcGxDb250ZW50RGVjbHMsIDw8RU5EKTsKLSAgICB2ODo6SGFuZGxlPHY4
OjpPYmplY3Q+IGhvbGRlciA9IGluZm8uVGhpcygpLT5GaW5kSW5zdGFuY2VJblByb3RvdHlwZUNo
YWluKCR7djhJbnRlcmZhY2VOYW1lfTo6R2V0VGVtcGxhdGUoaW5mby5HZXRJc29sYXRlKCkpKTsK
KyAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGhvbGRlciA9IGluZm8uVGhpcygpLT5GaW5kSW5z
dGFuY2VJblByb3RvdHlwZUNoYWluKCR7djhJbnRlcmZhY2VOYW1lfTo6R2V0VGVtcGxhdGUoaW5m
by5HZXRJc29sYXRlKCksIHdvcmxkVHlwZShpbmZvLkdldElzb2xhdGUoKSkpKTsKICAgICBpZiAo
aG9sZGVyLklzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIHY4VW5kZWZpbmVkKCk7CiBFTkQKQEAg
LTIyNDMsNyArMjI0Myw3IEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gbmFtZWRDb25z
dHJ1Y3RvckNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiAgICAgcmV0dXJuIG5h
bWVkQ29uc3RydWN0b3IoYXJncyk7CiB9CiAKLXY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRl
bXBsYXRlPiAke3Y4SW50ZXJmYWNlTmFtZX1Db25zdHJ1Y3Rvcjo6R2V0VGVtcGxhdGUodjg6Oklz
b2xhdGUqIGlzb2xhdGUpCit2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gJHt2
OEludGVyZmFjZU5hbWV9Q29uc3RydWN0b3I6OkdldFRlbXBsYXRlKHY4OjpJc29sYXRlKiBpc29s
YXRlLCBXcmFwcGVyV29ybGRUeXBlIHdvcmxkVHlwZSkKIHsKICAgICBzdGF0aWMgdjg6OlBlcnNp
c3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IGNhY2hlZFRlbXBsYXRlOwogICAgIGlmICghY2Fj
aGVkVGVtcGxhdGUuSXNFbXB0eSgpKQpAQCAtMjI1NSw3ICsyMjU1LDcgQEAgdjg6OlBlcnNpc3Rl
bnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+ICR7djhJbnRlcmZhY2VOYW1lfUNvbnN0cnVjdG9yOjpH
ZXRUZW1wbGF0ZSgKICAgICB2ODo6TG9jYWw8djg6Ok9iamVjdFRlbXBsYXRlPiBpbnN0YW5jZSA9
IHJlc3VsdC0+SW5zdGFuY2VUZW1wbGF0ZSgpOwogICAgIGluc3RhbmNlLT5TZXRJbnRlcm5hbEZp
ZWxkQ291bnQoJHt2OEludGVyZmFjZU5hbWV9OjppbnRlcm5hbEZpZWxkQ291bnQpOwogICAgIHJl
c3VsdC0+U2V0Q2xhc3NOYW1lKHY4OjpTdHJpbmc6Ok5ld1N5bWJvbCgiJHtpbnRlcmZhY2VOYW1l
fSIpKTsKLSAgICByZXN1bHQtPkluaGVyaXQoJHt2OEludGVyZmFjZU5hbWV9OjpHZXRUZW1wbGF0
ZShpc29sYXRlKSk7CisgICAgcmVzdWx0LT5Jbmhlcml0KCR7djhJbnRlcmZhY2VOYW1lfTo6R2V0
VGVtcGxhdGUoaXNvbGF0ZSwgd29ybGRUeXBlKSk7CiAKICAgICBjYWNoZWRUZW1wbGF0ZSA9IHY4
OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPjo6TmV3KGlzb2xhdGUsIHJlc3VsdCk7
CiAgICAgcmV0dXJuIGNhY2hlZFRlbXBsYXRlOwpAQCAtMjY3OSw3ICsyNjc5LDcgQEAgc3ViIEdl
bmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAgICAgbXkgJHBhcmVudCA9ICRfOwogICAgICAgICBB
ZGRUb0ltcGxJbmNsdWRlcygiVjgke3BhcmVudH0uaCIpOwogICAgICAgICAkcGFyZW50Q2xhc3Mg
PSAiVjgiIC4gJHBhcmVudDsKLSAgICAgICAgJHBhcmVudENsYXNzVGVtcGxhdGUgPSAkcGFyZW50
Q2xhc3MgLiAiOjpHZXRUZW1wbGF0ZShpc29sYXRlKSI7CisgICAgICAgICRwYXJlbnRDbGFzc1Rl
bXBsYXRlID0gJHBhcmVudENsYXNzIC4gIjo6R2V0VGVtcGxhdGUoaXNvbGF0ZSwgd29ybGRUeXBl
KSI7CiAgICAgICAgIGxhc3Q7CiAgICAgfQogCkBAIC0yOTg4LDcgKzI5ODgsNyBAQCBFTkQKIAog
ICAgICMgR2VuZXJhdGUgdGhlIHRlbXBsYXRlIGNvbmZpZ3VyYXRpb24gbWV0aG9kCiAgICAgcHVz
aChAaW1wbENvbnRlbnQsICA8PEVORCk7Ci1zdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0
aW9uVGVtcGxhdGU+IENvbmZpZ3VyZSR7djhJbnRlcmZhY2VOYW1lfVRlbXBsYXRlKHY4OjpQZXJz
aXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBkZXNjLCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSkK
K3N0YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gQ29uZmlndXJlJHt2
OEludGVyZmFjZU5hbWV9VGVtcGxhdGUodjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxh
dGU+IGRlc2MsIHY4OjpJc29sYXRlKiBpc29sYXRlLCBXcmFwcGVyV29ybGRUeXBlIHdvcmxkVHlw
ZSkKIHsKICAgICBkZXNjLT5SZWFkT25seVByb3RvdHlwZSgpOwogCkBAIC0zMTU0LDcgKzMxNTQs
NyBAQCB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gJHt2OEludGVyZmFjZU5h
bWV9OjpHZXRSYXdUZW1wbGF0ZSh2ODo6SXNvbAogICAgIHJldHVybiB0ZW1wbDsKIH0KIAotdjg6
OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+ICR7djhJbnRlcmZhY2VOYW1lfTo6R2V0
VGVtcGxhdGUodjg6Oklzb2xhdGUqIGlzb2xhdGUpCit2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rp
b25UZW1wbGF0ZT4gJHt2OEludGVyZmFjZU5hbWV9OjpHZXRUZW1wbGF0ZSh2ODo6SXNvbGF0ZSog
aXNvbGF0ZSwgV3JhcHBlcldvcmxkVHlwZSB3b3JsZFR5cGUpCiB7CiAgICAgVjhQZXJJc29sYXRl
RGF0YSogZGF0YSA9IFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0ZSk7CiAgICAgVjhQZXJJ
c29sYXRlRGF0YTo6VGVtcGxhdGVNYXA6Oml0ZXJhdG9yIHJlc3VsdCA9IGRhdGEtPnRlbXBsYXRl
TWFwKCkuZmluZCgmaW5mbyk7CkBAIC0zMTYzLDcgKzMxNjMsNyBAQCB2ODo6UGVyc2lzdGVudDx2
ODo6RnVuY3Rpb25UZW1wbGF0ZT4gJHt2OEludGVyZmFjZU5hbWV9OjpHZXRUZW1wbGF0ZSh2ODo6
SXNvbGF0ZQogCiAgICAgdjg6OkhhbmRsZVNjb3BlIGhhbmRsZVNjb3BlOwogICAgIHY4OjpQZXJz
aXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiB0ZW1wbCA9Ci0gICAgICAgIENvbmZpZ3VyZSR7
djhJbnRlcmZhY2VOYW1lfVRlbXBsYXRlKEdldFJhd1RlbXBsYXRlKGlzb2xhdGUpLCBpc29sYXRl
KTsKKyAgICAgICAgQ29uZmlndXJlJHt2OEludGVyZmFjZU5hbWV9VGVtcGxhdGUoR2V0UmF3VGVt
cGxhdGUoaXNvbGF0ZSksIGlzb2xhdGUsIHdvcmxkVHlwZSk7CiAgICAgZGF0YS0+dGVtcGxhdGVN
YXAoKS5hZGQoJmluZm8sIHRlbXBsKTsKICAgICByZXR1cm4gdGVtcGw7CiB9CkBAIC0zMjEyLDcg
KzMyMTIsNyBAQCB2b2lkICR7djhJbnRlcmZhY2VOYW1lfTo6aW5zdGFsbFBlckNvbnRleHRQcm90
b3R5cGVQcm9wZXJ0aWVzKHY4OjpIYW5kbGU8djg6Ok9iagogRU5ECiAgICAgICAgICMgU2V0dXAg
dGhlIGVuYWJsZS1ieS1zZXR0aW5ncyBmdW5jdGlvbnMgaWYgd2UgaGF2ZSB0aGVtCiAgICAgICAg
IHB1c2goQGltcGxDb250ZW50LCAgPDxFTkQpOwotICAgIHY4OjpMb2NhbDx2ODo6U2lnbmF0dXJl
PiBkZWZhdWx0U2lnbmF0dXJlID0gdjg6OlNpZ25hdHVyZTo6TmV3KEdldFRlbXBsYXRlKGlzb2xh
dGUpKTsKKyAgICB2ODo6TG9jYWw8djg6OlNpZ25hdHVyZT4gZGVmYXVsdFNpZ25hdHVyZSA9IHY4
OjpTaWduYXR1cmU6Ok5ldyhHZXRUZW1wbGF0ZShpc29sYXRlLCB3b3JsZFR5cGUoaXNvbGF0ZSkp
KTsKICAgICBVTlVTRURfUEFSQU0oZGVmYXVsdFNpZ25hdHVyZSk7IC8vIEluIHNvbWUgY2FzZXMs
IGl0IHdpbGwgbm90IGJlIHVzZWQuCiAKICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250
ZXh0ID0gdG9TY3JpcHRFeGVjdXRpb25Db250ZXh0KHByb3RvLT5DcmVhdGlvbkNvbnRleHQoKSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9ET01XcmFwcGVyV29ybGQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvRE9NV3JhcHBlcldvcmxkLmNwcAppbmRl
eCBjNWYxNmQ3NjI3ZjAxMDM4MzdmYWIwZjg0ZDcyN2ExMTY1Zjc5NmJhLi5hYWI0MzI3MGQ1ZTE1
NjRjYjlhNjBkMWQwNjcxMTc5MmIyOTA0MmFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy92OC9ET01XcmFwcGVyV29ybGQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L0RPTVdyYXBwZXJXb3JsZC5jcHAKQEAgLTQxLDEyICs0MSwxOCBAQAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBpbnQgRE9NV3JhcHBlcldvcmxkOjppc29sYXRlZFdvcmxkQ291bnQgPSAw
Oworc3RhdGljIGJvb2wgaW5pdGlhbGl6aW5nV2luZG93ID0gZmFsc2U7CiAKIFBhc3NSZWZQdHI8
RE9NV3JhcHBlcldvcmxkPiAgRE9NV3JhcHBlcldvcmxkOjpjcmVhdGVVbmluaXRpYWxpemVkV29y
bGQoKQogewogICAgIHJldHVybiBhZG9wdFJlZihuZXcgRE9NV3JhcHBlcldvcmxkKHVuaW5pdGlh
bGl6ZWRXb3JsZElkLCB1bmluaXRpYWxpemVkRXh0ZW5zaW9uR3JvdXApKTsKIH0KIAordm9pZCBE
T01XcmFwcGVyV29ybGQ6OnNldEluaXRpYWxpemluZ1dpbmRvdyhib29sIGluaXRpYWxpemluZykK
K3sKKyAgICBpbml0aWFsaXppbmdXaW5kb3cgPSBpbml0aWFsaXppbmc7Cit9CisKIFBhc3NSZWZQ
dHI8RE9NV3JhcHBlcldvcmxkPiBET01XcmFwcGVyV29ybGQ6OmNyZWF0ZU1haW5Xb3JsZCgpCiB7
CiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBET01XcmFwcGVyV29ybGQobWFpbldvcmxkSWQsIG1h
aW5Xb3JsZEV4dGVuc2lvbkdyb3VwKSk7CkBAIC02NywxMCArNzMsMTIgQEAgRE9NV3JhcHBlcldv
cmxkKiBtYWluVGhyZWFkTm9ybWFsV29ybGQoKQogICAgIHJldHVybiBjYWNoZWROb3JtYWxXb3Js
ZC5nZXQoKTsKIH0KIAotdm9pZCBET01XcmFwcGVyV29ybGQ6OmFzc2VydENvbnRleHRIYXNDb3Jy
ZWN0UHJvdG90eXBlKHY4OjpIYW5kbGU8djg6OkNvbnRleHQ+IGNvbnRleHQpCitib29sIERPTVdy
YXBwZXJXb3JsZDo6Y29udGV4dEhhc0NvcnJlY3RQcm90b3R5cGUodjg6OkhhbmRsZTx2ODo6Q29u
dGV4dD4gY29udGV4dCkKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwotICAgIEFTU0VS
VChWOERPTVdyYXBwZXI6OmlzV3JhcHBlck9mVHlwZSh0b0lubmVyR2xvYmFsT2JqZWN0KGNvbnRl
eHQpLCAmVjhET01XaW5kb3c6OmluZm8pKTsKKyAgICBpZiAoaW5pdGlhbGl6aW5nV2luZG93KQor
ICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICByZXR1cm4gVjhET01XcmFwcGVyOjppc1dyYXBwZXJP
ZlR5cGUodG9Jbm5lckdsb2JhbE9iamVjdChjb250ZXh0KSwgJlY4RE9NV2luZG93OjppbmZvKTsK
IH0KIAogc3RhdGljIHZvaWQgaXNvbGF0ZWRXb3JsZFdlYWtDYWxsYmFjayh2ODo6SXNvbGF0ZSog
aXNvbGF0ZSwgdjg6OlBlcnNpc3RlbnQ8djg6OlZhbHVlPiBvYmplY3QsIHZvaWQqIHBhcmFtZXRl
cikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0RPTVdyYXBwZXJXb3Js
ZC5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvRE9NV3JhcHBlcldvcmxkLmgKaW5kZXgg
NDhjMjBlNDYyNTMyZTc5M2UzY2IyMTRjMjZhYTdmZDNlZGI1NmMyMS4uYmQyYTczZjdhMTBjZDE4
MGZmODI5MzM3YzMzZTU1OTBmZTJiOTM2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvRE9NV3JhcHBlcldvcmxkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvRE9NV3JhcHBlcldvcmxkLmgKQEAgLTYxLDEwICs2MSw5IEBAIHB1YmxpYzoKICAgICB2b2lk
IG1ha2VDb250ZXh0V2Vhayh2ODo6SGFuZGxlPHY4OjpDb250ZXh0Pik7CiAgICAgdm9pZCBzZXRJ
c29sYXRlZFdvcmxkRmllbGQodjg6OkhhbmRsZTx2ODo6Q29udGV4dD4pOwogCi0gICAgc3RhdGlj
IHZvaWQgYXNzZXJ0Q29udGV4dEhhc0NvcnJlY3RQcm90b3R5cGUodjg6OkhhbmRsZTx2ODo6Q29u
dGV4dD4pOwogICAgIHN0YXRpYyBET01XcmFwcGVyV29ybGQqIGdldFdvcmxkKHY4OjpIYW5kbGU8
djg6OkNvbnRleHQ+IGNvbnRleHQpCiAgICAgewotICAgICAgICBhc3NlcnRDb250ZXh0SGFzQ29y
cmVjdFByb3RvdHlwZShjb250ZXh0KTsKKyAgICAgICAgQVNTRVJUKGNvbnRleHRIYXNDb3JyZWN0
UHJvdG90eXBlKGNvbnRleHQpKTsKICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PERPTVdyYXBw
ZXJXb3JsZCo+KGNvbnRleHQtPkdldEFsaWduZWRQb2ludGVyRnJvbUVtYmVkZGVyRGF0YSh2OENv
bnRleHRJc29sYXRlZFdvcmxkKSk7CiAgICAgfQogICAgIHN0YXRpYyBET01XcmFwcGVyV29ybGQq
IGdldFdvcmxkV2l0aG91dENvbnRleHRDaGVjayh2ODo6SGFuZGxlPHY4OjpDb250ZXh0PiBjb250
ZXh0KQpAQCAtMTA3LDkgKzEwNiwxMiBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBtX2RvbURh
dGFTdG9yZS5nZXQoKTsKICAgICB9CiAKKyAgICBzdGF0aWMgdm9pZCBzZXRJbml0aWFsaXppbmdX
aW5kb3coYm9vbCk7CisKIHByaXZhdGU6CiAgICAgc3RhdGljIGludCBpc29sYXRlZFdvcmxkQ291
bnQ7CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8RE9NV3JhcHBlcldvcmxkPiBjcmVhdGVNYWluV29y
bGQoKTsKKyAgICBzdGF0aWMgYm9vbCBjb250ZXh0SGFzQ29ycmVjdFByb3RvdHlwZSh2ODo6SGFu
ZGxlPHY4OjpDb250ZXh0Pik7CiAKICAgICBET01XcmFwcGVyV29ybGQoaW50IHdvcmxkSWQsIGlu
dCBleHRlbnNpb25Hcm91cCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L0RpY3Rpb25hcnkuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvRGljdGlvbmFy
eS5jcHAKaW5kZXggOGE5Y2YxZGY2YmI1NWRiOTI3ZDNmNDEwZjNjNmI3YzlkMGRhM2VkMi4uMzRm
MTU4YWI2ZTMzM2Q5MTBlODNhMjFjMGY1YjM4YjBhODZkOWQ1ZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvdjgvRGljdGlvbmFyeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvdjgvRGljdGlvbmFyeS5jcHAKQEAgLTI1OSw3ICsyNTksNyBAQCBib29sIERpY3Rp
b25hcnk6OmdldChjb25zdCBTdHJpbmcmIGtleSwgUmVmUHRyPERPTVdpbmRvdz4mIHZhbHVlKSBj
b25zdAogICAgIHZhbHVlID0gMDsKICAgICBpZiAodjhWYWx1ZS0+SXNPYmplY3QoKSkgewogICAg
ICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBwZXIgPSB2ODo6SGFuZGxlPHY4OjpPYmpl
Y3Q+OjpDYXN0KHY4VmFsdWUpOwotICAgICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdpbmRv
dyA9IHdyYXBwZXItPkZpbmRJbnN0YW5jZUluUHJvdG90eXBlQ2hhaW4oVjhET01XaW5kb3c6Okdl
dFRlbXBsYXRlKG1faXNvbGF0ZSkpOworICAgICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdp
bmRvdyA9IHdyYXBwZXItPkZpbmRJbnN0YW5jZUluUHJvdG90eXBlQ2hhaW4oVjhET01XaW5kb3c6
OkdldFRlbXBsYXRlKG1faXNvbGF0ZSwgd29ybGRUeXBlKG1faXNvbGF0ZSkpKTsKICAgICAgICAg
aWYgKCF3aW5kb3cuSXNFbXB0eSgpKQogICAgICAgICAgICAgdmFsdWUgPSBWOERPTVdpbmRvdzo6
dG9OYXRpdmUod2luZG93KTsKICAgICB9CkBAIC0zNjMsNyArMzYzLDcgQEAgYm9vbCBEaWN0aW9u
YXJ5OjpnZXQoY29uc3QgU3RyaW5nJiBrZXksIFJlZlB0cjxUcmFja0Jhc2U+JiB2YWx1ZSkgY29u
c3QKIAogICAgICAgICAvLyBGSVhNRTogdGhpcyB3aWxsIG5lZWQgdG8gYmUgY2hhbmdlZCBzbyBp
dCBjYW4gYWxzbyByZXR1cm4gYW4gQXVkaW9UcmFjayBvciBhIFZpZGVvVHJhY2sgb25jZQogICAg
ICAgICAvLyB3ZSBhZGQgdGhlbS4KLSAgICAgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB0cmFj
ayA9IHdyYXBwZXItPkZpbmRJbnN0YW5jZUluUHJvdG90eXBlQ2hhaW4oVjhUZXh0VHJhY2s6Okdl
dFRlbXBsYXRlKG1faXNvbGF0ZSkpOworICAgICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHRy
YWNrID0gd3JhcHBlci0+RmluZEluc3RhbmNlSW5Qcm90b3R5cGVDaGFpbihWOFRleHRUcmFjazo6
R2V0VGVtcGxhdGUobV9pc29sYXRlLCB3b3JsZFR5cGUobV9pc29sYXRlKSkpOwogICAgICAgICBp
ZiAoIXRyYWNrLklzRW1wdHkoKSkKICAgICAgICAgICAgIHNvdXJjZSA9IFY4VGV4dFRyYWNrOjp0
b05hdGl2ZSh0cmFjayk7CiAgICAgfQpAQCAtNDM2LDcgKzQzNiw3IEBAIGJvb2wgRGljdGlvbmFy
eTo6Z2V0KGNvbnN0IFN0cmluZyYga2V5LCBSZWZQdHI8RXZlbnRUYXJnZXQ+JiB2YWx1ZSkgY29u
c3QKICAgICAvLyBleGlzdHMgb24gYSBwcm90b3R5cGUgY2hhaW4gb2YgdjhWYWx1ZS4KICAgICBp
ZiAodjhWYWx1ZS0+SXNPYmplY3QoKSkgewogICAgICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+
IHdyYXBwZXIgPSB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+OjpDYXN0KHY4VmFsdWUpOwotICAgICAg
ICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdpbmRvdyA9IHdyYXBwZXItPkZpbmRJbnN0YW5jZUlu
UHJvdG90eXBlQ2hhaW4oVjhET01XaW5kb3c6OkdldFRlbXBsYXRlKG1faXNvbGF0ZSkpOworICAg
ICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdpbmRvdyA9IHdyYXBwZXItPkZpbmRJbnN0YW5j
ZUluUHJvdG90eXBlQ2hhaW4oVjhET01XaW5kb3c6OkdldFRlbXBsYXRlKG1faXNvbGF0ZSwgd29y
bGRUeXBlKG1faXNvbGF0ZSkpKTsKICAgICAgICAgaWYgKCF3aW5kb3cuSXNFbXB0eSgpKSB7CiAg
ICAgICAgICAgICB2YWx1ZSA9IHRvV3JhcHBlclR5cGVJbmZvKHdpbmRvdyktPnRvRXZlbnRUYXJn
ZXQod2luZG93KTsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvdjgvUGFnZVNjcmlwdERlYnVnU2VydmVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L1BhZ2VTY3JpcHREZWJ1Z1NlcnZlci5jcHAKaW5kZXggYmE2ZTVm
OGM4Yzk2MDQxZDhhNzNkNzY4ZmIzODZjNmFkNTMwNTE5OC4uM2MzOWM4NTkxN2RhNzIzMGVkYTE2
ZTAzNDg2NWVmN2FkNjQ0MzUyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvUGFnZVNjcmlwdERlYnVnU2VydmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy92OC9QYWdlU2NyaXB0RGVidWdTZXJ2ZXIuY3BwCkBAIC01Niw3ICs1Niw3IEBAIHN0YXRpYyBG
cmFtZSogcmV0cmlldmVGcmFtZVdpdGhHbG9iYWxPYmplY3RDaGVjayh2ODo6SGFuZGxlPHY4OjpD
b250ZXh0PiBjb250ZXh0CiAgICAgaWYgKGdsb2JhbC5Jc0VtcHR5KCkpCiAgICAgICAgIHJldHVy
biAwOwogCi0gICAgZ2xvYmFsID0gZ2xvYmFsLT5GaW5kSW5zdGFuY2VJblByb3RvdHlwZUNoYWlu
KFY4RE9NV2luZG93OjpHZXRUZW1wbGF0ZShjb250ZXh0LT5HZXRJc29sYXRlKCkpKTsKKyAgICBn
bG9iYWwgPSBnbG9iYWwtPkZpbmRJbnN0YW5jZUluUHJvdG90eXBlQ2hhaW4oVjhET01XaW5kb3c6
OkdldFRlbXBsYXRlKGNvbnRleHQtPkdldElzb2xhdGUoKSwgd29ybGRUeXBlKGNvbnRleHQtPkdl
dElzb2xhdGUoKSkpKTsKICAgICBpZiAoZ2xvYmFsLklzRW1wdHkoKSkKICAgICAgICAgcmV0dXJu
IDA7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4QWRhcHRvckZ1
bmN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4QWRhcHRvckZ1bmN0aW9u
LmNwcAppbmRleCBiYmMxZDMyNzRmYzdkODlmMWRhNjM0YWRhNzc5YmJjNmU0NjJlY2RkLi5jNzJj
NzEzZWQwN2E5NTMyZjIxMTUwZWZiY2QwNjkwY2NkY2YwMzM3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy92OC9WOEFkYXB0b3JGdW5jdGlvbi5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvdjgvVjhBZGFwdG9yRnVuY3Rpb24uY3BwCkBAIC00MCw3ICs0MCw3IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogV3JhcHBlclR5cGVJbmZvIFY4QWRhcHRvckZ1bmN0aW9u
OjppbmZvID0geyBWOEFkYXB0b3JGdW5jdGlvbjo6Z2V0VGVtcGxhdGUsIDAsIDAsIDAsIDAsIDAs
IDAsIFdyYXBwZXJUeXBlT2JqZWN0UHJvdG90eXBlIH07CiAKLXY4OjpQZXJzaXN0ZW50PHY4OjpG
dW5jdGlvblRlbXBsYXRlPiBWOEFkYXB0b3JGdW5jdGlvbjo6Z2V0VGVtcGxhdGUodjg6Oklzb2xh
dGUqIGlzb2xhdGUpCit2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gVjhBZGFw
dG9yRnVuY3Rpb246OmdldFRlbXBsYXRlKHY4OjpJc29sYXRlKiBpc29sYXRlLCBXcmFwcGVyV29y
bGRUeXBlIHdvcmxkVHlwZSkKIHsKICAgICBBU1NFUlQoaXNvbGF0ZSk7CiAgICAgVjhQZXJJc29s
YXRlRGF0YSogZGF0YSA9IFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0ZSk7CkBAIC03Niw3
ICs3Niw3IEBAIHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uPiBWOEFkYXB0b3JGdW5jdGlvbjo6d3Jh
cCh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IG9iamVjdCwKIHsKICAgICBpZiAob2JqZWN0LklzRW1w
dHkoKSB8fCAhb2JqZWN0LT5Jc09iamVjdCgpKQogICAgICAgICByZXR1cm4gdjg6OkhhbmRsZTx2
ODo6RnVuY3Rpb24+KCk7Ci0gICAgdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb24+IGFkYXB0b3IgPSB2
ODo6SGFuZGxlPHY4OjpGdW5jdGlvbj46OkNhc3QoZ2V0VGVtcGxhdGUoaXNvbGF0ZSktPkdldEZ1
bmN0aW9uKCkpOworICAgIHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uPiBhZGFwdG9yID0gdjg6Okhh
bmRsZTx2ODo6RnVuY3Rpb24+OjpDYXN0KGdldFRlbXBsYXRlKGlzb2xhdGUsIHdvcmxkVHlwZShp
c29sYXRlKSktPkdldEZ1bmN0aW9uKCkpOwogICAgIGlmIChhZGFwdG9yLklzRW1wdHkoKSkKICAg
ICAgICAgcmV0dXJuIHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uPigpOwogICAgIGFkYXB0b3ItPlNl
dE5hbWUodjhTdHJpbmcobmFtZS5zdHJpbmcoKSwgaXNvbGF0ZSkpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhBZGFwdG9yRnVuY3Rpb24uaCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L1Y4QWRhcHRvckZ1bmN0aW9uLmgKaW5kZXggZTNkNmJiNTFmNDQwYTRj
NzcyNGFiY2UzZGU5MzA2OGRhZThjM2E1Ny4uNzgzNmViNGM2NWI5NDMzNDFmYzJhMzRjN2FkM2Vl
ZTRkOWZiZTU2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhBZGFw
dG9yRnVuY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEFkYXB0b3JG
dW5jdGlvbi5oCkBAIC01NSw3ICs1NSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgdjg6OkhhbmRs
ZTx2ODo6RnVuY3Rpb24+IHdyYXAodjg6OkhhbmRsZTx2ODo6T2JqZWN0PiwgY29uc3QgQXRvbWlj
U3RyaW5nJiBuYW1lLCB2ODo6SXNvbGF0ZSopOwogICAgIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpG
dW5jdGlvbj4gZ2V0KHY4OjpIYW5kbGU8djg6Ok9iamVjdD4pOwogCi0gICAgc3RhdGljIHY4OjpQ
ZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBnZXRUZW1wbGF0ZSh2ODo6SXNvbGF0ZSog
PSAwKTsKKyAgICBzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IGdl
dFRlbXBsYXRlKHY4OjpJc29sYXRlKiwgV3JhcHBlcldvcmxkVHlwZSk7CiAgICAgc3RhdGljIHY4
OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBjb25maWd1cmVUZW1wbGF0ZSh2ODo6
UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4pOwogICAgIHN0YXRpYyB2ODo6SGFuZGxl
PHY4OjpWYWx1ZT4gaW52b2NhdGlvbkNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmKTsKIH07
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEJpbmRpbmcuY3BwIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhCaW5kaW5nLmNwcAppbmRleCA4NjNmNGZkNmFj
MGE2NTViZTkyODRmN2NmOGNjMDQzOGQ0MjJmNTY3Li5hYWU2NzY3YjA5ODc1OTc0Yjk0MTEyMDRi
ZGE2MDI3Mzk5NGE0MTRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9W
OEJpbmRpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4QmluZGluZy5j
cHAKQEAgLTIyMSw3ICsyMjEsMTAgQEAgRE9NV2luZG93KiB0b0RPTVdpbmRvdyh2ODo6SGFuZGxl
PHY4OjpDb250ZXh0PiBjb250ZXh0KQogewogICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gZ2xv
YmFsID0gY29udGV4dC0+R2xvYmFsKCk7CiAgICAgQVNTRVJUKCFnbG9iYWwuSXNFbXB0eSgpKTsK
LSAgICBnbG9iYWwgPSBnbG9iYWwtPkZpbmRJbnN0YW5jZUluUHJvdG90eXBlQ2hhaW4oVjhET01X
aW5kb3c6OkdldFRlbXBsYXRlKGNvbnRleHQtPkdldElzb2xhdGUoKSkpOworICAgIGdsb2JhbCA9
IGdsb2JhbC0+RmluZEluc3RhbmNlSW5Qcm90b3R5cGVDaGFpbihWOERPTVdpbmRvdzo6R2V0VGVt
cGxhdGUoY29udGV4dC0+R2V0SXNvbGF0ZSgpLCBNYWluV29ybGQpKTsKKyAgICBpZiAoIWdsb2Jh
bC5Jc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBWOERPTVdpbmRvdzo6dG9OYXRpdmUoZ2xvYmFs
KTsKKyAgICBnbG9iYWwgPSBnbG9iYWwtPkZpbmRJbnN0YW5jZUluUHJvdG90eXBlQ2hhaW4oVjhE
T01XaW5kb3c6OkdldFRlbXBsYXRlKGNvbnRleHQtPkdldElzb2xhdGUoKSwgSXNvbGF0ZWRXb3Js
ZCkpOwogICAgIEFTU0VSVCghZ2xvYmFsLklzRW1wdHkoKSk7CiAgICAgcmV0dXJuIFY4RE9NV2lu
ZG93Ojp0b05hdGl2ZShnbG9iYWwpOwogfQpAQCAtMjI5LDExICsyMzIsMTQgQEAgRE9NV2luZG93
KiB0b0RPTVdpbmRvdyh2ODo6SGFuZGxlPHY4OjpDb250ZXh0PiBjb250ZXh0KQogU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCogdG9TY3JpcHRFeGVjdXRpb25Db250ZXh0KHY4OjpIYW5kbGU8djg6OkNv
bnRleHQ+IGNvbnRleHQpCiB7CiAgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBnbG9iYWwgPSBj
b250ZXh0LT5HbG9iYWwoKTsKLSAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdpbmRvd1dyYXBw
ZXIgPSBnbG9iYWwtPkZpbmRJbnN0YW5jZUluUHJvdG90eXBlQ2hhaW4oVjhET01XaW5kb3c6Okdl
dFRlbXBsYXRlKGNvbnRleHQtPkdldElzb2xhdGUoKSkpOworICAgIHY4OjpIYW5kbGU8djg6Ok9i
amVjdD4gd2luZG93V3JhcHBlciA9IGdsb2JhbC0+RmluZEluc3RhbmNlSW5Qcm90b3R5cGVDaGFp
bihWOERPTVdpbmRvdzo6R2V0VGVtcGxhdGUoY29udGV4dC0+R2V0SXNvbGF0ZSgpLCBNYWluV29y
bGQpKTsKKyAgICBpZiAoIXdpbmRvd1dyYXBwZXIuSXNFbXB0eSgpKQorICAgICAgICByZXR1cm4g
VjhET01XaW5kb3c6OnRvTmF0aXZlKHdpbmRvd1dyYXBwZXIpLT5zY3JpcHRFeGVjdXRpb25Db250
ZXh0KCk7CisgICAgd2luZG93V3JhcHBlciA9IGdsb2JhbC0+RmluZEluc3RhbmNlSW5Qcm90b3R5
cGVDaGFpbihWOERPTVdpbmRvdzo6R2V0VGVtcGxhdGUoY29udGV4dC0+R2V0SXNvbGF0ZSgpLCBJ
c29sYXRlZFdvcmxkKSk7CiAgICAgaWYgKCF3aW5kb3dXcmFwcGVyLklzRW1wdHkoKSkKICAgICAg
ICAgcmV0dXJuIFY4RE9NV2luZG93Ojp0b05hdGl2ZSh3aW5kb3dXcmFwcGVyKS0+c2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpOwogI2lmIEVOQUJMRShXT1JLRVJTKQotICAgIHY4OjpIYW5kbGU8djg6
Ok9iamVjdD4gd29ya2VyV3JhcHBlciA9IGdsb2JhbC0+RmluZEluc3RhbmNlSW5Qcm90b3R5cGVD
aGFpbihWOFdvcmtlckNvbnRleHQ6OkdldFRlbXBsYXRlKGNvbnRleHQtPkdldElzb2xhdGUoKSkp
OworICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd29ya2VyV3JhcHBlciA9IGdsb2JhbC0+Rmlu
ZEluc3RhbmNlSW5Qcm90b3R5cGVDaGFpbihWOFdvcmtlckNvbnRleHQ6OkdldFRlbXBsYXRlKGNv
bnRleHQtPkdldElzb2xhdGUoKSwgV29ya2VyV29ybGQpKTsKICAgICBpZiAoIXdvcmtlcldyYXBw
ZXIuSXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gVjhXb3JrZXJDb250ZXh0Ojp0b05hdGl2ZSh3
b3JrZXJXcmFwcGVyKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwogI2VuZGlmCkBAIC0zMDUs
NCArMzExLDI5IEBAIHZvaWQgY3Jhc2hJZlY4SXNEZWFkKCkKICAgICB9CiB9CiAKK1dyYXBwZXJX
b3JsZFR5cGUgd29ybGRUeXBlKHY4OjpJc29sYXRlKiBpc29sYXRlKQoreworICAgIFY4UGVySXNv
bGF0ZURhdGEqIGRhdGEgPSBpc29sYXRlID8gVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRl
KSA6IFY4UGVySXNvbGF0ZURhdGE6OmN1cnJlbnQoKTsKKyAgICAvLyBUT0RPOiBSZW5hbWUgZG9t
RGF0YVN0b3JlKCkgdG8gd29ya2VyRGF0YVN0b3JlKCkuCisgICAgaWYgKFVOTElLRUxZKCEhZGF0
YS0+ZG9tRGF0YVN0b3JlKCkpKQorICAgICAgICByZXR1cm4gV29ya2VyV29ybGQ7CisKKyAgICBp
ZiAoRE9NV3JhcHBlcldvcmxkOjppc29sYXRlZFdvcmxkc0V4aXN0KCkpIHsKKyAgICAgICAgRE9N
V3JhcHBlcldvcmxkKiBpc29sYXRlZFdvcmxkID0gRE9NV3JhcHBlcldvcmxkOjpnZXRXb3JsZCh2
ODo6Q29udGV4dDo6R2V0RW50ZXJlZCgpKTsKKyAgICAgICAgaWYgKFVOTElLRUxZKCEhaXNvbGF0
ZWRXb3JsZCkpCisgICAgICAgICAgICByZXR1cm4gSXNvbGF0ZWRXb3JsZDsKKyAgICB9CisgICAg
cmV0dXJuIE1haW5Xb3JsZDsKK30KKworV3JhcHBlcldvcmxkVHlwZSBtYWluSXNvbGF0ZVdvcmxk
VHlwZSh2ODo6SXNvbGF0ZSogaXNvbGF0ZSkKK3sKKyAgICBpZiAoRE9NV3JhcHBlcldvcmxkOjpp
c29sYXRlZFdvcmxkc0V4aXN0KCkpIHsKKyAgICAgICAgRE9NV3JhcHBlcldvcmxkKiBpc29sYXRl
ZFdvcmxkID0gRE9NV3JhcHBlcldvcmxkOjpnZXRXb3JsZCh2ODo6Q29udGV4dDo6R2V0RW50ZXJl
ZCgpKTsKKyAgICAgICAgaWYgKFVOTElLRUxZKCEhaXNvbGF0ZWRXb3JsZCkpCisgICAgICAgICAg
ICByZXR1cm4gSXNvbGF0ZWRXb3JsZDsKKyAgICB9CisgICAgcmV0dXJuIE1haW5Xb3JsZDsKK30K
KwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvVjhCaW5kaW5nLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEJpbmRp
bmcuaAppbmRleCA5NjJiMDg2OTllODFlZmE3MDE1NGMzZDBhYWE1MTM1MTZhMjYxOTk1Li5kMjIz
NjU3Y2RlZjIyOGRjNzc1ZDdmN2E3MGNmY2NiYWFiNzM0MjA3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy92OC9WOEJpbmRpbmcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9WOEJpbmRpbmcuaApAQCAtNDc0LDYgKzQ3NCw5IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogICAgIHZvaWQgY3Jhc2hJZlY4SXNEZWFkKCk7CiAKKyAgICBXcmFwcGVyV29ybGRUeXBl
IHdvcmxkVHlwZSh2ODo6SXNvbGF0ZSopOworICAgIFdyYXBwZXJXb3JsZFR5cGUgbWFpbklzb2xh
dGVXb3JsZFR5cGUodjg6Oklzb2xhdGUqKTsKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAj
ZW5kaWYgLy8gVjhCaW5kaW5nX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L1Y4RE9NV2luZG93U2hlbGwuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhE
T01XaW5kb3dTaGVsbC5jcHAKaW5kZXggOTU0NjkwNDE4ZDBmNTdiNWY3YzdkOGEyYmNlOGEyMjg2
ZDNlM2E1ZS4uOTlkNDkwM2JiYTczODAzMjRiMmMyODU3Njg5OGUwNjEzNWEzMmM3ZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhET01XaW5kb3dTaGVsbC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhET01XaW5kb3dTaGVsbC5jcHAKQEAgLTMz
LDYgKzMzLDcgQEAKIAogI2luY2x1ZGUgIkNvbnRlbnRTZWN1cml0eVBvbGljeS5oIgogI2luY2x1
ZGUgIkRhdGVFeHRlbnNpb24uaCIKKyNpbmNsdWRlICJET01XcmFwcGVyV29ybGQuaCIKICNpbmNs
dWRlICJEb2N1bWVudExvYWRlci5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiRnJh
bWVMb2FkZXJDbGllbnQuaCIKQEAgLTE1Myw3ICsxNTQsNyBAQCB2b2lkIFY4RE9NV2luZG93U2hl
bGw6OmNsZWFyRm9yTmF2aWdhdGlvbigpCiAgICAgLy8gd2lsbCBiZSBwcm90ZWN0ZWQgYnkgdGhl
IHNlY3VyaXR5IGNoZWNrcyBvbiB0aGUgRE9NV2luZG93IHdyYXBwZXIuCiAgICAgY2xlYXJEb2N1
bWVudFByb3BlcnR5KCk7CiAKLSAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdpbmRvd1dyYXBw
ZXIgPSBtX2dsb2JhbC0+RmluZEluc3RhbmNlSW5Qcm90b3R5cGVDaGFpbihWOERPTVdpbmRvdzo6
R2V0VGVtcGxhdGUobV9pc29sYXRlKSk7CisgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3aW5k
b3dXcmFwcGVyID0gbV9nbG9iYWwtPkZpbmRJbnN0YW5jZUluUHJvdG90eXBlQ2hhaW4oVjhET01X
aW5kb3c6OkdldFRlbXBsYXRlKG1faXNvbGF0ZSwgbWFpbklzb2xhdGVXb3JsZFR5cGUobV9pc29s
YXRlKSkpOwogICAgIEFTU0VSVCghd2luZG93V3JhcHBlci5Jc0VtcHR5KCkpOwogICAgIHdpbmRv
d1dyYXBwZXItPlR1cm5PbkFjY2Vzc0NoZWNrKCk7CiAgICAgbV9jb250ZXh0LT5EZXRhY2hHbG9i
YWwoKTsKQEAgLTMxMCw2ICszMTEsNyBAQCB2b2lkIFY4RE9NV2luZG93U2hlbGw6OmNyZWF0ZUNv
bnRleHQoKQogCiBib29sIFY4RE9NV2luZG93U2hlbGw6Omluc3RhbGxET01XaW5kb3coKQogewor
ICAgIERPTVdyYXBwZXJXb3JsZDo6c2V0SW5pdGlhbGl6aW5nV2luZG93KHRydWUpOwogICAgIERP
TVdpbmRvdyogd2luZG93ID0gbV9mcmFtZS0+ZG9jdW1lbnQoKS0+ZG9tV2luZG93KCk7CiAgICAg
djg6OkxvY2FsPHY4OjpPYmplY3Q+IHdpbmRvd1dyYXBwZXIgPSBWOE9iamVjdENvbnN0cnVjdG9y
OjpuZXdJbnN0YW5jZShWOFBlckNvbnRleHREYXRhOjpmcm9tKG1fY29udGV4dC5nZXQoKSktPmNv
bnN0cnVjdG9yRm9yVHlwZSgmVjhET01XaW5kb3c6OmluZm8pKTsKICAgICBpZiAod2luZG93V3Jh
cHBlci5Jc0VtcHR5KCkpCkBAIC0zMzYsNiArMzM4LDcgQEAgYm9vbCBWOERPTVdpbmRvd1NoZWxs
OjppbnN0YWxsRE9NV2luZG93KCkKICAgICBWOERPTVdyYXBwZXI6OnNldE5hdGl2ZUluZm8oaW5u
ZXJHbG9iYWxPYmplY3QsICZWOERPTVdpbmRvdzo6aW5mbywgd2luZG93KTsKICAgICBpbm5lckds
b2JhbE9iamVjdC0+U2V0UHJvdG90eXBlKHdpbmRvd1dyYXBwZXIpOwogICAgIFY4RE9NV3JhcHBl
cjo6YXNzb2NpYXRlT2JqZWN0V2l0aFdyYXBwZXIoUGFzc1JlZlB0cjxET01XaW5kb3c+KHdpbmRv
dyksICZWOERPTVdpbmRvdzo6aW5mbywgd2luZG93V3JhcHBlciwgbV9pc29sYXRlLCBXcmFwcGVy
Q29uZmlndXJhdGlvbjo6RGVwZW5kZW50KTsKKyAgICBET01XcmFwcGVyV29ybGQ6OnNldEluaXRp
YWxpemluZ1dpbmRvdyhmYWxzZSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NV3JhcHBlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9WOERPTVdyYXBwZXIuY3BwCmluZGV4IDRkOGMyMjZmM2UyNzJmMGUz
NTk2MjFlOGQ0MDY4YzMxOTRiNTNmYjguLjE2YzliMmRiNDU1MDIxZTI0Mzk1M2Y5ZDY5YmFhNDBl
ZDcxOWVlYzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NV3Jh
cHBlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhET01XcmFwcGVyLmNw
cApAQCAtNzksNyArNzksNyBAQCB2ODo6TG9jYWw8djg6Ok9iamVjdD4gVjhET01XcmFwcGVyOjpj
cmVhdGVXcmFwcGVyKHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3JlYXRpbwogICAgIFY4V3JhcHBl
ckluc3RhbnRpYXRpb25TY29wZSBzY29wZShjcmVhdGlvbkNvbnRleHQpOwogCiAgICAgVjhQZXJD
b250ZXh0RGF0YSogcGVyQ29udGV4dERhdGEgPSBWOFBlckNvbnRleHREYXRhOjpmcm9tKHNjb3Bl
LmNvbnRleHQoKSk7Ci0gICAgdjg6OkxvY2FsPHY4OjpPYmplY3Q+IHdyYXBwZXIgPSBwZXJDb250
ZXh0RGF0YSA/IHBlckNvbnRleHREYXRhLT5jcmVhdGVXcmFwcGVyRnJvbUNhY2hlKHR5cGUpIDog
VjhPYmplY3RDb25zdHJ1Y3Rvcjo6bmV3SW5zdGFuY2UodHlwZS0+Z2V0VGVtcGxhdGUoaXNvbGF0
ZSktPkdldEZ1bmN0aW9uKCkpOworICAgIHY4OjpMb2NhbDx2ODo6T2JqZWN0PiB3cmFwcGVyID0g
cGVyQ29udGV4dERhdGEgPyBwZXJDb250ZXh0RGF0YS0+Y3JlYXRlV3JhcHBlckZyb21DYWNoZSh0
eXBlKSA6IFY4T2JqZWN0Q29uc3RydWN0b3I6Om5ld0luc3RhbmNlKHR5cGUtPmdldFRlbXBsYXRl
KGlzb2xhdGUsIG1haW5Jc29sYXRlV29ybGRUeXBlKGlzb2xhdGUpKS0+R2V0RnVuY3Rpb24oKSk7
CiAKICAgICBpZiAodHlwZSA9PSAmVjhIVE1MRG9jdW1lbnQ6OmluZm8gJiYgIXdyYXBwZXIuSXNF
bXB0eSgpKQogICAgICAgICB3cmFwcGVyID0gVjhIVE1MRG9jdW1lbnQ6OndyYXBJblNoYWRvd09i
amVjdCh3cmFwcGVyLCBzdGF0aWNfY2FzdDxOb2RlKj4oaW1wbCksIGlzb2xhdGUpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhJbml0aWFsaXplci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEluaXRpYWxpemVyLmNwcAppbmRleCBjYjNiYzZkYzFl
Y2NhMmFiYjk0NWI5OWUzNDc0MDQ0ZDIyMzI4YjE2Li4yZGZhMGE0MDNkNzRkMjdiNmY3ZDkwNWJl
ODdhZTdkOTg5NDU5YjM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9W
OEluaXRpYWxpemVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEluaXRp
YWxpemVyLmNwcApAQCAtNTEsNyArNTEsNyBAQCBzdGF0aWMgRnJhbWUqIGZpbmRGcmFtZSh2ODo6
TG9jYWw8djg6Ok9iamVjdD4gaG9zdCwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gZGF0YSwgdgogICAg
IFdyYXBwZXJUeXBlSW5mbyogdHlwZSA9IFdyYXBwZXJUeXBlSW5mbzo6dW53cmFwKGRhdGEpOwog
CiAgICAgaWYgKFY4RE9NV2luZG93OjppbmZvLmVxdWFscyh0eXBlKSkgewotICAgICAgICB2ODo6
SGFuZGxlPHY4OjpPYmplY3Q+IHdpbmRvd1dyYXBwZXIgPSBob3N0LT5GaW5kSW5zdGFuY2VJblBy
b3RvdHlwZUNoYWluKFY4RE9NV2luZG93OjpHZXRUZW1wbGF0ZShpc29sYXRlKSk7CisgICAgICAg
IHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd2luZG93V3JhcHBlciA9IGhvc3QtPkZpbmRJbnN0YW5j
ZUluUHJvdG90eXBlQ2hhaW4oVjhET01XaW5kb3c6OkdldFRlbXBsYXRlKGlzb2xhdGUsIHdvcmxk
VHlwZShpc29sYXRlKSkpOwogICAgICAgICBpZiAod2luZG93V3JhcHBlci5Jc0VtcHR5KCkpCiAg
ICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgcmV0dXJuIFY4RE9NV2luZG93Ojp0b05hdGl2
ZSh3aW5kb3dXcmFwcGVyKS0+ZnJhbWUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L1Y4UGVyQ29udGV4dERhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvVjhQZXJDb250ZXh0RGF0YS5jcHAKaW5kZXggYjM5MjMyM2E4ZmRlN2VjNzRhMzNmMDJhYTk1
YzYxNjJlYTg2NTY0Ny4uODZlZWIxMjNjYjhjNmM2MzFkNjJkZWU4ZWY1ODRkZDlkNTAyMzhhOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhQZXJDb250ZXh0RGF0YS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhQZXJDb250ZXh0RGF0YS5jcHAK
QEAgLTExNSw3ICsxMTUsNyBAQCB2ODo6TG9jYWw8djg6OkZ1bmN0aW9uPiBWOFBlckNvbnRleHRE
YXRhOjpjb25zdHJ1Y3RvckZvclR5cGVTbG93Q2FzZShXcmFwcGVyVHlwZQogICAgIEFTU0VSVCgh
bV9vYmplY3RQcm90b3R5cGUuaXNFbXB0eSgpKTsKIAogICAgIHY4OjpDb250ZXh0OjpTY29wZSBz
Y29wZShtX2NvbnRleHQpOwotICAgIHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IGZ1
bmN0aW9uVGVtcGxhdGUgPSB0eXBlLT5nZXRUZW1wbGF0ZShtX2NvbnRleHQtPkdldElzb2xhdGUo
KSk7CisgICAgdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gZnVuY3Rpb25UZW1wbGF0
ZSA9IHR5cGUtPmdldFRlbXBsYXRlKG1fY29udGV4dC0+R2V0SXNvbGF0ZSgpLCB3b3JsZFR5cGUo
bV9jb250ZXh0LT5HZXRJc29sYXRlKCkpKTsKICAgICAvLyBHZXR0aW5nIHRoZSBmdW5jdGlvbiBt
aWdodCBmYWlsIGlmIHdlJ3JlIHJ1bm5pbmcgb3V0IG9mIHN0YWNrIG9yIG1lbW9yeS4KICAgICB2
ODo6VHJ5Q2F0Y2ggdHJ5Q2F0Y2g7CiAgICAgdjg6OkxvY2FsPHY4OjpGdW5jdGlvbj4gZnVuY3Rp
b24gPSBmdW5jdGlvblRlbXBsYXRlLT5HZXRGdW5jdGlvbigpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvdjgvV29ya2VyU2NyaXB0Q29udHJvbGxlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy92OC9Xb3JrZXJTY3JpcHRDb250cm9sbGVyLmNwcAppbmRleCBiYzQ2
MDkzODI3OWZlNGRmMzNhMmE4MTUwMGM2OGMxYTYzMDU3OTkxLi43Mzg1NjIwY2ZjYjc5YTg3Nzk5
M2Q1OTE2NGIzOTg2YmE1NmQ3OWQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy92OC9Xb3JrZXJTY3JpcHRDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9Xb3JrZXJTY3JpcHRDb250cm9sbGVyLmNwcApAQCAtMjQ5LDcgKzI0OSw3IEBAIFdv
cmtlclNjcmlwdENvbnRyb2xsZXIqIFdvcmtlclNjcmlwdENvbnRyb2xsZXI6OmNvbnRyb2xsZXJG
b3JDb250ZXh0KCkKICAgICAgICAgcmV0dXJuIDA7CiAgICAgdjg6OkhhbmRsZTx2ODo6Q29udGV4
dD4gY29udGV4dCA9IHY4OjpDb250ZXh0OjpHZXRDdXJyZW50KCk7CiAgICAgdjg6OkhhbmRsZTx2
ODo6T2JqZWN0PiBnbG9iYWwgPSBjb250ZXh0LT5HbG9iYWwoKTsKLSAgICBnbG9iYWwgPSBnbG9i
YWwtPkZpbmRJbnN0YW5jZUluUHJvdG90eXBlQ2hhaW4oVjhXb3JrZXJDb250ZXh0OjpHZXRUZW1w
bGF0ZShjb250ZXh0LT5HZXRJc29sYXRlKCkpKTsKKyAgICBnbG9iYWwgPSBnbG9iYWwtPkZpbmRJ
bnN0YW5jZUluUHJvdG90eXBlQ2hhaW4oVjhXb3JrZXJDb250ZXh0OjpHZXRUZW1wbGF0ZShjb250
ZXh0LT5HZXRJc29sYXRlKCksIFdvcmtlcldvcmxkKSk7CiAgICAgLy8gUmV0dXJuIDAgaWYgdGhl
IGN1cnJlbnQgZXhlY3V0aW5nIGNvbnRleHQgaXMgbm90IHRoZSB3b3JrZXIgY29udGV4dC4KICAg
ICBpZiAoZ2xvYmFsLklzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIDA7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9XcmFwcGVyVHlwZUluZm8uaCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L1dyYXBwZXJUeXBlSW5mby5oCmluZGV4IGIzMTBhZjlhN2QyZjgwMTIw
NDQ4Nzg2YTg5MGYzYmZhODYyNjY1MjYuLmRjMmE1ZWVlNzAxMmJmZDQ4NzEwNjNkMTY0NjU5ZDM4
ZThlMjA2MjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1dyYXBwZXJU
eXBlSW5mby5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1dyYXBwZXJUeXBlSW5m
by5oCkBAIC00Nyw3ICs0NywxMyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgc3RhdGljIGNv
bnN0IHVpbnQxNl90IHY4RE9NTm9kZUNsYXNzSWQgPSAxOwogICAgIHN0YXRpYyBjb25zdCB1aW50
MTZfdCB2OERPTU9iamVjdENsYXNzSWQgPSAyOwogCi0gICAgdHlwZWRlZiB2ODo6UGVyc2lzdGVu
dDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gKCpHZXRUZW1wbGF0ZUZ1bmN0aW9uKSh2ODo6SXNvbGF0
ZSopOworICAgIGVudW0gV3JhcHBlcldvcmxkVHlwZSB7CisgICAgICAgIE1haW5Xb3JsZCwKKyAg
ICAgICAgSXNvbGF0ZWRXb3JsZCwKKyAgICAgICAgV29ya2VyV29ybGQKKyAgICB9OworCisgICAg
dHlwZWRlZiB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gKCpHZXRUZW1wbGF0
ZUZ1bmN0aW9uKSh2ODo6SXNvbGF0ZSosIFdyYXBwZXJXb3JsZFR5cGUpOwogICAgIHR5cGVkZWYg
dm9pZCAoKkRlcmVmT2JqZWN0RnVuY3Rpb24pKHZvaWQqKTsKICAgICB0eXBlZGVmIEFjdGl2ZURP
TU9iamVjdCogKCpUb0FjdGl2ZURPTU9iamVjdEZ1bmN0aW9uKSh2ODo6SGFuZGxlPHY4OjpPYmpl
Y3Q+KTsKICAgICB0eXBlZGVmIEV2ZW50VGFyZ2V0KiAoKlRvRXZlbnRUYXJnZXRGdW5jdGlvbiko
djg6OkhhbmRsZTx2ODo6T2JqZWN0Pik7CkBAIC04NSw3ICs5MSw3IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQogICAgICAgICAKLSAg
ICAgICAgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IGdldFRlbXBsYXRlKHY4
OjpJc29sYXRlKiBpc29sYXRlKSB7IHJldHVybiBnZXRUZW1wbGF0ZUZ1bmN0aW9uKGlzb2xhdGUp
OyB9CisgICAgICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBnZXRUZW1w
bGF0ZSh2ODo6SXNvbGF0ZSogaXNvbGF0ZSwgV3JhcHBlcldvcmxkVHlwZSB3b3JsZFR5cGUpIHsg
cmV0dXJuIGdldFRlbXBsYXRlRnVuY3Rpb24oaXNvbGF0ZSwgd29ybGRUeXBlKTsgfQogICAgICAg
ICAKICAgICAgICAgdm9pZCBkZXJlZk9iamVjdCh2b2lkKiBvYmplY3QpCiAgICAgICAgIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERPTVdpbmRvd0N1
c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhET01XaW5kb3dD
dXN0b20uY3BwCmluZGV4IDE1ZDhiYjFkNmYwZGVlODdlMTc0OGVkMDUwZTNmYThmY2FlMTkyZDMu
LjA5NGUzOTBhNzQ0ZWNlODEyYTg0NWE3ZGQ0Y2FkZDNiMWQ2NzViNWIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERPTVdpbmRvd0N1c3RvbS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RE9NV2luZG93Q3VzdG9tLmNw
cApAQCAtMTQ2LDcgKzE0Niw3IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBXaW5kb3dTZXRUaW1l
b3V0SW1wbChjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzLCBib29sIHNpbmdsCiAKIHY4OjpIYW5k
bGU8djg6OlZhbHVlPiBWOERPTVdpbmRvdzo6ZXZlbnRBdHRyR2V0dGVyQ3VzdG9tKHY4OjpMb2Nh
bDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewotICAg
IHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gaG9sZGVyID0gaW5mby5UaGlzKCktPkZpbmRJbnN0YW5j
ZUluUHJvdG90eXBlQ2hhaW4oVjhET01XaW5kb3c6OkdldFRlbXBsYXRlKGluZm8uR2V0SXNvbGF0
ZSgpKSk7CisgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBob2xkZXIgPSBpbmZvLlRoaXMoKS0+
RmluZEluc3RhbmNlSW5Qcm90b3R5cGVDaGFpbihWOERPTVdpbmRvdzo6R2V0VGVtcGxhdGUoaW5m
by5HZXRJc29sYXRlKCksIHdvcmxkVHlwZShpbmZvLkdldElzb2xhdGUoKSkpKTsKICAgICBpZiAo
aG9sZGVyLklzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKIApAQCAt
MTY4LDcgKzE2OCw3IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOERPTVdpbmRvdzo6ZXZlbnRB
dHRyR2V0dGVyQ3VzdG9tKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuCiAKIHZvaWQgVjhET01XaW5k
b3c6OmV2ZW50QXR0clNldHRlckN1c3RvbSh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6
OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7
Ci0gICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBob2xkZXIgPSBpbmZvLlRoaXMoKS0+RmluZElu
c3RhbmNlSW5Qcm90b3R5cGVDaGFpbihWOERPTVdpbmRvdzo6R2V0VGVtcGxhdGUoaW5mby5HZXRJ
c29sYXRlKCkpKTsKKyAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGhvbGRlciA9IGluZm8uVGhp
cygpLT5GaW5kSW5zdGFuY2VJblByb3RvdHlwZUNoYWluKFY4RE9NV2luZG93OjpHZXRUZW1wbGF0
ZShpbmZvLkdldElzb2xhdGUoKSwgd29ybGRUeXBlKGluZm8uR2V0SXNvbGF0ZSgpKSkpOwogICAg
IGlmIChob2xkZXIuSXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAKQEAgLTM0NCw3ICszNDQs
NyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhET01XaW5kb3c6OnBvc3RNZXNzYWdlTWV0aG9k
Q3VzdG9tKGNvbnN0IHY4OjpBcmd1bWVudHMmCiAvLyBzd2l0Y2hpbmcgY29udGV4dCBvZiByZWNl
aXZlci4gSSBjb25zaWRlciBpdCBpcyBkYW5nZXJvdXMuCiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4g
VjhET01XaW5kb3c6OnRvU3RyaW5nTWV0aG9kQ3VzdG9tKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFy
Z3MpCiB7Ci0gICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBkb21XcmFwcGVyID0gYXJncy5UaGlz
KCktPkZpbmRJbnN0YW5jZUluUHJvdG90eXBlQ2hhaW4oVjhET01XaW5kb3c6OkdldFRlbXBsYXRl
KGFyZ3MuR2V0SXNvbGF0ZSgpKSk7CisgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBkb21XcmFw
cGVyID0gYXJncy5UaGlzKCktPkZpbmRJbnN0YW5jZUluUHJvdG90eXBlQ2hhaW4oVjhET01XaW5k
b3c6OkdldFRlbXBsYXRlKGFyZ3MuR2V0SXNvbGF0ZSgpLCB3b3JsZFR5cGUoYXJncy5HZXRJc29s
YXRlKCkpKSk7CiAgICAgaWYgKGRvbVdyYXBwZXIuSXNFbXB0eSgpKQogICAgICAgICByZXR1cm4g
YXJncy5UaGlzKCktPk9iamVjdFByb3RvVG9TdHJpbmcoKTsKICAgICByZXR1cm4gZG9tV3JhcHBl
ci0+T2JqZWN0UHJvdG9Ub1N0cmluZygpOwpAQCAtNTEwLDcgKzUxMCw3IEBAIHY4OjpIYW5kbGU8
djg6OlZhbHVlPiBWOERPTVdpbmRvdzo6c2V0SW50ZXJ2YWxNZXRob2RDdXN0b20oY29uc3Qgdjg6
OkFyZ3VtZW50cyYKIGJvb2wgVjhET01XaW5kb3c6Om5hbWVkU2VjdXJpdHlDaGVjayh2ODo6TG9j
YWw8djg6Ok9iamVjdD4gaG9zdCwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4ga2V5LCB2ODo6QWNjZXNz
VHlwZSB0eXBlLCB2ODo6TG9jYWw8djg6OlZhbHVlPikKIHsKICAgICB2ODo6SXNvbGF0ZSogaXNv
bGF0ZSA9IHY4OjpJc29sYXRlOjpHZXRDdXJyZW50KCk7Ci0gICAgdjg6OkhhbmRsZTx2ODo6T2Jq
ZWN0PiB3aW5kb3cgPSBob3N0LT5GaW5kSW5zdGFuY2VJblByb3RvdHlwZUNoYWluKFY4RE9NV2lu
ZG93OjpHZXRUZW1wbGF0ZShpc29sYXRlKSk7CisgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3
aW5kb3cgPSBob3N0LT5GaW5kSW5zdGFuY2VJblByb3RvdHlwZUNoYWluKFY4RE9NV2luZG93OjpH
ZXRUZW1wbGF0ZShpc29sYXRlLCB3b3JsZFR5cGUoaXNvbGF0ZSkpKTsKICAgICBpZiAod2luZG93
LklzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOyAgLy8gdGhlIGZyYW1lIGlzIGdvbmUu
CiAKQEAgLTU0NCw3ICs1NDQsNyBAQCBib29sIFY4RE9NV2luZG93OjpuYW1lZFNlY3VyaXR5Q2hl
Y2sodjg6OkxvY2FsPHY4OjpPYmplY3Q+IGhvc3QsIHY4OjpMb2NhbDx2ODo6VgogYm9vbCBWOERP
TVdpbmRvdzo6aW5kZXhlZFNlY3VyaXR5Q2hlY2sodjg6OkxvY2FsPHY4OjpPYmplY3Q+IGhvc3Qs
IHVpbnQzMl90IGluZGV4LCB2ODo6QWNjZXNzVHlwZSB0eXBlLCB2ODo6TG9jYWw8djg6OlZhbHVl
PikKIHsKICAgICB2ODo6SXNvbGF0ZSogaXNvbGF0ZSA9IHY4OjpJc29sYXRlOjpHZXRDdXJyZW50
KCk7Ci0gICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3aW5kb3cgPSBob3N0LT5GaW5kSW5zdGFu
Y2VJblByb3RvdHlwZUNoYWluKFY4RE9NV2luZG93OjpHZXRUZW1wbGF0ZShpc29sYXRlKSk7Cisg
ICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3aW5kb3cgPSBob3N0LT5GaW5kSW5zdGFuY2VJblBy
b3RvdHlwZUNoYWluKFY4RE9NV2luZG93OjpHZXRUZW1wbGF0ZShpc29sYXRlLCB3b3JsZFR5cGUo
aXNvbGF0ZSkpKTsKICAgICBpZiAod2luZG93LklzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogCkBAIC01ODYsNyArNTg2LDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjgoRE9N
V2luZG93KiB3aW5kb3csIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3JlYXRpb25Db24KICAgICAv
LyBuZWNlc3NhcmlseSB0aGUgZmlyc3QgZ2xvYmFsIG9iamVjdCBhc3NvY2lhdGVkIHdpdGggdGhh
dCBET01XaW5kb3cuCiAgICAgdjg6OkhhbmRsZTx2ODo6Q29udGV4dD4gY3VycmVudENvbnRleHQg
PSB2ODo6Q29udGV4dDo6R2V0Q3VycmVudCgpOwogICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4g
Y3VycmVudEdsb2JhbCA9IGN1cnJlbnRDb250ZXh0LT5HbG9iYWwoKTsKLSAgICB2ODo6SGFuZGxl
PHY4OjpPYmplY3Q+IHdpbmRvd1dyYXBwZXIgPSBjdXJyZW50R2xvYmFsLT5GaW5kSW5zdGFuY2VJ
blByb3RvdHlwZUNoYWluKFY4RE9NV2luZG93OjpHZXRUZW1wbGF0ZShpc29sYXRlKSk7CisgICAg
djg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3aW5kb3dXcmFwcGVyID0gY3VycmVudEdsb2JhbC0+Rmlu
ZEluc3RhbmNlSW5Qcm90b3R5cGVDaGFpbihWOERPTVdpbmRvdzo6R2V0VGVtcGxhdGUoaXNvbGF0
ZSwgbWFpbklzb2xhdGVXb3JsZFR5cGUoaXNvbGF0ZSkpKTsKICAgICBpZiAoIXdpbmRvd1dyYXBw
ZXIuSXNFbXB0eSgpKSB7CiAgICAgICAgIGlmIChWOERPTVdpbmRvdzo6dG9OYXRpdmUod2luZG93
V3JhcHBlcikgPT0gd2luZG93KQogICAgICAgICAgICAgcmV0dXJuIGN1cnJlbnRHbG9iYWw7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MRG9jdW1l
bnRDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTERv
Y3VtZW50Q3VzdG9tLmNwcAppbmRleCA1YzFmNjVmZjUxOWRhMmVjNTc4N2U0NzIwMGU3MDY1OGZh
Y2E4MjE0Li4yMWE2MmQ2ZTIwY2Q2ZGM1ODNiZTFkZDM4MWEzMWIyZDA2OGE0M2I1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MRG9jdW1lbnRDdXN0
b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxEb2N1
bWVudEN1c3RvbS5jcHAKQEAgLTYwLDcgKzYwLDcgQEAgdjg6OkxvY2FsPHY4OjpPYmplY3Q+IFY4
SFRNTERvY3VtZW50Ojp3cmFwSW5TaGFkb3dPYmplY3Qodjg6OkxvY2FsPHY4OjpPYmplY3Q+IHcK
ICAgICAgICAgaWYgKHNoYWRvd1RlbXBsYXRlLklzRW1wdHkoKSkKICAgICAgICAgICAgIHJldHVy
biB2ODo6TG9jYWw8djg6Ok9iamVjdD4oKTsKICAgICAgICAgc2hhZG93VGVtcGxhdGUtPlNldENs
YXNzTmFtZSh2ODo6U3RyaW5nOjpOZXdTeW1ib2woIkhUTUxEb2N1bWVudCIpKTsKLSAgICAgICAg
c2hhZG93VGVtcGxhdGUtPkluaGVyaXQoVjhIVE1MRG9jdW1lbnQ6OkdldFRlbXBsYXRlKGlzb2xh
dGUpKTsKKyAgICAgICAgc2hhZG93VGVtcGxhdGUtPkluaGVyaXQoVjhIVE1MRG9jdW1lbnQ6Okdl
dFRlbXBsYXRlKGlzb2xhdGUsIG1haW5Jc29sYXRlV29ybGRUeXBlKGlzb2xhdGUpKSk7CiAgICAg
ICAgIHNoYWRvd1RlbXBsYXRlLT5JbnN0YW5jZVRlbXBsYXRlKCktPlNldEludGVybmFsRmllbGRD
b3VudChWOEhUTUxEb2N1bWVudDo6aW50ZXJuYWxGaWVsZENvdW50KTsKICAgICB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxJbWFnZUVsZW1l
bnRDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhI
VE1MSW1hZ2VFbGVtZW50Q29uc3RydWN0b3IuY3BwCmluZGV4IDllM2RjZDllMGQ3NGNlOTcyY2U3
YjFlM2U1MzczYzkzYzliOTI0Y2MuLmM0MTQyMWI5MGI4M2E2ZDE5MmFiYjRhZTU1MWJjYjU3MjA0
NTRhMjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhU
TUxJbWFnZUVsZW1lbnRDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvdjgvY3VzdG9tL1Y4SFRNTEltYWdlRWxlbWVudENvbnN0cnVjdG9yLmNwcApAQCAtODYsNyAr
ODYsNyBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IG5hbWVkQ29uc3RydWN0b3JDYWxs
YmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogICAgIHJldHVybiBuYW1lZENvbnN0cnVj
dG9yKGFyZ3MpOwogfQogCi12ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gVjhI
VE1MSW1hZ2VFbGVtZW50Q29uc3RydWN0b3I6OkdldFRlbXBsYXRlKHY4OjpJc29sYXRlKiBpc29s
YXRlKQordjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IFY4SFRNTEltYWdlRWxl
bWVudENvbnN0cnVjdG9yOjpHZXRUZW1wbGF0ZSh2ODo6SXNvbGF0ZSogaXNvbGF0ZSwgV3JhcHBl
cldvcmxkVHlwZSB3b3JsZFR5cGUpCiB7CiAgICAgc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpG
dW5jdGlvblRlbXBsYXRlPiBjYWNoZWRUZW1wbGF0ZTsKICAgICBpZiAoIWNhY2hlZFRlbXBsYXRl
LklzRW1wdHkoKSkKQEAgLTk4LDcgKzk4LDcgQEAgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9u
VGVtcGxhdGU+IFY4SFRNTEltYWdlRWxlbWVudENvbnN0cnVjdG9yOjpHZXRUZW1wbGF0ZSgKICAg
ICB2ODo6TG9jYWw8djg6Ok9iamVjdFRlbXBsYXRlPiBpbnN0YW5jZSA9IHJlc3VsdC0+SW5zdGFu
Y2VUZW1wbGF0ZSgpOwogICAgIGluc3RhbmNlLT5TZXRJbnRlcm5hbEZpZWxkQ291bnQoVjhIVE1M
SW1hZ2VFbGVtZW50OjppbnRlcm5hbEZpZWxkQ291bnQpOwogICAgIHJlc3VsdC0+U2V0Q2xhc3NO
YW1lKHY4OjpTdHJpbmc6Ok5ld1N5bWJvbCgiSFRNTEltYWdlRWxlbWVudCIpKTsKLSAgICByZXN1
bHQtPkluaGVyaXQoVjhIVE1MSW1hZ2VFbGVtZW50OjpHZXRUZW1wbGF0ZShpc29sYXRlKSk7Cisg
ICAgcmVzdWx0LT5Jbmhlcml0KFY4SFRNTEltYWdlRWxlbWVudDo6R2V0VGVtcGxhdGUoaXNvbGF0
ZSwgd29ybGRUeXBlKSk7CiAKICAgICBjYWNoZWRUZW1wbGF0ZSA9IHY4OjpQZXJzaXN0ZW50PHY4
OjpGdW5jdGlvblRlbXBsYXRlPjo6TmV3KGlzb2xhdGUsIHJlc3VsdCk7CiAgICAgcmV0dXJuIGNh
Y2hlZFRlbXBsYXRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3Vz
dG9tL1Y4SFRNTEltYWdlRWxlbWVudENvbnN0cnVjdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9jdXN0b20vVjhIVE1MSW1hZ2VFbGVtZW50Q29uc3RydWN0b3IuaAppbmRleCA5NTZi
YzhkODViOWMwYzJlMTE5YjE4YWFkMTg3MDdiNTI4OWViNTkxLi45N2IzOGU1MDVlZjBiODFhODEx
ZThhMzE3ZjVjYzcyNWU4N2I5MmMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy92OC9jdXN0b20vVjhIVE1MSW1hZ2VFbGVtZW50Q29uc3RydWN0b3IuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MSW1hZ2VFbGVtZW50Q29uc3RydWN0b3Iu
aApAQCAtMzksNyArMzksNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFY4SFRNTElt
YWdlRWxlbWVudENvbnN0cnVjdG9yIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgdjg6OlBlcnNpc3Rl
bnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IEdldFRlbXBsYXRlKHY4OjpJc29sYXRlKiA9IDApOwor
ICAgIHN0YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gR2V0VGVtcGxh
dGUodjg6Oklzb2xhdGUqLCBXcmFwcGVyV29ybGRUeXBlKTsKICAgICBzdGF0aWMgV3JhcHBlclR5
cGVJbmZvIGluZm87CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92
OC9jdXN0b20vVjhJbmplY3RlZFNjcmlwdE1hbmFnZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvY3VzdG9tL1Y4SW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmNwcAppbmRleCBiMjk2MWUz
MDA0MGRhYzY4YjIxNGNiYTVhNDhiNjMwZGQ0MzlmYjUwLi43MzM5MTM5NWNjY2U2YWQ5NDFiMWNm
ZGM4M2YwNmI3MmJiMGFhZDM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92
OC9jdXN0b20vVjhJbmplY3RlZFNjcmlwdE1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEluamVjdGVkU2NyaXB0TWFuYWdlci5jcHAKQEAgLTU1LDcg
KzU1LDcgQEAgc3RhdGljIHZvaWQgV2Vha1JlZmVyZW5jZUNhbGxiYWNrKHY4OjpJc29sYXRlKiBp
c29sYXRlLCB2ODo6UGVyc2lzdGVudDx2ODo6VmFsdWUKIAogc3RhdGljIHY4OjpMb2NhbDx2ODo6
T2JqZWN0PiBjcmVhdGVJbmplY3RlZFNjcmlwdEhvc3RWOFdyYXBwZXIoSW5qZWN0ZWRTY3JpcHRI
b3N0KiBob3N0LCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSkKIHsKLSAgICB2ODo6TG9jYWw8djg6OkZ1
bmN0aW9uPiBmdW5jdGlvbiA9IFY4SW5qZWN0ZWRTY3JpcHRIb3N0OjpHZXRUZW1wbGF0ZShpc29s
YXRlKS0+R2V0RnVuY3Rpb24oKTsKKyAgICB2ODo6TG9jYWw8djg6OkZ1bmN0aW9uPiBmdW5jdGlv
biA9IFY4SW5qZWN0ZWRTY3JpcHRIb3N0OjpHZXRUZW1wbGF0ZShpc29sYXRlLCBNYWluV29ybGQp
LT5HZXRGdW5jdGlvbigpOwogICAgIGlmIChmdW5jdGlvbi5Jc0VtcHR5KCkpIHsKICAgICAgICAg
Ly8gUmV0dXJuIGlmIGFsbG9jYXRpb24gZmFpbGVkLgogICAgICAgICByZXR1cm4gdjg6OkxvY2Fs
PHY4OjpPYmplY3Q+KCk7CkBAIC0xMTgsNyArMTE4LDcgQEAgYm9vbCBJbmplY3RlZFNjcmlwdE1h
bmFnZXI6OmNhbkFjY2Vzc0luc3BlY3RlZFdpbmRvdyhTY3JpcHRTdGF0ZSogc2NyaXB0U3RhdGUp
CiAgICAgdjg6OkxvY2FsPHY4OjpPYmplY3Q+IGdsb2JhbCA9IGNvbnRleHQtPkdsb2JhbCgpOwog
ICAgIGlmIChnbG9iYWwuSXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgdjg6
OkhhbmRsZTx2ODo6T2JqZWN0PiBob2xkZXIgPSBnbG9iYWwtPkZpbmRJbnN0YW5jZUluUHJvdG90
eXBlQ2hhaW4oVjhET01XaW5kb3c6OkdldFRlbXBsYXRlKGNvbnRleHQtPkdldElzb2xhdGUoKSkp
OworICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gaG9sZGVyID0gZ2xvYmFsLT5GaW5kSW5zdGFu
Y2VJblByb3RvdHlwZUNoYWluKFY4RE9NV2luZG93OjpHZXRUZW1wbGF0ZShjb250ZXh0LT5HZXRJ
c29sYXRlKCksIE1haW5Xb3JsZCkpOwogICAgIGlmIChob2xkZXIuSXNFbXB0eSgpKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgRnJhbWUqIGZyYW1lID0gVjhET01XaW5kb3c6OnRvTmF0aXZl
KGhvbGRlciktPmZyYW1lKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92
OC9jdXN0b20vVjhMb2NhdGlvbkN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92
OC9jdXN0b20vVjhMb2NhdGlvbkN1c3RvbS5jcHAKaW5kZXggZWM3MTIyZjhkOTM3MjZjYjg5ZmM5
YzE1OGYzYTUzNDQ1OGIwYzJhNC4uYjJmOWVhM2I4ZTI5MjMyN2E0MzUwZDZmMTIxZTA4ZGY0YmNh
MjcwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4TG9j
YXRpb25DdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9W
OExvY2F0aW9uQ3VzdG9tLmNwcApAQCAtMTQwLDcgKzE0MCw3IEBAIHY4OjpIYW5kbGU8djg6OlZh
bHVlPiBWOExvY2F0aW9uOjpyZWxvYWRBdHRyR2V0dGVyQ3VzdG9tKHY4OjpMb2NhbDx2ODo6U3Ry
aW5nPiBuCiB7CiAgICAgdjg6Oklzb2xhdGUqIGlzb2xhdGUgPSBpbmZvLkdldElzb2xhdGUoKTsK
ICAgICBzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IHByaXZhdGVU
ZW1wbGF0ZSA9IHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPjo6TmV3KGlzb2xh
dGUsIHY4OjpGdW5jdGlvblRlbXBsYXRlOjpOZXcoVjhMb2NhdGlvbjo6cmVsb2FkTWV0aG9kQ3Vz
dG9tLCB2OFVuZGVmaW5lZCgpLCB2ODo6U2lnbmF0dXJlOjpOZXcoVjhMb2NhdGlvbjo6R2V0UmF3
VGVtcGxhdGUoaXNvbGF0ZSkpKSk7Ci0gICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBob2xkZXIg
PSBpbmZvLlRoaXMoKS0+RmluZEluc3RhbmNlSW5Qcm90b3R5cGVDaGFpbihWOExvY2F0aW9uOjpH
ZXRUZW1wbGF0ZShpc29sYXRlKSk7CisgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBob2xkZXIg
PSBpbmZvLlRoaXMoKS0+RmluZEluc3RhbmNlSW5Qcm90b3R5cGVDaGFpbihWOExvY2F0aW9uOjpH
ZXRUZW1wbGF0ZShpc29sYXRlLCB3b3JsZFR5cGUoaXNvbGF0ZSkpKTsKICAgICBpZiAoaG9sZGVy
LklzRW1wdHkoKSkgewogICAgICAgICAvLyBjYW4gb25seSByZWFjaCBoZXJlIGJ5ICdvYmplY3Qu
X19wcm90b19fLmZ1bmMnLCBhbmQgaXQgc2hvdWxkIHBhc3NlZAogICAgICAgICAvLyBkb21haW4g
c2VjdXJpdHkgY2hlY2sgYWxyZWFkeQpAQCAtMTU4LDcgKzE1OCw3IEBAIHY4OjpIYW5kbGU8djg6
OlZhbHVlPiBWOExvY2F0aW9uOjpyZXBsYWNlQXR0ckdldHRlckN1c3RvbSh2ODo6TG9jYWw8djg6
OlN0cmluZz4KIHsKICAgICB2ODo6SXNvbGF0ZSogaXNvbGF0ZSA9IGluZm8uR2V0SXNvbGF0ZSgp
OwogICAgIHN0YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gcHJpdmF0
ZVRlbXBsYXRlID0gdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+OjpOZXcoaXNv
bGF0ZSwgdjg6OkZ1bmN0aW9uVGVtcGxhdGU6Ok5ldyhWOExvY2F0aW9uOjpyZXBsYWNlTWV0aG9k
Q3VzdG9tLCB2OFVuZGVmaW5lZCgpLCB2ODo6U2lnbmF0dXJlOjpOZXcoVjhMb2NhdGlvbjo6R2V0
UmF3VGVtcGxhdGUoaXNvbGF0ZSkpKSk7Ci0gICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBob2xk
ZXIgPSBpbmZvLlRoaXMoKS0+RmluZEluc3RhbmNlSW5Qcm90b3R5cGVDaGFpbihWOExvY2F0aW9u
OjpHZXRUZW1wbGF0ZShpc29sYXRlKSk7CisgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBob2xk
ZXIgPSBpbmZvLlRoaXMoKS0+RmluZEluc3RhbmNlSW5Qcm90b3R5cGVDaGFpbihWOExvY2F0aW9u
OjpHZXRUZW1wbGF0ZShpc29sYXRlLCB3b3JsZFR5cGUoaXNvbGF0ZSkpKTsKICAgICBpZiAoaG9s
ZGVyLklzRW1wdHkoKSkgewogICAgICAgICAvLyBjYW4gb25seSByZWFjaCBoZXJlIGJ5ICdvYmpl
Y3QuX19wcm90b19fLmZ1bmMnLCBhbmQgaXQgc2hvdWxkIHBhc3NlZAogICAgICAgICAvLyBkb21h
aW4gc2VjdXJpdHkgY2hlY2sgYWxyZWFkeQpAQCAtMTc3LDcgKzE3Nyw3IEBAIHY4OjpIYW5kbGU8
djg6OlZhbHVlPiBWOExvY2F0aW9uOjphc3NpZ25BdHRyR2V0dGVyQ3VzdG9tKHY4OjpMb2NhbDx2
ODo6U3RyaW5nPiBuCiAgICAgdjg6Oklzb2xhdGUqIGlzb2xhdGUgPSBpbmZvLkdldElzb2xhdGUo
KTsKICAgICBzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IHByaXZh
dGVUZW1wbGF0ZSA9CiAgICAgICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRl
Pjo6TmV3KGlzb2xhdGUsIHY4OjpGdW5jdGlvblRlbXBsYXRlOjpOZXcoVjhMb2NhdGlvbjo6YXNz
aWduTWV0aG9kQ3VzdG9tLCB2OFVuZGVmaW5lZCgpLCB2ODo6U2lnbmF0dXJlOjpOZXcoVjhMb2Nh
dGlvbjo6R2V0UmF3VGVtcGxhdGUoaXNvbGF0ZSkpKSk7Ci0gICAgdjg6OkhhbmRsZTx2ODo6T2Jq
ZWN0PiBob2xkZXIgPSBpbmZvLlRoaXMoKS0+RmluZEluc3RhbmNlSW5Qcm90b3R5cGVDaGFpbihW
OExvY2F0aW9uOjpHZXRUZW1wbGF0ZShpc29sYXRlKSk7CisgICAgdjg6OkhhbmRsZTx2ODo6T2Jq
ZWN0PiBob2xkZXIgPSBpbmZvLlRoaXMoKS0+RmluZEluc3RhbmNlSW5Qcm90b3R5cGVDaGFpbihW
OExvY2F0aW9uOjpHZXRUZW1wbGF0ZShpc29sYXRlLCB3b3JsZFR5cGUoaXNvbGF0ZSkpKTsKICAg
ICBpZiAoaG9sZGVyLklzRW1wdHkoKSkgewogICAgICAgICAvLyBjYW4gb25seSByZWFjaCBoZXJl
IGJ5ICdvYmplY3QuX19wcm90b19fLmZ1bmMnLCBhbmQgaXQgc2hvdWxkIHBhc3NlZAogICAgICAg
ICAvLyBkb21haW4gc2VjdXJpdHkgY2hlY2sgYWxyZWFkeQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4TWVzc2FnZUV2ZW50Q3VzdG9tLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOE1lc3NhZ2VFdmVudEN1c3RvbS5jcHAKaW5k
ZXggMzg0Y2JhNTdkNjkwZTZiMzhhZTdiYWQ3NzNmNzYwZTIzODFiN2ZhNi4uOGRhZGQ1YzZkZTA3
OWU3ZWU3Mzg0NmJiZGI0NjVhNDcyNjhhM2JiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvdjgvY3VzdG9tL1Y4TWVzc2FnZUV2ZW50Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhNZXNzYWdlRXZlbnRDdXN0b20uY3BwCkBAIC0x
MTYsNyArMTE2LDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4TWVzc2FnZUV2ZW50Ojppbml0
TWVzc2FnZUV2ZW50TWV0aG9kQ3VzdG9tKGNvbnN0IHY4OjpBcmcKICAgICBET01XaW5kb3cqIHNv
dXJjZUFyZyA9IDA7CiAgICAgaWYgKGFyZ3NbNl0tPklzT2JqZWN0KCkpIHsKICAgICAgICAgdjg6
OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwcGVyID0gdjg6OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2Fz
dChhcmdzWzZdKTsKLSAgICAgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3aW5kb3cgPSB3cmFw
cGVyLT5GaW5kSW5zdGFuY2VJblByb3RvdHlwZUNoYWluKFY4RE9NV2luZG93OjpHZXRUZW1wbGF0
ZShhcmdzLkdldElzb2xhdGUoKSkpOworICAgICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdp
bmRvdyA9IHdyYXBwZXItPkZpbmRJbnN0YW5jZUluUHJvdG90eXBlQ2hhaW4oVjhET01XaW5kb3c6
OkdldFRlbXBsYXRlKGFyZ3MuR2V0SXNvbGF0ZSgpLCB3b3JsZFR5cGUoYXJncy5HZXRJc29sYXRl
KCkpKSk7CiAgICAgICAgIGlmICghd2luZG93LklzRW1wdHkoKSkKICAgICAgICAgICAgIHNvdXJj
ZUFyZyA9IFY4RE9NV2luZG93Ojp0b05hdGl2ZSh3aW5kb3cpOwogICAgIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>190918</attachid>
            <date>2013-03-01 03:04:58 -0800</date>
            <delta_ts>2013-03-04 02:30:33 -0800</delta_ts>
            <desc>Patch.</desc>
            <filename>bug-110875-20130301120109.patch</filename>
            <type>text/plain</type>
            <size>40834</size>
            <attacher name="Marja Hölttä">marja</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ0Mjk4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2M5ODA2NWIwMDZiNmE1
NmFjOWE1MmJhZWE5YTJkM2NlZTA4ZTBmMC4uYzc2NGRhZThjZDAzYmFkOGY0Y2YwNzEyYTJjMzdj
OWQ0MDRlODgwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDcwIEBACisyMDEzLTAyLTI2ICBNYXJq
YSBIw7ZsdHTDpCAgPG1hcmphQGNocm9taXVtLm9yZz4KKworICAgICAgICBWOCBiaW5kaW5nczog
QWRkIGEgIndvcmxkIHR5cGUiIHBhcmFtZXRlciB0byBHZXRUZW1wbGF0ZSBhbmQgQ29uZmlndXJl
VjhTb21ldGhpbmdUZW1wbGF0ZSBmdW5jdGlvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTExMDg3NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyAobm8gY2hhbmdlcyBpbiBiZWhhdmlv
ciB5ZXQpLgorCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG06
CisgICAgICAgIChHZW5lcmF0ZUhlYWRlcik6CisgICAgICAgIChHZW5lcmF0ZURvbWFpblNhZmVG
dW5jdGlvbkdldHRlcik6CisgICAgICAgIChHZW5lcmF0ZURvbWFpblNhZmVGdW5jdGlvblNldHRl
cik6CisgICAgICAgIChHZW5lcmF0ZU5vcm1hbEF0dHJHZXR0ZXIpOgorICAgICAgICAoR2VuZXJh
dGVOYW1lZENvbnN0cnVjdG9yKToKKyAgICAgICAgKEdlbmVyYXRlSW1wbGVtZW50YXRpb24pOgor
ICAgICAgICAqIGJpbmRpbmdzL3Y4L0RpY3Rpb25hcnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RGljdGlvbmFyeTo6Z2V0KToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9QYWdlU2NyaXB0RGVidWdT
ZXJ2ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cmV0cmlldmVGcmFtZVdpdGhHbG9iYWxPYmpl
Y3RDaGVjayk6CisgICAgICAgICogYmluZGluZ3MvdjgvVjhBZGFwdG9yRnVuY3Rpb24uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6VjhBZGFwdG9yRnVuY3Rpb246OmdldFRlbXBsYXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlY4QWRhcHRvckZ1bmN0aW9uOjp3cmFwKToKKyAgICAgICAgKiBiaW5kaW5n
cy92OC9WOEFkYXB0b3JGdW5jdGlvbi5oOgorICAgICAgICAoVjhBZGFwdG9yRnVuY3Rpb24pOgor
ICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4QmluZGluZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjp0
b0RPTVdpbmRvdyk6CisgICAgICAgIChXZWJDb3JlOjp0b1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQp
OgorICAgICAgICAoV2ViQ29yZTo6d29ybGRUeXBlKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAg
ICAgICAqIGJpbmRpbmdzL3Y4L1Y4QmluZGluZy5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAg
ICAgICogYmluZGluZ3MvdjgvVjhET01XaW5kb3dTaGVsbC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpWOERPTVdpbmRvd1NoZWxsOjpjbGVhckZvck5hdmlnYXRpb24pOgorICAgICAgICAqIGJpbmRp
bmdzL3Y4L1Y4RE9NV3JhcHBlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOERPTVdyYXBwZXI6
OmNyZWF0ZVdyYXBwZXIpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4SW5pdGlhbGl6ZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6ZmluZEZyYW1lKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9W
OFBlckNvbnRleHREYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4UGVyQ29udGV4dERhdGE6
OmNvbnN0cnVjdG9yRm9yVHlwZVNsb3dDYXNlKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9Xb3Jr
ZXJTY3JpcHRDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclNjcmlwdENv
bnRyb2xsZXI6OmNvbnRyb2xsZXJGb3JDb250ZXh0KToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9X
cmFwcGVyVHlwZUluZm8uaDoKKyAgICAgICAgKFdlYkNvcmU6OldyYXBwZXJUeXBlSW5mbzo6Z2V0
VGVtcGxhdGUpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOERPTVdpbmRvd0N1c3Rv
bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOERPTVdpbmRvdzo6ZXZlbnRBdHRyR2V0dGVyQ3Vz
dG9tKToKKyAgICAgICAgKFdlYkNvcmU6OlY4RE9NV2luZG93OjpldmVudEF0dHJTZXR0ZXJDdXN0
b20pOgorICAgICAgICAoV2ViQ29yZTo6VjhET01XaW5kb3c6OnRvU3RyaW5nTWV0aG9kQ3VzdG9t
KToKKyAgICAgICAgKFdlYkNvcmU6OlY4RE9NV2luZG93OjpuYW1lZFNlY3VyaXR5Q2hlY2spOgor
ICAgICAgICAoV2ViQ29yZTo6VjhET01XaW5kb3c6OmluZGV4ZWRTZWN1cml0eUNoZWNrKToKKyAg
ICAgICAgKFdlYkNvcmU6OnRvVjgpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOEhU
TUxEb2N1bWVudEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOEhUTUxEb2N1bWVudDo6
d3JhcEluU2hhZG93T2JqZWN0KToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhIVE1M
SW1hZ2VFbGVtZW50Q29uc3RydWN0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhIVE1MSW1h
Z2VFbGVtZW50Q29uc3RydWN0b3I6OkdldFRlbXBsYXRlKToKKyAgICAgICAgKiBiaW5kaW5ncy92
OC9jdXN0b20vVjhIVE1MSW1hZ2VFbGVtZW50Q29uc3RydWN0b3IuaDoKKyAgICAgICAgKFY4SFRN
TEltYWdlRWxlbWVudENvbnN0cnVjdG9yKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20v
VjhJbmplY3RlZFNjcmlwdE1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlSW5q
ZWN0ZWRTY3JpcHRIb3N0VjhXcmFwcGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkluamVjdGVkU2Ny
aXB0TWFuYWdlcjo6Y2FuQWNjZXNzSW5zcGVjdGVkV2luZG93KToKKyAgICAgICAgKiBiaW5kaW5n
cy92OC9jdXN0b20vVjhMb2NhdGlvbkN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOExv
Y2F0aW9uOjpyZWxvYWRBdHRyR2V0dGVyQ3VzdG9tKToKKyAgICAgICAgKFdlYkNvcmU6OlY4TG9j
YXRpb246OnJlcGxhY2VBdHRyR2V0dGVyQ3VzdG9tKToKKyAgICAgICAgKFdlYkNvcmU6OlY4TG9j
YXRpb246OmFzc2lnbkF0dHJHZXR0ZXJDdXN0b20pOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1
c3RvbS9WOE1lc3NhZ2VFdmVudEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOE1lc3Nh
Z2VFdmVudDo6aW5pdE1lc3NhZ2VFdmVudE1ldGhvZEN1c3RvbSk6CisKIDIwMTMtMDItMjggIEtl
aXNoaSBIYXR0b3JpICA8a2Vpc2hpQHdlYmtpdC5vcmc+CiAKICAgICAgICAgQWRkIGNhbGVuZGFy
IGhlYWRlciBmb3IgbmV3IGNhbGVuZGFyIHBpY2tlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0gYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbQppbmRleCBiODRkOTYwOThlMmU4YTg0
NzBjZDhjMWY1MTIxYTY4YWIyMzk1YTJiLi4zZDZmYjdhYTAxMDUzMDMwZWI0ZTI4MWViYmVmMzFh
OTg0NDdiZjQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0Nv
ZGVHZW5lcmF0b3JWOC5wbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0Nv
ZGVHZW5lcmF0b3JWOC5wbQpAQCAtMzI0LDcgKzMyNCw3IEBAIHN1YiBHZW5lcmF0ZUhlYWRlcgog
ICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCA8PEVORCk7CiBjbGFzcyBWOCR7bmF0aXZlVHlw
ZX1Db25zdHJ1Y3RvciB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpG
dW5jdGlvblRlbXBsYXRlPiBHZXRUZW1wbGF0ZSh2ODo6SXNvbGF0ZSopOworICAgIHN0YXRpYyB2
ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gR2V0VGVtcGxhdGUodjg6Oklzb2xh
dGUqLCBXcmFwcGVyV29ybGRUeXBlKTsKICAgICBzdGF0aWMgV3JhcHBlclR5cGVJbmZvIGluZm87
CiB9OwogCkBAIC0zNjIsNyArMzYyLDcgQEAgRU5ECiAgICAgcHVzaChAaGVhZGVyQ29udGVudCwg
PDxFTkQpOwogICAgIHN0YXRpYyBib29sIEhhc0luc3RhbmNlKHY4OjpIYW5kbGU8djg6OlZhbHVl
Piwgdjg6Oklzb2xhdGUqKTsKICAgICBzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9u
VGVtcGxhdGU+IEdldFJhd1RlbXBsYXRlKHY4OjpJc29sYXRlKik7Ci0gICAgc3RhdGljIHY4OjpQ
ZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBHZXRUZW1wbGF0ZSh2ODo6SXNvbGF0ZSop
OworICAgIHN0YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gR2V0VGVt
cGxhdGUodjg6Oklzb2xhdGUqLCBXcmFwcGVyV29ybGRUeXBlKTsKICAgICBzdGF0aWMgJHtuYXRp
dmVUeXBlfSogdG9OYXRpdmUodjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBvYmplY3QpCiAgICAgewog
ICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDwke25hdGl2ZVR5cGV9Kj4oJHtmcm9tRnVu
Y3Rpb25PcGVuaW5nfW9iamVjdCR7ZnJvbUZ1bmN0aW9uQ2xvc2luZ30tPkdldEFsaWduZWRQb2lu
dGVyRnJvbUludGVybmFsRmllbGQodjhET01XcmFwcGVyT2JqZWN0SW5kZXgpKTsKQEAgLTc5NCw3
ICs3OTQsNyBAQCBzdWIgR2VuZXJhdGVEb21haW5TYWZlRnVuY3Rpb25HZXR0ZXIKIHN0YXRpYyB2
ODo6SGFuZGxlPHY4OjpWYWx1ZT4gJHtmdW5jTmFtZX1BdHRyR2V0dGVyKHY4OjpMb2NhbDx2ODo6
U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewogICAgIHN0YXRp
YyB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gcHJpdmF0ZVRlbXBsYXRlID0g
djg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+OjpOZXcoaW5mby5HZXRJc29sYXRl
KCksICRuZXdUZW1wbGF0ZVN0cmluZyk7Ci0gICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBob2xk
ZXIgPSBpbmZvLlRoaXMoKS0+RmluZEluc3RhbmNlSW5Qcm90b3R5cGVDaGFpbigke3Y4SW50ZXJm
YWNlTmFtZX06OkdldFRlbXBsYXRlKGluZm8uR2V0SXNvbGF0ZSgpKSk7CisgICAgdjg6OkhhbmRs
ZTx2ODo6T2JqZWN0PiBob2xkZXIgPSBpbmZvLlRoaXMoKS0+RmluZEluc3RhbmNlSW5Qcm90b3R5
cGVDaGFpbigke3Y4SW50ZXJmYWNlTmFtZX06OkdldFRlbXBsYXRlKGluZm8uR2V0SXNvbGF0ZSgp
LCB3b3JsZFR5cGUoaW5mby5HZXRJc29sYXRlKCkpKSk7CiAgICAgaWYgKGhvbGRlci5Jc0VtcHR5
KCkpIHsKICAgICAgICAgLy8gY2FuIG9ubHkgcmVhY2ggaGVyZSBieSAnb2JqZWN0Ll9fcHJvdG9f
Xy5mdW5jJywgYW5kIGl0IHNob3VsZCBwYXNzZWQKICAgICAgICAgLy8gZG9tYWluIHNlY3VyaXR5
IGNoZWNrIGFscmVhZHkKQEAgLTgyOSw3ICs4MjksNyBAQCBzdWIgR2VuZXJhdGVEb21haW5TYWZl
RnVuY3Rpb25TZXR0ZXIKICAgICBwdXNoKEBpbXBsQ29udGVudERlY2xzLCA8PEVORCk7CiBzdGF0
aWMgdm9pZCAke2ludGVyZmFjZU5hbWV9RG9tYWluU2FmZUZ1bmN0aW9uU2V0dGVyKHY4OjpMb2Nh
bDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6
OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsKLSAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGhvbGRl
ciA9IGluZm8uVGhpcygpLT5GaW5kSW5zdGFuY2VJblByb3RvdHlwZUNoYWluKCR7djhJbnRlcmZh
Y2VOYW1lfTo6R2V0VGVtcGxhdGUoaW5mby5HZXRJc29sYXRlKCkpKTsKKyAgICB2ODo6SGFuZGxl
PHY4OjpPYmplY3Q+IGhvbGRlciA9IGluZm8uVGhpcygpLT5GaW5kSW5zdGFuY2VJblByb3RvdHlw
ZUNoYWluKCR7djhJbnRlcmZhY2VOYW1lfTo6R2V0VGVtcGxhdGUoaW5mby5HZXRJc29sYXRlKCks
IHdvcmxkVHlwZShpbmZvLkdldElzb2xhdGUoKSkpKTsKICAgICBpZiAoaG9sZGVyLklzRW1wdHko
KSkKICAgICAgICAgcmV0dXJuOwogICAgICR7aW50ZXJmYWNlTmFtZX0qIGltcCA9ICR7djhJbnRl
cmZhY2VOYW1lfTo6dG9OYXRpdmUoaG9sZGVyKTsKQEAgLTk0OCw3ICs5NDgsNyBAQCBFTkQKICAg
ICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICMgcGVyZm9ybSBsb29rdXAgZmlyc3QKICAgICAg
ICAgICAgIHB1c2goQGltcGxDb250ZW50RGVjbHMsIDw8RU5EKTsKLSAgICB2ODo6SGFuZGxlPHY4
OjpPYmplY3Q+IGhvbGRlciA9IGluZm8uVGhpcygpLT5GaW5kSW5zdGFuY2VJblByb3RvdHlwZUNo
YWluKCR7djhJbnRlcmZhY2VOYW1lfTo6R2V0VGVtcGxhdGUoaW5mby5HZXRJc29sYXRlKCkpKTsK
KyAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGhvbGRlciA9IGluZm8uVGhpcygpLT5GaW5kSW5z
dGFuY2VJblByb3RvdHlwZUNoYWluKCR7djhJbnRlcmZhY2VOYW1lfTo6R2V0VGVtcGxhdGUoaW5m
by5HZXRJc29sYXRlKCksIHdvcmxkVHlwZShpbmZvLkdldElzb2xhdGUoKSkpKTsKICAgICBpZiAo
aG9sZGVyLklzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIHY4VW5kZWZpbmVkKCk7CiBFTkQKQEAg
LTIyNDMsNyArMjI0Myw3IEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gbmFtZWRDb25z
dHJ1Y3RvckNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiAgICAgcmV0dXJuIG5h
bWVkQ29uc3RydWN0b3IoYXJncyk7CiB9CiAKLXY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRl
bXBsYXRlPiAke3Y4SW50ZXJmYWNlTmFtZX1Db25zdHJ1Y3Rvcjo6R2V0VGVtcGxhdGUodjg6Oklz
b2xhdGUqIGlzb2xhdGUpCit2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gJHt2
OEludGVyZmFjZU5hbWV9Q29uc3RydWN0b3I6OkdldFRlbXBsYXRlKHY4OjpJc29sYXRlKiBpc29s
YXRlLCBXcmFwcGVyV29ybGRUeXBlIHdvcmxkVHlwZSkKIHsKICAgICBzdGF0aWMgdjg6OlBlcnNp
c3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IGNhY2hlZFRlbXBsYXRlOwogICAgIGlmICghY2Fj
aGVkVGVtcGxhdGUuSXNFbXB0eSgpKQpAQCAtMjI1NSw3ICsyMjU1LDcgQEAgdjg6OlBlcnNpc3Rl
bnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+ICR7djhJbnRlcmZhY2VOYW1lfUNvbnN0cnVjdG9yOjpH
ZXRUZW1wbGF0ZSgKICAgICB2ODo6TG9jYWw8djg6Ok9iamVjdFRlbXBsYXRlPiBpbnN0YW5jZSA9
IHJlc3VsdC0+SW5zdGFuY2VUZW1wbGF0ZSgpOwogICAgIGluc3RhbmNlLT5TZXRJbnRlcm5hbEZp
ZWxkQ291bnQoJHt2OEludGVyZmFjZU5hbWV9OjppbnRlcm5hbEZpZWxkQ291bnQpOwogICAgIHJl
c3VsdC0+U2V0Q2xhc3NOYW1lKHY4OjpTdHJpbmc6Ok5ld1N5bWJvbCgiJHtpbnRlcmZhY2VOYW1l
fSIpKTsKLSAgICByZXN1bHQtPkluaGVyaXQoJHt2OEludGVyZmFjZU5hbWV9OjpHZXRUZW1wbGF0
ZShpc29sYXRlKSk7CisgICAgcmVzdWx0LT5Jbmhlcml0KCR7djhJbnRlcmZhY2VOYW1lfTo6R2V0
VGVtcGxhdGUoaXNvbGF0ZSwgd29ybGRUeXBlKSk7CiAKICAgICBjYWNoZWRUZW1wbGF0ZSA9IHY4
OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPjo6TmV3KGlzb2xhdGUsIHJlc3VsdCk7
CiAgICAgcmV0dXJuIGNhY2hlZFRlbXBsYXRlOwpAQCAtMjY3OSw3ICsyNjc5LDcgQEAgc3ViIEdl
bmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAgICAgbXkgJHBhcmVudCA9ICRfOwogICAgICAgICBB
ZGRUb0ltcGxJbmNsdWRlcygiVjgke3BhcmVudH0uaCIpOwogICAgICAgICAkcGFyZW50Q2xhc3Mg
PSAiVjgiIC4gJHBhcmVudDsKLSAgICAgICAgJHBhcmVudENsYXNzVGVtcGxhdGUgPSAkcGFyZW50
Q2xhc3MgLiAiOjpHZXRUZW1wbGF0ZShpc29sYXRlKSI7CisgICAgICAgICRwYXJlbnRDbGFzc1Rl
bXBsYXRlID0gJHBhcmVudENsYXNzIC4gIjo6R2V0VGVtcGxhdGUoaXNvbGF0ZSwgd29ybGRUeXBl
KSI7CiAgICAgICAgIGxhc3Q7CiAgICAgfQogCkBAIC0yOTg4LDcgKzI5ODgsNyBAQCBFTkQKIAog
ICAgICMgR2VuZXJhdGUgdGhlIHRlbXBsYXRlIGNvbmZpZ3VyYXRpb24gbWV0aG9kCiAgICAgcHVz
aChAaW1wbENvbnRlbnQsICA8PEVORCk7Ci1zdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0
aW9uVGVtcGxhdGU+IENvbmZpZ3VyZSR7djhJbnRlcmZhY2VOYW1lfVRlbXBsYXRlKHY4OjpQZXJz
aXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBkZXNjLCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSkK
K3N0YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gQ29uZmlndXJlJHt2
OEludGVyZmFjZU5hbWV9VGVtcGxhdGUodjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxh
dGU+IGRlc2MsIHY4OjpJc29sYXRlKiBpc29sYXRlLCBXcmFwcGVyV29ybGRUeXBlIHdvcmxkVHlw
ZSkKIHsKICAgICBkZXNjLT5SZWFkT25seVByb3RvdHlwZSgpOwogCkBAIC0zMTU0LDcgKzMxNTQs
NyBAQCB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gJHt2OEludGVyZmFjZU5h
bWV9OjpHZXRSYXdUZW1wbGF0ZSh2ODo6SXNvbAogICAgIHJldHVybiB0ZW1wbDsKIH0KIAotdjg6
OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+ICR7djhJbnRlcmZhY2VOYW1lfTo6R2V0
VGVtcGxhdGUodjg6Oklzb2xhdGUqIGlzb2xhdGUpCit2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rp
b25UZW1wbGF0ZT4gJHt2OEludGVyZmFjZU5hbWV9OjpHZXRUZW1wbGF0ZSh2ODo6SXNvbGF0ZSog
aXNvbGF0ZSwgV3JhcHBlcldvcmxkVHlwZSB3b3JsZFR5cGUpCiB7CiAgICAgVjhQZXJJc29sYXRl
RGF0YSogZGF0YSA9IFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0ZSk7CiAgICAgVjhQZXJJ
c29sYXRlRGF0YTo6VGVtcGxhdGVNYXA6Oml0ZXJhdG9yIHJlc3VsdCA9IGRhdGEtPnRlbXBsYXRl
TWFwKCkuZmluZCgmaW5mbyk7CkBAIC0zMTYzLDcgKzMxNjMsNyBAQCB2ODo6UGVyc2lzdGVudDx2
ODo6RnVuY3Rpb25UZW1wbGF0ZT4gJHt2OEludGVyZmFjZU5hbWV9OjpHZXRUZW1wbGF0ZSh2ODo6
SXNvbGF0ZQogCiAgICAgdjg6OkhhbmRsZVNjb3BlIGhhbmRsZVNjb3BlOwogICAgIHY4OjpQZXJz
aXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiB0ZW1wbCA9Ci0gICAgICAgIENvbmZpZ3VyZSR7
djhJbnRlcmZhY2VOYW1lfVRlbXBsYXRlKEdldFJhd1RlbXBsYXRlKGlzb2xhdGUpLCBpc29sYXRl
KTsKKyAgICAgICAgQ29uZmlndXJlJHt2OEludGVyZmFjZU5hbWV9VGVtcGxhdGUoR2V0UmF3VGVt
cGxhdGUoaXNvbGF0ZSksIGlzb2xhdGUsIHdvcmxkVHlwZSk7CiAgICAgZGF0YS0+dGVtcGxhdGVN
YXAoKS5hZGQoJmluZm8sIHRlbXBsKTsKICAgICByZXR1cm4gdGVtcGw7CiB9CkBAIC0zMjEyLDcg
KzMyMTIsNyBAQCB2b2lkICR7djhJbnRlcmZhY2VOYW1lfTo6aW5zdGFsbFBlckNvbnRleHRQcm90
b3R5cGVQcm9wZXJ0aWVzKHY4OjpIYW5kbGU8djg6Ok9iagogRU5ECiAgICAgICAgICMgU2V0dXAg
dGhlIGVuYWJsZS1ieS1zZXR0aW5ncyBmdW5jdGlvbnMgaWYgd2UgaGF2ZSB0aGVtCiAgICAgICAg
IHB1c2goQGltcGxDb250ZW50LCAgPDxFTkQpOwotICAgIHY4OjpMb2NhbDx2ODo6U2lnbmF0dXJl
PiBkZWZhdWx0U2lnbmF0dXJlID0gdjg6OlNpZ25hdHVyZTo6TmV3KEdldFRlbXBsYXRlKGlzb2xh
dGUpKTsKKyAgICB2ODo6TG9jYWw8djg6OlNpZ25hdHVyZT4gZGVmYXVsdFNpZ25hdHVyZSA9IHY4
OjpTaWduYXR1cmU6Ok5ldyhHZXRUZW1wbGF0ZShpc29sYXRlLCB3b3JsZFR5cGUoaXNvbGF0ZSkp
KTsKICAgICBVTlVTRURfUEFSQU0oZGVmYXVsdFNpZ25hdHVyZSk7IC8vIEluIHNvbWUgY2FzZXMs
IGl0IHdpbGwgbm90IGJlIHVzZWQuCiAKICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250
ZXh0ID0gdG9TY3JpcHRFeGVjdXRpb25Db250ZXh0KHByb3RvLT5DcmVhdGlvbkNvbnRleHQoKSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9ET01XcmFwcGVyV29ybGQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvRE9NV3JhcHBlcldvcmxkLmNwcAppbmRl
eCBjNWYxNmQ3NjI3ZjAxMDM4MzdmYWIwZjg0ZDcyN2ExMTY1Zjc5NmJhLi5hYWI0MzI3MGQ1ZTE1
NjRjYjlhNjBkMWQwNjcxMTc5MmIyOTA0MmFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy92OC9ET01XcmFwcGVyV29ybGQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L0RPTVdyYXBwZXJXb3JsZC5jcHAKQEAgLTQxLDEyICs0MSwxOCBAQAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBpbnQgRE9NV3JhcHBlcldvcmxkOjppc29sYXRlZFdvcmxkQ291bnQgPSAw
Oworc3RhdGljIGJvb2wgaW5pdGlhbGl6aW5nV2luZG93ID0gZmFsc2U7CiAKIFBhc3NSZWZQdHI8
RE9NV3JhcHBlcldvcmxkPiAgRE9NV3JhcHBlcldvcmxkOjpjcmVhdGVVbmluaXRpYWxpemVkV29y
bGQoKQogewogICAgIHJldHVybiBhZG9wdFJlZihuZXcgRE9NV3JhcHBlcldvcmxkKHVuaW5pdGlh
bGl6ZWRXb3JsZElkLCB1bmluaXRpYWxpemVkRXh0ZW5zaW9uR3JvdXApKTsKIH0KIAordm9pZCBE
T01XcmFwcGVyV29ybGQ6OnNldEluaXRpYWxpemluZ1dpbmRvdyhib29sIGluaXRpYWxpemluZykK
K3sKKyAgICBpbml0aWFsaXppbmdXaW5kb3cgPSBpbml0aWFsaXppbmc7Cit9CisKIFBhc3NSZWZQ
dHI8RE9NV3JhcHBlcldvcmxkPiBET01XcmFwcGVyV29ybGQ6OmNyZWF0ZU1haW5Xb3JsZCgpCiB7
CiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBET01XcmFwcGVyV29ybGQobWFpbldvcmxkSWQsIG1h
aW5Xb3JsZEV4dGVuc2lvbkdyb3VwKSk7CkBAIC02NywxMCArNzMsMTIgQEAgRE9NV3JhcHBlcldv
cmxkKiBtYWluVGhyZWFkTm9ybWFsV29ybGQoKQogICAgIHJldHVybiBjYWNoZWROb3JtYWxXb3Js
ZC5nZXQoKTsKIH0KIAotdm9pZCBET01XcmFwcGVyV29ybGQ6OmFzc2VydENvbnRleHRIYXNDb3Jy
ZWN0UHJvdG90eXBlKHY4OjpIYW5kbGU8djg6OkNvbnRleHQ+IGNvbnRleHQpCitib29sIERPTVdy
YXBwZXJXb3JsZDo6Y29udGV4dEhhc0NvcnJlY3RQcm90b3R5cGUodjg6OkhhbmRsZTx2ODo6Q29u
dGV4dD4gY29udGV4dCkKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwotICAgIEFTU0VS
VChWOERPTVdyYXBwZXI6OmlzV3JhcHBlck9mVHlwZSh0b0lubmVyR2xvYmFsT2JqZWN0KGNvbnRl
eHQpLCAmVjhET01XaW5kb3c6OmluZm8pKTsKKyAgICBpZiAoaW5pdGlhbGl6aW5nV2luZG93KQor
ICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICByZXR1cm4gVjhET01XcmFwcGVyOjppc1dyYXBwZXJP
ZlR5cGUodG9Jbm5lckdsb2JhbE9iamVjdChjb250ZXh0KSwgJlY4RE9NV2luZG93OjppbmZvKTsK
IH0KIAogc3RhdGljIHZvaWQgaXNvbGF0ZWRXb3JsZFdlYWtDYWxsYmFjayh2ODo6SXNvbGF0ZSog
aXNvbGF0ZSwgdjg6OlBlcnNpc3RlbnQ8djg6OlZhbHVlPiBvYmplY3QsIHZvaWQqIHBhcmFtZXRl
cikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0RPTVdyYXBwZXJXb3Js
ZC5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvRE9NV3JhcHBlcldvcmxkLmgKaW5kZXgg
NDhjMjBlNDYyNTMyZTc5M2UzY2IyMTRjMjZhYTdmZDNlZGI1NmMyMS4uYmQyYTczZjdhMTBjZDE4
MGZmODI5MzM3YzMzZTU1OTBmZTJiOTM2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvRE9NV3JhcHBlcldvcmxkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvRE9NV3JhcHBlcldvcmxkLmgKQEAgLTYxLDEwICs2MSw5IEBAIHB1YmxpYzoKICAgICB2b2lk
IG1ha2VDb250ZXh0V2Vhayh2ODo6SGFuZGxlPHY4OjpDb250ZXh0Pik7CiAgICAgdm9pZCBzZXRJ
c29sYXRlZFdvcmxkRmllbGQodjg6OkhhbmRsZTx2ODo6Q29udGV4dD4pOwogCi0gICAgc3RhdGlj
IHZvaWQgYXNzZXJ0Q29udGV4dEhhc0NvcnJlY3RQcm90b3R5cGUodjg6OkhhbmRsZTx2ODo6Q29u
dGV4dD4pOwogICAgIHN0YXRpYyBET01XcmFwcGVyV29ybGQqIGdldFdvcmxkKHY4OjpIYW5kbGU8
djg6OkNvbnRleHQ+IGNvbnRleHQpCiAgICAgewotICAgICAgICBhc3NlcnRDb250ZXh0SGFzQ29y
cmVjdFByb3RvdHlwZShjb250ZXh0KTsKKyAgICAgICAgQVNTRVJUKGNvbnRleHRIYXNDb3JyZWN0
UHJvdG90eXBlKGNvbnRleHQpKTsKICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PERPTVdyYXBw
ZXJXb3JsZCo+KGNvbnRleHQtPkdldEFsaWduZWRQb2ludGVyRnJvbUVtYmVkZGVyRGF0YSh2OENv
bnRleHRJc29sYXRlZFdvcmxkKSk7CiAgICAgfQogICAgIHN0YXRpYyBET01XcmFwcGVyV29ybGQq
IGdldFdvcmxkV2l0aG91dENvbnRleHRDaGVjayh2ODo6SGFuZGxlPHY4OjpDb250ZXh0PiBjb250
ZXh0KQpAQCAtMTA3LDkgKzEwNiwxMiBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBtX2RvbURh
dGFTdG9yZS5nZXQoKTsKICAgICB9CiAKKyAgICBzdGF0aWMgdm9pZCBzZXRJbml0aWFsaXppbmdX
aW5kb3coYm9vbCk7CisKIHByaXZhdGU6CiAgICAgc3RhdGljIGludCBpc29sYXRlZFdvcmxkQ291
bnQ7CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8RE9NV3JhcHBlcldvcmxkPiBjcmVhdGVNYWluV29y
bGQoKTsKKyAgICBzdGF0aWMgYm9vbCBjb250ZXh0SGFzQ29ycmVjdFByb3RvdHlwZSh2ODo6SGFu
ZGxlPHY4OjpDb250ZXh0Pik7CiAKICAgICBET01XcmFwcGVyV29ybGQoaW50IHdvcmxkSWQsIGlu
dCBleHRlbnNpb25Hcm91cCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L0RpY3Rpb25hcnkuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvRGljdGlvbmFy
eS5jcHAKaW5kZXggOGE5Y2YxZGY2YmI1NWRiOTI3ZDNmNDEwZjNjNmI3YzlkMGRhM2VkMi4uMWEx
ZDg4NDc2NTNhODY4MWYxOTc3N2FlNTU1NmZkY2UxMDhlYzYwZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvdjgvRGljdGlvbmFyeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvdjgvRGljdGlvbmFyeS5jcHAKQEAgLTI1OSw3ICsyNTksNyBAQCBib29sIERpY3Rp
b25hcnk6OmdldChjb25zdCBTdHJpbmcmIGtleSwgUmVmUHRyPERPTVdpbmRvdz4mIHZhbHVlKSBj
b25zdAogICAgIHZhbHVlID0gMDsKICAgICBpZiAodjhWYWx1ZS0+SXNPYmplY3QoKSkgewogICAg
ICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBwZXIgPSB2ODo6SGFuZGxlPHY4OjpPYmpl
Y3Q+OjpDYXN0KHY4VmFsdWUpOwotICAgICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdpbmRv
dyA9IHdyYXBwZXItPkZpbmRJbnN0YW5jZUluUHJvdG90eXBlQ2hhaW4oVjhET01XaW5kb3c6Okdl
dFRlbXBsYXRlKG1faXNvbGF0ZSkpOworICAgICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdp
bmRvdyA9IHdyYXBwZXItPkZpbmRJbnN0YW5jZUluUHJvdG90eXBlQ2hhaW4oVjhET01XaW5kb3c6
OkdldFRlbXBsYXRlKG1faXNvbGF0ZSwgbWFpbklzb2xhdGVXb3JsZFR5cGUobV9pc29sYXRlKSkp
OwogICAgICAgICBpZiAoIXdpbmRvdy5Jc0VtcHR5KCkpCiAgICAgICAgICAgICB2YWx1ZSA9IFY4
RE9NV2luZG93Ojp0b05hdGl2ZSh3aW5kb3cpOwogICAgIH0KQEAgLTM2Myw3ICszNjMsNyBAQCBi
b29sIERpY3Rpb25hcnk6OmdldChjb25zdCBTdHJpbmcmIGtleSwgUmVmUHRyPFRyYWNrQmFzZT4m
IHZhbHVlKSBjb25zdAogCiAgICAgICAgIC8vIEZJWE1FOiB0aGlzIHdpbGwgbmVlZCB0byBiZSBj
aGFuZ2VkIHNvIGl0IGNhbiBhbHNvIHJldHVybiBhbiBBdWRpb1RyYWNrIG9yIGEgVmlkZW9UcmFj
ayBvbmNlCiAgICAgICAgIC8vIHdlIGFkZCB0aGVtLgotICAgICAgICB2ODo6SGFuZGxlPHY4OjpP
YmplY3Q+IHRyYWNrID0gd3JhcHBlci0+RmluZEluc3RhbmNlSW5Qcm90b3R5cGVDaGFpbihWOFRl
eHRUcmFjazo6R2V0VGVtcGxhdGUobV9pc29sYXRlKSk7CisgICAgICAgIHY4OjpIYW5kbGU8djg6
Ok9iamVjdD4gdHJhY2sgPSB3cmFwcGVyLT5GaW5kSW5zdGFuY2VJblByb3RvdHlwZUNoYWluKFY4
VGV4dFRyYWNrOjpHZXRUZW1wbGF0ZShtX2lzb2xhdGUsIHdvcmxkVHlwZShtX2lzb2xhdGUpKSk7
CiAgICAgICAgIGlmICghdHJhY2suSXNFbXB0eSgpKQogICAgICAgICAgICAgc291cmNlID0gVjhU
ZXh0VHJhY2s6OnRvTmF0aXZlKHRyYWNrKTsKICAgICB9CkBAIC00MzYsNyArNDM2LDcgQEAgYm9v
bCBEaWN0aW9uYXJ5OjpnZXQoY29uc3QgU3RyaW5nJiBrZXksIFJlZlB0cjxFdmVudFRhcmdldD4m
IHZhbHVlKSBjb25zdAogICAgIC8vIGV4aXN0cyBvbiBhIHByb3RvdHlwZSBjaGFpbiBvZiB2OFZh
bHVlLgogICAgIGlmICh2OFZhbHVlLT5Jc09iamVjdCgpKSB7CiAgICAgICAgIHY4OjpIYW5kbGU8
djg6Ok9iamVjdD4gd3JhcHBlciA9IHY4OjpIYW5kbGU8djg6Ok9iamVjdD46OkNhc3QodjhWYWx1
ZSk7Ci0gICAgICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd2luZG93ID0gd3JhcHBlci0+Rmlu
ZEluc3RhbmNlSW5Qcm90b3R5cGVDaGFpbihWOERPTVdpbmRvdzo6R2V0VGVtcGxhdGUobV9pc29s
YXRlKSk7CisgICAgICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd2luZG93ID0gd3JhcHBlci0+
RmluZEluc3RhbmNlSW5Qcm90b3R5cGVDaGFpbihWOERPTVdpbmRvdzo6R2V0VGVtcGxhdGUobV9p
c29sYXRlLCBtYWluSXNvbGF0ZVdvcmxkVHlwZShtX2lzb2xhdGUpKSk7CiAgICAgICAgIGlmICgh
d2luZG93LklzRW1wdHkoKSkgewogICAgICAgICAgICAgdmFsdWUgPSB0b1dyYXBwZXJUeXBlSW5m
byh3aW5kb3cpLT50b0V2ZW50VGFyZ2V0KHdpbmRvdyk7CiAgICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1BhZ2VTY3JpcHREZWJ1
Z1NlcnZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9QYWdlU2NyaXB0RGVidWdT
ZXJ2ZXIuY3BwCmluZGV4IGJhNmU1ZjhjOGM5NjA0MWQ4YTczZDc2OGZiMzg2YzZhZDUzMDUxOTgu
LjJmNTEwZGUzYzBiY2VlMDU2ZjI5NWZlOThhZjgyZDE2YzgwNGY2M2MgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1BhZ2VTY3JpcHREZWJ1Z1NlcnZlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvUGFnZVNjcmlwdERlYnVnU2VydmVyLmNwcApAQCAt
NTYsNyArNTYsNyBAQCBzdGF0aWMgRnJhbWUqIHJldHJpZXZlRnJhbWVXaXRoR2xvYmFsT2JqZWN0
Q2hlY2sodjg6OkhhbmRsZTx2ODo6Q29udGV4dD4gY29udGV4dAogICAgIGlmIChnbG9iYWwuSXNF
bXB0eSgpKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIGdsb2JhbCA9IGdsb2JhbC0+RmluZElu
c3RhbmNlSW5Qcm90b3R5cGVDaGFpbihWOERPTVdpbmRvdzo6R2V0VGVtcGxhdGUoY29udGV4dC0+
R2V0SXNvbGF0ZSgpKSk7CisgICAgZ2xvYmFsID0gZ2xvYmFsLT5GaW5kSW5zdGFuY2VJblByb3Rv
dHlwZUNoYWluKFY4RE9NV2luZG93OjpHZXRUZW1wbGF0ZShjb250ZXh0LT5HZXRJc29sYXRlKCks
IG1haW5Jc29sYXRlV29ybGRUeXBlKGNvbnRleHQtPkdldElzb2xhdGUoKSkpKTsKICAgICBpZiAo
Z2xvYmFsLklzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIDA7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4QWRhcHRvckZ1bmN0aW9uLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L1Y4QWRhcHRvckZ1bmN0aW9uLmNwcAppbmRleCBiYmMxZDMyNzRmYzdk
ODlmMWRhNjM0YWRhNzc5YmJjNmU0NjJlY2RkLi5jNzJjNzEzZWQwN2E5NTMyZjIxMTUwZWZiY2Qw
NjkwY2NkY2YwMzM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEFk
YXB0b3JGdW5jdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhBZGFw
dG9yRnVuY3Rpb24uY3BwCkBAIC00MCw3ICs0MCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
V3JhcHBlclR5cGVJbmZvIFY4QWRhcHRvckZ1bmN0aW9uOjppbmZvID0geyBWOEFkYXB0b3JGdW5j
dGlvbjo6Z2V0VGVtcGxhdGUsIDAsIDAsIDAsIDAsIDAsIDAsIFdyYXBwZXJUeXBlT2JqZWN0UHJv
dG90eXBlIH07CiAKLXY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBWOEFkYXB0
b3JGdW5jdGlvbjo6Z2V0VGVtcGxhdGUodjg6Oklzb2xhdGUqIGlzb2xhdGUpCit2ODo6UGVyc2lz
dGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gVjhBZGFwdG9yRnVuY3Rpb246OmdldFRlbXBsYXRl
KHY4OjpJc29sYXRlKiBpc29sYXRlLCBXcmFwcGVyV29ybGRUeXBlIHdvcmxkVHlwZSkKIHsKICAg
ICBBU1NFUlQoaXNvbGF0ZSk7CiAgICAgVjhQZXJJc29sYXRlRGF0YSogZGF0YSA9IFY4UGVySXNv
bGF0ZURhdGE6OmZyb20oaXNvbGF0ZSk7CkBAIC03Niw3ICs3Niw3IEBAIHY4OjpIYW5kbGU8djg6
OkZ1bmN0aW9uPiBWOEFkYXB0b3JGdW5jdGlvbjo6d3JhcCh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+
IG9iamVjdCwKIHsKICAgICBpZiAob2JqZWN0LklzRW1wdHkoKSB8fCAhb2JqZWN0LT5Jc09iamVj
dCgpKQogICAgICAgICByZXR1cm4gdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb24+KCk7Ci0gICAgdjg6
OkhhbmRsZTx2ODo6RnVuY3Rpb24+IGFkYXB0b3IgPSB2ODo6SGFuZGxlPHY4OjpGdW5jdGlvbj46
OkNhc3QoZ2V0VGVtcGxhdGUoaXNvbGF0ZSktPkdldEZ1bmN0aW9uKCkpOworICAgIHY4OjpIYW5k
bGU8djg6OkZ1bmN0aW9uPiBhZGFwdG9yID0gdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb24+OjpDYXN0
KGdldFRlbXBsYXRlKGlzb2xhdGUsIHdvcmxkVHlwZShpc29sYXRlKSktPkdldEZ1bmN0aW9uKCkp
OwogICAgIGlmIChhZGFwdG9yLklzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIHY4OjpIYW5kbGU8
djg6OkZ1bmN0aW9uPigpOwogICAgIGFkYXB0b3ItPlNldE5hbWUodjhTdHJpbmcobmFtZS5zdHJp
bmcoKSwgaXNvbGF0ZSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
VjhBZGFwdG9yRnVuY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4QWRhcHRv
ckZ1bmN0aW9uLmgKaW5kZXggZTNkNmJiNTFmNDQwYTRjNzcyNGFiY2UzZGU5MzA2OGRhZThjM2E1
Ny4uNzgzNmViNGM2NWI5NDMzNDFmYzJhMzRjN2FkM2VlZTRkOWZiZTU2MCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhBZGFwdG9yRnVuY3Rpb24uaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEFkYXB0b3JGdW5jdGlvbi5oCkBAIC01NSw3ICs1NSw3
IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb24+IHdyYXAodjg6
OkhhbmRsZTx2ODo6T2JqZWN0PiwgY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCB2ODo6SXNvbGF0
ZSopOwogICAgIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpGdW5jdGlvbj4gZ2V0KHY4OjpIYW5kbGU8
djg6Ok9iamVjdD4pOwogCi0gICAgc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRl
bXBsYXRlPiBnZXRUZW1wbGF0ZSh2ODo6SXNvbGF0ZSogPSAwKTsKKyAgICBzdGF0aWMgdjg6OlBl
cnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IGdldFRlbXBsYXRlKHY4OjpJc29sYXRlKiwg
V3JhcHBlcldvcmxkVHlwZSk7CiAgICAgc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlv
blRlbXBsYXRlPiBjb25maWd1cmVUZW1wbGF0ZSh2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25U
ZW1wbGF0ZT4pOwogICAgIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gaW52b2NhdGlvbkNh
bGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmKTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9WOEJpbmRpbmcuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvVjhCaW5kaW5nLmNwcAppbmRleCA4NjNmNGZkNmFjMGE2NTViZTkyODRmN2NmOGNjMDQzOGQ0
MjJmNTY3Li5kYzM2NDI0NTViMGRjYTg5ZDkzYWRlZjE5MzZlOTU5MTRlOGFjMjU4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEJpbmRpbmcuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4QmluZGluZy5jcHAKQEAgLTIyMSw3ICsyMjEsMTAgQEAg
RE9NV2luZG93KiB0b0RPTVdpbmRvdyh2ODo6SGFuZGxlPHY4OjpDb250ZXh0PiBjb250ZXh0KQog
ewogICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gZ2xvYmFsID0gY29udGV4dC0+R2xvYmFsKCk7
CiAgICAgQVNTRVJUKCFnbG9iYWwuSXNFbXB0eSgpKTsKLSAgICBnbG9iYWwgPSBnbG9iYWwtPkZp
bmRJbnN0YW5jZUluUHJvdG90eXBlQ2hhaW4oVjhET01XaW5kb3c6OkdldFRlbXBsYXRlKGNvbnRl
eHQtPkdldElzb2xhdGUoKSkpOworICAgIGdsb2JhbCA9IGdsb2JhbC0+RmluZEluc3RhbmNlSW5Q
cm90b3R5cGVDaGFpbihWOERPTVdpbmRvdzo6R2V0VGVtcGxhdGUoY29udGV4dC0+R2V0SXNvbGF0
ZSgpLCBNYWluV29ybGQpKTsKKyAgICBpZiAoIWdsb2JhbC5Jc0VtcHR5KCkpCisgICAgICAgIHJl
dHVybiBWOERPTVdpbmRvdzo6dG9OYXRpdmUoZ2xvYmFsKTsKKyAgICBnbG9iYWwgPSBnbG9iYWwt
PkZpbmRJbnN0YW5jZUluUHJvdG90eXBlQ2hhaW4oVjhET01XaW5kb3c6OkdldFRlbXBsYXRlKGNv
bnRleHQtPkdldElzb2xhdGUoKSwgSXNvbGF0ZWRXb3JsZCkpOwogICAgIEFTU0VSVCghZ2xvYmFs
LklzRW1wdHkoKSk7CiAgICAgcmV0dXJuIFY4RE9NV2luZG93Ojp0b05hdGl2ZShnbG9iYWwpOwog
fQpAQCAtMjI5LDExICsyMzIsMTQgQEAgRE9NV2luZG93KiB0b0RPTVdpbmRvdyh2ODo6SGFuZGxl
PHY4OjpDb250ZXh0PiBjb250ZXh0KQogU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogdG9TY3JpcHRF
eGVjdXRpb25Db250ZXh0KHY4OjpIYW5kbGU8djg6OkNvbnRleHQ+IGNvbnRleHQpCiB7CiAgICAg
djg6OkhhbmRsZTx2ODo6T2JqZWN0PiBnbG9iYWwgPSBjb250ZXh0LT5HbG9iYWwoKTsKLSAgICB2
ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdpbmRvd1dyYXBwZXIgPSBnbG9iYWwtPkZpbmRJbnN0YW5j
ZUluUHJvdG90eXBlQ2hhaW4oVjhET01XaW5kb3c6OkdldFRlbXBsYXRlKGNvbnRleHQtPkdldElz
b2xhdGUoKSkpOworICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd2luZG93V3JhcHBlciA9IGds
b2JhbC0+RmluZEluc3RhbmNlSW5Qcm90b3R5cGVDaGFpbihWOERPTVdpbmRvdzo6R2V0VGVtcGxh
dGUoY29udGV4dC0+R2V0SXNvbGF0ZSgpLCBNYWluV29ybGQpKTsKKyAgICBpZiAoIXdpbmRvd1dy
YXBwZXIuSXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gVjhET01XaW5kb3c6OnRvTmF0aXZlKHdp
bmRvd1dyYXBwZXIpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CisgICAgd2luZG93V3JhcHBl
ciA9IGdsb2JhbC0+RmluZEluc3RhbmNlSW5Qcm90b3R5cGVDaGFpbihWOERPTVdpbmRvdzo6R2V0
VGVtcGxhdGUoY29udGV4dC0+R2V0SXNvbGF0ZSgpLCBJc29sYXRlZFdvcmxkKSk7CiAgICAgaWYg
KCF3aW5kb3dXcmFwcGVyLklzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIFY4RE9NV2luZG93Ojp0
b05hdGl2ZSh3aW5kb3dXcmFwcGVyKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwogI2lmIEVO
QUJMRShXT1JLRVJTKQotICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd29ya2VyV3JhcHBlciA9
IGdsb2JhbC0+RmluZEluc3RhbmNlSW5Qcm90b3R5cGVDaGFpbihWOFdvcmtlckNvbnRleHQ6Okdl
dFRlbXBsYXRlKGNvbnRleHQtPkdldElzb2xhdGUoKSkpOworICAgIHY4OjpIYW5kbGU8djg6Ok9i
amVjdD4gd29ya2VyV3JhcHBlciA9IGdsb2JhbC0+RmluZEluc3RhbmNlSW5Qcm90b3R5cGVDaGFp
bihWOFdvcmtlckNvbnRleHQ6OkdldFRlbXBsYXRlKGNvbnRleHQtPkdldElzb2xhdGUoKSwgV29y
a2VyV29ybGQpKTsKICAgICBpZiAoIXdvcmtlcldyYXBwZXIuSXNFbXB0eSgpKQogICAgICAgICBy
ZXR1cm4gVjhXb3JrZXJDb250ZXh0Ojp0b05hdGl2ZSh3b3JrZXJXcmFwcGVyKS0+c2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpOwogI2VuZGlmCkBAIC0zMDUsNCArMzExLDI1IEBAIHZvaWQgY3Jhc2hJ
ZlY4SXNEZWFkKCkKICAgICB9CiB9CiAKK1dyYXBwZXJXb3JsZFR5cGUgd29ybGRUeXBlKHY4OjpJ
c29sYXRlKiBpc29sYXRlKQoreworICAgIC8vIFRPRE86IEFzc2VydCB0aGF0IGlzb2xhdGUgaXMg
bm90IDAuCisgICAgVjhQZXJJc29sYXRlRGF0YSogZGF0YSA9IGlzb2xhdGUgPyBWOFBlcklzb2xh
dGVEYXRhOjpmcm9tKGlzb2xhdGUpIDogVjhQZXJJc29sYXRlRGF0YTo6Y3VycmVudCgpOworICAg
IC8vIFRPRE86IFJlbmFtZSBkb21EYXRhU3RvcmUoKSB0byB3b3JrZXJEYXRhU3RvcmUoKS4KKyAg
ICBpZiAoIWRhdGEtPmRvbURhdGFTdG9yZSgpKQorICAgICAgICByZXR1cm4gbWFpbklzb2xhdGVX
b3JsZFR5cGUoaXNvbGF0ZSk7CisgICAgcmV0dXJuIFdvcmtlcldvcmxkOworfQorCitXcmFwcGVy
V29ybGRUeXBlIG1haW5Jc29sYXRlV29ybGRUeXBlKHY4OjpJc29sYXRlKiBpc29sYXRlKQorewor
ICAgIGlmICghRE9NV3JhcHBlcldvcmxkOjppc29sYXRlZFdvcmxkc0V4aXN0KCkpCisgICAgICAg
IHJldHVybiBNYWluV29ybGQ7CisgICAgQVNTRVJUKCF2ODo6Q29udGV4dDo6R2V0RW50ZXJlZCgp
LklzRW1wdHkoKSk7CisgICAgRE9NV3JhcHBlcldvcmxkKiBpc29sYXRlZFdvcmxkID0gRE9NV3Jh
cHBlcldvcmxkOjpnZXRXb3JsZCh2ODo6Q29udGV4dDo6R2V0RW50ZXJlZCgpKTsKKyAgICBpZiAo
aXNvbGF0ZWRXb3JsZCkKKyAgICAgICAgcmV0dXJuIElzb2xhdGVkV29ybGQ7CisgICAgcmV0dXJu
IE1haW5Xb3JsZDsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhCaW5kaW5nLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9WOEJpbmRpbmcuaAppbmRleCA5NjJiMDg2OTllODFlZmE3MDE1NGMzZDBhYWE1MTM1
MTZhMjYxOTk1Li5kMjIzNjU3Y2RlZjIyOGRjNzc1ZDdmN2E3MGNmY2NiYWFiNzM0MjA3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEJpbmRpbmcuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEJpbmRpbmcuaApAQCAtNDc0LDYgKzQ3NCw5IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogICAgIHZvaWQgY3Jhc2hJZlY4SXNEZWFkKCk7CiAKKyAgICBX
cmFwcGVyV29ybGRUeXBlIHdvcmxkVHlwZSh2ODo6SXNvbGF0ZSopOworICAgIFdyYXBwZXJXb3Js
ZFR5cGUgbWFpbklzb2xhdGVXb3JsZFR5cGUodjg6Oklzb2xhdGUqKTsKKwogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gVjhCaW5kaW5nX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NV2luZG93U2hlbGwuY3BwIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvdjgvVjhET01XaW5kb3dTaGVsbC5jcHAKaW5kZXggOTU0NjkwNDE4ZDBmNTdiNWY3
YzdkOGEyYmNlOGEyMjg2ZDNlM2E1ZS4uMGIyYTVjNGM3YTU2YjJhZWFiOWZlZDljM2UzODBlMmUy
OWY5YTg5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhET01XaW5k
b3dTaGVsbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhET01XaW5kb3dT
aGVsbC5jcHAKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJWOERPTVdpbmRvd1NoZWxsLmgi
CiAKICNpbmNsdWRlICJDb250ZW50U2VjdXJpdHlQb2xpY3kuaCIKKyNpbmNsdWRlICJET01XcmFw
cGVyV29ybGQuaCIKICNpbmNsdWRlICJEYXRlRXh0ZW5zaW9uLmgiCiAjaW5jbHVkZSAiRG9jdW1l
bnRMb2FkZXIuaCIKICNpbmNsdWRlICJGcmFtZS5oIgpAQCAtMTUzLDcgKzE1NCw3IEBAIHZvaWQg
VjhET01XaW5kb3dTaGVsbDo6Y2xlYXJGb3JOYXZpZ2F0aW9uKCkKICAgICAvLyB3aWxsIGJlIHBy
b3RlY3RlZCBieSB0aGUgc2VjdXJpdHkgY2hlY2tzIG9uIHRoZSBET01XaW5kb3cgd3JhcHBlci4K
ICAgICBjbGVhckRvY3VtZW50UHJvcGVydHkoKTsKIAotICAgIHY4OjpIYW5kbGU8djg6Ok9iamVj
dD4gd2luZG93V3JhcHBlciA9IG1fZ2xvYmFsLT5GaW5kSW5zdGFuY2VJblByb3RvdHlwZUNoYWlu
KFY4RE9NV2luZG93OjpHZXRUZW1wbGF0ZShtX2lzb2xhdGUpKTsKKyAgICB2ODo6SGFuZGxlPHY4
OjpPYmplY3Q+IHdpbmRvd1dyYXBwZXIgPSBtX2dsb2JhbC0+RmluZEluc3RhbmNlSW5Qcm90b3R5
cGVDaGFpbihWOERPTVdpbmRvdzo6R2V0VGVtcGxhdGUobV9pc29sYXRlLCBtYWluSXNvbGF0ZVdv
cmxkVHlwZShtX2lzb2xhdGUpKSk7CiAgICAgQVNTRVJUKCF3aW5kb3dXcmFwcGVyLklzRW1wdHko
KSk7CiAgICAgd2luZG93V3JhcHBlci0+VHVybk9uQWNjZXNzQ2hlY2soKTsKICAgICBtX2NvbnRl
eHQtPkRldGFjaEdsb2JhbCgpOwpAQCAtMzEwLDYgKzMxMSw3IEBAIHZvaWQgVjhET01XaW5kb3dT
aGVsbDo6Y3JlYXRlQ29udGV4dCgpCiAKIGJvb2wgVjhET01XaW5kb3dTaGVsbDo6aW5zdGFsbERP
TVdpbmRvdygpCiB7CisgICAgRE9NV3JhcHBlcldvcmxkOjpzZXRJbml0aWFsaXppbmdXaW5kb3co
dHJ1ZSk7CiAgICAgRE9NV2luZG93KiB3aW5kb3cgPSBtX2ZyYW1lLT5kb2N1bWVudCgpLT5kb21X
aW5kb3coKTsKICAgICB2ODo6TG9jYWw8djg6Ok9iamVjdD4gd2luZG93V3JhcHBlciA9IFY4T2Jq
ZWN0Q29uc3RydWN0b3I6Om5ld0luc3RhbmNlKFY4UGVyQ29udGV4dERhdGE6OmZyb20obV9jb250
ZXh0LmdldCgpKS0+Y29uc3RydWN0b3JGb3JUeXBlKCZWOERPTVdpbmRvdzo6aW5mbykpOwogICAg
IGlmICh3aW5kb3dXcmFwcGVyLklzRW1wdHkoKSkKQEAgLTMzNiw2ICszMzgsNyBAQCBib29sIFY4
RE9NV2luZG93U2hlbGw6Omluc3RhbGxET01XaW5kb3coKQogICAgIFY4RE9NV3JhcHBlcjo6c2V0
TmF0aXZlSW5mbyhpbm5lckdsb2JhbE9iamVjdCwgJlY4RE9NV2luZG93OjppbmZvLCB3aW5kb3cp
OwogICAgIGlubmVyR2xvYmFsT2JqZWN0LT5TZXRQcm90b3R5cGUod2luZG93V3JhcHBlcik7CiAg
ICAgVjhET01XcmFwcGVyOjphc3NvY2lhdGVPYmplY3RXaXRoV3JhcHBlcihQYXNzUmVmUHRyPERP
TVdpbmRvdz4od2luZG93KSwgJlY4RE9NV2luZG93OjppbmZvLCB3aW5kb3dXcmFwcGVyLCBtX2lz
b2xhdGUsIFdyYXBwZXJDb25maWd1cmF0aW9uOjpEZXBlbmRlbnQpOworICAgIERPTVdyYXBwZXJX
b3JsZDo6c2V0SW5pdGlhbGl6aW5nV2luZG93KGZhbHNlKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhET01XcmFwcGVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NV3JhcHBlci5jcHAKaW5kZXggNGQ4
YzIyNmYzZTI3MmYwZTM1OTYyMWU4ZDQwNjhjMzE5NGI1M2ZiOC4uMTZjOWIyZGI0NTUwMjFlMjQz
OTUzZjlkNjliYWE0MGVkNzE5ZWVjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvdjgvVjhET01XcmFwcGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9W
OERPTVdyYXBwZXIuY3BwCkBAIC03OSw3ICs3OSw3IEBAIHY4OjpMb2NhbDx2ODo6T2JqZWN0PiBW
OERPTVdyYXBwZXI6OmNyZWF0ZVdyYXBwZXIodjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVhdGlv
CiAgICAgVjhXcmFwcGVySW5zdGFudGlhdGlvblNjb3BlIHNjb3BlKGNyZWF0aW9uQ29udGV4dCk7
CiAKICAgICBWOFBlckNvbnRleHREYXRhKiBwZXJDb250ZXh0RGF0YSA9IFY4UGVyQ29udGV4dERh
dGE6OmZyb20oc2NvcGUuY29udGV4dCgpKTsKLSAgICB2ODo6TG9jYWw8djg6Ok9iamVjdD4gd3Jh
cHBlciA9IHBlckNvbnRleHREYXRhID8gcGVyQ29udGV4dERhdGEtPmNyZWF0ZVdyYXBwZXJGcm9t
Q2FjaGUodHlwZSkgOiBWOE9iamVjdENvbnN0cnVjdG9yOjpuZXdJbnN0YW5jZSh0eXBlLT5nZXRU
ZW1wbGF0ZShpc29sYXRlKS0+R2V0RnVuY3Rpb24oKSk7CisgICAgdjg6OkxvY2FsPHY4OjpPYmpl
Y3Q+IHdyYXBwZXIgPSBwZXJDb250ZXh0RGF0YSA/IHBlckNvbnRleHREYXRhLT5jcmVhdGVXcmFw
cGVyRnJvbUNhY2hlKHR5cGUpIDogVjhPYmplY3RDb25zdHJ1Y3Rvcjo6bmV3SW5zdGFuY2UodHlw
ZS0+Z2V0VGVtcGxhdGUoaXNvbGF0ZSwgbWFpbklzb2xhdGVXb3JsZFR5cGUoaXNvbGF0ZSkpLT5H
ZXRGdW5jdGlvbigpKTsKIAogICAgIGlmICh0eXBlID09ICZWOEhUTUxEb2N1bWVudDo6aW5mbyAm
JiAhd3JhcHBlci5Jc0VtcHR5KCkpCiAgICAgICAgIHdyYXBwZXIgPSBWOEhUTUxEb2N1bWVudDo6
d3JhcEluU2hhZG93T2JqZWN0KHdyYXBwZXIsIHN0YXRpY19jYXN0PE5vZGUqPihpbXBsKSwgaXNv
bGF0ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEluaXRpYWxp
emVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4SW5pdGlhbGl6ZXIuY3BwCmlu
ZGV4IGNiM2JjNmRjMWVjY2EyYWJiOTQ1Yjk5ZTM0NzQwNDRkMjIzMjhiMTYuLjEzZDU4OGRlN2Qw
Nzg2ZDRhNjA4NzRhMWQ5YmE2ODIwYTI0NDEwOTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L1Y4SW5pdGlhbGl6ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L1Y4SW5pdGlhbGl6ZXIuY3BwCkBAIC01MSw3ICs1MSw3IEBAIHN0YXRpYyBGcmFtZSog
ZmluZEZyYW1lKHY4OjpMb2NhbDx2ODo6T2JqZWN0PiBob3N0LCB2ODo6TG9jYWw8djg6OlZhbHVl
PiBkYXRhLCB2CiAgICAgV3JhcHBlclR5cGVJbmZvKiB0eXBlID0gV3JhcHBlclR5cGVJbmZvOjp1
bndyYXAoZGF0YSk7CiAKICAgICBpZiAoVjhET01XaW5kb3c6OmluZm8uZXF1YWxzKHR5cGUpKSB7
Ci0gICAgICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd2luZG93V3JhcHBlciA9IGhvc3QtPkZp
bmRJbnN0YW5jZUluUHJvdG90eXBlQ2hhaW4oVjhET01XaW5kb3c6OkdldFRlbXBsYXRlKGlzb2xh
dGUpKTsKKyAgICAgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3aW5kb3dXcmFwcGVyID0gaG9z
dC0+RmluZEluc3RhbmNlSW5Qcm90b3R5cGVDaGFpbihWOERPTVdpbmRvdzo6R2V0VGVtcGxhdGUo
aXNvbGF0ZSwgbWFpbklzb2xhdGVXb3JsZFR5cGUoaXNvbGF0ZSkpKTsKICAgICAgICAgaWYgKHdp
bmRvd1dyYXBwZXIuSXNFbXB0eSgpKQogICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIHJl
dHVybiBWOERPTVdpbmRvdzo6dG9OYXRpdmUod2luZG93V3JhcHBlciktPmZyYW1lKCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOFBlckNvbnRleHREYXRhLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4UGVyQ29udGV4dERhdGEuY3BwCmluZGV4IGIz
OTIzMjNhOGZkZTdlYzc0YTMzZjAyYWE5NWM2MTYyZWE4NjU2NDcuLjg2ZWViMTIzY2I4YzZjNjMx
ZDYyZGVlOGVmNTg0ZGQ5ZDUwMjM4YTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L1Y4UGVyQ29udGV4dERhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L1Y4UGVyQ29udGV4dERhdGEuY3BwCkBAIC0xMTUsNyArMTE1LDcgQEAgdjg6OkxvY2FsPHY4
OjpGdW5jdGlvbj4gVjhQZXJDb250ZXh0RGF0YTo6Y29uc3RydWN0b3JGb3JUeXBlU2xvd0Nhc2Uo
V3JhcHBlclR5cGUKICAgICBBU1NFUlQoIW1fb2JqZWN0UHJvdG90eXBlLmlzRW1wdHkoKSk7CiAK
ICAgICB2ODo6Q29udGV4dDo6U2NvcGUgc2NvcGUobV9jb250ZXh0KTsKLSAgICB2ODo6SGFuZGxl
PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBmdW5jdGlvblRlbXBsYXRlID0gdHlwZS0+Z2V0VGVtcGxh
dGUobV9jb250ZXh0LT5HZXRJc29sYXRlKCkpOworICAgIHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9u
VGVtcGxhdGU+IGZ1bmN0aW9uVGVtcGxhdGUgPSB0eXBlLT5nZXRUZW1wbGF0ZShtX2NvbnRleHQt
PkdldElzb2xhdGUoKSwgd29ybGRUeXBlKG1fY29udGV4dC0+R2V0SXNvbGF0ZSgpKSk7CiAgICAg
Ly8gR2V0dGluZyB0aGUgZnVuY3Rpb24gbWlnaHQgZmFpbCBpZiB3ZSdyZSBydW5uaW5nIG91dCBv
ZiBzdGFjayBvciBtZW1vcnkuCiAgICAgdjg6OlRyeUNhdGNoIHRyeUNhdGNoOwogICAgIHY4OjpM
b2NhbDx2ODo6RnVuY3Rpb24+IGZ1bmN0aW9uID0gZnVuY3Rpb25UZW1wbGF0ZS0+R2V0RnVuY3Rp
b24oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1dvcmtlclNjcmlw
dENvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvV29ya2VyU2NyaXB0
Q29udHJvbGxlci5jcHAKaW5kZXggYmM0NjA5MzgyNzlmZTRkZjMzYTJhODE1MDBjNjhjMWE2MzA1
Nzk5MS4uNzM4NTYyMGNmY2I3OWE4Nzc5OTNkNTkxNjRiMzk4NmJhNTZkNzlkMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvV29ya2VyU2NyaXB0Q29udHJvbGxlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvV29ya2VyU2NyaXB0Q29udHJvbGxlci5j
cHAKQEAgLTI0OSw3ICsyNDksNyBAQCBXb3JrZXJTY3JpcHRDb250cm9sbGVyKiBXb3JrZXJTY3Jp
cHRDb250cm9sbGVyOjpjb250cm9sbGVyRm9yQ29udGV4dCgpCiAgICAgICAgIHJldHVybiAwOwog
ICAgIHY4OjpIYW5kbGU8djg6OkNvbnRleHQ+IGNvbnRleHQgPSB2ODo6Q29udGV4dDo6R2V0Q3Vy
cmVudCgpOwogICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gZ2xvYmFsID0gY29udGV4dC0+R2xv
YmFsKCk7Ci0gICAgZ2xvYmFsID0gZ2xvYmFsLT5GaW5kSW5zdGFuY2VJblByb3RvdHlwZUNoYWlu
KFY4V29ya2VyQ29udGV4dDo6R2V0VGVtcGxhdGUoY29udGV4dC0+R2V0SXNvbGF0ZSgpKSk7Cisg
ICAgZ2xvYmFsID0gZ2xvYmFsLT5GaW5kSW5zdGFuY2VJblByb3RvdHlwZUNoYWluKFY4V29ya2Vy
Q29udGV4dDo6R2V0VGVtcGxhdGUoY29udGV4dC0+R2V0SXNvbGF0ZSgpLCBXb3JrZXJXb3JsZCkp
OwogICAgIC8vIFJldHVybiAwIGlmIHRoZSBjdXJyZW50IGV4ZWN1dGluZyBjb250ZXh0IGlzIG5v
dCB0aGUgd29ya2VyIGNvbnRleHQuCiAgICAgaWYgKGdsb2JhbC5Jc0VtcHR5KCkpCiAgICAgICAg
IHJldHVybiAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvV3JhcHBl
clR5cGVJbmZvLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9XcmFwcGVyVHlwZUluZm8u
aAppbmRleCBiMzEwYWY5YTdkMmY4MDEyMDQ0ODc4NmE4OTBmM2JmYTg2MjY2NTI2Li5kYzJhNWVl
ZTcwMTJiZmQ0ODcxMDYzZDE2NDY1OWQzOGU4ZTIwNjIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9XcmFwcGVyVHlwZUluZm8uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy92OC9XcmFwcGVyVHlwZUluZm8uaApAQCAtNDcsNyArNDcsMTMgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogICAgIHN0YXRpYyBjb25zdCB1aW50MTZfdCB2OERPTU5vZGVDbGFzc0lkID0g
MTsKICAgICBzdGF0aWMgY29uc3QgdWludDE2X3QgdjhET01PYmplY3RDbGFzc0lkID0gMjsKIAot
ICAgIHR5cGVkZWYgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+ICgqR2V0VGVt
cGxhdGVGdW5jdGlvbikodjg6Oklzb2xhdGUqKTsKKyAgICBlbnVtIFdyYXBwZXJXb3JsZFR5cGUg
eworICAgICAgICBNYWluV29ybGQsCisgICAgICAgIElzb2xhdGVkV29ybGQsCisgICAgICAgIFdv
cmtlcldvcmxkCisgICAgfTsKKworICAgIHR5cGVkZWYgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0
aW9uVGVtcGxhdGU+ICgqR2V0VGVtcGxhdGVGdW5jdGlvbikodjg6Oklzb2xhdGUqLCBXcmFwcGVy
V29ybGRUeXBlKTsKICAgICB0eXBlZGVmIHZvaWQgKCpEZXJlZk9iamVjdEZ1bmN0aW9uKSh2b2lk
Kik7CiAgICAgdHlwZWRlZiBBY3RpdmVET01PYmplY3QqICgqVG9BY3RpdmVET01PYmplY3RGdW5j
dGlvbikodjg6OkhhbmRsZTx2ODo6T2JqZWN0Pik7CiAgICAgdHlwZWRlZiBFdmVudFRhcmdldCog
KCpUb0V2ZW50VGFyZ2V0RnVuY3Rpb24pKHY4OjpIYW5kbGU8djg6Ok9iamVjdD4pOwpAQCAtODUs
NyArOTEsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgICAgIH0KICAgICAgICAgCi0gICAgICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlv
blRlbXBsYXRlPiBnZXRUZW1wbGF0ZSh2ODo6SXNvbGF0ZSogaXNvbGF0ZSkgeyByZXR1cm4gZ2V0
VGVtcGxhdGVGdW5jdGlvbihpc29sYXRlKTsgfQorICAgICAgICB2ODo6UGVyc2lzdGVudDx2ODo6
RnVuY3Rpb25UZW1wbGF0ZT4gZ2V0VGVtcGxhdGUodjg6Oklzb2xhdGUqIGlzb2xhdGUsIFdyYXBw
ZXJXb3JsZFR5cGUgd29ybGRUeXBlKSB7IHJldHVybiBnZXRUZW1wbGF0ZUZ1bmN0aW9uKGlzb2xh
dGUsIHdvcmxkVHlwZSk7IH0KICAgICAgICAgCiAgICAgICAgIHZvaWQgZGVyZWZPYmplY3Qodm9p
ZCogb2JqZWN0KQogICAgICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy92OC9jdXN0b20vVjhET01XaW5kb3dDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvdjgvY3VzdG9tL1Y4RE9NV2luZG93Q3VzdG9tLmNwcAppbmRleCAxNWQ4YmIxZDZmMGRlZTg3
ZTE3NDhlZDA1MGUzZmE4ZmNhZTE5MmQzLi5mOWRmMTMyNjE5NTAzMmJiZTNlMzIwYmFjMTRiZjY1
ZjBlNTBhYmM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20v
VjhET01XaW5kb3dDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1
c3RvbS9WOERPTVdpbmRvd0N1c3RvbS5jcHAKQEAgLTE0Niw3ICsxNDYsNyBAQCB2ODo6SGFuZGxl
PHY4OjpWYWx1ZT4gV2luZG93U2V0VGltZW91dEltcGwoY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJn
cywgYm9vbCBzaW5nbAogCiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhET01XaW5kb3c6OmV2ZW50
QXR0ckdldHRlckN1c3RvbSh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFj
Y2Vzc29ySW5mbyYgaW5mbykKIHsKLSAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGhvbGRlciA9
IGluZm8uVGhpcygpLT5GaW5kSW5zdGFuY2VJblByb3RvdHlwZUNoYWluKFY4RE9NV2luZG93OjpH
ZXRUZW1wbGF0ZShpbmZvLkdldElzb2xhdGUoKSkpOworICAgIHY4OjpIYW5kbGU8djg6Ok9iamVj
dD4gaG9sZGVyID0gaW5mby5UaGlzKCktPkZpbmRJbnN0YW5jZUluUHJvdG90eXBlQ2hhaW4oVjhE
T01XaW5kb3c6OkdldFRlbXBsYXRlKGluZm8uR2V0SXNvbGF0ZSgpLCBtYWluSXNvbGF0ZVdvcmxk
VHlwZShpbmZvLkdldElzb2xhdGUoKSkpKTsKICAgICBpZiAoaG9sZGVyLklzRW1wdHkoKSkKICAg
ICAgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKIApAQCAtMTY4LDcgKzE2OCw3IEBAIHY4OjpI
YW5kbGU8djg6OlZhbHVlPiBWOERPTVdpbmRvdzo6ZXZlbnRBdHRyR2V0dGVyQ3VzdG9tKHY4OjpM
b2NhbDx2ODo6U3RyaW5nPiBuCiAKIHZvaWQgVjhET01XaW5kb3c6OmV2ZW50QXR0clNldHRlckN1
c3RvbSh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFs
dWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7Ci0gICAgdjg6OkhhbmRsZTx2ODo6
T2JqZWN0PiBob2xkZXIgPSBpbmZvLlRoaXMoKS0+RmluZEluc3RhbmNlSW5Qcm90b3R5cGVDaGFp
bihWOERPTVdpbmRvdzo6R2V0VGVtcGxhdGUoaW5mby5HZXRJc29sYXRlKCkpKTsKKyAgICB2ODo6
SGFuZGxlPHY4OjpPYmplY3Q+IGhvbGRlciA9IGluZm8uVGhpcygpLT5GaW5kSW5zdGFuY2VJblBy
b3RvdHlwZUNoYWluKFY4RE9NV2luZG93OjpHZXRUZW1wbGF0ZShpbmZvLkdldElzb2xhdGUoKSwg
bWFpbklzb2xhdGVXb3JsZFR5cGUoaW5mby5HZXRJc29sYXRlKCkpKSk7CiAgICAgaWYgKGhvbGRl
ci5Jc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIApAQCAtMzQ0LDcgKzM0NCw3IEBAIHY4OjpI
YW5kbGU8djg6OlZhbHVlPiBWOERPTVdpbmRvdzo6cG9zdE1lc3NhZ2VNZXRob2RDdXN0b20oY29u
c3Qgdjg6OkFyZ3VtZW50cyYKIC8vIHN3aXRjaGluZyBjb250ZXh0IG9mIHJlY2VpdmVyLiBJIGNv
bnNpZGVyIGl0IGlzIGRhbmdlcm91cy4KIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOERPTVdpbmRv
dzo6dG9TdHJpbmdNZXRob2RDdXN0b20oY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKLSAg
ICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGRvbVdyYXBwZXIgPSBhcmdzLlRoaXMoKS0+RmluZElu
c3RhbmNlSW5Qcm90b3R5cGVDaGFpbihWOERPTVdpbmRvdzo6R2V0VGVtcGxhdGUoYXJncy5HZXRJ
c29sYXRlKCkpKTsKKyAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGRvbVdyYXBwZXIgPSBhcmdz
LlRoaXMoKS0+RmluZEluc3RhbmNlSW5Qcm90b3R5cGVDaGFpbihWOERPTVdpbmRvdzo6R2V0VGVt
cGxhdGUoYXJncy5HZXRJc29sYXRlKCksIG1haW5Jc29sYXRlV29ybGRUeXBlKGFyZ3MuR2V0SXNv
bGF0ZSgpKSkpOwogICAgIGlmIChkb21XcmFwcGVyLklzRW1wdHkoKSkKICAgICAgICAgcmV0dXJu
IGFyZ3MuVGhpcygpLT5PYmplY3RQcm90b1RvU3RyaW5nKCk7CiAgICAgcmV0dXJuIGRvbVdyYXBw
ZXItPk9iamVjdFByb3RvVG9TdHJpbmcoKTsKQEAgLTUxMCw3ICs1MTAsNyBAQCB2ODo6SGFuZGxl
PHY4OjpWYWx1ZT4gVjhET01XaW5kb3c6OnNldEludGVydmFsTWV0aG9kQ3VzdG9tKGNvbnN0IHY4
OjpBcmd1bWVudHMmCiBib29sIFY4RE9NV2luZG93OjpuYW1lZFNlY3VyaXR5Q2hlY2sodjg6Okxv
Y2FsPHY4OjpPYmplY3Q+IGhvc3QsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IGtleSwgdjg6OkFjY2Vz
c1R5cGUgdHlwZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4pCiB7CiAgICAgdjg6Oklzb2xhdGUqIGlz
b2xhdGUgPSB2ODo6SXNvbGF0ZTo6R2V0Q3VycmVudCgpOwotICAgIHY4OjpIYW5kbGU8djg6Ok9i
amVjdD4gd2luZG93ID0gaG9zdC0+RmluZEluc3RhbmNlSW5Qcm90b3R5cGVDaGFpbihWOERPTVdp
bmRvdzo6R2V0VGVtcGxhdGUoaXNvbGF0ZSkpOworICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4g
d2luZG93ID0gaG9zdC0+RmluZEluc3RhbmNlSW5Qcm90b3R5cGVDaGFpbihWOERPTVdpbmRvdzo6
R2V0VGVtcGxhdGUoaXNvbGF0ZSwgbWFpbklzb2xhdGVXb3JsZFR5cGUoaXNvbGF0ZSkpKTsKICAg
ICBpZiAod2luZG93LklzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOyAgLy8gdGhlIGZy
YW1lIGlzIGdvbmUuCiAKQEAgLTU0NCw3ICs1NDQsNyBAQCBib29sIFY4RE9NV2luZG93OjpuYW1l
ZFNlY3VyaXR5Q2hlY2sodjg6OkxvY2FsPHY4OjpPYmplY3Q+IGhvc3QsIHY4OjpMb2NhbDx2ODo6
VgogYm9vbCBWOERPTVdpbmRvdzo6aW5kZXhlZFNlY3VyaXR5Q2hlY2sodjg6OkxvY2FsPHY4OjpP
YmplY3Q+IGhvc3QsIHVpbnQzMl90IGluZGV4LCB2ODo6QWNjZXNzVHlwZSB0eXBlLCB2ODo6TG9j
YWw8djg6OlZhbHVlPikKIHsKICAgICB2ODo6SXNvbGF0ZSogaXNvbGF0ZSA9IHY4OjpJc29sYXRl
OjpHZXRDdXJyZW50KCk7Ci0gICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3aW5kb3cgPSBob3N0
LT5GaW5kSW5zdGFuY2VJblByb3RvdHlwZUNoYWluKFY4RE9NV2luZG93OjpHZXRUZW1wbGF0ZShp
c29sYXRlKSk7CisgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3aW5kb3cgPSBob3N0LT5GaW5k
SW5zdGFuY2VJblByb3RvdHlwZUNoYWluKFY4RE9NV2luZG93OjpHZXRUZW1wbGF0ZShpc29sYXRl
LCBtYWluSXNvbGF0ZVdvcmxkVHlwZShpc29sYXRlKSkpOwogICAgIGlmICh3aW5kb3cuSXNFbXB0
eSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKQEAgLTU4Niw3ICs1ODYsNyBAQCB2ODo6SGFu
ZGxlPHY4OjpWYWx1ZT4gdG9WOChET01XaW5kb3cqIHdpbmRvdywgdjg6OkhhbmRsZTx2ODo6T2Jq
ZWN0PiBjcmVhdGlvbkNvbgogICAgIC8vIG5lY2Vzc2FyaWx5IHRoZSBmaXJzdCBnbG9iYWwgb2Jq
ZWN0IGFzc29jaWF0ZWQgd2l0aCB0aGF0IERPTVdpbmRvdy4KICAgICB2ODo6SGFuZGxlPHY4OjpD
b250ZXh0PiBjdXJyZW50Q29udGV4dCA9IHY4OjpDb250ZXh0OjpHZXRDdXJyZW50KCk7CiAgICAg
djg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjdXJyZW50R2xvYmFsID0gY3VycmVudENvbnRleHQtPkds
b2JhbCgpOwotICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd2luZG93V3JhcHBlciA9IGN1cnJl
bnRHbG9iYWwtPkZpbmRJbnN0YW5jZUluUHJvdG90eXBlQ2hhaW4oVjhET01XaW5kb3c6OkdldFRl
bXBsYXRlKGlzb2xhdGUpKTsKKyAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdpbmRvd1dyYXBw
ZXIgPSBjdXJyZW50R2xvYmFsLT5GaW5kSW5zdGFuY2VJblByb3RvdHlwZUNoYWluKFY4RE9NV2lu
ZG93OjpHZXRUZW1wbGF0ZShpc29sYXRlLCBtYWluSXNvbGF0ZVdvcmxkVHlwZShpc29sYXRlKSkp
OwogICAgIGlmICghd2luZG93V3JhcHBlci5Jc0VtcHR5KCkpIHsKICAgICAgICAgaWYgKFY4RE9N
V2luZG93Ojp0b05hdGl2ZSh3aW5kb3dXcmFwcGVyKSA9PSB3aW5kb3cpCiAgICAgICAgICAgICBy
ZXR1cm4gY3VycmVudEdsb2JhbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L2N1c3RvbS9WOEhUTUxEb2N1bWVudEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9jdXN0b20vVjhIVE1MRG9jdW1lbnRDdXN0b20uY3BwCmluZGV4IDVjMWY2NWZmNTE5
ZGEyZWM1Nzg3ZTQ3MjAwZTcwNjU4ZmFjYTgyMTQuLjIxYTYyZDZlMjBjZDZkYzU4M2JlMWRkMzgx
YTMxYjJkMDY4YTQzYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1
c3RvbS9WOEhUTUxEb2N1bWVudEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvdjgvY3VzdG9tL1Y4SFRNTERvY3VtZW50Q3VzdG9tLmNwcApAQCAtNjAsNyArNjAsNyBAQCB2
ODo6TG9jYWw8djg6Ok9iamVjdD4gVjhIVE1MRG9jdW1lbnQ6OndyYXBJblNoYWRvd09iamVjdCh2
ODo6TG9jYWw8djg6Ok9iamVjdD4gdwogICAgICAgICBpZiAoc2hhZG93VGVtcGxhdGUuSXNFbXB0
eSgpKQogICAgICAgICAgICAgcmV0dXJuIHY4OjpMb2NhbDx2ODo6T2JqZWN0PigpOwogICAgICAg
ICBzaGFkb3dUZW1wbGF0ZS0+U2V0Q2xhc3NOYW1lKHY4OjpTdHJpbmc6Ok5ld1N5bWJvbCgiSFRN
TERvY3VtZW50IikpOwotICAgICAgICBzaGFkb3dUZW1wbGF0ZS0+SW5oZXJpdChWOEhUTUxEb2N1
bWVudDo6R2V0VGVtcGxhdGUoaXNvbGF0ZSkpOworICAgICAgICBzaGFkb3dUZW1wbGF0ZS0+SW5o
ZXJpdChWOEhUTUxEb2N1bWVudDo6R2V0VGVtcGxhdGUoaXNvbGF0ZSwgbWFpbklzb2xhdGVXb3Js
ZFR5cGUoaXNvbGF0ZSkpKTsKICAgICAgICAgc2hhZG93VGVtcGxhdGUtPkluc3RhbmNlVGVtcGxh
dGUoKS0+U2V0SW50ZXJuYWxGaWVsZENvdW50KFY4SFRNTERvY3VtZW50OjppbnRlcm5hbEZpZWxk
Q291bnQpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
Y3VzdG9tL1Y4SFRNTEltYWdlRWxlbWVudENvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxJbWFnZUVsZW1lbnRDb25zdHJ1Y3Rvci5jcHAKaW5k
ZXggOWUzZGNkOWUwZDc0Y2U5NzJjZTdiMWUzZTUzNzNjOTNjOWI5MjRjYy4uYzQxNDIxYjkwYjgz
YTZkMTkyYWJiNGFlNTUxYmNiNTcyMDQ1NGEyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTEltYWdlRWxlbWVudENvbnN0cnVjdG9yLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MSW1hZ2VFbGVtZW50Q29u
c3RydWN0b3IuY3BwCkBAIC04Niw3ICs4Niw3IEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1
ZT4gbmFtZWRDb25zdHJ1Y3RvckNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiAg
ICAgcmV0dXJuIG5hbWVkQ29uc3RydWN0b3IoYXJncyk7CiB9CiAKLXY4OjpQZXJzaXN0ZW50PHY4
OjpGdW5jdGlvblRlbXBsYXRlPiBWOEhUTUxJbWFnZUVsZW1lbnRDb25zdHJ1Y3Rvcjo6R2V0VGVt
cGxhdGUodjg6Oklzb2xhdGUqIGlzb2xhdGUpCit2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25U
ZW1wbGF0ZT4gVjhIVE1MSW1hZ2VFbGVtZW50Q29uc3RydWN0b3I6OkdldFRlbXBsYXRlKHY4OjpJ
c29sYXRlKiBpc29sYXRlLCBXcmFwcGVyV29ybGRUeXBlIHdvcmxkVHlwZSkKIHsKICAgICBzdGF0
aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IGNhY2hlZFRlbXBsYXRlOwog
ICAgIGlmICghY2FjaGVkVGVtcGxhdGUuSXNFbXB0eSgpKQpAQCAtOTgsNyArOTgsNyBAQCB2ODo6
UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gVjhIVE1MSW1hZ2VFbGVtZW50Q29uc3Ry
dWN0b3I6OkdldFRlbXBsYXRlKAogICAgIHY4OjpMb2NhbDx2ODo6T2JqZWN0VGVtcGxhdGU+IGlu
c3RhbmNlID0gcmVzdWx0LT5JbnN0YW5jZVRlbXBsYXRlKCk7CiAgICAgaW5zdGFuY2UtPlNldElu
dGVybmFsRmllbGRDb3VudChWOEhUTUxJbWFnZUVsZW1lbnQ6OmludGVybmFsRmllbGRDb3VudCk7
CiAgICAgcmVzdWx0LT5TZXRDbGFzc05hbWUodjg6OlN0cmluZzo6TmV3U3ltYm9sKCJIVE1MSW1h
Z2VFbGVtZW50IikpOwotICAgIHJlc3VsdC0+SW5oZXJpdChWOEhUTUxJbWFnZUVsZW1lbnQ6Okdl
dFRlbXBsYXRlKGlzb2xhdGUpKTsKKyAgICByZXN1bHQtPkluaGVyaXQoVjhIVE1MSW1hZ2VFbGVt
ZW50OjpHZXRUZW1wbGF0ZShpc29sYXRlLCB3b3JsZFR5cGUpKTsKIAogICAgIGNhY2hlZFRlbXBs
YXRlID0gdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+OjpOZXcoaXNvbGF0ZSwg
cmVzdWx0KTsKICAgICByZXR1cm4gY2FjaGVkVGVtcGxhdGU7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MSW1hZ2VFbGVtZW50Q29uc3RydWN0b3Iu
aCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxJbWFnZUVsZW1lbnRD
b25zdHJ1Y3Rvci5oCmluZGV4IDk1NmJjOGQ4NWI5YzBjMmUxMTliMThhYWQxODcwN2I1Mjg5ZWI1
OTEuLjk3YjM4ZTUwNWVmMGI4MWE4MTFlOGEzMTdmNWNjNzI1ZTg3YjkyYzIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxJbWFnZUVsZW1lbnRDb25z
dHJ1Y3Rvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxJ
bWFnZUVsZW1lbnRDb25zdHJ1Y3Rvci5oCkBAIC0zOSw3ICszOSw3IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogY2xhc3MgVjhIVE1MSW1hZ2VFbGVtZW50Q29uc3RydWN0b3IgewogcHVibGljOgot
ICAgIHN0YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gR2V0VGVtcGxh
dGUodjg6Oklzb2xhdGUqID0gMCk7CisgICAgc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5j
dGlvblRlbXBsYXRlPiBHZXRUZW1wbGF0ZSh2ODo6SXNvbGF0ZSosIFdyYXBwZXJXb3JsZFR5cGUp
OwogICAgIHN0YXRpYyBXcmFwcGVyVHlwZUluZm8gaW5mbzsKIH07CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEluamVjdGVkU2NyaXB0TWFuYWdlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhJbmplY3RlZFNjcmlwdE1h
bmFnZXIuY3BwCmluZGV4IGIyOTYxZTMwMDQwZGFjNjhiMjE0Y2JhNWE0OGI2MzBkZDQzOWZiNTAu
LjczMzkxMzk1Y2NjZTZhZDk0MWIxY2ZkYzgzZjA2YjcyYmIwYWFkMzUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEluamVjdGVkU2NyaXB0TWFuYWdlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SW5qZWN0ZWRTY3Jp
cHRNYW5hZ2VyLmNwcApAQCAtNTUsNyArNTUsNyBAQCBzdGF0aWMgdm9pZCBXZWFrUmVmZXJlbmNl
Q2FsbGJhY2sodjg6Oklzb2xhdGUqIGlzb2xhdGUsIHY4OjpQZXJzaXN0ZW50PHY4OjpWYWx1ZQog
CiBzdGF0aWMgdjg6OkxvY2FsPHY4OjpPYmplY3Q+IGNyZWF0ZUluamVjdGVkU2NyaXB0SG9zdFY4
V3JhcHBlcihJbmplY3RlZFNjcmlwdEhvc3QqIGhvc3QsIHY4OjpJc29sYXRlKiBpc29sYXRlKQog
ewotICAgIHY4OjpMb2NhbDx2ODo6RnVuY3Rpb24+IGZ1bmN0aW9uID0gVjhJbmplY3RlZFNjcmlw
dEhvc3Q6OkdldFRlbXBsYXRlKGlzb2xhdGUpLT5HZXRGdW5jdGlvbigpOworICAgIHY4OjpMb2Nh
bDx2ODo6RnVuY3Rpb24+IGZ1bmN0aW9uID0gVjhJbmplY3RlZFNjcmlwdEhvc3Q6OkdldFRlbXBs
YXRlKGlzb2xhdGUsIE1haW5Xb3JsZCktPkdldEZ1bmN0aW9uKCk7CiAgICAgaWYgKGZ1bmN0aW9u
LklzRW1wdHkoKSkgewogICAgICAgICAvLyBSZXR1cm4gaWYgYWxsb2NhdGlvbiBmYWlsZWQuCiAg
ICAgICAgIHJldHVybiB2ODo6TG9jYWw8djg6Ok9iamVjdD4oKTsKQEAgLTExOCw3ICsxMTgsNyBA
QCBib29sIEluamVjdGVkU2NyaXB0TWFuYWdlcjo6Y2FuQWNjZXNzSW5zcGVjdGVkV2luZG93KFNj
cmlwdFN0YXRlKiBzY3JpcHRTdGF0ZSkKICAgICB2ODo6TG9jYWw8djg6Ok9iamVjdD4gZ2xvYmFs
ID0gY29udGV4dC0+R2xvYmFsKCk7CiAgICAgaWYgKGdsb2JhbC5Jc0VtcHR5KCkpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGhvbGRlciA9IGdsb2Jh
bC0+RmluZEluc3RhbmNlSW5Qcm90b3R5cGVDaGFpbihWOERPTVdpbmRvdzo6R2V0VGVtcGxhdGUo
Y29udGV4dC0+R2V0SXNvbGF0ZSgpKSk7CisgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBob2xk
ZXIgPSBnbG9iYWwtPkZpbmRJbnN0YW5jZUluUHJvdG90eXBlQ2hhaW4oVjhET01XaW5kb3c6Okdl
dFRlbXBsYXRlKGNvbnRleHQtPkdldElzb2xhdGUoKSwgTWFpbldvcmxkKSk7CiAgICAgaWYgKGhv
bGRlci5Jc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBGcmFtZSogZnJhbWUg
PSBWOERPTVdpbmRvdzo6dG9OYXRpdmUoaG9sZGVyKS0+ZnJhbWUoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOExvY2F0aW9uQ3VzdG9tLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOExvY2F0aW9uQ3VzdG9tLmNwcAppbmRl
eCBlYzcxMjJmOGQ5MzcyNmNiODlmYzljMTU4ZjNhNTM0NDU4YjBjMmE0Li5iMmY5ZWEzYjhlMjky
MzI3YTQzNTBkNmYxMjFlMDhkZjRiY2EyNzBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy92OC9jdXN0b20vVjhMb2NhdGlvbkN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4TG9jYXRpb25DdXN0b20uY3BwCkBAIC0xNDAsNyArMTQw
LDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4TG9jYXRpb246OnJlbG9hZEF0dHJHZXR0ZXJD
dXN0b20odjg6OkxvY2FsPHY4OjpTdHJpbmc+IG4KIHsKICAgICB2ODo6SXNvbGF0ZSogaXNvbGF0
ZSA9IGluZm8uR2V0SXNvbGF0ZSgpOwogICAgIHN0YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6RnVu
Y3Rpb25UZW1wbGF0ZT4gcHJpdmF0ZVRlbXBsYXRlID0gdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0
aW9uVGVtcGxhdGU+OjpOZXcoaXNvbGF0ZSwgdjg6OkZ1bmN0aW9uVGVtcGxhdGU6Ok5ldyhWOExv
Y2F0aW9uOjpyZWxvYWRNZXRob2RDdXN0b20sIHY4VW5kZWZpbmVkKCksIHY4OjpTaWduYXR1cmU6
Ok5ldyhWOExvY2F0aW9uOjpHZXRSYXdUZW1wbGF0ZShpc29sYXRlKSkpKTsKLSAgICB2ODo6SGFu
ZGxlPHY4OjpPYmplY3Q+IGhvbGRlciA9IGluZm8uVGhpcygpLT5GaW5kSW5zdGFuY2VJblByb3Rv
dHlwZUNoYWluKFY4TG9jYXRpb246OkdldFRlbXBsYXRlKGlzb2xhdGUpKTsKKyAgICB2ODo6SGFu
ZGxlPHY4OjpPYmplY3Q+IGhvbGRlciA9IGluZm8uVGhpcygpLT5GaW5kSW5zdGFuY2VJblByb3Rv
dHlwZUNoYWluKFY4TG9jYXRpb246OkdldFRlbXBsYXRlKGlzb2xhdGUsIHdvcmxkVHlwZShpc29s
YXRlKSkpOwogICAgIGlmIChob2xkZXIuSXNFbXB0eSgpKSB7CiAgICAgICAgIC8vIGNhbiBvbmx5
IHJlYWNoIGhlcmUgYnkgJ29iamVjdC5fX3Byb3RvX18uZnVuYycsIGFuZCBpdCBzaG91bGQgcGFz
c2VkCiAgICAgICAgIC8vIGRvbWFpbiBzZWN1cml0eSBjaGVjayBhbHJlYWR5CkBAIC0xNTgsNyAr
MTU4LDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4TG9jYXRpb246OnJlcGxhY2VBdHRyR2V0
dGVyQ3VzdG9tKHY4OjpMb2NhbDx2ODo6U3RyaW5nPgogewogICAgIHY4OjpJc29sYXRlKiBpc29s
YXRlID0gaW5mby5HZXRJc29sYXRlKCk7CiAgICAgc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpG
dW5jdGlvblRlbXBsYXRlPiBwcml2YXRlVGVtcGxhdGUgPSB2ODo6UGVyc2lzdGVudDx2ODo6RnVu
Y3Rpb25UZW1wbGF0ZT46Ok5ldyhpc29sYXRlLCB2ODo6RnVuY3Rpb25UZW1wbGF0ZTo6TmV3KFY4
TG9jYXRpb246OnJlcGxhY2VNZXRob2RDdXN0b20sIHY4VW5kZWZpbmVkKCksIHY4OjpTaWduYXR1
cmU6Ok5ldyhWOExvY2F0aW9uOjpHZXRSYXdUZW1wbGF0ZShpc29sYXRlKSkpKTsKLSAgICB2ODo6
SGFuZGxlPHY4OjpPYmplY3Q+IGhvbGRlciA9IGluZm8uVGhpcygpLT5GaW5kSW5zdGFuY2VJblBy
b3RvdHlwZUNoYWluKFY4TG9jYXRpb246OkdldFRlbXBsYXRlKGlzb2xhdGUpKTsKKyAgICB2ODo6
SGFuZGxlPHY4OjpPYmplY3Q+IGhvbGRlciA9IGluZm8uVGhpcygpLT5GaW5kSW5zdGFuY2VJblBy
b3RvdHlwZUNoYWluKFY4TG9jYXRpb246OkdldFRlbXBsYXRlKGlzb2xhdGUsIHdvcmxkVHlwZShp
c29sYXRlKSkpOwogICAgIGlmIChob2xkZXIuSXNFbXB0eSgpKSB7CiAgICAgICAgIC8vIGNhbiBv
bmx5IHJlYWNoIGhlcmUgYnkgJ29iamVjdC5fX3Byb3RvX18uZnVuYycsIGFuZCBpdCBzaG91bGQg
cGFzc2VkCiAgICAgICAgIC8vIGRvbWFpbiBzZWN1cml0eSBjaGVjayBhbHJlYWR5CkBAIC0xNzcs
NyArMTc3LDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4TG9jYXRpb246OmFzc2lnbkF0dHJH
ZXR0ZXJDdXN0b20odjg6OkxvY2FsPHY4OjpTdHJpbmc+IG4KICAgICB2ODo6SXNvbGF0ZSogaXNv
bGF0ZSA9IGluZm8uR2V0SXNvbGF0ZSgpOwogICAgIHN0YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6
RnVuY3Rpb25UZW1wbGF0ZT4gcHJpdmF0ZVRlbXBsYXRlID0KICAgICAgICAgdjg6OlBlcnNpc3Rl
bnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+OjpOZXcoaXNvbGF0ZSwgdjg6OkZ1bmN0aW9uVGVtcGxh
dGU6Ok5ldyhWOExvY2F0aW9uOjphc3NpZ25NZXRob2RDdXN0b20sIHY4VW5kZWZpbmVkKCksIHY4
OjpTaWduYXR1cmU6Ok5ldyhWOExvY2F0aW9uOjpHZXRSYXdUZW1wbGF0ZShpc29sYXRlKSkpKTsK
LSAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGhvbGRlciA9IGluZm8uVGhpcygpLT5GaW5kSW5z
dGFuY2VJblByb3RvdHlwZUNoYWluKFY4TG9jYXRpb246OkdldFRlbXBsYXRlKGlzb2xhdGUpKTsK
KyAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGhvbGRlciA9IGluZm8uVGhpcygpLT5GaW5kSW5z
dGFuY2VJblByb3RvdHlwZUNoYWluKFY4TG9jYXRpb246OkdldFRlbXBsYXRlKGlzb2xhdGUsIHdv
cmxkVHlwZShpc29sYXRlKSkpOwogICAgIGlmIChob2xkZXIuSXNFbXB0eSgpKSB7CiAgICAgICAg
IC8vIGNhbiBvbmx5IHJlYWNoIGhlcmUgYnkgJ29iamVjdC5fX3Byb3RvX18uZnVuYycsIGFuZCBp
dCBzaG91bGQgcGFzc2VkCiAgICAgICAgIC8vIGRvbWFpbiBzZWN1cml0eSBjaGVjayBhbHJlYWR5
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhNZXNzYWdl
RXZlbnRDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4TWVz
c2FnZUV2ZW50Q3VzdG9tLmNwcAppbmRleCAzODRjYmE1N2Q2OTBlNmIzOGFlN2JhZDc3M2Y3NjBl
MjM4MWI3ZmE2Li4yZWExNmQ5NDFjNDg1ZWE4ZDQ5YjIzMTY1YmQ0YWFiYWEyMTRmMzAyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhNZXNzYWdlRXZlbnRD
dXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOE1lc3Nh
Z2VFdmVudEN1c3RvbS5jcHAKQEAgLTExNiw3ICsxMTYsNyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1
ZT4gVjhNZXNzYWdlRXZlbnQ6OmluaXRNZXNzYWdlRXZlbnRNZXRob2RDdXN0b20oY29uc3Qgdjg6
OkFyZwogICAgIERPTVdpbmRvdyogc291cmNlQXJnID0gMDsKICAgICBpZiAoYXJnc1s2XS0+SXNP
YmplY3QoKSkgewogICAgICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBwZXIgPSB2ODo6
SGFuZGxlPHY4OjpPYmplY3Q+OjpDYXN0KGFyZ3NbNl0pOwotICAgICAgICB2ODo6SGFuZGxlPHY4
OjpPYmplY3Q+IHdpbmRvdyA9IHdyYXBwZXItPkZpbmRJbnN0YW5jZUluUHJvdG90eXBlQ2hhaW4o
VjhET01XaW5kb3c6OkdldFRlbXBsYXRlKGFyZ3MuR2V0SXNvbGF0ZSgpKSk7CisgICAgICAgIHY4
OjpIYW5kbGU8djg6Ok9iamVjdD4gd2luZG93ID0gd3JhcHBlci0+RmluZEluc3RhbmNlSW5Qcm90
b3R5cGVDaGFpbihWOERPTVdpbmRvdzo6R2V0VGVtcGxhdGUoYXJncy5HZXRJc29sYXRlKCksIG1h
aW5Jc29sYXRlV29ybGRUeXBlKGFyZ3MuR2V0SXNvbGF0ZSgpKSkpOwogICAgICAgICBpZiAoIXdp
bmRvdy5Jc0VtcHR5KCkpCiAgICAgICAgICAgICBzb3VyY2VBcmcgPSBWOERPTVdpbmRvdzo6dG9O
YXRpdmUod2luZG93KTsKICAgICB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>191182</attachid>
            <date>2013-03-04 02:30:37 -0800</date>
            <delta_ts>2013-03-04 02:54:47 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-110875-20130304112644.patch</filename>
            <type>text/plain</type>
            <size>44042</size>
            <attacher name="Marja Hölttä">marja</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ0NDQ2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTU5ZjRhMDIzZWM4N2Rj
YjRhMWMwYzkyOTYyNDRlZGE3ZjIwZWZiOS4uYzhmOWI3NjlmMjUyNzQ1YTdmZjYyM2FmMTAxZDk0
N2RkNmM3N2FjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg1IEBACisyMDEzLTAzLTA0ICBNYXJq
YSBIw7ZsdHTDpCAgPG1hcmphQGNocm9taXVtLm9yZz4KKworICAgICAgICBbVjhdIEFkZCBhICJj
b250ZXh0IHR5cGUiIHBhcmFtZXRlciB0byBHZXRUZW1wbGF0ZSBhbmQgQ29uZmlndXJlVjhTb21l
dGhpbmdUZW1wbGF0ZSBmdW5jdGlvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTExMDg3NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyAobm8gY2hhbmdlcyBpbiBiZWhhdmlvciB5ZXQp
LgorCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG06CisgICAg
ICAgIChHZW5lcmF0ZUhlYWRlcik6CisgICAgICAgIChHZW5lcmF0ZURvbWFpblNhZmVGdW5jdGlv
bkdldHRlcik6CisgICAgICAgIChHZW5lcmF0ZURvbWFpblNhZmVGdW5jdGlvblNldHRlcik6Cisg
ICAgICAgIChHZW5lcmF0ZU5vcm1hbEF0dHJHZXR0ZXIpOgorICAgICAgICAoR2VuZXJhdGVOYW1l
ZENvbnN0cnVjdG9yKToKKyAgICAgICAgKEdlbmVyYXRlSW1wbGVtZW50YXRpb24pOgorICAgICAg
ICAqIGJpbmRpbmdzL3Y4L0RPTURhdGFTdG9yZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpET01E
YXRhU3RvcmU6OkRPTURhdGFTdG9yZSk6CisgICAgICAgICogYmluZGluZ3MvdjgvRE9NRGF0YVN0
b3JlLmg6CisgICAgICAgIChET01EYXRhU3RvcmUpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L0RP
TVdyYXBwZXJXb3JsZC5jcHA6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6
OkRPTVdyYXBwZXJXb3JsZDo6c2V0SW5pdGlhbGl6aW5nV2luZG93KToKKyAgICAgICAgKFdlYkNv
cmU6OkRPTVdyYXBwZXJXb3JsZDo6RE9NV3JhcHBlcldvcmxkKToKKyAgICAgICAgKFdlYkNvcmU6
OkRPTVdyYXBwZXJXb3JsZDo6Y29udGV4dEhhc0NvcnJlY3RQcm90b3R5cGUpOgorICAgICAgICAq
IGJpbmRpbmdzL3Y4L0RPTVdyYXBwZXJXb3JsZC5oOgorICAgICAgICAoRE9NV3JhcHBlcldvcmxk
KToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVdyYXBwZXJXb3JsZDo6Z2V0V29ybGQpOgorICAgICAg
ICAqIGJpbmRpbmdzL3Y4L0RpY3Rpb25hcnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGljdGlv
bmFyeTo6Z2V0KToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9QYWdlU2NyaXB0RGVidWdTZXJ2ZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6cmV0cmlldmVGcmFtZVdpdGhHbG9iYWxPYmplY3RDaGVj
ayk6CisgICAgICAgICogYmluZGluZ3MvdjgvVjhBZGFwdG9yRnVuY3Rpb24uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6VjhBZGFwdG9yRnVuY3Rpb246OmdldFRlbXBsYXRlKToKKyAgICAgICAgKFdl
YkNvcmU6OlY4QWRhcHRvckZ1bmN0aW9uOjp3cmFwKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9W
OEFkYXB0b3JGdW5jdGlvbi5oOgorICAgICAgICAoVjhBZGFwdG9yRnVuY3Rpb24pOgorICAgICAg
ICAqIGJpbmRpbmdzL3Y4L1Y4QmluZGluZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjp0b0RPTVdp
bmRvdyk6CisgICAgICAgIChXZWJDb3JlOjp0b1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOgorICAg
ICAgICAoV2ViQ29yZTo6d29ybGRUeXBlKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAo
V2ViQ29yZTo6d29ybGRUeXBlSW5NYWluVGhyZWFkKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9W
OEJpbmRpbmcuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4
RE9NV2luZG93U2hlbGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhET01XaW5kb3dTaGVsbDo6
Y2xlYXJGb3JOYXZpZ2F0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlY4RE9NV2luZG93U2hlbGw6
Omluc3RhbGxET01XaW5kb3cpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4RE9NV3JhcHBlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpWOERPTVdyYXBwZXI6OmNyZWF0ZVdyYXBwZXIpOgorICAg
ICAgICAqIGJpbmRpbmdzL3Y4L1Y4SW5pdGlhbGl6ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
ZmluZEZyYW1lKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9WOFBlckNvbnRleHREYXRhLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlY4UGVyQ29udGV4dERhdGE6OmNvbnN0cnVjdG9yRm9yVHlwZVNs
b3dDYXNlKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9Xb3JrZXJTY3JpcHRDb250cm9sbGVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclNjcmlwdENvbnRyb2xsZXI6OldvcmtlclNjcmlw
dENvbnRyb2xsZXIpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyU2NyaXB0Q29udHJvbGxlcjo6
Y29udHJvbGxlckZvckNvbnRleHQpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1dyYXBwZXJUeXBl
SW5mby5oOgorICAgICAgICAoV2ViQ29yZTo6V3JhcHBlclR5cGVJbmZvOjpnZXRUZW1wbGF0ZSk6
CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4RE9NV2luZG93Q3VzdG9tLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlY4RE9NV2luZG93OjpldmVudEF0dHJHZXR0ZXJDdXN0b20pOgorICAg
ICAgICAoV2ViQ29yZTo6VjhET01XaW5kb3c6OmV2ZW50QXR0clNldHRlckN1c3RvbSk6CisgICAg
ICAgIChXZWJDb3JlOjpWOERPTVdpbmRvdzo6dG9TdHJpbmdNZXRob2RDdXN0b20pOgorICAgICAg
ICAoV2ViQ29yZTo6VjhET01XaW5kb3c6Om5hbWVkU2VjdXJpdHlDaGVjayk6CisgICAgICAgIChX
ZWJDb3JlOjpWOERPTVdpbmRvdzo6aW5kZXhlZFNlY3VyaXR5Q2hlY2spOgorICAgICAgICAoV2Vi
Q29yZTo6dG9WOCk6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTERvY3VtZW50
Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4SFRNTERvY3VtZW50Ojp3cmFwSW5TaGFk
b3dPYmplY3QpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxJbWFnZUVsZW1l
bnRDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOEhUTUxJbWFnZUVsZW1lbnRD
b25zdHJ1Y3Rvcjo6R2V0VGVtcGxhdGUpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9W
OEhUTUxJbWFnZUVsZW1lbnRDb25zdHJ1Y3Rvci5oOgorICAgICAgICAoVjhIVE1MSW1hZ2VFbGVt
ZW50Q29uc3RydWN0b3IpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOEluamVjdGVk
U2NyaXB0TWFuYWdlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVJbmplY3RlZFNjcmlw
dEhvc3RWOFdyYXBwZXIpOgorICAgICAgICAoV2ViQ29yZTo6SW5qZWN0ZWRTY3JpcHRNYW5hZ2Vy
OjpjYW5BY2Nlc3NJbnNwZWN0ZWRXaW5kb3cpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3Rv
bS9WOExvY2F0aW9uQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4TG9jYXRpb246OnJl
bG9hZEF0dHJHZXR0ZXJDdXN0b20pOgorICAgICAgICAoV2ViQ29yZTo6VjhMb2NhdGlvbjo6cmVw
bGFjZUF0dHJHZXR0ZXJDdXN0b20pOgorICAgICAgICAoV2ViQ29yZTo6VjhMb2NhdGlvbjo6YXNz
aWduQXR0ckdldHRlckN1c3RvbSk6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4TWVz
c2FnZUV2ZW50Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4TWVzc2FnZUV2ZW50Ojpp
bml0TWVzc2FnZUV2ZW50TWV0aG9kQ3VzdG9tKToKKwogMjAxMy0wMy0wMSAgU2hlcmlmZiBCb3Qg
IDx3ZWJraXQucmV2aWV3LmJvdEBnbWFpbC5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9s
bGluZyBvdXQgcjE0NDQyMiBhbmQgcjE0NDQyNC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0KaW5kZXggYmNkM2RjNjgxYTZhYzRlNTlh
ZWQ4NmJmMGRmY2IxNTUyODhkMzljZC4uNzMzZWZjZjNmMGQ2ZTU3MGI1NmU4MzliYTllZjJkZTI2
N2VlNGVhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2Rl
R2VuZXJhdG9yVjgucG0KKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2Rl
R2VuZXJhdG9yVjgucG0KQEAgLTMyNCw3ICszMjQsNyBAQCBzdWIgR2VuZXJhdGVIZWFkZXIKICAg
ICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgPDxFTkQpOwogY2xhc3MgVjgke25hdGl2ZVR5cGV9
Q29uc3RydWN0b3IgewogcHVibGljOgotICAgIHN0YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6RnVu
Y3Rpb25UZW1wbGF0ZT4gR2V0VGVtcGxhdGUodjg6Oklzb2xhdGUqKTsKKyAgICBzdGF0aWMgdjg6
OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IEdldFRlbXBsYXRlKHY4OjpJc29sYXRl
KiwgV3JhcHBlcldvcmxkVHlwZSk7CiAgICAgc3RhdGljIFdyYXBwZXJUeXBlSW5mbyBpbmZvOwog
fTsKIApAQCAtMzYyLDcgKzM2Miw3IEBAIEVORAogICAgIHB1c2goQGhlYWRlckNvbnRlbnQsIDw8
RU5EKTsKICAgICBzdGF0aWMgYm9vbCBIYXNJbnN0YW5jZSh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4s
IHY4OjpJc29sYXRlKik7CiAgICAgc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRl
bXBsYXRlPiBHZXRSYXdUZW1wbGF0ZSh2ODo6SXNvbGF0ZSopOwotICAgIHN0YXRpYyB2ODo6UGVy
c2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gR2V0VGVtcGxhdGUodjg6Oklzb2xhdGUqKTsK
KyAgICBzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IEdldFRlbXBs
YXRlKHY4OjpJc29sYXRlKiwgV3JhcHBlcldvcmxkVHlwZSk7CiAgICAgc3RhdGljICR7bmF0aXZl
VHlwZX0qIHRvTmF0aXZlKHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gb2JqZWN0KQogICAgIHsKICAg
ICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8JHtuYXRpdmVUeXBlfSo+KCR7ZnJvbUZ1bmN0
aW9uT3BlbmluZ31vYmplY3Qke2Zyb21GdW5jdGlvbkNsb3Npbmd9LT5HZXRBbGlnbmVkUG9pbnRl
ckZyb21JbnRlcm5hbEZpZWxkKHY4RE9NV3JhcHBlck9iamVjdEluZGV4KSk7CkBAIC03OTQsNyAr
Nzk0LDcgQEAgc3ViIEdlbmVyYXRlRG9tYWluU2FmZUZ1bmN0aW9uR2V0dGVyCiBzdGF0aWMgdjg6
OkhhbmRsZTx2ODo6VmFsdWU+ICR7ZnVuY05hbWV9QXR0ckdldHRlcih2ODo6TG9jYWw8djg6OlN0
cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsKICAgICBzdGF0aWMg
djg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IHByaXZhdGVUZW1wbGF0ZSA9IHY4
OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPjo6TmV3KGluZm8uR2V0SXNvbGF0ZSgp
LCAkbmV3VGVtcGxhdGVTdHJpbmcpOwotICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gaG9sZGVy
ID0gaW5mby5UaGlzKCktPkZpbmRJbnN0YW5jZUluUHJvdG90eXBlQ2hhaW4oJHt2OEludGVyZmFj
ZU5hbWV9OjpHZXRUZW1wbGF0ZShpbmZvLkdldElzb2xhdGUoKSkpOworICAgIHY4OjpIYW5kbGU8
djg6Ok9iamVjdD4gaG9sZGVyID0gaW5mby5UaGlzKCktPkZpbmRJbnN0YW5jZUluUHJvdG90eXBl
Q2hhaW4oJHt2OEludGVyZmFjZU5hbWV9OjpHZXRUZW1wbGF0ZShpbmZvLkdldElzb2xhdGUoKSwg
d29ybGRUeXBlKGluZm8uR2V0SXNvbGF0ZSgpKSkpOwogICAgIGlmIChob2xkZXIuSXNFbXB0eSgp
KSB7CiAgICAgICAgIC8vIGNhbiBvbmx5IHJlYWNoIGhlcmUgYnkgJ29iamVjdC5fX3Byb3RvX18u
ZnVuYycsIGFuZCBpdCBzaG91bGQgcGFzc2VkCiAgICAgICAgIC8vIGRvbWFpbiBzZWN1cml0eSBj
aGVjayBhbHJlYWR5CkBAIC04MjksNyArODI5LDcgQEAgc3ViIEdlbmVyYXRlRG9tYWluU2FmZUZ1
bmN0aW9uU2V0dGVyCiAgICAgcHVzaChAaW1wbENvbnRlbnREZWNscywgPDxFTkQpOwogc3RhdGlj
IHZvaWQgJHtpbnRlcmZhY2VOYW1lfURvbWFpblNhZmVGdW5jdGlvblNldHRlcih2ODo6TG9jYWw8
djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpB
Y2Nlc3NvckluZm8mIGluZm8pCiB7Ci0gICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBob2xkZXIg
PSBpbmZvLlRoaXMoKS0+RmluZEluc3RhbmNlSW5Qcm90b3R5cGVDaGFpbigke3Y4SW50ZXJmYWNl
TmFtZX06OkdldFRlbXBsYXRlKGluZm8uR2V0SXNvbGF0ZSgpKSk7CisgICAgdjg6OkhhbmRsZTx2
ODo6T2JqZWN0PiBob2xkZXIgPSBpbmZvLlRoaXMoKS0+RmluZEluc3RhbmNlSW5Qcm90b3R5cGVD
aGFpbigke3Y4SW50ZXJmYWNlTmFtZX06OkdldFRlbXBsYXRlKGluZm8uR2V0SXNvbGF0ZSgpLCB3
b3JsZFR5cGUoaW5mby5HZXRJc29sYXRlKCkpKSk7CiAgICAgaWYgKGhvbGRlci5Jc0VtcHR5KCkp
CiAgICAgICAgIHJldHVybjsKICAgICAke2ludGVyZmFjZU5hbWV9KiBpbXAgPSAke3Y4SW50ZXJm
YWNlTmFtZX06OnRvTmF0aXZlKGhvbGRlcik7CkBAIC05NDgsNyArOTQ4LDcgQEAgRU5ECiAgICAg
ICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAjIHBlcmZvcm0gbG9va3VwIGZpcnN0CiAgICAgICAg
ICAgICBwdXNoKEBpbXBsQ29udGVudERlY2xzLCA8PEVORCk7Ci0gICAgdjg6OkhhbmRsZTx2ODo6
T2JqZWN0PiBob2xkZXIgPSBpbmZvLlRoaXMoKS0+RmluZEluc3RhbmNlSW5Qcm90b3R5cGVDaGFp
bigke3Y4SW50ZXJmYWNlTmFtZX06OkdldFRlbXBsYXRlKGluZm8uR2V0SXNvbGF0ZSgpKSk7Cisg
ICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBob2xkZXIgPSBpbmZvLlRoaXMoKS0+RmluZEluc3Rh
bmNlSW5Qcm90b3R5cGVDaGFpbigke3Y4SW50ZXJmYWNlTmFtZX06OkdldFRlbXBsYXRlKGluZm8u
R2V0SXNvbGF0ZSgpLCB3b3JsZFR5cGUoaW5mby5HZXRJc29sYXRlKCkpKSk7CiAgICAgaWYgKGhv
bGRlci5Jc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiB2OFVuZGVmaW5lZCgpOwogRU5ECkBAIC0y
MjQ0LDcgKzIyNDQsNyBAQCBFTkQKIAogICAgIHB1c2goQGltcGxDb250ZW50LCA8PEVORCk7CiAK
LXY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiAke3Y4SW50ZXJmYWNlTmFtZX1D
b25zdHJ1Y3Rvcjo6R2V0VGVtcGxhdGUodjg6Oklzb2xhdGUqIGlzb2xhdGUpCit2ODo6UGVyc2lz
dGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gJHt2OEludGVyZmFjZU5hbWV9Q29uc3RydWN0b3I6
OkdldFRlbXBsYXRlKHY4OjpJc29sYXRlKiBpc29sYXRlLCBXcmFwcGVyV29ybGRUeXBlIHdvcmxk
VHlwZSkKIHsKICAgICBzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+
IGNhY2hlZFRlbXBsYXRlOwogICAgIGlmICghY2FjaGVkVGVtcGxhdGUuSXNFbXB0eSgpKQpAQCAt
MjI1Niw3ICsyMjU2LDcgQEAgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+ICR7
djhJbnRlcmZhY2VOYW1lfUNvbnN0cnVjdG9yOjpHZXRUZW1wbGF0ZSgKICAgICB2ODo6TG9jYWw8
djg6Ok9iamVjdFRlbXBsYXRlPiBpbnN0YW5jZSA9IHJlc3VsdC0+SW5zdGFuY2VUZW1wbGF0ZSgp
OwogICAgIGluc3RhbmNlLT5TZXRJbnRlcm5hbEZpZWxkQ291bnQoJHt2OEludGVyZmFjZU5hbWV9
OjppbnRlcm5hbEZpZWxkQ291bnQpOwogICAgIHJlc3VsdC0+U2V0Q2xhc3NOYW1lKHY4OjpTdHJp
bmc6Ok5ld1N5bWJvbCgiJHtpbnRlcmZhY2VOYW1lfSIpKTsKLSAgICByZXN1bHQtPkluaGVyaXQo
JHt2OEludGVyZmFjZU5hbWV9OjpHZXRUZW1wbGF0ZShpc29sYXRlKSk7CisgICAgcmVzdWx0LT5J
bmhlcml0KCR7djhJbnRlcmZhY2VOYW1lfTo6R2V0VGVtcGxhdGUoaXNvbGF0ZSwgd29ybGRUeXBl
KSk7CiAKICAgICBjYWNoZWRUZW1wbGF0ZSA9IHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRl
bXBsYXRlPjo6TmV3KGlzb2xhdGUsIHJlc3VsdCk7CiAgICAgcmV0dXJuIGNhY2hlZFRlbXBsYXRl
OwpAQCAtMjY4MCw3ICsyNjgwLDcgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAg
ICAgbXkgJHBhcmVudCA9ICRfOwogICAgICAgICBBZGRUb0ltcGxJbmNsdWRlcygiVjgke3BhcmVu
dH0uaCIpOwogICAgICAgICAkcGFyZW50Q2xhc3MgPSAiVjgiIC4gJHBhcmVudDsKLSAgICAgICAg
JHBhcmVudENsYXNzVGVtcGxhdGUgPSAkcGFyZW50Q2xhc3MgLiAiOjpHZXRUZW1wbGF0ZShpc29s
YXRlKSI7CisgICAgICAgICRwYXJlbnRDbGFzc1RlbXBsYXRlID0gJHBhcmVudENsYXNzIC4gIjo6
R2V0VGVtcGxhdGUoaXNvbGF0ZSwgd29ybGRUeXBlKSI7CiAgICAgICAgIGxhc3Q7CiAgICAgfQog
CkBAIC0yOTg5LDcgKzI5ODksNyBAQCBFTkQKIAogICAgICMgR2VuZXJhdGUgdGhlIHRlbXBsYXRl
IGNvbmZpZ3VyYXRpb24gbWV0aG9kCiAgICAgcHVzaChAaW1wbENvbnRlbnQsICA8PEVORCk7Ci1z
dGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IENvbmZpZ3VyZSR7djhJ
bnRlcmZhY2VOYW1lfVRlbXBsYXRlKHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRl
PiBkZXNjLCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSkKK3N0YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6
RnVuY3Rpb25UZW1wbGF0ZT4gQ29uZmlndXJlJHt2OEludGVyZmFjZU5hbWV9VGVtcGxhdGUodjg6
OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IGRlc2MsIHY4OjpJc29sYXRlKiBpc29s
YXRlLCBXcmFwcGVyV29ybGRUeXBlIHdvcmxkVHlwZSkKIHsKICAgICBkZXNjLT5SZWFkT25seVBy
b3RvdHlwZSgpOwogCkBAIC0zMTU1LDcgKzMxNTUsNyBAQCB2ODo6UGVyc2lzdGVudDx2ODo6RnVu
Y3Rpb25UZW1wbGF0ZT4gJHt2OEludGVyZmFjZU5hbWV9OjpHZXRSYXdUZW1wbGF0ZSh2ODo6SXNv
bAogICAgIHJldHVybiB0ZW1wbDsKIH0KIAotdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVt
cGxhdGU+ICR7djhJbnRlcmZhY2VOYW1lfTo6R2V0VGVtcGxhdGUodjg6Oklzb2xhdGUqIGlzb2xh
dGUpCit2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gJHt2OEludGVyZmFjZU5h
bWV9OjpHZXRUZW1wbGF0ZSh2ODo6SXNvbGF0ZSogaXNvbGF0ZSwgV3JhcHBlcldvcmxkVHlwZSB3
b3JsZFR5cGUpCiB7CiAgICAgVjhQZXJJc29sYXRlRGF0YSogZGF0YSA9IFY4UGVySXNvbGF0ZURh
dGE6OmZyb20oaXNvbGF0ZSk7CiAgICAgVjhQZXJJc29sYXRlRGF0YTo6VGVtcGxhdGVNYXA6Oml0
ZXJhdG9yIHJlc3VsdCA9IGRhdGEtPnRlbXBsYXRlTWFwKCkuZmluZCgmaW5mbyk7CkBAIC0zMTY0
LDcgKzMxNjQsNyBAQCB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gJHt2OElu
dGVyZmFjZU5hbWV9OjpHZXRUZW1wbGF0ZSh2ODo6SXNvbGF0ZQogCiAgICAgdjg6OkhhbmRsZVNj
b3BlIGhhbmRsZVNjb3BlOwogICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRl
PiB0ZW1wbCA9Ci0gICAgICAgIENvbmZpZ3VyZSR7djhJbnRlcmZhY2VOYW1lfVRlbXBsYXRlKEdl
dFJhd1RlbXBsYXRlKGlzb2xhdGUpLCBpc29sYXRlKTsKKyAgICAgICAgQ29uZmlndXJlJHt2OElu
dGVyZmFjZU5hbWV9VGVtcGxhdGUoR2V0UmF3VGVtcGxhdGUoaXNvbGF0ZSksIGlzb2xhdGUsIHdv
cmxkVHlwZSk7CiAgICAgZGF0YS0+dGVtcGxhdGVNYXAoKS5hZGQoJmluZm8sIHRlbXBsKTsKICAg
ICByZXR1cm4gdGVtcGw7CiB9CkBAIC0zMjEzLDcgKzMyMTMsNyBAQCB2b2lkICR7djhJbnRlcmZh
Y2VOYW1lfTo6aW5zdGFsbFBlckNvbnRleHRQcm90b3R5cGVQcm9wZXJ0aWVzKHY4OjpIYW5kbGU8
djg6Ok9iagogRU5ECiAgICAgICAgICMgU2V0dXAgdGhlIGVuYWJsZS1ieS1zZXR0aW5ncyBmdW5j
dGlvbnMgaWYgd2UgaGF2ZSB0aGVtCiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAgPDxFTkQp
OwotICAgIHY4OjpMb2NhbDx2ODo6U2lnbmF0dXJlPiBkZWZhdWx0U2lnbmF0dXJlID0gdjg6OlNp
Z25hdHVyZTo6TmV3KEdldFRlbXBsYXRlKGlzb2xhdGUpKTsKKyAgICB2ODo6TG9jYWw8djg6OlNp
Z25hdHVyZT4gZGVmYXVsdFNpZ25hdHVyZSA9IHY4OjpTaWduYXR1cmU6Ok5ldyhHZXRUZW1wbGF0
ZShpc29sYXRlLCB3b3JsZFR5cGUoaXNvbGF0ZSkpKTsKICAgICBVTlVTRURfUEFSQU0oZGVmYXVs
dFNpZ25hdHVyZSk7IC8vIEluIHNvbWUgY2FzZXMsIGl0IHdpbGwgbm90IGJlIHVzZWQuCiAKICAg
ICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0ID0gdG9TY3JpcHRFeGVjdXRpb25Db250
ZXh0KHByb3RvLT5DcmVhdGlvbkNvbnRleHQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy92OC9ET01EYXRhU3RvcmUuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvRE9NRGF0YVN0b3JlLmNwcAppbmRleCA2OTEzMTRmYmJhOTc0N2JhNzA1ODI4MGJmM2E2ZmJk
ZTc1MGIyZWY4Li43OWMwOWU5NzVjNjVmNmE0NDhkNjE4ZWUyMTFhODJlYThmZTgwMzRhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9ET01EYXRhU3RvcmUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0RPTURhdGFTdG9yZS5jcHAKQEAgLTM4LDcgKzM4
LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1ET01EYXRhU3RvcmU6OkRPTURhdGFTdG9y
ZShUeXBlIHR5cGUpCitET01EYXRhU3RvcmU6OkRPTURhdGFTdG9yZShXcmFwcGVyV29ybGRUeXBl
IHR5cGUpCiAgICAgOiBtX3R5cGUodHlwZSkKICAgICAsIG1fd3JhcHBlck1hcCh2ODo6SXNvbGF0
ZTo6R2V0Q3VycmVudCgpKSAvLyBGSVhNRSBEb24ndCBjYWxsIEdldEN1cnJlbnQgdHdpY2UuCiB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9ET01EYXRhU3RvcmUuaCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0RPTURhdGFTdG9yZS5oCmluZGV4IDAyNjZlZDky
OWRlODc1OWI3NWY1NTgwNTU4YTg0MTlmZmQyNTMxOWMuLmMwNTAzM2YwYjZjYTVjMzY5OGFhNzY0
NTgzOTZmYWEzYzEyZjBlYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L0RPTURhdGFTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0RPTURhdGFT
dG9yZS5oCkBAIC0zNSw2ICszNSw3IEBACiAjaW5jbHVkZSAiRE9NV3JhcHBlcldvcmxkLmgiCiAj
aW5jbHVkZSAiTm9kZS5oIgogI2luY2x1ZGUgIlY4R0NDb250cm9sbGVyLmgiCisjaW5jbHVkZSAi
V3JhcHBlclR5cGVJbmZvLmgiCiAjaW5jbHVkZSA8djguaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1h
cC5oPgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CkBAIC01MCwxMyArNTEsNyBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBET01EYXRhU3RvcmUgewogICAgIFdURl9NQUtFX05PTkNP
UFlBQkxFKERPTURhdGFTdG9yZSk7CiBwdWJsaWM6Ci0gICAgZW51bSBUeXBlIHsKLSAgICAgICAg
TWFpbldvcmxkLAotICAgICAgICBJc29sYXRlZFdvcmxkLAotICAgICAgICBXb3JrZXIsCi0gICAg
fTsKLQotICAgIGV4cGxpY2l0IERPTURhdGFTdG9yZShUeXBlKTsKKyAgICBleHBsaWNpdCBET01E
YXRhU3RvcmUoV3JhcHBlcldvcmxkVHlwZSk7CiAgICAgfkRPTURhdGFTdG9yZSgpOwogCiAgICAg
c3RhdGljIERPTURhdGFTdG9yZSogY3VycmVudCh2ODo6SXNvbGF0ZSopOwpAQCAtMTYzLDcgKzE1
OCw3IEBAIHByaXZhdGU6CiAgICAgICAgIG9iamVjdC0+c2V0V3JhcHBlcih3cmFwcGVyLCBpc29s
YXRlLCBjb25maWd1cmF0aW9uKTsKICAgICB9CiAKLSAgICBUeXBlIG1fdHlwZTsKKyAgICBXcmFw
cGVyV29ybGRUeXBlIG1fdHlwZTsKICAgICBET01XcmFwcGVyTWFwPHZvaWQ+IG1fd3JhcHBlck1h
cDsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0RPTVdyYXBw
ZXJXb3JsZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9ET01XcmFwcGVyV29ybGQu
Y3BwCmluZGV4IGM1NmY0ZWUxYTRjN2MyYTVkZWNlNWZhYzRmMDZiODFjYTQ0N2NkMmMuLmRjZmE4
ZjAyMjczMWE5YWM0NzhhYjk5NDY0MzA4MTI2ODk5MWUyZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L0RPTVdyYXBwZXJXb3JsZC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvdjgvRE9NV3JhcHBlcldvcmxkLmNwcApAQCAtMzYsNiArMzYsNyBAQAogI2lu
Y2x1ZGUgIlY4RE9NQWN0aXZpdHlMb2dnZXIuaCIKICNpbmNsdWRlICJWOERPTVdpbmRvdy5oIgog
I2luY2x1ZGUgIlY4RE9NV3JhcHBlci5oIgorI2luY2x1ZGUgIldyYXBwZXJUeXBlSW5mby5oIgog
I2luY2x1ZGUgPHd0Zi9IYXNoVHJhaXRzLmg+CiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4K
ICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CkBAIC00MywxMiArNDQsMTggQEAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogaW50IERPTVdyYXBwZXJXb3JsZDo6aXNvbGF0ZWRXb3JsZENvdW50
ID0gMDsKK3N0YXRpYyBib29sIGluaXRpYWxpemluZ1dpbmRvdyA9IGZhbHNlOwogCiBQYXNzUmVm
UHRyPERPTVdyYXBwZXJXb3JsZD4gIERPTVdyYXBwZXJXb3JsZDo6Y3JlYXRlVW5pbml0aWFsaXpl
ZFdvcmxkKCkKIHsKICAgICByZXR1cm4gYWRvcHRSZWYobmV3IERPTVdyYXBwZXJXb3JsZCh1bmlu
aXRpYWxpemVkV29ybGRJZCwgdW5pbml0aWFsaXplZEV4dGVuc2lvbkdyb3VwKSk7CiB9CiAKK3Zv
aWQgRE9NV3JhcHBlcldvcmxkOjpzZXRJbml0aWFsaXppbmdXaW5kb3coYm9vbCBpbml0aWFsaXpp
bmcpCit7CisgICAgaW5pdGlhbGl6aW5nV2luZG93ID0gaW5pdGlhbGl6aW5nOworfQorCiBQYXNz
UmVmUHRyPERPTVdyYXBwZXJXb3JsZD4gRE9NV3JhcHBlcldvcmxkOjpjcmVhdGVNYWluV29ybGQo
KQogewogICAgIHJldHVybiBhZG9wdFJlZihuZXcgRE9NV3JhcHBlcldvcmxkKG1haW5Xb3JsZElk
LCBtYWluV29ybGRFeHRlbnNpb25Hcm91cCkpOwpAQCAtNTksNyArNjYsNyBAQCBET01XcmFwcGVy
V29ybGQ6OkRPTVdyYXBwZXJXb3JsZChpbnQgd29ybGRJZCwgaW50IGV4dGVuc2lvbkdyb3VwKQog
ICAgICwgbV9leHRlbnNpb25Hcm91cChleHRlbnNpb25Hcm91cCkKIHsKICAgICBpZiAoaXNJc29s
YXRlZFdvcmxkKCkpCi0gICAgICAgIG1fZG9tRGF0YVN0b3JlID0gYWRvcHRQdHIobmV3IERPTURh
dGFTdG9yZShET01EYXRhU3RvcmU6Oklzb2xhdGVkV29ybGQpKTsKKyAgICAgICAgbV9kb21EYXRh
U3RvcmUgPSBhZG9wdFB0cihuZXcgRE9NRGF0YVN0b3JlKElzb2xhdGVkV29ybGQpKTsKIH0KIAog
RE9NV3JhcHBlcldvcmxkKiBtYWluVGhyZWFkTm9ybWFsV29ybGQoKQpAQCAtNjksMTAgKzc2LDEy
IEBAIERPTVdyYXBwZXJXb3JsZCogbWFpblRocmVhZE5vcm1hbFdvcmxkKCkKICAgICByZXR1cm4g
Y2FjaGVkTm9ybWFsV29ybGQuZ2V0KCk7CiB9CiAKLXZvaWQgRE9NV3JhcHBlcldvcmxkOjphc3Nl
cnRDb250ZXh0SGFzQ29ycmVjdFByb3RvdHlwZSh2ODo6SGFuZGxlPHY4OjpDb250ZXh0PiBjb250
ZXh0KQorYm9vbCBET01XcmFwcGVyV29ybGQ6OmNvbnRleHRIYXNDb3JyZWN0UHJvdG90eXBlKHY4
OjpIYW5kbGU8djg6OkNvbnRleHQ+IGNvbnRleHQpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVh
ZCgpKTsKLSAgICBBU1NFUlQoVjhET01XcmFwcGVyOjppc1dyYXBwZXJPZlR5cGUodG9Jbm5lckds
b2JhbE9iamVjdChjb250ZXh0KSwgJlY4RE9NV2luZG93OjppbmZvKSk7CisgICAgaWYgKGluaXRp
YWxpemluZ1dpbmRvdykKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgcmV0dXJuIFY4RE9NV3Jh
cHBlcjo6aXNXcmFwcGVyT2ZUeXBlKHRvSW5uZXJHbG9iYWxPYmplY3QoY29udGV4dCksICZWOERP
TVdpbmRvdzo6aW5mbyk7CiB9CiAKIHN0YXRpYyB2b2lkIGlzb2xhdGVkV29ybGRXZWFrQ2FsbGJh
Y2sodjg6Oklzb2xhdGUqIGlzb2xhdGUsIHY4OjpQZXJzaXN0ZW50PHY4OjpWYWx1ZT4gb2JqZWN0
LCB2b2lkKiBwYXJhbWV0ZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92
OC9ET01XcmFwcGVyV29ybGQuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0RPTVdyYXBw
ZXJXb3JsZC5oCmluZGV4IDg1NWRmMDg5NmFhNjkxZDJiOTJhMDIxYjgzNjQ0NWIzZGFhNGY2M2Yu
LjA1ZWNjMWZhOTMwZTNhZTMwMzA4ODhlNzQ1ZTYwYzdmN2E4NTNmYmYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0RPTVdyYXBwZXJXb3JsZC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L0RPTVdyYXBwZXJXb3JsZC5oCkBAIC02MiwxMCArNjIsOSBAQCBw
dWJsaWM6CiAgICAgdm9pZCBtYWtlQ29udGV4dFdlYWsodjg6OkhhbmRsZTx2ODo6Q29udGV4dD4p
OwogICAgIHZvaWQgc2V0SXNvbGF0ZWRXb3JsZEZpZWxkKHY4OjpIYW5kbGU8djg6OkNvbnRleHQ+
KTsKIAotICAgIHN0YXRpYyB2b2lkIGFzc2VydENvbnRleHRIYXNDb3JyZWN0UHJvdG90eXBlKHY4
OjpIYW5kbGU8djg6OkNvbnRleHQ+KTsKICAgICBzdGF0aWMgRE9NV3JhcHBlcldvcmxkKiBnZXRX
b3JsZCh2ODo6SGFuZGxlPHY4OjpDb250ZXh0PiBjb250ZXh0KQogICAgIHsKLSAgICAgICAgYXNz
ZXJ0Q29udGV4dEhhc0NvcnJlY3RQcm90b3R5cGUoY29udGV4dCk7CisgICAgICAgIEFTU0VSVChj
b250ZXh0SGFzQ29ycmVjdFByb3RvdHlwZShjb250ZXh0KSk7CiAgICAgICAgIHJldHVybiBzdGF0
aWNfY2FzdDxET01XcmFwcGVyV29ybGQqPihjb250ZXh0LT5HZXRBbGlnbmVkUG9pbnRlckZyb21F
bWJlZGRlckRhdGEodjhDb250ZXh0SXNvbGF0ZWRXb3JsZCkpOwogICAgIH0KIApAQCAtMTA5LDkg
KzEwOCwxMiBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBtX2RvbURhdGFTdG9yZS5nZXQoKTsK
ICAgICB9CiAKKyAgICBzdGF0aWMgdm9pZCBzZXRJbml0aWFsaXppbmdXaW5kb3coYm9vbCk7CisK
IHByaXZhdGU6CiAgICAgc3RhdGljIGludCBpc29sYXRlZFdvcmxkQ291bnQ7CiAgICAgc3RhdGlj
IFBhc3NSZWZQdHI8RE9NV3JhcHBlcldvcmxkPiBjcmVhdGVNYWluV29ybGQoKTsKKyAgICBzdGF0
aWMgYm9vbCBjb250ZXh0SGFzQ29ycmVjdFByb3RvdHlwZSh2ODo6SGFuZGxlPHY4OjpDb250ZXh0
Pik7CiAKICAgICBET01XcmFwcGVyV29ybGQoaW50IHdvcmxkSWQsIGludCBleHRlbnNpb25Hcm91
cCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0RpY3Rpb25hcnku
Y3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvRGljdGlvbmFyeS5jcHAKaW5kZXggOGE5
Y2YxZGY2YmI1NWRiOTI3ZDNmNDEwZjNjNmI3YzlkMGRhM2VkMi4uYjE4NjJmYmIyMGM4NmI1NmNj
YzFhY2UyOTk5NzU2NzA2MmE1MmYwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvdjgvRGljdGlvbmFyeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvRGlj
dGlvbmFyeS5jcHAKQEAgLTI1OSw3ICsyNTksNyBAQCBib29sIERpY3Rpb25hcnk6OmdldChjb25z
dCBTdHJpbmcmIGtleSwgUmVmUHRyPERPTVdpbmRvdz4mIHZhbHVlKSBjb25zdAogICAgIHZhbHVl
ID0gMDsKICAgICBpZiAodjhWYWx1ZS0+SXNPYmplY3QoKSkgewogICAgICAgICB2ODo6SGFuZGxl
PHY4OjpPYmplY3Q+IHdyYXBwZXIgPSB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+OjpDYXN0KHY4VmFs
dWUpOwotICAgICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdpbmRvdyA9IHdyYXBwZXItPkZp
bmRJbnN0YW5jZUluUHJvdG90eXBlQ2hhaW4oVjhET01XaW5kb3c6OkdldFRlbXBsYXRlKG1faXNv
bGF0ZSkpOworICAgICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdpbmRvdyA9IHdyYXBwZXIt
PkZpbmRJbnN0YW5jZUluUHJvdG90eXBlQ2hhaW4oVjhET01XaW5kb3c6OkdldFRlbXBsYXRlKG1f
aXNvbGF0ZSwgd29ybGRUeXBlSW5NYWluVGhyZWFkKG1faXNvbGF0ZSkpKTsKICAgICAgICAgaWYg
KCF3aW5kb3cuSXNFbXB0eSgpKQogICAgICAgICAgICAgdmFsdWUgPSBWOERPTVdpbmRvdzo6dG9O
YXRpdmUod2luZG93KTsKICAgICB9CkBAIC0zNjMsNyArMzYzLDcgQEAgYm9vbCBEaWN0aW9uYXJ5
OjpnZXQoY29uc3QgU3RyaW5nJiBrZXksIFJlZlB0cjxUcmFja0Jhc2U+JiB2YWx1ZSkgY29uc3QK
IAogICAgICAgICAvLyBGSVhNRTogdGhpcyB3aWxsIG5lZWQgdG8gYmUgY2hhbmdlZCBzbyBpdCBj
YW4gYWxzbyByZXR1cm4gYW4gQXVkaW9UcmFjayBvciBhIFZpZGVvVHJhY2sgb25jZQogICAgICAg
ICAvLyB3ZSBhZGQgdGhlbS4KLSAgICAgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB0cmFjayA9
IHdyYXBwZXItPkZpbmRJbnN0YW5jZUluUHJvdG90eXBlQ2hhaW4oVjhUZXh0VHJhY2s6OkdldFRl
bXBsYXRlKG1faXNvbGF0ZSkpOworICAgICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHRyYWNr
ID0gd3JhcHBlci0+RmluZEluc3RhbmNlSW5Qcm90b3R5cGVDaGFpbihWOFRleHRUcmFjazo6R2V0
VGVtcGxhdGUobV9pc29sYXRlLCB3b3JsZFR5cGUobV9pc29sYXRlKSkpOwogICAgICAgICBpZiAo
IXRyYWNrLklzRW1wdHkoKSkKICAgICAgICAgICAgIHNvdXJjZSA9IFY4VGV4dFRyYWNrOjp0b05h
dGl2ZSh0cmFjayk7CiAgICAgfQpAQCAtNDM2LDcgKzQzNiw3IEBAIGJvb2wgRGljdGlvbmFyeTo6
Z2V0KGNvbnN0IFN0cmluZyYga2V5LCBSZWZQdHI8RXZlbnRUYXJnZXQ+JiB2YWx1ZSkgY29uc3QK
ICAgICAvLyBleGlzdHMgb24gYSBwcm90b3R5cGUgY2hhaW4gb2YgdjhWYWx1ZS4KICAgICBpZiAo
djhWYWx1ZS0+SXNPYmplY3QoKSkgewogICAgICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdy
YXBwZXIgPSB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+OjpDYXN0KHY4VmFsdWUpOwotICAgICAgICB2
ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdpbmRvdyA9IHdyYXBwZXItPkZpbmRJbnN0YW5jZUluUHJv
dG90eXBlQ2hhaW4oVjhET01XaW5kb3c6OkdldFRlbXBsYXRlKG1faXNvbGF0ZSkpOworICAgICAg
ICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdpbmRvdyA9IHdyYXBwZXItPkZpbmRJbnN0YW5jZUlu
UHJvdG90eXBlQ2hhaW4oVjhET01XaW5kb3c6OkdldFRlbXBsYXRlKG1faXNvbGF0ZSwgd29ybGRU
eXBlSW5NYWluVGhyZWFkKG1faXNvbGF0ZSkpKTsKICAgICAgICAgaWYgKCF3aW5kb3cuSXNFbXB0
eSgpKSB7CiAgICAgICAgICAgICB2YWx1ZSA9IHRvV3JhcHBlclR5cGVJbmZvKHdpbmRvdyktPnRv
RXZlbnRUYXJnZXQod2luZG93KTsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvUGFnZVNjcmlwdERlYnVnU2VydmVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1BhZ2VTY3JpcHREZWJ1Z1NlcnZlci5jcHAKaW5k
ZXggYmE2ZTVmOGM4Yzk2MDQxZDhhNzNkNzY4ZmIzODZjNmFkNTMwNTE5OC4uZjk1ZTJhYTEzNzVl
NDIwNDIxZDRkMjcxOGEyMTBhMzg1MTQ0NjA3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvdjgvUGFnZVNjcmlwdERlYnVnU2VydmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy92OC9QYWdlU2NyaXB0RGVidWdTZXJ2ZXIuY3BwCkBAIC01Niw3ICs1Niw3IEBA
IHN0YXRpYyBGcmFtZSogcmV0cmlldmVGcmFtZVdpdGhHbG9iYWxPYmplY3RDaGVjayh2ODo6SGFu
ZGxlPHY4OjpDb250ZXh0PiBjb250ZXh0CiAgICAgaWYgKGdsb2JhbC5Jc0VtcHR5KCkpCiAgICAg
ICAgIHJldHVybiAwOwogCi0gICAgZ2xvYmFsID0gZ2xvYmFsLT5GaW5kSW5zdGFuY2VJblByb3Rv
dHlwZUNoYWluKFY4RE9NV2luZG93OjpHZXRUZW1wbGF0ZShjb250ZXh0LT5HZXRJc29sYXRlKCkp
KTsKKyAgICBnbG9iYWwgPSBnbG9iYWwtPkZpbmRJbnN0YW5jZUluUHJvdG90eXBlQ2hhaW4oVjhE
T01XaW5kb3c6OkdldFRlbXBsYXRlKGNvbnRleHQtPkdldElzb2xhdGUoKSwgd29ybGRUeXBlSW5N
YWluVGhyZWFkKGNvbnRleHQtPkdldElzb2xhdGUoKSkpKTsKICAgICBpZiAoZ2xvYmFsLklzRW1w
dHkoKSkKICAgICAgICAgcmV0dXJuIDA7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L1Y4QWRhcHRvckZ1bmN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L1Y4QWRhcHRvckZ1bmN0aW9uLmNwcAppbmRleCBiYmMxZDMyNzRmYzdkODlmMWRhNjM0YWRh
Nzc5YmJjNmU0NjJlY2RkLi5jNzJjNzEzZWQwN2E5NTMyZjIxMTUwZWZiY2QwNjkwY2NkY2YwMzM3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEFkYXB0b3JGdW5jdGlv
bi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhBZGFwdG9yRnVuY3Rpb24u
Y3BwCkBAIC00MCw3ICs0MCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogV3JhcHBlclR5cGVJ
bmZvIFY4QWRhcHRvckZ1bmN0aW9uOjppbmZvID0geyBWOEFkYXB0b3JGdW5jdGlvbjo6Z2V0VGVt
cGxhdGUsIDAsIDAsIDAsIDAsIDAsIDAsIFdyYXBwZXJUeXBlT2JqZWN0UHJvdG90eXBlIH07CiAK
LXY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBWOEFkYXB0b3JGdW5jdGlvbjo6
Z2V0VGVtcGxhdGUodjg6Oklzb2xhdGUqIGlzb2xhdGUpCit2ODo6UGVyc2lzdGVudDx2ODo6RnVu
Y3Rpb25UZW1wbGF0ZT4gVjhBZGFwdG9yRnVuY3Rpb246OmdldFRlbXBsYXRlKHY4OjpJc29sYXRl
KiBpc29sYXRlLCBXcmFwcGVyV29ybGRUeXBlIHdvcmxkVHlwZSkKIHsKICAgICBBU1NFUlQoaXNv
bGF0ZSk7CiAgICAgVjhQZXJJc29sYXRlRGF0YSogZGF0YSA9IFY4UGVySXNvbGF0ZURhdGE6OmZy
b20oaXNvbGF0ZSk7CkBAIC03Niw3ICs3Niw3IEBAIHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uPiBW
OEFkYXB0b3JGdW5jdGlvbjo6d3JhcCh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IG9iamVjdCwKIHsK
ICAgICBpZiAob2JqZWN0LklzRW1wdHkoKSB8fCAhb2JqZWN0LT5Jc09iamVjdCgpKQogICAgICAg
ICByZXR1cm4gdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb24+KCk7Ci0gICAgdjg6OkhhbmRsZTx2ODo6
RnVuY3Rpb24+IGFkYXB0b3IgPSB2ODo6SGFuZGxlPHY4OjpGdW5jdGlvbj46OkNhc3QoZ2V0VGVt
cGxhdGUoaXNvbGF0ZSktPkdldEZ1bmN0aW9uKCkpOworICAgIHY4OjpIYW5kbGU8djg6OkZ1bmN0
aW9uPiBhZGFwdG9yID0gdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb24+OjpDYXN0KGdldFRlbXBsYXRl
KGlzb2xhdGUsIHdvcmxkVHlwZShpc29sYXRlKSktPkdldEZ1bmN0aW9uKCkpOwogICAgIGlmIChh
ZGFwdG9yLklzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9u
PigpOwogICAgIGFkYXB0b3ItPlNldE5hbWUodjhTdHJpbmcobmFtZS5zdHJpbmcoKSwgaXNvbGF0
ZSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhBZGFwdG9yRnVu
Y3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4QWRhcHRvckZ1bmN0aW9uLmgK
aW5kZXggZTNkNmJiNTFmNDQwYTRjNzcyNGFiY2UzZGU5MzA2OGRhZThjM2E1Ny4uNzgzNmViNGM2
NWI5NDMzNDFmYzJhMzRjN2FkM2VlZTRkOWZiZTU2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvdjgvVjhBZGFwdG9yRnVuY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy92OC9WOEFkYXB0b3JGdW5jdGlvbi5oCkBAIC01NSw3ICs1NSw3IEBAIHB1YmxpYzoK
ICAgICBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb24+IHdyYXAodjg6OkhhbmRsZTx2ODo6
T2JqZWN0PiwgY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCB2ODo6SXNvbGF0ZSopOwogICAgIHN0
YXRpYyB2ODo6SGFuZGxlPHY4OjpGdW5jdGlvbj4gZ2V0KHY4OjpIYW5kbGU8djg6Ok9iamVjdD4p
OwogCi0gICAgc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBnZXRU
ZW1wbGF0ZSh2ODo6SXNvbGF0ZSogPSAwKTsKKyAgICBzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6
OkZ1bmN0aW9uVGVtcGxhdGU+IGdldFRlbXBsYXRlKHY4OjpJc29sYXRlKiwgV3JhcHBlcldvcmxk
VHlwZSk7CiAgICAgc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBj
b25maWd1cmVUZW1wbGF0ZSh2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4pOwog
ICAgIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gaW52b2NhdGlvbkNhbGxiYWNrKGNvbnN0
IHY4OjpBcmd1bWVudHMmKTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy92OC9WOEJpbmRpbmcuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhCaW5kaW5n
LmNwcAppbmRleCA4NjNmNGZkNmFjMGE2NTViZTkyODRmN2NmOGNjMDQzOGQ0MjJmNTY3Li45ZGYy
OGU1NGZlMjBkZjBiNTdkNjBjZDBkN2EwMjM5MTU3NTc0MzUzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy92OC9WOEJpbmRpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L1Y4QmluZGluZy5jcHAKQEAgLTIyMSw3ICsyMjEsMTAgQEAgRE9NV2luZG93KiB0
b0RPTVdpbmRvdyh2ODo6SGFuZGxlPHY4OjpDb250ZXh0PiBjb250ZXh0KQogewogICAgIHY4OjpI
YW5kbGU8djg6Ok9iamVjdD4gZ2xvYmFsID0gY29udGV4dC0+R2xvYmFsKCk7CiAgICAgQVNTRVJU
KCFnbG9iYWwuSXNFbXB0eSgpKTsKLSAgICBnbG9iYWwgPSBnbG9iYWwtPkZpbmRJbnN0YW5jZUlu
UHJvdG90eXBlQ2hhaW4oVjhET01XaW5kb3c6OkdldFRlbXBsYXRlKGNvbnRleHQtPkdldElzb2xh
dGUoKSkpOworICAgIGdsb2JhbCA9IGdsb2JhbC0+RmluZEluc3RhbmNlSW5Qcm90b3R5cGVDaGFp
bihWOERPTVdpbmRvdzo6R2V0VGVtcGxhdGUoY29udGV4dC0+R2V0SXNvbGF0ZSgpLCBNYWluV29y
bGQpKTsKKyAgICBpZiAoIWdsb2JhbC5Jc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBWOERPTVdp
bmRvdzo6dG9OYXRpdmUoZ2xvYmFsKTsKKyAgICBnbG9iYWwgPSBnbG9iYWwtPkZpbmRJbnN0YW5j
ZUluUHJvdG90eXBlQ2hhaW4oVjhET01XaW5kb3c6OkdldFRlbXBsYXRlKGNvbnRleHQtPkdldElz
b2xhdGUoKSwgSXNvbGF0ZWRXb3JsZCkpOwogICAgIEFTU0VSVCghZ2xvYmFsLklzRW1wdHkoKSk7
CiAgICAgcmV0dXJuIFY4RE9NV2luZG93Ojp0b05hdGl2ZShnbG9iYWwpOwogfQpAQCAtMjI5LDEx
ICsyMzIsMTQgQEAgRE9NV2luZG93KiB0b0RPTVdpbmRvdyh2ODo6SGFuZGxlPHY4OjpDb250ZXh0
PiBjb250ZXh0KQogU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogdG9TY3JpcHRFeGVjdXRpb25Db250
ZXh0KHY4OjpIYW5kbGU8djg6OkNvbnRleHQ+IGNvbnRleHQpCiB7CiAgICAgdjg6OkhhbmRsZTx2
ODo6T2JqZWN0PiBnbG9iYWwgPSBjb250ZXh0LT5HbG9iYWwoKTsKLSAgICB2ODo6SGFuZGxlPHY4
OjpPYmplY3Q+IHdpbmRvd1dyYXBwZXIgPSBnbG9iYWwtPkZpbmRJbnN0YW5jZUluUHJvdG90eXBl
Q2hhaW4oVjhET01XaW5kb3c6OkdldFRlbXBsYXRlKGNvbnRleHQtPkdldElzb2xhdGUoKSkpOwor
ICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd2luZG93V3JhcHBlciA9IGdsb2JhbC0+RmluZElu
c3RhbmNlSW5Qcm90b3R5cGVDaGFpbihWOERPTVdpbmRvdzo6R2V0VGVtcGxhdGUoY29udGV4dC0+
R2V0SXNvbGF0ZSgpLCBNYWluV29ybGQpKTsKKyAgICBpZiAoIXdpbmRvd1dyYXBwZXIuSXNFbXB0
eSgpKQorICAgICAgICByZXR1cm4gVjhET01XaW5kb3c6OnRvTmF0aXZlKHdpbmRvd1dyYXBwZXIp
LT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CisgICAgd2luZG93V3JhcHBlciA9IGdsb2JhbC0+
RmluZEluc3RhbmNlSW5Qcm90b3R5cGVDaGFpbihWOERPTVdpbmRvdzo6R2V0VGVtcGxhdGUoY29u
dGV4dC0+R2V0SXNvbGF0ZSgpLCBJc29sYXRlZFdvcmxkKSk7CiAgICAgaWYgKCF3aW5kb3dXcmFw
cGVyLklzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIFY4RE9NV2luZG93Ojp0b05hdGl2ZSh3aW5k
b3dXcmFwcGVyKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwogI2lmIEVOQUJMRShXT1JLRVJT
KQotICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd29ya2VyV3JhcHBlciA9IGdsb2JhbC0+Rmlu
ZEluc3RhbmNlSW5Qcm90b3R5cGVDaGFpbihWOFdvcmtlckNvbnRleHQ6OkdldFRlbXBsYXRlKGNv
bnRleHQtPkdldElzb2xhdGUoKSkpOworICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd29ya2Vy
V3JhcHBlciA9IGdsb2JhbC0+RmluZEluc3RhbmNlSW5Qcm90b3R5cGVDaGFpbihWOFdvcmtlckNv
bnRleHQ6OkdldFRlbXBsYXRlKGNvbnRleHQtPkdldElzb2xhdGUoKSwgV29ya2VyV29ybGQpKTsK
ICAgICBpZiAoIXdvcmtlcldyYXBwZXIuSXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gVjhXb3Jr
ZXJDb250ZXh0Ojp0b05hdGl2ZSh3b3JrZXJXcmFwcGVyKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4
dCgpOwogI2VuZGlmCkBAIC0zMDUsNCArMzExLDI1IEBAIHZvaWQgY3Jhc2hJZlY4SXNEZWFkKCkK
ICAgICB9CiB9CiAKK1dyYXBwZXJXb3JsZFR5cGUgd29ybGRUeXBlKHY4OjpJc29sYXRlKiBpc29s
YXRlKQoreworICAgIEFTU0VSVChpc29sYXRlKTsKKyAgICBWOFBlcklzb2xhdGVEYXRhKiBkYXRh
ID0gVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKTsKKyAgICAvLyBUT0RPOiBSZW5hbWUg
ZG9tRGF0YVN0b3JlKCkgdG8gd29ya2VyRGF0YVN0b3JlKCkuCisgICAgaWYgKCFkYXRhLT5kb21E
YXRhU3RvcmUoKSkKKyAgICAgICAgcmV0dXJuIHdvcmxkVHlwZUluTWFpblRocmVhZChpc29sYXRl
KTsKKyAgICByZXR1cm4gV29ya2VyV29ybGQ7Cit9CisKK1dyYXBwZXJXb3JsZFR5cGUgd29ybGRU
eXBlSW5NYWluVGhyZWFkKHY4OjpJc29sYXRlKiBpc29sYXRlKQoreworICAgIGlmICghRE9NV3Jh
cHBlcldvcmxkOjppc29sYXRlZFdvcmxkc0V4aXN0KCkpCisgICAgICAgIHJldHVybiBNYWluV29y
bGQ7CisgICAgQVNTRVJUKCF2ODo6Q29udGV4dDo6R2V0RW50ZXJlZCgpLklzRW1wdHkoKSk7Cisg
ICAgRE9NV3JhcHBlcldvcmxkKiBpc29sYXRlZFdvcmxkID0gRE9NV3JhcHBlcldvcmxkOjpnZXRX
b3JsZCh2ODo6Q29udGV4dDo6R2V0RW50ZXJlZCgpKTsKKyAgICBpZiAoaXNvbGF0ZWRXb3JsZCkK
KyAgICAgICAgcmV0dXJuIElzb2xhdGVkV29ybGQ7CisgICAgcmV0dXJuIE1haW5Xb3JsZDsKK30K
KwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvVjhCaW5kaW5nLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEJpbmRp
bmcuaAppbmRleCAxMmFhYmU3NDkxMmMzMmNhNDhkYTU3ZjFjYjgxOTVhMTNmMTFjNTM2Li43Zjli
OTE3NDhmN2U2ODkzOTFlMTI0OWFiMTZmZDJkYzRlYzI3YWJhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy92OC9WOEJpbmRpbmcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9WOEJpbmRpbmcuaApAQCAtNDY2LDYgKzQ2Niw5IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogICAgIHZvaWQgY3Jhc2hJZlY4SXNEZWFkKCk7CiAKKyAgICBXcmFwcGVyV29ybGRUeXBl
IHdvcmxkVHlwZSh2ODo6SXNvbGF0ZSopOworICAgIFdyYXBwZXJXb3JsZFR5cGUgd29ybGRUeXBl
SW5NYWluVGhyZWFkKHY4OjpJc29sYXRlKik7CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAog
I2VuZGlmIC8vIFY4QmluZGluZ19oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy92OC9WOERPTVdpbmRvd1NoZWxsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4
RE9NV2luZG93U2hlbGwuY3BwCmluZGV4IDk1NDY5MDQxOGQwZjU3YjVmN2M3ZDhhMmJjZThhMjI4
NmQzZTNhNWUuLjhiZGZlOTY0MDFlY2M3YjViNjY3ZmQyOTA4YzVlMGRjYTI0MzhmMzYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NV2luZG93U2hlbGwuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NV2luZG93U2hlbGwuY3BwCkBAIC0z
Miw2ICszMiw3IEBACiAjaW5jbHVkZSAiVjhET01XaW5kb3dTaGVsbC5oIgogCiAjaW5jbHVkZSAi
Q29udGVudFNlY3VyaXR5UG9saWN5LmgiCisjaW5jbHVkZSAiRE9NV3JhcHBlcldvcmxkLmgiCiAj
aW5jbHVkZSAiRGF0ZUV4dGVuc2lvbi5oIgogI2luY2x1ZGUgIkRvY3VtZW50TG9hZGVyLmgiCiAj
aW5jbHVkZSAiRnJhbWUuaCIKQEAgLTE1Myw3ICsxNTQsNyBAQCB2b2lkIFY4RE9NV2luZG93U2hl
bGw6OmNsZWFyRm9yTmF2aWdhdGlvbigpCiAgICAgLy8gd2lsbCBiZSBwcm90ZWN0ZWQgYnkgdGhl
IHNlY3VyaXR5IGNoZWNrcyBvbiB0aGUgRE9NV2luZG93IHdyYXBwZXIuCiAgICAgY2xlYXJEb2N1
bWVudFByb3BlcnR5KCk7CiAKLSAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdpbmRvd1dyYXBw
ZXIgPSBtX2dsb2JhbC0+RmluZEluc3RhbmNlSW5Qcm90b3R5cGVDaGFpbihWOERPTVdpbmRvdzo6
R2V0VGVtcGxhdGUobV9pc29sYXRlKSk7CisgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3aW5k
b3dXcmFwcGVyID0gbV9nbG9iYWwtPkZpbmRJbnN0YW5jZUluUHJvdG90eXBlQ2hhaW4oVjhET01X
aW5kb3c6OkdldFRlbXBsYXRlKG1faXNvbGF0ZSwgd29ybGRUeXBlSW5NYWluVGhyZWFkKG1faXNv
bGF0ZSkpKTsKICAgICBBU1NFUlQoIXdpbmRvd1dyYXBwZXIuSXNFbXB0eSgpKTsKICAgICB3aW5k
b3dXcmFwcGVyLT5UdXJuT25BY2Nlc3NDaGVjaygpOwogICAgIG1fY29udGV4dC0+RGV0YWNoR2xv
YmFsKCk7CkBAIC0zMTAsNiArMzExLDcgQEAgdm9pZCBWOERPTVdpbmRvd1NoZWxsOjpjcmVhdGVD
b250ZXh0KCkKIAogYm9vbCBWOERPTVdpbmRvd1NoZWxsOjppbnN0YWxsRE9NV2luZG93KCkKIHsK
KyAgICBET01XcmFwcGVyV29ybGQ6OnNldEluaXRpYWxpemluZ1dpbmRvdyh0cnVlKTsKICAgICBE
T01XaW5kb3cqIHdpbmRvdyA9IG1fZnJhbWUtPmRvY3VtZW50KCktPmRvbVdpbmRvdygpOwogICAg
IHY4OjpMb2NhbDx2ODo6T2JqZWN0PiB3aW5kb3dXcmFwcGVyID0gVjhPYmplY3RDb25zdHJ1Y3Rv
cjo6bmV3SW5zdGFuY2UoVjhQZXJDb250ZXh0RGF0YTo6ZnJvbShtX2NvbnRleHQuZ2V0KCkpLT5j
b25zdHJ1Y3RvckZvclR5cGUoJlY4RE9NV2luZG93OjppbmZvKSk7CiAgICAgaWYgKHdpbmRvd1dy
YXBwZXIuSXNFbXB0eSgpKQpAQCAtMzM2LDYgKzMzOCw3IEBAIGJvb2wgVjhET01XaW5kb3dTaGVs
bDo6aW5zdGFsbERPTVdpbmRvdygpCiAgICAgVjhET01XcmFwcGVyOjpzZXROYXRpdmVJbmZvKGlu
bmVyR2xvYmFsT2JqZWN0LCAmVjhET01XaW5kb3c6OmluZm8sIHdpbmRvdyk7CiAgICAgaW5uZXJH
bG9iYWxPYmplY3QtPlNldFByb3RvdHlwZSh3aW5kb3dXcmFwcGVyKTsKICAgICBWOERPTVdyYXBw
ZXI6OmFzc29jaWF0ZU9iamVjdFdpdGhXcmFwcGVyKFBhc3NSZWZQdHI8RE9NV2luZG93Pih3aW5k
b3cpLCAmVjhET01XaW5kb3c6OmluZm8sIHdpbmRvd1dyYXBwZXIsIG1faXNvbGF0ZSwgV3JhcHBl
ckNvbmZpZ3VyYXRpb246OkRlcGVuZGVudCk7CisgICAgRE9NV3JhcHBlcldvcmxkOjpzZXRJbml0
aWFsaXppbmdXaW5kb3coZmFsc2UpOwogICAgIHJldHVybiB0cnVlOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTVdyYXBwZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvdjgvVjhET01XcmFwcGVyLmNwcAppbmRleCA0ZDhjMjI2ZjNlMjcyZjBl
MzU5NjIxZThkNDA2OGMzMTk0YjUzZmI4Li5jNTg1YWExYmFjMWQ2MmI0NTg4NmQxM2JlNDY3YzJj
MTczNzI2MGNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTVdy
YXBwZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NV3JhcHBlci5j
cHAKQEAgLTc5LDcgKzc5LDcgQEAgdjg6OkxvY2FsPHY4OjpPYmplY3Q+IFY4RE9NV3JhcHBlcjo6
Y3JlYXRlV3JhcHBlcih2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNyZWF0aW8KICAgICBWOFdyYXBw
ZXJJbnN0YW50aWF0aW9uU2NvcGUgc2NvcGUoY3JlYXRpb25Db250ZXh0KTsKIAogICAgIFY4UGVy
Q29udGV4dERhdGEqIHBlckNvbnRleHREYXRhID0gVjhQZXJDb250ZXh0RGF0YTo6ZnJvbShzY29w
ZS5jb250ZXh0KCkpOwotICAgIHY4OjpMb2NhbDx2ODo6T2JqZWN0PiB3cmFwcGVyID0gcGVyQ29u
dGV4dERhdGEgPyBwZXJDb250ZXh0RGF0YS0+Y3JlYXRlV3JhcHBlckZyb21DYWNoZSh0eXBlKSA6
IFY4T2JqZWN0Q29uc3RydWN0b3I6Om5ld0luc3RhbmNlKHR5cGUtPmdldFRlbXBsYXRlKGlzb2xh
dGUpLT5HZXRGdW5jdGlvbigpKTsKKyAgICB2ODo6TG9jYWw8djg6Ok9iamVjdD4gd3JhcHBlciA9
IHBlckNvbnRleHREYXRhID8gcGVyQ29udGV4dERhdGEtPmNyZWF0ZVdyYXBwZXJGcm9tQ2FjaGUo
dHlwZSkgOiBWOE9iamVjdENvbnN0cnVjdG9yOjpuZXdJbnN0YW5jZSh0eXBlLT5nZXRUZW1wbGF0
ZShpc29sYXRlLCB3b3JsZFR5cGVJbk1haW5UaHJlYWQoaXNvbGF0ZSkpLT5HZXRGdW5jdGlvbigp
KTsKIAogICAgIGlmICh0eXBlID09ICZWOEhUTUxEb2N1bWVudDo6aW5mbyAmJiAhd3JhcHBlci5J
c0VtcHR5KCkpCiAgICAgICAgIHdyYXBwZXIgPSBWOEhUTUxEb2N1bWVudDo6d3JhcEluU2hhZG93
T2JqZWN0KHdyYXBwZXIsIHN0YXRpY19jYXN0PE5vZGUqPihpbXBsKSwgaXNvbGF0ZSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEluaXRpYWxpemVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4SW5pdGlhbGl6ZXIuY3BwCmluZGV4IGNiM2JjNmRj
MWVjY2EyYWJiOTQ1Yjk5ZTM0NzQwNDRkMjIzMjhiMTYuLmUyMWMwZDVkODRjMWM0ZDNkMmQ4NmI4
YTgzZmU2YWZiYmZlZmFlMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L1Y4SW5pdGlhbGl6ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4SW5p
dGlhbGl6ZXIuY3BwCkBAIC01MSw3ICs1MSw3IEBAIHN0YXRpYyBGcmFtZSogZmluZEZyYW1lKHY4
OjpMb2NhbDx2ODo6T2JqZWN0PiBob3N0LCB2ODo6TG9jYWw8djg6OlZhbHVlPiBkYXRhLCB2CiAg
ICAgV3JhcHBlclR5cGVJbmZvKiB0eXBlID0gV3JhcHBlclR5cGVJbmZvOjp1bndyYXAoZGF0YSk7
CiAKICAgICBpZiAoVjhET01XaW5kb3c6OmluZm8uZXF1YWxzKHR5cGUpKSB7Ci0gICAgICAgIHY4
OjpIYW5kbGU8djg6Ok9iamVjdD4gd2luZG93V3JhcHBlciA9IGhvc3QtPkZpbmRJbnN0YW5jZUlu
UHJvdG90eXBlQ2hhaW4oVjhET01XaW5kb3c6OkdldFRlbXBsYXRlKGlzb2xhdGUpKTsKKyAgICAg
ICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3aW5kb3dXcmFwcGVyID0gaG9zdC0+RmluZEluc3Rh
bmNlSW5Qcm90b3R5cGVDaGFpbihWOERPTVdpbmRvdzo6R2V0VGVtcGxhdGUoaXNvbGF0ZSwgd29y
bGRUeXBlSW5NYWluVGhyZWFkKGlzb2xhdGUpKSk7CiAgICAgICAgIGlmICh3aW5kb3dXcmFwcGVy
LklzRW1wdHkoKSkKICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICByZXR1cm4gVjhET01X
aW5kb3c6OnRvTmF0aXZlKHdpbmRvd1dyYXBwZXIpLT5mcmFtZSgpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhQZXJDb250ZXh0RGF0YS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9WOFBlckNvbnRleHREYXRhLmNwcAppbmRleCBiMzkyMzIzYThmZGU3
ZWM3NGEzM2YwMmFhOTVjNjE2MmVhODY1NjQ3Li44NmVlYjEyM2NiOGM2YzYzMWQ2MmRlZThlZjU4
NGRkOWQ1MDIzOGE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOFBl
ckNvbnRleHREYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOFBlckNv
bnRleHREYXRhLmNwcApAQCAtMTE1LDcgKzExNSw3IEBAIHY4OjpMb2NhbDx2ODo6RnVuY3Rpb24+
IFY4UGVyQ29udGV4dERhdGE6OmNvbnN0cnVjdG9yRm9yVHlwZVNsb3dDYXNlKFdyYXBwZXJUeXBl
CiAgICAgQVNTRVJUKCFtX29iamVjdFByb3RvdHlwZS5pc0VtcHR5KCkpOwogCiAgICAgdjg6OkNv
bnRleHQ6OlNjb3BlIHNjb3BlKG1fY29udGV4dCk7Ci0gICAgdjg6OkhhbmRsZTx2ODo6RnVuY3Rp
b25UZW1wbGF0ZT4gZnVuY3Rpb25UZW1wbGF0ZSA9IHR5cGUtPmdldFRlbXBsYXRlKG1fY29udGV4
dC0+R2V0SXNvbGF0ZSgpKTsKKyAgICB2ODo6SGFuZGxlPHY4OjpGdW5jdGlvblRlbXBsYXRlPiBm
dW5jdGlvblRlbXBsYXRlID0gdHlwZS0+Z2V0VGVtcGxhdGUobV9jb250ZXh0LT5HZXRJc29sYXRl
KCksIHdvcmxkVHlwZShtX2NvbnRleHQtPkdldElzb2xhdGUoKSkpOwogICAgIC8vIEdldHRpbmcg
dGhlIGZ1bmN0aW9uIG1pZ2h0IGZhaWwgaWYgd2UncmUgcnVubmluZyBvdXQgb2Ygc3RhY2sgb3Ig
bWVtb3J5LgogICAgIHY4OjpUcnlDYXRjaCB0cnlDYXRjaDsKICAgICB2ODo6TG9jYWw8djg6OkZ1
bmN0aW9uPiBmdW5jdGlvbiA9IGZ1bmN0aW9uVGVtcGxhdGUtPkdldEZ1bmN0aW9uKCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9Xb3JrZXJTY3JpcHRDb250cm9sbGVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1dvcmtlclNjcmlwdENvbnRyb2xsZXIu
Y3BwCmluZGV4IGJjNDYwOTM4Mjc5ZmU0ZGYzM2EyYTgxNTAwYzY4YzFhNjMwNTc5OTEuLmI0Mzgz
NTM2ODY1MGQ0MzY5ZjZmZmNlMWUyZjAxZGM5NDAyNmQ1MzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L1dvcmtlclNjcmlwdENvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1dvcmtlclNjcmlwdENvbnRyb2xsZXIuY3BwCkBAIC00Niw2
ICs0Niw3IEBACiAjaW5jbHVkZSAiV29ya2VyQ29udGV4dC5oIgogI2luY2x1ZGUgIldvcmtlck9i
amVjdFByb3h5LmgiCiAjaW5jbHVkZSAiV29ya2VyVGhyZWFkLmgiCisjaW5jbHVkZSAiV3JhcHBl
clR5cGVJbmZvLmgiCiAjaW5jbHVkZSA8djguaD4KIAogI2lmIFBMQVRGT1JNKENIUk9NSVVNKQpA
QCAtNjMsNyArNjQsNyBAQCBXb3JrZXJTY3JpcHRDb250cm9sbGVyOjpXb3JrZXJTY3JpcHRDb250
cm9sbGVyKFdvcmtlckNvbnRleHQqIHdvcmtlckNvbnRleHQpCiB7CiAgICAgbV9pc29sYXRlLT5F
bnRlcigpOwogICAgIFY4UGVySXNvbGF0ZURhdGEqIGRhdGEgPSBWOFBlcklzb2xhdGVEYXRhOjpj
cmVhdGUobV9pc29sYXRlKTsKLSAgICBtX2RvbURhdGFTdG9yZSA9IGFkb3B0UHRyKG5ldyBET01E
YXRhU3RvcmUoRE9NRGF0YVN0b3JlOjpXb3JrZXIpKTsKKyAgICBtX2RvbURhdGFTdG9yZSA9IGFk
b3B0UHRyKG5ldyBET01EYXRhU3RvcmUoV29ya2VyV29ybGQpKTsKICAgICBkYXRhLT5zZXRET01E
YXRhU3RvcmUobV9kb21EYXRhU3RvcmUuZ2V0KCkpOwogCiAgICAgVjhJbml0aWFsaXplcjo6aW5p
dGlhbGl6ZVdvcmtlcihtX2lzb2xhdGUpOwpAQCAtMjQ5LDcgKzI1MCw3IEBAIFdvcmtlclNjcmlw
dENvbnRyb2xsZXIqIFdvcmtlclNjcmlwdENvbnRyb2xsZXI6OmNvbnRyb2xsZXJGb3JDb250ZXh0
KCkKICAgICAgICAgcmV0dXJuIDA7CiAgICAgdjg6OkhhbmRsZTx2ODo6Q29udGV4dD4gY29udGV4
dCA9IHY4OjpDb250ZXh0OjpHZXRDdXJyZW50KCk7CiAgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0
PiBnbG9iYWwgPSBjb250ZXh0LT5HbG9iYWwoKTsKLSAgICBnbG9iYWwgPSBnbG9iYWwtPkZpbmRJ
bnN0YW5jZUluUHJvdG90eXBlQ2hhaW4oVjhXb3JrZXJDb250ZXh0OjpHZXRUZW1wbGF0ZShjb250
ZXh0LT5HZXRJc29sYXRlKCkpKTsKKyAgICBnbG9iYWwgPSBnbG9iYWwtPkZpbmRJbnN0YW5jZUlu
UHJvdG90eXBlQ2hhaW4oVjhXb3JrZXJDb250ZXh0OjpHZXRUZW1wbGF0ZShjb250ZXh0LT5HZXRJ
c29sYXRlKCksIFdvcmtlcldvcmxkKSk7CiAgICAgLy8gUmV0dXJuIDAgaWYgdGhlIGN1cnJlbnQg
ZXhlY3V0aW5nIGNvbnRleHQgaXMgbm90IHRoZSB3b3JrZXIgY29udGV4dC4KICAgICBpZiAoZ2xv
YmFsLklzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9XcmFwcGVyVHlwZUluZm8uaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L1dyYXBwZXJUeXBlSW5mby5oCmluZGV4IGIzMTBhZjlhN2QyZjgwMTIwNDQ4Nzg2YTg5
MGYzYmZhODYyNjY1MjYuLmRjMmE1ZWVlNzAxMmJmZDQ4NzEwNjNkMTY0NjU5ZDM4ZThlMjA2MjIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1dyYXBwZXJUeXBlSW5mby5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1dyYXBwZXJUeXBlSW5mby5oCkBAIC00
Nyw3ICs0NywxMyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgc3RhdGljIGNvbnN0IHVpbnQx
Nl90IHY4RE9NTm9kZUNsYXNzSWQgPSAxOwogICAgIHN0YXRpYyBjb25zdCB1aW50MTZfdCB2OERP
TU9iamVjdENsYXNzSWQgPSAyOwogCi0gICAgdHlwZWRlZiB2ODo6UGVyc2lzdGVudDx2ODo6RnVu
Y3Rpb25UZW1wbGF0ZT4gKCpHZXRUZW1wbGF0ZUZ1bmN0aW9uKSh2ODo6SXNvbGF0ZSopOworICAg
IGVudW0gV3JhcHBlcldvcmxkVHlwZSB7CisgICAgICAgIE1haW5Xb3JsZCwKKyAgICAgICAgSXNv
bGF0ZWRXb3JsZCwKKyAgICAgICAgV29ya2VyV29ybGQKKyAgICB9OworCisgICAgdHlwZWRlZiB2
ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gKCpHZXRUZW1wbGF0ZUZ1bmN0aW9u
KSh2ODo6SXNvbGF0ZSosIFdyYXBwZXJXb3JsZFR5cGUpOwogICAgIHR5cGVkZWYgdm9pZCAoKkRl
cmVmT2JqZWN0RnVuY3Rpb24pKHZvaWQqKTsKICAgICB0eXBlZGVmIEFjdGl2ZURPTU9iamVjdCog
KCpUb0FjdGl2ZURPTU9iamVjdEZ1bmN0aW9uKSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+KTsKICAg
ICB0eXBlZGVmIEV2ZW50VGFyZ2V0KiAoKlRvRXZlbnRUYXJnZXRGdW5jdGlvbikodjg6OkhhbmRs
ZTx2ODo6T2JqZWN0Pik7CkBAIC04NSw3ICs5MSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQogICAgICAgICAKLSAgICAgICAgdjg6
OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IGdldFRlbXBsYXRlKHY4OjpJc29sYXRl
KiBpc29sYXRlKSB7IHJldHVybiBnZXRUZW1wbGF0ZUZ1bmN0aW9uKGlzb2xhdGUpOyB9CisgICAg
ICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBnZXRUZW1wbGF0ZSh2ODo6
SXNvbGF0ZSogaXNvbGF0ZSwgV3JhcHBlcldvcmxkVHlwZSB3b3JsZFR5cGUpIHsgcmV0dXJuIGdl
dFRlbXBsYXRlRnVuY3Rpb24oaXNvbGF0ZSwgd29ybGRUeXBlKTsgfQogICAgICAgICAKICAgICAg
ICAgdm9pZCBkZXJlZk9iamVjdCh2b2lkKiBvYmplY3QpCiAgICAgICAgIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERPTVdpbmRvd0N1c3RvbS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhET01XaW5kb3dDdXN0b20uY3Bw
CmluZGV4IDE1ZDhiYjFkNmYwZGVlODdlMTc0OGVkMDUwZTNmYThmY2FlMTkyZDMuLjFmMmIwYzkz
YzM5M2RmNTBmOTA1MzcyOWQ0ZGIxNzNmYTgxNzZlNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERPTVdpbmRvd0N1c3RvbS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RE9NV2luZG93Q3VzdG9tLmNwcApAQCAtMTQ2
LDcgKzE0Niw3IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBXaW5kb3dTZXRUaW1lb3V0SW1wbChj
b25zdCB2ODo6QXJndW1lbnRzJiBhcmdzLCBib29sIHNpbmdsCiAKIHY4OjpIYW5kbGU8djg6OlZh
bHVlPiBWOERPTVdpbmRvdzo6ZXZlbnRBdHRyR2V0dGVyQ3VzdG9tKHY4OjpMb2NhbDx2ODo6U3Ry
aW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewotICAgIHY4OjpIYW5k
bGU8djg6Ok9iamVjdD4gaG9sZGVyID0gaW5mby5UaGlzKCktPkZpbmRJbnN0YW5jZUluUHJvdG90
eXBlQ2hhaW4oVjhET01XaW5kb3c6OkdldFRlbXBsYXRlKGluZm8uR2V0SXNvbGF0ZSgpKSk7Cisg
ICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBob2xkZXIgPSBpbmZvLlRoaXMoKS0+RmluZEluc3Rh
bmNlSW5Qcm90b3R5cGVDaGFpbihWOERPTVdpbmRvdzo6R2V0VGVtcGxhdGUoaW5mby5HZXRJc29s
YXRlKCksIHdvcmxkVHlwZUluTWFpblRocmVhZChpbmZvLkdldElzb2xhdGUoKSkpKTsKICAgICBp
ZiAoaG9sZGVyLklzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKIApA
QCAtMTY4LDcgKzE2OCw3IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOERPTVdpbmRvdzo6ZXZl
bnRBdHRyR2V0dGVyQ3VzdG9tKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuCiAKIHZvaWQgVjhET01X
aW5kb3c6OmV2ZW50QXR0clNldHRlckN1c3RvbSh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwg
djg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8p
CiB7Ci0gICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBob2xkZXIgPSBpbmZvLlRoaXMoKS0+Rmlu
ZEluc3RhbmNlSW5Qcm90b3R5cGVDaGFpbihWOERPTVdpbmRvdzo6R2V0VGVtcGxhdGUoaW5mby5H
ZXRJc29sYXRlKCkpKTsKKyAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGhvbGRlciA9IGluZm8u
VGhpcygpLT5GaW5kSW5zdGFuY2VJblByb3RvdHlwZUNoYWluKFY4RE9NV2luZG93OjpHZXRUZW1w
bGF0ZShpbmZvLkdldElzb2xhdGUoKSwgd29ybGRUeXBlSW5NYWluVGhyZWFkKGluZm8uR2V0SXNv
bGF0ZSgpKSkpOwogICAgIGlmIChob2xkZXIuSXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAK
QEAgLTM0NCw3ICszNDQsNyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhET01XaW5kb3c6OnBv
c3RNZXNzYWdlTWV0aG9kQ3VzdG9tKGNvbnN0IHY4OjpBcmd1bWVudHMmCiAvLyBzd2l0Y2hpbmcg
Y29udGV4dCBvZiByZWNlaXZlci4gSSBjb25zaWRlciBpdCBpcyBkYW5nZXJvdXMuCiB2ODo6SGFu
ZGxlPHY4OjpWYWx1ZT4gVjhET01XaW5kb3c6OnRvU3RyaW5nTWV0aG9kQ3VzdG9tKGNvbnN0IHY4
OjpBcmd1bWVudHMmIGFyZ3MpCiB7Ci0gICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBkb21XcmFw
cGVyID0gYXJncy5UaGlzKCktPkZpbmRJbnN0YW5jZUluUHJvdG90eXBlQ2hhaW4oVjhET01XaW5k
b3c6OkdldFRlbXBsYXRlKGFyZ3MuR2V0SXNvbGF0ZSgpKSk7CisgICAgdjg6OkhhbmRsZTx2ODo6
T2JqZWN0PiBkb21XcmFwcGVyID0gYXJncy5UaGlzKCktPkZpbmRJbnN0YW5jZUluUHJvdG90eXBl
Q2hhaW4oVjhET01XaW5kb3c6OkdldFRlbXBsYXRlKGFyZ3MuR2V0SXNvbGF0ZSgpLCB3b3JsZFR5
cGVJbk1haW5UaHJlYWQoYXJncy5HZXRJc29sYXRlKCkpKSk7CiAgICAgaWYgKGRvbVdyYXBwZXIu
SXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gYXJncy5UaGlzKCktPk9iamVjdFByb3RvVG9TdHJp
bmcoKTsKICAgICByZXR1cm4gZG9tV3JhcHBlci0+T2JqZWN0UHJvdG9Ub1N0cmluZygpOwpAQCAt
NTEwLDcgKzUxMCw3IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOERPTVdpbmRvdzo6c2V0SW50
ZXJ2YWxNZXRob2RDdXN0b20oY29uc3Qgdjg6OkFyZ3VtZW50cyYKIGJvb2wgVjhET01XaW5kb3c6
Om5hbWVkU2VjdXJpdHlDaGVjayh2ODo6TG9jYWw8djg6Ok9iamVjdD4gaG9zdCwgdjg6OkxvY2Fs
PHY4OjpWYWx1ZT4ga2V5LCB2ODo6QWNjZXNzVHlwZSB0eXBlLCB2ODo6TG9jYWw8djg6OlZhbHVl
PikKIHsKICAgICB2ODo6SXNvbGF0ZSogaXNvbGF0ZSA9IHY4OjpJc29sYXRlOjpHZXRDdXJyZW50
KCk7Ci0gICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3aW5kb3cgPSBob3N0LT5GaW5kSW5zdGFu
Y2VJblByb3RvdHlwZUNoYWluKFY4RE9NV2luZG93OjpHZXRUZW1wbGF0ZShpc29sYXRlKSk7Cisg
ICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3aW5kb3cgPSBob3N0LT5GaW5kSW5zdGFuY2VJblBy
b3RvdHlwZUNoYWluKFY4RE9NV2luZG93OjpHZXRUZW1wbGF0ZShpc29sYXRlLCB3b3JsZFR5cGVJ
bk1haW5UaHJlYWQoaXNvbGF0ZSkpKTsKICAgICBpZiAod2luZG93LklzRW1wdHkoKSkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOyAgLy8gdGhlIGZyYW1lIGlzIGdvbmUuCiAKQEAgLTU0NCw3ICs1NDQs
NyBAQCBib29sIFY4RE9NV2luZG93OjpuYW1lZFNlY3VyaXR5Q2hlY2sodjg6OkxvY2FsPHY4OjpP
YmplY3Q+IGhvc3QsIHY4OjpMb2NhbDx2ODo6VgogYm9vbCBWOERPTVdpbmRvdzo6aW5kZXhlZFNl
Y3VyaXR5Q2hlY2sodjg6OkxvY2FsPHY4OjpPYmplY3Q+IGhvc3QsIHVpbnQzMl90IGluZGV4LCB2
ODo6QWNjZXNzVHlwZSB0eXBlLCB2ODo6TG9jYWw8djg6OlZhbHVlPikKIHsKICAgICB2ODo6SXNv
bGF0ZSogaXNvbGF0ZSA9IHY4OjpJc29sYXRlOjpHZXRDdXJyZW50KCk7Ci0gICAgdjg6OkhhbmRs
ZTx2ODo6T2JqZWN0PiB3aW5kb3cgPSBob3N0LT5GaW5kSW5zdGFuY2VJblByb3RvdHlwZUNoYWlu
KFY4RE9NV2luZG93OjpHZXRUZW1wbGF0ZShpc29sYXRlKSk7CisgICAgdjg6OkhhbmRsZTx2ODo6
T2JqZWN0PiB3aW5kb3cgPSBob3N0LT5GaW5kSW5zdGFuY2VJblByb3RvdHlwZUNoYWluKFY4RE9N
V2luZG93OjpHZXRUZW1wbGF0ZShpc29sYXRlLCB3b3JsZFR5cGVJbk1haW5UaHJlYWQoaXNvbGF0
ZSkpKTsKICAgICBpZiAod2luZG93LklzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
CkBAIC01ODYsNyArNTg2LDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjgoRE9NV2luZG93
KiB3aW5kb3csIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3JlYXRpb25Db24KICAgICAvLyBuZWNl
c3NhcmlseSB0aGUgZmlyc3QgZ2xvYmFsIG9iamVjdCBhc3NvY2lhdGVkIHdpdGggdGhhdCBET01X
aW5kb3cuCiAgICAgdjg6OkhhbmRsZTx2ODo6Q29udGV4dD4gY3VycmVudENvbnRleHQgPSB2ODo6
Q29udGV4dDo6R2V0Q3VycmVudCgpOwogICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3VycmVu
dEdsb2JhbCA9IGN1cnJlbnRDb250ZXh0LT5HbG9iYWwoKTsKLSAgICB2ODo6SGFuZGxlPHY4OjpP
YmplY3Q+IHdpbmRvd1dyYXBwZXIgPSBjdXJyZW50R2xvYmFsLT5GaW5kSW5zdGFuY2VJblByb3Rv
dHlwZUNoYWluKFY4RE9NV2luZG93OjpHZXRUZW1wbGF0ZShpc29sYXRlKSk7CisgICAgdjg6Okhh
bmRsZTx2ODo6T2JqZWN0PiB3aW5kb3dXcmFwcGVyID0gY3VycmVudEdsb2JhbC0+RmluZEluc3Rh
bmNlSW5Qcm90b3R5cGVDaGFpbihWOERPTVdpbmRvdzo6R2V0VGVtcGxhdGUoaXNvbGF0ZSwgd29y
bGRUeXBlSW5NYWluVGhyZWFkKGlzb2xhdGUpKSk7CiAgICAgaWYgKCF3aW5kb3dXcmFwcGVyLklz
RW1wdHkoKSkgewogICAgICAgICBpZiAoVjhET01XaW5kb3c6OnRvTmF0aXZlKHdpbmRvd1dyYXBw
ZXIpID09IHdpbmRvdykKICAgICAgICAgICAgIHJldHVybiBjdXJyZW50R2xvYmFsOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTERvY3VtZW50Q3Vz
dG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxEb2N1bWVu
dEN1c3RvbS5jcHAKaW5kZXggNWMxZjY1ZmY1MTlkYTJlYzU3ODdlNDcyMDBlNzA2NThmYWNhODIx
NC4uNmQ1Y2M5NGRiMzliOTA2NTQ3OWJkMDUwN2MwMWQwNjhmMGI1MzZhZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTERvY3VtZW50Q3VzdG9tLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MRG9jdW1lbnRD
dXN0b20uY3BwCkBAIC02MCw3ICs2MCw3IEBAIHY4OjpMb2NhbDx2ODo6T2JqZWN0PiBWOEhUTUxE
b2N1bWVudDo6d3JhcEluU2hhZG93T2JqZWN0KHY4OjpMb2NhbDx2ODo6T2JqZWN0PiB3CiAgICAg
ICAgIGlmIChzaGFkb3dUZW1wbGF0ZS5Jc0VtcHR5KCkpCiAgICAgICAgICAgICByZXR1cm4gdjg6
OkxvY2FsPHY4OjpPYmplY3Q+KCk7CiAgICAgICAgIHNoYWRvd1RlbXBsYXRlLT5TZXRDbGFzc05h
bWUodjg6OlN0cmluZzo6TmV3U3ltYm9sKCJIVE1MRG9jdW1lbnQiKSk7Ci0gICAgICAgIHNoYWRv
d1RlbXBsYXRlLT5Jbmhlcml0KFY4SFRNTERvY3VtZW50OjpHZXRUZW1wbGF0ZShpc29sYXRlKSk7
CisgICAgICAgIHNoYWRvd1RlbXBsYXRlLT5Jbmhlcml0KFY4SFRNTERvY3VtZW50OjpHZXRUZW1w
bGF0ZShpc29sYXRlLCB3b3JsZFR5cGVJbk1haW5UaHJlYWQoaXNvbGF0ZSkpKTsKICAgICAgICAg
c2hhZG93VGVtcGxhdGUtPkluc3RhbmNlVGVtcGxhdGUoKS0+U2V0SW50ZXJuYWxGaWVsZENvdW50
KFY4SFRNTERvY3VtZW50OjppbnRlcm5hbEZpZWxkQ291bnQpOwogICAgIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTEltYWdlRWxlbWVudENv
bnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxJ
bWFnZUVsZW1lbnRDb25zdHJ1Y3Rvci5jcHAKaW5kZXggOTM1NWVlM2RmNWYwMGQ2ZWU0MDg1MTYy
YjY1NTVjNWNmNDI4MWMyNS4uOWU3OGFiZjVkNThhYjU4MWJjZmNjM2U3NTkxMWU4OWViYTU4ZGIw
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTElt
YWdlRWxlbWVudENvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92
OC9jdXN0b20vVjhIVE1MSW1hZ2VFbGVtZW50Q29uc3RydWN0b3IuY3BwCkBAIC04MSw3ICs4MSw3
IEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdjhIVE1MSW1hZ2VFbGVtZW50Q29uc3Ry
dWN0b3JNZXRob2RDdXN0b20oY29uc3Qgdjg6CiAgICAgcmV0dXJuIHdyYXBwZXI7CiB9CiAKLXY4
OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBWOEhUTUxJbWFnZUVsZW1lbnRDb25z
dHJ1Y3Rvcjo6R2V0VGVtcGxhdGUodjg6Oklzb2xhdGUqIGlzb2xhdGUpCit2ODo6UGVyc2lzdGVu
dDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gVjhIVE1MSW1hZ2VFbGVtZW50Q29uc3RydWN0b3I6Okdl
dFRlbXBsYXRlKHY4OjpJc29sYXRlKiBpc29sYXRlLCBXcmFwcGVyV29ybGRUeXBlIHdvcmxkVHlw
ZSkKIHsKICAgICBzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IGNh
Y2hlZFRlbXBsYXRlOwogICAgIGlmICghY2FjaGVkVGVtcGxhdGUuSXNFbXB0eSgpKQpAQCAtOTMs
NyArOTMsNyBAQCB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gVjhIVE1MSW1h
Z2VFbGVtZW50Q29uc3RydWN0b3I6OkdldFRlbXBsYXRlKAogICAgIHY4OjpMb2NhbDx2ODo6T2Jq
ZWN0VGVtcGxhdGU+IGluc3RhbmNlID0gcmVzdWx0LT5JbnN0YW5jZVRlbXBsYXRlKCk7CiAgICAg
aW5zdGFuY2UtPlNldEludGVybmFsRmllbGRDb3VudChWOEhUTUxJbWFnZUVsZW1lbnQ6OmludGVy
bmFsRmllbGRDb3VudCk7CiAgICAgcmVzdWx0LT5TZXRDbGFzc05hbWUodjg6OlN0cmluZzo6TmV3
U3ltYm9sKCJIVE1MSW1hZ2VFbGVtZW50IikpOwotICAgIHJlc3VsdC0+SW5oZXJpdChWOEhUTUxJ
bWFnZUVsZW1lbnQ6OkdldFRlbXBsYXRlKGlzb2xhdGUpKTsKKyAgICByZXN1bHQtPkluaGVyaXQo
VjhIVE1MSW1hZ2VFbGVtZW50OjpHZXRUZW1wbGF0ZShpc29sYXRlLCB3b3JsZFR5cGUpKTsKIAog
ICAgIGNhY2hlZFRlbXBsYXRlID0gdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+
OjpOZXcoaXNvbGF0ZSwgcmVzdWx0KTsKICAgICByZXR1cm4gY2FjaGVkVGVtcGxhdGU7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MSW1hZ2VFbGVt
ZW50Q29uc3RydWN0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhU
TUxJbWFnZUVsZW1lbnRDb25zdHJ1Y3Rvci5oCmluZGV4IDk1NmJjOGQ4NWI5YzBjMmUxMTliMThh
YWQxODcwN2I1Mjg5ZWI1OTEuLjk3YjM4ZTUwNWVmMGI4MWE4MTFlOGEzMTdmNWNjNzI1ZTg3Yjky
YzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxJ
bWFnZUVsZW1lbnRDb25zdHJ1Y3Rvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L2N1c3RvbS9WOEhUTUxJbWFnZUVsZW1lbnRDb25zdHJ1Y3Rvci5oCkBAIC0zOSw3ICszOSw3IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgVjhIVE1MSW1hZ2VFbGVtZW50Q29uc3RydWN0
b3IgewogcHVibGljOgotICAgIHN0YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1w
bGF0ZT4gR2V0VGVtcGxhdGUodjg6Oklzb2xhdGUqID0gMCk7CisgICAgc3RhdGljIHY4OjpQZXJz
aXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBHZXRUZW1wbGF0ZSh2ODo6SXNvbGF0ZSosIFdy
YXBwZXJXb3JsZFR5cGUpOwogICAgIHN0YXRpYyBXcmFwcGVyVHlwZUluZm8gaW5mbzsKIH07CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEluamVjdGVk
U2NyaXB0TWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhJ
bmplY3RlZFNjcmlwdE1hbmFnZXIuY3BwCmluZGV4IGIyOTYxZTMwMDQwZGFjNjhiMjE0Y2JhNWE0
OGI2MzBkZDQzOWZiNTAuLjczMzkxMzk1Y2NjZTZhZDk0MWIxY2ZkYzgzZjA2YjcyYmIwYWFkMzUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEluamVjdGVk
U2NyaXB0TWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9t
L1Y4SW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmNwcApAQCAtNTUsNyArNTUsNyBAQCBzdGF0aWMgdm9p
ZCBXZWFrUmVmZXJlbmNlQ2FsbGJhY2sodjg6Oklzb2xhdGUqIGlzb2xhdGUsIHY4OjpQZXJzaXN0
ZW50PHY4OjpWYWx1ZQogCiBzdGF0aWMgdjg6OkxvY2FsPHY4OjpPYmplY3Q+IGNyZWF0ZUluamVj
dGVkU2NyaXB0SG9zdFY4V3JhcHBlcihJbmplY3RlZFNjcmlwdEhvc3QqIGhvc3QsIHY4OjpJc29s
YXRlKiBpc29sYXRlKQogewotICAgIHY4OjpMb2NhbDx2ODo6RnVuY3Rpb24+IGZ1bmN0aW9uID0g
VjhJbmplY3RlZFNjcmlwdEhvc3Q6OkdldFRlbXBsYXRlKGlzb2xhdGUpLT5HZXRGdW5jdGlvbigp
OworICAgIHY4OjpMb2NhbDx2ODo6RnVuY3Rpb24+IGZ1bmN0aW9uID0gVjhJbmplY3RlZFNjcmlw
dEhvc3Q6OkdldFRlbXBsYXRlKGlzb2xhdGUsIE1haW5Xb3JsZCktPkdldEZ1bmN0aW9uKCk7CiAg
ICAgaWYgKGZ1bmN0aW9uLklzRW1wdHkoKSkgewogICAgICAgICAvLyBSZXR1cm4gaWYgYWxsb2Nh
dGlvbiBmYWlsZWQuCiAgICAgICAgIHJldHVybiB2ODo6TG9jYWw8djg6Ok9iamVjdD4oKTsKQEAg
LTExOCw3ICsxMTgsNyBAQCBib29sIEluamVjdGVkU2NyaXB0TWFuYWdlcjo6Y2FuQWNjZXNzSW5z
cGVjdGVkV2luZG93KFNjcmlwdFN0YXRlKiBzY3JpcHRTdGF0ZSkKICAgICB2ODo6TG9jYWw8djg6
Ok9iamVjdD4gZ2xvYmFsID0gY29udGV4dC0+R2xvYmFsKCk7CiAgICAgaWYgKGdsb2JhbC5Jc0Vt
cHR5KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+
IGhvbGRlciA9IGdsb2JhbC0+RmluZEluc3RhbmNlSW5Qcm90b3R5cGVDaGFpbihWOERPTVdpbmRv
dzo6R2V0VGVtcGxhdGUoY29udGV4dC0+R2V0SXNvbGF0ZSgpKSk7CisgICAgdjg6OkhhbmRsZTx2
ODo6T2JqZWN0PiBob2xkZXIgPSBnbG9iYWwtPkZpbmRJbnN0YW5jZUluUHJvdG90eXBlQ2hhaW4o
VjhET01XaW5kb3c6OkdldFRlbXBsYXRlKGNvbnRleHQtPkdldElzb2xhdGUoKSwgTWFpbldvcmxk
KSk7CiAgICAgaWYgKGhvbGRlci5Jc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICBGcmFtZSogZnJhbWUgPSBWOERPTVdpbmRvdzo6dG9OYXRpdmUoaG9sZGVyKS0+ZnJhbWUoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOExvY2F0aW9u
Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOExvY2F0aW9u
Q3VzdG9tLmNwcAppbmRleCBlYzcxMjJmOGQ5MzcyNmNiODlmYzljMTU4ZjNhNTM0NDU4YjBjMmE0
Li5iMmY5ZWEzYjhlMjkyMzI3YTQzNTBkNmYxMjFlMDhkZjRiY2EyNzBlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhMb2NhdGlvbkN1c3RvbS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4TG9jYXRpb25DdXN0b20uY3Bw
CkBAIC0xNDAsNyArMTQwLDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4TG9jYXRpb246OnJl
bG9hZEF0dHJHZXR0ZXJDdXN0b20odjg6OkxvY2FsPHY4OjpTdHJpbmc+IG4KIHsKICAgICB2ODo6
SXNvbGF0ZSogaXNvbGF0ZSA9IGluZm8uR2V0SXNvbGF0ZSgpOwogICAgIHN0YXRpYyB2ODo6UGVy
c2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gcHJpdmF0ZVRlbXBsYXRlID0gdjg6OlBlcnNp
c3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+OjpOZXcoaXNvbGF0ZSwgdjg6OkZ1bmN0aW9uVGVt
cGxhdGU6Ok5ldyhWOExvY2F0aW9uOjpyZWxvYWRNZXRob2RDdXN0b20sIHY4VW5kZWZpbmVkKCks
IHY4OjpTaWduYXR1cmU6Ok5ldyhWOExvY2F0aW9uOjpHZXRSYXdUZW1wbGF0ZShpc29sYXRlKSkp
KTsKLSAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGhvbGRlciA9IGluZm8uVGhpcygpLT5GaW5k
SW5zdGFuY2VJblByb3RvdHlwZUNoYWluKFY4TG9jYXRpb246OkdldFRlbXBsYXRlKGlzb2xhdGUp
KTsKKyAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGhvbGRlciA9IGluZm8uVGhpcygpLT5GaW5k
SW5zdGFuY2VJblByb3RvdHlwZUNoYWluKFY4TG9jYXRpb246OkdldFRlbXBsYXRlKGlzb2xhdGUs
IHdvcmxkVHlwZShpc29sYXRlKSkpOwogICAgIGlmIChob2xkZXIuSXNFbXB0eSgpKSB7CiAgICAg
ICAgIC8vIGNhbiBvbmx5IHJlYWNoIGhlcmUgYnkgJ29iamVjdC5fX3Byb3RvX18uZnVuYycsIGFu
ZCBpdCBzaG91bGQgcGFzc2VkCiAgICAgICAgIC8vIGRvbWFpbiBzZWN1cml0eSBjaGVjayBhbHJl
YWR5CkBAIC0xNTgsNyArMTU4LDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4TG9jYXRpb246
OnJlcGxhY2VBdHRyR2V0dGVyQ3VzdG9tKHY4OjpMb2NhbDx2ODo6U3RyaW5nPgogewogICAgIHY4
OjpJc29sYXRlKiBpc29sYXRlID0gaW5mby5HZXRJc29sYXRlKCk7CiAgICAgc3RhdGljIHY4OjpQ
ZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBwcml2YXRlVGVtcGxhdGUgPSB2ODo6UGVy
c2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT46Ok5ldyhpc29sYXRlLCB2ODo6RnVuY3Rpb25U
ZW1wbGF0ZTo6TmV3KFY4TG9jYXRpb246OnJlcGxhY2VNZXRob2RDdXN0b20sIHY4VW5kZWZpbmVk
KCksIHY4OjpTaWduYXR1cmU6Ok5ldyhWOExvY2F0aW9uOjpHZXRSYXdUZW1wbGF0ZShpc29sYXRl
KSkpKTsKLSAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGhvbGRlciA9IGluZm8uVGhpcygpLT5G
aW5kSW5zdGFuY2VJblByb3RvdHlwZUNoYWluKFY4TG9jYXRpb246OkdldFRlbXBsYXRlKGlzb2xh
dGUpKTsKKyAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGhvbGRlciA9IGluZm8uVGhpcygpLT5G
aW5kSW5zdGFuY2VJblByb3RvdHlwZUNoYWluKFY4TG9jYXRpb246OkdldFRlbXBsYXRlKGlzb2xh
dGUsIHdvcmxkVHlwZShpc29sYXRlKSkpOwogICAgIGlmIChob2xkZXIuSXNFbXB0eSgpKSB7CiAg
ICAgICAgIC8vIGNhbiBvbmx5IHJlYWNoIGhlcmUgYnkgJ29iamVjdC5fX3Byb3RvX18uZnVuYycs
IGFuZCBpdCBzaG91bGQgcGFzc2VkCiAgICAgICAgIC8vIGRvbWFpbiBzZWN1cml0eSBjaGVjayBh
bHJlYWR5CkBAIC0xNzcsNyArMTc3LDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4TG9jYXRp
b246OmFzc2lnbkF0dHJHZXR0ZXJDdXN0b20odjg6OkxvY2FsPHY4OjpTdHJpbmc+IG4KICAgICB2
ODo6SXNvbGF0ZSogaXNvbGF0ZSA9IGluZm8uR2V0SXNvbGF0ZSgpOwogICAgIHN0YXRpYyB2ODo6
UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gcHJpdmF0ZVRlbXBsYXRlID0KICAgICAg
ICAgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+OjpOZXcoaXNvbGF0ZSwgdjg6
OkZ1bmN0aW9uVGVtcGxhdGU6Ok5ldyhWOExvY2F0aW9uOjphc3NpZ25NZXRob2RDdXN0b20sIHY4
VW5kZWZpbmVkKCksIHY4OjpTaWduYXR1cmU6Ok5ldyhWOExvY2F0aW9uOjpHZXRSYXdUZW1wbGF0
ZShpc29sYXRlKSkpKTsKLSAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGhvbGRlciA9IGluZm8u
VGhpcygpLT5GaW5kSW5zdGFuY2VJblByb3RvdHlwZUNoYWluKFY4TG9jYXRpb246OkdldFRlbXBs
YXRlKGlzb2xhdGUpKTsKKyAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGhvbGRlciA9IGluZm8u
VGhpcygpLT5GaW5kSW5zdGFuY2VJblByb3RvdHlwZUNoYWluKFY4TG9jYXRpb246OkdldFRlbXBs
YXRlKGlzb2xhdGUsIHdvcmxkVHlwZShpc29sYXRlKSkpOwogICAgIGlmIChob2xkZXIuSXNFbXB0
eSgpKSB7CiAgICAgICAgIC8vIGNhbiBvbmx5IHJlYWNoIGhlcmUgYnkgJ29iamVjdC5fX3Byb3Rv
X18uZnVuYycsIGFuZCBpdCBzaG91bGQgcGFzc2VkCiAgICAgICAgIC8vIGRvbWFpbiBzZWN1cml0
eSBjaGVjayBhbHJlYWR5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9j
dXN0b20vVjhNZXNzYWdlRXZlbnRDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvY3VzdG9tL1Y4TWVzc2FnZUV2ZW50Q3VzdG9tLmNwcAppbmRleCAzODRjYmE1N2Q2OTBlNmIz
OGFlN2JhZDc3M2Y3NjBlMjM4MWI3ZmE2Li45MjZkNTRiYzgzZjk1MGVlNjdiMjY1MjU0YTg0MWE1
ODdkMjJkMDQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20v
VjhNZXNzYWdlRXZlbnRDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L2N1c3RvbS9WOE1lc3NhZ2VFdmVudEN1c3RvbS5jcHAKQEAgLTExNiw3ICsxMTYsNyBAQCB2ODo6
SGFuZGxlPHY4OjpWYWx1ZT4gVjhNZXNzYWdlRXZlbnQ6OmluaXRNZXNzYWdlRXZlbnRNZXRob2RD
dXN0b20oY29uc3Qgdjg6OkFyZwogICAgIERPTVdpbmRvdyogc291cmNlQXJnID0gMDsKICAgICBp
ZiAoYXJnc1s2XS0+SXNPYmplY3QoKSkgewogICAgICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+
IHdyYXBwZXIgPSB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+OjpDYXN0KGFyZ3NbNl0pOwotICAgICAg
ICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdpbmRvdyA9IHdyYXBwZXItPkZpbmRJbnN0YW5jZUlu
UHJvdG90eXBlQ2hhaW4oVjhET01XaW5kb3c6OkdldFRlbXBsYXRlKGFyZ3MuR2V0SXNvbGF0ZSgp
KSk7CisgICAgICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd2luZG93ID0gd3JhcHBlci0+Rmlu
ZEluc3RhbmNlSW5Qcm90b3R5cGVDaGFpbihWOERPTVdpbmRvdzo6R2V0VGVtcGxhdGUoYXJncy5H
ZXRJc29sYXRlKCksIHdvcmxkVHlwZUluTWFpblRocmVhZChhcmdzLkdldElzb2xhdGUoKSkpKTsK
ICAgICAgICAgaWYgKCF3aW5kb3cuSXNFbXB0eSgpKQogICAgICAgICAgICAgc291cmNlQXJnID0g
VjhET01XaW5kb3c6OnRvTmF0aXZlKHdpbmRvdyk7CiAgICAgfQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>191186</attachid>
            <date>2013-03-04 02:54:51 -0800</date>
            <delta_ts>2013-03-04 04:28:54 -0800</delta_ts>
            <desc>Patch.</desc>
            <filename>bug-110875-20130304115058.patch</filename>
            <type>text/plain</type>
            <size>44266</size>
            <attacher name="Marja Hölttä">marja</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ0NjExCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggY2Y0YmE4YzBjYThiNjc1
ODQ2Njg4NzdjN2Q3NGE1ZDg4MzNkMjA4MC4uODUzOGUyNjUzZjcxZmZjNzM3ZTJiNjBiN2MyZGU4
MmQ2NDMyNmJlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg5IEBACisyMDEzLTAzLTA0ICBNYXJq
YSBIw7ZsdHTDpCAgPG1hcmphQGNocm9taXVtLm9yZz4KKworICAgICAgICBbVjhdIEFkZCBhICJj
b250ZXh0IHR5cGUiIHBhcmFtZXRlciB0byBHZXRUZW1wbGF0ZSBhbmQgQ29uZmlndXJlVjhTb21l
dGhpbmdUZW1wbGF0ZSBmdW5jdGlvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTExMDg3NQorCisgICAgICAgIFRoZSBwYXJhbWV0ZXIgd2lsbCBsYXRl
ciBiZSB1c2VkIGZvciBnZW5lcmF0aW5nIHNwZWNpYWxpemVkIFY4CisgICAgICAgIGJpbmRpbmdz
IGZvciB0aGUgMyBkaWZmZXJlbnQgd29ybGQgdHlwZXMgKG1haW4gd29ybGQsIGlzb2xhdGVkCisg
ICAgICAgIHdvcmssIHdvcmtlcikuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIChubyBjaGFuZ2VzIGluIGJlaGF2aW9yIHlldCku
CisKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbToKKyAgICAg
ICAgKEdlbmVyYXRlSGVhZGVyKToKKyAgICAgICAgKEdlbmVyYXRlRG9tYWluU2FmZUZ1bmN0aW9u
R2V0dGVyKToKKyAgICAgICAgKEdlbmVyYXRlRG9tYWluU2FmZUZ1bmN0aW9uU2V0dGVyKToKKyAg
ICAgICAgKEdlbmVyYXRlTm9ybWFsQXR0ckdldHRlcik6CisgICAgICAgIChHZW5lcmF0ZU5hbWVk
Q29uc3RydWN0b3IpOgorICAgICAgICAoR2VuZXJhdGVJbXBsZW1lbnRhdGlvbik6CisgICAgICAg
ICogYmluZGluZ3MvdjgvRE9NRGF0YVN0b3JlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTURh
dGFTdG9yZTo6RE9NRGF0YVN0b3JlKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9ET01EYXRhU3Rv
cmUuaDoKKyAgICAgICAgKERPTURhdGFTdG9yZSk6CisgICAgICAgICogYmluZGluZ3MvdjgvRE9N
V3JhcHBlcldvcmxkLmNwcDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6
RE9NV3JhcHBlcldvcmxkOjpzZXRJbml0aWFsaXppbmdXaW5kb3cpOgorICAgICAgICAoV2ViQ29y
ZTo6RE9NV3JhcHBlcldvcmxkOjpET01XcmFwcGVyV29ybGQpOgorICAgICAgICAoV2ViQ29yZTo6
RE9NV3JhcHBlcldvcmxkOjpjb250ZXh0SGFzQ29ycmVjdFByb3RvdHlwZSk6CisgICAgICAgICog
YmluZGluZ3MvdjgvRE9NV3JhcHBlcldvcmxkLmg6CisgICAgICAgIChET01XcmFwcGVyV29ybGQp
OgorICAgICAgICAoV2ViQ29yZTo6RE9NV3JhcHBlcldvcmxkOjpnZXRXb3JsZCk6CisgICAgICAg
ICogYmluZGluZ3MvdjgvRGljdGlvbmFyeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEaWN0aW9u
YXJ5OjpnZXQpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1BhZ2VTY3JpcHREZWJ1Z1NlcnZlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpyZXRyaWV2ZUZyYW1lV2l0aEdsb2JhbE9iamVjdENoZWNr
KToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9WOEFkYXB0b3JGdW5jdGlvbi5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpWOEFkYXB0b3JGdW5jdGlvbjo6Z2V0VGVtcGxhdGUpOgorICAgICAgICAoV2Vi
Q29yZTo6VjhBZGFwdG9yRnVuY3Rpb246OndyYXApOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4
QWRhcHRvckZ1bmN0aW9uLmg6CisgICAgICAgIChWOEFkYXB0b3JGdW5jdGlvbik6CisgICAgICAg
ICogYmluZGluZ3MvdjgvVjhCaW5kaW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnRvRE9NV2lu
ZG93KToKKyAgICAgICAgKFdlYkNvcmU6OnRvU2NyaXB0RXhlY3V0aW9uQ29udGV4dCk6CisgICAg
ICAgIChXZWJDb3JlOjp3b3JsZFR5cGUpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChX
ZWJDb3JlOjp3b3JsZFR5cGVJbk1haW5UaHJlYWQpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4
QmluZGluZy5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogYmluZGluZ3MvdjgvVjhE
T01XaW5kb3dTaGVsbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOERPTVdpbmRvd1NoZWxsOjpj
bGVhckZvck5hdmlnYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6VjhET01XaW5kb3dTaGVsbDo6
aW5zdGFsbERPTVdpbmRvdyk6CisgICAgICAgICogYmluZGluZ3MvdjgvVjhET01XcmFwcGVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlY4RE9NV3JhcHBlcjo6Y3JlYXRlV3JhcHBlcik6CisgICAg
ICAgICogYmluZGluZ3MvdjgvVjhJbml0aWFsaXplci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpm
aW5kRnJhbWUpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4UGVyQ29udGV4dERhdGEuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6VjhQZXJDb250ZXh0RGF0YTo6Y29uc3RydWN0b3JGb3JUeXBlU2xv
d0Nhc2UpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1dvcmtlclNjcmlwdENvbnRyb2xsZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyU2NyaXB0Q29udHJvbGxlcjo6V29ya2VyU2NyaXB0
Q29udHJvbGxlcik6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJTY3JpcHRDb250cm9sbGVyOjpj
b250cm9sbGVyRm9yQ29udGV4dCk6CisgICAgICAgICogYmluZGluZ3MvdjgvV3JhcHBlclR5cGVJ
bmZvLmg6CisgICAgICAgIChXZWJDb3JlOjpXcmFwcGVyVHlwZUluZm86OmdldFRlbXBsYXRlKToK
KyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhET01XaW5kb3dDdXN0b20uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6VjhET01XaW5kb3c6OmV2ZW50QXR0ckdldHRlckN1c3RvbSk6CisgICAg
ICAgIChXZWJDb3JlOjpWOERPTVdpbmRvdzo6ZXZlbnRBdHRyU2V0dGVyQ3VzdG9tKToKKyAgICAg
ICAgKFdlYkNvcmU6OlY4RE9NV2luZG93Ojp0b1N0cmluZ01ldGhvZEN1c3RvbSk6CisgICAgICAg
IChXZWJDb3JlOjpWOERPTVdpbmRvdzo6bmFtZWRTZWN1cml0eUNoZWNrKToKKyAgICAgICAgKFdl
YkNvcmU6OlY4RE9NV2luZG93OjppbmRleGVkU2VjdXJpdHlDaGVjayk6CisgICAgICAgIChXZWJD
b3JlOjp0b1Y4KToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MRG9jdW1lbnRD
dXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhIVE1MRG9jdW1lbnQ6OndyYXBJblNoYWRv
d09iamVjdCk6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTEltYWdlRWxlbWVu
dENvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4SFRNTEltYWdlRWxlbWVudENv
bnN0cnVjdG9yOjpHZXRUZW1wbGF0ZSk6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4
SFRNTEltYWdlRWxlbWVudENvbnN0cnVjdG9yLmg6CisgICAgICAgIChWOEhUTUxJbWFnZUVsZW1l
bnRDb25zdHJ1Y3Rvcik6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4SW5qZWN0ZWRT
Y3JpcHRNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUluamVjdGVkU2NyaXB0
SG9zdFY4V3JhcHBlcik6CisgICAgICAgIChXZWJDb3JlOjpJbmplY3RlZFNjcmlwdE1hbmFnZXI6
OmNhbkFjY2Vzc0luc3BlY3RlZFdpbmRvdyk6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9t
L1Y4TG9jYXRpb25DdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhMb2NhdGlvbjo6cmVs
b2FkQXR0ckdldHRlckN1c3RvbSk6CisgICAgICAgIChXZWJDb3JlOjpWOExvY2F0aW9uOjpyZXBs
YWNlQXR0ckdldHRlckN1c3RvbSk6CisgICAgICAgIChXZWJDb3JlOjpWOExvY2F0aW9uOjphc3Np
Z25BdHRyR2V0dGVyQ3VzdG9tKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhNZXNz
YWdlRXZlbnRDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhNZXNzYWdlRXZlbnQ6Omlu
aXRNZXNzYWdlRXZlbnRNZXRob2RDdXN0b20pOgorCiAyMDEzLTAzLTA0ICBBZGFtIEJlcmdrdmlz
dCAgPGFkYW0uYmVyZ2t2aXN0QGVyaWNzc29uLmNvbT4KIAogICAgICAgICBNZWRpYVN0cmVhbSBB
UEk6IGxvY2FsIGFkZFRyYWNrKCkgYW5kIHJlbW92ZVRyYWNrKCkgb3BlcmF0aW9ucyBzaG91bGQg
bm90IGZpcmUgZXZlbnRzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy9Db2RlR2VuZXJhdG9yVjgucG0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L0NvZGVHZW5lcmF0b3JWOC5wbQppbmRleCA5OTMyYTBhYzc0YWU4MDY2MGY4ZmEyMjNlYTVlYWQ3
Y2UwOTNjNGIxLi4xOWZiOTY2MzQzZTA2NTRhNjQxODgwODk4MmRmOWEwMzJlNTEzMmQ5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5w
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5w
bQpAQCAtMzI0LDcgKzMyNCw3IEBAIHN1YiBHZW5lcmF0ZUhlYWRlcgogICAgICAgICBwdXNoKEBo
ZWFkZXJDb250ZW50LCA8PEVORCk7CiBjbGFzcyBWOCR7bmF0aXZlVHlwZX1Db25zdHJ1Y3RvciB7
CiBwdWJsaWM6Ci0gICAgc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRl
PiBHZXRUZW1wbGF0ZSh2ODo6SXNvbGF0ZSopOworICAgIHN0YXRpYyB2ODo6UGVyc2lzdGVudDx2
ODo6RnVuY3Rpb25UZW1wbGF0ZT4gR2V0VGVtcGxhdGUodjg6Oklzb2xhdGUqLCBXcmFwcGVyV29y
bGRUeXBlKTsKICAgICBzdGF0aWMgV3JhcHBlclR5cGVJbmZvIGluZm87CiB9OwogCkBAIC0zNjIs
NyArMzYyLDcgQEAgRU5ECiAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgPDxFTkQpOwogICAgIHN0
YXRpYyBib29sIEhhc0luc3RhbmNlKHY4OjpIYW5kbGU8djg6OlZhbHVlPiwgdjg6Oklzb2xhdGUq
KTsKICAgICBzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IEdldFJh
d1RlbXBsYXRlKHY4OjpJc29sYXRlKik7Ci0gICAgc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpG
dW5jdGlvblRlbXBsYXRlPiBHZXRUZW1wbGF0ZSh2ODo6SXNvbGF0ZSopOworICAgIHN0YXRpYyB2
ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gR2V0VGVtcGxhdGUodjg6Oklzb2xh
dGUqLCBXcmFwcGVyV29ybGRUeXBlKTsKICAgICBzdGF0aWMgJHtuYXRpdmVUeXBlfSogdG9OYXRp
dmUodjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBvYmplY3QpCiAgICAgewogICAgICAgICByZXR1cm4g
cmVpbnRlcnByZXRfY2FzdDwke25hdGl2ZVR5cGV9Kj4oJHtmcm9tRnVuY3Rpb25PcGVuaW5nfW9i
amVjdCR7ZnJvbUZ1bmN0aW9uQ2xvc2luZ30tPkdldEFsaWduZWRQb2ludGVyRnJvbUludGVybmFs
RmllbGQodjhET01XcmFwcGVyT2JqZWN0SW5kZXgpKTsKQEAgLTc5Myw3ICs3OTMsNyBAQCBzdWIg
R2VuZXJhdGVEb21haW5TYWZlRnVuY3Rpb25HZXR0ZXIKIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpW
YWx1ZT4gJHtmdW5jTmFtZX1BdHRyR2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBj
b25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewogICAgIHN0YXRpYyB2ODo6UGVyc2lzdGVu
dDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gcHJpdmF0ZVRlbXBsYXRlID0gdjg6OlBlcnNpc3RlbnQ8
djg6OkZ1bmN0aW9uVGVtcGxhdGU+OjpOZXcoaW5mby5HZXRJc29sYXRlKCksICRuZXdUZW1wbGF0
ZVN0cmluZyk7Ci0gICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBob2xkZXIgPSBpbmZvLlRoaXMo
KS0+RmluZEluc3RhbmNlSW5Qcm90b3R5cGVDaGFpbigke3Y4SW50ZXJmYWNlTmFtZX06OkdldFRl
bXBsYXRlKGluZm8uR2V0SXNvbGF0ZSgpKSk7CisgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBo
b2xkZXIgPSBpbmZvLlRoaXMoKS0+RmluZEluc3RhbmNlSW5Qcm90b3R5cGVDaGFpbigke3Y4SW50
ZXJmYWNlTmFtZX06OkdldFRlbXBsYXRlKGluZm8uR2V0SXNvbGF0ZSgpLCB3b3JsZFR5cGUoaW5m
by5HZXRJc29sYXRlKCkpKSk7CiAgICAgaWYgKGhvbGRlci5Jc0VtcHR5KCkpIHsKICAgICAgICAg
Ly8gY2FuIG9ubHkgcmVhY2ggaGVyZSBieSAnb2JqZWN0Ll9fcHJvdG9fXy5mdW5jJywgYW5kIGl0
IHNob3VsZCBwYXNzZWQKICAgICAgICAgLy8gZG9tYWluIHNlY3VyaXR5IGNoZWNrIGFscmVhZHkK
QEAgLTgyOCw3ICs4MjgsNyBAQCBzdWIgR2VuZXJhdGVEb21haW5TYWZlRnVuY3Rpb25TZXR0ZXIK
ICAgICBwdXNoKEBpbXBsQ29udGVudEludGVybmFscywgPDxFTkQpOwogc3RhdGljIHZvaWQgJHtp
bnRlcmZhY2VOYW1lfURvbWFpblNhZmVGdW5jdGlvblNldHRlcih2ODo6TG9jYWw8djg6OlN0cmlu
Zz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3Nvcklu
Zm8mIGluZm8pCiB7Ci0gICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBob2xkZXIgPSBpbmZvLlRo
aXMoKS0+RmluZEluc3RhbmNlSW5Qcm90b3R5cGVDaGFpbigke3Y4SW50ZXJmYWNlTmFtZX06Okdl
dFRlbXBsYXRlKGluZm8uR2V0SXNvbGF0ZSgpKSk7CisgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0
PiBob2xkZXIgPSBpbmZvLlRoaXMoKS0+RmluZEluc3RhbmNlSW5Qcm90b3R5cGVDaGFpbigke3Y4
SW50ZXJmYWNlTmFtZX06OkdldFRlbXBsYXRlKGluZm8uR2V0SXNvbGF0ZSgpLCB3b3JsZFR5cGUo
aW5mby5HZXRJc29sYXRlKCkpKSk7CiAgICAgaWYgKGhvbGRlci5Jc0VtcHR5KCkpCiAgICAgICAg
IHJldHVybjsKICAgICAke2ludGVyZmFjZU5hbWV9KiBpbXAgPSAke3Y4SW50ZXJmYWNlTmFtZX06
OnRvTmF0aXZlKGhvbGRlcik7CkBAIC05NDcsNyArOTQ3LDcgQEAgRU5ECiAgICAgICAgIH0gZWxz
ZSB7CiAgICAgICAgICAgICAjIHBlcmZvcm0gbG9va3VwIGZpcnN0CiAgICAgICAgICAgICBwdXNo
KEBpbXBsQ29udGVudEludGVybmFscywgPDxFTkQpOwotICAgIHY4OjpIYW5kbGU8djg6Ok9iamVj
dD4gaG9sZGVyID0gaW5mby5UaGlzKCktPkZpbmRJbnN0YW5jZUluUHJvdG90eXBlQ2hhaW4oJHt2
OEludGVyZmFjZU5hbWV9OjpHZXRUZW1wbGF0ZShpbmZvLkdldElzb2xhdGUoKSkpOworICAgIHY4
OjpIYW5kbGU8djg6Ok9iamVjdD4gaG9sZGVyID0gaW5mby5UaGlzKCktPkZpbmRJbnN0YW5jZUlu
UHJvdG90eXBlQ2hhaW4oJHt2OEludGVyZmFjZU5hbWV9OjpHZXRUZW1wbGF0ZShpbmZvLkdldElz
b2xhdGUoKSwgd29ybGRUeXBlKGluZm8uR2V0SXNvbGF0ZSgpKSkpOwogICAgIGlmIChob2xkZXIu
SXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gdjhVbmRlZmluZWQoKTsKIEVORApAQCAtMjI0Miw3
ICsyMjQyLDcgQEAgRU5ECiAKICAgICBwdXNoKEBpbXBsQ29udGVudCwgPDxFTkQpOwogCi12ODo6
UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gJHt2OEludGVyZmFjZU5hbWV9Q29uc3Ry
dWN0b3I6OkdldFRlbXBsYXRlKHY4OjpJc29sYXRlKiBpc29sYXRlKQordjg6OlBlcnNpc3RlbnQ8
djg6OkZ1bmN0aW9uVGVtcGxhdGU+ICR7djhJbnRlcmZhY2VOYW1lfUNvbnN0cnVjdG9yOjpHZXRU
ZW1wbGF0ZSh2ODo6SXNvbGF0ZSogaXNvbGF0ZSwgV3JhcHBlcldvcmxkVHlwZSB3b3JsZFR5cGUp
CiB7CiAgICAgc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBjYWNo
ZWRUZW1wbGF0ZTsKICAgICBpZiAoIWNhY2hlZFRlbXBsYXRlLklzRW1wdHkoKSkKQEAgLTIyNTQs
NyArMjI1NCw3IEBAIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiAke3Y4SW50
ZXJmYWNlTmFtZX1Db25zdHJ1Y3Rvcjo6R2V0VGVtcGxhdGUoCiAgICAgdjg6OkxvY2FsPHY4OjpP
YmplY3RUZW1wbGF0ZT4gaW5zdGFuY2UgPSByZXN1bHQtPkluc3RhbmNlVGVtcGxhdGUoKTsKICAg
ICBpbnN0YW5jZS0+U2V0SW50ZXJuYWxGaWVsZENvdW50KCR7djhJbnRlcmZhY2VOYW1lfTo6aW50
ZXJuYWxGaWVsZENvdW50KTsKICAgICByZXN1bHQtPlNldENsYXNzTmFtZSh2ODo6U3RyaW5nOjpO
ZXdTeW1ib2woIiR7aW50ZXJmYWNlTmFtZX0iKSk7Ci0gICAgcmVzdWx0LT5Jbmhlcml0KCR7djhJ
bnRlcmZhY2VOYW1lfTo6R2V0VGVtcGxhdGUoaXNvbGF0ZSkpOworICAgIHJlc3VsdC0+SW5oZXJp
dCgke3Y4SW50ZXJmYWNlTmFtZX06OkdldFRlbXBsYXRlKGlzb2xhdGUsIHdvcmxkVHlwZSkpOwog
CiAgICAgY2FjaGVkVGVtcGxhdGUgPSB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0
ZT46Ok5ldyhpc29sYXRlLCByZXN1bHQpOwogICAgIHJldHVybiBjYWNoZWRUZW1wbGF0ZTsKQEAg
LTI2NzgsNyArMjY3OCw3IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgIG15
ICRwYXJlbnQgPSAkXzsKICAgICAgICAgQWRkVG9JbXBsSW5jbHVkZXMoIlY4JHtwYXJlbnR9Lmgi
KTsKICAgICAgICAgJHBhcmVudENsYXNzID0gIlY4IiAuICRwYXJlbnQ7Ci0gICAgICAgICRwYXJl
bnRDbGFzc1RlbXBsYXRlID0gJHBhcmVudENsYXNzIC4gIjo6R2V0VGVtcGxhdGUoaXNvbGF0ZSki
OworICAgICAgICAkcGFyZW50Q2xhc3NUZW1wbGF0ZSA9ICRwYXJlbnRDbGFzcyAuICI6OkdldFRl
bXBsYXRlKGlzb2xhdGUsIHdvcmxkVHlwZSkiOwogICAgICAgICBsYXN0OwogICAgIH0KIApAQCAt
Mjk5MSw3ICsyOTkxLDcgQEAgRU5ECiAKICAgICAjIEdlbmVyYXRlIHRoZSB0ZW1wbGF0ZSBjb25m
aWd1cmF0aW9uIG1ldGhvZAogICAgIHB1c2goQGltcGxDb250ZW50LCAgPDxFTkQpOwotc3RhdGlj
IHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBDb25maWd1cmUke3Y4SW50ZXJm
YWNlTmFtZX1UZW1wbGF0ZSh2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gZGVz
Yywgdjg6Oklzb2xhdGUqIGlzb2xhdGUpCitzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0
aW9uVGVtcGxhdGU+IENvbmZpZ3VyZSR7djhJbnRlcmZhY2VOYW1lfVRlbXBsYXRlKHY4OjpQZXJz
aXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBkZXNjLCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSwg
V3JhcHBlcldvcmxkVHlwZSB3b3JsZFR5cGUpCiB7CiAgICAgZGVzYy0+UmVhZE9ubHlQcm90b3R5
cGUoKTsKIApAQCAtMzE1Nyw3ICszMTU3LDcgQEAgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9u
VGVtcGxhdGU+ICR7djhJbnRlcmZhY2VOYW1lfTo6R2V0UmF3VGVtcGxhdGUodjg6Oklzb2wKICAg
ICByZXR1cm4gdGVtcGw7CiB9CiAKLXY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRl
PiAke3Y4SW50ZXJmYWNlTmFtZX06OkdldFRlbXBsYXRlKHY4OjpJc29sYXRlKiBpc29sYXRlKQor
djg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+ICR7djhJbnRlcmZhY2VOYW1lfTo6
R2V0VGVtcGxhdGUodjg6Oklzb2xhdGUqIGlzb2xhdGUsIFdyYXBwZXJXb3JsZFR5cGUgd29ybGRU
eXBlKQogewogICAgIFY4UGVySXNvbGF0ZURhdGEqIGRhdGEgPSBWOFBlcklzb2xhdGVEYXRhOjpm
cm9tKGlzb2xhdGUpOwogICAgIFY4UGVySXNvbGF0ZURhdGE6OlRlbXBsYXRlTWFwOjppdGVyYXRv
ciByZXN1bHQgPSBkYXRhLT50ZW1wbGF0ZU1hcCgpLmZpbmQoJmluZm8pOwpAQCAtMzE2Niw3ICsz
MTY2LDcgQEAgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+ICR7djhJbnRlcmZh
Y2VOYW1lfTo6R2V0VGVtcGxhdGUodjg6Oklzb2xhdGUKIAogICAgIHY4OjpIYW5kbGVTY29wZSBo
YW5kbGVTY29wZTsKICAgICB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gdGVt
cGwgPQotICAgICAgICBDb25maWd1cmUke3Y4SW50ZXJmYWNlTmFtZX1UZW1wbGF0ZShHZXRSYXdU
ZW1wbGF0ZShpc29sYXRlKSwgaXNvbGF0ZSk7CisgICAgICAgIENvbmZpZ3VyZSR7djhJbnRlcmZh
Y2VOYW1lfVRlbXBsYXRlKEdldFJhd1RlbXBsYXRlKGlzb2xhdGUpLCBpc29sYXRlLCB3b3JsZFR5
cGUpOwogICAgIGRhdGEtPnRlbXBsYXRlTWFwKCkuYWRkKCZpbmZvLCB0ZW1wbCk7CiAgICAgcmV0
dXJuIHRlbXBsOwogfQpAQCAtMzIxNSw3ICszMjE1LDcgQEAgdm9pZCAke3Y4SW50ZXJmYWNlTmFt
ZX06Omluc3RhbGxQZXJDb250ZXh0UHJvdG90eXBlUHJvcGVydGllcyh2ODo6SGFuZGxlPHY4OjpP
YmoKIEVORAogICAgICAgICAjIFNldHVwIHRoZSBlbmFibGUtYnktc2V0dGluZ3MgZnVuY3Rpb25z
IGlmIHdlIGhhdmUgdGhlbQogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIDw8RU5EKTsKLSAg
ICB2ODo6TG9jYWw8djg6OlNpZ25hdHVyZT4gZGVmYXVsdFNpZ25hdHVyZSA9IHY4OjpTaWduYXR1
cmU6Ok5ldyhHZXRUZW1wbGF0ZShpc29sYXRlKSk7CisgICAgdjg6OkxvY2FsPHY4OjpTaWduYXR1
cmU+IGRlZmF1bHRTaWduYXR1cmUgPSB2ODo6U2lnbmF0dXJlOjpOZXcoR2V0VGVtcGxhdGUoaXNv
bGF0ZSwgd29ybGRUeXBlKGlzb2xhdGUpKSk7CiAgICAgVU5VU0VEX1BBUkFNKGRlZmF1bHRTaWdu
YXR1cmUpOyAvLyBJbiBzb21lIGNhc2VzLCBpdCB3aWxsIG5vdCBiZSB1c2VkLgogCiAgICAgU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCA9IHRvU2NyaXB0RXhlY3V0aW9uQ29udGV4dChw
cm90by0+Q3JlYXRpb25Db250ZXh0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvRE9NRGF0YVN0b3JlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0RP
TURhdGFTdG9yZS5jcHAKaW5kZXggNjBhYWY3YjVlZmUyNWQxM2E2MGI0MDE2MjIyOGRmZTFmZDA3
OTk3OS4uZmRlMzg0YTYzMmJjZjQ1NjkwNjNjMDM3MDg4ZjdlZmY5NTAxYTIxNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvRE9NRGF0YVN0b3JlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy92OC9ET01EYXRhU3RvcmUuY3BwCkBAIC0zOCw3ICszOCw3IEBA
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotRE9NRGF0YVN0b3JlOjpET01EYXRhU3RvcmUoVHlw
ZSB0eXBlKQorRE9NRGF0YVN0b3JlOjpET01EYXRhU3RvcmUoV3JhcHBlcldvcmxkVHlwZSB0eXBl
KQogICAgIDogbV90eXBlKHR5cGUpCiAgICAgLCBtX3dyYXBwZXJNYXAodjg6Oklzb2xhdGU6Okdl
dEN1cnJlbnQoKSkgLy8gRklYTUUgRG9uJ3QgY2FsbCBHZXRDdXJyZW50IHR3aWNlLgogewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvRE9NRGF0YVN0b3JlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy92OC9ET01EYXRhU3RvcmUuaAppbmRleCAwMjY2ZWQ5MjlkZTg3
NTliNzVmNTU4MDU1OGE4NDE5ZmZkMjUzMTljLi5jMDUwMzNmMGI2Y2E1YzM2OThhYTc2NDU4Mzk2
ZmFhM2MxMmYwZWE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9ET01E
YXRhU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9ET01EYXRhU3RvcmUu
aApAQCAtMzUsNiArMzUsNyBAQAogI2luY2x1ZGUgIkRPTVdyYXBwZXJXb3JsZC5oIgogI2luY2x1
ZGUgIk5vZGUuaCIKICNpbmNsdWRlICJWOEdDQ29udHJvbGxlci5oIgorI2luY2x1ZGUgIldyYXBw
ZXJUeXBlSW5mby5oIgogI2luY2x1ZGUgPHY4Lmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4K
ICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgpAQCAtNTAsMTMgKzUxLDcgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogY2xhc3MgRE9NRGF0YVN0b3JlIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJM
RShET01EYXRhU3RvcmUpOwogcHVibGljOgotICAgIGVudW0gVHlwZSB7Ci0gICAgICAgIE1haW5X
b3JsZCwKLSAgICAgICAgSXNvbGF0ZWRXb3JsZCwKLSAgICAgICAgV29ya2VyLAotICAgIH07Ci0K
LSAgICBleHBsaWNpdCBET01EYXRhU3RvcmUoVHlwZSk7CisgICAgZXhwbGljaXQgRE9NRGF0YVN0
b3JlKFdyYXBwZXJXb3JsZFR5cGUpOwogICAgIH5ET01EYXRhU3RvcmUoKTsKIAogICAgIHN0YXRp
YyBET01EYXRhU3RvcmUqIGN1cnJlbnQodjg6Oklzb2xhdGUqKTsKQEAgLTE2Myw3ICsxNTgsNyBA
QCBwcml2YXRlOgogICAgICAgICBvYmplY3QtPnNldFdyYXBwZXIod3JhcHBlciwgaXNvbGF0ZSwg
Y29uZmlndXJhdGlvbik7CiAgICAgfQogCi0gICAgVHlwZSBtX3R5cGU7CisgICAgV3JhcHBlcldv
cmxkVHlwZSBtX3R5cGU7CiAgICAgRE9NV3JhcHBlck1hcDx2b2lkPiBtX3dyYXBwZXJNYXA7CiB9
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9ET01XcmFwcGVyV29y
bGQuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvRE9NV3JhcHBlcldvcmxkLmNwcApp
bmRleCA5NzViYjQ5MTkyZmYxYmEzYmIwMzY3Y2Y0ZWVkMWUwMzI2NDFhMzg1Li41YjVlM2EwMzkw
YzU2NmZmZjMzMDQwMjhhN2E3MWY0NWVkYzE0NDYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy92OC9ET01XcmFwcGVyV29ybGQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L0RPTVdyYXBwZXJXb3JsZC5jcHAKQEAgLTM2LDYgKzM2LDcgQEAKICNpbmNsdWRl
ICJWOERPTUFjdGl2aXR5TG9nZ2VyLmgiCiAjaW5jbHVkZSAiVjhET01XaW5kb3cuaCIKICNpbmNs
dWRlICJWOERPTVdyYXBwZXIuaCIKKyNpbmNsdWRlICJXcmFwcGVyVHlwZUluZm8uaCIKICNpbmNs
dWRlIDx3dGYvSGFzaFRyYWl0cy5oPgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAjaW5j
bHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgpAQCAtNDMsMTIgKzQ0LDE4IEBACiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIGludCBET01XcmFwcGVyV29ybGQ6Omlzb2xhdGVkV29ybGRDb3VudCA9IDA7
CitzdGF0aWMgYm9vbCBpbml0aWFsaXppbmdXaW5kb3cgPSBmYWxzZTsKIAogUGFzc1JlZlB0cjxE
T01XcmFwcGVyV29ybGQ+ICBET01XcmFwcGVyV29ybGQ6OmNyZWF0ZVVuaW5pdGlhbGl6ZWRXb3Js
ZCgpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBET01XcmFwcGVyV29ybGQodW5pbml0aWFs
aXplZFdvcmxkSWQsIHVuaW5pdGlhbGl6ZWRFeHRlbnNpb25Hcm91cCkpOwogfQogCit2b2lkIERP
TVdyYXBwZXJXb3JsZDo6c2V0SW5pdGlhbGl6aW5nV2luZG93KGJvb2wgaW5pdGlhbGl6aW5nKQor
eworICAgIGluaXRpYWxpemluZ1dpbmRvdyA9IGluaXRpYWxpemluZzsKK30KKwogUGFzc1JlZlB0
cjxET01XcmFwcGVyV29ybGQ+IERPTVdyYXBwZXJXb3JsZDo6Y3JlYXRlTWFpbldvcmxkKCkKIHsK
ICAgICByZXR1cm4gYWRvcHRSZWYobmV3IERPTVdyYXBwZXJXb3JsZChtYWluV29ybGRJZCwgbWFp
bldvcmxkRXh0ZW5zaW9uR3JvdXApKTsKQEAgLTU5LDcgKzY2LDcgQEAgRE9NV3JhcHBlcldvcmxk
OjpET01XcmFwcGVyV29ybGQoaW50IHdvcmxkSWQsIGludCBleHRlbnNpb25Hcm91cCkKICAgICAs
IG1fZXh0ZW5zaW9uR3JvdXAoZXh0ZW5zaW9uR3JvdXApCiB7CiAgICAgaWYgKGlzSXNvbGF0ZWRX
b3JsZCgpKQotICAgICAgICBtX2RvbURhdGFTdG9yZSA9IGFkb3B0UHRyKG5ldyBET01EYXRhU3Rv
cmUoRE9NRGF0YVN0b3JlOjpJc29sYXRlZFdvcmxkKSk7CisgICAgICAgIG1fZG9tRGF0YVN0b3Jl
ID0gYWRvcHRQdHIobmV3IERPTURhdGFTdG9yZShJc29sYXRlZFdvcmxkKSk7CiB9CiAKIERPTVdy
YXBwZXJXb3JsZCogbWFpblRocmVhZE5vcm1hbFdvcmxkKCkKQEAgLTY5LDEwICs3NiwxMiBAQCBE
T01XcmFwcGVyV29ybGQqIG1haW5UaHJlYWROb3JtYWxXb3JsZCgpCiAgICAgcmV0dXJuIGNhY2hl
ZE5vcm1hbFdvcmxkLmdldCgpOwogfQogCi12b2lkIERPTVdyYXBwZXJXb3JsZDo6YXNzZXJ0Q29u
dGV4dEhhc0NvcnJlY3RQcm90b3R5cGUodjg6OkhhbmRsZTx2ODo6Q29udGV4dD4gY29udGV4dCkK
K2Jvb2wgRE9NV3JhcHBlcldvcmxkOjpjb250ZXh0SGFzQ29ycmVjdFByb3RvdHlwZSh2ODo6SGFu
ZGxlPHY4OjpDb250ZXh0PiBjb250ZXh0KQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7
Ci0gICAgQVNTRVJUKFY4RE9NV3JhcHBlcjo6aXNXcmFwcGVyT2ZUeXBlKHRvSW5uZXJHbG9iYWxP
YmplY3QoY29udGV4dCksICZWOERPTVdpbmRvdzo6aW5mbykpOworICAgIGlmIChpbml0aWFsaXpp
bmdXaW5kb3cpCisgICAgICAgIHJldHVybiB0cnVlOworICAgIHJldHVybiBWOERPTVdyYXBwZXI6
OmlzV3JhcHBlck9mVHlwZSh0b0lubmVyR2xvYmFsT2JqZWN0KGNvbnRleHQpLCAmVjhET01XaW5k
b3c6OmluZm8pOwogfQogCiBzdGF0aWMgdm9pZCBpc29sYXRlZFdvcmxkV2Vha0NhbGxiYWNrKHY4
OjpJc29sYXRlKiBpc29sYXRlLCB2ODo6UGVyc2lzdGVudDx2ODo6VmFsdWU+IG9iamVjdCwgdm9p
ZCogcGFyYW1ldGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvRE9N
V3JhcHBlcldvcmxkLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9ET01XcmFwcGVyV29y
bGQuaAppbmRleCA5NWNjZjhlN2MyODY0ZWFiYTM2YzdmYzEyNDVjODVlOTE0OWFmMjlhLi5kN2Qz
YWRkNDdiNTRmMmQ1MWUxNTQ2MDI3NTkwOWNiMzg3MTY0NTJjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy92OC9ET01XcmFwcGVyV29ybGQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy92OC9ET01XcmFwcGVyV29ybGQuaApAQCAtNjIsMTAgKzYyLDkgQEAgcHVibGlj
OgogICAgIHZvaWQgbWFrZUNvbnRleHRXZWFrKHY4OjpIYW5kbGU8djg6OkNvbnRleHQ+KTsKICAg
ICB2b2lkIHNldElzb2xhdGVkV29ybGRGaWVsZCh2ODo6SGFuZGxlPHY4OjpDb250ZXh0Pik7CiAK
LSAgICBzdGF0aWMgdm9pZCBhc3NlcnRDb250ZXh0SGFzQ29ycmVjdFByb3RvdHlwZSh2ODo6SGFu
ZGxlPHY4OjpDb250ZXh0Pik7CiAgICAgc3RhdGljIERPTVdyYXBwZXJXb3JsZCogaXNvbGF0ZWRX
b3JsZCh2ODo6SGFuZGxlPHY4OjpDb250ZXh0PiBjb250ZXh0KQogICAgIHsKLSAgICAgICAgYXNz
ZXJ0Q29udGV4dEhhc0NvcnJlY3RQcm90b3R5cGUoY29udGV4dCk7CisgICAgICAgIEFTU0VSVChj
b250ZXh0SGFzQ29ycmVjdFByb3RvdHlwZShjb250ZXh0KSk7CiAgICAgICAgIHJldHVybiBzdGF0
aWNfY2FzdDxET01XcmFwcGVyV29ybGQqPihjb250ZXh0LT5HZXRBbGlnbmVkUG9pbnRlckZyb21F
bWJlZGRlckRhdGEodjhDb250ZXh0SXNvbGF0ZWRXb3JsZCkpOwogICAgIH0KIApAQCAtMTA5LDkg
KzEwOCwxMiBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBtX2RvbURhdGFTdG9yZS5nZXQoKTsK
ICAgICB9CiAKKyAgICBzdGF0aWMgdm9pZCBzZXRJbml0aWFsaXppbmdXaW5kb3coYm9vbCk7CisK
IHByaXZhdGU6CiAgICAgc3RhdGljIGludCBpc29sYXRlZFdvcmxkQ291bnQ7CiAgICAgc3RhdGlj
IFBhc3NSZWZQdHI8RE9NV3JhcHBlcldvcmxkPiBjcmVhdGVNYWluV29ybGQoKTsKKyAgICBzdGF0
aWMgYm9vbCBjb250ZXh0SGFzQ29ycmVjdFByb3RvdHlwZSh2ODo6SGFuZGxlPHY4OjpDb250ZXh0
Pik7CiAKICAgICBET01XcmFwcGVyV29ybGQoaW50IHdvcmxkSWQsIGludCBleHRlbnNpb25Hcm91
cCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0RpY3Rpb25hcnku
Y3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvRGljdGlvbmFyeS5jcHAKaW5kZXggOGE5
Y2YxZGY2YmI1NWRiOTI3ZDNmNDEwZjNjNmI3YzlkMGRhM2VkMi4uYjE4NjJmYmIyMGM4NmI1NmNj
YzFhY2UyOTk5NzU2NzA2MmE1MmYwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvdjgvRGljdGlvbmFyeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvRGlj
dGlvbmFyeS5jcHAKQEAgLTI1OSw3ICsyNTksNyBAQCBib29sIERpY3Rpb25hcnk6OmdldChjb25z
dCBTdHJpbmcmIGtleSwgUmVmUHRyPERPTVdpbmRvdz4mIHZhbHVlKSBjb25zdAogICAgIHZhbHVl
ID0gMDsKICAgICBpZiAodjhWYWx1ZS0+SXNPYmplY3QoKSkgewogICAgICAgICB2ODo6SGFuZGxl
PHY4OjpPYmplY3Q+IHdyYXBwZXIgPSB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+OjpDYXN0KHY4VmFs
dWUpOwotICAgICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdpbmRvdyA9IHdyYXBwZXItPkZp
bmRJbnN0YW5jZUluUHJvdG90eXBlQ2hhaW4oVjhET01XaW5kb3c6OkdldFRlbXBsYXRlKG1faXNv
bGF0ZSkpOworICAgICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdpbmRvdyA9IHdyYXBwZXIt
PkZpbmRJbnN0YW5jZUluUHJvdG90eXBlQ2hhaW4oVjhET01XaW5kb3c6OkdldFRlbXBsYXRlKG1f
aXNvbGF0ZSwgd29ybGRUeXBlSW5NYWluVGhyZWFkKG1faXNvbGF0ZSkpKTsKICAgICAgICAgaWYg
KCF3aW5kb3cuSXNFbXB0eSgpKQogICAgICAgICAgICAgdmFsdWUgPSBWOERPTVdpbmRvdzo6dG9O
YXRpdmUod2luZG93KTsKICAgICB9CkBAIC0zNjMsNyArMzYzLDcgQEAgYm9vbCBEaWN0aW9uYXJ5
OjpnZXQoY29uc3QgU3RyaW5nJiBrZXksIFJlZlB0cjxUcmFja0Jhc2U+JiB2YWx1ZSkgY29uc3QK
IAogICAgICAgICAvLyBGSVhNRTogdGhpcyB3aWxsIG5lZWQgdG8gYmUgY2hhbmdlZCBzbyBpdCBj
YW4gYWxzbyByZXR1cm4gYW4gQXVkaW9UcmFjayBvciBhIFZpZGVvVHJhY2sgb25jZQogICAgICAg
ICAvLyB3ZSBhZGQgdGhlbS4KLSAgICAgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB0cmFjayA9
IHdyYXBwZXItPkZpbmRJbnN0YW5jZUluUHJvdG90eXBlQ2hhaW4oVjhUZXh0VHJhY2s6OkdldFRl
bXBsYXRlKG1faXNvbGF0ZSkpOworICAgICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHRyYWNr
ID0gd3JhcHBlci0+RmluZEluc3RhbmNlSW5Qcm90b3R5cGVDaGFpbihWOFRleHRUcmFjazo6R2V0
VGVtcGxhdGUobV9pc29sYXRlLCB3b3JsZFR5cGUobV9pc29sYXRlKSkpOwogICAgICAgICBpZiAo
IXRyYWNrLklzRW1wdHkoKSkKICAgICAgICAgICAgIHNvdXJjZSA9IFY4VGV4dFRyYWNrOjp0b05h
dGl2ZSh0cmFjayk7CiAgICAgfQpAQCAtNDM2LDcgKzQzNiw3IEBAIGJvb2wgRGljdGlvbmFyeTo6
Z2V0KGNvbnN0IFN0cmluZyYga2V5LCBSZWZQdHI8RXZlbnRUYXJnZXQ+JiB2YWx1ZSkgY29uc3QK
ICAgICAvLyBleGlzdHMgb24gYSBwcm90b3R5cGUgY2hhaW4gb2YgdjhWYWx1ZS4KICAgICBpZiAo
djhWYWx1ZS0+SXNPYmplY3QoKSkgewogICAgICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdy
YXBwZXIgPSB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+OjpDYXN0KHY4VmFsdWUpOwotICAgICAgICB2
ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdpbmRvdyA9IHdyYXBwZXItPkZpbmRJbnN0YW5jZUluUHJv
dG90eXBlQ2hhaW4oVjhET01XaW5kb3c6OkdldFRlbXBsYXRlKG1faXNvbGF0ZSkpOworICAgICAg
ICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdpbmRvdyA9IHdyYXBwZXItPkZpbmRJbnN0YW5jZUlu
UHJvdG90eXBlQ2hhaW4oVjhET01XaW5kb3c6OkdldFRlbXBsYXRlKG1faXNvbGF0ZSwgd29ybGRU
eXBlSW5NYWluVGhyZWFkKG1faXNvbGF0ZSkpKTsKICAgICAgICAgaWYgKCF3aW5kb3cuSXNFbXB0
eSgpKSB7CiAgICAgICAgICAgICB2YWx1ZSA9IHRvV3JhcHBlclR5cGVJbmZvKHdpbmRvdyktPnRv
RXZlbnRUYXJnZXQod2luZG93KTsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvUGFnZVNjcmlwdERlYnVnU2VydmVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1BhZ2VTY3JpcHREZWJ1Z1NlcnZlci5jcHAKaW5k
ZXggYmE2ZTVmOGM4Yzk2MDQxZDhhNzNkNzY4ZmIzODZjNmFkNTMwNTE5OC4uZjk1ZTJhYTEzNzVl
NDIwNDIxZDRkMjcxOGEyMTBhMzg1MTQ0NjA3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvdjgvUGFnZVNjcmlwdERlYnVnU2VydmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy92OC9QYWdlU2NyaXB0RGVidWdTZXJ2ZXIuY3BwCkBAIC01Niw3ICs1Niw3IEBA
IHN0YXRpYyBGcmFtZSogcmV0cmlldmVGcmFtZVdpdGhHbG9iYWxPYmplY3RDaGVjayh2ODo6SGFu
ZGxlPHY4OjpDb250ZXh0PiBjb250ZXh0CiAgICAgaWYgKGdsb2JhbC5Jc0VtcHR5KCkpCiAgICAg
ICAgIHJldHVybiAwOwogCi0gICAgZ2xvYmFsID0gZ2xvYmFsLT5GaW5kSW5zdGFuY2VJblByb3Rv
dHlwZUNoYWluKFY4RE9NV2luZG93OjpHZXRUZW1wbGF0ZShjb250ZXh0LT5HZXRJc29sYXRlKCkp
KTsKKyAgICBnbG9iYWwgPSBnbG9iYWwtPkZpbmRJbnN0YW5jZUluUHJvdG90eXBlQ2hhaW4oVjhE
T01XaW5kb3c6OkdldFRlbXBsYXRlKGNvbnRleHQtPkdldElzb2xhdGUoKSwgd29ybGRUeXBlSW5N
YWluVGhyZWFkKGNvbnRleHQtPkdldElzb2xhdGUoKSkpKTsKICAgICBpZiAoZ2xvYmFsLklzRW1w
dHkoKSkKICAgICAgICAgcmV0dXJuIDA7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L1Y4QWRhcHRvckZ1bmN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L1Y4QWRhcHRvckZ1bmN0aW9uLmNwcAppbmRleCBiYmMxZDMyNzRmYzdkODlmMWRhNjM0YWRh
Nzc5YmJjNmU0NjJlY2RkLi5jNzJjNzEzZWQwN2E5NTMyZjIxMTUwZWZiY2QwNjkwY2NkY2YwMzM3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEFkYXB0b3JGdW5jdGlv
bi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhBZGFwdG9yRnVuY3Rpb24u
Y3BwCkBAIC00MCw3ICs0MCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogV3JhcHBlclR5cGVJ
bmZvIFY4QWRhcHRvckZ1bmN0aW9uOjppbmZvID0geyBWOEFkYXB0b3JGdW5jdGlvbjo6Z2V0VGVt
cGxhdGUsIDAsIDAsIDAsIDAsIDAsIDAsIFdyYXBwZXJUeXBlT2JqZWN0UHJvdG90eXBlIH07CiAK
LXY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBWOEFkYXB0b3JGdW5jdGlvbjo6
Z2V0VGVtcGxhdGUodjg6Oklzb2xhdGUqIGlzb2xhdGUpCit2ODo6UGVyc2lzdGVudDx2ODo6RnVu
Y3Rpb25UZW1wbGF0ZT4gVjhBZGFwdG9yRnVuY3Rpb246OmdldFRlbXBsYXRlKHY4OjpJc29sYXRl
KiBpc29sYXRlLCBXcmFwcGVyV29ybGRUeXBlIHdvcmxkVHlwZSkKIHsKICAgICBBU1NFUlQoaXNv
bGF0ZSk7CiAgICAgVjhQZXJJc29sYXRlRGF0YSogZGF0YSA9IFY4UGVySXNvbGF0ZURhdGE6OmZy
b20oaXNvbGF0ZSk7CkBAIC03Niw3ICs3Niw3IEBAIHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uPiBW
OEFkYXB0b3JGdW5jdGlvbjo6d3JhcCh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IG9iamVjdCwKIHsK
ICAgICBpZiAob2JqZWN0LklzRW1wdHkoKSB8fCAhb2JqZWN0LT5Jc09iamVjdCgpKQogICAgICAg
ICByZXR1cm4gdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb24+KCk7Ci0gICAgdjg6OkhhbmRsZTx2ODo6
RnVuY3Rpb24+IGFkYXB0b3IgPSB2ODo6SGFuZGxlPHY4OjpGdW5jdGlvbj46OkNhc3QoZ2V0VGVt
cGxhdGUoaXNvbGF0ZSktPkdldEZ1bmN0aW9uKCkpOworICAgIHY4OjpIYW5kbGU8djg6OkZ1bmN0
aW9uPiBhZGFwdG9yID0gdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb24+OjpDYXN0KGdldFRlbXBsYXRl
KGlzb2xhdGUsIHdvcmxkVHlwZShpc29sYXRlKSktPkdldEZ1bmN0aW9uKCkpOwogICAgIGlmIChh
ZGFwdG9yLklzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9u
PigpOwogICAgIGFkYXB0b3ItPlNldE5hbWUodjhTdHJpbmcobmFtZS5zdHJpbmcoKSwgaXNvbGF0
ZSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhBZGFwdG9yRnVu
Y3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4QWRhcHRvckZ1bmN0aW9uLmgK
aW5kZXggZTNkNmJiNTFmNDQwYTRjNzcyNGFiY2UzZGU5MzA2OGRhZThjM2E1Ny4uNzgzNmViNGM2
NWI5NDMzNDFmYzJhMzRjN2FkM2VlZTRkOWZiZTU2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvdjgvVjhBZGFwdG9yRnVuY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy92OC9WOEFkYXB0b3JGdW5jdGlvbi5oCkBAIC01NSw3ICs1NSw3IEBAIHB1YmxpYzoK
ICAgICBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb24+IHdyYXAodjg6OkhhbmRsZTx2ODo6
T2JqZWN0PiwgY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCB2ODo6SXNvbGF0ZSopOwogICAgIHN0
YXRpYyB2ODo6SGFuZGxlPHY4OjpGdW5jdGlvbj4gZ2V0KHY4OjpIYW5kbGU8djg6Ok9iamVjdD4p
OwogCi0gICAgc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBnZXRU
ZW1wbGF0ZSh2ODo6SXNvbGF0ZSogPSAwKTsKKyAgICBzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6
OkZ1bmN0aW9uVGVtcGxhdGU+IGdldFRlbXBsYXRlKHY4OjpJc29sYXRlKiwgV3JhcHBlcldvcmxk
VHlwZSk7CiAgICAgc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBj
b25maWd1cmVUZW1wbGF0ZSh2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4pOwog
ICAgIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gaW52b2NhdGlvbkNhbGxiYWNrKGNvbnN0
IHY4OjpBcmd1bWVudHMmKTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy92OC9WOEJpbmRpbmcuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhCaW5kaW5n
LmNwcAppbmRleCAzZDRmNjM1ODE5OGFmMWYwMDk5NjdkZThmNDEzNWE3N2VjMzliZGQ1Li45MjRj
NzgwNDExMTVhYmZjMmRhZDRiNzVmZDJiYzkxNjY2MjNjOWZmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy92OC9WOEJpbmRpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L1Y4QmluZGluZy5jcHAKQEAgLTIyMSw3ICsyMjEsMTAgQEAgRE9NV2luZG93KiB0
b0RPTVdpbmRvdyh2ODo6SGFuZGxlPHY4OjpDb250ZXh0PiBjb250ZXh0KQogewogICAgIHY4OjpI
YW5kbGU8djg6Ok9iamVjdD4gZ2xvYmFsID0gY29udGV4dC0+R2xvYmFsKCk7CiAgICAgQVNTRVJU
KCFnbG9iYWwuSXNFbXB0eSgpKTsKLSAgICBnbG9iYWwgPSBnbG9iYWwtPkZpbmRJbnN0YW5jZUlu
UHJvdG90eXBlQ2hhaW4oVjhET01XaW5kb3c6OkdldFRlbXBsYXRlKGNvbnRleHQtPkdldElzb2xh
dGUoKSkpOworICAgIGdsb2JhbCA9IGdsb2JhbC0+RmluZEluc3RhbmNlSW5Qcm90b3R5cGVDaGFp
bihWOERPTVdpbmRvdzo6R2V0VGVtcGxhdGUoY29udGV4dC0+R2V0SXNvbGF0ZSgpLCBNYWluV29y
bGQpKTsKKyAgICBpZiAoIWdsb2JhbC5Jc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBWOERPTVdp
bmRvdzo6dG9OYXRpdmUoZ2xvYmFsKTsKKyAgICBnbG9iYWwgPSBnbG9iYWwtPkZpbmRJbnN0YW5j
ZUluUHJvdG90eXBlQ2hhaW4oVjhET01XaW5kb3c6OkdldFRlbXBsYXRlKGNvbnRleHQtPkdldElz
b2xhdGUoKSwgSXNvbGF0ZWRXb3JsZCkpOwogICAgIEFTU0VSVCghZ2xvYmFsLklzRW1wdHkoKSk7
CiAgICAgcmV0dXJuIFY4RE9NV2luZG93Ojp0b05hdGl2ZShnbG9iYWwpOwogfQpAQCAtMjI5LDEx
ICsyMzIsMTQgQEAgRE9NV2luZG93KiB0b0RPTVdpbmRvdyh2ODo6SGFuZGxlPHY4OjpDb250ZXh0
PiBjb250ZXh0KQogU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogdG9TY3JpcHRFeGVjdXRpb25Db250
ZXh0KHY4OjpIYW5kbGU8djg6OkNvbnRleHQ+IGNvbnRleHQpCiB7CiAgICAgdjg6OkhhbmRsZTx2
ODo6T2JqZWN0PiBnbG9iYWwgPSBjb250ZXh0LT5HbG9iYWwoKTsKLSAgICB2ODo6SGFuZGxlPHY4
OjpPYmplY3Q+IHdpbmRvd1dyYXBwZXIgPSBnbG9iYWwtPkZpbmRJbnN0YW5jZUluUHJvdG90eXBl
Q2hhaW4oVjhET01XaW5kb3c6OkdldFRlbXBsYXRlKGNvbnRleHQtPkdldElzb2xhdGUoKSkpOwor
ICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd2luZG93V3JhcHBlciA9IGdsb2JhbC0+RmluZElu
c3RhbmNlSW5Qcm90b3R5cGVDaGFpbihWOERPTVdpbmRvdzo6R2V0VGVtcGxhdGUoY29udGV4dC0+
R2V0SXNvbGF0ZSgpLCBNYWluV29ybGQpKTsKKyAgICBpZiAoIXdpbmRvd1dyYXBwZXIuSXNFbXB0
eSgpKQorICAgICAgICByZXR1cm4gVjhET01XaW5kb3c6OnRvTmF0aXZlKHdpbmRvd1dyYXBwZXIp
LT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CisgICAgd2luZG93V3JhcHBlciA9IGdsb2JhbC0+
RmluZEluc3RhbmNlSW5Qcm90b3R5cGVDaGFpbihWOERPTVdpbmRvdzo6R2V0VGVtcGxhdGUoY29u
dGV4dC0+R2V0SXNvbGF0ZSgpLCBJc29sYXRlZFdvcmxkKSk7CiAgICAgaWYgKCF3aW5kb3dXcmFw
cGVyLklzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIFY4RE9NV2luZG93Ojp0b05hdGl2ZSh3aW5k
b3dXcmFwcGVyKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwogI2lmIEVOQUJMRShXT1JLRVJT
KQotICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd29ya2VyV3JhcHBlciA9IGdsb2JhbC0+Rmlu
ZEluc3RhbmNlSW5Qcm90b3R5cGVDaGFpbihWOFdvcmtlckNvbnRleHQ6OkdldFRlbXBsYXRlKGNv
bnRleHQtPkdldElzb2xhdGUoKSkpOworICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd29ya2Vy
V3JhcHBlciA9IGdsb2JhbC0+RmluZEluc3RhbmNlSW5Qcm90b3R5cGVDaGFpbihWOFdvcmtlckNv
bnRleHQ6OkdldFRlbXBsYXRlKGNvbnRleHQtPkdldElzb2xhdGUoKSwgV29ya2VyV29ybGQpKTsK
ICAgICBpZiAoIXdvcmtlcldyYXBwZXIuSXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gVjhXb3Jr
ZXJDb250ZXh0Ojp0b05hdGl2ZSh3b3JrZXJXcmFwcGVyKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4
dCgpOwogI2VuZGlmCkBAIC0zMjUsNCArMzMxLDI0IEBAIHZvaWQgY3Jhc2hJZlY4SXNEZWFkKCkK
ICAgICB9CiB9CiAKK1dyYXBwZXJXb3JsZFR5cGUgd29ybGRUeXBlKHY4OjpJc29sYXRlKiBpc29s
YXRlKQoreworICAgIFY4UGVySXNvbGF0ZURhdGEqIGRhdGEgPSBWOFBlcklzb2xhdGVEYXRhOjpm
cm9tKGlzb2xhdGUpOworICAgIC8vIEZJWE1FOiBSZW5hbWUgZG9tRGF0YVN0b3JlKCkgdG8gd29y
a2VyRGF0YVN0b3JlKCkuCisgICAgaWYgKCFkYXRhLT5kb21EYXRhU3RvcmUoKSkKKyAgICAgICAg
cmV0dXJuIHdvcmxkVHlwZUluTWFpblRocmVhZChpc29sYXRlKTsKKyAgICByZXR1cm4gV29ya2Vy
V29ybGQ7Cit9CisKK1dyYXBwZXJXb3JsZFR5cGUgd29ybGRUeXBlSW5NYWluVGhyZWFkKHY4OjpJ
c29sYXRlKiBpc29sYXRlKQoreworICAgIGlmICghRE9NV3JhcHBlcldvcmxkOjppc29sYXRlZFdv
cmxkc0V4aXN0KCkpCisgICAgICAgIHJldHVybiBNYWluV29ybGQ7CisgICAgQVNTRVJUKCF2ODo6
Q29udGV4dDo6R2V0RW50ZXJlZCgpLklzRW1wdHkoKSk7CisgICAgRE9NV3JhcHBlcldvcmxkKiBp
c29sYXRlZFdvcmxkID0gRE9NV3JhcHBlcldvcmxkOjppc29sYXRlZFdvcmxkKHY4OjpDb250ZXh0
OjpHZXRFbnRlcmVkKCkpOworICAgIGlmIChpc29sYXRlZFdvcmxkKQorICAgICAgICByZXR1cm4g
SXNvbGF0ZWRXb3JsZDsKKyAgICByZXR1cm4gTWFpbldvcmxkOworfQorCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEJpbmRp
bmcuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4QmluZGluZy5oCmluZGV4IGI3NWM0
MDBmOTNiOTkzMzlkMzJiZGY0MzI1Mzg2ZDlmZTM2NTdlMjIuLmJjMTEyNWU3M2EwOWE2MDc2OTAw
MDU2MTMxYTEzNWMyYjAxYTM4YmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L1Y4QmluZGluZy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4QmluZGlu
Zy5oCkBAIC00NjcsNiArNDY3LDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgdm9pZCBj
cmFzaElmVjhJc0RlYWQoKTsKIAorICAgIFdyYXBwZXJXb3JsZFR5cGUgd29ybGRUeXBlKHY4OjpJ
c29sYXRlKik7CisgICAgV3JhcHBlcldvcmxkVHlwZSB3b3JsZFR5cGVJbk1haW5UaHJlYWQodjg6
Oklzb2xhdGUqKTsKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gVjhCaW5k
aW5nX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NV2luZG93
U2hlbGwuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhET01XaW5kb3dTaGVsbC5j
cHAKaW5kZXggN2VhNDZlZWQ3ZGQ2OTMyMjZmYmEyMzA1YTdlYzZlZjUwODNhZDU2OS4uMzQ0ODFh
ZTdiMjJkNzk4YzVjYzBmOTdiZGU0N2VmOTk2YjdlMzZjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvdjgvVjhET01XaW5kb3dTaGVsbC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvdjgvVjhET01XaW5kb3dTaGVsbC5jcHAKQEAgLTMyLDYgKzMyLDcgQEAKICNp
bmNsdWRlICJWOERPTVdpbmRvd1NoZWxsLmgiCiAKICNpbmNsdWRlICJDb250ZW50U2VjdXJpdHlQ
b2xpY3kuaCIKKyNpbmNsdWRlICJET01XcmFwcGVyV29ybGQuaCIKICNpbmNsdWRlICJEYXRlRXh0
ZW5zaW9uLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnRMb2FkZXIuaCIKICNpbmNsdWRlICJGcmFtZS5o
IgpAQCAtMTU3LDcgKzE1OCw3IEBAIHZvaWQgVjhET01XaW5kb3dTaGVsbDo6Y2xlYXJGb3JOYXZp
Z2F0aW9uKCkKICAgICAvLyB3aWxsIGJlIHByb3RlY3RlZCBieSB0aGUgc2VjdXJpdHkgY2hlY2tz
IG9uIHRoZSBET01XaW5kb3cgd3JhcHBlci4KICAgICBjbGVhckRvY3VtZW50UHJvcGVydHkoKTsK
IAotICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd2luZG93V3JhcHBlciA9IG1fZ2xvYmFsLT5G
aW5kSW5zdGFuY2VJblByb3RvdHlwZUNoYWluKFY4RE9NV2luZG93OjpHZXRUZW1wbGF0ZShtX2lz
b2xhdGUpKTsKKyAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdpbmRvd1dyYXBwZXIgPSBtX2ds
b2JhbC0+RmluZEluc3RhbmNlSW5Qcm90b3R5cGVDaGFpbihWOERPTVdpbmRvdzo6R2V0VGVtcGxh
dGUobV9pc29sYXRlLCB3b3JsZFR5cGVJbk1haW5UaHJlYWQobV9pc29sYXRlKSkpOwogICAgIEFT
U0VSVCghd2luZG93V3JhcHBlci5Jc0VtcHR5KCkpOwogICAgIHdpbmRvd1dyYXBwZXItPlR1cm5P
bkFjY2Vzc0NoZWNrKCk7CiAgICAgbV9jb250ZXh0LT5EZXRhY2hHbG9iYWwoKTsKQEAgLTMxNCw2
ICszMTUsNyBAQCB2b2lkIFY4RE9NV2luZG93U2hlbGw6OmNyZWF0ZUNvbnRleHQoKQogCiBib29s
IFY4RE9NV2luZG93U2hlbGw6Omluc3RhbGxET01XaW5kb3coKQogeworICAgIERPTVdyYXBwZXJX
b3JsZDo6c2V0SW5pdGlhbGl6aW5nV2luZG93KHRydWUpOwogICAgIERPTVdpbmRvdyogd2luZG93
ID0gbV9mcmFtZS0+ZG9jdW1lbnQoKS0+ZG9tV2luZG93KCk7CiAgICAgdjg6OkxvY2FsPHY4OjpP
YmplY3Q+IHdpbmRvd1dyYXBwZXIgPSBWOE9iamVjdENvbnN0cnVjdG9yOjpuZXdJbnN0YW5jZShW
OFBlckNvbnRleHREYXRhOjpmcm9tKG1fY29udGV4dC5nZXQoKSktPmNvbnN0cnVjdG9yRm9yVHlw
ZSgmVjhET01XaW5kb3c6OmluZm8pKTsKICAgICBpZiAod2luZG93V3JhcHBlci5Jc0VtcHR5KCkp
CkBAIC0zNDAsNiArMzQyLDcgQEAgYm9vbCBWOERPTVdpbmRvd1NoZWxsOjppbnN0YWxsRE9NV2lu
ZG93KCkKICAgICBWOERPTVdyYXBwZXI6OnNldE5hdGl2ZUluZm8oaW5uZXJHbG9iYWxPYmplY3Qs
ICZWOERPTVdpbmRvdzo6aW5mbywgd2luZG93KTsKICAgICBpbm5lckdsb2JhbE9iamVjdC0+U2V0
UHJvdG90eXBlKHdpbmRvd1dyYXBwZXIpOwogICAgIFY4RE9NV3JhcHBlcjo6YXNzb2NpYXRlT2Jq
ZWN0V2l0aFdyYXBwZXIoUGFzc1JlZlB0cjxET01XaW5kb3c+KHdpbmRvdyksICZWOERPTVdpbmRv
dzo6aW5mbywgd2luZG93V3JhcHBlciwgbV9pc29sYXRlLCBXcmFwcGVyQ29uZmlndXJhdGlvbjo6
RGVwZW5kZW50KTsKKyAgICBET01XcmFwcGVyV29ybGQ6OnNldEluaXRpYWxpemluZ1dpbmRvdyhm
YWxzZSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L1Y4RE9NV3JhcHBlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92
OC9WOERPTVdyYXBwZXIuY3BwCmluZGV4IDRkOGMyMjZmM2UyNzJmMGUzNTk2MjFlOGQ0MDY4YzMx
OTRiNTNmYjguLmM1ODVhYTFiYWMxZDYyYjQ1ODg2ZDEzYmU0NjdjMmMxNzM3MjYwY2YgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NV3JhcHBlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhET01XcmFwcGVyLmNwcApAQCAtNzksNyArNzks
NyBAQCB2ODo6TG9jYWw8djg6Ok9iamVjdD4gVjhET01XcmFwcGVyOjpjcmVhdGVXcmFwcGVyKHY4
OjpIYW5kbGU8djg6Ok9iamVjdD4gY3JlYXRpbwogICAgIFY4V3JhcHBlckluc3RhbnRpYXRpb25T
Y29wZSBzY29wZShjcmVhdGlvbkNvbnRleHQpOwogCiAgICAgVjhQZXJDb250ZXh0RGF0YSogcGVy
Q29udGV4dERhdGEgPSBWOFBlckNvbnRleHREYXRhOjpmcm9tKHNjb3BlLmNvbnRleHQoKSk7Ci0g
ICAgdjg6OkxvY2FsPHY4OjpPYmplY3Q+IHdyYXBwZXIgPSBwZXJDb250ZXh0RGF0YSA/IHBlckNv
bnRleHREYXRhLT5jcmVhdGVXcmFwcGVyRnJvbUNhY2hlKHR5cGUpIDogVjhPYmplY3RDb25zdHJ1
Y3Rvcjo6bmV3SW5zdGFuY2UodHlwZS0+Z2V0VGVtcGxhdGUoaXNvbGF0ZSktPkdldEZ1bmN0aW9u
KCkpOworICAgIHY4OjpMb2NhbDx2ODo6T2JqZWN0PiB3cmFwcGVyID0gcGVyQ29udGV4dERhdGEg
PyBwZXJDb250ZXh0RGF0YS0+Y3JlYXRlV3JhcHBlckZyb21DYWNoZSh0eXBlKSA6IFY4T2JqZWN0
Q29uc3RydWN0b3I6Om5ld0luc3RhbmNlKHR5cGUtPmdldFRlbXBsYXRlKGlzb2xhdGUsIHdvcmxk
VHlwZUluTWFpblRocmVhZChpc29sYXRlKSktPkdldEZ1bmN0aW9uKCkpOwogCiAgICAgaWYgKHR5
cGUgPT0gJlY4SFRNTERvY3VtZW50OjppbmZvICYmICF3cmFwcGVyLklzRW1wdHkoKSkKICAgICAg
ICAgd3JhcHBlciA9IFY4SFRNTERvY3VtZW50Ojp3cmFwSW5TaGFkb3dPYmplY3Qod3JhcHBlciwg
c3RhdGljX2Nhc3Q8Tm9kZSo+KGltcGwpLCBpc29sYXRlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4SW5pdGlhbGl6ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvVjhJbml0aWFsaXplci5jcHAKaW5kZXggY2IzYmM2ZGMxZWNjYTJhYmI5NDViOTll
MzQ3NDA0NGQyMjMyOGIxNi4uZTIxYzBkNWQ4NGMxYzRkM2QyZDg2YjhhODNmZTZhZmJiZmVmYWUz
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhJbml0aWFsaXplci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhJbml0aWFsaXplci5jcHAKQEAg
LTUxLDcgKzUxLDcgQEAgc3RhdGljIEZyYW1lKiBmaW5kRnJhbWUodjg6OkxvY2FsPHY4OjpPYmpl
Y3Q+IGhvc3QsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IGRhdGEsIHYKICAgICBXcmFwcGVyVHlwZUlu
Zm8qIHR5cGUgPSBXcmFwcGVyVHlwZUluZm86OnVud3JhcChkYXRhKTsKIAogICAgIGlmIChWOERP
TVdpbmRvdzo6aW5mby5lcXVhbHModHlwZSkpIHsKLSAgICAgICAgdjg6OkhhbmRsZTx2ODo6T2Jq
ZWN0PiB3aW5kb3dXcmFwcGVyID0gaG9zdC0+RmluZEluc3RhbmNlSW5Qcm90b3R5cGVDaGFpbihW
OERPTVdpbmRvdzo6R2V0VGVtcGxhdGUoaXNvbGF0ZSkpOworICAgICAgICB2ODo6SGFuZGxlPHY4
OjpPYmplY3Q+IHdpbmRvd1dyYXBwZXIgPSBob3N0LT5GaW5kSW5zdGFuY2VJblByb3RvdHlwZUNo
YWluKFY4RE9NV2luZG93OjpHZXRUZW1wbGF0ZShpc29sYXRlLCB3b3JsZFR5cGVJbk1haW5UaHJl
YWQoaXNvbGF0ZSkpKTsKICAgICAgICAgaWYgKHdpbmRvd1dyYXBwZXIuSXNFbXB0eSgpKQogICAg
ICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIHJldHVybiBWOERPTVdpbmRvdzo6dG9OYXRpdmUo
d2luZG93V3JhcHBlciktPmZyYW1lKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9WOFBlckNvbnRleHREYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L1Y4UGVyQ29udGV4dERhdGEuY3BwCmluZGV4IGIzOTIzMjNhOGZkZTdlYzc0YTMzZjAyYWE5NWM2
MTYyZWE4NjU2NDcuLjg2ZWViMTIzY2I4YzZjNjMxZDYyZGVlOGVmNTg0ZGQ5ZDUwMjM4YTggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4UGVyQ29udGV4dERhdGEuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4UGVyQ29udGV4dERhdGEuY3BwCkBA
IC0xMTUsNyArMTE1LDcgQEAgdjg6OkxvY2FsPHY4OjpGdW5jdGlvbj4gVjhQZXJDb250ZXh0RGF0
YTo6Y29uc3RydWN0b3JGb3JUeXBlU2xvd0Nhc2UoV3JhcHBlclR5cGUKICAgICBBU1NFUlQoIW1f
b2JqZWN0UHJvdG90eXBlLmlzRW1wdHkoKSk7CiAKICAgICB2ODo6Q29udGV4dDo6U2NvcGUgc2Nv
cGUobV9jb250ZXh0KTsKLSAgICB2ODo6SGFuZGxlPHY4OjpGdW5jdGlvblRlbXBsYXRlPiBmdW5j
dGlvblRlbXBsYXRlID0gdHlwZS0+Z2V0VGVtcGxhdGUobV9jb250ZXh0LT5HZXRJc29sYXRlKCkp
OworICAgIHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IGZ1bmN0aW9uVGVtcGxhdGUg
PSB0eXBlLT5nZXRUZW1wbGF0ZShtX2NvbnRleHQtPkdldElzb2xhdGUoKSwgd29ybGRUeXBlKG1f
Y29udGV4dC0+R2V0SXNvbGF0ZSgpKSk7CiAgICAgLy8gR2V0dGluZyB0aGUgZnVuY3Rpb24gbWln
aHQgZmFpbCBpZiB3ZSdyZSBydW5uaW5nIG91dCBvZiBzdGFjayBvciBtZW1vcnkuCiAgICAgdjg6
OlRyeUNhdGNoIHRyeUNhdGNoOwogICAgIHY4OjpMb2NhbDx2ODo6RnVuY3Rpb24+IGZ1bmN0aW9u
ID0gZnVuY3Rpb25UZW1wbGF0ZS0+R2V0RnVuY3Rpb24oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L1dvcmtlclNjcmlwdENvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvdjgvV29ya2VyU2NyaXB0Q29udHJvbGxlci5jcHAKaW5kZXggYmM0NjA5
MzgyNzlmZTRkZjMzYTJhODE1MDBjNjhjMWE2MzA1Nzk5MS4uYjQzODM1MzY4NjUwZDQzNjlmNmZm
Y2UxZTJmMDFkYzk0MDI2ZDUzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvV29ya2VyU2NyaXB0Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvdjgvV29ya2VyU2NyaXB0Q29udHJvbGxlci5jcHAKQEAgLTQ2LDYgKzQ2LDcgQEAKICNpbmNs
dWRlICJXb3JrZXJDb250ZXh0LmgiCiAjaW5jbHVkZSAiV29ya2VyT2JqZWN0UHJveHkuaCIKICNp
bmNsdWRlICJXb3JrZXJUaHJlYWQuaCIKKyNpbmNsdWRlICJXcmFwcGVyVHlwZUluZm8uaCIKICNp
bmNsdWRlIDx2OC5oPgogCiAjaWYgUExBVEZPUk0oQ0hST01JVU0pCkBAIC02Myw3ICs2NCw3IEBA
IFdvcmtlclNjcmlwdENvbnRyb2xsZXI6OldvcmtlclNjcmlwdENvbnRyb2xsZXIoV29ya2VyQ29u
dGV4dCogd29ya2VyQ29udGV4dCkKIHsKICAgICBtX2lzb2xhdGUtPkVudGVyKCk7CiAgICAgVjhQ
ZXJJc29sYXRlRGF0YSogZGF0YSA9IFY4UGVySXNvbGF0ZURhdGE6OmNyZWF0ZShtX2lzb2xhdGUp
OwotICAgIG1fZG9tRGF0YVN0b3JlID0gYWRvcHRQdHIobmV3IERPTURhdGFTdG9yZShET01EYXRh
U3RvcmU6OldvcmtlcikpOworICAgIG1fZG9tRGF0YVN0b3JlID0gYWRvcHRQdHIobmV3IERPTURh
dGFTdG9yZShXb3JrZXJXb3JsZCkpOwogICAgIGRhdGEtPnNldERPTURhdGFTdG9yZShtX2RvbURh
dGFTdG9yZS5nZXQoKSk7CiAKICAgICBWOEluaXRpYWxpemVyOjppbml0aWFsaXplV29ya2VyKG1f
aXNvbGF0ZSk7CkBAIC0yNDksNyArMjUwLDcgQEAgV29ya2VyU2NyaXB0Q29udHJvbGxlciogV29y
a2VyU2NyaXB0Q29udHJvbGxlcjo6Y29udHJvbGxlckZvckNvbnRleHQoKQogICAgICAgICByZXR1
cm4gMDsKICAgICB2ODo6SGFuZGxlPHY4OjpDb250ZXh0PiBjb250ZXh0ID0gdjg6OkNvbnRleHQ6
OkdldEN1cnJlbnQoKTsKICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGdsb2JhbCA9IGNvbnRl
eHQtPkdsb2JhbCgpOwotICAgIGdsb2JhbCA9IGdsb2JhbC0+RmluZEluc3RhbmNlSW5Qcm90b3R5
cGVDaGFpbihWOFdvcmtlckNvbnRleHQ6OkdldFRlbXBsYXRlKGNvbnRleHQtPkdldElzb2xhdGUo
KSkpOworICAgIGdsb2JhbCA9IGdsb2JhbC0+RmluZEluc3RhbmNlSW5Qcm90b3R5cGVDaGFpbihW
OFdvcmtlckNvbnRleHQ6OkdldFRlbXBsYXRlKGNvbnRleHQtPkdldElzb2xhdGUoKSwgV29ya2Vy
V29ybGQpKTsKICAgICAvLyBSZXR1cm4gMCBpZiB0aGUgY3VycmVudCBleGVjdXRpbmcgY29udGV4
dCBpcyBub3QgdGhlIHdvcmtlciBjb250ZXh0LgogICAgIGlmIChnbG9iYWwuSXNFbXB0eSgpKQog
ICAgICAgICByZXR1cm4gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L1dyYXBwZXJUeXBlSW5mby5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvV3JhcHBlclR5
cGVJbmZvLmgKaW5kZXggYjMxMGFmOWE3ZDJmODAxMjA0NDg3ODZhODkwZjNiZmE4NjI2NjUyNi4u
ZGMyYTVlZWU3MDEyYmZkNDg3MTA2M2QxNjQ2NTlkMzhlOGUyMDYyMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvV3JhcHBlclR5cGVJbmZvLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvdjgvV3JhcHBlclR5cGVJbmZvLmgKQEAgLTQ3LDcgKzQ3LDEzIEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKICAgICBzdGF0aWMgY29uc3QgdWludDE2X3QgdjhET01Ob2RlQ2xh
c3NJZCA9IDE7CiAgICAgc3RhdGljIGNvbnN0IHVpbnQxNl90IHY4RE9NT2JqZWN0Q2xhc3NJZCA9
IDI7CiAKLSAgICB0eXBlZGVmIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiAo
KkdldFRlbXBsYXRlRnVuY3Rpb24pKHY4OjpJc29sYXRlKik7CisgICAgZW51bSBXcmFwcGVyV29y
bGRUeXBlIHsKKyAgICAgICAgTWFpbldvcmxkLAorICAgICAgICBJc29sYXRlZFdvcmxkLAorICAg
ICAgICBXb3JrZXJXb3JsZAorICAgIH07CisKKyAgICB0eXBlZGVmIHY4OjpQZXJzaXN0ZW50PHY4
OjpGdW5jdGlvblRlbXBsYXRlPiAoKkdldFRlbXBsYXRlRnVuY3Rpb24pKHY4OjpJc29sYXRlKiwg
V3JhcHBlcldvcmxkVHlwZSk7CiAgICAgdHlwZWRlZiB2b2lkICgqRGVyZWZPYmplY3RGdW5jdGlv
bikodm9pZCopOwogICAgIHR5cGVkZWYgQWN0aXZlRE9NT2JqZWN0KiAoKlRvQWN0aXZlRE9NT2Jq
ZWN0RnVuY3Rpb24pKHY4OjpIYW5kbGU8djg6Ok9iamVjdD4pOwogICAgIHR5cGVkZWYgRXZlbnRU
YXJnZXQqICgqVG9FdmVudFRhcmdldEZ1bmN0aW9uKSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+KTsK
QEAgLTg1LDcgKzkxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgICAgICB9CiAgICAgICAgIAotICAgICAgICB2ODo6UGVyc2lzdGVudDx2ODo6
RnVuY3Rpb25UZW1wbGF0ZT4gZ2V0VGVtcGxhdGUodjg6Oklzb2xhdGUqIGlzb2xhdGUpIHsgcmV0
dXJuIGdldFRlbXBsYXRlRnVuY3Rpb24oaXNvbGF0ZSk7IH0KKyAgICAgICAgdjg6OlBlcnNpc3Rl
bnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IGdldFRlbXBsYXRlKHY4OjpJc29sYXRlKiBpc29sYXRl
LCBXcmFwcGVyV29ybGRUeXBlIHdvcmxkVHlwZSkgeyByZXR1cm4gZ2V0VGVtcGxhdGVGdW5jdGlv
bihpc29sYXRlLCB3b3JsZFR5cGUpOyB9CiAgICAgICAgIAogICAgICAgICB2b2lkIGRlcmVmT2Jq
ZWN0KHZvaWQqIG9iamVjdCkKICAgICAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvdjgvY3VzdG9tL1Y4RE9NV2luZG93Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERPTVdpbmRvd0N1c3RvbS5jcHAKaW5kZXggYjEzMTJiZWEz
MmZhYjJhN2I5Y2NmOWNlNzA4ZmQ4ODNjZGZkOGVjZC4uNmNlZjJlNTZjZWM2NmRlOTM3NmJjZGI0
YmFmMDBlYzI1ZTMyOTNmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
Y3VzdG9tL1Y4RE9NV2luZG93Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy92OC9jdXN0b20vVjhET01XaW5kb3dDdXN0b20uY3BwCkBAIC0xNDcsNyArMTQ3LDcgQEAgdjg6
OkhhbmRsZTx2ODo6VmFsdWU+IFdpbmRvd1NldFRpbWVvdXRJbXBsKGNvbnN0IHY4OjpBcmd1bWVu
dHMmIGFyZ3MsIGJvb2wgc2luZ2wKIAogdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4RE9NV2luZG93
OjpldmVudEF0dHJHZXR0ZXJDdXN0b20odjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0
IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7Ci0gICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBo
b2xkZXIgPSBpbmZvLlRoaXMoKS0+RmluZEluc3RhbmNlSW5Qcm90b3R5cGVDaGFpbihWOERPTVdp
bmRvdzo6R2V0VGVtcGxhdGUoaW5mby5HZXRJc29sYXRlKCkpKTsKKyAgICB2ODo6SGFuZGxlPHY4
OjpPYmplY3Q+IGhvbGRlciA9IGluZm8uVGhpcygpLT5GaW5kSW5zdGFuY2VJblByb3RvdHlwZUNo
YWluKFY4RE9NV2luZG93OjpHZXRUZW1wbGF0ZShpbmZvLkdldElzb2xhdGUoKSwgd29ybGRUeXBl
SW5NYWluVGhyZWFkKGluZm8uR2V0SXNvbGF0ZSgpKSkpOwogICAgIGlmIChob2xkZXIuSXNFbXB0
eSgpKQogICAgICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOwogCkBAIC0xNjksNyArMTY5LDcg
QEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4RE9NV2luZG93OjpldmVudEF0dHJHZXR0ZXJDdXN0
b20odjg6OkxvY2FsPHY4OjpTdHJpbmc+IG4KIAogdm9pZCBWOERPTVdpbmRvdzo6ZXZlbnRBdHRy
U2V0dGVyQ3VzdG9tKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6OlZh
bHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsKLSAgICB2ODo6SGFu
ZGxlPHY4OjpPYmplY3Q+IGhvbGRlciA9IGluZm8uVGhpcygpLT5GaW5kSW5zdGFuY2VJblByb3Rv
dHlwZUNoYWluKFY4RE9NV2luZG93OjpHZXRUZW1wbGF0ZShpbmZvLkdldElzb2xhdGUoKSkpOwor
ICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gaG9sZGVyID0gaW5mby5UaGlzKCktPkZpbmRJbnN0
YW5jZUluUHJvdG90eXBlQ2hhaW4oVjhET01XaW5kb3c6OkdldFRlbXBsYXRlKGluZm8uR2V0SXNv
bGF0ZSgpLCB3b3JsZFR5cGVJbk1haW5UaHJlYWQoaW5mby5HZXRJc29sYXRlKCkpKSk7CiAgICAg
aWYgKGhvbGRlci5Jc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIApAQCAtMzQ1LDcgKzM0NSw3
IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOERPTVdpbmRvdzo6cG9zdE1lc3NhZ2VNZXRob2RD
dXN0b20oY29uc3Qgdjg6OkFyZ3VtZW50cyYKIC8vIHN3aXRjaGluZyBjb250ZXh0IG9mIHJlY2Vp
dmVyLiBJIGNvbnNpZGVyIGl0IGlzIGRhbmdlcm91cy4KIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBW
OERPTVdpbmRvdzo6dG9TdHJpbmdNZXRob2RDdXN0b20oY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJn
cykKIHsKLSAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGRvbVdyYXBwZXIgPSBhcmdzLlRoaXMo
KS0+RmluZEluc3RhbmNlSW5Qcm90b3R5cGVDaGFpbihWOERPTVdpbmRvdzo6R2V0VGVtcGxhdGUo
YXJncy5HZXRJc29sYXRlKCkpKTsKKyAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGRvbVdyYXBw
ZXIgPSBhcmdzLlRoaXMoKS0+RmluZEluc3RhbmNlSW5Qcm90b3R5cGVDaGFpbihWOERPTVdpbmRv
dzo6R2V0VGVtcGxhdGUoYXJncy5HZXRJc29sYXRlKCksIHdvcmxkVHlwZUluTWFpblRocmVhZChh
cmdzLkdldElzb2xhdGUoKSkpKTsKICAgICBpZiAoZG9tV3JhcHBlci5Jc0VtcHR5KCkpCiAgICAg
ICAgIHJldHVybiBhcmdzLlRoaXMoKS0+T2JqZWN0UHJvdG9Ub1N0cmluZygpOwogICAgIHJldHVy
biBkb21XcmFwcGVyLT5PYmplY3RQcm90b1RvU3RyaW5nKCk7CkBAIC01MTEsNyArNTExLDcgQEAg
djg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4RE9NV2luZG93OjpzZXRJbnRlcnZhbE1ldGhvZEN1c3Rv
bShjb25zdCB2ODo6QXJndW1lbnRzJgogYm9vbCBWOERPTVdpbmRvdzo6bmFtZWRTZWN1cml0eUNo
ZWNrQ3VzdG9tKHY4OjpMb2NhbDx2ODo6T2JqZWN0PiBob3N0LCB2ODo6TG9jYWw8djg6OlZhbHVl
PiBrZXksIHY4OjpBY2Nlc3NUeXBlIHR5cGUsIHY4OjpMb2NhbDx2ODo6VmFsdWU+KQogewogICAg
IHY4OjpJc29sYXRlKiBpc29sYXRlID0gdjg6Oklzb2xhdGU6OkdldEN1cnJlbnQoKTsKLSAgICB2
ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdpbmRvdyA9IGhvc3QtPkZpbmRJbnN0YW5jZUluUHJvdG90
eXBlQ2hhaW4oVjhET01XaW5kb3c6OkdldFRlbXBsYXRlKGlzb2xhdGUpKTsKKyAgICB2ODo6SGFu
ZGxlPHY4OjpPYmplY3Q+IHdpbmRvdyA9IGhvc3QtPkZpbmRJbnN0YW5jZUluUHJvdG90eXBlQ2hh
aW4oVjhET01XaW5kb3c6OkdldFRlbXBsYXRlKGlzb2xhdGUsIHdvcmxkVHlwZUluTWFpblRocmVh
ZChpc29sYXRlKSkpOwogICAgIGlmICh3aW5kb3cuSXNFbXB0eSgpKQogICAgICAgICByZXR1cm4g
ZmFsc2U7ICAvLyB0aGUgZnJhbWUgaXMgZ29uZS4KIApAQCAtNTQ1LDcgKzU0NSw3IEBAIGJvb2wg
VjhET01XaW5kb3c6Om5hbWVkU2VjdXJpdHlDaGVja0N1c3RvbSh2ODo6TG9jYWw8djg6Ok9iamVj
dD4gaG9zdCwgdjg6OkxvY2FsCiBib29sIFY4RE9NV2luZG93OjppbmRleGVkU2VjdXJpdHlDaGVj
a0N1c3RvbSh2ODo6TG9jYWw8djg6Ok9iamVjdD4gaG9zdCwgdWludDMyX3QgaW5kZXgsIHY4OjpB
Y2Nlc3NUeXBlIHR5cGUsIHY4OjpMb2NhbDx2ODo6VmFsdWU+KQogewogICAgIHY4OjpJc29sYXRl
KiBpc29sYXRlID0gdjg6Oklzb2xhdGU6OkdldEN1cnJlbnQoKTsKLSAgICB2ODo6SGFuZGxlPHY4
OjpPYmplY3Q+IHdpbmRvdyA9IGhvc3QtPkZpbmRJbnN0YW5jZUluUHJvdG90eXBlQ2hhaW4oVjhE
T01XaW5kb3c6OkdldFRlbXBsYXRlKGlzb2xhdGUpKTsKKyAgICB2ODo6SGFuZGxlPHY4OjpPYmpl
Y3Q+IHdpbmRvdyA9IGhvc3QtPkZpbmRJbnN0YW5jZUluUHJvdG90eXBlQ2hhaW4oVjhET01XaW5k
b3c6OkdldFRlbXBsYXRlKGlzb2xhdGUsIHdvcmxkVHlwZUluTWFpblRocmVhZChpc29sYXRlKSkp
OwogICAgIGlmICh3aW5kb3cuSXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKQEAg
LTU4Nyw3ICs1ODcsNyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOChET01XaW5kb3cqIHdp
bmRvdywgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVhdGlvbkNvbgogICAgIC8vIG5lY2Vzc2Fy
aWx5IHRoZSBmaXJzdCBnbG9iYWwgb2JqZWN0IGFzc29jaWF0ZWQgd2l0aCB0aGF0IERPTVdpbmRv
dy4KICAgICB2ODo6SGFuZGxlPHY4OjpDb250ZXh0PiBjdXJyZW50Q29udGV4dCA9IHY4OjpDb250
ZXh0OjpHZXRDdXJyZW50KCk7CiAgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjdXJyZW50R2xv
YmFsID0gY3VycmVudENvbnRleHQtPkdsb2JhbCgpOwotICAgIHY4OjpIYW5kbGU8djg6Ok9iamVj
dD4gd2luZG93V3JhcHBlciA9IGN1cnJlbnRHbG9iYWwtPkZpbmRJbnN0YW5jZUluUHJvdG90eXBl
Q2hhaW4oVjhET01XaW5kb3c6OkdldFRlbXBsYXRlKGlzb2xhdGUpKTsKKyAgICB2ODo6SGFuZGxl
PHY4OjpPYmplY3Q+IHdpbmRvd1dyYXBwZXIgPSBjdXJyZW50R2xvYmFsLT5GaW5kSW5zdGFuY2VJ
blByb3RvdHlwZUNoYWluKFY4RE9NV2luZG93OjpHZXRUZW1wbGF0ZShpc29sYXRlLCB3b3JsZFR5
cGVJbk1haW5UaHJlYWQoaXNvbGF0ZSkpKTsKICAgICBpZiAoIXdpbmRvd1dyYXBwZXIuSXNFbXB0
eSgpKSB7CiAgICAgICAgIGlmIChWOERPTVdpbmRvdzo6dG9OYXRpdmUod2luZG93V3JhcHBlcikg
PT0gd2luZG93KQogICAgICAgICAgICAgcmV0dXJuIGN1cnJlbnRHbG9iYWw7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MRG9jdW1lbnRDdXN0b20u
Y3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTERvY3VtZW50Q3Vz
dG9tLmNwcAppbmRleCAxYjU4ZjRhMzllMDU5MzA5NWI3MWY5YjBmODA3Mjk4YmE0OWU2N2VjLi42
OGIwYmFiYTViN2MyN2U0MjdkMjRhNmU1MTgzMjRmNDJhZTg1ZmY5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MRG9jdW1lbnRDdXN0b20uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxEb2N1bWVudEN1c3Rv
bS5jcHAKQEAgLTYwLDcgKzYwLDcgQEAgdjg6OkxvY2FsPHY4OjpPYmplY3Q+IFY4SFRNTERvY3Vt
ZW50Ojp3cmFwSW5TaGFkb3dPYmplY3Qodjg6OkxvY2FsPHY4OjpPYmplY3Q+IHcKICAgICAgICAg
aWYgKHNoYWRvd1RlbXBsYXRlLklzRW1wdHkoKSkKICAgICAgICAgICAgIHJldHVybiB2ODo6TG9j
YWw8djg6Ok9iamVjdD4oKTsKICAgICAgICAgc2hhZG93VGVtcGxhdGUtPlNldENsYXNzTmFtZSh2
ODo6U3RyaW5nOjpOZXdTeW1ib2woIkhUTUxEb2N1bWVudCIpKTsKLSAgICAgICAgc2hhZG93VGVt
cGxhdGUtPkluaGVyaXQoVjhIVE1MRG9jdW1lbnQ6OkdldFRlbXBsYXRlKGlzb2xhdGUpKTsKKyAg
ICAgICAgc2hhZG93VGVtcGxhdGUtPkluaGVyaXQoVjhIVE1MRG9jdW1lbnQ6OkdldFRlbXBsYXRl
KGlzb2xhdGUsIHdvcmxkVHlwZUluTWFpblRocmVhZChpc29sYXRlKSkpOwogICAgICAgICBzaGFk
b3dUZW1wbGF0ZS0+SW5zdGFuY2VUZW1wbGF0ZSgpLT5TZXRJbnRlcm5hbEZpZWxkQ291bnQoVjhI
VE1MRG9jdW1lbnQ6OmludGVybmFsRmllbGRDb3VudCk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MSW1hZ2VFbGVtZW50Q29uc3Ry
dWN0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTEltYWdl
RWxlbWVudENvbnN0cnVjdG9yLmNwcAppbmRleCA5MzU1ZWUzZGY1ZjAwZDZlZTQwODUxNjJiNjU1
NWM1Y2Y0MjgxYzI1Li45ZTc4YWJmNWQ1OGFiNTgxYmNmY2MzZTc1OTExZTg5ZWJhNThkYjA0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MSW1hZ2VF
bGVtZW50Q29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1
c3RvbS9WOEhUTUxJbWFnZUVsZW1lbnRDb25zdHJ1Y3Rvci5jcHAKQEAgLTgxLDcgKzgxLDcgQEAg
c3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB2OEhUTUxJbWFnZUVsZW1lbnRDb25zdHJ1Y3Rv
ck1ldGhvZEN1c3RvbShjb25zdCB2ODoKICAgICByZXR1cm4gd3JhcHBlcjsKIH0KIAotdjg6OlBl
cnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IFY4SFRNTEltYWdlRWxlbWVudENvbnN0cnVj
dG9yOjpHZXRUZW1wbGF0ZSh2ODo6SXNvbGF0ZSogaXNvbGF0ZSkKK3Y4OjpQZXJzaXN0ZW50PHY4
OjpGdW5jdGlvblRlbXBsYXRlPiBWOEhUTUxJbWFnZUVsZW1lbnRDb25zdHJ1Y3Rvcjo6R2V0VGVt
cGxhdGUodjg6Oklzb2xhdGUqIGlzb2xhdGUsIFdyYXBwZXJXb3JsZFR5cGUgd29ybGRUeXBlKQog
ewogICAgIHN0YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gY2FjaGVk
VGVtcGxhdGU7CiAgICAgaWYgKCFjYWNoZWRUZW1wbGF0ZS5Jc0VtcHR5KCkpCkBAIC05Myw3ICs5
Myw3IEBAIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBWOEhUTUxJbWFnZUVs
ZW1lbnRDb25zdHJ1Y3Rvcjo6R2V0VGVtcGxhdGUoCiAgICAgdjg6OkxvY2FsPHY4OjpPYmplY3RU
ZW1wbGF0ZT4gaW5zdGFuY2UgPSByZXN1bHQtPkluc3RhbmNlVGVtcGxhdGUoKTsKICAgICBpbnN0
YW5jZS0+U2V0SW50ZXJuYWxGaWVsZENvdW50KFY4SFRNTEltYWdlRWxlbWVudDo6aW50ZXJuYWxG
aWVsZENvdW50KTsKICAgICByZXN1bHQtPlNldENsYXNzTmFtZSh2ODo6U3RyaW5nOjpOZXdTeW1i
b2woIkhUTUxJbWFnZUVsZW1lbnQiKSk7Ci0gICAgcmVzdWx0LT5Jbmhlcml0KFY4SFRNTEltYWdl
RWxlbWVudDo6R2V0VGVtcGxhdGUoaXNvbGF0ZSkpOworICAgIHJlc3VsdC0+SW5oZXJpdChWOEhU
TUxJbWFnZUVsZW1lbnQ6OkdldFRlbXBsYXRlKGlzb2xhdGUsIHdvcmxkVHlwZSkpOwogCiAgICAg
Y2FjaGVkVGVtcGxhdGUgPSB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT46Ok5l
dyhpc29sYXRlLCByZXN1bHQpOwogICAgIHJldHVybiBjYWNoZWRUZW1wbGF0ZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxJbWFnZUVsZW1lbnRD
b25zdHJ1Y3Rvci5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTElt
YWdlRWxlbWVudENvbnN0cnVjdG9yLmgKaW5kZXggOTU2YmM4ZDg1YjljMGMyZTExOWIxOGFhZDE4
NzA3YjUyODllYjU5MS4uOTdiMzhlNTA1ZWYwYjgxYTgxMWU4YTMxN2Y1Y2M3MjVlODdiOTJjMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTEltYWdl
RWxlbWVudENvbnN0cnVjdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3Vz
dG9tL1Y4SFRNTEltYWdlRWxlbWVudENvbnN0cnVjdG9yLmgKQEAgLTM5LDcgKzM5LDcgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBWOEhUTUxJbWFnZUVsZW1lbnRDb25zdHJ1Y3RvciB7
CiBwdWJsaWM6Ci0gICAgc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRl
PiBHZXRUZW1wbGF0ZSh2ODo6SXNvbGF0ZSogPSAwKTsKKyAgICBzdGF0aWMgdjg6OlBlcnNpc3Rl
bnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IEdldFRlbXBsYXRlKHY4OjpJc29sYXRlKiwgV3JhcHBl
cldvcmxkVHlwZSk7CiAgICAgc3RhdGljIFdyYXBwZXJUeXBlSW5mbyBpbmZvOwogfTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SW5qZWN0ZWRTY3Jp
cHRNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEluamVj
dGVkU2NyaXB0TWFuYWdlci5jcHAKaW5kZXggYjI5NjFlMzAwNDBkYWM2OGIyMTRjYmE1YTQ4YjYz
MGRkNDM5ZmI1MC4uNzMzOTEzOTVjY2NlNmFkOTQxYjFjZmRjODNmMDZiNzJiYjBhYWQzNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SW5qZWN0ZWRTY3Jp
cHRNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhJ
bmplY3RlZFNjcmlwdE1hbmFnZXIuY3BwCkBAIC01NSw3ICs1NSw3IEBAIHN0YXRpYyB2b2lkIFdl
YWtSZWZlcmVuY2VDYWxsYmFjayh2ODo6SXNvbGF0ZSogaXNvbGF0ZSwgdjg6OlBlcnNpc3RlbnQ8
djg6OlZhbHVlCiAKIHN0YXRpYyB2ODo6TG9jYWw8djg6Ok9iamVjdD4gY3JlYXRlSW5qZWN0ZWRT
Y3JpcHRIb3N0VjhXcmFwcGVyKEluamVjdGVkU2NyaXB0SG9zdCogaG9zdCwgdjg6Oklzb2xhdGUq
IGlzb2xhdGUpCiB7Ci0gICAgdjg6OkxvY2FsPHY4OjpGdW5jdGlvbj4gZnVuY3Rpb24gPSBWOElu
amVjdGVkU2NyaXB0SG9zdDo6R2V0VGVtcGxhdGUoaXNvbGF0ZSktPkdldEZ1bmN0aW9uKCk7Cisg
ICAgdjg6OkxvY2FsPHY4OjpGdW5jdGlvbj4gZnVuY3Rpb24gPSBWOEluamVjdGVkU2NyaXB0SG9z
dDo6R2V0VGVtcGxhdGUoaXNvbGF0ZSwgTWFpbldvcmxkKS0+R2V0RnVuY3Rpb24oKTsKICAgICBp
ZiAoZnVuY3Rpb24uSXNFbXB0eSgpKSB7CiAgICAgICAgIC8vIFJldHVybiBpZiBhbGxvY2F0aW9u
IGZhaWxlZC4KICAgICAgICAgcmV0dXJuIHY4OjpMb2NhbDx2ODo6T2JqZWN0PigpOwpAQCAtMTE4
LDcgKzExOCw3IEBAIGJvb2wgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOjpjYW5BY2Nlc3NJbnNwZWN0
ZWRXaW5kb3coU2NyaXB0U3RhdGUqIHNjcmlwdFN0YXRlKQogICAgIHY4OjpMb2NhbDx2ODo6T2Jq
ZWN0PiBnbG9iYWwgPSBjb250ZXh0LT5HbG9iYWwoKTsKICAgICBpZiAoZ2xvYmFsLklzRW1wdHko
KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gaG9s
ZGVyID0gZ2xvYmFsLT5GaW5kSW5zdGFuY2VJblByb3RvdHlwZUNoYWluKFY4RE9NV2luZG93OjpH
ZXRUZW1wbGF0ZShjb250ZXh0LT5HZXRJc29sYXRlKCkpKTsKKyAgICB2ODo6SGFuZGxlPHY4OjpP
YmplY3Q+IGhvbGRlciA9IGdsb2JhbC0+RmluZEluc3RhbmNlSW5Qcm90b3R5cGVDaGFpbihWOERP
TVdpbmRvdzo6R2V0VGVtcGxhdGUoY29udGV4dC0+R2V0SXNvbGF0ZSgpLCBNYWluV29ybGQpKTsK
ICAgICBpZiAoaG9sZGVyLklzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIEZy
YW1lKiBmcmFtZSA9IFY4RE9NV2luZG93Ojp0b05hdGl2ZShob2xkZXIpLT5mcmFtZSgpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4TG9jYXRpb25DdXN0
b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4TG9jYXRpb25DdXN0
b20uY3BwCmluZGV4IDE5MGFhNjljNjA2NGY2MTlmYjM0YmU1ZmNlY2VmZDBlNjQ2ZGVhMWEuLjZi
NmZlNmY2MTVkZTczNmRmZGFmNDc1YTE0MjA3M2YzZTdlM2ZhMzYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOExvY2F0aW9uQ3VzdG9tLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhMb2NhdGlvbkN1c3RvbS5jcHAKQEAg
LTE0MCw3ICsxNDAsNyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhMb2NhdGlvbjo6cmVsb2Fk
QXR0ckdldHRlckN1c3RvbSh2ODo6TG9jYWw8djg6OlN0cmluZz4gbgogewogICAgIHY4OjpJc29s
YXRlKiBpc29sYXRlID0gaW5mby5HZXRJc29sYXRlKCk7CiAgICAgc3RhdGljIHY4OjpQZXJzaXN0
ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBwcml2YXRlVGVtcGxhdGUgPSB2ODo6UGVyc2lzdGVu
dDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT46Ok5ldyhpc29sYXRlLCB2ODo6RnVuY3Rpb25UZW1wbGF0
ZTo6TmV3KFY4TG9jYXRpb246OnJlbG9hZE1ldGhvZEN1c3RvbSwgdjhVbmRlZmluZWQoKSwgdjg6
OlNpZ25hdHVyZTo6TmV3KFY4TG9jYXRpb246OkdldFJhd1RlbXBsYXRlKGlzb2xhdGUpKSkpOwot
ICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gaG9sZGVyID0gaW5mby5UaGlzKCktPkZpbmRJbnN0
YW5jZUluUHJvdG90eXBlQ2hhaW4oVjhMb2NhdGlvbjo6R2V0VGVtcGxhdGUoaXNvbGF0ZSkpOwor
ICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gaG9sZGVyID0gaW5mby5UaGlzKCktPkZpbmRJbnN0
YW5jZUluUHJvdG90eXBlQ2hhaW4oVjhMb2NhdGlvbjo6R2V0VGVtcGxhdGUoaXNvbGF0ZSwgd29y
bGRUeXBlKGlzb2xhdGUpKSk7CiAgICAgaWYgKGhvbGRlci5Jc0VtcHR5KCkpIHsKICAgICAgICAg
Ly8gY2FuIG9ubHkgcmVhY2ggaGVyZSBieSAnb2JqZWN0Ll9fcHJvdG9fXy5mdW5jJywgYW5kIGl0
IHNob3VsZCBwYXNzZWQKICAgICAgICAgLy8gZG9tYWluIHNlY3VyaXR5IGNoZWNrIGFscmVhZHkK
QEAgLTE1OCw3ICsxNTgsNyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhMb2NhdGlvbjo6cmVw
bGFjZUF0dHJHZXR0ZXJDdXN0b20odjg6OkxvY2FsPHY4OjpTdHJpbmc+CiB7CiAgICAgdjg6Oklz
b2xhdGUqIGlzb2xhdGUgPSBpbmZvLkdldElzb2xhdGUoKTsKICAgICBzdGF0aWMgdjg6OlBlcnNp
c3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IHByaXZhdGVUZW1wbGF0ZSA9IHY4OjpQZXJzaXN0
ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPjo6TmV3KGlzb2xhdGUsIHY4OjpGdW5jdGlvblRlbXBs
YXRlOjpOZXcoVjhMb2NhdGlvbjo6cmVwbGFjZU1ldGhvZEN1c3RvbSwgdjhVbmRlZmluZWQoKSwg
djg6OlNpZ25hdHVyZTo6TmV3KFY4TG9jYXRpb246OkdldFJhd1RlbXBsYXRlKGlzb2xhdGUpKSkp
OwotICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gaG9sZGVyID0gaW5mby5UaGlzKCktPkZpbmRJ
bnN0YW5jZUluUHJvdG90eXBlQ2hhaW4oVjhMb2NhdGlvbjo6R2V0VGVtcGxhdGUoaXNvbGF0ZSkp
OworICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gaG9sZGVyID0gaW5mby5UaGlzKCktPkZpbmRJ
bnN0YW5jZUluUHJvdG90eXBlQ2hhaW4oVjhMb2NhdGlvbjo6R2V0VGVtcGxhdGUoaXNvbGF0ZSwg
d29ybGRUeXBlKGlzb2xhdGUpKSk7CiAgICAgaWYgKGhvbGRlci5Jc0VtcHR5KCkpIHsKICAgICAg
ICAgLy8gY2FuIG9ubHkgcmVhY2ggaGVyZSBieSAnb2JqZWN0Ll9fcHJvdG9fXy5mdW5jJywgYW5k
IGl0IHNob3VsZCBwYXNzZWQKICAgICAgICAgLy8gZG9tYWluIHNlY3VyaXR5IGNoZWNrIGFscmVh
ZHkKQEAgLTE3Nyw3ICsxNzcsNyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhMb2NhdGlvbjo6
YXNzaWduQXR0ckdldHRlckN1c3RvbSh2ODo6TG9jYWw8djg6OlN0cmluZz4gbgogICAgIHY4OjpJ
c29sYXRlKiBpc29sYXRlID0gaW5mby5HZXRJc29sYXRlKCk7CiAgICAgc3RhdGljIHY4OjpQZXJz
aXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBwcml2YXRlVGVtcGxhdGUgPQogICAgICAgICB2
ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT46Ok5ldyhpc29sYXRlLCB2ODo6RnVu
Y3Rpb25UZW1wbGF0ZTo6TmV3KFY4TG9jYXRpb246OmFzc2lnbk1ldGhvZEN1c3RvbSwgdjhVbmRl
ZmluZWQoKSwgdjg6OlNpZ25hdHVyZTo6TmV3KFY4TG9jYXRpb246OkdldFJhd1RlbXBsYXRlKGlz
b2xhdGUpKSkpOwotICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gaG9sZGVyID0gaW5mby5UaGlz
KCktPkZpbmRJbnN0YW5jZUluUHJvdG90eXBlQ2hhaW4oVjhMb2NhdGlvbjo6R2V0VGVtcGxhdGUo
aXNvbGF0ZSkpOworICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gaG9sZGVyID0gaW5mby5UaGlz
KCktPkZpbmRJbnN0YW5jZUluUHJvdG90eXBlQ2hhaW4oVjhMb2NhdGlvbjo6R2V0VGVtcGxhdGUo
aXNvbGF0ZSwgd29ybGRUeXBlKGlzb2xhdGUpKSk7CiAgICAgaWYgKGhvbGRlci5Jc0VtcHR5KCkp
IHsKICAgICAgICAgLy8gY2FuIG9ubHkgcmVhY2ggaGVyZSBieSAnb2JqZWN0Ll9fcHJvdG9fXy5m
dW5jJywgYW5kIGl0IHNob3VsZCBwYXNzZWQKICAgICAgICAgLy8gZG9tYWluIHNlY3VyaXR5IGNo
ZWNrIGFscmVhZHkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3Rv
bS9WOE1lc3NhZ2VFdmVudEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9j
dXN0b20vVjhNZXNzYWdlRXZlbnRDdXN0b20uY3BwCmluZGV4IDViZGVkYTlhYTI2NWE3YWE5OTJj
YjdlMjk5ODNkYjk2Njg3NTYxZGUuLjBkYThiZmEwYTQ4Yzk3Y2U3Yzk3OWM4NTAyNTFhZjAwYmVj
Yjk5MmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOE1l
c3NhZ2VFdmVudEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3Vz
dG9tL1Y4TWVzc2FnZUV2ZW50Q3VzdG9tLmNwcApAQCAtMTE2LDcgKzExNiw3IEBAIHY4OjpIYW5k
bGU8djg6OlZhbHVlPiBWOE1lc3NhZ2VFdmVudDo6aW5pdE1lc3NhZ2VFdmVudE1ldGhvZEN1c3Rv
bShjb25zdCB2ODo6QXJnCiAgICAgRE9NV2luZG93KiBzb3VyY2VBcmcgPSAwOwogICAgIGlmIChh
cmdzWzZdLT5Jc09iamVjdCgpKSB7CiAgICAgICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd3Jh
cHBlciA9IHY4OjpIYW5kbGU8djg6Ok9iamVjdD46OkNhc3QoYXJnc1s2XSk7Ci0gICAgICAgIHY4
OjpIYW5kbGU8djg6Ok9iamVjdD4gd2luZG93ID0gd3JhcHBlci0+RmluZEluc3RhbmNlSW5Qcm90
b3R5cGVDaGFpbihWOERPTVdpbmRvdzo6R2V0VGVtcGxhdGUoYXJncy5HZXRJc29sYXRlKCkpKTsK
KyAgICAgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3aW5kb3cgPSB3cmFwcGVyLT5GaW5kSW5z
dGFuY2VJblByb3RvdHlwZUNoYWluKFY4RE9NV2luZG93OjpHZXRUZW1wbGF0ZShhcmdzLkdldElz
b2xhdGUoKSwgd29ybGRUeXBlSW5NYWluVGhyZWFkKGFyZ3MuR2V0SXNvbGF0ZSgpKSkpOwogICAg
ICAgICBpZiAoIXdpbmRvdy5Jc0VtcHR5KCkpCiAgICAgICAgICAgICBzb3VyY2VBcmcgPSBWOERP
TVdpbmRvdzo6dG9OYXRpdmUod2luZG93KTsKICAgICB9Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>