<?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>65288</bug_id>
          
          <creation_ts>2011-07-27 14:57:41 -0700</creation_ts>
          <short_desc>Add checks to ensure allocation does not take place during initialization of GC-managed objects</short_desc>
          <delta_ts>2011-08-23 19:05:54 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>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>64999</dependson>
          <blocked>65347</blocked>
    
    <blocked>66567</blocked>
    
    <blocked>66827</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Mark Hahnenberg">mhahnenberg</reporter>
          <assigned_to name="Mark Hahnenberg">mhahnenberg</assigned_to>
          <cc>darin</cc>
    
    <cc>oliver</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>443169</commentid>
    <comment_count>0</comment_count>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2011-07-27 14:57:41 -0700</bug_when>
    <thetext>This is the fourth bug in a series of refactorings to improve the safety of the creation of GC-managed objects in JSC.  Since we do all object creation inside static create methods, we can now add a flag to JSGlobalData that can be checked to ensure that we&apos;re not performing allocation during initialization.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>443587</commentid>
    <comment_count>1</comment_count>
      <attachid>102278</attachid>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2011-07-28 11:44:03 -0700</bug_when>
    <thetext>Created attachment 102278
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>443678</commentid>
    <comment_count>2</comment_count>
      <attachid>102309</attachid>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2011-07-28 15:30:02 -0700</bug_when>
    <thetext>Created attachment 102309
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>444035</commentid>
    <comment_count>3</comment_count>
      <attachid>102309</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2011-07-29 11:52:26 -0700</bug_when>
    <thetext>Comment on attachment 102309
Patch

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

Use an RAII object for the setInitializingObject(false/true) calls

&gt; Source/JavaScriptCore/runtime/JSGlobalData.h:232
&gt; +#if ENABLE(GC_VALIDATION)
&gt; +            m_initializingObject = value; 
&gt; +#else
&gt; +#endif

add UNUSED_PARAM(value) to the else block</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>445409</commentid>
    <comment_count>4</comment_count>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2011-08-02 12:09:00 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 102309 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=102309&amp;action=review
&gt; 
&gt; Use an RAII object for the setInitializingObject(false/true) calls
I&apos;m not sure what you mean by this.  Eventually we&apos;d like the calls to be contained only within allocateCell and validateAlloc.  RAII objects created within the former would then need to be destroyed in the latter, making it rather awkward to persist them across the two calls without adding them to every single static create method.  Perhaps I&apos;m just not understanding?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>445911</commentid>
    <comment_count>5</comment_count>
      <attachid>102790</attachid>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2011-08-03 09:41:39 -0700</bug_when>
    <thetext>Created attachment 102790
Patch with allocation refactorings

This patch adds the validateAlloc call as well as the initializingObject flag to JSGlobalData, and it refactors most of the allocation done within constructors do being done within the static create methods.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>446039</commentid>
    <comment_count>6</comment_count>
      <attachid>102790</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-08-03 13:04:52 -0700</bug_when>
    <thetext>Comment on attachment 102790
Patch with allocation refactorings

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

Too much in one patch. Land the fixes first, simple ones all at once and then any complex ones separately on their own, then finally land the new checking machinery alone with no behavior changes.

&gt; Source/JavaScriptCore/interpreter/Interpreter.cpp:1396
&gt; +        StructureChain* prototypeChain = structure-&gt;prototypeChain(callFrame);
&gt;          vPC[0] = getOpcode(op_put_by_id_transition);
&gt;          vPC[4].u.structure.set(globalData, owner, structure-&gt;previousID());
&gt;          vPC[5].u.structure.set(globalData, owner, structure);
&gt; -        vPC[6].u.structureChain.set(callFrame-&gt;globalData(), codeBlock-&gt;ownerExecutable(), structure-&gt;prototypeChain(callFrame));
&gt; +        vPC[6].u.structureChain.set(callFrame-&gt;globalData(), codeBlock-&gt;ownerExecutable(), prototypeChain);

How does this change relate to the rest of the patch? Can it be landed separately first?

&gt; Source/JavaScriptCore/runtime/ArrayConstructor.cpp:55
&gt;  ArrayConstructor::ArrayConstructor(ExecState* exec, JSGlobalObject* globalObject, Structure* structure, ArrayPrototype* arrayPrototype)
&gt; -    : InternalFunction(&amp;exec-&gt;globalData(), globalObject, structure, Identifier(exec, arrayPrototype-&gt;classInfo()-&gt;className))
&gt; +    : InternalFunction(globalObject, structure)

I think we should land fixes for bugs found by the new mechanism first, separately. We can then land the new mechanism all by itself with no bug fixes or changes in behavior bundled with it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>446041</commentid>
    <comment_count>7</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-08-03 13:06:52 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; Too much in one patch. Land the fixes first, simple ones all at once and then any complex ones separately on their own, then finally land the new checking machinery alone with no behavior changes.

Or if you want to land the mechanism first then:

- First set of patches adds the mechanism, turned off.
- Next set of patches fixes the problems uncovered by the mechanism, in small pieces that are easy to review.
- Last patch turns on the checking.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>446058</commentid>
    <comment_count>8</comment_count>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2011-08-03 13:33:59 -0700</bug_when>
    <thetext>&gt; &gt; Source/JavaScriptCore/interpreter/Interpreter.cpp:1396
&gt; &gt; +        StructureChain* prototypeChain = structure-&gt;prototypeChain(callFrame);
&gt; &gt;          vPC[0] = getOpcode(op_put_by_id_transition);
&gt; &gt;          vPC[4].u.structure.set(globalData, owner, structure-&gt;previousID());
&gt; &gt;          vPC[5].u.structure.set(globalData, owner, structure);
&gt; &gt; -        vPC[6].u.structureChain.set(callFrame-&gt;globalData(), codeBlock-&gt;ownerExecutable(), structure-&gt;prototypeChain(callFrame));
&gt; &gt; +        vPC[6].u.structureChain.set(callFrame-&gt;globalData(), codeBlock-&gt;ownerExecutable(), prototypeChain);
&gt; 
&gt; How does this change relate to the rest of the patch? Can it be landed separately first?

Yep, just something I ran into while I was testing.  Created a bug for it: https://bugs.webkit.org/show_bug.cgi?id=65638</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>446060</commentid>
    <comment_count>9</comment_count>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2011-08-03 13:36:38 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; (In reply to comment #6)
&gt; &gt; Too much in one patch. Land the fixes first, simple ones all at once and then any complex ones separately on their own, then finally land the new checking machinery alone with no behavior changes.
&gt; 
&gt; Or if you want to land the mechanism first then:
&gt; 
&gt; - First set of patches adds the mechanism, turned off.
&gt; - Next set of patches fixes the problems uncovered by the mechanism, in small pieces that are easy to review.
&gt; - Last patch turns on the checking.

I think it would be better to land the refactoring of the allocations first, since landing the mechanism first and then turning it on would break everything unless every single place that allocation occurred inside of a constructor were immediately pulled out of the constructors or guarded by first clearing the flag and then resetting it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>446063</commentid>
    <comment_count>10</comment_count>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2011-08-03 13:40:51 -0700</bug_when>
    <thetext>&gt; I think it would be better to land the refactoring of the allocations first, since landing the mechanism first and then turning it on would break everything unless every single place that allocation occurred inside of a constructor were immediately pulled out of the constructors or guarded by first clearing the flag and then resetting it.

Nevermind, I&apos;m an idiot.  That&apos;s exactly what you said.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>446232</commentid>
    <comment_count>11</comment_count>
      <attachid>102861</attachid>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2011-08-03 17:09:36 -0700</bug_when>
    <thetext>Created attachment 102861
Refactoring of JavaScriptCore</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>446644</commentid>
    <comment_count>12</comment_count>
      <attachid>102949</attachid>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2011-08-04 11:27:12 -0700</bug_when>
    <thetext>Created attachment 102949
JSC patch with Windows build fixes</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>446654</commentid>
    <comment_count>13</comment_count>
      <attachid>102951</attachid>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2011-08-04 11:48:13 -0700</bug_when>
    <thetext>Created attachment 102951
Fixing windows again</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>446711</commentid>
    <comment_count>14</comment_count>
      <attachid>102964</attachid>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2011-08-04 13:00:20 -0700</bug_when>
    <thetext>Created attachment 102964
Fixing windows again</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>446769</commentid>
    <comment_count>15</comment_count>
      <attachid>102977</attachid>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2011-08-04 14:10:37 -0700</bug_when>
    <thetext>Created attachment 102977
Fixing windows again</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>446859</commentid>
    <comment_count>16</comment_count>
      <attachid>102977</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2011-08-04 15:49:30 -0700</bug_when>
    <thetext>Comment on attachment 102977
Fixing windows again

One thing i have a problem with is the inconsistency of initProperties() vs. inlining initialisation into the create() method.  The inlining of anything into a create method potentially breaks subclassing.

I think a much better approach would be to
* Give JSCell an initProperties() method
* require every initProperties method to do BaseObject::initProperties(...) first
* Then every create() method can follow the pattern
    JSFoo* foo = new (allocateCell&lt;JSFoo&gt;(*exec-&gt;heap())) JSFoo(...);
    foo-&gt;initProperties(...);
    return foo;
  Then we can also add an assertion to the base JSCell::initProperties to ensure we have actually completed initialisation if we wanted to.  But even if we don&apos;t do that, we can look at create methods, and easily see obvious errors.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>454074</commentid>
    <comment_count>17</comment_count>
      <attachid>104562</attachid>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2011-08-19 14:07:36 -0700</bug_when>
    <thetext>Created attachment 104562
New, much smaller patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>454157</commentid>
    <comment_count>18</comment_count>
      <attachid>104562</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-08-19 15:57:24 -0700</bug_when>
    <thetext>Comment on attachment 104562
New, much smaller patch.

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

&gt; Source/JavaScriptCore/runtime/JSCell.h:174
&gt; +        void constructorBody(JSGlobalData&amp; globalData)
&gt; +        {
&gt; +#if ENABLE(GC_VALIDATION)
&gt; +            ASSERT(globalData.isInitializingObject());
&gt; +            globalData.setInitializingObject(false);
&gt; +#else
&gt; +            UNUSED_PARAM(globalData);
&gt; +#endif
&gt; +            ASSERT(m_structure);
&gt; +        }
&gt; +
&gt; +        void constructorBody(JSGlobalData&amp; globalData, Structure* structure, CreatingEarlyCellTag)
&gt; +        {
&gt; +#if ENABLE(GC_VALIDATION)
&gt; +            globalData.setInitializingObject(false);
&gt; +            if (structure)
&gt; +#endif
&gt; +                m_structure.setEarlyValue(globalData, this, structure);
&gt; +            // Very first set of allocations won&apos;t have a real structure.
&gt; +            ASSERT(m_structure || !globalData.structureStructure);
&gt; +        }

I don’t see any benefit in putting these inside a separate “constructorBody” function. These should just go inside the constructor’s body! That would eliminate the UNUSED_PARAM, for one thing.

&gt; Source/JavaScriptCore/runtime/JSGlobalData.h:298
&gt; +        bool isInitializingObject() const 
&gt; +        {
&gt; +#if ENABLE(GC_VALIDATION)
&gt; +            return m_initializingObject;
&gt; +#else
&gt; +            return false;
&gt; +#endif
&gt; +        }
&gt; +
&gt; +        void setInitializingObject(bool initializingObject)
&gt; +        {
&gt; +#if ENABLE(GC_VALIDATION)
&gt; +            m_initializingObject = initializingObject;
&gt; +#else
&gt; +            UNUSED_PARAM(initializingObject);
&gt; +#endif
&gt; +        }

It would be cleaner to put just the declaration here in the class and have two completely separate definitions below with the ifdefs.

I also think it would be cleaner to not even have the isInitializingObject() function exist if GC_VALIDATION is off, because false is not the correct answer, and it’s unlikely we can write code that uses that.

&gt; Source/JavaScriptCore/runtime/JSGlobalData.h:308
&gt; +        bool m_initializingObject;

Shouldn’t this be inside an #if ENABLE(GC_VALIDATION)?

&gt; Source/WebCore/bindings/js/JSDOMWindowShell.h:41
&gt; -        typedef JSC::JSNonFinalObject Base;
&gt;      public:
&gt; +        typedef JSC::JSNonFinalObject Base;

It’s dangerous for someone to accidentally use this in a derived class, so it’s not good to have it public. Maybe we can friend operator new instead?

&gt; Source/WebKit/mac/Plugins/Hosted/ProxyRuntimeObject.h:45
&gt; +        // FIXME: deprecatedGetDOMStructure uses the prototype off of the wrong global object
&gt; +        // exec-globalData() is also likely wrong.

This is two sentences so probably needs two periods.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>454230</commentid>
    <comment_count>19</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2011-08-19 17:29:08 -0700</bug_when>
    <thetext>
&gt; I don’t see any benefit in putting these inside a separate “constructorBody” function. These should just go inside the constructor’s body! That would eliminate the UNUSED_PARAM, for one thing.

The whole point of this series of patches is to kill off any real work (longer term: any work at all) in constructors, as it&apos;s not necessarily GC-safe to have side-effecting operations in your constructor.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>454234</commentid>
    <comment_count>20</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-08-19 17:31:24 -0700</bug_when>
    <thetext>(In reply to comment #19)
&gt; &gt; I don’t see any benefit in putting these inside a separate “constructorBody” function. These should just go inside the constructor’s body! That would eliminate the UNUSED_PARAM, for one thing.
&gt; 
&gt; The whole point of this series of patches is to kill off any real work (longer term: any work at all) in constructors, as it&apos;s not necessarily GC-safe to have side-effecting operations in your constructor.

Yes. I understand that.

That goal has nothing to do with putting the bodies of two specific JSCell constructors into separate private JSCell functions. There is no reason to do that. All it does is make the code confusing. I think it’s a leftover from an earlier version of the patch where it had some purpose.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>454251</commentid>
    <comment_count>21</comment_count>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2011-08-19 18:03:16 -0700</bug_when>
    <thetext>&gt; That goal has nothing to do with putting the bodies of two specific JSCell constructors into separate private JSCell functions. There is no reason to do that. All it does is make the code confusing. I think it’s a leftover from an earlier version of the patch where it had some purpose.

The goal is to have all objects who inherit from JSCell and who have non-trivial (i.e. non-empty) constructor bodies to have a corresponding constructorBody() method.  This will make it easier for people adding functionality that historically would have gone in the constructor body.  Instead of having a rule like &quot;if you call a function that could potentially do GC allocation, it must go inside constructorBody()&quot; we can just say &quot;all code must go inside constructorBody()&quot;.

In this patch, the constructorBody() call seems like a one-off thing just for JSCell, but there was a recent patch (see: https://bugs.webkit.org/show_bug.cgi?id=66265) that added similar constructorBody() calls to a variety of classes in the JSCell hierarchy.  Eventually the calls will be moved out of their corresponding constructor bodies and will instead by called by the derived classes&apos; implementations of constructorBody(), which will in turn be called by their static create() methods.  The constructorBody() in JSCell serves as the &quot;termination point&quot; for these future constructorBody() chains, and it also provides a convenient place to clear the initialization flag.  I agree it&apos;s a bit confusing now, but it will be much less confusing when all of this comes together :-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>455526</commentid>
    <comment_count>22</comment_count>
      <attachid>104870</attachid>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2011-08-23 11:15:25 -0700</bug_when>
    <thetext>Created attachment 104870
Fixing review issues</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>455758</commentid>
    <comment_count>23</comment_count>
      <attachid>104870</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-08-23 15:53:41 -0700</bug_when>
    <thetext>Comment on attachment 104870
Fixing review issues

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

&gt; Source/JavaScriptCore/runtime/JSGlobalData.h:296
&gt; +        bool m_initializingObject;

Should be named m_isInitializingObject.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>455836</commentid>
    <comment_count>24</comment_count>
      <attachid>104935</attachid>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2011-08-23 17:07:02 -0700</bug_when>
    <thetext>Created attachment 104935
Fixing review issues</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>455932</commentid>
    <comment_count>25</comment_count>
      <attachid>104935</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-08-23 19:05:47 -0700</bug_when>
    <thetext>Comment on attachment 104935
Fixing review issues

Clearing flags on attachment: 104935

Committed r93688: &lt;http://trac.webkit.org/changeset/93688&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>455933</commentid>
    <comment_count>26</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-08-23 19:05:54 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>102278</attachid>
            <date>2011-07-28 11:44:03 -0700</date>
            <delta_ts>2011-07-28 15:29:59 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-65288-20110728114402.patch</filename>
            <type>text/plain</type>
            <size>123287</size>
            <attacher name="Mark Hahnenberg">mhahnenberg</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gOTE5NDApCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTY3IEBA
CisyMDExLTA3LTI4ICBNYXJrIEhhaG5lbmJlcmcgIDxtaGFobmVuYmVyZ0BhcHBsZS5jb20+CisK
KyAgICAgICAgQWRkIGNoZWNrcyB0byBlbnN1cmUgYWxsb2NhdGlvbiBkb2VzIG5vdCB0YWtlIHBs
YWNlIGR1cmluZyBpbml0aWFsaXphdGlvbiBvZiBHQy1tYW5hZ2VkIG9iamVjdHMKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY1Mjg4CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkZWQgdGhlIHZhbGlkYXRl
QWxsb2MgY2FsbCB0byBjaGVjayB0aGUgaW5pdGlhbGl6aW5nT2JqZWN0IGZsYWcgaW4gdGhlIEpT
R2xvYmFsRGF0YSBvYmplY3QgYW5kIAorICAgICAgICB0byB0aGVuIGNsZWFyIHNhaWQgZmxhZy4g
IE5vIGZsYWcgY2hlY2tpbmcsIHNldHRpbmcsIG9yIGNsZWFyaW5nIGlzIGRvbmUgdW5sZXNzIEdD
X1ZBTElEQVRJT04gaXMgZW5hYmxlZC4gIAorICAgICAgICBBbHNvIGFkZGVkIHNwZWNpYWwgY2Fz
ZXMgd2hlcmUgdGhlIGZsYWcgaXMgY2xlYXJlZCBhbmQgdGhlIHJlc2V0IGFyb3VuZCBsb2NhdGlv
bnMgd2hlcmUgbmVzdGVkIAorICAgICAgICBhbGxvY2F0aW9ucyBvY2N1ciBpbiB0aGUgY29uc3Ry
dWN0b3JzLiAgVGhpcyBpcyBtb3N0bHkgdGVtcG9yYXJ5IGZvciBub3cgdG8gZ2V0IGJhY2sgdG8g
YSB3b3JraW5nIHN0YXRlIAorICAgICAgICB3aXRob3V0IGhhdmluZyB0byBob2lzdCBhbGwgb2Yg
dGhvc2UgYWxvY2F0aW9ucyBvdXQgb2YgdGhlIGNvbnN0cnVjdG9ycy4gIFRoaXMgaXMgcGFydCBv
ZiBhIAorICAgICAgICBsYXJnZXIgcmVmYWN0b3JpbmcgdG8gbWFrZSBvdXIgb2JqZWN0IGFsbG9j
YXRpb24gYW5kIGluaXRpYWxpemF0aW9uIG1vcmUgR0MtZnJpZW5kbHkvc2FmZS4gCisKKyAgICAg
ICAgKiBBUEkvSlNDYWxsYmFja0NvbnN0cnVjdG9yLmg6CisgICAgICAgIChKU0M6OkpTQ2FsbGJh
Y2tDb25zdHJ1Y3Rvcjo6Y3JlYXRlKToKKyAgICAgICAgKiBBUEkvSlNDYWxsYmFja0Z1bmN0aW9u
Lmg6CisgICAgICAgIChKU0M6OkpTQ2FsbGJhY2tGdW5jdGlvbjo6Y3JlYXRlKToKKyAgICAgICAg
KiBBUEkvSlNDYWxsYmFja09iamVjdC5oOgorICAgICAgICAoSlNDOjpKU0NhbGxiYWNrT2JqZWN0
OjpjcmVhdGUpOgorICAgICAgICAqIGRlYnVnZ2VyL0RlYnVnZ2VyQWN0aXZhdGlvbi5oOgorICAg
ICAgICAoSlNDOjpEZWJ1Z2dlckFjdGl2YXRpb246OmNyZWF0ZSk6CisgICAgICAgICoganNjLmNw
cDoKKyAgICAgICAgKEdsb2JhbE9iamVjdDo6Y3JlYXRlKToKKyAgICAgICAgKiBydW50aW1lL0Fy
Z3VtZW50cy5oOgorICAgICAgICAoSlNDOjpBcmd1bWVudHM6OmNyZWF0ZSk6CisgICAgICAgIChK
U0M6OkFyZ3VtZW50czo6Y3JlYXRlTm9QYXJhbWV0ZXJzKToKKyAgICAgICAgKiBydW50aW1lL0Fy
cmF5Q29uc3RydWN0b3IuaDoKKyAgICAgICAgKEpTQzo6QXJyYXlDb25zdHJ1Y3Rvcjo6Y3JlYXRl
KToKKyAgICAgICAgKiBydW50aW1lL0FycmF5UHJvdG90eXBlLmg6CisgICAgICAgIChKU0M6OkFy
cmF5UHJvdG90eXBlOjpjcmVhdGUpOgorICAgICAgICAqIHJ1bnRpbWUvQm9vbGVhbkNvbnN0cnVj
dG9yLmg6CisgICAgICAgIChKU0M6OkJvb2xlYW5Db25zdHJ1Y3Rvcjo6Y3JlYXRlKToKKyAgICAg
ICAgKiBydW50aW1lL0Jvb2xlYW5PYmplY3QuaDoKKyAgICAgICAgKEpTQzo6Qm9vbGVhbk9iamVj
dDo6Y3JlYXRlKToKKyAgICAgICAgKiBydW50aW1lL0Jvb2xlYW5Qcm90b3R5cGUuaDoKKyAgICAg
ICAgKEpTQzo6Qm9vbGVhblByb3RvdHlwZTo6Y3JlYXRlKToKKyAgICAgICAgKiBydW50aW1lL0Rh
dGVDb25zdHJ1Y3Rvci5oOgorICAgICAgICAoSlNDOjpEYXRlQ29uc3RydWN0b3I6OmNyZWF0ZSk6
CisgICAgICAgICogcnVudGltZS9EYXRlSW5zdGFuY2UuaDoKKyAgICAgICAgKEpTQzo6RGF0ZUlu
c3RhbmNlOjpjcmVhdGUpOgorICAgICAgICAqIHJ1bnRpbWUvRGF0ZVByb3RvdHlwZS5oOgorICAg
ICAgICAoSlNDOjpEYXRlUHJvdG90eXBlOjpjcmVhdGUpOgorICAgICAgICAqIHJ1bnRpbWUvRXJy
b3IuY3BwOgorICAgICAgICAoSlNDOjpTdHJpY3RNb2RlVHlwZUVycm9yRnVuY3Rpb246OmNyZWF0
ZSk6CisgICAgICAgICogcnVudGltZS9FcnJvckNvbnN0cnVjdG9yLmg6CisgICAgICAgIChKU0M6
OkVycm9yQ29uc3RydWN0b3I6OmNyZWF0ZSk6CisgICAgICAgICogcnVudGltZS9FcnJvckluc3Rh
bmNlLmNwcDoKKyAgICAgICAgKEpTQzo6RXJyb3JJbnN0YW5jZTo6RXJyb3JJbnN0YW5jZSk6Cisg
ICAgICAgIChKU0M6OkVycm9ySW5zdGFuY2U6OmNyZWF0ZSk6CisgICAgICAgICogcnVudGltZS9F
cnJvclByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OkVycm9yUHJvdG90eXBlOjpFcnJvclBy
b3RvdHlwZSk6CisgICAgICAgICogcnVudGltZS9FcnJvclByb3RvdHlwZS5oOgorICAgICAgICAo
SlNDOjpFcnJvclByb3RvdHlwZTo6Y3JlYXRlKToKKyAgICAgICAgKiBydW50aW1lL0V4Y2VwdGlv
bkhlbHBlcnMuY3BwOgorICAgICAgICAoSlNDOjpJbnRlcnJ1cHRlZEV4ZWN1dGlvbkVycm9yOjpj
cmVhdGUpOgorICAgICAgICAoSlNDOjpUZXJtaW5hdGVkRXhlY3V0aW9uRXJyb3I6OmNyZWF0ZSk6
CisgICAgICAgICogcnVudGltZS9FeGVjdXRhYmxlLmg6CisgICAgICAgIChKU0M6OkV4ZWN1dGFi
bGVCYXNlOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpOYXRpdmVFeGVjdXRhYmxlOjpjcmVhdGUp
OgorICAgICAgICAoSlNDOjpFdmFsRXhlY3V0YWJsZTo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6
UHJvZ3JhbUV4ZWN1dGFibGU6OmNyZWF0ZSk6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uRXhlY3V0
YWJsZTo6Y3JlYXRlKToKKyAgICAgICAgKiBydW50aW1lL0Z1bmN0aW9uQ29uc3RydWN0b3IuaDoK
KyAgICAgICAgKEpTQzo6RnVuY3Rpb25Db25zdHJ1Y3Rvcjo6Y3JlYXRlKToKKyAgICAgICAgKiBy
dW50aW1lL0Z1bmN0aW9uUHJvdG90eXBlLmg6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uUHJvdG90
eXBlOjpjcmVhdGUpOgorICAgICAgICAqIHJ1bnRpbWUvR2V0dGVyU2V0dGVyLmg6CisgICAgICAg
IChKU0M6OkdldHRlclNldHRlcjo6Y3JlYXRlKToKKyAgICAgICAgKiBydW50aW1lL0ludGVybmFs
RnVuY3Rpb24uY3BwOgorICAgICAgICAoSlNDOjpJbnRlcm5hbEZ1bmN0aW9uOjpJbnRlcm5hbEZ1
bmN0aW9uKToKKyAgICAgICAgKiBydW50aW1lL0pTQVBJVmFsdWVXcmFwcGVyLmg6CisgICAgICAg
IChKU0M6OkpTQVBJVmFsdWVXcmFwcGVyOjpjcmVhdGUpOgorICAgICAgICAqIHJ1bnRpbWUvSlNB
Y3RpdmF0aW9uLmg6CisgICAgICAgIChKU0M6OkpTQWN0aXZhdGlvbjo6Y3JlYXRlKToKKyAgICAg
ICAgKiBydW50aW1lL0pTQXJyYXkuaDoKKyAgICAgICAgKEpTQzo6SlNBcnJheTo6Y3JlYXRlKToK
KyAgICAgICAgKiBydW50aW1lL0pTQnl0ZUFycmF5LmNwcDoKKyAgICAgICAgKEpTQzo6SlNCeXRl
QXJyYXk6OmNyZWF0ZSk6CisgICAgICAgICogcnVudGltZS9KU0NlbGwuaDoKKyAgICAgICAgKEpT
Qzo6SlNDZWxsOjphbGxvY2F0ZUNlbGwpOgorICAgICAgICAoSlNDOjpKU0NlbGw6OnZhbGlkYXRl
QWxsb2MpOgorICAgICAgICAqIHJ1bnRpbWUvSlNGdW5jdGlvbi5jcHA6CisgICAgICAgIChKU0M6
OkpTRnVuY3Rpb246OkpTRnVuY3Rpb24pOgorICAgICAgICAqIHJ1bnRpbWUvSlNGdW5jdGlvbi5o
OgorICAgICAgICAoSlNDOjpKU0Z1bmN0aW9uOjpjcmVhdGUpOgorICAgICAgICAqIHJ1bnRpbWUv
SlNHbG9iYWxEYXRhLmNwcDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxEYXRhOjpKU0dsb2JhbERh
dGEpOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxEYXRhLmg6CisgICAgICAgIChKU0M6OkpT
R2xvYmFsRGF0YTo6aXNJbml0aWFsaXppbmdPYmplY3QpOgorICAgICAgICAoSlNDOjpKU0dsb2Jh
bERhdGE6OnNldEluaXRpYWxpemluZ09iamVjdCk6CisgICAgICAgICogcnVudGltZS9KU0dsb2Jh
bE9iamVjdC5jcHA6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojppbml0KToKKyAgICAg
ICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0Lmg6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2Jq
ZWN0OjpjcmVhdGUpOgorICAgICAgICAqIHJ1bnRpbWUvSlNOb3RBbk9iamVjdC5oOgorICAgICAg
ICAoSlNDOjpKU05vdEFuT2JqZWN0OjpjcmVhdGUpOgorICAgICAgICAqIHJ1bnRpbWUvSlNPTk9i
amVjdC5oOgorICAgICAgICAoSlNDOjpKU09OT2JqZWN0OjpjcmVhdGUpOgorICAgICAgICAqIHJ1
bnRpbWUvSlNPYmplY3QuaDoKKyAgICAgICAgKEpTQzo6SlNGaW5hbE9iamVjdDo6Y3JlYXRlKToK
KyAgICAgICAgKiBydW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuY3BwOgorICAgICAgICAo
SlNDOjpKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yOjpKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yKToKKyAg
ICAgICAgKEpTQzo6SlNQcm9wZXJ0eU5hbWVJdGVyYXRvcjo6Y3JlYXRlKToKKyAgICAgICAgKiBy
dW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuaDoKKyAgICAgICAgKEpTQzo6SlNQcm9wZXJ0
eU5hbWVJdGVyYXRvcjo6Y3JlYXRlKToKKyAgICAgICAgKiBydW50aW1lL0pTU3RhdGljU2NvcGVP
YmplY3QuaDoKKyAgICAgICAgKEpTQzo6SlNTdGF0aWNTY29wZU9iamVjdDo6Y3JlYXRlKToKKyAg
ICAgICAgKiBydW50aW1lL0pTU3RyaW5nLmNwcDoKKyAgICAgICAgKEpTQzo6U3RyaW5nT2JqZWN0
OjpjcmVhdGUpOgorICAgICAgICAqIHJ1bnRpbWUvSlNTdHJpbmcuaDoKKyAgICAgICAgKEpTQzo6
Um9wZUJ1aWxkZXI6OmNyZWF0ZSk6CisgICAgICAgIChKU0M6OlJvcGVCdWlsZGVyOjpjcmVhdGVI
YXNPdGhlck93bmVyKToKKyAgICAgICAgKiBydW50aW1lL01hdGhPYmplY3QuaDoKKyAgICAgICAg
KEpTQzo6TWF0aE9iamVjdDo6Y3JlYXRlKToKKyAgICAgICAgKiBydW50aW1lL05hdGl2ZUVycm9y
Q29uc3RydWN0b3IuY3BwOgorICAgICAgICAoSlNDOjpOYXRpdmVFcnJvckNvbnN0cnVjdG9yOjpO
YXRpdmVFcnJvckNvbnN0cnVjdG9yKToKKyAgICAgICAgKiBydW50aW1lL05hdGl2ZUVycm9yQ29u
c3RydWN0b3IuaDoKKyAgICAgICAgKEpTQzo6TmF0aXZlRXJyb3JDb25zdHJ1Y3Rvcjo6Y3JlYXRl
KToKKyAgICAgICAgKiBydW50aW1lL05hdGl2ZUVycm9yUHJvdG90eXBlLmNwcDoKKyAgICAgICAg
KEpTQzo6TmF0aXZlRXJyb3JQcm90b3R5cGU6Ok5hdGl2ZUVycm9yUHJvdG90eXBlKToKKyAgICAg
ICAgKiBydW50aW1lL05hdGl2ZUVycm9yUHJvdG90eXBlLmg6CisgICAgICAgIChKU0M6Ok5hdGl2
ZUVycm9yUHJvdG90eXBlOjpjcmVhdGUpOgorICAgICAgICAqIHJ1bnRpbWUvTnVtYmVyQ29uc3Ry
dWN0b3IuaDoKKyAgICAgICAgKEpTQzo6TnVtYmVyQ29uc3RydWN0b3I6OmNyZWF0ZSk6CisgICAg
ICAgICogcnVudGltZS9OdW1iZXJPYmplY3QuaDoKKyAgICAgICAgKEpTQzo6TnVtYmVyT2JqZWN0
OjpjcmVhdGUpOgorICAgICAgICAqIHJ1bnRpbWUvTnVtYmVyUHJvdG90eXBlLmg6CisgICAgICAg
IChKU0M6Ok51bWJlclByb3RvdHlwZTo6Y3JlYXRlKToKKyAgICAgICAgKiBydW50aW1lL09iamVj
dENvbnN0cnVjdG9yLmg6CisgICAgICAgIChKU0M6Ok9iamVjdENvbnN0cnVjdG9yOjpjcmVhdGUp
OgorICAgICAgICAqIHJ1bnRpbWUvT2JqZWN0UHJvdG90eXBlLmg6CisgICAgICAgIChKU0M6Ok9i
amVjdFByb3RvdHlwZTo6Y3JlYXRlKToKKyAgICAgICAgKiBydW50aW1lL1JlZ0V4cC5jcHA6Cisg
ICAgICAgIChKU0M6OlJlZ0V4cDo6Y3JlYXRlV2l0aG91dENhY2hpbmcpOgorICAgICAgICAqIHJ1
bnRpbWUvUmVnRXhwQ29uc3RydWN0b3IuaDoKKyAgICAgICAgKEpTQzo6UmVnRXhwQ29uc3RydWN0
b3I6OmNyZWF0ZSk6CisgICAgICAgICogcnVudGltZS9SZWdFeHBNYXRjaGVzQXJyYXkuaDoKKyAg
ICAgICAgKEpTQzo6UmVnRXhwTWF0Y2hlc0FycmF5OjpjcmVhdGUpOgorICAgICAgICAqIHJ1bnRp
bWUvUmVnRXhwT2JqZWN0Lmg6CisgICAgICAgIChKU0M6OlJlZ0V4cE9iamVjdDo6Y3JlYXRlKToK
KyAgICAgICAgKiBydW50aW1lL1JlZ0V4cFByb3RvdHlwZS5oOgorICAgICAgICAoSlNDOjpSZWdF
eHBQcm90b3R5cGU6OmNyZWF0ZSk6CisgICAgICAgICogcnVudGltZS9TY29wZUNoYWluLmg6Cisg
ICAgICAgIChKU0M6OlNjb3BlQ2hhaW5Ob2RlOjpjcmVhdGUpOgorICAgICAgICAqIHJ1bnRpbWUv
U3RyaWN0RXZhbEFjdGl2YXRpb24uaDoKKyAgICAgICAgKEpTQzo6U3RyaWN0RXZhbEFjdGl2YXRp
b246OmNyZWF0ZSk6CisgICAgICAgICogcnVudGltZS9TdHJpbmdDb25zdHJ1Y3Rvci5oOgorICAg
ICAgICAoSlNDOjpTdHJpbmdDb25zdHJ1Y3Rvcjo6Y3JlYXRlKToKKyAgICAgICAgKiBydW50aW1l
L1N0cmluZ09iamVjdC5jcHA6CisgICAgICAgIChKU0M6OlN0cmluZ09iamVjdDo6U3RyaW5nT2Jq
ZWN0KToKKyAgICAgICAgKiBydW50aW1lL1N0cmluZ09iamVjdC5oOgorICAgICAgICAoSlNDOjpT
dHJpbmdPYmplY3Q6OmNyZWF0ZSk6CisgICAgICAgICogcnVudGltZS9TdHJpbmdPYmplY3RUaGF0
TWFzcXVlcmFkZXNBc1VuZGVmaW5lZC5oOgorICAgICAgICAoSlNDOjpTdHJpbmdPYmplY3RUaGF0
TWFzcXVlcmFkZXNBc1VuZGVmaW5lZDo6Y3JlYXRlKToKKyAgICAgICAgKiBydW50aW1lL1N0cmlu
Z1Byb3RvdHlwZS5oOgorICAgICAgICAoSlNDOjpTdHJpbmdQcm90b3R5cGU6OmNyZWF0ZSk6Cisg
ICAgICAgICogcnVudGltZS9TdHJ1Y3R1cmUuaDoKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjpj
cmVhdGUpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAg
ICAgICogcnVudGltZS9TdHJ1Y3R1cmVDaGFpbi5oOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVD
aGFpbjo6Y3JlYXRlKToKKyAgICAgICAgKiB3dGYvUGxhdGZvcm0uaDoKKwogMjAxMS0wNy0yOCAg
R2F2aW4gQmFycmFjbG91Z2ggIDxiYXJyYWNsb3VnaEBhcHBsZS5jb20+CiAKICAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY1MzI1CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvanNjLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvanNjLmNwcAkocmV2aXNpb24gOTE5MzkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvanNj
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTUwLDcgKzE1MCw3IEBAIHByaXZhdGU6CiBwdWJsaWM6
CiAgICAgc3RhdGljIEdsb2JhbE9iamVjdCogY3JlYXRlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0
YSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IFZlY3RvcjxVU3RyaW5nPiYgYXJndW1lbnRz
KQogICAgIHsKLSAgICAgICAgcmV0dXJuIG5ldyAoYWxsb2NhdGVDZWxsPEdsb2JhbE9iamVjdD4o
Z2xvYmFsRGF0YS5oZWFwKSkgR2xvYmFsT2JqZWN0KGdsb2JhbERhdGEsIHN0cnVjdHVyZSwgYXJn
dW1lbnRzKTsKKyAgICAgICAgcmV0dXJuIHZhbGlkYXRlQWxsb2M8R2xvYmFsT2JqZWN0PihnbG9i
YWxEYXRhLCBuZXcgKGFsbG9jYXRlQ2VsbDxHbG9iYWxPYmplY3Q+KGdsb2JhbERhdGEuaGVhcCkp
IEdsb2JhbE9iamVjdChnbG9iYWxEYXRhLCBzdHJ1Y3R1cmUsIGFyZ3VtZW50cykpOwogICAgIH0K
ICAgICB2aXJ0dWFsIFVTdHJpbmcgY2xhc3NOYW1lKCkgY29uc3QgeyByZXR1cm4gImdsb2JhbCI7
IH0KIH07CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tDb25zdHJ1
Y3Rvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFj
a0NvbnN0cnVjdG9yLmgJKHJldmlzaW9uIDkxOTM5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L0FQSS9KU0NhbGxiYWNrQ29uc3RydWN0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtMzcsNyArMzcs
NyBAQCBwcm90ZWN0ZWQ6CiBwdWJsaWM6CiAgICAgc3RhdGljIEpTQ2FsbGJhY2tDb25zdHJ1Y3Rv
ciogY3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTQ2xhc3NSZWYgY2xhc3NSZWYsIEpTT2JqZWN0Q2FsbEFz
Q29uc3RydWN0b3JDYWxsYmFjayBjYWxsYmFjaykgCiAgICAgewotICAgICAgICByZXR1cm4gbmV3
IChhbGxvY2F0ZUNlbGw8SlNDYWxsYmFja0NvbnN0cnVjdG9yPigqZXhlYy0+aGVhcCgpKSkgSlND
YWxsYmFja0NvbnN0cnVjdG9yKGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBjbGFzc1JlZiwgY2Fs
bGJhY2spOworICAgICAgICByZXR1cm4gdmFsaWRhdGVBbGxvYzxKU0NhbGxiYWNrQ29uc3RydWN0
b3I+KGV4ZWMtPmdsb2JhbERhdGEoKSwgbmV3IChhbGxvY2F0ZUNlbGw8SlNDYWxsYmFja0NvbnN0
cnVjdG9yPigqZXhlYy0+aGVhcCgpKSkgSlNDYWxsYmFja0NvbnN0cnVjdG9yKGdsb2JhbE9iamVj
dCwgc3RydWN0dXJlLCBjbGFzc1JlZiwgY2FsbGJhY2spKTsKICAgICB9CiAgICAgCiAgICAgdmly
dHVhbCB+SlNDYWxsYmFja0NvbnN0cnVjdG9yKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvQVBJL0pTQ2FsbGJhY2tGdW5jdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9BUEkvSlNDYWxsYmFja0Z1bmN0aW9uLmgJKHJldmlzaW9uIDkxOTM5KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrRnVuY3Rpb24uaAkod29ya2luZyBjb3B5
KQpAQCAtMzgsNyArMzgsNyBAQCBwcm90ZWN0ZWQ6CiBwdWJsaWM6CiAgICAgc3RhdGljIEpTQ2Fs
bGJhY2tGdW5jdGlvbiogY3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgSlNPYmplY3RDYWxsQXNGdW5jdGlvbkNhbGxiYWNrIGNhbGxiYWNrLCBjb25z
dCBJZGVudGlmaWVyJiBuYW1lKQogICAgIHsKLSAgICAgICAgcmV0dXJuIG5ldyAoYWxsb2NhdGVD
ZWxsPEpTQ2FsbGJhY2tGdW5jdGlvbj4oKmV4ZWMtPmhlYXAoKSkpIEpTQ2FsbGJhY2tGdW5jdGlv
bihleGVjLCBnbG9iYWxPYmplY3QsIGNhbGxiYWNrLCBuYW1lKTsKKyAgICAgICAgcmV0dXJuIHZh
bGlkYXRlQWxsb2M8SlNDYWxsYmFja0Z1bmN0aW9uPihleGVjLT5nbG9iYWxEYXRhKCksIG5ldyAo
YWxsb2NhdGVDZWxsPEpTQ2FsbGJhY2tGdW5jdGlvbj4oKmV4ZWMtPmhlYXAoKSkpIEpTQ2FsbGJh
Y2tGdW5jdGlvbihleGVjLCBnbG9iYWxPYmplY3QsIGNhbGxiYWNrLCBuYW1lKSk7CiAgICAgfQog
CiAgICAgc3RhdGljIGNvbnN0IENsYXNzSW5mbyBzX2luZm87CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3QuaAkocmV2aXNpb24gOTE5MzkpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3QuaAkod29ya2luZyBjb3B5
KQpAQCAtMTI3LDExICsxMjcsMTEgQEAgcHJvdGVjdGVkOgogcHVibGljOgogICAgIHN0YXRpYyBK
U0NhbGxiYWNrT2JqZWN0KiBjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNDbGFzc1JlZiBjbGFzc1JlZiwg
dm9pZCogZGF0YSkKICAgICB7Ci0gICAgICAgIHJldHVybiBuZXcgKGFsbG9jYXRlQ2VsbDxKU0Nh
bGxiYWNrT2JqZWN0PigqZXhlYy0+aGVhcCgpKSkgSlNDYWxsYmFja09iamVjdChleGVjLCBnbG9i
YWxPYmplY3QsIHN0cnVjdHVyZSwgY2xhc3NSZWYsIGRhdGEpOworICAgICAgICByZXR1cm4gdmFs
aWRhdGVBbGxvYzxKU0NhbGxiYWNrT2JqZWN0PihleGVjLT5nbG9iYWxEYXRhKCksIG5ldyAoYWxs
b2NhdGVDZWxsPEpTQ2FsbGJhY2tPYmplY3Q+KCpleGVjLT5oZWFwKCkpKSBKU0NhbGxiYWNrT2Jq
ZWN0KGV4ZWMsIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBjbGFzc1JlZiwgZGF0YSkpOwogICAg
IH0KICAgICBzdGF0aWMgSlNDYWxsYmFja09iamVjdCogY3JlYXRlKEpTR2xvYmFsRGF0YSYgZ2xv
YmFsRGF0YSwgSlNDbGFzc1JlZiBjbGFzc1JlZiwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAgICAg
ewotICAgICAgICByZXR1cm4gbmV3IChhbGxvY2F0ZUNlbGw8SlNDYWxsYmFja09iamVjdD4oZ2xv
YmFsRGF0YS5oZWFwKSkgSlNDYWxsYmFja09iamVjdChnbG9iYWxEYXRhLCBjbGFzc1JlZiwgc3Ry
dWN0dXJlKTsKKyAgICAgICAgcmV0dXJuIHZhbGlkYXRlQWxsb2M8SlNDYWxsYmFja09iamVjdD4o
Z2xvYmFsRGF0YSwgbmV3IChhbGxvY2F0ZUNlbGw8SlNDYWxsYmFja09iamVjdD4oZ2xvYmFsRGF0
YS5oZWFwKSkgSlNDYWxsYmFja09iamVjdChnbG9iYWxEYXRhLCBjbGFzc1JlZiwgc3RydWN0dXJl
KSk7CiAgICAgfQogCiAgICAgdm9pZCBzZXRQcml2YXRlKHZvaWQqIGRhdGEpOwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyQWN0aXZhdGlvbi5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlckFjdGl2YXRpb24u
aAkocmV2aXNpb24gOTE5MzkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVi
dWdnZXJBY3RpdmF0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTM2LDcgKzM2LDcgQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgcHVibGljOgogICAgICAgICBzdGF0aWMgRGVidWdnZXJBY3RpdmF0aW9u
KiBjcmVhdGUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU09iamVjdCogb2JqZWN0KQogICAg
ICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gbmV3IChhbGxvY2F0ZUNlbGw8RGVidWdnZXJBY3Rp
dmF0aW9uPihnbG9iYWxEYXRhLmhlYXApKSBEZWJ1Z2dlckFjdGl2YXRpb24oZ2xvYmFsRGF0YSwg
b2JqZWN0KTsKKyAgICAgICAgICAgIHJldHVybiB2YWxpZGF0ZUFsbG9jPERlYnVnZ2VyQWN0aXZh
dGlvbj4oZ2xvYmFsRGF0YSwgbmV3IChhbGxvY2F0ZUNlbGw8RGVidWdnZXJBY3RpdmF0aW9uPihn
bG9iYWxEYXRhLmhlYXApKSBEZWJ1Z2dlckFjdGl2YXRpb24oZ2xvYmFsRGF0YSwgb2JqZWN0KSk7
CiAgICAgICAgIH0KIAogICAgICAgICB2aXJ0dWFsIHZvaWQgdmlzaXRDaGlsZHJlbihTbG90Vmlz
aXRvciYpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJndW1lbnRzLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJndW1lbnRzLmgJ
KHJldmlzaW9uIDkxOTM5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJndW1l
bnRzLmgJKHdvcmtpbmcgY29weSkKQEAgLTYxLDEyICs2MSwxMiBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICBwdWJsaWM6CiAgICAgICAgIHN0YXRpYyBBcmd1bWVudHMqIGNyZWF0ZShKU0dsb2JhbERh
dGEmIGdsb2JhbERhdGEsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogICAgICAgICB7Ci0gICAgICAg
ICAgICByZXR1cm4gbmV3IChhbGxvY2F0ZUNlbGw8QXJndW1lbnRzPihnbG9iYWxEYXRhLmhlYXAp
KSBBcmd1bWVudHMoY2FsbEZyYW1lKTsKKyAgICAgICAgICAgIHJldHVybiB2YWxpZGF0ZUFsbG9j
PEFyZ3VtZW50cz4oZ2xvYmFsRGF0YSwgbmV3IChhbGxvY2F0ZUNlbGw8QXJndW1lbnRzPihnbG9i
YWxEYXRhLmhlYXApKSBBcmd1bWVudHMoY2FsbEZyYW1lKSk7CiAgICAgICAgIH0KICAgICAgICAg
CiAgICAgICAgIHN0YXRpYyBBcmd1bWVudHMqIGNyZWF0ZU5vUGFyYW1ldGVycyhKU0dsb2JhbERh
dGEmIGdsb2JhbERhdGEsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogICAgICAgICB7Ci0gICAgICAg
ICAgICByZXR1cm4gbmV3IChhbGxvY2F0ZUNlbGw8QXJndW1lbnRzPihnbG9iYWxEYXRhLmhlYXAp
KSBBcmd1bWVudHMoY2FsbEZyYW1lLCBOb1BhcmFtZXRlcnMpOworICAgICAgICAgICAgcmV0dXJu
IHZhbGlkYXRlQWxsb2M8QXJndW1lbnRzPihnbG9iYWxEYXRhLCBuZXcgKGFsbG9jYXRlQ2VsbDxB
cmd1bWVudHM+KGdsb2JhbERhdGEuaGVhcCkpIEFyZ3VtZW50cyhjYWxsRnJhbWUsIE5vUGFyYW1l
dGVycykpOwogICAgICAgICB9CiAKICAgICAgICAgLy8gVXNlIGFuIGVudW0gYmVjYXVzZSBvdGhl
cndpc2UgZ2NjIGluc2lzdHMgb24gZG9pbmcgYSBtZW1vcnkKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0FycmF5Q29uc3RydWN0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUNvbnN0cnVjdG9yLmgJKHJldmlzaW9uIDkxOTM5
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlDb25zdHJ1Y3Rvci5oCSh3
b3JraW5nIGNvcHkpCkBAIC0zNCw3ICszNCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHB1Ymxp
YzoKICAgICAgICAgc3RhdGljIEFycmF5Q29uc3RydWN0b3IqIGNyZWF0ZShFeGVjU3RhdGUqIGV4
ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBB
cnJheVByb3RvdHlwZSogYXJyUHJvdG90eXBlKQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1
cm4gbmV3IChhbGxvY2F0ZUNlbGw8QXJyYXlDb25zdHJ1Y3Rvcj4oKmV4ZWMtPmhlYXAoKSkpIEFy
cmF5Q29uc3RydWN0b3IoZXhlYywgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIGFyclByb3RvdHlw
ZSk7CisgICAgICAgICAgICByZXR1cm4gdmFsaWRhdGVBbGxvYzxBcnJheUNvbnN0cnVjdG9yPihl
eGVjLT5nbG9iYWxEYXRhKCksIG5ldyAoYWxsb2NhdGVDZWxsPEFycmF5Q29uc3RydWN0b3I+KCpl
eGVjLT5oZWFwKCkpKSBBcnJheUNvbnN0cnVjdG9yKGV4ZWMsIGdsb2JhbE9iamVjdCwgc3RydWN0
dXJlLCBhcnJQcm90b3R5cGUpKTsKICAgICAgICAgfQogCiAgICAgICAgIHN0YXRpYyBjb25zdCBD
bGFzc0luZm8gc19pbmZvOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJy
YXlQcm90b3R5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9BcnJheVByb3RvdHlwZS5oCShyZXZpc2lvbiA5MTkzOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0FycmF5UHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTMzLDcgKzMz
LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgcHVibGljOgogICAgICAgICBzdGF0aWMgQXJyYXlQ
cm90b3R5cGUqIGNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlKQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1
cm4gbmV3IChhbGxvY2F0ZUNlbGw8QXJyYXlQcm90b3R5cGU+KCpleGVjLT5oZWFwKCkpKSBBcnJh
eVByb3RvdHlwZShnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSk7CisgICAgICAgICAgICByZXR1cm4g
dmFsaWRhdGVBbGxvYzxBcnJheVByb3RvdHlwZT4oZXhlYy0+Z2xvYmFsRGF0YSgpLCBuZXcgKGFs
bG9jYXRlQ2VsbDxBcnJheVByb3RvdHlwZT4oKmV4ZWMtPmhlYXAoKSkpIEFycmF5UHJvdG90eXBl
KGdsb2JhbE9iamVjdCwgc3RydWN0dXJlKSk7CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAg
IGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBQ
cm9wZXJ0eVNsb3QmKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Jvb2xl
YW5Db25zdHJ1Y3Rvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0Jvb2xlYW5Db25zdHJ1Y3Rvci5oCShyZXZpc2lvbiA5MTkzOSkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0Jvb2xlYW5Db25zdHJ1Y3Rvci5oCSh3b3JraW5nIGNvcHkpCkBA
IC0zNCw3ICszNCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHB1YmxpYzoKICAgICAgICAgc3Rh
dGljIEJvb2xlYW5Db25zdHJ1Y3RvciogY3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEJvb2xlYW5Qcm90b3R5
cGUqIGJvb2xQcm90b3R5cGUpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBuZXcgKGFs
bG9jYXRlQ2VsbDxCb29sZWFuQ29uc3RydWN0b3I+KCpleGVjLT5oZWFwKCkpKSBCb29sZWFuQ29u
c3RydWN0b3IoZXhlYywgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIGJvb2xQcm90b3R5cGUpOwor
ICAgICAgICAgICAgcmV0dXJuIHZhbGlkYXRlQWxsb2M8Qm9vbGVhbkNvbnN0cnVjdG9yPihleGVj
LT5nbG9iYWxEYXRhKCksIG5ldyAoYWxsb2NhdGVDZWxsPEJvb2xlYW5Db25zdHJ1Y3Rvcj4oKmV4
ZWMtPmhlYXAoKSkpIEJvb2xlYW5Db25zdHJ1Y3RvcihleGVjLCBnbG9iYWxPYmplY3QsIHN0cnVj
dHVyZSwgYm9vbFByb3RvdHlwZSkpOwogICAgICAgICB9CiAKICAgICBwcml2YXRlOgpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQm9vbGVhbk9iamVjdC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Jvb2xlYW5PYmplY3QuaAkocmV2aXNp
b24gOTE5MzkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Cb29sZWFuT2JqZWN0
LmgJKHdvcmtpbmcgY29weSkKQEAgLTMyLDcgKzMyLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
cHVibGljOgogICAgICAgICBzdGF0aWMgQm9vbGVhbk9iamVjdCogY3JlYXRlKEpTR2xvYmFsRGF0
YSYgZ2xvYmFsRGF0YSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAgICAgICAgIHsKLSAgICAgICAg
ICAgIHJldHVybiBuZXcgKGFsbG9jYXRlQ2VsbDxCb29sZWFuT2JqZWN0PihnbG9iYWxEYXRhLmhl
YXApKSBCb29sZWFuT2JqZWN0KGdsb2JhbERhdGEsIHN0cnVjdHVyZSk7CisgICAgICAgICAgICBy
ZXR1cm4gdmFsaWRhdGVBbGxvYzxCb29sZWFuT2JqZWN0PihnbG9iYWxEYXRhLCBuZXcgKGFsbG9j
YXRlQ2VsbDxCb29sZWFuT2JqZWN0PihnbG9iYWxEYXRhLmhlYXApKSBCb29sZWFuT2JqZWN0KGds
b2JhbERhdGEsIHN0cnVjdHVyZSkpOwogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBzdGF0
aWMgY29uc3QgQ2xhc3NJbmZvIHNfaW5mbzsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0Jvb2xlYW5Qcm90b3R5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Cb29sZWFuUHJvdG90eXBlLmgJKHJldmlzaW9uIDkxOTM5KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQm9vbGVhblByb3RvdHlwZS5oCSh3b3JraW5nIGNv
cHkpCkBAIC0zMiw3ICszMiw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHB1YmxpYzoKICAgICAg
ICAgc3RhdGljIEJvb2xlYW5Qcm90b3R5cGUqIGNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlKQogICAgICAgICB7
Ci0gICAgICAgICAgICByZXR1cm4gbmV3IChhbGxvY2F0ZUNlbGw8Qm9vbGVhblByb3RvdHlwZT4o
KmV4ZWMtPmhlYXAoKSkpIEJvb2xlYW5Qcm90b3R5cGUoZXhlYywgZ2xvYmFsT2JqZWN0LCBzdHJ1
Y3R1cmUpOworICAgICAgICAgICAgcmV0dXJuIHZhbGlkYXRlQWxsb2M8Qm9vbGVhblByb3RvdHlw
ZT4oZXhlYy0+Z2xvYmFsRGF0YSgpLCBuZXcgKGFsbG9jYXRlQ2VsbDxCb29sZWFuUHJvdG90eXBl
PigqZXhlYy0+aGVhcCgpKSkgQm9vbGVhblByb3RvdHlwZShleGVjLCBnbG9iYWxPYmplY3QsIHN0
cnVjdHVyZSkpOwogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBzdGF0aWMgY29uc3QgQ2xh
c3NJbmZvIHNfaW5mbzsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVD
b25zdHJ1Y3Rvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0RhdGVDb25zdHJ1Y3Rvci5oCShyZXZpc2lvbiA5MTkzOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0RhdGVDb25zdHJ1Y3Rvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw3ICsz
NCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHB1YmxpYzoKICAgICAgICAgc3RhdGljIERhdGVD
b25zdHJ1Y3RvciogY3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIERhdGVQcm90b3R5cGUqIGRhdGVQcm90b3R5
cGUpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBuZXcgKGFsbG9jYXRlQ2VsbDxEYXRl
Q29uc3RydWN0b3I+KCpleGVjLT5oZWFwKCkpKSBEYXRlQ29uc3RydWN0b3IoZXhlYywgZ2xvYmFs
T2JqZWN0LCBzdHJ1Y3R1cmUsIGRhdGVQcm90b3R5cGUpOworICAgICAgICAgICAgcmV0dXJuIHZh
bGlkYXRlQWxsb2M8RGF0ZUNvbnN0cnVjdG9yPihleGVjLT5nbG9iYWxEYXRhKCksIG5ldyAoYWxs
b2NhdGVDZWxsPERhdGVDb25zdHJ1Y3Rvcj4oKmV4ZWMtPmhlYXAoKSkpIERhdGVDb25zdHJ1Y3Rv
cihleGVjLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgZGF0ZVByb3RvdHlwZSkpOwogICAgICAg
ICB9CiAKICAgICAgICAgc3RhdGljIGNvbnN0IENsYXNzSW5mbyBzX2luZm87CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlSW5zdGFuY2UuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlSW5zdGFuY2UuaAkocmV2aXNpb24gOTE5
MzkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlSW5zdGFuY2UuaAkod29y
a2luZyBjb3B5KQpAQCAtMzcsMTEgKzM3LDExIEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHB1Ymxp
YzoKICAgICAgICAgc3RhdGljIERhdGVJbnN0YW5jZSogY3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGRvdWJsZSBkYXRlKQogICAgICAgICB7Ci0gICAgICAgICAg
ICByZXR1cm4gbmV3IChhbGxvY2F0ZUNlbGw8RGF0ZUluc3RhbmNlPigqZXhlYy0+aGVhcCgpKSkg
RGF0ZUluc3RhbmNlKGV4ZWMsIHN0cnVjdHVyZSwgZGF0ZSk7CisgICAgICAgICAgICByZXR1cm4g
dmFsaWRhdGVBbGxvYzxEYXRlSW5zdGFuY2U+KGV4ZWMtPmdsb2JhbERhdGEoKSwgbmV3IChhbGxv
Y2F0ZUNlbGw8RGF0ZUluc3RhbmNlPigqZXhlYy0+aGVhcCgpKSkgRGF0ZUluc3RhbmNlKGV4ZWMs
IHN0cnVjdHVyZSwgZGF0ZSkpOwogICAgICAgICB9CiAgICAgICAgIHN0YXRpYyBEYXRlSW5zdGFu
Y2UqIGNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZSogc3RydWN0dXJlKQogICAgICAg
ICB7Ci0gICAgICAgICAgICByZXR1cm4gbmV3IChhbGxvY2F0ZUNlbGw8RGF0ZUluc3RhbmNlPigq
ZXhlYy0+aGVhcCgpKSkgRGF0ZUluc3RhbmNlKGV4ZWMsIHN0cnVjdHVyZSk7CisgICAgICAgICAg
ICByZXR1cm4gdmFsaWRhdGVBbGxvYzxEYXRlSW5zdGFuY2U+KGV4ZWMtPmdsb2JhbERhdGEoKSwg
bmV3IChhbGxvY2F0ZUNlbGw8RGF0ZUluc3RhbmNlPigqZXhlYy0+aGVhcCgpKSkgRGF0ZUluc3Rh
bmNlKGV4ZWMsIHN0cnVjdHVyZSkpOwogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBkb3Vi
bGUgaW50ZXJuYWxOdW1iZXIoKSBjb25zdCB7IHJldHVybiBpbnRlcm5hbFZhbHVlKCkudW5jaGVj
a2VkR2V0TnVtYmVyKCk7IH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Rh
dGVQcm90b3R5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9EYXRlUHJvdG90eXBlLmgJKHJldmlzaW9uIDkxOTM5KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvRGF0ZVByb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw3ICszNCw3
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHB1YmxpYzoKICAgICAgICAgc3RhdGljIERhdGVQcm90
b3R5cGUqIGNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIFN0cnVjdHVyZSogc3RydWN0dXJlKQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4g
bmV3IChhbGxvY2F0ZUNlbGw8RGF0ZVByb3RvdHlwZT4oKmV4ZWMtPmhlYXAoKSkpIERhdGVQcm90
b3R5cGUoZXhlYywgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUpOworICAgICAgICAgICAgcmV0dXJu
IHZhbGlkYXRlQWxsb2M8RGF0ZVByb3RvdHlwZT4oZXhlYy0+Z2xvYmFsRGF0YSgpLCBuZXcgKGFs
bG9jYXRlQ2VsbDxEYXRlUHJvdG90eXBlPigqZXhlYy0+aGVhcCgpKSkgRGF0ZVByb3RvdHlwZShl
eGVjLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSkpOwogICAgICAgICB9CiAgICAgICAgIHZpcnR1
YWwgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYs
IFByb3BlcnR5U2xvdCYpOwogICAgICAgICB2aXJ0dWFsIGJvb2wgZ2V0T3duUHJvcGVydHlEZXNj
cmlwdG9yKEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBQcm9wZXJ0eURlc2NyaXB0b3Im
KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvci5jcHAJKHJldmlzaW9u
IDkxOTM5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3IuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xNzYsNyArMTc2LDcgQEAgcHJpdmF0ZToKIHB1YmxpYzoKICAgICBzdGF0
aWMgU3RyaWN0TW9kZVR5cGVFcnJvckZ1bmN0aW9uKiBjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgY29uc3Qg
VVN0cmluZyYgbWVzc2FnZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBuZXcgKGFsbG9jYXRlQ2Vs
bDxTdHJpY3RNb2RlVHlwZUVycm9yRnVuY3Rpb24+KCpleGVjLT5oZWFwKCkpKSBTdHJpY3RNb2Rl
VHlwZUVycm9yRnVuY3Rpb24oZXhlYywgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIG1lc3NhZ2Up
OworICAgICAgICByZXR1cm4gdmFsaWRhdGVBbGxvYzxTdHJpY3RNb2RlVHlwZUVycm9yRnVuY3Rp
b24+KGV4ZWMtPmdsb2JhbERhdGEoKSwgbmV3IChhbGxvY2F0ZUNlbGw8U3RyaWN0TW9kZVR5cGVF
cnJvckZ1bmN0aW9uPigqZXhlYy0+aGVhcCgpKSkgU3RyaWN0TW9kZVR5cGVFcnJvckZ1bmN0aW9u
KGV4ZWMsIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBtZXNzYWdlKSk7CiAgICAgfQogICAgIAog
ICAgIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdFRocm93VHlw
ZUVycm9yKEV4ZWNTdGF0ZSogZXhlYykKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0Vycm9yQ29uc3RydWN0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9FcnJvckNvbnN0cnVjdG9yLmgJKHJldmlzaW9uIDkxOTM5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JDb25zdHJ1Y3Rvci5oCSh3b3JraW5nIGNvcHkp
CkBAIC0zNSw3ICszNSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHB1YmxpYzoKICAgICAgICAg
c3RhdGljIEVycm9yQ29uc3RydWN0b3IqIGNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBFcnJvclByb3RvdHlw
ZSogZXJyUHJvdG90eXBlKQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gbmV3IChhbGxv
Y2F0ZUNlbGw8RXJyb3JDb25zdHJ1Y3Rvcj4oKmV4ZWMtPmhlYXAoKSkpIEVycm9yQ29uc3RydWN0
b3IoZXhlYywgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIGVyclByb3RvdHlwZSk7CisgICAgICAg
ICAgICByZXR1cm4gdmFsaWRhdGVBbGxvYzxFcnJvckNvbnN0cnVjdG9yPihleGVjLT5nbG9iYWxE
YXRhKCksIG5ldyAoYWxsb2NhdGVDZWxsPEVycm9yQ29uc3RydWN0b3I+KCpleGVjLT5oZWFwKCkp
KSBFcnJvckNvbnN0cnVjdG9yKGV4ZWMsIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBlcnJQcm90
b3R5cGUpKTsKICAgICAgICAgfQogICAgICAgICAKICAgICBwcml2YXRlOgpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JJbnN0YW5jZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JJbnN0YW5jZS5jcHAJKHJldmlzaW9u
IDkxOTM5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JJbnN0YW5jZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTMwLDcgKzMwLDkgQEAgRXJyb3JJbnN0YW5jZTo6RXJyb3JJ
bnN0YW5jZShKU0dsb2JhbERhdAogICAgICwgbV9hcHBlbmRTb3VyY2VUb01lc3NhZ2UoZmFsc2Up
CiB7CiAgICAgQVNTRVJUKGluaGVyaXRzKCZzX2luZm8pKTsKKyAgICBnbG9iYWxEYXRhLnNldElu
aXRpYWxpemluZ09iamVjdChmYWxzZSk7CiAgICAgcHV0RGlyZWN0KGdsb2JhbERhdGEsIGdsb2Jh
bERhdGEucHJvcGVydHlOYW1lcy0+bWVzc2FnZSwganNTdHJpbmcoJmdsb2JhbERhdGEsICIiKSwg
RG9udEVudW0pOworICAgIGdsb2JhbERhdGEuc2V0SW5pdGlhbGl6aW5nT2JqZWN0KHRydWUpOwog
fQogCiBFcnJvckluc3RhbmNlOjpFcnJvckluc3RhbmNlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0
YSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IFVTdHJpbmcmIG1lc3NhZ2UpCkBAIC0zOCwx
OSArNDAsMjEgQEAgRXJyb3JJbnN0YW5jZTo6RXJyb3JJbnN0YW5jZShKU0dsb2JhbERhdAogICAg
ICwgbV9hcHBlbmRTb3VyY2VUb01lc3NhZ2UoZmFsc2UpCiB7CiAgICAgQVNTRVJUKGluaGVyaXRz
KCZzX2luZm8pKTsKKyAgICBnbG9iYWxEYXRhLnNldEluaXRpYWxpemluZ09iamVjdChmYWxzZSk7
CiAgICAgcHV0RGlyZWN0KGdsb2JhbERhdGEsIGdsb2JhbERhdGEucHJvcGVydHlOYW1lcy0+bWVz
c2FnZSwganNTdHJpbmcoJmdsb2JhbERhdGEsIG1lc3NhZ2UpLCBEb250RW51bSk7CisgICAgZ2xv
YmFsRGF0YS5zZXRJbml0aWFsaXppbmdPYmplY3QodHJ1ZSk7CiB9CiAKIEVycm9ySW5zdGFuY2Uq
IEVycm9ySW5zdGFuY2U6OmNyZWF0ZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFN0cnVjdHVy
ZSogc3RydWN0dXJlLCBjb25zdCBVU3RyaW5nJiBtZXNzYWdlKQogewotICAgIHJldHVybiBuZXcg
KGFsbG9jYXRlQ2VsbDxFcnJvckluc3RhbmNlPihnbG9iYWxEYXRhLmhlYXApKSBFcnJvckluc3Rh
bmNlKGdsb2JhbERhdGEsIHN0cnVjdHVyZSwgbWVzc2FnZSk7CisgICAgcmV0dXJuIHZhbGlkYXRl
QWxsb2M8RXJyb3JJbnN0YW5jZT4oZ2xvYmFsRGF0YSwgbmV3IChhbGxvY2F0ZUNlbGw8RXJyb3JJ
bnN0YW5jZT4oZ2xvYmFsRGF0YS5oZWFwKSkgRXJyb3JJbnN0YW5jZShnbG9iYWxEYXRhLCBzdHJ1
Y3R1cmUsIG1lc3NhZ2UpKTsKIH0KIAogRXJyb3JJbnN0YW5jZSogRXJyb3JJbnN0YW5jZTo6Y3Jl
YXRlKEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTVmFsdWUgbWVzc2Fn
ZSkKIHsKICAgICBpZiAobWVzc2FnZS5pc1VuZGVmaW5lZCgpKQotICAgICAgICByZXR1cm4gbmV3
IChhbGxvY2F0ZUNlbGw8RXJyb3JJbnN0YW5jZT4oKmV4ZWMtPmhlYXAoKSkpIEVycm9ySW5zdGFu
Y2UoZXhlYy0+Z2xvYmFsRGF0YSgpLCBzdHJ1Y3R1cmUpOwotICAgIHJldHVybiBuZXcgKGFsbG9j
YXRlQ2VsbDxFcnJvckluc3RhbmNlPigqZXhlYy0+aGVhcCgpKSkgRXJyb3JJbnN0YW5jZShleGVj
LT5nbG9iYWxEYXRhKCksIHN0cnVjdHVyZSwgbWVzc2FnZS50b1N0cmluZyhleGVjKSk7CisgICAg
ICAgIHJldHVybiB2YWxpZGF0ZUFsbG9jPEVycm9ySW5zdGFuY2U+KGV4ZWMtPmdsb2JhbERhdGEo
KSwgbmV3IChhbGxvY2F0ZUNlbGw8RXJyb3JJbnN0YW5jZT4oKmV4ZWMtPmhlYXAoKSkpIEVycm9y
SW5zdGFuY2UoZXhlYy0+Z2xvYmFsRGF0YSgpLCBzdHJ1Y3R1cmUpKTsKKyAgICByZXR1cm4gdmFs
aWRhdGVBbGxvYzxFcnJvckluc3RhbmNlPihleGVjLT5nbG9iYWxEYXRhKCksIG5ldyAoYWxsb2Nh
dGVDZWxsPEVycm9ySW5zdGFuY2U+KCpleGVjLT5oZWFwKCkpKSBFcnJvckluc3RhbmNlKGV4ZWMt
Pmdsb2JhbERhdGEoKSwgc3RydWN0dXJlLCBtZXNzYWdlLnRvU3RyaW5nKGV4ZWMpKSk7CiB9CiAK
IH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
RXJyb3JQcm90b3R5cGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0Vycm9yUHJvdG90eXBlLmNwcAkocmV2aXNpb24gOTE5MzkpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9FcnJvclByb3RvdHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTUzLDcgKzUzLDkgQEAgQVNTRVJUX0NMQVNTX0ZJVFNfSU5fQ0VMTChFcnJvclByb3RvdHlwZQog
RXJyb3JQcm90b3R5cGU6OkVycm9yUHJvdG90eXBlKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAgICAgOiBFcnJvcklu
c3RhbmNlKGV4ZWMtPmdsb2JhbERhdGEoKSwgc3RydWN0dXJlKQogeworICAgIGV4ZWMtPmdsb2Jh
bERhdGEoKS5zZXRJbml0aWFsaXppbmdPYmplY3QoZmFsc2UpOwogICAgIHB1dERpcmVjdChleGVj
LT5nbG9iYWxEYXRhKCksIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5uYW1lLCBqc05vbnRyaXZpYWxT
dHJpbmcoZXhlYywgIkVycm9yIiksIERvbnRFbnVtKTsKKyAgICBleGVjLT5nbG9iYWxEYXRhKCku
c2V0SW5pdGlhbGl6aW5nT2JqZWN0KHRydWUpOwogCiAgICAgQVNTRVJUKGluaGVyaXRzKCZzX2lu
Zm8pKTsKICAgICBwdXRBbm9ueW1vdXNWYWx1ZShnbG9iYWxPYmplY3QtPmdsb2JhbERhdGEoKSwg
MCwgZ2xvYmFsT2JqZWN0KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vy
cm9yUHJvdG90eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvRXJyb3JQcm90b3R5cGUuaAkocmV2aXNpb24gOTE5MzkpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9FcnJvclByb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw3ICsz
NCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHB1YmxpYzoKICAgICAgICAgc3RhdGljIEVycm9y
UHJvdG90eXBlKiBjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAgICAgICAgewotICAgICAgICAgICAgcmV0
dXJuIG5ldyAoYWxsb2NhdGVDZWxsPEVycm9yUHJvdG90eXBlPigqZXhlYy0+aGVhcCgpKSkgRXJy
b3JQcm90b3R5cGUoZXhlYywgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUpOworICAgICAgICAgICAg
cmV0dXJuIHZhbGlkYXRlQWxsb2M8RXJyb3JQcm90b3R5cGU+KGV4ZWMtPmdsb2JhbERhdGEoKSwg
bmV3IChhbGxvY2F0ZUNlbGw8RXJyb3JQcm90b3R5cGU+KCpleGVjLT5oZWFwKCkpKSBFcnJvclBy
b3RvdHlwZShleGVjLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSkpOwogICAgICAgICB9CiAgICAg
ICAgIAogICAgICAgICBzdGF0aWMgY29uc3QgQ2xhc3NJbmZvIHNfaW5mbzsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4Y2VwdGlvbkhlbHBlcnMuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4Y2VwdGlvbkhlbHBlcnMuY3BwCShy
ZXZpc2lvbiA5MTkzOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4Y2VwdGlv
bkhlbHBlcnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MSw3ICs1MSw3IEBAIHByaXZhdGU6CiBw
dWJsaWM6CiAgICAgc3RhdGljIEludGVycnVwdGVkRXhlY3V0aW9uRXJyb3IqIGNyZWF0ZShKU0ds
b2JhbERhdGEmIGdsb2JhbERhdGEpCiAgICAgewotICAgICAgICByZXR1cm4gbmV3IChhbGxvY2F0
ZUNlbGw8SW50ZXJydXB0ZWRFeGVjdXRpb25FcnJvcj4oZ2xvYmFsRGF0YS5oZWFwKSkgSW50ZXJy
dXB0ZWRFeGVjdXRpb25FcnJvcihnbG9iYWxEYXRhKTsKKyAgICAgICAgcmV0dXJuIHZhbGlkYXRl
QWxsb2M8SW50ZXJydXB0ZWRFeGVjdXRpb25FcnJvcj4oZ2xvYmFsRGF0YSwgbmV3IChhbGxvY2F0
ZUNlbGw8SW50ZXJydXB0ZWRFeGVjdXRpb25FcnJvcj4oZ2xvYmFsRGF0YS5oZWFwKSkgSW50ZXJy
dXB0ZWRFeGVjdXRpb25FcnJvcihnbG9iYWxEYXRhKSk7CiAgICAgfQogCiAgICAgdmlydHVhbCBD
b21wbFR5cGUgZXhjZXB0aW9uVHlwZSgpIGNvbnN0IHsgcmV0dXJuIEludGVycnVwdGVkOyB9CkBA
IC03NCw3ICs3NCw3IEBAIHByaXZhdGU6CiBwdWJsaWM6CiAgICAgc3RhdGljIFRlcm1pbmF0ZWRF
eGVjdXRpb25FcnJvciogY3JlYXRlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSkKICAgICB7Ci0g
ICAgICAgIHJldHVybiBuZXcgKGFsbG9jYXRlQ2VsbDxUZXJtaW5hdGVkRXhlY3V0aW9uRXJyb3I+
KGdsb2JhbERhdGEuaGVhcCkpIFRlcm1pbmF0ZWRFeGVjdXRpb25FcnJvcihnbG9iYWxEYXRhKTsK
KyAgICAgICAgcmV0dXJuIHZhbGlkYXRlQWxsb2M8VGVybWluYXRlZEV4ZWN1dGlvbkVycm9yPihn
bG9iYWxEYXRhLCBuZXcgKGFsbG9jYXRlQ2VsbDxUZXJtaW5hdGVkRXhlY3V0aW9uRXJyb3I+KGds
b2JhbERhdGEuaGVhcCkpIFRlcm1pbmF0ZWRFeGVjdXRpb25FcnJvcihnbG9iYWxEYXRhKSk7CiAg
ICAgfQogCiAgICAgdmlydHVhbCBDb21wbFR5cGUgZXhjZXB0aW9uVHlwZSgpIGNvbnN0IHsgcmV0
dXJuIFRlcm1pbmF0ZWQ7IH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4
ZWN1dGFibGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9F
eGVjdXRhYmxlLmgJKHJldmlzaW9uIDkxOTM5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvRXhlY3V0YWJsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC02OCw3ICs2OCw3IEBAIG5hbWVz
cGFjZSBKU0MgewogICAgIHB1YmxpYzoKICAgICAgICAgc3RhdGljIEV4ZWN1dGFibGVCYXNlKiBj
cmVhdGUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgaW50
IG51bVBhcmFtZXRlcnMpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBuZXcgKGFsbG9j
YXRlQ2VsbDxFeGVjdXRhYmxlQmFzZT4oZ2xvYmFsRGF0YS5oZWFwKSkgRXhlY3V0YWJsZUJhc2Uo
Z2xvYmFsRGF0YSwgc3RydWN0dXJlLCBudW1QYXJhbWV0ZXJzKTsKKyAgICAgICAgICAgIHJldHVy
biB2YWxpZGF0ZUFsbG9jPEV4ZWN1dGFibGVCYXNlPihnbG9iYWxEYXRhLCBuZXcgKGFsbG9jYXRl
Q2VsbDxFeGVjdXRhYmxlQmFzZT4oZ2xvYmFsRGF0YS5oZWFwKSkgRXhlY3V0YWJsZUJhc2UoZ2xv
YmFsRGF0YSwgc3RydWN0dXJlLCBudW1QYXJhbWV0ZXJzKSk7CiAgICAgICAgIH0KIAogICAgICAg
ICBib29sIGlzSG9zdEZ1bmN0aW9uKCkgY29uc3QKQEAgLTE3MiwxMyArMTcyLDEzIEBAIG5hbWVz
cGFjZSBKU0MgewogICAgICAgICBzdGF0aWMgTmF0aXZlRXhlY3V0YWJsZSogY3JlYXRlKEpTR2xv
YmFsRGF0YSYgZ2xvYmFsRGF0YSwgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyIGNhbGxUaHVuaywgTmF0
aXZlRnVuY3Rpb24gZnVuY3Rpb24sIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciBjb25zdHJ1Y3RUaHVu
aywgTmF0aXZlRnVuY3Rpb24gY29uc3RydWN0b3IpCiAgICAgICAgIHsKICAgICAgICAgICAgIGlm
ICghY2FsbFRodW5rKQotICAgICAgICAgICAgICAgIHJldHVybiBuZXcgKGFsbG9jYXRlQ2VsbDxO
YXRpdmVFeGVjdXRhYmxlPihnbG9iYWxEYXRhLmhlYXApKSBOYXRpdmVFeGVjdXRhYmxlKGdsb2Jh
bERhdGEsIEpJVENvZGUoKSwgZnVuY3Rpb24sIEpJVENvZGUoKSwgY29uc3RydWN0b3IpOwotICAg
ICAgICAgICAgcmV0dXJuIG5ldyAoYWxsb2NhdGVDZWxsPE5hdGl2ZUV4ZWN1dGFibGU+KGdsb2Jh
bERhdGEuaGVhcCkpIE5hdGl2ZUV4ZWN1dGFibGUoZ2xvYmFsRGF0YSwgSklUQ29kZTo6SG9zdEZ1
bmN0aW9uKGNhbGxUaHVuayksIGZ1bmN0aW9uLCBKSVRDb2RlOjpIb3N0RnVuY3Rpb24oY29uc3Ry
dWN0VGh1bmspLCBjb25zdHJ1Y3Rvcik7CisgICAgICAgICAgICAgICAgcmV0dXJuIHZhbGlkYXRl
QWxsb2M8TmF0aXZlRXhlY3V0YWJsZT4oZ2xvYmFsRGF0YSwgbmV3IChhbGxvY2F0ZUNlbGw8TmF0
aXZlRXhlY3V0YWJsZT4oZ2xvYmFsRGF0YS5oZWFwKSkgTmF0aXZlRXhlY3V0YWJsZShnbG9iYWxE
YXRhLCBKSVRDb2RlKCksIGZ1bmN0aW9uLCBKSVRDb2RlKCksIGNvbnN0cnVjdG9yKSk7CisgICAg
ICAgICAgICByZXR1cm4gdmFsaWRhdGVBbGxvYzxOYXRpdmVFeGVjdXRhYmxlPihnbG9iYWxEYXRh
LCBuZXcgKGFsbG9jYXRlQ2VsbDxOYXRpdmVFeGVjdXRhYmxlPihnbG9iYWxEYXRhLmhlYXApKSBO
YXRpdmVFeGVjdXRhYmxlKGdsb2JhbERhdGEsIEpJVENvZGU6Okhvc3RGdW5jdGlvbihjYWxsVGh1
bmspLCBmdW5jdGlvbiwgSklUQ29kZTo6SG9zdEZ1bmN0aW9uKGNvbnN0cnVjdFRodW5rKSwgY29u
c3RydWN0b3IpKTsKICAgICAgICAgfQogI2Vsc2UKICAgICAgICAgc3RhdGljIE5hdGl2ZUV4ZWN1
dGFibGUqIGNyZWF0ZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIE5hdGl2ZUZ1bmN0aW9uIGZ1
bmN0aW9uLCBOYXRpdmVGdW5jdGlvbiBjb25zdHJ1Y3RvcikKICAgICAgICAgewotICAgICAgICAg
ICAgcmV0dXJuIG5ldyAoYWxsb2NhdGVDZWxsPE5hdGl2ZUV4ZWN1dGFibGU+KGdsb2JhbERhdGEu
aGVhcCkpIE5hdGl2ZUV4ZWN1dGFibGUoZ2xvYmFsRGF0YSwgZnVuY3Rpb24sIGNvbnN0cnVjdG9y
KTsKKyAgICAgICAgICAgIHJldHVybiB2YWxpZGF0ZUFsbG9jPE5hdGl2ZUV4ZWN1dGFibGU+KGds
b2JhbERhdGEsIG5ldyAoYWxsb2NhdGVDZWxsPE5hdGl2ZUV4ZWN1dGFibGU+KGdsb2JhbERhdGEu
aGVhcCkpIE5hdGl2ZUV4ZWN1dGFibGUoZ2xvYmFsRGF0YSwgZnVuY3Rpb24sIGNvbnN0cnVjdG9y
KSk7CiAgICAgICAgIH0KICNlbmRpZgogCkBAIC0yOTgsNyArMjk4LDcgQEAgbmFtZXNwYWNlIEpT
QyB7CiAKICAgICAgICAgc3RhdGljIEV2YWxFeGVjdXRhYmxlKiBjcmVhdGUoRXhlY1N0YXRlKiBl
eGVjLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIGJvb2wgaXNJblN0cmljdENvbnRleHQpIAog
ICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gbmV3IChhbGxvY2F0ZUNlbGw8RXZhbEV4ZWN1
dGFibGU+KCpleGVjLT5oZWFwKCkpKSBFdmFsRXhlY3V0YWJsZShleGVjLCBzb3VyY2UsIGlzSW5T
dHJpY3RDb250ZXh0KTsgCisgICAgICAgICAgICByZXR1cm4gdmFsaWRhdGVBbGxvYzxFdmFsRXhl
Y3V0YWJsZT4oZXhlYy0+Z2xvYmFsRGF0YSgpLCBuZXcgKGFsbG9jYXRlQ2VsbDxFdmFsRXhlY3V0
YWJsZT4oKmV4ZWMtPmhlYXAoKSkpIEV2YWxFeGVjdXRhYmxlKGV4ZWMsIHNvdXJjZSwgaXNJblN0
cmljdENvbnRleHQpKTsKICAgICAgICAgfQogCiAjaWYgRU5BQkxFKEpJVCkKQEAgLTMyOCw3ICsz
MjgsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBwdWJsaWM6CiAgICAgICAgIHN0YXRpYyBQcm9n
cmFtRXhlY3V0YWJsZSogY3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgU291cmNlQ29kZSYg
c291cmNlKQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gbmV3IChhbGxvY2F0ZUNlbGw8
UHJvZ3JhbUV4ZWN1dGFibGU+KCpleGVjLT5oZWFwKCkpKSBQcm9ncmFtRXhlY3V0YWJsZShleGVj
LCBzb3VyY2UpOworICAgICAgICAgICAgcmV0dXJuIHZhbGlkYXRlQWxsb2M8UHJvZ3JhbUV4ZWN1
dGFibGU+KGV4ZWMtPmdsb2JhbERhdGEoKSwgbmV3IChhbGxvY2F0ZUNlbGw8UHJvZ3JhbUV4ZWN1
dGFibGU+KCpleGVjLT5oZWFwKCkpKSBQcm9ncmFtRXhlY3V0YWJsZShleGVjLCBzb3VyY2UpKTsK
ICAgICAgICAgfQogCiAgICAgICAgIH5Qcm9ncmFtRXhlY3V0YWJsZSgpOwpAQCAtMzgxLDEyICsz
ODEsMTIgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgcHVibGljOgogICAgICAgICBzdGF0aWMgRnVu
Y3Rpb25FeGVjdXRhYmxlKiBjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVy
JiBuYW1lLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIGJvb2wgZm9yY2VVc2VzQXJndW1lbnRz
LCBGdW5jdGlvblBhcmFtZXRlcnMqIHBhcmFtZXRlcnMsIGJvb2wgaXNJblN0cmljdENvbnRleHQs
IGludCBmaXJzdExpbmUsIGludCBsYXN0TGluZSkKICAgICAgICAgewotICAgICAgICAgICAgcmV0
dXJuIG5ldyAoYWxsb2NhdGVDZWxsPEZ1bmN0aW9uRXhlY3V0YWJsZT4oKmV4ZWMtPmhlYXAoKSkp
IEZ1bmN0aW9uRXhlY3V0YWJsZShleGVjLCBuYW1lLCBzb3VyY2UsIGZvcmNlVXNlc0FyZ3VtZW50
cywgcGFyYW1ldGVycywgaXNJblN0cmljdENvbnRleHQsIGZpcnN0TGluZSwgbGFzdExpbmUpOwor
ICAgICAgICAgICAgcmV0dXJuIHZhbGlkYXRlQWxsb2M8RnVuY3Rpb25FeGVjdXRhYmxlPihleGVj
LT5nbG9iYWxEYXRhKCksIG5ldyAoYWxsb2NhdGVDZWxsPEZ1bmN0aW9uRXhlY3V0YWJsZT4oKmV4
ZWMtPmhlYXAoKSkpIEZ1bmN0aW9uRXhlY3V0YWJsZShleGVjLCBuYW1lLCBzb3VyY2UsIGZvcmNl
VXNlc0FyZ3VtZW50cywgcGFyYW1ldGVycywgaXNJblN0cmljdENvbnRleHQsIGZpcnN0TGluZSwg
bGFzdExpbmUpKTsKICAgICAgICAgfQogCiAgICAgICAgIHN0YXRpYyBGdW5jdGlvbkV4ZWN1dGFi
bGUqIGNyZWF0ZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIGNvbnN0IElkZW50aWZpZXImIG5h
bWUsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgYm9vbCBmb3JjZVVzZXNBcmd1bWVudHMsIEZ1
bmN0aW9uUGFyYW1ldGVycyogcGFyYW1ldGVycywgYm9vbCBpc0luU3RyaWN0Q29udGV4dCwgaW50
IGZpcnN0TGluZSwgaW50IGxhc3RMaW5lKQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4g
bmV3IChhbGxvY2F0ZUNlbGw8RnVuY3Rpb25FeGVjdXRhYmxlPihnbG9iYWxEYXRhLmhlYXApKSBG
dW5jdGlvbkV4ZWN1dGFibGUoZ2xvYmFsRGF0YSwgbmFtZSwgc291cmNlLCBmb3JjZVVzZXNBcmd1
bWVudHMsIHBhcmFtZXRlcnMsIGlzSW5TdHJpY3RDb250ZXh0LCBmaXJzdExpbmUsIGxhc3RMaW5l
KTsKKyAgICAgICAgICAgIHJldHVybiB2YWxpZGF0ZUFsbG9jPEZ1bmN0aW9uRXhlY3V0YWJsZT4o
Z2xvYmFsRGF0YSwgbmV3IChhbGxvY2F0ZUNlbGw8RnVuY3Rpb25FeGVjdXRhYmxlPihnbG9iYWxE
YXRhLmhlYXApKSBGdW5jdGlvbkV4ZWN1dGFibGUoZ2xvYmFsRGF0YSwgbmFtZSwgc291cmNlLCBm
b3JjZVVzZXNBcmd1bWVudHMsIHBhcmFtZXRlcnMsIGlzSW5TdHJpY3RDb250ZXh0LCBmaXJzdExp
bmUsIGxhc3RMaW5lKSk7CiAgICAgICAgIH0KIAogICAgICAgICBKU0Z1bmN0aW9uKiBtYWtlKEV4
ZWNTdGF0ZSogZXhlYywgU2NvcGVDaGFpbk5vZGUqIHNjb3BlQ2hhaW4pCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Db25zdHJ1Y3Rvci5oCShy
ZXZpc2lvbiA5MTkzOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9u
Q29uc3RydWN0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtMzQsNyArMzQsNyBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICBwdWJsaWM6CiAgICAgICAgIHN0YXRpYyBGdW5jdGlvbkNvbnN0cnVjdG9yKiBj
cmVhdGUoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSwgRnVuY3Rpb25Qcm90b3R5cGUqIGZ1bmNQcm90b3R5cGUpCiAgICAg
ICAgIHsKLSAgICAgICAgICAgIHJldHVybiBuZXcgKGFsbG9jYXRlQ2VsbDxGdW5jdGlvbkNvbnN0
cnVjdG9yPigqZXhlYy0+aGVhcCgpKSkgRnVuY3Rpb25Db25zdHJ1Y3RvcihleGVjLCBnbG9iYWxP
YmplY3QsIHN0cnVjdHVyZSwgZnVuY1Byb3RvdHlwZSk7CisgICAgICAgICAgICByZXR1cm4gdmFs
aWRhdGVBbGxvYzxGdW5jdGlvbkNvbnN0cnVjdG9yPihleGVjLT5nbG9iYWxEYXRhKCksIG5ldyAo
YWxsb2NhdGVDZWxsPEZ1bmN0aW9uQ29uc3RydWN0b3I+KCpleGVjLT5oZWFwKCkpKSBGdW5jdGlv
bkNvbnN0cnVjdG9yKGV4ZWMsIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBmdW5jUHJvdG90eXBl
KSk7CiAgICAgICAgIH0KIAogICAgIHByaXZhdGU6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9GdW5jdGlvblByb3RvdHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uUHJvdG90eXBlLmgJKHJldmlzaW9uIDkxOTM5KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUuaAkod29y
a2luZyBjb3B5KQpAQCAtMzIsNyArMzIsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBwdWJsaWM6
CiAgICAgICAgIHN0YXRpYyBGdW5jdGlvblByb3RvdHlwZSogY3JlYXRlKEV4ZWNTdGF0ZSogZXhl
YywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAg
ICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBuZXcgKGFsbG9jYXRlQ2VsbDxGdW5jdGlvblBy
b3RvdHlwZT4oKmV4ZWMtPmhlYXAoKSkpIEZ1bmN0aW9uUHJvdG90eXBlKGV4ZWMsIGdsb2JhbE9i
amVjdCwgc3RydWN0dXJlKTsKKyAgICAgICAgICAgIHJldHVybiB2YWxpZGF0ZUFsbG9jPEZ1bmN0
aW9uUHJvdG90eXBlPihleGVjLT5nbG9iYWxEYXRhKCksIG5ldyAoYWxsb2NhdGVDZWxsPEZ1bmN0
aW9uUHJvdG90eXBlPigqZXhlYy0+aGVhcCgpKSkgRnVuY3Rpb25Qcm90b3R5cGUoZXhlYywgZ2xv
YmFsT2JqZWN0LCBzdHJ1Y3R1cmUpKTsKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgdm9p
ZCBhZGRGdW5jdGlvblByb3BlcnRpZXMoRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1
Y3R1cmUqIGZ1bmN0aW9uU3RydWN0dXJlLCBKU0Z1bmN0aW9uKiogY2FsbEZ1bmN0aW9uLCBKU0Z1
bmN0aW9uKiogYXBwbHlGdW5jdGlvbik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9HZXR0ZXJTZXR0ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9HZXR0ZXJTZXR0ZXIuaAkocmV2aXNpb24gOTE5MzkpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9HZXR0ZXJTZXR0ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNDYsNyAr
NDYsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBwdWJsaWM6CiAgICAgICAgIHN0YXRpYyBHZXR0
ZXJTZXR0ZXIqIGNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMpCiAgICAgICAgIHsKLSAgICAgICAgICAg
IHJldHVybiBuZXcgKGFsbG9jYXRlQ2VsbDxHZXR0ZXJTZXR0ZXI+KCpleGVjLT5oZWFwKCkpKSBH
ZXR0ZXJTZXR0ZXIoZXhlYyk7CisgICAgICAgICAgICByZXR1cm4gdmFsaWRhdGVBbGxvYzxHZXR0
ZXJTZXR0ZXI+KGV4ZWMtPmdsb2JhbERhdGEoKSwgbmV3IChhbGxvY2F0ZUNlbGw8R2V0dGVyU2V0
dGVyPigqZXhlYy0+aGVhcCgpKSkgR2V0dGVyU2V0dGVyKGV4ZWMpKTsKICAgICAgICAgfQogCiAg
ICAgICAgIHZpcnR1YWwgdm9pZCB2aXNpdENoaWxkcmVuKFNsb3RWaXNpdG9yJik7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRlcm5hbEZ1bmN0aW9uLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRlcm5hbEZ1bmN0aW9uLmNw
cAkocmV2aXNpb24gOTE5MzkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRl
cm5hbEZ1bmN0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDUsNyArNDUsOSBAQCBJbnRlcm5h
bEZ1bmN0aW9uOjpJbnRlcm5hbEZ1bmN0aW9uKEpTR2xvCiAgICAgOiBKU09iamVjdFdpdGhHbG9i
YWxPYmplY3QoZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUpCiB7CiAgICAgQVNTRVJUKGluaGVyaXRz
KCZzX2luZm8pKTsKKyAgICBnbG9iYWxEYXRhLT5zZXRJbml0aWFsaXppbmdPYmplY3QoZmFsc2Up
OwogICAgIHB1dERpcmVjdCgqZ2xvYmFsRGF0YSwgZ2xvYmFsRGF0YS0+cHJvcGVydHlOYW1lcy0+
bmFtZSwganNTdHJpbmcoZ2xvYmFsRGF0YSwgbmFtZS5pc051bGwoKSA/ICIiIDogbmFtZS51c3Ry
aW5nKCkpLCBEb250RGVsZXRlIHwgUmVhZE9ubHkgfCBEb250RW51bSk7CisgICAgZ2xvYmFsRGF0
YS0+c2V0SW5pdGlhbGl6aW5nT2JqZWN0KHRydWUpOwogfQogCiBjb25zdCBVU3RyaW5nJiBJbnRl
cm5hbEZ1bmN0aW9uOjpuYW1lKEV4ZWNTdGF0ZSogZXhlYykKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTQVBJVmFsdWVXcmFwcGVyLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBUElWYWx1ZVdyYXBwZXIuaAkocmV2aXNpb24gOTE5
MzkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FQSVZhbHVlV3JhcHBlci5o
CSh3b3JraW5nIGNvcHkpCkBAIC00NSw3ICs0NSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAg
ICAKICAgICAgICAgc3RhdGljIEpTQVBJVmFsdWVXcmFwcGVyKiBjcmVhdGUoRXhlY1N0YXRlKiBl
eGVjLCBKU1ZhbHVlIHZhbHVlKSAKICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIG5ldyAo
YWxsb2NhdGVDZWxsPEpTQVBJVmFsdWVXcmFwcGVyPigqZXhlYy0+aGVhcCgpKSkgSlNBUElWYWx1
ZVdyYXBwZXIoZXhlYywgdmFsdWUpOworICAgICAgICAgICAgcmV0dXJuIHZhbGlkYXRlQWxsb2M8
SlNBUElWYWx1ZVdyYXBwZXI+KGV4ZWMtPmdsb2JhbERhdGEoKSwgbmV3IChhbGxvY2F0ZUNlbGw8
SlNBUElWYWx1ZVdyYXBwZXI+KCpleGVjLT5oZWFwKCkpKSBKU0FQSVZhbHVlV3JhcHBlcihleGVj
LCB2YWx1ZSkpOwogICAgICAgICB9CiAKICAgICBwcml2YXRlOgpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNBY3RpdmF0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBY3RpdmF0aW9uLmgJKHJldmlzaW9uIDkxOTM5KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBY3RpdmF0aW9uLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTQ3LDcgKzQ3LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgcHVibGljOgogICAgICAg
ICBzdGF0aWMgSlNBY3RpdmF0aW9uKiBjcmVhdGUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBD
YWxsRnJhbWUqIGNhbGxGcmFtZSwgRnVuY3Rpb25FeGVjdXRhYmxlKiBmdW5jRXhlYykKICAgICAg
ICAgewotICAgICAgICAgICAgcmV0dXJuIG5ldyAoYWxsb2NhdGVDZWxsPEpTQWN0aXZhdGlvbj4o
Z2xvYmFsRGF0YS5oZWFwKSkgSlNBY3RpdmF0aW9uKGNhbGxGcmFtZSwgZnVuY0V4ZWMpOworICAg
ICAgICAgICAgcmV0dXJuIHZhbGlkYXRlQWxsb2M8SlNBY3RpdmF0aW9uPihnbG9iYWxEYXRhLCBu
ZXcgKGFsbG9jYXRlQ2VsbDxKU0FjdGl2YXRpb24+KGdsb2JhbERhdGEuaGVhcCkpIEpTQWN0aXZh
dGlvbihjYWxsRnJhbWUsIGZ1bmNFeGVjKSk7CiAgICAgICAgIH0KIAogICAgICAgICB2aXJ0dWFs
IH5KU0FjdGl2YXRpb24oKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
QXJyYXkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Fy
cmF5LmgJKHJldmlzaW9uIDkxOTM5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNBcnJheS5oCSh3b3JraW5nIGNvcHkpCkBAIC03MSwxNyArNzEsMTcgQEAgbmFtZXNwYWNlIEpT
QyB7CiAKICAgICAgICAgc3RhdGljIEpTQXJyYXkqIGNyZWF0ZShKU0dsb2JhbERhdGEmIGdsb2Jh
bERhdGEsIFN0cnVjdHVyZSogc3RydWN0dXJlKQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1
cm4gbmV3IChhbGxvY2F0ZUNlbGw8SlNBcnJheT4oZ2xvYmFsRGF0YS5oZWFwKSkgSlNBcnJheShn
bG9iYWxEYXRhLCBzdHJ1Y3R1cmUpOworICAgICAgICAgICAgcmV0dXJuIHZhbGlkYXRlQWxsb2M8
SlNBcnJheT4oZ2xvYmFsRGF0YSwgbmV3IChhbGxvY2F0ZUNlbGw8SlNBcnJheT4oZ2xvYmFsRGF0
YS5oZWFwKSkgSlNBcnJheShnbG9iYWxEYXRhLCBzdHJ1Y3R1cmUpKTsKICAgICAgICAgfQogICAg
ICAgICAKICAgICAgICAgc3RhdGljIEpTQXJyYXkqIGNyZWF0ZShKU0dsb2JhbERhdGEmIGdsb2Jh
bERhdGEsIFN0cnVjdHVyZSogc3RydWN0dXJlLCB1bnNpZ25lZCBpbml0aWFsTGVuZ3RoLCBBcnJh
eUNyZWF0aW9uTW9kZSBjcmVhdGVNb2RlKQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4g
bmV3IChhbGxvY2F0ZUNlbGw8SlNBcnJheT4oZ2xvYmFsRGF0YS5oZWFwKSkgSlNBcnJheShnbG9i
YWxEYXRhLCBzdHJ1Y3R1cmUsIGluaXRpYWxMZW5ndGgsIGNyZWF0ZU1vZGUpOworICAgICAgICAg
ICAgcmV0dXJuIHZhbGlkYXRlQWxsb2M8SlNBcnJheT4oZ2xvYmFsRGF0YSwgbmV3IChhbGxvY2F0
ZUNlbGw8SlNBcnJheT4oZ2xvYmFsRGF0YS5oZWFwKSkgSlNBcnJheShnbG9iYWxEYXRhLCBzdHJ1
Y3R1cmUsIGluaXRpYWxMZW5ndGgsIGNyZWF0ZU1vZGUpKTsKICAgICAgICAgfQogICAgICAgICAK
ICAgICAgICAgc3RhdGljIEpTQXJyYXkqIGNyZWF0ZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEs
IFN0cnVjdHVyZSogc3RydWN0dXJlLCBjb25zdCBBcmdMaXN0JiBpbml0aWFsVmFsdWVzKQogICAg
ICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gbmV3IChhbGxvY2F0ZUNlbGw8SlNBcnJheT4oZ2xv
YmFsRGF0YS5oZWFwKSkgSlNBcnJheShnbG9iYWxEYXRhLCBzdHJ1Y3R1cmUsIGluaXRpYWxWYWx1
ZXMpOworICAgICAgICAgICAgcmV0dXJuIHZhbGlkYXRlQWxsb2M8SlNBcnJheT4oZ2xvYmFsRGF0
YSwgbmV3IChhbGxvY2F0ZUNlbGw8SlNBcnJheT4oZ2xvYmFsRGF0YS5oZWFwKSkgSlNBcnJheShn
bG9iYWxEYXRhLCBzdHJ1Y3R1cmUsIGluaXRpYWxWYWx1ZXMpKTsKICAgICAgICAgfQogICAgICAg
ICAKICAgICAgICAgdmlydHVhbCBib29sIGdldE93blByb3BlcnR5U2xvdChFeGVjU3RhdGUqLCBj
b25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCeXRlQXJyYXkuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQnl0ZUFycmF5LmNwcAkocmV2aXNpb24g
OTE5MzkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0J5dGVBcnJheS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTQ0LDcgKzQ0LDcgQEAgSlNCeXRlQXJyYXk6OkpTQnl0ZUFycmF5
KEV4ZWNTdGF0ZSogZXhlYwogICAgICAgICAKIEpTQnl0ZUFycmF5KiBKU0J5dGVBcnJheTo6Y3Jl
YXRlKEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEJ5dGVBcnJheSogc3Rv
cmFnZSkKIHsKLSAgICByZXR1cm4gbmV3IChhbGxvY2F0ZUNlbGw8SlNCeXRlQXJyYXk+KCpleGVj
LT5oZWFwKCkpKSBKU0J5dGVBcnJheShleGVjLCBzdHJ1Y3R1cmUsIHN0b3JhZ2UpOworICAgIHJl
dHVybiB2YWxpZGF0ZUFsbG9jPEpTQnl0ZUFycmF5PihleGVjLT5nbG9iYWxEYXRhKCksIG5ldyAo
YWxsb2NhdGVDZWxsPEpTQnl0ZUFycmF5PigqZXhlYy0+aGVhcCgpKSkgSlNCeXRlQXJyYXkoZXhl
Yywgc3RydWN0dXJlLCBzdG9yYWdlKSk7CiB9CiAKICNpZiAhQVNTRVJUX0RJU0FCTEVECkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuaAkocmV2aXNpb24gOTE5MzkpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuaAkod29ya2luZyBjb3B5KQpA
QCAtMzY4LDkgKzM2OCwyMSBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIHRlbXBsYXRlIDx0eXBl
bmFtZSBUPiB2b2lkKiBhbGxvY2F0ZUNlbGwoSGVhcCYgaGVhcCkKICAgICB7CisjaWYgRU5BQkxF
KEdDX1ZBTElEQVRJT04pCisgICAgICAgIEFTU0VSVCghaGVhcC5nbG9iYWxEYXRhKCktPmlzSW5p
dGlhbGl6aW5nT2JqZWN0KCkpOworICAgICAgICBoZWFwLmdsb2JhbERhdGEoKS0+c2V0SW5pdGlh
bGl6aW5nT2JqZWN0KHRydWUpOworI2VuZGlmCiAgICAgICAgIHJldHVybiBoZWFwLmFsbG9jYXRl
KHNpemVvZihUKSk7CiAgICAgfQotICAgICAgICAKKworICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBU
PiBBTFdBWVNfSU5MSU5FIFQqIHZhbGlkYXRlQWxsb2MoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRh
LCBUKiB0UHRyKQorICAgIHsKKyNpZiBFTkFCTEUoR0NfVkFMSURBVElPTikKKyAgICAgICAgQVNT
RVJUKGdsb2JhbERhdGEuaXNJbml0aWFsaXppbmdPYmplY3QoKSk7CisgICAgICAgIGdsb2JhbERh
dGEuc2V0SW5pdGlhbGl6aW5nT2JqZWN0KGZhbHNlKTsKKyNlbmRpZgorICAgICAgICByZXR1cm4g
dFB0cjsKKyAgICB9CiB9IC8vIG5hbWVzcGFjZSBKU0MKIAogI2VuZGlmIC8vIEpTQ2VsbF9oCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcAkocmV2
aXNpb24gOTE5MzkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9u
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjcsOCArNjcsMTAgQEAgSlNGdW5jdGlvbjo6SlNGdW5j
dGlvbihFeGVjU3RhdGUqIGV4ZWMsIAogICAgICwgbV9zY29wZUNoYWluKGV4ZWMtPmdsb2JhbERh
dGEoKSwgdGhpcywgZ2xvYmFsT2JqZWN0LT5nbG9iYWxTY29wZUNoYWluKCkpCiB7CiAgICAgQVNT
RVJUKGluaGVyaXRzKCZzX2luZm8pKTsKKyAgICBleGVjLT5nbG9iYWxEYXRhKCkuc2V0SW5pdGlh
bGl6aW5nT2JqZWN0KGZhbHNlKTsKICAgICBwdXREaXJlY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBl
eGVjLT5nbG9iYWxEYXRhKCkucHJvcGVydHlOYW1lcy0+bmFtZSwganNTdHJpbmcoZXhlYywgbmFt
ZS5pc051bGwoKSA/ICIiIDogbmFtZS51c3RyaW5nKCkpLCBEb250RGVsZXRlIHwgUmVhZE9ubHkg
fCBEb250RW51bSk7CiAgICAgcHV0RGlyZWN0KGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+cHJv
cGVydHlOYW1lcygpLmxlbmd0aCwganNOdW1iZXIobGVuZ3RoKSwgRG9udERlbGV0ZSB8IFJlYWRP
bmx5IHwgRG9udEVudW0pOworICAgIGV4ZWMtPmdsb2JhbERhdGEoKS5zZXRJbml0aWFsaXppbmdP
YmplY3QodHJ1ZSk7CiB9CiAKIEpTRnVuY3Rpb246OkpTRnVuY3Rpb24oRXhlY1N0YXRlKiBleGVj
LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgaW50
IGxlbmd0aCwgY29uc3QgSWRlbnRpZmllciYgbmFtZSwgTmF0aXZlRnVuY3Rpb24gZnVuYykKQEAg
LTc4LDEwICs4MCwxMiBAQCBKU0Z1bmN0aW9uOjpKU0Z1bmN0aW9uKEV4ZWNTdGF0ZSogZXhlYywg
CiAgICAgQVNTRVJUKGluaGVyaXRzKCZzX2luZm8pKTsKICAgICAKICAgICAvLyBDYW4ndCBkbyB0
aGlzIGR1cmluZyBpbml0aWFsaXphdGlvbiBiZWNhdXNlIGdldEhvc3RGdW5jdGlvbiBtaWdodCBk
byBhIEdDIGFsbG9jYXRpb24uCisgICAgZXhlYy0+Z2xvYmFsRGF0YSgpLnNldEluaXRpYWxpemlu
Z09iamVjdChmYWxzZSk7CiAgICAgbV9leGVjdXRhYmxlLnNldChleGVjLT5nbG9iYWxEYXRhKCks
IHRoaXMsIGV4ZWMtPmdsb2JhbERhdGEoKS5nZXRIb3N0RnVuY3Rpb24oZnVuYykpOwogICAgIAog
ICAgIHB1dERpcmVjdChleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPmdsb2JhbERhdGEoKS5wcm9w
ZXJ0eU5hbWVzLT5uYW1lLCBqc1N0cmluZyhleGVjLCBuYW1lLmlzTnVsbCgpID8gIiIgOiBuYW1l
LnVzdHJpbmcoKSksIERvbnREZWxldGUgfCBSZWFkT25seSB8IERvbnRFbnVtKTsKICAgICBwdXRE
aXJlY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkubGVuZ3RoLCBq
c051bWJlcihsZW5ndGgpLCBEb250RGVsZXRlIHwgUmVhZE9ubHkgfCBEb250RW51bSk7CisgICAg
ZXhlYy0+Z2xvYmFsRGF0YSgpLnNldEluaXRpYWxpemluZ09iamVjdCh0cnVlKTsKIH0KIAogSlNG
dW5jdGlvbjo6SlNGdW5jdGlvbihFeGVjU3RhdGUqIGV4ZWMsIEZ1bmN0aW9uRXhlY3V0YWJsZSog
ZXhlY3V0YWJsZSwgU2NvcGVDaGFpbk5vZGUqIHNjb3BlQ2hhaW5Ob2RlKQpAQCAtOTEsNyArOTUs
OSBAQCBKU0Z1bmN0aW9uOjpKU0Z1bmN0aW9uKEV4ZWNTdGF0ZSogZXhlYywgCiB7CiAgICAgQVNT
RVJUKGluaGVyaXRzKCZzX2luZm8pKTsKICAgICBjb25zdCBJZGVudGlmaWVyJiBuYW1lID0gc3Rh
dGljX2Nhc3Q8RnVuY3Rpb25FeGVjdXRhYmxlKj4obV9leGVjdXRhYmxlLmdldCgpKS0+bmFtZSgp
OworICAgIGV4ZWMtPmdsb2JhbERhdGEoKS5zZXRJbml0aWFsaXppbmdPYmplY3QoZmFsc2UpOwog
ICAgIHB1dERpcmVjdChleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPmdsb2JhbERhdGEoKS5wcm9w
ZXJ0eU5hbWVzLT5uYW1lLCBqc1N0cmluZyhleGVjLCBuYW1lLmlzTnVsbCgpID8gIiIgOiBuYW1l
LnVzdHJpbmcoKSksIERvbnREZWxldGUgfCBSZWFkT25seSB8IERvbnRFbnVtKTsKKyAgICBleGVj
LT5nbG9iYWxEYXRhKCkuc2V0SW5pdGlhbGl6aW5nT2JqZWN0KHRydWUpOwogfQogCiBKU0Z1bmN0
aW9uOjp+SlNGdW5jdGlvbigpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0Z1bmN0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNGdW5jdGlvbi5oCShyZXZpc2lvbiA5MTkzOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTRnVuY3Rpb24uaAkod29ya2luZyBjb3B5KQpAQCAtNTUsMTUgKzU1LDE1IEBAIG5h
bWVzcGFjZSBKU0MgewogICAgIHB1YmxpYzoKICAgICAgICAgc3RhdGljIEpTRnVuY3Rpb24qIGNy
ZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVj
dHVyZSogc3RydWN0dXJlLCBpbnQgbGVuZ3RoLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgTmF0
aXZlRnVuY3Rpb24gbmF0aXZlRnVuYykKICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIG5l
dyAoYWxsb2NhdGVDZWxsPEpTRnVuY3Rpb24+KCpleGVjLT5oZWFwKCkpKSBKU0Z1bmN0aW9uKGV4
ZWMsIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBsZW5ndGgsIGlkZW50LCBuYXRpdmVGdW5jKTsK
KyAgICAgICAgICAgIHJldHVybiB2YWxpZGF0ZUFsbG9jPEpTRnVuY3Rpb24+KGV4ZWMtPmdsb2Jh
bERhdGEoKSwgbmV3IChhbGxvY2F0ZUNlbGw8SlNGdW5jdGlvbj4oKmV4ZWMtPmhlYXAoKSkpIEpT
RnVuY3Rpb24oZXhlYywgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIGxlbmd0aCwgaWRlbnQsIG5h
dGl2ZUZ1bmMpKTsKICAgICAgICAgfQogICAgICAgICBzdGF0aWMgSlNGdW5jdGlvbiogY3JlYXRl
KEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJl
KiBzdHJ1Y3R1cmUsIGludCBsZW5ndGgsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBOYXRpdmVF
eGVjdXRhYmxlKiBuYXRpdmVFeGVjKQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gbmV3
IChhbGxvY2F0ZUNlbGw8SlNGdW5jdGlvbj4oKmV4ZWMtPmhlYXAoKSkpIEpTRnVuY3Rpb24oZXhl
YywgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIGxlbmd0aCwgaWRlbnQsIG5hdGl2ZUV4ZWMpOwor
ICAgICAgICAgICAgcmV0dXJuIHZhbGlkYXRlQWxsb2M8SlNGdW5jdGlvbj4oZXhlYy0+Z2xvYmFs
RGF0YSgpLCBuZXcgKGFsbG9jYXRlQ2VsbDxKU0Z1bmN0aW9uPigqZXhlYy0+aGVhcCgpKSkgSlNG
dW5jdGlvbihleGVjLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgbGVuZ3RoLCBpZGVudCwgbmF0
aXZlRXhlYykpOwogICAgICAgICB9CiAgICAgICAgIHN0YXRpYyBKU0Z1bmN0aW9uKiBjcmVhdGUo
RXhlY1N0YXRlKiBleGVjLCBGdW5jdGlvbkV4ZWN1dGFibGUqIGZ1bmNFeGVjLCBTY29wZUNoYWlu
Tm9kZSogc2NvcGVDaGFpbikKICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIG5ldyAoYWxs
b2NhdGVDZWxsPEpTRnVuY3Rpb24+KCpleGVjLT5oZWFwKCkpKSBKU0Z1bmN0aW9uKGV4ZWMsIGZ1
bmNFeGVjLCBzY29wZUNoYWluKTsKKyAgICAgICAgICAgIHJldHVybiB2YWxpZGF0ZUFsbG9jPEpT
RnVuY3Rpb24+KGV4ZWMtPmdsb2JhbERhdGEoKSwgbmV3IChhbGxvY2F0ZUNlbGw8SlNGdW5jdGlv
bj4oKmV4ZWMtPmhlYXAoKSkpIEpTRnVuY3Rpb24oZXhlYywgZnVuY0V4ZWMsIHNjb3BlQ2hhaW4p
KTsKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgdmlydHVhbCB+SlNGdW5jdGlvbigpOwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxEYXRhLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERhdGEuY3Bw
CShyZXZpc2lvbiA5MTkzOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xv
YmFsRGF0YS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIwMiw2ICsyMDIsOSBAQCBKU0dsb2JhbERh
dGE6OkpTR2xvYmFsRGF0YShHbG9iYWxEYXRhVHlwCiAjaWZuZGVmIE5ERUJVRwogICAgICwgZXhj
bHVzaXZlVGhyZWFkKDApCiAjZW5kaWYKKyNpZiBFTkFCTEUoR0NfVkFMSURBVElPTikKKyAgICAs
IG1faW5pdGlhbGl6aW5nT2JqZWN0KGZhbHNlKQorI2VuZGlmCiB7CiAgICAgaW50ZXJwcmV0ZXIg
PSBuZXcgSW50ZXJwcmV0ZXI7CiAgICAgaWYgKGdsb2JhbERhdGFUeXBlID09IERlZmF1bHQpCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERhdGEuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERhdGEuaAkocmV2
aXNpb24gOTE5MzkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERh
dGEuaAkod29ya2luZyBjb3B5KQpAQCAtMjE1LDYgKzIxNSwyMyBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICAgICAgICAgICAgICA6IHd0ZlRocmVhZERhdGEoKS5zdGFjaygpOwogICAgICAgICB9CiAK
KyAgICAgICAgYm9vbCBpc0luaXRpYWxpemluZ09iamVjdCgpIGNvbnN0IAorICAgICAgICB7IAor
I2lmIEVOQUJMRShHQ19WQUxJREFUSU9OKQorICAgICAgICAgICAgcmV0dXJuIG1faW5pdGlhbGl6
aW5nT2JqZWN0OyAKKyNlbHNlCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisjZW5kaWYKKyAg
ICAgICAgfQorCisgICAgICAgIHZvaWQgc2V0SW5pdGlhbGl6aW5nT2JqZWN0KGJvb2wgdmFsdWUp
IAorICAgICAgICB7CisjaWYgRU5BQkxFKEdDX1ZBTElEQVRJT04pCisgICAgICAgICAgICBtX2lu
aXRpYWxpemluZ09iamVjdCA9IHZhbHVlOyAKKyNlbHNlCisjZW5kaWYKKyAgICAgICAgfQorCiAg
ICAgICAgIExleGVyKiBsZXhlcjsKICAgICAgICAgUGFyc2VyKiBwYXJzZXI7CiAgICAgICAgIElu
dGVycHJldGVyKiBpbnRlcnByZXRlcjsKQEAgLTI5Miw2ICszMDksOSBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICAgICAgYm9vbCBtX2NhblVzZUpJVDsKICNlbmRpZgogICAgICAgICBTdGFja0JvdW5k
cyBtX3N0YWNrOworI2lmIEVOQUJMRShHQ19WQUxJREFUSU9OKQorICAgICAgICBib29sIG1faW5p
dGlhbGl6aW5nT2JqZWN0OworI2VuZGlmCiAgICAgfTsKIAogICAgIGlubGluZSBIYW5kbGVTbG90
IGFsbG9jYXRlR2xvYmFsSGFuZGxlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSkKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAJKHJl
dmlzaW9uIDkxOTM5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxP
YmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjQsNyArMTI0LDkgQEAgdm9pZCBKU0dsb2Jh
bE9iamVjdDo6aW5pdChKU09iamVjdCogdGhpcwogICAgIHN0cnVjdHVyZSgpLT5kaXNhYmxlU3Bl
Y2lmaWNGdW5jdGlvblRyYWNraW5nKCk7CiAKICAgICBtX2dsb2JhbERhdGEgPSBIZWFwOjpoZWFw
KHRoaXMpLT5nbG9iYWxEYXRhKCk7CisgICAgbV9nbG9iYWxEYXRhLT5zZXRJbml0aWFsaXppbmdP
YmplY3QoZmFsc2UpOwogICAgIG1fZ2xvYmFsU2NvcGVDaGFpbi5zZXQoKm1fZ2xvYmFsRGF0YSwg
dGhpcywgU2NvcGVDaGFpbk5vZGU6OmNyZWF0ZSgwLCB0aGlzLCBtX2dsb2JhbERhdGEuZ2V0KCks
IHRoaXMsIHRoaXNWYWx1ZSkpOworICAgIG1fZ2xvYmFsRGF0YS0+c2V0SW5pdGlhbGl6aW5nT2Jq
ZWN0KHRydWUpOwogCiAgICAgSlNHbG9iYWxPYmplY3Q6Omdsb2JhbEV4ZWMoKS0+aW5pdCgwLCAw
LCBtX2dsb2JhbFNjb3BlQ2hhaW4uZ2V0KCksIENhbGxGcmFtZTo6bm9DYWxsZXIoKSwgMCwgMCk7
CiAKQEAgLTEzMiw3ICsxMzQsOSBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0Ojppbml0KEpTT2JqZWN0
KiB0aGlzCiAKICAgICBtX3Byb2ZpbGVHcm91cCA9IDA7CiAKKyAgICBtX2dsb2JhbERhdGEtPnNl
dEluaXRpYWxpemluZ09iamVjdChmYWxzZSk7CiAgICAgcmVzZXQocHJvdG90eXBlKCkpOworICAg
IG1fZ2xvYmFsRGF0YS0+c2V0SW5pdGlhbGl6aW5nT2JqZWN0KHRydWUpOwogfQogCiB2b2lkIEpT
R2xvYmFsT2JqZWN0OjpwdXQoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9w
ZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAkocmV2aXNp
b24gOTE5MzkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVj
dC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMjQsNyArMTI0LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgcHVibGljOgogICAgICAgICBzdGF0aWMgSlNHbG9iYWxPYmplY3QqIGNyZWF0ZShKU0dsb2Jh
bERhdGEmIGdsb2JhbERhdGEsIFN0cnVjdHVyZSogc3RydWN0dXJlKQogICAgICAgICB7Ci0gICAg
ICAgICAgICByZXR1cm4gbmV3IChhbGxvY2F0ZUNlbGw8SlNHbG9iYWxPYmplY3Q+KGdsb2JhbERh
dGEuaGVhcCkpIEpTR2xvYmFsT2JqZWN0KGdsb2JhbERhdGEsIHN0cnVjdHVyZSk7CisgICAgICAg
ICAgICByZXR1cm4gdmFsaWRhdGVBbGxvYzxKU0dsb2JhbE9iamVjdD4oZ2xvYmFsRGF0YSwgbmV3
IChhbGxvY2F0ZUNlbGw8SlNHbG9iYWxPYmplY3Q+KGdsb2JhbERhdGEuaGVhcCkpIEpTR2xvYmFs
T2JqZWN0KGdsb2JhbERhdGEsIHN0cnVjdHVyZSkpOwogICAgICAgICB9CiAKICAgICAgICAgc3Rh
dGljIEpTX0VYUE9SVERBVEEgY29uc3QgQ2xhc3NJbmZvIHNfaW5mbzsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTm90QW5PYmplY3QuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU05vdEFuT2JqZWN0LmgJKHJldmlzaW9uIDkxOTM5
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNOb3RBbk9iamVjdC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC00Niw3ICs0Niw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHB1YmxpYzoK
ICAgICAgICAgc3RhdGljIEpTTm90QW5PYmplY3QqIGNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMpCiAg
ICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBuZXcgKGFsbG9jYXRlQ2VsbDxKU05vdEFuT2Jq
ZWN0PigqZXhlYy0+aGVhcCgpKSkgSlNOb3RBbk9iamVjdChleGVjKTsKKyAgICAgICAgICAgIHJl
dHVybiB2YWxpZGF0ZUFsbG9jPEpTTm90QW5PYmplY3Q+KGV4ZWMtPmdsb2JhbERhdGEoKSwgbmV3
IChhbGxvY2F0ZUNlbGw8SlNOb3RBbk9iamVjdD4oKmV4ZWMtPmhlYXAoKSkpIEpTTm90QW5PYmpl
Y3QoZXhlYykpOwogICAgICAgICB9CiAKICAgICAgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRl
U3RydWN0dXJlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNWYWx1ZSBwcm90b3R5cGUpCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09OT2JqZWN0LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPTk9iamVjdC5oCShyZXZpc2lv
biA5MTkzOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT05PYmplY3QuaAko
d29ya2luZyBjb3B5KQpAQCAtMzksNyArMzksNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBwdWJs
aWM6CiAgICAgICAgIHN0YXRpYyBKU09OT2JqZWN0KiBjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAgICAg
ICAgewotICAgICAgICAgICAgcmV0dXJuIG5ldyAoYWxsb2NhdGVDZWxsPEpTT05PYmplY3Q+KCpl
eGVjLT5oZWFwKCkpKSBKU09OT2JqZWN0KGdsb2JhbE9iamVjdCwgc3RydWN0dXJlKTsKKyAgICAg
ICAgICAgIHJldHVybiB2YWxpZGF0ZUFsbG9jPEpTT05PYmplY3Q+KGV4ZWMtPmdsb2JhbERhdGEo
KSwgbmV3IChhbGxvY2F0ZUNlbGw8SlNPTk9iamVjdD4oKmV4ZWMtPmhlYXAoKSkpIEpTT05PYmpl
Y3QoZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUpKTsKICAgICAgICAgfQogICAgICAgICAKICAgICAg
ICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTR2xvYmFsRGF0YSYgZ2xvYmFs
RGF0YSwgSlNWYWx1ZSBwcm90b3R5cGUpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU09iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTT2JqZWN0LmgJKHJldmlzaW9uIDkxOTM5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtMzY3LDcgKzM2Nyw3IEBAIENP
TVBJTEVfQVNTRVJUKChKU0ZpbmFsT2JqZWN0X2lubGluZVN0b3IKICAgICAgICAgCiAgICAgICAg
IHN0YXRpYyBKU0ZpbmFsT2JqZWN0KiBjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSkKICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIG5ldyAoYWxsb2NhdGVD
ZWxsPEpTRmluYWxPYmplY3Q+KCpleGVjLT5oZWFwKCkpKSBKU0ZpbmFsT2JqZWN0KGV4ZWMtPmds
b2JhbERhdGEoKSwgc3RydWN0dXJlKTsKKyAgICAgICAgICAgIHJldHVybiB2YWxpZGF0ZUFsbG9j
PEpTRmluYWxPYmplY3Q+KGV4ZWMtPmdsb2JhbERhdGEoKSwgbmV3IChhbGxvY2F0ZUNlbGw8SlNG
aW5hbE9iamVjdD4oKmV4ZWMtPmhlYXAoKSkpIEpTRmluYWxPYmplY3QoZXhlYy0+Z2xvYmFsRGF0
YSgpLCBzdHJ1Y3R1cmUpKTsKICAgICAgICAgfQogCiAgICAgICAgIHN0YXRpYyBTdHJ1Y3R1cmUq
IGNyZWF0ZVN0cnVjdHVyZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTVmFsdWUgcHJvdG90
eXBlKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9wZXJ0eU5hbWVJ
dGVyYXRvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5jcHAJKHJldmlzaW9uIDkxOTM5KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTQ0LDggKzQ0LDEwIEBAIGlubGluZSBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yOjpK
U1Byb3BlcnQKICAgICAsIG1fanNTdHJpbmdzKGFkb3B0QXJyYXlQdHIobmV3IFdyaXRlQmFycmll
cjxVbmtub3duPlttX2pzU3RyaW5nc1NpemVdKSkKIHsKICAgICBQcm9wZXJ0eU5hbWVBcnJheURh
dGE6OlByb3BlcnR5TmFtZVZlY3RvciYgcHJvcGVydHlOYW1lVmVjdG9yID0gcHJvcGVydHlOYW1l
QXJyYXlEYXRhLT5wcm9wZXJ0eU5hbWVWZWN0b3IoKTsKKyAgICBleGVjLT5nbG9iYWxEYXRhKCku
c2V0SW5pdGlhbGl6aW5nT2JqZWN0KGZhbHNlKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IG1fanNTdHJpbmdzU2l6ZTsgKytpKQogICAgICAgICBtX2pzU3RyaW5nc1tpXS5zZXQoZXhlYy0+
Z2xvYmFsRGF0YSgpLCB0aGlzLCBqc093bmVkU3RyaW5nKGV4ZWMsIHByb3BlcnR5TmFtZVZlY3Rv
cltpXS51c3RyaW5nKCkpKTsKKyAgICBleGVjLT5nbG9iYWxEYXRhKCkuc2V0SW5pdGlhbGl6aW5n
T2JqZWN0KHRydWUpOwogfQogCiBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yKiBKU1Byb3BlcnR5TmFt
ZUl0ZXJhdG9yOjpjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogbykKQEAgLTYyLDcg
KzY0LDcgQEAgSlNQcm9wZXJ0eU5hbWVJdGVyYXRvciogSlNQcm9wZXJ0eU5hbWVJdAogICAgICAg
ICAhby0+c3RydWN0dXJlKCktPnR5cGVJbmZvKCkub3ZlcnJpZGVzR2V0UHJvcGVydHlOYW1lcygp
KQogICAgICAgICBudW1DYWNoZWFibGVTbG90cyA9IG8tPnN0cnVjdHVyZSgpLT5wcm9wZXJ0eVN0
b3JhZ2VTaXplKCk7CiAgICAgCi0gICAgSlNQcm9wZXJ0eU5hbWVJdGVyYXRvcioganNQcm9wZXJ0
eU5hbWVJdGVyYXRvciA9IG5ldyAoYWxsb2NhdGVDZWxsPEpTUHJvcGVydHlOYW1lSXRlcmF0b3I+
KCpleGVjLT5oZWFwKCkpKSBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yKGV4ZWMsIHByb3BlcnR5TmFt
ZXMuZGF0YSgpLCBudW1DYWNoZWFibGVTbG90cyk7CisgICAgSlNQcm9wZXJ0eU5hbWVJdGVyYXRv
cioganNQcm9wZXJ0eU5hbWVJdGVyYXRvciA9IHZhbGlkYXRlQWxsb2MoZXhlYy0+Z2xvYmFsRGF0
YSgpLCBuZXcgKGFsbG9jYXRlQ2VsbDxKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yPigqZXhlYy0+aGVh
cCgpKSkgSlNQcm9wZXJ0eU5hbWVJdGVyYXRvcihleGVjLCBwcm9wZXJ0eU5hbWVzLmRhdGEoKSwg
bnVtQ2FjaGVhYmxlU2xvdHMpKTsKIAogICAgIGlmIChvLT5zdHJ1Y3R1cmUoKS0+aXNEaWN0aW9u
YXJ5KCkpCiAgICAgICAgIHJldHVybiBqc1Byb3BlcnR5TmFtZUl0ZXJhdG9yOwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lSXRl
cmF0b3IuaAkocmV2aXNpb24gOTE5MzkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ2LDcgKzQ2LDcg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHN0YXRpYyBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9y
KiBjcmVhdGUoRXhlY1N0YXRlKiwgSlNPYmplY3QqKTsKICAgICAgICAgc3RhdGljIEpTUHJvcGVy
dHlOYW1lSXRlcmF0b3IqIGNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZUFycmF5
RGF0YSogcHJvcGVydHlOYW1lQXJyYXlEYXRhLCBzaXplX3QgbnVtQ2FjaGVhYmxlU2xvdCkKICAg
ICAgICAgewotICAgICAgICAgICAgcmV0dXJuIG5ldyAoYWxsb2NhdGVDZWxsPEpTUHJvcGVydHlO
YW1lSXRlcmF0b3I+KCpleGVjLT5oZWFwKCkpKSBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yKGV4ZWMs
IHByb3BlcnR5TmFtZUFycmF5RGF0YSwgbnVtQ2FjaGVhYmxlU2xvdCk7CisgICAgICAgICAgICBy
ZXR1cm4gdmFsaWRhdGVBbGxvYzxKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yPihleGVjLT5nbG9iYWxE
YXRhKCksIG5ldyAoYWxsb2NhdGVDZWxsPEpTUHJvcGVydHlOYW1lSXRlcmF0b3I+KCpleGVjLT5o
ZWFwKCkpKSBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yKGV4ZWMsIHByb3BlcnR5TmFtZUFycmF5RGF0
YSwgbnVtQ2FjaGVhYmxlU2xvdCkpOwogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBzdGF0
aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBK
U1ZhbHVlIHByb3RvdHlwZSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
U3RhdGljU2NvcGVPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU1N0YXRpY1Njb3BlT2JqZWN0LmgJKHJldmlzaW9uIDkxOTM5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdGF0aWNTY29wZU9iamVjdC5oCSh3b3JraW5nIGNv
cHkpCkBAIC0zNCw3ICszNCw3IEBAIG5hbWVzcGFjZSBKU0N7CiAgICAgcHVibGljOgogICAgICAg
ICBzdGF0aWMgSlNTdGF0aWNTY29wZU9iamVjdCogY3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgY29u
c3QgSWRlbnRpZmllciYgaWRlbnQsIEpTVmFsdWUgdmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMp
CiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBuZXcgKGFsbG9jYXRlQ2VsbDxKU1N0YXRp
Y1Njb3BlT2JqZWN0PigqZXhlYy0+aGVhcCgpKSkgSlNTdGF0aWNTY29wZU9iamVjdChleGVjLCBp
ZGVudCwgdmFsdWUsIGF0dHJpYnV0ZXMpOworICAgICAgICAgICAgcmV0dXJuIHZhbGlkYXRlQWxs
b2M8SlNTdGF0aWNTY29wZU9iamVjdD4oZXhlYy0+Z2xvYmFsRGF0YSgpLCBuZXcgKGFsbG9jYXRl
Q2VsbDxKU1N0YXRpY1Njb3BlT2JqZWN0PigqZXhlYy0+aGVhcCgpKSkgSlNTdGF0aWNTY29wZU9i
amVjdChleGVjLCBpZGVudCwgdmFsdWUsIGF0dHJpYnV0ZXMpKTsKICAgICAgICAgfQogCiAgICAg
ICAgIHZpcnR1YWwgdm9pZCB2aXNpdENoaWxkcmVuKFNsb3RWaXNpdG9yJik7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuY3BwCShyZXZpc2lvbiA5MTkzOSkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMjk4LDcgKzI5OCw3IEBAIFVTdHJpbmcgSlNTdHJpbmc6OnRvU3RyaW5nKEV4ZWNT
dGF0ZSogZXgKIAogaW5saW5lIFN0cmluZ09iamVjdCogU3RyaW5nT2JqZWN0OjpjcmVhdGUoRXhl
Y1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1N0cmluZyogc3Ry
aW5nKQogewotICAgIHJldHVybiBuZXcgKGFsbG9jYXRlQ2VsbDxTdHJpbmdPYmplY3Q+KCpleGVj
LT5oZWFwKCkpKSBTdHJpbmdPYmplY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBnbG9iYWxPYmplY3Qt
PnN0cmluZ09iamVjdFN0cnVjdHVyZSgpLCBzdHJpbmcpOworICAgIHJldHVybiB2YWxpZGF0ZUFs
bG9jKGV4ZWMtPmdsb2JhbERhdGEoKSwgbmV3IChhbGxvY2F0ZUNlbGw8U3RyaW5nT2JqZWN0Pigq
ZXhlYy0+aGVhcCgpKSkgU3RyaW5nT2JqZWN0KGV4ZWMtPmdsb2JhbERhdGEoKSwgZ2xvYmFsT2Jq
ZWN0LT5zdHJpbmdPYmplY3RTdHJ1Y3R1cmUoKSwgc3RyaW5nKSk7CiB9CiAKIEpTT2JqZWN0KiBK
U1N0cmluZzo6dG9PYmplY3QoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0KSBjb25zdApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJp
bmcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmlu
Zy5oCShyZXZpc2lvbiA5MTkzOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
U3RyaW5nLmgJKHdvcmtpbmcgY29weSkKQEAgLTMwMCw0MyArMzAwLDQzIEBAIG5hbWVzcGFjZSBK
U0MgewogICAgIHB1YmxpYzoKICAgICAgICAgc3RhdGljIEpTU3RyaW5nKiBjcmVhdGUoSlNHbG9i
YWxEYXRhJiBnbG9iYWxEYXRhLCBjb25zdCBVU3RyaW5nJiB2YWx1ZSkKICAgICAgICAgewotICAg
ICAgICAgICAgcmV0dXJuIG5ldyAoYWxsb2NhdGVDZWxsPEpTU3RyaW5nPihnbG9iYWxEYXRhLmhl
YXApKSBKU1N0cmluZyhnbG9iYWxEYXRhLCB2YWx1ZSk7CisgICAgICAgICAgICByZXR1cm4gdmFs
aWRhdGVBbGxvYzxKU1N0cmluZz4oZ2xvYmFsRGF0YSwgbmV3IChhbGxvY2F0ZUNlbGw8SlNTdHJp
bmc+KGdsb2JhbERhdGEuaGVhcCkpIEpTU3RyaW5nKGdsb2JhbERhdGEsIHZhbHVlKSk7CiAgICAg
ICAgIH0KICAgICAgICAgc3RhdGljIEpTU3RyaW5nKiBjcmVhdGVIYXNPdGhlck93bmVyKEpTR2xv
YmFsRGF0YSYgZ2xvYmFsRGF0YSwgY29uc3QgVVN0cmluZyYgdmFsdWUpCiAgICAgICAgIHsKLSAg
ICAgICAgICAgIHJldHVybiBuZXcgKGFsbG9jYXRlQ2VsbDxKU1N0cmluZz4oZ2xvYmFsRGF0YS5o
ZWFwKSkgSlNTdHJpbmcoZ2xvYmFsRGF0YSwgdmFsdWUsIEhhc090aGVyT3duZXIpOworICAgICAg
ICAgICAgcmV0dXJuIHZhbGlkYXRlQWxsb2M8SlNTdHJpbmc+KGdsb2JhbERhdGEsIG5ldyAoYWxs
b2NhdGVDZWxsPEpTU3RyaW5nPihnbG9iYWxEYXRhLmhlYXApKSBKU1N0cmluZyhnbG9iYWxEYXRh
LCB2YWx1ZSwgSGFzT3RoZXJPd25lcikpOwogICAgICAgICB9CiAgICAgICAgIHN0YXRpYyBKU1N0
cmluZyogY3JlYXRlSGFzT3RoZXJPd25lcihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFBhc3NS
ZWZQdHI8U3RyaW5nSW1wbD4gdmFsdWUpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBu
ZXcgKGFsbG9jYXRlQ2VsbDxKU1N0cmluZz4oZ2xvYmFsRGF0YS5oZWFwKSkgSlNTdHJpbmcoZ2xv
YmFsRGF0YSwgdmFsdWUsIEhhc090aGVyT3duZXIpOworICAgICAgICAgICAgcmV0dXJuIHZhbGlk
YXRlQWxsb2M8SlNTdHJpbmc+KGdsb2JhbERhdGEsIG5ldyAoYWxsb2NhdGVDZWxsPEpTU3RyaW5n
PihnbG9iYWxEYXRhLmhlYXApKSBKU1N0cmluZyhnbG9iYWxEYXRhLCB2YWx1ZSwgSGFzT3RoZXJP
d25lcikpOwogICAgICAgICB9CiAgICAgICAgIHN0YXRpYyBKU1N0cmluZyogY3JlYXRlKEpTR2xv
YmFsRGF0YSYgZ2xvYmFsRGF0YSwgUGFzc1JlZlB0cjxSb3BlSW1wbD4gcm9wZSkKICAgICAgICAg
ewotICAgICAgICAgICAgcmV0dXJuIG5ldyAoYWxsb2NhdGVDZWxsPEpTU3RyaW5nPihnbG9iYWxE
YXRhLmhlYXApKSBKU1N0cmluZyhnbG9iYWxEYXRhLCByb3BlKTsKKyAgICAgICAgICAgIHJldHVy
biB2YWxpZGF0ZUFsbG9jPEpTU3RyaW5nPihnbG9iYWxEYXRhLCBuZXcgKGFsbG9jYXRlQ2VsbDxK
U1N0cmluZz4oZ2xvYmFsRGF0YS5oZWFwKSkgSlNTdHJpbmcoZ2xvYmFsRGF0YSwgcm9wZSkpOwog
ICAgICAgICB9CiAgICAgICAgIHN0YXRpYyBKU1N0cmluZyogY3JlYXRlKEpTR2xvYmFsRGF0YSYg
Z2xvYmFsRGF0YSwgdW5zaWduZWQgZmliZXJDb3VudCwgSlNTdHJpbmcqIHMxLCBKU1N0cmluZyog
czIpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBuZXcgKGFsbG9jYXRlQ2VsbDxKU1N0
cmluZz4oZ2xvYmFsRGF0YS5oZWFwKSkgSlNTdHJpbmcoZ2xvYmFsRGF0YSwgZmliZXJDb3VudCwg
czEsIHMyKTsKKyAgICAgICAgICAgIHJldHVybiB2YWxpZGF0ZUFsbG9jPEpTU3RyaW5nPihnbG9i
YWxEYXRhLCBuZXcgKGFsbG9jYXRlQ2VsbDxKU1N0cmluZz4oZ2xvYmFsRGF0YS5oZWFwKSkgSlNT
dHJpbmcoZ2xvYmFsRGF0YSwgZmliZXJDb3VudCwgczEsIHMyKSk7CiAgICAgICAgIH0KICAgICAg
ICAgc3RhdGljIEpTU3RyaW5nKiBjcmVhdGUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCB1bnNp
Z25lZCBmaWJlckNvdW50LCBKU1N0cmluZyogczEsIGNvbnN0IFVTdHJpbmcmIHUyKQogICAgICAg
ICB7Ci0gICAgICAgICAgICByZXR1cm4gbmV3IChhbGxvY2F0ZUNlbGw8SlNTdHJpbmc+KGdsb2Jh
bERhdGEuaGVhcCkpIEpTU3RyaW5nKGdsb2JhbERhdGEsIGZpYmVyQ291bnQsIHMxLCB1Mik7Cisg
ICAgICAgICAgICByZXR1cm4gdmFsaWRhdGVBbGxvYzxKU1N0cmluZz4oZ2xvYmFsRGF0YSwgbmV3
IChhbGxvY2F0ZUNlbGw8SlNTdHJpbmc+KGdsb2JhbERhdGEuaGVhcCkpIEpTU3RyaW5nKGdsb2Jh
bERhdGEsIGZpYmVyQ291bnQsIHMxLCB1MikpOwogICAgICAgICB9CiAgICAgICAgIHN0YXRpYyBK
U1N0cmluZyogY3JlYXRlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgdW5zaWduZWQgZmliZXJD
b3VudCwgY29uc3QgVVN0cmluZyYgdTEsIEpTU3RyaW5nKiBzMikKICAgICAgICAgewotICAgICAg
ICAgICAgcmV0dXJuIG5ldyAoYWxsb2NhdGVDZWxsPEpTU3RyaW5nPihnbG9iYWxEYXRhLmhlYXAp
KSBKU1N0cmluZyhnbG9iYWxEYXRhLCBmaWJlckNvdW50LCB1MSwgczIpOworICAgICAgICAgICAg
cmV0dXJuIHZhbGlkYXRlQWxsb2M8SlNTdHJpbmc+KGdsb2JhbERhdGEsIG5ldyAoYWxsb2NhdGVD
ZWxsPEpTU3RyaW5nPihnbG9iYWxEYXRhLmhlYXApKSBKU1N0cmluZyhnbG9iYWxEYXRhLCBmaWJl
ckNvdW50LCB1MSwgczIpKTsKICAgICAgICAgfQogICAgICAgICBzdGF0aWMgSlNTdHJpbmcqIGNy
ZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdjEsIEpTVmFsdWUgdjIsIEpTVmFsdWUgdjMp
CiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBuZXcgKGFsbG9jYXRlQ2VsbDxKU1N0cmlu
Zz4oKmV4ZWMtPmhlYXAoKSkpIEpTU3RyaW5nKGV4ZWMsIHYxLCB2MiwgdjMpOworICAgICAgICAg
ICAgcmV0dXJuIHZhbGlkYXRlQWxsb2M8SlNTdHJpbmc+KGV4ZWMtPmdsb2JhbERhdGEoKSwgbmV3
IChhbGxvY2F0ZUNlbGw8SlNTdHJpbmc+KCpleGVjLT5oZWFwKCkpKSBKU1N0cmluZyhleGVjLCB2
MSwgdjIsIHYzKSk7CiAgICAgICAgIH0KICAgICAgICAgc3RhdGljIEpTU3RyaW5nKiBjcmVhdGUo
SlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBjb25zdCBVU3RyaW5nJiB1MSwgY29uc3QgVVN0cmlu
ZyYgdTIpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBuZXcgKGFsbG9jYXRlQ2VsbDxK
U1N0cmluZz4oZ2xvYmFsRGF0YS5oZWFwKSkgSlNTdHJpbmcoZ2xvYmFsRGF0YSwgdTEsIHUyKTsK
KyAgICAgICAgICAgIHJldHVybiB2YWxpZGF0ZUFsbG9jPEpTU3RyaW5nPihnbG9iYWxEYXRhLCBu
ZXcgKGFsbG9jYXRlQ2VsbDxKU1N0cmluZz4oZ2xvYmFsRGF0YS5oZWFwKSkgSlNTdHJpbmcoZ2xv
YmFsRGF0YSwgdTEsIHUyKSk7CiAgICAgICAgIH0KICAgICAgICAgc3RhdGljIEpTU3RyaW5nKiBj
cmVhdGUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBjb25zdCBVU3RyaW5nJiB1MSwgY29uc3Qg
VVN0cmluZyYgdTIsIGNvbnN0IFVTdHJpbmcmIHUzKQogICAgICAgICB7Ci0gICAgICAgICAgICBy
ZXR1cm4gbmV3IChhbGxvY2F0ZUNlbGw8SlNTdHJpbmc+KGdsb2JhbERhdGEuaGVhcCkpIEpTU3Ry
aW5nKGdsb2JhbERhdGEsIHUxLCB1MiwgdTMpOworICAgICAgICAgICAgcmV0dXJuIHZhbGlkYXRl
QWxsb2M8SlNTdHJpbmc+KGdsb2JhbERhdGEsIG5ldyAoYWxsb2NhdGVDZWxsPEpTU3RyaW5nPihn
bG9iYWxEYXRhLmhlYXApKSBKU1N0cmluZyhnbG9iYWxEYXRhLCB1MSwgdTIsIHUzKSk7CiAgICAg
ICAgIH0KIAogICAgICAgICB+SlNTdHJpbmcoKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvTWF0aE9iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL01hdGhPYmplY3QuaAkocmV2aXNpb24gOTE5MzkpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9NYXRoT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTMyLDcgKzMy
LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgcHVibGljOgogICAgICAgICBzdGF0aWMgTWF0aE9i
amVjdCogY3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBu
ZXcgKGFsbG9jYXRlQ2VsbDxNYXRoT2JqZWN0PigqZXhlYy0+aGVhcCgpKSkgTWF0aE9iamVjdChl
eGVjLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSk7CisgICAgICAgICAgICByZXR1cm4gdmFsaWRh
dGVBbGxvYzxNYXRoT2JqZWN0PihleGVjLT5nbG9iYWxEYXRhKCksIG5ldyAoYWxsb2NhdGVDZWxs
PE1hdGhPYmplY3Q+KCpleGVjLT5oZWFwKCkpKSBNYXRoT2JqZWN0KGV4ZWMsIGdsb2JhbE9iamVj
dCwgc3RydWN0dXJlKSk7CiAgICAgICAgIH0KICAgICAgICAgdmlydHVhbCBib29sIGdldE93blBy
b3BlcnR5U2xvdChFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiwgUHJvcGVydHlTbG90Jik7
CiAgICAgICAgIHZpcnR1YWwgYm9vbCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoRXhlY1N0YXRl
KiwgY29uc3QgSWRlbnRpZmllciYsIFByb3BlcnR5RGVzY3JpcHRvciYpOwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvci5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZlRXJyb3JDb25zdHJ1
Y3Rvci5jcHAJKHJldmlzaW9uIDkxOTM5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM3LDExICsz
NywxMyBAQCBOYXRpdmVFcnJvckNvbnN0cnVjdG9yOjpOYXRpdmVFcnJvckNvbnN0CiB7CiAgICAg
QVNTRVJUKGluaGVyaXRzKCZzX2luZm8pKTsKIAorICAgIGV4ZWMtPmdsb2JhbERhdGEoKS5zZXRJ
bml0aWFsaXppbmdPYmplY3QoZmFsc2UpOwogICAgIE5hdGl2ZUVycm9yUHJvdG90eXBlKiBwcm90
b3R5cGUgPSBOYXRpdmVFcnJvclByb3RvdHlwZTo6Y3JlYXRlKGV4ZWMsIGdsb2JhbE9iamVjdCwg
cHJvdG90eXBlU3RydWN0dXJlLCBuYW1lQW5kTWVzc2FnZSwgdGhpcyk7CiAKICAgICBwdXREaXJl
Y3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkubGVuZ3RoLCBqc051
bWJlcigxKSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5IHwgRG9udEVudW0pOyAvLyBFQ01BIDE1LjEx
LjcuNQogICAgIHB1dERpcmVjdChleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPnByb3BlcnR5TmFt
ZXMoKS5wcm90b3R5cGUsIHByb3RvdHlwZSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5IHwgRG9udEVu
dW0pOwogICAgIG1fZXJyb3JTdHJ1Y3R1cmUuc2V0KGV4ZWMtPmdsb2JhbERhdGEoKSwgdGhpcywg
RXJyb3JJbnN0YW5jZTo6Y3JlYXRlU3RydWN0dXJlKGV4ZWMtPmdsb2JhbERhdGEoKSwgcHJvdG90
eXBlKSk7CisgICAgZXhlYy0+Z2xvYmFsRGF0YSgpLnNldEluaXRpYWxpemluZ09iamVjdCh0cnVl
KTsKICAgICBBU1NFUlQobV9lcnJvclN0cnVjdHVyZSk7CiAgICAgQVNTRVJUKG1fZXJyb3JTdHJ1
Y3R1cmUtPnR5cGVJbmZvKCkudHlwZSgpID09IE9iamVjdFR5cGUpOwogfQpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvci5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05hdGl2ZUVycm9yQ29uc3RydWN0
b3IuaAkocmV2aXNpb24gOTE5MzkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9O
YXRpdmVFcnJvckNvbnN0cnVjdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTM2LDcgKzM2LDcgQEAg
bmFtZXNwYWNlIEpTQyB7CiAgICAgcHVibGljOgogICAgICAgICBzdGF0aWMgTmF0aXZlRXJyb3JD
b25zdHJ1Y3RvciogY3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFN0cnVjdHVyZSogcHJvdG90eXBlU3RydWN0
dXJlLCBjb25zdCBVU3RyaW5nJiBuYW1lQW5kTWVzc2FnZSkKICAgICAgICAgewotICAgICAgICAg
ICAgcmV0dXJuIG5ldyAoYWxsb2NhdGVDZWxsPE5hdGl2ZUVycm9yQ29uc3RydWN0b3I+KCpleGVj
LT5oZWFwKCkpKSBOYXRpdmVFcnJvckNvbnN0cnVjdG9yKGV4ZWMsIGdsb2JhbE9iamVjdCwgc3Ry
dWN0dXJlLCBwcm90b3R5cGVTdHJ1Y3R1cmUsIG5hbWVBbmRNZXNzYWdlKTsKKyAgICAgICAgICAg
IHJldHVybiB2YWxpZGF0ZUFsbG9jPE5hdGl2ZUVycm9yQ29uc3RydWN0b3I+KGV4ZWMtPmdsb2Jh
bERhdGEoKSwgbmV3IChhbGxvY2F0ZUNlbGw8TmF0aXZlRXJyb3JDb25zdHJ1Y3Rvcj4oKmV4ZWMt
PmhlYXAoKSkpIE5hdGl2ZUVycm9yQ29uc3RydWN0b3IoZXhlYywgZ2xvYmFsT2JqZWN0LCBzdHJ1
Y3R1cmUsIHByb3RvdHlwZVN0cnVjdHVyZSwgbmFtZUFuZE1lc3NhZ2UpKTsKICAgICAgICAgfQog
ICAgICAgICAKICAgICAgICAgc3RhdGljIGNvbnN0IENsYXNzSW5mbyBzX2luZm87CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OYXRpdmVFcnJvclByb3RvdHlwZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZlRXJyb3JQcm90
b3R5cGUuY3BwCShyZXZpc2lvbiA5MTkzOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL05hdGl2ZUVycm9yUHJvdG90eXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzMsOSArMzMs
MTEgQEAgQVNTRVJUX0NMQVNTX0ZJVFNfSU5fQ0VMTChOYXRpdmVFcnJvclBybwogTmF0aXZlRXJy
b3JQcm90b3R5cGU6Ok5hdGl2ZUVycm9yUHJvdG90eXBlKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IFVTdHJp
bmcmIG5hbWVBbmRNZXNzYWdlLCBOYXRpdmVFcnJvckNvbnN0cnVjdG9yKiBjb25zdHJ1Y3RvcikK
ICAgICA6IEVycm9yUHJvdG90eXBlKGV4ZWMsIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlKQogewor
ICAgIGV4ZWMtPmdsb2JhbERhdGEoKS5zZXRJbml0aWFsaXppbmdPYmplY3QoZmFsc2UpOwogICAg
IHB1dERpcmVjdChleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5uYW1l
LCBqc1N0cmluZyhleGVjLCBuYW1lQW5kTWVzc2FnZSksIERvbnRFbnVtKTsKICAgICBwdXREaXJl
Y3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkubWVzc2FnZSwganNT
dHJpbmcoZXhlYywgbmFtZUFuZE1lc3NhZ2UpLCBEb250RW51bSk7CiAgICAgcHV0RGlyZWN0KGV4
ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLmNvbnN0cnVjdG9yLCBjb25z
dHJ1Y3RvciwgRG9udEVudW0pOworICAgIGV4ZWMtPmdsb2JhbERhdGEoKS5zZXRJbml0aWFsaXpp
bmdPYmplY3QodHJ1ZSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZlRXJyb3JQcm90b3R5cGUuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OYXRpdmVFcnJvclByb3RvdHlwZS5oCShy
ZXZpc2lvbiA5MTkzOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05hdGl2ZUVy
cm9yUHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTMzLDcgKzMzLDcgQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgcHVibGljOgogICAgICAgICBzdGF0aWMgTmF0aXZlRXJyb3JQcm90b3R5cGUq
IGNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0
cnVjdHVyZSogc3RydWN0dXJlLCBjb25zdCBVU3RyaW5nJiBuYW1lQW5kTWVzc2FnZSwgTmF0aXZl
RXJyb3JDb25zdHJ1Y3RvciogY29uc3RydWN0b3IpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJl
dHVybiBuZXcgKGFsbG9jYXRlQ2VsbDxOYXRpdmVFcnJvclByb3RvdHlwZT4oKmV4ZWMtPmhlYXAo
KSkpIE5hdGl2ZUVycm9yUHJvdG90eXBlKGV4ZWMsIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBu
YW1lQW5kTWVzc2FnZSwgY29uc3RydWN0b3IpOworICAgICAgICAgICAgcmV0dXJuIHZhbGlkYXRl
QWxsb2MoZXhlYy0+Z2xvYmFsRGF0YSgpLCBuZXcgKGFsbG9jYXRlQ2VsbDxOYXRpdmVFcnJvclBy
b3RvdHlwZT4oKmV4ZWMtPmhlYXAoKSkpIE5hdGl2ZUVycm9yUHJvdG90eXBlKGV4ZWMsIGdsb2Jh
bE9iamVjdCwgc3RydWN0dXJlLCBuYW1lQW5kTWVzc2FnZSwgY29uc3RydWN0b3IpKTsKICAgICAg
ICAgfQogICAgIH07CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051bWJl
ckNvbnN0cnVjdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvTnVtYmVyQ29uc3RydWN0b3IuaAkocmV2aXNpb24gOTE5MzkpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9OdW1iZXJDb25zdHJ1Y3Rvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0z
NCw3ICszNCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHB1YmxpYzoKICAgICAgICAgc3RhdGlj
IE51bWJlckNvbnN0cnVjdG9yKiBjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgTnVtYmVyUHJvdG90eXBlKiBu
dW1Qcm90b3R5cGUpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBuZXcgKGFsbG9jYXRl
Q2VsbDxOdW1iZXJDb25zdHJ1Y3Rvcj4oKmV4ZWMtPmhlYXAoKSkpIE51bWJlckNvbnN0cnVjdG9y
KGV4ZWMsIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBudW1Qcm90b3R5cGUpOworICAgICAgICAg
ICAgcmV0dXJuIHZhbGlkYXRlQWxsb2M8TnVtYmVyQ29uc3RydWN0b3I+KGV4ZWMtPmdsb2JhbERh
dGEoKSwgbmV3IChhbGxvY2F0ZUNlbGw8TnVtYmVyQ29uc3RydWN0b3I+KCpleGVjLT5oZWFwKCkp
KSBOdW1iZXJDb25zdHJ1Y3RvcihleGVjLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgbnVtUHJv
dG90eXBlKSk7CiAgICAgICAgIH0KIAogICAgICAgICB2aXJ0dWFsIGJvb2wgZ2V0T3duUHJvcGVy
dHlTbG90KEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBQcm9wZXJ0eVNsb3QmKTsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051bWJlck9iamVjdC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051bWJlck9iamVjdC5oCShyZXZp
c2lvbiA5MTkzOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051bWJlck9iamVj
dC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw3ICszMiw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAg
IHB1YmxpYzoKICAgICAgICAgc3RhdGljIE51bWJlck9iamVjdCogY3JlYXRlKEpTR2xvYmFsRGF0
YSYgZ2xvYmFsRGF0YSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAgICAgICAgIHsKLSAgICAgICAg
ICAgIHJldHVybiBuZXcgKGFsbG9jYXRlQ2VsbDxOdW1iZXJPYmplY3Q+KGdsb2JhbERhdGEuaGVh
cCkpIE51bWJlck9iamVjdChnbG9iYWxEYXRhLCBzdHJ1Y3R1cmUpOworICAgICAgICAgICAgcmV0
dXJuIHZhbGlkYXRlQWxsb2MoZ2xvYmFsRGF0YSwgbmV3IChhbGxvY2F0ZUNlbGw8TnVtYmVyT2Jq
ZWN0PihnbG9iYWxEYXRhLmhlYXApKSBOdW1iZXJPYmplY3QoZ2xvYmFsRGF0YSwgc3RydWN0dXJl
KSk7CiAgICAgICAgIH0KIAogICAgICAgICBzdGF0aWMgY29uc3QgQ2xhc3NJbmZvIHNfaW5mbzsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051bWJlclByb3RvdHlwZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051bWJlclByb3RvdHlw
ZS5oCShyZXZpc2lvbiA5MTkzOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051
bWJlclByb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw3ICszMiw3IEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgIHB1YmxpYzoKICAgICAgICAgc3RhdGljIE51bWJlclByb3RvdHlwZSogY3Jl
YXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0
dXJlKiBzdHJ1Y3R1cmUpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBuZXcgKGFsbG9j
YXRlQ2VsbDxOdW1iZXJQcm90b3R5cGU+KCpleGVjLT5oZWFwKCkpKSBOdW1iZXJQcm90b3R5cGUo
ZXhlYywgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUpOworICAgICAgICAgICAgcmV0dXJuIHZhbGlk
YXRlQWxsb2M8TnVtYmVyUHJvdG90eXBlPihleGVjLT5nbG9iYWxEYXRhKCksIG5ldyAoYWxsb2Nh
dGVDZWxsPE51bWJlclByb3RvdHlwZT4oKmV4ZWMtPmhlYXAoKSkpIE51bWJlclByb3RvdHlwZShl
eGVjLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSkpOwogICAgICAgICB9CiAgICAgICAgIAogICAg
ICAgICBzdGF0aWMgY29uc3QgQ2xhc3NJbmZvIHNfaW5mbzsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL09iamVjdENvbnN0cnVjdG9yLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuaAkocmV2aXNpb24gOTE5
MzkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5o
CSh3b3JraW5nIGNvcHkpCkBAIC0zNCw3ICszNCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHB1
YmxpYzoKICAgICAgICAgc3RhdGljIE9iamVjdENvbnN0cnVjdG9yKiBjcmVhdGUoRXhlY1N0YXRl
KiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSwgT2JqZWN0UHJvdG90eXBlKiBvYmpQcm90b3R5cGUpCiAgICAgICAgIHsKLSAgICAgICAgICAg
IHJldHVybiBuZXcgKGFsbG9jYXRlQ2VsbDxPYmplY3RDb25zdHJ1Y3Rvcj4oKmV4ZWMtPmhlYXAo
KSkpIE9iamVjdENvbnN0cnVjdG9yKGV4ZWMsIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBvYmpQ
cm90b3R5cGUpOworICAgICAgICAgICAgcmV0dXJuIHZhbGlkYXRlQWxsb2MoZXhlYy0+Z2xvYmFs
RGF0YSgpLCBuZXcgKGFsbG9jYXRlQ2VsbDxPYmplY3RDb25zdHJ1Y3Rvcj4oKmV4ZWMtPmhlYXAo
KSkpIE9iamVjdENvbnN0cnVjdG9yKGV4ZWMsIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBvYmpQ
cm90b3R5cGUpKTsKICAgICAgICAgfQogCiAgICAgICAgIHZpcnR1YWwgYm9vbCBnZXRPd25Qcm9w
ZXJ0eVNsb3QoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIFByb3BlcnR5U2xvdCYpOwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0UHJvdG90eXBlLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0UHJvdG90eXBl
LmgJKHJldmlzaW9uIDkxOTM5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2Jq
ZWN0UHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTMyLDcgKzMyLDcgQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgcHVibGljOgogICAgICAgICBzdGF0aWMgT2JqZWN0UHJvdG90eXBlKiBjcmVh
dGUoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSkKICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIG5ldyAoYWxsb2Nh
dGVDZWxsPE9iamVjdFByb3RvdHlwZT4oKmV4ZWMtPmhlYXAoKSkpIE9iamVjdFByb3RvdHlwZShl
eGVjLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSk7CisgICAgICAgICAgICByZXR1cm4gdmFsaWRh
dGVBbGxvYzxPYmplY3RQcm90b3R5cGU+KGV4ZWMtPmdsb2JhbERhdGEoKSwgbmV3IChhbGxvY2F0
ZUNlbGw8T2JqZWN0UHJvdG90eXBlPigqZXhlYy0+aGVhcCgpKSkgT2JqZWN0UHJvdG90eXBlKGV4
ZWMsIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlKSk7CiAgICAgICAgIH0KIAogICAgICAgICBzdGF0
aWMgY29uc3QgQ2xhc3NJbmZvIHNfaW5mbzsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1JlZ0V4cC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvUmVnRXhwLmNwcAkocmV2aXNpb24gOTE5MzkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9SZWdFeHAuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDEsNyArMTAxLDcgQEAg
UmVnRXhwOjp+UmVnRXhwKCkKIAogUmVnRXhwKiBSZWdFeHA6OmNyZWF0ZVdpdGhvdXRDYWNoaW5n
KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgY29uc3QgVVN0cmluZyYgcGF0dGVyblN0cmluZywg
UmVnRXhwRmxhZ3MgZmxhZ3MpCiB7Ci0gICAgcmV0dXJuIG5ldyAoYWxsb2NhdGVDZWxsPFJlZ0V4
cD4oZ2xvYmFsRGF0YS5oZWFwKSkgUmVnRXhwKGdsb2JhbERhdGEsIHBhdHRlcm5TdHJpbmcsIGZs
YWdzKTsKKyAgICByZXR1cm4gdmFsaWRhdGVBbGxvYzxSZWdFeHA+KGdsb2JhbERhdGEsIG5ldyAo
YWxsb2NhdGVDZWxsPFJlZ0V4cD4oZ2xvYmFsRGF0YS5oZWFwKSkgUmVnRXhwKGdsb2JhbERhdGEs
IHBhdHRlcm5TdHJpbmcsIGZsYWdzKSk7CiB9CiAKIFJlZ0V4cCogUmVnRXhwOjpjcmVhdGUoSlNH
bG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBjb25zdCBVU3RyaW5nJiBwYXR0ZXJuU3RyaW5nLCBSZWdF
eHBGbGFncyBmbGFncykKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4
cENvbnN0cnVjdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvUmVnRXhwQ29uc3RydWN0b3IuaAkocmV2aXNpb24gOTE5MzkpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9SZWdFeHBDb25zdHJ1Y3Rvci5oCSh3b3JraW5nIGNvcHkpCkBAIC02
Miw3ICs2Miw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHB1YmxpYzoKICAgICAgICAgc3RhdGlj
IFJlZ0V4cENvbnN0cnVjdG9yKiBjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUmVnRXhwUHJvdG90eXBlKiBy
ZWdFeHBQcm90b3R5cGUpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBuZXcgKGFsbG9j
YXRlQ2VsbDxSZWdFeHBDb25zdHJ1Y3Rvcj4oKmV4ZWMtPmhlYXAoKSkpIFJlZ0V4cENvbnN0cnVj
dG9yKGV4ZWMsIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCByZWdFeHBQcm90b3R5cGUpOworICAg
ICAgICAgICAgcmV0dXJuIHZhbGlkYXRlQWxsb2M8UmVnRXhwQ29uc3RydWN0b3I+KGV4ZWMtPmds
b2JhbERhdGEoKSwgbmV3IChhbGxvY2F0ZUNlbGw8UmVnRXhwQ29uc3RydWN0b3I+KCpleGVjLT5o
ZWFwKCkpKSBSZWdFeHBDb25zdHJ1Y3RvcihleGVjLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwg
cmVnRXhwUHJvdG90eXBlKSk7CiAgICAgICAgIH0KIAogICAgICAgICBzdGF0aWMgU3RydWN0dXJl
KiBjcmVhdGVTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU1ZhbHVlIHByb3Rv
dHlwZSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE1hdGNoZXNB
cnJheS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4
cE1hdGNoZXNBcnJheS5oCShyZXZpc2lvbiA5MTkzOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1JlZ0V4cE1hdGNoZXNBcnJheS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNSwxNyAr
MjUsMTUgQEAKIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgUmVnRXhwTWF0Y2hlc0FycmF5
IDogcHVibGljIEpTQXJyYXkgewotICAgIHByaXZhdGU6Ci0gICAgICAgIFJlZ0V4cE1hdGNoZXNB
cnJheShFeGVjU3RhdGUqLCBSZWdFeHBDb25zdHJ1Y3RvclByaXZhdGUqKTsKLQogICAgIHB1Ymxp
YzoKICAgICAgICAgc3RhdGljIFJlZ0V4cE1hdGNoZXNBcnJheSogY3JlYXRlKEV4ZWNTdGF0ZSog
ZXhlYywgUmVnRXhwQ29uc3RydWN0b3JQcml2YXRlKiBjdG9yUHJpdmF0ZSkKICAgICAgICAgewot
ICAgICAgICAgICAgcmV0dXJuIG5ldyAoYWxsb2NhdGVDZWxsPFJlZ0V4cE1hdGNoZXNBcnJheT4o
KmV4ZWMtPmhlYXAoKSkpIFJlZ0V4cE1hdGNoZXNBcnJheShleGVjLCBjdG9yUHJpdmF0ZSk7Cisg
ICAgICAgICAgICByZXR1cm4gdmFsaWRhdGVBbGxvYzxSZWdFeHBNYXRjaGVzQXJyYXk+KGV4ZWMt
Pmdsb2JhbERhdGEoKSwgbmV3IChhbGxvY2F0ZUNlbGw8UmVnRXhwTWF0Y2hlc0FycmF5PigqZXhl
Yy0+aGVhcCgpKSkgUmVnRXhwTWF0Y2hlc0FycmF5KGV4ZWMsIGN0b3JQcml2YXRlKSk7CiAgICAg
ICAgIH0KICAgICAgICAgdmlydHVhbCB+UmVnRXhwTWF0Y2hlc0FycmF5KCk7CiAKICAgICBwcml2
YXRlOgorICAgICAgICBSZWdFeHBNYXRjaGVzQXJyYXkoRXhlY1N0YXRlKiwgUmVnRXhwQ29uc3Ry
dWN0b3JQcml2YXRlKik7CiAgICAgICAgIHZpcnR1YWwgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3Qo
RXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5
U2xvdCYgc2xvdCkKICAgICAgICAgewogICAgICAgICAgICAgaWYgKHN1YmNsYXNzRGF0YSgpKQpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwT2JqZWN0LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwT2JqZWN0LmgJKHJl
dmlzaW9uIDkxOTM5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwT2Jq
ZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTMzLDEyICszMywxMiBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICBwdWJsaWM6CiAgICAgICAgIHN0YXRpYyBSZWdFeHBPYmplY3QqIGNyZWF0ZShFeGVjU3Rh
dGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0
dXJlLCBSZWdFeHAqIHJlZ0V4cCkKICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIG5ldyAo
YWxsb2NhdGVDZWxsPFJlZ0V4cE9iamVjdD4oKmV4ZWMtPmhlYXAoKSkpIFJlZ0V4cE9iamVjdChn
bG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgcmVnRXhwKTsKKyAgICAgICAgICAgIHJldHVybiB2YWxp
ZGF0ZUFsbG9jPFJlZ0V4cE9iamVjdD4oZXhlYy0+Z2xvYmFsRGF0YSgpLCBuZXcgKGFsbG9jYXRl
Q2VsbDxSZWdFeHBPYmplY3Q+KCpleGVjLT5oZWFwKCkpKSBSZWdFeHBPYmplY3QoZ2xvYmFsT2Jq
ZWN0LCBzdHJ1Y3R1cmUsIHJlZ0V4cCkpOwogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBz
dGF0aWMgUmVnRXhwT2JqZWN0KiBjcmVhdGUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUmVnRXhwKiBy
ZWdFeHApCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBuZXcgKGFsbG9jYXRlQ2VsbDxS
ZWdFeHBPYmplY3Q+KGdsb2JhbERhdGEuaGVhcCkpIFJlZ0V4cE9iamVjdChnbG9iYWxPYmplY3Qs
IHN0cnVjdHVyZSwgcmVnRXhwKTsKKyAgICAgICAgICAgIHJldHVybiB2YWxpZGF0ZUFsbG9jPFJl
Z0V4cE9iamVjdD4oZ2xvYmFsRGF0YSwgbmV3IChhbGxvY2F0ZUNlbGw8UmVnRXhwT2JqZWN0Pihn
bG9iYWxEYXRhLmhlYXApKSBSZWdFeHBPYmplY3QoZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIHJl
Z0V4cCkpOwogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICB0eXBlZGVmIEpTT2JqZWN0V2l0
aEdsb2JhbE9iamVjdCBCYXNlOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
UmVnRXhwUHJvdG90eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvUmVnRXhwUHJvdG90eXBlLmgJKHJldmlzaW9uIDkxOTM5KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwUHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTMz
LDcgKzMzLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgcHVibGljOgogICAgICAgICBzdGF0aWMg
UmVnRXhwUHJvdG90eXBlKiBjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUmVnRXhwKiByZWdFeHApCiAgICAg
ICAgIHsKLSAgICAgICAgICAgIHJldHVybiBuZXcgKGFsbG9jYXRlQ2VsbDxSZWdFeHBQcm90b3R5
cGU+KCpleGVjLT5oZWFwKCkpKSBSZWdFeHBQcm90b3R5cGUoZXhlYywgZ2xvYmFsT2JqZWN0LCBz
dHJ1Y3R1cmUsIHJlZ0V4cCk7CisgICAgICAgICAgICByZXR1cm4gdmFsaWRhdGVBbGxvYzxSZWdF
eHBQcm90b3R5cGU+KGV4ZWMtPmdsb2JhbERhdGEoKSwgbmV3IChhbGxvY2F0ZUNlbGw8UmVnRXhw
UHJvdG90eXBlPigqZXhlYy0+aGVhcCgpKSkgUmVnRXhwUHJvdG90eXBlKGV4ZWMsIGdsb2JhbE9i
amVjdCwgc3RydWN0dXJlLCByZWdFeHApKTsKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAg
c3RhdGljIGNvbnN0IENsYXNzSW5mbyBzX2luZm87CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9TY29wZUNoYWluLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvU2NvcGVDaGFpbi5oCShyZXZpc2lvbiA5MTkzOSkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1Njb3BlQ2hhaW4uaAkod29ya2luZyBjb3B5KQpAQCAtNTAsMTEg
KzUwLDExIEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHB1YmxpYzoKICAgICAgICAgc3RhdGljIFNj
b3BlQ2hhaW5Ob2RlKiBjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBTY29wZUNoYWluTm9kZSogbmV4
dCwgSlNPYmplY3QqIG9iamVjdCwgSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBKU09iamVjdCogZ2xvYmFsVGhpcykKICAgICAgICAgewotICAg
ICAgICAgICAgcmV0dXJuIG5ldyAoYWxsb2NhdGVDZWxsPFNjb3BlQ2hhaW5Ob2RlPigqZXhlYy0+
aGVhcCgpKSkgU2NvcGVDaGFpbk5vZGUobmV4dCwgb2JqZWN0LCBnbG9iYWxEYXRhLCBnbG9iYWxP
YmplY3QsIGdsb2JhbFRoaXMpOworICAgICAgICAgICAgcmV0dXJuIHZhbGlkYXRlQWxsb2M8U2Nv
cGVDaGFpbk5vZGU+KGV4ZWMtPmdsb2JhbERhdGEoKSwgbmV3IChhbGxvY2F0ZUNlbGw8U2NvcGVD
aGFpbk5vZGU+KCpleGVjLT5oZWFwKCkpKSBTY29wZUNoYWluTm9kZShuZXh0LCBvYmplY3QsIGds
b2JhbERhdGEsIGdsb2JhbE9iamVjdCwgZ2xvYmFsVGhpcykpOwogICAgICAgICB9CiAgICAgICAg
IHN0YXRpYyBTY29wZUNoYWluTm9kZSogY3JlYXRlKFNjb3BlQ2hhaW5Ob2RlKiBuZXh0LCBKU09i
amVjdCogb2JqZWN0LCBKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIEpTT2JqZWN0KiBnbG9iYWxUaGlzKQogICAgICAgICB7Ci0gICAgICAgICAg
ICByZXR1cm4gbmV3IChhbGxvY2F0ZUNlbGw8U2NvcGVDaGFpbk5vZGU+KGdsb2JhbERhdGEtPmhl
YXApKSBTY29wZUNoYWluTm9kZShuZXh0LCBvYmplY3QsIGdsb2JhbERhdGEsIGdsb2JhbE9iamVj
dCwgZ2xvYmFsVGhpcyk7CisgICAgICAgICAgICByZXR1cm4gdmFsaWRhdGVBbGxvYzxTY29wZUNo
YWluTm9kZT4oKmdsb2JhbERhdGEsIG5ldyAoYWxsb2NhdGVDZWxsPFNjb3BlQ2hhaW5Ob2RlPihn
bG9iYWxEYXRhLT5oZWFwKSkgU2NvcGVDaGFpbk5vZGUobmV4dCwgb2JqZWN0LCBnbG9iYWxEYXRh
LCBnbG9iYWxPYmplY3QsIGdsb2JhbFRoaXMpKTsKICAgICAgICAgfQogICAgICAgICAKICAgICAg
ICAgSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvU3RyaWN0RXZhbEFjdGl2YXRpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9TdHJpY3RFdmFsQWN0aXZhdGlvbi5oCShyZXZpc2lvbiA5MTkz
OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmljdEV2YWxBY3RpdmF0aW9u
LmgJKHdvcmtpbmcgY29weSkKQEAgLTM0LDcgKzM0LDcgQEAgY2xhc3MgU3RyaWN0RXZhbEFjdGl2
YXRpb24gOiBwdWJsaWMgSlNObwogcHVibGljOgogICAgIHN0YXRpYyBTdHJpY3RFdmFsQWN0aXZh
dGlvbiogY3JlYXRlKEV4ZWNTdGF0ZSogZXhlYykKICAgICB7Ci0gICAgICAgIHJldHVybiBuZXcg
KGFsbG9jYXRlQ2VsbDxTdHJpY3RFdmFsQWN0aXZhdGlvbj4oKmV4ZWMtPmhlYXAoKSkpIFN0cmlj
dEV2YWxBY3RpdmF0aW9uKGV4ZWMpOworICAgICAgICByZXR1cm4gdmFsaWRhdGVBbGxvYzxTdHJp
Y3RFdmFsQWN0aXZhdGlvbj4oZXhlYy0+Z2xvYmFsRGF0YSgpLCBuZXcgKGFsbG9jYXRlQ2VsbDxT
dHJpY3RFdmFsQWN0aXZhdGlvbj4oKmV4ZWMtPmhlYXAoKSkpIFN0cmljdEV2YWxBY3RpdmF0aW9u
KGV4ZWMpKTsKICAgICB9CiAKICAgICB2aXJ0dWFsIGJvb2wgZGVsZXRlUHJvcGVydHkoRXhlY1N0
YXRlKiwgY29uc3QgSWRlbnRpZmllciYpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvU3RyaW5nQ29uc3RydWN0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9TdHJpbmdDb25zdHJ1Y3Rvci5oCShyZXZpc2lvbiA5MTkzOSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ0NvbnN0cnVjdG9yLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTM0LDcgKzM0LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgcHVibGljOgogICAg
ICAgICBzdGF0aWMgU3RyaW5nQ29uc3RydWN0b3IqIGNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgU3RyaW5n
UHJvdG90eXBlKiBzdHJQcm90b3R5cGUpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBu
ZXcgKGFsbG9jYXRlQ2VsbDxTdHJpbmdDb25zdHJ1Y3Rvcj4oKmV4ZWMtPmhlYXAoKSkpIFN0cmlu
Z0NvbnN0cnVjdG9yKGV4ZWMsIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBzdHJQcm90b3R5cGUp
OworICAgICAgICAgICAgcmV0dXJuIHZhbGlkYXRlQWxsb2M8U3RyaW5nQ29uc3RydWN0b3I+KGV4
ZWMtPmdsb2JhbERhdGEoKSwgbmV3IChhbGxvY2F0ZUNlbGw8U3RyaW5nQ29uc3RydWN0b3I+KCpl
eGVjLT5oZWFwKCkpKSBTdHJpbmdDb25zdHJ1Y3RvcihleGVjLCBnbG9iYWxPYmplY3QsIHN0cnVj
dHVyZSwgc3RyUHJvdG90eXBlKSk7CiAgICAgICAgIH0KIAogICAgICAgICBzdGF0aWMgY29uc3Qg
Q2xhc3NJbmZvIHNfaW5mbzsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0
cmluZ09iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvU3RyaW5nT2JqZWN0LmNwcAkocmV2aXNpb24gOTE5MzkpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9TdHJpbmdPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw3ICsz
Myw5IEBAIFN0cmluZ09iamVjdDo6U3RyaW5nT2JqZWN0KEV4ZWNTdGF0ZSogZXgKICAgICA6IEpT
V3JhcHBlck9iamVjdChleGVjLT5nbG9iYWxEYXRhKCksIHN0cnVjdHVyZSkKIHsKICAgICBBU1NF
UlQoaW5oZXJpdHMoJnNfaW5mbykpOworICAgIGV4ZWMtPmdsb2JhbERhdGEoKS5zZXRJbml0aWFs
aXppbmdPYmplY3QoZmFsc2UpOwogICAgIHNldEludGVybmFsVmFsdWUoZXhlYy0+Z2xvYmFsRGF0
YSgpLCBqc0VtcHR5U3RyaW5nKGV4ZWMpKTsKKyAgICBleGVjLT5nbG9iYWxEYXRhKCkuc2V0SW5p
dGlhbGl6aW5nT2JqZWN0KHRydWUpOwogfQogCiBTdHJpbmdPYmplY3Q6OlN0cmluZ09iamVjdChK
U0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBKU1N0cmluZyog
c3RyaW5nKQpAQCAtNDcsNyArNDksOSBAQCBTdHJpbmdPYmplY3Q6OlN0cmluZ09iamVjdChFeGVj
U3RhdGUqIGV4CiAgICAgOiBKU1dyYXBwZXJPYmplY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBzdHJ1
Y3R1cmUpCiB7CiAgICAgQVNTRVJUKGluaGVyaXRzKCZzX2luZm8pKTsKKyAgICBleGVjLT5nbG9i
YWxEYXRhKCkuc2V0SW5pdGlhbGl6aW5nT2JqZWN0KGZhbHNlKTsKICAgICBzZXRJbnRlcm5hbFZh
bHVlKGV4ZWMtPmdsb2JhbERhdGEoKSwganNTdHJpbmcoZXhlYywgc3RyaW5nKSk7CisgICAgZXhl
Yy0+Z2xvYmFsRGF0YSgpLnNldEluaXRpYWxpemluZ09iamVjdCh0cnVlKTsKIH0KIAogYm9vbCBT
dHJpbmdPYmplY3Q6OmdldE93blByb3BlcnR5U2xvdChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElk
ZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nT2JqZWN0LmgJKHJldmlzaW9uIDkxOTM5
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nT2JqZWN0LmgJKHdvcmtp
bmcgY29weSkKQEAgLTM0LDExICszNCwxMSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBwdWJsaWM6
CiAgICAgICAgIHN0YXRpYyBTdHJpbmdPYmplY3QqIGNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIFN0
cnVjdHVyZSogc3RydWN0dXJlKQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gbmV3IChh
bGxvY2F0ZUNlbGw8U3RyaW5nT2JqZWN0PigqZXhlYy0+aGVhcCgpKSkgU3RyaW5nT2JqZWN0KGV4
ZWMsIHN0cnVjdHVyZSk7ICAKKyAgICAgICAgICAgIHJldHVybiB2YWxpZGF0ZUFsbG9jPFN0cmlu
Z09iamVjdD4oZXhlYy0+Z2xvYmFsRGF0YSgpLCBuZXcgKGFsbG9jYXRlQ2VsbDxTdHJpbmdPYmpl
Y3Q+KCpleGVjLT5oZWFwKCkpKSBTdHJpbmdPYmplY3QoZXhlYywgc3RydWN0dXJlKSk7CiAgICAg
ICAgIH0KICAgICAgICAgc3RhdGljIFN0cmluZ09iamVjdCogY3JlYXRlKEV4ZWNTdGF0ZSogZXhl
YywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IFVTdHJpbmcmIHN0cikKICAgICAgICAgewot
ICAgICAgICAgICAgcmV0dXJuIG5ldyAoYWxsb2NhdGVDZWxsPFN0cmluZ09iamVjdD4oKmV4ZWMt
PmhlYXAoKSkpIFN0cmluZ09iamVjdChleGVjLCBzdHJ1Y3R1cmUsIHN0cik7ICAKKyAgICAgICAg
ICAgIHJldHVybiB2YWxpZGF0ZUFsbG9jPFN0cmluZ09iamVjdD4oZXhlYy0+Z2xvYmFsRGF0YSgp
LCBuZXcgKGFsbG9jYXRlQ2VsbDxTdHJpbmdPYmplY3Q+KCpleGVjLT5oZWFwKCkpKSBTdHJpbmdP
YmplY3QoZXhlYywgc3RydWN0dXJlLCBzdHIpKTsKICAgICAgICAgfQogICAgICAgICBzdGF0aWMg
U3RyaW5nT2JqZWN0KiBjcmVhdGUoRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqLCBKU1N0cmlu
ZyopOwogICAgICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmlu
Z09iamVjdFRoYXRNYXNxdWVyYWRlc0FzVW5kZWZpbmVkLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nT2JqZWN0VGhhdE1hc3F1ZXJhZGVzQXNVbmRl
ZmluZWQuaAkocmV2aXNpb24gOTE5MzkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9TdHJpbmdPYmplY3RUaGF0TWFzcXVlcmFkZXNBc1VuZGVmaW5lZC5oCSh3b3JraW5nIGNvcHkp
CkBAIC0zMiw4ICszMiw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHB1YmxpYzoKICAgICAgICAg
c3RhdGljIFN0cmluZ09iamVjdFRoYXRNYXNxdWVyYWRlc0FzVW5kZWZpbmVkKiBjcmVhdGUoRXhl
Y1N0YXRlKiBleGVjLCBjb25zdCBVU3RyaW5nJiBzdHJpbmcpCiAgICAgICAgIHsKLSAgICAgICAg
ICAgIHJldHVybiBuZXcgKGFsbG9jYXRlQ2VsbDxTdHJpbmdPYmplY3RUaGF0TWFzcXVlcmFkZXNB
c1VuZGVmaW5lZD4oKmV4ZWMtPmhlYXAoKSkpIFN0cmluZ09iamVjdFRoYXRNYXNxdWVyYWRlc0Fz
VW5kZWZpbmVkKGV4ZWMsCi0gICAgICAgICAgICAgICAgY3JlYXRlU3RydWN0dXJlKGV4ZWMtPmds
b2JhbERhdGEoKSwgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLT5zdHJpbmdQcm90b3R5cGUo
KSksIHN0cmluZyk7CisgICAgICAgICAgICByZXR1cm4gdmFsaWRhdGVBbGxvYzxTdHJpbmdPYmpl
Y3RUaGF0TWFzcXVlcmFkZXNBc1VuZGVmaW5lZD4oZXhlYy0+Z2xvYmFsRGF0YSgpLCBuZXcgKGFs
bG9jYXRlQ2VsbDxTdHJpbmdPYmplY3RUaGF0TWFzcXVlcmFkZXNBc1VuZGVmaW5lZD4oKmV4ZWMt
PmhlYXAoKSkpIFN0cmluZ09iamVjdFRoYXRNYXNxdWVyYWRlc0FzVW5kZWZpbmVkKGV4ZWMsCisg
ICAgICAgICAgICAgICAgY3JlYXRlU3RydWN0dXJlKGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+
bGV4aWNhbEdsb2JhbE9iamVjdCgpLT5zdHJpbmdQcm90b3R5cGUoKSksIHN0cmluZykpOwogICAg
ICAgICB9CiAKICAgICBwcml2YXRlOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvU3RyaW5nUHJvdG90eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvU3RyaW5nUHJvdG90eXBlLmgJKHJldmlzaW9uIDkxOTM5KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nUHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAg
LTM0LDcgKzM0LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgcHVibGljOgogICAgICAgICBzdGF0
aWMgU3RyaW5nUHJvdG90eXBlKiBjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAgICAgICAgewotICAgICAg
ICAgICAgcmV0dXJuIG5ldyAoYWxsb2NhdGVDZWxsPFN0cmluZ1Byb3RvdHlwZT4oKmV4ZWMtPmhl
YXAoKSkpIFN0cmluZ1Byb3RvdHlwZShleGVjLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSk7Cisg
ICAgICAgICAgICByZXR1cm4gdmFsaWRhdGVBbGxvYzxTdHJpbmdQcm90b3R5cGU+KGV4ZWMtPmds
b2JhbERhdGEoKSwgbmV3IChhbGxvY2F0ZUNlbGw8U3RyaW5nUHJvdG90eXBlPigqZXhlYy0+aGVh
cCgpKSkgU3RyaW5nUHJvdG90eXBlKGV4ZWMsIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlKSk7CiAg
ICAgICAgIH0KIAogICAgICAgICB2aXJ0dWFsIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEV4ZWNT
dGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuaAkocmV2aXNpb24g
OTE5MzkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuaAkod29y
a2luZyBjb3B5KQpAQCAtNjMsNyArNjMsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgewog
ICAgICAgICAgICAgQVNTRVJUKGdsb2JhbERhdGEuc3RydWN0dXJlU3RydWN0dXJlKTsKICAgICAg
ICAgICAgIEFTU0VSVChjbGFzc0luZm8pOwotICAgICAgICAgICAgcmV0dXJuIG5ldyAoYWxsb2Nh
dGVDZWxsPFN0cnVjdHVyZT4oZ2xvYmFsRGF0YS5oZWFwKSkgU3RydWN0dXJlKGdsb2JhbERhdGEs
IHByb3RvdHlwZSwgdHlwZUluZm8sIGFub255bW91c1Nsb3RDb3VudCwgY2xhc3NJbmZvKTsKKyAg
ICAgICAgICAgIHJldHVybiB2YWxpZGF0ZUFsbG9jPFN0cnVjdHVyZT4oZ2xvYmFsRGF0YSwgbmV3
IChhbGxvY2F0ZUNlbGw8U3RydWN0dXJlPihnbG9iYWxEYXRhLmhlYXApKSBTdHJ1Y3R1cmUoZ2xv
YmFsRGF0YSwgcHJvdG90eXBlLCB0eXBlSW5mbywgYW5vbnltb3VzU2xvdENvdW50LCBjbGFzc0lu
Zm8pKTsKICAgICAgICAgfQogCiAgICAgICAgIHN0YXRpYyB2b2lkIGR1bXBTdGF0aXN0aWNzKCk7
CkBAIC0xNTcsNyArMTU3LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHN0YXRpYyBTdHJ1
Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEpCiAgICAgICAg
IHsKICAgICAgICAgICAgIEFTU0VSVCghZ2xvYmFsRGF0YS5zdHJ1Y3R1cmVTdHJ1Y3R1cmUpOwot
ICAgICAgICAgICAgcmV0dXJuIG5ldyAoYWxsb2NhdGVDZWxsPFN0cnVjdHVyZT4oZ2xvYmFsRGF0
YS5oZWFwKSkgU3RydWN0dXJlKGdsb2JhbERhdGEpOworICAgICAgICAgICAgcmV0dXJuIHZhbGlk
YXRlQWxsb2M8U3RydWN0dXJlPihnbG9iYWxEYXRhLCBuZXcgKGFsbG9jYXRlQ2VsbDxTdHJ1Y3R1
cmU+KGdsb2JhbERhdGEuaGVhcCkpIFN0cnVjdHVyZShnbG9iYWxEYXRhKSk7CiAgICAgICAgIH0K
ICAgICAgICAgCiAgICAgICAgIHN0YXRpYyBKU19FWFBPUlREQVRBIGNvbnN0IENsYXNzSW5mbyBz
X2luZm87CkBAIC0xNzAsNyArMTcwLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHN0YXRp
YyBTdHJ1Y3R1cmUqIGNyZWF0ZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIGNvbnN0IFN0cnVj
dHVyZSogc3RydWN0dXJlKQogICAgICAgICB7CiAgICAgICAgICAgICBBU1NFUlQoZ2xvYmFsRGF0
YS5zdHJ1Y3R1cmVTdHJ1Y3R1cmUpOwotICAgICAgICAgICAgcmV0dXJuIG5ldyAoYWxsb2NhdGVD
ZWxsPFN0cnVjdHVyZT4oZ2xvYmFsRGF0YS5oZWFwKSkgU3RydWN0dXJlKGdsb2JhbERhdGEsIHN0
cnVjdHVyZSk7CisgICAgICAgICAgICByZXR1cm4gdmFsaWRhdGVBbGxvYzxTdHJ1Y3R1cmU+KGds
b2JhbERhdGEsIG5ldyAoYWxsb2NhdGVDZWxsPFN0cnVjdHVyZT4oZ2xvYmFsRGF0YS5oZWFwKSkg
U3RydWN0dXJlKGdsb2JhbERhdGEsIHN0cnVjdHVyZSkpOwogICAgICAgICB9CiAgICAgICAgIAog
ICAgICAgICB0eXBlZGVmIGVudW0geyAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1N0cnVjdHVyZUNoYWluLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvU3RydWN0dXJlQ2hhaW4uaAkocmV2aXNpb24gOTE5MzkpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVDaGFpbi5oCSh3b3JraW5nIGNvcHkpCkBAIC00
Miw3ICs0MiwxMSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgZnJpZW5kIGNsYXNzIEpJVDsK
IAogICAgIHB1YmxpYzoKLSAgICAgICAgc3RhdGljIFN0cnVjdHVyZUNoYWluKiBjcmVhdGUoSlNH
bG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBTdHJ1Y3R1cmUqIGhlYWQpIHsgcmV0dXJuIG5ldyAoYWxs
b2NhdGVDZWxsPFN0cnVjdHVyZUNoYWluPihnbG9iYWxEYXRhLmhlYXApKSBTdHJ1Y3R1cmVDaGFp
bihnbG9iYWxEYXRhLCBnbG9iYWxEYXRhLnN0cnVjdHVyZUNoYWluU3RydWN0dXJlLmdldCgpLCBo
ZWFkKTsgfQorICAgICAgICBzdGF0aWMgU3RydWN0dXJlQ2hhaW4qIGNyZWF0ZShKU0dsb2JhbERh
dGEmIGdsb2JhbERhdGEsIFN0cnVjdHVyZSogaGVhZCkgCisgICAgICAgIHsKKyAgICAgICAgICAg
IHJldHVybiB2YWxpZGF0ZUFsbG9jPFN0cnVjdHVyZUNoYWluPihnbG9iYWxEYXRhLCBuZXcgKGFs
bG9jYXRlQ2VsbDxTdHJ1Y3R1cmVDaGFpbj4oZ2xvYmFsRGF0YS5oZWFwKSkgU3RydWN0dXJlQ2hh
aW4oZ2xvYmFsRGF0YSwgZ2xvYmFsRGF0YS5zdHJ1Y3R1cmVDaGFpblN0cnVjdHVyZS5nZXQoKSwg
aGVhZCkpOworICAgICAgICB9CisKICAgICAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4qIGhl
YWQoKSB7IHJldHVybiBtX3ZlY3Rvci5nZXQoKTsgfQogICAgICAgICB2b2lkIHZpc2l0Q2hpbGRy
ZW4oU2xvdFZpc2l0b3ImKTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRHbHVlL0NoYW5nZUxv
Zwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdEdsdWUvQ2hhbmdlTG9nCShyZXZpc2lv
biA5MTk0MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0R2x1ZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29w
eSkKQEAgLTEsMyArMSwyMiBAQAorMjAxMS0wNy0yOCAgTWFyayBIYWhuZW5iZXJnICA8bWhhaG5l
bmJlcmdAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBjaGVja3MgdG8gZW5zdXJlIGFsbG9jYXRp
b24gZG9lcyBub3QgdGFrZSBwbGFjZSBkdXJpbmcgaW5pdGlhbGl6YXRpb24gb2YgR0MtbWFuYWdl
ZCBvYmplY3RzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD02NTI4OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEFkZGVkIHRoZSB2YWxpZGF0ZUFsbG9jIGNhbGwgdG8gY2hlY2sgdGhlIGluaXRpYWxpemluZ09i
amVjdCBmbGFnIGluIHRoZSBKU0dsb2JhbERhdGEgb2JqZWN0IGFuZCAKKyAgICAgICAgdG8gdGhl
biBjbGVhciBzYWlkIGZsYWcuICBObyBmbGFnIGNoZWNraW5nLCBzZXR0aW5nLCBvciBjbGVhcmlu
ZyBpcyBkb25lIHVubGVzcyBHQ19WQUxJREFUSU9OIGlzIGVuYWJsZWQuICAKKyAgICAgICAgQWxz
byBhZGRlZCBzcGVjaWFsIGNhc2VzIHdoZXJlIHRoZSBmbGFnIGlzIGNsZWFyZWQgYW5kIHRoZSBy
ZXNldCBhcm91bmQgbG9jYXRpb25zIHdoZXJlIG5lc3RlZCAKKyAgICAgICAgYWxsb2NhdGlvbnMg
b2NjdXIgaW4gdGhlIGNvbnN0cnVjdG9ycy4gIFRoaXMgaXMgbW9zdGx5IHRlbXBvcmFyeSBmb3Ig
bm93IHRvIGdldCBiYWNrIHRvIGEgd29ya2luZyBzdGF0ZSAKKyAgICAgICAgd2l0aG91dCBoYXZp
bmcgdG8gaG9pc3QgYWxsIG9mIHRob3NlIGFsb2NhdGlvbnMgb3V0IG9mIHRoZSBjb25zdHJ1Y3Rv
cnMuICBUaGlzIGlzIHBhcnQgb2YgYSAKKyAgICAgICAgbGFyZ2VyIHJlZmFjdG9yaW5nIHRvIG1h
a2Ugb3VyIG9iamVjdCBhbGxvY2F0aW9uIGFuZCBpbml0aWFsaXphdGlvbiBtb3JlIEdDLWZyaWVu
ZGx5L3NhZmUuIAorCisgICAgICAgICogSlNSdW4uaDoKKyAgICAgICAgKEpTR2x1ZUdsb2JhbE9i
amVjdDo6Y3JlYXRlKToKKyAgICAgICAgKiBVc2VyT2JqZWN0SW1wLmg6CisgICAgICAgIChVc2Vy
T2JqZWN0SW1wOjpjcmVhdGUpOgorCiAyMDExLTA3LTI3ICBNYXJrIEhhaG5lbmJlcmcgIDxtaGFo
bmVuYmVyZ0BhcHBsZS5jb20+CiAKICAgICAgICAgUmVtb3ZlIG9wZXJhdG9yIG5ldyBmcm9tIEpT
Q2VsbApJbmRleDogU291cmNlL0phdmFTY3JpcHRHbHVlL0pTUnVuLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRHbHVlL0pTUnVuLmgJKHJldmlzaW9uIDkxOTM5KQorKysgU291cmNl
L0phdmFTY3JpcHRHbHVlL0pTUnVuLmgJKHdvcmtpbmcgY29weSkKQEAgLTM3LDcgKzM3LDcgQEAg
Y2xhc3MgSlNHbHVlR2xvYmFsT2JqZWN0IDogcHVibGljIEpTR2xvYgogICAgIHB1YmxpYzoKICAg
ICAgICAgc3RhdGljIEpTR2x1ZUdsb2JhbE9iamVjdCogY3JlYXRlKEpTR2xvYmFsRGF0YSYgZ2xv
YmFsRGF0YSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTRmxhZ3MgZmxhZ3MgPSBrSlNGbGFnTm9u
ZSkKICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIG5ldyAoYWxsb2NhdGVDZWxsPEpTR2x1
ZUdsb2JhbE9iamVjdD4oZ2xvYmFsRGF0YS5oZWFwKSkgSlNHbHVlR2xvYmFsT2JqZWN0KGdsb2Jh
bERhdGEsIHN0cnVjdHVyZSwgZmxhZ3MpOworICAgICAgICAgICAgcmV0dXJuIHZhbGlkYXRlQWxs
b2M8SlNHbHVlR2xvYmFsT2JqZWN0PihnbG9iYWxEYXRhLCBuZXcgKGFsbG9jYXRlQ2VsbDxKU0ds
dWVHbG9iYWxPYmplY3Q+KGdsb2JhbERhdGEuaGVhcCkpIEpTR2x1ZUdsb2JhbE9iamVjdChnbG9i
YWxEYXRhLCBzdHJ1Y3R1cmUsIGZsYWdzKSk7CiAgICAgICAgIH0KIAogICAgICAgICBKU0ZsYWdz
IEZsYWdzKCkgY29uc3QgeyByZXR1cm4gbV9mbGFnczsgfQpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRHbHVlL1VzZXJPYmplY3RJbXAuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdEds
dWUvVXNlck9iamVjdEltcC5oCShyZXZpc2lvbiA5MTkzOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
R2x1ZS9Vc2VyT2JqZWN0SW1wLmgJKHdvcmtpbmcgY29weSkKQEAgLTM4LDcgKzM4LDcgQEAgY2xh
c3MgVXNlck9iamVjdEltcCA6IHB1YmxpYyBKU05vbkZpbmFsTwogcHVibGljOgogICAgIHN0YXRp
YyBVc2VyT2JqZWN0SW1wKiBjcmVhdGUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSwgSlNVc2VyT2JqZWN0KiB1c2VyT2JqZWN0KQogICAgIHsKLSAgICAgICAg
cmV0dXJuIG5ldyAoYWxsb2NhdGVDZWxsPFVzZXJPYmplY3RJbXA+KGdsb2JhbERhdGEuaGVhcCkp
IFVzZXJPYmplY3RJbXAoZ2xvYmFsRGF0YSwgc3RydWN0dXJlLCB1c2VyT2JqZWN0KTsKKyAgICAg
ICAgcmV0dXJuIHZhbGlkYXRlQWxsb2M8VXNlck9iamVjdEltcD4oZ2xvYmFsRGF0YSwgbmV3IChh
bGxvY2F0ZUNlbGw8VXNlck9iamVjdEltcD4oZ2xvYmFsRGF0YS5oZWFwKSkgVXNlck9iamVjdElt
cChnbG9iYWxEYXRhLCBzdHJ1Y3R1cmUsIHVzZXJPYmplY3QpKTsKICAgICB9CiAgICAgCiAgICAg
dmlydHVhbCB+VXNlck9iamVjdEltcCgpOwpJbmRleDogU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gOTE5NDAp
CisrKyBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw3
OSBAQAorMjAxMS0wNy0yOCAgTWFyayBIYWhuZW5iZXJnICA8bWhhaG5lbmJlcmdAYXBwbGUuY29t
PgorCisgICAgICAgIEFkZCBjaGVja3MgdG8gZW5zdXJlIGFsbG9jYXRpb24gZG9lcyBub3QgdGFr
ZSBwbGFjZSBkdXJpbmcgaW5pdGlhbGl6YXRpb24gb2YgR0MtbWFuYWdlZCBvYmplY3RzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NTI4OAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cy4K
KworICAgICAgICBBZGRlZCB0aGUgdmFsaWRhdGVBbGxvYyBjYWxsIHRvIGNoZWNrIHRoZSBpbml0
aWFsaXppbmdPYmplY3QgZmxhZyBpbiB0aGUgSlNHbG9iYWxEYXRhIG9iamVjdCBhbmQgCisgICAg
ICAgIHRvIHRoZW4gY2xlYXIgc2FpZCBmbGFnLiAgTm8gZmxhZyBjaGVja2luZywgc2V0dGluZywg
b3IgY2xlYXJpbmcgaXMgZG9uZSB1bmxlc3MgR0NfVkFMSURBVElPTiBpcyBlbmFibGVkLiAgCisg
ICAgICAgIEFsc28gYWRkZWQgc3BlY2lhbCBjYXNlcyB3aGVyZSB0aGUgZmxhZyBpcyBjbGVhcmVk
IGFuZCB0aGUgcmVzZXQgYXJvdW5kIGxvY2F0aW9ucyB3aGVyZSBuZXN0ZWQgCisgICAgICAgIGFs
bG9jYXRpb25zIG9jY3VyIGluIHRoZSBjb25zdHJ1Y3RvcnMuICBUaGlzIGlzIG1vc3RseSB0ZW1w
b3JhcnkgZm9yIG5vdyB0byBnZXQgYmFjayB0byBhIHdvcmtpbmcgc3RhdGUgCisgICAgICAgIHdp
dGhvdXQgaGF2aW5nIHRvIGhvaXN0IGFsbCBvZiB0aG9zZSBhbG9jYXRpb25zIG91dCBvZiB0aGUg
Y29uc3RydWN0b3JzLiAgVGhpcyBpcyBwYXJ0IG9mIGEgCisgICAgICAgIGxhcmdlciByZWZhY3Rv
cmluZyB0byBtYWtlIG91ciBvYmplY3QgYWxsb2NhdGlvbiBhbmQgaW5pdGlhbGl6YXRpb24gbW9y
ZSBHQy1mcmllbmRseS9zYWZlLiAKKworICAgICAgICAqIGJpbmRpbmdzL2pzL0pTQXVkaW9Db25z
dHJ1Y3Rvci5oOgorICAgICAgICAoV2ViQ29yZTo6SlNBdWRpb0NvbnN0cnVjdG9yOjpjcmVhdGUp
OgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTSW1hZ2VDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpKU0ltYWdlQ29uc3RydWN0b3I6OkpTSW1hZ2VDb25zdHJ1Y3Rvcik6CisgICAg
ICAgICogYmluZGluZ3MvanMvSlNJbWFnZUNvbnN0cnVjdG9yLmg6CisgICAgICAgIChXZWJDb3Jl
OjpKU0ltYWdlQ29uc3RydWN0b3I6OmNyZWF0ZSk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNP
cHRpb25Db25zdHJ1Y3Rvci5oOgorICAgICAgICAoV2ViQ29yZTo6SlNPcHRpb25Db25zdHJ1Y3Rv
cjo6Y3JlYXRlKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5w
bToKKyAgICAgICAgKEdlbmVyYXRlSGVhZGVyKToKKyAgICAgICAgKEdlbmVyYXRlQ29uc3RydWN0
b3JEZWNsYXJhdGlvbik6CisgICAgICAgIChHZW5lcmF0ZUNvbnN0cnVjdG9yRGVmaW5pdGlvbik6
CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEludGVyZmFjZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RJbnRlcmZhY2VDb25zdHJ1Y3Rvcjo6Y3JlYXRlKToK
KyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW50ZXJmYWNlLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpKU1Rlc3RJbnRlcmZhY2U6OmNyZWF0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpKU1Rlc3RJbnRlcmZhY2VQcm90b3R5cGU6OmNyZWF0ZSk6CisgICAgICAgICogYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lckNvbnN0cnVjdG9yOjpj
cmVhdGUpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RNZWRpYVF1
ZXJ5TGlzdExpc3RlbmVyLmg6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RNZWRpYVF1ZXJ5TGlz
dExpc3RlbmVyOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0TWVkaWFRdWVyeUxp
c3RMaXN0ZW5lclByb3RvdHlwZTo6Y3JlYXRlKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0T2JqLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE9iakNvbnN0
cnVjdG9yOjpjcmVhdGUpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RPYmouaDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE9iajo6Y3JlYXRlKToKKyAgICAgICAg
KFdlYkNvcmU6OkpTVGVzdE9ialByb3RvdHlwZTo6Y3JlYXRlKToKKyAgICAgICAgKiBiaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFj
ZUNvbnN0cnVjdG9yOjpjcmVhdGUpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UuaDoKKyAgICAgICAgKFdlYkNv
cmU6OkpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZTo6Y3JlYXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZVByb3RvdHlw
ZTo6Y3JlYXRlKToKKyAgICAgICAgKiBicmlkZ2UvYy9DUnVudGltZU9iamVjdC5oOgorICAgICAg
ICAoSlNDOjpCaW5kaW5nczo6Q1J1bnRpbWVPYmplY3Q6OmNyZWF0ZSk6CisgICAgICAgICogYnJp
ZGdlL2MvY19pbnN0YW5jZS5jcHA6CisgICAgICAgIChKU0M6OkJpbmRpbmdzOjpDUnVudGltZU1l
dGhvZDo6Y3JlYXRlKToKKyAgICAgICAgKiBicmlkZ2Uvam5pL2pzYy9KYXZhSW5zdGFuY2VKU0Mu
Y3BwOgorICAgICAgICAoSmF2YVJ1bnRpbWVNZXRob2Q6OmNyZWF0ZSk6CisgICAgICAgICogYnJp
ZGdlL2puaS9qc2MvSmF2YVJ1bnRpbWVPYmplY3QuaDoKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6
OkphdmFSdW50aW1lT2JqZWN0OjpjcmVhdGUpOgorICAgICAgICAqIGJyaWRnZS9vYmpjL09iakNS
dW50aW1lT2JqZWN0Lmg6CisgICAgICAgIChKU0M6OkJpbmRpbmdzOjpPYmpDUnVudGltZU9iamVj
dDo6Y3JlYXRlKToKKyAgICAgICAgKiBicmlkZ2Uvb2JqYy9vYmpjX2luc3RhbmNlLm1tOgorICAg
ICAgICAoT2JqQ1J1bnRpbWVNZXRob2Q6OmNyZWF0ZSk6CisgICAgICAgICogYnJpZGdlL29iamMv
b2JqY19ydW50aW1lLmg6CisgICAgICAgIChKU0M6OkJpbmRpbmdzOjpPYmpjRmFsbGJhY2tPYmpl
Y3RJbXA6OmNyZWF0ZSk6CisgICAgICAgICogYnJpZGdlL3F0L3F0X2luc3RhbmNlLmNwcDoKKyAg
ICAgICAgKEpTQzo6QmluZGluZ3M6OlF0UnVudGltZU9iamVjdDo6Y3JlYXRlKToKKyAgICAgICAg
KiBicmlkZ2UvcXQvcXRfcGl4bWFwcnVudGltZS5jcHA6CisgICAgICAgIChKU0M6OkJpbmRpbmdz
OjpRdFBpeG1hcFJ1bnRpbWVPYmplY3Q6OmNyZWF0ZSk6CisgICAgICAgICogYnJpZGdlL3F0L3F0
X3J1bnRpbWUuaDoKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6OlF0UnVudGltZU1ldGFNZXRob2Q6
OmNyZWF0ZSk6CisgICAgICAgIChKU0M6OkJpbmRpbmdzOjpRdFJ1bnRpbWVDb25uZWN0aW9uTWV0
aG9kOjpjcmVhdGUpOgorICAgICAgICAqIGJyaWRnZS9ydW50aW1lX2FycmF5Lmg6CisgICAgICAg
IChKU0M6OlJ1bnRpbWVBcnJheTo6Y3JlYXRlKToKKyAgICAgICAgKiBicmlkZ2UvcnVudGltZV9t
ZXRob2QuaDoKKyAgICAgICAgKEpTQzo6UnVudGltZU1ldGhvZDo6Y3JlYXRlKToKKyAgICAgICAg
KiBicmlkZ2UvcnVudGltZV9vYmplY3QuaDoKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6OlJ1bnRp
bWVPYmplY3Q6OmNyZWF0ZSk6CisKIDIwMTEtMDctMjggIERhdmlkIEtpbHplciAgPGRka2lsemVy
QGFwcGxlLmNvbT4KIAogICAgICAgICA8aHR0cDovL3dlYmtpdC5vcmcvYi82NTI4OT4gUmVtb3Zl
IEdlb2xvY2F0aW9uUG9zaXRpb25DYWNoZQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNBdWRpb0NvbnN0cnVjdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNBdWRpb0NvbnN0cnVjdG9yLmgJKHJldmlzaW9uIDkxOTM5KQorKysgU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNBdWRpb0NvbnN0cnVjdG9yLmgJKHdvcmtpbmcgY29weSkK
QEAgLTM4LDcgKzM4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIHB1YmxpYzoKICAgICAg
ICAgc3RhdGljIEpTQXVkaW9Db25zdHJ1Y3RvciogY3JlYXRlKEpTQzo6RXhlY1N0YXRlKiBleGVj
LCBKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0KQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gbmV3IChKU0M6OmFsbG9jYXRlQ2Vs
bDxKU0F1ZGlvQ29uc3RydWN0b3I+KCpleGVjLT5oZWFwKCkpKSBKU0F1ZGlvQ29uc3RydWN0b3Io
ZXhlYywgc3RydWN0dXJlLCBnbG9iYWxPYmplY3QpOworICAgICAgICAgICAgcmV0dXJuIEpTQzo6
dmFsaWRhdGVBbGxvYzxKU0F1ZGlvQ29uc3RydWN0b3I+KGV4ZWMtPmdsb2JhbERhdGEoKSwgbmV3
IChKU0M6OmFsbG9jYXRlQ2VsbDxKU0F1ZGlvQ29uc3RydWN0b3I+KCpleGVjLT5oZWFwKCkpKSBK
U0F1ZGlvQ29uc3RydWN0b3IoZXhlYywgc3RydWN0dXJlLCBnbG9iYWxPYmplY3QpKTsKICAgICAg
ICAgfQogCiAgICAgICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpT
Qzo6SlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQpJbmRl
eDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJbWFnZUNvbnN0cnVjdG9yLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0ltYWdlQ29uc3RydWN0b3Iu
Y3BwCShyZXZpc2lvbiA5MTkzOSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSW1h
Z2VDb25zdHJ1Y3Rvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM4LDcgKzM4LDkgQEAgSlNJbWFn
ZUNvbnN0cnVjdG9yOjpKU0ltYWdlQ29uc3RydWN0b3IoRQogICAgIDogRE9NQ29uc3RydWN0b3JX
aXRoRG9jdW1lbnQoc3RydWN0dXJlLCBnbG9iYWxPYmplY3QpCiB7CiAgICAgQVNTRVJUKGluaGVy
aXRzKCZzX2luZm8pKTsKKyAgICBleGVjLT5nbG9iYWxEYXRhKCkuc2V0SW5pdGlhbGl6aW5nT2Jq
ZWN0KGZhbHNlKTsKICAgICBwdXREaXJlY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5wcm9w
ZXJ0eU5hbWVzKCkucHJvdG90eXBlLCBKU0hUTUxJbWFnZUVsZW1lbnRQcm90b3R5cGU6OnNlbGYo
ZXhlYywgZ2xvYmFsT2JqZWN0KSwgTm9uZSk7CisgICAgZXhlYy0+Z2xvYmFsRGF0YSgpLnNldElu
aXRpYWxpemluZ09iamVjdCh0cnVlKTsKIH0KIAogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgY29uc3RydWN0SW1hZ2UoRXhlY1N0YXRlKiBleGVjKQpJbmRleDogU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNJbWFnZUNvbnN0cnVjdG9yLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJbWFnZUNvbnN0cnVjdG9yLmgJKHJldmlzaW9uIDkx
OTM5KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJbWFnZUNvbnN0cnVjdG9yLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTI5LDcgKzI5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAg
IHB1YmxpYzoKICAgICAgICAgc3RhdGljIEpTSW1hZ2VDb25zdHJ1Y3RvciogY3JlYXRlKEpTQzo6
RXhlY1N0YXRlKiBleGVjLCBKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0RPTUdsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0KQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gbmV3IChK
U0M6OmFsbG9jYXRlQ2VsbDxKU0ltYWdlQ29uc3RydWN0b3I+KCpleGVjLT5oZWFwKCkpKSBKU0lt
YWdlQ29uc3RydWN0b3IoZXhlYywgc3RydWN0dXJlLCBnbG9iYWxPYmplY3QpOworICAgICAgICAg
ICAgcmV0dXJuIEpTQzo6dmFsaWRhdGVBbGxvYzxKU0ltYWdlQ29uc3RydWN0b3I+KGV4ZWMtPmds
b2JhbERhdGEoKSwgbmV3IChKU0M6OmFsbG9jYXRlQ2VsbDxKU0ltYWdlQ29uc3RydWN0b3I+KCpl
eGVjLT5oZWFwKCkpKSBKU0ltYWdlQ29uc3RydWN0b3IoZXhlYywgc3RydWN0dXJlLCBnbG9iYWxP
YmplY3QpKTsKICAgICAgICAgfQogCiAgICAgICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3Jl
YXRlU3RydWN0dXJlKEpTQzo6SlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU0M6OkpTVmFsdWUg
cHJvdG90eXBlKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNPcHRpb25Db25z
dHJ1Y3Rvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTT3B0
aW9uQ29uc3RydWN0b3IuaAkocmV2aXNpb24gOTE5MzkpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU09wdGlvbkNvbnN0cnVjdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTMwLDcgKzMw
LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIHB1YmxpYzoKICAgICAgICAgc3RhdGljIEpT
T3B0aW9uQ29uc3RydWN0b3IqIGNyZWF0ZShKU0M6OkV4ZWNTdGF0ZSogZXhlYywgSlNDOjpTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKICAgICAg
ICAgewotICAgICAgICAgICAgcmV0dXJuIG5ldyAoSlNDOjphbGxvY2F0ZUNlbGw8SlNPcHRpb25D
b25zdHJ1Y3Rvcj4oKmV4ZWMtPmhlYXAoKSkpIEpTT3B0aW9uQ29uc3RydWN0b3IoZXhlYywgc3Ry
dWN0dXJlLCBnbG9iYWxPYmplY3QpOworICAgICAgICAgICAgcmV0dXJuIEpTQzo6dmFsaWRhdGVB
bGxvYzxKU09wdGlvbkNvbnN0cnVjdG9yPihleGVjLT5nbG9iYWxEYXRhKCksIG5ldyAoSlNDOjph
bGxvY2F0ZUNlbGw8SlNPcHRpb25Db25zdHJ1Y3Rvcj4oKmV4ZWMtPmhlYXAoKSkpIEpTT3B0aW9u
Q29uc3RydWN0b3IoZXhlYywgc3RydWN0dXJlLCBnbG9iYWxPYmplY3QpKTsKICAgICAgICAgfQog
CiAgICAgICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6SlNH
bG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQpJbmRleDogU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0J
KHJldmlzaW9uIDkxOTM5KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2Rl
R2VuZXJhdG9ySlMucG0JKHdvcmtpbmcgY29weSkKQEAgLTcwNCwxOCArNzA0LDE4IEBAIHN1YiBH
ZW5lcmF0ZUhlYWRlcgogICAgIGlmICgkaW50ZXJmYWNlTmFtZSBlcSAiRE9NV2luZG93Iikgewog
ICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIHN0YXRpYyAkY2xhc3NOYW1lKiBjcmVh
dGUoSlNDOjpKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1
cmUsIFBhc3NSZWZQdHI8JGltcGxUeXBlPiBpbXBsLCBKU0RPTVdpbmRvd1NoZWxsKiB3aW5kb3dT
aGVsbClcbiIpOwogICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIHtcbiIpOwotICAg
ICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgICAgICByZXR1cm4gbmV3IChKU0M6OmFsbG9j
YXRlQ2VsbDwkY2xhc3NOYW1lPihnbG9iYWxEYXRhLmhlYXApKSAke2NsYXNzTmFtZX0oZ2xvYmFs
RGF0YSwgc3RydWN0dXJlLCBpbXBsLCB3aW5kb3dTaGVsbCk7XG4iKTsKKyAgICAgICAgcHVzaChA
aGVhZGVyQ29udGVudCwgIiAgICAgICAgcmV0dXJuIEpTQzo6dmFsaWRhdGVBbGxvYzwkY2xhc3NO
YW1lPihnbG9iYWxEYXRhLCBuZXcgKEpTQzo6YWxsb2NhdGVDZWxsPCRjbGFzc05hbWU+KGdsb2Jh
bERhdGEuaGVhcCkpICR7Y2xhc3NOYW1lfShnbG9iYWxEYXRhLCBzdHJ1Y3R1cmUsIGltcGwsIHdp
bmRvd1NoZWxsKSk7XG4iKTsKICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICB9XG5c
biIpOwogICAgIH0gZWxzaWYgKCRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IklzV29y
a2VyQ29udGV4dCJ9KSB7CiAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgc3RhdGlj
ICRjbGFzc05hbWUqIGNyZWF0ZShKU0M6OkpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNDOjpT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUGFzc1JlZlB0cjwkaW1wbFR5cGU+IGltcGwpXG4iKTsKICAg
ICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICB7XG4iKTsKLSAgICAgICAgcHVzaChAaGVh
ZGVyQ29udGVudCwgIiAgICAgICAgcmV0dXJuIG5ldyAoSlNDOjphbGxvY2F0ZUNlbGw8JGNsYXNz
TmFtZT4oZ2xvYmFsRGF0YS5oZWFwKSkgJHtjbGFzc05hbWV9KGdsb2JhbERhdGEsIHN0cnVjdHVy
ZSwgaW1wbCk7XG4iKTsKKyAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICAgICAgcmV0
dXJuIEpTQzo6dmFsaWRhdGVBbGxvYzwkY2xhc3NOYW1lPihnbG9iYWxEYXRhLCBuZXcgKEpTQzo6
YWxsb2NhdGVDZWxsPCRjbGFzc05hbWU+KGdsb2JhbERhdGEuaGVhcCkpICR7Y2xhc3NOYW1lfShn
bG9iYWxEYXRhLCBzdHJ1Y3R1cmUsIGltcGwpKTtcbiIpOwogICAgICAgICBwdXNoKEBoZWFkZXJD
b250ZW50LCAiICAgIH1cblxuIik7CiAgICAgfSBlbHNlIHsKICAgICAgICAgQWRkSW5jbHVkZXNG
b3JUeXBlSW5IZWFkZXIoJGltcGxUeXBlKSB1bmxlc3MgJHN2Z1Byb3BlcnR5T3JMaXN0UHJvcGVy
dHlUeXBlOwogICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIHN0YXRpYyAkY2xhc3NO
YW1lKiBjcmVhdGUoSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgUGFzc1JlZlB0cjwkaW1wbFR5cGU+IGltcGwpXG4iKTsKICAgICAgICAg
cHVzaChAaGVhZGVyQ29udGVudCwgIiAgICB7XG4iKTsKLSAgICAgICAgcHVzaChAaGVhZGVyQ29u
dGVudCwgIiAgICAgICAgcmV0dXJuIG5ldyAoSlNDOjphbGxvY2F0ZUNlbGw8JGNsYXNzTmFtZT4o
Z2xvYmFsT2JqZWN0LT5nbG9iYWxEYXRhKCkuaGVhcCkpICRjbGFzc05hbWUoc3RydWN0dXJlLCBn
bG9iYWxPYmplY3QsIGltcGwpO1xuIik7CisgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIg
ICAgICAgIHJldHVybiBKU0M6OnZhbGlkYXRlQWxsb2M8JGNsYXNzTmFtZT4oZ2xvYmFsT2JqZWN0
LT5nbG9iYWxEYXRhKCksIG5ldyAoSlNDOjphbGxvY2F0ZUNlbGw8JGNsYXNzTmFtZT4oZ2xvYmFs
T2JqZWN0LT5nbG9iYWxEYXRhKCkuaGVhcCkpICRjbGFzc05hbWUoc3RydWN0dXJlLCBnbG9iYWxP
YmplY3QsIGltcGwpKTtcbiIpOwogICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIH1c
blxuIik7CiAgICAgfQogCkBAIC0xMDAzLDcgKzEwMDMsNyBAQCBzdWIgR2VuZXJhdGVIZWFkZXIK
IAogICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgc3RhdGljICR7Y2xhc3NOYW1lfVByb3Rv
dHlwZSogY3JlYXRlKEpTQzo6SlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU0M6OkpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUpXG4iKTsKICAg
ICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIHtcbiIpOwotICAgIHB1c2goQGhlYWRlckNvbnRl
bnQsICIgICAgICAgIHJldHVybiBuZXcgKEpTQzo6YWxsb2NhdGVDZWxsPCR7Y2xhc3NOYW1lfVBy
b3RvdHlwZT4oZ2xvYmFsRGF0YS5oZWFwKSkgJHtjbGFzc05hbWV9UHJvdG90eXBlKGdsb2JhbERh
dGEsIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlKTtcbiIpOworICAgIHB1c2goQGhlYWRlckNvbnRl
bnQsICIgICAgICAgIHJldHVybiBKU0M6OnZhbGlkYXRlQWxsb2M8JHtjbGFzc05hbWV9UHJvdG90
eXBlPihnbG9iYWxEYXRhLCBuZXcgKEpTQzo6YWxsb2NhdGVDZWxsPCR7Y2xhc3NOYW1lfVByb3Rv
dHlwZT4oZ2xvYmFsRGF0YS5oZWFwKSkgJHtjbGFzc05hbWV9UHJvdG90eXBlKGdsb2JhbERhdGEs
IGdsb2JhbE9iamVjdCwgc3RydWN0dXJlKSk7XG4iKTsKICAgICBwdXNoKEBoZWFkZXJDb250ZW50
LCAiICAgIH1cblxuIik7CiAKICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIHN0YXRpYyBj
b25zdCBKU0M6OkNsYXNzSW5mbyBzX2luZm87XG4iKTsKQEAgLTMwNjksNyArMzA2OSw3IEBAIHN1
YiBHZW5lcmF0ZUNvbnN0cnVjdG9yRGVjbGFyYXRpb24KICAgICBwdXNoKEAkb3V0cHV0QXJyYXks
ICJwdWJsaWM6XG4iKTsKICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgc3RhdGljICRjb25z
dHJ1Y3RvckNsYXNzTmFtZSogY3JlYXRlKEpTQzo6RXhlY1N0YXRlKiBleGVjLCBKU0M6OlN0cnVj
dHVyZSogc3RydWN0dXJlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KVxuIik7CiAg
ICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIHtcbiIpOwotICAgIHB1c2goQCRvdXRwdXRBcnJh
eSwgIiAgICAgICAgcmV0dXJuIG5ldyAoSlNDOjphbGxvY2F0ZUNlbGw8JGNvbnN0cnVjdG9yQ2xh
c3NOYW1lPigqZXhlYy0+aGVhcCgpKSkgJGNvbnN0cnVjdG9yQ2xhc3NOYW1lKGV4ZWMsIHN0cnVj
dHVyZSwgZ2xvYmFsT2JqZWN0KTtcbiIpOworICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICAg
ICAgcmV0dXJuIEpTQzo6dmFsaWRhdGVBbGxvYzwkY29uc3RydWN0b3JDbGFzc05hbWU+KGV4ZWMt
Pmdsb2JhbERhdGEoKSwgbmV3IChKU0M6OmFsbG9jYXRlQ2VsbDwkY29uc3RydWN0b3JDbGFzc05h
bWU+KCpleGVjLT5oZWFwKCkpKSAkY29uc3RydWN0b3JDbGFzc05hbWUoZXhlYywgc3RydWN0dXJl
LCBnbG9iYWxPYmplY3QpKTtcbiIpOwogICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICB9XG5c
biIpOwogCiAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIHZpcnR1YWwgYm9vbCBnZXRPd25Q
cm9wZXJ0eVNsb3QoSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBKU0M6OklkZW50aWZpZXImLCBKU0M6
OlByb3BlcnR5U2xvdCYpO1xuIik7CkBAIC0zMTEzLDEyICszMTEzLDE0IEBAIHN1YiBHZW5lcmF0
ZUNvbnN0cnVjdG9yRGVmaW5pdGlvbgogICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICA6IERP
TUNvbnN0cnVjdG9yT2JqZWN0KHN0cnVjdHVyZSwgZ2xvYmFsT2JqZWN0KVxuIik7CiAgICAgcHVz
aChAJG91dHB1dEFycmF5LCAie1xuIik7CiAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIEFT
U0VSVChpbmhlcml0cygmc19pbmZvKSk7XG4iKTsKKyAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIg
ICAgZXhlYy0+Z2xvYmFsRGF0YSgpLnNldEluaXRpYWxpemluZ09iamVjdChmYWxzZSk7XG4iKTsK
ICAgICBpZiAoJGludGVyZmFjZU5hbWUgZXEgIkRPTVdpbmRvdyIpIHsKICAgICAgICAgcHVzaChA
JG91dHB1dEFycmF5LCAiICAgIHB1dERpcmVjdChleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPnBy
b3BlcnR5TmFtZXMoKS5wcm90b3R5cGUsIGdsb2JhbE9iamVjdC0+cHJvdG90eXBlKCksIERvbnRE
ZWxldGUgfCBSZWFkT25seSk7XG4iKTsKICAgICB9IGVsc2UgewogICAgICAgICBwdXNoKEAkb3V0
cHV0QXJyYXksICIgICAgcHV0RGlyZWN0KGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+cHJvcGVy
dHlOYW1lcygpLnByb3RvdHlwZSwgJHtwcm90b0NsYXNzTmFtZX06OnNlbGYoZXhlYywgZ2xvYmFs
T2JqZWN0KSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KTtcbiIpOwogICAgIH0KICAgICBwdXNoKEAk
b3V0cHV0QXJyYXksICIgICAgcHV0RGlyZWN0KGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+cHJv
cGVydHlOYW1lcygpLmxlbmd0aCwganNOdW1iZXIoJHtudW1iZXJPZmNvbnN0cnVjdFBhcmFtZXRl
cnN9KSwgUmVhZE9ubHkgfCBEb250RGVsZXRlIHwgRG9udEVudW0pO1xuIikgaWYgJG51bWJlck9m
Y29uc3RydWN0UGFyYW1ldGVyczsKKyAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgZXhlYy0+
Z2xvYmFsRGF0YSgpLnNldEluaXRpYWxpemluZ09iamVjdCh0cnVlKTtcbiIpOwogICAgIHB1c2go
QCRvdXRwdXRBcnJheSwgIn1cblxuIik7CiAKICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICJib29s
ICR7Y29uc3RydWN0b3JDbGFzc05hbWV9OjpnZXRPd25Qcm9wZXJ0eVNsb3QoRXhlY1N0YXRlKiBl
eGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdClc
biIpOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dEludGVyZmFjZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdEludGVyZmFjZS5jcHAJKHJldmlzaW9uIDkxOTM5KQorKysgU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEludGVyZmFjZS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTY5LDcgKzY5LDcgQEAgcHJpdmF0ZToKIHB1YmxpYzoKICAgICBz
dGF0aWMgSlNUZXN0SW50ZXJmYWNlQ29uc3RydWN0b3IqIGNyZWF0ZShKU0M6OkV4ZWNTdGF0ZSog
ZXhlYywgSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCkKICAgICB7Ci0gICAgICAgIHJldHVybiBuZXcgKEpTQzo6YWxsb2NhdGVDZWxsPEpT
VGVzdEludGVyZmFjZUNvbnN0cnVjdG9yPigqZXhlYy0+aGVhcCgpKSkgSlNUZXN0SW50ZXJmYWNl
Q29uc3RydWN0b3IoZXhlYywgc3RydWN0dXJlLCBnbG9iYWxPYmplY3QpOworICAgICAgICByZXR1
cm4gSlNDOjp2YWxpZGF0ZUFsbG9jPEpTVGVzdEludGVyZmFjZUNvbnN0cnVjdG9yPihleGVjLT5n
bG9iYWxEYXRhKCksIG5ldyAoSlNDOjphbGxvY2F0ZUNlbGw8SlNUZXN0SW50ZXJmYWNlQ29uc3Ry
dWN0b3I+KCpleGVjLT5oZWFwKCkpKSBKU1Rlc3RJbnRlcmZhY2VDb25zdHJ1Y3RvcihleGVjLCBz
dHJ1Y3R1cmUsIGdsb2JhbE9iamVjdCkpOwogICAgIH0KIAogICAgIHZpcnR1YWwgYm9vbCBnZXRP
d25Qcm9wZXJ0eVNsb3QoSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBKU0M6OklkZW50aWZpZXImLCBK
U0M6OlByb3BlcnR5U2xvdCYpOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdEludGVyZmFjZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2UuaAkocmV2aXNpb24gOTE5
MzkpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW50
ZXJmYWNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM2LDcgKzM2LDcgQEAgY2xhc3MgSlNUZXN0SW50
ZXJmYWNlIDogcHVibGljIEpTRE9NV3JhcAogcHVibGljOgogICAgIHN0YXRpYyBKU1Rlc3RJbnRl
cmZhY2UqIGNyZWF0ZShKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0RPTUdsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBQYXNzUmVmUHRyPFRlc3RJbnRlcmZhY2U+IGltcGwpCiAgICAgewot
ICAgICAgICByZXR1cm4gbmV3IChKU0M6OmFsbG9jYXRlQ2VsbDxKU1Rlc3RJbnRlcmZhY2U+KGds
b2JhbE9iamVjdC0+Z2xvYmFsRGF0YSgpLmhlYXApKSBKU1Rlc3RJbnRlcmZhY2Uoc3RydWN0dXJl
LCBnbG9iYWxPYmplY3QsIGltcGwpOworICAgICAgICByZXR1cm4gSlNDOjp2YWxpZGF0ZUFsbG9j
PEpTVGVzdEludGVyZmFjZT4oZ2xvYmFsT2JqZWN0LT5nbG9iYWxEYXRhKCksIG5ldyAoSlNDOjph
bGxvY2F0ZUNlbGw8SlNUZXN0SW50ZXJmYWNlPihnbG9iYWxPYmplY3QtPmdsb2JhbERhdGEoKS5o
ZWFwKSkgSlNUZXN0SW50ZXJmYWNlKHN0cnVjdHVyZSwgZ2xvYmFsT2JqZWN0LCBpbXBsKSk7CiAg
ICAgfQogCiAgICAgc3RhdGljIEpTQzo6SlNPYmplY3QqIGNyZWF0ZVByb3RvdHlwZShKU0M6OkV4
ZWNTdGF0ZSosIEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKQEAgLTY4LDcgKzY4LDcgQEAgcHVibGlj
OgogICAgIHN0YXRpYyBKU0M6OkpTT2JqZWN0KiBzZWxmKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpK
U0dsb2JhbE9iamVjdCopOwogICAgIHN0YXRpYyBKU1Rlc3RJbnRlcmZhY2VQcm90b3R5cGUqIGNy
ZWF0ZShKU0M6OkpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNDOjpKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlKQogICAgIHsKLSAgICAgICAg
cmV0dXJuIG5ldyAoSlNDOjphbGxvY2F0ZUNlbGw8SlNUZXN0SW50ZXJmYWNlUHJvdG90eXBlPihn
bG9iYWxEYXRhLmhlYXApKSBKU1Rlc3RJbnRlcmZhY2VQcm90b3R5cGUoZ2xvYmFsRGF0YSwgZ2xv
YmFsT2JqZWN0LCBzdHJ1Y3R1cmUpOworICAgICAgICByZXR1cm4gSlNDOjp2YWxpZGF0ZUFsbG9j
PEpTVGVzdEludGVyZmFjZVByb3RvdHlwZT4oZ2xvYmFsRGF0YSwgbmV3IChKU0M6OmFsbG9jYXRl
Q2VsbDxKU1Rlc3RJbnRlcmZhY2VQcm90b3R5cGU+KGdsb2JhbERhdGEuaGVhcCkpIEpTVGVzdElu
dGVyZmFjZVByb3RvdHlwZShnbG9iYWxEYXRhLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSkpOwog
ICAgIH0KIAogICAgIHN0YXRpYyBjb25zdCBKU0M6OkNsYXNzSW5mbyBzX2luZm87CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TWVkaWFRdWVyeUxp
c3RMaXN0ZW5lci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIuY3BwCShyZXZpc2lvbiA5
MTkzOSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RN
ZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzAsNyArNzAsNyBA
QCBwcml2YXRlOgogcHVibGljOgogICAgIHN0YXRpYyBKU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3Rl
bmVyQ29uc3RydWN0b3IqIGNyZWF0ZShKU0M6OkV4ZWNTdGF0ZSogZXhlYywgSlNDOjpTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKICAgICB7Ci0g
ICAgICAgIHJldHVybiBuZXcgKEpTQzo6YWxsb2NhdGVDZWxsPEpTVGVzdE1lZGlhUXVlcnlMaXN0
TGlzdGVuZXJDb25zdHJ1Y3Rvcj4oKmV4ZWMtPmhlYXAoKSkpIEpTVGVzdE1lZGlhUXVlcnlMaXN0
TGlzdGVuZXJDb25zdHJ1Y3RvcihleGVjLCBzdHJ1Y3R1cmUsIGdsb2JhbE9iamVjdCk7CisgICAg
ICAgIHJldHVybiBKU0M6OnZhbGlkYXRlQWxsb2M8SlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5l
ckNvbnN0cnVjdG9yPihleGVjLT5nbG9iYWxEYXRhKCksIG5ldyAoSlNDOjphbGxvY2F0ZUNlbGw8
SlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lckNvbnN0cnVjdG9yPigqZXhlYy0+aGVhcCgpKSkg
SlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lckNvbnN0cnVjdG9yKGV4ZWMsIHN0cnVjdHVyZSwg
Z2xvYmFsT2JqZWN0KSk7CiAgICAgfQogCiAgICAgdmlydHVhbCBib29sIGdldE93blByb3BlcnR5
U2xvdChKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IEpTQzo6SWRlbnRpZmllciYsIEpTQzo6UHJvcGVy
dHlTbG90Jik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVy
LmgJKHJldmlzaW9uIDkxOTM5KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIuaAkod29ya2luZyBjb3B5KQpAQCAt
MzQsNyArMzQsNyBAQCBjbGFzcyBKU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyIDogcHViCiBw
dWJsaWM6CiAgICAgc3RhdGljIEpTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIqIGNyZWF0ZShK
U0M6OlN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBQYXNzUmVmUHRyPFRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyPiBpbXBsKQogICAgIHsKLSAg
ICAgICAgcmV0dXJuIG5ldyAoSlNDOjphbGxvY2F0ZUNlbGw8SlNUZXN0TWVkaWFRdWVyeUxpc3RM
aXN0ZW5lcj4oZ2xvYmFsT2JqZWN0LT5nbG9iYWxEYXRhKCkuaGVhcCkpIEpTVGVzdE1lZGlhUXVl
cnlMaXN0TGlzdGVuZXIoc3RydWN0dXJlLCBnbG9iYWxPYmplY3QsIGltcGwpOworICAgICAgICBy
ZXR1cm4gSlNDOjp2YWxpZGF0ZUFsbG9jPEpTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXI+KGds
b2JhbE9iamVjdC0+Z2xvYmFsRGF0YSgpLCBuZXcgKEpTQzo6YWxsb2NhdGVDZWxsPEpTVGVzdE1l
ZGlhUXVlcnlMaXN0TGlzdGVuZXI+KGdsb2JhbE9iamVjdC0+Z2xvYmFsRGF0YSgpLmhlYXApKSBK
U1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyKHN0cnVjdHVyZSwgZ2xvYmFsT2JqZWN0LCBpbXBs
KSk7CiAgICAgfQogCiAgICAgc3RhdGljIEpTQzo6SlNPYmplY3QqIGNyZWF0ZVByb3RvdHlwZShK
U0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKQEAgLTY2LDcgKzY2LDcgQEAg
cHVibGljOgogICAgIHN0YXRpYyBKU0M6OkpTT2JqZWN0KiBzZWxmKEpTQzo6RXhlY1N0YXRlKiwg
SlNDOjpKU0dsb2JhbE9iamVjdCopOwogICAgIHN0YXRpYyBKU1Rlc3RNZWRpYVF1ZXJ5TGlzdExp
c3RlbmVyUHJvdG90eXBlKiBjcmVhdGUoSlNDOjpKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpT
Qzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBuZXcgKEpTQzo6YWxsb2NhdGVDZWxsPEpTVGVzdE1l
ZGlhUXVlcnlMaXN0TGlzdGVuZXJQcm90b3R5cGU+KGdsb2JhbERhdGEuaGVhcCkpIEpTVGVzdE1l
ZGlhUXVlcnlMaXN0TGlzdGVuZXJQcm90b3R5cGUoZ2xvYmFsRGF0YSwgZ2xvYmFsT2JqZWN0LCBz
dHJ1Y3R1cmUpOworICAgICAgICByZXR1cm4gSlNDOjp2YWxpZGF0ZUFsbG9jPEpTVGVzdE1lZGlh
UXVlcnlMaXN0TGlzdGVuZXJQcm90b3R5cGU+KGdsb2JhbERhdGEsIG5ldyAoSlNDOjphbGxvY2F0
ZUNlbGw8SlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lclByb3RvdHlwZT4oZ2xvYmFsRGF0YS5o
ZWFwKSkgSlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lclByb3RvdHlwZShnbG9iYWxEYXRhLCBn
bG9iYWxPYmplY3QsIHN0cnVjdHVyZSkpOwogICAgIH0KIAogICAgIHN0YXRpYyBjb25zdCBKU0M6
OkNsYXNzSW5mbyBzX2luZm87CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0T2JqLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcAkocmV2aXNpb24gOTE5MzkpCisrKyBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTQ5LDcgKzE0OSw3IEBAIHByaXZhdGU6CiBwdWJsaWM6CiAgICAgc3Rh
dGljIEpTVGVzdE9iakNvbnN0cnVjdG9yKiBjcmVhdGUoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIEpT
Qzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qp
CiAgICAgewotICAgICAgICByZXR1cm4gbmV3IChKU0M6OmFsbG9jYXRlQ2VsbDxKU1Rlc3RPYmpD
b25zdHJ1Y3Rvcj4oKmV4ZWMtPmhlYXAoKSkpIEpTVGVzdE9iakNvbnN0cnVjdG9yKGV4ZWMsIHN0
cnVjdHVyZSwgZ2xvYmFsT2JqZWN0KTsKKyAgICAgICAgcmV0dXJuIEpTQzo6dmFsaWRhdGVBbGxv
YzxKU1Rlc3RPYmpDb25zdHJ1Y3Rvcj4oZXhlYy0+Z2xvYmFsRGF0YSgpLCBuZXcgKEpTQzo6YWxs
b2NhdGVDZWxsPEpTVGVzdE9iakNvbnN0cnVjdG9yPigqZXhlYy0+aGVhcCgpKSkgSlNUZXN0T2Jq
Q29uc3RydWN0b3IoZXhlYywgc3RydWN0dXJlLCBnbG9iYWxPYmplY3QpKTsKICAgICB9CiAKICAg
ICB2aXJ0dWFsIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTQzo6RXhlY1N0YXRlKiwgY29uc3Qg
SlNDOjpJZGVudGlmaWVyJiwgSlNDOjpQcm9wZXJ0eVNsb3QmKTsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmgJKHJldmlz
aW9uIDkxOTM5KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdE9iai5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw3ICszNCw3IEBAIGNsYXNzIEpTVGVzdE9i
aiA6IHB1YmxpYyBKU0RPTVdyYXBwZXIgewogcHVibGljOgogICAgIHN0YXRpYyBKU1Rlc3RPYmoq
IGNyZWF0ZShKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBQYXNzUmVmUHRyPFRlc3RPYmo+IGltcGwpCiAgICAgewotICAgICAgICByZXR1
cm4gbmV3IChKU0M6OmFsbG9jYXRlQ2VsbDxKU1Rlc3RPYmo+KGdsb2JhbE9iamVjdC0+Z2xvYmFs
RGF0YSgpLmhlYXApKSBKU1Rlc3RPYmooc3RydWN0dXJlLCBnbG9iYWxPYmplY3QsIGltcGwpOwor
ICAgICAgICByZXR1cm4gSlNDOjp2YWxpZGF0ZUFsbG9jPEpTVGVzdE9iaj4oZ2xvYmFsT2JqZWN0
LT5nbG9iYWxEYXRhKCksIG5ldyAoSlNDOjphbGxvY2F0ZUNlbGw8SlNUZXN0T2JqPihnbG9iYWxP
YmplY3QtPmdsb2JhbERhdGEoKS5oZWFwKSkgSlNUZXN0T2JqKHN0cnVjdHVyZSwgZ2xvYmFsT2Jq
ZWN0LCBpbXBsKSk7CiAgICAgfQogCiAgICAgc3RhdGljIEpTQzo6SlNPYmplY3QqIGNyZWF0ZVBy
b3RvdHlwZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKQEAgLTc1LDcg
Kzc1LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6OkpTT2JqZWN0KiBzZWxmKEpTQzo6RXhl
Y1N0YXRlKiwgSlNDOjpKU0dsb2JhbE9iamVjdCopOwogICAgIHN0YXRpYyBKU1Rlc3RPYmpQcm90
b3R5cGUqIGNyZWF0ZShKU0M6OkpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNDOjpKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlKQogICAgIHsK
LSAgICAgICAgcmV0dXJuIG5ldyAoSlNDOjphbGxvY2F0ZUNlbGw8SlNUZXN0T2JqUHJvdG90eXBl
PihnbG9iYWxEYXRhLmhlYXApKSBKU1Rlc3RPYmpQcm90b3R5cGUoZ2xvYmFsRGF0YSwgZ2xvYmFs
T2JqZWN0LCBzdHJ1Y3R1cmUpOworICAgICAgICByZXR1cm4gSlNDOjp2YWxpZGF0ZUFsbG9jPEpT
VGVzdE9ialByb3RvdHlwZT4oZ2xvYmFsRGF0YSwgbmV3IChKU0M6OmFsbG9jYXRlQ2VsbDxKU1Rl
c3RPYmpQcm90b3R5cGU+KGdsb2JhbERhdGEuaGVhcCkpIEpTVGVzdE9ialByb3RvdHlwZShnbG9i
YWxEYXRhLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSkpOwogICAgIH0KIAogICAgIHN0YXRpYyBj
b25zdCBKU0M6OkNsYXNzSW5mbyBzX2luZm87CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmNwcAkocmV2aXNpb24gOTE5Mzkp
CisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2VyaWFs
aXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzEsNyArNzEs
NyBAQCBwcml2YXRlOgogcHVibGljOgogICAgIHN0YXRpYyBKU1Rlc3RTZXJpYWxpemVkU2NyaXB0
VmFsdWVJbnRlcmZhY2VDb25zdHJ1Y3RvciogY3JlYXRlKEpTQzo6RXhlY1N0YXRlKiBleGVjLCBK
U0M6OlN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
KQogICAgIHsKLSAgICAgICAgcmV0dXJuIG5ldyAoSlNDOjphbGxvY2F0ZUNlbGw8SlNUZXN0U2Vy
aWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlQ29uc3RydWN0b3I+KCpleGVjLT5oZWFwKCkpKSBK
U1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VDb25zdHJ1Y3RvcihleGVjLCBzdHJ1
Y3R1cmUsIGdsb2JhbE9iamVjdCk7CisgICAgICAgIHJldHVybiBKU0M6OnZhbGlkYXRlQWxsb2M8
SlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlQ29uc3RydWN0b3I+KGV4ZWMtPmds
b2JhbERhdGEoKSwgbmV3IChKU0M6OmFsbG9jYXRlQ2VsbDxKU1Rlc3RTZXJpYWxpemVkU2NyaXB0
VmFsdWVJbnRlcmZhY2VDb25zdHJ1Y3Rvcj4oKmV4ZWMtPmhlYXAoKSkpIEpTVGVzdFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZUludGVyZmFjZUNvbnN0cnVjdG9yKGV4ZWMsIHN0cnVjdHVyZSwgZ2xvYmFs
T2JqZWN0KSk7CiAgICAgfQogCiAgICAgdmlydHVhbCBib29sIGdldE93blByb3BlcnR5U2xvdChK
U0M6OkV4ZWNTdGF0ZSosIGNvbnN0IEpTQzo6SWRlbnRpZmllciYsIEpTQzo6UHJvcGVydHlTbG90
Jik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZUludGVyZmFjZS5oCShyZXZpc2lvbiA5MTkzOSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UuaAko
d29ya2luZyBjb3B5KQpAQCAtMzYsNyArMzYsNyBAQCBjbGFzcyBKU1Rlc3RTZXJpYWxpemVkU2Ny
aXB0VmFsdWVJbnRlcmZhCiBwdWJsaWM6CiAgICAgc3RhdGljIEpTVGVzdFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZUludGVyZmFjZSogY3JlYXRlKEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTRE9N
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFBhc3NSZWZQdHI8VGVzdFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZUludGVyZmFjZT4gaW1wbCkKICAgICB7Ci0gICAgICAgIHJldHVybiBuZXcgKEpTQzo6
YWxsb2NhdGVDZWxsPEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZT4oZ2xvYmFs
T2JqZWN0LT5nbG9iYWxEYXRhKCkuaGVhcCkpIEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUlu
dGVyZmFjZShzdHJ1Y3R1cmUsIGdsb2JhbE9iamVjdCwgaW1wbCk7CisgICAgICAgIHJldHVybiBK
U0M6OnZhbGlkYXRlQWxsb2M8SlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlPihn
bG9iYWxPYmplY3QtPmdsb2JhbERhdGEoKSwgbmV3IChKU0M6OmFsbG9jYXRlQ2VsbDxKU1Rlc3RT
ZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2U+KGdsb2JhbE9iamVjdC0+Z2xvYmFsRGF0YSgp
LmhlYXApKSBKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2Uoc3RydWN0dXJlLCBn
bG9iYWxPYmplY3QsIGltcGwpKTsKICAgICB9CiAKICAgICBzdGF0aWMgSlNDOjpKU09iamVjdCog
Y3JlYXRlUHJvdG90eXBlKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU0dsb2JhbE9iamVjdCopOwpA
QCAtNjgsNyArNjgsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SlNPYmplY3QqIHNlbGYo
SlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTR2xvYmFsT2JqZWN0Kik7CiAgICAgc3RhdGljIEpTVGVz
dFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZVByb3RvdHlwZSogY3JlYXRlKEpTQzo6SlNH
bG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAgICAgewotICAgICAgICByZXR1cm4gbmV3IChK
U0M6OmFsbG9jYXRlQ2VsbDxKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VQcm90
b3R5cGU+KGdsb2JhbERhdGEuaGVhcCkpIEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVy
ZmFjZVByb3RvdHlwZShnbG9iYWxEYXRhLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSk7CisgICAg
ICAgIHJldHVybiBKU0M6OnZhbGlkYXRlQWxsb2M8SlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVl
SW50ZXJmYWNlUHJvdG90eXBlPihnbG9iYWxEYXRhLCBuZXcgKEpTQzo6YWxsb2NhdGVDZWxsPEpT
VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZVByb3RvdHlwZT4oZ2xvYmFsRGF0YS5o
ZWFwKSkgSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlUHJvdG90eXBlKGdsb2Jh
bERhdGEsIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlKSk7CiAgICAgfQogCiAgICAgc3RhdGljIGNv
bnN0IEpTQzo6Q2xhc3NJbmZvIHNfaW5mbzsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9y
dW50aW1lX2FycmF5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRp
bWVfYXJyYXkuaAkocmV2aXNpb24gOTE5MzkpCisrKyBTb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVu
dGltZV9hcnJheS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw3ICszNSw3IEBAIGNsYXNzIFJ1bnRp
bWVBcnJheSA6IHB1YmxpYyBKU0FycmF5IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUnVudGltZUFy
cmF5KiBjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBCaW5kaW5nczo6QXJyYXkqIGFycmF5KQogICAg
IHsKLSAgICAgICAgcmV0dXJuIG5ldyAoYWxsb2NhdGVDZWxsPFJ1bnRpbWVBcnJheT4oKmV4ZWMt
PmhlYXAoKSkpIFJ1bnRpbWVBcnJheShleGVjLCBhcnJheSk7CisgICAgICAgIHJldHVybiB2YWxp
ZGF0ZUFsbG9jPFJ1bnRpbWVBcnJheT4oZXhlYy0+Z2xvYmFsRGF0YSgpLCBuZXcgKGFsbG9jYXRl
Q2VsbDxSdW50aW1lQXJyYXk+KCpleGVjLT5oZWFwKCkpKSBSdW50aW1lQXJyYXkoZXhlYywgYXJy
YXkpKTsKICAgICB9CiAKICAgICB0eXBlZGVmIEJpbmRpbmdzOjpBcnJheSBCaW5kaW5nc0FycmF5
OwpJbmRleDogU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfbWV0aG9kLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfbWV0aG9kLmgJKHJldmlzaW9uIDkx
OTM5KQorKysgU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfbWV0aG9kLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTM3LDcgKzM3LDcgQEAgY2xhc3MgUnVudGltZU1ldGhvZCA6IHB1YmxpYyBJbnRl
cm5hbEZ1bgogcHVibGljOgogICAgIHN0YXRpYyBSdW50aW1lTWV0aG9kKiBjcmVhdGUoRXhlY1N0
YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSwgY29uc3QgSWRlbnRpZmllciYgbmFtZSwgQmluZGluZ3M6Ok1ldGhvZExpc3QmIG1ldGhv
ZExpc3QpCiAgICAgewotICAgICAgICByZXR1cm4gbmV3IChhbGxvY2F0ZUNlbGw8UnVudGltZU1l
dGhvZD4oKmV4ZWMtPmhlYXAoKSkpIFJ1bnRpbWVNZXRob2QoZXhlYywgZ2xvYmFsT2JqZWN0LCBz
dHJ1Y3R1cmUsIG5hbWUsIG1ldGhvZExpc3QpOworICAgICAgICByZXR1cm4gdmFsaWRhdGVBbGxv
YzxSdW50aW1lTWV0aG9kPihleGVjLT5nbG9iYWxEYXRhKCksIG5ldyAoYWxsb2NhdGVDZWxsPFJ1
bnRpbWVNZXRob2Q+KCpleGVjLT5oZWFwKCkpKSBSdW50aW1lTWV0aG9kKGV4ZWMsIGdsb2JhbE9i
amVjdCwgc3RydWN0dXJlLCBuYW1lLCBtZXRob2RMaXN0KSk7CiAgICAgfQogCiAgICAgQmluZGlu
Z3M6Ok1ldGhvZExpc3QqIG1ldGhvZHMoKSBjb25zdCB7IHJldHVybiBfbWV0aG9kTGlzdC5nZXQo
KTsgfQpJbmRleDogU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfb2JqZWN0LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfb2JqZWN0LmgJKHJldmlzaW9u
IDkxOTM5KQorKysgU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfb2JqZWN0LmgJKHdvcmtp
bmcgY29weSkKQEAgLTM3LDcgKzM3LDcgQEAgY2xhc3MgUnVudGltZU9iamVjdCA6IHB1YmxpYyBK
U09iamVjdFdpdAogcHVibGljOgogICAgIHN0YXRpYyBSdW50aW1lT2JqZWN0KiBjcmVhdGUoRXhl
Y1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSwgUGFzc1JlZlB0cjxJbnN0YW5jZT4gaW5zdGFuY2UpCiAgICAgewotICAgICAgICBy
ZXR1cm4gbmV3IChhbGxvY2F0ZUNlbGw8UnVudGltZU9iamVjdD4oKmV4ZWMtPmhlYXAoKSkpIFJ1
bnRpbWVPYmplY3QoZXhlYywgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIGluc3RhbmNlKTsKKyAg
ICAgICAgcmV0dXJuIHZhbGlkYXRlQWxsb2M8UnVudGltZU9iamVjdD4oZXhlYy0+Z2xvYmFsRGF0
YSgpLCBuZXcgKGFsbG9jYXRlQ2VsbDxSdW50aW1lT2JqZWN0PigqZXhlYy0+aGVhcCgpKSkgUnVu
dGltZU9iamVjdChleGVjLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgaW5zdGFuY2UpKTsKICAg
ICB9CiAKICAgICB2aXJ0dWFsIH5SdW50aW1lT2JqZWN0KCk7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9icmlkZ2UvYy9DUnVudGltZU9iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2JyaWRnZS9jL0NSdW50aW1lT2JqZWN0LmgJKHJldmlzaW9uIDkxOTM5KQorKysgU291cmNlL1dl
YkNvcmUvYnJpZGdlL2MvQ1J1bnRpbWVPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtMzksNyAr
MzksNyBAQCBjbGFzcyBDUnVudGltZU9iamVjdCA6IHB1YmxpYyBSdW50aW1lT2JqCiBwdWJsaWM6
CiAgICAgc3RhdGljIENSdW50aW1lT2JqZWN0KiBjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQYXNzUmVmUHRyPENJbnN0YW5jZT4gaW5zdGFuY2Up
CiAgICAgewotICAgICAgICByZXR1cm4gbmV3IChhbGxvY2F0ZUNlbGw8Q1J1bnRpbWVPYmplY3Q+
KCpleGVjLT5oZWFwKCkpKSBDUnVudGltZU9iamVjdChleGVjLCBnbG9iYWxPYmplY3QsIGluc3Rh
bmNlKTsKKyAgICAgICAgcmV0dXJuIHZhbGlkYXRlQWxsb2M8Q1J1bnRpbWVPYmplY3Q+KGV4ZWMt
Pmdsb2JhbERhdGEoKSwgbmV3IChhbGxvY2F0ZUNlbGw8Q1J1bnRpbWVPYmplY3Q+KCpleGVjLT5o
ZWFwKCkpKSBDUnVudGltZU9iamVjdChleGVjLCBnbG9iYWxPYmplY3QsIGluc3RhbmNlKSk7CiAg
ICAgfQogCiAgICAgdmlydHVhbCB+Q1J1bnRpbWVPYmplY3QoKTsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2JyaWRnZS9jL2NfaW5zdGFuY2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2JyaWRnZS9jL2NfaW5zdGFuY2UuY3BwCShyZXZpc2lvbiA5MTkzOSkKKysrIFNvdXJjZS9XZWJD
b3JlL2JyaWRnZS9jL2NfaW5zdGFuY2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTMsNyArMTEz
LDcgQEAgY2xhc3MgQ1J1bnRpbWVNZXRob2QgOiBwdWJsaWMgUnVudGltZU1ldAogcHVibGljOgog
ICAgIHN0YXRpYyBDUnVudGltZU1ldGhvZCogY3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgSWRlbnRpZmllciYgbmFtZSwgQmluZGluZ3M6
Ok1ldGhvZExpc3QmIGxpc3QpCiAgICAgewotICAgICAgICByZXR1cm4gbmV3IChhbGxvY2F0ZUNl
bGw8Q1J1bnRpbWVNZXRob2Q+KCpleGVjLT5oZWFwKCkpKSBDUnVudGltZU1ldGhvZChleGVjLCBn
bG9iYWxPYmplY3QsIG5hbWUsIGxpc3QpOworICAgICAgICByZXR1cm4gdmFsaWRhdGVBbGxvYzxD
UnVudGltZU1ldGhvZD4oZXhlYy0+Z2xvYmFsRGF0YSgpLCBuZXcgKGFsbG9jYXRlQ2VsbDxDUnVu
dGltZU1ldGhvZD4oKmV4ZWMtPmhlYXAoKSkpIENSdW50aW1lTWV0aG9kKGV4ZWMsIGdsb2JhbE9i
amVjdCwgbmFtZSwgbGlzdCkpOwogICAgIH0KIAogICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0
ZVN0cnVjdHVyZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTVmFsdWUgcHJvdG90eXBlKQpJ
bmRleDogU291cmNlL1dlYkNvcmUvYnJpZGdlL2puaS9qc2MvSmF2YUluc3RhbmNlSlNDLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9icmlkZ2Uvam5pL2pzYy9KYXZhSW5zdGFuY2VK
U0MuY3BwCShyZXZpc2lvbiA5MTkzOSkKKysrIFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9qbmkvanNj
L0phdmFJbnN0YW5jZUpTQy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExOCw3ICsxMTgsNyBAQCBj
bGFzcyBKYXZhUnVudGltZU1ldGhvZCA6IHB1YmxpYyBSdW50aW1lCiBwdWJsaWM6CiAgICAgc3Rh
dGljIEphdmFSdW50aW1lTWV0aG9kKiBjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBJZGVudGlmaWVyJiBuYW1lLCBCaW5kaW5nczo6TWV0
aG9kTGlzdCYgbGlzdCkKICAgICB7Ci0gICAgICAgIHJldHVybiBuZXcgKGFsbG9jYXRlQ2VsbDxK
YXZhUnVudGltZU1ldGhvZD4oKmV4ZWMtPmhlYXAoKSkpIEphdmFSdW50aW1lTWV0aG9kKGV4ZWMs
IGdsb2JhbE9iamVjdCwgbmFtZSwgbGlzdCk7CisgICAgICAgIHJldHVybiB2YWxpZGF0ZUFsbG9j
PEphdmFSdW50aW1lTWV0aG9kPihleGVjLT5nbG9iYWxEYXRhKCksIG5ldyAoYWxsb2NhdGVDZWxs
PEphdmFSdW50aW1lTWV0aG9kPigqZXhlYy0+aGVhcCgpKSkgSmF2YVJ1bnRpbWVNZXRob2QoZXhl
YywgZ2xvYmFsT2JqZWN0LCBuYW1lLCBsaXN0KSk7CiAgICAgfQogCiAgICAgc3RhdGljIFN0cnVj
dHVyZSogY3JlYXRlU3RydWN0dXJlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNWYWx1ZSBw
cm90b3R5cGUpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9icmlkZ2Uvam5pL2pzYy9KYXZhUnVudGlt
ZU9iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9qbmkvanNjL0ph
dmFSdW50aW1lT2JqZWN0LmgJKHJldmlzaW9uIDkxOTM5KQorKysgU291cmNlL1dlYkNvcmUvYnJp
ZGdlL2puaS9qc2MvSmF2YVJ1bnRpbWVPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtMzcsNyAr
MzcsNyBAQCBjbGFzcyBKYXZhUnVudGltZU9iamVjdCA6IHB1YmxpYyBSdW50aW1lCiBwdWJsaWM6
CiAgICAgc3RhdGljIEphdmFSdW50aW1lT2JqZWN0KiBjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQYXNzUmVmUHRyPEphdmFJbnN0YW5jZT4gamF2
YUluc3QpCiAgICAgewotICAgICAgICByZXR1cm4gbmV3IChhbGxvY2F0ZUNlbGw8SmF2YVJ1bnRp
bWVPYmplY3Q+KCpleGVjLT5oZWFwKCkpKSBKYXZhUnVudGltZU9iamVjdChleGVjLCBnbG9iYWxP
YmplY3QsIGphdmFJbnN0KTsKKyAgICAgICAgcmV0dXJuIHZhbGlkYXRlQWxsb2M8SmF2YVJ1bnRp
bWVPYmplY3Q+KGV4ZWMtPmdsb2JhbERhdGEoKSwgbmV3IChhbGxvY2F0ZUNlbGw8SmF2YVJ1bnRp
bWVPYmplY3Q+KCpleGVjLT5oZWFwKCkpKSBKYXZhUnVudGltZU9iamVjdChleGVjLCBnbG9iYWxP
YmplY3QsIGphdmFJbnN0KSk7CiAgICAgfQogCiAgICAgdmlydHVhbCB+SmF2YVJ1bnRpbWVPYmpl
Y3QoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL09iakNSdW50aW1lT2JqZWN0
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvT2JqQ1J1bnRpbWVP
YmplY3QuaAkocmV2aXNpb24gOTE5MzkpCisrKyBTb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9P
YmpDUnVudGltZU9iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw3ICszNyw3IEBAIGNsYXNz
IE9iakNSdW50aW1lT2JqZWN0IDogcHVibGljIFJ1bnRpbWUKIHB1YmxpYzoKICAgICBzdGF0aWMg
T2JqQ1J1bnRpbWVPYmplY3QqIGNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIFBhc3NSZWZQdHI8T2JqY0luc3RhbmNlPiBpbnN0KQogICAgIHsKLSAg
ICAgICAgcmV0dXJuIG5ldyAoYWxsb2NhdGVDZWxsPE9iakNSdW50aW1lT2JqZWN0PigqZXhlYy0+
aGVhcCgpKSkgT2JqQ1J1bnRpbWVPYmplY3QoZXhlYywgZ2xvYmFsT2JqZWN0LCBpbnN0KTsKKyAg
ICAgICAgcmV0dXJuIHZhbGlkYXRlQWxsb2M8T2JqQ1J1bnRpbWVPYmplY3Q+KGV4ZWMtPmdsb2Jh
bERhdGEoKSwgbmV3IChhbGxvY2F0ZUNlbGw8T2JqQ1J1bnRpbWVPYmplY3Q+KCpleGVjLT5oZWFw
KCkpKSBPYmpDUnVudGltZU9iamVjdChleGVjLCBnbG9iYWxPYmplY3QsIGluc3QpKTsKICAgICB9
CiAKICAgICB2aXJ0dWFsIH5PYmpDUnVudGltZU9iamVjdCgpOwpJbmRleDogU291cmNlL1dlYkNv
cmUvYnJpZGdlL29iamMvb2JqY19pbnN0YW5jZS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9icmlkZ2Uvb2JqYy9vYmpjX2luc3RhbmNlLm1tCShyZXZpc2lvbiA5MTkzOSkKKysrIFNv
dXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfaW5zdGFuY2UubW0JKHdvcmtpbmcgY29weSkK
QEAgLTE3NCw3ICsxNzQsNyBAQCBjbGFzcyBPYmpDUnVudGltZU1ldGhvZCA6IHB1YmxpYyBSdW50
aW1lCiBwdWJsaWM6CiAgICAgc3RhdGljIE9iakNSdW50aW1lTWV0aG9kKiBjcmVhdGUoRXhlY1N0
YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBJZGVudGlmaWVy
JiBuYW1lLCBCaW5kaW5nczo6TWV0aG9kTGlzdCYgbGlzdCkKICAgICB7Ci0gICAgICAgIHJldHVy
biBuZXcgKGFsbG9jYXRlQ2VsbDxPYmpDUnVudGltZU1ldGhvZD4oKmV4ZWMtPmhlYXAoKSkpIE9i
akNSdW50aW1lTWV0aG9kKGV4ZWMsIGdsb2JhbE9iamVjdCwgbmFtZSwgbGlzdCk7CisgICAgICAg
IHJldHVybiB2YWxpZGF0ZUFsbG9jPE9iakNSdW50aW1lTWV0aG9kPihleGVjLT5nbG9iYWxEYXRh
KCksIG5ldyAoYWxsb2NhdGVDZWxsPE9iakNSdW50aW1lTWV0aG9kPigqZXhlYy0+aGVhcCgpKSkg
T2JqQ1J1bnRpbWVNZXRob2QoZXhlYywgZ2xvYmFsT2JqZWN0LCBuYW1lLCBsaXN0KSk7CiAgICAg
fQogCiAgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTR2xvYmFsRGF0YSYg
Z2xvYmFsRGF0YSwgSlNWYWx1ZSBwcm90b3R5cGUpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9icmlk
Z2Uvb2JqYy9vYmpjX3J1bnRpbWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9icmlk
Z2Uvb2JqYy9vYmpjX3J1bnRpbWUuaAkocmV2aXNpb24gOTE5MzkpCisrKyBTb3VyY2UvV2ViQ29y
ZS9icmlkZ2Uvb2JqYy9vYmpjX3J1bnRpbWUuaAkod29ya2luZyBjb3B5KQpAQCAtOTQsNyArOTQs
NyBAQCBjbGFzcyBPYmpjRmFsbGJhY2tPYmplY3RJbXAgOiBwdWJsaWMgSlNPCiBwdWJsaWM6CiAg
ICAgc3RhdGljIE9iamNGYWxsYmFja09iamVjdEltcCogY3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywg
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgT2JqY0luc3RhbmNlKiBpbnN0YW5jZSwgY29u
c3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lKQogICAgIHsKLSAgICAgICAgcmV0dXJuIG5ldyAo
YWxsb2NhdGVDZWxsPE9iamNGYWxsYmFja09iamVjdEltcD4oKmV4ZWMtPmhlYXAoKSkpIE9iamNG
YWxsYmFja09iamVjdEltcChleGVjLCBnbG9iYWxPYmplY3QsIGluc3RhbmNlLCBwcm9wZXJ0eU5h
bWUpOworICAgICAgICByZXR1cm4gdmFsaWRhdGVBbGxvYzxPYmpjRmFsbGJhY2tPYmplY3RJbXA+
KGV4ZWMtPmdsb2JhbERhdGEoKSwgbmV3IChhbGxvY2F0ZUNlbGw8T2JqY0ZhbGxiYWNrT2JqZWN0
SW1wPigqZXhlYy0+aGVhcCgpKSkgT2JqY0ZhbGxiYWNrT2JqZWN0SW1wKGV4ZWMsIGdsb2JhbE9i
amVjdCwgaW5zdGFuY2UsIHByb3BlcnR5TmFtZSkpOwogICAgIH0KIAogICAgIHN0YXRpYyBjb25z
dCBDbGFzc0luZm8gc19pbmZvOwpJbmRleDogU291cmNlL1dlYkNvcmUvYnJpZGdlL3F0L3F0X2lu
c3RhbmNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9icmlkZ2UvcXQvcXRfaW5z
dGFuY2UuY3BwCShyZXZpc2lvbiA5MTkzOSkKKysrIFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9xdC9x
dF9pbnN0YW5jZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUyLDcgKzUyLDcgQEAgY2xhc3MgUXRS
dW50aW1lT2JqZWN0IDogcHVibGljIFJ1bnRpbWVPYgogcHVibGljOgogICAgIHN0YXRpYyBRdFJ1
bnRpbWVPYmplY3QqIGNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIFBhc3NSZWZQdHI8SW5zdGFuY2U+IGluc3RhbmNlKQogICAgIHsKLSAgICAgICAg
cmV0dXJuIG5ldyAoYWxsb2NhdGVDZWxsPFF0UnVudGltZU9iamVjdD4oKmV4ZWMtPmhlYXAoKSkp
IFF0UnVudGltZU9iamVjdChleGVjLCBnbG9iYWxPYmplY3QsIGluc3RhbmNlKTsKKyAgICAgICAg
cmV0dXJuIHZhbGlkYXRlQWxsb2M8UXRSdW50aW1lT2JqZWN0PihleGVjLT5nbG9iYWxEYXRhKCks
IG5ldyAoYWxsb2NhdGVDZWxsPFF0UnVudGltZU9iamVjdD4oKmV4ZWMtPmhlYXAoKSkpIFF0UnVu
dGltZU9iamVjdChleGVjLCBnbG9iYWxPYmplY3QsIGluc3RhbmNlKSk7CiAgICAgfQogICAgIAog
ICAgIHN0YXRpYyBjb25zdCBDbGFzc0luZm8gc19pbmZvOwpJbmRleDogU291cmNlL1dlYkNvcmUv
YnJpZGdlL3F0L3F0X3BpeG1hcHJ1bnRpbWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2JyaWRnZS9xdC9xdF9waXhtYXBydW50aW1lLmNwcAkocmV2aXNpb24gOTE5MzkpCisrKyBT
b3VyY2UvV2ViQ29yZS9icmlkZ2UvcXQvcXRfcGl4bWFwcnVudGltZS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTIwMCw3ICsyMDAsNyBAQCBjbGFzcyBRdFBpeG1hcFJ1bnRpbWVPYmplY3QgOiBwdWJs
aWMgUnVuCiBwdWJsaWM6CiAgICAgc3RhdGljIFF0UGl4bWFwUnVudGltZU9iamVjdCogY3JlYXRl
KEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUGFzc1JlZlB0
cjxJbnN0YW5jZT4gaW5zdGFuY2UpCiAgICAgewotICAgICAgICByZXR1cm4gbmV3IChhbGxvY2F0
ZUNlbGw8UXRQaXhtYXBSdW50aW1lT2JqZWN0PigqZXhlYy0+aGVhcCgpKSkgUXRQaXhtYXBSdW50
aW1lT2JqZWN0KGV4ZWMsIGdsb2JhbE9iamVjdCwgaW5zdGFuY2UpOworICAgICAgICByZXR1cm4g
dmFsaWRhdGVBbGxvYzxRdFBpeG1hcFJ1bnRpbWVPYmplY3Q+KGV4ZWMtPmdsb2JhbERhdGEoKSwg
bmV3IChhbGxvY2F0ZUNlbGw8UXRQaXhtYXBSdW50aW1lT2JqZWN0PigqZXhlYy0+aGVhcCgpKSkg
UXRQaXhtYXBSdW50aW1lT2JqZWN0KGV4ZWMsIGdsb2JhbE9iamVjdCwgaW5zdGFuY2UpKTsKICAg
ICB9CiAKICAgICBzdGF0aWMgY29uc3QgQ2xhc3NJbmZvIHNfaW5mbzsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2JyaWRnZS9xdC9xdF9ydW50aW1lLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvYnJpZGdlL3F0L3F0X3J1bnRpbWUuaAkocmV2aXNpb24gOTE5MzkpCisrKyBTb3VyY2UvV2Vi
Q29yZS9icmlkZ2UvcXQvcXRfcnVudGltZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNTIsNyArMTUy
LDcgQEAgY2xhc3MgUXRSdW50aW1lTWV0YU1ldGhvZCA6IHB1YmxpYyBRdFJ1bgogcHVibGljOgog
ICAgIHN0YXRpYyBRdFJ1bnRpbWVNZXRhTWV0aG9kKiBjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBj
b25zdCBJZGVudGlmaWVyJiBuLCBQYXNzUmVmUHRyPFF0SW5zdGFuY2U+IGluc3QsIGludCBpbmRl
eCwgY29uc3QgUUJ5dGVBcnJheSYgc2lnbmF0dXJlLCBib29sIGFsbG93UHJpdmF0ZSkKICAgICB7
Ci0gICAgICAgIHJldHVybiBuZXcgKGFsbG9jYXRlQ2VsbDxRdFJ1bnRpbWVNZXRhTWV0aG9kPigq
ZXhlYy0+aGVhcCgpKSkgUXRSdW50aW1lTWV0YU1ldGhvZChleGVjLCBuLCBpbnN0LCBpbmRleCwg
c2lnbmF0dXJlLCBhbGxvd1ByaXZhdGUpOworICAgICAgICByZXR1cm4gdmFsaWRhdGVBbGxvYzxR
dFJ1bnRpbWVNZXRhTWV0aG9kPihleGVjLT5nbG9iYWxEYXRhKCksIG5ldyAoYWxsb2NhdGVDZWxs
PFF0UnVudGltZU1ldGFNZXRob2Q+KCpleGVjLT5oZWFwKCkpKSBRdFJ1bnRpbWVNZXRhTWV0aG9k
KGV4ZWMsIG4sIGluc3QsIGluZGV4LCBzaWduYXR1cmUsIGFsbG93UHJpdmF0ZSkpOwogICAgIH0K
IAogICAgIHZpcnR1YWwgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoRXhlY1N0YXRlICosIGNvbnN0
IElkZW50aWZpZXImLCBQcm9wZXJ0eVNsb3QmKTsKQEAgLTE4MCw3ICsxODAsNyBAQCBjbGFzcyBR
dFJ1bnRpbWVDb25uZWN0aW9uTWV0aG9kIDogcHVibGljCiBwdWJsaWM6CiAgICAgc3RhdGljIFF0
UnVudGltZUNvbm5lY3Rpb25NZXRob2QqIGNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElk
ZW50aWZpZXImIG4sIGJvb2wgaXNDb25uZWN0LCBQYXNzUmVmUHRyPFF0SW5zdGFuY2U+IGluc3Qs
IGludCBpbmRleCwgY29uc3QgUUJ5dGVBcnJheSYgc2lnbmF0dXJlKQogICAgIHsKLSAgICAgICAg
cmV0dXJuIG5ldyAoYWxsb2NhdGVDZWxsPFF0UnVudGltZUNvbm5lY3Rpb25NZXRob2Q+KCpleGVj
LT5oZWFwKCkpKSBRdFJ1bnRpbWVDb25uZWN0aW9uTWV0aG9kKGV4ZWMsIG4sIGlzQ29ubmVjdCwg
aW5zdCwgaW5kZXgsIHNpZ25hdHVyZSk7CisgICAgICAgIHJldHVybiB2YWxpZGF0ZUFsbG9jPFF0
UnVudGltZUNvbm5lY3Rpb25NZXRob2Q+KGV4ZWMtPmdsb2JhbERhdGEoKSwgbmV3IChhbGxvY2F0
ZUNlbGw8UXRSdW50aW1lQ29ubmVjdGlvbk1ldGhvZD4oKmV4ZWMtPmhlYXAoKSkpIFF0UnVudGlt
ZUNvbm5lY3Rpb25NZXRob2QoZXhlYywgbiwgaXNDb25uZWN0LCBpbnN0LCBpbmRleCwgc2lnbmF0
dXJlKSk7CiAgICAgfQogCiAgICAgdmlydHVhbCBib29sIGdldE93blByb3BlcnR5U2xvdChFeGVj
U3RhdGUgKiwgY29uc3QgSWRlbnRpZmllciYsIFByb3BlcnR5U2xvdCYpOwpJbmRleDogU291cmNl
L1dlYktpdDIvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxv
ZwkocmV2aXNpb24gOTE5NDApCisrKyBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHdvcmtpbmcg
Y29weSkKQEAgLTEsMyArMSwyMiBAQAorMjAxMS0wNy0yOCAgTWFyayBIYWhuZW5iZXJnICA8bWhh
aG5lbmJlcmdAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBjaGVja3MgdG8gZW5zdXJlIGFsbG9j
YXRpb24gZG9lcyBub3QgdGFrZSBwbGFjZSBkdXJpbmcgaW5pdGlhbGl6YXRpb24gb2YgR0MtbWFu
YWdlZCBvYmplY3RzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD02NTI4OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIEFkZGVkIHRoZSB2YWxpZGF0ZUFsbG9jIGNhbGwgdG8gY2hlY2sgdGhlIGluaXRpYWxpemlu
Z09iamVjdCBmbGFnIGluIHRoZSBKU0dsb2JhbERhdGEgb2JqZWN0IGFuZCAKKyAgICAgICAgdG8g
dGhlbiBjbGVhciBzYWlkIGZsYWcuICBObyBmbGFnIGNoZWNraW5nLCBzZXR0aW5nLCBvciBjbGVh
cmluZyBpcyBkb25lIHVubGVzcyBHQ19WQUxJREFUSU9OIGlzIGVuYWJsZWQuICAKKyAgICAgICAg
QWxzbyBhZGRlZCBzcGVjaWFsIGNhc2VzIHdoZXJlIHRoZSBmbGFnIGlzIGNsZWFyZWQgYW5kIHRo
ZSByZXNldCBhcm91bmQgbG9jYXRpb25zIHdoZXJlIG5lc3RlZCAKKyAgICAgICAgYWxsb2NhdGlv
bnMgb2NjdXIgaW4gdGhlIGNvbnN0cnVjdG9ycy4gIFRoaXMgaXMgbW9zdGx5IHRlbXBvcmFyeSBm
b3Igbm93IHRvIGdldCBiYWNrIHRvIGEgd29ya2luZyBzdGF0ZSAKKyAgICAgICAgd2l0aG91dCBo
YXZpbmcgdG8gaG9pc3QgYWxsIG9mIHRob3NlIGFsb2NhdGlvbnMgb3V0IG9mIHRoZSBjb25zdHJ1
Y3RvcnMuICBUaGlzIGlzIHBhcnQgb2YgYSAKKyAgICAgICAgbGFyZ2VyIHJlZmFjdG9yaW5nIHRv
IG1ha2Ugb3VyIG9iamVjdCBhbGxvY2F0aW9uIGFuZCBpbml0aWFsaXphdGlvbiBtb3JlIEdDLWZy
aWVuZGx5L3NhZmUuIAorCisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL0pT
TlBNZXRob2QuaDoKKyAgICAgICAgKFdlYktpdDo6SlNOUE1ldGhvZDo6Y3JlYXRlKToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvSlNOUE9iamVjdC5oOgorICAgICAgICAo
V2ViS2l0OjpKU05QT2JqZWN0OjpjcmVhdGUpOgorCiAyMDExLTA3LTI2ICBDaHJpcyBGbGVpemFj
aCAgPGNmbGVpemFjaEBhcHBsZS5jb20+CiAKICAgICAgICAgUkVHUkVTU0lPTiAoU2FmYXJpIDUu
MSk6IEphdmFTY3JpcHQgZGlhbG9ncyBub3QgdXNhYmxlIHdpdGggVm9pY2VPdmVyCkluZGV4OiBT
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvSlNOUE1ldGhvZC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9K
U05QTWV0aG9kLmgJKHJldmlzaW9uIDkxOTM5KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9QbHVnaW5zL05ldHNjYXBlL0pTTlBNZXRob2QuaAkod29ya2luZyBjb3B5KQpAQCAtMzcsNyAr
MzcsNyBAQCBjbGFzcyBKU05QTWV0aG9kIDogcHVibGljIEpTQzo6SW50ZXJuYWxGCiBwdWJsaWM6
CiAgICAgc3RhdGljIEpTTlBNZXRob2QqIGNyZWF0ZShKU0M6OkV4ZWNTdGF0ZSogZXhlYywgSlND
OjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBKU0M6OklkZW50aWZpZXImIGlk
ZW50LCBOUElkZW50aWZpZXIgbnBJZGVudCkKICAgICB7Ci0gICAgICAgIHJldHVybiBuZXcgKEpT
Qzo6YWxsb2NhdGVDZWxsPEpTTlBNZXRob2Q+KCpleGVjLT5oZWFwKCkpKSBKU05QTWV0aG9kKGV4
ZWMsIGdsb2JhbE9iamVjdCwgaWRlbnQsIG5wSWRlbnQpOworICAgICAgICByZXR1cm4gSlNDOjp2
YWxpZGF0ZUFsbG9jPEpTTlBNZXRob2Q+KGV4ZWMtPmdsb2JhbERhdGEoKSwgbmV3IChKU0M6OmFs
bG9jYXRlQ2VsbDxKU05QTWV0aG9kPigqZXhlYy0+aGVhcCgpKSkgSlNOUE1ldGhvZChleGVjLCBn
bG9iYWxPYmplY3QsIGlkZW50LCBucElkZW50KSk7CiAgICAgfQogCiAgICAgc3RhdGljIGNvbnN0
IEpTQzo6Q2xhc3NJbmZvIHNfaW5mbzsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
UGx1Z2lucy9OZXRzY2FwZS9KU05QT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL0pTTlBPYmplY3QuaAkocmV2aXNpb24gOTE5
MzkpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvSlNOUE9i
amVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC00MSw3ICs0MSw3IEBAIGNsYXNzIEpTTlBPYmplY3Qg
OiBwdWJsaWMgSlNDOjpKU09iamVjdFcKIHB1YmxpYzoKICAgICBzdGF0aWMgSlNOUE9iamVjdCog
Y3JlYXRlKEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgTlBSdW50aW1lT2JqZWN0
TWFwKiBvYmplY3RNYXAsIE5QT2JqZWN0KiBucE9iamVjdCkKICAgICB7Ci0gICAgICAgIHJldHVy
biBuZXcgKEpTQzo6YWxsb2NhdGVDZWxsPEpTTlBPYmplY3Q+KGdsb2JhbE9iamVjdC0+Z2xvYmFs
RGF0YSgpLmhlYXApKSBKU05QT2JqZWN0KGdsb2JhbE9iamVjdCwgb2JqZWN0TWFwLCBucE9iamVj
dCk7CisgICAgICAgIHJldHVybiBKU0M6OnZhbGlkYXRlQWxsb2M8SlNOUE9iamVjdD4oZ2xvYmFs
T2JqZWN0LT5nbG9iYWxEYXRhKCksIG5ldyAoSlNDOjphbGxvY2F0ZUNlbGw8SlNOUE9iamVjdD4o
Z2xvYmFsT2JqZWN0LT5nbG9iYWxEYXRhKCkuaGVhcCkpIEpTTlBPYmplY3QoZ2xvYmFsT2JqZWN0
LCBvYmplY3RNYXAsIG5wT2JqZWN0KSk7CiAgICAgfQogCiAgICAgfkpTTlBPYmplY3QoKTsKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L21hYy9DaGFuZ2VMb2cJKHJldmlzaW9uIDkxOTQwKQorKysgU291cmNlL1dlYktpdC9tYWMv
Q2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjIgQEAKKzIwMTEtMDctMjggIE1h
cmsgSGFobmVuYmVyZyAgPG1oYWhuZW5iZXJnQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgY2hl
Y2tzIHRvIGVuc3VyZSBhbGxvY2F0aW9uIGRvZXMgbm90IHRha2UgcGxhY2UgZHVyaW5nIGluaXRp
YWxpemF0aW9uIG9mIEdDLW1hbmFnZWQgb2JqZWN0cworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjUyODgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBBZGRlZCB0aGUgdmFsaWRhdGVBbGxvYyBjYWxsIHRvIGNo
ZWNrIHRoZSBpbml0aWFsaXppbmdPYmplY3QgZmxhZyBpbiB0aGUgSlNHbG9iYWxEYXRhIG9iamVj
dCBhbmQgCisgICAgICAgIHRvIHRoZW4gY2xlYXIgc2FpZCBmbGFnLiAgTm8gZmxhZyBjaGVja2lu
Zywgc2V0dGluZywgb3IgY2xlYXJpbmcgaXMgZG9uZSB1bmxlc3MgR0NfVkFMSURBVElPTiBpcyBl
bmFibGVkLiAgCisgICAgICAgIEFsc28gYWRkZWQgc3BlY2lhbCBjYXNlcyB3aGVyZSB0aGUgZmxh
ZyBpcyBjbGVhcmVkIGFuZCB0aGUgcmVzZXQgYXJvdW5kIGxvY2F0aW9ucyB3aGVyZSBuZXN0ZWQg
CisgICAgICAgIGFsbG9jYXRpb25zIG9jY3VyIGluIHRoZSBjb25zdHJ1Y3RvcnMuICBUaGlzIGlz
IG1vc3RseSB0ZW1wb3JhcnkgZm9yIG5vdyB0byBnZXQgYmFjayB0byBhIHdvcmtpbmcgc3RhdGUg
CisgICAgICAgIHdpdGhvdXQgaGF2aW5nIHRvIGhvaXN0IGFsbCBvZiB0aG9zZSBhbG9jYXRpb25z
IG91dCBvZiB0aGUgY29uc3RydWN0b3JzLiAgVGhpcyBpcyBwYXJ0IG9mIGEgCisgICAgICAgIGxh
cmdlciByZWZhY3RvcmluZyB0byBtYWtlIG91ciBvYmplY3QgYWxsb2NhdGlvbiBhbmQgaW5pdGlh
bGl6YXRpb24gbW9yZSBHQy1mcmllbmRseS9zYWZlLiAKKworICAgICAgICAqIFBsdWdpbnMvSG9z
dGVkL1Byb3h5SW5zdGFuY2UubW06CisgICAgICAgIChXZWJLaXQ6OlByb3h5UnVudGltZU1ldGhv
ZDo6Y3JlYXRlKToKKyAgICAgICAgKiBQbHVnaW5zL0hvc3RlZC9Qcm94eVJ1bnRpbWVPYmplY3Qu
aDoKKyAgICAgICAgKFdlYktpdDo6UHJveHlSdW50aW1lT2JqZWN0OjpjcmVhdGUpOgorCiAyMDEx
LTA3LTI4ICBEYW4gQmVybnN0ZWluICA8bWl0ekBhcHBsZS5jb20+CiAKICAgICAgICAgPHJkYXI6
Ly9wcm9ibGVtLzk1ODk0MzM+IERpc3BsYXlpbmcgSmFwYW5lc2UgZGljdGlvbmFyeSBjb250ZW50
cyBpbiB2ZXJ0aWNhbCBvcmllbnRhdGlvbiB0YWtlcyBhIGNvdXBsZSBvZiBzZWNvbmRzCkluZGV4
OiBTb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL0hvc3RlZC9Qcm94eUluc3RhbmNlLm1tCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvSG9zdGVkL1Byb3h5SW5zdGFuY2Uu
bW0JKHJldmlzaW9uIDkxOTM5KQorKysgU291cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9Ib3N0ZWQv
UHJveHlJbnN0YW5jZS5tbQkod29ya2luZyBjb3B5KQpAQCAtMTgxLDcgKzE4MSw3IEBAIGNsYXNz
IFByb3h5UnVudGltZU1ldGhvZCA6IHB1YmxpYyBSdW50aW0KIHB1YmxpYzoKICAgICBzdGF0aWMg
UHJveHlSdW50aW1lTWV0aG9kKiBjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBjb25zdCBJZGVudGlmaWVyJiBuYW1lLCBCaW5kaW5nczo6TWV0aG9k
TGlzdCYgbGlzdCkKICAgICB7Ci0gICAgICAgIHJldHVybiBuZXcgKGFsbG9jYXRlQ2VsbDxQcm94
eVJ1bnRpbWVNZXRob2Q+KCpleGVjLT5oZWFwKCkpKSBQcm94eVJ1bnRpbWVNZXRob2QoZXhlYywg
Z2xvYmFsT2JqZWN0LCBuYW1lLCBsaXN0KTsKKyAgICAgICAgcmV0dXJuIHZhbGlkYXRlQWxsb2M8
UHJveHlSdW50aW1lTWV0aG9kPihleGVjLT5nbG9iYWxEYXRhKCksIG5ldyAoYWxsb2NhdGVDZWxs
PFByb3h5UnVudGltZU1ldGhvZD4oKmV4ZWMtPmhlYXAoKSkpIFByb3h5UnVudGltZU1ldGhvZChl
eGVjLCBnbG9iYWxPYmplY3QsIG5hbWUsIGxpc3QpKTsKICAgICB9CiAKICAgICBzdGF0aWMgU3Ry
dWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU1ZhbHVl
IHByb3RvdHlwZSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvSG9zdGVkL1Byb3h5
UnVudGltZU9iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMv
SG9zdGVkL1Byb3h5UnVudGltZU9iamVjdC5oCShyZXZpc2lvbiA5MTkzOSkKKysrIFNvdXJjZS9X
ZWJLaXQvbWFjL1BsdWdpbnMvSG9zdGVkL1Byb3h5UnVudGltZU9iamVjdC5oCSh3b3JraW5nIGNv
cHkpCkBAIC0zOCw3ICszOCw3IEBAIGNsYXNzIFByb3h5UnVudGltZU9iamVjdCA6IHB1YmxpYyBK
U0M6OkIKIHB1YmxpYzoKICAgICBzdGF0aWMgUHJveHlSdW50aW1lT2JqZWN0KiBjcmVhdGUoSlND
OjpFeGVjU3RhdGUqIGV4ZWMsIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUGFz
c1JlZlB0cjxQcm94eUluc3RhbmNlPiBpbnN0YW5jZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBu
ZXcgKEpTQzo6YWxsb2NhdGVDZWxsPFByb3h5UnVudGltZU9iamVjdD4oKmV4ZWMtPmhlYXAoKSkp
IFByb3h5UnVudGltZU9iamVjdChleGVjLCBnbG9iYWxPYmplY3QsIGluc3RhbmNlKTsKKyAgICAg
ICAgcmV0dXJuIEpTQzo6dmFsaWRhdGVBbGxvYzxQcm94eVJ1bnRpbWVPYmplY3Q+KGV4ZWMtPmds
b2JhbERhdGEoKSwgbmV3IChKU0M6OmFsbG9jYXRlQ2VsbDxQcm94eVJ1bnRpbWVPYmplY3Q+KCpl
eGVjLT5oZWFwKCkpKSBQcm94eVJ1bnRpbWVPYmplY3QoZXhlYywgZ2xvYmFsT2JqZWN0LCBpbnN0
YW5jZSkpOwogICAgIH0KIAogICAgIHZpcnR1YWwgflByb3h5UnVudGltZU9iamVjdCgpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>102309</attachid>
            <date>2011-07-28 15:30:02 -0700</date>
            <delta_ts>2011-08-03 09:41:39 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-65288-20110728153001.patch</filename>
            <type>text/plain</type>
            <size>130494</size>
            <attacher name="Mark Hahnenberg">mhahnenberg</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gOTE5NDApCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTY3IEBA
CisyMDExLTA3LTI4ICBNYXJrIEhhaG5lbmJlcmcgIDxtaGFobmVuYmVyZ0BhcHBsZS5jb20+CisK
KyAgICAgICAgQWRkIGNoZWNrcyB0byBlbnN1cmUgYWxsb2NhdGlvbiBkb2VzIG5vdCB0YWtlIHBs
YWNlIGR1cmluZyBpbml0aWFsaXphdGlvbiBvZiBHQy1tYW5hZ2VkIG9iamVjdHMKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY1Mjg4CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkZWQgdGhlIHZhbGlkYXRl
QWxsb2MgY2FsbCB0byBjaGVjayB0aGUgaW5pdGlhbGl6aW5nT2JqZWN0IGZsYWcgaW4gdGhlIEpT
R2xvYmFsRGF0YSBvYmplY3QgYW5kIAorICAgICAgICB0byB0aGVuIGNsZWFyIHNhaWQgZmxhZy4g
IE5vIGZsYWcgY2hlY2tpbmcsIHNldHRpbmcsIG9yIGNsZWFyaW5nIGlzIGRvbmUgdW5sZXNzIEdD
X1ZBTElEQVRJT04gaXMgZW5hYmxlZC4gIAorICAgICAgICBBbHNvIGFkZGVkIHNwZWNpYWwgY2Fz
ZXMgd2hlcmUgdGhlIGZsYWcgaXMgY2xlYXJlZCBhbmQgdGhlIHJlc2V0IGFyb3VuZCBsb2NhdGlv
bnMgd2hlcmUgbmVzdGVkIAorICAgICAgICBhbGxvY2F0aW9ucyBvY2N1ciBpbiB0aGUgY29uc3Ry
dWN0b3JzLiAgVGhpcyBpcyBtb3N0bHkgdGVtcG9yYXJ5IGZvciBub3cgdG8gZ2V0IGJhY2sgdG8g
YSB3b3JraW5nIHN0YXRlIAorICAgICAgICB3aXRob3V0IGhhdmluZyB0byBob2lzdCBhbGwgb2Yg
dGhvc2UgYWxvY2F0aW9ucyBvdXQgb2YgdGhlIGNvbnN0cnVjdG9ycy4gIFRoaXMgaXMgcGFydCBv
ZiBhIAorICAgICAgICBsYXJnZXIgcmVmYWN0b3JpbmcgdG8gbWFrZSBvdXIgb2JqZWN0IGFsbG9j
YXRpb24gYW5kIGluaXRpYWxpemF0aW9uIG1vcmUgR0MtZnJpZW5kbHkvc2FmZS4gCisKKyAgICAg
ICAgKiBBUEkvSlNDYWxsYmFja0NvbnN0cnVjdG9yLmg6CisgICAgICAgIChKU0M6OkpTQ2FsbGJh
Y2tDb25zdHJ1Y3Rvcjo6Y3JlYXRlKToKKyAgICAgICAgKiBBUEkvSlNDYWxsYmFja0Z1bmN0aW9u
Lmg6CisgICAgICAgIChKU0M6OkpTQ2FsbGJhY2tGdW5jdGlvbjo6Y3JlYXRlKToKKyAgICAgICAg
KiBBUEkvSlNDYWxsYmFja09iamVjdC5oOgorICAgICAgICAoSlNDOjpKU0NhbGxiYWNrT2JqZWN0
OjpjcmVhdGUpOgorICAgICAgICAqIGRlYnVnZ2VyL0RlYnVnZ2VyQWN0aXZhdGlvbi5oOgorICAg
ICAgICAoSlNDOjpEZWJ1Z2dlckFjdGl2YXRpb246OmNyZWF0ZSk6CisgICAgICAgICoganNjLmNw
cDoKKyAgICAgICAgKEdsb2JhbE9iamVjdDo6Y3JlYXRlKToKKyAgICAgICAgKiBydW50aW1lL0Fy
Z3VtZW50cy5oOgorICAgICAgICAoSlNDOjpBcmd1bWVudHM6OmNyZWF0ZSk6CisgICAgICAgIChK
U0M6OkFyZ3VtZW50czo6Y3JlYXRlTm9QYXJhbWV0ZXJzKToKKyAgICAgICAgKiBydW50aW1lL0Fy
cmF5Q29uc3RydWN0b3IuaDoKKyAgICAgICAgKEpTQzo6QXJyYXlDb25zdHJ1Y3Rvcjo6Y3JlYXRl
KToKKyAgICAgICAgKiBydW50aW1lL0FycmF5UHJvdG90eXBlLmg6CisgICAgICAgIChKU0M6OkFy
cmF5UHJvdG90eXBlOjpjcmVhdGUpOgorICAgICAgICAqIHJ1bnRpbWUvQm9vbGVhbkNvbnN0cnVj
dG9yLmg6CisgICAgICAgIChKU0M6OkJvb2xlYW5Db25zdHJ1Y3Rvcjo6Y3JlYXRlKToKKyAgICAg
ICAgKiBydW50aW1lL0Jvb2xlYW5PYmplY3QuaDoKKyAgICAgICAgKEpTQzo6Qm9vbGVhbk9iamVj
dDo6Y3JlYXRlKToKKyAgICAgICAgKiBydW50aW1lL0Jvb2xlYW5Qcm90b3R5cGUuaDoKKyAgICAg
ICAgKEpTQzo6Qm9vbGVhblByb3RvdHlwZTo6Y3JlYXRlKToKKyAgICAgICAgKiBydW50aW1lL0Rh
dGVDb25zdHJ1Y3Rvci5oOgorICAgICAgICAoSlNDOjpEYXRlQ29uc3RydWN0b3I6OmNyZWF0ZSk6
CisgICAgICAgICogcnVudGltZS9EYXRlSW5zdGFuY2UuaDoKKyAgICAgICAgKEpTQzo6RGF0ZUlu
c3RhbmNlOjpjcmVhdGUpOgorICAgICAgICAqIHJ1bnRpbWUvRGF0ZVByb3RvdHlwZS5oOgorICAg
ICAgICAoSlNDOjpEYXRlUHJvdG90eXBlOjpjcmVhdGUpOgorICAgICAgICAqIHJ1bnRpbWUvRXJy
b3IuY3BwOgorICAgICAgICAoSlNDOjpTdHJpY3RNb2RlVHlwZUVycm9yRnVuY3Rpb246OmNyZWF0
ZSk6CisgICAgICAgICogcnVudGltZS9FcnJvckNvbnN0cnVjdG9yLmg6CisgICAgICAgIChKU0M6
OkVycm9yQ29uc3RydWN0b3I6OmNyZWF0ZSk6CisgICAgICAgICogcnVudGltZS9FcnJvckluc3Rh
bmNlLmNwcDoKKyAgICAgICAgKEpTQzo6RXJyb3JJbnN0YW5jZTo6RXJyb3JJbnN0YW5jZSk6Cisg
ICAgICAgIChKU0M6OkVycm9ySW5zdGFuY2U6OmNyZWF0ZSk6CisgICAgICAgICogcnVudGltZS9F
cnJvclByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OkVycm9yUHJvdG90eXBlOjpFcnJvclBy
b3RvdHlwZSk6CisgICAgICAgICogcnVudGltZS9FcnJvclByb3RvdHlwZS5oOgorICAgICAgICAo
SlNDOjpFcnJvclByb3RvdHlwZTo6Y3JlYXRlKToKKyAgICAgICAgKiBydW50aW1lL0V4Y2VwdGlv
bkhlbHBlcnMuY3BwOgorICAgICAgICAoSlNDOjpJbnRlcnJ1cHRlZEV4ZWN1dGlvbkVycm9yOjpj
cmVhdGUpOgorICAgICAgICAoSlNDOjpUZXJtaW5hdGVkRXhlY3V0aW9uRXJyb3I6OmNyZWF0ZSk6
CisgICAgICAgICogcnVudGltZS9FeGVjdXRhYmxlLmg6CisgICAgICAgIChKU0M6OkV4ZWN1dGFi
bGVCYXNlOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpOYXRpdmVFeGVjdXRhYmxlOjpjcmVhdGUp
OgorICAgICAgICAoSlNDOjpFdmFsRXhlY3V0YWJsZTo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6
UHJvZ3JhbUV4ZWN1dGFibGU6OmNyZWF0ZSk6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uRXhlY3V0
YWJsZTo6Y3JlYXRlKToKKyAgICAgICAgKiBydW50aW1lL0Z1bmN0aW9uQ29uc3RydWN0b3IuaDoK
KyAgICAgICAgKEpTQzo6RnVuY3Rpb25Db25zdHJ1Y3Rvcjo6Y3JlYXRlKToKKyAgICAgICAgKiBy
dW50aW1lL0Z1bmN0aW9uUHJvdG90eXBlLmg6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uUHJvdG90
eXBlOjpjcmVhdGUpOgorICAgICAgICAqIHJ1bnRpbWUvR2V0dGVyU2V0dGVyLmg6CisgICAgICAg
IChKU0M6OkdldHRlclNldHRlcjo6Y3JlYXRlKToKKyAgICAgICAgKiBydW50aW1lL0ludGVybmFs
RnVuY3Rpb24uY3BwOgorICAgICAgICAoSlNDOjpJbnRlcm5hbEZ1bmN0aW9uOjpJbnRlcm5hbEZ1
bmN0aW9uKToKKyAgICAgICAgKiBydW50aW1lL0pTQVBJVmFsdWVXcmFwcGVyLmg6CisgICAgICAg
IChKU0M6OkpTQVBJVmFsdWVXcmFwcGVyOjpjcmVhdGUpOgorICAgICAgICAqIHJ1bnRpbWUvSlNB
Y3RpdmF0aW9uLmg6CisgICAgICAgIChKU0M6OkpTQWN0aXZhdGlvbjo6Y3JlYXRlKToKKyAgICAg
ICAgKiBydW50aW1lL0pTQXJyYXkuaDoKKyAgICAgICAgKEpTQzo6SlNBcnJheTo6Y3JlYXRlKToK
KyAgICAgICAgKiBydW50aW1lL0pTQnl0ZUFycmF5LmNwcDoKKyAgICAgICAgKEpTQzo6SlNCeXRl
QXJyYXk6OmNyZWF0ZSk6CisgICAgICAgICogcnVudGltZS9KU0NlbGwuaDoKKyAgICAgICAgKEpT
Qzo6SlNDZWxsOjphbGxvY2F0ZUNlbGwpOgorICAgICAgICAoSlNDOjpKU0NlbGw6OnZhbGlkYXRl
QWxsb2MpOgorICAgICAgICAqIHJ1bnRpbWUvSlNGdW5jdGlvbi5jcHA6CisgICAgICAgIChKU0M6
OkpTRnVuY3Rpb246OkpTRnVuY3Rpb24pOgorICAgICAgICAqIHJ1bnRpbWUvSlNGdW5jdGlvbi5o
OgorICAgICAgICAoSlNDOjpKU0Z1bmN0aW9uOjpjcmVhdGUpOgorICAgICAgICAqIHJ1bnRpbWUv
SlNHbG9iYWxEYXRhLmNwcDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxEYXRhOjpKU0dsb2JhbERh
dGEpOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxEYXRhLmg6CisgICAgICAgIChKU0M6OkpT
R2xvYmFsRGF0YTo6aXNJbml0aWFsaXppbmdPYmplY3QpOgorICAgICAgICAoSlNDOjpKU0dsb2Jh
bERhdGE6OnNldEluaXRpYWxpemluZ09iamVjdCk6CisgICAgICAgICogcnVudGltZS9KU0dsb2Jh
bE9iamVjdC5jcHA6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojppbml0KToKKyAgICAg
ICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0Lmg6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2Jq
ZWN0OjpjcmVhdGUpOgorICAgICAgICAqIHJ1bnRpbWUvSlNOb3RBbk9iamVjdC5oOgorICAgICAg
ICAoSlNDOjpKU05vdEFuT2JqZWN0OjpjcmVhdGUpOgorICAgICAgICAqIHJ1bnRpbWUvSlNPTk9i
amVjdC5oOgorICAgICAgICAoSlNDOjpKU09OT2JqZWN0OjpjcmVhdGUpOgorICAgICAgICAqIHJ1
bnRpbWUvSlNPYmplY3QuaDoKKyAgICAgICAgKEpTQzo6SlNGaW5hbE9iamVjdDo6Y3JlYXRlKToK
KyAgICAgICAgKiBydW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuY3BwOgorICAgICAgICAo
SlNDOjpKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yOjpKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yKToKKyAg
ICAgICAgKEpTQzo6SlNQcm9wZXJ0eU5hbWVJdGVyYXRvcjo6Y3JlYXRlKToKKyAgICAgICAgKiBy
dW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuaDoKKyAgICAgICAgKEpTQzo6SlNQcm9wZXJ0
eU5hbWVJdGVyYXRvcjo6Y3JlYXRlKToKKyAgICAgICAgKiBydW50aW1lL0pTU3RhdGljU2NvcGVP
YmplY3QuaDoKKyAgICAgICAgKEpTQzo6SlNTdGF0aWNTY29wZU9iamVjdDo6Y3JlYXRlKToKKyAg
ICAgICAgKiBydW50aW1lL0pTU3RyaW5nLmNwcDoKKyAgICAgICAgKEpTQzo6U3RyaW5nT2JqZWN0
OjpjcmVhdGUpOgorICAgICAgICAqIHJ1bnRpbWUvSlNTdHJpbmcuaDoKKyAgICAgICAgKEpTQzo6
Um9wZUJ1aWxkZXI6OmNyZWF0ZSk6CisgICAgICAgIChKU0M6OlJvcGVCdWlsZGVyOjpjcmVhdGVI
YXNPdGhlck93bmVyKToKKyAgICAgICAgKiBydW50aW1lL01hdGhPYmplY3QuaDoKKyAgICAgICAg
KEpTQzo6TWF0aE9iamVjdDo6Y3JlYXRlKToKKyAgICAgICAgKiBydW50aW1lL05hdGl2ZUVycm9y
Q29uc3RydWN0b3IuY3BwOgorICAgICAgICAoSlNDOjpOYXRpdmVFcnJvckNvbnN0cnVjdG9yOjpO
YXRpdmVFcnJvckNvbnN0cnVjdG9yKToKKyAgICAgICAgKiBydW50aW1lL05hdGl2ZUVycm9yQ29u
c3RydWN0b3IuaDoKKyAgICAgICAgKEpTQzo6TmF0aXZlRXJyb3JDb25zdHJ1Y3Rvcjo6Y3JlYXRl
KToKKyAgICAgICAgKiBydW50aW1lL05hdGl2ZUVycm9yUHJvdG90eXBlLmNwcDoKKyAgICAgICAg
KEpTQzo6TmF0aXZlRXJyb3JQcm90b3R5cGU6Ok5hdGl2ZUVycm9yUHJvdG90eXBlKToKKyAgICAg
ICAgKiBydW50aW1lL05hdGl2ZUVycm9yUHJvdG90eXBlLmg6CisgICAgICAgIChKU0M6Ok5hdGl2
ZUVycm9yUHJvdG90eXBlOjpjcmVhdGUpOgorICAgICAgICAqIHJ1bnRpbWUvTnVtYmVyQ29uc3Ry
dWN0b3IuaDoKKyAgICAgICAgKEpTQzo6TnVtYmVyQ29uc3RydWN0b3I6OmNyZWF0ZSk6CisgICAg
ICAgICogcnVudGltZS9OdW1iZXJPYmplY3QuaDoKKyAgICAgICAgKEpTQzo6TnVtYmVyT2JqZWN0
OjpjcmVhdGUpOgorICAgICAgICAqIHJ1bnRpbWUvTnVtYmVyUHJvdG90eXBlLmg6CisgICAgICAg
IChKU0M6Ok51bWJlclByb3RvdHlwZTo6Y3JlYXRlKToKKyAgICAgICAgKiBydW50aW1lL09iamVj
dENvbnN0cnVjdG9yLmg6CisgICAgICAgIChKU0M6Ok9iamVjdENvbnN0cnVjdG9yOjpjcmVhdGUp
OgorICAgICAgICAqIHJ1bnRpbWUvT2JqZWN0UHJvdG90eXBlLmg6CisgICAgICAgIChKU0M6Ok9i
amVjdFByb3RvdHlwZTo6Y3JlYXRlKToKKyAgICAgICAgKiBydW50aW1lL1JlZ0V4cC5jcHA6Cisg
ICAgICAgIChKU0M6OlJlZ0V4cDo6Y3JlYXRlV2l0aG91dENhY2hpbmcpOgorICAgICAgICAqIHJ1
bnRpbWUvUmVnRXhwQ29uc3RydWN0b3IuaDoKKyAgICAgICAgKEpTQzo6UmVnRXhwQ29uc3RydWN0
b3I6OmNyZWF0ZSk6CisgICAgICAgICogcnVudGltZS9SZWdFeHBNYXRjaGVzQXJyYXkuaDoKKyAg
ICAgICAgKEpTQzo6UmVnRXhwTWF0Y2hlc0FycmF5OjpjcmVhdGUpOgorICAgICAgICAqIHJ1bnRp
bWUvUmVnRXhwT2JqZWN0Lmg6CisgICAgICAgIChKU0M6OlJlZ0V4cE9iamVjdDo6Y3JlYXRlKToK
KyAgICAgICAgKiBydW50aW1lL1JlZ0V4cFByb3RvdHlwZS5oOgorICAgICAgICAoSlNDOjpSZWdF
eHBQcm90b3R5cGU6OmNyZWF0ZSk6CisgICAgICAgICogcnVudGltZS9TY29wZUNoYWluLmg6Cisg
ICAgICAgIChKU0M6OlNjb3BlQ2hhaW5Ob2RlOjpjcmVhdGUpOgorICAgICAgICAqIHJ1bnRpbWUv
U3RyaWN0RXZhbEFjdGl2YXRpb24uaDoKKyAgICAgICAgKEpTQzo6U3RyaWN0RXZhbEFjdGl2YXRp
b246OmNyZWF0ZSk6CisgICAgICAgICogcnVudGltZS9TdHJpbmdDb25zdHJ1Y3Rvci5oOgorICAg
ICAgICAoSlNDOjpTdHJpbmdDb25zdHJ1Y3Rvcjo6Y3JlYXRlKToKKyAgICAgICAgKiBydW50aW1l
L1N0cmluZ09iamVjdC5jcHA6CisgICAgICAgIChKU0M6OlN0cmluZ09iamVjdDo6U3RyaW5nT2Jq
ZWN0KToKKyAgICAgICAgKiBydW50aW1lL1N0cmluZ09iamVjdC5oOgorICAgICAgICAoSlNDOjpT
dHJpbmdPYmplY3Q6OmNyZWF0ZSk6CisgICAgICAgICogcnVudGltZS9TdHJpbmdPYmplY3RUaGF0
TWFzcXVlcmFkZXNBc1VuZGVmaW5lZC5oOgorICAgICAgICAoSlNDOjpTdHJpbmdPYmplY3RUaGF0
TWFzcXVlcmFkZXNBc1VuZGVmaW5lZDo6Y3JlYXRlKToKKyAgICAgICAgKiBydW50aW1lL1N0cmlu
Z1Byb3RvdHlwZS5oOgorICAgICAgICAoSlNDOjpTdHJpbmdQcm90b3R5cGU6OmNyZWF0ZSk6Cisg
ICAgICAgICogcnVudGltZS9TdHJ1Y3R1cmUuaDoKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjpj
cmVhdGUpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAg
ICAgICogcnVudGltZS9TdHJ1Y3R1cmVDaGFpbi5oOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVD
aGFpbjo6Y3JlYXRlKToKKyAgICAgICAgKiB3dGYvUGxhdGZvcm0uaDoKKwogMjAxMS0wNy0yOCAg
R2F2aW4gQmFycmFjbG91Z2ggIDxiYXJyYWNsb3VnaEBhcHBsZS5jb20+CiAKICAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY1MzI1CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvanNjLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvanNjLmNwcAkocmV2aXNpb24gOTE5MzkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvanNj
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTUwLDcgKzE1MCw3IEBAIHByaXZhdGU6CiBwdWJsaWM6
CiAgICAgc3RhdGljIEdsb2JhbE9iamVjdCogY3JlYXRlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0
YSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IFZlY3RvcjxVU3RyaW5nPiYgYXJndW1lbnRz
KQogICAgIHsKLSAgICAgICAgcmV0dXJuIG5ldyAoYWxsb2NhdGVDZWxsPEdsb2JhbE9iamVjdD4o
Z2xvYmFsRGF0YS5oZWFwKSkgR2xvYmFsT2JqZWN0KGdsb2JhbERhdGEsIHN0cnVjdHVyZSwgYXJn
dW1lbnRzKTsKKyAgICAgICAgcmV0dXJuIHZhbGlkYXRlQWxsb2M8R2xvYmFsT2JqZWN0PihnbG9i
YWxEYXRhLCBuZXcgKGFsbG9jYXRlQ2VsbDxHbG9iYWxPYmplY3Q+KGdsb2JhbERhdGEuaGVhcCkp
IEdsb2JhbE9iamVjdChnbG9iYWxEYXRhLCBzdHJ1Y3R1cmUsIGFyZ3VtZW50cykpOwogICAgIH0K
ICAgICB2aXJ0dWFsIFVTdHJpbmcgY2xhc3NOYW1lKCkgY29uc3QgeyByZXR1cm4gImdsb2JhbCI7
IH0KIH07CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tDb25zdHJ1
Y3Rvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFj
a0NvbnN0cnVjdG9yLmgJKHJldmlzaW9uIDkxOTM5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L0FQSS9KU0NhbGxiYWNrQ29uc3RydWN0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtMzcsNyArMzcs
NyBAQCBwcm90ZWN0ZWQ6CiBwdWJsaWM6CiAgICAgc3RhdGljIEpTQ2FsbGJhY2tDb25zdHJ1Y3Rv
ciogY3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTQ2xhc3NSZWYgY2xhc3NSZWYsIEpTT2JqZWN0Q2FsbEFz
Q29uc3RydWN0b3JDYWxsYmFjayBjYWxsYmFjaykgCiAgICAgewotICAgICAgICByZXR1cm4gbmV3
IChhbGxvY2F0ZUNlbGw8SlNDYWxsYmFja0NvbnN0cnVjdG9yPigqZXhlYy0+aGVhcCgpKSkgSlND
YWxsYmFja0NvbnN0cnVjdG9yKGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBjbGFzc1JlZiwgY2Fs
bGJhY2spOworICAgICAgICByZXR1cm4gdmFsaWRhdGVBbGxvYzxKU0NhbGxiYWNrQ29uc3RydWN0
b3I+KGV4ZWMtPmdsb2JhbERhdGEoKSwgbmV3IChhbGxvY2F0ZUNlbGw8SlNDYWxsYmFja0NvbnN0
cnVjdG9yPigqZXhlYy0+aGVhcCgpKSkgSlNDYWxsYmFja0NvbnN0cnVjdG9yKGdsb2JhbE9iamVj
dCwgc3RydWN0dXJlLCBjbGFzc1JlZiwgY2FsbGJhY2spKTsKICAgICB9CiAgICAgCiAgICAgdmly
dHVhbCB+SlNDYWxsYmFja0NvbnN0cnVjdG9yKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvQVBJL0pTQ2FsbGJhY2tGdW5jdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9BUEkvSlNDYWxsYmFja0Z1bmN0aW9uLmgJKHJldmlzaW9uIDkxOTM5KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrRnVuY3Rpb24uaAkod29ya2luZyBjb3B5
KQpAQCAtMzgsNyArMzgsNyBAQCBwcm90ZWN0ZWQ6CiBwdWJsaWM6CiAgICAgc3RhdGljIEpTQ2Fs
bGJhY2tGdW5jdGlvbiogY3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgSlNPYmplY3RDYWxsQXNGdW5jdGlvbkNhbGxiYWNrIGNhbGxiYWNrLCBjb25z
dCBJZGVudGlmaWVyJiBuYW1lKQogICAgIHsKLSAgICAgICAgcmV0dXJuIG5ldyAoYWxsb2NhdGVD
ZWxsPEpTQ2FsbGJhY2tGdW5jdGlvbj4oKmV4ZWMtPmhlYXAoKSkpIEpTQ2FsbGJhY2tGdW5jdGlv
bihleGVjLCBnbG9iYWxPYmplY3QsIGNhbGxiYWNrLCBuYW1lKTsKKyAgICAgICAgcmV0dXJuIHZh
bGlkYXRlQWxsb2M8SlNDYWxsYmFja0Z1bmN0aW9uPihleGVjLT5nbG9iYWxEYXRhKCksIG5ldyAo
YWxsb2NhdGVDZWxsPEpTQ2FsbGJhY2tGdW5jdGlvbj4oKmV4ZWMtPmhlYXAoKSkpIEpTQ2FsbGJh
Y2tGdW5jdGlvbihleGVjLCBnbG9iYWxPYmplY3QsIGNhbGxiYWNrLCBuYW1lKSk7CiAgICAgfQog
CiAgICAgc3RhdGljIGNvbnN0IENsYXNzSW5mbyBzX2luZm87CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3QuaAkocmV2aXNpb24gOTE5MzkpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3QuaAkod29ya2luZyBjb3B5
KQpAQCAtMTI3LDExICsxMjcsMTEgQEAgcHJvdGVjdGVkOgogcHVibGljOgogICAgIHN0YXRpYyBK
U0NhbGxiYWNrT2JqZWN0KiBjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNDbGFzc1JlZiBjbGFzc1JlZiwg
dm9pZCogZGF0YSkKICAgICB7Ci0gICAgICAgIHJldHVybiBuZXcgKGFsbG9jYXRlQ2VsbDxKU0Nh
bGxiYWNrT2JqZWN0PigqZXhlYy0+aGVhcCgpKSkgSlNDYWxsYmFja09iamVjdChleGVjLCBnbG9i
YWxPYmplY3QsIHN0cnVjdHVyZSwgY2xhc3NSZWYsIGRhdGEpOworICAgICAgICByZXR1cm4gdmFs
aWRhdGVBbGxvYzxKU0NhbGxiYWNrT2JqZWN0PihleGVjLT5nbG9iYWxEYXRhKCksIG5ldyAoYWxs
b2NhdGVDZWxsPEpTQ2FsbGJhY2tPYmplY3Q+KCpleGVjLT5oZWFwKCkpKSBKU0NhbGxiYWNrT2Jq
ZWN0KGV4ZWMsIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBjbGFzc1JlZiwgZGF0YSkpOwogICAg
IH0KICAgICBzdGF0aWMgSlNDYWxsYmFja09iamVjdCogY3JlYXRlKEpTR2xvYmFsRGF0YSYgZ2xv
YmFsRGF0YSwgSlNDbGFzc1JlZiBjbGFzc1JlZiwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAgICAg
ewotICAgICAgICByZXR1cm4gbmV3IChhbGxvY2F0ZUNlbGw8SlNDYWxsYmFja09iamVjdD4oZ2xv
YmFsRGF0YS5oZWFwKSkgSlNDYWxsYmFja09iamVjdChnbG9iYWxEYXRhLCBjbGFzc1JlZiwgc3Ry
dWN0dXJlKTsKKyAgICAgICAgcmV0dXJuIHZhbGlkYXRlQWxsb2M8SlNDYWxsYmFja09iamVjdD4o
Z2xvYmFsRGF0YSwgbmV3IChhbGxvY2F0ZUNlbGw8SlNDYWxsYmFja09iamVjdD4oZ2xvYmFsRGF0
YS5oZWFwKSkgSlNDYWxsYmFja09iamVjdChnbG9iYWxEYXRhLCBjbGFzc1JlZiwgc3RydWN0dXJl
KSk7CiAgICAgfQogCiAgICAgdm9pZCBzZXRQcml2YXRlKHZvaWQqIGRhdGEpOwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyQWN0aXZhdGlvbi5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlckFjdGl2YXRpb24u
aAkocmV2aXNpb24gOTE5MzkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVi
dWdnZXJBY3RpdmF0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTM2LDcgKzM2LDcgQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgcHVibGljOgogICAgICAgICBzdGF0aWMgRGVidWdnZXJBY3RpdmF0aW9u
KiBjcmVhdGUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU09iamVjdCogb2JqZWN0KQogICAg
ICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gbmV3IChhbGxvY2F0ZUNlbGw8RGVidWdnZXJBY3Rp
dmF0aW9uPihnbG9iYWxEYXRhLmhlYXApKSBEZWJ1Z2dlckFjdGl2YXRpb24oZ2xvYmFsRGF0YSwg
b2JqZWN0KTsKKyAgICAgICAgICAgIHJldHVybiB2YWxpZGF0ZUFsbG9jPERlYnVnZ2VyQWN0aXZh
dGlvbj4oZ2xvYmFsRGF0YSwgbmV3IChhbGxvY2F0ZUNlbGw8RGVidWdnZXJBY3RpdmF0aW9uPihn
bG9iYWxEYXRhLmhlYXApKSBEZWJ1Z2dlckFjdGl2YXRpb24oZ2xvYmFsRGF0YSwgb2JqZWN0KSk7
CiAgICAgICAgIH0KIAogICAgICAgICB2aXJ0dWFsIHZvaWQgdmlzaXRDaGlsZHJlbihTbG90Vmlz
aXRvciYpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJndW1lbnRzLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJndW1lbnRzLmgJ
KHJldmlzaW9uIDkxOTM5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJndW1l
bnRzLmgJKHdvcmtpbmcgY29weSkKQEAgLTYxLDEyICs2MSwxMiBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICBwdWJsaWM6CiAgICAgICAgIHN0YXRpYyBBcmd1bWVudHMqIGNyZWF0ZShKU0dsb2JhbERh
dGEmIGdsb2JhbERhdGEsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogICAgICAgICB7Ci0gICAgICAg
ICAgICByZXR1cm4gbmV3IChhbGxvY2F0ZUNlbGw8QXJndW1lbnRzPihnbG9iYWxEYXRhLmhlYXAp
KSBBcmd1bWVudHMoY2FsbEZyYW1lKTsKKyAgICAgICAgICAgIHJldHVybiB2YWxpZGF0ZUFsbG9j
PEFyZ3VtZW50cz4oZ2xvYmFsRGF0YSwgbmV3IChhbGxvY2F0ZUNlbGw8QXJndW1lbnRzPihnbG9i
YWxEYXRhLmhlYXApKSBBcmd1bWVudHMoY2FsbEZyYW1lKSk7CiAgICAgICAgIH0KICAgICAgICAg
CiAgICAgICAgIHN0YXRpYyBBcmd1bWVudHMqIGNyZWF0ZU5vUGFyYW1ldGVycyhKU0dsb2JhbERh
dGEmIGdsb2JhbERhdGEsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogICAgICAgICB7Ci0gICAgICAg
ICAgICByZXR1cm4gbmV3IChhbGxvY2F0ZUNlbGw8QXJndW1lbnRzPihnbG9iYWxEYXRhLmhlYXAp
KSBBcmd1bWVudHMoY2FsbEZyYW1lLCBOb1BhcmFtZXRlcnMpOworICAgICAgICAgICAgcmV0dXJu
IHZhbGlkYXRlQWxsb2M8QXJndW1lbnRzPihnbG9iYWxEYXRhLCBuZXcgKGFsbG9jYXRlQ2VsbDxB
cmd1bWVudHM+KGdsb2JhbERhdGEuaGVhcCkpIEFyZ3VtZW50cyhjYWxsRnJhbWUsIE5vUGFyYW1l
dGVycykpOwogICAgICAgICB9CiAKICAgICAgICAgLy8gVXNlIGFuIGVudW0gYmVjYXVzZSBvdGhl
cndpc2UgZ2NjIGluc2lzdHMgb24gZG9pbmcgYSBtZW1vcnkKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0FycmF5Q29uc3RydWN0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUNvbnN0cnVjdG9yLmgJKHJldmlzaW9uIDkxOTM5
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlDb25zdHJ1Y3Rvci5oCSh3
b3JraW5nIGNvcHkpCkBAIC0zNCw3ICszNCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHB1Ymxp
YzoKICAgICAgICAgc3RhdGljIEFycmF5Q29uc3RydWN0b3IqIGNyZWF0ZShFeGVjU3RhdGUqIGV4
ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBB
cnJheVByb3RvdHlwZSogYXJyUHJvdG90eXBlKQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1
cm4gbmV3IChhbGxvY2F0ZUNlbGw8QXJyYXlDb25zdHJ1Y3Rvcj4oKmV4ZWMtPmhlYXAoKSkpIEFy
cmF5Q29uc3RydWN0b3IoZXhlYywgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIGFyclByb3RvdHlw
ZSk7CisgICAgICAgICAgICByZXR1cm4gdmFsaWRhdGVBbGxvYzxBcnJheUNvbnN0cnVjdG9yPihl
eGVjLT5nbG9iYWxEYXRhKCksIG5ldyAoYWxsb2NhdGVDZWxsPEFycmF5Q29uc3RydWN0b3I+KCpl
eGVjLT5oZWFwKCkpKSBBcnJheUNvbnN0cnVjdG9yKGV4ZWMsIGdsb2JhbE9iamVjdCwgc3RydWN0
dXJlLCBhcnJQcm90b3R5cGUpKTsKICAgICAgICAgfQogCiAgICAgICAgIHN0YXRpYyBjb25zdCBD
bGFzc0luZm8gc19pbmZvOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJy
YXlQcm90b3R5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9BcnJheVByb3RvdHlwZS5oCShyZXZpc2lvbiA5MTkzOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0FycmF5UHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTMzLDcgKzMz
LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgcHVibGljOgogICAgICAgICBzdGF0aWMgQXJyYXlQ
cm90b3R5cGUqIGNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlKQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1
cm4gbmV3IChhbGxvY2F0ZUNlbGw8QXJyYXlQcm90b3R5cGU+KCpleGVjLT5oZWFwKCkpKSBBcnJh
eVByb3RvdHlwZShnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSk7CisgICAgICAgICAgICByZXR1cm4g
dmFsaWRhdGVBbGxvYzxBcnJheVByb3RvdHlwZT4oZXhlYy0+Z2xvYmFsRGF0YSgpLCBuZXcgKGFs
bG9jYXRlQ2VsbDxBcnJheVByb3RvdHlwZT4oKmV4ZWMtPmhlYXAoKSkpIEFycmF5UHJvdG90eXBl
KGdsb2JhbE9iamVjdCwgc3RydWN0dXJlKSk7CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAg
IGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBQ
cm9wZXJ0eVNsb3QmKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Jvb2xl
YW5Db25zdHJ1Y3Rvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0Jvb2xlYW5Db25zdHJ1Y3Rvci5oCShyZXZpc2lvbiA5MTkzOSkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0Jvb2xlYW5Db25zdHJ1Y3Rvci5oCSh3b3JraW5nIGNvcHkpCkBA
IC0zNCw3ICszNCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHB1YmxpYzoKICAgICAgICAgc3Rh
dGljIEJvb2xlYW5Db25zdHJ1Y3RvciogY3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEJvb2xlYW5Qcm90b3R5
cGUqIGJvb2xQcm90b3R5cGUpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBuZXcgKGFs
bG9jYXRlQ2VsbDxCb29sZWFuQ29uc3RydWN0b3I+KCpleGVjLT5oZWFwKCkpKSBCb29sZWFuQ29u
c3RydWN0b3IoZXhlYywgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIGJvb2xQcm90b3R5cGUpOwor
ICAgICAgICAgICAgcmV0dXJuIHZhbGlkYXRlQWxsb2M8Qm9vbGVhbkNvbnN0cnVjdG9yPihleGVj
LT5nbG9iYWxEYXRhKCksIG5ldyAoYWxsb2NhdGVDZWxsPEJvb2xlYW5Db25zdHJ1Y3Rvcj4oKmV4
ZWMtPmhlYXAoKSkpIEJvb2xlYW5Db25zdHJ1Y3RvcihleGVjLCBnbG9iYWxPYmplY3QsIHN0cnVj
dHVyZSwgYm9vbFByb3RvdHlwZSkpOwogICAgICAgICB9CiAKICAgICBwcml2YXRlOgpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQm9vbGVhbk9iamVjdC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Jvb2xlYW5PYmplY3QuaAkocmV2aXNp
b24gOTE5MzkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Cb29sZWFuT2JqZWN0
LmgJKHdvcmtpbmcgY29weSkKQEAgLTMyLDcgKzMyLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
cHVibGljOgogICAgICAgICBzdGF0aWMgQm9vbGVhbk9iamVjdCogY3JlYXRlKEpTR2xvYmFsRGF0
YSYgZ2xvYmFsRGF0YSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAgICAgICAgIHsKLSAgICAgICAg
ICAgIHJldHVybiBuZXcgKGFsbG9jYXRlQ2VsbDxCb29sZWFuT2JqZWN0PihnbG9iYWxEYXRhLmhl
YXApKSBCb29sZWFuT2JqZWN0KGdsb2JhbERhdGEsIHN0cnVjdHVyZSk7CisgICAgICAgICAgICBy
ZXR1cm4gdmFsaWRhdGVBbGxvYzxCb29sZWFuT2JqZWN0PihnbG9iYWxEYXRhLCBuZXcgKGFsbG9j
YXRlQ2VsbDxCb29sZWFuT2JqZWN0PihnbG9iYWxEYXRhLmhlYXApKSBCb29sZWFuT2JqZWN0KGds
b2JhbERhdGEsIHN0cnVjdHVyZSkpOwogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBzdGF0
aWMgY29uc3QgQ2xhc3NJbmZvIHNfaW5mbzsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0Jvb2xlYW5Qcm90b3R5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Cb29sZWFuUHJvdG90eXBlLmgJKHJldmlzaW9uIDkxOTM5KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQm9vbGVhblByb3RvdHlwZS5oCSh3b3JraW5nIGNv
cHkpCkBAIC0zMiw3ICszMiw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHB1YmxpYzoKICAgICAg
ICAgc3RhdGljIEJvb2xlYW5Qcm90b3R5cGUqIGNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlKQogICAgICAgICB7
Ci0gICAgICAgICAgICByZXR1cm4gbmV3IChhbGxvY2F0ZUNlbGw8Qm9vbGVhblByb3RvdHlwZT4o
KmV4ZWMtPmhlYXAoKSkpIEJvb2xlYW5Qcm90b3R5cGUoZXhlYywgZ2xvYmFsT2JqZWN0LCBzdHJ1
Y3R1cmUpOworICAgICAgICAgICAgcmV0dXJuIHZhbGlkYXRlQWxsb2M8Qm9vbGVhblByb3RvdHlw
ZT4oZXhlYy0+Z2xvYmFsRGF0YSgpLCBuZXcgKGFsbG9jYXRlQ2VsbDxCb29sZWFuUHJvdG90eXBl
PigqZXhlYy0+aGVhcCgpKSkgQm9vbGVhblByb3RvdHlwZShleGVjLCBnbG9iYWxPYmplY3QsIHN0
cnVjdHVyZSkpOwogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBzdGF0aWMgY29uc3QgQ2xh
c3NJbmZvIHNfaW5mbzsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVD
b25zdHJ1Y3Rvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0RhdGVDb25zdHJ1Y3Rvci5oCShyZXZpc2lvbiA5MTkzOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0RhdGVDb25zdHJ1Y3Rvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw3ICsz
NCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHB1YmxpYzoKICAgICAgICAgc3RhdGljIERhdGVD
b25zdHJ1Y3RvciogY3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIERhdGVQcm90b3R5cGUqIGRhdGVQcm90b3R5
cGUpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBuZXcgKGFsbG9jYXRlQ2VsbDxEYXRl
Q29uc3RydWN0b3I+KCpleGVjLT5oZWFwKCkpKSBEYXRlQ29uc3RydWN0b3IoZXhlYywgZ2xvYmFs
T2JqZWN0LCBzdHJ1Y3R1cmUsIGRhdGVQcm90b3R5cGUpOworICAgICAgICAgICAgcmV0dXJuIHZh
bGlkYXRlQWxsb2M8RGF0ZUNvbnN0cnVjdG9yPihleGVjLT5nbG9iYWxEYXRhKCksIG5ldyAoYWxs
b2NhdGVDZWxsPERhdGVDb25zdHJ1Y3Rvcj4oKmV4ZWMtPmhlYXAoKSkpIERhdGVDb25zdHJ1Y3Rv
cihleGVjLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgZGF0ZVByb3RvdHlwZSkpOwogICAgICAg
ICB9CiAKICAgICAgICAgc3RhdGljIGNvbnN0IENsYXNzSW5mbyBzX2luZm87CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlSW5zdGFuY2UuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlSW5zdGFuY2UuaAkocmV2aXNpb24gOTE5
MzkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlSW5zdGFuY2UuaAkod29y
a2luZyBjb3B5KQpAQCAtMzcsMTEgKzM3LDExIEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHB1Ymxp
YzoKICAgICAgICAgc3RhdGljIERhdGVJbnN0YW5jZSogY3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGRvdWJsZSBkYXRlKQogICAgICAgICB7Ci0gICAgICAgICAg
ICByZXR1cm4gbmV3IChhbGxvY2F0ZUNlbGw8RGF0ZUluc3RhbmNlPigqZXhlYy0+aGVhcCgpKSkg
RGF0ZUluc3RhbmNlKGV4ZWMsIHN0cnVjdHVyZSwgZGF0ZSk7CisgICAgICAgICAgICByZXR1cm4g
dmFsaWRhdGVBbGxvYzxEYXRlSW5zdGFuY2U+KGV4ZWMtPmdsb2JhbERhdGEoKSwgbmV3IChhbGxv
Y2F0ZUNlbGw8RGF0ZUluc3RhbmNlPigqZXhlYy0+aGVhcCgpKSkgRGF0ZUluc3RhbmNlKGV4ZWMs
IHN0cnVjdHVyZSwgZGF0ZSkpOwogICAgICAgICB9CiAgICAgICAgIHN0YXRpYyBEYXRlSW5zdGFu
Y2UqIGNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZSogc3RydWN0dXJlKQogICAgICAg
ICB7Ci0gICAgICAgICAgICByZXR1cm4gbmV3IChhbGxvY2F0ZUNlbGw8RGF0ZUluc3RhbmNlPigq
ZXhlYy0+aGVhcCgpKSkgRGF0ZUluc3RhbmNlKGV4ZWMsIHN0cnVjdHVyZSk7CisgICAgICAgICAg
ICByZXR1cm4gdmFsaWRhdGVBbGxvYzxEYXRlSW5zdGFuY2U+KGV4ZWMtPmdsb2JhbERhdGEoKSwg
bmV3IChhbGxvY2F0ZUNlbGw8RGF0ZUluc3RhbmNlPigqZXhlYy0+aGVhcCgpKSkgRGF0ZUluc3Rh
bmNlKGV4ZWMsIHN0cnVjdHVyZSkpOwogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBkb3Vi
bGUgaW50ZXJuYWxOdW1iZXIoKSBjb25zdCB7IHJldHVybiBpbnRlcm5hbFZhbHVlKCkudW5jaGVj
a2VkR2V0TnVtYmVyKCk7IH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Rh
dGVQcm90b3R5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9EYXRlUHJvdG90eXBlLmgJKHJldmlzaW9uIDkxOTM5KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvRGF0ZVByb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw3ICszNCw3
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHB1YmxpYzoKICAgICAgICAgc3RhdGljIERhdGVQcm90
b3R5cGUqIGNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIFN0cnVjdHVyZSogc3RydWN0dXJlKQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4g
bmV3IChhbGxvY2F0ZUNlbGw8RGF0ZVByb3RvdHlwZT4oKmV4ZWMtPmhlYXAoKSkpIERhdGVQcm90
b3R5cGUoZXhlYywgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUpOworICAgICAgICAgICAgcmV0dXJu
IHZhbGlkYXRlQWxsb2M8RGF0ZVByb3RvdHlwZT4oZXhlYy0+Z2xvYmFsRGF0YSgpLCBuZXcgKGFs
bG9jYXRlQ2VsbDxEYXRlUHJvdG90eXBlPigqZXhlYy0+aGVhcCgpKSkgRGF0ZVByb3RvdHlwZShl
eGVjLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSkpOwogICAgICAgICB9CiAgICAgICAgIHZpcnR1
YWwgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYs
IFByb3BlcnR5U2xvdCYpOwogICAgICAgICB2aXJ0dWFsIGJvb2wgZ2V0T3duUHJvcGVydHlEZXNj
cmlwdG9yKEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBQcm9wZXJ0eURlc2NyaXB0b3Im
KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvci5jcHAJKHJldmlzaW9u
IDkxOTM5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3IuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xNzYsNyArMTc2LDcgQEAgcHJpdmF0ZToKIHB1YmxpYzoKICAgICBzdGF0
aWMgU3RyaWN0TW9kZVR5cGVFcnJvckZ1bmN0aW9uKiBjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgY29uc3Qg
VVN0cmluZyYgbWVzc2FnZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBuZXcgKGFsbG9jYXRlQ2Vs
bDxTdHJpY3RNb2RlVHlwZUVycm9yRnVuY3Rpb24+KCpleGVjLT5oZWFwKCkpKSBTdHJpY3RNb2Rl
VHlwZUVycm9yRnVuY3Rpb24oZXhlYywgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIG1lc3NhZ2Up
OworICAgICAgICByZXR1cm4gdmFsaWRhdGVBbGxvYzxTdHJpY3RNb2RlVHlwZUVycm9yRnVuY3Rp
b24+KGV4ZWMtPmdsb2JhbERhdGEoKSwgbmV3IChhbGxvY2F0ZUNlbGw8U3RyaWN0TW9kZVR5cGVF
cnJvckZ1bmN0aW9uPigqZXhlYy0+aGVhcCgpKSkgU3RyaWN0TW9kZVR5cGVFcnJvckZ1bmN0aW9u
KGV4ZWMsIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBtZXNzYWdlKSk7CiAgICAgfQogICAgIAog
ICAgIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdFRocm93VHlw
ZUVycm9yKEV4ZWNTdGF0ZSogZXhlYykKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0Vycm9yQ29uc3RydWN0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9FcnJvckNvbnN0cnVjdG9yLmgJKHJldmlzaW9uIDkxOTM5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JDb25zdHJ1Y3Rvci5oCSh3b3JraW5nIGNvcHkp
CkBAIC0zNSw3ICszNSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHB1YmxpYzoKICAgICAgICAg
c3RhdGljIEVycm9yQ29uc3RydWN0b3IqIGNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBFcnJvclByb3RvdHlw
ZSogZXJyUHJvdG90eXBlKQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gbmV3IChhbGxv
Y2F0ZUNlbGw8RXJyb3JDb25zdHJ1Y3Rvcj4oKmV4ZWMtPmhlYXAoKSkpIEVycm9yQ29uc3RydWN0
b3IoZXhlYywgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIGVyclByb3RvdHlwZSk7CisgICAgICAg
ICAgICByZXR1cm4gdmFsaWRhdGVBbGxvYzxFcnJvckNvbnN0cnVjdG9yPihleGVjLT5nbG9iYWxE
YXRhKCksIG5ldyAoYWxsb2NhdGVDZWxsPEVycm9yQ29uc3RydWN0b3I+KCpleGVjLT5oZWFwKCkp
KSBFcnJvckNvbnN0cnVjdG9yKGV4ZWMsIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBlcnJQcm90
b3R5cGUpKTsKICAgICAgICAgfQogICAgICAgICAKICAgICBwcml2YXRlOgpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JJbnN0YW5jZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JJbnN0YW5jZS5jcHAJKHJldmlzaW9u
IDkxOTM5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JJbnN0YW5jZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTMwLDcgKzMwLDkgQEAgRXJyb3JJbnN0YW5jZTo6RXJyb3JJ
bnN0YW5jZShKU0dsb2JhbERhdAogICAgICwgbV9hcHBlbmRTb3VyY2VUb01lc3NhZ2UoZmFsc2Up
CiB7CiAgICAgQVNTRVJUKGluaGVyaXRzKCZzX2luZm8pKTsKKyAgICBnbG9iYWxEYXRhLnNldElu
aXRpYWxpemluZ09iamVjdChmYWxzZSk7CiAgICAgcHV0RGlyZWN0KGdsb2JhbERhdGEsIGdsb2Jh
bERhdGEucHJvcGVydHlOYW1lcy0+bWVzc2FnZSwganNTdHJpbmcoJmdsb2JhbERhdGEsICIiKSwg
RG9udEVudW0pOworICAgIGdsb2JhbERhdGEuc2V0SW5pdGlhbGl6aW5nT2JqZWN0KHRydWUpOwog
fQogCiBFcnJvckluc3RhbmNlOjpFcnJvckluc3RhbmNlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0
YSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IFVTdHJpbmcmIG1lc3NhZ2UpCkBAIC0zOCwx
OSArNDAsMjEgQEAgRXJyb3JJbnN0YW5jZTo6RXJyb3JJbnN0YW5jZShKU0dsb2JhbERhdAogICAg
ICwgbV9hcHBlbmRTb3VyY2VUb01lc3NhZ2UoZmFsc2UpCiB7CiAgICAgQVNTRVJUKGluaGVyaXRz
KCZzX2luZm8pKTsKKyAgICBnbG9iYWxEYXRhLnNldEluaXRpYWxpemluZ09iamVjdChmYWxzZSk7
CiAgICAgcHV0RGlyZWN0KGdsb2JhbERhdGEsIGdsb2JhbERhdGEucHJvcGVydHlOYW1lcy0+bWVz
c2FnZSwganNTdHJpbmcoJmdsb2JhbERhdGEsIG1lc3NhZ2UpLCBEb250RW51bSk7CisgICAgZ2xv
YmFsRGF0YS5zZXRJbml0aWFsaXppbmdPYmplY3QodHJ1ZSk7CiB9CiAKIEVycm9ySW5zdGFuY2Uq
IEVycm9ySW5zdGFuY2U6OmNyZWF0ZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFN0cnVjdHVy
ZSogc3RydWN0dXJlLCBjb25zdCBVU3RyaW5nJiBtZXNzYWdlKQogewotICAgIHJldHVybiBuZXcg
KGFsbG9jYXRlQ2VsbDxFcnJvckluc3RhbmNlPihnbG9iYWxEYXRhLmhlYXApKSBFcnJvckluc3Rh
bmNlKGdsb2JhbERhdGEsIHN0cnVjdHVyZSwgbWVzc2FnZSk7CisgICAgcmV0dXJuIHZhbGlkYXRl
QWxsb2M8RXJyb3JJbnN0YW5jZT4oZ2xvYmFsRGF0YSwgbmV3IChhbGxvY2F0ZUNlbGw8RXJyb3JJ
bnN0YW5jZT4oZ2xvYmFsRGF0YS5oZWFwKSkgRXJyb3JJbnN0YW5jZShnbG9iYWxEYXRhLCBzdHJ1
Y3R1cmUsIG1lc3NhZ2UpKTsKIH0KIAogRXJyb3JJbnN0YW5jZSogRXJyb3JJbnN0YW5jZTo6Y3Jl
YXRlKEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTVmFsdWUgbWVzc2Fn
ZSkKIHsKICAgICBpZiAobWVzc2FnZS5pc1VuZGVmaW5lZCgpKQotICAgICAgICByZXR1cm4gbmV3
IChhbGxvY2F0ZUNlbGw8RXJyb3JJbnN0YW5jZT4oKmV4ZWMtPmhlYXAoKSkpIEVycm9ySW5zdGFu
Y2UoZXhlYy0+Z2xvYmFsRGF0YSgpLCBzdHJ1Y3R1cmUpOwotICAgIHJldHVybiBuZXcgKGFsbG9j
YXRlQ2VsbDxFcnJvckluc3RhbmNlPigqZXhlYy0+aGVhcCgpKSkgRXJyb3JJbnN0YW5jZShleGVj
LT5nbG9iYWxEYXRhKCksIHN0cnVjdHVyZSwgbWVzc2FnZS50b1N0cmluZyhleGVjKSk7CisgICAg
ICAgIHJldHVybiB2YWxpZGF0ZUFsbG9jPEVycm9ySW5zdGFuY2U+KGV4ZWMtPmdsb2JhbERhdGEo
KSwgbmV3IChhbGxvY2F0ZUNlbGw8RXJyb3JJbnN0YW5jZT4oKmV4ZWMtPmhlYXAoKSkpIEVycm9y
SW5zdGFuY2UoZXhlYy0+Z2xvYmFsRGF0YSgpLCBzdHJ1Y3R1cmUpKTsKKyAgICByZXR1cm4gdmFs
aWRhdGVBbGxvYzxFcnJvckluc3RhbmNlPihleGVjLT5nbG9iYWxEYXRhKCksIG5ldyAoYWxsb2Nh
dGVDZWxsPEVycm9ySW5zdGFuY2U+KCpleGVjLT5oZWFwKCkpKSBFcnJvckluc3RhbmNlKGV4ZWMt
Pmdsb2JhbERhdGEoKSwgc3RydWN0dXJlLCBtZXNzYWdlLnRvU3RyaW5nKGV4ZWMpKSk7CiB9CiAK
IH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
RXJyb3JQcm90b3R5cGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0Vycm9yUHJvdG90eXBlLmNwcAkocmV2aXNpb24gOTE5MzkpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9FcnJvclByb3RvdHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTUzLDEwICs1MywxMyBAQCBBU1NFUlRfQ0xBU1NfRklUU19JTl9DRUxMKEVycm9yUHJvdG90eXBl
CiBFcnJvclByb3RvdHlwZTo6RXJyb3JQcm90b3R5cGUoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAgICA6IEVycm9y
SW5zdGFuY2UoZXhlYy0+Z2xvYmFsRGF0YSgpLCBzdHJ1Y3R1cmUpCiB7CisgICAgZXhlYy0+Z2xv
YmFsRGF0YSgpLnNldEluaXRpYWxpemluZ09iamVjdChmYWxzZSk7CiAgICAgcHV0RGlyZWN0KGV4
ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLm5hbWUsIGpzTm9udHJpdmlh
bFN0cmluZyhleGVjLCAiRXJyb3IiKSwgRG9udEVudW0pOwogCiAgICAgQVNTRVJUKGluaGVyaXRz
KCZzX2luZm8pKTsKKyAgICBleGVjLT5nbG9iYWxEYXRhKCkuc2V0SW5pdGlhbGl6aW5nT2JqZWN0
KGZhbHNlKTsKICAgICBwdXRBbm9ueW1vdXNWYWx1ZShnbG9iYWxPYmplY3QtPmdsb2JhbERhdGEo
KSwgMCwgZ2xvYmFsT2JqZWN0KTsKKyAgICBleGVjLT5nbG9iYWxEYXRhKCkuc2V0SW5pdGlhbGl6
aW5nT2JqZWN0KHRydWUpOwogfQogCiBib29sIEVycm9yUHJvdG90eXBlOjpnZXRPd25Qcm9wZXJ0
eVNsb3QoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFBy
b3BlcnR5U2xvdCAmc2xvdCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vy
cm9yUHJvdG90eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvRXJyb3JQcm90b3R5cGUuaAkocmV2aXNpb24gOTE5MzkpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9FcnJvclByb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw3ICsz
NCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHB1YmxpYzoKICAgICAgICAgc3RhdGljIEVycm9y
UHJvdG90eXBlKiBjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAgICAgICAgewotICAgICAgICAgICAgcmV0
dXJuIG5ldyAoYWxsb2NhdGVDZWxsPEVycm9yUHJvdG90eXBlPigqZXhlYy0+aGVhcCgpKSkgRXJy
b3JQcm90b3R5cGUoZXhlYywgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUpOworICAgICAgICAgICAg
cmV0dXJuIHZhbGlkYXRlQWxsb2M8RXJyb3JQcm90b3R5cGU+KGV4ZWMtPmdsb2JhbERhdGEoKSwg
bmV3IChhbGxvY2F0ZUNlbGw8RXJyb3JQcm90b3R5cGU+KCpleGVjLT5oZWFwKCkpKSBFcnJvclBy
b3RvdHlwZShleGVjLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSkpOwogICAgICAgICB9CiAgICAg
ICAgIAogICAgICAgICBzdGF0aWMgY29uc3QgQ2xhc3NJbmZvIHNfaW5mbzsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4Y2VwdGlvbkhlbHBlcnMuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4Y2VwdGlvbkhlbHBlcnMuY3BwCShy
ZXZpc2lvbiA5MTkzOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4Y2VwdGlv
bkhlbHBlcnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MSw3ICs1MSw3IEBAIHByaXZhdGU6CiBw
dWJsaWM6CiAgICAgc3RhdGljIEludGVycnVwdGVkRXhlY3V0aW9uRXJyb3IqIGNyZWF0ZShKU0ds
b2JhbERhdGEmIGdsb2JhbERhdGEpCiAgICAgewotICAgICAgICByZXR1cm4gbmV3IChhbGxvY2F0
ZUNlbGw8SW50ZXJydXB0ZWRFeGVjdXRpb25FcnJvcj4oZ2xvYmFsRGF0YS5oZWFwKSkgSW50ZXJy
dXB0ZWRFeGVjdXRpb25FcnJvcihnbG9iYWxEYXRhKTsKKyAgICAgICAgcmV0dXJuIHZhbGlkYXRl
QWxsb2M8SW50ZXJydXB0ZWRFeGVjdXRpb25FcnJvcj4oZ2xvYmFsRGF0YSwgbmV3IChhbGxvY2F0
ZUNlbGw8SW50ZXJydXB0ZWRFeGVjdXRpb25FcnJvcj4oZ2xvYmFsRGF0YS5oZWFwKSkgSW50ZXJy
dXB0ZWRFeGVjdXRpb25FcnJvcihnbG9iYWxEYXRhKSk7CiAgICAgfQogCiAgICAgdmlydHVhbCBD
b21wbFR5cGUgZXhjZXB0aW9uVHlwZSgpIGNvbnN0IHsgcmV0dXJuIEludGVycnVwdGVkOyB9CkBA
IC03NCw3ICs3NCw3IEBAIHByaXZhdGU6CiBwdWJsaWM6CiAgICAgc3RhdGljIFRlcm1pbmF0ZWRF
eGVjdXRpb25FcnJvciogY3JlYXRlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSkKICAgICB7Ci0g
ICAgICAgIHJldHVybiBuZXcgKGFsbG9jYXRlQ2VsbDxUZXJtaW5hdGVkRXhlY3V0aW9uRXJyb3I+
KGdsb2JhbERhdGEuaGVhcCkpIFRlcm1pbmF0ZWRFeGVjdXRpb25FcnJvcihnbG9iYWxEYXRhKTsK
KyAgICAgICAgcmV0dXJuIHZhbGlkYXRlQWxsb2M8VGVybWluYXRlZEV4ZWN1dGlvbkVycm9yPihn
bG9iYWxEYXRhLCBuZXcgKGFsbG9jYXRlQ2VsbDxUZXJtaW5hdGVkRXhlY3V0aW9uRXJyb3I+KGds
b2JhbERhdGEuaGVhcCkpIFRlcm1pbmF0ZWRFeGVjdXRpb25FcnJvcihnbG9iYWxEYXRhKSk7CiAg
ICAgfQogCiAgICAgdmlydHVhbCBDb21wbFR5cGUgZXhjZXB0aW9uVHlwZSgpIGNvbnN0IHsgcmV0
dXJuIFRlcm1pbmF0ZWQ7IH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4
ZWN1dGFibGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9F
eGVjdXRhYmxlLmgJKHJldmlzaW9uIDkxOTM5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvRXhlY3V0YWJsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC02OCw3ICs2OCw3IEBAIG5hbWVz
cGFjZSBKU0MgewogICAgIHB1YmxpYzoKICAgICAgICAgc3RhdGljIEV4ZWN1dGFibGVCYXNlKiBj
cmVhdGUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgaW50
IG51bVBhcmFtZXRlcnMpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBuZXcgKGFsbG9j
YXRlQ2VsbDxFeGVjdXRhYmxlQmFzZT4oZ2xvYmFsRGF0YS5oZWFwKSkgRXhlY3V0YWJsZUJhc2Uo
Z2xvYmFsRGF0YSwgc3RydWN0dXJlLCBudW1QYXJhbWV0ZXJzKTsKKyAgICAgICAgICAgIHJldHVy
biB2YWxpZGF0ZUFsbG9jPEV4ZWN1dGFibGVCYXNlPihnbG9iYWxEYXRhLCBuZXcgKGFsbG9jYXRl
Q2VsbDxFeGVjdXRhYmxlQmFzZT4oZ2xvYmFsRGF0YS5oZWFwKSkgRXhlY3V0YWJsZUJhc2UoZ2xv
YmFsRGF0YSwgc3RydWN0dXJlLCBudW1QYXJhbWV0ZXJzKSk7CiAgICAgICAgIH0KIAogICAgICAg
ICBib29sIGlzSG9zdEZ1bmN0aW9uKCkgY29uc3QKQEAgLTE3MiwxMyArMTcyLDEzIEBAIG5hbWVz
cGFjZSBKU0MgewogICAgICAgICBzdGF0aWMgTmF0aXZlRXhlY3V0YWJsZSogY3JlYXRlKEpTR2xv
YmFsRGF0YSYgZ2xvYmFsRGF0YSwgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyIGNhbGxUaHVuaywgTmF0
aXZlRnVuY3Rpb24gZnVuY3Rpb24sIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciBjb25zdHJ1Y3RUaHVu
aywgTmF0aXZlRnVuY3Rpb24gY29uc3RydWN0b3IpCiAgICAgICAgIHsKICAgICAgICAgICAgIGlm
ICghY2FsbFRodW5rKQotICAgICAgICAgICAgICAgIHJldHVybiBuZXcgKGFsbG9jYXRlQ2VsbDxO
YXRpdmVFeGVjdXRhYmxlPihnbG9iYWxEYXRhLmhlYXApKSBOYXRpdmVFeGVjdXRhYmxlKGdsb2Jh
bERhdGEsIEpJVENvZGUoKSwgZnVuY3Rpb24sIEpJVENvZGUoKSwgY29uc3RydWN0b3IpOwotICAg
ICAgICAgICAgcmV0dXJuIG5ldyAoYWxsb2NhdGVDZWxsPE5hdGl2ZUV4ZWN1dGFibGU+KGdsb2Jh
bERhdGEuaGVhcCkpIE5hdGl2ZUV4ZWN1dGFibGUoZ2xvYmFsRGF0YSwgSklUQ29kZTo6SG9zdEZ1
bmN0aW9uKGNhbGxUaHVuayksIGZ1bmN0aW9uLCBKSVRDb2RlOjpIb3N0RnVuY3Rpb24oY29uc3Ry
dWN0VGh1bmspLCBjb25zdHJ1Y3Rvcik7CisgICAgICAgICAgICAgICAgcmV0dXJuIHZhbGlkYXRl
QWxsb2M8TmF0aXZlRXhlY3V0YWJsZT4oZ2xvYmFsRGF0YSwgbmV3IChhbGxvY2F0ZUNlbGw8TmF0
aXZlRXhlY3V0YWJsZT4oZ2xvYmFsRGF0YS5oZWFwKSkgTmF0aXZlRXhlY3V0YWJsZShnbG9iYWxE
YXRhLCBKSVRDb2RlKCksIGZ1bmN0aW9uLCBKSVRDb2RlKCksIGNvbnN0cnVjdG9yKSk7CisgICAg
ICAgICAgICByZXR1cm4gdmFsaWRhdGVBbGxvYzxOYXRpdmVFeGVjdXRhYmxlPihnbG9iYWxEYXRh
LCBuZXcgKGFsbG9jYXRlQ2VsbDxOYXRpdmVFeGVjdXRhYmxlPihnbG9iYWxEYXRhLmhlYXApKSBO
YXRpdmVFeGVjdXRhYmxlKGdsb2JhbERhdGEsIEpJVENvZGU6Okhvc3RGdW5jdGlvbihjYWxsVGh1
bmspLCBmdW5jdGlvbiwgSklUQ29kZTo6SG9zdEZ1bmN0aW9uKGNvbnN0cnVjdFRodW5rKSwgY29u
c3RydWN0b3IpKTsKICAgICAgICAgfQogI2Vsc2UKICAgICAgICAgc3RhdGljIE5hdGl2ZUV4ZWN1
dGFibGUqIGNyZWF0ZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIE5hdGl2ZUZ1bmN0aW9uIGZ1
bmN0aW9uLCBOYXRpdmVGdW5jdGlvbiBjb25zdHJ1Y3RvcikKICAgICAgICAgewotICAgICAgICAg
ICAgcmV0dXJuIG5ldyAoYWxsb2NhdGVDZWxsPE5hdGl2ZUV4ZWN1dGFibGU+KGdsb2JhbERhdGEu
aGVhcCkpIE5hdGl2ZUV4ZWN1dGFibGUoZ2xvYmFsRGF0YSwgZnVuY3Rpb24sIGNvbnN0cnVjdG9y
KTsKKyAgICAgICAgICAgIHJldHVybiB2YWxpZGF0ZUFsbG9jPE5hdGl2ZUV4ZWN1dGFibGU+KGds
b2JhbERhdGEsIG5ldyAoYWxsb2NhdGVDZWxsPE5hdGl2ZUV4ZWN1dGFibGU+KGdsb2JhbERhdGEu
aGVhcCkpIE5hdGl2ZUV4ZWN1dGFibGUoZ2xvYmFsRGF0YSwgZnVuY3Rpb24sIGNvbnN0cnVjdG9y
KSk7CiAgICAgICAgIH0KICNlbmRpZgogCkBAIC0yOTgsNyArMjk4LDcgQEAgbmFtZXNwYWNlIEpT
QyB7CiAKICAgICAgICAgc3RhdGljIEV2YWxFeGVjdXRhYmxlKiBjcmVhdGUoRXhlY1N0YXRlKiBl
eGVjLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIGJvb2wgaXNJblN0cmljdENvbnRleHQpIAog
ICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gbmV3IChhbGxvY2F0ZUNlbGw8RXZhbEV4ZWN1
dGFibGU+KCpleGVjLT5oZWFwKCkpKSBFdmFsRXhlY3V0YWJsZShleGVjLCBzb3VyY2UsIGlzSW5T
dHJpY3RDb250ZXh0KTsgCisgICAgICAgICAgICByZXR1cm4gdmFsaWRhdGVBbGxvYzxFdmFsRXhl
Y3V0YWJsZT4oZXhlYy0+Z2xvYmFsRGF0YSgpLCBuZXcgKGFsbG9jYXRlQ2VsbDxFdmFsRXhlY3V0
YWJsZT4oKmV4ZWMtPmhlYXAoKSkpIEV2YWxFeGVjdXRhYmxlKGV4ZWMsIHNvdXJjZSwgaXNJblN0
cmljdENvbnRleHQpKTsKICAgICAgICAgfQogCiAjaWYgRU5BQkxFKEpJVCkKQEAgLTMyOCw3ICsz
MjgsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBwdWJsaWM6CiAgICAgICAgIHN0YXRpYyBQcm9n
cmFtRXhlY3V0YWJsZSogY3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgU291cmNlQ29kZSYg
c291cmNlKQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gbmV3IChhbGxvY2F0ZUNlbGw8
UHJvZ3JhbUV4ZWN1dGFibGU+KCpleGVjLT5oZWFwKCkpKSBQcm9ncmFtRXhlY3V0YWJsZShleGVj
LCBzb3VyY2UpOworICAgICAgICAgICAgcmV0dXJuIHZhbGlkYXRlQWxsb2M8UHJvZ3JhbUV4ZWN1
dGFibGU+KGV4ZWMtPmdsb2JhbERhdGEoKSwgbmV3IChhbGxvY2F0ZUNlbGw8UHJvZ3JhbUV4ZWN1
dGFibGU+KCpleGVjLT5oZWFwKCkpKSBQcm9ncmFtRXhlY3V0YWJsZShleGVjLCBzb3VyY2UpKTsK
ICAgICAgICAgfQogCiAgICAgICAgIH5Qcm9ncmFtRXhlY3V0YWJsZSgpOwpAQCAtMzgxLDEyICsz
ODEsMTIgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgcHVibGljOgogICAgICAgICBzdGF0aWMgRnVu
Y3Rpb25FeGVjdXRhYmxlKiBjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVy
JiBuYW1lLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIGJvb2wgZm9yY2VVc2VzQXJndW1lbnRz
LCBGdW5jdGlvblBhcmFtZXRlcnMqIHBhcmFtZXRlcnMsIGJvb2wgaXNJblN0cmljdENvbnRleHQs
IGludCBmaXJzdExpbmUsIGludCBsYXN0TGluZSkKICAgICAgICAgewotICAgICAgICAgICAgcmV0
dXJuIG5ldyAoYWxsb2NhdGVDZWxsPEZ1bmN0aW9uRXhlY3V0YWJsZT4oKmV4ZWMtPmhlYXAoKSkp
IEZ1bmN0aW9uRXhlY3V0YWJsZShleGVjLCBuYW1lLCBzb3VyY2UsIGZvcmNlVXNlc0FyZ3VtZW50
cywgcGFyYW1ldGVycywgaXNJblN0cmljdENvbnRleHQsIGZpcnN0TGluZSwgbGFzdExpbmUpOwor
ICAgICAgICAgICAgcmV0dXJuIHZhbGlkYXRlQWxsb2M8RnVuY3Rpb25FeGVjdXRhYmxlPihleGVj
LT5nbG9iYWxEYXRhKCksIG5ldyAoYWxsb2NhdGVDZWxsPEZ1bmN0aW9uRXhlY3V0YWJsZT4oKmV4
ZWMtPmhlYXAoKSkpIEZ1bmN0aW9uRXhlY3V0YWJsZShleGVjLCBuYW1lLCBzb3VyY2UsIGZvcmNl
VXNlc0FyZ3VtZW50cywgcGFyYW1ldGVycywgaXNJblN0cmljdENvbnRleHQsIGZpcnN0TGluZSwg
bGFzdExpbmUpKTsKICAgICAgICAgfQogCiAgICAgICAgIHN0YXRpYyBGdW5jdGlvbkV4ZWN1dGFi
bGUqIGNyZWF0ZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIGNvbnN0IElkZW50aWZpZXImIG5h
bWUsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgYm9vbCBmb3JjZVVzZXNBcmd1bWVudHMsIEZ1
bmN0aW9uUGFyYW1ldGVycyogcGFyYW1ldGVycywgYm9vbCBpc0luU3RyaWN0Q29udGV4dCwgaW50
IGZpcnN0TGluZSwgaW50IGxhc3RMaW5lKQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4g
bmV3IChhbGxvY2F0ZUNlbGw8RnVuY3Rpb25FeGVjdXRhYmxlPihnbG9iYWxEYXRhLmhlYXApKSBG
dW5jdGlvbkV4ZWN1dGFibGUoZ2xvYmFsRGF0YSwgbmFtZSwgc291cmNlLCBmb3JjZVVzZXNBcmd1
bWVudHMsIHBhcmFtZXRlcnMsIGlzSW5TdHJpY3RDb250ZXh0LCBmaXJzdExpbmUsIGxhc3RMaW5l
KTsKKyAgICAgICAgICAgIHJldHVybiB2YWxpZGF0ZUFsbG9jPEZ1bmN0aW9uRXhlY3V0YWJsZT4o
Z2xvYmFsRGF0YSwgbmV3IChhbGxvY2F0ZUNlbGw8RnVuY3Rpb25FeGVjdXRhYmxlPihnbG9iYWxE
YXRhLmhlYXApKSBGdW5jdGlvbkV4ZWN1dGFibGUoZ2xvYmFsRGF0YSwgbmFtZSwgc291cmNlLCBm
b3JjZVVzZXNBcmd1bWVudHMsIHBhcmFtZXRlcnMsIGlzSW5TdHJpY3RDb250ZXh0LCBmaXJzdExp
bmUsIGxhc3RMaW5lKSk7CiAgICAgICAgIH0KIAogICAgICAgICBKU0Z1bmN0aW9uKiBtYWtlKEV4
ZWNTdGF0ZSogZXhlYywgU2NvcGVDaGFpbk5vZGUqIHNjb3BlQ2hhaW4pCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Db25zdHJ1Y3Rvci5oCShy
ZXZpc2lvbiA5MTkzOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9u
Q29uc3RydWN0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtMzQsNyArMzQsNyBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICBwdWJsaWM6CiAgICAgICAgIHN0YXRpYyBGdW5jdGlvbkNvbnN0cnVjdG9yKiBj
cmVhdGUoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSwgRnVuY3Rpb25Qcm90b3R5cGUqIGZ1bmNQcm90b3R5cGUpCiAgICAg
ICAgIHsKLSAgICAgICAgICAgIHJldHVybiBuZXcgKGFsbG9jYXRlQ2VsbDxGdW5jdGlvbkNvbnN0
cnVjdG9yPigqZXhlYy0+aGVhcCgpKSkgRnVuY3Rpb25Db25zdHJ1Y3RvcihleGVjLCBnbG9iYWxP
YmplY3QsIHN0cnVjdHVyZSwgZnVuY1Byb3RvdHlwZSk7CisgICAgICAgICAgICByZXR1cm4gdmFs
aWRhdGVBbGxvYzxGdW5jdGlvbkNvbnN0cnVjdG9yPihleGVjLT5nbG9iYWxEYXRhKCksIG5ldyAo
YWxsb2NhdGVDZWxsPEZ1bmN0aW9uQ29uc3RydWN0b3I+KCpleGVjLT5oZWFwKCkpKSBGdW5jdGlv
bkNvbnN0cnVjdG9yKGV4ZWMsIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBmdW5jUHJvdG90eXBl
KSk7CiAgICAgICAgIH0KIAogICAgIHByaXZhdGU6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9GdW5jdGlvblByb3RvdHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uUHJvdG90eXBlLmgJKHJldmlzaW9uIDkxOTM5KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUuaAkod29y
a2luZyBjb3B5KQpAQCAtMzIsNyArMzIsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBwdWJsaWM6
CiAgICAgICAgIHN0YXRpYyBGdW5jdGlvblByb3RvdHlwZSogY3JlYXRlKEV4ZWNTdGF0ZSogZXhl
YywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAg
ICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBuZXcgKGFsbG9jYXRlQ2VsbDxGdW5jdGlvblBy
b3RvdHlwZT4oKmV4ZWMtPmhlYXAoKSkpIEZ1bmN0aW9uUHJvdG90eXBlKGV4ZWMsIGdsb2JhbE9i
amVjdCwgc3RydWN0dXJlKTsKKyAgICAgICAgICAgIHJldHVybiB2YWxpZGF0ZUFsbG9jPEZ1bmN0
aW9uUHJvdG90eXBlPihleGVjLT5nbG9iYWxEYXRhKCksIG5ldyAoYWxsb2NhdGVDZWxsPEZ1bmN0
aW9uUHJvdG90eXBlPigqZXhlYy0+aGVhcCgpKSkgRnVuY3Rpb25Qcm90b3R5cGUoZXhlYywgZ2xv
YmFsT2JqZWN0LCBzdHJ1Y3R1cmUpKTsKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgdm9p
ZCBhZGRGdW5jdGlvblByb3BlcnRpZXMoRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1
Y3R1cmUqIGZ1bmN0aW9uU3RydWN0dXJlLCBKU0Z1bmN0aW9uKiogY2FsbEZ1bmN0aW9uLCBKU0Z1
bmN0aW9uKiogYXBwbHlGdW5jdGlvbik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9HZXR0ZXJTZXR0ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9HZXR0ZXJTZXR0ZXIuaAkocmV2aXNpb24gOTE5MzkpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9HZXR0ZXJTZXR0ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNDYsNyAr
NDYsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBwdWJsaWM6CiAgICAgICAgIHN0YXRpYyBHZXR0
ZXJTZXR0ZXIqIGNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMpCiAgICAgICAgIHsKLSAgICAgICAgICAg
IHJldHVybiBuZXcgKGFsbG9jYXRlQ2VsbDxHZXR0ZXJTZXR0ZXI+KCpleGVjLT5oZWFwKCkpKSBH
ZXR0ZXJTZXR0ZXIoZXhlYyk7CisgICAgICAgICAgICByZXR1cm4gdmFsaWRhdGVBbGxvYzxHZXR0
ZXJTZXR0ZXI+KGV4ZWMtPmdsb2JhbERhdGEoKSwgbmV3IChhbGxvY2F0ZUNlbGw8R2V0dGVyU2V0
dGVyPigqZXhlYy0+aGVhcCgpKSkgR2V0dGVyU2V0dGVyKGV4ZWMpKTsKICAgICAgICAgfQogCiAg
ICAgICAgIHZpcnR1YWwgdm9pZCB2aXNpdENoaWxkcmVuKFNsb3RWaXNpdG9yJik7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRlcm5hbEZ1bmN0aW9uLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRlcm5hbEZ1bmN0aW9uLmNw
cAkocmV2aXNpb24gOTE5MzkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRl
cm5hbEZ1bmN0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDUsNyArNDUsOSBAQCBJbnRlcm5h
bEZ1bmN0aW9uOjpJbnRlcm5hbEZ1bmN0aW9uKEpTR2xvCiAgICAgOiBKU09iamVjdFdpdGhHbG9i
YWxPYmplY3QoZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUpCiB7CiAgICAgQVNTRVJUKGluaGVyaXRz
KCZzX2luZm8pKTsKKyAgICBnbG9iYWxEYXRhLT5zZXRJbml0aWFsaXppbmdPYmplY3QoZmFsc2Up
OwogICAgIHB1dERpcmVjdCgqZ2xvYmFsRGF0YSwgZ2xvYmFsRGF0YS0+cHJvcGVydHlOYW1lcy0+
bmFtZSwganNTdHJpbmcoZ2xvYmFsRGF0YSwgbmFtZS5pc051bGwoKSA/ICIiIDogbmFtZS51c3Ry
aW5nKCkpLCBEb250RGVsZXRlIHwgUmVhZE9ubHkgfCBEb250RW51bSk7CisgICAgZ2xvYmFsRGF0
YS0+c2V0SW5pdGlhbGl6aW5nT2JqZWN0KHRydWUpOwogfQogCiBjb25zdCBVU3RyaW5nJiBJbnRl
cm5hbEZ1bmN0aW9uOjpuYW1lKEV4ZWNTdGF0ZSogZXhlYykKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTQVBJVmFsdWVXcmFwcGVyLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBUElWYWx1ZVdyYXBwZXIuaAkocmV2aXNpb24gOTE5
MzkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FQSVZhbHVlV3JhcHBlci5o
CSh3b3JraW5nIGNvcHkpCkBAIC00NSw3ICs0NSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAg
ICAKICAgICAgICAgc3RhdGljIEpTQVBJVmFsdWVXcmFwcGVyKiBjcmVhdGUoRXhlY1N0YXRlKiBl
eGVjLCBKU1ZhbHVlIHZhbHVlKSAKICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIG5ldyAo
YWxsb2NhdGVDZWxsPEpTQVBJVmFsdWVXcmFwcGVyPigqZXhlYy0+aGVhcCgpKSkgSlNBUElWYWx1
ZVdyYXBwZXIoZXhlYywgdmFsdWUpOworICAgICAgICAgICAgcmV0dXJuIHZhbGlkYXRlQWxsb2M8
SlNBUElWYWx1ZVdyYXBwZXI+KGV4ZWMtPmdsb2JhbERhdGEoKSwgbmV3IChhbGxvY2F0ZUNlbGw8
SlNBUElWYWx1ZVdyYXBwZXI+KCpleGVjLT5oZWFwKCkpKSBKU0FQSVZhbHVlV3JhcHBlcihleGVj
LCB2YWx1ZSkpOwogICAgICAgICB9CiAKICAgICBwcml2YXRlOgpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNBY3RpdmF0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBY3RpdmF0aW9uLmgJKHJldmlzaW9uIDkxOTM5KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBY3RpdmF0aW9uLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTQ3LDcgKzQ3LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgcHVibGljOgogICAgICAg
ICBzdGF0aWMgSlNBY3RpdmF0aW9uKiBjcmVhdGUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBD
YWxsRnJhbWUqIGNhbGxGcmFtZSwgRnVuY3Rpb25FeGVjdXRhYmxlKiBmdW5jRXhlYykKICAgICAg
ICAgewotICAgICAgICAgICAgcmV0dXJuIG5ldyAoYWxsb2NhdGVDZWxsPEpTQWN0aXZhdGlvbj4o
Z2xvYmFsRGF0YS5oZWFwKSkgSlNBY3RpdmF0aW9uKGNhbGxGcmFtZSwgZnVuY0V4ZWMpOworICAg
ICAgICAgICAgcmV0dXJuIHZhbGlkYXRlQWxsb2M8SlNBY3RpdmF0aW9uPihnbG9iYWxEYXRhLCBu
ZXcgKGFsbG9jYXRlQ2VsbDxKU0FjdGl2YXRpb24+KGdsb2JhbERhdGEuaGVhcCkpIEpTQWN0aXZh
dGlvbihjYWxsRnJhbWUsIGZ1bmNFeGVjKSk7CiAgICAgICAgIH0KIAogICAgICAgICB2aXJ0dWFs
IH5KU0FjdGl2YXRpb24oKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
QXJyYXkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Fy
cmF5LmgJKHJldmlzaW9uIDkxOTM5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNBcnJheS5oCSh3b3JraW5nIGNvcHkpCkBAIC03MSwxNyArNzEsMTcgQEAgbmFtZXNwYWNlIEpT
QyB7CiAKICAgICAgICAgc3RhdGljIEpTQXJyYXkqIGNyZWF0ZShKU0dsb2JhbERhdGEmIGdsb2Jh
bERhdGEsIFN0cnVjdHVyZSogc3RydWN0dXJlKQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1
cm4gbmV3IChhbGxvY2F0ZUNlbGw8SlNBcnJheT4oZ2xvYmFsRGF0YS5oZWFwKSkgSlNBcnJheShn
bG9iYWxEYXRhLCBzdHJ1Y3R1cmUpOworICAgICAgICAgICAgcmV0dXJuIHZhbGlkYXRlQWxsb2M8
SlNBcnJheT4oZ2xvYmFsRGF0YSwgbmV3IChhbGxvY2F0ZUNlbGw8SlNBcnJheT4oZ2xvYmFsRGF0
YS5oZWFwKSkgSlNBcnJheShnbG9iYWxEYXRhLCBzdHJ1Y3R1cmUpKTsKICAgICAgICAgfQogICAg
ICAgICAKICAgICAgICAgc3RhdGljIEpTQXJyYXkqIGNyZWF0ZShKU0dsb2JhbERhdGEmIGdsb2Jh
bERhdGEsIFN0cnVjdHVyZSogc3RydWN0dXJlLCB1bnNpZ25lZCBpbml0aWFsTGVuZ3RoLCBBcnJh
eUNyZWF0aW9uTW9kZSBjcmVhdGVNb2RlKQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4g
bmV3IChhbGxvY2F0ZUNlbGw8SlNBcnJheT4oZ2xvYmFsRGF0YS5oZWFwKSkgSlNBcnJheShnbG9i
YWxEYXRhLCBzdHJ1Y3R1cmUsIGluaXRpYWxMZW5ndGgsIGNyZWF0ZU1vZGUpOworICAgICAgICAg
ICAgcmV0dXJuIHZhbGlkYXRlQWxsb2M8SlNBcnJheT4oZ2xvYmFsRGF0YSwgbmV3IChhbGxvY2F0
ZUNlbGw8SlNBcnJheT4oZ2xvYmFsRGF0YS5oZWFwKSkgSlNBcnJheShnbG9iYWxEYXRhLCBzdHJ1
Y3R1cmUsIGluaXRpYWxMZW5ndGgsIGNyZWF0ZU1vZGUpKTsKICAgICAgICAgfQogICAgICAgICAK
ICAgICAgICAgc3RhdGljIEpTQXJyYXkqIGNyZWF0ZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEs
IFN0cnVjdHVyZSogc3RydWN0dXJlLCBjb25zdCBBcmdMaXN0JiBpbml0aWFsVmFsdWVzKQogICAg
ICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gbmV3IChhbGxvY2F0ZUNlbGw8SlNBcnJheT4oZ2xv
YmFsRGF0YS5oZWFwKSkgSlNBcnJheShnbG9iYWxEYXRhLCBzdHJ1Y3R1cmUsIGluaXRpYWxWYWx1
ZXMpOworICAgICAgICAgICAgcmV0dXJuIHZhbGlkYXRlQWxsb2M8SlNBcnJheT4oZ2xvYmFsRGF0
YSwgbmV3IChhbGxvY2F0ZUNlbGw8SlNBcnJheT4oZ2xvYmFsRGF0YS5oZWFwKSkgSlNBcnJheShn
bG9iYWxEYXRhLCBzdHJ1Y3R1cmUsIGluaXRpYWxWYWx1ZXMpKTsKICAgICAgICAgfQogICAgICAg
ICAKICAgICAgICAgdmlydHVhbCBib29sIGdldE93blByb3BlcnR5U2xvdChFeGVjU3RhdGUqLCBj
b25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCeXRlQXJyYXkuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQnl0ZUFycmF5LmNwcAkocmV2aXNpb24g
OTE5MzkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0J5dGVBcnJheS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTM5LDEyICszOSwxNCBAQCBKU0J5dGVBcnJheTo6SlNCeXRlQXJy
YXkoRXhlY1N0YXRlKiBleGVjCiAgICAgOiBKU05vbkZpbmFsT2JqZWN0KGV4ZWMtPmdsb2JhbERh
dGEoKSwgc3RydWN0dXJlKQogICAgICwgbV9zdG9yYWdlKHN0b3JhZ2UpCiB7CisgICAgZXhlYy0+
Z2xvYmFsRGF0YSgpLnNldEluaXRpYWxpemluZ09iamVjdChmYWxzZSk7CiAgICAgcHV0RGlyZWN0
KGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+Z2xvYmFsRGF0YSgpLnByb3BlcnR5TmFtZXMtPmxl
bmd0aCwganNOdW1iZXIobV9zdG9yYWdlLT5sZW5ndGgoKSksIFJlYWRPbmx5IHwgRG9udERlbGV0
ZSk7CisgICAgZXhlYy0+Z2xvYmFsRGF0YSgpLnNldEluaXRpYWxpemluZ09iamVjdCh0cnVlKTsK
IH0KICAgICAgICAgCiBKU0J5dGVBcnJheSogSlNCeXRlQXJyYXk6OmNyZWF0ZShFeGVjU3RhdGUq
IGV4ZWMsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBCeXRlQXJyYXkqIHN0b3JhZ2UpCiB7Ci0gICAg
cmV0dXJuIG5ldyAoYWxsb2NhdGVDZWxsPEpTQnl0ZUFycmF5PigqZXhlYy0+aGVhcCgpKSkgSlNC
eXRlQXJyYXkoZXhlYywgc3RydWN0dXJlLCBzdG9yYWdlKTsKKyAgICByZXR1cm4gdmFsaWRhdGVB
bGxvYzxKU0J5dGVBcnJheT4oZXhlYy0+Z2xvYmFsRGF0YSgpLCBuZXcgKGFsbG9jYXRlQ2VsbDxK
U0J5dGVBcnJheT4oKmV4ZWMtPmhlYXAoKSkpIEpTQnl0ZUFycmF5KGV4ZWMsIHN0cnVjdHVyZSwg
c3RvcmFnZSkpOwogfQogCiAjaWYgIUFTU0VSVF9ESVNBQkxFRApJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNDZWxsLmgJKHJldmlzaW9uIDkxOTM5KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmgJKHdvcmtpbmcgY29weSkKQEAgLTM2OCw5ICszNjgs
MjEgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gdm9pZCog
YWxsb2NhdGVDZWxsKEhlYXAmIGhlYXApCiAgICAgeworI2lmIEVOQUJMRShHQ19WQUxJREFUSU9O
KQorICAgICAgICBBU1NFUlQoIWhlYXAuZ2xvYmFsRGF0YSgpLT5pc0luaXRpYWxpemluZ09iamVj
dCgpKTsKKyAgICAgICAgaGVhcC5nbG9iYWxEYXRhKCktPnNldEluaXRpYWxpemluZ09iamVjdCh0
cnVlKTsKKyNlbmRpZgogICAgICAgICByZXR1cm4gaGVhcC5hbGxvY2F0ZShzaXplb2YoVCkpOwog
ICAgIH0KLSAgICAgICAgCisKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gQUxXQVlTX0lOTElO
RSBUKiB2YWxpZGF0ZUFsbG9jKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgVCogdFB0cikKKyAg
ICB7CisjaWYgRU5BQkxFKEdDX1ZBTElEQVRJT04pCisgICAgICAgIEFTU0VSVChnbG9iYWxEYXRh
LmlzSW5pdGlhbGl6aW5nT2JqZWN0KCkpOworICAgICAgICBnbG9iYWxEYXRhLnNldEluaXRpYWxp
emluZ09iamVjdChmYWxzZSk7CisjZW5kaWYKKyAgICAgICAgcmV0dXJuIHRQdHI7CisgICAgfQog
fSAvLyBuYW1lc3BhY2UgSlNDCiAKICNlbmRpZiAvLyBKU0NlbGxfaApJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAJKHJldmlzaW9uIDkxOTM5KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTY3LDggKzY3LDEwIEBAIEpTRnVuY3Rpb246OkpTRnVuY3Rpb24oRXhlY1N0YXRl
KiBleGVjLCAKICAgICAsIG1fc2NvcGVDaGFpbihleGVjLT5nbG9iYWxEYXRhKCksIHRoaXMsIGds
b2JhbE9iamVjdC0+Z2xvYmFsU2NvcGVDaGFpbigpKQogewogICAgIEFTU0VSVChpbmhlcml0cygm
c19pbmZvKSk7CisgICAgZXhlYy0+Z2xvYmFsRGF0YSgpLnNldEluaXRpYWxpemluZ09iamVjdChm
YWxzZSk7CiAgICAgcHV0RGlyZWN0KGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+Z2xvYmFsRGF0
YSgpLnByb3BlcnR5TmFtZXMtPm5hbWUsIGpzU3RyaW5nKGV4ZWMsIG5hbWUuaXNOdWxsKCkgPyAi
IiA6IG5hbWUudXN0cmluZygpKSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5IHwgRG9udEVudW0pOwog
ICAgIHB1dERpcmVjdChleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5s
ZW5ndGgsIGpzTnVtYmVyKGxlbmd0aCksIERvbnREZWxldGUgfCBSZWFkT25seSB8IERvbnRFbnVt
KTsKKyAgICBleGVjLT5nbG9iYWxEYXRhKCkuc2V0SW5pdGlhbGl6aW5nT2JqZWN0KHRydWUpOwog
fQogCiBKU0Z1bmN0aW9uOjpKU0Z1bmN0aW9uKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGludCBsZW5ndGgsIGNvbnN0
IElkZW50aWZpZXImIG5hbWUsIE5hdGl2ZUZ1bmN0aW9uIGZ1bmMpCkBAIC03OCwxMCArODAsMTIg
QEAgSlNGdW5jdGlvbjo6SlNGdW5jdGlvbihFeGVjU3RhdGUqIGV4ZWMsIAogICAgIEFTU0VSVChp
bmhlcml0cygmc19pbmZvKSk7CiAgICAgCiAgICAgLy8gQ2FuJ3QgZG8gdGhpcyBkdXJpbmcgaW5p
dGlhbGl6YXRpb24gYmVjYXVzZSBnZXRIb3N0RnVuY3Rpb24gbWlnaHQgZG8gYSBHQyBhbGxvY2F0
aW9uLgorICAgIGV4ZWMtPmdsb2JhbERhdGEoKS5zZXRJbml0aWFsaXppbmdPYmplY3QoZmFsc2Up
OwogICAgIG1fZXhlY3V0YWJsZS5zZXQoZXhlYy0+Z2xvYmFsRGF0YSgpLCB0aGlzLCBleGVjLT5n
bG9iYWxEYXRhKCkuZ2V0SG9zdEZ1bmN0aW9uKGZ1bmMpKTsKICAgICAKICAgICBwdXREaXJlY3Qo
ZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5nbG9iYWxEYXRhKCkucHJvcGVydHlOYW1lcy0+bmFt
ZSwganNTdHJpbmcoZXhlYywgbmFtZS5pc051bGwoKSA/ICIiIDogbmFtZS51c3RyaW5nKCkpLCBE
b250RGVsZXRlIHwgUmVhZE9ubHkgfCBEb250RW51bSk7CiAgICAgcHV0RGlyZWN0KGV4ZWMtPmds
b2JhbERhdGEoKSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLmxlbmd0aCwganNOdW1iZXIobGVuZ3Ro
KSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5IHwgRG9udEVudW0pOworICAgIGV4ZWMtPmdsb2JhbERh
dGEoKS5zZXRJbml0aWFsaXppbmdPYmplY3QodHJ1ZSk7CiB9CiAKIEpTRnVuY3Rpb246OkpTRnVu
Y3Rpb24oRXhlY1N0YXRlKiBleGVjLCBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUsIFNj
b3BlQ2hhaW5Ob2RlKiBzY29wZUNoYWluTm9kZSkKQEAgLTkxLDcgKzk1LDkgQEAgSlNGdW5jdGlv
bjo6SlNGdW5jdGlvbihFeGVjU3RhdGUqIGV4ZWMsIAogewogICAgIEFTU0VSVChpbmhlcml0cygm
c19pbmZvKSk7CiAgICAgY29uc3QgSWRlbnRpZmllciYgbmFtZSA9IHN0YXRpY19jYXN0PEZ1bmN0
aW9uRXhlY3V0YWJsZSo+KG1fZXhlY3V0YWJsZS5nZXQoKSktPm5hbWUoKTsKKyAgICBleGVjLT5n
bG9iYWxEYXRhKCkuc2V0SW5pdGlhbGl6aW5nT2JqZWN0KGZhbHNlKTsKICAgICBwdXREaXJlY3Qo
ZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5nbG9iYWxEYXRhKCkucHJvcGVydHlOYW1lcy0+bmFt
ZSwganNTdHJpbmcoZXhlYywgbmFtZS5pc051bGwoKSA/ICIiIDogbmFtZS51c3RyaW5nKCkpLCBE
b250RGVsZXRlIHwgUmVhZE9ubHkgfCBEb250RW51bSk7CisgICAgZXhlYy0+Z2xvYmFsRGF0YSgp
LnNldEluaXRpYWxpemluZ09iamVjdCh0cnVlKTsKIH0KIAogSlNGdW5jdGlvbjo6fkpTRnVuY3Rp
b24oKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uaAko
cmV2aXNpb24gOTE5MzkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0
aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTU1LDE1ICs1NSwxNSBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICBwdWJsaWM6CiAgICAgICAgIHN0YXRpYyBKU0Z1bmN0aW9uKiBjcmVhdGUoRXhlY1N0YXRl
KiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSwgaW50IGxlbmd0aCwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIE5hdGl2ZUZ1bmN0aW9uIG5h
dGl2ZUZ1bmMpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBuZXcgKGFsbG9jYXRlQ2Vs
bDxKU0Z1bmN0aW9uPigqZXhlYy0+aGVhcCgpKSkgSlNGdW5jdGlvbihleGVjLCBnbG9iYWxPYmpl
Y3QsIHN0cnVjdHVyZSwgbGVuZ3RoLCBpZGVudCwgbmF0aXZlRnVuYyk7CisgICAgICAgICAgICBy
ZXR1cm4gdmFsaWRhdGVBbGxvYzxKU0Z1bmN0aW9uPihleGVjLT5nbG9iYWxEYXRhKCksIG5ldyAo
YWxsb2NhdGVDZWxsPEpTRnVuY3Rpb24+KCpleGVjLT5oZWFwKCkpKSBKU0Z1bmN0aW9uKGV4ZWMs
IGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBsZW5ndGgsIGlkZW50LCBuYXRpdmVGdW5jKSk7CiAg
ICAgICAgIH0KICAgICAgICAgc3RhdGljIEpTRnVuY3Rpb24qIGNyZWF0ZShFeGVjU3RhdGUqIGV4
ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBp
bnQgbGVuZ3RoLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgTmF0aXZlRXhlY3V0YWJsZSogbmF0
aXZlRXhlYykKICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIG5ldyAoYWxsb2NhdGVDZWxs
PEpTRnVuY3Rpb24+KCpleGVjLT5oZWFwKCkpKSBKU0Z1bmN0aW9uKGV4ZWMsIGdsb2JhbE9iamVj
dCwgc3RydWN0dXJlLCBsZW5ndGgsIGlkZW50LCBuYXRpdmVFeGVjKTsKKyAgICAgICAgICAgIHJl
dHVybiB2YWxpZGF0ZUFsbG9jPEpTRnVuY3Rpb24+KGV4ZWMtPmdsb2JhbERhdGEoKSwgbmV3IChh
bGxvY2F0ZUNlbGw8SlNGdW5jdGlvbj4oKmV4ZWMtPmhlYXAoKSkpIEpTRnVuY3Rpb24oZXhlYywg
Z2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIGxlbmd0aCwgaWRlbnQsIG5hdGl2ZUV4ZWMpKTsKICAg
ICAgICAgfQogICAgICAgICBzdGF0aWMgSlNGdW5jdGlvbiogY3JlYXRlKEV4ZWNTdGF0ZSogZXhl
YywgRnVuY3Rpb25FeGVjdXRhYmxlKiBmdW5jRXhlYywgU2NvcGVDaGFpbk5vZGUqIHNjb3BlQ2hh
aW4pCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBuZXcgKGFsbG9jYXRlQ2VsbDxKU0Z1
bmN0aW9uPigqZXhlYy0+aGVhcCgpKSkgSlNGdW5jdGlvbihleGVjLCBmdW5jRXhlYywgc2NvcGVD
aGFpbik7CisgICAgICAgICAgICByZXR1cm4gdmFsaWRhdGVBbGxvYzxKU0Z1bmN0aW9uPihleGVj
LT5nbG9iYWxEYXRhKCksIG5ldyAoYWxsb2NhdGVDZWxsPEpTRnVuY3Rpb24+KCpleGVjLT5oZWFw
KCkpKSBKU0Z1bmN0aW9uKGV4ZWMsIGZ1bmNFeGVjLCBzY29wZUNoYWluKSk7CiAgICAgICAgIH0K
ICAgICAgICAgCiAgICAgICAgIHZpcnR1YWwgfkpTRnVuY3Rpb24oKTsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsRGF0YS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxEYXRhLmNwcAkocmV2aXNpb24gOTE5
MzkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERhdGEuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0yMDIsNiArMjAyLDkgQEAgSlNHbG9iYWxEYXRhOjpKU0dsb2JhbERh
dGEoR2xvYmFsRGF0YVR5cAogI2lmbmRlZiBOREVCVUcKICAgICAsIGV4Y2x1c2l2ZVRocmVhZCgw
KQogI2VuZGlmCisjaWYgRU5BQkxFKEdDX1ZBTElEQVRJT04pCisgICAgLCBtX2luaXRpYWxpemlu
Z09iamVjdChmYWxzZSkKKyNlbmRpZgogewogICAgIGludGVycHJldGVyID0gbmV3IEludGVycHJl
dGVyOwogICAgIGlmIChnbG9iYWxEYXRhVHlwZSA9PSBEZWZhdWx0KQpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxEYXRhLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxEYXRhLmgJKHJldmlzaW9uIDkxOTM5KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxEYXRhLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTIxNSw2ICsyMTUsMjMgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICAg
ICAgOiB3dGZUaHJlYWREYXRhKCkuc3RhY2soKTsKICAgICAgICAgfQogCisgICAgICAgIGJvb2wg
aXNJbml0aWFsaXppbmdPYmplY3QoKSBjb25zdCAKKyAgICAgICAgeyAKKyNpZiBFTkFCTEUoR0Nf
VkFMSURBVElPTikKKyAgICAgICAgICAgIHJldHVybiBtX2luaXRpYWxpemluZ09iamVjdDsgCisj
ZWxzZQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworI2VuZGlmCisgICAgICAgIH0KKworICAg
ICAgICB2b2lkIHNldEluaXRpYWxpemluZ09iamVjdChib29sIHZhbHVlKSAKKyAgICAgICAgewor
I2lmIEVOQUJMRShHQ19WQUxJREFUSU9OKQorICAgICAgICAgICAgbV9pbml0aWFsaXppbmdPYmpl
Y3QgPSB2YWx1ZTsgCisjZWxzZQorI2VuZGlmCisgICAgICAgIH0KKwogICAgICAgICBMZXhlciog
bGV4ZXI7CiAgICAgICAgIFBhcnNlciogcGFyc2VyOwogICAgICAgICBJbnRlcnByZXRlciogaW50
ZXJwcmV0ZXI7CkBAIC0yOTIsNiArMzA5LDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIGJv
b2wgbV9jYW5Vc2VKSVQ7CiAjZW5kaWYKICAgICAgICAgU3RhY2tCb3VuZHMgbV9zdGFjazsKKyNp
ZiBFTkFCTEUoR0NfVkFMSURBVElPTikKKyAgICAgICAgYm9vbCBtX2luaXRpYWxpemluZ09iamVj
dDsKKyNlbmRpZgogICAgIH07CiAKICAgICBpbmxpbmUgSGFuZGxlU2xvdCBhbGxvY2F0ZUdsb2Jh
bEhhbmRsZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCShyZXZpc2lvbiA5MTkzOSkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTI0LDcgKzEyNCw5IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OmluaXQo
SlNPYmplY3QqIHRoaXMKICAgICBzdHJ1Y3R1cmUoKS0+ZGlzYWJsZVNwZWNpZmljRnVuY3Rpb25U
cmFja2luZygpOwogCiAgICAgbV9nbG9iYWxEYXRhID0gSGVhcDo6aGVhcCh0aGlzKS0+Z2xvYmFs
RGF0YSgpOworICAgIG1fZ2xvYmFsRGF0YS0+c2V0SW5pdGlhbGl6aW5nT2JqZWN0KGZhbHNlKTsK
ICAgICBtX2dsb2JhbFNjb3BlQ2hhaW4uc2V0KCptX2dsb2JhbERhdGEsIHRoaXMsIFNjb3BlQ2hh
aW5Ob2RlOjpjcmVhdGUoMCwgdGhpcywgbV9nbG9iYWxEYXRhLmdldCgpLCB0aGlzLCB0aGlzVmFs
dWUpKTsKKyAgICBtX2dsb2JhbERhdGEtPnNldEluaXRpYWxpemluZ09iamVjdCh0cnVlKTsKIAog
ICAgIEpTR2xvYmFsT2JqZWN0OjpnbG9iYWxFeGVjKCktPmluaXQoMCwgMCwgbV9nbG9iYWxTY29w
ZUNoYWluLmdldCgpLCBDYWxsRnJhbWU6Om5vQ2FsbGVyKCksIDAsIDApOwogCkBAIC0xMzIsNyAr
MTM0LDkgQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6aW5pdChKU09iamVjdCogdGhpcwogCiAgICAg
bV9wcm9maWxlR3JvdXAgPSAwOwogCisgICAgbV9nbG9iYWxEYXRhLT5zZXRJbml0aWFsaXppbmdP
YmplY3QoZmFsc2UpOwogICAgIHJlc2V0KHByb3RvdHlwZSgpKTsKKyAgICBtX2dsb2JhbERhdGEt
PnNldEluaXRpYWxpemluZ09iamVjdCh0cnVlKTsKIH0KIAogdm9pZCBKU0dsb2JhbE9iamVjdDo6
cHV0KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1Zh
bHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgJKHJldmlzaW9uIDkxOTM5KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAkod29ya2luZyBj
b3B5KQpAQCAtMTI0LDcgKzEyNCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHB1YmxpYzoKICAg
ICAgICAgc3RhdGljIEpTR2xvYmFsT2JqZWN0KiBjcmVhdGUoSlNHbG9iYWxEYXRhJiBnbG9iYWxE
YXRhLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJu
IG5ldyAoYWxsb2NhdGVDZWxsPEpTR2xvYmFsT2JqZWN0PihnbG9iYWxEYXRhLmhlYXApKSBKU0ds
b2JhbE9iamVjdChnbG9iYWxEYXRhLCBzdHJ1Y3R1cmUpOworICAgICAgICAgICAgcmV0dXJuIHZh
bGlkYXRlQWxsb2M8SlNHbG9iYWxPYmplY3Q+KGdsb2JhbERhdGEsIG5ldyAoYWxsb2NhdGVDZWxs
PEpTR2xvYmFsT2JqZWN0PihnbG9iYWxEYXRhLmhlYXApKSBKU0dsb2JhbE9iamVjdChnbG9iYWxE
YXRhLCBzdHJ1Y3R1cmUpKTsKICAgICAgICAgfQogCiAgICAgICAgIHN0YXRpYyBKU19FWFBPUlRE
QVRBIGNvbnN0IENsYXNzSW5mbyBzX2luZm87CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU05vdEFuT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNOb3RBbk9iamVjdC5oCShyZXZpc2lvbiA5MTkzOSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTm90QW5PYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAt
NDYsNyArNDYsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBwdWJsaWM6CiAgICAgICAgIHN0YXRp
YyBKU05vdEFuT2JqZWN0KiBjcmVhdGUoRXhlY1N0YXRlKiBleGVjKQogICAgICAgICB7Ci0gICAg
ICAgICAgICByZXR1cm4gbmV3IChhbGxvY2F0ZUNlbGw8SlNOb3RBbk9iamVjdD4oKmV4ZWMtPmhl
YXAoKSkpIEpTTm90QW5PYmplY3QoZXhlYyk7CisgICAgICAgICAgICByZXR1cm4gdmFsaWRhdGVB
bGxvYzxKU05vdEFuT2JqZWN0PihleGVjLT5nbG9iYWxEYXRhKCksIG5ldyAoYWxsb2NhdGVDZWxs
PEpTTm90QW5PYmplY3Q+KCpleGVjLT5oZWFwKCkpKSBKU05vdEFuT2JqZWN0KGV4ZWMpKTsKICAg
ICAgICAgfQogCiAgICAgICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0ds
b2JhbERhdGEmIGdsb2JhbERhdGEsIEpTVmFsdWUgcHJvdG90eXBlKQpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPTk9iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT05PYmplY3QuaAkocmV2aXNpb24gOTE5MzkpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09OT2JqZWN0LmgJKHdvcmtpbmcgY29weSkK
QEAgLTM5LDcgKzM5LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgcHVibGljOgogICAgICAgICBz
dGF0aWMgSlNPTk9iamVjdCogY3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAgICAgICAgIHsKLSAgICAgICAg
ICAgIHJldHVybiBuZXcgKGFsbG9jYXRlQ2VsbDxKU09OT2JqZWN0PigqZXhlYy0+aGVhcCgpKSkg
SlNPTk9iamVjdChnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSk7CisgICAgICAgICAgICByZXR1cm4g
dmFsaWRhdGVBbGxvYzxKU09OT2JqZWN0PihleGVjLT5nbG9iYWxEYXRhKCksIG5ldyAoYWxsb2Nh
dGVDZWxsPEpTT05PYmplY3Q+KCpleGVjLT5oZWFwKCkpKSBKU09OT2JqZWN0KGdsb2JhbE9iamVj
dCwgc3RydWN0dXJlKSk7CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIHN0YXRpYyBTdHJ1
Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTVmFsdWUg
cHJvdG90eXBlKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3Qu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5o
CShyZXZpc2lvbiA5MTkzOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2Jq
ZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTM2Nyw3ICszNjcsNyBAQCBDT01QSUxFX0FTU0VSVCgo
SlNGaW5hbE9iamVjdF9pbmxpbmVTdG9yCiAgICAgICAgIAogICAgICAgICBzdGF0aWMgSlNGaW5h
bE9iamVjdCogY3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAg
ICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBuZXcgKGFsbG9jYXRlQ2VsbDxKU0ZpbmFsT2Jq
ZWN0PigqZXhlYy0+aGVhcCgpKSkgSlNGaW5hbE9iamVjdChleGVjLT5nbG9iYWxEYXRhKCksIHN0
cnVjdHVyZSk7CisgICAgICAgICAgICByZXR1cm4gdmFsaWRhdGVBbGxvYzxKU0ZpbmFsT2JqZWN0
PihleGVjLT5nbG9iYWxEYXRhKCksIG5ldyAoYWxsb2NhdGVDZWxsPEpTRmluYWxPYmplY3Q+KCpl
eGVjLT5oZWFwKCkpKSBKU0ZpbmFsT2JqZWN0KGV4ZWMtPmdsb2JhbERhdGEoKSwgc3RydWN0dXJl
KSk7CiAgICAgICAgIH0KIAogICAgICAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1
cmUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU1ZhbHVlIHByb3RvdHlwZSkKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1l
SXRlcmF0b3IuY3BwCShyZXZpc2lvbiA5MTkzOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NCw4
ICs0NCwxMCBAQCBpbmxpbmUgSlNQcm9wZXJ0eU5hbWVJdGVyYXRvcjo6SlNQcm9wZXJ0CiAgICAg
LCBtX2pzU3RyaW5ncyhhZG9wdEFycmF5UHRyKG5ldyBXcml0ZUJhcnJpZXI8VW5rbm93bj5bbV9q
c1N0cmluZ3NTaXplXSkpCiB7CiAgICAgUHJvcGVydHlOYW1lQXJyYXlEYXRhOjpQcm9wZXJ0eU5h
bWVWZWN0b3ImIHByb3BlcnR5TmFtZVZlY3RvciA9IHByb3BlcnR5TmFtZUFycmF5RGF0YS0+cHJv
cGVydHlOYW1lVmVjdG9yKCk7CisgICAgZXhlYy0+Z2xvYmFsRGF0YSgpLnNldEluaXRpYWxpemlu
Z09iamVjdChmYWxzZSk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2pzU3RyaW5nc1Np
emU7ICsraSkKICAgICAgICAgbV9qc1N0cmluZ3NbaV0uc2V0KGV4ZWMtPmdsb2JhbERhdGEoKSwg
dGhpcywganNPd25lZFN0cmluZyhleGVjLCBwcm9wZXJ0eU5hbWVWZWN0b3JbaV0udXN0cmluZygp
KSk7CisgICAgZXhlYy0+Z2xvYmFsRGF0YSgpLnNldEluaXRpYWxpemluZ09iamVjdCh0cnVlKTsK
IH0KIAogSlNQcm9wZXJ0eU5hbWVJdGVyYXRvciogSlNQcm9wZXJ0eU5hbWVJdGVyYXRvcjo6Y3Jl
YXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIG8pCkBAIC02Miw3ICs2NCw3IEBAIEpTUHJv
cGVydHlOYW1lSXRlcmF0b3IqIEpTUHJvcGVydHlOYW1lSXQKICAgICAgICAgIW8tPnN0cnVjdHVy
ZSgpLT50eXBlSW5mbygpLm92ZXJyaWRlc0dldFByb3BlcnR5TmFtZXMoKSkKICAgICAgICAgbnVt
Q2FjaGVhYmxlU2xvdHMgPSBvLT5zdHJ1Y3R1cmUoKS0+cHJvcGVydHlTdG9yYWdlU2l6ZSgpOwog
ICAgIAotICAgIEpTUHJvcGVydHlOYW1lSXRlcmF0b3IqIGpzUHJvcGVydHlOYW1lSXRlcmF0b3Ig
PSBuZXcgKGFsbG9jYXRlQ2VsbDxKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yPigqZXhlYy0+aGVhcCgp
KSkgSlNQcm9wZXJ0eU5hbWVJdGVyYXRvcihleGVjLCBwcm9wZXJ0eU5hbWVzLmRhdGEoKSwgbnVt
Q2FjaGVhYmxlU2xvdHMpOworICAgIEpTUHJvcGVydHlOYW1lSXRlcmF0b3IqIGpzUHJvcGVydHlO
YW1lSXRlcmF0b3IgPSB2YWxpZGF0ZUFsbG9jKGV4ZWMtPmdsb2JhbERhdGEoKSwgbmV3IChhbGxv
Y2F0ZUNlbGw8SlNQcm9wZXJ0eU5hbWVJdGVyYXRvcj4oKmV4ZWMtPmhlYXAoKSkpIEpTUHJvcGVy
dHlOYW1lSXRlcmF0b3IoZXhlYywgcHJvcGVydHlOYW1lcy5kYXRhKCksIG51bUNhY2hlYWJsZVNs
b3RzKSk7CiAKICAgICBpZiAoby0+c3RydWN0dXJlKCktPmlzRGljdGlvbmFyeSgpKQogICAgICAg
ICByZXR1cm4ganNQcm9wZXJ0eU5hbWVJdGVyYXRvcjsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmgJKHJldmlz
aW9uIDkxOTM5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9wZXJ0eU5h
bWVJdGVyYXRvci5oCSh3b3JraW5nIGNvcHkpCkBAIC00Niw3ICs0Niw3IEBAIG5hbWVzcGFjZSBK
U0MgewogICAgICAgICBzdGF0aWMgSlNQcm9wZXJ0eU5hbWVJdGVyYXRvciogY3JlYXRlKEV4ZWNT
dGF0ZSosIEpTT2JqZWN0Kik7CiAgICAgICAgIHN0YXRpYyBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9y
KiBjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWVBcnJheURhdGEqIHByb3BlcnR5
TmFtZUFycmF5RGF0YSwgc2l6ZV90IG51bUNhY2hlYWJsZVNsb3QpCiAgICAgICAgIHsKLSAgICAg
ICAgICAgIHJldHVybiBuZXcgKGFsbG9jYXRlQ2VsbDxKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yPigq
ZXhlYy0+aGVhcCgpKSkgSlNQcm9wZXJ0eU5hbWVJdGVyYXRvcihleGVjLCBwcm9wZXJ0eU5hbWVB
cnJheURhdGEsIG51bUNhY2hlYWJsZVNsb3QpOworICAgICAgICAgICAgcmV0dXJuIHZhbGlkYXRl
QWxsb2M8SlNQcm9wZXJ0eU5hbWVJdGVyYXRvcj4oZXhlYy0+Z2xvYmFsRGF0YSgpLCBuZXcgKGFs
bG9jYXRlQ2VsbDxKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yPigqZXhlYy0+aGVhcCgpKSkgSlNQcm9w
ZXJ0eU5hbWVJdGVyYXRvcihleGVjLCBwcm9wZXJ0eU5hbWVBcnJheURhdGEsIG51bUNhY2hlYWJs
ZVNsb3QpKTsKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgc3RhdGljIFN0cnVjdHVyZSog
Y3JlYXRlU3RydWN0dXJlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNWYWx1ZSBwcm90b3R5
cGUpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0YXRpY1Njb3BlT2Jq
ZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdGF0
aWNTY29wZU9iamVjdC5oCShyZXZpc2lvbiA5MTkzOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTU3RhdGljU2NvcGVPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtMzQsNyAr
MzQsNyBAQCBuYW1lc3BhY2UgSlNDewogICAgIHB1YmxpYzoKICAgICAgICAgc3RhdGljIEpTU3Rh
dGljU2NvcGVPYmplY3QqIGNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXIm
IGlkZW50LCBKU1ZhbHVlIHZhbHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKQogICAgICAgICB7Ci0g
ICAgICAgICAgICByZXR1cm4gbmV3IChhbGxvY2F0ZUNlbGw8SlNTdGF0aWNTY29wZU9iamVjdD4o
KmV4ZWMtPmhlYXAoKSkpIEpTU3RhdGljU2NvcGVPYmplY3QoZXhlYywgaWRlbnQsIHZhbHVlLCBh
dHRyaWJ1dGVzKTsKKyAgICAgICAgICAgIHJldHVybiB2YWxpZGF0ZUFsbG9jPEpTU3RhdGljU2Nv
cGVPYmplY3Q+KGV4ZWMtPmdsb2JhbERhdGEoKSwgbmV3IChhbGxvY2F0ZUNlbGw8SlNTdGF0aWNT
Y29wZU9iamVjdD4oKmV4ZWMtPmhlYXAoKSkpIEpTU3RhdGljU2NvcGVPYmplY3QoZXhlYywgaWRl
bnQsIHZhbHVlLCBhdHRyaWJ1dGVzKSk7CiAgICAgICAgIH0KIAogICAgICAgICB2aXJ0dWFsIHZv
aWQgdmlzaXRDaGlsZHJlbihTbG90VmlzaXRvciYpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNTdHJpbmcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTU3RyaW5nLmNwcAkocmV2aXNpb24gOTE5MzkpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5OCw3
ICsyOTgsNyBAQCBVU3RyaW5nIEpTU3RyaW5nOjp0b1N0cmluZyhFeGVjU3RhdGUqIGV4CiAKIGlu
bGluZSBTdHJpbmdPYmplY3QqIFN0cmluZ09iamVjdDo6Y3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywg
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNTdHJpbmcqIHN0cmluZykKIHsKLSAgICBy
ZXR1cm4gbmV3IChhbGxvY2F0ZUNlbGw8U3RyaW5nT2JqZWN0PigqZXhlYy0+aGVhcCgpKSkgU3Ry
aW5nT2JqZWN0KGV4ZWMtPmdsb2JhbERhdGEoKSwgZ2xvYmFsT2JqZWN0LT5zdHJpbmdPYmplY3RT
dHJ1Y3R1cmUoKSwgc3RyaW5nKTsKKyAgICByZXR1cm4gdmFsaWRhdGVBbGxvYyhleGVjLT5nbG9i
YWxEYXRhKCksIG5ldyAoYWxsb2NhdGVDZWxsPFN0cmluZ09iamVjdD4oKmV4ZWMtPmhlYXAoKSkp
IFN0cmluZ09iamVjdChleGVjLT5nbG9iYWxEYXRhKCksIGdsb2JhbE9iamVjdC0+c3RyaW5nT2Jq
ZWN0U3RydWN0dXJlKCksIHN0cmluZykpOwogfQogCiBKU09iamVjdCogSlNTdHJpbmc6OnRvT2Jq
ZWN0KEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkgY29uc3QK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuaAkocmV2aXNpb24g
OTE5MzkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yMjYsOCArMjI2LDEwIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB7
CiAgICAgICAgICAgICBBU1NFUlQoZmliZXJDb3VudCA8PSBzX21heEludGVybmFsUm9wZUxlbmd0
aCk7CiAgICAgICAgICAgICB1bnNpZ25lZCBpbmRleCA9IDA7CisgICAgICAgICAgICBnbG9iYWxE
YXRhLnNldEluaXRpYWxpemluZ09iamVjdChmYWxzZSk7CiAgICAgICAgICAgICBhcHBlbmRTdHJp
bmdJbkNvbnN0cnVjdChpbmRleCwgczEpOwogICAgICAgICAgICAgYXBwZW5kU3RyaW5nSW5Db25z
dHJ1Y3QoaW5kZXgsIHMyKTsKKyAgICAgICAgICAgIGdsb2JhbERhdGEuc2V0SW5pdGlhbGl6aW5n
T2JqZWN0KHRydWUpOwogICAgICAgICAgICAgQVNTRVJUKGZpYmVyQ291bnQgPT0gaW5kZXgpOwog
ICAgICAgICB9CiAgICAgICAgIC8vIFRoaXMgY29uc3RydWN0b3IgY29uc3RydWN0cyBhIG5ldyBz
dHJpbmcgYnkgY29uY2F0ZW5hdGluZyBzMSAmIHMyLgpAQCAtMjM5LDggKzI0MSwxMCBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICAgICAgewogICAgICAgICAgICAgQVNTRVJUKGZpYmVyQ291bnQgPD0g
c19tYXhJbnRlcm5hbFJvcGVMZW5ndGgpOwogICAgICAgICAgICAgdW5zaWduZWQgaW5kZXggPSAw
OworICAgICAgICAgICAgZ2xvYmFsRGF0YS5zZXRJbml0aWFsaXppbmdPYmplY3QoZmFsc2UpOwog
ICAgICAgICAgICAgYXBwZW5kU3RyaW5nSW5Db25zdHJ1Y3QoaW5kZXgsIHMxKTsKICAgICAgICAg
ICAgIGFwcGVuZFN0cmluZ0luQ29uc3RydWN0KGluZGV4LCB1Mik7CisgICAgICAgICAgICBnbG9i
YWxEYXRhLnNldEluaXRpYWxpemluZ09iamVjdCh0cnVlKTsKICAgICAgICAgICAgIEFTU0VSVChm
aWJlckNvdW50ID09IGluZGV4KTsKICAgICAgICAgfQogICAgICAgICAvLyBUaGlzIGNvbnN0cnVj
dG9yIGNvbnN0cnVjdHMgYSBuZXcgc3RyaW5nIGJ5IGNvbmNhdGVuYXRpbmcgczEgJiBzMi4KQEAg
LTI1Miw4ICsyNTYsMTAgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHsKICAgICAgICAgICAg
IEFTU0VSVChmaWJlckNvdW50IDw9IHNfbWF4SW50ZXJuYWxSb3BlTGVuZ3RoKTsKICAgICAgICAg
ICAgIHVuc2lnbmVkIGluZGV4ID0gMDsKKyAgICAgICAgICAgIGdsb2JhbERhdGEuc2V0SW5pdGlh
bGl6aW5nT2JqZWN0KGZhbHNlKTsKICAgICAgICAgICAgIGFwcGVuZFN0cmluZ0luQ29uc3RydWN0
KGluZGV4LCB1MSk7CiAgICAgICAgICAgICBhcHBlbmRTdHJpbmdJbkNvbnN0cnVjdChpbmRleCwg
czIpOworICAgICAgICAgICAgZ2xvYmFsRGF0YS5zZXRJbml0aWFsaXppbmdPYmplY3QodHJ1ZSk7
CiAgICAgICAgICAgICBBU1NFUlQoZmliZXJDb3VudCA9PSBpbmRleCk7CiAgICAgICAgIH0KICAg
ICAgICAgLy8gVGhpcyBjb25zdHJ1Y3RvciBjb25zdHJ1Y3RzIGEgbmV3IHN0cmluZyBieSBjb25j
YXRlbmF0aW5nIHYxLCB2MiAmIHYzLgpAQCAtMjY2LDkgKzI3MiwxMSBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICAgICAgICAgICwgbV9maWJlckNvdW50KHNfbWF4SW50ZXJuYWxSb3BlTGVuZ3RoKQog
ICAgICAgICB7CiAgICAgICAgICAgICB1bnNpZ25lZCBpbmRleCA9IDA7CisgICAgICAgICAgICBl
eGVjLT5nbG9iYWxEYXRhKCkuc2V0SW5pdGlhbGl6aW5nT2JqZWN0KGZhbHNlKTsKICAgICAgICAg
ICAgIGFwcGVuZFZhbHVlSW5Db25zdHJ1Y3RBbmRJbmNyZW1lbnRMZW5ndGgoZXhlYywgaW5kZXgs
IHYxKTsKICAgICAgICAgICAgIGFwcGVuZFZhbHVlSW5Db25zdHJ1Y3RBbmRJbmNyZW1lbnRMZW5n
dGgoZXhlYywgaW5kZXgsIHYyKTsKICAgICAgICAgICAgIGFwcGVuZFZhbHVlSW5Db25zdHJ1Y3RB
bmRJbmNyZW1lbnRMZW5ndGgoZXhlYywgaW5kZXgsIHYzKTsKKyAgICAgICAgICAgIGV4ZWMtPmds
b2JhbERhdGEoKS5zZXRJbml0aWFsaXppbmdPYmplY3QodHJ1ZSk7CiAgICAgICAgICAgICBBU1NF
UlQoaW5kZXggPT0gc19tYXhJbnRlcm5hbFJvcGVMZW5ndGgpOwogICAgICAgICB9CiAKQEAgLTI3
OSw4ICsyODcsMTAgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICAsIG1fZmliZXJDb3Vu
dCgyKQogICAgICAgICB7CiAgICAgICAgICAgICB1bnNpZ25lZCBpbmRleCA9IDA7CisgICAgICAg
ICAgICBnbG9iYWxEYXRhLnNldEluaXRpYWxpemluZ09iamVjdChmYWxzZSk7CiAgICAgICAgICAg
ICBhcHBlbmRTdHJpbmdJbkNvbnN0cnVjdChpbmRleCwgdTEpOwogICAgICAgICAgICAgYXBwZW5k
U3RyaW5nSW5Db25zdHJ1Y3QoaW5kZXgsIHUyKTsKKyAgICAgICAgICAgIGdsb2JhbERhdGEuc2V0
SW5pdGlhbGl6aW5nT2JqZWN0KHRydWUpOwogICAgICAgICAgICAgQVNTRVJUKGluZGV4IDw9IHNf
bWF4SW50ZXJuYWxSb3BlTGVuZ3RoKTsKICAgICAgICAgfQogCkBAIC0yOTEsNTIgKzMwMSw1NCBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgICwgbV9maWJlckNvdW50KHNfbWF4SW50ZXJu
YWxSb3BlTGVuZ3RoKQogICAgICAgICB7CiAgICAgICAgICAgICB1bnNpZ25lZCBpbmRleCA9IDA7
CisgICAgICAgICAgICBnbG9iYWxEYXRhLnNldEluaXRpYWxpemluZ09iamVjdChmYWxzZSk7CiAg
ICAgICAgICAgICBhcHBlbmRTdHJpbmdJbkNvbnN0cnVjdChpbmRleCwgdTEpOwogICAgICAgICAg
ICAgYXBwZW5kU3RyaW5nSW5Db25zdHJ1Y3QoaW5kZXgsIHUyKTsKICAgICAgICAgICAgIGFwcGVu
ZFN0cmluZ0luQ29uc3RydWN0KGluZGV4LCB1Myk7CisgICAgICAgICAgICBnbG9iYWxEYXRhLnNl
dEluaXRpYWxpemluZ09iamVjdCh0cnVlKTsKICAgICAgICAgICAgIEFTU0VSVChpbmRleCA8PSBz
X21heEludGVybmFsUm9wZUxlbmd0aCk7CiAgICAgICAgIH0KIAogICAgIHB1YmxpYzoKICAgICAg
ICAgc3RhdGljIEpTU3RyaW5nKiBjcmVhdGUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBjb25z
dCBVU3RyaW5nJiB2YWx1ZSkKICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIG5ldyAoYWxs
b2NhdGVDZWxsPEpTU3RyaW5nPihnbG9iYWxEYXRhLmhlYXApKSBKU1N0cmluZyhnbG9iYWxEYXRh
LCB2YWx1ZSk7CisgICAgICAgICAgICByZXR1cm4gdmFsaWRhdGVBbGxvYzxKU1N0cmluZz4oZ2xv
YmFsRGF0YSwgbmV3IChhbGxvY2F0ZUNlbGw8SlNTdHJpbmc+KGdsb2JhbERhdGEuaGVhcCkpIEpT
U3RyaW5nKGdsb2JhbERhdGEsIHZhbHVlKSk7CiAgICAgICAgIH0KICAgICAgICAgc3RhdGljIEpT
U3RyaW5nKiBjcmVhdGVIYXNPdGhlck93bmVyKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgY29u
c3QgVVN0cmluZyYgdmFsdWUpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBuZXcgKGFs
bG9jYXRlQ2VsbDxKU1N0cmluZz4oZ2xvYmFsRGF0YS5oZWFwKSkgSlNTdHJpbmcoZ2xvYmFsRGF0
YSwgdmFsdWUsIEhhc090aGVyT3duZXIpOworICAgICAgICAgICAgcmV0dXJuIHZhbGlkYXRlQWxs
b2M8SlNTdHJpbmc+KGdsb2JhbERhdGEsIG5ldyAoYWxsb2NhdGVDZWxsPEpTU3RyaW5nPihnbG9i
YWxEYXRhLmhlYXApKSBKU1N0cmluZyhnbG9iYWxEYXRhLCB2YWx1ZSwgSGFzT3RoZXJPd25lcikp
OwogICAgICAgICB9CiAgICAgICAgIHN0YXRpYyBKU1N0cmluZyogY3JlYXRlSGFzT3RoZXJPd25l
cihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gdmFsdWUp
CiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBuZXcgKGFsbG9jYXRlQ2VsbDxKU1N0cmlu
Zz4oZ2xvYmFsRGF0YS5oZWFwKSkgSlNTdHJpbmcoZ2xvYmFsRGF0YSwgdmFsdWUsIEhhc090aGVy
T3duZXIpOworICAgICAgICAgICAgcmV0dXJuIHZhbGlkYXRlQWxsb2M8SlNTdHJpbmc+KGdsb2Jh
bERhdGEsIG5ldyAoYWxsb2NhdGVDZWxsPEpTU3RyaW5nPihnbG9iYWxEYXRhLmhlYXApKSBKU1N0
cmluZyhnbG9iYWxEYXRhLCB2YWx1ZSwgSGFzT3RoZXJPd25lcikpOwogICAgICAgICB9CiAgICAg
ICAgIHN0YXRpYyBKU1N0cmluZyogY3JlYXRlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgUGFz
c1JlZlB0cjxSb3BlSW1wbD4gcm9wZSkKICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIG5l
dyAoYWxsb2NhdGVDZWxsPEpTU3RyaW5nPihnbG9iYWxEYXRhLmhlYXApKSBKU1N0cmluZyhnbG9i
YWxEYXRhLCByb3BlKTsKKyAgICAgICAgICAgIHJldHVybiB2YWxpZGF0ZUFsbG9jPEpTU3RyaW5n
PihnbG9iYWxEYXRhLCBuZXcgKGFsbG9jYXRlQ2VsbDxKU1N0cmluZz4oZ2xvYmFsRGF0YS5oZWFw
KSkgSlNTdHJpbmcoZ2xvYmFsRGF0YSwgcm9wZSkpOwogICAgICAgICB9CiAgICAgICAgIHN0YXRp
YyBKU1N0cmluZyogY3JlYXRlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgdW5zaWduZWQgZmli
ZXJDb3VudCwgSlNTdHJpbmcqIHMxLCBKU1N0cmluZyogczIpCiAgICAgICAgIHsKLSAgICAgICAg
ICAgIHJldHVybiBuZXcgKGFsbG9jYXRlQ2VsbDxKU1N0cmluZz4oZ2xvYmFsRGF0YS5oZWFwKSkg
SlNTdHJpbmcoZ2xvYmFsRGF0YSwgZmliZXJDb3VudCwgczEsIHMyKTsKKyAgICAgICAgICAgIHJl
dHVybiB2YWxpZGF0ZUFsbG9jPEpTU3RyaW5nPihnbG9iYWxEYXRhLCBuZXcgKGFsbG9jYXRlQ2Vs
bDxKU1N0cmluZz4oZ2xvYmFsRGF0YS5oZWFwKSkgSlNTdHJpbmcoZ2xvYmFsRGF0YSwgZmliZXJD
b3VudCwgczEsIHMyKSk7CiAgICAgICAgIH0KICAgICAgICAgc3RhdGljIEpTU3RyaW5nKiBjcmVh
dGUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCB1bnNpZ25lZCBmaWJlckNvdW50LCBKU1N0cmlu
ZyogczEsIGNvbnN0IFVTdHJpbmcmIHUyKQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4g
bmV3IChhbGxvY2F0ZUNlbGw8SlNTdHJpbmc+KGdsb2JhbERhdGEuaGVhcCkpIEpTU3RyaW5nKGds
b2JhbERhdGEsIGZpYmVyQ291bnQsIHMxLCB1Mik7CisgICAgICAgICAgICByZXR1cm4gdmFsaWRh
dGVBbGxvYzxKU1N0cmluZz4oZ2xvYmFsRGF0YSwgbmV3IChhbGxvY2F0ZUNlbGw8SlNTdHJpbmc+
KGdsb2JhbERhdGEuaGVhcCkpIEpTU3RyaW5nKGdsb2JhbERhdGEsIGZpYmVyQ291bnQsIHMxLCB1
MikpOwogICAgICAgICB9CiAgICAgICAgIHN0YXRpYyBKU1N0cmluZyogY3JlYXRlKEpTR2xvYmFs
RGF0YSYgZ2xvYmFsRGF0YSwgdW5zaWduZWQgZmliZXJDb3VudCwgY29uc3QgVVN0cmluZyYgdTEs
IEpTU3RyaW5nKiBzMikKICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIG5ldyAoYWxsb2Nh
dGVDZWxsPEpTU3RyaW5nPihnbG9iYWxEYXRhLmhlYXApKSBKU1N0cmluZyhnbG9iYWxEYXRhLCBm
aWJlckNvdW50LCB1MSwgczIpOworICAgICAgICAgICAgcmV0dXJuIHZhbGlkYXRlQWxsb2M8SlNT
dHJpbmc+KGdsb2JhbERhdGEsIG5ldyAoYWxsb2NhdGVDZWxsPEpTU3RyaW5nPihnbG9iYWxEYXRh
LmhlYXApKSBKU1N0cmluZyhnbG9iYWxEYXRhLCBmaWJlckNvdW50LCB1MSwgczIpKTsKICAgICAg
ICAgfQogICAgICAgICBzdGF0aWMgSlNTdHJpbmcqIGNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIEpT
VmFsdWUgdjEsIEpTVmFsdWUgdjIsIEpTVmFsdWUgdjMpCiAgICAgICAgIHsKLSAgICAgICAgICAg
IHJldHVybiBuZXcgKGFsbG9jYXRlQ2VsbDxKU1N0cmluZz4oKmV4ZWMtPmhlYXAoKSkpIEpTU3Ry
aW5nKGV4ZWMsIHYxLCB2MiwgdjMpOworICAgICAgICAgICAgcmV0dXJuIHZhbGlkYXRlQWxsb2M8
SlNTdHJpbmc+KGV4ZWMtPmdsb2JhbERhdGEoKSwgbmV3IChhbGxvY2F0ZUNlbGw8SlNTdHJpbmc+
KCpleGVjLT5oZWFwKCkpKSBKU1N0cmluZyhleGVjLCB2MSwgdjIsIHYzKSk7CiAgICAgICAgIH0K
ICAgICAgICAgc3RhdGljIEpTU3RyaW5nKiBjcmVhdGUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRh
LCBjb25zdCBVU3RyaW5nJiB1MSwgY29uc3QgVVN0cmluZyYgdTIpCiAgICAgICAgIHsKLSAgICAg
ICAgICAgIHJldHVybiBuZXcgKGFsbG9jYXRlQ2VsbDxKU1N0cmluZz4oZ2xvYmFsRGF0YS5oZWFw
KSkgSlNTdHJpbmcoZ2xvYmFsRGF0YSwgdTEsIHUyKTsKKyAgICAgICAgICAgIHJldHVybiB2YWxp
ZGF0ZUFsbG9jPEpTU3RyaW5nPihnbG9iYWxEYXRhLCBuZXcgKGFsbG9jYXRlQ2VsbDxKU1N0cmlu
Zz4oZ2xvYmFsRGF0YS5oZWFwKSkgSlNTdHJpbmcoZ2xvYmFsRGF0YSwgdTEsIHUyKSk7CiAgICAg
ICAgIH0KICAgICAgICAgc3RhdGljIEpTU3RyaW5nKiBjcmVhdGUoSlNHbG9iYWxEYXRhJiBnbG9i
YWxEYXRhLCBjb25zdCBVU3RyaW5nJiB1MSwgY29uc3QgVVN0cmluZyYgdTIsIGNvbnN0IFVTdHJp
bmcmIHUzKQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gbmV3IChhbGxvY2F0ZUNlbGw8
SlNTdHJpbmc+KGdsb2JhbERhdGEuaGVhcCkpIEpTU3RyaW5nKGdsb2JhbERhdGEsIHUxLCB1Miwg
dTMpOworICAgICAgICAgICAgcmV0dXJuIHZhbGlkYXRlQWxsb2M8SlNTdHJpbmc+KGdsb2JhbERh
dGEsIG5ldyAoYWxsb2NhdGVDZWxsPEpTU3RyaW5nPihnbG9iYWxEYXRhLmhlYXApKSBKU1N0cmlu
ZyhnbG9iYWxEYXRhLCB1MSwgdTIsIHUzKSk7CiAgICAgICAgIH0KIAogICAgICAgICB+SlNTdHJp
bmcoKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWF0aE9iamVjdC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hdGhPYmplY3QuaAko
cmV2aXNpb24gOTE5MzkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXRoT2Jq
ZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTMyLDcgKzMyLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgcHVibGljOgogICAgICAgICBzdGF0aWMgTWF0aE9iamVjdCogY3JlYXRlKEV4ZWNTdGF0ZSog
ZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUp
CiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBuZXcgKGFsbG9jYXRlQ2VsbDxNYXRoT2Jq
ZWN0PigqZXhlYy0+aGVhcCgpKSkgTWF0aE9iamVjdChleGVjLCBnbG9iYWxPYmplY3QsIHN0cnVj
dHVyZSk7CisgICAgICAgICAgICByZXR1cm4gdmFsaWRhdGVBbGxvYzxNYXRoT2JqZWN0PihleGVj
LT5nbG9iYWxEYXRhKCksIG5ldyAoYWxsb2NhdGVDZWxsPE1hdGhPYmplY3Q+KCpleGVjLT5oZWFw
KCkpKSBNYXRoT2JqZWN0KGV4ZWMsIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlKSk7CiAgICAgICAg
IH0KICAgICAgICAgdmlydHVhbCBib29sIGdldE93blByb3BlcnR5U2xvdChFeGVjU3RhdGUqLCBj
b25zdCBJZGVudGlmaWVyJiwgUHJvcGVydHlTbG90Jik7CiAgICAgICAgIHZpcnR1YWwgYm9vbCBn
ZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIFBy
b3BlcnR5RGVzY3JpcHRvciYpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
TmF0aXZlRXJyb3JDb25zdHJ1Y3Rvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvci5jcHAJKHJldmlzaW9uIDkxOTM5
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZlRXJyb3JDb25zdHJ1Y3Rv
ci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM3LDExICszNywxMyBAQCBOYXRpdmVFcnJvckNvbnN0
cnVjdG9yOjpOYXRpdmVFcnJvckNvbnN0CiB7CiAgICAgQVNTRVJUKGluaGVyaXRzKCZzX2luZm8p
KTsKIAorICAgIGV4ZWMtPmdsb2JhbERhdGEoKS5zZXRJbml0aWFsaXppbmdPYmplY3QoZmFsc2Up
OwogICAgIE5hdGl2ZUVycm9yUHJvdG90eXBlKiBwcm90b3R5cGUgPSBOYXRpdmVFcnJvclByb3Rv
dHlwZTo6Y3JlYXRlKGV4ZWMsIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlU3RydWN0dXJlLCBuYW1l
QW5kTWVzc2FnZSwgdGhpcyk7CiAKICAgICBwdXREaXJlY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBl
eGVjLT5wcm9wZXJ0eU5hbWVzKCkubGVuZ3RoLCBqc051bWJlcigxKSwgRG9udERlbGV0ZSB8IFJl
YWRPbmx5IHwgRG9udEVudW0pOyAvLyBFQ01BIDE1LjExLjcuNQogICAgIHB1dERpcmVjdChleGVj
LT5nbG9iYWxEYXRhKCksIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5wcm90b3R5cGUsIHByb3RvdHlw
ZSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5IHwgRG9udEVudW0pOwogICAgIG1fZXJyb3JTdHJ1Y3R1
cmUuc2V0KGV4ZWMtPmdsb2JhbERhdGEoKSwgdGhpcywgRXJyb3JJbnN0YW5jZTo6Y3JlYXRlU3Ry
dWN0dXJlKGV4ZWMtPmdsb2JhbERhdGEoKSwgcHJvdG90eXBlKSk7CisgICAgZXhlYy0+Z2xvYmFs
RGF0YSgpLnNldEluaXRpYWxpemluZ09iamVjdCh0cnVlKTsKICAgICBBU1NFUlQobV9lcnJvclN0
cnVjdHVyZSk7CiAgICAgQVNTRVJUKG1fZXJyb3JTdHJ1Y3R1cmUtPnR5cGVJbmZvKCkudHlwZSgp
ID09IE9iamVjdFR5cGUpOwogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
TmF0aXZlRXJyb3JDb25zdHJ1Y3Rvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL05hdGl2ZUVycm9yQ29uc3RydWN0b3IuaAkocmV2aXNpb24gOTE5MzkpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OYXRpdmVFcnJvckNvbnN0cnVjdG9yLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTM2LDcgKzM2LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgcHVi
bGljOgogICAgICAgICBzdGF0aWMgTmF0aXZlRXJyb3JDb25zdHJ1Y3RvciogY3JlYXRlKEV4ZWNT
dGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUsIFN0cnVjdHVyZSogcHJvdG90eXBlU3RydWN0dXJlLCBjb25zdCBVU3RyaW5nJiBuYW1l
QW5kTWVzc2FnZSkKICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIG5ldyAoYWxsb2NhdGVD
ZWxsPE5hdGl2ZUVycm9yQ29uc3RydWN0b3I+KCpleGVjLT5oZWFwKCkpKSBOYXRpdmVFcnJvckNv
bnN0cnVjdG9yKGV4ZWMsIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBwcm90b3R5cGVTdHJ1Y3R1
cmUsIG5hbWVBbmRNZXNzYWdlKTsKKyAgICAgICAgICAgIHJldHVybiB2YWxpZGF0ZUFsbG9jPE5h
dGl2ZUVycm9yQ29uc3RydWN0b3I+KGV4ZWMtPmdsb2JhbERhdGEoKSwgbmV3IChhbGxvY2F0ZUNl
bGw8TmF0aXZlRXJyb3JDb25zdHJ1Y3Rvcj4oKmV4ZWMtPmhlYXAoKSkpIE5hdGl2ZUVycm9yQ29u
c3RydWN0b3IoZXhlYywgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIHByb3RvdHlwZVN0cnVjdHVy
ZSwgbmFtZUFuZE1lc3NhZ2UpKTsKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgc3RhdGlj
IGNvbnN0IENsYXNzSW5mbyBzX2luZm87CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9OYXRpdmVFcnJvclByb3RvdHlwZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZlRXJyb3JQcm90b3R5cGUuY3BwCShyZXZpc2lvbiA5MTkz
OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05hdGl2ZUVycm9yUHJvdG90eXBl
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzMsOSArMzMsMTEgQEAgQVNTRVJUX0NMQVNTX0ZJVFNf
SU5fQ0VMTChOYXRpdmVFcnJvclBybwogTmF0aXZlRXJyb3JQcm90b3R5cGU6Ok5hdGl2ZUVycm9y
UHJvdG90eXBlKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IFVTdHJpbmcmIG5hbWVBbmRNZXNzYWdlLCBOYXRp
dmVFcnJvckNvbnN0cnVjdG9yKiBjb25zdHJ1Y3RvcikKICAgICA6IEVycm9yUHJvdG90eXBlKGV4
ZWMsIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlKQogeworICAgIGV4ZWMtPmdsb2JhbERhdGEoKS5z
ZXRJbml0aWFsaXppbmdPYmplY3QoZmFsc2UpOwogICAgIHB1dERpcmVjdChleGVjLT5nbG9iYWxE
YXRhKCksIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5uYW1lLCBqc1N0cmluZyhleGVjLCBuYW1lQW5k
TWVzc2FnZSksIERvbnRFbnVtKTsKICAgICBwdXREaXJlY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBl
eGVjLT5wcm9wZXJ0eU5hbWVzKCkubWVzc2FnZSwganNTdHJpbmcoZXhlYywgbmFtZUFuZE1lc3Nh
Z2UpLCBEb250RW51bSk7CiAgICAgcHV0RGlyZWN0KGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+
cHJvcGVydHlOYW1lcygpLmNvbnN0cnVjdG9yLCBjb25zdHJ1Y3RvciwgRG9udEVudW0pOworICAg
IGV4ZWMtPmdsb2JhbERhdGEoKS5zZXRJbml0aWFsaXppbmdPYmplY3QodHJ1ZSk7CiB9CiAKIH0g
Ly8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0
aXZlRXJyb3JQcm90b3R5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9OYXRpdmVFcnJvclByb3RvdHlwZS5oCShyZXZpc2lvbiA5MTkzOSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05hdGl2ZUVycm9yUHJvdG90eXBlLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTMzLDcgKzMzLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgcHVibGljOgogICAg
ICAgICBzdGF0aWMgTmF0aXZlRXJyb3JQcm90b3R5cGUqIGNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMs
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBjb25z
dCBVU3RyaW5nJiBuYW1lQW5kTWVzc2FnZSwgTmF0aXZlRXJyb3JDb25zdHJ1Y3RvciogY29uc3Ry
dWN0b3IpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBuZXcgKGFsbG9jYXRlQ2VsbDxO
YXRpdmVFcnJvclByb3RvdHlwZT4oKmV4ZWMtPmhlYXAoKSkpIE5hdGl2ZUVycm9yUHJvdG90eXBl
KGV4ZWMsIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBuYW1lQW5kTWVzc2FnZSwgY29uc3RydWN0
b3IpOworICAgICAgICAgICAgcmV0dXJuIHZhbGlkYXRlQWxsb2MoZXhlYy0+Z2xvYmFsRGF0YSgp
LCBuZXcgKGFsbG9jYXRlQ2VsbDxOYXRpdmVFcnJvclByb3RvdHlwZT4oKmV4ZWMtPmhlYXAoKSkp
IE5hdGl2ZUVycm9yUHJvdG90eXBlKGV4ZWMsIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBuYW1l
QW5kTWVzc2FnZSwgY29uc3RydWN0b3IpKTsKICAgICAgICAgfQogICAgIH07CiAKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051bWJlckNvbnN0cnVjdG9yLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVtYmVyQ29uc3RydWN0b3IuaAko
cmV2aXNpb24gOTE5MzkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OdW1iZXJD
b25zdHJ1Y3Rvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw3ICszNCw3IEBAIG5hbWVzcGFjZSBK
U0MgewogICAgIHB1YmxpYzoKICAgICAgICAgc3RhdGljIE51bWJlckNvbnN0cnVjdG9yKiBjcmVh
dGUoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSwgTnVtYmVyUHJvdG90eXBlKiBudW1Qcm90b3R5cGUpCiAgICAgICAgIHsK
LSAgICAgICAgICAgIHJldHVybiBuZXcgKGFsbG9jYXRlQ2VsbDxOdW1iZXJDb25zdHJ1Y3Rvcj4o
KmV4ZWMtPmhlYXAoKSkpIE51bWJlckNvbnN0cnVjdG9yKGV4ZWMsIGdsb2JhbE9iamVjdCwgc3Ry
dWN0dXJlLCBudW1Qcm90b3R5cGUpOworICAgICAgICAgICAgcmV0dXJuIHZhbGlkYXRlQWxsb2M8
TnVtYmVyQ29uc3RydWN0b3I+KGV4ZWMtPmdsb2JhbERhdGEoKSwgbmV3IChhbGxvY2F0ZUNlbGw8
TnVtYmVyQ29uc3RydWN0b3I+KCpleGVjLT5oZWFwKCkpKSBOdW1iZXJDb25zdHJ1Y3RvcihleGVj
LCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgbnVtUHJvdG90eXBlKSk7CiAgICAgICAgIH0KIAog
ICAgICAgICB2aXJ0dWFsIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEV4ZWNTdGF0ZSosIGNvbnN0
IElkZW50aWZpZXImLCBQcm9wZXJ0eVNsb3QmKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL051bWJlck9iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL051bWJlck9iamVjdC5oCShyZXZpc2lvbiA5MTkzOSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL051bWJlck9iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0z
Miw3ICszMiw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHB1YmxpYzoKICAgICAgICAgc3RhdGlj
IE51bWJlck9iamVjdCogY3JlYXRlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgU3RydWN0dXJl
KiBzdHJ1Y3R1cmUpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBuZXcgKGFsbG9jYXRl
Q2VsbDxOdW1iZXJPYmplY3Q+KGdsb2JhbERhdGEuaGVhcCkpIE51bWJlck9iamVjdChnbG9iYWxE
YXRhLCBzdHJ1Y3R1cmUpOworICAgICAgICAgICAgcmV0dXJuIHZhbGlkYXRlQWxsb2MoZ2xvYmFs
RGF0YSwgbmV3IChhbGxvY2F0ZUNlbGw8TnVtYmVyT2JqZWN0PihnbG9iYWxEYXRhLmhlYXApKSBO
dW1iZXJPYmplY3QoZ2xvYmFsRGF0YSwgc3RydWN0dXJlKSk7CiAgICAgICAgIH0KIAogICAgICAg
ICBzdGF0aWMgY29uc3QgQ2xhc3NJbmZvIHNfaW5mbzsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL051bWJlclByb3RvdHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL051bWJlclByb3RvdHlwZS5oCShyZXZpc2lvbiA5MTkzOSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051bWJlclByb3RvdHlwZS5oCSh3b3JraW5n
IGNvcHkpCkBAIC0zMiw3ICszMiw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHB1YmxpYzoKICAg
ICAgICAgc3RhdGljIE51bWJlclByb3RvdHlwZSogY3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAgICAgICAg
IHsKLSAgICAgICAgICAgIHJldHVybiBuZXcgKGFsbG9jYXRlQ2VsbDxOdW1iZXJQcm90b3R5cGU+
KCpleGVjLT5oZWFwKCkpKSBOdW1iZXJQcm90b3R5cGUoZXhlYywgZ2xvYmFsT2JqZWN0LCBzdHJ1
Y3R1cmUpOworICAgICAgICAgICAgcmV0dXJuIHZhbGlkYXRlQWxsb2M8TnVtYmVyUHJvdG90eXBl
PihleGVjLT5nbG9iYWxEYXRhKCksIG5ldyAoYWxsb2NhdGVDZWxsPE51bWJlclByb3RvdHlwZT4o
KmV4ZWMtPmhlYXAoKSkpIE51bWJlclByb3RvdHlwZShleGVjLCBnbG9iYWxPYmplY3QsIHN0cnVj
dHVyZSkpOwogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBzdGF0aWMgY29uc3QgQ2xhc3NJ
bmZvIHNfaW5mbzsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdENv
bnN0cnVjdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
T2JqZWN0Q29uc3RydWN0b3IuaAkocmV2aXNpb24gOTE5MzkpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw3
ICszNCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHB1YmxpYzoKICAgICAgICAgc3RhdGljIE9i
amVjdENvbnN0cnVjdG9yKiBjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgT2JqZWN0UHJvdG90eXBlKiBvYmpQ
cm90b3R5cGUpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBuZXcgKGFsbG9jYXRlQ2Vs
bDxPYmplY3RDb25zdHJ1Y3Rvcj4oKmV4ZWMtPmhlYXAoKSkpIE9iamVjdENvbnN0cnVjdG9yKGV4
ZWMsIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBvYmpQcm90b3R5cGUpOworICAgICAgICAgICAg
cmV0dXJuIHZhbGlkYXRlQWxsb2MoZXhlYy0+Z2xvYmFsRGF0YSgpLCBuZXcgKGFsbG9jYXRlQ2Vs
bDxPYmplY3RDb25zdHJ1Y3Rvcj4oKmV4ZWMtPmhlYXAoKSkpIE9iamVjdENvbnN0cnVjdG9yKGV4
ZWMsIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBvYmpQcm90b3R5cGUpKTsKICAgICAgICAgfQog
CiAgICAgICAgIHZpcnR1YWwgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoRXhlY1N0YXRlKiwgY29u
c3QgSWRlbnRpZmllciYsIFByb3BlcnR5U2xvdCYpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvT2JqZWN0UHJvdG90eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0UHJvdG90eXBlLmgJKHJldmlzaW9uIDkxOTM5KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0UHJvdG90eXBlLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTMyLDcgKzMyLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgcHVibGljOgogICAg
ICAgICBzdGF0aWMgT2JqZWN0UHJvdG90eXBlKiBjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAgICAgICAg
ewotICAgICAgICAgICAgcmV0dXJuIG5ldyAoYWxsb2NhdGVDZWxsPE9iamVjdFByb3RvdHlwZT4o
KmV4ZWMtPmhlYXAoKSkpIE9iamVjdFByb3RvdHlwZShleGVjLCBnbG9iYWxPYmplY3QsIHN0cnVj
dHVyZSk7CisgICAgICAgICAgICByZXR1cm4gdmFsaWRhdGVBbGxvYzxPYmplY3RQcm90b3R5cGU+
KGV4ZWMtPmdsb2JhbERhdGEoKSwgbmV3IChhbGxvY2F0ZUNlbGw8T2JqZWN0UHJvdG90eXBlPigq
ZXhlYy0+aGVhcCgpKSkgT2JqZWN0UHJvdG90eXBlKGV4ZWMsIGdsb2JhbE9iamVjdCwgc3RydWN0
dXJlKSk7CiAgICAgICAgIH0KIAogICAgICAgICBzdGF0aWMgY29uc3QgQ2xhc3NJbmZvIHNfaW5m
bzsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwLmNwcAkocmV2aXNp
b24gOTE5MzkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHAuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xMDEsNyArMTAxLDcgQEAgUmVnRXhwOjp+UmVnRXhwKCkKIAogUmVn
RXhwKiBSZWdFeHA6OmNyZWF0ZVdpdGhvdXRDYWNoaW5nKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0
YSwgY29uc3QgVVN0cmluZyYgcGF0dGVyblN0cmluZywgUmVnRXhwRmxhZ3MgZmxhZ3MpCiB7Ci0g
ICAgcmV0dXJuIG5ldyAoYWxsb2NhdGVDZWxsPFJlZ0V4cD4oZ2xvYmFsRGF0YS5oZWFwKSkgUmVn
RXhwKGdsb2JhbERhdGEsIHBhdHRlcm5TdHJpbmcsIGZsYWdzKTsKKyAgICByZXR1cm4gdmFsaWRh
dGVBbGxvYzxSZWdFeHA+KGdsb2JhbERhdGEsIG5ldyAoYWxsb2NhdGVDZWxsPFJlZ0V4cD4oZ2xv
YmFsRGF0YS5oZWFwKSkgUmVnRXhwKGdsb2JhbERhdGEsIHBhdHRlcm5TdHJpbmcsIGZsYWdzKSk7
CiB9CiAKIFJlZ0V4cCogUmVnRXhwOjpjcmVhdGUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBj
b25zdCBVU3RyaW5nJiBwYXR0ZXJuU3RyaW5nLCBSZWdFeHBGbGFncyBmbGFncykKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cENvbnN0cnVjdG9yLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwQ29uc3RydWN0b3IuaAko
cmV2aXNpb24gOTE5MzkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBD
b25zdHJ1Y3Rvci5oCSh3b3JraW5nIGNvcHkpCkBAIC02Miw3ICs2Miw3IEBAIG5hbWVzcGFjZSBK
U0MgewogICAgIHB1YmxpYzoKICAgICAgICAgc3RhdGljIFJlZ0V4cENvbnN0cnVjdG9yKiBjcmVh
dGUoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSwgUmVnRXhwUHJvdG90eXBlKiByZWdFeHBQcm90b3R5cGUpCiAgICAgICAg
IHsKLSAgICAgICAgICAgIHJldHVybiBuZXcgKGFsbG9jYXRlQ2VsbDxSZWdFeHBDb25zdHJ1Y3Rv
cj4oKmV4ZWMtPmhlYXAoKSkpIFJlZ0V4cENvbnN0cnVjdG9yKGV4ZWMsIGdsb2JhbE9iamVjdCwg
c3RydWN0dXJlLCByZWdFeHBQcm90b3R5cGUpOworICAgICAgICAgICAgcmV0dXJuIHZhbGlkYXRl
QWxsb2M8UmVnRXhwQ29uc3RydWN0b3I+KGV4ZWMtPmdsb2JhbERhdGEoKSwgbmV3IChhbGxvY2F0
ZUNlbGw8UmVnRXhwQ29uc3RydWN0b3I+KCpleGVjLT5oZWFwKCkpKSBSZWdFeHBDb25zdHJ1Y3Rv
cihleGVjLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgcmVnRXhwUHJvdG90eXBlKSk7CiAgICAg
ICAgIH0KIAogICAgICAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNHbG9i
YWxEYXRhJiBnbG9iYWxEYXRhLCBKU1ZhbHVlIHByb3RvdHlwZSkKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE1hdGNoZXNBcnJheS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE1hdGNoZXNBcnJheS5oCShyZXZpc2lv
biA5MTkzOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE1hdGNoZXNB
cnJheS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNSwxNyArMjUsMTUgQEAKIG5hbWVzcGFjZSBKU0Mg
ewogCiAgICAgY2xhc3MgUmVnRXhwTWF0Y2hlc0FycmF5IDogcHVibGljIEpTQXJyYXkgewotICAg
IHByaXZhdGU6Ci0gICAgICAgIFJlZ0V4cE1hdGNoZXNBcnJheShFeGVjU3RhdGUqLCBSZWdFeHBD
b25zdHJ1Y3RvclByaXZhdGUqKTsKLQogICAgIHB1YmxpYzoKICAgICAgICAgc3RhdGljIFJlZ0V4
cE1hdGNoZXNBcnJheSogY3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgUmVnRXhwQ29uc3RydWN0b3JQ
cml2YXRlKiBjdG9yUHJpdmF0ZSkKICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIG5ldyAo
YWxsb2NhdGVDZWxsPFJlZ0V4cE1hdGNoZXNBcnJheT4oKmV4ZWMtPmhlYXAoKSkpIFJlZ0V4cE1h
dGNoZXNBcnJheShleGVjLCBjdG9yUHJpdmF0ZSk7CisgICAgICAgICAgICByZXR1cm4gdmFsaWRh
dGVBbGxvYzxSZWdFeHBNYXRjaGVzQXJyYXk+KGV4ZWMtPmdsb2JhbERhdGEoKSwgbmV3IChhbGxv
Y2F0ZUNlbGw8UmVnRXhwTWF0Y2hlc0FycmF5PigqZXhlYy0+aGVhcCgpKSkgUmVnRXhwTWF0Y2hl
c0FycmF5KGV4ZWMsIGN0b3JQcml2YXRlKSk7CiAgICAgICAgIH0KICAgICAgICAgdmlydHVhbCB+
UmVnRXhwTWF0Y2hlc0FycmF5KCk7CiAKICAgICBwcml2YXRlOgorICAgICAgICBSZWdFeHBNYXRj
aGVzQXJyYXkoRXhlY1N0YXRlKiwgUmVnRXhwQ29uc3RydWN0b3JQcml2YXRlKik7CiAgICAgICAg
IHZpcnR1YWwgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJ
ZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKICAgICAgICAgewog
ICAgICAgICAgICAgaWYgKHN1YmNsYXNzRGF0YSgpKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvUmVnRXhwT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvUmVnRXhwT2JqZWN0LmgJKHJldmlzaW9uIDkxOTM5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAg
LTMzLDEyICszMywxMiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBwdWJsaWM6CiAgICAgICAgIHN0
YXRpYyBSZWdFeHBPYmplY3QqIGNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBSZWdFeHAqIHJlZ0V4cCkKICAg
ICAgICAgewotICAgICAgICAgICAgcmV0dXJuIG5ldyAoYWxsb2NhdGVDZWxsPFJlZ0V4cE9iamVj
dD4oKmV4ZWMtPmhlYXAoKSkpIFJlZ0V4cE9iamVjdChnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwg
cmVnRXhwKTsKKyAgICAgICAgICAgIHJldHVybiB2YWxpZGF0ZUFsbG9jPFJlZ0V4cE9iamVjdD4o
ZXhlYy0+Z2xvYmFsRGF0YSgpLCBuZXcgKGFsbG9jYXRlQ2VsbDxSZWdFeHBPYmplY3Q+KCpleGVj
LT5oZWFwKCkpKSBSZWdFeHBPYmplY3QoZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIHJlZ0V4cCkp
OwogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBzdGF0aWMgUmVnRXhwT2JqZWN0KiBjcmVh
dGUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUmVnRXhwKiByZWdFeHApCiAgICAgICAgIHsKLSAgICAg
ICAgICAgIHJldHVybiBuZXcgKGFsbG9jYXRlQ2VsbDxSZWdFeHBPYmplY3Q+KGdsb2JhbERhdGEu
aGVhcCkpIFJlZ0V4cE9iamVjdChnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgcmVnRXhwKTsKKyAg
ICAgICAgICAgIHJldHVybiB2YWxpZGF0ZUFsbG9jPFJlZ0V4cE9iamVjdD4oZ2xvYmFsRGF0YSwg
bmV3IChhbGxvY2F0ZUNlbGw8UmVnRXhwT2JqZWN0PihnbG9iYWxEYXRhLmhlYXApKSBSZWdFeHBP
YmplY3QoZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIHJlZ0V4cCkpOwogICAgICAgICB9CiAgICAg
ICAgIAogICAgICAgICB0eXBlZGVmIEpTT2JqZWN0V2l0aEdsb2JhbE9iamVjdCBCYXNlOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwUHJvdG90eXBlLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwUHJvdG90eXBlLmgJ
KHJldmlzaW9uIDkxOTM5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhw
UHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTMzLDcgKzMzLDcgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgcHVibGljOgogICAgICAgICBzdGF0aWMgUmVnRXhwUHJvdG90eXBlKiBjcmVhdGUo
RXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSwgUmVnRXhwKiByZWdFeHApCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVy
biBuZXcgKGFsbG9jYXRlQ2VsbDxSZWdFeHBQcm90b3R5cGU+KCpleGVjLT5oZWFwKCkpKSBSZWdF
eHBQcm90b3R5cGUoZXhlYywgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIHJlZ0V4cCk7CisgICAg
ICAgICAgICByZXR1cm4gdmFsaWRhdGVBbGxvYzxSZWdFeHBQcm90b3R5cGU+KGV4ZWMtPmdsb2Jh
bERhdGEoKSwgbmV3IChhbGxvY2F0ZUNlbGw8UmVnRXhwUHJvdG90eXBlPigqZXhlYy0+aGVhcCgp
KSkgUmVnRXhwUHJvdG90eXBlKGV4ZWMsIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCByZWdFeHAp
KTsKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgc3RhdGljIGNvbnN0IENsYXNzSW5mbyBz
X2luZm87CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TY29wZUNoYWluLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2NvcGVDaGFpbi5o
CShyZXZpc2lvbiA5MTkzOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Njb3Bl
Q2hhaW4uaAkod29ya2luZyBjb3B5KQpAQCAtNTAsMTEgKzUwLDExIEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgIHB1YmxpYzoKICAgICAgICAgc3RhdGljIFNjb3BlQ2hhaW5Ob2RlKiBjcmVhdGUoRXhl
Y1N0YXRlKiBleGVjLCBTY29wZUNoYWluTm9kZSogbmV4dCwgSlNPYmplY3QqIG9iamVjdCwgSlNH
bG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU09i
amVjdCogZ2xvYmFsVGhpcykKICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIG5ldyAoYWxs
b2NhdGVDZWxsPFNjb3BlQ2hhaW5Ob2RlPigqZXhlYy0+aGVhcCgpKSkgU2NvcGVDaGFpbk5vZGUo
bmV4dCwgb2JqZWN0LCBnbG9iYWxEYXRhLCBnbG9iYWxPYmplY3QsIGdsb2JhbFRoaXMpOworICAg
ICAgICAgICAgcmV0dXJuIHZhbGlkYXRlQWxsb2M8U2NvcGVDaGFpbk5vZGU+KGV4ZWMtPmdsb2Jh
bERhdGEoKSwgbmV3IChhbGxvY2F0ZUNlbGw8U2NvcGVDaGFpbk5vZGU+KCpleGVjLT5oZWFwKCkp
KSBTY29wZUNoYWluTm9kZShuZXh0LCBvYmplY3QsIGdsb2JhbERhdGEsIGdsb2JhbE9iamVjdCwg
Z2xvYmFsVGhpcykpOwogICAgICAgICB9CiAgICAgICAgIHN0YXRpYyBTY29wZUNoYWluTm9kZSog
Y3JlYXRlKFNjb3BlQ2hhaW5Ob2RlKiBuZXh0LCBKU09iamVjdCogb2JqZWN0LCBKU0dsb2JhbERh
dGEqIGdsb2JhbERhdGEsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTT2JqZWN0KiBn
bG9iYWxUaGlzKQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gbmV3IChhbGxvY2F0ZUNl
bGw8U2NvcGVDaGFpbk5vZGU+KGdsb2JhbERhdGEtPmhlYXApKSBTY29wZUNoYWluTm9kZShuZXh0
LCBvYmplY3QsIGdsb2JhbERhdGEsIGdsb2JhbE9iamVjdCwgZ2xvYmFsVGhpcyk7CisgICAgICAg
ICAgICByZXR1cm4gdmFsaWRhdGVBbGxvYzxTY29wZUNoYWluTm9kZT4oKmdsb2JhbERhdGEsIG5l
dyAoYWxsb2NhdGVDZWxsPFNjb3BlQ2hhaW5Ob2RlPihnbG9iYWxEYXRhLT5oZWFwKSkgU2NvcGVD
aGFpbk5vZGUobmV4dCwgb2JqZWN0LCBnbG9iYWxEYXRhLCBnbG9iYWxPYmplY3QsIGdsb2JhbFRo
aXMpKTsKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgSlNHbG9iYWxEYXRhKiBnbG9iYWxE
YXRhOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaWN0RXZhbEFjdGl2
YXRpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJp
Y3RFdmFsQWN0aXZhdGlvbi5oCShyZXZpc2lvbiA5MTkzOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1N0cmljdEV2YWxBY3RpdmF0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTM0
LDcgKzM0LDcgQEAgY2xhc3MgU3RyaWN0RXZhbEFjdGl2YXRpb24gOiBwdWJsaWMgSlNObwogcHVi
bGljOgogICAgIHN0YXRpYyBTdHJpY3RFdmFsQWN0aXZhdGlvbiogY3JlYXRlKEV4ZWNTdGF0ZSog
ZXhlYykKICAgICB7Ci0gICAgICAgIHJldHVybiBuZXcgKGFsbG9jYXRlQ2VsbDxTdHJpY3RFdmFs
QWN0aXZhdGlvbj4oKmV4ZWMtPmhlYXAoKSkpIFN0cmljdEV2YWxBY3RpdmF0aW9uKGV4ZWMpOwor
ICAgICAgICByZXR1cm4gdmFsaWRhdGVBbGxvYzxTdHJpY3RFdmFsQWN0aXZhdGlvbj4oZXhlYy0+
Z2xvYmFsRGF0YSgpLCBuZXcgKGFsbG9jYXRlQ2VsbDxTdHJpY3RFdmFsQWN0aXZhdGlvbj4oKmV4
ZWMtPmhlYXAoKSkpIFN0cmljdEV2YWxBY3RpdmF0aW9uKGV4ZWMpKTsKICAgICB9CiAKICAgICB2
aXJ0dWFsIGJvb2wgZGVsZXRlUHJvcGVydHkoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYp
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nQ29uc3RydWN0b3Iu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdDb25z
dHJ1Y3Rvci5oCShyZXZpc2lvbiA5MTkzOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1N0cmluZ0NvbnN0cnVjdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTM0LDcgKzM0LDcgQEAg
bmFtZXNwYWNlIEpTQyB7CiAgICAgcHVibGljOgogICAgICAgICBzdGF0aWMgU3RyaW5nQ29uc3Ry
dWN0b3IqIGNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QgLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgU3RyaW5nUHJvdG90eXBlKiBzdHJQcm90b3R5cGUp
CiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBuZXcgKGFsbG9jYXRlQ2VsbDxTdHJpbmdD
b25zdHJ1Y3Rvcj4oKmV4ZWMtPmhlYXAoKSkpIFN0cmluZ0NvbnN0cnVjdG9yKGV4ZWMsIGdsb2Jh
bE9iamVjdCwgc3RydWN0dXJlLCBzdHJQcm90b3R5cGUpOworICAgICAgICAgICAgcmV0dXJuIHZh
bGlkYXRlQWxsb2M8U3RyaW5nQ29uc3RydWN0b3I+KGV4ZWMtPmdsb2JhbERhdGEoKSwgbmV3IChh
bGxvY2F0ZUNlbGw8U3RyaW5nQ29uc3RydWN0b3I+KCpleGVjLT5oZWFwKCkpKSBTdHJpbmdDb25z
dHJ1Y3RvcihleGVjLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgc3RyUHJvdG90eXBlKSk7CiAg
ICAgICAgIH0KIAogICAgICAgICBzdGF0aWMgY29uc3QgQ2xhc3NJbmZvIHNfaW5mbzsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ09iamVjdC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nT2JqZWN0LmNwcAkocmV2
aXNpb24gOTE5MzkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdPYmpl
Y3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw3ICszMyw5IEBAIFN0cmluZ09iamVjdDo6U3Ry
aW5nT2JqZWN0KEV4ZWNTdGF0ZSogZXgKICAgICA6IEpTV3JhcHBlck9iamVjdChleGVjLT5nbG9i
YWxEYXRhKCksIHN0cnVjdHVyZSkKIHsKICAgICBBU1NFUlQoaW5oZXJpdHMoJnNfaW5mbykpOwor
ICAgIGV4ZWMtPmdsb2JhbERhdGEoKS5zZXRJbml0aWFsaXppbmdPYmplY3QoZmFsc2UpOwogICAg
IHNldEludGVybmFsVmFsdWUoZXhlYy0+Z2xvYmFsRGF0YSgpLCBqc0VtcHR5U3RyaW5nKGV4ZWMp
KTsKKyAgICBleGVjLT5nbG9iYWxEYXRhKCkuc2V0SW5pdGlhbGl6aW5nT2JqZWN0KHRydWUpOwog
fQogCiBTdHJpbmdPYmplY3Q6OlN0cmluZ09iamVjdChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEs
IFN0cnVjdHVyZSogc3RydWN0dXJlLCBKU1N0cmluZyogc3RyaW5nKQpAQCAtNDcsNyArNDksOSBA
QCBTdHJpbmdPYmplY3Q6OlN0cmluZ09iamVjdChFeGVjU3RhdGUqIGV4CiAgICAgOiBKU1dyYXBw
ZXJPYmplY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBzdHJ1Y3R1cmUpCiB7CiAgICAgQVNTRVJUKGlu
aGVyaXRzKCZzX2luZm8pKTsKKyAgICBleGVjLT5nbG9iYWxEYXRhKCkuc2V0SW5pdGlhbGl6aW5n
T2JqZWN0KGZhbHNlKTsKICAgICBzZXRJbnRlcm5hbFZhbHVlKGV4ZWMtPmdsb2JhbERhdGEoKSwg
anNTdHJpbmcoZXhlYywgc3RyaW5nKSk7CisgICAgZXhlYy0+Z2xvYmFsRGF0YSgpLnNldEluaXRp
YWxpemluZ09iamVjdCh0cnVlKTsKIH0KIAogYm9vbCBTdHJpbmdPYmplY3Q6OmdldE93blByb3Bl
cnR5U2xvdChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwg
UHJvcGVydHlTbG90JiBzbG90KQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
U3RyaW5nT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvU3RyaW5nT2JqZWN0LmgJKHJldmlzaW9uIDkxOTM5KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvU3RyaW5nT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTM0LDExICszNCwx
MSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBwdWJsaWM6CiAgICAgICAgIHN0YXRpYyBTdHJpbmdP
YmplY3QqIGNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZSogc3RydWN0dXJlKQogICAg
ICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gbmV3IChhbGxvY2F0ZUNlbGw8U3RyaW5nT2JqZWN0
PigqZXhlYy0+aGVhcCgpKSkgU3RyaW5nT2JqZWN0KGV4ZWMsIHN0cnVjdHVyZSk7ICAKKyAgICAg
ICAgICAgIHJldHVybiB2YWxpZGF0ZUFsbG9jPFN0cmluZ09iamVjdD4oZXhlYy0+Z2xvYmFsRGF0
YSgpLCBuZXcgKGFsbG9jYXRlQ2VsbDxTdHJpbmdPYmplY3Q+KCpleGVjLT5oZWFwKCkpKSBTdHJp
bmdPYmplY3QoZXhlYywgc3RydWN0dXJlKSk7CiAgICAgICAgIH0KICAgICAgICAgc3RhdGljIFN0
cmluZ09iamVjdCogY3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUs
IGNvbnN0IFVTdHJpbmcmIHN0cikKICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIG5ldyAo
YWxsb2NhdGVDZWxsPFN0cmluZ09iamVjdD4oKmV4ZWMtPmhlYXAoKSkpIFN0cmluZ09iamVjdChl
eGVjLCBzdHJ1Y3R1cmUsIHN0cik7ICAKKyAgICAgICAgICAgIHJldHVybiB2YWxpZGF0ZUFsbG9j
PFN0cmluZ09iamVjdD4oZXhlYy0+Z2xvYmFsRGF0YSgpLCBuZXcgKGFsbG9jYXRlQ2VsbDxTdHJp
bmdPYmplY3Q+KCpleGVjLT5oZWFwKCkpKSBTdHJpbmdPYmplY3QoZXhlYywgc3RydWN0dXJlLCBz
dHIpKTsKICAgICAgICAgfQogICAgICAgICBzdGF0aWMgU3RyaW5nT2JqZWN0KiBjcmVhdGUoRXhl
Y1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqLCBKU1N0cmluZyopOwogICAgICAgICAKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ09iamVjdFRoYXRNYXNxdWVyYWRlc0Fz
VW5kZWZpbmVkLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
U3RyaW5nT2JqZWN0VGhhdE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQuaAkocmV2aXNpb24gOTE5Mzkp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdPYmplY3RUaGF0TWFzcXVl
cmFkZXNBc1VuZGVmaW5lZC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw4ICszMiw4IEBAIG5hbWVz
cGFjZSBKU0MgewogICAgIHB1YmxpYzoKICAgICAgICAgc3RhdGljIFN0cmluZ09iamVjdFRoYXRN
YXNxdWVyYWRlc0FzVW5kZWZpbmVkKiBjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBVU3Ry
aW5nJiBzdHJpbmcpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBuZXcgKGFsbG9jYXRl
Q2VsbDxTdHJpbmdPYmplY3RUaGF0TWFzcXVlcmFkZXNBc1VuZGVmaW5lZD4oKmV4ZWMtPmhlYXAo
KSkpIFN0cmluZ09iamVjdFRoYXRNYXNxdWVyYWRlc0FzVW5kZWZpbmVkKGV4ZWMsCi0gICAgICAg
ICAgICAgICAgY3JlYXRlU3RydWN0dXJlKGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+bGV4aWNh
bEdsb2JhbE9iamVjdCgpLT5zdHJpbmdQcm90b3R5cGUoKSksIHN0cmluZyk7CisgICAgICAgICAg
ICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGNyZWF0ZVN0cnVjdHVyZShleGVjLT5nbG9iYWxEYXRh
KCksIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+c3RyaW5nUHJvdG90eXBlKCkpOworICAg
ICAgICAgICAgcmV0dXJuIHZhbGlkYXRlQWxsb2M8U3RyaW5nT2JqZWN0VGhhdE1hc3F1ZXJhZGVz
QXNVbmRlZmluZWQ+KGV4ZWMtPmdsb2JhbERhdGEoKSwgbmV3IChhbGxvY2F0ZUNlbGw8U3RyaW5n
T2JqZWN0VGhhdE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQ+KCpleGVjLT5oZWFwKCkpKSBTdHJpbmdP
YmplY3RUaGF0TWFzcXVlcmFkZXNBc1VuZGVmaW5lZChleGVjLCBzdHJ1Y3R1cmUsIHN0cmluZykp
OwogICAgICAgICB9CiAKICAgICBwcml2YXRlOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvU3RyaW5nUHJvdG90eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvU3RyaW5nUHJvdG90eXBlLmgJKHJldmlzaW9uIDkxOTM5KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nUHJvdG90eXBlLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTM0LDcgKzM0LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgcHVibGljOgogICAgICAg
ICBzdGF0aWMgU3RyaW5nUHJvdG90eXBlKiBjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAgICAgICAgewot
ICAgICAgICAgICAgcmV0dXJuIG5ldyAoYWxsb2NhdGVDZWxsPFN0cmluZ1Byb3RvdHlwZT4oKmV4
ZWMtPmhlYXAoKSkpIFN0cmluZ1Byb3RvdHlwZShleGVjLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVy
ZSk7CisgICAgICAgICAgICByZXR1cm4gdmFsaWRhdGVBbGxvYzxTdHJpbmdQcm90b3R5cGU+KGV4
ZWMtPmdsb2JhbERhdGEoKSwgbmV3IChhbGxvY2F0ZUNlbGw8U3RyaW5nUHJvdG90eXBlPigqZXhl
Yy0+aGVhcCgpKSkgU3RyaW5nUHJvdG90eXBlKGV4ZWMsIGdsb2JhbE9iamVjdCwgc3RydWN0dXJl
KSk7CiAgICAgICAgIH0KIAogICAgICAgICB2aXJ0dWFsIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90
KEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90
Jik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuaAkocmV2
aXNpb24gOTE5MzkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUu
aAkod29ya2luZyBjb3B5KQpAQCAtNjMsNyArNjMsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAg
ICAgewogICAgICAgICAgICAgQVNTRVJUKGdsb2JhbERhdGEuc3RydWN0dXJlU3RydWN0dXJlKTsK
ICAgICAgICAgICAgIEFTU0VSVChjbGFzc0luZm8pOwotICAgICAgICAgICAgcmV0dXJuIG5ldyAo
YWxsb2NhdGVDZWxsPFN0cnVjdHVyZT4oZ2xvYmFsRGF0YS5oZWFwKSkgU3RydWN0dXJlKGdsb2Jh
bERhdGEsIHByb3RvdHlwZSwgdHlwZUluZm8sIGFub255bW91c1Nsb3RDb3VudCwgY2xhc3NJbmZv
KTsKKyAgICAgICAgICAgIHJldHVybiB2YWxpZGF0ZUFsbG9jPFN0cnVjdHVyZT4oZ2xvYmFsRGF0
YSwgbmV3IChhbGxvY2F0ZUNlbGw8U3RydWN0dXJlPihnbG9iYWxEYXRhLmhlYXApKSBTdHJ1Y3R1
cmUoZ2xvYmFsRGF0YSwgcHJvdG90eXBlLCB0eXBlSW5mbywgYW5vbnltb3VzU2xvdENvdW50LCBj
bGFzc0luZm8pKTsKICAgICAgICAgfQogCiAgICAgICAgIHN0YXRpYyB2b2lkIGR1bXBTdGF0aXN0
aWNzKCk7CkBAIC0xNTcsNyArMTU3LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHN0YXRp
YyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEpCiAg
ICAgICAgIHsKICAgICAgICAgICAgIEFTU0VSVCghZ2xvYmFsRGF0YS5zdHJ1Y3R1cmVTdHJ1Y3R1
cmUpOwotICAgICAgICAgICAgcmV0dXJuIG5ldyAoYWxsb2NhdGVDZWxsPFN0cnVjdHVyZT4oZ2xv
YmFsRGF0YS5oZWFwKSkgU3RydWN0dXJlKGdsb2JhbERhdGEpOworICAgICAgICAgICAgcmV0dXJu
IHZhbGlkYXRlQWxsb2M8U3RydWN0dXJlPihnbG9iYWxEYXRhLCBuZXcgKGFsbG9jYXRlQ2VsbDxT
dHJ1Y3R1cmU+KGdsb2JhbERhdGEuaGVhcCkpIFN0cnVjdHVyZShnbG9iYWxEYXRhKSk7CiAgICAg
ICAgIH0KICAgICAgICAgCiAgICAgICAgIHN0YXRpYyBKU19FWFBPUlREQVRBIGNvbnN0IENsYXNz
SW5mbyBzX2luZm87CkBAIC0xNzAsNyArMTcwLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAg
IHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIGNvbnN0
IFN0cnVjdHVyZSogc3RydWN0dXJlKQogICAgICAgICB7CiAgICAgICAgICAgICBBU1NFUlQoZ2xv
YmFsRGF0YS5zdHJ1Y3R1cmVTdHJ1Y3R1cmUpOwotICAgICAgICAgICAgcmV0dXJuIG5ldyAoYWxs
b2NhdGVDZWxsPFN0cnVjdHVyZT4oZ2xvYmFsRGF0YS5oZWFwKSkgU3RydWN0dXJlKGdsb2JhbERh
dGEsIHN0cnVjdHVyZSk7CisgICAgICAgICAgICByZXR1cm4gdmFsaWRhdGVBbGxvYzxTdHJ1Y3R1
cmU+KGdsb2JhbERhdGEsIG5ldyAoYWxsb2NhdGVDZWxsPFN0cnVjdHVyZT4oZ2xvYmFsRGF0YS5o
ZWFwKSkgU3RydWN0dXJlKGdsb2JhbERhdGEsIHN0cnVjdHVyZSkpOwogICAgICAgICB9CiAgICAg
ICAgIAogICAgICAgICB0eXBlZGVmIGVudW0geyAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1N0cnVjdHVyZUNoYWluLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlQ2hhaW4uaAkocmV2aXNpb24gOTE5MzkpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVDaGFpbi5oCSh3b3JraW5nIGNvcHkp
CkBAIC00Miw3ICs0MiwxMSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgZnJpZW5kIGNsYXNz
IEpJVDsKIAogICAgIHB1YmxpYzoKLSAgICAgICAgc3RhdGljIFN0cnVjdHVyZUNoYWluKiBjcmVh
dGUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBTdHJ1Y3R1cmUqIGhlYWQpIHsgcmV0dXJuIG5l
dyAoYWxsb2NhdGVDZWxsPFN0cnVjdHVyZUNoYWluPihnbG9iYWxEYXRhLmhlYXApKSBTdHJ1Y3R1
cmVDaGFpbihnbG9iYWxEYXRhLCBnbG9iYWxEYXRhLnN0cnVjdHVyZUNoYWluU3RydWN0dXJlLmdl
dCgpLCBoZWFkKTsgfQorICAgICAgICBzdGF0aWMgU3RydWN0dXJlQ2hhaW4qIGNyZWF0ZShKU0ds
b2JhbERhdGEmIGdsb2JhbERhdGEsIFN0cnVjdHVyZSogaGVhZCkgCisgICAgICAgIHsKKyAgICAg
ICAgICAgIHJldHVybiB2YWxpZGF0ZUFsbG9jPFN0cnVjdHVyZUNoYWluPihnbG9iYWxEYXRhLCBu
ZXcgKGFsbG9jYXRlQ2VsbDxTdHJ1Y3R1cmVDaGFpbj4oZ2xvYmFsRGF0YS5oZWFwKSkgU3RydWN0
dXJlQ2hhaW4oZ2xvYmFsRGF0YSwgZ2xvYmFsRGF0YS5zdHJ1Y3R1cmVDaGFpblN0cnVjdHVyZS5n
ZXQoKSwgaGVhZCkpOworICAgICAgICB9CisKICAgICAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVy
ZT4qIGhlYWQoKSB7IHJldHVybiBtX3ZlY3Rvci5nZXQoKTsgfQogICAgICAgICB2b2lkIHZpc2l0
Q2hpbGRyZW4oU2xvdFZpc2l0b3ImKTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRHbHVlL0No
YW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdEdsdWUvQ2hhbmdlTG9nCShy
ZXZpc2lvbiA5MTk0MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0R2x1ZS9DaGFuZ2VMb2cJKHdvcmtp
bmcgY29weSkKQEAgLTEsMyArMSwyMiBAQAorMjAxMS0wNy0yOCAgTWFyayBIYWhuZW5iZXJnICA8
bWhhaG5lbmJlcmdAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBjaGVja3MgdG8gZW5zdXJlIGFs
bG9jYXRpb24gZG9lcyBub3QgdGFrZSBwbGFjZSBkdXJpbmcgaW5pdGlhbGl6YXRpb24gb2YgR0Mt
bWFuYWdlZCBvYmplY3RzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD02NTI4OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIEFkZGVkIHRoZSB2YWxpZGF0ZUFsbG9jIGNhbGwgdG8gY2hlY2sgdGhlIGluaXRpYWxp
emluZ09iamVjdCBmbGFnIGluIHRoZSBKU0dsb2JhbERhdGEgb2JqZWN0IGFuZCAKKyAgICAgICAg
dG8gdGhlbiBjbGVhciBzYWlkIGZsYWcuICBObyBmbGFnIGNoZWNraW5nLCBzZXR0aW5nLCBvciBj
bGVhcmluZyBpcyBkb25lIHVubGVzcyBHQ19WQUxJREFUSU9OIGlzIGVuYWJsZWQuICAKKyAgICAg
ICAgQWxzbyBhZGRlZCBzcGVjaWFsIGNhc2VzIHdoZXJlIHRoZSBmbGFnIGlzIGNsZWFyZWQgYW5k
IHRoZSByZXNldCBhcm91bmQgbG9jYXRpb25zIHdoZXJlIG5lc3RlZCAKKyAgICAgICAgYWxsb2Nh
dGlvbnMgb2NjdXIgaW4gdGhlIGNvbnN0cnVjdG9ycy4gIFRoaXMgaXMgbW9zdGx5IHRlbXBvcmFy
eSBmb3Igbm93IHRvIGdldCBiYWNrIHRvIGEgd29ya2luZyBzdGF0ZSAKKyAgICAgICAgd2l0aG91
dCBoYXZpbmcgdG8gaG9pc3QgYWxsIG9mIHRob3NlIGFsb2NhdGlvbnMgb3V0IG9mIHRoZSBjb25z
dHJ1Y3RvcnMuICBUaGlzIGlzIHBhcnQgb2YgYSAKKyAgICAgICAgbGFyZ2VyIHJlZmFjdG9yaW5n
IHRvIG1ha2Ugb3VyIG9iamVjdCBhbGxvY2F0aW9uIGFuZCBpbml0aWFsaXphdGlvbiBtb3JlIEdD
LWZyaWVuZGx5L3NhZmUuIAorCisgICAgICAgICogSlNSdW4uaDoKKyAgICAgICAgKEpTR2x1ZUds
b2JhbE9iamVjdDo6Y3JlYXRlKToKKyAgICAgICAgKiBVc2VyT2JqZWN0SW1wLmg6CisgICAgICAg
IChVc2VyT2JqZWN0SW1wOjpjcmVhdGUpOgorCiAyMDExLTA3LTI3ICBNYXJrIEhhaG5lbmJlcmcg
IDxtaGFobmVuYmVyZ0BhcHBsZS5jb20+CiAKICAgICAgICAgUmVtb3ZlIG9wZXJhdG9yIG5ldyBm
cm9tIEpTQ2VsbApJbmRleDogU291cmNlL0phdmFTY3JpcHRHbHVlL0pTUnVuLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRHbHVlL0pTUnVuLmgJKHJldmlzaW9uIDkxOTM5KQorKysg
U291cmNlL0phdmFTY3JpcHRHbHVlL0pTUnVuLmgJKHdvcmtpbmcgY29weSkKQEAgLTM3LDcgKzM3
LDcgQEAgY2xhc3MgSlNHbHVlR2xvYmFsT2JqZWN0IDogcHVibGljIEpTR2xvYgogICAgIHB1Ymxp
YzoKICAgICAgICAgc3RhdGljIEpTR2x1ZUdsb2JhbE9iamVjdCogY3JlYXRlKEpTR2xvYmFsRGF0
YSYgZ2xvYmFsRGF0YSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTRmxhZ3MgZmxhZ3MgPSBrSlNG
bGFnTm9uZSkKICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIG5ldyAoYWxsb2NhdGVDZWxs
PEpTR2x1ZUdsb2JhbE9iamVjdD4oZ2xvYmFsRGF0YS5oZWFwKSkgSlNHbHVlR2xvYmFsT2JqZWN0
KGdsb2JhbERhdGEsIHN0cnVjdHVyZSwgZmxhZ3MpOworICAgICAgICAgICAgcmV0dXJuIHZhbGlk
YXRlQWxsb2M8SlNHbHVlR2xvYmFsT2JqZWN0PihnbG9iYWxEYXRhLCBuZXcgKGFsbG9jYXRlQ2Vs
bDxKU0dsdWVHbG9iYWxPYmplY3Q+KGdsb2JhbERhdGEuaGVhcCkpIEpTR2x1ZUdsb2JhbE9iamVj
dChnbG9iYWxEYXRhLCBzdHJ1Y3R1cmUsIGZsYWdzKSk7CiAgICAgICAgIH0KIAogICAgICAgICBK
U0ZsYWdzIEZsYWdzKCkgY29uc3QgeyByZXR1cm4gbV9mbGFnczsgfQpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRHbHVlL1VzZXJPYmplY3RJbXAuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdEdsdWUvVXNlck9iamVjdEltcC5oCShyZXZpc2lvbiA5MTkzOSkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0R2x1ZS9Vc2VyT2JqZWN0SW1wLmgJKHdvcmtpbmcgY29weSkKQEAgLTM4LDcgKzM4LDcg
QEAgY2xhc3MgVXNlck9iamVjdEltcCA6IHB1YmxpYyBKU05vbkZpbmFsTwogcHVibGljOgogICAg
IHN0YXRpYyBVc2VyT2JqZWN0SW1wKiBjcmVhdGUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNVc2VyT2JqZWN0KiB1c2VyT2JqZWN0KQogICAgIHsKLSAg
ICAgICAgcmV0dXJuIG5ldyAoYWxsb2NhdGVDZWxsPFVzZXJPYmplY3RJbXA+KGdsb2JhbERhdGEu
aGVhcCkpIFVzZXJPYmplY3RJbXAoZ2xvYmFsRGF0YSwgc3RydWN0dXJlLCB1c2VyT2JqZWN0KTsK
KyAgICAgICAgcmV0dXJuIHZhbGlkYXRlQWxsb2M8VXNlck9iamVjdEltcD4oZ2xvYmFsRGF0YSwg
bmV3IChhbGxvY2F0ZUNlbGw8VXNlck9iamVjdEltcD4oZ2xvYmFsRGF0YS5oZWFwKSkgVXNlck9i
amVjdEltcChnbG9iYWxEYXRhLCBzdHJ1Y3R1cmUsIHVzZXJPYmplY3QpKTsKICAgICB9CiAgICAg
CiAgICAgdmlydHVhbCB+VXNlck9iamVjdEltcCgpOwpJbmRleDogU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24g
OTE5NDApCisrKyBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEs
MyArMSw3OSBAQAorMjAxMS0wNy0yOCAgTWFyayBIYWhuZW5iZXJnICA8bWhhaG5lbmJlcmdAYXBw
bGUuY29tPgorCisgICAgICAgIEFkZCBjaGVja3MgdG8gZW5zdXJlIGFsbG9jYXRpb24gZG9lcyBu
b3QgdGFrZSBwbGFjZSBkdXJpbmcgaW5pdGlhbGl6YXRpb24gb2YgR0MtbWFuYWdlZCBvYmplY3Rz
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NTI4OAor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0
ZXN0cy4KKworICAgICAgICBBZGRlZCB0aGUgdmFsaWRhdGVBbGxvYyBjYWxsIHRvIGNoZWNrIHRo
ZSBpbml0aWFsaXppbmdPYmplY3QgZmxhZyBpbiB0aGUgSlNHbG9iYWxEYXRhIG9iamVjdCBhbmQg
CisgICAgICAgIHRvIHRoZW4gY2xlYXIgc2FpZCBmbGFnLiAgTm8gZmxhZyBjaGVja2luZywgc2V0
dGluZywgb3IgY2xlYXJpbmcgaXMgZG9uZSB1bmxlc3MgR0NfVkFMSURBVElPTiBpcyBlbmFibGVk
LiAgCisgICAgICAgIEFsc28gYWRkZWQgc3BlY2lhbCBjYXNlcyB3aGVyZSB0aGUgZmxhZyBpcyBj
bGVhcmVkIGFuZCB0aGUgcmVzZXQgYXJvdW5kIGxvY2F0aW9ucyB3aGVyZSBuZXN0ZWQgCisgICAg
ICAgIGFsbG9jYXRpb25zIG9jY3VyIGluIHRoZSBjb25zdHJ1Y3RvcnMuICBUaGlzIGlzIG1vc3Rs
eSB0ZW1wb3JhcnkgZm9yIG5vdyB0byBnZXQgYmFjayB0byBhIHdvcmtpbmcgc3RhdGUgCisgICAg
ICAgIHdpdGhvdXQgaGF2aW5nIHRvIGhvaXN0IGFsbCBvZiB0aG9zZSBhbG9jYXRpb25zIG91dCBv
ZiB0aGUgY29uc3RydWN0b3JzLiAgVGhpcyBpcyBwYXJ0IG9mIGEgCisgICAgICAgIGxhcmdlciBy
ZWZhY3RvcmluZyB0byBtYWtlIG91ciBvYmplY3QgYWxsb2NhdGlvbiBhbmQgaW5pdGlhbGl6YXRp
b24gbW9yZSBHQy1mcmllbmRseS9zYWZlLiAKKworICAgICAgICAqIGJpbmRpbmdzL2pzL0pTQXVk
aW9Db25zdHJ1Y3Rvci5oOgorICAgICAgICAoV2ViQ29yZTo6SlNBdWRpb0NvbnN0cnVjdG9yOjpj
cmVhdGUpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTSW1hZ2VDb25zdHJ1Y3Rvci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpKU0ltYWdlQ29uc3RydWN0b3I6OkpTSW1hZ2VDb25zdHJ1Y3Rvcik6
CisgICAgICAgICogYmluZGluZ3MvanMvSlNJbWFnZUNvbnN0cnVjdG9yLmg6CisgICAgICAgIChX
ZWJDb3JlOjpKU0ltYWdlQ29uc3RydWN0b3I6OmNyZWF0ZSk6CisgICAgICAgICogYmluZGluZ3Mv
anMvSlNPcHRpb25Db25zdHJ1Y3Rvci5oOgorICAgICAgICAoV2ViQ29yZTo6SlNPcHRpb25Db25z
dHJ1Y3Rvcjo6Y3JlYXRlKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0
b3JKUy5wbToKKyAgICAgICAgKEdlbmVyYXRlSGVhZGVyKToKKyAgICAgICAgKEdlbmVyYXRlQ29u
c3RydWN0b3JEZWNsYXJhdGlvbik6CisgICAgICAgIChHZW5lcmF0ZUNvbnN0cnVjdG9yRGVmaW5p
dGlvbik6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEludGVyZmFj
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RJbnRlcmZhY2VDb25zdHJ1Y3Rvcjo6Y3Jl
YXRlKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW50ZXJmYWNl
Lmg6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RJbnRlcmZhY2U6OmNyZWF0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpKU1Rlc3RJbnRlcmZhY2VQcm90b3R5cGU6OmNyZWF0ZSk6CisgICAgICAgICog
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lckNvbnN0cnVj
dG9yOjpjcmVhdGUpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RN
ZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLmg6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RNZWRpYVF1
ZXJ5TGlzdExpc3RlbmVyOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0TWVkaWFR
dWVyeUxpc3RMaXN0ZW5lclByb3RvdHlwZTo6Y3JlYXRlKToKKyAgICAgICAgKiBiaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE9i
akNvbnN0cnVjdG9yOjpjcmVhdGUpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RPYmouaDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE9iajo6Y3JlYXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkpTVGVzdE9ialByb3RvdHlwZTo6Y3JlYXRlKToKKyAgICAgICAgKiBi
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJm
YWNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUlu
dGVyZmFjZUNvbnN0cnVjdG9yOjpjcmVhdGUpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UuaDoKKyAgICAgICAg
KFdlYkNvcmU6OkpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZTo6Y3JlYXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZVBy
b3RvdHlwZTo6Y3JlYXRlKToKKyAgICAgICAgKiBicmlkZ2UvYy9DUnVudGltZU9iamVjdC5oOgor
ICAgICAgICAoSlNDOjpCaW5kaW5nczo6Q1J1bnRpbWVPYmplY3Q6OmNyZWF0ZSk6CisgICAgICAg
ICogYnJpZGdlL2MvY19pbnN0YW5jZS5jcHA6CisgICAgICAgIChKU0M6OkJpbmRpbmdzOjpDUnVu
dGltZU1ldGhvZDo6Y3JlYXRlKToKKyAgICAgICAgKiBicmlkZ2Uvam5pL2pzYy9KYXZhSW5zdGFu
Y2VKU0MuY3BwOgorICAgICAgICAoSmF2YVJ1bnRpbWVNZXRob2Q6OmNyZWF0ZSk6CisgICAgICAg
ICogYnJpZGdlL2puaS9qc2MvSmF2YVJ1bnRpbWVPYmplY3QuaDoKKyAgICAgICAgKEpTQzo6Qmlu
ZGluZ3M6OkphdmFSdW50aW1lT2JqZWN0OjpjcmVhdGUpOgorICAgICAgICAqIGJyaWRnZS9vYmpj
L09iakNSdW50aW1lT2JqZWN0Lmg6CisgICAgICAgIChKU0M6OkJpbmRpbmdzOjpPYmpDUnVudGlt
ZU9iamVjdDo6Y3JlYXRlKToKKyAgICAgICAgKiBicmlkZ2Uvb2JqYy9vYmpjX2luc3RhbmNlLm1t
OgorICAgICAgICAoT2JqQ1J1bnRpbWVNZXRob2Q6OmNyZWF0ZSk6CisgICAgICAgICogYnJpZGdl
L29iamMvb2JqY19ydW50aW1lLmg6CisgICAgICAgIChKU0M6OkJpbmRpbmdzOjpPYmpjRmFsbGJh
Y2tPYmplY3RJbXA6OmNyZWF0ZSk6CisgICAgICAgICogYnJpZGdlL3F0L3F0X2luc3RhbmNlLmNw
cDoKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6OlF0UnVudGltZU9iamVjdDo6Y3JlYXRlKToKKyAg
ICAgICAgKiBicmlkZ2UvcXQvcXRfcGl4bWFwcnVudGltZS5jcHA6CisgICAgICAgIChKU0M6OkJp
bmRpbmdzOjpRdFBpeG1hcFJ1bnRpbWVPYmplY3Q6OmNyZWF0ZSk6CisgICAgICAgICogYnJpZGdl
L3F0L3F0X3J1bnRpbWUuaDoKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6OlF0UnVudGltZU1ldGFN
ZXRob2Q6OmNyZWF0ZSk6CisgICAgICAgIChKU0M6OkJpbmRpbmdzOjpRdFJ1bnRpbWVDb25uZWN0
aW9uTWV0aG9kOjpjcmVhdGUpOgorICAgICAgICAqIGJyaWRnZS9ydW50aW1lX2FycmF5Lmg6Cisg
ICAgICAgIChKU0M6OlJ1bnRpbWVBcnJheTo6Y3JlYXRlKToKKyAgICAgICAgKiBicmlkZ2UvcnVu
dGltZV9tZXRob2QuaDoKKyAgICAgICAgKEpTQzo6UnVudGltZU1ldGhvZDo6Y3JlYXRlKToKKyAg
ICAgICAgKiBicmlkZ2UvcnVudGltZV9vYmplY3QuaDoKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6
OlJ1bnRpbWVPYmplY3Q6OmNyZWF0ZSk6CisKIDIwMTEtMDctMjggIERhdmlkIEtpbHplciAgPGRk
a2lsemVyQGFwcGxlLmNvbT4KIAogICAgICAgICA8aHR0cDovL3dlYmtpdC5vcmcvYi82NTI4OT4g
UmVtb3ZlIEdlb2xvY2F0aW9uUG9zaXRpb25DYWNoZQpJbmRleDogU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNBdWRpb0NvbnN0cnVjdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0F1ZGlvQ29uc3RydWN0b3IuY3BwCShyZXZpc2lvbiA5MTkzOSkK
KysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQXVkaW9Db25zdHJ1Y3Rvci5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTQzLDggKzQzLDEwIEBAIEpTQXVkaW9Db25zdHJ1Y3Rvcjo6SlNBdWRp
b0NvbnN0cnVjdG9yKEUKICAgICA6IERPTUNvbnN0cnVjdG9yV2l0aERvY3VtZW50KHN0cnVjdHVy
ZSwgZ2xvYmFsT2JqZWN0KQogewogICAgIEFTU0VSVChpbmhlcml0cygmc19pbmZvKSk7CisgICAg
ZXhlYy0+Z2xvYmFsRGF0YSgpLnNldEluaXRpYWxpemluZ09iamVjdChmYWxzZSk7CiAgICAgcHV0
RGlyZWN0KGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLnByb3RvdHlw
ZSwgSlNIVE1MQXVkaW9FbGVtZW50UHJvdG90eXBlOjpzZWxmKGV4ZWMsIGdsb2JhbE9iamVjdCks
IE5vbmUpOwogICAgIHB1dERpcmVjdChleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPnByb3BlcnR5
TmFtZXMoKS5sZW5ndGgsIGpzTnVtYmVyKDEpLCBSZWFkT25seSB8IERvbnREZWxldGUgfCBEb250
RW51bSk7CisgICAgZXhlYy0+Z2xvYmFsRGF0YSgpLnNldEluaXRpYWxpemluZ09iamVjdCh0cnVl
KTsKIH0KIAogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0QXVk
aW8oRXhlY1N0YXRlKiBleGVjKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNB
dWRpb0NvbnN0cnVjdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNBdWRpb0NvbnN0cnVjdG9yLmgJKHJldmlzaW9uIDkxOTM5KQorKysgU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNBdWRpb0NvbnN0cnVjdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTM4
LDcgKzM4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIHB1YmxpYzoKICAgICAgICAgc3Rh
dGljIEpTQXVkaW9Db25zdHJ1Y3RvciogY3JlYXRlKEpTQzo6RXhlY1N0YXRlKiBleGVjLCBKU0M6
OlN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQog
ICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gbmV3IChKU0M6OmFsbG9jYXRlQ2VsbDxKU0F1
ZGlvQ29uc3RydWN0b3I+KCpleGVjLT5oZWFwKCkpKSBKU0F1ZGlvQ29uc3RydWN0b3IoZXhlYywg
c3RydWN0dXJlLCBnbG9iYWxPYmplY3QpOworICAgICAgICAgICAgcmV0dXJuIEpTQzo6dmFsaWRh
dGVBbGxvYzxKU0F1ZGlvQ29uc3RydWN0b3I+KGV4ZWMtPmdsb2JhbERhdGEoKSwgbmV3IChKU0M6
OmFsbG9jYXRlQ2VsbDxKU0F1ZGlvQ29uc3RydWN0b3I+KCpleGVjLT5oZWFwKCkpKSBKU0F1ZGlv
Q29uc3RydWN0b3IoZXhlYywgc3RydWN0dXJlLCBnbG9iYWxPYmplY3QpKTsKICAgICAgICAgfQog
CiAgICAgICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6SlNH
bG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQpJbmRleDogU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmgJKHJldmlzaW9uIDkxOTM5KQor
KysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTg2LDkgKzg2LDE2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgIHRlbXBsYXRl
PGNsYXNzIFdyYXBwZXJDbGFzcz4gaW5saW5lIEpTQzo6U3RydWN0dXJlKiBnZXRET01TdHJ1Y3R1
cmUoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qp
CiAgICAgewotICAgICAgICBpZiAoSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGdldENhY2hl
ZERPTVN0cnVjdHVyZShnbG9iYWxPYmplY3QsICZXcmFwcGVyQ2xhc3M6OnNfaW5mbykpCisgICAg
ICAgIGJvb2wgaW5pdGlhbGl6aW5nT2JqZWN0ID0gZXhlYy0+Z2xvYmFsRGF0YSgpLmlzSW5pdGlh
bGl6aW5nT2JqZWN0KCk7CisgICAgICAgIGV4ZWMtPmdsb2JhbERhdGEoKS5zZXRJbml0aWFsaXpp
bmdPYmplY3QoZmFsc2UpOworICAgICAgICBpZiAoSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9
IGdldENhY2hlZERPTVN0cnVjdHVyZShnbG9iYWxPYmplY3QsICZXcmFwcGVyQ2xhc3M6OnNfaW5m
bykpIHsKKyAgICAgICAgICAgIGV4ZWMtPmdsb2JhbERhdGEoKS5zZXRJbml0aWFsaXppbmdPYmpl
Y3QoaW5pdGlhbGl6aW5nT2JqZWN0KTsKICAgICAgICAgICAgIHJldHVybiBzdHJ1Y3R1cmU7Ci0g
ICAgICAgIHJldHVybiBjYWNoZURPTVN0cnVjdHVyZShnbG9iYWxPYmplY3QsIFdyYXBwZXJDbGFz
czo6Y3JlYXRlU3RydWN0dXJlKGV4ZWMtPmdsb2JhbERhdGEoKSwgV3JhcHBlckNsYXNzOjpjcmVh
dGVQcm90b3R5cGUoZXhlYywgZ2xvYmFsT2JqZWN0KSksICZXcmFwcGVyQ2xhc3M6OnNfaW5mbyk7
CisgICAgICAgIH0KKyAgICAgICAgZXhlYy0+Z2xvYmFsRGF0YSgpLnNldEluaXRpYWxpemluZ09i
amVjdChmYWxzZSk7CisgICAgICAgIEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3RQdHIgPSBjYWNoZURP
TVN0cnVjdHVyZShnbG9iYWxPYmplY3QsIFdyYXBwZXJDbGFzczo6Y3JlYXRlU3RydWN0dXJlKGV4
ZWMtPmdsb2JhbERhdGEoKSwgV3JhcHBlckNsYXNzOjpjcmVhdGVQcm90b3R5cGUoZXhlYywgZ2xv
YmFsT2JqZWN0KSksICZXcmFwcGVyQ2xhc3M6OnNfaW5mbyk7CisgICAgICAgIGV4ZWMtPmdsb2Jh
bERhdGEoKS5zZXRJbml0aWFsaXppbmdPYmplY3QoaW5pdGlhbGl6aW5nT2JqZWN0KTsKKyAgICAg
ICAgcmV0dXJuIHN0cnVjdFB0cjsKICAgICB9CiAKICAgICB0ZW1wbGF0ZTxjbGFzcyBXcmFwcGVy
Q2xhc3M+IGlubGluZSBKU0M6OlN0cnVjdHVyZSogZGVwcmVjYXRlZEdldERPTVN0cnVjdHVyZShK
U0M6OkV4ZWNTdGF0ZSogZXhlYykKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
SW1hZ2VDb25zdHJ1Y3Rvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNJbWFnZUNvbnN0cnVjdG9yLmNwcAkocmV2aXNpb24gOTE5MzkpCisrKyBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0ltYWdlQ29uc3RydWN0b3IuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0zOCw3ICszOCw5IEBAIEpTSW1hZ2VDb25zdHJ1Y3Rvcjo6SlNJbWFnZUNvbnN0cnVjdG9y
KEUKICAgICA6IERPTUNvbnN0cnVjdG9yV2l0aERvY3VtZW50KHN0cnVjdHVyZSwgZ2xvYmFsT2Jq
ZWN0KQogewogICAgIEFTU0VSVChpbmhlcml0cygmc19pbmZvKSk7CisgICAgZXhlYy0+Z2xvYmFs
RGF0YSgpLnNldEluaXRpYWxpemluZ09iamVjdChmYWxzZSk7CiAgICAgcHV0RGlyZWN0KGV4ZWMt
Pmdsb2JhbERhdGEoKSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLnByb3RvdHlwZSwgSlNIVE1MSW1h
Z2VFbGVtZW50UHJvdG90eXBlOjpzZWxmKGV4ZWMsIGdsb2JhbE9iamVjdCksIE5vbmUpOworICAg
IGV4ZWMtPmdsb2JhbERhdGEoKS5zZXRJbml0aWFsaXppbmdPYmplY3QodHJ1ZSk7CiB9CiAKIHN0
YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdEltYWdlKEV4ZWNTdGF0
ZSogZXhlYykKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSW1hZ2VDb25zdHJ1
Y3Rvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSW1hZ2VD
b25zdHJ1Y3Rvci5oCShyZXZpc2lvbiA5MTkzOSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTSW1hZ2VDb25zdHJ1Y3Rvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw3ICsyOSw3IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBwdWJsaWM6CiAgICAgICAgIHN0YXRpYyBKU0ltYWdl
Q29uc3RydWN0b3IqIGNyZWF0ZShKU0M6OkV4ZWNTdGF0ZSogZXhlYywgSlNDOjpTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKICAgICAgICAgewot
ICAgICAgICAgICAgcmV0dXJuIG5ldyAoSlNDOjphbGxvY2F0ZUNlbGw8SlNJbWFnZUNvbnN0cnVj
dG9yPigqZXhlYy0+aGVhcCgpKSkgSlNJbWFnZUNvbnN0cnVjdG9yKGV4ZWMsIHN0cnVjdHVyZSwg
Z2xvYmFsT2JqZWN0KTsKKyAgICAgICAgICAgIHJldHVybiBKU0M6OnZhbGlkYXRlQWxsb2M8SlNJ
bWFnZUNvbnN0cnVjdG9yPihleGVjLT5nbG9iYWxEYXRhKCksIG5ldyAoSlNDOjphbGxvY2F0ZUNl
bGw8SlNJbWFnZUNvbnN0cnVjdG9yPigqZXhlYy0+aGVhcCgpKSkgSlNJbWFnZUNvbnN0cnVjdG9y
KGV4ZWMsIHN0cnVjdHVyZSwgZ2xvYmFsT2JqZWN0KSk7CiAgICAgICAgIH0KIAogICAgICAgICBz
dGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OkpTR2xvYmFsRGF0YSYg
Z2xvYmFsRGF0YSwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTT3B0aW9uQ29uc3RydWN0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTT3B0aW9uQ29uc3RydWN0b3IuY3BwCShyZXZpc2lvbiA5
MTkzOSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTT3B0aW9uQ29uc3RydWN0b3Iu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw4ICszOSwxMSBAQCBKU09wdGlvbkNvbnN0cnVjdG9y
OjpKU09wdGlvbkNvbnN0cnVjdG9yCiAgICAgOiBET01Db25zdHJ1Y3RvcldpdGhEb2N1bWVudChz
dHJ1Y3R1cmUsIGdsb2JhbE9iamVjdCkKIHsKICAgICBBU1NFUlQoaW5oZXJpdHMoJnNfaW5mbykp
OworICAgIGV4ZWMtPmdsb2JhbERhdGEoKS5zZXRJbml0aWFsaXppbmdPYmplY3QoZmFsc2UpOwog
ICAgIHB1dERpcmVjdChleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5w
cm90b3R5cGUsIEpTSFRNTE9wdGlvbkVsZW1lbnRQcm90b3R5cGU6OnNlbGYoZXhlYywgZ2xvYmFs
T2JqZWN0KSwgTm9uZSk7CisgICAgZXhlYy0+Z2xvYmFsRGF0YSgpLnNldEluaXRpYWxpemluZ09i
amVjdChmYWxzZSk7CiAgICAgcHV0RGlyZWN0KGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+cHJv
cGVydHlOYW1lcygpLmxlbmd0aCwganNOdW1iZXIoNCksIFJlYWRPbmx5IHwgRG9udERlbGV0ZSB8
IERvbnRFbnVtKTsKKyAgICBleGVjLT5nbG9iYWxEYXRhKCkuc2V0SW5pdGlhbGl6aW5nT2JqZWN0
KHRydWUpOwogfQogCiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1
Y3RIVE1MT3B0aW9uRWxlbWVudChFeGVjU3RhdGUqIGV4ZWMpCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU09wdGlvbkNvbnN0cnVjdG9yLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNPcHRpb25Db25zdHJ1Y3Rvci5oCShyZXZpc2lvbiA5MTkz
OSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTT3B0aW9uQ29uc3RydWN0b3IuaAko
d29ya2luZyBjb3B5KQpAQCAtMzAsNyArMzAsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAg
cHVibGljOgogICAgICAgICBzdGF0aWMgSlNPcHRpb25Db25zdHJ1Y3RvciogY3JlYXRlKEpTQzo6
RXhlY1N0YXRlKiBleGVjLCBKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0RPTUdsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0KQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gbmV3IChK
U0M6OmFsbG9jYXRlQ2VsbDxKU09wdGlvbkNvbnN0cnVjdG9yPigqZXhlYy0+aGVhcCgpKSkgSlNP
cHRpb25Db25zdHJ1Y3RvcihleGVjLCBzdHJ1Y3R1cmUsIGdsb2JhbE9iamVjdCk7CisgICAgICAg
ICAgICByZXR1cm4gSlNDOjp2YWxpZGF0ZUFsbG9jPEpTT3B0aW9uQ29uc3RydWN0b3I+KGV4ZWMt
Pmdsb2JhbERhdGEoKSwgbmV3IChKU0M6OmFsbG9jYXRlQ2VsbDxKU09wdGlvbkNvbnN0cnVjdG9y
PigqZXhlYy0+aGVhcCgpKSkgSlNPcHRpb25Db25zdHJ1Y3RvcihleGVjLCBzdHJ1Y3R1cmUsIGds
b2JhbE9iamVjdCkpOwogICAgICAgICB9CiAKICAgICAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJl
KiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTQzo6SlNW
YWx1ZSBwcm90b3R5cGUpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0Nv
ZGVHZW5lcmF0b3JKUy5wbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQkocmV2aXNpb24gOTE5MzkpCisrKyBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQkod29ya2luZyBjb3B5KQpA
QCAtNzA0LDE4ICs3MDQsMTggQEAgc3ViIEdlbmVyYXRlSGVhZGVyCiAgICAgaWYgKCRpbnRlcmZh
Y2VOYW1lIGVxICJET01XaW5kb3ciKSB7CiAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIg
ICAgc3RhdGljICRjbGFzc05hbWUqIGNyZWF0ZShKU0M6OkpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0
YSwgSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUGFzc1JlZlB0cjwkaW1wbFR5cGU+IGltcGws
IEpTRE9NV2luZG93U2hlbGwqIHdpbmRvd1NoZWxsKVxuIik7CiAgICAgICAgIHB1c2goQGhlYWRl
ckNvbnRlbnQsICIgICAge1xuIik7Ci0gICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAg
ICAgIHJldHVybiBuZXcgKEpTQzo6YWxsb2NhdGVDZWxsPCRjbGFzc05hbWU+KGdsb2JhbERhdGEu
aGVhcCkpICR7Y2xhc3NOYW1lfShnbG9iYWxEYXRhLCBzdHJ1Y3R1cmUsIGltcGwsIHdpbmRvd1No
ZWxsKTtcbiIpOworICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgICAgICByZXR1cm4g
SlNDOjp2YWxpZGF0ZUFsbG9jPCRjbGFzc05hbWU+KGdsb2JhbERhdGEsIG5ldyAoSlNDOjphbGxv
Y2F0ZUNlbGw8JGNsYXNzTmFtZT4oZ2xvYmFsRGF0YS5oZWFwKSkgJHtjbGFzc05hbWV9KGdsb2Jh
bERhdGEsIHN0cnVjdHVyZSwgaW1wbCwgd2luZG93U2hlbGwpKTtcbiIpOwogICAgICAgICBwdXNo
KEBoZWFkZXJDb250ZW50LCAiICAgIH1cblxuIik7CiAgICAgfSBlbHNpZiAoJGRhdGFOb2RlLT5l
eHRlbmRlZEF0dHJpYnV0ZXMtPnsiSXNXb3JrZXJDb250ZXh0In0pIHsKICAgICAgICAgcHVzaChA
aGVhZGVyQ29udGVudCwgIiAgICBzdGF0aWMgJGNsYXNzTmFtZSogY3JlYXRlKEpTQzo6SlNHbG9i
YWxEYXRhJiBnbG9iYWxEYXRhLCBKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlLCBQYXNzUmVmUHRy
PCRpbXBsVHlwZT4gaW1wbClcbiIpOwogICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAg
IHtcbiIpOwotICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgICAgICByZXR1cm4gbmV3
IChKU0M6OmFsbG9jYXRlQ2VsbDwkY2xhc3NOYW1lPihnbG9iYWxEYXRhLmhlYXApKSAke2NsYXNz
TmFtZX0oZ2xvYmFsRGF0YSwgc3RydWN0dXJlLCBpbXBsKTtcbiIpOworICAgICAgICBwdXNoKEBo
ZWFkZXJDb250ZW50LCAiICAgICAgICByZXR1cm4gSlNDOjp2YWxpZGF0ZUFsbG9jPCRjbGFzc05h
bWU+KGdsb2JhbERhdGEsIG5ldyAoSlNDOjphbGxvY2F0ZUNlbGw8JGNsYXNzTmFtZT4oZ2xvYmFs
RGF0YS5oZWFwKSkgJHtjbGFzc05hbWV9KGdsb2JhbERhdGEsIHN0cnVjdHVyZSwgaW1wbCkpO1xu
Iik7CiAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgfVxuXG4iKTsKICAgICB9IGVs
c2UgewogICAgICAgICBBZGRJbmNsdWRlc0ZvclR5cGVJbkhlYWRlcigkaW1wbFR5cGUpIHVubGVz
cyAkc3ZnUHJvcGVydHlPckxpc3RQcm9wZXJ0eVR5cGU7CiAgICAgICAgIHB1c2goQGhlYWRlckNv
bnRlbnQsICIgICAgc3RhdGljICRjbGFzc05hbWUqIGNyZWF0ZShKU0M6OlN0cnVjdHVyZSogc3Ry
dWN0dXJlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQYXNzUmVmUHRyPCRpbXBs
VHlwZT4gaW1wbClcbiIpOwogICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIHtcbiIp
OwotICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgICAgICByZXR1cm4gbmV3IChKU0M6
OmFsbG9jYXRlQ2VsbDwkY2xhc3NOYW1lPihnbG9iYWxPYmplY3QtPmdsb2JhbERhdGEoKS5oZWFw
KSkgJGNsYXNzTmFtZShzdHJ1Y3R1cmUsIGdsb2JhbE9iamVjdCwgaW1wbCk7XG4iKTsKKyAgICAg
ICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICAgICAgcmV0dXJuIEpTQzo6dmFsaWRhdGVBbGxv
YzwkY2xhc3NOYW1lPihnbG9iYWxPYmplY3QtPmdsb2JhbERhdGEoKSwgbmV3IChKU0M6OmFsbG9j
YXRlQ2VsbDwkY2xhc3NOYW1lPihnbG9iYWxPYmplY3QtPmdsb2JhbERhdGEoKS5oZWFwKSkgJGNs
YXNzTmFtZShzdHJ1Y3R1cmUsIGdsb2JhbE9iamVjdCwgaW1wbCkpO1xuIik7CiAgICAgICAgIHB1
c2goQGhlYWRlckNvbnRlbnQsICIgICAgfVxuXG4iKTsKICAgICB9CiAKQEAgLTEwMDMsNyArMTAw
Myw3IEBAIHN1YiBHZW5lcmF0ZUhlYWRlcgogCiAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAg
ICBzdGF0aWMgJHtjbGFzc05hbWV9UHJvdG90eXBlKiBjcmVhdGUoSlNDOjpKU0dsb2JhbERhdGEm
IGdsb2JhbERhdGEsIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSlcbiIpOwogICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAge1xu
Iik7Ci0gICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICAgICAgcmV0dXJuIG5ldyAoSlNDOjph
bGxvY2F0ZUNlbGw8JHtjbGFzc05hbWV9UHJvdG90eXBlPihnbG9iYWxEYXRhLmhlYXApKSAke2Ns
YXNzTmFtZX1Qcm90b3R5cGUoZ2xvYmFsRGF0YSwgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUpO1xu
Iik7CisgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICAgICAgcmV0dXJuIEpTQzo6dmFsaWRh
dGVBbGxvYzwke2NsYXNzTmFtZX1Qcm90b3R5cGU+KGdsb2JhbERhdGEsIG5ldyAoSlNDOjphbGxv
Y2F0ZUNlbGw8JHtjbGFzc05hbWV9UHJvdG90eXBlPihnbG9iYWxEYXRhLmhlYXApKSAke2NsYXNz
TmFtZX1Qcm90b3R5cGUoZ2xvYmFsRGF0YSwgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUpKTtcbiIp
OwogICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgfVxuXG4iKTsKIAogICAgIHB1c2goQGhl
YWRlckNvbnRlbnQsICIgICAgc3RhdGljIGNvbnN0IEpTQzo6Q2xhc3NJbmZvIHNfaW5mbztcbiIp
OwpAQCAtMTQ5Nyw4ICsxNDk3LDEwIEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAg
cHVzaChAaW1wbENvbnRlbnQsICJ7XG4iKTsKICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBB
U1NFUlQoaW5oZXJpdHMoJnNfaW5mbykpO1xuIik7CiAgICAgaWYgKCRudW1DYWNoZWRBdHRyaWJ1
dGVzID4gMCkgeworICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBnbG9iYWxPYmplY3Qt
Pmdsb2JhbERhdGEoKS5zZXRJbml0aWFsaXppbmdPYmplY3QoZmFsc2UpO1xuIik7CiAgICAgICAg
IHB1c2goQGltcGxDb250ZW50LCAiICAgIGZvciAodW5zaWduZWQgaSA9IEJhc2U6OkFub255bW91
c1Nsb3RDb3VudDsgaSA8IEFub255bW91c1Nsb3RDb3VudDsgaSsrKVxuIik7CiAgICAgICAgIHB1
c2goQGltcGxDb250ZW50LCAiICAgICAgICBwdXRBbm9ueW1vdXNWYWx1ZShnbG9iYWxPYmplY3Qt
Pmdsb2JhbERhdGEoKSwgaSwgSlNWYWx1ZSgpKTtcbiIpOworICAgICAgICBwdXNoKEBpbXBsQ29u
dGVudCwgIiAgICBnbG9iYWxPYmplY3QtPmdsb2JhbERhdGEoKS5zZXRJbml0aWFsaXppbmdPYmpl
Y3QodHJ1ZSk7XG4iKTsKICAgICB9CiAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ9XG5cbiIpOwog
CkBAIC0zMDY5LDcgKzMwNzEsNyBAQCBzdWIgR2VuZXJhdGVDb25zdHJ1Y3RvckRlY2xhcmF0aW9u
CiAgICAgcHVzaChAJG91dHB1dEFycmF5LCAicHVibGljOlxuIik7CiAgICAgcHVzaChAJG91dHB1
dEFycmF5LCAiICAgIHN0YXRpYyAkY29uc3RydWN0b3JDbGFzc05hbWUqIGNyZWF0ZShKU0M6OkV4
ZWNTdGF0ZSogZXhlYywgSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01HbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdClcbiIpOwogICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICB7XG4i
KTsKLSAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgICAgIHJldHVybiBuZXcgKEpTQzo6YWxs
b2NhdGVDZWxsPCRjb25zdHJ1Y3RvckNsYXNzTmFtZT4oKmV4ZWMtPmhlYXAoKSkpICRjb25zdHJ1
Y3RvckNsYXNzTmFtZShleGVjLCBzdHJ1Y3R1cmUsIGdsb2JhbE9iamVjdCk7XG4iKTsKKyAgICBw
dXNoKEAkb3V0cHV0QXJyYXksICIgICAgICAgIHJldHVybiBKU0M6OnZhbGlkYXRlQWxsb2M8JGNv
bnN0cnVjdG9yQ2xhc3NOYW1lPihleGVjLT5nbG9iYWxEYXRhKCksIG5ldyAoSlNDOjphbGxvY2F0
ZUNlbGw8JGNvbnN0cnVjdG9yQ2xhc3NOYW1lPigqZXhlYy0+aGVhcCgpKSkgJGNvbnN0cnVjdG9y
Q2xhc3NOYW1lKGV4ZWMsIHN0cnVjdHVyZSwgZ2xvYmFsT2JqZWN0KSk7XG4iKTsKICAgICBwdXNo
KEAkb3V0cHV0QXJyYXksICIgICAgfVxuXG4iKTsKIAogICAgIHB1c2goQCRvdXRwdXRBcnJheSwg
IiAgICB2aXJ0dWFsIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTQzo6RXhlY1N0YXRlKiwgY29u
c3QgSlNDOjpJZGVudGlmaWVyJiwgSlNDOjpQcm9wZXJ0eVNsb3QmKTtcbiIpOwpAQCAtMzExMywx
MiArMzExNSwxNCBAQCBzdWIgR2VuZXJhdGVDb25zdHJ1Y3RvckRlZmluaXRpb24KICAgICBwdXNo
KEAkb3V0cHV0QXJyYXksICIgICAgOiBET01Db25zdHJ1Y3Rvck9iamVjdChzdHJ1Y3R1cmUsIGds
b2JhbE9iamVjdClcbiIpOwogICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIntcbiIpOwogICAgIHB1
c2goQCRvdXRwdXRBcnJheSwgIiAgICBBU1NFUlQoaW5oZXJpdHMoJnNfaW5mbykpO1xuIik7Cisg
ICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIGV4ZWMtPmdsb2JhbERhdGEoKS5zZXRJbml0aWFs
aXppbmdPYmplY3QoZmFsc2UpO1xuIik7CiAgICAgaWYgKCRpbnRlcmZhY2VOYW1lIGVxICJET01X
aW5kb3ciKSB7CiAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBwdXREaXJlY3QoZXhl
Yy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkucHJvdG90eXBlLCBnbG9iYWxP
YmplY3QtPnByb3RvdHlwZSgpLCBEb250RGVsZXRlIHwgUmVhZE9ubHkpO1xuIik7CiAgICAgfSBl
bHNlIHsKICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIHB1dERpcmVjdChleGVjLT5n
bG9iYWxEYXRhKCksIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5wcm90b3R5cGUsICR7cHJvdG9DbGFz
c05hbWV9OjpzZWxmKGV4ZWMsIGdsb2JhbE9iamVjdCksIERvbnREZWxldGUgfCBSZWFkT25seSk7
XG4iKTsKICAgICB9CiAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIHB1dERpcmVjdChleGVj
LT5nbG9iYWxEYXRhKCksIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5sZW5ndGgsIGpzTnVtYmVyKCR7
bnVtYmVyT2Zjb25zdHJ1Y3RQYXJhbWV0ZXJzfSksIFJlYWRPbmx5IHwgRG9udERlbGV0ZSB8IERv
bnRFbnVtKTtcbiIpIGlmICRudW1iZXJPZmNvbnN0cnVjdFBhcmFtZXRlcnM7CisgICAgcHVzaChA
JG91dHB1dEFycmF5LCAiICAgIGV4ZWMtPmdsb2JhbERhdGEoKS5zZXRJbml0aWFsaXppbmdPYmpl
Y3QodHJ1ZSk7XG4iKTsKICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICJ9XG5cbiIpOwogCiAgICAg
cHVzaChAJG91dHB1dEFycmF5LCAiYm9vbCAke2NvbnN0cnVjdG9yQ2xhc3NOYW1lfTo6Z2V0T3du
UHJvcGVydHlTbG90KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlO
YW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpXG4iKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2UuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2UuY3Bw
CShyZXZpc2lvbiA5MTkzOSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RJbnRlcmZhY2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02OSw3ICs2OSw3IEBA
IHByaXZhdGU6CiBwdWJsaWM6CiAgICAgc3RhdGljIEpTVGVzdEludGVyZmFjZUNvbnN0cnVjdG9y
KiBjcmVhdGUoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUs
IEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiAgICAgewotICAgICAgICByZXR1cm4g
bmV3IChKU0M6OmFsbG9jYXRlQ2VsbDxKU1Rlc3RJbnRlcmZhY2VDb25zdHJ1Y3Rvcj4oKmV4ZWMt
PmhlYXAoKSkpIEpTVGVzdEludGVyZmFjZUNvbnN0cnVjdG9yKGV4ZWMsIHN0cnVjdHVyZSwgZ2xv
YmFsT2JqZWN0KTsKKyAgICAgICAgcmV0dXJuIEpTQzo6dmFsaWRhdGVBbGxvYzxKU1Rlc3RJbnRl
cmZhY2VDb25zdHJ1Y3Rvcj4oZXhlYy0+Z2xvYmFsRGF0YSgpLCBuZXcgKEpTQzo6YWxsb2NhdGVD
ZWxsPEpTVGVzdEludGVyZmFjZUNvbnN0cnVjdG9yPigqZXhlYy0+aGVhcCgpKSkgSlNUZXN0SW50
ZXJmYWNlQ29uc3RydWN0b3IoZXhlYywgc3RydWN0dXJlLCBnbG9iYWxPYmplY3QpKTsKICAgICB9
CiAKICAgICB2aXJ0dWFsIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTQzo6RXhlY1N0YXRlKiwg
Y29uc3QgSlNDOjpJZGVudGlmaWVyJiwgSlNDOjpQcm9wZXJ0eVNsb3QmKTsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2UuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
SW50ZXJmYWNlLmgJKHJldmlzaW9uIDkxOTM5KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdEludGVyZmFjZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw3
ICszNiw3IEBAIGNsYXNzIEpTVGVzdEludGVyZmFjZSA6IHB1YmxpYyBKU0RPTVdyYXAKIHB1Ymxp
YzoKICAgICBzdGF0aWMgSlNUZXN0SW50ZXJmYWNlKiBjcmVhdGUoSlNDOjpTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUGFzc1JlZlB0cjxUZXN0
SW50ZXJmYWNlPiBpbXBsKQogICAgIHsKLSAgICAgICAgcmV0dXJuIG5ldyAoSlNDOjphbGxvY2F0
ZUNlbGw8SlNUZXN0SW50ZXJmYWNlPihnbG9iYWxPYmplY3QtPmdsb2JhbERhdGEoKS5oZWFwKSkg
SlNUZXN0SW50ZXJmYWNlKHN0cnVjdHVyZSwgZ2xvYmFsT2JqZWN0LCBpbXBsKTsKKyAgICAgICAg
cmV0dXJuIEpTQzo6dmFsaWRhdGVBbGxvYzxKU1Rlc3RJbnRlcmZhY2U+KGdsb2JhbE9iamVjdC0+
Z2xvYmFsRGF0YSgpLCBuZXcgKEpTQzo6YWxsb2NhdGVDZWxsPEpTVGVzdEludGVyZmFjZT4oZ2xv
YmFsT2JqZWN0LT5nbG9iYWxEYXRhKCkuaGVhcCkpIEpTVGVzdEludGVyZmFjZShzdHJ1Y3R1cmUs
IGdsb2JhbE9iamVjdCwgaW1wbCkpOwogICAgIH0KIAogICAgIHN0YXRpYyBKU0M6OkpTT2JqZWN0
KiBjcmVhdGVQcm90b3R5cGUoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTR2xvYmFsT2JqZWN0Kik7
CkBAIC02OCw3ICs2OCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpKU09iamVjdCogc2Vs
ZihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKICAgICBzdGF0aWMgSlNU
ZXN0SW50ZXJmYWNlUHJvdG90eXBlKiBjcmVhdGUoSlNDOjpKU0dsb2JhbERhdGEmIGdsb2JhbERh
dGEsIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBuZXcgKEpTQzo6YWxsb2NhdGVDZWxsPEpT
VGVzdEludGVyZmFjZVByb3RvdHlwZT4oZ2xvYmFsRGF0YS5oZWFwKSkgSlNUZXN0SW50ZXJmYWNl
UHJvdG90eXBlKGdsb2JhbERhdGEsIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlKTsKKyAgICAgICAg
cmV0dXJuIEpTQzo6dmFsaWRhdGVBbGxvYzxKU1Rlc3RJbnRlcmZhY2VQcm90b3R5cGU+KGdsb2Jh
bERhdGEsIG5ldyAoSlNDOjphbGxvY2F0ZUNlbGw8SlNUZXN0SW50ZXJmYWNlUHJvdG90eXBlPihn
bG9iYWxEYXRhLmhlYXApKSBKU1Rlc3RJbnRlcmZhY2VQcm90b3R5cGUoZ2xvYmFsRGF0YSwgZ2xv
YmFsT2JqZWN0LCBzdHJ1Y3R1cmUpKTsKICAgICB9CiAKICAgICBzdGF0aWMgY29uc3QgSlNDOjpD
bGFzc0luZm8gc19pbmZvOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RNZWRpYVF1ZXJ5TGlz
dExpc3RlbmVyLmNwcAkocmV2aXNpb24gOTE5MzkpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTcwLDcgKzcwLDcgQEAgcHJpdmF0ZToKIHB1YmxpYzoKICAgICBzdGF0aWMg
SlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lckNvbnN0cnVjdG9yKiBjcmVhdGUoSlNDOjpFeGVj
U3RhdGUqIGV4ZWMsIEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTRE9NR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QpCiAgICAgewotICAgICAgICByZXR1cm4gbmV3IChKU0M6OmFsbG9jYXRl
Q2VsbDxKU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyQ29uc3RydWN0b3I+KCpleGVjLT5oZWFw
KCkpKSBKU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyQ29uc3RydWN0b3IoZXhlYywgc3RydWN0
dXJlLCBnbG9iYWxPYmplY3QpOworICAgICAgICByZXR1cm4gSlNDOjp2YWxpZGF0ZUFsbG9jPEpT
VGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXJDb25zdHJ1Y3Rvcj4oZXhlYy0+Z2xvYmFsRGF0YSgp
LCBuZXcgKEpTQzo6YWxsb2NhdGVDZWxsPEpTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXJDb25z
dHJ1Y3Rvcj4oKmV4ZWMtPmhlYXAoKSkpIEpTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXJDb25z
dHJ1Y3RvcihleGVjLCBzdHJ1Y3R1cmUsIGdsb2JhbE9iamVjdCkpOwogICAgIH0KIAogICAgIHZp
cnR1YWwgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBKU0M6
OklkZW50aWZpZXImLCBKU0M6OlByb3BlcnR5U2xvdCYpOwpJbmRleDogU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5oCShyZXZpc2lvbiA5MTkzOSkKKysrIFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3Rl
bmVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTM0LDcgKzM0LDcgQEAgY2xhc3MgSlNUZXN0TWVkaWFR
dWVyeUxpc3RMaXN0ZW5lciA6IHB1YgogcHVibGljOgogICAgIHN0YXRpYyBKU1Rlc3RNZWRpYVF1
ZXJ5TGlzdExpc3RlbmVyKiBjcmVhdGUoSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01H
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUGFzc1JlZlB0cjxUZXN0TWVkaWFRdWVyeUxpc3RM
aXN0ZW5lcj4gaW1wbCkKICAgICB7Ci0gICAgICAgIHJldHVybiBuZXcgKEpTQzo6YWxsb2NhdGVD
ZWxsPEpTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXI+KGdsb2JhbE9iamVjdC0+Z2xvYmFsRGF0
YSgpLmhlYXApKSBKU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyKHN0cnVjdHVyZSwgZ2xvYmFs
T2JqZWN0LCBpbXBsKTsKKyAgICAgICAgcmV0dXJuIEpTQzo6dmFsaWRhdGVBbGxvYzxKU1Rlc3RN
ZWRpYVF1ZXJ5TGlzdExpc3RlbmVyPihnbG9iYWxPYmplY3QtPmdsb2JhbERhdGEoKSwgbmV3IChK
U0M6OmFsbG9jYXRlQ2VsbDxKU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyPihnbG9iYWxPYmpl
Y3QtPmdsb2JhbERhdGEoKS5oZWFwKSkgSlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lcihzdHJ1
Y3R1cmUsIGdsb2JhbE9iamVjdCwgaW1wbCkpOwogICAgIH0KIAogICAgIHN0YXRpYyBKU0M6OkpT
T2JqZWN0KiBjcmVhdGVQcm90b3R5cGUoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTR2xvYmFsT2Jq
ZWN0Kik7CkBAIC02Niw3ICs2Niw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpKU09iamVj
dCogc2VsZihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKICAgICBzdGF0
aWMgSlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lclByb3RvdHlwZSogY3JlYXRlKEpTQzo6SlNH
bG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAgICAgewotICAgICAgICByZXR1cm4gbmV3IChK
U0M6OmFsbG9jYXRlQ2VsbDxKU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyUHJvdG90eXBlPihn
bG9iYWxEYXRhLmhlYXApKSBKU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyUHJvdG90eXBlKGds
b2JhbERhdGEsIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlKTsKKyAgICAgICAgcmV0dXJuIEpTQzo6
dmFsaWRhdGVBbGxvYzxKU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyUHJvdG90eXBlPihnbG9i
YWxEYXRhLCBuZXcgKEpTQzo6YWxsb2NhdGVDZWxsPEpTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVu
ZXJQcm90b3R5cGU+KGdsb2JhbERhdGEuaGVhcCkpIEpTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVu
ZXJQcm90b3R5cGUoZ2xvYmFsRGF0YSwgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUpKTsKICAgICB9
CiAKICAgICBzdGF0aWMgY29uc3QgSlNDOjpDbGFzc0luZm8gc19pbmZvOwpJbmRleDogU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5j
cHAJKHJldmlzaW9uIDkxOTM5KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdE9iai5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0OSw3ICsxNDksNyBAQCBw
cml2YXRlOgogcHVibGljOgogICAgIHN0YXRpYyBKU1Rlc3RPYmpDb25zdHJ1Y3RvciogY3JlYXRl
KEpTQzo6RXhlY1N0YXRlKiBleGVjLCBKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0RPTUds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogICAgIHsKLSAgICAgICAgcmV0dXJuIG5ldyAoSlND
OjphbGxvY2F0ZUNlbGw8SlNUZXN0T2JqQ29uc3RydWN0b3I+KCpleGVjLT5oZWFwKCkpKSBKU1Rl
c3RPYmpDb25zdHJ1Y3RvcihleGVjLCBzdHJ1Y3R1cmUsIGdsb2JhbE9iamVjdCk7CisgICAgICAg
IHJldHVybiBKU0M6OnZhbGlkYXRlQWxsb2M8SlNUZXN0T2JqQ29uc3RydWN0b3I+KGV4ZWMtPmds
b2JhbERhdGEoKSwgbmV3IChKU0M6OmFsbG9jYXRlQ2VsbDxKU1Rlc3RPYmpDb25zdHJ1Y3Rvcj4o
KmV4ZWMtPmhlYXAoKSkpIEpTVGVzdE9iakNvbnN0cnVjdG9yKGV4ZWMsIHN0cnVjdHVyZSwgZ2xv
YmFsT2JqZWN0KSk7CiAgICAgfQogCiAgICAgdmlydHVhbCBib29sIGdldE93blByb3BlcnR5U2xv
dChKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IEpTQzo6SWRlbnRpZmllciYsIEpTQzo6UHJvcGVydHlT
bG90Jik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0T2JqLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdE9iai5oCShyZXZpc2lvbiA5MTkzOSkKKysrIFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouaAkod29ya2luZyBjb3B5KQpAQCAtMzQs
NyArMzQsNyBAQCBjbGFzcyBKU1Rlc3RPYmogOiBwdWJsaWMgSlNET01XcmFwcGVyIHsKIHB1Ymxp
YzoKICAgICBzdGF0aWMgSlNUZXN0T2JqKiBjcmVhdGUoSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUGFzc1JlZlB0cjxUZXN0T2JqPiBp
bXBsKQogICAgIHsKLSAgICAgICAgcmV0dXJuIG5ldyAoSlNDOjphbGxvY2F0ZUNlbGw8SlNUZXN0
T2JqPihnbG9iYWxPYmplY3QtPmdsb2JhbERhdGEoKS5oZWFwKSkgSlNUZXN0T2JqKHN0cnVjdHVy
ZSwgZ2xvYmFsT2JqZWN0LCBpbXBsKTsKKyAgICAgICAgcmV0dXJuIEpTQzo6dmFsaWRhdGVBbGxv
YzxKU1Rlc3RPYmo+KGdsb2JhbE9iamVjdC0+Z2xvYmFsRGF0YSgpLCBuZXcgKEpTQzo6YWxsb2Nh
dGVDZWxsPEpTVGVzdE9iaj4oZ2xvYmFsT2JqZWN0LT5nbG9iYWxEYXRhKCkuaGVhcCkpIEpTVGVz
dE9iaihzdHJ1Y3R1cmUsIGdsb2JhbE9iamVjdCwgaW1wbCkpOwogICAgIH0KIAogICAgIHN0YXRp
YyBKU0M6OkpTT2JqZWN0KiBjcmVhdGVQcm90b3R5cGUoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpT
R2xvYmFsT2JqZWN0Kik7CkBAIC03NSw3ICs3NSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlND
OjpKU09iamVjdCogc2VsZihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNHbG9iYWxPYmplY3QqKTsK
ICAgICBzdGF0aWMgSlNUZXN0T2JqUHJvdG90eXBlKiBjcmVhdGUoSlNDOjpKU0dsb2JhbERhdGEm
IGdsb2JhbERhdGEsIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBuZXcgKEpTQzo6YWxsb2Nh
dGVDZWxsPEpTVGVzdE9ialByb3RvdHlwZT4oZ2xvYmFsRGF0YS5oZWFwKSkgSlNUZXN0T2JqUHJv
dG90eXBlKGdsb2JhbERhdGEsIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlKTsKKyAgICAgICAgcmV0
dXJuIEpTQzo6dmFsaWRhdGVBbGxvYzxKU1Rlc3RPYmpQcm90b3R5cGU+KGdsb2JhbERhdGEsIG5l
dyAoSlNDOjphbGxvY2F0ZUNlbGw8SlNUZXN0T2JqUHJvdG90eXBlPihnbG9iYWxEYXRhLmhlYXAp
KSBKU1Rlc3RPYmpQcm90b3R5cGUoZ2xvYmFsRGF0YSwgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUp
KTsKICAgICB9CiAKICAgICBzdGF0aWMgY29uc3QgSlNDOjpDbGFzc0luZm8gc19pbmZvOwpJbmRl
eDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVy
ZmFjZS5jcHAJKHJldmlzaW9uIDkxOTM5KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTcxLDcgKzcxLDcgQEAgcHJpdmF0ZToKIHB1YmxpYzoKICAgICBzdGF0
aWMgSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlQ29uc3RydWN0b3IqIGNyZWF0
ZShKU0M6OkV4ZWNTdGF0ZSogZXhlYywgSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01H
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKICAgICB7Ci0gICAgICAgIHJldHVybiBuZXcgKEpT
Qzo6YWxsb2NhdGVDZWxsPEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZUNvbnN0
cnVjdG9yPigqZXhlYy0+aGVhcCgpKSkgSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJm
YWNlQ29uc3RydWN0b3IoZXhlYywgc3RydWN0dXJlLCBnbG9iYWxPYmplY3QpOworICAgICAgICBy
ZXR1cm4gSlNDOjp2YWxpZGF0ZUFsbG9jPEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVy
ZmFjZUNvbnN0cnVjdG9yPihleGVjLT5nbG9iYWxEYXRhKCksIG5ldyAoSlNDOjphbGxvY2F0ZUNl
bGw8SlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlQ29uc3RydWN0b3I+KCpleGVj
LT5oZWFwKCkpKSBKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VDb25zdHJ1Y3Rv
cihleGVjLCBzdHJ1Y3R1cmUsIGdsb2JhbE9iamVjdCkpOwogICAgIH0KIAogICAgIHZpcnR1YWwg
Ym9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBKU0M6OklkZW50
aWZpZXImLCBKU0M6OlByb3BlcnR5U2xvdCYpOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UuaAkocmV2aXNpb24gOTE5MzkpCisr
KyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2VyaWFsaXpl
ZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM2LDcgKzM2LDcgQEAg
Y2xhc3MgSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYQogcHVibGljOgogICAgIHN0
YXRpYyBKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UqIGNyZWF0ZShKU0M6OlN0
cnVjdHVyZSogc3RydWN0dXJlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQYXNz
UmVmUHRyPFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2U+IGltcGwpCiAgICAgewot
ICAgICAgICByZXR1cm4gbmV3IChKU0M6OmFsbG9jYXRlQ2VsbDxKU1Rlc3RTZXJpYWxpemVkU2Ny
aXB0VmFsdWVJbnRlcmZhY2U+KGdsb2JhbE9iamVjdC0+Z2xvYmFsRGF0YSgpLmhlYXApKSBKU1Rl
c3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2Uoc3RydWN0dXJlLCBnbG9iYWxPYmplY3Qs
IGltcGwpOworICAgICAgICByZXR1cm4gSlNDOjp2YWxpZGF0ZUFsbG9jPEpTVGVzdFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZUludGVyZmFjZT4oZ2xvYmFsT2JqZWN0LT5nbG9iYWxEYXRhKCksIG5ldyAo
SlNDOjphbGxvY2F0ZUNlbGw8SlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlPihn
bG9iYWxPYmplY3QtPmdsb2JhbERhdGEoKS5oZWFwKSkgSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZh
bHVlSW50ZXJmYWNlKHN0cnVjdHVyZSwgZ2xvYmFsT2JqZWN0LCBpbXBsKSk7CiAgICAgfQogCiAg
ICAgc3RhdGljIEpTQzo6SlNPYmplY3QqIGNyZWF0ZVByb3RvdHlwZShKU0M6OkV4ZWNTdGF0ZSos
IEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKQEAgLTY4LDcgKzY4LDcgQEAgcHVibGljOgogICAgIHN0
YXRpYyBKU0M6OkpTT2JqZWN0KiBzZWxmKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU0dsb2JhbE9i
amVjdCopOwogICAgIHN0YXRpYyBKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VQ
cm90b3R5cGUqIGNyZWF0ZShKU0M6OkpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNDOjpKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlKQogICAg
IHsKLSAgICAgICAgcmV0dXJuIG5ldyAoSlNDOjphbGxvY2F0ZUNlbGw8SlNUZXN0U2VyaWFsaXpl
ZFNjcmlwdFZhbHVlSW50ZXJmYWNlUHJvdG90eXBlPihnbG9iYWxEYXRhLmhlYXApKSBKU1Rlc3RT
ZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VQcm90b3R5cGUoZ2xvYmFsRGF0YSwgZ2xvYmFs
T2JqZWN0LCBzdHJ1Y3R1cmUpOworICAgICAgICByZXR1cm4gSlNDOjp2YWxpZGF0ZUFsbG9jPEpT
VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZVByb3RvdHlwZT4oZ2xvYmFsRGF0YSwg
bmV3IChKU0M6OmFsbG9jYXRlQ2VsbDxKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZh
Y2VQcm90b3R5cGU+KGdsb2JhbERhdGEuaGVhcCkpIEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZUludGVyZmFjZVByb3RvdHlwZShnbG9iYWxEYXRhLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSkp
OwogICAgIH0KIAogICAgIHN0YXRpYyBjb25zdCBKU0M6OkNsYXNzSW5mbyBzX2luZm87CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9hcnJheS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX2FycmF5LmgJKHJldmlzaW9uIDkxOTM5KQorKysg
U291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfYXJyYXkuaAkod29ya2luZyBjb3B5KQpAQCAt
MzUsNyArMzUsNyBAQCBjbGFzcyBSdW50aW1lQXJyYXkgOiBwdWJsaWMgSlNBcnJheSB7CiBwdWJs
aWM6CiAgICAgc3RhdGljIFJ1bnRpbWVBcnJheSogY3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgQmlu
ZGluZ3M6OkFycmF5KiBhcnJheSkKICAgICB7Ci0gICAgICAgIHJldHVybiBuZXcgKGFsbG9jYXRl
Q2VsbDxSdW50aW1lQXJyYXk+KCpleGVjLT5oZWFwKCkpKSBSdW50aW1lQXJyYXkoZXhlYywgYXJy
YXkpOworICAgICAgICByZXR1cm4gdmFsaWRhdGVBbGxvYzxSdW50aW1lQXJyYXk+KGV4ZWMtPmds
b2JhbERhdGEoKSwgbmV3IChhbGxvY2F0ZUNlbGw8UnVudGltZUFycmF5PigqZXhlYy0+aGVhcCgp
KSkgUnVudGltZUFycmF5KGV4ZWMsIGFycmF5KSk7CiAgICAgfQogCiAgICAgdHlwZWRlZiBCaW5k
aW5nczo6QXJyYXkgQmluZGluZ3NBcnJheTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9y
dW50aW1lX21ldGhvZC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50
aW1lX21ldGhvZC5oCShyZXZpc2lvbiA5MTkzOSkKKysrIFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9y
dW50aW1lX21ldGhvZC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw3ICszNyw3IEBAIGNsYXNzIFJ1
bnRpbWVNZXRob2QgOiBwdWJsaWMgSW50ZXJuYWxGdW4KIHB1YmxpYzoKICAgICBzdGF0aWMgUnVu
dGltZU1ldGhvZCogY3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IElkZW50aWZpZXImIG5hbWUsIEJp
bmRpbmdzOjpNZXRob2RMaXN0JiBtZXRob2RMaXN0KQogICAgIHsKLSAgICAgICAgcmV0dXJuIG5l
dyAoYWxsb2NhdGVDZWxsPFJ1bnRpbWVNZXRob2Q+KCpleGVjLT5oZWFwKCkpKSBSdW50aW1lTWV0
aG9kKGV4ZWMsIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBuYW1lLCBtZXRob2RMaXN0KTsKKyAg
ICAgICAgcmV0dXJuIHZhbGlkYXRlQWxsb2M8UnVudGltZU1ldGhvZD4oZXhlYy0+Z2xvYmFsRGF0
YSgpLCBuZXcgKGFsbG9jYXRlQ2VsbDxSdW50aW1lTWV0aG9kPigqZXhlYy0+aGVhcCgpKSkgUnVu
dGltZU1ldGhvZChleGVjLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgbmFtZSwgbWV0aG9kTGlz
dCkpOwogICAgIH0KIAogICAgIEJpbmRpbmdzOjpNZXRob2RMaXN0KiBtZXRob2RzKCkgY29uc3Qg
eyByZXR1cm4gX21ldGhvZExpc3QuZ2V0KCk7IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JyaWRn
ZS9ydW50aW1lX29iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9y
dW50aW1lX29iamVjdC5oCShyZXZpc2lvbiA5MTkzOSkKKysrIFNvdXJjZS9XZWJDb3JlL2JyaWRn
ZS9ydW50aW1lX29iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw3ICszNyw3IEBAIGNsYXNz
IFJ1bnRpbWVPYmplY3QgOiBwdWJsaWMgSlNPYmplY3RXaXQKIHB1YmxpYzoKICAgICBzdGF0aWMg
UnVudGltZU9iamVjdCogY3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFBhc3NSZWZQdHI8SW5zdGFuY2U+IGlu
c3RhbmNlKQogICAgIHsKLSAgICAgICAgcmV0dXJuIG5ldyAoYWxsb2NhdGVDZWxsPFJ1bnRpbWVP
YmplY3Q+KCpleGVjLT5oZWFwKCkpKSBSdW50aW1lT2JqZWN0KGV4ZWMsIGdsb2JhbE9iamVjdCwg
c3RydWN0dXJlLCBpbnN0YW5jZSk7CisgICAgICAgIHJldHVybiB2YWxpZGF0ZUFsbG9jPFJ1bnRp
bWVPYmplY3Q+KGV4ZWMtPmdsb2JhbERhdGEoKSwgbmV3IChhbGxvY2F0ZUNlbGw8UnVudGltZU9i
amVjdD4oKmV4ZWMtPmhlYXAoKSkpIFJ1bnRpbWVPYmplY3QoZXhlYywgZ2xvYmFsT2JqZWN0LCBz
dHJ1Y3R1cmUsIGluc3RhbmNlKSk7CiAgICAgfQogCiAgICAgdmlydHVhbCB+UnVudGltZU9iamVj
dCgpOwpJbmRleDogU291cmNlL1dlYkNvcmUvYnJpZGdlL2MvQ1J1bnRpbWVPYmplY3QuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9icmlkZ2UvYy9DUnVudGltZU9iamVjdC5oCShyZXZp
c2lvbiA5MTkzOSkKKysrIFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9jL0NSdW50aW1lT2JqZWN0LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTM5LDcgKzM5LDcgQEAgY2xhc3MgQ1J1bnRpbWVPYmplY3QgOiBw
dWJsaWMgUnVudGltZU9iagogcHVibGljOgogICAgIHN0YXRpYyBDUnVudGltZU9iamVjdCogY3Jl
YXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUGFzc1Jl
ZlB0cjxDSW5zdGFuY2U+IGluc3RhbmNlKQogICAgIHsKLSAgICAgICAgcmV0dXJuIG5ldyAoYWxs
b2NhdGVDZWxsPENSdW50aW1lT2JqZWN0PigqZXhlYy0+aGVhcCgpKSkgQ1J1bnRpbWVPYmplY3Qo
ZXhlYywgZ2xvYmFsT2JqZWN0LCBpbnN0YW5jZSk7CisgICAgICAgIHJldHVybiB2YWxpZGF0ZUFs
bG9jPENSdW50aW1lT2JqZWN0PihleGVjLT5nbG9iYWxEYXRhKCksIG5ldyAoYWxsb2NhdGVDZWxs
PENSdW50aW1lT2JqZWN0PigqZXhlYy0+aGVhcCgpKSkgQ1J1bnRpbWVPYmplY3QoZXhlYywgZ2xv
YmFsT2JqZWN0LCBpbnN0YW5jZSkpOwogICAgIH0KIAogICAgIHZpcnR1YWwgfkNSdW50aW1lT2Jq
ZWN0KCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9icmlkZ2UvYy9jX2luc3RhbmNlLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9icmlkZ2UvYy9jX2luc3RhbmNlLmNwcAkocmV2aXNp
b24gOTE5MzkpCisrKyBTb3VyY2UvV2ViQ29yZS9icmlkZ2UvYy9jX2luc3RhbmNlLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTEzLDcgKzExMyw3IEBAIGNsYXNzIENSdW50aW1lTWV0aG9kIDogcHVi
bGljIFJ1bnRpbWVNZXQKIHB1YmxpYzoKICAgICBzdGF0aWMgQ1J1bnRpbWVNZXRob2QqIGNyZWF0
ZShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IElk
ZW50aWZpZXImIG5hbWUsIEJpbmRpbmdzOjpNZXRob2RMaXN0JiBsaXN0KQogICAgIHsKLSAgICAg
ICAgcmV0dXJuIG5ldyAoYWxsb2NhdGVDZWxsPENSdW50aW1lTWV0aG9kPigqZXhlYy0+aGVhcCgp
KSkgQ1J1bnRpbWVNZXRob2QoZXhlYywgZ2xvYmFsT2JqZWN0LCBuYW1lLCBsaXN0KTsKKyAgICAg
ICAgcmV0dXJuIHZhbGlkYXRlQWxsb2M8Q1J1bnRpbWVNZXRob2Q+KGV4ZWMtPmdsb2JhbERhdGEo
KSwgbmV3IChhbGxvY2F0ZUNlbGw8Q1J1bnRpbWVNZXRob2Q+KCpleGVjLT5oZWFwKCkpKSBDUnVu
dGltZU1ldGhvZChleGVjLCBnbG9iYWxPYmplY3QsIG5hbWUsIGxpc3QpKTsKICAgICB9CiAKICAg
ICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiBnbG9iYWxE
YXRhLCBKU1ZhbHVlIHByb3RvdHlwZSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9qbmkv
anNjL0phdmFJbnN0YW5jZUpTQy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYnJp
ZGdlL2puaS9qc2MvSmF2YUluc3RhbmNlSlNDLmNwcAkocmV2aXNpb24gOTE5MzkpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9icmlkZ2Uvam5pL2pzYy9KYXZhSW5zdGFuY2VKU0MuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xMTgsNyArMTE4LDcgQEAgY2xhc3MgSmF2YVJ1bnRpbWVNZXRob2QgOiBwdWJsaWMg
UnVudGltZQogcHVibGljOgogICAgIHN0YXRpYyBKYXZhUnVudGltZU1ldGhvZCogY3JlYXRlKEV4
ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgSWRlbnRp
ZmllciYgbmFtZSwgQmluZGluZ3M6Ok1ldGhvZExpc3QmIGxpc3QpCiAgICAgewotICAgICAgICBy
ZXR1cm4gbmV3IChhbGxvY2F0ZUNlbGw8SmF2YVJ1bnRpbWVNZXRob2Q+KCpleGVjLT5oZWFwKCkp
KSBKYXZhUnVudGltZU1ldGhvZChleGVjLCBnbG9iYWxPYmplY3QsIG5hbWUsIGxpc3QpOworICAg
ICAgICByZXR1cm4gdmFsaWRhdGVBbGxvYzxKYXZhUnVudGltZU1ldGhvZD4oZXhlYy0+Z2xvYmFs
RGF0YSgpLCBuZXcgKGFsbG9jYXRlQ2VsbDxKYXZhUnVudGltZU1ldGhvZD4oKmV4ZWMtPmhlYXAo
KSkpIEphdmFSdW50aW1lTWV0aG9kKGV4ZWMsIGdsb2JhbE9iamVjdCwgbmFtZSwgbGlzdCkpOwog
ICAgIH0KIAogICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0dsb2JhbERh
dGEmIGdsb2JhbERhdGEsIEpTVmFsdWUgcHJvdG90eXBlKQpJbmRleDogU291cmNlL1dlYkNvcmUv
YnJpZGdlL2puaS9qc2MvSmF2YVJ1bnRpbWVPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9icmlkZ2Uvam5pL2pzYy9KYXZhUnVudGltZU9iamVjdC5oCShyZXZpc2lvbiA5MTkz
OSkKKysrIFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9qbmkvanNjL0phdmFSdW50aW1lT2JqZWN0LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTM3LDcgKzM3LDcgQEAgY2xhc3MgSmF2YVJ1bnRpbWVPYmplY3Qg
OiBwdWJsaWMgUnVudGltZQogcHVibGljOgogICAgIHN0YXRpYyBKYXZhUnVudGltZU9iamVjdCog
Y3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUGFz
c1JlZlB0cjxKYXZhSW5zdGFuY2U+IGphdmFJbnN0KQogICAgIHsKLSAgICAgICAgcmV0dXJuIG5l
dyAoYWxsb2NhdGVDZWxsPEphdmFSdW50aW1lT2JqZWN0PigqZXhlYy0+aGVhcCgpKSkgSmF2YVJ1
bnRpbWVPYmplY3QoZXhlYywgZ2xvYmFsT2JqZWN0LCBqYXZhSW5zdCk7CisgICAgICAgIHJldHVy
biB2YWxpZGF0ZUFsbG9jPEphdmFSdW50aW1lT2JqZWN0PihleGVjLT5nbG9iYWxEYXRhKCksIG5l
dyAoYWxsb2NhdGVDZWxsPEphdmFSdW50aW1lT2JqZWN0PigqZXhlYy0+aGVhcCgpKSkgSmF2YVJ1
bnRpbWVPYmplY3QoZXhlYywgZ2xvYmFsT2JqZWN0LCBqYXZhSW5zdCkpOwogICAgIH0KIAogICAg
IHZpcnR1YWwgfkphdmFSdW50aW1lT2JqZWN0KCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9icmlk
Z2Uvb2JqYy9PYmpDUnVudGltZU9iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2JyaWRnZS9vYmpjL09iakNSdW50aW1lT2JqZWN0LmgJKHJldmlzaW9uIDkxOTM5KQorKysgU291
cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvT2JqQ1J1bnRpbWVPYmplY3QuaAkod29ya2luZyBjb3B5
KQpAQCAtMzcsNyArMzcsNyBAQCBjbGFzcyBPYmpDUnVudGltZU9iamVjdCA6IHB1YmxpYyBSdW50
aW1lCiBwdWJsaWM6CiAgICAgc3RhdGljIE9iakNSdW50aW1lT2JqZWN0KiBjcmVhdGUoRXhlY1N0
YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQYXNzUmVmUHRyPE9iamNJ
bnN0YW5jZT4gaW5zdCkKICAgICB7Ci0gICAgICAgIHJldHVybiBuZXcgKGFsbG9jYXRlQ2VsbDxP
YmpDUnVudGltZU9iamVjdD4oKmV4ZWMtPmhlYXAoKSkpIE9iakNSdW50aW1lT2JqZWN0KGV4ZWMs
IGdsb2JhbE9iamVjdCwgaW5zdCk7CisgICAgICAgIHJldHVybiB2YWxpZGF0ZUFsbG9jPE9iakNS
dW50aW1lT2JqZWN0PihleGVjLT5nbG9iYWxEYXRhKCksIG5ldyAoYWxsb2NhdGVDZWxsPE9iakNS
dW50aW1lT2JqZWN0PigqZXhlYy0+aGVhcCgpKSkgT2JqQ1J1bnRpbWVPYmplY3QoZXhlYywgZ2xv
YmFsT2JqZWN0LCBpbnN0KSk7CiAgICAgfQogCiAgICAgdmlydHVhbCB+T2JqQ1J1bnRpbWVPYmpl
Y3QoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfaW5zdGFuY2UubW0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19pbnN0YW5jZS5t
bQkocmV2aXNpb24gOTE5MzkpCisrKyBTb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX2lu
c3RhbmNlLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xNzQsNyArMTc0LDcgQEAgY2xhc3MgT2JqQ1J1
bnRpbWVNZXRob2QgOiBwdWJsaWMgUnVudGltZQogcHVibGljOgogICAgIHN0YXRpYyBPYmpDUnVu
dGltZU1ldGhvZCogY3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgY29uc3QgSWRlbnRpZmllciYgbmFtZSwgQmluZGluZ3M6Ok1ldGhvZExpc3QmIGxp
c3QpCiAgICAgewotICAgICAgICByZXR1cm4gbmV3IChhbGxvY2F0ZUNlbGw8T2JqQ1J1bnRpbWVN
ZXRob2Q+KCpleGVjLT5oZWFwKCkpKSBPYmpDUnVudGltZU1ldGhvZChleGVjLCBnbG9iYWxPYmpl
Y3QsIG5hbWUsIGxpc3QpOworICAgICAgICByZXR1cm4gdmFsaWRhdGVBbGxvYzxPYmpDUnVudGlt
ZU1ldGhvZD4oZXhlYy0+Z2xvYmFsRGF0YSgpLCBuZXcgKGFsbG9jYXRlQ2VsbDxPYmpDUnVudGlt
ZU1ldGhvZD4oKmV4ZWMtPmhlYXAoKSkpIE9iakNSdW50aW1lTWV0aG9kKGV4ZWMsIGdsb2JhbE9i
amVjdCwgbmFtZSwgbGlzdCkpOwogICAgIH0KIAogICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0
ZVN0cnVjdHVyZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTVmFsdWUgcHJvdG90eXBlKQpJ
bmRleDogU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19ydW50aW1lLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19ydW50aW1lLmgJKHJldmlzaW9u
IDkxOTM5KQorKysgU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19ydW50aW1lLmgJKHdv
cmtpbmcgY29weSkKQEAgLTk0LDcgKzk0LDcgQEAgY2xhc3MgT2JqY0ZhbGxiYWNrT2JqZWN0SW1w
IDogcHVibGljIEpTTwogcHVibGljOgogICAgIHN0YXRpYyBPYmpjRmFsbGJhY2tPYmplY3RJbXAq
IGNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIE9i
amNJbnN0YW5jZSogaW5zdGFuY2UsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSkKICAg
ICB7Ci0gICAgICAgIHJldHVybiBuZXcgKGFsbG9jYXRlQ2VsbDxPYmpjRmFsbGJhY2tPYmplY3RJ
bXA+KCpleGVjLT5oZWFwKCkpKSBPYmpjRmFsbGJhY2tPYmplY3RJbXAoZXhlYywgZ2xvYmFsT2Jq
ZWN0LCBpbnN0YW5jZSwgcHJvcGVydHlOYW1lKTsKKyAgICAgICAgcmV0dXJuIHZhbGlkYXRlQWxs
b2M8T2JqY0ZhbGxiYWNrT2JqZWN0SW1wPihleGVjLT5nbG9iYWxEYXRhKCksIG5ldyAoYWxsb2Nh
dGVDZWxsPE9iamNGYWxsYmFja09iamVjdEltcD4oKmV4ZWMtPmhlYXAoKSkpIE9iamNGYWxsYmFj
a09iamVjdEltcChleGVjLCBnbG9iYWxPYmplY3QsIGluc3RhbmNlLCBwcm9wZXJ0eU5hbWUpKTsK
ICAgICB9CiAKICAgICBzdGF0aWMgY29uc3QgQ2xhc3NJbmZvIHNfaW5mbzsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2JyaWRnZS9xdC9xdF9pbnN0YW5jZS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvYnJpZGdlL3F0L3F0X2luc3RhbmNlLmNwcAkocmV2aXNpb24gOTE5MzkpCisrKyBT
b3VyY2UvV2ViQ29yZS9icmlkZ2UvcXQvcXRfaW5zdGFuY2UuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC01Miw3ICs1Miw3IEBAIGNsYXNzIFF0UnVudGltZU9iamVjdCA6IHB1YmxpYyBSdW50aW1lT2IK
IHB1YmxpYzoKICAgICBzdGF0aWMgUXRSdW50aW1lT2JqZWN0KiBjcmVhdGUoRXhlY1N0YXRlKiBl
eGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQYXNzUmVmUHRyPEluc3RhbmNlPiBp
bnN0YW5jZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBuZXcgKGFsbG9jYXRlQ2VsbDxRdFJ1bnRp
bWVPYmplY3Q+KCpleGVjLT5oZWFwKCkpKSBRdFJ1bnRpbWVPYmplY3QoZXhlYywgZ2xvYmFsT2Jq
ZWN0LCBpbnN0YW5jZSk7CisgICAgICAgIHJldHVybiB2YWxpZGF0ZUFsbG9jPFF0UnVudGltZU9i
amVjdD4oZXhlYy0+Z2xvYmFsRGF0YSgpLCBuZXcgKGFsbG9jYXRlQ2VsbDxRdFJ1bnRpbWVPYmpl
Y3Q+KCpleGVjLT5oZWFwKCkpKSBRdFJ1bnRpbWVPYmplY3QoZXhlYywgZ2xvYmFsT2JqZWN0LCBp
bnN0YW5jZSkpOwogICAgIH0KICAgICAKICAgICBzdGF0aWMgY29uc3QgQ2xhc3NJbmZvIHNfaW5m
bzsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9xdC9xdF9waXhtYXBydW50aW1lLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9icmlkZ2UvcXQvcXRfcGl4bWFwcnVudGltZS5j
cHAJKHJldmlzaW9uIDkxOTM5KQorKysgU291cmNlL1dlYkNvcmUvYnJpZGdlL3F0L3F0X3BpeG1h
cHJ1bnRpbWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMDAsNyArMjAwLDcgQEAgY2xhc3MgUXRQ
aXhtYXBSdW50aW1lT2JqZWN0IDogcHVibGljIFJ1bgogcHVibGljOgogICAgIHN0YXRpYyBRdFBp
eG1hcFJ1bnRpbWVPYmplY3QqIGNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIFBhc3NSZWZQdHI8SW5zdGFuY2U+IGluc3RhbmNlKQogICAgIHsKLSAg
ICAgICAgcmV0dXJuIG5ldyAoYWxsb2NhdGVDZWxsPFF0UGl4bWFwUnVudGltZU9iamVjdD4oKmV4
ZWMtPmhlYXAoKSkpIFF0UGl4bWFwUnVudGltZU9iamVjdChleGVjLCBnbG9iYWxPYmplY3QsIGlu
c3RhbmNlKTsKKyAgICAgICAgcmV0dXJuIHZhbGlkYXRlQWxsb2M8UXRQaXhtYXBSdW50aW1lT2Jq
ZWN0PihleGVjLT5nbG9iYWxEYXRhKCksIG5ldyAoYWxsb2NhdGVDZWxsPFF0UGl4bWFwUnVudGlt
ZU9iamVjdD4oKmV4ZWMtPmhlYXAoKSkpIFF0UGl4bWFwUnVudGltZU9iamVjdChleGVjLCBnbG9i
YWxPYmplY3QsIGluc3RhbmNlKSk7CiAgICAgfQogCiAgICAgc3RhdGljIGNvbnN0IENsYXNzSW5m
byBzX2luZm87CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9icmlkZ2UvcXQvcXRfcnVudGltZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9xdC9xdF9ydW50aW1lLmgJKHJldmlz
aW9uIDkxOTM5KQorKysgU291cmNlL1dlYkNvcmUvYnJpZGdlL3F0L3F0X3J1bnRpbWUuaAkod29y
a2luZyBjb3B5KQpAQCAtMTUyLDcgKzE1Miw3IEBAIGNsYXNzIFF0UnVudGltZU1ldGFNZXRob2Qg
OiBwdWJsaWMgUXRSdW4KIHB1YmxpYzoKICAgICBzdGF0aWMgUXRSdW50aW1lTWV0YU1ldGhvZCog
Y3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgbiwgUGFzc1JlZlB0cjxR
dEluc3RhbmNlPiBpbnN0LCBpbnQgaW5kZXgsIGNvbnN0IFFCeXRlQXJyYXkmIHNpZ25hdHVyZSwg
Ym9vbCBhbGxvd1ByaXZhdGUpCiAgICAgewotICAgICAgICByZXR1cm4gbmV3IChhbGxvY2F0ZUNl
bGw8UXRSdW50aW1lTWV0YU1ldGhvZD4oKmV4ZWMtPmhlYXAoKSkpIFF0UnVudGltZU1ldGFNZXRo
b2QoZXhlYywgbiwgaW5zdCwgaW5kZXgsIHNpZ25hdHVyZSwgYWxsb3dQcml2YXRlKTsKKyAgICAg
ICAgcmV0dXJuIHZhbGlkYXRlQWxsb2M8UXRSdW50aW1lTWV0YU1ldGhvZD4oZXhlYy0+Z2xvYmFs
RGF0YSgpLCBuZXcgKGFsbG9jYXRlQ2VsbDxRdFJ1bnRpbWVNZXRhTWV0aG9kPigqZXhlYy0+aGVh
cCgpKSkgUXRSdW50aW1lTWV0YU1ldGhvZChleGVjLCBuLCBpbnN0LCBpbmRleCwgc2lnbmF0dXJl
LCBhbGxvd1ByaXZhdGUpKTsKICAgICB9CiAKICAgICB2aXJ0dWFsIGJvb2wgZ2V0T3duUHJvcGVy
dHlTbG90KEV4ZWNTdGF0ZSAqLCBjb25zdCBJZGVudGlmaWVyJiwgUHJvcGVydHlTbG90Jik7CkBA
IC0xODAsNyArMTgwLDcgQEAgY2xhc3MgUXRSdW50aW1lQ29ubmVjdGlvbk1ldGhvZCA6IHB1Ymxp
YwogcHVibGljOgogICAgIHN0YXRpYyBRdFJ1bnRpbWVDb25uZWN0aW9uTWV0aG9kKiBjcmVhdGUo
RXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBuLCBib29sIGlzQ29ubmVjdCwgUGFz
c1JlZlB0cjxRdEluc3RhbmNlPiBpbnN0LCBpbnQgaW5kZXgsIGNvbnN0IFFCeXRlQXJyYXkmIHNp
Z25hdHVyZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBuZXcgKGFsbG9jYXRlQ2VsbDxRdFJ1bnRp
bWVDb25uZWN0aW9uTWV0aG9kPigqZXhlYy0+aGVhcCgpKSkgUXRSdW50aW1lQ29ubmVjdGlvbk1l
dGhvZChleGVjLCBuLCBpc0Nvbm5lY3QsIGluc3QsIGluZGV4LCBzaWduYXR1cmUpOworICAgICAg
ICByZXR1cm4gdmFsaWRhdGVBbGxvYzxRdFJ1bnRpbWVDb25uZWN0aW9uTWV0aG9kPihleGVjLT5n
bG9iYWxEYXRhKCksIG5ldyAoYWxsb2NhdGVDZWxsPFF0UnVudGltZUNvbm5lY3Rpb25NZXRob2Q+
KCpleGVjLT5oZWFwKCkpKSBRdFJ1bnRpbWVDb25uZWN0aW9uTWV0aG9kKGV4ZWMsIG4sIGlzQ29u
bmVjdCwgaW5zdCwgaW5kZXgsIHNpZ25hdHVyZSkpOwogICAgIH0KIAogICAgIHZpcnR1YWwgYm9v
bCBnZXRPd25Qcm9wZXJ0eVNsb3QoRXhlY1N0YXRlICosIGNvbnN0IElkZW50aWZpZXImLCBQcm9w
ZXJ0eVNsb3QmKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDkxOTQwKQorKysgU291cmNlL1dl
YktpdDIvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjIgQEAKKzIwMTEtMDct
MjggIE1hcmsgSGFobmVuYmVyZyAgPG1oYWhuZW5iZXJnQGFwcGxlLmNvbT4KKworICAgICAgICBB
ZGQgY2hlY2tzIHRvIGVuc3VyZSBhbGxvY2F0aW9uIGRvZXMgbm90IHRha2UgcGxhY2UgZHVyaW5n
IGluaXRpYWxpemF0aW9uIG9mIEdDLW1hbmFnZWQgb2JqZWN0cworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjUyODgKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRlZCB0aGUgdmFsaWRhdGVBbGxvYyBjYWxs
IHRvIGNoZWNrIHRoZSBpbml0aWFsaXppbmdPYmplY3QgZmxhZyBpbiB0aGUgSlNHbG9iYWxEYXRh
IG9iamVjdCBhbmQgCisgICAgICAgIHRvIHRoZW4gY2xlYXIgc2FpZCBmbGFnLiAgTm8gZmxhZyBj
aGVja2luZywgc2V0dGluZywgb3IgY2xlYXJpbmcgaXMgZG9uZSB1bmxlc3MgR0NfVkFMSURBVElP
TiBpcyBlbmFibGVkLiAgCisgICAgICAgIEFsc28gYWRkZWQgc3BlY2lhbCBjYXNlcyB3aGVyZSB0
aGUgZmxhZyBpcyBjbGVhcmVkIGFuZCB0aGUgcmVzZXQgYXJvdW5kIGxvY2F0aW9ucyB3aGVyZSBu
ZXN0ZWQgCisgICAgICAgIGFsbG9jYXRpb25zIG9jY3VyIGluIHRoZSBjb25zdHJ1Y3RvcnMuICBU
aGlzIGlzIG1vc3RseSB0ZW1wb3JhcnkgZm9yIG5vdyB0byBnZXQgYmFjayB0byBhIHdvcmtpbmcg
c3RhdGUgCisgICAgICAgIHdpdGhvdXQgaGF2aW5nIHRvIGhvaXN0IGFsbCBvZiB0aG9zZSBhbG9j
YXRpb25zIG91dCBvZiB0aGUgY29uc3RydWN0b3JzLiAgVGhpcyBpcyBwYXJ0IG9mIGEgCisgICAg
ICAgIGxhcmdlciByZWZhY3RvcmluZyB0byBtYWtlIG91ciBvYmplY3QgYWxsb2NhdGlvbiBhbmQg
aW5pdGlhbGl6YXRpb24gbW9yZSBHQy1mcmllbmRseS9zYWZlLiAKKworICAgICAgICAqIFdlYlBy
b2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9KU05QTWV0aG9kLmg6CisgICAgICAgIChXZWJLaXQ6OkpT
TlBNZXRob2Q6OmNyZWF0ZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBl
L0pTTlBPYmplY3QuaDoKKyAgICAgICAgKFdlYktpdDo6SlNOUE9iamVjdDo6Y3JlYXRlKToKKwog
MjAxMS0wNy0yNiAgQ2hyaXMgRmxlaXphY2ggIDxjZmxlaXphY2hAYXBwbGUuY29tPgogCiAgICAg
ICAgIFJFR1JFU1NJT04gKFNhZmFyaSA1LjEpOiBKYXZhU2NyaXB0IGRpYWxvZ3Mgbm90IHVzYWJs
ZSB3aXRoIFZvaWNlT3ZlcgpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5z
L05ldHNjYXBlL0pTTlBNZXRob2QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvSlNOUE1ldGhvZC5oCShyZXZpc2lvbiA5MTkzOSkKKysr
IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9KU05QTWV0aG9kLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTM3LDcgKzM3LDcgQEAgY2xhc3MgSlNOUE1ldGhvZCA6IHB1Ymxp
YyBKU0M6OkludGVybmFsRgogcHVibGljOgogICAgIHN0YXRpYyBKU05QTWV0aG9kKiBjcmVhdGUo
SlNDOjpFeGVjU3RhdGUqIGV4ZWMsIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
Y29uc3QgSlNDOjpJZGVudGlmaWVyJiBpZGVudCwgTlBJZGVudGlmaWVyIG5wSWRlbnQpCiAgICAg
ewotICAgICAgICByZXR1cm4gbmV3IChKU0M6OmFsbG9jYXRlQ2VsbDxKU05QTWV0aG9kPigqZXhl
Yy0+aGVhcCgpKSkgSlNOUE1ldGhvZChleGVjLCBnbG9iYWxPYmplY3QsIGlkZW50LCBucElkZW50
KTsKKyAgICAgICAgcmV0dXJuIEpTQzo6dmFsaWRhdGVBbGxvYzxKU05QTWV0aG9kPihleGVjLT5n
bG9iYWxEYXRhKCksIG5ldyAoSlNDOjphbGxvY2F0ZUNlbGw8SlNOUE1ldGhvZD4oKmV4ZWMtPmhl
YXAoKSkpIEpTTlBNZXRob2QoZXhlYywgZ2xvYmFsT2JqZWN0LCBpZGVudCwgbnBJZGVudCkpOwog
ICAgIH0KIAogICAgIHN0YXRpYyBjb25zdCBKU0M6OkNsYXNzSW5mbyBzX2luZm87CkluZGV4OiBT
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvSlNOUE9iamVjdC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9K
U05QT2JqZWN0LmgJKHJldmlzaW9uIDkxOTM5KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9QbHVnaW5zL05ldHNjYXBlL0pTTlBPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtNDEsNyAr
NDEsNyBAQCBjbGFzcyBKU05QT2JqZWN0IDogcHVibGljIEpTQzo6SlNPYmplY3RXCiBwdWJsaWM6
CiAgICAgc3RhdGljIEpTTlBPYmplY3QqIGNyZWF0ZShKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIE5QUnVudGltZU9iamVjdE1hcCogb2JqZWN0TWFwLCBOUE9iamVjdCogbnBPYmpl
Y3QpCiAgICAgewotICAgICAgICByZXR1cm4gbmV3IChKU0M6OmFsbG9jYXRlQ2VsbDxKU05QT2Jq
ZWN0PihnbG9iYWxPYmplY3QtPmdsb2JhbERhdGEoKS5oZWFwKSkgSlNOUE9iamVjdChnbG9iYWxP
YmplY3QsIG9iamVjdE1hcCwgbnBPYmplY3QpOworICAgICAgICByZXR1cm4gSlNDOjp2YWxpZGF0
ZUFsbG9jPEpTTlBPYmplY3Q+KGdsb2JhbE9iamVjdC0+Z2xvYmFsRGF0YSgpLCBuZXcgKEpTQzo6
YWxsb2NhdGVDZWxsPEpTTlBPYmplY3Q+KGdsb2JhbE9iamVjdC0+Z2xvYmFsRGF0YSgpLmhlYXAp
KSBKU05QT2JqZWN0KGdsb2JhbE9iamVjdCwgb2JqZWN0TWFwLCBucE9iamVjdCkpOwogICAgIH0K
IAogICAgIH5KU05QT2JqZWN0KCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCShyZXZpc2lvbiA5MTk0
MCkKKysrIFNvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDIyIEBACisyMDExLTA3LTI4ICBNYXJrIEhhaG5lbmJlcmcgIDxtaGFobmVuYmVyZ0BhcHBs
ZS5jb20+CisKKyAgICAgICAgQWRkIGNoZWNrcyB0byBlbnN1cmUgYWxsb2NhdGlvbiBkb2VzIG5v
dCB0YWtlIHBsYWNlIGR1cmluZyBpbml0aWFsaXphdGlvbiBvZiBHQy1tYW5hZ2VkIG9iamVjdHMK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY1Mjg4CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkZWQgdGhl
IHZhbGlkYXRlQWxsb2MgY2FsbCB0byBjaGVjayB0aGUgaW5pdGlhbGl6aW5nT2JqZWN0IGZsYWcg
aW4gdGhlIEpTR2xvYmFsRGF0YSBvYmplY3QgYW5kIAorICAgICAgICB0byB0aGVuIGNsZWFyIHNh
aWQgZmxhZy4gIE5vIGZsYWcgY2hlY2tpbmcsIHNldHRpbmcsIG9yIGNsZWFyaW5nIGlzIGRvbmUg
dW5sZXNzIEdDX1ZBTElEQVRJT04gaXMgZW5hYmxlZC4gIAorICAgICAgICBBbHNvIGFkZGVkIHNw
ZWNpYWwgY2FzZXMgd2hlcmUgdGhlIGZsYWcgaXMgY2xlYXJlZCBhbmQgdGhlIHJlc2V0IGFyb3Vu
ZCBsb2NhdGlvbnMgd2hlcmUgbmVzdGVkIAorICAgICAgICBhbGxvY2F0aW9ucyBvY2N1ciBpbiB0
aGUgY29uc3RydWN0b3JzLiAgVGhpcyBpcyBtb3N0bHkgdGVtcG9yYXJ5IGZvciBub3cgdG8gZ2V0
IGJhY2sgdG8gYSB3b3JraW5nIHN0YXRlIAorICAgICAgICB3aXRob3V0IGhhdmluZyB0byBob2lz
dCBhbGwgb2YgdGhvc2UgYWxvY2F0aW9ucyBvdXQgb2YgdGhlIGNvbnN0cnVjdG9ycy4gIFRoaXMg
aXMgcGFydCBvZiBhIAorICAgICAgICBsYXJnZXIgcmVmYWN0b3JpbmcgdG8gbWFrZSBvdXIgb2Jq
ZWN0IGFsbG9jYXRpb24gYW5kIGluaXRpYWxpemF0aW9uIG1vcmUgR0MtZnJpZW5kbHkvc2FmZS4g
CisKKyAgICAgICAgKiBQbHVnaW5zL0hvc3RlZC9Qcm94eUluc3RhbmNlLm1tOgorICAgICAgICAo
V2ViS2l0OjpQcm94eVJ1bnRpbWVNZXRob2Q6OmNyZWF0ZSk6CisgICAgICAgICogUGx1Z2lucy9I
b3N0ZWQvUHJveHlSdW50aW1lT2JqZWN0Lmg6CisgICAgICAgIChXZWJLaXQ6OlByb3h5UnVudGlt
ZU9iamVjdDo6Y3JlYXRlKToKKwogMjAxMS0wNy0yOCAgRGFuIEJlcm5zdGVpbiAgPG1pdHpAYXBw
bGUuY29tPgogCiAgICAgICAgIDxyZGFyOi8vcHJvYmxlbS85NTg5NDMzPiBEaXNwbGF5aW5nIEph
cGFuZXNlIGRpY3Rpb25hcnkgY29udGVudHMgaW4gdmVydGljYWwgb3JpZW50YXRpb24gdGFrZXMg
YSBjb3VwbGUgb2Ygc2Vjb25kcwpJbmRleDogU291cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9Ib3N0
ZWQvUHJveHlJbnN0YW5jZS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9QbHVn
aW5zL0hvc3RlZC9Qcm94eUluc3RhbmNlLm1tCShyZXZpc2lvbiA5MTkzOSkKKysrIFNvdXJjZS9X
ZWJLaXQvbWFjL1BsdWdpbnMvSG9zdGVkL1Byb3h5SW5zdGFuY2UubW0JKHdvcmtpbmcgY29weSkK
QEAgLTE4MSw3ICsxODEsNyBAQCBjbGFzcyBQcm94eVJ1bnRpbWVNZXRob2QgOiBwdWJsaWMgUnVu
dGltCiBwdWJsaWM6CiAgICAgc3RhdGljIFByb3h5UnVudGltZU1ldGhvZCogY3JlYXRlKEV4ZWNT
dGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgSWRlbnRpZmll
ciYgbmFtZSwgQmluZGluZ3M6Ok1ldGhvZExpc3QmIGxpc3QpCiAgICAgewotICAgICAgICByZXR1
cm4gbmV3IChhbGxvY2F0ZUNlbGw8UHJveHlSdW50aW1lTWV0aG9kPigqZXhlYy0+aGVhcCgpKSkg
UHJveHlSdW50aW1lTWV0aG9kKGV4ZWMsIGdsb2JhbE9iamVjdCwgbmFtZSwgbGlzdCk7CisgICAg
ICAgIHJldHVybiB2YWxpZGF0ZUFsbG9jPFByb3h5UnVudGltZU1ldGhvZD4oZXhlYy0+Z2xvYmFs
RGF0YSgpLCBuZXcgKGFsbG9jYXRlQ2VsbDxQcm94eVJ1bnRpbWVNZXRob2Q+KCpleGVjLT5oZWFw
KCkpKSBQcm94eVJ1bnRpbWVNZXRob2QoZXhlYywgZ2xvYmFsT2JqZWN0LCBuYW1lLCBsaXN0KSk7
CiAgICAgfQogCiAgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTR2xvYmFs
RGF0YSYgZ2xvYmFsRGF0YSwgSlNWYWx1ZSBwcm90b3R5cGUpCkluZGV4OiBTb3VyY2UvV2ViS2l0
L21hYy9QbHVnaW5zL0hvc3RlZC9Qcm94eVJ1bnRpbWVPYmplY3QuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL0hvc3RlZC9Qcm94eVJ1bnRpbWVPYmplY3QuaAkocmV2
aXNpb24gOTE5MzkpCisrKyBTb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL0hvc3RlZC9Qcm94eVJ1
bnRpbWVPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtMzgsNyArMzgsNyBAQCBjbGFzcyBQcm94
eVJ1bnRpbWVPYmplY3QgOiBwdWJsaWMgSlNDOjpCCiBwdWJsaWM6CiAgICAgc3RhdGljIFByb3h5
UnVudGltZU9iamVjdCogY3JlYXRlKEpTQzo6RXhlY1N0YXRlKiBleGVjLCBKU0M6OkpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIFBhc3NSZWZQdHI8UHJveHlJbnN0YW5jZT4gaW5zdGFuY2Up
CiAgICAgewotICAgICAgICByZXR1cm4gbmV3IChKU0M6OmFsbG9jYXRlQ2VsbDxQcm94eVJ1bnRp
bWVPYmplY3Q+KCpleGVjLT5oZWFwKCkpKSBQcm94eVJ1bnRpbWVPYmplY3QoZXhlYywgZ2xvYmFs
T2JqZWN0LCBpbnN0YW5jZSk7CisgICAgICAgIHJldHVybiBKU0M6OnZhbGlkYXRlQWxsb2M8UHJv
eHlSdW50aW1lT2JqZWN0PihleGVjLT5nbG9iYWxEYXRhKCksIG5ldyAoSlNDOjphbGxvY2F0ZUNl
bGw8UHJveHlSdW50aW1lT2JqZWN0PigqZXhlYy0+aGVhcCgpKSkgUHJveHlSdW50aW1lT2JqZWN0
KGV4ZWMsIGdsb2JhbE9iamVjdCwgaW5zdGFuY2UpKTsKICAgICB9CiAKICAgICB2aXJ0dWFsIH5Q
cm94eVJ1bnRpbWVPYmplY3QoKTsK
</data>
<flag name="review"
          id="97532"
          type_id="1"
          status="-"
          setter="oliver"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>102790</attachid>
            <date>2011-08-03 09:41:39 -0700</date>
            <delta_ts>2011-08-03 17:09:32 -0700</delta_ts>
            <desc>Patch with allocation refactorings</desc>
            <filename>65288.patch</filename>
            <type>text/plain</type>
            <size>208222</size>
            <attacher name="Mark Hahnenberg">mhahnenberg</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gOTIyODMpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjAyIEBA
CisyMDExLTA4LTAzICBNYXJrIEhhaG5lbmJlcmcgIDxtaGFobmVuYmVyZ0BhcHBsZS5jb20+CisK
KyAgICAgICAgQWRkIGNoZWNrcyB0byBlbnN1cmUgYWxsb2NhdGlvbiBkb2VzIG5vdCB0YWtlIHBs
YWNlIGR1cmluZyBpbml0aWFsaXphdGlvbiBvZiBHQy1tYW5hZ2VkIG9iamVjdHMKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY1Mjg4CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkZWQgdGhlIHZhbGlkYXRl
QWxsb2MgY2FsbCB3aGljaCwgd2hlbiBHQ19WQUxJREFUSU9OIGlzIGVuYWJsZWQsIG1ha2VzIHN1
cmUgdGhhdCBubyBhbGxvY2F0aW9ucyAKKyAgICAgICAgb2NjdXIgd2hpbGUgd2UncmUgaW5pdGlh
bGl6aW5nIGFub3RoZXIgb2JqZWN0IGluIG9yZGVyIHRvIHByZXZlbnQgZ2FyYmFnZSBjb2xsZWN0
aW9uIGZyb20gCisgICAgICAgIG9jY3VycmluZyBkdXJpbmcgaW5pdGlhbGl6YXRpb24sIHdoaWNo
IGlzIHVuZGVmaW5lZC4gIEFsc28gcHVsbGVkIG91dCBhbnkgYWxsb2NhdGlvbiBkb25lIGluIAor
ICAgICAgICBjb25zdHJ1Y3RvcnMgY2FsbGVkIHdpdGggYWxsb2NhdGVDZWxsIGludG8gdGhlIHN0
YXRpYyBjcmVhdGUgbWV0aG9kIGluIGFsbCBwbGFjZXMgd2hlcmUgaXQgd2FzIAorICAgICAgICBw
b3NzaWJsZSB3aXRob3V0IG1ham9yIHJlc3RydWN0dXJpbmcuCisKKyAgICAgICAgKiBBUEkvSlND
YWxsYmFja0NvbnN0cnVjdG9yLmg6CisgICAgICAgIChKU0M6OkpTQ2FsbGJhY2tDb25zdHJ1Y3Rv
cjo6Y3JlYXRlKToKKyAgICAgICAgKiBBUEkvSlNDYWxsYmFja0Z1bmN0aW9uLmNwcDoKKyAgICAg
ICAgKEpTQzo6SlNDYWxsYmFja0Z1bmN0aW9uOjpKU0NhbGxiYWNrRnVuY3Rpb24pOgorICAgICAg
ICAqIEFQSS9KU0NhbGxiYWNrRnVuY3Rpb24uaDoKKyAgICAgICAgKEpTQzo6SlNDYWxsYmFja0Z1
bmN0aW9uOjpjcmVhdGUpOgorICAgICAgICAqIEFQSS9KU0NhbGxiYWNrT2JqZWN0Lmg6CisgICAg
ICAgIChKU0M6OkpTQ2FsbGJhY2tPYmplY3Q6OmNyZWF0ZSk6CisgICAgICAgICogSmF2YVNjcmlw
dENvcmUuSlNWQUxVRTY0b25seS5leHA6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUuZXhwOgor
ICAgICAgICAqIEphdmFTY3JpcHRDb3JlLm9yZGVyOgorICAgICAgICAqIGRlYnVnZ2VyL0RlYnVn
Z2VyQWN0aXZhdGlvbi5oOgorICAgICAgICAoSlNDOjpEZWJ1Z2dlckFjdGl2YXRpb246OmNyZWF0
ZSk6CisgICAgICAgICogaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwOgorICAgICAgICAoSlND
OjpJbnRlcnByZXRlcjo6dHJ5Q2FjaGVQdXRCeUlEKToKKyAgICAgICAgKiBqc2MuY3BwOgorICAg
ICAgICAoR2xvYmFsT2JqZWN0OjpjcmVhdGUpOgorICAgICAgICAoR2xvYmFsT2JqZWN0OjpHbG9i
YWxPYmplY3QpOgorICAgICAgICAqIHJ1bnRpbWUvQXJndW1lbnRzLmg6CisgICAgICAgIChKU0M6
OkFyZ3VtZW50czo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6QXJndW1lbnRzOjpjcmVhdGVOb1Bh
cmFtZXRlcnMpOgorICAgICAgICAqIHJ1bnRpbWUvQXJyYXlDb25zdHJ1Y3Rvci5jcHA6CisgICAg
ICAgIChKU0M6OkFycmF5Q29uc3RydWN0b3I6OkFycmF5Q29uc3RydWN0b3IpOgorICAgICAgICAq
IHJ1bnRpbWUvQXJyYXlDb25zdHJ1Y3Rvci5oOgorICAgICAgICAoSlNDOjpBcnJheUNvbnN0cnVj
dG9yOjpjcmVhdGUpOgorICAgICAgICAqIHJ1bnRpbWUvQXJyYXlQcm90b3R5cGUuaDoKKyAgICAg
ICAgKEpTQzo6QXJyYXlQcm90b3R5cGU6OmNyZWF0ZSk6CisgICAgICAgICogcnVudGltZS9Cb29s
ZWFuQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAoSlNDOjpCb29sZWFuQ29uc3RydWN0b3I6OkJv
b2xlYW5Db25zdHJ1Y3Rvcik6CisgICAgICAgICogcnVudGltZS9Cb29sZWFuQ29uc3RydWN0b3Iu
aDoKKyAgICAgICAgKEpTQzo6Qm9vbGVhbkNvbnN0cnVjdG9yOjpjcmVhdGUpOgorICAgICAgICAq
IHJ1bnRpbWUvQm9vbGVhbk9iamVjdC5oOgorICAgICAgICAoSlNDOjpCb29sZWFuT2JqZWN0Ojpj
cmVhdGUpOgorICAgICAgICAqIHJ1bnRpbWUvQm9vbGVhblByb3RvdHlwZS5oOgorICAgICAgICAo
SlNDOjpCb29sZWFuUHJvdG90eXBlOjpjcmVhdGUpOgorICAgICAgICAqIHJ1bnRpbWUvRGF0ZUNv
bnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6RGF0ZUNvbnN0cnVjdG9yOjpEYXRlQ29uc3Ry
dWN0b3IpOgorICAgICAgICAqIHJ1bnRpbWUvRGF0ZUNvbnN0cnVjdG9yLmg6CisgICAgICAgIChK
U0M6OkRhdGVDb25zdHJ1Y3Rvcjo6Y3JlYXRlKToKKyAgICAgICAgKiBydW50aW1lL0RhdGVJbnN0
YW5jZS5oOgorICAgICAgICAoSlNDOjpEYXRlSW5zdGFuY2U6OmNyZWF0ZSk6CisgICAgICAgICog
cnVudGltZS9EYXRlUHJvdG90eXBlLmg6CisgICAgICAgIChKU0M6OkRhdGVQcm90b3R5cGU6OmNy
ZWF0ZSk6CisgICAgICAgICogcnVudGltZS9FcnJvci5jcHA6CisgICAgICAgIChKU0M6OlN0cmlj
dE1vZGVUeXBlRXJyb3JGdW5jdGlvbjo6U3RyaWN0TW9kZVR5cGVFcnJvckZ1bmN0aW9uKToKKyAg
ICAgICAgKEpTQzo6U3RyaWN0TW9kZVR5cGVFcnJvckZ1bmN0aW9uOjpjcmVhdGUpOgorICAgICAg
ICAqIHJ1bnRpbWUvRXJyb3JDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0M6OkVycm9yQ29u
c3RydWN0b3I6OkVycm9yQ29uc3RydWN0b3IpOgorICAgICAgICAqIHJ1bnRpbWUvRXJyb3JDb25z
dHJ1Y3Rvci5oOgorICAgICAgICAoSlNDOjpFcnJvckNvbnN0cnVjdG9yOjpjcmVhdGUpOgorICAg
ICAgICAqIHJ1bnRpbWUvRXJyb3JJbnN0YW5jZS5jcHA6CisgICAgICAgIChKU0M6OkVycm9ySW5z
dGFuY2U6OkVycm9ySW5zdGFuY2UpOgorICAgICAgICAoSlNDOjpFcnJvckluc3RhbmNlOjpjcmVh
dGUpOgorICAgICAgICAqIHJ1bnRpbWUvRXJyb3JJbnN0YW5jZS5oOgorICAgICAgICAqIHJ1bnRp
bWUvRXJyb3JQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpFcnJvclByb3RvdHlwZTo6RXJy
b3JQcm90b3R5cGUpOgorICAgICAgICAqIHJ1bnRpbWUvRXJyb3JQcm90b3R5cGUuaDoKKyAgICAg
ICAgKEpTQzo6RXJyb3JQcm90b3R5cGU6OmNyZWF0ZSk6CisgICAgICAgICogcnVudGltZS9FeGNl
cHRpb25IZWxwZXJzLmNwcDoKKyAgICAgICAgKEpTQzo6SW50ZXJydXB0ZWRFeGVjdXRpb25FcnJv
cjo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6VGVybWluYXRlZEV4ZWN1dGlvbkVycm9yOjpjcmVh
dGUpOgorICAgICAgICAqIHJ1bnRpbWUvRXhlY3V0YWJsZS5jcHA6CisgICAgICAgIChKU0M6OkZ1
bmN0aW9uRXhlY3V0YWJsZTo6RnVuY3Rpb25FeGVjdXRhYmxlKToKKyAgICAgICAgKiBydW50aW1l
L0V4ZWN1dGFibGUuaDoKKyAgICAgICAgKEpTQzo6RXhlY3V0YWJsZUJhc2U6OmNyZWF0ZSk6Cisg
ICAgICAgIChKU0M6Ok5hdGl2ZUV4ZWN1dGFibGU6OmNyZWF0ZSk6CisgICAgICAgIChKU0M6OkV2
YWxFeGVjdXRhYmxlOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpQcm9ncmFtRXhlY3V0YWJsZTo6
Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25FeGVjdXRhYmxlOjpjcmVhdGUpOgorICAg
ICAgICAqIHJ1bnRpbWUvRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0M6OkZ1
bmN0aW9uQ29uc3RydWN0b3I6OkZ1bmN0aW9uQ29uc3RydWN0b3IpOgorICAgICAgICAqIHJ1bnRp
bWUvRnVuY3Rpb25Db25zdHJ1Y3Rvci5oOgorICAgICAgICAoSlNDOjpGdW5jdGlvbkNvbnN0cnVj
dG9yOjpjcmVhdGUpOgorICAgICAgICAqIHJ1bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUuY3BwOgor
ICAgICAgICAoSlNDOjpGdW5jdGlvblByb3RvdHlwZTo6RnVuY3Rpb25Qcm90b3R5cGUpOgorICAg
ICAgICAqIHJ1bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUuaDoKKyAgICAgICAgKEpTQzo6RnVuY3Rp
b25Qcm90b3R5cGU6OmNyZWF0ZSk6CisgICAgICAgICogcnVudGltZS9HZXR0ZXJTZXR0ZXIuaDoK
KyAgICAgICAgKEpTQzo6R2V0dGVyU2V0dGVyOjpjcmVhdGUpOgorICAgICAgICAqIHJ1bnRpbWUv
SW50ZXJuYWxGdW5jdGlvbi5jcHA6CisgICAgICAgIChKU0M6OkludGVybmFsRnVuY3Rpb246Oklu
dGVybmFsRnVuY3Rpb24pOgorICAgICAgICAqIHJ1bnRpbWUvSW50ZXJuYWxGdW5jdGlvbi5oOgor
ICAgICAgICAoSlNDOjpJbnRlcm5hbEZ1bmN0aW9uOjppbml0UHJvcGVydGllcyk6CisgICAgICAg
ICogcnVudGltZS9KU0FQSVZhbHVlV3JhcHBlci5oOgorICAgICAgICAoSlNDOjpKU0FQSVZhbHVl
V3JhcHBlcjo6Y3JlYXRlKToKKyAgICAgICAgKiBydW50aW1lL0pTQWN0aXZhdGlvbi5oOgorICAg
ICAgICAoSlNDOjpKU0FjdGl2YXRpb246OmNyZWF0ZSk6CisgICAgICAgICogcnVudGltZS9KU0Fy
cmF5Lmg6CisgICAgICAgIChKU0M6OkpTQXJyYXk6OmNyZWF0ZSk6CisgICAgICAgICogcnVudGlt
ZS9KU0J5dGVBcnJheS5jcHA6CisgICAgICAgIChKU0M6OkpTQnl0ZUFycmF5OjpKU0J5dGVBcnJh
eSk6CisgICAgICAgIChKU0M6OkpTQnl0ZUFycmF5OjpjcmVhdGUpOgorICAgICAgICAqIHJ1bnRp
bWUvSlNDZWxsLmg6CisgICAgICAgIChKU0M6OkpTQ2VsbDo6YWxsb2NhdGVDZWxsKToKKyAgICAg
ICAgKEpTQzo6SlNDZWxsOjp2YWxpZGF0ZUFsbG9jKToKKyAgICAgICAgKiBydW50aW1lL0pTRnVu
Y3Rpb24uY3BwOgorICAgICAgICAoSlNDOjpKU0Z1bmN0aW9uOjpKU0Z1bmN0aW9uKToKKyAgICAg
ICAgKEpTQzo6SlNGdW5jdGlvbjo6Y3JlYXRlKToKKyAgICAgICAgKiBydW50aW1lL0pTRnVuY3Rp
b24uaDoKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsRGF0YS5jcHA6CisgICAgICAgIChKU0M6
OkpTR2xvYmFsRGF0YTo6SlNHbG9iYWxEYXRhKToKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFs
RGF0YS5oOgorICAgICAgICAoSlNDOjpKU0dsb2JhbERhdGE6OmlzSW5pdGlhbGl6aW5nT2JqZWN0
KToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxEYXRhOjpzZXRJbml0aWFsaXppbmdPYmplY3QpOgor
ICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuaDoKKyAgICAgICAgKEpTQzo6SlNHbG9i
YWxPYmplY3Q6OmNyZWF0ZSk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjpKU0dsb2Jh
bE9iamVjdCk6CisgICAgICAgICogcnVudGltZS9KU05vdEFuT2JqZWN0Lmg6CisgICAgICAgIChK
U0M6OkpTTm90QW5PYmplY3Q6OmNyZWF0ZSk6CisgICAgICAgICogcnVudGltZS9KU09OT2JqZWN0
Lmg6CisgICAgICAgIChKU0M6OkpTT05PYmplY3Q6OmNyZWF0ZSk6CisgICAgICAgICogcnVudGlt
ZS9KU09iamVjdC5oOgorICAgICAgICAoSlNDOjpKU0ZpbmFsT2JqZWN0OjpjcmVhdGUpOgorICAg
ICAgICAqIHJ1bnRpbWUvSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5jcHA6CisgICAgICAgIChKU0M6
OkpTUHJvcGVydHlOYW1lSXRlcmF0b3I6OkpTUHJvcGVydHlOYW1lSXRlcmF0b3IpOgorICAgICAg
ICAoSlNDOjpKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yOjpjcmVhdGUpOgorICAgICAgICAqIHJ1bnRp
bWUvSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oOgorICAgICAgICAoSlNDOjpKU1Byb3BlcnR5TmFt
ZUl0ZXJhdG9yOjpjcmVhdGUpOgorICAgICAgICAqIHJ1bnRpbWUvSlNTdGF0aWNTY29wZU9iamVj
dC5oOgorICAgICAgICAoSlNDOjpKU1N0YXRpY1Njb3BlT2JqZWN0OjpjcmVhdGUpOgorICAgICAg
ICAqIHJ1bnRpbWUvSlNTdHJpbmcuY3BwOgorICAgICAgICAoSlNDOjpTdHJpbmdPYmplY3Q6OmNy
ZWF0ZSk6CisgICAgICAgICogcnVudGltZS9KU1N0cmluZy5oOgorICAgICAgICAoSlNDOjpSb3Bl
QnVpbGRlcjo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6Um9wZUJ1aWxkZXI6OmNyZWF0ZUhhc090
aGVyT3duZXIpOgorICAgICAgICAoSlNDOjpSb3BlQnVpbGRlcjo6YXBwZW5kVmFsdWVJbkNvbnN0
cnVjdEFuZEluY3JlbWVudExlbmd0aCk6CisgICAgICAgICogcnVudGltZS9NYXRoT2JqZWN0Lmg6
CisgICAgICAgIChKU0M6Ok1hdGhPYmplY3Q6OmNyZWF0ZSk6CisgICAgICAgICogcnVudGltZS9O
YXRpdmVFcnJvckNvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6TmF0aXZlRXJyb3JDb25z
dHJ1Y3Rvcjo6TmF0aXZlRXJyb3JDb25zdHJ1Y3Rvcik6CisgICAgICAgIChKU0M6Ok5hdGl2ZUVy
cm9yQ29uc3RydWN0b3I6OmNyZWF0ZSk6CisgICAgICAgICogcnVudGltZS9OYXRpdmVFcnJvckNv
bnN0cnVjdG9yLmg6CisgICAgICAgICogcnVudGltZS9OYXRpdmVFcnJvclByb3RvdHlwZS5jcHA6
CisgICAgICAgIChKU0M6Ok5hdGl2ZUVycm9yUHJvdG90eXBlOjpOYXRpdmVFcnJvclByb3RvdHlw
ZSk6CisgICAgICAgICogcnVudGltZS9OYXRpdmVFcnJvclByb3RvdHlwZS5oOgorICAgICAgICAo
SlNDOjpOYXRpdmVFcnJvclByb3RvdHlwZTo6Y3JlYXRlKToKKyAgICAgICAgKiBydW50aW1lL051
bWJlckNvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6TnVtYmVyQ29uc3RydWN0b3I6Ok51
bWJlckNvbnN0cnVjdG9yKToKKyAgICAgICAgKiBydW50aW1lL051bWJlckNvbnN0cnVjdG9yLmg6
CisgICAgICAgIChKU0M6Ok51bWJlckNvbnN0cnVjdG9yOjpjcmVhdGUpOgorICAgICAgICAqIHJ1
bnRpbWUvTnVtYmVyT2JqZWN0Lmg6CisgICAgICAgIChKU0M6Ok51bWJlck9iamVjdDo6Y3JlYXRl
KToKKyAgICAgICAgKiBydW50aW1lL051bWJlclByb3RvdHlwZS5oOgorICAgICAgICAoSlNDOjpO
dW1iZXJQcm90b3R5cGU6OmNyZWF0ZSk6CisgICAgICAgICogcnVudGltZS9PYmplY3RDb25zdHJ1
Y3Rvci5jcHA6CisgICAgICAgIChKU0M6Ok9iamVjdENvbnN0cnVjdG9yOjpPYmplY3RDb25zdHJ1
Y3Rvcik6CisgICAgICAgICogcnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5oOgorICAgICAgICAo
SlNDOjpPYmplY3RDb25zdHJ1Y3Rvcjo6Y3JlYXRlKToKKyAgICAgICAgKiBydW50aW1lL09iamVj
dFByb3RvdHlwZS5oOgorICAgICAgICAoSlNDOjpPYmplY3RQcm90b3R5cGU6OmNyZWF0ZSk6Cisg
ICAgICAgICogcnVudGltZS9SZWdFeHAuY3BwOgorICAgICAgICAoSlNDOjpSZWdFeHA6OmNyZWF0
ZVdpdGhvdXRDYWNoaW5nKToKKyAgICAgICAgKiBydW50aW1lL1JlZ0V4cENvbnN0cnVjdG9yLmNw
cDoKKyAgICAgICAgKEpTQzo6UmVnRXhwQ29uc3RydWN0b3I6OlJlZ0V4cENvbnN0cnVjdG9yKToK
KyAgICAgICAgKiBydW50aW1lL1JlZ0V4cENvbnN0cnVjdG9yLmg6CisgICAgICAgIChKU0M6OlJl
Z0V4cENvbnN0cnVjdG9yOjpjcmVhdGUpOgorICAgICAgICAqIHJ1bnRpbWUvUmVnRXhwTWF0Y2hl
c0FycmF5Lmg6CisgICAgICAgIChKU0M6OlJlZ0V4cE1hdGNoZXNBcnJheTo6Y3JlYXRlKToKKyAg
ICAgICAgKiBydW50aW1lL1JlZ0V4cE9iamVjdC5oOgorICAgICAgICAoSlNDOjpSZWdFeHBPYmpl
Y3Q6OmNyZWF0ZSk6CisgICAgICAgICogcnVudGltZS9SZWdFeHBQcm90b3R5cGUuaDoKKyAgICAg
ICAgKEpTQzo6UmVnRXhwUHJvdG90eXBlOjpjcmVhdGUpOgorICAgICAgICAqIHJ1bnRpbWUvU2Nv
cGVDaGFpbi5oOgorICAgICAgICAoSlNDOjpTY29wZUNoYWluTm9kZTo6Y3JlYXRlKToKKyAgICAg
ICAgKiBydW50aW1lL1N0cmljdEV2YWxBY3RpdmF0aW9uLmg6CisgICAgICAgIChKU0M6OlN0cmlj
dEV2YWxBY3RpdmF0aW9uOjpjcmVhdGUpOgorICAgICAgICAqIHJ1bnRpbWUvU3RyaW5nQ29uc3Ry
dWN0b3IuY3BwOgorICAgICAgICAoSlNDOjpTdHJpbmdDb25zdHJ1Y3Rvcjo6U3RyaW5nQ29uc3Ry
dWN0b3IpOgorICAgICAgICAqIHJ1bnRpbWUvU3RyaW5nQ29uc3RydWN0b3IuaDoKKyAgICAgICAg
KEpTQzo6U3RyaW5nQ29uc3RydWN0b3I6OmNyZWF0ZSk6CisgICAgICAgICogcnVudGltZS9TdHJp
bmdPYmplY3QuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvU3RyaW5nT2JqZWN0Lmg6CisgICAgICAg
IChKU0M6OlN0cmluZ09iamVjdDo6Y3JlYXRlKToKKyAgICAgICAgKiBydW50aW1lL1N0cmluZ09i
amVjdFRoYXRNYXNxdWVyYWRlc0FzVW5kZWZpbmVkLmg6CisgICAgICAgIChKU0M6OlN0cmluZ09i
amVjdFRoYXRNYXNxdWVyYWRlc0FzVW5kZWZpbmVkOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpT
dHJpbmdPYmplY3RUaGF0TWFzcXVlcmFkZXNBc1VuZGVmaW5lZDo6U3RyaW5nT2JqZWN0VGhhdE1h
c3F1ZXJhZGVzQXNVbmRlZmluZWQpOgorICAgICAgICAqIHJ1bnRpbWUvU3RyaW5nUHJvdG90eXBl
LmNwcDoKKyAgICAgICAgKEpTQzo6U3RyaW5nUHJvdG90eXBlOjpTdHJpbmdQcm90b3R5cGUpOgor
ICAgICAgICAqIHJ1bnRpbWUvU3RyaW5nUHJvdG90eXBlLmg6CisgICAgICAgIChKU0M6OlN0cmlu
Z1Byb3RvdHlwZTo6Y3JlYXRlKToKKyAgICAgICAgKiBydW50aW1lL1N0cnVjdHVyZS5oOgorICAg
ICAgICAoSlNDOjpTdHJ1Y3R1cmU6OmNyZWF0ZSk6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6
Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKiBydW50aW1lL1N0cnVjdHVyZUNoYWluLmg6Cisg
ICAgICAgIChKU0M6OlN0cnVjdHVyZUNoYWluOjpjcmVhdGUpOgorCiAyMDExLTA4LTAzICBDYXJs
b3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBbR1RLXSBS
ZW9yZ2FuaXplIHBrZy1jb25maWcgZmlsZXMKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9K
YXZhU2NyaXB0Q29yZS5KU1ZBTFVFNjRvbmx5LmV4cAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuSlNWQUxVRTY0b25seS5leHAJKHJldmlzaW9uIDky
MjgzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLkpTVkFMVUU2NG9u
bHkuZXhwCSh3b3JraW5nIGNvcHkpCkBAIC0xICswLDAgQEAKLV9fWk4zSlNDMTBKU0Z1bmN0aW9u
QzFFUE5TXzlFeGVjU3RhdGVFUE5TXzE0SlNHbG9iYWxPYmplY3RFUE5TXzlTdHJ1Y3R1cmVFaVJL
TlNfMTBJZGVudGlmaWVyRVBGUHZTMl9FCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2
YVNjcmlwdENvcmUuZXhwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZh
U2NyaXB0Q29yZS5leHAJKHJldmlzaW9uIDkyMjgzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L0phdmFTY3JpcHRDb3JlLmV4cAkod29ya2luZyBjb3B5KQpAQCAtMTExLDYgKzExMSw3IEBAIF9f
Wk4zSlNDMTBJZGVudGlmaWVyNGZyb21FUE5TXzlFeGVjU3RhdGUKIF9fWk4zSlNDMTBJZGVudGlm
aWVyNWVxdWFsRVBLTjNXVEYxMFN0cmluZ0ltcGxFUEtjCiBfX1pOM0pTQzEwSWRlbnRpZmllcjh0
b1VJbnQzMkVSS05TXzdVU3RyaW5nRVJiCiBfX1pOM0pTQzEwSlNGdW5jdGlvbjRuYW1lRVBOU185
RXhlY1N0YXRlRQorX19aTjNKU0MxMEpTRnVuY3Rpb242Y3JlYXRlRVBOU185RXhlY1N0YXRlRVBO
U18xNEpTR2xvYmFsT2JqZWN0RVBOU185U3RydWN0dXJlRWlSS05TXzEwSWRlbnRpZmllckVQRlB2
UzJfRQogX19aTjNKU0MxMEpTRnVuY3Rpb242c19pbmZvRQogX19aTjNKU0MxMHRocm93RXJyb3JF
UE5TXzlFeGVjU3RhdGVFTlNfN0pTVmFsdWVFCiBfX1pOM0pTQzEwdGhyb3dFcnJvckVQTlNfOUV4
ZWNTdGF0ZUVQTlNfOEpTT2JqZWN0RQpAQCAtMTUxLDcgKzE1Miw3IEBAIF9fWk4zSlNDMTJTdHJp
bmdPYmplY3QxOWdldE93blByb3BlcnR5TmEKIF9fWk4zSlNDMTJTdHJpbmdPYmplY3QyNGdldE93
blByb3BlcnR5RGVzY3JpcHRvckVQTlNfOUV4ZWNTdGF0ZUVSS05TXzEwSWRlbnRpZmllckVSTlNf
MThQcm9wZXJ0eURlc2NyaXB0b3JFCiBfX1pOM0pTQzEyU3RyaW5nT2JqZWN0M3B1dEVQTlNfOUV4
ZWNTdGF0ZUVSS05TXzEwSWRlbnRpZmllckVOU183SlNWYWx1ZUVSTlNfMTVQdXRQcm9wZXJ0eVNs
b3RFCiBfX1pOM0pTQzEyU3RyaW5nT2JqZWN0NnNfaW5mb0UKLV9fWk4zSlNDMTJTdHJpbmdPYmpl
Y3RDMkVQTlNfOUV4ZWNTdGF0ZUVQTlNfOVN0cnVjdHVyZUVSS05TXzdVU3RyaW5nRQorX19aTjNK
U0MxMlN0cmluZ09iamVjdEMyRVJOU18xMkpTR2xvYmFsRGF0YUVQTlNfOVN0cnVjdHVyZUVQTlNf
OEpTU3RyaW5nRQogX19aTjNKU0MxM1NhbXBsaW5nRmxhZ3M0c3RvcEV2CiBfX1pOM0pTQzEzU2Ft
cGxpbmdGbGFnczVzdGFydEV2CiBfX1pOM0pTQzEzU2FtcGxpbmdGbGFnczdzX2ZsYWdzRQpAQCAt
MTgzLDcgKzE4NCw3IEBAIF9fWk4zSlNDMTVjcmVhdGVUeXBlRXJyb3JFUE5TXzlFeGVjU3RhdGUK
IF9fWk4zSlNDMTZJbnRlcm5hbEZ1bmN0aW9uMTJ2dGFibGVBbmNob3JFdgogX19aTjNKU0MxNklu
dGVybmFsRnVuY3Rpb240bmFtZUVQTlNfOUV4ZWNTdGF0ZUUKIF9fWk4zSlNDMTZJbnRlcm5hbEZ1
bmN0aW9uNnNfaW5mb0UKLV9fWk4zSlNDMTZJbnRlcm5hbEZ1bmN0aW9uQzJFUE5TXzEySlNHbG9i
YWxEYXRhRVBOU18xNEpTR2xvYmFsT2JqZWN0RVBOU185U3RydWN0dXJlRVJLTlNfMTBJZGVudGlm
aWVyRQorX19aTjNKU0MxNkludGVybmFsRnVuY3Rpb25DMkVQTlNfMTRKU0dsb2JhbE9iamVjdEVQ
TlNfOVN0cnVjdHVyZUUKIF9fWk4zSlNDMTZKU1ZhcmlhYmxlT2JqZWN0MTRkZWxldGVQcm9wZXJ0
eUVQTlNfOUV4ZWNTdGF0ZUVSS05TXzEwSWRlbnRpZmllckUKIF9fWk4zSlNDMTZKU1ZhcmlhYmxl
T2JqZWN0MTRzeW1ib2xUYWJsZUdldEVSS05TXzEwSWRlbnRpZmllckVSTlNfMThQcm9wZXJ0eURl
c2NyaXB0b3JFCiBfX1pOM0pTQzE2SlNWYXJpYWJsZU9iamVjdDE5Z2V0T3duUHJvcGVydHlOYW1l
c0VQTlNfOUV4ZWNTdGF0ZUVSTlNfMTdQcm9wZXJ0eU5hbWVBcnJheUVOU18xNUVudW1lcmF0aW9u
TW9kZUUKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5vcmRlcgo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUub3JkZXIJ
KHJldmlzaW9uIDkyMjgzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3Jl
Lm9yZGVyCSh3b3JraW5nIGNvcHkpCkBAIC0yMjUsNyArMjI1LDYgQEAgX19aTjNKU0MyNFN0cnVj
dHVyZVRyYW5zaXRpb25UYWJsZTNhZGRFUgogX19aTjNKU0M5U3RydWN0dXJlMjhhZGRQcm9wZXJ0
eVdpdGhvdXRUcmFuc2l0aW9uRVJOU18xMkpTR2xvYmFsRGF0YUVSS05TXzEwSWRlbnRpZmllckVq
UE5TXzZKU0NlbGxFCiBfX1pOM0pTQzhKU09iamVjdDIzYWxsb2NhdGVQcm9wZXJ0eVN0b3JhZ2VF
bW0KIF9fWk4zSlNDMTdGdW5jdGlvblByb3RvdHlwZTIxYWRkRnVuY3Rpb25Qcm9wZXJ0aWVzRVBO
U185RXhlY1N0YXRlRVBOU18xNEpTR2xvYmFsT2JqZWN0RVBOU185U3RydWN0dXJlRVBQTlNfMTBK
U0Z1bmN0aW9uRVM5XwotX19aTjNKU0MxMEpTRnVuY3Rpb25DMUVQTlNfOUV4ZWNTdGF0ZUVQTlNf
MTRKU0dsb2JhbE9iamVjdEVQTlNfOVN0cnVjdHVyZUVpUktOU18xMElkZW50aWZpZXJFUEZQdlMy
X0UKIF9fWk4zSlNDMTBKU0Z1bmN0aW9uQzJFUE5TXzlFeGVjU3RhdGVFUE5TXzE0SlNHbG9iYWxP
YmplY3RFUE5TXzlTdHJ1Y3R1cmVFaVJLTlNfMTBJZGVudGlmaWVyRVBGUHZTMl9FCiBfX1pOM0pT
QzEySlNHbG9iYWxEYXRhMTVnZXRIb3N0RnVuY3Rpb25FUEZQdlBOU185RXhlY1N0YXRlRUUKIF9f
Wk4zSlNDOUpJVFRodW5rczE2aG9zdEZ1bmN0aW9uU3R1YkVQTlNfMTJKU0dsb2JhbERhdGFFUEZQ
dlBOU185RXhlY1N0YXRlRUUKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCShyZXZpc2lvbiA5MjI4
MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
NDUsNDQgKzE0NSw0NiBAQCBsb25nIFN0b3BXYXRjaDo6Z2V0RWxhcHNlZE1TKCkKIAogY2xhc3Mg
R2xvYmFsT2JqZWN0IDogcHVibGljIEpTR2xvYmFsT2JqZWN0IHsKIHByaXZhdGU6Ci0gICAgR2xv
YmFsT2JqZWN0KEpTR2xvYmFsRGF0YSYsIFN0cnVjdHVyZSosIGNvbnN0IFZlY3RvcjxVU3RyaW5n
PiYgYXJndW1lbnRzKTsKKyAgICBHbG9iYWxPYmplY3QoSlNHbG9iYWxEYXRhJiwgU3RydWN0dXJl
Kik7CiAKIHB1YmxpYzoKICAgICBzdGF0aWMgR2xvYmFsT2JqZWN0KiBjcmVhdGUoSlNHbG9iYWxE
YXRhJiBnbG9iYWxEYXRhLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgY29uc3QgVmVjdG9yPFVTdHJp
bmc+JiBhcmd1bWVudHMpCiAgICAgewotICAgICAgICByZXR1cm4gbmV3IChhbGxvY2F0ZUNlbGw8
R2xvYmFsT2JqZWN0PihnbG9iYWxEYXRhLmhlYXApKSBHbG9iYWxPYmplY3QoZ2xvYmFsRGF0YSwg
c3RydWN0dXJlLCBhcmd1bWVudHMpOworICAgICAgICBHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCA9IHZhbGlkYXRlQWxsb2M8R2xvYmFsT2JqZWN0PihnbG9iYWxEYXRhLCBuZXcgKGFsbG9jYXRl
Q2VsbDxHbG9iYWxPYmplY3Q+KGdsb2JhbERhdGEuaGVhcCkpIEdsb2JhbE9iamVjdChnbG9iYWxE
YXRhLCBzdHJ1Y3R1cmUpKTsKKyAgICAgICAgZ2xvYmFsT2JqZWN0LT5pbml0KGdsb2JhbE9iamVj
dCk7CisgICAgICAgIGdsb2JhbE9iamVjdC0+cHV0RGlyZWN0RnVuY3Rpb24oZ2xvYmFsT2JqZWN0
LT5nbG9iYWxFeGVjKCksIEpTRnVuY3Rpb246OmNyZWF0ZShnbG9iYWxPYmplY3QtPmdsb2JhbEV4
ZWMoKSwgZ2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QtPmZ1bmN0aW9uU3RydWN0dXJlKCksIDEs
IElkZW50aWZpZXIoZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCksICJkZWJ1ZyIpLCBmdW5jdGlv
bkRlYnVnKSk7CisgICAgICAgIGdsb2JhbE9iamVjdC0+cHV0RGlyZWN0RnVuY3Rpb24oZ2xvYmFs
T2JqZWN0LT5nbG9iYWxFeGVjKCksIEpTRnVuY3Rpb246OmNyZWF0ZShnbG9iYWxPYmplY3QtPmds
b2JhbEV4ZWMoKSwgZ2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QtPmZ1bmN0aW9uU3RydWN0dXJl
KCksIDEsIElkZW50aWZpZXIoZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCksICJwcmludCIpLCBm
dW5jdGlvblByaW50KSk7CisgICAgICAgIGdsb2JhbE9iamVjdC0+cHV0RGlyZWN0RnVuY3Rpb24o
Z2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCksIEpTRnVuY3Rpb246OmNyZWF0ZShnbG9iYWxPYmpl
Y3QtPmdsb2JhbEV4ZWMoKSwgZ2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QtPmZ1bmN0aW9uU3Ry
dWN0dXJlKCksIDAsIElkZW50aWZpZXIoZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCksICJxdWl0
IiksIGZ1bmN0aW9uUXVpdCkpOworICAgICAgICBnbG9iYWxPYmplY3QtPnB1dERpcmVjdEZ1bmN0
aW9uKGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpLCBKU0Z1bmN0aW9uOjpjcmVhdGUoZ2xvYmFs
T2JqZWN0LT5nbG9iYWxFeGVjKCksIGdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LT5mdW5jdGlv
blN0cnVjdHVyZSgpLCAwLCBJZGVudGlmaWVyKGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpLCAi
Z2MiKSwgZnVuY3Rpb25HQykpOworI2lmbmRlZiBOREVCVUcKKyAgICAgICAgZ2xvYmFsT2JqZWN0
LT5wdXREaXJlY3RGdW5jdGlvbihnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSwgSlNGdW5jdGlv
bjo6Y3JlYXRlKGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpLCBnbG9iYWxPYmplY3QsIGdsb2Jh
bE9iamVjdC0+ZnVuY3Rpb25TdHJ1Y3R1cmUoKSwgMCwgSWRlbnRpZmllcihnbG9iYWxPYmplY3Qt
Pmdsb2JhbEV4ZWMoKSwgInJlbGVhc2VFeGVjdXRhYmxlTWVtb3J5IiksIGZ1bmN0aW9uUmVsZWFz
ZUV4ZWN1dGFibGVNZW1vcnkpKTsKKyNlbmRpZgorICAgICAgICBnbG9iYWxPYmplY3QtPnB1dERp
cmVjdEZ1bmN0aW9uKGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpLCBKU0Z1bmN0aW9uOjpjcmVh
dGUoZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCksIGdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0
LT5mdW5jdGlvblN0cnVjdHVyZSgpLCAxLCBJZGVudGlmaWVyKGdsb2JhbE9iamVjdC0+Z2xvYmFs
RXhlYygpLCAidmVyc2lvbiIpLCBmdW5jdGlvblZlcnNpb24pKTsKKyAgICAgICAgZ2xvYmFsT2Jq
ZWN0LT5wdXREaXJlY3RGdW5jdGlvbihnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSwgSlNGdW5j
dGlvbjo6Y3JlYXRlKGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpLCBnbG9iYWxPYmplY3QsIGds
b2JhbE9iamVjdC0+ZnVuY3Rpb25TdHJ1Y3R1cmUoKSwgMSwgSWRlbnRpZmllcihnbG9iYWxPYmpl
Y3QtPmdsb2JhbEV4ZWMoKSwgInJ1biIpLCBmdW5jdGlvblJ1bikpOworICAgICAgICBnbG9iYWxP
YmplY3QtPnB1dERpcmVjdEZ1bmN0aW9uKGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpLCBKU0Z1
bmN0aW9uOjpjcmVhdGUoZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCksIGdsb2JhbE9iamVjdCwg
Z2xvYmFsT2JqZWN0LT5mdW5jdGlvblN0cnVjdHVyZSgpLCAxLCBJZGVudGlmaWVyKGdsb2JhbE9i
amVjdC0+Z2xvYmFsRXhlYygpLCAibG9hZCIpLCBmdW5jdGlvbkxvYWQpKTsKKyAgICAgICAgZ2xv
YmFsT2JqZWN0LT5wdXREaXJlY3RGdW5jdGlvbihnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSwg
SlNGdW5jdGlvbjo6Y3JlYXRlKGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpLCBnbG9iYWxPYmpl
Y3QsIGdsb2JhbE9iamVjdC0+ZnVuY3Rpb25TdHJ1Y3R1cmUoKSwgMSwgSWRlbnRpZmllcihnbG9i
YWxPYmplY3QtPmdsb2JhbEV4ZWMoKSwgImNoZWNrU3ludGF4IiksIGZ1bmN0aW9uQ2hlY2tTeW50
YXgpKTsKKyAgICAgICAgZ2xvYmFsT2JqZWN0LT5wdXREaXJlY3RGdW5jdGlvbihnbG9iYWxPYmpl
Y3QtPmdsb2JhbEV4ZWMoKSwgSlNGdW5jdGlvbjo6Y3JlYXRlKGdsb2JhbE9iamVjdC0+Z2xvYmFs
RXhlYygpLCBnbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdC0+ZnVuY3Rpb25TdHJ1Y3R1cmUoKSwg
MCwgSWRlbnRpZmllcihnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSwgInJlYWRsaW5lIiksIGZ1
bmN0aW9uUmVhZGxpbmUpKTsKKyAgICAgICAgZ2xvYmFsT2JqZWN0LT5wdXREaXJlY3RGdW5jdGlv
bihnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSwgSlNGdW5jdGlvbjo6Y3JlYXRlKGdsb2JhbE9i
amVjdC0+Z2xvYmFsRXhlYygpLCBnbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdC0+ZnVuY3Rpb25T
dHJ1Y3R1cmUoKSwgMCwgSWRlbnRpZmllcihnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSwgInBy
ZWNpc2VUaW1lIiksIGZ1bmN0aW9uUHJlY2lzZVRpbWUpKTsKKworI2lmIEVOQUJMRShTQU1QTElO
R19GTEFHUykKKyAgICAgICAgZ2xvYmFsT2JqZWN0LT5wdXREaXJlY3RGdW5jdGlvbihnbG9iYWxP
YmplY3QtPmdsb2JhbEV4ZWMoKSwgSlNGdW5jdGlvbjo6Y3JlYXRlKGdsb2JhbE9iamVjdC0+Z2xv
YmFsRXhlYygpLCBnbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdC0+ZnVuY3Rpb25TdHJ1Y3R1cmUo
KSwgMSwgSWRlbnRpZmllcihnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSwgInNldFNhbXBsaW5n
RmxhZ3MiKSwgZnVuY3Rpb25TZXRTYW1wbGluZ0ZsYWdzKSk7CisgICAgICAgIGdsb2JhbE9iamVj
dC0+cHV0RGlyZWN0RnVuY3Rpb24oZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCksIEpTRnVuY3Rp
b246OmNyZWF0ZShnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSwgZ2xvYmFsT2JqZWN0LCBnbG9i
YWxPYmplY3QtPmZ1bmN0aW9uU3RydWN0dXJlKCksIDEsIElkZW50aWZpZXIoZ2xvYmFsT2JqZWN0
LT5nbG9iYWxFeGVjKCksICJjbGVhclNhbXBsaW5nRmxhZ3MiKSwgZnVuY3Rpb25DbGVhclNhbXBs
aW5nRmxhZ3MpKTsKKyNlbmRpZgorCisgICAgICAgIEpTT2JqZWN0KiBhcnJheSA9IGNvbnN0cnVj
dEVtcHR5QXJyYXkoZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCkpOworICAgICAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IGFyZ3VtZW50cy5zaXplKCk7ICsraSkKKyAgICAgICAgICAgIGFycmF5
LT5wdXQoZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCksIGksIGpzU3RyaW5nKGdsb2JhbE9iamVj
dC0+Z2xvYmFsRXhlYygpLCBhcmd1bWVudHNbaV0pKTsKKyAgICAgICAgZ2xvYmFsT2JqZWN0LT5w
dXREaXJlY3QoZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCktPmdsb2JhbERhdGEoKSwgSWRlbnRp
ZmllcihnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSwgImFyZ3VtZW50cyIpLCBhcnJheSk7Cisg
ICAgICAgIHJldHVybiBnbG9iYWxPYmplY3Q7CiAgICAgfQogICAgIHZpcnR1YWwgVVN0cmluZyBj
bGFzc05hbWUoKSBjb25zdCB7IHJldHVybiAiZ2xvYmFsIjsgfQogfTsKIENPTVBJTEVfQVNTRVJU
KCFJc0ludGVnZXI8R2xvYmFsT2JqZWN0Pjo6dmFsdWUsIFdURl9Jc0ludGVnZXJfR2xvYmFsT2Jq
ZWN0X2ZhbHNlKTsKIEFTU0VSVF9DTEFTU19GSVRTX0lOX0NFTEwoR2xvYmFsT2JqZWN0KTsKIAot
R2xvYmFsT2JqZWN0OjpHbG9iYWxPYmplY3QoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSwgY29uc3QgVmVjdG9yPFVTdHJpbmc+JiBhcmd1bWVudHMpCitHbG9i
YWxPYmplY3Q6Okdsb2JhbE9iamVjdChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFN0cnVjdHVy
ZSogc3RydWN0dXJlKQogICAgIDogSlNHbG9iYWxPYmplY3QoZ2xvYmFsRGF0YSwgc3RydWN0dXJl
KQogewotICAgIHB1dERpcmVjdEZ1bmN0aW9uKGdsb2JhbEV4ZWMoKSwgSlNGdW5jdGlvbjo6Y3Jl
YXRlKGdsb2JhbEV4ZWMoKSwgdGhpcywgZnVuY3Rpb25TdHJ1Y3R1cmUoKSwgMSwgSWRlbnRpZmll
cihnbG9iYWxFeGVjKCksICJkZWJ1ZyIpLCBmdW5jdGlvbkRlYnVnKSk7Ci0gICAgcHV0RGlyZWN0
RnVuY3Rpb24oZ2xvYmFsRXhlYygpLCBKU0Z1bmN0aW9uOjpjcmVhdGUoZ2xvYmFsRXhlYygpLCB0
aGlzLCBmdW5jdGlvblN0cnVjdHVyZSgpLCAxLCBJZGVudGlmaWVyKGdsb2JhbEV4ZWMoKSwgInBy
aW50IiksIGZ1bmN0aW9uUHJpbnQpKTsKLSAgICBwdXREaXJlY3RGdW5jdGlvbihnbG9iYWxFeGVj
KCksIEpTRnVuY3Rpb246OmNyZWF0ZShnbG9iYWxFeGVjKCksIHRoaXMsIGZ1bmN0aW9uU3RydWN0
dXJlKCksIDAsIElkZW50aWZpZXIoZ2xvYmFsRXhlYygpLCAicXVpdCIpLCBmdW5jdGlvblF1aXQp
KTsKLSAgICBwdXREaXJlY3RGdW5jdGlvbihnbG9iYWxFeGVjKCksIEpTRnVuY3Rpb246OmNyZWF0
ZShnbG9iYWxFeGVjKCksIHRoaXMsIGZ1bmN0aW9uU3RydWN0dXJlKCksIDAsIElkZW50aWZpZXIo
Z2xvYmFsRXhlYygpLCAiZ2MiKSwgZnVuY3Rpb25HQykpOwotI2lmbmRlZiBOREVCVUcKLSAgICBw
dXREaXJlY3RGdW5jdGlvbihnbG9iYWxFeGVjKCksIEpTRnVuY3Rpb246OmNyZWF0ZShnbG9iYWxF
eGVjKCksIHRoaXMsIGZ1bmN0aW9uU3RydWN0dXJlKCksIDAsIElkZW50aWZpZXIoZ2xvYmFsRXhl
YygpLCAicmVsZWFzZUV4ZWN1dGFibGVNZW1vcnkiKSwgZnVuY3Rpb25SZWxlYXNlRXhlY3V0YWJs
ZU1lbW9yeSkpOwotI2VuZGlmCi0gICAgcHV0RGlyZWN0RnVuY3Rpb24oZ2xvYmFsRXhlYygpLCBK
U0Z1bmN0aW9uOjpjcmVhdGUoZ2xvYmFsRXhlYygpLCB0aGlzLCBmdW5jdGlvblN0cnVjdHVyZSgp
LCAxLCBJZGVudGlmaWVyKGdsb2JhbEV4ZWMoKSwgInZlcnNpb24iKSwgZnVuY3Rpb25WZXJzaW9u
KSk7Ci0gICAgcHV0RGlyZWN0RnVuY3Rpb24oZ2xvYmFsRXhlYygpLCBKU0Z1bmN0aW9uOjpjcmVh
dGUoZ2xvYmFsRXhlYygpLCB0aGlzLCBmdW5jdGlvblN0cnVjdHVyZSgpLCAxLCBJZGVudGlmaWVy
KGdsb2JhbEV4ZWMoKSwgInJ1biIpLCBmdW5jdGlvblJ1bikpOwotICAgIHB1dERpcmVjdEZ1bmN0
aW9uKGdsb2JhbEV4ZWMoKSwgSlNGdW5jdGlvbjo6Y3JlYXRlKGdsb2JhbEV4ZWMoKSwgdGhpcywg
ZnVuY3Rpb25TdHJ1Y3R1cmUoKSwgMSwgSWRlbnRpZmllcihnbG9iYWxFeGVjKCksICJsb2FkIiks
IGZ1bmN0aW9uTG9hZCkpOwotICAgIHB1dERpcmVjdEZ1bmN0aW9uKGdsb2JhbEV4ZWMoKSwgSlNG
dW5jdGlvbjo6Y3JlYXRlKGdsb2JhbEV4ZWMoKSwgdGhpcywgZnVuY3Rpb25TdHJ1Y3R1cmUoKSwg
MSwgSWRlbnRpZmllcihnbG9iYWxFeGVjKCksICJjaGVja1N5bnRheCIpLCBmdW5jdGlvbkNoZWNr
U3ludGF4KSk7Ci0gICAgcHV0RGlyZWN0RnVuY3Rpb24oZ2xvYmFsRXhlYygpLCBKU0Z1bmN0aW9u
OjpjcmVhdGUoZ2xvYmFsRXhlYygpLCB0aGlzLCBmdW5jdGlvblN0cnVjdHVyZSgpLCAwLCBJZGVu
dGlmaWVyKGdsb2JhbEV4ZWMoKSwgInJlYWRsaW5lIiksIGZ1bmN0aW9uUmVhZGxpbmUpKTsKLSAg
ICBwdXREaXJlY3RGdW5jdGlvbihnbG9iYWxFeGVjKCksIEpTRnVuY3Rpb246OmNyZWF0ZShnbG9i
YWxFeGVjKCksIHRoaXMsIGZ1bmN0aW9uU3RydWN0dXJlKCksIDAsIElkZW50aWZpZXIoZ2xvYmFs
RXhlYygpLCAicHJlY2lzZVRpbWUiKSwgZnVuY3Rpb25QcmVjaXNlVGltZSkpOwotCi0jaWYgRU5B
QkxFKFNBTVBMSU5HX0ZMQUdTKQotICAgIHB1dERpcmVjdEZ1bmN0aW9uKGdsb2JhbEV4ZWMoKSwg
SlNGdW5jdGlvbjo6Y3JlYXRlKGdsb2JhbEV4ZWMoKSwgdGhpcywgZnVuY3Rpb25TdHJ1Y3R1cmUo
KSwgMSwgSWRlbnRpZmllcihnbG9iYWxFeGVjKCksICJzZXRTYW1wbGluZ0ZsYWdzIiksIGZ1bmN0
aW9uU2V0U2FtcGxpbmdGbGFncykpOwotICAgIHB1dERpcmVjdEZ1bmN0aW9uKGdsb2JhbEV4ZWMo
KSwgSlNGdW5jdGlvbjo6Y3JlYXRlKGdsb2JhbEV4ZWMoKSwgdGhpcywgZnVuY3Rpb25TdHJ1Y3R1
cmUoKSwgMSwgSWRlbnRpZmllcihnbG9iYWxFeGVjKCksICJjbGVhclNhbXBsaW5nRmxhZ3MiKSwg
ZnVuY3Rpb25DbGVhclNhbXBsaW5nRmxhZ3MpKTsKLSNlbmRpZgotCi0gICAgSlNPYmplY3QqIGFy
cmF5ID0gY29uc3RydWN0RW1wdHlBcnJheShnbG9iYWxFeGVjKCkpOwotICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgYXJndW1lbnRzLnNpemUoKTsgKytpKQotICAgICAgICBhcnJheS0+cHV0KGds
b2JhbEV4ZWMoKSwgaSwganNTdHJpbmcoZ2xvYmFsRXhlYygpLCBhcmd1bWVudHNbaV0pKTsKLSAg
ICBwdXREaXJlY3QoZ2xvYmFsRXhlYygpLT5nbG9iYWxEYXRhKCksIElkZW50aWZpZXIoZ2xvYmFs
RXhlYygpLCAiYXJndW1lbnRzIiksIGFycmF5KTsKIH0KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBmdW5jdGlvblByaW50KEV4ZWNTdGF0ZSogZXhlYykKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja0NvbnN0cnVjdG9yLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrQ29uc3RydWN0b3IuaAkocmV2aXNpb24g
OTIyODMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tDb25zdHJ1Y3Rv
ci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw3ICszNyw3IEBAIHByb3RlY3RlZDoKIHB1YmxpYzoK
ICAgICBzdGF0aWMgSlNDYWxsYmFja0NvbnN0cnVjdG9yKiBjcmVhdGUoRXhlY1N0YXRlKiBleGVj
LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlND
bGFzc1JlZiBjbGFzc1JlZiwgSlNPYmplY3RDYWxsQXNDb25zdHJ1Y3RvckNhbGxiYWNrIGNhbGxi
YWNrKSAKICAgICB7Ci0gICAgICAgIHJldHVybiBuZXcgKGFsbG9jYXRlQ2VsbDxKU0NhbGxiYWNr
Q29uc3RydWN0b3I+KCpleGVjLT5oZWFwKCkpKSBKU0NhbGxiYWNrQ29uc3RydWN0b3IoZ2xvYmFs
T2JqZWN0LCBzdHJ1Y3R1cmUsIGNsYXNzUmVmLCBjYWxsYmFjayk7CisgICAgICAgIHJldHVybiB2
YWxpZGF0ZUFsbG9jPEpTQ2FsbGJhY2tDb25zdHJ1Y3Rvcj4oZXhlYy0+Z2xvYmFsRGF0YSgpLCBu
ZXcgKGFsbG9jYXRlQ2VsbDxKU0NhbGxiYWNrQ29uc3RydWN0b3I+KCpleGVjLT5oZWFwKCkpKSBK
U0NhbGxiYWNrQ29uc3RydWN0b3IoZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIGNsYXNzUmVmLCBj
YWxsYmFjaykpOwogICAgIH0KICAgICAKICAgICB2aXJ0dWFsIH5KU0NhbGxiYWNrQ29uc3RydWN0
b3IoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja0Z1bmN0aW9u
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tG
dW5jdGlvbi5jcHAJKHJldmlzaW9uIDkyMjgzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0FQ
SS9KU0NhbGxiYWNrRnVuY3Rpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Miw4ICs0Miw4IEBA
IEFTU0VSVF9DTEFTU19GSVRTX0lOX0NFTEwoSlNDYWxsYmFja0Z1bmMKIAogY29uc3QgQ2xhc3NJ
bmZvIEpTQ2FsbGJhY2tGdW5jdGlvbjo6c19pbmZvID0geyAiQ2FsbGJhY2tGdW5jdGlvbiIsICZJ
bnRlcm5hbEZ1bmN0aW9uOjpzX2luZm8sIDAsIDAgfTsKIAotSlNDYWxsYmFja0Z1bmN0aW9uOjpK
U0NhbGxiYWNrRnVuY3Rpb24oRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBKU09iamVjdENhbGxBc0Z1bmN0aW9uQ2FsbGJhY2sgY2FsbGJhY2ssIGNvbnN0IElk
ZW50aWZpZXImIG5hbWUpCi0gICAgOiBJbnRlcm5hbEZ1bmN0aW9uKCZleGVjLT5nbG9iYWxEYXRh
KCksIGdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LT5jYWxsYmFja0Z1bmN0aW9uU3RydWN0dXJl
KCksIG5hbWUpCitKU0NhbGxiYWNrRnVuY3Rpb246OkpTQ2FsbGJhY2tGdW5jdGlvbihKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU09iamVjdENhbGxBc0Z1bmN0aW9uQ2FsbGJhY2sgY2Fs
bGJhY2spCisgICAgOiBJbnRlcm5hbEZ1bmN0aW9uKGdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0
LT5jYWxsYmFja0Z1bmN0aW9uU3RydWN0dXJlKCkpCiAgICAgLCBtX2NhbGxiYWNrKGNhbGxiYWNr
KQogewogICAgIEFTU0VSVChpbmhlcml0cygmc19pbmZvKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tGdW5jdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja0Z1bmN0aW9uLmgJKHJldmlzaW9uIDkyMjgzKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrRnVuY3Rpb24uaAkod29ya2lu
ZyBjb3B5KQpAQCAtMzMsMTIgKzMzLDE0IEBAIG5hbWVzcGFjZSBKU0MgewogCiBjbGFzcyBKU0Nh
bGxiYWNrRnVuY3Rpb24gOiBwdWJsaWMgSW50ZXJuYWxGdW5jdGlvbiB7CiBwcm90ZWN0ZWQ6Ci0g
ICAgSlNDYWxsYmFja0Z1bmN0aW9uKEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KiwgSlNPYmpl
Y3RDYWxsQXNGdW5jdGlvbkNhbGxiYWNrLCBjb25zdCBJZGVudGlmaWVyJiBuYW1lKTsKKyAgICBK
U0NhbGxiYWNrRnVuY3Rpb24oSlNHbG9iYWxPYmplY3QqLCBKU09iamVjdENhbGxBc0Z1bmN0aW9u
Q2FsbGJhY2spOwogCiBwdWJsaWM6CiAgICAgc3RhdGljIEpTQ2FsbGJhY2tGdW5jdGlvbiogY3Jl
YXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNPYmpl
Y3RDYWxsQXNGdW5jdGlvbkNhbGxiYWNrIGNhbGxiYWNrLCBjb25zdCBJZGVudGlmaWVyJiBuYW1l
KQogICAgIHsKLSAgICAgICAgcmV0dXJuIG5ldyAoYWxsb2NhdGVDZWxsPEpTQ2FsbGJhY2tGdW5j
dGlvbj4oKmV4ZWMtPmhlYXAoKSkpIEpTQ2FsbGJhY2tGdW5jdGlvbihleGVjLCBnbG9iYWxPYmpl
Y3QsIGNhbGxiYWNrLCBuYW1lKTsKKyAgICAgICAgSlNDYWxsYmFja0Z1bmN0aW9uKiBjYWxsYmFj
a0Z1bmN0aW9uID0gdmFsaWRhdGVBbGxvYzxKU0NhbGxiYWNrRnVuY3Rpb24+KGV4ZWMtPmdsb2Jh
bERhdGEoKSwgbmV3IChhbGxvY2F0ZUNlbGw8SlNDYWxsYmFja0Z1bmN0aW9uPigqZXhlYy0+aGVh
cCgpKSkgSlNDYWxsYmFja0Z1bmN0aW9uKGdsb2JhbE9iamVjdCwgY2FsbGJhY2spKTsKKyAgICAg
ICAgY2FsbGJhY2tGdW5jdGlvbi0+aW5pdFByb3BlcnRpZXMoZXhlYy0+Z2xvYmFsRGF0YSgpLCBu
YW1lKTsKKyAgICAgICAgcmV0dXJuIGNhbGxiYWNrRnVuY3Rpb247CiAgICAgfQogCiAgICAgc3Rh
dGljIGNvbnN0IENsYXNzSW5mbyBzX2luZm87CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
QVBJL0pTQ2FsbGJhY2tPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvQVBJL0pTQ2FsbGJhY2tPYmplY3QuaAkocmV2aXNpb24gOTIyODMpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtMTI3
LDExICsxMjcsMTEgQEAgcHJvdGVjdGVkOgogcHVibGljOgogICAgIHN0YXRpYyBKU0NhbGxiYWNr
T2JqZWN0KiBjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNDbGFzc1JlZiBjbGFzc1JlZiwgdm9pZCogZGF0
YSkKICAgICB7Ci0gICAgICAgIHJldHVybiBuZXcgKGFsbG9jYXRlQ2VsbDxKU0NhbGxiYWNrT2Jq
ZWN0PigqZXhlYy0+aGVhcCgpKSkgSlNDYWxsYmFja09iamVjdChleGVjLCBnbG9iYWxPYmplY3Qs
IHN0cnVjdHVyZSwgY2xhc3NSZWYsIGRhdGEpOworICAgICAgICByZXR1cm4gdmFsaWRhdGVBbGxv
YzxKU0NhbGxiYWNrT2JqZWN0PihleGVjLT5nbG9iYWxEYXRhKCksIG5ldyAoYWxsb2NhdGVDZWxs
PEpTQ2FsbGJhY2tPYmplY3Q+KCpleGVjLT5oZWFwKCkpKSBKU0NhbGxiYWNrT2JqZWN0KGV4ZWMs
IGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBjbGFzc1JlZiwgZGF0YSkpOwogICAgIH0KICAgICBz
dGF0aWMgSlNDYWxsYmFja09iamVjdCogY3JlYXRlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwg
SlNDbGFzc1JlZiBjbGFzc1JlZiwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAgICAgewotICAgICAg
ICByZXR1cm4gbmV3IChhbGxvY2F0ZUNlbGw8SlNDYWxsYmFja09iamVjdD4oZ2xvYmFsRGF0YS5o
ZWFwKSkgSlNDYWxsYmFja09iamVjdChnbG9iYWxEYXRhLCBjbGFzc1JlZiwgc3RydWN0dXJlKTsK
KyAgICAgICAgcmV0dXJuIHZhbGlkYXRlQWxsb2M8SlNDYWxsYmFja09iamVjdD4oZ2xvYmFsRGF0
YSwgbmV3IChhbGxvY2F0ZUNlbGw8SlNDYWxsYmFja09iamVjdD4oZ2xvYmFsRGF0YS5oZWFwKSkg
SlNDYWxsYmFja09iamVjdChnbG9iYWxEYXRhLCBjbGFzc1JlZiwgc3RydWN0dXJlKSk7CiAgICAg
fQogCiAgICAgdm9pZCBzZXRQcml2YXRlKHZvaWQqIGRhdGEpOwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyQWN0aXZhdGlvbi5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlckFjdGl2YXRpb24uaAkocmV2aXNp
b24gOTIyODMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJBY3Rp
dmF0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTM2LDcgKzM2LDcgQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgcHVibGljOgogICAgICAgICBzdGF0aWMgRGVidWdnZXJBY3RpdmF0aW9uKiBjcmVhdGUo
SlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU09iamVjdCogb2JqZWN0KQogICAgICAgICB7Ci0g
ICAgICAgICAgICByZXR1cm4gbmV3IChhbGxvY2F0ZUNlbGw8RGVidWdnZXJBY3RpdmF0aW9uPihn
bG9iYWxEYXRhLmhlYXApKSBEZWJ1Z2dlckFjdGl2YXRpb24oZ2xvYmFsRGF0YSwgb2JqZWN0KTsK
KyAgICAgICAgICAgIHJldHVybiB2YWxpZGF0ZUFsbG9jPERlYnVnZ2VyQWN0aXZhdGlvbj4oZ2xv
YmFsRGF0YSwgbmV3IChhbGxvY2F0ZUNlbGw8RGVidWdnZXJBY3RpdmF0aW9uPihnbG9iYWxEYXRh
LmhlYXApKSBEZWJ1Z2dlckFjdGl2YXRpb24oZ2xvYmFsRGF0YSwgb2JqZWN0KSk7CiAgICAgICAg
IH0KIAogICAgICAgICB2aXJ0dWFsIHZvaWQgdmlzaXRDaGlsZHJlbihTbG90VmlzaXRvciYpOwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0
ZXIuY3BwCShyZXZpc2lvbiA5MjI4MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnBy
ZXRlci9JbnRlcnByZXRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzODksMTAgKzEzODksMTEg
QEAgTkVWRVJfSU5MSU5FIHZvaWQgSW50ZXJwcmV0ZXI6OnRyeUNhY2hlUAogICAgICAgICBub3Jt
YWxpemVQcm90b3R5cGVDaGFpbihjYWxsRnJhbWUsIGJhc2VDZWxsKTsKICAgICAgICAgSlNDZWxs
KiBvd25lciA9IGNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCk7CiAgICAgICAgIEpTR2xvYmFs
RGF0YSYgZ2xvYmFsRGF0YSA9IGNhbGxGcmFtZS0+Z2xvYmFsRGF0YSgpOworICAgICAgICBTdHJ1
Y3R1cmVDaGFpbiogcHJvdG90eXBlQ2hhaW4gPSBzdHJ1Y3R1cmUtPnByb3RvdHlwZUNoYWluKGNh
bGxGcmFtZSk7CiAgICAgICAgIHZQQ1swXSA9IGdldE9wY29kZShvcF9wdXRfYnlfaWRfdHJhbnNp
dGlvbik7CiAgICAgICAgIHZQQ1s0XS51LnN0cnVjdHVyZS5zZXQoZ2xvYmFsRGF0YSwgb3duZXIs
IHN0cnVjdHVyZS0+cHJldmlvdXNJRCgpKTsKICAgICAgICAgdlBDWzVdLnUuc3RydWN0dXJlLnNl
dChnbG9iYWxEYXRhLCBvd25lciwgc3RydWN0dXJlKTsKLSAgICAgICAgdlBDWzZdLnUuc3RydWN0
dXJlQ2hhaW4uc2V0KGNhbGxGcmFtZS0+Z2xvYmFsRGF0YSgpLCBjb2RlQmxvY2stPm93bmVyRXhl
Y3V0YWJsZSgpLCBzdHJ1Y3R1cmUtPnByb3RvdHlwZUNoYWluKGNhbGxGcmFtZSkpOworICAgICAg
ICB2UENbNl0udS5zdHJ1Y3R1cmVDaGFpbi5zZXQoY2FsbEZyYW1lLT5nbG9iYWxEYXRhKCksIGNv
ZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCksIHByb3RvdHlwZUNoYWluKTsKICAgICAgICAgQVNT
RVJUKHZQQ1s2XS51LnN0cnVjdHVyZUNoYWluKTsKICAgICAgICAgdlBDWzddID0gc2xvdC5jYWNo
ZWRPZmZzZXQoKTsKICAgICAgICAgcmV0dXJuOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQXJndW1lbnRzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQXJndW1lbnRzLmgJKHJldmlzaW9uIDkyMjgzKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQXJndW1lbnRzLmgJKHdvcmtpbmcgY29weSkKQEAgLTYxLDEyICs2MSwx
MiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBwdWJsaWM6CiAgICAgICAgIHN0YXRpYyBBcmd1bWVu
dHMqIGNyZWF0ZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIENhbGxGcmFtZSogY2FsbEZyYW1l
KQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gbmV3IChhbGxvY2F0ZUNlbGw8QXJndW1l
bnRzPihnbG9iYWxEYXRhLmhlYXApKSBBcmd1bWVudHMoY2FsbEZyYW1lKTsKKyAgICAgICAgICAg
IHJldHVybiB2YWxpZGF0ZUFsbG9jPEFyZ3VtZW50cz4oZ2xvYmFsRGF0YSwgbmV3IChhbGxvY2F0
ZUNlbGw8QXJndW1lbnRzPihnbG9iYWxEYXRhLmhlYXApKSBBcmd1bWVudHMoY2FsbEZyYW1lKSk7
CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIHN0YXRpYyBBcmd1bWVudHMqIGNyZWF0ZU5v
UGFyYW1ldGVycyhKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIENhbGxGcmFtZSogY2FsbEZyYW1l
KQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gbmV3IChhbGxvY2F0ZUNlbGw8QXJndW1l
bnRzPihnbG9iYWxEYXRhLmhlYXApKSBBcmd1bWVudHMoY2FsbEZyYW1lLCBOb1BhcmFtZXRlcnMp
OworICAgICAgICAgICAgcmV0dXJuIHZhbGlkYXRlQWxsb2M8QXJndW1lbnRzPihnbG9iYWxEYXRh
LCBuZXcgKGFsbG9jYXRlQ2VsbDxBcmd1bWVudHM+KGdsb2JhbERhdGEuaGVhcCkpIEFyZ3VtZW50
cyhjYWxsRnJhbWUsIE5vUGFyYW1ldGVycykpOwogICAgICAgICB9CiAKICAgICAgICAgLy8gVXNl
IGFuIGVudW0gYmVjYXVzZSBvdGhlcndpc2UgZ2NjIGluc2lzdHMgb24gZG9pbmcgYSBtZW1vcnkK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5Q29uc3RydWN0b3IuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5Q29uc3Ry
dWN0b3IuY3BwCShyZXZpc2lvbiA5MjI4MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0FycmF5Q29uc3RydWN0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Miw3ICs1Miw3IEBA
IGNvbnN0IENsYXNzSW5mbyBBcnJheUNvbnN0cnVjdG9yOjpzX2luZm8KIEFTU0VSVF9DTEFTU19G
SVRTX0lOX0NFTEwoQXJyYXlDb25zdHJ1Y3Rvcik7CiAKIEFycmF5Q29uc3RydWN0b3I6OkFycmF5
Q29uc3RydWN0b3IoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgQXJyYXlQcm90b3R5cGUqIGFycmF5UHJvdG90eXBlKQot
ICAgIDogSW50ZXJuYWxGdW5jdGlvbigmZXhlYy0+Z2xvYmFsRGF0YSgpLCBnbG9iYWxPYmplY3Qs
IHN0cnVjdHVyZSwgSWRlbnRpZmllcihleGVjLCBhcnJheVByb3RvdHlwZS0+Y2xhc3NJbmZvKCkt
PmNsYXNzTmFtZSkpCisgICAgOiBJbnRlcm5hbEZ1bmN0aW9uKGdsb2JhbE9iamVjdCwgc3RydWN0
dXJlKQogewogICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKGV4ZWMtPmdsb2JhbERhdGEo
KSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLnByb3RvdHlwZSwgYXJyYXlQcm90b3R5cGUsIERvbnRF
bnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KTsKICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNp
dGlvbihleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5sZW5ndGgsIGpz
TnVtYmVyKDEpLCBSZWFkT25seSB8IERvbnRFbnVtIHwgRG9udERlbGV0ZSk7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUNvbnN0cnVjdG9yLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlDb25zdHJ1Y3Rvci5oCShyZXZp
c2lvbiA5MjI4MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5Q29uc3Ry
dWN0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtMjEsMjAgKzIxLDIxIEBACiAjaWZuZGVmIEFycmF5
Q29uc3RydWN0b3JfaAogI2RlZmluZSBBcnJheUNvbnN0cnVjdG9yX2gKIAorI2luY2x1ZGUgIkFy
cmF5UHJvdG90eXBlLmgiCiAjaW5jbHVkZSAiSW50ZXJuYWxGdW5jdGlvbi5oIgogCiBuYW1lc3Bh
Y2UgSlNDIHsKIAotICAgIGNsYXNzIEFycmF5UHJvdG90eXBlOwotCiAgICAgY2xhc3MgQXJyYXlD
b25zdHJ1Y3RvciA6IHB1YmxpYyBJbnRlcm5hbEZ1bmN0aW9uIHsKICAgICBwcml2YXRlOgogICAg
ICAgICBBcnJheUNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0
dXJlKiwgQXJyYXlQcm90b3R5cGUqKTsKICAgICAgICAgCiAgICAgcHVibGljOgotICAgICAgICBz
dGF0aWMgQXJyYXlDb25zdHJ1Y3RvciogY3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEFycmF5UHJvdG90eXBl
KiBhcnJQcm90b3R5cGUpCisgICAgICAgIHN0YXRpYyBBcnJheUNvbnN0cnVjdG9yKiBjcmVhdGUo
RXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSwgQXJyYXlQcm90b3R5cGUqIGFycmF5UHJvdG90eXBlKQogICAgICAgICB7Ci0g
ICAgICAgICAgICByZXR1cm4gbmV3IChhbGxvY2F0ZUNlbGw8QXJyYXlDb25zdHJ1Y3Rvcj4oKmV4
ZWMtPmhlYXAoKSkpIEFycmF5Q29uc3RydWN0b3IoZXhlYywgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1
cmUsIGFyclByb3RvdHlwZSk7CisgICAgICAgICAgICBBcnJheUNvbnN0cnVjdG9yKiBjb25zdHJ1
Y3RvciA9IHZhbGlkYXRlQWxsb2M8QXJyYXlDb25zdHJ1Y3Rvcj4oZXhlYy0+Z2xvYmFsRGF0YSgp
LCBuZXcgKGFsbG9jYXRlQ2VsbDxBcnJheUNvbnN0cnVjdG9yPigqZXhlYy0+aGVhcCgpKSkgQXJy
YXlDb25zdHJ1Y3RvcihleGVjLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgYXJyYXlQcm90b3R5
cGUpKTsKKyAgICAgICAgICAgIGNvbnN0cnVjdG9yLT5pbml0UHJvcGVydGllcyhleGVjLT5nbG9i
YWxEYXRhKCksIElkZW50aWZpZXIoZXhlYywgYXJyYXlQcm90b3R5cGUtPmNsYXNzSW5mbygpLT5j
bGFzc05hbWUpKTsKKyAgICAgICAgICAgIHJldHVybiBjb25zdHJ1Y3RvcjsKICAgICAgICAgfQog
CiAgICAgICAgIHN0YXRpYyBjb25zdCBDbGFzc0luZm8gc19pbmZvOwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5cGUuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheVByb3RvdHlwZS5oCShyZXZpc2lvbiA5MjI4
MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5UHJvdG90eXBlLmgJKHdv
cmtpbmcgY29weSkKQEAgLTMzLDcgKzMzLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgcHVibGlj
OgogICAgICAgICBzdGF0aWMgQXJyYXlQcm90b3R5cGUqIGNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMs
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlKQogICAg
ICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gbmV3IChhbGxvY2F0ZUNlbGw8QXJyYXlQcm90b3R5
cGU+KCpleGVjLT5oZWFwKCkpKSBBcnJheVByb3RvdHlwZShnbG9iYWxPYmplY3QsIHN0cnVjdHVy
ZSk7CisgICAgICAgICAgICByZXR1cm4gdmFsaWRhdGVBbGxvYzxBcnJheVByb3RvdHlwZT4oZXhl
Yy0+Z2xvYmFsRGF0YSgpLCBuZXcgKGFsbG9jYXRlQ2VsbDxBcnJheVByb3RvdHlwZT4oKmV4ZWMt
PmhlYXAoKSkpIEFycmF5UHJvdG90eXBlKGdsb2JhbE9iamVjdCwgc3RydWN0dXJlKSk7CiAgICAg
ICAgIH0KICAgICAgICAgCiAgICAgICAgIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEV4ZWNTdGF0
ZSosIGNvbnN0IElkZW50aWZpZXImLCBQcm9wZXJ0eVNsb3QmKTsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0Jvb2xlYW5Db25zdHJ1Y3Rvci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQm9vbGVhbkNvbnN0cnVjdG9yLmNwcAkocmV2
aXNpb24gOTIyODMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Cb29sZWFuQ29u
c3RydWN0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw3ICsyOSw3IEBAIG5hbWVzcGFjZSBK
U0MgewogQVNTRVJUX0NMQVNTX0ZJVFNfSU5fQ0VMTChCb29sZWFuQ29uc3RydWN0b3IpOwogCiBC
b29sZWFuQ29uc3RydWN0b3I6OkJvb2xlYW5Db25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMsIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBCb29sZWFu
UHJvdG90eXBlKiBib29sZWFuUHJvdG90eXBlKQotICAgIDogSW50ZXJuYWxGdW5jdGlvbigmZXhl
Yy0+Z2xvYmFsRGF0YSgpLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgSWRlbnRpZmllcihleGVj
LCBib29sZWFuUHJvdG90eXBlLT5jbGFzc0luZm8oKS0+Y2xhc3NOYW1lKSkKKyAgICA6IEludGVy
bmFsRnVuY3Rpb24oZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUpCiB7CiAgICAgcHV0RGlyZWN0V2l0
aG91dFRyYW5zaXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCku
cHJvdG90eXBlLCBib29sZWFuUHJvdG90eXBlLCBEb250RW51bSB8IERvbnREZWxldGUgfCBSZWFk
T25seSk7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Jvb2xlYW5Db25z
dHJ1Y3Rvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Jv
b2xlYW5Db25zdHJ1Y3Rvci5oCShyZXZpc2lvbiA5MjI4MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0Jvb2xlYW5Db25zdHJ1Y3Rvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMSwy
MCArMjEsMjEgQEAKICNpZm5kZWYgQm9vbGVhbkNvbnN0cnVjdG9yX2gKICNkZWZpbmUgQm9vbGVh
bkNvbnN0cnVjdG9yX2gKIAorI2luY2x1ZGUgIkJvb2xlYW5Qcm90b3R5cGUuaCIKICNpbmNsdWRl
ICJJbnRlcm5hbEZ1bmN0aW9uLmgiCiAKIG5hbWVzcGFjZSBKU0MgewogCi0gICAgY2xhc3MgQm9v
bGVhblByb3RvdHlwZTsKLQogICAgIGNsYXNzIEJvb2xlYW5Db25zdHJ1Y3RvciA6IHB1YmxpYyBJ
bnRlcm5hbEZ1bmN0aW9uIHsKICAgICBwcml2YXRlOgogICAgICAgICBCb29sZWFuQ29uc3RydWN0
b3IoRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBCb29sZWFuUHJvdG90
eXBlKik7CiAgICAgICAgIAogICAgIHB1YmxpYzoKLSAgICAgICAgc3RhdGljIEJvb2xlYW5Db25z
dHJ1Y3RvciogY3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEJvb2xlYW5Qcm90b3R5cGUqIGJvb2xQcm90b3R5
cGUpCisgICAgICAgIHN0YXRpYyBCb29sZWFuQ29uc3RydWN0b3IqIGNyZWF0ZShFeGVjU3RhdGUq
IGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJl
LCBCb29sZWFuUHJvdG90eXBlKiBib29sZWFuUHJvdG90eXBlKQogICAgICAgICB7Ci0gICAgICAg
ICAgICByZXR1cm4gbmV3IChhbGxvY2F0ZUNlbGw8Qm9vbGVhbkNvbnN0cnVjdG9yPigqZXhlYy0+
aGVhcCgpKSkgQm9vbGVhbkNvbnN0cnVjdG9yKGV4ZWMsIGdsb2JhbE9iamVjdCwgc3RydWN0dXJl
LCBib29sUHJvdG90eXBlKTsKKyAgICAgICAgICAgIEJvb2xlYW5Db25zdHJ1Y3RvciogY29uc3Ry
dWN0b3IgPSB2YWxpZGF0ZUFsbG9jPEJvb2xlYW5Db25zdHJ1Y3Rvcj4oZXhlYy0+Z2xvYmFsRGF0
YSgpLCBuZXcgKGFsbG9jYXRlQ2VsbDxCb29sZWFuQ29uc3RydWN0b3I+KCpleGVjLT5oZWFwKCkp
KSBCb29sZWFuQ29uc3RydWN0b3IoZXhlYywgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIGJvb2xl
YW5Qcm90b3R5cGUpKTsKKyAgICAgICAgICAgIGNvbnN0cnVjdG9yLT5pbml0UHJvcGVydGllcyhl
eGVjLT5nbG9iYWxEYXRhKCksIElkZW50aWZpZXIoZXhlYywgYm9vbGVhblByb3RvdHlwZS0+Y2xh
c3NJbmZvKCktPmNsYXNzTmFtZSkpOworICAgICAgICAgICAgcmV0dXJuIGNvbnN0cnVjdG9yOwog
ICAgICAgICB9CiAKICAgICBwcml2YXRlOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQm9vbGVhbk9iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0Jvb2xlYW5PYmplY3QuaAkocmV2aXNpb24gOTIyODMpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Cb29sZWFuT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTMy
LDcgKzMyLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgcHVibGljOgogICAgICAgICBzdGF0aWMg
Qm9vbGVhbk9iamVjdCogY3JlYXRlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgU3RydWN0dXJl
KiBzdHJ1Y3R1cmUpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBuZXcgKGFsbG9jYXRl
Q2VsbDxCb29sZWFuT2JqZWN0PihnbG9iYWxEYXRhLmhlYXApKSBCb29sZWFuT2JqZWN0KGdsb2Jh
bERhdGEsIHN0cnVjdHVyZSk7CisgICAgICAgICAgICByZXR1cm4gdmFsaWRhdGVBbGxvYzxCb29s
ZWFuT2JqZWN0PihnbG9iYWxEYXRhLCBuZXcgKGFsbG9jYXRlQ2VsbDxCb29sZWFuT2JqZWN0Pihn
bG9iYWxEYXRhLmhlYXApKSBCb29sZWFuT2JqZWN0KGdsb2JhbERhdGEsIHN0cnVjdHVyZSkpOwog
ICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBzdGF0aWMgY29uc3QgQ2xhc3NJbmZvIHNfaW5m
bzsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Jvb2xlYW5Qcm90b3R5cGUu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Cb29sZWFuUHJv
dG90eXBlLmgJKHJldmlzaW9uIDkyMjgzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQm9vbGVhblByb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw3ICszMiw3IEBAIG5h
bWVzcGFjZSBKU0MgewogICAgIHB1YmxpYzoKICAgICAgICAgc3RhdGljIEJvb2xlYW5Qcm90b3R5
cGUqIGNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IFN0cnVjdHVyZSogc3RydWN0dXJlKQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gbmV3
IChhbGxvY2F0ZUNlbGw8Qm9vbGVhblByb3RvdHlwZT4oKmV4ZWMtPmhlYXAoKSkpIEJvb2xlYW5Q
cm90b3R5cGUoZXhlYywgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUpOworICAgICAgICAgICAgcmV0
dXJuIHZhbGlkYXRlQWxsb2M8Qm9vbGVhblByb3RvdHlwZT4oZXhlYy0+Z2xvYmFsRGF0YSgpLCBu
ZXcgKGFsbG9jYXRlQ2VsbDxCb29sZWFuUHJvdG90eXBlPigqZXhlYy0+aGVhcCgpKSkgQm9vbGVh
blByb3RvdHlwZShleGVjLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSkpOwogICAgICAgICB9CiAg
ICAgICAgIAogICAgICAgICBzdGF0aWMgY29uc3QgQ2xhc3NJbmZvIHNfaW5mbzsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVDb25zdHJ1Y3Rvci5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZUNvbnN0cnVjdG9yLmNwcAko
cmV2aXNpb24gOTIyODMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlQ29u
c3RydWN0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NCw3ICs3NCw3IEBAIGNvbnN0IENsYXNz
SW5mbyBEYXRlQ29uc3RydWN0b3I6OnNfaW5mbyAKIEFTU0VSVF9DTEFTU19GSVRTX0lOX0NFTEwo
RGF0ZUNvbnN0cnVjdG9yKTsKIAogRGF0ZUNvbnN0cnVjdG9yOjpEYXRlQ29uc3RydWN0b3IoRXhl
Y1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSwgRGF0ZVByb3RvdHlwZSogZGF0ZVByb3RvdHlwZSkKLSAgICA6IEludGVybmFsRnVu
Y3Rpb24oJmV4ZWMtPmdsb2JhbERhdGEoKSwgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIElkZW50
aWZpZXIoZXhlYywgZGF0ZVByb3RvdHlwZS0+Y2xhc3NJbmZvKCktPmNsYXNzTmFtZSkpCisgICAg
OiBJbnRlcm5hbEZ1bmN0aW9uKGdsb2JhbE9iamVjdCwgc3RydWN0dXJlKQogewogICAgIHB1dERp
cmVjdFdpdGhvdXRUcmFuc2l0aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+cHJvcGVydHlO
YW1lcygpLnByb3RvdHlwZSwgZGF0ZVByb3RvdHlwZSwgRG9udEVudW0gfCBEb250RGVsZXRlIHwg
UmVhZE9ubHkpOwogICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKGV4ZWMtPmdsb2JhbERh
dGEoKSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLmxlbmd0aCwganNOdW1iZXIoNyksIFJlYWRPbmx5
IHwgRG9udEVudW0gfCBEb250RGVsZXRlKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0RhdGVDb25zdHJ1Y3Rvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0RhdGVDb25zdHJ1Y3Rvci5oCShyZXZpc2lvbiA5MjI4MykKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVDb25zdHJ1Y3Rvci5oCSh3b3JraW5nIGNvcHkp
CkBAIC0yMSwxMiArMjEsMTEgQEAKICNpZm5kZWYgRGF0ZUNvbnN0cnVjdG9yX2gKICNkZWZpbmUg
RGF0ZUNvbnN0cnVjdG9yX2gKIAorI2luY2x1ZGUgIkRhdGVQcm90b3R5cGUuaCIKICNpbmNsdWRl
ICJJbnRlcm5hbEZ1bmN0aW9uLmgiCiAKIG5hbWVzcGFjZSBKU0MgewogCi0gICAgY2xhc3MgRGF0
ZVByb3RvdHlwZTsKLQogICAgIGNsYXNzIERhdGVDb25zdHJ1Y3RvciA6IHB1YmxpYyBJbnRlcm5h
bEZ1bmN0aW9uIHsKICAgICBwcml2YXRlOgogICAgICAgICBEYXRlQ29uc3RydWN0b3IoRXhlY1N0
YXRlKiwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBEYXRlUHJvdG90eXBlKik7CkBAIC0z
NCw3ICszMyw5IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHB1YmxpYzoKICAgICAgICAgc3RhdGlj
IERhdGVDb25zdHJ1Y3RvciogY3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIERhdGVQcm90b3R5cGUqIGRhdGVQ
cm90b3R5cGUpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBuZXcgKGFsbG9jYXRlQ2Vs
bDxEYXRlQ29uc3RydWN0b3I+KCpleGVjLT5oZWFwKCkpKSBEYXRlQ29uc3RydWN0b3IoZXhlYywg
Z2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIGRhdGVQcm90b3R5cGUpOworICAgICAgICAgICAgRGF0
ZUNvbnN0cnVjdG9yKiBjb25zdHJ1Y3RvciA9IHZhbGlkYXRlQWxsb2M8RGF0ZUNvbnN0cnVjdG9y
PihleGVjLT5nbG9iYWxEYXRhKCksIG5ldyAoYWxsb2NhdGVDZWxsPERhdGVDb25zdHJ1Y3Rvcj4o
KmV4ZWMtPmhlYXAoKSkpIERhdGVDb25zdHJ1Y3RvcihleGVjLCBnbG9iYWxPYmplY3QsIHN0cnVj
dHVyZSwgZGF0ZVByb3RvdHlwZSkpOworICAgICAgICAgICAgY29uc3RydWN0b3ItPmluaXRQcm9w
ZXJ0aWVzKGV4ZWMtPmdsb2JhbERhdGEoKSwgSWRlbnRpZmllcihleGVjLCBkYXRlUHJvdG90eXBl
LT5jbGFzc0luZm8oKS0+Y2xhc3NOYW1lKSk7CisgICAgICAgICAgICByZXR1cm4gY29uc3RydWN0
b3I7CiAgICAgICAgIH0KIAogICAgICAgICBzdGF0aWMgY29uc3QgQ2xhc3NJbmZvIHNfaW5mbzsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVJbnN0YW5jZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVJbnN0YW5jZS5oCShy
ZXZpc2lvbiA5MjI4MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVJbnN0
YW5jZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNywxMSArMzcsMTEgQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgcHVibGljOgogICAgICAgICBzdGF0aWMgRGF0ZUluc3RhbmNlKiBjcmVhdGUoRXhlY1N0
YXRlKiBleGVjLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgZG91YmxlIGRhdGUpCiAgICAgICAgIHsK
LSAgICAgICAgICAgIHJldHVybiBuZXcgKGFsbG9jYXRlQ2VsbDxEYXRlSW5zdGFuY2U+KCpleGVj
LT5oZWFwKCkpKSBEYXRlSW5zdGFuY2UoZXhlYywgc3RydWN0dXJlLCBkYXRlKTsKKyAgICAgICAg
ICAgIHJldHVybiB2YWxpZGF0ZUFsbG9jPERhdGVJbnN0YW5jZT4oZXhlYy0+Z2xvYmFsRGF0YSgp
LCBuZXcgKGFsbG9jYXRlQ2VsbDxEYXRlSW5zdGFuY2U+KCpleGVjLT5oZWFwKCkpKSBEYXRlSW5z
dGFuY2UoZXhlYywgc3RydWN0dXJlLCBkYXRlKSk7CiAgICAgICAgIH0KICAgICAgICAgc3RhdGlj
IERhdGVJbnN0YW5jZSogY3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBuZXcgKGFsbG9jYXRlQ2VsbDxEYXRl
SW5zdGFuY2U+KCpleGVjLT5oZWFwKCkpKSBEYXRlSW5zdGFuY2UoZXhlYywgc3RydWN0dXJlKTsK
KyAgICAgICAgICAgIHJldHVybiB2YWxpZGF0ZUFsbG9jPERhdGVJbnN0YW5jZT4oZXhlYy0+Z2xv
YmFsRGF0YSgpLCBuZXcgKGFsbG9jYXRlQ2VsbDxEYXRlSW5zdGFuY2U+KCpleGVjLT5oZWFwKCkp
KSBEYXRlSW5zdGFuY2UoZXhlYywgc3RydWN0dXJlKSk7CiAgICAgICAgIH0KICAgICAgICAgCiAg
ICAgICAgIGRvdWJsZSBpbnRlcm5hbE51bWJlcigpIGNvbnN0IHsgcmV0dXJuIGludGVybmFsVmFs
dWUoKS51bmNoZWNrZWRHZXROdW1iZXIoKTsgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvRGF0ZVByb3RvdHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0RhdGVQcm90b3R5cGUuaAkocmV2aXNpb24gOTIyODMpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlUHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAg
LTM0LDcgKzM0LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgcHVibGljOgogICAgICAgICBzdGF0
aWMgRGF0ZVByb3RvdHlwZSogY3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAgICAgICAgIHsKLSAgICAgICAg
ICAgIHJldHVybiBuZXcgKGFsbG9jYXRlQ2VsbDxEYXRlUHJvdG90eXBlPigqZXhlYy0+aGVhcCgp
KSkgRGF0ZVByb3RvdHlwZShleGVjLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSk7CisgICAgICAg
ICAgICByZXR1cm4gdmFsaWRhdGVBbGxvYzxEYXRlUHJvdG90eXBlPihleGVjLT5nbG9iYWxEYXRh
KCksIG5ldyAoYWxsb2NhdGVDZWxsPERhdGVQcm90b3R5cGU+KCpleGVjLT5oZWFwKCkpKSBEYXRl
UHJvdG90eXBlKGV4ZWMsIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlKSk7CiAgICAgICAgIH0KICAg
ICAgICAgdmlydHVhbCBib29sIGdldE93blByb3BlcnR5U2xvdChFeGVjU3RhdGUqLCBjb25zdCBJ
ZGVudGlmaWVyJiwgUHJvcGVydHlTbG90Jik7CiAgICAgICAgIHZpcnR1YWwgYm9vbCBnZXRPd25Q
cm9wZXJ0eURlc2NyaXB0b3IoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIFByb3BlcnR5
RGVzY3JpcHRvciYpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3Iu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yLmNw
cAkocmV2aXNpb24gOTIyODMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJv
ci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2Nyw4ICsxNjcsOCBAQCBKU09iamVjdCogdGhyb3dT
eW50YXhFcnJvcihFeGVjU3RhdGUqIGV4CiAKIGNsYXNzIFN0cmljdE1vZGVUeXBlRXJyb3JGdW5j
dGlvbiA6IHB1YmxpYyBJbnRlcm5hbEZ1bmN0aW9uIHsKIHByaXZhdGU6Ci0gICAgU3RyaWN0TW9k
ZVR5cGVFcnJvckZ1bmN0aW9uKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IFVTdHJpbmcmIG1lc3NhZ2UpCi0g
ICAgICAgIDogSW50ZXJuYWxGdW5jdGlvbigmZXhlYy0+Z2xvYmFsRGF0YSgpLCBnbG9iYWxPYmpl
Y3QsIHN0cnVjdHVyZSwgZXhlYy0+Z2xvYmFsRGF0YSgpLnByb3BlcnR5TmFtZXMtPmVtcHR5SWRl
bnRpZmllcikKKyAgICBTdHJpY3RNb2RlVHlwZUVycm9yRnVuY3Rpb24oSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IFVTdHJpbmcmIG1lc3Nh
Z2UpCisgICAgICAgIDogSW50ZXJuYWxGdW5jdGlvbihnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSkK
ICAgICAgICAgLCBtX21lc3NhZ2UobWVzc2FnZSkKICAgICB7CiAgICAgfQpAQCAtMTc2LDcgKzE3
Niw5IEBAIHByaXZhdGU6CiBwdWJsaWM6CiAgICAgc3RhdGljIFN0cmljdE1vZGVUeXBlRXJyb3JG
dW5jdGlvbiogY3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IFVTdHJpbmcmIG1lc3NhZ2UpCiAgICAg
ewotICAgICAgICByZXR1cm4gbmV3IChhbGxvY2F0ZUNlbGw8U3RyaWN0TW9kZVR5cGVFcnJvckZ1
bmN0aW9uPigqZXhlYy0+aGVhcCgpKSkgU3RyaWN0TW9kZVR5cGVFcnJvckZ1bmN0aW9uKGV4ZWMs
IGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBtZXNzYWdlKTsKKyAgICAgICAgU3RyaWN0TW9kZVR5
cGVFcnJvckZ1bmN0aW9uKiBmdW5jdGlvbiA9IHZhbGlkYXRlQWxsb2M8U3RyaWN0TW9kZVR5cGVF
cnJvckZ1bmN0aW9uPihleGVjLT5nbG9iYWxEYXRhKCksIG5ldyAoYWxsb2NhdGVDZWxsPFN0cmlj
dE1vZGVUeXBlRXJyb3JGdW5jdGlvbj4oKmV4ZWMtPmhlYXAoKSkpIFN0cmljdE1vZGVUeXBlRXJy
b3JGdW5jdGlvbihnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgbWVzc2FnZSkpOworICAgICAgICBm
dW5jdGlvbi0+aW5pdFByb3BlcnRpZXMoZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5nbG9iYWxE
YXRhKCkucHJvcGVydHlOYW1lcy0+ZW1wdHlJZGVudGlmaWVyKTsKKyAgICAgICAgcmV0dXJuIGZ1
bmN0aW9uOwogICAgIH0KICAgICAKICAgICBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBjb25zdHJ1Y3RUaHJvd1R5cGVFcnJvcihFeGVjU3RhdGUqIGV4ZWMpCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvckNvbnN0cnVjdG9yLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvckNvbnN0cnVjdG9yLmNwcAko
cmV2aXNpb24gOTIyODMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvckNv
bnN0cnVjdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAsNyArMzAsNyBAQCBuYW1lc3BhY2Ug
SlNDIHsKIEFTU0VSVF9DTEFTU19GSVRTX0lOX0NFTEwoRXJyb3JDb25zdHJ1Y3Rvcik7CiAKIEVy
cm9yQ29uc3RydWN0b3I6OkVycm9yQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgRXJyb3JQcm90b3R5
cGUqIGVycm9yUHJvdG90eXBlKQotICAgIDogSW50ZXJuYWxGdW5jdGlvbigmZXhlYy0+Z2xvYmFs
RGF0YSgpLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgSWRlbnRpZmllcihleGVjLCBlcnJvclBy
b3RvdHlwZS0+Y2xhc3NJbmZvKCktPmNsYXNzTmFtZSkpCisgICAgOiBJbnRlcm5hbEZ1bmN0aW9u
KGdsb2JhbE9iamVjdCwgc3RydWN0dXJlKQogewogICAgIC8vIEVDTUEgMTUuMTEuMy4xIEVycm9y
LnByb3RvdHlwZQogICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKGV4ZWMtPmdsb2JhbERh
dGEoKSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLnByb3RvdHlwZSwgZXJyb3JQcm90b3R5cGUsIERv
bnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0Vycm9yQ29uc3RydWN0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9FcnJvckNvbnN0cnVjdG9yLmgJKHJldmlzaW9uIDkyMjgzKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JDb25zdHJ1Y3Rvci5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yMiw2ICsyMiw3IEBACiAjZGVmaW5lIEVycm9yQ29uc3RydWN0b3JfaAog
CiAjaW5jbHVkZSAiRXJyb3JJbnN0YW5jZS5oIgorI2luY2x1ZGUgIkVycm9yUHJvdG90eXBlLmgi
CiAjaW5jbHVkZSAiSW50ZXJuYWxGdW5jdGlvbi5oIgogCiBuYW1lc3BhY2UgSlNDIHsKQEAgLTMz
LDkgKzM0LDExIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBFcnJvckNvbnN0cnVjdG9yKEV4
ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgRXJyb3JQcm90b3R5cGUqKTsK
IAogICAgIHB1YmxpYzoKLSAgICAgICAgc3RhdGljIEVycm9yQ29uc3RydWN0b3IqIGNyZWF0ZShF
eGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSog
c3RydWN0dXJlLCBFcnJvclByb3RvdHlwZSogZXJyUHJvdG90eXBlKQorICAgICAgICBzdGF0aWMg
RXJyb3JDb25zdHJ1Y3RvciogY3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEVycm9yUHJvdG90eXBlKiBlcnJv
clByb3RvdHlwZSkKICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIG5ldyAoYWxsb2NhdGVD
ZWxsPEVycm9yQ29uc3RydWN0b3I+KCpleGVjLT5oZWFwKCkpKSBFcnJvckNvbnN0cnVjdG9yKGV4
ZWMsIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBlcnJQcm90b3R5cGUpOworICAgICAgICAgICAg
RXJyb3JDb25zdHJ1Y3RvciogY29uc3RydWN0b3IgPSB2YWxpZGF0ZUFsbG9jPEVycm9yQ29uc3Ry
dWN0b3I+KGV4ZWMtPmdsb2JhbERhdGEoKSwgbmV3IChhbGxvY2F0ZUNlbGw8RXJyb3JDb25zdHJ1
Y3Rvcj4oKmV4ZWMtPmhlYXAoKSkpIEVycm9yQ29uc3RydWN0b3IoZXhlYywgZ2xvYmFsT2JqZWN0
LCBzdHJ1Y3R1cmUsIGVycm9yUHJvdG90eXBlKSk7CisgICAgICAgICAgICBjb25zdHJ1Y3Rvci0+
aW5pdFByb3BlcnRpZXMoZXhlYy0+Z2xvYmFsRGF0YSgpLCBJZGVudGlmaWVyKGV4ZWMsIGVycm9y
UHJvdG90eXBlLT5jbGFzc0luZm8oKS0+Y2xhc3NOYW1lKSk7CisgICAgICAgICAgICByZXR1cm4g
Y29uc3RydWN0b3I7CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgcHJpdmF0ZToKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9ySW5zdGFuY2UuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9ySW5zdGFuY2UuY3BwCShyZXZp
c2lvbiA5MjI4MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9ySW5zdGFu
Y2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMCwyNyArMzAsMjggQEAgRXJyb3JJbnN0YW5jZTo6
RXJyb3JJbnN0YW5jZShKU0dsb2JhbERhdAogICAgICwgbV9hcHBlbmRTb3VyY2VUb01lc3NhZ2Uo
ZmFsc2UpCiB7CiAgICAgQVNTRVJUKGluaGVyaXRzKCZzX2luZm8pKTsKLSAgICBwdXREaXJlY3Qo
Z2xvYmFsRGF0YSwgZ2xvYmFsRGF0YS5wcm9wZXJ0eU5hbWVzLT5tZXNzYWdlLCBqc1N0cmluZygm
Z2xvYmFsRGF0YSwgIiIpLCBEb250RW51bSk7Ci19Ci0KLUVycm9ySW5zdGFuY2U6OkVycm9ySW5z
dGFuY2UoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgY29u
c3QgVVN0cmluZyYgbWVzc2FnZSkKLSAgICA6IEpTTm9uRmluYWxPYmplY3QoZ2xvYmFsRGF0YSwg
c3RydWN0dXJlKQotICAgICwgbV9hcHBlbmRTb3VyY2VUb01lc3NhZ2UoZmFsc2UpCi17Ci0gICAg
QVNTRVJUKGluaGVyaXRzKCZzX2luZm8pKTsKLSAgICBwdXREaXJlY3QoZ2xvYmFsRGF0YSwgZ2xv
YmFsRGF0YS5wcm9wZXJ0eU5hbWVzLT5tZXNzYWdlLCBqc1N0cmluZygmZ2xvYmFsRGF0YSwgbWVz
c2FnZSksIERvbnRFbnVtKTsKIH0KIAogRXJyb3JJbnN0YW5jZSogRXJyb3JJbnN0YW5jZTo6Y3Jl
YXRlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0
IFVTdHJpbmcmIG1lc3NhZ2UpCiB7Ci0gICAgcmV0dXJuIG5ldyAoYWxsb2NhdGVDZWxsPEVycm9y
SW5zdGFuY2U+KGdsb2JhbERhdGEuaGVhcCkpIEVycm9ySW5zdGFuY2UoZ2xvYmFsRGF0YSwgc3Ry
dWN0dXJlLCBtZXNzYWdlKTsKKyAgICBFcnJvckluc3RhbmNlKiBlcnJvckluc3RhbmNlID0gdmFs
aWRhdGVBbGxvYzxFcnJvckluc3RhbmNlPihnbG9iYWxEYXRhLCBuZXcgKGFsbG9jYXRlQ2VsbDxF
cnJvckluc3RhbmNlPihnbG9iYWxEYXRhLmhlYXApKSBFcnJvckluc3RhbmNlKGdsb2JhbERhdGEs
IHN0cnVjdHVyZSkpOworICAgIGVycm9ySW5zdGFuY2UtPnB1dERpcmVjdChnbG9iYWxEYXRhLCBn
bG9iYWxEYXRhLnByb3BlcnR5TmFtZXMtPm1lc3NhZ2UsIGpzU3RyaW5nKCZnbG9iYWxEYXRhLCBt
ZXNzYWdlKSwgRG9udEVudW0pOworICAgIHJldHVybiBlcnJvckluc3RhbmNlOwogfQogCiBFcnJv
ckluc3RhbmNlKiBFcnJvckluc3RhbmNlOjpjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSwgSlNWYWx1ZSBtZXNzYWdlKQogewotICAgIGlmIChtZXNzYWdlLmlzVW5k
ZWZpbmVkKCkpCi0gICAgICAgIHJldHVybiBuZXcgKGFsbG9jYXRlQ2VsbDxFcnJvckluc3RhbmNl
PigqZXhlYy0+aGVhcCgpKSkgRXJyb3JJbnN0YW5jZShleGVjLT5nbG9iYWxEYXRhKCksIHN0cnVj
dHVyZSk7Ci0gICAgcmV0dXJuIG5ldyAoYWxsb2NhdGVDZWxsPEVycm9ySW5zdGFuY2U+KCpleGVj
LT5oZWFwKCkpKSBFcnJvckluc3RhbmNlKGV4ZWMtPmdsb2JhbERhdGEoKSwgc3RydWN0dXJlLCBt
ZXNzYWdlLnRvU3RyaW5nKGV4ZWMpKTsKKyAgICBFcnJvckluc3RhbmNlKiBlcnJvckluc3RhbmNl
OworICAgIEpTU3RyaW5nKiBzdHJpbmc7CisgICAgaWYgKG1lc3NhZ2UuaXNVbmRlZmluZWQoKSkg
eworICAgICAgICBlcnJvckluc3RhbmNlID0gdmFsaWRhdGVBbGxvYzxFcnJvckluc3RhbmNlPihl
eGVjLT5nbG9iYWxEYXRhKCksIG5ldyAoYWxsb2NhdGVDZWxsPEVycm9ySW5zdGFuY2U+KCpleGVj
LT5oZWFwKCkpKSBFcnJvckluc3RhbmNlKGV4ZWMtPmdsb2JhbERhdGEoKSwgc3RydWN0dXJlKSk7
CisgICAgICAgIHN0cmluZyA9IGpzU3RyaW5nKCZleGVjLT5nbG9iYWxEYXRhKCksICIiKTsKKyAg
ICB9IGVsc2UgeworICAgICAgICBlcnJvckluc3RhbmNlID0gdmFsaWRhdGVBbGxvYzxFcnJvcklu
c3RhbmNlPihleGVjLT5nbG9iYWxEYXRhKCksIG5ldyAoYWxsb2NhdGVDZWxsPEVycm9ySW5zdGFu
Y2U+KCpleGVjLT5oZWFwKCkpKSBFcnJvckluc3RhbmNlKGV4ZWMtPmdsb2JhbERhdGEoKSwgc3Ry
dWN0dXJlKSk7CisgICAgICAgIHN0cmluZyA9IGpzU3RyaW5nKCZleGVjLT5nbG9iYWxEYXRhKCks
IG1lc3NhZ2UudG9TdHJpbmcoZXhlYykpOworICAgIH0KKyAgICBlcnJvckluc3RhbmNlLT5wdXRE
aXJlY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5nbG9iYWxEYXRhKCkucHJvcGVydHlOYW1l
cy0+bWVzc2FnZSwgc3RyaW5nLCBEb250RW51bSk7CisgICAgcmV0dXJuIGVycm9ySW5zdGFuY2U7
CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvRXJyb3JJbnN0YW5jZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0Vycm9ySW5zdGFuY2UuaAkocmV2aXNpb24gOTIyODMpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9FcnJvckluc3RhbmNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ1
LDggKzQ1LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc0Vycm9y
SW5zdGFuY2UoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAKICAgICBwcm90ZWN0ZWQ6Ci0gICAg
ICAgIGV4cGxpY2l0IEVycm9ySW5zdGFuY2UoSlNHbG9iYWxEYXRhJiwgU3RydWN0dXJlKik7Ci0g
ICAgICAgIGV4cGxpY2l0IEVycm9ySW5zdGFuY2UoSlNHbG9iYWxEYXRhJiwgU3RydWN0dXJlKiwg
Y29uc3QgVVN0cmluZyYpOworICAgICAgICBFcnJvckluc3RhbmNlKEpTR2xvYmFsRGF0YSYsIFN0
cnVjdHVyZSopOwogCiAgICAgICAgIGJvb2wgbV9hcHBlbmRTb3VyY2VUb01lc3NhZ2U7CiAgICAg
fTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yUHJvdG90eXBlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvclByb3Rv
dHlwZS5jcHAJKHJldmlzaW9uIDkyMjgzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvRXJyb3JQcm90b3R5cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Myw4ICs1Myw2IEBAIEFT
U0VSVF9DTEFTU19GSVRTX0lOX0NFTEwoRXJyb3JQcm90b3R5cGUKIEVycm9yUHJvdG90eXBlOjpF
cnJvclByb3RvdHlwZShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIFN0cnVjdHVyZSogc3RydWN0dXJlKQogICAgIDogRXJyb3JJbnN0YW5jZShleGVjLT5nbG9i
YWxEYXRhKCksIHN0cnVjdHVyZSkKIHsKLSAgICBwdXREaXJlY3QoZXhlYy0+Z2xvYmFsRGF0YSgp
LCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkubmFtZSwganNOb250cml2aWFsU3RyaW5nKGV4ZWMsICJF
cnJvciIpLCBEb250RW51bSk7Ci0KICAgICBBU1NFUlQoaW5oZXJpdHMoJnNfaW5mbykpOwogICAg
IHB1dEFub255bW91c1ZhbHVlKGdsb2JhbE9iamVjdC0+Z2xvYmFsRGF0YSgpLCAwLCBnbG9iYWxP
YmplY3QpOwogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JQcm90
b3R5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJv
clByb3RvdHlwZS5oCShyZXZpc2lvbiA5MjI4MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0Vycm9yUHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM0LDcgKzM0LDkgQEAg
bmFtZXNwYWNlIEpTQyB7CiAgICAgcHVibGljOgogICAgICAgICBzdGF0aWMgRXJyb3JQcm90b3R5
cGUqIGNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IFN0cnVjdHVyZSogc3RydWN0dXJlKQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gbmV3
IChhbGxvY2F0ZUNlbGw8RXJyb3JQcm90b3R5cGU+KCpleGVjLT5oZWFwKCkpKSBFcnJvclByb3Rv
dHlwZShleGVjLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSk7CisgICAgICAgICAgICBFcnJvclBy
b3RvdHlwZSogZXJyb3JQcm90b3R5cGUgPSB2YWxpZGF0ZUFsbG9jPEVycm9yUHJvdG90eXBlPihl
eGVjLT5nbG9iYWxEYXRhKCksIG5ldyAoYWxsb2NhdGVDZWxsPEVycm9yUHJvdG90eXBlPigqZXhl
Yy0+aGVhcCgpKSkgRXJyb3JQcm90b3R5cGUoZXhlYywgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUp
KTsKKyAgICAgICAgICAgIGVycm9yUHJvdG90eXBlLT5wdXREaXJlY3QoZXhlYy0+Z2xvYmFsRGF0
YSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkubmFtZSwganNOb250cml2aWFsU3RyaW5nKGV4ZWMs
ICJFcnJvciIpLCBEb250RW51bSk7CisgICAgICAgICAgICByZXR1cm4gZXJyb3JQcm90b3R5cGU7
CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIHN0YXRpYyBjb25zdCBDbGFzc0luZm8gc19p
bmZvOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhjZXB0aW9uSGVscGVy
cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhjZXB0
aW9uSGVscGVycy5jcHAJKHJldmlzaW9uIDkyMjgzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvRXhjZXB0aW9uSGVscGVycy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUxLDcgKzUx
LDcgQEAgcHJpdmF0ZToKIHB1YmxpYzoKICAgICBzdGF0aWMgSW50ZXJydXB0ZWRFeGVjdXRpb25F
cnJvciogY3JlYXRlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSkKICAgICB7Ci0gICAgICAgIHJl
dHVybiBuZXcgKGFsbG9jYXRlQ2VsbDxJbnRlcnJ1cHRlZEV4ZWN1dGlvbkVycm9yPihnbG9iYWxE
YXRhLmhlYXApKSBJbnRlcnJ1cHRlZEV4ZWN1dGlvbkVycm9yKGdsb2JhbERhdGEpOworICAgICAg
ICByZXR1cm4gdmFsaWRhdGVBbGxvYzxJbnRlcnJ1cHRlZEV4ZWN1dGlvbkVycm9yPihnbG9iYWxE
YXRhLCBuZXcgKGFsbG9jYXRlQ2VsbDxJbnRlcnJ1cHRlZEV4ZWN1dGlvbkVycm9yPihnbG9iYWxE
YXRhLmhlYXApKSBJbnRlcnJ1cHRlZEV4ZWN1dGlvbkVycm9yKGdsb2JhbERhdGEpKTsKICAgICB9
CiAKICAgICB2aXJ0dWFsIENvbXBsVHlwZSBleGNlcHRpb25UeXBlKCkgY29uc3QgeyByZXR1cm4g
SW50ZXJydXB0ZWQ7IH0KQEAgLTc0LDcgKzc0LDcgQEAgcHJpdmF0ZToKIHB1YmxpYzoKICAgICBz
dGF0aWMgVGVybWluYXRlZEV4ZWN1dGlvbkVycm9yKiBjcmVhdGUoSlNHbG9iYWxEYXRhJiBnbG9i
YWxEYXRhKQogICAgIHsKLSAgICAgICAgcmV0dXJuIG5ldyAoYWxsb2NhdGVDZWxsPFRlcm1pbmF0
ZWRFeGVjdXRpb25FcnJvcj4oZ2xvYmFsRGF0YS5oZWFwKSkgVGVybWluYXRlZEV4ZWN1dGlvbkVy
cm9yKGdsb2JhbERhdGEpOworICAgICAgICByZXR1cm4gdmFsaWRhdGVBbGxvYzxUZXJtaW5hdGVk
RXhlY3V0aW9uRXJyb3I+KGdsb2JhbERhdGEsIG5ldyAoYWxsb2NhdGVDZWxsPFRlcm1pbmF0ZWRF
eGVjdXRpb25FcnJvcj4oZ2xvYmFsRGF0YS5oZWFwKSkgVGVybWluYXRlZEV4ZWN1dGlvbkVycm9y
KGdsb2JhbERhdGEpKTsKICAgICB9CiAKICAgICB2aXJ0dWFsIENvbXBsVHlwZSBleGNlcHRpb25U
eXBlKCkgY29uc3QgeyByZXR1cm4gVGVybWluYXRlZDsgfQpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5jcHAJKHJldmlzaW9uIDkyMjgzKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTE0NCw3ICsxNDQsNiBAQCBGdW5jdGlvbkV4ZWN1dGFibGU6OkZ1bmN0aW9uRXhlY3V0YWJs
ZShKCiB7CiAgICAgbV9maXJzdExpbmUgPSBmaXJzdExpbmU7CiAgICAgbV9sYXN0TGluZSA9IGxh
c3RMaW5lOwotICAgIG1fbmFtZVZhbHVlLnNldChnbG9iYWxEYXRhLCB0aGlzLCBqc1N0cmluZygm
Z2xvYmFsRGF0YSwgbmFtZS51c3RyaW5nKCkpKTsKIH0KIAogRnVuY3Rpb25FeGVjdXRhYmxlOjpG
dW5jdGlvbkV4ZWN1dGFibGUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBuYW1l
LCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIGJvb2wgZm9yY2VVc2VzQXJndW1lbnRzLCBGdW5j
dGlvblBhcmFtZXRlcnMqIHBhcmFtZXRlcnMsIGJvb2wgaW5TdHJpY3RDb250ZXh0LCBpbnQgZmly
c3RMaW5lLCBpbnQgbGFzdExpbmUpCkBAIC0xNTcsNyArMTU2LDYgQEAgRnVuY3Rpb25FeGVjdXRh
YmxlOjpGdW5jdGlvbkV4ZWN1dGFibGUoRQogewogICAgIG1fZmlyc3RMaW5lID0gZmlyc3RMaW5l
OwogICAgIG1fbGFzdExpbmUgPSBsYXN0TGluZTsKLSAgICBtX25hbWVWYWx1ZS5zZXQoZXhlYy0+
Z2xvYmFsRGF0YSgpLCB0aGlzLCBqc1N0cmluZygmZXhlYy0+Z2xvYmFsRGF0YSgpLCBuYW1lLnVz
dHJpbmcoKSkpOwogfQogCiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4
ZWN1dGFibGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9F
eGVjdXRhYmxlLmgJKHJldmlzaW9uIDkyMjgzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvRXhlY3V0YWJsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC02OCw3ICs2OCw3IEBAIG5hbWVz
cGFjZSBKU0MgewogICAgIHB1YmxpYzoKICAgICAgICAgc3RhdGljIEV4ZWN1dGFibGVCYXNlKiBj
cmVhdGUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgaW50
IG51bVBhcmFtZXRlcnMpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBuZXcgKGFsbG9j
YXRlQ2VsbDxFeGVjdXRhYmxlQmFzZT4oZ2xvYmFsRGF0YS5oZWFwKSkgRXhlY3V0YWJsZUJhc2Uo
Z2xvYmFsRGF0YSwgc3RydWN0dXJlLCBudW1QYXJhbWV0ZXJzKTsKKyAgICAgICAgICAgIHJldHVy
biB2YWxpZGF0ZUFsbG9jPEV4ZWN1dGFibGVCYXNlPihnbG9iYWxEYXRhLCBuZXcgKGFsbG9jYXRl
Q2VsbDxFeGVjdXRhYmxlQmFzZT4oZ2xvYmFsRGF0YS5oZWFwKSkgRXhlY3V0YWJsZUJhc2UoZ2xv
YmFsRGF0YSwgc3RydWN0dXJlLCBudW1QYXJhbWV0ZXJzKSk7CiAgICAgICAgIH0KIAogICAgICAg
ICBib29sIGlzSG9zdEZ1bmN0aW9uKCkgY29uc3QKQEAgLTE3MiwxMyArMTcyLDEzIEBAIG5hbWVz
cGFjZSBKU0MgewogICAgICAgICBzdGF0aWMgTmF0aXZlRXhlY3V0YWJsZSogY3JlYXRlKEpTR2xv
YmFsRGF0YSYgZ2xvYmFsRGF0YSwgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyIGNhbGxUaHVuaywgTmF0
aXZlRnVuY3Rpb24gZnVuY3Rpb24sIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciBjb25zdHJ1Y3RUaHVu
aywgTmF0aXZlRnVuY3Rpb24gY29uc3RydWN0b3IpCiAgICAgICAgIHsKICAgICAgICAgICAgIGlm
ICghY2FsbFRodW5rKQotICAgICAgICAgICAgICAgIHJldHVybiBuZXcgKGFsbG9jYXRlQ2VsbDxO
YXRpdmVFeGVjdXRhYmxlPihnbG9iYWxEYXRhLmhlYXApKSBOYXRpdmVFeGVjdXRhYmxlKGdsb2Jh
bERhdGEsIEpJVENvZGUoKSwgZnVuY3Rpb24sIEpJVENvZGUoKSwgY29uc3RydWN0b3IpOwotICAg
ICAgICAgICAgcmV0dXJuIG5ldyAoYWxsb2NhdGVDZWxsPE5hdGl2ZUV4ZWN1dGFibGU+KGdsb2Jh
bERhdGEuaGVhcCkpIE5hdGl2ZUV4ZWN1dGFibGUoZ2xvYmFsRGF0YSwgSklUQ29kZTo6SG9zdEZ1
bmN0aW9uKGNhbGxUaHVuayksIGZ1bmN0aW9uLCBKSVRDb2RlOjpIb3N0RnVuY3Rpb24oY29uc3Ry
dWN0VGh1bmspLCBjb25zdHJ1Y3Rvcik7CisgICAgICAgICAgICAgICAgcmV0dXJuIHZhbGlkYXRl
QWxsb2M8TmF0aXZlRXhlY3V0YWJsZT4oZ2xvYmFsRGF0YSwgbmV3IChhbGxvY2F0ZUNlbGw8TmF0
aXZlRXhlY3V0YWJsZT4oZ2xvYmFsRGF0YS5oZWFwKSkgTmF0aXZlRXhlY3V0YWJsZShnbG9iYWxE
YXRhLCBKSVRDb2RlKCksIGZ1bmN0aW9uLCBKSVRDb2RlKCksIGNvbnN0cnVjdG9yKSk7CisgICAg
ICAgICAgICByZXR1cm4gdmFsaWRhdGVBbGxvYzxOYXRpdmVFeGVjdXRhYmxlPihnbG9iYWxEYXRh
LCBuZXcgKGFsbG9jYXRlQ2VsbDxOYXRpdmVFeGVjdXRhYmxlPihnbG9iYWxEYXRhLmhlYXApKSBO
YXRpdmVFeGVjdXRhYmxlKGdsb2JhbERhdGEsIEpJVENvZGU6Okhvc3RGdW5jdGlvbihjYWxsVGh1
bmspLCBmdW5jdGlvbiwgSklUQ29kZTo6SG9zdEZ1bmN0aW9uKGNvbnN0cnVjdFRodW5rKSwgY29u
c3RydWN0b3IpKTsKICAgICAgICAgfQogI2Vsc2UKICAgICAgICAgc3RhdGljIE5hdGl2ZUV4ZWN1
dGFibGUqIGNyZWF0ZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIE5hdGl2ZUZ1bmN0aW9uIGZ1
bmN0aW9uLCBOYXRpdmVGdW5jdGlvbiBjb25zdHJ1Y3RvcikKICAgICAgICAgewotICAgICAgICAg
ICAgcmV0dXJuIG5ldyAoYWxsb2NhdGVDZWxsPE5hdGl2ZUV4ZWN1dGFibGU+KGdsb2JhbERhdGEu
aGVhcCkpIE5hdGl2ZUV4ZWN1dGFibGUoZ2xvYmFsRGF0YSwgZnVuY3Rpb24sIGNvbnN0cnVjdG9y
KTsKKyAgICAgICAgICAgIHJldHVybiB2YWxpZGF0ZUFsbG9jPE5hdGl2ZUV4ZWN1dGFibGU+KGds
b2JhbERhdGEsIG5ldyAoYWxsb2NhdGVDZWxsPE5hdGl2ZUV4ZWN1dGFibGU+KGdsb2JhbERhdGEu
aGVhcCkpIE5hdGl2ZUV4ZWN1dGFibGUoZ2xvYmFsRGF0YSwgZnVuY3Rpb24sIGNvbnN0cnVjdG9y
KSk7CiAgICAgICAgIH0KICNlbmRpZgogCkBAIC0yOTgsNyArMjk4LDcgQEAgbmFtZXNwYWNlIEpT
QyB7CiAKICAgICAgICAgc3RhdGljIEV2YWxFeGVjdXRhYmxlKiBjcmVhdGUoRXhlY1N0YXRlKiBl
eGVjLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIGJvb2wgaXNJblN0cmljdENvbnRleHQpIAog
ICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gbmV3IChhbGxvY2F0ZUNlbGw8RXZhbEV4ZWN1
dGFibGU+KCpleGVjLT5oZWFwKCkpKSBFdmFsRXhlY3V0YWJsZShleGVjLCBzb3VyY2UsIGlzSW5T
dHJpY3RDb250ZXh0KTsgCisgICAgICAgICAgICByZXR1cm4gdmFsaWRhdGVBbGxvYzxFdmFsRXhl
Y3V0YWJsZT4oZXhlYy0+Z2xvYmFsRGF0YSgpLCBuZXcgKGFsbG9jYXRlQ2VsbDxFdmFsRXhlY3V0
YWJsZT4oKmV4ZWMtPmhlYXAoKSkpIEV2YWxFeGVjdXRhYmxlKGV4ZWMsIHNvdXJjZSwgaXNJblN0
cmljdENvbnRleHQpKTsKICAgICAgICAgfQogCiAjaWYgRU5BQkxFKEpJVCkKQEAgLTMyOCw3ICsz
MjgsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBwdWJsaWM6CiAgICAgICAgIHN0YXRpYyBQcm9n
cmFtRXhlY3V0YWJsZSogY3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgU291cmNlQ29kZSYg
c291cmNlKQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gbmV3IChhbGxvY2F0ZUNlbGw8
UHJvZ3JhbUV4ZWN1dGFibGU+KCpleGVjLT5oZWFwKCkpKSBQcm9ncmFtRXhlY3V0YWJsZShleGVj
LCBzb3VyY2UpOworICAgICAgICAgICAgcmV0dXJuIHZhbGlkYXRlQWxsb2M8UHJvZ3JhbUV4ZWN1
dGFibGU+KGV4ZWMtPmdsb2JhbERhdGEoKSwgbmV3IChhbGxvY2F0ZUNlbGw8UHJvZ3JhbUV4ZWN1
dGFibGU+KCpleGVjLT5oZWFwKCkpKSBQcm9ncmFtRXhlY3V0YWJsZShleGVjLCBzb3VyY2UpKTsK
ICAgICAgICAgfQogCiAgICAgICAgIH5Qcm9ncmFtRXhlY3V0YWJsZSgpOwpAQCAtMzgxLDEyICsz
ODEsMTggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgcHVibGljOgogICAgICAgICBzdGF0aWMgRnVu
Y3Rpb25FeGVjdXRhYmxlKiBjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVy
JiBuYW1lLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIGJvb2wgZm9yY2VVc2VzQXJndW1lbnRz
LCBGdW5jdGlvblBhcmFtZXRlcnMqIHBhcmFtZXRlcnMsIGJvb2wgaXNJblN0cmljdENvbnRleHQs
IGludCBmaXJzdExpbmUsIGludCBsYXN0TGluZSkKICAgICAgICAgewotICAgICAgICAgICAgcmV0
dXJuIG5ldyAoYWxsb2NhdGVDZWxsPEZ1bmN0aW9uRXhlY3V0YWJsZT4oKmV4ZWMtPmhlYXAoKSkp
IEZ1bmN0aW9uRXhlY3V0YWJsZShleGVjLCBuYW1lLCBzb3VyY2UsIGZvcmNlVXNlc0FyZ3VtZW50
cywgcGFyYW1ldGVycywgaXNJblN0cmljdENvbnRleHQsIGZpcnN0TGluZSwgbGFzdExpbmUpOwor
ICAgICAgICAgICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBmdW5jdGlvbiA9IHZhbGlkYXRlQWxsb2M8
RnVuY3Rpb25FeGVjdXRhYmxlPihleGVjLT5nbG9iYWxEYXRhKCksIG5ldyAoYWxsb2NhdGVDZWxs
PEZ1bmN0aW9uRXhlY3V0YWJsZT4oKmV4ZWMtPmhlYXAoKSkpIEZ1bmN0aW9uRXhlY3V0YWJsZShl
eGVjLCBuYW1lLCBzb3VyY2UsIGZvcmNlVXNlc0FyZ3VtZW50cywgcGFyYW1ldGVycywgaXNJblN0
cmljdENvbnRleHQsIGZpcnN0TGluZSwgbGFzdExpbmUpKTsKKyAgICAgICAgICAgIEpTU3RyaW5n
KiBuYW1lU3RyaW5nID0ganNTdHJpbmcoJmV4ZWMtPmdsb2JhbERhdGEoKSwgbmFtZS51c3RyaW5n
KCkpOworICAgICAgICAgICAgZnVuY3Rpb24tPm1fbmFtZVZhbHVlLnNldChleGVjLT5nbG9iYWxE
YXRhKCksIGZ1bmN0aW9uLCBuYW1lU3RyaW5nKTsKKyAgICAgICAgICAgIHJldHVybiBmdW5jdGlv
bjsKICAgICAgICAgfQogCiAgICAgICAgIHN0YXRpYyBGdW5jdGlvbkV4ZWN1dGFibGUqIGNyZWF0
ZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIGNvbnN0IElkZW50aWZpZXImIG5hbWUsIGNvbnN0
IFNvdXJjZUNvZGUmIHNvdXJjZSwgYm9vbCBmb3JjZVVzZXNBcmd1bWVudHMsIEZ1bmN0aW9uUGFy
YW1ldGVycyogcGFyYW1ldGVycywgYm9vbCBpc0luU3RyaWN0Q29udGV4dCwgaW50IGZpcnN0TGlu
ZSwgaW50IGxhc3RMaW5lKQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gbmV3IChhbGxv
Y2F0ZUNlbGw8RnVuY3Rpb25FeGVjdXRhYmxlPihnbG9iYWxEYXRhLmhlYXApKSBGdW5jdGlvbkV4
ZWN1dGFibGUoZ2xvYmFsRGF0YSwgbmFtZSwgc291cmNlLCBmb3JjZVVzZXNBcmd1bWVudHMsIHBh
cmFtZXRlcnMsIGlzSW5TdHJpY3RDb250ZXh0LCBmaXJzdExpbmUsIGxhc3RMaW5lKTsKKyAgICAg
ICAgICAgIEZ1bmN0aW9uRXhlY3V0YWJsZSogZnVuY3Rpb24gPSB2YWxpZGF0ZUFsbG9jPEZ1bmN0
aW9uRXhlY3V0YWJsZT4oZ2xvYmFsRGF0YSwgbmV3IChhbGxvY2F0ZUNlbGw8RnVuY3Rpb25FeGVj
dXRhYmxlPihnbG9iYWxEYXRhLmhlYXApKSBGdW5jdGlvbkV4ZWN1dGFibGUoZ2xvYmFsRGF0YSwg
bmFtZSwgc291cmNlLCBmb3JjZVVzZXNBcmd1bWVudHMsIHBhcmFtZXRlcnMsIGlzSW5TdHJpY3RD
b250ZXh0LCBmaXJzdExpbmUsIGxhc3RMaW5lKSk7CisgICAgICAgICAgICBKU1N0cmluZyogbmFt
ZVN0cmluZyA9IGpzU3RyaW5nKCZnbG9iYWxEYXRhLCBuYW1lLnVzdHJpbmcoKSk7CisgICAgICAg
ICAgICBmdW5jdGlvbi0+bV9uYW1lVmFsdWUuc2V0KGdsb2JhbERhdGEsIGZ1bmN0aW9uLCBuYW1l
U3RyaW5nKTsKKyAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbjsKICAgICAgICAgfQogCiAgICAg
ICAgIEpTRnVuY3Rpb24qIG1ha2UoRXhlY1N0YXRlKiBleGVjLCBTY29wZUNoYWluTm9kZSogc2Nv
cGVDaGFpbikKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uQ29u
c3RydWN0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0Z1bmN0aW9uQ29uc3RydWN0b3IuY3BwCShyZXZpc2lvbiA5MjI4MykKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uQ29uc3RydWN0b3IuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0zOCw3ICszOCw3IEBAIG5hbWVzcGFjZSBKU0MgewogQVNTRVJUX0NMQVNTX0ZJVFNfSU5f
Q0VMTChGdW5jdGlvbkNvbnN0cnVjdG9yKTsKIAogRnVuY3Rpb25Db25zdHJ1Y3Rvcjo6RnVuY3Rp
b25Db25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBGdW5jdGlvblByb3RvdHlwZSogZnVuY3Rpb25Qcm90
b3R5cGUpCi0gICAgOiBJbnRlcm5hbEZ1bmN0aW9uKCZleGVjLT5nbG9iYWxEYXRhKCksIGdsb2Jh
bE9iamVjdCwgc3RydWN0dXJlLCBJZGVudGlmaWVyKGV4ZWMsIGZ1bmN0aW9uUHJvdG90eXBlLT5j
bGFzc0luZm8oKS0+Y2xhc3NOYW1lKSkKKyAgICA6IEludGVybmFsRnVuY3Rpb24oZ2xvYmFsT2Jq
ZWN0LCBzdHJ1Y3R1cmUpCiB7CiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24oZXhlYy0+
Z2xvYmFsRGF0YSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkucHJvdG90eXBlLCBmdW5jdGlvblBy
b3RvdHlwZSwgRG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkpOwogCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Db25zdHJ1Y3Rvci5o
CShyZXZpc2lvbiA5MjI4MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0
aW9uQ29uc3RydWN0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtMjEsMjAgKzIxLDIxIEBACiAjaWZu
ZGVmIEZ1bmN0aW9uQ29uc3RydWN0b3JfaAogI2RlZmluZSBGdW5jdGlvbkNvbnN0cnVjdG9yX2gK
IAorI2luY2x1ZGUgIkZ1bmN0aW9uUHJvdG90eXBlLmgiCiAjaW5jbHVkZSAiSW50ZXJuYWxGdW5j
dGlvbi5oIgogCiBuYW1lc3BhY2UgSlNDIHsKIAotICAgIGNsYXNzIEZ1bmN0aW9uUHJvdG90eXBl
OwotCiAgICAgY2xhc3MgRnVuY3Rpb25Db25zdHJ1Y3RvciA6IHB1YmxpYyBJbnRlcm5hbEZ1bmN0
aW9uIHsKICAgICBwcml2YXRlOgogICAgICAgICBGdW5jdGlvbkNvbnN0cnVjdG9yKEV4ZWNTdGF0
ZSosIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgRnVuY3Rpb25Qcm90b3R5cGUqKTsKICAg
ICAKICAgICBwdWJsaWM6Ci0gICAgICAgIHN0YXRpYyBGdW5jdGlvbkNvbnN0cnVjdG9yKiBjcmVh
dGUoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSwgRnVuY3Rpb25Qcm90b3R5cGUqIGZ1bmNQcm90b3R5cGUpCisgICAgICAg
IHN0YXRpYyBGdW5jdGlvbkNvbnN0cnVjdG9yKiBjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgRnVuY3Rpb25Q
cm90b3R5cGUqIGZ1bmN0aW9uUHJvdG90eXBlKQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1
cm4gbmV3IChhbGxvY2F0ZUNlbGw8RnVuY3Rpb25Db25zdHJ1Y3Rvcj4oKmV4ZWMtPmhlYXAoKSkp
IEZ1bmN0aW9uQ29uc3RydWN0b3IoZXhlYywgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIGZ1bmNQ
cm90b3R5cGUpOworICAgICAgICAgICAgRnVuY3Rpb25Db25zdHJ1Y3RvciogY29uc3RydWN0b3Ig
PSB2YWxpZGF0ZUFsbG9jPEZ1bmN0aW9uQ29uc3RydWN0b3I+KGV4ZWMtPmdsb2JhbERhdGEoKSwg
bmV3IChhbGxvY2F0ZUNlbGw8RnVuY3Rpb25Db25zdHJ1Y3Rvcj4oKmV4ZWMtPmhlYXAoKSkpIEZ1
bmN0aW9uQ29uc3RydWN0b3IoZXhlYywgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIGZ1bmN0aW9u
UHJvdG90eXBlKSk7CisgICAgICAgICAgICBjb25zdHJ1Y3Rvci0+aW5pdFByb3BlcnRpZXMoZXhl
Yy0+Z2xvYmFsRGF0YSgpLCBJZGVudGlmaWVyKGV4ZWMsIGZ1bmN0aW9uUHJvdG90eXBlLT5jbGFz
c0luZm8oKS0+Y2xhc3NOYW1lKSk7CisgICAgICAgICAgICByZXR1cm4gY29uc3RydWN0b3I7CiAg
ICAgICAgIH0KIAogICAgIHByaXZhdGU6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9GdW5jdGlvblByb3RvdHlwZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUuY3BwCShyZXZpc2lvbiA5MjI4MykKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uUHJvdG90eXBlLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMzgsNyArMzgsNyBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBmdW5jCiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlv
blByb3RvRnVuY0NhbGwoRXhlY1N0YXRlKik7CiAKIEZ1bmN0aW9uUHJvdG90eXBlOjpGdW5jdGlv
blByb3RvdHlwZShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IFN0cnVjdHVyZSogc3RydWN0dXJlKQotICAgIDogSW50ZXJuYWxGdW5jdGlvbigmZXhlYy0+Z2xv
YmFsRGF0YSgpLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgZXhlYy0+cHJvcGVydHlOYW1lcygp
Lm51bGxJZGVudGlmaWVyKQorICAgIDogSW50ZXJuYWxGdW5jdGlvbihnbG9iYWxPYmplY3QsIHN0
cnVjdHVyZSkKIHsKICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbihleGVjLT5nbG9iYWxE
YXRhKCksIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5sZW5ndGgsIGpzTnVtYmVyKDApLCBEb250RGVs
ZXRlIHwgUmVhZE9ubHkgfCBEb250RW51bSk7CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9GdW5jdGlvblByb3RvdHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uUHJvdG90eXBlLmgJKHJldmlzaW9uIDkyMjgzKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUuaAkod29y
a2luZyBjb3B5KQpAQCAtMzIsNyArMzIsOSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBwdWJsaWM6
CiAgICAgICAgIHN0YXRpYyBGdW5jdGlvblByb3RvdHlwZSogY3JlYXRlKEV4ZWNTdGF0ZSogZXhl
YywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAg
ICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBuZXcgKGFsbG9jYXRlQ2VsbDxGdW5jdGlvblBy
b3RvdHlwZT4oKmV4ZWMtPmhlYXAoKSkpIEZ1bmN0aW9uUHJvdG90eXBlKGV4ZWMsIGdsb2JhbE9i
amVjdCwgc3RydWN0dXJlKTsKKyAgICAgICAgICAgIEZ1bmN0aW9uUHJvdG90eXBlKiBwcm90b3R5
cGUgPSB2YWxpZGF0ZUFsbG9jPEZ1bmN0aW9uUHJvdG90eXBlPihleGVjLT5nbG9iYWxEYXRhKCks
IG5ldyAoYWxsb2NhdGVDZWxsPEZ1bmN0aW9uUHJvdG90eXBlPigqZXhlYy0+aGVhcCgpKSkgRnVu
Y3Rpb25Qcm90b3R5cGUoZXhlYywgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUpKTsKKyAgICAgICAg
ICAgIHByb3RvdHlwZS0+aW5pdFByb3BlcnRpZXMoZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5w
cm9wZXJ0eU5hbWVzKCkubnVsbElkZW50aWZpZXIpOworICAgICAgICAgICAgcmV0dXJuIHByb3Rv
dHlwZTsKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgdm9pZCBhZGRGdW5jdGlvblByb3Bl
cnRpZXMoRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqIGZ1bmN0aW9uU3Ry
dWN0dXJlLCBKU0Z1bmN0aW9uKiogY2FsbEZ1bmN0aW9uLCBKU0Z1bmN0aW9uKiogYXBwbHlGdW5j
dGlvbik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZXR0ZXJTZXR0ZXIu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZXR0ZXJTZXR0
ZXIuaAkocmV2aXNpb24gOTIyODMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9H
ZXR0ZXJTZXR0ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNDYsNyArNDYsNyBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICBwdWJsaWM6CiAgICAgICAgIHN0YXRpYyBHZXR0ZXJTZXR0ZXIqIGNyZWF0ZShF
eGVjU3RhdGUqIGV4ZWMpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBuZXcgKGFsbG9j
YXRlQ2VsbDxHZXR0ZXJTZXR0ZXI+KCpleGVjLT5oZWFwKCkpKSBHZXR0ZXJTZXR0ZXIoZXhlYyk7
CisgICAgICAgICAgICByZXR1cm4gdmFsaWRhdGVBbGxvYzxHZXR0ZXJTZXR0ZXI+KGV4ZWMtPmds
b2JhbERhdGEoKSwgbmV3IChhbGxvY2F0ZUNlbGw8R2V0dGVyU2V0dGVyPigqZXhlYy0+aGVhcCgp
KSkgR2V0dGVyU2V0dGVyKGV4ZWMpKTsKICAgICAgICAgfQogCiAgICAgICAgIHZpcnR1YWwgdm9p
ZCB2aXNpdENoaWxkcmVuKFNsb3RWaXNpdG9yJik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9JbnRlcm5hbEZ1bmN0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9JbnRlcm5hbEZ1bmN0aW9uLmNwcAkocmV2aXNpb24gOTIyODMp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRlcm5hbEZ1bmN0aW9uLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNDEsMTEgKzQxLDEwIEBAIEludGVybmFsRnVuY3Rpb246OkludGVy
bmFsRnVuY3Rpb24oVlB0clMKIHsKIH0KIAotSW50ZXJuYWxGdW5jdGlvbjo6SW50ZXJuYWxGdW5j
dGlvbihKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBjb25zdCBJZGVudGlmaWVyJiBuYW1lKQorSW50ZXJu
YWxGdW5jdGlvbjo6SW50ZXJuYWxGdW5jdGlvbihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAgICA6IEpTT2JqZWN0V2l0aEdsb2JhbE9iamVjdChn
bG9iYWxPYmplY3QsIHN0cnVjdHVyZSkKIHsKICAgICBBU1NFUlQoaW5oZXJpdHMoJnNfaW5mbykp
OwotICAgIHB1dERpcmVjdCgqZ2xvYmFsRGF0YSwgZ2xvYmFsRGF0YS0+cHJvcGVydHlOYW1lcy0+
bmFtZSwganNTdHJpbmcoZ2xvYmFsRGF0YSwgbmFtZS5pc051bGwoKSA/ICIiIDogbmFtZS51c3Ry
aW5nKCkpLCBEb250RGVsZXRlIHwgUmVhZE9ubHkgfCBEb250RW51bSk7CiB9CiAKIGNvbnN0IFVT
dHJpbmcmIEludGVybmFsRnVuY3Rpb246Om5hbWUoRXhlY1N0YXRlKiBleGVjKQpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50ZXJuYWxGdW5jdGlvbi5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGVybmFsRnVuY3Rpb24uaAkocmV2
aXNpb24gOTIyODMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRlcm5hbEZ1
bmN0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTUwLDcgKzUwLDExIEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgICAgICAvLyBPbmx5IHVzZWQgdG8gYWxsb3cgdXMgdG8gZGV0ZXJtaW5lIHRoZSBKU0Z1
bmN0aW9uIHZwdHIKICAgICAgICAgSW50ZXJuYWxGdW5jdGlvbihWUHRyU3RlYWxpbmdIYWNrVHlw
ZSk7CiAKLSAgICAgICAgSW50ZXJuYWxGdW5jdGlvbihKU0dsb2JhbERhdGEqLCBKU0dsb2JhbE9i
amVjdCosIFN0cnVjdHVyZSosIGNvbnN0IElkZW50aWZpZXImKTsKKyAgICAgICAgSW50ZXJuYWxG
dW5jdGlvbihKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSopOworICAgICAgICB2b2lkIGluaXRQ
cm9wZXJ0aWVzKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgY29uc3QgSWRlbnRpZmllciYgbmFt
ZSkKKyAgICAgICAgeworICAgICAgICAgICAgcHV0RGlyZWN0KGdsb2JhbERhdGEsIGdsb2JhbERh
dGEucHJvcGVydHlOYW1lcy0+bmFtZSwganNTdHJpbmcoJmdsb2JhbERhdGEsIG5hbWUuaXNOdWxs
KCkgPyAiIiA6IG5hbWUudXN0cmluZygpKSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5IHwgRG9udEVu
dW0pOworICAgICAgICB9CiAKICAgICBwcml2YXRlOgogICAgICAgICB2aXJ0dWFsIENhbGxUeXBl
IGdldENhbGxEYXRhKENhbGxEYXRhJikgPSAwOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNBUElWYWx1ZVdyYXBwZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0FQSVZhbHVlV3JhcHBlci5oCShyZXZpc2lvbiA5MjI4MykKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQVBJVmFsdWVXcmFwcGVyLmgJKHdvcmtp
bmcgY29weSkKQEAgLTQ1LDcgKzQ1LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIAogICAg
ICAgICBzdGF0aWMgSlNBUElWYWx1ZVdyYXBwZXIqIGNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIEpT
VmFsdWUgdmFsdWUpIAogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gbmV3IChhbGxvY2F0
ZUNlbGw8SlNBUElWYWx1ZVdyYXBwZXI+KCpleGVjLT5oZWFwKCkpKSBKU0FQSVZhbHVlV3JhcHBl
cihleGVjLCB2YWx1ZSk7CisgICAgICAgICAgICByZXR1cm4gdmFsaWRhdGVBbGxvYzxKU0FQSVZh
bHVlV3JhcHBlcj4oZXhlYy0+Z2xvYmFsRGF0YSgpLCBuZXcgKGFsbG9jYXRlQ2VsbDxKU0FQSVZh
bHVlV3JhcHBlcj4oKmV4ZWMtPmhlYXAoKSkpIEpTQVBJVmFsdWVXcmFwcGVyKGV4ZWMsIHZhbHVl
KSk7CiAgICAgICAgIH0KIAogICAgIHByaXZhdGU6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0FjdGl2YXRpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0FjdGl2YXRpb24uaAkocmV2aXNpb24gOTIyODMpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FjdGl2YXRpb24uaAkod29ya2luZyBjb3B5KQpAQCAt
NDcsNyArNDcsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBwdWJsaWM6CiAgICAgICAgIHN0YXRp
YyBKU0FjdGl2YXRpb24qIGNyZWF0ZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIENhbGxGcmFt
ZSogY2FsbEZyYW1lLCBGdW5jdGlvbkV4ZWN1dGFibGUqIGZ1bmNFeGVjKQogICAgICAgICB7Ci0g
ICAgICAgICAgICByZXR1cm4gbmV3IChhbGxvY2F0ZUNlbGw8SlNBY3RpdmF0aW9uPihnbG9iYWxE
YXRhLmhlYXApKSBKU0FjdGl2YXRpb24oY2FsbEZyYW1lLCBmdW5jRXhlYyk7CisgICAgICAgICAg
ICByZXR1cm4gdmFsaWRhdGVBbGxvYzxKU0FjdGl2YXRpb24+KGdsb2JhbERhdGEsIG5ldyAoYWxs
b2NhdGVDZWxsPEpTQWN0aXZhdGlvbj4oZ2xvYmFsRGF0YS5oZWFwKSkgSlNBY3RpdmF0aW9uKGNh
bGxGcmFtZSwgZnVuY0V4ZWMpKTsKICAgICAgICAgfQogCiAgICAgICAgIHZpcnR1YWwgfkpTQWN0
aXZhdGlvbigpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuaAko
cmV2aXNpb24gOTIyODMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5
LmgJKHdvcmtpbmcgY29weSkKQEAgLTcxLDE3ICs3MSwxNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAog
ICAgICAgICBzdGF0aWMgSlNBcnJheSogY3JlYXRlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBuZXcg
KGFsbG9jYXRlQ2VsbDxKU0FycmF5PihnbG9iYWxEYXRhLmhlYXApKSBKU0FycmF5KGdsb2JhbERh
dGEsIHN0cnVjdHVyZSk7CisgICAgICAgICAgICByZXR1cm4gdmFsaWRhdGVBbGxvYzxKU0FycmF5
PihnbG9iYWxEYXRhLCBuZXcgKGFsbG9jYXRlQ2VsbDxKU0FycmF5PihnbG9iYWxEYXRhLmhlYXAp
KSBKU0FycmF5KGdsb2JhbERhdGEsIHN0cnVjdHVyZSkpOwogICAgICAgICB9CiAgICAgICAgIAog
ICAgICAgICBzdGF0aWMgSlNBcnJheSogY3JlYXRlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIHVuc2lnbmVkIGluaXRpYWxMZW5ndGgsIEFycmF5Q3JlYXRp
b25Nb2RlIGNyZWF0ZU1vZGUpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBuZXcgKGFs
bG9jYXRlQ2VsbDxKU0FycmF5PihnbG9iYWxEYXRhLmhlYXApKSBKU0FycmF5KGdsb2JhbERhdGEs
IHN0cnVjdHVyZSwgaW5pdGlhbExlbmd0aCwgY3JlYXRlTW9kZSk7CisgICAgICAgICAgICByZXR1
cm4gdmFsaWRhdGVBbGxvYzxKU0FycmF5PihnbG9iYWxEYXRhLCBuZXcgKGFsbG9jYXRlQ2VsbDxK
U0FycmF5PihnbG9iYWxEYXRhLmhlYXApKSBKU0FycmF5KGdsb2JhbERhdGEsIHN0cnVjdHVyZSwg
aW5pdGlhbExlbmd0aCwgY3JlYXRlTW9kZSkpOwogICAgICAgICB9CiAgICAgICAgIAogICAgICAg
ICBzdGF0aWMgSlNBcnJheSogY3JlYXRlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgU3RydWN0
dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IEFyZ0xpc3QmIGluaXRpYWxWYWx1ZXMpCiAgICAgICAgIHsK
LSAgICAgICAgICAgIHJldHVybiBuZXcgKGFsbG9jYXRlQ2VsbDxKU0FycmF5PihnbG9iYWxEYXRh
LmhlYXApKSBKU0FycmF5KGdsb2JhbERhdGEsIHN0cnVjdHVyZSwgaW5pdGlhbFZhbHVlcyk7Cisg
ICAgICAgICAgICByZXR1cm4gdmFsaWRhdGVBbGxvYzxKU0FycmF5PihnbG9iYWxEYXRhLCBuZXcg
KGFsbG9jYXRlQ2VsbDxKU0FycmF5PihnbG9iYWxEYXRhLmhlYXApKSBKU0FycmF5KGdsb2JhbERh
dGEsIHN0cnVjdHVyZSwgaW5pdGlhbFZhbHVlcykpOwogICAgICAgICB9CiAgICAgICAgIAogICAg
ICAgICB2aXJ0dWFsIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEV4ZWNTdGF0ZSosIGNvbnN0IElk
ZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0J5dGVBcnJheS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCeXRlQXJyYXkuY3BwCShyZXZpc2lvbiA5MjI4MykK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQnl0ZUFycmF5LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMzksMTIgKzM5LDEzIEBAIEpTQnl0ZUFycmF5OjpKU0J5dGVBcnJheShFeGVj
U3RhdGUqIGV4ZWMKICAgICA6IEpTTm9uRmluYWxPYmplY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBz
dHJ1Y3R1cmUpCiAgICAgLCBtX3N0b3JhZ2Uoc3RvcmFnZSkKIHsKLSAgICBwdXREaXJlY3QoZXhl
Yy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5nbG9iYWxEYXRhKCkucHJvcGVydHlOYW1lcy0+bGVuZ3Ro
LCBqc051bWJlcihtX3N0b3JhZ2UtPmxlbmd0aCgpKSwgUmVhZE9ubHkgfCBEb250RGVsZXRlKTsK
IH0KICAgICAgICAgCiBKU0J5dGVBcnJheSogSlNCeXRlQXJyYXk6OmNyZWF0ZShFeGVjU3RhdGUq
IGV4ZWMsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBCeXRlQXJyYXkqIHN0b3JhZ2UpCiB7Ci0gICAg
cmV0dXJuIG5ldyAoYWxsb2NhdGVDZWxsPEpTQnl0ZUFycmF5PigqZXhlYy0+aGVhcCgpKSkgSlNC
eXRlQXJyYXkoZXhlYywgc3RydWN0dXJlLCBzdG9yYWdlKTsKKyAgICBKU0J5dGVBcnJheSogYXJy
YXkgPSB2YWxpZGF0ZUFsbG9jPEpTQnl0ZUFycmF5PihleGVjLT5nbG9iYWxEYXRhKCksIG5ldyAo
YWxsb2NhdGVDZWxsPEpTQnl0ZUFycmF5PigqZXhlYy0+aGVhcCgpKSkgSlNCeXRlQXJyYXkoZXhl
Yywgc3RydWN0dXJlLCBzdG9yYWdlKSk7CisgICAgYXJyYXktPnB1dERpcmVjdChleGVjLT5nbG9i
YWxEYXRhKCksIGV4ZWMtPmdsb2JhbERhdGEoKS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgsIGpzTnVt
YmVyKGFycmF5LT5tX3N0b3JhZ2UtPmxlbmd0aCgpKSwgUmVhZE9ubHkgfCBEb250RGVsZXRlKTsK
KyAgICByZXR1cm4gYXJyYXk7CiB9CiAKICNpZiAhQVNTRVJUX0RJU0FCTEVECkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuaAkocmV2aXNpb24gOTIyODMpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuaAkod29ya2luZyBjb3B5KQpAQCAtMzQ4
LDkgKzM0OCwyMyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBU
PiB2b2lkKiBhbGxvY2F0ZUNlbGwoSGVhcCYgaGVhcCkKICAgICB7CisjaWYgRU5BQkxFKEdDX1ZB
TElEQVRJT04pCisgICAgICAgIEFTU0VSVCghaGVhcC5nbG9iYWxEYXRhKCktPmlzSW5pdGlhbGl6
aW5nT2JqZWN0KCkpOworICAgICAgICBoZWFwLmdsb2JhbERhdGEoKS0+c2V0SW5pdGlhbGl6aW5n
T2JqZWN0KHRydWUpOworI2VuZGlmCiAgICAgICAgIHJldHVybiBoZWFwLmFsbG9jYXRlKHNpemVv
ZihUKSk7CiAgICAgfQotICAgICAgICAKKworICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBUKiB2
YWxpZGF0ZUFsbG9jKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgVCogdFB0cikKKyAgICB7Cisj
aWYgRU5BQkxFKEdDX1ZBTElEQVRJT04pCisgICAgICAgIEFTU0VSVChnbG9iYWxEYXRhLmlzSW5p
dGlhbGl6aW5nT2JqZWN0KCkpOworICAgICAgICBnbG9iYWxEYXRhLnNldEluaXRpYWxpemluZ09i
amVjdChmYWxzZSk7CisjZWxzZQorICAgICAgICBVTlVTRURfUEFSQU0oZ2xvYmFsRGF0YSk7Cisj
ZW5kaWYKKyAgICAgICAgcmV0dXJuIHRQdHI7CisgICAgfQogfSAvLyBuYW1lc3BhY2UgSlNDCiAK
ICNlbmRpZiAvLyBKU0NlbGxfaApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNGdW5jdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNGdW5jdGlvbi5jcHAJKHJldmlzaW9uIDkyMjgzKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYxLDI3ICs2MSwx
OSBAQCBKU0Z1bmN0aW9uOjpKU0Z1bmN0aW9uKFZQdHJTdGVhbGluZ0hhY2tUCiB7CiB9CiAKLUpT
RnVuY3Rpb246OkpTRnVuY3Rpb24oRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgaW50IGxlbmd0aCwgY29uc3QgSWRlbnRp
ZmllciYgbmFtZSwgTmF0aXZlRXhlY3V0YWJsZSogdGh1bmspCitKU0Z1bmN0aW9uOjpKU0Z1bmN0
aW9uKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0
dXJlKiBzdHJ1Y3R1cmUsIE5hdGl2ZUV4ZWN1dGFibGUqIHRodW5rKQogICAgIDogQmFzZShnbG9i
YWxPYmplY3QsIHN0cnVjdHVyZSkKICAgICAsIG1fZXhlY3V0YWJsZShleGVjLT5nbG9iYWxEYXRh
KCksIHRoaXMsIHRodW5rKQogICAgICwgbV9zY29wZUNoYWluKGV4ZWMtPmdsb2JhbERhdGEoKSwg
dGhpcywgZ2xvYmFsT2JqZWN0LT5nbG9iYWxTY29wZUNoYWluKCkpCiB7CiAgICAgQVNTRVJUKGlu
aGVyaXRzKCZzX2luZm8pKTsKLSAgICBwdXREaXJlY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVj
LT5nbG9iYWxEYXRhKCkucHJvcGVydHlOYW1lcy0+bmFtZSwganNTdHJpbmcoZXhlYywgbmFtZS5p
c051bGwoKSA/ICIiIDogbmFtZS51c3RyaW5nKCkpLCBEb250RGVsZXRlIHwgUmVhZE9ubHkgfCBE
b250RW51bSk7Ci0gICAgcHV0RGlyZWN0KGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+cHJvcGVy
dHlOYW1lcygpLmxlbmd0aCwganNOdW1iZXIobGVuZ3RoKSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5
IHwgRG9udEVudW0pOwogfQogCi1KU0Z1bmN0aW9uOjpKU0Z1bmN0aW9uKEV4ZWNTdGF0ZSogZXhl
YywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGlu
dCBsZW5ndGgsIGNvbnN0IElkZW50aWZpZXImIG5hbWUsIE5hdGl2ZUZ1bmN0aW9uIGZ1bmMpCitK
U0Z1bmN0aW9uOjpKU0Z1bmN0aW9uKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAgICAgOiBCYXNlKGdsb2JhbE9iamVj
dCwgc3RydWN0dXJlKQogICAgICwgbV9zY29wZUNoYWluKGV4ZWMtPmdsb2JhbERhdGEoKSwgdGhp
cywgZ2xvYmFsT2JqZWN0LT5nbG9iYWxTY29wZUNoYWluKCkpCiB7CiAgICAgQVNTRVJUKGluaGVy
aXRzKCZzX2luZm8pKTsKLSAgICAKLSAgICAvLyBDYW4ndCBkbyB0aGlzIGR1cmluZyBpbml0aWFs
aXphdGlvbiBiZWNhdXNlIGdldEhvc3RGdW5jdGlvbiBtaWdodCBkbyBhIEdDIGFsbG9jYXRpb24u
Ci0gICAgbV9leGVjdXRhYmxlLnNldChleGVjLT5nbG9iYWxEYXRhKCksIHRoaXMsIGV4ZWMtPmds
b2JhbERhdGEoKS5nZXRIb3N0RnVuY3Rpb24oZnVuYykpOwotICAgIAotICAgIHB1dERpcmVjdChl
eGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPmdsb2JhbERhdGEoKS5wcm9wZXJ0eU5hbWVzLT5uYW1l
LCBqc1N0cmluZyhleGVjLCBuYW1lLmlzTnVsbCgpID8gIiIgOiBuYW1lLnVzdHJpbmcoKSksIERv
bnREZWxldGUgfCBSZWFkT25seSB8IERvbnRFbnVtKTsKLSAgICBwdXREaXJlY3QoZXhlYy0+Z2xv
YmFsRGF0YSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkubGVuZ3RoLCBqc051bWJlcihsZW5ndGgp
LCBEb250RGVsZXRlIHwgUmVhZE9ubHkgfCBEb250RW51bSk7CiB9CiAKIEpTRnVuY3Rpb246OkpT
RnVuY3Rpb24oRXhlY1N0YXRlKiBleGVjLCBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUs
IFNjb3BlQ2hhaW5Ob2RlKiBzY29wZUNoYWluTm9kZSkKQEAgLTkwLDggKzgyLDMyIEBAIEpTRnVu
Y3Rpb246OkpTRnVuY3Rpb24oRXhlY1N0YXRlKiBleGVjLCAKICAgICAsIG1fc2NvcGVDaGFpbihl
eGVjLT5nbG9iYWxEYXRhKCksIHRoaXMsIHNjb3BlQ2hhaW5Ob2RlKQogewogICAgIEFTU0VSVChp
bmhlcml0cygmc19pbmZvKSk7Ci0gICAgc2V0U3RydWN0dXJlKGV4ZWMtPmdsb2JhbERhdGEoKSwg
c2NvcGVDaGFpbk5vZGUtPmdsb2JhbE9iamVjdC0+bmFtZWRGdW5jdGlvblN0cnVjdHVyZSgpKTsK
LSAgICBwdXREaXJlY3RPZmZzZXQoZXhlYy0+Z2xvYmFsRGF0YSgpLCBzY29wZUNoYWluTm9kZS0+
Z2xvYmFsT2JqZWN0LT5mdW5jdGlvbk5hbWVPZmZzZXQoKSwgZXhlY3V0YWJsZS0+bmFtZVZhbHVl
KCkpOworfQorCitKU0Z1bmN0aW9uKiBKU0Z1bmN0aW9uOjpjcmVhdGUoRXhlY1N0YXRlKiBleGVj
LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgaW50
IGxlbmd0aCwgY29uc3QgSWRlbnRpZmllciYgbmFtZSwgTmF0aXZlRnVuY3Rpb24gbmF0aXZlRnVu
Y3Rpb24pCit7CisgICAgSlNGdW5jdGlvbiogZnVuY3Rpb24gPSB2YWxpZGF0ZUFsbG9jPEpTRnVu
Y3Rpb24+KGV4ZWMtPmdsb2JhbERhdGEoKSwgbmV3IChhbGxvY2F0ZUNlbGw8SlNGdW5jdGlvbj4o
KmV4ZWMtPmhlYXAoKSkpIEpTRnVuY3Rpb24oZXhlYywgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUp
KTsKKyAgICAvLyBDYW4ndCBkbyB0aGlzIGR1cmluZyBpbml0aWFsaXphdGlvbiBiZWNhdXNlIGdl
dEhvc3RGdW5jdGlvbiBtaWdodCBkbyBhIEdDIGFsbG9jYXRpb24uCisgICAgZnVuY3Rpb24tPm1f
ZXhlY3V0YWJsZS5zZXQoZXhlYy0+Z2xvYmFsRGF0YSgpLCBmdW5jdGlvbiwgZXhlYy0+Z2xvYmFs
RGF0YSgpLmdldEhvc3RGdW5jdGlvbihuYXRpdmVGdW5jdGlvbikpOworICAgIGZ1bmN0aW9uLT5w
dXREaXJlY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5nbG9iYWxEYXRhKCkucHJvcGVydHlO
YW1lcy0+bmFtZSwganNTdHJpbmcoZXhlYywgbmFtZS5pc051bGwoKSA/ICIiIDogbmFtZS51c3Ry
aW5nKCkpLCBEb250RGVsZXRlIHwgUmVhZE9ubHkgfCBEb250RW51bSk7CisgICAgZnVuY3Rpb24t
PnB1dERpcmVjdChleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5sZW5n
dGgsIGpzTnVtYmVyKGxlbmd0aCksIERvbnREZWxldGUgfCBSZWFkT25seSB8IERvbnRFbnVtKTsK
KyAgICByZXR1cm4gZnVuY3Rpb247Cit9CisKK0pTRnVuY3Rpb24qIEpTRnVuY3Rpb246OmNyZWF0
ZShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVy
ZSogc3RydWN0dXJlLCBpbnQgbGVuZ3RoLCBjb25zdCBJZGVudGlmaWVyJiBuYW1lLCBOYXRpdmVF
eGVjdXRhYmxlKiBuYXRpdmVFeGVjKQoreworICAgIEpTRnVuY3Rpb24qIGZ1bmN0aW9uID0gdmFs
aWRhdGVBbGxvYzxKU0Z1bmN0aW9uPihleGVjLT5nbG9iYWxEYXRhKCksIG5ldyAoYWxsb2NhdGVD
ZWxsPEpTRnVuY3Rpb24+KCpleGVjLT5oZWFwKCkpKSBKU0Z1bmN0aW9uKGV4ZWMsIGdsb2JhbE9i
amVjdCwgc3RydWN0dXJlLCBuYXRpdmVFeGVjKSk7CisgICAgZnVuY3Rpb24tPnB1dERpcmVjdChl
eGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPmdsb2JhbERhdGEoKS5wcm9wZXJ0eU5hbWVzLT5uYW1l
LCBqc1N0cmluZyhleGVjLCBuYW1lLmlzTnVsbCgpID8gIiIgOiBuYW1lLnVzdHJpbmcoKSksIERv
bnREZWxldGUgfCBSZWFkT25seSB8IERvbnRFbnVtKTsKKyAgICBmdW5jdGlvbi0+cHV0RGlyZWN0
KGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLmxlbmd0aCwganNOdW1i
ZXIobGVuZ3RoKSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5IHwgRG9udEVudW0pOworICAgIHJldHVy
biBmdW5jdGlvbjsKK30KKworSlNGdW5jdGlvbiogSlNGdW5jdGlvbjo6Y3JlYXRlKEV4ZWNTdGF0
ZSogZXhlYywgRnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxlLCBTY29wZUNoYWluTm9kZSog
c2NvcGVDaGFpbikKK3sKKyAgICBKU0Z1bmN0aW9uKiBmdW5jdGlvbiA9IHZhbGlkYXRlQWxsb2M8
SlNGdW5jdGlvbj4oZXhlYy0+Z2xvYmFsRGF0YSgpLCBuZXcgKGFsbG9jYXRlQ2VsbDxKU0Z1bmN0
aW9uPigqZXhlYy0+aGVhcCgpKSkgSlNGdW5jdGlvbihleGVjLCBleGVjdXRhYmxlLCBzY29wZUNo
YWluKSk7CisgICAgZnVuY3Rpb24tPnNldFN0cnVjdHVyZShleGVjLT5nbG9iYWxEYXRhKCksIHNj
b3BlQ2hhaW4tPmdsb2JhbE9iamVjdC0+bmFtZWRGdW5jdGlvblN0cnVjdHVyZSgpKTsKKyAgICBm
dW5jdGlvbi0+cHV0RGlyZWN0T2Zmc2V0KGV4ZWMtPmdsb2JhbERhdGEoKSwgc2NvcGVDaGFpbi0+
Z2xvYmFsT2JqZWN0LT5mdW5jdGlvbk5hbWVPZmZzZXQoKSwgZXhlY3V0YWJsZS0+bmFtZVZhbHVl
KCkpOworICAgIHJldHVybiBmdW5jdGlvbjsKIH0KIAogSlNGdW5jdGlvbjo6fkpTRnVuY3Rpb24o
KQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uaAkocmV2
aXNpb24gOTIyODMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9u
LmgJKHdvcmtpbmcgY29weSkKQEAgLTI5LDExICsyOSw5IEBACiBuYW1lc3BhY2UgSlNDIHsKIAog
ICAgIGNsYXNzIEV4ZWN1dGFibGVCYXNlOwotICAgIGNsYXNzIEZ1bmN0aW9uRXhlY3V0YWJsZTsK
ICAgICBjbGFzcyBGdW5jdGlvblByb3RvdHlwZTsKICAgICBjbGFzcyBKU0FjdGl2YXRpb247CiAg
ICAgY2xhc3MgSlNHbG9iYWxPYmplY3Q7Ci0gICAgY2xhc3MgTmF0aXZlRXhlY3V0YWJsZTsKICAg
ICBjbGFzcyBWUHRySGFja0V4ZWN1dGFibGU7CiAgICAgbmFtZXNwYWNlIERGRyB7CiAgICAgY2xh
c3MgSklUQ29kZUdlbmVyYXRvcjsKQEAgLTQ4LDIzICs0NiwxNSBAQCBuYW1lc3BhY2UgSlNDIHsK
IAogICAgICAgICB0eXBlZGVmIEpTT2JqZWN0V2l0aEdsb2JhbE9iamVjdCBCYXNlOwogCi0gICAg
ICAgIEpTRnVuY3Rpb24oRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBp
bnQgbGVuZ3RoLCBjb25zdCBJZGVudGlmaWVyJiwgTmF0aXZlRnVuY3Rpb24pOwotICAgICAgICBK
U0Z1bmN0aW9uKEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgaW50IGxl
bmd0aCwgY29uc3QgSWRlbnRpZmllciYsIE5hdGl2ZUV4ZWN1dGFibGUqKTsKKyAgICBwcml2YXRl
OgorICAgICAgICBKU0Z1bmN0aW9uKEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0
dXJlKik7CisgICAgICAgIEpTRnVuY3Rpb24oRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqLCBT
dHJ1Y3R1cmUqLCBOYXRpdmVFeGVjdXRhYmxlKik7CiAgICAgICAgIEpTRnVuY3Rpb24oRXhlY1N0
YXRlKiwgRnVuY3Rpb25FeGVjdXRhYmxlKiwgU2NvcGVDaGFpbk5vZGUqKTsKICAgICAgICAgCiAg
ICAgcHVibGljOgotICAgICAgICBzdGF0aWMgSlNGdW5jdGlvbiogY3JlYXRlKEV4ZWNTdGF0ZSog
ZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUs
IGludCBsZW5ndGgsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBOYXRpdmVGdW5jdGlvbiBuYXRp
dmVGdW5jKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gbmV3IChhbGxvY2F0ZUNlbGw8
SlNGdW5jdGlvbj4oKmV4ZWMtPmhlYXAoKSkpIEpTRnVuY3Rpb24oZXhlYywgZ2xvYmFsT2JqZWN0
LCBzdHJ1Y3R1cmUsIGxlbmd0aCwgaWRlbnQsIG5hdGl2ZUZ1bmMpOwotICAgICAgICB9Ci0gICAg
ICAgIHN0YXRpYyBKU0Z1bmN0aW9uKiBjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgaW50IGxlbmd0aCwgY29u
c3QgSWRlbnRpZmllciYgaWRlbnQsIE5hdGl2ZUV4ZWN1dGFibGUqIG5hdGl2ZUV4ZWMpCi0gICAg
ICAgIHsKLSAgICAgICAgICAgIHJldHVybiBuZXcgKGFsbG9jYXRlQ2VsbDxKU0Z1bmN0aW9uPigq
ZXhlYy0+aGVhcCgpKSkgSlNGdW5jdGlvbihleGVjLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwg
bGVuZ3RoLCBpZGVudCwgbmF0aXZlRXhlYyk7Ci0gICAgICAgIH0KLSAgICAgICAgc3RhdGljIEpT
RnVuY3Rpb24qIGNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIEZ1bmN0aW9uRXhlY3V0YWJsZSogZnVu
Y0V4ZWMsIFNjb3BlQ2hhaW5Ob2RlKiBzY29wZUNoYWluKQotICAgICAgICB7Ci0gICAgICAgICAg
ICByZXR1cm4gbmV3IChhbGxvY2F0ZUNlbGw8SlNGdW5jdGlvbj4oKmV4ZWMtPmhlYXAoKSkpIEpT
RnVuY3Rpb24oZXhlYywgZnVuY0V4ZWMsIHNjb3BlQ2hhaW4pOwotICAgICAgICB9CisgICAgICAg
IHN0YXRpYyBKU0Z1bmN0aW9uKiBjcmVhdGUoRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqLCBT
dHJ1Y3R1cmUqLCBpbnQgbGVuZ3RoLCBjb25zdCBJZGVudGlmaWVyJiBuYW1lLCBOYXRpdmVGdW5j
dGlvbik7CisgICAgICAgIHN0YXRpYyBKU0Z1bmN0aW9uKiBjcmVhdGUoRXhlY1N0YXRlKiwgSlNH
bG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBpbnQgbGVuZ3RoLCBjb25zdCBJZGVudGlmaWVyJiBu
YW1lLCBOYXRpdmVFeGVjdXRhYmxlKik7CisgICAgICAgIHN0YXRpYyBKU0Z1bmN0aW9uKiBjcmVh
dGUoRXhlY1N0YXRlKiwgRnVuY3Rpb25FeGVjdXRhYmxlKiBmdW5jRXhlYywgU2NvcGVDaGFpbk5v
ZGUqKTsKICAgICAgICAgCiAgICAgICAgIHZpcnR1YWwgfkpTRnVuY3Rpb24oKTsKIApJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxEYXRhLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERhdGEuY3BwCShyZXZp
c2lvbiA5MjI4MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsRGF0
YS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIwMSw2ICsyMDEsOSBAQCBKU0dsb2JhbERhdGE6OkpT
R2xvYmFsRGF0YShHbG9iYWxEYXRhVHlwCiAjaWZuZGVmIE5ERUJVRwogICAgICwgZXhjbHVzaXZl
VGhyZWFkKDApCiAjZW5kaWYKKyNpZiBFTkFCTEUoR0NfVkFMSURBVElPTikKKyAgICAsIG1faW5p
dGlhbGl6aW5nT2JqZWN0KGZhbHNlKQorI2VuZGlmCiB7CiAgICAgaW50ZXJwcmV0ZXIgPSBuZXcg
SW50ZXJwcmV0ZXI7CiAgICAgaWYgKGdsb2JhbERhdGFUeXBlID09IERlZmF1bHQpCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERhdGEuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERhdGEuaAkocmV2aXNpb24g
OTIyODMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERhdGEuaAko
d29ya2luZyBjb3B5KQpAQCAtMjEwLDYgKzIxMCwyNCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAg
ICAgICAgICAgICA6IHd0ZlRocmVhZERhdGEoKS5zdGFjaygpOwogICAgICAgICB9CiAKKyAgICAg
ICAgYm9vbCBpc0luaXRpYWxpemluZ09iamVjdCgpIGNvbnN0IAorICAgICAgICB7IAorI2lmIEVO
QUJMRShHQ19WQUxJREFUSU9OKQorICAgICAgICAgICAgcmV0dXJuIG1faW5pdGlhbGl6aW5nT2Jq
ZWN0OyAKKyNlbHNlCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisjZW5kaWYKKyAgICAgICAg
fQorCisgICAgICAgIHZvaWQgc2V0SW5pdGlhbGl6aW5nT2JqZWN0KGJvb2wgdmFsdWUpIAorICAg
ICAgICB7CisjaWYgRU5BQkxFKEdDX1ZBTElEQVRJT04pCisgICAgICAgICAgICBtX2luaXRpYWxp
emluZ09iamVjdCA9IHZhbHVlOyAKKyNlbHNlCisgICAgICAgICAgICBVTlVTRURfUEFSQU0odmFs
dWUpOworI2VuZGlmCisgICAgICAgIH0KKwogICAgICAgICBMZXhlciogbGV4ZXI7CiAgICAgICAg
IFBhcnNlciogcGFyc2VyOwogICAgICAgICBJbnRlcnByZXRlciogaW50ZXJwcmV0ZXI7CkBAIC0y
ODcsNiArMzA1LDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIGJvb2wgbV9jYW5Vc2VKSVQ7
CiAjZW5kaWYKICAgICAgICAgU3RhY2tCb3VuZHMgbV9zdGFjazsKKyNpZiBFTkFCTEUoR0NfVkFM
SURBVElPTikKKyAgICAgICAgYm9vbCBtX2luaXRpYWxpemluZ09iamVjdDsKKyNlbmRpZgogICAg
IH07CiAKICAgICBpbmxpbmUgSGFuZGxlU2xvdCBhbGxvY2F0ZUdsb2JhbEhhbmRsZShKU0dsb2Jh
bERhdGEmIGdsb2JhbERhdGEpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0dsb2JhbE9iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTR2xvYmFsT2JqZWN0LmgJKHJldmlzaW9uIDkyMjgzKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtMTQ0LDcg
KzE0NCw5IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHB1YmxpYzoKICAgICAgICAgc3RhdGljIEpT
R2xvYmFsT2JqZWN0KiBjcmVhdGUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSkKICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIG5ldyAoYWxsb2NhdGVD
ZWxsPEpTR2xvYmFsT2JqZWN0PihnbG9iYWxEYXRhLmhlYXApKSBKU0dsb2JhbE9iamVjdChnbG9i
YWxEYXRhLCBzdHJ1Y3R1cmUpOworICAgICAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCA9IHZhbGlkYXRlQWxsb2M8SlNHbG9iYWxPYmplY3Q+KGdsb2JhbERhdGEsIG5ldyAoYWxs
b2NhdGVDZWxsPEpTR2xvYmFsT2JqZWN0PihnbG9iYWxEYXRhLmhlYXApKSBKU0dsb2JhbE9iamVj
dChnbG9iYWxEYXRhLCBzdHJ1Y3R1cmUpKTsKKyAgICAgICAgICAgIGdsb2JhbE9iamVjdC0+aW5p
dChnbG9iYWxPYmplY3QpOworICAgICAgICAgICAgcmV0dXJuIGdsb2JhbE9iamVjdDsKICAgICAg
ICAgfQogCiAgICAgICAgIHN0YXRpYyBKU19FWFBPUlREQVRBIGNvbnN0IENsYXNzSW5mbyBzX2lu
Zm87CkBAIC0xNTksNyArMTYxLDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHsKICAgICAg
ICAgICAgIENPTVBJTEVfQVNTRVJUKEpTR2xvYmFsT2JqZWN0OjpBbm9ueW1vdXNTbG90Q291bnQg
PT0gMSwgSlNHbG9iYWxPYmplY3RfaGFzX29ubHlfYV9zaW5nbGVfc2xvdCk7CiAgICAgICAgICAg
ICBwdXRUaGlzVG9Bbm9ueW1vdXNWYWx1ZSgwKTsKLSAgICAgICAgICAgIGluaXQodGhpcyk7CiAg
ICAgICAgIH0KIAogICAgICAgICBKU0dsb2JhbE9iamVjdChKU0dsb2JhbERhdGEmIGdsb2JhbERh
dGEsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBKU09iamVjdCogdGhpc1ZhbHVlKQpAQCAtMTcxLDcg
KzE3Miw5IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB7CiAgICAgICAgICAgICBDT01QSUxF
X0FTU0VSVChKU0dsb2JhbE9iamVjdDo6QW5vbnltb3VzU2xvdENvdW50ID09IDEsIEpTR2xvYmFs
T2JqZWN0X2hhc19vbmx5X2Ffc2luZ2xlX3Nsb3QpOwogICAgICAgICAgICAgcHV0VGhpc1RvQW5v
bnltb3VzVmFsdWUoMCk7CisgICAgICAgICAgICBnbG9iYWxEYXRhLnNldEluaXRpYWxpemluZ09i
amVjdChmYWxzZSk7CiAgICAgICAgICAgICBpbml0KHRoaXNWYWx1ZSk7CisgICAgICAgICAgICBn
bG9iYWxEYXRhLnNldEluaXRpYWxpemluZ09iamVjdCh0cnVlKTsKICAgICAgICAgfQogCiAgICAg
cHVibGljOgpAQCAtMzEyLDEwICszMTUsMTEgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAg
ICB1bnNpZ25lZCBhdHRyaWJ1dGVzOwogICAgICAgICB9OwogICAgICAgICB2b2lkIGFkZFN0YXRp
Y0dsb2JhbHMoR2xvYmFsUHJvcGVydHlJbmZvKiwgaW50IGNvdW50KTsKLQotICAgIHByaXZhdGU6
CisgICAgICAgIAogICAgICAgICAvLyBGSVhNRTogRm9sZCByZXNldCBpbnRvIGluaXQuCiAgICAg
ICAgIHZvaWQgaW5pdChKU09iamVjdCogdGhpc1ZhbHVlKTsKKworICAgIHByaXZhdGU6CiAgICAg
ICAgIHZvaWQgcmVzZXQoSlNWYWx1ZSBwcm90b3R5cGUpOwogCiAgICAgICAgIHZvaWQgc2V0UmVn
aXN0ZXJzKFdyaXRlQmFycmllcjxVbmtub3duPiogcmVnaXN0ZXJzLCBQYXNzT3duQXJyYXlQdHI8
V3JpdGVCYXJyaWVyPFVua25vd24+ID4gcmVnaXN0ZXJBcnJheSwgc2l6ZV90IGNvdW50KTsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTm90QW5PYmplY3QuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU05vdEFuT2JqZWN0LmgJKHJl
dmlzaW9uIDkyMjgzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNOb3RBbk9i
amVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC00Niw3ICs0Niw3IEBAIG5hbWVzcGFjZSBKU0Mgewog
ICAgIHB1YmxpYzoKICAgICAgICAgc3RhdGljIEpTTm90QW5PYmplY3QqIGNyZWF0ZShFeGVjU3Rh
dGUqIGV4ZWMpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBuZXcgKGFsbG9jYXRlQ2Vs
bDxKU05vdEFuT2JqZWN0PigqZXhlYy0+aGVhcCgpKSkgSlNOb3RBbk9iamVjdChleGVjKTsKKyAg
ICAgICAgICAgIHJldHVybiB2YWxpZGF0ZUFsbG9jPEpTTm90QW5PYmplY3Q+KGV4ZWMtPmdsb2Jh
bERhdGEoKSwgbmV3IChhbGxvY2F0ZUNlbGw8SlNOb3RBbk9iamVjdD4oKmV4ZWMtPmhlYXAoKSkp
IEpTTm90QW5PYmplY3QoZXhlYykpOwogICAgICAgICB9CiAKICAgICAgICAgc3RhdGljIFN0cnVj
dHVyZSogY3JlYXRlU3RydWN0dXJlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNWYWx1ZSBw
cm90b3R5cGUpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09OT2JqZWN0
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPTk9iamVj
dC5oCShyZXZpc2lvbiA5MjI4MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
T05PYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtMzksNyArMzksNyBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICBwdWJsaWM6CiAgICAgICAgIHN0YXRpYyBKU09OT2JqZWN0KiBjcmVhdGUoRXhlY1N0
YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSkKICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIG5ldyAoYWxsb2NhdGVDZWxsPEpT
T05PYmplY3Q+KCpleGVjLT5oZWFwKCkpKSBKU09OT2JqZWN0KGdsb2JhbE9iamVjdCwgc3RydWN0
dXJlKTsKKyAgICAgICAgICAgIHJldHVybiB2YWxpZGF0ZUFsbG9jPEpTT05PYmplY3Q+KGV4ZWMt
Pmdsb2JhbERhdGEoKSwgbmV3IChhbGxvY2F0ZUNlbGw8SlNPTk9iamVjdD4oKmV4ZWMtPmhlYXAo
KSkpIEpTT05PYmplY3QoZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUpKTsKICAgICAgICAgfQogICAg
ICAgICAKICAgICAgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTR2xvYmFs
RGF0YSYgZ2xvYmFsRGF0YSwgSlNWYWx1ZSBwcm90b3R5cGUpCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgJKHJldmlzaW9uIDkyMjgzKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtMzY3LDcg
KzM2Nyw3IEBAIENPTVBJTEVfQVNTRVJUKChKU0ZpbmFsT2JqZWN0X2lubGluZVN0b3IKICAgICAg
ICAgCiAgICAgICAgIHN0YXRpYyBKU0ZpbmFsT2JqZWN0KiBjcmVhdGUoRXhlY1N0YXRlKiBleGVj
LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIG5l
dyAoYWxsb2NhdGVDZWxsPEpTRmluYWxPYmplY3Q+KCpleGVjLT5oZWFwKCkpKSBKU0ZpbmFsT2Jq
ZWN0KGV4ZWMtPmdsb2JhbERhdGEoKSwgc3RydWN0dXJlKTsKKyAgICAgICAgICAgIHJldHVybiB2
YWxpZGF0ZUFsbG9jPEpTRmluYWxPYmplY3Q+KGV4ZWMtPmdsb2JhbERhdGEoKSwgbmV3IChhbGxv
Y2F0ZUNlbGw8SlNGaW5hbE9iamVjdD4oKmV4ZWMtPmhlYXAoKSkpIEpTRmluYWxPYmplY3QoZXhl
Yy0+Z2xvYmFsRGF0YSgpLCBzdHJ1Y3R1cmUpKTsKICAgICAgICAgfQogCiAgICAgICAgIHN0YXRp
YyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpT
VmFsdWUgcHJvdG90eXBlKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQ
cm9wZXJ0eU5hbWVJdGVyYXRvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5jcHAJKHJldmlzaW9uIDkyMjgzKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTM3LDE1ICszNywxMiBAQCBBU1NFUlRfQ0xBU1NfRklUU19J
Tl9DRUxMKEpTUHJvcGVydHlOYW1lCiAKIGNvbnN0IENsYXNzSW5mbyBKU1Byb3BlcnR5TmFtZUl0
ZXJhdG9yOjpzX2luZm8gPSB7ICJKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yIiwgMCwgMCwgMCB9Owog
Ci1pbmxpbmUgSlNQcm9wZXJ0eU5hbWVJdGVyYXRvcjo6SlNQcm9wZXJ0eU5hbWVJdGVyYXRvcihF
eGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZUFycmF5RGF0YSogcHJvcGVydHlOYW1lQXJyYXlE
YXRhLCBzaXplX3QgbnVtQ2FjaGVhYmxlU2xvdHMpCitpbmxpbmUgSlNQcm9wZXJ0eU5hbWVJdGVy
YXRvcjo6SlNQcm9wZXJ0eU5hbWVJdGVyYXRvcihFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFt
ZUFycmF5RGF0YTo6UHJvcGVydHlOYW1lVmVjdG9yJiBwcm9wZXJ0eU5hbWVWZWN0b3IsIHNpemVf
dCBudW1DYWNoZWFibGVTbG90cykKICAgICA6IEpTQ2VsbChleGVjLT5nbG9iYWxEYXRhKCksIGV4
ZWMtPmdsb2JhbERhdGEoKS5wcm9wZXJ0eU5hbWVJdGVyYXRvclN0cnVjdHVyZS5nZXQoKSkKICAg
ICAsIG1fbnVtQ2FjaGVhYmxlU2xvdHMobnVtQ2FjaGVhYmxlU2xvdHMpCi0gICAgLCBtX2pzU3Ry
aW5nc1NpemUocHJvcGVydHlOYW1lQXJyYXlEYXRhLT5wcm9wZXJ0eU5hbWVWZWN0b3IoKS5zaXpl
KCkpCisgICAgLCBtX2pzU3RyaW5nc1NpemUocHJvcGVydHlOYW1lVmVjdG9yLnNpemUoKSkKICAg
ICAsIG1fanNTdHJpbmdzKGFkb3B0QXJyYXlQdHIobmV3IFdyaXRlQmFycmllcjxVbmtub3duPltt
X2pzU3RyaW5nc1NpemVdKSkKIHsKLSAgICBQcm9wZXJ0eU5hbWVBcnJheURhdGE6OlByb3BlcnR5
TmFtZVZlY3RvciYgcHJvcGVydHlOYW1lVmVjdG9yID0gcHJvcGVydHlOYW1lQXJyYXlEYXRhLT5w
cm9wZXJ0eU5hbWVWZWN0b3IoKTsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fanNTdHJp
bmdzU2l6ZTsgKytpKQotICAgICAgICBtX2pzU3RyaW5nc1tpXS5zZXQoZXhlYy0+Z2xvYmFsRGF0
YSgpLCB0aGlzLCBqc093bmVkU3RyaW5nKGV4ZWMsIHByb3BlcnR5TmFtZVZlY3RvcltpXS51c3Ry
aW5nKCkpKTsKIH0KIAogSlNQcm9wZXJ0eU5hbWVJdGVyYXRvciogSlNQcm9wZXJ0eU5hbWVJdGVy
YXRvcjo6Y3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIG8pCkBAIC02Miw3ICs1OSw3
IEBAIEpTUHJvcGVydHlOYW1lSXRlcmF0b3IqIEpTUHJvcGVydHlOYW1lSXQKICAgICAgICAgIW8t
PnN0cnVjdHVyZSgpLT50eXBlSW5mbygpLm92ZXJyaWRlc0dldFByb3BlcnR5TmFtZXMoKSkKICAg
ICAgICAgbnVtQ2FjaGVhYmxlU2xvdHMgPSBvLT5zdHJ1Y3R1cmUoKS0+cHJvcGVydHlTdG9yYWdl
U2l6ZSgpOwogICAgIAotICAgIEpTUHJvcGVydHlOYW1lSXRlcmF0b3IqIGpzUHJvcGVydHlOYW1l
SXRlcmF0b3IgPSBuZXcgKGFsbG9jYXRlQ2VsbDxKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yPigqZXhl
Yy0+aGVhcCgpKSkgSlNQcm9wZXJ0eU5hbWVJdGVyYXRvcihleGVjLCBwcm9wZXJ0eU5hbWVzLmRh
dGEoKSwgbnVtQ2FjaGVhYmxlU2xvdHMpOworICAgIEpTUHJvcGVydHlOYW1lSXRlcmF0b3IqIGpz
UHJvcGVydHlOYW1lSXRlcmF0b3IgPSBjcmVhdGUoZXhlYywgcHJvcGVydHlOYW1lcy5kYXRhKCks
IG51bUNhY2hlYWJsZVNsb3RzKTsKIAogICAgIGlmIChvLT5zdHJ1Y3R1cmUoKS0+aXNEaWN0aW9u
YXJ5KCkpCiAgICAgICAgIHJldHVybiBqc1Byb3BlcnR5TmFtZUl0ZXJhdG9yOwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lSXRl
cmF0b3IuaAkocmV2aXNpb24gOTIyODMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ2LDcgKzQ2LDEx
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBzdGF0aWMgSlNQcm9wZXJ0eU5hbWVJdGVyYXRv
ciogY3JlYXRlKEV4ZWNTdGF0ZSosIEpTT2JqZWN0Kik7CiAgICAgICAgIHN0YXRpYyBKU1Byb3Bl
cnR5TmFtZUl0ZXJhdG9yKiBjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWVBcnJh
eURhdGEqIHByb3BlcnR5TmFtZUFycmF5RGF0YSwgc2l6ZV90IG51bUNhY2hlYWJsZVNsb3QpCiAg
ICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBuZXcgKGFsbG9jYXRlQ2VsbDxKU1Byb3BlcnR5
TmFtZUl0ZXJhdG9yPigqZXhlYy0+aGVhcCgpKSkgSlNQcm9wZXJ0eU5hbWVJdGVyYXRvcihleGVj
LCBwcm9wZXJ0eU5hbWVBcnJheURhdGEsIG51bUNhY2hlYWJsZVNsb3QpOworICAgICAgICAgICAg
UHJvcGVydHlOYW1lQXJyYXlEYXRhOjpQcm9wZXJ0eU5hbWVWZWN0b3ImIHByb3BlcnR5TmFtZVZl
Y3RvciA9IHByb3BlcnR5TmFtZUFycmF5RGF0YS0+cHJvcGVydHlOYW1lVmVjdG9yKCk7CisgICAg
ICAgICAgICBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yKiBpdGVyYXRvciA9ICB2YWxpZGF0ZUFsbG9j
PEpTUHJvcGVydHlOYW1lSXRlcmF0b3I+KGV4ZWMtPmdsb2JhbERhdGEoKSwgbmV3IChhbGxvY2F0
ZUNlbGw8SlNQcm9wZXJ0eU5hbWVJdGVyYXRvcj4oKmV4ZWMtPmhlYXAoKSkpIEpTUHJvcGVydHlO
YW1lSXRlcmF0b3IoZXhlYywgcHJvcGVydHlOYW1lVmVjdG9yLCBudW1DYWNoZWFibGVTbG90KSk7
CisgICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGl0ZXJhdG9yLT5tX2pzU3RyaW5n
c1NpemU7ICsraSkKKyAgICAgICAgICAgICAgICBpdGVyYXRvci0+bV9qc1N0cmluZ3NbaV0uc2V0
KGV4ZWMtPmdsb2JhbERhdGEoKSwgaXRlcmF0b3IsIGpzT3duZWRTdHJpbmcoZXhlYywgcHJvcGVy
dHlOYW1lVmVjdG9yW2ldLnVzdHJpbmcoKSkpOworICAgICAgICAgICAgcmV0dXJuIGl0ZXJhdG9y
OwogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVT
dHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU1ZhbHVlIHByb3RvdHlwZSkKQEAg
LTgzLDcgKzg3LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHN0YXRpYyBjb25zdCBDbGFz
c0luZm8gc19pbmZvOwogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgSlNQcm9wZXJ0eU5hbWVJdGVy
YXRvcihFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWVBcnJheURhdGEqIHByb3BlcnR5TmFtZUFycmF5
RGF0YSwgc2l6ZV90IG51bUNhY2hlYWJsZVNsb3QpOworICAgICAgICBKU1Byb3BlcnR5TmFtZUl0
ZXJhdG9yKEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZUFycmF5RGF0YTo6UHJvcGVydHlOYW1lVmVj
dG9yJiwgc2l6ZV90IG51bUNhY2hlYWJsZVNsb3QpOwogCiAgICAgICAgIFdyaXRlQmFycmllcjxT
dHJ1Y3R1cmU+IG1fY2FjaGVkU3RydWN0dXJlOwogICAgICAgICBXcml0ZUJhcnJpZXI8U3RydWN0
dXJlQ2hhaW4+IG1fY2FjaGVkUHJvdG90eXBlQ2hhaW47CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU1N0YXRpY1Njb3BlT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdGF0aWNTY29wZU9iamVjdC5oCShyZXZpc2lvbiA5
MjI4MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RhdGljU2NvcGVPYmpl
Y3QuaAkod29ya2luZyBjb3B5KQpAQCAtMzQsNyArMzQsNyBAQCBuYW1lc3BhY2UgSlNDewogICAg
IHB1YmxpYzoKICAgICAgICAgc3RhdGljIEpTU3RhdGljU2NvcGVPYmplY3QqIGNyZWF0ZShFeGVj
U3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBKU1ZhbHVlIHZhbHVlLCB1bnNp
Z25lZCBhdHRyaWJ1dGVzKQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gbmV3IChhbGxv
Y2F0ZUNlbGw8SlNTdGF0aWNTY29wZU9iamVjdD4oKmV4ZWMtPmhlYXAoKSkpIEpTU3RhdGljU2Nv
cGVPYmplY3QoZXhlYywgaWRlbnQsIHZhbHVlLCBhdHRyaWJ1dGVzKTsKKyAgICAgICAgICAgIHJl
dHVybiB2YWxpZGF0ZUFsbG9jPEpTU3RhdGljU2NvcGVPYmplY3Q+KGV4ZWMtPmdsb2JhbERhdGEo
KSwgbmV3IChhbGxvY2F0ZUNlbGw8SlNTdGF0aWNTY29wZU9iamVjdD4oKmV4ZWMtPmhlYXAoKSkp
IEpTU3RhdGljU2NvcGVPYmplY3QoZXhlYywgaWRlbnQsIHZhbHVlLCBhdHRyaWJ1dGVzKSk7CiAg
ICAgICAgIH0KIAogICAgICAgICB2aXJ0dWFsIHZvaWQgdmlzaXRDaGlsZHJlbihTbG90VmlzaXRv
ciYpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmNwcAko
cmV2aXNpb24gOTIyODMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmlu
Zy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5OCw3ICsyOTgsNyBAQCBVU3RyaW5nIEpTU3RyaW5n
Ojp0b1N0cmluZyhFeGVjU3RhdGUqIGV4CiAKIGlubGluZSBTdHJpbmdPYmplY3QqIFN0cmluZ09i
amVjdDo6Y3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgSlNTdHJpbmcqIHN0cmluZykKIHsKLSAgICByZXR1cm4gbmV3IChhbGxvY2F0ZUNlbGw8U3Ry
aW5nT2JqZWN0PigqZXhlYy0+aGVhcCgpKSkgU3RyaW5nT2JqZWN0KGV4ZWMtPmdsb2JhbERhdGEo
KSwgZ2xvYmFsT2JqZWN0LT5zdHJpbmdPYmplY3RTdHJ1Y3R1cmUoKSwgc3RyaW5nKTsKKyAgICBy
ZXR1cm4gdmFsaWRhdGVBbGxvYyhleGVjLT5nbG9iYWxEYXRhKCksIG5ldyAoYWxsb2NhdGVDZWxs
PFN0cmluZ09iamVjdD4oKmV4ZWMtPmhlYXAoKSkpIFN0cmluZ09iamVjdChleGVjLT5nbG9iYWxE
YXRhKCksIGdsb2JhbE9iamVjdC0+c3RyaW5nT2JqZWN0U3RydWN0dXJlKCksIHN0cmluZykpOwog
fQogCiBKU09iamVjdCogSlNTdHJpbmc6OnRvT2JqZWN0KEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCkgY29uc3QKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTU3RyaW5nLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNTdHJpbmcuaAkocmV2aXNpb24gOTIyODMpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU1N0cmluZy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMDAsNDMgKzMwMCw0
MyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBwdWJsaWM6CiAgICAgICAgIHN0YXRpYyBKU1N0cmlu
ZyogY3JlYXRlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgY29uc3QgVVN0cmluZyYgdmFsdWUp
CiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBuZXcgKGFsbG9jYXRlQ2VsbDxKU1N0cmlu
Zz4oZ2xvYmFsRGF0YS5oZWFwKSkgSlNTdHJpbmcoZ2xvYmFsRGF0YSwgdmFsdWUpOworICAgICAg
ICAgICAgcmV0dXJuIHZhbGlkYXRlQWxsb2M8SlNTdHJpbmc+KGdsb2JhbERhdGEsIG5ldyAoYWxs
b2NhdGVDZWxsPEpTU3RyaW5nPihnbG9iYWxEYXRhLmhlYXApKSBKU1N0cmluZyhnbG9iYWxEYXRh
LCB2YWx1ZSkpOwogICAgICAgICB9CiAgICAgICAgIHN0YXRpYyBKU1N0cmluZyogY3JlYXRlSGFz
T3RoZXJPd25lcihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIGNvbnN0IFVTdHJpbmcmIHZhbHVl
KQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gbmV3IChhbGxvY2F0ZUNlbGw8SlNTdHJp
bmc+KGdsb2JhbERhdGEuaGVhcCkpIEpTU3RyaW5nKGdsb2JhbERhdGEsIHZhbHVlLCBIYXNPdGhl
ck93bmVyKTsKKyAgICAgICAgICAgIHJldHVybiB2YWxpZGF0ZUFsbG9jPEpTU3RyaW5nPihnbG9i
YWxEYXRhLCBuZXcgKGFsbG9jYXRlQ2VsbDxKU1N0cmluZz4oZ2xvYmFsRGF0YS5oZWFwKSkgSlNT
dHJpbmcoZ2xvYmFsRGF0YSwgdmFsdWUsIEhhc090aGVyT3duZXIpKTsKICAgICAgICAgfQogICAg
ICAgICBzdGF0aWMgSlNTdHJpbmcqIGNyZWF0ZUhhc090aGVyT3duZXIoSlNHbG9iYWxEYXRhJiBn
bG9iYWxEYXRhLCBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IHZhbHVlKQogICAgICAgICB7Ci0gICAg
ICAgICAgICByZXR1cm4gbmV3IChhbGxvY2F0ZUNlbGw8SlNTdHJpbmc+KGdsb2JhbERhdGEuaGVh
cCkpIEpTU3RyaW5nKGdsb2JhbERhdGEsIHZhbHVlLCBIYXNPdGhlck93bmVyKTsKKyAgICAgICAg
ICAgIHJldHVybiB2YWxpZGF0ZUFsbG9jPEpTU3RyaW5nPihnbG9iYWxEYXRhLCBuZXcgKGFsbG9j
YXRlQ2VsbDxKU1N0cmluZz4oZ2xvYmFsRGF0YS5oZWFwKSkgSlNTdHJpbmcoZ2xvYmFsRGF0YSwg
dmFsdWUsIEhhc090aGVyT3duZXIpKTsKICAgICAgICAgfQogICAgICAgICBzdGF0aWMgSlNTdHJp
bmcqIGNyZWF0ZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFBhc3NSZWZQdHI8Um9wZUltcGw+
IHJvcGUpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBuZXcgKGFsbG9jYXRlQ2VsbDxK
U1N0cmluZz4oZ2xvYmFsRGF0YS5oZWFwKSkgSlNTdHJpbmcoZ2xvYmFsRGF0YSwgcm9wZSk7Cisg
ICAgICAgICAgICByZXR1cm4gdmFsaWRhdGVBbGxvYzxKU1N0cmluZz4oZ2xvYmFsRGF0YSwgbmV3
IChhbGxvY2F0ZUNlbGw8SlNTdHJpbmc+KGdsb2JhbERhdGEuaGVhcCkpIEpTU3RyaW5nKGdsb2Jh
bERhdGEsIHJvcGUpKTsKICAgICAgICAgfQogICAgICAgICBzdGF0aWMgSlNTdHJpbmcqIGNyZWF0
ZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIHVuc2lnbmVkIGZpYmVyQ291bnQsIEpTU3RyaW5n
KiBzMSwgSlNTdHJpbmcqIHMyKQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gbmV3IChh
bGxvY2F0ZUNlbGw8SlNTdHJpbmc+KGdsb2JhbERhdGEuaGVhcCkpIEpTU3RyaW5nKGdsb2JhbERh
dGEsIGZpYmVyQ291bnQsIHMxLCBzMik7CisgICAgICAgICAgICByZXR1cm4gdmFsaWRhdGVBbGxv
YzxKU1N0cmluZz4oZ2xvYmFsRGF0YSwgbmV3IChhbGxvY2F0ZUNlbGw8SlNTdHJpbmc+KGdsb2Jh
bERhdGEuaGVhcCkpIEpTU3RyaW5nKGdsb2JhbERhdGEsIGZpYmVyQ291bnQsIHMxLCBzMikpOwog
ICAgICAgICB9CiAgICAgICAgIHN0YXRpYyBKU1N0cmluZyogY3JlYXRlKEpTR2xvYmFsRGF0YSYg
Z2xvYmFsRGF0YSwgdW5zaWduZWQgZmliZXJDb3VudCwgSlNTdHJpbmcqIHMxLCBjb25zdCBVU3Ry
aW5nJiB1MikKICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIG5ldyAoYWxsb2NhdGVDZWxs
PEpTU3RyaW5nPihnbG9iYWxEYXRhLmhlYXApKSBKU1N0cmluZyhnbG9iYWxEYXRhLCBmaWJlckNv
dW50LCBzMSwgdTIpOworICAgICAgICAgICAgcmV0dXJuIHZhbGlkYXRlQWxsb2M8SlNTdHJpbmc+
KGdsb2JhbERhdGEsIG5ldyAoYWxsb2NhdGVDZWxsPEpTU3RyaW5nPihnbG9iYWxEYXRhLmhlYXAp
KSBKU1N0cmluZyhnbG9iYWxEYXRhLCBmaWJlckNvdW50LCBzMSwgdTIpKTsKICAgICAgICAgfQog
ICAgICAgICBzdGF0aWMgSlNTdHJpbmcqIGNyZWF0ZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEs
IHVuc2lnbmVkIGZpYmVyQ291bnQsIGNvbnN0IFVTdHJpbmcmIHUxLCBKU1N0cmluZyogczIpCiAg
ICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBuZXcgKGFsbG9jYXRlQ2VsbDxKU1N0cmluZz4o
Z2xvYmFsRGF0YS5oZWFwKSkgSlNTdHJpbmcoZ2xvYmFsRGF0YSwgZmliZXJDb3VudCwgdTEsIHMy
KTsKKyAgICAgICAgICAgIHJldHVybiB2YWxpZGF0ZUFsbG9jPEpTU3RyaW5nPihnbG9iYWxEYXRh
LCBuZXcgKGFsbG9jYXRlQ2VsbDxKU1N0cmluZz4oZ2xvYmFsRGF0YS5oZWFwKSkgSlNTdHJpbmco
Z2xvYmFsRGF0YSwgZmliZXJDb3VudCwgdTEsIHMyKSk7CiAgICAgICAgIH0KICAgICAgICAgc3Rh
dGljIEpTU3RyaW5nKiBjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHYxLCBKU1ZhbHVl
IHYyLCBKU1ZhbHVlIHYzKQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gbmV3IChhbGxv
Y2F0ZUNlbGw8SlNTdHJpbmc+KCpleGVjLT5oZWFwKCkpKSBKU1N0cmluZyhleGVjLCB2MSwgdjIs
IHYzKTsKKyAgICAgICAgICAgIHJldHVybiB2YWxpZGF0ZUFsbG9jPEpTU3RyaW5nPihleGVjLT5n
bG9iYWxEYXRhKCksIG5ldyAoYWxsb2NhdGVDZWxsPEpTU3RyaW5nPigqZXhlYy0+aGVhcCgpKSkg
SlNTdHJpbmcoZXhlYywgdjEsIHYyLCB2MykpOwogICAgICAgICB9CiAgICAgICAgIHN0YXRpYyBK
U1N0cmluZyogY3JlYXRlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgY29uc3QgVVN0cmluZyYg
dTEsIGNvbnN0IFVTdHJpbmcmIHUyKQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gbmV3
IChhbGxvY2F0ZUNlbGw8SlNTdHJpbmc+KGdsb2JhbERhdGEuaGVhcCkpIEpTU3RyaW5nKGdsb2Jh
bERhdGEsIHUxLCB1Mik7CisgICAgICAgICAgICByZXR1cm4gdmFsaWRhdGVBbGxvYzxKU1N0cmlu
Zz4oZ2xvYmFsRGF0YSwgbmV3IChhbGxvY2F0ZUNlbGw8SlNTdHJpbmc+KGdsb2JhbERhdGEuaGVh
cCkpIEpTU3RyaW5nKGdsb2JhbERhdGEsIHUxLCB1MikpOwogICAgICAgICB9CiAgICAgICAgIHN0
YXRpYyBKU1N0cmluZyogY3JlYXRlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgY29uc3QgVVN0
cmluZyYgdTEsIGNvbnN0IFVTdHJpbmcmIHUyLCBjb25zdCBVU3RyaW5nJiB1MykKICAgICAgICAg
ewotICAgICAgICAgICAgcmV0dXJuIG5ldyAoYWxsb2NhdGVDZWxsPEpTU3RyaW5nPihnbG9iYWxE
YXRhLmhlYXApKSBKU1N0cmluZyhnbG9iYWxEYXRhLCB1MSwgdTIsIHUzKTsKKyAgICAgICAgICAg
IHJldHVybiB2YWxpZGF0ZUFsbG9jPEpTU3RyaW5nPihnbG9iYWxEYXRhLCBuZXcgKGFsbG9jYXRl
Q2VsbDxKU1N0cmluZz4oZ2xvYmFsRGF0YS5oZWFwKSkgSlNTdHJpbmcoZ2xvYmFsRGF0YSwgdTEs
IHUyLCB1MykpOwogICAgICAgICB9CiAKICAgICAgICAgfkpTU3RyaW5nKCkKQEAgLTQxOCw3ICs0
MTgsOSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgICAgICBhcHBlbmRTdHJpbmdJbkNv
bnN0cnVjdChpbmRleCwgcyk7CiAgICAgICAgICAgICAgICAgbV9sZW5ndGggKz0gcy0+bGVuZ3Ro
KCk7CiAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGV4ZWMtPmdsb2JhbERh
dGEoKS5zZXRJbml0aWFsaXppbmdPYmplY3QoZmFsc2UpOwogICAgICAgICAgICAgICAgIFVTdHJp
bmcgdSh2LnRvU3RyaW5nKGV4ZWMpKTsKKyAgICAgICAgICAgICAgICBleGVjLT5nbG9iYWxEYXRh
KCkuc2V0SW5pdGlhbGl6aW5nT2JqZWN0KHRydWUpOwogICAgICAgICAgICAgICAgIFN0cmluZ0lt
cGwqIGltcGwgPSB1LmltcGwoKTsKICAgICAgICAgICAgICAgICBpbXBsLT5yZWYoKTsKICAgICAg
ICAgICAgICAgICBtX2ZpYmVyc1tpbmRleCsrXSA9IGltcGw7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9NYXRoT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvTWF0aE9iamVjdC5oCShyZXZpc2lvbiA5MjI4MykKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hdGhPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAt
MzIsNyArMzIsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBwdWJsaWM6CiAgICAgICAgIHN0YXRp
YyBNYXRoT2JqZWN0KiBjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAgICAgICAgewotICAgICAgICAgICAg
cmV0dXJuIG5ldyAoYWxsb2NhdGVDZWxsPE1hdGhPYmplY3Q+KCpleGVjLT5oZWFwKCkpKSBNYXRo
T2JqZWN0KGV4ZWMsIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlKTsKKyAgICAgICAgICAgIHJldHVy
biB2YWxpZGF0ZUFsbG9jPE1hdGhPYmplY3Q+KGV4ZWMtPmdsb2JhbERhdGEoKSwgbmV3IChhbGxv
Y2F0ZUNlbGw8TWF0aE9iamVjdD4oKmV4ZWMtPmhlYXAoKSkpIE1hdGhPYmplY3QoZXhlYywgZ2xv
YmFsT2JqZWN0LCBzdHJ1Y3R1cmUpKTsKICAgICAgICAgfQogICAgICAgICB2aXJ0dWFsIGJvb2wg
Z2V0T3duUHJvcGVydHlTbG90KEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBQcm9wZXJ0
eVNsb3QmKTsKICAgICAgICAgdmlydHVhbCBib29sIGdldE93blByb3BlcnR5RGVzY3JpcHRvcihF
eGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiwgUHJvcGVydHlEZXNjcmlwdG9yJik7CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OYXRpdmVFcnJvckNvbnN0cnVjdG9yLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OYXRpdmVFcnJv
ckNvbnN0cnVjdG9yLmNwcAkocmV2aXNpb24gOTIyODMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9OYXRpdmVFcnJvckNvbnN0cnVjdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MzIsMTggKzMyLDI0IEBAIEFTU0VSVF9DTEFTU19GSVRTX0lOX0NFTEwoTmF0aXZlRXJyb3JDb24K
IAogY29uc3QgQ2xhc3NJbmZvIE5hdGl2ZUVycm9yQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIkZ1
bmN0aW9uIiwgJkludGVybmFsRnVuY3Rpb246OnNfaW5mbywgMCwgMCB9OwogCi1OYXRpdmVFcnJv
ckNvbnN0cnVjdG9yOjpOYXRpdmVFcnJvckNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogZXhlYywgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFN0cnVjdHVy
ZSogcHJvdG90eXBlU3RydWN0dXJlLCBjb25zdCBVU3RyaW5nJiBuYW1lQW5kTWVzc2FnZSkKLSAg
ICA6IEludGVybmFsRnVuY3Rpb24oJmV4ZWMtPmdsb2JhbERhdGEoKSwgZ2xvYmFsT2JqZWN0LCBz
dHJ1Y3R1cmUsIElkZW50aWZpZXIoZXhlYywgbmFtZUFuZE1lc3NhZ2UpKQorTmF0aXZlRXJyb3JD
b25zdHJ1Y3Rvcjo6TmF0aXZlRXJyb3JDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMsIEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgIDogSW50
ZXJuYWxGdW5jdGlvbihnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSkKIHsKICAgICBBU1NFUlQoaW5o
ZXJpdHMoJnNfaW5mbykpOworICAgIG1fZXJyb3JTdHJ1Y3R1cmUuc2V0TWF5QmVOdWxsKGV4ZWMt
Pmdsb2JhbERhdGEoKSwgdGhpcywgMCk7Cit9CiAKLSAgICBOYXRpdmVFcnJvclByb3RvdHlwZSog
cHJvdG90eXBlID0gTmF0aXZlRXJyb3JQcm90b3R5cGU6OmNyZWF0ZShleGVjLCBnbG9iYWxPYmpl
Y3QsIHByb3RvdHlwZVN0cnVjdHVyZSwgbmFtZUFuZE1lc3NhZ2UsIHRoaXMpOwotCi0gICAgcHV0
RGlyZWN0KGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLmxlbmd0aCwg
anNOdW1iZXIoMSksIERvbnREZWxldGUgfCBSZWFkT25seSB8IERvbnRFbnVtKTsgLy8gRUNNQSAx
NS4xMS43LjUKLSAgICBwdXREaXJlY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5wcm9wZXJ0
eU5hbWVzKCkucHJvdG90eXBlLCBwcm90b3R5cGUsIERvbnREZWxldGUgfCBSZWFkT25seSB8IERv
bnRFbnVtKTsKLSAgICBtX2Vycm9yU3RydWN0dXJlLnNldChleGVjLT5nbG9iYWxEYXRhKCksIHRo
aXMsIEVycm9ySW5zdGFuY2U6OmNyZWF0ZVN0cnVjdHVyZShleGVjLT5nbG9iYWxEYXRhKCksIHBy
b3RvdHlwZSkpOwotICAgIEFTU0VSVChtX2Vycm9yU3RydWN0dXJlKTsKLSAgICBBU1NFUlQobV9l
cnJvclN0cnVjdHVyZS0+dHlwZUluZm8oKS50eXBlKCkgPT0gT2JqZWN0VHlwZSk7CitOYXRpdmVF
cnJvckNvbnN0cnVjdG9yKiBOYXRpdmVFcnJvckNvbnN0cnVjdG9yOjpjcmVhdGUoRXhlY1N0YXRl
KiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSwgU3RydWN0dXJlKiBwcm90b3R5cGVTdHJ1Y3R1cmUsIGNvbnN0IFVTdHJpbmcmIG5hbWVBbmRN
ZXNzYWdlKQoreworICAgIE5hdGl2ZUVycm9yQ29uc3RydWN0b3IqIGNvbnN0cnVjdG9yID0gdmFs
aWRhdGVBbGxvYzxOYXRpdmVFcnJvckNvbnN0cnVjdG9yPihleGVjLT5nbG9iYWxEYXRhKCksIG5l
dyAoYWxsb2NhdGVDZWxsPE5hdGl2ZUVycm9yQ29uc3RydWN0b3I+KCpleGVjLT5oZWFwKCkpKSBO
YXRpdmVFcnJvckNvbnN0cnVjdG9yKGV4ZWMsIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlKSk7Cisg
ICAgTmF0aXZlRXJyb3JQcm90b3R5cGUqIHByb3RvdHlwZSA9IE5hdGl2ZUVycm9yUHJvdG90eXBl
OjpjcmVhdGUoZXhlYywgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGVTdHJ1Y3R1cmUsIG5hbWVBbmRN
ZXNzYWdlLCBjb25zdHJ1Y3Rvcik7CisgICAgY29uc3RydWN0b3ItPnB1dERpcmVjdChleGVjLT5n
bG9iYWxEYXRhKCksIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5sZW5ndGgsIGpzTnVtYmVyKDEpLCBE
b250RGVsZXRlIHwgUmVhZE9ubHkgfCBEb250RW51bSk7IC8vIEVDTUEgMTUuMTEuNy41CisgICAg
Y29uc3RydWN0b3ItPnB1dERpcmVjdChleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPnByb3BlcnR5
TmFtZXMoKS5wcm90b3R5cGUsIHByb3RvdHlwZSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5IHwgRG9u
dEVudW0pOworICAgIGNvbnN0cnVjdG9yLT5tX2Vycm9yU3RydWN0dXJlLnNldChleGVjLT5nbG9i
YWxEYXRhKCksIGNvbnN0cnVjdG9yLCBFcnJvckluc3RhbmNlOjpjcmVhdGVTdHJ1Y3R1cmUoZXhl
Yy0+Z2xvYmFsRGF0YSgpLCBwcm90b3R5cGUpKTsKKyAgICBjb25zdHJ1Y3Rvci0+aW5pdFByb3Bl
cnRpZXMoZXhlYy0+Z2xvYmFsRGF0YSgpLCBJZGVudGlmaWVyKGV4ZWMsIG5hbWVBbmRNZXNzYWdl
KSk7CisgICAgQVNTRVJUKGNvbnN0cnVjdG9yLT5tX2Vycm9yU3RydWN0dXJlKTsKKyAgICBBU1NF
UlQoY29uc3RydWN0b3ItPm1fZXJyb3JTdHJ1Y3R1cmUtPnR5cGVJbmZvKCkudHlwZSgpID09IE9i
amVjdFR5cGUpOworICAgIHJldHVybiBjb25zdHJ1Y3RvcjsKIH0KIAogdm9pZCBOYXRpdmVFcnJv
ckNvbnN0cnVjdG9yOjp2aXNpdENoaWxkcmVuKFNsb3RWaXNpdG9yJiB2aXNpdG9yKQpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvci5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05hdGl2ZUVycm9yQ29u
c3RydWN0b3IuaAkocmV2aXNpb24gOTIyODMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9OYXRpdmVFcnJvckNvbnN0cnVjdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTMwLDE0ICsz
MCw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIGNsYXNzIE5hdGl2ZUVycm9yUHJvdG90eXBlOwog
CiAgICAgY2xhc3MgTmF0aXZlRXJyb3JDb25zdHJ1Y3RvciA6IHB1YmxpYyBJbnRlcm5hbEZ1bmN0
aW9uIHsKLSAgICBwcml2YXRlOgotICAgICAgICBOYXRpdmVFcnJvckNvbnN0cnVjdG9yKEV4ZWNT
dGF0ZSosIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgU3RydWN0dXJlKiBwcm90b3R5cGVT
dHJ1Y3R1cmUsIGNvbnN0IFVTdHJpbmcmKTsKLQogICAgIHB1YmxpYzoKLSAgICAgICAgc3RhdGlj
IE5hdGl2ZUVycm9yQ29uc3RydWN0b3IqIGNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBTdHJ1Y3R1cmUqIHBy
b3RvdHlwZVN0cnVjdHVyZSwgY29uc3QgVVN0cmluZyYgbmFtZUFuZE1lc3NhZ2UpCi0gICAgICAg
IHsKLSAgICAgICAgICAgIHJldHVybiBuZXcgKGFsbG9jYXRlQ2VsbDxOYXRpdmVFcnJvckNvbnN0
cnVjdG9yPigqZXhlYy0+aGVhcCgpKSkgTmF0aXZlRXJyb3JDb25zdHJ1Y3RvcihleGVjLCBnbG9i
YWxPYmplY3QsIHN0cnVjdHVyZSwgcHJvdG90eXBlU3RydWN0dXJlLCBuYW1lQW5kTWVzc2FnZSk7
Ci0gICAgICAgIH0KKyAgICAgICAgc3RhdGljIE5hdGl2ZUVycm9yQ29uc3RydWN0b3IqIGNyZWF0
ZShFeGVjU3RhdGUqLCBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIFN0cnVjdHVyZSogcHJv
dG90eXBlU3RydWN0dXJlLCBjb25zdCBVU3RyaW5nJiBuYW1lQW5kTWVzc2FnZSk7CiAgICAgICAg
IAogICAgICAgICBzdGF0aWMgY29uc3QgQ2xhc3NJbmZvIHNfaW5mbzsKIApAQCAtNDksNiArNDMs
NyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgU3RydWN0dXJlKiBlcnJvclN0cnVjdHVyZSgp
IHsgcmV0dXJuIG1fZXJyb3JTdHJ1Y3R1cmUuZ2V0KCk7IH0KIAogICAgIHByaXZhdGU6CisgICAg
ICAgIE5hdGl2ZUVycm9yQ29uc3RydWN0b3IoRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqLCBT
dHJ1Y3R1cmUqKTsKICAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdz
ID0gT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbiB8IEludGVybmFsRnVuY3Rpb246OlN0cnVjdHVyZUZs
YWdzOwogICAgICAgICB2aXJ0dWFsIENvbnN0cnVjdFR5cGUgZ2V0Q29uc3RydWN0RGF0YShDb25z
dHJ1Y3REYXRhJik7CiAgICAgICAgIHZpcnR1YWwgQ2FsbFR5cGUgZ2V0Q2FsbERhdGEoQ2FsbERh
dGEmKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05hdGl2ZUVycm9yUHJv
dG90eXBlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9O
YXRpdmVFcnJvclByb3RvdHlwZS5jcHAJKHJldmlzaW9uIDkyMjgzKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZlRXJyb3JQcm90b3R5cGUuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0yMiwyMCArMjIsMTQgQEAKICNpbmNsdWRlICJOYXRpdmVFcnJvclByb3RvdHlwZS5oIgog
CiAjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3QuaCIKLSNpbmNsdWRlICJKU1N0cmluZy5oIgotI2lu
Y2x1ZGUgIk5hdGl2ZUVycm9yQ29uc3RydWN0b3IuaCIKLSNpbmNsdWRlICJVU3RyaW5nLmgiCiAK
IG5hbWVzcGFjZSBKU0MgewogCiBBU1NFUlRfQ0xBU1NfRklUU19JTl9DRUxMKE5hdGl2ZUVycm9y
UHJvdG90eXBlKTsKIAotTmF0aXZlRXJyb3JQcm90b3R5cGU6Ok5hdGl2ZUVycm9yUHJvdG90eXBl
KEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJl
KiBzdHJ1Y3R1cmUsIGNvbnN0IFVTdHJpbmcmIG5hbWVBbmRNZXNzYWdlLCBOYXRpdmVFcnJvckNv
bnN0cnVjdG9yKiBjb25zdHJ1Y3RvcikKK05hdGl2ZUVycm9yUHJvdG90eXBlOjpOYXRpdmVFcnJv
clByb3RvdHlwZShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IFN0cnVjdHVyZSogc3RydWN0dXJlKQogICAgIDogRXJyb3JQcm90b3R5cGUoZXhlYywgZ2xvYmFs
T2JqZWN0LCBzdHJ1Y3R1cmUpCiB7Ci0gICAgcHV0RGlyZWN0KGV4ZWMtPmdsb2JhbERhdGEoKSwg
ZXhlYy0+cHJvcGVydHlOYW1lcygpLm5hbWUsIGpzU3RyaW5nKGV4ZWMsIG5hbWVBbmRNZXNzYWdl
KSwgRG9udEVudW0pOwotICAgIHB1dERpcmVjdChleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPnBy
b3BlcnR5TmFtZXMoKS5tZXNzYWdlLCBqc1N0cmluZyhleGVjLCBuYW1lQW5kTWVzc2FnZSksIERv
bnRFbnVtKTsKLSAgICBwdXREaXJlY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5wcm9wZXJ0
eU5hbWVzKCkuY29uc3RydWN0b3IsIGNvbnN0cnVjdG9yLCBEb250RW51bSk7CiB9CiAKIH0gLy8g
bmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZl
RXJyb3JQcm90b3R5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9OYXRpdmVFcnJvclByb3RvdHlwZS5oCShyZXZpc2lvbiA5MjI4MykKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL05hdGl2ZUVycm9yUHJvdG90eXBlLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTIyLDE4ICsyMiwyMiBAQAogI2RlZmluZSBOYXRpdmVFcnJvclByb3RvdHlwZV9oCiAK
ICNpbmNsdWRlICJFcnJvclByb3RvdHlwZS5oIgorI2luY2x1ZGUgIk5hdGl2ZUVycm9yQ29uc3Ry
dWN0b3IuaCIKIAogbmFtZXNwYWNlIEpTQyB7Ci0gICAgY2xhc3MgTmF0aXZlRXJyb3JDb25zdHJ1
Y3RvcjsKIAogICAgIGNsYXNzIE5hdGl2ZUVycm9yUHJvdG90eXBlIDogcHVibGljIEVycm9yUHJv
dG90eXBlIHsKICAgICBwcml2YXRlOgotICAgICAgICBOYXRpdmVFcnJvclByb3RvdHlwZShFeGVj
U3RhdGUqLCBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIGNvbnN0IFVTdHJpbmcmLCBOYXRp
dmVFcnJvckNvbnN0cnVjdG9yKik7CisgICAgICAgIE5hdGl2ZUVycm9yUHJvdG90eXBlKEV4ZWNT
dGF0ZSosIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKik7CiAgICAgCiAgICAgcHVibGljOgog
ICAgICAgICBzdGF0aWMgTmF0aXZlRXJyb3JQcm90b3R5cGUqIGNyZWF0ZShFeGVjU3RhdGUqIGV4
ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBj
b25zdCBVU3RyaW5nJiBuYW1lQW5kTWVzc2FnZSwgTmF0aXZlRXJyb3JDb25zdHJ1Y3RvciogY29u
c3RydWN0b3IpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBuZXcgKGFsbG9jYXRlQ2Vs
bDxOYXRpdmVFcnJvclByb3RvdHlwZT4oKmV4ZWMtPmhlYXAoKSkpIE5hdGl2ZUVycm9yUHJvdG90
eXBlKGV4ZWMsIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBuYW1lQW5kTWVzc2FnZSwgY29uc3Ry
dWN0b3IpOworICAgICAgICAgICAgTmF0aXZlRXJyb3JQcm90b3R5cGUqIHByb3RvdHlwZSA9IHZh
bGlkYXRlQWxsb2MoZXhlYy0+Z2xvYmFsRGF0YSgpLCBuZXcgKGFsbG9jYXRlQ2VsbDxOYXRpdmVF
cnJvclByb3RvdHlwZT4oKmV4ZWMtPmhlYXAoKSkpIE5hdGl2ZUVycm9yUHJvdG90eXBlKGV4ZWMs
IGdsb2JhbE9iamVjdCwgc3RydWN0dXJlKSk7CisgICAgICAgICAgICBwcm90b3R5cGUtPnB1dERp
cmVjdChleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5uYW1lLCBqc1N0
cmluZyhleGVjLCBuYW1lQW5kTWVzc2FnZSksIERvbnRFbnVtKTsKKyAgICAgICAgICAgIHByb3Rv
dHlwZS0+cHV0RGlyZWN0KGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+cHJvcGVydHlOYW1lcygp
Lm1lc3NhZ2UsIGpzU3RyaW5nKGV4ZWMsIG5hbWVBbmRNZXNzYWdlKSwgRG9udEVudW0pOworICAg
ICAgICAgICAgcHJvdG90eXBlLT5wdXREaXJlY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5w
cm9wZXJ0eU5hbWVzKCkuY29uc3RydWN0b3IsIGNvbnN0cnVjdG9yLCBEb250RW51bSk7CisgICAg
ICAgICAgICByZXR1cm4gcHJvdG90eXBlOwogICAgICAgICB9CiAgICAgfTsKIApJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVtYmVyQ29uc3RydWN0b3IuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051bWJlckNvbnN0cnVjdG9yLmNw
cAkocmV2aXNpb24gOTIyODMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OdW1i
ZXJDb25zdHJ1Y3Rvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU1LDcgKzU1LDcgQEAgY29uc3Qg
Q2xhc3NJbmZvIE51bWJlckNvbnN0cnVjdG9yOjpzX2luZgogKi8KIAogTnVtYmVyQ29uc3RydWN0
b3I6Ok51bWJlckNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIE51bWJlclByb3RvdHlwZSogbnVtYmVy
UHJvdG90eXBlKQotICAgIDogSW50ZXJuYWxGdW5jdGlvbigmZXhlYy0+Z2xvYmFsRGF0YSgpLCBn
bG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgSWRlbnRpZmllcihleGVjLCBudW1iZXJQcm90b3R5cGUt
PnNfaW5mby5jbGFzc05hbWUpKQorICAgIDogSW50ZXJuYWxGdW5jdGlvbihnbG9iYWxPYmplY3Qs
IHN0cnVjdHVyZSkKIHsKICAgICBBU1NFUlQoaW5oZXJpdHMoJnNfaW5mbykpOwogCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OdW1iZXJDb25zdHJ1Y3Rvci5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051bWJlckNvbnN0cnVjdG9yLmgJ
KHJldmlzaW9uIDkyMjgzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVtYmVy
Q29uc3RydWN0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtMjIsMTkgKzIyLDIwIEBACiAjZGVmaW5l
IE51bWJlckNvbnN0cnVjdG9yX2gKIAogI2luY2x1ZGUgIkludGVybmFsRnVuY3Rpb24uaCIKKyNp
bmNsdWRlICJOdW1iZXJQcm90b3R5cGUuaCIKIAogbmFtZXNwYWNlIEpTQyB7CiAKLSAgICBjbGFz
cyBOdW1iZXJQcm90b3R5cGU7Ci0KICAgICBjbGFzcyBOdW1iZXJDb25zdHJ1Y3RvciA6IHB1Ymxp
YyBJbnRlcm5hbEZ1bmN0aW9uIHsKICAgICBwcml2YXRlOgogICAgICAgICBOdW1iZXJDb25zdHJ1
Y3RvcihFeGVjU3RhdGUqLCBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIE51bWJlclByb3Rv
dHlwZSopOwogICAgICAgICAKICAgICBwdWJsaWM6Ci0gICAgICAgIHN0YXRpYyBOdW1iZXJDb25z
dHJ1Y3RvciogY3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIE51bWJlclByb3RvdHlwZSogbnVtUHJvdG90eXBl
KQorICAgICAgICBzdGF0aWMgTnVtYmVyQ29uc3RydWN0b3IqIGNyZWF0ZShFeGVjU3RhdGUqIGV4
ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBO
dW1iZXJQcm90b3R5cGUqIG51bWJlclByb3RvdHlwZSkKICAgICAgICAgewotICAgICAgICAgICAg
cmV0dXJuIG5ldyAoYWxsb2NhdGVDZWxsPE51bWJlckNvbnN0cnVjdG9yPigqZXhlYy0+aGVhcCgp
KSkgTnVtYmVyQ29uc3RydWN0b3IoZXhlYywgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIG51bVBy
b3RvdHlwZSk7CisgICAgICAgICAgICBOdW1iZXJDb25zdHJ1Y3RvciogY29uc3RydWN0b3IgPSB2
YWxpZGF0ZUFsbG9jPE51bWJlckNvbnN0cnVjdG9yPihleGVjLT5nbG9iYWxEYXRhKCksIG5ldyAo
YWxsb2NhdGVDZWxsPE51bWJlckNvbnN0cnVjdG9yPigqZXhlYy0+aGVhcCgpKSkgTnVtYmVyQ29u
c3RydWN0b3IoZXhlYywgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIG51bWJlclByb3RvdHlwZSkp
OworICAgICAgICAgICAgY29uc3RydWN0b3ItPmluaXRQcm9wZXJ0aWVzKGV4ZWMtPmdsb2JhbERh
dGEoKSwgSWRlbnRpZmllcihleGVjLCBudW1iZXJQcm90b3R5cGUtPnNfaW5mby5jbGFzc05hbWUp
KTsKKyAgICAgICAgICAgIHJldHVybiBjb25zdHJ1Y3RvcjsKICAgICAgICAgfQogCiAgICAgICAg
IHZpcnR1YWwgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRp
ZmllciYsIFByb3BlcnR5U2xvdCYpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvTnVtYmVyT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvTnVtYmVyT2JqZWN0LmgJKHJldmlzaW9uIDkyMjgzKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvTnVtYmVyT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTMyLDcgKzMy
LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgcHVibGljOgogICAgICAgICBzdGF0aWMgTnVtYmVy
T2JqZWN0KiBjcmVhdGUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSkKICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIG5ldyAoYWxsb2NhdGVDZWxsPE51
bWJlck9iamVjdD4oZ2xvYmFsRGF0YS5oZWFwKSkgTnVtYmVyT2JqZWN0KGdsb2JhbERhdGEsIHN0
cnVjdHVyZSk7CisgICAgICAgICAgICByZXR1cm4gdmFsaWRhdGVBbGxvYyhnbG9iYWxEYXRhLCBu
ZXcgKGFsbG9jYXRlQ2VsbDxOdW1iZXJPYmplY3Q+KGdsb2JhbERhdGEuaGVhcCkpIE51bWJlck9i
amVjdChnbG9iYWxEYXRhLCBzdHJ1Y3R1cmUpKTsKICAgICAgICAgfQogCiAgICAgICAgIHN0YXRp
YyBjb25zdCBDbGFzc0luZm8gc19pbmZvOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvTnVtYmVyUHJvdG90eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvTnVtYmVyUHJvdG90eXBlLmgJKHJldmlzaW9uIDkyMjgzKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVtYmVyUHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkK
QEAgLTMyLDcgKzMyLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgcHVibGljOgogICAgICAgICBz
dGF0aWMgTnVtYmVyUHJvdG90eXBlKiBjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAgICAgICAgewotICAg
ICAgICAgICAgcmV0dXJuIG5ldyAoYWxsb2NhdGVDZWxsPE51bWJlclByb3RvdHlwZT4oKmV4ZWMt
PmhlYXAoKSkpIE51bWJlclByb3RvdHlwZShleGVjLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSk7
CisgICAgICAgICAgICByZXR1cm4gdmFsaWRhdGVBbGxvYzxOdW1iZXJQcm90b3R5cGU+KGV4ZWMt
Pmdsb2JhbERhdGEoKSwgbmV3IChhbGxvY2F0ZUNlbGw8TnVtYmVyUHJvdG90eXBlPigqZXhlYy0+
aGVhcCgpKSkgTnVtYmVyUHJvdG90eXBlKGV4ZWMsIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlKSk7
CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIHN0YXRpYyBjb25zdCBDbGFzc0luZm8gc19p
bmZvOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29uc3RydWN0
b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVj
dENvbnN0cnVjdG9yLmNwcAkocmV2aXNpb24gOTIyODMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc2LDcg
Kzc2LDcgQEAgY29uc3QgQ2xhc3NJbmZvIE9iamVjdENvbnN0cnVjdG9yOjpzX2luZgogKi8KIAog
T2JqZWN0Q29uc3RydWN0b3I6Ok9iamVjdENvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogZXhlYywgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIE9iamVjdFBy
b3RvdHlwZSogb2JqZWN0UHJvdG90eXBlKQotICAgIDogSW50ZXJuYWxGdW5jdGlvbigmZXhlYy0+
Z2xvYmFsRGF0YSgpLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgSWRlbnRpZmllcihleGVjLCAi
T2JqZWN0IikpCisgICAgOiBJbnRlcm5hbEZ1bmN0aW9uKGdsb2JhbE9iamVjdCwgc3RydWN0dXJl
KQogewogICAgIC8vIEVDTUEgMTUuMi4zLjEKICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlv
bihleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5wcm90b3R5cGUsIG9i
amVjdFByb3RvdHlwZSwgRG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkpOwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5o
CShyZXZpc2lvbiA5MjI4MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVj
dENvbnN0cnVjdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTM0LDcgKzM0LDkgQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgcHVibGljOgogICAgICAgICBzdGF0aWMgT2JqZWN0Q29uc3RydWN0b3IqIGNy
ZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVj
dHVyZSogc3RydWN0dXJlLCBPYmplY3RQcm90b3R5cGUqIG9ialByb3RvdHlwZSkKICAgICAgICAg
ewotICAgICAgICAgICAgcmV0dXJuIG5ldyAoYWxsb2NhdGVDZWxsPE9iamVjdENvbnN0cnVjdG9y
PigqZXhlYy0+aGVhcCgpKSkgT2JqZWN0Q29uc3RydWN0b3IoZXhlYywgZ2xvYmFsT2JqZWN0LCBz
dHJ1Y3R1cmUsIG9ialByb3RvdHlwZSk7CisgICAgICAgICAgICBPYmplY3RDb25zdHJ1Y3Rvciog
Y29uc3RydWN0b3IgPSB2YWxpZGF0ZUFsbG9jKGV4ZWMtPmdsb2JhbERhdGEoKSwgbmV3IChhbGxv
Y2F0ZUNlbGw8T2JqZWN0Q29uc3RydWN0b3I+KCpleGVjLT5oZWFwKCkpKSBPYmplY3RDb25zdHJ1
Y3RvcihleGVjLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgb2JqUHJvdG90eXBlKSk7CisgICAg
ICAgICAgICBjb25zdHJ1Y3Rvci0+aW5pdFByb3BlcnRpZXMoZXhlYy0+Z2xvYmFsRGF0YSgpLCBJ
ZGVudGlmaWVyKGV4ZWMsICJPYmplY3QiKSk7CisgICAgICAgICAgICByZXR1cm4gY29uc3RydWN0
b3I7CiAgICAgICAgIH0KIAogICAgICAgICB2aXJ0dWFsIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90
KEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBQcm9wZXJ0eVNsb3QmKTsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdFByb3RvdHlwZS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdFByb3RvdHlwZS5oCShyZXZp
c2lvbiA5MjI4MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdFByb3Rv
dHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw3ICszMiw3IEBAIG5hbWVzcGFjZSBKU0Mgewog
ICAgIHB1YmxpYzoKICAgICAgICAgc3RhdGljIE9iamVjdFByb3RvdHlwZSogY3JlYXRlKEV4ZWNT
dGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBuZXcgKGFsbG9jYXRlQ2VsbDxP
YmplY3RQcm90b3R5cGU+KCpleGVjLT5oZWFwKCkpKSBPYmplY3RQcm90b3R5cGUoZXhlYywgZ2xv
YmFsT2JqZWN0LCBzdHJ1Y3R1cmUpOworICAgICAgICAgICAgcmV0dXJuIHZhbGlkYXRlQWxsb2M8
T2JqZWN0UHJvdG90eXBlPihleGVjLT5nbG9iYWxEYXRhKCksIG5ldyAoYWxsb2NhdGVDZWxsPE9i
amVjdFByb3RvdHlwZT4oKmV4ZWMtPmhlYXAoKSkpIE9iamVjdFByb3RvdHlwZShleGVjLCBnbG9i
YWxPYmplY3QsIHN0cnVjdHVyZSkpOwogICAgICAgICB9CiAKICAgICAgICAgc3RhdGljIGNvbnN0
IENsYXNzSW5mbyBzX2luZm87CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9S
ZWdFeHAuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Jl
Z0V4cC5jcHAJKHJldmlzaW9uIDkyMjgzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvUmVnRXhwLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTAxLDcgKzEwMSw3IEBAIFJlZ0V4cDo6
flJlZ0V4cCgpCiAKIFJlZ0V4cCogUmVnRXhwOjpjcmVhdGVXaXRob3V0Q2FjaGluZyhKU0dsb2Jh
bERhdGEmIGdsb2JhbERhdGEsIGNvbnN0IFVTdHJpbmcmIHBhdHRlcm5TdHJpbmcsIFJlZ0V4cEZs
YWdzIGZsYWdzKQogewotICAgIHJldHVybiBuZXcgKGFsbG9jYXRlQ2VsbDxSZWdFeHA+KGdsb2Jh
bERhdGEuaGVhcCkpIFJlZ0V4cChnbG9iYWxEYXRhLCBwYXR0ZXJuU3RyaW5nLCBmbGFncyk7Cisg
ICAgcmV0dXJuIHZhbGlkYXRlQWxsb2M8UmVnRXhwPihnbG9iYWxEYXRhLCBuZXcgKGFsbG9jYXRl
Q2VsbDxSZWdFeHA+KGdsb2JhbERhdGEuaGVhcCkpIFJlZ0V4cChnbG9iYWxEYXRhLCBwYXR0ZXJu
U3RyaW5nLCBmbGFncykpOwogfQogCiBSZWdFeHAqIFJlZ0V4cDo6Y3JlYXRlKEpTR2xvYmFsRGF0
YSYgZ2xvYmFsRGF0YSwgY29uc3QgVVN0cmluZyYgcGF0dGVyblN0cmluZywgUmVnRXhwRmxhZ3Mg
ZmxhZ3MpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBDb25zdHJ1
Y3Rvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVn
RXhwQ29uc3RydWN0b3IuY3BwCShyZXZpc2lvbiA5MjI4MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1JlZ0V4cENvbnN0cnVjdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTYs
NyArOTYsNyBAQCBjb25zdCBDbGFzc0luZm8gUmVnRXhwQ29uc3RydWN0b3I6OnNfaW5mCiAqLwog
CiBSZWdFeHBDb25zdHJ1Y3Rvcjo6UmVnRXhwQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBleGVjLCBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUmVnRXhw
UHJvdG90eXBlKiByZWdFeHBQcm90b3R5cGUpCi0gICAgOiBJbnRlcm5hbEZ1bmN0aW9uKCZleGVj
LT5nbG9iYWxEYXRhKCksIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBJZGVudGlmaWVyKGV4ZWMs
ICJSZWdFeHAiKSkKKyAgICA6IEludGVybmFsRnVuY3Rpb24oZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1
cmUpCiAgICAgLCBkKGFkb3B0UHRyKG5ldyBSZWdFeHBDb25zdHJ1Y3RvclByaXZhdGUpKQogewog
ICAgIEFTU0VSVChpbmhlcml0cygmc19pbmZvKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9SZWdFeHBDb25zdHJ1Y3Rvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cENvbnN0cnVjdG9yLmgJKHJldmlzaW9uIDkyMjgzKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwQ29uc3RydWN0b3IuaAkod29y
a2luZyBjb3B5KQpAQCAtNjIsNyArNjIsOSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBwdWJsaWM6
CiAgICAgICAgIHN0YXRpYyBSZWdFeHBDb25zdHJ1Y3RvciogY3JlYXRlKEV4ZWNTdGF0ZSogZXhl
YywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFJl
Z0V4cFByb3RvdHlwZSogcmVnRXhwUHJvdG90eXBlKQogICAgICAgICB7Ci0gICAgICAgICAgICBy
ZXR1cm4gbmV3IChhbGxvY2F0ZUNlbGw8UmVnRXhwQ29uc3RydWN0b3I+KCpleGVjLT5oZWFwKCkp
KSBSZWdFeHBDb25zdHJ1Y3RvcihleGVjLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgcmVnRXhw
UHJvdG90eXBlKTsKKyAgICAgICAgICAgIFJlZ0V4cENvbnN0cnVjdG9yKiBjb25zdHJ1Y3RvciA9
IHZhbGlkYXRlQWxsb2M8UmVnRXhwQ29uc3RydWN0b3I+KGV4ZWMtPmdsb2JhbERhdGEoKSwgbmV3
IChhbGxvY2F0ZUNlbGw8UmVnRXhwQ29uc3RydWN0b3I+KCpleGVjLT5oZWFwKCkpKSBSZWdFeHBD
b25zdHJ1Y3RvcihleGVjLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgcmVnRXhwUHJvdG90eXBl
KSk7CisgICAgICAgICAgICBjb25zdHJ1Y3Rvci0+aW5pdFByb3BlcnRpZXMoZXhlYy0+Z2xvYmFs
RGF0YSgpLCBJZGVudGlmaWVyKGV4ZWMsICJSZWdFeHAiKSk7CisgICAgICAgICAgICByZXR1cm4g
Y29uc3RydWN0b3I7CiAgICAgICAgIH0KIAogICAgICAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVh
dGVTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU1ZhbHVlIHByb3RvdHlwZSkK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE1hdGNoZXNBcnJheS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE1hdGNo
ZXNBcnJheS5oCShyZXZpc2lvbiA5MjI4MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1JlZ0V4cE1hdGNoZXNBcnJheS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNSwxNyArMjUsMTUg
QEAKIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgUmVnRXhwTWF0Y2hlc0FycmF5IDogcHVi
bGljIEpTQXJyYXkgewotICAgIHByaXZhdGU6Ci0gICAgICAgIFJlZ0V4cE1hdGNoZXNBcnJheShF
eGVjU3RhdGUqLCBSZWdFeHBDb25zdHJ1Y3RvclByaXZhdGUqKTsKLQogICAgIHB1YmxpYzoKICAg
ICAgICAgc3RhdGljIFJlZ0V4cE1hdGNoZXNBcnJheSogY3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywg
UmVnRXhwQ29uc3RydWN0b3JQcml2YXRlKiBjdG9yUHJpdmF0ZSkKICAgICAgICAgewotICAgICAg
ICAgICAgcmV0dXJuIG5ldyAoYWxsb2NhdGVDZWxsPFJlZ0V4cE1hdGNoZXNBcnJheT4oKmV4ZWMt
PmhlYXAoKSkpIFJlZ0V4cE1hdGNoZXNBcnJheShleGVjLCBjdG9yUHJpdmF0ZSk7CisgICAgICAg
ICAgICByZXR1cm4gdmFsaWRhdGVBbGxvYzxSZWdFeHBNYXRjaGVzQXJyYXk+KGV4ZWMtPmdsb2Jh
bERhdGEoKSwgbmV3IChhbGxvY2F0ZUNlbGw8UmVnRXhwTWF0Y2hlc0FycmF5PigqZXhlYy0+aGVh
cCgpKSkgUmVnRXhwTWF0Y2hlc0FycmF5KGV4ZWMsIGN0b3JQcml2YXRlKSk7CiAgICAgICAgIH0K
ICAgICAgICAgdmlydHVhbCB+UmVnRXhwTWF0Y2hlc0FycmF5KCk7CiAKICAgICBwcml2YXRlOgor
ICAgICAgICBSZWdFeHBNYXRjaGVzQXJyYXkoRXhlY1N0YXRlKiwgUmVnRXhwQ29uc3RydWN0b3JQ
cml2YXRlKik7CiAgICAgICAgIHZpcnR1YWwgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoRXhlY1N0
YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYg
c2xvdCkKICAgICAgICAgewogICAgICAgICAgICAgaWYgKHN1YmNsYXNzRGF0YSgpKQpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwT2JqZWN0LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwT2JqZWN0LmgJKHJldmlzaW9u
IDkyMjgzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwT2JqZWN0LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTMzLDEyICszMywxMiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBw
dWJsaWM6CiAgICAgICAgIHN0YXRpYyBSZWdFeHBPYmplY3QqIGNyZWF0ZShFeGVjU3RhdGUqIGV4
ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBS
ZWdFeHAqIHJlZ0V4cCkKICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIG5ldyAoYWxsb2Nh
dGVDZWxsPFJlZ0V4cE9iamVjdD4oKmV4ZWMtPmhlYXAoKSkpIFJlZ0V4cE9iamVjdChnbG9iYWxP
YmplY3QsIHN0cnVjdHVyZSwgcmVnRXhwKTsKKyAgICAgICAgICAgIHJldHVybiB2YWxpZGF0ZUFs
bG9jPFJlZ0V4cE9iamVjdD4oZXhlYy0+Z2xvYmFsRGF0YSgpLCBuZXcgKGFsbG9jYXRlQ2VsbDxS
ZWdFeHBPYmplY3Q+KCpleGVjLT5oZWFwKCkpKSBSZWdFeHBPYmplY3QoZ2xvYmFsT2JqZWN0LCBz
dHJ1Y3R1cmUsIHJlZ0V4cCkpOwogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBzdGF0aWMg
UmVnRXhwT2JqZWN0KiBjcmVhdGUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUmVnRXhwKiByZWdFeHAp
CiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBuZXcgKGFsbG9jYXRlQ2VsbDxSZWdFeHBP
YmplY3Q+KGdsb2JhbERhdGEuaGVhcCkpIFJlZ0V4cE9iamVjdChnbG9iYWxPYmplY3QsIHN0cnVj
dHVyZSwgcmVnRXhwKTsKKyAgICAgICAgICAgIHJldHVybiB2YWxpZGF0ZUFsbG9jPFJlZ0V4cE9i
amVjdD4oZ2xvYmFsRGF0YSwgbmV3IChhbGxvY2F0ZUNlbGw8UmVnRXhwT2JqZWN0PihnbG9iYWxE
YXRhLmhlYXApKSBSZWdFeHBPYmplY3QoZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIHJlZ0V4cCkp
OwogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICB0eXBlZGVmIEpTT2JqZWN0V2l0aEdsb2Jh
bE9iamVjdCBCYXNlOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhw
UHJvdG90eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
UmVnRXhwUHJvdG90eXBlLmgJKHJldmlzaW9uIDkyMjgzKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvUmVnRXhwUHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTMzLDcgKzMz
LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgcHVibGljOgogICAgICAgICBzdGF0aWMgUmVnRXhw
UHJvdG90eXBlKiBjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUmVnRXhwKiByZWdFeHApCiAgICAgICAgIHsK
LSAgICAgICAgICAgIHJldHVybiBuZXcgKGFsbG9jYXRlQ2VsbDxSZWdFeHBQcm90b3R5cGU+KCpl
eGVjLT5oZWFwKCkpKSBSZWdFeHBQcm90b3R5cGUoZXhlYywgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1
cmUsIHJlZ0V4cCk7CisgICAgICAgICAgICByZXR1cm4gdmFsaWRhdGVBbGxvYzxSZWdFeHBQcm90
b3R5cGU+KGV4ZWMtPmdsb2JhbERhdGEoKSwgbmV3IChhbGxvY2F0ZUNlbGw8UmVnRXhwUHJvdG90
eXBlPigqZXhlYy0+aGVhcCgpKSkgUmVnRXhwUHJvdG90eXBlKGV4ZWMsIGdsb2JhbE9iamVjdCwg
c3RydWN0dXJlLCByZWdFeHApKTsKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgc3RhdGlj
IGNvbnN0IENsYXNzSW5mbyBzX2luZm87CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9TY29wZUNoYWluLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvU2NvcGVDaGFpbi5oCShyZXZpc2lvbiA5MjI4MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1Njb3BlQ2hhaW4uaAkod29ya2luZyBjb3B5KQpAQCAtNTAsMTEgKzUwLDEx
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHB1YmxpYzoKICAgICAgICAgc3RhdGljIFNjb3BlQ2hh
aW5Ob2RlKiBjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBTY29wZUNoYWluTm9kZSogbmV4dCwgSlNP
YmplY3QqIG9iamVjdCwgSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBKU09iamVjdCogZ2xvYmFsVGhpcykKICAgICAgICAgewotICAgICAgICAg
ICAgcmV0dXJuIG5ldyAoYWxsb2NhdGVDZWxsPFNjb3BlQ2hhaW5Ob2RlPigqZXhlYy0+aGVhcCgp
KSkgU2NvcGVDaGFpbk5vZGUobmV4dCwgb2JqZWN0LCBnbG9iYWxEYXRhLCBnbG9iYWxPYmplY3Qs
IGdsb2JhbFRoaXMpOworICAgICAgICAgICAgcmV0dXJuIHZhbGlkYXRlQWxsb2M8U2NvcGVDaGFp
bk5vZGU+KGV4ZWMtPmdsb2JhbERhdGEoKSwgbmV3IChhbGxvY2F0ZUNlbGw8U2NvcGVDaGFpbk5v
ZGU+KCpleGVjLT5oZWFwKCkpKSBTY29wZUNoYWluTm9kZShuZXh0LCBvYmplY3QsIGdsb2JhbERh
dGEsIGdsb2JhbE9iamVjdCwgZ2xvYmFsVGhpcykpOwogICAgICAgICB9CiAgICAgICAgIHN0YXRp
YyBTY29wZUNoYWluTm9kZSogY3JlYXRlKFNjb3BlQ2hhaW5Ob2RlKiBuZXh0LCBKU09iamVjdCog
b2JqZWN0LCBKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIEpTT2JqZWN0KiBnbG9iYWxUaGlzKQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1
cm4gbmV3IChhbGxvY2F0ZUNlbGw8U2NvcGVDaGFpbk5vZGU+KGdsb2JhbERhdGEtPmhlYXApKSBT
Y29wZUNoYWluTm9kZShuZXh0LCBvYmplY3QsIGdsb2JhbERhdGEsIGdsb2JhbE9iamVjdCwgZ2xv
YmFsVGhpcyk7CisgICAgICAgICAgICByZXR1cm4gdmFsaWRhdGVBbGxvYzxTY29wZUNoYWluTm9k
ZT4oKmdsb2JhbERhdGEsIG5ldyAoYWxsb2NhdGVDZWxsPFNjb3BlQ2hhaW5Ob2RlPihnbG9iYWxE
YXRhLT5oZWFwKSkgU2NvcGVDaGFpbk5vZGUobmV4dCwgb2JqZWN0LCBnbG9iYWxEYXRhLCBnbG9i
YWxPYmplY3QsIGdsb2JhbFRoaXMpKTsKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgSlNH
bG9iYWxEYXRhKiBnbG9iYWxEYXRhOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvU3RyaWN0RXZhbEFjdGl2YXRpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9TdHJpY3RFdmFsQWN0aXZhdGlvbi5oCShyZXZpc2lvbiA5MjI4MykKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmljdEV2YWxBY3RpdmF0aW9uLmgJKHdv
cmtpbmcgY29weSkKQEAgLTM0LDcgKzM0LDcgQEAgY2xhc3MgU3RyaWN0RXZhbEFjdGl2YXRpb24g
OiBwdWJsaWMgSlNObwogcHVibGljOgogICAgIHN0YXRpYyBTdHJpY3RFdmFsQWN0aXZhdGlvbiog
Y3JlYXRlKEV4ZWNTdGF0ZSogZXhlYykKICAgICB7Ci0gICAgICAgIHJldHVybiBuZXcgKGFsbG9j
YXRlQ2VsbDxTdHJpY3RFdmFsQWN0aXZhdGlvbj4oKmV4ZWMtPmhlYXAoKSkpIFN0cmljdEV2YWxB
Y3RpdmF0aW9uKGV4ZWMpOworICAgICAgICByZXR1cm4gdmFsaWRhdGVBbGxvYzxTdHJpY3RFdmFs
QWN0aXZhdGlvbj4oZXhlYy0+Z2xvYmFsRGF0YSgpLCBuZXcgKGFsbG9jYXRlQ2VsbDxTdHJpY3RF
dmFsQWN0aXZhdGlvbj4oKmV4ZWMtPmhlYXAoKSkpIFN0cmljdEV2YWxBY3RpdmF0aW9uKGV4ZWMp
KTsKICAgICB9CiAKICAgICB2aXJ0dWFsIGJvb2wgZGVsZXRlUHJvcGVydHkoRXhlY1N0YXRlKiwg
Y29uc3QgSWRlbnRpZmllciYpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
U3RyaW5nQ29uc3RydWN0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1N0cmluZ0NvbnN0cnVjdG9yLmNwcAkocmV2aXNpb24gOTIyODMpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdDb25zdHJ1Y3Rvci5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTQ4LDcgKzQ4LDcgQEAgY29uc3QgQ2xhc3NJbmZvIFN0cmluZ0NvbnN0cnVjdG9y
OjpzX2luZgogQVNTRVJUX0NMQVNTX0ZJVFNfSU5fQ0VMTChTdHJpbmdDb25zdHJ1Y3Rvcik7CiAK
IFN0cmluZ0NvbnN0cnVjdG9yOjpTdHJpbmdDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMsIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBTdHJpbmdQ
cm90b3R5cGUqIHN0cmluZ1Byb3RvdHlwZSkKLSAgICA6IEludGVybmFsRnVuY3Rpb24oJmV4ZWMt
Pmdsb2JhbERhdGEoKSwgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIElkZW50aWZpZXIoZXhlYywg
c3RyaW5nUHJvdG90eXBlLT5jbGFzc0luZm8oKS0+Y2xhc3NOYW1lKSkKKyAgICA6IEludGVybmFs
RnVuY3Rpb24oZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUpCiB7CiAgICAgcHV0RGlyZWN0V2l0aG91
dFRyYW5zaXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkucHJv
dG90eXBlLCBzdHJpbmdQcm90b3R5cGUsIFJlYWRPbmx5IHwgRG9udEVudW0gfCBEb250RGVsZXRl
KTsKICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbihleGVjLT5nbG9iYWxEYXRhKCksIGV4
ZWMtPnByb3BlcnR5TmFtZXMoKS5sZW5ndGgsIGpzTnVtYmVyKDEpLCBSZWFkT25seSB8IERvbnRF
bnVtIHwgRG9udERlbGV0ZSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9T
dHJpbmdDb25zdHJ1Y3Rvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1N0cmluZ0NvbnN0cnVjdG9yLmgJKHJldmlzaW9uIDkyMjgzKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nQ29uc3RydWN0b3IuaAkod29ya2luZyBjb3B5KQpA
QCAtMzIsOSArMzIsMTEgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIFN0cmluZ0NvbnN0cnVj
dG9yKEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgU3RyaW5nUHJvdG90
eXBlKik7CiAgICAgICAgIAogICAgIHB1YmxpYzoKLSAgICAgICAgc3RhdGljIFN0cmluZ0NvbnN0
cnVjdG9yKiBjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0ICwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFN0cmluZ1Byb3RvdHlwZSogc3RyUHJvdG90eXBl
KQorICAgICAgICBzdGF0aWMgU3RyaW5nQ29uc3RydWN0b3IqIGNyZWF0ZShFeGVjU3RhdGUqIGV4
ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwg
U3RyaW5nUHJvdG90eXBlKiBzdHJpbmdQcm90b3R5cGUpCiAgICAgICAgIHsKLSAgICAgICAgICAg
IHJldHVybiBuZXcgKGFsbG9jYXRlQ2VsbDxTdHJpbmdDb25zdHJ1Y3Rvcj4oKmV4ZWMtPmhlYXAo
KSkpIFN0cmluZ0NvbnN0cnVjdG9yKGV4ZWMsIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBzdHJQ
cm90b3R5cGUpOworICAgICAgICAgICAgU3RyaW5nQ29uc3RydWN0b3IqIGNvbnN0cnVjdG9yID0g
dmFsaWRhdGVBbGxvYzxTdHJpbmdDb25zdHJ1Y3Rvcj4oZXhlYy0+Z2xvYmFsRGF0YSgpLCBuZXcg
KGFsbG9jYXRlQ2VsbDxTdHJpbmdDb25zdHJ1Y3Rvcj4oKmV4ZWMtPmhlYXAoKSkpIFN0cmluZ0Nv
bnN0cnVjdG9yKGV4ZWMsIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBzdHJpbmdQcm90b3R5cGUp
KTsKKyAgICAgICAgICAgIGNvbnN0cnVjdG9yLT5pbml0UHJvcGVydGllcyhleGVjLT5nbG9iYWxE
YXRhKCksIElkZW50aWZpZXIoZXhlYywgc3RyaW5nUHJvdG90eXBlLT5jbGFzc0luZm8oKS0+Y2xh
c3NOYW1lKSk7CisgICAgICAgICAgICByZXR1cm4gY29uc3RydWN0b3I7CiAgICAgICAgIH0KIAog
ICAgICAgICBzdGF0aWMgY29uc3QgQ2xhc3NJbmZvIHNfaW5mbzsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ09iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nT2JqZWN0LmNwcAkocmV2aXNpb24gOTIyODMp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdPYmplY3QuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yOSwxMyArMjksNiBAQCBBU1NFUlRfQ0xBU1NfRklUU19JTl9DRUxMKFN0
cmluZ09iamVjdCk7CiAKIGNvbnN0IENsYXNzSW5mbyBTdHJpbmdPYmplY3Q6OnNfaW5mbyA9IHsg
IlN0cmluZyIsICZKU1dyYXBwZXJPYmplY3Q6OnNfaW5mbywgMCwgMCB9OwogCi1TdHJpbmdPYmpl
Y3Q6OlN0cmluZ09iamVjdChFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZSogc3RydWN0dXJlKQot
ICAgIDogSlNXcmFwcGVyT2JqZWN0KGV4ZWMtPmdsb2JhbERhdGEoKSwgc3RydWN0dXJlKQotewot
ICAgIEFTU0VSVChpbmhlcml0cygmc19pbmZvKSk7Ci0gICAgc2V0SW50ZXJuYWxWYWx1ZShleGVj
LT5nbG9iYWxEYXRhKCksIGpzRW1wdHlTdHJpbmcoZXhlYykpOwotfQotCiBTdHJpbmdPYmplY3Q6
OlN0cmluZ09iamVjdChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFN0cnVjdHVyZSogc3RydWN0
dXJlLCBKU1N0cmluZyogc3RyaW5nKQogICAgIDogSlNXcmFwcGVyT2JqZWN0KGdsb2JhbERhdGEs
IHN0cnVjdHVyZSkKIHsKQEAgLTQzLDEzICszNiw2IEBAIFN0cmluZ09iamVjdDo6U3RyaW5nT2Jq
ZWN0KEpTR2xvYmFsRGF0YSYKICAgICBzZXRJbnRlcm5hbFZhbHVlKGdsb2JhbERhdGEsIHN0cmlu
Zyk7CiB9CiAKLVN0cmluZ09iamVjdDo6U3RyaW5nT2JqZWN0KEV4ZWNTdGF0ZSogZXhlYywgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IFVTdHJpbmcmIHN0cmluZykKLSAgICA6IEpTV3JhcHBl
ck9iamVjdChleGVjLT5nbG9iYWxEYXRhKCksIHN0cnVjdHVyZSkKLXsKLSAgICBBU1NFUlQoaW5o
ZXJpdHMoJnNfaW5mbykpOwotICAgIHNldEludGVybmFsVmFsdWUoZXhlYy0+Z2xvYmFsRGF0YSgp
LCBqc1N0cmluZyhleGVjLCBzdHJpbmcpKTsKLX0KLQogYm9vbCBTdHJpbmdPYmplY3Q6OmdldE93
blByb3BlcnR5U2xvdChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5
TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQogewogICAgIGlmIChpbnRlcm5hbFZhbHVlKCktPmdl
dFN0cmluZ1Byb3BlcnR5U2xvdChleGVjLCBwcm9wZXJ0eU5hbWUsIHNsb3QpKQpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nT2JqZWN0LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nT2JqZWN0LmgJKHJldmlzaW9uIDky
MjgzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nT2JqZWN0LmgJKHdv
cmtpbmcgY29weSkKQEAgLTI3LDE4ICsyNywxNiBAQAogbmFtZXNwYWNlIEpTQyB7CiAKICAgICBj
bGFzcyBTdHJpbmdPYmplY3QgOiBwdWJsaWMgSlNXcmFwcGVyT2JqZWN0IHsKLSAgICBwcm90ZWN0
ZWQ6Ci0gICAgICAgIFN0cmluZ09iamVjdChFeGVjU3RhdGUqLCBTdHJ1Y3R1cmUqKTsKLSAgICAg
ICAgU3RyaW5nT2JqZWN0KEV4ZWNTdGF0ZSosIFN0cnVjdHVyZSosIGNvbnN0IFVTdHJpbmcmKTsK
LSAgICAgICAgICAgICAgICAKICAgICBwdWJsaWM6CiAgICAgICAgIHN0YXRpYyBTdHJpbmdPYmpl
Y3QqIGNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZSogc3RydWN0dXJlKQogICAgICAg
ICB7Ci0gICAgICAgICAgICByZXR1cm4gbmV3IChhbGxvY2F0ZUNlbGw8U3RyaW5nT2JqZWN0Pigq
ZXhlYy0+aGVhcCgpKSkgU3RyaW5nT2JqZWN0KGV4ZWMsIHN0cnVjdHVyZSk7ICAKKyAgICAgICAg
ICAgIEpTU3RyaW5nKiBlbXB0eVN0cmluZyA9IGpzRW1wdHlTdHJpbmcoZXhlYyk7CisgICAgICAg
ICAgICByZXR1cm4gdmFsaWRhdGVBbGxvYzxTdHJpbmdPYmplY3Q+KGV4ZWMtPmdsb2JhbERhdGEo
KSwgbmV3IChhbGxvY2F0ZUNlbGw8U3RyaW5nT2JqZWN0PigqZXhlYy0+aGVhcCgpKSkgU3RyaW5n
T2JqZWN0KGV4ZWMtPmdsb2JhbERhdGEoKSwgc3RydWN0dXJlLCBlbXB0eVN0cmluZykpOwogICAg
ICAgICB9CiAgICAgICAgIHN0YXRpYyBTdHJpbmdPYmplY3QqIGNyZWF0ZShFeGVjU3RhdGUqIGV4
ZWMsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBjb25zdCBVU3RyaW5nJiBzdHIpCiAgICAgICAgIHsK
LSAgICAgICAgICAgIHJldHVybiBuZXcgKGFsbG9jYXRlQ2VsbDxTdHJpbmdPYmplY3Q+KCpleGVj
LT5oZWFwKCkpKSBTdHJpbmdPYmplY3QoZXhlYywgc3RydWN0dXJlLCBzdHIpOyAgCisgICAgICAg
ICAgICBKU1N0cmluZyogc3RyaW5nID0ganNTdHJpbmcoZXhlYywgc3RyKTsKKyAgICAgICAgICAg
IHJldHVybiB2YWxpZGF0ZUFsbG9jPFN0cmluZ09iamVjdD4oZXhlYy0+Z2xvYmFsRGF0YSgpLCBu
ZXcgKGFsbG9jYXRlQ2VsbDxTdHJpbmdPYmplY3Q+KCpleGVjLT5oZWFwKCkpKSBTdHJpbmdPYmpl
Y3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBzdHJ1Y3R1cmUsIHN0cmluZykpOwogICAgICAgICB9CiAg
ICAgICAgIHN0YXRpYyBTdHJpbmdPYmplY3QqIGNyZWF0ZShFeGVjU3RhdGUqLCBKU0dsb2JhbE9i
amVjdCosIEpTU3RyaW5nKik7CiAgICAgICAgIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvU3RyaW5nT2JqZWN0VGhhdE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdPYmplY3RUaGF0TWFz
cXVlcmFkZXNBc1VuZGVmaW5lZC5oCShyZXZpc2lvbiA5MjI4MykKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1N0cmluZ09iamVjdFRoYXRNYXNxdWVyYWRlc0FzVW5kZWZpbmVkLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTMyLDEzICszMiwxNCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBw
dWJsaWM6CiAgICAgICAgIHN0YXRpYyBTdHJpbmdPYmplY3RUaGF0TWFzcXVlcmFkZXNBc1VuZGVm
aW5lZCogY3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgVVN0cmluZyYgc3RyaW5nKQogICAg
ICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gbmV3IChhbGxvY2F0ZUNlbGw8U3RyaW5nT2JqZWN0
VGhhdE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQ+KCpleGVjLT5oZWFwKCkpKSBTdHJpbmdPYmplY3RU
aGF0TWFzcXVlcmFkZXNBc1VuZGVmaW5lZChleGVjLAotICAgICAgICAgICAgICAgIGNyZWF0ZVN0
cnVjdHVyZShleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+
c3RyaW5nUHJvdG90eXBlKCkpLCBzdHJpbmcpOworICAgICAgICAgICAgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUgPSBjcmVhdGVTdHJ1Y3R1cmUoZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5sZXhpY2Fs
R2xvYmFsT2JqZWN0KCktPnN0cmluZ1Byb3RvdHlwZSgpKTsKKyAgICAgICAgICAgIEpTU3RyaW5n
KiBqc3N0cmluZyA9IGpzU3RyaW5nKGV4ZWMsIHN0cmluZyk7CisgICAgICAgICAgICByZXR1cm4g
dmFsaWRhdGVBbGxvYzxTdHJpbmdPYmplY3RUaGF0TWFzcXVlcmFkZXNBc1VuZGVmaW5lZD4oZXhl
Yy0+Z2xvYmFsRGF0YSgpLCBuZXcgKGFsbG9jYXRlQ2VsbDxTdHJpbmdPYmplY3RUaGF0TWFzcXVl
cmFkZXNBc1VuZGVmaW5lZD4oKmV4ZWMtPmhlYXAoKSkpIFN0cmluZ09iamVjdFRoYXRNYXNxdWVy
YWRlc0FzVW5kZWZpbmVkKGV4ZWMsIHN0cnVjdHVyZSwganNzdHJpbmcpKTsKICAgICAgICAgfQog
CiAgICAgcHJpdmF0ZToKLSAgICAgICAgU3RyaW5nT2JqZWN0VGhhdE1hc3F1ZXJhZGVzQXNVbmRl
ZmluZWQoRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgY29uc3QgVVN0cmlu
ZyYgc3RyaW5nKQotICAgICAgICAgICAgOiBTdHJpbmdPYmplY3QoZXhlYywgc3RydWN0dXJlLCBz
dHJpbmcpCisgICAgICAgIFN0cmluZ09iamVjdFRoYXRNYXNxdWVyYWRlc0FzVW5kZWZpbmVkKEV4
ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTU3RyaW5nKiBzdHJpbmcpCisg
ICAgICAgICAgICA6IFN0cmluZ09iamVjdChleGVjLT5nbG9iYWxEYXRhKCksIHN0cnVjdHVyZSwg
c3RyaW5nKQogICAgICAgICB7CiAgICAgICAgIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvU3RyaW5nUHJvdG90eXBlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdQcm90b3R5cGUuY3BwCShyZXZpc2lvbiA5MjI4MykK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ1Byb3RvdHlwZS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTEzMSw4ICsxMzEsOCBAQCBjb25zdCBDbGFzc0luZm8gU3RyaW5nUHJv
dG90eXBlOjpzX2luZm8gCiAqLwogCiAvLyBFQ01BIDE1LjUuNAotU3RyaW5nUHJvdG90eXBlOjpT
dHJpbmdQcm90b3R5cGUoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKLSAgICA6IFN0cmluZ09iamVjdChleGVjLCBzdHJ1
Y3R1cmUpCitTdHJpbmdQcm90b3R5cGU6OlN0cmluZ1Byb3RvdHlwZShFeGVjU3RhdGUqIGV4ZWMs
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBKU1N0
cmluZyogc3RyaW5nKQorICAgIDogU3RyaW5nT2JqZWN0KGV4ZWMtPmdsb2JhbERhdGEoKSwgc3Ry
dWN0dXJlLCBzdHJpbmcpCiB7CiAgICAgQVNTRVJUKGluaGVyaXRzKCZzX2luZm8pKTsKIApJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nUHJvdG90eXBlLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nUHJvdG90eXBlLmgJ
KHJldmlzaW9uIDkyMjgzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5n
UHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTI5LDEyICsyOSwxMyBAQCBuYW1lc3BhY2Ug
SlNDIHsKIAogICAgIGNsYXNzIFN0cmluZ1Byb3RvdHlwZSA6IHB1YmxpYyBTdHJpbmdPYmplY3Qg
ewogICAgIHByaXZhdGU6Ci0gICAgICAgIFN0cmluZ1Byb3RvdHlwZShFeGVjU3RhdGUqLCBKU0ds
b2JhbE9iamVjdCosIFN0cnVjdHVyZSopOworICAgICAgICBTdHJpbmdQcm90b3R5cGUoRXhlY1N0
YXRlKiwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBKU1N0cmluZyopOwogCiAgICAgcHVi
bGljOgogICAgICAgICBzdGF0aWMgU3RyaW5nUHJvdG90eXBlKiBjcmVhdGUoRXhlY1N0YXRlKiBl
eGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkK
ICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIG5ldyAoYWxsb2NhdGVDZWxsPFN0cmluZ1By
b3RvdHlwZT4oKmV4ZWMtPmhlYXAoKSkpIFN0cmluZ1Byb3RvdHlwZShleGVjLCBnbG9iYWxPYmpl
Y3QsIHN0cnVjdHVyZSk7CisgICAgICAgICAgICBKU1N0cmluZyogZW1wdHlTdHJpbmcgPSBqc0Vt
cHR5U3RyaW5nKGV4ZWMpOworICAgICAgICAgICAgcmV0dXJuIHZhbGlkYXRlQWxsb2M8U3RyaW5n
UHJvdG90eXBlPihleGVjLT5nbG9iYWxEYXRhKCksIG5ldyAoYWxsb2NhdGVDZWxsPFN0cmluZ1By
b3RvdHlwZT4oKmV4ZWMtPmhlYXAoKSkpIFN0cmluZ1Byb3RvdHlwZShleGVjLCBnbG9iYWxPYmpl
Y3QsIHN0cnVjdHVyZSwgZW1wdHlTdHJpbmcpKTsKICAgICAgICAgfQogCiAgICAgICAgIHZpcnR1
YWwgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYg
cHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1N0cnVjdHVyZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1N0cnVjdHVyZS5oCShyZXZpc2lvbiA5MjI4MykKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5oCSh3b3JraW5nIGNvcHkpCkBAIC02Myw3ICs2Myw3
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB7CiAgICAgICAgICAgICBBU1NFUlQoZ2xvYmFs
RGF0YS5zdHJ1Y3R1cmVTdHJ1Y3R1cmUpOwogICAgICAgICAgICAgQVNTRVJUKGNsYXNzSW5mbyk7
Ci0gICAgICAgICAgICByZXR1cm4gbmV3IChhbGxvY2F0ZUNlbGw8U3RydWN0dXJlPihnbG9iYWxE
YXRhLmhlYXApKSBTdHJ1Y3R1cmUoZ2xvYmFsRGF0YSwgcHJvdG90eXBlLCB0eXBlSW5mbywgYW5v
bnltb3VzU2xvdENvdW50LCBjbGFzc0luZm8pOworICAgICAgICAgICAgcmV0dXJuIHZhbGlkYXRl
QWxsb2M8U3RydWN0dXJlPihnbG9iYWxEYXRhLCBuZXcgKGFsbG9jYXRlQ2VsbDxTdHJ1Y3R1cmU+
KGdsb2JhbERhdGEuaGVhcCkpIFN0cnVjdHVyZShnbG9iYWxEYXRhLCBwcm90b3R5cGUsIHR5cGVJ
bmZvLCBhbm9ueW1vdXNTbG90Q291bnQsIGNsYXNzSW5mbykpOwogICAgICAgICB9CiAKICAgICAg
ICAgc3RhdGljIHZvaWQgZHVtcFN0YXRpc3RpY3MoKTsKQEAgLTE1Nyw3ICsxNTcsNyBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICAgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpT
R2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSkKICAgICAgICAgewogICAgICAgICAgICAgQVNTRVJUKCFn
bG9iYWxEYXRhLnN0cnVjdHVyZVN0cnVjdHVyZSk7Ci0gICAgICAgICAgICByZXR1cm4gbmV3IChh
bGxvY2F0ZUNlbGw8U3RydWN0dXJlPihnbG9iYWxEYXRhLmhlYXApKSBTdHJ1Y3R1cmUoZ2xvYmFs
RGF0YSk7CisgICAgICAgICAgICByZXR1cm4gdmFsaWRhdGVBbGxvYzxTdHJ1Y3R1cmU+KGdsb2Jh
bERhdGEsIG5ldyAoYWxsb2NhdGVDZWxsPFN0cnVjdHVyZT4oZ2xvYmFsRGF0YS5oZWFwKSkgU3Ry
dWN0dXJlKGdsb2JhbERhdGEpKTsKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgc3RhdGlj
IEpTX0VYUE9SVERBVEEgY29uc3QgQ2xhc3NJbmZvIHNfaW5mbzsKQEAgLTE3MCw3ICsxNzAsNyBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlKEpTR2xv
YmFsRGF0YSYgZ2xvYmFsRGF0YSwgY29uc3QgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAgICAgICAg
IHsKICAgICAgICAgICAgIEFTU0VSVChnbG9iYWxEYXRhLnN0cnVjdHVyZVN0cnVjdHVyZSk7Ci0g
ICAgICAgICAgICByZXR1cm4gbmV3IChhbGxvY2F0ZUNlbGw8U3RydWN0dXJlPihnbG9iYWxEYXRh
LmhlYXApKSBTdHJ1Y3R1cmUoZ2xvYmFsRGF0YSwgc3RydWN0dXJlKTsKKyAgICAgICAgICAgIHJl
dHVybiB2YWxpZGF0ZUFsbG9jPFN0cnVjdHVyZT4oZ2xvYmFsRGF0YSwgbmV3IChhbGxvY2F0ZUNl
bGw8U3RydWN0dXJlPihnbG9iYWxEYXRhLmhlYXApKSBTdHJ1Y3R1cmUoZ2xvYmFsRGF0YSwgc3Ry
dWN0dXJlKSk7CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIHR5cGVkZWYgZW51bSB7IApJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlQ2hhaW4uaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVDaGFpbi5o
CShyZXZpc2lvbiA5MjI4MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVj
dHVyZUNoYWluLmgJKHdvcmtpbmcgY29weSkKQEAgLTQyLDcgKzQyLDExIEBAIG5hbWVzcGFjZSBK
U0MgewogICAgICAgICBmcmllbmQgY2xhc3MgSklUOwogCiAgICAgcHVibGljOgotICAgICAgICBz
dGF0aWMgU3RydWN0dXJlQ2hhaW4qIGNyZWF0ZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFN0
cnVjdHVyZSogaGVhZCkgeyByZXR1cm4gbmV3IChhbGxvY2F0ZUNlbGw8U3RydWN0dXJlQ2hhaW4+
KGdsb2JhbERhdGEuaGVhcCkpIFN0cnVjdHVyZUNoYWluKGdsb2JhbERhdGEsIGdsb2JhbERhdGEu
c3RydWN0dXJlQ2hhaW5TdHJ1Y3R1cmUuZ2V0KCksIGhlYWQpOyB9CisgICAgICAgIHN0YXRpYyBT
dHJ1Y3R1cmVDaGFpbiogY3JlYXRlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgU3RydWN0dXJl
KiBoZWFkKSAKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIHZhbGlkYXRlQWxsb2M8U3Ry
dWN0dXJlQ2hhaW4+KGdsb2JhbERhdGEsIG5ldyAoYWxsb2NhdGVDZWxsPFN0cnVjdHVyZUNoYWlu
PihnbG9iYWxEYXRhLmhlYXApKSBTdHJ1Y3R1cmVDaGFpbihnbG9iYWxEYXRhLCBnbG9iYWxEYXRh
LnN0cnVjdHVyZUNoYWluU3RydWN0dXJlLmdldCgpLCBoZWFkKSk7CisgICAgICAgIH0KKwogICAg
ICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiogaGVhZCgpIHsgcmV0dXJuIG1fdmVjdG9yLmdl
dCgpOyB9CiAgICAgICAgIHZvaWQgdmlzaXRDaGlsZHJlbihTbG90VmlzaXRvciYpOwogCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdEdsdWUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0R2x1ZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDkyMjgzKQorKysgU291cmNlL0phdmFT
Y3JpcHRHbHVlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIxIEBACisyMDEx
LTA4LTAzICBNYXJrIEhhaG5lbmJlcmcgIDxtaGFobmVuYmVyZ0BhcHBsZS5jb20+CisKKyAgICAg
ICAgQWRkIGNoZWNrcyB0byBlbnN1cmUgYWxsb2NhdGlvbiBkb2VzIG5vdCB0YWtlIHBsYWNlIGR1
cmluZyBpbml0aWFsaXphdGlvbiBvZiBHQy1tYW5hZ2VkIG9iamVjdHMKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY1Mjg4CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkZWQgdGhlIHZhbGlkYXRlQWxsb2Mg
Y2FsbCB3aGljaCwgd2hlbiBHQ19WQUxJREFUSU9OIGlzIGVuYWJsZWQsIG1ha2VzIHN1cmUgdGhh
dCBubyBhbGxvY2F0aW9ucyAKKyAgICAgICAgb2NjdXIgd2hpbGUgd2UncmUgaW5pdGlhbGl6aW5n
IGFub3RoZXIgb2JqZWN0IGluIG9yZGVyIHRvIHByZXZlbnQgZ2FyYmFnZSBjb2xsZWN0aW9uIGZy
b20gCisgICAgICAgIG9jY3VycmluZyBkdXJpbmcgaW5pdGlhbGl6YXRpb24sIHdoaWNoIGlzIHVu
ZGVmaW5lZC4gIEFsc28gcHVsbGVkIG91dCBhbnkgYWxsb2NhdGlvbiBkb25lIGluIAorICAgICAg
ICBjb25zdHJ1Y3RvcnMgY2FsbGVkIHdpdGggYWxsb2NhdGVDZWxsIGludG8gdGhlIHN0YXRpYyBj
cmVhdGUgbWV0aG9kIGluIGFsbCBwbGFjZXMgd2hlcmUgaXQgd2FzIAorICAgICAgICBwb3NzaWJs
ZSB3aXRob3V0IG1ham9yIHJlc3RydWN0dXJpbmcuCisKKyAgICAgICAgKiBKU1J1bi5oOgorICAg
ICAgICAoSlNHbHVlR2xvYmFsT2JqZWN0OjpjcmVhdGUpOgorICAgICAgICAqIFVzZXJPYmplY3RJ
bXAuaDoKKyAgICAgICAgKFVzZXJPYmplY3RJbXA6OmNyZWF0ZSk6CisKIDIwMTEtMDgtMDEgIERh
dmlkIExldmluICA8bGV2aW5AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIEFkZCBhc3NlcnRzIHRv
IFJlZkNvdW50ZWQgdG8gbWFrZSBzdXJlIHJlZi9kZXJlZiBoYXBwZW5zIG9uIHRoZSByaWdodCB0
aHJlYWQuCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdEdsdWUvSlNSdW4uaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdEdsdWUvSlNSdW4uaAkocmV2aXNpb24gOTIyODMpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdEdsdWUvSlNSdW4uaAkod29ya2luZyBjb3B5KQpAQCAtMzcsNyArMzcsNyBA
QCBjbGFzcyBKU0dsdWVHbG9iYWxPYmplY3QgOiBwdWJsaWMgSlNHbG9iCiAgICAgcHVibGljOgog
ICAgICAgICBzdGF0aWMgSlNHbHVlR2xvYmFsT2JqZWN0KiBjcmVhdGUoSlNHbG9iYWxEYXRhJiBn
bG9iYWxEYXRhLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNGbGFncyBmbGFncyA9IGtKU0ZsYWdO
b25lKQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gbmV3IChhbGxvY2F0ZUNlbGw8SlNH
bHVlR2xvYmFsT2JqZWN0PihnbG9iYWxEYXRhLmhlYXApKSBKU0dsdWVHbG9iYWxPYmplY3QoZ2xv
YmFsRGF0YSwgc3RydWN0dXJlLCBmbGFncyk7CisgICAgICAgICAgICByZXR1cm4gdmFsaWRhdGVB
bGxvYzxKU0dsdWVHbG9iYWxPYmplY3Q+KGdsb2JhbERhdGEsIG5ldyAoYWxsb2NhdGVDZWxsPEpT
R2x1ZUdsb2JhbE9iamVjdD4oZ2xvYmFsRGF0YS5oZWFwKSkgSlNHbHVlR2xvYmFsT2JqZWN0KGds
b2JhbERhdGEsIHN0cnVjdHVyZSwgZmxhZ3MpKTsKICAgICAgICAgfQogCiAgICAgICAgIEpTRmxh
Z3MgRmxhZ3MoKSBjb25zdCB7IHJldHVybiBtX2ZsYWdzOyB9CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdEdsdWUvVXNlck9iamVjdEltcC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
R2x1ZS9Vc2VyT2JqZWN0SW1wLmgJKHJldmlzaW9uIDkyMjgzKQorKysgU291cmNlL0phdmFTY3Jp
cHRHbHVlL1VzZXJPYmplY3RJbXAuaAkod29ya2luZyBjb3B5KQpAQCAtMzgsNyArMzgsNyBAQCBj
bGFzcyBVc2VyT2JqZWN0SW1wIDogcHVibGljIEpTTm9uRmluYWxPCiBwdWJsaWM6CiAgICAgc3Rh
dGljIFVzZXJPYmplY3RJbXAqIGNyZWF0ZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFN0cnVj
dHVyZSogc3RydWN0dXJlLCBKU1VzZXJPYmplY3QqIHVzZXJPYmplY3QpCiAgICAgewotICAgICAg
ICByZXR1cm4gbmV3IChhbGxvY2F0ZUNlbGw8VXNlck9iamVjdEltcD4oZ2xvYmFsRGF0YS5oZWFw
KSkgVXNlck9iamVjdEltcChnbG9iYWxEYXRhLCBzdHJ1Y3R1cmUsIHVzZXJPYmplY3QpOworICAg
ICAgICByZXR1cm4gdmFsaWRhdGVBbGxvYzxVc2VyT2JqZWN0SW1wPihnbG9iYWxEYXRhLCBuZXcg
KGFsbG9jYXRlQ2VsbDxVc2VyT2JqZWN0SW1wPihnbG9iYWxEYXRhLmhlYXApKSBVc2VyT2JqZWN0
SW1wKGdsb2JhbERhdGEsIHN0cnVjdHVyZSwgdXNlck9iamVjdCkpOwogICAgIH0KICAgICAKICAg
ICB2aXJ0dWFsIH5Vc2VyT2JqZWN0SW1wKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCShyZXZpc2lvbiA5MjI4
MykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsx
LDExMSBAQAorMjAxMS0wOC0wMyAgTWFyayBIYWhuZW5iZXJnICA8bWhhaG5lbmJlcmdAYXBwbGUu
Y29tPgorCisgICAgICAgIEFkZCBjaGVja3MgdG8gZW5zdXJlIGFsbG9jYXRpb24gZG9lcyBub3Qg
dGFrZSBwbGFjZSBkdXJpbmcgaW5pdGlhbGl6YXRpb24gb2YgR0MtbWFuYWdlZCBvYmplY3RzCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NTI4OAorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0
cy4KKworICAgICAgICBBZGRlZCB0aGUgdmFsaWRhdGVBbGxvYyBjYWxsIHdoaWNoLCB3aGVuIEdD
X1ZBTElEQVRJT04gaXMgZW5hYmxlZCwgbWFrZXMgc3VyZSB0aGF0IG5vIGFsbG9jYXRpb25zIAor
ICAgICAgICBvY2N1ciB3aGlsZSB3ZSdyZSBpbml0aWFsaXppbmcgYW5vdGhlciBvYmplY3QgaW4g
b3JkZXIgdG8gcHJldmVudCBnYXJiYWdlIGNvbGxlY3Rpb24gZnJvbSAKKyAgICAgICAgb2NjdXJy
aW5nIGR1cmluZyBpbml0aWFsaXphdGlvbiwgd2hpY2ggaXMgdW5kZWZpbmVkLiAgQWxzbyBwdWxs
ZWQgb3V0IGFueSBhbGxvY2F0aW9uIGRvbmUgaW4gCisgICAgICAgIGNvbnN0cnVjdG9ycyBjYWxs
ZWQgd2l0aCBhbGxvY2F0ZUNlbGwgaW50byB0aGUgc3RhdGljIGNyZWF0ZSBtZXRob2QgaW4gYWxs
IHBsYWNlcyB3aGVyZSBpdCB3YXMgCisgICAgICAgIHBvc3NpYmxlIHdpdGhvdXQgbWFqb3IgcmVz
dHJ1Y3R1cmluZy4KKworICAgICAgICAqIFdlYkNvcmUuZXhwLmluOgorICAgICAgICAqIGJpbmRp
bmdzL2pzL0pTQXVkaW9Db25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0F1ZGlv
Q29uc3RydWN0b3I6OkpTQXVkaW9Db25zdHJ1Y3Rvcik6CisgICAgICAgICogYmluZGluZ3MvanMv
SlNBdWRpb0NvbnN0cnVjdG9yLmg6CisgICAgICAgIChXZWJDb3JlOjpKU0F1ZGlvQ29uc3RydWN0
b3I6OmNyZWF0ZSk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmg6CisgICAg
ICAgIChXZWJDb3JlOjpnZXRET01TdHJ1Y3R1cmUpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pT
SW1hZ2VDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0ltYWdlQ29uc3RydWN0
b3I6OkpTSW1hZ2VDb25zdHJ1Y3Rvcik6CisgICAgICAgICogYmluZGluZ3MvanMvSlNJbWFnZUNv
bnN0cnVjdG9yLmg6CisgICAgICAgIChXZWJDb3JlOjpKU0ltYWdlQ29uc3RydWN0b3I6OmNyZWF0
ZSk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNPcHRpb25Db25zdHJ1Y3Rvci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpKU09wdGlvbkNvbnN0cnVjdG9yOjpKU09wdGlvbkNvbnN0cnVjdG9yKToK
KyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU09wdGlvbkNvbnN0cnVjdG9yLmg6CisgICAgICAgIChX
ZWJDb3JlOjpKU09wdGlvbkNvbnN0cnVjdG9yOjpjcmVhdGUpOgorICAgICAgICAqIGJpbmRpbmdz
L3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtOgorICAgICAgICAoR2VuZXJhdGVIZWFkZXIpOgor
ICAgICAgICAoR2VuZXJhdGVJbXBsZW1lbnRhdGlvbik6CisgICAgICAgIChHZW5lcmF0ZUNvbnN0
cnVjdG9yRGVjbGFyYXRpb24pOgorICAgICAgICAoR2VuZXJhdGVDb25zdHJ1Y3RvckRlZmluaXRp
b24pOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2Uu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0SW50ZXJmYWNlQ29uc3RydWN0b3I6OmNyZWF0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RJbnRlcmZhY2VDb25zdHJ1Y3Rvcjo6SlNUZXN0
SW50ZXJmYWNlQ29uc3RydWN0b3IpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RJbnRlcmZhY2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdEludGVyZmFjZTo6
Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdEludGVyZmFjZVByb3RvdHlwZTo6Y3Jl
YXRlKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TWVkaWFRdWVy
eUxpc3RMaXN0ZW5lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RNZWRpYVF1ZXJ5TGlz
dExpc3RlbmVyQ29uc3RydWN0b3I6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RN
ZWRpYVF1ZXJ5TGlzdExpc3RlbmVyQ29uc3RydWN0b3I6OkpTVGVzdE1lZGlhUXVlcnlMaXN0TGlz
dGVuZXJDb25zdHJ1Y3Rvcik6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE1l
ZGlhUXVlcnlMaXN0TGlzdGVuZXI6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RN
ZWRpYVF1ZXJ5TGlzdExpc3RlbmVyUHJvdG90eXBlOjpjcmVhdGUpOgorICAgICAgICAqIGJpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNU
ZXN0T2JqQ29uc3RydWN0b3I6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RPYmpD
b25zdHJ1Y3Rvcjo6SlNUZXN0T2JqQ29uc3RydWN0b3IpOgorICAgICAgICAqIGJpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouaDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE9iajo6
Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE9ialByb3RvdHlwZTo6Y3JlYXRlKToK
KyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2VyaWFsaXplZFNjcmlw
dFZhbHVlSW50ZXJmYWNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZUludGVyZmFjZUNvbnN0cnVjdG9yOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6SlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlQ29uc3RydWN0b3I6OkpTVGVz
dFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZUNvbnN0cnVjdG9yKToKKyAgICAgICAgKiBi
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJm
YWNlLmg6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRl
cmZhY2U6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RTZXJpYWxpemVkU2NyaXB0
VmFsdWVJbnRlcmZhY2VQcm90b3R5cGU6OmNyZWF0ZSk6CisgICAgICAgICogYnJpZGdlL2MvQ1J1
bnRpbWVPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpCaW5kaW5nczo6Q1J1bnRpbWVPYmplY3Q6
OkNSdW50aW1lT2JqZWN0KToKKyAgICAgICAgKiBicmlkZ2UvYy9DUnVudGltZU9iamVjdC5oOgor
ICAgICAgICAoSlNDOjpCaW5kaW5nczo6Q1J1bnRpbWVPYmplY3Q6OmNyZWF0ZSk6CisgICAgICAg
ICogYnJpZGdlL2MvY19pbnN0YW5jZS5jcHA6CisgICAgICAgIChKU0M6OkJpbmRpbmdzOjpDUnVu
dGltZU1ldGhvZDo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6OkNSdW50aW1lTWV0
aG9kOjpDUnVudGltZU1ldGhvZCk6CisgICAgICAgICogYnJpZGdlL2puaS9qc2MvSmF2YUluc3Rh
bmNlSlNDLmNwcDoKKyAgICAgICAgKEphdmFSdW50aW1lTWV0aG9kOjpjcmVhdGUpOgorICAgICAg
ICAoSmF2YVJ1bnRpbWVNZXRob2Q6OkphdmFSdW50aW1lTWV0aG9kKToKKyAgICAgICAgKiBicmlk
Z2Uvam5pL2pzYy9KYXZhUnVudGltZU9iamVjdC5jcHA6CisgICAgICAgIChKU0M6OkJpbmRpbmdz
OjpKYXZhUnVudGltZU9iamVjdDo6SmF2YVJ1bnRpbWVPYmplY3QpOgorICAgICAgICAqIGJyaWRn
ZS9qbmkvanNjL0phdmFSdW50aW1lT2JqZWN0Lmg6CisgICAgICAgIChKU0M6OkJpbmRpbmdzOjpK
YXZhUnVudGltZU9iamVjdDo6Y3JlYXRlKToKKyAgICAgICAgKiBicmlkZ2Uvb2JqYy9PYmpDUnVu
dGltZU9iamVjdC5oOgorICAgICAgICAoSlNDOjpCaW5kaW5nczo6T2JqQ1J1bnRpbWVPYmplY3Q6
OmNyZWF0ZSk6CisgICAgICAgICogYnJpZGdlL29iamMvT2JqQ1J1bnRpbWVPYmplY3QubW06Cisg
ICAgICAgIChKU0M6OkJpbmRpbmdzOjpPYmpDUnVudGltZU9iamVjdDo6T2JqQ1J1bnRpbWVPYmpl
Y3QpOgorICAgICAgICAqIGJyaWRnZS9vYmpjL29iamNfaW5zdGFuY2UubW06CisgICAgICAgIChP
YmpDUnVudGltZU1ldGhvZDo6Y3JlYXRlKToKKyAgICAgICAgKE9iakNSdW50aW1lTWV0aG9kOjpP
YmpDUnVudGltZU1ldGhvZCk6CisgICAgICAgICogYnJpZGdlL29iamMvb2JqY19ydW50aW1lLmg6
CisgICAgICAgIChKU0M6OkJpbmRpbmdzOjpPYmpjRmFsbGJhY2tPYmplY3RJbXA6OmNyZWF0ZSk6
CisgICAgICAgICogYnJpZGdlL29iamMvb2JqY19ydW50aW1lLm1tOgorICAgICAgICAoSlNDOjpC
aW5kaW5nczo6T2JqY0ZhbGxiYWNrT2JqZWN0SW1wOjpPYmpjRmFsbGJhY2tPYmplY3RJbXApOgor
ICAgICAgICAqIGJyaWRnZS9xdC9xdF9pbnN0YW5jZS5jcHA6CisgICAgICAgIChKU0M6OkJpbmRp
bmdzOjpRdFJ1bnRpbWVPYmplY3Q6OmNyZWF0ZSk6CisgICAgICAgIChKU0M6OkJpbmRpbmdzOjpR
dFJ1bnRpbWVPYmplY3Q6OlF0UnVudGltZU9iamVjdCk6CisgICAgICAgICogYnJpZGdlL3F0L3F0
X3BpeG1hcHJ1bnRpbWUuY3BwOgorICAgICAgICAoSlNDOjpCaW5kaW5nczo6UXRQaXhtYXBSdW50
aW1lT2JqZWN0OjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpCaW5kaW5nczo6UXRQaXhtYXBSdW50
aW1lT2JqZWN0OjpRdFBpeG1hcFJ1bnRpbWVPYmplY3QpOgorICAgICAgICAqIGJyaWRnZS9xdC9x
dF9ydW50aW1lLmNwcDoKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6OlF0UnVudGltZU1ldGhvZDo6
UXRSdW50aW1lTWV0aG9kKToKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6OlF0UnVudGltZU1ldGFN
ZXRob2Q6OlF0UnVudGltZU1ldGFNZXRob2QpOgorICAgICAgICAoSlNDOjpCaW5kaW5nczo6UXRS
dW50aW1lQ29ubmVjdGlvbk1ldGhvZDo6UXRSdW50aW1lQ29ubmVjdGlvbk1ldGhvZCk6CisgICAg
ICAgICogYnJpZGdlL3F0L3F0X3J1bnRpbWUuaDoKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6OlF0
UnVudGltZU1ldGFNZXRob2Q6OmNyZWF0ZSk6CisgICAgICAgIChKU0M6OkJpbmRpbmdzOjpRdFJ1
bnRpbWVDb25uZWN0aW9uTWV0aG9kOjpjcmVhdGUpOgorICAgICAgICAqIGJyaWRnZS9ydW50aW1l
X2FycmF5LmNwcDoKKyAgICAgICAgKEpTQzo6UnVudGltZUFycmF5OjpSdW50aW1lQXJyYXkpOgor
ICAgICAgICAqIGJyaWRnZS9ydW50aW1lX2FycmF5Lmg6CisgICAgICAgIChKU0M6OlJ1bnRpbWVB
cnJheTo6Y3JlYXRlKToKKyAgICAgICAgKiBicmlkZ2UvcnVudGltZV9tZXRob2QuY3BwOgorICAg
ICAgICAoSlNDOjpSdW50aW1lTWV0aG9kOjpSdW50aW1lTWV0aG9kKToKKyAgICAgICAgKiBicmlk
Z2UvcnVudGltZV9tZXRob2QuaDoKKyAgICAgICAgKEpTQzo6UnVudGltZU1ldGhvZDo6Y3JlYXRl
KToKKyAgICAgICAgKiBicmlkZ2UvcnVudGltZV9vYmplY3QuaDoKKyAgICAgICAgKEpTQzo6Qmlu
ZGluZ3M6OlJ1bnRpbWVPYmplY3Q6OmNyZWF0ZSk6CisKIDIwMTEtMDgtMDMgIFBhdmVsIEZlbGRt
YW4gIDxwZmVsZG1hbkBnb29nbGUuY29tPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IG1ha2Ug
dGV4dCBpbiBwb3BvdmVyIHNlbGVjdGFibGUgKyBtYWtlIHBvcG92ZXIgcmUtYXBwZWFyIGZhc3Rl
ci4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCShyZXZpc2lvbiA5MjI4MykKKysrIFNvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUuZXhwLmluCSh3b3JraW5nIGNvcHkpCkBAIC0xNjcyLDcgKzE2NzIsNyBA
QCBfX1pOM0pTQzEzUnVudGltZU1ldGhvZDExZ2V0Q2FsbERhdGFFUk5TCiBfX1pOM0pTQzEzUnVu
dGltZU1ldGhvZDE4Z2V0T3duUHJvcGVydHlTbG90RVBOU185RXhlY1N0YXRlRVJLTlNfMTBJZGVu
dGlmaWVyRVJOU18xMlByb3BlcnR5U2xvdEUKIF9fWk4zSlNDMTNSdW50aW1lTWV0aG9kMjRnZXRP
d25Qcm9wZXJ0eURlc2NyaXB0b3JFUE5TXzlFeGVjU3RhdGVFUktOU18xMElkZW50aWZpZXJFUk5T
XzE4UHJvcGVydHlEZXNjcmlwdG9yRQogX19aTjNKU0MxM1J1bnRpbWVNZXRob2Q2c19pbmZvRQot
X19aTjNKU0MxM1J1bnRpbWVNZXRob2RDMkVQTlNfOUV4ZWNTdGF0ZUVQTlNfMTRKU0dsb2JhbE9i
amVjdEVQTlNfOVN0cnVjdHVyZUVSS05TXzEwSWRlbnRpZmllckVSTjNXVEY2VmVjdG9ySVBOU184
QmluZGluZ3M2TWV0aG9kRUxtMEVFRQorX19aTjNKU0MxM1J1bnRpbWVNZXRob2RDMkVQTlNfMTRK
U0dsb2JhbE9iamVjdEVQTlNfOVN0cnVjdHVyZUVSTjNXVEY2VmVjdG9ySVBOU184QmluZGluZ3M2
TWV0aG9kRUxtMEVFRQogX19aTjNKU0M4QmluZGluZ3MxMFJvb3RPYmplY3REMUV2CiBfX1pOM0pT
QzhCaW5kaW5nczEzUnVudGltZU9iamVjdDExZ2V0Q2FsbERhdGFFUk5TXzhDYWxsRGF0YUUKIF9f
Wk4zSlNDOEJpbmRpbmdzMTNSdW50aW1lT2JqZWN0MTRkZWxldGVQcm9wZXJ0eUVQTlNfOUV4ZWNT
dGF0ZUVSS05TXzEwSWRlbnRpZmllckUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTQXVkaW9Db25zdHJ1Y3Rvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNBdWRpb0NvbnN0cnVjdG9yLmNwcAkocmV2aXNpb24gOTIyODMpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0F1ZGlvQ29uc3RydWN0b3IuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0zOSwxMiArMzksMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjb25zdCBDbGFz
c0luZm8gSlNBdWRpb0NvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJBdWRpb0NvbnN0cnVjdG9yIiwg
JkRPTUNvbnN0cnVjdG9yV2l0aERvY3VtZW50OjpzX2luZm8sIDAsIDAgfTsKIAotSlNBdWRpb0Nv
bnN0cnVjdG9yOjpKU0F1ZGlvQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKK0pTQXVkaW9Db25z
dHJ1Y3Rvcjo6SlNBdWRpb0NvbnN0cnVjdG9yKFN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0RPTUds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogICAgIDogRE9NQ29uc3RydWN0b3JXaXRoRG9jdW1l
bnQoc3RydWN0dXJlLCBnbG9iYWxPYmplY3QpCiB7CiAgICAgQVNTRVJUKGluaGVyaXRzKCZzX2lu
Zm8pKTsKLSAgICBwdXREaXJlY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5wcm9wZXJ0eU5h
bWVzKCkucHJvdG90eXBlLCBKU0hUTUxBdWRpb0VsZW1lbnRQcm90b3R5cGU6OnNlbGYoZXhlYywg
Z2xvYmFsT2JqZWN0KSwgTm9uZSk7Ci0gICAgcHV0RGlyZWN0KGV4ZWMtPmdsb2JhbERhdGEoKSwg
ZXhlYy0+cHJvcGVydHlOYW1lcygpLmxlbmd0aCwganNOdW1iZXIoMSksIFJlYWRPbmx5IHwgRG9u
dERlbGV0ZSB8IERvbnRFbnVtKTsKIH0KIAogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgY29uc3RydWN0QXVkaW8oRXhlY1N0YXRlKiBleGVjKQpJbmRleDogU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNBdWRpb0NvbnN0cnVjdG9yLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNBdWRpb0NvbnN0cnVjdG9yLmgJKHJldmlzaW9uIDkyMjgz
KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNBdWRpb0NvbnN0cnVjdG9yLmgJKHdv
cmtpbmcgY29weSkKQEAgLTI4LDggKzI4LDEwIEBACiAKICNpZiBFTkFCTEUoVklERU8pCiAKKyNp
bmNsdWRlICJKU0F1ZGlvQ29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJKU0RPTUJpbmRpbmcuaCIK
ICNpbmNsdWRlICJKU0RvY3VtZW50LmgiCisjaW5jbHVkZSAiSlNIVE1MQXVkaW9FbGVtZW50Lmgi
CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0zOCw3
ICs0MCwxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgcHVibGljOgogICAgICAgICBzdGF0
aWMgSlNBdWRpb0NvbnN0cnVjdG9yKiBjcmVhdGUoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIEpTQzo6
U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiAg
ICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBuZXcgKEpTQzo6YWxsb2NhdGVDZWxsPEpTQXVk
aW9Db25zdHJ1Y3Rvcj4oKmV4ZWMtPmhlYXAoKSkpIEpTQXVkaW9Db25zdHJ1Y3RvcihleGVjLCBz
dHJ1Y3R1cmUsIGdsb2JhbE9iamVjdCk7CisgICAgICAgICAgICBKU0F1ZGlvQ29uc3RydWN0b3Iq
IGNvbnN0cnVjdG9yID1KU0M6OnZhbGlkYXRlQWxsb2M8SlNBdWRpb0NvbnN0cnVjdG9yPihleGVj
LT5nbG9iYWxEYXRhKCksIG5ldyAoSlNDOjphbGxvY2F0ZUNlbGw8SlNBdWRpb0NvbnN0cnVjdG9y
PigqZXhlYy0+aGVhcCgpKSkgSlNBdWRpb0NvbnN0cnVjdG9yKHN0cnVjdHVyZSwgZ2xvYmFsT2Jq
ZWN0KSk7CisgICAgICAgICAgICBjb25zdHJ1Y3Rvci0+cHV0RGlyZWN0KGV4ZWMtPmdsb2JhbERh
dGEoKSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLnByb3RvdHlwZSwgSlNIVE1MQXVkaW9FbGVtZW50
UHJvdG90eXBlOjpzZWxmKGV4ZWMsIGdsb2JhbE9iamVjdCksIEpTQzo6Tm9uZSk7CisgICAgICAg
ICAgICBjb25zdHJ1Y3Rvci0+cHV0RGlyZWN0KGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+cHJv
cGVydHlOYW1lcygpLmxlbmd0aCwgSlNDOjpqc051bWJlcigxKSwgSlNDOjpSZWFkT25seSB8IEpT
Qzo6RG9udERlbGV0ZSB8IEpTQzo6RG9udEVudW0pOworICAgICAgICAgICAgcmV0dXJuIGNvbnN0
cnVjdG9yOwogICAgICAgICB9CiAKICAgICAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVh
dGVTdHJ1Y3R1cmUoSlNDOjpKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTQzo6SlNWYWx1ZSBw
cm90b3R5cGUpCkBAIC00OSw3ICs1NCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAg
c3RhdGljIGNvbnN0IEpTQzo6Q2xhc3NJbmZvIHNfaW5mbzsKIAogICAgIHByaXZhdGU6Ci0gICAg
ICAgIEpTQXVkaW9Db25zdHJ1Y3RvcihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6U3RydWN0dXJlKiwg
SlNET01HbG9iYWxPYmplY3QqKTsKKyAgICAgICAgSlNBdWRpb0NvbnN0cnVjdG9yKEpTQzo6U3Ry
dWN0dXJlKiwgSlNET01HbG9iYWxPYmplY3QqKTsKICAgICAgICAgdmlydHVhbCBKU0M6OkNvbnN0
cnVjdFR5cGUgZ2V0Q29uc3RydWN0RGF0YShKU0M6OkNvbnN0cnVjdERhdGEmKTsKICAgICB9Owog
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuaAkocmV2aXNp
b24gOTIyODMpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuaAko
d29ya2luZyBjb3B5KQpAQCAtODgsNyArODgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAg
ewogICAgICAgICBpZiAoSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGdldENhY2hlZERPTVN0
cnVjdHVyZShnbG9iYWxPYmplY3QsICZXcmFwcGVyQ2xhc3M6OnNfaW5mbykpCiAgICAgICAgICAg
ICByZXR1cm4gc3RydWN0dXJlOwotICAgICAgICByZXR1cm4gY2FjaGVET01TdHJ1Y3R1cmUoZ2xv
YmFsT2JqZWN0LCBXcmFwcGVyQ2xhc3M6OmNyZWF0ZVN0cnVjdHVyZShleGVjLT5nbG9iYWxEYXRh
KCksIFdyYXBwZXJDbGFzczo6Y3JlYXRlUHJvdG90eXBlKGV4ZWMsIGdsb2JhbE9iamVjdCkpLCAm
V3JhcHBlckNsYXNzOjpzX2luZm8pOworICAgICAgICByZXR1cm4gY2FjaGVET01TdHJ1Y3R1cmUo
Z2xvYmFsT2JqZWN0LCBXcmFwcGVyQ2xhc3M6OmNyZWF0ZVN0cnVjdHVyZShleGVjLT5nbG9iYWxE
YXRhKCksIEpTQzo6SlNWYWx1ZSgoSlNDOjpKU0NlbGwgKilXcmFwcGVyQ2xhc3M6OmNyZWF0ZVBy
b3RvdHlwZShleGVjLCBnbG9iYWxPYmplY3QpKSksICZXcmFwcGVyQ2xhc3M6OnNfaW5mbyk7CiAg
ICAgfQogCiAgICAgdGVtcGxhdGU8Y2xhc3MgV3JhcHBlckNsYXNzPiBpbmxpbmUgSlNDOjpTdHJ1
Y3R1cmUqIGRlcHJlY2F0ZWRHZXRET01TdHJ1Y3R1cmUoSlNDOjpFeGVjU3RhdGUqIGV4ZWMpCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0ltYWdlQ29uc3RydWN0b3IuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSW1hZ2VDb25zdHJ1Y3Rv
ci5jcHAJKHJldmlzaW9uIDkyMjgzKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJ
bWFnZUNvbnN0cnVjdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzQsMTEgKzM0LDEwIEBAIEFT
U0VSVF9DTEFTU19GSVRTX0lOX0NFTEwoSlNJbWFnZUNvbnN0cnUKIAogY29uc3QgQ2xhc3NJbmZv
IEpTSW1hZ2VDb25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiSW1hZ2VDb25zdHJ1Y3RvciIsICZET01D
b25zdHJ1Y3RvcldpdGhEb2N1bWVudDo6c19pbmZvLCAwLCAwIH07CiAKLUpTSW1hZ2VDb25zdHJ1
Y3Rvcjo6SlNJbWFnZUNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCitKU0ltYWdlQ29uc3RydWN0
b3I6OkpTSW1hZ2VDb25zdHJ1Y3RvcihTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01HbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCkKICAgICA6IERPTUNvbnN0cnVjdG9yV2l0aERvY3VtZW50KHN0
cnVjdHVyZSwgZ2xvYmFsT2JqZWN0KQogewogICAgIEFTU0VSVChpbmhlcml0cygmc19pbmZvKSk7
Ci0gICAgcHV0RGlyZWN0KGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+cHJvcGVydHlOYW1lcygp
LnByb3RvdHlwZSwgSlNIVE1MSW1hZ2VFbGVtZW50UHJvdG90eXBlOjpzZWxmKGV4ZWMsIGdsb2Jh
bE9iamVjdCksIE5vbmUpOwogfQogCiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBjb25zdHJ1Y3RJbWFnZShFeGVjU3RhdGUqIGV4ZWMpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0ltYWdlQ29uc3RydWN0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0ltYWdlQ29uc3RydWN0b3IuaAkocmV2aXNpb24gOTIyODMpCisr
KyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0ltYWdlQ29uc3RydWN0b3IuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMjIsNiArMjIsNyBAQAogCiAjaW5jbHVkZSAiSlNET01CaW5kaW5nLmgiCiAj
aW5jbHVkZSAiSlNEb2N1bWVudC5oIgorI2luY2x1ZGUgIkpTSFRNTEltYWdlRWxlbWVudC5oIgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTI5LDcgKzMwLDkgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogICAgIHB1YmxpYzoKICAgICAgICAgc3RhdGljIEpTSW1hZ2VDb25zdHJ1Y3RvciogY3Jl
YXRlKEpTQzo6RXhlY1N0YXRlKiBleGVjLCBKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0RP
TUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1
cm4gbmV3IChKU0M6OmFsbG9jYXRlQ2VsbDxKU0ltYWdlQ29uc3RydWN0b3I+KCpleGVjLT5oZWFw
KCkpKSBKU0ltYWdlQ29uc3RydWN0b3IoZXhlYywgc3RydWN0dXJlLCBnbG9iYWxPYmplY3QpOwor
ICAgICAgICAgICAgSlNJbWFnZUNvbnN0cnVjdG9yKiBjb25zdHJ1Y3RvciA9IEpTQzo6dmFsaWRh
dGVBbGxvYzxKU0ltYWdlQ29uc3RydWN0b3I+KGV4ZWMtPmdsb2JhbERhdGEoKSwgbmV3IChKU0M6
OmFsbG9jYXRlQ2VsbDxKU0ltYWdlQ29uc3RydWN0b3I+KCpleGVjLT5oZWFwKCkpKSBKU0ltYWdl
Q29uc3RydWN0b3Ioc3RydWN0dXJlLCBnbG9iYWxPYmplY3QpKTsKKyAgICAgICAgICAgIGNvbnN0
cnVjdG9yLT5wdXREaXJlY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVz
KCkucHJvdG90eXBlLCBKU0hUTUxJbWFnZUVsZW1lbnRQcm90b3R5cGU6OnNlbGYoZXhlYywgZ2xv
YmFsT2JqZWN0KSwgSlNDOjpOb25lKTsKKyAgICAgICAgICAgIHJldHVybiBjb25zdHJ1Y3RvcjsK
ICAgICAgICAgfQogCiAgICAgICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0
dXJlKEpTQzo6SlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU0M6OkpTVmFsdWUgcHJvdG90eXBl
KQpAQCAtNDAsNyArNDMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHN0YXRpYyBj
b25zdCBKU0M6OkNsYXNzSW5mbyBzX2luZm87CiAKICAgICBwcml2YXRlOgotICAgICAgICBKU0lt
YWdlQ29uc3RydWN0b3IoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OlN0cnVjdHVyZSosIEpTRE9NR2xv
YmFsT2JqZWN0Kik7CisgICAgICAgIEpTSW1hZ2VDb25zdHJ1Y3RvcihKU0M6OlN0cnVjdHVyZSos
IEpTRE9NR2xvYmFsT2JqZWN0Kik7CiAgICAgICAgIHZpcnR1YWwgSlNDOjpDb25zdHJ1Y3RUeXBl
IGdldENvbnN0cnVjdERhdGEoSlNDOjpDb25zdHJ1Y3REYXRhJik7CiAgICAgfTsKIApJbmRleDog
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNPcHRpb25Db25zdHJ1Y3Rvci5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNPcHRpb25Db25zdHJ1Y3Rvci5j
cHAJKHJldmlzaW9uIDkyMjgzKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNPcHRp
b25Db25zdHJ1Y3Rvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM1LDEyICszNSwxMCBAQCBBU1NF
UlRfQ0xBU1NfRklUU19JTl9DRUxMKEpTT3B0aW9uQ29uc3RyCiAKIGNvbnN0IENsYXNzSW5mbyBK
U09wdGlvbkNvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJPcHRpb25Db25zdHJ1Y3RvciIsICZET01D
b25zdHJ1Y3RvcldpdGhEb2N1bWVudDo6c19pbmZvLCAwLCAwIH07CiAKLUpTT3B0aW9uQ29uc3Ry
dWN0b3I6OkpTT3B0aW9uQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKK0pTT3B0aW9uQ29uc3Ry
dWN0b3I6OkpTT3B0aW9uQ29uc3RydWN0b3IoU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTRE9NR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiAgICAgOiBET01Db25zdHJ1Y3RvcldpdGhEb2N1bWVu
dChzdHJ1Y3R1cmUsIGdsb2JhbE9iamVjdCkKIHsKICAgICBBU1NFUlQoaW5oZXJpdHMoJnNfaW5m
bykpOwotICAgIHB1dERpcmVjdChleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPnByb3BlcnR5TmFt
ZXMoKS5wcm90b3R5cGUsIEpTSFRNTE9wdGlvbkVsZW1lbnRQcm90b3R5cGU6OnNlbGYoZXhlYywg
Z2xvYmFsT2JqZWN0KSwgTm9uZSk7Ci0gICAgcHV0RGlyZWN0KGV4ZWMtPmdsb2JhbERhdGEoKSwg
ZXhlYy0+cHJvcGVydHlOYW1lcygpLmxlbmd0aCwganNOdW1iZXIoNCksIFJlYWRPbmx5IHwgRG9u
dERlbGV0ZSB8IERvbnRFbnVtKTsKIH0KIAogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgY29uc3RydWN0SFRNTE9wdGlvbkVsZW1lbnQoRXhlY1N0YXRlKiBleGVjKQpJbmRleDog
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNPcHRpb25Db25zdHJ1Y3Rvci5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTT3B0aW9uQ29uc3RydWN0b3IuaAko
cmV2aXNpb24gOTIyODMpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU09wdGlvbkNv
bnN0cnVjdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTIyLDYgKzIyLDcgQEAKIAogI2luY2x1ZGUg
IkpTRE9NQmluZGluZy5oIgogI2luY2x1ZGUgIkpTRG9jdW1lbnQuaCIKKyNpbmNsdWRlICJKU0hU
TUxPcHRpb25FbGVtZW50LmgiCiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CkBAIC0zMCw3ICszMSwxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgcHVi
bGljOgogICAgICAgICBzdGF0aWMgSlNPcHRpb25Db25zdHJ1Y3RvciogY3JlYXRlKEpTQzo6RXhl
Y1N0YXRlKiBleGVjLCBKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0RPTUdsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0KQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gbmV3IChKU0M6
OmFsbG9jYXRlQ2VsbDxKU09wdGlvbkNvbnN0cnVjdG9yPigqZXhlYy0+aGVhcCgpKSkgSlNPcHRp
b25Db25zdHJ1Y3RvcihleGVjLCBzdHJ1Y3R1cmUsIGdsb2JhbE9iamVjdCk7CisgICAgICAgICAg
ICBKU09wdGlvbkNvbnN0cnVjdG9yKiBjb25zdHJ1Y3RvciA9IEpTQzo6dmFsaWRhdGVBbGxvYzxK
U09wdGlvbkNvbnN0cnVjdG9yPihleGVjLT5nbG9iYWxEYXRhKCksIG5ldyAoSlNDOjphbGxvY2F0
ZUNlbGw8SlNPcHRpb25Db25zdHJ1Y3Rvcj4oKmV4ZWMtPmhlYXAoKSkpIEpTT3B0aW9uQ29uc3Ry
dWN0b3Ioc3RydWN0dXJlLCBnbG9iYWxPYmplY3QpKTsKKyAgICAgICAgICAgIGNvbnN0cnVjdG9y
LT5wdXREaXJlY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkucHJv
dG90eXBlLCBKU0hUTUxPcHRpb25FbGVtZW50UHJvdG90eXBlOjpzZWxmKGV4ZWMsIGdsb2JhbE9i
amVjdCksIEpTQzo6Tm9uZSk7CisgICAgICAgICAgICBjb25zdHJ1Y3Rvci0+cHV0RGlyZWN0KGV4
ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLmxlbmd0aCwgSlNDOjpqc051
bWJlcig0KSwgSlNDOjpSZWFkT25seSB8IEpTQzo6RG9udERlbGV0ZSB8IEpTQzo6RG9udEVudW0p
OworICAgICAgICAgICAgcmV0dXJuIGNvbnN0cnVjdG9yOwogICAgICAgICB9CiAKICAgICAgICAg
c3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpKU0dsb2JhbERhdGEm
IGdsb2JhbERhdGEsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCkBAIC00MSw3ICs0NSw3IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgc3RhdGljIGNvbnN0IEpTQzo6Q2xhc3NJbmZvIHNf
aW5mbzsKIAogICAgIHByaXZhdGU6Ci0gICAgICAgIEpTT3B0aW9uQ29uc3RydWN0b3IoSlNDOjpF
eGVjU3RhdGUqLCBKU0M6OlN0cnVjdHVyZSosIEpTRE9NR2xvYmFsT2JqZWN0Kik7CisgICAgICAg
IEpTT3B0aW9uQ29uc3RydWN0b3IoSlNDOjpTdHJ1Y3R1cmUqLCBKU0RPTUdsb2JhbE9iamVjdCop
OwogICAgICAgICB2aXJ0dWFsIEpTQzo6Q29uc3RydWN0VHlwZSBnZXRDb25zdHJ1Y3REYXRhKEpT
Qzo6Q29uc3RydWN0RGF0YSYpOwogICAgIH07CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCShyZXZpc2lvbiA5MjI4MykK
KysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCSh3
b3JraW5nIGNvcHkpCkBAIC02OTksMjYgKzY5OSw3IEBAIHN1YiBHZW5lcmF0ZUhlYWRlcgogICAg
IHB1c2goQGhlYWRlckNvbnRlbnQsICJjbGFzcyAkY2xhc3NOYW1lIDogcHVibGljICRwYXJlbnRD
bGFzc05hbWUge1xuIik7CiAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICB0eXBlZGVmICRw
YXJlbnRDbGFzc05hbWUgQmFzZTtcbiIpOwogCi0gICAgIyBTdGF0aWMgY3JlYXRlIG1ldGhvZHMK
ICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAicHVibGljOlxuIik7Ci0gICAgaWYgKCRpbnRlcmZh
Y2VOYW1lIGVxICJET01XaW5kb3ciKSB7Ci0gICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIg
ICAgc3RhdGljICRjbGFzc05hbWUqIGNyZWF0ZShKU0M6OkpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0
YSwgSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUGFzc1JlZlB0cjwkaW1wbFR5cGU+IGltcGws
IEpTRE9NV2luZG93U2hlbGwqIHdpbmRvd1NoZWxsKVxuIik7Ci0gICAgICAgIHB1c2goQGhlYWRl
ckNvbnRlbnQsICIgICAge1xuIik7Ci0gICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAg
ICAgIHJldHVybiBuZXcgKEpTQzo6YWxsb2NhdGVDZWxsPCRjbGFzc05hbWU+KGdsb2JhbERhdGEu
aGVhcCkpICR7Y2xhc3NOYW1lfShnbG9iYWxEYXRhLCBzdHJ1Y3R1cmUsIGltcGwsIHdpbmRvd1No
ZWxsKTtcbiIpOwotICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIH1cblxuIik7Ci0g
ICAgfSBlbHNpZiAoJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiSXNXb3JrZXJDb250
ZXh0In0pIHsKLSAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICBzdGF0aWMgJGNsYXNz
TmFtZSogY3JlYXRlKEpTQzo6SlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU0M6OlN0cnVjdHVy
ZSogc3RydWN0dXJlLCBQYXNzUmVmUHRyPCRpbXBsVHlwZT4gaW1wbClcbiIpOwotICAgICAgICBw
dXNoKEBoZWFkZXJDb250ZW50LCAiICAgIHtcbiIpOwotICAgICAgICBwdXNoKEBoZWFkZXJDb250
ZW50LCAiICAgICAgICByZXR1cm4gbmV3IChKU0M6OmFsbG9jYXRlQ2VsbDwkY2xhc3NOYW1lPihn
bG9iYWxEYXRhLmhlYXApKSAke2NsYXNzTmFtZX0oZ2xvYmFsRGF0YSwgc3RydWN0dXJlLCBpbXBs
KTtcbiIpOwotICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIH1cblxuIik7Ci0gICAg
fSBlbHNlIHsKLSAgICAgICAgQWRkSW5jbHVkZXNGb3JUeXBlSW5IZWFkZXIoJGltcGxUeXBlKSB1
bmxlc3MgJHN2Z1Byb3BlcnR5T3JMaXN0UHJvcGVydHlUeXBlOwotICAgICAgICBwdXNoKEBoZWFk
ZXJDb250ZW50LCAiICAgIHN0YXRpYyAkY2xhc3NOYW1lKiBjcmVhdGUoSlNDOjpTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUGFzc1JlZlB0cjwk
aW1wbFR5cGU+IGltcGwpXG4iKTsKLSAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICB7
XG4iKTsKLSAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICAgICAgcmV0dXJuIG5ldyAo
SlNDOjphbGxvY2F0ZUNlbGw8JGNsYXNzTmFtZT4oZ2xvYmFsT2JqZWN0LT5nbG9iYWxEYXRhKCku
aGVhcCkpICRjbGFzc05hbWUoc3RydWN0dXJlLCBnbG9iYWxPYmplY3QsIGltcGwpO1xuIik7Ci0g
ICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgfVxuXG4iKTsKLSAgICB9Ci0KICAgICAj
IFByb3RvdHlwZQogICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgc3RhdGljIEpTQzo6SlNP
YmplY3QqIGNyZWF0ZVByb3RvdHlwZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNHbG9iYWxPYmpl
Y3QqKTtcbiIpIHVubGVzcyAoJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiRXh0ZW5k
c0RPTUdsb2JhbE9iamVjdCJ9KTsKIApAQCAtODcxLDYgKzg1MiwyOCBAQCBzdWIgR2VuZXJhdGVI
ZWFkZXIKICAgICAgICAgfQogICAgIH0KIAorICAgICMgU3RhdGljIGNyZWF0ZSBtZXRob2RzCisg
ICAgaWYgKCRpbnRlcmZhY2VOYW1lIGVxICJET01XaW5kb3ciKSB7CisgICAgICAgIHB1c2goQGhl
YWRlckNvbnRlbnQsICIgICAgc3RhdGljICRjbGFzc05hbWUqIGNyZWF0ZShKU0M6OkpTR2xvYmFs
RGF0YSYgZ2xvYmFsRGF0YSwgSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUGFzc1JlZlB0cjwk
aW1wbFR5cGU+IGltcGwsIEpTRE9NV2luZG93U2hlbGwqIHdpbmRvd1NoZWxsKVxuIik7CisgICAg
ICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAge1xuIik7CisgICAgICAgIHB1c2goQGhlYWRl
ckNvbnRlbnQsICIgICAgICAgICRjbGFzc05hbWUqIHB0ciA9IEpTQzo6dmFsaWRhdGVBbGxvYzwk
Y2xhc3NOYW1lPihnbG9iYWxEYXRhLCBuZXcgKEpTQzo6YWxsb2NhdGVDZWxsPCRjbGFzc05hbWU+
KGdsb2JhbERhdGEuaGVhcCkpICR7Y2xhc3NOYW1lfShnbG9iYWxEYXRhLCBzdHJ1Y3R1cmUsIGlt
cGwsIHdpbmRvd1NoZWxsKSk7XG4iKTsKKyAgICB9IGVsc2lmICgkZGF0YU5vZGUtPmV4dGVuZGVk
QXR0cmlidXRlcy0+eyJJc1dvcmtlckNvbnRleHQifSkgeworICAgICAgICBwdXNoKEBoZWFkZXJD
b250ZW50LCAiICAgIHN0YXRpYyAkY2xhc3NOYW1lKiBjcmVhdGUoSlNDOjpKU0dsb2JhbERhdGEm
IGdsb2JhbERhdGEsIEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFBhc3NSZWZQdHI8JGltcGxU
eXBlPiBpbXBsKVxuIik7CisgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAge1xuIik7
CisgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgICAgICRjbGFzc05hbWUqIHB0ciA9
IEpTQzo6dmFsaWRhdGVBbGxvYzwkY2xhc3NOYW1lPihnbG9iYWxEYXRhLCBuZXcgKEpTQzo6YWxs
b2NhdGVDZWxsPCRjbGFzc05hbWU+KGdsb2JhbERhdGEuaGVhcCkpICR7Y2xhc3NOYW1lfShnbG9i
YWxEYXRhLCBzdHJ1Y3R1cmUsIGltcGwpKTtcbiIpOworICAgIH0gZWxzZSB7CisgICAgICAgIEFk
ZEluY2x1ZGVzRm9yVHlwZUluSGVhZGVyKCRpbXBsVHlwZSkgdW5sZXNzICRzdmdQcm9wZXJ0eU9y
TGlzdFByb3BlcnR5VHlwZTsKKyAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICBzdGF0
aWMgJGNsYXNzTmFtZSogY3JlYXRlKEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTRE9NR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFBhc3NSZWZQdHI8JGltcGxUeXBlPiBpbXBsKVxuIik7
CisgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAge1xuIik7CisgICAgICAgIHB1c2go
QGhlYWRlckNvbnRlbnQsICIgICAgICAgICRjbGFzc05hbWUqIHB0ciA9IEpTQzo6dmFsaWRhdGVB
bGxvYzwkY2xhc3NOYW1lPihnbG9iYWxPYmplY3QtPmdsb2JhbERhdGEoKSwgbmV3IChKU0M6OmFs
bG9jYXRlQ2VsbDwkY2xhc3NOYW1lPihnbG9iYWxPYmplY3QtPmdsb2JhbERhdGEoKS5oZWFwKSkg
JGNsYXNzTmFtZShzdHJ1Y3R1cmUsIGdsb2JhbE9iamVjdCwgaW1wbCkpO1xuIik7CisgICAgfQor
ICAgIGlmICgkbnVtQ2FjaGVkQXR0cmlidXRlcyA+IDApIHsKKyAgICAgICAgcHVzaChAaGVhZGVy
Q29udGVudCwgIiAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gQmFzZTo6QW5vbnltb3VzU2xvdENv
dW50OyBpIDwgQW5vbnltb3VzU2xvdENvdW50OyBpKyspXG4iKTsKKyAgICAgICAgcHVzaChAaGVh
ZGVyQ29udGVudCwgIiAgICAgICAgICAgIHB0ci0+cHV0QW5vbnltb3VzVmFsdWUoZ2xvYmFsT2Jq
ZWN0LT5nbG9iYWxEYXRhKCksIGksIEpTQzo6SlNWYWx1ZSgpKTtcbiIpOworICAgIH0KKyAgICBw
dXNoKEBoZWFkZXJDb250ZW50LCAiICAgICAgICByZXR1cm4gcHRyO1xuIik7CisgICAgcHVzaChA
aGVhZGVyQ29udGVudCwgIiAgICB9XG5cbiIpOworCiAgICAgZm9yZWFjaCBteSAkZnVuY3Rpb24g
KEB7JGRhdGFOb2RlLT5mdW5jdGlvbnN9KSB7CiAgICAgICAgICRudW1DdXN0b21GdW5jdGlvbnMr
KyBpZiAkZnVuY3Rpb24tPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkN1c3RvbSJ9
IHx8ICRmdW5jdGlvbi0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiSlNDQ3VzdG9t
In07CiAgICAgfQpAQCAtMTAwMyw3ICsxMDA2LDcgQEAgc3ViIEdlbmVyYXRlSGVhZGVyCiAKICAg
ICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIHN0YXRpYyAke2NsYXNzTmFtZX1Qcm90b3R5cGUq
IGNyZWF0ZShKU0M6OkpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNDOjpKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlKVxuIik7CiAgICAgcHVz
aChAaGVhZGVyQ29udGVudCwgIiAgICB7XG4iKTsKLSAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAi
ICAgICAgICByZXR1cm4gbmV3IChKU0M6OmFsbG9jYXRlQ2VsbDwke2NsYXNzTmFtZX1Qcm90b3R5
cGU+KGdsb2JhbERhdGEuaGVhcCkpICR7Y2xhc3NOYW1lfVByb3RvdHlwZShnbG9iYWxEYXRhLCBn
bG9iYWxPYmplY3QsIHN0cnVjdHVyZSk7XG4iKTsKKyAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAi
ICAgICAgICByZXR1cm4gSlNDOjp2YWxpZGF0ZUFsbG9jPCR7Y2xhc3NOYW1lfVByb3RvdHlwZT4o
Z2xvYmFsRGF0YSwgbmV3IChKU0M6OmFsbG9jYXRlQ2VsbDwke2NsYXNzTmFtZX1Qcm90b3R5cGU+
KGdsb2JhbERhdGEuaGVhcCkpICR7Y2xhc3NOYW1lfVByb3RvdHlwZShnbG9iYWxEYXRhLCBnbG9i
YWxPYmplY3QsIHN0cnVjdHVyZSkpO1xuIik7CiAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAg
ICB9XG5cbiIpOwogCiAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICBzdGF0aWMgY29uc3Qg
SlNDOjpDbGFzc0luZm8gc19pbmZvO1xuIik7CkBAIC0xNDk2LDEwICsxNDk5LDYgQEAgc3ViIEdl
bmVyYXRlSW1wbGVtZW50YXRpb24KICAgICB9CiAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ7XG4i
KTsKICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBBU1NFUlQoaW5oZXJpdHMoJnNfaW5mbykp
O1xuIik7Ci0gICAgaWYgKCRudW1DYWNoZWRBdHRyaWJ1dGVzID4gMCkgewotICAgICAgICBwdXNo
KEBpbXBsQ29udGVudCwgIiAgICBmb3IgKHVuc2lnbmVkIGkgPSBCYXNlOjpBbm9ueW1vdXNTbG90
Q291bnQ7IGkgPCBBbm9ueW1vdXNTbG90Q291bnQ7IGkrKylcbiIpOwotICAgICAgICBwdXNoKEBp
bXBsQ29udGVudCwgIiAgICAgICAgcHV0QW5vbnltb3VzVmFsdWUoZ2xvYmFsT2JqZWN0LT5nbG9i
YWxEYXRhKCksIGksIEpTVmFsdWUoKSk7XG4iKTsKLSAgICB9CiAgICAgcHVzaChAaW1wbENvbnRl
bnQsICJ9XG5cbiIpOwogCiAgICAgaWYgKCRuZWVkc01hcmtDaGlsZHJlbiAmJiAhJGRhdGFOb2Rl
LT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ3VzdG9tTWFya0Z1bmN0aW9uIn0pIHsKQEAgLTMwNTcs
MTggKzMwNTYsMjggQEAgc3ViIEdlbmVyYXRlQ29uc3RydWN0b3JEZWNsYXJhdGlvbgogICAgIG15
ICRjbGFzc05hbWUgPSBzaGlmdDsKICAgICBteSAkZGF0YU5vZGUgPSBzaGlmdDsKIAorICAgIG15
ICRpbnRlcmZhY2VOYW1lID0gJGRhdGFOb2RlLT5uYW1lOworICAgIG15ICRwcm90b0NsYXNzTmFt
ZSA9ICIke2NsYXNzTmFtZX1Qcm90b3R5cGUiOwogICAgIG15ICRjb25zdHJ1Y3RvckNsYXNzTmFt
ZSA9ICIke2NsYXNzTmFtZX1Db25zdHJ1Y3RvciI7CiAgICAgbXkgJGNhbkNvbnN0cnVjdCA9ICRk
YXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkNhbkJlQ29uc3RydWN0ZWQifTsKICAgICBt
eSAkY2FsbFdpdGggPSAkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDYWxsV2l0aCJ9
OworICAgIG15ICRudW1iZXJPZmNvbnN0cnVjdFBhcmFtZXRlcnMgPSAkZGF0YU5vZGUtPmV4dGVu
ZGVkQXR0cmlidXRlcy0+eyJDb25zdHJ1Y3RvclBhcmFtZXRlcnMifTsKIAogICAgIHB1c2goQCRv
dXRwdXRBcnJheSwgImNsYXNzICR7Y29uc3RydWN0b3JDbGFzc05hbWV9IDogcHVibGljIERPTUNv
bnN0cnVjdG9yT2JqZWN0IHtcbiIpOwogICAgIHB1c2goQCRvdXRwdXRBcnJheSwgInByaXZhdGU6
XG4iKTsKLSAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgJHtjb25zdHJ1Y3RvckNsYXNzTmFt
ZX0oSlNDOjpFeGVjU3RhdGUqLCBKU0M6OlN0cnVjdHVyZSosIEpTRE9NR2xvYmFsT2JqZWN0Kik7
XG5cbiIpOworICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICAke2NvbnN0cnVjdG9yQ2xhc3NO
YW1lfShKU0M6OlN0cnVjdHVyZSosIEpTRE9NR2xvYmFsT2JqZWN0Kik7XG5cbiIpOwogICAgIAog
ICAgIHB1c2goQCRvdXRwdXRBcnJheSwgInB1YmxpYzpcbiIpOwogICAgIHB1c2goQCRvdXRwdXRB
cnJheSwgIiAgICBzdGF0aWMgJGNvbnN0cnVjdG9yQ2xhc3NOYW1lKiBjcmVhdGUoSlNDOjpFeGVj
U3RhdGUqIGV4ZWMsIEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTRE9NR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QpXG4iKTsKICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAge1xuIik7
Ci0gICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgICAgICByZXR1cm4gbmV3IChKU0M6OmFsbG9j
YXRlQ2VsbDwkY29uc3RydWN0b3JDbGFzc05hbWU+KCpleGVjLT5oZWFwKCkpKSAkY29uc3RydWN0
b3JDbGFzc05hbWUoZXhlYywgc3RydWN0dXJlLCBnbG9iYWxPYmplY3QpO1xuIik7CisgICAgcHVz
aChAJG91dHB1dEFycmF5LCAiICAgICAgICAkY29uc3RydWN0b3JDbGFzc05hbWUqIHB0ciA9IEpT
Qzo6dmFsaWRhdGVBbGxvYzwkY29uc3RydWN0b3JDbGFzc05hbWU+KGV4ZWMtPmdsb2JhbERhdGEo
KSwgbmV3IChKU0M6OmFsbG9jYXRlQ2VsbDwkY29uc3RydWN0b3JDbGFzc05hbWU+KCpleGVjLT5o
ZWFwKCkpKSAkY29uc3RydWN0b3JDbGFzc05hbWUoc3RydWN0dXJlLCBnbG9iYWxPYmplY3QpKTtc
biIpOworICAgIGlmICgkaW50ZXJmYWNlTmFtZSBlcSAiRE9NV2luZG93IikgeworICAgICAgICBw
dXNoKEAkb3V0cHV0QXJyYXksICIgICAgICAgIHB0ci0+cHV0RGlyZWN0KGV4ZWMtPmdsb2JhbERh
dGEoKSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLnByb3RvdHlwZSwgZ2xvYmFsT2JqZWN0LT5wcm90
b3R5cGUoKSwgSlNDOjpEb250RGVsZXRlIHwgSlNDOjpSZWFkT25seSk7XG4iKTsKKyAgICB9IGVs
c2UgeworICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgICAgIHB0ci0+cHV0RGlyZWN0
KGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLnByb3RvdHlwZSwgJHtw
cm90b0NsYXNzTmFtZX06OnNlbGYoZXhlYywgZ2xvYmFsT2JqZWN0KSwgSlNDOjpEb250RGVsZXRl
IHwgSlNDOjpSZWFkT25seSk7XG4iKTsKKyAgICB9CisgICAgcHVzaChAJG91dHB1dEFycmF5LCAi
ICAgICAgICBwdHItPnB1dERpcmVjdChleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPnByb3BlcnR5
TmFtZXMoKS5sZW5ndGgsIEpTQzo6anNOdW1iZXIoJHtudW1iZXJPZmNvbnN0cnVjdFBhcmFtZXRl
cnN9KSwgSlNDOjpSZWFkT25seSB8IEpTQzo6RG9udERlbGV0ZSB8IEpTQzo6RG9udEVudW0pO1xu
IikgaWYgJG51bWJlck9mY29uc3RydWN0UGFyYW1ldGVyczsKKyAgICBwdXNoKEAkb3V0cHV0QXJy
YXksICIgICAgICAgIHJldHVybiBwdHI7XG4iKTsKICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIg
ICAgfVxuXG4iKTsKIAogICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICB2aXJ0dWFsIGJvb2wg
Z2V0T3duUHJvcGVydHlTbG90KEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgSlNDOjpJZGVudGlmaWVy
JiwgSlNDOjpQcm9wZXJ0eVNsb3QmKTtcbiIpOwpAQCAtMzEwOCwxNiArMzExNywxMCBAQCBzdWIg
R2VuZXJhdGVDb25zdHJ1Y3RvckRlZmluaXRpb24KIAogICAgIHB1c2goQCRvdXRwdXRBcnJheSwg
ImNvbnN0IENsYXNzSW5mbyAke2NvbnN0cnVjdG9yQ2xhc3NOYW1lfTo6c19pbmZvID0geyBcIiR7
dmlzaWJsZUNsYXNzTmFtZX1Db25zdHJ1Y3RvclwiLCAmRE9NQ29uc3RydWN0b3JPYmplY3Q6OnNf
aW5mbywgJiR7Y29uc3RydWN0b3JDbGFzc05hbWV9VGFibGUsIDAgfTtcblxuIik7CiAKLSAgICBw
dXNoKEAkb3V0cHV0QXJyYXksICIke2NvbnN0cnVjdG9yQ2xhc3NOYW1lfTo6JHtjb25zdHJ1Y3Rv
ckNsYXNzTmFtZX0oRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01H
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdClcbiIpOworICAgIHB1c2goQCRvdXRwdXRBcnJheSwg
IiR7Y29uc3RydWN0b3JDbGFzc05hbWV9Ojoke2NvbnN0cnVjdG9yQ2xhc3NOYW1lfShTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdClcbiIpOwogICAg
IHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICA6IERPTUNvbnN0cnVjdG9yT2JqZWN0KHN0cnVjdHVy
ZSwgZ2xvYmFsT2JqZWN0KVxuIik7CiAgICAgcHVzaChAJG91dHB1dEFycmF5LCAie1xuIik7CiAg
ICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIEFTU0VSVChpbmhlcml0cygmc19pbmZvKSk7XG4i
KTsKLSAgICBpZiAoJGludGVyZmFjZU5hbWUgZXEgIkRPTVdpbmRvdyIpIHsKLSAgICAgICAgcHVz
aChAJG91dHB1dEFycmF5LCAiICAgIHB1dERpcmVjdChleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMt
PnByb3BlcnR5TmFtZXMoKS5wcm90b3R5cGUsIGdsb2JhbE9iamVjdC0+cHJvdG90eXBlKCksIERv
bnREZWxldGUgfCBSZWFkT25seSk7XG4iKTsKLSAgICB9IGVsc2UgewotICAgICAgICBwdXNoKEAk
b3V0cHV0QXJyYXksICIgICAgcHV0RGlyZWN0KGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+cHJv
cGVydHlOYW1lcygpLnByb3RvdHlwZSwgJHtwcm90b0NsYXNzTmFtZX06OnNlbGYoZXhlYywgZ2xv
YmFsT2JqZWN0KSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KTtcbiIpOwotICAgIH0KLSAgICBwdXNo
KEAkb3V0cHV0QXJyYXksICIgICAgcHV0RGlyZWN0KGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+
cHJvcGVydHlOYW1lcygpLmxlbmd0aCwganNOdW1iZXIoJHtudW1iZXJPZmNvbnN0cnVjdFBhcmFt
ZXRlcnN9KSwgUmVhZE9ubHkgfCBEb250RGVsZXRlIHwgRG9udEVudW0pO1xuIikgaWYgJG51bWJl
ck9mY29uc3RydWN0UGFyYW1ldGVyczsKICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICJ9XG5cbiIp
OwogCiAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiYm9vbCAke2NvbnN0cnVjdG9yQ2xhc3NOYW1l
fTo6Z2V0T3duUHJvcGVydHlTbG90KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYg
cHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpXG4iKTsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2UuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRl
cmZhY2UuY3BwCShyZXZpc2lvbiA5MjI4MykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NCwx
MiArNjQsMTQgQEAgc3RhdGljIGNvbnN0IEhhc2hUYWJsZVZhbHVlIEpTVGVzdEludGVyZgogc3Rh
dGljIEpTQ19DT05TVF9IQVNIVEFCTEUgSGFzaFRhYmxlIEpTVGVzdEludGVyZmFjZUNvbnN0cnVj
dG9yVGFibGUgPSB7IDEsIDAsIEpTVGVzdEludGVyZmFjZUNvbnN0cnVjdG9yVGFibGVWYWx1ZXMs
IDAgfTsKIGNsYXNzIEpTVGVzdEludGVyZmFjZUNvbnN0cnVjdG9yIDogcHVibGljIERPTUNvbnN0
cnVjdG9yT2JqZWN0IHsKIHByaXZhdGU6Ci0gICAgSlNUZXN0SW50ZXJmYWNlQ29uc3RydWN0b3Io
SlNDOjpFeGVjU3RhdGUqLCBKU0M6OlN0cnVjdHVyZSosIEpTRE9NR2xvYmFsT2JqZWN0Kik7Cisg
ICAgSlNUZXN0SW50ZXJmYWNlQ29uc3RydWN0b3IoSlNDOjpTdHJ1Y3R1cmUqLCBKU0RPTUdsb2Jh
bE9iamVjdCopOwogCiBwdWJsaWM6CiAgICAgc3RhdGljIEpTVGVzdEludGVyZmFjZUNvbnN0cnVj
dG9yKiBjcmVhdGUoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1
cmUsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiAgICAgewotICAgICAgICByZXR1
cm4gbmV3IChKU0M6OmFsbG9jYXRlQ2VsbDxKU1Rlc3RJbnRlcmZhY2VDb25zdHJ1Y3Rvcj4oKmV4
ZWMtPmhlYXAoKSkpIEpTVGVzdEludGVyZmFjZUNvbnN0cnVjdG9yKGV4ZWMsIHN0cnVjdHVyZSwg
Z2xvYmFsT2JqZWN0KTsKKyAgICAgICAgSlNUZXN0SW50ZXJmYWNlQ29uc3RydWN0b3IqIHB0ciA9
IEpTQzo6dmFsaWRhdGVBbGxvYzxKU1Rlc3RJbnRlcmZhY2VDb25zdHJ1Y3Rvcj4oZXhlYy0+Z2xv
YmFsRGF0YSgpLCBuZXcgKEpTQzo6YWxsb2NhdGVDZWxsPEpTVGVzdEludGVyZmFjZUNvbnN0cnVj
dG9yPigqZXhlYy0+aGVhcCgpKSkgSlNUZXN0SW50ZXJmYWNlQ29uc3RydWN0b3Ioc3RydWN0dXJl
LCBnbG9iYWxPYmplY3QpKTsKKyAgICAgICAgcHRyLT5wdXREaXJlY3QoZXhlYy0+Z2xvYmFsRGF0
YSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkucHJvdG90eXBlLCBKU1Rlc3RJbnRlcmZhY2VQcm90
b3R5cGU6OnNlbGYoZXhlYywgZ2xvYmFsT2JqZWN0KSwgSlNDOjpEb250RGVsZXRlIHwgSlNDOjpS
ZWFkT25seSk7CisgICAgICAgIHJldHVybiBwdHI7CiAgICAgfQogCiAgICAgdmlydHVhbCBib29s
IGdldE93blByb3BlcnR5U2xvdChKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IEpTQzo6SWRlbnRpZmll
ciYsIEpTQzo6UHJvcGVydHlTbG90Jik7CkBAIC04NywxMSArODksMTAgQEAgcHJvdGVjdGVkOgog
CiBjb25zdCBDbGFzc0luZm8gSlNUZXN0SW50ZXJmYWNlQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsg
IlRlc3RJbnRlcmZhY2VDb25zdHJ1Y3RvciIsICZET01Db25zdHJ1Y3Rvck9iamVjdDo6c19pbmZv
LCAmSlNUZXN0SW50ZXJmYWNlQ29uc3RydWN0b3JUYWJsZSwgMCB9OwogCi1KU1Rlc3RJbnRlcmZh
Y2VDb25zdHJ1Y3Rvcjo6SlNUZXN0SW50ZXJmYWNlQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBleGVj
LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkK
K0pTVGVzdEludGVyZmFjZUNvbnN0cnVjdG9yOjpKU1Rlc3RJbnRlcmZhY2VDb25zdHJ1Y3RvcihT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKICAg
ICA6IERPTUNvbnN0cnVjdG9yT2JqZWN0KHN0cnVjdHVyZSwgZ2xvYmFsT2JqZWN0KQogewogICAg
IEFTU0VSVChpbmhlcml0cygmc19pbmZvKSk7Ci0gICAgcHV0RGlyZWN0KGV4ZWMtPmdsb2JhbERh
dGEoKSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLnByb3RvdHlwZSwgSlNUZXN0SW50ZXJmYWNlUHJv
dG90eXBlOjpzZWxmKGV4ZWMsIGdsb2JhbE9iamVjdCksIERvbnREZWxldGUgfCBSZWFkT25seSk7
CiB9CiAKIGJvb2wgSlNUZXN0SW50ZXJmYWNlQ29uc3RydWN0b3I6OmdldE93blByb3BlcnR5U2xv
dChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVy
dHlTbG90JiBzbG90KQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdEludGVyZmFjZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2UuaAkocmV2aXNpb24gOTIyODMpCisr
KyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW50ZXJmYWNl
LmgJKHdvcmtpbmcgY29weSkKQEAgLTM0LDExICszNCw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IGNsYXNzIEpTVGVzdEludGVyZmFjZSA6IHB1YmxpYyBKU0RPTVdyYXBwZXIgewogICAgIHR5cGVk
ZWYgSlNET01XcmFwcGVyIEJhc2U7CiBwdWJsaWM6Ci0gICAgc3RhdGljIEpTVGVzdEludGVyZmFj
ZSogY3JlYXRlKEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTRE9NR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIFBhc3NSZWZQdHI8VGVzdEludGVyZmFjZT4gaW1wbCkKLSAgICB7Ci0gICAg
ICAgIHJldHVybiBuZXcgKEpTQzo6YWxsb2NhdGVDZWxsPEpTVGVzdEludGVyZmFjZT4oZ2xvYmFs
T2JqZWN0LT5nbG9iYWxEYXRhKCkuaGVhcCkpIEpTVGVzdEludGVyZmFjZShzdHJ1Y3R1cmUsIGds
b2JhbE9iamVjdCwgaW1wbCk7Ci0gICAgfQotCiAgICAgc3RhdGljIEpTQzo6SlNPYmplY3QqIGNy
ZWF0ZVByb3RvdHlwZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKICAg
ICB2aXJ0dWFsIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTQzo6RXhlY1N0YXRlKiwgY29uc3Qg
SlNDOjpJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTQzo6UHJvcGVydHlTbG90Jik7CiAgICAg
dmlydHVhbCBib29sIGdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU0M6OkV4ZWNTdGF0ZSosIGNv
bnN0IEpTQzo6SWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU0M6OlByb3BlcnR5RGVzY3JpcHRv
ciYpOwpAQCAtNTAsNiArNDUsMTIgQEAgcHVibGljOgogICAgIH0KIAogICAgIHN0YXRpYyBKU0M6
OkpTVmFsdWUgZ2V0Q29uc3RydWN0b3IoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTR2xvYmFsT2Jq
ZWN0Kik7CisgICAgc3RhdGljIEpTVGVzdEludGVyZmFjZSogY3JlYXRlKEpTQzo6U3RydWN0dXJl
KiBzdHJ1Y3R1cmUsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFBhc3NSZWZQdHI8
VGVzdEludGVyZmFjZT4gaW1wbCkKKyAgICB7CisgICAgICAgIEpTVGVzdEludGVyZmFjZSogcHRy
ID0gSlNDOjp2YWxpZGF0ZUFsbG9jPEpTVGVzdEludGVyZmFjZT4oZ2xvYmFsT2JqZWN0LT5nbG9i
YWxEYXRhKCksIG5ldyAoSlNDOjphbGxvY2F0ZUNlbGw8SlNUZXN0SW50ZXJmYWNlPihnbG9iYWxP
YmplY3QtPmdsb2JhbERhdGEoKS5oZWFwKSkgSlNUZXN0SW50ZXJmYWNlKHN0cnVjdHVyZSwgZ2xv
YmFsT2JqZWN0LCBpbXBsKSk7CisgICAgICAgIHJldHVybiBwdHI7CisgICAgfQorCiAgICAgVGVz
dEludGVyZmFjZSogaW1wbCgpIGNvbnN0IHsgcmV0dXJuIG1faW1wbC5nZXQoKTsgfQogCiBwcml2
YXRlOgpAQCAtNjgsNyArNjksNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SlNPYmplY3Qq
IHNlbGYoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTR2xvYmFsT2JqZWN0Kik7CiAgICAgc3RhdGlj
IEpTVGVzdEludGVyZmFjZVByb3RvdHlwZSogY3JlYXRlKEpTQzo6SlNHbG9iYWxEYXRhJiBnbG9i
YWxEYXRhLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6U3RydWN0dXJl
KiBzdHJ1Y3R1cmUpCiAgICAgewotICAgICAgICByZXR1cm4gbmV3IChKU0M6OmFsbG9jYXRlQ2Vs
bDxKU1Rlc3RJbnRlcmZhY2VQcm90b3R5cGU+KGdsb2JhbERhdGEuaGVhcCkpIEpTVGVzdEludGVy
ZmFjZVByb3RvdHlwZShnbG9iYWxEYXRhLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSk7CisgICAg
ICAgIHJldHVybiBKU0M6OnZhbGlkYXRlQWxsb2M8SlNUZXN0SW50ZXJmYWNlUHJvdG90eXBlPihn
bG9iYWxEYXRhLCBuZXcgKEpTQzo6YWxsb2NhdGVDZWxsPEpTVGVzdEludGVyZmFjZVByb3RvdHlw
ZT4oZ2xvYmFsRGF0YS5oZWFwKSkgSlNUZXN0SW50ZXJmYWNlUHJvdG90eXBlKGdsb2JhbERhdGEs
IGdsb2JhbE9iamVjdCwgc3RydWN0dXJlKSk7CiAgICAgfQogCiAgICAgc3RhdGljIGNvbnN0IEpT
Qzo6Q2xhc3NJbmZvIHNfaW5mbzsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TWVkaWFRdWVy
eUxpc3RMaXN0ZW5lci5jcHAJKHJldmlzaW9uIDkyMjgzKQorKysgU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC02NSwxMiArNjUsMTQgQEAgc3RhdGljIGNvbnN0IEhhc2hUYWJsZVZh
bHVlIEpTVGVzdE1lZGlhUQogc3RhdGljIEpTQ19DT05TVF9IQVNIVEFCTEUgSGFzaFRhYmxlIEpT
VGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXJDb25zdHJ1Y3RvclRhYmxlID0geyAxLCAwLCBKU1Rl
c3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyQ29uc3RydWN0b3JUYWJsZVZhbHVlcywgMCB9OwogY2xh
c3MgSlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lckNvbnN0cnVjdG9yIDogcHVibGljIERPTUNv
bnN0cnVjdG9yT2JqZWN0IHsKIHByaXZhdGU6Ci0gICAgSlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0
ZW5lckNvbnN0cnVjdG9yKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpTdHJ1Y3R1cmUqLCBKU0RPTUds
b2JhbE9iamVjdCopOworICAgIEpTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXJDb25zdHJ1Y3Rv
cihKU0M6OlN0cnVjdHVyZSosIEpTRE9NR2xvYmFsT2JqZWN0Kik7CiAKIHB1YmxpYzoKICAgICBz
dGF0aWMgSlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lckNvbnN0cnVjdG9yKiBjcmVhdGUoSlND
OjpFeGVjU3RhdGUqIGV4ZWMsIEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTRE9NR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QpCiAgICAgewotICAgICAgICByZXR1cm4gbmV3IChKU0M6OmFs
bG9jYXRlQ2VsbDxKU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyQ29uc3RydWN0b3I+KCpleGVj
LT5oZWFwKCkpKSBKU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyQ29uc3RydWN0b3IoZXhlYywg
c3RydWN0dXJlLCBnbG9iYWxPYmplY3QpOworICAgICAgICBKU1Rlc3RNZWRpYVF1ZXJ5TGlzdExp
c3RlbmVyQ29uc3RydWN0b3IqIHB0ciA9IEpTQzo6dmFsaWRhdGVBbGxvYzxKU1Rlc3RNZWRpYVF1
ZXJ5TGlzdExpc3RlbmVyQ29uc3RydWN0b3I+KGV4ZWMtPmdsb2JhbERhdGEoKSwgbmV3IChKU0M6
OmFsbG9jYXRlQ2VsbDxKU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyQ29uc3RydWN0b3I+KCpl
eGVjLT5oZWFwKCkpKSBKU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyQ29uc3RydWN0b3Ioc3Ry
dWN0dXJlLCBnbG9iYWxPYmplY3QpKTsKKyAgICAgICAgcHRyLT5wdXREaXJlY3QoZXhlYy0+Z2xv
YmFsRGF0YSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkucHJvdG90eXBlLCBKU1Rlc3RNZWRpYVF1
ZXJ5TGlzdExpc3RlbmVyUHJvdG90eXBlOjpzZWxmKGV4ZWMsIGdsb2JhbE9iamVjdCksIEpTQzo6
RG9udERlbGV0ZSB8IEpTQzo6UmVhZE9ubHkpOworICAgICAgICByZXR1cm4gcHRyOwogICAgIH0K
IAogICAgIHZpcnR1YWwgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDOjpFeGVjU3RhdGUqLCBj
b25zdCBKU0M6OklkZW50aWZpZXImLCBKU0M6OlByb3BlcnR5U2xvdCYpOwpAQCAtODYsMTEgKzg4
LDEwIEBAIHByb3RlY3RlZDoKIAogY29uc3QgQ2xhc3NJbmZvIEpTVGVzdE1lZGlhUXVlcnlMaXN0
TGlzdGVuZXJDb25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVu
ZXJDb25zdHJ1Y3RvciIsICZET01Db25zdHJ1Y3Rvck9iamVjdDo6c19pbmZvLCAmSlNUZXN0TWVk
aWFRdWVyeUxpc3RMaXN0ZW5lckNvbnN0cnVjdG9yVGFibGUsIDAgfTsKIAotSlNUZXN0TWVkaWFR
dWVyeUxpc3RMaXN0ZW5lckNvbnN0cnVjdG9yOjpKU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVy
Q29uc3RydWN0b3IoRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01H
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKK0pTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXJD
b25zdHJ1Y3Rvcjo6SlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lckNvbnN0cnVjdG9yKFN0cnVj
dHVyZSogc3RydWN0dXJlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogICAgIDog
RE9NQ29uc3RydWN0b3JPYmplY3Qoc3RydWN0dXJlLCBnbG9iYWxPYmplY3QpCiB7CiAgICAgQVNT
RVJUKGluaGVyaXRzKCZzX2luZm8pKTsKLSAgICBwdXREaXJlY3QoZXhlYy0+Z2xvYmFsRGF0YSgp
LCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkucHJvdG90eXBlLCBKU1Rlc3RNZWRpYVF1ZXJ5TGlzdExp
c3RlbmVyUHJvdG90eXBlOjpzZWxmKGV4ZWMsIGdsb2JhbE9iamVjdCksIERvbnREZWxldGUgfCBS
ZWFkT25seSk7CiB9CiAKIGJvb2wgSlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lckNvbnN0cnVj
dG9yOjpnZXRPd25Qcm9wZXJ0eVNsb3QoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVy
JiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIuaAkocmV2aXNpb24gOTIyODMpCisrKyBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0
ZW5lci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMiwxMSArMzIsNiBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiBjbGFzcyBKU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyIDogcHVibGljIEpTRE9NV3Jh
cHBlciB7CiAgICAgdHlwZWRlZiBKU0RPTVdyYXBwZXIgQmFzZTsKIHB1YmxpYzoKLSAgICBzdGF0
aWMgSlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lciogY3JlYXRlKEpTQzo6U3RydWN0dXJlKiBz
dHJ1Y3R1cmUsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFBhc3NSZWZQdHI8VGVz
dE1lZGlhUXVlcnlMaXN0TGlzdGVuZXI+IGltcGwpCi0gICAgewotICAgICAgICByZXR1cm4gbmV3
IChKU0M6OmFsbG9jYXRlQ2VsbDxKU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyPihnbG9iYWxP
YmplY3QtPmdsb2JhbERhdGEoKS5oZWFwKSkgSlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lcihz
dHJ1Y3R1cmUsIGdsb2JhbE9iamVjdCwgaW1wbCk7Ci0gICAgfQotCiAgICAgc3RhdGljIEpTQzo6
SlNPYmplY3QqIGNyZWF0ZVByb3RvdHlwZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNHbG9iYWxP
YmplY3QqKTsKICAgICB2aXJ0dWFsIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTQzo6RXhlY1N0
YXRlKiwgY29uc3QgSlNDOjpJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTQzo6UHJvcGVydHlT
bG90Jik7CiAgICAgdmlydHVhbCBib29sIGdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU0M6OkV4
ZWNTdGF0ZSosIGNvbnN0IEpTQzo6SWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU0M6OlByb3Bl
cnR5RGVzY3JpcHRvciYpOwpAQCAtNDgsNiArNDMsMTIgQEAgcHVibGljOgogICAgIH0KIAogICAg
IHN0YXRpYyBKU0M6OkpTVmFsdWUgZ2V0Q29uc3RydWN0b3IoSlNDOjpFeGVjU3RhdGUqLCBKU0M6
OkpTR2xvYmFsT2JqZWN0Kik7CisgICAgc3RhdGljIEpTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVu
ZXIqIGNyZWF0ZShKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0RPTUdsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBQYXNzUmVmUHRyPFRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyPiBpbXBs
KQorICAgIHsKKyAgICAgICAgSlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lciogcHRyID0gSlND
Ojp2YWxpZGF0ZUFsbG9jPEpTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXI+KGdsb2JhbE9iamVj
dC0+Z2xvYmFsRGF0YSgpLCBuZXcgKEpTQzo6YWxsb2NhdGVDZWxsPEpTVGVzdE1lZGlhUXVlcnlM
aXN0TGlzdGVuZXI+KGdsb2JhbE9iamVjdC0+Z2xvYmFsRGF0YSgpLmhlYXApKSBKU1Rlc3RNZWRp
YVF1ZXJ5TGlzdExpc3RlbmVyKHN0cnVjdHVyZSwgZ2xvYmFsT2JqZWN0LCBpbXBsKSk7CisgICAg
ICAgIHJldHVybiBwdHI7CisgICAgfQorCiAgICAgVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIq
IGltcGwoKSBjb25zdCB7IHJldHVybiBtX2ltcGwuZ2V0KCk7IH0KIAogcHJpdmF0ZToKQEAgLTY2
LDcgKzY3LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6OkpTT2JqZWN0KiBzZWxmKEpTQzo6
RXhlY1N0YXRlKiwgSlNDOjpKU0dsb2JhbE9iamVjdCopOwogICAgIHN0YXRpYyBKU1Rlc3RNZWRp
YVF1ZXJ5TGlzdExpc3RlbmVyUHJvdG90eXBlKiBjcmVhdGUoSlNDOjpKU0dsb2JhbERhdGEmIGds
b2JhbERhdGEsIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBuZXcgKEpTQzo6YWxsb2NhdGVD
ZWxsPEpTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXJQcm90b3R5cGU+KGdsb2JhbERhdGEuaGVh
cCkpIEpTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXJQcm90b3R5cGUoZ2xvYmFsRGF0YSwgZ2xv
YmFsT2JqZWN0LCBzdHJ1Y3R1cmUpOworICAgICAgICByZXR1cm4gSlNDOjp2YWxpZGF0ZUFsbG9j
PEpTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXJQcm90b3R5cGU+KGdsb2JhbERhdGEsIG5ldyAo
SlNDOjphbGxvY2F0ZUNlbGw8SlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lclByb3RvdHlwZT4o
Z2xvYmFsRGF0YS5oZWFwKSkgSlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lclByb3RvdHlwZShn
bG9iYWxEYXRhLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSkpOwogICAgIH0KIAogICAgIHN0YXRp
YyBjb25zdCBKU0M6OkNsYXNzSW5mbyBzX2luZm87CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcAkocmV2aXNpb24g
OTIyODMpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
T2JqLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQ0LDEyICsxNDQsMTQgQEAgQ09NUElMRV9BU1NF
UlQoMHgxYWJjID09IFRlc3RPYmo6OkNPTlNUXwogCiBjbGFzcyBKU1Rlc3RPYmpDb25zdHJ1Y3Rv
ciA6IHB1YmxpYyBET01Db25zdHJ1Y3Rvck9iamVjdCB7CiBwcml2YXRlOgotICAgIEpTVGVzdE9i
akNvbnN0cnVjdG9yKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpTdHJ1Y3R1cmUqLCBKU0RPTUdsb2Jh
bE9iamVjdCopOworICAgIEpTVGVzdE9iakNvbnN0cnVjdG9yKEpTQzo6U3RydWN0dXJlKiwgSlNE
T01HbG9iYWxPYmplY3QqKTsKIAogcHVibGljOgogICAgIHN0YXRpYyBKU1Rlc3RPYmpDb25zdHJ1
Y3RvciogY3JlYXRlKEpTQzo6RXhlY1N0YXRlKiBleGVjLCBKU0M6OlN0cnVjdHVyZSogc3RydWN0
dXJlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogICAgIHsKLSAgICAgICAgcmV0
dXJuIG5ldyAoSlNDOjphbGxvY2F0ZUNlbGw8SlNUZXN0T2JqQ29uc3RydWN0b3I+KCpleGVjLT5o
ZWFwKCkpKSBKU1Rlc3RPYmpDb25zdHJ1Y3RvcihleGVjLCBzdHJ1Y3R1cmUsIGdsb2JhbE9iamVj
dCk7CisgICAgICAgIEpTVGVzdE9iakNvbnN0cnVjdG9yKiBwdHIgPSBKU0M6OnZhbGlkYXRlQWxs
b2M8SlNUZXN0T2JqQ29uc3RydWN0b3I+KGV4ZWMtPmdsb2JhbERhdGEoKSwgbmV3IChKU0M6OmFs
bG9jYXRlQ2VsbDxKU1Rlc3RPYmpDb25zdHJ1Y3Rvcj4oKmV4ZWMtPmhlYXAoKSkpIEpTVGVzdE9i
akNvbnN0cnVjdG9yKHN0cnVjdHVyZSwgZ2xvYmFsT2JqZWN0KSk7CisgICAgICAgIHB0ci0+cHV0
RGlyZWN0KGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLnByb3RvdHlw
ZSwgSlNUZXN0T2JqUHJvdG90eXBlOjpzZWxmKGV4ZWMsIGdsb2JhbE9iamVjdCksIEpTQzo6RG9u
dERlbGV0ZSB8IEpTQzo6UmVhZE9ubHkpOworICAgICAgICByZXR1cm4gcHRyOwogICAgIH0KIAog
ICAgIHZpcnR1YWwgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDOjpFeGVjU3RhdGUqLCBjb25z
dCBKU0M6OklkZW50aWZpZXImLCBKU0M6OlByb3BlcnR5U2xvdCYpOwpAQCAtMTY1LDExICsxNjcs
MTAgQEAgcHJvdGVjdGVkOgogCiBjb25zdCBDbGFzc0luZm8gSlNUZXN0T2JqQ29uc3RydWN0b3I6
OnNfaW5mbyA9IHsgIlRlc3RPYmpDb25zdHJ1Y3RvciIsICZET01Db25zdHJ1Y3Rvck9iamVjdDo6
c19pbmZvLCAmSlNUZXN0T2JqQ29uc3RydWN0b3JUYWJsZSwgMCB9OwogCi1KU1Rlc3RPYmpDb25z
dHJ1Y3Rvcjo6SlNUZXN0T2JqQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKK0pTVGVzdE9iakNv
bnN0cnVjdG9yOjpKU1Rlc3RPYmpDb25zdHJ1Y3RvcihTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNE
T01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKICAgICA6IERPTUNvbnN0cnVjdG9yT2JqZWN0
KHN0cnVjdHVyZSwgZ2xvYmFsT2JqZWN0KQogewogICAgIEFTU0VSVChpbmhlcml0cygmc19pbmZv
KSk7Ci0gICAgcHV0RGlyZWN0KGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+cHJvcGVydHlOYW1l
cygpLnByb3RvdHlwZSwgSlNUZXN0T2JqUHJvdG90eXBlOjpzZWxmKGV4ZWMsIGdsb2JhbE9iamVj
dCksIERvbnREZWxldGUgfCBSZWFkT25seSk7CiB9CiAKIGJvb2wgSlNUZXN0T2JqQ29uc3RydWN0
b3I6OmdldE93blByb3BlcnR5U2xvdChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXIm
IHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQpJbmRleDogU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouaAkocmV2aXNpb24g
OTIyODMpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
T2JqLmgJKHdvcmtpbmcgY29weSkKQEAgLTMyLDExICszMiw2IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIGNsYXNzIEpTVGVzdE9iaiA6IHB1YmxpYyBKU0RPTVdyYXBwZXIgewogICAgIHR5cGVkZWYg
SlNET01XcmFwcGVyIEJhc2U7CiBwdWJsaWM6Ci0gICAgc3RhdGljIEpTVGVzdE9iaiogY3JlYXRl
KEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIFBhc3NSZWZQdHI8VGVzdE9iaj4gaW1wbCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBuZXcg
KEpTQzo6YWxsb2NhdGVDZWxsPEpTVGVzdE9iaj4oZ2xvYmFsT2JqZWN0LT5nbG9iYWxEYXRhKCku
aGVhcCkpIEpTVGVzdE9iaihzdHJ1Y3R1cmUsIGdsb2JhbE9iamVjdCwgaW1wbCk7Ci0gICAgfQot
CiAgICAgc3RhdGljIEpTQzo6SlNPYmplY3QqIGNyZWF0ZVByb3RvdHlwZShKU0M6OkV4ZWNTdGF0
ZSosIEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKICAgICB2aXJ0dWFsIGJvb2wgZ2V0T3duUHJvcGVy
dHlTbG90KEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgSlNDOjpJZGVudGlmaWVyJiBwcm9wZXJ0eU5h
bWUsIEpTQzo6UHJvcGVydHlTbG90Jik7CiAgICAgdmlydHVhbCBib29sIGdldE93blByb3BlcnR5
RGVzY3JpcHRvcihKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IEpTQzo6SWRlbnRpZmllciYgcHJvcGVy
dHlOYW1lLCBKU0M6OlByb3BlcnR5RGVzY3JpcHRvciYpOwpAQCAtNTMsNiArNDgsMTIgQEAgcHVi
bGljOgogICAgIC8vIEN1c3RvbSBhdHRyaWJ1dGVzCiAgICAgSlNDOjpKU1ZhbHVlIGN1c3RvbUF0
dHIoSlNDOjpFeGVjU3RhdGUqKSBjb25zdDsKICAgICB2b2lkIHNldEN1c3RvbUF0dHIoSlNDOjpF
eGVjU3RhdGUqLCBKU0M6OkpTVmFsdWUpOworICAgIHN0YXRpYyBKU1Rlc3RPYmoqIGNyZWF0ZShK
U0M6OlN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBQYXNzUmVmUHRyPFRlc3RPYmo+IGltcGwpCisgICAgeworICAgICAgICBKU1Rlc3RPYmoqIHB0
ciA9IEpTQzo6dmFsaWRhdGVBbGxvYzxKU1Rlc3RPYmo+KGdsb2JhbE9iamVjdC0+Z2xvYmFsRGF0
YSgpLCBuZXcgKEpTQzo6YWxsb2NhdGVDZWxsPEpTVGVzdE9iaj4oZ2xvYmFsT2JqZWN0LT5nbG9i
YWxEYXRhKCkuaGVhcCkpIEpTVGVzdE9iaihzdHJ1Y3R1cmUsIGdsb2JhbE9iamVjdCwgaW1wbCkp
OworICAgICAgICByZXR1cm4gcHRyOworICAgIH0KKwogCiAgICAgLy8gQ3VzdG9tIGZ1bmN0aW9u
cwogICAgIEpTQzo6SlNWYWx1ZSBjdXN0b21NZXRob2QoSlNDOjpFeGVjU3RhdGUqKTsKQEAgLTc1
LDcgKzc2LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6OkpTT2JqZWN0KiBzZWxmKEpTQzo6
RXhlY1N0YXRlKiwgSlNDOjpKU0dsb2JhbE9iamVjdCopOwogICAgIHN0YXRpYyBKU1Rlc3RPYmpQ
cm90b3R5cGUqIGNyZWF0ZShKU0M6OkpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNDOjpKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlKQogICAg
IHsKLSAgICAgICAgcmV0dXJuIG5ldyAoSlNDOjphbGxvY2F0ZUNlbGw8SlNUZXN0T2JqUHJvdG90
eXBlPihnbG9iYWxEYXRhLmhlYXApKSBKU1Rlc3RPYmpQcm90b3R5cGUoZ2xvYmFsRGF0YSwgZ2xv
YmFsT2JqZWN0LCBzdHJ1Y3R1cmUpOworICAgICAgICByZXR1cm4gSlNDOjp2YWxpZGF0ZUFsbG9j
PEpTVGVzdE9ialByb3RvdHlwZT4oZ2xvYmFsRGF0YSwgbmV3IChKU0M6OmFsbG9jYXRlQ2VsbDxK
U1Rlc3RPYmpQcm90b3R5cGU+KGdsb2JhbERhdGEuaGVhcCkpIEpTVGVzdE9ialByb3RvdHlwZShn
bG9iYWxEYXRhLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSkpOwogICAgIH0KIAogICAgIHN0YXRp
YyBjb25zdCBKU0M6OkNsYXNzSW5mbyBzX2luZm87CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNl
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmNwcAkocmV2aXNpb24gOTIy
ODMpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2Vy
aWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjYsMTIg
KzY2LDE0IEBAIHN0YXRpYyBjb25zdCBIYXNoVGFibGVWYWx1ZSBKU1Rlc3RTZXJpYWwKIHN0YXRp
YyBKU0NfQ09OU1RfSEFTSFRBQkxFIEhhc2hUYWJsZSBKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFs
dWVJbnRlcmZhY2VDb25zdHJ1Y3RvclRhYmxlID0geyAxLCAwLCBKU1Rlc3RTZXJpYWxpemVkU2Ny
aXB0VmFsdWVJbnRlcmZhY2VDb25zdHJ1Y3RvclRhYmxlVmFsdWVzLCAwIH07CiBjbGFzcyBKU1Rl
c3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VDb25zdHJ1Y3RvciA6IHB1YmxpYyBET01D
b25zdHJ1Y3Rvck9iamVjdCB7CiBwcml2YXRlOgotICAgIEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZUludGVyZmFjZUNvbnN0cnVjdG9yKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpTdHJ1Y3R1cmUq
LCBKU0RPTUdsb2JhbE9iamVjdCopOworICAgIEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUlu
dGVyZmFjZUNvbnN0cnVjdG9yKEpTQzo6U3RydWN0dXJlKiwgSlNET01HbG9iYWxPYmplY3QqKTsK
IAogcHVibGljOgogICAgIHN0YXRpYyBKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZh
Y2VDb25zdHJ1Y3RvciogY3JlYXRlKEpTQzo6RXhlY1N0YXRlKiBleGVjLCBKU0M6OlN0cnVjdHVy
ZSogc3RydWN0dXJlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogICAgIHsKLSAg
ICAgICAgcmV0dXJuIG5ldyAoSlNDOjphbGxvY2F0ZUNlbGw8SlNUZXN0U2VyaWFsaXplZFNjcmlw
dFZhbHVlSW50ZXJmYWNlQ29uc3RydWN0b3I+KCpleGVjLT5oZWFwKCkpKSBKU1Rlc3RTZXJpYWxp
emVkU2NyaXB0VmFsdWVJbnRlcmZhY2VDb25zdHJ1Y3RvcihleGVjLCBzdHJ1Y3R1cmUsIGdsb2Jh
bE9iamVjdCk7CisgICAgICAgIEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZUNv
bnN0cnVjdG9yKiBwdHIgPSBKU0M6OnZhbGlkYXRlQWxsb2M8SlNUZXN0U2VyaWFsaXplZFNjcmlw
dFZhbHVlSW50ZXJmYWNlQ29uc3RydWN0b3I+KGV4ZWMtPmdsb2JhbERhdGEoKSwgbmV3IChKU0M6
OmFsbG9jYXRlQ2VsbDxKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VDb25zdHJ1
Y3Rvcj4oKmV4ZWMtPmhlYXAoKSkpIEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFj
ZUNvbnN0cnVjdG9yKHN0cnVjdHVyZSwgZ2xvYmFsT2JqZWN0KSk7CisgICAgICAgIHB0ci0+cHV0
RGlyZWN0KGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLnByb3RvdHlw
ZSwgSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlUHJvdG90eXBlOjpzZWxmKGV4
ZWMsIGdsb2JhbE9iamVjdCksIEpTQzo6RG9udERlbGV0ZSB8IEpTQzo6UmVhZE9ubHkpOworICAg
ICAgICByZXR1cm4gcHRyOwogICAgIH0KIAogICAgIHZpcnR1YWwgYm9vbCBnZXRPd25Qcm9wZXJ0
eVNsb3QoSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBKU0M6OklkZW50aWZpZXImLCBKU0M6OlByb3Bl
cnR5U2xvdCYpOwpAQCAtODcsMTEgKzg5LDEwIEBAIHByb3RlY3RlZDoKIAogY29uc3QgQ2xhc3NJ
bmZvIEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZUNvbnN0cnVjdG9yOjpzX2lu
Zm8gPSB7ICJUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlQ29uc3RydWN0b3IiLCAm
RE9NQ29uc3RydWN0b3JPYmplY3Q6OnNfaW5mbywgJkpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZUludGVyZmFjZUNvbnN0cnVjdG9yVGFibGUsIDAgfTsKIAotSlNUZXN0U2VyaWFsaXplZFNjcmlw
dFZhbHVlSW50ZXJmYWNlQ29uc3RydWN0b3I6OkpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUlu
dGVyZmFjZUNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUs
IEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCitKU1Rlc3RTZXJpYWxpemVkU2NyaXB0
VmFsdWVJbnRlcmZhY2VDb25zdHJ1Y3Rvcjo6SlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50
ZXJmYWNlQ29uc3RydWN0b3IoU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTRE9NR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QpCiAgICAgOiBET01Db25zdHJ1Y3Rvck9iamVjdChzdHJ1Y3R1cmUsIGds
b2JhbE9iamVjdCkKIHsKICAgICBBU1NFUlQoaW5oZXJpdHMoJnNfaW5mbykpOwotICAgIHB1dERp
cmVjdChleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5wcm90b3R5cGUs
IEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZVByb3RvdHlwZTo6c2VsZihleGVj
LCBnbG9iYWxPYmplY3QpLCBEb250RGVsZXRlIHwgUmVhZE9ubHkpOwogfQogCiBib29sIEpTVGVz
dFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZUNvbnN0cnVjdG9yOjpnZXRPd25Qcm9wZXJ0
eVNsb3QoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFBy
b3BlcnR5U2xvdCYgc2xvdCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2VyaWFs
aXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmgJKHJldmlzaW9uIDkyMjgzKQorKysgU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZUludGVyZmFjZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNCwxMSArMzQsNiBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiBjbGFzcyBKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UgOiBw
dWJsaWMgSlNET01XcmFwcGVyIHsKICAgICB0eXBlZGVmIEpTRE9NV3JhcHBlciBCYXNlOwogcHVi
bGljOgotICAgIHN0YXRpYyBKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UqIGNy
ZWF0ZShKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBQYXNzUmVmUHRyPFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2U+IGlt
cGwpCi0gICAgewotICAgICAgICByZXR1cm4gbmV3IChKU0M6OmFsbG9jYXRlQ2VsbDxKU1Rlc3RT
ZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2U+KGdsb2JhbE9iamVjdC0+Z2xvYmFsRGF0YSgp
LmhlYXApKSBKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2Uoc3RydWN0dXJlLCBn
bG9iYWxPYmplY3QsIGltcGwpOwotICAgIH0KLQogICAgIHN0YXRpYyBKU0M6OkpTT2JqZWN0KiBj
cmVhdGVQcm90b3R5cGUoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTR2xvYmFsT2JqZWN0Kik7CiAg
ICAgdmlydHVhbCBib29sIGdldE93blByb3BlcnR5U2xvdChKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0
IEpTQzo6SWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU0M6OlByb3BlcnR5U2xvdCYpOwogICAg
IHZpcnR1YWwgYm9vbCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNDOjpFeGVjU3RhdGUqLCBj
b25zdCBKU0M6OklkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0eURlc2NyaXB0
b3ImKTsKQEAgLTUwLDYgKzQ1LDEyIEBAIHB1YmxpYzoKICAgICB9CiAKICAgICBzdGF0aWMgSlND
OjpKU1ZhbHVlIGdldENvbnN0cnVjdG9yKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU0dsb2JhbE9i
amVjdCopOworICAgIHN0YXRpYyBKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2Uq
IGNyZWF0ZShKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBQYXNzUmVmUHRyPFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2U+
IGltcGwpCisgICAgeworICAgICAgICBKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZh
Y2UqIHB0ciA9IEpTQzo6dmFsaWRhdGVBbGxvYzxKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJ
bnRlcmZhY2U+KGdsb2JhbE9iamVjdC0+Z2xvYmFsRGF0YSgpLCBuZXcgKEpTQzo6YWxsb2NhdGVD
ZWxsPEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZT4oZ2xvYmFsT2JqZWN0LT5n
bG9iYWxEYXRhKCkuaGVhcCkpIEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZShz
dHJ1Y3R1cmUsIGdsb2JhbE9iamVjdCwgaW1wbCkpOworICAgICAgICByZXR1cm4gcHRyOworICAg
IH0KKwogICAgIFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UqIGltcGwoKSBjb25z
dCB7IHJldHVybiBtX2ltcGwuZ2V0KCk7IH0KIAogcHJpdmF0ZToKQEAgLTY4LDcgKzY5LDcgQEAg
cHVibGljOgogICAgIHN0YXRpYyBKU0M6OkpTT2JqZWN0KiBzZWxmKEpTQzo6RXhlY1N0YXRlKiwg
SlNDOjpKU0dsb2JhbE9iamVjdCopOwogICAgIHN0YXRpYyBKU1Rlc3RTZXJpYWxpemVkU2NyaXB0
VmFsdWVJbnRlcmZhY2VQcm90b3R5cGUqIGNyZWF0ZShKU0M6OkpTR2xvYmFsRGF0YSYgZ2xvYmFs
RGF0YSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OlN0cnVjdHVyZSog
c3RydWN0dXJlKQogICAgIHsKLSAgICAgICAgcmV0dXJuIG5ldyAoSlNDOjphbGxvY2F0ZUNlbGw8
SlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlUHJvdG90eXBlPihnbG9iYWxEYXRh
LmhlYXApKSBKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VQcm90b3R5cGUoZ2xv
YmFsRGF0YSwgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUpOworICAgICAgICByZXR1cm4gSlNDOjp2
YWxpZGF0ZUFsbG9jPEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZVByb3RvdHlw
ZT4oZ2xvYmFsRGF0YSwgbmV3IChKU0M6OmFsbG9jYXRlQ2VsbDxKU1Rlc3RTZXJpYWxpemVkU2Ny
aXB0VmFsdWVJbnRlcmZhY2VQcm90b3R5cGU+KGdsb2JhbERhdGEuaGVhcCkpIEpTVGVzdFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZVByb3RvdHlwZShnbG9iYWxEYXRhLCBnbG9iYWxPYmpl
Y3QsIHN0cnVjdHVyZSkpOwogICAgIH0KIAogICAgIHN0YXRpYyBjb25zdCBKU0M6OkNsYXNzSW5m
byBzX2luZm87CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9hcnJheS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfYXJyYXkuY3BwCShy
ZXZpc2lvbiA5MjI4MykKKysrIFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX2FycmF5LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMzcsMTAgKzM3LDEwIEBAIG5hbWVzcGFjZSBKU0MgewogCiBj
b25zdCBDbGFzc0luZm8gUnVudGltZUFycmF5OjpzX2luZm8gPSB7ICJSdW50aW1lQXJyYXkiLCAm
SlNBcnJheTo6c19pbmZvLCAwLCAwIH07CiAKLVJ1bnRpbWVBcnJheTo6UnVudGltZUFycmF5KEV4
ZWNTdGF0ZSogZXhlYywgQmluZGluZ3M6OkFycmF5KiBhcnJheSkKK1J1bnRpbWVBcnJheTo6UnVu
dGltZUFycmF5KEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlKiBkb21TdHJ1Y3R1cmUsIEJpbmRp
bmdzOjpBcnJheSogYXJyYXkpCiAgICAgLy8gRklYTUU6IGRlcHJlY2F0ZWRHZXRET01TdHJ1Y3R1
cmUgdXNlcyB0aGUgcHJvdG90eXBlIG9mZiBvZiB0aGUgd3JvbmcgZ2xvYmFsIG9iamVjdAogICAg
IC8vIFdlIG5lZWQgdG8gcGFzcyBpbiB0aGUgcmlnaHQgZ2xvYmFsIG9iamVjdCBmb3IgImFycmF5
Ii4KLSAgICA6IEpTQXJyYXkoZXhlYy0+Z2xvYmFsRGF0YSgpLCBkZXByZWNhdGVkR2V0RE9NU3Ry
dWN0dXJlPFJ1bnRpbWVBcnJheT4oZXhlYykpCisgICAgOiBKU0FycmF5KGV4ZWMtPmdsb2JhbERh
dGEoKSwgZG9tU3RydWN0dXJlKQogewogICAgIEFTU0VSVChpbmhlcml0cygmc19pbmZvKSk7CiAg
ICAgc2V0U3ViY2xhc3NEYXRhKGFycmF5KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9y
dW50aW1lX2FycmF5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRp
bWVfYXJyYXkuaAkocmV2aXNpb24gOTIyODMpCisrKyBTb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVu
dGltZV9hcnJheS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw2ICsyNyw3IEBACiAjZGVmaW5lIFJV
TlRJTUVfQVJSQVlfSF8KIAogI2luY2x1ZGUgIkJyaWRnZUpTQy5oIgorI2luY2x1ZGUgIkpTRE9N
QmluZGluZy5oIgogI2luY2x1ZGUgPHJ1bnRpbWUvQXJyYXlQcm90b3R5cGUuaD4KIAogbmFtZXNw
YWNlIEpTQyB7CkBAIC0zNSw3ICszNiw4IEBAIGNsYXNzIFJ1bnRpbWVBcnJheSA6IHB1YmxpYyBK
U0FycmF5IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUnVudGltZUFycmF5KiBjcmVhdGUoRXhlY1N0
YXRlKiBleGVjLCBCaW5kaW5nczo6QXJyYXkqIGFycmF5KQogICAgIHsKLSAgICAgICAgcmV0dXJu
IG5ldyAoYWxsb2NhdGVDZWxsPFJ1bnRpbWVBcnJheT4oKmV4ZWMtPmhlYXAoKSkpIFJ1bnRpbWVB
cnJheShleGVjLCBhcnJheSk7CisgICAgICAgIFN0cnVjdHVyZSogZG9tU3RydWN0dXJlID0gV2Vi
Q29yZTo6ZGVwcmVjYXRlZEdldERPTVN0cnVjdHVyZTxSdW50aW1lQXJyYXk+KGV4ZWMpOworICAg
ICAgICByZXR1cm4gdmFsaWRhdGVBbGxvYzxSdW50aW1lQXJyYXk+KGV4ZWMtPmdsb2JhbERhdGEo
KSwgbmV3IChhbGxvY2F0ZUNlbGw8UnVudGltZUFycmF5PigqZXhlYy0+aGVhcCgpKSkgUnVudGlt
ZUFycmF5KGV4ZWMsIGRvbVN0cnVjdHVyZSwgYXJyYXkpKTsKICAgICB9CiAKICAgICB0eXBlZGVm
IEJpbmRpbmdzOjpBcnJheSBCaW5kaW5nc0FycmF5OwpAQCAtNzEsNyArNzMsNyBAQCBwcm90ZWN0
ZWQ6CiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gT3ZlcnJpZGVz
R2V0T3duUHJvcGVydHlTbG90IHwgT3ZlcnJpZGVzR2V0UHJvcGVydHlOYW1lcyB8IEpTQXJyYXk6
OlN0cnVjdHVyZUZsYWdzOwogCiBwcml2YXRlOgotICAgIFJ1bnRpbWVBcnJheShFeGVjU3RhdGUq
LCBCaW5kaW5nczo6QXJyYXkqKTsKKyAgICBSdW50aW1lQXJyYXkoRXhlY1N0YXRlKiwgU3RydWN0
dXJlKiwgQmluZGluZ3M6OkFycmF5Kik7CiAgICAgc3RhdGljIEpTVmFsdWUgbGVuZ3RoR2V0dGVy
KEV4ZWNTdGF0ZSosIEpTVmFsdWUsIGNvbnN0IElkZW50aWZpZXImKTsKICAgICBzdGF0aWMgSlNW
YWx1ZSBpbmRleEdldHRlcihFeGVjU3RhdGUqLCBKU1ZhbHVlLCB1bnNpZ25lZCk7CiB9OwpJbmRl
eDogU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfbWV0aG9kLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9tZXRob2QuY3BwCShyZXZpc2lvbiA5MjI4
MykKKysrIFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX21ldGhvZC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTQzLDkgKzQzLDkgQEAgQVNTRVJUX0NMQVNTX0ZJVFNfSU5fQ0VMTChSdW50aW1l
TWV0aG9kKQogCiBjb25zdCBDbGFzc0luZm8gUnVudGltZU1ldGhvZDo6c19pbmZvID0geyAiUnVu
dGltZU1ldGhvZCIsICZJbnRlcm5hbEZ1bmN0aW9uOjpzX2luZm8sIDAsIDAgfTsKIAotUnVudGlt
ZU1ldGhvZDo6UnVudGltZU1ldGhvZChFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBjb25zdCBJZGVudGlmaWVyJiBpZGVu
dCwgQmluZGluZ3M6Ok1ldGhvZExpc3QmIG0pCitSdW50aW1lTWV0aG9kOjpSdW50aW1lTWV0aG9k
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBCaW5k
aW5nczo6TWV0aG9kTGlzdCYgbSkKICAgICAvLyBDYWxsZXJzIHdpbGwgbmVlZCB0byBwYXNzIGlu
IHRoZSByaWdodCBnbG9iYWwgb2JqZWN0IGNvcnJlc3BvbmRpbmcgdG8gdGhpcyBuYXRpdmUgb2Jq
ZWN0ICJtIi4KLSAgICA6IEludGVybmFsRnVuY3Rpb24oJmV4ZWMtPmdsb2JhbERhdGEoKSwgZ2xv
YmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIGlkZW50KQorICAgIDogSW50ZXJuYWxGdW5jdGlvbihnbG9i
YWxPYmplY3QsIHN0cnVjdHVyZSkKICAgICAsIF9tZXRob2RMaXN0KGFkb3B0UHRyKG5ldyBNZXRo
b2RMaXN0KG0pKSkKIHsKICAgICBBU1NFUlQoaW5oZXJpdHMoJnNfaW5mbykpOwpJbmRleDogU291
cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfbWV0aG9kLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfbWV0aG9kLmgJKHJldmlzaW9uIDkyMjgzKQorKysgU291
cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfbWV0aG9kLmgJKHdvcmtpbmcgY29weSkKQEAgLTM3
LDcgKzM3LDkgQEAgY2xhc3MgUnVudGltZU1ldGhvZCA6IHB1YmxpYyBJbnRlcm5hbEZ1bgogcHVi
bGljOgogICAgIHN0YXRpYyBSdW50aW1lTWV0aG9kKiBjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgY29uc3Qg
SWRlbnRpZmllciYgbmFtZSwgQmluZGluZ3M6Ok1ldGhvZExpc3QmIG1ldGhvZExpc3QpCiAgICAg
ewotICAgICAgICByZXR1cm4gbmV3IChhbGxvY2F0ZUNlbGw8UnVudGltZU1ldGhvZD4oKmV4ZWMt
PmhlYXAoKSkpIFJ1bnRpbWVNZXRob2QoZXhlYywgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIG5h
bWUsIG1ldGhvZExpc3QpOworICAgICAgICBSdW50aW1lTWV0aG9kKiBtZXRob2QgPSB2YWxpZGF0
ZUFsbG9jPFJ1bnRpbWVNZXRob2Q+KGV4ZWMtPmdsb2JhbERhdGEoKSwgbmV3IChhbGxvY2F0ZUNl
bGw8UnVudGltZU1ldGhvZD4oKmV4ZWMtPmhlYXAoKSkpIFJ1bnRpbWVNZXRob2QoZ2xvYmFsT2Jq
ZWN0LCBzdHJ1Y3R1cmUsIG1ldGhvZExpc3QpKTsKKyAgICAgICAgbWV0aG9kLT5pbml0UHJvcGVy
dGllcyhleGVjLT5nbG9iYWxEYXRhKCksIG5hbWUpOworICAgICAgICByZXR1cm4gbWV0aG9kOwog
ICAgIH0KIAogICAgIEJpbmRpbmdzOjpNZXRob2RMaXN0KiBtZXRob2RzKCkgY29uc3QgeyByZXR1
cm4gX21ldGhvZExpc3QuZ2V0KCk7IH0KQEAgLTU1LDcgKzU3LDcgQEAgcHVibGljOgogICAgIH0K
IAogcHJvdGVjdGVkOgotICAgIFJ1bnRpbWVNZXRob2QoRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmpl
Y3QqLCBTdHJ1Y3R1cmUqLCBjb25zdCBJZGVudGlmaWVyJiBuYW1lLCBCaW5kaW5nczo6TWV0aG9k
TGlzdCYpOworICAgIFJ1bnRpbWVNZXRob2QoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBC
aW5kaW5nczo6TWV0aG9kTGlzdCYpOwogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1
cmVGbGFncyA9IE92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCB8IEludGVybmFsRnVuY3Rpb246
OlN0cnVjdHVyZUZsYWdzOwogCiBwcml2YXRlOgpJbmRleDogU291cmNlL1dlYkNvcmUvYnJpZGdl
L3J1bnRpbWVfb2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1
bnRpbWVfb2JqZWN0LmgJKHJldmlzaW9uIDkyMjgzKQorKysgU291cmNlL1dlYkNvcmUvYnJpZGdl
L3J1bnRpbWVfb2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTM3LDcgKzM3LDcgQEAgY2xhc3Mg
UnVudGltZU9iamVjdCA6IHB1YmxpYyBKU09iamVjdFdpdAogcHVibGljOgogICAgIHN0YXRpYyBS
dW50aW1lT2JqZWN0KiBjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUGFzc1JlZlB0cjxJbnN0YW5jZT4gaW5z
dGFuY2UpCiAgICAgewotICAgICAgICByZXR1cm4gbmV3IChhbGxvY2F0ZUNlbGw8UnVudGltZU9i
amVjdD4oKmV4ZWMtPmhlYXAoKSkpIFJ1bnRpbWVPYmplY3QoZXhlYywgZ2xvYmFsT2JqZWN0LCBz
dHJ1Y3R1cmUsIGluc3RhbmNlKTsKKyAgICAgICAgcmV0dXJuIHZhbGlkYXRlQWxsb2M8UnVudGlt
ZU9iamVjdD4oZXhlYy0+Z2xvYmFsRGF0YSgpLCBuZXcgKGFsbG9jYXRlQ2VsbDxSdW50aW1lT2Jq
ZWN0PigqZXhlYy0+aGVhcCgpKSkgUnVudGltZU9iamVjdChleGVjLCBnbG9iYWxPYmplY3QsIHN0
cnVjdHVyZSwgaW5zdGFuY2UpKTsKICAgICB9CiAKICAgICB2aXJ0dWFsIH5SdW50aW1lT2JqZWN0
KCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9icmlkZ2UvYy9DUnVudGltZU9iamVjdC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYnJpZGdlL2MvQ1J1bnRpbWVPYmplY3QuY3BwCShy
ZXZpc2lvbiA5MjI4MykKKysrIFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9jL0NSdW50aW1lT2JqZWN0
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzcsMTAgKzM3LDEwIEBAIG5hbWVzcGFjZSBCaW5kaW5n
cyB7CiAKIGNvbnN0IENsYXNzSW5mbyBDUnVudGltZU9iamVjdDo6c19pbmZvID0geyAiQ1J1bnRp
bWVPYmplY3QiLCAmUnVudGltZU9iamVjdDo6c19pbmZvLCAwLCAwIH07CiAKLUNSdW50aW1lT2Jq
ZWN0OjpDUnVudGltZU9iamVjdChFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIFBhc3NSZWZQdHI8Q0luc3RhbmNlPiBpbnN0YW5jZSkKK0NSdW50aW1lT2JqZWN0
OjpDUnVudGltZU9iamVjdChFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIFN0cnVjdHVyZSogZG9tU3RydWN0dXJlLCBQYXNzUmVmUHRyPENJbnN0YW5jZT4gaW5z
dGFuY2UpCiAgICAgLy8gRklYTUU6IGRlcHJlY2F0ZWRHZXRET01TdHJ1Y3R1cmUgdXNlcyB0aGUg
cHJvdG90eXBlIG9mZiBvZiB0aGUgd3JvbmcgZ2xvYmFsIG9iamVjdAogICAgIC8vIFdlIG5lZWQg
dG8gcGFzcyBpbiB0aGUgcmlnaHQgZ2xvYmFsIG9iamVjdCBmb3IgImkiLgotICAgIDogUnVudGlt
ZU9iamVjdChleGVjLCBnbG9iYWxPYmplY3QsIFdlYkNvcmU6OmRlcHJlY2F0ZWRHZXRET01TdHJ1
Y3R1cmU8Q1J1bnRpbWVPYmplY3Q+KGV4ZWMpLCBpbnN0YW5jZSkKKyAgICA6IFJ1bnRpbWVPYmpl
Y3QoZXhlYywgZ2xvYmFsT2JqZWN0LCBkb21TdHJ1Y3R1cmUsIGluc3RhbmNlKQogewogICAgIEFT
U0VSVChpbmhlcml0cygmc19pbmZvKSk7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9icmlkZ2Uv
Yy9DUnVudGltZU9iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9j
L0NSdW50aW1lT2JqZWN0LmgJKHJldmlzaW9uIDkyMjgzKQorKysgU291cmNlL1dlYkNvcmUvYnJp
ZGdlL2MvQ1J1bnRpbWVPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtMjgsNiArMjgsNyBAQAog
CiAjaWYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCiAKKyNpbmNsdWRlICJKU0RPTUJpbmRp
bmcuaCIKICNpbmNsdWRlICJydW50aW1lX29iamVjdC5oIgogCiBuYW1lc3BhY2UgSlNDIHsKQEAg
LTM5LDcgKzQwLDggQEAgY2xhc3MgQ1J1bnRpbWVPYmplY3QgOiBwdWJsaWMgUnVudGltZU9iagog
cHVibGljOgogICAgIHN0YXRpYyBDUnVudGltZU9iamVjdCogY3JlYXRlKEV4ZWNTdGF0ZSogZXhl
YywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUGFzc1JlZlB0cjxDSW5zdGFuY2U+IGlu
c3RhbmNlKQogICAgIHsKLSAgICAgICAgcmV0dXJuIG5ldyAoYWxsb2NhdGVDZWxsPENSdW50aW1l
T2JqZWN0PigqZXhlYy0+aGVhcCgpKSkgQ1J1bnRpbWVPYmplY3QoZXhlYywgZ2xvYmFsT2JqZWN0
LCBpbnN0YW5jZSk7CisgICAgICAgIFN0cnVjdHVyZSogZG9tU3RydWN0dXJlID0gV2ViQ29yZTo6
ZGVwcmVjYXRlZEdldERPTVN0cnVjdHVyZTxDUnVudGltZU9iamVjdD4oZXhlYyk7CisgICAgICAg
IHJldHVybiB2YWxpZGF0ZUFsbG9jPENSdW50aW1lT2JqZWN0PihleGVjLT5nbG9iYWxEYXRhKCks
IG5ldyAoYWxsb2NhdGVDZWxsPENSdW50aW1lT2JqZWN0PigqZXhlYy0+aGVhcCgpKSkgQ1J1bnRp
bWVPYmplY3QoZXhlYywgZ2xvYmFsT2JqZWN0LCBkb21TdHJ1Y3R1cmUsIGluc3RhbmNlKSk7CiAg
ICAgfQogCiAgICAgdmlydHVhbCB+Q1J1bnRpbWVPYmplY3QoKTsKQEAgLTU0LDcgKzU2LDcgQEAg
cHVibGljOgogICAgIH0KIAogcHJpdmF0ZToKLSAgICBDUnVudGltZU9iamVjdChFeGVjU3RhdGUq
LCBKU0dsb2JhbE9iamVjdCosIFBhc3NSZWZQdHI8Q0luc3RhbmNlPik7CisgICAgQ1J1bnRpbWVP
YmplY3QoRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBQYXNzUmVmUHRy
PENJbnN0YW5jZT4pOwogfTsKIAogfQpJbmRleDogU291cmNlL1dlYkNvcmUvYnJpZGdlL2MvY19p
bnN0YW5jZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYnJpZGdlL2MvY19pbnN0
YW5jZS5jcHAJKHJldmlzaW9uIDkyMjgzKQorKysgU291cmNlL1dlYkNvcmUvYnJpZGdlL2MvY19p
bnN0YW5jZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExMyw3ICsxMTMsMTAgQEAgY2xhc3MgQ1J1
bnRpbWVNZXRob2QgOiBwdWJsaWMgUnVudGltZU1ldAogcHVibGljOgogICAgIHN0YXRpYyBDUnVu
dGltZU1ldGhvZCogY3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgY29uc3QgSWRlbnRpZmllciYgbmFtZSwgQmluZGluZ3M6Ok1ldGhvZExpc3QmIGxp
c3QpCiAgICAgewotICAgICAgICByZXR1cm4gbmV3IChhbGxvY2F0ZUNlbGw8Q1J1bnRpbWVNZXRo
b2Q+KCpleGVjLT5oZWFwKCkpKSBDUnVudGltZU1ldGhvZChleGVjLCBnbG9iYWxPYmplY3QsIG5h
bWUsIGxpc3QpOworICAgICAgICBTdHJ1Y3R1cmUqIGRvbVN0cnVjdHVyZSA9IFdlYkNvcmU6OmRl
cHJlY2F0ZWRHZXRET01TdHJ1Y3R1cmU8Q1J1bnRpbWVNZXRob2Q+KGV4ZWMpOworICAgICAgICBD
UnVudGltZU1ldGhvZCogbWV0aG9kID0gdmFsaWRhdGVBbGxvYzxDUnVudGltZU1ldGhvZD4oZXhl
Yy0+Z2xvYmFsRGF0YSgpLCBuZXcgKGFsbG9jYXRlQ2VsbDxDUnVudGltZU1ldGhvZD4oKmV4ZWMt
PmhlYXAoKSkpIENSdW50aW1lTWV0aG9kKGdsb2JhbE9iamVjdCwgZG9tU3RydWN0dXJlLCBsaXN0
KSk7CisgICAgICAgIG1ldGhvZC0+aW5pdFByb3BlcnRpZXMoZXhlYy0+Z2xvYmFsRGF0YSgpLCBu
YW1lKTsKKyAgICAgICAgcmV0dXJuIG1ldGhvZDsKICAgICB9CiAKICAgICBzdGF0aWMgU3RydWN0
dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU1ZhbHVlIHBy
b3RvdHlwZSkKQEAgLTEyNCwxMCArMTI3LDEwIEBAIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3Qg
Q2xhc3NJbmZvIHNfaW5mbzsKIAogcHJpdmF0ZToKLSAgICBDUnVudGltZU1ldGhvZChFeGVjU3Rh
dGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IElkZW50aWZpZXIm
IG5hbWUsIEJpbmRpbmdzOjpNZXRob2RMaXN0JiBsaXN0KQorICAgIENSdW50aW1lTWV0aG9kKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogZG9tU3RydWN0dXJlLCBCaW5k
aW5nczo6TWV0aG9kTGlzdCYgbGlzdCkKICAgICAgICAgLy8gRklYTUU6IGRlcHJlY2F0ZWRHZXRE
T01TdHJ1Y3R1cmUgdXNlcyB0aGUgcHJvdG90eXBlIG9mZiBvZiB0aGUgd3JvbmcgZ2xvYmFsIG9i
amVjdAogICAgICAgICAvLyBXZSBuZWVkIHRvIHBhc3MgaW4gdGhlIHJpZ2h0IGdsb2JhbCBvYmpl
Y3QgZm9yICJpIi4KLSAgICAgICAgOiBSdW50aW1lTWV0aG9kKGV4ZWMsIGdsb2JhbE9iamVjdCwg
V2ViQ29yZTo6ZGVwcmVjYXRlZEdldERPTVN0cnVjdHVyZTxDUnVudGltZU1ldGhvZD4oZXhlYyks
IG5hbWUsIGxpc3QpCisgICAgICAgIDogUnVudGltZU1ldGhvZChnbG9iYWxPYmplY3QsIGRvbVN0
cnVjdHVyZSwgbGlzdCkKICAgICB7CiAgICAgICAgIEFTU0VSVChpbmhlcml0cygmc19pbmZvKSk7
CiAgICAgfQpJbmRleDogU291cmNlL1dlYkNvcmUvYnJpZGdlL2puaS9qc2MvSmF2YUluc3RhbmNl
SlNDLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9icmlkZ2Uvam5pL2pzYy9KYXZh
SW5zdGFuY2VKU0MuY3BwCShyZXZpc2lvbiA5MjI4MykKKysrIFNvdXJjZS9XZWJDb3JlL2JyaWRn
ZS9qbmkvanNjL0phdmFJbnN0YW5jZUpTQy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExOCw3ICsx
MTgsMTAgQEAgY2xhc3MgSmF2YVJ1bnRpbWVNZXRob2QgOiBwdWJsaWMgUnVudGltZQogcHVibGlj
OgogICAgIHN0YXRpYyBKYXZhUnVudGltZU1ldGhvZCogY3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywg
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgSWRlbnRpZmllciYgbmFtZSwgQmlu
ZGluZ3M6Ok1ldGhvZExpc3QmIGxpc3QpCiAgICAgewotICAgICAgICByZXR1cm4gbmV3IChhbGxv
Y2F0ZUNlbGw8SmF2YVJ1bnRpbWVNZXRob2Q+KCpleGVjLT5oZWFwKCkpKSBKYXZhUnVudGltZU1l
dGhvZChleGVjLCBnbG9iYWxPYmplY3QsIG5hbWUsIGxpc3QpOworICAgICAgICBTdHJ1Y3R1cmUq
IGRvbVN0cnVjdHVyZSA9IFdlYkNvcmU6OmRlcHJlY2F0ZWRHZXRET01TdHJ1Y3R1cmU8SmF2YVJ1
bnRpbWVNZXRob2Q+KGV4ZWMpOworICAgICAgICBKYXZhUnVudGltZU1ldGhvZCogbWV0aG9kID0g
dmFsaWRhdGVBbGxvYzxKYXZhUnVudGltZU1ldGhvZD4oZXhlYy0+Z2xvYmFsRGF0YSgpLCBuZXcg
KGFsbG9jYXRlQ2VsbDxKYXZhUnVudGltZU1ldGhvZD4oKmV4ZWMtPmhlYXAoKSkpIEphdmFSdW50
aW1lTWV0aG9kKGdsb2JhbE9iamVjdCwgZG9tU3RydWN0dXJlLCBsaXN0KSk7CisgICAgICAgIG1l
dGhvZC0+aW5pdFByb3BlcnRpZXMoZXhlYy0+Z2xvYmFsRGF0YSgpLCBuYW1lKTsKKyAgICAgICAg
cmV0dXJuIG1ldGhvZDsKICAgICB9CiAKICAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1
Y3R1cmUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU1ZhbHVlIHByb3RvdHlwZSkKQEAgLTEy
OSwxMCArMTMyLDEwIEBAIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3QgQ2xhc3NJbmZvIHNfaW5m
bzsKIAogcHJpdmF0ZToKLSAgICBKYXZhUnVudGltZU1ldGhvZChFeGVjU3RhdGUqIGV4ZWMsIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IElkZW50aWZpZXImIG5hbWUsIEJpbmRp
bmdzOjpNZXRob2RMaXN0JiBsaXN0KQorICAgIEphdmFSdW50aW1lTWV0aG9kKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogZG9tU3RydWN0dXJlLCBCaW5kaW5nczo6TWV0
aG9kTGlzdCYgbGlzdCkKICAgICAgICAgLy8gRklYTUU6IGRlcHJlY2F0ZWRHZXRET01TdHJ1Y3R1
cmUgdXNlcyB0aGUgcHJvdG90eXBlIG9mZiBvZiB0aGUgd3JvbmcgZ2xvYmFsIG9iamVjdAogICAg
ICAgICAvLyBXZSBuZWVkIHRvIHBhc3MgaW4gdGhlIHJpZ2h0IGdsb2JhbCBvYmplY3QgZm9yICJp
Ii4KLSAgICAgICAgOiBSdW50aW1lTWV0aG9kKGV4ZWMsIGdsb2JhbE9iamVjdCwgV2ViQ29yZTo6
ZGVwcmVjYXRlZEdldERPTVN0cnVjdHVyZTxKYXZhUnVudGltZU1ldGhvZD4oZXhlYyksIG5hbWUs
IGxpc3QpCisgICAgICAgIDogUnVudGltZU1ldGhvZChnbG9iYWxPYmplY3QsIGRvbVN0cnVjdHVy
ZSwgbGlzdCkKICAgICB7CiAgICAgICAgIEFTU0VSVChpbmhlcml0cygmc19pbmZvKSk7CiAgICAg
fQpJbmRleDogU291cmNlL1dlYkNvcmUvYnJpZGdlL2puaS9qc2MvSmF2YVJ1bnRpbWVPYmplY3Qu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9qbmkvanNjL0phdmFSdW50
aW1lT2JqZWN0LmNwcAkocmV2aXNpb24gOTIyODMpCisrKyBTb3VyY2UvV2ViQ29yZS9icmlkZ2Uv
am5pL2pzYy9KYXZhUnVudGltZU9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM1LDEwICsz
NSwxMCBAQCBuYW1lc3BhY2UgQmluZGluZ3MgewogCiBjb25zdCBDbGFzc0luZm8gSmF2YVJ1bnRp
bWVPYmplY3Q6OnNfaW5mbyA9IHsgIkphdmFSdW50aW1lT2JqZWN0IiwgJlJ1bnRpbWVPYmplY3Q6
OnNfaW5mbywgMCwgMCB9OwogCi1KYXZhUnVudGltZU9iamVjdDo6SmF2YVJ1bnRpbWVPYmplY3Qo
RXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQYXNzUmVmUHRy
PEphdmFJbnN0YW5jZT4gaW5zdGFuY2UpCitKYXZhUnVudGltZU9iamVjdDo6SmF2YVJ1bnRpbWVP
YmplY3QoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1
Y3R1cmUqIGRvbVN0cnVjdHVyZSwgUGFzc1JlZlB0cjxKYXZhSW5zdGFuY2U+IGluc3RhbmNlKQog
ICAgIC8vIEZJWE1FOiBkZXByZWNhdGVkR2V0RE9NU3RydWN0dXJlIHVzZXMgdGhlIHByb3RvdHlw
ZSBvZmYgb2YgdGhlIHdyb25nIGdsb2JhbCBvYmplY3QKICAgICAvLyBXZSBuZWVkIHRvIHBhc3Mg
aW4gdGhlIHJpZ2h0IGdsb2JhbCBvYmplY3QgZm9yICJpIi4KLSAgICA6IFJ1bnRpbWVPYmplY3Qo
ZXhlYywgZ2xvYmFsT2JqZWN0LCBXZWJDb3JlOjpkZXByZWNhdGVkR2V0RE9NU3RydWN0dXJlPEph
dmFSdW50aW1lT2JqZWN0PihleGVjKSwgaW5zdGFuY2UpCisgICAgOiBSdW50aW1lT2JqZWN0KGV4
ZWMsIGdsb2JhbE9iamVjdCwgZG9tU3RydWN0dXJlLCBpbnN0YW5jZSkKIHsKICAgICBBU1NFUlQo
aW5oZXJpdHMoJnNfaW5mbykpOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvYnJpZGdlL2puaS9q
c2MvSmF2YVJ1bnRpbWVPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9icmlk
Z2Uvam5pL2pzYy9KYXZhUnVudGltZU9iamVjdC5oCShyZXZpc2lvbiA5MjI4MykKKysrIFNvdXJj
ZS9XZWJDb3JlL2JyaWRnZS9qbmkvanNjL0phdmFSdW50aW1lT2JqZWN0LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTI2LDYgKzI2LDcgQEAKICNpZm5kZWYgSmF2YVJ1bnRpbWVPYmplY3RfaAogI2RlZmlu
ZSBKYXZhUnVudGltZU9iamVjdF9oCiAKKyNpbmNsdWRlICJKU0RPTUJpbmRpbmcuaCIKICNpbmNs
dWRlICJydW50aW1lX29iamVjdC5oIgogCiBuYW1lc3BhY2UgSlNDIHsKQEAgLTM3LDcgKzM4LDgg
QEAgY2xhc3MgSmF2YVJ1bnRpbWVPYmplY3QgOiBwdWJsaWMgUnVudGltZQogcHVibGljOgogICAg
IHN0YXRpYyBKYXZhUnVudGltZU9iamVjdCogY3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUGFzc1JlZlB0cjxKYXZhSW5zdGFuY2U+IGphdmFJbnN0
KQogICAgIHsKLSAgICAgICAgcmV0dXJuIG5ldyAoYWxsb2NhdGVDZWxsPEphdmFSdW50aW1lT2Jq
ZWN0PigqZXhlYy0+aGVhcCgpKSkgSmF2YVJ1bnRpbWVPYmplY3QoZXhlYywgZ2xvYmFsT2JqZWN0
LCBqYXZhSW5zdCk7CisgICAgICAgIFN0cnVjdHVyZSogZG9tU3RydWN0dXJlID0gV2ViQ29yZTo6
ZGVwcmVjYXRlZEdldERPTVN0cnVjdHVyZTxKYXZhUnVudGltZU9iamVjdD4oZXhlYyk7CisgICAg
ICAgIHJldHVybiB2YWxpZGF0ZUFsbG9jPEphdmFSdW50aW1lT2JqZWN0PihleGVjLT5nbG9iYWxE
YXRhKCksIG5ldyAoYWxsb2NhdGVDZWxsPEphdmFSdW50aW1lT2JqZWN0PigqZXhlYy0+aGVhcCgp
KSkgSmF2YVJ1bnRpbWVPYmplY3QoZXhlYywgZ2xvYmFsT2JqZWN0LCBkb21TdHJ1Y3R1cmUsIGph
dmFJbnN0KSk7CiAgICAgfQogCiAgICAgdmlydHVhbCB+SmF2YVJ1bnRpbWVPYmplY3QoKTsKQEAg
LTUyLDcgKzU0LDcgQEAgcHVibGljOgogICAgIH0KIAogcHJpdmF0ZToKLSAgICBKYXZhUnVudGlt
ZU9iamVjdChFeGVjU3RhdGUqLCBKU0dsb2JhbE9iamVjdCosIFBhc3NSZWZQdHI8SmF2YUluc3Rh
bmNlPik7CisgICAgSmF2YVJ1bnRpbWVPYmplY3QoRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3Qq
LCBTdHJ1Y3R1cmUqLCBQYXNzUmVmUHRyPEphdmFJbnN0YW5jZT4pOwogfTsKIAogfQpJbmRleDog
U291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvT2JqQ1J1bnRpbWVPYmplY3QuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9PYmpDUnVudGltZU9iamVjdC5oCShyZXZp
c2lvbiA5MjI4MykKKysrIFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL09iakNSdW50aW1lT2Jq
ZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTM3LDcgKzM3LDggQEAgY2xhc3MgT2JqQ1J1bnRpbWVP
YmplY3QgOiBwdWJsaWMgUnVudGltZQogcHVibGljOgogICAgIHN0YXRpYyBPYmpDUnVudGltZU9i
amVjdCogY3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgUGFzc1JlZlB0cjxPYmpjSW5zdGFuY2U+IGluc3QpCiAgICAgewotICAgICAgICByZXR1cm4g
bmV3IChhbGxvY2F0ZUNlbGw8T2JqQ1J1bnRpbWVPYmplY3Q+KCpleGVjLT5oZWFwKCkpKSBPYmpD
UnVudGltZU9iamVjdChleGVjLCBnbG9iYWxPYmplY3QsIGluc3QpOworICAgICAgICBTdHJ1Y3R1
cmUqIGRvbVN0cnVjdHVyZSA9IFdlYkNvcmU6OmRlcHJlY2F0ZWRHZXRET01TdHJ1Y3R1cmU8T2Jq
Q1J1bnRpbWVPYmplY3Q+KGV4ZWMpOworICAgICAgICByZXR1cm4gdmFsaWRhdGVBbGxvYzxPYmpD
UnVudGltZU9iamVjdD4oZXhlYy0+Z2xvYmFsRGF0YSgpLCBuZXcgKGFsbG9jYXRlQ2VsbDxPYmpD
UnVudGltZU9iamVjdD4oKmV4ZWMtPmhlYXAoKSkpIE9iakNSdW50aW1lT2JqZWN0KGV4ZWMsIGds
b2JhbE9iamVjdCwgZG9tU3RydWN0dXJlLCBpbnN0KSk7CiAgICAgfQogCiAgICAgdmlydHVhbCB+
T2JqQ1J1bnRpbWVPYmplY3QoKTsKQEAgLTUyLDcgKzUzLDcgQEAgcHVibGljOgogICAgIH0KIAog
cHJpdmF0ZToKLSAgICBPYmpDUnVudGltZU9iamVjdChFeGVjU3RhdGUqLCBKU0dsb2JhbE9iamVj
dCosIFBhc3NSZWZQdHI8T2JqY0luc3RhbmNlPik7CisgICAgT2JqQ1J1bnRpbWVPYmplY3QoRXhl
Y1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBQYXNzUmVmUHRyPE9iamNJbnN0
YW5jZT4pOwogfTsKIAogfQpJbmRleDogU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvT2JqQ1J1
bnRpbWVPYmplY3QubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMv
T2JqQ1J1bnRpbWVPYmplY3QubW0JKHJldmlzaW9uIDkyMjgzKQorKysgU291cmNlL1dlYkNvcmUv
YnJpZGdlL29iamMvT2JqQ1J1bnRpbWVPYmplY3QubW0JKHdvcmtpbmcgY29weSkKQEAgLTM1LDEw
ICszNSwxMCBAQCBuYW1lc3BhY2UgQmluZGluZ3MgewogCiBjb25zdCBDbGFzc0luZm8gT2JqQ1J1
bnRpbWVPYmplY3Q6OnNfaW5mbyA9IHsgIk9iakNSdW50aW1lT2JqZWN0IiwgJlJ1bnRpbWVPYmpl
Y3Q6OnNfaW5mbywgMCwgMCB9OwogCi1PYmpDUnVudGltZU9iamVjdDo6T2JqQ1J1bnRpbWVPYmpl
Y3QoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQYXNzUmVm
UHRyPE9iamNJbnN0YW5jZT4gaW5zdGFuY2UpCitPYmpDUnVudGltZU9iamVjdDo6T2JqQ1J1bnRp
bWVPYmplY3QoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBT
dHJ1Y3R1cmUqIGRvbVN0cnVjdHVyZSwgUGFzc1JlZlB0cjxPYmpjSW5zdGFuY2U+IGluc3RhbmNl
KQogICAgIC8vIEZJWE1FOiBkZXByZWNhdGVkR2V0RE9NU3RydWN0dXJlIHVzZXMgdGhlIHByb3Rv
dHlwZSBvZmYgb2YgdGhlIHdyb25nIGdsb2JhbCBvYmplY3QKICAgICAvLyBXZSBuZWVkIHRvIHBh
c3MgaW4gdGhlIHJpZ2h0IGdsb2JhbCBvYmplY3QgZm9yICJpIi4KLSAgICA6IFJ1bnRpbWVPYmpl
Y3QoZXhlYywgZ2xvYmFsT2JqZWN0LCBXZWJDb3JlOjpkZXByZWNhdGVkR2V0RE9NU3RydWN0dXJl
PE9iakNSdW50aW1lT2JqZWN0PihleGVjKSwgaW5zdGFuY2UpCisgICAgOiBSdW50aW1lT2JqZWN0
KGV4ZWMsIGdsb2JhbE9iamVjdCwgZG9tU3RydWN0dXJlLCBpbnN0YW5jZSkKIHsKICAgICBBU1NF
UlQoaW5oZXJpdHMoJnNfaW5mbykpOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvYnJpZGdlL29i
amMvb2JqY19pbnN0YW5jZS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9icmlkZ2Uv
b2JqYy9vYmpjX2luc3RhbmNlLm1tCShyZXZpc2lvbiA5MjI4MykKKysrIFNvdXJjZS9XZWJDb3Jl
L2JyaWRnZS9vYmpjL29iamNfaW5zdGFuY2UubW0JKHdvcmtpbmcgY29weSkKQEAgLTE3NCw3ICsx
NzQsMTAgQEAgY2xhc3MgT2JqQ1J1bnRpbWVNZXRob2QgOiBwdWJsaWMgUnVudGltZQogcHVibGlj
OgogICAgIHN0YXRpYyBPYmpDUnVudGltZU1ldGhvZCogY3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywg
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgSWRlbnRpZmllciYgbmFtZSwgQmlu
ZGluZ3M6Ok1ldGhvZExpc3QmIGxpc3QpCiAgICAgewotICAgICAgICByZXR1cm4gbmV3IChhbGxv
Y2F0ZUNlbGw8T2JqQ1J1bnRpbWVNZXRob2Q+KCpleGVjLT5oZWFwKCkpKSBPYmpDUnVudGltZU1l
dGhvZChleGVjLCBnbG9iYWxPYmplY3QsIG5hbWUsIGxpc3QpOworICAgICAgICBTdHJ1Y3R1cmUq
IGRvbVN0cnVjdHVyZSA9IFdlYkNvcmU6OmRlcHJlY2F0ZWRHZXRET01TdHJ1Y3R1cmU8T2JqQ1J1
bnRpbWVNZXRob2Q+KGV4ZWMpOworICAgICAgICBPYmpDUnVudGltZU1ldGhvZCogbWV0aG9kID0g
dmFsaWRhdGVBbGxvYzxPYmpDUnVudGltZU1ldGhvZD4oZXhlYy0+Z2xvYmFsRGF0YSgpLCBuZXcg
KGFsbG9jYXRlQ2VsbDxPYmpDUnVudGltZU1ldGhvZD4oKmV4ZWMtPmhlYXAoKSkpIE9iakNSdW50
aW1lTWV0aG9kKGdsb2JhbE9iamVjdCwgZG9tU3RydWN0dXJlLCBsaXN0KSk7CisgICAgICAgIG1l
dGhvZC0+aW5pdFByb3BlcnRpZXMoZXhlYy0+Z2xvYmFsRGF0YSgpLCBuYW1lKTsKKyAgICAgICAg
cmV0dXJuIG1ldGhvZDsKICAgICB9CiAKICAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1
Y3R1cmUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU1ZhbHVlIHByb3RvdHlwZSkKQEAgLTE4
NSwxMCArMTg4LDEwIEBAIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3QgQ2xhc3NJbmZvIHNfaW5m
bzsKIAogcHJpdmF0ZToKLSAgICBPYmpDUnVudGltZU1ldGhvZChFeGVjU3RhdGUqIGV4ZWMsIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IElkZW50aWZpZXImIG5hbWUsIEJpbmRp
bmdzOjpNZXRob2RMaXN0JiBsaXN0KQorICAgIE9iakNSdW50aW1lTWV0aG9kKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogZG9tU3RydWN0dXJlLCBCaW5kaW5nczo6TWV0
aG9kTGlzdCYgbGlzdCkKICAgICAgICAgLy8gRklYTUU6IGRlcHJlY2F0ZWRHZXRET01TdHJ1Y3R1
cmUgdXNlcyB0aGUgcHJvdG90eXBlIG9mZiBvZiB0aGUgd3JvbmcgZ2xvYmFsIG9iamVjdAogICAg
ICAgICAvLyBXZSBuZWVkIHRvIHBhc3MgaW4gdGhlIHJpZ2h0IGdsb2JhbCBvYmplY3QgZm9yICJp
Ii4KLSAgICAgICAgOiBSdW50aW1lTWV0aG9kKGV4ZWMsIGdsb2JhbE9iamVjdCwgV2ViQ29yZTo6
ZGVwcmVjYXRlZEdldERPTVN0cnVjdHVyZTxPYmpDUnVudGltZU1ldGhvZD4oZXhlYyksIG5hbWUs
IGxpc3QpCisgICAgICAgIDogUnVudGltZU1ldGhvZChnbG9iYWxPYmplY3QsIGRvbVN0cnVjdHVy
ZSwgbGlzdCkKICAgICB7CiAgICAgICAgIEFTU0VSVChpbmhlcml0cygmc19pbmZvKSk7CiAgICAg
fQpJbmRleDogU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19ydW50aW1lLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19ydW50aW1lLmgJKHJldmlz
aW9uIDkyMjgzKQorKysgU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19ydW50aW1lLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTI3LDYgKzI3LDcgQEAKICNkZWZpbmUgS0pTX0JJTkRJTkdTX09C
SkNfUlVOVElNRV9ICiAKICNpbmNsdWRlICJCcmlkZ2VKU0MuaCIKKyNpbmNsdWRlICJKU0RPTUJp
bmRpbmcuaCIKICNpbmNsdWRlICJvYmpjX2hlYWRlci5oIgogI2luY2x1ZGUgPHJ1bnRpbWUvSlNH
bG9iYWxPYmplY3QuaD4KICNpbmNsdWRlIDxydW50aW1lL0pTT2JqZWN0V2l0aEdsb2JhbE9iamVj
dC5oPgpAQCAtOTQsNyArOTUsOSBAQCBjbGFzcyBPYmpjRmFsbGJhY2tPYmplY3RJbXAgOiBwdWJs
aWMgSlNPCiBwdWJsaWM6CiAgICAgc3RhdGljIE9iamNGYWxsYmFja09iamVjdEltcCogY3JlYXRl
KEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgT2JqY0luc3Rh
bmNlKiBpbnN0YW5jZSwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lKQogICAgIHsKLSAg
ICAgICAgcmV0dXJuIG5ldyAoYWxsb2NhdGVDZWxsPE9iamNGYWxsYmFja09iamVjdEltcD4oKmV4
ZWMtPmhlYXAoKSkpIE9iamNGYWxsYmFja09iamVjdEltcChleGVjLCBnbG9iYWxPYmplY3QsIGlu
c3RhbmNlLCBwcm9wZXJ0eU5hbWUpOworICAgICAgICAvLyBGSVhNRTogZGVwcmVjYXRlZEdldERP
TVN0cnVjdHVyZSB1c2VzIHRoZSBwcm90b3R5cGUgb2ZmIG9mIHRoZSB3cm9uZyBnbG9iYWwgb2Jq
ZWN0CisgICAgICAgIFN0cnVjdHVyZSogZG9tU3RydWN0dXJlID0gV2ViQ29yZTo6ZGVwcmVjYXRl
ZEdldERPTVN0cnVjdHVyZTxPYmpjRmFsbGJhY2tPYmplY3RJbXA+KGV4ZWMpOworICAgICAgICBy
ZXR1cm4gdmFsaWRhdGVBbGxvYzxPYmpjRmFsbGJhY2tPYmplY3RJbXA+KGV4ZWMtPmdsb2JhbERh
dGEoKSwgbmV3IChhbGxvY2F0ZUNlbGw8T2JqY0ZhbGxiYWNrT2JqZWN0SW1wPigqZXhlYy0+aGVh
cCgpKSkgT2JqY0ZhbGxiYWNrT2JqZWN0SW1wKGdsb2JhbE9iamVjdCwgZG9tU3RydWN0dXJlLCBp
bnN0YW5jZSwgcHJvcGVydHlOYW1lKSk7CiAgICAgfQogCiAgICAgc3RhdGljIGNvbnN0IENsYXNz
SW5mbyBzX2luZm87CkBAIC0xMTIsNyArMTE1LDcgQEAgcHVibGljOgogICAgIH0KIAogcHJpdmF0
ZToKLSAgICBPYmpjRmFsbGJhY2tPYmplY3RJbXAoRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3Qq
LCBPYmpjSW5zdGFuY2UqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpOworICAgIE9i
amNGYWxsYmFja09iamVjdEltcChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIE9iamNJbnN0
YW5jZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSk7CiAgICAgc3RhdGljIGNvbnN0
IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gT3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90IHwg
SlNPYmplY3Q6OlN0cnVjdHVyZUZsYWdzOwogICAgIHZpcnR1YWwgYm9vbCBnZXRPd25Qcm9wZXJ0
eVNsb3QoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIFByb3BlcnR5U2xvdCYpOwogICAg
IHZpcnR1YWwgYm9vbCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoRXhlY1N0YXRlKiwgY29uc3Qg
SWRlbnRpZmllciYsIFByb3BlcnR5RGVzY3JpcHRvciYpOwpJbmRleDogU291cmNlL1dlYkNvcmUv
YnJpZGdlL29iamMvb2JqY19ydW50aW1lLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2JyaWRnZS9vYmpjL29iamNfcnVudGltZS5tbQkocmV2aXNpb24gOTIyODMpCisrKyBTb3VyY2Uv
V2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX3J1bnRpbWUubW0JKHdvcmtpbmcgY29weSkKQEAgLTE5
Nyw5ICsxOTcsOCBAQCB1bnNpZ25lZCBpbnQgT2JqY0FycmF5OjpnZXRMZW5ndGgoKSBjb25zCiAK
IGNvbnN0IENsYXNzSW5mbyBPYmpjRmFsbGJhY2tPYmplY3RJbXA6OnNfaW5mbyA9IHsgIk9iamNG
YWxsYmFja09iamVjdCIsICZKU09iamVjdFdpdGhHbG9iYWxPYmplY3Q6OnNfaW5mbywgMCwgMCB9
OwogCi1PYmpjRmFsbGJhY2tPYmplY3RJbXA6Ok9iamNGYWxsYmFja09iamVjdEltcChFeGVjU3Rh
dGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIE9iamNJbnN0YW5jZSogaSwg
Y29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lKQotICAgIC8vIEZJWE1FOiBkZXByZWNhdGVk
R2V0RE9NU3RydWN0dXJlIHVzZXMgdGhlIHByb3RvdHlwZSBvZmYgb2YgdGhlIHdyb25nIGdsb2Jh
bCBvYmplY3QKLSAgICA6IEpTT2JqZWN0V2l0aEdsb2JhbE9iamVjdChnbG9iYWxPYmplY3QsIGRl
cHJlY2F0ZWRHZXRET01TdHJ1Y3R1cmU8T2JqY0ZhbGxiYWNrT2JqZWN0SW1wPihleGVjKSkKK09i
amNGYWxsYmFja09iamVjdEltcDo6T2JqY0ZhbGxiYWNrT2JqZWN0SW1wKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogZG9tU3RydWN0dXJlLCBPYmpjSW5zdGFuY2UqIGks
IGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSkKKyAgICA6IEpTT2JqZWN0V2l0aEdsb2Jh
bE9iamVjdChnbG9iYWxPYmplY3QsIGRvbVN0cnVjdHVyZSkKICAgICAsIF9pbnN0YW5jZShpKQog
ICAgICwgX2l0ZW0ocHJvcGVydHlOYW1lKQogewpJbmRleDogU291cmNlL1dlYkNvcmUvYnJpZGdl
L3F0L3F0X2luc3RhbmNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9icmlkZ2Uv
cXQvcXRfaW5zdGFuY2UuY3BwCShyZXZpc2lvbiA5MjI4MykKKysrIFNvdXJjZS9XZWJDb3JlL2Jy
aWRnZS9xdC9xdF9pbnN0YW5jZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUyLDcgKzUyLDggQEAg
Y2xhc3MgUXRSdW50aW1lT2JqZWN0IDogcHVibGljIFJ1bnRpbWVPYgogcHVibGljOgogICAgIHN0
YXRpYyBRdFJ1bnRpbWVPYmplY3QqIGNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIFBhc3NSZWZQdHI8SW5zdGFuY2U+IGluc3RhbmNlKQogICAgIHsK
LSAgICAgICAgcmV0dXJuIG5ldyAoYWxsb2NhdGVDZWxsPFF0UnVudGltZU9iamVjdD4oKmV4ZWMt
PmhlYXAoKSkpIFF0UnVudGltZU9iamVjdChleGVjLCBnbG9iYWxPYmplY3QsIGluc3RhbmNlKTsK
KyAgICAgICAgU3RydWN0dXJlKiBkb21TdHJ1Y3R1cmUgPSBXZWJDb3JlOjpkZXByZWNhdGVkR2V0
RE9NU3RydWN0dXJlPFF0UnVudGltZU9iamVjdD4oZXhlYyk7CisgICAgICAgIHJldHVybiB2YWxp
ZGF0ZUFsbG9jPFF0UnVudGltZU9iamVjdD4oZXhlYy0+Z2xvYmFsRGF0YSgpLCBuZXcgKGFsbG9j
YXRlQ2VsbDxRdFJ1bnRpbWVPYmplY3Q+KCpleGVjLT5oZWFwKCkpKSBRdFJ1bnRpbWVPYmplY3Qo
ZXhlYywgZ2xvYmFsT2JqZWN0LCBkb21TdHJ1Y3R1cmUsIGluc3RhbmNlKSk7CiAgICAgfQogICAg
IAogICAgIHN0YXRpYyBjb25zdCBDbGFzc0luZm8gc19pbmZvOwpAQCAtNzQsMTMgKzc1LDEzIEBA
IHByb3RlY3RlZDoKICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBS
dW50aW1lT2JqZWN0OjpTdHJ1Y3R1cmVGbGFncyB8IE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW47CiAK
IHByaXZhdGU6Ci0gICAgUXRSdW50aW1lT2JqZWN0KEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0
KiwgUGFzc1JlZlB0cjxJbnN0YW5jZT4pOworICAgIFF0UnVudGltZU9iamVjdChFeGVjU3RhdGUq
LCBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIFBhc3NSZWZQdHI8SW5zdGFuY2U+KTsKIH07
CiAKIGNvbnN0IENsYXNzSW5mbyBRdFJ1bnRpbWVPYmplY3Q6OnNfaW5mbyA9IHsgIlF0UnVudGlt
ZU9iamVjdCIsICZSdW50aW1lT2JqZWN0OjpzX2luZm8sIDAsIDAgfTsKIAotUXRSdW50aW1lT2Jq
ZWN0OjpRdFJ1bnRpbWVPYmplY3QoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBQYXNzUmVmUHRyPEluc3RhbmNlPiBpbnN0YW5jZSkKLSAgICA6IFJ1bnRpbWVP
YmplY3QoZXhlYywgZ2xvYmFsT2JqZWN0LCBXZWJDb3JlOjpkZXByZWNhdGVkR2V0RE9NU3RydWN0
dXJlPFF0UnVudGltZU9iamVjdD4oZXhlYyksIGluc3RhbmNlKQorUXRSdW50aW1lT2JqZWN0OjpR
dFJ1bnRpbWVPYmplY3QoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBTdHJ1Y3R1cmUqIGRvbVN0cnVjdHVyZSwgUGFzc1JlZlB0cjxJbnN0YW5jZT4gaW5zdGFu
Y2UpCisgICAgOiBSdW50aW1lT2JqZWN0KGV4ZWMsIGdsb2JhbE9iamVjdCwgZG9tU3RydWN0dXJl
LCBpbnN0YW5jZSkKIHsKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvYnJpZGdlL3F0L3F0X3Bp
eG1hcHJ1bnRpbWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9xdC9x
dF9waXhtYXBydW50aW1lLmNwcAkocmV2aXNpb24gOTIyODMpCisrKyBTb3VyY2UvV2ViQ29yZS9i
cmlkZ2UvcXQvcXRfcGl4bWFwcnVudGltZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIwMCw3ICsy
MDAsOCBAQCBjbGFzcyBRdFBpeG1hcFJ1bnRpbWVPYmplY3QgOiBwdWJsaWMgUnVuCiBwdWJsaWM6
CiAgICAgc3RhdGljIFF0UGl4bWFwUnVudGltZU9iamVjdCogY3JlYXRlKEV4ZWNTdGF0ZSogZXhl
YywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUGFzc1JlZlB0cjxJbnN0YW5jZT4gaW5z
dGFuY2UpCiAgICAgewotICAgICAgICByZXR1cm4gbmV3IChhbGxvY2F0ZUNlbGw8UXRQaXhtYXBS
dW50aW1lT2JqZWN0PigqZXhlYy0+aGVhcCgpKSkgUXRQaXhtYXBSdW50aW1lT2JqZWN0KGV4ZWMs
IGdsb2JhbE9iamVjdCwgaW5zdGFuY2UpOworICAgICAgICBTdHJ1Y3R1cmUqIGRvbVN0cnVjdHVy
ZSA9IFdlYkNvcmU6OmRlcHJlY2F0ZWRHZXRET01TdHJ1Y3R1cmU8UXRQaXhtYXBSdW50aW1lT2Jq
ZWN0PihleGVjKTsKKyAgICAgICAgcmV0dXJuIHZhbGlkYXRlQWxsb2M8UXRQaXhtYXBSdW50aW1l
T2JqZWN0PihleGVjLT5nbG9iYWxEYXRhKCksIG5ldyAoYWxsb2NhdGVDZWxsPFF0UGl4bWFwUnVu
dGltZU9iamVjdD4oKmV4ZWMtPmhlYXAoKSkpIFF0UGl4bWFwUnVudGltZU9iamVjdChleGVjLCBn
bG9iYWxPYmplY3QsIGRvbVN0cnVjdHVyZSwgaW5zdGFuY2UpKTsKICAgICB9CiAKICAgICBzdGF0
aWMgY29uc3QgQ2xhc3NJbmZvIHNfaW5mbzsKQEAgLTIxNCwxMSArMjE1LDExIEBAIHByb3RlY3Rl
ZDoKICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBSdW50aW1lT2Jq
ZWN0OjpTdHJ1Y3R1cmVGbGFncyB8IE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW47CiAKIHByaXZhdGU6
Ci0gICAgUXRQaXhtYXBSdW50aW1lT2JqZWN0KEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0Kiwg
UGFzc1JlZlB0cjxJbnN0YW5jZT4pOworICAgIFF0UGl4bWFwUnVudGltZU9iamVjdChFeGVjU3Rh
dGUqLCBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIFBhc3NSZWZQdHI8SW5zdGFuY2U+KTsK
IH07CiAKLVF0UGl4bWFwUnVudGltZU9iamVjdDo6UXRQaXhtYXBSdW50aW1lT2JqZWN0KEV4ZWNT
dGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUGFzc1JlZlB0cjxJbnN0
YW5jZT4gaW5zdGFuY2UpCi0gICAgOiBSdW50aW1lT2JqZWN0KGV4ZWMsIGdsb2JhbE9iamVjdCwg
V2ViQ29yZTo6ZGVwcmVjYXRlZEdldERPTVN0cnVjdHVyZTxRdFBpeG1hcFJ1bnRpbWVPYmplY3Q+
KGV4ZWMpLCBpbnN0YW5jZSkKK1F0UGl4bWFwUnVudGltZU9iamVjdDo6UXRQaXhtYXBSdW50aW1l
T2JqZWN0KEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3Ry
dWN0dXJlKiBkb21TdHJ1Y3R1cmUsIFBhc3NSZWZQdHI8SW5zdGFuY2U+IGluc3RhbmNlKQorICAg
IDogUnVudGltZU9iamVjdChleGVjLCBnbG9iYWxPYmplY3QsIGRvbVN0cnVjdHVyZSwgaW5zdGFu
Y2UpCiB7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9xdC9xdF9ydW50aW1lLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9icmlkZ2UvcXQvcXRfcnVudGltZS5jcHAJ
KHJldmlzaW9uIDkyMjgzKQorKysgU291cmNlL1dlYkNvcmUvYnJpZGdlL3F0L3F0X3J1bnRpbWUu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDA2LDggKzEwMDYsOCBAQCBKU1ZhbHVlIGNvbnZlcnRR
VmFyaWFudFRvVmFsdWUoRXhlY1N0YXRlCiAKIGNvbnN0IENsYXNzSW5mbyBRdFJ1bnRpbWVNZXRo
b2Q6OnNfaW5mbyA9IHsgIlF0UnVudGltZU1ldGhvZCIsICZJbnRlcm5hbEZ1bmN0aW9uOjpzX2lu
Zm8sIDAsIDAgfTsKIAotUXRSdW50aW1lTWV0aG9kOjpRdFJ1bnRpbWVNZXRob2QoUXRSdW50aW1l
TWV0aG9kRGF0YSogZGQsIEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgaWRlbnQs
IFBhc3NSZWZQdHI8UXRJbnN0YW5jZT4gaW5zdCkKLSAgICA6IEludGVybmFsRnVuY3Rpb24oJmV4
ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLCBkZXByZWNhdGVk
R2V0RE9NU3RydWN0dXJlPFF0UnVudGltZU1ldGhvZD4oZXhlYyksIGlkZW50KQorUXRSdW50aW1l
TWV0aG9kOjpRdFJ1bnRpbWVNZXRob2QoUXRSdW50aW1lTWV0aG9kRGF0YSogZGQsIEV4ZWNTdGF0
ZSogZXhlYywgU3RydWN0dXJlKiBkb21TdHJ1Y3R1cmUsIGNvbnN0IElkZW50aWZpZXImIGlkZW50
LCBQYXNzUmVmUHRyPFF0SW5zdGFuY2U+IGluc3QpCisgICAgOiBJbnRlcm5hbEZ1bmN0aW9uKGV4
ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSwgZG9tU3RydWN0dXJlKQogICAgICwgZF9wdHIoZGQp
CiB7CiAgICAgUVdfRChRdFJ1bnRpbWVNZXRob2QpOwpAQCAtMTQyMCw4ICsxNDIwLDggQEAgc3Rh
dGljIGludCBmaW5kU2lnbmFsSW5kZXgoY29uc3QgUU1ldGFPYgogICAgIHJldHVybiBpbmRleDsK
IH0KIAotUXRSdW50aW1lTWV0YU1ldGhvZDo6UXRSdW50aW1lTWV0YU1ldGhvZChFeGVjU3RhdGUq
IGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBQYXNzUmVmUHRyPFF0SW5zdGFuY2U+IGlu
c3QsIGludCBpbmRleCwgY29uc3QgUUJ5dGVBcnJheSYgc2lnbmF0dXJlLCBib29sIGFsbG93UHJp
dmF0ZSkKLSAgICA6IFF0UnVudGltZU1ldGhvZCAobmV3IFF0UnVudGltZU1ldGFNZXRob2REYXRh
KCksIGV4ZWMsIGlkZW50LCBpbnN0KQorUXRSdW50aW1lTWV0YU1ldGhvZDo6UXRSdW50aW1lTWV0
YU1ldGhvZChFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZSogZG9tU3RydWN0dXJlLCBjb25zdCBJ
ZGVudGlmaWVyJiBpZGVudCwgUGFzc1JlZlB0cjxRdEluc3RhbmNlPiBpbnN0LCBpbnQgaW5kZXgs
IGNvbnN0IFFCeXRlQXJyYXkmIHNpZ25hdHVyZSwgYm9vbCBhbGxvd1ByaXZhdGUpCisgICAgOiBR
dFJ1bnRpbWVNZXRob2QgKG5ldyBRdFJ1bnRpbWVNZXRhTWV0aG9kRGF0YSgpLCBleGVjLCBkb21T
dHJ1Y3R1cmUsIGlkZW50LCBpbnN0KQogewogICAgIFFXX0QoUXRSdW50aW1lTWV0YU1ldGhvZCk7
CiAgICAgZC0+bV9zaWduYXR1cmUgPSBzaWduYXR1cmU7CkBAIC0xNTY0LDggKzE1NjQsOCBAQCBK
U1ZhbHVlIFF0UnVudGltZU1ldGFNZXRob2Q6OmRpc2Nvbm5lY3RHCiAKIFFNdWx0aU1hcDxRT2Jq
ZWN0KiwgUXRDb25uZWN0aW9uT2JqZWN0Kj4gUXRSdW50aW1lQ29ubmVjdGlvbk1ldGhvZDo6Y29u
bmVjdGlvbnM7CiAKLVF0UnVudGltZUNvbm5lY3Rpb25NZXRob2Q6OlF0UnVudGltZUNvbm5lY3Rp
b25NZXRob2QoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgYm9vbCBp
c0Nvbm5lY3QsIFBhc3NSZWZQdHI8UXRJbnN0YW5jZT4gaW5zdCwgaW50IGluZGV4LCBjb25zdCBR
Qnl0ZUFycmF5JiBzaWduYXR1cmUpCi0gICAgOiBRdFJ1bnRpbWVNZXRob2QgKG5ldyBRdFJ1bnRp
bWVDb25uZWN0aW9uTWV0aG9kRGF0YSgpLCBleGVjLCBpZGVudCwgaW5zdCkKK1F0UnVudGltZUNv
bm5lY3Rpb25NZXRob2Q6OlF0UnVudGltZUNvbm5lY3Rpb25NZXRob2QoRXhlY1N0YXRlKiBleGVj
LCBTdHJ1Y3R1cmUqIGRvbVN0cnVjdHVyZSwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIGJvb2wg
aXNDb25uZWN0LCBQYXNzUmVmUHRyPFF0SW5zdGFuY2U+IGluc3QsIGludCBpbmRleCwgY29uc3Qg
UUJ5dGVBcnJheSYgc2lnbmF0dXJlKQorICAgIDogUXRSdW50aW1lTWV0aG9kIChuZXcgUXRSdW50
aW1lQ29ubmVjdGlvbk1ldGhvZERhdGEoKSwgZXhlYywgZG9tU3RydWN0dXJlLCBpZGVudCwgaW5z
dCkKIHsKICAgICBRV19EKFF0UnVudGltZUNvbm5lY3Rpb25NZXRob2QpOwogCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9icmlkZ2UvcXQvcXRfcnVudGltZS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2JyaWRnZS9xdC9xdF9ydW50aW1lLmgJKHJldmlzaW9uIDkyMjgzKQorKysgU291cmNl
L1dlYkNvcmUvYnJpZGdlL3F0L3F0X3J1bnRpbWUuaAkod29ya2luZyBjb3B5KQpAQCAtMjEsNiAr
MjEsNyBAQAogI2RlZmluZSBCSU5ESU5HU19RVF9SVU5USU1FX0hfCiAKICNpbmNsdWRlICJCcmlk
Z2VKU0MuaCIKKyNpbmNsdWRlICJKU0RPTUJpbmRpbmcuaCIKICNpbmNsdWRlICJKYXZhU2NyaXB0
LmgiCiAjaW5jbHVkZSAiV2Vhay5oIgogI2luY2x1ZGUgInF0X2luc3RhbmNlLmgiCkBAIC0xNDMs
NyArMTQ0LDcgQEAgcHJvdGVjdGVkOgogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1
cmVGbGFncyA9IE92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCB8IE92ZXJyaWRlc0dldFByb3Bl
cnR5TmFtZXMgfCBJbnRlcm5hbEZ1bmN0aW9uOjpTdHJ1Y3R1cmVGbGFncyB8IE92ZXJyaWRlc1Zp
c2l0Q2hpbGRyZW47CiAKICAgICBRdFJ1bnRpbWVNZXRob2REYXRhICpkX2Z1bmMoKSBjb25zdCB7
cmV0dXJuIGRfcHRyO30KLSAgICBRdFJ1bnRpbWVNZXRob2QoUXRSdW50aW1lTWV0aG9kRGF0YSAq
ZGQsIEV4ZWNTdGF0ZSAqZXhlYywgY29uc3QgSWRlbnRpZmllciAmbiwgUGFzc1JlZlB0cjxRdElu
c3RhbmNlPiBpbnN0KTsKKyAgICBRdFJ1bnRpbWVNZXRob2QoUXRSdW50aW1lTWV0aG9kRGF0YSAq
ZGQsIEV4ZWNTdGF0ZSAqLCBTdHJ1Y3R1cmUqLCBjb25zdCBJZGVudGlmaWVyICZuYW1lLCBQYXNz
UmVmUHRyPFF0SW5zdGFuY2U+KTsKICAgICBRdFJ1bnRpbWVNZXRob2REYXRhICpkX3B0cjsKIH07
CiAKQEAgLTE1Miw3ICsxNTMsOCBAQCBjbGFzcyBRdFJ1bnRpbWVNZXRhTWV0aG9kIDogcHVibGlj
IFF0UnVuCiBwdWJsaWM6CiAgICAgc3RhdGljIFF0UnVudGltZU1ldGFNZXRob2QqIGNyZWF0ZShF
eGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIG4sIFBhc3NSZWZQdHI8UXRJbnN0YW5j
ZT4gaW5zdCwgaW50IGluZGV4LCBjb25zdCBRQnl0ZUFycmF5JiBzaWduYXR1cmUsIGJvb2wgYWxs
b3dQcml2YXRlKQogICAgIHsKLSAgICAgICAgcmV0dXJuIG5ldyAoYWxsb2NhdGVDZWxsPFF0UnVu
dGltZU1ldGFNZXRob2Q+KCpleGVjLT5oZWFwKCkpKSBRdFJ1bnRpbWVNZXRhTWV0aG9kKGV4ZWMs
IG4sIGluc3QsIGluZGV4LCBzaWduYXR1cmUsIGFsbG93UHJpdmF0ZSk7CisgICAgICAgIFN0cnVj
dHVyZSogZG9tU3RydWN0dXJlID0gV2ViQ29yZTo6ZGVwcmVjYXRlZEdldERPTVN0cnVjdHVyZTxR
dFJ1bnRpbWVNZXRob2Q+KGV4ZWMpOworICAgICAgICByZXR1cm4gdmFsaWRhdGVBbGxvYzxRdFJ1
bnRpbWVNZXRhTWV0aG9kPihleGVjLT5nbG9iYWxEYXRhKCksIG5ldyAoYWxsb2NhdGVDZWxsPFF0
UnVudGltZU1ldGFNZXRob2Q+KCpleGVjLT5oZWFwKCkpKSBRdFJ1bnRpbWVNZXRhTWV0aG9kKGV4
ZWMsIGRvbVN0cnVjdHVyZSwgbiwgaW5zdCwgaW5kZXgsIHNpZ25hdHVyZSwgYWxsb3dQcml2YXRl
KSk7CiAgICAgfQogCiAgICAgdmlydHVhbCBib29sIGdldE93blByb3BlcnR5U2xvdChFeGVjU3Rh
dGUgKiwgY29uc3QgSWRlbnRpZmllciYsIFByb3BlcnR5U2xvdCYpOwpAQCAtMTY1LDcgKzE2Nyw3
IEBAIHByb3RlY3RlZDoKICAgICBRdFJ1bnRpbWVNZXRhTWV0aG9kRGF0YSogZF9mdW5jKCkgY29u
c3Qge3JldHVybiByZWludGVycHJldF9jYXN0PFF0UnVudGltZU1ldGFNZXRob2REYXRhKj4oZF9w
dHIpO30KIAogcHJpdmF0ZToKLSAgICBRdFJ1bnRpbWVNZXRhTWV0aG9kKEV4ZWNTdGF0ZSosIGNv
bnN0IElkZW50aWZpZXImLCBQYXNzUmVmUHRyPFF0SW5zdGFuY2U+LCBpbnQgaW5kZXgsIGNvbnN0
IFFCeXRlQXJyYXkmLCBib29sIGFsbG93UHJpdmF0ZSk7CisgICAgUXRSdW50aW1lTWV0YU1ldGhv
ZChFeGVjU3RhdGUqLCBTdHJ1Y3R1cmUqLCBjb25zdCBJZGVudGlmaWVyJiwgUGFzc1JlZlB0cjxR
dEluc3RhbmNlPiwgaW50IGluZGV4LCBjb25zdCBRQnl0ZUFycmF5JiwgYm9vbCBhbGxvd1ByaXZh
dGUpOwogCiAgICAgdmlydHVhbCBDYWxsVHlwZSBnZXRDYWxsRGF0YShDYWxsRGF0YSYpOwogICAg
IHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGwoRXhlY1N0YXRlKiBleGVj
KTsKQEAgLTE4MCw3ICsxODIsOCBAQCBjbGFzcyBRdFJ1bnRpbWVDb25uZWN0aW9uTWV0aG9kIDog
cHVibGljCiBwdWJsaWM6CiAgICAgc3RhdGljIFF0UnVudGltZUNvbm5lY3Rpb25NZXRob2QqIGNy
ZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIG4sIGJvb2wgaXNDb25uZWN0
LCBQYXNzUmVmUHRyPFF0SW5zdGFuY2U+IGluc3QsIGludCBpbmRleCwgY29uc3QgUUJ5dGVBcnJh
eSYgc2lnbmF0dXJlKQogICAgIHsKLSAgICAgICAgcmV0dXJuIG5ldyAoYWxsb2NhdGVDZWxsPFF0
UnVudGltZUNvbm5lY3Rpb25NZXRob2Q+KCpleGVjLT5oZWFwKCkpKSBRdFJ1bnRpbWVDb25uZWN0
aW9uTWV0aG9kKGV4ZWMsIG4sIGlzQ29ubmVjdCwgaW5zdCwgaW5kZXgsIHNpZ25hdHVyZSk7Cisg
ICAgICAgIFN0cnVjdHVyZSogZG9tU3RydWN0dXJlID0gV2ViQ29yZTo6ZGVwcmVjYXRlZEdldERP
TVN0cnVjdHVyZTxRdFJ1bnRpbWVNZXRob2Q+KGV4ZWMpOworICAgICAgICByZXR1cm4gdmFsaWRh
dGVBbGxvYzxRdFJ1bnRpbWVDb25uZWN0aW9uTWV0aG9kPihleGVjLT5nbG9iYWxEYXRhKCksIG5l
dyAoYWxsb2NhdGVDZWxsPFF0UnVudGltZUNvbm5lY3Rpb25NZXRob2Q+KCpleGVjLT5oZWFwKCkp
KSBRdFJ1bnRpbWVDb25uZWN0aW9uTWV0aG9kKGV4ZWMsIGRvbVN0cnVjdHVyZSwgbiwgaXNDb25u
ZWN0LCBpbnN0LCBpbmRleCwgc2lnbmF0dXJlKSk7CiAgICAgfQogCiAgICAgdmlydHVhbCBib29s
IGdldE93blByb3BlcnR5U2xvdChFeGVjU3RhdGUgKiwgY29uc3QgSWRlbnRpZmllciYsIFByb3Bl
cnR5U2xvdCYpOwpAQCAtMTkxLDcgKzE5NCw3IEBAIHByb3RlY3RlZDoKICAgICBRdFJ1bnRpbWVD
b25uZWN0aW9uTWV0aG9kRGF0YSogZF9mdW5jKCkgY29uc3Qge3JldHVybiByZWludGVycHJldF9j
YXN0PFF0UnVudGltZUNvbm5lY3Rpb25NZXRob2REYXRhKj4oZF9wdHIpO30KIAogcHJpdmF0ZToK
LSAgICBRdFJ1bnRpbWVDb25uZWN0aW9uTWV0aG9kKEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZp
ZXImLCBib29sIGlzQ29ubmVjdCwgUGFzc1JlZlB0cjxRdEluc3RhbmNlPiwgaW50IGluZGV4LCBj
b25zdCBRQnl0ZUFycmF5Jik7CisgICAgUXRSdW50aW1lQ29ubmVjdGlvbk1ldGhvZChFeGVjU3Rh
dGUqLCBTdHJ1Y3R1cmUqLCBjb25zdCBJZGVudGlmaWVyJiwgYm9vbCBpc0Nvbm5lY3QsIFBhc3NS
ZWZQdHI8UXRJbnN0YW5jZT4sIGludCBpbmRleCwgY29uc3QgUUJ5dGVBcnJheSYpOwogCiAgICAg
dmlydHVhbCBDYWxsVHlwZSBnZXRDYWxsRGF0YShDYWxsRGF0YSYpOwogICAgIHN0YXRpYyBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGwoRXhlY1N0YXRlKiBleGVjKTsKSW5kZXg6IFNv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9DaGFu
Z2VMb2cJKHJldmlzaW9uIDkyMjgzKQorKysgU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMjMgQEAKKzIwMTEtMDgtMDMgIE1hcmsgSGFobmVuYmVyZyAg
PG1oYWhuZW5iZXJnQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgY2hlY2tzIHRvIGVuc3VyZSBh
bGxvY2F0aW9uIGRvZXMgbm90IHRha2UgcGxhY2UgZHVyaW5nIGluaXRpYWxpemF0aW9uIG9mIEdD
LW1hbmFnZWQgb2JqZWN0cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NjUyODgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBBZGRlZCB0aGUgdmFsaWRhdGVBbGxvYyBjYWxsIHdoaWNoLCB3aGVuIEdDX1ZBTElE
QVRJT04gaXMgZW5hYmxlZCwgbWFrZXMgc3VyZSB0aGF0IG5vIGFsbG9jYXRpb25zIAorICAgICAg
ICBvY2N1ciB3aGlsZSB3ZSdyZSBpbml0aWFsaXppbmcgYW5vdGhlciBvYmplY3QgaW4gb3JkZXIg
dG8gcHJldmVudCBnYXJiYWdlIGNvbGxlY3Rpb24gZnJvbSAKKyAgICAgICAgb2NjdXJyaW5nIGR1
cmluZyBpbml0aWFsaXphdGlvbiwgd2hpY2ggaXMgdW5kZWZpbmVkLiAgQWxzbyBwdWxsZWQgb3V0
IGFueSBhbGxvY2F0aW9uIGRvbmUgaW4gCisgICAgICAgIGNvbnN0cnVjdG9ycyBjYWxsZWQgd2l0
aCBhbGxvY2F0ZUNlbGwgaW50byB0aGUgc3RhdGljIGNyZWF0ZSBtZXRob2QgaW4gYWxsIHBsYWNl
cyB3aGVyZSBpdCB3YXMgCisgICAgICAgIHBvc3NpYmxlIHdpdGhvdXQgbWFqb3IgcmVzdHJ1Y3R1
cmluZy4KKworICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9KU05QTWV0aG9k
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6SlNOUE1ldGhvZDo6SlNOUE1ldGhvZCk6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL0pTTlBNZXRob2QuaDoKKyAgICAgICAgKFdl
YktpdDo6SlNOUE1ldGhvZDo6Y3JlYXRlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMv
TmV0c2NhcGUvSlNOUE9iamVjdC5oOgorICAgICAgICAoV2ViS2l0OjpKU05QT2JqZWN0OjpjcmVh
dGUpOgorCiAyMDExLTA4LTAyICBDYWlvIE1hcmNlbG8gZGUgT2xpdmVpcmEgRmlsaG8gIDxjYWlv
Lm9saXZlaXJhQG9wZW5ib3NzYS5vcmc+CiAKICAgICAgICAgW1F0XSBbV0syXSBFeHBvc2Ugd2Vi
IHZpZXcgY2xhc3NlcyB0byBRTUwKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1
Z2lucy9OZXRzY2FwZS9KU05QTWV0aG9kLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvSlNOUE1ldGhvZC5jcHAJKHJldmlzaW9uIDky
MjgzKQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL0pTTlBN
ZXRob2QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MSw4ICs0MSw4IEBAIG5hbWVzcGFjZSBXZWJL
aXQgewogCiBjb25zdCBDbGFzc0luZm8gSlNOUE1ldGhvZDo6c19pbmZvID0geyAiTlBNZXRob2Qi
LCAmSW50ZXJuYWxGdW5jdGlvbjo6c19pbmZvLCAwLCAwIH07CiAKLUpTTlBNZXRob2Q6OkpTTlBN
ZXRob2QoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25z
dCBJZGVudGlmaWVyJiBuYW1lLCBOUElkZW50aWZpZXIgbnBJZGVudGlmaWVyKQotICAgIDogSW50
ZXJuYWxGdW5jdGlvbigmZXhlYy0+Z2xvYmFsRGF0YSgpLCBnbG9iYWxPYmplY3QsIGNyZWF0ZVN0
cnVjdHVyZShleGVjLT5nbG9iYWxEYXRhKCksIGdsb2JhbE9iamVjdC0+ZnVuY3Rpb25Qcm90b3R5
cGUoKSksIG5hbWUpCitKU05QTWV0aG9kOjpKU05QTWV0aG9kKEV4ZWNTdGF0ZSogZXhlYywgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgTlBJZGVudGlmaWVyIG5wSWRlbnRpZmllcikKKyAg
ICA6IEludGVybmFsRnVuY3Rpb24oZ2xvYmFsT2JqZWN0LCBjcmVhdGVTdHJ1Y3R1cmUoZXhlYy0+
Z2xvYmFsRGF0YSgpLCBnbG9iYWxPYmplY3QtPmZ1bmN0aW9uUHJvdG90eXBlKCkpKQogICAgICwg
bV9ucElkZW50aWZpZXIobnBJZGVudGlmaWVyKQogewogICAgIEFTU0VSVChpbmhlcml0cygmc19p
bmZvKSk7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUv
SlNOUE1ldGhvZC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1
Z2lucy9OZXRzY2FwZS9KU05QTWV0aG9kLmgJKHJldmlzaW9uIDkyMjgzKQorKysgU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL0pTTlBNZXRob2QuaAkod29ya2luZyBj
b3B5KQpAQCAtMzUsOSArMzUsMTEgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAvLyBBIEpTT2JqZWN0
IHRoYXQgd3JhcHMgYW4gTlBNZXRob2QuCiBjbGFzcyBKU05QTWV0aG9kIDogcHVibGljIEpTQzo6
SW50ZXJuYWxGdW5jdGlvbiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIEpTTlBNZXRob2QqIGNyZWF0
ZShKU0M6OkV4ZWNTdGF0ZSogZXhlYywgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBjb25zdCBKU0M6OklkZW50aWZpZXImIGlkZW50LCBOUElkZW50aWZpZXIgbnBJZGVudCkKKyAg
ICBzdGF0aWMgSlNOUE1ldGhvZCogY3JlYXRlKEpTQzo6RXhlY1N0YXRlKiBleGVjLCBKU0M6OkpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IEpTQzo6SWRlbnRpZmllciYgbmFtZSwg
TlBJZGVudGlmaWVyIG5wSWRlbnQpCiAgICAgewotICAgICAgICByZXR1cm4gbmV3IChKU0M6OmFs
bG9jYXRlQ2VsbDxKU05QTWV0aG9kPigqZXhlYy0+aGVhcCgpKSkgSlNOUE1ldGhvZChleGVjLCBn
bG9iYWxPYmplY3QsIGlkZW50LCBucElkZW50KTsKKyAgICAgICAgSlNOUE1ldGhvZCogbWV0aG9k
ID0gSlNDOjp2YWxpZGF0ZUFsbG9jPEpTTlBNZXRob2Q+KGV4ZWMtPmdsb2JhbERhdGEoKSwgbmV3
IChKU0M6OmFsbG9jYXRlQ2VsbDxKU05QTWV0aG9kPigqZXhlYy0+aGVhcCgpKSkgSlNOUE1ldGhv
ZChleGVjLCBnbG9iYWxPYmplY3QsIG5wSWRlbnQpKTsKKyAgICAgICAgbWV0aG9kLT5pbml0UHJv
cGVydGllcyhleGVjLT5nbG9iYWxEYXRhKCksIG5hbWUpOworICAgICAgICByZXR1cm4gbWV0aG9k
OwogICAgIH0KIAogICAgIHN0YXRpYyBjb25zdCBKU0M6OkNsYXNzSW5mbyBzX2luZm87CkBAIC00
NSw3ICs0Nyw3IEBAIHB1YmxpYzoKICAgICBOUElkZW50aWZpZXIgbnBJZGVudGlmaWVyKCkgY29u
c3QgeyByZXR1cm4gbV9ucElkZW50aWZpZXI7IH0KIAogcHJpdmF0ZTogICAgCi0gICAgSlNOUE1l
dGhvZChKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNHbG9iYWxPYmplY3QqLCBjb25zdCBKU0M6Oklk
ZW50aWZpZXImLCBOUElkZW50aWZpZXIpOworICAgIEpTTlBNZXRob2QoSlNDOjpFeGVjU3RhdGUq
LCBKU0M6OkpTR2xvYmFsT2JqZWN0KiwgTlBJZGVudGlmaWVyKTsKIAogICAgIHN0YXRpYyBKU0M6
OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6SlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRh
LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9KU05QT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL0pTTlBPYmplY3QuaAkocmV2
aXNpb24gOTIyODMpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2Nh
cGUvSlNOUE9iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC00MSw3ICs0MSw3IEBAIGNsYXNzIEpT
TlBPYmplY3QgOiBwdWJsaWMgSlNDOjpKU09iamVjdFcKIHB1YmxpYzoKICAgICBzdGF0aWMgSlNO
UE9iamVjdCogY3JlYXRlKEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgTlBSdW50
aW1lT2JqZWN0TWFwKiBvYmplY3RNYXAsIE5QT2JqZWN0KiBucE9iamVjdCkKICAgICB7Ci0gICAg
ICAgIHJldHVybiBuZXcgKEpTQzo6YWxsb2NhdGVDZWxsPEpTTlBPYmplY3Q+KGdsb2JhbE9iamVj
dC0+Z2xvYmFsRGF0YSgpLmhlYXApKSBKU05QT2JqZWN0KGdsb2JhbE9iamVjdCwgb2JqZWN0TWFw
LCBucE9iamVjdCk7CisgICAgICAgIHJldHVybiBKU0M6OnZhbGlkYXRlQWxsb2M8SlNOUE9iamVj
dD4oZ2xvYmFsT2JqZWN0LT5nbG9iYWxEYXRhKCksIG5ldyAoSlNDOjphbGxvY2F0ZUNlbGw8SlNO
UE9iamVjdD4oZ2xvYmFsT2JqZWN0LT5nbG9iYWxEYXRhKCkuaGVhcCkpIEpTTlBPYmplY3QoZ2xv
YmFsT2JqZWN0LCBvYmplY3RNYXAsIG5wT2JqZWN0KSk7CiAgICAgfQogCiAgICAgfkpTTlBPYmpl
Y3QoKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cJKHJldmlzaW9uIDkyMjgzKQorKysgU291cmNlL1dl
YktpdC9tYWMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjQgQEAKKzIwMTEt
MDgtMDMgIE1hcmsgSGFobmVuYmVyZyAgPG1oYWhuZW5iZXJnQGFwcGxlLmNvbT4KKworICAgICAg
ICBBZGQgY2hlY2tzIHRvIGVuc3VyZSBhbGxvY2F0aW9uIGRvZXMgbm90IHRha2UgcGxhY2UgZHVy
aW5nIGluaXRpYWxpemF0aW9uIG9mIEdDLW1hbmFnZWQgb2JqZWN0cworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjUyODgKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRlZCB0aGUgdmFsaWRhdGVBbGxvYyBj
YWxsIHdoaWNoLCB3aGVuIEdDX1ZBTElEQVRJT04gaXMgZW5hYmxlZCwgbWFrZXMgc3VyZSB0aGF0
IG5vIGFsbG9jYXRpb25zIAorICAgICAgICBvY2N1ciB3aGlsZSB3ZSdyZSBpbml0aWFsaXppbmcg
YW5vdGhlciBvYmplY3QgaW4gb3JkZXIgdG8gcHJldmVudCBnYXJiYWdlIGNvbGxlY3Rpb24gZnJv
bSAKKyAgICAgICAgb2NjdXJyaW5nIGR1cmluZyBpbml0aWFsaXphdGlvbiwgd2hpY2ggaXMgdW5k
ZWZpbmVkLiAgQWxzbyBwdWxsZWQgb3V0IGFueSBhbGxvY2F0aW9uIGRvbmUgaW4gCisgICAgICAg
IGNvbnN0cnVjdG9ycyBjYWxsZWQgd2l0aCBhbGxvY2F0ZUNlbGwgaW50byB0aGUgc3RhdGljIGNy
ZWF0ZSBtZXRob2QgaW4gYWxsIHBsYWNlcyB3aGVyZSBpdCB3YXMgCisgICAgICAgIHBvc3NpYmxl
IHdpdGhvdXQgbWFqb3IgcmVzdHJ1Y3R1cmluZy4KKworICAgICAgICAqIFBsdWdpbnMvSG9zdGVk
L1Byb3h5SW5zdGFuY2UubW06CisgICAgICAgIChXZWJLaXQ6OlByb3h5UnVudGltZU1ldGhvZDo6
Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6UHJveHlSdW50aW1lTWV0aG9kOjpQcm94eVJ1bnRp
bWVNZXRob2QpOgorICAgICAgICAqIFBsdWdpbnMvSG9zdGVkL1Byb3h5UnVudGltZU9iamVjdC5o
OgorICAgICAgICAoV2ViS2l0OjpQcm94eVJ1bnRpbWVPYmplY3Q6OmNyZWF0ZSk6CisgICAgICAg
ICogUGx1Z2lucy9Ib3N0ZWQvUHJveHlSdW50aW1lT2JqZWN0Lm1tOgorICAgICAgICAoV2ViS2l0
OjpQcm94eVJ1bnRpbWVPYmplY3Q6OlByb3h5UnVudGltZU9iamVjdCk6CisKIDIwMTEtMDgtMDMg
IFBhdmVsIEZlbGRtYW4gIDxwZmVsZG1hbkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgV2ViIElu
c3BlY3RvcjogcmVtb3ZlIE5vZGUgcGFyYW1ldGVyIGZyb20gdGhlIEluc3BlY3RvckNsaWVudDo6
aGlnaGxpZ2h0CkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL0hvc3RlZC9Qcm94eUlu
c3RhbmNlLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvSG9zdGVk
L1Byb3h5SW5zdGFuY2UubW0JKHJldmlzaW9uIDkyMjgzKQorKysgU291cmNlL1dlYktpdC9tYWMv
UGx1Z2lucy9Ib3N0ZWQvUHJveHlJbnN0YW5jZS5tbQkod29ya2luZyBjb3B5KQpAQCAtMTgxLDcg
KzE4MSwxMCBAQCBjbGFzcyBQcm94eVJ1bnRpbWVNZXRob2QgOiBwdWJsaWMgUnVudGltCiBwdWJs
aWM6CiAgICAgc3RhdGljIFByb3h5UnVudGltZU1ldGhvZCogY3JlYXRlKEV4ZWNTdGF0ZSogZXhl
YywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgSWRlbnRpZmllciYgbmFtZSwg
QmluZGluZ3M6Ok1ldGhvZExpc3QmIGxpc3QpCiAgICAgewotICAgICAgICByZXR1cm4gbmV3IChh
bGxvY2F0ZUNlbGw8UHJveHlSdW50aW1lTWV0aG9kPigqZXhlYy0+aGVhcCgpKSkgUHJveHlSdW50
aW1lTWV0aG9kKGV4ZWMsIGdsb2JhbE9iamVjdCwgbmFtZSwgbGlzdCk7CisgICAgICAgIFN0cnVj
dHVyZSogZG9tU3RydWN0dXJlID0gZGVwcmVjYXRlZEdldERPTVN0cnVjdHVyZTxQcm94eVJ1bnRp
bWVNZXRob2Q+KGV4ZWMpOworICAgICAgICBQcm94eVJ1bnRpbWVNZXRob2QqIG1ldGhvZCA9IHZh
bGlkYXRlQWxsb2M8UHJveHlSdW50aW1lTWV0aG9kPihleGVjLT5nbG9iYWxEYXRhKCksIG5ldyAo
YWxsb2NhdGVDZWxsPFByb3h5UnVudGltZU1ldGhvZD4oKmV4ZWMtPmhlYXAoKSkpIFByb3h5UnVu
dGltZU1ldGhvZChnbG9iYWxPYmplY3QsIGRvbVN0cnVjdHVyZSwgbGlzdCkpOworICAgICAgICBt
ZXRob2QtPmluaXRQcm9wZXJ0aWVzKGV4ZWMtPmdsb2JhbERhdGEoKSwgbmFtZSk7CisgICAgICAg
IHJldHVybiBtZXRob2Q7CiAgICAgfQogCiAgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3Ry
dWN0dXJlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNWYWx1ZSBwcm90b3R5cGUpCkBAIC0x
OTIsMTAgKzE5NSwxMCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0IENsYXNzSW5mbyBzX2lu
Zm87CiAKIHByaXZhdGU6Ci0gICAgUHJveHlSdW50aW1lTWV0aG9kKEV4ZWNTdGF0ZSogZXhlYywg
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgSWRlbnRpZmllciYgbmFtZSwgQmlu
ZGluZ3M6Ok1ldGhvZExpc3QmIGxpc3QpCisgICAgUHJveHlSdW50aW1lTWV0aG9kKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogZG9tU3RydWN0dXJlLCBCaW5kaW5nczo6
TWV0aG9kTGlzdCYgbGlzdCkKICAgICAgICAgLy8gRklYTUU6IGRlcHJlY2F0ZWRHZXRET01TdHJ1
Y3R1cmUgdXNlcyB0aGUgcHJvdG90eXBlIG9mZiBvZiB0aGUgd3JvbmcgZ2xvYmFsIG9iamVjdAog
ICAgICAgICAvLyBleGVjLWdsb2JhbERhdGEoKSBpcyBhbHNvIGxpa2VseSB3cm9uZy4KLSAgICAg
ICAgOiBSdW50aW1lTWV0aG9kKGV4ZWMsIGdsb2JhbE9iamVjdCwgZGVwcmVjYXRlZEdldERPTVN0
cnVjdHVyZTxQcm94eVJ1bnRpbWVNZXRob2Q+KGV4ZWMpLCBuYW1lLCBsaXN0KQorICAgICAgICA6
IFJ1bnRpbWVNZXRob2QoZ2xvYmFsT2JqZWN0LCBkb21TdHJ1Y3R1cmUsIGxpc3QpCiAgICAgewog
ICAgICAgICBBU1NFUlQoaW5oZXJpdHMoJnNfaW5mbykpOwogICAgIH0KSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvbWFjL1BsdWdpbnMvSG9zdGVkL1Byb3h5UnVudGltZU9iamVjdC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvSG9zdGVkL1Byb3h5UnVudGltZU9iamVjdC5o
CShyZXZpc2lvbiA5MjI4MykKKysrIFNvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvSG9zdGVkL1By
b3h5UnVudGltZU9iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw2ICsyOCw3IEBACiAjaWZu
ZGVmIFByb3h5UnVudGltZU9iamVjdF9oCiAjZGVmaW5lIFByb3h5UnVudGltZU9iamVjdF9oCiAK
KyNpbmNsdWRlICJXZWJDb3JlL0pTRE9NQmluZGluZy5oIgogI2luY2x1ZGUgPFdlYkNvcmUvcnVu
dGltZV9vYmplY3QuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC0zOCw3ICszOSw4IEBAIGNs
YXNzIFByb3h5UnVudGltZU9iamVjdCA6IHB1YmxpYyBKU0M6OkIKIHB1YmxpYzoKICAgICBzdGF0
aWMgUHJveHlSdW50aW1lT2JqZWN0KiBjcmVhdGUoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIEpTQzo6
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUGFzc1JlZlB0cjxQcm94eUluc3RhbmNlPiBp
bnN0YW5jZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBuZXcgKEpTQzo6YWxsb2NhdGVDZWxsPFBy
b3h5UnVudGltZU9iamVjdD4oKmV4ZWMtPmhlYXAoKSkpIFByb3h5UnVudGltZU9iamVjdChleGVj
LCBnbG9iYWxPYmplY3QsIGluc3RhbmNlKTsKKyAgICAgICAgSlNDOjpTdHJ1Y3R1cmUqIGRvbVN0
cnVjdHVyZSA9IFdlYkNvcmU6OmRlcHJlY2F0ZWRHZXRET01TdHJ1Y3R1cmU8UHJveHlSdW50aW1l
T2JqZWN0PihleGVjKTsKKyAgICAgICAgcmV0dXJuIEpTQzo6dmFsaWRhdGVBbGxvYzxQcm94eVJ1
bnRpbWVPYmplY3Q+KGV4ZWMtPmdsb2JhbERhdGEoKSwgbmV3IChKU0M6OmFsbG9jYXRlQ2VsbDxQ
cm94eVJ1bnRpbWVPYmplY3Q+KCpleGVjLT5oZWFwKCkpKSBQcm94eVJ1bnRpbWVPYmplY3QoZXhl
YywgZ2xvYmFsT2JqZWN0LCBkb21TdHJ1Y3R1cmUsIGluc3RhbmNlKSk7CiAgICAgfQogCiAgICAg
dmlydHVhbCB+UHJveHlSdW50aW1lT2JqZWN0KCk7CkBAIC01Miw3ICs1NCw3IEBAIHB1YmxpYzoK
IAogICAgIHN0YXRpYyBjb25zdCBKU0M6OkNsYXNzSW5mbyBzX2luZm87CiBwcml2YXRlOgotICAg
IFByb3h5UnVudGltZU9iamVjdChKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNHbG9iYWxPYmplY3Qq
LCBQYXNzUmVmUHRyPFByb3h5SW5zdGFuY2U+KTsKKyAgICBQcm94eVJ1bnRpbWVPYmplY3QoSlND
OjpFeGVjU3RhdGUqLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpTdHJ1Y3R1cmUqLCBQYXNz
UmVmUHRyPFByb3h5SW5zdGFuY2U+KTsKIH07CiAKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFj
L1BsdWdpbnMvSG9zdGVkL1Byb3h5UnVudGltZU9iamVjdC5tbQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L21hYy9QbHVnaW5zL0hvc3RlZC9Qcm94eVJ1bnRpbWVPYmplY3QubW0JKHJldmlz
aW9uIDkyMjgzKQorKysgU291cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9Ib3N0ZWQvUHJveHlSdW50
aW1lT2JqZWN0Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zNywxMCArMzcsMTAgQEAgbmFtZXNwYWNl
IFdlYktpdCB7CiAKIGNvbnN0IENsYXNzSW5mbyBQcm94eVJ1bnRpbWVPYmplY3Q6OnNfaW5mbyA9
IHsgIlByb3h5UnVudGltZU9iamVjdCIsICZSdW50aW1lT2JqZWN0OjpzX2luZm8sIDAsIDAgfTsK
IAotUHJveHlSdW50aW1lT2JqZWN0OjpQcm94eVJ1bnRpbWVPYmplY3QoRXhlY1N0YXRlKiBleGVj
LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQYXNzUmVmUHRyPFByb3h5SW5zdGFuY2U+
IGluc3RhbmNlKQorUHJveHlSdW50aW1lT2JqZWN0OjpQcm94eVJ1bnRpbWVPYmplY3QoRXhlY1N0
YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIGRvbVN0
cnVjdHVyZSwgUGFzc1JlZlB0cjxQcm94eUluc3RhbmNlPiBpbnN0YW5jZSkKICAgICAvLyBGSVhN
RTogZGVwcmVjYXRlZEdldERPTVN0cnVjdHVyZSB1c2VzIHRoZSBwcm90b3R5cGUgb2ZmIG9mIHRo
ZSB3cm9uZyBnbG9iYWwgb2JqZWN0CiAgICAgLy8gZXhlYy1nbG9iYWxEYXRhKCkgaXMgYWxzbyBs
aWtlbHkgd3JvbmcuCi0gICAgOiBSdW50aW1lT2JqZWN0KGV4ZWMsIGdsb2JhbE9iamVjdCwgV2Vi
Q29yZTo6ZGVwcmVjYXRlZEdldERPTVN0cnVjdHVyZTxQcm94eVJ1bnRpbWVPYmplY3Q+KGV4ZWMp
LCBpbnN0YW5jZSkKKyAgICA6IFJ1bnRpbWVPYmplY3QoZXhlYywgZ2xvYmFsT2JqZWN0LCBkb21T
dHJ1Y3R1cmUsIGluc3RhbmNlKQogewogICAgIEFTU0VSVChpbmhlcml0cygmc19pbmZvKSk7CiB9
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>102861</attachid>
            <date>2011-08-03 17:09:36 -0700</date>
            <delta_ts>2011-08-04 11:27:09 -0700</delta_ts>
            <desc>Refactoring of JavaScriptCore</desc>
            <filename>bug-65288-20110803170935.patch</filename>
            <type>text/plain</type>
            <size>80426</size>
            <attacher name="Mark Hahnenberg">mhahnenberg</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gOTIzMzUpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTI0IEBA
CisyMDExLTA4LTAzICBNYXJrIEhhaG5lbmJlcmcgIDxtaGFobmVuYmVyZ0BhcHBsZS5jb20+CisK
KyAgICAgICAgQWRkIGNoZWNrcyB0byBlbnN1cmUgYWxsb2NhdGlvbiBkb2VzIG5vdCB0YWtlIHBs
YWNlIGR1cmluZyBpbml0aWFsaXphdGlvbiBvZiBHQy1tYW5hZ2VkIG9iamVjdHMKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY1Mjg4CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVmYWN0b3JpbmcgSlNDIGlu
IHByZXBhcmF0aW9uIGZvciB0aGUgaW5jbHVzaW9uIG9mIHRoZSBhZGRpdGlvbiBvZiBHQyB2YWxp
ZGF0aW9uIGNoZWNrcy4gIAorICAgICAgICBCYXNpY2FsbHkgd2UgcHVsbCBhcyBtdWNoIGFsbG9j
YXRpb24gYXMgd2UgY2FuIG91dCBvZiBjb25zdHJ1Y3RvcnMgaW50byB0aGVpciBzdGF0aWMgY3Jl
YXRlIAorICAgICAgICBtZXRob2RzIHRvIGF2b2lkIGFsbG9jYXRpb24gZHVyaW5nIGluaXRpYWxp
emF0aW9uLCB3aGljaCBjb3VsZCBjYXVzZSBHQyB0byBvY2N1ciB3aGVuIHRoZSAKKyAgICAgICAg
b2JqZWN0IGlzIGluIGFuIHVuZGVmaW5lZCBzdGF0ZS4KKworICAgICAgICAqIEFQSS9KU0NhbGxi
YWNrRnVuY3Rpb24uY3BwOgorICAgICAgICAoSlNDOjpKU0NhbGxiYWNrRnVuY3Rpb246OkpTQ2Fs
bGJhY2tGdW5jdGlvbik6CisgICAgICAgICogQVBJL0pTQ2FsbGJhY2tGdW5jdGlvbi5oOgorICAg
ICAgICAoSlNDOjpKU0NhbGxiYWNrRnVuY3Rpb246OmNyZWF0ZSk6CisgICAgICAgICogSmF2YVNj
cmlwdENvcmUuSlNWQUxVRTY0b25seS5leHA6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUuZXhw
OgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLm9yZGVyOgorICAgICAgICAqIGludGVycHJldGVy
L0ludGVycHJldGVyLmNwcDoKKyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OnRyeUNhY2hlUHV0
QnlJRCk6CisgICAgICAgICoganNjLmNwcDoKKyAgICAgICAgKEdsb2JhbE9iamVjdDo6Y3JlYXRl
KToKKyAgICAgICAgKEdsb2JhbE9iamVjdDo6R2xvYmFsT2JqZWN0KToKKyAgICAgICAgKiBydW50
aW1lL0FycmF5Q29uc3RydWN0b3IuY3BwOgorICAgICAgICAoSlNDOjpBcnJheUNvbnN0cnVjdG9y
OjpBcnJheUNvbnN0cnVjdG9yKToKKyAgICAgICAgKiBydW50aW1lL0FycmF5Q29uc3RydWN0b3Iu
aDoKKyAgICAgICAgKEpTQzo6QXJyYXlDb25zdHJ1Y3Rvcjo6Y3JlYXRlKToKKyAgICAgICAgKiBy
dW50aW1lL0Jvb2xlYW5Db25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0M6OkJvb2xlYW5Db25z
dHJ1Y3Rvcjo6Qm9vbGVhbkNvbnN0cnVjdG9yKToKKyAgICAgICAgKiBydW50aW1lL0Jvb2xlYW5D
b25zdHJ1Y3Rvci5oOgorICAgICAgICAoSlNDOjpCb29sZWFuQ29uc3RydWN0b3I6OmNyZWF0ZSk6
CisgICAgICAgICogcnVudGltZS9EYXRlQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAoSlNDOjpE
YXRlQ29uc3RydWN0b3I6OkRhdGVDb25zdHJ1Y3Rvcik6CisgICAgICAgICogcnVudGltZS9EYXRl
Q29uc3RydWN0b3IuaDoKKyAgICAgICAgKEpTQzo6RGF0ZUNvbnN0cnVjdG9yOjpjcmVhdGUpOgor
ICAgICAgICAqIHJ1bnRpbWUvRXJyb3IuY3BwOgorICAgICAgICAoSlNDOjpTdHJpY3RNb2RlVHlw
ZUVycm9yRnVuY3Rpb246OlN0cmljdE1vZGVUeXBlRXJyb3JGdW5jdGlvbik6CisgICAgICAgIChK
U0M6OlN0cmljdE1vZGVUeXBlRXJyb3JGdW5jdGlvbjo6Y3JlYXRlKToKKyAgICAgICAgKiBydW50
aW1lL0Vycm9yQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAoSlNDOjpFcnJvckNvbnN0cnVjdG9y
OjpFcnJvckNvbnN0cnVjdG9yKToKKyAgICAgICAgKiBydW50aW1lL0Vycm9yQ29uc3RydWN0b3Iu
aDoKKyAgICAgICAgKEpTQzo6RXJyb3JDb25zdHJ1Y3Rvcjo6Y3JlYXRlKToKKyAgICAgICAgKiBy
dW50aW1lL0Vycm9ySW5zdGFuY2UuY3BwOgorICAgICAgICAoSlNDOjpFcnJvckluc3RhbmNlOjpF
cnJvckluc3RhbmNlKToKKyAgICAgICAgKEpTQzo6RXJyb3JJbnN0YW5jZTo6Y3JlYXRlKToKKyAg
ICAgICAgKiBydW50aW1lL0Vycm9ySW5zdGFuY2UuaDoKKyAgICAgICAgKiBydW50aW1lL0Vycm9y
UHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6RXJyb3JQcm90b3R5cGU6OkVycm9yUHJvdG90
eXBlKToKKyAgICAgICAgKiBydW50aW1lL0Vycm9yUHJvdG90eXBlLmg6CisgICAgICAgIChKU0M6
OkVycm9yUHJvdG90eXBlOjpjcmVhdGUpOgorICAgICAgICAqIHJ1bnRpbWUvRXhlY3V0YWJsZS5j
cHA6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZTo6RnVuY3Rpb25FeGVjdXRhYmxl
KToKKyAgICAgICAgKiBydW50aW1lL0V4ZWN1dGFibGUuaDoKKyAgICAgICAgKEpTQzo6TmF0aXZl
RXhlY3V0YWJsZTo6Y3JlYXRlKToKKyAgICAgICAgKiBydW50aW1lL0Z1bmN0aW9uQ29uc3RydWN0
b3IuY3BwOgorICAgICAgICAoSlNDOjpGdW5jdGlvbkNvbnN0cnVjdG9yOjpGdW5jdGlvbkNvbnN0
cnVjdG9yKToKKyAgICAgICAgKiBydW50aW1lL0Z1bmN0aW9uQ29uc3RydWN0b3IuaDoKKyAgICAg
ICAgKEpTQzo6RnVuY3Rpb25Db25zdHJ1Y3Rvcjo6Y3JlYXRlKToKKyAgICAgICAgKiBydW50aW1l
L0Z1bmN0aW9uUHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25Qcm90b3R5cGU6
OkZ1bmN0aW9uUHJvdG90eXBlKToKKyAgICAgICAgKiBydW50aW1lL0Z1bmN0aW9uUHJvdG90eXBl
Lmg6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uUHJvdG90eXBlOjpjcmVhdGUpOgorICAgICAgICAq
IHJ1bnRpbWUvSW50ZXJuYWxGdW5jdGlvbi5jcHA6CisgICAgICAgIChKU0M6OkludGVybmFsRnVu
Y3Rpb246OkludGVybmFsRnVuY3Rpb24pOgorICAgICAgICAqIHJ1bnRpbWUvSW50ZXJuYWxGdW5j
dGlvbi5oOgorICAgICAgICAoSlNDOjpJbnRlcm5hbEZ1bmN0aW9uOjppbml0UHJvcGVydGllcyk6
CisgICAgICAgICogcnVudGltZS9KU0J5dGVBcnJheS5jcHA6CisgICAgICAgIChKU0M6OkpTQnl0
ZUFycmF5OjpKU0J5dGVBcnJheSk6CisgICAgICAgIChKU0M6OkpTQnl0ZUFycmF5OjpjcmVhdGUp
OgorICAgICAgICAqIHJ1bnRpbWUvSlNDZWxsLmg6CisgICAgICAgICogcnVudGltZS9KU0Z1bmN0
aW9uLmNwcDoKKyAgICAgICAgKEpTQzo6SlNGdW5jdGlvbjo6SlNGdW5jdGlvbik6CisgICAgICAg
IChKU0M6OkpTRnVuY3Rpb246OmNyZWF0ZSk6CisgICAgICAgICogcnVudGltZS9KU0Z1bmN0aW9u
Lmg6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5oOgorICAgICAgICAoSlNDOjpK
U0dsb2JhbE9iamVjdDo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OkpT
R2xvYmFsT2JqZWN0KToKKyAgICAgICAgKiBydW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3Iu
Y3BwOgorICAgICAgICAoSlNDOjpKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yOjpKU1Byb3BlcnR5TmFt
ZUl0ZXJhdG9yKToKKyAgICAgICAgKEpTQzo6SlNQcm9wZXJ0eU5hbWVJdGVyYXRvcjo6Y3JlYXRl
KToKKyAgICAgICAgKiBydW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuaDoKKyAgICAgICAg
KEpTQzo6SlNQcm9wZXJ0eU5hbWVJdGVyYXRvcjo6Y3JlYXRlKToKKyAgICAgICAgKiBydW50aW1l
L05hdGl2ZUVycm9yQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAoSlNDOjpOYXRpdmVFcnJvckNv
bnN0cnVjdG9yOjpOYXRpdmVFcnJvckNvbnN0cnVjdG9yKToKKyAgICAgICAgKEpTQzo6TmF0aXZl
RXJyb3JDb25zdHJ1Y3Rvcjo6Y3JlYXRlKToKKyAgICAgICAgKiBydW50aW1lL05hdGl2ZUVycm9y
Q29uc3RydWN0b3IuaDoKKyAgICAgICAgKiBydW50aW1lL05hdGl2ZUVycm9yUHJvdG90eXBlLmNw
cDoKKyAgICAgICAgKEpTQzo6TmF0aXZlRXJyb3JQcm90b3R5cGU6Ok5hdGl2ZUVycm9yUHJvdG90
eXBlKToKKyAgICAgICAgKiBydW50aW1lL05hdGl2ZUVycm9yUHJvdG90eXBlLmg6CisgICAgICAg
IChKU0M6Ok5hdGl2ZUVycm9yUHJvdG90eXBlOjpjcmVhdGUpOgorICAgICAgICAqIHJ1bnRpbWUv
TnVtYmVyQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAoSlNDOjpOdW1iZXJDb25zdHJ1Y3Rvcjo6
TnVtYmVyQ29uc3RydWN0b3IpOgorICAgICAgICAqIHJ1bnRpbWUvTnVtYmVyQ29uc3RydWN0b3Iu
aDoKKyAgICAgICAgKEpTQzo6TnVtYmVyQ29uc3RydWN0b3I6OmNyZWF0ZSk6CisgICAgICAgICog
cnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0M6Ok9iamVjdENvbnN0
cnVjdG9yOjpPYmplY3RDb25zdHJ1Y3Rvcik6CisgICAgICAgICogcnVudGltZS9PYmplY3RDb25z
dHJ1Y3Rvci5oOgorICAgICAgICAoSlNDOjpPYmplY3RDb25zdHJ1Y3Rvcjo6Y3JlYXRlKToKKyAg
ICAgICAgKiBydW50aW1lL1JlZ0V4cENvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6UmVn
RXhwQ29uc3RydWN0b3I6OlJlZ0V4cENvbnN0cnVjdG9yKToKKyAgICAgICAgKiBydW50aW1lL1Jl
Z0V4cENvbnN0cnVjdG9yLmg6CisgICAgICAgIChKU0M6OlJlZ0V4cENvbnN0cnVjdG9yOjpjcmVh
dGUpOgorICAgICAgICAqIHJ1bnRpbWUvUmVnRXhwTWF0Y2hlc0FycmF5Lmg6CisgICAgICAgICog
cnVudGltZS9TdHJpbmdDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0M6OlN0cmluZ0NvbnN0
cnVjdG9yOjpTdHJpbmdDb25zdHJ1Y3Rvcik6CisgICAgICAgICogcnVudGltZS9TdHJpbmdDb25z
dHJ1Y3Rvci5oOgorICAgICAgICAoSlNDOjpTdHJpbmdDb25zdHJ1Y3Rvcjo6Y3JlYXRlKToKKyAg
ICAgICAgKiBydW50aW1lL1N0cmluZ09iamVjdC5jcHA6CisgICAgICAgICogcnVudGltZS9TdHJp
bmdPYmplY3QuaDoKKyAgICAgICAgKEpTQzo6U3RyaW5nT2JqZWN0OjpjcmVhdGUpOgorICAgICAg
ICAqIHJ1bnRpbWUvU3RyaW5nT2JqZWN0VGhhdE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQuaDoKKyAg
ICAgICAgKEpTQzo6U3RyaW5nT2JqZWN0VGhhdE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQ6OmNyZWF0
ZSk6CisgICAgICAgIChKU0M6OlN0cmluZ09iamVjdFRoYXRNYXNxdWVyYWRlc0FzVW5kZWZpbmVk
OjpTdHJpbmdPYmplY3RUaGF0TWFzcXVlcmFkZXNBc1VuZGVmaW5lZCk6CisgICAgICAgICogcnVu
dGltZS9TdHJpbmdQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpTdHJpbmdQcm90b3R5cGU6
OlN0cmluZ1Byb3RvdHlwZSk6CisgICAgICAgICogcnVudGltZS9TdHJpbmdQcm90b3R5cGUuaDoK
KyAgICAgICAgKEpTQzo6U3RyaW5nUHJvdG90eXBlOjpjcmVhdGUpOgorICAgICAgICAqIHJ1bnRp
bWUvU3RydWN0dXJlQ2hhaW4uaDoKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlQ2hhaW46OmNyZWF0
ZSk6CisKIDIwMTEtMDgtMDMgIE1hcmsgUm93ZSAgPG1yb3dlQGFwcGxlLmNvbT4KIAogICAgICAg
ICBCcmluZyBzb21lIG9yZGVyIHRvIEZlYXR1cmVEZWZpbmVzLnhjY29uZmlnIHRvIG1ha2UgaXQg
ZWFzaWVyIHRvIGZvbGxvdy4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS5KU1ZBTFVFNjRvbmx5LmV4cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvSmF2YVNjcmlwdENvcmUuSlNWQUxVRTY0b25seS5leHAJKHJldmlzaW9uIDkyMzA4KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLkpTVkFMVUU2NG9ubHkuZXhwCSh3
b3JraW5nIGNvcHkpCkBAIC0xICswLDAgQEAKLV9fWk4zSlNDMTBKU0Z1bmN0aW9uQzFFUE5TXzlF
eGVjU3RhdGVFUE5TXzE0SlNHbG9iYWxPYmplY3RFUE5TXzlTdHJ1Y3R1cmVFaVJLTlNfMTBJZGVu
dGlmaWVyRVBGUHZTMl9FCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUuZXhwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZS5leHAJKHJldmlzaW9uIDkyMzA4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3Jp
cHRDb3JlLmV4cAkod29ya2luZyBjb3B5KQpAQCAtMTExLDYgKzExMSw3IEBAIF9fWk4zSlNDMTBJ
ZGVudGlmaWVyNGZyb21FUE5TXzlFeGVjU3RhdGUKIF9fWk4zSlNDMTBJZGVudGlmaWVyNWVxdWFs
RVBLTjNXVEYxMFN0cmluZ0ltcGxFUEtjCiBfX1pOM0pTQzEwSWRlbnRpZmllcjh0b1VJbnQzMkVS
S05TXzdVU3RyaW5nRVJiCiBfX1pOM0pTQzEwSlNGdW5jdGlvbjRuYW1lRVBOU185RXhlY1N0YXRl
RQorX19aTjNKU0MxMEpTRnVuY3Rpb242Y3JlYXRlRVBOU185RXhlY1N0YXRlRVBOU18xNEpTR2xv
YmFsT2JqZWN0RVBOU185U3RydWN0dXJlRWlSS05TXzEwSWRlbnRpZmllckVQRlB2UzJfRQogX19a
TjNKU0MxMEpTRnVuY3Rpb242c19pbmZvRQogX19aTjNKU0MxMHRocm93RXJyb3JFUE5TXzlFeGVj
U3RhdGVFTlNfN0pTVmFsdWVFCiBfX1pOM0pTQzEwdGhyb3dFcnJvckVQTlNfOUV4ZWNTdGF0ZUVQ
TlNfOEpTT2JqZWN0RQpAQCAtMTUxLDcgKzE1Miw3IEBAIF9fWk4zSlNDMTJTdHJpbmdPYmplY3Qx
OWdldE93blByb3BlcnR5TmEKIF9fWk4zSlNDMTJTdHJpbmdPYmplY3QyNGdldE93blByb3BlcnR5
RGVzY3JpcHRvckVQTlNfOUV4ZWNTdGF0ZUVSS05TXzEwSWRlbnRpZmllckVSTlNfMThQcm9wZXJ0
eURlc2NyaXB0b3JFCiBfX1pOM0pTQzEyU3RyaW5nT2JqZWN0M3B1dEVQTlNfOUV4ZWNTdGF0ZUVS
S05TXzEwSWRlbnRpZmllckVOU183SlNWYWx1ZUVSTlNfMTVQdXRQcm9wZXJ0eVNsb3RFCiBfX1pO
M0pTQzEyU3RyaW5nT2JqZWN0NnNfaW5mb0UKLV9fWk4zSlNDMTJTdHJpbmdPYmplY3RDMkVQTlNf
OUV4ZWNTdGF0ZUVQTlNfOVN0cnVjdHVyZUVSS05TXzdVU3RyaW5nRQorX19aTjNKU0MxMlN0cmlu
Z09iamVjdEMyRVJOU18xMkpTR2xvYmFsRGF0YUVQTlNfOVN0cnVjdHVyZUVQTlNfOEpTU3RyaW5n
RQogX19aTjNKU0MxM1NhbXBsaW5nRmxhZ3M0c3RvcEV2CiBfX1pOM0pTQzEzU2FtcGxpbmdGbGFn
czVzdGFydEV2CiBfX1pOM0pTQzEzU2FtcGxpbmdGbGFnczdzX2ZsYWdzRQpAQCAtMTg0LDYgKzE4
NSw3IEBAIF9fWk4zSlNDMTZJbnRlcm5hbEZ1bmN0aW9uMTJ2dGFibGVBbmNob3IKIF9fWk4zSlND
MTZJbnRlcm5hbEZ1bmN0aW9uNG5hbWVFUE5TXzlFeGVjU3RhdGVFCiBfX1pOM0pTQzE2SW50ZXJu
YWxGdW5jdGlvbjZzX2luZm9FCiBfX1pOM0pTQzE2SW50ZXJuYWxGdW5jdGlvbkMyRVBOU18xMkpT
R2xvYmFsRGF0YUVQTlNfMTRKU0dsb2JhbE9iamVjdEVQTlNfOVN0cnVjdHVyZUVSS05TXzEwSWRl
bnRpZmllckUKK19fWk4zSlNDMTZJbnRlcm5hbEZ1bmN0aW9uQzJFUE5TXzE0SlNHbG9iYWxPYmpl
Y3RFUE5TXzlTdHJ1Y3R1cmVFCiBfX1pOM0pTQzE2SlNWYXJpYWJsZU9iamVjdDE0ZGVsZXRlUHJv
cGVydHlFUE5TXzlFeGVjU3RhdGVFUktOU18xMElkZW50aWZpZXJFCiBfX1pOM0pTQzE2SlNWYXJp
YWJsZU9iamVjdDE0c3ltYm9sVGFibGVHZXRFUktOU18xMElkZW50aWZpZXJFUk5TXzE4UHJvcGVy
dHlEZXNjcmlwdG9yRQogX19aTjNKU0MxNkpTVmFyaWFibGVPYmplY3QxOWdldE93blByb3BlcnR5
TmFtZXNFUE5TXzlFeGVjU3RhdGVFUk5TXzE3UHJvcGVydHlOYW1lQXJyYXlFTlNfMTVFbnVtZXJh
dGlvbk1vZGVFCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUub3Jk
ZXIKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLm9y
ZGVyCShyZXZpc2lvbiA5MjMwOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS5vcmRlcgkod29ya2luZyBjb3B5KQpAQCAtMjI1LDcgKzIyNSw2IEBAIF9fWk4zSlNDMjRT
dHJ1Y3R1cmVUcmFuc2l0aW9uVGFibGUzYWRkRVIKIF9fWk4zSlNDOVN0cnVjdHVyZTI4YWRkUHJv
cGVydHlXaXRob3V0VHJhbnNpdGlvbkVSTlNfMTJKU0dsb2JhbERhdGFFUktOU18xMElkZW50aWZp
ZXJFalBOU182SlNDZWxsRQogX19aTjNKU0M4SlNPYmplY3QyM2FsbG9jYXRlUHJvcGVydHlTdG9y
YWdlRW1tCiBfX1pOM0pTQzE3RnVuY3Rpb25Qcm90b3R5cGUyMWFkZEZ1bmN0aW9uUHJvcGVydGll
c0VQTlNfOUV4ZWNTdGF0ZUVQTlNfMTRKU0dsb2JhbE9iamVjdEVQTlNfOVN0cnVjdHVyZUVQUE5T
XzEwSlNGdW5jdGlvbkVTOV8KLV9fWk4zSlNDMTBKU0Z1bmN0aW9uQzFFUE5TXzlFeGVjU3RhdGVF
UE5TXzE0SlNHbG9iYWxPYmplY3RFUE5TXzlTdHJ1Y3R1cmVFaVJLTlNfMTBJZGVudGlmaWVyRVBG
UHZTMl9FCiBfX1pOM0pTQzEwSlNGdW5jdGlvbkMyRVBOU185RXhlY1N0YXRlRVBOU18xNEpTR2xv
YmFsT2JqZWN0RVBOU185U3RydWN0dXJlRWlSS05TXzEwSWRlbnRpZmllckVQRlB2UzJfRQogX19a
TjNKU0MxMkpTR2xvYmFsRGF0YTE1Z2V0SG9zdEZ1bmN0aW9uRVBGUHZQTlNfOUV4ZWNTdGF0ZUVF
CiBfX1pOM0pTQzlKSVRUaHVua3MxNmhvc3RGdW5jdGlvblN0dWJFUE5TXzEySlNHbG9iYWxEYXRh
RVBGUHZQTlNfOUV4ZWNTdGF0ZUVFCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcAkocmV2aXNpb24g
OTIzMDgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTQ1LDQ0ICsxNDUsNDYgQEAgbG9uZyBTdG9wV2F0Y2g6OmdldEVsYXBzZWRNUygpCiAKIGNs
YXNzIEdsb2JhbE9iamVjdCA6IHB1YmxpYyBKU0dsb2JhbE9iamVjdCB7CiBwcml2YXRlOgotICAg
IEdsb2JhbE9iamVjdChKU0dsb2JhbERhdGEmLCBTdHJ1Y3R1cmUqLCBjb25zdCBWZWN0b3I8VVN0
cmluZz4mIGFyZ3VtZW50cyk7CisgICAgR2xvYmFsT2JqZWN0KEpTR2xvYmFsRGF0YSYsIFN0cnVj
dHVyZSopOwogCiBwdWJsaWM6CiAgICAgc3RhdGljIEdsb2JhbE9iamVjdCogY3JlYXRlKEpTR2xv
YmFsRGF0YSYgZ2xvYmFsRGF0YSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IFZlY3RvcjxV
U3RyaW5nPiYgYXJndW1lbnRzKQogICAgIHsKLSAgICAgICAgcmV0dXJuIG5ldyAoYWxsb2NhdGVD
ZWxsPEdsb2JhbE9iamVjdD4oZ2xvYmFsRGF0YS5oZWFwKSkgR2xvYmFsT2JqZWN0KGdsb2JhbERh
dGEsIHN0cnVjdHVyZSwgYXJndW1lbnRzKTsKKyAgICAgICAgR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QgPSBuZXcgKGFsbG9jYXRlQ2VsbDxHbG9iYWxPYmplY3Q+KGdsb2JhbERhdGEuaGVhcCkp
IEdsb2JhbE9iamVjdChnbG9iYWxEYXRhLCBzdHJ1Y3R1cmUpOworICAgICAgICBnbG9iYWxPYmpl
Y3QtPmluaXQoZ2xvYmFsT2JqZWN0KTsKKyAgICAgICAgZ2xvYmFsT2JqZWN0LT5wdXREaXJlY3RG
dW5jdGlvbihnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSwgSlNGdW5jdGlvbjo6Y3JlYXRlKGds
b2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpLCBnbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdC0+ZnVu
Y3Rpb25TdHJ1Y3R1cmUoKSwgMSwgSWRlbnRpZmllcihnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMo
KSwgImRlYnVnIiksIGZ1bmN0aW9uRGVidWcpKTsKKyAgICAgICAgZ2xvYmFsT2JqZWN0LT5wdXRE
aXJlY3RGdW5jdGlvbihnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSwgSlNGdW5jdGlvbjo6Y3Jl
YXRlKGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpLCBnbG9iYWxPYmplY3QsIGdsb2JhbE9iamVj
dC0+ZnVuY3Rpb25TdHJ1Y3R1cmUoKSwgMSwgSWRlbnRpZmllcihnbG9iYWxPYmplY3QtPmdsb2Jh
bEV4ZWMoKSwgInByaW50IiksIGZ1bmN0aW9uUHJpbnQpKTsKKyAgICAgICAgZ2xvYmFsT2JqZWN0
LT5wdXREaXJlY3RGdW5jdGlvbihnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSwgSlNGdW5jdGlv
bjo6Y3JlYXRlKGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpLCBnbG9iYWxPYmplY3QsIGdsb2Jh
bE9iamVjdC0+ZnVuY3Rpb25TdHJ1Y3R1cmUoKSwgMCwgSWRlbnRpZmllcihnbG9iYWxPYmplY3Qt
Pmdsb2JhbEV4ZWMoKSwgInF1aXQiKSwgZnVuY3Rpb25RdWl0KSk7CisgICAgICAgIGdsb2JhbE9i
amVjdC0+cHV0RGlyZWN0RnVuY3Rpb24oZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCksIEpTRnVu
Y3Rpb246OmNyZWF0ZShnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSwgZ2xvYmFsT2JqZWN0LCBn
bG9iYWxPYmplY3QtPmZ1bmN0aW9uU3RydWN0dXJlKCksIDAsIElkZW50aWZpZXIoZ2xvYmFsT2Jq
ZWN0LT5nbG9iYWxFeGVjKCksICJnYyIpLCBmdW5jdGlvbkdDKSk7CisjaWZuZGVmIE5ERUJVRwor
ICAgICAgICBnbG9iYWxPYmplY3QtPnB1dERpcmVjdEZ1bmN0aW9uKGdsb2JhbE9iamVjdC0+Z2xv
YmFsRXhlYygpLCBKU0Z1bmN0aW9uOjpjcmVhdGUoZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCks
IGdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LT5mdW5jdGlvblN0cnVjdHVyZSgpLCAwLCBJZGVu
dGlmaWVyKGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpLCAicmVsZWFzZUV4ZWN1dGFibGVNZW1v
cnkiKSwgZnVuY3Rpb25SZWxlYXNlRXhlY3V0YWJsZU1lbW9yeSkpOworI2VuZGlmCisgICAgICAg
IGdsb2JhbE9iamVjdC0+cHV0RGlyZWN0RnVuY3Rpb24oZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVj
KCksIEpTRnVuY3Rpb246OmNyZWF0ZShnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSwgZ2xvYmFs
T2JqZWN0LCBnbG9iYWxPYmplY3QtPmZ1bmN0aW9uU3RydWN0dXJlKCksIDEsIElkZW50aWZpZXIo
Z2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCksICJ2ZXJzaW9uIiksIGZ1bmN0aW9uVmVyc2lvbikp
OworICAgICAgICBnbG9iYWxPYmplY3QtPnB1dERpcmVjdEZ1bmN0aW9uKGdsb2JhbE9iamVjdC0+
Z2xvYmFsRXhlYygpLCBKU0Z1bmN0aW9uOjpjcmVhdGUoZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVj
KCksIGdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LT5mdW5jdGlvblN0cnVjdHVyZSgpLCAxLCBJ
ZGVudGlmaWVyKGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpLCAicnVuIiksIGZ1bmN0aW9uUnVu
KSk7CisgICAgICAgIGdsb2JhbE9iamVjdC0+cHV0RGlyZWN0RnVuY3Rpb24oZ2xvYmFsT2JqZWN0
LT5nbG9iYWxFeGVjKCksIEpTRnVuY3Rpb246OmNyZWF0ZShnbG9iYWxPYmplY3QtPmdsb2JhbEV4
ZWMoKSwgZ2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QtPmZ1bmN0aW9uU3RydWN0dXJlKCksIDEs
IElkZW50aWZpZXIoZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCksICJsb2FkIiksIGZ1bmN0aW9u
TG9hZCkpOworICAgICAgICBnbG9iYWxPYmplY3QtPnB1dERpcmVjdEZ1bmN0aW9uKGdsb2JhbE9i
amVjdC0+Z2xvYmFsRXhlYygpLCBKU0Z1bmN0aW9uOjpjcmVhdGUoZ2xvYmFsT2JqZWN0LT5nbG9i
YWxFeGVjKCksIGdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LT5mdW5jdGlvblN0cnVjdHVyZSgp
LCAxLCBJZGVudGlmaWVyKGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpLCAiY2hlY2tTeW50YXgi
KSwgZnVuY3Rpb25DaGVja1N5bnRheCkpOworICAgICAgICBnbG9iYWxPYmplY3QtPnB1dERpcmVj
dEZ1bmN0aW9uKGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpLCBKU0Z1bmN0aW9uOjpjcmVhdGUo
Z2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCksIGdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LT5m
dW5jdGlvblN0cnVjdHVyZSgpLCAwLCBJZGVudGlmaWVyKGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhl
YygpLCAicmVhZGxpbmUiKSwgZnVuY3Rpb25SZWFkbGluZSkpOworICAgICAgICBnbG9iYWxPYmpl
Y3QtPnB1dERpcmVjdEZ1bmN0aW9uKGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpLCBKU0Z1bmN0
aW9uOjpjcmVhdGUoZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCksIGdsb2JhbE9iamVjdCwgZ2xv
YmFsT2JqZWN0LT5mdW5jdGlvblN0cnVjdHVyZSgpLCAwLCBJZGVudGlmaWVyKGdsb2JhbE9iamVj
dC0+Z2xvYmFsRXhlYygpLCAicHJlY2lzZVRpbWUiKSwgZnVuY3Rpb25QcmVjaXNlVGltZSkpOwor
CisjaWYgRU5BQkxFKFNBTVBMSU5HX0ZMQUdTKQorICAgICAgICBnbG9iYWxPYmplY3QtPnB1dERp
cmVjdEZ1bmN0aW9uKGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpLCBKU0Z1bmN0aW9uOjpjcmVh
dGUoZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCksIGdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0
LT5mdW5jdGlvblN0cnVjdHVyZSgpLCAxLCBJZGVudGlmaWVyKGdsb2JhbE9iamVjdC0+Z2xvYmFs
RXhlYygpLCAic2V0U2FtcGxpbmdGbGFncyIpLCBmdW5jdGlvblNldFNhbXBsaW5nRmxhZ3MpKTsK
KyAgICAgICAgZ2xvYmFsT2JqZWN0LT5wdXREaXJlY3RGdW5jdGlvbihnbG9iYWxPYmplY3QtPmds
b2JhbEV4ZWMoKSwgSlNGdW5jdGlvbjo6Y3JlYXRlKGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygp
LCBnbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdC0+ZnVuY3Rpb25TdHJ1Y3R1cmUoKSwgMSwgSWRl
bnRpZmllcihnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSwgImNsZWFyU2FtcGxpbmdGbGFncyIp
LCBmdW5jdGlvbkNsZWFyU2FtcGxpbmdGbGFncykpOworI2VuZGlmCisKKyAgICAgICAgSlNPYmpl
Y3QqIGFycmF5ID0gY29uc3RydWN0RW1wdHlBcnJheShnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMo
KSk7CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgYXJndW1lbnRzLnNpemUoKTsgKytp
KQorICAgICAgICAgICAgYXJyYXktPnB1dChnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSwgaSwg
anNTdHJpbmcoZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCksIGFyZ3VtZW50c1tpXSkpOworICAg
ICAgICBnbG9iYWxPYmplY3QtPnB1dERpcmVjdChnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKS0+
Z2xvYmFsRGF0YSgpLCBJZGVudGlmaWVyKGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpLCAiYXJn
dW1lbnRzIiksIGFycmF5KTsKKyAgICAgICAgcmV0dXJuIGdsb2JhbE9iamVjdDsKICAgICB9CiAg
ICAgdmlydHVhbCBVU3RyaW5nIGNsYXNzTmFtZSgpIGNvbnN0IHsgcmV0dXJuICJnbG9iYWwiOyB9
CiB9OwogQ09NUElMRV9BU1NFUlQoIUlzSW50ZWdlcjxHbG9iYWxPYmplY3Q+Ojp2YWx1ZSwgV1RG
X0lzSW50ZWdlcl9HbG9iYWxPYmplY3RfZmFsc2UpOwogQVNTRVJUX0NMQVNTX0ZJVFNfSU5fQ0VM
TChHbG9iYWxPYmplY3QpOwogCi1HbG9iYWxPYmplY3Q6Okdsb2JhbE9iamVjdChKU0dsb2JhbERh
dGEmIGdsb2JhbERhdGEsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBjb25zdCBWZWN0b3I8VVN0cmlu
Zz4mIGFyZ3VtZW50cykKK0dsb2JhbE9iamVjdDo6R2xvYmFsT2JqZWN0KEpTR2xvYmFsRGF0YSYg
Z2xvYmFsRGF0YSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAgICAgOiBKU0dsb2JhbE9iamVjdChn
bG9iYWxEYXRhLCBzdHJ1Y3R1cmUpCiB7Ci0gICAgcHV0RGlyZWN0RnVuY3Rpb24oZ2xvYmFsRXhl
YygpLCBKU0Z1bmN0aW9uOjpjcmVhdGUoZ2xvYmFsRXhlYygpLCB0aGlzLCBmdW5jdGlvblN0cnVj
dHVyZSgpLCAxLCBJZGVudGlmaWVyKGdsb2JhbEV4ZWMoKSwgImRlYnVnIiksIGZ1bmN0aW9uRGVi
dWcpKTsKLSAgICBwdXREaXJlY3RGdW5jdGlvbihnbG9iYWxFeGVjKCksIEpTRnVuY3Rpb246OmNy
ZWF0ZShnbG9iYWxFeGVjKCksIHRoaXMsIGZ1bmN0aW9uU3RydWN0dXJlKCksIDEsIElkZW50aWZp
ZXIoZ2xvYmFsRXhlYygpLCAicHJpbnQiKSwgZnVuY3Rpb25QcmludCkpOwotICAgIHB1dERpcmVj
dEZ1bmN0aW9uKGdsb2JhbEV4ZWMoKSwgSlNGdW5jdGlvbjo6Y3JlYXRlKGdsb2JhbEV4ZWMoKSwg
dGhpcywgZnVuY3Rpb25TdHJ1Y3R1cmUoKSwgMCwgSWRlbnRpZmllcihnbG9iYWxFeGVjKCksICJx
dWl0IiksIGZ1bmN0aW9uUXVpdCkpOwotICAgIHB1dERpcmVjdEZ1bmN0aW9uKGdsb2JhbEV4ZWMo
KSwgSlNGdW5jdGlvbjo6Y3JlYXRlKGdsb2JhbEV4ZWMoKSwgdGhpcywgZnVuY3Rpb25TdHJ1Y3R1
cmUoKSwgMCwgSWRlbnRpZmllcihnbG9iYWxFeGVjKCksICJnYyIpLCBmdW5jdGlvbkdDKSk7Ci0j
aWZuZGVmIE5ERUJVRwotICAgIHB1dERpcmVjdEZ1bmN0aW9uKGdsb2JhbEV4ZWMoKSwgSlNGdW5j
dGlvbjo6Y3JlYXRlKGdsb2JhbEV4ZWMoKSwgdGhpcywgZnVuY3Rpb25TdHJ1Y3R1cmUoKSwgMCwg
SWRlbnRpZmllcihnbG9iYWxFeGVjKCksICJyZWxlYXNlRXhlY3V0YWJsZU1lbW9yeSIpLCBmdW5j
dGlvblJlbGVhc2VFeGVjdXRhYmxlTWVtb3J5KSk7Ci0jZW5kaWYKLSAgICBwdXREaXJlY3RGdW5j
dGlvbihnbG9iYWxFeGVjKCksIEpTRnVuY3Rpb246OmNyZWF0ZShnbG9iYWxFeGVjKCksIHRoaXMs
IGZ1bmN0aW9uU3RydWN0dXJlKCksIDEsIElkZW50aWZpZXIoZ2xvYmFsRXhlYygpLCAidmVyc2lv
biIpLCBmdW5jdGlvblZlcnNpb24pKTsKLSAgICBwdXREaXJlY3RGdW5jdGlvbihnbG9iYWxFeGVj
KCksIEpTRnVuY3Rpb246OmNyZWF0ZShnbG9iYWxFeGVjKCksIHRoaXMsIGZ1bmN0aW9uU3RydWN0
dXJlKCksIDEsIElkZW50aWZpZXIoZ2xvYmFsRXhlYygpLCAicnVuIiksIGZ1bmN0aW9uUnVuKSk7
Ci0gICAgcHV0RGlyZWN0RnVuY3Rpb24oZ2xvYmFsRXhlYygpLCBKU0Z1bmN0aW9uOjpjcmVhdGUo
Z2xvYmFsRXhlYygpLCB0aGlzLCBmdW5jdGlvblN0cnVjdHVyZSgpLCAxLCBJZGVudGlmaWVyKGds
b2JhbEV4ZWMoKSwgImxvYWQiKSwgZnVuY3Rpb25Mb2FkKSk7Ci0gICAgcHV0RGlyZWN0RnVuY3Rp
b24oZ2xvYmFsRXhlYygpLCBKU0Z1bmN0aW9uOjpjcmVhdGUoZ2xvYmFsRXhlYygpLCB0aGlzLCBm
dW5jdGlvblN0cnVjdHVyZSgpLCAxLCBJZGVudGlmaWVyKGdsb2JhbEV4ZWMoKSwgImNoZWNrU3lu
dGF4IiksIGZ1bmN0aW9uQ2hlY2tTeW50YXgpKTsKLSAgICBwdXREaXJlY3RGdW5jdGlvbihnbG9i
YWxFeGVjKCksIEpTRnVuY3Rpb246OmNyZWF0ZShnbG9iYWxFeGVjKCksIHRoaXMsIGZ1bmN0aW9u
U3RydWN0dXJlKCksIDAsIElkZW50aWZpZXIoZ2xvYmFsRXhlYygpLCAicmVhZGxpbmUiKSwgZnVu
Y3Rpb25SZWFkbGluZSkpOwotICAgIHB1dERpcmVjdEZ1bmN0aW9uKGdsb2JhbEV4ZWMoKSwgSlNG
dW5jdGlvbjo6Y3JlYXRlKGdsb2JhbEV4ZWMoKSwgdGhpcywgZnVuY3Rpb25TdHJ1Y3R1cmUoKSwg
MCwgSWRlbnRpZmllcihnbG9iYWxFeGVjKCksICJwcmVjaXNlVGltZSIpLCBmdW5jdGlvblByZWNp
c2VUaW1lKSk7Ci0KLSNpZiBFTkFCTEUoU0FNUExJTkdfRkxBR1MpCi0gICAgcHV0RGlyZWN0RnVu
Y3Rpb24oZ2xvYmFsRXhlYygpLCBKU0Z1bmN0aW9uOjpjcmVhdGUoZ2xvYmFsRXhlYygpLCB0aGlz
LCBmdW5jdGlvblN0cnVjdHVyZSgpLCAxLCBJZGVudGlmaWVyKGdsb2JhbEV4ZWMoKSwgInNldFNh
bXBsaW5nRmxhZ3MiKSwgZnVuY3Rpb25TZXRTYW1wbGluZ0ZsYWdzKSk7Ci0gICAgcHV0RGlyZWN0
RnVuY3Rpb24oZ2xvYmFsRXhlYygpLCBKU0Z1bmN0aW9uOjpjcmVhdGUoZ2xvYmFsRXhlYygpLCB0
aGlzLCBmdW5jdGlvblN0cnVjdHVyZSgpLCAxLCBJZGVudGlmaWVyKGdsb2JhbEV4ZWMoKSwgImNs
ZWFyU2FtcGxpbmdGbGFncyIpLCBmdW5jdGlvbkNsZWFyU2FtcGxpbmdGbGFncykpOwotI2VuZGlm
Ci0KLSAgICBKU09iamVjdCogYXJyYXkgPSBjb25zdHJ1Y3RFbXB0eUFycmF5KGdsb2JhbEV4ZWMo
KSk7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBhcmd1bWVudHMuc2l6ZSgpOyArK2kpCi0g
ICAgICAgIGFycmF5LT5wdXQoZ2xvYmFsRXhlYygpLCBpLCBqc1N0cmluZyhnbG9iYWxFeGVjKCks
IGFyZ3VtZW50c1tpXSkpOwotICAgIHB1dERpcmVjdChnbG9iYWxFeGVjKCktPmdsb2JhbERhdGEo
KSwgSWRlbnRpZmllcihnbG9iYWxFeGVjKCksICJhcmd1bWVudHMiKSwgYXJyYXkpOwogfQogCiBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uUHJpbnQoRXhlY1N0YXRlKiBleGVj
KQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrRnVuY3Rpb24uY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja0Z1bmN0
aW9uLmNwcAkocmV2aXNpb24gOTIzMDgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pT
Q2FsbGJhY2tGdW5jdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQyLDggKzQyLDggQEAgQVNT
RVJUX0NMQVNTX0ZJVFNfSU5fQ0VMTChKU0NhbGxiYWNrRnVuYwogCiBjb25zdCBDbGFzc0luZm8g
SlNDYWxsYmFja0Z1bmN0aW9uOjpzX2luZm8gPSB7ICJDYWxsYmFja0Z1bmN0aW9uIiwgJkludGVy
bmFsRnVuY3Rpb246OnNfaW5mbywgMCwgMCB9OwogCi1KU0NhbGxiYWNrRnVuY3Rpb246OkpTQ2Fs
bGJhY2tGdW5jdGlvbihFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIEpTT2JqZWN0Q2FsbEFzRnVuY3Rpb25DYWxsYmFjayBjYWxsYmFjaywgY29uc3QgSWRlbnRp
ZmllciYgbmFtZSkKLSAgICA6IEludGVybmFsRnVuY3Rpb24oJmV4ZWMtPmdsb2JhbERhdGEoKSwg
Z2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QtPmNhbGxiYWNrRnVuY3Rpb25TdHJ1Y3R1cmUoKSwg
bmFtZSkKK0pTQ2FsbGJhY2tGdW5jdGlvbjo6SlNDYWxsYmFja0Z1bmN0aW9uKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIEpTT2JqZWN0Q2FsbEFzRnVuY3Rpb25DYWxsYmFjayBjYWxsYmFj
aykKKyAgICA6IEludGVybmFsRnVuY3Rpb24oZ2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QtPmNh
bGxiYWNrRnVuY3Rpb25TdHJ1Y3R1cmUoKSkKICAgICAsIG1fY2FsbGJhY2soY2FsbGJhY2spCiB7
CiAgICAgQVNTRVJUKGluaGVyaXRzKCZzX2luZm8pKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9BUEkvSlNDYWxsYmFja0Z1bmN0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrRnVuY3Rpb24uaAkocmV2aXNpb24gOTIzMDgpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tGdW5jdGlvbi5oCSh3b3JraW5nIGNv
cHkpCkBAIC0zMywxMiArMzMsMTQgQEAgbmFtZXNwYWNlIEpTQyB7CiAKIGNsYXNzIEpTQ2FsbGJh
Y2tGdW5jdGlvbiA6IHB1YmxpYyBJbnRlcm5hbEZ1bmN0aW9uIHsKIHByb3RlY3RlZDoKLSAgICBK
U0NhbGxiYWNrRnVuY3Rpb24oRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqLCBKU09iamVjdENh
bGxBc0Z1bmN0aW9uQ2FsbGJhY2ssIGNvbnN0IElkZW50aWZpZXImIG5hbWUpOworICAgIEpTQ2Fs
bGJhY2tGdW5jdGlvbihKU0dsb2JhbE9iamVjdCosIEpTT2JqZWN0Q2FsbEFzRnVuY3Rpb25DYWxs
YmFjayk7CiAKIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDYWxsYmFja0Z1bmN0aW9uKiBjcmVhdGUo
RXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU09iamVjdENh
bGxBc0Z1bmN0aW9uQ2FsbGJhY2sgY2FsbGJhY2ssIGNvbnN0IElkZW50aWZpZXImIG5hbWUpCiAg
ICAgewotICAgICAgICByZXR1cm4gbmV3IChhbGxvY2F0ZUNlbGw8SlNDYWxsYmFja0Z1bmN0aW9u
PigqZXhlYy0+aGVhcCgpKSkgSlNDYWxsYmFja0Z1bmN0aW9uKGV4ZWMsIGdsb2JhbE9iamVjdCwg
Y2FsbGJhY2ssIG5hbWUpOworICAgICAgICBKU0NhbGxiYWNrRnVuY3Rpb24qIGNhbGxiYWNrRnVu
Y3Rpb24gPSBuZXcgKGFsbG9jYXRlQ2VsbDxKU0NhbGxiYWNrRnVuY3Rpb24+KCpleGVjLT5oZWFw
KCkpKSBKU0NhbGxiYWNrRnVuY3Rpb24oZ2xvYmFsT2JqZWN0LCBjYWxsYmFjayk7CisgICAgICAg
IGNhbGxiYWNrRnVuY3Rpb24tPmluaXRQcm9wZXJ0aWVzKGV4ZWMtPmdsb2JhbERhdGEoKSwgbmFt
ZSk7CisgICAgICAgIHJldHVybiBjYWxsYmFja0Z1bmN0aW9uOwogICAgIH0KIAogICAgIHN0YXRp
YyBjb25zdCBDbGFzc0luZm8gc19pbmZvOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
dGVycHJldGVyL0ludGVycHJldGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCShyZXZpc2lvbiA5MjMwOCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTEzODksMTAgKzEzODksMTEgQEAgTkVWRVJfSU5MSU5FIHZvaWQgSW50ZXJwcmV0
ZXI6OnRyeUNhY2hlUAogICAgICAgICBub3JtYWxpemVQcm90b3R5cGVDaGFpbihjYWxsRnJhbWUs
IGJhc2VDZWxsKTsKICAgICAgICAgSlNDZWxsKiBvd25lciA9IGNvZGVCbG9jay0+b3duZXJFeGVj
dXRhYmxlKCk7CiAgICAgICAgIEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSA9IGNhbGxGcmFtZS0+
Z2xvYmFsRGF0YSgpOworICAgICAgICBTdHJ1Y3R1cmVDaGFpbiogcHJvdG90eXBlQ2hhaW4gPSBz
dHJ1Y3R1cmUtPnByb3RvdHlwZUNoYWluKGNhbGxGcmFtZSk7CiAgICAgICAgIHZQQ1swXSA9IGdl
dE9wY29kZShvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbik7CiAgICAgICAgIHZQQ1s0XS51LnN0cnVj
dHVyZS5zZXQoZ2xvYmFsRGF0YSwgb3duZXIsIHN0cnVjdHVyZS0+cHJldmlvdXNJRCgpKTsKICAg
ICAgICAgdlBDWzVdLnUuc3RydWN0dXJlLnNldChnbG9iYWxEYXRhLCBvd25lciwgc3RydWN0dXJl
KTsKLSAgICAgICAgdlBDWzZdLnUuc3RydWN0dXJlQ2hhaW4uc2V0KGNhbGxGcmFtZS0+Z2xvYmFs
RGF0YSgpLCBjb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLCBzdHJ1Y3R1cmUtPnByb3RvdHlw
ZUNoYWluKGNhbGxGcmFtZSkpOworICAgICAgICB2UENbNl0udS5zdHJ1Y3R1cmVDaGFpbi5zZXQo
Y2FsbEZyYW1lLT5nbG9iYWxEYXRhKCksIGNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCksIHBy
b3RvdHlwZUNoYWluKTsKICAgICAgICAgQVNTRVJUKHZQQ1s2XS51LnN0cnVjdHVyZUNoYWluKTsK
ICAgICAgICAgdlBDWzddID0gc2xvdC5jYWNoZWRPZmZzZXQoKTsKICAgICAgICAgcmV0dXJuOwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlDb25zdHJ1Y3Rvci5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlDb25zdHJ1
Y3Rvci5jcHAJKHJldmlzaW9uIDkyMzA4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQXJyYXlDb25zdHJ1Y3Rvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUyLDcgKzUyLDcgQEAg
Y29uc3QgQ2xhc3NJbmZvIEFycmF5Q29uc3RydWN0b3I6OnNfaW5mbwogQVNTRVJUX0NMQVNTX0ZJ
VFNfSU5fQ0VMTChBcnJheUNvbnN0cnVjdG9yKTsKIAogQXJyYXlDb25zdHJ1Y3Rvcjo6QXJyYXlD
b25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IFN0cnVjdHVyZSogc3RydWN0dXJlLCBBcnJheVByb3RvdHlwZSogYXJyYXlQcm90b3R5cGUpCi0g
ICAgOiBJbnRlcm5hbEZ1bmN0aW9uKCZleGVjLT5nbG9iYWxEYXRhKCksIGdsb2JhbE9iamVjdCwg
c3RydWN0dXJlLCBJZGVudGlmaWVyKGV4ZWMsIGFycmF5UHJvdG90eXBlLT5jbGFzc0luZm8oKS0+
Y2xhc3NOYW1lKSkKKyAgICA6IEludGVybmFsRnVuY3Rpb24oZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1
cmUpCiB7CiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgp
LCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkucHJvdG90eXBlLCBhcnJheVByb3RvdHlwZSwgRG9udEVu
dW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkpOwogICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0
aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLmxlbmd0aCwganNO
dW1iZXIoMSksIFJlYWRPbmx5IHwgRG9udEVudW0gfCBEb250RGVsZXRlKTsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5Q29uc3RydWN0b3IuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUNvbnN0cnVjdG9yLmgJKHJldmlz
aW9uIDkyMzA4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlDb25zdHJ1
Y3Rvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMSwyMCArMjEsMjEgQEAKICNpZm5kZWYgQXJyYXlD
b25zdHJ1Y3Rvcl9oCiAjZGVmaW5lIEFycmF5Q29uc3RydWN0b3JfaAogCisjaW5jbHVkZSAiQXJy
YXlQcm90b3R5cGUuaCIKICNpbmNsdWRlICJJbnRlcm5hbEZ1bmN0aW9uLmgiCiAKIG5hbWVzcGFj
ZSBKU0MgewogCi0gICAgY2xhc3MgQXJyYXlQcm90b3R5cGU7Ci0KICAgICBjbGFzcyBBcnJheUNv
bnN0cnVjdG9yIDogcHVibGljIEludGVybmFsRnVuY3Rpb24gewogICAgIHByaXZhdGU6CiAgICAg
ICAgIEFycmF5Q29uc3RydWN0b3IoRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1
cmUqLCBBcnJheVByb3RvdHlwZSopOwogICAgICAgICAKICAgICBwdWJsaWM6Ci0gICAgICAgIHN0
YXRpYyBBcnJheUNvbnN0cnVjdG9yKiBjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgQXJyYXlQcm90b3R5cGUq
IGFyclByb3RvdHlwZSkKKyAgICAgICAgc3RhdGljIEFycmF5Q29uc3RydWN0b3IqIGNyZWF0ZShF
eGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSog
c3RydWN0dXJlLCBBcnJheVByb3RvdHlwZSogYXJyYXlQcm90b3R5cGUpCiAgICAgICAgIHsKLSAg
ICAgICAgICAgIHJldHVybiBuZXcgKGFsbG9jYXRlQ2VsbDxBcnJheUNvbnN0cnVjdG9yPigqZXhl
Yy0+aGVhcCgpKSkgQXJyYXlDb25zdHJ1Y3RvcihleGVjLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVy
ZSwgYXJyUHJvdG90eXBlKTsKKyAgICAgICAgICAgIEFycmF5Q29uc3RydWN0b3IqIGNvbnN0cnVj
dG9yID0gbmV3IChhbGxvY2F0ZUNlbGw8QXJyYXlDb25zdHJ1Y3Rvcj4oKmV4ZWMtPmhlYXAoKSkp
IEFycmF5Q29uc3RydWN0b3IoZXhlYywgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIGFycmF5UHJv
dG90eXBlKTsKKyAgICAgICAgICAgIGNvbnN0cnVjdG9yLT5pbml0UHJvcGVydGllcyhleGVjLT5n
bG9iYWxEYXRhKCksIElkZW50aWZpZXIoZXhlYywgYXJyYXlQcm90b3R5cGUtPmNsYXNzSW5mbygp
LT5jbGFzc05hbWUpKTsKKyAgICAgICAgICAgIHJldHVybiBjb25zdHJ1Y3RvcjsKICAgICAgICAg
fQogCiAgICAgICAgIHN0YXRpYyBjb25zdCBDbGFzc0luZm8gc19pbmZvOwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQm9vbGVhbkNvbnN0cnVjdG9yLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Cb29sZWFuQ29uc3RydWN0b3IuY3Bw
CShyZXZpc2lvbiA5MjMwOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Jvb2xl
YW5Db25zdHJ1Y3Rvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5LDcgKzI5LDcgQEAgbmFtZXNw
YWNlIEpTQyB7CiBBU1NFUlRfQ0xBU1NfRklUU19JTl9DRUxMKEJvb2xlYW5Db25zdHJ1Y3Rvcik7
CiAKIEJvb2xlYW5Db25zdHJ1Y3Rvcjo6Qm9vbGVhbkNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogZXhl
YywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEJv
b2xlYW5Qcm90b3R5cGUqIGJvb2xlYW5Qcm90b3R5cGUpCi0gICAgOiBJbnRlcm5hbEZ1bmN0aW9u
KCZleGVjLT5nbG9iYWxEYXRhKCksIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBJZGVudGlmaWVy
KGV4ZWMsIGJvb2xlYW5Qcm90b3R5cGUtPmNsYXNzSW5mbygpLT5jbGFzc05hbWUpKQorICAgIDog
SW50ZXJuYWxGdW5jdGlvbihnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSkKIHsKICAgICBwdXREaXJl
Y3RXaXRob3V0VHJhbnNpdGlvbihleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPnByb3BlcnR5TmFt
ZXMoKS5wcm90b3R5cGUsIGJvb2xlYW5Qcm90b3R5cGUsIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8
IFJlYWRPbmx5KTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQm9vbGVh
bkNvbnN0cnVjdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQm9vbGVhbkNvbnN0cnVjdG9yLmgJKHJldmlzaW9uIDkyMzA4KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQm9vbGVhbkNvbnN0cnVjdG9yLmgJKHdvcmtpbmcgY29weSkKQEAg
LTIxLDIwICsyMSwyMSBAQAogI2lmbmRlZiBCb29sZWFuQ29uc3RydWN0b3JfaAogI2RlZmluZSBC
b29sZWFuQ29uc3RydWN0b3JfaAogCisjaW5jbHVkZSAiQm9vbGVhblByb3RvdHlwZS5oIgogI2lu
Y2x1ZGUgIkludGVybmFsRnVuY3Rpb24uaCIKIAogbmFtZXNwYWNlIEpTQyB7CiAKLSAgICBjbGFz
cyBCb29sZWFuUHJvdG90eXBlOwotCiAgICAgY2xhc3MgQm9vbGVhbkNvbnN0cnVjdG9yIDogcHVi
bGljIEludGVybmFsRnVuY3Rpb24gewogICAgIHByaXZhdGU6CiAgICAgICAgIEJvb2xlYW5Db25z
dHJ1Y3RvcihFeGVjU3RhdGUqLCBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIEJvb2xlYW5Q
cm90b3R5cGUqKTsKICAgICAgICAgCiAgICAgcHVibGljOgotICAgICAgICBzdGF0aWMgQm9vbGVh
bkNvbnN0cnVjdG9yKiBjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgQm9vbGVhblByb3RvdHlwZSogYm9vbFBy
b3RvdHlwZSkKKyAgICAgICAgc3RhdGljIEJvb2xlYW5Db25zdHJ1Y3RvciogY3JlYXRlKEV4ZWNT
dGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUsIEJvb2xlYW5Qcm90b3R5cGUqIGJvb2xlYW5Qcm90b3R5cGUpCiAgICAgICAgIHsKLSAg
ICAgICAgICAgIHJldHVybiBuZXcgKGFsbG9jYXRlQ2VsbDxCb29sZWFuQ29uc3RydWN0b3I+KCpl
eGVjLT5oZWFwKCkpKSBCb29sZWFuQ29uc3RydWN0b3IoZXhlYywgZ2xvYmFsT2JqZWN0LCBzdHJ1
Y3R1cmUsIGJvb2xQcm90b3R5cGUpOworICAgICAgICAgICAgQm9vbGVhbkNvbnN0cnVjdG9yKiBj
b25zdHJ1Y3RvciA9IG5ldyAoYWxsb2NhdGVDZWxsPEJvb2xlYW5Db25zdHJ1Y3Rvcj4oKmV4ZWMt
PmhlYXAoKSkpIEJvb2xlYW5Db25zdHJ1Y3RvcihleGVjLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVy
ZSwgYm9vbGVhblByb3RvdHlwZSk7CisgICAgICAgICAgICBjb25zdHJ1Y3Rvci0+aW5pdFByb3Bl
cnRpZXMoZXhlYy0+Z2xvYmFsRGF0YSgpLCBJZGVudGlmaWVyKGV4ZWMsIGJvb2xlYW5Qcm90b3R5
cGUtPmNsYXNzSW5mbygpLT5jbGFzc05hbWUpKTsKKyAgICAgICAgICAgIHJldHVybiBjb25zdHJ1
Y3RvcjsKICAgICAgICAgfQogCiAgICAgcHJpdmF0ZToKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0RhdGVDb25zdHJ1Y3Rvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZUNvbnN0cnVjdG9yLmNwcAkocmV2aXNpb24gOTIzMDgp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlQ29uc3RydWN0b3IuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC03NCw3ICs3NCw3IEBAIGNvbnN0IENsYXNzSW5mbyBEYXRlQ29uc3Ry
dWN0b3I6OnNfaW5mbyAKIEFTU0VSVF9DTEFTU19GSVRTX0lOX0NFTEwoRGF0ZUNvbnN0cnVjdG9y
KTsKIAogRGF0ZUNvbnN0cnVjdG9yOjpEYXRlQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBleGVjLCBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgRGF0ZVBy
b3RvdHlwZSogZGF0ZVByb3RvdHlwZSkKLSAgICA6IEludGVybmFsRnVuY3Rpb24oJmV4ZWMtPmds
b2JhbERhdGEoKSwgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIElkZW50aWZpZXIoZXhlYywgZGF0
ZVByb3RvdHlwZS0+Y2xhc3NJbmZvKCktPmNsYXNzTmFtZSkpCisgICAgOiBJbnRlcm5hbEZ1bmN0
aW9uKGdsb2JhbE9iamVjdCwgc3RydWN0dXJlKQogewogICAgIHB1dERpcmVjdFdpdGhvdXRUcmFu
c2l0aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLnByb3RvdHlw
ZSwgZGF0ZVByb3RvdHlwZSwgRG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkpOwogICAg
IHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+cHJv
cGVydHlOYW1lcygpLmxlbmd0aCwganNOdW1iZXIoNyksIFJlYWRPbmx5IHwgRG9udEVudW0gfCBE
b250RGVsZXRlKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVDb25z
dHJ1Y3Rvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Rh
dGVDb25zdHJ1Y3Rvci5oCShyZXZpc2lvbiA5MjMwOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0RhdGVDb25zdHJ1Y3Rvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMSwxMiArMjEs
MTEgQEAKICNpZm5kZWYgRGF0ZUNvbnN0cnVjdG9yX2gKICNkZWZpbmUgRGF0ZUNvbnN0cnVjdG9y
X2gKIAorI2luY2x1ZGUgIkRhdGVQcm90b3R5cGUuaCIKICNpbmNsdWRlICJJbnRlcm5hbEZ1bmN0
aW9uLmgiCiAKIG5hbWVzcGFjZSBKU0MgewogCi0gICAgY2xhc3MgRGF0ZVByb3RvdHlwZTsKLQog
ICAgIGNsYXNzIERhdGVDb25zdHJ1Y3RvciA6IHB1YmxpYyBJbnRlcm5hbEZ1bmN0aW9uIHsKICAg
ICBwcml2YXRlOgogICAgICAgICBEYXRlQ29uc3RydWN0b3IoRXhlY1N0YXRlKiwgSlNHbG9iYWxP
YmplY3QqLCBTdHJ1Y3R1cmUqLCBEYXRlUHJvdG90eXBlKik7CkBAIC0zNCw3ICszMyw5IEBAIG5h
bWVzcGFjZSBKU0MgewogICAgIHB1YmxpYzoKICAgICAgICAgc3RhdGljIERhdGVDb25zdHJ1Y3Rv
ciogY3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIERhdGVQcm90b3R5cGUqIGRhdGVQcm90b3R5cGUpCiAgICAg
ICAgIHsKLSAgICAgICAgICAgIHJldHVybiBuZXcgKGFsbG9jYXRlQ2VsbDxEYXRlQ29uc3RydWN0
b3I+KCpleGVjLT5oZWFwKCkpKSBEYXRlQ29uc3RydWN0b3IoZXhlYywgZ2xvYmFsT2JqZWN0LCBz
dHJ1Y3R1cmUsIGRhdGVQcm90b3R5cGUpOworICAgICAgICAgICAgRGF0ZUNvbnN0cnVjdG9yKiBj
b25zdHJ1Y3RvciA9IG5ldyAoYWxsb2NhdGVDZWxsPERhdGVDb25zdHJ1Y3Rvcj4oKmV4ZWMtPmhl
YXAoKSkpIERhdGVDb25zdHJ1Y3RvcihleGVjLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgZGF0
ZVByb3RvdHlwZSk7CisgICAgICAgICAgICBjb25zdHJ1Y3Rvci0+aW5pdFByb3BlcnRpZXMoZXhl
Yy0+Z2xvYmFsRGF0YSgpLCBJZGVudGlmaWVyKGV4ZWMsIGRhdGVQcm90b3R5cGUtPmNsYXNzSW5m
bygpLT5jbGFzc05hbWUpKTsKKyAgICAgICAgICAgIHJldHVybiBjb25zdHJ1Y3RvcjsKICAgICAg
ICAgfQogCiAgICAgICAgIHN0YXRpYyBjb25zdCBDbGFzc0luZm8gc19pbmZvOwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3IuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yLmNwcAkocmV2aXNpb24gOTIzMDgpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvci5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTE2Nyw4ICsxNjcsOCBAQCBKU09iamVjdCogdGhyb3dTeW50YXhFcnJvcihFeGVjU3RhdGUqIGV4
CiAKIGNsYXNzIFN0cmljdE1vZGVUeXBlRXJyb3JGdW5jdGlvbiA6IHB1YmxpYyBJbnRlcm5hbEZ1
bmN0aW9uIHsKIHByaXZhdGU6Ci0gICAgU3RyaWN0TW9kZVR5cGVFcnJvckZ1bmN0aW9uKEV4ZWNT
dGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUsIGNvbnN0IFVTdHJpbmcmIG1lc3NhZ2UpCi0gICAgICAgIDogSW50ZXJuYWxGdW5jdGlv
bigmZXhlYy0+Z2xvYmFsRGF0YSgpLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgZXhlYy0+Z2xv
YmFsRGF0YSgpLnByb3BlcnR5TmFtZXMtPmVtcHR5SWRlbnRpZmllcikKKyAgICBTdHJpY3RNb2Rl
VHlwZUVycm9yRnVuY3Rpb24oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJl
KiBzdHJ1Y3R1cmUsIGNvbnN0IFVTdHJpbmcmIG1lc3NhZ2UpCisgICAgICAgIDogSW50ZXJuYWxG
dW5jdGlvbihnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSkKICAgICAgICAgLCBtX21lc3NhZ2UobWVz
c2FnZSkKICAgICB7CiAgICAgfQpAQCAtMTc2LDcgKzE3Niw5IEBAIHByaXZhdGU6CiBwdWJsaWM6
CiAgICAgc3RhdGljIFN0cmljdE1vZGVUeXBlRXJyb3JGdW5jdGlvbiogY3JlYXRlKEV4ZWNTdGF0
ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUsIGNvbnN0IFVTdHJpbmcmIG1lc3NhZ2UpCiAgICAgewotICAgICAgICByZXR1cm4gbmV3IChh
bGxvY2F0ZUNlbGw8U3RyaWN0TW9kZVR5cGVFcnJvckZ1bmN0aW9uPigqZXhlYy0+aGVhcCgpKSkg
U3RyaWN0TW9kZVR5cGVFcnJvckZ1bmN0aW9uKGV4ZWMsIGdsb2JhbE9iamVjdCwgc3RydWN0dXJl
LCBtZXNzYWdlKTsKKyAgICAgICAgU3RyaWN0TW9kZVR5cGVFcnJvckZ1bmN0aW9uKiBmdW5jdGlv
biA9IG5ldyAoYWxsb2NhdGVDZWxsPFN0cmljdE1vZGVUeXBlRXJyb3JGdW5jdGlvbj4oKmV4ZWMt
PmhlYXAoKSkpIFN0cmljdE1vZGVUeXBlRXJyb3JGdW5jdGlvbihnbG9iYWxPYmplY3QsIHN0cnVj
dHVyZSwgbWVzc2FnZSk7CisgICAgICAgIGZ1bmN0aW9uLT5pbml0UHJvcGVydGllcyhleGVjLT5n
bG9iYWxEYXRhKCksIGV4ZWMtPmdsb2JhbERhdGEoKS5wcm9wZXJ0eU5hbWVzLT5lbXB0eUlkZW50
aWZpZXIpOworICAgICAgICByZXR1cm4gZnVuY3Rpb247CiAgICAgfQogICAgIAogICAgIHN0YXRp
YyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdFRocm93VHlwZUVycm9yKEV4
ZWNTdGF0ZSogZXhlYykKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9y
Q29uc3RydWN0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0Vycm9yQ29uc3RydWN0b3IuY3BwCShyZXZpc2lvbiA5MjMwOCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yQ29uc3RydWN0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0zMCw3ICszMCw3IEBAIG5hbWVzcGFjZSBKU0MgewogQVNTRVJUX0NMQVNTX0ZJVFNfSU5fQ0VM
TChFcnJvckNvbnN0cnVjdG9yKTsKIAogRXJyb3JDb25zdHJ1Y3Rvcjo6RXJyb3JDb25zdHJ1Y3Rv
cihFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVy
ZSogc3RydWN0dXJlLCBFcnJvclByb3RvdHlwZSogZXJyb3JQcm90b3R5cGUpCi0gICAgOiBJbnRl
cm5hbEZ1bmN0aW9uKCZleGVjLT5nbG9iYWxEYXRhKCksIGdsb2JhbE9iamVjdCwgc3RydWN0dXJl
LCBJZGVudGlmaWVyKGV4ZWMsIGVycm9yUHJvdG90eXBlLT5jbGFzc0luZm8oKS0+Y2xhc3NOYW1l
KSkKKyAgICA6IEludGVybmFsRnVuY3Rpb24oZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUpCiB7CiAg
ICAgLy8gRUNNQSAxNS4xMS4zLjEgRXJyb3IucHJvdG90eXBlCiAgICAgcHV0RGlyZWN0V2l0aG91
dFRyYW5zaXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkucHJv
dG90eXBlLCBlcnJvclByb3RvdHlwZSwgRG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkp
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JDb25zdHJ1Y3Rvci5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yQ29uc3Ry
dWN0b3IuaAkocmV2aXNpb24gOTIzMDgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9FcnJvckNvbnN0cnVjdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTIyLDYgKzIyLDcgQEAKICNk
ZWZpbmUgRXJyb3JDb25zdHJ1Y3Rvcl9oCiAKICNpbmNsdWRlICJFcnJvckluc3RhbmNlLmgiCisj
aW5jbHVkZSAiRXJyb3JQcm90b3R5cGUuaCIKICNpbmNsdWRlICJJbnRlcm5hbEZ1bmN0aW9uLmgi
CiAKIG5hbWVzcGFjZSBKU0MgewpAQCAtMzMsOSArMzQsMTEgQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgICAgIEVycm9yQ29uc3RydWN0b3IoRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1
Y3R1cmUqLCBFcnJvclByb3RvdHlwZSopOwogCiAgICAgcHVibGljOgotICAgICAgICBzdGF0aWMg
RXJyb3JDb25zdHJ1Y3RvciogY3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEVycm9yUHJvdG90eXBlKiBlcnJQ
cm90b3R5cGUpCisgICAgICAgIHN0YXRpYyBFcnJvckNvbnN0cnVjdG9yKiBjcmVhdGUoRXhlY1N0
YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSwgRXJyb3JQcm90b3R5cGUqIGVycm9yUHJvdG90eXBlKQogICAgICAgICB7Ci0gICAgICAg
ICAgICByZXR1cm4gbmV3IChhbGxvY2F0ZUNlbGw8RXJyb3JDb25zdHJ1Y3Rvcj4oKmV4ZWMtPmhl
YXAoKSkpIEVycm9yQ29uc3RydWN0b3IoZXhlYywgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIGVy
clByb3RvdHlwZSk7CisgICAgICAgICAgICBFcnJvckNvbnN0cnVjdG9yKiBjb25zdHJ1Y3RvciA9
IG5ldyAoYWxsb2NhdGVDZWxsPEVycm9yQ29uc3RydWN0b3I+KCpleGVjLT5oZWFwKCkpKSBFcnJv
ckNvbnN0cnVjdG9yKGV4ZWMsIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBlcnJvclByb3RvdHlw
ZSk7CisgICAgICAgICAgICBjb25zdHJ1Y3Rvci0+aW5pdFByb3BlcnRpZXMoZXhlYy0+Z2xvYmFs
RGF0YSgpLCBJZGVudGlmaWVyKGV4ZWMsIGVycm9yUHJvdG90eXBlLT5jbGFzc0luZm8oKS0+Y2xh
c3NOYW1lKSk7CisgICAgICAgICAgICByZXR1cm4gY29uc3RydWN0b3I7CiAgICAgICAgIH0KICAg
ICAgICAgCiAgICAgcHJpdmF0ZToKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0Vycm9ySW5zdGFuY2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0Vycm9ySW5zdGFuY2UuY3BwCShyZXZpc2lvbiA5MjMwOCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0Vycm9ySW5zdGFuY2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0z
MCwyNyArMzAsMjggQEAgRXJyb3JJbnN0YW5jZTo6RXJyb3JJbnN0YW5jZShKU0dsb2JhbERhdAog
ICAgICwgbV9hcHBlbmRTb3VyY2VUb01lc3NhZ2UoZmFsc2UpCiB7CiAgICAgQVNTRVJUKGluaGVy
aXRzKCZzX2luZm8pKTsKLSAgICBwdXREaXJlY3QoZ2xvYmFsRGF0YSwgZ2xvYmFsRGF0YS5wcm9w
ZXJ0eU5hbWVzLT5tZXNzYWdlLCBqc1N0cmluZygmZ2xvYmFsRGF0YSwgIiIpLCBEb250RW51bSk7
Ci19Ci0KLUVycm9ySW5zdGFuY2U6OkVycm9ySW5zdGFuY2UoSlNHbG9iYWxEYXRhJiBnbG9iYWxE
YXRhLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgY29uc3QgVVN0cmluZyYgbWVzc2FnZSkKLSAgICA6
IEpTTm9uRmluYWxPYmplY3QoZ2xvYmFsRGF0YSwgc3RydWN0dXJlKQotICAgICwgbV9hcHBlbmRT
b3VyY2VUb01lc3NhZ2UoZmFsc2UpCi17Ci0gICAgQVNTRVJUKGluaGVyaXRzKCZzX2luZm8pKTsK
LSAgICBwdXREaXJlY3QoZ2xvYmFsRGF0YSwgZ2xvYmFsRGF0YS5wcm9wZXJ0eU5hbWVzLT5tZXNz
YWdlLCBqc1N0cmluZygmZ2xvYmFsRGF0YSwgbWVzc2FnZSksIERvbnRFbnVtKTsKIH0KIAogRXJy
b3JJbnN0YW5jZSogRXJyb3JJbnN0YW5jZTo6Y3JlYXRlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0
YSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IFVTdHJpbmcmIG1lc3NhZ2UpCiB7Ci0gICAg
cmV0dXJuIG5ldyAoYWxsb2NhdGVDZWxsPEVycm9ySW5zdGFuY2U+KGdsb2JhbERhdGEuaGVhcCkp
IEVycm9ySW5zdGFuY2UoZ2xvYmFsRGF0YSwgc3RydWN0dXJlLCBtZXNzYWdlKTsKKyAgICBFcnJv
ckluc3RhbmNlKiBlcnJvckluc3RhbmNlID0gbmV3IChhbGxvY2F0ZUNlbGw8RXJyb3JJbnN0YW5j
ZT4oZ2xvYmFsRGF0YS5oZWFwKSkgRXJyb3JJbnN0YW5jZShnbG9iYWxEYXRhLCBzdHJ1Y3R1cmUp
OworICAgIGVycm9ySW5zdGFuY2UtPnB1dERpcmVjdChnbG9iYWxEYXRhLCBnbG9iYWxEYXRhLnBy
b3BlcnR5TmFtZXMtPm1lc3NhZ2UsIGpzU3RyaW5nKCZnbG9iYWxEYXRhLCBtZXNzYWdlKSwgRG9u
dEVudW0pOworICAgIHJldHVybiBlcnJvckluc3RhbmNlOwogfQogCiBFcnJvckluc3RhbmNlKiBF
cnJvckluc3RhbmNlOjpjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSwgSlNWYWx1ZSBtZXNzYWdlKQogewotICAgIGlmIChtZXNzYWdlLmlzVW5kZWZpbmVkKCkpCi0g
ICAgICAgIHJldHVybiBuZXcgKGFsbG9jYXRlQ2VsbDxFcnJvckluc3RhbmNlPigqZXhlYy0+aGVh
cCgpKSkgRXJyb3JJbnN0YW5jZShleGVjLT5nbG9iYWxEYXRhKCksIHN0cnVjdHVyZSk7Ci0gICAg
cmV0dXJuIG5ldyAoYWxsb2NhdGVDZWxsPEVycm9ySW5zdGFuY2U+KCpleGVjLT5oZWFwKCkpKSBF
cnJvckluc3RhbmNlKGV4ZWMtPmdsb2JhbERhdGEoKSwgc3RydWN0dXJlLCBtZXNzYWdlLnRvU3Ry
aW5nKGV4ZWMpKTsKKyAgICBFcnJvckluc3RhbmNlKiBlcnJvckluc3RhbmNlOworICAgIEpTU3Ry
aW5nKiBzdHJpbmc7CisgICAgaWYgKG1lc3NhZ2UuaXNVbmRlZmluZWQoKSkgeworICAgICAgICBl
cnJvckluc3RhbmNlID0gbmV3IChhbGxvY2F0ZUNlbGw8RXJyb3JJbnN0YW5jZT4oKmV4ZWMtPmhl
YXAoKSkpIEVycm9ySW5zdGFuY2UoZXhlYy0+Z2xvYmFsRGF0YSgpLCBzdHJ1Y3R1cmUpOworICAg
ICAgICBzdHJpbmcgPSBqc1N0cmluZygmZXhlYy0+Z2xvYmFsRGF0YSgpLCAiIik7CisgICAgfSBl
bHNlIHsKKyAgICAgICAgZXJyb3JJbnN0YW5jZSA9IG5ldyAoYWxsb2NhdGVDZWxsPEVycm9ySW5z
dGFuY2U+KCpleGVjLT5oZWFwKCkpKSBFcnJvckluc3RhbmNlKGV4ZWMtPmdsb2JhbERhdGEoKSwg
c3RydWN0dXJlKTsKKyAgICAgICAgc3RyaW5nID0ganNTdHJpbmcoJmV4ZWMtPmdsb2JhbERhdGEo
KSwgbWVzc2FnZS50b1N0cmluZyhleGVjKSk7CisgICAgfQorICAgIGVycm9ySW5zdGFuY2UtPnB1
dERpcmVjdChleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPmdsb2JhbERhdGEoKS5wcm9wZXJ0eU5h
bWVzLT5tZXNzYWdlLCBzdHJpbmcsIERvbnRFbnVtKTsKKyAgICByZXR1cm4gZXJyb3JJbnN0YW5j
ZTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9FcnJvckluc3RhbmNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvRXJyb3JJbnN0YW5jZS5oCShyZXZpc2lvbiA5MjMwOCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9ySW5zdGFuY2UuaAkod29ya2luZyBjb3B5KQpAQCAt
NDUsOCArNDUsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdmlydHVhbCBib29sIGlzRXJy
b3JJbnN0YW5jZSgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KIAogICAgIHByb3RlY3RlZDoKLSAg
ICAgICAgZXhwbGljaXQgRXJyb3JJbnN0YW5jZShKU0dsb2JhbERhdGEmLCBTdHJ1Y3R1cmUqKTsK
LSAgICAgICAgZXhwbGljaXQgRXJyb3JJbnN0YW5jZShKU0dsb2JhbERhdGEmLCBTdHJ1Y3R1cmUq
LCBjb25zdCBVU3RyaW5nJik7CisgICAgICAgIEVycm9ySW5zdGFuY2UoSlNHbG9iYWxEYXRhJiwg
U3RydWN0dXJlKik7CiAKICAgICAgICAgYm9vbCBtX2FwcGVuZFNvdXJjZVRvTWVzc2FnZTsKICAg
ICB9OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JQcm90b3R5cGUu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yUHJv
dG90eXBlLmNwcAkocmV2aXNpb24gOTIzMDgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9FcnJvclByb3RvdHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUzLDggKzUzLDYgQEAg
QVNTRVJUX0NMQVNTX0ZJVFNfSU5fQ0VMTChFcnJvclByb3RvdHlwZQogRXJyb3JQcm90b3R5cGU6
OkVycm9yUHJvdG90eXBlKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAgICAgOiBFcnJvckluc3RhbmNlKGV4ZWMtPmds
b2JhbERhdGEoKSwgc3RydWN0dXJlKQogewotICAgIHB1dERpcmVjdChleGVjLT5nbG9iYWxEYXRh
KCksIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5uYW1lLCBqc05vbnRyaXZpYWxTdHJpbmcoZXhlYywg
IkVycm9yIiksIERvbnRFbnVtKTsKLQogICAgIEFTU0VSVChpbmhlcml0cygmc19pbmZvKSk7CiAg
ICAgcHV0QW5vbnltb3VzVmFsdWUoZ2xvYmFsT2JqZWN0LT5nbG9iYWxEYXRhKCksIDAsIGdsb2Jh
bE9iamVjdCk7CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvclBy
b3RvdHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vy
cm9yUHJvdG90eXBlLmgJKHJldmlzaW9uIDkyMzA4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvRXJyb3JQcm90b3R5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMzQsNyArMzQsOSBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICBwdWJsaWM6CiAgICAgICAgIHN0YXRpYyBFcnJvclByb3Rv
dHlwZSogY3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBu
ZXcgKGFsbG9jYXRlQ2VsbDxFcnJvclByb3RvdHlwZT4oKmV4ZWMtPmhlYXAoKSkpIEVycm9yUHJv
dG90eXBlKGV4ZWMsIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlKTsKKyAgICAgICAgICAgIEVycm9y
UHJvdG90eXBlKiBlcnJvclByb3RvdHlwZSA9IG5ldyAoYWxsb2NhdGVDZWxsPEVycm9yUHJvdG90
eXBlPigqZXhlYy0+aGVhcCgpKSkgRXJyb3JQcm90b3R5cGUoZXhlYywgZ2xvYmFsT2JqZWN0LCBz
dHJ1Y3R1cmUpOworICAgICAgICAgICAgZXJyb3JQcm90b3R5cGUtPnB1dERpcmVjdChleGVjLT5n
bG9iYWxEYXRhKCksIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5uYW1lLCBqc05vbnRyaXZpYWxTdHJp
bmcoZXhlYywgIkVycm9yIiksIERvbnRFbnVtKTsKKyAgICAgICAgICAgIHJldHVybiBlcnJvclBy
b3RvdHlwZTsKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgc3RhdGljIGNvbnN0IENsYXNz
SW5mbyBzX2luZm87CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRh
YmxlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVj
dXRhYmxlLmNwcAkocmV2aXNpb24gOTIzMDgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9FeGVjdXRhYmxlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQ0LDcgKzE0NCw2IEBAIEZ1
bmN0aW9uRXhlY3V0YWJsZTo6RnVuY3Rpb25FeGVjdXRhYmxlKEoKIHsKICAgICBtX2ZpcnN0TGlu
ZSA9IGZpcnN0TGluZTsKICAgICBtX2xhc3RMaW5lID0gbGFzdExpbmU7Ci0gICAgbV9uYW1lVmFs
dWUuc2V0KGdsb2JhbERhdGEsIHRoaXMsIGpzU3RyaW5nKCZnbG9iYWxEYXRhLCBuYW1lLnVzdHJp
bmcoKSkpOwogfQogCiBGdW5jdGlvbkV4ZWN1dGFibGU6OkZ1bmN0aW9uRXhlY3V0YWJsZShFeGVj
U3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIG5hbWUsIGNvbnN0IFNvdXJjZUNvZGUmIHNv
dXJjZSwgYm9vbCBmb3JjZVVzZXNBcmd1bWVudHMsIEZ1bmN0aW9uUGFyYW1ldGVycyogcGFyYW1l
dGVycywgYm9vbCBpblN0cmljdENvbnRleHQsIGludCBmaXJzdExpbmUsIGludCBsYXN0TGluZSkK
QEAgLTE1Nyw3ICsxNTYsNiBAQCBGdW5jdGlvbkV4ZWN1dGFibGU6OkZ1bmN0aW9uRXhlY3V0YWJs
ZShFCiB7CiAgICAgbV9maXJzdExpbmUgPSBmaXJzdExpbmU7CiAgICAgbV9sYXN0TGluZSA9IGxh
c3RMaW5lOwotICAgIG1fbmFtZVZhbHVlLnNldChleGVjLT5nbG9iYWxEYXRhKCksIHRoaXMsIGpz
U3RyaW5nKCZleGVjLT5nbG9iYWxEYXRhKCksIG5hbWUudXN0cmluZygpKSk7CiB9CiAKIApJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuaAkocmV2aXNpb24g
OTIzMDgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmgJKHdv
cmtpbmcgY29weSkKQEAgLTE3OCw3ICsxNzgsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICNlbHNlCiAg
ICAgICAgIHN0YXRpYyBOYXRpdmVFeGVjdXRhYmxlKiBjcmVhdGUoSlNHbG9iYWxEYXRhJiBnbG9i
YWxEYXRhLCBOYXRpdmVGdW5jdGlvbiBmdW5jdGlvbiwgTmF0aXZlRnVuY3Rpb24gY29uc3RydWN0
b3IpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBuZXcgKGFsbG9jYXRlQ2VsbDxOYXRp
dmVFeGVjdXRhYmxlPihnbG9iYWxEYXRhLmhlYXApKSBOYXRpdmVFeGVjdXRhYmxlKGdsb2JhbERh
dGEsIGZ1bmN0aW9uLCBjb25zdHJ1Y3Rvcik7CisgICAgICAgICAgICByZXR1cm4gbmV3IChhbGxv
Y2F0ZUNlbGw8TmF0aXZlRXhlY3V0YWJsZT4oZ2xvYmFsRGF0YS5oZWFwKSkgTmF0aXZlRXhlY3V0
YWJsZShnbG9iYWxEYXRhLCBmdW5jdGlvbiwgY29uc3RydWN0b3IpKTsKICAgICAgICAgfQogI2Vu
ZGlmCiAKQEAgLTI5OCw3ICsyOTgsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBzdGF0
aWMgRXZhbEV4ZWN1dGFibGUqIGNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFNvdXJjZUNv
ZGUmIHNvdXJjZSwgYm9vbCBpc0luU3RyaWN0Q29udGV4dCkgCiAgICAgICAgIHsKLSAgICAgICAg
ICAgIHJldHVybiBuZXcgKGFsbG9jYXRlQ2VsbDxFdmFsRXhlY3V0YWJsZT4oKmV4ZWMtPmhlYXAo
KSkpIEV2YWxFeGVjdXRhYmxlKGV4ZWMsIHNvdXJjZSwgaXNJblN0cmljdENvbnRleHQpOyAKKyAg
ICAgICAgICAgIHJldHVybiBuZXcgKGFsbG9jYXRlQ2VsbDxFdmFsRXhlY3V0YWJsZT4oKmV4ZWMt
PmhlYXAoKSkpIEV2YWxFeGVjdXRhYmxlKGV4ZWMsIHNvdXJjZSwgaXNJblN0cmljdENvbnRleHQp
OwogICAgICAgICB9CiAKICNpZiBFTkFCTEUoSklUKQpAQCAtMzgxLDEyICszODEsMTggQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgcHVibGljOgogICAgICAgICBzdGF0aWMgRnVuY3Rpb25FeGVjdXRh
YmxlKiBjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBuYW1lLCBjb25z
dCBTb3VyY2VDb2RlJiBzb3VyY2UsIGJvb2wgZm9yY2VVc2VzQXJndW1lbnRzLCBGdW5jdGlvblBh
cmFtZXRlcnMqIHBhcmFtZXRlcnMsIGJvb2wgaXNJblN0cmljdENvbnRleHQsIGludCBmaXJzdExp
bmUsIGludCBsYXN0TGluZSkKICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIG5ldyAoYWxs
b2NhdGVDZWxsPEZ1bmN0aW9uRXhlY3V0YWJsZT4oKmV4ZWMtPmhlYXAoKSkpIEZ1bmN0aW9uRXhl
Y3V0YWJsZShleGVjLCBuYW1lLCBzb3VyY2UsIGZvcmNlVXNlc0FyZ3VtZW50cywgcGFyYW1ldGVy
cywgaXNJblN0cmljdENvbnRleHQsIGZpcnN0TGluZSwgbGFzdExpbmUpOworICAgICAgICAgICAg
RnVuY3Rpb25FeGVjdXRhYmxlKiBmdW5jdGlvbiA9IG5ldyAoYWxsb2NhdGVDZWxsPEZ1bmN0aW9u
RXhlY3V0YWJsZT4oKmV4ZWMtPmhlYXAoKSkpIEZ1bmN0aW9uRXhlY3V0YWJsZShleGVjLCBuYW1l
LCBzb3VyY2UsIGZvcmNlVXNlc0FyZ3VtZW50cywgcGFyYW1ldGVycywgaXNJblN0cmljdENvbnRl
eHQsIGZpcnN0TGluZSwgbGFzdExpbmUpOworICAgICAgICAgICAgSlNTdHJpbmcqIG5hbWVTdHJp
bmcgPSBqc1N0cmluZygmZXhlYy0+Z2xvYmFsRGF0YSgpLCBuYW1lLnVzdHJpbmcoKSk7CisgICAg
ICAgICAgICBmdW5jdGlvbi0+bV9uYW1lVmFsdWUuc2V0KGV4ZWMtPmdsb2JhbERhdGEoKSwgZnVu
Y3Rpb24sIG5hbWVTdHJpbmcpOworICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uOwogICAgICAg
ICB9CiAKICAgICAgICAgc3RhdGljIEZ1bmN0aW9uRXhlY3V0YWJsZSogY3JlYXRlKEpTR2xvYmFs
RGF0YSYgZ2xvYmFsRGF0YSwgY29uc3QgSWRlbnRpZmllciYgbmFtZSwgY29uc3QgU291cmNlQ29k
ZSYgc291cmNlLCBib29sIGZvcmNlVXNlc0FyZ3VtZW50cywgRnVuY3Rpb25QYXJhbWV0ZXJzKiBw
YXJhbWV0ZXJzLCBib29sIGlzSW5TdHJpY3RDb250ZXh0LCBpbnQgZmlyc3RMaW5lLCBpbnQgbGFz
dExpbmUpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBuZXcgKGFsbG9jYXRlQ2VsbDxG
dW5jdGlvbkV4ZWN1dGFibGU+KGdsb2JhbERhdGEuaGVhcCkpIEZ1bmN0aW9uRXhlY3V0YWJsZShn
bG9iYWxEYXRhLCBuYW1lLCBzb3VyY2UsIGZvcmNlVXNlc0FyZ3VtZW50cywgcGFyYW1ldGVycywg
aXNJblN0cmljdENvbnRleHQsIGZpcnN0TGluZSwgbGFzdExpbmUpOworICAgICAgICAgICAgRnVu
Y3Rpb25FeGVjdXRhYmxlKiBmdW5jdGlvbiA9IG5ldyAoYWxsb2NhdGVDZWxsPEZ1bmN0aW9uRXhl
Y3V0YWJsZT4oZ2xvYmFsRGF0YS5oZWFwKSkgRnVuY3Rpb25FeGVjdXRhYmxlKGdsb2JhbERhdGEs
IG5hbWUsIHNvdXJjZSwgZm9yY2VVc2VzQXJndW1lbnRzLCBwYXJhbWV0ZXJzLCBpc0luU3RyaWN0
Q29udGV4dCwgZmlyc3RMaW5lLCBsYXN0TGluZSk7CisgICAgICAgICAgICBKU1N0cmluZyogbmFt
ZVN0cmluZyA9IGpzU3RyaW5nKCZnbG9iYWxEYXRhLCBuYW1lLnVzdHJpbmcoKSk7CisgICAgICAg
ICAgICBmdW5jdGlvbi0+bV9uYW1lVmFsdWUuc2V0KGdsb2JhbERhdGEsIGZ1bmN0aW9uLCBuYW1l
U3RyaW5nKTsKKyAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbjsKICAgICAgICAgfQogCiAgICAg
ICAgIEpTRnVuY3Rpb24qIG1ha2UoRXhlY1N0YXRlKiBleGVjLCBTY29wZUNoYWluTm9kZSogc2Nv
cGVDaGFpbikKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uQ29u
c3RydWN0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0Z1bmN0aW9uQ29uc3RydWN0b3IuY3BwCShyZXZpc2lvbiA5MjMwOCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uQ29uc3RydWN0b3IuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0zOCw3ICszOCw3IEBAIG5hbWVzcGFjZSBKU0MgewogQVNTRVJUX0NMQVNTX0ZJVFNfSU5f
Q0VMTChGdW5jdGlvbkNvbnN0cnVjdG9yKTsKIAogRnVuY3Rpb25Db25zdHJ1Y3Rvcjo6RnVuY3Rp
b25Db25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBGdW5jdGlvblByb3RvdHlwZSogZnVuY3Rpb25Qcm90
b3R5cGUpCi0gICAgOiBJbnRlcm5hbEZ1bmN0aW9uKCZleGVjLT5nbG9iYWxEYXRhKCksIGdsb2Jh
bE9iamVjdCwgc3RydWN0dXJlLCBJZGVudGlmaWVyKGV4ZWMsIGZ1bmN0aW9uUHJvdG90eXBlLT5j
bGFzc0luZm8oKS0+Y2xhc3NOYW1lKSkKKyAgICA6IEludGVybmFsRnVuY3Rpb24oZ2xvYmFsT2Jq
ZWN0LCBzdHJ1Y3R1cmUpCiB7CiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24oZXhlYy0+
Z2xvYmFsRGF0YSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkucHJvdG90eXBlLCBmdW5jdGlvblBy
b3RvdHlwZSwgRG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkpOwogCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Db25zdHJ1Y3Rvci5o
CShyZXZpc2lvbiA5MjMwOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0
aW9uQ29uc3RydWN0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtMjEsMjAgKzIxLDIxIEBACiAjaWZu
ZGVmIEZ1bmN0aW9uQ29uc3RydWN0b3JfaAogI2RlZmluZSBGdW5jdGlvbkNvbnN0cnVjdG9yX2gK
IAorI2luY2x1ZGUgIkZ1bmN0aW9uUHJvdG90eXBlLmgiCiAjaW5jbHVkZSAiSW50ZXJuYWxGdW5j
dGlvbi5oIgogCiBuYW1lc3BhY2UgSlNDIHsKIAotICAgIGNsYXNzIEZ1bmN0aW9uUHJvdG90eXBl
OwotCiAgICAgY2xhc3MgRnVuY3Rpb25Db25zdHJ1Y3RvciA6IHB1YmxpYyBJbnRlcm5hbEZ1bmN0
aW9uIHsKICAgICBwcml2YXRlOgogICAgICAgICBGdW5jdGlvbkNvbnN0cnVjdG9yKEV4ZWNTdGF0
ZSosIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgRnVuY3Rpb25Qcm90b3R5cGUqKTsKICAg
ICAKICAgICBwdWJsaWM6Ci0gICAgICAgIHN0YXRpYyBGdW5jdGlvbkNvbnN0cnVjdG9yKiBjcmVh
dGUoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSwgRnVuY3Rpb25Qcm90b3R5cGUqIGZ1bmNQcm90b3R5cGUpCisgICAgICAg
IHN0YXRpYyBGdW5jdGlvbkNvbnN0cnVjdG9yKiBjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgRnVuY3Rpb25Q
cm90b3R5cGUqIGZ1bmN0aW9uUHJvdG90eXBlKQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1
cm4gbmV3IChhbGxvY2F0ZUNlbGw8RnVuY3Rpb25Db25zdHJ1Y3Rvcj4oKmV4ZWMtPmhlYXAoKSkp
IEZ1bmN0aW9uQ29uc3RydWN0b3IoZXhlYywgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIGZ1bmNQ
cm90b3R5cGUpOworICAgICAgICAgICAgRnVuY3Rpb25Db25zdHJ1Y3RvciogY29uc3RydWN0b3Ig
PSBuZXcgKGFsbG9jYXRlQ2VsbDxGdW5jdGlvbkNvbnN0cnVjdG9yPigqZXhlYy0+aGVhcCgpKSkg
RnVuY3Rpb25Db25zdHJ1Y3RvcihleGVjLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgZnVuY3Rp
b25Qcm90b3R5cGUpOworICAgICAgICAgICAgY29uc3RydWN0b3ItPmluaXRQcm9wZXJ0aWVzKGV4
ZWMtPmdsb2JhbERhdGEoKSwgSWRlbnRpZmllcihleGVjLCBmdW5jdGlvblByb3RvdHlwZS0+Y2xh
c3NJbmZvKCktPmNsYXNzTmFtZSkpOworICAgICAgICAgICAgcmV0dXJuIGNvbnN0cnVjdG9yOwog
ICAgICAgICB9CiAKICAgICBwcml2YXRlOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uUHJvdG90eXBlLmNwcAkocmV2aXNpb24gOTIzMDgpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvblByb3RvdHlwZS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTM4LDcgKzM4LDcgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgZnVuYwogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rp
b25Qcm90b0Z1bmNDYWxsKEV4ZWNTdGF0ZSopOwogCiBGdW5jdGlvblByb3RvdHlwZTo6RnVuY3Rp
b25Qcm90b3R5cGUoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKLSAgICA6IEludGVybmFsRnVuY3Rpb24oJmV4ZWMtPmds
b2JhbERhdGEoKSwgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIGV4ZWMtPnByb3BlcnR5TmFtZXMo
KS5udWxsSWRlbnRpZmllcikKKyAgICA6IEludGVybmFsRnVuY3Rpb24oZ2xvYmFsT2JqZWN0LCBz
dHJ1Y3R1cmUpCiB7CiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24oZXhlYy0+Z2xvYmFs
RGF0YSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkubGVuZ3RoLCBqc051bWJlcigwKSwgRG9udERl
bGV0ZSB8IFJlYWRPbmx5IHwgRG9udEVudW0pOwogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvblByb3RvdHlwZS5oCShyZXZpc2lvbiA5MjMwOCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uUHJvdG90eXBlLmgJKHdv
cmtpbmcgY29weSkKQEAgLTMyLDcgKzMyLDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgcHVibGlj
OgogICAgICAgICBzdGF0aWMgRnVuY3Rpb25Qcm90b3R5cGUqIGNyZWF0ZShFeGVjU3RhdGUqIGV4
ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlKQog
ICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gbmV3IChhbGxvY2F0ZUNlbGw8RnVuY3Rpb25Q
cm90b3R5cGU+KCpleGVjLT5oZWFwKCkpKSBGdW5jdGlvblByb3RvdHlwZShleGVjLCBnbG9iYWxP
YmplY3QsIHN0cnVjdHVyZSk7CisgICAgICAgICAgICBGdW5jdGlvblByb3RvdHlwZSogcHJvdG90
eXBlID0gbmV3IChhbGxvY2F0ZUNlbGw8RnVuY3Rpb25Qcm90b3R5cGU+KCpleGVjLT5oZWFwKCkp
KSBGdW5jdGlvblByb3RvdHlwZShleGVjLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSk7CisgICAg
ICAgICAgICBwcm90b3R5cGUtPmluaXRQcm9wZXJ0aWVzKGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhl
Yy0+cHJvcGVydHlOYW1lcygpLm51bGxJZGVudGlmaWVyKTsKKyAgICAgICAgICAgIHJldHVybiBw
cm90b3R5cGU7CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIHZvaWQgYWRkRnVuY3Rpb25Q
cm9wZXJ0aWVzKEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiBmdW5jdGlv
blN0cnVjdHVyZSwgSlNGdW5jdGlvbioqIGNhbGxGdW5jdGlvbiwgSlNGdW5jdGlvbioqIGFwcGx5
RnVuY3Rpb24pOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50ZXJuYWxG
dW5jdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SW50ZXJuYWxGdW5jdGlvbi5jcHAJKHJldmlzaW9uIDkyMzA4KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSW50ZXJuYWxGdW5jdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQx
LDYgKzQxLDEyIEBAIEludGVybmFsRnVuY3Rpb246OkludGVybmFsRnVuY3Rpb24oVlB0clMKIHsK
IH0KIAorSW50ZXJuYWxGdW5jdGlvbjo6SW50ZXJuYWxGdW5jdGlvbihKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICA6IEpTT2JqZWN0V2l0aEds
b2JhbE9iamVjdChnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSkKK3sKKyAgICBBU1NFUlQoaW5oZXJp
dHMoJnNfaW5mbykpOworfQorCiBJbnRlcm5hbEZ1bmN0aW9uOjpJbnRlcm5hbEZ1bmN0aW9uKEpT
R2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IElkZW50aWZpZXImIG5hbWUpCiAgICAgOiBKU09iamVj
dFdpdGhHbG9iYWxPYmplY3QoZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUpCiB7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRlcm5hbEZ1bmN0aW9uLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50ZXJuYWxGdW5jdGlvbi5oCShyZXZp
c2lvbiA5MjMwOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGVybmFsRnVu
Y3Rpb24uaAkod29ya2luZyBjb3B5KQpAQCAtNTAsNyArNTAsMTIgQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgICAgIC8vIE9ubHkgdXNlZCB0byBhbGxvdyB1cyB0byBkZXRlcm1pbmUgdGhlIEpTRnVu
Y3Rpb24gdnB0cgogICAgICAgICBJbnRlcm5hbEZ1bmN0aW9uKFZQdHJTdGVhbGluZ0hhY2tUeXBl
KTsKIAorICAgICAgICBJbnRlcm5hbEZ1bmN0aW9uKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJl
Kik7CiAgICAgICAgIEludGVybmFsRnVuY3Rpb24oSlNHbG9iYWxEYXRhKiwgSlNHbG9iYWxPYmpl
Y3QqLCBTdHJ1Y3R1cmUqLCBjb25zdCBJZGVudGlmaWVyJik7CisgICAgICAgIHZvaWQgaW5pdFBy
b3BlcnRpZXMoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBjb25zdCBJZGVudGlmaWVyJiBuYW1l
KQorICAgICAgICB7CisgICAgICAgICAgICBwdXREaXJlY3QoZ2xvYmFsRGF0YSwgZ2xvYmFsRGF0
YS5wcm9wZXJ0eU5hbWVzLT5uYW1lLCBqc1N0cmluZygmZ2xvYmFsRGF0YSwgbmFtZS5pc051bGwo
KSA/ICIiIDogbmFtZS51c3RyaW5nKCkpLCBEb250RGVsZXRlIHwgUmVhZE9ubHkgfCBEb250RW51
bSk7CisgICAgICAgIH0KIAogICAgIHByaXZhdGU6CiAgICAgICAgIHZpcnR1YWwgQ2FsbFR5cGUg
Z2V0Q2FsbERhdGEoQ2FsbERhdGEmKSA9IDA7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0J5dGVBcnJheS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNCeXRlQXJyYXkuY3BwCShyZXZpc2lvbiA5MjMwOCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQnl0ZUFycmF5LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MzksMTIgKzM5LDEzIEBAIEpTQnl0ZUFycmF5OjpKU0J5dGVBcnJheShFeGVjU3RhdGUqIGV4ZWMK
ICAgICA6IEpTTm9uRmluYWxPYmplY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBzdHJ1Y3R1cmUpCiAg
ICAgLCBtX3N0b3JhZ2Uoc3RvcmFnZSkKIHsKLSAgICBwdXREaXJlY3QoZXhlYy0+Z2xvYmFsRGF0
YSgpLCBleGVjLT5nbG9iYWxEYXRhKCkucHJvcGVydHlOYW1lcy0+bGVuZ3RoLCBqc051bWJlciht
X3N0b3JhZ2UtPmxlbmd0aCgpKSwgUmVhZE9ubHkgfCBEb250RGVsZXRlKTsKIH0KICAgICAgICAg
CiBKU0J5dGVBcnJheSogSlNCeXRlQXJyYXk6OmNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIFN0cnVj
dHVyZSogc3RydWN0dXJlLCBCeXRlQXJyYXkqIHN0b3JhZ2UpCiB7Ci0gICAgcmV0dXJuIG5ldyAo
YWxsb2NhdGVDZWxsPEpTQnl0ZUFycmF5PigqZXhlYy0+aGVhcCgpKSkgSlNCeXRlQXJyYXkoZXhl
Yywgc3RydWN0dXJlLCBzdG9yYWdlKTsKKyAgICBKU0J5dGVBcnJheSogYXJyYXkgPSBuZXcgKGFs
bG9jYXRlQ2VsbDxKU0J5dGVBcnJheT4oKmV4ZWMtPmhlYXAoKSkpIEpTQnl0ZUFycmF5KGV4ZWMs
IHN0cnVjdHVyZSwgc3RvcmFnZSk7CisgICAgYXJyYXktPnB1dERpcmVjdChleGVjLT5nbG9iYWxE
YXRhKCksIGV4ZWMtPmdsb2JhbERhdGEoKS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgsIGpzTnVtYmVy
KGFycmF5LT5tX3N0b3JhZ2UtPmxlbmd0aCgpKSwgUmVhZE9ubHkgfCBEb250RGVsZXRlKTsKKyAg
ICByZXR1cm4gYXJyYXk7CiB9CiAKICNpZiAhQVNTRVJUX0RJU0FCTEVECkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuaAkocmV2aXNpb24gOTIzMDgpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuaAkod29ya2luZyBjb3B5KQpAQCAtMzUwLDcg
KzM1MCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHsKICAgICAgICAgcmV0dXJuIGhlYXAuYWxs
b2NhdGUoc2l6ZW9mKFQpKTsKICAgICB9Ci0gICAgICAgIAorCiB9IC8vIG5hbWVzcGFjZSBKU0MK
IAogI2VuZGlmIC8vIEpTQ2VsbF9oCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0Z1bmN0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0Z1bmN0aW9uLmNwcAkocmV2aXNpb24gOTIzMDgpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjEsMjcgKzYx
LDE5IEBAIEpTRnVuY3Rpb246OkpTRnVuY3Rpb24oVlB0clN0ZWFsaW5nSGFja1QKIHsKIH0KIAot
SlNGdW5jdGlvbjo6SlNGdW5jdGlvbihFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBpbnQgbGVuZ3RoLCBjb25zdCBJZGVu
dGlmaWVyJiBuYW1lLCBOYXRpdmVFeGVjdXRhYmxlKiB0aHVuaykKK0pTRnVuY3Rpb246OkpTRnVu
Y3Rpb24oRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSwgTmF0aXZlRXhlY3V0YWJsZSogdGh1bmspCiAgICAgOiBCYXNlKGds
b2JhbE9iamVjdCwgc3RydWN0dXJlKQogICAgICwgbV9leGVjdXRhYmxlKGV4ZWMtPmdsb2JhbERh
dGEoKSwgdGhpcywgdGh1bmspCiAgICAgLCBtX3Njb3BlQ2hhaW4oZXhlYy0+Z2xvYmFsRGF0YSgp
LCB0aGlzLCBnbG9iYWxPYmplY3QtPmdsb2JhbFNjb3BlQ2hhaW4oKSkKIHsKICAgICBBU1NFUlQo
aW5oZXJpdHMoJnNfaW5mbykpOwotICAgIHB1dERpcmVjdChleGVjLT5nbG9iYWxEYXRhKCksIGV4
ZWMtPmdsb2JhbERhdGEoKS5wcm9wZXJ0eU5hbWVzLT5uYW1lLCBqc1N0cmluZyhleGVjLCBuYW1l
LmlzTnVsbCgpID8gIiIgOiBuYW1lLnVzdHJpbmcoKSksIERvbnREZWxldGUgfCBSZWFkT25seSB8
IERvbnRFbnVtKTsKLSAgICBwdXREaXJlY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5wcm9w
ZXJ0eU5hbWVzKCkubGVuZ3RoLCBqc051bWJlcihsZW5ndGgpLCBEb250RGVsZXRlIHwgUmVhZE9u
bHkgfCBEb250RW51bSk7CiB9CiAKLUpTRnVuY3Rpb246OkpTRnVuY3Rpb24oRXhlY1N0YXRlKiBl
eGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwg
aW50IGxlbmd0aCwgY29uc3QgSWRlbnRpZmllciYgbmFtZSwgTmF0aXZlRnVuY3Rpb24gZnVuYykK
K0pTRnVuY3Rpb246OkpTRnVuY3Rpb24oRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAgICA6IEJhc2UoZ2xvYmFsT2Jq
ZWN0LCBzdHJ1Y3R1cmUpCiAgICAgLCBtX3Njb3BlQ2hhaW4oZXhlYy0+Z2xvYmFsRGF0YSgpLCB0
aGlzLCBnbG9iYWxPYmplY3QtPmdsb2JhbFNjb3BlQ2hhaW4oKSkKIHsKICAgICBBU1NFUlQoaW5o
ZXJpdHMoJnNfaW5mbykpOwotICAgIAotICAgIC8vIENhbid0IGRvIHRoaXMgZHVyaW5nIGluaXRp
YWxpemF0aW9uIGJlY2F1c2UgZ2V0SG9zdEZ1bmN0aW9uIG1pZ2h0IGRvIGEgR0MgYWxsb2NhdGlv
bi4KLSAgICBtX2V4ZWN1dGFibGUuc2V0KGV4ZWMtPmdsb2JhbERhdGEoKSwgdGhpcywgZXhlYy0+
Z2xvYmFsRGF0YSgpLmdldEhvc3RGdW5jdGlvbihmdW5jKSk7Ci0gICAgCi0gICAgcHV0RGlyZWN0
KGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+Z2xvYmFsRGF0YSgpLnByb3BlcnR5TmFtZXMtPm5h
bWUsIGpzU3RyaW5nKGV4ZWMsIG5hbWUuaXNOdWxsKCkgPyAiIiA6IG5hbWUudXN0cmluZygpKSwg
RG9udERlbGV0ZSB8IFJlYWRPbmx5IHwgRG9udEVudW0pOwotICAgIHB1dERpcmVjdChleGVjLT5n
bG9iYWxEYXRhKCksIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5sZW5ndGgsIGpzTnVtYmVyKGxlbmd0
aCksIERvbnREZWxldGUgfCBSZWFkT25seSB8IERvbnRFbnVtKTsKIH0KIAogSlNGdW5jdGlvbjo6
SlNGdW5jdGlvbihFeGVjU3RhdGUqIGV4ZWMsIEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJs
ZSwgU2NvcGVDaGFpbk5vZGUqIHNjb3BlQ2hhaW5Ob2RlKQpAQCAtOTAsOCArODIsMzIgQEAgSlNG
dW5jdGlvbjo6SlNGdW5jdGlvbihFeGVjU3RhdGUqIGV4ZWMsIAogICAgICwgbV9zY29wZUNoYWlu
KGV4ZWMtPmdsb2JhbERhdGEoKSwgdGhpcywgc2NvcGVDaGFpbk5vZGUpCiB7CiAgICAgQVNTRVJU
KGluaGVyaXRzKCZzX2luZm8pKTsKLSAgICBzZXRTdHJ1Y3R1cmUoZXhlYy0+Z2xvYmFsRGF0YSgp
LCBzY29wZUNoYWluTm9kZS0+Z2xvYmFsT2JqZWN0LT5uYW1lZEZ1bmN0aW9uU3RydWN0dXJlKCkp
OwotICAgIHB1dERpcmVjdE9mZnNldChleGVjLT5nbG9iYWxEYXRhKCksIHNjb3BlQ2hhaW5Ob2Rl
LT5nbG9iYWxPYmplY3QtPmZ1bmN0aW9uTmFtZU9mZnNldCgpLCBleGVjdXRhYmxlLT5uYW1lVmFs
dWUoKSk7Cit9CisKK0pTRnVuY3Rpb24qIEpTRnVuY3Rpb246OmNyZWF0ZShFeGVjU3RhdGUqIGV4
ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBp
bnQgbGVuZ3RoLCBjb25zdCBJZGVudGlmaWVyJiBuYW1lLCBOYXRpdmVGdW5jdGlvbiBuYXRpdmVG
dW5jdGlvbikKK3sKKyAgICBKU0Z1bmN0aW9uKiBmdW5jdGlvbiA9IG5ldyAoYWxsb2NhdGVDZWxs
PEpTRnVuY3Rpb24+KCpleGVjLT5oZWFwKCkpKSBKU0Z1bmN0aW9uKGV4ZWMsIGdsb2JhbE9iamVj
dCwgc3RydWN0dXJlKTsKKyAgICAvLyBDYW4ndCBkbyB0aGlzIGR1cmluZyBpbml0aWFsaXphdGlv
biBiZWNhdXNlIGdldEhvc3RGdW5jdGlvbiBtaWdodCBkbyBhIEdDIGFsbG9jYXRpb24uCisgICAg
ZnVuY3Rpb24tPm1fZXhlY3V0YWJsZS5zZXQoZXhlYy0+Z2xvYmFsRGF0YSgpLCBmdW5jdGlvbiwg
ZXhlYy0+Z2xvYmFsRGF0YSgpLmdldEhvc3RGdW5jdGlvbihuYXRpdmVGdW5jdGlvbikpOworICAg
IGZ1bmN0aW9uLT5wdXREaXJlY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5nbG9iYWxEYXRh
KCkucHJvcGVydHlOYW1lcy0+bmFtZSwganNTdHJpbmcoZXhlYywgbmFtZS5pc051bGwoKSA/ICIi
IDogbmFtZS51c3RyaW5nKCkpLCBEb250RGVsZXRlIHwgUmVhZE9ubHkgfCBEb250RW51bSk7Cisg
ICAgZnVuY3Rpb24tPnB1dERpcmVjdChleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPnByb3BlcnR5
TmFtZXMoKS5sZW5ndGgsIGpzTnVtYmVyKGxlbmd0aCksIERvbnREZWxldGUgfCBSZWFkT25seSB8
IERvbnRFbnVtKTsKKyAgICByZXR1cm4gZnVuY3Rpb247Cit9CisKK0pTRnVuY3Rpb24qIEpTRnVu
Y3Rpb246OmNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBpbnQgbGVuZ3RoLCBjb25zdCBJZGVudGlmaWVyJiBu
YW1lLCBOYXRpdmVFeGVjdXRhYmxlKiBuYXRpdmVFeGVjKQoreworICAgIEpTRnVuY3Rpb24qIGZ1
bmN0aW9uID0gbmV3IChhbGxvY2F0ZUNlbGw8SlNGdW5jdGlvbj4oKmV4ZWMtPmhlYXAoKSkpIEpT
RnVuY3Rpb24oZXhlYywgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIG5hdGl2ZUV4ZWMpOworICAg
IGZ1bmN0aW9uLT5wdXREaXJlY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5nbG9iYWxEYXRh
KCkucHJvcGVydHlOYW1lcy0+bmFtZSwganNTdHJpbmcoZXhlYywgbmFtZS5pc051bGwoKSA/ICIi
IDogbmFtZS51c3RyaW5nKCkpLCBEb250RGVsZXRlIHwgUmVhZE9ubHkgfCBEb250RW51bSk7Cisg
ICAgZnVuY3Rpb24tPnB1dERpcmVjdChleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPnByb3BlcnR5
TmFtZXMoKS5sZW5ndGgsIGpzTnVtYmVyKGxlbmd0aCksIERvbnREZWxldGUgfCBSZWFkT25seSB8
IERvbnRFbnVtKTsKKyAgICByZXR1cm4gZnVuY3Rpb247Cit9CisKK0pTRnVuY3Rpb24qIEpTRnVu
Y3Rpb246OmNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0
YWJsZSwgU2NvcGVDaGFpbk5vZGUqIHNjb3BlQ2hhaW4pCit7CisgICAgSlNGdW5jdGlvbiogZnVu
Y3Rpb24gPSBuZXcgKGFsbG9jYXRlQ2VsbDxKU0Z1bmN0aW9uPigqZXhlYy0+aGVhcCgpKSkgSlNG
dW5jdGlvbihleGVjLCBleGVjdXRhYmxlLCBzY29wZUNoYWluKTsKKyAgICBmdW5jdGlvbi0+c2V0
U3RydWN0dXJlKGV4ZWMtPmdsb2JhbERhdGEoKSwgc2NvcGVDaGFpbi0+Z2xvYmFsT2JqZWN0LT5u
YW1lZEZ1bmN0aW9uU3RydWN0dXJlKCkpOworICAgIGZ1bmN0aW9uLT5wdXREaXJlY3RPZmZzZXQo
ZXhlYy0+Z2xvYmFsRGF0YSgpLCBzY29wZUNoYWluLT5nbG9iYWxPYmplY3QtPmZ1bmN0aW9uTmFt
ZU9mZnNldCgpLCBleGVjdXRhYmxlLT5uYW1lVmFsdWUoKSk7CisgICAgcmV0dXJuIGZ1bmN0aW9u
OwogfQogCiBKU0Z1bmN0aW9uOjp+SlNGdW5jdGlvbigpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5oCShyZXZpc2lvbiA5MjMwOCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uaAkod29ya2luZyBjb3B5KQpAQCAtMjks
MTEgKzI5LDkgQEAKIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgRXhlY3V0YWJsZUJhc2U7
Ci0gICAgY2xhc3MgRnVuY3Rpb25FeGVjdXRhYmxlOwogICAgIGNsYXNzIEZ1bmN0aW9uUHJvdG90
eXBlOwogICAgIGNsYXNzIEpTQWN0aXZhdGlvbjsKICAgICBjbGFzcyBKU0dsb2JhbE9iamVjdDsK
LSAgICBjbGFzcyBOYXRpdmVFeGVjdXRhYmxlOwogICAgIGNsYXNzIFZQdHJIYWNrRXhlY3V0YWJs
ZTsKICAgICBuYW1lc3BhY2UgREZHIHsKICAgICBjbGFzcyBKSVRDb2RlR2VuZXJhdG9yOwpAQCAt
NDgsMjMgKzQ2LDE1IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIHR5cGVkZWYgSlNPYmpl
Y3RXaXRoR2xvYmFsT2JqZWN0IEJhc2U7CiAKLSAgICAgICAgSlNGdW5jdGlvbihFeGVjU3RhdGUq
LCBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIGludCBsZW5ndGgsIGNvbnN0IElkZW50aWZp
ZXImLCBOYXRpdmVGdW5jdGlvbik7Ci0gICAgICAgIEpTRnVuY3Rpb24oRXhlY1N0YXRlKiwgSlNH
bG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBpbnQgbGVuZ3RoLCBjb25zdCBJZGVudGlmaWVyJiwg
TmF0aXZlRXhlY3V0YWJsZSopOworICAgIHByaXZhdGU6CisgICAgICAgIEpTRnVuY3Rpb24oRXhl
Y1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqKTsKKyAgICAgICAgSlNGdW5jdGlv
bihFeGVjU3RhdGUqLCBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIE5hdGl2ZUV4ZWN1dGFi
bGUqKTsKICAgICAgICAgSlNGdW5jdGlvbihFeGVjU3RhdGUqLCBGdW5jdGlvbkV4ZWN1dGFibGUq
LCBTY29wZUNoYWluTm9kZSopOwogICAgICAgICAKICAgICBwdWJsaWM6Ci0gICAgICAgIHN0YXRp
YyBKU0Z1bmN0aW9uKiBjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgaW50IGxlbmd0aCwgY29uc3QgSWRlbnRp
ZmllciYgaWRlbnQsIE5hdGl2ZUZ1bmN0aW9uIG5hdGl2ZUZ1bmMpCi0gICAgICAgIHsKLSAgICAg
ICAgICAgIHJldHVybiBuZXcgKGFsbG9jYXRlQ2VsbDxKU0Z1bmN0aW9uPigqZXhlYy0+aGVhcCgp
KSkgSlNGdW5jdGlvbihleGVjLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgbGVuZ3RoLCBpZGVu
dCwgbmF0aXZlRnVuYyk7Ci0gICAgICAgIH0KLSAgICAgICAgc3RhdGljIEpTRnVuY3Rpb24qIGNy
ZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVj
dHVyZSogc3RydWN0dXJlLCBpbnQgbGVuZ3RoLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgTmF0
aXZlRXhlY3V0YWJsZSogbmF0aXZlRXhlYykKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJu
IG5ldyAoYWxsb2NhdGVDZWxsPEpTRnVuY3Rpb24+KCpleGVjLT5oZWFwKCkpKSBKU0Z1bmN0aW9u
KGV4ZWMsIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBsZW5ndGgsIGlkZW50LCBuYXRpdmVFeGVj
KTsKLSAgICAgICAgfQotICAgICAgICBzdGF0aWMgSlNGdW5jdGlvbiogY3JlYXRlKEV4ZWNTdGF0
ZSogZXhlYywgRnVuY3Rpb25FeGVjdXRhYmxlKiBmdW5jRXhlYywgU2NvcGVDaGFpbk5vZGUqIHNj
b3BlQ2hhaW4pCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBuZXcgKGFsbG9jYXRlQ2Vs
bDxKU0Z1bmN0aW9uPigqZXhlYy0+aGVhcCgpKSkgSlNGdW5jdGlvbihleGVjLCBmdW5jRXhlYywg
c2NvcGVDaGFpbik7Ci0gICAgICAgIH0KKyAgICAgICAgc3RhdGljIEpTRnVuY3Rpb24qIGNyZWF0
ZShFeGVjU3RhdGUqLCBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIGludCBsZW5ndGgsIGNv
bnN0IElkZW50aWZpZXImIG5hbWUsIE5hdGl2ZUZ1bmN0aW9uKTsKKyAgICAgICAgc3RhdGljIEpT
RnVuY3Rpb24qIGNyZWF0ZShFeGVjU3RhdGUqLCBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSos
IGludCBsZW5ndGgsIGNvbnN0IElkZW50aWZpZXImIG5hbWUsIE5hdGl2ZUV4ZWN1dGFibGUqKTsK
KyAgICAgICAgc3RhdGljIEpTRnVuY3Rpb24qIGNyZWF0ZShFeGVjU3RhdGUqLCBGdW5jdGlvbkV4
ZWN1dGFibGUqIGZ1bmNFeGVjLCBTY29wZUNoYWluTm9kZSopOwogICAgICAgICAKICAgICAgICAg
dmlydHVhbCB+SlNGdW5jdGlvbigpOwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0dsb2JhbE9iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgJKHJldmlzaW9uIDkyMzA4KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAt
MTQ0LDcgKzE0NCw5IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHB1YmxpYzoKICAgICAgICAgc3Rh
dGljIEpTR2xvYmFsT2JqZWN0KiBjcmVhdGUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSkKICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIG5ldyAoYWxs
b2NhdGVDZWxsPEpTR2xvYmFsT2JqZWN0PihnbG9iYWxEYXRhLmhlYXApKSBKU0dsb2JhbE9iamVj
dChnbG9iYWxEYXRhLCBzdHJ1Y3R1cmUpOworICAgICAgICAgICAgSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCA9IG5ldyAoYWxsb2NhdGVDZWxsPEpTR2xvYmFsT2JqZWN0PihnbG9iYWxEYXRh
LmhlYXApKSBKU0dsb2JhbE9iamVjdChnbG9iYWxEYXRhLCBzdHJ1Y3R1cmUpOworICAgICAgICAg
ICAgZ2xvYmFsT2JqZWN0LT5pbml0KGdsb2JhbE9iamVjdCk7CisgICAgICAgICAgICByZXR1cm4g
Z2xvYmFsT2JqZWN0OwogICAgICAgICB9CiAKICAgICAgICAgc3RhdGljIEpTX0VYUE9SVERBVEEg
Y29uc3QgQ2xhc3NJbmZvIHNfaW5mbzsKQEAgLTE1OSw3ICsxNjEsNiBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICAgICAgewogICAgICAgICAgICAgQ09NUElMRV9BU1NFUlQoSlNHbG9iYWxPYmplY3Q6
OkFub255bW91c1Nsb3RDb3VudCA9PSAxLCBKU0dsb2JhbE9iamVjdF9oYXNfb25seV9hX3Npbmds
ZV9zbG90KTsKICAgICAgICAgICAgIHB1dFRoaXNUb0Fub255bW91c1ZhbHVlKDApOwotICAgICAg
ICAgICAgaW5pdCh0aGlzKTsKICAgICAgICAgfQogCiAgICAgICAgIEpTR2xvYmFsT2JqZWN0KEpT
R2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTT2JqZWN0KiB0
aGlzVmFsdWUpCkBAIC0zMTIsMTAgKzMxMywxMSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAg
ICAgIHVuc2lnbmVkIGF0dHJpYnV0ZXM7CiAgICAgICAgIH07CiAgICAgICAgIHZvaWQgYWRkU3Rh
dGljR2xvYmFscyhHbG9iYWxQcm9wZXJ0eUluZm8qLCBpbnQgY291bnQpOwotCi0gICAgcHJpdmF0
ZToKKyAgICAgICAgCiAgICAgICAgIC8vIEZJWE1FOiBGb2xkIHJlc2V0IGludG8gaW5pdC4KICAg
ICAgICAgdm9pZCBpbml0KEpTT2JqZWN0KiB0aGlzVmFsdWUpOworCisgICAgcHJpdmF0ZToKICAg
ICAgICAgdm9pZCByZXNldChKU1ZhbHVlIHByb3RvdHlwZSk7CiAKICAgICAgICAgdm9pZCBzZXRS
ZWdpc3RlcnMoV3JpdGVCYXJyaWVyPFVua25vd24+KiByZWdpc3RlcnMsIFBhc3NPd25BcnJheVB0
cjxXcml0ZUJhcnJpZXI8VW5rbm93bj4gPiByZWdpc3RlckFycmF5LCBzaXplX3QgY291bnQpOwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9wZXJ0eU5hbWVJdGVyYXRv
ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9w
ZXJ0eU5hbWVJdGVyYXRvci5jcHAJKHJldmlzaW9uIDkyMzA4KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTM3LDE1ICszNywxMiBAQCBBU1NFUlRfQ0xBU1NfRklUU19JTl9DRUxMKEpTUHJvcGVydHlO
YW1lCiAKIGNvbnN0IENsYXNzSW5mbyBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yOjpzX2luZm8gPSB7
ICJKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yIiwgMCwgMCwgMCB9OwogCi1pbmxpbmUgSlNQcm9wZXJ0
eU5hbWVJdGVyYXRvcjo6SlNQcm9wZXJ0eU5hbWVJdGVyYXRvcihFeGVjU3RhdGUqIGV4ZWMsIFBy
b3BlcnR5TmFtZUFycmF5RGF0YSogcHJvcGVydHlOYW1lQXJyYXlEYXRhLCBzaXplX3QgbnVtQ2Fj
aGVhYmxlU2xvdHMpCitpbmxpbmUgSlNQcm9wZXJ0eU5hbWVJdGVyYXRvcjo6SlNQcm9wZXJ0eU5h
bWVJdGVyYXRvcihFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZUFycmF5RGF0YTo6UHJvcGVy
dHlOYW1lVmVjdG9yJiBwcm9wZXJ0eU5hbWVWZWN0b3IsIHNpemVfdCBudW1DYWNoZWFibGVTbG90
cykKICAgICA6IEpTQ2VsbChleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPmdsb2JhbERhdGEoKS5w
cm9wZXJ0eU5hbWVJdGVyYXRvclN0cnVjdHVyZS5nZXQoKSkKICAgICAsIG1fbnVtQ2FjaGVhYmxl
U2xvdHMobnVtQ2FjaGVhYmxlU2xvdHMpCi0gICAgLCBtX2pzU3RyaW5nc1NpemUocHJvcGVydHlO
YW1lQXJyYXlEYXRhLT5wcm9wZXJ0eU5hbWVWZWN0b3IoKS5zaXplKCkpCisgICAgLCBtX2pzU3Ry
aW5nc1NpemUocHJvcGVydHlOYW1lVmVjdG9yLnNpemUoKSkKICAgICAsIG1fanNTdHJpbmdzKGFk
b3B0QXJyYXlQdHIobmV3IFdyaXRlQmFycmllcjxVbmtub3duPlttX2pzU3RyaW5nc1NpemVdKSkK
IHsKLSAgICBQcm9wZXJ0eU5hbWVBcnJheURhdGE6OlByb3BlcnR5TmFtZVZlY3RvciYgcHJvcGVy
dHlOYW1lVmVjdG9yID0gcHJvcGVydHlOYW1lQXJyYXlEYXRhLT5wcm9wZXJ0eU5hbWVWZWN0b3Io
KTsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fanNTdHJpbmdzU2l6ZTsgKytpKQotICAg
ICAgICBtX2pzU3RyaW5nc1tpXS5zZXQoZXhlYy0+Z2xvYmFsRGF0YSgpLCB0aGlzLCBqc093bmVk
U3RyaW5nKGV4ZWMsIHByb3BlcnR5TmFtZVZlY3RvcltpXS51c3RyaW5nKCkpKTsKIH0KIAogSlNQ
cm9wZXJ0eU5hbWVJdGVyYXRvciogSlNQcm9wZXJ0eU5hbWVJdGVyYXRvcjo6Y3JlYXRlKEV4ZWNT
dGF0ZSogZXhlYywgSlNPYmplY3QqIG8pCkBAIC02Miw3ICs1OSw3IEBAIEpTUHJvcGVydHlOYW1l
SXRlcmF0b3IqIEpTUHJvcGVydHlOYW1lSXQKICAgICAgICAgIW8tPnN0cnVjdHVyZSgpLT50eXBl
SW5mbygpLm92ZXJyaWRlc0dldFByb3BlcnR5TmFtZXMoKSkKICAgICAgICAgbnVtQ2FjaGVhYmxl
U2xvdHMgPSBvLT5zdHJ1Y3R1cmUoKS0+cHJvcGVydHlTdG9yYWdlU2l6ZSgpOwogICAgIAotICAg
IEpTUHJvcGVydHlOYW1lSXRlcmF0b3IqIGpzUHJvcGVydHlOYW1lSXRlcmF0b3IgPSBuZXcgKGFs
bG9jYXRlQ2VsbDxKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yPigqZXhlYy0+aGVhcCgpKSkgSlNQcm9w
ZXJ0eU5hbWVJdGVyYXRvcihleGVjLCBwcm9wZXJ0eU5hbWVzLmRhdGEoKSwgbnVtQ2FjaGVhYmxl
U2xvdHMpOworICAgIEpTUHJvcGVydHlOYW1lSXRlcmF0b3IqIGpzUHJvcGVydHlOYW1lSXRlcmF0
b3IgPSBjcmVhdGUoZXhlYywgcHJvcGVydHlOYW1lcy5kYXRhKCksIG51bUNhY2hlYWJsZVNsb3Rz
KTsKIAogICAgIGlmIChvLT5zdHJ1Y3R1cmUoKS0+aXNEaWN0aW9uYXJ5KCkpCiAgICAgICAgIHJl
dHVybiBqc1Byb3BlcnR5TmFtZUl0ZXJhdG9yOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuaAkocmV2aXNpb24g
OTIzMDgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0
ZXJhdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ2LDcgKzQ2LDExIEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgICAgICBzdGF0aWMgSlNQcm9wZXJ0eU5hbWVJdGVyYXRvciogY3JlYXRlKEV4ZWNTdGF0
ZSosIEpTT2JqZWN0Kik7CiAgICAgICAgIHN0YXRpYyBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yKiBj
cmVhdGUoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWVBcnJheURhdGEqIHByb3BlcnR5TmFt
ZUFycmF5RGF0YSwgc2l6ZV90IG51bUNhY2hlYWJsZVNsb3QpCiAgICAgICAgIHsKLSAgICAgICAg
ICAgIHJldHVybiBuZXcgKGFsbG9jYXRlQ2VsbDxKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yPigqZXhl
Yy0+aGVhcCgpKSkgSlNQcm9wZXJ0eU5hbWVJdGVyYXRvcihleGVjLCBwcm9wZXJ0eU5hbWVBcnJh
eURhdGEsIG51bUNhY2hlYWJsZVNsb3QpOworICAgICAgICAgICAgUHJvcGVydHlOYW1lQXJyYXlE
YXRhOjpQcm9wZXJ0eU5hbWVWZWN0b3ImIHByb3BlcnR5TmFtZVZlY3RvciA9IHByb3BlcnR5TmFt
ZUFycmF5RGF0YS0+cHJvcGVydHlOYW1lVmVjdG9yKCk7CisgICAgICAgICAgICBKU1Byb3BlcnR5
TmFtZUl0ZXJhdG9yKiBpdGVyYXRvciA9ICBuZXcgKGFsbG9jYXRlQ2VsbDxKU1Byb3BlcnR5TmFt
ZUl0ZXJhdG9yPigqZXhlYy0+aGVhcCgpKSkgSlNQcm9wZXJ0eU5hbWVJdGVyYXRvcihleGVjLCBw
cm9wZXJ0eU5hbWVWZWN0b3IsIG51bUNhY2hlYWJsZVNsb3QpOworICAgICAgICAgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBpdGVyYXRvci0+bV9qc1N0cmluZ3NTaXplOyArK2kpCisgICAgICAg
ICAgICAgICAgaXRlcmF0b3ItPm1fanNTdHJpbmdzW2ldLnNldChleGVjLT5nbG9iYWxEYXRhKCks
IGl0ZXJhdG9yLCBqc093bmVkU3RyaW5nKGV4ZWMsIHByb3BlcnR5TmFtZVZlY3RvcltpXS51c3Ry
aW5nKCkpKTsKKyAgICAgICAgICAgIHJldHVybiBpdGVyYXRvcjsKICAgICAgICAgfQogICAgICAg
ICAKICAgICAgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTR2xvYmFsRGF0
YSYgZ2xvYmFsRGF0YSwgSlNWYWx1ZSBwcm90b3R5cGUpCkBAIC04Myw3ICs4Nyw3IEBAIG5hbWVz
cGFjZSBKU0MgewogICAgICAgICBzdGF0aWMgY29uc3QgQ2xhc3NJbmZvIHNfaW5mbzsKIAogICAg
IHByaXZhdGU6Ci0gICAgICAgIEpTUHJvcGVydHlOYW1lSXRlcmF0b3IoRXhlY1N0YXRlKiwgUHJv
cGVydHlOYW1lQXJyYXlEYXRhKiBwcm9wZXJ0eU5hbWVBcnJheURhdGEsIHNpemVfdCBudW1DYWNo
ZWFibGVTbG90KTsKKyAgICAgICAgSlNQcm9wZXJ0eU5hbWVJdGVyYXRvcihFeGVjU3RhdGUqLCBQ
cm9wZXJ0eU5hbWVBcnJheURhdGE6OlByb3BlcnR5TmFtZVZlY3RvciYsIHNpemVfdCBudW1DYWNo
ZWFibGVTbG90KTsKIAogICAgICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX2NhY2hlZFN0
cnVjdHVyZTsKICAgICAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZUNoYWluPiBtX2NhY2hlZFBy
b3RvdHlwZUNoYWluOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZl
RXJyb3JDb25zdHJ1Y3Rvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvci5jcHAJKHJldmlzaW9uIDkyMzA4KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvci5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTMyLDE4ICszMiwyNCBAQCBBU1NFUlRfQ0xBU1NfRklUU19JTl9D
RUxMKE5hdGl2ZUVycm9yQ29uCiAKIGNvbnN0IENsYXNzSW5mbyBOYXRpdmVFcnJvckNvbnN0cnVj
dG9yOjpzX2luZm8gPSB7ICJGdW5jdGlvbiIsICZJbnRlcm5hbEZ1bmN0aW9uOjpzX2luZm8sIDAs
IDAgfTsKIAotTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvcjo6TmF0aXZlRXJyb3JDb25zdHJ1Y3RvcihF
eGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSog
c3RydWN0dXJlLCBTdHJ1Y3R1cmUqIHByb3RvdHlwZVN0cnVjdHVyZSwgY29uc3QgVVN0cmluZyYg
bmFtZUFuZE1lc3NhZ2UpCi0gICAgOiBJbnRlcm5hbEZ1bmN0aW9uKCZleGVjLT5nbG9iYWxEYXRh
KCksIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBJZGVudGlmaWVyKGV4ZWMsIG5hbWVBbmRNZXNz
YWdlKSkKK05hdGl2ZUVycm9yQ29uc3RydWN0b3I6Ok5hdGl2ZUVycm9yQ29uc3RydWN0b3IoRXhl
Y1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSkKKyAgICA6IEludGVybmFsRnVuY3Rpb24oZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUp
CiB7CiAgICAgQVNTRVJUKGluaGVyaXRzKCZzX2luZm8pKTsKKyAgICBtX2Vycm9yU3RydWN0dXJl
LnNldE1heUJlTnVsbChleGVjLT5nbG9iYWxEYXRhKCksIHRoaXMsIDApOworfQogCi0gICAgTmF0
aXZlRXJyb3JQcm90b3R5cGUqIHByb3RvdHlwZSA9IE5hdGl2ZUVycm9yUHJvdG90eXBlOjpjcmVh
dGUoZXhlYywgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGVTdHJ1Y3R1cmUsIG5hbWVBbmRNZXNzYWdl
LCB0aGlzKTsKLQotICAgIHB1dERpcmVjdChleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPnByb3Bl
cnR5TmFtZXMoKS5sZW5ndGgsIGpzTnVtYmVyKDEpLCBEb250RGVsZXRlIHwgUmVhZE9ubHkgfCBE
b250RW51bSk7IC8vIEVDTUEgMTUuMTEuNy41Ci0gICAgcHV0RGlyZWN0KGV4ZWMtPmdsb2JhbERh
dGEoKSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLnByb3RvdHlwZSwgcHJvdG90eXBlLCBEb250RGVs
ZXRlIHwgUmVhZE9ubHkgfCBEb250RW51bSk7Ci0gICAgbV9lcnJvclN0cnVjdHVyZS5zZXQoZXhl
Yy0+Z2xvYmFsRGF0YSgpLCB0aGlzLCBFcnJvckluc3RhbmNlOjpjcmVhdGVTdHJ1Y3R1cmUoZXhl
Yy0+Z2xvYmFsRGF0YSgpLCBwcm90b3R5cGUpKTsKLSAgICBBU1NFUlQobV9lcnJvclN0cnVjdHVy
ZSk7Ci0gICAgQVNTRVJUKG1fZXJyb3JTdHJ1Y3R1cmUtPnR5cGVJbmZvKCkudHlwZSgpID09IE9i
amVjdFR5cGUpOworTmF0aXZlRXJyb3JDb25zdHJ1Y3RvciogTmF0aXZlRXJyb3JDb25zdHJ1Y3Rv
cjo6Y3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFN0cnVjdHVyZSogcHJvdG90eXBlU3RydWN0dXJlLCBjb25z
dCBVU3RyaW5nJiBuYW1lQW5kTWVzc2FnZSkKK3sKKyAgICBOYXRpdmVFcnJvckNvbnN0cnVjdG9y
KiBjb25zdHJ1Y3RvciA9IG5ldyAoYWxsb2NhdGVDZWxsPE5hdGl2ZUVycm9yQ29uc3RydWN0b3I+
KCpleGVjLT5oZWFwKCkpKSBOYXRpdmVFcnJvckNvbnN0cnVjdG9yKGV4ZWMsIGdsb2JhbE9iamVj
dCwgc3RydWN0dXJlKTsKKyAgICBOYXRpdmVFcnJvclByb3RvdHlwZSogcHJvdG90eXBlID0gTmF0
aXZlRXJyb3JQcm90b3R5cGU6OmNyZWF0ZShleGVjLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZVN0
cnVjdHVyZSwgbmFtZUFuZE1lc3NhZ2UsIGNvbnN0cnVjdG9yKTsKKyAgICBjb25zdHJ1Y3Rvci0+
cHV0RGlyZWN0KGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLmxlbmd0
aCwganNOdW1iZXIoMSksIERvbnREZWxldGUgfCBSZWFkT25seSB8IERvbnRFbnVtKTsgLy8gRUNN
QSAxNS4xMS43LjUKKyAgICBjb25zdHJ1Y3Rvci0+cHV0RGlyZWN0KGV4ZWMtPmdsb2JhbERhdGEo
KSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLnByb3RvdHlwZSwgcHJvdG90eXBlLCBEb250RGVsZXRl
IHwgUmVhZE9ubHkgfCBEb250RW51bSk7CisgICAgY29uc3RydWN0b3ItPm1fZXJyb3JTdHJ1Y3R1
cmUuc2V0KGV4ZWMtPmdsb2JhbERhdGEoKSwgY29uc3RydWN0b3IsIEVycm9ySW5zdGFuY2U6OmNy
ZWF0ZVN0cnVjdHVyZShleGVjLT5nbG9iYWxEYXRhKCksIHByb3RvdHlwZSkpOworICAgIGNvbnN0
cnVjdG9yLT5pbml0UHJvcGVydGllcyhleGVjLT5nbG9iYWxEYXRhKCksIElkZW50aWZpZXIoZXhl
YywgbmFtZUFuZE1lc3NhZ2UpKTsKKyAgICBBU1NFUlQoY29uc3RydWN0b3ItPm1fZXJyb3JTdHJ1
Y3R1cmUpOworICAgIEFTU0VSVChjb25zdHJ1Y3Rvci0+bV9lcnJvclN0cnVjdHVyZS0+dHlwZUlu
Zm8oKS50eXBlKCkgPT0gT2JqZWN0VHlwZSk7CisgICAgcmV0dXJuIGNvbnN0cnVjdG9yOwogfQog
CiB2b2lkIE5hdGl2ZUVycm9yQ29uc3RydWN0b3I6OnZpc2l0Q2hpbGRyZW4oU2xvdFZpc2l0b3Im
IHZpc2l0b3IpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OYXRpdmVFcnJv
ckNvbnN0cnVjdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvci5oCShyZXZpc2lvbiA5MjMwOCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL05hdGl2ZUVycm9yQ29uc3RydWN0b3IuaAkod29ya2luZyBj
b3B5KQpAQCAtMzAsMTQgKzMwLDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgY2xhc3MgTmF0aXZl
RXJyb3JQcm90b3R5cGU7CiAKICAgICBjbGFzcyBOYXRpdmVFcnJvckNvbnN0cnVjdG9yIDogcHVi
bGljIEludGVybmFsRnVuY3Rpb24gewotICAgIHByaXZhdGU6Ci0gICAgICAgIE5hdGl2ZUVycm9y
Q29uc3RydWN0b3IoRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBTdHJ1
Y3R1cmUqIHByb3RvdHlwZVN0cnVjdHVyZSwgY29uc3QgVVN0cmluZyYpOwotCiAgICAgcHVibGlj
OgotICAgICAgICBzdGF0aWMgTmF0aXZlRXJyb3JDb25zdHJ1Y3RvciogY3JlYXRlKEV4ZWNTdGF0
ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUsIFN0cnVjdHVyZSogcHJvdG90eXBlU3RydWN0dXJlLCBjb25zdCBVU3RyaW5nJiBuYW1lQW5k
TWVzc2FnZSkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIG5ldyAoYWxsb2NhdGVDZWxs
PE5hdGl2ZUVycm9yQ29uc3RydWN0b3I+KCpleGVjLT5oZWFwKCkpKSBOYXRpdmVFcnJvckNvbnN0
cnVjdG9yKGV4ZWMsIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBwcm90b3R5cGVTdHJ1Y3R1cmUs
IG5hbWVBbmRNZXNzYWdlKTsKLSAgICAgICAgfQorICAgICAgICBzdGF0aWMgTmF0aXZlRXJyb3JD
b25zdHJ1Y3RvciogY3JlYXRlKEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJl
KiwgU3RydWN0dXJlKiBwcm90b3R5cGVTdHJ1Y3R1cmUsIGNvbnN0IFVTdHJpbmcmIG5hbWVBbmRN
ZXNzYWdlKTsKICAgICAgICAgCiAgICAgICAgIHN0YXRpYyBjb25zdCBDbGFzc0luZm8gc19pbmZv
OwogCkBAIC00OSw2ICs0Myw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBTdHJ1Y3R1cmUq
IGVycm9yU3RydWN0dXJlKCkgeyByZXR1cm4gbV9lcnJvclN0cnVjdHVyZS5nZXQoKTsgfQogCiAg
ICAgcHJpdmF0ZToKKyAgICAgICAgTmF0aXZlRXJyb3JDb25zdHJ1Y3RvcihFeGVjU3RhdGUqLCBK
U0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSopOwogICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWdu
ZWQgU3RydWN0dXJlRmxhZ3MgPSBPdmVycmlkZXNWaXNpdENoaWxkcmVuIHwgSW50ZXJuYWxGdW5j
dGlvbjo6U3RydWN0dXJlRmxhZ3M7CiAgICAgICAgIHZpcnR1YWwgQ29uc3RydWN0VHlwZSBnZXRD
b25zdHJ1Y3REYXRhKENvbnN0cnVjdERhdGEmKTsKICAgICAgICAgdmlydHVhbCBDYWxsVHlwZSBn
ZXRDYWxsRGF0YShDYWxsRGF0YSYpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvTmF0aXZlRXJyb3JQcm90b3R5cGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL05hdGl2ZUVycm9yUHJvdG90eXBlLmNwcAkocmV2aXNpb24gOTIzMDgp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OYXRpdmVFcnJvclByb3RvdHlwZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTIyLDIwICsyMiwxNCBAQAogI2luY2x1ZGUgIk5hdGl2ZUVy
cm9yUHJvdG90eXBlLmgiCiAKICNpbmNsdWRlICJKU0dsb2JhbE9iamVjdC5oIgotI2luY2x1ZGUg
IkpTU3RyaW5nLmgiCi0jaW5jbHVkZSAiTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvci5oIgotI2luY2x1
ZGUgIlVTdHJpbmcuaCIKIAogbmFtZXNwYWNlIEpTQyB7CiAKIEFTU0VSVF9DTEFTU19GSVRTX0lO
X0NFTEwoTmF0aXZlRXJyb3JQcm90b3R5cGUpOwogCi1OYXRpdmVFcnJvclByb3RvdHlwZTo6TmF0
aXZlRXJyb3JQcm90b3R5cGUoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgY29uc3QgVVN0cmluZyYgbmFtZUFuZE1lc3Nh
Z2UsIE5hdGl2ZUVycm9yQ29uc3RydWN0b3IqIGNvbnN0cnVjdG9yKQorTmF0aXZlRXJyb3JQcm90
b3R5cGU6Ok5hdGl2ZUVycm9yUHJvdG90eXBlKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAgICAgOiBFcnJvclByb3Rv
dHlwZShleGVjLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSkKIHsKLSAgICBwdXREaXJlY3QoZXhl
Yy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkubmFtZSwganNTdHJpbmcoZXhl
YywgbmFtZUFuZE1lc3NhZ2UpLCBEb250RW51bSk7Ci0gICAgcHV0RGlyZWN0KGV4ZWMtPmdsb2Jh
bERhdGEoKSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLm1lc3NhZ2UsIGpzU3RyaW5nKGV4ZWMsIG5h
bWVBbmRNZXNzYWdlKSwgRG9udEVudW0pOwotICAgIHB1dERpcmVjdChleGVjLT5nbG9iYWxEYXRh
KCksIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5jb25zdHJ1Y3RvciwgY29uc3RydWN0b3IsIERvbnRF
bnVtKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9OYXRpdmVFcnJvclByb3RvdHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL05hdGl2ZUVycm9yUHJvdG90eXBlLmgJKHJldmlzaW9uIDky
MzA4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZlRXJyb3JQcm90b3R5
cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMjIsMTggKzIyLDIyIEBACiAjZGVmaW5lIE5hdGl2ZUVy
cm9yUHJvdG90eXBlX2gKIAogI2luY2x1ZGUgIkVycm9yUHJvdG90eXBlLmgiCisjaW5jbHVkZSAi
TmF0aXZlRXJyb3JDb25zdHJ1Y3Rvci5oIgogCiBuYW1lc3BhY2UgSlNDIHsKLSAgICBjbGFzcyBO
YXRpdmVFcnJvckNvbnN0cnVjdG9yOwogCiAgICAgY2xhc3MgTmF0aXZlRXJyb3JQcm90b3R5cGUg
OiBwdWJsaWMgRXJyb3JQcm90b3R5cGUgewogICAgIHByaXZhdGU6Ci0gICAgICAgIE5hdGl2ZUVy
cm9yUHJvdG90eXBlKEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgY29u
c3QgVVN0cmluZyYsIE5hdGl2ZUVycm9yQ29uc3RydWN0b3IqKTsKKyAgICAgICAgTmF0aXZlRXJy
b3JQcm90b3R5cGUoRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqKTsKICAg
ICAKICAgICBwdWJsaWM6CiAgICAgICAgIHN0YXRpYyBOYXRpdmVFcnJvclByb3RvdHlwZSogY3Jl
YXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0
dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IFVTdHJpbmcmIG5hbWVBbmRNZXNzYWdlLCBOYXRpdmVFcnJv
ckNvbnN0cnVjdG9yKiBjb25zdHJ1Y3RvcikKICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJu
IG5ldyAoYWxsb2NhdGVDZWxsPE5hdGl2ZUVycm9yUHJvdG90eXBlPigqZXhlYy0+aGVhcCgpKSkg
TmF0aXZlRXJyb3JQcm90b3R5cGUoZXhlYywgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIG5hbWVB
bmRNZXNzYWdlLCBjb25zdHJ1Y3Rvcik7CisgICAgICAgICAgICBOYXRpdmVFcnJvclByb3RvdHlw
ZSogcHJvdG90eXBlID0gbmV3IChhbGxvY2F0ZUNlbGw8TmF0aXZlRXJyb3JQcm90b3R5cGU+KCpl
eGVjLT5oZWFwKCkpKSBOYXRpdmVFcnJvclByb3RvdHlwZShleGVjLCBnbG9iYWxPYmplY3QsIHN0
cnVjdHVyZSk7CisgICAgICAgICAgICBwcm90b3R5cGUtPnB1dERpcmVjdChleGVjLT5nbG9iYWxE
YXRhKCksIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5uYW1lLCBqc1N0cmluZyhleGVjLCBuYW1lQW5k
TWVzc2FnZSksIERvbnRFbnVtKTsKKyAgICAgICAgICAgIHByb3RvdHlwZS0+cHV0RGlyZWN0KGV4
ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLm1lc3NhZ2UsIGpzU3RyaW5n
KGV4ZWMsIG5hbWVBbmRNZXNzYWdlKSwgRG9udEVudW0pOworICAgICAgICAgICAgcHJvdG90eXBl
LT5wdXREaXJlY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuY29u
c3RydWN0b3IsIGNvbnN0cnVjdG9yLCBEb250RW51bSk7CisgICAgICAgICAgICByZXR1cm4gcHJv
dG90eXBlOwogICAgICAgICB9CiAgICAgfTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvTnVtYmVyQ29uc3RydWN0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL051bWJlckNvbnN0cnVjdG9yLmNwcAkocmV2aXNpb24gOTIzMDgp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OdW1iZXJDb25zdHJ1Y3Rvci5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTU1LDcgKzU1LDcgQEAgY29uc3QgQ2xhc3NJbmZvIE51bWJlckNv
bnN0cnVjdG9yOjpzX2luZgogKi8KIAogTnVtYmVyQ29uc3RydWN0b3I6Ok51bWJlckNvbnN0cnVj
dG9yKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0
dXJlKiBzdHJ1Y3R1cmUsIE51bWJlclByb3RvdHlwZSogbnVtYmVyUHJvdG90eXBlKQotICAgIDog
SW50ZXJuYWxGdW5jdGlvbigmZXhlYy0+Z2xvYmFsRGF0YSgpLCBnbG9iYWxPYmplY3QsIHN0cnVj
dHVyZSwgSWRlbnRpZmllcihleGVjLCBudW1iZXJQcm90b3R5cGUtPnNfaW5mby5jbGFzc05hbWUp
KQorICAgIDogSW50ZXJuYWxGdW5jdGlvbihnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSkKIHsKICAg
ICBBU1NFUlQoaW5oZXJpdHMoJnNfaW5mbykpOwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9OdW1iZXJDb25zdHJ1Y3Rvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL051bWJlckNvbnN0cnVjdG9yLmgJKHJldmlzaW9uIDkyMzA4KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVtYmVyQ29uc3RydWN0b3IuaAkod29y
a2luZyBjb3B5KQpAQCAtMjIsMTkgKzIyLDIwIEBACiAjZGVmaW5lIE51bWJlckNvbnN0cnVjdG9y
X2gKIAogI2luY2x1ZGUgIkludGVybmFsRnVuY3Rpb24uaCIKKyNpbmNsdWRlICJOdW1iZXJQcm90
b3R5cGUuaCIKIAogbmFtZXNwYWNlIEpTQyB7CiAKLSAgICBjbGFzcyBOdW1iZXJQcm90b3R5cGU7
Ci0KICAgICBjbGFzcyBOdW1iZXJDb25zdHJ1Y3RvciA6IHB1YmxpYyBJbnRlcm5hbEZ1bmN0aW9u
IHsKICAgICBwcml2YXRlOgogICAgICAgICBOdW1iZXJDb25zdHJ1Y3RvcihFeGVjU3RhdGUqLCBK
U0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIE51bWJlclByb3RvdHlwZSopOwogICAgICAgICAK
ICAgICBwdWJsaWM6Ci0gICAgICAgIHN0YXRpYyBOdW1iZXJDb25zdHJ1Y3RvciogY3JlYXRlKEV4
ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBz
dHJ1Y3R1cmUsIE51bWJlclByb3RvdHlwZSogbnVtUHJvdG90eXBlKQorICAgICAgICBzdGF0aWMg
TnVtYmVyQ29uc3RydWN0b3IqIGNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBOdW1iZXJQcm90b3R5cGUqIG51
bWJlclByb3RvdHlwZSkKICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIG5ldyAoYWxsb2Nh
dGVDZWxsPE51bWJlckNvbnN0cnVjdG9yPigqZXhlYy0+aGVhcCgpKSkgTnVtYmVyQ29uc3RydWN0
b3IoZXhlYywgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIG51bVByb3RvdHlwZSk7CisgICAgICAg
ICAgICBOdW1iZXJDb25zdHJ1Y3RvciogY29uc3RydWN0b3IgPSBuZXcgKGFsbG9jYXRlQ2VsbDxO
dW1iZXJDb25zdHJ1Y3Rvcj4oKmV4ZWMtPmhlYXAoKSkpIE51bWJlckNvbnN0cnVjdG9yKGV4ZWMs
IGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBudW1iZXJQcm90b3R5cGUpOworICAgICAgICAgICAg
Y29uc3RydWN0b3ItPmluaXRQcm9wZXJ0aWVzKGV4ZWMtPmdsb2JhbERhdGEoKSwgSWRlbnRpZmll
cihleGVjLCBudW1iZXJQcm90b3R5cGUtPnNfaW5mby5jbGFzc05hbWUpKTsKKyAgICAgICAgICAg
IHJldHVybiBjb25zdHJ1Y3RvcjsKICAgICAgICAgfQogCiAgICAgICAgIHZpcnR1YWwgYm9vbCBn
ZXRPd25Qcm9wZXJ0eVNsb3QoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIFByb3BlcnR5
U2xvdCYpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29uc3Ry
dWN0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09i
amVjdENvbnN0cnVjdG9yLmNwcAkocmV2aXNpb24gOTIzMDgpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc2
LDcgKzc2LDcgQEAgY29uc3QgQ2xhc3NJbmZvIE9iamVjdENvbnN0cnVjdG9yOjpzX2luZgogKi8K
IAogT2JqZWN0Q29uc3RydWN0b3I6Ok9iamVjdENvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogZXhlYywg
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIE9iamVj
dFByb3RvdHlwZSogb2JqZWN0UHJvdG90eXBlKQotICAgIDogSW50ZXJuYWxGdW5jdGlvbigmZXhl
Yy0+Z2xvYmFsRGF0YSgpLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgSWRlbnRpZmllcihleGVj
LCAiT2JqZWN0IikpCisgICAgOiBJbnRlcm5hbEZ1bmN0aW9uKGdsb2JhbE9iamVjdCwgc3RydWN0
dXJlKQogewogICAgIC8vIEVDTUEgMTUuMi4zLjEKICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNp
dGlvbihleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5wcm90b3R5cGUs
IG9iamVjdFByb3RvdHlwZSwgRG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkpOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RDb25zdHJ1Y3Rv
ci5oCShyZXZpc2lvbiA5MjMwOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09i
amVjdENvbnN0cnVjdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTM0LDcgKzM0LDkgQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgcHVibGljOgogICAgICAgICBzdGF0aWMgT2JqZWN0Q29uc3RydWN0b3Iq
IGNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0
cnVjdHVyZSogc3RydWN0dXJlLCBPYmplY3RQcm90b3R5cGUqIG9ialByb3RvdHlwZSkKICAgICAg
ICAgewotICAgICAgICAgICAgcmV0dXJuIG5ldyAoYWxsb2NhdGVDZWxsPE9iamVjdENvbnN0cnVj
dG9yPigqZXhlYy0+aGVhcCgpKSkgT2JqZWN0Q29uc3RydWN0b3IoZXhlYywgZ2xvYmFsT2JqZWN0
LCBzdHJ1Y3R1cmUsIG9ialByb3RvdHlwZSk7CisgICAgICAgICAgICBPYmplY3RDb25zdHJ1Y3Rv
ciogY29uc3RydWN0b3IgPSBuZXcgKGFsbG9jYXRlQ2VsbDxPYmplY3RDb25zdHJ1Y3Rvcj4oKmV4
ZWMtPmhlYXAoKSkpIE9iamVjdENvbnN0cnVjdG9yKGV4ZWMsIGdsb2JhbE9iamVjdCwgc3RydWN0
dXJlLCBvYmpQcm90b3R5cGUpOworICAgICAgICAgICAgY29uc3RydWN0b3ItPmluaXRQcm9wZXJ0
aWVzKGV4ZWMtPmdsb2JhbERhdGEoKSwgSWRlbnRpZmllcihleGVjLCAiT2JqZWN0IikpOworICAg
ICAgICAgICAgcmV0dXJuIGNvbnN0cnVjdG9yOwogICAgICAgICB9CiAKICAgICAgICAgdmlydHVh
bCBib29sIGdldE93blByb3BlcnR5U2xvdChFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiwg
UHJvcGVydHlTbG90Jik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdF
eHBDb25zdHJ1Y3Rvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvUmVnRXhwQ29uc3RydWN0b3IuY3BwCShyZXZpc2lvbiA5MjMwOCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cENvbnN0cnVjdG9yLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtOTYsNyArOTYsNyBAQCBjb25zdCBDbGFzc0luZm8gUmVnRXhwQ29uc3RydWN0b3I6OnNf
aW5mCiAqLwogCiBSZWdFeHBDb25zdHJ1Y3Rvcjo6UmVnRXhwQ29uc3RydWN0b3IoRXhlY1N0YXRl
KiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSwgUmVnRXhwUHJvdG90eXBlKiByZWdFeHBQcm90b3R5cGUpCi0gICAgOiBJbnRlcm5hbEZ1bmN0
aW9uKCZleGVjLT5nbG9iYWxEYXRhKCksIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBJZGVudGlm
aWVyKGV4ZWMsICJSZWdFeHAiKSkKKyAgICA6IEludGVybmFsRnVuY3Rpb24oZ2xvYmFsT2JqZWN0
LCBzdHJ1Y3R1cmUpCiAgICAgLCBkKGFkb3B0UHRyKG5ldyBSZWdFeHBDb25zdHJ1Y3RvclByaXZh
dGUpKQogewogICAgIEFTU0VSVChpbmhlcml0cygmc19pbmZvKSk7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBDb25zdHJ1Y3Rvci5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cENvbnN0cnVjdG9yLmgJKHJldmlzaW9u
IDkyMzA4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwQ29uc3RydWN0
b3IuaAkod29ya2luZyBjb3B5KQpAQCAtNjIsNyArNjIsOSBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICBwdWJsaWM6CiAgICAgICAgIHN0YXRpYyBSZWdFeHBDb25zdHJ1Y3RvciogY3JlYXRlKEV4ZWNT
dGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUsIFJlZ0V4cFByb3RvdHlwZSogcmVnRXhwUHJvdG90eXBlKQogICAgICAgICB7Ci0gICAg
ICAgICAgICByZXR1cm4gbmV3IChhbGxvY2F0ZUNlbGw8UmVnRXhwQ29uc3RydWN0b3I+KCpleGVj
LT5oZWFwKCkpKSBSZWdFeHBDb25zdHJ1Y3RvcihleGVjLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVy
ZSwgcmVnRXhwUHJvdG90eXBlKTsKKyAgICAgICAgICAgIFJlZ0V4cENvbnN0cnVjdG9yKiBjb25z
dHJ1Y3RvciA9IG5ldyAoYWxsb2NhdGVDZWxsPFJlZ0V4cENvbnN0cnVjdG9yPigqZXhlYy0+aGVh
cCgpKSkgUmVnRXhwQ29uc3RydWN0b3IoZXhlYywgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIHJl
Z0V4cFByb3RvdHlwZSk7CisgICAgICAgICAgICBjb25zdHJ1Y3Rvci0+aW5pdFByb3BlcnRpZXMo
ZXhlYy0+Z2xvYmFsRGF0YSgpLCBJZGVudGlmaWVyKGV4ZWMsICJSZWdFeHAiKSk7CisgICAgICAg
ICAgICByZXR1cm4gY29uc3RydWN0b3I7CiAgICAgICAgIH0KIAogICAgICAgICBzdGF0aWMgU3Ry
dWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU1ZhbHVl
IHByb3RvdHlwZSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE1h
dGNoZXNBcnJheS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1JlZ0V4cE1hdGNoZXNBcnJheS5oCShyZXZpc2lvbiA5MjMwOCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1JlZ0V4cE1hdGNoZXNBcnJheS5oCSh3b3JraW5nIGNvcHkpCkBAIC0y
NSw5ICsyNSw2IEBACiBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIFJlZ0V4cE1hdGNoZXNB
cnJheSA6IHB1YmxpYyBKU0FycmF5IHsKLSAgICBwcml2YXRlOgotICAgICAgICBSZWdFeHBNYXRj
aGVzQXJyYXkoRXhlY1N0YXRlKiwgUmVnRXhwQ29uc3RydWN0b3JQcml2YXRlKik7Ci0KICAgICBw
dWJsaWM6CiAgICAgICAgIHN0YXRpYyBSZWdFeHBNYXRjaGVzQXJyYXkqIGNyZWF0ZShFeGVjU3Rh
dGUqIGV4ZWMsIFJlZ0V4cENvbnN0cnVjdG9yUHJpdmF0ZSogY3RvclByaXZhdGUpCiAgICAgICAg
IHsKQEAgLTM2LDYgKzMzLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZpcnR1YWwgflJl
Z0V4cE1hdGNoZXNBcnJheSgpOwogCiAgICAgcHJpdmF0ZToKKyAgICAgICAgUmVnRXhwTWF0Y2hl
c0FycmF5KEV4ZWNTdGF0ZSosIFJlZ0V4cENvbnN0cnVjdG9yUHJpdmF0ZSopOwogICAgICAgICB2
aXJ0dWFsIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRl
bnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCiAgICAgICAgIHsKICAg
ICAgICAgICAgIGlmIChzdWJjbGFzc0RhdGEoKSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1N0cmluZ0NvbnN0cnVjdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdDb25zdHJ1Y3Rvci5jcHAJKHJldmlzaW9uIDkyMzA4
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nQ29uc3RydWN0b3IuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC00OCw3ICs0OCw3IEBAIGNvbnN0IENsYXNzSW5mbyBTdHJpbmdD
b25zdHJ1Y3Rvcjo6c19pbmYKIEFTU0VSVF9DTEFTU19GSVRTX0lOX0NFTEwoU3RyaW5nQ29uc3Ry
dWN0b3IpOwogCiBTdHJpbmdDb25zdHJ1Y3Rvcjo6U3RyaW5nQ29uc3RydWN0b3IoRXhlY1N0YXRl
KiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSwgU3RyaW5nUHJvdG90eXBlKiBzdHJpbmdQcm90b3R5cGUpCi0gICAgOiBJbnRlcm5hbEZ1bmN0
aW9uKCZleGVjLT5nbG9iYWxEYXRhKCksIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBJZGVudGlm
aWVyKGV4ZWMsIHN0cmluZ1Byb3RvdHlwZS0+Y2xhc3NJbmZvKCktPmNsYXNzTmFtZSkpCisgICAg
OiBJbnRlcm5hbEZ1bmN0aW9uKGdsb2JhbE9iamVjdCwgc3RydWN0dXJlKQogewogICAgIHB1dERp
cmVjdFdpdGhvdXRUcmFuc2l0aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+cHJvcGVydHlO
YW1lcygpLnByb3RvdHlwZSwgc3RyaW5nUHJvdG90eXBlLCBSZWFkT25seSB8IERvbnRFbnVtIHwg
RG9udERlbGV0ZSk7CiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24oZXhlYy0+Z2xvYmFs
RGF0YSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkubGVuZ3RoLCBqc051bWJlcigxKSwgUmVhZE9u
bHkgfCBEb250RW51bSB8IERvbnREZWxldGUpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvU3RyaW5nQ29uc3RydWN0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9TdHJpbmdDb25zdHJ1Y3Rvci5oCShyZXZpc2lvbiA5MjMwOCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ0NvbnN0cnVjdG9yLmgJKHdvcmtp
bmcgY29weSkKQEAgLTMyLDkgKzMyLDExIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBTdHJp
bmdDb25zdHJ1Y3RvcihFeGVjU3RhdGUqLCBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIFN0
cmluZ1Byb3RvdHlwZSopOwogICAgICAgICAKICAgICBwdWJsaWM6Ci0gICAgICAgIHN0YXRpYyBT
dHJpbmdDb25zdHJ1Y3RvciogY3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCAsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBTdHJpbmdQcm90b3R5cGUqIHN0
clByb3RvdHlwZSkKKyAgICAgICAgc3RhdGljIFN0cmluZ0NvbnN0cnVjdG9yKiBjcmVhdGUoRXhl
Y1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ICwgU3RydWN0dXJlKiBz
dHJ1Y3R1cmUsIFN0cmluZ1Byb3RvdHlwZSogc3RyaW5nUHJvdG90eXBlKQogICAgICAgICB7Ci0g
ICAgICAgICAgICByZXR1cm4gbmV3IChhbGxvY2F0ZUNlbGw8U3RyaW5nQ29uc3RydWN0b3I+KCpl
eGVjLT5oZWFwKCkpKSBTdHJpbmdDb25zdHJ1Y3RvcihleGVjLCBnbG9iYWxPYmplY3QsIHN0cnVj
dHVyZSwgc3RyUHJvdG90eXBlKTsKKyAgICAgICAgICAgIFN0cmluZ0NvbnN0cnVjdG9yKiBjb25z
dHJ1Y3RvciA9IG5ldyAoYWxsb2NhdGVDZWxsPFN0cmluZ0NvbnN0cnVjdG9yPigqZXhlYy0+aGVh
cCgpKSkgU3RyaW5nQ29uc3RydWN0b3IoZXhlYywgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIHN0
cmluZ1Byb3RvdHlwZSk7CisgICAgICAgICAgICBjb25zdHJ1Y3Rvci0+aW5pdFByb3BlcnRpZXMo
ZXhlYy0+Z2xvYmFsRGF0YSgpLCBJZGVudGlmaWVyKGV4ZWMsIHN0cmluZ1Byb3RvdHlwZS0+Y2xh
c3NJbmZvKCktPmNsYXNzTmFtZSkpOworICAgICAgICAgICAgcmV0dXJuIGNvbnN0cnVjdG9yOwog
ICAgICAgICB9CiAKICAgICAgICAgc3RhdGljIGNvbnN0IENsYXNzSW5mbyBzX2luZm87CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdPYmplY3QuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ09iamVjdC5jcHAJKHJl
dmlzaW9uIDkyMzA4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nT2Jq
ZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjksMTMgKzI5LDYgQEAgQVNTRVJUX0NMQVNTX0ZJ
VFNfSU5fQ0VMTChTdHJpbmdPYmplY3QpOwogCiBjb25zdCBDbGFzc0luZm8gU3RyaW5nT2JqZWN0
OjpzX2luZm8gPSB7ICJTdHJpbmciLCAmSlNXcmFwcGVyT2JqZWN0OjpzX2luZm8sIDAsIDAgfTsK
IAotU3RyaW5nT2JqZWN0OjpTdHJpbmdPYmplY3QoRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSkKLSAgICA6IEpTV3JhcHBlck9iamVjdChleGVjLT5nbG9iYWxEYXRhKCksIHN0
cnVjdHVyZSkKLXsKLSAgICBBU1NFUlQoaW5oZXJpdHMoJnNfaW5mbykpOwotICAgIHNldEludGVy
bmFsVmFsdWUoZXhlYy0+Z2xvYmFsRGF0YSgpLCBqc0VtcHR5U3RyaW5nKGV4ZWMpKTsKLX0KLQog
U3RyaW5nT2JqZWN0OjpTdHJpbmdPYmplY3QoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSwgSlNTdHJpbmcqIHN0cmluZykKICAgICA6IEpTV3JhcHBlck9iamVj
dChnbG9iYWxEYXRhLCBzdHJ1Y3R1cmUpCiB7CkBAIC00MywxMyArMzYsNiBAQCBTdHJpbmdPYmpl
Y3Q6OlN0cmluZ09iamVjdChKU0dsb2JhbERhdGEmCiAgICAgc2V0SW50ZXJuYWxWYWx1ZShnbG9i
YWxEYXRhLCBzdHJpbmcpOwogfQogCi1TdHJpbmdPYmplY3Q6OlN0cmluZ09iamVjdChFeGVjU3Rh
dGUqIGV4ZWMsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBjb25zdCBVU3RyaW5nJiBzdHJpbmcpCi0g
ICAgOiBKU1dyYXBwZXJPYmplY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBzdHJ1Y3R1cmUpCi17Ci0g
ICAgQVNTRVJUKGluaGVyaXRzKCZzX2luZm8pKTsKLSAgICBzZXRJbnRlcm5hbFZhbHVlKGV4ZWMt
Pmdsb2JhbERhdGEoKSwganNTdHJpbmcoZXhlYywgc3RyaW5nKSk7Ci19Ci0KIGJvb2wgU3RyaW5n
T2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3QoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlm
aWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBpZiAoaW50ZXJu
YWxWYWx1ZSgpLT5nZXRTdHJpbmdQcm9wZXJ0eVNsb3QoZXhlYywgcHJvcGVydHlOYW1lLCBzbG90
KSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ09iamVjdC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ09iamVjdC5o
CShyZXZpc2lvbiA5MjMwOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmlu
Z09iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNywxOCArMjcsMTYgQEAKIG5hbWVzcGFjZSBK
U0MgewogCiAgICAgY2xhc3MgU3RyaW5nT2JqZWN0IDogcHVibGljIEpTV3JhcHBlck9iamVjdCB7
Ci0gICAgcHJvdGVjdGVkOgotICAgICAgICBTdHJpbmdPYmplY3QoRXhlY1N0YXRlKiwgU3RydWN0
dXJlKik7Ci0gICAgICAgIFN0cmluZ09iamVjdChFeGVjU3RhdGUqLCBTdHJ1Y3R1cmUqLCBjb25z
dCBVU3RyaW5nJik7Ci0gICAgICAgICAgICAgICAgCiAgICAgcHVibGljOgogICAgICAgICBzdGF0
aWMgU3RyaW5nT2JqZWN0KiBjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSkKICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIG5ldyAoYWxsb2NhdGVDZWxsPFN0
cmluZ09iamVjdD4oKmV4ZWMtPmhlYXAoKSkpIFN0cmluZ09iamVjdChleGVjLCBzdHJ1Y3R1cmUp
OyAgCisgICAgICAgICAgICBKU1N0cmluZyogZW1wdHlTdHJpbmcgPSBqc0VtcHR5U3RyaW5nKGV4
ZWMpOworICAgICAgICAgICAgcmV0dXJuIG5ldyAoYWxsb2NhdGVDZWxsPFN0cmluZ09iamVjdD4o
KmV4ZWMtPmhlYXAoKSkpIFN0cmluZ09iamVjdChleGVjLT5nbG9iYWxEYXRhKCksIHN0cnVjdHVy
ZSwgZW1wdHlTdHJpbmcpOwogICAgICAgICB9CiAgICAgICAgIHN0YXRpYyBTdHJpbmdPYmplY3Qq
IGNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBjb25zdCBVU3Ry
aW5nJiBzdHIpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBuZXcgKGFsbG9jYXRlQ2Vs
bDxTdHJpbmdPYmplY3Q+KCpleGVjLT5oZWFwKCkpKSBTdHJpbmdPYmplY3QoZXhlYywgc3RydWN0
dXJlLCBzdHIpOyAgCisgICAgICAgICAgICBKU1N0cmluZyogc3RyaW5nID0ganNTdHJpbmcoZXhl
Yywgc3RyKTsKKyAgICAgICAgICAgIHJldHVybiBuZXcgKGFsbG9jYXRlQ2VsbDxTdHJpbmdPYmpl
Y3Q+KCpleGVjLT5oZWFwKCkpKSBTdHJpbmdPYmplY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBzdHJ1
Y3R1cmUsIHN0cmluZyk7CiAgICAgICAgIH0KICAgICAgICAgc3RhdGljIFN0cmluZ09iamVjdCog
Y3JlYXRlKEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KiwgSlNTdHJpbmcqKTsKICAgICAgICAg
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdPYmplY3RUaGF0TWFz
cXVlcmFkZXNBc1VuZGVmaW5lZC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1N0cmluZ09iamVjdFRoYXRNYXNxdWVyYWRlc0FzVW5kZWZpbmVkLmgJKHJldmlz
aW9uIDkyMzA4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nT2JqZWN0
VGhhdE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQuaAkod29ya2luZyBjb3B5KQpAQCAtMzIsMTMgKzMy
LDE0IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHB1YmxpYzoKICAgICAgICAgc3RhdGljIFN0cmlu
Z09iamVjdFRoYXRNYXNxdWVyYWRlc0FzVW5kZWZpbmVkKiBjcmVhdGUoRXhlY1N0YXRlKiBleGVj
LCBjb25zdCBVU3RyaW5nJiBzdHJpbmcpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBu
ZXcgKGFsbG9jYXRlQ2VsbDxTdHJpbmdPYmplY3RUaGF0TWFzcXVlcmFkZXNBc1VuZGVmaW5lZD4o
KmV4ZWMtPmhlYXAoKSkpIFN0cmluZ09iamVjdFRoYXRNYXNxdWVyYWRlc0FzVW5kZWZpbmVkKGV4
ZWMsCi0gICAgICAgICAgICAgICAgY3JlYXRlU3RydWN0dXJlKGV4ZWMtPmdsb2JhbERhdGEoKSwg
ZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLT5zdHJpbmdQcm90b3R5cGUoKSksIHN0cmluZyk7
CisgICAgICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGNyZWF0ZVN0cnVjdHVyZShleGVj
LT5nbG9iYWxEYXRhKCksIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+c3RyaW5nUHJvdG90
eXBlKCkpOworICAgICAgICAgICAgSlNTdHJpbmcqIGpzc3RyaW5nID0ganNTdHJpbmcoZXhlYywg
c3RyaW5nKTsKKyAgICAgICAgICAgIHJldHVybiBuZXcgKGFsbG9jYXRlQ2VsbDxTdHJpbmdPYmpl
Y3RUaGF0TWFzcXVlcmFkZXNBc1VuZGVmaW5lZD4oKmV4ZWMtPmhlYXAoKSkpIFN0cmluZ09iamVj
dFRoYXRNYXNxdWVyYWRlc0FzVW5kZWZpbmVkKGV4ZWMsIHN0cnVjdHVyZSwganNzdHJpbmcpOwog
ICAgICAgICB9CiAKICAgICBwcml2YXRlOgotICAgICAgICBTdHJpbmdPYmplY3RUaGF0TWFzcXVl
cmFkZXNBc1VuZGVmaW5lZChFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBj
b25zdCBVU3RyaW5nJiBzdHJpbmcpCi0gICAgICAgICAgICA6IFN0cmluZ09iamVjdChleGVjLCBz
dHJ1Y3R1cmUsIHN0cmluZykKKyAgICAgICAgU3RyaW5nT2JqZWN0VGhhdE1hc3F1ZXJhZGVzQXNV
bmRlZmluZWQoRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNTdHJpbmcq
IHN0cmluZykKKyAgICAgICAgICAgIDogU3RyaW5nT2JqZWN0KGV4ZWMtPmdsb2JhbERhdGEoKSwg
c3RydWN0dXJlLCBzdHJpbmcpCiAgICAgICAgIHsKICAgICAgICAgfQogCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdQcm90b3R5cGUuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ1Byb3RvdHlwZS5jcHAJKHJldmlz
aW9uIDkyMzA4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nUHJvdG90
eXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTMxLDggKzEzMSw4IEBAIGNvbnN0IENsYXNzSW5m
byBTdHJpbmdQcm90b3R5cGU6OnNfaW5mbyAKICovCiAKIC8vIEVDTUEgMTUuNS40Ci1TdHJpbmdQ
cm90b3R5cGU6OlN0cmluZ1Byb3RvdHlwZShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlKQotICAgIDogU3RyaW5nT2JqZWN0
KGV4ZWMsIHN0cnVjdHVyZSkKK1N0cmluZ1Byb3RvdHlwZTo6U3RyaW5nUHJvdG90eXBlKEV4ZWNT
dGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUsIEpTU3RyaW5nKiBzdHJpbmcpCisgICAgOiBTdHJpbmdPYmplY3QoZXhlYy0+Z2xvYmFs
RGF0YSgpLCBzdHJ1Y3R1cmUsIHN0cmluZykKIHsKICAgICBBU1NFUlQoaW5oZXJpdHMoJnNfaW5m
bykpOwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdQcm90b3R5
cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdQ
cm90b3R5cGUuaAkocmV2aXNpb24gOTIzMDgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9TdHJpbmdQcm90b3R5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMjksMTIgKzI5LDEzIEBA
IG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgU3RyaW5nUHJvdG90eXBlIDogcHVibGljIFN0
cmluZ09iamVjdCB7CiAgICAgcHJpdmF0ZToKLSAgICAgICAgU3RyaW5nUHJvdG90eXBlKEV4ZWNT
dGF0ZSosIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKik7CisgICAgICAgIFN0cmluZ1Byb3Rv
dHlwZShFeGVjU3RhdGUqLCBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIEpTU3RyaW5nKik7
CiAKICAgICBwdWJsaWM6CiAgICAgICAgIHN0YXRpYyBTdHJpbmdQcm90b3R5cGUqIGNyZWF0ZShF
eGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSog
c3RydWN0dXJlKQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gbmV3IChhbGxvY2F0ZUNl
bGw8U3RyaW5nUHJvdG90eXBlPigqZXhlYy0+aGVhcCgpKSkgU3RyaW5nUHJvdG90eXBlKGV4ZWMs
IGdsb2JhbE9iamVjdCwgc3RydWN0dXJlKTsKKyAgICAgICAgICAgIEpTU3RyaW5nKiBlbXB0eVN0
cmluZyA9IGpzRW1wdHlTdHJpbmcoZXhlYyk7CisgICAgICAgICAgICByZXR1cm4gbmV3IChhbGxv
Y2F0ZUNlbGw8U3RyaW5nUHJvdG90eXBlPigqZXhlYy0+aGVhcCgpKSkgU3RyaW5nUHJvdG90eXBl
KGV4ZWMsIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBlbXB0eVN0cmluZyk7CiAgICAgICAgIH0K
IAogICAgICAgICB2aXJ0dWFsIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEV4ZWNTdGF0ZSosIGNv
bnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVDaGFpbi5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUNoYWluLmgJKHJldmlzaW9u
IDkyMzA4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlQ2hhaW4u
aAkod29ya2luZyBjb3B5KQpAQCAtNDIsNyArNDIsMTEgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
ICAgIGZyaWVuZCBjbGFzcyBKSVQ7CiAKICAgICBwdWJsaWM6Ci0gICAgICAgIHN0YXRpYyBTdHJ1
Y3R1cmVDaGFpbiogY3JlYXRlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgU3RydWN0dXJlKiBo
ZWFkKSB7IHJldHVybiBuZXcgKGFsbG9jYXRlQ2VsbDxTdHJ1Y3R1cmVDaGFpbj4oZ2xvYmFsRGF0
YS5oZWFwKSkgU3RydWN0dXJlQ2hhaW4oZ2xvYmFsRGF0YSwgZ2xvYmFsRGF0YS5zdHJ1Y3R1cmVD
aGFpblN0cnVjdHVyZS5nZXQoKSwgaGVhZCk7IH0KKyAgICAgICAgc3RhdGljIFN0cnVjdHVyZUNo
YWluKiBjcmVhdGUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBTdHJ1Y3R1cmUqIGhlYWQpIAor
ICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gbmV3IChhbGxvY2F0ZUNlbGw8U3RydWN0dXJl
Q2hhaW4+KGdsb2JhbERhdGEuaGVhcCkpIFN0cnVjdHVyZUNoYWluKGdsb2JhbERhdGEsIGdsb2Jh
bERhdGEuc3RydWN0dXJlQ2hhaW5TdHJ1Y3R1cmUuZ2V0KCksIGhlYWQpOworICAgICAgICB9CisK
ICAgICAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4qIGhlYWQoKSB7IHJldHVybiBtX3ZlY3Rv
ci5nZXQoKTsgfQogICAgICAgICB2b2lkIHZpc2l0Q2hpbGRyZW4oU2xvdFZpc2l0b3ImKTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>102949</attachid>
            <date>2011-08-04 11:27:12 -0700</date>
            <delta_ts>2011-08-04 11:48:09 -0700</delta_ts>
            <desc>JSC patch with Windows build fixes</desc>
            <filename>bug-65288-20110804112615.patch</filename>
            <type>text/plain</type>
            <size>82893</size>
            <attacher name="Mark Hahnenberg">mhahnenberg</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gOTIzNjUpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTI0IEBA
CisyMDExLTA4LTAzICBNYXJrIEhhaG5lbmJlcmcgIDxtaGFobmVuYmVyZ0BhcHBsZS5jb20+CisK
KyAgICAgICAgQWRkIGNoZWNrcyB0byBlbnN1cmUgYWxsb2NhdGlvbiBkb2VzIG5vdCB0YWtlIHBs
YWNlIGR1cmluZyBpbml0aWFsaXphdGlvbiBvZiBHQy1tYW5hZ2VkIG9iamVjdHMKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY1Mjg4CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVmYWN0b3JpbmcgSlNDIGlu
IHByZXBhcmF0aW9uIGZvciB0aGUgaW5jbHVzaW9uIG9mIHRoZSBhZGRpdGlvbiBvZiBHQyB2YWxp
ZGF0aW9uIGNoZWNrcy4gIAorICAgICAgICBCYXNpY2FsbHkgd2UgcHVsbCBhcyBtdWNoIGFsbG9j
YXRpb24gYXMgd2UgY2FuIG91dCBvZiBjb25zdHJ1Y3RvcnMgaW50byB0aGVpciBzdGF0aWMgY3Jl
YXRlIAorICAgICAgICBtZXRob2RzIHRvIGF2b2lkIGFsbG9jYXRpb24gZHVyaW5nIGluaXRpYWxp
emF0aW9uLCB3aGljaCBjb3VsZCBjYXVzZSBHQyB0byBvY2N1ciB3aGVuIHRoZSAKKyAgICAgICAg
b2JqZWN0IGlzIGluIGFuIHVuZGVmaW5lZCBzdGF0ZS4KKworICAgICAgICAqIEFQSS9KU0NhbGxi
YWNrRnVuY3Rpb24uY3BwOgorICAgICAgICAoSlNDOjpKU0NhbGxiYWNrRnVuY3Rpb246OkpTQ2Fs
bGJhY2tGdW5jdGlvbik6CisgICAgICAgICogQVBJL0pTQ2FsbGJhY2tGdW5jdGlvbi5oOgorICAg
ICAgICAoSlNDOjpKU0NhbGxiYWNrRnVuY3Rpb246OmNyZWF0ZSk6CisgICAgICAgICogSmF2YVNj
cmlwdENvcmUuSlNWQUxVRTY0b25seS5leHA6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUuZXhw
OgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLm9yZGVyOgorICAgICAgICAqIGludGVycHJldGVy
L0ludGVycHJldGVyLmNwcDoKKyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OnRyeUNhY2hlUHV0
QnlJRCk6CisgICAgICAgICoganNjLmNwcDoKKyAgICAgICAgKEdsb2JhbE9iamVjdDo6Y3JlYXRl
KToKKyAgICAgICAgKEdsb2JhbE9iamVjdDo6R2xvYmFsT2JqZWN0KToKKyAgICAgICAgKiBydW50
aW1lL0FycmF5Q29uc3RydWN0b3IuY3BwOgorICAgICAgICAoSlNDOjpBcnJheUNvbnN0cnVjdG9y
OjpBcnJheUNvbnN0cnVjdG9yKToKKyAgICAgICAgKiBydW50aW1lL0FycmF5Q29uc3RydWN0b3Iu
aDoKKyAgICAgICAgKEpTQzo6QXJyYXlDb25zdHJ1Y3Rvcjo6Y3JlYXRlKToKKyAgICAgICAgKiBy
dW50aW1lL0Jvb2xlYW5Db25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0M6OkJvb2xlYW5Db25z
dHJ1Y3Rvcjo6Qm9vbGVhbkNvbnN0cnVjdG9yKToKKyAgICAgICAgKiBydW50aW1lL0Jvb2xlYW5D
b25zdHJ1Y3Rvci5oOgorICAgICAgICAoSlNDOjpCb29sZWFuQ29uc3RydWN0b3I6OmNyZWF0ZSk6
CisgICAgICAgICogcnVudGltZS9EYXRlQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAoSlNDOjpE
YXRlQ29uc3RydWN0b3I6OkRhdGVDb25zdHJ1Y3Rvcik6CisgICAgICAgICogcnVudGltZS9EYXRl
Q29uc3RydWN0b3IuaDoKKyAgICAgICAgKEpTQzo6RGF0ZUNvbnN0cnVjdG9yOjpjcmVhdGUpOgor
ICAgICAgICAqIHJ1bnRpbWUvRXJyb3IuY3BwOgorICAgICAgICAoSlNDOjpTdHJpY3RNb2RlVHlw
ZUVycm9yRnVuY3Rpb246OlN0cmljdE1vZGVUeXBlRXJyb3JGdW5jdGlvbik6CisgICAgICAgIChK
U0M6OlN0cmljdE1vZGVUeXBlRXJyb3JGdW5jdGlvbjo6Y3JlYXRlKToKKyAgICAgICAgKiBydW50
aW1lL0Vycm9yQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAoSlNDOjpFcnJvckNvbnN0cnVjdG9y
OjpFcnJvckNvbnN0cnVjdG9yKToKKyAgICAgICAgKiBydW50aW1lL0Vycm9yQ29uc3RydWN0b3Iu
aDoKKyAgICAgICAgKEpTQzo6RXJyb3JDb25zdHJ1Y3Rvcjo6Y3JlYXRlKToKKyAgICAgICAgKiBy
dW50aW1lL0Vycm9ySW5zdGFuY2UuY3BwOgorICAgICAgICAoSlNDOjpFcnJvckluc3RhbmNlOjpF
cnJvckluc3RhbmNlKToKKyAgICAgICAgKEpTQzo6RXJyb3JJbnN0YW5jZTo6Y3JlYXRlKToKKyAg
ICAgICAgKiBydW50aW1lL0Vycm9ySW5zdGFuY2UuaDoKKyAgICAgICAgKiBydW50aW1lL0Vycm9y
UHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6RXJyb3JQcm90b3R5cGU6OkVycm9yUHJvdG90
eXBlKToKKyAgICAgICAgKiBydW50aW1lL0Vycm9yUHJvdG90eXBlLmg6CisgICAgICAgIChKU0M6
OkVycm9yUHJvdG90eXBlOjpjcmVhdGUpOgorICAgICAgICAqIHJ1bnRpbWUvRXhlY3V0YWJsZS5j
cHA6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZTo6RnVuY3Rpb25FeGVjdXRhYmxl
KToKKyAgICAgICAgKiBydW50aW1lL0V4ZWN1dGFibGUuaDoKKyAgICAgICAgKEpTQzo6TmF0aXZl
RXhlY3V0YWJsZTo6Y3JlYXRlKToKKyAgICAgICAgKiBydW50aW1lL0Z1bmN0aW9uQ29uc3RydWN0
b3IuY3BwOgorICAgICAgICAoSlNDOjpGdW5jdGlvbkNvbnN0cnVjdG9yOjpGdW5jdGlvbkNvbnN0
cnVjdG9yKToKKyAgICAgICAgKiBydW50aW1lL0Z1bmN0aW9uQ29uc3RydWN0b3IuaDoKKyAgICAg
ICAgKEpTQzo6RnVuY3Rpb25Db25zdHJ1Y3Rvcjo6Y3JlYXRlKToKKyAgICAgICAgKiBydW50aW1l
L0Z1bmN0aW9uUHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25Qcm90b3R5cGU6
OkZ1bmN0aW9uUHJvdG90eXBlKToKKyAgICAgICAgKiBydW50aW1lL0Z1bmN0aW9uUHJvdG90eXBl
Lmg6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uUHJvdG90eXBlOjpjcmVhdGUpOgorICAgICAgICAq
IHJ1bnRpbWUvSW50ZXJuYWxGdW5jdGlvbi5jcHA6CisgICAgICAgIChKU0M6OkludGVybmFsRnVu
Y3Rpb246OkludGVybmFsRnVuY3Rpb24pOgorICAgICAgICAqIHJ1bnRpbWUvSW50ZXJuYWxGdW5j
dGlvbi5oOgorICAgICAgICAoSlNDOjpJbnRlcm5hbEZ1bmN0aW9uOjppbml0UHJvcGVydGllcyk6
CisgICAgICAgICogcnVudGltZS9KU0J5dGVBcnJheS5jcHA6CisgICAgICAgIChKU0M6OkpTQnl0
ZUFycmF5OjpKU0J5dGVBcnJheSk6CisgICAgICAgIChKU0M6OkpTQnl0ZUFycmF5OjpjcmVhdGUp
OgorICAgICAgICAqIHJ1bnRpbWUvSlNDZWxsLmg6CisgICAgICAgICogcnVudGltZS9KU0Z1bmN0
aW9uLmNwcDoKKyAgICAgICAgKEpTQzo6SlNGdW5jdGlvbjo6SlNGdW5jdGlvbik6CisgICAgICAg
IChKU0M6OkpTRnVuY3Rpb246OmNyZWF0ZSk6CisgICAgICAgICogcnVudGltZS9KU0Z1bmN0aW9u
Lmg6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5oOgorICAgICAgICAoSlNDOjpK
U0dsb2JhbE9iamVjdDo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OkpT
R2xvYmFsT2JqZWN0KToKKyAgICAgICAgKiBydW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3Iu
Y3BwOgorICAgICAgICAoSlNDOjpKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yOjpKU1Byb3BlcnR5TmFt
ZUl0ZXJhdG9yKToKKyAgICAgICAgKEpTQzo6SlNQcm9wZXJ0eU5hbWVJdGVyYXRvcjo6Y3JlYXRl
KToKKyAgICAgICAgKiBydW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuaDoKKyAgICAgICAg
KEpTQzo6SlNQcm9wZXJ0eU5hbWVJdGVyYXRvcjo6Y3JlYXRlKToKKyAgICAgICAgKiBydW50aW1l
L05hdGl2ZUVycm9yQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAoSlNDOjpOYXRpdmVFcnJvckNv
bnN0cnVjdG9yOjpOYXRpdmVFcnJvckNvbnN0cnVjdG9yKToKKyAgICAgICAgKEpTQzo6TmF0aXZl
RXJyb3JDb25zdHJ1Y3Rvcjo6Y3JlYXRlKToKKyAgICAgICAgKiBydW50aW1lL05hdGl2ZUVycm9y
Q29uc3RydWN0b3IuaDoKKyAgICAgICAgKiBydW50aW1lL05hdGl2ZUVycm9yUHJvdG90eXBlLmNw
cDoKKyAgICAgICAgKEpTQzo6TmF0aXZlRXJyb3JQcm90b3R5cGU6Ok5hdGl2ZUVycm9yUHJvdG90
eXBlKToKKyAgICAgICAgKiBydW50aW1lL05hdGl2ZUVycm9yUHJvdG90eXBlLmg6CisgICAgICAg
IChKU0M6Ok5hdGl2ZUVycm9yUHJvdG90eXBlOjpjcmVhdGUpOgorICAgICAgICAqIHJ1bnRpbWUv
TnVtYmVyQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAoSlNDOjpOdW1iZXJDb25zdHJ1Y3Rvcjo6
TnVtYmVyQ29uc3RydWN0b3IpOgorICAgICAgICAqIHJ1bnRpbWUvTnVtYmVyQ29uc3RydWN0b3Iu
aDoKKyAgICAgICAgKEpTQzo6TnVtYmVyQ29uc3RydWN0b3I6OmNyZWF0ZSk6CisgICAgICAgICog
cnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0M6Ok9iamVjdENvbnN0
cnVjdG9yOjpPYmplY3RDb25zdHJ1Y3Rvcik6CisgICAgICAgICogcnVudGltZS9PYmplY3RDb25z
dHJ1Y3Rvci5oOgorICAgICAgICAoSlNDOjpPYmplY3RDb25zdHJ1Y3Rvcjo6Y3JlYXRlKToKKyAg
ICAgICAgKiBydW50aW1lL1JlZ0V4cENvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6UmVn
RXhwQ29uc3RydWN0b3I6OlJlZ0V4cENvbnN0cnVjdG9yKToKKyAgICAgICAgKiBydW50aW1lL1Jl
Z0V4cENvbnN0cnVjdG9yLmg6CisgICAgICAgIChKU0M6OlJlZ0V4cENvbnN0cnVjdG9yOjpjcmVh
dGUpOgorICAgICAgICAqIHJ1bnRpbWUvUmVnRXhwTWF0Y2hlc0FycmF5Lmg6CisgICAgICAgICog
cnVudGltZS9TdHJpbmdDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0M6OlN0cmluZ0NvbnN0
cnVjdG9yOjpTdHJpbmdDb25zdHJ1Y3Rvcik6CisgICAgICAgICogcnVudGltZS9TdHJpbmdDb25z
dHJ1Y3Rvci5oOgorICAgICAgICAoSlNDOjpTdHJpbmdDb25zdHJ1Y3Rvcjo6Y3JlYXRlKToKKyAg
ICAgICAgKiBydW50aW1lL1N0cmluZ09iamVjdC5jcHA6CisgICAgICAgICogcnVudGltZS9TdHJp
bmdPYmplY3QuaDoKKyAgICAgICAgKEpTQzo6U3RyaW5nT2JqZWN0OjpjcmVhdGUpOgorICAgICAg
ICAqIHJ1bnRpbWUvU3RyaW5nT2JqZWN0VGhhdE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQuaDoKKyAg
ICAgICAgKEpTQzo6U3RyaW5nT2JqZWN0VGhhdE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQ6OmNyZWF0
ZSk6CisgICAgICAgIChKU0M6OlN0cmluZ09iamVjdFRoYXRNYXNxdWVyYWRlc0FzVW5kZWZpbmVk
OjpTdHJpbmdPYmplY3RUaGF0TWFzcXVlcmFkZXNBc1VuZGVmaW5lZCk6CisgICAgICAgICogcnVu
dGltZS9TdHJpbmdQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpTdHJpbmdQcm90b3R5cGU6
OlN0cmluZ1Byb3RvdHlwZSk6CisgICAgICAgICogcnVudGltZS9TdHJpbmdQcm90b3R5cGUuaDoK
KyAgICAgICAgKEpTQzo6U3RyaW5nUHJvdG90eXBlOjpjcmVhdGUpOgorICAgICAgICAqIHJ1bnRp
bWUvU3RydWN0dXJlQ2hhaW4uaDoKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlQ2hhaW46OmNyZWF0
ZSk6CisKIDIwMTEtMDgtMDMgIE1hcmsgUm93ZSAgPG1yb3dlQGFwcGxlLmNvbT4KIAogICAgICAg
ICBCcmluZyBzb21lIG9yZGVyIHRvIEZlYXR1cmVEZWZpbmVzLnhjY29uZmlnIHRvIG1ha2UgaXQg
ZWFzaWVyIHRvIGZvbGxvdy4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS5KU1ZBTFVFNjRvbmx5LmV4cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvSmF2YVNjcmlwdENvcmUuSlNWQUxVRTY0b25seS5leHAJKHJldmlzaW9uIDkyMzY1KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLkpTVkFMVUU2NG9ubHkuZXhwCSh3
b3JraW5nIGNvcHkpCkBAIC0xICswLDAgQEAKLV9fWk4zSlNDMTBKU0Z1bmN0aW9uQzFFUE5TXzlF
eGVjU3RhdGVFUE5TXzE0SlNHbG9iYWxPYmplY3RFUE5TXzlTdHJ1Y3R1cmVFaVJLTlNfMTBJZGVu
dGlmaWVyRVBGUHZTMl9FCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUuZXhwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZS5leHAJKHJldmlzaW9uIDkyMzY1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3Jp
cHRDb3JlLmV4cAkod29ya2luZyBjb3B5KQpAQCAtMTExLDYgKzExMSw3IEBAIF9fWk4zSlNDMTBJ
ZGVudGlmaWVyNGZyb21FUE5TXzlFeGVjU3RhdGUKIF9fWk4zSlNDMTBJZGVudGlmaWVyNWVxdWFs
RVBLTjNXVEYxMFN0cmluZ0ltcGxFUEtjCiBfX1pOM0pTQzEwSWRlbnRpZmllcjh0b1VJbnQzMkVS
S05TXzdVU3RyaW5nRVJiCiBfX1pOM0pTQzEwSlNGdW5jdGlvbjRuYW1lRVBOU185RXhlY1N0YXRl
RQorX19aTjNKU0MxMEpTRnVuY3Rpb242Y3JlYXRlRVBOU185RXhlY1N0YXRlRVBOU18xNEpTR2xv
YmFsT2JqZWN0RVBOU185U3RydWN0dXJlRWlSS05TXzEwSWRlbnRpZmllckVQRlB2UzJfRQogX19a
TjNKU0MxMEpTRnVuY3Rpb242c19pbmZvRQogX19aTjNKU0MxMHRocm93RXJyb3JFUE5TXzlFeGVj
U3RhdGVFTlNfN0pTVmFsdWVFCiBfX1pOM0pTQzEwdGhyb3dFcnJvckVQTlNfOUV4ZWNTdGF0ZUVQ
TlNfOEpTT2JqZWN0RQpAQCAtMTUxLDcgKzE1Miw3IEBAIF9fWk4zSlNDMTJTdHJpbmdPYmplY3Qx
OWdldE93blByb3BlcnR5TmEKIF9fWk4zSlNDMTJTdHJpbmdPYmplY3QyNGdldE93blByb3BlcnR5
RGVzY3JpcHRvckVQTlNfOUV4ZWNTdGF0ZUVSS05TXzEwSWRlbnRpZmllckVSTlNfMThQcm9wZXJ0
eURlc2NyaXB0b3JFCiBfX1pOM0pTQzEyU3RyaW5nT2JqZWN0M3B1dEVQTlNfOUV4ZWNTdGF0ZUVS
S05TXzEwSWRlbnRpZmllckVOU183SlNWYWx1ZUVSTlNfMTVQdXRQcm9wZXJ0eVNsb3RFCiBfX1pO
M0pTQzEyU3RyaW5nT2JqZWN0NnNfaW5mb0UKLV9fWk4zSlNDMTJTdHJpbmdPYmplY3RDMkVQTlNf
OUV4ZWNTdGF0ZUVQTlNfOVN0cnVjdHVyZUVSS05TXzdVU3RyaW5nRQorX19aTjNKU0MxMlN0cmlu
Z09iamVjdEMyRVJOU18xMkpTR2xvYmFsRGF0YUVQTlNfOVN0cnVjdHVyZUVQTlNfOEpTU3RyaW5n
RQogX19aTjNKU0MxM1NhbXBsaW5nRmxhZ3M0c3RvcEV2CiBfX1pOM0pTQzEzU2FtcGxpbmdGbGFn
czVzdGFydEV2CiBfX1pOM0pTQzEzU2FtcGxpbmdGbGFnczdzX2ZsYWdzRQpAQCAtMTg0LDYgKzE4
NSw3IEBAIF9fWk4zSlNDMTZJbnRlcm5hbEZ1bmN0aW9uMTJ2dGFibGVBbmNob3IKIF9fWk4zSlND
MTZJbnRlcm5hbEZ1bmN0aW9uNG5hbWVFUE5TXzlFeGVjU3RhdGVFCiBfX1pOM0pTQzE2SW50ZXJu
YWxGdW5jdGlvbjZzX2luZm9FCiBfX1pOM0pTQzE2SW50ZXJuYWxGdW5jdGlvbkMyRVBOU18xMkpT
R2xvYmFsRGF0YUVQTlNfMTRKU0dsb2JhbE9iamVjdEVQTlNfOVN0cnVjdHVyZUVSS05TXzEwSWRl
bnRpZmllckUKK19fWk4zSlNDMTZJbnRlcm5hbEZ1bmN0aW9uQzJFUE5TXzE0SlNHbG9iYWxPYmpl
Y3RFUE5TXzlTdHJ1Y3R1cmVFCiBfX1pOM0pTQzE2SlNWYXJpYWJsZU9iamVjdDE0ZGVsZXRlUHJv
cGVydHlFUE5TXzlFeGVjU3RhdGVFUktOU18xMElkZW50aWZpZXJFCiBfX1pOM0pTQzE2SlNWYXJp
YWJsZU9iamVjdDE0c3ltYm9sVGFibGVHZXRFUktOU18xMElkZW50aWZpZXJFUk5TXzE4UHJvcGVy
dHlEZXNjcmlwdG9yRQogX19aTjNKU0MxNkpTVmFyaWFibGVPYmplY3QxOWdldE93blByb3BlcnR5
TmFtZXNFUE5TXzlFeGVjU3RhdGVFUk5TXzE3UHJvcGVydHlOYW1lQXJyYXlFTlNfMTVFbnVtZXJh
dGlvbk1vZGVFCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUub3Jk
ZXIKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLm9y
ZGVyCShyZXZpc2lvbiA5MjM2NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS5vcmRlcgkod29ya2luZyBjb3B5KQpAQCAtMjI1LDcgKzIyNSw2IEBAIF9fWk4zSlNDMjRT
dHJ1Y3R1cmVUcmFuc2l0aW9uVGFibGUzYWRkRVIKIF9fWk4zSlNDOVN0cnVjdHVyZTI4YWRkUHJv
cGVydHlXaXRob3V0VHJhbnNpdGlvbkVSTlNfMTJKU0dsb2JhbERhdGFFUktOU18xMElkZW50aWZp
ZXJFalBOU182SlNDZWxsRQogX19aTjNKU0M4SlNPYmplY3QyM2FsbG9jYXRlUHJvcGVydHlTdG9y
YWdlRW1tCiBfX1pOM0pTQzE3RnVuY3Rpb25Qcm90b3R5cGUyMWFkZEZ1bmN0aW9uUHJvcGVydGll
c0VQTlNfOUV4ZWNTdGF0ZUVQTlNfMTRKU0dsb2JhbE9iamVjdEVQTlNfOVN0cnVjdHVyZUVQUE5T
XzEwSlNGdW5jdGlvbkVTOV8KLV9fWk4zSlNDMTBKU0Z1bmN0aW9uQzFFUE5TXzlFeGVjU3RhdGVF
UE5TXzE0SlNHbG9iYWxPYmplY3RFUE5TXzlTdHJ1Y3R1cmVFaVJLTlNfMTBJZGVudGlmaWVyRVBG
UHZTMl9FCiBfX1pOM0pTQzEwSlNGdW5jdGlvbkMyRVBOU185RXhlY1N0YXRlRVBOU18xNEpTR2xv
YmFsT2JqZWN0RVBOU185U3RydWN0dXJlRWlSS05TXzEwSWRlbnRpZmllckVQRlB2UzJfRQogX19a
TjNKU0MxMkpTR2xvYmFsRGF0YTE1Z2V0SG9zdEZ1bmN0aW9uRVBGUHZQTlNfOUV4ZWNTdGF0ZUVF
CiBfX1pOM0pTQzlKSVRUaHVua3MxNmhvc3RGdW5jdGlvblN0dWJFUE5TXzEySlNHbG9iYWxEYXRh
RVBGUHZQTlNfOUV4ZWNTdGF0ZUVFCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcAkocmV2aXNpb24g
OTIzNjUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTQ1LDQ0ICsxNDUsNDYgQEAgbG9uZyBTdG9wV2F0Y2g6OmdldEVsYXBzZWRNUygpCiAKIGNs
YXNzIEdsb2JhbE9iamVjdCA6IHB1YmxpYyBKU0dsb2JhbE9iamVjdCB7CiBwcml2YXRlOgotICAg
IEdsb2JhbE9iamVjdChKU0dsb2JhbERhdGEmLCBTdHJ1Y3R1cmUqLCBjb25zdCBWZWN0b3I8VVN0
cmluZz4mIGFyZ3VtZW50cyk7CisgICAgR2xvYmFsT2JqZWN0KEpTR2xvYmFsRGF0YSYsIFN0cnVj
dHVyZSopOwogCiBwdWJsaWM6CiAgICAgc3RhdGljIEdsb2JhbE9iamVjdCogY3JlYXRlKEpTR2xv
YmFsRGF0YSYgZ2xvYmFsRGF0YSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IFZlY3RvcjxV
U3RyaW5nPiYgYXJndW1lbnRzKQogICAgIHsKLSAgICAgICAgcmV0dXJuIG5ldyAoYWxsb2NhdGVD
ZWxsPEdsb2JhbE9iamVjdD4oZ2xvYmFsRGF0YS5oZWFwKSkgR2xvYmFsT2JqZWN0KGdsb2JhbERh
dGEsIHN0cnVjdHVyZSwgYXJndW1lbnRzKTsKKyAgICAgICAgR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QgPSBuZXcgKGFsbG9jYXRlQ2VsbDxHbG9iYWxPYmplY3Q+KGdsb2JhbERhdGEuaGVhcCkp
IEdsb2JhbE9iamVjdChnbG9iYWxEYXRhLCBzdHJ1Y3R1cmUpOworICAgICAgICBnbG9iYWxPYmpl
Y3QtPmluaXQoZ2xvYmFsT2JqZWN0KTsKKyAgICAgICAgZ2xvYmFsT2JqZWN0LT5wdXREaXJlY3RG
dW5jdGlvbihnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSwgSlNGdW5jdGlvbjo6Y3JlYXRlKGds
b2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpLCBnbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdC0+ZnVu
Y3Rpb25TdHJ1Y3R1cmUoKSwgMSwgSWRlbnRpZmllcihnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMo
KSwgImRlYnVnIiksIGZ1bmN0aW9uRGVidWcpKTsKKyAgICAgICAgZ2xvYmFsT2JqZWN0LT5wdXRE
aXJlY3RGdW5jdGlvbihnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSwgSlNGdW5jdGlvbjo6Y3Jl
YXRlKGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpLCBnbG9iYWxPYmplY3QsIGdsb2JhbE9iamVj
dC0+ZnVuY3Rpb25TdHJ1Y3R1cmUoKSwgMSwgSWRlbnRpZmllcihnbG9iYWxPYmplY3QtPmdsb2Jh
bEV4ZWMoKSwgInByaW50IiksIGZ1bmN0aW9uUHJpbnQpKTsKKyAgICAgICAgZ2xvYmFsT2JqZWN0
LT5wdXREaXJlY3RGdW5jdGlvbihnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSwgSlNGdW5jdGlv
bjo6Y3JlYXRlKGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpLCBnbG9iYWxPYmplY3QsIGdsb2Jh
bE9iamVjdC0+ZnVuY3Rpb25TdHJ1Y3R1cmUoKSwgMCwgSWRlbnRpZmllcihnbG9iYWxPYmplY3Qt
Pmdsb2JhbEV4ZWMoKSwgInF1aXQiKSwgZnVuY3Rpb25RdWl0KSk7CisgICAgICAgIGdsb2JhbE9i
amVjdC0+cHV0RGlyZWN0RnVuY3Rpb24oZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCksIEpTRnVu
Y3Rpb246OmNyZWF0ZShnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSwgZ2xvYmFsT2JqZWN0LCBn
bG9iYWxPYmplY3QtPmZ1bmN0aW9uU3RydWN0dXJlKCksIDAsIElkZW50aWZpZXIoZ2xvYmFsT2Jq
ZWN0LT5nbG9iYWxFeGVjKCksICJnYyIpLCBmdW5jdGlvbkdDKSk7CisjaWZuZGVmIE5ERUJVRwor
ICAgICAgICBnbG9iYWxPYmplY3QtPnB1dERpcmVjdEZ1bmN0aW9uKGdsb2JhbE9iamVjdC0+Z2xv
YmFsRXhlYygpLCBKU0Z1bmN0aW9uOjpjcmVhdGUoZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCks
IGdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LT5mdW5jdGlvblN0cnVjdHVyZSgpLCAwLCBJZGVu
dGlmaWVyKGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpLCAicmVsZWFzZUV4ZWN1dGFibGVNZW1v
cnkiKSwgZnVuY3Rpb25SZWxlYXNlRXhlY3V0YWJsZU1lbW9yeSkpOworI2VuZGlmCisgICAgICAg
IGdsb2JhbE9iamVjdC0+cHV0RGlyZWN0RnVuY3Rpb24oZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVj
KCksIEpTRnVuY3Rpb246OmNyZWF0ZShnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSwgZ2xvYmFs
T2JqZWN0LCBnbG9iYWxPYmplY3QtPmZ1bmN0aW9uU3RydWN0dXJlKCksIDEsIElkZW50aWZpZXIo
Z2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCksICJ2ZXJzaW9uIiksIGZ1bmN0aW9uVmVyc2lvbikp
OworICAgICAgICBnbG9iYWxPYmplY3QtPnB1dERpcmVjdEZ1bmN0aW9uKGdsb2JhbE9iamVjdC0+
Z2xvYmFsRXhlYygpLCBKU0Z1bmN0aW9uOjpjcmVhdGUoZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVj
KCksIGdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LT5mdW5jdGlvblN0cnVjdHVyZSgpLCAxLCBJ
ZGVudGlmaWVyKGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpLCAicnVuIiksIGZ1bmN0aW9uUnVu
KSk7CisgICAgICAgIGdsb2JhbE9iamVjdC0+cHV0RGlyZWN0RnVuY3Rpb24oZ2xvYmFsT2JqZWN0
LT5nbG9iYWxFeGVjKCksIEpTRnVuY3Rpb246OmNyZWF0ZShnbG9iYWxPYmplY3QtPmdsb2JhbEV4
ZWMoKSwgZ2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QtPmZ1bmN0aW9uU3RydWN0dXJlKCksIDEs
IElkZW50aWZpZXIoZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCksICJsb2FkIiksIGZ1bmN0aW9u
TG9hZCkpOworICAgICAgICBnbG9iYWxPYmplY3QtPnB1dERpcmVjdEZ1bmN0aW9uKGdsb2JhbE9i
amVjdC0+Z2xvYmFsRXhlYygpLCBKU0Z1bmN0aW9uOjpjcmVhdGUoZ2xvYmFsT2JqZWN0LT5nbG9i
YWxFeGVjKCksIGdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LT5mdW5jdGlvblN0cnVjdHVyZSgp
LCAxLCBJZGVudGlmaWVyKGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpLCAiY2hlY2tTeW50YXgi
KSwgZnVuY3Rpb25DaGVja1N5bnRheCkpOworICAgICAgICBnbG9iYWxPYmplY3QtPnB1dERpcmVj
dEZ1bmN0aW9uKGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpLCBKU0Z1bmN0aW9uOjpjcmVhdGUo
Z2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCksIGdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LT5m
dW5jdGlvblN0cnVjdHVyZSgpLCAwLCBJZGVudGlmaWVyKGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhl
YygpLCAicmVhZGxpbmUiKSwgZnVuY3Rpb25SZWFkbGluZSkpOworICAgICAgICBnbG9iYWxPYmpl
Y3QtPnB1dERpcmVjdEZ1bmN0aW9uKGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpLCBKU0Z1bmN0
aW9uOjpjcmVhdGUoZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCksIGdsb2JhbE9iamVjdCwgZ2xv
YmFsT2JqZWN0LT5mdW5jdGlvblN0cnVjdHVyZSgpLCAwLCBJZGVudGlmaWVyKGdsb2JhbE9iamVj
dC0+Z2xvYmFsRXhlYygpLCAicHJlY2lzZVRpbWUiKSwgZnVuY3Rpb25QcmVjaXNlVGltZSkpOwor
CisjaWYgRU5BQkxFKFNBTVBMSU5HX0ZMQUdTKQorICAgICAgICBnbG9iYWxPYmplY3QtPnB1dERp
cmVjdEZ1bmN0aW9uKGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpLCBKU0Z1bmN0aW9uOjpjcmVh
dGUoZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCksIGdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0
LT5mdW5jdGlvblN0cnVjdHVyZSgpLCAxLCBJZGVudGlmaWVyKGdsb2JhbE9iamVjdC0+Z2xvYmFs
RXhlYygpLCAic2V0U2FtcGxpbmdGbGFncyIpLCBmdW5jdGlvblNldFNhbXBsaW5nRmxhZ3MpKTsK
KyAgICAgICAgZ2xvYmFsT2JqZWN0LT5wdXREaXJlY3RGdW5jdGlvbihnbG9iYWxPYmplY3QtPmds
b2JhbEV4ZWMoKSwgSlNGdW5jdGlvbjo6Y3JlYXRlKGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygp
LCBnbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdC0+ZnVuY3Rpb25TdHJ1Y3R1cmUoKSwgMSwgSWRl
bnRpZmllcihnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSwgImNsZWFyU2FtcGxpbmdGbGFncyIp
LCBmdW5jdGlvbkNsZWFyU2FtcGxpbmdGbGFncykpOworI2VuZGlmCisKKyAgICAgICAgSlNPYmpl
Y3QqIGFycmF5ID0gY29uc3RydWN0RW1wdHlBcnJheShnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMo
KSk7CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgYXJndW1lbnRzLnNpemUoKTsgKytp
KQorICAgICAgICAgICAgYXJyYXktPnB1dChnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSwgaSwg
anNTdHJpbmcoZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCksIGFyZ3VtZW50c1tpXSkpOworICAg
ICAgICBnbG9iYWxPYmplY3QtPnB1dERpcmVjdChnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKS0+
Z2xvYmFsRGF0YSgpLCBJZGVudGlmaWVyKGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpLCAiYXJn
dW1lbnRzIiksIGFycmF5KTsKKyAgICAgICAgcmV0dXJuIGdsb2JhbE9iamVjdDsKICAgICB9CiAg
ICAgdmlydHVhbCBVU3RyaW5nIGNsYXNzTmFtZSgpIGNvbnN0IHsgcmV0dXJuICJnbG9iYWwiOyB9
CiB9OwogQ09NUElMRV9BU1NFUlQoIUlzSW50ZWdlcjxHbG9iYWxPYmplY3Q+Ojp2YWx1ZSwgV1RG
X0lzSW50ZWdlcl9HbG9iYWxPYmplY3RfZmFsc2UpOwogQVNTRVJUX0NMQVNTX0ZJVFNfSU5fQ0VM
TChHbG9iYWxPYmplY3QpOwogCi1HbG9iYWxPYmplY3Q6Okdsb2JhbE9iamVjdChKU0dsb2JhbERh
dGEmIGdsb2JhbERhdGEsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBjb25zdCBWZWN0b3I8VVN0cmlu
Zz4mIGFyZ3VtZW50cykKK0dsb2JhbE9iamVjdDo6R2xvYmFsT2JqZWN0KEpTR2xvYmFsRGF0YSYg
Z2xvYmFsRGF0YSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAgICAgOiBKU0dsb2JhbE9iamVjdChn
bG9iYWxEYXRhLCBzdHJ1Y3R1cmUpCiB7Ci0gICAgcHV0RGlyZWN0RnVuY3Rpb24oZ2xvYmFsRXhl
YygpLCBKU0Z1bmN0aW9uOjpjcmVhdGUoZ2xvYmFsRXhlYygpLCB0aGlzLCBmdW5jdGlvblN0cnVj
dHVyZSgpLCAxLCBJZGVudGlmaWVyKGdsb2JhbEV4ZWMoKSwgImRlYnVnIiksIGZ1bmN0aW9uRGVi
dWcpKTsKLSAgICBwdXREaXJlY3RGdW5jdGlvbihnbG9iYWxFeGVjKCksIEpTRnVuY3Rpb246OmNy
ZWF0ZShnbG9iYWxFeGVjKCksIHRoaXMsIGZ1bmN0aW9uU3RydWN0dXJlKCksIDEsIElkZW50aWZp
ZXIoZ2xvYmFsRXhlYygpLCAicHJpbnQiKSwgZnVuY3Rpb25QcmludCkpOwotICAgIHB1dERpcmVj
dEZ1bmN0aW9uKGdsb2JhbEV4ZWMoKSwgSlNGdW5jdGlvbjo6Y3JlYXRlKGdsb2JhbEV4ZWMoKSwg
dGhpcywgZnVuY3Rpb25TdHJ1Y3R1cmUoKSwgMCwgSWRlbnRpZmllcihnbG9iYWxFeGVjKCksICJx
dWl0IiksIGZ1bmN0aW9uUXVpdCkpOwotICAgIHB1dERpcmVjdEZ1bmN0aW9uKGdsb2JhbEV4ZWMo
KSwgSlNGdW5jdGlvbjo6Y3JlYXRlKGdsb2JhbEV4ZWMoKSwgdGhpcywgZnVuY3Rpb25TdHJ1Y3R1
cmUoKSwgMCwgSWRlbnRpZmllcihnbG9iYWxFeGVjKCksICJnYyIpLCBmdW5jdGlvbkdDKSk7Ci0j
aWZuZGVmIE5ERUJVRwotICAgIHB1dERpcmVjdEZ1bmN0aW9uKGdsb2JhbEV4ZWMoKSwgSlNGdW5j
dGlvbjo6Y3JlYXRlKGdsb2JhbEV4ZWMoKSwgdGhpcywgZnVuY3Rpb25TdHJ1Y3R1cmUoKSwgMCwg
SWRlbnRpZmllcihnbG9iYWxFeGVjKCksICJyZWxlYXNlRXhlY3V0YWJsZU1lbW9yeSIpLCBmdW5j
dGlvblJlbGVhc2VFeGVjdXRhYmxlTWVtb3J5KSk7Ci0jZW5kaWYKLSAgICBwdXREaXJlY3RGdW5j
dGlvbihnbG9iYWxFeGVjKCksIEpTRnVuY3Rpb246OmNyZWF0ZShnbG9iYWxFeGVjKCksIHRoaXMs
IGZ1bmN0aW9uU3RydWN0dXJlKCksIDEsIElkZW50aWZpZXIoZ2xvYmFsRXhlYygpLCAidmVyc2lv
biIpLCBmdW5jdGlvblZlcnNpb24pKTsKLSAgICBwdXREaXJlY3RGdW5jdGlvbihnbG9iYWxFeGVj
KCksIEpTRnVuY3Rpb246OmNyZWF0ZShnbG9iYWxFeGVjKCksIHRoaXMsIGZ1bmN0aW9uU3RydWN0
dXJlKCksIDEsIElkZW50aWZpZXIoZ2xvYmFsRXhlYygpLCAicnVuIiksIGZ1bmN0aW9uUnVuKSk7
Ci0gICAgcHV0RGlyZWN0RnVuY3Rpb24oZ2xvYmFsRXhlYygpLCBKU0Z1bmN0aW9uOjpjcmVhdGUo
Z2xvYmFsRXhlYygpLCB0aGlzLCBmdW5jdGlvblN0cnVjdHVyZSgpLCAxLCBJZGVudGlmaWVyKGds
b2JhbEV4ZWMoKSwgImxvYWQiKSwgZnVuY3Rpb25Mb2FkKSk7Ci0gICAgcHV0RGlyZWN0RnVuY3Rp
b24oZ2xvYmFsRXhlYygpLCBKU0Z1bmN0aW9uOjpjcmVhdGUoZ2xvYmFsRXhlYygpLCB0aGlzLCBm
dW5jdGlvblN0cnVjdHVyZSgpLCAxLCBJZGVudGlmaWVyKGdsb2JhbEV4ZWMoKSwgImNoZWNrU3lu
dGF4IiksIGZ1bmN0aW9uQ2hlY2tTeW50YXgpKTsKLSAgICBwdXREaXJlY3RGdW5jdGlvbihnbG9i
YWxFeGVjKCksIEpTRnVuY3Rpb246OmNyZWF0ZShnbG9iYWxFeGVjKCksIHRoaXMsIGZ1bmN0aW9u
U3RydWN0dXJlKCksIDAsIElkZW50aWZpZXIoZ2xvYmFsRXhlYygpLCAicmVhZGxpbmUiKSwgZnVu
Y3Rpb25SZWFkbGluZSkpOwotICAgIHB1dERpcmVjdEZ1bmN0aW9uKGdsb2JhbEV4ZWMoKSwgSlNG
dW5jdGlvbjo6Y3JlYXRlKGdsb2JhbEV4ZWMoKSwgdGhpcywgZnVuY3Rpb25TdHJ1Y3R1cmUoKSwg
MCwgSWRlbnRpZmllcihnbG9iYWxFeGVjKCksICJwcmVjaXNlVGltZSIpLCBmdW5jdGlvblByZWNp
c2VUaW1lKSk7Ci0KLSNpZiBFTkFCTEUoU0FNUExJTkdfRkxBR1MpCi0gICAgcHV0RGlyZWN0RnVu
Y3Rpb24oZ2xvYmFsRXhlYygpLCBKU0Z1bmN0aW9uOjpjcmVhdGUoZ2xvYmFsRXhlYygpLCB0aGlz
LCBmdW5jdGlvblN0cnVjdHVyZSgpLCAxLCBJZGVudGlmaWVyKGdsb2JhbEV4ZWMoKSwgInNldFNh
bXBsaW5nRmxhZ3MiKSwgZnVuY3Rpb25TZXRTYW1wbGluZ0ZsYWdzKSk7Ci0gICAgcHV0RGlyZWN0
RnVuY3Rpb24oZ2xvYmFsRXhlYygpLCBKU0Z1bmN0aW9uOjpjcmVhdGUoZ2xvYmFsRXhlYygpLCB0
aGlzLCBmdW5jdGlvblN0cnVjdHVyZSgpLCAxLCBJZGVudGlmaWVyKGdsb2JhbEV4ZWMoKSwgImNs
ZWFyU2FtcGxpbmdGbGFncyIpLCBmdW5jdGlvbkNsZWFyU2FtcGxpbmdGbGFncykpOwotI2VuZGlm
Ci0KLSAgICBKU09iamVjdCogYXJyYXkgPSBjb25zdHJ1Y3RFbXB0eUFycmF5KGdsb2JhbEV4ZWMo
KSk7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBhcmd1bWVudHMuc2l6ZSgpOyArK2kpCi0g
ICAgICAgIGFycmF5LT5wdXQoZ2xvYmFsRXhlYygpLCBpLCBqc1N0cmluZyhnbG9iYWxFeGVjKCks
IGFyZ3VtZW50c1tpXSkpOwotICAgIHB1dERpcmVjdChnbG9iYWxFeGVjKCktPmdsb2JhbERhdGEo
KSwgSWRlbnRpZmllcihnbG9iYWxFeGVjKCksICJhcmd1bWVudHMiKSwgYXJyYXkpOwogfQogCiBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uUHJpbnQoRXhlY1N0YXRlKiBleGVj
KQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrRnVuY3Rpb24uY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja0Z1bmN0
aW9uLmNwcAkocmV2aXNpb24gOTIzNjUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pT
Q2FsbGJhY2tGdW5jdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQyLDggKzQyLDggQEAgQVNT
RVJUX0NMQVNTX0ZJVFNfSU5fQ0VMTChKU0NhbGxiYWNrRnVuYwogCiBjb25zdCBDbGFzc0luZm8g
SlNDYWxsYmFja0Z1bmN0aW9uOjpzX2luZm8gPSB7ICJDYWxsYmFja0Z1bmN0aW9uIiwgJkludGVy
bmFsRnVuY3Rpb246OnNfaW5mbywgMCwgMCB9OwogCi1KU0NhbGxiYWNrRnVuY3Rpb246OkpTQ2Fs
bGJhY2tGdW5jdGlvbihFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIEpTT2JqZWN0Q2FsbEFzRnVuY3Rpb25DYWxsYmFjayBjYWxsYmFjaywgY29uc3QgSWRlbnRp
ZmllciYgbmFtZSkKLSAgICA6IEludGVybmFsRnVuY3Rpb24oJmV4ZWMtPmdsb2JhbERhdGEoKSwg
Z2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QtPmNhbGxiYWNrRnVuY3Rpb25TdHJ1Y3R1cmUoKSwg
bmFtZSkKK0pTQ2FsbGJhY2tGdW5jdGlvbjo6SlNDYWxsYmFja0Z1bmN0aW9uKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIEpTT2JqZWN0Q2FsbEFzRnVuY3Rpb25DYWxsYmFjayBjYWxsYmFj
aykKKyAgICA6IEludGVybmFsRnVuY3Rpb24oZ2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QtPmNh
bGxiYWNrRnVuY3Rpb25TdHJ1Y3R1cmUoKSkKICAgICAsIG1fY2FsbGJhY2soY2FsbGJhY2spCiB7
CiAgICAgQVNTRVJUKGluaGVyaXRzKCZzX2luZm8pKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9BUEkvSlNDYWxsYmFja0Z1bmN0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrRnVuY3Rpb24uaAkocmV2aXNpb24gOTIzNjUpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tGdW5jdGlvbi5oCSh3b3JraW5nIGNv
cHkpCkBAIC0zMywxMiArMzMsMTQgQEAgbmFtZXNwYWNlIEpTQyB7CiAKIGNsYXNzIEpTQ2FsbGJh
Y2tGdW5jdGlvbiA6IHB1YmxpYyBJbnRlcm5hbEZ1bmN0aW9uIHsKIHByb3RlY3RlZDoKLSAgICBK
U0NhbGxiYWNrRnVuY3Rpb24oRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqLCBKU09iamVjdENh
bGxBc0Z1bmN0aW9uQ2FsbGJhY2ssIGNvbnN0IElkZW50aWZpZXImIG5hbWUpOworICAgIEpTQ2Fs
bGJhY2tGdW5jdGlvbihKU0dsb2JhbE9iamVjdCosIEpTT2JqZWN0Q2FsbEFzRnVuY3Rpb25DYWxs
YmFjayk7CiAKIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDYWxsYmFja0Z1bmN0aW9uKiBjcmVhdGUo
RXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU09iamVjdENh
bGxBc0Z1bmN0aW9uQ2FsbGJhY2sgY2FsbGJhY2ssIGNvbnN0IElkZW50aWZpZXImIG5hbWUpCiAg
ICAgewotICAgICAgICByZXR1cm4gbmV3IChhbGxvY2F0ZUNlbGw8SlNDYWxsYmFja0Z1bmN0aW9u
PigqZXhlYy0+aGVhcCgpKSkgSlNDYWxsYmFja0Z1bmN0aW9uKGV4ZWMsIGdsb2JhbE9iamVjdCwg
Y2FsbGJhY2ssIG5hbWUpOworICAgICAgICBKU0NhbGxiYWNrRnVuY3Rpb24qIGNhbGxiYWNrRnVu
Y3Rpb24gPSBuZXcgKGFsbG9jYXRlQ2VsbDxKU0NhbGxiYWNrRnVuY3Rpb24+KCpleGVjLT5oZWFw
KCkpKSBKU0NhbGxiYWNrRnVuY3Rpb24oZ2xvYmFsT2JqZWN0LCBjYWxsYmFjayk7CisgICAgICAg
IGNhbGxiYWNrRnVuY3Rpb24tPmluaXRQcm9wZXJ0aWVzKGV4ZWMtPmdsb2JhbERhdGEoKSwgbmFt
ZSk7CisgICAgICAgIHJldHVybiBjYWxsYmFja0Z1bmN0aW9uOwogICAgIH0KIAogICAgIHN0YXRp
YyBjb25zdCBDbGFzc0luZm8gc19pbmZvOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5kZWYKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvai9K
YXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5kZWYJKHJldmlzaW9uIDkyMzY1KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9K
YXZhU2NyaXB0Q29yZS5kZWYJKHdvcmtpbmcgY29weSkKQEAgLTEwLDcgKzEwLDYgQEAgRVhQT1JU
UwogICAgID8/MEludGVybmFsRnVuY3Rpb25ASlNDQEBJQUVAUEFWSlNHbG9iYWxEYXRhQDFAUEFW
SlNHbG9iYWxPYmplY3RAMUBQQVZTdHJ1Y3R1cmVAMUBBQlZJZGVudGlmaWVyQDFAQFoKICAgICA/
PzBKU0FycmF5QEpTQ0BASUFFQEFBVkpTR2xvYmFsRGF0YUAxQFBBVlN0cnVjdHVyZUAxQEBaCiAg
ICAgPz8wSlNBcnJheUBKU0NAQElBRUBBQVZKU0dsb2JhbERhdGFAMUBQQVZTdHJ1Y3R1cmVAMUBB
QlZBcmdMaXN0QDFAQFoKLSAgICA/PzBKU0Z1bmN0aW9uQEpTQ0BAQUFFQFBBVkV4ZWNTdGF0ZUAx
QFBBVkpTR2xvYmFsT2JqZWN0QDFAUEFWU3RydWN0dXJlQDFASEFCVklkZW50aWZpZXJAMUBQNklf
SjBAWkBaCiAgICAgPz8wSlNMb2NrQEpTQ0BAUUFFQFBBVkV4ZWNTdGF0ZUAxQEBaCiAgICAgPz8w
SlNPYmplY3RXaXRoR2xvYmFsT2JqZWN0QEpTQ0BASUFFQEFBVkpTR2xvYmFsRGF0YUAxQFBBVkpT
R2xvYmFsT2JqZWN0QDFAUEFWU3RydWN0dXJlQDFAQFoKICAgICA/PzBKU09iamVjdFdpdGhHbG9i
YWxPYmplY3RASlNDQEBJQUVAUEFWSlNHbG9iYWxPYmplY3RAMUBQQVZTdHJ1Y3R1cmVAMUBAWgpA
QCAtMTksNyArMTgsNyBAQCBFWFBPUlRTCiAgICAgPz8wUmVmQ291bnRlZExlYWtDb3VudGVyQFdU
RkBAUUFFQFBCREBaCiAgICAgPz8wUmVnRXhwT2JqZWN0QEpTQ0BASUFFQFBBVkpTR2xvYmFsT2Jq
ZWN0QDFAUEFWU3RydWN0dXJlQDFAUEFWUmVnRXhwQDFAQFoKICAgICA/PzBTSEExQFdURkBAUUFF
QFhaCi0gICAgPz8wU3RyaW5nT2JqZWN0QEpTQ0BASUFFQFBBVkV4ZWNTdGF0ZUAxQFBBVlN0cnVj
dHVyZUAxQEFCVlVTdHJpbmdAMUBAWgorICAgID8/MFN0cmluZ09iamVjdEBKU0NAQElBRUBBQVZK
U0dsb2JhbERhdGFAMUBQQVZTdHJ1Y3R1cmVAMUBQQVZKU1N0cmluZ0AxQEBaCiAgICAgPz8wU3Ry
dWN0dXJlQEpTQ0BAQUFFQEFBVkpTR2xvYmFsRGF0YUAxQFZKU1ZhbHVlQDFAQUJWVHlwZUluZm9A
MUBJUEJVQ2xhc3NJbmZvQDFAQFoKICAgICA/PzBUaHJlYWRDb25kaXRpb25AV1RGQEBRQUVAWFoK
ICAgICA/PzBVU3RyaW5nQEpTQ0BAUUFFQFBCREBaCkBAIC05Niw2ICs5NSw3IEBAIEVYUE9SVFMK
ICAgICA/Y29udmVydFVURjhUb1VURjE2QFVuaWNvZGVAV1RGQEBZQT9BVzRDb252ZXJzaW9uUmVz
dWx0QDEyQFBBUEJEUEJEUEFQQV9XUEFfV19OQFoKICAgICA/Y3JlYXRlQEJ5dGVBcnJheUBXVEZA
QFNBP0FWPyRQYXNzUmVmUHRyQFZCeXRlQXJyYXlAV1RGQEBAMkBJQFoKICAgICA/Y3JlYXRlQEpT
Qnl0ZUFycmF5QEpTQ0BAU0FQQVYxMkBQQVZFeGVjU3RhdGVAMkBQQVZTdHJ1Y3R1cmVAMkBQQVZC
eXRlQXJyYXlAV1RGQEBAWgorICAgID9jcmVhdGVASlNGdW5jdGlvbkBKU0NAQFNBUEFWMTJAUEFW
RXhlY1N0YXRlQDJAUEFWSlNHbG9iYWxPYmplY3RAMkBQQVZTdHJ1Y3R1cmVAMkBIQUJWSWRlbnRp
ZmllckAyQFA2SV9KMEBaQFoKICAgICA/Y3JlYXRlQEpTR2xvYmFsRGF0YUBKU0NAQFNBP0FWPyRQ
YXNzUmVmUHRyQFZKU0dsb2JhbERhdGFASlNDQEBAV1RGQEBXNFRocmVhZFN0YWNrVHlwZUAyQFc0
SGVhcFNpemVAMkBAWgogICAgID9jcmVhdGVAT3BhcXVlSlNTdHJpbmdAQFNBP0FWPyRQYXNzUmVm
UHRyQFVPcGFxdWVKU1N0cmluZ0BAQFdURkBAQUJWVVN0cmluZ0BKU0NAQEBaCiAgICAgP2NyZWF0
ZUBSZWdFeHBASlNDQEBTQVBBVjEyQEFBVkpTR2xvYmFsRGF0YUAyQEFCVlVTdHJpbmdAMkBXNFJl
Z0V4cEZsYWdzQDJAQFoKQEAgLTIxNCw3ICsyMTQsNyBAQCBFWFBPUlRTCiAgICAgP2hlYXBASGVh
cEBKU0NAQFNBUEFWMTJAVkpTVmFsdWVAMkBAWgogICAgID9pbmNyZW1lbnRAUmVmQ291bnRlZExl
YWtDb3VudGVyQFdURkBAUUFFWFhaCiAgICAgP2luaXRAQXRvbWljU3RyaW5nQFdURkBAU0FYWFoK
LSAgICA/aW5pdEBKU0dsb2JhbE9iamVjdEBKU0NAQEFBRVhQQVZKU09iamVjdEAyQEBaCisgICAg
P2luaXRASlNHbG9iYWxPYmplY3RASlNDQEBJQUVYUEFWSlNPYmplY3RAMkBAWgogICAgID9pbml0
aWFsaXplTWFpblRocmVhZEBXVEZAQFlBWFhaCiAgICAgP2luaXRpYWxpemVUaHJlYWRpbmdASlND
QEBZQVhYWgogICAgID9pbml0aWFsaXplVGhyZWFkaW5nQFdURkBAWUFYWFoKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAkocmV2
aXNpb24gOTIzNjUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJw
cmV0ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzg5LDEwICsxMzg5LDExIEBAIE5FVkVSX0lO
TElORSB2b2lkIEludGVycHJldGVyOjp0cnlDYWNoZVAKICAgICAgICAgbm9ybWFsaXplUHJvdG90
eXBlQ2hhaW4oY2FsbEZyYW1lLCBiYXNlQ2VsbCk7CiAgICAgICAgIEpTQ2VsbCogb3duZXIgPSBj
b2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpOwogICAgICAgICBKU0dsb2JhbERhdGEmIGdsb2Jh
bERhdGEgPSBjYWxsRnJhbWUtPmdsb2JhbERhdGEoKTsKKyAgICAgICAgU3RydWN0dXJlQ2hhaW4q
IHByb3RvdHlwZUNoYWluID0gc3RydWN0dXJlLT5wcm90b3R5cGVDaGFpbihjYWxsRnJhbWUpOwog
ICAgICAgICB2UENbMF0gPSBnZXRPcGNvZGUob3BfcHV0X2J5X2lkX3RyYW5zaXRpb24pOwogICAg
ICAgICB2UENbNF0udS5zdHJ1Y3R1cmUuc2V0KGdsb2JhbERhdGEsIG93bmVyLCBzdHJ1Y3R1cmUt
PnByZXZpb3VzSUQoKSk7CiAgICAgICAgIHZQQ1s1XS51LnN0cnVjdHVyZS5zZXQoZ2xvYmFsRGF0
YSwgb3duZXIsIHN0cnVjdHVyZSk7Ci0gICAgICAgIHZQQ1s2XS51LnN0cnVjdHVyZUNoYWluLnNl
dChjYWxsRnJhbWUtPmdsb2JhbERhdGEoKSwgY29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKSwg
c3RydWN0dXJlLT5wcm90b3R5cGVDaGFpbihjYWxsRnJhbWUpKTsKKyAgICAgICAgdlBDWzZdLnUu
c3RydWN0dXJlQ2hhaW4uc2V0KGNhbGxGcmFtZS0+Z2xvYmFsRGF0YSgpLCBjb2RlQmxvY2stPm93
bmVyRXhlY3V0YWJsZSgpLCBwcm90b3R5cGVDaGFpbik7CiAgICAgICAgIEFTU0VSVCh2UENbNl0u
dS5zdHJ1Y3R1cmVDaGFpbik7CiAgICAgICAgIHZQQ1s3XSA9IHNsb3QuY2FjaGVkT2Zmc2V0KCk7
CiAgICAgICAgIHJldHVybjsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Fy
cmF5Q29uc3RydWN0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0FycmF5Q29uc3RydWN0b3IuY3BwCShyZXZpc2lvbiA5MjM2NSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5Q29uc3RydWN0b3IuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC01Miw3ICs1Miw3IEBAIGNvbnN0IENsYXNzSW5mbyBBcnJheUNvbnN0cnVjdG9yOjpzX2lu
Zm8KIEFTU0VSVF9DTEFTU19GSVRTX0lOX0NFTEwoQXJyYXlDb25zdHJ1Y3Rvcik7CiAKIEFycmF5
Q29uc3RydWN0b3I6OkFycmF5Q29uc3RydWN0b3IoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgQXJyYXlQcm90b3R5cGUq
IGFycmF5UHJvdG90eXBlKQotICAgIDogSW50ZXJuYWxGdW5jdGlvbigmZXhlYy0+Z2xvYmFsRGF0
YSgpLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgSWRlbnRpZmllcihleGVjLCBhcnJheVByb3Rv
dHlwZS0+Y2xhc3NJbmZvKCktPmNsYXNzTmFtZSkpCisgICAgOiBJbnRlcm5hbEZ1bmN0aW9uKGds
b2JhbE9iamVjdCwgc3RydWN0dXJlKQogewogICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9u
KGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLnByb3RvdHlwZSwgYXJy
YXlQcm90b3R5cGUsIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KTsKICAgICBwdXRE
aXJlY3RXaXRob3V0VHJhbnNpdGlvbihleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPnByb3BlcnR5
TmFtZXMoKS5sZW5ndGgsIGpzTnVtYmVyKDEpLCBSZWFkT25seSB8IERvbnRFbnVtIHwgRG9udERl
bGV0ZSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUNvbnN0cnVj
dG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlD
b25zdHJ1Y3Rvci5oCShyZXZpc2lvbiA5MjM2NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0FycmF5Q29uc3RydWN0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtMjEsMjAgKzIxLDIx
IEBACiAjaWZuZGVmIEFycmF5Q29uc3RydWN0b3JfaAogI2RlZmluZSBBcnJheUNvbnN0cnVjdG9y
X2gKIAorI2luY2x1ZGUgIkFycmF5UHJvdG90eXBlLmgiCiAjaW5jbHVkZSAiSW50ZXJuYWxGdW5j
dGlvbi5oIgogCiBuYW1lc3BhY2UgSlNDIHsKIAotICAgIGNsYXNzIEFycmF5UHJvdG90eXBlOwot
CiAgICAgY2xhc3MgQXJyYXlDb25zdHJ1Y3RvciA6IHB1YmxpYyBJbnRlcm5hbEZ1bmN0aW9uIHsK
ICAgICBwcml2YXRlOgogICAgICAgICBBcnJheUNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSosIEpTR2xv
YmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgQXJyYXlQcm90b3R5cGUqKTsKICAgICAgICAgCiAgICAg
cHVibGljOgotICAgICAgICBzdGF0aWMgQXJyYXlDb25zdHJ1Y3RvciogY3JlYXRlKEV4ZWNTdGF0
ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUsIEFycmF5UHJvdG90eXBlKiBhcnJQcm90b3R5cGUpCisgICAgICAgIHN0YXRpYyBBcnJheUNv
bnN0cnVjdG9yKiBjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgQXJyYXlQcm90b3R5cGUqIGFycmF5UHJvdG90
eXBlKQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gbmV3IChhbGxvY2F0ZUNlbGw8QXJy
YXlDb25zdHJ1Y3Rvcj4oKmV4ZWMtPmhlYXAoKSkpIEFycmF5Q29uc3RydWN0b3IoZXhlYywgZ2xv
YmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIGFyclByb3RvdHlwZSk7CisgICAgICAgICAgICBBcnJheUNv
bnN0cnVjdG9yKiBjb25zdHJ1Y3RvciA9IG5ldyAoYWxsb2NhdGVDZWxsPEFycmF5Q29uc3RydWN0
b3I+KCpleGVjLT5oZWFwKCkpKSBBcnJheUNvbnN0cnVjdG9yKGV4ZWMsIGdsb2JhbE9iamVjdCwg
c3RydWN0dXJlLCBhcnJheVByb3RvdHlwZSk7CisgICAgICAgICAgICBjb25zdHJ1Y3Rvci0+aW5p
dFByb3BlcnRpZXMoZXhlYy0+Z2xvYmFsRGF0YSgpLCBJZGVudGlmaWVyKGV4ZWMsIGFycmF5UHJv
dG90eXBlLT5jbGFzc0luZm8oKS0+Y2xhc3NOYW1lKSk7CisgICAgICAgICAgICByZXR1cm4gY29u
c3RydWN0b3I7CiAgICAgICAgIH0KIAogICAgICAgICBzdGF0aWMgY29uc3QgQ2xhc3NJbmZvIHNf
aW5mbzsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Jvb2xlYW5Db25zdHJ1
Y3Rvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQm9v
bGVhbkNvbnN0cnVjdG9yLmNwcAkocmV2aXNpb24gOTIzNjUpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Cb29sZWFuQ29uc3RydWN0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0y
OSw3ICsyOSw3IEBAIG5hbWVzcGFjZSBKU0MgewogQVNTRVJUX0NMQVNTX0ZJVFNfSU5fQ0VMTChC
b29sZWFuQ29uc3RydWN0b3IpOwogCiBCb29sZWFuQ29uc3RydWN0b3I6OkJvb2xlYW5Db25zdHJ1
Y3RvcihFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVj
dHVyZSogc3RydWN0dXJlLCBCb29sZWFuUHJvdG90eXBlKiBib29sZWFuUHJvdG90eXBlKQotICAg
IDogSW50ZXJuYWxGdW5jdGlvbigmZXhlYy0+Z2xvYmFsRGF0YSgpLCBnbG9iYWxPYmplY3QsIHN0
cnVjdHVyZSwgSWRlbnRpZmllcihleGVjLCBib29sZWFuUHJvdG90eXBlLT5jbGFzc0luZm8oKS0+
Y2xhc3NOYW1lKSkKKyAgICA6IEludGVybmFsRnVuY3Rpb24oZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1
cmUpCiB7CiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgp
LCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkucHJvdG90eXBlLCBib29sZWFuUHJvdG90eXBlLCBEb250
RW51bSB8IERvbnREZWxldGUgfCBSZWFkT25seSk7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0Jvb2xlYW5Db25zdHJ1Y3Rvci5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0Jvb2xlYW5Db25zdHJ1Y3Rvci5oCShyZXZpc2lvbiA5MjM2
NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Jvb2xlYW5Db25zdHJ1Y3Rvci5o
CSh3b3JraW5nIGNvcHkpCkBAIC0yMSwyMCArMjEsMjEgQEAKICNpZm5kZWYgQm9vbGVhbkNvbnN0
cnVjdG9yX2gKICNkZWZpbmUgQm9vbGVhbkNvbnN0cnVjdG9yX2gKIAorI2luY2x1ZGUgIkJvb2xl
YW5Qcm90b3R5cGUuaCIKICNpbmNsdWRlICJJbnRlcm5hbEZ1bmN0aW9uLmgiCiAKIG5hbWVzcGFj
ZSBKU0MgewogCi0gICAgY2xhc3MgQm9vbGVhblByb3RvdHlwZTsKLQogICAgIGNsYXNzIEJvb2xl
YW5Db25zdHJ1Y3RvciA6IHB1YmxpYyBJbnRlcm5hbEZ1bmN0aW9uIHsKICAgICBwcml2YXRlOgog
ICAgICAgICBCb29sZWFuQ29uc3RydWN0b3IoRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqLCBT
dHJ1Y3R1cmUqLCBCb29sZWFuUHJvdG90eXBlKik7CiAgICAgICAgIAogICAgIHB1YmxpYzoKLSAg
ICAgICAgc3RhdGljIEJvb2xlYW5Db25zdHJ1Y3RvciogY3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywg
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEJvb2xl
YW5Qcm90b3R5cGUqIGJvb2xQcm90b3R5cGUpCisgICAgICAgIHN0YXRpYyBCb29sZWFuQ29uc3Ry
dWN0b3IqIGNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBCb29sZWFuUHJvdG90eXBlKiBib29sZWFuUHJvdG90
eXBlKQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gbmV3IChhbGxvY2F0ZUNlbGw8Qm9v
bGVhbkNvbnN0cnVjdG9yPigqZXhlYy0+aGVhcCgpKSkgQm9vbGVhbkNvbnN0cnVjdG9yKGV4ZWMs
IGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBib29sUHJvdG90eXBlKTsKKyAgICAgICAgICAgIEJv
b2xlYW5Db25zdHJ1Y3RvciogY29uc3RydWN0b3IgPSBuZXcgKGFsbG9jYXRlQ2VsbDxCb29sZWFu
Q29uc3RydWN0b3I+KCpleGVjLT5oZWFwKCkpKSBCb29sZWFuQ29uc3RydWN0b3IoZXhlYywgZ2xv
YmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIGJvb2xlYW5Qcm90b3R5cGUpOworICAgICAgICAgICAgY29u
c3RydWN0b3ItPmluaXRQcm9wZXJ0aWVzKGV4ZWMtPmdsb2JhbERhdGEoKSwgSWRlbnRpZmllcihl
eGVjLCBib29sZWFuUHJvdG90eXBlLT5jbGFzc0luZm8oKS0+Y2xhc3NOYW1lKSk7CisgICAgICAg
ICAgICByZXR1cm4gY29uc3RydWN0b3I7CiAgICAgICAgIH0KIAogICAgIHByaXZhdGU6CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlQ29uc3RydWN0b3IuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVDb25zdHJ1Y3Rvci5j
cHAJKHJldmlzaW9uIDkyMzY1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0
ZUNvbnN0cnVjdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzQsNyArNzQsNyBAQCBjb25zdCBD
bGFzc0luZm8gRGF0ZUNvbnN0cnVjdG9yOjpzX2luZm8KIEFTU0VSVF9DTEFTU19GSVRTX0lOX0NF
TEwoRGF0ZUNvbnN0cnVjdG9yKTsKIAogRGF0ZUNvbnN0cnVjdG9yOjpEYXRlQ29uc3RydWN0b3Io
RXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSwgRGF0ZVByb3RvdHlwZSogZGF0ZVByb3RvdHlwZSkKLSAgICA6IEludGVybmFs
RnVuY3Rpb24oJmV4ZWMtPmdsb2JhbERhdGEoKSwgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIElk
ZW50aWZpZXIoZXhlYywgZGF0ZVByb3RvdHlwZS0+Y2xhc3NJbmZvKCktPmNsYXNzTmFtZSkpCisg
ICAgOiBJbnRlcm5hbEZ1bmN0aW9uKGdsb2JhbE9iamVjdCwgc3RydWN0dXJlKQogewogICAgIHB1
dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+cHJvcGVy
dHlOYW1lcygpLnByb3RvdHlwZSwgZGF0ZVByb3RvdHlwZSwgRG9udEVudW0gfCBEb250RGVsZXRl
IHwgUmVhZE9ubHkpOwogICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKGV4ZWMtPmdsb2Jh
bERhdGEoKSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLmxlbmd0aCwganNOdW1iZXIoNyksIFJlYWRP
bmx5IHwgRG9udEVudW0gfCBEb250RGVsZXRlKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0RhdGVDb25zdHJ1Y3Rvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0RhdGVDb25zdHJ1Y3Rvci5oCShyZXZpc2lvbiA5MjM2NSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVDb25zdHJ1Y3Rvci5oCSh3b3JraW5nIGNv
cHkpCkBAIC0yMSwxMiArMjEsMTEgQEAKICNpZm5kZWYgRGF0ZUNvbnN0cnVjdG9yX2gKICNkZWZp
bmUgRGF0ZUNvbnN0cnVjdG9yX2gKIAorI2luY2x1ZGUgIkRhdGVQcm90b3R5cGUuaCIKICNpbmNs
dWRlICJJbnRlcm5hbEZ1bmN0aW9uLmgiCiAKIG5hbWVzcGFjZSBKU0MgewogCi0gICAgY2xhc3Mg
RGF0ZVByb3RvdHlwZTsKLQogICAgIGNsYXNzIERhdGVDb25zdHJ1Y3RvciA6IHB1YmxpYyBJbnRl
cm5hbEZ1bmN0aW9uIHsKICAgICBwcml2YXRlOgogICAgICAgICBEYXRlQ29uc3RydWN0b3IoRXhl
Y1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBEYXRlUHJvdG90eXBlKik7CkBA
IC0zNCw3ICszMyw5IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHB1YmxpYzoKICAgICAgICAgc3Rh
dGljIERhdGVDb25zdHJ1Y3RvciogY3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIERhdGVQcm90b3R5cGUqIGRh
dGVQcm90b3R5cGUpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBuZXcgKGFsbG9jYXRl
Q2VsbDxEYXRlQ29uc3RydWN0b3I+KCpleGVjLT5oZWFwKCkpKSBEYXRlQ29uc3RydWN0b3IoZXhl
YywgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIGRhdGVQcm90b3R5cGUpOworICAgICAgICAgICAg
RGF0ZUNvbnN0cnVjdG9yKiBjb25zdHJ1Y3RvciA9IG5ldyAoYWxsb2NhdGVDZWxsPERhdGVDb25z
dHJ1Y3Rvcj4oKmV4ZWMtPmhlYXAoKSkpIERhdGVDb25zdHJ1Y3RvcihleGVjLCBnbG9iYWxPYmpl
Y3QsIHN0cnVjdHVyZSwgZGF0ZVByb3RvdHlwZSk7CisgICAgICAgICAgICBjb25zdHJ1Y3Rvci0+
aW5pdFByb3BlcnRpZXMoZXhlYy0+Z2xvYmFsRGF0YSgpLCBJZGVudGlmaWVyKGV4ZWMsIGRhdGVQ
cm90b3R5cGUtPmNsYXNzSW5mbygpLT5jbGFzc05hbWUpKTsKKyAgICAgICAgICAgIHJldHVybiBj
b25zdHJ1Y3RvcjsKICAgICAgICAgfQogCiAgICAgICAgIHN0YXRpYyBjb25zdCBDbGFzc0luZm8g
c19pbmZvOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3IuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yLmNwcAkocmV2
aXNpb24gOTIzNjUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvci5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTE2Nyw4ICsxNjcsOCBAQCBKU09iamVjdCogdGhyb3dTeW50YXhF
cnJvcihFeGVjU3RhdGUqIGV4CiAKIGNsYXNzIFN0cmljdE1vZGVUeXBlRXJyb3JGdW5jdGlvbiA6
IHB1YmxpYyBJbnRlcm5hbEZ1bmN0aW9uIHsKIHByaXZhdGU6Ci0gICAgU3RyaWN0TW9kZVR5cGVF
cnJvckZ1bmN0aW9uKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IFVTdHJpbmcmIG1lc3NhZ2UpCi0gICAgICAg
IDogSW50ZXJuYWxGdW5jdGlvbigmZXhlYy0+Z2xvYmFsRGF0YSgpLCBnbG9iYWxPYmplY3QsIHN0
cnVjdHVyZSwgZXhlYy0+Z2xvYmFsRGF0YSgpLnByb3BlcnR5TmFtZXMtPmVtcHR5SWRlbnRpZmll
cikKKyAgICBTdHJpY3RNb2RlVHlwZUVycm9yRnVuY3Rpb24oSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IFVTdHJpbmcmIG1lc3NhZ2UpCisg
ICAgICAgIDogSW50ZXJuYWxGdW5jdGlvbihnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSkKICAgICAg
ICAgLCBtX21lc3NhZ2UobWVzc2FnZSkKICAgICB7CiAgICAgfQpAQCAtMTc2LDcgKzE3Niw5IEBA
IHByaXZhdGU6CiBwdWJsaWM6CiAgICAgc3RhdGljIFN0cmljdE1vZGVUeXBlRXJyb3JGdW5jdGlv
biogY3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IFVTdHJpbmcmIG1lc3NhZ2UpCiAgICAgewotICAg
ICAgICByZXR1cm4gbmV3IChhbGxvY2F0ZUNlbGw8U3RyaWN0TW9kZVR5cGVFcnJvckZ1bmN0aW9u
PigqZXhlYy0+aGVhcCgpKSkgU3RyaWN0TW9kZVR5cGVFcnJvckZ1bmN0aW9uKGV4ZWMsIGdsb2Jh
bE9iamVjdCwgc3RydWN0dXJlLCBtZXNzYWdlKTsKKyAgICAgICAgU3RyaWN0TW9kZVR5cGVFcnJv
ckZ1bmN0aW9uKiBmdW5jdGlvbiA9IG5ldyAoYWxsb2NhdGVDZWxsPFN0cmljdE1vZGVUeXBlRXJy
b3JGdW5jdGlvbj4oKmV4ZWMtPmhlYXAoKSkpIFN0cmljdE1vZGVUeXBlRXJyb3JGdW5jdGlvbihn
bG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgbWVzc2FnZSk7CisgICAgICAgIGZ1bmN0aW9uLT5pbml0
UHJvcGVydGllcyhleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPmdsb2JhbERhdGEoKS5wcm9wZXJ0
eU5hbWVzLT5lbXB0eUlkZW50aWZpZXIpOworICAgICAgICByZXR1cm4gZnVuY3Rpb247CiAgICAg
fQogICAgIAogICAgIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVj
dFRocm93VHlwZUVycm9yKEV4ZWNTdGF0ZSogZXhlYykKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0Vycm9yQ29uc3RydWN0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yQ29uc3RydWN0b3IuY3BwCShyZXZpc2lvbiA5MjM2
NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yQ29uc3RydWN0b3IuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0zMCw3ICszMCw3IEBAIG5hbWVzcGFjZSBKU0MgewogQVNTRVJU
X0NMQVNTX0ZJVFNfSU5fQ0VMTChFcnJvckNvbnN0cnVjdG9yKTsKIAogRXJyb3JDb25zdHJ1Y3Rv
cjo6RXJyb3JDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBFcnJvclByb3RvdHlwZSogZXJyb3JQcm90
b3R5cGUpCi0gICAgOiBJbnRlcm5hbEZ1bmN0aW9uKCZleGVjLT5nbG9iYWxEYXRhKCksIGdsb2Jh
bE9iamVjdCwgc3RydWN0dXJlLCBJZGVudGlmaWVyKGV4ZWMsIGVycm9yUHJvdG90eXBlLT5jbGFz
c0luZm8oKS0+Y2xhc3NOYW1lKSkKKyAgICA6IEludGVybmFsRnVuY3Rpb24oZ2xvYmFsT2JqZWN0
LCBzdHJ1Y3R1cmUpCiB7CiAgICAgLy8gRUNNQSAxNS4xMS4zLjEgRXJyb3IucHJvdG90eXBlCiAg
ICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5w
cm9wZXJ0eU5hbWVzKCkucHJvdG90eXBlLCBlcnJvclByb3RvdHlwZSwgRG9udEVudW0gfCBEb250
RGVsZXRlIHwgUmVhZE9ubHkpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
RXJyb3JDb25zdHJ1Y3Rvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0Vycm9yQ29uc3RydWN0b3IuaAkocmV2aXNpb24gOTIzNjUpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9FcnJvckNvbnN0cnVjdG9yLmgJKHdvcmtpbmcgY29weSkKQEAg
LTIyLDYgKzIyLDcgQEAKICNkZWZpbmUgRXJyb3JDb25zdHJ1Y3Rvcl9oCiAKICNpbmNsdWRlICJF
cnJvckluc3RhbmNlLmgiCisjaW5jbHVkZSAiRXJyb3JQcm90b3R5cGUuaCIKICNpbmNsdWRlICJJ
bnRlcm5hbEZ1bmN0aW9uLmgiCiAKIG5hbWVzcGFjZSBKU0MgewpAQCAtMzMsOSArMzQsMTEgQEAg
bmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIEVycm9yQ29uc3RydWN0b3IoRXhlY1N0YXRlKiwgSlNH
bG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBFcnJvclByb3RvdHlwZSopOwogCiAgICAgcHVibGlj
OgotICAgICAgICBzdGF0aWMgRXJyb3JDb25zdHJ1Y3RvciogY3JlYXRlKEV4ZWNTdGF0ZSogZXhl
YywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEVy
cm9yUHJvdG90eXBlKiBlcnJQcm90b3R5cGUpCisgICAgICAgIHN0YXRpYyBFcnJvckNvbnN0cnVj
dG9yKiBjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgRXJyb3JQcm90b3R5cGUqIGVycm9yUHJvdG90eXBlKQog
ICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gbmV3IChhbGxvY2F0ZUNlbGw8RXJyb3JDb25z
dHJ1Y3Rvcj4oKmV4ZWMtPmhlYXAoKSkpIEVycm9yQ29uc3RydWN0b3IoZXhlYywgZ2xvYmFsT2Jq
ZWN0LCBzdHJ1Y3R1cmUsIGVyclByb3RvdHlwZSk7CisgICAgICAgICAgICBFcnJvckNvbnN0cnVj
dG9yKiBjb25zdHJ1Y3RvciA9IG5ldyAoYWxsb2NhdGVDZWxsPEVycm9yQ29uc3RydWN0b3I+KCpl
eGVjLT5oZWFwKCkpKSBFcnJvckNvbnN0cnVjdG9yKGV4ZWMsIGdsb2JhbE9iamVjdCwgc3RydWN0
dXJlLCBlcnJvclByb3RvdHlwZSk7CisgICAgICAgICAgICBjb25zdHJ1Y3Rvci0+aW5pdFByb3Bl
cnRpZXMoZXhlYy0+Z2xvYmFsRGF0YSgpLCBJZGVudGlmaWVyKGV4ZWMsIGVycm9yUHJvdG90eXBl
LT5jbGFzc0luZm8oKS0+Y2xhc3NOYW1lKSk7CisgICAgICAgICAgICByZXR1cm4gY29uc3RydWN0
b3I7CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgcHJpdmF0ZToKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0Vycm9ySW5zdGFuY2UuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9ySW5zdGFuY2UuY3BwCShyZXZpc2lvbiA5MjM2
NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9ySW5zdGFuY2UuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0zMCwyNyArMzAsMjggQEAgRXJyb3JJbnN0YW5jZTo6RXJyb3JJbnN0
YW5jZShKU0dsb2JhbERhdAogICAgICwgbV9hcHBlbmRTb3VyY2VUb01lc3NhZ2UoZmFsc2UpCiB7
CiAgICAgQVNTRVJUKGluaGVyaXRzKCZzX2luZm8pKTsKLSAgICBwdXREaXJlY3QoZ2xvYmFsRGF0
YSwgZ2xvYmFsRGF0YS5wcm9wZXJ0eU5hbWVzLT5tZXNzYWdlLCBqc1N0cmluZygmZ2xvYmFsRGF0
YSwgIiIpLCBEb250RW51bSk7Ci19Ci0KLUVycm9ySW5zdGFuY2U6OkVycm9ySW5zdGFuY2UoSlNH
bG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgY29uc3QgVVN0cmlu
ZyYgbWVzc2FnZSkKLSAgICA6IEpTTm9uRmluYWxPYmplY3QoZ2xvYmFsRGF0YSwgc3RydWN0dXJl
KQotICAgICwgbV9hcHBlbmRTb3VyY2VUb01lc3NhZ2UoZmFsc2UpCi17Ci0gICAgQVNTRVJUKGlu
aGVyaXRzKCZzX2luZm8pKTsKLSAgICBwdXREaXJlY3QoZ2xvYmFsRGF0YSwgZ2xvYmFsRGF0YS5w
cm9wZXJ0eU5hbWVzLT5tZXNzYWdlLCBqc1N0cmluZygmZ2xvYmFsRGF0YSwgbWVzc2FnZSksIERv
bnRFbnVtKTsKIH0KIAogRXJyb3JJbnN0YW5jZSogRXJyb3JJbnN0YW5jZTo6Y3JlYXRlKEpTR2xv
YmFsRGF0YSYgZ2xvYmFsRGF0YSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IFVTdHJpbmcm
IG1lc3NhZ2UpCiB7Ci0gICAgcmV0dXJuIG5ldyAoYWxsb2NhdGVDZWxsPEVycm9ySW5zdGFuY2U+
KGdsb2JhbERhdGEuaGVhcCkpIEVycm9ySW5zdGFuY2UoZ2xvYmFsRGF0YSwgc3RydWN0dXJlLCBt
ZXNzYWdlKTsKKyAgICBFcnJvckluc3RhbmNlKiBlcnJvckluc3RhbmNlID0gbmV3IChhbGxvY2F0
ZUNlbGw8RXJyb3JJbnN0YW5jZT4oZ2xvYmFsRGF0YS5oZWFwKSkgRXJyb3JJbnN0YW5jZShnbG9i
YWxEYXRhLCBzdHJ1Y3R1cmUpOworICAgIGVycm9ySW5zdGFuY2UtPnB1dERpcmVjdChnbG9iYWxE
YXRhLCBnbG9iYWxEYXRhLnByb3BlcnR5TmFtZXMtPm1lc3NhZ2UsIGpzU3RyaW5nKCZnbG9iYWxE
YXRhLCBtZXNzYWdlKSwgRG9udEVudW0pOworICAgIHJldHVybiBlcnJvckluc3RhbmNlOwogfQog
CiBFcnJvckluc3RhbmNlKiBFcnJvckluc3RhbmNlOjpjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNWYWx1ZSBtZXNzYWdlKQogewotICAgIGlmIChtZXNzYWdl
LmlzVW5kZWZpbmVkKCkpCi0gICAgICAgIHJldHVybiBuZXcgKGFsbG9jYXRlQ2VsbDxFcnJvcklu
c3RhbmNlPigqZXhlYy0+aGVhcCgpKSkgRXJyb3JJbnN0YW5jZShleGVjLT5nbG9iYWxEYXRhKCks
IHN0cnVjdHVyZSk7Ci0gICAgcmV0dXJuIG5ldyAoYWxsb2NhdGVDZWxsPEVycm9ySW5zdGFuY2U+
KCpleGVjLT5oZWFwKCkpKSBFcnJvckluc3RhbmNlKGV4ZWMtPmdsb2JhbERhdGEoKSwgc3RydWN0
dXJlLCBtZXNzYWdlLnRvU3RyaW5nKGV4ZWMpKTsKKyAgICBFcnJvckluc3RhbmNlKiBlcnJvcklu
c3RhbmNlOworICAgIEpTU3RyaW5nKiBzdHJpbmc7CisgICAgaWYgKG1lc3NhZ2UuaXNVbmRlZmlu
ZWQoKSkgeworICAgICAgICBlcnJvckluc3RhbmNlID0gbmV3IChhbGxvY2F0ZUNlbGw8RXJyb3JJ
bnN0YW5jZT4oKmV4ZWMtPmhlYXAoKSkpIEVycm9ySW5zdGFuY2UoZXhlYy0+Z2xvYmFsRGF0YSgp
LCBzdHJ1Y3R1cmUpOworICAgICAgICBzdHJpbmcgPSBqc1N0cmluZygmZXhlYy0+Z2xvYmFsRGF0
YSgpLCAiIik7CisgICAgfSBlbHNlIHsKKyAgICAgICAgZXJyb3JJbnN0YW5jZSA9IG5ldyAoYWxs
b2NhdGVDZWxsPEVycm9ySW5zdGFuY2U+KCpleGVjLT5oZWFwKCkpKSBFcnJvckluc3RhbmNlKGV4
ZWMtPmdsb2JhbERhdGEoKSwgc3RydWN0dXJlKTsKKyAgICAgICAgc3RyaW5nID0ganNTdHJpbmco
JmV4ZWMtPmdsb2JhbERhdGEoKSwgbWVzc2FnZS50b1N0cmluZyhleGVjKSk7CisgICAgfQorICAg
IGVycm9ySW5zdGFuY2UtPnB1dERpcmVjdChleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPmdsb2Jh
bERhdGEoKS5wcm9wZXJ0eU5hbWVzLT5tZXNzYWdlLCBzdHJpbmcsIERvbnRFbnVtKTsKKyAgICBy
ZXR1cm4gZXJyb3JJbnN0YW5jZTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvckluc3RhbmNlLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JJbnN0YW5jZS5oCShyZXZpc2lvbiA5
MjM2NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9ySW5zdGFuY2UuaAko
d29ya2luZyBjb3B5KQpAQCAtNDUsOCArNDUsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAg
dmlydHVhbCBib29sIGlzRXJyb3JJbnN0YW5jZSgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KIAog
ICAgIHByb3RlY3RlZDoKLSAgICAgICAgZXhwbGljaXQgRXJyb3JJbnN0YW5jZShKU0dsb2JhbERh
dGEmLCBTdHJ1Y3R1cmUqKTsKLSAgICAgICAgZXhwbGljaXQgRXJyb3JJbnN0YW5jZShKU0dsb2Jh
bERhdGEmLCBTdHJ1Y3R1cmUqLCBjb25zdCBVU3RyaW5nJik7CisgICAgICAgIEVycm9ySW5zdGFu
Y2UoSlNHbG9iYWxEYXRhJiwgU3RydWN0dXJlKik7CiAKICAgICAgICAgYm9vbCBtX2FwcGVuZFNv
dXJjZVRvTWVzc2FnZTsKICAgICB9OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvRXJyb3JQcm90b3R5cGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0Vycm9yUHJvdG90eXBlLmNwcAkocmV2aXNpb24gOTIzNjUpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvclByb3RvdHlwZS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTUzLDggKzUzLDYgQEAgQVNTRVJUX0NMQVNTX0ZJVFNfSU5fQ0VMTChFcnJvclByb3RvdHlw
ZQogRXJyb3JQcm90b3R5cGU6OkVycm9yUHJvdG90eXBlKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAgICAgOiBFcnJv
ckluc3RhbmNlKGV4ZWMtPmdsb2JhbERhdGEoKSwgc3RydWN0dXJlKQogewotICAgIHB1dERpcmVj
dChleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5uYW1lLCBqc05vbnRy
aXZpYWxTdHJpbmcoZXhlYywgIkVycm9yIiksIERvbnRFbnVtKTsKLQogICAgIEFTU0VSVChpbmhl
cml0cygmc19pbmZvKSk7CiAgICAgcHV0QW5vbnltb3VzVmFsdWUoZ2xvYmFsT2JqZWN0LT5nbG9i
YWxEYXRhKCksIDAsIGdsb2JhbE9iamVjdCk7CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9FcnJvclByb3RvdHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0Vycm9yUHJvdG90eXBlLmgJKHJldmlzaW9uIDkyMzY1KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JQcm90b3R5cGUuaAkod29ya2luZyBjb3B5
KQpAQCAtMzQsNyArMzQsOSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBwdWJsaWM6CiAgICAgICAg
IHN0YXRpYyBFcnJvclByb3RvdHlwZSogY3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAgICAgICAgIHsKLSAg
ICAgICAgICAgIHJldHVybiBuZXcgKGFsbG9jYXRlQ2VsbDxFcnJvclByb3RvdHlwZT4oKmV4ZWMt
PmhlYXAoKSkpIEVycm9yUHJvdG90eXBlKGV4ZWMsIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlKTsK
KyAgICAgICAgICAgIEVycm9yUHJvdG90eXBlKiBlcnJvclByb3RvdHlwZSA9IG5ldyAoYWxsb2Nh
dGVDZWxsPEVycm9yUHJvdG90eXBlPigqZXhlYy0+aGVhcCgpKSkgRXJyb3JQcm90b3R5cGUoZXhl
YywgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUpOworICAgICAgICAgICAgZXJyb3JQcm90b3R5cGUt
PnB1dERpcmVjdChleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5uYW1l
LCBqc05vbnRyaXZpYWxTdHJpbmcoZXhlYywgIkVycm9yIiksIERvbnRFbnVtKTsKKyAgICAgICAg
ICAgIHJldHVybiBlcnJvclByb3RvdHlwZTsKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAg
c3RhdGljIGNvbnN0IENsYXNzSW5mbyBzX2luZm87CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9FeGVjdXRhYmxlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmNwcAkocmV2aXNpb24gOTIzNjUpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MTQ0LDcgKzE0NCw2IEBAIEZ1bmN0aW9uRXhlY3V0YWJsZTo6RnVuY3Rpb25FeGVjdXRhYmxlKEoK
IHsKICAgICBtX2ZpcnN0TGluZSA9IGZpcnN0TGluZTsKICAgICBtX2xhc3RMaW5lID0gbGFzdExp
bmU7Ci0gICAgbV9uYW1lVmFsdWUuc2V0KGdsb2JhbERhdGEsIHRoaXMsIGpzU3RyaW5nKCZnbG9i
YWxEYXRhLCBuYW1lLnVzdHJpbmcoKSkpOwogfQogCiBGdW5jdGlvbkV4ZWN1dGFibGU6OkZ1bmN0
aW9uRXhlY3V0YWJsZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIG5hbWUsIGNv
bnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgYm9vbCBmb3JjZVVzZXNBcmd1bWVudHMsIEZ1bmN0aW9u
UGFyYW1ldGVycyogcGFyYW1ldGVycywgYm9vbCBpblN0cmljdENvbnRleHQsIGludCBmaXJzdExp
bmUsIGludCBsYXN0TGluZSkKQEAgLTE1Nyw3ICsxNTYsNiBAQCBGdW5jdGlvbkV4ZWN1dGFibGU6
OkZ1bmN0aW9uRXhlY3V0YWJsZShFCiB7CiAgICAgbV9maXJzdExpbmUgPSBmaXJzdExpbmU7CiAg
ICAgbV9sYXN0TGluZSA9IGxhc3RMaW5lOwotICAgIG1fbmFtZVZhbHVlLnNldChleGVjLT5nbG9i
YWxEYXRhKCksIHRoaXMsIGpzU3RyaW5nKCZleGVjLT5nbG9iYWxEYXRhKCksIG5hbWUudXN0cmlu
ZygpKSk7CiB9CiAKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0
YWJsZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1
dGFibGUuaAkocmV2aXNpb24gOTIzNjUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9FeGVjdXRhYmxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTE3OCw3ICsxNzgsNyBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICNlbHNlCiAgICAgICAgIHN0YXRpYyBOYXRpdmVFeGVjdXRhYmxlKiBjcmVhdGUo
SlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBOYXRpdmVGdW5jdGlvbiBmdW5jdGlvbiwgTmF0aXZl
RnVuY3Rpb24gY29uc3RydWN0b3IpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBuZXcg
KGFsbG9jYXRlQ2VsbDxOYXRpdmVFeGVjdXRhYmxlPihnbG9iYWxEYXRhLmhlYXApKSBOYXRpdmVF
eGVjdXRhYmxlKGdsb2JhbERhdGEsIGZ1bmN0aW9uLCBjb25zdHJ1Y3Rvcik7CisgICAgICAgICAg
ICByZXR1cm4gbmV3IChhbGxvY2F0ZUNlbGw8TmF0aXZlRXhlY3V0YWJsZT4oZ2xvYmFsRGF0YS5o
ZWFwKSkgTmF0aXZlRXhlY3V0YWJsZShnbG9iYWxEYXRhLCBmdW5jdGlvbiwgY29uc3RydWN0b3Ip
KTsKICAgICAgICAgfQogI2VuZGlmCiAKQEAgLTI5OCw3ICsyOTgsNyBAQCBuYW1lc3BhY2UgSlND
IHsKIAogICAgICAgICBzdGF0aWMgRXZhbEV4ZWN1dGFibGUqIGNyZWF0ZShFeGVjU3RhdGUqIGV4
ZWMsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgYm9vbCBpc0luU3RyaWN0Q29udGV4dCkgCiAg
ICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBuZXcgKGFsbG9jYXRlQ2VsbDxFdmFsRXhlY3V0
YWJsZT4oKmV4ZWMtPmhlYXAoKSkpIEV2YWxFeGVjdXRhYmxlKGV4ZWMsIHNvdXJjZSwgaXNJblN0
cmljdENvbnRleHQpOyAKKyAgICAgICAgICAgIHJldHVybiBuZXcgKGFsbG9jYXRlQ2VsbDxFdmFs
RXhlY3V0YWJsZT4oKmV4ZWMtPmhlYXAoKSkpIEV2YWxFeGVjdXRhYmxlKGV4ZWMsIHNvdXJjZSwg
aXNJblN0cmljdENvbnRleHQpOwogICAgICAgICB9CiAKICNpZiBFTkFCTEUoSklUKQpAQCAtMzgx
LDEyICszODEsMTggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgcHVibGljOgogICAgICAgICBzdGF0
aWMgRnVuY3Rpb25FeGVjdXRhYmxlKiBjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVu
dGlmaWVyJiBuYW1lLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIGJvb2wgZm9yY2VVc2VzQXJn
dW1lbnRzLCBGdW5jdGlvblBhcmFtZXRlcnMqIHBhcmFtZXRlcnMsIGJvb2wgaXNJblN0cmljdENv
bnRleHQsIGludCBmaXJzdExpbmUsIGludCBsYXN0TGluZSkKICAgICAgICAgewotICAgICAgICAg
ICAgcmV0dXJuIG5ldyAoYWxsb2NhdGVDZWxsPEZ1bmN0aW9uRXhlY3V0YWJsZT4oKmV4ZWMtPmhl
YXAoKSkpIEZ1bmN0aW9uRXhlY3V0YWJsZShleGVjLCBuYW1lLCBzb3VyY2UsIGZvcmNlVXNlc0Fy
Z3VtZW50cywgcGFyYW1ldGVycywgaXNJblN0cmljdENvbnRleHQsIGZpcnN0TGluZSwgbGFzdExp
bmUpOworICAgICAgICAgICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBmdW5jdGlvbiA9IG5ldyAoYWxs
b2NhdGVDZWxsPEZ1bmN0aW9uRXhlY3V0YWJsZT4oKmV4ZWMtPmhlYXAoKSkpIEZ1bmN0aW9uRXhl
Y3V0YWJsZShleGVjLCBuYW1lLCBzb3VyY2UsIGZvcmNlVXNlc0FyZ3VtZW50cywgcGFyYW1ldGVy
cywgaXNJblN0cmljdENvbnRleHQsIGZpcnN0TGluZSwgbGFzdExpbmUpOworICAgICAgICAgICAg
SlNTdHJpbmcqIG5hbWVTdHJpbmcgPSBqc1N0cmluZygmZXhlYy0+Z2xvYmFsRGF0YSgpLCBuYW1l
LnVzdHJpbmcoKSk7CisgICAgICAgICAgICBmdW5jdGlvbi0+bV9uYW1lVmFsdWUuc2V0KGV4ZWMt
Pmdsb2JhbERhdGEoKSwgZnVuY3Rpb24sIG5hbWVTdHJpbmcpOworICAgICAgICAgICAgcmV0dXJu
IGZ1bmN0aW9uOwogICAgICAgICB9CiAKICAgICAgICAgc3RhdGljIEZ1bmN0aW9uRXhlY3V0YWJs
ZSogY3JlYXRlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgY29uc3QgSWRlbnRpZmllciYgbmFt
ZSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBib29sIGZvcmNlVXNlc0FyZ3VtZW50cywgRnVu
Y3Rpb25QYXJhbWV0ZXJzKiBwYXJhbWV0ZXJzLCBib29sIGlzSW5TdHJpY3RDb250ZXh0LCBpbnQg
Zmlyc3RMaW5lLCBpbnQgbGFzdExpbmUpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBu
ZXcgKGFsbG9jYXRlQ2VsbDxGdW5jdGlvbkV4ZWN1dGFibGU+KGdsb2JhbERhdGEuaGVhcCkpIEZ1
bmN0aW9uRXhlY3V0YWJsZShnbG9iYWxEYXRhLCBuYW1lLCBzb3VyY2UsIGZvcmNlVXNlc0FyZ3Vt
ZW50cywgcGFyYW1ldGVycywgaXNJblN0cmljdENvbnRleHQsIGZpcnN0TGluZSwgbGFzdExpbmUp
OworICAgICAgICAgICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBmdW5jdGlvbiA9IG5ldyAoYWxsb2Nh
dGVDZWxsPEZ1bmN0aW9uRXhlY3V0YWJsZT4oZ2xvYmFsRGF0YS5oZWFwKSkgRnVuY3Rpb25FeGVj
dXRhYmxlKGdsb2JhbERhdGEsIG5hbWUsIHNvdXJjZSwgZm9yY2VVc2VzQXJndW1lbnRzLCBwYXJh
bWV0ZXJzLCBpc0luU3RyaWN0Q29udGV4dCwgZmlyc3RMaW5lLCBsYXN0TGluZSk7CisgICAgICAg
ICAgICBKU1N0cmluZyogbmFtZVN0cmluZyA9IGpzU3RyaW5nKCZnbG9iYWxEYXRhLCBuYW1lLnVz
dHJpbmcoKSk7CisgICAgICAgICAgICBmdW5jdGlvbi0+bV9uYW1lVmFsdWUuc2V0KGdsb2JhbERh
dGEsIGZ1bmN0aW9uLCBuYW1lU3RyaW5nKTsKKyAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbjsK
ICAgICAgICAgfQogCiAgICAgICAgIEpTRnVuY3Rpb24qIG1ha2UoRXhlY1N0YXRlKiBleGVjLCBT
Y29wZUNoYWluTm9kZSogc2NvcGVDaGFpbikKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0Z1bmN0aW9uQ29uc3RydWN0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uQ29uc3RydWN0b3IuY3BwCShyZXZpc2lvbiA5MjM2
NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uQ29uc3RydWN0b3Iu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw3ICszOCw3IEBAIG5hbWVzcGFjZSBKU0MgewogQVNT
RVJUX0NMQVNTX0ZJVFNfSU5fQ0VMTChGdW5jdGlvbkNvbnN0cnVjdG9yKTsKIAogRnVuY3Rpb25D
b25zdHJ1Y3Rvcjo6RnVuY3Rpb25Db25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBGdW5jdGlvblByb3Rv
dHlwZSogZnVuY3Rpb25Qcm90b3R5cGUpCi0gICAgOiBJbnRlcm5hbEZ1bmN0aW9uKCZleGVjLT5n
bG9iYWxEYXRhKCksIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBJZGVudGlmaWVyKGV4ZWMsIGZ1
bmN0aW9uUHJvdG90eXBlLT5jbGFzc0luZm8oKS0+Y2xhc3NOYW1lKSkKKyAgICA6IEludGVybmFs
RnVuY3Rpb24oZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUpCiB7CiAgICAgcHV0RGlyZWN0V2l0aG91
dFRyYW5zaXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkucHJv
dG90eXBlLCBmdW5jdGlvblByb3RvdHlwZSwgRG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9u
bHkpOwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkNvbnN0
cnVjdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVu
Y3Rpb25Db25zdHJ1Y3Rvci5oCShyZXZpc2lvbiA5MjM2NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0Z1bmN0aW9uQ29uc3RydWN0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtMjEs
MjAgKzIxLDIxIEBACiAjaWZuZGVmIEZ1bmN0aW9uQ29uc3RydWN0b3JfaAogI2RlZmluZSBGdW5j
dGlvbkNvbnN0cnVjdG9yX2gKIAorI2luY2x1ZGUgIkZ1bmN0aW9uUHJvdG90eXBlLmgiCiAjaW5j
bHVkZSAiSW50ZXJuYWxGdW5jdGlvbi5oIgogCiBuYW1lc3BhY2UgSlNDIHsKIAotICAgIGNsYXNz
IEZ1bmN0aW9uUHJvdG90eXBlOwotCiAgICAgY2xhc3MgRnVuY3Rpb25Db25zdHJ1Y3RvciA6IHB1
YmxpYyBJbnRlcm5hbEZ1bmN0aW9uIHsKICAgICBwcml2YXRlOgogICAgICAgICBGdW5jdGlvbkNv
bnN0cnVjdG9yKEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgRnVuY3Rp
b25Qcm90b3R5cGUqKTsKICAgICAKICAgICBwdWJsaWM6Ci0gICAgICAgIHN0YXRpYyBGdW5jdGlv
bkNvbnN0cnVjdG9yKiBjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgRnVuY3Rpb25Qcm90b3R5cGUqIGZ1bmNQ
cm90b3R5cGUpCisgICAgICAgIHN0YXRpYyBGdW5jdGlvbkNvbnN0cnVjdG9yKiBjcmVhdGUoRXhl
Y1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSwgRnVuY3Rpb25Qcm90b3R5cGUqIGZ1bmN0aW9uUHJvdG90eXBlKQogICAgICAgICB7
Ci0gICAgICAgICAgICByZXR1cm4gbmV3IChhbGxvY2F0ZUNlbGw8RnVuY3Rpb25Db25zdHJ1Y3Rv
cj4oKmV4ZWMtPmhlYXAoKSkpIEZ1bmN0aW9uQ29uc3RydWN0b3IoZXhlYywgZ2xvYmFsT2JqZWN0
LCBzdHJ1Y3R1cmUsIGZ1bmNQcm90b3R5cGUpOworICAgICAgICAgICAgRnVuY3Rpb25Db25zdHJ1
Y3RvciogY29uc3RydWN0b3IgPSBuZXcgKGFsbG9jYXRlQ2VsbDxGdW5jdGlvbkNvbnN0cnVjdG9y
PigqZXhlYy0+aGVhcCgpKSkgRnVuY3Rpb25Db25zdHJ1Y3RvcihleGVjLCBnbG9iYWxPYmplY3Qs
IHN0cnVjdHVyZSwgZnVuY3Rpb25Qcm90b3R5cGUpOworICAgICAgICAgICAgY29uc3RydWN0b3It
PmluaXRQcm9wZXJ0aWVzKGV4ZWMtPmdsb2JhbERhdGEoKSwgSWRlbnRpZmllcihleGVjLCBmdW5j
dGlvblByb3RvdHlwZS0+Y2xhc3NJbmZvKCktPmNsYXNzTmFtZSkpOworICAgICAgICAgICAgcmV0
dXJuIGNvbnN0cnVjdG9yOwogICAgICAgICB9CiAKICAgICBwcml2YXRlOgpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uUHJvdG90eXBlLmNwcAko
cmV2aXNpb24gOTIzNjUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlv
blByb3RvdHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM4LDcgKzM4LDcgQEAgc3RhdGljIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuYwogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgZnVuY3Rpb25Qcm90b0Z1bmNDYWxsKEV4ZWNTdGF0ZSopOwogCiBGdW5jdGlv
blByb3RvdHlwZTo6RnVuY3Rpb25Qcm90b3R5cGUoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKLSAgICA6IEludGVybmFs
RnVuY3Rpb24oJmV4ZWMtPmdsb2JhbERhdGEoKSwgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIGV4
ZWMtPnByb3BlcnR5TmFtZXMoKS5udWxsSWRlbnRpZmllcikKKyAgICA6IEludGVybmFsRnVuY3Rp
b24oZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUpCiB7CiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5z
aXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkubGVuZ3RoLCBq
c051bWJlcigwKSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5IHwgRG9udEVudW0pOwogfQpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvblByb3RvdHlwZS5o
CShyZXZpc2lvbiA5MjM2NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0
aW9uUHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTMyLDcgKzMyLDkgQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgcHVibGljOgogICAgICAgICBzdGF0aWMgRnVuY3Rpb25Qcm90b3R5cGUqIGNy
ZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVj
dHVyZSogc3RydWN0dXJlKQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gbmV3IChhbGxv
Y2F0ZUNlbGw8RnVuY3Rpb25Qcm90b3R5cGU+KCpleGVjLT5oZWFwKCkpKSBGdW5jdGlvblByb3Rv
dHlwZShleGVjLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSk7CisgICAgICAgICAgICBGdW5jdGlv
blByb3RvdHlwZSogcHJvdG90eXBlID0gbmV3IChhbGxvY2F0ZUNlbGw8RnVuY3Rpb25Qcm90b3R5
cGU+KCpleGVjLT5oZWFwKCkpKSBGdW5jdGlvblByb3RvdHlwZShleGVjLCBnbG9iYWxPYmplY3Qs
IHN0cnVjdHVyZSk7CisgICAgICAgICAgICBwcm90b3R5cGUtPmluaXRQcm9wZXJ0aWVzKGV4ZWMt
Pmdsb2JhbERhdGEoKSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLm51bGxJZGVudGlmaWVyKTsKKyAg
ICAgICAgICAgIHJldHVybiBwcm90b3R5cGU7CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAg
IHZvaWQgYWRkRnVuY3Rpb25Qcm9wZXJ0aWVzKEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0Kiwg
U3RydWN0dXJlKiBmdW5jdGlvblN0cnVjdHVyZSwgSlNGdW5jdGlvbioqIGNhbGxGdW5jdGlvbiwg
SlNGdW5jdGlvbioqIGFwcGx5RnVuY3Rpb24pOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSW50ZXJuYWxGdW5jdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSW50ZXJuYWxGdW5jdGlvbi5jcHAJKHJldmlzaW9uIDkyMzY1KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50ZXJuYWxGdW5jdGlvbi5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTQxLDYgKzQxLDEyIEBAIEludGVybmFsRnVuY3Rpb246OkludGVybmFs
RnVuY3Rpb24oVlB0clMKIHsKIH0KIAorSW50ZXJuYWxGdW5jdGlvbjo6SW50ZXJuYWxGdW5jdGlv
bihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAg
ICA6IEpTT2JqZWN0V2l0aEdsb2JhbE9iamVjdChnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSkKK3sK
KyAgICBBU1NFUlQoaW5oZXJpdHMoJnNfaW5mbykpOworfQorCiBJbnRlcm5hbEZ1bmN0aW9uOjpJ
bnRlcm5hbEZ1bmN0aW9uKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IElkZW50aWZpZXImIG5h
bWUpCiAgICAgOiBKU09iamVjdFdpdGhHbG9iYWxPYmplY3QoZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1
cmUpCiB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRlcm5hbEZ1bmN0
aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50ZXJu
YWxGdW5jdGlvbi5oCShyZXZpc2lvbiA5MjM2NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0ludGVybmFsRnVuY3Rpb24uaAkod29ya2luZyBjb3B5KQpAQCAtNTAsNyArNTAsMTIg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIC8vIE9ubHkgdXNlZCB0byBhbGxvdyB1cyB0byBk
ZXRlcm1pbmUgdGhlIEpTRnVuY3Rpb24gdnB0cgogICAgICAgICBJbnRlcm5hbEZ1bmN0aW9uKFZQ
dHJTdGVhbGluZ0hhY2tUeXBlKTsKIAorICAgICAgICBJbnRlcm5hbEZ1bmN0aW9uKEpTR2xvYmFs
T2JqZWN0KiwgU3RydWN0dXJlKik7CiAgICAgICAgIEludGVybmFsRnVuY3Rpb24oSlNHbG9iYWxE
YXRhKiwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBjb25zdCBJZGVudGlmaWVyJik7Cisg
ICAgICAgIHZvaWQgaW5pdFByb3BlcnRpZXMoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBjb25z
dCBJZGVudGlmaWVyJiBuYW1lKQorICAgICAgICB7CisgICAgICAgICAgICBwdXREaXJlY3QoZ2xv
YmFsRGF0YSwgZ2xvYmFsRGF0YS5wcm9wZXJ0eU5hbWVzLT5uYW1lLCBqc1N0cmluZygmZ2xvYmFs
RGF0YSwgbmFtZS5pc051bGwoKSA/ICIiIDogbmFtZS51c3RyaW5nKCkpLCBEb250RGVsZXRlIHwg
UmVhZE9ubHkgfCBEb250RW51bSk7CisgICAgICAgIH0KIAogICAgIHByaXZhdGU6CiAgICAgICAg
IHZpcnR1YWwgQ2FsbFR5cGUgZ2V0Q2FsbERhdGEoQ2FsbERhdGEmKSA9IDA7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0J5dGVBcnJheS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCeXRlQXJyYXkuY3BwCShyZXZpc2lvbiA5
MjM2NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQnl0ZUFycmF5LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMzksMTIgKzM5LDEzIEBAIEpTQnl0ZUFycmF5OjpKU0J5dGVBcnJh
eShFeGVjU3RhdGUqIGV4ZWMKICAgICA6IEpTTm9uRmluYWxPYmplY3QoZXhlYy0+Z2xvYmFsRGF0
YSgpLCBzdHJ1Y3R1cmUpCiAgICAgLCBtX3N0b3JhZ2Uoc3RvcmFnZSkKIHsKLSAgICBwdXREaXJl
Y3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5nbG9iYWxEYXRhKCkucHJvcGVydHlOYW1lcy0+
bGVuZ3RoLCBqc051bWJlcihtX3N0b3JhZ2UtPmxlbmd0aCgpKSwgUmVhZE9ubHkgfCBEb250RGVs
ZXRlKTsKIH0KICAgICAgICAgCiBKU0J5dGVBcnJheSogSlNCeXRlQXJyYXk6OmNyZWF0ZShFeGVj
U3RhdGUqIGV4ZWMsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBCeXRlQXJyYXkqIHN0b3JhZ2UpCiB7
Ci0gICAgcmV0dXJuIG5ldyAoYWxsb2NhdGVDZWxsPEpTQnl0ZUFycmF5PigqZXhlYy0+aGVhcCgp
KSkgSlNCeXRlQXJyYXkoZXhlYywgc3RydWN0dXJlLCBzdG9yYWdlKTsKKyAgICBKU0J5dGVBcnJh
eSogYXJyYXkgPSBuZXcgKGFsbG9jYXRlQ2VsbDxKU0J5dGVBcnJheT4oKmV4ZWMtPmhlYXAoKSkp
IEpTQnl0ZUFycmF5KGV4ZWMsIHN0cnVjdHVyZSwgc3RvcmFnZSk7CisgICAgYXJyYXktPnB1dERp
cmVjdChleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPmdsb2JhbERhdGEoKS5wcm9wZXJ0eU5hbWVz
LT5sZW5ndGgsIGpzTnVtYmVyKGFycmF5LT5tX3N0b3JhZ2UtPmxlbmd0aCgpKSwgUmVhZE9ubHkg
fCBEb250RGVsZXRlKTsKKyAgICByZXR1cm4gYXJyYXk7CiB9CiAKICNpZiAhQVNTRVJUX0RJU0FC
TEVECkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuaAkocmV2aXNpb24g
OTIzNjUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMzUwLDcgKzM1MCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHsKICAgICAg
ICAgcmV0dXJuIGhlYXAuYWxsb2NhdGUoc2l6ZW9mKFQpKTsKICAgICB9Ci0gICAgICAgIAorCiB9
IC8vIG5hbWVzcGFjZSBKU0MKIAogI2VuZGlmIC8vIEpTQ2VsbF9oCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcAkocmV2aXNpb24gOTIzNjUpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNjEsMjcgKzYxLDE5IEBAIEpTRnVuY3Rpb246OkpTRnVuY3Rpb24oVlB0clN0ZWFs
aW5nSGFja1QKIHsKIH0KIAotSlNGdW5jdGlvbjo6SlNGdW5jdGlvbihFeGVjU3RhdGUqIGV4ZWMs
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBpbnQg
bGVuZ3RoLCBjb25zdCBJZGVudGlmaWVyJiBuYW1lLCBOYXRpdmVFeGVjdXRhYmxlKiB0aHVuaykK
K0pTRnVuY3Rpb246OkpTRnVuY3Rpb24oRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgTmF0aXZlRXhlY3V0YWJsZSogdGh1
bmspCiAgICAgOiBCYXNlKGdsb2JhbE9iamVjdCwgc3RydWN0dXJlKQogICAgICwgbV9leGVjdXRh
YmxlKGV4ZWMtPmdsb2JhbERhdGEoKSwgdGhpcywgdGh1bmspCiAgICAgLCBtX3Njb3BlQ2hhaW4o
ZXhlYy0+Z2xvYmFsRGF0YSgpLCB0aGlzLCBnbG9iYWxPYmplY3QtPmdsb2JhbFNjb3BlQ2hhaW4o
KSkKIHsKICAgICBBU1NFUlQoaW5oZXJpdHMoJnNfaW5mbykpOwotICAgIHB1dERpcmVjdChleGVj
LT5nbG9iYWxEYXRhKCksIGV4ZWMtPmdsb2JhbERhdGEoKS5wcm9wZXJ0eU5hbWVzLT5uYW1lLCBq
c1N0cmluZyhleGVjLCBuYW1lLmlzTnVsbCgpID8gIiIgOiBuYW1lLnVzdHJpbmcoKSksIERvbnRE
ZWxldGUgfCBSZWFkT25seSB8IERvbnRFbnVtKTsKLSAgICBwdXREaXJlY3QoZXhlYy0+Z2xvYmFs
RGF0YSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkubGVuZ3RoLCBqc051bWJlcihsZW5ndGgpLCBE
b250RGVsZXRlIHwgUmVhZE9ubHkgfCBEb250RW51bSk7CiB9CiAKLUpTRnVuY3Rpb246OkpTRnVu
Y3Rpb24oRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSwgaW50IGxlbmd0aCwgY29uc3QgSWRlbnRpZmllciYgbmFtZSwgTmF0
aXZlRnVuY3Rpb24gZnVuYykKK0pTRnVuY3Rpb246OkpTRnVuY3Rpb24oRXhlY1N0YXRlKiBleGVj
LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAg
ICA6IEJhc2UoZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUpCiAgICAgLCBtX3Njb3BlQ2hhaW4oZXhl
Yy0+Z2xvYmFsRGF0YSgpLCB0aGlzLCBnbG9iYWxPYmplY3QtPmdsb2JhbFNjb3BlQ2hhaW4oKSkK
IHsKICAgICBBU1NFUlQoaW5oZXJpdHMoJnNfaW5mbykpOwotICAgIAotICAgIC8vIENhbid0IGRv
IHRoaXMgZHVyaW5nIGluaXRpYWxpemF0aW9uIGJlY2F1c2UgZ2V0SG9zdEZ1bmN0aW9uIG1pZ2h0
IGRvIGEgR0MgYWxsb2NhdGlvbi4KLSAgICBtX2V4ZWN1dGFibGUuc2V0KGV4ZWMtPmdsb2JhbERh
dGEoKSwgdGhpcywgZXhlYy0+Z2xvYmFsRGF0YSgpLmdldEhvc3RGdW5jdGlvbihmdW5jKSk7Ci0g
ICAgCi0gICAgcHV0RGlyZWN0KGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+Z2xvYmFsRGF0YSgp
LnByb3BlcnR5TmFtZXMtPm5hbWUsIGpzU3RyaW5nKGV4ZWMsIG5hbWUuaXNOdWxsKCkgPyAiIiA6
IG5hbWUudXN0cmluZygpKSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5IHwgRG9udEVudW0pOwotICAg
IHB1dERpcmVjdChleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5sZW5n
dGgsIGpzTnVtYmVyKGxlbmd0aCksIERvbnREZWxldGUgfCBSZWFkT25seSB8IERvbnRFbnVtKTsK
IH0KIAogSlNGdW5jdGlvbjo6SlNGdW5jdGlvbihFeGVjU3RhdGUqIGV4ZWMsIEZ1bmN0aW9uRXhl
Y3V0YWJsZSogZXhlY3V0YWJsZSwgU2NvcGVDaGFpbk5vZGUqIHNjb3BlQ2hhaW5Ob2RlKQpAQCAt
OTAsOCArODIsMzIgQEAgSlNGdW5jdGlvbjo6SlNGdW5jdGlvbihFeGVjU3RhdGUqIGV4ZWMsCiAg
ICAgLCBtX3Njb3BlQ2hhaW4oZXhlYy0+Z2xvYmFsRGF0YSgpLCB0aGlzLCBzY29wZUNoYWluTm9k
ZSkKIHsKICAgICBBU1NFUlQoaW5oZXJpdHMoJnNfaW5mbykpOwotICAgIHNldFN0cnVjdHVyZShl
eGVjLT5nbG9iYWxEYXRhKCksIHNjb3BlQ2hhaW5Ob2RlLT5nbG9iYWxPYmplY3QtPm5hbWVkRnVu
Y3Rpb25TdHJ1Y3R1cmUoKSk7Ci0gICAgcHV0RGlyZWN0T2Zmc2V0KGV4ZWMtPmdsb2JhbERhdGEo
KSwgc2NvcGVDaGFpbk5vZGUtPmdsb2JhbE9iamVjdC0+ZnVuY3Rpb25OYW1lT2Zmc2V0KCksIGV4
ZWN1dGFibGUtPm5hbWVWYWx1ZSgpKTsKK30KKworSlNGdW5jdGlvbiogSlNGdW5jdGlvbjo6Y3Jl
YXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0
dXJlKiBzdHJ1Y3R1cmUsIGludCBsZW5ndGgsIGNvbnN0IElkZW50aWZpZXImIG5hbWUsIE5hdGl2
ZUZ1bmN0aW9uIG5hdGl2ZUZ1bmN0aW9uKQoreworICAgIEpTRnVuY3Rpb24qIGZ1bmN0aW9uID0g
bmV3IChhbGxvY2F0ZUNlbGw8SlNGdW5jdGlvbj4oKmV4ZWMtPmhlYXAoKSkpIEpTRnVuY3Rpb24o
ZXhlYywgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUpOworICAgIC8vIENhbid0IGRvIHRoaXMgZHVy
aW5nIGluaXRpYWxpemF0aW9uIGJlY2F1c2UgZ2V0SG9zdEZ1bmN0aW9uIG1pZ2h0IGRvIGEgR0Mg
YWxsb2NhdGlvbi4KKyAgICBmdW5jdGlvbi0+bV9leGVjdXRhYmxlLnNldChleGVjLT5nbG9iYWxE
YXRhKCksIGZ1bmN0aW9uLCBleGVjLT5nbG9iYWxEYXRhKCkuZ2V0SG9zdEZ1bmN0aW9uKG5hdGl2
ZUZ1bmN0aW9uKSk7CisgICAgZnVuY3Rpb24tPnB1dERpcmVjdChleGVjLT5nbG9iYWxEYXRhKCks
IGV4ZWMtPmdsb2JhbERhdGEoKS5wcm9wZXJ0eU5hbWVzLT5uYW1lLCBqc1N0cmluZyhleGVjLCBu
YW1lLmlzTnVsbCgpID8gIiIgOiBuYW1lLnVzdHJpbmcoKSksIERvbnREZWxldGUgfCBSZWFkT25s
eSB8IERvbnRFbnVtKTsKKyAgICBmdW5jdGlvbi0+cHV0RGlyZWN0KGV4ZWMtPmdsb2JhbERhdGEo
KSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLmxlbmd0aCwganNOdW1iZXIobGVuZ3RoKSwgRG9udERl
bGV0ZSB8IFJlYWRPbmx5IHwgRG9udEVudW0pOworICAgIHJldHVybiBmdW5jdGlvbjsKK30KKwor
SlNGdW5jdGlvbiogSlNGdW5jdGlvbjo6Y3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGludCBsZW5ndGgsIGNv
bnN0IElkZW50aWZpZXImIG5hbWUsIE5hdGl2ZUV4ZWN1dGFibGUqIG5hdGl2ZUV4ZWMpCit7Cisg
ICAgSlNGdW5jdGlvbiogZnVuY3Rpb24gPSBuZXcgKGFsbG9jYXRlQ2VsbDxKU0Z1bmN0aW9uPigq
ZXhlYy0+aGVhcCgpKSkgSlNGdW5jdGlvbihleGVjLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwg
bmF0aXZlRXhlYyk7CisgICAgZnVuY3Rpb24tPnB1dERpcmVjdChleGVjLT5nbG9iYWxEYXRhKCks
IGV4ZWMtPmdsb2JhbERhdGEoKS5wcm9wZXJ0eU5hbWVzLT5uYW1lLCBqc1N0cmluZyhleGVjLCBu
YW1lLmlzTnVsbCgpID8gIiIgOiBuYW1lLnVzdHJpbmcoKSksIERvbnREZWxldGUgfCBSZWFkT25s
eSB8IERvbnRFbnVtKTsKKyAgICBmdW5jdGlvbi0+cHV0RGlyZWN0KGV4ZWMtPmdsb2JhbERhdGEo
KSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLmxlbmd0aCwganNOdW1iZXIobGVuZ3RoKSwgRG9udERl
bGV0ZSB8IFJlYWRPbmx5IHwgRG9udEVudW0pOworICAgIHJldHVybiBmdW5jdGlvbjsKK30KKwor
SlNGdW5jdGlvbiogSlNGdW5jdGlvbjo6Y3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgRnVuY3Rpb25F
eGVjdXRhYmxlKiBleGVjdXRhYmxlLCBTY29wZUNoYWluTm9kZSogc2NvcGVDaGFpbikKK3sKKyAg
ICBKU0Z1bmN0aW9uKiBmdW5jdGlvbiA9IG5ldyAoYWxsb2NhdGVDZWxsPEpTRnVuY3Rpb24+KCpl
eGVjLT5oZWFwKCkpKSBKU0Z1bmN0aW9uKGV4ZWMsIGV4ZWN1dGFibGUsIHNjb3BlQ2hhaW4pOwor
ICAgIGZ1bmN0aW9uLT5zZXRTdHJ1Y3R1cmUoZXhlYy0+Z2xvYmFsRGF0YSgpLCBzY29wZUNoYWlu
LT5nbG9iYWxPYmplY3QtPm5hbWVkRnVuY3Rpb25TdHJ1Y3R1cmUoKSk7CisgICAgZnVuY3Rpb24t
PnB1dERpcmVjdE9mZnNldChleGVjLT5nbG9iYWxEYXRhKCksIHNjb3BlQ2hhaW4tPmdsb2JhbE9i
amVjdC0+ZnVuY3Rpb25OYW1lT2Zmc2V0KCksIGV4ZWN1dGFibGUtPm5hbWVWYWx1ZSgpKTsKKyAg
ICByZXR1cm4gZnVuY3Rpb247CiB9CiAKIEpTRnVuY3Rpb246On5KU0Z1bmN0aW9uKCkKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmgJKHJldmlzaW9uIDky
MzY1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yOSwxMSArMjksOSBAQAogbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFz
cyBFeGVjdXRhYmxlQmFzZTsKLSAgICBjbGFzcyBGdW5jdGlvbkV4ZWN1dGFibGU7CiAgICAgY2xh
c3MgRnVuY3Rpb25Qcm90b3R5cGU7CiAgICAgY2xhc3MgSlNBY3RpdmF0aW9uOwogICAgIGNsYXNz
IEpTR2xvYmFsT2JqZWN0OwotICAgIGNsYXNzIE5hdGl2ZUV4ZWN1dGFibGU7CiAgICAgY2xhc3Mg
VlB0ckhhY2tFeGVjdXRhYmxlOwogICAgIG5hbWVzcGFjZSBERkcgewogICAgIGNsYXNzIEpJVENv
ZGVHZW5lcmF0b3I7CkBAIC00OCwyMyArNDYsMTUgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAg
ICAgdHlwZWRlZiBKU09iamVjdFdpdGhHbG9iYWxPYmplY3QgQmFzZTsKIAotICAgICAgICBKU0Z1
bmN0aW9uKEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgaW50IGxlbmd0
aCwgY29uc3QgSWRlbnRpZmllciYsIE5hdGl2ZUZ1bmN0aW9uKTsKLSAgICAgICAgSlNGdW5jdGlv
bihFeGVjU3RhdGUqLCBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIGludCBsZW5ndGgsIGNv
bnN0IElkZW50aWZpZXImLCBOYXRpdmVFeGVjdXRhYmxlKik7CisgICAgcHJpdmF0ZToKKyAgICAg
ICAgSlNGdW5jdGlvbihFeGVjU3RhdGUqLCBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSopOwor
ICAgICAgICBKU0Z1bmN0aW9uKEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJl
KiwgTmF0aXZlRXhlY3V0YWJsZSopOwogICAgICAgICBKU0Z1bmN0aW9uKEV4ZWNTdGF0ZSosIEZ1
bmN0aW9uRXhlY3V0YWJsZSosIFNjb3BlQ2hhaW5Ob2RlKik7CiAgICAgICAgIAogICAgIHB1Ymxp
YzoKLSAgICAgICAgc3RhdGljIEpTRnVuY3Rpb24qIGNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBpbnQgbGVu
Z3RoLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgTmF0aXZlRnVuY3Rpb24gbmF0aXZlRnVuYykK
LSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIG5ldyAoYWxsb2NhdGVDZWxsPEpTRnVuY3Rp
b24+KCpleGVjLT5oZWFwKCkpKSBKU0Z1bmN0aW9uKGV4ZWMsIGdsb2JhbE9iamVjdCwgc3RydWN0
dXJlLCBsZW5ndGgsIGlkZW50LCBuYXRpdmVGdW5jKTsKLSAgICAgICAgfQotICAgICAgICBzdGF0
aWMgSlNGdW5jdGlvbiogY3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGludCBsZW5ndGgsIGNvbnN0IElkZW50
aWZpZXImIGlkZW50LCBOYXRpdmVFeGVjdXRhYmxlKiBuYXRpdmVFeGVjKQotICAgICAgICB7Ci0g
ICAgICAgICAgICByZXR1cm4gbmV3IChhbGxvY2F0ZUNlbGw8SlNGdW5jdGlvbj4oKmV4ZWMtPmhl
YXAoKSkpIEpTRnVuY3Rpb24oZXhlYywgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIGxlbmd0aCwg
aWRlbnQsIG5hdGl2ZUV4ZWMpOwotICAgICAgICB9Ci0gICAgICAgIHN0YXRpYyBKU0Z1bmN0aW9u
KiBjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBGdW5jdGlvbkV4ZWN1dGFibGUqIGZ1bmNFeGVjLCBT
Y29wZUNoYWluTm9kZSogc2NvcGVDaGFpbikKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJu
IG5ldyAoYWxsb2NhdGVDZWxsPEpTRnVuY3Rpb24+KCpleGVjLT5oZWFwKCkpKSBKU0Z1bmN0aW9u
KGV4ZWMsIGZ1bmNFeGVjLCBzY29wZUNoYWluKTsKLSAgICAgICAgfQorICAgICAgICBzdGF0aWMg
SlNGdW5jdGlvbiogY3JlYXRlKEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJl
KiwgaW50IGxlbmd0aCwgY29uc3QgSWRlbnRpZmllciYgbmFtZSwgTmF0aXZlRnVuY3Rpb24pOwor
ICAgICAgICBzdGF0aWMgSlNGdW5jdGlvbiogY3JlYXRlKEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2Jq
ZWN0KiwgU3RydWN0dXJlKiwgaW50IGxlbmd0aCwgY29uc3QgSWRlbnRpZmllciYgbmFtZSwgTmF0
aXZlRXhlY3V0YWJsZSopOworICAgICAgICBzdGF0aWMgSlNGdW5jdGlvbiogY3JlYXRlKEV4ZWNT
dGF0ZSosIEZ1bmN0aW9uRXhlY3V0YWJsZSogZnVuY0V4ZWMsIFNjb3BlQ2hhaW5Ob2RlKik7CiAg
ICAgICAgIAogICAgICAgICB2aXJ0dWFsIH5KU0Z1bmN0aW9uKCk7CiAKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAkocmV2aXNpb24gOTIz
NjUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xNDQsNyArMTQ0LDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgcHVi
bGljOgogICAgICAgICBzdGF0aWMgSlNHbG9iYWxPYmplY3QqIGNyZWF0ZShKU0dsb2JhbERhdGEm
IGdsb2JhbERhdGEsIFN0cnVjdHVyZSogc3RydWN0dXJlKQogICAgICAgICB7Ci0gICAgICAgICAg
ICByZXR1cm4gbmV3IChhbGxvY2F0ZUNlbGw8SlNHbG9iYWxPYmplY3Q+KGdsb2JhbERhdGEuaGVh
cCkpIEpTR2xvYmFsT2JqZWN0KGdsb2JhbERhdGEsIHN0cnVjdHVyZSk7CisgICAgICAgICAgICBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbmV3IChhbGxvY2F0ZUNlbGw8SlNHbG9iYWxP
YmplY3Q+KGdsb2JhbERhdGEuaGVhcCkpIEpTR2xvYmFsT2JqZWN0KGdsb2JhbERhdGEsIHN0cnVj
dHVyZSk7CisgICAgICAgICAgICBnbG9iYWxPYmplY3QtPmluaXQoZ2xvYmFsT2JqZWN0KTsKKyAg
ICAgICAgICAgIHJldHVybiBnbG9iYWxPYmplY3Q7CiAgICAgICAgIH0KIAogICAgICAgICBzdGF0
aWMgSlNfRVhQT1JUREFUQSBjb25zdCBDbGFzc0luZm8gc19pbmZvOwpAQCAtMTU5LDcgKzE2MSw2
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB7CiAgICAgICAgICAgICBDT01QSUxFX0FTU0VS
VChKU0dsb2JhbE9iamVjdDo6QW5vbnltb3VzU2xvdENvdW50ID09IDEsIEpTR2xvYmFsT2JqZWN0
X2hhc19vbmx5X2Ffc2luZ2xlX3Nsb3QpOwogICAgICAgICAgICAgcHV0VGhpc1RvQW5vbnltb3Vz
VmFsdWUoMCk7Ci0gICAgICAgICAgICBpbml0KHRoaXMpOwogICAgICAgICB9CiAKICAgICAgICAg
SlNHbG9iYWxPYmplY3QoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSwgSlNPYmplY3QqIHRoaXNWYWx1ZSkKQEAgLTMxMiwxMCArMzEzLDExIEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgICAgICAgICAgdW5zaWduZWQgYXR0cmlidXRlczsKICAgICAgICAgfTsKICAg
ICAgICAgdm9pZCBhZGRTdGF0aWNHbG9iYWxzKEdsb2JhbFByb3BlcnR5SW5mbyosIGludCBjb3Vu
dCk7Ci0KLSAgICBwcml2YXRlOgorICAgICAgICAKICAgICAgICAgLy8gRklYTUU6IEZvbGQgcmVz
ZXQgaW50byBpbml0LgogICAgICAgICB2b2lkIGluaXQoSlNPYmplY3QqIHRoaXNWYWx1ZSk7CisK
KyAgICBwcml2YXRlOgogICAgICAgICB2b2lkIHJlc2V0KEpTVmFsdWUgcHJvdG90eXBlKTsKIAog
ICAgICAgICB2b2lkIHNldFJlZ2lzdGVycyhXcml0ZUJhcnJpZXI8VW5rbm93bj4qIHJlZ2lzdGVy
cywgUGFzc093bkFycmF5UHRyPFdyaXRlQmFycmllcjxVbmtub3duPiA+IHJlZ2lzdGVyQXJyYXks
IHNpemVfdCBjb3VudCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1By
b3BlcnR5TmFtZUl0ZXJhdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmNwcAkocmV2aXNpb24gOTIzNjUpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMzcsMTUgKzM3LDEyIEBAIEFTU0VSVF9DTEFTU19GSVRTX0lO
X0NFTEwoSlNQcm9wZXJ0eU5hbWUKIAogY29uc3QgQ2xhc3NJbmZvIEpTUHJvcGVydHlOYW1lSXRl
cmF0b3I6OnNfaW5mbyA9IHsgIkpTUHJvcGVydHlOYW1lSXRlcmF0b3IiLCAwLCAwLCAwIH07CiAK
LWlubGluZSBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yOjpKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yKEV4
ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lQXJyYXlEYXRhKiBwcm9wZXJ0eU5hbWVBcnJheURh
dGEsIHNpemVfdCBudW1DYWNoZWFibGVTbG90cykKK2lubGluZSBKU1Byb3BlcnR5TmFtZUl0ZXJh
dG9yOjpKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yKEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1l
QXJyYXlEYXRhOjpQcm9wZXJ0eU5hbWVWZWN0b3ImIHByb3BlcnR5TmFtZVZlY3Rvciwgc2l6ZV90
IG51bUNhY2hlYWJsZVNsb3RzKQogICAgIDogSlNDZWxsKGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhl
Yy0+Z2xvYmFsRGF0YSgpLnByb3BlcnR5TmFtZUl0ZXJhdG9yU3RydWN0dXJlLmdldCgpKQogICAg
ICwgbV9udW1DYWNoZWFibGVTbG90cyhudW1DYWNoZWFibGVTbG90cykKLSAgICAsIG1fanNTdHJp
bmdzU2l6ZShwcm9wZXJ0eU5hbWVBcnJheURhdGEtPnByb3BlcnR5TmFtZVZlY3RvcigpLnNpemUo
KSkKKyAgICAsIG1fanNTdHJpbmdzU2l6ZShwcm9wZXJ0eU5hbWVWZWN0b3Iuc2l6ZSgpKQogICAg
ICwgbV9qc1N0cmluZ3MoYWRvcHRBcnJheVB0cihuZXcgV3JpdGVCYXJyaWVyPFVua25vd24+W21f
anNTdHJpbmdzU2l6ZV0pKQogewotICAgIFByb3BlcnR5TmFtZUFycmF5RGF0YTo6UHJvcGVydHlO
YW1lVmVjdG9yJiBwcm9wZXJ0eU5hbWVWZWN0b3IgPSBwcm9wZXJ0eU5hbWVBcnJheURhdGEtPnBy
b3BlcnR5TmFtZVZlY3RvcigpOwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9qc1N0cmlu
Z3NTaXplOyArK2kpCi0gICAgICAgIG1fanNTdHJpbmdzW2ldLnNldChleGVjLT5nbG9iYWxEYXRh
KCksIHRoaXMsIGpzT3duZWRTdHJpbmcoZXhlYywgcHJvcGVydHlOYW1lVmVjdG9yW2ldLnVzdHJp
bmcoKSkpOwogfQogCiBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yKiBKU1Byb3BlcnR5TmFtZUl0ZXJh
dG9yOjpjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogbykKQEAgLTYyLDcgKzU5LDcg
QEAgSlNQcm9wZXJ0eU5hbWVJdGVyYXRvciogSlNQcm9wZXJ0eU5hbWVJdAogICAgICAgICAhby0+
c3RydWN0dXJlKCktPnR5cGVJbmZvKCkub3ZlcnJpZGVzR2V0UHJvcGVydHlOYW1lcygpKQogICAg
ICAgICBudW1DYWNoZWFibGVTbG90cyA9IG8tPnN0cnVjdHVyZSgpLT5wcm9wZXJ0eVN0b3JhZ2VT
aXplKCk7CiAgICAgCi0gICAgSlNQcm9wZXJ0eU5hbWVJdGVyYXRvcioganNQcm9wZXJ0eU5hbWVJ
dGVyYXRvciA9IG5ldyAoYWxsb2NhdGVDZWxsPEpTUHJvcGVydHlOYW1lSXRlcmF0b3I+KCpleGVj
LT5oZWFwKCkpKSBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yKGV4ZWMsIHByb3BlcnR5TmFtZXMuZGF0
YSgpLCBudW1DYWNoZWFibGVTbG90cyk7CisgICAgSlNQcm9wZXJ0eU5hbWVJdGVyYXRvcioganNQ
cm9wZXJ0eU5hbWVJdGVyYXRvciA9IGNyZWF0ZShleGVjLCBwcm9wZXJ0eU5hbWVzLmRhdGEoKSwg
bnVtQ2FjaGVhYmxlU2xvdHMpOwogCiAgICAgaWYgKG8tPnN0cnVjdHVyZSgpLT5pc0RpY3Rpb25h
cnkoKSkKICAgICAgICAgcmV0dXJuIGpzUHJvcGVydHlOYW1lSXRlcmF0b3I7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9wZXJ0eU5hbWVJdGVy
YXRvci5oCShyZXZpc2lvbiA5MjM2NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtNDYsNyArNDYsMTEg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHN0YXRpYyBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9y
KiBjcmVhdGUoRXhlY1N0YXRlKiwgSlNPYmplY3QqKTsKICAgICAgICAgc3RhdGljIEpTUHJvcGVy
dHlOYW1lSXRlcmF0b3IqIGNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZUFycmF5
RGF0YSogcHJvcGVydHlOYW1lQXJyYXlEYXRhLCBzaXplX3QgbnVtQ2FjaGVhYmxlU2xvdCkKICAg
ICAgICAgewotICAgICAgICAgICAgcmV0dXJuIG5ldyAoYWxsb2NhdGVDZWxsPEpTUHJvcGVydHlO
YW1lSXRlcmF0b3I+KCpleGVjLT5oZWFwKCkpKSBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yKGV4ZWMs
IHByb3BlcnR5TmFtZUFycmF5RGF0YSwgbnVtQ2FjaGVhYmxlU2xvdCk7CisgICAgICAgICAgICBQ
cm9wZXJ0eU5hbWVBcnJheURhdGE6OlByb3BlcnR5TmFtZVZlY3RvciYgcHJvcGVydHlOYW1lVmVj
dG9yID0gcHJvcGVydHlOYW1lQXJyYXlEYXRhLT5wcm9wZXJ0eU5hbWVWZWN0b3IoKTsKKyAgICAg
ICAgICAgIEpTUHJvcGVydHlOYW1lSXRlcmF0b3IqIGl0ZXJhdG9yID0gIG5ldyAoYWxsb2NhdGVD
ZWxsPEpTUHJvcGVydHlOYW1lSXRlcmF0b3I+KCpleGVjLT5oZWFwKCkpKSBKU1Byb3BlcnR5TmFt
ZUl0ZXJhdG9yKGV4ZWMsIHByb3BlcnR5TmFtZVZlY3RvciwgbnVtQ2FjaGVhYmxlU2xvdCk7Cisg
ICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGl0ZXJhdG9yLT5tX2pzU3RyaW5nc1Np
emU7ICsraSkKKyAgICAgICAgICAgICAgICBpdGVyYXRvci0+bV9qc1N0cmluZ3NbaV0uc2V0KGV4
ZWMtPmdsb2JhbERhdGEoKSwgaXRlcmF0b3IsIGpzT3duZWRTdHJpbmcoZXhlYywgcHJvcGVydHlO
YW1lVmVjdG9yW2ldLnVzdHJpbmcoKSkpOworICAgICAgICAgICAgcmV0dXJuIGl0ZXJhdG9yOwog
ICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1
Y3R1cmUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU1ZhbHVlIHByb3RvdHlwZSkKQEAgLTgz
LDcgKzg3LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHN0YXRpYyBjb25zdCBDbGFzc0lu
Zm8gc19pbmZvOwogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgSlNQcm9wZXJ0eU5hbWVJdGVyYXRv
cihFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWVBcnJheURhdGEqIHByb3BlcnR5TmFtZUFycmF5RGF0
YSwgc2l6ZV90IG51bUNhY2hlYWJsZVNsb3QpOworICAgICAgICBKU1Byb3BlcnR5TmFtZUl0ZXJh
dG9yKEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZUFycmF5RGF0YTo6UHJvcGVydHlOYW1lVmVjdG9y
Jiwgc2l6ZV90IG51bUNhY2hlYWJsZVNsb3QpOwogCiAgICAgICAgIFdyaXRlQmFycmllcjxTdHJ1
Y3R1cmU+IG1fY2FjaGVkU3RydWN0dXJlOwogICAgICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJl
Q2hhaW4+IG1fY2FjaGVkUHJvdG90eXBlQ2hhaW47CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9OYXRpdmVFcnJvckNvbnN0cnVjdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OYXRpdmVFcnJvckNvbnN0cnVjdG9yLmNwcAkocmV2
aXNpb24gOTIzNjUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OYXRpdmVFcnJv
ckNvbnN0cnVjdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzIsMTggKzMyLDI0IEBAIEFTU0VS
VF9DTEFTU19GSVRTX0lOX0NFTEwoTmF0aXZlRXJyb3JDb24KIAogY29uc3QgQ2xhc3NJbmZvIE5h
dGl2ZUVycm9yQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIkZ1bmN0aW9uIiwgJkludGVybmFsRnVu
Y3Rpb246OnNfaW5mbywgMCwgMCB9OwogCi1OYXRpdmVFcnJvckNvbnN0cnVjdG9yOjpOYXRpdmVF
cnJvckNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFN0cnVjdHVyZSogcHJvdG90eXBlU3RydWN0dXJl
LCBjb25zdCBVU3RyaW5nJiBuYW1lQW5kTWVzc2FnZSkKLSAgICA6IEludGVybmFsRnVuY3Rpb24o
JmV4ZWMtPmdsb2JhbERhdGEoKSwgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIElkZW50aWZpZXIo
ZXhlYywgbmFtZUFuZE1lc3NhZ2UpKQorTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvcjo6TmF0aXZlRXJy
b3JDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIFN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgIDogSW50ZXJuYWxGdW5jdGlvbihnbG9iYWxP
YmplY3QsIHN0cnVjdHVyZSkKIHsKICAgICBBU1NFUlQoaW5oZXJpdHMoJnNfaW5mbykpOworICAg
IG1fZXJyb3JTdHJ1Y3R1cmUuc2V0TWF5QmVOdWxsKGV4ZWMtPmdsb2JhbERhdGEoKSwgdGhpcywg
MCk7Cit9CiAKLSAgICBOYXRpdmVFcnJvclByb3RvdHlwZSogcHJvdG90eXBlID0gTmF0aXZlRXJy
b3JQcm90b3R5cGU6OmNyZWF0ZShleGVjLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZVN0cnVjdHVy
ZSwgbmFtZUFuZE1lc3NhZ2UsIHRoaXMpOwotCi0gICAgcHV0RGlyZWN0KGV4ZWMtPmdsb2JhbERh
dGEoKSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLmxlbmd0aCwganNOdW1iZXIoMSksIERvbnREZWxl
dGUgfCBSZWFkT25seSB8IERvbnRFbnVtKTsgLy8gRUNNQSAxNS4xMS43LjUKLSAgICBwdXREaXJl
Y3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkucHJvdG90eXBlLCBw
cm90b3R5cGUsIERvbnREZWxldGUgfCBSZWFkT25seSB8IERvbnRFbnVtKTsKLSAgICBtX2Vycm9y
U3RydWN0dXJlLnNldChleGVjLT5nbG9iYWxEYXRhKCksIHRoaXMsIEVycm9ySW5zdGFuY2U6OmNy
ZWF0ZVN0cnVjdHVyZShleGVjLT5nbG9iYWxEYXRhKCksIHByb3RvdHlwZSkpOwotICAgIEFTU0VS
VChtX2Vycm9yU3RydWN0dXJlKTsKLSAgICBBU1NFUlQobV9lcnJvclN0cnVjdHVyZS0+dHlwZUlu
Zm8oKS50eXBlKCkgPT0gT2JqZWN0VHlwZSk7CitOYXRpdmVFcnJvckNvbnN0cnVjdG9yKiBOYXRp
dmVFcnJvckNvbnN0cnVjdG9yOjpjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgU3RydWN0dXJlKiBwcm90b3R5
cGVTdHJ1Y3R1cmUsIGNvbnN0IFVTdHJpbmcmIG5hbWVBbmRNZXNzYWdlKQoreworICAgIE5hdGl2
ZUVycm9yQ29uc3RydWN0b3IqIGNvbnN0cnVjdG9yID0gbmV3IChhbGxvY2F0ZUNlbGw8TmF0aXZl
RXJyb3JDb25zdHJ1Y3Rvcj4oKmV4ZWMtPmhlYXAoKSkpIE5hdGl2ZUVycm9yQ29uc3RydWN0b3Io
ZXhlYywgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUpOworICAgIE5hdGl2ZUVycm9yUHJvdG90eXBl
KiBwcm90b3R5cGUgPSBOYXRpdmVFcnJvclByb3RvdHlwZTo6Y3JlYXRlKGV4ZWMsIGdsb2JhbE9i
amVjdCwgcHJvdG90eXBlU3RydWN0dXJlLCBuYW1lQW5kTWVzc2FnZSwgY29uc3RydWN0b3IpOwor
ICAgIGNvbnN0cnVjdG9yLT5wdXREaXJlY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5wcm9w
ZXJ0eU5hbWVzKCkubGVuZ3RoLCBqc051bWJlcigxKSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5IHwg
RG9udEVudW0pOyAvLyBFQ01BIDE1LjExLjcuNQorICAgIGNvbnN0cnVjdG9yLT5wdXREaXJlY3Qo
ZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkucHJvdG90eXBlLCBwcm90
b3R5cGUsIERvbnREZWxldGUgfCBSZWFkT25seSB8IERvbnRFbnVtKTsKKyAgICBjb25zdHJ1Y3Rv
ci0+bV9lcnJvclN0cnVjdHVyZS5zZXQoZXhlYy0+Z2xvYmFsRGF0YSgpLCBjb25zdHJ1Y3Rvciwg
RXJyb3JJbnN0YW5jZTo6Y3JlYXRlU3RydWN0dXJlKGV4ZWMtPmdsb2JhbERhdGEoKSwgcHJvdG90
eXBlKSk7CisgICAgY29uc3RydWN0b3ItPmluaXRQcm9wZXJ0aWVzKGV4ZWMtPmdsb2JhbERhdGEo
KSwgSWRlbnRpZmllcihleGVjLCBuYW1lQW5kTWVzc2FnZSkpOworICAgIEFTU0VSVChjb25zdHJ1
Y3Rvci0+bV9lcnJvclN0cnVjdHVyZSk7CisgICAgQVNTRVJUKGNvbnN0cnVjdG9yLT5tX2Vycm9y
U3RydWN0dXJlLT50eXBlSW5mbygpLnR5cGUoKSA9PSBPYmplY3RUeXBlKTsKKyAgICByZXR1cm4g
Y29uc3RydWN0b3I7CiB9CiAKIHZvaWQgTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvcjo6dmlzaXRDaGls
ZHJlbihTbG90VmlzaXRvciYgdmlzaXRvcikKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL05hdGl2ZUVycm9yQ29uc3RydWN0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9OYXRpdmVFcnJvckNvbnN0cnVjdG9yLmgJKHJldmlzaW9uIDky
MzY1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZlRXJyb3JDb25zdHJ1
Y3Rvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMCwxNCArMzAsOCBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICBjbGFzcyBOYXRpdmVFcnJvclByb3RvdHlwZTsKIAogICAgIGNsYXNzIE5hdGl2ZUVycm9y
Q29uc3RydWN0b3IgOiBwdWJsaWMgSW50ZXJuYWxGdW5jdGlvbiB7Ci0gICAgcHJpdmF0ZToKLSAg
ICAgICAgTmF0aXZlRXJyb3JDb25zdHJ1Y3RvcihFeGVjU3RhdGUqLCBKU0dsb2JhbE9iamVjdCos
IFN0cnVjdHVyZSosIFN0cnVjdHVyZSogcHJvdG90eXBlU3RydWN0dXJlLCBjb25zdCBVU3RyaW5n
Jik7Ci0KICAgICBwdWJsaWM6Ci0gICAgICAgIHN0YXRpYyBOYXRpdmVFcnJvckNvbnN0cnVjdG9y
KiBjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSwgU3RydWN0dXJlKiBwcm90b3R5cGVTdHJ1Y3R1cmUsIGNvbnN0
IFVTdHJpbmcmIG5hbWVBbmRNZXNzYWdlKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4g
bmV3IChhbGxvY2F0ZUNlbGw8TmF0aXZlRXJyb3JDb25zdHJ1Y3Rvcj4oKmV4ZWMtPmhlYXAoKSkp
IE5hdGl2ZUVycm9yQ29uc3RydWN0b3IoZXhlYywgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIHBy
b3RvdHlwZVN0cnVjdHVyZSwgbmFtZUFuZE1lc3NhZ2UpOwotICAgICAgICB9CisgICAgICAgIHN0
YXRpYyBOYXRpdmVFcnJvckNvbnN0cnVjdG9yKiBjcmVhdGUoRXhlY1N0YXRlKiwgSlNHbG9iYWxP
YmplY3QqLCBTdHJ1Y3R1cmUqLCBTdHJ1Y3R1cmUqIHByb3RvdHlwZVN0cnVjdHVyZSwgY29uc3Qg
VVN0cmluZyYgbmFtZUFuZE1lc3NhZ2UpOwogICAgICAgICAKICAgICAgICAgc3RhdGljIGNvbnN0
IENsYXNzSW5mbyBzX2luZm87CiAKQEAgLTQ5LDYgKzQzLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgICAgIFN0cnVjdHVyZSogZXJyb3JTdHJ1Y3R1cmUoKSB7IHJldHVybiBtX2Vycm9yU3RydWN0
dXJlLmdldCgpOyB9CiAKICAgICBwcml2YXRlOgorICAgICAgICBOYXRpdmVFcnJvckNvbnN0cnVj
dG9yKEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKik7CiAgICAgICAgIHN0
YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IE92ZXJyaWRlc1Zpc2l0Q2hpbGRy
ZW4gfCBJbnRlcm5hbEZ1bmN0aW9uOjpTdHJ1Y3R1cmVGbGFnczsKICAgICAgICAgdmlydHVhbCBD
b25zdHJ1Y3RUeXBlIGdldENvbnN0cnVjdERhdGEoQ29uc3RydWN0RGF0YSYpOwogICAgICAgICB2
aXJ0dWFsIENhbGxUeXBlIGdldENhbGxEYXRhKENhbGxEYXRhJik7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9OYXRpdmVFcnJvclByb3RvdHlwZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZlRXJyb3JQcm90b3R5cGUuY3Bw
CShyZXZpc2lvbiA5MjM2NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05hdGl2
ZUVycm9yUHJvdG90eXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjIsMjAgKzIyLDE0IEBACiAj
aW5jbHVkZSAiTmF0aXZlRXJyb3JQcm90b3R5cGUuaCIKIAogI2luY2x1ZGUgIkpTR2xvYmFsT2Jq
ZWN0LmgiCi0jaW5jbHVkZSAiSlNTdHJpbmcuaCIKLSNpbmNsdWRlICJOYXRpdmVFcnJvckNvbnN0
cnVjdG9yLmgiCi0jaW5jbHVkZSAiVVN0cmluZy5oIgogCiBuYW1lc3BhY2UgSlNDIHsKIAogQVNT
RVJUX0NMQVNTX0ZJVFNfSU5fQ0VMTChOYXRpdmVFcnJvclByb3RvdHlwZSk7CiAKLU5hdGl2ZUVy
cm9yUHJvdG90eXBlOjpOYXRpdmVFcnJvclByb3RvdHlwZShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBjb25zdCBVU3Ry
aW5nJiBuYW1lQW5kTWVzc2FnZSwgTmF0aXZlRXJyb3JDb25zdHJ1Y3RvciogY29uc3RydWN0b3Ip
CitOYXRpdmVFcnJvclByb3RvdHlwZTo6TmF0aXZlRXJyb3JQcm90b3R5cGUoRXhlY1N0YXRlKiBl
eGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkK
ICAgICA6IEVycm9yUHJvdG90eXBlKGV4ZWMsIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlKQogewot
ICAgIHB1dERpcmVjdChleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5u
YW1lLCBqc1N0cmluZyhleGVjLCBuYW1lQW5kTWVzc2FnZSksIERvbnRFbnVtKTsKLSAgICBwdXRE
aXJlY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkubWVzc2FnZSwg
anNTdHJpbmcoZXhlYywgbmFtZUFuZE1lc3NhZ2UpLCBEb250RW51bSk7Ci0gICAgcHV0RGlyZWN0
KGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLmNvbnN0cnVjdG9yLCBj
b25zdHJ1Y3RvciwgRG9udEVudW0pOwogfQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05hdGl2ZUVycm9yUHJvdG90eXBlLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZlRXJyb3JQcm90b3R5
cGUuaAkocmV2aXNpb24gOTIzNjUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9O
YXRpdmVFcnJvclByb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMiwxOCArMjIsMjIgQEAK
ICNkZWZpbmUgTmF0aXZlRXJyb3JQcm90b3R5cGVfaAogCiAjaW5jbHVkZSAiRXJyb3JQcm90b3R5
cGUuaCIKKyNpbmNsdWRlICJOYXRpdmVFcnJvckNvbnN0cnVjdG9yLmgiCiAKIG5hbWVzcGFjZSBK
U0MgewotICAgIGNsYXNzIE5hdGl2ZUVycm9yQ29uc3RydWN0b3I7CiAKICAgICBjbGFzcyBOYXRp
dmVFcnJvclByb3RvdHlwZSA6IHB1YmxpYyBFcnJvclByb3RvdHlwZSB7CiAgICAgcHJpdmF0ZToK
LSAgICAgICAgTmF0aXZlRXJyb3JQcm90b3R5cGUoRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3Qq
LCBTdHJ1Y3R1cmUqLCBjb25zdCBVU3RyaW5nJiwgTmF0aXZlRXJyb3JDb25zdHJ1Y3RvciopOwor
ICAgICAgICBOYXRpdmVFcnJvclByb3RvdHlwZShFeGVjU3RhdGUqLCBKU0dsb2JhbE9iamVjdCos
IFN0cnVjdHVyZSopOwogICAgIAogICAgIHB1YmxpYzoKICAgICAgICAgc3RhdGljIE5hdGl2ZUVy
cm9yUHJvdG90eXBlKiBjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgY29uc3QgVVN0cmluZyYgbmFtZUFuZE1l
c3NhZ2UsIE5hdGl2ZUVycm9yQ29uc3RydWN0b3IqIGNvbnN0cnVjdG9yKQogICAgICAgICB7Ci0g
ICAgICAgICAgICByZXR1cm4gbmV3IChhbGxvY2F0ZUNlbGw8TmF0aXZlRXJyb3JQcm90b3R5cGU+
KCpleGVjLT5oZWFwKCkpKSBOYXRpdmVFcnJvclByb3RvdHlwZShleGVjLCBnbG9iYWxPYmplY3Qs
IHN0cnVjdHVyZSwgbmFtZUFuZE1lc3NhZ2UsIGNvbnN0cnVjdG9yKTsKKyAgICAgICAgICAgIE5h
dGl2ZUVycm9yUHJvdG90eXBlKiBwcm90b3R5cGUgPSBuZXcgKGFsbG9jYXRlQ2VsbDxOYXRpdmVF
cnJvclByb3RvdHlwZT4oKmV4ZWMtPmhlYXAoKSkpIE5hdGl2ZUVycm9yUHJvdG90eXBlKGV4ZWMs
IGdsb2JhbE9iamVjdCwgc3RydWN0dXJlKTsKKyAgICAgICAgICAgIHByb3RvdHlwZS0+cHV0RGly
ZWN0KGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLm5hbWUsIGpzU3Ry
aW5nKGV4ZWMsIG5hbWVBbmRNZXNzYWdlKSwgRG9udEVudW0pOworICAgICAgICAgICAgcHJvdG90
eXBlLT5wdXREaXJlY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCku
bWVzc2FnZSwganNTdHJpbmcoZXhlYywgbmFtZUFuZE1lc3NhZ2UpLCBEb250RW51bSk7CisgICAg
ICAgICAgICBwcm90b3R5cGUtPnB1dERpcmVjdChleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPnBy
b3BlcnR5TmFtZXMoKS5jb25zdHJ1Y3RvciwgY29uc3RydWN0b3IsIERvbnRFbnVtKTsKKyAgICAg
ICAgICAgIHJldHVybiBwcm90b3R5cGU7CiAgICAgICAgIH0KICAgICB9OwogCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OdW1iZXJDb25zdHJ1Y3Rvci5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVtYmVyQ29uc3RydWN0b3IuY3Bw
CShyZXZpc2lvbiA5MjM2NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051bWJl
ckNvbnN0cnVjdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTUsNyArNTUsNyBAQCBjb25zdCBD
bGFzc0luZm8gTnVtYmVyQ29uc3RydWN0b3I6OnNfaW5mCiAqLwogCiBOdW1iZXJDb25zdHJ1Y3Rv
cjo6TnVtYmVyQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgTnVtYmVyUHJvdG90eXBlKiBudW1iZXJQ
cm90b3R5cGUpCi0gICAgOiBJbnRlcm5hbEZ1bmN0aW9uKCZleGVjLT5nbG9iYWxEYXRhKCksIGds
b2JhbE9iamVjdCwgc3RydWN0dXJlLCBJZGVudGlmaWVyKGV4ZWMsIG51bWJlclByb3RvdHlwZS0+
c19pbmZvLmNsYXNzTmFtZSkpCisgICAgOiBJbnRlcm5hbEZ1bmN0aW9uKGdsb2JhbE9iamVjdCwg
c3RydWN0dXJlKQogewogICAgIEFTU0VSVChpbmhlcml0cygmc19pbmZvKSk7CiAKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051bWJlckNvbnN0cnVjdG9yLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVtYmVyQ29uc3RydWN0b3IuaAko
cmV2aXNpb24gOTIzNjUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OdW1iZXJD
b25zdHJ1Y3Rvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMiwxOSArMjIsMjAgQEAKICNkZWZpbmUg
TnVtYmVyQ29uc3RydWN0b3JfaAogCiAjaW5jbHVkZSAiSW50ZXJuYWxGdW5jdGlvbi5oIgorI2lu
Y2x1ZGUgIk51bWJlclByb3RvdHlwZS5oIgogCiBuYW1lc3BhY2UgSlNDIHsKIAotICAgIGNsYXNz
IE51bWJlclByb3RvdHlwZTsKLQogICAgIGNsYXNzIE51bWJlckNvbnN0cnVjdG9yIDogcHVibGlj
IEludGVybmFsRnVuY3Rpb24gewogICAgIHByaXZhdGU6CiAgICAgICAgIE51bWJlckNvbnN0cnVj
dG9yKEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgTnVtYmVyUHJvdG90
eXBlKik7CiAgICAgICAgIAogICAgIHB1YmxpYzoKLSAgICAgICAgc3RhdGljIE51bWJlckNvbnN0
cnVjdG9yKiBjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgTnVtYmVyUHJvdG90eXBlKiBudW1Qcm90b3R5cGUp
CisgICAgICAgIHN0YXRpYyBOdW1iZXJDb25zdHJ1Y3RvciogY3JlYXRlKEV4ZWNTdGF0ZSogZXhl
YywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIE51
bWJlclByb3RvdHlwZSogbnVtYmVyUHJvdG90eXBlKQogICAgICAgICB7Ci0gICAgICAgICAgICBy
ZXR1cm4gbmV3IChhbGxvY2F0ZUNlbGw8TnVtYmVyQ29uc3RydWN0b3I+KCpleGVjLT5oZWFwKCkp
KSBOdW1iZXJDb25zdHJ1Y3RvcihleGVjLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgbnVtUHJv
dG90eXBlKTsKKyAgICAgICAgICAgIE51bWJlckNvbnN0cnVjdG9yKiBjb25zdHJ1Y3RvciA9IG5l
dyAoYWxsb2NhdGVDZWxsPE51bWJlckNvbnN0cnVjdG9yPigqZXhlYy0+aGVhcCgpKSkgTnVtYmVy
Q29uc3RydWN0b3IoZXhlYywgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIG51bWJlclByb3RvdHlw
ZSk7CisgICAgICAgICAgICBjb25zdHJ1Y3Rvci0+aW5pdFByb3BlcnRpZXMoZXhlYy0+Z2xvYmFs
RGF0YSgpLCBJZGVudGlmaWVyKGV4ZWMsIG51bWJlclByb3RvdHlwZS0+c19pbmZvLmNsYXNzTmFt
ZSkpOworICAgICAgICAgICAgcmV0dXJuIGNvbnN0cnVjdG9yOwogICAgICAgICB9CiAKICAgICAg
ICAgdmlydHVhbCBib29sIGdldE93blByb3BlcnR5U2xvdChFeGVjU3RhdGUqLCBjb25zdCBJZGVu
dGlmaWVyJiwgUHJvcGVydHlTbG90Jik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9PYmplY3RDb25zdHJ1Y3Rvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuY3BwCShyZXZpc2lvbiA5MjM2NSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdENvbnN0cnVjdG9yLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNzYsNyArNzYsNyBAQCBjb25zdCBDbGFzc0luZm8gT2JqZWN0Q29uc3Ry
dWN0b3I6OnNfaW5mCiAqLwogCiBPYmplY3RDb25zdHJ1Y3Rvcjo6T2JqZWN0Q29uc3RydWN0b3Io
RXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSwgT2JqZWN0UHJvdG90eXBlKiBvYmplY3RQcm90b3R5cGUpCi0gICAgOiBJbnRl
cm5hbEZ1bmN0aW9uKCZleGVjLT5nbG9iYWxEYXRhKCksIGdsb2JhbE9iamVjdCwgc3RydWN0dXJl
LCBJZGVudGlmaWVyKGV4ZWMsICJPYmplY3QiKSkKKyAgICA6IEludGVybmFsRnVuY3Rpb24oZ2xv
YmFsT2JqZWN0LCBzdHJ1Y3R1cmUpCiB7CiAgICAgLy8gRUNNQSAxNS4yLjMuMQogICAgIHB1dERp
cmVjdFdpdGhvdXRUcmFuc2l0aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+cHJvcGVydHlO
YW1lcygpLnByb3RvdHlwZSwgb2JqZWN0UHJvdG90eXBlLCBEb250RW51bSB8IERvbnREZWxldGUg
fCBSZWFkT25seSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RD
b25zdHJ1Y3Rvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L09iamVjdENvbnN0cnVjdG9yLmgJKHJldmlzaW9uIDkyMzY1KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtMzQs
NyArMzQsOSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBwdWJsaWM6CiAgICAgICAgIHN0YXRpYyBP
YmplY3RDb25zdHJ1Y3RvciogY3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIE9iamVjdFByb3RvdHlwZSogb2Jq
UHJvdG90eXBlKQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gbmV3IChhbGxvY2F0ZUNl
bGw8T2JqZWN0Q29uc3RydWN0b3I+KCpleGVjLT5oZWFwKCkpKSBPYmplY3RDb25zdHJ1Y3Rvcihl
eGVjLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgb2JqUHJvdG90eXBlKTsKKyAgICAgICAgICAg
IE9iamVjdENvbnN0cnVjdG9yKiBjb25zdHJ1Y3RvciA9IG5ldyAoYWxsb2NhdGVDZWxsPE9iamVj
dENvbnN0cnVjdG9yPigqZXhlYy0+aGVhcCgpKSkgT2JqZWN0Q29uc3RydWN0b3IoZXhlYywgZ2xv
YmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIG9ialByb3RvdHlwZSk7CisgICAgICAgICAgICBjb25zdHJ1
Y3Rvci0+aW5pdFByb3BlcnRpZXMoZXhlYy0+Z2xvYmFsRGF0YSgpLCBJZGVudGlmaWVyKGV4ZWMs
ICJPYmplY3QiKSk7CisgICAgICAgICAgICByZXR1cm4gY29uc3RydWN0b3I7CiAgICAgICAgIH0K
IAogICAgICAgICB2aXJ0dWFsIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEV4ZWNTdGF0ZSosIGNv
bnN0IElkZW50aWZpZXImLCBQcm9wZXJ0eVNsb3QmKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1JlZ0V4cENvbnN0cnVjdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBDb25zdHJ1Y3Rvci5jcHAJKHJldmlzaW9uIDky
MzY1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwQ29uc3RydWN0b3Iu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC05Niw3ICs5Niw3IEBAIGNvbnN0IENsYXNzSW5mbyBSZWdF
eHBDb25zdHJ1Y3Rvcjo6c19pbmYKICovCiAKIFJlZ0V4cENvbnN0cnVjdG9yOjpSZWdFeHBDb25z
dHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0
cnVjdHVyZSogc3RydWN0dXJlLCBSZWdFeHBQcm90b3R5cGUqIHJlZ0V4cFByb3RvdHlwZSkKLSAg
ICA6IEludGVybmFsRnVuY3Rpb24oJmV4ZWMtPmdsb2JhbERhdGEoKSwgZ2xvYmFsT2JqZWN0LCBz
dHJ1Y3R1cmUsIElkZW50aWZpZXIoZXhlYywgIlJlZ0V4cCIpKQorICAgIDogSW50ZXJuYWxGdW5j
dGlvbihnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSkKICAgICAsIGQoYWRvcHRQdHIobmV3IFJlZ0V4
cENvbnN0cnVjdG9yUHJpdmF0ZSkpCiB7CiAgICAgQVNTRVJUKGluaGVyaXRzKCZzX2luZm8pKTsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cENvbnN0cnVjdG9yLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwQ29uc3Ry
dWN0b3IuaAkocmV2aXNpb24gOTIzNjUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9SZWdFeHBDb25zdHJ1Y3Rvci5oCSh3b3JraW5nIGNvcHkpCkBAIC02Miw3ICs2Miw5IEBAIG5h
bWVzcGFjZSBKU0MgewogICAgIHB1YmxpYzoKICAgICAgICAgc3RhdGljIFJlZ0V4cENvbnN0cnVj
dG9yKiBjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUmVnRXhwUHJvdG90eXBlKiByZWdFeHBQcm90b3R5cGUp
CiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBuZXcgKGFsbG9jYXRlQ2VsbDxSZWdFeHBD
b25zdHJ1Y3Rvcj4oKmV4ZWMtPmhlYXAoKSkpIFJlZ0V4cENvbnN0cnVjdG9yKGV4ZWMsIGdsb2Jh
bE9iamVjdCwgc3RydWN0dXJlLCByZWdFeHBQcm90b3R5cGUpOworICAgICAgICAgICAgUmVnRXhw
Q29uc3RydWN0b3IqIGNvbnN0cnVjdG9yID0gbmV3IChhbGxvY2F0ZUNlbGw8UmVnRXhwQ29uc3Ry
dWN0b3I+KCpleGVjLT5oZWFwKCkpKSBSZWdFeHBDb25zdHJ1Y3RvcihleGVjLCBnbG9iYWxPYmpl
Y3QsIHN0cnVjdHVyZSwgcmVnRXhwUHJvdG90eXBlKTsKKyAgICAgICAgICAgIGNvbnN0cnVjdG9y
LT5pbml0UHJvcGVydGllcyhleGVjLT5nbG9iYWxEYXRhKCksIElkZW50aWZpZXIoZXhlYywgIlJl
Z0V4cCIpKTsKKyAgICAgICAgICAgIHJldHVybiBjb25zdHJ1Y3RvcjsKICAgICAgICAgfQogCiAg
ICAgICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0dsb2JhbERhdGEmIGds
b2JhbERhdGEsIEpTVmFsdWUgcHJvdG90eXBlKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvUmVnRXhwTWF0Y2hlc0FycmF5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwTWF0Y2hlc0FycmF5LmgJKHJldmlzaW9uIDkyMzY1KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwTWF0Y2hlc0FycmF5LmgJKHdv
cmtpbmcgY29weSkKQEAgLTI1LDkgKzI1LDYgQEAKIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xh
c3MgUmVnRXhwTWF0Y2hlc0FycmF5IDogcHVibGljIEpTQXJyYXkgewotICAgIHByaXZhdGU6Ci0g
ICAgICAgIFJlZ0V4cE1hdGNoZXNBcnJheShFeGVjU3RhdGUqLCBSZWdFeHBDb25zdHJ1Y3RvclBy
aXZhdGUqKTsKLQogICAgIHB1YmxpYzoKICAgICAgICAgc3RhdGljIFJlZ0V4cE1hdGNoZXNBcnJh
eSogY3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgUmVnRXhwQ29uc3RydWN0b3JQcml2YXRlKiBjdG9y
UHJpdmF0ZSkKICAgICAgICAgewpAQCAtMzYsNiArMzMsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICAgICAgdmlydHVhbCB+UmVnRXhwTWF0Y2hlc0FycmF5KCk7CiAKICAgICBwcml2YXRlOgorICAg
ICAgICBSZWdFeHBNYXRjaGVzQXJyYXkoRXhlY1N0YXRlKiwgUmVnRXhwQ29uc3RydWN0b3JQcml2
YXRlKik7CiAgICAgICAgIHZpcnR1YWwgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoRXhlY1N0YXRl
KiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xv
dCkKICAgICAgICAgewogICAgICAgICAgICAgaWYgKHN1YmNsYXNzRGF0YSgpKQpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nQ29uc3RydWN0b3IuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ0NvbnN0cnVjdG9yLmNw
cAkocmV2aXNpb24gOTIzNjUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJp
bmdDb25zdHJ1Y3Rvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDcgKzQ4LDcgQEAgY29uc3Qg
Q2xhc3NJbmZvIFN0cmluZ0NvbnN0cnVjdG9yOjpzX2luZgogQVNTRVJUX0NMQVNTX0ZJVFNfSU5f
Q0VMTChTdHJpbmdDb25zdHJ1Y3Rvcik7CiAKIFN0cmluZ0NvbnN0cnVjdG9yOjpTdHJpbmdDb25z
dHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0
cnVjdHVyZSogc3RydWN0dXJlLCBTdHJpbmdQcm90b3R5cGUqIHN0cmluZ1Byb3RvdHlwZSkKLSAg
ICA6IEludGVybmFsRnVuY3Rpb24oJmV4ZWMtPmdsb2JhbERhdGEoKSwgZ2xvYmFsT2JqZWN0LCBz
dHJ1Y3R1cmUsIElkZW50aWZpZXIoZXhlYywgc3RyaW5nUHJvdG90eXBlLT5jbGFzc0luZm8oKS0+
Y2xhc3NOYW1lKSkKKyAgICA6IEludGVybmFsRnVuY3Rpb24oZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1
cmUpCiB7CiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgp
LCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkucHJvdG90eXBlLCBzdHJpbmdQcm90b3R5cGUsIFJlYWRP
bmx5IHwgRG9udEVudW0gfCBEb250RGVsZXRlKTsKICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNp
dGlvbihleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5sZW5ndGgsIGpz
TnVtYmVyKDEpLCBSZWFkT25seSB8IERvbnRFbnVtIHwgRG9udERlbGV0ZSk7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdDb25zdHJ1Y3Rvci5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ0NvbnN0cnVjdG9yLmgJKHJl
dmlzaW9uIDkyMzY1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nQ29u
c3RydWN0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtMzIsOSArMzIsMTEgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgICAgIFN0cmluZ0NvbnN0cnVjdG9yKEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0
KiwgU3RydWN0dXJlKiwgU3RyaW5nUHJvdG90eXBlKik7CiAgICAgICAgIAogICAgIHB1YmxpYzoK
LSAgICAgICAgc3RhdGljIFN0cmluZ0NvbnN0cnVjdG9yKiBjcmVhdGUoRXhlY1N0YXRlKiBleGVj
LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ICwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFN0
cmluZ1Byb3RvdHlwZSogc3RyUHJvdG90eXBlKQorICAgICAgICBzdGF0aWMgU3RyaW5nQ29uc3Ry
dWN0b3IqIGNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QgLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgU3RyaW5nUHJvdG90eXBlKiBzdHJpbmdQcm90b3R5
cGUpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBuZXcgKGFsbG9jYXRlQ2VsbDxTdHJp
bmdDb25zdHJ1Y3Rvcj4oKmV4ZWMtPmhlYXAoKSkpIFN0cmluZ0NvbnN0cnVjdG9yKGV4ZWMsIGds
b2JhbE9iamVjdCwgc3RydWN0dXJlLCBzdHJQcm90b3R5cGUpOworICAgICAgICAgICAgU3RyaW5n
Q29uc3RydWN0b3IqIGNvbnN0cnVjdG9yID0gbmV3IChhbGxvY2F0ZUNlbGw8U3RyaW5nQ29uc3Ry
dWN0b3I+KCpleGVjLT5oZWFwKCkpKSBTdHJpbmdDb25zdHJ1Y3RvcihleGVjLCBnbG9iYWxPYmpl
Y3QsIHN0cnVjdHVyZSwgc3RyaW5nUHJvdG90eXBlKTsKKyAgICAgICAgICAgIGNvbnN0cnVjdG9y
LT5pbml0UHJvcGVydGllcyhleGVjLT5nbG9iYWxEYXRhKCksIElkZW50aWZpZXIoZXhlYywgc3Ry
aW5nUHJvdG90eXBlLT5jbGFzc0luZm8oKS0+Y2xhc3NOYW1lKSk7CisgICAgICAgICAgICByZXR1
cm4gY29uc3RydWN0b3I7CiAgICAgICAgIH0KIAogICAgICAgICBzdGF0aWMgY29uc3QgQ2xhc3NJ
bmZvIHNfaW5mbzsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ09i
amVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3Ry
aW5nT2JqZWN0LmNwcAkocmV2aXNpb24gOTIzNjUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9TdHJpbmdPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOSwxMyArMjksNiBA
QCBBU1NFUlRfQ0xBU1NfRklUU19JTl9DRUxMKFN0cmluZ09iamVjdCk7CiAKIGNvbnN0IENsYXNz
SW5mbyBTdHJpbmdPYmplY3Q6OnNfaW5mbyA9IHsgIlN0cmluZyIsICZKU1dyYXBwZXJPYmplY3Q6
OnNfaW5mbywgMCwgMCB9OwogCi1TdHJpbmdPYmplY3Q6OlN0cmluZ09iamVjdChFeGVjU3RhdGUq
IGV4ZWMsIFN0cnVjdHVyZSogc3RydWN0dXJlKQotICAgIDogSlNXcmFwcGVyT2JqZWN0KGV4ZWMt
Pmdsb2JhbERhdGEoKSwgc3RydWN0dXJlKQotewotICAgIEFTU0VSVChpbmhlcml0cygmc19pbmZv
KSk7Ci0gICAgc2V0SW50ZXJuYWxWYWx1ZShleGVjLT5nbG9iYWxEYXRhKCksIGpzRW1wdHlTdHJp
bmcoZXhlYykpOwotfQotCiBTdHJpbmdPYmplY3Q6OlN0cmluZ09iamVjdChKU0dsb2JhbERhdGEm
IGdsb2JhbERhdGEsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBKU1N0cmluZyogc3RyaW5nKQogICAg
IDogSlNXcmFwcGVyT2JqZWN0KGdsb2JhbERhdGEsIHN0cnVjdHVyZSkKIHsKQEAgLTQzLDEzICsz
Niw2IEBAIFN0cmluZ09iamVjdDo6U3RyaW5nT2JqZWN0KEpTR2xvYmFsRGF0YSYKICAgICBzZXRJ
bnRlcm5hbFZhbHVlKGdsb2JhbERhdGEsIHN0cmluZyk7CiB9CiAKLVN0cmluZ09iamVjdDo6U3Ry
aW5nT2JqZWN0KEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IFVT
dHJpbmcmIHN0cmluZykKLSAgICA6IEpTV3JhcHBlck9iamVjdChleGVjLT5nbG9iYWxEYXRhKCks
IHN0cnVjdHVyZSkKLXsKLSAgICBBU1NFUlQoaW5oZXJpdHMoJnNfaW5mbykpOwotICAgIHNldElu
dGVybmFsVmFsdWUoZXhlYy0+Z2xvYmFsRGF0YSgpLCBqc1N0cmluZyhleGVjLCBzdHJpbmcpKTsK
LX0KLQogYm9vbCBTdHJpbmdPYmplY3Q6OmdldE93blByb3BlcnR5U2xvdChFeGVjU3RhdGUqIGV4
ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQog
ewogICAgIGlmIChpbnRlcm5hbFZhbHVlKCktPmdldFN0cmluZ1Byb3BlcnR5U2xvdChleGVjLCBw
cm9wZXJ0eU5hbWUsIHNsb3QpKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
U3RyaW5nT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvU3RyaW5nT2JqZWN0LmgJKHJldmlzaW9uIDkyMzY1KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvU3RyaW5nT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTI3LDE4ICsyNywx
NiBAQAogbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBTdHJpbmdPYmplY3QgOiBwdWJsaWMg
SlNXcmFwcGVyT2JqZWN0IHsKLSAgICBwcm90ZWN0ZWQ6Ci0gICAgICAgIFN0cmluZ09iamVjdChF
eGVjU3RhdGUqLCBTdHJ1Y3R1cmUqKTsKLSAgICAgICAgU3RyaW5nT2JqZWN0KEV4ZWNTdGF0ZSos
IFN0cnVjdHVyZSosIGNvbnN0IFVTdHJpbmcmKTsKLSAgICAgICAgICAgICAgICAKICAgICBwdWJs
aWM6CiAgICAgICAgIHN0YXRpYyBTdHJpbmdPYmplY3QqIGNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMs
IFN0cnVjdHVyZSogc3RydWN0dXJlKQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gbmV3
IChhbGxvY2F0ZUNlbGw8U3RyaW5nT2JqZWN0PigqZXhlYy0+aGVhcCgpKSkgU3RyaW5nT2JqZWN0
KGV4ZWMsIHN0cnVjdHVyZSk7ICAKKyAgICAgICAgICAgIEpTU3RyaW5nKiBlbXB0eVN0cmluZyA9
IGpzRW1wdHlTdHJpbmcoZXhlYyk7CisgICAgICAgICAgICByZXR1cm4gbmV3IChhbGxvY2F0ZUNl
bGw8U3RyaW5nT2JqZWN0PigqZXhlYy0+aGVhcCgpKSkgU3RyaW5nT2JqZWN0KGV4ZWMtPmdsb2Jh
bERhdGEoKSwgc3RydWN0dXJlLCBlbXB0eVN0cmluZyk7CiAgICAgICAgIH0KICAgICAgICAgc3Rh
dGljIFN0cmluZ09iamVjdCogY3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUsIGNvbnN0IFVTdHJpbmcmIHN0cikKICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJu
IG5ldyAoYWxsb2NhdGVDZWxsPFN0cmluZ09iamVjdD4oKmV4ZWMtPmhlYXAoKSkpIFN0cmluZ09i
amVjdChleGVjLCBzdHJ1Y3R1cmUsIHN0cik7ICAKKyAgICAgICAgICAgIEpTU3RyaW5nKiBzdHJp
bmcgPSBqc1N0cmluZyhleGVjLCBzdHIpOworICAgICAgICAgICAgcmV0dXJuIG5ldyAoYWxsb2Nh
dGVDZWxsPFN0cmluZ09iamVjdD4oKmV4ZWMtPmhlYXAoKSkpIFN0cmluZ09iamVjdChleGVjLT5n
bG9iYWxEYXRhKCksIHN0cnVjdHVyZSwgc3RyaW5nKTsKICAgICAgICAgfQogICAgICAgICBzdGF0
aWMgU3RyaW5nT2JqZWN0KiBjcmVhdGUoRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqLCBKU1N0
cmluZyopOwogICAgICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0
cmluZ09iamVjdFRoYXRNYXNxdWVyYWRlc0FzVW5kZWZpbmVkLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nT2JqZWN0VGhhdE1hc3F1ZXJhZGVzQXNV
bmRlZmluZWQuaAkocmV2aXNpb24gOTIzNjUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9TdHJpbmdPYmplY3RUaGF0TWFzcXVlcmFkZXNBc1VuZGVmaW5lZC5oCSh3b3JraW5nIGNv
cHkpCkBAIC0zMiwxMyArMzIsMTQgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgcHVibGljOgogICAg
ICAgICBzdGF0aWMgU3RyaW5nT2JqZWN0VGhhdE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQqIGNyZWF0
ZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFVTdHJpbmcmIHN0cmluZykKICAgICAgICAgewotICAg
ICAgICAgICAgcmV0dXJuIG5ldyAoYWxsb2NhdGVDZWxsPFN0cmluZ09iamVjdFRoYXRNYXNxdWVy
YWRlc0FzVW5kZWZpbmVkPigqZXhlYy0+aGVhcCgpKSkgU3RyaW5nT2JqZWN0VGhhdE1hc3F1ZXJh
ZGVzQXNVbmRlZmluZWQoZXhlYywKLSAgICAgICAgICAgICAgICBjcmVhdGVTdHJ1Y3R1cmUoZXhl
Yy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCktPnN0cmluZ1Byb3Rv
dHlwZSgpKSwgc3RyaW5nKTsKKyAgICAgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gY3Jl
YXRlU3RydWN0dXJlKGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVj
dCgpLT5zdHJpbmdQcm90b3R5cGUoKSk7CisgICAgICAgICAgICBKU1N0cmluZyoganNzdHJpbmcg
PSBqc1N0cmluZyhleGVjLCBzdHJpbmcpOworICAgICAgICAgICAgcmV0dXJuIG5ldyAoYWxsb2Nh
dGVDZWxsPFN0cmluZ09iamVjdFRoYXRNYXNxdWVyYWRlc0FzVW5kZWZpbmVkPigqZXhlYy0+aGVh
cCgpKSkgU3RyaW5nT2JqZWN0VGhhdE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQoZXhlYywgc3RydWN0
dXJlLCBqc3N0cmluZyk7CiAgICAgICAgIH0KIAogICAgIHByaXZhdGU6Ci0gICAgICAgIFN0cmlu
Z09iamVjdFRoYXRNYXNxdWVyYWRlc0FzVW5kZWZpbmVkKEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0
dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IFVTdHJpbmcmIHN0cmluZykKLSAgICAgICAgICAgIDogU3Ry
aW5nT2JqZWN0KGV4ZWMsIHN0cnVjdHVyZSwgc3RyaW5nKQorICAgICAgICBTdHJpbmdPYmplY3RU
aGF0TWFzcXVlcmFkZXNBc1VuZGVmaW5lZChFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZSogc3Ry
dWN0dXJlLCBKU1N0cmluZyogc3RyaW5nKQorICAgICAgICAgICAgOiBTdHJpbmdPYmplY3QoZXhl
Yy0+Z2xvYmFsRGF0YSgpLCBzdHJ1Y3R1cmUsIHN0cmluZykKICAgICAgICAgewogICAgICAgICB9
CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ1Byb3RvdHlwZS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nUHJv
dG90eXBlLmNwcAkocmV2aXNpb24gOTIzNjUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9TdHJpbmdQcm90b3R5cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzEsOCArMTMxLDgg
QEAgY29uc3QgQ2xhc3NJbmZvIFN0cmluZ1Byb3RvdHlwZTo6c19pbmZvCiAqLwogCiAvLyBFQ01B
IDE1LjUuNAotU3RyaW5nUHJvdG90eXBlOjpTdHJpbmdQcm90b3R5cGUoRXhlY1N0YXRlKiBleGVj
LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKLSAg
ICA6IFN0cmluZ09iamVjdChleGVjLCBzdHJ1Y3R1cmUpCitTdHJpbmdQcm90b3R5cGU6OlN0cmlu
Z1Byb3RvdHlwZShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IFN0cnVjdHVyZSogc3RydWN0dXJlLCBKU1N0cmluZyogc3RyaW5nKQorICAgIDogU3RyaW5nT2Jq
ZWN0KGV4ZWMtPmdsb2JhbERhdGEoKSwgc3RydWN0dXJlLCBzdHJpbmcpCiB7CiAgICAgQVNTRVJU
KGluaGVyaXRzKCZzX2luZm8pKTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvU3RyaW5nUHJvdG90eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvU3RyaW5nUHJvdG90eXBlLmgJKHJldmlzaW9uIDkyMzY1KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nUHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAg
LTI5LDEyICsyOSwxMyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIFN0cmluZ1Byb3Rv
dHlwZSA6IHB1YmxpYyBTdHJpbmdPYmplY3QgewogICAgIHByaXZhdGU6Ci0gICAgICAgIFN0cmlu
Z1Byb3RvdHlwZShFeGVjU3RhdGUqLCBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSopOworICAg
ICAgICBTdHJpbmdQcm90b3R5cGUoRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1
cmUqLCBKU1N0cmluZyopOwogCiAgICAgcHVibGljOgogICAgICAgICBzdGF0aWMgU3RyaW5nUHJv
dG90eXBlKiBjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJu
IG5ldyAoYWxsb2NhdGVDZWxsPFN0cmluZ1Byb3RvdHlwZT4oKmV4ZWMtPmhlYXAoKSkpIFN0cmlu
Z1Byb3RvdHlwZShleGVjLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSk7CisgICAgICAgICAgICBK
U1N0cmluZyogZW1wdHlTdHJpbmcgPSBqc0VtcHR5U3RyaW5nKGV4ZWMpOworICAgICAgICAgICAg
cmV0dXJuIG5ldyAoYWxsb2NhdGVDZWxsPFN0cmluZ1Byb3RvdHlwZT4oKmV4ZWMtPmhlYXAoKSkp
IFN0cmluZ1Byb3RvdHlwZShleGVjLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgZW1wdHlTdHJp
bmcpOwogICAgICAgICB9CiAKICAgICAgICAgdmlydHVhbCBib29sIGdldE93blByb3BlcnR5U2xv
dChFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xv
dCYpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlQ2hhaW4u
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVD
aGFpbi5oCShyZXZpc2lvbiA5MjM2NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1N0cnVjdHVyZUNoYWluLmgJKHdvcmtpbmcgY29weSkKQEAgLTQyLDcgKzQyLDExIEBAIG5hbWVz
cGFjZSBKU0MgewogICAgICAgICBmcmllbmQgY2xhc3MgSklUOwogCiAgICAgcHVibGljOgotICAg
ICAgICBzdGF0aWMgU3RydWN0dXJlQ2hhaW4qIGNyZWF0ZShKU0dsb2JhbERhdGEmIGdsb2JhbERh
dGEsIFN0cnVjdHVyZSogaGVhZCkgeyByZXR1cm4gbmV3IChhbGxvY2F0ZUNlbGw8U3RydWN0dXJl
Q2hhaW4+KGdsb2JhbERhdGEuaGVhcCkpIFN0cnVjdHVyZUNoYWluKGdsb2JhbERhdGEsIGdsb2Jh
bERhdGEuc3RydWN0dXJlQ2hhaW5TdHJ1Y3R1cmUuZ2V0KCksIGhlYWQpOyB9CisgICAgICAgIHN0
YXRpYyBTdHJ1Y3R1cmVDaGFpbiogY3JlYXRlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgU3Ry
dWN0dXJlKiBoZWFkKSAKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIG5ldyAoYWxsb2Nh
dGVDZWxsPFN0cnVjdHVyZUNoYWluPihnbG9iYWxEYXRhLmhlYXApKSBTdHJ1Y3R1cmVDaGFpbihn
bG9iYWxEYXRhLCBnbG9iYWxEYXRhLnN0cnVjdHVyZUNoYWluU3RydWN0dXJlLmdldCgpLCBoZWFk
KTsKKyAgICAgICAgfQorCiAgICAgICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+KiBoZWFkKCkg
eyByZXR1cm4gbV92ZWN0b3IuZ2V0KCk7IH0KICAgICAgICAgdm9pZCB2aXNpdENoaWxkcmVuKFNs
b3RWaXNpdG9yJik7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>102951</attachid>
            <date>2011-08-04 11:48:13 -0700</date>
            <delta_ts>2011-08-04 13:00:16 -0700</delta_ts>
            <desc>Fixing windows again</desc>
            <filename>bug-65288-20110804114812.patch</filename>
            <type>text/plain</type>
            <size>81783</size>
            <attacher name="Mark Hahnenberg">mhahnenberg</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gOTIzOTMpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTIzIEBA
CisyMDExLTA4LTA0ICBNYXJrIEhhaG5lbmJlcmcgIDxtaGFobmVuYmVyZ0BhcHBsZS5jb20+CisK
KyAgICAgICAgQWRkIGNoZWNrcyB0byBlbnN1cmUgYWxsb2NhdGlvbiBkb2VzIG5vdCB0YWtlIHBs
YWNlIGR1cmluZyBpbml0aWFsaXphdGlvbiBvZiBHQy1tYW5hZ2VkIG9iamVjdHMKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY1Mjg4CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVmYWN0b3JpbmcgSlNDIGlu
IHByZXBhcmF0aW9uIGZvciB0aGUgaW5jbHVzaW9uIG9mIHRoZSBhZGRpdGlvbiBvZiBHQyB2YWxp
ZGF0aW9uIGNoZWNrcy4gIAorICAgICAgICBCYXNpY2FsbHkgd2UgcHVsbCBhcyBtdWNoIGFsbG9j
YXRpb24gYXMgd2UgY2FuIG91dCBvZiBjb25zdHJ1Y3RvcnMgaW50byB0aGVpciBzdGF0aWMgY3Jl
YXRlIAorICAgICAgICBtZXRob2RzIHRvIGF2b2lkIGFsbG9jYXRpb24gZHVyaW5nIGluaXRpYWxp
emF0aW9uLCB3aGljaCBjb3VsZCBjYXVzZSBHQyB0byBvY2N1ciB3aGVuIHRoZSAKKyAgICAgICAg
b2JqZWN0IGlzIGluIGFuIHVuZGVmaW5lZCBzdGF0ZS4KKworICAgICAgICAqIEFQSS9KU0NhbGxi
YWNrRnVuY3Rpb24uY3BwOgorICAgICAgICAoSlNDOjpKU0NhbGxiYWNrRnVuY3Rpb246OkpTQ2Fs
bGJhY2tGdW5jdGlvbik6CisgICAgICAgICogQVBJL0pTQ2FsbGJhY2tGdW5jdGlvbi5oOgorICAg
ICAgICAoSlNDOjpKU0NhbGxiYWNrRnVuY3Rpb246OmNyZWF0ZSk6CisgICAgICAgICogSmF2YVNj
cmlwdENvcmUuSlNWQUxVRTY0b25seS5leHA6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUuZXhw
OgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLm9yZGVyOgorICAgICAgICAqIEphdmFTY3JpcHRD
b3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5kZWY6CisgICAgICAgICog
anNjLmNwcDoKKyAgICAgICAgKEdsb2JhbE9iamVjdDo6Y3JlYXRlKToKKyAgICAgICAgKEdsb2Jh
bE9iamVjdDo6R2xvYmFsT2JqZWN0KToKKyAgICAgICAgKiBydW50aW1lL0FycmF5Q29uc3RydWN0
b3IuY3BwOgorICAgICAgICAoSlNDOjpBcnJheUNvbnN0cnVjdG9yOjpBcnJheUNvbnN0cnVjdG9y
KToKKyAgICAgICAgKiBydW50aW1lL0FycmF5Q29uc3RydWN0b3IuaDoKKyAgICAgICAgKEpTQzo6
QXJyYXlDb25zdHJ1Y3Rvcjo6Y3JlYXRlKToKKyAgICAgICAgKiBydW50aW1lL0Jvb2xlYW5Db25z
dHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0M6OkJvb2xlYW5Db25zdHJ1Y3Rvcjo6Qm9vbGVhbkNv
bnN0cnVjdG9yKToKKyAgICAgICAgKiBydW50aW1lL0Jvb2xlYW5Db25zdHJ1Y3Rvci5oOgorICAg
ICAgICAoSlNDOjpCb29sZWFuQ29uc3RydWN0b3I6OmNyZWF0ZSk6CisgICAgICAgICogcnVudGlt
ZS9EYXRlQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAoSlNDOjpEYXRlQ29uc3RydWN0b3I6OkRh
dGVDb25zdHJ1Y3Rvcik6CisgICAgICAgICogcnVudGltZS9EYXRlQ29uc3RydWN0b3IuaDoKKyAg
ICAgICAgKEpTQzo6RGF0ZUNvbnN0cnVjdG9yOjpjcmVhdGUpOgorICAgICAgICAqIHJ1bnRpbWUv
RXJyb3IuY3BwOgorICAgICAgICAoSlNDOjpTdHJpY3RNb2RlVHlwZUVycm9yRnVuY3Rpb246OlN0
cmljdE1vZGVUeXBlRXJyb3JGdW5jdGlvbik6CisgICAgICAgIChKU0M6OlN0cmljdE1vZGVUeXBl
RXJyb3JGdW5jdGlvbjo6Y3JlYXRlKToKKyAgICAgICAgKiBydW50aW1lL0Vycm9yQ29uc3RydWN0
b3IuY3BwOgorICAgICAgICAoSlNDOjpFcnJvckNvbnN0cnVjdG9yOjpFcnJvckNvbnN0cnVjdG9y
KToKKyAgICAgICAgKiBydW50aW1lL0Vycm9yQ29uc3RydWN0b3IuaDoKKyAgICAgICAgKEpTQzo6
RXJyb3JDb25zdHJ1Y3Rvcjo6Y3JlYXRlKToKKyAgICAgICAgKiBydW50aW1lL0Vycm9ySW5zdGFu
Y2UuY3BwOgorICAgICAgICAoSlNDOjpFcnJvckluc3RhbmNlOjpFcnJvckluc3RhbmNlKToKKyAg
ICAgICAgKEpTQzo6RXJyb3JJbnN0YW5jZTo6Y3JlYXRlKToKKyAgICAgICAgKiBydW50aW1lL0Vy
cm9ySW5zdGFuY2UuaDoKKyAgICAgICAgKiBydW50aW1lL0Vycm9yUHJvdG90eXBlLmNwcDoKKyAg
ICAgICAgKEpTQzo6RXJyb3JQcm90b3R5cGU6OkVycm9yUHJvdG90eXBlKToKKyAgICAgICAgKiBy
dW50aW1lL0Vycm9yUHJvdG90eXBlLmg6CisgICAgICAgIChKU0M6OkVycm9yUHJvdG90eXBlOjpj
cmVhdGUpOgorICAgICAgICAqIHJ1bnRpbWUvRXhlY3V0YWJsZS5jcHA6CisgICAgICAgIChKU0M6
OkZ1bmN0aW9uRXhlY3V0YWJsZTo6RnVuY3Rpb25FeGVjdXRhYmxlKToKKyAgICAgICAgKiBydW50
aW1lL0V4ZWN1dGFibGUuaDoKKyAgICAgICAgKEpTQzo6TmF0aXZlRXhlY3V0YWJsZTo6Y3JlYXRl
KToKKyAgICAgICAgKiBydW50aW1lL0Z1bmN0aW9uQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAo
SlNDOjpGdW5jdGlvbkNvbnN0cnVjdG9yOjpGdW5jdGlvbkNvbnN0cnVjdG9yKToKKyAgICAgICAg
KiBydW50aW1lL0Z1bmN0aW9uQ29uc3RydWN0b3IuaDoKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25D
b25zdHJ1Y3Rvcjo6Y3JlYXRlKToKKyAgICAgICAgKiBydW50aW1lL0Z1bmN0aW9uUHJvdG90eXBl
LmNwcDoKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25Qcm90b3R5cGU6OkZ1bmN0aW9uUHJvdG90eXBl
KToKKyAgICAgICAgKiBydW50aW1lL0Z1bmN0aW9uUHJvdG90eXBlLmg6CisgICAgICAgIChKU0M6
OkZ1bmN0aW9uUHJvdG90eXBlOjpjcmVhdGUpOgorICAgICAgICAqIHJ1bnRpbWUvSW50ZXJuYWxG
dW5jdGlvbi5jcHA6CisgICAgICAgIChKU0M6OkludGVybmFsRnVuY3Rpb246OkludGVybmFsRnVu
Y3Rpb24pOgorICAgICAgICAqIHJ1bnRpbWUvSW50ZXJuYWxGdW5jdGlvbi5oOgorICAgICAgICAo
SlNDOjpJbnRlcm5hbEZ1bmN0aW9uOjppbml0UHJvcGVydGllcyk6CisgICAgICAgICogcnVudGlt
ZS9KU0J5dGVBcnJheS5jcHA6CisgICAgICAgIChKU0M6OkpTQnl0ZUFycmF5OjpKU0J5dGVBcnJh
eSk6CisgICAgICAgIChKU0M6OkpTQnl0ZUFycmF5OjpjcmVhdGUpOgorICAgICAgICAqIHJ1bnRp
bWUvSlNDZWxsLmg6CisgICAgICAgICogcnVudGltZS9KU0Z1bmN0aW9uLmNwcDoKKyAgICAgICAg
KEpTQzo6SlNGdW5jdGlvbjo6SlNGdW5jdGlvbik6CisgICAgICAgIChKU0M6OkpTRnVuY3Rpb246
OmNyZWF0ZSk6CisgICAgICAgICogcnVudGltZS9KU0Z1bmN0aW9uLmg6CisgICAgICAgICogcnVu
dGltZS9KU0dsb2JhbE9iamVjdC5oOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6Y3Jl
YXRlKToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OkpTR2xvYmFsT2JqZWN0KToKKyAg
ICAgICAgKiBydW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuY3BwOgorICAgICAgICAoSlND
OjpKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yOjpKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yKToKKyAgICAg
ICAgKEpTQzo6SlNQcm9wZXJ0eU5hbWVJdGVyYXRvcjo6Y3JlYXRlKToKKyAgICAgICAgKiBydW50
aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuaDoKKyAgICAgICAgKEpTQzo6SlNQcm9wZXJ0eU5h
bWVJdGVyYXRvcjo6Y3JlYXRlKToKKyAgICAgICAgKiBydW50aW1lL05hdGl2ZUVycm9yQ29uc3Ry
dWN0b3IuY3BwOgorICAgICAgICAoSlNDOjpOYXRpdmVFcnJvckNvbnN0cnVjdG9yOjpOYXRpdmVF
cnJvckNvbnN0cnVjdG9yKToKKyAgICAgICAgKEpTQzo6TmF0aXZlRXJyb3JDb25zdHJ1Y3Rvcjo6
Y3JlYXRlKToKKyAgICAgICAgKiBydW50aW1lL05hdGl2ZUVycm9yQ29uc3RydWN0b3IuaDoKKyAg
ICAgICAgKiBydW50aW1lL05hdGl2ZUVycm9yUHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6
TmF0aXZlRXJyb3JQcm90b3R5cGU6Ok5hdGl2ZUVycm9yUHJvdG90eXBlKToKKyAgICAgICAgKiBy
dW50aW1lL05hdGl2ZUVycm9yUHJvdG90eXBlLmg6CisgICAgICAgIChKU0M6Ok5hdGl2ZUVycm9y
UHJvdG90eXBlOjpjcmVhdGUpOgorICAgICAgICAqIHJ1bnRpbWUvTnVtYmVyQ29uc3RydWN0b3Iu
Y3BwOgorICAgICAgICAoSlNDOjpOdW1iZXJDb25zdHJ1Y3Rvcjo6TnVtYmVyQ29uc3RydWN0b3Ip
OgorICAgICAgICAqIHJ1bnRpbWUvTnVtYmVyQ29uc3RydWN0b3IuaDoKKyAgICAgICAgKEpTQzo6
TnVtYmVyQ29uc3RydWN0b3I6OmNyZWF0ZSk6CisgICAgICAgICogcnVudGltZS9PYmplY3RDb25z
dHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0M6Ok9iamVjdENvbnN0cnVjdG9yOjpPYmplY3RDb25z
dHJ1Y3Rvcik6CisgICAgICAgICogcnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5oOgorICAgICAg
ICAoSlNDOjpPYmplY3RDb25zdHJ1Y3Rvcjo6Y3JlYXRlKToKKyAgICAgICAgKiBydW50aW1lL1Jl
Z0V4cENvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6UmVnRXhwQ29uc3RydWN0b3I6OlJl
Z0V4cENvbnN0cnVjdG9yKToKKyAgICAgICAgKiBydW50aW1lL1JlZ0V4cENvbnN0cnVjdG9yLmg6
CisgICAgICAgIChKU0M6OlJlZ0V4cENvbnN0cnVjdG9yOjpjcmVhdGUpOgorICAgICAgICAqIHJ1
bnRpbWUvUmVnRXhwTWF0Y2hlc0FycmF5Lmg6CisgICAgICAgICogcnVudGltZS9TdHJpbmdDb25z
dHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0M6OlN0cmluZ0NvbnN0cnVjdG9yOjpTdHJpbmdDb25z
dHJ1Y3Rvcik6CisgICAgICAgICogcnVudGltZS9TdHJpbmdDb25zdHJ1Y3Rvci5oOgorICAgICAg
ICAoSlNDOjpTdHJpbmdDb25zdHJ1Y3Rvcjo6Y3JlYXRlKToKKyAgICAgICAgKiBydW50aW1lL1N0
cmluZ09iamVjdC5jcHA6CisgICAgICAgICogcnVudGltZS9TdHJpbmdPYmplY3QuaDoKKyAgICAg
ICAgKEpTQzo6U3RyaW5nT2JqZWN0OjpjcmVhdGUpOgorICAgICAgICAqIHJ1bnRpbWUvU3RyaW5n
T2JqZWN0VGhhdE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQuaDoKKyAgICAgICAgKEpTQzo6U3RyaW5n
T2JqZWN0VGhhdE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQ6OmNyZWF0ZSk6CisgICAgICAgIChKU0M6
OlN0cmluZ09iamVjdFRoYXRNYXNxdWVyYWRlc0FzVW5kZWZpbmVkOjpTdHJpbmdPYmplY3RUaGF0
TWFzcXVlcmFkZXNBc1VuZGVmaW5lZCk6CisgICAgICAgICogcnVudGltZS9TdHJpbmdQcm90b3R5
cGUuY3BwOgorICAgICAgICAoSlNDOjpTdHJpbmdQcm90b3R5cGU6OlN0cmluZ1Byb3RvdHlwZSk6
CisgICAgICAgICogcnVudGltZS9TdHJpbmdQcm90b3R5cGUuaDoKKyAgICAgICAgKEpTQzo6U3Ry
aW5nUHJvdG90eXBlOjpjcmVhdGUpOgorICAgICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlQ2hhaW4u
aDoKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlQ2hhaW46OmNyZWF0ZSk6CisKIDIwMTEtMDgtMDQg
IE1hcmsgSGFobmVuYmVyZyAgPG1oYWhuZW5iZXJnQGFwcGxlLmNvbT4KIAogICAgICAgICBJbnRl
cnByZXRlciBjYW4gcG90ZW50aWFsbHkgR0MgaW4gdGhlIG1pZGRsZSBvZiBpbml0aWFsaXppbmcg
YSBzdHJ1Y3R1cmUgY2hhaW4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS5KU1ZBTFVFNjRvbmx5LmV4cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvSmF2YVNjcmlwdENvcmUuSlNWQUxVRTY0b25seS5leHAJKHJldmlzaW9uIDkyMzkzKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLkpTVkFMVUU2NG9ubHkuZXhwCSh3
b3JraW5nIGNvcHkpCkBAIC0xICswLDAgQEAKLV9fWk4zSlNDMTBKU0Z1bmN0aW9uQzFFUE5TXzlF
eGVjU3RhdGVFUE5TXzE0SlNHbG9iYWxPYmplY3RFUE5TXzlTdHJ1Y3R1cmVFaVJLTlNfMTBJZGVu
dGlmaWVyRVBGUHZTMl9FCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUuZXhwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZS5leHAJKHJldmlzaW9uIDkyMzkzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3Jp
cHRDb3JlLmV4cAkod29ya2luZyBjb3B5KQpAQCAtMTExLDYgKzExMSw3IEBAIF9fWk4zSlNDMTBJ
ZGVudGlmaWVyNGZyb21FUE5TXzlFeGVjU3RhdGUKIF9fWk4zSlNDMTBJZGVudGlmaWVyNWVxdWFs
RVBLTjNXVEYxMFN0cmluZ0ltcGxFUEtjCiBfX1pOM0pTQzEwSWRlbnRpZmllcjh0b1VJbnQzMkVS
S05TXzdVU3RyaW5nRVJiCiBfX1pOM0pTQzEwSlNGdW5jdGlvbjRuYW1lRVBOU185RXhlY1N0YXRl
RQorX19aTjNKU0MxMEpTRnVuY3Rpb242Y3JlYXRlRVBOU185RXhlY1N0YXRlRVBOU18xNEpTR2xv
YmFsT2JqZWN0RVBOU185U3RydWN0dXJlRWlSS05TXzEwSWRlbnRpZmllckVQRlB2UzJfRQogX19a
TjNKU0MxMEpTRnVuY3Rpb242c19pbmZvRQogX19aTjNKU0MxMHRocm93RXJyb3JFUE5TXzlFeGVj
U3RhdGVFTlNfN0pTVmFsdWVFCiBfX1pOM0pTQzEwdGhyb3dFcnJvckVQTlNfOUV4ZWNTdGF0ZUVQ
TlNfOEpTT2JqZWN0RQpAQCAtMTUxLDcgKzE1Miw3IEBAIF9fWk4zSlNDMTJTdHJpbmdPYmplY3Qx
OWdldE93blByb3BlcnR5TmEKIF9fWk4zSlNDMTJTdHJpbmdPYmplY3QyNGdldE93blByb3BlcnR5
RGVzY3JpcHRvckVQTlNfOUV4ZWNTdGF0ZUVSS05TXzEwSWRlbnRpZmllckVSTlNfMThQcm9wZXJ0
eURlc2NyaXB0b3JFCiBfX1pOM0pTQzEyU3RyaW5nT2JqZWN0M3B1dEVQTlNfOUV4ZWNTdGF0ZUVS
S05TXzEwSWRlbnRpZmllckVOU183SlNWYWx1ZUVSTlNfMTVQdXRQcm9wZXJ0eVNsb3RFCiBfX1pO
M0pTQzEyU3RyaW5nT2JqZWN0NnNfaW5mb0UKLV9fWk4zSlNDMTJTdHJpbmdPYmplY3RDMkVQTlNf
OUV4ZWNTdGF0ZUVQTlNfOVN0cnVjdHVyZUVSS05TXzdVU3RyaW5nRQorX19aTjNKU0MxMlN0cmlu
Z09iamVjdEMyRVJOU18xMkpTR2xvYmFsRGF0YUVQTlNfOVN0cnVjdHVyZUVQTlNfOEpTU3RyaW5n
RQogX19aTjNKU0MxM1NhbXBsaW5nRmxhZ3M0c3RvcEV2CiBfX1pOM0pTQzEzU2FtcGxpbmdGbGFn
czVzdGFydEV2CiBfX1pOM0pTQzEzU2FtcGxpbmdGbGFnczdzX2ZsYWdzRQpAQCAtMTg0LDYgKzE4
NSw3IEBAIF9fWk4zSlNDMTZJbnRlcm5hbEZ1bmN0aW9uMTJ2dGFibGVBbmNob3IKIF9fWk4zSlND
MTZJbnRlcm5hbEZ1bmN0aW9uNG5hbWVFUE5TXzlFeGVjU3RhdGVFCiBfX1pOM0pTQzE2SW50ZXJu
YWxGdW5jdGlvbjZzX2luZm9FCiBfX1pOM0pTQzE2SW50ZXJuYWxGdW5jdGlvbkMyRVBOU18xMkpT
R2xvYmFsRGF0YUVQTlNfMTRKU0dsb2JhbE9iamVjdEVQTlNfOVN0cnVjdHVyZUVSS05TXzEwSWRl
bnRpZmllckUKK19fWk4zSlNDMTZJbnRlcm5hbEZ1bmN0aW9uQzJFUE5TXzE0SlNHbG9iYWxPYmpl
Y3RFUE5TXzlTdHJ1Y3R1cmVFCiBfX1pOM0pTQzE2SlNWYXJpYWJsZU9iamVjdDE0ZGVsZXRlUHJv
cGVydHlFUE5TXzlFeGVjU3RhdGVFUktOU18xMElkZW50aWZpZXJFCiBfX1pOM0pTQzE2SlNWYXJp
YWJsZU9iamVjdDE0c3ltYm9sVGFibGVHZXRFUktOU18xMElkZW50aWZpZXJFUk5TXzE4UHJvcGVy
dHlEZXNjcmlwdG9yRQogX19aTjNKU0MxNkpTVmFyaWFibGVPYmplY3QxOWdldE93blByb3BlcnR5
TmFtZXNFUE5TXzlFeGVjU3RhdGVFUk5TXzE3UHJvcGVydHlOYW1lQXJyYXlFTlNfMTVFbnVtZXJh
dGlvbk1vZGVFCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUub3Jk
ZXIKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLm9y
ZGVyCShyZXZpc2lvbiA5MjM5MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS5vcmRlcgkod29ya2luZyBjb3B5KQpAQCAtMjI1LDcgKzIyNSw2IEBAIF9fWk4zSlNDMjRT
dHJ1Y3R1cmVUcmFuc2l0aW9uVGFibGUzYWRkRVIKIF9fWk4zSlNDOVN0cnVjdHVyZTI4YWRkUHJv
cGVydHlXaXRob3V0VHJhbnNpdGlvbkVSTlNfMTJKU0dsb2JhbERhdGFFUktOU18xMElkZW50aWZp
ZXJFalBOU182SlNDZWxsRQogX19aTjNKU0M4SlNPYmplY3QyM2FsbG9jYXRlUHJvcGVydHlTdG9y
YWdlRW1tCiBfX1pOM0pTQzE3RnVuY3Rpb25Qcm90b3R5cGUyMWFkZEZ1bmN0aW9uUHJvcGVydGll
c0VQTlNfOUV4ZWNTdGF0ZUVQTlNfMTRKU0dsb2JhbE9iamVjdEVQTlNfOVN0cnVjdHVyZUVQUE5T
XzEwSlNGdW5jdGlvbkVTOV8KLV9fWk4zSlNDMTBKU0Z1bmN0aW9uQzFFUE5TXzlFeGVjU3RhdGVF
UE5TXzE0SlNHbG9iYWxPYmplY3RFUE5TXzlTdHJ1Y3R1cmVFaVJLTlNfMTBJZGVudGlmaWVyRVBG
UHZTMl9FCiBfX1pOM0pTQzEwSlNGdW5jdGlvbkMyRVBOU185RXhlY1N0YXRlRVBOU18xNEpTR2xv
YmFsT2JqZWN0RVBOU185U3RydWN0dXJlRWlSS05TXzEwSWRlbnRpZmllckVQRlB2UzJfRQogX19a
TjNKU0MxMkpTR2xvYmFsRGF0YTE1Z2V0SG9zdEZ1bmN0aW9uRVBGUHZQTlNfOUV4ZWNTdGF0ZUVF
CiBfX1pOM0pTQzlKSVRUaHVua3MxNmhvc3RGdW5jdGlvblN0dWJFUE5TXzEySlNHbG9iYWxEYXRh
RVBGUHZQTlNfOUV4ZWNTdGF0ZUVFCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcAkocmV2aXNpb24g
OTIzOTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTQ1LDQ0ICsxNDUsNDYgQEAgbG9uZyBTdG9wV2F0Y2g6OmdldEVsYXBzZWRNUygpCiAKIGNs
YXNzIEdsb2JhbE9iamVjdCA6IHB1YmxpYyBKU0dsb2JhbE9iamVjdCB7CiBwcml2YXRlOgotICAg
IEdsb2JhbE9iamVjdChKU0dsb2JhbERhdGEmLCBTdHJ1Y3R1cmUqLCBjb25zdCBWZWN0b3I8VVN0
cmluZz4mIGFyZ3VtZW50cyk7CisgICAgR2xvYmFsT2JqZWN0KEpTR2xvYmFsRGF0YSYsIFN0cnVj
dHVyZSopOwogCiBwdWJsaWM6CiAgICAgc3RhdGljIEdsb2JhbE9iamVjdCogY3JlYXRlKEpTR2xv
YmFsRGF0YSYgZ2xvYmFsRGF0YSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IFZlY3RvcjxV
U3RyaW5nPiYgYXJndW1lbnRzKQogICAgIHsKLSAgICAgICAgcmV0dXJuIG5ldyAoYWxsb2NhdGVD
ZWxsPEdsb2JhbE9iamVjdD4oZ2xvYmFsRGF0YS5oZWFwKSkgR2xvYmFsT2JqZWN0KGdsb2JhbERh
dGEsIHN0cnVjdHVyZSwgYXJndW1lbnRzKTsKKyAgICAgICAgR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QgPSBuZXcgKGFsbG9jYXRlQ2VsbDxHbG9iYWxPYmplY3Q+KGdsb2JhbERhdGEuaGVhcCkp
IEdsb2JhbE9iamVjdChnbG9iYWxEYXRhLCBzdHJ1Y3R1cmUpOworICAgICAgICBnbG9iYWxPYmpl
Y3QtPmluaXQoZ2xvYmFsT2JqZWN0KTsKKyAgICAgICAgZ2xvYmFsT2JqZWN0LT5wdXREaXJlY3RG
dW5jdGlvbihnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSwgSlNGdW5jdGlvbjo6Y3JlYXRlKGds
b2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpLCBnbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdC0+ZnVu
Y3Rpb25TdHJ1Y3R1cmUoKSwgMSwgSWRlbnRpZmllcihnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMo
KSwgImRlYnVnIiksIGZ1bmN0aW9uRGVidWcpKTsKKyAgICAgICAgZ2xvYmFsT2JqZWN0LT5wdXRE
aXJlY3RGdW5jdGlvbihnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSwgSlNGdW5jdGlvbjo6Y3Jl
YXRlKGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpLCBnbG9iYWxPYmplY3QsIGdsb2JhbE9iamVj
dC0+ZnVuY3Rpb25TdHJ1Y3R1cmUoKSwgMSwgSWRlbnRpZmllcihnbG9iYWxPYmplY3QtPmdsb2Jh
bEV4ZWMoKSwgInByaW50IiksIGZ1bmN0aW9uUHJpbnQpKTsKKyAgICAgICAgZ2xvYmFsT2JqZWN0
LT5wdXREaXJlY3RGdW5jdGlvbihnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSwgSlNGdW5jdGlv
bjo6Y3JlYXRlKGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpLCBnbG9iYWxPYmplY3QsIGdsb2Jh
bE9iamVjdC0+ZnVuY3Rpb25TdHJ1Y3R1cmUoKSwgMCwgSWRlbnRpZmllcihnbG9iYWxPYmplY3Qt
Pmdsb2JhbEV4ZWMoKSwgInF1aXQiKSwgZnVuY3Rpb25RdWl0KSk7CisgICAgICAgIGdsb2JhbE9i
amVjdC0+cHV0RGlyZWN0RnVuY3Rpb24oZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCksIEpTRnVu
Y3Rpb246OmNyZWF0ZShnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSwgZ2xvYmFsT2JqZWN0LCBn
bG9iYWxPYmplY3QtPmZ1bmN0aW9uU3RydWN0dXJlKCksIDAsIElkZW50aWZpZXIoZ2xvYmFsT2Jq
ZWN0LT5nbG9iYWxFeGVjKCksICJnYyIpLCBmdW5jdGlvbkdDKSk7CisjaWZuZGVmIE5ERUJVRwor
ICAgICAgICBnbG9iYWxPYmplY3QtPnB1dERpcmVjdEZ1bmN0aW9uKGdsb2JhbE9iamVjdC0+Z2xv
YmFsRXhlYygpLCBKU0Z1bmN0aW9uOjpjcmVhdGUoZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCks
IGdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LT5mdW5jdGlvblN0cnVjdHVyZSgpLCAwLCBJZGVu
dGlmaWVyKGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpLCAicmVsZWFzZUV4ZWN1dGFibGVNZW1v
cnkiKSwgZnVuY3Rpb25SZWxlYXNlRXhlY3V0YWJsZU1lbW9yeSkpOworI2VuZGlmCisgICAgICAg
IGdsb2JhbE9iamVjdC0+cHV0RGlyZWN0RnVuY3Rpb24oZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVj
KCksIEpTRnVuY3Rpb246OmNyZWF0ZShnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSwgZ2xvYmFs
T2JqZWN0LCBnbG9iYWxPYmplY3QtPmZ1bmN0aW9uU3RydWN0dXJlKCksIDEsIElkZW50aWZpZXIo
Z2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCksICJ2ZXJzaW9uIiksIGZ1bmN0aW9uVmVyc2lvbikp
OworICAgICAgICBnbG9iYWxPYmplY3QtPnB1dERpcmVjdEZ1bmN0aW9uKGdsb2JhbE9iamVjdC0+
Z2xvYmFsRXhlYygpLCBKU0Z1bmN0aW9uOjpjcmVhdGUoZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVj
KCksIGdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LT5mdW5jdGlvblN0cnVjdHVyZSgpLCAxLCBJ
ZGVudGlmaWVyKGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpLCAicnVuIiksIGZ1bmN0aW9uUnVu
KSk7CisgICAgICAgIGdsb2JhbE9iamVjdC0+cHV0RGlyZWN0RnVuY3Rpb24oZ2xvYmFsT2JqZWN0
LT5nbG9iYWxFeGVjKCksIEpTRnVuY3Rpb246OmNyZWF0ZShnbG9iYWxPYmplY3QtPmdsb2JhbEV4
ZWMoKSwgZ2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QtPmZ1bmN0aW9uU3RydWN0dXJlKCksIDEs
IElkZW50aWZpZXIoZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCksICJsb2FkIiksIGZ1bmN0aW9u
TG9hZCkpOworICAgICAgICBnbG9iYWxPYmplY3QtPnB1dERpcmVjdEZ1bmN0aW9uKGdsb2JhbE9i
amVjdC0+Z2xvYmFsRXhlYygpLCBKU0Z1bmN0aW9uOjpjcmVhdGUoZ2xvYmFsT2JqZWN0LT5nbG9i
YWxFeGVjKCksIGdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LT5mdW5jdGlvblN0cnVjdHVyZSgp
LCAxLCBJZGVudGlmaWVyKGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpLCAiY2hlY2tTeW50YXgi
KSwgZnVuY3Rpb25DaGVja1N5bnRheCkpOworICAgICAgICBnbG9iYWxPYmplY3QtPnB1dERpcmVj
dEZ1bmN0aW9uKGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpLCBKU0Z1bmN0aW9uOjpjcmVhdGUo
Z2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCksIGdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LT5m
dW5jdGlvblN0cnVjdHVyZSgpLCAwLCBJZGVudGlmaWVyKGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhl
YygpLCAicmVhZGxpbmUiKSwgZnVuY3Rpb25SZWFkbGluZSkpOworICAgICAgICBnbG9iYWxPYmpl
Y3QtPnB1dERpcmVjdEZ1bmN0aW9uKGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpLCBKU0Z1bmN0
aW9uOjpjcmVhdGUoZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCksIGdsb2JhbE9iamVjdCwgZ2xv
YmFsT2JqZWN0LT5mdW5jdGlvblN0cnVjdHVyZSgpLCAwLCBJZGVudGlmaWVyKGdsb2JhbE9iamVj
dC0+Z2xvYmFsRXhlYygpLCAicHJlY2lzZVRpbWUiKSwgZnVuY3Rpb25QcmVjaXNlVGltZSkpOwor
CisjaWYgRU5BQkxFKFNBTVBMSU5HX0ZMQUdTKQorICAgICAgICBnbG9iYWxPYmplY3QtPnB1dERp
cmVjdEZ1bmN0aW9uKGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpLCBKU0Z1bmN0aW9uOjpjcmVh
dGUoZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCksIGdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0
LT5mdW5jdGlvblN0cnVjdHVyZSgpLCAxLCBJZGVudGlmaWVyKGdsb2JhbE9iamVjdC0+Z2xvYmFs
RXhlYygpLCAic2V0U2FtcGxpbmdGbGFncyIpLCBmdW5jdGlvblNldFNhbXBsaW5nRmxhZ3MpKTsK
KyAgICAgICAgZ2xvYmFsT2JqZWN0LT5wdXREaXJlY3RGdW5jdGlvbihnbG9iYWxPYmplY3QtPmds
b2JhbEV4ZWMoKSwgSlNGdW5jdGlvbjo6Y3JlYXRlKGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygp
LCBnbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdC0+ZnVuY3Rpb25TdHJ1Y3R1cmUoKSwgMSwgSWRl
bnRpZmllcihnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSwgImNsZWFyU2FtcGxpbmdGbGFncyIp
LCBmdW5jdGlvbkNsZWFyU2FtcGxpbmdGbGFncykpOworI2VuZGlmCisKKyAgICAgICAgSlNPYmpl
Y3QqIGFycmF5ID0gY29uc3RydWN0RW1wdHlBcnJheShnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMo
KSk7CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgYXJndW1lbnRzLnNpemUoKTsgKytp
KQorICAgICAgICAgICAgYXJyYXktPnB1dChnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSwgaSwg
anNTdHJpbmcoZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCksIGFyZ3VtZW50c1tpXSkpOworICAg
ICAgICBnbG9iYWxPYmplY3QtPnB1dERpcmVjdChnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKS0+
Z2xvYmFsRGF0YSgpLCBJZGVudGlmaWVyKGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpLCAiYXJn
dW1lbnRzIiksIGFycmF5KTsKKyAgICAgICAgcmV0dXJuIGdsb2JhbE9iamVjdDsKICAgICB9CiAg
ICAgdmlydHVhbCBVU3RyaW5nIGNsYXNzTmFtZSgpIGNvbnN0IHsgcmV0dXJuICJnbG9iYWwiOyB9
CiB9OwogQ09NUElMRV9BU1NFUlQoIUlzSW50ZWdlcjxHbG9iYWxPYmplY3Q+Ojp2YWx1ZSwgV1RG
X0lzSW50ZWdlcl9HbG9iYWxPYmplY3RfZmFsc2UpOwogQVNTRVJUX0NMQVNTX0ZJVFNfSU5fQ0VM
TChHbG9iYWxPYmplY3QpOwogCi1HbG9iYWxPYmplY3Q6Okdsb2JhbE9iamVjdChKU0dsb2JhbERh
dGEmIGdsb2JhbERhdGEsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBjb25zdCBWZWN0b3I8VVN0cmlu
Zz4mIGFyZ3VtZW50cykKK0dsb2JhbE9iamVjdDo6R2xvYmFsT2JqZWN0KEpTR2xvYmFsRGF0YSYg
Z2xvYmFsRGF0YSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAgICAgOiBKU0dsb2JhbE9iamVjdChn
bG9iYWxEYXRhLCBzdHJ1Y3R1cmUpCiB7Ci0gICAgcHV0RGlyZWN0RnVuY3Rpb24oZ2xvYmFsRXhl
YygpLCBKU0Z1bmN0aW9uOjpjcmVhdGUoZ2xvYmFsRXhlYygpLCB0aGlzLCBmdW5jdGlvblN0cnVj
dHVyZSgpLCAxLCBJZGVudGlmaWVyKGdsb2JhbEV4ZWMoKSwgImRlYnVnIiksIGZ1bmN0aW9uRGVi
dWcpKTsKLSAgICBwdXREaXJlY3RGdW5jdGlvbihnbG9iYWxFeGVjKCksIEpTRnVuY3Rpb246OmNy
ZWF0ZShnbG9iYWxFeGVjKCksIHRoaXMsIGZ1bmN0aW9uU3RydWN0dXJlKCksIDEsIElkZW50aWZp
ZXIoZ2xvYmFsRXhlYygpLCAicHJpbnQiKSwgZnVuY3Rpb25QcmludCkpOwotICAgIHB1dERpcmVj
dEZ1bmN0aW9uKGdsb2JhbEV4ZWMoKSwgSlNGdW5jdGlvbjo6Y3JlYXRlKGdsb2JhbEV4ZWMoKSwg
dGhpcywgZnVuY3Rpb25TdHJ1Y3R1cmUoKSwgMCwgSWRlbnRpZmllcihnbG9iYWxFeGVjKCksICJx
dWl0IiksIGZ1bmN0aW9uUXVpdCkpOwotICAgIHB1dERpcmVjdEZ1bmN0aW9uKGdsb2JhbEV4ZWMo
KSwgSlNGdW5jdGlvbjo6Y3JlYXRlKGdsb2JhbEV4ZWMoKSwgdGhpcywgZnVuY3Rpb25TdHJ1Y3R1
cmUoKSwgMCwgSWRlbnRpZmllcihnbG9iYWxFeGVjKCksICJnYyIpLCBmdW5jdGlvbkdDKSk7Ci0j
aWZuZGVmIE5ERUJVRwotICAgIHB1dERpcmVjdEZ1bmN0aW9uKGdsb2JhbEV4ZWMoKSwgSlNGdW5j
dGlvbjo6Y3JlYXRlKGdsb2JhbEV4ZWMoKSwgdGhpcywgZnVuY3Rpb25TdHJ1Y3R1cmUoKSwgMCwg
SWRlbnRpZmllcihnbG9iYWxFeGVjKCksICJyZWxlYXNlRXhlY3V0YWJsZU1lbW9yeSIpLCBmdW5j
dGlvblJlbGVhc2VFeGVjdXRhYmxlTWVtb3J5KSk7Ci0jZW5kaWYKLSAgICBwdXREaXJlY3RGdW5j
dGlvbihnbG9iYWxFeGVjKCksIEpTRnVuY3Rpb246OmNyZWF0ZShnbG9iYWxFeGVjKCksIHRoaXMs
IGZ1bmN0aW9uU3RydWN0dXJlKCksIDEsIElkZW50aWZpZXIoZ2xvYmFsRXhlYygpLCAidmVyc2lv
biIpLCBmdW5jdGlvblZlcnNpb24pKTsKLSAgICBwdXREaXJlY3RGdW5jdGlvbihnbG9iYWxFeGVj
KCksIEpTRnVuY3Rpb246OmNyZWF0ZShnbG9iYWxFeGVjKCksIHRoaXMsIGZ1bmN0aW9uU3RydWN0
dXJlKCksIDEsIElkZW50aWZpZXIoZ2xvYmFsRXhlYygpLCAicnVuIiksIGZ1bmN0aW9uUnVuKSk7
Ci0gICAgcHV0RGlyZWN0RnVuY3Rpb24oZ2xvYmFsRXhlYygpLCBKU0Z1bmN0aW9uOjpjcmVhdGUo
Z2xvYmFsRXhlYygpLCB0aGlzLCBmdW5jdGlvblN0cnVjdHVyZSgpLCAxLCBJZGVudGlmaWVyKGds
b2JhbEV4ZWMoKSwgImxvYWQiKSwgZnVuY3Rpb25Mb2FkKSk7Ci0gICAgcHV0RGlyZWN0RnVuY3Rp
b24oZ2xvYmFsRXhlYygpLCBKU0Z1bmN0aW9uOjpjcmVhdGUoZ2xvYmFsRXhlYygpLCB0aGlzLCBm
dW5jdGlvblN0cnVjdHVyZSgpLCAxLCBJZGVudGlmaWVyKGdsb2JhbEV4ZWMoKSwgImNoZWNrU3lu
dGF4IiksIGZ1bmN0aW9uQ2hlY2tTeW50YXgpKTsKLSAgICBwdXREaXJlY3RGdW5jdGlvbihnbG9i
YWxFeGVjKCksIEpTRnVuY3Rpb246OmNyZWF0ZShnbG9iYWxFeGVjKCksIHRoaXMsIGZ1bmN0aW9u
U3RydWN0dXJlKCksIDAsIElkZW50aWZpZXIoZ2xvYmFsRXhlYygpLCAicmVhZGxpbmUiKSwgZnVu
Y3Rpb25SZWFkbGluZSkpOwotICAgIHB1dERpcmVjdEZ1bmN0aW9uKGdsb2JhbEV4ZWMoKSwgSlNG
dW5jdGlvbjo6Y3JlYXRlKGdsb2JhbEV4ZWMoKSwgdGhpcywgZnVuY3Rpb25TdHJ1Y3R1cmUoKSwg
MCwgSWRlbnRpZmllcihnbG9iYWxFeGVjKCksICJwcmVjaXNlVGltZSIpLCBmdW5jdGlvblByZWNp
c2VUaW1lKSk7Ci0KLSNpZiBFTkFCTEUoU0FNUExJTkdfRkxBR1MpCi0gICAgcHV0RGlyZWN0RnVu
Y3Rpb24oZ2xvYmFsRXhlYygpLCBKU0Z1bmN0aW9uOjpjcmVhdGUoZ2xvYmFsRXhlYygpLCB0aGlz
LCBmdW5jdGlvblN0cnVjdHVyZSgpLCAxLCBJZGVudGlmaWVyKGdsb2JhbEV4ZWMoKSwgInNldFNh
bXBsaW5nRmxhZ3MiKSwgZnVuY3Rpb25TZXRTYW1wbGluZ0ZsYWdzKSk7Ci0gICAgcHV0RGlyZWN0
RnVuY3Rpb24oZ2xvYmFsRXhlYygpLCBKU0Z1bmN0aW9uOjpjcmVhdGUoZ2xvYmFsRXhlYygpLCB0
aGlzLCBmdW5jdGlvblN0cnVjdHVyZSgpLCAxLCBJZGVudGlmaWVyKGdsb2JhbEV4ZWMoKSwgImNs
ZWFyU2FtcGxpbmdGbGFncyIpLCBmdW5jdGlvbkNsZWFyU2FtcGxpbmdGbGFncykpOwotI2VuZGlm
Ci0KLSAgICBKU09iamVjdCogYXJyYXkgPSBjb25zdHJ1Y3RFbXB0eUFycmF5KGdsb2JhbEV4ZWMo
KSk7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBhcmd1bWVudHMuc2l6ZSgpOyArK2kpCi0g
ICAgICAgIGFycmF5LT5wdXQoZ2xvYmFsRXhlYygpLCBpLCBqc1N0cmluZyhnbG9iYWxFeGVjKCks
IGFyZ3VtZW50c1tpXSkpOwotICAgIHB1dERpcmVjdChnbG9iYWxFeGVjKCktPmdsb2JhbERhdGEo
KSwgSWRlbnRpZmllcihnbG9iYWxFeGVjKCksICJhcmd1bWVudHMiKSwgYXJyYXkpOwogfQogCiBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uUHJpbnQoRXhlY1N0YXRlKiBleGVj
KQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrRnVuY3Rpb24uY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja0Z1bmN0
aW9uLmNwcAkocmV2aXNpb24gOTIzOTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pT
Q2FsbGJhY2tGdW5jdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQyLDggKzQyLDggQEAgQVNT
RVJUX0NMQVNTX0ZJVFNfSU5fQ0VMTChKU0NhbGxiYWNrRnVuYwogCiBjb25zdCBDbGFzc0luZm8g
SlNDYWxsYmFja0Z1bmN0aW9uOjpzX2luZm8gPSB7ICJDYWxsYmFja0Z1bmN0aW9uIiwgJkludGVy
bmFsRnVuY3Rpb246OnNfaW5mbywgMCwgMCB9OwogCi1KU0NhbGxiYWNrRnVuY3Rpb246OkpTQ2Fs
bGJhY2tGdW5jdGlvbihFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIEpTT2JqZWN0Q2FsbEFzRnVuY3Rpb25DYWxsYmFjayBjYWxsYmFjaywgY29uc3QgSWRlbnRp
ZmllciYgbmFtZSkKLSAgICA6IEludGVybmFsRnVuY3Rpb24oJmV4ZWMtPmdsb2JhbERhdGEoKSwg
Z2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QtPmNhbGxiYWNrRnVuY3Rpb25TdHJ1Y3R1cmUoKSwg
bmFtZSkKK0pTQ2FsbGJhY2tGdW5jdGlvbjo6SlNDYWxsYmFja0Z1bmN0aW9uKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIEpTT2JqZWN0Q2FsbEFzRnVuY3Rpb25DYWxsYmFjayBjYWxsYmFj
aykKKyAgICA6IEludGVybmFsRnVuY3Rpb24oZ2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QtPmNh
bGxiYWNrRnVuY3Rpb25TdHJ1Y3R1cmUoKSkKICAgICAsIG1fY2FsbGJhY2soY2FsbGJhY2spCiB7
CiAgICAgQVNTRVJUKGluaGVyaXRzKCZzX2luZm8pKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9BUEkvSlNDYWxsYmFja0Z1bmN0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrRnVuY3Rpb24uaAkocmV2aXNpb24gOTIzOTMpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tGdW5jdGlvbi5oCSh3b3JraW5nIGNv
cHkpCkBAIC0zMywxMiArMzMsMTQgQEAgbmFtZXNwYWNlIEpTQyB7CiAKIGNsYXNzIEpTQ2FsbGJh
Y2tGdW5jdGlvbiA6IHB1YmxpYyBJbnRlcm5hbEZ1bmN0aW9uIHsKIHByb3RlY3RlZDoKLSAgICBK
U0NhbGxiYWNrRnVuY3Rpb24oRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqLCBKU09iamVjdENh
bGxBc0Z1bmN0aW9uQ2FsbGJhY2ssIGNvbnN0IElkZW50aWZpZXImIG5hbWUpOworICAgIEpTQ2Fs
bGJhY2tGdW5jdGlvbihKU0dsb2JhbE9iamVjdCosIEpTT2JqZWN0Q2FsbEFzRnVuY3Rpb25DYWxs
YmFjayk7CiAKIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDYWxsYmFja0Z1bmN0aW9uKiBjcmVhdGUo
RXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU09iamVjdENh
bGxBc0Z1bmN0aW9uQ2FsbGJhY2sgY2FsbGJhY2ssIGNvbnN0IElkZW50aWZpZXImIG5hbWUpCiAg
ICAgewotICAgICAgICByZXR1cm4gbmV3IChhbGxvY2F0ZUNlbGw8SlNDYWxsYmFja0Z1bmN0aW9u
PigqZXhlYy0+aGVhcCgpKSkgSlNDYWxsYmFja0Z1bmN0aW9uKGV4ZWMsIGdsb2JhbE9iamVjdCwg
Y2FsbGJhY2ssIG5hbWUpOworICAgICAgICBKU0NhbGxiYWNrRnVuY3Rpb24qIGNhbGxiYWNrRnVu
Y3Rpb24gPSBuZXcgKGFsbG9jYXRlQ2VsbDxKU0NhbGxiYWNrRnVuY3Rpb24+KCpleGVjLT5oZWFw
KCkpKSBKU0NhbGxiYWNrRnVuY3Rpb24oZ2xvYmFsT2JqZWN0LCBjYWxsYmFjayk7CisgICAgICAg
IGNhbGxiYWNrRnVuY3Rpb24tPmluaXRQcm9wZXJ0aWVzKGV4ZWMtPmdsb2JhbERhdGEoKSwgbmFt
ZSk7CisgICAgICAgIHJldHVybiBjYWxsYmFja0Z1bmN0aW9uOwogICAgIH0KIAogICAgIHN0YXRp
YyBjb25zdCBDbGFzc0luZm8gc19pbmZvOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5kZWYKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvai9K
YXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5kZWYJKHJldmlzaW9uIDkyMzkzKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9K
YXZhU2NyaXB0Q29yZS5kZWYJKHdvcmtpbmcgY29weSkKQEAgLTEwLDcgKzEwLDYgQEAgRVhQT1JU
UwogICAgID8/MEludGVybmFsRnVuY3Rpb25ASlNDQEBJQUVAUEFWSlNHbG9iYWxEYXRhQDFAUEFW
SlNHbG9iYWxPYmplY3RAMUBQQVZTdHJ1Y3R1cmVAMUBBQlZJZGVudGlmaWVyQDFAQFoKICAgICA/
PzBKU0FycmF5QEpTQ0BASUFFQEFBVkpTR2xvYmFsRGF0YUAxQFBBVlN0cnVjdHVyZUAxQEBaCiAg
ICAgPz8wSlNBcnJheUBKU0NAQElBRUBBQVZKU0dsb2JhbERhdGFAMUBQQVZTdHJ1Y3R1cmVAMUBB
QlZBcmdMaXN0QDFAQFoKLSAgICA/PzBKU0Z1bmN0aW9uQEpTQ0BAQUFFQFBBVkV4ZWNTdGF0ZUAx
QFBBVkpTR2xvYmFsT2JqZWN0QDFAUEFWU3RydWN0dXJlQDFASEFCVklkZW50aWZpZXJAMUBQNklf
SjBAWkBaCiAgICAgPz8wSlNMb2NrQEpTQ0BAUUFFQFBBVkV4ZWNTdGF0ZUAxQEBaCiAgICAgPz8w
SlNPYmplY3RXaXRoR2xvYmFsT2JqZWN0QEpTQ0BASUFFQEFBVkpTR2xvYmFsRGF0YUAxQFBBVkpT
R2xvYmFsT2JqZWN0QDFAUEFWU3RydWN0dXJlQDFAQFoKICAgICA/PzBKU09iamVjdFdpdGhHbG9i
YWxPYmplY3RASlNDQEBJQUVAUEFWSlNHbG9iYWxPYmplY3RAMUBQQVZTdHJ1Y3R1cmVAMUBAWgpA
QCAtMTksNyArMTgsNyBAQCBFWFBPUlRTCiAgICAgPz8wUmVmQ291bnRlZExlYWtDb3VudGVyQFdU
RkBAUUFFQFBCREBaCiAgICAgPz8wUmVnRXhwT2JqZWN0QEpTQ0BASUFFQFBBVkpTR2xvYmFsT2Jq
ZWN0QDFAUEFWU3RydWN0dXJlQDFAUEFWUmVnRXhwQDFAQFoKICAgICA/PzBTSEExQFdURkBAUUFF
QFhaCi0gICAgPz8wU3RyaW5nT2JqZWN0QEpTQ0BASUFFQFBBVkV4ZWNTdGF0ZUAxQFBBVlN0cnVj
dHVyZUAxQEFCVlVTdHJpbmdAMUBAWgorICAgID8/MFN0cmluZ09iamVjdEBKU0NAQElBRUBBQVZK
U0dsb2JhbERhdGFAMUBQQVZTdHJ1Y3R1cmVAMUBQQVZKU1N0cmluZ0AxQEBaCiAgICAgPz8wU3Ry
dWN0dXJlQEpTQ0BAQUFFQEFBVkpTR2xvYmFsRGF0YUAxQFZKU1ZhbHVlQDFAQUJWVHlwZUluZm9A
MUBJUEJVQ2xhc3NJbmZvQDFAQFoKICAgICA/PzBUaHJlYWRDb25kaXRpb25AV1RGQEBRQUVAWFoK
ICAgICA/PzBVU3RyaW5nQEpTQ0BAUUFFQFBCREBaCkBAIC05Niw2ICs5NSw3IEBAIEVYUE9SVFMK
ICAgICA/Y29udmVydFVURjhUb1VURjE2QFVuaWNvZGVAV1RGQEBZQT9BVzRDb252ZXJzaW9uUmVz
dWx0QDEyQFBBUEJEUEJEUEFQQV9XUEFfV19OQFoKICAgICA/Y3JlYXRlQEJ5dGVBcnJheUBXVEZA
QFNBP0FWPyRQYXNzUmVmUHRyQFZCeXRlQXJyYXlAV1RGQEBAMkBJQFoKICAgICA/Y3JlYXRlQEpT
Qnl0ZUFycmF5QEpTQ0BAU0FQQVYxMkBQQVZFeGVjU3RhdGVAMkBQQVZTdHJ1Y3R1cmVAMkBQQVZC
eXRlQXJyYXlAV1RGQEBAWgorICAgID9jcmVhdGVASlNGdW5jdGlvbkBKU0NAQFNBUEFWMTJAUEFW
RXhlY1N0YXRlQDJAUEFWSlNHbG9iYWxPYmplY3RAMkBQQVZTdHJ1Y3R1cmVAMkBIQUJWSWRlbnRp
ZmllckAyQFA2SV9KMEBaQFoKICAgICA/Y3JlYXRlQEpTR2xvYmFsRGF0YUBKU0NAQFNBP0FWPyRQ
YXNzUmVmUHRyQFZKU0dsb2JhbERhdGFASlNDQEBAV1RGQEBXNFRocmVhZFN0YWNrVHlwZUAyQFc0
SGVhcFNpemVAMkBAWgogICAgID9jcmVhdGVAT3BhcXVlSlNTdHJpbmdAQFNBP0FWPyRQYXNzUmVm
UHRyQFVPcGFxdWVKU1N0cmluZ0BAQFdURkBAQUJWVVN0cmluZ0BKU0NAQEBaCiAgICAgP2NyZWF0
ZUBSZWdFeHBASlNDQEBTQVBBVjEyQEFBVkpTR2xvYmFsRGF0YUAyQEFCVlVTdHJpbmdAMkBXNFJl
Z0V4cEZsYWdzQDJAQFoKQEAgLTIxNCw3ICsyMTQsNyBAQCBFWFBPUlRTCiAgICAgP2hlYXBASGVh
cEBKU0NAQFNBUEFWMTJAVkpTVmFsdWVAMkBAWgogICAgID9pbmNyZW1lbnRAUmVmQ291bnRlZExl
YWtDb3VudGVyQFdURkBAUUFFWFhaCiAgICAgP2luaXRAQXRvbWljU3RyaW5nQFdURkBAU0FYWFoK
LSAgICA/aW5pdEBKU0dsb2JhbE9iamVjdEBKU0NAQEFBRVhQQVZKU09iamVjdEAyQEBaCisgICAg
P2luaXRASlNHbG9iYWxPYmplY3RASlNDQEBJQUVYUEFWSlNPYmplY3RAMkBAWgogICAgID9pbml0
aWFsaXplTWFpblRocmVhZEBXVEZAQFlBWFhaCiAgICAgP2luaXRpYWxpemVUaHJlYWRpbmdASlND
QEBZQVhYWgogICAgID9pbml0aWFsaXplVGhyZWFkaW5nQFdURkBAWUFYWFoKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5Q29uc3RydWN0b3IuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5Q29uc3RydWN0b3IuY3BwCShy
ZXZpc2lvbiA5MjM5MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5Q29u
c3RydWN0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Miw3ICs1Miw3IEBAIGNvbnN0IENsYXNz
SW5mbyBBcnJheUNvbnN0cnVjdG9yOjpzX2luZm8KIEFTU0VSVF9DTEFTU19GSVRTX0lOX0NFTEwo
QXJyYXlDb25zdHJ1Y3Rvcik7CiAKIEFycmF5Q29uc3RydWN0b3I6OkFycmF5Q29uc3RydWN0b3Io
RXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSwgQXJyYXlQcm90b3R5cGUqIGFycmF5UHJvdG90eXBlKQotICAgIDogSW50ZXJu
YWxGdW5jdGlvbigmZXhlYy0+Z2xvYmFsRGF0YSgpLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwg
SWRlbnRpZmllcihleGVjLCBhcnJheVByb3RvdHlwZS0+Y2xhc3NJbmZvKCktPmNsYXNzTmFtZSkp
CisgICAgOiBJbnRlcm5hbEZ1bmN0aW9uKGdsb2JhbE9iamVjdCwgc3RydWN0dXJlKQogewogICAg
IHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+cHJv
cGVydHlOYW1lcygpLnByb3RvdHlwZSwgYXJyYXlQcm90b3R5cGUsIERvbnRFbnVtIHwgRG9udERl
bGV0ZSB8IFJlYWRPbmx5KTsKICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbihleGVjLT5n
bG9iYWxEYXRhKCksIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5sZW5ndGgsIGpzTnVtYmVyKDEpLCBS
ZWFkT25seSB8IERvbnRFbnVtIHwgRG9udERlbGV0ZSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9BcnJheUNvbnN0cnVjdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlDb25zdHJ1Y3Rvci5oCShyZXZpc2lvbiA5MjM5MykK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5Q29uc3RydWN0b3IuaAkod29y
a2luZyBjb3B5KQpAQCAtMjEsMjAgKzIxLDIxIEBACiAjaWZuZGVmIEFycmF5Q29uc3RydWN0b3Jf
aAogI2RlZmluZSBBcnJheUNvbnN0cnVjdG9yX2gKIAorI2luY2x1ZGUgIkFycmF5UHJvdG90eXBl
LmgiCiAjaW5jbHVkZSAiSW50ZXJuYWxGdW5jdGlvbi5oIgogCiBuYW1lc3BhY2UgSlNDIHsKIAot
ICAgIGNsYXNzIEFycmF5UHJvdG90eXBlOwotCiAgICAgY2xhc3MgQXJyYXlDb25zdHJ1Y3RvciA6
IHB1YmxpYyBJbnRlcm5hbEZ1bmN0aW9uIHsKICAgICBwcml2YXRlOgogICAgICAgICBBcnJheUNv
bnN0cnVjdG9yKEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgQXJyYXlQ
cm90b3R5cGUqKTsKICAgICAgICAgCiAgICAgcHVibGljOgotICAgICAgICBzdGF0aWMgQXJyYXlD
b25zdHJ1Y3RvciogY3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEFycmF5UHJvdG90eXBlKiBhcnJQcm90b3R5
cGUpCisgICAgICAgIHN0YXRpYyBBcnJheUNvbnN0cnVjdG9yKiBjcmVhdGUoRXhlY1N0YXRlKiBl
eGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwg
QXJyYXlQcm90b3R5cGUqIGFycmF5UHJvdG90eXBlKQogICAgICAgICB7Ci0gICAgICAgICAgICBy
ZXR1cm4gbmV3IChhbGxvY2F0ZUNlbGw8QXJyYXlDb25zdHJ1Y3Rvcj4oKmV4ZWMtPmhlYXAoKSkp
IEFycmF5Q29uc3RydWN0b3IoZXhlYywgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIGFyclByb3Rv
dHlwZSk7CisgICAgICAgICAgICBBcnJheUNvbnN0cnVjdG9yKiBjb25zdHJ1Y3RvciA9IG5ldyAo
YWxsb2NhdGVDZWxsPEFycmF5Q29uc3RydWN0b3I+KCpleGVjLT5oZWFwKCkpKSBBcnJheUNvbnN0
cnVjdG9yKGV4ZWMsIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBhcnJheVByb3RvdHlwZSk7Cisg
ICAgICAgICAgICBjb25zdHJ1Y3Rvci0+aW5pdFByb3BlcnRpZXMoZXhlYy0+Z2xvYmFsRGF0YSgp
LCBJZGVudGlmaWVyKGV4ZWMsIGFycmF5UHJvdG90eXBlLT5jbGFzc0luZm8oKS0+Y2xhc3NOYW1l
KSk7CisgICAgICAgICAgICByZXR1cm4gY29uc3RydWN0b3I7CiAgICAgICAgIH0KIAogICAgICAg
ICBzdGF0aWMgY29uc3QgQ2xhc3NJbmZvIHNfaW5mbzsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0Jvb2xlYW5Db25zdHJ1Y3Rvci5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQm9vbGVhbkNvbnN0cnVjdG9yLmNwcAkocmV2aXNpb24g
OTIzOTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Cb29sZWFuQ29uc3RydWN0
b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw3ICsyOSw3IEBAIG5hbWVzcGFjZSBKU0Mgewog
QVNTRVJUX0NMQVNTX0ZJVFNfSU5fQ0VMTChCb29sZWFuQ29uc3RydWN0b3IpOwogCiBCb29sZWFu
Q29uc3RydWN0b3I6OkJvb2xlYW5Db25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBCb29sZWFuUHJvdG90
eXBlKiBib29sZWFuUHJvdG90eXBlKQotICAgIDogSW50ZXJuYWxGdW5jdGlvbigmZXhlYy0+Z2xv
YmFsRGF0YSgpLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgSWRlbnRpZmllcihleGVjLCBib29s
ZWFuUHJvdG90eXBlLT5jbGFzc0luZm8oKS0+Y2xhc3NOYW1lKSkKKyAgICA6IEludGVybmFsRnVu
Y3Rpb24oZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUpCiB7CiAgICAgcHV0RGlyZWN0V2l0aG91dFRy
YW5zaXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkucHJvdG90
eXBlLCBib29sZWFuUHJvdG90eXBlLCBEb250RW51bSB8IERvbnREZWxldGUgfCBSZWFkT25seSk7
CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Jvb2xlYW5Db25zdHJ1Y3Rv
ci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Jvb2xlYW5D
b25zdHJ1Y3Rvci5oCShyZXZpc2lvbiA5MjM5MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0Jvb2xlYW5Db25zdHJ1Y3Rvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMSwyMCArMjEs
MjEgQEAKICNpZm5kZWYgQm9vbGVhbkNvbnN0cnVjdG9yX2gKICNkZWZpbmUgQm9vbGVhbkNvbnN0
cnVjdG9yX2gKIAorI2luY2x1ZGUgIkJvb2xlYW5Qcm90b3R5cGUuaCIKICNpbmNsdWRlICJJbnRl
cm5hbEZ1bmN0aW9uLmgiCiAKIG5hbWVzcGFjZSBKU0MgewogCi0gICAgY2xhc3MgQm9vbGVhblBy
b3RvdHlwZTsKLQogICAgIGNsYXNzIEJvb2xlYW5Db25zdHJ1Y3RvciA6IHB1YmxpYyBJbnRlcm5h
bEZ1bmN0aW9uIHsKICAgICBwcml2YXRlOgogICAgICAgICBCb29sZWFuQ29uc3RydWN0b3IoRXhl
Y1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBCb29sZWFuUHJvdG90eXBlKik7
CiAgICAgICAgIAogICAgIHB1YmxpYzoKLSAgICAgICAgc3RhdGljIEJvb2xlYW5Db25zdHJ1Y3Rv
ciogY3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEJvb2xlYW5Qcm90b3R5cGUqIGJvb2xQcm90b3R5cGUpCisg
ICAgICAgIHN0YXRpYyBCb29sZWFuQ29uc3RydWN0b3IqIGNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMs
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBCb29s
ZWFuUHJvdG90eXBlKiBib29sZWFuUHJvdG90eXBlKQogICAgICAgICB7Ci0gICAgICAgICAgICBy
ZXR1cm4gbmV3IChhbGxvY2F0ZUNlbGw8Qm9vbGVhbkNvbnN0cnVjdG9yPigqZXhlYy0+aGVhcCgp
KSkgQm9vbGVhbkNvbnN0cnVjdG9yKGV4ZWMsIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBib29s
UHJvdG90eXBlKTsKKyAgICAgICAgICAgIEJvb2xlYW5Db25zdHJ1Y3RvciogY29uc3RydWN0b3Ig
PSBuZXcgKGFsbG9jYXRlQ2VsbDxCb29sZWFuQ29uc3RydWN0b3I+KCpleGVjLT5oZWFwKCkpKSBC
b29sZWFuQ29uc3RydWN0b3IoZXhlYywgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIGJvb2xlYW5Q
cm90b3R5cGUpOworICAgICAgICAgICAgY29uc3RydWN0b3ItPmluaXRQcm9wZXJ0aWVzKGV4ZWMt
Pmdsb2JhbERhdGEoKSwgSWRlbnRpZmllcihleGVjLCBib29sZWFuUHJvdG90eXBlLT5jbGFzc0lu
Zm8oKS0+Y2xhc3NOYW1lKSk7CisgICAgICAgICAgICByZXR1cm4gY29uc3RydWN0b3I7CiAgICAg
ICAgIH0KIAogICAgIHByaXZhdGU6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9EYXRlQ29uc3RydWN0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0RhdGVDb25zdHJ1Y3Rvci5jcHAJKHJldmlzaW9uIDkyMzkzKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZUNvbnN0cnVjdG9yLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNzQsNyArNzQsNyBAQCBjb25zdCBDbGFzc0luZm8gRGF0ZUNvbnN0cnVjdG9yOjpzX2lu
Zm8gCiBBU1NFUlRfQ0xBU1NfRklUU19JTl9DRUxMKERhdGVDb25zdHJ1Y3Rvcik7CiAKIERhdGVD
b25zdHJ1Y3Rvcjo6RGF0ZUNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIERhdGVQcm90b3R5cGUqIGRh
dGVQcm90b3R5cGUpCi0gICAgOiBJbnRlcm5hbEZ1bmN0aW9uKCZleGVjLT5nbG9iYWxEYXRhKCks
IGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBJZGVudGlmaWVyKGV4ZWMsIGRhdGVQcm90b3R5cGUt
PmNsYXNzSW5mbygpLT5jbGFzc05hbWUpKQorICAgIDogSW50ZXJuYWxGdW5jdGlvbihnbG9iYWxP
YmplY3QsIHN0cnVjdHVyZSkKIHsKICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbihleGVj
LT5nbG9iYWxEYXRhKCksIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5wcm90b3R5cGUsIGRhdGVQcm90
b3R5cGUsIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KTsKICAgICBwdXREaXJlY3RX
aXRob3V0VHJhbnNpdGlvbihleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPnByb3BlcnR5TmFtZXMo
KS5sZW5ndGgsIGpzTnVtYmVyKDcpLCBSZWFkT25seSB8IERvbnRFbnVtIHwgRG9udERlbGV0ZSk7
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlQ29uc3RydWN0b3IuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlQ29uc3RydWN0
b3IuaAkocmV2aXNpb24gOTIzOTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9E
YXRlQ29uc3RydWN0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtMjEsMTIgKzIxLDExIEBACiAjaWZu
ZGVmIERhdGVDb25zdHJ1Y3Rvcl9oCiAjZGVmaW5lIERhdGVDb25zdHJ1Y3Rvcl9oCiAKKyNpbmNs
dWRlICJEYXRlUHJvdG90eXBlLmgiCiAjaW5jbHVkZSAiSW50ZXJuYWxGdW5jdGlvbi5oIgogCiBu
YW1lc3BhY2UgSlNDIHsKIAotICAgIGNsYXNzIERhdGVQcm90b3R5cGU7Ci0KICAgICBjbGFzcyBE
YXRlQ29uc3RydWN0b3IgOiBwdWJsaWMgSW50ZXJuYWxGdW5jdGlvbiB7CiAgICAgcHJpdmF0ZToK
ICAgICAgICAgRGF0ZUNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KiwgU3Ry
dWN0dXJlKiwgRGF0ZVByb3RvdHlwZSopOwpAQCAtMzQsNyArMzMsOSBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICBwdWJsaWM6CiAgICAgICAgIHN0YXRpYyBEYXRlQ29uc3RydWN0b3IqIGNyZWF0ZShF
eGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSog
c3RydWN0dXJlLCBEYXRlUHJvdG90eXBlKiBkYXRlUHJvdG90eXBlKQogICAgICAgICB7Ci0gICAg
ICAgICAgICByZXR1cm4gbmV3IChhbGxvY2F0ZUNlbGw8RGF0ZUNvbnN0cnVjdG9yPigqZXhlYy0+
aGVhcCgpKSkgRGF0ZUNvbnN0cnVjdG9yKGV4ZWMsIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBk
YXRlUHJvdG90eXBlKTsKKyAgICAgICAgICAgIERhdGVDb25zdHJ1Y3RvciogY29uc3RydWN0b3Ig
PSBuZXcgKGFsbG9jYXRlQ2VsbDxEYXRlQ29uc3RydWN0b3I+KCpleGVjLT5oZWFwKCkpKSBEYXRl
Q29uc3RydWN0b3IoZXhlYywgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIGRhdGVQcm90b3R5cGUp
OworICAgICAgICAgICAgY29uc3RydWN0b3ItPmluaXRQcm9wZXJ0aWVzKGV4ZWMtPmdsb2JhbERh
dGEoKSwgSWRlbnRpZmllcihleGVjLCBkYXRlUHJvdG90eXBlLT5jbGFzc0luZm8oKS0+Y2xhc3NO
YW1lKSk7CisgICAgICAgICAgICByZXR1cm4gY29uc3RydWN0b3I7CiAgICAgICAgIH0KIAogICAg
ICAgICBzdGF0aWMgY29uc3QgQ2xhc3NJbmZvIHNfaW5mbzsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0Vycm9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9FcnJvci5jcHAJKHJldmlzaW9uIDkyMzkzKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvRXJyb3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNjcsOCArMTY3
LDggQEAgSlNPYmplY3QqIHRocm93U3ludGF4RXJyb3IoRXhlY1N0YXRlKiBleAogCiBjbGFzcyBT
dHJpY3RNb2RlVHlwZUVycm9yRnVuY3Rpb24gOiBwdWJsaWMgSW50ZXJuYWxGdW5jdGlvbiB7CiBw
cml2YXRlOgotICAgIFN0cmljdE1vZGVUeXBlRXJyb3JGdW5jdGlvbihFeGVjU3RhdGUqIGV4ZWMs
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBjb25z
dCBVU3RyaW5nJiBtZXNzYWdlKQotICAgICAgICA6IEludGVybmFsRnVuY3Rpb24oJmV4ZWMtPmds
b2JhbERhdGEoKSwgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIGV4ZWMtPmdsb2JhbERhdGEoKS5w
cm9wZXJ0eU5hbWVzLT5lbXB0eUlkZW50aWZpZXIpCisgICAgU3RyaWN0TW9kZVR5cGVFcnJvckZ1
bmN0aW9uKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJl
LCBjb25zdCBVU3RyaW5nJiBtZXNzYWdlKQorICAgICAgICA6IEludGVybmFsRnVuY3Rpb24oZ2xv
YmFsT2JqZWN0LCBzdHJ1Y3R1cmUpCiAgICAgICAgICwgbV9tZXNzYWdlKG1lc3NhZ2UpCiAgICAg
ewogICAgIH0KQEAgLTE3Niw3ICsxNzYsOSBAQCBwcml2YXRlOgogcHVibGljOgogICAgIHN0YXRp
YyBTdHJpY3RNb2RlVHlwZUVycm9yRnVuY3Rpb24qIGNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBjb25zdCBV
U3RyaW5nJiBtZXNzYWdlKQogICAgIHsKLSAgICAgICAgcmV0dXJuIG5ldyAoYWxsb2NhdGVDZWxs
PFN0cmljdE1vZGVUeXBlRXJyb3JGdW5jdGlvbj4oKmV4ZWMtPmhlYXAoKSkpIFN0cmljdE1vZGVU
eXBlRXJyb3JGdW5jdGlvbihleGVjLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgbWVzc2FnZSk7
CisgICAgICAgIFN0cmljdE1vZGVUeXBlRXJyb3JGdW5jdGlvbiogZnVuY3Rpb24gPSBuZXcgKGFs
bG9jYXRlQ2VsbDxTdHJpY3RNb2RlVHlwZUVycm9yRnVuY3Rpb24+KCpleGVjLT5oZWFwKCkpKSBT
dHJpY3RNb2RlVHlwZUVycm9yRnVuY3Rpb24oZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIG1lc3Nh
Z2UpOworICAgICAgICBmdW5jdGlvbi0+aW5pdFByb3BlcnRpZXMoZXhlYy0+Z2xvYmFsRGF0YSgp
LCBleGVjLT5nbG9iYWxEYXRhKCkucHJvcGVydHlOYW1lcy0+ZW1wdHlJZGVudGlmaWVyKTsKKyAg
ICAgICAgcmV0dXJuIGZ1bmN0aW9uOwogICAgIH0KICAgICAKICAgICBzdGF0aWMgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RUaHJvd1R5cGVFcnJvcihFeGVjU3RhdGUqIGV4
ZWMpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvckNvbnN0cnVjdG9y
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvckNv
bnN0cnVjdG9yLmNwcAkocmV2aXNpb24gOTIzOTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9FcnJvckNvbnN0cnVjdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAsNyArMzAs
NyBAQCBuYW1lc3BhY2UgSlNDIHsKIEFTU0VSVF9DTEFTU19GSVRTX0lOX0NFTEwoRXJyb3JDb25z
dHJ1Y3Rvcik7CiAKIEVycm9yQ29uc3RydWN0b3I6OkVycm9yQ29uc3RydWN0b3IoRXhlY1N0YXRl
KiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSwgRXJyb3JQcm90b3R5cGUqIGVycm9yUHJvdG90eXBlKQotICAgIDogSW50ZXJuYWxGdW5jdGlv
bigmZXhlYy0+Z2xvYmFsRGF0YSgpLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgSWRlbnRpZmll
cihleGVjLCBlcnJvclByb3RvdHlwZS0+Y2xhc3NJbmZvKCktPmNsYXNzTmFtZSkpCisgICAgOiBJ
bnRlcm5hbEZ1bmN0aW9uKGdsb2JhbE9iamVjdCwgc3RydWN0dXJlKQogewogICAgIC8vIEVDTUEg
MTUuMTEuMy4xIEVycm9yLnByb3RvdHlwZQogICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9u
KGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLnByb3RvdHlwZSwgZXJy
b3JQcm90b3R5cGUsIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KTsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yQ29uc3RydWN0b3IuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvckNvbnN0cnVjdG9yLmgJKHJl
dmlzaW9uIDkyMzkzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JDb25z
dHJ1Y3Rvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMiw2ICsyMiw3IEBACiAjZGVmaW5lIEVycm9y
Q29uc3RydWN0b3JfaAogCiAjaW5jbHVkZSAiRXJyb3JJbnN0YW5jZS5oIgorI2luY2x1ZGUgIkVy
cm9yUHJvdG90eXBlLmgiCiAjaW5jbHVkZSAiSW50ZXJuYWxGdW5jdGlvbi5oIgogCiBuYW1lc3Bh
Y2UgSlNDIHsKQEAgLTMzLDkgKzM0LDExIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBFcnJv
ckNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgRXJy
b3JQcm90b3R5cGUqKTsKIAogICAgIHB1YmxpYzoKLSAgICAgICAgc3RhdGljIEVycm9yQ29uc3Ry
dWN0b3IqIGNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBFcnJvclByb3RvdHlwZSogZXJyUHJvdG90eXBlKQor
ICAgICAgICBzdGF0aWMgRXJyb3JDb25zdHJ1Y3RvciogY3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywg
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEVycm9y
UHJvdG90eXBlKiBlcnJvclByb3RvdHlwZSkKICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJu
IG5ldyAoYWxsb2NhdGVDZWxsPEVycm9yQ29uc3RydWN0b3I+KCpleGVjLT5oZWFwKCkpKSBFcnJv
ckNvbnN0cnVjdG9yKGV4ZWMsIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBlcnJQcm90b3R5cGUp
OworICAgICAgICAgICAgRXJyb3JDb25zdHJ1Y3RvciogY29uc3RydWN0b3IgPSBuZXcgKGFsbG9j
YXRlQ2VsbDxFcnJvckNvbnN0cnVjdG9yPigqZXhlYy0+aGVhcCgpKSkgRXJyb3JDb25zdHJ1Y3Rv
cihleGVjLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgZXJyb3JQcm90b3R5cGUpOworICAgICAg
ICAgICAgY29uc3RydWN0b3ItPmluaXRQcm9wZXJ0aWVzKGV4ZWMtPmdsb2JhbERhdGEoKSwgSWRl
bnRpZmllcihleGVjLCBlcnJvclByb3RvdHlwZS0+Y2xhc3NJbmZvKCktPmNsYXNzTmFtZSkpOwor
ICAgICAgICAgICAgcmV0dXJuIGNvbnN0cnVjdG9yOwogICAgICAgICB9CiAgICAgICAgIAogICAg
IHByaXZhdGU6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvckluc3Rh
bmNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJv
ckluc3RhbmNlLmNwcAkocmV2aXNpb24gOTIzOTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9FcnJvckluc3RhbmNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAsMjcgKzMwLDI4
IEBAIEVycm9ySW5zdGFuY2U6OkVycm9ySW5zdGFuY2UoSlNHbG9iYWxEYXQKICAgICAsIG1fYXBw
ZW5kU291cmNlVG9NZXNzYWdlKGZhbHNlKQogewogICAgIEFTU0VSVChpbmhlcml0cygmc19pbmZv
KSk7Ci0gICAgcHV0RGlyZWN0KGdsb2JhbERhdGEsIGdsb2JhbERhdGEucHJvcGVydHlOYW1lcy0+
bWVzc2FnZSwganNTdHJpbmcoJmdsb2JhbERhdGEsICIiKSwgRG9udEVudW0pOwotfQotCi1FcnJv
ckluc3RhbmNlOjpFcnJvckluc3RhbmNlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgU3RydWN0
dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IFVTdHJpbmcmIG1lc3NhZ2UpCi0gICAgOiBKU05vbkZpbmFs
T2JqZWN0KGdsb2JhbERhdGEsIHN0cnVjdHVyZSkKLSAgICAsIG1fYXBwZW5kU291cmNlVG9NZXNz
YWdlKGZhbHNlKQotewotICAgIEFTU0VSVChpbmhlcml0cygmc19pbmZvKSk7Ci0gICAgcHV0RGly
ZWN0KGdsb2JhbERhdGEsIGdsb2JhbERhdGEucHJvcGVydHlOYW1lcy0+bWVzc2FnZSwganNTdHJp
bmcoJmdsb2JhbERhdGEsIG1lc3NhZ2UpLCBEb250RW51bSk7CiB9CiAKIEVycm9ySW5zdGFuY2Uq
IEVycm9ySW5zdGFuY2U6OmNyZWF0ZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFN0cnVjdHVy
ZSogc3RydWN0dXJlLCBjb25zdCBVU3RyaW5nJiBtZXNzYWdlKQogewotICAgIHJldHVybiBuZXcg
KGFsbG9jYXRlQ2VsbDxFcnJvckluc3RhbmNlPihnbG9iYWxEYXRhLmhlYXApKSBFcnJvckluc3Rh
bmNlKGdsb2JhbERhdGEsIHN0cnVjdHVyZSwgbWVzc2FnZSk7CisgICAgRXJyb3JJbnN0YW5jZSog
ZXJyb3JJbnN0YW5jZSA9IG5ldyAoYWxsb2NhdGVDZWxsPEVycm9ySW5zdGFuY2U+KGdsb2JhbERh
dGEuaGVhcCkpIEVycm9ySW5zdGFuY2UoZ2xvYmFsRGF0YSwgc3RydWN0dXJlKTsKKyAgICBlcnJv
ckluc3RhbmNlLT5wdXREaXJlY3QoZ2xvYmFsRGF0YSwgZ2xvYmFsRGF0YS5wcm9wZXJ0eU5hbWVz
LT5tZXNzYWdlLCBqc1N0cmluZygmZ2xvYmFsRGF0YSwgbWVzc2FnZSksIERvbnRFbnVtKTsKKyAg
ICByZXR1cm4gZXJyb3JJbnN0YW5jZTsKIH0KIAogRXJyb3JJbnN0YW5jZSogRXJyb3JJbnN0YW5j
ZTo6Y3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTVmFsdWUg
bWVzc2FnZSkKIHsKLSAgICBpZiAobWVzc2FnZS5pc1VuZGVmaW5lZCgpKQotICAgICAgICByZXR1
cm4gbmV3IChhbGxvY2F0ZUNlbGw8RXJyb3JJbnN0YW5jZT4oKmV4ZWMtPmhlYXAoKSkpIEVycm9y
SW5zdGFuY2UoZXhlYy0+Z2xvYmFsRGF0YSgpLCBzdHJ1Y3R1cmUpOwotICAgIHJldHVybiBuZXcg
KGFsbG9jYXRlQ2VsbDxFcnJvckluc3RhbmNlPigqZXhlYy0+aGVhcCgpKSkgRXJyb3JJbnN0YW5j
ZShleGVjLT5nbG9iYWxEYXRhKCksIHN0cnVjdHVyZSwgbWVzc2FnZS50b1N0cmluZyhleGVjKSk7
CisgICAgRXJyb3JJbnN0YW5jZSogZXJyb3JJbnN0YW5jZTsKKyAgICBKU1N0cmluZyogc3RyaW5n
OworICAgIGlmIChtZXNzYWdlLmlzVW5kZWZpbmVkKCkpIHsKKyAgICAgICAgZXJyb3JJbnN0YW5j
ZSA9IG5ldyAoYWxsb2NhdGVDZWxsPEVycm9ySW5zdGFuY2U+KCpleGVjLT5oZWFwKCkpKSBFcnJv
ckluc3RhbmNlKGV4ZWMtPmdsb2JhbERhdGEoKSwgc3RydWN0dXJlKTsKKyAgICAgICAgc3RyaW5n
ID0ganNTdHJpbmcoJmV4ZWMtPmdsb2JhbERhdGEoKSwgIiIpOworICAgIH0gZWxzZSB7CisgICAg
ICAgIGVycm9ySW5zdGFuY2UgPSBuZXcgKGFsbG9jYXRlQ2VsbDxFcnJvckluc3RhbmNlPigqZXhl
Yy0+aGVhcCgpKSkgRXJyb3JJbnN0YW5jZShleGVjLT5nbG9iYWxEYXRhKCksIHN0cnVjdHVyZSk7
CisgICAgICAgIHN0cmluZyA9IGpzU3RyaW5nKCZleGVjLT5nbG9iYWxEYXRhKCksIG1lc3NhZ2Uu
dG9TdHJpbmcoZXhlYykpOworICAgIH0KKyAgICBlcnJvckluc3RhbmNlLT5wdXREaXJlY3QoZXhl
Yy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5nbG9iYWxEYXRhKCkucHJvcGVydHlOYW1lcy0+bWVzc2Fn
ZSwgc3RyaW5nLCBEb250RW51bSk7CisgICAgcmV0dXJuIGVycm9ySW5zdGFuY2U7CiB9CiAKIH0g
Ly8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJy
b3JJbnN0YW5jZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0Vycm9ySW5zdGFuY2UuaAkocmV2aXNpb24gOTIzOTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9FcnJvckluc3RhbmNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDggKzQ1LDcg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc0Vycm9ySW5zdGFuY2Uo
KSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAKICAgICBwcm90ZWN0ZWQ6Ci0gICAgICAgIGV4cGxp
Y2l0IEVycm9ySW5zdGFuY2UoSlNHbG9iYWxEYXRhJiwgU3RydWN0dXJlKik7Ci0gICAgICAgIGV4
cGxpY2l0IEVycm9ySW5zdGFuY2UoSlNHbG9iYWxEYXRhJiwgU3RydWN0dXJlKiwgY29uc3QgVVN0
cmluZyYpOworICAgICAgICBFcnJvckluc3RhbmNlKEpTR2xvYmFsRGF0YSYsIFN0cnVjdHVyZSop
OwogCiAgICAgICAgIGJvb2wgbV9hcHBlbmRTb3VyY2VUb01lc3NhZ2U7CiAgICAgfTsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yUHJvdG90eXBlLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvclByb3RvdHlwZS5jcHAJ
KHJldmlzaW9uIDkyMzkzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JQ
cm90b3R5cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Myw4ICs1Myw2IEBAIEFTU0VSVF9DTEFT
U19GSVRTX0lOX0NFTEwoRXJyb3JQcm90b3R5cGUKIEVycm9yUHJvdG90eXBlOjpFcnJvclByb3Rv
dHlwZShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVj
dHVyZSogc3RydWN0dXJlKQogICAgIDogRXJyb3JJbnN0YW5jZShleGVjLT5nbG9iYWxEYXRhKCks
IHN0cnVjdHVyZSkKIHsKLSAgICBwdXREaXJlY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5w
cm9wZXJ0eU5hbWVzKCkubmFtZSwganNOb250cml2aWFsU3RyaW5nKGV4ZWMsICJFcnJvciIpLCBE
b250RW51bSk7Ci0KICAgICBBU1NFUlQoaW5oZXJpdHMoJnNfaW5mbykpOwogICAgIHB1dEFub255
bW91c1ZhbHVlKGdsb2JhbE9iamVjdC0+Z2xvYmFsRGF0YSgpLCAwLCBnbG9iYWxPYmplY3QpOwog
fQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JQcm90b3R5cGUuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvclByb3RvdHlw
ZS5oCShyZXZpc2lvbiA5MjM5MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vy
cm9yUHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM0LDcgKzM0LDkgQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgcHVibGljOgogICAgICAgICBzdGF0aWMgRXJyb3JQcm90b3R5cGUqIGNyZWF0
ZShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVy
ZSogc3RydWN0dXJlKQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gbmV3IChhbGxvY2F0
ZUNlbGw8RXJyb3JQcm90b3R5cGU+KCpleGVjLT5oZWFwKCkpKSBFcnJvclByb3RvdHlwZShleGVj
LCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSk7CisgICAgICAgICAgICBFcnJvclByb3RvdHlwZSog
ZXJyb3JQcm90b3R5cGUgPSBuZXcgKGFsbG9jYXRlQ2VsbDxFcnJvclByb3RvdHlwZT4oKmV4ZWMt
PmhlYXAoKSkpIEVycm9yUHJvdG90eXBlKGV4ZWMsIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlKTsK
KyAgICAgICAgICAgIGVycm9yUHJvdG90eXBlLT5wdXREaXJlY3QoZXhlYy0+Z2xvYmFsRGF0YSgp
LCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkubmFtZSwganNOb250cml2aWFsU3RyaW5nKGV4ZWMsICJF
cnJvciIpLCBEb250RW51bSk7CisgICAgICAgICAgICByZXR1cm4gZXJyb3JQcm90b3R5cGU7CiAg
ICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIHN0YXRpYyBjb25zdCBDbGFzc0luZm8gc19pbmZv
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5jcHAJ
KHJldmlzaW9uIDkyMzkzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0
YWJsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0NCw3ICsxNDQsNiBAQCBGdW5jdGlvbkV4ZWN1
dGFibGU6OkZ1bmN0aW9uRXhlY3V0YWJsZShKCiB7CiAgICAgbV9maXJzdExpbmUgPSBmaXJzdExp
bmU7CiAgICAgbV9sYXN0TGluZSA9IGxhc3RMaW5lOwotICAgIG1fbmFtZVZhbHVlLnNldChnbG9i
YWxEYXRhLCB0aGlzLCBqc1N0cmluZygmZ2xvYmFsRGF0YSwgbmFtZS51c3RyaW5nKCkpKTsKIH0K
IAogRnVuY3Rpb25FeGVjdXRhYmxlOjpGdW5jdGlvbkV4ZWN1dGFibGUoRXhlY1N0YXRlKiBleGVj
LCBjb25zdCBJZGVudGlmaWVyJiBuYW1lLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIGJvb2wg
Zm9yY2VVc2VzQXJndW1lbnRzLCBGdW5jdGlvblBhcmFtZXRlcnMqIHBhcmFtZXRlcnMsIGJvb2wg
aW5TdHJpY3RDb250ZXh0LCBpbnQgZmlyc3RMaW5lLCBpbnQgbGFzdExpbmUpCkBAIC0xNTcsNyAr
MTU2LDYgQEAgRnVuY3Rpb25FeGVjdXRhYmxlOjpGdW5jdGlvbkV4ZWN1dGFibGUoRQogewogICAg
IG1fZmlyc3RMaW5lID0gZmlyc3RMaW5lOwogICAgIG1fbGFzdExpbmUgPSBsYXN0TGluZTsKLSAg
ICBtX25hbWVWYWx1ZS5zZXQoZXhlYy0+Z2xvYmFsRGF0YSgpLCB0aGlzLCBqc1N0cmluZygmZXhl
Yy0+Z2xvYmFsRGF0YSgpLCBuYW1lLnVzdHJpbmcoKSkpOwogfQogCiAKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmgJKHJldmlzaW9uIDkyMzkzKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xNzgsNyArMTc4LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAjZWxzZQogICAgICAgICBzdGF0
aWMgTmF0aXZlRXhlY3V0YWJsZSogY3JlYXRlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgTmF0
aXZlRnVuY3Rpb24gZnVuY3Rpb24sIE5hdGl2ZUZ1bmN0aW9uIGNvbnN0cnVjdG9yKQogICAgICAg
ICB7Ci0gICAgICAgICAgICByZXR1cm4gbmV3IChhbGxvY2F0ZUNlbGw8TmF0aXZlRXhlY3V0YWJs
ZT4oZ2xvYmFsRGF0YS5oZWFwKSkgTmF0aXZlRXhlY3V0YWJsZShnbG9iYWxEYXRhLCBmdW5jdGlv
biwgY29uc3RydWN0b3IpOworICAgICAgICAgICAgcmV0dXJuIG5ldyAoYWxsb2NhdGVDZWxsPE5h
dGl2ZUV4ZWN1dGFibGU+KGdsb2JhbERhdGEuaGVhcCkpIE5hdGl2ZUV4ZWN1dGFibGUoZ2xvYmFs
RGF0YSwgZnVuY3Rpb24sIGNvbnN0cnVjdG9yKSk7CiAgICAgICAgIH0KICNlbmRpZgogCkBAIC0y
OTgsNyArMjk4LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgc3RhdGljIEV2YWxFeGVj
dXRhYmxlKiBjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2Us
IGJvb2wgaXNJblN0cmljdENvbnRleHQpIAogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4g
bmV3IChhbGxvY2F0ZUNlbGw8RXZhbEV4ZWN1dGFibGU+KCpleGVjLT5oZWFwKCkpKSBFdmFsRXhl
Y3V0YWJsZShleGVjLCBzb3VyY2UsIGlzSW5TdHJpY3RDb250ZXh0KTsgCisgICAgICAgICAgICBy
ZXR1cm4gbmV3IChhbGxvY2F0ZUNlbGw8RXZhbEV4ZWN1dGFibGU+KCpleGVjLT5oZWFwKCkpKSBF
dmFsRXhlY3V0YWJsZShleGVjLCBzb3VyY2UsIGlzSW5TdHJpY3RDb250ZXh0KTsKICAgICAgICAg
fQogCiAjaWYgRU5BQkxFKEpJVCkKQEAgLTM4MSwxMiArMzgxLDE4IEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgIHB1YmxpYzoKICAgICAgICAgc3RhdGljIEZ1bmN0aW9uRXhlY3V0YWJsZSogY3JlYXRl
KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgbmFtZSwgY29uc3QgU291cmNlQ29k
ZSYgc291cmNlLCBib29sIGZvcmNlVXNlc0FyZ3VtZW50cywgRnVuY3Rpb25QYXJhbWV0ZXJzKiBw
YXJhbWV0ZXJzLCBib29sIGlzSW5TdHJpY3RDb250ZXh0LCBpbnQgZmlyc3RMaW5lLCBpbnQgbGFz
dExpbmUpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBuZXcgKGFsbG9jYXRlQ2VsbDxG
dW5jdGlvbkV4ZWN1dGFibGU+KCpleGVjLT5oZWFwKCkpKSBGdW5jdGlvbkV4ZWN1dGFibGUoZXhl
YywgbmFtZSwgc291cmNlLCBmb3JjZVVzZXNBcmd1bWVudHMsIHBhcmFtZXRlcnMsIGlzSW5TdHJp
Y3RDb250ZXh0LCBmaXJzdExpbmUsIGxhc3RMaW5lKTsKKyAgICAgICAgICAgIEZ1bmN0aW9uRXhl
Y3V0YWJsZSogZnVuY3Rpb24gPSBuZXcgKGFsbG9jYXRlQ2VsbDxGdW5jdGlvbkV4ZWN1dGFibGU+
KCpleGVjLT5oZWFwKCkpKSBGdW5jdGlvbkV4ZWN1dGFibGUoZXhlYywgbmFtZSwgc291cmNlLCBm
b3JjZVVzZXNBcmd1bWVudHMsIHBhcmFtZXRlcnMsIGlzSW5TdHJpY3RDb250ZXh0LCBmaXJzdExp
bmUsIGxhc3RMaW5lKTsKKyAgICAgICAgICAgIEpTU3RyaW5nKiBuYW1lU3RyaW5nID0ganNTdHJp
bmcoJmV4ZWMtPmdsb2JhbERhdGEoKSwgbmFtZS51c3RyaW5nKCkpOworICAgICAgICAgICAgZnVu
Y3Rpb24tPm1fbmFtZVZhbHVlLnNldChleGVjLT5nbG9iYWxEYXRhKCksIGZ1bmN0aW9uLCBuYW1l
U3RyaW5nKTsKKyAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbjsKICAgICAgICAgfQogCiAgICAg
ICAgIHN0YXRpYyBGdW5jdGlvbkV4ZWN1dGFibGUqIGNyZWF0ZShKU0dsb2JhbERhdGEmIGdsb2Jh
bERhdGEsIGNvbnN0IElkZW50aWZpZXImIG5hbWUsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwg
Ym9vbCBmb3JjZVVzZXNBcmd1bWVudHMsIEZ1bmN0aW9uUGFyYW1ldGVycyogcGFyYW1ldGVycywg
Ym9vbCBpc0luU3RyaWN0Q29udGV4dCwgaW50IGZpcnN0TGluZSwgaW50IGxhc3RMaW5lKQogICAg
ICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gbmV3IChhbGxvY2F0ZUNlbGw8RnVuY3Rpb25FeGVj
dXRhYmxlPihnbG9iYWxEYXRhLmhlYXApKSBGdW5jdGlvbkV4ZWN1dGFibGUoZ2xvYmFsRGF0YSwg
bmFtZSwgc291cmNlLCBmb3JjZVVzZXNBcmd1bWVudHMsIHBhcmFtZXRlcnMsIGlzSW5TdHJpY3RD
b250ZXh0LCBmaXJzdExpbmUsIGxhc3RMaW5lKTsKKyAgICAgICAgICAgIEZ1bmN0aW9uRXhlY3V0
YWJsZSogZnVuY3Rpb24gPSBuZXcgKGFsbG9jYXRlQ2VsbDxGdW5jdGlvbkV4ZWN1dGFibGU+KGds
b2JhbERhdGEuaGVhcCkpIEZ1bmN0aW9uRXhlY3V0YWJsZShnbG9iYWxEYXRhLCBuYW1lLCBzb3Vy
Y2UsIGZvcmNlVXNlc0FyZ3VtZW50cywgcGFyYW1ldGVycywgaXNJblN0cmljdENvbnRleHQsIGZp
cnN0TGluZSwgbGFzdExpbmUpOworICAgICAgICAgICAgSlNTdHJpbmcqIG5hbWVTdHJpbmcgPSBq
c1N0cmluZygmZ2xvYmFsRGF0YSwgbmFtZS51c3RyaW5nKCkpOworICAgICAgICAgICAgZnVuY3Rp
b24tPm1fbmFtZVZhbHVlLnNldChnbG9iYWxEYXRhLCBmdW5jdGlvbiwgbmFtZVN0cmluZyk7Cisg
ICAgICAgICAgICByZXR1cm4gZnVuY3Rpb247CiAgICAgICAgIH0KIAogICAgICAgICBKU0Z1bmN0
aW9uKiBtYWtlKEV4ZWNTdGF0ZSogZXhlYywgU2NvcGVDaGFpbk5vZGUqIHNjb3BlQ2hhaW4pCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkNv
bnN0cnVjdG9yLmNwcAkocmV2aXNpb24gOTIzOTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzgsNyAr
MzgsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIEFTU0VSVF9DTEFTU19GSVRTX0lOX0NFTEwoRnVuY3Rp
b25Db25zdHJ1Y3Rvcik7CiAKIEZ1bmN0aW9uQ29uc3RydWN0b3I6OkZ1bmN0aW9uQ29uc3RydWN0
b3IoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSwgRnVuY3Rpb25Qcm90b3R5cGUqIGZ1bmN0aW9uUHJvdG90eXBlKQotICAg
IDogSW50ZXJuYWxGdW5jdGlvbigmZXhlYy0+Z2xvYmFsRGF0YSgpLCBnbG9iYWxPYmplY3QsIHN0
cnVjdHVyZSwgSWRlbnRpZmllcihleGVjLCBmdW5jdGlvblByb3RvdHlwZS0+Y2xhc3NJbmZvKCkt
PmNsYXNzTmFtZSkpCisgICAgOiBJbnRlcm5hbEZ1bmN0aW9uKGdsb2JhbE9iamVjdCwgc3RydWN0
dXJlKQogewogICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKGV4ZWMtPmdsb2JhbERhdGEo
KSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLnByb3RvdHlwZSwgZnVuY3Rpb25Qcm90b3R5cGUsIERv
bnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KTsKIApJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Db25zdHJ1Y3Rvci5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uQ29uc3RydWN0b3IuaAkocmV2aXNpb24g
OTIzOTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkNvbnN0cnVj
dG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTIxLDIwICsyMSwyMSBAQAogI2lmbmRlZiBGdW5jdGlv
bkNvbnN0cnVjdG9yX2gKICNkZWZpbmUgRnVuY3Rpb25Db25zdHJ1Y3Rvcl9oCiAKKyNpbmNsdWRl
ICJGdW5jdGlvblByb3RvdHlwZS5oIgogI2luY2x1ZGUgIkludGVybmFsRnVuY3Rpb24uaCIKIAog
bmFtZXNwYWNlIEpTQyB7CiAKLSAgICBjbGFzcyBGdW5jdGlvblByb3RvdHlwZTsKLQogICAgIGNs
YXNzIEZ1bmN0aW9uQ29uc3RydWN0b3IgOiBwdWJsaWMgSW50ZXJuYWxGdW5jdGlvbiB7CiAgICAg
cHJpdmF0ZToKICAgICAgICAgRnVuY3Rpb25Db25zdHJ1Y3RvcihFeGVjU3RhdGUqLCBKU0dsb2Jh
bE9iamVjdCosIFN0cnVjdHVyZSosIEZ1bmN0aW9uUHJvdG90eXBlKik7CiAgICAgCiAgICAgcHVi
bGljOgotICAgICAgICBzdGF0aWMgRnVuY3Rpb25Db25zdHJ1Y3RvciogY3JlYXRlKEV4ZWNTdGF0
ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUsIEZ1bmN0aW9uUHJvdG90eXBlKiBmdW5jUHJvdG90eXBlKQorICAgICAgICBzdGF0aWMgRnVu
Y3Rpb25Db25zdHJ1Y3RvciogY3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEZ1bmN0aW9uUHJvdG90eXBlKiBm
dW5jdGlvblByb3RvdHlwZSkKICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIG5ldyAoYWxs
b2NhdGVDZWxsPEZ1bmN0aW9uQ29uc3RydWN0b3I+KCpleGVjLT5oZWFwKCkpKSBGdW5jdGlvbkNv
bnN0cnVjdG9yKGV4ZWMsIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBmdW5jUHJvdG90eXBlKTsK
KyAgICAgICAgICAgIEZ1bmN0aW9uQ29uc3RydWN0b3IqIGNvbnN0cnVjdG9yID0gbmV3IChhbGxv
Y2F0ZUNlbGw8RnVuY3Rpb25Db25zdHJ1Y3Rvcj4oKmV4ZWMtPmhlYXAoKSkpIEZ1bmN0aW9uQ29u
c3RydWN0b3IoZXhlYywgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIGZ1bmN0aW9uUHJvdG90eXBl
KTsKKyAgICAgICAgICAgIGNvbnN0cnVjdG9yLT5pbml0UHJvcGVydGllcyhleGVjLT5nbG9iYWxE
YXRhKCksIElkZW50aWZpZXIoZXhlYywgZnVuY3Rpb25Qcm90b3R5cGUtPmNsYXNzSW5mbygpLT5j
bGFzc05hbWUpKTsKKyAgICAgICAgICAgIHJldHVybiBjb25zdHJ1Y3RvcjsKICAgICAgICAgfQog
CiAgICAgcHJpdmF0ZToKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0
aW9uUHJvdG90eXBlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9GdW5jdGlvblByb3RvdHlwZS5jcHAJKHJldmlzaW9uIDkyMzkzKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0zOCw3ICszOCw3IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1
bmMKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uUHJvdG9GdW5j
Q2FsbChFeGVjU3RhdGUqKTsKIAogRnVuY3Rpb25Qcm90b3R5cGU6OkZ1bmN0aW9uUHJvdG90eXBl
KEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJl
KiBzdHJ1Y3R1cmUpCi0gICAgOiBJbnRlcm5hbEZ1bmN0aW9uKCZleGVjLT5nbG9iYWxEYXRhKCks
IGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkubnVsbElkZW50
aWZpZXIpCisgICAgOiBJbnRlcm5hbEZ1bmN0aW9uKGdsb2JhbE9iamVjdCwgc3RydWN0dXJlKQog
ewogICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhl
Yy0+cHJvcGVydHlOYW1lcygpLmxlbmd0aCwganNOdW1iZXIoMCksIERvbnREZWxldGUgfCBSZWFk
T25seSB8IERvbnRFbnVtKTsKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0Z1bmN0aW9uUHJvdG90eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUuaAkocmV2aXNpb24gOTIzOTMpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvblByb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkp
CkBAIC0zMiw3ICszMiw5IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHB1YmxpYzoKICAgICAgICAg
c3RhdGljIEZ1bmN0aW9uUHJvdG90eXBlKiBjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAgICAgICAgewot
ICAgICAgICAgICAgcmV0dXJuIG5ldyAoYWxsb2NhdGVDZWxsPEZ1bmN0aW9uUHJvdG90eXBlPigq
ZXhlYy0+aGVhcCgpKSkgRnVuY3Rpb25Qcm90b3R5cGUoZXhlYywgZ2xvYmFsT2JqZWN0LCBzdHJ1
Y3R1cmUpOworICAgICAgICAgICAgRnVuY3Rpb25Qcm90b3R5cGUqIHByb3RvdHlwZSA9IG5ldyAo
YWxsb2NhdGVDZWxsPEZ1bmN0aW9uUHJvdG90eXBlPigqZXhlYy0+aGVhcCgpKSkgRnVuY3Rpb25Q
cm90b3R5cGUoZXhlYywgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUpOworICAgICAgICAgICAgcHJv
dG90eXBlLT5pbml0UHJvcGVydGllcyhleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPnByb3BlcnR5
TmFtZXMoKS5udWxsSWRlbnRpZmllcik7CisgICAgICAgICAgICByZXR1cm4gcHJvdG90eXBlOwog
ICAgICAgICB9CiAgICAgICAgIAogICAgICAgICB2b2lkIGFkZEZ1bmN0aW9uUHJvcGVydGllcyhF
eGVjU3RhdGUqLCBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSogZnVuY3Rpb25TdHJ1Y3R1cmUs
IEpTRnVuY3Rpb24qKiBjYWxsRnVuY3Rpb24sIEpTRnVuY3Rpb24qKiBhcHBseUZ1bmN0aW9uKTsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGVybmFsRnVuY3Rpb24uY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGVybmFsRnVu
Y3Rpb24uY3BwCShyZXZpc2lvbiA5MjM5MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0ludGVybmFsRnVuY3Rpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MSw2ICs0MSwxMiBA
QCBJbnRlcm5hbEZ1bmN0aW9uOjpJbnRlcm5hbEZ1bmN0aW9uKFZQdHJTCiB7CiB9CiAKK0ludGVy
bmFsRnVuY3Rpb246OkludGVybmFsRnVuY3Rpb24oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgOiBKU09iamVjdFdpdGhHbG9iYWxPYmplY3Qo
Z2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUpCit7CisgICAgQVNTRVJUKGluaGVyaXRzKCZzX2luZm8p
KTsKK30KKwogSW50ZXJuYWxGdW5jdGlvbjo6SW50ZXJuYWxGdW5jdGlvbihKU0dsb2JhbERhdGEq
IGdsb2JhbERhdGEsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3Ry
dWN0dXJlLCBjb25zdCBJZGVudGlmaWVyJiBuYW1lKQogICAgIDogSlNPYmplY3RXaXRoR2xvYmFs
T2JqZWN0KGdsb2JhbE9iamVjdCwgc3RydWN0dXJlKQogewpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSW50ZXJuYWxGdW5jdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGVybmFsRnVuY3Rpb24uaAkocmV2aXNpb24gOTIzOTMp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRlcm5hbEZ1bmN0aW9uLmgJKHdv
cmtpbmcgY29weSkKQEAgLTUwLDcgKzUwLDEyIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAv
LyBPbmx5IHVzZWQgdG8gYWxsb3cgdXMgdG8gZGV0ZXJtaW5lIHRoZSBKU0Z1bmN0aW9uIHZwdHIK
ICAgICAgICAgSW50ZXJuYWxGdW5jdGlvbihWUHRyU3RlYWxpbmdIYWNrVHlwZSk7CiAKKyAgICAg
ICAgSW50ZXJuYWxGdW5jdGlvbihKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSopOwogICAgICAg
ICBJbnRlcm5hbEZ1bmN0aW9uKEpTR2xvYmFsRGF0YSosIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0
dXJlKiwgY29uc3QgSWRlbnRpZmllciYpOworICAgICAgICB2b2lkIGluaXRQcm9wZXJ0aWVzKEpT
R2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgY29uc3QgSWRlbnRpZmllciYgbmFtZSkKKyAgICAgICAg
eworICAgICAgICAgICAgcHV0RGlyZWN0KGdsb2JhbERhdGEsIGdsb2JhbERhdGEucHJvcGVydHlO
YW1lcy0+bmFtZSwganNTdHJpbmcoJmdsb2JhbERhdGEsIG5hbWUuaXNOdWxsKCkgPyAiIiA6IG5h
bWUudXN0cmluZygpKSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5IHwgRG9udEVudW0pOworICAgICAg
ICB9CiAKICAgICBwcml2YXRlOgogICAgICAgICB2aXJ0dWFsIENhbGxUeXBlIGdldENhbGxEYXRh
KENhbGxEYXRhJikgPSAwOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNC
eXRlQXJyYXkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTQnl0ZUFycmF5LmNwcAkocmV2aXNpb24gOTIzOTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0J5dGVBcnJheS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM5LDEyICszOSwx
MyBAQCBKU0J5dGVBcnJheTo6SlNCeXRlQXJyYXkoRXhlY1N0YXRlKiBleGVjCiAgICAgOiBKU05v
bkZpbmFsT2JqZWN0KGV4ZWMtPmdsb2JhbERhdGEoKSwgc3RydWN0dXJlKQogICAgICwgbV9zdG9y
YWdlKHN0b3JhZ2UpCiB7Ci0gICAgcHV0RGlyZWN0KGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+
Z2xvYmFsRGF0YSgpLnByb3BlcnR5TmFtZXMtPmxlbmd0aCwganNOdW1iZXIobV9zdG9yYWdlLT5s
ZW5ndGgoKSksIFJlYWRPbmx5IHwgRG9udERlbGV0ZSk7CiB9CiAgICAgICAgIAogSlNCeXRlQXJy
YXkqIEpTQnl0ZUFycmF5OjpjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSwgQnl0ZUFycmF5KiBzdG9yYWdlKQogewotICAgIHJldHVybiBuZXcgKGFsbG9jYXRlQ2Vs
bDxKU0J5dGVBcnJheT4oKmV4ZWMtPmhlYXAoKSkpIEpTQnl0ZUFycmF5KGV4ZWMsIHN0cnVjdHVy
ZSwgc3RvcmFnZSk7CisgICAgSlNCeXRlQXJyYXkqIGFycmF5ID0gbmV3IChhbGxvY2F0ZUNlbGw8
SlNCeXRlQXJyYXk+KCpleGVjLT5oZWFwKCkpKSBKU0J5dGVBcnJheShleGVjLCBzdHJ1Y3R1cmUs
IHN0b3JhZ2UpOworICAgIGFycmF5LT5wdXREaXJlY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVj
LT5nbG9iYWxEYXRhKCkucHJvcGVydHlOYW1lcy0+bGVuZ3RoLCBqc051bWJlcihhcnJheS0+bV9z
dG9yYWdlLT5sZW5ndGgoKSksIFJlYWRPbmx5IHwgRG9udERlbGV0ZSk7CisgICAgcmV0dXJuIGFy
cmF5OwogfQogCiAjaWYgIUFTU0VSVF9ESVNBQkxFRApJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNDZWxsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNDZWxsLmgJKHJldmlzaW9uIDkyMzkzKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNDZWxsLmgJKHdvcmtpbmcgY29weSkKQEAgLTM1MCw3ICszNTAsNyBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICB7CiAgICAgICAgIHJldHVybiBoZWFwLmFsbG9jYXRlKHNpemVv
ZihUKSk7CiAgICAgfQotICAgICAgICAKKwogfSAvLyBuYW1lc3BhY2UgSlNDCiAKICNlbmRpZiAv
LyBKU0NlbGxfaApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlv
bi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5j
dGlvbi5jcHAJKHJldmlzaW9uIDkyMzkzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNGdW5jdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYxLDI3ICs2MSwxOSBAQCBKU0Z1
bmN0aW9uOjpKU0Z1bmN0aW9uKFZQdHJTdGVhbGluZ0hhY2tUCiB7CiB9CiAKLUpTRnVuY3Rpb246
OkpTRnVuY3Rpb24oRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgaW50IGxlbmd0aCwgY29uc3QgSWRlbnRpZmllciYgbmFt
ZSwgTmF0aXZlRXhlY3V0YWJsZSogdGh1bmspCitKU0Z1bmN0aW9uOjpKU0Z1bmN0aW9uKEV4ZWNT
dGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUsIE5hdGl2ZUV4ZWN1dGFibGUqIHRodW5rKQogICAgIDogQmFzZShnbG9iYWxPYmplY3Qs
IHN0cnVjdHVyZSkKICAgICAsIG1fZXhlY3V0YWJsZShleGVjLT5nbG9iYWxEYXRhKCksIHRoaXMs
IHRodW5rKQogICAgICwgbV9zY29wZUNoYWluKGV4ZWMtPmdsb2JhbERhdGEoKSwgdGhpcywgZ2xv
YmFsT2JqZWN0LT5nbG9iYWxTY29wZUNoYWluKCkpCiB7CiAgICAgQVNTRVJUKGluaGVyaXRzKCZz
X2luZm8pKTsKLSAgICBwdXREaXJlY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5nbG9iYWxE
YXRhKCkucHJvcGVydHlOYW1lcy0+bmFtZSwganNTdHJpbmcoZXhlYywgbmFtZS5pc051bGwoKSA/
ICIiIDogbmFtZS51c3RyaW5nKCkpLCBEb250RGVsZXRlIHwgUmVhZE9ubHkgfCBEb250RW51bSk7
Ci0gICAgcHV0RGlyZWN0KGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+cHJvcGVydHlOYW1lcygp
Lmxlbmd0aCwganNOdW1iZXIobGVuZ3RoKSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5IHwgRG9udEVu
dW0pOwogfQogCi1KU0Z1bmN0aW9uOjpKU0Z1bmN0aW9uKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGludCBsZW5ndGgs
IGNvbnN0IElkZW50aWZpZXImIG5hbWUsIE5hdGl2ZUZ1bmN0aW9uIGZ1bmMpCitKU0Z1bmN0aW9u
OjpKU0Z1bmN0aW9uKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAgICAgOiBCYXNlKGdsb2JhbE9iamVjdCwgc3RydWN0
dXJlKQogICAgICwgbV9zY29wZUNoYWluKGV4ZWMtPmdsb2JhbERhdGEoKSwgdGhpcywgZ2xvYmFs
T2JqZWN0LT5nbG9iYWxTY29wZUNoYWluKCkpCiB7CiAgICAgQVNTRVJUKGluaGVyaXRzKCZzX2lu
Zm8pKTsKLSAgICAKLSAgICAvLyBDYW4ndCBkbyB0aGlzIGR1cmluZyBpbml0aWFsaXphdGlvbiBi
ZWNhdXNlIGdldEhvc3RGdW5jdGlvbiBtaWdodCBkbyBhIEdDIGFsbG9jYXRpb24uCi0gICAgbV9l
eGVjdXRhYmxlLnNldChleGVjLT5nbG9iYWxEYXRhKCksIHRoaXMsIGV4ZWMtPmdsb2JhbERhdGEo
KS5nZXRIb3N0RnVuY3Rpb24oZnVuYykpOwotICAgIAotICAgIHB1dERpcmVjdChleGVjLT5nbG9i
YWxEYXRhKCksIGV4ZWMtPmdsb2JhbERhdGEoKS5wcm9wZXJ0eU5hbWVzLT5uYW1lLCBqc1N0cmlu
ZyhleGVjLCBuYW1lLmlzTnVsbCgpID8gIiIgOiBuYW1lLnVzdHJpbmcoKSksIERvbnREZWxldGUg
fCBSZWFkT25seSB8IERvbnRFbnVtKTsKLSAgICBwdXREaXJlY3QoZXhlYy0+Z2xvYmFsRGF0YSgp
LCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkubGVuZ3RoLCBqc051bWJlcihsZW5ndGgpLCBEb250RGVs
ZXRlIHwgUmVhZE9ubHkgfCBEb250RW51bSk7CiB9CiAKIEpTRnVuY3Rpb246OkpTRnVuY3Rpb24o
RXhlY1N0YXRlKiBleGVjLCBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUsIFNjb3BlQ2hh
aW5Ob2RlKiBzY29wZUNoYWluTm9kZSkKQEAgLTkwLDggKzgyLDMyIEBAIEpTRnVuY3Rpb246OkpT
RnVuY3Rpb24oRXhlY1N0YXRlKiBleGVjLCAKICAgICAsIG1fc2NvcGVDaGFpbihleGVjLT5nbG9i
YWxEYXRhKCksIHRoaXMsIHNjb3BlQ2hhaW5Ob2RlKQogewogICAgIEFTU0VSVChpbmhlcml0cygm
c19pbmZvKSk7Ci0gICAgc2V0U3RydWN0dXJlKGV4ZWMtPmdsb2JhbERhdGEoKSwgc2NvcGVDaGFp
bk5vZGUtPmdsb2JhbE9iamVjdC0+bmFtZWRGdW5jdGlvblN0cnVjdHVyZSgpKTsKLSAgICBwdXRE
aXJlY3RPZmZzZXQoZXhlYy0+Z2xvYmFsRGF0YSgpLCBzY29wZUNoYWluTm9kZS0+Z2xvYmFsT2Jq
ZWN0LT5mdW5jdGlvbk5hbWVPZmZzZXQoKSwgZXhlY3V0YWJsZS0+bmFtZVZhbHVlKCkpOworfQor
CitKU0Z1bmN0aW9uKiBKU0Z1bmN0aW9uOjpjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgaW50IGxlbmd0aCwg
Y29uc3QgSWRlbnRpZmllciYgbmFtZSwgTmF0aXZlRnVuY3Rpb24gbmF0aXZlRnVuY3Rpb24pCit7
CisgICAgSlNGdW5jdGlvbiogZnVuY3Rpb24gPSBuZXcgKGFsbG9jYXRlQ2VsbDxKU0Z1bmN0aW9u
PigqZXhlYy0+aGVhcCgpKSkgSlNGdW5jdGlvbihleGVjLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVy
ZSk7CisgICAgLy8gQ2FuJ3QgZG8gdGhpcyBkdXJpbmcgaW5pdGlhbGl6YXRpb24gYmVjYXVzZSBn
ZXRIb3N0RnVuY3Rpb24gbWlnaHQgZG8gYSBHQyBhbGxvY2F0aW9uLgorICAgIGZ1bmN0aW9uLT5t
X2V4ZWN1dGFibGUuc2V0KGV4ZWMtPmdsb2JhbERhdGEoKSwgZnVuY3Rpb24sIGV4ZWMtPmdsb2Jh
bERhdGEoKS5nZXRIb3N0RnVuY3Rpb24obmF0aXZlRnVuY3Rpb24pKTsKKyAgICBmdW5jdGlvbi0+
cHV0RGlyZWN0KGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+Z2xvYmFsRGF0YSgpLnByb3BlcnR5
TmFtZXMtPm5hbWUsIGpzU3RyaW5nKGV4ZWMsIG5hbWUuaXNOdWxsKCkgPyAiIiA6IG5hbWUudXN0
cmluZygpKSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5IHwgRG9udEVudW0pOworICAgIGZ1bmN0aW9u
LT5wdXREaXJlY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkubGVu
Z3RoLCBqc051bWJlcihsZW5ndGgpLCBEb250RGVsZXRlIHwgUmVhZE9ubHkgfCBEb250RW51bSk7
CisgICAgcmV0dXJuIGZ1bmN0aW9uOworfQorCitKU0Z1bmN0aW9uKiBKU0Z1bmN0aW9uOjpjcmVh
dGUoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSwgaW50IGxlbmd0aCwgY29uc3QgSWRlbnRpZmllciYgbmFtZSwgTmF0aXZl
RXhlY3V0YWJsZSogbmF0aXZlRXhlYykKK3sKKyAgICBKU0Z1bmN0aW9uKiBmdW5jdGlvbiA9IG5l
dyAoYWxsb2NhdGVDZWxsPEpTRnVuY3Rpb24+KCpleGVjLT5oZWFwKCkpKSBKU0Z1bmN0aW9uKGV4
ZWMsIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBuYXRpdmVFeGVjKTsKKyAgICBmdW5jdGlvbi0+
cHV0RGlyZWN0KGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+Z2xvYmFsRGF0YSgpLnByb3BlcnR5
TmFtZXMtPm5hbWUsIGpzU3RyaW5nKGV4ZWMsIG5hbWUuaXNOdWxsKCkgPyAiIiA6IG5hbWUudXN0
cmluZygpKSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5IHwgRG9udEVudW0pOworICAgIGZ1bmN0aW9u
LT5wdXREaXJlY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkubGVu
Z3RoLCBqc051bWJlcihsZW5ndGgpLCBEb250RGVsZXRlIHwgUmVhZE9ubHkgfCBEb250RW51bSk7
CisgICAgcmV0dXJuIGZ1bmN0aW9uOworfQorCitKU0Z1bmN0aW9uKiBKU0Z1bmN0aW9uOjpjcmVh
dGUoRXhlY1N0YXRlKiBleGVjLCBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUsIFNjb3Bl
Q2hhaW5Ob2RlKiBzY29wZUNoYWluKQoreworICAgIEpTRnVuY3Rpb24qIGZ1bmN0aW9uID0gbmV3
IChhbGxvY2F0ZUNlbGw8SlNGdW5jdGlvbj4oKmV4ZWMtPmhlYXAoKSkpIEpTRnVuY3Rpb24oZXhl
YywgZXhlY3V0YWJsZSwgc2NvcGVDaGFpbik7CisgICAgZnVuY3Rpb24tPnNldFN0cnVjdHVyZShl
eGVjLT5nbG9iYWxEYXRhKCksIHNjb3BlQ2hhaW4tPmdsb2JhbE9iamVjdC0+bmFtZWRGdW5jdGlv
blN0cnVjdHVyZSgpKTsKKyAgICBmdW5jdGlvbi0+cHV0RGlyZWN0T2Zmc2V0KGV4ZWMtPmdsb2Jh
bERhdGEoKSwgc2NvcGVDaGFpbi0+Z2xvYmFsT2JqZWN0LT5mdW5jdGlvbk5hbWVPZmZzZXQoKSwg
ZXhlY3V0YWJsZS0+bmFtZVZhbHVlKCkpOworICAgIHJldHVybiBmdW5jdGlvbjsKIH0KIAogSlNG
dW5jdGlvbjo6fkpTRnVuY3Rpb24oKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNGdW5jdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTRnVuY3Rpb24uaAkocmV2aXNpb24gOTIzOTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0Z1bmN0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTI5LDExICsyOSw5IEBA
CiBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIEV4ZWN1dGFibGVCYXNlOwotICAgIGNsYXNz
IEZ1bmN0aW9uRXhlY3V0YWJsZTsKICAgICBjbGFzcyBGdW5jdGlvblByb3RvdHlwZTsKICAgICBj
bGFzcyBKU0FjdGl2YXRpb247CiAgICAgY2xhc3MgSlNHbG9iYWxPYmplY3Q7Ci0gICAgY2xhc3Mg
TmF0aXZlRXhlY3V0YWJsZTsKICAgICBjbGFzcyBWUHRySGFja0V4ZWN1dGFibGU7CiAgICAgbmFt
ZXNwYWNlIERGRyB7CiAgICAgY2xhc3MgSklUQ29kZUdlbmVyYXRvcjsKQEAgLTQ4LDIzICs0Niwx
NSBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICB0eXBlZGVmIEpTT2JqZWN0V2l0aEdsb2Jh
bE9iamVjdCBCYXNlOwogCi0gICAgICAgIEpTRnVuY3Rpb24oRXhlY1N0YXRlKiwgSlNHbG9iYWxP
YmplY3QqLCBTdHJ1Y3R1cmUqLCBpbnQgbGVuZ3RoLCBjb25zdCBJZGVudGlmaWVyJiwgTmF0aXZl
RnVuY3Rpb24pOwotICAgICAgICBKU0Z1bmN0aW9uKEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0
KiwgU3RydWN0dXJlKiwgaW50IGxlbmd0aCwgY29uc3QgSWRlbnRpZmllciYsIE5hdGl2ZUV4ZWN1
dGFibGUqKTsKKyAgICBwcml2YXRlOgorICAgICAgICBKU0Z1bmN0aW9uKEV4ZWNTdGF0ZSosIEpT
R2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKik7CisgICAgICAgIEpTRnVuY3Rpb24oRXhlY1N0YXRl
KiwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBOYXRpdmVFeGVjdXRhYmxlKik7CiAgICAg
ICAgIEpTRnVuY3Rpb24oRXhlY1N0YXRlKiwgRnVuY3Rpb25FeGVjdXRhYmxlKiwgU2NvcGVDaGFp
bk5vZGUqKTsKICAgICAgICAgCiAgICAgcHVibGljOgotICAgICAgICBzdGF0aWMgSlNGdW5jdGlv
biogY3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGludCBsZW5ndGgsIGNvbnN0IElkZW50aWZpZXImIGlkZW50
LCBOYXRpdmVGdW5jdGlvbiBuYXRpdmVGdW5jKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1
cm4gbmV3IChhbGxvY2F0ZUNlbGw8SlNGdW5jdGlvbj4oKmV4ZWMtPmhlYXAoKSkpIEpTRnVuY3Rp
b24oZXhlYywgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIGxlbmd0aCwgaWRlbnQsIG5hdGl2ZUZ1
bmMpOwotICAgICAgICB9Ci0gICAgICAgIHN0YXRpYyBKU0Z1bmN0aW9uKiBjcmVhdGUoRXhlY1N0
YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSwgaW50IGxlbmd0aCwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIE5hdGl2ZUV4ZWN1dGFi
bGUqIG5hdGl2ZUV4ZWMpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBuZXcgKGFsbG9j
YXRlQ2VsbDxKU0Z1bmN0aW9uPigqZXhlYy0+aGVhcCgpKSkgSlNGdW5jdGlvbihleGVjLCBnbG9i
YWxPYmplY3QsIHN0cnVjdHVyZSwgbGVuZ3RoLCBpZGVudCwgbmF0aXZlRXhlYyk7Ci0gICAgICAg
IH0KLSAgICAgICAgc3RhdGljIEpTRnVuY3Rpb24qIGNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIEZ1
bmN0aW9uRXhlY3V0YWJsZSogZnVuY0V4ZWMsIFNjb3BlQ2hhaW5Ob2RlKiBzY29wZUNoYWluKQot
ICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gbmV3IChhbGxvY2F0ZUNlbGw8SlNGdW5jdGlv
bj4oKmV4ZWMtPmhlYXAoKSkpIEpTRnVuY3Rpb24oZXhlYywgZnVuY0V4ZWMsIHNjb3BlQ2hhaW4p
OwotICAgICAgICB9CisgICAgICAgIHN0YXRpYyBKU0Z1bmN0aW9uKiBjcmVhdGUoRXhlY1N0YXRl
KiwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBpbnQgbGVuZ3RoLCBjb25zdCBJZGVudGlm
aWVyJiBuYW1lLCBOYXRpdmVGdW5jdGlvbik7CisgICAgICAgIHN0YXRpYyBKU0Z1bmN0aW9uKiBj
cmVhdGUoRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBpbnQgbGVuZ3Ro
LCBjb25zdCBJZGVudGlmaWVyJiBuYW1lLCBOYXRpdmVFeGVjdXRhYmxlKik7CisgICAgICAgIHN0
YXRpYyBKU0Z1bmN0aW9uKiBjcmVhdGUoRXhlY1N0YXRlKiwgRnVuY3Rpb25FeGVjdXRhYmxlKiBm
dW5jRXhlYywgU2NvcGVDaGFpbk5vZGUqKTsKICAgICAgICAgCiAgICAgICAgIHZpcnR1YWwgfkpT
RnVuY3Rpb24oKTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9i
YWxPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0dsb2JhbE9iamVjdC5oCShyZXZpc2lvbiA5MjM5MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTE0NCw3ICsxNDQs
OSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBwdWJsaWM6CiAgICAgICAgIHN0YXRpYyBKU0dsb2Jh
bE9iamVjdCogY3JlYXRlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBuZXcgKGFsbG9jYXRlQ2VsbDxK
U0dsb2JhbE9iamVjdD4oZ2xvYmFsRGF0YS5oZWFwKSkgSlNHbG9iYWxPYmplY3QoZ2xvYmFsRGF0
YSwgc3RydWN0dXJlKTsKKyAgICAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qg
PSBuZXcgKGFsbG9jYXRlQ2VsbDxKU0dsb2JhbE9iamVjdD4oZ2xvYmFsRGF0YS5oZWFwKSkgSlNH
bG9iYWxPYmplY3QoZ2xvYmFsRGF0YSwgc3RydWN0dXJlKTsKKyAgICAgICAgICAgIGdsb2JhbE9i
amVjdC0+aW5pdChnbG9iYWxPYmplY3QpOworICAgICAgICAgICAgcmV0dXJuIGdsb2JhbE9iamVj
dDsKICAgICAgICAgfQogCiAgICAgICAgIHN0YXRpYyBKU19FWFBPUlREQVRBIGNvbnN0IENsYXNz
SW5mbyBzX2luZm87CkBAIC0xNTksNyArMTYxLDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAg
IHsKICAgICAgICAgICAgIENPTVBJTEVfQVNTRVJUKEpTR2xvYmFsT2JqZWN0OjpBbm9ueW1vdXNT
bG90Q291bnQgPT0gMSwgSlNHbG9iYWxPYmplY3RfaGFzX29ubHlfYV9zaW5nbGVfc2xvdCk7CiAg
ICAgICAgICAgICBwdXRUaGlzVG9Bbm9ueW1vdXNWYWx1ZSgwKTsKLSAgICAgICAgICAgIGluaXQo
dGhpcyk7CiAgICAgICAgIH0KIAogICAgICAgICBKU0dsb2JhbE9iamVjdChKU0dsb2JhbERhdGEm
IGdsb2JhbERhdGEsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBKU09iamVjdCogdGhpc1ZhbHVlKQpA
QCAtMzEyLDEwICszMTMsMTEgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICB1bnNpZ25l
ZCBhdHRyaWJ1dGVzOwogICAgICAgICB9OwogICAgICAgICB2b2lkIGFkZFN0YXRpY0dsb2JhbHMo
R2xvYmFsUHJvcGVydHlJbmZvKiwgaW50IGNvdW50KTsKLQotICAgIHByaXZhdGU6CisgICAgICAg
IAogICAgICAgICAvLyBGSVhNRTogRm9sZCByZXNldCBpbnRvIGluaXQuCiAgICAgICAgIHZvaWQg
aW5pdChKU09iamVjdCogdGhpc1ZhbHVlKTsKKworICAgIHByaXZhdGU6CiAgICAgICAgIHZvaWQg
cmVzZXQoSlNWYWx1ZSBwcm90b3R5cGUpOwogCiAgICAgICAgIHZvaWQgc2V0UmVnaXN0ZXJzKFdy
aXRlQmFycmllcjxVbmtub3duPiogcmVnaXN0ZXJzLCBQYXNzT3duQXJyYXlQdHI8V3JpdGVCYXJy
aWVyPFVua25vd24+ID4gcmVnaXN0ZXJBcnJheSwgc2l6ZV90IGNvdW50KTsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lSXRl
cmF0b3IuY3BwCShyZXZpc2lvbiA5MjM5MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNywxNSAr
MzcsMTIgQEAgQVNTRVJUX0NMQVNTX0ZJVFNfSU5fQ0VMTChKU1Byb3BlcnR5TmFtZQogCiBjb25z
dCBDbGFzc0luZm8gSlNQcm9wZXJ0eU5hbWVJdGVyYXRvcjo6c19pbmZvID0geyAiSlNQcm9wZXJ0
eU5hbWVJdGVyYXRvciIsIDAsIDAsIDAgfTsKIAotaW5saW5lIEpTUHJvcGVydHlOYW1lSXRlcmF0
b3I6OkpTUHJvcGVydHlOYW1lSXRlcmF0b3IoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWVB
cnJheURhdGEqIHByb3BlcnR5TmFtZUFycmF5RGF0YSwgc2l6ZV90IG51bUNhY2hlYWJsZVNsb3Rz
KQoraW5saW5lIEpTUHJvcGVydHlOYW1lSXRlcmF0b3I6OkpTUHJvcGVydHlOYW1lSXRlcmF0b3Io
RXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWVBcnJheURhdGE6OlByb3BlcnR5TmFtZVZlY3Rv
ciYgcHJvcGVydHlOYW1lVmVjdG9yLCBzaXplX3QgbnVtQ2FjaGVhYmxlU2xvdHMpCiAgICAgOiBK
U0NlbGwoZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5nbG9iYWxEYXRhKCkucHJvcGVydHlOYW1l
SXRlcmF0b3JTdHJ1Y3R1cmUuZ2V0KCkpCiAgICAgLCBtX251bUNhY2hlYWJsZVNsb3RzKG51bUNh
Y2hlYWJsZVNsb3RzKQotICAgICwgbV9qc1N0cmluZ3NTaXplKHByb3BlcnR5TmFtZUFycmF5RGF0
YS0+cHJvcGVydHlOYW1lVmVjdG9yKCkuc2l6ZSgpKQorICAgICwgbV9qc1N0cmluZ3NTaXplKHBy
b3BlcnR5TmFtZVZlY3Rvci5zaXplKCkpCiAgICAgLCBtX2pzU3RyaW5ncyhhZG9wdEFycmF5UHRy
KG5ldyBXcml0ZUJhcnJpZXI8VW5rbm93bj5bbV9qc1N0cmluZ3NTaXplXSkpCiB7Ci0gICAgUHJv
cGVydHlOYW1lQXJyYXlEYXRhOjpQcm9wZXJ0eU5hbWVWZWN0b3ImIHByb3BlcnR5TmFtZVZlY3Rv
ciA9IHByb3BlcnR5TmFtZUFycmF5RGF0YS0+cHJvcGVydHlOYW1lVmVjdG9yKCk7Ci0gICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBtX2pzU3RyaW5nc1NpemU7ICsraSkKLSAgICAgICAgbV9qc1N0
cmluZ3NbaV0uc2V0KGV4ZWMtPmdsb2JhbERhdGEoKSwgdGhpcywganNPd25lZFN0cmluZyhleGVj
LCBwcm9wZXJ0eU5hbWVWZWN0b3JbaV0udXN0cmluZygpKSk7CiB9CiAKIEpTUHJvcGVydHlOYW1l
SXRlcmF0b3IqIEpTUHJvcGVydHlOYW1lSXRlcmF0b3I6OmNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMs
IEpTT2JqZWN0KiBvKQpAQCAtNjIsNyArNTksNyBAQCBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yKiBK
U1Byb3BlcnR5TmFtZUl0CiAgICAgICAgICFvLT5zdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS5vdmVy
cmlkZXNHZXRQcm9wZXJ0eU5hbWVzKCkpCiAgICAgICAgIG51bUNhY2hlYWJsZVNsb3RzID0gby0+
c3RydWN0dXJlKCktPnByb3BlcnR5U3RvcmFnZVNpemUoKTsKICAgICAKLSAgICBKU1Byb3BlcnR5
TmFtZUl0ZXJhdG9yKiBqc1Byb3BlcnR5TmFtZUl0ZXJhdG9yID0gbmV3IChhbGxvY2F0ZUNlbGw8
SlNQcm9wZXJ0eU5hbWVJdGVyYXRvcj4oKmV4ZWMtPmhlYXAoKSkpIEpTUHJvcGVydHlOYW1lSXRl
cmF0b3IoZXhlYywgcHJvcGVydHlOYW1lcy5kYXRhKCksIG51bUNhY2hlYWJsZVNsb3RzKTsKKyAg
ICBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yKiBqc1Byb3BlcnR5TmFtZUl0ZXJhdG9yID0gY3JlYXRl
KGV4ZWMsIHByb3BlcnR5TmFtZXMuZGF0YSgpLCBudW1DYWNoZWFibGVTbG90cyk7CiAKICAgICBp
ZiAoby0+c3RydWN0dXJlKCktPmlzRGljdGlvbmFyeSgpKQogICAgICAgICByZXR1cm4ganNQcm9w
ZXJ0eU5hbWVJdGVyYXRvcjsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
UHJvcGVydHlOYW1lSXRlcmF0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmgJKHJldmlzaW9uIDkyMzkzKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oCSh3
b3JraW5nIGNvcHkpCkBAIC00Niw3ICs0NiwxMSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAg
c3RhdGljIEpTUHJvcGVydHlOYW1lSXRlcmF0b3IqIGNyZWF0ZShFeGVjU3RhdGUqLCBKU09iamVj
dCopOwogICAgICAgICBzdGF0aWMgSlNQcm9wZXJ0eU5hbWVJdGVyYXRvciogY3JlYXRlKEV4ZWNT
dGF0ZSogZXhlYywgUHJvcGVydHlOYW1lQXJyYXlEYXRhKiBwcm9wZXJ0eU5hbWVBcnJheURhdGEs
IHNpemVfdCBudW1DYWNoZWFibGVTbG90KQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4g
bmV3IChhbGxvY2F0ZUNlbGw8SlNQcm9wZXJ0eU5hbWVJdGVyYXRvcj4oKmV4ZWMtPmhlYXAoKSkp
IEpTUHJvcGVydHlOYW1lSXRlcmF0b3IoZXhlYywgcHJvcGVydHlOYW1lQXJyYXlEYXRhLCBudW1D
YWNoZWFibGVTbG90KTsKKyAgICAgICAgICAgIFByb3BlcnR5TmFtZUFycmF5RGF0YTo6UHJvcGVy
dHlOYW1lVmVjdG9yJiBwcm9wZXJ0eU5hbWVWZWN0b3IgPSBwcm9wZXJ0eU5hbWVBcnJheURhdGEt
PnByb3BlcnR5TmFtZVZlY3RvcigpOworICAgICAgICAgICAgSlNQcm9wZXJ0eU5hbWVJdGVyYXRv
ciogaXRlcmF0b3IgPSAgbmV3IChhbGxvY2F0ZUNlbGw8SlNQcm9wZXJ0eU5hbWVJdGVyYXRvcj4o
KmV4ZWMtPmhlYXAoKSkpIEpTUHJvcGVydHlOYW1lSXRlcmF0b3IoZXhlYywgcHJvcGVydHlOYW1l
VmVjdG9yLCBudW1DYWNoZWFibGVTbG90KTsKKyAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgaXRlcmF0b3ItPm1fanNTdHJpbmdzU2l6ZTsgKytpKQorICAgICAgICAgICAgICAgIGl0
ZXJhdG9yLT5tX2pzU3RyaW5nc1tpXS5zZXQoZXhlYy0+Z2xvYmFsRGF0YSgpLCBpdGVyYXRvciwg
anNPd25lZFN0cmluZyhleGVjLCBwcm9wZXJ0eU5hbWVWZWN0b3JbaV0udXN0cmluZygpKSk7Cisg
ICAgICAgICAgICByZXR1cm4gaXRlcmF0b3I7CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAg
IHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0dsb2JhbERhdGEmIGdsb2JhbERh
dGEsIEpTVmFsdWUgcHJvdG90eXBlKQpAQCAtODMsNyArODcsNyBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICAgICAgc3RhdGljIGNvbnN0IENsYXNzSW5mbyBzX2luZm87CiAKICAgICBwcml2YXRlOgot
ICAgICAgICBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yKEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZUFy
cmF5RGF0YSogcHJvcGVydHlOYW1lQXJyYXlEYXRhLCBzaXplX3QgbnVtQ2FjaGVhYmxlU2xvdCk7
CisgICAgICAgIEpTUHJvcGVydHlOYW1lSXRlcmF0b3IoRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1l
QXJyYXlEYXRhOjpQcm9wZXJ0eU5hbWVWZWN0b3ImLCBzaXplX3QgbnVtQ2FjaGVhYmxlU2xvdCk7
CiAKICAgICAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9jYWNoZWRTdHJ1Y3R1cmU7CiAg
ICAgICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmVDaGFpbj4gbV9jYWNoZWRQcm90b3R5cGVDaGFp
bjsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05hdGl2ZUVycm9yQ29uc3Ry
dWN0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05h
dGl2ZUVycm9yQ29uc3RydWN0b3IuY3BwCShyZXZpc2lvbiA5MjM5MykKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL05hdGl2ZUVycm9yQ29uc3RydWN0b3IuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0zMiwxOCArMzIsMjQgQEAgQVNTRVJUX0NMQVNTX0ZJVFNfSU5fQ0VMTChOYXRpdmVF
cnJvckNvbgogCiBjb25zdCBDbGFzc0luZm8gTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvcjo6c19pbmZv
ID0geyAiRnVuY3Rpb24iLCAmSW50ZXJuYWxGdW5jdGlvbjo6c19pbmZvLCAwLCAwIH07CiAKLU5h
dGl2ZUVycm9yQ29uc3RydWN0b3I6Ok5hdGl2ZUVycm9yQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBl
eGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwg
U3RydWN0dXJlKiBwcm90b3R5cGVTdHJ1Y3R1cmUsIGNvbnN0IFVTdHJpbmcmIG5hbWVBbmRNZXNz
YWdlKQotICAgIDogSW50ZXJuYWxGdW5jdGlvbigmZXhlYy0+Z2xvYmFsRGF0YSgpLCBnbG9iYWxP
YmplY3QsIHN0cnVjdHVyZSwgSWRlbnRpZmllcihleGVjLCBuYW1lQW5kTWVzc2FnZSkpCitOYXRp
dmVFcnJvckNvbnN0cnVjdG9yOjpOYXRpdmVFcnJvckNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogZXhl
YywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisg
ICAgOiBJbnRlcm5hbEZ1bmN0aW9uKGdsb2JhbE9iamVjdCwgc3RydWN0dXJlKQogewogICAgIEFT
U0VSVChpbmhlcml0cygmc19pbmZvKSk7CisgICAgbV9lcnJvclN0cnVjdHVyZS5zZXRNYXlCZU51
bGwoZXhlYy0+Z2xvYmFsRGF0YSgpLCB0aGlzLCAwKTsKK30KIAotICAgIE5hdGl2ZUVycm9yUHJv
dG90eXBlKiBwcm90b3R5cGUgPSBOYXRpdmVFcnJvclByb3RvdHlwZTo6Y3JlYXRlKGV4ZWMsIGds
b2JhbE9iamVjdCwgcHJvdG90eXBlU3RydWN0dXJlLCBuYW1lQW5kTWVzc2FnZSwgdGhpcyk7Ci0K
LSAgICBwdXREaXJlY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCku
bGVuZ3RoLCBqc051bWJlcigxKSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5IHwgRG9udEVudW0pOyAv
LyBFQ01BIDE1LjExLjcuNQotICAgIHB1dERpcmVjdChleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMt
PnByb3BlcnR5TmFtZXMoKS5wcm90b3R5cGUsIHByb3RvdHlwZSwgRG9udERlbGV0ZSB8IFJlYWRP
bmx5IHwgRG9udEVudW0pOwotICAgIG1fZXJyb3JTdHJ1Y3R1cmUuc2V0KGV4ZWMtPmdsb2JhbERh
dGEoKSwgdGhpcywgRXJyb3JJbnN0YW5jZTo6Y3JlYXRlU3RydWN0dXJlKGV4ZWMtPmdsb2JhbERh
dGEoKSwgcHJvdG90eXBlKSk7Ci0gICAgQVNTRVJUKG1fZXJyb3JTdHJ1Y3R1cmUpOwotICAgIEFT
U0VSVChtX2Vycm9yU3RydWN0dXJlLT50eXBlSW5mbygpLnR5cGUoKSA9PSBPYmplY3RUeXBlKTsK
K05hdGl2ZUVycm9yQ29uc3RydWN0b3IqIE5hdGl2ZUVycm9yQ29uc3RydWN0b3I6OmNyZWF0ZShF
eGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSog
c3RydWN0dXJlLCBTdHJ1Y3R1cmUqIHByb3RvdHlwZVN0cnVjdHVyZSwgY29uc3QgVVN0cmluZyYg
bmFtZUFuZE1lc3NhZ2UpCit7CisgICAgTmF0aXZlRXJyb3JDb25zdHJ1Y3RvciogY29uc3RydWN0
b3IgPSBuZXcgKGFsbG9jYXRlQ2VsbDxOYXRpdmVFcnJvckNvbnN0cnVjdG9yPigqZXhlYy0+aGVh
cCgpKSkgTmF0aXZlRXJyb3JDb25zdHJ1Y3RvcihleGVjLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVy
ZSk7CisgICAgTmF0aXZlRXJyb3JQcm90b3R5cGUqIHByb3RvdHlwZSA9IE5hdGl2ZUVycm9yUHJv
dG90eXBlOjpjcmVhdGUoZXhlYywgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGVTdHJ1Y3R1cmUsIG5h
bWVBbmRNZXNzYWdlLCBjb25zdHJ1Y3Rvcik7CisgICAgY29uc3RydWN0b3ItPnB1dERpcmVjdChl
eGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5sZW5ndGgsIGpzTnVtYmVy
KDEpLCBEb250RGVsZXRlIHwgUmVhZE9ubHkgfCBEb250RW51bSk7IC8vIEVDTUEgMTUuMTEuNy41
CisgICAgY29uc3RydWN0b3ItPnB1dERpcmVjdChleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPnBy
b3BlcnR5TmFtZXMoKS5wcm90b3R5cGUsIHByb3RvdHlwZSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5
IHwgRG9udEVudW0pOworICAgIGNvbnN0cnVjdG9yLT5tX2Vycm9yU3RydWN0dXJlLnNldChleGVj
LT5nbG9iYWxEYXRhKCksIGNvbnN0cnVjdG9yLCBFcnJvckluc3RhbmNlOjpjcmVhdGVTdHJ1Y3R1
cmUoZXhlYy0+Z2xvYmFsRGF0YSgpLCBwcm90b3R5cGUpKTsKKyAgICBjb25zdHJ1Y3Rvci0+aW5p
dFByb3BlcnRpZXMoZXhlYy0+Z2xvYmFsRGF0YSgpLCBJZGVudGlmaWVyKGV4ZWMsIG5hbWVBbmRN
ZXNzYWdlKSk7CisgICAgQVNTRVJUKGNvbnN0cnVjdG9yLT5tX2Vycm9yU3RydWN0dXJlKTsKKyAg
ICBBU1NFUlQoY29uc3RydWN0b3ItPm1fZXJyb3JTdHJ1Y3R1cmUtPnR5cGVJbmZvKCkudHlwZSgp
ID09IE9iamVjdFR5cGUpOworICAgIHJldHVybiBjb25zdHJ1Y3RvcjsKIH0KIAogdm9pZCBOYXRp
dmVFcnJvckNvbnN0cnVjdG9yOjp2aXNpdENoaWxkcmVuKFNsb3RWaXNpdG9yJiB2aXNpdG9yKQpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZlRXJyb3JDb25zdHJ1Y3Rv
ci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05hdGl2ZUVy
cm9yQ29uc3RydWN0b3IuaAkocmV2aXNpb24gOTIzOTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9OYXRpdmVFcnJvckNvbnN0cnVjdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTMw
LDE0ICszMCw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIGNsYXNzIE5hdGl2ZUVycm9yUHJvdG90
eXBlOwogCiAgICAgY2xhc3MgTmF0aXZlRXJyb3JDb25zdHJ1Y3RvciA6IHB1YmxpYyBJbnRlcm5h
bEZ1bmN0aW9uIHsKLSAgICBwcml2YXRlOgotICAgICAgICBOYXRpdmVFcnJvckNvbnN0cnVjdG9y
KEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgU3RydWN0dXJlKiBwcm90
b3R5cGVTdHJ1Y3R1cmUsIGNvbnN0IFVTdHJpbmcmKTsKLQogICAgIHB1YmxpYzoKLSAgICAgICAg
c3RhdGljIE5hdGl2ZUVycm9yQ29uc3RydWN0b3IqIGNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBTdHJ1Y3R1
cmUqIHByb3RvdHlwZVN0cnVjdHVyZSwgY29uc3QgVVN0cmluZyYgbmFtZUFuZE1lc3NhZ2UpCi0g
ICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBuZXcgKGFsbG9jYXRlQ2VsbDxOYXRpdmVFcnJv
ckNvbnN0cnVjdG9yPigqZXhlYy0+aGVhcCgpKSkgTmF0aXZlRXJyb3JDb25zdHJ1Y3RvcihleGVj
LCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgcHJvdG90eXBlU3RydWN0dXJlLCBuYW1lQW5kTWVz
c2FnZSk7Ci0gICAgICAgIH0KKyAgICAgICAgc3RhdGljIE5hdGl2ZUVycm9yQ29uc3RydWN0b3Iq
IGNyZWF0ZShFeGVjU3RhdGUqLCBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIFN0cnVjdHVy
ZSogcHJvdG90eXBlU3RydWN0dXJlLCBjb25zdCBVU3RyaW5nJiBuYW1lQW5kTWVzc2FnZSk7CiAg
ICAgICAgIAogICAgICAgICBzdGF0aWMgY29uc3QgQ2xhc3NJbmZvIHNfaW5mbzsKIApAQCAtNDks
NiArNDMsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgU3RydWN0dXJlKiBlcnJvclN0cnVj
dHVyZSgpIHsgcmV0dXJuIG1fZXJyb3JTdHJ1Y3R1cmUuZ2V0KCk7IH0KIAogICAgIHByaXZhdGU6
CisgICAgICAgIE5hdGl2ZUVycm9yQ29uc3RydWN0b3IoRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmpl
Y3QqLCBTdHJ1Y3R1cmUqKTsKICAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVy
ZUZsYWdzID0gT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbiB8IEludGVybmFsRnVuY3Rpb246OlN0cnVj
dHVyZUZsYWdzOwogICAgICAgICB2aXJ0dWFsIENvbnN0cnVjdFR5cGUgZ2V0Q29uc3RydWN0RGF0
YShDb25zdHJ1Y3REYXRhJik7CiAgICAgICAgIHZpcnR1YWwgQ2FsbFR5cGUgZ2V0Q2FsbERhdGEo
Q2FsbERhdGEmKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05hdGl2ZUVy
cm9yUHJvdG90eXBlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9OYXRpdmVFcnJvclByb3RvdHlwZS5jcHAJKHJldmlzaW9uIDkyMzkzKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZlRXJyb3JQcm90b3R5cGUuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0yMiwyMCArMjIsMTQgQEAKICNpbmNsdWRlICJOYXRpdmVFcnJvclByb3RvdHlw
ZS5oIgogCiAjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3QuaCIKLSNpbmNsdWRlICJKU1N0cmluZy5o
IgotI2luY2x1ZGUgIk5hdGl2ZUVycm9yQ29uc3RydWN0b3IuaCIKLSNpbmNsdWRlICJVU3RyaW5n
LmgiCiAKIG5hbWVzcGFjZSBKU0MgewogCiBBU1NFUlRfQ0xBU1NfRklUU19JTl9DRUxMKE5hdGl2
ZUVycm9yUHJvdG90eXBlKTsKIAotTmF0aXZlRXJyb3JQcm90b3R5cGU6Ok5hdGl2ZUVycm9yUHJv
dG90eXBlKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IFVTdHJpbmcmIG5hbWVBbmRNZXNzYWdlLCBOYXRpdmVF
cnJvckNvbnN0cnVjdG9yKiBjb25zdHJ1Y3RvcikKK05hdGl2ZUVycm9yUHJvdG90eXBlOjpOYXRp
dmVFcnJvclByb3RvdHlwZShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlKQogICAgIDogRXJyb3JQcm90b3R5cGUoZXhlYywg
Z2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUpCiB7Ci0gICAgcHV0RGlyZWN0KGV4ZWMtPmdsb2JhbERh
dGEoKSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLm5hbWUsIGpzU3RyaW5nKGV4ZWMsIG5hbWVBbmRN
ZXNzYWdlKSwgRG9udEVudW0pOwotICAgIHB1dERpcmVjdChleGVjLT5nbG9iYWxEYXRhKCksIGV4
ZWMtPnByb3BlcnR5TmFtZXMoKS5tZXNzYWdlLCBqc1N0cmluZyhleGVjLCBuYW1lQW5kTWVzc2Fn
ZSksIERvbnRFbnVtKTsKLSAgICBwdXREaXJlY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5w
cm9wZXJ0eU5hbWVzKCkuY29uc3RydWN0b3IsIGNvbnN0cnVjdG9yLCBEb250RW51bSk7CiB9CiAK
IH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
TmF0aXZlRXJyb3JQcm90b3R5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9OYXRpdmVFcnJvclByb3RvdHlwZS5oCShyZXZpc2lvbiA5MjM5MykKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05hdGl2ZUVycm9yUHJvdG90eXBlLmgJKHdvcmtp
bmcgY29weSkKQEAgLTIyLDE4ICsyMiwyMiBAQAogI2RlZmluZSBOYXRpdmVFcnJvclByb3RvdHlw
ZV9oCiAKICNpbmNsdWRlICJFcnJvclByb3RvdHlwZS5oIgorI2luY2x1ZGUgIk5hdGl2ZUVycm9y
Q29uc3RydWN0b3IuaCIKIAogbmFtZXNwYWNlIEpTQyB7Ci0gICAgY2xhc3MgTmF0aXZlRXJyb3JD
b25zdHJ1Y3RvcjsKIAogICAgIGNsYXNzIE5hdGl2ZUVycm9yUHJvdG90eXBlIDogcHVibGljIEVy
cm9yUHJvdG90eXBlIHsKICAgICBwcml2YXRlOgotICAgICAgICBOYXRpdmVFcnJvclByb3RvdHlw
ZShFeGVjU3RhdGUqLCBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIGNvbnN0IFVTdHJpbmcm
LCBOYXRpdmVFcnJvckNvbnN0cnVjdG9yKik7CisgICAgICAgIE5hdGl2ZUVycm9yUHJvdG90eXBl
KEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKik7CiAgICAgCiAgICAgcHVi
bGljOgogICAgICAgICBzdGF0aWMgTmF0aXZlRXJyb3JQcm90b3R5cGUqIGNyZWF0ZShFeGVjU3Rh
dGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0
dXJlLCBjb25zdCBVU3RyaW5nJiBuYW1lQW5kTWVzc2FnZSwgTmF0aXZlRXJyb3JDb25zdHJ1Y3Rv
ciogY29uc3RydWN0b3IpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBuZXcgKGFsbG9j
YXRlQ2VsbDxOYXRpdmVFcnJvclByb3RvdHlwZT4oKmV4ZWMtPmhlYXAoKSkpIE5hdGl2ZUVycm9y
UHJvdG90eXBlKGV4ZWMsIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBuYW1lQW5kTWVzc2FnZSwg
Y29uc3RydWN0b3IpOworICAgICAgICAgICAgTmF0aXZlRXJyb3JQcm90b3R5cGUqIHByb3RvdHlw
ZSA9IG5ldyAoYWxsb2NhdGVDZWxsPE5hdGl2ZUVycm9yUHJvdG90eXBlPigqZXhlYy0+aGVhcCgp
KSkgTmF0aXZlRXJyb3JQcm90b3R5cGUoZXhlYywgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUpOwor
ICAgICAgICAgICAgcHJvdG90eXBlLT5wdXREaXJlY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVj
LT5wcm9wZXJ0eU5hbWVzKCkubmFtZSwganNTdHJpbmcoZXhlYywgbmFtZUFuZE1lc3NhZ2UpLCBE
b250RW51bSk7CisgICAgICAgICAgICBwcm90b3R5cGUtPnB1dERpcmVjdChleGVjLT5nbG9iYWxE
YXRhKCksIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5tZXNzYWdlLCBqc1N0cmluZyhleGVjLCBuYW1l
QW5kTWVzc2FnZSksIERvbnRFbnVtKTsKKyAgICAgICAgICAgIHByb3RvdHlwZS0+cHV0RGlyZWN0
KGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLmNvbnN0cnVjdG9yLCBj
b25zdHJ1Y3RvciwgRG9udEVudW0pOworICAgICAgICAgICAgcmV0dXJuIHByb3RvdHlwZTsKICAg
ICAgICAgfQogICAgIH07CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051
bWJlckNvbnN0cnVjdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9OdW1iZXJDb25zdHJ1Y3Rvci5jcHAJKHJldmlzaW9uIDkyMzkzKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVtYmVyQ29uc3RydWN0b3IuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC01NSw3ICs1NSw3IEBAIGNvbnN0IENsYXNzSW5mbyBOdW1iZXJDb25zdHJ1Y3Rvcjo6
c19pbmYKICovCiAKIE51bWJlckNvbnN0cnVjdG9yOjpOdW1iZXJDb25zdHJ1Y3RvcihFeGVjU3Rh
dGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0
dXJlLCBOdW1iZXJQcm90b3R5cGUqIG51bWJlclByb3RvdHlwZSkKLSAgICA6IEludGVybmFsRnVu
Y3Rpb24oJmV4ZWMtPmdsb2JhbERhdGEoKSwgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIElkZW50
aWZpZXIoZXhlYywgbnVtYmVyUHJvdG90eXBlLT5zX2luZm8uY2xhc3NOYW1lKSkKKyAgICA6IElu
dGVybmFsRnVuY3Rpb24oZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUpCiB7CiAgICAgQVNTRVJUKGlu
aGVyaXRzKCZzX2luZm8pKTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
TnVtYmVyQ29uc3RydWN0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9OdW1iZXJDb25zdHJ1Y3Rvci5oCShyZXZpc2lvbiA5MjM5MykKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL051bWJlckNvbnN0cnVjdG9yLmgJKHdvcmtpbmcgY29weSkK
QEAgLTIyLDE5ICsyMiwyMCBAQAogI2RlZmluZSBOdW1iZXJDb25zdHJ1Y3Rvcl9oCiAKICNpbmNs
dWRlICJJbnRlcm5hbEZ1bmN0aW9uLmgiCisjaW5jbHVkZSAiTnVtYmVyUHJvdG90eXBlLmgiCiAK
IG5hbWVzcGFjZSBKU0MgewogCi0gICAgY2xhc3MgTnVtYmVyUHJvdG90eXBlOwotCiAgICAgY2xh
c3MgTnVtYmVyQ29uc3RydWN0b3IgOiBwdWJsaWMgSW50ZXJuYWxGdW5jdGlvbiB7CiAgICAgcHJp
dmF0ZToKICAgICAgICAgTnVtYmVyQ29uc3RydWN0b3IoRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmpl
Y3QqLCBTdHJ1Y3R1cmUqLCBOdW1iZXJQcm90b3R5cGUqKTsKICAgICAgICAgCiAgICAgcHVibGlj
OgotICAgICAgICBzdGF0aWMgTnVtYmVyQ29uc3RydWN0b3IqIGNyZWF0ZShFeGVjU3RhdGUqIGV4
ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBO
dW1iZXJQcm90b3R5cGUqIG51bVByb3RvdHlwZSkKKyAgICAgICAgc3RhdGljIE51bWJlckNvbnN0
cnVjdG9yKiBjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgTnVtYmVyUHJvdG90eXBlKiBudW1iZXJQcm90b3R5
cGUpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBuZXcgKGFsbG9jYXRlQ2VsbDxOdW1i
ZXJDb25zdHJ1Y3Rvcj4oKmV4ZWMtPmhlYXAoKSkpIE51bWJlckNvbnN0cnVjdG9yKGV4ZWMsIGds
b2JhbE9iamVjdCwgc3RydWN0dXJlLCBudW1Qcm90b3R5cGUpOworICAgICAgICAgICAgTnVtYmVy
Q29uc3RydWN0b3IqIGNvbnN0cnVjdG9yID0gbmV3IChhbGxvY2F0ZUNlbGw8TnVtYmVyQ29uc3Ry
dWN0b3I+KCpleGVjLT5oZWFwKCkpKSBOdW1iZXJDb25zdHJ1Y3RvcihleGVjLCBnbG9iYWxPYmpl
Y3QsIHN0cnVjdHVyZSwgbnVtYmVyUHJvdG90eXBlKTsKKyAgICAgICAgICAgIGNvbnN0cnVjdG9y
LT5pbml0UHJvcGVydGllcyhleGVjLT5nbG9iYWxEYXRhKCksIElkZW50aWZpZXIoZXhlYywgbnVt
YmVyUHJvdG90eXBlLT5zX2luZm8uY2xhc3NOYW1lKSk7CisgICAgICAgICAgICByZXR1cm4gY29u
c3RydWN0b3I7CiAgICAgICAgIH0KIAogICAgICAgICB2aXJ0dWFsIGJvb2wgZ2V0T3duUHJvcGVy
dHlTbG90KEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBQcm9wZXJ0eVNsb3QmKTsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdENvbnN0cnVjdG9yLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RDb25zdHJ1
Y3Rvci5jcHAJKHJldmlzaW9uIDkyMzkzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvT2JqZWN0Q29uc3RydWN0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03Niw3ICs3Niw3IEBA
IGNvbnN0IENsYXNzSW5mbyBPYmplY3RDb25zdHJ1Y3Rvcjo6c19pbmYKICovCiAKIE9iamVjdENv
bnN0cnVjdG9yOjpPYmplY3RDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBPYmplY3RQcm90b3R5cGUq
IG9iamVjdFByb3RvdHlwZSkKLSAgICA6IEludGVybmFsRnVuY3Rpb24oJmV4ZWMtPmdsb2JhbERh
dGEoKSwgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIElkZW50aWZpZXIoZXhlYywgIk9iamVjdCIp
KQorICAgIDogSW50ZXJuYWxGdW5jdGlvbihnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSkKIHsKICAg
ICAvLyBFQ01BIDE1LjIuMy4xCiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24oZXhlYy0+
Z2xvYmFsRGF0YSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkucHJvdG90eXBlLCBvYmplY3RQcm90
b3R5cGUsIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KTsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdENvbnN0cnVjdG9yLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuaAkocmV2aXNp
b24gOTIzOTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RDb25zdHJ1
Y3Rvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw3ICszNCw5IEBAIG5hbWVzcGFjZSBKU0Mgewog
ICAgIHB1YmxpYzoKICAgICAgICAgc3RhdGljIE9iamVjdENvbnN0cnVjdG9yKiBjcmVhdGUoRXhl
Y1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSwgT2JqZWN0UHJvdG90eXBlKiBvYmpQcm90b3R5cGUpCiAgICAgICAgIHsKLSAgICAg
ICAgICAgIHJldHVybiBuZXcgKGFsbG9jYXRlQ2VsbDxPYmplY3RDb25zdHJ1Y3Rvcj4oKmV4ZWMt
PmhlYXAoKSkpIE9iamVjdENvbnN0cnVjdG9yKGV4ZWMsIGdsb2JhbE9iamVjdCwgc3RydWN0dXJl
LCBvYmpQcm90b3R5cGUpOworICAgICAgICAgICAgT2JqZWN0Q29uc3RydWN0b3IqIGNvbnN0cnVj
dG9yID0gbmV3IChhbGxvY2F0ZUNlbGw8T2JqZWN0Q29uc3RydWN0b3I+KCpleGVjLT5oZWFwKCkp
KSBPYmplY3RDb25zdHJ1Y3RvcihleGVjLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgb2JqUHJv
dG90eXBlKTsKKyAgICAgICAgICAgIGNvbnN0cnVjdG9yLT5pbml0UHJvcGVydGllcyhleGVjLT5n
bG9iYWxEYXRhKCksIElkZW50aWZpZXIoZXhlYywgIk9iamVjdCIpKTsKKyAgICAgICAgICAgIHJl
dHVybiBjb25zdHJ1Y3RvcjsKICAgICAgICAgfQogCiAgICAgICAgIHZpcnR1YWwgYm9vbCBnZXRP
d25Qcm9wZXJ0eVNsb3QoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIFByb3BlcnR5U2xv
dCYpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwQ29uc3RydWN0
b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4
cENvbnN0cnVjdG9yLmNwcAkocmV2aXNpb24gOTIzOTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9SZWdFeHBDb25zdHJ1Y3Rvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk2LDcg
Kzk2LDcgQEAgY29uc3QgQ2xhc3NJbmZvIFJlZ0V4cENvbnN0cnVjdG9yOjpzX2luZgogKi8KIAog
UmVnRXhwQ29uc3RydWN0b3I6OlJlZ0V4cENvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogZXhlYywgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFJlZ0V4cFBy
b3RvdHlwZSogcmVnRXhwUHJvdG90eXBlKQotICAgIDogSW50ZXJuYWxGdW5jdGlvbigmZXhlYy0+
Z2xvYmFsRGF0YSgpLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgSWRlbnRpZmllcihleGVjLCAi
UmVnRXhwIikpCisgICAgOiBJbnRlcm5hbEZ1bmN0aW9uKGdsb2JhbE9iamVjdCwgc3RydWN0dXJl
KQogICAgICwgZChhZG9wdFB0cihuZXcgUmVnRXhwQ29uc3RydWN0b3JQcml2YXRlKSkKIHsKICAg
ICBBU1NFUlQoaW5oZXJpdHMoJnNfaW5mbykpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvUmVnRXhwQ29uc3RydWN0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9SZWdFeHBDb25zdHJ1Y3Rvci5oCShyZXZpc2lvbiA5MjM5MykKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cENvbnN0cnVjdG9yLmgJKHdvcmtp
bmcgY29weSkKQEAgLTYyLDcgKzYyLDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgcHVibGljOgog
ICAgICAgICBzdGF0aWMgUmVnRXhwQ29uc3RydWN0b3IqIGNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMs
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBSZWdF
eHBQcm90b3R5cGUqIHJlZ0V4cFByb3RvdHlwZSkKICAgICAgICAgewotICAgICAgICAgICAgcmV0
dXJuIG5ldyAoYWxsb2NhdGVDZWxsPFJlZ0V4cENvbnN0cnVjdG9yPigqZXhlYy0+aGVhcCgpKSkg
UmVnRXhwQ29uc3RydWN0b3IoZXhlYywgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIHJlZ0V4cFBy
b3RvdHlwZSk7CisgICAgICAgICAgICBSZWdFeHBDb25zdHJ1Y3RvciogY29uc3RydWN0b3IgPSBu
ZXcgKGFsbG9jYXRlQ2VsbDxSZWdFeHBDb25zdHJ1Y3Rvcj4oKmV4ZWMtPmhlYXAoKSkpIFJlZ0V4
cENvbnN0cnVjdG9yKGV4ZWMsIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCByZWdFeHBQcm90b3R5
cGUpOworICAgICAgICAgICAgY29uc3RydWN0b3ItPmluaXRQcm9wZXJ0aWVzKGV4ZWMtPmdsb2Jh
bERhdGEoKSwgSWRlbnRpZmllcihleGVjLCAiUmVnRXhwIikpOworICAgICAgICAgICAgcmV0dXJu
IGNvbnN0cnVjdG9yOwogICAgICAgICB9CiAKICAgICAgICAgc3RhdGljIFN0cnVjdHVyZSogY3Jl
YXRlU3RydWN0dXJlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNWYWx1ZSBwcm90b3R5cGUp
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBNYXRjaGVzQXJyYXku
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBNYXRj
aGVzQXJyYXkuaAkocmV2aXNpb24gOTIzOTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9SZWdFeHBNYXRjaGVzQXJyYXkuaAkod29ya2luZyBjb3B5KQpAQCAtMjUsOSArMjUsNiBA
QAogbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBSZWdFeHBNYXRjaGVzQXJyYXkgOiBwdWJs
aWMgSlNBcnJheSB7Ci0gICAgcHJpdmF0ZToKLSAgICAgICAgUmVnRXhwTWF0Y2hlc0FycmF5KEV4
ZWNTdGF0ZSosIFJlZ0V4cENvbnN0cnVjdG9yUHJpdmF0ZSopOwotCiAgICAgcHVibGljOgogICAg
ICAgICBzdGF0aWMgUmVnRXhwTWF0Y2hlc0FycmF5KiBjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBS
ZWdFeHBDb25zdHJ1Y3RvclByaXZhdGUqIGN0b3JQcml2YXRlKQogICAgICAgICB7CkBAIC0zNiw2
ICszMyw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2aXJ0dWFsIH5SZWdFeHBNYXRjaGVz
QXJyYXkoKTsKIAogICAgIHByaXZhdGU6CisgICAgICAgIFJlZ0V4cE1hdGNoZXNBcnJheShFeGVj
U3RhdGUqLCBSZWdFeHBDb25zdHJ1Y3RvclByaXZhdGUqKTsKICAgICAgICAgdmlydHVhbCBib29s
IGdldE93blByb3BlcnR5U2xvdChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHBy
b3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQogICAgICAgICB7CiAgICAgICAgICAgICBp
ZiAoc3ViY2xhc3NEYXRhKCkpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9T
dHJpbmdDb25zdHJ1Y3Rvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvU3RyaW5nQ29uc3RydWN0b3IuY3BwCShyZXZpc2lvbiA5MjM5MykKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ0NvbnN0cnVjdG9yLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNDgsNyArNDgsNyBAQCBjb25zdCBDbGFzc0luZm8gU3RyaW5nQ29uc3RydWN0b3I6
OnNfaW5mCiBBU1NFUlRfQ0xBU1NfRklUU19JTl9DRUxMKFN0cmluZ0NvbnN0cnVjdG9yKTsKIAog
U3RyaW5nQ29uc3RydWN0b3I6OlN0cmluZ0NvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogZXhlYywgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFN0cmluZ1By
b3RvdHlwZSogc3RyaW5nUHJvdG90eXBlKQotICAgIDogSW50ZXJuYWxGdW5jdGlvbigmZXhlYy0+
Z2xvYmFsRGF0YSgpLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgSWRlbnRpZmllcihleGVjLCBz
dHJpbmdQcm90b3R5cGUtPmNsYXNzSW5mbygpLT5jbGFzc05hbWUpKQorICAgIDogSW50ZXJuYWxG
dW5jdGlvbihnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSkKIHsKICAgICBwdXREaXJlY3RXaXRob3V0
VHJhbnNpdGlvbihleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5wcm90
b3R5cGUsIHN0cmluZ1Byb3RvdHlwZSwgUmVhZE9ubHkgfCBEb250RW51bSB8IERvbnREZWxldGUp
OwogICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhl
Yy0+cHJvcGVydHlOYW1lcygpLmxlbmd0aCwganNOdW1iZXIoMSksIFJlYWRPbmx5IHwgRG9udEVu
dW0gfCBEb250RGVsZXRlKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0
cmluZ0NvbnN0cnVjdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvU3RyaW5nQ29uc3RydWN0b3IuaAkocmV2aXNpb24gOTIzOTMpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdDb25zdHJ1Y3Rvci5oCSh3b3JraW5nIGNvcHkpCkBA
IC0zMiw5ICszMiwxMSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgU3RyaW5nQ29uc3RydWN0
b3IoRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBTdHJpbmdQcm90b3R5
cGUqKTsKICAgICAgICAgCiAgICAgcHVibGljOgotICAgICAgICBzdGF0aWMgU3RyaW5nQ29uc3Ry
dWN0b3IqIGNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QgLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgU3RyaW5nUHJvdG90eXBlKiBzdHJQcm90b3R5cGUp
CisgICAgICAgIHN0YXRpYyBTdHJpbmdDb25zdHJ1Y3RvciogY3JlYXRlKEV4ZWNTdGF0ZSogZXhl
YywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCAsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBT
dHJpbmdQcm90b3R5cGUqIHN0cmluZ1Byb3RvdHlwZSkKICAgICAgICAgewotICAgICAgICAgICAg
cmV0dXJuIG5ldyAoYWxsb2NhdGVDZWxsPFN0cmluZ0NvbnN0cnVjdG9yPigqZXhlYy0+aGVhcCgp
KSkgU3RyaW5nQ29uc3RydWN0b3IoZXhlYywgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIHN0clBy
b3RvdHlwZSk7CisgICAgICAgICAgICBTdHJpbmdDb25zdHJ1Y3RvciogY29uc3RydWN0b3IgPSBu
ZXcgKGFsbG9jYXRlQ2VsbDxTdHJpbmdDb25zdHJ1Y3Rvcj4oKmV4ZWMtPmhlYXAoKSkpIFN0cmlu
Z0NvbnN0cnVjdG9yKGV4ZWMsIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBzdHJpbmdQcm90b3R5
cGUpOworICAgICAgICAgICAgY29uc3RydWN0b3ItPmluaXRQcm9wZXJ0aWVzKGV4ZWMtPmdsb2Jh
bERhdGEoKSwgSWRlbnRpZmllcihleGVjLCBzdHJpbmdQcm90b3R5cGUtPmNsYXNzSW5mbygpLT5j
bGFzc05hbWUpKTsKKyAgICAgICAgICAgIHJldHVybiBjb25zdHJ1Y3RvcjsKICAgICAgICAgfQog
CiAgICAgICAgIHN0YXRpYyBjb25zdCBDbGFzc0luZm8gc19pbmZvOwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdPYmplY3QuY3BwCShyZXZpc2lvbiA5MjM5
MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ09iamVjdC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTI5LDEzICsyOSw2IEBAIEFTU0VSVF9DTEFTU19GSVRTX0lOX0NFTEwo
U3RyaW5nT2JqZWN0KTsKIAogY29uc3QgQ2xhc3NJbmZvIFN0cmluZ09iamVjdDo6c19pbmZvID0g
eyAiU3RyaW5nIiwgJkpTV3JhcHBlck9iamVjdDo6c19pbmZvLCAwLCAwIH07CiAKLVN0cmluZ09i
amVjdDo6U3RyaW5nT2JqZWN0KEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUp
Ci0gICAgOiBKU1dyYXBwZXJPYmplY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBzdHJ1Y3R1cmUpCi17
Ci0gICAgQVNTRVJUKGluaGVyaXRzKCZzX2luZm8pKTsKLSAgICBzZXRJbnRlcm5hbFZhbHVlKGV4
ZWMtPmdsb2JhbERhdGEoKSwganNFbXB0eVN0cmluZyhleGVjKSk7Ci19Ci0KIFN0cmluZ09iamVj
dDo6U3RyaW5nT2JqZWN0KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUsIEpTU3RyaW5nKiBzdHJpbmcpCiAgICAgOiBKU1dyYXBwZXJPYmplY3QoZ2xvYmFsRGF0
YSwgc3RydWN0dXJlKQogewpAQCAtNDMsMTMgKzM2LDYgQEAgU3RyaW5nT2JqZWN0OjpTdHJpbmdP
YmplY3QoSlNHbG9iYWxEYXRhJgogICAgIHNldEludGVybmFsVmFsdWUoZ2xvYmFsRGF0YSwgc3Ry
aW5nKTsKIH0KIAotU3RyaW5nT2JqZWN0OjpTdHJpbmdPYmplY3QoRXhlY1N0YXRlKiBleGVjLCBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSwgY29uc3QgVVN0cmluZyYgc3RyaW5nKQotICAgIDogSlNXcmFw
cGVyT2JqZWN0KGV4ZWMtPmdsb2JhbERhdGEoKSwgc3RydWN0dXJlKQotewotICAgIEFTU0VSVChp
bmhlcml0cygmc19pbmZvKSk7Ci0gICAgc2V0SW50ZXJuYWxWYWx1ZShleGVjLT5nbG9iYWxEYXRh
KCksIGpzU3RyaW5nKGV4ZWMsIHN0cmluZykpOwotfQotCiBib29sIFN0cmluZ09iamVjdDo6Z2V0
T3duUHJvcGVydHlTbG90KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVy
dHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgaWYgKGludGVybmFsVmFsdWUoKS0+
Z2V0U3RyaW5nUHJvcGVydHlTbG90KGV4ZWMsIHByb3BlcnR5TmFtZSwgc2xvdCkpCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdPYmplY3QuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdPYmplY3QuaAkocmV2aXNpb24g
OTIzOTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdPYmplY3QuaAko
d29ya2luZyBjb3B5KQpAQCAtMjcsMTggKzI3LDE2IEBACiBuYW1lc3BhY2UgSlNDIHsKIAogICAg
IGNsYXNzIFN0cmluZ09iamVjdCA6IHB1YmxpYyBKU1dyYXBwZXJPYmplY3QgewotICAgIHByb3Rl
Y3RlZDoKLSAgICAgICAgU3RyaW5nT2JqZWN0KEV4ZWNTdGF0ZSosIFN0cnVjdHVyZSopOwotICAg
ICAgICBTdHJpbmdPYmplY3QoRXhlY1N0YXRlKiwgU3RydWN0dXJlKiwgY29uc3QgVVN0cmluZyYp
OwotICAgICAgICAgICAgICAgIAogICAgIHB1YmxpYzoKICAgICAgICAgc3RhdGljIFN0cmluZ09i
amVjdCogY3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAgICAg
ICAgIHsKLSAgICAgICAgICAgIHJldHVybiBuZXcgKGFsbG9jYXRlQ2VsbDxTdHJpbmdPYmplY3Q+
KCpleGVjLT5oZWFwKCkpKSBTdHJpbmdPYmplY3QoZXhlYywgc3RydWN0dXJlKTsgIAorICAgICAg
ICAgICAgSlNTdHJpbmcqIGVtcHR5U3RyaW5nID0ganNFbXB0eVN0cmluZyhleGVjKTsKKyAgICAg
ICAgICAgIHJldHVybiBuZXcgKGFsbG9jYXRlQ2VsbDxTdHJpbmdPYmplY3Q+KCpleGVjLT5oZWFw
KCkpKSBTdHJpbmdPYmplY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBzdHJ1Y3R1cmUsIGVtcHR5U3Ry
aW5nKTsKICAgICAgICAgfQogICAgICAgICBzdGF0aWMgU3RyaW5nT2JqZWN0KiBjcmVhdGUoRXhl
Y1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgY29uc3QgVVN0cmluZyYgc3RyKQog
ICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gbmV3IChhbGxvY2F0ZUNlbGw8U3RyaW5nT2Jq
ZWN0PigqZXhlYy0+aGVhcCgpKSkgU3RyaW5nT2JqZWN0KGV4ZWMsIHN0cnVjdHVyZSwgc3RyKTsg
IAorICAgICAgICAgICAgSlNTdHJpbmcqIHN0cmluZyA9IGpzU3RyaW5nKGV4ZWMsIHN0cik7Cisg
ICAgICAgICAgICByZXR1cm4gbmV3IChhbGxvY2F0ZUNlbGw8U3RyaW5nT2JqZWN0PigqZXhlYy0+
aGVhcCgpKSkgU3RyaW5nT2JqZWN0KGV4ZWMtPmdsb2JhbERhdGEoKSwgc3RydWN0dXJlLCBzdHJp
bmcpOwogICAgICAgICB9CiAgICAgICAgIHN0YXRpYyBTdHJpbmdPYmplY3QqIGNyZWF0ZShFeGVj
U3RhdGUqLCBKU0dsb2JhbE9iamVjdCosIEpTU3RyaW5nKik7CiAgICAgICAgIApJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nT2JqZWN0VGhhdE1hc3F1ZXJhZGVzQXNV
bmRlZmluZWQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9T
dHJpbmdPYmplY3RUaGF0TWFzcXVlcmFkZXNBc1VuZGVmaW5lZC5oCShyZXZpc2lvbiA5MjM5MykK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ09iamVjdFRoYXRNYXNxdWVy
YWRlc0FzVW5kZWZpbmVkLmgJKHdvcmtpbmcgY29weSkKQEAgLTMyLDEzICszMiwxNCBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICBwdWJsaWM6CiAgICAgICAgIHN0YXRpYyBTdHJpbmdPYmplY3RUaGF0
TWFzcXVlcmFkZXNBc1VuZGVmaW5lZCogY3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgVVN0
cmluZyYgc3RyaW5nKQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gbmV3IChhbGxvY2F0
ZUNlbGw8U3RyaW5nT2JqZWN0VGhhdE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQ+KCpleGVjLT5oZWFw
KCkpKSBTdHJpbmdPYmplY3RUaGF0TWFzcXVlcmFkZXNBc1VuZGVmaW5lZChleGVjLAotICAgICAg
ICAgICAgICAgIGNyZWF0ZVN0cnVjdHVyZShleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPmxleGlj
YWxHbG9iYWxPYmplY3QoKS0+c3RyaW5nUHJvdG90eXBlKCkpLCBzdHJpbmcpOworICAgICAgICAg
ICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBjcmVhdGVTdHJ1Y3R1cmUoZXhlYy0+Z2xvYmFsRGF0
YSgpLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCktPnN0cmluZ1Byb3RvdHlwZSgpKTsKKyAg
ICAgICAgICAgIEpTU3RyaW5nKiBqc3N0cmluZyA9IGpzU3RyaW5nKGV4ZWMsIHN0cmluZyk7Cisg
ICAgICAgICAgICByZXR1cm4gbmV3IChhbGxvY2F0ZUNlbGw8U3RyaW5nT2JqZWN0VGhhdE1hc3F1
ZXJhZGVzQXNVbmRlZmluZWQ+KCpleGVjLT5oZWFwKCkpKSBTdHJpbmdPYmplY3RUaGF0TWFzcXVl
cmFkZXNBc1VuZGVmaW5lZChleGVjLCBzdHJ1Y3R1cmUsIGpzc3RyaW5nKTsKICAgICAgICAgfQog
CiAgICAgcHJpdmF0ZToKLSAgICAgICAgU3RyaW5nT2JqZWN0VGhhdE1hc3F1ZXJhZGVzQXNVbmRl
ZmluZWQoRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgY29uc3QgVVN0cmlu
ZyYgc3RyaW5nKQotICAgICAgICAgICAgOiBTdHJpbmdPYmplY3QoZXhlYywgc3RydWN0dXJlLCBz
dHJpbmcpCisgICAgICAgIFN0cmluZ09iamVjdFRoYXRNYXNxdWVyYWRlc0FzVW5kZWZpbmVkKEV4
ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTU3RyaW5nKiBzdHJpbmcpCisg
ICAgICAgICAgICA6IFN0cmluZ09iamVjdChleGVjLT5nbG9iYWxEYXRhKCksIHN0cnVjdHVyZSwg
c3RyaW5nKQogICAgICAgICB7CiAgICAgICAgIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvU3RyaW5nUHJvdG90eXBlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdQcm90b3R5cGUuY3BwCShyZXZpc2lvbiA5MjM5MykK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ1Byb3RvdHlwZS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTEzMSw4ICsxMzEsOCBAQCBjb25zdCBDbGFzc0luZm8gU3RyaW5nUHJv
dG90eXBlOjpzX2luZm8gCiAqLwogCiAvLyBFQ01BIDE1LjUuNAotU3RyaW5nUHJvdG90eXBlOjpT
dHJpbmdQcm90b3R5cGUoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKLSAgICA6IFN0cmluZ09iamVjdChleGVjLCBzdHJ1
Y3R1cmUpCitTdHJpbmdQcm90b3R5cGU6OlN0cmluZ1Byb3RvdHlwZShFeGVjU3RhdGUqIGV4ZWMs
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBKU1N0
cmluZyogc3RyaW5nKQorICAgIDogU3RyaW5nT2JqZWN0KGV4ZWMtPmdsb2JhbERhdGEoKSwgc3Ry
dWN0dXJlLCBzdHJpbmcpCiB7CiAgICAgQVNTRVJUKGluaGVyaXRzKCZzX2luZm8pKTsKIApJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nUHJvdG90eXBlLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nUHJvdG90eXBlLmgJ
KHJldmlzaW9uIDkyMzkzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5n
UHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTI5LDEyICsyOSwxMyBAQCBuYW1lc3BhY2Ug
SlNDIHsKIAogICAgIGNsYXNzIFN0cmluZ1Byb3RvdHlwZSA6IHB1YmxpYyBTdHJpbmdPYmplY3Qg
ewogICAgIHByaXZhdGU6Ci0gICAgICAgIFN0cmluZ1Byb3RvdHlwZShFeGVjU3RhdGUqLCBKU0ds
b2JhbE9iamVjdCosIFN0cnVjdHVyZSopOworICAgICAgICBTdHJpbmdQcm90b3R5cGUoRXhlY1N0
YXRlKiwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBKU1N0cmluZyopOwogCiAgICAgcHVi
bGljOgogICAgICAgICBzdGF0aWMgU3RyaW5nUHJvdG90eXBlKiBjcmVhdGUoRXhlY1N0YXRlKiBl
eGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkK
ICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIG5ldyAoYWxsb2NhdGVDZWxsPFN0cmluZ1By
b3RvdHlwZT4oKmV4ZWMtPmhlYXAoKSkpIFN0cmluZ1Byb3RvdHlwZShleGVjLCBnbG9iYWxPYmpl
Y3QsIHN0cnVjdHVyZSk7CisgICAgICAgICAgICBKU1N0cmluZyogZW1wdHlTdHJpbmcgPSBqc0Vt
cHR5U3RyaW5nKGV4ZWMpOworICAgICAgICAgICAgcmV0dXJuIG5ldyAoYWxsb2NhdGVDZWxsPFN0
cmluZ1Byb3RvdHlwZT4oKmV4ZWMtPmhlYXAoKSkpIFN0cmluZ1Byb3RvdHlwZShleGVjLCBnbG9i
YWxPYmplY3QsIHN0cnVjdHVyZSwgZW1wdHlTdHJpbmcpOwogICAgICAgICB9CiAKICAgICAgICAg
dmlydHVhbCBib29sIGdldE93blByb3BlcnR5U2xvdChFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlm
aWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlQ2hhaW4uaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVDaGFpbi5oCShyZXZpc2lvbiA5MjM5MykKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUNoYWluLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTQyLDcgKzQyLDExIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBmcmllbmQg
Y2xhc3MgSklUOwogCiAgICAgcHVibGljOgotICAgICAgICBzdGF0aWMgU3RydWN0dXJlQ2hhaW4q
IGNyZWF0ZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFN0cnVjdHVyZSogaGVhZCkgeyByZXR1
cm4gbmV3IChhbGxvY2F0ZUNlbGw8U3RydWN0dXJlQ2hhaW4+KGdsb2JhbERhdGEuaGVhcCkpIFN0
cnVjdHVyZUNoYWluKGdsb2JhbERhdGEsIGdsb2JhbERhdGEuc3RydWN0dXJlQ2hhaW5TdHJ1Y3R1
cmUuZ2V0KCksIGhlYWQpOyB9CisgICAgICAgIHN0YXRpYyBTdHJ1Y3R1cmVDaGFpbiogY3JlYXRl
KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgU3RydWN0dXJlKiBoZWFkKSAKKyAgICAgICAgewor
ICAgICAgICAgICAgcmV0dXJuIG5ldyAoYWxsb2NhdGVDZWxsPFN0cnVjdHVyZUNoYWluPihnbG9i
YWxEYXRhLmhlYXApKSBTdHJ1Y3R1cmVDaGFpbihnbG9iYWxEYXRhLCBnbG9iYWxEYXRhLnN0cnVj
dHVyZUNoYWluU3RydWN0dXJlLmdldCgpLCBoZWFkKTsKKyAgICAgICAgfQorCiAgICAgICAgIFdy
aXRlQmFycmllcjxTdHJ1Y3R1cmU+KiBoZWFkKCkgeyByZXR1cm4gbV92ZWN0b3IuZ2V0KCk7IH0K
ICAgICAgICAgdm9pZCB2aXNpdENoaWxkcmVuKFNsb3RWaXNpdG9yJik7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>102964</attachid>
            <date>2011-08-04 13:00:20 -0700</date>
            <delta_ts>2011-08-04 14:10:33 -0700</delta_ts>
            <desc>Fixing windows again</desc>
            <filename>bug-65288-20110804130019.patch</filename>
            <type>text/plain</type>
            <size>81783</size>
            <attacher name="Mark Hahnenberg">mhahnenberg</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gOTIzOTMpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTIzIEBA
CisyMDExLTA4LTA0ICBNYXJrIEhhaG5lbmJlcmcgIDxtaGFobmVuYmVyZ0BhcHBsZS5jb20+CisK
KyAgICAgICAgQWRkIGNoZWNrcyB0byBlbnN1cmUgYWxsb2NhdGlvbiBkb2VzIG5vdCB0YWtlIHBs
YWNlIGR1cmluZyBpbml0aWFsaXphdGlvbiBvZiBHQy1tYW5hZ2VkIG9iamVjdHMKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY1Mjg4CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVmYWN0b3JpbmcgSlNDIGlu
IHByZXBhcmF0aW9uIGZvciB0aGUgaW5jbHVzaW9uIG9mIHRoZSBhZGRpdGlvbiBvZiBHQyB2YWxp
ZGF0aW9uIGNoZWNrcy4gIAorICAgICAgICBCYXNpY2FsbHkgd2UgcHVsbCBhcyBtdWNoIGFsbG9j
YXRpb24gYXMgd2UgY2FuIG91dCBvZiBjb25zdHJ1Y3RvcnMgaW50byB0aGVpciBzdGF0aWMgY3Jl
YXRlIAorICAgICAgICBtZXRob2RzIHRvIGF2b2lkIGFsbG9jYXRpb24gZHVyaW5nIGluaXRpYWxp
emF0aW9uLCB3aGljaCBjb3VsZCBjYXVzZSBHQyB0byBvY2N1ciB3aGVuIHRoZSAKKyAgICAgICAg
b2JqZWN0IGlzIGluIGFuIHVuZGVmaW5lZCBzdGF0ZS4KKworICAgICAgICAqIEFQSS9KU0NhbGxi
YWNrRnVuY3Rpb24uY3BwOgorICAgICAgICAoSlNDOjpKU0NhbGxiYWNrRnVuY3Rpb246OkpTQ2Fs
bGJhY2tGdW5jdGlvbik6CisgICAgICAgICogQVBJL0pTQ2FsbGJhY2tGdW5jdGlvbi5oOgorICAg
ICAgICAoSlNDOjpKU0NhbGxiYWNrRnVuY3Rpb246OmNyZWF0ZSk6CisgICAgICAgICogSmF2YVNj
cmlwdENvcmUuSlNWQUxVRTY0b25seS5leHA6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUuZXhw
OgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLm9yZGVyOgorICAgICAgICAqIEphdmFTY3JpcHRD
b3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5kZWY6CisgICAgICAgICog
anNjLmNwcDoKKyAgICAgICAgKEdsb2JhbE9iamVjdDo6Y3JlYXRlKToKKyAgICAgICAgKEdsb2Jh
bE9iamVjdDo6R2xvYmFsT2JqZWN0KToKKyAgICAgICAgKiBydW50aW1lL0FycmF5Q29uc3RydWN0
b3IuY3BwOgorICAgICAgICAoSlNDOjpBcnJheUNvbnN0cnVjdG9yOjpBcnJheUNvbnN0cnVjdG9y
KToKKyAgICAgICAgKiBydW50aW1lL0FycmF5Q29uc3RydWN0b3IuaDoKKyAgICAgICAgKEpTQzo6
QXJyYXlDb25zdHJ1Y3Rvcjo6Y3JlYXRlKToKKyAgICAgICAgKiBydW50aW1lL0Jvb2xlYW5Db25z
dHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0M6OkJvb2xlYW5Db25zdHJ1Y3Rvcjo6Qm9vbGVhbkNv
bnN0cnVjdG9yKToKKyAgICAgICAgKiBydW50aW1lL0Jvb2xlYW5Db25zdHJ1Y3Rvci5oOgorICAg
ICAgICAoSlNDOjpCb29sZWFuQ29uc3RydWN0b3I6OmNyZWF0ZSk6CisgICAgICAgICogcnVudGlt
ZS9EYXRlQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAoSlNDOjpEYXRlQ29uc3RydWN0b3I6OkRh
dGVDb25zdHJ1Y3Rvcik6CisgICAgICAgICogcnVudGltZS9EYXRlQ29uc3RydWN0b3IuaDoKKyAg
ICAgICAgKEpTQzo6RGF0ZUNvbnN0cnVjdG9yOjpjcmVhdGUpOgorICAgICAgICAqIHJ1bnRpbWUv
RXJyb3IuY3BwOgorICAgICAgICAoSlNDOjpTdHJpY3RNb2RlVHlwZUVycm9yRnVuY3Rpb246OlN0
cmljdE1vZGVUeXBlRXJyb3JGdW5jdGlvbik6CisgICAgICAgIChKU0M6OlN0cmljdE1vZGVUeXBl
RXJyb3JGdW5jdGlvbjo6Y3JlYXRlKToKKyAgICAgICAgKiBydW50aW1lL0Vycm9yQ29uc3RydWN0
b3IuY3BwOgorICAgICAgICAoSlNDOjpFcnJvckNvbnN0cnVjdG9yOjpFcnJvckNvbnN0cnVjdG9y
KToKKyAgICAgICAgKiBydW50aW1lL0Vycm9yQ29uc3RydWN0b3IuaDoKKyAgICAgICAgKEpTQzo6
RXJyb3JDb25zdHJ1Y3Rvcjo6Y3JlYXRlKToKKyAgICAgICAgKiBydW50aW1lL0Vycm9ySW5zdGFu
Y2UuY3BwOgorICAgICAgICAoSlNDOjpFcnJvckluc3RhbmNlOjpFcnJvckluc3RhbmNlKToKKyAg
ICAgICAgKEpTQzo6RXJyb3JJbnN0YW5jZTo6Y3JlYXRlKToKKyAgICAgICAgKiBydW50aW1lL0Vy
cm9ySW5zdGFuY2UuaDoKKyAgICAgICAgKiBydW50aW1lL0Vycm9yUHJvdG90eXBlLmNwcDoKKyAg
ICAgICAgKEpTQzo6RXJyb3JQcm90b3R5cGU6OkVycm9yUHJvdG90eXBlKToKKyAgICAgICAgKiBy
dW50aW1lL0Vycm9yUHJvdG90eXBlLmg6CisgICAgICAgIChKU0M6OkVycm9yUHJvdG90eXBlOjpj
cmVhdGUpOgorICAgICAgICAqIHJ1bnRpbWUvRXhlY3V0YWJsZS5jcHA6CisgICAgICAgIChKU0M6
OkZ1bmN0aW9uRXhlY3V0YWJsZTo6RnVuY3Rpb25FeGVjdXRhYmxlKToKKyAgICAgICAgKiBydW50
aW1lL0V4ZWN1dGFibGUuaDoKKyAgICAgICAgKEpTQzo6TmF0aXZlRXhlY3V0YWJsZTo6Y3JlYXRl
KToKKyAgICAgICAgKiBydW50aW1lL0Z1bmN0aW9uQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAo
SlNDOjpGdW5jdGlvbkNvbnN0cnVjdG9yOjpGdW5jdGlvbkNvbnN0cnVjdG9yKToKKyAgICAgICAg
KiBydW50aW1lL0Z1bmN0aW9uQ29uc3RydWN0b3IuaDoKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25D
b25zdHJ1Y3Rvcjo6Y3JlYXRlKToKKyAgICAgICAgKiBydW50aW1lL0Z1bmN0aW9uUHJvdG90eXBl
LmNwcDoKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25Qcm90b3R5cGU6OkZ1bmN0aW9uUHJvdG90eXBl
KToKKyAgICAgICAgKiBydW50aW1lL0Z1bmN0aW9uUHJvdG90eXBlLmg6CisgICAgICAgIChKU0M6
OkZ1bmN0aW9uUHJvdG90eXBlOjpjcmVhdGUpOgorICAgICAgICAqIHJ1bnRpbWUvSW50ZXJuYWxG
dW5jdGlvbi5jcHA6CisgICAgICAgIChKU0M6OkludGVybmFsRnVuY3Rpb246OkludGVybmFsRnVu
Y3Rpb24pOgorICAgICAgICAqIHJ1bnRpbWUvSW50ZXJuYWxGdW5jdGlvbi5oOgorICAgICAgICAo
SlNDOjpJbnRlcm5hbEZ1bmN0aW9uOjppbml0UHJvcGVydGllcyk6CisgICAgICAgICogcnVudGlt
ZS9KU0J5dGVBcnJheS5jcHA6CisgICAgICAgIChKU0M6OkpTQnl0ZUFycmF5OjpKU0J5dGVBcnJh
eSk6CisgICAgICAgIChKU0M6OkpTQnl0ZUFycmF5OjpjcmVhdGUpOgorICAgICAgICAqIHJ1bnRp
bWUvSlNDZWxsLmg6CisgICAgICAgICogcnVudGltZS9KU0Z1bmN0aW9uLmNwcDoKKyAgICAgICAg
KEpTQzo6SlNGdW5jdGlvbjo6SlNGdW5jdGlvbik6CisgICAgICAgIChKU0M6OkpTRnVuY3Rpb246
OmNyZWF0ZSk6CisgICAgICAgICogcnVudGltZS9KU0Z1bmN0aW9uLmg6CisgICAgICAgICogcnVu
dGltZS9KU0dsb2JhbE9iamVjdC5oOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6Y3Jl
YXRlKToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OkpTR2xvYmFsT2JqZWN0KToKKyAg
ICAgICAgKiBydW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuY3BwOgorICAgICAgICAoSlND
OjpKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yOjpKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yKToKKyAgICAg
ICAgKEpTQzo6SlNQcm9wZXJ0eU5hbWVJdGVyYXRvcjo6Y3JlYXRlKToKKyAgICAgICAgKiBydW50
aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuaDoKKyAgICAgICAgKEpTQzo6SlNQcm9wZXJ0eU5h
bWVJdGVyYXRvcjo6Y3JlYXRlKToKKyAgICAgICAgKiBydW50aW1lL05hdGl2ZUVycm9yQ29uc3Ry
dWN0b3IuY3BwOgorICAgICAgICAoSlNDOjpOYXRpdmVFcnJvckNvbnN0cnVjdG9yOjpOYXRpdmVF
cnJvckNvbnN0cnVjdG9yKToKKyAgICAgICAgKEpTQzo6TmF0aXZlRXJyb3JDb25zdHJ1Y3Rvcjo6
Y3JlYXRlKToKKyAgICAgICAgKiBydW50aW1lL05hdGl2ZUVycm9yQ29uc3RydWN0b3IuaDoKKyAg
ICAgICAgKiBydW50aW1lL05hdGl2ZUVycm9yUHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6
TmF0aXZlRXJyb3JQcm90b3R5cGU6Ok5hdGl2ZUVycm9yUHJvdG90eXBlKToKKyAgICAgICAgKiBy
dW50aW1lL05hdGl2ZUVycm9yUHJvdG90eXBlLmg6CisgICAgICAgIChKU0M6Ok5hdGl2ZUVycm9y
UHJvdG90eXBlOjpjcmVhdGUpOgorICAgICAgICAqIHJ1bnRpbWUvTnVtYmVyQ29uc3RydWN0b3Iu
Y3BwOgorICAgICAgICAoSlNDOjpOdW1iZXJDb25zdHJ1Y3Rvcjo6TnVtYmVyQ29uc3RydWN0b3Ip
OgorICAgICAgICAqIHJ1bnRpbWUvTnVtYmVyQ29uc3RydWN0b3IuaDoKKyAgICAgICAgKEpTQzo6
TnVtYmVyQ29uc3RydWN0b3I6OmNyZWF0ZSk6CisgICAgICAgICogcnVudGltZS9PYmplY3RDb25z
dHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0M6Ok9iamVjdENvbnN0cnVjdG9yOjpPYmplY3RDb25z
dHJ1Y3Rvcik6CisgICAgICAgICogcnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5oOgorICAgICAg
ICAoSlNDOjpPYmplY3RDb25zdHJ1Y3Rvcjo6Y3JlYXRlKToKKyAgICAgICAgKiBydW50aW1lL1Jl
Z0V4cENvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6UmVnRXhwQ29uc3RydWN0b3I6OlJl
Z0V4cENvbnN0cnVjdG9yKToKKyAgICAgICAgKiBydW50aW1lL1JlZ0V4cENvbnN0cnVjdG9yLmg6
CisgICAgICAgIChKU0M6OlJlZ0V4cENvbnN0cnVjdG9yOjpjcmVhdGUpOgorICAgICAgICAqIHJ1
bnRpbWUvUmVnRXhwTWF0Y2hlc0FycmF5Lmg6CisgICAgICAgICogcnVudGltZS9TdHJpbmdDb25z
dHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0M6OlN0cmluZ0NvbnN0cnVjdG9yOjpTdHJpbmdDb25z
dHJ1Y3Rvcik6CisgICAgICAgICogcnVudGltZS9TdHJpbmdDb25zdHJ1Y3Rvci5oOgorICAgICAg
ICAoSlNDOjpTdHJpbmdDb25zdHJ1Y3Rvcjo6Y3JlYXRlKToKKyAgICAgICAgKiBydW50aW1lL1N0
cmluZ09iamVjdC5jcHA6CisgICAgICAgICogcnVudGltZS9TdHJpbmdPYmplY3QuaDoKKyAgICAg
ICAgKEpTQzo6U3RyaW5nT2JqZWN0OjpjcmVhdGUpOgorICAgICAgICAqIHJ1bnRpbWUvU3RyaW5n
T2JqZWN0VGhhdE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQuaDoKKyAgICAgICAgKEpTQzo6U3RyaW5n
T2JqZWN0VGhhdE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQ6OmNyZWF0ZSk6CisgICAgICAgIChKU0M6
OlN0cmluZ09iamVjdFRoYXRNYXNxdWVyYWRlc0FzVW5kZWZpbmVkOjpTdHJpbmdPYmplY3RUaGF0
TWFzcXVlcmFkZXNBc1VuZGVmaW5lZCk6CisgICAgICAgICogcnVudGltZS9TdHJpbmdQcm90b3R5
cGUuY3BwOgorICAgICAgICAoSlNDOjpTdHJpbmdQcm90b3R5cGU6OlN0cmluZ1Byb3RvdHlwZSk6
CisgICAgICAgICogcnVudGltZS9TdHJpbmdQcm90b3R5cGUuaDoKKyAgICAgICAgKEpTQzo6U3Ry
aW5nUHJvdG90eXBlOjpjcmVhdGUpOgorICAgICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlQ2hhaW4u
aDoKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlQ2hhaW46OmNyZWF0ZSk6CisKIDIwMTEtMDgtMDQg
IE1hcmsgSGFobmVuYmVyZyAgPG1oYWhuZW5iZXJnQGFwcGxlLmNvbT4KIAogICAgICAgICBJbnRl
cnByZXRlciBjYW4gcG90ZW50aWFsbHkgR0MgaW4gdGhlIG1pZGRsZSBvZiBpbml0aWFsaXppbmcg
YSBzdHJ1Y3R1cmUgY2hhaW4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS5KU1ZBTFVFNjRvbmx5LmV4cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvSmF2YVNjcmlwdENvcmUuSlNWQUxVRTY0b25seS5leHAJKHJldmlzaW9uIDkyMzkzKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLkpTVkFMVUU2NG9ubHkuZXhwCSh3
b3JraW5nIGNvcHkpCkBAIC0xICswLDAgQEAKLV9fWk4zSlNDMTBKU0Z1bmN0aW9uQzFFUE5TXzlF
eGVjU3RhdGVFUE5TXzE0SlNHbG9iYWxPYmplY3RFUE5TXzlTdHJ1Y3R1cmVFaVJLTlNfMTBJZGVu
dGlmaWVyRVBGUHZTMl9FCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUuZXhwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZS5leHAJKHJldmlzaW9uIDkyMzkzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3Jp
cHRDb3JlLmV4cAkod29ya2luZyBjb3B5KQpAQCAtMTExLDYgKzExMSw3IEBAIF9fWk4zSlNDMTBJ
ZGVudGlmaWVyNGZyb21FUE5TXzlFeGVjU3RhdGUKIF9fWk4zSlNDMTBJZGVudGlmaWVyNWVxdWFs
RVBLTjNXVEYxMFN0cmluZ0ltcGxFUEtjCiBfX1pOM0pTQzEwSWRlbnRpZmllcjh0b1VJbnQzMkVS
S05TXzdVU3RyaW5nRVJiCiBfX1pOM0pTQzEwSlNGdW5jdGlvbjRuYW1lRVBOU185RXhlY1N0YXRl
RQorX19aTjNKU0MxMEpTRnVuY3Rpb242Y3JlYXRlRVBOU185RXhlY1N0YXRlRVBOU18xNEpTR2xv
YmFsT2JqZWN0RVBOU185U3RydWN0dXJlRWlSS05TXzEwSWRlbnRpZmllckVQRlB2UzJfRQogX19a
TjNKU0MxMEpTRnVuY3Rpb242c19pbmZvRQogX19aTjNKU0MxMHRocm93RXJyb3JFUE5TXzlFeGVj
U3RhdGVFTlNfN0pTVmFsdWVFCiBfX1pOM0pTQzEwdGhyb3dFcnJvckVQTlNfOUV4ZWNTdGF0ZUVQ
TlNfOEpTT2JqZWN0RQpAQCAtMTUxLDcgKzE1Miw3IEBAIF9fWk4zSlNDMTJTdHJpbmdPYmplY3Qx
OWdldE93blByb3BlcnR5TmEKIF9fWk4zSlNDMTJTdHJpbmdPYmplY3QyNGdldE93blByb3BlcnR5
RGVzY3JpcHRvckVQTlNfOUV4ZWNTdGF0ZUVSS05TXzEwSWRlbnRpZmllckVSTlNfMThQcm9wZXJ0
eURlc2NyaXB0b3JFCiBfX1pOM0pTQzEyU3RyaW5nT2JqZWN0M3B1dEVQTlNfOUV4ZWNTdGF0ZUVS
S05TXzEwSWRlbnRpZmllckVOU183SlNWYWx1ZUVSTlNfMTVQdXRQcm9wZXJ0eVNsb3RFCiBfX1pO
M0pTQzEyU3RyaW5nT2JqZWN0NnNfaW5mb0UKLV9fWk4zSlNDMTJTdHJpbmdPYmplY3RDMkVQTlNf
OUV4ZWNTdGF0ZUVQTlNfOVN0cnVjdHVyZUVSS05TXzdVU3RyaW5nRQorX19aTjNKU0MxMlN0cmlu
Z09iamVjdEMyRVJOU18xMkpTR2xvYmFsRGF0YUVQTlNfOVN0cnVjdHVyZUVQTlNfOEpTU3RyaW5n
RQogX19aTjNKU0MxM1NhbXBsaW5nRmxhZ3M0c3RvcEV2CiBfX1pOM0pTQzEzU2FtcGxpbmdGbGFn
czVzdGFydEV2CiBfX1pOM0pTQzEzU2FtcGxpbmdGbGFnczdzX2ZsYWdzRQpAQCAtMTg0LDYgKzE4
NSw3IEBAIF9fWk4zSlNDMTZJbnRlcm5hbEZ1bmN0aW9uMTJ2dGFibGVBbmNob3IKIF9fWk4zSlND
MTZJbnRlcm5hbEZ1bmN0aW9uNG5hbWVFUE5TXzlFeGVjU3RhdGVFCiBfX1pOM0pTQzE2SW50ZXJu
YWxGdW5jdGlvbjZzX2luZm9FCiBfX1pOM0pTQzE2SW50ZXJuYWxGdW5jdGlvbkMyRVBOU18xMkpT
R2xvYmFsRGF0YUVQTlNfMTRKU0dsb2JhbE9iamVjdEVQTlNfOVN0cnVjdHVyZUVSS05TXzEwSWRl
bnRpZmllckUKK19fWk4zSlNDMTZJbnRlcm5hbEZ1bmN0aW9uQzJFUE5TXzE0SlNHbG9iYWxPYmpl
Y3RFUE5TXzlTdHJ1Y3R1cmVFCiBfX1pOM0pTQzE2SlNWYXJpYWJsZU9iamVjdDE0ZGVsZXRlUHJv
cGVydHlFUE5TXzlFeGVjU3RhdGVFUktOU18xMElkZW50aWZpZXJFCiBfX1pOM0pTQzE2SlNWYXJp
YWJsZU9iamVjdDE0c3ltYm9sVGFibGVHZXRFUktOU18xMElkZW50aWZpZXJFUk5TXzE4UHJvcGVy
dHlEZXNjcmlwdG9yRQogX19aTjNKU0MxNkpTVmFyaWFibGVPYmplY3QxOWdldE93blByb3BlcnR5
TmFtZXNFUE5TXzlFeGVjU3RhdGVFUk5TXzE3UHJvcGVydHlOYW1lQXJyYXlFTlNfMTVFbnVtZXJh
dGlvbk1vZGVFCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUub3Jk
ZXIKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLm9y
ZGVyCShyZXZpc2lvbiA5MjM5MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS5vcmRlcgkod29ya2luZyBjb3B5KQpAQCAtMjI1LDcgKzIyNSw2IEBAIF9fWk4zSlNDMjRT
dHJ1Y3R1cmVUcmFuc2l0aW9uVGFibGUzYWRkRVIKIF9fWk4zSlNDOVN0cnVjdHVyZTI4YWRkUHJv
cGVydHlXaXRob3V0VHJhbnNpdGlvbkVSTlNfMTJKU0dsb2JhbERhdGFFUktOU18xMElkZW50aWZp
ZXJFalBOU182SlNDZWxsRQogX19aTjNKU0M4SlNPYmplY3QyM2FsbG9jYXRlUHJvcGVydHlTdG9y
YWdlRW1tCiBfX1pOM0pTQzE3RnVuY3Rpb25Qcm90b3R5cGUyMWFkZEZ1bmN0aW9uUHJvcGVydGll
c0VQTlNfOUV4ZWNTdGF0ZUVQTlNfMTRKU0dsb2JhbE9iamVjdEVQTlNfOVN0cnVjdHVyZUVQUE5T
XzEwSlNGdW5jdGlvbkVTOV8KLV9fWk4zSlNDMTBKU0Z1bmN0aW9uQzFFUE5TXzlFeGVjU3RhdGVF
UE5TXzE0SlNHbG9iYWxPYmplY3RFUE5TXzlTdHJ1Y3R1cmVFaVJLTlNfMTBJZGVudGlmaWVyRVBG
UHZTMl9FCiBfX1pOM0pTQzEwSlNGdW5jdGlvbkMyRVBOU185RXhlY1N0YXRlRVBOU18xNEpTR2xv
YmFsT2JqZWN0RVBOU185U3RydWN0dXJlRWlSS05TXzEwSWRlbnRpZmllckVQRlB2UzJfRQogX19a
TjNKU0MxMkpTR2xvYmFsRGF0YTE1Z2V0SG9zdEZ1bmN0aW9uRVBGUHZQTlNfOUV4ZWNTdGF0ZUVF
CiBfX1pOM0pTQzlKSVRUaHVua3MxNmhvc3RGdW5jdGlvblN0dWJFUE5TXzEySlNHbG9iYWxEYXRh
RVBGUHZQTlNfOUV4ZWNTdGF0ZUVFCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcAkocmV2aXNpb24g
OTIzOTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTQ1LDQ0ICsxNDUsNDYgQEAgbG9uZyBTdG9wV2F0Y2g6OmdldEVsYXBzZWRNUygpCiAKIGNs
YXNzIEdsb2JhbE9iamVjdCA6IHB1YmxpYyBKU0dsb2JhbE9iamVjdCB7CiBwcml2YXRlOgotICAg
IEdsb2JhbE9iamVjdChKU0dsb2JhbERhdGEmLCBTdHJ1Y3R1cmUqLCBjb25zdCBWZWN0b3I8VVN0
cmluZz4mIGFyZ3VtZW50cyk7CisgICAgR2xvYmFsT2JqZWN0KEpTR2xvYmFsRGF0YSYsIFN0cnVj
dHVyZSopOwogCiBwdWJsaWM6CiAgICAgc3RhdGljIEdsb2JhbE9iamVjdCogY3JlYXRlKEpTR2xv
YmFsRGF0YSYgZ2xvYmFsRGF0YSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IFZlY3RvcjxV
U3RyaW5nPiYgYXJndW1lbnRzKQogICAgIHsKLSAgICAgICAgcmV0dXJuIG5ldyAoYWxsb2NhdGVD
ZWxsPEdsb2JhbE9iamVjdD4oZ2xvYmFsRGF0YS5oZWFwKSkgR2xvYmFsT2JqZWN0KGdsb2JhbERh
dGEsIHN0cnVjdHVyZSwgYXJndW1lbnRzKTsKKyAgICAgICAgR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QgPSBuZXcgKGFsbG9jYXRlQ2VsbDxHbG9iYWxPYmplY3Q+KGdsb2JhbERhdGEuaGVhcCkp
IEdsb2JhbE9iamVjdChnbG9iYWxEYXRhLCBzdHJ1Y3R1cmUpOworICAgICAgICBnbG9iYWxPYmpl
Y3QtPmluaXQoZ2xvYmFsT2JqZWN0KTsKKyAgICAgICAgZ2xvYmFsT2JqZWN0LT5wdXREaXJlY3RG
dW5jdGlvbihnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSwgSlNGdW5jdGlvbjo6Y3JlYXRlKGds
b2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpLCBnbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdC0+ZnVu
Y3Rpb25TdHJ1Y3R1cmUoKSwgMSwgSWRlbnRpZmllcihnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMo
KSwgImRlYnVnIiksIGZ1bmN0aW9uRGVidWcpKTsKKyAgICAgICAgZ2xvYmFsT2JqZWN0LT5wdXRE
aXJlY3RGdW5jdGlvbihnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSwgSlNGdW5jdGlvbjo6Y3Jl
YXRlKGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpLCBnbG9iYWxPYmplY3QsIGdsb2JhbE9iamVj
dC0+ZnVuY3Rpb25TdHJ1Y3R1cmUoKSwgMSwgSWRlbnRpZmllcihnbG9iYWxPYmplY3QtPmdsb2Jh
bEV4ZWMoKSwgInByaW50IiksIGZ1bmN0aW9uUHJpbnQpKTsKKyAgICAgICAgZ2xvYmFsT2JqZWN0
LT5wdXREaXJlY3RGdW5jdGlvbihnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSwgSlNGdW5jdGlv
bjo6Y3JlYXRlKGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpLCBnbG9iYWxPYmplY3QsIGdsb2Jh
bE9iamVjdC0+ZnVuY3Rpb25TdHJ1Y3R1cmUoKSwgMCwgSWRlbnRpZmllcihnbG9iYWxPYmplY3Qt
Pmdsb2JhbEV4ZWMoKSwgInF1aXQiKSwgZnVuY3Rpb25RdWl0KSk7CisgICAgICAgIGdsb2JhbE9i
amVjdC0+cHV0RGlyZWN0RnVuY3Rpb24oZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCksIEpTRnVu
Y3Rpb246OmNyZWF0ZShnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSwgZ2xvYmFsT2JqZWN0LCBn
bG9iYWxPYmplY3QtPmZ1bmN0aW9uU3RydWN0dXJlKCksIDAsIElkZW50aWZpZXIoZ2xvYmFsT2Jq
ZWN0LT5nbG9iYWxFeGVjKCksICJnYyIpLCBmdW5jdGlvbkdDKSk7CisjaWZuZGVmIE5ERUJVRwor
ICAgICAgICBnbG9iYWxPYmplY3QtPnB1dERpcmVjdEZ1bmN0aW9uKGdsb2JhbE9iamVjdC0+Z2xv
YmFsRXhlYygpLCBKU0Z1bmN0aW9uOjpjcmVhdGUoZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCks
IGdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LT5mdW5jdGlvblN0cnVjdHVyZSgpLCAwLCBJZGVu
dGlmaWVyKGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpLCAicmVsZWFzZUV4ZWN1dGFibGVNZW1v
cnkiKSwgZnVuY3Rpb25SZWxlYXNlRXhlY3V0YWJsZU1lbW9yeSkpOworI2VuZGlmCisgICAgICAg
IGdsb2JhbE9iamVjdC0+cHV0RGlyZWN0RnVuY3Rpb24oZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVj
KCksIEpTRnVuY3Rpb246OmNyZWF0ZShnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSwgZ2xvYmFs
T2JqZWN0LCBnbG9iYWxPYmplY3QtPmZ1bmN0aW9uU3RydWN0dXJlKCksIDEsIElkZW50aWZpZXIo
Z2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCksICJ2ZXJzaW9uIiksIGZ1bmN0aW9uVmVyc2lvbikp
OworICAgICAgICBnbG9iYWxPYmplY3QtPnB1dERpcmVjdEZ1bmN0aW9uKGdsb2JhbE9iamVjdC0+
Z2xvYmFsRXhlYygpLCBKU0Z1bmN0aW9uOjpjcmVhdGUoZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVj
KCksIGdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LT5mdW5jdGlvblN0cnVjdHVyZSgpLCAxLCBJ
ZGVudGlmaWVyKGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpLCAicnVuIiksIGZ1bmN0aW9uUnVu
KSk7CisgICAgICAgIGdsb2JhbE9iamVjdC0+cHV0RGlyZWN0RnVuY3Rpb24oZ2xvYmFsT2JqZWN0
LT5nbG9iYWxFeGVjKCksIEpTRnVuY3Rpb246OmNyZWF0ZShnbG9iYWxPYmplY3QtPmdsb2JhbEV4
ZWMoKSwgZ2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QtPmZ1bmN0aW9uU3RydWN0dXJlKCksIDEs
IElkZW50aWZpZXIoZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCksICJsb2FkIiksIGZ1bmN0aW9u
TG9hZCkpOworICAgICAgICBnbG9iYWxPYmplY3QtPnB1dERpcmVjdEZ1bmN0aW9uKGdsb2JhbE9i
amVjdC0+Z2xvYmFsRXhlYygpLCBKU0Z1bmN0aW9uOjpjcmVhdGUoZ2xvYmFsT2JqZWN0LT5nbG9i
YWxFeGVjKCksIGdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LT5mdW5jdGlvblN0cnVjdHVyZSgp
LCAxLCBJZGVudGlmaWVyKGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpLCAiY2hlY2tTeW50YXgi
KSwgZnVuY3Rpb25DaGVja1N5bnRheCkpOworICAgICAgICBnbG9iYWxPYmplY3QtPnB1dERpcmVj
dEZ1bmN0aW9uKGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpLCBKU0Z1bmN0aW9uOjpjcmVhdGUo
Z2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCksIGdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LT5m
dW5jdGlvblN0cnVjdHVyZSgpLCAwLCBJZGVudGlmaWVyKGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhl
YygpLCAicmVhZGxpbmUiKSwgZnVuY3Rpb25SZWFkbGluZSkpOworICAgICAgICBnbG9iYWxPYmpl
Y3QtPnB1dERpcmVjdEZ1bmN0aW9uKGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpLCBKU0Z1bmN0
aW9uOjpjcmVhdGUoZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCksIGdsb2JhbE9iamVjdCwgZ2xv
YmFsT2JqZWN0LT5mdW5jdGlvblN0cnVjdHVyZSgpLCAwLCBJZGVudGlmaWVyKGdsb2JhbE9iamVj
dC0+Z2xvYmFsRXhlYygpLCAicHJlY2lzZVRpbWUiKSwgZnVuY3Rpb25QcmVjaXNlVGltZSkpOwor
CisjaWYgRU5BQkxFKFNBTVBMSU5HX0ZMQUdTKQorICAgICAgICBnbG9iYWxPYmplY3QtPnB1dERp
cmVjdEZ1bmN0aW9uKGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpLCBKU0Z1bmN0aW9uOjpjcmVh
dGUoZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCksIGdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0
LT5mdW5jdGlvblN0cnVjdHVyZSgpLCAxLCBJZGVudGlmaWVyKGdsb2JhbE9iamVjdC0+Z2xvYmFs
RXhlYygpLCAic2V0U2FtcGxpbmdGbGFncyIpLCBmdW5jdGlvblNldFNhbXBsaW5nRmxhZ3MpKTsK
KyAgICAgICAgZ2xvYmFsT2JqZWN0LT5wdXREaXJlY3RGdW5jdGlvbihnbG9iYWxPYmplY3QtPmds
b2JhbEV4ZWMoKSwgSlNGdW5jdGlvbjo6Y3JlYXRlKGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygp
LCBnbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdC0+ZnVuY3Rpb25TdHJ1Y3R1cmUoKSwgMSwgSWRl
bnRpZmllcihnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSwgImNsZWFyU2FtcGxpbmdGbGFncyIp
LCBmdW5jdGlvbkNsZWFyU2FtcGxpbmdGbGFncykpOworI2VuZGlmCisKKyAgICAgICAgSlNPYmpl
Y3QqIGFycmF5ID0gY29uc3RydWN0RW1wdHlBcnJheShnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMo
KSk7CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgYXJndW1lbnRzLnNpemUoKTsgKytp
KQorICAgICAgICAgICAgYXJyYXktPnB1dChnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSwgaSwg
anNTdHJpbmcoZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCksIGFyZ3VtZW50c1tpXSkpOworICAg
ICAgICBnbG9iYWxPYmplY3QtPnB1dERpcmVjdChnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKS0+
Z2xvYmFsRGF0YSgpLCBJZGVudGlmaWVyKGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpLCAiYXJn
dW1lbnRzIiksIGFycmF5KTsKKyAgICAgICAgcmV0dXJuIGdsb2JhbE9iamVjdDsKICAgICB9CiAg
ICAgdmlydHVhbCBVU3RyaW5nIGNsYXNzTmFtZSgpIGNvbnN0IHsgcmV0dXJuICJnbG9iYWwiOyB9
CiB9OwogQ09NUElMRV9BU1NFUlQoIUlzSW50ZWdlcjxHbG9iYWxPYmplY3Q+Ojp2YWx1ZSwgV1RG
X0lzSW50ZWdlcl9HbG9iYWxPYmplY3RfZmFsc2UpOwogQVNTRVJUX0NMQVNTX0ZJVFNfSU5fQ0VM
TChHbG9iYWxPYmplY3QpOwogCi1HbG9iYWxPYmplY3Q6Okdsb2JhbE9iamVjdChKU0dsb2JhbERh
dGEmIGdsb2JhbERhdGEsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBjb25zdCBWZWN0b3I8VVN0cmlu
Zz4mIGFyZ3VtZW50cykKK0dsb2JhbE9iamVjdDo6R2xvYmFsT2JqZWN0KEpTR2xvYmFsRGF0YSYg
Z2xvYmFsRGF0YSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAgICAgOiBKU0dsb2JhbE9iamVjdChn
bG9iYWxEYXRhLCBzdHJ1Y3R1cmUpCiB7Ci0gICAgcHV0RGlyZWN0RnVuY3Rpb24oZ2xvYmFsRXhl
YygpLCBKU0Z1bmN0aW9uOjpjcmVhdGUoZ2xvYmFsRXhlYygpLCB0aGlzLCBmdW5jdGlvblN0cnVj
dHVyZSgpLCAxLCBJZGVudGlmaWVyKGdsb2JhbEV4ZWMoKSwgImRlYnVnIiksIGZ1bmN0aW9uRGVi
dWcpKTsKLSAgICBwdXREaXJlY3RGdW5jdGlvbihnbG9iYWxFeGVjKCksIEpTRnVuY3Rpb246OmNy
ZWF0ZShnbG9iYWxFeGVjKCksIHRoaXMsIGZ1bmN0aW9uU3RydWN0dXJlKCksIDEsIElkZW50aWZp
ZXIoZ2xvYmFsRXhlYygpLCAicHJpbnQiKSwgZnVuY3Rpb25QcmludCkpOwotICAgIHB1dERpcmVj
dEZ1bmN0aW9uKGdsb2JhbEV4ZWMoKSwgSlNGdW5jdGlvbjo6Y3JlYXRlKGdsb2JhbEV4ZWMoKSwg
dGhpcywgZnVuY3Rpb25TdHJ1Y3R1cmUoKSwgMCwgSWRlbnRpZmllcihnbG9iYWxFeGVjKCksICJx
dWl0IiksIGZ1bmN0aW9uUXVpdCkpOwotICAgIHB1dERpcmVjdEZ1bmN0aW9uKGdsb2JhbEV4ZWMo
KSwgSlNGdW5jdGlvbjo6Y3JlYXRlKGdsb2JhbEV4ZWMoKSwgdGhpcywgZnVuY3Rpb25TdHJ1Y3R1
cmUoKSwgMCwgSWRlbnRpZmllcihnbG9iYWxFeGVjKCksICJnYyIpLCBmdW5jdGlvbkdDKSk7Ci0j
aWZuZGVmIE5ERUJVRwotICAgIHB1dERpcmVjdEZ1bmN0aW9uKGdsb2JhbEV4ZWMoKSwgSlNGdW5j
dGlvbjo6Y3JlYXRlKGdsb2JhbEV4ZWMoKSwgdGhpcywgZnVuY3Rpb25TdHJ1Y3R1cmUoKSwgMCwg
SWRlbnRpZmllcihnbG9iYWxFeGVjKCksICJyZWxlYXNlRXhlY3V0YWJsZU1lbW9yeSIpLCBmdW5j
dGlvblJlbGVhc2VFeGVjdXRhYmxlTWVtb3J5KSk7Ci0jZW5kaWYKLSAgICBwdXREaXJlY3RGdW5j
dGlvbihnbG9iYWxFeGVjKCksIEpTRnVuY3Rpb246OmNyZWF0ZShnbG9iYWxFeGVjKCksIHRoaXMs
IGZ1bmN0aW9uU3RydWN0dXJlKCksIDEsIElkZW50aWZpZXIoZ2xvYmFsRXhlYygpLCAidmVyc2lv
biIpLCBmdW5jdGlvblZlcnNpb24pKTsKLSAgICBwdXREaXJlY3RGdW5jdGlvbihnbG9iYWxFeGVj
KCksIEpTRnVuY3Rpb246OmNyZWF0ZShnbG9iYWxFeGVjKCksIHRoaXMsIGZ1bmN0aW9uU3RydWN0
dXJlKCksIDEsIElkZW50aWZpZXIoZ2xvYmFsRXhlYygpLCAicnVuIiksIGZ1bmN0aW9uUnVuKSk7
Ci0gICAgcHV0RGlyZWN0RnVuY3Rpb24oZ2xvYmFsRXhlYygpLCBKU0Z1bmN0aW9uOjpjcmVhdGUo
Z2xvYmFsRXhlYygpLCB0aGlzLCBmdW5jdGlvblN0cnVjdHVyZSgpLCAxLCBJZGVudGlmaWVyKGds
b2JhbEV4ZWMoKSwgImxvYWQiKSwgZnVuY3Rpb25Mb2FkKSk7Ci0gICAgcHV0RGlyZWN0RnVuY3Rp
b24oZ2xvYmFsRXhlYygpLCBKU0Z1bmN0aW9uOjpjcmVhdGUoZ2xvYmFsRXhlYygpLCB0aGlzLCBm
dW5jdGlvblN0cnVjdHVyZSgpLCAxLCBJZGVudGlmaWVyKGdsb2JhbEV4ZWMoKSwgImNoZWNrU3lu
dGF4IiksIGZ1bmN0aW9uQ2hlY2tTeW50YXgpKTsKLSAgICBwdXREaXJlY3RGdW5jdGlvbihnbG9i
YWxFeGVjKCksIEpTRnVuY3Rpb246OmNyZWF0ZShnbG9iYWxFeGVjKCksIHRoaXMsIGZ1bmN0aW9u
U3RydWN0dXJlKCksIDAsIElkZW50aWZpZXIoZ2xvYmFsRXhlYygpLCAicmVhZGxpbmUiKSwgZnVu
Y3Rpb25SZWFkbGluZSkpOwotICAgIHB1dERpcmVjdEZ1bmN0aW9uKGdsb2JhbEV4ZWMoKSwgSlNG
dW5jdGlvbjo6Y3JlYXRlKGdsb2JhbEV4ZWMoKSwgdGhpcywgZnVuY3Rpb25TdHJ1Y3R1cmUoKSwg
MCwgSWRlbnRpZmllcihnbG9iYWxFeGVjKCksICJwcmVjaXNlVGltZSIpLCBmdW5jdGlvblByZWNp
c2VUaW1lKSk7Ci0KLSNpZiBFTkFCTEUoU0FNUExJTkdfRkxBR1MpCi0gICAgcHV0RGlyZWN0RnVu
Y3Rpb24oZ2xvYmFsRXhlYygpLCBKU0Z1bmN0aW9uOjpjcmVhdGUoZ2xvYmFsRXhlYygpLCB0aGlz
LCBmdW5jdGlvblN0cnVjdHVyZSgpLCAxLCBJZGVudGlmaWVyKGdsb2JhbEV4ZWMoKSwgInNldFNh
bXBsaW5nRmxhZ3MiKSwgZnVuY3Rpb25TZXRTYW1wbGluZ0ZsYWdzKSk7Ci0gICAgcHV0RGlyZWN0
RnVuY3Rpb24oZ2xvYmFsRXhlYygpLCBKU0Z1bmN0aW9uOjpjcmVhdGUoZ2xvYmFsRXhlYygpLCB0
aGlzLCBmdW5jdGlvblN0cnVjdHVyZSgpLCAxLCBJZGVudGlmaWVyKGdsb2JhbEV4ZWMoKSwgImNs
ZWFyU2FtcGxpbmdGbGFncyIpLCBmdW5jdGlvbkNsZWFyU2FtcGxpbmdGbGFncykpOwotI2VuZGlm
Ci0KLSAgICBKU09iamVjdCogYXJyYXkgPSBjb25zdHJ1Y3RFbXB0eUFycmF5KGdsb2JhbEV4ZWMo
KSk7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBhcmd1bWVudHMuc2l6ZSgpOyArK2kpCi0g
ICAgICAgIGFycmF5LT5wdXQoZ2xvYmFsRXhlYygpLCBpLCBqc1N0cmluZyhnbG9iYWxFeGVjKCks
IGFyZ3VtZW50c1tpXSkpOwotICAgIHB1dERpcmVjdChnbG9iYWxFeGVjKCktPmdsb2JhbERhdGEo
KSwgSWRlbnRpZmllcihnbG9iYWxFeGVjKCksICJhcmd1bWVudHMiKSwgYXJyYXkpOwogfQogCiBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uUHJpbnQoRXhlY1N0YXRlKiBleGVj
KQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrRnVuY3Rpb24uY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja0Z1bmN0
aW9uLmNwcAkocmV2aXNpb24gOTIzOTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pT
Q2FsbGJhY2tGdW5jdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQyLDggKzQyLDggQEAgQVNT
RVJUX0NMQVNTX0ZJVFNfSU5fQ0VMTChKU0NhbGxiYWNrRnVuYwogCiBjb25zdCBDbGFzc0luZm8g
SlNDYWxsYmFja0Z1bmN0aW9uOjpzX2luZm8gPSB7ICJDYWxsYmFja0Z1bmN0aW9uIiwgJkludGVy
bmFsRnVuY3Rpb246OnNfaW5mbywgMCwgMCB9OwogCi1KU0NhbGxiYWNrRnVuY3Rpb246OkpTQ2Fs
bGJhY2tGdW5jdGlvbihFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIEpTT2JqZWN0Q2FsbEFzRnVuY3Rpb25DYWxsYmFjayBjYWxsYmFjaywgY29uc3QgSWRlbnRp
ZmllciYgbmFtZSkKLSAgICA6IEludGVybmFsRnVuY3Rpb24oJmV4ZWMtPmdsb2JhbERhdGEoKSwg
Z2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QtPmNhbGxiYWNrRnVuY3Rpb25TdHJ1Y3R1cmUoKSwg
bmFtZSkKK0pTQ2FsbGJhY2tGdW5jdGlvbjo6SlNDYWxsYmFja0Z1bmN0aW9uKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIEpTT2JqZWN0Q2FsbEFzRnVuY3Rpb25DYWxsYmFjayBjYWxsYmFj
aykKKyAgICA6IEludGVybmFsRnVuY3Rpb24oZ2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QtPmNh
bGxiYWNrRnVuY3Rpb25TdHJ1Y3R1cmUoKSkKICAgICAsIG1fY2FsbGJhY2soY2FsbGJhY2spCiB7
CiAgICAgQVNTRVJUKGluaGVyaXRzKCZzX2luZm8pKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9BUEkvSlNDYWxsYmFja0Z1bmN0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrRnVuY3Rpb24uaAkocmV2aXNpb24gOTIzOTMpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tGdW5jdGlvbi5oCSh3b3JraW5nIGNv
cHkpCkBAIC0zMywxMiArMzMsMTQgQEAgbmFtZXNwYWNlIEpTQyB7CiAKIGNsYXNzIEpTQ2FsbGJh
Y2tGdW5jdGlvbiA6IHB1YmxpYyBJbnRlcm5hbEZ1bmN0aW9uIHsKIHByb3RlY3RlZDoKLSAgICBK
U0NhbGxiYWNrRnVuY3Rpb24oRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqLCBKU09iamVjdENh
bGxBc0Z1bmN0aW9uQ2FsbGJhY2ssIGNvbnN0IElkZW50aWZpZXImIG5hbWUpOworICAgIEpTQ2Fs
bGJhY2tGdW5jdGlvbihKU0dsb2JhbE9iamVjdCosIEpTT2JqZWN0Q2FsbEFzRnVuY3Rpb25DYWxs
YmFjayk7CiAKIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDYWxsYmFja0Z1bmN0aW9uKiBjcmVhdGUo
RXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU09iamVjdENh
bGxBc0Z1bmN0aW9uQ2FsbGJhY2sgY2FsbGJhY2ssIGNvbnN0IElkZW50aWZpZXImIG5hbWUpCiAg
ICAgewotICAgICAgICByZXR1cm4gbmV3IChhbGxvY2F0ZUNlbGw8SlNDYWxsYmFja0Z1bmN0aW9u
PigqZXhlYy0+aGVhcCgpKSkgSlNDYWxsYmFja0Z1bmN0aW9uKGV4ZWMsIGdsb2JhbE9iamVjdCwg
Y2FsbGJhY2ssIG5hbWUpOworICAgICAgICBKU0NhbGxiYWNrRnVuY3Rpb24qIGNhbGxiYWNrRnVu
Y3Rpb24gPSBuZXcgKGFsbG9jYXRlQ2VsbDxKU0NhbGxiYWNrRnVuY3Rpb24+KCpleGVjLT5oZWFw
KCkpKSBKU0NhbGxiYWNrRnVuY3Rpb24oZ2xvYmFsT2JqZWN0LCBjYWxsYmFjayk7CisgICAgICAg
IGNhbGxiYWNrRnVuY3Rpb24tPmluaXRQcm9wZXJ0aWVzKGV4ZWMtPmdsb2JhbERhdGEoKSwgbmFt
ZSk7CisgICAgICAgIHJldHVybiBjYWxsYmFja0Z1bmN0aW9uOwogICAgIH0KIAogICAgIHN0YXRp
YyBjb25zdCBDbGFzc0luZm8gc19pbmZvOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5kZWYKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvai9K
YXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5kZWYJKHJldmlzaW9uIDkyMzkzKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9K
YXZhU2NyaXB0Q29yZS5kZWYJKHdvcmtpbmcgY29weSkKQEAgLTEwLDcgKzEwLDYgQEAgRVhQT1JU
UwogICAgID8/MEludGVybmFsRnVuY3Rpb25ASlNDQEBJQUVAUEFWSlNHbG9iYWxEYXRhQDFAUEFW
SlNHbG9iYWxPYmplY3RAMUBQQVZTdHJ1Y3R1cmVAMUBBQlZJZGVudGlmaWVyQDFAQFoKICAgICA/
PzBKU0FycmF5QEpTQ0BASUFFQEFBVkpTR2xvYmFsRGF0YUAxQFBBVlN0cnVjdHVyZUAxQEBaCiAg
ICAgPz8wSlNBcnJheUBKU0NAQElBRUBBQVZKU0dsb2JhbERhdGFAMUBQQVZTdHJ1Y3R1cmVAMUBB
QlZBcmdMaXN0QDFAQFoKLSAgICA/PzBKU0Z1bmN0aW9uQEpTQ0BAQUFFQFBBVkV4ZWNTdGF0ZUAx
QFBBVkpTR2xvYmFsT2JqZWN0QDFAUEFWU3RydWN0dXJlQDFASEFCVklkZW50aWZpZXJAMUBQNklf
SjBAWkBaCiAgICAgPz8wSlNMb2NrQEpTQ0BAUUFFQFBBVkV4ZWNTdGF0ZUAxQEBaCiAgICAgPz8w
SlNPYmplY3RXaXRoR2xvYmFsT2JqZWN0QEpTQ0BASUFFQEFBVkpTR2xvYmFsRGF0YUAxQFBBVkpT
R2xvYmFsT2JqZWN0QDFAUEFWU3RydWN0dXJlQDFAQFoKICAgICA/PzBKU09iamVjdFdpdGhHbG9i
YWxPYmplY3RASlNDQEBJQUVAUEFWSlNHbG9iYWxPYmplY3RAMUBQQVZTdHJ1Y3R1cmVAMUBAWgpA
QCAtMTksNyArMTgsNyBAQCBFWFBPUlRTCiAgICAgPz8wUmVmQ291bnRlZExlYWtDb3VudGVyQFdU
RkBAUUFFQFBCREBaCiAgICAgPz8wUmVnRXhwT2JqZWN0QEpTQ0BASUFFQFBBVkpTR2xvYmFsT2Jq
ZWN0QDFAUEFWU3RydWN0dXJlQDFAUEFWUmVnRXhwQDFAQFoKICAgICA/PzBTSEExQFdURkBAUUFF
QFhaCi0gICAgPz8wU3RyaW5nT2JqZWN0QEpTQ0BASUFFQFBBVkV4ZWNTdGF0ZUAxQFBBVlN0cnVj
dHVyZUAxQEFCVlVTdHJpbmdAMUBAWgorICAgID8/MFN0cmluZ09iamVjdEBKU0NAQElBRUBBQVZK
U0dsb2JhbERhdGFAMUBQQVZTdHJ1Y3R1cmVAMUBQQVZKU1N0cmluZ0AxQEBaCiAgICAgPz8wU3Ry
dWN0dXJlQEpTQ0BAQUFFQEFBVkpTR2xvYmFsRGF0YUAxQFZKU1ZhbHVlQDFAQUJWVHlwZUluZm9A
MUBJUEJVQ2xhc3NJbmZvQDFAQFoKICAgICA/PzBUaHJlYWRDb25kaXRpb25AV1RGQEBRQUVAWFoK
ICAgICA/PzBVU3RyaW5nQEpTQ0BAUUFFQFBCREBaCkBAIC05Niw2ICs5NSw3IEBAIEVYUE9SVFMK
ICAgICA/Y29udmVydFVURjhUb1VURjE2QFVuaWNvZGVAV1RGQEBZQT9BVzRDb252ZXJzaW9uUmVz
dWx0QDEyQFBBUEJEUEJEUEFQQV9XUEFfV19OQFoKICAgICA/Y3JlYXRlQEJ5dGVBcnJheUBXVEZA
QFNBP0FWPyRQYXNzUmVmUHRyQFZCeXRlQXJyYXlAV1RGQEBAMkBJQFoKICAgICA/Y3JlYXRlQEpT
Qnl0ZUFycmF5QEpTQ0BAU0FQQVYxMkBQQVZFeGVjU3RhdGVAMkBQQVZTdHJ1Y3R1cmVAMkBQQVZC
eXRlQXJyYXlAV1RGQEBAWgorICAgID9jcmVhdGVASlNGdW5jdGlvbkBKU0NAQFNBUEFWMTJAUEFW
RXhlY1N0YXRlQDJAUEFWSlNHbG9iYWxPYmplY3RAMkBQQVZTdHJ1Y3R1cmVAMkBIQUJWSWRlbnRp
ZmllckAyQFA2SV9KMEBaQFoKICAgICA/Y3JlYXRlQEpTR2xvYmFsRGF0YUBKU0NAQFNBP0FWPyRQ
YXNzUmVmUHRyQFZKU0dsb2JhbERhdGFASlNDQEBAV1RGQEBXNFRocmVhZFN0YWNrVHlwZUAyQFc0
SGVhcFNpemVAMkBAWgogICAgID9jcmVhdGVAT3BhcXVlSlNTdHJpbmdAQFNBP0FWPyRQYXNzUmVm
UHRyQFVPcGFxdWVKU1N0cmluZ0BAQFdURkBAQUJWVVN0cmluZ0BKU0NAQEBaCiAgICAgP2NyZWF0
ZUBSZWdFeHBASlNDQEBTQVBBVjEyQEFBVkpTR2xvYmFsRGF0YUAyQEFCVlVTdHJpbmdAMkBXNFJl
Z0V4cEZsYWdzQDJAQFoKQEAgLTIxNCw3ICsyMTQsNyBAQCBFWFBPUlRTCiAgICAgP2hlYXBASGVh
cEBKU0NAQFNBUEFWMTJAVkpTVmFsdWVAMkBAWgogICAgID9pbmNyZW1lbnRAUmVmQ291bnRlZExl
YWtDb3VudGVyQFdURkBAUUFFWFhaCiAgICAgP2luaXRAQXRvbWljU3RyaW5nQFdURkBAU0FYWFoK
LSAgICA/aW5pdEBKU0dsb2JhbE9iamVjdEBKU0NAQEFBRVhQQVZKU09iamVjdEAyQEBaCisgICAg
P2luaXRASlNHbG9iYWxPYmplY3RASlNDQEBJQUVYUEFWSlNPYmplY3RAMkBAWgogICAgID9pbml0
aWFsaXplTWFpblRocmVhZEBXVEZAQFlBWFhaCiAgICAgP2luaXRpYWxpemVUaHJlYWRpbmdASlND
QEBZQVhYWgogICAgID9pbml0aWFsaXplVGhyZWFkaW5nQFdURkBAWUFYWFoKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5Q29uc3RydWN0b3IuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5Q29uc3RydWN0b3IuY3BwCShy
ZXZpc2lvbiA5MjM5MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5Q29u
c3RydWN0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Miw3ICs1Miw3IEBAIGNvbnN0IENsYXNz
SW5mbyBBcnJheUNvbnN0cnVjdG9yOjpzX2luZm8KIEFTU0VSVF9DTEFTU19GSVRTX0lOX0NFTEwo
QXJyYXlDb25zdHJ1Y3Rvcik7CiAKIEFycmF5Q29uc3RydWN0b3I6OkFycmF5Q29uc3RydWN0b3Io
RXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSwgQXJyYXlQcm90b3R5cGUqIGFycmF5UHJvdG90eXBlKQotICAgIDogSW50ZXJu
YWxGdW5jdGlvbigmZXhlYy0+Z2xvYmFsRGF0YSgpLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwg
SWRlbnRpZmllcihleGVjLCBhcnJheVByb3RvdHlwZS0+Y2xhc3NJbmZvKCktPmNsYXNzTmFtZSkp
CisgICAgOiBJbnRlcm5hbEZ1bmN0aW9uKGdsb2JhbE9iamVjdCwgc3RydWN0dXJlKQogewogICAg
IHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+cHJv
cGVydHlOYW1lcygpLnByb3RvdHlwZSwgYXJyYXlQcm90b3R5cGUsIERvbnRFbnVtIHwgRG9udERl
bGV0ZSB8IFJlYWRPbmx5KTsKICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbihleGVjLT5n
bG9iYWxEYXRhKCksIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5sZW5ndGgsIGpzTnVtYmVyKDEpLCBS
ZWFkT25seSB8IERvbnRFbnVtIHwgRG9udERlbGV0ZSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9BcnJheUNvbnN0cnVjdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlDb25zdHJ1Y3Rvci5oCShyZXZpc2lvbiA5MjM5MykK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5Q29uc3RydWN0b3IuaAkod29y
a2luZyBjb3B5KQpAQCAtMjEsMjAgKzIxLDIxIEBACiAjaWZuZGVmIEFycmF5Q29uc3RydWN0b3Jf
aAogI2RlZmluZSBBcnJheUNvbnN0cnVjdG9yX2gKIAorI2luY2x1ZGUgIkFycmF5UHJvdG90eXBl
LmgiCiAjaW5jbHVkZSAiSW50ZXJuYWxGdW5jdGlvbi5oIgogCiBuYW1lc3BhY2UgSlNDIHsKIAot
ICAgIGNsYXNzIEFycmF5UHJvdG90eXBlOwotCiAgICAgY2xhc3MgQXJyYXlDb25zdHJ1Y3RvciA6
IHB1YmxpYyBJbnRlcm5hbEZ1bmN0aW9uIHsKICAgICBwcml2YXRlOgogICAgICAgICBBcnJheUNv
bnN0cnVjdG9yKEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgQXJyYXlQ
cm90b3R5cGUqKTsKICAgICAgICAgCiAgICAgcHVibGljOgotICAgICAgICBzdGF0aWMgQXJyYXlD
b25zdHJ1Y3RvciogY3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEFycmF5UHJvdG90eXBlKiBhcnJQcm90b3R5
cGUpCisgICAgICAgIHN0YXRpYyBBcnJheUNvbnN0cnVjdG9yKiBjcmVhdGUoRXhlY1N0YXRlKiBl
eGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwg
QXJyYXlQcm90b3R5cGUqIGFycmF5UHJvdG90eXBlKQogICAgICAgICB7Ci0gICAgICAgICAgICBy
ZXR1cm4gbmV3IChhbGxvY2F0ZUNlbGw8QXJyYXlDb25zdHJ1Y3Rvcj4oKmV4ZWMtPmhlYXAoKSkp
IEFycmF5Q29uc3RydWN0b3IoZXhlYywgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIGFyclByb3Rv
dHlwZSk7CisgICAgICAgICAgICBBcnJheUNvbnN0cnVjdG9yKiBjb25zdHJ1Y3RvciA9IG5ldyAo
YWxsb2NhdGVDZWxsPEFycmF5Q29uc3RydWN0b3I+KCpleGVjLT5oZWFwKCkpKSBBcnJheUNvbnN0
cnVjdG9yKGV4ZWMsIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBhcnJheVByb3RvdHlwZSk7Cisg
ICAgICAgICAgICBjb25zdHJ1Y3Rvci0+aW5pdFByb3BlcnRpZXMoZXhlYy0+Z2xvYmFsRGF0YSgp
LCBJZGVudGlmaWVyKGV4ZWMsIGFycmF5UHJvdG90eXBlLT5jbGFzc0luZm8oKS0+Y2xhc3NOYW1l
KSk7CisgICAgICAgICAgICByZXR1cm4gY29uc3RydWN0b3I7CiAgICAgICAgIH0KIAogICAgICAg
ICBzdGF0aWMgY29uc3QgQ2xhc3NJbmZvIHNfaW5mbzsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0Jvb2xlYW5Db25zdHJ1Y3Rvci5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQm9vbGVhbkNvbnN0cnVjdG9yLmNwcAkocmV2aXNpb24g
OTIzOTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Cb29sZWFuQ29uc3RydWN0
b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw3ICsyOSw3IEBAIG5hbWVzcGFjZSBKU0Mgewog
QVNTRVJUX0NMQVNTX0ZJVFNfSU5fQ0VMTChCb29sZWFuQ29uc3RydWN0b3IpOwogCiBCb29sZWFu
Q29uc3RydWN0b3I6OkJvb2xlYW5Db25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBCb29sZWFuUHJvdG90
eXBlKiBib29sZWFuUHJvdG90eXBlKQotICAgIDogSW50ZXJuYWxGdW5jdGlvbigmZXhlYy0+Z2xv
YmFsRGF0YSgpLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgSWRlbnRpZmllcihleGVjLCBib29s
ZWFuUHJvdG90eXBlLT5jbGFzc0luZm8oKS0+Y2xhc3NOYW1lKSkKKyAgICA6IEludGVybmFsRnVu
Y3Rpb24oZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUpCiB7CiAgICAgcHV0RGlyZWN0V2l0aG91dFRy
YW5zaXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkucHJvdG90
eXBlLCBib29sZWFuUHJvdG90eXBlLCBEb250RW51bSB8IERvbnREZWxldGUgfCBSZWFkT25seSk7
CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Jvb2xlYW5Db25zdHJ1Y3Rv
ci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Jvb2xlYW5D
b25zdHJ1Y3Rvci5oCShyZXZpc2lvbiA5MjM5MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0Jvb2xlYW5Db25zdHJ1Y3Rvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMSwyMCArMjEs
MjEgQEAKICNpZm5kZWYgQm9vbGVhbkNvbnN0cnVjdG9yX2gKICNkZWZpbmUgQm9vbGVhbkNvbnN0
cnVjdG9yX2gKIAorI2luY2x1ZGUgIkJvb2xlYW5Qcm90b3R5cGUuaCIKICNpbmNsdWRlICJJbnRl
cm5hbEZ1bmN0aW9uLmgiCiAKIG5hbWVzcGFjZSBKU0MgewogCi0gICAgY2xhc3MgQm9vbGVhblBy
b3RvdHlwZTsKLQogICAgIGNsYXNzIEJvb2xlYW5Db25zdHJ1Y3RvciA6IHB1YmxpYyBJbnRlcm5h
bEZ1bmN0aW9uIHsKICAgICBwcml2YXRlOgogICAgICAgICBCb29sZWFuQ29uc3RydWN0b3IoRXhl
Y1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBCb29sZWFuUHJvdG90eXBlKik7
CiAgICAgICAgIAogICAgIHB1YmxpYzoKLSAgICAgICAgc3RhdGljIEJvb2xlYW5Db25zdHJ1Y3Rv
ciogY3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEJvb2xlYW5Qcm90b3R5cGUqIGJvb2xQcm90b3R5cGUpCisg
ICAgICAgIHN0YXRpYyBCb29sZWFuQ29uc3RydWN0b3IqIGNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMs
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBCb29s
ZWFuUHJvdG90eXBlKiBib29sZWFuUHJvdG90eXBlKQogICAgICAgICB7Ci0gICAgICAgICAgICBy
ZXR1cm4gbmV3IChhbGxvY2F0ZUNlbGw8Qm9vbGVhbkNvbnN0cnVjdG9yPigqZXhlYy0+aGVhcCgp
KSkgQm9vbGVhbkNvbnN0cnVjdG9yKGV4ZWMsIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBib29s
UHJvdG90eXBlKTsKKyAgICAgICAgICAgIEJvb2xlYW5Db25zdHJ1Y3RvciogY29uc3RydWN0b3Ig
PSBuZXcgKGFsbG9jYXRlQ2VsbDxCb29sZWFuQ29uc3RydWN0b3I+KCpleGVjLT5oZWFwKCkpKSBC
b29sZWFuQ29uc3RydWN0b3IoZXhlYywgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIGJvb2xlYW5Q
cm90b3R5cGUpOworICAgICAgICAgICAgY29uc3RydWN0b3ItPmluaXRQcm9wZXJ0aWVzKGV4ZWMt
Pmdsb2JhbERhdGEoKSwgSWRlbnRpZmllcihleGVjLCBib29sZWFuUHJvdG90eXBlLT5jbGFzc0lu
Zm8oKS0+Y2xhc3NOYW1lKSk7CisgICAgICAgICAgICByZXR1cm4gY29uc3RydWN0b3I7CiAgICAg
ICAgIH0KIAogICAgIHByaXZhdGU6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9EYXRlQ29uc3RydWN0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0RhdGVDb25zdHJ1Y3Rvci5jcHAJKHJldmlzaW9uIDkyMzkzKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZUNvbnN0cnVjdG9yLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNzQsNyArNzQsNyBAQCBjb25zdCBDbGFzc0luZm8gRGF0ZUNvbnN0cnVjdG9yOjpzX2lu
Zm8gCiBBU1NFUlRfQ0xBU1NfRklUU19JTl9DRUxMKERhdGVDb25zdHJ1Y3Rvcik7CiAKIERhdGVD
b25zdHJ1Y3Rvcjo6RGF0ZUNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIERhdGVQcm90b3R5cGUqIGRh
dGVQcm90b3R5cGUpCi0gICAgOiBJbnRlcm5hbEZ1bmN0aW9uKCZleGVjLT5nbG9iYWxEYXRhKCks
IGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBJZGVudGlmaWVyKGV4ZWMsIGRhdGVQcm90b3R5cGUt
PmNsYXNzSW5mbygpLT5jbGFzc05hbWUpKQorICAgIDogSW50ZXJuYWxGdW5jdGlvbihnbG9iYWxP
YmplY3QsIHN0cnVjdHVyZSkKIHsKICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbihleGVj
LT5nbG9iYWxEYXRhKCksIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5wcm90b3R5cGUsIGRhdGVQcm90
b3R5cGUsIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KTsKICAgICBwdXREaXJlY3RX
aXRob3V0VHJhbnNpdGlvbihleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPnByb3BlcnR5TmFtZXMo
KS5sZW5ndGgsIGpzTnVtYmVyKDcpLCBSZWFkT25seSB8IERvbnRFbnVtIHwgRG9udERlbGV0ZSk7
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlQ29uc3RydWN0b3IuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlQ29uc3RydWN0
b3IuaAkocmV2aXNpb24gOTIzOTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9E
YXRlQ29uc3RydWN0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtMjEsMTIgKzIxLDExIEBACiAjaWZu
ZGVmIERhdGVDb25zdHJ1Y3Rvcl9oCiAjZGVmaW5lIERhdGVDb25zdHJ1Y3Rvcl9oCiAKKyNpbmNs
dWRlICJEYXRlUHJvdG90eXBlLmgiCiAjaW5jbHVkZSAiSW50ZXJuYWxGdW5jdGlvbi5oIgogCiBu
YW1lc3BhY2UgSlNDIHsKIAotICAgIGNsYXNzIERhdGVQcm90b3R5cGU7Ci0KICAgICBjbGFzcyBE
YXRlQ29uc3RydWN0b3IgOiBwdWJsaWMgSW50ZXJuYWxGdW5jdGlvbiB7CiAgICAgcHJpdmF0ZToK
ICAgICAgICAgRGF0ZUNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KiwgU3Ry
dWN0dXJlKiwgRGF0ZVByb3RvdHlwZSopOwpAQCAtMzQsNyArMzMsOSBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICBwdWJsaWM6CiAgICAgICAgIHN0YXRpYyBEYXRlQ29uc3RydWN0b3IqIGNyZWF0ZShF
eGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSog
c3RydWN0dXJlLCBEYXRlUHJvdG90eXBlKiBkYXRlUHJvdG90eXBlKQogICAgICAgICB7Ci0gICAg
ICAgICAgICByZXR1cm4gbmV3IChhbGxvY2F0ZUNlbGw8RGF0ZUNvbnN0cnVjdG9yPigqZXhlYy0+
aGVhcCgpKSkgRGF0ZUNvbnN0cnVjdG9yKGV4ZWMsIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBk
YXRlUHJvdG90eXBlKTsKKyAgICAgICAgICAgIERhdGVDb25zdHJ1Y3RvciogY29uc3RydWN0b3Ig
PSBuZXcgKGFsbG9jYXRlQ2VsbDxEYXRlQ29uc3RydWN0b3I+KCpleGVjLT5oZWFwKCkpKSBEYXRl
Q29uc3RydWN0b3IoZXhlYywgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIGRhdGVQcm90b3R5cGUp
OworICAgICAgICAgICAgY29uc3RydWN0b3ItPmluaXRQcm9wZXJ0aWVzKGV4ZWMtPmdsb2JhbERh
dGEoKSwgSWRlbnRpZmllcihleGVjLCBkYXRlUHJvdG90eXBlLT5jbGFzc0luZm8oKS0+Y2xhc3NO
YW1lKSk7CisgICAgICAgICAgICByZXR1cm4gY29uc3RydWN0b3I7CiAgICAgICAgIH0KIAogICAg
ICAgICBzdGF0aWMgY29uc3QgQ2xhc3NJbmZvIHNfaW5mbzsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0Vycm9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9FcnJvci5jcHAJKHJldmlzaW9uIDkyMzkzKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvRXJyb3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNjcsOCArMTY3
LDggQEAgSlNPYmplY3QqIHRocm93U3ludGF4RXJyb3IoRXhlY1N0YXRlKiBleAogCiBjbGFzcyBT
dHJpY3RNb2RlVHlwZUVycm9yRnVuY3Rpb24gOiBwdWJsaWMgSW50ZXJuYWxGdW5jdGlvbiB7CiBw
cml2YXRlOgotICAgIFN0cmljdE1vZGVUeXBlRXJyb3JGdW5jdGlvbihFeGVjU3RhdGUqIGV4ZWMs
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBjb25z
dCBVU3RyaW5nJiBtZXNzYWdlKQotICAgICAgICA6IEludGVybmFsRnVuY3Rpb24oJmV4ZWMtPmds
b2JhbERhdGEoKSwgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIGV4ZWMtPmdsb2JhbERhdGEoKS5w
cm9wZXJ0eU5hbWVzLT5lbXB0eUlkZW50aWZpZXIpCisgICAgU3RyaWN0TW9kZVR5cGVFcnJvckZ1
bmN0aW9uKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJl
LCBjb25zdCBVU3RyaW5nJiBtZXNzYWdlKQorICAgICAgICA6IEludGVybmFsRnVuY3Rpb24oZ2xv
YmFsT2JqZWN0LCBzdHJ1Y3R1cmUpCiAgICAgICAgICwgbV9tZXNzYWdlKG1lc3NhZ2UpCiAgICAg
ewogICAgIH0KQEAgLTE3Niw3ICsxNzYsOSBAQCBwcml2YXRlOgogcHVibGljOgogICAgIHN0YXRp
YyBTdHJpY3RNb2RlVHlwZUVycm9yRnVuY3Rpb24qIGNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBjb25zdCBV
U3RyaW5nJiBtZXNzYWdlKQogICAgIHsKLSAgICAgICAgcmV0dXJuIG5ldyAoYWxsb2NhdGVDZWxs
PFN0cmljdE1vZGVUeXBlRXJyb3JGdW5jdGlvbj4oKmV4ZWMtPmhlYXAoKSkpIFN0cmljdE1vZGVU
eXBlRXJyb3JGdW5jdGlvbihleGVjLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgbWVzc2FnZSk7
CisgICAgICAgIFN0cmljdE1vZGVUeXBlRXJyb3JGdW5jdGlvbiogZnVuY3Rpb24gPSBuZXcgKGFs
bG9jYXRlQ2VsbDxTdHJpY3RNb2RlVHlwZUVycm9yRnVuY3Rpb24+KCpleGVjLT5oZWFwKCkpKSBT
dHJpY3RNb2RlVHlwZUVycm9yRnVuY3Rpb24oZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIG1lc3Nh
Z2UpOworICAgICAgICBmdW5jdGlvbi0+aW5pdFByb3BlcnRpZXMoZXhlYy0+Z2xvYmFsRGF0YSgp
LCBleGVjLT5nbG9iYWxEYXRhKCkucHJvcGVydHlOYW1lcy0+ZW1wdHlJZGVudGlmaWVyKTsKKyAg
ICAgICAgcmV0dXJuIGZ1bmN0aW9uOwogICAgIH0KICAgICAKICAgICBzdGF0aWMgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RUaHJvd1R5cGVFcnJvcihFeGVjU3RhdGUqIGV4
ZWMpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvckNvbnN0cnVjdG9y
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvckNv
bnN0cnVjdG9yLmNwcAkocmV2aXNpb24gOTIzOTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9FcnJvckNvbnN0cnVjdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAsNyArMzAs
NyBAQCBuYW1lc3BhY2UgSlNDIHsKIEFTU0VSVF9DTEFTU19GSVRTX0lOX0NFTEwoRXJyb3JDb25z
dHJ1Y3Rvcik7CiAKIEVycm9yQ29uc3RydWN0b3I6OkVycm9yQ29uc3RydWN0b3IoRXhlY1N0YXRl
KiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSwgRXJyb3JQcm90b3R5cGUqIGVycm9yUHJvdG90eXBlKQotICAgIDogSW50ZXJuYWxGdW5jdGlv
bigmZXhlYy0+Z2xvYmFsRGF0YSgpLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgSWRlbnRpZmll
cihleGVjLCBlcnJvclByb3RvdHlwZS0+Y2xhc3NJbmZvKCktPmNsYXNzTmFtZSkpCisgICAgOiBJ
bnRlcm5hbEZ1bmN0aW9uKGdsb2JhbE9iamVjdCwgc3RydWN0dXJlKQogewogICAgIC8vIEVDTUEg
MTUuMTEuMy4xIEVycm9yLnByb3RvdHlwZQogICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9u
KGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLnByb3RvdHlwZSwgZXJy
b3JQcm90b3R5cGUsIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KTsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yQ29uc3RydWN0b3IuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvckNvbnN0cnVjdG9yLmgJKHJl
dmlzaW9uIDkyMzkzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JDb25z
dHJ1Y3Rvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMiw2ICsyMiw3IEBACiAjZGVmaW5lIEVycm9y
Q29uc3RydWN0b3JfaAogCiAjaW5jbHVkZSAiRXJyb3JJbnN0YW5jZS5oIgorI2luY2x1ZGUgIkVy
cm9yUHJvdG90eXBlLmgiCiAjaW5jbHVkZSAiSW50ZXJuYWxGdW5jdGlvbi5oIgogCiBuYW1lc3Bh
Y2UgSlNDIHsKQEAgLTMzLDkgKzM0LDExIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBFcnJv
ckNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgRXJy
b3JQcm90b3R5cGUqKTsKIAogICAgIHB1YmxpYzoKLSAgICAgICAgc3RhdGljIEVycm9yQ29uc3Ry
dWN0b3IqIGNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBFcnJvclByb3RvdHlwZSogZXJyUHJvdG90eXBlKQor
ICAgICAgICBzdGF0aWMgRXJyb3JDb25zdHJ1Y3RvciogY3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywg
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEVycm9y
UHJvdG90eXBlKiBlcnJvclByb3RvdHlwZSkKICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJu
IG5ldyAoYWxsb2NhdGVDZWxsPEVycm9yQ29uc3RydWN0b3I+KCpleGVjLT5oZWFwKCkpKSBFcnJv
ckNvbnN0cnVjdG9yKGV4ZWMsIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBlcnJQcm90b3R5cGUp
OworICAgICAgICAgICAgRXJyb3JDb25zdHJ1Y3RvciogY29uc3RydWN0b3IgPSBuZXcgKGFsbG9j
YXRlQ2VsbDxFcnJvckNvbnN0cnVjdG9yPigqZXhlYy0+aGVhcCgpKSkgRXJyb3JDb25zdHJ1Y3Rv
cihleGVjLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgZXJyb3JQcm90b3R5cGUpOworICAgICAg
ICAgICAgY29uc3RydWN0b3ItPmluaXRQcm9wZXJ0aWVzKGV4ZWMtPmdsb2JhbERhdGEoKSwgSWRl
bnRpZmllcihleGVjLCBlcnJvclByb3RvdHlwZS0+Y2xhc3NJbmZvKCktPmNsYXNzTmFtZSkpOwor
ICAgICAgICAgICAgcmV0dXJuIGNvbnN0cnVjdG9yOwogICAgICAgICB9CiAgICAgICAgIAogICAg
IHByaXZhdGU6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvckluc3Rh
bmNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJv
ckluc3RhbmNlLmNwcAkocmV2aXNpb24gOTIzOTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9FcnJvckluc3RhbmNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAsMjcgKzMwLDI4
IEBAIEVycm9ySW5zdGFuY2U6OkVycm9ySW5zdGFuY2UoSlNHbG9iYWxEYXQKICAgICAsIG1fYXBw
ZW5kU291cmNlVG9NZXNzYWdlKGZhbHNlKQogewogICAgIEFTU0VSVChpbmhlcml0cygmc19pbmZv
KSk7Ci0gICAgcHV0RGlyZWN0KGdsb2JhbERhdGEsIGdsb2JhbERhdGEucHJvcGVydHlOYW1lcy0+
bWVzc2FnZSwganNTdHJpbmcoJmdsb2JhbERhdGEsICIiKSwgRG9udEVudW0pOwotfQotCi1FcnJv
ckluc3RhbmNlOjpFcnJvckluc3RhbmNlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgU3RydWN0
dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IFVTdHJpbmcmIG1lc3NhZ2UpCi0gICAgOiBKU05vbkZpbmFs
T2JqZWN0KGdsb2JhbERhdGEsIHN0cnVjdHVyZSkKLSAgICAsIG1fYXBwZW5kU291cmNlVG9NZXNz
YWdlKGZhbHNlKQotewotICAgIEFTU0VSVChpbmhlcml0cygmc19pbmZvKSk7Ci0gICAgcHV0RGly
ZWN0KGdsb2JhbERhdGEsIGdsb2JhbERhdGEucHJvcGVydHlOYW1lcy0+bWVzc2FnZSwganNTdHJp
bmcoJmdsb2JhbERhdGEsIG1lc3NhZ2UpLCBEb250RW51bSk7CiB9CiAKIEVycm9ySW5zdGFuY2Uq
IEVycm9ySW5zdGFuY2U6OmNyZWF0ZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFN0cnVjdHVy
ZSogc3RydWN0dXJlLCBjb25zdCBVU3RyaW5nJiBtZXNzYWdlKQogewotICAgIHJldHVybiBuZXcg
KGFsbG9jYXRlQ2VsbDxFcnJvckluc3RhbmNlPihnbG9iYWxEYXRhLmhlYXApKSBFcnJvckluc3Rh
bmNlKGdsb2JhbERhdGEsIHN0cnVjdHVyZSwgbWVzc2FnZSk7CisgICAgRXJyb3JJbnN0YW5jZSog
ZXJyb3JJbnN0YW5jZSA9IG5ldyAoYWxsb2NhdGVDZWxsPEVycm9ySW5zdGFuY2U+KGdsb2JhbERh
dGEuaGVhcCkpIEVycm9ySW5zdGFuY2UoZ2xvYmFsRGF0YSwgc3RydWN0dXJlKTsKKyAgICBlcnJv
ckluc3RhbmNlLT5wdXREaXJlY3QoZ2xvYmFsRGF0YSwgZ2xvYmFsRGF0YS5wcm9wZXJ0eU5hbWVz
LT5tZXNzYWdlLCBqc1N0cmluZygmZ2xvYmFsRGF0YSwgbWVzc2FnZSksIERvbnRFbnVtKTsKKyAg
ICByZXR1cm4gZXJyb3JJbnN0YW5jZTsKIH0KIAogRXJyb3JJbnN0YW5jZSogRXJyb3JJbnN0YW5j
ZTo6Y3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTVmFsdWUg
bWVzc2FnZSkKIHsKLSAgICBpZiAobWVzc2FnZS5pc1VuZGVmaW5lZCgpKQotICAgICAgICByZXR1
cm4gbmV3IChhbGxvY2F0ZUNlbGw8RXJyb3JJbnN0YW5jZT4oKmV4ZWMtPmhlYXAoKSkpIEVycm9y
SW5zdGFuY2UoZXhlYy0+Z2xvYmFsRGF0YSgpLCBzdHJ1Y3R1cmUpOwotICAgIHJldHVybiBuZXcg
KGFsbG9jYXRlQ2VsbDxFcnJvckluc3RhbmNlPigqZXhlYy0+aGVhcCgpKSkgRXJyb3JJbnN0YW5j
ZShleGVjLT5nbG9iYWxEYXRhKCksIHN0cnVjdHVyZSwgbWVzc2FnZS50b1N0cmluZyhleGVjKSk7
CisgICAgRXJyb3JJbnN0YW5jZSogZXJyb3JJbnN0YW5jZTsKKyAgICBKU1N0cmluZyogc3RyaW5n
OworICAgIGlmIChtZXNzYWdlLmlzVW5kZWZpbmVkKCkpIHsKKyAgICAgICAgZXJyb3JJbnN0YW5j
ZSA9IG5ldyAoYWxsb2NhdGVDZWxsPEVycm9ySW5zdGFuY2U+KCpleGVjLT5oZWFwKCkpKSBFcnJv
ckluc3RhbmNlKGV4ZWMtPmdsb2JhbERhdGEoKSwgc3RydWN0dXJlKTsKKyAgICAgICAgc3RyaW5n
ID0ganNTdHJpbmcoJmV4ZWMtPmdsb2JhbERhdGEoKSwgIiIpOworICAgIH0gZWxzZSB7CisgICAg
ICAgIGVycm9ySW5zdGFuY2UgPSBuZXcgKGFsbG9jYXRlQ2VsbDxFcnJvckluc3RhbmNlPigqZXhl
Yy0+aGVhcCgpKSkgRXJyb3JJbnN0YW5jZShleGVjLT5nbG9iYWxEYXRhKCksIHN0cnVjdHVyZSk7
CisgICAgICAgIHN0cmluZyA9IGpzU3RyaW5nKCZleGVjLT5nbG9iYWxEYXRhKCksIG1lc3NhZ2Uu
dG9TdHJpbmcoZXhlYykpOworICAgIH0KKyAgICBlcnJvckluc3RhbmNlLT5wdXREaXJlY3QoZXhl
Yy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5nbG9iYWxEYXRhKCkucHJvcGVydHlOYW1lcy0+bWVzc2Fn
ZSwgc3RyaW5nLCBEb250RW51bSk7CisgICAgcmV0dXJuIGVycm9ySW5zdGFuY2U7CiB9CiAKIH0g
Ly8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJy
b3JJbnN0YW5jZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0Vycm9ySW5zdGFuY2UuaAkocmV2aXNpb24gOTIzOTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9FcnJvckluc3RhbmNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDggKzQ1LDcg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc0Vycm9ySW5zdGFuY2Uo
KSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAKICAgICBwcm90ZWN0ZWQ6Ci0gICAgICAgIGV4cGxp
Y2l0IEVycm9ySW5zdGFuY2UoSlNHbG9iYWxEYXRhJiwgU3RydWN0dXJlKik7Ci0gICAgICAgIGV4
cGxpY2l0IEVycm9ySW5zdGFuY2UoSlNHbG9iYWxEYXRhJiwgU3RydWN0dXJlKiwgY29uc3QgVVN0
cmluZyYpOworICAgICAgICBFcnJvckluc3RhbmNlKEpTR2xvYmFsRGF0YSYsIFN0cnVjdHVyZSop
OwogCiAgICAgICAgIGJvb2wgbV9hcHBlbmRTb3VyY2VUb01lc3NhZ2U7CiAgICAgfTsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yUHJvdG90eXBlLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvclByb3RvdHlwZS5jcHAJ
KHJldmlzaW9uIDkyMzkzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JQ
cm90b3R5cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Myw4ICs1Myw2IEBAIEFTU0VSVF9DTEFT
U19GSVRTX0lOX0NFTEwoRXJyb3JQcm90b3R5cGUKIEVycm9yUHJvdG90eXBlOjpFcnJvclByb3Rv
dHlwZShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVj
dHVyZSogc3RydWN0dXJlKQogICAgIDogRXJyb3JJbnN0YW5jZShleGVjLT5nbG9iYWxEYXRhKCks
IHN0cnVjdHVyZSkKIHsKLSAgICBwdXREaXJlY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5w
cm9wZXJ0eU5hbWVzKCkubmFtZSwganNOb250cml2aWFsU3RyaW5nKGV4ZWMsICJFcnJvciIpLCBE
b250RW51bSk7Ci0KICAgICBBU1NFUlQoaW5oZXJpdHMoJnNfaW5mbykpOwogICAgIHB1dEFub255
bW91c1ZhbHVlKGdsb2JhbE9iamVjdC0+Z2xvYmFsRGF0YSgpLCAwLCBnbG9iYWxPYmplY3QpOwog
fQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JQcm90b3R5cGUuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvclByb3RvdHlw
ZS5oCShyZXZpc2lvbiA5MjM5MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vy
cm9yUHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM0LDcgKzM0LDkgQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgcHVibGljOgogICAgICAgICBzdGF0aWMgRXJyb3JQcm90b3R5cGUqIGNyZWF0
ZShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVy
ZSogc3RydWN0dXJlKQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gbmV3IChhbGxvY2F0
ZUNlbGw8RXJyb3JQcm90b3R5cGU+KCpleGVjLT5oZWFwKCkpKSBFcnJvclByb3RvdHlwZShleGVj
LCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSk7CisgICAgICAgICAgICBFcnJvclByb3RvdHlwZSog
ZXJyb3JQcm90b3R5cGUgPSBuZXcgKGFsbG9jYXRlQ2VsbDxFcnJvclByb3RvdHlwZT4oKmV4ZWMt
PmhlYXAoKSkpIEVycm9yUHJvdG90eXBlKGV4ZWMsIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlKTsK
KyAgICAgICAgICAgIGVycm9yUHJvdG90eXBlLT5wdXREaXJlY3QoZXhlYy0+Z2xvYmFsRGF0YSgp
LCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkubmFtZSwganNOb250cml2aWFsU3RyaW5nKGV4ZWMsICJF
cnJvciIpLCBEb250RW51bSk7CisgICAgICAgICAgICByZXR1cm4gZXJyb3JQcm90b3R5cGU7CiAg
ICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIHN0YXRpYyBjb25zdCBDbGFzc0luZm8gc19pbmZv
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5jcHAJ
KHJldmlzaW9uIDkyMzkzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0
YWJsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0NCw3ICsxNDQsNiBAQCBGdW5jdGlvbkV4ZWN1
dGFibGU6OkZ1bmN0aW9uRXhlY3V0YWJsZShKCiB7CiAgICAgbV9maXJzdExpbmUgPSBmaXJzdExp
bmU7CiAgICAgbV9sYXN0TGluZSA9IGxhc3RMaW5lOwotICAgIG1fbmFtZVZhbHVlLnNldChnbG9i
YWxEYXRhLCB0aGlzLCBqc1N0cmluZygmZ2xvYmFsRGF0YSwgbmFtZS51c3RyaW5nKCkpKTsKIH0K
IAogRnVuY3Rpb25FeGVjdXRhYmxlOjpGdW5jdGlvbkV4ZWN1dGFibGUoRXhlY1N0YXRlKiBleGVj
LCBjb25zdCBJZGVudGlmaWVyJiBuYW1lLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIGJvb2wg
Zm9yY2VVc2VzQXJndW1lbnRzLCBGdW5jdGlvblBhcmFtZXRlcnMqIHBhcmFtZXRlcnMsIGJvb2wg
aW5TdHJpY3RDb250ZXh0LCBpbnQgZmlyc3RMaW5lLCBpbnQgbGFzdExpbmUpCkBAIC0xNTcsNyAr
MTU2LDYgQEAgRnVuY3Rpb25FeGVjdXRhYmxlOjpGdW5jdGlvbkV4ZWN1dGFibGUoRQogewogICAg
IG1fZmlyc3RMaW5lID0gZmlyc3RMaW5lOwogICAgIG1fbGFzdExpbmUgPSBsYXN0TGluZTsKLSAg
ICBtX25hbWVWYWx1ZS5zZXQoZXhlYy0+Z2xvYmFsRGF0YSgpLCB0aGlzLCBqc1N0cmluZygmZXhl
Yy0+Z2xvYmFsRGF0YSgpLCBuYW1lLnVzdHJpbmcoKSkpOwogfQogCiAKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmgJKHJldmlzaW9uIDkyMzkzKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xNzgsNyArMTc4LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAjZWxzZQogICAgICAgICBzdGF0
aWMgTmF0aXZlRXhlY3V0YWJsZSogY3JlYXRlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgTmF0
aXZlRnVuY3Rpb24gZnVuY3Rpb24sIE5hdGl2ZUZ1bmN0aW9uIGNvbnN0cnVjdG9yKQogICAgICAg
ICB7Ci0gICAgICAgICAgICByZXR1cm4gbmV3IChhbGxvY2F0ZUNlbGw8TmF0aXZlRXhlY3V0YWJs
ZT4oZ2xvYmFsRGF0YS5oZWFwKSkgTmF0aXZlRXhlY3V0YWJsZShnbG9iYWxEYXRhLCBmdW5jdGlv
biwgY29uc3RydWN0b3IpOworICAgICAgICAgICAgcmV0dXJuIG5ldyAoYWxsb2NhdGVDZWxsPE5h
dGl2ZUV4ZWN1dGFibGU+KGdsb2JhbERhdGEuaGVhcCkpIE5hdGl2ZUV4ZWN1dGFibGUoZ2xvYmFs
RGF0YSwgZnVuY3Rpb24sIGNvbnN0cnVjdG9yKSk7CiAgICAgICAgIH0KICNlbmRpZgogCkBAIC0y
OTgsNyArMjk4LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgc3RhdGljIEV2YWxFeGVj
dXRhYmxlKiBjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2Us
IGJvb2wgaXNJblN0cmljdENvbnRleHQpIAogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4g
bmV3IChhbGxvY2F0ZUNlbGw8RXZhbEV4ZWN1dGFibGU+KCpleGVjLT5oZWFwKCkpKSBFdmFsRXhl
Y3V0YWJsZShleGVjLCBzb3VyY2UsIGlzSW5TdHJpY3RDb250ZXh0KTsgCisgICAgICAgICAgICBy
ZXR1cm4gbmV3IChhbGxvY2F0ZUNlbGw8RXZhbEV4ZWN1dGFibGU+KCpleGVjLT5oZWFwKCkpKSBF
dmFsRXhlY3V0YWJsZShleGVjLCBzb3VyY2UsIGlzSW5TdHJpY3RDb250ZXh0KTsKICAgICAgICAg
fQogCiAjaWYgRU5BQkxFKEpJVCkKQEAgLTM4MSwxMiArMzgxLDE4IEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgIHB1YmxpYzoKICAgICAgICAgc3RhdGljIEZ1bmN0aW9uRXhlY3V0YWJsZSogY3JlYXRl
KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgbmFtZSwgY29uc3QgU291cmNlQ29k
ZSYgc291cmNlLCBib29sIGZvcmNlVXNlc0FyZ3VtZW50cywgRnVuY3Rpb25QYXJhbWV0ZXJzKiBw
YXJhbWV0ZXJzLCBib29sIGlzSW5TdHJpY3RDb250ZXh0LCBpbnQgZmlyc3RMaW5lLCBpbnQgbGFz
dExpbmUpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBuZXcgKGFsbG9jYXRlQ2VsbDxG
dW5jdGlvbkV4ZWN1dGFibGU+KCpleGVjLT5oZWFwKCkpKSBGdW5jdGlvbkV4ZWN1dGFibGUoZXhl
YywgbmFtZSwgc291cmNlLCBmb3JjZVVzZXNBcmd1bWVudHMsIHBhcmFtZXRlcnMsIGlzSW5TdHJp
Y3RDb250ZXh0LCBmaXJzdExpbmUsIGxhc3RMaW5lKTsKKyAgICAgICAgICAgIEZ1bmN0aW9uRXhl
Y3V0YWJsZSogZnVuY3Rpb24gPSBuZXcgKGFsbG9jYXRlQ2VsbDxGdW5jdGlvbkV4ZWN1dGFibGU+
KCpleGVjLT5oZWFwKCkpKSBGdW5jdGlvbkV4ZWN1dGFibGUoZXhlYywgbmFtZSwgc291cmNlLCBm
b3JjZVVzZXNBcmd1bWVudHMsIHBhcmFtZXRlcnMsIGlzSW5TdHJpY3RDb250ZXh0LCBmaXJzdExp
bmUsIGxhc3RMaW5lKTsKKyAgICAgICAgICAgIEpTU3RyaW5nKiBuYW1lU3RyaW5nID0ganNTdHJp
bmcoJmV4ZWMtPmdsb2JhbERhdGEoKSwgbmFtZS51c3RyaW5nKCkpOworICAgICAgICAgICAgZnVu
Y3Rpb24tPm1fbmFtZVZhbHVlLnNldChleGVjLT5nbG9iYWxEYXRhKCksIGZ1bmN0aW9uLCBuYW1l
U3RyaW5nKTsKKyAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbjsKICAgICAgICAgfQogCiAgICAg
ICAgIHN0YXRpYyBGdW5jdGlvbkV4ZWN1dGFibGUqIGNyZWF0ZShKU0dsb2JhbERhdGEmIGdsb2Jh
bERhdGEsIGNvbnN0IElkZW50aWZpZXImIG5hbWUsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwg
Ym9vbCBmb3JjZVVzZXNBcmd1bWVudHMsIEZ1bmN0aW9uUGFyYW1ldGVycyogcGFyYW1ldGVycywg
Ym9vbCBpc0luU3RyaWN0Q29udGV4dCwgaW50IGZpcnN0TGluZSwgaW50IGxhc3RMaW5lKQogICAg
ICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gbmV3IChhbGxvY2F0ZUNlbGw8RnVuY3Rpb25FeGVj
dXRhYmxlPihnbG9iYWxEYXRhLmhlYXApKSBGdW5jdGlvbkV4ZWN1dGFibGUoZ2xvYmFsRGF0YSwg
bmFtZSwgc291cmNlLCBmb3JjZVVzZXNBcmd1bWVudHMsIHBhcmFtZXRlcnMsIGlzSW5TdHJpY3RD
b250ZXh0LCBmaXJzdExpbmUsIGxhc3RMaW5lKTsKKyAgICAgICAgICAgIEZ1bmN0aW9uRXhlY3V0
YWJsZSogZnVuY3Rpb24gPSBuZXcgKGFsbG9jYXRlQ2VsbDxGdW5jdGlvbkV4ZWN1dGFibGU+KGds
b2JhbERhdGEuaGVhcCkpIEZ1bmN0aW9uRXhlY3V0YWJsZShnbG9iYWxEYXRhLCBuYW1lLCBzb3Vy
Y2UsIGZvcmNlVXNlc0FyZ3VtZW50cywgcGFyYW1ldGVycywgaXNJblN0cmljdENvbnRleHQsIGZp
cnN0TGluZSwgbGFzdExpbmUpOworICAgICAgICAgICAgSlNTdHJpbmcqIG5hbWVTdHJpbmcgPSBq
c1N0cmluZygmZ2xvYmFsRGF0YSwgbmFtZS51c3RyaW5nKCkpOworICAgICAgICAgICAgZnVuY3Rp
b24tPm1fbmFtZVZhbHVlLnNldChnbG9iYWxEYXRhLCBmdW5jdGlvbiwgbmFtZVN0cmluZyk7Cisg
ICAgICAgICAgICByZXR1cm4gZnVuY3Rpb247CiAgICAgICAgIH0KIAogICAgICAgICBKU0Z1bmN0
aW9uKiBtYWtlKEV4ZWNTdGF0ZSogZXhlYywgU2NvcGVDaGFpbk5vZGUqIHNjb3BlQ2hhaW4pCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkNv
bnN0cnVjdG9yLmNwcAkocmV2aXNpb24gOTIzOTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzgsNyAr
MzgsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIEFTU0VSVF9DTEFTU19GSVRTX0lOX0NFTEwoRnVuY3Rp
b25Db25zdHJ1Y3Rvcik7CiAKIEZ1bmN0aW9uQ29uc3RydWN0b3I6OkZ1bmN0aW9uQ29uc3RydWN0
b3IoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSwgRnVuY3Rpb25Qcm90b3R5cGUqIGZ1bmN0aW9uUHJvdG90eXBlKQotICAg
IDogSW50ZXJuYWxGdW5jdGlvbigmZXhlYy0+Z2xvYmFsRGF0YSgpLCBnbG9iYWxPYmplY3QsIHN0
cnVjdHVyZSwgSWRlbnRpZmllcihleGVjLCBmdW5jdGlvblByb3RvdHlwZS0+Y2xhc3NJbmZvKCkt
PmNsYXNzTmFtZSkpCisgICAgOiBJbnRlcm5hbEZ1bmN0aW9uKGdsb2JhbE9iamVjdCwgc3RydWN0
dXJlKQogewogICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKGV4ZWMtPmdsb2JhbERhdGEo
KSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLnByb3RvdHlwZSwgZnVuY3Rpb25Qcm90b3R5cGUsIERv
bnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KTsKIApJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Db25zdHJ1Y3Rvci5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uQ29uc3RydWN0b3IuaAkocmV2aXNpb24g
OTIzOTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkNvbnN0cnVj
dG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTIxLDIwICsyMSwyMSBAQAogI2lmbmRlZiBGdW5jdGlv
bkNvbnN0cnVjdG9yX2gKICNkZWZpbmUgRnVuY3Rpb25Db25zdHJ1Y3Rvcl9oCiAKKyNpbmNsdWRl
ICJGdW5jdGlvblByb3RvdHlwZS5oIgogI2luY2x1ZGUgIkludGVybmFsRnVuY3Rpb24uaCIKIAog
bmFtZXNwYWNlIEpTQyB7CiAKLSAgICBjbGFzcyBGdW5jdGlvblByb3RvdHlwZTsKLQogICAgIGNs
YXNzIEZ1bmN0aW9uQ29uc3RydWN0b3IgOiBwdWJsaWMgSW50ZXJuYWxGdW5jdGlvbiB7CiAgICAg
cHJpdmF0ZToKICAgICAgICAgRnVuY3Rpb25Db25zdHJ1Y3RvcihFeGVjU3RhdGUqLCBKU0dsb2Jh
bE9iamVjdCosIFN0cnVjdHVyZSosIEZ1bmN0aW9uUHJvdG90eXBlKik7CiAgICAgCiAgICAgcHVi
bGljOgotICAgICAgICBzdGF0aWMgRnVuY3Rpb25Db25zdHJ1Y3RvciogY3JlYXRlKEV4ZWNTdGF0
ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUsIEZ1bmN0aW9uUHJvdG90eXBlKiBmdW5jUHJvdG90eXBlKQorICAgICAgICBzdGF0aWMgRnVu
Y3Rpb25Db25zdHJ1Y3RvciogY3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEZ1bmN0aW9uUHJvdG90eXBlKiBm
dW5jdGlvblByb3RvdHlwZSkKICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIG5ldyAoYWxs
b2NhdGVDZWxsPEZ1bmN0aW9uQ29uc3RydWN0b3I+KCpleGVjLT5oZWFwKCkpKSBGdW5jdGlvbkNv
bnN0cnVjdG9yKGV4ZWMsIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBmdW5jUHJvdG90eXBlKTsK
KyAgICAgICAgICAgIEZ1bmN0aW9uQ29uc3RydWN0b3IqIGNvbnN0cnVjdG9yID0gbmV3IChhbGxv
Y2F0ZUNlbGw8RnVuY3Rpb25Db25zdHJ1Y3Rvcj4oKmV4ZWMtPmhlYXAoKSkpIEZ1bmN0aW9uQ29u
c3RydWN0b3IoZXhlYywgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIGZ1bmN0aW9uUHJvdG90eXBl
KTsKKyAgICAgICAgICAgIGNvbnN0cnVjdG9yLT5pbml0UHJvcGVydGllcyhleGVjLT5nbG9iYWxE
YXRhKCksIElkZW50aWZpZXIoZXhlYywgZnVuY3Rpb25Qcm90b3R5cGUtPmNsYXNzSW5mbygpLT5j
bGFzc05hbWUpKTsKKyAgICAgICAgICAgIHJldHVybiBjb25zdHJ1Y3RvcjsKICAgICAgICAgfQog
CiAgICAgcHJpdmF0ZToKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0
aW9uUHJvdG90eXBlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9GdW5jdGlvblByb3RvdHlwZS5jcHAJKHJldmlzaW9uIDkyMzkzKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0zOCw3ICszOCw3IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1
bmMKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uUHJvdG9GdW5j
Q2FsbChFeGVjU3RhdGUqKTsKIAogRnVuY3Rpb25Qcm90b3R5cGU6OkZ1bmN0aW9uUHJvdG90eXBl
KEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJl
KiBzdHJ1Y3R1cmUpCi0gICAgOiBJbnRlcm5hbEZ1bmN0aW9uKCZleGVjLT5nbG9iYWxEYXRhKCks
IGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkubnVsbElkZW50
aWZpZXIpCisgICAgOiBJbnRlcm5hbEZ1bmN0aW9uKGdsb2JhbE9iamVjdCwgc3RydWN0dXJlKQog
ewogICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhl
Yy0+cHJvcGVydHlOYW1lcygpLmxlbmd0aCwganNOdW1iZXIoMCksIERvbnREZWxldGUgfCBSZWFk
T25seSB8IERvbnRFbnVtKTsKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0Z1bmN0aW9uUHJvdG90eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUuaAkocmV2aXNpb24gOTIzOTMpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvblByb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkp
CkBAIC0zMiw3ICszMiw5IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHB1YmxpYzoKICAgICAgICAg
c3RhdGljIEZ1bmN0aW9uUHJvdG90eXBlKiBjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAgICAgICAgewot
ICAgICAgICAgICAgcmV0dXJuIG5ldyAoYWxsb2NhdGVDZWxsPEZ1bmN0aW9uUHJvdG90eXBlPigq
ZXhlYy0+aGVhcCgpKSkgRnVuY3Rpb25Qcm90b3R5cGUoZXhlYywgZ2xvYmFsT2JqZWN0LCBzdHJ1
Y3R1cmUpOworICAgICAgICAgICAgRnVuY3Rpb25Qcm90b3R5cGUqIHByb3RvdHlwZSA9IG5ldyAo
YWxsb2NhdGVDZWxsPEZ1bmN0aW9uUHJvdG90eXBlPigqZXhlYy0+aGVhcCgpKSkgRnVuY3Rpb25Q
cm90b3R5cGUoZXhlYywgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUpOworICAgICAgICAgICAgcHJv
dG90eXBlLT5pbml0UHJvcGVydGllcyhleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPnByb3BlcnR5
TmFtZXMoKS5udWxsSWRlbnRpZmllcik7CisgICAgICAgICAgICByZXR1cm4gcHJvdG90eXBlOwog
ICAgICAgICB9CiAgICAgICAgIAogICAgICAgICB2b2lkIGFkZEZ1bmN0aW9uUHJvcGVydGllcyhF
eGVjU3RhdGUqLCBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSogZnVuY3Rpb25TdHJ1Y3R1cmUs
IEpTRnVuY3Rpb24qKiBjYWxsRnVuY3Rpb24sIEpTRnVuY3Rpb24qKiBhcHBseUZ1bmN0aW9uKTsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGVybmFsRnVuY3Rpb24uY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGVybmFsRnVu
Y3Rpb24uY3BwCShyZXZpc2lvbiA5MjM5MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0ludGVybmFsRnVuY3Rpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MSw2ICs0MSwxMiBA
QCBJbnRlcm5hbEZ1bmN0aW9uOjpJbnRlcm5hbEZ1bmN0aW9uKFZQdHJTCiB7CiB9CiAKK0ludGVy
bmFsRnVuY3Rpb246OkludGVybmFsRnVuY3Rpb24oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgOiBKU09iamVjdFdpdGhHbG9iYWxPYmplY3Qo
Z2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUpCit7CisgICAgQVNTRVJUKGluaGVyaXRzKCZzX2luZm8p
KTsKK30KKwogSW50ZXJuYWxGdW5jdGlvbjo6SW50ZXJuYWxGdW5jdGlvbihKU0dsb2JhbERhdGEq
IGdsb2JhbERhdGEsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3Ry
dWN0dXJlLCBjb25zdCBJZGVudGlmaWVyJiBuYW1lKQogICAgIDogSlNPYmplY3RXaXRoR2xvYmFs
T2JqZWN0KGdsb2JhbE9iamVjdCwgc3RydWN0dXJlKQogewpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSW50ZXJuYWxGdW5jdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGVybmFsRnVuY3Rpb24uaAkocmV2aXNpb24gOTIzOTMp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRlcm5hbEZ1bmN0aW9uLmgJKHdv
cmtpbmcgY29weSkKQEAgLTUwLDcgKzUwLDEyIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAv
LyBPbmx5IHVzZWQgdG8gYWxsb3cgdXMgdG8gZGV0ZXJtaW5lIHRoZSBKU0Z1bmN0aW9uIHZwdHIK
ICAgICAgICAgSW50ZXJuYWxGdW5jdGlvbihWUHRyU3RlYWxpbmdIYWNrVHlwZSk7CiAKKyAgICAg
ICAgSW50ZXJuYWxGdW5jdGlvbihKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSopOwogICAgICAg
ICBJbnRlcm5hbEZ1bmN0aW9uKEpTR2xvYmFsRGF0YSosIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0
dXJlKiwgY29uc3QgSWRlbnRpZmllciYpOworICAgICAgICB2b2lkIGluaXRQcm9wZXJ0aWVzKEpT
R2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgY29uc3QgSWRlbnRpZmllciYgbmFtZSkKKyAgICAgICAg
eworICAgICAgICAgICAgcHV0RGlyZWN0KGdsb2JhbERhdGEsIGdsb2JhbERhdGEucHJvcGVydHlO
YW1lcy0+bmFtZSwganNTdHJpbmcoJmdsb2JhbERhdGEsIG5hbWUuaXNOdWxsKCkgPyAiIiA6IG5h
bWUudXN0cmluZygpKSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5IHwgRG9udEVudW0pOworICAgICAg
ICB9CiAKICAgICBwcml2YXRlOgogICAgICAgICB2aXJ0dWFsIENhbGxUeXBlIGdldENhbGxEYXRh
KENhbGxEYXRhJikgPSAwOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNC
eXRlQXJyYXkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTQnl0ZUFycmF5LmNwcAkocmV2aXNpb24gOTIzOTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0J5dGVBcnJheS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM5LDEyICszOSwx
MyBAQCBKU0J5dGVBcnJheTo6SlNCeXRlQXJyYXkoRXhlY1N0YXRlKiBleGVjCiAgICAgOiBKU05v
bkZpbmFsT2JqZWN0KGV4ZWMtPmdsb2JhbERhdGEoKSwgc3RydWN0dXJlKQogICAgICwgbV9zdG9y
YWdlKHN0b3JhZ2UpCiB7Ci0gICAgcHV0RGlyZWN0KGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+
Z2xvYmFsRGF0YSgpLnByb3BlcnR5TmFtZXMtPmxlbmd0aCwganNOdW1iZXIobV9zdG9yYWdlLT5s
ZW5ndGgoKSksIFJlYWRPbmx5IHwgRG9udERlbGV0ZSk7CiB9CiAgICAgICAgIAogSlNCeXRlQXJy
YXkqIEpTQnl0ZUFycmF5OjpjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSwgQnl0ZUFycmF5KiBzdG9yYWdlKQogewotICAgIHJldHVybiBuZXcgKGFsbG9jYXRlQ2Vs
bDxKU0J5dGVBcnJheT4oKmV4ZWMtPmhlYXAoKSkpIEpTQnl0ZUFycmF5KGV4ZWMsIHN0cnVjdHVy
ZSwgc3RvcmFnZSk7CisgICAgSlNCeXRlQXJyYXkqIGFycmF5ID0gbmV3IChhbGxvY2F0ZUNlbGw8
SlNCeXRlQXJyYXk+KCpleGVjLT5oZWFwKCkpKSBKU0J5dGVBcnJheShleGVjLCBzdHJ1Y3R1cmUs
IHN0b3JhZ2UpOworICAgIGFycmF5LT5wdXREaXJlY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVj
LT5nbG9iYWxEYXRhKCkucHJvcGVydHlOYW1lcy0+bGVuZ3RoLCBqc051bWJlcihhcnJheS0+bV9z
dG9yYWdlLT5sZW5ndGgoKSksIFJlYWRPbmx5IHwgRG9udERlbGV0ZSk7CisgICAgcmV0dXJuIGFy
cmF5OwogfQogCiAjaWYgIUFTU0VSVF9ESVNBQkxFRApJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNDZWxsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNDZWxsLmgJKHJldmlzaW9uIDkyMzkzKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNDZWxsLmgJKHdvcmtpbmcgY29weSkKQEAgLTM1MCw3ICszNTAsNyBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICB7CiAgICAgICAgIHJldHVybiBoZWFwLmFsbG9jYXRlKHNpemVv
ZihUKSk7CiAgICAgfQotICAgICAgICAKKwogfSAvLyBuYW1lc3BhY2UgSlNDCiAKICNlbmRpZiAv
LyBKU0NlbGxfaApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlv
bi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5j
dGlvbi5jcHAJKHJldmlzaW9uIDkyMzkzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNGdW5jdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYxLDI3ICs2MSwxOSBAQCBKU0Z1
bmN0aW9uOjpKU0Z1bmN0aW9uKFZQdHJTdGVhbGluZ0hhY2tUCiB7CiB9CiAKLUpTRnVuY3Rpb246
OkpTRnVuY3Rpb24oRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgaW50IGxlbmd0aCwgY29uc3QgSWRlbnRpZmllciYgbmFt
ZSwgTmF0aXZlRXhlY3V0YWJsZSogdGh1bmspCitKU0Z1bmN0aW9uOjpKU0Z1bmN0aW9uKEV4ZWNT
dGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUsIE5hdGl2ZUV4ZWN1dGFibGUqIHRodW5rKQogICAgIDogQmFzZShnbG9iYWxPYmplY3Qs
IHN0cnVjdHVyZSkKICAgICAsIG1fZXhlY3V0YWJsZShleGVjLT5nbG9iYWxEYXRhKCksIHRoaXMs
IHRodW5rKQogICAgICwgbV9zY29wZUNoYWluKGV4ZWMtPmdsb2JhbERhdGEoKSwgdGhpcywgZ2xv
YmFsT2JqZWN0LT5nbG9iYWxTY29wZUNoYWluKCkpCiB7CiAgICAgQVNTRVJUKGluaGVyaXRzKCZz
X2luZm8pKTsKLSAgICBwdXREaXJlY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5nbG9iYWxE
YXRhKCkucHJvcGVydHlOYW1lcy0+bmFtZSwganNTdHJpbmcoZXhlYywgbmFtZS5pc051bGwoKSA/
ICIiIDogbmFtZS51c3RyaW5nKCkpLCBEb250RGVsZXRlIHwgUmVhZE9ubHkgfCBEb250RW51bSk7
Ci0gICAgcHV0RGlyZWN0KGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+cHJvcGVydHlOYW1lcygp
Lmxlbmd0aCwganNOdW1iZXIobGVuZ3RoKSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5IHwgRG9udEVu
dW0pOwogfQogCi1KU0Z1bmN0aW9uOjpKU0Z1bmN0aW9uKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGludCBsZW5ndGgs
IGNvbnN0IElkZW50aWZpZXImIG5hbWUsIE5hdGl2ZUZ1bmN0aW9uIGZ1bmMpCitKU0Z1bmN0aW9u
OjpKU0Z1bmN0aW9uKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAgICAgOiBCYXNlKGdsb2JhbE9iamVjdCwgc3RydWN0
dXJlKQogICAgICwgbV9zY29wZUNoYWluKGV4ZWMtPmdsb2JhbERhdGEoKSwgdGhpcywgZ2xvYmFs
T2JqZWN0LT5nbG9iYWxTY29wZUNoYWluKCkpCiB7CiAgICAgQVNTRVJUKGluaGVyaXRzKCZzX2lu
Zm8pKTsKLSAgICAKLSAgICAvLyBDYW4ndCBkbyB0aGlzIGR1cmluZyBpbml0aWFsaXphdGlvbiBi
ZWNhdXNlIGdldEhvc3RGdW5jdGlvbiBtaWdodCBkbyBhIEdDIGFsbG9jYXRpb24uCi0gICAgbV9l
eGVjdXRhYmxlLnNldChleGVjLT5nbG9iYWxEYXRhKCksIHRoaXMsIGV4ZWMtPmdsb2JhbERhdGEo
KS5nZXRIb3N0RnVuY3Rpb24oZnVuYykpOwotICAgIAotICAgIHB1dERpcmVjdChleGVjLT5nbG9i
YWxEYXRhKCksIGV4ZWMtPmdsb2JhbERhdGEoKS5wcm9wZXJ0eU5hbWVzLT5uYW1lLCBqc1N0cmlu
ZyhleGVjLCBuYW1lLmlzTnVsbCgpID8gIiIgOiBuYW1lLnVzdHJpbmcoKSksIERvbnREZWxldGUg
fCBSZWFkT25seSB8IERvbnRFbnVtKTsKLSAgICBwdXREaXJlY3QoZXhlYy0+Z2xvYmFsRGF0YSgp
LCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkubGVuZ3RoLCBqc051bWJlcihsZW5ndGgpLCBEb250RGVs
ZXRlIHwgUmVhZE9ubHkgfCBEb250RW51bSk7CiB9CiAKIEpTRnVuY3Rpb246OkpTRnVuY3Rpb24o
RXhlY1N0YXRlKiBleGVjLCBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUsIFNjb3BlQ2hh
aW5Ob2RlKiBzY29wZUNoYWluTm9kZSkKQEAgLTkwLDggKzgyLDMyIEBAIEpTRnVuY3Rpb246OkpT
RnVuY3Rpb24oRXhlY1N0YXRlKiBleGVjLCAKICAgICAsIG1fc2NvcGVDaGFpbihleGVjLT5nbG9i
YWxEYXRhKCksIHRoaXMsIHNjb3BlQ2hhaW5Ob2RlKQogewogICAgIEFTU0VSVChpbmhlcml0cygm
c19pbmZvKSk7Ci0gICAgc2V0U3RydWN0dXJlKGV4ZWMtPmdsb2JhbERhdGEoKSwgc2NvcGVDaGFp
bk5vZGUtPmdsb2JhbE9iamVjdC0+bmFtZWRGdW5jdGlvblN0cnVjdHVyZSgpKTsKLSAgICBwdXRE
aXJlY3RPZmZzZXQoZXhlYy0+Z2xvYmFsRGF0YSgpLCBzY29wZUNoYWluTm9kZS0+Z2xvYmFsT2Jq
ZWN0LT5mdW5jdGlvbk5hbWVPZmZzZXQoKSwgZXhlY3V0YWJsZS0+bmFtZVZhbHVlKCkpOworfQor
CitKU0Z1bmN0aW9uKiBKU0Z1bmN0aW9uOjpjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgaW50IGxlbmd0aCwg
Y29uc3QgSWRlbnRpZmllciYgbmFtZSwgTmF0aXZlRnVuY3Rpb24gbmF0aXZlRnVuY3Rpb24pCit7
CisgICAgSlNGdW5jdGlvbiogZnVuY3Rpb24gPSBuZXcgKGFsbG9jYXRlQ2VsbDxKU0Z1bmN0aW9u
PigqZXhlYy0+aGVhcCgpKSkgSlNGdW5jdGlvbihleGVjLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVy
ZSk7CisgICAgLy8gQ2FuJ3QgZG8gdGhpcyBkdXJpbmcgaW5pdGlhbGl6YXRpb24gYmVjYXVzZSBn
ZXRIb3N0RnVuY3Rpb24gbWlnaHQgZG8gYSBHQyBhbGxvY2F0aW9uLgorICAgIGZ1bmN0aW9uLT5t
X2V4ZWN1dGFibGUuc2V0KGV4ZWMtPmdsb2JhbERhdGEoKSwgZnVuY3Rpb24sIGV4ZWMtPmdsb2Jh
bERhdGEoKS5nZXRIb3N0RnVuY3Rpb24obmF0aXZlRnVuY3Rpb24pKTsKKyAgICBmdW5jdGlvbi0+
cHV0RGlyZWN0KGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+Z2xvYmFsRGF0YSgpLnByb3BlcnR5
TmFtZXMtPm5hbWUsIGpzU3RyaW5nKGV4ZWMsIG5hbWUuaXNOdWxsKCkgPyAiIiA6IG5hbWUudXN0
cmluZygpKSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5IHwgRG9udEVudW0pOworICAgIGZ1bmN0aW9u
LT5wdXREaXJlY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkubGVu
Z3RoLCBqc051bWJlcihsZW5ndGgpLCBEb250RGVsZXRlIHwgUmVhZE9ubHkgfCBEb250RW51bSk7
CisgICAgcmV0dXJuIGZ1bmN0aW9uOworfQorCitKU0Z1bmN0aW9uKiBKU0Z1bmN0aW9uOjpjcmVh
dGUoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSwgaW50IGxlbmd0aCwgY29uc3QgSWRlbnRpZmllciYgbmFtZSwgTmF0aXZl
RXhlY3V0YWJsZSogbmF0aXZlRXhlYykKK3sKKyAgICBKU0Z1bmN0aW9uKiBmdW5jdGlvbiA9IG5l
dyAoYWxsb2NhdGVDZWxsPEpTRnVuY3Rpb24+KCpleGVjLT5oZWFwKCkpKSBKU0Z1bmN0aW9uKGV4
ZWMsIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBuYXRpdmVFeGVjKTsKKyAgICBmdW5jdGlvbi0+
cHV0RGlyZWN0KGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+Z2xvYmFsRGF0YSgpLnByb3BlcnR5
TmFtZXMtPm5hbWUsIGpzU3RyaW5nKGV4ZWMsIG5hbWUuaXNOdWxsKCkgPyAiIiA6IG5hbWUudXN0
cmluZygpKSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5IHwgRG9udEVudW0pOworICAgIGZ1bmN0aW9u
LT5wdXREaXJlY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkubGVu
Z3RoLCBqc051bWJlcihsZW5ndGgpLCBEb250RGVsZXRlIHwgUmVhZE9ubHkgfCBEb250RW51bSk7
CisgICAgcmV0dXJuIGZ1bmN0aW9uOworfQorCitKU0Z1bmN0aW9uKiBKU0Z1bmN0aW9uOjpjcmVh
dGUoRXhlY1N0YXRlKiBleGVjLCBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUsIFNjb3Bl
Q2hhaW5Ob2RlKiBzY29wZUNoYWluKQoreworICAgIEpTRnVuY3Rpb24qIGZ1bmN0aW9uID0gbmV3
IChhbGxvY2F0ZUNlbGw8SlNGdW5jdGlvbj4oKmV4ZWMtPmhlYXAoKSkpIEpTRnVuY3Rpb24oZXhl
YywgZXhlY3V0YWJsZSwgc2NvcGVDaGFpbik7CisgICAgZnVuY3Rpb24tPnNldFN0cnVjdHVyZShl
eGVjLT5nbG9iYWxEYXRhKCksIHNjb3BlQ2hhaW4tPmdsb2JhbE9iamVjdC0+bmFtZWRGdW5jdGlv
blN0cnVjdHVyZSgpKTsKKyAgICBmdW5jdGlvbi0+cHV0RGlyZWN0T2Zmc2V0KGV4ZWMtPmdsb2Jh
bERhdGEoKSwgc2NvcGVDaGFpbi0+Z2xvYmFsT2JqZWN0LT5mdW5jdGlvbk5hbWVPZmZzZXQoKSwg
ZXhlY3V0YWJsZS0+bmFtZVZhbHVlKCkpOworICAgIHJldHVybiBmdW5jdGlvbjsKIH0KIAogSlNG
dW5jdGlvbjo6fkpTRnVuY3Rpb24oKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNGdW5jdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTRnVuY3Rpb24uaAkocmV2aXNpb24gOTIzOTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0Z1bmN0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTI5LDExICsyOSw5IEBA
CiBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIEV4ZWN1dGFibGVCYXNlOwotICAgIGNsYXNz
IEZ1bmN0aW9uRXhlY3V0YWJsZTsKICAgICBjbGFzcyBGdW5jdGlvblByb3RvdHlwZTsKICAgICBj
bGFzcyBKU0FjdGl2YXRpb247CiAgICAgY2xhc3MgSlNHbG9iYWxPYmplY3Q7Ci0gICAgY2xhc3Mg
TmF0aXZlRXhlY3V0YWJsZTsKICAgICBjbGFzcyBWUHRySGFja0V4ZWN1dGFibGU7CiAgICAgbmFt
ZXNwYWNlIERGRyB7CiAgICAgY2xhc3MgSklUQ29kZUdlbmVyYXRvcjsKQEAgLTQ4LDIzICs0Niwx
NSBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICB0eXBlZGVmIEpTT2JqZWN0V2l0aEdsb2Jh
bE9iamVjdCBCYXNlOwogCi0gICAgICAgIEpTRnVuY3Rpb24oRXhlY1N0YXRlKiwgSlNHbG9iYWxP
YmplY3QqLCBTdHJ1Y3R1cmUqLCBpbnQgbGVuZ3RoLCBjb25zdCBJZGVudGlmaWVyJiwgTmF0aXZl
RnVuY3Rpb24pOwotICAgICAgICBKU0Z1bmN0aW9uKEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0
KiwgU3RydWN0dXJlKiwgaW50IGxlbmd0aCwgY29uc3QgSWRlbnRpZmllciYsIE5hdGl2ZUV4ZWN1
dGFibGUqKTsKKyAgICBwcml2YXRlOgorICAgICAgICBKU0Z1bmN0aW9uKEV4ZWNTdGF0ZSosIEpT
R2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKik7CisgICAgICAgIEpTRnVuY3Rpb24oRXhlY1N0YXRl
KiwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBOYXRpdmVFeGVjdXRhYmxlKik7CiAgICAg
ICAgIEpTRnVuY3Rpb24oRXhlY1N0YXRlKiwgRnVuY3Rpb25FeGVjdXRhYmxlKiwgU2NvcGVDaGFp
bk5vZGUqKTsKICAgICAgICAgCiAgICAgcHVibGljOgotICAgICAgICBzdGF0aWMgSlNGdW5jdGlv
biogY3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGludCBsZW5ndGgsIGNvbnN0IElkZW50aWZpZXImIGlkZW50
LCBOYXRpdmVGdW5jdGlvbiBuYXRpdmVGdW5jKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1
cm4gbmV3IChhbGxvY2F0ZUNlbGw8SlNGdW5jdGlvbj4oKmV4ZWMtPmhlYXAoKSkpIEpTRnVuY3Rp
b24oZXhlYywgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIGxlbmd0aCwgaWRlbnQsIG5hdGl2ZUZ1
bmMpOwotICAgICAgICB9Ci0gICAgICAgIHN0YXRpYyBKU0Z1bmN0aW9uKiBjcmVhdGUoRXhlY1N0
YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSwgaW50IGxlbmd0aCwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIE5hdGl2ZUV4ZWN1dGFi
bGUqIG5hdGl2ZUV4ZWMpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBuZXcgKGFsbG9j
YXRlQ2VsbDxKU0Z1bmN0aW9uPigqZXhlYy0+aGVhcCgpKSkgSlNGdW5jdGlvbihleGVjLCBnbG9i
YWxPYmplY3QsIHN0cnVjdHVyZSwgbGVuZ3RoLCBpZGVudCwgbmF0aXZlRXhlYyk7Ci0gICAgICAg
IH0KLSAgICAgICAgc3RhdGljIEpTRnVuY3Rpb24qIGNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIEZ1
bmN0aW9uRXhlY3V0YWJsZSogZnVuY0V4ZWMsIFNjb3BlQ2hhaW5Ob2RlKiBzY29wZUNoYWluKQot
ICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gbmV3IChhbGxvY2F0ZUNlbGw8SlNGdW5jdGlv
bj4oKmV4ZWMtPmhlYXAoKSkpIEpTRnVuY3Rpb24oZXhlYywgZnVuY0V4ZWMsIHNjb3BlQ2hhaW4p
OwotICAgICAgICB9CisgICAgICAgIHN0YXRpYyBKU0Z1bmN0aW9uKiBjcmVhdGUoRXhlY1N0YXRl
KiwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBpbnQgbGVuZ3RoLCBjb25zdCBJZGVudGlm
aWVyJiBuYW1lLCBOYXRpdmVGdW5jdGlvbik7CisgICAgICAgIHN0YXRpYyBKU0Z1bmN0aW9uKiBj
cmVhdGUoRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBpbnQgbGVuZ3Ro
LCBjb25zdCBJZGVudGlmaWVyJiBuYW1lLCBOYXRpdmVFeGVjdXRhYmxlKik7CisgICAgICAgIHN0
YXRpYyBKU0Z1bmN0aW9uKiBjcmVhdGUoRXhlY1N0YXRlKiwgRnVuY3Rpb25FeGVjdXRhYmxlKiBm
dW5jRXhlYywgU2NvcGVDaGFpbk5vZGUqKTsKICAgICAgICAgCiAgICAgICAgIHZpcnR1YWwgfkpT
RnVuY3Rpb24oKTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9i
YWxPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0dsb2JhbE9iamVjdC5oCShyZXZpc2lvbiA5MjM5MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTE0NCw3ICsxNDQs
OSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBwdWJsaWM6CiAgICAgICAgIHN0YXRpYyBKU0dsb2Jh
bE9iamVjdCogY3JlYXRlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBuZXcgKGFsbG9jYXRlQ2VsbDxK
U0dsb2JhbE9iamVjdD4oZ2xvYmFsRGF0YS5oZWFwKSkgSlNHbG9iYWxPYmplY3QoZ2xvYmFsRGF0
YSwgc3RydWN0dXJlKTsKKyAgICAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qg
PSBuZXcgKGFsbG9jYXRlQ2VsbDxKU0dsb2JhbE9iamVjdD4oZ2xvYmFsRGF0YS5oZWFwKSkgSlNH
bG9iYWxPYmplY3QoZ2xvYmFsRGF0YSwgc3RydWN0dXJlKTsKKyAgICAgICAgICAgIGdsb2JhbE9i
amVjdC0+aW5pdChnbG9iYWxPYmplY3QpOworICAgICAgICAgICAgcmV0dXJuIGdsb2JhbE9iamVj
dDsKICAgICAgICAgfQogCiAgICAgICAgIHN0YXRpYyBKU19FWFBPUlREQVRBIGNvbnN0IENsYXNz
SW5mbyBzX2luZm87CkBAIC0xNTksNyArMTYxLDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAg
IHsKICAgICAgICAgICAgIENPTVBJTEVfQVNTRVJUKEpTR2xvYmFsT2JqZWN0OjpBbm9ueW1vdXNT
bG90Q291bnQgPT0gMSwgSlNHbG9iYWxPYmplY3RfaGFzX29ubHlfYV9zaW5nbGVfc2xvdCk7CiAg
ICAgICAgICAgICBwdXRUaGlzVG9Bbm9ueW1vdXNWYWx1ZSgwKTsKLSAgICAgICAgICAgIGluaXQo
dGhpcyk7CiAgICAgICAgIH0KIAogICAgICAgICBKU0dsb2JhbE9iamVjdChKU0dsb2JhbERhdGEm
IGdsb2JhbERhdGEsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBKU09iamVjdCogdGhpc1ZhbHVlKQpA
QCAtMzEyLDEwICszMTMsMTEgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICB1bnNpZ25l
ZCBhdHRyaWJ1dGVzOwogICAgICAgICB9OwogICAgICAgICB2b2lkIGFkZFN0YXRpY0dsb2JhbHMo
R2xvYmFsUHJvcGVydHlJbmZvKiwgaW50IGNvdW50KTsKLQotICAgIHByaXZhdGU6CisgICAgICAg
IAogICAgICAgICAvLyBGSVhNRTogRm9sZCByZXNldCBpbnRvIGluaXQuCiAgICAgICAgIHZvaWQg
aW5pdChKU09iamVjdCogdGhpc1ZhbHVlKTsKKworICAgIHByaXZhdGU6CiAgICAgICAgIHZvaWQg
cmVzZXQoSlNWYWx1ZSBwcm90b3R5cGUpOwogCiAgICAgICAgIHZvaWQgc2V0UmVnaXN0ZXJzKFdy
aXRlQmFycmllcjxVbmtub3duPiogcmVnaXN0ZXJzLCBQYXNzT3duQXJyYXlQdHI8V3JpdGVCYXJy
aWVyPFVua25vd24+ID4gcmVnaXN0ZXJBcnJheSwgc2l6ZV90IGNvdW50KTsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lSXRl
cmF0b3IuY3BwCShyZXZpc2lvbiA5MjM5MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNywxNSAr
MzcsMTIgQEAgQVNTRVJUX0NMQVNTX0ZJVFNfSU5fQ0VMTChKU1Byb3BlcnR5TmFtZQogCiBjb25z
dCBDbGFzc0luZm8gSlNQcm9wZXJ0eU5hbWVJdGVyYXRvcjo6c19pbmZvID0geyAiSlNQcm9wZXJ0
eU5hbWVJdGVyYXRvciIsIDAsIDAsIDAgfTsKIAotaW5saW5lIEpTUHJvcGVydHlOYW1lSXRlcmF0
b3I6OkpTUHJvcGVydHlOYW1lSXRlcmF0b3IoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWVB
cnJheURhdGEqIHByb3BlcnR5TmFtZUFycmF5RGF0YSwgc2l6ZV90IG51bUNhY2hlYWJsZVNsb3Rz
KQoraW5saW5lIEpTUHJvcGVydHlOYW1lSXRlcmF0b3I6OkpTUHJvcGVydHlOYW1lSXRlcmF0b3Io
RXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWVBcnJheURhdGE6OlByb3BlcnR5TmFtZVZlY3Rv
ciYgcHJvcGVydHlOYW1lVmVjdG9yLCBzaXplX3QgbnVtQ2FjaGVhYmxlU2xvdHMpCiAgICAgOiBK
U0NlbGwoZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5nbG9iYWxEYXRhKCkucHJvcGVydHlOYW1l
SXRlcmF0b3JTdHJ1Y3R1cmUuZ2V0KCkpCiAgICAgLCBtX251bUNhY2hlYWJsZVNsb3RzKG51bUNh
Y2hlYWJsZVNsb3RzKQotICAgICwgbV9qc1N0cmluZ3NTaXplKHByb3BlcnR5TmFtZUFycmF5RGF0
YS0+cHJvcGVydHlOYW1lVmVjdG9yKCkuc2l6ZSgpKQorICAgICwgbV9qc1N0cmluZ3NTaXplKHBy
b3BlcnR5TmFtZVZlY3Rvci5zaXplKCkpCiAgICAgLCBtX2pzU3RyaW5ncyhhZG9wdEFycmF5UHRy
KG5ldyBXcml0ZUJhcnJpZXI8VW5rbm93bj5bbV9qc1N0cmluZ3NTaXplXSkpCiB7Ci0gICAgUHJv
cGVydHlOYW1lQXJyYXlEYXRhOjpQcm9wZXJ0eU5hbWVWZWN0b3ImIHByb3BlcnR5TmFtZVZlY3Rv
ciA9IHByb3BlcnR5TmFtZUFycmF5RGF0YS0+cHJvcGVydHlOYW1lVmVjdG9yKCk7Ci0gICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBtX2pzU3RyaW5nc1NpemU7ICsraSkKLSAgICAgICAgbV9qc1N0
cmluZ3NbaV0uc2V0KGV4ZWMtPmdsb2JhbERhdGEoKSwgdGhpcywganNPd25lZFN0cmluZyhleGVj
LCBwcm9wZXJ0eU5hbWVWZWN0b3JbaV0udXN0cmluZygpKSk7CiB9CiAKIEpTUHJvcGVydHlOYW1l
SXRlcmF0b3IqIEpTUHJvcGVydHlOYW1lSXRlcmF0b3I6OmNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMs
IEpTT2JqZWN0KiBvKQpAQCAtNjIsNyArNTksNyBAQCBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yKiBK
U1Byb3BlcnR5TmFtZUl0CiAgICAgICAgICFvLT5zdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS5vdmVy
cmlkZXNHZXRQcm9wZXJ0eU5hbWVzKCkpCiAgICAgICAgIG51bUNhY2hlYWJsZVNsb3RzID0gby0+
c3RydWN0dXJlKCktPnByb3BlcnR5U3RvcmFnZVNpemUoKTsKICAgICAKLSAgICBKU1Byb3BlcnR5
TmFtZUl0ZXJhdG9yKiBqc1Byb3BlcnR5TmFtZUl0ZXJhdG9yID0gbmV3IChhbGxvY2F0ZUNlbGw8
SlNQcm9wZXJ0eU5hbWVJdGVyYXRvcj4oKmV4ZWMtPmhlYXAoKSkpIEpTUHJvcGVydHlOYW1lSXRl
cmF0b3IoZXhlYywgcHJvcGVydHlOYW1lcy5kYXRhKCksIG51bUNhY2hlYWJsZVNsb3RzKTsKKyAg
ICBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yKiBqc1Byb3BlcnR5TmFtZUl0ZXJhdG9yID0gY3JlYXRl
KGV4ZWMsIHByb3BlcnR5TmFtZXMuZGF0YSgpLCBudW1DYWNoZWFibGVTbG90cyk7CiAKICAgICBp
ZiAoby0+c3RydWN0dXJlKCktPmlzRGljdGlvbmFyeSgpKQogICAgICAgICByZXR1cm4ganNQcm9w
ZXJ0eU5hbWVJdGVyYXRvcjsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
UHJvcGVydHlOYW1lSXRlcmF0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmgJKHJldmlzaW9uIDkyMzkzKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oCSh3
b3JraW5nIGNvcHkpCkBAIC00Niw3ICs0NiwxMSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAg
c3RhdGljIEpTUHJvcGVydHlOYW1lSXRlcmF0b3IqIGNyZWF0ZShFeGVjU3RhdGUqLCBKU09iamVj
dCopOwogICAgICAgICBzdGF0aWMgSlNQcm9wZXJ0eU5hbWVJdGVyYXRvciogY3JlYXRlKEV4ZWNT
dGF0ZSogZXhlYywgUHJvcGVydHlOYW1lQXJyYXlEYXRhKiBwcm9wZXJ0eU5hbWVBcnJheURhdGEs
IHNpemVfdCBudW1DYWNoZWFibGVTbG90KQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4g
bmV3IChhbGxvY2F0ZUNlbGw8SlNQcm9wZXJ0eU5hbWVJdGVyYXRvcj4oKmV4ZWMtPmhlYXAoKSkp
IEpTUHJvcGVydHlOYW1lSXRlcmF0b3IoZXhlYywgcHJvcGVydHlOYW1lQXJyYXlEYXRhLCBudW1D
YWNoZWFibGVTbG90KTsKKyAgICAgICAgICAgIFByb3BlcnR5TmFtZUFycmF5RGF0YTo6UHJvcGVy
dHlOYW1lVmVjdG9yJiBwcm9wZXJ0eU5hbWVWZWN0b3IgPSBwcm9wZXJ0eU5hbWVBcnJheURhdGEt
PnByb3BlcnR5TmFtZVZlY3RvcigpOworICAgICAgICAgICAgSlNQcm9wZXJ0eU5hbWVJdGVyYXRv
ciogaXRlcmF0b3IgPSAgbmV3IChhbGxvY2F0ZUNlbGw8SlNQcm9wZXJ0eU5hbWVJdGVyYXRvcj4o
KmV4ZWMtPmhlYXAoKSkpIEpTUHJvcGVydHlOYW1lSXRlcmF0b3IoZXhlYywgcHJvcGVydHlOYW1l
VmVjdG9yLCBudW1DYWNoZWFibGVTbG90KTsKKyAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgaXRlcmF0b3ItPm1fanNTdHJpbmdzU2l6ZTsgKytpKQorICAgICAgICAgICAgICAgIGl0
ZXJhdG9yLT5tX2pzU3RyaW5nc1tpXS5zZXQoZXhlYy0+Z2xvYmFsRGF0YSgpLCBpdGVyYXRvciwg
anNPd25lZFN0cmluZyhleGVjLCBwcm9wZXJ0eU5hbWVWZWN0b3JbaV0udXN0cmluZygpKSk7Cisg
ICAgICAgICAgICByZXR1cm4gaXRlcmF0b3I7CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAg
IHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0dsb2JhbERhdGEmIGdsb2JhbERh
dGEsIEpTVmFsdWUgcHJvdG90eXBlKQpAQCAtODMsNyArODcsNyBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICAgICAgc3RhdGljIGNvbnN0IENsYXNzSW5mbyBzX2luZm87CiAKICAgICBwcml2YXRlOgot
ICAgICAgICBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yKEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZUFy
cmF5RGF0YSogcHJvcGVydHlOYW1lQXJyYXlEYXRhLCBzaXplX3QgbnVtQ2FjaGVhYmxlU2xvdCk7
CisgICAgICAgIEpTUHJvcGVydHlOYW1lSXRlcmF0b3IoRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1l
QXJyYXlEYXRhOjpQcm9wZXJ0eU5hbWVWZWN0b3ImLCBzaXplX3QgbnVtQ2FjaGVhYmxlU2xvdCk7
CiAKICAgICAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9jYWNoZWRTdHJ1Y3R1cmU7CiAg
ICAgICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmVDaGFpbj4gbV9jYWNoZWRQcm90b3R5cGVDaGFp
bjsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05hdGl2ZUVycm9yQ29uc3Ry
dWN0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05h
dGl2ZUVycm9yQ29uc3RydWN0b3IuY3BwCShyZXZpc2lvbiA5MjM5MykKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL05hdGl2ZUVycm9yQ29uc3RydWN0b3IuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0zMiwxOCArMzIsMjQgQEAgQVNTRVJUX0NMQVNTX0ZJVFNfSU5fQ0VMTChOYXRpdmVF
cnJvckNvbgogCiBjb25zdCBDbGFzc0luZm8gTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvcjo6c19pbmZv
ID0geyAiRnVuY3Rpb24iLCAmSW50ZXJuYWxGdW5jdGlvbjo6c19pbmZvLCAwLCAwIH07CiAKLU5h
dGl2ZUVycm9yQ29uc3RydWN0b3I6Ok5hdGl2ZUVycm9yQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBl
eGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwg
U3RydWN0dXJlKiBwcm90b3R5cGVTdHJ1Y3R1cmUsIGNvbnN0IFVTdHJpbmcmIG5hbWVBbmRNZXNz
YWdlKQotICAgIDogSW50ZXJuYWxGdW5jdGlvbigmZXhlYy0+Z2xvYmFsRGF0YSgpLCBnbG9iYWxP
YmplY3QsIHN0cnVjdHVyZSwgSWRlbnRpZmllcihleGVjLCBuYW1lQW5kTWVzc2FnZSkpCitOYXRp
dmVFcnJvckNvbnN0cnVjdG9yOjpOYXRpdmVFcnJvckNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogZXhl
YywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisg
ICAgOiBJbnRlcm5hbEZ1bmN0aW9uKGdsb2JhbE9iamVjdCwgc3RydWN0dXJlKQogewogICAgIEFT
U0VSVChpbmhlcml0cygmc19pbmZvKSk7CisgICAgbV9lcnJvclN0cnVjdHVyZS5zZXRNYXlCZU51
bGwoZXhlYy0+Z2xvYmFsRGF0YSgpLCB0aGlzLCAwKTsKK30KIAotICAgIE5hdGl2ZUVycm9yUHJv
dG90eXBlKiBwcm90b3R5cGUgPSBOYXRpdmVFcnJvclByb3RvdHlwZTo6Y3JlYXRlKGV4ZWMsIGds
b2JhbE9iamVjdCwgcHJvdG90eXBlU3RydWN0dXJlLCBuYW1lQW5kTWVzc2FnZSwgdGhpcyk7Ci0K
LSAgICBwdXREaXJlY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCku
bGVuZ3RoLCBqc051bWJlcigxKSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5IHwgRG9udEVudW0pOyAv
LyBFQ01BIDE1LjExLjcuNQotICAgIHB1dERpcmVjdChleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMt
PnByb3BlcnR5TmFtZXMoKS5wcm90b3R5cGUsIHByb3RvdHlwZSwgRG9udERlbGV0ZSB8IFJlYWRP
bmx5IHwgRG9udEVudW0pOwotICAgIG1fZXJyb3JTdHJ1Y3R1cmUuc2V0KGV4ZWMtPmdsb2JhbERh
dGEoKSwgdGhpcywgRXJyb3JJbnN0YW5jZTo6Y3JlYXRlU3RydWN0dXJlKGV4ZWMtPmdsb2JhbERh
dGEoKSwgcHJvdG90eXBlKSk7Ci0gICAgQVNTRVJUKG1fZXJyb3JTdHJ1Y3R1cmUpOwotICAgIEFT
U0VSVChtX2Vycm9yU3RydWN0dXJlLT50eXBlSW5mbygpLnR5cGUoKSA9PSBPYmplY3RUeXBlKTsK
K05hdGl2ZUVycm9yQ29uc3RydWN0b3IqIE5hdGl2ZUVycm9yQ29uc3RydWN0b3I6OmNyZWF0ZShF
eGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSog
c3RydWN0dXJlLCBTdHJ1Y3R1cmUqIHByb3RvdHlwZVN0cnVjdHVyZSwgY29uc3QgVVN0cmluZyYg
bmFtZUFuZE1lc3NhZ2UpCit7CisgICAgTmF0aXZlRXJyb3JDb25zdHJ1Y3RvciogY29uc3RydWN0
b3IgPSBuZXcgKGFsbG9jYXRlQ2VsbDxOYXRpdmVFcnJvckNvbnN0cnVjdG9yPigqZXhlYy0+aGVh
cCgpKSkgTmF0aXZlRXJyb3JDb25zdHJ1Y3RvcihleGVjLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVy
ZSk7CisgICAgTmF0aXZlRXJyb3JQcm90b3R5cGUqIHByb3RvdHlwZSA9IE5hdGl2ZUVycm9yUHJv
dG90eXBlOjpjcmVhdGUoZXhlYywgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGVTdHJ1Y3R1cmUsIG5h
bWVBbmRNZXNzYWdlLCBjb25zdHJ1Y3Rvcik7CisgICAgY29uc3RydWN0b3ItPnB1dERpcmVjdChl
eGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5sZW5ndGgsIGpzTnVtYmVy
KDEpLCBEb250RGVsZXRlIHwgUmVhZE9ubHkgfCBEb250RW51bSk7IC8vIEVDTUEgMTUuMTEuNy41
CisgICAgY29uc3RydWN0b3ItPnB1dERpcmVjdChleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPnBy
b3BlcnR5TmFtZXMoKS5wcm90b3R5cGUsIHByb3RvdHlwZSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5
IHwgRG9udEVudW0pOworICAgIGNvbnN0cnVjdG9yLT5tX2Vycm9yU3RydWN0dXJlLnNldChleGVj
LT5nbG9iYWxEYXRhKCksIGNvbnN0cnVjdG9yLCBFcnJvckluc3RhbmNlOjpjcmVhdGVTdHJ1Y3R1
cmUoZXhlYy0+Z2xvYmFsRGF0YSgpLCBwcm90b3R5cGUpKTsKKyAgICBjb25zdHJ1Y3Rvci0+aW5p
dFByb3BlcnRpZXMoZXhlYy0+Z2xvYmFsRGF0YSgpLCBJZGVudGlmaWVyKGV4ZWMsIG5hbWVBbmRN
ZXNzYWdlKSk7CisgICAgQVNTRVJUKGNvbnN0cnVjdG9yLT5tX2Vycm9yU3RydWN0dXJlKTsKKyAg
ICBBU1NFUlQoY29uc3RydWN0b3ItPm1fZXJyb3JTdHJ1Y3R1cmUtPnR5cGVJbmZvKCkudHlwZSgp
ID09IE9iamVjdFR5cGUpOworICAgIHJldHVybiBjb25zdHJ1Y3RvcjsKIH0KIAogdm9pZCBOYXRp
dmVFcnJvckNvbnN0cnVjdG9yOjp2aXNpdENoaWxkcmVuKFNsb3RWaXNpdG9yJiB2aXNpdG9yKQpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZlRXJyb3JDb25zdHJ1Y3Rv
ci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05hdGl2ZUVy
cm9yQ29uc3RydWN0b3IuaAkocmV2aXNpb24gOTIzOTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9OYXRpdmVFcnJvckNvbnN0cnVjdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTMw
LDE0ICszMCw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIGNsYXNzIE5hdGl2ZUVycm9yUHJvdG90
eXBlOwogCiAgICAgY2xhc3MgTmF0aXZlRXJyb3JDb25zdHJ1Y3RvciA6IHB1YmxpYyBJbnRlcm5h
bEZ1bmN0aW9uIHsKLSAgICBwcml2YXRlOgotICAgICAgICBOYXRpdmVFcnJvckNvbnN0cnVjdG9y
KEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgU3RydWN0dXJlKiBwcm90
b3R5cGVTdHJ1Y3R1cmUsIGNvbnN0IFVTdHJpbmcmKTsKLQogICAgIHB1YmxpYzoKLSAgICAgICAg
c3RhdGljIE5hdGl2ZUVycm9yQ29uc3RydWN0b3IqIGNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBTdHJ1Y3R1
cmUqIHByb3RvdHlwZVN0cnVjdHVyZSwgY29uc3QgVVN0cmluZyYgbmFtZUFuZE1lc3NhZ2UpCi0g
ICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBuZXcgKGFsbG9jYXRlQ2VsbDxOYXRpdmVFcnJv
ckNvbnN0cnVjdG9yPigqZXhlYy0+aGVhcCgpKSkgTmF0aXZlRXJyb3JDb25zdHJ1Y3RvcihleGVj
LCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgcHJvdG90eXBlU3RydWN0dXJlLCBuYW1lQW5kTWVz
c2FnZSk7Ci0gICAgICAgIH0KKyAgICAgICAgc3RhdGljIE5hdGl2ZUVycm9yQ29uc3RydWN0b3Iq
IGNyZWF0ZShFeGVjU3RhdGUqLCBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIFN0cnVjdHVy
ZSogcHJvdG90eXBlU3RydWN0dXJlLCBjb25zdCBVU3RyaW5nJiBuYW1lQW5kTWVzc2FnZSk7CiAg
ICAgICAgIAogICAgICAgICBzdGF0aWMgY29uc3QgQ2xhc3NJbmZvIHNfaW5mbzsKIApAQCAtNDks
NiArNDMsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgU3RydWN0dXJlKiBlcnJvclN0cnVj
dHVyZSgpIHsgcmV0dXJuIG1fZXJyb3JTdHJ1Y3R1cmUuZ2V0KCk7IH0KIAogICAgIHByaXZhdGU6
CisgICAgICAgIE5hdGl2ZUVycm9yQ29uc3RydWN0b3IoRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmpl
Y3QqLCBTdHJ1Y3R1cmUqKTsKICAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVy
ZUZsYWdzID0gT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbiB8IEludGVybmFsRnVuY3Rpb246OlN0cnVj
dHVyZUZsYWdzOwogICAgICAgICB2aXJ0dWFsIENvbnN0cnVjdFR5cGUgZ2V0Q29uc3RydWN0RGF0
YShDb25zdHJ1Y3REYXRhJik7CiAgICAgICAgIHZpcnR1YWwgQ2FsbFR5cGUgZ2V0Q2FsbERhdGEo
Q2FsbERhdGEmKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05hdGl2ZUVy
cm9yUHJvdG90eXBlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9OYXRpdmVFcnJvclByb3RvdHlwZS5jcHAJKHJldmlzaW9uIDkyMzkzKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZlRXJyb3JQcm90b3R5cGUuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0yMiwyMCArMjIsMTQgQEAKICNpbmNsdWRlICJOYXRpdmVFcnJvclByb3RvdHlw
ZS5oIgogCiAjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3QuaCIKLSNpbmNsdWRlICJKU1N0cmluZy5o
IgotI2luY2x1ZGUgIk5hdGl2ZUVycm9yQ29uc3RydWN0b3IuaCIKLSNpbmNsdWRlICJVU3RyaW5n
LmgiCiAKIG5hbWVzcGFjZSBKU0MgewogCiBBU1NFUlRfQ0xBU1NfRklUU19JTl9DRUxMKE5hdGl2
ZUVycm9yUHJvdG90eXBlKTsKIAotTmF0aXZlRXJyb3JQcm90b3R5cGU6Ok5hdGl2ZUVycm9yUHJv
dG90eXBlKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IFVTdHJpbmcmIG5hbWVBbmRNZXNzYWdlLCBOYXRpdmVF
cnJvckNvbnN0cnVjdG9yKiBjb25zdHJ1Y3RvcikKK05hdGl2ZUVycm9yUHJvdG90eXBlOjpOYXRp
dmVFcnJvclByb3RvdHlwZShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlKQogICAgIDogRXJyb3JQcm90b3R5cGUoZXhlYywg
Z2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUpCiB7Ci0gICAgcHV0RGlyZWN0KGV4ZWMtPmdsb2JhbERh
dGEoKSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLm5hbWUsIGpzU3RyaW5nKGV4ZWMsIG5hbWVBbmRN
ZXNzYWdlKSwgRG9udEVudW0pOwotICAgIHB1dERpcmVjdChleGVjLT5nbG9iYWxEYXRhKCksIGV4
ZWMtPnByb3BlcnR5TmFtZXMoKS5tZXNzYWdlLCBqc1N0cmluZyhleGVjLCBuYW1lQW5kTWVzc2Fn
ZSksIERvbnRFbnVtKTsKLSAgICBwdXREaXJlY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5w
cm9wZXJ0eU5hbWVzKCkuY29uc3RydWN0b3IsIGNvbnN0cnVjdG9yLCBEb250RW51bSk7CiB9CiAK
IH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
TmF0aXZlRXJyb3JQcm90b3R5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9OYXRpdmVFcnJvclByb3RvdHlwZS5oCShyZXZpc2lvbiA5MjM5MykKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05hdGl2ZUVycm9yUHJvdG90eXBlLmgJKHdvcmtp
bmcgY29weSkKQEAgLTIyLDE4ICsyMiwyMiBAQAogI2RlZmluZSBOYXRpdmVFcnJvclByb3RvdHlw
ZV9oCiAKICNpbmNsdWRlICJFcnJvclByb3RvdHlwZS5oIgorI2luY2x1ZGUgIk5hdGl2ZUVycm9y
Q29uc3RydWN0b3IuaCIKIAogbmFtZXNwYWNlIEpTQyB7Ci0gICAgY2xhc3MgTmF0aXZlRXJyb3JD
b25zdHJ1Y3RvcjsKIAogICAgIGNsYXNzIE5hdGl2ZUVycm9yUHJvdG90eXBlIDogcHVibGljIEVy
cm9yUHJvdG90eXBlIHsKICAgICBwcml2YXRlOgotICAgICAgICBOYXRpdmVFcnJvclByb3RvdHlw
ZShFeGVjU3RhdGUqLCBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIGNvbnN0IFVTdHJpbmcm
LCBOYXRpdmVFcnJvckNvbnN0cnVjdG9yKik7CisgICAgICAgIE5hdGl2ZUVycm9yUHJvdG90eXBl
KEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKik7CiAgICAgCiAgICAgcHVi
bGljOgogICAgICAgICBzdGF0aWMgTmF0aXZlRXJyb3JQcm90b3R5cGUqIGNyZWF0ZShFeGVjU3Rh
dGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0
dXJlLCBjb25zdCBVU3RyaW5nJiBuYW1lQW5kTWVzc2FnZSwgTmF0aXZlRXJyb3JDb25zdHJ1Y3Rv
ciogY29uc3RydWN0b3IpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBuZXcgKGFsbG9j
YXRlQ2VsbDxOYXRpdmVFcnJvclByb3RvdHlwZT4oKmV4ZWMtPmhlYXAoKSkpIE5hdGl2ZUVycm9y
UHJvdG90eXBlKGV4ZWMsIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBuYW1lQW5kTWVzc2FnZSwg
Y29uc3RydWN0b3IpOworICAgICAgICAgICAgTmF0aXZlRXJyb3JQcm90b3R5cGUqIHByb3RvdHlw
ZSA9IG5ldyAoYWxsb2NhdGVDZWxsPE5hdGl2ZUVycm9yUHJvdG90eXBlPigqZXhlYy0+aGVhcCgp
KSkgTmF0aXZlRXJyb3JQcm90b3R5cGUoZXhlYywgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUpOwor
ICAgICAgICAgICAgcHJvdG90eXBlLT5wdXREaXJlY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVj
LT5wcm9wZXJ0eU5hbWVzKCkubmFtZSwganNTdHJpbmcoZXhlYywgbmFtZUFuZE1lc3NhZ2UpLCBE
b250RW51bSk7CisgICAgICAgICAgICBwcm90b3R5cGUtPnB1dERpcmVjdChleGVjLT5nbG9iYWxE
YXRhKCksIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5tZXNzYWdlLCBqc1N0cmluZyhleGVjLCBuYW1l
QW5kTWVzc2FnZSksIERvbnRFbnVtKTsKKyAgICAgICAgICAgIHByb3RvdHlwZS0+cHV0RGlyZWN0
KGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLmNvbnN0cnVjdG9yLCBj
b25zdHJ1Y3RvciwgRG9udEVudW0pOworICAgICAgICAgICAgcmV0dXJuIHByb3RvdHlwZTsKICAg
ICAgICAgfQogICAgIH07CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051
bWJlckNvbnN0cnVjdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9OdW1iZXJDb25zdHJ1Y3Rvci5jcHAJKHJldmlzaW9uIDkyMzkzKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVtYmVyQ29uc3RydWN0b3IuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC01NSw3ICs1NSw3IEBAIGNvbnN0IENsYXNzSW5mbyBOdW1iZXJDb25zdHJ1Y3Rvcjo6
c19pbmYKICovCiAKIE51bWJlckNvbnN0cnVjdG9yOjpOdW1iZXJDb25zdHJ1Y3RvcihFeGVjU3Rh
dGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0
dXJlLCBOdW1iZXJQcm90b3R5cGUqIG51bWJlclByb3RvdHlwZSkKLSAgICA6IEludGVybmFsRnVu
Y3Rpb24oJmV4ZWMtPmdsb2JhbERhdGEoKSwgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIElkZW50
aWZpZXIoZXhlYywgbnVtYmVyUHJvdG90eXBlLT5zX2luZm8uY2xhc3NOYW1lKSkKKyAgICA6IElu
dGVybmFsRnVuY3Rpb24oZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUpCiB7CiAgICAgQVNTRVJUKGlu
aGVyaXRzKCZzX2luZm8pKTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
TnVtYmVyQ29uc3RydWN0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9OdW1iZXJDb25zdHJ1Y3Rvci5oCShyZXZpc2lvbiA5MjM5MykKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL051bWJlckNvbnN0cnVjdG9yLmgJKHdvcmtpbmcgY29weSkK
QEAgLTIyLDE5ICsyMiwyMCBAQAogI2RlZmluZSBOdW1iZXJDb25zdHJ1Y3Rvcl9oCiAKICNpbmNs
dWRlICJJbnRlcm5hbEZ1bmN0aW9uLmgiCisjaW5jbHVkZSAiTnVtYmVyUHJvdG90eXBlLmgiCiAK
IG5hbWVzcGFjZSBKU0MgewogCi0gICAgY2xhc3MgTnVtYmVyUHJvdG90eXBlOwotCiAgICAgY2xh
c3MgTnVtYmVyQ29uc3RydWN0b3IgOiBwdWJsaWMgSW50ZXJuYWxGdW5jdGlvbiB7CiAgICAgcHJp
dmF0ZToKICAgICAgICAgTnVtYmVyQ29uc3RydWN0b3IoRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmpl
Y3QqLCBTdHJ1Y3R1cmUqLCBOdW1iZXJQcm90b3R5cGUqKTsKICAgICAgICAgCiAgICAgcHVibGlj
OgotICAgICAgICBzdGF0aWMgTnVtYmVyQ29uc3RydWN0b3IqIGNyZWF0ZShFeGVjU3RhdGUqIGV4
ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBO
dW1iZXJQcm90b3R5cGUqIG51bVByb3RvdHlwZSkKKyAgICAgICAgc3RhdGljIE51bWJlckNvbnN0
cnVjdG9yKiBjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgTnVtYmVyUHJvdG90eXBlKiBudW1iZXJQcm90b3R5
cGUpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBuZXcgKGFsbG9jYXRlQ2VsbDxOdW1i
ZXJDb25zdHJ1Y3Rvcj4oKmV4ZWMtPmhlYXAoKSkpIE51bWJlckNvbnN0cnVjdG9yKGV4ZWMsIGds
b2JhbE9iamVjdCwgc3RydWN0dXJlLCBudW1Qcm90b3R5cGUpOworICAgICAgICAgICAgTnVtYmVy
Q29uc3RydWN0b3IqIGNvbnN0cnVjdG9yID0gbmV3IChhbGxvY2F0ZUNlbGw8TnVtYmVyQ29uc3Ry
dWN0b3I+KCpleGVjLT5oZWFwKCkpKSBOdW1iZXJDb25zdHJ1Y3RvcihleGVjLCBnbG9iYWxPYmpl
Y3QsIHN0cnVjdHVyZSwgbnVtYmVyUHJvdG90eXBlKTsKKyAgICAgICAgICAgIGNvbnN0cnVjdG9y
LT5pbml0UHJvcGVydGllcyhleGVjLT5nbG9iYWxEYXRhKCksIElkZW50aWZpZXIoZXhlYywgbnVt
YmVyUHJvdG90eXBlLT5zX2luZm8uY2xhc3NOYW1lKSk7CisgICAgICAgICAgICByZXR1cm4gY29u
c3RydWN0b3I7CiAgICAgICAgIH0KIAogICAgICAgICB2aXJ0dWFsIGJvb2wgZ2V0T3duUHJvcGVy
dHlTbG90KEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBQcm9wZXJ0eVNsb3QmKTsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdENvbnN0cnVjdG9yLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RDb25zdHJ1
Y3Rvci5jcHAJKHJldmlzaW9uIDkyMzkzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvT2JqZWN0Q29uc3RydWN0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03Niw3ICs3Niw3IEBA
IGNvbnN0IENsYXNzSW5mbyBPYmplY3RDb25zdHJ1Y3Rvcjo6c19pbmYKICovCiAKIE9iamVjdENv
bnN0cnVjdG9yOjpPYmplY3RDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBPYmplY3RQcm90b3R5cGUq
IG9iamVjdFByb3RvdHlwZSkKLSAgICA6IEludGVybmFsRnVuY3Rpb24oJmV4ZWMtPmdsb2JhbERh
dGEoKSwgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIElkZW50aWZpZXIoZXhlYywgIk9iamVjdCIp
KQorICAgIDogSW50ZXJuYWxGdW5jdGlvbihnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSkKIHsKICAg
ICAvLyBFQ01BIDE1LjIuMy4xCiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24oZXhlYy0+
Z2xvYmFsRGF0YSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkucHJvdG90eXBlLCBvYmplY3RQcm90
b3R5cGUsIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KTsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdENvbnN0cnVjdG9yLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuaAkocmV2aXNp
b24gOTIzOTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RDb25zdHJ1
Y3Rvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw3ICszNCw5IEBAIG5hbWVzcGFjZSBKU0Mgewog
ICAgIHB1YmxpYzoKICAgICAgICAgc3RhdGljIE9iamVjdENvbnN0cnVjdG9yKiBjcmVhdGUoRXhl
Y1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSwgT2JqZWN0UHJvdG90eXBlKiBvYmpQcm90b3R5cGUpCiAgICAgICAgIHsKLSAgICAg
ICAgICAgIHJldHVybiBuZXcgKGFsbG9jYXRlQ2VsbDxPYmplY3RDb25zdHJ1Y3Rvcj4oKmV4ZWMt
PmhlYXAoKSkpIE9iamVjdENvbnN0cnVjdG9yKGV4ZWMsIGdsb2JhbE9iamVjdCwgc3RydWN0dXJl
LCBvYmpQcm90b3R5cGUpOworICAgICAgICAgICAgT2JqZWN0Q29uc3RydWN0b3IqIGNvbnN0cnVj
dG9yID0gbmV3IChhbGxvY2F0ZUNlbGw8T2JqZWN0Q29uc3RydWN0b3I+KCpleGVjLT5oZWFwKCkp
KSBPYmplY3RDb25zdHJ1Y3RvcihleGVjLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgb2JqUHJv
dG90eXBlKTsKKyAgICAgICAgICAgIGNvbnN0cnVjdG9yLT5pbml0UHJvcGVydGllcyhleGVjLT5n
bG9iYWxEYXRhKCksIElkZW50aWZpZXIoZXhlYywgIk9iamVjdCIpKTsKKyAgICAgICAgICAgIHJl
dHVybiBjb25zdHJ1Y3RvcjsKICAgICAgICAgfQogCiAgICAgICAgIHZpcnR1YWwgYm9vbCBnZXRP
d25Qcm9wZXJ0eVNsb3QoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIFByb3BlcnR5U2xv
dCYpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwQ29uc3RydWN0
b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4
cENvbnN0cnVjdG9yLmNwcAkocmV2aXNpb24gOTIzOTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9SZWdFeHBDb25zdHJ1Y3Rvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk2LDcg
Kzk2LDcgQEAgY29uc3QgQ2xhc3NJbmZvIFJlZ0V4cENvbnN0cnVjdG9yOjpzX2luZgogKi8KIAog
UmVnRXhwQ29uc3RydWN0b3I6OlJlZ0V4cENvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogZXhlYywgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFJlZ0V4cFBy
b3RvdHlwZSogcmVnRXhwUHJvdG90eXBlKQotICAgIDogSW50ZXJuYWxGdW5jdGlvbigmZXhlYy0+
Z2xvYmFsRGF0YSgpLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgSWRlbnRpZmllcihleGVjLCAi
UmVnRXhwIikpCisgICAgOiBJbnRlcm5hbEZ1bmN0aW9uKGdsb2JhbE9iamVjdCwgc3RydWN0dXJl
KQogICAgICwgZChhZG9wdFB0cihuZXcgUmVnRXhwQ29uc3RydWN0b3JQcml2YXRlKSkKIHsKICAg
ICBBU1NFUlQoaW5oZXJpdHMoJnNfaW5mbykpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvUmVnRXhwQ29uc3RydWN0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9SZWdFeHBDb25zdHJ1Y3Rvci5oCShyZXZpc2lvbiA5MjM5MykKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cENvbnN0cnVjdG9yLmgJKHdvcmtp
bmcgY29weSkKQEAgLTYyLDcgKzYyLDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgcHVibGljOgog
ICAgICAgICBzdGF0aWMgUmVnRXhwQ29uc3RydWN0b3IqIGNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMs
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBSZWdF
eHBQcm90b3R5cGUqIHJlZ0V4cFByb3RvdHlwZSkKICAgICAgICAgewotICAgICAgICAgICAgcmV0
dXJuIG5ldyAoYWxsb2NhdGVDZWxsPFJlZ0V4cENvbnN0cnVjdG9yPigqZXhlYy0+aGVhcCgpKSkg
UmVnRXhwQ29uc3RydWN0b3IoZXhlYywgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIHJlZ0V4cFBy
b3RvdHlwZSk7CisgICAgICAgICAgICBSZWdFeHBDb25zdHJ1Y3RvciogY29uc3RydWN0b3IgPSBu
ZXcgKGFsbG9jYXRlQ2VsbDxSZWdFeHBDb25zdHJ1Y3Rvcj4oKmV4ZWMtPmhlYXAoKSkpIFJlZ0V4
cENvbnN0cnVjdG9yKGV4ZWMsIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCByZWdFeHBQcm90b3R5
cGUpOworICAgICAgICAgICAgY29uc3RydWN0b3ItPmluaXRQcm9wZXJ0aWVzKGV4ZWMtPmdsb2Jh
bERhdGEoKSwgSWRlbnRpZmllcihleGVjLCAiUmVnRXhwIikpOworICAgICAgICAgICAgcmV0dXJu
IGNvbnN0cnVjdG9yOwogICAgICAgICB9CiAKICAgICAgICAgc3RhdGljIFN0cnVjdHVyZSogY3Jl
YXRlU3RydWN0dXJlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNWYWx1ZSBwcm90b3R5cGUp
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBNYXRjaGVzQXJyYXku
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBNYXRj
aGVzQXJyYXkuaAkocmV2aXNpb24gOTIzOTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9SZWdFeHBNYXRjaGVzQXJyYXkuaAkod29ya2luZyBjb3B5KQpAQCAtMjUsOSArMjUsNiBA
QAogbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBSZWdFeHBNYXRjaGVzQXJyYXkgOiBwdWJs
aWMgSlNBcnJheSB7Ci0gICAgcHJpdmF0ZToKLSAgICAgICAgUmVnRXhwTWF0Y2hlc0FycmF5KEV4
ZWNTdGF0ZSosIFJlZ0V4cENvbnN0cnVjdG9yUHJpdmF0ZSopOwotCiAgICAgcHVibGljOgogICAg
ICAgICBzdGF0aWMgUmVnRXhwTWF0Y2hlc0FycmF5KiBjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBS
ZWdFeHBDb25zdHJ1Y3RvclByaXZhdGUqIGN0b3JQcml2YXRlKQogICAgICAgICB7CkBAIC0zNiw2
ICszMyw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2aXJ0dWFsIH5SZWdFeHBNYXRjaGVz
QXJyYXkoKTsKIAogICAgIHByaXZhdGU6CisgICAgICAgIFJlZ0V4cE1hdGNoZXNBcnJheShFeGVj
U3RhdGUqLCBSZWdFeHBDb25zdHJ1Y3RvclByaXZhdGUqKTsKICAgICAgICAgdmlydHVhbCBib29s
IGdldE93blByb3BlcnR5U2xvdChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHBy
b3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQogICAgICAgICB7CiAgICAgICAgICAgICBp
ZiAoc3ViY2xhc3NEYXRhKCkpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9T
dHJpbmdDb25zdHJ1Y3Rvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvU3RyaW5nQ29uc3RydWN0b3IuY3BwCShyZXZpc2lvbiA5MjM5MykKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ0NvbnN0cnVjdG9yLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNDgsNyArNDgsNyBAQCBjb25zdCBDbGFzc0luZm8gU3RyaW5nQ29uc3RydWN0b3I6
OnNfaW5mCiBBU1NFUlRfQ0xBU1NfRklUU19JTl9DRUxMKFN0cmluZ0NvbnN0cnVjdG9yKTsKIAog
U3RyaW5nQ29uc3RydWN0b3I6OlN0cmluZ0NvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogZXhlYywgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFN0cmluZ1By
b3RvdHlwZSogc3RyaW5nUHJvdG90eXBlKQotICAgIDogSW50ZXJuYWxGdW5jdGlvbigmZXhlYy0+
Z2xvYmFsRGF0YSgpLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgSWRlbnRpZmllcihleGVjLCBz
dHJpbmdQcm90b3R5cGUtPmNsYXNzSW5mbygpLT5jbGFzc05hbWUpKQorICAgIDogSW50ZXJuYWxG
dW5jdGlvbihnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSkKIHsKICAgICBwdXREaXJlY3RXaXRob3V0
VHJhbnNpdGlvbihleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5wcm90
b3R5cGUsIHN0cmluZ1Byb3RvdHlwZSwgUmVhZE9ubHkgfCBEb250RW51bSB8IERvbnREZWxldGUp
OwogICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhl
Yy0+cHJvcGVydHlOYW1lcygpLmxlbmd0aCwganNOdW1iZXIoMSksIFJlYWRPbmx5IHwgRG9udEVu
dW0gfCBEb250RGVsZXRlKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0
cmluZ0NvbnN0cnVjdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvU3RyaW5nQ29uc3RydWN0b3IuaAkocmV2aXNpb24gOTIzOTMpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdDb25zdHJ1Y3Rvci5oCSh3b3JraW5nIGNvcHkpCkBA
IC0zMiw5ICszMiwxMSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgU3RyaW5nQ29uc3RydWN0
b3IoRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBTdHJpbmdQcm90b3R5
cGUqKTsKICAgICAgICAgCiAgICAgcHVibGljOgotICAgICAgICBzdGF0aWMgU3RyaW5nQ29uc3Ry
dWN0b3IqIGNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QgLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgU3RyaW5nUHJvdG90eXBlKiBzdHJQcm90b3R5cGUp
CisgICAgICAgIHN0YXRpYyBTdHJpbmdDb25zdHJ1Y3RvciogY3JlYXRlKEV4ZWNTdGF0ZSogZXhl
YywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCAsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBT
dHJpbmdQcm90b3R5cGUqIHN0cmluZ1Byb3RvdHlwZSkKICAgICAgICAgewotICAgICAgICAgICAg
cmV0dXJuIG5ldyAoYWxsb2NhdGVDZWxsPFN0cmluZ0NvbnN0cnVjdG9yPigqZXhlYy0+aGVhcCgp
KSkgU3RyaW5nQ29uc3RydWN0b3IoZXhlYywgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIHN0clBy
b3RvdHlwZSk7CisgICAgICAgICAgICBTdHJpbmdDb25zdHJ1Y3RvciogY29uc3RydWN0b3IgPSBu
ZXcgKGFsbG9jYXRlQ2VsbDxTdHJpbmdDb25zdHJ1Y3Rvcj4oKmV4ZWMtPmhlYXAoKSkpIFN0cmlu
Z0NvbnN0cnVjdG9yKGV4ZWMsIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBzdHJpbmdQcm90b3R5
cGUpOworICAgICAgICAgICAgY29uc3RydWN0b3ItPmluaXRQcm9wZXJ0aWVzKGV4ZWMtPmdsb2Jh
bERhdGEoKSwgSWRlbnRpZmllcihleGVjLCBzdHJpbmdQcm90b3R5cGUtPmNsYXNzSW5mbygpLT5j
bGFzc05hbWUpKTsKKyAgICAgICAgICAgIHJldHVybiBjb25zdHJ1Y3RvcjsKICAgICAgICAgfQog
CiAgICAgICAgIHN0YXRpYyBjb25zdCBDbGFzc0luZm8gc19pbmZvOwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdPYmplY3QuY3BwCShyZXZpc2lvbiA5MjM5
MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ09iamVjdC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTI5LDEzICsyOSw2IEBAIEFTU0VSVF9DTEFTU19GSVRTX0lOX0NFTEwo
U3RyaW5nT2JqZWN0KTsKIAogY29uc3QgQ2xhc3NJbmZvIFN0cmluZ09iamVjdDo6c19pbmZvID0g
eyAiU3RyaW5nIiwgJkpTV3JhcHBlck9iamVjdDo6c19pbmZvLCAwLCAwIH07CiAKLVN0cmluZ09i
amVjdDo6U3RyaW5nT2JqZWN0KEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUp
Ci0gICAgOiBKU1dyYXBwZXJPYmplY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBzdHJ1Y3R1cmUpCi17
Ci0gICAgQVNTRVJUKGluaGVyaXRzKCZzX2luZm8pKTsKLSAgICBzZXRJbnRlcm5hbFZhbHVlKGV4
ZWMtPmdsb2JhbERhdGEoKSwganNFbXB0eVN0cmluZyhleGVjKSk7Ci19Ci0KIFN0cmluZ09iamVj
dDo6U3RyaW5nT2JqZWN0KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUsIEpTU3RyaW5nKiBzdHJpbmcpCiAgICAgOiBKU1dyYXBwZXJPYmplY3QoZ2xvYmFsRGF0
YSwgc3RydWN0dXJlKQogewpAQCAtNDMsMTMgKzM2LDYgQEAgU3RyaW5nT2JqZWN0OjpTdHJpbmdP
YmplY3QoSlNHbG9iYWxEYXRhJgogICAgIHNldEludGVybmFsVmFsdWUoZ2xvYmFsRGF0YSwgc3Ry
aW5nKTsKIH0KIAotU3RyaW5nT2JqZWN0OjpTdHJpbmdPYmplY3QoRXhlY1N0YXRlKiBleGVjLCBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSwgY29uc3QgVVN0cmluZyYgc3RyaW5nKQotICAgIDogSlNXcmFw
cGVyT2JqZWN0KGV4ZWMtPmdsb2JhbERhdGEoKSwgc3RydWN0dXJlKQotewotICAgIEFTU0VSVChp
bmhlcml0cygmc19pbmZvKSk7Ci0gICAgc2V0SW50ZXJuYWxWYWx1ZShleGVjLT5nbG9iYWxEYXRh
KCksIGpzU3RyaW5nKGV4ZWMsIHN0cmluZykpOwotfQotCiBib29sIFN0cmluZ09iamVjdDo6Z2V0
T3duUHJvcGVydHlTbG90KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVy
dHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgaWYgKGludGVybmFsVmFsdWUoKS0+
Z2V0U3RyaW5nUHJvcGVydHlTbG90KGV4ZWMsIHByb3BlcnR5TmFtZSwgc2xvdCkpCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdPYmplY3QuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdPYmplY3QuaAkocmV2aXNpb24g
OTIzOTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdPYmplY3QuaAko
d29ya2luZyBjb3B5KQpAQCAtMjcsMTggKzI3LDE2IEBACiBuYW1lc3BhY2UgSlNDIHsKIAogICAg
IGNsYXNzIFN0cmluZ09iamVjdCA6IHB1YmxpYyBKU1dyYXBwZXJPYmplY3QgewotICAgIHByb3Rl
Y3RlZDoKLSAgICAgICAgU3RyaW5nT2JqZWN0KEV4ZWNTdGF0ZSosIFN0cnVjdHVyZSopOwotICAg
ICAgICBTdHJpbmdPYmplY3QoRXhlY1N0YXRlKiwgU3RydWN0dXJlKiwgY29uc3QgVVN0cmluZyYp
OwotICAgICAgICAgICAgICAgIAogICAgIHB1YmxpYzoKICAgICAgICAgc3RhdGljIFN0cmluZ09i
amVjdCogY3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAgICAg
ICAgIHsKLSAgICAgICAgICAgIHJldHVybiBuZXcgKGFsbG9jYXRlQ2VsbDxTdHJpbmdPYmplY3Q+
KCpleGVjLT5oZWFwKCkpKSBTdHJpbmdPYmplY3QoZXhlYywgc3RydWN0dXJlKTsgIAorICAgICAg
ICAgICAgSlNTdHJpbmcqIGVtcHR5U3RyaW5nID0ganNFbXB0eVN0cmluZyhleGVjKTsKKyAgICAg
ICAgICAgIHJldHVybiBuZXcgKGFsbG9jYXRlQ2VsbDxTdHJpbmdPYmplY3Q+KCpleGVjLT5oZWFw
KCkpKSBTdHJpbmdPYmplY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBzdHJ1Y3R1cmUsIGVtcHR5U3Ry
aW5nKTsKICAgICAgICAgfQogICAgICAgICBzdGF0aWMgU3RyaW5nT2JqZWN0KiBjcmVhdGUoRXhl
Y1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgY29uc3QgVVN0cmluZyYgc3RyKQog
ICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gbmV3IChhbGxvY2F0ZUNlbGw8U3RyaW5nT2Jq
ZWN0PigqZXhlYy0+aGVhcCgpKSkgU3RyaW5nT2JqZWN0KGV4ZWMsIHN0cnVjdHVyZSwgc3RyKTsg
IAorICAgICAgICAgICAgSlNTdHJpbmcqIHN0cmluZyA9IGpzU3RyaW5nKGV4ZWMsIHN0cik7Cisg
ICAgICAgICAgICByZXR1cm4gbmV3IChhbGxvY2F0ZUNlbGw8U3RyaW5nT2JqZWN0PigqZXhlYy0+
aGVhcCgpKSkgU3RyaW5nT2JqZWN0KGV4ZWMtPmdsb2JhbERhdGEoKSwgc3RydWN0dXJlLCBzdHJp
bmcpOwogICAgICAgICB9CiAgICAgICAgIHN0YXRpYyBTdHJpbmdPYmplY3QqIGNyZWF0ZShFeGVj
U3RhdGUqLCBKU0dsb2JhbE9iamVjdCosIEpTU3RyaW5nKik7CiAgICAgICAgIApJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nT2JqZWN0VGhhdE1hc3F1ZXJhZGVzQXNV
bmRlZmluZWQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9T
dHJpbmdPYmplY3RUaGF0TWFzcXVlcmFkZXNBc1VuZGVmaW5lZC5oCShyZXZpc2lvbiA5MjM5MykK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ09iamVjdFRoYXRNYXNxdWVy
YWRlc0FzVW5kZWZpbmVkLmgJKHdvcmtpbmcgY29weSkKQEAgLTMyLDEzICszMiwxNCBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICBwdWJsaWM6CiAgICAgICAgIHN0YXRpYyBTdHJpbmdPYmplY3RUaGF0
TWFzcXVlcmFkZXNBc1VuZGVmaW5lZCogY3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgVVN0
cmluZyYgc3RyaW5nKQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gbmV3IChhbGxvY2F0
ZUNlbGw8U3RyaW5nT2JqZWN0VGhhdE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQ+KCpleGVjLT5oZWFw
KCkpKSBTdHJpbmdPYmplY3RUaGF0TWFzcXVlcmFkZXNBc1VuZGVmaW5lZChleGVjLAotICAgICAg
ICAgICAgICAgIGNyZWF0ZVN0cnVjdHVyZShleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPmxleGlj
YWxHbG9iYWxPYmplY3QoKS0+c3RyaW5nUHJvdG90eXBlKCkpLCBzdHJpbmcpOworICAgICAgICAg
ICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBjcmVhdGVTdHJ1Y3R1cmUoZXhlYy0+Z2xvYmFsRGF0
YSgpLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCktPnN0cmluZ1Byb3RvdHlwZSgpKTsKKyAg
ICAgICAgICAgIEpTU3RyaW5nKiBqc3N0cmluZyA9IGpzU3RyaW5nKGV4ZWMsIHN0cmluZyk7Cisg
ICAgICAgICAgICByZXR1cm4gbmV3IChhbGxvY2F0ZUNlbGw8U3RyaW5nT2JqZWN0VGhhdE1hc3F1
ZXJhZGVzQXNVbmRlZmluZWQ+KCpleGVjLT5oZWFwKCkpKSBTdHJpbmdPYmplY3RUaGF0TWFzcXVl
cmFkZXNBc1VuZGVmaW5lZChleGVjLCBzdHJ1Y3R1cmUsIGpzc3RyaW5nKTsKICAgICAgICAgfQog
CiAgICAgcHJpdmF0ZToKLSAgICAgICAgU3RyaW5nT2JqZWN0VGhhdE1hc3F1ZXJhZGVzQXNVbmRl
ZmluZWQoRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgY29uc3QgVVN0cmlu
ZyYgc3RyaW5nKQotICAgICAgICAgICAgOiBTdHJpbmdPYmplY3QoZXhlYywgc3RydWN0dXJlLCBz
dHJpbmcpCisgICAgICAgIFN0cmluZ09iamVjdFRoYXRNYXNxdWVyYWRlc0FzVW5kZWZpbmVkKEV4
ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTU3RyaW5nKiBzdHJpbmcpCisg
ICAgICAgICAgICA6IFN0cmluZ09iamVjdChleGVjLT5nbG9iYWxEYXRhKCksIHN0cnVjdHVyZSwg
c3RyaW5nKQogICAgICAgICB7CiAgICAgICAgIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvU3RyaW5nUHJvdG90eXBlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdQcm90b3R5cGUuY3BwCShyZXZpc2lvbiA5MjM5MykK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ1Byb3RvdHlwZS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTEzMSw4ICsxMzEsOCBAQCBjb25zdCBDbGFzc0luZm8gU3RyaW5nUHJv
dG90eXBlOjpzX2luZm8gCiAqLwogCiAvLyBFQ01BIDE1LjUuNAotU3RyaW5nUHJvdG90eXBlOjpT
dHJpbmdQcm90b3R5cGUoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKLSAgICA6IFN0cmluZ09iamVjdChleGVjLCBzdHJ1
Y3R1cmUpCitTdHJpbmdQcm90b3R5cGU6OlN0cmluZ1Byb3RvdHlwZShFeGVjU3RhdGUqIGV4ZWMs
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBKU1N0
cmluZyogc3RyaW5nKQorICAgIDogU3RyaW5nT2JqZWN0KGV4ZWMtPmdsb2JhbERhdGEoKSwgc3Ry
dWN0dXJlLCBzdHJpbmcpCiB7CiAgICAgQVNTRVJUKGluaGVyaXRzKCZzX2luZm8pKTsKIApJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nUHJvdG90eXBlLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nUHJvdG90eXBlLmgJ
KHJldmlzaW9uIDkyMzkzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5n
UHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTI5LDEyICsyOSwxMyBAQCBuYW1lc3BhY2Ug
SlNDIHsKIAogICAgIGNsYXNzIFN0cmluZ1Byb3RvdHlwZSA6IHB1YmxpYyBTdHJpbmdPYmplY3Qg
ewogICAgIHByaXZhdGU6Ci0gICAgICAgIFN0cmluZ1Byb3RvdHlwZShFeGVjU3RhdGUqLCBKU0ds
b2JhbE9iamVjdCosIFN0cnVjdHVyZSopOworICAgICAgICBTdHJpbmdQcm90b3R5cGUoRXhlY1N0
YXRlKiwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBKU1N0cmluZyopOwogCiAgICAgcHVi
bGljOgogICAgICAgICBzdGF0aWMgU3RyaW5nUHJvdG90eXBlKiBjcmVhdGUoRXhlY1N0YXRlKiBl
eGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkK
ICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIG5ldyAoYWxsb2NhdGVDZWxsPFN0cmluZ1By
b3RvdHlwZT4oKmV4ZWMtPmhlYXAoKSkpIFN0cmluZ1Byb3RvdHlwZShleGVjLCBnbG9iYWxPYmpl
Y3QsIHN0cnVjdHVyZSk7CisgICAgICAgICAgICBKU1N0cmluZyogZW1wdHlTdHJpbmcgPSBqc0Vt
cHR5U3RyaW5nKGV4ZWMpOworICAgICAgICAgICAgcmV0dXJuIG5ldyAoYWxsb2NhdGVDZWxsPFN0
cmluZ1Byb3RvdHlwZT4oKmV4ZWMtPmhlYXAoKSkpIFN0cmluZ1Byb3RvdHlwZShleGVjLCBnbG9i
YWxPYmplY3QsIHN0cnVjdHVyZSwgZW1wdHlTdHJpbmcpOwogICAgICAgICB9CiAKICAgICAgICAg
dmlydHVhbCBib29sIGdldE93blByb3BlcnR5U2xvdChFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlm
aWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlQ2hhaW4uaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVDaGFpbi5oCShyZXZpc2lvbiA5MjM5MykKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUNoYWluLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTQyLDcgKzQyLDExIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBmcmllbmQg
Y2xhc3MgSklUOwogCiAgICAgcHVibGljOgotICAgICAgICBzdGF0aWMgU3RydWN0dXJlQ2hhaW4q
IGNyZWF0ZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFN0cnVjdHVyZSogaGVhZCkgeyByZXR1
cm4gbmV3IChhbGxvY2F0ZUNlbGw8U3RydWN0dXJlQ2hhaW4+KGdsb2JhbERhdGEuaGVhcCkpIFN0
cnVjdHVyZUNoYWluKGdsb2JhbERhdGEsIGdsb2JhbERhdGEuc3RydWN0dXJlQ2hhaW5TdHJ1Y3R1
cmUuZ2V0KCksIGhlYWQpOyB9CisgICAgICAgIHN0YXRpYyBTdHJ1Y3R1cmVDaGFpbiogY3JlYXRl
KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgU3RydWN0dXJlKiBoZWFkKSAKKyAgICAgICAgewor
ICAgICAgICAgICAgcmV0dXJuIG5ldyAoYWxsb2NhdGVDZWxsPFN0cnVjdHVyZUNoYWluPihnbG9i
YWxEYXRhLmhlYXApKSBTdHJ1Y3R1cmVDaGFpbihnbG9iYWxEYXRhLCBnbG9iYWxEYXRhLnN0cnVj
dHVyZUNoYWluU3RydWN0dXJlLmdldCgpLCBoZWFkKTsKKyAgICAgICAgfQorCiAgICAgICAgIFdy
aXRlQmFycmllcjxTdHJ1Y3R1cmU+KiBoZWFkKCkgeyByZXR1cm4gbV92ZWN0b3IuZ2V0KCk7IH0K
ICAgICAgICAgdm9pZCB2aXNpdENoaWxkcmVuKFNsb3RWaXNpdG9yJik7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>102977</attachid>
            <date>2011-08-04 14:10:37 -0700</date>
            <delta_ts>2011-08-19 14:07:32 -0700</delta_ts>
            <desc>Fixing windows again</desc>
            <filename>bug-65288-20110804141035.patch</filename>
            <type>text/plain</type>
            <size>84602</size>
            <attacher name="Mark Hahnenberg">mhahnenberg</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gOTIzOTMpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTIzIEBA
CisyMDExLTA4LTA0ICBNYXJrIEhhaG5lbmJlcmcgIDxtaGFobmVuYmVyZ0BhcHBsZS5jb20+CisK
KyAgICAgICAgQWRkIGNoZWNrcyB0byBlbnN1cmUgYWxsb2NhdGlvbiBkb2VzIG5vdCB0YWtlIHBs
YWNlIGR1cmluZyBpbml0aWFsaXphdGlvbiBvZiBHQy1tYW5hZ2VkIG9iamVjdHMKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY1Mjg4CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVmYWN0b3JpbmcgSlNDIGlu
IHByZXBhcmF0aW9uIGZvciB0aGUgaW5jbHVzaW9uIG9mIHRoZSBhZGRpdGlvbiBvZiBHQyB2YWxp
ZGF0aW9uIGNoZWNrcy4gIAorICAgICAgICBCYXNpY2FsbHkgd2UgcHVsbCBhcyBtdWNoIGFsbG9j
YXRpb24gYXMgd2UgY2FuIG91dCBvZiBjb25zdHJ1Y3RvcnMgaW50byB0aGVpciBzdGF0aWMgY3Jl
YXRlIAorICAgICAgICBtZXRob2RzIHRvIGF2b2lkIGFsbG9jYXRpb24gZHVyaW5nIGluaXRpYWxp
emF0aW9uLCB3aGljaCBjb3VsZCBjYXVzZSBHQyB0byBvY2N1ciB3aGVuIHRoZSAKKyAgICAgICAg
b2JqZWN0IGlzIGluIGFuIHVuZGVmaW5lZCBzdGF0ZS4KKworICAgICAgICAqIEFQSS9KU0NhbGxi
YWNrRnVuY3Rpb24uY3BwOgorICAgICAgICAoSlNDOjpKU0NhbGxiYWNrRnVuY3Rpb246OkpTQ2Fs
bGJhY2tGdW5jdGlvbik6CisgICAgICAgICogQVBJL0pTQ2FsbGJhY2tGdW5jdGlvbi5oOgorICAg
ICAgICAoSlNDOjpKU0NhbGxiYWNrRnVuY3Rpb246OmNyZWF0ZSk6CisgICAgICAgICogSmF2YVNj
cmlwdENvcmUuSlNWQUxVRTY0b25seS5leHA6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUuZXhw
OgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLm9yZGVyOgorICAgICAgICAqIEphdmFTY3JpcHRD
b3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5kZWY6CisgICAgICAgICog
anNjLmNwcDoKKyAgICAgICAgKEdsb2JhbE9iamVjdDo6Y3JlYXRlKToKKyAgICAgICAgKEdsb2Jh
bE9iamVjdDo6R2xvYmFsT2JqZWN0KToKKyAgICAgICAgKiBydW50aW1lL0FycmF5Q29uc3RydWN0
b3IuY3BwOgorICAgICAgICAoSlNDOjpBcnJheUNvbnN0cnVjdG9yOjpBcnJheUNvbnN0cnVjdG9y
KToKKyAgICAgICAgKiBydW50aW1lL0FycmF5Q29uc3RydWN0b3IuaDoKKyAgICAgICAgKEpTQzo6
QXJyYXlDb25zdHJ1Y3Rvcjo6Y3JlYXRlKToKKyAgICAgICAgKiBydW50aW1lL0Jvb2xlYW5Db25z
dHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0M6OkJvb2xlYW5Db25zdHJ1Y3Rvcjo6Qm9vbGVhbkNv
bnN0cnVjdG9yKToKKyAgICAgICAgKiBydW50aW1lL0Jvb2xlYW5Db25zdHJ1Y3Rvci5oOgorICAg
ICAgICAoSlNDOjpCb29sZWFuQ29uc3RydWN0b3I6OmNyZWF0ZSk6CisgICAgICAgICogcnVudGlt
ZS9EYXRlQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAoSlNDOjpEYXRlQ29uc3RydWN0b3I6OkRh
dGVDb25zdHJ1Y3Rvcik6CisgICAgICAgICogcnVudGltZS9EYXRlQ29uc3RydWN0b3IuaDoKKyAg
ICAgICAgKEpTQzo6RGF0ZUNvbnN0cnVjdG9yOjpjcmVhdGUpOgorICAgICAgICAqIHJ1bnRpbWUv
RXJyb3IuY3BwOgorICAgICAgICAoSlNDOjpTdHJpY3RNb2RlVHlwZUVycm9yRnVuY3Rpb246OlN0
cmljdE1vZGVUeXBlRXJyb3JGdW5jdGlvbik6CisgICAgICAgIChKU0M6OlN0cmljdE1vZGVUeXBl
RXJyb3JGdW5jdGlvbjo6Y3JlYXRlKToKKyAgICAgICAgKiBydW50aW1lL0Vycm9yQ29uc3RydWN0
b3IuY3BwOgorICAgICAgICAoSlNDOjpFcnJvckNvbnN0cnVjdG9yOjpFcnJvckNvbnN0cnVjdG9y
KToKKyAgICAgICAgKiBydW50aW1lL0Vycm9yQ29uc3RydWN0b3IuaDoKKyAgICAgICAgKEpTQzo6
RXJyb3JDb25zdHJ1Y3Rvcjo6Y3JlYXRlKToKKyAgICAgICAgKiBydW50aW1lL0Vycm9ySW5zdGFu
Y2UuY3BwOgorICAgICAgICAoSlNDOjpFcnJvckluc3RhbmNlOjpFcnJvckluc3RhbmNlKToKKyAg
ICAgICAgKEpTQzo6RXJyb3JJbnN0YW5jZTo6Y3JlYXRlKToKKyAgICAgICAgKiBydW50aW1lL0Vy
cm9ySW5zdGFuY2UuaDoKKyAgICAgICAgKiBydW50aW1lL0Vycm9yUHJvdG90eXBlLmNwcDoKKyAg
ICAgICAgKEpTQzo6RXJyb3JQcm90b3R5cGU6OkVycm9yUHJvdG90eXBlKToKKyAgICAgICAgKiBy
dW50aW1lL0Vycm9yUHJvdG90eXBlLmg6CisgICAgICAgIChKU0M6OkVycm9yUHJvdG90eXBlOjpj
cmVhdGUpOgorICAgICAgICAqIHJ1bnRpbWUvRXhlY3V0YWJsZS5jcHA6CisgICAgICAgIChKU0M6
OkZ1bmN0aW9uRXhlY3V0YWJsZTo6RnVuY3Rpb25FeGVjdXRhYmxlKToKKyAgICAgICAgKiBydW50
aW1lL0V4ZWN1dGFibGUuaDoKKyAgICAgICAgKEpTQzo6TmF0aXZlRXhlY3V0YWJsZTo6Y3JlYXRl
KToKKyAgICAgICAgKiBydW50aW1lL0Z1bmN0aW9uQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAo
SlNDOjpGdW5jdGlvbkNvbnN0cnVjdG9yOjpGdW5jdGlvbkNvbnN0cnVjdG9yKToKKyAgICAgICAg
KiBydW50aW1lL0Z1bmN0aW9uQ29uc3RydWN0b3IuaDoKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25D
b25zdHJ1Y3Rvcjo6Y3JlYXRlKToKKyAgICAgICAgKiBydW50aW1lL0Z1bmN0aW9uUHJvdG90eXBl
LmNwcDoKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25Qcm90b3R5cGU6OkZ1bmN0aW9uUHJvdG90eXBl
KToKKyAgICAgICAgKiBydW50aW1lL0Z1bmN0aW9uUHJvdG90eXBlLmg6CisgICAgICAgIChKU0M6
OkZ1bmN0aW9uUHJvdG90eXBlOjpjcmVhdGUpOgorICAgICAgICAqIHJ1bnRpbWUvSW50ZXJuYWxG
dW5jdGlvbi5jcHA6CisgICAgICAgIChKU0M6OkludGVybmFsRnVuY3Rpb246OkludGVybmFsRnVu
Y3Rpb24pOgorICAgICAgICAqIHJ1bnRpbWUvSW50ZXJuYWxGdW5jdGlvbi5oOgorICAgICAgICAo
SlNDOjpJbnRlcm5hbEZ1bmN0aW9uOjppbml0UHJvcGVydGllcyk6CisgICAgICAgICogcnVudGlt
ZS9KU0J5dGVBcnJheS5jcHA6CisgICAgICAgIChKU0M6OkpTQnl0ZUFycmF5OjpKU0J5dGVBcnJh
eSk6CisgICAgICAgIChKU0M6OkpTQnl0ZUFycmF5OjpjcmVhdGUpOgorICAgICAgICAqIHJ1bnRp
bWUvSlNDZWxsLmg6CisgICAgICAgICogcnVudGltZS9KU0Z1bmN0aW9uLmNwcDoKKyAgICAgICAg
KEpTQzo6SlNGdW5jdGlvbjo6SlNGdW5jdGlvbik6CisgICAgICAgIChKU0M6OkpTRnVuY3Rpb246
OmNyZWF0ZSk6CisgICAgICAgICogcnVudGltZS9KU0Z1bmN0aW9uLmg6CisgICAgICAgICogcnVu
dGltZS9KU0dsb2JhbE9iamVjdC5oOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6Y3Jl
YXRlKToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OkpTR2xvYmFsT2JqZWN0KToKKyAg
ICAgICAgKiBydW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuY3BwOgorICAgICAgICAoSlND
OjpKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yOjpKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yKToKKyAgICAg
ICAgKEpTQzo6SlNQcm9wZXJ0eU5hbWVJdGVyYXRvcjo6Y3JlYXRlKToKKyAgICAgICAgKiBydW50
aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuaDoKKyAgICAgICAgKEpTQzo6SlNQcm9wZXJ0eU5h
bWVJdGVyYXRvcjo6Y3JlYXRlKToKKyAgICAgICAgKiBydW50aW1lL05hdGl2ZUVycm9yQ29uc3Ry
dWN0b3IuY3BwOgorICAgICAgICAoSlNDOjpOYXRpdmVFcnJvckNvbnN0cnVjdG9yOjpOYXRpdmVF
cnJvckNvbnN0cnVjdG9yKToKKyAgICAgICAgKEpTQzo6TmF0aXZlRXJyb3JDb25zdHJ1Y3Rvcjo6
Y3JlYXRlKToKKyAgICAgICAgKiBydW50aW1lL05hdGl2ZUVycm9yQ29uc3RydWN0b3IuaDoKKyAg
ICAgICAgKiBydW50aW1lL05hdGl2ZUVycm9yUHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6
TmF0aXZlRXJyb3JQcm90b3R5cGU6Ok5hdGl2ZUVycm9yUHJvdG90eXBlKToKKyAgICAgICAgKiBy
dW50aW1lL05hdGl2ZUVycm9yUHJvdG90eXBlLmg6CisgICAgICAgIChKU0M6Ok5hdGl2ZUVycm9y
UHJvdG90eXBlOjpjcmVhdGUpOgorICAgICAgICAqIHJ1bnRpbWUvTnVtYmVyQ29uc3RydWN0b3Iu
Y3BwOgorICAgICAgICAoSlNDOjpOdW1iZXJDb25zdHJ1Y3Rvcjo6TnVtYmVyQ29uc3RydWN0b3Ip
OgorICAgICAgICAqIHJ1bnRpbWUvTnVtYmVyQ29uc3RydWN0b3IuaDoKKyAgICAgICAgKEpTQzo6
TnVtYmVyQ29uc3RydWN0b3I6OmNyZWF0ZSk6CisgICAgICAgICogcnVudGltZS9PYmplY3RDb25z
dHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0M6Ok9iamVjdENvbnN0cnVjdG9yOjpPYmplY3RDb25z
dHJ1Y3Rvcik6CisgICAgICAgICogcnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5oOgorICAgICAg
ICAoSlNDOjpPYmplY3RDb25zdHJ1Y3Rvcjo6Y3JlYXRlKToKKyAgICAgICAgKiBydW50aW1lL1Jl
Z0V4cENvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6UmVnRXhwQ29uc3RydWN0b3I6OlJl
Z0V4cENvbnN0cnVjdG9yKToKKyAgICAgICAgKiBydW50aW1lL1JlZ0V4cENvbnN0cnVjdG9yLmg6
CisgICAgICAgIChKU0M6OlJlZ0V4cENvbnN0cnVjdG9yOjpjcmVhdGUpOgorICAgICAgICAqIHJ1
bnRpbWUvUmVnRXhwTWF0Y2hlc0FycmF5Lmg6CisgICAgICAgICogcnVudGltZS9TdHJpbmdDb25z
dHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0M6OlN0cmluZ0NvbnN0cnVjdG9yOjpTdHJpbmdDb25z
dHJ1Y3Rvcik6CisgICAgICAgICogcnVudGltZS9TdHJpbmdDb25zdHJ1Y3Rvci5oOgorICAgICAg
ICAoSlNDOjpTdHJpbmdDb25zdHJ1Y3Rvcjo6Y3JlYXRlKToKKyAgICAgICAgKiBydW50aW1lL1N0
cmluZ09iamVjdC5jcHA6CisgICAgICAgICogcnVudGltZS9TdHJpbmdPYmplY3QuaDoKKyAgICAg
ICAgKEpTQzo6U3RyaW5nT2JqZWN0OjpjcmVhdGUpOgorICAgICAgICAqIHJ1bnRpbWUvU3RyaW5n
T2JqZWN0VGhhdE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQuaDoKKyAgICAgICAgKEpTQzo6U3RyaW5n
T2JqZWN0VGhhdE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQ6OmNyZWF0ZSk6CisgICAgICAgIChKU0M6
OlN0cmluZ09iamVjdFRoYXRNYXNxdWVyYWRlc0FzVW5kZWZpbmVkOjpTdHJpbmdPYmplY3RUaGF0
TWFzcXVlcmFkZXNBc1VuZGVmaW5lZCk6CisgICAgICAgICogcnVudGltZS9TdHJpbmdQcm90b3R5
cGUuY3BwOgorICAgICAgICAoSlNDOjpTdHJpbmdQcm90b3R5cGU6OlN0cmluZ1Byb3RvdHlwZSk6
CisgICAgICAgICogcnVudGltZS9TdHJpbmdQcm90b3R5cGUuaDoKKyAgICAgICAgKEpTQzo6U3Ry
aW5nUHJvdG90eXBlOjpjcmVhdGUpOgorICAgICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlQ2hhaW4u
aDoKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlQ2hhaW46OmNyZWF0ZSk6CisKIDIwMTEtMDgtMDQg
IE1hcmsgSGFobmVuYmVyZyAgPG1oYWhuZW5iZXJnQGFwcGxlLmNvbT4KIAogICAgICAgICBJbnRl
cnByZXRlciBjYW4gcG90ZW50aWFsbHkgR0MgaW4gdGhlIG1pZGRsZSBvZiBpbml0aWFsaXppbmcg
YSBzdHJ1Y3R1cmUgY2hhaW4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291
cmNlcy5tYWtlCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291
cmNlcy5tYWtlCShyZXZpc2lvbiA5MjM5MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJp
dmVkU291cmNlcy5tYWtlCSh3b3JraW5nIGNvcHkpCkBAIC04NSw3ICs4NSw3IEBAIEtleXdvcmRM
b29rdXAuaDogS2V5d29yZExvb2t1cEdlbmVyYXRvci4KIEphdmFTY3JpcHRDb3JlLkpTVkFMVUUz
Ml82NC5leHA6IEphdmFTY3JpcHRDb3JlLmV4cCBKYXZhU2NyaXB0Q29yZS5KU1ZBTFVFMzJfNjRv
bmx5LmV4cAogCWNhdCAkXiA+ICRACiAKLUphdmFTY3JpcHRDb3JlLkpTVkFMVUU2NC5leHA6IEph
dmFTY3JpcHRDb3JlLmV4cCBKYXZhU2NyaXB0Q29yZS5KU1ZBTFVFNjRvbmx5LmV4cAorSmF2YVNj
cmlwdENvcmUuSlNWQUxVRTY0LmV4cDogSmF2YVNjcmlwdENvcmUuZXhwCiAJY2F0ICReID4gJEAK
IAogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuSlNWQUxVRTY0
b25seS5leHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRD
b3JlLkpTVkFMVUU2NG9ubHkuZXhwCShyZXZpc2lvbiA5MjM5MykKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5KU1ZBTFVFNjRvbmx5LmV4cAkod29ya2luZyBjb3B5KQpA
QCAtMSArMCwwIEBACi1fX1pOM0pTQzEwSlNGdW5jdGlvbkMxRVBOU185RXhlY1N0YXRlRVBOU18x
NEpTR2xvYmFsT2JqZWN0RVBOU185U3RydWN0dXJlRWlSS05TXzEwSWRlbnRpZmllckVQRlB2UzJf
RQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmV4cAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZXhwCShyZXZpc2lv
biA5MjM5MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5leHAJKHdv
cmtpbmcgY29weSkKQEAgLTExMSw2ICsxMTEsNyBAQCBfX1pOM0pTQzEwSWRlbnRpZmllcjRmcm9t
RVBOU185RXhlY1N0YXRlCiBfX1pOM0pTQzEwSWRlbnRpZmllcjVlcXVhbEVQS04zV1RGMTBTdHJp
bmdJbXBsRVBLYwogX19aTjNKU0MxMElkZW50aWZpZXI4dG9VSW50MzJFUktOU183VVN0cmluZ0VS
YgogX19aTjNKU0MxMEpTRnVuY3Rpb240bmFtZUVQTlNfOUV4ZWNTdGF0ZUUKK19fWk4zSlNDMTBK
U0Z1bmN0aW9uNmNyZWF0ZUVQTlNfOUV4ZWNTdGF0ZUVQTlNfMTRKU0dsb2JhbE9iamVjdEVQTlNf
OVN0cnVjdHVyZUVpUktOU18xMElkZW50aWZpZXJFUEZQdlMyX0UKIF9fWk4zSlNDMTBKU0Z1bmN0
aW9uNnNfaW5mb0UKIF9fWk4zSlNDMTB0aHJvd0Vycm9yRVBOU185RXhlY1N0YXRlRU5TXzdKU1Zh
bHVlRQogX19aTjNKU0MxMHRocm93RXJyb3JFUE5TXzlFeGVjU3RhdGVFUE5TXzhKU09iamVjdEUK
QEAgLTE1MSw3ICsxNTIsNyBAQCBfX1pOM0pTQzEyU3RyaW5nT2JqZWN0MTlnZXRPd25Qcm9wZXJ0
eU5hCiBfX1pOM0pTQzEyU3RyaW5nT2JqZWN0MjRnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JFUE5T
XzlFeGVjU3RhdGVFUktOU18xMElkZW50aWZpZXJFUk5TXzE4UHJvcGVydHlEZXNjcmlwdG9yRQog
X19aTjNKU0MxMlN0cmluZ09iamVjdDNwdXRFUE5TXzlFeGVjU3RhdGVFUktOU18xMElkZW50aWZp
ZXJFTlNfN0pTVmFsdWVFUk5TXzE1UHV0UHJvcGVydHlTbG90RQogX19aTjNKU0MxMlN0cmluZ09i
amVjdDZzX2luZm9FCi1fX1pOM0pTQzEyU3RyaW5nT2JqZWN0QzJFUE5TXzlFeGVjU3RhdGVFUE5T
XzlTdHJ1Y3R1cmVFUktOU183VVN0cmluZ0UKK19fWk4zSlNDMTJTdHJpbmdPYmplY3RDMkVSTlNf
MTJKU0dsb2JhbERhdGFFUE5TXzlTdHJ1Y3R1cmVFUE5TXzhKU1N0cmluZ0UKIF9fWk4zSlNDMTNT
YW1wbGluZ0ZsYWdzNHN0b3BFdgogX19aTjNKU0MxM1NhbXBsaW5nRmxhZ3M1c3RhcnRFdgogX19a
TjNKU0MxM1NhbXBsaW5nRmxhZ3M3c19mbGFnc0UKQEAgLTE4NCw2ICsxODUsNyBAQCBfX1pOM0pT
QzE2SW50ZXJuYWxGdW5jdGlvbjEydnRhYmxlQW5jaG9yCiBfX1pOM0pTQzE2SW50ZXJuYWxGdW5j
dGlvbjRuYW1lRVBOU185RXhlY1N0YXRlRQogX19aTjNKU0MxNkludGVybmFsRnVuY3Rpb242c19p
bmZvRQogX19aTjNKU0MxNkludGVybmFsRnVuY3Rpb25DMkVQTlNfMTJKU0dsb2JhbERhdGFFUE5T
XzE0SlNHbG9iYWxPYmplY3RFUE5TXzlTdHJ1Y3R1cmVFUktOU18xMElkZW50aWZpZXJFCitfX1pO
M0pTQzE2SW50ZXJuYWxGdW5jdGlvbkMyRVBOU18xNEpTR2xvYmFsT2JqZWN0RVBOU185U3RydWN0
dXJlRQogX19aTjNKU0MxNkpTVmFyaWFibGVPYmplY3QxNGRlbGV0ZVByb3BlcnR5RVBOU185RXhl
Y1N0YXRlRVJLTlNfMTBJZGVudGlmaWVyRQogX19aTjNKU0MxNkpTVmFyaWFibGVPYmplY3QxNHN5
bWJvbFRhYmxlR2V0RVJLTlNfMTBJZGVudGlmaWVyRVJOU18xOFByb3BlcnR5RGVzY3JpcHRvckUK
IF9fWk4zSlNDMTZKU1ZhcmlhYmxlT2JqZWN0MTlnZXRPd25Qcm9wZXJ0eU5hbWVzRVBOU185RXhl
Y1N0YXRlRVJOU18xN1Byb3BlcnR5TmFtZUFycmF5RU5TXzE1RW51bWVyYXRpb25Nb2RlRQpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLm9yZGVyCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5vcmRlcgkocmV2aXNpb24g
OTIzOTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUub3JkZXIJKHdv
cmtpbmcgY29weSkKQEAgLTIyNSw3ICsyMjUsNiBAQCBfX1pOM0pTQzI0U3RydWN0dXJlVHJhbnNp
dGlvblRhYmxlM2FkZEVSCiBfX1pOM0pTQzlTdHJ1Y3R1cmUyOGFkZFByb3BlcnR5V2l0aG91dFRy
YW5zaXRpb25FUk5TXzEySlNHbG9iYWxEYXRhRVJLTlNfMTBJZGVudGlmaWVyRWpQTlNfNkpTQ2Vs
bEUKIF9fWk4zSlNDOEpTT2JqZWN0MjNhbGxvY2F0ZVByb3BlcnR5U3RvcmFnZUVtbQogX19aTjNK
U0MxN0Z1bmN0aW9uUHJvdG90eXBlMjFhZGRGdW5jdGlvblByb3BlcnRpZXNFUE5TXzlFeGVjU3Rh
dGVFUE5TXzE0SlNHbG9iYWxPYmplY3RFUE5TXzlTdHJ1Y3R1cmVFUFBOU18xMEpTRnVuY3Rpb25F
UzlfCi1fX1pOM0pTQzEwSlNGdW5jdGlvbkMxRVBOU185RXhlY1N0YXRlRVBOU18xNEpTR2xvYmFs
T2JqZWN0RVBOU185U3RydWN0dXJlRWlSS05TXzEwSWRlbnRpZmllckVQRlB2UzJfRQogX19aTjNK
U0MxMEpTRnVuY3Rpb25DMkVQTlNfOUV4ZWNTdGF0ZUVQTlNfMTRKU0dsb2JhbE9iamVjdEVQTlNf
OVN0cnVjdHVyZUVpUktOU18xMElkZW50aWZpZXJFUEZQdlMyX0UKIF9fWk4zSlNDMTJKU0dsb2Jh
bERhdGExNWdldEhvc3RGdW5jdGlvbkVQRlB2UE5TXzlFeGVjU3RhdGVFRQogX19aTjNKU0M5SklU
VGh1bmtzMTZob3N0RnVuY3Rpb25TdHViRVBOU18xMkpTR2xvYmFsRGF0YUVQRlB2UE5TXzlFeGVj
U3RhdGVFRQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAJKHJldmlzaW9uIDkyMzkzKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0NSw0NCArMTQ1
LDQ2IEBAIGxvbmcgU3RvcFdhdGNoOjpnZXRFbGFwc2VkTVMoKQogCiBjbGFzcyBHbG9iYWxPYmpl
Y3QgOiBwdWJsaWMgSlNHbG9iYWxPYmplY3QgewogcHJpdmF0ZToKLSAgICBHbG9iYWxPYmplY3Qo
SlNHbG9iYWxEYXRhJiwgU3RydWN0dXJlKiwgY29uc3QgVmVjdG9yPFVTdHJpbmc+JiBhcmd1bWVu
dHMpOworICAgIEdsb2JhbE9iamVjdChKU0dsb2JhbERhdGEmLCBTdHJ1Y3R1cmUqKTsKIAogcHVi
bGljOgogICAgIHN0YXRpYyBHbG9iYWxPYmplY3QqIGNyZWF0ZShKU0dsb2JhbERhdGEmIGdsb2Jh
bERhdGEsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBjb25zdCBWZWN0b3I8VVN0cmluZz4mIGFyZ3Vt
ZW50cykKICAgICB7Ci0gICAgICAgIHJldHVybiBuZXcgKGFsbG9jYXRlQ2VsbDxHbG9iYWxPYmpl
Y3Q+KGdsb2JhbERhdGEuaGVhcCkpIEdsb2JhbE9iamVjdChnbG9iYWxEYXRhLCBzdHJ1Y3R1cmUs
IGFyZ3VtZW50cyk7CisgICAgICAgIEdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbmV3IChh
bGxvY2F0ZUNlbGw8R2xvYmFsT2JqZWN0PihnbG9iYWxEYXRhLmhlYXApKSBHbG9iYWxPYmplY3Qo
Z2xvYmFsRGF0YSwgc3RydWN0dXJlKTsKKyAgICAgICAgZ2xvYmFsT2JqZWN0LT5pbml0KGdsb2Jh
bE9iamVjdCk7CisgICAgICAgIGdsb2JhbE9iamVjdC0+cHV0RGlyZWN0RnVuY3Rpb24oZ2xvYmFs
T2JqZWN0LT5nbG9iYWxFeGVjKCksIEpTRnVuY3Rpb246OmNyZWF0ZShnbG9iYWxPYmplY3QtPmds
b2JhbEV4ZWMoKSwgZ2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QtPmZ1bmN0aW9uU3RydWN0dXJl
KCksIDEsIElkZW50aWZpZXIoZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCksICJkZWJ1ZyIpLCBm
dW5jdGlvbkRlYnVnKSk7CisgICAgICAgIGdsb2JhbE9iamVjdC0+cHV0RGlyZWN0RnVuY3Rpb24o
Z2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCksIEpTRnVuY3Rpb246OmNyZWF0ZShnbG9iYWxPYmpl
Y3QtPmdsb2JhbEV4ZWMoKSwgZ2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QtPmZ1bmN0aW9uU3Ry
dWN0dXJlKCksIDEsIElkZW50aWZpZXIoZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCksICJwcmlu
dCIpLCBmdW5jdGlvblByaW50KSk7CisgICAgICAgIGdsb2JhbE9iamVjdC0+cHV0RGlyZWN0RnVu
Y3Rpb24oZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCksIEpTRnVuY3Rpb246OmNyZWF0ZShnbG9i
YWxPYmplY3QtPmdsb2JhbEV4ZWMoKSwgZ2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QtPmZ1bmN0
aW9uU3RydWN0dXJlKCksIDAsIElkZW50aWZpZXIoZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCks
ICJxdWl0IiksIGZ1bmN0aW9uUXVpdCkpOworICAgICAgICBnbG9iYWxPYmplY3QtPnB1dERpcmVj
dEZ1bmN0aW9uKGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpLCBKU0Z1bmN0aW9uOjpjcmVhdGUo
Z2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCksIGdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LT5m
dW5jdGlvblN0cnVjdHVyZSgpLCAwLCBJZGVudGlmaWVyKGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhl
YygpLCAiZ2MiKSwgZnVuY3Rpb25HQykpOworI2lmbmRlZiBOREVCVUcKKyAgICAgICAgZ2xvYmFs
T2JqZWN0LT5wdXREaXJlY3RGdW5jdGlvbihnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSwgSlNG
dW5jdGlvbjo6Y3JlYXRlKGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpLCBnbG9iYWxPYmplY3Qs
IGdsb2JhbE9iamVjdC0+ZnVuY3Rpb25TdHJ1Y3R1cmUoKSwgMCwgSWRlbnRpZmllcihnbG9iYWxP
YmplY3QtPmdsb2JhbEV4ZWMoKSwgInJlbGVhc2VFeGVjdXRhYmxlTWVtb3J5IiksIGZ1bmN0aW9u
UmVsZWFzZUV4ZWN1dGFibGVNZW1vcnkpKTsKKyNlbmRpZgorICAgICAgICBnbG9iYWxPYmplY3Qt
PnB1dERpcmVjdEZ1bmN0aW9uKGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpLCBKU0Z1bmN0aW9u
OjpjcmVhdGUoZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCksIGdsb2JhbE9iamVjdCwgZ2xvYmFs
T2JqZWN0LT5mdW5jdGlvblN0cnVjdHVyZSgpLCAxLCBJZGVudGlmaWVyKGdsb2JhbE9iamVjdC0+
Z2xvYmFsRXhlYygpLCAidmVyc2lvbiIpLCBmdW5jdGlvblZlcnNpb24pKTsKKyAgICAgICAgZ2xv
YmFsT2JqZWN0LT5wdXREaXJlY3RGdW5jdGlvbihnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSwg
SlNGdW5jdGlvbjo6Y3JlYXRlKGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpLCBnbG9iYWxPYmpl
Y3QsIGdsb2JhbE9iamVjdC0+ZnVuY3Rpb25TdHJ1Y3R1cmUoKSwgMSwgSWRlbnRpZmllcihnbG9i
YWxPYmplY3QtPmdsb2JhbEV4ZWMoKSwgInJ1biIpLCBmdW5jdGlvblJ1bikpOworICAgICAgICBn
bG9iYWxPYmplY3QtPnB1dERpcmVjdEZ1bmN0aW9uKGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygp
LCBKU0Z1bmN0aW9uOjpjcmVhdGUoZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCksIGdsb2JhbE9i
amVjdCwgZ2xvYmFsT2JqZWN0LT5mdW5jdGlvblN0cnVjdHVyZSgpLCAxLCBJZGVudGlmaWVyKGds
b2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpLCAibG9hZCIpLCBmdW5jdGlvbkxvYWQpKTsKKyAgICAg
ICAgZ2xvYmFsT2JqZWN0LT5wdXREaXJlY3RGdW5jdGlvbihnbG9iYWxPYmplY3QtPmdsb2JhbEV4
ZWMoKSwgSlNGdW5jdGlvbjo6Y3JlYXRlKGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpLCBnbG9i
YWxPYmplY3QsIGdsb2JhbE9iamVjdC0+ZnVuY3Rpb25TdHJ1Y3R1cmUoKSwgMSwgSWRlbnRpZmll
cihnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSwgImNoZWNrU3ludGF4IiksIGZ1bmN0aW9uQ2hl
Y2tTeW50YXgpKTsKKyAgICAgICAgZ2xvYmFsT2JqZWN0LT5wdXREaXJlY3RGdW5jdGlvbihnbG9i
YWxPYmplY3QtPmdsb2JhbEV4ZWMoKSwgSlNGdW5jdGlvbjo6Y3JlYXRlKGdsb2JhbE9iamVjdC0+
Z2xvYmFsRXhlYygpLCBnbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdC0+ZnVuY3Rpb25TdHJ1Y3R1
cmUoKSwgMCwgSWRlbnRpZmllcihnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSwgInJlYWRsaW5l
IiksIGZ1bmN0aW9uUmVhZGxpbmUpKTsKKyAgICAgICAgZ2xvYmFsT2JqZWN0LT5wdXREaXJlY3RG
dW5jdGlvbihnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSwgSlNGdW5jdGlvbjo6Y3JlYXRlKGds
b2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpLCBnbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdC0+ZnVu
Y3Rpb25TdHJ1Y3R1cmUoKSwgMCwgSWRlbnRpZmllcihnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMo
KSwgInByZWNpc2VUaW1lIiksIGZ1bmN0aW9uUHJlY2lzZVRpbWUpKTsKKworI2lmIEVOQUJMRShT
QU1QTElOR19GTEFHUykKKyAgICAgICAgZ2xvYmFsT2JqZWN0LT5wdXREaXJlY3RGdW5jdGlvbihn
bG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSwgSlNGdW5jdGlvbjo6Y3JlYXRlKGdsb2JhbE9iamVj
dC0+Z2xvYmFsRXhlYygpLCBnbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdC0+ZnVuY3Rpb25TdHJ1
Y3R1cmUoKSwgMSwgSWRlbnRpZmllcihnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSwgInNldFNh
bXBsaW5nRmxhZ3MiKSwgZnVuY3Rpb25TZXRTYW1wbGluZ0ZsYWdzKSk7CisgICAgICAgIGdsb2Jh
bE9iamVjdC0+cHV0RGlyZWN0RnVuY3Rpb24oZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCksIEpT
RnVuY3Rpb246OmNyZWF0ZShnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSwgZ2xvYmFsT2JqZWN0
LCBnbG9iYWxPYmplY3QtPmZ1bmN0aW9uU3RydWN0dXJlKCksIDEsIElkZW50aWZpZXIoZ2xvYmFs
T2JqZWN0LT5nbG9iYWxFeGVjKCksICJjbGVhclNhbXBsaW5nRmxhZ3MiKSwgZnVuY3Rpb25DbGVh
clNhbXBsaW5nRmxhZ3MpKTsKKyNlbmRpZgorCisgICAgICAgIEpTT2JqZWN0KiBhcnJheSA9IGNv
bnN0cnVjdEVtcHR5QXJyYXkoZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCkpOworICAgICAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IGFyZ3VtZW50cy5zaXplKCk7ICsraSkKKyAgICAgICAgICAg
IGFycmF5LT5wdXQoZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCksIGksIGpzU3RyaW5nKGdsb2Jh
bE9iamVjdC0+Z2xvYmFsRXhlYygpLCBhcmd1bWVudHNbaV0pKTsKKyAgICAgICAgZ2xvYmFsT2Jq
ZWN0LT5wdXREaXJlY3QoZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCktPmdsb2JhbERhdGEoKSwg
SWRlbnRpZmllcihnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSwgImFyZ3VtZW50cyIpLCBhcnJh
eSk7CisgICAgICAgIHJldHVybiBnbG9iYWxPYmplY3Q7CiAgICAgfQogICAgIHZpcnR1YWwgVVN0
cmluZyBjbGFzc05hbWUoKSBjb25zdCB7IHJldHVybiAiZ2xvYmFsIjsgfQogfTsKIENPTVBJTEVf
QVNTRVJUKCFJc0ludGVnZXI8R2xvYmFsT2JqZWN0Pjo6dmFsdWUsIFdURl9Jc0ludGVnZXJfR2xv
YmFsT2JqZWN0X2ZhbHNlKTsKIEFTU0VSVF9DTEFTU19GSVRTX0lOX0NFTEwoR2xvYmFsT2JqZWN0
KTsKIAotR2xvYmFsT2JqZWN0OjpHbG9iYWxPYmplY3QoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRh
LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgY29uc3QgVmVjdG9yPFVTdHJpbmc+JiBhcmd1bWVudHMp
CitHbG9iYWxPYmplY3Q6Okdsb2JhbE9iamVjdChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFN0
cnVjdHVyZSogc3RydWN0dXJlKQogICAgIDogSlNHbG9iYWxPYmplY3QoZ2xvYmFsRGF0YSwgc3Ry
dWN0dXJlKQogewotICAgIHB1dERpcmVjdEZ1bmN0aW9uKGdsb2JhbEV4ZWMoKSwgSlNGdW5jdGlv
bjo6Y3JlYXRlKGdsb2JhbEV4ZWMoKSwgdGhpcywgZnVuY3Rpb25TdHJ1Y3R1cmUoKSwgMSwgSWRl
bnRpZmllcihnbG9iYWxFeGVjKCksICJkZWJ1ZyIpLCBmdW5jdGlvbkRlYnVnKSk7Ci0gICAgcHV0
RGlyZWN0RnVuY3Rpb24oZ2xvYmFsRXhlYygpLCBKU0Z1bmN0aW9uOjpjcmVhdGUoZ2xvYmFsRXhl
YygpLCB0aGlzLCBmdW5jdGlvblN0cnVjdHVyZSgpLCAxLCBJZGVudGlmaWVyKGdsb2JhbEV4ZWMo
KSwgInByaW50IiksIGZ1bmN0aW9uUHJpbnQpKTsKLSAgICBwdXREaXJlY3RGdW5jdGlvbihnbG9i
YWxFeGVjKCksIEpTRnVuY3Rpb246OmNyZWF0ZShnbG9iYWxFeGVjKCksIHRoaXMsIGZ1bmN0aW9u
U3RydWN0dXJlKCksIDAsIElkZW50aWZpZXIoZ2xvYmFsRXhlYygpLCAicXVpdCIpLCBmdW5jdGlv
blF1aXQpKTsKLSAgICBwdXREaXJlY3RGdW5jdGlvbihnbG9iYWxFeGVjKCksIEpTRnVuY3Rpb246
OmNyZWF0ZShnbG9iYWxFeGVjKCksIHRoaXMsIGZ1bmN0aW9uU3RydWN0dXJlKCksIDAsIElkZW50
aWZpZXIoZ2xvYmFsRXhlYygpLCAiZ2MiKSwgZnVuY3Rpb25HQykpOwotI2lmbmRlZiBOREVCVUcK
LSAgICBwdXREaXJlY3RGdW5jdGlvbihnbG9iYWxFeGVjKCksIEpTRnVuY3Rpb246OmNyZWF0ZShn
bG9iYWxFeGVjKCksIHRoaXMsIGZ1bmN0aW9uU3RydWN0dXJlKCksIDAsIElkZW50aWZpZXIoZ2xv
YmFsRXhlYygpLCAicmVsZWFzZUV4ZWN1dGFibGVNZW1vcnkiKSwgZnVuY3Rpb25SZWxlYXNlRXhl
Y3V0YWJsZU1lbW9yeSkpOwotI2VuZGlmCi0gICAgcHV0RGlyZWN0RnVuY3Rpb24oZ2xvYmFsRXhl
YygpLCBKU0Z1bmN0aW9uOjpjcmVhdGUoZ2xvYmFsRXhlYygpLCB0aGlzLCBmdW5jdGlvblN0cnVj
dHVyZSgpLCAxLCBJZGVudGlmaWVyKGdsb2JhbEV4ZWMoKSwgInZlcnNpb24iKSwgZnVuY3Rpb25W
ZXJzaW9uKSk7Ci0gICAgcHV0RGlyZWN0RnVuY3Rpb24oZ2xvYmFsRXhlYygpLCBKU0Z1bmN0aW9u
OjpjcmVhdGUoZ2xvYmFsRXhlYygpLCB0aGlzLCBmdW5jdGlvblN0cnVjdHVyZSgpLCAxLCBJZGVu
dGlmaWVyKGdsb2JhbEV4ZWMoKSwgInJ1biIpLCBmdW5jdGlvblJ1bikpOwotICAgIHB1dERpcmVj
dEZ1bmN0aW9uKGdsb2JhbEV4ZWMoKSwgSlNGdW5jdGlvbjo6Y3JlYXRlKGdsb2JhbEV4ZWMoKSwg
dGhpcywgZnVuY3Rpb25TdHJ1Y3R1cmUoKSwgMSwgSWRlbnRpZmllcihnbG9iYWxFeGVjKCksICJs
b2FkIiksIGZ1bmN0aW9uTG9hZCkpOwotICAgIHB1dERpcmVjdEZ1bmN0aW9uKGdsb2JhbEV4ZWMo
KSwgSlNGdW5jdGlvbjo6Y3JlYXRlKGdsb2JhbEV4ZWMoKSwgdGhpcywgZnVuY3Rpb25TdHJ1Y3R1
cmUoKSwgMSwgSWRlbnRpZmllcihnbG9iYWxFeGVjKCksICJjaGVja1N5bnRheCIpLCBmdW5jdGlv
bkNoZWNrU3ludGF4KSk7Ci0gICAgcHV0RGlyZWN0RnVuY3Rpb24oZ2xvYmFsRXhlYygpLCBKU0Z1
bmN0aW9uOjpjcmVhdGUoZ2xvYmFsRXhlYygpLCB0aGlzLCBmdW5jdGlvblN0cnVjdHVyZSgpLCAw
LCBJZGVudGlmaWVyKGdsb2JhbEV4ZWMoKSwgInJlYWRsaW5lIiksIGZ1bmN0aW9uUmVhZGxpbmUp
KTsKLSAgICBwdXREaXJlY3RGdW5jdGlvbihnbG9iYWxFeGVjKCksIEpTRnVuY3Rpb246OmNyZWF0
ZShnbG9iYWxFeGVjKCksIHRoaXMsIGZ1bmN0aW9uU3RydWN0dXJlKCksIDAsIElkZW50aWZpZXIo
Z2xvYmFsRXhlYygpLCAicHJlY2lzZVRpbWUiKSwgZnVuY3Rpb25QcmVjaXNlVGltZSkpOwotCi0j
aWYgRU5BQkxFKFNBTVBMSU5HX0ZMQUdTKQotICAgIHB1dERpcmVjdEZ1bmN0aW9uKGdsb2JhbEV4
ZWMoKSwgSlNGdW5jdGlvbjo6Y3JlYXRlKGdsb2JhbEV4ZWMoKSwgdGhpcywgZnVuY3Rpb25TdHJ1
Y3R1cmUoKSwgMSwgSWRlbnRpZmllcihnbG9iYWxFeGVjKCksICJzZXRTYW1wbGluZ0ZsYWdzIiks
IGZ1bmN0aW9uU2V0U2FtcGxpbmdGbGFncykpOwotICAgIHB1dERpcmVjdEZ1bmN0aW9uKGdsb2Jh
bEV4ZWMoKSwgSlNGdW5jdGlvbjo6Y3JlYXRlKGdsb2JhbEV4ZWMoKSwgdGhpcywgZnVuY3Rpb25T
dHJ1Y3R1cmUoKSwgMSwgSWRlbnRpZmllcihnbG9iYWxFeGVjKCksICJjbGVhclNhbXBsaW5nRmxh
Z3MiKSwgZnVuY3Rpb25DbGVhclNhbXBsaW5nRmxhZ3MpKTsKLSNlbmRpZgotCi0gICAgSlNPYmpl
Y3QqIGFycmF5ID0gY29uc3RydWN0RW1wdHlBcnJheShnbG9iYWxFeGVjKCkpOwotICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgYXJndW1lbnRzLnNpemUoKTsgKytpKQotICAgICAgICBhcnJheS0+
cHV0KGdsb2JhbEV4ZWMoKSwgaSwganNTdHJpbmcoZ2xvYmFsRXhlYygpLCBhcmd1bWVudHNbaV0p
KTsKLSAgICBwdXREaXJlY3QoZ2xvYmFsRXhlYygpLT5nbG9iYWxEYXRhKCksIElkZW50aWZpZXIo
Z2xvYmFsRXhlYygpLCAiYXJndW1lbnRzIiksIGFycmF5KTsKIH0KIAogRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBmdW5jdGlvblByaW50KEV4ZWNTdGF0ZSogZXhlYykKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja0Z1bmN0aW9uLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tGdW5jdGlvbi5jcHAJKHJldmlz
aW9uIDkyMzkzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrRnVuY3Rp
b24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Miw4ICs0Miw4IEBAIEFTU0VSVF9DTEFTU19GSVRT
X0lOX0NFTEwoSlNDYWxsYmFja0Z1bmMKIAogY29uc3QgQ2xhc3NJbmZvIEpTQ2FsbGJhY2tGdW5j
dGlvbjo6c19pbmZvID0geyAiQ2FsbGJhY2tGdW5jdGlvbiIsICZJbnRlcm5hbEZ1bmN0aW9uOjpz
X2luZm8sIDAsIDAgfTsKIAotSlNDYWxsYmFja0Z1bmN0aW9uOjpKU0NhbGxiYWNrRnVuY3Rpb24o
RXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU09iamVjdENh
bGxBc0Z1bmN0aW9uQ2FsbGJhY2sgY2FsbGJhY2ssIGNvbnN0IElkZW50aWZpZXImIG5hbWUpCi0g
ICAgOiBJbnRlcm5hbEZ1bmN0aW9uKCZleGVjLT5nbG9iYWxEYXRhKCksIGdsb2JhbE9iamVjdCwg
Z2xvYmFsT2JqZWN0LT5jYWxsYmFja0Z1bmN0aW9uU3RydWN0dXJlKCksIG5hbWUpCitKU0NhbGxi
YWNrRnVuY3Rpb246OkpTQ2FsbGJhY2tGdW5jdGlvbihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBKU09iamVjdENhbGxBc0Z1bmN0aW9uQ2FsbGJhY2sgY2FsbGJhY2spCisgICAgOiBJbnRl
cm5hbEZ1bmN0aW9uKGdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LT5jYWxsYmFja0Z1bmN0aW9u
U3RydWN0dXJlKCkpCiAgICAgLCBtX2NhbGxiYWNrKGNhbGxiYWNrKQogewogICAgIEFTU0VSVChp
bmhlcml0cygmc19pbmZvKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2Fs
bGJhY2tGdW5jdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkv
SlNDYWxsYmFja0Z1bmN0aW9uLmgJKHJldmlzaW9uIDkyMzkzKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL0FQSS9KU0NhbGxiYWNrRnVuY3Rpb24uaAkod29ya2luZyBjb3B5KQpAQCAtMzMsMTIg
KzMzLDE0IEBAIG5hbWVzcGFjZSBKU0MgewogCiBjbGFzcyBKU0NhbGxiYWNrRnVuY3Rpb24gOiBw
dWJsaWMgSW50ZXJuYWxGdW5jdGlvbiB7CiBwcm90ZWN0ZWQ6Ci0gICAgSlNDYWxsYmFja0Z1bmN0
aW9uKEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KiwgSlNPYmplY3RDYWxsQXNGdW5jdGlvbkNh
bGxiYWNrLCBjb25zdCBJZGVudGlmaWVyJiBuYW1lKTsKKyAgICBKU0NhbGxiYWNrRnVuY3Rpb24o
SlNHbG9iYWxPYmplY3QqLCBKU09iamVjdENhbGxBc0Z1bmN0aW9uQ2FsbGJhY2spOwogCiBwdWJs
aWM6CiAgICAgc3RhdGljIEpTQ2FsbGJhY2tGdW5jdGlvbiogY3JlYXRlKEV4ZWNTdGF0ZSogZXhl
YywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNPYmplY3RDYWxsQXNGdW5jdGlvbkNh
bGxiYWNrIGNhbGxiYWNrLCBjb25zdCBJZGVudGlmaWVyJiBuYW1lKQogICAgIHsKLSAgICAgICAg
cmV0dXJuIG5ldyAoYWxsb2NhdGVDZWxsPEpTQ2FsbGJhY2tGdW5jdGlvbj4oKmV4ZWMtPmhlYXAo
KSkpIEpTQ2FsbGJhY2tGdW5jdGlvbihleGVjLCBnbG9iYWxPYmplY3QsIGNhbGxiYWNrLCBuYW1l
KTsKKyAgICAgICAgSlNDYWxsYmFja0Z1bmN0aW9uKiBjYWxsYmFja0Z1bmN0aW9uID0gbmV3IChh
bGxvY2F0ZUNlbGw8SlNDYWxsYmFja0Z1bmN0aW9uPigqZXhlYy0+aGVhcCgpKSkgSlNDYWxsYmFj
a0Z1bmN0aW9uKGdsb2JhbE9iamVjdCwgY2FsbGJhY2spOworICAgICAgICBjYWxsYmFja0Z1bmN0
aW9uLT5pbml0UHJvcGVydGllcyhleGVjLT5nbG9iYWxEYXRhKCksIG5hbWUpOworICAgICAgICBy
ZXR1cm4gY2FsbGJhY2tGdW5jdGlvbjsKICAgICB9CiAKICAgICBzdGF0aWMgY29uc3QgQ2xhc3NJ
bmZvIHNfaW5mbzsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52
Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZGVmCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUv
SmF2YVNjcmlwdENvcmUuZGVmCShyZXZpc2lvbiA5MjM5MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUu
ZGVmCSh3b3JraW5nIGNvcHkpCkBAIC0xMCw3ICsxMCw2IEBAIEVYUE9SVFMKICAgICA/PzBJbnRl
cm5hbEZ1bmN0aW9uQEpTQ0BASUFFQFBBVkpTR2xvYmFsRGF0YUAxQFBBVkpTR2xvYmFsT2JqZWN0
QDFAUEFWU3RydWN0dXJlQDFAQUJWSWRlbnRpZmllckAxQEBaCiAgICAgPz8wSlNBcnJheUBKU0NA
QElBRUBBQVZKU0dsb2JhbERhdGFAMUBQQVZTdHJ1Y3R1cmVAMUBAWgogICAgID8/MEpTQXJyYXlA
SlNDQEBJQUVAQUFWSlNHbG9iYWxEYXRhQDFAUEFWU3RydWN0dXJlQDFAQUJWQXJnTGlzdEAxQEBa
Ci0gICAgPz8wSlNGdW5jdGlvbkBKU0NAQEFBRUBQQVZFeGVjU3RhdGVAMUBQQVZKU0dsb2JhbE9i
amVjdEAxQFBBVlN0cnVjdHVyZUAxQEhBQlZJZGVudGlmaWVyQDFAUDZJX0owQFpAWgogICAgID8/
MEpTTG9ja0BKU0NAQFFBRUBQQVZFeGVjU3RhdGVAMUBAWgogICAgID8/MEpTT2JqZWN0V2l0aEds
b2JhbE9iamVjdEBKU0NAQElBRUBBQVZKU0dsb2JhbERhdGFAMUBQQVZKU0dsb2JhbE9iamVjdEAx
QFBBVlN0cnVjdHVyZUAxQEBaCiAgICAgPz8wSlNPYmplY3RXaXRoR2xvYmFsT2JqZWN0QEpTQ0BA
SUFFQFBBVkpTR2xvYmFsT2JqZWN0QDFAUEFWU3RydWN0dXJlQDFAQFoKQEAgLTE5LDcgKzE4LDcg
QEAgRVhQT1JUUwogICAgID8/MFJlZkNvdW50ZWRMZWFrQ291bnRlckBXVEZAQFFBRUBQQkRAWgog
ICAgID8/MFJlZ0V4cE9iamVjdEBKU0NAQElBRUBQQVZKU0dsb2JhbE9iamVjdEAxQFBBVlN0cnVj
dHVyZUAxQFBBVlJlZ0V4cEAxQEBaCiAgICAgPz8wU0hBMUBXVEZAQFFBRUBYWgotICAgID8/MFN0
cmluZ09iamVjdEBKU0NAQElBRUBQQVZFeGVjU3RhdGVAMUBQQVZTdHJ1Y3R1cmVAMUBBQlZVU3Ry
aW5nQDFAQFoKKyAgICA/PzBTdHJpbmdPYmplY3RASlNDQEBJQUVAQUFWSlNHbG9iYWxEYXRhQDFA
UEFWU3RydWN0dXJlQDFAUEFWSlNTdHJpbmdAMUBAWgogICAgID8/MFN0cnVjdHVyZUBKU0NAQEFB
RUBBQVZKU0dsb2JhbERhdGFAMUBWSlNWYWx1ZUAxQEFCVlR5cGVJbmZvQDFASVBCVUNsYXNzSW5m
b0AxQEBaCiAgICAgPz8wVGhyZWFkQ29uZGl0aW9uQFdURkBAUUFFQFhaCiAgICAgPz8wVVN0cmlu
Z0BKU0NAQFFBRUBQQkRAWgpAQCAtOTYsNiArOTUsNyBAQCBFWFBPUlRTCiAgICAgP2NvbnZlcnRV
VEY4VG9VVEYxNkBVbmljb2RlQFdURkBAWUE/QVc0Q29udmVyc2lvblJlc3VsdEAxMkBQQVBCRFBC
RFBBUEFfV1BBX1dfTkBaCiAgICAgP2NyZWF0ZUBCeXRlQXJyYXlAV1RGQEBTQT9BVj8kUGFzc1Jl
ZlB0ckBWQnl0ZUFycmF5QFdURkBAQDJASUBaCiAgICAgP2NyZWF0ZUBKU0J5dGVBcnJheUBKU0NA
QFNBUEFWMTJAUEFWRXhlY1N0YXRlQDJAUEFWU3RydWN0dXJlQDJAUEFWQnl0ZUFycmF5QFdURkBA
QFoKKyAgICA/Y3JlYXRlQEpTRnVuY3Rpb25ASlNDQEBTQVBBVjEyQFBBVkV4ZWNTdGF0ZUAyQFBB
VkpTR2xvYmFsT2JqZWN0QDJAUEFWU3RydWN0dXJlQDJASEFCVklkZW50aWZpZXJAMkBQNklfSjBA
WkBaCiAgICAgP2NyZWF0ZUBKU0dsb2JhbERhdGFASlNDQEBTQT9BVj8kUGFzc1JlZlB0ckBWSlNH
bG9iYWxEYXRhQEpTQ0BAQFdURkBAVzRUaHJlYWRTdGFja1R5cGVAMkBXNEhlYXBTaXplQDJAQFoK
ICAgICA/Y3JlYXRlQE9wYXF1ZUpTU3RyaW5nQEBTQT9BVj8kUGFzc1JlZlB0ckBVT3BhcXVlSlNT
dHJpbmdAQEBXVEZAQEFCVlVTdHJpbmdASlNDQEBAWgogICAgID9jcmVhdGVAUmVnRXhwQEpTQ0BA
U0FQQVYxMkBBQVZKU0dsb2JhbERhdGFAMkBBQlZVU3RyaW5nQDJAVzRSZWdFeHBGbGFnc0AyQEBa
CkBAIC0yMTQsNyArMjE0LDcgQEAgRVhQT1JUUwogICAgID9oZWFwQEhlYXBASlNDQEBTQVBBVjEy
QFZKU1ZhbHVlQDJAQFoKICAgICA/aW5jcmVtZW50QFJlZkNvdW50ZWRMZWFrQ291bnRlckBXVEZA
QFFBRVhYWgogICAgID9pbml0QEF0b21pY1N0cmluZ0BXVEZAQFNBWFhaCi0gICAgP2luaXRASlNH
bG9iYWxPYmplY3RASlNDQEBBQUVYUEFWSlNPYmplY3RAMkBAWgorICAgID9pbml0QEpTR2xvYmFs
T2JqZWN0QEpTQ0BASUFFWFBBVkpTT2JqZWN0QDJAQFoKICAgICA/aW5pdGlhbGl6ZU1haW5UaHJl
YWRAV1RGQEBZQVhYWgogICAgID9pbml0aWFsaXplVGhyZWFkaW5nQEpTQ0BAWUFYWFoKICAgICA/
aW5pdGlhbGl6ZVRocmVhZGluZ0BXVEZAQFlBWFhaCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagkocmV2aXNpb24gOTIzOTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNj
cmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtOTU2
LDcgKzk1Niw2IEBACiAJCTg2NzA0QjgyMTJEQkEzMzcwMEE5RkU3QiAvKiBZYXJyUGF0dGVybi5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBZYXJyUGF0dGVybi5jcHA7
IHBhdGggPSB5YXJyL1lhcnJQYXR0ZXJuLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJODY3MDRCODMxMkRCQTMzNzAwQTlGRTdCIC8qIFlhcnJQYXR0ZXJuLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFlhcnJQYXR0ZXJuLmg7IHBhdGggPSB5YXJyL1lhcnJQYXR0
ZXJuLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg2N0ZDMzVGMTFCNzYzOTUwMDI1
MTA1RSAvKiBKYXZhU2NyaXB0Q29yZS5KU1ZBTFVFMzJfNjRvbmx5LmV4cCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuZXhwb3J0czsgcGF0aCA9IEphdmFTY3JpcHRDb3JlLkpTVkFMVUUzMl82NG9ubHku
ZXhwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk4NjdGQzM2MTExQjc2Mzk1MDAyNTEw
NUUgLyogSmF2YVNjcmlwdENvcmUuSlNWQUxVRTY0b25seS5leHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmV4cG9ydHM7IHBhdGggPSBKYXZhU2NyaXB0Q29yZS5KU1ZBTFVFNjRvbmx5LmV4cDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODY4QkZBMDAxMTdDRUZEMTAwQjkwOEIxIC8qIEF0
b21pY1N0cmluZy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBBdG9t
aWNTdHJpbmcuY3BwOyBwYXRoID0gdGV4dC9BdG9taWNTdHJpbmcuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk4NjhCRkEwMTExN0NFRkQxMDBCOTA4QjEgLyogQXRvbWljU3RyaW5n
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEF0b21pY1N0cmluZy5oOyBwYXRo
ID0gdGV4dC9BdG9taWNTdHJpbmcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODY4
QkZBMDIxMTdDRUZEMTAwQjkwOEIxIC8qIEF0b21pY1N0cmluZ0ltcGwuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBuYW1lID0gQXRvbWljU3RyaW5nSW1wbC5oOyBwYXRoID0gdGV4dC9BdG9t
aWNTdHJpbmdJbXBsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMzk0LDcgKzEz
OTMsNiBAQAogCQkJCUY2OTJBODU0MDI1NTU5N0QwMUZGNjBGNyAvKiBjcmVhdGVfaGFzaF90YWJs
ZSAqLywKIAkJCQkxNEI4RUNBNjBBNTY1Mzk4MDA2MkJFNTQgLyogSmF2YVNjcmlwdENvcmUuZXhw
ICovLAogCQkJCTg2N0ZDMzVGMTFCNzYzOTUwMDI1MTA1RSAvKiBKYXZhU2NyaXB0Q29yZS5KU1ZB
TFVFMzJfNjRvbmx5LmV4cCAqLywKLQkJCQk4NjdGQzM2MTExQjc2Mzk1MDAyNTEwNUUgLyogSmF2
YVNjcmlwdENvcmUuSlNWQUxVRTY0b25seS5leHAgKi8sCiAJCQkJRjVDMjkwRTYwMjg0Rjk4RTAx
ODYzNUNBIC8qIEphdmFTY3JpcHRDb3JlUHJlZml4LmggKi8sCiAJCQkJNDVFMTJEODgwNkE0OUIw
RjAwRTlERjg0IC8qIGpzYy5jcHAgKi8sCiAJCQkJRjY4RUJCOEMwMjU1RDRDNjAxRkY2MEY3IC8q
IGNvbmZpZy5oICovLApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlD
b25zdHJ1Y3Rvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQXJyYXlDb25zdHJ1Y3Rvci5jcHAJKHJldmlzaW9uIDkyMzkzKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlDb25zdHJ1Y3Rvci5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTUyLDcgKzUyLDcgQEAgY29uc3QgQ2xhc3NJbmZvIEFycmF5Q29uc3RydWN0b3I6OnNfaW5mbwog
QVNTRVJUX0NMQVNTX0ZJVFNfSU5fQ0VMTChBcnJheUNvbnN0cnVjdG9yKTsKIAogQXJyYXlDb25z
dHJ1Y3Rvcjo6QXJyYXlDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBBcnJheVByb3RvdHlwZSogYXJy
YXlQcm90b3R5cGUpCi0gICAgOiBJbnRlcm5hbEZ1bmN0aW9uKCZleGVjLT5nbG9iYWxEYXRhKCks
IGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBJZGVudGlmaWVyKGV4ZWMsIGFycmF5UHJvdG90eXBl
LT5jbGFzc0luZm8oKS0+Y2xhc3NOYW1lKSkKKyAgICA6IEludGVybmFsRnVuY3Rpb24oZ2xvYmFs
T2JqZWN0LCBzdHJ1Y3R1cmUpCiB7CiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24oZXhl
Yy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkucHJvdG90eXBlLCBhcnJheVBy
b3RvdHlwZSwgRG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkpOwogICAgIHB1dERpcmVj
dFdpdGhvdXRUcmFuc2l0aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+cHJvcGVydHlOYW1l
cygpLmxlbmd0aCwganNOdW1iZXIoMSksIFJlYWRPbmx5IHwgRG9udEVudW0gfCBEb250RGVsZXRl
KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5Q29uc3RydWN0b3Iu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUNvbnN0
cnVjdG9yLmgJKHJldmlzaW9uIDkyMzkzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQXJyYXlDb25zdHJ1Y3Rvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMSwyMCArMjEsMjEgQEAK
ICNpZm5kZWYgQXJyYXlDb25zdHJ1Y3Rvcl9oCiAjZGVmaW5lIEFycmF5Q29uc3RydWN0b3JfaAog
CisjaW5jbHVkZSAiQXJyYXlQcm90b3R5cGUuaCIKICNpbmNsdWRlICJJbnRlcm5hbEZ1bmN0aW9u
LmgiCiAKIG5hbWVzcGFjZSBKU0MgewogCi0gICAgY2xhc3MgQXJyYXlQcm90b3R5cGU7Ci0KICAg
ICBjbGFzcyBBcnJheUNvbnN0cnVjdG9yIDogcHVibGljIEludGVybmFsRnVuY3Rpb24gewogICAg
IHByaXZhdGU6CiAgICAgICAgIEFycmF5Q29uc3RydWN0b3IoRXhlY1N0YXRlKiwgSlNHbG9iYWxP
YmplY3QqLCBTdHJ1Y3R1cmUqLCBBcnJheVByb3RvdHlwZSopOwogICAgICAgICAKICAgICBwdWJs
aWM6Ci0gICAgICAgIHN0YXRpYyBBcnJheUNvbnN0cnVjdG9yKiBjcmVhdGUoRXhlY1N0YXRlKiBl
eGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwg
QXJyYXlQcm90b3R5cGUqIGFyclByb3RvdHlwZSkKKyAgICAgICAgc3RhdGljIEFycmF5Q29uc3Ry
dWN0b3IqIGNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBBcnJheVByb3RvdHlwZSogYXJyYXlQcm90b3R5cGUp
CiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBuZXcgKGFsbG9jYXRlQ2VsbDxBcnJheUNv
bnN0cnVjdG9yPigqZXhlYy0+aGVhcCgpKSkgQXJyYXlDb25zdHJ1Y3RvcihleGVjLCBnbG9iYWxP
YmplY3QsIHN0cnVjdHVyZSwgYXJyUHJvdG90eXBlKTsKKyAgICAgICAgICAgIEFycmF5Q29uc3Ry
dWN0b3IqIGNvbnN0cnVjdG9yID0gbmV3IChhbGxvY2F0ZUNlbGw8QXJyYXlDb25zdHJ1Y3Rvcj4o
KmV4ZWMtPmhlYXAoKSkpIEFycmF5Q29uc3RydWN0b3IoZXhlYywgZ2xvYmFsT2JqZWN0LCBzdHJ1
Y3R1cmUsIGFycmF5UHJvdG90eXBlKTsKKyAgICAgICAgICAgIGNvbnN0cnVjdG9yLT5pbml0UHJv
cGVydGllcyhleGVjLT5nbG9iYWxEYXRhKCksIElkZW50aWZpZXIoZXhlYywgYXJyYXlQcm90b3R5
cGUtPmNsYXNzSW5mbygpLT5jbGFzc05hbWUpKTsKKyAgICAgICAgICAgIHJldHVybiBjb25zdHJ1
Y3RvcjsKICAgICAgICAgfQogCiAgICAgICAgIHN0YXRpYyBjb25zdCBDbGFzc0luZm8gc19pbmZv
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQm9vbGVhbkNvbnN0cnVjdG9y
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Cb29sZWFu
Q29uc3RydWN0b3IuY3BwCShyZXZpc2lvbiA5MjM5MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0Jvb2xlYW5Db25zdHJ1Y3Rvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5LDcg
KzI5LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiBBU1NFUlRfQ0xBU1NfRklUU19JTl9DRUxMKEJvb2xl
YW5Db25zdHJ1Y3Rvcik7CiAKIEJvb2xlYW5Db25zdHJ1Y3Rvcjo6Qm9vbGVhbkNvbnN0cnVjdG9y
KEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJl
KiBzdHJ1Y3R1cmUsIEJvb2xlYW5Qcm90b3R5cGUqIGJvb2xlYW5Qcm90b3R5cGUpCi0gICAgOiBJ
bnRlcm5hbEZ1bmN0aW9uKCZleGVjLT5nbG9iYWxEYXRhKCksIGdsb2JhbE9iamVjdCwgc3RydWN0
dXJlLCBJZGVudGlmaWVyKGV4ZWMsIGJvb2xlYW5Qcm90b3R5cGUtPmNsYXNzSW5mbygpLT5jbGFz
c05hbWUpKQorICAgIDogSW50ZXJuYWxGdW5jdGlvbihnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSkK
IHsKICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbihleGVjLT5nbG9iYWxEYXRhKCksIGV4
ZWMtPnByb3BlcnR5TmFtZXMoKS5wcm90b3R5cGUsIGJvb2xlYW5Qcm90b3R5cGUsIERvbnRFbnVt
IHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQm9vbGVhbkNvbnN0cnVjdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQm9vbGVhbkNvbnN0cnVjdG9yLmgJKHJldmlzaW9uIDkyMzkzKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQm9vbGVhbkNvbnN0cnVjdG9yLmgJKHdv
cmtpbmcgY29weSkKQEAgLTIxLDIwICsyMSwyMSBAQAogI2lmbmRlZiBCb29sZWFuQ29uc3RydWN0
b3JfaAogI2RlZmluZSBCb29sZWFuQ29uc3RydWN0b3JfaAogCisjaW5jbHVkZSAiQm9vbGVhblBy
b3RvdHlwZS5oIgogI2luY2x1ZGUgIkludGVybmFsRnVuY3Rpb24uaCIKIAogbmFtZXNwYWNlIEpT
QyB7CiAKLSAgICBjbGFzcyBCb29sZWFuUHJvdG90eXBlOwotCiAgICAgY2xhc3MgQm9vbGVhbkNv
bnN0cnVjdG9yIDogcHVibGljIEludGVybmFsRnVuY3Rpb24gewogICAgIHByaXZhdGU6CiAgICAg
ICAgIEJvb2xlYW5Db25zdHJ1Y3RvcihFeGVjU3RhdGUqLCBKU0dsb2JhbE9iamVjdCosIFN0cnVj
dHVyZSosIEJvb2xlYW5Qcm90b3R5cGUqKTsKICAgICAgICAgCiAgICAgcHVibGljOgotICAgICAg
ICBzdGF0aWMgQm9vbGVhbkNvbnN0cnVjdG9yKiBjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgQm9vbGVhblBy
b3RvdHlwZSogYm9vbFByb3RvdHlwZSkKKyAgICAgICAgc3RhdGljIEJvb2xlYW5Db25zdHJ1Y3Rv
ciogY3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEJvb2xlYW5Qcm90b3R5cGUqIGJvb2xlYW5Qcm90b3R5cGUp
CiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBuZXcgKGFsbG9jYXRlQ2VsbDxCb29sZWFu
Q29uc3RydWN0b3I+KCpleGVjLT5oZWFwKCkpKSBCb29sZWFuQ29uc3RydWN0b3IoZXhlYywgZ2xv
YmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIGJvb2xQcm90b3R5cGUpOworICAgICAgICAgICAgQm9vbGVh
bkNvbnN0cnVjdG9yKiBjb25zdHJ1Y3RvciA9IG5ldyAoYWxsb2NhdGVDZWxsPEJvb2xlYW5Db25z
dHJ1Y3Rvcj4oKmV4ZWMtPmhlYXAoKSkpIEJvb2xlYW5Db25zdHJ1Y3RvcihleGVjLCBnbG9iYWxP
YmplY3QsIHN0cnVjdHVyZSwgYm9vbGVhblByb3RvdHlwZSk7CisgICAgICAgICAgICBjb25zdHJ1
Y3Rvci0+aW5pdFByb3BlcnRpZXMoZXhlYy0+Z2xvYmFsRGF0YSgpLCBJZGVudGlmaWVyKGV4ZWMs
IGJvb2xlYW5Qcm90b3R5cGUtPmNsYXNzSW5mbygpLT5jbGFzc05hbWUpKTsKKyAgICAgICAgICAg
IHJldHVybiBjb25zdHJ1Y3RvcjsKICAgICAgICAgfQogCiAgICAgcHJpdmF0ZToKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVDb25zdHJ1Y3Rvci5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZUNvbnN0cnVjdG9yLmNwcAko
cmV2aXNpb24gOTIzOTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlQ29u
c3RydWN0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NCw3ICs3NCw3IEBAIGNvbnN0IENsYXNz
SW5mbyBEYXRlQ29uc3RydWN0b3I6OnNfaW5mbyAKIEFTU0VSVF9DTEFTU19GSVRTX0lOX0NFTEwo
RGF0ZUNvbnN0cnVjdG9yKTsKIAogRGF0ZUNvbnN0cnVjdG9yOjpEYXRlQ29uc3RydWN0b3IoRXhl
Y1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSwgRGF0ZVByb3RvdHlwZSogZGF0ZVByb3RvdHlwZSkKLSAgICA6IEludGVybmFsRnVu
Y3Rpb24oJmV4ZWMtPmdsb2JhbERhdGEoKSwgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIElkZW50
aWZpZXIoZXhlYywgZGF0ZVByb3RvdHlwZS0+Y2xhc3NJbmZvKCktPmNsYXNzTmFtZSkpCisgICAg
OiBJbnRlcm5hbEZ1bmN0aW9uKGdsb2JhbE9iamVjdCwgc3RydWN0dXJlKQogewogICAgIHB1dERp
cmVjdFdpdGhvdXRUcmFuc2l0aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+cHJvcGVydHlO
YW1lcygpLnByb3RvdHlwZSwgZGF0ZVByb3RvdHlwZSwgRG9udEVudW0gfCBEb250RGVsZXRlIHwg
UmVhZE9ubHkpOwogICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKGV4ZWMtPmdsb2JhbERh
dGEoKSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLmxlbmd0aCwganNOdW1iZXIoNyksIFJlYWRPbmx5
IHwgRG9udEVudW0gfCBEb250RGVsZXRlKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0RhdGVDb25zdHJ1Y3Rvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0RhdGVDb25zdHJ1Y3Rvci5oCShyZXZpc2lvbiA5MjM5MykKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVDb25zdHJ1Y3Rvci5oCSh3b3JraW5nIGNvcHkp
CkBAIC0yMSwxMiArMjEsMTEgQEAKICNpZm5kZWYgRGF0ZUNvbnN0cnVjdG9yX2gKICNkZWZpbmUg
RGF0ZUNvbnN0cnVjdG9yX2gKIAorI2luY2x1ZGUgIkRhdGVQcm90b3R5cGUuaCIKICNpbmNsdWRl
ICJJbnRlcm5hbEZ1bmN0aW9uLmgiCiAKIG5hbWVzcGFjZSBKU0MgewogCi0gICAgY2xhc3MgRGF0
ZVByb3RvdHlwZTsKLQogICAgIGNsYXNzIERhdGVDb25zdHJ1Y3RvciA6IHB1YmxpYyBJbnRlcm5h
bEZ1bmN0aW9uIHsKICAgICBwcml2YXRlOgogICAgICAgICBEYXRlQ29uc3RydWN0b3IoRXhlY1N0
YXRlKiwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBEYXRlUHJvdG90eXBlKik7CkBAIC0z
NCw3ICszMyw5IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHB1YmxpYzoKICAgICAgICAgc3RhdGlj
IERhdGVDb25zdHJ1Y3RvciogY3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIERhdGVQcm90b3R5cGUqIGRhdGVQ
cm90b3R5cGUpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBuZXcgKGFsbG9jYXRlQ2Vs
bDxEYXRlQ29uc3RydWN0b3I+KCpleGVjLT5oZWFwKCkpKSBEYXRlQ29uc3RydWN0b3IoZXhlYywg
Z2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIGRhdGVQcm90b3R5cGUpOworICAgICAgICAgICAgRGF0
ZUNvbnN0cnVjdG9yKiBjb25zdHJ1Y3RvciA9IG5ldyAoYWxsb2NhdGVDZWxsPERhdGVDb25zdHJ1
Y3Rvcj4oKmV4ZWMtPmhlYXAoKSkpIERhdGVDb25zdHJ1Y3RvcihleGVjLCBnbG9iYWxPYmplY3Qs
IHN0cnVjdHVyZSwgZGF0ZVByb3RvdHlwZSk7CisgICAgICAgICAgICBjb25zdHJ1Y3Rvci0+aW5p
dFByb3BlcnRpZXMoZXhlYy0+Z2xvYmFsRGF0YSgpLCBJZGVudGlmaWVyKGV4ZWMsIGRhdGVQcm90
b3R5cGUtPmNsYXNzSW5mbygpLT5jbGFzc05hbWUpKTsKKyAgICAgICAgICAgIHJldHVybiBjb25z
dHJ1Y3RvcjsKICAgICAgICAgfQogCiAgICAgICAgIHN0YXRpYyBjb25zdCBDbGFzc0luZm8gc19p
bmZvOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3IuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yLmNwcAkocmV2aXNp
b24gOTIzOTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvci5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTE2Nyw4ICsxNjcsOCBAQCBKU09iamVjdCogdGhyb3dTeW50YXhFcnJv
cihFeGVjU3RhdGUqIGV4CiAKIGNsYXNzIFN0cmljdE1vZGVUeXBlRXJyb3JGdW5jdGlvbiA6IHB1
YmxpYyBJbnRlcm5hbEZ1bmN0aW9uIHsKIHByaXZhdGU6Ci0gICAgU3RyaWN0TW9kZVR5cGVFcnJv
ckZ1bmN0aW9uKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IFVTdHJpbmcmIG1lc3NhZ2UpCi0gICAgICAgIDog
SW50ZXJuYWxGdW5jdGlvbigmZXhlYy0+Z2xvYmFsRGF0YSgpLCBnbG9iYWxPYmplY3QsIHN0cnVj
dHVyZSwgZXhlYy0+Z2xvYmFsRGF0YSgpLnByb3BlcnR5TmFtZXMtPmVtcHR5SWRlbnRpZmllcikK
KyAgICBTdHJpY3RNb2RlVHlwZUVycm9yRnVuY3Rpb24oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IFVTdHJpbmcmIG1lc3NhZ2UpCisgICAg
ICAgIDogSW50ZXJuYWxGdW5jdGlvbihnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSkKICAgICAgICAg
LCBtX21lc3NhZ2UobWVzc2FnZSkKICAgICB7CiAgICAgfQpAQCAtMTc2LDcgKzE3Niw5IEBAIHBy
aXZhdGU6CiBwdWJsaWM6CiAgICAgc3RhdGljIFN0cmljdE1vZGVUeXBlRXJyb3JGdW5jdGlvbiog
Y3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IFVTdHJpbmcmIG1lc3NhZ2UpCiAgICAgewotICAgICAg
ICByZXR1cm4gbmV3IChhbGxvY2F0ZUNlbGw8U3RyaWN0TW9kZVR5cGVFcnJvckZ1bmN0aW9uPigq
ZXhlYy0+aGVhcCgpKSkgU3RyaWN0TW9kZVR5cGVFcnJvckZ1bmN0aW9uKGV4ZWMsIGdsb2JhbE9i
amVjdCwgc3RydWN0dXJlLCBtZXNzYWdlKTsKKyAgICAgICAgU3RyaWN0TW9kZVR5cGVFcnJvckZ1
bmN0aW9uKiBmdW5jdGlvbiA9IG5ldyAoYWxsb2NhdGVDZWxsPFN0cmljdE1vZGVUeXBlRXJyb3JG
dW5jdGlvbj4oKmV4ZWMtPmhlYXAoKSkpIFN0cmljdE1vZGVUeXBlRXJyb3JGdW5jdGlvbihnbG9i
YWxPYmplY3QsIHN0cnVjdHVyZSwgbWVzc2FnZSk7CisgICAgICAgIGZ1bmN0aW9uLT5pbml0UHJv
cGVydGllcyhleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPmdsb2JhbERhdGEoKS5wcm9wZXJ0eU5h
bWVzLT5lbXB0eUlkZW50aWZpZXIpOworICAgICAgICByZXR1cm4gZnVuY3Rpb247CiAgICAgfQog
ICAgIAogICAgIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdFRo
cm93VHlwZUVycm9yKEV4ZWNTdGF0ZSogZXhlYykKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0Vycm9yQ29uc3RydWN0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yQ29uc3RydWN0b3IuY3BwCShyZXZpc2lvbiA5MjM5MykK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yQ29uc3RydWN0b3IuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0zMCw3ICszMCw3IEBAIG5hbWVzcGFjZSBKU0MgewogQVNTRVJUX0NM
QVNTX0ZJVFNfSU5fQ0VMTChFcnJvckNvbnN0cnVjdG9yKTsKIAogRXJyb3JDb25zdHJ1Y3Rvcjo6
RXJyb3JDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBFcnJvclByb3RvdHlwZSogZXJyb3JQcm90b3R5
cGUpCi0gICAgOiBJbnRlcm5hbEZ1bmN0aW9uKCZleGVjLT5nbG9iYWxEYXRhKCksIGdsb2JhbE9i
amVjdCwgc3RydWN0dXJlLCBJZGVudGlmaWVyKGV4ZWMsIGVycm9yUHJvdG90eXBlLT5jbGFzc0lu
Zm8oKS0+Y2xhc3NOYW1lKSkKKyAgICA6IEludGVybmFsRnVuY3Rpb24oZ2xvYmFsT2JqZWN0LCBz
dHJ1Y3R1cmUpCiB7CiAgICAgLy8gRUNNQSAxNS4xMS4zLjEgRXJyb3IucHJvdG90eXBlCiAgICAg
cHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5wcm9w
ZXJ0eU5hbWVzKCkucHJvdG90eXBlLCBlcnJvclByb3RvdHlwZSwgRG9udEVudW0gfCBEb250RGVs
ZXRlIHwgUmVhZE9ubHkpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJy
b3JDb25zdHJ1Y3Rvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0Vycm9yQ29uc3RydWN0b3IuaAkocmV2aXNpb24gOTIzOTMpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9FcnJvckNvbnN0cnVjdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTIy
LDYgKzIyLDcgQEAKICNkZWZpbmUgRXJyb3JDb25zdHJ1Y3Rvcl9oCiAKICNpbmNsdWRlICJFcnJv
ckluc3RhbmNlLmgiCisjaW5jbHVkZSAiRXJyb3JQcm90b3R5cGUuaCIKICNpbmNsdWRlICJJbnRl
cm5hbEZ1bmN0aW9uLmgiCiAKIG5hbWVzcGFjZSBKU0MgewpAQCAtMzMsOSArMzQsMTEgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgICAgIEVycm9yQ29uc3RydWN0b3IoRXhlY1N0YXRlKiwgSlNHbG9i
YWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBFcnJvclByb3RvdHlwZSopOwogCiAgICAgcHVibGljOgot
ICAgICAgICBzdGF0aWMgRXJyb3JDb25zdHJ1Y3RvciogY3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywg
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEVycm9y
UHJvdG90eXBlKiBlcnJQcm90b3R5cGUpCisgICAgICAgIHN0YXRpYyBFcnJvckNvbnN0cnVjdG9y
KiBjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSwgRXJyb3JQcm90b3R5cGUqIGVycm9yUHJvdG90eXBlKQogICAg
ICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gbmV3IChhbGxvY2F0ZUNlbGw8RXJyb3JDb25zdHJ1
Y3Rvcj4oKmV4ZWMtPmhlYXAoKSkpIEVycm9yQ29uc3RydWN0b3IoZXhlYywgZ2xvYmFsT2JqZWN0
LCBzdHJ1Y3R1cmUsIGVyclByb3RvdHlwZSk7CisgICAgICAgICAgICBFcnJvckNvbnN0cnVjdG9y
KiBjb25zdHJ1Y3RvciA9IG5ldyAoYWxsb2NhdGVDZWxsPEVycm9yQ29uc3RydWN0b3I+KCpleGVj
LT5oZWFwKCkpKSBFcnJvckNvbnN0cnVjdG9yKGV4ZWMsIGdsb2JhbE9iamVjdCwgc3RydWN0dXJl
LCBlcnJvclByb3RvdHlwZSk7CisgICAgICAgICAgICBjb25zdHJ1Y3Rvci0+aW5pdFByb3BlcnRp
ZXMoZXhlYy0+Z2xvYmFsRGF0YSgpLCBJZGVudGlmaWVyKGV4ZWMsIGVycm9yUHJvdG90eXBlLT5j
bGFzc0luZm8oKS0+Y2xhc3NOYW1lKSk7CisgICAgICAgICAgICByZXR1cm4gY29uc3RydWN0b3I7
CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgcHJpdmF0ZToKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0Vycm9ySW5zdGFuY2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9ySW5zdGFuY2UuY3BwCShyZXZpc2lvbiA5MjM5MykK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9ySW5zdGFuY2UuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMCwyNyArMzAsMjggQEAgRXJyb3JJbnN0YW5jZTo6RXJyb3JJbnN0YW5j
ZShKU0dsb2JhbERhdAogICAgICwgbV9hcHBlbmRTb3VyY2VUb01lc3NhZ2UoZmFsc2UpCiB7CiAg
ICAgQVNTRVJUKGluaGVyaXRzKCZzX2luZm8pKTsKLSAgICBwdXREaXJlY3QoZ2xvYmFsRGF0YSwg
Z2xvYmFsRGF0YS5wcm9wZXJ0eU5hbWVzLT5tZXNzYWdlLCBqc1N0cmluZygmZ2xvYmFsRGF0YSwg
IiIpLCBEb250RW51bSk7Ci19Ci0KLUVycm9ySW5zdGFuY2U6OkVycm9ySW5zdGFuY2UoSlNHbG9i
YWxEYXRhJiBnbG9iYWxEYXRhLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgY29uc3QgVVN0cmluZyYg
bWVzc2FnZSkKLSAgICA6IEpTTm9uRmluYWxPYmplY3QoZ2xvYmFsRGF0YSwgc3RydWN0dXJlKQot
ICAgICwgbV9hcHBlbmRTb3VyY2VUb01lc3NhZ2UoZmFsc2UpCi17Ci0gICAgQVNTRVJUKGluaGVy
aXRzKCZzX2luZm8pKTsKLSAgICBwdXREaXJlY3QoZ2xvYmFsRGF0YSwgZ2xvYmFsRGF0YS5wcm9w
ZXJ0eU5hbWVzLT5tZXNzYWdlLCBqc1N0cmluZygmZ2xvYmFsRGF0YSwgbWVzc2FnZSksIERvbnRF
bnVtKTsKIH0KIAogRXJyb3JJbnN0YW5jZSogRXJyb3JJbnN0YW5jZTo6Y3JlYXRlKEpTR2xvYmFs
RGF0YSYgZ2xvYmFsRGF0YSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IFVTdHJpbmcmIG1l
c3NhZ2UpCiB7Ci0gICAgcmV0dXJuIG5ldyAoYWxsb2NhdGVDZWxsPEVycm9ySW5zdGFuY2U+KGds
b2JhbERhdGEuaGVhcCkpIEVycm9ySW5zdGFuY2UoZ2xvYmFsRGF0YSwgc3RydWN0dXJlLCBtZXNz
YWdlKTsKKyAgICBFcnJvckluc3RhbmNlKiBlcnJvckluc3RhbmNlID0gbmV3IChhbGxvY2F0ZUNl
bGw8RXJyb3JJbnN0YW5jZT4oZ2xvYmFsRGF0YS5oZWFwKSkgRXJyb3JJbnN0YW5jZShnbG9iYWxE
YXRhLCBzdHJ1Y3R1cmUpOworICAgIGVycm9ySW5zdGFuY2UtPnB1dERpcmVjdChnbG9iYWxEYXRh
LCBnbG9iYWxEYXRhLnByb3BlcnR5TmFtZXMtPm1lc3NhZ2UsIGpzU3RyaW5nKCZnbG9iYWxEYXRh
LCBtZXNzYWdlKSwgRG9udEVudW0pOworICAgIHJldHVybiBlcnJvckluc3RhbmNlOwogfQogCiBF
cnJvckluc3RhbmNlKiBFcnJvckluc3RhbmNlOjpjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSwgSlNWYWx1ZSBtZXNzYWdlKQogewotICAgIGlmIChtZXNzYWdlLmlz
VW5kZWZpbmVkKCkpCi0gICAgICAgIHJldHVybiBuZXcgKGFsbG9jYXRlQ2VsbDxFcnJvckluc3Rh
bmNlPigqZXhlYy0+aGVhcCgpKSkgRXJyb3JJbnN0YW5jZShleGVjLT5nbG9iYWxEYXRhKCksIHN0
cnVjdHVyZSk7Ci0gICAgcmV0dXJuIG5ldyAoYWxsb2NhdGVDZWxsPEVycm9ySW5zdGFuY2U+KCpl
eGVjLT5oZWFwKCkpKSBFcnJvckluc3RhbmNlKGV4ZWMtPmdsb2JhbERhdGEoKSwgc3RydWN0dXJl
LCBtZXNzYWdlLnRvU3RyaW5nKGV4ZWMpKTsKKyAgICBFcnJvckluc3RhbmNlKiBlcnJvckluc3Rh
bmNlOworICAgIEpTU3RyaW5nKiBzdHJpbmc7CisgICAgaWYgKG1lc3NhZ2UuaXNVbmRlZmluZWQo
KSkgeworICAgICAgICBlcnJvckluc3RhbmNlID0gbmV3IChhbGxvY2F0ZUNlbGw8RXJyb3JJbnN0
YW5jZT4oKmV4ZWMtPmhlYXAoKSkpIEVycm9ySW5zdGFuY2UoZXhlYy0+Z2xvYmFsRGF0YSgpLCBz
dHJ1Y3R1cmUpOworICAgICAgICBzdHJpbmcgPSBqc1N0cmluZygmZXhlYy0+Z2xvYmFsRGF0YSgp
LCAiIik7CisgICAgfSBlbHNlIHsKKyAgICAgICAgZXJyb3JJbnN0YW5jZSA9IG5ldyAoYWxsb2Nh
dGVDZWxsPEVycm9ySW5zdGFuY2U+KCpleGVjLT5oZWFwKCkpKSBFcnJvckluc3RhbmNlKGV4ZWMt
Pmdsb2JhbERhdGEoKSwgc3RydWN0dXJlKTsKKyAgICAgICAgc3RyaW5nID0ganNTdHJpbmcoJmV4
ZWMtPmdsb2JhbERhdGEoKSwgbWVzc2FnZS50b1N0cmluZyhleGVjKSk7CisgICAgfQorICAgIGVy
cm9ySW5zdGFuY2UtPnB1dERpcmVjdChleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPmdsb2JhbERh
dGEoKS5wcm9wZXJ0eU5hbWVzLT5tZXNzYWdlLCBzdHJpbmcsIERvbnRFbnVtKTsKKyAgICByZXR1
cm4gZXJyb3JJbnN0YW5jZTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvckluc3RhbmNlLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JJbnN0YW5jZS5oCShyZXZpc2lvbiA5MjM5
MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9ySW5zdGFuY2UuaAkod29y
a2luZyBjb3B5KQpAQCAtNDUsOCArNDUsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdmly
dHVhbCBib29sIGlzRXJyb3JJbnN0YW5jZSgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KIAogICAg
IHByb3RlY3RlZDoKLSAgICAgICAgZXhwbGljaXQgRXJyb3JJbnN0YW5jZShKU0dsb2JhbERhdGEm
LCBTdHJ1Y3R1cmUqKTsKLSAgICAgICAgZXhwbGljaXQgRXJyb3JJbnN0YW5jZShKU0dsb2JhbERh
dGEmLCBTdHJ1Y3R1cmUqLCBjb25zdCBVU3RyaW5nJik7CisgICAgICAgIEVycm9ySW5zdGFuY2Uo
SlNHbG9iYWxEYXRhJiwgU3RydWN0dXJlKik7CiAKICAgICAgICAgYm9vbCBtX2FwcGVuZFNvdXJj
ZVRvTWVzc2FnZTsKICAgICB9OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
RXJyb3JQcm90b3R5cGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0Vycm9yUHJvdG90eXBlLmNwcAkocmV2aXNpb24gOTIzOTMpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9FcnJvclByb3RvdHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTUzLDggKzUzLDYgQEAgQVNTRVJUX0NMQVNTX0ZJVFNfSU5fQ0VMTChFcnJvclByb3RvdHlwZQog
RXJyb3JQcm90b3R5cGU6OkVycm9yUHJvdG90eXBlKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAgICAgOiBFcnJvcklu
c3RhbmNlKGV4ZWMtPmdsb2JhbERhdGEoKSwgc3RydWN0dXJlKQogewotICAgIHB1dERpcmVjdChl
eGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5uYW1lLCBqc05vbnRyaXZp
YWxTdHJpbmcoZXhlYywgIkVycm9yIiksIERvbnRFbnVtKTsKLQogICAgIEFTU0VSVChpbmhlcml0
cygmc19pbmZvKSk7CiAgICAgcHV0QW5vbnltb3VzVmFsdWUoZ2xvYmFsT2JqZWN0LT5nbG9iYWxE
YXRhKCksIDAsIGdsb2JhbE9iamVjdCk7CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9FcnJvclByb3RvdHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0Vycm9yUHJvdG90eXBlLmgJKHJldmlzaW9uIDkyMzkzKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JQcm90b3R5cGUuaAkod29ya2luZyBjb3B5KQpA
QCAtMzQsNyArMzQsOSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBwdWJsaWM6CiAgICAgICAgIHN0
YXRpYyBFcnJvclByb3RvdHlwZSogY3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAgICAgICAgIHsKLSAgICAg
ICAgICAgIHJldHVybiBuZXcgKGFsbG9jYXRlQ2VsbDxFcnJvclByb3RvdHlwZT4oKmV4ZWMtPmhl
YXAoKSkpIEVycm9yUHJvdG90eXBlKGV4ZWMsIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlKTsKKyAg
ICAgICAgICAgIEVycm9yUHJvdG90eXBlKiBlcnJvclByb3RvdHlwZSA9IG5ldyAoYWxsb2NhdGVD
ZWxsPEVycm9yUHJvdG90eXBlPigqZXhlYy0+aGVhcCgpKSkgRXJyb3JQcm90b3R5cGUoZXhlYywg
Z2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUpOworICAgICAgICAgICAgZXJyb3JQcm90b3R5cGUtPnB1
dERpcmVjdChleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5uYW1lLCBq
c05vbnRyaXZpYWxTdHJpbmcoZXhlYywgIkVycm9yIiksIERvbnRFbnVtKTsKKyAgICAgICAgICAg
IHJldHVybiBlcnJvclByb3RvdHlwZTsKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgc3Rh
dGljIGNvbnN0IENsYXNzSW5mbyBzX2luZm87CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9FeGVjdXRhYmxlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9FeGVjdXRhYmxlLmNwcAkocmV2aXNpb24gOTIzOTMpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQ0
LDcgKzE0NCw2IEBAIEZ1bmN0aW9uRXhlY3V0YWJsZTo6RnVuY3Rpb25FeGVjdXRhYmxlKEoKIHsK
ICAgICBtX2ZpcnN0TGluZSA9IGZpcnN0TGluZTsKICAgICBtX2xhc3RMaW5lID0gbGFzdExpbmU7
Ci0gICAgbV9uYW1lVmFsdWUuc2V0KGdsb2JhbERhdGEsIHRoaXMsIGpzU3RyaW5nKCZnbG9iYWxE
YXRhLCBuYW1lLnVzdHJpbmcoKSkpOwogfQogCiBGdW5jdGlvbkV4ZWN1dGFibGU6OkZ1bmN0aW9u
RXhlY3V0YWJsZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIG5hbWUsIGNvbnN0
IFNvdXJjZUNvZGUmIHNvdXJjZSwgYm9vbCBmb3JjZVVzZXNBcmd1bWVudHMsIEZ1bmN0aW9uUGFy
YW1ldGVycyogcGFyYW1ldGVycywgYm9vbCBpblN0cmljdENvbnRleHQsIGludCBmaXJzdExpbmUs
IGludCBsYXN0TGluZSkKQEAgLTE1Nyw3ICsxNTYsNiBAQCBGdW5jdGlvbkV4ZWN1dGFibGU6OkZ1
bmN0aW9uRXhlY3V0YWJsZShFCiB7CiAgICAgbV9maXJzdExpbmUgPSBmaXJzdExpbmU7CiAgICAg
bV9sYXN0TGluZSA9IGxhc3RMaW5lOwotICAgIG1fbmFtZVZhbHVlLnNldChleGVjLT5nbG9iYWxE
YXRhKCksIHRoaXMsIGpzU3RyaW5nKCZleGVjLT5nbG9iYWxEYXRhKCksIG5hbWUudXN0cmluZygp
KSk7CiB9CiAKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJs
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFi
bGUuaAkocmV2aXNpb24gOTIzOTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9F
eGVjdXRhYmxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTE3OCw3ICsxNzgsNyBAQCBuYW1lc3BhY2Ug
SlNDIHsKICNlbHNlCiAgICAgICAgIHN0YXRpYyBOYXRpdmVFeGVjdXRhYmxlKiBjcmVhdGUoSlNH
bG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBOYXRpdmVGdW5jdGlvbiBmdW5jdGlvbiwgTmF0aXZlRnVu
Y3Rpb24gY29uc3RydWN0b3IpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBuZXcgKGFs
bG9jYXRlQ2VsbDxOYXRpdmVFeGVjdXRhYmxlPihnbG9iYWxEYXRhLmhlYXApKSBOYXRpdmVFeGVj
dXRhYmxlKGdsb2JhbERhdGEsIGZ1bmN0aW9uLCBjb25zdHJ1Y3Rvcik7CisgICAgICAgICAgICBy
ZXR1cm4gbmV3IChhbGxvY2F0ZUNlbGw8TmF0aXZlRXhlY3V0YWJsZT4oZ2xvYmFsRGF0YS5oZWFw
KSkgTmF0aXZlRXhlY3V0YWJsZShnbG9iYWxEYXRhLCBmdW5jdGlvbiwgY29uc3RydWN0b3IpKTsK
ICAgICAgICAgfQogI2VuZGlmCiAKQEAgLTI5OCw3ICsyOTgsNyBAQCBuYW1lc3BhY2UgSlNDIHsK
IAogICAgICAgICBzdGF0aWMgRXZhbEV4ZWN1dGFibGUqIGNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMs
IGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgYm9vbCBpc0luU3RyaWN0Q29udGV4dCkgCiAgICAg
ICAgIHsKLSAgICAgICAgICAgIHJldHVybiBuZXcgKGFsbG9jYXRlQ2VsbDxFdmFsRXhlY3V0YWJs
ZT4oKmV4ZWMtPmhlYXAoKSkpIEV2YWxFeGVjdXRhYmxlKGV4ZWMsIHNvdXJjZSwgaXNJblN0cmlj
dENvbnRleHQpOyAKKyAgICAgICAgICAgIHJldHVybiBuZXcgKGFsbG9jYXRlQ2VsbDxFdmFsRXhl
Y3V0YWJsZT4oKmV4ZWMtPmhlYXAoKSkpIEV2YWxFeGVjdXRhYmxlKGV4ZWMsIHNvdXJjZSwgaXNJ
blN0cmljdENvbnRleHQpOwogICAgICAgICB9CiAKICNpZiBFTkFCTEUoSklUKQpAQCAtMzgxLDEy
ICszODEsMTggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgcHVibGljOgogICAgICAgICBzdGF0aWMg
RnVuY3Rpb25FeGVjdXRhYmxlKiBjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlm
aWVyJiBuYW1lLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIGJvb2wgZm9yY2VVc2VzQXJndW1l
bnRzLCBGdW5jdGlvblBhcmFtZXRlcnMqIHBhcmFtZXRlcnMsIGJvb2wgaXNJblN0cmljdENvbnRl
eHQsIGludCBmaXJzdExpbmUsIGludCBsYXN0TGluZSkKICAgICAgICAgewotICAgICAgICAgICAg
cmV0dXJuIG5ldyAoYWxsb2NhdGVDZWxsPEZ1bmN0aW9uRXhlY3V0YWJsZT4oKmV4ZWMtPmhlYXAo
KSkpIEZ1bmN0aW9uRXhlY3V0YWJsZShleGVjLCBuYW1lLCBzb3VyY2UsIGZvcmNlVXNlc0FyZ3Vt
ZW50cywgcGFyYW1ldGVycywgaXNJblN0cmljdENvbnRleHQsIGZpcnN0TGluZSwgbGFzdExpbmUp
OworICAgICAgICAgICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBmdW5jdGlvbiA9IG5ldyAoYWxsb2Nh
dGVDZWxsPEZ1bmN0aW9uRXhlY3V0YWJsZT4oKmV4ZWMtPmhlYXAoKSkpIEZ1bmN0aW9uRXhlY3V0
YWJsZShleGVjLCBuYW1lLCBzb3VyY2UsIGZvcmNlVXNlc0FyZ3VtZW50cywgcGFyYW1ldGVycywg
aXNJblN0cmljdENvbnRleHQsIGZpcnN0TGluZSwgbGFzdExpbmUpOworICAgICAgICAgICAgSlNT
dHJpbmcqIG5hbWVTdHJpbmcgPSBqc1N0cmluZygmZXhlYy0+Z2xvYmFsRGF0YSgpLCBuYW1lLnVz
dHJpbmcoKSk7CisgICAgICAgICAgICBmdW5jdGlvbi0+bV9uYW1lVmFsdWUuc2V0KGV4ZWMtPmds
b2JhbERhdGEoKSwgZnVuY3Rpb24sIG5hbWVTdHJpbmcpOworICAgICAgICAgICAgcmV0dXJuIGZ1
bmN0aW9uOwogICAgICAgICB9CiAKICAgICAgICAgc3RhdGljIEZ1bmN0aW9uRXhlY3V0YWJsZSog
Y3JlYXRlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgY29uc3QgSWRlbnRpZmllciYgbmFtZSwg
Y29uc3QgU291cmNlQ29kZSYgc291cmNlLCBib29sIGZvcmNlVXNlc0FyZ3VtZW50cywgRnVuY3Rp
b25QYXJhbWV0ZXJzKiBwYXJhbWV0ZXJzLCBib29sIGlzSW5TdHJpY3RDb250ZXh0LCBpbnQgZmly
c3RMaW5lLCBpbnQgbGFzdExpbmUpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBuZXcg
KGFsbG9jYXRlQ2VsbDxGdW5jdGlvbkV4ZWN1dGFibGU+KGdsb2JhbERhdGEuaGVhcCkpIEZ1bmN0
aW9uRXhlY3V0YWJsZShnbG9iYWxEYXRhLCBuYW1lLCBzb3VyY2UsIGZvcmNlVXNlc0FyZ3VtZW50
cywgcGFyYW1ldGVycywgaXNJblN0cmljdENvbnRleHQsIGZpcnN0TGluZSwgbGFzdExpbmUpOwor
ICAgICAgICAgICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBmdW5jdGlvbiA9IG5ldyAoYWxsb2NhdGVD
ZWxsPEZ1bmN0aW9uRXhlY3V0YWJsZT4oZ2xvYmFsRGF0YS5oZWFwKSkgRnVuY3Rpb25FeGVjdXRh
YmxlKGdsb2JhbERhdGEsIG5hbWUsIHNvdXJjZSwgZm9yY2VVc2VzQXJndW1lbnRzLCBwYXJhbWV0
ZXJzLCBpc0luU3RyaWN0Q29udGV4dCwgZmlyc3RMaW5lLCBsYXN0TGluZSk7CisgICAgICAgICAg
ICBKU1N0cmluZyogbmFtZVN0cmluZyA9IGpzU3RyaW5nKCZnbG9iYWxEYXRhLCBuYW1lLnVzdHJp
bmcoKSk7CisgICAgICAgICAgICBmdW5jdGlvbi0+bV9uYW1lVmFsdWUuc2V0KGdsb2JhbERhdGEs
IGZ1bmN0aW9uLCBuYW1lU3RyaW5nKTsKKyAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbjsKICAg
ICAgICAgfQogCiAgICAgICAgIEpTRnVuY3Rpb24qIG1ha2UoRXhlY1N0YXRlKiBleGVjLCBTY29w
ZUNoYWluTm9kZSogc2NvcGVDaGFpbikKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0Z1bmN0aW9uQ29uc3RydWN0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uQ29uc3RydWN0b3IuY3BwCShyZXZpc2lvbiA5MjM5MykK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uQ29uc3RydWN0b3IuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0zOCw3ICszOCw3IEBAIG5hbWVzcGFjZSBKU0MgewogQVNTRVJU
X0NMQVNTX0ZJVFNfSU5fQ0VMTChGdW5jdGlvbkNvbnN0cnVjdG9yKTsKIAogRnVuY3Rpb25Db25z
dHJ1Y3Rvcjo6RnVuY3Rpb25Db25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBGdW5jdGlvblByb3RvdHlw
ZSogZnVuY3Rpb25Qcm90b3R5cGUpCi0gICAgOiBJbnRlcm5hbEZ1bmN0aW9uKCZleGVjLT5nbG9i
YWxEYXRhKCksIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBJZGVudGlmaWVyKGV4ZWMsIGZ1bmN0
aW9uUHJvdG90eXBlLT5jbGFzc0luZm8oKS0+Y2xhc3NOYW1lKSkKKyAgICA6IEludGVybmFsRnVu
Y3Rpb24oZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUpCiB7CiAgICAgcHV0RGlyZWN0V2l0aG91dFRy
YW5zaXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkucHJvdG90
eXBlLCBmdW5jdGlvblByb3RvdHlwZSwgRG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkp
OwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkNvbnN0cnVj
dG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rp
b25Db25zdHJ1Y3Rvci5oCShyZXZpc2lvbiA5MjM5MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0Z1bmN0aW9uQ29uc3RydWN0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtMjEsMjAg
KzIxLDIxIEBACiAjaWZuZGVmIEZ1bmN0aW9uQ29uc3RydWN0b3JfaAogI2RlZmluZSBGdW5jdGlv
bkNvbnN0cnVjdG9yX2gKIAorI2luY2x1ZGUgIkZ1bmN0aW9uUHJvdG90eXBlLmgiCiAjaW5jbHVk
ZSAiSW50ZXJuYWxGdW5jdGlvbi5oIgogCiBuYW1lc3BhY2UgSlNDIHsKIAotICAgIGNsYXNzIEZ1
bmN0aW9uUHJvdG90eXBlOwotCiAgICAgY2xhc3MgRnVuY3Rpb25Db25zdHJ1Y3RvciA6IHB1Ymxp
YyBJbnRlcm5hbEZ1bmN0aW9uIHsKICAgICBwcml2YXRlOgogICAgICAgICBGdW5jdGlvbkNvbnN0
cnVjdG9yKEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgRnVuY3Rpb25Q
cm90b3R5cGUqKTsKICAgICAKICAgICBwdWJsaWM6Ci0gICAgICAgIHN0YXRpYyBGdW5jdGlvbkNv
bnN0cnVjdG9yKiBjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgRnVuY3Rpb25Qcm90b3R5cGUqIGZ1bmNQcm90
b3R5cGUpCisgICAgICAgIHN0YXRpYyBGdW5jdGlvbkNvbnN0cnVjdG9yKiBjcmVhdGUoRXhlY1N0
YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSwgRnVuY3Rpb25Qcm90b3R5cGUqIGZ1bmN0aW9uUHJvdG90eXBlKQogICAgICAgICB7Ci0g
ICAgICAgICAgICByZXR1cm4gbmV3IChhbGxvY2F0ZUNlbGw8RnVuY3Rpb25Db25zdHJ1Y3Rvcj4o
KmV4ZWMtPmhlYXAoKSkpIEZ1bmN0aW9uQ29uc3RydWN0b3IoZXhlYywgZ2xvYmFsT2JqZWN0LCBz
dHJ1Y3R1cmUsIGZ1bmNQcm90b3R5cGUpOworICAgICAgICAgICAgRnVuY3Rpb25Db25zdHJ1Y3Rv
ciogY29uc3RydWN0b3IgPSBuZXcgKGFsbG9jYXRlQ2VsbDxGdW5jdGlvbkNvbnN0cnVjdG9yPigq
ZXhlYy0+aGVhcCgpKSkgRnVuY3Rpb25Db25zdHJ1Y3RvcihleGVjLCBnbG9iYWxPYmplY3QsIHN0
cnVjdHVyZSwgZnVuY3Rpb25Qcm90b3R5cGUpOworICAgICAgICAgICAgY29uc3RydWN0b3ItPmlu
aXRQcm9wZXJ0aWVzKGV4ZWMtPmdsb2JhbERhdGEoKSwgSWRlbnRpZmllcihleGVjLCBmdW5jdGlv
blByb3RvdHlwZS0+Y2xhc3NJbmZvKCktPmNsYXNzTmFtZSkpOworICAgICAgICAgICAgcmV0dXJu
IGNvbnN0cnVjdG9yOwogICAgICAgICB9CiAKICAgICBwcml2YXRlOgpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uUHJvdG90eXBlLmNwcAkocmV2
aXNpb24gOTIzOTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvblBy
b3RvdHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM4LDcgKzM4LDcgQEAgc3RhdGljIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuYwogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgZnVuY3Rpb25Qcm90b0Z1bmNDYWxsKEV4ZWNTdGF0ZSopOwogCiBGdW5jdGlvblBy
b3RvdHlwZTo6RnVuY3Rpb25Qcm90b3R5cGUoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKLSAgICA6IEludGVybmFsRnVu
Y3Rpb24oJmV4ZWMtPmdsb2JhbERhdGEoKSwgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIGV4ZWMt
PnByb3BlcnR5TmFtZXMoKS5udWxsSWRlbnRpZmllcikKKyAgICA6IEludGVybmFsRnVuY3Rpb24o
Z2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUpCiB7CiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRp
b24oZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkubGVuZ3RoLCBqc051
bWJlcigwKSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5IHwgRG9udEVudW0pOwogfQpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvblByb3RvdHlwZS5oCShy
ZXZpc2lvbiA5MjM5MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9u
UHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTMyLDcgKzMyLDkgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgcHVibGljOgogICAgICAgICBzdGF0aWMgRnVuY3Rpb25Qcm90b3R5cGUqIGNyZWF0
ZShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVy
ZSogc3RydWN0dXJlKQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gbmV3IChhbGxvY2F0
ZUNlbGw8RnVuY3Rpb25Qcm90b3R5cGU+KCpleGVjLT5oZWFwKCkpKSBGdW5jdGlvblByb3RvdHlw
ZShleGVjLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSk7CisgICAgICAgICAgICBGdW5jdGlvblBy
b3RvdHlwZSogcHJvdG90eXBlID0gbmV3IChhbGxvY2F0ZUNlbGw8RnVuY3Rpb25Qcm90b3R5cGU+
KCpleGVjLT5oZWFwKCkpKSBGdW5jdGlvblByb3RvdHlwZShleGVjLCBnbG9iYWxPYmplY3QsIHN0
cnVjdHVyZSk7CisgICAgICAgICAgICBwcm90b3R5cGUtPmluaXRQcm9wZXJ0aWVzKGV4ZWMtPmds
b2JhbERhdGEoKSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLm51bGxJZGVudGlmaWVyKTsKKyAgICAg
ICAgICAgIHJldHVybiBwcm90b3R5cGU7CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIHZv
aWQgYWRkRnVuY3Rpb25Qcm9wZXJ0aWVzKEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KiwgU3Ry
dWN0dXJlKiBmdW5jdGlvblN0cnVjdHVyZSwgSlNGdW5jdGlvbioqIGNhbGxGdW5jdGlvbiwgSlNG
dW5jdGlvbioqIGFwcGx5RnVuY3Rpb24pOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSW50ZXJuYWxGdW5jdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSW50ZXJuYWxGdW5jdGlvbi5jcHAJKHJldmlzaW9uIDkyMzkzKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50ZXJuYWxGdW5jdGlvbi5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTQxLDYgKzQxLDEyIEBAIEludGVybmFsRnVuY3Rpb246OkludGVybmFsRnVu
Y3Rpb24oVlB0clMKIHsKIH0KIAorSW50ZXJuYWxGdW5jdGlvbjo6SW50ZXJuYWxGdW5jdGlvbihK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICA6
IEpTT2JqZWN0V2l0aEdsb2JhbE9iamVjdChnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSkKK3sKKyAg
ICBBU1NFUlQoaW5oZXJpdHMoJnNfaW5mbykpOworfQorCiBJbnRlcm5hbEZ1bmN0aW9uOjpJbnRl
cm5hbEZ1bmN0aW9uKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IElkZW50aWZpZXImIG5hbWUp
CiAgICAgOiBKU09iamVjdFdpdGhHbG9iYWxPYmplY3QoZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUp
CiB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRlcm5hbEZ1bmN0aW9u
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50ZXJuYWxG
dW5jdGlvbi5oCShyZXZpc2lvbiA5MjM5MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0ludGVybmFsRnVuY3Rpb24uaAkod29ya2luZyBjb3B5KQpAQCAtNTAsNyArNTAsMTIgQEAg
bmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIC8vIE9ubHkgdXNlZCB0byBhbGxvdyB1cyB0byBkZXRl
cm1pbmUgdGhlIEpTRnVuY3Rpb24gdnB0cgogICAgICAgICBJbnRlcm5hbEZ1bmN0aW9uKFZQdHJT
dGVhbGluZ0hhY2tUeXBlKTsKIAorICAgICAgICBJbnRlcm5hbEZ1bmN0aW9uKEpTR2xvYmFsT2Jq
ZWN0KiwgU3RydWN0dXJlKik7CiAgICAgICAgIEludGVybmFsRnVuY3Rpb24oSlNHbG9iYWxEYXRh
KiwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBjb25zdCBJZGVudGlmaWVyJik7CisgICAg
ICAgIHZvaWQgaW5pdFByb3BlcnRpZXMoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBjb25zdCBJ
ZGVudGlmaWVyJiBuYW1lKQorICAgICAgICB7CisgICAgICAgICAgICBwdXREaXJlY3QoZ2xvYmFs
RGF0YSwgZ2xvYmFsRGF0YS5wcm9wZXJ0eU5hbWVzLT5uYW1lLCBqc1N0cmluZygmZ2xvYmFsRGF0
YSwgbmFtZS5pc051bGwoKSA/ICIiIDogbmFtZS51c3RyaW5nKCkpLCBEb250RGVsZXRlIHwgUmVh
ZE9ubHkgfCBEb250RW51bSk7CisgICAgICAgIH0KIAogICAgIHByaXZhdGU6CiAgICAgICAgIHZp
cnR1YWwgQ2FsbFR5cGUgZ2V0Q2FsbERhdGEoQ2FsbERhdGEmKSA9IDA7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0J5dGVBcnJheS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCeXRlQXJyYXkuY3BwCShyZXZpc2lvbiA5MjM5
MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQnl0ZUFycmF5LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMzksMTIgKzM5LDEzIEBAIEpTQnl0ZUFycmF5OjpKU0J5dGVBcnJheShF
eGVjU3RhdGUqIGV4ZWMKICAgICA6IEpTTm9uRmluYWxPYmplY3QoZXhlYy0+Z2xvYmFsRGF0YSgp
LCBzdHJ1Y3R1cmUpCiAgICAgLCBtX3N0b3JhZ2Uoc3RvcmFnZSkKIHsKLSAgICBwdXREaXJlY3Qo
ZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5nbG9iYWxEYXRhKCkucHJvcGVydHlOYW1lcy0+bGVu
Z3RoLCBqc051bWJlcihtX3N0b3JhZ2UtPmxlbmd0aCgpKSwgUmVhZE9ubHkgfCBEb250RGVsZXRl
KTsKIH0KICAgICAgICAgCiBKU0J5dGVBcnJheSogSlNCeXRlQXJyYXk6OmNyZWF0ZShFeGVjU3Rh
dGUqIGV4ZWMsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBCeXRlQXJyYXkqIHN0b3JhZ2UpCiB7Ci0g
ICAgcmV0dXJuIG5ldyAoYWxsb2NhdGVDZWxsPEpTQnl0ZUFycmF5PigqZXhlYy0+aGVhcCgpKSkg
SlNCeXRlQXJyYXkoZXhlYywgc3RydWN0dXJlLCBzdG9yYWdlKTsKKyAgICBKU0J5dGVBcnJheSog
YXJyYXkgPSBuZXcgKGFsbG9jYXRlQ2VsbDxKU0J5dGVBcnJheT4oKmV4ZWMtPmhlYXAoKSkpIEpT
Qnl0ZUFycmF5KGV4ZWMsIHN0cnVjdHVyZSwgc3RvcmFnZSk7CisgICAgYXJyYXktPnB1dERpcmVj
dChleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPmdsb2JhbERhdGEoKS5wcm9wZXJ0eU5hbWVzLT5s
ZW5ndGgsIGpzTnVtYmVyKGFycmF5LT5tX3N0b3JhZ2UtPmxlbmd0aCgpKSwgUmVhZE9ubHkgfCBE
b250RGVsZXRlKTsKKyAgICByZXR1cm4gYXJyYXk7CiB9CiAKICNpZiAhQVNTRVJUX0RJU0FCTEVE
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuaAkocmV2aXNpb24gOTIz
OTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuaAkod29ya2luZyBj
b3B5KQpAQCAtMzUwLDcgKzM1MCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHsKICAgICAgICAg
cmV0dXJuIGhlYXAuYWxsb2NhdGUoc2l6ZW9mKFQpKTsKICAgICB9Ci0gICAgICAgIAorCiB9IC8v
IG5hbWVzcGFjZSBKU0MKIAogI2VuZGlmIC8vIEpTQ2VsbF9oCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcAkocmV2aXNpb24gOTIzOTMpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNjEsMjcgKzYxLDE5IEBAIEpTRnVuY3Rpb246OkpTRnVuY3Rpb24oVlB0clN0ZWFsaW5n
SGFja1QKIHsKIH0KIAotSlNGdW5jdGlvbjo6SlNGdW5jdGlvbihFeGVjU3RhdGUqIGV4ZWMsIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBpbnQgbGVu
Z3RoLCBjb25zdCBJZGVudGlmaWVyJiBuYW1lLCBOYXRpdmVFeGVjdXRhYmxlKiB0aHVuaykKK0pT
RnVuY3Rpb246OkpTRnVuY3Rpb24oRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgTmF0aXZlRXhlY3V0YWJsZSogdGh1bmsp
CiAgICAgOiBCYXNlKGdsb2JhbE9iamVjdCwgc3RydWN0dXJlKQogICAgICwgbV9leGVjdXRhYmxl
KGV4ZWMtPmdsb2JhbERhdGEoKSwgdGhpcywgdGh1bmspCiAgICAgLCBtX3Njb3BlQ2hhaW4oZXhl
Yy0+Z2xvYmFsRGF0YSgpLCB0aGlzLCBnbG9iYWxPYmplY3QtPmdsb2JhbFNjb3BlQ2hhaW4oKSkK
IHsKICAgICBBU1NFUlQoaW5oZXJpdHMoJnNfaW5mbykpOwotICAgIHB1dERpcmVjdChleGVjLT5n
bG9iYWxEYXRhKCksIGV4ZWMtPmdsb2JhbERhdGEoKS5wcm9wZXJ0eU5hbWVzLT5uYW1lLCBqc1N0
cmluZyhleGVjLCBuYW1lLmlzTnVsbCgpID8gIiIgOiBuYW1lLnVzdHJpbmcoKSksIERvbnREZWxl
dGUgfCBSZWFkT25seSB8IERvbnRFbnVtKTsKLSAgICBwdXREaXJlY3QoZXhlYy0+Z2xvYmFsRGF0
YSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkubGVuZ3RoLCBqc051bWJlcihsZW5ndGgpLCBEb250
RGVsZXRlIHwgUmVhZE9ubHkgfCBEb250RW51bSk7CiB9CiAKLUpTRnVuY3Rpb246OkpTRnVuY3Rp
b24oRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSwgaW50IGxlbmd0aCwgY29uc3QgSWRlbnRpZmllciYgbmFtZSwgTmF0aXZl
RnVuY3Rpb24gZnVuYykKK0pTRnVuY3Rpb246OkpTRnVuY3Rpb24oRXhlY1N0YXRlKiBleGVjLCBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAgICA6
IEJhc2UoZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUpCiAgICAgLCBtX3Njb3BlQ2hhaW4oZXhlYy0+
Z2xvYmFsRGF0YSgpLCB0aGlzLCBnbG9iYWxPYmplY3QtPmdsb2JhbFNjb3BlQ2hhaW4oKSkKIHsK
ICAgICBBU1NFUlQoaW5oZXJpdHMoJnNfaW5mbykpOwotICAgIAotICAgIC8vIENhbid0IGRvIHRo
aXMgZHVyaW5nIGluaXRpYWxpemF0aW9uIGJlY2F1c2UgZ2V0SG9zdEZ1bmN0aW9uIG1pZ2h0IGRv
IGEgR0MgYWxsb2NhdGlvbi4KLSAgICBtX2V4ZWN1dGFibGUuc2V0KGV4ZWMtPmdsb2JhbERhdGEo
KSwgdGhpcywgZXhlYy0+Z2xvYmFsRGF0YSgpLmdldEhvc3RGdW5jdGlvbihmdW5jKSk7Ci0gICAg
Ci0gICAgcHV0RGlyZWN0KGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+Z2xvYmFsRGF0YSgpLnBy
b3BlcnR5TmFtZXMtPm5hbWUsIGpzU3RyaW5nKGV4ZWMsIG5hbWUuaXNOdWxsKCkgPyAiIiA6IG5h
bWUudXN0cmluZygpKSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5IHwgRG9udEVudW0pOwotICAgIHB1
dERpcmVjdChleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5sZW5ndGgs
IGpzTnVtYmVyKGxlbmd0aCksIERvbnREZWxldGUgfCBSZWFkT25seSB8IERvbnRFbnVtKTsKIH0K
IAogSlNGdW5jdGlvbjo6SlNGdW5jdGlvbihFeGVjU3RhdGUqIGV4ZWMsIEZ1bmN0aW9uRXhlY3V0
YWJsZSogZXhlY3V0YWJsZSwgU2NvcGVDaGFpbk5vZGUqIHNjb3BlQ2hhaW5Ob2RlKQpAQCAtOTAs
OCArODIsMzIgQEAgSlNGdW5jdGlvbjo6SlNGdW5jdGlvbihFeGVjU3RhdGUqIGV4ZWMsIAogICAg
ICwgbV9zY29wZUNoYWluKGV4ZWMtPmdsb2JhbERhdGEoKSwgdGhpcywgc2NvcGVDaGFpbk5vZGUp
CiB7CiAgICAgQVNTRVJUKGluaGVyaXRzKCZzX2luZm8pKTsKLSAgICBzZXRTdHJ1Y3R1cmUoZXhl
Yy0+Z2xvYmFsRGF0YSgpLCBzY29wZUNoYWluTm9kZS0+Z2xvYmFsT2JqZWN0LT5uYW1lZEZ1bmN0
aW9uU3RydWN0dXJlKCkpOwotICAgIHB1dERpcmVjdE9mZnNldChleGVjLT5nbG9iYWxEYXRhKCks
IHNjb3BlQ2hhaW5Ob2RlLT5nbG9iYWxPYmplY3QtPmZ1bmN0aW9uTmFtZU9mZnNldCgpLCBleGVj
dXRhYmxlLT5uYW1lVmFsdWUoKSk7Cit9CisKK0pTRnVuY3Rpb24qIEpTRnVuY3Rpb246OmNyZWF0
ZShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVy
ZSogc3RydWN0dXJlLCBpbnQgbGVuZ3RoLCBjb25zdCBJZGVudGlmaWVyJiBuYW1lLCBOYXRpdmVG
dW5jdGlvbiBuYXRpdmVGdW5jdGlvbikKK3sKKyAgICBKU0Z1bmN0aW9uKiBmdW5jdGlvbiA9IG5l
dyAoYWxsb2NhdGVDZWxsPEpTRnVuY3Rpb24+KCpleGVjLT5oZWFwKCkpKSBKU0Z1bmN0aW9uKGV4
ZWMsIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlKTsKKyAgICAvLyBDYW4ndCBkbyB0aGlzIGR1cmlu
ZyBpbml0aWFsaXphdGlvbiBiZWNhdXNlIGdldEhvc3RGdW5jdGlvbiBtaWdodCBkbyBhIEdDIGFs
bG9jYXRpb24uCisgICAgZnVuY3Rpb24tPm1fZXhlY3V0YWJsZS5zZXQoZXhlYy0+Z2xvYmFsRGF0
YSgpLCBmdW5jdGlvbiwgZXhlYy0+Z2xvYmFsRGF0YSgpLmdldEhvc3RGdW5jdGlvbihuYXRpdmVG
dW5jdGlvbikpOworICAgIGZ1bmN0aW9uLT5wdXREaXJlY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBl
eGVjLT5nbG9iYWxEYXRhKCkucHJvcGVydHlOYW1lcy0+bmFtZSwganNTdHJpbmcoZXhlYywgbmFt
ZS5pc051bGwoKSA/ICIiIDogbmFtZS51c3RyaW5nKCkpLCBEb250RGVsZXRlIHwgUmVhZE9ubHkg
fCBEb250RW51bSk7CisgICAgZnVuY3Rpb24tPnB1dERpcmVjdChleGVjLT5nbG9iYWxEYXRhKCks
IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5sZW5ndGgsIGpzTnVtYmVyKGxlbmd0aCksIERvbnREZWxl
dGUgfCBSZWFkT25seSB8IERvbnRFbnVtKTsKKyAgICByZXR1cm4gZnVuY3Rpb247Cit9CisKK0pT
RnVuY3Rpb24qIEpTRnVuY3Rpb246OmNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBpbnQgbGVuZ3RoLCBjb25z
dCBJZGVudGlmaWVyJiBuYW1lLCBOYXRpdmVFeGVjdXRhYmxlKiBuYXRpdmVFeGVjKQoreworICAg
IEpTRnVuY3Rpb24qIGZ1bmN0aW9uID0gbmV3IChhbGxvY2F0ZUNlbGw8SlNGdW5jdGlvbj4oKmV4
ZWMtPmhlYXAoKSkpIEpTRnVuY3Rpb24oZXhlYywgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIG5h
dGl2ZUV4ZWMpOworICAgIGZ1bmN0aW9uLT5wdXREaXJlY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBl
eGVjLT5nbG9iYWxEYXRhKCkucHJvcGVydHlOYW1lcy0+bmFtZSwganNTdHJpbmcoZXhlYywgbmFt
ZS5pc051bGwoKSA/ICIiIDogbmFtZS51c3RyaW5nKCkpLCBEb250RGVsZXRlIHwgUmVhZE9ubHkg
fCBEb250RW51bSk7CisgICAgZnVuY3Rpb24tPnB1dERpcmVjdChleGVjLT5nbG9iYWxEYXRhKCks
IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5sZW5ndGgsIGpzTnVtYmVyKGxlbmd0aCksIERvbnREZWxl
dGUgfCBSZWFkT25seSB8IERvbnRFbnVtKTsKKyAgICByZXR1cm4gZnVuY3Rpb247Cit9CisKK0pT
RnVuY3Rpb24qIEpTRnVuY3Rpb246OmNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIEZ1bmN0aW9uRXhl
Y3V0YWJsZSogZXhlY3V0YWJsZSwgU2NvcGVDaGFpbk5vZGUqIHNjb3BlQ2hhaW4pCit7CisgICAg
SlNGdW5jdGlvbiogZnVuY3Rpb24gPSBuZXcgKGFsbG9jYXRlQ2VsbDxKU0Z1bmN0aW9uPigqZXhl
Yy0+aGVhcCgpKSkgSlNGdW5jdGlvbihleGVjLCBleGVjdXRhYmxlLCBzY29wZUNoYWluKTsKKyAg
ICBmdW5jdGlvbi0+c2V0U3RydWN0dXJlKGV4ZWMtPmdsb2JhbERhdGEoKSwgc2NvcGVDaGFpbi0+
Z2xvYmFsT2JqZWN0LT5uYW1lZEZ1bmN0aW9uU3RydWN0dXJlKCkpOworICAgIGZ1bmN0aW9uLT5w
dXREaXJlY3RPZmZzZXQoZXhlYy0+Z2xvYmFsRGF0YSgpLCBzY29wZUNoYWluLT5nbG9iYWxPYmpl
Y3QtPmZ1bmN0aW9uTmFtZU9mZnNldCgpLCBleGVjdXRhYmxlLT5uYW1lVmFsdWUoKSk7CisgICAg
cmV0dXJuIGZ1bmN0aW9uOwogfQogCiBKU0Z1bmN0aW9uOjp+SlNGdW5jdGlvbigpCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5oCShyZXZpc2lvbiA5MjM5
MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uaAkod29ya2lu
ZyBjb3B5KQpAQCAtMjksMTEgKzI5LDkgQEAKIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3Mg
RXhlY3V0YWJsZUJhc2U7Ci0gICAgY2xhc3MgRnVuY3Rpb25FeGVjdXRhYmxlOwogICAgIGNsYXNz
IEZ1bmN0aW9uUHJvdG90eXBlOwogICAgIGNsYXNzIEpTQWN0aXZhdGlvbjsKICAgICBjbGFzcyBK
U0dsb2JhbE9iamVjdDsKLSAgICBjbGFzcyBOYXRpdmVFeGVjdXRhYmxlOwogICAgIGNsYXNzIFZQ
dHJIYWNrRXhlY3V0YWJsZTsKICAgICBuYW1lc3BhY2UgREZHIHsKICAgICBjbGFzcyBKSVRDb2Rl
R2VuZXJhdG9yOwpAQCAtNDgsMjMgKzQ2LDE1IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAg
IHR5cGVkZWYgSlNPYmplY3RXaXRoR2xvYmFsT2JqZWN0IEJhc2U7CiAKLSAgICAgICAgSlNGdW5j
dGlvbihFeGVjU3RhdGUqLCBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIGludCBsZW5ndGgs
IGNvbnN0IElkZW50aWZpZXImLCBOYXRpdmVGdW5jdGlvbik7Ci0gICAgICAgIEpTRnVuY3Rpb24o
RXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBpbnQgbGVuZ3RoLCBjb25z
dCBJZGVudGlmaWVyJiwgTmF0aXZlRXhlY3V0YWJsZSopOworICAgIHByaXZhdGU6CisgICAgICAg
IEpTRnVuY3Rpb24oRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqKTsKKyAg
ICAgICAgSlNGdW5jdGlvbihFeGVjU3RhdGUqLCBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSos
IE5hdGl2ZUV4ZWN1dGFibGUqKTsKICAgICAgICAgSlNGdW5jdGlvbihFeGVjU3RhdGUqLCBGdW5j
dGlvbkV4ZWN1dGFibGUqLCBTY29wZUNoYWluTm9kZSopOwogICAgICAgICAKICAgICBwdWJsaWM6
Ci0gICAgICAgIHN0YXRpYyBKU0Z1bmN0aW9uKiBjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgaW50IGxlbmd0
aCwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIE5hdGl2ZUZ1bmN0aW9uIG5hdGl2ZUZ1bmMpCi0g
ICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBuZXcgKGFsbG9jYXRlQ2VsbDxKU0Z1bmN0aW9u
PigqZXhlYy0+aGVhcCgpKSkgSlNGdW5jdGlvbihleGVjLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVy
ZSwgbGVuZ3RoLCBpZGVudCwgbmF0aXZlRnVuYyk7Ci0gICAgICAgIH0KLSAgICAgICAgc3RhdGlj
IEpTRnVuY3Rpb24qIGNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBpbnQgbGVuZ3RoLCBjb25zdCBJZGVudGlm
aWVyJiBpZGVudCwgTmF0aXZlRXhlY3V0YWJsZSogbmF0aXZlRXhlYykKLSAgICAgICAgewotICAg
ICAgICAgICAgcmV0dXJuIG5ldyAoYWxsb2NhdGVDZWxsPEpTRnVuY3Rpb24+KCpleGVjLT5oZWFw
KCkpKSBKU0Z1bmN0aW9uKGV4ZWMsIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBsZW5ndGgsIGlk
ZW50LCBuYXRpdmVFeGVjKTsKLSAgICAgICAgfQotICAgICAgICBzdGF0aWMgSlNGdW5jdGlvbiog
Y3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgRnVuY3Rpb25FeGVjdXRhYmxlKiBmdW5jRXhlYywgU2Nv
cGVDaGFpbk5vZGUqIHNjb3BlQ2hhaW4pCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBu
ZXcgKGFsbG9jYXRlQ2VsbDxKU0Z1bmN0aW9uPigqZXhlYy0+aGVhcCgpKSkgSlNGdW5jdGlvbihl
eGVjLCBmdW5jRXhlYywgc2NvcGVDaGFpbik7Ci0gICAgICAgIH0KKyAgICAgICAgc3RhdGljIEpT
RnVuY3Rpb24qIGNyZWF0ZShFeGVjU3RhdGUqLCBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSos
IGludCBsZW5ndGgsIGNvbnN0IElkZW50aWZpZXImIG5hbWUsIE5hdGl2ZUZ1bmN0aW9uKTsKKyAg
ICAgICAgc3RhdGljIEpTRnVuY3Rpb24qIGNyZWF0ZShFeGVjU3RhdGUqLCBKU0dsb2JhbE9iamVj
dCosIFN0cnVjdHVyZSosIGludCBsZW5ndGgsIGNvbnN0IElkZW50aWZpZXImIG5hbWUsIE5hdGl2
ZUV4ZWN1dGFibGUqKTsKKyAgICAgICAgc3RhdGljIEpTRnVuY3Rpb24qIGNyZWF0ZShFeGVjU3Rh
dGUqLCBGdW5jdGlvbkV4ZWN1dGFibGUqIGZ1bmNFeGVjLCBTY29wZUNoYWluTm9kZSopOwogICAg
ICAgICAKICAgICAgICAgdmlydHVhbCB+SlNGdW5jdGlvbigpOwogCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgJKHJldmlzaW9uIDkyMzkz
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAkod29y
a2luZyBjb3B5KQpAQCAtMTQ0LDcgKzE0NCw5IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHB1Ymxp
YzoKICAgICAgICAgc3RhdGljIEpTR2xvYmFsT2JqZWN0KiBjcmVhdGUoSlNHbG9iYWxEYXRhJiBn
bG9iYWxEYXRhLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAgICAgICAgewotICAgICAgICAgICAg
cmV0dXJuIG5ldyAoYWxsb2NhdGVDZWxsPEpTR2xvYmFsT2JqZWN0PihnbG9iYWxEYXRhLmhlYXAp
KSBKU0dsb2JhbE9iamVjdChnbG9iYWxEYXRhLCBzdHJ1Y3R1cmUpOworICAgICAgICAgICAgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG5ldyAoYWxsb2NhdGVDZWxsPEpTR2xvYmFsT2Jq
ZWN0PihnbG9iYWxEYXRhLmhlYXApKSBKU0dsb2JhbE9iamVjdChnbG9iYWxEYXRhLCBzdHJ1Y3R1
cmUpOworICAgICAgICAgICAgZ2xvYmFsT2JqZWN0LT5pbml0KGdsb2JhbE9iamVjdCk7CisgICAg
ICAgICAgICByZXR1cm4gZ2xvYmFsT2JqZWN0OwogICAgICAgICB9CiAKICAgICAgICAgc3RhdGlj
IEpTX0VYUE9SVERBVEEgY29uc3QgQ2xhc3NJbmZvIHNfaW5mbzsKQEAgLTE1OSw3ICsxNjEsNiBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgewogICAgICAgICAgICAgQ09NUElMRV9BU1NFUlQo
SlNHbG9iYWxPYmplY3Q6OkFub255bW91c1Nsb3RDb3VudCA9PSAxLCBKU0dsb2JhbE9iamVjdF9o
YXNfb25seV9hX3NpbmdsZV9zbG90KTsKICAgICAgICAgICAgIHB1dFRoaXNUb0Fub255bW91c1Zh
bHVlKDApOwotICAgICAgICAgICAgaW5pdCh0aGlzKTsKICAgICAgICAgfQogCiAgICAgICAgIEpT
R2xvYmFsT2JqZWN0KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUsIEpTT2JqZWN0KiB0aGlzVmFsdWUpCkBAIC0zMTIsMTAgKzMxMywxMSBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICAgICAgICAgIHVuc2lnbmVkIGF0dHJpYnV0ZXM7CiAgICAgICAgIH07CiAgICAg
ICAgIHZvaWQgYWRkU3RhdGljR2xvYmFscyhHbG9iYWxQcm9wZXJ0eUluZm8qLCBpbnQgY291bnQp
OwotCi0gICAgcHJpdmF0ZToKKyAgICAgICAgCiAgICAgICAgIC8vIEZJWE1FOiBGb2xkIHJlc2V0
IGludG8gaW5pdC4KICAgICAgICAgdm9pZCBpbml0KEpTT2JqZWN0KiB0aGlzVmFsdWUpOworCisg
ICAgcHJpdmF0ZToKICAgICAgICAgdm9pZCByZXNldChKU1ZhbHVlIHByb3RvdHlwZSk7CiAKICAg
ICAgICAgdm9pZCBzZXRSZWdpc3RlcnMoV3JpdGVCYXJyaWVyPFVua25vd24+KiByZWdpc3RlcnMs
IFBhc3NPd25BcnJheVB0cjxXcml0ZUJhcnJpZXI8VW5rbm93bj4gPiByZWdpc3RlckFycmF5LCBz
aXplX3QgY291bnQpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9w
ZXJ0eU5hbWVJdGVyYXRvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5jcHAJKHJldmlzaW9uIDkyMzkzKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTM3LDE1ICszNywxMiBAQCBBU1NFUlRfQ0xBU1NfRklUU19JTl9D
RUxMKEpTUHJvcGVydHlOYW1lCiAKIGNvbnN0IENsYXNzSW5mbyBKU1Byb3BlcnR5TmFtZUl0ZXJh
dG9yOjpzX2luZm8gPSB7ICJKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yIiwgMCwgMCwgMCB9OwogCi1p
bmxpbmUgSlNQcm9wZXJ0eU5hbWVJdGVyYXRvcjo6SlNQcm9wZXJ0eU5hbWVJdGVyYXRvcihFeGVj
U3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZUFycmF5RGF0YSogcHJvcGVydHlOYW1lQXJyYXlEYXRh
LCBzaXplX3QgbnVtQ2FjaGVhYmxlU2xvdHMpCitpbmxpbmUgSlNQcm9wZXJ0eU5hbWVJdGVyYXRv
cjo6SlNQcm9wZXJ0eU5hbWVJdGVyYXRvcihFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZUFy
cmF5RGF0YTo6UHJvcGVydHlOYW1lVmVjdG9yJiBwcm9wZXJ0eU5hbWVWZWN0b3IsIHNpemVfdCBu
dW1DYWNoZWFibGVTbG90cykKICAgICA6IEpTQ2VsbChleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMt
Pmdsb2JhbERhdGEoKS5wcm9wZXJ0eU5hbWVJdGVyYXRvclN0cnVjdHVyZS5nZXQoKSkKICAgICAs
IG1fbnVtQ2FjaGVhYmxlU2xvdHMobnVtQ2FjaGVhYmxlU2xvdHMpCi0gICAgLCBtX2pzU3RyaW5n
c1NpemUocHJvcGVydHlOYW1lQXJyYXlEYXRhLT5wcm9wZXJ0eU5hbWVWZWN0b3IoKS5zaXplKCkp
CisgICAgLCBtX2pzU3RyaW5nc1NpemUocHJvcGVydHlOYW1lVmVjdG9yLnNpemUoKSkKICAgICAs
IG1fanNTdHJpbmdzKGFkb3B0QXJyYXlQdHIobmV3IFdyaXRlQmFycmllcjxVbmtub3duPlttX2pz
U3RyaW5nc1NpemVdKSkKIHsKLSAgICBQcm9wZXJ0eU5hbWVBcnJheURhdGE6OlByb3BlcnR5TmFt
ZVZlY3RvciYgcHJvcGVydHlOYW1lVmVjdG9yID0gcHJvcGVydHlOYW1lQXJyYXlEYXRhLT5wcm9w
ZXJ0eU5hbWVWZWN0b3IoKTsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fanNTdHJpbmdz
U2l6ZTsgKytpKQotICAgICAgICBtX2pzU3RyaW5nc1tpXS5zZXQoZXhlYy0+Z2xvYmFsRGF0YSgp
LCB0aGlzLCBqc093bmVkU3RyaW5nKGV4ZWMsIHByb3BlcnR5TmFtZVZlY3RvcltpXS51c3RyaW5n
KCkpKTsKIH0KIAogSlNQcm9wZXJ0eU5hbWVJdGVyYXRvciogSlNQcm9wZXJ0eU5hbWVJdGVyYXRv
cjo6Y3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIG8pCkBAIC02Miw3ICs1OSw3IEBA
IEpTUHJvcGVydHlOYW1lSXRlcmF0b3IqIEpTUHJvcGVydHlOYW1lSXQKICAgICAgICAgIW8tPnN0
cnVjdHVyZSgpLT50eXBlSW5mbygpLm92ZXJyaWRlc0dldFByb3BlcnR5TmFtZXMoKSkKICAgICAg
ICAgbnVtQ2FjaGVhYmxlU2xvdHMgPSBvLT5zdHJ1Y3R1cmUoKS0+cHJvcGVydHlTdG9yYWdlU2l6
ZSgpOwogICAgIAotICAgIEpTUHJvcGVydHlOYW1lSXRlcmF0b3IqIGpzUHJvcGVydHlOYW1lSXRl
cmF0b3IgPSBuZXcgKGFsbG9jYXRlQ2VsbDxKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yPigqZXhlYy0+
aGVhcCgpKSkgSlNQcm9wZXJ0eU5hbWVJdGVyYXRvcihleGVjLCBwcm9wZXJ0eU5hbWVzLmRhdGEo
KSwgbnVtQ2FjaGVhYmxlU2xvdHMpOworICAgIEpTUHJvcGVydHlOYW1lSXRlcmF0b3IqIGpzUHJv
cGVydHlOYW1lSXRlcmF0b3IgPSBjcmVhdGUoZXhlYywgcHJvcGVydHlOYW1lcy5kYXRhKCksIG51
bUNhY2hlYWJsZVNsb3RzKTsKIAogICAgIGlmIChvLT5zdHJ1Y3R1cmUoKS0+aXNEaWN0aW9uYXJ5
KCkpCiAgICAgICAgIHJldHVybiBqc1Byb3BlcnR5TmFtZUl0ZXJhdG9yOwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0
b3IuaAkocmV2aXNpb24gOTIzOTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ2LDcgKzQ2LDExIEBA
IG5hbWVzcGFjZSBKU0MgewogICAgICAgICBzdGF0aWMgSlNQcm9wZXJ0eU5hbWVJdGVyYXRvciog
Y3JlYXRlKEV4ZWNTdGF0ZSosIEpTT2JqZWN0Kik7CiAgICAgICAgIHN0YXRpYyBKU1Byb3BlcnR5
TmFtZUl0ZXJhdG9yKiBjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWVBcnJheURh
dGEqIHByb3BlcnR5TmFtZUFycmF5RGF0YSwgc2l6ZV90IG51bUNhY2hlYWJsZVNsb3QpCiAgICAg
ICAgIHsKLSAgICAgICAgICAgIHJldHVybiBuZXcgKGFsbG9jYXRlQ2VsbDxKU1Byb3BlcnR5TmFt
ZUl0ZXJhdG9yPigqZXhlYy0+aGVhcCgpKSkgSlNQcm9wZXJ0eU5hbWVJdGVyYXRvcihleGVjLCBw
cm9wZXJ0eU5hbWVBcnJheURhdGEsIG51bUNhY2hlYWJsZVNsb3QpOworICAgICAgICAgICAgUHJv
cGVydHlOYW1lQXJyYXlEYXRhOjpQcm9wZXJ0eU5hbWVWZWN0b3ImIHByb3BlcnR5TmFtZVZlY3Rv
ciA9IHByb3BlcnR5TmFtZUFycmF5RGF0YS0+cHJvcGVydHlOYW1lVmVjdG9yKCk7CisgICAgICAg
ICAgICBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yKiBpdGVyYXRvciA9ICBuZXcgKGFsbG9jYXRlQ2Vs
bDxKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yPigqZXhlYy0+aGVhcCgpKSkgSlNQcm9wZXJ0eU5hbWVJ
dGVyYXRvcihleGVjLCBwcm9wZXJ0eU5hbWVWZWN0b3IsIG51bUNhY2hlYWJsZVNsb3QpOworICAg
ICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBpdGVyYXRvci0+bV9qc1N0cmluZ3NTaXpl
OyArK2kpCisgICAgICAgICAgICAgICAgaXRlcmF0b3ItPm1fanNTdHJpbmdzW2ldLnNldChleGVj
LT5nbG9iYWxEYXRhKCksIGl0ZXJhdG9yLCBqc093bmVkU3RyaW5nKGV4ZWMsIHByb3BlcnR5TmFt
ZVZlY3RvcltpXS51c3RyaW5nKCkpKTsKKyAgICAgICAgICAgIHJldHVybiBpdGVyYXRvcjsKICAg
ICAgICAgfQogICAgICAgICAKICAgICAgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0
dXJlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNWYWx1ZSBwcm90b3R5cGUpCkBAIC04Myw3
ICs4Nyw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBzdGF0aWMgY29uc3QgQ2xhc3NJbmZv
IHNfaW5mbzsKIAogICAgIHByaXZhdGU6Ci0gICAgICAgIEpTUHJvcGVydHlOYW1lSXRlcmF0b3Io
RXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lQXJyYXlEYXRhKiBwcm9wZXJ0eU5hbWVBcnJheURhdGEs
IHNpemVfdCBudW1DYWNoZWFibGVTbG90KTsKKyAgICAgICAgSlNQcm9wZXJ0eU5hbWVJdGVyYXRv
cihFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWVBcnJheURhdGE6OlByb3BlcnR5TmFtZVZlY3RvciYs
IHNpemVfdCBudW1DYWNoZWFibGVTbG90KTsKIAogICAgICAgICBXcml0ZUJhcnJpZXI8U3RydWN0
dXJlPiBtX2NhY2hlZFN0cnVjdHVyZTsKICAgICAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZUNo
YWluPiBtX2NhY2hlZFByb3RvdHlwZUNoYWluOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvci5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvci5jcHAJKHJldmlz
aW9uIDkyMzkzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZlRXJyb3JD
b25zdHJ1Y3Rvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyLDE4ICszMiwyNCBAQCBBU1NFUlRf
Q0xBU1NfRklUU19JTl9DRUxMKE5hdGl2ZUVycm9yQ29uCiAKIGNvbnN0IENsYXNzSW5mbyBOYXRp
dmVFcnJvckNvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJGdW5jdGlvbiIsICZJbnRlcm5hbEZ1bmN0
aW9uOjpzX2luZm8sIDAsIDAgfTsKIAotTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvcjo6TmF0aXZlRXJy
b3JDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBTdHJ1Y3R1cmUqIHByb3RvdHlwZVN0cnVjdHVyZSwg
Y29uc3QgVVN0cmluZyYgbmFtZUFuZE1lc3NhZ2UpCi0gICAgOiBJbnRlcm5hbEZ1bmN0aW9uKCZl
eGVjLT5nbG9iYWxEYXRhKCksIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBJZGVudGlmaWVyKGV4
ZWMsIG5hbWVBbmRNZXNzYWdlKSkKK05hdGl2ZUVycm9yQ29uc3RydWN0b3I6Ok5hdGl2ZUVycm9y
Q29uc3RydWN0b3IoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICA6IEludGVybmFsRnVuY3Rpb24oZ2xvYmFsT2Jq
ZWN0LCBzdHJ1Y3R1cmUpCiB7CiAgICAgQVNTRVJUKGluaGVyaXRzKCZzX2luZm8pKTsKKyAgICBt
X2Vycm9yU3RydWN0dXJlLnNldE1heUJlTnVsbChleGVjLT5nbG9iYWxEYXRhKCksIHRoaXMsIDAp
OworfQogCi0gICAgTmF0aXZlRXJyb3JQcm90b3R5cGUqIHByb3RvdHlwZSA9IE5hdGl2ZUVycm9y
UHJvdG90eXBlOjpjcmVhdGUoZXhlYywgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGVTdHJ1Y3R1cmUs
IG5hbWVBbmRNZXNzYWdlLCB0aGlzKTsKLQotICAgIHB1dERpcmVjdChleGVjLT5nbG9iYWxEYXRh
KCksIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5sZW5ndGgsIGpzTnVtYmVyKDEpLCBEb250RGVsZXRl
IHwgUmVhZE9ubHkgfCBEb250RW51bSk7IC8vIEVDTUEgMTUuMTEuNy41Ci0gICAgcHV0RGlyZWN0
KGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLnByb3RvdHlwZSwgcHJv
dG90eXBlLCBEb250RGVsZXRlIHwgUmVhZE9ubHkgfCBEb250RW51bSk7Ci0gICAgbV9lcnJvclN0
cnVjdHVyZS5zZXQoZXhlYy0+Z2xvYmFsRGF0YSgpLCB0aGlzLCBFcnJvckluc3RhbmNlOjpjcmVh
dGVTdHJ1Y3R1cmUoZXhlYy0+Z2xvYmFsRGF0YSgpLCBwcm90b3R5cGUpKTsKLSAgICBBU1NFUlQo
bV9lcnJvclN0cnVjdHVyZSk7Ci0gICAgQVNTRVJUKG1fZXJyb3JTdHJ1Y3R1cmUtPnR5cGVJbmZv
KCkudHlwZSgpID09IE9iamVjdFR5cGUpOworTmF0aXZlRXJyb3JDb25zdHJ1Y3RvciogTmF0aXZl
RXJyb3JDb25zdHJ1Y3Rvcjo6Y3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFN0cnVjdHVyZSogcHJvdG90eXBl
U3RydWN0dXJlLCBjb25zdCBVU3RyaW5nJiBuYW1lQW5kTWVzc2FnZSkKK3sKKyAgICBOYXRpdmVF
cnJvckNvbnN0cnVjdG9yKiBjb25zdHJ1Y3RvciA9IG5ldyAoYWxsb2NhdGVDZWxsPE5hdGl2ZUVy
cm9yQ29uc3RydWN0b3I+KCpleGVjLT5oZWFwKCkpKSBOYXRpdmVFcnJvckNvbnN0cnVjdG9yKGV4
ZWMsIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlKTsKKyAgICBOYXRpdmVFcnJvclByb3RvdHlwZSog
cHJvdG90eXBlID0gTmF0aXZlRXJyb3JQcm90b3R5cGU6OmNyZWF0ZShleGVjLCBnbG9iYWxPYmpl
Y3QsIHByb3RvdHlwZVN0cnVjdHVyZSwgbmFtZUFuZE1lc3NhZ2UsIGNvbnN0cnVjdG9yKTsKKyAg
ICBjb25zdHJ1Y3Rvci0+cHV0RGlyZWN0KGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+cHJvcGVy
dHlOYW1lcygpLmxlbmd0aCwganNOdW1iZXIoMSksIERvbnREZWxldGUgfCBSZWFkT25seSB8IERv
bnRFbnVtKTsgLy8gRUNNQSAxNS4xMS43LjUKKyAgICBjb25zdHJ1Y3Rvci0+cHV0RGlyZWN0KGV4
ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLnByb3RvdHlwZSwgcHJvdG90
eXBlLCBEb250RGVsZXRlIHwgUmVhZE9ubHkgfCBEb250RW51bSk7CisgICAgY29uc3RydWN0b3It
Pm1fZXJyb3JTdHJ1Y3R1cmUuc2V0KGV4ZWMtPmdsb2JhbERhdGEoKSwgY29uc3RydWN0b3IsIEVy
cm9ySW5zdGFuY2U6OmNyZWF0ZVN0cnVjdHVyZShleGVjLT5nbG9iYWxEYXRhKCksIHByb3RvdHlw
ZSkpOworICAgIGNvbnN0cnVjdG9yLT5pbml0UHJvcGVydGllcyhleGVjLT5nbG9iYWxEYXRhKCks
IElkZW50aWZpZXIoZXhlYywgbmFtZUFuZE1lc3NhZ2UpKTsKKyAgICBBU1NFUlQoY29uc3RydWN0
b3ItPm1fZXJyb3JTdHJ1Y3R1cmUpOworICAgIEFTU0VSVChjb25zdHJ1Y3Rvci0+bV9lcnJvclN0
cnVjdHVyZS0+dHlwZUluZm8oKS50eXBlKCkgPT0gT2JqZWN0VHlwZSk7CisgICAgcmV0dXJuIGNv
bnN0cnVjdG9yOwogfQogCiB2b2lkIE5hdGl2ZUVycm9yQ29uc3RydWN0b3I6OnZpc2l0Q2hpbGRy
ZW4oU2xvdFZpc2l0b3ImIHZpc2l0b3IpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9OYXRpdmVFcnJvckNvbnN0cnVjdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvci5oCShyZXZpc2lvbiA5MjM5
MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05hdGl2ZUVycm9yQ29uc3RydWN0
b3IuaAkod29ya2luZyBjb3B5KQpAQCAtMzAsMTQgKzMwLDggQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgY2xhc3MgTmF0aXZlRXJyb3JQcm90b3R5cGU7CiAKICAgICBjbGFzcyBOYXRpdmVFcnJvckNv
bnN0cnVjdG9yIDogcHVibGljIEludGVybmFsRnVuY3Rpb24gewotICAgIHByaXZhdGU6Ci0gICAg
ICAgIE5hdGl2ZUVycm9yQ29uc3RydWN0b3IoRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqLCBT
dHJ1Y3R1cmUqLCBTdHJ1Y3R1cmUqIHByb3RvdHlwZVN0cnVjdHVyZSwgY29uc3QgVVN0cmluZyYp
OwotCiAgICAgcHVibGljOgotICAgICAgICBzdGF0aWMgTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvciog
Y3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUsIFN0cnVjdHVyZSogcHJvdG90eXBlU3RydWN0dXJlLCBjb25zdCBV
U3RyaW5nJiBuYW1lQW5kTWVzc2FnZSkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIG5l
dyAoYWxsb2NhdGVDZWxsPE5hdGl2ZUVycm9yQ29uc3RydWN0b3I+KCpleGVjLT5oZWFwKCkpKSBO
YXRpdmVFcnJvckNvbnN0cnVjdG9yKGV4ZWMsIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBwcm90
b3R5cGVTdHJ1Y3R1cmUsIG5hbWVBbmRNZXNzYWdlKTsKLSAgICAgICAgfQorICAgICAgICBzdGF0
aWMgTmF0aXZlRXJyb3JDb25zdHJ1Y3RvciogY3JlYXRlKEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2Jq
ZWN0KiwgU3RydWN0dXJlKiwgU3RydWN0dXJlKiBwcm90b3R5cGVTdHJ1Y3R1cmUsIGNvbnN0IFVT
dHJpbmcmIG5hbWVBbmRNZXNzYWdlKTsKICAgICAgICAgCiAgICAgICAgIHN0YXRpYyBjb25zdCBD
bGFzc0luZm8gc19pbmZvOwogCkBAIC00OSw2ICs0Myw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAg
ICAgICBTdHJ1Y3R1cmUqIGVycm9yU3RydWN0dXJlKCkgeyByZXR1cm4gbV9lcnJvclN0cnVjdHVy
ZS5nZXQoKTsgfQogCiAgICAgcHJpdmF0ZToKKyAgICAgICAgTmF0aXZlRXJyb3JDb25zdHJ1Y3Rv
cihFeGVjU3RhdGUqLCBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSopOwogICAgICAgICBzdGF0
aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBPdmVycmlkZXNWaXNpdENoaWxkcmVu
IHwgSW50ZXJuYWxGdW5jdGlvbjo6U3RydWN0dXJlRmxhZ3M7CiAgICAgICAgIHZpcnR1YWwgQ29u
c3RydWN0VHlwZSBnZXRDb25zdHJ1Y3REYXRhKENvbnN0cnVjdERhdGEmKTsKICAgICAgICAgdmly
dHVhbCBDYWxsVHlwZSBnZXRDYWxsRGF0YShDYWxsRGF0YSYpOwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZlRXJyb3JQcm90b3R5cGUuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05hdGl2ZUVycm9yUHJvdG90eXBlLmNwcAko
cmV2aXNpb24gOTIzOTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OYXRpdmVF
cnJvclByb3RvdHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIyLDIwICsyMiwxNCBAQAogI2lu
Y2x1ZGUgIk5hdGl2ZUVycm9yUHJvdG90eXBlLmgiCiAKICNpbmNsdWRlICJKU0dsb2JhbE9iamVj
dC5oIgotI2luY2x1ZGUgIkpTU3RyaW5nLmgiCi0jaW5jbHVkZSAiTmF0aXZlRXJyb3JDb25zdHJ1
Y3Rvci5oIgotI2luY2x1ZGUgIlVTdHJpbmcuaCIKIAogbmFtZXNwYWNlIEpTQyB7CiAKIEFTU0VS
VF9DTEFTU19GSVRTX0lOX0NFTEwoTmF0aXZlRXJyb3JQcm90b3R5cGUpOwogCi1OYXRpdmVFcnJv
clByb3RvdHlwZTo6TmF0aXZlRXJyb3JQcm90b3R5cGUoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgY29uc3QgVVN0cmlu
ZyYgbmFtZUFuZE1lc3NhZ2UsIE5hdGl2ZUVycm9yQ29uc3RydWN0b3IqIGNvbnN0cnVjdG9yKQor
TmF0aXZlRXJyb3JQcm90b3R5cGU6Ok5hdGl2ZUVycm9yUHJvdG90eXBlKEV4ZWNTdGF0ZSogZXhl
YywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAg
ICAgOiBFcnJvclByb3RvdHlwZShleGVjLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSkKIHsKLSAg
ICBwdXREaXJlY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkubmFt
ZSwganNTdHJpbmcoZXhlYywgbmFtZUFuZE1lc3NhZ2UpLCBEb250RW51bSk7Ci0gICAgcHV0RGly
ZWN0KGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLm1lc3NhZ2UsIGpz
U3RyaW5nKGV4ZWMsIG5hbWVBbmRNZXNzYWdlKSwgRG9udEVudW0pOwotICAgIHB1dERpcmVjdChl
eGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5jb25zdHJ1Y3RvciwgY29u
c3RydWN0b3IsIERvbnRFbnVtKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OYXRpdmVFcnJvclByb3RvdHlwZS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05hdGl2ZUVycm9yUHJvdG90eXBl
LmgJKHJldmlzaW9uIDkyMzkzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0
aXZlRXJyb3JQcm90b3R5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMjIsMTggKzIyLDIyIEBACiAj
ZGVmaW5lIE5hdGl2ZUVycm9yUHJvdG90eXBlX2gKIAogI2luY2x1ZGUgIkVycm9yUHJvdG90eXBl
LmgiCisjaW5jbHVkZSAiTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvci5oIgogCiBuYW1lc3BhY2UgSlND
IHsKLSAgICBjbGFzcyBOYXRpdmVFcnJvckNvbnN0cnVjdG9yOwogCiAgICAgY2xhc3MgTmF0aXZl
RXJyb3JQcm90b3R5cGUgOiBwdWJsaWMgRXJyb3JQcm90b3R5cGUgewogICAgIHByaXZhdGU6Ci0g
ICAgICAgIE5hdGl2ZUVycm9yUHJvdG90eXBlKEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0Kiwg
U3RydWN0dXJlKiwgY29uc3QgVVN0cmluZyYsIE5hdGl2ZUVycm9yQ29uc3RydWN0b3IqKTsKKyAg
ICAgICAgTmF0aXZlRXJyb3JQcm90b3R5cGUoRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqLCBT
dHJ1Y3R1cmUqKTsKICAgICAKICAgICBwdWJsaWM6CiAgICAgICAgIHN0YXRpYyBOYXRpdmVFcnJv
clByb3RvdHlwZSogY3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IFVTdHJpbmcmIG5hbWVBbmRNZXNz
YWdlLCBOYXRpdmVFcnJvckNvbnN0cnVjdG9yKiBjb25zdHJ1Y3RvcikKICAgICAgICAgewotICAg
ICAgICAgICAgcmV0dXJuIG5ldyAoYWxsb2NhdGVDZWxsPE5hdGl2ZUVycm9yUHJvdG90eXBlPigq
ZXhlYy0+aGVhcCgpKSkgTmF0aXZlRXJyb3JQcm90b3R5cGUoZXhlYywgZ2xvYmFsT2JqZWN0LCBz
dHJ1Y3R1cmUsIG5hbWVBbmRNZXNzYWdlLCBjb25zdHJ1Y3Rvcik7CisgICAgICAgICAgICBOYXRp
dmVFcnJvclByb3RvdHlwZSogcHJvdG90eXBlID0gbmV3IChhbGxvY2F0ZUNlbGw8TmF0aXZlRXJy
b3JQcm90b3R5cGU+KCpleGVjLT5oZWFwKCkpKSBOYXRpdmVFcnJvclByb3RvdHlwZShleGVjLCBn
bG9iYWxPYmplY3QsIHN0cnVjdHVyZSk7CisgICAgICAgICAgICBwcm90b3R5cGUtPnB1dERpcmVj
dChleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5uYW1lLCBqc1N0cmlu
ZyhleGVjLCBuYW1lQW5kTWVzc2FnZSksIERvbnRFbnVtKTsKKyAgICAgICAgICAgIHByb3RvdHlw
ZS0+cHV0RGlyZWN0KGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLm1l
c3NhZ2UsIGpzU3RyaW5nKGV4ZWMsIG5hbWVBbmRNZXNzYWdlKSwgRG9udEVudW0pOworICAgICAg
ICAgICAgcHJvdG90eXBlLT5wdXREaXJlY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5wcm9w
ZXJ0eU5hbWVzKCkuY29uc3RydWN0b3IsIGNvbnN0cnVjdG9yLCBEb250RW51bSk7CisgICAgICAg
ICAgICByZXR1cm4gcHJvdG90eXBlOwogICAgICAgICB9CiAgICAgfTsKIApJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVtYmVyQ29uc3RydWN0b3IuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051bWJlckNvbnN0cnVjdG9yLmNwcAko
cmV2aXNpb24gOTIzOTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OdW1iZXJD
b25zdHJ1Y3Rvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU1LDcgKzU1LDcgQEAgY29uc3QgQ2xh
c3NJbmZvIE51bWJlckNvbnN0cnVjdG9yOjpzX2luZgogKi8KIAogTnVtYmVyQ29uc3RydWN0b3I6
Ok51bWJlckNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIE51bWJlclByb3RvdHlwZSogbnVtYmVyUHJv
dG90eXBlKQotICAgIDogSW50ZXJuYWxGdW5jdGlvbigmZXhlYy0+Z2xvYmFsRGF0YSgpLCBnbG9i
YWxPYmplY3QsIHN0cnVjdHVyZSwgSWRlbnRpZmllcihleGVjLCBudW1iZXJQcm90b3R5cGUtPnNf
aW5mby5jbGFzc05hbWUpKQorICAgIDogSW50ZXJuYWxGdW5jdGlvbihnbG9iYWxPYmplY3QsIHN0
cnVjdHVyZSkKIHsKICAgICBBU1NFUlQoaW5oZXJpdHMoJnNfaW5mbykpOwogCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OdW1iZXJDb25zdHJ1Y3Rvci5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051bWJlckNvbnN0cnVjdG9yLmgJKHJl
dmlzaW9uIDkyMzkzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVtYmVyQ29u
c3RydWN0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtMjIsMTkgKzIyLDIwIEBACiAjZGVmaW5lIE51
bWJlckNvbnN0cnVjdG9yX2gKIAogI2luY2x1ZGUgIkludGVybmFsRnVuY3Rpb24uaCIKKyNpbmNs
dWRlICJOdW1iZXJQcm90b3R5cGUuaCIKIAogbmFtZXNwYWNlIEpTQyB7CiAKLSAgICBjbGFzcyBO
dW1iZXJQcm90b3R5cGU7Ci0KICAgICBjbGFzcyBOdW1iZXJDb25zdHJ1Y3RvciA6IHB1YmxpYyBJ
bnRlcm5hbEZ1bmN0aW9uIHsKICAgICBwcml2YXRlOgogICAgICAgICBOdW1iZXJDb25zdHJ1Y3Rv
cihFeGVjU3RhdGUqLCBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIE51bWJlclByb3RvdHlw
ZSopOwogICAgICAgICAKICAgICBwdWJsaWM6Ci0gICAgICAgIHN0YXRpYyBOdW1iZXJDb25zdHJ1
Y3RvciogY3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIE51bWJlclByb3RvdHlwZSogbnVtUHJvdG90eXBlKQor
ICAgICAgICBzdGF0aWMgTnVtYmVyQ29uc3RydWN0b3IqIGNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMs
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBOdW1i
ZXJQcm90b3R5cGUqIG51bWJlclByb3RvdHlwZSkKICAgICAgICAgewotICAgICAgICAgICAgcmV0
dXJuIG5ldyAoYWxsb2NhdGVDZWxsPE51bWJlckNvbnN0cnVjdG9yPigqZXhlYy0+aGVhcCgpKSkg
TnVtYmVyQ29uc3RydWN0b3IoZXhlYywgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIG51bVByb3Rv
dHlwZSk7CisgICAgICAgICAgICBOdW1iZXJDb25zdHJ1Y3RvciogY29uc3RydWN0b3IgPSBuZXcg
KGFsbG9jYXRlQ2VsbDxOdW1iZXJDb25zdHJ1Y3Rvcj4oKmV4ZWMtPmhlYXAoKSkpIE51bWJlckNv
bnN0cnVjdG9yKGV4ZWMsIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBudW1iZXJQcm90b3R5cGUp
OworICAgICAgICAgICAgY29uc3RydWN0b3ItPmluaXRQcm9wZXJ0aWVzKGV4ZWMtPmdsb2JhbERh
dGEoKSwgSWRlbnRpZmllcihleGVjLCBudW1iZXJQcm90b3R5cGUtPnNfaW5mby5jbGFzc05hbWUp
KTsKKyAgICAgICAgICAgIHJldHVybiBjb25zdHJ1Y3RvcjsKICAgICAgICAgfQogCiAgICAgICAg
IHZpcnR1YWwgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRp
ZmllciYsIFByb3BlcnR5U2xvdCYpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvT2JqZWN0Q29uc3RydWN0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL09iamVjdENvbnN0cnVjdG9yLmNwcAkocmV2aXNpb24gOTIzOTMpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTc2LDcgKzc2LDcgQEAgY29uc3QgQ2xhc3NJbmZvIE9iamVjdENvbnN0cnVj
dG9yOjpzX2luZgogKi8KIAogT2JqZWN0Q29uc3RydWN0b3I6Ok9iamVjdENvbnN0cnVjdG9yKEV4
ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBz
dHJ1Y3R1cmUsIE9iamVjdFByb3RvdHlwZSogb2JqZWN0UHJvdG90eXBlKQotICAgIDogSW50ZXJu
YWxGdW5jdGlvbigmZXhlYy0+Z2xvYmFsRGF0YSgpLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwg
SWRlbnRpZmllcihleGVjLCAiT2JqZWN0IikpCisgICAgOiBJbnRlcm5hbEZ1bmN0aW9uKGdsb2Jh
bE9iamVjdCwgc3RydWN0dXJlKQogewogICAgIC8vIEVDTUEgMTUuMi4zLjEKICAgICBwdXREaXJl
Y3RXaXRob3V0VHJhbnNpdGlvbihleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPnByb3BlcnR5TmFt
ZXMoKS5wcm90b3R5cGUsIG9iamVjdFByb3RvdHlwZSwgRG9udEVudW0gfCBEb250RGVsZXRlIHwg
UmVhZE9ubHkpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29u
c3RydWN0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9P
YmplY3RDb25zdHJ1Y3Rvci5oCShyZXZpc2lvbiA5MjM5MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL09iamVjdENvbnN0cnVjdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTM0LDcg
KzM0LDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgcHVibGljOgogICAgICAgICBzdGF0aWMgT2Jq
ZWN0Q29uc3RydWN0b3IqIGNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBPYmplY3RQcm90b3R5cGUqIG9ialBy
b3RvdHlwZSkKICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIG5ldyAoYWxsb2NhdGVDZWxs
PE9iamVjdENvbnN0cnVjdG9yPigqZXhlYy0+aGVhcCgpKSkgT2JqZWN0Q29uc3RydWN0b3IoZXhl
YywgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIG9ialByb3RvdHlwZSk7CisgICAgICAgICAgICBP
YmplY3RDb25zdHJ1Y3RvciogY29uc3RydWN0b3IgPSBuZXcgKGFsbG9jYXRlQ2VsbDxPYmplY3RD
b25zdHJ1Y3Rvcj4oKmV4ZWMtPmhlYXAoKSkpIE9iamVjdENvbnN0cnVjdG9yKGV4ZWMsIGdsb2Jh
bE9iamVjdCwgc3RydWN0dXJlLCBvYmpQcm90b3R5cGUpOworICAgICAgICAgICAgY29uc3RydWN0
b3ItPmluaXRQcm9wZXJ0aWVzKGV4ZWMtPmdsb2JhbERhdGEoKSwgSWRlbnRpZmllcihleGVjLCAi
T2JqZWN0IikpOworICAgICAgICAgICAgcmV0dXJuIGNvbnN0cnVjdG9yOwogICAgICAgICB9CiAK
ICAgICAgICAgdmlydHVhbCBib29sIGdldE93blByb3BlcnR5U2xvdChFeGVjU3RhdGUqLCBjb25z
dCBJZGVudGlmaWVyJiwgUHJvcGVydHlTbG90Jik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9SZWdFeHBDb25zdHJ1Y3Rvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwQ29uc3RydWN0b3IuY3BwCShyZXZpc2lvbiA5MjM5
MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cENvbnN0cnVjdG9yLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtOTYsNyArOTYsNyBAQCBjb25zdCBDbGFzc0luZm8gUmVnRXhw
Q29uc3RydWN0b3I6OnNfaW5mCiAqLwogCiBSZWdFeHBDb25zdHJ1Y3Rvcjo6UmVnRXhwQ29uc3Ry
dWN0b3IoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSwgUmVnRXhwUHJvdG90eXBlKiByZWdFeHBQcm90b3R5cGUpCi0gICAg
OiBJbnRlcm5hbEZ1bmN0aW9uKCZleGVjLT5nbG9iYWxEYXRhKCksIGdsb2JhbE9iamVjdCwgc3Ry
dWN0dXJlLCBJZGVudGlmaWVyKGV4ZWMsICJSZWdFeHAiKSkKKyAgICA6IEludGVybmFsRnVuY3Rp
b24oZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUpCiAgICAgLCBkKGFkb3B0UHRyKG5ldyBSZWdFeHBD
b25zdHJ1Y3RvclByaXZhdGUpKQogewogICAgIEFTU0VSVChpbmhlcml0cygmc19pbmZvKSk7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBDb25zdHJ1Y3Rvci5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cENvbnN0cnVj
dG9yLmgJKHJldmlzaW9uIDkyMzkzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
UmVnRXhwQ29uc3RydWN0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtNjIsNyArNjIsOSBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICBwdWJsaWM6CiAgICAgICAgIHN0YXRpYyBSZWdFeHBDb25zdHJ1Y3Rv
ciogY3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFJlZ0V4cFByb3RvdHlwZSogcmVnRXhwUHJvdG90eXBlKQog
ICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gbmV3IChhbGxvY2F0ZUNlbGw8UmVnRXhwQ29u
c3RydWN0b3I+KCpleGVjLT5oZWFwKCkpKSBSZWdFeHBDb25zdHJ1Y3RvcihleGVjLCBnbG9iYWxP
YmplY3QsIHN0cnVjdHVyZSwgcmVnRXhwUHJvdG90eXBlKTsKKyAgICAgICAgICAgIFJlZ0V4cENv
bnN0cnVjdG9yKiBjb25zdHJ1Y3RvciA9IG5ldyAoYWxsb2NhdGVDZWxsPFJlZ0V4cENvbnN0cnVj
dG9yPigqZXhlYy0+aGVhcCgpKSkgUmVnRXhwQ29uc3RydWN0b3IoZXhlYywgZ2xvYmFsT2JqZWN0
LCBzdHJ1Y3R1cmUsIHJlZ0V4cFByb3RvdHlwZSk7CisgICAgICAgICAgICBjb25zdHJ1Y3Rvci0+
aW5pdFByb3BlcnRpZXMoZXhlYy0+Z2xvYmFsRGF0YSgpLCBJZGVudGlmaWVyKGV4ZWMsICJSZWdF
eHAiKSk7CisgICAgICAgICAgICByZXR1cm4gY29uc3RydWN0b3I7CiAgICAgICAgIH0KIAogICAg
ICAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiBnbG9i
YWxEYXRhLCBKU1ZhbHVlIHByb3RvdHlwZSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1JlZ0V4cE1hdGNoZXNBcnJheS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1JlZ0V4cE1hdGNoZXNBcnJheS5oCShyZXZpc2lvbiA5MjM5MykKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE1hdGNoZXNBcnJheS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNSw5ICsyNSw2IEBACiBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNz
IFJlZ0V4cE1hdGNoZXNBcnJheSA6IHB1YmxpYyBKU0FycmF5IHsKLSAgICBwcml2YXRlOgotICAg
ICAgICBSZWdFeHBNYXRjaGVzQXJyYXkoRXhlY1N0YXRlKiwgUmVnRXhwQ29uc3RydWN0b3JQcml2
YXRlKik7Ci0KICAgICBwdWJsaWM6CiAgICAgICAgIHN0YXRpYyBSZWdFeHBNYXRjaGVzQXJyYXkq
IGNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIFJlZ0V4cENvbnN0cnVjdG9yUHJpdmF0ZSogY3RvclBy
aXZhdGUpCiAgICAgICAgIHsKQEAgLTM2LDYgKzMzLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
ICAgIHZpcnR1YWwgflJlZ0V4cE1hdGNoZXNBcnJheSgpOwogCiAgICAgcHJpdmF0ZToKKyAgICAg
ICAgUmVnRXhwTWF0Y2hlc0FycmF5KEV4ZWNTdGF0ZSosIFJlZ0V4cENvbnN0cnVjdG9yUHJpdmF0
ZSopOwogICAgICAgICB2aXJ0dWFsIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEV4ZWNTdGF0ZSog
ZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3Qp
CiAgICAgICAgIHsKICAgICAgICAgICAgIGlmIChzdWJjbGFzc0RhdGEoKSkKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ0NvbnN0cnVjdG9yLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdDb25zdHJ1Y3Rvci5jcHAJ
KHJldmlzaW9uIDkyMzkzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5n
Q29uc3RydWN0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00OCw3ICs0OCw3IEBAIGNvbnN0IENs
YXNzSW5mbyBTdHJpbmdDb25zdHJ1Y3Rvcjo6c19pbmYKIEFTU0VSVF9DTEFTU19GSVRTX0lOX0NF
TEwoU3RyaW5nQ29uc3RydWN0b3IpOwogCiBTdHJpbmdDb25zdHJ1Y3Rvcjo6U3RyaW5nQ29uc3Ry
dWN0b3IoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSwgU3RyaW5nUHJvdG90eXBlKiBzdHJpbmdQcm90b3R5cGUpCi0gICAg
OiBJbnRlcm5hbEZ1bmN0aW9uKCZleGVjLT5nbG9iYWxEYXRhKCksIGdsb2JhbE9iamVjdCwgc3Ry
dWN0dXJlLCBJZGVudGlmaWVyKGV4ZWMsIHN0cmluZ1Byb3RvdHlwZS0+Y2xhc3NJbmZvKCktPmNs
YXNzTmFtZSkpCisgICAgOiBJbnRlcm5hbEZ1bmN0aW9uKGdsb2JhbE9iamVjdCwgc3RydWN0dXJl
KQogewogICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwg
ZXhlYy0+cHJvcGVydHlOYW1lcygpLnByb3RvdHlwZSwgc3RyaW5nUHJvdG90eXBlLCBSZWFkT25s
eSB8IERvbnRFbnVtIHwgRG9udERlbGV0ZSk7CiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRp
b24oZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkubGVuZ3RoLCBqc051
bWJlcigxKSwgUmVhZE9ubHkgfCBEb250RW51bSB8IERvbnREZWxldGUpOwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nQ29uc3RydWN0b3IuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdDb25zdHJ1Y3Rvci5oCShyZXZp
c2lvbiA5MjM5MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ0NvbnN0
cnVjdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTMyLDkgKzMyLDExIEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgICAgICBTdHJpbmdDb25zdHJ1Y3RvcihFeGVjU3RhdGUqLCBKU0dsb2JhbE9iamVjdCos
IFN0cnVjdHVyZSosIFN0cmluZ1Byb3RvdHlwZSopOwogICAgICAgICAKICAgICBwdWJsaWM6Ci0g
ICAgICAgIHN0YXRpYyBTdHJpbmdDb25zdHJ1Y3RvciogY3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywg
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCAsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBTdHJp
bmdQcm90b3R5cGUqIHN0clByb3RvdHlwZSkKKyAgICAgICAgc3RhdGljIFN0cmluZ0NvbnN0cnVj
dG9yKiBjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
ICwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFN0cmluZ1Byb3RvdHlwZSogc3RyaW5nUHJvdG90eXBl
KQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gbmV3IChhbGxvY2F0ZUNlbGw8U3RyaW5n
Q29uc3RydWN0b3I+KCpleGVjLT5oZWFwKCkpKSBTdHJpbmdDb25zdHJ1Y3RvcihleGVjLCBnbG9i
YWxPYmplY3QsIHN0cnVjdHVyZSwgc3RyUHJvdG90eXBlKTsKKyAgICAgICAgICAgIFN0cmluZ0Nv
bnN0cnVjdG9yKiBjb25zdHJ1Y3RvciA9IG5ldyAoYWxsb2NhdGVDZWxsPFN0cmluZ0NvbnN0cnVj
dG9yPigqZXhlYy0+aGVhcCgpKSkgU3RyaW5nQ29uc3RydWN0b3IoZXhlYywgZ2xvYmFsT2JqZWN0
LCBzdHJ1Y3R1cmUsIHN0cmluZ1Byb3RvdHlwZSk7CisgICAgICAgICAgICBjb25zdHJ1Y3Rvci0+
aW5pdFByb3BlcnRpZXMoZXhlYy0+Z2xvYmFsRGF0YSgpLCBJZGVudGlmaWVyKGV4ZWMsIHN0cmlu
Z1Byb3RvdHlwZS0+Y2xhc3NJbmZvKCktPmNsYXNzTmFtZSkpOworICAgICAgICAgICAgcmV0dXJu
IGNvbnN0cnVjdG9yOwogICAgICAgICB9CiAKICAgICAgICAgc3RhdGljIGNvbnN0IENsYXNzSW5m
byBzX2luZm87CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdPYmpl
Y3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmlu
Z09iamVjdC5jcHAJKHJldmlzaW9uIDkyMzkzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvU3RyaW5nT2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjksMTMgKzI5LDYgQEAg
QVNTRVJUX0NMQVNTX0ZJVFNfSU5fQ0VMTChTdHJpbmdPYmplY3QpOwogCiBjb25zdCBDbGFzc0lu
Zm8gU3RyaW5nT2JqZWN0OjpzX2luZm8gPSB7ICJTdHJpbmciLCAmSlNXcmFwcGVyT2JqZWN0Ojpz
X2luZm8sIDAsIDAgfTsKIAotU3RyaW5nT2JqZWN0OjpTdHJpbmdPYmplY3QoRXhlY1N0YXRlKiBl
eGVjLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKLSAgICA6IEpTV3JhcHBlck9iamVjdChleGVjLT5n
bG9iYWxEYXRhKCksIHN0cnVjdHVyZSkKLXsKLSAgICBBU1NFUlQoaW5oZXJpdHMoJnNfaW5mbykp
OwotICAgIHNldEludGVybmFsVmFsdWUoZXhlYy0+Z2xvYmFsRGF0YSgpLCBqc0VtcHR5U3RyaW5n
KGV4ZWMpKTsKLX0KLQogU3RyaW5nT2JqZWN0OjpTdHJpbmdPYmplY3QoSlNHbG9iYWxEYXRhJiBn
bG9iYWxEYXRhLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNTdHJpbmcqIHN0cmluZykKICAgICA6
IEpTV3JhcHBlck9iamVjdChnbG9iYWxEYXRhLCBzdHJ1Y3R1cmUpCiB7CkBAIC00MywxMyArMzYs
NiBAQCBTdHJpbmdPYmplY3Q6OlN0cmluZ09iamVjdChKU0dsb2JhbERhdGEmCiAgICAgc2V0SW50
ZXJuYWxWYWx1ZShnbG9iYWxEYXRhLCBzdHJpbmcpOwogfQogCi1TdHJpbmdPYmplY3Q6OlN0cmlu
Z09iamVjdChFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBjb25zdCBVU3Ry
aW5nJiBzdHJpbmcpCi0gICAgOiBKU1dyYXBwZXJPYmplY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBz
dHJ1Y3R1cmUpCi17Ci0gICAgQVNTRVJUKGluaGVyaXRzKCZzX2luZm8pKTsKLSAgICBzZXRJbnRl
cm5hbFZhbHVlKGV4ZWMtPmdsb2JhbERhdGEoKSwganNTdHJpbmcoZXhlYywgc3RyaW5nKSk7Ci19
Ci0KIGJvb2wgU3RyaW5nT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3QoRXhlY1N0YXRlKiBleGVj
LCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKIHsK
ICAgICBpZiAoaW50ZXJuYWxWYWx1ZSgpLT5nZXRTdHJpbmdQcm9wZXJ0eVNsb3QoZXhlYywgcHJv
cGVydHlOYW1lLCBzbG90KSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0
cmluZ09iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1N0cmluZ09iamVjdC5oCShyZXZpc2lvbiA5MjM5MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1N0cmluZ09iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNywxOCArMjcsMTYg
QEAKIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgU3RyaW5nT2JqZWN0IDogcHVibGljIEpT
V3JhcHBlck9iamVjdCB7Ci0gICAgcHJvdGVjdGVkOgotICAgICAgICBTdHJpbmdPYmplY3QoRXhl
Y1N0YXRlKiwgU3RydWN0dXJlKik7Ci0gICAgICAgIFN0cmluZ09iamVjdChFeGVjU3RhdGUqLCBT
dHJ1Y3R1cmUqLCBjb25zdCBVU3RyaW5nJik7Ci0gICAgICAgICAgICAgICAgCiAgICAgcHVibGlj
OgogICAgICAgICBzdGF0aWMgU3RyaW5nT2JqZWN0KiBjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIG5ldyAo
YWxsb2NhdGVDZWxsPFN0cmluZ09iamVjdD4oKmV4ZWMtPmhlYXAoKSkpIFN0cmluZ09iamVjdChl
eGVjLCBzdHJ1Y3R1cmUpOyAgCisgICAgICAgICAgICBKU1N0cmluZyogZW1wdHlTdHJpbmcgPSBq
c0VtcHR5U3RyaW5nKGV4ZWMpOworICAgICAgICAgICAgcmV0dXJuIG5ldyAoYWxsb2NhdGVDZWxs
PFN0cmluZ09iamVjdD4oKmV4ZWMtPmhlYXAoKSkpIFN0cmluZ09iamVjdChleGVjLT5nbG9iYWxE
YXRhKCksIHN0cnVjdHVyZSwgZW1wdHlTdHJpbmcpOwogICAgICAgICB9CiAgICAgICAgIHN0YXRp
YyBTdHJpbmdPYmplY3QqIGNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZSogc3RydWN0
dXJlLCBjb25zdCBVU3RyaW5nJiBzdHIpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBu
ZXcgKGFsbG9jYXRlQ2VsbDxTdHJpbmdPYmplY3Q+KCpleGVjLT5oZWFwKCkpKSBTdHJpbmdPYmpl
Y3QoZXhlYywgc3RydWN0dXJlLCBzdHIpOyAgCisgICAgICAgICAgICBKU1N0cmluZyogc3RyaW5n
ID0ganNTdHJpbmcoZXhlYywgc3RyKTsKKyAgICAgICAgICAgIHJldHVybiBuZXcgKGFsbG9jYXRl
Q2VsbDxTdHJpbmdPYmplY3Q+KCpleGVjLT5oZWFwKCkpKSBTdHJpbmdPYmplY3QoZXhlYy0+Z2xv
YmFsRGF0YSgpLCBzdHJ1Y3R1cmUsIHN0cmluZyk7CiAgICAgICAgIH0KICAgICAgICAgc3RhdGlj
IFN0cmluZ09iamVjdCogY3JlYXRlKEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KiwgSlNTdHJp
bmcqKTsKICAgICAgICAgCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJp
bmdPYmplY3RUaGF0TWFzcXVlcmFkZXNBc1VuZGVmaW5lZC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ09iamVjdFRoYXRNYXNxdWVyYWRlc0FzVW5k
ZWZpbmVkLmgJKHJldmlzaW9uIDkyMzkzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvU3RyaW5nT2JqZWN0VGhhdE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQuaAkod29ya2luZyBjb3B5
KQpAQCAtMzIsMTMgKzMyLDE0IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHB1YmxpYzoKICAgICAg
ICAgc3RhdGljIFN0cmluZ09iamVjdFRoYXRNYXNxdWVyYWRlc0FzVW5kZWZpbmVkKiBjcmVhdGUo
RXhlY1N0YXRlKiBleGVjLCBjb25zdCBVU3RyaW5nJiBzdHJpbmcpCiAgICAgICAgIHsKLSAgICAg
ICAgICAgIHJldHVybiBuZXcgKGFsbG9jYXRlQ2VsbDxTdHJpbmdPYmplY3RUaGF0TWFzcXVlcmFk
ZXNBc1VuZGVmaW5lZD4oKmV4ZWMtPmhlYXAoKSkpIFN0cmluZ09iamVjdFRoYXRNYXNxdWVyYWRl
c0FzVW5kZWZpbmVkKGV4ZWMsCi0gICAgICAgICAgICAgICAgY3JlYXRlU3RydWN0dXJlKGV4ZWMt
Pmdsb2JhbERhdGEoKSwgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLT5zdHJpbmdQcm90b3R5
cGUoKSksIHN0cmluZyk7CisgICAgICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGNyZWF0
ZVN0cnVjdHVyZShleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3Qo
KS0+c3RyaW5nUHJvdG90eXBlKCkpOworICAgICAgICAgICAgSlNTdHJpbmcqIGpzc3RyaW5nID0g
anNTdHJpbmcoZXhlYywgc3RyaW5nKTsKKyAgICAgICAgICAgIHJldHVybiBuZXcgKGFsbG9jYXRl
Q2VsbDxTdHJpbmdPYmplY3RUaGF0TWFzcXVlcmFkZXNBc1VuZGVmaW5lZD4oKmV4ZWMtPmhlYXAo
KSkpIFN0cmluZ09iamVjdFRoYXRNYXNxdWVyYWRlc0FzVW5kZWZpbmVkKGV4ZWMsIHN0cnVjdHVy
ZSwganNzdHJpbmcpOwogICAgICAgICB9CiAKICAgICBwcml2YXRlOgotICAgICAgICBTdHJpbmdP
YmplY3RUaGF0TWFzcXVlcmFkZXNBc1VuZGVmaW5lZChFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVy
ZSogc3RydWN0dXJlLCBjb25zdCBVU3RyaW5nJiBzdHJpbmcpCi0gICAgICAgICAgICA6IFN0cmlu
Z09iamVjdChleGVjLCBzdHJ1Y3R1cmUsIHN0cmluZykKKyAgICAgICAgU3RyaW5nT2JqZWN0VGhh
dE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQoRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSwgSlNTdHJpbmcqIHN0cmluZykKKyAgICAgICAgICAgIDogU3RyaW5nT2JqZWN0KGV4ZWMt
Pmdsb2JhbERhdGEoKSwgc3RydWN0dXJlLCBzdHJpbmcpCiAgICAgICAgIHsKICAgICAgICAgfQog
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdQcm90b3R5cGUuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ1Byb3Rv
dHlwZS5jcHAJKHJldmlzaW9uIDkyMzkzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvU3RyaW5nUHJvdG90eXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTMxLDggKzEzMSw4IEBA
IGNvbnN0IENsYXNzSW5mbyBTdHJpbmdQcm90b3R5cGU6OnNfaW5mbyAKICovCiAKIC8vIEVDTUEg
MTUuNS40Ci1TdHJpbmdQcm90b3R5cGU6OlN0cmluZ1Byb3RvdHlwZShFeGVjU3RhdGUqIGV4ZWMs
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlKQotICAg
IDogU3RyaW5nT2JqZWN0KGV4ZWMsIHN0cnVjdHVyZSkKK1N0cmluZ1Byb3RvdHlwZTo6U3RyaW5n
UHJvdG90eXBlKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTU3RyaW5nKiBzdHJpbmcpCisgICAgOiBTdHJpbmdPYmpl
Y3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBzdHJ1Y3R1cmUsIHN0cmluZykKIHsKICAgICBBU1NFUlQo
aW5oZXJpdHMoJnNfaW5mbykpOwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9TdHJpbmdQcm90b3R5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9TdHJpbmdQcm90b3R5cGUuaAkocmV2aXNpb24gOTIzOTMpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdQcm90b3R5cGUuaAkod29ya2luZyBjb3B5KQpAQCAt
MjksMTIgKzI5LDEzIEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgU3RyaW5nUHJvdG90
eXBlIDogcHVibGljIFN0cmluZ09iamVjdCB7CiAgICAgcHJpdmF0ZToKLSAgICAgICAgU3RyaW5n
UHJvdG90eXBlKEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKik7CisgICAg
ICAgIFN0cmluZ1Byb3RvdHlwZShFeGVjU3RhdGUqLCBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVy
ZSosIEpTU3RyaW5nKik7CiAKICAgICBwdWJsaWM6CiAgICAgICAgIHN0YXRpYyBTdHJpbmdQcm90
b3R5cGUqIGNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIFN0cnVjdHVyZSogc3RydWN0dXJlKQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4g
bmV3IChhbGxvY2F0ZUNlbGw8U3RyaW5nUHJvdG90eXBlPigqZXhlYy0+aGVhcCgpKSkgU3RyaW5n
UHJvdG90eXBlKGV4ZWMsIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlKTsKKyAgICAgICAgICAgIEpT
U3RyaW5nKiBlbXB0eVN0cmluZyA9IGpzRW1wdHlTdHJpbmcoZXhlYyk7CisgICAgICAgICAgICBy
ZXR1cm4gbmV3IChhbGxvY2F0ZUNlbGw8U3RyaW5nUHJvdG90eXBlPigqZXhlYy0+aGVhcCgpKSkg
U3RyaW5nUHJvdG90eXBlKGV4ZWMsIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBlbXB0eVN0cmlu
Zyk7CiAgICAgICAgIH0KIAogICAgICAgICB2aXJ0dWFsIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90
KEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90
Jik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVDaGFpbi5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUNo
YWluLmgJKHJldmlzaW9uIDkyMzkzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
U3RydWN0dXJlQ2hhaW4uaAkod29ya2luZyBjb3B5KQpAQCAtNDIsNyArNDIsMTEgQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBKSVQ7CiAKICAgICBwdWJsaWM6Ci0gICAg
ICAgIHN0YXRpYyBTdHJ1Y3R1cmVDaGFpbiogY3JlYXRlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0
YSwgU3RydWN0dXJlKiBoZWFkKSB7IHJldHVybiBuZXcgKGFsbG9jYXRlQ2VsbDxTdHJ1Y3R1cmVD
aGFpbj4oZ2xvYmFsRGF0YS5oZWFwKSkgU3RydWN0dXJlQ2hhaW4oZ2xvYmFsRGF0YSwgZ2xvYmFs
RGF0YS5zdHJ1Y3R1cmVDaGFpblN0cnVjdHVyZS5nZXQoKSwgaGVhZCk7IH0KKyAgICAgICAgc3Rh
dGljIFN0cnVjdHVyZUNoYWluKiBjcmVhdGUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBTdHJ1
Y3R1cmUqIGhlYWQpIAorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gbmV3IChhbGxvY2F0
ZUNlbGw8U3RydWN0dXJlQ2hhaW4+KGdsb2JhbERhdGEuaGVhcCkpIFN0cnVjdHVyZUNoYWluKGds
b2JhbERhdGEsIGdsb2JhbERhdGEuc3RydWN0dXJlQ2hhaW5TdHJ1Y3R1cmUuZ2V0KCksIGhlYWQp
OworICAgICAgICB9CisKICAgICAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4qIGhlYWQoKSB7
IHJldHVybiBtX3ZlY3Rvci5nZXQoKTsgfQogICAgICAgICB2b2lkIHZpc2l0Q2hpbGRyZW4oU2xv
dFZpc2l0b3ImKTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>104562</attachid>
            <date>2011-08-19 14:07:36 -0700</date>
            <delta_ts>2011-08-23 11:15:20 -0700</delta_ts>
            <desc>New, much smaller patch.</desc>
            <filename>bug-65288-20110819140735.patch</filename>
            <type>text/plain</type>
            <size>13877</size>
            <attacher name="Mark Hahnenberg">mhahnenberg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTM0MjQKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDk0
ODBjMWI2ZjM4NjRlNDk3ZmM3MmFkM2FlMDQyNTRkNzYxZGQ4MzcuLjg3OWMyZDg5MTQ2ODMyMDQ4
Njc0ZDU2Njk4ZjE3MDkxYzQ4OTJhOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDI4IEBACisyMDExLTA4LTE5ICBNYXJrIEhhaG5lbmJlcmcgIDxtaGFobmVuYmVyZ0BhcHBs
ZS5jb20+CisKKyAgICAgICAgQWRkIGNoZWNrcyB0byBlbnN1cmUgYWxsb2NhdGlvbiBkb2VzIG5v
dCB0YWtlIHBsYWNlIGR1cmluZyBpbml0aWFsaXphdGlvbiBvZiBHQy1tYW5hZ2VkIG9iamVjdHMK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY1Mjg4CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkaW5nIHRo
ZSBuZXcgdmFsaWRhdGlvbiBmdW5jdGlvbmFsaXR5LiAgSW4gaXRzIGN1cnJlbnQgc3RhdGUsIGl0
IHdpbGwgcGVyZm9ybXMgY2hlY2tzLCAKKyAgICAgICAgYnV0IHRoZXkgZG9uJ3QgZmFpbCB1bmxl
c3MgeW91IGRvIGFsbG9jYXRpb24gaW4gdGhlIGFyZ3VtZW50cyB0byB0aGUgcGFyZW50IGNvbnN0
cnVjdG9yIGluIHRoZSAKKyAgICAgICAgaW5pdGlhbGl6YXRpb24gbGlzdCBvZiBhIGNsYXNzLiAg
VGhlIGFsbG9jYXRlQ2VsbCgpIG1ldGhvZCB0dXJucyBvbiB0aGUgZ2xvYmFsIGZsYWcgZGlzYWxs
b3dpbmcgYW55IG5ldyAKKyAgICAgICAgYWxsb2NhdGlvbnMsIGFuZCB0aGUgY29uc3RydWN0b3JC
b2R5KCkgbWV0aG9kIGluIEpTQ2VsbCB0dXJucyBpdCBvZmYuICBUaGlzIHdheSwgYWxsb2NhdGlv
biBpcyBzdGlsbCAKKyAgICAgICAgYWxsb3dlZCBpbiBjb25zdHJ1Y3RvciBib2RpZXMgd2hpbGUg
b3RoZXIgcmVmYWN0b3JpbmcgZWZmb3J0cyBjb250aW51ZS4KKworICAgICAgICAqIHJ1bnRpbWUv
SlNDZWxsLmg6CisgICAgICAgIChKU0M6OkpTQ2VsbDo6SlNDZWxsOjpjb25zdHJ1Y3RvckJvZHkp
OgorICAgICAgICAoSlNDOjpKU0NlbGw6OkpTQ2VsbDo6SlNDZWxsKToKKyAgICAgICAgKEpTQzo6
SlNDZWxsOjphbGxvY2F0ZUNlbGwpOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxEYXRhLmNw
cDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxEYXRhOjpKU0dsb2JhbERhdGEpOgorICAgICAgICAq
IHJ1bnRpbWUvSlNHbG9iYWxEYXRhLmg6CisgICAgICAgIChKU0M6OkpTR2xvYmFsRGF0YTo6aXNJ
bml0aWFsaXppbmdPYmplY3QpOgorICAgICAgICAoSlNDOjpKU0dsb2JhbERhdGE6OnNldEluaXRp
YWxpemluZ09iamVjdCk6CisgICAgICAgICogcnVudGltZS9TdHJpbmdPYmplY3RUaGF0TWFzcXVl
cmFkZXNBc1VuZGVmaW5lZC5oOgorICAgICAgICAoSlNDOjpTdHJpbmdPYmplY3RUaGF0TWFzcXVl
cmFkZXNBc1VuZGVmaW5lZDo6Y3JlYXRlKToKKwogMjAxMS0wOC0xOCAgTWFyayBIYWhuZW5iZXJn
ICA8bWhhaG5lbmJlcmdAYXBwbGUuY29tPgogCiAgICAgICAgIE1vdmUgYWxsb2NhdGlvbiBpbiBj
b25zdHJ1Y3RvcnMgaW50byBzZXBhcmF0ZSBjb25zdHJ1Y3RvckJvZHkoKSBtZXRob2RzCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5oCmluZGV4IGMxY2FmMTU0YWY4MGNjMWViOTM4
NmQ2ZGRmN2E5ZWNiNWFkMjQyNWMuLjc0ZDhmNDM5YjUyNzZlZDZlM2U1NDYwNWFmYzg2MjRkNWMz
ZGFmMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5oCkBAIC0xNTEsNiAr
MTUxLDI4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHByb3RlY3RlZDoKICAgICAgICAgc3RhdGlj
IGNvbnN0IHVuc2lnbmVkIEFub255bW91c1Nsb3RDb3VudCA9IDA7CiAKKyAgICAgICAgdm9pZCBj
b25zdHJ1Y3RvckJvZHkoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhKQorICAgICAgICB7CisjaWYg
RU5BQkxFKEdDX1ZBTElEQVRJT04pCisgICAgICAgICAgICBBU1NFUlQoZ2xvYmFsRGF0YS5pc0lu
aXRpYWxpemluZ09iamVjdCgpKTsKKyAgICAgICAgICAgIGdsb2JhbERhdGEuc2V0SW5pdGlhbGl6
aW5nT2JqZWN0KGZhbHNlKTsKKyNlbHNlCisgICAgICAgICAgICBVTlVTRURfUEFSQU0oZ2xvYmFs
RGF0YSk7CisjZW5kaWYKKyAgICAgICAgICAgIEFTU0VSVChtX3N0cnVjdHVyZSk7CisgICAgICAg
IH0KKworICAgICAgICB2b2lkIGNvbnN0cnVjdG9yQm9keShKU0dsb2JhbERhdGEmIGdsb2JhbERh
dGEsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBDcmVhdGluZ0Vhcmx5Q2VsbFRhZykKKyAgICAgICAg
eworI2lmIEVOQUJMRShHQ19WQUxJREFUSU9OKQorICAgICAgICAgICAgZ2xvYmFsRGF0YS5zZXRJ
bml0aWFsaXppbmdPYmplY3QoZmFsc2UpOworICAgICAgICAgICAgaWYgKHN0cnVjdHVyZSkKKyNl
bmRpZgorICAgICAgICAgICAgICAgIG1fc3RydWN0dXJlLnNldEVhcmx5VmFsdWUoZ2xvYmFsRGF0
YSwgdGhpcywgc3RydWN0dXJlKTsKKyAgICAgICAgICAgIC8vIFZlcnkgZmlyc3Qgc2V0IG9mIGFs
bG9jYXRpb25zIHdvbid0IGhhdmUgYSByZWFsIHN0cnVjdHVyZS4KKyAgICAgICAgICAgIEFTU0VS
VChtX3N0cnVjdHVyZSB8fCAhZ2xvYmFsRGF0YS5zdHJ1Y3R1cmVTdHJ1Y3R1cmUpOworICAgICAg
ICB9CisKICAgICBwcml2YXRlOgogICAgICAgICAvLyBCYXNlIGltcGxlbWVudGF0aW9uOyBmb3Ig
bm9uLW9iamVjdCBjbGFzc2VzIGltcGxlbWVudHMgZ2V0UHJvcGVydHlTbG90LgogICAgICAgICB2
aXJ0dWFsIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZp
ZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CkBAIC0xNjcsMTcgKzE4OSwxMiBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICBpbmxpbmUgSlNDZWxsOjpKU0NlbGwoSlNHbG9iYWxEYXRhJiBn
bG9iYWxEYXRhLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAgICAgICAgOiBtX3N0cnVjdHVyZShn
bG9iYWxEYXRhLCB0aGlzLCBzdHJ1Y3R1cmUpCiAgICAgewotICAgICAgICBBU1NFUlQobV9zdHJ1
Y3R1cmUpOworICAgICAgICBjb25zdHJ1Y3RvckJvZHkoZ2xvYmFsRGF0YSk7CiAgICAgfQogCiAg
ICAgaW5saW5lIEpTQ2VsbDo6SlNDZWxsKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgU3RydWN0
dXJlKiBzdHJ1Y3R1cmUsIENyZWF0aW5nRWFybHlDZWxsVGFnKQogICAgIHsKLSNpZiBFTkFCTEUo
R0NfVkFMSURBVElPTikKLSAgICAgICAgaWYgKHN0cnVjdHVyZSkKLSNlbmRpZgotICAgICAgICAg
ICAgbV9zdHJ1Y3R1cmUuc2V0RWFybHlWYWx1ZShnbG9iYWxEYXRhLCB0aGlzLCBzdHJ1Y3R1cmUp
OwotICAgICAgICAvLyBWZXJ5IGZpcnN0IHNldCBvZiBhbGxvY2F0aW9ucyB3b24ndCBoYXZlIGEg
cmVhbCBzdHJ1Y3R1cmUuCi0gICAgICAgIEFTU0VSVChtX3N0cnVjdHVyZSB8fCAhZ2xvYmFsRGF0
YS5zdHJ1Y3R1cmVTdHJ1Y3R1cmUpOworICAgICAgICBjb25zdHJ1Y3RvckJvZHkoZ2xvYmFsRGF0
YSwgc3RydWN0dXJlLCBDcmVhdGluZ0Vhcmx5Q2VsbCk7IAogICAgIH0KIAogICAgIGlubGluZSBK
U0NlbGw6On5KU0NlbGwoKQpAQCAtMzQ5LDYgKzM2NiwxMCBAQCBuYW1lc3BhY2UgSlNDIHsKIAog
ICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiB2b2lkKiBhbGxvY2F0ZUNlbGwoSGVhcCYgaGVhcCkK
ICAgICB7CisjaWYgRU5BQkxFKEdDX1ZBTElEQVRJT04pCisgICAgICAgIEFTU0VSVCghaGVhcC5n
bG9iYWxEYXRhKCktPmlzSW5pdGlhbGl6aW5nT2JqZWN0KCkpOworICAgICAgICBoZWFwLmdsb2Jh
bERhdGEoKS0+c2V0SW5pdGlhbGl6aW5nT2JqZWN0KHRydWUpOworI2VuZGlmCiAgICAgICAgIHJl
dHVybiBoZWFwLmFsbG9jYXRlKHNpemVvZihUKSk7CiAgICAgfQogICAgICAgICAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsRGF0YS5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERhdGEuY3BwCmluZGV4IGQ2NDcxOTVi
MjM0MDdjNDYxYTYxZmE2NzkxODg5YzMxY2Y2ODhkNjYuLjYwMDI0YWFhMzZhMzAzN2ZhZjFmNWQ3
NzZmNzc1NzkxMjYzZDY4MWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTR2xvYmFsRGF0YS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNHbG9iYWxEYXRhLmNwcApAQCAtMjAxLDYgKzIwMSw3IEBAIEpTR2xvYmFsRGF0YTo6SlNHbG9i
YWxEYXRhKEdsb2JhbERhdGFUeXBlIGdsb2JhbERhdGFUeXBlLCBUaHJlYWRTdGFja1R5cGUgdGhy
ZWFkCiAjaWZuZGVmIE5ERUJVRwogICAgICwgZXhjbHVzaXZlVGhyZWFkKDApCiAjZW5kaWYKKyAg
ICAsIG1faW5pdGlhbGl6aW5nT2JqZWN0KGZhbHNlKQogewogICAgIGludGVycHJldGVyID0gbmV3
IEludGVycHJldGVyOwogICAgIGlmIChnbG9iYWxEYXRhVHlwZSA9PSBEZWZhdWx0KQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxEYXRhLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERhdGEuaAppbmRleCAwNTdjNDM1ZWEz
MTkwYTE0ZmMxNmQ3MzRjOGQwMDE4MDI1ZTk0MWYwLi5mMmRkZjQ2NThkMzVmZTNlM2ZjZDU3MGVi
ODM0YzJlYzY2ZmFlNGE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0dsb2JhbERhdGEuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ds
b2JhbERhdGEuaApAQCAtMjc5LDYgKzI3OSwyNCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAg
Ym9vbCBpc0NvbGxlY3RvckJ1c3koKSB7IHJldHVybiBoZWFwLmlzQnVzeSgpOyB9CiAgICAgICAg
IHZvaWQgcmVsZWFzZUV4ZWN1dGFibGVNZW1vcnkoKTsKIAorICAgICAgICBib29sIGlzSW5pdGlh
bGl6aW5nT2JqZWN0KCkgY29uc3QgCisgICAgICAgIHsKKyNpZiBFTkFCTEUoR0NfVkFMSURBVElP
TikKKyAgICAgICAgICAgIHJldHVybiBtX2luaXRpYWxpemluZ09iamVjdDsKKyNlbHNlCisgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CisjZW5kaWYKKyAgICAgICAgfQorCisgICAgICAgIHZvaWQg
c2V0SW5pdGlhbGl6aW5nT2JqZWN0KGJvb2wgaW5pdGlhbGl6aW5nT2JqZWN0KQorICAgICAgICB7
CisjaWYgRU5BQkxFKEdDX1ZBTElEQVRJT04pCisgICAgICAgICAgICBtX2luaXRpYWxpemluZ09i
amVjdCA9IGluaXRpYWxpemluZ09iamVjdDsKKyNlbHNlCisgICAgICAgICAgICBVTlVTRURfUEFS
QU0oaW5pdGlhbGl6aW5nT2JqZWN0KTsKKyNlbmRpZgorICAgICAgICB9CisKICAgICBwcml2YXRl
OgogICAgICAgICBKU0dsb2JhbERhdGEoR2xvYmFsRGF0YVR5cGUsIFRocmVhZFN0YWNrVHlwZSwg
SGVhcFNpemUpOwogICAgICAgICBzdGF0aWMgSlNHbG9iYWxEYXRhKiYgc2hhcmVkSW5zdGFuY2VJ
bnRlcm5hbCgpOwpAQCAtMjg3LDYgKzMwNSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBi
b29sIG1fY2FuVXNlSklUOwogI2VuZGlmCiAgICAgICAgIFN0YWNrQm91bmRzIG1fc3RhY2s7Cisg
ICAgICAgIGJvb2wgbV9pbml0aWFsaXppbmdPYmplY3Q7CiAgICAgfTsKIAogICAgIGlubGluZSBI
YW5kbGVTbG90IGFsbG9jYXRlR2xvYmFsSGFuZGxlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ09iamVjdFRo
YXRNYXNxdWVyYWRlc0FzVW5kZWZpbmVkLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9TdHJpbmdPYmplY3RUaGF0TWFzcXVlcmFkZXNBc1VuZGVmaW5lZC5oCmluZGV4IDY5NDM2ZDdl
MzZmNDgxMDYyOTBmYjhjZWY2NmU5ZDY2ZDc5NjdjNGYuLjJmZTBiOWY2ODlmMjM1ZmRiMjUyYjI2
MDdlNzk2YmUyZmJiODQ4ODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1N0cmluZ09iamVjdFRoYXRNYXNxdWVyYWRlc0FzVW5kZWZpbmVkLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nT2JqZWN0VGhhdE1hc3F1ZXJhZGVzQXNVbmRl
ZmluZWQuaApAQCAtMzUsOCArMzUsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgc3RhdGlj
IFN0cmluZ09iamVjdFRoYXRNYXNxdWVyYWRlc0FzVW5kZWZpbmVkKiBjcmVhdGUoRXhlY1N0YXRl
KiBleGVjLCBjb25zdCBVU3RyaW5nJiBzdHJpbmcpCiAgICAgICAgIHsKICAgICAgICAgICAgIEpT
U3RyaW5nKiBuZXdTdHJpbmcgPSBqc1N0cmluZyhleGVjLCBzdHJpbmcpOwotICAgICAgICAgICAg
cmV0dXJuIG5ldyAoYWxsb2NhdGVDZWxsPFN0cmluZ09iamVjdFRoYXRNYXNxdWVyYWRlc0FzVW5k
ZWZpbmVkPigqZXhlYy0+aGVhcCgpKSkgU3RyaW5nT2JqZWN0VGhhdE1hc3F1ZXJhZGVzQXNVbmRl
ZmluZWQoZXhlYywKLSAgICAgICAgICAgICAgICBjcmVhdGVTdHJ1Y3R1cmUoZXhlYy0+Z2xvYmFs
RGF0YSgpLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCktPnN0cmluZ1Byb3RvdHlwZSgpKSwg
bmV3U3RyaW5nKTsKKyAgICAgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gY3JlYXRlU3Ry
dWN0dXJlKGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLT5z
dHJpbmdQcm90b3R5cGUoKSk7CisgICAgICAgICAgICByZXR1cm4gbmV3IChhbGxvY2F0ZUNlbGw8
U3RyaW5nT2JqZWN0VGhhdE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQ+KCpleGVjLT5oZWFwKCkpKSBT
dHJpbmdPYmplY3RUaGF0TWFzcXVlcmFkZXNBc1VuZGVmaW5lZChleGVjLCBzdHJ1Y3R1cmUsIG5l
d1N0cmluZyk7CiAgICAgICAgIH0KIAogICAgIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWEzZjhm
NTAyMDEwZDQyYTJmNDk4MzQ1YWFkZDFhMDk2NjJkZmViNi4uYmVmMWUyYjgyMDkyYTcxY2I3M2E5
ZTA3Y2RlMGQ3Nzk0NDRjNGU4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDExLTA4
LTE5ICBNYXJrIEhhaG5lbmJlcmcgIDxtaGFobmVuYmVyZ0BhcHBsZS5jb20+CisKKyAgICAgICAg
QWRkIGNoZWNrcyB0byBlbnN1cmUgYWxsb2NhdGlvbiBkb2VzIG5vdCB0YWtlIHBsYWNlIGR1cmlu
ZyBpbml0aWFsaXphdGlvbiBvZiBHQy1tYW5hZ2VkIG9iamVjdHMKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY1Mjg4CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLgorCisgICAgICAgIEFk
ZGluZyB0aGUgbmV3IHZhbGlkYXRpb24gZnVuY3Rpb25hbGl0eS4gIEluIGl0cyBjdXJyZW50IHN0
YXRlLCBpdCB3aWxsIHBlcmZvcm1zIGNoZWNrcywgCisgICAgICAgIGJ1dCB0aGV5IGRvbid0IGZh
aWwgdW5sZXNzIHlvdSBkbyBhbGxvY2F0aW9uIGluIHRoZSBhcmd1bWVudHMgdG8gdGhlIHBhcmVu
dCBjb25zdHJ1Y3RvciBpbiB0aGUgCisgICAgICAgIGluaXRpYWxpemF0aW9uIGxpc3Qgb2YgYSBj
bGFzcy4gIFRoZSBhbGxvY2F0ZUNlbGwoKSBtZXRob2QgdHVybnMgb24gdGhlIGdsb2JhbCBmbGFn
IGRpc2FsbG93aW5nIGFueSBuZXcgCisgICAgICAgIGFsbG9jYXRpb25zLCBhbmQgdGhlIGNvbnN0
cnVjdG9yQm9keSgpIG1ldGhvZCBpbiBKU0NlbGwgdHVybnMgaXQgb2ZmLiAgVGhpcyB3YXksIGFs
bG9jYXRpb24gaXMgc3RpbGwgCisgICAgICAgIGFsbG93ZWQgaW4gY29uc3RydWN0b3IgYm9kaWVz
IHdoaWxlIG90aGVyIHJlZmFjdG9yaW5nIGVmZm9ydHMgY29udGludWUuCisKKyAgICAgICAgKiBi
aW5kaW5ncy9qcy9KU0RPTVdpbmRvd1NoZWxsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9N
V2luZG93U2hlbGw6Om9wZXJhdG9yIG5ldyk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01X
aW5kb3dTaGVsbC5oOgorCiAyMDExLTA4LTE3ICBBZHJpZW5uZSBXYWxrZXIgIDxlbm5lQGdvb2ds
ZS5jb20+CiAKICAgICAgICAgW2Nocm9taXVtXSBTcGxpdCB0aWxlciBpbnRvIG1haW4gdGhyZWFk
IC8gY29tcG9zaXRvciB0aHJlYWQgdmVyc2lvbnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTRE9NV2luZG93U2hlbGwuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNET01XaW5kb3dTaGVsbC5jcHAKaW5kZXggY2MwMGI2ZWRkNjc4OTBjNjk2MDYyYTI2
NDJmNmIyZWMwZmM5NjY1Zi4uMWVjNWI1OGQ3NmEwNzllODRhNjc4YzI3NTgxOTVkMzJiMjdlNzFi
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dTaGVs
bC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dTaGVsbC5j
cHAKQEAgLTE2NCw3ICsxNjQsMTIgQEAgRE9NV2luZG93KiBKU0RPTVdpbmRvd1NoZWxsOjppbXBs
KCkgY29uc3QKIAogdm9pZCogSlNET01XaW5kb3dTaGVsbDo6b3BlcmF0b3IgbmV3KHNpemVfdCBz
aXplKQogewotICAgIHJldHVybiBKU0RPTVdpbmRvdzo6Y29tbW9uSlNHbG9iYWxEYXRhKCktPmhl
YXAuYWxsb2NhdGUoc2l6ZSk7CisgICAgSGVhcCYgaGVhcCA9IEpTRE9NV2luZG93Ojpjb21tb25K
U0dsb2JhbERhdGEoKS0+aGVhcDsKKyNpZiBFTkFCTEUoR0NfVkFMSURBVElPTikKKyAgICBBU1NF
UlQoIWhlYXAuZ2xvYmFsRGF0YSgpLT5pc0luaXRpYWxpemluZ09iamVjdCgpKTsKKyAgICBoZWFw
Lmdsb2JhbERhdGEoKS0+c2V0SW5pdGlhbGl6aW5nT2JqZWN0KHRydWUpOworI2VuZGlmCisgICAg
cmV0dXJuIGhlYXAuYWxsb2NhdGUoc2l6ZSk7CiB9CiAKIC8vIC0tLS0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93U2hlbGwuaCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93U2hlbGwuaAppbmRleCBlYmY2ZGViZTU1YmZkMWI0
NDc0YmZiMjI5N2JkNWRmYmE2ZDZjMzU3Li41ZGI4MWY4NTU3NDg3MWZhMDBmMjA1NDNkMTBjMTFl
NWRjMWRkMDA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdp
bmRvd1NoZWxsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dT
aGVsbC5oCkBAIC0zNyw4ICszNyw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBjbGFzcyBG
cmFtZTsKIAogICAgIGNsYXNzIEpTRE9NV2luZG93U2hlbGwgOiBwdWJsaWMgSlNDOjpKU05vbkZp
bmFsT2JqZWN0IHsKLSAgICAgICAgdHlwZWRlZiBKU0M6OkpTTm9uRmluYWxPYmplY3QgQmFzZTsK
ICAgICBwdWJsaWM6CisgICAgICAgIHR5cGVkZWYgSlNDOjpKU05vbkZpbmFsT2JqZWN0IEJhc2U7
CiAgICAgICAgIEpTRE9NV2luZG93U2hlbGwoUGFzc1JlZlB0cjxET01XaW5kb3c+LCBKU0M6OlN0
cnVjdHVyZSosIERPTVdyYXBwZXJXb3JsZCopOwogICAgICAgICB2aXJ0dWFsIH5KU0RPTVdpbmRv
d1NoZWxsKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwppbmRleCA1NzJmYTdlOWVmYTZkYWZiYTgxNjE4NDEy
NGNkNDI0MTRhZjZlMmNmLi5mMTJkN2ZmODFlOWE3MGVjZGU2NzI1YWZiZGY0ZWYyMTFhNGRmMWQ3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YktpdC9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMTEtMDgtMTkgIE1hcmsgSGFo
bmVuYmVyZyAgPG1oYWhuZW5iZXJnQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgY2hlY2tzIHRv
IGVuc3VyZSBhbGxvY2F0aW9uIGRvZXMgbm90IHRha2UgcGxhY2UgZHVyaW5nIGluaXRpYWxpemF0
aW9uIG9mIEdDLW1hbmFnZWQgb2JqZWN0cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9NjUyODgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBBZGRpbmcgdGhlIG5ldyB2YWxpZGF0aW9uIGZ1bmN0aW9uYWxpdHku
ICBJbiBpdHMgY3VycmVudCBzdGF0ZSwgaXQgd2lsbCBwZXJmb3JtcyBjaGVja3MsIAorICAgICAg
ICBidXQgdGhleSBkb24ndCBmYWlsIHVubGVzcyB5b3UgZG8gYWxsb2NhdGlvbiBpbiB0aGUgYXJn
dW1lbnRzIHRvIHRoZSBwYXJlbnQgY29uc3RydWN0b3IgaW4gdGhlIAorICAgICAgICBpbml0aWFs
aXphdGlvbiBsaXN0IG9mIGEgY2xhc3MuICBUaGUgYWxsb2NhdGVDZWxsKCkgbWV0aG9kIHR1cm5z
IG9uIHRoZSBnbG9iYWwgZmxhZyBkaXNhbGxvd2luZyBhbnkgbmV3IAorICAgICAgICBhbGxvY2F0
aW9ucywgYW5kIHRoZSBjb25zdHJ1Y3RvckJvZHkoKSBtZXRob2QgaW4gSlNDZWxsIHR1cm5zIGl0
IG9mZi4gIFRoaXMgd2F5LCBhbGxvY2F0aW9uIGlzIHN0aWxsIAorICAgICAgICBhbGxvd2VkIGlu
IGNvbnN0cnVjdG9yIGJvZGllcyB3aGlsZSBvdGhlciByZWZhY3RvcmluZyBlZmZvcnRzIGNvbnRp
bnVlLgorCisgICAgICAgICogUGx1Z2lucy9Ib3N0ZWQvUHJveHlSdW50aW1lT2JqZWN0Lmg6Cisg
ICAgICAgIChXZWJLaXQ6OlByb3h5UnVudGltZU9iamVjdDo6Y3JlYXRlKToKKyAgICAgICAgKiBQ
bHVnaW5zL0hvc3RlZC9Qcm94eVJ1bnRpbWVPYmplY3QubW06CisgICAgICAgIChXZWJLaXQ6OlBy
b3h5UnVudGltZU9iamVjdDo6UHJveHlSdW50aW1lT2JqZWN0KToKKwogMjAxMS0wOC0xOCAgQmV0
aCBEYWtpbiAgPGJkYWtpbkBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgU2FtIFdl
aW5pZy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvSG9zdGVkL1Byb3h5
UnVudGltZU9iamVjdC5oIGIvU291cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9Ib3N0ZWQvUHJveHlS
dW50aW1lT2JqZWN0LmgKaW5kZXggYTc5MTYwZGEzMWRlMTJkNjk1MDdiZDU3ZTdjYjM2YmViOGI3
MWEwNi4uODQxMjE2MDcwMDY5MTcyZjgwMjRkZGE4NmNlODhkZGVkZDI2NjMyOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9Ib3N0ZWQvUHJveHlSdW50aW1lT2JqZWN0LmgK
KysrIGIvU291cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9Ib3N0ZWQvUHJveHlSdW50aW1lT2JqZWN0
LmgKQEAgLTI4LDYgKzI4LDcgQEAKICNpZm5kZWYgUHJveHlSdW50aW1lT2JqZWN0X2gKICNkZWZp
bmUgUHJveHlSdW50aW1lT2JqZWN0X2gKIAorI2luY2x1ZGUgPFdlYkNvcmUvSlNET01CaW5kaW5n
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9ydW50aW1lX29iamVjdC5oPgogCiBuYW1lc3BhY2UgV2Vi
S2l0IHsKQEAgLTQwLDcgKzQxLDEwIEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBQcm94eVJ1bnRp
bWVPYmplY3QqIGNyZWF0ZShKU0M6OkV4ZWNTdGF0ZSogZXhlYywgSlNDOjpKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBQYXNzUmVmUHRyPFByb3h5SW5zdGFuY2U+IGluc3RhbmNlKQogICAg
IHsKLSAgICAgICAgcmV0dXJuIG5ldyAoSlNDOjphbGxvY2F0ZUNlbGw8UHJveHlSdW50aW1lT2Jq
ZWN0PigqZXhlYy0+aGVhcCgpKSkgUHJveHlSdW50aW1lT2JqZWN0KGV4ZWMsIGdsb2JhbE9iamVj
dCwgaW5zdGFuY2UpOworICAgICAgICAvLyBGSVhNRTogZGVwcmVjYXRlZEdldERPTVN0cnVjdHVy
ZSB1c2VzIHRoZSBwcm90b3R5cGUgb2ZmIG9mIHRoZSB3cm9uZyBnbG9iYWwgb2JqZWN0CisgICAg
ICAgIC8vIGV4ZWMtZ2xvYmFsRGF0YSgpIGlzIGFsc28gbGlrZWx5IHdyb25nLgorICAgICAgICBK
U0M6OlN0cnVjdHVyZSogc3RydWN0dXJlID0gV2ViQ29yZTo6ZGVwcmVjYXRlZEdldERPTVN0cnVj
dHVyZTxQcm94eVJ1bnRpbWVPYmplY3Q+KGV4ZWMpOworICAgICAgICByZXR1cm4gbmV3IChKU0M6
OmFsbG9jYXRlQ2VsbDxQcm94eVJ1bnRpbWVPYmplY3Q+KCpleGVjLT5oZWFwKCkpKSBQcm94eVJ1
bnRpbWVPYmplY3QoZXhlYywgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIGluc3RhbmNlKTsKICAg
ICB9CiAKICAgICB2aXJ0dWFsIH5Qcm94eVJ1bnRpbWVPYmplY3QoKTsKQEAgLTU0LDcgKzU4LDcg
QEAgcHVibGljOgogCiAgICAgc3RhdGljIGNvbnN0IEpTQzo6Q2xhc3NJbmZvIHNfaW5mbzsKIHBy
aXZhdGU6Ci0gICAgUHJveHlSdW50aW1lT2JqZWN0KEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU0ds
b2JhbE9iamVjdCosIFBhc3NSZWZQdHI8UHJveHlJbnN0YW5jZT4pOworICAgIFByb3h5UnVudGlt
ZU9iamVjdChKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OlN0cnVj
dHVyZSosIFBhc3NSZWZQdHI8UHJveHlJbnN0YW5jZT4pOwogfTsKIAogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9Ib3N0ZWQvUHJveHlSdW50aW1lT2JqZWN0Lm1tIGIv
U291cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9Ib3N0ZWQvUHJveHlSdW50aW1lT2JqZWN0Lm1tCmlu
ZGV4IGMxMmQ1Y2ZmODg2MjhmYzk3NDkwOTVjMmIzMjhiNTk1MmYzN2UyMTMuLjhhNjQ4MWUzZDQ1
MmNiM2ZiNmY4MWIxZWYwMzU2OTMwMWJiMzBjNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
bWFjL1BsdWdpbnMvSG9zdGVkL1Byb3h5UnVudGltZU9iamVjdC5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0L21hYy9QbHVnaW5zL0hvc3RlZC9Qcm94eVJ1bnRpbWVPYmplY3QubW0KQEAgLTI2LDcgKzI2
LDYgQEAKICNpZiBVU0UoUExVR0lOX0hPU1RfUFJPQ0VTUykKIAogI2luY2x1ZGUgInJ1bnRpbWUv
T2JqZWN0UHJvdG90eXBlLmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9KU0RPTUJpbmRpbmcuaD4KICNp
bmNsdWRlICJQcm94eUluc3RhbmNlLmgiCiAjaW5jbHVkZSAiUHJveHlSdW50aW1lT2JqZWN0Lmgi
CiAKQEAgLTM3LDEwICszNiw4IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjb25zdCBDbGFzc0lu
Zm8gUHJveHlSdW50aW1lT2JqZWN0OjpzX2luZm8gPSB7ICJQcm94eVJ1bnRpbWVPYmplY3QiLCAm
UnVudGltZU9iamVjdDo6c19pbmZvLCAwLCAwIH07CiAKLVByb3h5UnVudGltZU9iamVjdDo6UHJv
eHlSdW50aW1lT2JqZWN0KEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgUGFzc1JlZlB0cjxQcm94eUluc3RhbmNlPiBpbnN0YW5jZSkKLSAgICAvLyBGSVhNRTog
ZGVwcmVjYXRlZEdldERPTVN0cnVjdHVyZSB1c2VzIHRoZSBwcm90b3R5cGUgb2ZmIG9mIHRoZSB3
cm9uZyBnbG9iYWwgb2JqZWN0Ci0gICAgLy8gZXhlYy1nbG9iYWxEYXRhKCkgaXMgYWxzbyBsaWtl
bHkgd3JvbmcuCi0gICAgOiBSdW50aW1lT2JqZWN0KGV4ZWMsIGdsb2JhbE9iamVjdCwgV2ViQ29y
ZTo6ZGVwcmVjYXRlZEdldERPTVN0cnVjdHVyZTxQcm94eVJ1bnRpbWVPYmplY3Q+KGV4ZWMpLCBp
bnN0YW5jZSkKK1Byb3h5UnVudGltZU9iamVjdDo6UHJveHlSdW50aW1lT2JqZWN0KEV4ZWNTdGF0
ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUsIFBhc3NSZWZQdHI8UHJveHlJbnN0YW5jZT4gaW5zdGFuY2UpCisgICAgOiBSdW50aW1lT2Jq
ZWN0KGV4ZWMsIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBpbnN0YW5jZSkKIHsKICAgICBBU1NF
UlQoaW5oZXJpdHMoJnNfaW5mbykpOwogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>104870</attachid>
            <date>2011-08-23 11:15:25 -0700</date>
            <delta_ts>2011-08-23 17:06:57 -0700</delta_ts>
            <desc>Fixing review issues</desc>
            <filename>bug-65288-20110823111528.patch</filename>
            <type>text/plain</type>
            <size>13022</size>
            <attacher name="Mark Hahnenberg">mhahnenberg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTM2MTEKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IGRk
ZGU2ZDhjM2MzMTJjYmEzOWVlZTIyZjZkMzQwMWI5YzJmYTQwOTguLjAwMTE0M2ViMmZhODg0Yzli
NTIwMWE4ZmUxMzBiOTkxNTMyYmU3OTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDI4IEBACisyMDExLTA4LTE5ICBNYXJrIEhhaG5lbmJlcmcgIDxtaGFobmVuYmVyZ0BhcHBs
ZS5jb20+CisKKyAgICAgICAgQWRkIGNoZWNrcyB0byBlbnN1cmUgYWxsb2NhdGlvbiBkb2VzIG5v
dCB0YWtlIHBsYWNlIGR1cmluZyBpbml0aWFsaXphdGlvbiBvZiBHQy1tYW5hZ2VkIG9iamVjdHMK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY1Mjg4CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkaW5nIHRo
ZSBuZXcgdmFsaWRhdGlvbiBmdW5jdGlvbmFsaXR5LiAgSW4gaXRzIGN1cnJlbnQgc3RhdGUsIGl0
IHdpbGwgcGVyZm9ybXMgY2hlY2tzLCAKKyAgICAgICAgYnV0IHRoZXkgZG9uJ3QgZmFpbCB1bmxl
c3MgeW91IGRvIGFsbG9jYXRpb24gaW4gdGhlIGFyZ3VtZW50cyB0byB0aGUgcGFyZW50IGNvbnN0
cnVjdG9yIGluIHRoZSAKKyAgICAgICAgaW5pdGlhbGl6YXRpb24gbGlzdCBvZiBhIGNsYXNzLiAg
VGhlIGFsbG9jYXRlQ2VsbCgpIG1ldGhvZCB0dXJucyBvbiB0aGUgZ2xvYmFsIGZsYWcgZGlzYWxs
b3dpbmcgYW55IG5ldyAKKyAgICAgICAgYWxsb2NhdGlvbnMsIGFuZCB0aGUgY29uc3RydWN0b3JC
b2R5KCkgbWV0aG9kIGluIEpTQ2VsbCB0dXJucyBpdCBvZmYuICBUaGlzIHdheSwgYWxsb2NhdGlv
biBpcyBzdGlsbCAKKyAgICAgICAgYWxsb3dlZCBpbiBjb25zdHJ1Y3RvciBib2RpZXMgd2hpbGUg
b3RoZXIgcmVmYWN0b3JpbmcgZWZmb3J0cyBjb250aW51ZS4KKworICAgICAgICAqIHJ1bnRpbWUv
SlNDZWxsLmg6CisgICAgICAgIChKU0M6OkpTQ2VsbDo6SlNDZWxsOjpjb25zdHJ1Y3RvckJvZHkp
OgorICAgICAgICAoSlNDOjpKU0NlbGw6OkpTQ2VsbDo6SlNDZWxsKToKKyAgICAgICAgKEpTQzo6
SlNDZWxsOjphbGxvY2F0ZUNlbGwpOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxEYXRhLmNw
cDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxEYXRhOjpKU0dsb2JhbERhdGEpOgorICAgICAgICAq
IHJ1bnRpbWUvSlNHbG9iYWxEYXRhLmg6CisgICAgICAgIChKU0M6OkpTR2xvYmFsRGF0YTo6aXNJ
bml0aWFsaXppbmdPYmplY3QpOgorICAgICAgICAoSlNDOjpKU0dsb2JhbERhdGE6OnNldEluaXRp
YWxpemluZ09iamVjdCk6CisgICAgICAgICogcnVudGltZS9TdHJpbmdPYmplY3RUaGF0TWFzcXVl
cmFkZXNBc1VuZGVmaW5lZC5oOgorICAgICAgICAoSlNDOjpTdHJpbmdPYmplY3RUaGF0TWFzcXVl
cmFkZXNBc1VuZGVmaW5lZDo6Y3JlYXRlKToKKwogMjAxMS0wOC0yMyAgU3RldmUgQmxvY2sgIDxz
dGV2ZWJsb2NrQGdvb2dsZS5jb20+CiAKICAgICAgICAgUmVtb3ZlIGxhc3Qgb2NjdXJyZW5jZXMg
b2YgUExBVEZPUk0oQU5EUk9JRCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTQ2VsbC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmgK
aW5kZXggYzFjYWYxNTRhZjgwY2MxZWI5Mzg2ZDZkZGY3YTllY2I1YWQyNDI1Yy4uZGY2OTdjMDJi
ZDA4ZWQxNTI1NDNhZTMzYTA4MDEzZjI4MzFkZjFjMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNDZWxsLmgKQEAgLTE1MSw2ICsxNTEsOSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBw
cm90ZWN0ZWQ6CiAgICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBBbm9ueW1vdXNTbG90Q291
bnQgPSAwOwogCisgICAgICAgIHZvaWQgY29uc3RydWN0b3JCb2R5KEpTR2xvYmFsRGF0YSYpOwor
ICAgICAgICB2b2lkIGNvbnN0cnVjdG9yQm9keShKU0dsb2JhbERhdGEmLCBTdHJ1Y3R1cmUqLCBD
cmVhdGluZ0Vhcmx5Q2VsbFRhZyk7CisKICAgICBwcml2YXRlOgogICAgICAgICAvLyBCYXNlIGlt
cGxlbWVudGF0aW9uOyBmb3Igbm9uLW9iamVjdCBjbGFzc2VzIGltcGxlbWVudHMgZ2V0UHJvcGVy
dHlTbG90LgogICAgICAgICB2aXJ0dWFsIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEV4ZWNTdGF0
ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CkBAIC0x
NjcsMTIgKzE3MCwyOSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBpbmxpbmUgSlNDZWxsOjpKU0Nl
bGwoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAgICAg
ICAgOiBtX3N0cnVjdHVyZShnbG9iYWxEYXRhLCB0aGlzLCBzdHJ1Y3R1cmUpCiAgICAgewotICAg
ICAgICBBU1NFUlQobV9zdHJ1Y3R1cmUpOworICAgICAgICBjb25zdHJ1Y3RvckJvZHkoZ2xvYmFs
RGF0YSk7CiAgICAgfQogCiAgICAgaW5saW5lIEpTQ2VsbDo6SlNDZWxsKEpTR2xvYmFsRGF0YSYg
Z2xvYmFsRGF0YSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIENyZWF0aW5nRWFybHlDZWxsVGFnKQog
ICAgIHsKKyAgICAgICAgY29uc3RydWN0b3JCb2R5KGdsb2JhbERhdGEsIHN0cnVjdHVyZSwgQ3Jl
YXRpbmdFYXJseUNlbGwpOyAKKyAgICB9CisKKyAgICBpbmxpbmUgdm9pZCBKU0NlbGw6OmNvbnN0
cnVjdG9yQm9keShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEpCisgICAgeworI2lmIEVOQUJMRShH
Q19WQUxJREFUSU9OKQorICAgICAgICBBU1NFUlQoZ2xvYmFsRGF0YS5pc0luaXRpYWxpemluZ09i
amVjdCgpKTsKKyAgICAgICAgZ2xvYmFsRGF0YS5zZXRJbml0aWFsaXppbmdPYmplY3QoZmFsc2Up
OworI2Vsc2UKKyAgICAgICAgVU5VU0VEX1BBUkFNKGdsb2JhbERhdGEpOworI2VuZGlmCisgICAg
ICAgIEFTU0VSVChtX3N0cnVjdHVyZSk7CisgICAgfQorCisgICAgaW5saW5lIHZvaWQgSlNDZWxs
Ojpjb25zdHJ1Y3RvckJvZHkoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSwgQ3JlYXRpbmdFYXJseUNlbGxUYWcpCisgICAgewogI2lmIEVOQUJMRShHQ19WQUxJ
REFUSU9OKQorICAgICAgICBnbG9iYWxEYXRhLnNldEluaXRpYWxpemluZ09iamVjdChmYWxzZSk7
CiAgICAgICAgIGlmIChzdHJ1Y3R1cmUpCiAjZW5kaWYKICAgICAgICAgICAgIG1fc3RydWN0dXJl
LnNldEVhcmx5VmFsdWUoZ2xvYmFsRGF0YSwgdGhpcywgc3RydWN0dXJlKTsKQEAgLTM0OSw2ICsz
NjksMTAgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gdm9p
ZCogYWxsb2NhdGVDZWxsKEhlYXAmIGhlYXApCiAgICAgeworI2lmIEVOQUJMRShHQ19WQUxJREFU
SU9OKQorICAgICAgICBBU1NFUlQoIWhlYXAuZ2xvYmFsRGF0YSgpLT5pc0luaXRpYWxpemluZ09i
amVjdCgpKTsKKyAgICAgICAgaGVhcC5nbG9iYWxEYXRhKCktPnNldEluaXRpYWxpemluZ09iamVj
dCh0cnVlKTsKKyNlbmRpZgogICAgICAgICByZXR1cm4gaGVhcC5hbGxvY2F0ZShzaXplb2YoVCkp
OwogICAgIH0KICAgICAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0dsb2JhbERhdGEuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNH
bG9iYWxEYXRhLmNwcAppbmRleCBkNjQ3MTk1YjIzNDA3YzQ2MWE2MWZhNjc5MTg4OWMzMWNmNjg4
ZDY2Li5hOWEwNmI2NjMwYTBjOWI4MDkyYWY2N2M4ODk4YmIxOTRmZWUxNTViIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERhdGEuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsRGF0YS5jcHAKQEAgLTIwMSw2ICsy
MDEsOSBAQCBKU0dsb2JhbERhdGE6OkpTR2xvYmFsRGF0YShHbG9iYWxEYXRhVHlwZSBnbG9iYWxE
YXRhVHlwZSwgVGhyZWFkU3RhY2tUeXBlIHRocmVhZAogI2lmbmRlZiBOREVCVUcKICAgICAsIGV4
Y2x1c2l2ZVRocmVhZCgwKQogI2VuZGlmCisjaWYgRU5BQkxFKEdDX1ZBTElEQVRJT04pCisgICAg
LCBtX2luaXRpYWxpemluZ09iamVjdChmYWxzZSkKKyNlbmRpZgogewogICAgIGludGVycHJldGVy
ID0gbmV3IEludGVycHJldGVyOwogICAgIGlmIChnbG9iYWxEYXRhVHlwZSA9PSBEZWZhdWx0KQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxEYXRhLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERhdGEuaAppbmRleCAwNTdj
NDM1ZWEzMTkwYTE0ZmMxNmQ3MzRjOGQwMDE4MDI1ZTk0MWYwLi44MjhhOWEwNWVhNThmZDhiZDVh
ODNmNWViZTkxZjQ5OTcwYWFlNmEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0dsb2JhbERhdGEuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0dsb2JhbERhdGEuaApAQCAtMjc5LDYgKzI3OSwxMSBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICAgICAgYm9vbCBpc0NvbGxlY3RvckJ1c3koKSB7IHJldHVybiBoZWFwLmlzQnVzeSgpOyB9CiAg
ICAgICAgIHZvaWQgcmVsZWFzZUV4ZWN1dGFibGVNZW1vcnkoKTsKIAorI2lmIEVOQUJMRShHQ19W
QUxJREFUSU9OKQorICAgICAgICBib29sIGlzSW5pdGlhbGl6aW5nT2JqZWN0KCkgY29uc3Q7IAor
ICAgICAgICB2b2lkIHNldEluaXRpYWxpemluZ09iamVjdChib29sKTsKKyNlbmRpZgorCiAgICAg
cHJpdmF0ZToKICAgICAgICAgSlNHbG9iYWxEYXRhKEdsb2JhbERhdGFUeXBlLCBUaHJlYWRTdGFj
a1R5cGUsIEhlYXBTaXplKTsKICAgICAgICAgc3RhdGljIEpTR2xvYmFsRGF0YSomIHNoYXJlZElu
c3RhbmNlSW50ZXJuYWwoKTsKQEAgLTI4Nyw2ICsyOTIsOSBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICAgICAgYm9vbCBtX2NhblVzZUpJVDsKICNlbmRpZgogICAgICAgICBTdGFja0JvdW5kcyBtX3N0
YWNrOworI2lmIEVOQUJMRShHQ19WQUxJREFUSU9OKQorICAgICAgICBib29sIG1faW5pdGlhbGl6
aW5nT2JqZWN0OworI2VuZGlmCiAgICAgfTsKIAogICAgIGlubGluZSBIYW5kbGVTbG90IGFsbG9j
YXRlR2xvYmFsSGFuZGxlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSkKQEAgLTI5NCw2ICszMDIs
MTggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHJldHVybiBnbG9iYWxEYXRhLmFsbG9jYXRl
R2xvYmFsSGFuZGxlKCk7CiAgICAgfQogCisjaWYgRU5BQkxFKEdDX1ZBTElEQVRJT04pCisgICAg
aW5saW5lIGJvb2wgSlNHbG9iYWxEYXRhOjppc0luaXRpYWxpemluZ09iamVjdCgpIGNvbnN0Cisg
ICAgeworICAgICAgICByZXR1cm4gbV9pbml0aWFsaXppbmdPYmplY3Q7CisgICAgfQorCisgICAg
aW5saW5lIHZvaWQgSlNHbG9iYWxEYXRhOjpzZXRJbml0aWFsaXppbmdPYmplY3QoYm9vbCBpbml0
aWFsaXppbmdPYmplY3QpCisgICAgeworICAgICAgICBtX2luaXRpYWxpemluZ09iamVjdCA9IGlu
aXRpYWxpemluZ09iamVjdDsKKyAgICB9CisjZW5kaWYKKwogfSAvLyBuYW1lc3BhY2UgSlNDCiAK
ICNlbmRpZiAvLyBKU0dsb2JhbERhdGFfaApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvU3RyaW5nT2JqZWN0VGhhdE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ09iamVjdFRoYXRNYXNxdWVyYWRlc0Fz
VW5kZWZpbmVkLmgKaW5kZXggNjk0MzZkN2UzNmY0ODEwNjI5MGZiOGNlZjY2ZTlkNjZkNzk2N2M0
Zi4uMmZlMGI5ZjY4OWYyMzVmZGIyNTJiMjYwN2U3OTZiZTJmYmI4NDg4MSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nT2JqZWN0VGhhdE1hc3F1ZXJhZGVz
QXNVbmRlZmluZWQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdP
YmplY3RUaGF0TWFzcXVlcmFkZXNBc1VuZGVmaW5lZC5oCkBAIC0zNSw4ICszNSw4IEBAIG5hbWVz
cGFjZSBKU0MgewogICAgICAgICBzdGF0aWMgU3RyaW5nT2JqZWN0VGhhdE1hc3F1ZXJhZGVzQXNV
bmRlZmluZWQqIGNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFVTdHJpbmcmIHN0cmluZykK
ICAgICAgICAgewogICAgICAgICAgICAgSlNTdHJpbmcqIG5ld1N0cmluZyA9IGpzU3RyaW5nKGV4
ZWMsIHN0cmluZyk7Ci0gICAgICAgICAgICByZXR1cm4gbmV3IChhbGxvY2F0ZUNlbGw8U3RyaW5n
T2JqZWN0VGhhdE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQ+KCpleGVjLT5oZWFwKCkpKSBTdHJpbmdP
YmplY3RUaGF0TWFzcXVlcmFkZXNBc1VuZGVmaW5lZChleGVjLAotICAgICAgICAgICAgICAgIGNy
ZWF0ZVN0cnVjdHVyZShleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPmxleGljYWxHbG9iYWxPYmpl
Y3QoKS0+c3RyaW5nUHJvdG90eXBlKCkpLCBuZXdTdHJpbmcpOworICAgICAgICAgICAgU3RydWN0
dXJlKiBzdHJ1Y3R1cmUgPSBjcmVhdGVTdHJ1Y3R1cmUoZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVj
LT5sZXhpY2FsR2xvYmFsT2JqZWN0KCktPnN0cmluZ1Byb3RvdHlwZSgpKTsKKyAgICAgICAgICAg
IHJldHVybiBuZXcgKGFsbG9jYXRlQ2VsbDxTdHJpbmdPYmplY3RUaGF0TWFzcXVlcmFkZXNBc1Vu
ZGVmaW5lZD4oKmV4ZWMtPmhlYXAoKSkpIFN0cmluZ09iamVjdFRoYXRNYXNxdWVyYWRlc0FzVW5k
ZWZpbmVkKGV4ZWMsIHN0cnVjdHVyZSwgbmV3U3RyaW5nKTsKICAgICAgICAgfQogCiAgICAgcHJp
dmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZwppbmRleCBjY2VlMDNlY2FjNDMxYmQ3NGRlZjA3YTU1Y2QzZDJjNTU4N2I3
Y2M0Li43ODc0OGJiZThkOTc3N2YxMGIzZTk1NjBmYjQ0Yzg0NWI5NGI0ZTBiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMjIgQEAKKzIwMTEtMDgtMTkgIE1hcmsgSGFobmVuYmVyZyAgPG1oYWhuZW5i
ZXJnQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgY2hlY2tzIHRvIGVuc3VyZSBhbGxvY2F0aW9u
IGRvZXMgbm90IHRha2UgcGxhY2UgZHVyaW5nIGluaXRpYWxpemF0aW9uIG9mIEdDLW1hbmFnZWQg
b2JqZWN0cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NjUyODgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBO
byBuZXcgdGVzdHMuCisKKyAgICAgICAgQWRkaW5nIHRoZSBuZXcgdmFsaWRhdGlvbiBmdW5jdGlv
bmFsaXR5LiAgSW4gaXRzIGN1cnJlbnQgc3RhdGUsIGl0IHdpbGwgcGVyZm9ybXMgY2hlY2tzLCAK
KyAgICAgICAgYnV0IHRoZXkgZG9uJ3QgZmFpbCB1bmxlc3MgeW91IGRvIGFsbG9jYXRpb24gaW4g
dGhlIGFyZ3VtZW50cyB0byB0aGUgcGFyZW50IGNvbnN0cnVjdG9yIGluIHRoZSAKKyAgICAgICAg
aW5pdGlhbGl6YXRpb24gbGlzdCBvZiBhIGNsYXNzLiAgVGhlIGFsbG9jYXRlQ2VsbCgpIG1ldGhv
ZCB0dXJucyBvbiB0aGUgZ2xvYmFsIGZsYWcgZGlzYWxsb3dpbmcgYW55IG5ldyAKKyAgICAgICAg
YWxsb2NhdGlvbnMsIGFuZCB0aGUgY29uc3RydWN0b3JCb2R5KCkgbWV0aG9kIGluIEpTQ2VsbCB0
dXJucyBpdCBvZmYuICBUaGlzIHdheSwgYWxsb2NhdGlvbiBpcyBzdGlsbCAKKyAgICAgICAgYWxs
b3dlZCBpbiBjb25zdHJ1Y3RvciBib2RpZXMgd2hpbGUgb3RoZXIgcmVmYWN0b3JpbmcgZWZmb3J0
cyBjb250aW51ZS4KKworICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NV2luZG93U2hlbGwuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SlNET01XaW5kb3dTaGVsbDo6b3BlcmF0b3IgbmV3KToKKyAg
ICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTVdpbmRvd1NoZWxsLmg6CisKIDIwMTEtMDgtMjMgIEpl
c3NpZSBCZXJsaW4gIDxqYmVybGluQGFwcGxlLmNvbT4KIAogICAgICAgICBCdWlsZCBmaXguCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd1NoZWxsLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93U2hlbGwuY3BwCmluZGV4
IGVlN2M0NWZmODljYTg4NmYyMTk0ZGE3OGU4MWFjYjE1OTkxOTM3OTUuLmUxM2E4Nzg4ODM0ODg4
Y2RhNjk3NTFhMDNlN2Y1NTZmNWU0M2ExZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTRE9NV2luZG93U2hlbGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTRE9NV2luZG93U2hlbGwuY3BwCkBAIC0xNjcsNyArMTY3LDEyIEBAIERPTVdpbmRv
dyogSlNET01XaW5kb3dTaGVsbDo6aW1wbCgpIGNvbnN0CiAKIHZvaWQqIEpTRE9NV2luZG93U2hl
bGw6Om9wZXJhdG9yIG5ldyhzaXplX3Qgc2l6ZSkKIHsKLSAgICByZXR1cm4gSlNET01XaW5kb3c6
OmNvbW1vbkpTR2xvYmFsRGF0YSgpLT5oZWFwLmFsbG9jYXRlKHNpemUpOworICAgIEhlYXAmIGhl
YXAgPSBKU0RPTVdpbmRvdzo6Y29tbW9uSlNHbG9iYWxEYXRhKCktPmhlYXA7CisjaWYgRU5BQkxF
KEdDX1ZBTElEQVRJT04pCisgICAgQVNTRVJUKCFoZWFwLmdsb2JhbERhdGEoKS0+aXNJbml0aWFs
aXppbmdPYmplY3QoKSk7CisgICAgaGVhcC5nbG9iYWxEYXRhKCktPnNldEluaXRpYWxpemluZ09i
amVjdCh0cnVlKTsKKyNlbmRpZgorICAgIHJldHVybiBoZWFwLmFsbG9jYXRlKHNpemUpOwogfQog
CiAvLyAtLS0tCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKaW5kZXggNTcyZmE3ZTllZmE2ZGFmYmE4MTYxODQxMjRj
ZDQyNDE0YWY2ZTJjZi4uZjEyZDdmZjgxZTlhNzBlY2RlNjcyNWFmYmRmNGVmMjExYTRkZjFkNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJL
aXQvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDExLTA4LTE5ICBNYXJrIEhhaG5l
bmJlcmcgIDxtaGFobmVuYmVyZ0BhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIGNoZWNrcyB0byBl
bnN1cmUgYWxsb2NhdGlvbiBkb2VzIG5vdCB0YWtlIHBsYWNlIGR1cmluZyBpbml0aWFsaXphdGlv
biBvZiBHQy1tYW5hZ2VkIG9iamVjdHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTY1Mjg4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgQWRkaW5nIHRoZSBuZXcgdmFsaWRhdGlvbiBmdW5jdGlvbmFsaXR5LiAg
SW4gaXRzIGN1cnJlbnQgc3RhdGUsIGl0IHdpbGwgcGVyZm9ybXMgY2hlY2tzLCAKKyAgICAgICAg
YnV0IHRoZXkgZG9uJ3QgZmFpbCB1bmxlc3MgeW91IGRvIGFsbG9jYXRpb24gaW4gdGhlIGFyZ3Vt
ZW50cyB0byB0aGUgcGFyZW50IGNvbnN0cnVjdG9yIGluIHRoZSAKKyAgICAgICAgaW5pdGlhbGl6
YXRpb24gbGlzdCBvZiBhIGNsYXNzLiAgVGhlIGFsbG9jYXRlQ2VsbCgpIG1ldGhvZCB0dXJucyBv
biB0aGUgZ2xvYmFsIGZsYWcgZGlzYWxsb3dpbmcgYW55IG5ldyAKKyAgICAgICAgYWxsb2NhdGlv
bnMsIGFuZCB0aGUgY29uc3RydWN0b3JCb2R5KCkgbWV0aG9kIGluIEpTQ2VsbCB0dXJucyBpdCBv
ZmYuICBUaGlzIHdheSwgYWxsb2NhdGlvbiBpcyBzdGlsbCAKKyAgICAgICAgYWxsb3dlZCBpbiBj
b25zdHJ1Y3RvciBib2RpZXMgd2hpbGUgb3RoZXIgcmVmYWN0b3JpbmcgZWZmb3J0cyBjb250aW51
ZS4KKworICAgICAgICAqIFBsdWdpbnMvSG9zdGVkL1Byb3h5UnVudGltZU9iamVjdC5oOgorICAg
ICAgICAoV2ViS2l0OjpQcm94eVJ1bnRpbWVPYmplY3Q6OmNyZWF0ZSk6CisgICAgICAgICogUGx1
Z2lucy9Ib3N0ZWQvUHJveHlSdW50aW1lT2JqZWN0Lm1tOgorICAgICAgICAoV2ViS2l0OjpQcm94
eVJ1bnRpbWVPYmplY3Q6OlByb3h5UnVudGltZU9iamVjdCk6CisKIDIwMTEtMDgtMTggIEJldGgg
RGFraW4gIDxiZGFraW5AYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFNhbSBXZWlu
aWcuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL0hvc3RlZC9Qcm94eVJ1
bnRpbWVPYmplY3QuaCBiL1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvSG9zdGVkL1Byb3h5UnVu
dGltZU9iamVjdC5oCmluZGV4IGE3OTE2MGRhMzFkZTEyZDY5NTA3YmQ1N2U3Y2IzNmJlYjhiNzFh
MDYuLmQ4YWU4MTEwYTU1YmM5MjBiMzRiOGVkYzA0YTdhN2E1ODkwMzk2MDEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvSG9zdGVkL1Byb3h5UnVudGltZU9iamVjdC5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvSG9zdGVkL1Byb3h5UnVudGltZU9iamVjdC5o
CkBAIC0yOCw2ICsyOCw3IEBACiAjaWZuZGVmIFByb3h5UnVudGltZU9iamVjdF9oCiAjZGVmaW5l
IFByb3h5UnVudGltZU9iamVjdF9oCiAKKyNpbmNsdWRlIDxXZWJDb3JlL0pTRE9NQmluZGluZy5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvcnVudGltZV9vYmplY3QuaD4KIAogbmFtZXNwYWNlIFdlYktp
dCB7CkBAIC00MCw3ICs0MSwxMCBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgUHJveHlSdW50aW1l
T2JqZWN0KiBjcmVhdGUoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIEpTQzo6SlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgUGFzc1JlZlB0cjxQcm94eUluc3RhbmNlPiBpbnN0YW5jZSkKICAgICB7
Ci0gICAgICAgIHJldHVybiBuZXcgKEpTQzo6YWxsb2NhdGVDZWxsPFByb3h5UnVudGltZU9iamVj
dD4oKmV4ZWMtPmhlYXAoKSkpIFByb3h5UnVudGltZU9iamVjdChleGVjLCBnbG9iYWxPYmplY3Qs
IGluc3RhbmNlKTsKKyAgICAgICAgLy8gRklYTUU6IGRlcHJlY2F0ZWRHZXRET01TdHJ1Y3R1cmUg
dXNlcyB0aGUgcHJvdG90eXBlIG9mZiBvZiB0aGUgd3JvbmcgZ2xvYmFsIG9iamVjdC4KKyAgICAg
ICAgLy8gZXhlYy0+Z2xvYmFsRGF0YSgpIGlzIGFsc28gbGlrZWx5IHdyb25nLgorICAgICAgICBK
U0M6OlN0cnVjdHVyZSogc3RydWN0dXJlID0gV2ViQ29yZTo6ZGVwcmVjYXRlZEdldERPTVN0cnVj
dHVyZTxQcm94eVJ1bnRpbWVPYmplY3Q+KGV4ZWMpOworICAgICAgICByZXR1cm4gbmV3IChKU0M6
OmFsbG9jYXRlQ2VsbDxQcm94eVJ1bnRpbWVPYmplY3Q+KCpleGVjLT5oZWFwKCkpKSBQcm94eVJ1
bnRpbWVPYmplY3QoZXhlYywgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIGluc3RhbmNlKTsKICAg
ICB9CiAKICAgICB2aXJ0dWFsIH5Qcm94eVJ1bnRpbWVPYmplY3QoKTsKQEAgLTU0LDcgKzU4LDcg
QEAgcHVibGljOgogCiAgICAgc3RhdGljIGNvbnN0IEpTQzo6Q2xhc3NJbmZvIHNfaW5mbzsKIHBy
aXZhdGU6Ci0gICAgUHJveHlSdW50aW1lT2JqZWN0KEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU0ds
b2JhbE9iamVjdCosIFBhc3NSZWZQdHI8UHJveHlJbnN0YW5jZT4pOworICAgIFByb3h5UnVudGlt
ZU9iamVjdChKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OlN0cnVj
dHVyZSosIFBhc3NSZWZQdHI8UHJveHlJbnN0YW5jZT4pOwogfTsKIAogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9Ib3N0ZWQvUHJveHlSdW50aW1lT2JqZWN0Lm1tIGIv
U291cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9Ib3N0ZWQvUHJveHlSdW50aW1lT2JqZWN0Lm1tCmlu
ZGV4IGMxMmQ1Y2ZmODg2MjhmYzk3NDkwOTVjMmIzMjhiNTk1MmYzN2UyMTMuLjhhNjQ4MWUzZDQ1
MmNiM2ZiNmY4MWIxZWYwMzU2OTMwMWJiMzBjNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
bWFjL1BsdWdpbnMvSG9zdGVkL1Byb3h5UnVudGltZU9iamVjdC5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0L21hYy9QbHVnaW5zL0hvc3RlZC9Qcm94eVJ1bnRpbWVPYmplY3QubW0KQEAgLTI2LDcgKzI2
LDYgQEAKICNpZiBVU0UoUExVR0lOX0hPU1RfUFJPQ0VTUykKIAogI2luY2x1ZGUgInJ1bnRpbWUv
T2JqZWN0UHJvdG90eXBlLmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9KU0RPTUJpbmRpbmcuaD4KICNp
bmNsdWRlICJQcm94eUluc3RhbmNlLmgiCiAjaW5jbHVkZSAiUHJveHlSdW50aW1lT2JqZWN0Lmgi
CiAKQEAgLTM3LDEwICszNiw4IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjb25zdCBDbGFzc0lu
Zm8gUHJveHlSdW50aW1lT2JqZWN0OjpzX2luZm8gPSB7ICJQcm94eVJ1bnRpbWVPYmplY3QiLCAm
UnVudGltZU9iamVjdDo6c19pbmZvLCAwLCAwIH07CiAKLVByb3h5UnVudGltZU9iamVjdDo6UHJv
eHlSdW50aW1lT2JqZWN0KEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgUGFzc1JlZlB0cjxQcm94eUluc3RhbmNlPiBpbnN0YW5jZSkKLSAgICAvLyBGSVhNRTog
ZGVwcmVjYXRlZEdldERPTVN0cnVjdHVyZSB1c2VzIHRoZSBwcm90b3R5cGUgb2ZmIG9mIHRoZSB3
cm9uZyBnbG9iYWwgb2JqZWN0Ci0gICAgLy8gZXhlYy1nbG9iYWxEYXRhKCkgaXMgYWxzbyBsaWtl
bHkgd3JvbmcuCi0gICAgOiBSdW50aW1lT2JqZWN0KGV4ZWMsIGdsb2JhbE9iamVjdCwgV2ViQ29y
ZTo6ZGVwcmVjYXRlZEdldERPTVN0cnVjdHVyZTxQcm94eVJ1bnRpbWVPYmplY3Q+KGV4ZWMpLCBp
bnN0YW5jZSkKK1Byb3h5UnVudGltZU9iamVjdDo6UHJveHlSdW50aW1lT2JqZWN0KEV4ZWNTdGF0
ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUsIFBhc3NSZWZQdHI8UHJveHlJbnN0YW5jZT4gaW5zdGFuY2UpCisgICAgOiBSdW50aW1lT2Jq
ZWN0KGV4ZWMsIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBpbnN0YW5jZSkKIHsKICAgICBBU1NF
UlQoaW5oZXJpdHMoJnNfaW5mbykpOwogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>104935</attachid>
            <date>2011-08-23 17:07:02 -0700</date>
            <delta_ts>2011-08-23 19:05:47 -0700</delta_ts>
            <desc>Fixing review issues</desc>
            <filename>bug-65288-20110823170706.patch</filename>
            <type>text/plain</type>
            <size>13030</size>
            <attacher name="Mark Hahnenberg">mhahnenberg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTM2MTEKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IGRk
ZGU2ZDhjM2MzMTJjYmEzOWVlZTIyZjZkMzQwMWI5YzJmYTQwOTguLjAwMTE0M2ViMmZhODg0Yzli
NTIwMWE4ZmUxMzBiOTkxNTMyYmU3OTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDI4IEBACisyMDExLTA4LTE5ICBNYXJrIEhhaG5lbmJlcmcgIDxtaGFobmVuYmVyZ0BhcHBs
ZS5jb20+CisKKyAgICAgICAgQWRkIGNoZWNrcyB0byBlbnN1cmUgYWxsb2NhdGlvbiBkb2VzIG5v
dCB0YWtlIHBsYWNlIGR1cmluZyBpbml0aWFsaXphdGlvbiBvZiBHQy1tYW5hZ2VkIG9iamVjdHMK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY1Mjg4CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkaW5nIHRo
ZSBuZXcgdmFsaWRhdGlvbiBmdW5jdGlvbmFsaXR5LiAgSW4gaXRzIGN1cnJlbnQgc3RhdGUsIGl0
IHdpbGwgcGVyZm9ybXMgY2hlY2tzLCAKKyAgICAgICAgYnV0IHRoZXkgZG9uJ3QgZmFpbCB1bmxl
c3MgeW91IGRvIGFsbG9jYXRpb24gaW4gdGhlIGFyZ3VtZW50cyB0byB0aGUgcGFyZW50IGNvbnN0
cnVjdG9yIGluIHRoZSAKKyAgICAgICAgaW5pdGlhbGl6YXRpb24gbGlzdCBvZiBhIGNsYXNzLiAg
VGhlIGFsbG9jYXRlQ2VsbCgpIG1ldGhvZCB0dXJucyBvbiB0aGUgZ2xvYmFsIGZsYWcgZGlzYWxs
b3dpbmcgYW55IG5ldyAKKyAgICAgICAgYWxsb2NhdGlvbnMsIGFuZCB0aGUgY29uc3RydWN0b3JC
b2R5KCkgbWV0aG9kIGluIEpTQ2VsbCB0dXJucyBpdCBvZmYuICBUaGlzIHdheSwgYWxsb2NhdGlv
biBpcyBzdGlsbCAKKyAgICAgICAgYWxsb3dlZCBpbiBjb25zdHJ1Y3RvciBib2RpZXMgd2hpbGUg
b3RoZXIgcmVmYWN0b3JpbmcgZWZmb3J0cyBjb250aW51ZS4KKworICAgICAgICAqIHJ1bnRpbWUv
SlNDZWxsLmg6CisgICAgICAgIChKU0M6OkpTQ2VsbDo6SlNDZWxsOjpjb25zdHJ1Y3RvckJvZHkp
OgorICAgICAgICAoSlNDOjpKU0NlbGw6OkpTQ2VsbDo6SlNDZWxsKToKKyAgICAgICAgKEpTQzo6
SlNDZWxsOjphbGxvY2F0ZUNlbGwpOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxEYXRhLmNw
cDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxEYXRhOjpKU0dsb2JhbERhdGEpOgorICAgICAgICAq
IHJ1bnRpbWUvSlNHbG9iYWxEYXRhLmg6CisgICAgICAgIChKU0M6OkpTR2xvYmFsRGF0YTo6aXNJ
bml0aWFsaXppbmdPYmplY3QpOgorICAgICAgICAoSlNDOjpKU0dsb2JhbERhdGE6OnNldEluaXRp
YWxpemluZ09iamVjdCk6CisgICAgICAgICogcnVudGltZS9TdHJpbmdPYmplY3RUaGF0TWFzcXVl
cmFkZXNBc1VuZGVmaW5lZC5oOgorICAgICAgICAoSlNDOjpTdHJpbmdPYmplY3RUaGF0TWFzcXVl
cmFkZXNBc1VuZGVmaW5lZDo6Y3JlYXRlKToKKwogMjAxMS0wOC0yMyAgU3RldmUgQmxvY2sgIDxz
dGV2ZWJsb2NrQGdvb2dsZS5jb20+CiAKICAgICAgICAgUmVtb3ZlIGxhc3Qgb2NjdXJyZW5jZXMg
b2YgUExBVEZPUk0oQU5EUk9JRCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTQ2VsbC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmgK
aW5kZXggYzFjYWYxNTRhZjgwY2MxZWI5Mzg2ZDZkZGY3YTllY2I1YWQyNDI1Yy4uZGY2OTdjMDJi
ZDA4ZWQxNTI1NDNhZTMzYTA4MDEzZjI4MzFkZjFjMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNDZWxsLmgKQEAgLTE1MSw2ICsxNTEsOSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBw
cm90ZWN0ZWQ6CiAgICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBBbm9ueW1vdXNTbG90Q291
bnQgPSAwOwogCisgICAgICAgIHZvaWQgY29uc3RydWN0b3JCb2R5KEpTR2xvYmFsRGF0YSYpOwor
ICAgICAgICB2b2lkIGNvbnN0cnVjdG9yQm9keShKU0dsb2JhbERhdGEmLCBTdHJ1Y3R1cmUqLCBD
cmVhdGluZ0Vhcmx5Q2VsbFRhZyk7CisKICAgICBwcml2YXRlOgogICAgICAgICAvLyBCYXNlIGlt
cGxlbWVudGF0aW9uOyBmb3Igbm9uLW9iamVjdCBjbGFzc2VzIGltcGxlbWVudHMgZ2V0UHJvcGVy
dHlTbG90LgogICAgICAgICB2aXJ0dWFsIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEV4ZWNTdGF0
ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CkBAIC0x
NjcsMTIgKzE3MCwyOSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBpbmxpbmUgSlNDZWxsOjpKU0Nl
bGwoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAgICAg
ICAgOiBtX3N0cnVjdHVyZShnbG9iYWxEYXRhLCB0aGlzLCBzdHJ1Y3R1cmUpCiAgICAgewotICAg
ICAgICBBU1NFUlQobV9zdHJ1Y3R1cmUpOworICAgICAgICBjb25zdHJ1Y3RvckJvZHkoZ2xvYmFs
RGF0YSk7CiAgICAgfQogCiAgICAgaW5saW5lIEpTQ2VsbDo6SlNDZWxsKEpTR2xvYmFsRGF0YSYg
Z2xvYmFsRGF0YSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIENyZWF0aW5nRWFybHlDZWxsVGFnKQog
ICAgIHsKKyAgICAgICAgY29uc3RydWN0b3JCb2R5KGdsb2JhbERhdGEsIHN0cnVjdHVyZSwgQ3Jl
YXRpbmdFYXJseUNlbGwpOyAKKyAgICB9CisKKyAgICBpbmxpbmUgdm9pZCBKU0NlbGw6OmNvbnN0
cnVjdG9yQm9keShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEpCisgICAgeworI2lmIEVOQUJMRShH
Q19WQUxJREFUSU9OKQorICAgICAgICBBU1NFUlQoZ2xvYmFsRGF0YS5pc0luaXRpYWxpemluZ09i
amVjdCgpKTsKKyAgICAgICAgZ2xvYmFsRGF0YS5zZXRJbml0aWFsaXppbmdPYmplY3QoZmFsc2Up
OworI2Vsc2UKKyAgICAgICAgVU5VU0VEX1BBUkFNKGdsb2JhbERhdGEpOworI2VuZGlmCisgICAg
ICAgIEFTU0VSVChtX3N0cnVjdHVyZSk7CisgICAgfQorCisgICAgaW5saW5lIHZvaWQgSlNDZWxs
Ojpjb25zdHJ1Y3RvckJvZHkoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSwgQ3JlYXRpbmdFYXJseUNlbGxUYWcpCisgICAgewogI2lmIEVOQUJMRShHQ19WQUxJ
REFUSU9OKQorICAgICAgICBnbG9iYWxEYXRhLnNldEluaXRpYWxpemluZ09iamVjdChmYWxzZSk7
CiAgICAgICAgIGlmIChzdHJ1Y3R1cmUpCiAjZW5kaWYKICAgICAgICAgICAgIG1fc3RydWN0dXJl
LnNldEVhcmx5VmFsdWUoZ2xvYmFsRGF0YSwgdGhpcywgc3RydWN0dXJlKTsKQEAgLTM0OSw2ICsz
NjksMTAgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gdm9p
ZCogYWxsb2NhdGVDZWxsKEhlYXAmIGhlYXApCiAgICAgeworI2lmIEVOQUJMRShHQ19WQUxJREFU
SU9OKQorICAgICAgICBBU1NFUlQoIWhlYXAuZ2xvYmFsRGF0YSgpLT5pc0luaXRpYWxpemluZ09i
amVjdCgpKTsKKyAgICAgICAgaGVhcC5nbG9iYWxEYXRhKCktPnNldEluaXRpYWxpemluZ09iamVj
dCh0cnVlKTsKKyNlbmRpZgogICAgICAgICByZXR1cm4gaGVhcC5hbGxvY2F0ZShzaXplb2YoVCkp
OwogICAgIH0KICAgICAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0dsb2JhbERhdGEuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNH
bG9iYWxEYXRhLmNwcAppbmRleCBkNjQ3MTk1YjIzNDA3YzQ2MWE2MWZhNjc5MTg4OWMzMWNmNjg4
ZDY2Li42YWQ2NjI4NjhkM2E3MjFhOWZmNDRhZGM0ZDU5NWQ4MThkZTU2ZTZiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERhdGEuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsRGF0YS5jcHAKQEAgLTIwMSw2ICsy
MDEsOSBAQCBKU0dsb2JhbERhdGE6OkpTR2xvYmFsRGF0YShHbG9iYWxEYXRhVHlwZSBnbG9iYWxE
YXRhVHlwZSwgVGhyZWFkU3RhY2tUeXBlIHRocmVhZAogI2lmbmRlZiBOREVCVUcKICAgICAsIGV4
Y2x1c2l2ZVRocmVhZCgwKQogI2VuZGlmCisjaWYgRU5BQkxFKEdDX1ZBTElEQVRJT04pCisgICAg
LCBtX2lzSW5pdGlhbGl6aW5nT2JqZWN0KGZhbHNlKQorI2VuZGlmCiB7CiAgICAgaW50ZXJwcmV0
ZXIgPSBuZXcgSW50ZXJwcmV0ZXI7CiAgICAgaWYgKGdsb2JhbERhdGFUeXBlID09IERlZmF1bHQp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERhdGEu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsRGF0YS5oCmluZGV4IDA1
N2M0MzVlYTMxOTBhMTRmYzE2ZDczNGM4ZDAwMTgwMjVlOTQxZjAuLjRkY2Y1MDFkZDExNjQ3NGU1
NWRlNDA0MDE1ZWZhYTkwZWU3OTNhNmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTR2xvYmFsRGF0YS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTR2xvYmFsRGF0YS5oCkBAIC0yNzksNiArMjc5LDExIEBAIG5hbWVzcGFjZSBKU0Mgewog
ICAgICAgICBib29sIGlzQ29sbGVjdG9yQnVzeSgpIHsgcmV0dXJuIGhlYXAuaXNCdXN5KCk7IH0K
ICAgICAgICAgdm9pZCByZWxlYXNlRXhlY3V0YWJsZU1lbW9yeSgpOwogCisjaWYgRU5BQkxFKEdD
X1ZBTElEQVRJT04pCisgICAgICAgIGJvb2wgaXNJbml0aWFsaXppbmdPYmplY3QoKSBjb25zdDsg
CisgICAgICAgIHZvaWQgc2V0SW5pdGlhbGl6aW5nT2JqZWN0KGJvb2wpOworI2VuZGlmCisKICAg
ICBwcml2YXRlOgogICAgICAgICBKU0dsb2JhbERhdGEoR2xvYmFsRGF0YVR5cGUsIFRocmVhZFN0
YWNrVHlwZSwgSGVhcFNpemUpOwogICAgICAgICBzdGF0aWMgSlNHbG9iYWxEYXRhKiYgc2hhcmVk
SW5zdGFuY2VJbnRlcm5hbCgpOwpAQCAtMjg3LDYgKzI5Miw5IEBAIG5hbWVzcGFjZSBKU0Mgewog
ICAgICAgICBib29sIG1fY2FuVXNlSklUOwogI2VuZGlmCiAgICAgICAgIFN0YWNrQm91bmRzIG1f
c3RhY2s7CisjaWYgRU5BQkxFKEdDX1ZBTElEQVRJT04pCisgICAgICAgIGJvb2wgbV9pc0luaXRp
YWxpemluZ09iamVjdDsKKyNlbmRpZgogICAgIH07CiAKICAgICBpbmxpbmUgSGFuZGxlU2xvdCBh
bGxvY2F0ZUdsb2JhbEhhbmRsZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEpCkBAIC0yOTQsNiAr
MzAyLDE4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICByZXR1cm4gZ2xvYmFsRGF0YS5hbGxv
Y2F0ZUdsb2JhbEhhbmRsZSgpOwogICAgIH0KIAorI2lmIEVOQUJMRShHQ19WQUxJREFUSU9OKQor
ICAgIGlubGluZSBib29sIEpTR2xvYmFsRGF0YTo6aXNJbml0aWFsaXppbmdPYmplY3QoKSBjb25z
dAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1faXNJbml0aWFsaXppbmdPYmplY3Q7CisgICAgfQor
CisgICAgaW5saW5lIHZvaWQgSlNHbG9iYWxEYXRhOjpzZXRJbml0aWFsaXppbmdPYmplY3QoYm9v
bCBpbml0aWFsaXppbmdPYmplY3QpCisgICAgeworICAgICAgICBtX2lzSW5pdGlhbGl6aW5nT2Jq
ZWN0ID0gaW5pdGlhbGl6aW5nT2JqZWN0OworICAgIH0KKyNlbmRpZgorCiB9IC8vIG5hbWVzcGFj
ZSBKU0MKIAogI2VuZGlmIC8vIEpTR2xvYmFsRGF0YV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdPYmplY3RUaGF0TWFzcXVlcmFkZXNBc1VuZGVmaW5l
ZC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nT2JqZWN0VGhhdE1hc3F1
ZXJhZGVzQXNVbmRlZmluZWQuaAppbmRleCA2OTQzNmQ3ZTM2ZjQ4MTA2MjkwZmI4Y2VmNjZlOWQ2
NmQ3OTY3YzRmLi4yZmUwYjlmNjg5ZjIzNWZkYjI1MmIyNjA3ZTc5NmJlMmZiYjg0ODgxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdPYmplY3RUaGF0TWFz
cXVlcmFkZXNBc1VuZGVmaW5lZC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1N0cmluZ09iamVjdFRoYXRNYXNxdWVyYWRlc0FzVW5kZWZpbmVkLmgKQEAgLTM1LDggKzM1LDgg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHN0YXRpYyBTdHJpbmdPYmplY3RUaGF0TWFzcXVl
cmFkZXNBc1VuZGVmaW5lZCogY3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgVVN0cmluZyYg
c3RyaW5nKQogICAgICAgICB7CiAgICAgICAgICAgICBKU1N0cmluZyogbmV3U3RyaW5nID0ganNT
dHJpbmcoZXhlYywgc3RyaW5nKTsKLSAgICAgICAgICAgIHJldHVybiBuZXcgKGFsbG9jYXRlQ2Vs
bDxTdHJpbmdPYmplY3RUaGF0TWFzcXVlcmFkZXNBc1VuZGVmaW5lZD4oKmV4ZWMtPmhlYXAoKSkp
IFN0cmluZ09iamVjdFRoYXRNYXNxdWVyYWRlc0FzVW5kZWZpbmVkKGV4ZWMsCi0gICAgICAgICAg
ICAgICAgY3JlYXRlU3RydWN0dXJlKGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+bGV4aWNhbEds
b2JhbE9iamVjdCgpLT5zdHJpbmdQcm90b3R5cGUoKSksIG5ld1N0cmluZyk7CisgICAgICAgICAg
ICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGNyZWF0ZVN0cnVjdHVyZShleGVjLT5nbG9iYWxEYXRh
KCksIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+c3RyaW5nUHJvdG90eXBlKCkpOworICAg
ICAgICAgICAgcmV0dXJuIG5ldyAoYWxsb2NhdGVDZWxsPFN0cmluZ09iamVjdFRoYXRNYXNxdWVy
YWRlc0FzVW5kZWZpbmVkPigqZXhlYy0+aGVhcCgpKSkgU3RyaW5nT2JqZWN0VGhhdE1hc3F1ZXJh
ZGVzQXNVbmRlZmluZWQoZXhlYywgc3RydWN0dXJlLCBuZXdTdHJpbmcpOwogICAgICAgICB9CiAK
ICAgICBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGNjZWUwM2VjYWM0MzFiZDc0ZGVmMDdhNTVjZDNk
MmM1NTg3YjdjYzQuLjc4NzQ4YmJlOGQ5Nzc3ZjEwYjNlOTU2MGZiNDRjODQ1Yjk0YjRlMGIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwyMiBAQAorMjAxMS0wOC0xOSAgTWFyayBIYWhuZW5iZXJnICA8
bWhhaG5lbmJlcmdAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBjaGVja3MgdG8gZW5zdXJlIGFs
bG9jYXRpb24gZG9lcyBub3QgdGFrZSBwbGFjZSBkdXJpbmcgaW5pdGlhbGl6YXRpb24gb2YgR0Mt
bWFuYWdlZCBvYmplY3RzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD02NTI4OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIE5vIG5ldyB0ZXN0cy4KKworICAgICAgICBBZGRpbmcgdGhlIG5ldyB2YWxpZGF0aW9u
IGZ1bmN0aW9uYWxpdHkuICBJbiBpdHMgY3VycmVudCBzdGF0ZSwgaXQgd2lsbCBwZXJmb3JtcyBj
aGVja3MsIAorICAgICAgICBidXQgdGhleSBkb24ndCBmYWlsIHVubGVzcyB5b3UgZG8gYWxsb2Nh
dGlvbiBpbiB0aGUgYXJndW1lbnRzIHRvIHRoZSBwYXJlbnQgY29uc3RydWN0b3IgaW4gdGhlIAor
ICAgICAgICBpbml0aWFsaXphdGlvbiBsaXN0IG9mIGEgY2xhc3MuICBUaGUgYWxsb2NhdGVDZWxs
KCkgbWV0aG9kIHR1cm5zIG9uIHRoZSBnbG9iYWwgZmxhZyBkaXNhbGxvd2luZyBhbnkgbmV3IAor
ICAgICAgICBhbGxvY2F0aW9ucywgYW5kIHRoZSBjb25zdHJ1Y3RvckJvZHkoKSBtZXRob2QgaW4g
SlNDZWxsIHR1cm5zIGl0IG9mZi4gIFRoaXMgd2F5LCBhbGxvY2F0aW9uIGlzIHN0aWxsIAorICAg
ICAgICBhbGxvd2VkIGluIGNvbnN0cnVjdG9yIGJvZGllcyB3aGlsZSBvdGhlciByZWZhY3Rvcmlu
ZyBlZmZvcnRzIGNvbnRpbnVlLgorCisgICAgICAgICogYmluZGluZ3MvanMvSlNET01XaW5kb3dT
aGVsbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVdpbmRvd1NoZWxsOjpvcGVyYXRvciBu
ZXcpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NV2luZG93U2hlbGwuaDoKKwogMjAxMS0w
OC0yMyAgSmVzc2llIEJlcmxpbiAgPGpiZXJsaW5AYXBwbGUuY29tPgogCiAgICAgICAgIEJ1aWxk
IGZpeC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93
U2hlbGwuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dTaGVsbC5j
cHAKaW5kZXggZWU3YzQ1ZmY4OWNhODg2ZjIxOTRkYTc4ZTgxYWNiMTU5OTE5Mzc5NS4uZTEzYTg3
ODg4MzQ4ODhjZGE2OTc1MWEwM2U3ZjU1NmY1ZTQzYTFmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dTaGVsbC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dTaGVsbC5jcHAKQEAgLTE2Nyw3ICsxNjcsMTIgQEAg
RE9NV2luZG93KiBKU0RPTVdpbmRvd1NoZWxsOjppbXBsKCkgY29uc3QKIAogdm9pZCogSlNET01X
aW5kb3dTaGVsbDo6b3BlcmF0b3IgbmV3KHNpemVfdCBzaXplKQogewotICAgIHJldHVybiBKU0RP
TVdpbmRvdzo6Y29tbW9uSlNHbG9iYWxEYXRhKCktPmhlYXAuYWxsb2NhdGUoc2l6ZSk7CisgICAg
SGVhcCYgaGVhcCA9IEpTRE9NV2luZG93Ojpjb21tb25KU0dsb2JhbERhdGEoKS0+aGVhcDsKKyNp
ZiBFTkFCTEUoR0NfVkFMSURBVElPTikKKyAgICBBU1NFUlQoIWhlYXAuZ2xvYmFsRGF0YSgpLT5p
c0luaXRpYWxpemluZ09iamVjdCgpKTsKKyAgICBoZWFwLmdsb2JhbERhdGEoKS0+c2V0SW5pdGlh
bGl6aW5nT2JqZWN0KHRydWUpOworI2VuZGlmCisgICAgcmV0dXJuIGhlYXAuYWxsb2NhdGUoc2l6
ZSk7CiB9CiAKIC8vIC0tLS0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwppbmRleCA1NzJmYTdlOWVmYTZkYWZiYTgx
NjE4NDEyNGNkNDI0MTRhZjZlMmNmLi5mMTJkN2ZmODFlOWE3MGVjZGU2NzI1YWZiZGY0ZWYyMTFh
NGRmMWQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMTEtMDgtMTkgIE1h
cmsgSGFobmVuYmVyZyAgPG1oYWhuZW5iZXJnQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgY2hl
Y2tzIHRvIGVuc3VyZSBhbGxvY2F0aW9uIGRvZXMgbm90IHRha2UgcGxhY2UgZHVyaW5nIGluaXRp
YWxpemF0aW9uIG9mIEdDLW1hbmFnZWQgb2JqZWN0cworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjUyODgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBBZGRpbmcgdGhlIG5ldyB2YWxpZGF0aW9uIGZ1bmN0aW9u
YWxpdHkuICBJbiBpdHMgY3VycmVudCBzdGF0ZSwgaXQgd2lsbCBwZXJmb3JtcyBjaGVja3MsIAor
ICAgICAgICBidXQgdGhleSBkb24ndCBmYWlsIHVubGVzcyB5b3UgZG8gYWxsb2NhdGlvbiBpbiB0
aGUgYXJndW1lbnRzIHRvIHRoZSBwYXJlbnQgY29uc3RydWN0b3IgaW4gdGhlIAorICAgICAgICBp
bml0aWFsaXphdGlvbiBsaXN0IG9mIGEgY2xhc3MuICBUaGUgYWxsb2NhdGVDZWxsKCkgbWV0aG9k
IHR1cm5zIG9uIHRoZSBnbG9iYWwgZmxhZyBkaXNhbGxvd2luZyBhbnkgbmV3IAorICAgICAgICBh
bGxvY2F0aW9ucywgYW5kIHRoZSBjb25zdHJ1Y3RvckJvZHkoKSBtZXRob2QgaW4gSlNDZWxsIHR1
cm5zIGl0IG9mZi4gIFRoaXMgd2F5LCBhbGxvY2F0aW9uIGlzIHN0aWxsIAorICAgICAgICBhbGxv
d2VkIGluIGNvbnN0cnVjdG9yIGJvZGllcyB3aGlsZSBvdGhlciByZWZhY3RvcmluZyBlZmZvcnRz
IGNvbnRpbnVlLgorCisgICAgICAgICogUGx1Z2lucy9Ib3N0ZWQvUHJveHlSdW50aW1lT2JqZWN0
Lmg6CisgICAgICAgIChXZWJLaXQ6OlByb3h5UnVudGltZU9iamVjdDo6Y3JlYXRlKToKKyAgICAg
ICAgKiBQbHVnaW5zL0hvc3RlZC9Qcm94eVJ1bnRpbWVPYmplY3QubW06CisgICAgICAgIChXZWJL
aXQ6OlByb3h5UnVudGltZU9iamVjdDo6UHJveHlSdW50aW1lT2JqZWN0KToKKwogMjAxMS0wOC0x
OCAgQmV0aCBEYWtpbiAgPGJkYWtpbkBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkg
U2FtIFdlaW5pZy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvSG9zdGVk
L1Byb3h5UnVudGltZU9iamVjdC5oIGIvU291cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9Ib3N0ZWQv
UHJveHlSdW50aW1lT2JqZWN0LmgKaW5kZXggYTc5MTYwZGEzMWRlMTJkNjk1MDdiZDU3ZTdjYjM2
YmViOGI3MWEwNi4uZDhhZTgxMTBhNTViYzkyMGIzNGI4ZWRjMDRhN2E3YTU4OTAzOTYwMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9Ib3N0ZWQvUHJveHlSdW50aW1lT2Jq
ZWN0LmgKKysrIGIvU291cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9Ib3N0ZWQvUHJveHlSdW50aW1l
T2JqZWN0LmgKQEAgLTI4LDYgKzI4LDcgQEAKICNpZm5kZWYgUHJveHlSdW50aW1lT2JqZWN0X2gK
ICNkZWZpbmUgUHJveHlSdW50aW1lT2JqZWN0X2gKIAorI2luY2x1ZGUgPFdlYkNvcmUvSlNET01C
aW5kaW5nLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9ydW50aW1lX29iamVjdC5oPgogCiBuYW1lc3Bh
Y2UgV2ViS2l0IHsKQEAgLTQwLDcgKzQxLDEwIEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBQcm94
eVJ1bnRpbWVPYmplY3QqIGNyZWF0ZShKU0M6OkV4ZWNTdGF0ZSogZXhlYywgSlNDOjpKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQYXNzUmVmUHRyPFByb3h5SW5zdGFuY2U+IGluc3RhbmNl
KQogICAgIHsKLSAgICAgICAgcmV0dXJuIG5ldyAoSlNDOjphbGxvY2F0ZUNlbGw8UHJveHlSdW50
aW1lT2JqZWN0PigqZXhlYy0+aGVhcCgpKSkgUHJveHlSdW50aW1lT2JqZWN0KGV4ZWMsIGdsb2Jh
bE9iamVjdCwgaW5zdGFuY2UpOworICAgICAgICAvLyBGSVhNRTogZGVwcmVjYXRlZEdldERPTVN0
cnVjdHVyZSB1c2VzIHRoZSBwcm90b3R5cGUgb2ZmIG9mIHRoZSB3cm9uZyBnbG9iYWwgb2JqZWN0
LgorICAgICAgICAvLyBleGVjLT5nbG9iYWxEYXRhKCkgaXMgYWxzbyBsaWtlbHkgd3JvbmcuCisg
ICAgICAgIEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBXZWJDb3JlOjpkZXByZWNhdGVkR2V0
RE9NU3RydWN0dXJlPFByb3h5UnVudGltZU9iamVjdD4oZXhlYyk7CisgICAgICAgIHJldHVybiBu
ZXcgKEpTQzo6YWxsb2NhdGVDZWxsPFByb3h5UnVudGltZU9iamVjdD4oKmV4ZWMtPmhlYXAoKSkp
IFByb3h5UnVudGltZU9iamVjdChleGVjLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgaW5zdGFu
Y2UpOwogICAgIH0KIAogICAgIHZpcnR1YWwgflByb3h5UnVudGltZU9iamVjdCgpOwpAQCAtNTQs
NyArNTgsNyBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgY29uc3QgSlNDOjpDbGFzc0luZm8gc19p
bmZvOwogcHJpdmF0ZToKLSAgICBQcm94eVJ1bnRpbWVPYmplY3QoSlNDOjpFeGVjU3RhdGUqLCBK
U0M6OkpTR2xvYmFsT2JqZWN0KiwgUGFzc1JlZlB0cjxQcm94eUluc3RhbmNlPik7CisgICAgUHJv
eHlSdW50aW1lT2JqZWN0KEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU0dsb2JhbE9iamVjdCosIEpT
Qzo6U3RydWN0dXJlKiwgUGFzc1JlZlB0cjxQcm94eUluc3RhbmNlPik7CiB9OwogCiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL0hvc3RlZC9Qcm94eVJ1bnRpbWVPYmpl
Y3QubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL0hvc3RlZC9Qcm94eVJ1bnRpbWVPYmpl
Y3QubW0KaW5kZXggYzEyZDVjZmY4ODYyOGZjOTc0OTA5NWMyYjMyOGI1OTUyZjM3ZTIxMy4uOGE2
NDgxZTNkNDUyY2IzZmI2ZjgxYjFlZjAzNTY5MzAxYmIzMGM0YyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9tYWMvUGx1Z2lucy9Ib3N0ZWQvUHJveHlSdW50aW1lT2JqZWN0Lm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvSG9zdGVkL1Byb3h5UnVudGltZU9iamVjdC5tbQpAQCAt
MjYsNyArMjYsNiBAQAogI2lmIFVTRShQTFVHSU5fSE9TVF9QUk9DRVNTKQogCiAjaW5jbHVkZSAi
cnVudGltZS9PYmplY3RQcm90b3R5cGUuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL0pTRE9NQmluZGlu
Zy5oPgogI2luY2x1ZGUgIlByb3h5SW5zdGFuY2UuaCIKICNpbmNsdWRlICJQcm94eVJ1bnRpbWVP
YmplY3QuaCIKIApAQCAtMzcsMTAgKzM2LDggQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNvbnN0
IENsYXNzSW5mbyBQcm94eVJ1bnRpbWVPYmplY3Q6OnNfaW5mbyA9IHsgIlByb3h5UnVudGltZU9i
amVjdCIsICZSdW50aW1lT2JqZWN0OjpzX2luZm8sIDAsIDAgfTsKIAotUHJveHlSdW50aW1lT2Jq
ZWN0OjpQcm94eVJ1bnRpbWVPYmplY3QoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBQYXNzUmVmUHRyPFByb3h5SW5zdGFuY2U+IGluc3RhbmNlKQotICAgIC8v
IEZJWE1FOiBkZXByZWNhdGVkR2V0RE9NU3RydWN0dXJlIHVzZXMgdGhlIHByb3RvdHlwZSBvZmYg
b2YgdGhlIHdyb25nIGdsb2JhbCBvYmplY3QKLSAgICAvLyBleGVjLWdsb2JhbERhdGEoKSBpcyBh
bHNvIGxpa2VseSB3cm9uZy4KLSAgICA6IFJ1bnRpbWVPYmplY3QoZXhlYywgZ2xvYmFsT2JqZWN0
LCBXZWJDb3JlOjpkZXByZWNhdGVkR2V0RE9NU3RydWN0dXJlPFByb3h5UnVudGltZU9iamVjdD4o
ZXhlYyksIGluc3RhbmNlKQorUHJveHlSdW50aW1lT2JqZWN0OjpQcm94eVJ1bnRpbWVPYmplY3Qo
RXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSwgUGFzc1JlZlB0cjxQcm94eUluc3RhbmNlPiBpbnN0YW5jZSkKKyAgICA6IFJ1
bnRpbWVPYmplY3QoZXhlYywgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIGluc3RhbmNlKQogewog
ICAgIEFTU0VSVChpbmhlcml0cygmc19pbmZvKSk7CiB9Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>